15
Rancang Bangun Prototipe Modul
Enkripsi/Dekripsi Menggunakan Algoritma
Blowfish pada Mikrokontroler STM32F103
Berbasis Prosesor ARM Cortex-M3
Febrianto Dicky Saputra, Rahmat Purwoko
Sekolah Tinggi Sandi Negara
febrianto.dicky@student.stsn-nci.ac.id, rahmat.purwoko@stsn-nci.ac.id
Abstrak
Embedded system merupakan kombinasi dari perangkat keras dan perangkat lunak yang dirancang untuk melakukan fungsi tertentu. Penelitian ini dilakukan dengan tujuan untuk membuat prototipe modul enkripsi/dekripsi yang menyediakan fungsi kriptografi bagi perangkat host. Prototipe modul enkripsi/dekripsi mengimplementasikan algoritma Blowfish pada mikrokontroler STM32F103 berbasis prosesor ARM 32-bit Cortex-M3. Selain itu, dilakukan implementasi Application Programming Interface (API) yang digunakan sebagai acuan bagi perangkat host untuk dapat mengakses prototipe modul enkripsi/dekripsi. Dengan menggunakan protokol komunikasi serial sebagai antarmuka komunikasi, prototipe modul enkripsi/dekripsi dapat diakses menggunakan Notebook/PC dan Arduino Uno. Dari hasil pengujian performa, didapatkan hasil bahwa prototipe modul enkripsi/dekripsi memiliki performa yang relatif baik. Prototipe modul enkripsi/dekripsi hanya menggunakan memori sebesar 9,57% dari total flash memory yang dimiliki. Selain itu, penggunaan kunci dengan panjang yang bervariasi pada algoritma Blowfish tidak terlalu berpengaruh terhadap performa yang dimiliki oleh prototipe modul enkripsi/dekripsi.
Kata Kunci: ARM, Blowfish, Embedded System, Komunikasi Serial, STM32F103
I.
PENDAHULUAN
Embedded system merupakan kombinasi dari perangkat keras dan perangkat lunak yang dirancang untuk melakukan fungsi tertentu, biasanya sebagai bagian dari sistem yang lebih besar [1]. Dalam beberapa tahun terakhir, penggunaan embedded system telah meningkat karena kemajuan teknologi, jaringan komunikasi, dan rendah biaya [2]. Sudah banyak ditemukan aplikasi embedded system berbasis mikrokontroler yang digunakan dalam berbagai bidang seperti pada militer, industri, perbankan, e-commerce, sistem biometrik, telemedicine, dan untuk membantu komputasi. Salah satu kekurangan pada perancangan embedded system adalah keamanan belum dianggap sebagai persyaratan utama, persyaratan lain seperti biaya, kinerja, dan konsumsi daya lebih diprioritaskan [3]. Hal ini menimbulkan masalah keamanan terkait dengan data rahasia yang
dikirimkan melalui internet [2]. Untuk menjamin kerahasiaan, keaslian, dan integritas data dapat diterapkan algoritma enkripsi pada embedded system.
Salah satu algoritma enkripsi yang dapat digunakan pada embedded system adalah Blowfish [4]. Blowfish merupakan pilihan yang tepat untuk implementasi pada hardware dengan minimum resource karena membutuhkan memori kecil. Blowfish dipilih karena memiliki performa yang paling cepat, konsumsi memori paling sedikit, dan keamanan yang lebih baik di antara algoritma block cipher lainnya [5]–[7].
Berdasarkan hal tersebut, dalam penelitian ini penulis akan membangun prototipe modul enkripsi/dekripsi menggunakan algoritma Blowfish pada mikrokontroler STM32F103. STM32F103 dipilih karena harganya yang terjangkau dan mempunyai spesifikasi yang cukup baik, dilengkapi dengan prosesor ARM 32-bit Cortex-M3 yang
16 merupakan generasi terakhir dari prosesor ARM untuk embedded system [8]. STM32F103 akan bertindak sebagai perangkat yang menyediakan fungsi kriptografi dan digunakan untuk membantu proses penyandian teks pada perangkat host, dalam hal ini proses enkripsi dan dekripsi menggunakan algoritma Blowfish. STM32F103 dan host akan dihubungkan dengan menggunakan protokol komunikasi serial. Perangkat host yang digunakan dapat berupa Notebook/PC, Arduino, atau perangkat lain yang menyediakan antarmuka komunikasi serial.
II.
METODE PENELITIAN
A. Algoritma Blowfish
Algoritma Blowfish merupakan algoritma block cipher yang didesain oleh Bruce Schneier pada tahun 1994 dan sangat efisien untuk enkripsi data pada mikroprosesor berukuran besar [9]. Blowfish didesain untuk memenuhi beberapa kriteria [10], yaitu:
1) Cepat, Blowfish dapat melakukan enkripsi data pada mikroprosesor 32-bit dengan kecepatan 26
clock cycles per byte.
2) Efisien, Blowfish dapat berjalan pada memori kurang dari 5 kB.
3) Sederhana, Blowfish hanya menggunakan operasi-operasi sederhana seperti: penjumlahan, XOR, dan tabel lookups pada 32-bit operands. 4) Keamanan yang beragam, panjang kunci dari
Blowfish bervariasi dan dapat mencapai 448-bit. Blowfish memiliki ukuran blok 64-bit dengan struktur Feistel dan melakukan iterasi fungsi enkripsi sederhana sebanyak 16 kali. Desain dari algoritma Blowfish ditunjukkan pada Gambar 1.
Gambar 1. Desain Algoritma Blowfish
B. Mikrokontroler STM32F103
STM32F103 merupakan mikrokontroler keluarga STM32 yang masuk dalam kategori mikrokontroler medium-density performance line
[8]. STM32F103 diproduksi oleh perusahaan STMicroelectronics, seperti ditunjukkan pada Gambar 2. STM32F103 menggunakan prosesor ARM 32-bit Cortex-M3 dengan kecepatan maksimum sebesar 72 MHz. Karena bentuknya yang kecil dan mempunyai kecepatan yang tinggi, STM32F103 banyak digunakan dalam berbagai aplikasi seperti driver motor, pengontrol aplikasi, peralatan medis, periferal PC dan games, platform
GPS, aplikasi industri, inverter, printer, scanners, sistem alarm, dan video intercoms.
Gambar 2. Mikrokontroler STM32F103
C. Komunikasi Serial
Recommended Standard-232 atau lebih dikenal dengan RS-232 merupakan standar komunikasi serial yang ditetapkan oleh Electronics Industry Alliance/Telecommunication Industry Association (EIA/TIA-232-F) pada tahun 1962 [11]. Dalam komunikasi RS-232 terdapat hubungan dua perangkat yaitu DTE (Data Terminal Equipment) yang berupa perangkat komputer dan DCE (Data Communication Equipment) yang merupakan perangkat periferal komputer seperti modem,
mouse, printer, scanner, atau joystick game [12]. Antara DTE dan DCE berkomunikasi dengan melakukan pertukaran data biner melalui port serial. Untuk melakukan komunikasi melalui protokol RS-232, diperlukan sebuah driver. Driver berfungsi untuk membaca beberapa informasi dari perangkat yang harus diketahui seperti nomor port com, baud rate, parity, data bits, dan stop bits.
D. Metodologi Penelitian
Pada penelitian ini penulis akan melakukan rancang bangun prototipe modul enkripsi/dekripsi menggunakan algoritma Blowfish pada mikrokontroler STM32F103 berbasis prosesor ARM Cortex-M3. Untuk melakukan penelitian tersebut penulis mengimplementasikan SDLC menggunakan metodologi Rapid Application
17
Development (RAD) dengan pendekatan
prototyping. Penulis memilih pendekatan
prototyping ini karena cepat menyediakan sistem bagi pengguna, walaupun belum memenuhi semua persyaratan sistem [13]. Pada penelitian ini akan dibangun dua buah prototipe.
III.
HASIL PENELITIAN
A. Gambaran Umum SistemSistem yang dibangun pada penelitian ini adalah prototipe modul enkripsi/dekripsi yang menyediakan fungsi kriptografi dan digunakan untuk membantu proses penyandian data pada perangkat host. Perangkat keras utama yang digunakan pada sistem ini adalah mikrokontroler STM32F103 yang berfungsi sebagai prototipe modul enkripsi/dekripsi untuk melakukan proses enkripsi dan dekripsi data menggunakan algoritma Blowfish.
Perangkat host akan berfungsi sebagai user interface yang akan digunakan oleh user untuk melakukan input parameter seperti kunci, plaintext, atau ciphertext. Selain itu, user interface juga berfungsi menampilkan output (ciphertext atau
plaintext) hasil pemrosesan data oleh prototipe modul enkripsi/dekripsi. Pada penelitian ini perangkat host yang akan digunakan adalah
Notebook/PC dan Arduino Uno. Pada host Notebook/PC dibangun aplikasi berbasis desktop yang berfungsi untuk membaca komunikasi serial antara Notebook/PC dengan prototipe modul enkripsi/dekripsi. Secara umum, baik host berupa
Notebook/PC atau Arduino Uno, input data berasal dari user melalui keyboard dan output data akan ditampilkan pada layar LCD Notebook/PC. Data akan diproses (enkripsi atau dekripsi) oleh prototipe modul enkripsi/dekripsi yang terhubung dengan perangkat host sesuai dengan perintah yang diberikan oleh user. Berikut merupakan gambaran umum dari sistem dengan menggunakan host Notebook/PC, ditunjukkan pada Gambar 3.
Gambar 3. Gambaran Umum Sistem dengan Host Notebook/PC
B. Implementasi
Proses rancang bangun prototipe modul enkripsi/dekripsi dilakukan dengan mengimplementasikan dua buah prototipe. Prototipe I merupakan proses implementasi algoritma Blowfish pada mikrokontroler STM32F103 yang menyediakan fungsi dasar dari sistem yaitu fungsi enkripsi dan dekripsi. Prototipe II adalah prototipe I dengan penambahan fungsi sistem yaitu fungsi komunikasi yang menjadikan sistem dapat diakses oleh perangkat host. Pada prototipe II dilakukan implementasi protokol komunikasi serial dan
Application Programming Interface (API) pada mikrokontroler STM32F103.
C. Pengujian
Pengujian dilakukan untuk membuktikan bahwa sistem yang dibangun telah sesuai dan memenuhi kebutuhan dari sistem. Berikut merupakan pengujian yang dilakukan.
Pengujian Prototipe I
Pengujian prototipe I merupakan pengujian tes vektor dan bertujuan untuk memastikan implementasi algoritma Blowfish pada mikrokontroler STM32F103 telah dilakukan dengan benar. Tabel 1 menunjukkan hasil tes vektor yang sudah sesuai.
Tabel 1. Hasil Pengujian Tes Vektor Kunci Plaintext Ciphertext Hasil
Enkripsi 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4E F9 97 45 61 98 DD 78 4E F9 97 45 61 98 DD 78 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 51 86 6F D5 B8 5E CB 8A 51 86 6F D5 B8 5E CB 8A 30 00 00 00 00 00 00 00 10 00 00 00 00 00 00 01 7D 85 6F 9A 61 30 63 F2 7D 85 6F 9A 61 30 63 F2 Pengujian Prototipe II
Pengujian pada prototipe II bertujuan untuk membuktikan modul yang telah dibuat dapat diakses dan digunakan oleh perangkat host. Host
yang digunakan dalam pengujian ini adalah
Notebook/PC dan Arduino Uno. Antara host dan prototipe modul enkripsi/dekripsi dihubungkan dengan protokol komunikasi serial. Pengujian ini dilakukan dengan melakukan proses enkripsi dan dekripsi pada prototipe modul enkripsi/dekripsi melalui kedua host tersebut. Pada Gambar 4,
18 Gambar 5, dan Gambar 6 menunjukkan hasil enkripsi melalui host Notebook/PC menggunakan aplikasi berbasis desktop, sedangkan pada Gambar 7, Gambar 8, dan Gambar 9 menunjukkan hasil enkripsi menggunakan host Arduino Uno melalui serial monitor.
Gambar 4. Contoh Pengiriman Kunci pada Aplikasi Berbasis Desktop
Gambar 5. Contoh Pengiriman Plaintext pada Aplikasi Berbasis Desktop
Gambar 6. Tampilan Ciphertext Hasil Proses Enkripsi pada Aplikasi Berbasis Desktop
Gambar 7. Contoh Pengiriman Kunci pada Serial Monitor
Gambar 8. Contoh Pengiriman Plaintext pada Serial Monitor
Gambar 9. Tampilan Ciphertext pada Proses Enkripsi pada Serial Monitor
Dari pengujian pada prototipe II, dibuktikan bahwa prototipe modul enkripsi/dekripsi yang dibangun dapat diakses dan digunakan menggunakan host Notebook/PC dan Arduino Uno.
Pengujian Performa
Pengujian performa dilakukan setelah dipastikan prototipe modul enkripsi/dekripsi telah berfungsi dengan benar dan bertujuan untuk mengetahui performa dari prototipe modul enkripsi/dekripsi yang berhasil dibangun. Terdapat beberapa parameter yang digunakan untuk mengukur performa dari modul antara lain memory usage,
clock cycles, execution time, dan throughput. Skenario dalam pengujian ini adalah melakukan proses inisialisasi kunci, proses enkripsi, dan proses dekripsi pada setiap sampel pengujian yang ditentukan. Pengujian ini dilakukan dengan
19
Gambar 13. Grafik Rata-rata Hasil Pengujian
Execution Time pada Proses Inisialisasi Kunci
menggunakan sampel plaintext dengan panjang yang berbeda yaitu 64-bit, 128-bit, 256-bit, 512-bit, dan 1024-bit. Karena Blowfish merupakan algoritma yang menggunakan kunci dengan panjang yang bervariasi yaitu empat bytes sampai 56 bytes, maka akan dilakukan pengujian terhadap setiap kemungkinan panjang kunci yang dapat digunakan untuk setiap sampel plaintext yang telah ditentukan. Dari serangkaian percobaan yang dilakukan akan di cari nilai rata-rata untuk setiap parameter pengujian yang digunakan pada setiap sampel plaintext. Berikut merupakan hasil dari pengujian performa untuk masing-masing parameter.
Memory usage, dari hasil proses implementasi diketahui bahwa memori yang digunakan untuk menjalankan program pada prototipe modul enkripsi/dekripsi adalah flash memory sebesar 12,25 kB atau 9,57% dari total flash memory
yang dimiliki (128 kB) dan RAM sebesar 18,92 kB atau sekitar 94,6% dari total SRAM yang dimiliki (20 kB).
Clock cycles, pengujian ini bertujuan untuk mengetahui berapa banyak cycles yang dibutuhkan untuk menjalankan program pada prototipe modul enkripsi/dekripsi. Pengujian dilakukan pada proses inisialisasi kunci, proses enkripsi, dan proses dekripsi. Gambar 10, Gambar 11, dan Gambar 12 menunjukkan hasil dari pengujian clock cycles yang telah dilakukan.
Gambar 10. Grafik Rata-rata Hasil Pengujian
Clock Cycles pada Proses Inisialisasi Kunci
Gambar 11. Grafik Rata-rata Hasil Pengujian
Clock Cycles pada Proses Enkripsi
Gambar 12. Grafik Rata-rata Hasil Pengujian
Clock Cycles pada Proses Dekripsi
Execution time, pengujian ini bertujuan untuk mengetahui waktu yang dibutuhkan untuk menyelesaikan suatu proses pada program. Pengujian dilakukan pada proses inisialisasi kunci, proses enkripsi, dan proses dekripsi. Gambar 13 dan Gambar 14 menunjukkan hasil dari pengujian execution time yang telah dilakukan.
20
Gambar 14. Grafik Rata-rata Hasil Pengujian
Execution Time pada Proses Enkripsi dan Dekripsi
Throughput, pengujian ini bertujuan untuk mengetahui rata-rata jumlah data yang dapat dikirimkan dalam setiap detiknya. Sesuai dengan skenario pengujian yang digunakan, pada Gambar 15 menunjukkan data hasil pengujian
throughput yang dilakukan.
Gambar 15. Grafik Rata-rata Hasil Pengujian
Throughput pada Proses Enkripsi dan Dekripsi
IV.
KESIMPULAN
Berdasarkan penelitian yang telah dilakukan, dapat diambil kesimpulan sebagai berikut:
Hasil implementasi algoritma Blowfish pada mikrokontroler STM32F103 sebagai prototipe modul enkripsi/dekripsi telah dilakukan dengan benar, terbukti dengan hasil pengujian tes vektor pada prototipe I yang telah dilakukan. Serta, implementasi API dan penggunaan protokol komunikasi serial sebagai antarmuka komunikasi juga telah berjalan dengan baik, terbukti dengan hasil pengujian pada prototipe II. Prototipe modul enkripsi/dekripsi dapat diakses melalui perangkat host yang berbeda yaitu menggunakan Notebook/PC dan Arduino Uno.
Berdasarkan hasil pengujian performa yang telah dilakukan, didapatkan hasil bahwa prototipe modul enkripsi/dekripsi yang dibangun memiliki performa yang relatif baik, dibuktikan dari data hasil pengujian sebagai berikut:
a.
Penggunaan memori pada prototipe modul enkripsi/dekripsi ini yaitu sebesar 12,25 kB atau sekitar 9,57% dari total flash memoryyang dimiliki (128 kB).
b.
Pada pengujian clock cycles, untuk proses inisialisasi kunci, panjang kunci yang digunakan tidak terlalu berpengaruh terhadap jumlah clock cycles yang dibutuhkan untuk melakukan proses inisialisasi kunci. Sedangkan pada proses enkripsi dan dekripsi, jumlah clock cycles pada setiap sampelplaintext yang digunakan selalu konstan dan berbanding lurus dengan panjang data yang diproses.
c.
Pada pengujian execution time, untuk proses inisialisasi kunci, panjang kunci yang digunakan tidak terlalu berpengaruh terhadap waktu yang dibutuhkan untuk melakukan proses inisialisasi kunci. Sedangkan pada proses enkripsi dan dekripsi, execution timeberbanding lurus dengan panjang data yang diproses.
d.
Pada pengujian throughput, dihasilkan bahwathroughput proses enkripsi selalu lebih besar dari throughput proses dekripsi untuk panjang data yang sama.
REFERENSI
[1] M. Barr, Programming Embedded Systems in C and C++, no. January. 1999.
[2] M. A. Murillo-Escobar, C. Cruz-Hernández, F. Abundiz-Pérez, and R. M. López-Gutiérrez, “Implementation of an improved chaotic encryption algorithm for real-time embedded systems by using a 32-bit microcontroller,” Microprocess. Microsyst., vol. 45, pp. 297–309, 2016.
[3] P. Kocher, R. Lee, G. McGraw, and A. Raghunathan, “Security as a new dimension in embedded system design,” Proc. 41st Annu. Des. Autom. Conf., pp. 753–760, 2004.
[4] N. B. F. Silva, D. F. Pigatto, P. S. Martins, and K. R. L. J. C. Branco, “Case studies of performance evaluation of cryptographic algorithms for an embedded system and a general purpose computer,” J. Netw. Comput. Appl., vol. 60, pp. 130–143, 2016. [5] R. Bhanot and R. Hans, “A review and comparative analysis of various encryption algorithms,” Int. J. Secur. its Appl., vol. 9, no. 4, pp. 289–306, 2015. [6] M. Mathur, “Comparison between DES , 3DES ,
21 Conf. New Horizons IT, pp. 143–148, 2013.
[7] V. B. Patil, P. U. L. Bombale, and P. H. Dixit, “Implementation of AES algorithm on ARM processor for wireless network,” vol. 2, no. 8, pp. 3204–3209, 2013.
[8] STMicroelectronics, “STM32F103x8,” no. August, pp. 1–117, 2015.
[9] B. Schneier, “Description of a new variable-length key, 64-bit block cipher (Blowfish),” 1994, pp. 191–204.
[10] B. Schneier, Applied Cryptography. Protocols. Algorithm and Source Code in C. 2nd Edition., Second Edi. USA John Willey and Sons. Inc., 1996. [11] L. E. Frenzel Jr, Handbook of Serial
Communications Interfaces. 2014.
[12] Texas Instruments, “Interface Circuits for TIA/EIA-232-F,” Advanced Packaging, vol. 77, no. August. pp. 63–64, 2007.
[13] A. Dennis, B. H. Wixom, and R. M. Roth, System Analysis and Design. 2012.