امنیت 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 مراجعه کنید.