Twofish adalah algoritma kriptografi yang beroperasi dalam mode block cipher. Twofishmenjadi salah satu finalis dalam kompetisi Advanced Encryption Standar(AES) yang diadakan oleh National Institute of Standars and Technology (NIST). Twofish adalah block cipheryang berukuran 128 bit yang dapat menerima kunci dengan panjang mencapai 256 bit.
Foto: Pixabay |
Tahapan-tahapan pada algoritma Twofish lebih jelasnya adalah sebagai berikut :
1. Bit masukan disebut sebagai P0, P1, P2, dan P3. P0 dan P1 akan menjadi bagian kiri, dua lainnya akan menjadi masukan pada bagian kanan.
2. Kemudian akan melalui proses whitening.
3. Bagian kiri akan menjadi masukan untuk fungsi f, P0 akan langsung menjadi masukan bagi fungsi g, sementara P1 akan di-rotate 8 bitsebelum diproses oleh fungsi g.
4. Didalam fungsi g, bit-bit tersebut akan melalui S- box dan matriks MDS, kemudian kedua keluaran akan digabungkan oleh PHT.
5. Setelah melalui PHT, kedua bagian tersebut akan ditambah dengan bagian dari kunci sesuai dengan iterasi yang telah dilewati. Untuk keluaran dari fungsi f dengan input P1 akan ditambah dengan K2r+8. Untuk keluaran dari fungsi f dengan input P1 akan ditambah dengan K2r+9, dimana r adalah jumlah iterasi yang telah dilewati. Masing-masing ditambah delapan dan sembilan karena delapan urutan awal sudah digunakan untuk whitening input dan output.
6. Keluaran dari fungsi f dengan input P0 akan di-XOR dengan P2, kemudian hasil XOR tersebut akan di-rotate 1 bit.
7. Keluaran dari fungsi f dengan input P1 akan di-XOR dengan P3, namun P3 sebelumnya di-rotate 1 bit terlebih dahulu.
8. Setelah perhitungan bit selesai, bagian kanan yang telah dihitung tadi akan menjadi bagian kiri dan bagian kiri yang belum dihitung akan menjadi bagian kanan.
9. Kemudian setelah 16 iterasi, akan dilakukan whitening terhadap keluarannya. Whiteningpada output akan meng-undo pertukaran bagian kanan dan bagian kiri pada iterasi terakhir, dan melakukan XOR data dengan 4 bagian kunci, Ci = R16,(i+2)mod 4 Ki+4 i = 0, ..., 3Bagian kunci yang digunakan disini berbeda dengan bagian kunci yang akan digunakan saat whitening pada input. Oleh karena itu urutan bagian kunci yang dipakai ditambah empat, karena empat urutan bagian kunci satu sampai empat sudah terlebih dahulu digunakan untuk whitening pada input.
10. Keempat bagian cipherteks tersebut kemudian ditulis menjadi 16 byte C0, ..., C15 menggunakan konversi little-endian seperti pada plainteks.
0 Komentar