Algoritma gost - Catatan Reza

Breaking

Rabu, 21 September 2011

Algoritma gost

GOST merupakan blok cipher dari bekas Uni Sovyet, yang merupakan singkatan dari “Gosudarstvennyi Standard” atau Standar Pemerintah, standar ini bernomor 28147-89 oleh sebab itu metoda ini sering disebut sebagai GOST 28147-89. GOST secara struktural mirip dengan DES.
GOST merupakan
blok cipher 64 bit dengan panjang kunci 256 bit. Algoritma ini mengiterasi algoritma enkripsi sederhana sebanyak 32 putaran (round). Untuk mengenkripsi pertama-tama plainteks 64 bit dipecah menjadi 32 bit bagian kiri, L dan 32 bit bagian kanan, R. Subkunci (subkey) untuk putaran i adalah Ki. Pada satu putaran ke-i operasinya adalah sebagai berikut :

Li = Ri-1

Ri = Li-1 xor f(Ri-1,Ki)

Sedangkan pada fungsi f mula-mula bagian kanan data ditambah dengan subkunci ke-i modulus 232. Hasilnya dipecah menjadi delapan bagian 4 bit dan setiap bagian menjadi input s-box yang berbeda. Di dalam GOST terdapat 8 buah s-box, 4 bit pertama menjadi s-box pertama, 4 bit kedua menjadi s-box kedua, dan seterusnya. Output dari 8 s-box kemudian dikombinasikan menjadi bilangan 32 bit kemudian bilangan ini dirotasi 11 bit kekiri. Akhirnya hasil operasi ini di-xor dengan data bagian kiri yang kemudian menjadi bagian kanan dan bagian kanan menjadi bagian kiri (swap). Pada implementasinya nanti rotasi pada fungsi f dilakukan pada awal saat inisialisasi sekaligus membentuk s-box 32 bit dan dilakukan satu kali saja sehingga lebih menghemat operasi dan dengan demikian mempercepat proses enkripsi/dekripsi.

Subkunci dihasilkan secara sederhana yaitu dari 256 bit kunci yang dibagi menjadi delapan 32 bit blok : k1, k2, …, k8. Setiap putaran menggunakan subkunci yang berbeda. Dekripsi sama dengan enkripsi dengan urutan ki dibalik. Standar GOST tidak menentukan bagaimana menghasilkan s-box sehingga ada spekulasi bahwa sebagian organisasi di (eks) Sovyet mempunyai s-box yang baik dan sebagian diberi s-box yang buruk sehingga mudah diawasi/dimata-matai. Kelemahan GOST yang diketahui sampai saat ini adalah karena key schedule-nya yang sederhana, sehingga pada keadaan tertentu menjadi titik lemahnya terhadap metoda kriptanalisis seperti Related-key Cryptanalysis. Tetapi hal ini dapat di atasi dengan melewatkan kunci kepada fungsi hash yang kuat secara kriptografi seperti SHA-1, kemudian menggunakan hasil hash untuk input inisialisasi kunci. Kecepatan dari metoda ini cukup baik, tidak secepat Blowfish tetapi lebih cepat dari Idea. Untuk kecepatan enkripsi di memori sebesar 5MB data adalah : 3.492,620 Kbyte/detik pada Pentium Pro 200 MHz dan 2.466,700 Kbyte/detik pada Pentium MMX 200 MHz.

Pada metoda blok cipher ada yang dikenal sebagai mode operasi. Mode operasi biasanya mengkombinasikan cipher dasar, feedback dan beberapa operasi sederhana. Operasi cukup sederhana saja karena keamanan merupakan fungsi dari metoda cipher yang mendasarinya bukan pada modenya. Mode pertama adalah ECB (Electronic Codebook) dimana setiap blok dienkrip secara independen terhadap blok lainnya. Dengan metoda operasi ini dapat saja sebuah pesan disisipkan di antara blok tanpa diketahui untuk tujuan tertentu, misalnya untuk mengubah pesan sehingga menguntungkan si pembobol. Mode lainya adalah CBC (Cipher Block Chaining) dimana plainteks dikaitkan oleh operasi xor dengan cipherteks sebelumnya, metoda ini dapat dijelaskan seperti pada Gambar 1. Untuk mode ini diperlukan sebuah Initialization Vector (IV) yang akan di-xor dengan plainteks yang paling awal. IV ini tidak perlu dirahasiakan karena bila kita perhatikan jika terdapat n blok maka akan terdapat n-1 IV yang diketahui. Metoda lain yang dikenal adalah CFB (Cipher Feedback), OFB (Output Feedback), Counter Mode, dll.

Kebanyakan data tidak bulat dibagi kedalam 64 bit (8 byte), oleh sebab itu dalam blok cipher diperlukan data tambahan pada blok terakhir untuk menggenapi blok menjadi 64 bit, hal ini biasanya disebut padding. Ada beberapa cara untuk melakukan padding, salah satu caranya adalah yang disebut Ciphertext Stealing yang akan digunakan dalam aplikasi dari metoda GOST ini.

Subkunci dihasilkan secara sederhana yaitu dari 256 bit kunci yang dibagi menjadi delapan 32 bit blok : k1, k2, …, k8. Setiap putaran menggunakan subkunci yang berbeda. Dekripsi sama dengan enkripsi dengan urutan ki dibalik. Standar GOST tidak menentukan bagaimana menghasilkan s-box sehingga ada spekulasi bahwa sebagian organisasi di (eks) Sovyet mempunyai s-box yang baik dan sebagian diberi s-box yang buruk sehingga mudah diawasi/dimata-matai. Kelemahan GOST yang diketahui sampai saat ini adalah karena key schedule-nya yang sederhana, sehingga pada keadaan tertentu menjadi titik lemahnya terhadap metoda kriptanalisis seperti Related-key Cryptanalysis. Tetapi hal ini dapat diatasi dengan melewatkan kunci kepada fungsi hash yang kuat secara kriptografi seperti SHA-1, kemudian menggunakan hasil hash untuk input inisialisasi kunci. Kecepatan dari metoda ini cukup baik, tidak secepat Blowfish tetapi lebih cepat dari Idea. Untuk kecepatan enkripsi di memori sebesar 5MB data adalah : 3.492,620 Kbyte/detik pada Pentium Pro 200 MHz dan 2.466,700 Kbyte/detik pada Pentium MMX 200 MHz.