Tertarik mengembangkan algoritma kubus pada salah satu tugas mata kuliah terdahulu saya mencoba menggunakan bentukan kubus untuk membuat sebuah sistem enkripsi searah atau hash. Enkripsi searah seperti ini telah cukup populer dimanfaatkan sebagai media penyimpanan password untuk mengakses suatu sistem. Pemanfaatan enkripsi searah memungkinkan sistem menyimpan data password terenkripsi tanpa mengetahui password aslinya sehingga pengguna tidak perlu khawatir menyimpan data password tersebut pada sistem. Telah banyak enkripsi searah ditemukan dan dipergunakan, namun tidak sedikit pula yang terpecahkan metode dekripsinya sehingga tidak lagi dipergunakan.
Berbekal konsep kubus, saya mencoba mengembangkan algoritma tiga dimensi sebagaimana sebelumnya saya manfaatkan untuk metode error correction, kali ini saya manfaatkan untuk enkripsi searah. Konsepnya sederhana, kita bayangkan kubus sebagai bangun ruang yang dibelah dari titik tengahnya baik membujur, tegak dan mendatar sehingga menjadi delapan bagian yang lebih kecil, empat di atas dan empat dibawah, atau dengan sudut pandang lain empat kanan empat kiri, dan bisa juga dipandang empat di depan dan empat di belakang. Setiap potongan ini nantinya yang disimpan sebagai kata kuncinya sehingga nantinya hash akan disimpan kedalam 8 karakter saja atau 16 nible, yang membutuhkan setengah dari MD5 yang sudah umum kita gunakan.
Lalu darimana ke delapan karakter ini kita dapatkan? disini saya memandang kubus sebagai tiga dimensi yang dibatasi oleh enam bangun datar yaitu persegi di samping kanan, kiri, atas, bawah, depan dan belakang sebagai sisi-sisinya. Saya menyejajarkan sisi atas dan bawah, kanan dan kiri serta depan dan belakang yang bila dipotong dengan pembagi kubus tadi maka persegi itu akan memiliki 4 bagian yang sama. Di masing-masing bagian inilah kata kunci saya simpan sehingga di setiap sisi sejajar akan ada 4 komponen masukan, dengan adanya 3 posisi kesejajaran persegi tersebut maka akan ada 3×4 karakter kunci sebagai masukan yaitu 12.
Proses hash dilakukan dengan menggunakan operasi XOR yang telah sangat populer digunakan pada enkripsi. Sehingga nantinya setiap potongan pada kubus akan diisi XOR dari tiga elemen yang sisinya tepat menempel pada kubus tersebut. Misal kubus pada depan kiri atas maka merupakan XOR dari sisi depan paling kiri atas, sisi atas paling kiri depan dan sisi kiri paling depan atas, begitu sederhana.
Lalu bagaimana bila kata kuncinya lebih dari 12 karakter atau kurang dari 12 karakter? kita bisa gunakan konsep semacam shift register, sehingga bila lebih karakter ke 13 akan di XOR kan dengan pertama untuk mendapatkan kunci pertama, dan seterusnya. Dan bila kurang misal hanya 7 karakter, maka kita bisa kembali memanfaatkan karakter pertama sebagai karakter ke 8 dan seterusnya. Sebagai tambahan, setiap sistem bisa memiliki kunci private tersendiri yang biasa disebut dengan salt. Salt bisa dibuat dengan memberlakukan 12 karakter sebagai kunci yang di XOR kan dengan kesemua kunci hasil input sebelum diproses pada kubus sehingga setiap sistem yang memanfaatkan enkripsi ini bisa menghasilkan ciphertext yang berbeda-beda.
Seperti biasa anda dapat mencobanya disini atau anda dapat membandingkan dengan enkripsi lain disini
Sebelum melangkah membuat algoritma ini, saya sudah membayangkan bahwa algoritma ini sangat luas penggunaanya, kita masih bisa mengembangkan lebih jauh lagi. Disini saya ambil contoh yang paling sederhana dengan kubus dibelah dua dari tiga arah irisan sehingga setiap sisi ada empat komponen dan isi kubus itu sendiri menjadi delapan. Kita bisa coba dengan dua irisan sehingga sisi dibelah menjadi tiga mendatar dan tiga tegak yang menjadikan setiap sisi memiliki 9 komponen yang berarti ada 27 karakter masukan kata kunci dan kubus akan memiliki 27 pecahan kubus kecil sehingga enkripsi akan disimpan dalam 27 karakter atau 74 nible lebih banyak dari MD5. Atau bila anda cukup iseng silahkan coba bila diiris menjadi 5 bagian mendatar dan 5 tegak sehingga akan ada 75 karakter masukan kata kunci dan disimpan menjadi 125 karakter atau 250 nible.
Bingung? inilah indahnya kriptografi…



![Loenpia[dot]Net](http://i459.photobucket.com/albums/qq319/alcatrazia/loenpia-tag-1.gif)


Comments