IOT SECURITY
Arsitektur Aman ESP32 ke Server melalui HTTPS dan API Key
Cara memisahkan identitas perangkat, autentikasi API, validasi payload, realtime, logging, dan kontrol agar sistem IoT lebih aman dan mudah dikelola.
Model ancaman sederhana
Perangkat IoT yang terhubung ke domain publik dapat menerima gangguan berupa API key bocor, request palsu, payload terlalu besar, replay, brute force, atau pengiriman data berlebihan. Pengamanan dimulai dengan membatasi permukaan akses dan memisahkan kredensial setiap perangkat.
Identitas per perangkat
Setiap ESP32 sebaiknya mempunyai device code dan API key acak yang berbeda. Server menyimpan hash untuk verifikasi dan, bila dibutuhkan generator firmware, menyimpan bentuk terenkripsi secara terbatas. Ketika satu perangkat hilang atau firmware tersebar, key perangkat itu dapat diganti tanpa memutus semua proyek.
HTTPS dan validasi
HTTPS melindungi data saat transit dan membantu perangkat memastikan sedang berkomunikasi dengan server yang benar. Namun HTTPS tidak menggantikan validasi input. Server tetap harus membatasi ukuran body, jumlah field, format nama parameter, rentang nilai, dan frekuensi request.
Realtime tidak sama dengan logging
Nilai untuk tampilan realtime dapat menggantikan nilai sebelumnya pada tabel latest data. Riwayat hanya dibuat pada interval logging atau saat peristiwa penting seperti tombol SIMPAN. Pola ini mengurangi pertumbuhan database dan tetap membuat dashboard terasa realtime.
Kontrol dari web
Perintah sebaiknya dibuat sebagai antrean dengan status pending, delivered, acknowledged, failed, atau expired. ESP32 mengambil perintah menggunakan autentikasi perangkat. Dengan demikian, dashboard tidak perlu membuka port langsung ke ESP32 di jaringan pengguna.
Checklist
- Hanya port 80/443 yang terbuka publik.
- API key berbeda untuk setiap perangkat.
- Password pengguna di-hash.
- Payload dibatasi dan divalidasi.
- Endpoint admin memakai sesi dan CSRF.
- Log aktivitas penting disimpan.
- Kredensial tidak dimasukkan ke repository publik.