انتقل إلى المحتوى الرئيسي

بروتوكول التصديق

يوفر بروتوكول التصديق AuroraSOC التحقق من سلامة البرامج الثابتة من طرف إلى طرف لجميع أجهزة CPS/IoT. يصف هذا المستند البروتوكول عبر الأنظمة الأساسية الذي تم تنفيذه عبر ثلاث مجموعات من البرامج الثابتة وتم التحقق منه بواسطة المحرك الأساسي Rust.

نظرة عامة على البروتوكول

تنسيق الرسالة

حمولة التصديق (الجهاز → الوسيط)

{
"device_id": "stm32_pac_01",
"firmware_hash": "a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0",
"boot_count": 42,
"signature_hex": "304402201a2b3c4d...f0e1d2c3",
"nonce": "abc123def456",
"board_family": "stm32",
"firmware_stack": "ada_spark",
"firmware_version": "2.0.0"
}

بناء الرسالة الموقعة

الرسالة الموقعة عبارة عن سلسلة بسيطة (بدون محددات):

message = device_id + firmware_hash + boot_count + nonce

مثال:

stm32_pac_01a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f042abc123def456

يتم بعد ذلك تجزئة هذه الرسالة إلى SHA-256 وتوقيعها باستخدام ECDSA P-256.

التنفيذ لكل منصة

STM32 (آدا/سبارك)

Hardware: PKA (Public Key Accelerator) + HASH peripheral
Key: Stored in OTP (One-Time Programmable) area
Transport: Ethernet → MQTT (TLS 1.3, mTLS)
Interval: Every main loop iteration (5s)
Extras: SPARK-proven relay safety interlock

nRF52840 (سفارة Rust)

Hardware: CryptoCell CC310
Key: Stored in UICR (User Information Configuration Registers)
Transport: BLE → MQTT-SN → ESP32-S3 gateway → MQTT broker
Interval: 5 minutes
Extras: USB honeypot alerts

ESP32-S3 (زفير سي)

Hardware: Software ECDSA (no hardware crypto accelerator)
Key: Stored in NVS (Non-Volatile Storage) partition
Transport: WiFi → MQTT (TLS)
Interval: 5 minutes
Extras: Edge AI anomaly detection

إدارة المفاتيح

تكوين Vault PKI

# Device certificate role
vault write pki/roles/aurorasoc-devices \
key_type=ec \
key_bits=256 \
allow_any_name=true \
enforce_hostnames=false \
max_ttl=8760h \ # 1 year
client_flag=true \
server_flag=false

خصائص الأمن

ما يثبت الشهادة

ملكيةكيف
أصالة البرامج الثابتةيتطابق تجزئة SHA-256 مع الثنائي المعروف جيدًا
هوية الجهازيمكن التحقق من توقيع ECDSA فقط باستخدام مفتاح الجهاز
** نضارة **عدد التمهيد الرتيب يمنع إعادة التشغيل
الحيويةتثبت الشهادة المنتظمة أن الجهاز قيد التشغيل

ما لا يثبت الشهادة

القيدالتخفيف
سلامة الذاكرة في وقت التشغيلغير مغطى (سيحتاج إلى TrustZone/SGX)
استخراج المفتاح المادييتم كتابة صمامات OTP/UICR لمرة واحدة
هجمات القنوات الجانبيةCC310 لديه تدابير مضادة
تسوية سلسلة التوريدخارج النطاق (عملية منفصلة)

عدد التمهيد مكافحة إعادة التشغيل

يتم تخزين عدد التمهيد في صمامات الأجهزة التي يمكن أن تزيد فقط:

  • STM32: منطقة OTP (بتات قابلة للبرمجة لمرة واحدة)
  • nRF52840: سجلات UICR (قابلة للمسح فقط من خلال المسح الكامل للرقاقة)
  • ESP32-S3: eFuse (قابل للبرمجة لمرة واحدة)

معالجة الفشل

فشلاستجابة النظام
عدم تطابق التوقيعتنبيه: severity=critical، تم وضع علامة على الجهاز failed
انحدار عدد التمهيدتنبيه: severity=critical، هجوم إعادة تحميل ملفات محتمل
انتهت صلاحية الشهادةتم وضع علامة على الجهاز expired، ويلزم تجديد الشهادة
لا توجد استجابة (> 10 دقائق)يتم تشغيل تنبيه الجهاز الذي يحمل العلامة offline، Prometheus
تمريرة هيكلية فقطتم قبول الجهاز بثقة أقل، وتم وضع علامة عليه لتسجيل المفتاح

إلغاء الشهادة

عندما يتم اختراق الجهاز، يمكن إلغاء شهادته عبر API:

# Revoke device certificate
curl -X POST http://localhost:8000/api/v1/cps/devices/stm32_pac_01/revoke \
-H "Authorization: Bearer $TOKEN" \
-d '{"reason": "Compromised - tamper detected"}'

يؤدي هذا إلى:

  1. تم إبطال الشهادة في Vault CRL
  2. تم ضبط الجهاز attestation_status على revoked
  3. يفتح مرحل STM32 على الفور (قفل أمان مثبت بواسطة SPARK)
  4. تم إنشاء تنبيه لمحللي SOC
  5. يقوم اتحاد NATS بإعلام المواقع الأخرى

يراقب

تراقب قواعد التنبيه Prometheus صحة التصديق:

- alert: CPSAttestationFailureRate
expr: rate(aurora_attestation_failures_total[5m]) / rate(aurora_attestation_total[5m]) > 0.1
for: 5m
labels:
severity: critical
annotations:
summary: "CPS attestation failure rate exceeds 10%"

- alert: CPSDeviceOffline
expr: time() - aurora_device_last_seen_timestamp > 300
for: 5m
labels:
severity: warning
annotations:
summary: "CPS device hasn't reported in 5+ minutes"