• Tidak ada hasil yang ditemukan

Non-Linear Feedback Shift Register (NLFSR)

Mudah untuk membayangkan suatu rangkaian umpan balik (feedback) yang lebih rumit daripada yang digunakan LFSR atau FCSR. Masalahnya adalah tidak terdapat suatu teori matematika untuk menganalisanya. Secara khusus, beberapa masalah dengan rangkaian umpan balik shift register nonlinear adalah : a. Mungkin terdapat prasangka (bias), seperti terdapat lebih banyak 1 daripada 0

atau lebih sedikit langkah daripada yang diharapkan pada keluaran.

b. Periode maksimum dari rangkaian mungkin jauh lebih rendah daripada yang diharapkan.

c. Periode rangkaian dapat berbeda untuk nilai awal yang berbeda.

d. Rangkaian dapat muncul secara acak untuk sesaat, tetapi kemudian terjadi “dead end” pada suatu nilai tunggal. Ini dapat diselesaikan dengan meng-XOR-kan fungsi nonlinear dengan bit paling meng-XOR-kanan.

Karena tidak ada teori untuk menganalisis sisi keamanan umpan balik nonlinear shift register, maka terdapat sedikit perangkat (tool) kriptanalis stream cipher yang didasarkan padanya. Oleh karena itu, dapat digunakan umpan balik nonlinear shift register pada rancangan stream cipher, tetapi harus berhati-hati dalam menggunakannya.

Dalam sebuah umpan balik nonlinear shift register, fungsi umpan balik dapat berupa apa saja yang diinginkan seperti terlihat pada contoh sederhana dalam Gambar 2.1 berikut ini.

Gambar 2.1 Non-Linear Feedback Shift Register Sumber: Munir, 2010

Keterangan gambar 2.1 :

a. Nilai feedback dari NLFSR diatas dapat dihasilkan dari perhitungan berikut ini:

= (S5 ⊕ S6) ∨ (S2 . S3) b. Hasil output : S0

2.4. Linear Feedback Shift Register (LFSR)

“Suatu Linear Feedback Shift Register (LFSR) adalah suatu mekanisme untuk menghasilkan bit” (Kurniawan, 2011: 71). Register memiliki sebarisan sel yang ditentukan oleh vektor inisialisasi yang biasanya menjadi kunci rahasia. Tingkah laku register diatur oleh sebuah counter (clock). Pada setiap saat isi sel dari register digeser (shift) ke kanan sejauh satu posisi, dan hasil operasi XOR terhadap subset dari isi sel ditempatkan pada sel paling kiri. Satu bit dari output biasanya diturunkan selama prosedur update ini.

Adapun contoh sederhana dari LFSR dapat dilihat pada gambar 2.2 berikut ini :

Gambar 2.2 Linear Feedback Shift Register (LFSR) Sumber: Munir, 2010

Keterangan gambar 2.2 :

a. Nilai feedback dari LFSR : S1 ⊕ S3

b. Hasil output : S0

LFSR cepat dan mudah untuk diimplementasikan baik secara hardware maupun secara software. Akan tetapi, ukuran bilangan yang dihasilkan oleh LFSR tunggal tidak cukup aman karena memungkinkan analisis yang mudah terhadap hasil tersebut. Namun demikian, LFSR sangat berguna sebagai blok bangunan dalam sistem yang lebih aman.

Suatu shift register cascade merupakan sebuah set dari LFSR-LFSR yang dihubungkan bersama-sama dengan cara tertentu sedemikian hingga keadaan dari LFSR sebelumnya dalam bentuk aliran. Sifat dan tingkah laku yang saling tergantung ini biasanya ditempuh dengan menggunakan satu LFSR untuk mengontrol LFSR berikutnya.

2.4.1. Implementasi LFSR

LFSR dapat digunakan sebagai pengaman pada komunikasi CDMA dan GSM. Mayoritas sistem enkripsi militer menggunakan sistem LFSR dengan

desain yang dirahasiakan, karena mudah diimplementasikan pada perangkat keras namun sangat tidak efisien untuk diimplementasikan pada perangkat lunak. Bayangkan untuk mengenkrip 8 karakter (64 bit) diperlukan waktu 64 langkah untuk menghasilkan 64 bit kunci sebelum enkripsi XOR dapat dilakukan. Tentu ini perbandingan relatif antara implementasi pada perangkat keras dan perangkat lunak. Sebab, dengan kecepatan prosesor yang ada sekarang ini, LFSR tentu akan sangat cepat dijalankan.

Di antara implementasi LFSR, yang menarik untuk dipelajari adalah Algoritma A5. A5 merupakan stream cipher yang digunakan untuk mengamankan percakapan telepon selular GSM. A5 merupakan cipher buatan Perancis, demikian pula GSM merupakan telepon selular standar Eropa.

A5 merupakan stream cipher yang terdiri dari 3 buah LFSR yang dikontrol oleh klok dengan derajat 19, 22 dan 23. Atau dengan kata lain, memiliki LFSR 19 bit, 22 bit dan 23 bit. Masing-masing LFSR memiliki periode berturut-turut 219 – 1, 222 – 1 dan 223 – 1.

Stream cipher A5 memiliki beberapa sifat yang dapat dirincikan sebagai berikut:

1. Pengontrol klok merupakan fungsi dari bit tengah dari setiap register geser. 2. Jumlah derajat dari ketiga register geser adalah 64 (19 + 22 + 23). Kunci sesi

64 bit digunakan untuk melakukan inisialisasi isi register geser.

3. Dua aliran bit (114 bit) dihasilkan untuk setiap frame yang di-XORkan dengan kanal trafik uplink (dari HP ke sentral) dan downlink (dari sentral ke HP). 4. Dirumorkan bahwa algoritma A5 hanya mempunyai panjang kunci efektif 40

2.4.2. Serangan Terhadap LFSR

Analisis stream cipher lebih mudah daripada analisis block cipher. Sebagai contoh, parameter untuk melakukan analisis generator berbasis LFSR adalah linear complexity (kompleksitas linier). Parameter ini didefinisikan sebagai panjang n yang merupakan panjang register LFSR terpendek, yang dapat menirukan keluaran generator aslinya. Semua deretan selalu dibangkitkan oleh mesin keadaan terbatas dengan kompleksitas linier yang terbatas pula. Kompleksitas linier ini digunakan untuk membangkitkan LFSR tiruan setelah memeriksa 2n bit keluaran LFSR aslinya. Bila dapat membangkitkan LFSR ini, maka berarti telah dapat memecahkan sandi rahasia stream cipher.

Tentu saja sebelum dapat menerka isi generatornya, terlebih dahulu harus mendapatkan urutan keluaran generator tersebut. Dan untuk mengetahui urutan keluaran generator tersebut dapat digunakan analisis kode rahasia yang telah diuraikan sebelumnya.

Untuk meningkatkan keamanan LFSR dilakukan peningkatan kompleksitas linier, yang dapat dilakukan dengan beberapa variasi. Diantaranya dengan menggunakan beberapa LFSR dan mengkombinasikan keluarannya, atau memberi klok tidak pada saat yang bersamaan di antara LFSR tersebut. Sejumlah besar LFSR yang sangat kompleks telah dapat dipecahkan susunan register dan umpan baliknya, sehingga tidak aman untuk kriptografi. Tentu saja institusi militer semacam NSA (National Security Agency) dapat memecahkan lebih banyak lagi.

2.5. Feedback with Carry Shift Register (FCSR)

FCSR hampir sama dengan LFSR, yaitu sama-sama memiliki sebuah register geser dan sebuah fungsi feedback. Perbedaannya adalah FCSR memiliki sebuah carry register. FCSR menjumlahkan beberapa bit bersama-sama dan hasilnya disimpan dalam carry register. Bit baru dihasilkan dari hasil modulo 2 dari bit dalam carry register. Hasil penjumlahan dalam carry register dibagi 2 merupakan nilai bit baru dari carry register.

Agar lebih jelas, simaklah contoh sederhana dari FCSR pada gambar 2.3 berikut ini :

Gambar 2.3 Feedback with Carry Shift Register Sumber: Schneier, 2011

Keterangan gambar 2.3:

1. Sum = (b0 + b1) + nilai carry register. 2. Nilai feedback dari FCSR : Sum mod 2. 3. Nilai carry register : Sum div 2.

Beberapa hal yang perlu diperhatikan dalam FCSR(Feedback with Carry Shift Register), antara lain :

2. Ukuran dari carry register minimal harus sebesar log2t, di mana t adalah banyak bit yang dilakukan operasi penjumlahan.

3. Dalam FCSR, terdapat sebuah transisi awal sebelum FCSR tersebut memasuki sebuah periode perulangan.

4. Periode maksimum dari FCSR adalah q – 1, dimana q adalah connection integer. Nilai ini dapat didefinisikan sebagai berikut :

q = 2q1 + 22q2 + 24q4 + … + 2nqn – 1

Namun, tidak semua keadaan awal dapat menghasilkan periode maksimum. Sebuah keadaan awal akan menghasilkan satu dari empat hal berikut ini :

1. Keadaan tersebut merupakan bagian dari periode maksimum.

2. Setelah sebuah transisi awal, akan menghasilkan periode maksimum. 3. Setelah sebuah transisi awal, akan menghasilkan sebuah sekuens dari 0. 4. Setelah sebuah transisi awal, akan menghasilkan sebuah sekuens dari 1.

Sampai saat ini, belum banyak ditemukan FCSR stream cipher dalam literatur, teori ini masih terlalu baru. Namun, karena ketertarikannya dan untuk menjaga agar perkembangan terus berlanjut, Bruce Schneier mengemukakan beberapa generator di dalam bukunya yang berjudul “Applied Cryptography”.

Bruce Schneier membagi FCSR stream cipher ke dalam 2 bagian besar, yaitu :

1. FCSR stream cipher yang menggunakan struktur generator yang sama dengan generator LFSR. Teori mengenai generator LFSR ini telah dibahas dalam sub bagian LFSR sebelumnya.

2. Stream cipher yang menggunakan FCSR dan LFSR. Generator ini memiliki beberapa jenis kombinasi, antara lain :

a. LFSR/FCSR Parity Generator. Registernya merupakan sebuah campuran dari LFSR dan FCSR dan fungsi kombinasinya adalah XOR.

b. LFSR/FCSR Threshold Generator. Registernya merupakan sebuah campuran dari LFSR dan FCSR dan fungsi kombinasinya adalah fungsi mayoritas.

c. LFSR/FCSR Summation Generator. Registernya merupakan sebuah campuran dari LFSR dan FCSR dan fungsi kombinasinya adalah penjumlahan dengan carry.

d. FCSR/LFSR Stop-and-Go Generator. Register-1 adalah sebuah FCSR, dan Register-2 dan -3 adalah LFSR. Operasi kombinasinya adalah penjumlahan dengan carry.

e. LFSR/FCSR Stop-and-Go Generator. Register-1 adalah sebuah LFSR, dan Register-2 dan -3 adalah FCSR. Operasi kombinasinya adalah penjumlahan dengan carry.

f. FCSR/LFSR Shrinking Generator. Sebuah shrinking generator dengan sebuah LFSR menyusutkan (shrinking) sebuah FCSR.

g. LFSR/FCSR Shrinking Generator. Sebuah shrinking generator dengan sebuah FCSR menyusutkan (shrinking) sebuah LFSR.

h. LFSR/FCSR Summation/Parity Cascade atau disebut juga Concoction Generator. Generator ini merupakan hasil kombinasi antara LFSR/FCSR Summation Generator dan LFSR/FCSR Parity Generator dengan

menggunakan Gollmann Cascade. Teori mengenai generator ini akan dibahas pada pembahasan berikutnya.

2.6. Concoction Generator

Teori yang menyatakan bahwa penambahan dengan carry menghancurkan properti aljabar dari LFSR dan XOR menghancurkan properti aljabar dari FCSR diterapkan oleh generator ini. Generator ini menggabungkan LFSR/FCSR Summation Generator dan LFSR/FCSR Parity Generator dengan menggunakan Gollmann Cascade. Generator ini merupakan sebuah gabungan dari array register, dengan clock dari setiap array dikontrol oleh output dari array sebelumnya. Array pertama dari LFSR di-clock dan hasilnya dikombinasikan dengan menggunakan penambahan dengan carry. Jika output dari hasil fungsi kombinasi ini adalah 1, maka array selanjutnya dari FCSR di-clock dan output dari FCSR tersebut dikombinasikan dengan output dari hasil fungsi kombinasi sebelumnya dengan menggunakan XOR.

Jika output dari fungsi kombinasi pertama adalah 0, maka array dari FCSR tidak di-clock dan outputnya adalah hasil penambahan dari proses sebelumnya. Demikian proses tersebut akan berlanjut hingga selesai. Generator ini menggunakan sejumlah register yaitu sebanyak n * m, dimana n adalah jumlah stage dan m adalah jumlah register per stage. Bruce Schneier merekomendasikan n = 10 dan m = 5.

Sketsa satu stage dari generator ini dapat dilihat pada gambar 2.4 berikut ini:

Gambar 2.4 Sketsa Gambar Concoction Generator Sumber: Schneier, 2011

Dokumen terkait