14.4.1. Konsep: kepercayaan, kunci, dan format file

Sebelum perintah apa pun, tiga latar belakang yang berlaku untuk setiap halaman lain di bagian ini.

14.4.1.1. Model kepercayaan

Koneksi TLS dapat memberikan tiga tingkat jaminan yang meningkat:

  • Enkripsi saja -- lalu lintas dienkripsi tetapi tidak ada pihak yang membuktikan identitasnya. Mudah disiapkan (tanpa validasi sertifikat) tetapi rentan terhadap serangan man-in-the-middle. Gunakan hanya untuk pengujian lokal.

  • Autentikasi server -- klien memverifikasi sertifikat server terhadap sertifikat tepercaya (model HTTPS yang familiar). OpenMV Cam dapat bertindak sebagai klien (memverifikasi server jarak jauh) atau sebagai server (menyajikan sertifikatnya sendiri).

  • Autentikasi mutual (mTLS) -- kedua ujung menyajikan dan memverifikasi sertifikat. Digunakan ketika server juga harus yakin tentang identitas klien.

14.4.1.2. Memilih jenis kunci

Build mbedTLS kamera mendukung ECDSA pada kurva prima NIST/SEC dan RSA. Ada tiga cara praktis untuk membuat kunci; ECDSA P-256 (prime256v1) direkomendasikan:

  • ECDSA P-256 (prime256v1) -- sekitar keamanan 128-bit dengan kunci 256-bit. Kunci dan tanda tangan kecil, dan sejauh ini handshake tercepat dari opsi yang didukung pada Cortex-M (operasi kurva eliptis jauh lebih murah daripada operasi kunci privat RSA). Didukung secara universal oleh peer TLS. Ini adalah keseimbangan terbaik antara keamanan, kecepatan, penggunaan RAM/flash, dan kompatibilitas pada perangkat tertanam, itulah mengapa ini adalah pilihan default di sini.

  • ECDSA P-384 (secp384r1) -- sekitar keamanan 192-bit. Masih berbasis kurva eliptis, sehingga cukup efisien, tetapi lebih besar dan lebih lambat dari P-256 untuk margin keamanan yang tidak dibutuhkan oleh sebagian besar deployment IoT. Gunakan hanya jika sertifikat berumur panjang atau persyaratan kepatuhan memerlukannya.

  • RSA-2048 -- sekitar keamanan 112-bit. Kompatibel secara universal, termasuk dengan peer yang sangat lama, tetapi kunci RSA dan sertifikat jauh lebih besar dan operasi kunci privat RSA (dilakukan oleh sisi yang menyajikan sertifikat) adalah opsi yang paling lambat dan paling boros memori pada mikrokontroler. Gunakan hanya ketika peer tidak dapat melakukan ECDSA.

Catatan

Kunci Ed25519 / Curve25519 tidak didukung. Build mbedTLS OpenMV Cam tidak mengaktifkan EdDSA atau Curve25519, sehingga sertifikat atau kunci Ed25519 akan gagal dimuat atau di-handshake. Gunakan salah satu dari tiga opsi di atas.

14.4.1.3. Format file: gunakan DER

Build mbedTLS yang digunakan oleh OpenMV Cam tidak menyertakan pengurai PEM, sehingga kamera membaca sertifikat dan kunci hanya dalam bentuk DER (enkoding biner). Sebagian besar alat menghasilkan bentuk PEM (teks base64) secara default, sehingga setiap file yang menuju kamera dikonversi ke DER terlebih dahulu -- setiap resep di bagian ini diakhiri dengan langkah konversi tersebut. Anda akan memerlukan:

  • Kunci privat -- dijaga kerahasiaannya, digunakan oleh pihak mana pun yang menyajikan sertifikat.

  • Sertifikat -- bagian publik, disajikan ke pihak lain selama handshake.

  • Sertifikat CA / kepercayaan -- sertifikat yang dimuat oleh sisi verifikasi untuk memutuskan apakah peer dapat dipercaya. Untuk pengaturan self-signed, ini hanyalah sertifikat peer itu sendiri.