Fast Correlation Attack pada LILI-128 Agung Nursilo, Daniel Melando Jupri Rahman, R. Ahmad Imanullah Z. Tingkat III Teknik Kripto 2009/2010
Abstrak Pada tulisan ini, akan ditunjukkan fast correlation attack pada algoritma LILI-128. Serangan ini memiliki kompleksitas sekitar 271 operasi bit yang diterima dengan panjang sekitar 230 bit dan kompleksitas fase prekomputasi sebesar 279 tabel lookup. Kompleksitas ini secara signifikan lebih rendah daripada 2112, Dimana diperkirakan oleh penemu LILI-128 menjadi lebih rendah terikat pada kompleksitas dari setiap serangan.
1. Pendahuluan LILI-128 keystream generator adalah generator yang sederhana dan cepat yang menggunakan dua binary LFSR dan dua fungsi untuk menghasilkan rangkaian biner keystream pseudorandom. LILI-128 adalah cipher yang diambil dari keluarga LILI keystream generator. LILI-128 telah diajukan sebagai kandidat synchronous stream cipher pada projek NESSIE. Proyek NESSIE merupakan proyek dalam Information SecoritiesTecnology (IST) Program Komisi Eropa, yang berjalan pada tahun 2000-2002. Tujuan utama dari proyek ini adalah untuk mengajukan portofolio kriptografi primitif yang kuat yang diperoleh setelah open call dan telah dievaluasi menggunakan proses yang transparan dan terbuka. Dalam pengajuan LILI-128 desainernya memperkirakan bahwa kompleksitas dari setiap divide and conquer attack pada LILI-128 setidaknya 2112 operasi. Kita petik dari paper yang diajukan desainer LILI-128 “Ini adalah perkiraan konservatif, dan tingkat keamanan yang sebenarnya mungkin jauh lebih tinggi”. Dalam tulisan ini, ditunjukkan bahwa dimungkinkan untuk melakukan fast correlation attack dengan kompleksitas sekitar 271 operasi dengan mengasumsikan telah dimiliki rangkaian dengan panjang sekitar 128MByte menggunakan fase prekomputasi dengan kompleksitas 279.
2. Deskripsi LILI-128 Pada bagian ini diberikan penjelasan singkat mengenai LILI-128 keystream generator. LILI-128 keystream generator merupakan clock-controlled nonlinear filter generator. Generator terdiri dari dua feedback shift register, dinotasikan dengan LFSRc dan LFSRd. Panjang total LFSR adalah 128 dan pada saat initial state , dan saat inisialisasi 128 bit kunci menyediakan initial state dari LFSR. Generator dibagi menjadi dua subsistem. Subsistem pertama menghasilkan rangkaian integer yang digunakan untuk mengontrol clocking subsistem kedua, yang
pada selanjutnya
menghasilkan keystream. Struktur LILI-128diilustrasikandalamGambar 1.
Gambar 1. LILI-128 keystream generator LFSRc adalah LFSR dengan panjang 39 dengan feedback polynomial ( ) Karena
( ) primitif, rangkaian yang dihasilkan oleh LFSRc adalah rangkaian dengan panjang
maksimum. Isi stage 12 dan 20 LFSRc adalah input kefungsi fc. Fungsi fc mengambil dua bit sebagai masukan dan menghasilkan sebuah integer ck, sehingga ck ∈ {1, 2, 3, 4}. Nilai ck dihitung sebagai : (
)
Rangkaian integer c = c1, c2,. . . mengendalikan clocking LFSRd, dalam arti LFSRd di-clock ck kali sebelum menghasilkan nilai keluaran zk. Dengan demikian, dari definisi c, LFSRd di-clock setidaknya sekali dan paling banyak empat kali antara output bit keystream berturut-turut. Panjang LFSRd adalah 89 dan feedback polynomial LFSRd adalah polinomial primitif ( )
Isi 10 stage yang berbeda dari LFSRd adalah input ke fungsi Boolean fd, fd :
→
. Output
dari fd adalah rangkaian keystream z1, z2, . . . Terakhir, dilakukan penambahan bitwise output generator z1, z2, . . . ke plaintext (operasi XOR), dan didapatkan ciphertext.
3. Fast Correlation Attack Ketika menyerang synchronous stream cipher, diasumsikan penyerang mempunyai barisan keystream z1, z2, . . . . , zN dan tugas si penyerang (attacker) adalah bisa menemukan kunci K. Serangan ini merupakan known-plaintext attack karena keystream dengan mudah diperoleh jika pasangan pesan dan ciphertext diberikan.
Gambar 2. Subsistem pembangkitan data Ada beberapa kelas serangan terhadap binary stream cipher. Salah satu kelas penting serangan terhadap stream cipher berbasis LFSR adalah fast correlation attack. Fast correlation attack pada LILI-128 ini aplikasi dari teknik umum yang diajukan oleh V.Chepyzhov, T.Johansson, dan B.Smeets (A simple algorithm for fast correlation attacks on stream ciphers) Diasumsikan kita telah mengobservasi barisan keystream dengan panjang N, z = (z1, z2, . . . , zN). Misal barisan output dari fd dinyatakan dengan d = (d1, d2, . . . , dM) di mana M > N ketika LFSRd secara reguler di-clock. Selanjutnya tentukan barisan s = (s1, s2, . . . , sN), sk ∈ Z, di mana ∑ Dengan menggunakan barisan d dan s kita dapat mengobservasi barisan z sebagai
Prinsip serangannya adalah sebagai berikut. Tebak sebuah initial state LFSRc, dan hitung barisan ∑ c dan barisan s yang berhubungan di mana
Jika initial state LFSRc yang ditebak benar, barisan s bersama dengan z akan memberikan kita N simbol ds1, ds2 , . . . , dsN. Kemudian, kita menggunakan N simbol d yang diperoleh tadi untuk menemukan initial state LFSRd. Nyatakan barisan yang dihasilkan LFSRd (dalam clocking reguler) dengan u = (u1, u2, . . . , uN). Simbol output ke-i dari fd diberikan sebagai (
)
Langkah selanjutnya adalah pendekatan linier fungsi fd. Untuk sebuah fungsi Boolean , → , transformasi Walsh dari f(x) didefinisikan sebagai real-valued function F(ω) pada vector space
diberikan oleh ( )
di mana dot product vektor x dan
∑(
)
( )
didefinisikan sebagai
.
Kita mendefinisikan nonlinieritas dari fungsi Boolean f(x), dinotasikan dengan Nf sebagai Hamming distance terhadap fungsi affine terdekat, yaitu (
)
∈ di mana f dan g adalah tabel kepercayaan dari f(x) dan g(x). An adalah himpunan fungsi affine pada n variabel dan dH(f,g) adalah Hamming distance antara dua vektor f dan g, yaitu jumlah posisi di mana f dan g berbeda. Nonlinieritas dari f(x) dapat diperoleh dari transformasi Walsh sebagai ( ) Fungsi fd yang digunakan pada LILI-128 mempunyai nonlinieritas Nfd = 480. Hal ini mengakibatkan kita dapat menemukan fungsi linier fl(x1,x2, . . . , x10) = a1x1 + a2x2 + . . . + a10x10 sehingga dH(fd,fl) = 480. Jadi, jika kita menggunakan fungsi ini untuk memperkirakan fd, kita mendapatkan ( ( ))
( ))
(1)
Kita sebut probabilitas pada perhitungan (1) korelasi teridentifikasi. Untuk menyederhanakan kita punya
Spektrum Walch lengkap fungsi fd adalah sebagai berikut. Terdapat 720 ∈ yang berbeda dengan F(ω)= 0.64 dengan F(ω)= ± 32 dan 240 dengan F(ω) ± 64. Hal ini berarti terdapat 240 fungsi affine yang berbeda fl1 , fl2 , . . . , fl240 sehingga
Selanjutnya, kita memodifikasi algoritma yang diajukan oleh V. Chepyzhov, T. Johansson, dan B. Smeets, menggunakan algoritma parameter t = 3. Misal himpunan rangkaian LFSRd yang mungkin dinotasikan dengan £. Karena LFSRd mempunyai panjang 89 |£| = 289 dan untuk barisan tetap dengan N dari £ juga linier [N,89] kode blok, yang disebut С. Terdapat 89 x
N matriks generator GLFSR. Jelasnya, u = u0GLFSR, di mana ∈ adalah initial state LFSRd. Setiap simbol ui dapat ditulis sebagai kombinasi linier initial state u0. Ketika kita mengganti fd dengan fl, kita dapat menulis output dari fl sebagai kombinasi linier initial state u0. Hingga, kita dapat menemukan sebuah matriks G 89 x N, sehingga rangkaian output v dari fl dapat ditulis sebagai v = u0G. Matriks G dapat dilihat sebagai matriks generator dari kode linier C’ lain. Tambahan lagi, dengan menggunakan semua 240 fungsi afine {fl1, fl2, . . . , fl240} dengan korelasi yang sama, kita bisa mendapatkan 240 matriks berukuran 89 x N yang berbeda, yang ditandai dengan G1, G2, . . . , G240. Dengan merangkaikan matriks-matriks ini kita mendapatkan matriks 89 x240 N berikut
Misal gi merupakan kolom ke-i dari G', yaitu
Misal k < 89 merupakan beberapa nilai tetap. Pada fase serangan prekomputasi kita menemukan semua triple kolom, gi1, gi2, gi3, sehingga
di mana * menunjukkan nilai yang berubah-ubah (tidak semua nol) Untuk menemukan semua triple seperti itu kita lanjutkan sebagai berikut. Tempatkan tiap kolom G' pada sebuah daftar, yang dirutkan berdasarkan nilai dari 89 – k entri terakhir. Untuk setiap pasangan kolom gi1, gi2 hitung nilai gi1 + gi2 pada posisi 89 – k terakhir. Periksa jika terdapat
kolom gi3, sehingga persamaan (2) terpenuhi. Hal ini mudah dilakukan karena kolom telah diurut. Sehingga, waktu berjalan saat langkah prekomputasi adalah O(N2). Misal jumlah triple yang memenuhi persamaan (2) adalah m. Tunjukkan indeks semua triple tersebut sebagai
Jika i1, i2 dan i3 memenuhi persamaan (2), penjumlahan vi1 + vi2 + vi3 adalah kombinasi linier dari simbol k pertama dari initial state LFSRd. Sehingga,
membentuk sebuah kode (m, k), yang dinotasikan dengan C3. Dengan menggunakan z kita dapat menghitung
Vektor (Z1, Z2, . . . , Zm) bertindak sebagai word yang diterima untuk C3. Karena korelasi antara zi dan vi, kita dapat menuliskan zi = vi + ei, di mana ei adalah variabel biner acak dengan . Definisikan vektor error untuk C3 sebagai (E1, E2, . . . , Em), di mana
Karena ei adalah variabel acak independen, untuk k = 1, 2, . . . , m jelas bahwa Ek juga variabel acak biner yang independen dengan probabilitas error
di mana є = 0.03125 untuk LILI-128, dan p3 ≈ 0.49988 Terakhir, kita mendekode C3 menggunakan Maximum Likehood decoding (ML-decoding). Algoritma ini menghasilkan sebuah codeword dari C3 yang terdekat dengan (Z1,Z2, . . . ,Zm). Dari codeword ini, kita mendapatkan k bit initial state LFSRd. Bit initial state yang tersisa ditentukan dengan cara yang sama. Penting dicatat bahwa mendapatkan bit tersisa mempunyai kompleksitas yang dapat diabaikan dibandingkan dengan menentukan k bit pertama. Metode di atas telah dijelaskan untuk regulary clocked LFSRd. Ditinjau dari kasus LILI 128, ketika LFSRd di-clock menggunakan barisan c, kita membutuhkan sedikit modifikasi serangan. Karena P(ci = j) = 0.25 untuk j = 1, 2, 3, 4 , LFSRd di-clock rata-rata 2.5 kali antara output berurutan. Sehingga, jika kita mengobsevasi N simbol keystream, maka LFSRd telah di-clock M
kali, di mana M ≈ 2.5 N. Barisan c menentukan simbol N mana dari d1, d2, . . . , dM yang digunakan untuk menghasilkan keystream z. Pada fase prekomputasi correlation attack kita butuh untuk mempertimbangkan seluruh simbol M yang mungkin ketika kita mengkonstruksi kode C3. Sehingga, waktu prekomputasi adalah O(M2) tabel lookup. Dari setiap initial state LFSRc yang mungkin memilih N posisi dan dari himpunan persamaan dari bentuk (2) kita bisa mengatakan bahwa initial state LFSRc yang ditebak adalah valid.