Meskipun MQTT cukup fleksibel, MQTT juga tidak aman. Ini dengan desain.
Menurut Stanford-Clark, keamanan secara sadar ditinggalkan di luar protokol pada awalnya karena ia dan Nipper tahu mekanisme keamanan dapat melilit MQTT untuk meningkatkan keamanan. Juga, pada saat itu, Stanford-Clark mengatakan informasi yang dikirim melalui MQTT, seperti data kecepatan angin dari stasiun cuaca, tidak terlalu membutuhkan pengamanan. - Sumber
Salah satu mekanisme keamanan yang dapat melilit MQTT adalah TLS. Sebagian besar broker mendukung ini saat ini. Tentu saja ukuran pembungkus menghasilkan overhead. Overhead ini mungkin dapat diabaikan (lih. HiveMQ blog ).
Saat ini saya sedang mencari informasi (semoga sumber yang resmi) tentang kehilangan kinerja MQTT dibandingkan TLS vs MQTT biasa untuk mengevaluasi kelayakan MQTT untuk proyek saya. Terutama ketika teknologi tersebut berkembang menjadi sejumlah besar pelanggan.
Apakah ada cara selain membuat prototipe untuk mendapatkan data yang valid tentang kinerja MQTT melalui TLS?
Jawaban:
Saya tidak akan berharap perbedaannya terlalu signifikan, setelah koneksi diatur .
Rincian overhead yang menghasilkan TLS secara umum dapat ditemukan di sini . Bit penting adalah:
Layak dibaca untuk melihat bagaimana angka-angka ini dihitung — Anda harus keluar dengan pemahaman yang lebih besar tentang bagaimana TLS bekerja dengan semua itu. Sebagaimana dicatat dalam jawaban lain, transmisi radio kemungkinan menjadi salah satu penggunaan energi terbesar, yang sering menjadi kendala dalam IoT, jadi setelah sesi ditetapkan, overhead tidak terlalu signifikan, terutama jika pesan Anda tidak sepele.
Seperti dicatat oleh HiveMQ dalam artikel Bagaimana TLS memengaruhi kinerja MQTT? :
Mereka juga menyediakan grafik pemanfaatan CPU pada broker ketika 50.000 klien terhubung:
Sumber Gambar: HiveMQ (lihat artikel tertaut di atas)
Perhatikan bahwa ini hampir pasti bukan pola penggunaan yang umum, tetapi datanya tetap menarik. Seperti yang Anda lihat, ada overhead besar sementara jabat tangan sedang berlangsung, tetapi setelah itu, overhead CPU hampir identik. Saya mengharapkan hal serupa pada klien.
Namun, saran umum di sini benar: tolok ukur yang dibuat tidak akan memberi Anda informasi yang Anda butuhkan; untuk mengetahui bagaimana TLS akan memengaruhi use case Anda, Anda perlu mengujinya di ... use case Anda !
sumber
Tidak juga, Anda harus menguji dan membandingkan situasi spesifik Anda. Berikut ini kemungkinan akan berdampak langsung pada kinerja.
sumber
Membuat perkiraan kinerja yang bermanfaat sulit. Kemungkinan aplikasi Anda akan memerlukan enkripsi untuk setidaknya sebagian dari lalu lintasnya, sehingga tidak ada biaya implementasi untuk membuat keamanan tersedia untuk subset lalu lintas ini.
Untuk implementasi yang dibatasi energi, transmisi cenderung nirkabel. Bahkan dengan saluran radio yang sesuai, biaya energi untuk mengatur saluran dan negosiasi koneksi kemungkinan akan lebih besar daripada biaya pemrosesan untuk mengenkripsi pesan sederhana - terutama jika beberapa pesan memerlukan enkripsi.
Jika pesan Anda tidak sepele, mungkin ada beberapa pembenaran dalam melakukan lebih banyak pemrosesan di titik akhir untuk mengurangi lalu lintas jaringan.
Akhirnya, dalam skenario di mana saluran sangat dimuat, kinerja mungkin tidak sebagus yang Anda perkirakan dari menganalisis implementasi yang lebih sepele dari sistem lengkap Anda.
Bahkan jika Anda dapat menemukan referensi untuk data yang Anda cari, sepertinya tidak cukup untuk menjawab pertanyaan yang cukup untuk dijadikan dasar keputusan desain.
sumber