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.

Diterbitkan 30 Jul 2026Diperbarui 30 Jul 2026admin

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.

Referensi dan bacaan lanjutan

  1. OWASP API Security Top 10
  2. Espressif TLS Documentation