Implementasi Algoritme Lizard untuk Pengamanan Protokol MQTT pada Perangkat NodeMCU

  

Vol. 2, No. 12, Desember 2018, hlm. 6447-6456 http://j-ptiik.ub.ac.id

Implementasi Algoritme Lizard untuk Pengamanan Protokol MQTT pada

Perangkat NodeMCU

  1

  2

  3 Rizal Dismantoro , Ari Kusyanti , Mahendra Data

Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Brawijaya

  1

  2

  3 Email: rizaldismantoro@gmail.com, ari.kusyanti@ub.ac.id, mahendra.data@ub.ac.id

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 elektronik, koleksi, peralatan apa saja, 1.

   PENDAHULUAN termasuk benda hidup yang semuanya tersambung ke jaringan lokal dan global

  Internet of Things atau dikenal juga melalui sensor yang tertanam dan selalu dengan singkatan IoT, merupakan sebuah aktif (Yudhanto, 2007). Dengan banyaknya konsep yang bertujuan untuk memperluas penerapan IoT pada berbagai bidang manfaat dari konektivitas internet yang menyebabkan pengembangan IoT tersambung secara terus-menerus. Adapun berkembang sangat pesat. Terdapat kemampuan seperti berbagi data, remote beberapa protokol pada control , dan sebagainya, termasuk juga pengimplementasian IoT namun yang paling pada benda di dunia nyata. Contoh pada sering digunakan adalah MQTT. Ciri khas kehidupan nyata berupa bahan pangan, dari komunikasi dari MQTT adalah

  Fakultas Ilmu Komputer Universitas Brawijaya

6447 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 dan block cipher. Stream cipher memiliki

  B

  29 t

  ⊕ B

  75 t

  B

  64 t

  B

  50 t

  B

  B

  B

  13 t

  ⊕ B

  65 t

  B

  41 t

  B

  28 t

  B

  6 t

  14 t

  ⊕ B

  B

  B

  57 t

  B

  43 t

  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.

  27 t

  B

  19 t

  1 t

  B

  ⊕ B

  61 t

  B

  47 t

  B

  32 t

  B

  26 t

  2 t

  73 t

  B

  (2) Q

  9 t

  ⊕ B

  21 t

  B

  4 t

  = B

  t

  71

  52 t

  t = 7 ⊕ 11 ⊕ 30 ⊕ 40 ⊕ 45 ⊕ 54 ⊕

  (1) di mana:

  t = t ⊕ Q t ⊕ T t ⊕ Ť t

  .

  α pada Gambar 3. Persamaan 1 merupakan rumus Output function yang akan membentuk 1 bit keystream

  78 t

  (4) Ť

  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.

  B

  ⊕ B

  B

  5 t

  67 t

  B

  34 t

  ⊕ B

  82 t

  B

  8 t

  ⊕ B

  = B

  18 t

  t

  (3) T

  76 t

  B

  44 t

  ⊕ B

  37 t

  B

  66 t

2.3 Algoritme Lizard

  • 90, ∈ {0, … ,28}
  • 1

  ⊕ B

  B

  10 t

  ⊕ B

  59 t

  B

  3 t

  84 t

  ⊕ B

  ⊕ B

  79 t

  ⊕ B

  49 t

  ⊕ B

  24 t

  12 t

  15 t

  t

  B

  ⊕

  58 t

  B

  55 t

  ⊕ B

  42 t

  35 t

  B

  ⊕ B

  53 t

  B

  25 t

  ⊕ B

  16 t

  ⊕ B

  Gambar 2 Diagram LIZARD Algoritme ini menggunakan 120-bit untuk key dan 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

  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).

  ⊕ S

  ⊕ S

  48 t

  S

  13 t

  S

  9 t

  16 t

  S

  S

  3 t

  ⊕ S

  23 t

  = S

  t

  1 t

  24 t

  89

  119 ⊕ 1, = 29

  2 pada Gambar 4. t ∈ {0,....,127}.

  dan ƒ

  1

  akan dimaskuna kembali ke dalam NFSR sesuai dengan Persamaan 8 dan 9. Persamaan 10 dan 11 adalah fungsi pergeseran dilambangkan dengan ƒ

  t

  1, = 30 (7) Tahapan grain-like mixing, node akan dilakukan pergeseran sebanyak 128 kali tanpa ada proses pembentukan keystream yang sesungguhnya. Pada Gambar 3, Z

  (6) = {

  S

  j ⊕ IV j , untuk j ∈ {0, … ,63} j , untuk j ∈ {64, … ,89}

  = {

  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.

  (5) Gambar 3. Pembentukan Keystream

  63 t

  S

  38 t

  = ⊕ ⊕ B

  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1

  S

  ⊕ S

  21 t

  S

  12 t

  ⊕ S

  20 t

  S

  8 t

  ⊕ S

  18 t

  8 t

  S

  ⊕ S

  25 t

  ⊕ S

  20 t

  ⊕ S

  18 t

  ⊕ S

  17 t

  ⊕ S

  15 t

  ⊕ S

  14 t

  19 t

  ⊕ S

  22 t

  S

  20 t

  S

  7 t

  ⊕ S

  22 t

  S

  19 t

  S

  4 t

  ⊕ S

  S

  ⊕ S

  12 t

  S

  4 t

  ⊕ S

  22 t

  S

  20 t

  ⊕ S

  21 t

  S

  17 t

  6 t

  5 t

  ⊕ S

  53 t

  60 t

  ⊕ B

  58 t

  B

  55 t

  ⊕ B

  42 t

  B

  35 t

  ⊕ B

  B

  74 t

  25 t

  ⊕ B

  16 t

  B

  15 t

  ⊕ B

  12 t

  B

  10 t

  ⊕ B

  59 t

  B

  ⊕ B

  ⊕ S

  B

  2 t

  ⊕ S

  t

  = S

  30

  (14)

  83 t

  B

  81 t

  B

  80 t

  77 t

  20 t

  ⊕ B

  72 t

  B

  68 t

  B

  62 t

  ⊕ B

  23 t

  B

  22 t

  B

  21 t

  8 t

  3 t

  21 t

  8 t

  ⊕ S

  21 t

  S

  19 t

  S

  12 t

  S

  7 t

  ⊕ S

  S

  18 t

  20 t

  S

  8 t

  S

  7 t

  ⊕ S

  21 t

  S

  18 t

  S

  8 t

  S

  S

  7 t

  S

  2.5 NodeMCU NodeMCU merupakan sebuah papan Mikrokontroller yang berbasis modul WiFi

  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).

  ₂₅₇ adalah bit awal untuk kumpulan keystream yang sesungguhnya.

  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

  , untuk i ∈ {0, … ,29} (17) Gambar 5. Final Diffusion

  =

  = +1 , untuk j ∈ {0, … ,88} (16)

  (15)

  21 t

  S

  19 t

  12 t

  21 t

  ⊕ S

  22 t

  S

  21 t

  S

  20 t

  S

  8 t

  ⊕ S

  22 t

  S

  S

  ⊕ S

  S

  19 t

  S

  4 t

  ⊕ S

  22 t

  S

  21 t

  S

  20 t

  ⊕ S

  22 t

  S

  S

  S

  12 t

  ⊕ S

  22 t

  S

  20 t

  S

  8 t

  ⊕ S

  22 t

  S

  18 t

  7 t

  12 t

  22 t

  12 t

  S

  21 t

  S

  19 t

  S

  4 t

  ⊕ S

  22 t

  S

  21 t

  S

  S

  S

  4 t

  ⊕ S

  21 t

  S

  19 t

  S

  7 t

  S

  4 t

  ⊕ S

  21 t

  B

  ⊕ B

  ESP8266, sehingga sesuai untuk diterapkan di bidang Internet of Things (IoT), smart home control atau aplikasi pengendalian tanpa kabel lainnya (Hanson Technology, 2017) .

  ⊕ S

  S

  19 t

  S

  4 t

  ⊕ S

  22 t

  S

  12 t

  S

  4 t

  22 t

  ⊕ S

  S

  20 t

  ⊕ S

  21 t

  S

  17 t

  ⊕ S

  19 t

  S

  14 t

  ⊕ S

  22 t

  7 t

  S

  20 t

  S

  20 t

  ⊕ S

  22 t

  S

  19 t

  S

  12 t

  ⊕ S

  22 t

  S

  S

  S

  8 t

  ⊕ S

  22 t

  S

  18 t

  S

  8 t

  ⊕ S

  21 t

  S

  20 t

  21 t

  12 t

  S

  B

  83 t

  B

  81 t

  B

  80 t

  B

  77 t

  ⊕ B

  72 t

  B

  68 t

  62 t

  30

  ⊕ B

  23 t

  B

  22 t

  B

  20 t

  ⊕ B

  74 t

  B

  60 t

  B

  (8)

  = ⊕ S

  ⊕ S

  ⊕ S

  20 t

  S

  8 t

  ⊕ S

  18 t

  S

  8 t

  ⊕ S

  25 t

  ⊕ S

  20 t

  18 t

  t

  ⊕ S

  17 t

  ⊕ S

  15 t

  ⊕ S

  6 t

  ⊕ S

  5 t

  ⊕ S

  2 t

  ⊕ S

  21 t

  22 t

  84 t

  21 t

  = +1 , untuk j ∈ {0, … ,88} (10)

  (9)

  21 t

  S

  19 t

  S

  12 t

  ⊕ S

  22 t

  S

  S

  , untuk i ∈ {0, … ,29} (11) Gambar 4. Initialization State

  20 t

  S

  8 t

  ⊕ S

  22 t

  S

  21 t

  S

  18 t

  S

  8 t

  =

  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 .

  21 t

  ƒ

  ⊕ B

  79 t

  ⊕ B

  49 t

  ⊕ B

  24 t

  ⊕ B

  t

  = ⊕ B

  89

  2 pada Gambar 5. t ∈ {129,....,256}.

  1 dan

  129

  ƒ

  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 Z t pada tahap ini seperti pada Persamaan 14 dan 15. Persamaan 16 dan 17 adalah fugsi pergeseran diberi lambang

  , untuk i ∈ {0, … ,29} 1, untuk i = 30 (13)

  i+90

  ⊕ K

  i 128

  = {S

  129

  ⊕ K , untuk j ∈ {0, … ,89} (12)

  128

  =

  ⊕ S

  S

  ⊕ S

  19 t

  ⊕ S

  22 t

  S

  21 t

  S

  12 t

  S

  4 t

  ⊕ S

  21 t

  S

  S

  S

  7 t

  S

  4 t

  ⊕ S

  21 t

  S

  12 t

  S

  7 t

  S

  4 t

  4 t

  19 t

  19 t

  7 t

  S

  12 t

  S

  7 t

  ⊕ S

  21 t

  S

  20 t

  S

  8 t

  S

  ⊕ S

  S

  21 t

  S

  18 t

  S

  8 t

  S

  7 t

  ⊕ S

  22 t

  S

  21 t

  • 1
menggunakan keystream yang sama yang digunakan untuk mendekripsi pada sisi publisher sehingga ciphertext yang dikirimkan dapat dibaca kembali.

  Gambar 6. NodeMCU 3.

PERANCANGAN DAN

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 Merupakan perangkat (ESP-12E Module) Mikrokontroller yang digunakan sebagai Publisher ASUS X450JF Perangkat laptop ini bertindak

  Core i7 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 mengolah keystream 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 Gambar 8. Rancangan alur kerja sistem dengan topik yang sama dari publisher dan subscriber . Ketika ciphertext diterima oleh subscriber , ciphertext akan didekripsi

  Gambar 8 menjelaskan bahwa pada sistem ArduinoIDE adalah perangkat lunak yang

akan dimulai dengan mengoneksikan antara digunakan untuk proses menuli kode program

publisher (client) dan subscriber (client) ke yang nantinya akan dijalankan oleh NodeMCU.

  (server). Kemudian setelah keduanya Terdapat konfigurasi yang diperlukan pada broker

berhasil terhubung dengan broker maka board agar ArduinoIDE dapat menguggah kode

susbcriber akan melakukan request payload program yang telah dibuat ke NodeMCU.

kepada broker sesuai dengan topik yang sesuai. Konfigurasi tersebut dapat dilihat pada Tabel 2

Lalu publisher diinput sebuah nilai yang akan berikut : dikirim sebelum dikirim nilai payload tersebut

  Tabel 2. Konfigurasi Board ArduinoIDE terlebih dahulu di enkripsi yang akan diproses

  Board NodeMCU 1.0 (ESP12-E Module) dengan nilai dari keystream yang dibentuk oleh algoritme Lizard. Ketika proses enkripsi selesai

  Flash size

  4M (3M SPIFFS) maka publisher akan mengirimkan pesan yang

  Debug port Serial berisi ciphertext ke broker. Pada paket mqtt-

  Debug level None publish , memiliki bermacam-macam header, seperti dup, qos, retain, dan payload. Pada v2 Prebuilt (MSS=536)

  IwIP variant sistem kali ini, sistem hanya mengenkripsi

  80 MHz CPU frequency payload yang di dalamnya terdapat plaintext

  Upload speed 115200 yang akan dikirimkan oleh publisher ke subscriber. Ketika pesan telah sampai di broker, maka broker akan mengirimkan payload atau Kode program publisher ditulis pesan dengan topic yang sesuai dengan menggunakan bahasa pemrograman C. Pada subscriber . Ketika pesan telah sampai pada bagian publisher menggunakan library MQTT subscriber , pesan yang diterima lalu akan by Joel Gaehwiller . Sedangkan pada sisi didekripsi terlebih dahulu sebelum pada subscriber bahasa pemrograman yang akhirnya akan ditamplikan oleh sistem. digunakan adalah bahasa Python. Broker yang digunakan adalah broker online yang dapat

3.2 Implementasi

  diakses secara free yakni broker Pada proses implementasi terdapat 2 bagian broker.hivemq.com dengan TCP port 1883. penting untuk membangun sistem ini, perangkat keras terebut antara lain mikrokontroller NodeMCU dan Laptop yang bertindak sebagai client subscriber .

  Gambar 10. Tampilan Implementasi MQTT pada ArduinoIDE Gambar 10 adalah tampilan sistem MQTT publisher yang diimplementasikan pada perangkat NodeMCU yang sudah tersambung pada jaringan wifi.

  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.

  Gambar 11. tampilan hasil implementasi MQTT pada subscriber

  0xDE51358

  4AB4C1E1 327855471F A Valid Kunci:

  0x68617920 616B75207 2697A616C

  Keystream: 0x4D19094 1816F94235

  8F0D164F4 ECEB09 0x25787061 E004E1032

  8 Valid Pada Tabel 4 merupakan table validasi dari 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

  4AB4C1E1 327855471F A 0xB6304CA

  55EC2E109

  4CA276B33

  55EC2E109

  68E84B3 0x68617920 616B75207 2697A616C

  Valid 0x25787061 E004E1032 A99AB059

  8 Keystream: 0x4D19094 1816F94235

  8F0D164F4 ECEB09 Kunci: 0x68617920 616B75207 2697A616C

  Valid 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 plaintext. Sehingga dapat disimpulkan bahwa pengujian dinyatakan valid.

  68E84B3 0xDE51358

  4CA276B33

A99AB059

  55EC2E109

  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 kunci dan

  IV Test vector Hasil pembentuk an keystream

  Status Kunci: 0x00000000 0000000000 0000000000

  00 IV : 0x00000000 00000000

  Keystream: 0xB6304CA

  4CA276B33

  Gambar 10 merupakan tampilan dari sisi subscriber yang telah berhasil diimplementasikan protokol MQTT dan dapat menerima pesan dan menampilkan pesan.

  Tabel 4. Pengujian Enkripsi Plaintext Keystream Ciphertext Status 0x68617920 616B75207 2697A616C 0xB6304CA

4. PENGUJIAN

  4CA276B33

  55EC2E109

  68E84B3 Valid Kunci: 0x00000000 00000000F FFFFFFFFF FFFF

  IV : 0xFFFFFFF FFFFFFFFF

  Keystream: 0x4D19094 1816F94235

  8F0D164F4 ECEB09 Keystream: 0x4D19094 1816F94235

  8F0D164F4 ECEB09 Valid

  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

  68E84B3 Keystream: 0xB6304CA

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.

  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.

  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.

  Tabel 6. Pengujian Fungsional No. Fungsi Hasil Pengujian

  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.4 Pengujian Sniffing

  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 (microsecond)

  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.

  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. namun tetap terjadi perubahan waktu Gambar 17 merupakan grafik waktu untuk keystream

yang fluktuatif. Rata-rata waktu yang pengiriman data dari publisher menggunakan

dibutuhkan untuk pembuatan keystream adalah algortime Lizard. Terlihat naik secara perlahan

9568.23846 microsecond. dari pengiriman data ke-1 sampai ke-120. waktu pengiriman tanpa Waktu Enkripsi enkripsi (Microsecond)

  1001500 9900 1001000 9800 1000500 9700 1000000 9600

  1

  10

  19

  28

  37

  46

  55

  64

  73

  82

  91

  1 100 109

  75 149 223 297 371 445 519 593 667 741 815 889 963 Gambar 18. Publisher Tanpa Enkripsi Gambar 15. Proses Enkripsi

  Gambar 18 merupakan grafik waktu untuk Pada Gambar 15 menjelaskan grafik waktu pengiriman data dari publisher menggunakan yang dibutuhkan untuk proses enkripsi. Proses algortime Lizard. Terlihat perubahan secara enkripsi ini dihasilkan menggunakan key dan iv fluktuatif dari pengiriman data ke-1 sampai ke- yang berbeda. Tidak ada perubahan waktu yang 120. signifikan ketika proses dekripsi namun tetap Berdasarkan grafik yang ditampilkan dari terjadi perubahan waktu yang fluktuatif. Rata-

Gambar 6.8 dan Gambar 6.9 dapat diambil rata waktu yang dibutuhkan untuk proses selisih rata-rata waktu yang dibutuhkan untuk

  dekripsi adalah 9753.93 microsecond. mengirimkan pesan dari publisher dengan selisih waktu 4499.4994 microsecond yang menunjukkan bahwa perbedaan waktu hanya

  Waktu Dekrip memiliki selisih yang sangat kecil. (Microsecond) 5.

  9800 KESIMPULAN

  9600 1.

  Pembuatan keystream dari algoritme Lizard 9400 telah berhasil dibuat dan telah sesuai dengan test vector dari jurnal yang algoritme Lizard

  9200

  1 sebagai jurnal rujukan utama penelitian ini.

  75 149 223 297 371 445 519 593 667 741 815 889 963

  2. Proses enkripsi dan dekripsi telah dilakukan dan diuji menggunakan keystream yang telah Gambar 16. Proses Dekripsi dibuat sebelumnya. Pengujian enkripsi dan dekripsi telah dinyatakan valid. Pada Gambar 16 memperlihatkan hasil dari 3.

  Proses enkripsi dan dekripsi telah dilakukan uji kinerja dari proses dekripsi yang telah dan diuji menggunakan keystream yang telah dihasilkan dari 1024 keystream yang berbeda. dibuat sebelumnya. Pengujian enkripsi dan Perubahan waktu terjadi secara fluktuatif dimana dekripsi telah dinyatakan valid. rata rata proses dekripsi membutuhkan waktu 4.

  Berdasarkan hasil pengujian keamanan 9511 microsecond. sistem, diketahui bahwa data yang

  Waktu Pengiriman dengan dikirimkan apabila tidak menggunakan algoritma enkripsi maka data akan sangat

  LIZARD jelas terlihat, tetapi apabila menggunakan

  1004000 sistem yang sudah terenkripsi maka data yang

  1003000 dikirimkan tidak akan dengan mudah untuk dibaca atau diartikan. Sehingga pada end

  1002000 node atau selama dalam proses pengiriman

  1001000

  1 terdapat attacker yang akan mencuri data,

  10

  19

  28

  37

  46

  55

  64

  73

  82

  91 100 109 ketika attacker tersebut berhasil mendapatkan data yang dikirimkan tetap tidak akan

  Gambar 17. Publisher dengan algoritme Lizard mendapatkan data asli yang sebenarnya dikirimkan oleh pengirim.

  5. Berdasarkan hasil pengujian kinerja sistem waktu yang diperkukan untuk proses enkripsi adalah rata-rata sebesar 9753.93 microsecond. 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.

  Jurnalkomputer , 20(3), pp.1 –7.