Cara Kerja Algoritma Tranposisi Segitiga (Triangle Transposition Cipher)


Berdasarkan cara kerja teknik kriptografi dalam menyandikan data, maka kriptografi dapat dikelompokkan menjadi dua, yaitu Teknik Subtitusi dan Teknik Transposisi. Teknik subtitusi merupakan teknik penyandian dengan melakukan penukaran (subtitution) karakter menjadi karakter yang lain, sedangkan teknik transposisi (transpose = perubahan posisi) merupakan teknik penukaran posisi-posisi atau letak dari karakter-karakter data asli. Proses teknik subtitusi dapat diidentikkan seperti teknik pengacakan lokasi elemen-elemen pembentuk data. Misalnya bila data yang diamankan adalah teks, maka yang ditransposisikan adalah posisi-posisi dari karakter-karakter pembentuk teks tersebut.


Perbedaan yang mendasar antar teknik subtitusi dengan teknik transposisi adalah terletak pada hasil yang didapatkan. Teknik subtitusi akan menghasilkan karakter-karakter yang baru sebagai sandi dengan posisi/letak tetap (tidak berubah), sedangkan teknik transposisi akan menghasilkan karakter-karakter sandi yang masih sama dengan karakter-karakter asli, namun susunan posisi karakter sudah teracak. Beberapa algoritma kriptografi yang bekerja berdasarkan teknik subtitusi ada kalanya menyebabkan penambahan elemen data asli untuk memenuhi proses pengelompokkan atau batas-batas transpose yang ditentukan. Coba kita perhatikan gambar di bawah ini :
Salah satu algoritma kriptografi yang bekerja berdasarkan teknik subtitusi adalah algoritma Triangel Transposition Cipher (Cipher Transposisi Segitiga). Algoritma ini bekerja dengan meletakkan elemen-elemen data ke dalam Pola Segitiga Sama Sisi. Seperti yang sudah kita pelajari sebelumnya bahwa sebuah segitiga sama sisi memiliki sisi kiri dan kanan yang sama, alas dan puncak segitiga. Puncak dari segitiga pada algoritma ini akan dijadikan sebagai KUNCI yang digunakan pada Proses DEKRIPSI. Agar memudahkan pemahaman kita, maka saya gambarkan pola segitiga-nya dalam bentuk baris dan kolom seperti pada gambar di bawah ini :
Berdasarkan pola segitiga di atas, maka dapat dilihat bahwa puncak segitiga berada pada baris ke-1 kolom ke-4. Nilai Kunci DEKRIPSI adalah Nilai Posisi Kolom Puncak Segitiga (dalam pola di atas Kunci Dekripsi adalah 4). Hal yang berbeda pada penerapan algoritma ini adalah penentuan kunci baru dapat dilakukan setelah pola segitiga-nya telah terbentuk. 

PROSES ENKRIPSI
Ada dua proses utama dalam proses enkripsi berdasarkan algoritma transposisi segitiga ini, yaitu proses pembentukan pola segitiga dan proses kedua adalah proses pembentukan ciphertext.

Proses Pembentukan Pola Segitiga :
Proses ini meliputi proses pembentukan pola segitiga sama sisi, penginputan karakter ke dalam pola dan penentuan kunci proses dekripsi.

Dalam contoh kasus ini, saya mencoba mengimplementasikan algoritma transposisi segitiga ini untuk menyandikan data teks.

Plaintext = STMIK_BUDIDARMA_MEDAN

Proses penginputan karakter-karakter tersebut ke dalam pola segitiga, dimulai dari puncak segitiga baru disusul pembentukan sisi kiri dan kanan hingga terbentuk pola segitiga sama sisi yang utuh (ingat...!! pola segitiga SAMA SISI, buka segitiga yang PINCANG....hahahah).

Langkah pertama yang dilakukan adalah meletakkan karakter pertama (huruf S) sebagai puncak segitiga. Perhatikan gambar di bawah ini :
Setelah itu disusul oleh proses pembentukan sisi kiri dan kanan. Letakkan di bawah baris puncak tambahkan 1 kolom ke kiri kolom puncak dan 1 kolom ke kanan kolom puncak. Sehingga baris di bawah baris puncak tebentuk menjadi 3 kolom, perhatikan gambar di bawah ini :
Silahkan anda tambahkan lagi baris berikutnya, dengan menambahkan 2 kolom di samping kiri dan 2 kolom di samping kanan (kita tetap mulai dari posisi kolom PUNCAK SEGITIGA. Kemudian inputkan karakter-karakter selanjutnya ke dalam kolom baris yang telah terbentuk.

Lakukan hingga semua karakter dari plaintext telah terinput ke dalam pola segitiga. Bila terdapat kolom yang tidak memiliki karakter akibat kekurangan jumlah karakter plaintxt, maka Tambahkan Dengan Karakter Lain yang Sejenis (sama).....(Ini HARUS DIINGAT dan DILAKUKAN...).
Hasilnya dapat dilihat pada gambar di bawah ini :
Berdasarkan pola segitiga yang telah terbentuk di atas, maka Puncak segitiga berada pada kolom ke-5 (dimulai dari kolom 1 dari sebelah kiri). Posisi kolom (5) akan dijadikan sebagai Nilai Kunci Proses Dekripsi.

Jadi Nilai Kunci Untuk DEKRIPSI adalah 5.

Anda perhatikan juga, bahwa pada baris yang terakhir (alas segitiga) ada 4 kolom yang isi nya adalah karakter yang sama (karakter X warna merah). Hal ini dilakukan karena ketika semua karakter plaintext telah terinput, maka masih terdapat kolom segitiga yang tidak memiliki karakter. Oleh karena itu, maka kolom tersebut diisi dengan karakter yang sejenis misalnya X (biasanya dalam komputasi digunakan karakter space (spasi) artinya karakter kosong).

Proses Pembentukan Ciphertext :
Proses penulisan ciphertext dilakukan berdasarkan pola segitiga yang telah terbentuk, yang dimulai dari baris paling terakhir (alas segitiga) kolom pertama (kolom paling kiri). Karakter-karakter yang berada pada kolom terebut dijadikan sebagai ciphertext. 
Bila kita perhatikan pada baris terakhir dan kolom pertama pola segitiga, maka huruf yang ada cell tersebut adalah huruf M (berarti ciphertext-nya dimulai dari huruf M).
Sekarang kita lihat kolom yang ke-2, pada kolom yang kedua tersebut terdapat 2 baris dan ada dua karakter yang ada, yaitu karakter I dan E. Pengambilan karakter dimulai dari setiap baris pertama pada setiap kolomnya. Oleh karena itu, maka karakter ke-2 dan 3 adalah I dan E. Lakukan cara yang sama untuk mengambil karakter pada masing-masing kolom.

Maka Ciphertext dari plaintext di atas adalah : MIEKDDT_AASMBRNIUMXDAX_XX
Perhatikan bahwa ada 4 karakter tambahan yaitu karakter X (tentu sudah paham kan kenapa terjadi penambahan karakter, seperti yang telah dijelaskan di atas tadi).


PROSES DEKRIPSI
Proses dekripsi sebenarnya adalah proses untuk mengembalikan ciphertext  menjadi plaintext. Berdasarkan algoritma ini, proses dekripsi sebenarnya adalah proses pembentukan ulang pola segitiga yang sama persis seperti pola yang dibentuk pada proses enkripsi sebelumnya. Hal yang sangat penting dalam pembentukan pola segitiga dekripsi adalah kunci dekripsi. Kunci berperan sebagai penentu posisi puncak segitiga. Kenapa menjadi penentu ? Karena bila kita menggambarkan segitiga  sama sisi dan puncaknya sudah didapatkankan, maka sudah jelas sisi kiri dan kanannya pasti berada di bawah puncak segitiga. Karena bila sisi kiri dan kanan berada di atas puncak segitiga, berarti puncak segitiga yang telah ditentukan bukan itu melainkan posisi yang paling tertinggi (posisi yang berada paling puncak). Saya pikir gampang lah kalimat saya ini dipahami ya...hehehe

Ciphertext = MIEKDDT_AASMBRNIUMXDAX_XX
Kunci Dekripsi = 5   (nilai kunci menandakan posisi kolom puncak segitiga)

Proses pembentukan pola segitiga dekripsi dimulai dari pembentukan baris alas dan kolom 1 dari alas segitiga tersebut. Karena pada proses pertama ini yang digambarkan hanya 1 baris dan 1 kolom, maka huruf yang diinput hanya 1 karakter saja.
Proses berikutnya adalah membentuk kolom yang ke-2. Untuk kolom yang ke-2, ditambahkan baris ke atasnya sebanyak 1 baris dari posisi baris sebelumnya, kemudian diinputkan karakter ciphertext ke dalamnya yang dimulai dari baris ke-1 pada kolom tersebut. Perhatikan gambar di bawah ini :
Hal yang sama anda lakukan untuk menambahkan kolom selanjutnya (ingat bahwa setiap penambahakn kolom, barisnya naik 1 baris dari baris kolom sebelumnya. Misalnya kita membentuk kolom ke-3, nah posisi barisnya dimulai satu baris di atas kolom ke-2. 

Perhatikan, ketika kita sudah sampai pada kolom yang ke-5 (posisi puncak segitiga, berdasarkan nilai kunci dekripsi), maka penulisan kolom sisi kanan segitiga bentuk dengan jumlah baris menurun dari jumlah baris kolom sebelumnya. Jadi kalau misalnya posisi puncak segitiga ada di kolom yang ke lima dengan jumlah baris 5, maka untuk kolom yang ke-6 dibentuk dengan jumlah baris = 4 (turun 1 baris dari baris kolom ke-5). 
Perhatikan gambar di bawah ini :
                                     

Lakukan hal yang sama hingga semua karakter ciphertext terinput ke dalam pola segitiga dekripsi. 

Proses pembentukan plainteks dilakukan seperti cara penginputan plainteks ke dalam pola segitiga enkripsi, yaitu dimulai dari baris puncak segitiga, kemudian disusul oleh baris berikutnya menuju ke bawah (alas segi tiga). Pengambilan karakter-karakter di setiap baris dimulai dari kolom pertama di setiap baris, kemudian disusul oleh pengambilan karakter pada kolom-kolom berikutnya pada baris itu. Intinya proses pembentukan plaintext adalah pengambilan karakter-karakter yang dimulai dari baris puncak segitiga hingga baris alas segitiga. Karakter yang diambil dimulai dari kolom pertama setiap barisnya. Hasil akhir dari proses dekripsi adalah mendapatkan plaintext seperti di bawah ini yang sama dengan plaintext sebelumnya :

Ciphertext = MIEKDDT_AASMBRNIUMXDAX_XX
Kunci Dekripsi = 5
Plaintext = STMIK_BUDIDARMA_MEDANXXXX

karakter XXXX dapat dibuang, karena hanya karakter tambahan (padding) dan bukan bagian dari plaintext.

Semoga bermanfaat....

No comments: