Fakultas Ilmu Komputer
6447
Implementasi Algoritme Lizard untuk Pengamanan Protokol MQTT pada
Perangkat NodeMCU
Rizal Dismantoro1, Ari Kusyanti2, Mahendra Data3
Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Brawijaya Email: 1[email protected], 2
[email protected],
3[email protected]
Abstrak
Protokol MQTT (Message Queuing Telemetry Transport) adalah salah satu protokol dari Internet of Things (IoT) yang memiliki dasar mekanisme sistem topic-based publish-subscribed yang memiliki sifat yang cocok untuk diimplementasikan pada perangkat yang memiliki keterbatasan resource, dikarenakan memiliki sifat light-weight. Meskipun MQTT menjadi salah satu protokol yang sering digunakan pada
IoT terdapat beberapa kelemahan pada bagian keamanan. Untuk memastikan data tidak dapat diketahui makna yang sebenarnya maka diperlukan algoritme keamanan untuk mengenkripsi data. Salah satu algoritma keamanan untuk mengenkripsi data adalah algoritme Lightweight Stream Cipher for Power-constrained Devices (Lizard). Pada bagian publisher sebelum pesan dikirim akan dienkripsi terlebih dahulu sehinga pada saat proses pengiriman data yang dikirimkan berupa ciphertext yang tidak dapat dibaca dengan mudah. Pada bagian subscriber akan dilakukan proses dekprisi pesan yang diterima dari
broker sehingga pesan yang diterima dapat dibaca sebagaimana pesan asli yang dikirimkan. Berdasarkan hasil pengujian, algoritme Lizard yang diimplementasikan pada protokol MQTT berhasil mengamankan sistem berbasis protokol MQTT menggunakan perangkat NodeMCU dengan waktu 1014419
microsecond. Proses enkripsi dilakukan pada saat data akan dikirimkan dan melakukan proses dekripsi pada saat data diterima dari broker.
Kata kunci: Kriptografi, MQTT, Algoritme Lizard, Confidentiality,IoT , NodeMCU
Abstract
The Message Queuing Telemetry Protocol (MQTT) protocol is one of the IoT protocol which has a mechanism based on topic-based publish-subscribed systems that have properties that are suitable to be implemented on devices that have limited resources. This is due to it has light-weight properties. MQTT is one of the protocols that is often used on IoT, but there are several weaknesses in the security issues. To ensure the data security an algorithm is needed to encrypt data. One of security algorithm for encrypting data is the Lightweight Stream Cipher for Power-constrained Devices (Lizard) algorithm. In the publisher section before the message is sent it will be encrypted (ciphertext). In broker the ciphertext will forward to the subscriber. In the subscriber, the message will be decrypted. Based on the test results, the Lizard algorithm implemented in the MQTT protocol successfully secure a system on NodeMCU device that take 1014419 microsecond.
Keywords: Cryptography, MQTT, Lizard Algorithm, Confidentiality, IoT, NodeMCU
1. PENDAHULUAN
Internet of Things atau dikenal juga dengan singkatan IoT, merupakan sebuah konsep yang bertujuan untuk memperluas manfaat dari konektivitas internet yang tersambung secara terus-menerus. Adapun kemampuan seperti berbagi data, remote control, dan sebagainya, termasuk juga pada benda di dunia nyata. Contoh pada kehidupan nyata berupa bahan pangan,
elektronik, koleksi, peralatan apa saja, termasuk benda hidup yang semuanya tersambung ke jaringan lokal dan global melalui sensor yang tertanam dan selalu aktif (Yudhanto, 2007). Dengan banyaknya penerapan IoT pada berbagai bidang menyebabkan pengembangan IoT
menggunakan publisher/subscriber. Pengirim data pada protokol ini disebut dengan publisher. Sedangkan penerima data disebut dengan subscriber. Protokol MQTT ini sering digunakan karena sangat cocok untuk diimplementasikan dalam IoT
dikarenakan bersifat lightweight, open, simple, dan bisa diimplementasikan di situasi yang terbatas dalam sumber daya (Rochman, Primananda and Nurwasito, 2017). Terlepas dari kelebihan dari MQTT
namun ada beberapa kekurangan, seperti proses pengamanan data masih sangat minim.
Dalam proses pengiriman data pada IoT
masih sangat rentan terhadap serangan. Dalam penelitian sebelumnya yang berjudul
“Sistem Kendali Berbasis Mikrokontroler
Menggunakan Protokol MQTT pada
Smarthome” (Rochman, Primananda and
Nurwasito, 2017) melakukan sebuah penerapan IoT untuk controlling dan monitoring pada suatu tempat. Metode yang digunakan menggunakan protokol MQTT yang memiliki sifat publish/subscribe. Namun terdapat sebuah kelemahan dalam protokol MQTT dimana tidak terdapat pengamanan dalam protokol tersebut. Salah satu kelemahan dari protokol MQTT ini adalah pada saat terjadi proses pengiriman data, akan sangat rentan terhadap penyadapan atau pencurian data pada saat proses pengiriman data. Untuk lebih memperkuat kerahasiaan (confidentiality)
data pada proses komunikasi maka harus ditambahkan algoritme kriptografi untuk mengenkripsi data yang akan dikirim. Algoritme kriptografi ini bekerja pada layer aplikasi sehingga sebelum data dikirim akan terlebih dahulu dienkripsi. Sehingga meskipun ada penyerang yang dapat mencuri pesan pada saat terjadi komunikasi, penyerang tidak dapat mengetahui isi dari pesan yang dikirimkan dikarenakan sudah dienkripsi sebelumnya (Rochman, Primananda and Nurwasito, 2017).
Teknik kriptografi adalah salah satu cara atau seni untuk mengamankan (enkripsi) pesan. Salah satu algoritme kriptografi adalah algortime Lizard. Algoritme LIZARD pertama kali dikembangkan pada tahun 2017. LIZARD merupakan algoritme
stream chiper yang di desain untuk sumber daya yang terbatas. LIZARD menggunakan panjang key 120-bit dan iv 64-bit dalam state
initialization. LIZARD dapat membuat keystream hingga 218 bits per key/IV (Hamann, Krause and Meier, 2017).
Penelitian ini berfokus pada bagaimana implementasi algoritme Lizard pada sisi keamanan data berbasis protokol MQTT yang diimplementasikan pada perangkat mikrokontroller NodeMCU.
2. LANDASAN KEPUSTAKAAN
2.1. Kajian Pustaka
Pada penelitian sebelumnya yang memiliki
judul “LIZARD – A Lightweight Stream Cipher for Power-constrained Devices” di buat oleh Matthias Hamann, Matthias Krause dan Willi Meier akan menjadi referensi utama untuk proses implementasi dan penelitian dalam algoritme Lizard. Jurnal tersebut memuat bagaimana proses dari pembentukan keystream
dan latar belakang kenapa algoritme Lizard ini dibuat. Penelitian sebelumnya algoritme Lizard ini berhasil diimplementasikan pada perangkat
RFID. Pada pengujiannya, ternyata algoritme Lizard ini tercatat menggunakan resource dari perangkat keras lebih kecil 16% jika dibandingkan dengan algoritme Grain v1 .
2.2 Kriptografi
Kriptografi merupakan sebuah cara atau seni untuk mengamankan (enkripsi) pesan (Ariyus, 2008). Dalam metode kriptografi terdapat dua proses utama, yaitu enkripsi dan dekripsi. Proses
enkripsi adalah sebuah proses untuk membuat
plaintext yaitu data asli yang akan dirubah menjadi ciphertext yang tidak dapat dimengerti lagi artinya. Sebaliknya, dekripsi adalah sebuah proses yang merubah ciphertext menjadi
plaintext yang dapat memberi arti asli dari pesan. Berdasarkan jenis kunci terdapat dua jenis yakni simetri dan asimetri.
Gambar 1. Alur Kriptografi Sumber : (Ariyus, 2008)
Tipe kunci simetri menggunakan kunci yang sama pada proses enkripsi dan dekripsi.
Dikarenakan menggunakan kunci yang sama maka sifat dari kunci ini adalah sangat rahasia tidak boleh ada yang tahu. Dalam kunci simetri memiliki terdapat dua jenis, yaitu stream cipher
karakteristik untuk proses enkripsi dan dekripsi
yakni menggunakan proses operasi per bit setiap transformasi (Nurrohmah, Kusyanti and Primananda, 2018). Salah satu algoritme yang menggunakan metode stream cipher adalah Lizard. Block cipher sendiri memiliki sebuah ciri dimana untuk proses enkripsi dan dekripsi yang akan membagi plaintext menjadi beberapa bagian blok lalu akan dilakukan proses enkripsi
dan dekripsi. Salah satu contoh algoritme yang menggunakan metode block cipher adalah AES. Tipe kunci asimetri adalah menggunakan kunci yang berbeda pada proses enkripsi dan dekripsi. Metode menggunakan tipe asimetri juga seeing disebut dengan public key cryptography dimana proses enkrispi dan
dekripsi menggunakan kunci yang berbeda.
2.3 Algoritme Lizard
Algoritme Lizard merupakan sebuah algoritma kriptografi ayng memiliki sifat stream cipher yang dirancang dengan konsep yang memiliki kecepatan tinggi, menggunakan konsumsi memori dan daya yang rendah (Hamann, Krause and Meier, 2017).
Gambar 2 Diagram LIZARD
Algoritme ini menggunakan 120-bit untuk
keydan 64-bit untuk IV. Lizard dibentuk menggunakan 2 NSFR (Non-linear Feedback Shift Register) dan diberi nama NSFR1 dan NSFR2 yang memiliki ukuran masing-masing
31 node dan 90 node. Untuk proses pembuatan
keystream terdapat beberapa tahapan yakni dimulai dari initialization state. Tahap pertama adalah Output function memiliki symbol α pada Gambar 3. Persamaan 1 merupakan rumus
Output function yang akan membentuk 1 bit
keystream.
𝑍t= 𝐿t⊕ Qt⊕ Tt⊕ Ťt
(1)
di mana:
𝐿t= 𝐵7𝑡⊕ 𝐵11𝑡 ⊕ 𝐵30𝑡 ⊕ 𝐵40𝑡 ⊕ 𝐵45𝑡 ⊕ 𝐵54𝑡 ⊕
𝐵71𝑡 (2) Qt= B4tB21t ⊕ B9tB52t ⊕ B18t B37t ⊕ B44t B76t (3)
Tt= B5t ⊕ B8tB82t ⊕ B34t B67t B73t ⊕
B2tB28t B41t B65t ⊕ B13t B29t B50t B64t B75t ⊕
B6tB14t B26t B32t B47t B61t ⊕
B1tB19t B27t B43t B57t B66t B78t (4) Ťt= S23t ⊕ S3tS16t ⊕ S9tS13t S48t ⊕
S1tS24t S38t S63t (5)
Gambar 3. Pembentukan Keystream Sumber : (Hamann, Krause and Meier, 2017)
Proses initialization state pada algoritme Lizard ini terbagi menjadi empat tahapan, yaitu tahap key and IV loading, grain-like mixing,
second key addition, dan final diffusion. Tahap
key and IV loading merupakan tahapan pertama, yaitu mengisikan 120 bit kunci dan 64 bit IV ke dalam NFSR1 seperti Persamaan 6 dan NFSR2 seperti Persamaan 7.
𝐵𝑗= {𝐾𝐾j⊕ IVj, untuk j ∈ {0, … ,63}
j, untuk j ∈ {64, … ,89} (6)
𝑆𝑖= {
𝐾𝑖+ 90, 𝑢𝑛𝑡𝑢𝑘 𝑖 ∈ {0, … ,28}
𝐾119 ⊕ 1, 𝑢𝑛𝑡𝑢𝑘 𝑖 = 29
1, 𝑢𝑛𝑡𝑢𝑘 𝑖 = 30
(7)
Tahapan grain-like mixing, node akan dilakukan pergeseran sebanyak 128 kali tanpa ada proses pembentukan keystream yang sesungguhnya. Pada Gambar 3, Zt akan dimaskuna kembali ke dalam NFSR sesuai dengan Persamaan 8 dan 9. Persamaan 10 dan 11 adalah fungsi pergeseran dilambangkan
dengan ƒ1dan ƒ2 pada Gambar 4. t ∈ {0,....,127}.
𝐵89𝑡+1= 𝑍𝑡⊕ 𝑆0𝑡⊕ Bt0⊕ B24t ⊕ B49t ⊕ B79t ⊕
B84t ⊕ B3tB59t ⊕ B10t B12t ⊕ B15t B16t ⊕
B60t B74t ⊕ B20t B22t B23t ⊕ B62t B68t B72t ⊕
B77t B80t B81t B83t (8) 𝑆30𝑡+1= 𝑍𝑡⊕ S0t⊕ St2⊕ S5t ⊕ S6t⊕ S15t ⊕
S17t ⊕ S18t ⊕ S20t ⊕ S25t ⊕ S8tS18t ⊕
S8tS20t ⊕ S12t S21t ⊕ S14t S19t ⊕ S17t S21t ⊕
S20t S22t ⊕ S4tS12t S22t ⊕ S4tS19t S22t ⊕
S7tS20t S21t ⊕ S8tS18t S22t ⊕ S8tS20t S22t ⊕
S12t S19t S22t ⊕ S20t S21t S22t ⊕
S4tS7tS12t S21t ⊕ S4tS7tS19t S21t ⊕
S4tS12t S21t S22t ⊕ S4tS19t S21t S22t ⊕
S7tS8tS18t S21t ⊕ S7tS8tS20t S21t ⊕
S7tS12t S19t S21t ⊕ S8tS18t S21t S22t ⊕
S8tS20t S21t St22⊕ S12t S19t S21t (9) 𝐵𝑗𝑡+1= 𝐵𝑗+1𝑡 , untuk j ∈ {0, … ,88} (10) 𝑆𝑖𝑡+1= 𝑆𝑖+1𝑡 , untuk i ∈ {0, … ,29} (11)
Gambar 4. Initialization State
Sumber : (Hamann, Krause and Meier, 2017) Persamaan 12 dan 13 adalah tahap second key addition, dimana akan ditambahkan 120 bit
key ke dalam NFSR1 dan NFSR2. 120 bit kunci tersebut adalah key yang sama seperti pada fase
key and IV loading.
𝐵𝑗129= 𝐵𝑗128⊕ K𝑗, untuk j ∈ {0, … ,89} (12)
𝑆𝑖129= {Si128⊕ Ki+90, untuk i ∈ {0, … ,29}
1, untuk i = 30(13)
Tahapan final diffusion memiliki proses yang mirip dengan tahp grain-like mixing, yaitu
cipher akan digeser sebanyak 128 kali. Namun perbedaannya terletak dimana tidak ada pembentukan Zt pada tahap ini seperti pada Persamaan 14 dan 15. Persamaan 16 dan 17 adalah fugsi pergeseran diberi lambang ƒ1 dan
ƒ2 pada Gambar 5. t ∈ {129,....,256}.
𝐵89𝑡+1= 𝑆0𝑡⊕ B0t ⊕ B24t ⊕ B49t ⊕ B79t ⊕
B84t ⊕ B3tB59t ⊕ B10t B12t ⊕ B15t B16t ⊕
B25t B53t ⊕ B35t B42t ⊕ B55t B58t ⊕
B60t B74t ⊕ B20t B22t B23t ⊕ B62t B68t B72t ⊕
B77t B80t B81t B83t (14) 𝑆30𝑡+1= S0t ⊕ S2t⊕ S5t⊕ S6t⊕ S15t ⊕
S17t ⊕ S18t ⊕ S20t ⊕ S25t ⊕ S8tS18t ⊕
S8tS20t ⊕ S12t S21t ⊕ S14t S19t ⊕ S17t S21t ⊕
S20t S22t ⊕ S4tS12t S22t ⊕ S4tS19t S22t ⊕
S7tS20t S21t ⊕ S8tS18t S22t ⊕ S8tS20t S22t ⊕
S12t S19t S22t ⊕ S20t S21t S22t ⊕
S4tS7tS12t S21t ⊕ S4tS7tS19t S21t ⊕
S4tS12t S21t S22t ⊕ S4tS19t S21t S22t ⊕
S7tS8tS18t S21t ⊕ S7tS8tS20t S21t ⊕
S7tS12t S19t S21t ⊕ S8tS18t S21t S22t ⊕
S8tS20t S21t S22t ⊕ S12t S19t S21t (15) 𝐵𝑗𝑡+1= 𝐵𝑗+1𝑡 , untuk j ∈ {0, … ,88} (16) 𝑆𝑖𝑡+1= 𝑆𝑖+1𝑡 , untuk i ∈ {0, … ,29} (17)
Gambar 5. Final Diffusion
Sumber : (Hamann, Krause and Meier, 2017) Ketika initialization state telah selesai, diperoleh state NFSR1 (S²⁵⁷) dan NFSR2 (B²⁵⁷) dimana pada state ini akan dimulai untuk proses pembentukan keystream yang sebenarnya. Pembentukan keystream akan dijalankan dengan persamaan 14 dan 15. Z₂₅₇ adalah bit awal untuk kumpulan keystream
yang sesungguhnya.
2.4 MQTT
Message Queuing Telemetry Transport (MQTT) merupakan protokol pada layer transport yang memiliki sifat client-server publish/subscribe. Protokol ini bersifat
lightweight, open dan sederhana, dirancang agar memudahkan user untuk proses implementasi. Karakteristik ini membuat MQTT berhasil diimplementasikan di banyak situasi, termasuk penggunaannya dalam komunikasi antara mesin ke mesin dan Internet of Things (IoT). Protokol MQTT berjalan pada TCP/IP. Protokol MQTT tidak dapat berjalan sendiri untuk berkomunikasi, namun membutuhkan jembatan untuk berkoomunikasi. Hal ini membuat protokol MQTT menggunakan TCP/IP pada layer transport. TCP/IP akan dengan mudah untuk digunakan pada MQTT. Jaringan yang bersifat connectionless seperti User Datragram Protokol (UDP) tidak dapat digunakan karena dapat berakibat reorder data (Satria, Satrya and Herutomo, 2014).
2.5 NodeMCU
Gambar 6. NodeMCU
3. PERANCANGAN DAN
IMPLEMENTASI SISTEM
3.1 Perancangan Sistem
Perangkat keras yang diperlukan pada
pengimplementasian penelitian kali ini dapat
dilihat pada Tabel 1.
Tabel 1. Kebutuhan Perangkat Keras
Perangkat Keras Keterangan NodeMCU 1.0
(ESP-12E Module)
Merupakan perangkat
Mikrokontroller yang digunakan sebagai Publisher
ASUS X450JF Core i7
Perangkat laptop ini bertindak sebagai client yang berperan sebagai ubcriber
Wi-Fi Router Wi-Fi router diperlukan untuk memberikan akses jaringan internet pada Asus X450JF dan NodeMCU
Gambar 7. Gambaran Umum Sistem
Gambar 7 menjelaskan tentang gambaran
umum sistem yang akan dibangun.
Sistem ini pada akhirnya akan mengenkripsi data mengubah plaintext yang dimasukkan secara manual menjadi ciphertext dengan mengolahkeystream yang didapatkan dari algoritme LIZARD lalu dikirimkan melalui Arduino yang bertindak sebagai publisher menuju broker. Setelah itu broker akan meneruskan ciphertext
yang dikirim dari publisher ke subscriber sesuai dengan topik yang sama dari publisher dan
subscriber. Ketika ciphertext diterima oleh
subscriber, ciphertext akan didekripsi
menggunakan keystream yang sama yang digunakan untuk mendekripsi pada sisi publisher
sehingga ciphertext yang dikirimkan dapat dibaca kembali.
Gambar 8 menjelaskan bahwa pada sistem akan dimulai dengan mengoneksikan antara
publisher (client) dan subscriber (client) ke
broker (server). Kemudian setelah keduanya berhasil terhubung dengan broker maka
susbcriber akan melakukan request payload
kepada broker sesuai dengan topik yang sesuai. Lalu publisher diinput sebuah nilai yang akan dikirim sebelum dikirim nilai payload tersebut terlebih dahulu di enkripsi yang akan diproses dengan nilai dari keystream yang dibentuk oleh algoritme Lizard. Ketika proses enkripsi selesai maka publisher akan mengirimkan pesan yang berisi ciphertext ke broker. Pada paket mqtt-publish, memiliki bermacam-macam header, seperti dup, qos, retain, dan payload. Pada sistem kali ini, sistem hanya mengenkripsi
payload yang di dalamnya terdapat plaintext
yang akan dikirimkan oleh publisher ke
subscriber. Ketika pesan telah sampai di broker, maka broker akan mengirimkan payload atau pesan dengan topic yang sesuai dengan
subscriber. Ketika pesan telah sampai pada
subscriber, pesan yang diterima lalu akan didekripsi terlebih dahulu sebelum pada akhirnya akan ditamplikan oleh sistem.
3.2 Implementasi
Pada proses implementasi terdapat 2 bagian penting untuk membangun sistem ini, perangkat keras terebut antara lain mikrokontroller NodeMCU dan Laptop yang bertindak sebagai
client subscriber.
Gambar 9 Implementasi NodeMCU
Perangkat NodeMCU langsung terhubung dengan laptop seperti pada Gambar 9 agar mendapat source power dan mengupload source code yang telah dibuat sebelumnya menggunakan Arduino IDE.
ArduinoIDE adalah perangkat lunak yang digunakan untuk proses menuli kode program yang nantinya akan dijalankan oleh NodeMCU. Terdapat konfigurasi yang diperlukan pada
board agar ArduinoIDE dapat menguggah kode program yang telah dibuat ke NodeMCU. Konfigurasi tersebut dapat dilihat pada Tabel 2 berikut :
Tabel 2. Konfigurasi Board ArduinoIDE
Board NodeMCU 1.0 (ESP12-E Module)
Flash size 4M (3M SPIFFS)
Debug port Serial
Debug level None
IwIP variant v2 Prebuilt (MSS=536)
CPU frequency 80 MHz
Upload speed 115200
Kode program publisher ditulis menggunakan bahasa pemrograman C. Pada bagian publisher menggunakan library MQTT by Joel Gaehwiller. Sedangkan pada sisi
subscriber bahasa pemrograman yang digunakan adalah bahasa Python. Broker yang digunakan adalah broker online yang dapat diakses secara free yakni broker broker.hivemq.com dengan TCP port 1883.
Gambar 10. Tampilan Implementasi MQTT pada ArduinoIDE
Gambar 10 adalah tampilan sistem MQTT
Gambar 11. tampilan hasil implementasi MQTT pada subscriber
Gambar 10 merupakan tampilan dari sisi
subscriber yang telah berhasil
diimplementasikan protokol MQTT dan dapat menerima pesan dan menampilkan pesan.
4. PENGUJIAN
4.1 Pengujian Test Vector
Uji validasi test vector memiliki tujuan untuk menyamakan keystream yang telah dihasilkan oleh sistem dengan keystream yang sudah ditentukan sebelumnya pada jurnal Lizard.
Tabel 3. Pengujian Test Vector
Kombinasi
4.2 Pengujian Validasi Enkripsi dan Dekripsi
Pengujian validasi enkripsi dan dekripsi memiliki tujuan untuk memastikan valid atau tidaknya data yang sebelum dilakukan proses
enkripsi dan data yang telah dilakukan proses dekripsi
Tabel 4. Pengujian Enkripsi
Plaintext Keystream Ciphertext Status
0x68617920 proses enkripsi. Data yang dimasukkan diubah terlebih dahulu menjadi bilangan binary, kemudian data tersebut di-operasikan dengan
keystream. Pada Tabel 6.2 keystream yang telah dibentuk adalah keystream dari rujukan test vector yang telah ditentukan sebelumnya pada jurnal algoritme Lizard. Dapat dilihat bahwa seluruh operasi yang telah dilakukan pada tabel sesuai dengan tabel kebenaran xor. Sehingga dapat disimpulkan bahwa pengujian ini dinyatakan valid
Tabel 5. Pengujian Dekripsi
Ciphertext Keystream Plaintext Status
0xDE51358
Tabel 5 merupakan tabel validasi dari proses dekripsi yang menunjukan bahwa hasil dekripsi merupakan kebalikan dari uji enkripsi. Hal ini dapat dilihat dari proses xor yang sebelumnya diubah dari plaintext menjadi ciphertext
sekarang diubah kembali dari ciphertext menjadi
4.3 Pengujian Fungsional
Tujuan dari pengujian ini dilakukan agar dapat memastikan bahwa fungsionalitas sistem sudah terpenuhi atau belum yang nantinya untuk menjawab dari rumusan masalah sebelumnya.
Tabel 6. Pengujian Fungsional
No. Fungsi Hasil
Pengujian
1. Membuat keystream
algoritme Lizard
Berhasil
2. Menerima inputan plaintext
dengan Panjang maksimal 128 bit
Berhasil
3. Melakukan proses enkripsi
plain text menjadi cipher text
Berhasil
4. Melakukan proses dekripsi
ciphertext menjadi plaintext
Berhasil
5. Mengirimkan pesan sesuai dengan topik yang ditentukan
Berhasil
6. Menampilkan pesan yang sesuai dengan topik yan gditentukan
Berhasil
Berdasarkan hasil dari pengujian fungsional dari sistem yang dibangun dapat disimpulkan bahwa seluruh kebutuhan fungsional yang diperlukan berhasil diimplementasikan dan berhasil berjalan sebagaimana semestinya.
4.4 Pengujian Sniffing
Pengujian sniffing memiliki tujuan untuk mengetahui apakah data sudah berhasil dienkripsi atau belum sebelum data dikirim. Sehingga meskipun terdapat penyerang yang dapat meng-capture data pada proses pengiriman data, penyerang tidak dapat membaca pesan dengan mudah.
Gambar 12. Publish tanpa algoritme
Pada Gambar 12 terdapat isi dari berbagai informasi dari publish message, yakni topic,
topic length, message, dan msg len. Bagian
message berisi payload yang dikirimkan dari
publisher ke subscriber melewati broker.
Payload tersebut dapat dilihat dengan sangat jelas dan mudah, sehingga apabila tidak
diamankan akan dapat disalahgunakan oleh orang yang tidak bertanggung jawab untuk mencuri, memata-matai atau bahkan mengganti isi dari pesan yang dikirimkan.
Gambar 13. Publish message menggunakan
algoritme Lizard
Pada Gambar 13 adalah sebuah gambar yang memperlihatkan isi dari payload message protokol MQTT namun sudah dienkripsi. Dapat dilihat bahwa isi pesan yang sebelumnya dapat dengan mudah dibaca pada Gambar 13 pada kali ini berisikan bilangan binary yang meskipun dikonversi ke dalam bentuk ascii atau apa saja tidak dapat memberi arti yang sebenarnya. Hal ini dikarenakan proses enkripsi telah dilakukan dengan menggunakan algoritme Lizard. Sehingga meskipun penyerang dapat melihat isi dari payload namun tidak dapat mengetahui isi pesan aslinya,
4.5 Pengujian Kinerja Sistem
Pengujian dilakukan untuk mengetahui waktu pemrosesan keystream, enkripsi dan dekripsi sistem. Juga membandingkan antara waktu pemrosesan keystream, enkripsi dan dekripsi ketika sistem menggunakan melakukan pengiriman data tanpa menggunakan algoritme Lizard.
Gambar 14. Pembuatan Keystream
Pada Gambar 14. menjelaskan grafik waktu yang dibutuhkan untuk pembuatan keystream.
Keystream ini dihasilkan menggunakan key dan
iv yang berbeda. Tidak ada perubahan waktu yang signifikan ketika proses pembuatan
9450 9500 9550 9600 9650
1
75
149 223 297 371 445 519 593 667 741 815 889 963
Eksekusi Keystream
keystream namun tetap terjadi perubahan waktu yang fluktuatif. Rata-rata waktu yang dibutuhkan untuk pembuatan keystream adalah 9568.23846 microsecond.
Gambar 15. Proses Enkripsi
Pada Gambar 15 menjelaskan grafik waktu yang dibutuhkan untuk proses enkripsi. Proses enkripsi ini dihasilkan menggunakan key dan iv
yang berbeda. Tidak ada perubahan waktu yang signifikan ketika proses dekripsi namun tetap terjadi perubahan waktu yang fluktuatif. Rata-rata waktu yang dibutuhkan untuk proses dekripsi adalah 9753.93 microsecond.
Gambar 16. Proses Dekripsi
Pada Gambar 16 memperlihatkan hasil dari uji kinerja dari proses dekripsi yang telah dihasilkan dari 1024 keystream yang berbeda. Perubahan waktu terjadi secara fluktuatif dimana rata rata proses dekripsi membutuhkan waktu 9511 microsecond.
Gambar 17. Publisher dengan algoritme Lizard
Gambar 17 merupakan grafik waktu untuk pengiriman data dari publisher menggunakan algortime Lizard. Terlihat naik secara perlahan dari pengiriman data ke-1 sampai ke-120.
Gambar 18. Publisher Tanpa Enkripsi
Gambar 18 merupakan grafik waktu untuk pengiriman data dari publisher menggunakan algortime Lizard. Terlihat perubahan secara fluktuatif dari pengiriman data 1 sampai ke-120.
Berdasarkan grafik yang ditampilkan dari Gambar 6.8 dan Gambar 6.9 dapat diambil selisih rata-rata waktu yang dibutuhkan untuk mengirimkan pesan dari publisher dengan selisih waktu 4499.4994 microsecond yang menunjukkan bahwa perbedaan waktu hanya memiliki selisih yang sangat kecil.
5. KESIMPULAN
1. Pembuatan keystream dari algoritme Lizard telah berhasil dibuat dan telah sesuai dengan
testvector dari jurnal yang algoritme Lizard sebagai jurnal rujukan utama penelitian ini. 2. Proses enkripsi dan dekripsi telah dilakukan
dan diuji menggunakan keystream yang telah dibuat sebelumnya. Pengujian enkripsi dan dekripsi telah dinyatakan valid.
3. Proses enkripsi dan dekripsi telah dilakukan dan diuji menggunakan keystream yang telah dibuat sebelumnya. Pengujian enkripsi dan dekripsi telah dinyatakan valid.
4. Berdasarkan hasil pengujian keamanan sistem, diketahui bahwa data yang dikirimkan apabila tidak menggunakan algoritma enkripsi maka data akan sangat jelas terlihat, tetapi apabila menggunakan sistem yang sudah terenkripsi maka data yang dikirimkan tidak akan dengan mudah untuk dibaca atau diartikan. Sehingga pada end node atau selama dalam proses pengiriman terdapat attacker yang akan mencuri data, ketika attacker tersebut berhasil mendapatkan data yang dikirimkan tetap tidak akan mendapatkan data asli yang sebenarnya 9600
dikirimkan oleh pengirim.
5.
Berdasarkan hasil pengujian kinerja sistem waktu yang diperkukan untuk proses enkripsi adalah rata-rata sebesar 9753.93microsecond. Sedangkan untuk proses dekripsi adalah rata-rata sebesar 9511
microsecond.
6. DAFTAR PUSTAKA
Ariyus, 2008. Pengantar Kriptografi. p.16. Hamann, M., Krause, M. and Meier, W., 2017.
LIZARD – A Lightweight Stream Cipher for Power-constrained Devices. IACR Transactions on Symmetric Cryptology, [online] 2017(1), pp.45–79. Available at: <https://tosc.iacr.org/index.php/ToSC/article
/view/584%0Ahttp://dblp.uni-trier.de/db/journals/iacr/iacr2016.html#Ham ann0M16%0Ahttps://tosc.iacr.org/index.php /ToSC/article/download/584/525/584-1570-1-SM.pdf>.
Hanson Technology, 2017. Handson Technology User Manual V1.2. Hanson Technology, [online] pp.1–22. Available at: <http://www.handsontec.com/pdf_learn/esp 8266-V10.pdf>.
Nurrohmah, A., Kusyanti, A. and Primananda, R., 2018. Implementasi Algoritme Grain V1 Dan 128 Bit Pada Arduino Mega 2560. 2(4), pp.1436–1445.
Rochman, H.A., Primananda, R. and Nurwasito, H., 2017. Sistem Kendali Berbasis Mikrokontroler Menggunakan Protokol MQTT pada Smarthome. Jurnal Pengembangan Teknologi Informasi dan Ilmu Komputer, [online] 1(6), pp.445–455. Available at: <http://j-ptiik.ub.ac.id>. Satria, G.O., Satrya, G.B. and Herutomo, A.,
2014. Implementasi Protokol Mqtt Pada Smart Building Berbasis Openmtc. 2(2), pp.1–8.
Yudhanto, Y., 2007. Internet Of things.