Bisakah SSL satu arah mengamankan perangkat IoT?


9

Saya sedang mempertimbangkan perangkat IoT yang terhubung ke jaringan lokal saya (pengaturan default, tidak ada VPN, tidak ada NAT, tidak ada DMZ) dengan atau tanpa akses Internet. Perangkat saya akan berjalan sebagai server HTTP yang menawarkan mekanisme RPC dengan otentikasi dan otorisasi. Ini mengiklankan dirinya dengan mDNS dan saya berbicara dengannya menggunakan aplikasi seluler saya atau RaspberryPi saya.

Tampaknya norma dalam pengembangan IoT adalah memiliki SSL timbal balik (dua arah). Apakah itu berarti SSL satu arah tidak dapat mengamankan trafik saya? Mengapa?

Catatan:

  • Saya mengerti perbedaan teknis antara SSL satu dan dua arah, saya tidak mengerti mengapa One-way (hampir) tidak pernah dipertimbangkan dalam produksi IoT.
  • Saya memahami memiliki SSL timbal balik untuk perangkat lokal sulit: Anda perlu membagikan kunci publik server dan sertifikat kepada klien dan sebaliknya. Satu arah, di sisi lain, tampaknya lebih mudah (tidak memerlukan tindakan pengguna).
  • Beberapa perangkat yang diproduksi secara massal seperti Philips Hue lebih suka memiliki titik akhir http lokal terbuka dan tidak aman daripada enkripsi SSL satu arah. Mengapa orang membuat pilihan ini?
  • Saya berharap pertanyaan ini tidak didasarkan pada opini. Mohon maaf jika ini masalahnya.

Jawaban:


8

SSL / TLS berfungsi dengan baik ketika "server" berada di lokasi yang dikenal (nama host tetap) yang dapat cocok dengan CN dari sertifikat yang dihadirkannya.

Ini tidak berfungsi dengan baik untuk perangkat di jaringan rumah (mis. Sebagian besar perangkat IoT) karena mereka cenderung mendapatkan alamat IP yang dikeluarkan dari blok RFC1918 dan tidak memiliki entri DNS. Ini berarti mereka tidak dapat dikeluarkan dengan sertifikat (baik mereka bisa tetapi kebanyakan browser akan menolaknya). Inilah sebabnya mengapa perangkat seperti Philips Hue menggunakan titik akhir HTTP tanpa jaminan dari perangkat, mereka pada dasarnya mengandalkan akses ke jaringan yang diamankan untuk melindungi perangkat.

Ketika TLS mutual digunakan untuk ketika perangkat terhubung ke beberapa layanan pusat, klien memiliki sertifikat sendiri / kunci pribadi untuk mengautentikasi bahwa ia dapat bertindak atas nama pemilik dengan server pusat itu.

Sebagai titik klarifikasi untuk pertanyaan Anda, Anda tidak perlu mendistribusikan server cert / kunci untuk semua klien, hanya sertifikat CA yang mengeluarkan sertifikat yang diperlukan untuk membuktikan bahwa sertifikat tersebut dipercaya.

EDIT:

Contoh yang baik dari koneksi perangkat lokal yang aman adalah pencahayaan Tradfri IKEA yang menggunakan COAP melalui DTLS dengan kunci yang dibagikan sebelumnya (dalam kode QR) pada perangkat yang digunakan untuk menghasilkan kunci per klien. Ini memastikan akses fisik untuk menyiapkan klien baru dan melindungi data dalam penerbangan di jaringan lokal.


Jika host tidak pada nama DNS atau alamat IP tetap maka verifikasi sertifikat normal gagal, karena cert menegaskan bahwa perangkat di alamat itu adalah siapa yang dikatakannya (SSL "satu sisi" normal). Untuk SSL yang diautentikasi bersama, Anda tidak boleh menggunakan kunci / sertifikat yang sama untuk kedua belah pihak. Server dan klien harus mencapai memiliki sertifikat / kunci mereka sendiri yang ditandatangani oleh mutualitas yang dipercaya CA
hardillb

Terima kasih atas jawabannya dan maaf atas kesunyian yang panjang @hardillb. "Ini berarti mereka tidak dapat dikeluarkan dengan sertifikat (yah mereka bisa tetapi kebanyakan browser akan menolaknya)." Mempertimbangkan komunikasi dengan perangkat IoT saya, saya tidak melihat kapan saya akan menggunakan browser untuk melakukannya ... "Anda tidak perlu mendistribusikan cert / kunci server ke semua klien, cukup sertifikat CA" Ini adalah untuk TLS satu arah, benar? Karena untuk timbal balik saya percaya Anda perlu memberikan sertifikat dan kunci, yang membuat segalanya menjadi lebih sulit. Mengenai Tradfri, kunci yang dibagikan sebelumnya adalah untuk auth, bukan enkripsi.
valentin

Tidak ada kunci pra-berbagi tradrfi adalah untuk berjabat tangan dan membuat kunci per perangkat untuk enkripsi
hardillb

1

Secara umum, TLS bagus untuk lebih dari x.509, tetapi banyak implementasi membatasi hanya x.509.

x.509 adalah teknik untuk kepercayaan tidak langsung yang aman. "A" mempercayai "B", jika "B" memiliki sertifikat, yang ditandatangani oleh "C" dan "C" dipercaya oleh "A". Itu juga bekerja dalam kehidupan nyata; Anda mempercayai seseorang yang tidak Anda kenal, jika ada surat yang ditandatangani oleh orang yang Anda percayai. Mungkin Anda melihat perangkap: jika surat itu mengatakan, tolong beri secangkir kopi Anda tidak akan memberikan mobil Anda. Oleh karena itu informasi tambahan dalam sertifikat juga relevan dengan ruang lingkup kepercayaan. Itu sebabnya server biasanya memiliki nama dns atau ip-address di sertifikatnya. Secara umum Anda dapat memasukkan informasi yang berbeda (misalnya "lampu ruang tamu"), tetapi banyak implementasi juga setidaknya sudah dikonfigurasikan sebelumnya untuk menggunakan / memeriksa hal-hal DNS / IP. Dan semua itu hanya berfungsi jika seseorang peduli dengan yang tepercaya "

Jika Anda dapat menghabiskan waktu di dalamnya, periksa implementasi Anda, jika ia menawarkan juga cipher suite PSK. Jika tidak, mungkin Anda dapat menyesuaikan "pemeriksaan validasi" sertifikat server. Tetapi perlu banyak membaca untuk menemukan solusi yang baik. Dan terkadang implementasi TLS yang digunakan tidak menawarkan itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.