Uji Keacakan Key Schedule Algoritma LBlock dan LBlock-s
Arif Rahman Hakim 1, Esti Rahmawati Agustina 2, Istuningtyas31Sekolah Tinggi Sandi Negara 2,3Badan Siber dan Sandi Negara
1Jalan Raya H. Usa, Ds. Putat Nutug, Ciseeng, Bogor, Jawa Barat, Indonesia KP 16120
2,3Jalan Harsono RM No 70, Ragunan, Pasar Minggu, Jakarta Selatan, DKI Jakarta, Indonesia KP 12500
[email protected], esti.rahmawati @bssn.go.id , [email protected]
Abstract— Kekuatan key schedule merupakan aspek penting dari suatu algoritma block cipher. Subkunci yang dihasilkan key schedule harus bersifat acak yang dapat diuji dengan kakas uji keacakan. Pada makalah ini dilakukan uji keacakan pada subkunci yang dihasilkan dua algoritma yaitu LBlock dan LBlock-s dengan menggunakan dua kakas uji keacakan yang berbeda yaitu NIST test suite dan CryptRNDTest. Baik hasil uji menggunakan kakas NIST test suite maupun CryptRNDTest menunjukkan bahwa kedua key schedule menghasilkan subkunci yang tidak acak. Perbandingan berdasarkan hasil uji kedua kakas tersebut atas subkunci yang dihasilkan menunjukkan bahwa key schedule LBlock-s lebih baik dibandingan LBlock.
Kata kunci-key schedule; LBlock; LBlock-s; Uji Keacakan
Abstract—A key schedule plays important role in security of a block cipher. Subkeys that generated by the key schedule must be random enough which can be examined by using randomness test. In this paper, we examine subkeys that generated from two different key schedule, LBlock and LBlock-s using two different tools i.e, NIST test suite and CryptRNDTest. The results show that both key schedules produced non-random subkeys. In comparison between two key schedules, LBlock-s has better result than LBlock.
Keywords-key schedule; LBlock; LBlock-s; Randomness Test
I. PENDAHULUAN
Teknologi di era Revolusi Industri 4.0 mendorong kemudahan berkomunikasi dengan berkembangnya teknologi berbasis Internet of Things (IoT) dan platform
ubiquitous. Namun kemudahan tersebut menimbulkan
potensi masalah baru yaitu isu keamanan atas data yang ditransmisikan. Salah satu solusi keamanan yang digunakan yaitu teknik kriptografi, khususnya algoritma
lightweight block cipher yang umum diterapkan pada IoT
karena memiliki komputasi yang efisien [1].
Salah satu aspek penting pada keamanan algoritma
block cipher adalah keamanan algoritma key schedule
yang dimiliki block cipher tersebut. Algoritma key
schedule merupakan algoritma yang menggunakan kunci
input untuk menghasilkan seluruh subkunci yang dibutuhkan pada setiap ronde proses enkripsi dari suatu algoritma block cipher. Kelemahan suatu algoritma key
schedule dapat dimanfaatkan untuk membobol algoritma
enkripsi dengan teknik serangan berupa
meet-in-the-middle, weak keys, related keys, dan detectable key classes [2].
Algoritma key schedule yang baik mampu menghasilkan subkunci yang acak yaitu subkunci yang independen dan tidak berkorelasi antara satu subkunci dengan subkunci yang lain [3]. Karakteristik acak dari subkunci yang dihasilkan tersebut dapat diuji dengan menggunakan kakas uji keacakan berbasis statistik.
Algoritma LBlock [6] merupakan lightweight block
cipher yang didesain oleh Wu dan Zhang pada tahun
2011, sedangkan algoritma LBlock-s [7] yang didesain Wang et al merupakan hasil modifikasi algoritma LBlock pada bagian key schedule yang digunakan. Key schedule hasil modifikasi tersebut juga digunakan oleh Zhang et al untuk algoritma authenticated encryption yang bernama LAC [8]. Meskipun key schedule LBlock-s diklaim memiliki karakateristik keacakan berupa difusi yang lebih baik [7], namun belum terdapat penelitian yang membandingkan barisan subkunci yang dihasilkan kedua
key schedule tersebut berdasarkan hasil uji menggunakan
kakas uji keacakan. Oleh karena itu, pada makalah ini akan diuraikan analisis perbandingan keacakan subkunci yang dihasilkan key schedule algoritma LBlock dan LBlock-s dengan menggunakan dua kakas uji, yaitu NIST Test [4] dan CryptRNDTest[5]. CryptRNDTest merupakan kakas berupa R package yang mengandung uji keacakan kriptografis yang komprehensif.
II. LANDASAN TEORI A. Key Schedule LBlock dan LBlock-s
Algoritma LBlock dan LBlock-s keduanya merupakan
lightweight block cipher dengan ukuran kunci input
sepanjang 80-bit dan jumlah ronde enkripsi sebanyak 32 ronde. Karena setiap ronde membutuhkan satu subkunci, maka jumlah subkunci yang diperlukan untuk proses enkripsi pada algoritma LBlock dan LBlock-s adalah 32 subkunci. Subkunci sejumlah 32 buah tersebut dibangkitkan oleh algoritma key schedule berdasarkan kunci input masing-masing. Dengan kata lain algoritma
key schedule menerima input kunci sepanjang 80 bit dan
menghasilkan output 32 subkunci dengan setiap subkunci memiliki panjang 32-bit.
1) Tahapan Key Schedule LBlock
Misal merupakan kunci input sepanjang 80-bit dan merupakan subkunci dengan , dihasilkan dengan tahapan sebagai berikut:
a) Simpan nilai kunci input ke dalam register b) Subkunci merupakan nilai 32-bit paling kiri dari register
c) Subkunci sampai dengan dihasilkan berbadasarkan iterasi berikut:
1) Rotasi register sejauh 29 bit ke kiri yaitu
2) Update register dengan output dari substitution box
yaitu pada indeks
3) Update register dengan output dari substitution box
yaitu pada indeks
4) Lakukan operasi XOR dengan konstanta I sepanjang 5-bit yaitu pada indeks
5) 32-bit nilai paling kiri dari register terkini dijadikan sebagai subkunci ronde .
TABEL1.SUBSTITUTION BOX YANG DIGUNAKAN PADA KEY
SCHEDULE LBLOCK [6]
INPUT OUTPUT INPUT OUTPUT
S8 S9 S8 S9 0 8 11 8 11 4 1 7 5 9 12 8 2 14 15 10 9 1 3 5 0 11 10 12 4 15 7 12 2 14 5 13 2 13 4 10 6 0 9 14 1 3 7 6 13 15 3 6
2) Tahapan Key Schedule LBlock-s
Sebagaimana pada LBlock, misal merupakan kunci input sepanjang 80-bit dan merupakan subkunci dengan , dihasilkan dengan tahapan sebagai berikut:
a) Simpan nilai kunci input ke dalam register b) Subkunci merupakan nilai 32-bit paling kiri dari register
c) Subkunci sampai dengan dihasilkan berbadasarkan iterasi berikut:
1) Rotasi register sejauh 24 bit ke kiri yaitu 2) Update register dengan output dari substitution box
yaitu pada indeks
3) Update register dengan output dari substitution box
S yaitu pada indeks
4) Lakukan operasi XOR dengan konstanta I sepanjang 5-bit yaitu pada indeks
5) 32-bit nilai paling kiri dari register terkini dijadikan sebagai subkunci ronde .
Dapat dilihat bahwa perbedaan antara key schedule LBlock dengan LBlock-s terdapat pada jumlah rotasi bit pada langkah pertama yaitu 29 bit pada LBlock dan 24 bit pada LBlock-s. Selain itu, mekanisme update register penggunaan subtitusion box (sbox), yaitu dua sbox pada
key schedule LBlock dan satu sbox pada LBlock-s. B. Kakas Uji Keacakan CryptRNDTest
CryptRNDTest merupakan R package yang digunakan untuk melakukan uji statistik atas keacakan kriptografis suatu barisan bit atau integer yang dihasilkan suatu pembangkit bilangan acak. Kakas ini mencakup uji berupa
greatest common divisor, birthday spacings, book stack, adaptive chi-square, topological binary, dan three random walk. Selain itu terdapat fungsi auxiliary berupa
Strlng2(), GCD(), GCD.q(), GCD.big(),toBaseTwo(), toBaseTen(), dan TBT.CriticalValue() yang masing-masing memiliki fungsi spesifik yang dapat diterapkan pada uji yang dilakukan. Tabel 2 menunjukkan penggunaan CrypRNDTest berdasarkan jenis uji dan fungsi auxiliary [9]. Berikut jenis uji dan fungsi auxiliary tersebut:
1. GDC Test, merupakan uji yang didasarkan pada nilai iterasi k dan nilai greatest common divisor (GDC) yang dihasilkan. Suatu barisan dikatakan acak jika baik k maupun GCD bersifat independen dan masing-masing terdistribusi secara identik.
2. Random Walk Test, merupakan uji yang didasarkan pada peluang perubahan nilai pada barisan baik menurun maupun meningkat yang idealnya bersifat setara. Oleh karena itu, uji ini digunakan untuk observasi deviasi barisan dari keacakan.
3. Birthday Spacings Test, merupakan uji yang mempunyai ide dasar yang berfokus pada jumlah pengulangan nilai (tanggal ulang tahun) pada suatu himpunan satu tahun. Oleh karena itu, pada uji ini hal yang diobservasi adalah pengulangan pola yang terjadi pada barisan yang dibandingkan dengan pola pada barisan acak.
4. Adaptive Chi Square Test, merupakan uji yang berfokus pada observasi distribusi seragam dari barisan, sehingga tujuan dari uji ini adalah mendeteksi
deviasi distribusi barisan yang diuji terhadap distribusi seragam.
5. Topological Binary Test, merupakan uji yang berfokus pada pola bit dengan panjang tetap dalam barisan yang diuji. Semakin banyak pola bit dalam barisan maka semakin acak barisan tersebut. Oleh karena itu, uji ini lebih berfokus pada pola bit tanpa overlap dibandingkan hanya frekuensi dari bit pada barisan yang diuji.
6. Auxiliary Function, mencakup tujuh fungsi yaitu fungsi Strlng2(), GCD(), GCD.q(), GCD.big(), toBaseTwo(), toBaseTen(), dan fungsi TBT.CriticalValue(). Fungsi Strlng2() digunakan untuk menghitung logaritma natural dari bilangan Stirling. Fungsi GCD(), GCD.q() dan GCD.big() digunakan untuk perhitungan operasi GCD dengan tiga macam hasil yaitu nilai GCD, jumlah iterasi dan nilai quotient. Fungsi toBaseTwo() dan toBaseTen() digunakan untuk konversi basis dari basis 2 ke basis 10 dan sebaliknya untk integer berukuran besar. Fungsi TBT.CriticalValue() digunakan untuk menghitung nilai kritis pada uji topological binary.
TABEL2.JENIS TES DAN FUNGSI AUXILIARY PADA CRYPTRNDTEST [9]
Function Call
Test
GCD.test()
GCD.test(x,KS=TRUE,CSQ=TRUE, AD=TRUE, JB=TRUE, test.k=TRUE, mu, sd, alpha=0.05) random.wal k.tests() random.walk.test(x,B=64,Excursion=TRUE ,Expansion=TRUE,Heigh=TRUE,alpha=0.0 5) birthday.sp acings() birthday.spacings(x,m=128,n=216,alpha=0.0 5,lambda,num.class=10) adaptive.ch i.square() adaptive.chi.square(x,B,S,alpha=0.05,bit=F ALSE) book.stack( ) book.stack(A,B,k=2,alpha=0.05,bit=FALSE ) topological. binary() topological.binary(x,B,alpha=0.05,critical.v alue) Auxi liary Strlng2() Strlng2(n,k,log=TRUE) GCD() GCD(x,y) GCD.q() GCD.q(x,y) GCD.big() GCD.big(x,y,B) TBT.Critic alValue() TBT.criticalValue(m,k,alpha=0.01,cdf=FA LSE,exact=TRUE) toBaseTen( ) toBaseTen(x,m=128,prec=256,toFile=FALS E,file) toBaseTwo () toBaseTwo(x,m=128,prec=512,num.CPU=4 )
C. Kakas Uji NIST Test Suite
NIST Test Suite merupakan kakas uji keacakan barisan bit yang berisi 15 uji statistik dan dikeluarkan oleh
National Institute of Standar Technology (NIST) Amerika
Serikat. Uji-uji yang ada pada NIST Test Suite berfungsi untuk mendeteksi deviasi barisan bit yang diuji terhadap barisan bit acak yang diharapkan [4]. Pada makalah ini uji yang digunakan dibatasi pada tujuh uji berikut:
1) Uji frequency : Uji frequency memiliki tujuan
untuk melihat apakah frekuensi dari bit 0 dan bit 1 di dalam barisan yang diuji mendekati frekuensi dari bit 0 dan bit 1 pada barisan truly random, sehingga proporsi setiap bit 0 dan bit 1 adalah ½. Rekomendasi panjang barisan bit minimum yang diuji adalah 100-bit . Fokus dari uji frequency adalah proporsi penyebaran bit 0 dan bit 1 pada keseluruhan barisan.
2) Uji frequency within a block : Fokus dari uji
frequency within a block adalah proporsi bit 1 yang
dinotasikan sebagai dengan pada
blok-blok -bit. Tujuan dari uji ini adalah melihat proporsi bit 1 dalam setiap blok -bit apakah sesuai dengan proporsi bit 1 yang diharapkan dalam setiap blok dari barisan acak, yaitu . Rekomendasi panjang barisan bit minimum yang diuji adalah 100-bit , sehingga dengan , ukuran blok harus dipilih sedemikian sehingga , dan
.
3) Uji cumulative sums : Fokus dari uji cumulative
sums adalah menentukan apakah jumlah kumulatif dari sebagian barisan bit yang diuji menyimpang dari jumlah kumulatif yang diharapkan untuk suatu barisan yang acak. Perbedaan mode 0 dan 1 adalah pada mode 1 penjumlahan kumulatif dimulai dari bit yang paling belakang, yang sebelumnya telah dikonversi menjadi +1 dan -1.
4) Uji runs : Fokus dari uji runs adalah jumlah run bit
1 dan run bit 0 dalam barisan biner , dengan . Run bit 1 merupakan bit 1 dengan panjang k-bit yang berada diantara bit 0, sedangkan run bit 0 merupakan bit 0 dengan panjang k-bit yang berada diantara k-bit 1. Rekomendasi panjang barisan bit minimum untuk dilakukan uji runs adalah
100-bit .
5) Uji spectral/DFT (Discrete Fourier Transform) :
Fokus dari uji spectral adalah tinggi puncak DFT dari barisan, dengan tujuan untuk mendeteksi adanya sifat periodik dimana terdapat pola yang berulang dengan jarak yang berdekatan di dalam barisan bit yang diuji. Selanjutnya akan dibandingkan apakah sesuai dengan sifat periodik yang dimiliki oleh barisan bit acak. Apabila barisan biner tersebut sesuai dengan sifat periodik dari barisan acak, maka dapat dikatakan bahwa barisan biner yang diuji berdistribusi seragam. Rekomendasi panjang barisan bit minimum yang dibutuhkan dalam uji ini adalah 100-bit ( ).
6) Uji approximate entropy : Fokus dari uji
approximate entropy adalah frekuensi seluruh kemungkinan pola -bit dan -bit secara overlapping pada seluruh barisan. Tujuan dari uji approximate entropy adalah untuk membandingkan frekuensi pola -bit dan -bit secara overlapping apakah sama dengan frekuensi -bit dan -bit pada barisan acak. Rekomendasi panjang barisan bit menggunakan uji approximate entropy ditentukan dengan cara memilih nilai dan , sedemikian sehingga
7) Uji serial : Fokus dari uji serial sama dengan uji
approximate entropy, yaitu frekuensi seluruh kemungkinan pola -bit secara overlapping dalam barisan biner. Tujuan dari uji serial adalah melihat apakah jumlah pola -bit overlapping yang terjadi sama dengan jumlah pola -bit overlapping pada barisan acak. Dalam uji serial dihasilkan dua buah nilai P-value, yaitu dari nilai dan . Nilai berasal dari kemunculan pola -bit dan -bit dalam barisan. Semakin besar nilai menunjukkan semakin besar ketidakseragaman pola -bit dan -bit secara overlapping yang muncul. Nilai
berasal dari pola -bit, -bit dan -bit dalam barisan. Rekomendasi panjang barian bit minimumnya
adalah , sedemikian sehingga .
III. METODOLOGI PENELITIAN
Uji dilakukan terhadap barisan biner yang dihasilkan masing-masing dari key schedule algoritma LBlock dan LBlock-s. Sampel kunci input yang digunakan sebanyak 1000 sampel dengan setiap kunci input sepanjang 80 bit. Dari setiap sampel dibangkitkan 32 subkunci yang masing-masing sepanjang 32 bit. Seluruh subkunci dari sampel kemudian digabungkan menjadi barisan yang akan diuji. Barisan biner yang telah dibangkitkan kemudian diuji keacakannya menggunakan kakas NIST test suite dan CryptRNDTest.
IV. PEMBAHASAN
Subkunci yang dihasilkan kedua key schedule dijadikan barisan biner yang diuji menggunakan kakas uji keacakan. Tabel 3 menunjukkan hasil uji dengan kakas NIST test suite atas subkunci yang dihasilkan kedua key
schedule. Hasil yang ditunjukkan didasarkan pada
proporsi barisan yang lulus uji dari keseluruhan barisan yang diuji.
TABEL3.HASIL UJI NISTTEST SUITE ATAS SUBKUNCI KEY
SCHEDULE LBLOCK DAN LBLOCK-S BERDASARKAN PROPORSI DENGAN
ALPHA (0,01) No. Uji Proporsi LBlock LBlock-s 1. Frequency (monobit) 0,896 0,867 2. Frequency within a block 0,984 0,933 3. Cumulative sums (mode 0) 0,878 0,845 Cumulative sums (mode 1) 0,877 0,839 4. Runs 0,881 0,872 5. Spectral 0,177 0,359 6. Approximate entropy 0,273 0,642 7. Serial 0,511 0,689 Serial 0,692 0,889
Dapat dilihat bahwa dari seluruh uji yang dilakukan dengan menggunakan kakas NIST test suite, key schedule
LBlock hanya memiliki satu hasil uji yang bernilai proporsi di atas 0,9 yaitu frequency within a block. Bahkan terdapat dua hasil uji yang memiliki proporsi di bawah 0,5 yaitu spectral dan approximate entropy. Begitu pun key schedule LBlock-s hanya satu hasil uji yang bernilai proporsi di atas 0,9 yaitu juga pada uji frequency
within a block. Di sisi lain hanya satu uji yang memiliki
proporsi di bawah 0,5 yaitu spectral. Hal ini menunjukkan bahwa keacakan subkunci yang dihasilkan kedua key
schedule masih rendah.
Jika dibandingkan hasil uji kedua key schedule berdasarkan nilai proporsi tiap uji, maka hasil uji key
schedule LBlock pada lima uji yaitu frequency, frequency within a block, cumulative sum (mode 0), cumulative sum (mode 1) dan runs menunjukkan nilai proporsi yang lebih
baik dibandingkan LBlock-s. Di sisi lain, nilai proporsi hasil uji key schedule LBlock-s lebih baik dibandingkan LBlock pada empat uji yaitu spectral, approximate
entropy, serial dan serial .
Selanjutnya, hasil uji menggunakan kakas CryptRNDTest dilakukan dengan parameter panjang bit yaitu 32-bit, karena output setiap subkunci yang dihasilkan kedua algoritma adalah 32-bit. Kemudian level
significant yang digunakan yaitu 0,01 dan 0,05. Tabel 4
menunjukkan hasil uji kedua key schedule menggunakan kakas CryptRNDTest.
TABEL4.HASIL UJI CRYPTRNDTEST ATAS SUBKUNCI KEY
SCHEDULE LBLOCK DAN LBLOCK-S BERDASARKAN PROPORSI
Level of
Significant Key Schedule Proporsi
0,01 LBlock 0.33
LBlock-s 0,33
0,05 LBlock 0,27
LBlock-s 0,33
Jumlah Uji 15
Berdasarkan Tabel 4 tersebut, dapat dilihat bahwa proporsi jumlah uji yang lulus dari kedua algoritma cukup rendah yaitu 0,33, maka dapat disimpulkan subkunci yang dihasilkan kedua algoritma masih tidak acak. Lebih jauh, jika dilihat perbandingan hasil uji kedua key schedule dapat dilihat bahwa LBlock-s memiliki proporsi yang lebih baik pada level of significant yang digunakan yaitu 0,05.
V. PENUTUP
Key schedule merupakan komponen penting pada
suatu algoritma enkripsi block cipher. Subkunci yang dihasilkan key schedule juga harus memiliki keacakan yang baik. Salah satu cara mengukur keacakan subkunci yang dihasilkan yaitu dengan melakukan uji keacakan dengan kakas uji tertentu. Berdasarkan hasil uji menggunakan kakas CryptRNDTest pada barisan subkunci key schedule LBlock dan LBlock-s disimpulkan bahwa key schedule keduanya menghasilkan subkunci dengan keacakan yang rendah, ditandai dengan proporsi lulus tuji dari seluruh uji yang dilakukan. Namun perbandingan hasil uji antara key schedule LBlock dengan
LBlock-s menunjukkan bawa key schedule LBlock-s lebih baik dibandingkan LBlock. Meskipun demikian, kedua
key schedule tersebut perlu dimodifikasi untuk meningkatkan keacakan subkunci yang dihasilkan. Modifikasi yang dilakukan dapat berupa menggunakan komponen yang memiliki sifat nonlinieritas yang tinggi, dan mengubah mekanisme updating register sehingga memiliki sifat difusi yang lebih tinggi.
REFERENCES
[1] Biryukov, A., & Perrin, L. (2015). Lightweight Block Ciphers. Available:
https://www.cryptolux.org/index.php/Lightweight_Block_Ciphers
[2] Kelsey J., B. Schneier, dan D. Wagner.1996. Key-schedule
Cryptanalysis of IDEA, G-DES, GOST, SAFER, and Triple-DES.
Annual International Cryptology Conference. Springer., hlm. 237-251.
[3] Afzal, S., Waqas, U., Mir, MA., Yousaf, M. 2015. Statistical Analysis of Key Schedule Algorithms of Different Block Ciphers. Science International. Lahore Pakistan, pp. 1835-1839.
[4] Rukhin, A., Soto, J. & Nechvatal, J., 2010. A Statistical Test Suite
for Random and Pseudorandom Number Generators for
Cryptographic Applications.NIST Special Publication 800-22
Revision 1a. Available:
https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication8 00-22r1a.pdf
[5] H. Demirhan and N. Bitirim. Cryptrndtest: An r package for testing the cryptographic randomness. The R Journal, 2015. [6] Wu, W. dan Zhang, L., 2011. LBlock: A Lightweight Block
Cipher. Chinese Academy of Sciences, Beijing China, hlm. 327–
344.
[7] Wang Y., Wu W., Xiaoli Y., dan Lei Z., 2012. Security on LBlock against Biclique Cryptanalysis A Brief Description of LBlock. Beijing, China, hlm.1–14.
[8] Zhang, L., Wu, W., Wang, Y., Wu, S. dan Zhang, J., 2014. LAC:
A Lightweight Authenticated Encryption Cipher. Trusted
Computing and Information Assurance Laboratory Institute of Software, Chinese Academy of Sciences.
[9] H. Demirhan and N. Bitirim. Statistical testing of cryptographic randomness. Journal of Statisticians: Statistics and Actuarial Sciences 2016.1.1-11.