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 2 71 operasi bit yang diterima dengan panjang sekitar 2 30 bit dan kompleksitas fase prekomputasi sebesar 2 79 tabel lookup. Kompleksitas ini secara signifikan lebih rendah daripada 2 112, 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 2 112 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 2 71 operasi dengan mengasumsikan telah dimiliki rangkaian dengan panjang sekitar 128MByte menggunakan fase prekomputasi dengan kompleksitas 2 79.
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 LFSR c dan LFSR d. 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 LFSR c adalah LFSR dengan panjang 39 dengan feedback polynomial Karena primitif, rangkaian yang dihasilkan oleh LFSR c adalah rangkaian dengan panjang maksimum. Isi stage 12 dan 20 LFSR c adalah input kefungsi f c. Fungsi f c mengambil dua bit sebagai masukan dan menghasilkan sebuah integer c k, sehingga c k {1, 2, 3, 4}. Nilai c k dihitung sebagai : Rangkaian integer c = c 1, c 2,... mengendalikan clocking LFSR d, dalam arti LFSR d di-clock c k kali sebelum menghasilkan nilai keluaran z k. Dengan demikian, dari definisi c, LFSR d di-clock setidaknya sekali dan paling banyak empat kali antara output bit keystream berturut-turut. Panjang LFSR d adalah 89 dan feedback polynomial LFSR d adalah polinomial primitif
Isi 10 stage yang berbeda dari LFSR d adalah input ke fungsi Boolean f d, f d :. Output dari f d adalah rangkaian keystream z 1, z 2,... Terakhir, dilakukan penambahan bitwise output generator z 1, z 2,... ke plaintext (operasi XOR), dan didapatkan ciphertext. 3. Fast Correlation Attack Ketika menyerang synchronous stream cipher, diasumsikan penyerang mempunyai barisan keystream z 1, z 2,...., z N 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 = (z 1, z 2,..., z N ). Misal barisan output dari f d dinyatakan dengan d = (d1, d2,..., d M ) di mana M > N ketika LFSR d secara reguler di-clock. Selanjutnya tentukan barisan s = (s 1, s 2,..., s N ), s k Z, di mana Dengan menggunakan barisan d dan s kita dapat mengobservasi barisan z sebagai Prinsip serangannya adalah sebagai berikut. Tebak sebuah initial state LFSR c, dan hitung barisan c dan barisan s yang berhubungan di mana
Jika initial state LFSR c yang ditebak benar, barisan s bersama dengan z akan memberikan kita N simbol d s1, d s2,..., d sn. Kemudian, kita menggunakan N simbol d yang diperoleh tadi untuk menemukan initial state LFSR d. Nyatakan barisan yang dihasilkan LFSR d (dalam clocking reguler) dengan u = (u 1, u 2,..., u N ). Simbol output ke-i dari f d diberikan sebagai Langkah selanjutnya adalah pendekatan linier fungsi f d. 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 N f sebagai Hamming distance terhadap fungsi affine terdekat, yaitu di mana f dan g adalah tabel kepercayaan dari f(x) dan g(x). A n adalah himpunan fungsi affine pada n variabel dan d H (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 f d yang digunakan pada LILI-128 mempunyai nonlinieritas N fd = 480. Hal ini mengakibatkan kita dapat menemukan fungsi linier f l (x 1,x 2,..., x 10 ) = a 1 x 1 + a 2 x 2 +... + a 10 x 10 sehingga d H (f d,f l ) = 480. Jadi, jika kita menggunakan fungsi ini untuk memperkirakan f d, kita mendapatkan ( ) ) (1) Kita sebut probabilitas pada perhitungan (1) korelasi teridentifikasi. Untuk menyederhanakan kita punya
Spektrum Walch lengkap fungsi f d 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 f l1, f l2,..., f l240 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 LFSR d mempunyai panjang 89 = 2 89 dan untuk barisan tetap dengan N dari juga linier [N,89] kode blok, yang disebut С. Terdapat 89 x N matriks generator G LFSR. Jelasnya, u = u 0 GLFSR, di mana adalah initial state LFSR d. Setiap simbol u i dapat ditulis sebagai kombinasi linier initial state u 0. Ketika kita mengganti f d dengan f l, kita dapat menulis output dari f l sebagai kombinasi linier initial state u 0. Hingga, kita dapat menemukan sebuah matriks G 89 x N, sehingga rangkaian output v dari f l dapat ditulis sebagai v = u 0 G. Matriks G dapat dilihat sebagai matriks generator dari kode linier C lain. Tambahan lagi, dengan menggunakan semua 240 fungsi afine {f l1, f l2,..., f l240 } dengan korelasi yang sama, kita bisa mendapatkan 240 matriks berukuran 89 x N yang berbeda, yang ditandai dengan G 1, G 2,..., G 240. Dengan merangkaikan matriks-matriks ini kita mendapatkan matriks 89 x240 N berikut Misal g i merupakan kolom ke-i dari G', yaitu Misal k < 89 merupakan beberapa nilai tetap. Pada fase serangan prekomputasi kita menemukan semua triple kolom, g i1, g i2, g i3, 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 g i1, g i2 hitung nilai g i1 + g i2 pada posisi 89 k terakhir. Periksa jika terdapat
kolom g i3, sehingga persamaan (2) terpenuhi. Hal ini mudah dilakukan karena kolom telah diurut. Sehingga, waktu berjalan saat langkah prekomputasi adalah O(N 2 ). Misal jumlah triple yang memenuhi persamaan (2) adalah m. Tunjukkan indeks semua triple tersebut sebagai Jika i 1, i 2 dan i 3 memenuhi persamaan (2), penjumlahan v i1 + v i2 + v i3 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 (Z 1, Z 2,..., Z m ) bertindak sebagai word yang diterima untuk C3. Karena korelasi antara z i dan v i, kita dapat menuliskan z i = v i + e i, di mana e i adalah variabel biner acak dengan..., E m ), di mana. Definisikan vektor error untuk C3 sebagai (E 1, E 2, Karena e i 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 p 3 0.49988 Terakhir, kita mendekode C 3 menggunakan Maximum Likehood decoding (ML-decoding). Algoritma ini menghasilkan sebuah codeword dari C 3 yang terdekat dengan (Z 1,Z 2,...,Z m ). Dari codeword ini, kita mendapatkan k bit initial state LFSR d. 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 LFSR d. Ditinjau dari kasus LILI 128, ketika LFSRd di-clock menggunakan barisan c, kita membutuhkan sedikit modifikasi serangan. Karena P(c i = j) = 0.25 untuk j = 1, 2, 3, 4, LFSR d di-clock rata-rata 2.5 kali antara output berurutan. Sehingga, jika kita mengobsevasi N simbol keystream, maka LFSR d telah di-clock M
kali, di mana M 2.5 N. Barisan c menentukan simbol N mana dari d 1, d 2,..., d M 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(M 2 ) tabel lookup. Dari setiap initial state LFSR c yang mungkin memilih N posisi dan dari himpunan persamaan dari bentuk (2) kita bisa mengatakan bahwa initial state LFSRc yang ditebak adalah valid.