
امنیت در اینترنت اشیا: TLS، بهروزرسانی OTA و مدیریت کلید روی ESP32
چرا MQTT بدون TLS قابل دستکاری است؛ راهاندازی HTTPS، تثبیت گواهی، بهروزرسانی OTA امضاشده و قابلیتهای Secure Boot.
تهدید واقعی چیست؟
ارتباط MQTT یا HTTP بدون رمزنگری یعنی هر کسی در مسیر میتواند داده را ببیند، تغییر دهد یا فرمان جعلی بفرستد. دستگاه بدون بررسی امضای فریمور هم در برابر فیریمور دستکاری شده آسیبپذیر است.
۱) HTTPS با گواهی CA
WiFiClientSecure net;
net.setCACert(ca_cert); // گواهی ریشه سرور
HTTPClient http;
http.begin(net, "https://api.example.com/status");
int code = http.GET();۲) MQTT روی TLS
بروکر را روی پورت 8883 و با گواهی سرور راهاندازی کنید؛ سپس در کد، CA certificate را ست کرده و کلاینت را با نامکاربری و رمز متصل کنید. از حالت setInsecure() فقط برای دیباگ استفاده کنید.
۳) بهروزرسانی OTA امضاشده
- فیریمور را در ESP-IDF با Secure Boot v2 و Flash Encryption فلش کنید.
- از
esp_https_otaبرای دریافت و راستیآزمایی امضای بسته جدید استفاده کنید. - بسته جدید ابتدا در پارتیشن غیرفعال نوشته و در صورت موفقیت کلید سوئیچ عوض شود (Rollback فعال).
۴) نگهداری کلیدها
- کلیدها و توکنها را در NVS با قابلیت رمزگذاری ذخیره کنید، نه بهصورت متن ساده در کد.
- برای هر دستگاه یک شناسه و کلید اختصاصی بسازید تا لو رفتن یک دستگاه، بقیه را هم از کار نیندازد.
تمرین
یک نود ESP32 بسازید که داده دما را با MQTT over TLS منتشر کند و سپس از راه دور و با یک بسته امضاشده بهروزرسانی شود.

میثم پورجعفری
مهندس برق - الکترونیک
مهندس برق - الکترونیک؛ طراح و مجری پروژههای میکروکنترلری، برد الکترونیکی و سیستمهای کنترل صنعتی. در U97 تجربههای عملی، آموزشهای کاربردی و ابزارهای مهندسی را در اختیار…
درباره نویسنده