پرش به مطلب اصلی

امنیت Gateway و AES

Principal امنیتی

Physical Gateway تنها MQTT/AES Principal دائمی است. Child پشت Gateway encryptionKey یا MQTT Credential مستقل دریافت نمی‌کند.

AES v1

Gateway Cloud از همان AirNgin AES v1 استفاده می‌کند:

  • AES-256-GCM
  • کلید Base64 که به 32 byte Decode می‌شود
  • Nonce تصادفی 12 byte و غیرقابل‌تکرار با همان Key
  • version = "1.0"
  • Timestamp بر حسب Unix UTC seconds
  • پنجره پذیرش Timestamp: ±60 ثانیه
  • Replay nonce cache حداقل به‌اندازه پنجره پذیرش

Envelope:

{
"nonce": "<base64>",
"ciphertext": "<base64>",
"tag": "<base64>",
"version": "1.0",
"timestamp": 1813000001,
"deviceSerial": "AIRN1234567890",
"more": null
}

در Gateway traffic، deviceSerial داخل Envelope همیشه Physical Gateway است، حتی اگر Business Payload درباره Child باشد.

ترتیب Validate

parse envelope
→ required fields/version
→ timestamp window
→ replay nonce check
→ Base64 decode
→ AES-GCM authenticate/decrypt
→ record nonce
→ parse plaintext JSON
→ validate business/topic contract
→ dispatch

پیام Invalid باید Drop شود و نباید باعث Reboot، State mutation یا Credential deletion شود.

Credential isolation

هرگز داخل HTML یا Log منتشر نکنید:

  • Gateway encryptionKey
  • MQTT Password
  • API Access Token
  • HTML Temporary Password
  • Local API raw token

HTML exception

HTML Live Topicها از Gateway encryptionKey استفاده نمی‌کنند. امنیت آن‌ها:

WSS/TLS + temporary MQTT credential + session-scoped broker ACL

برای جزئیات به HTML Live MQTT مراجعه کنید.