Budiy • Upvote 0 • Downvote 0

Alasan Algoritme Enkripsi Vernam Cipher Tidak Mungkin Dipecahkan

Kita bahas terlebih dahulu mengenai sejarah dan cara kerja algoritme enkripsi Vernam Cipher. Berdasarkan buku karangan William Stallings berjudul "Cryptography and Network Security (4th Edition)", penemu dari algoritme enkripsi Vernam Cipher yaitu seorang insinyur bernama Gilbert Vernam pada tahun 1918. Proses komputasi enkripsi Vernam Cipher dilakukan pada data biner.


Enkripsi pada umumnya tersusun dari 3 jenis data yaitu plaintext, key, dan ciphertext. Plaintext bisa dianggap sebagai sebuah pesan asli. Ciphertext bisa dianggap sebagai hasil jadi dari pesan yang telah dienkripsi. Key bisa dianggap sebagai unsur atau kunci yang mempengaruhi hasil jadi ciphertext.


Seorang pimpinan pasukan tentara bernama Joseph Mauborgne mengusulkan adanya peningkatan pada algoritme enkripsi Vernam Cipher. Mauborgne mengusulkan sebuah konsep bernama One-Time Pad yang mengatur bahwa key dibuat secara acak, sehingga tidak ada pengulangan penggunaan key. Jadi, key akan dibuang ketika sudah dipakai untuk proses enkripsi atau dekripsi. Selain itu panjang key dibuat sama dengan panjang plaintext.


kumpulan angka biner dalam enkripsi
kumpulan angka biner dalam enkripsi
Source: pixabay geralt

Berikut ini rumus enkripsi Vernam Cipher:

Ciphertext = Angka biner dari Plaintext dilakukan XOR dengan angka biner dari Key

Plaintext = Angka biner dari Ciphertext dilakukan XOR dengan angka biner dari Key


1. Ciphertext tidak memiliki karakteristik yang unik

Pada umumnya, ciphertext pada algoritme enkripsi memiliki karakteristik yang unik sehingga bisa dihasilkan sebuah kumpulan statistik. Vernam Cipher tidak memiliki karakteristik khusus dan ciphertext tidak memiliki hubungan statistik yang unik. Angka biner terdiri dari sekumpulan angka nol dan satu. Sekumpulin angka biner antara plaintext, key, dan ciphertext pada Vernam Cipher memiliki karakteristik yang sama. Tidak adanya perbedaan karakteristik membuat peretas keamanan kesulitan untuk menghasilkan perbedaan statistik pada setiap chipertext.


Contoh karakteristik dari algoritma enkripsi Caesar Cipher:

Ciphertext: dnx vxnd ndpx


Dari contoh ciphertext caesar cipher di atas dapat diidentifikasi bahwa ciphertext terdiri dari 3 kata yang ditandai dengan adanya spasi sebagai pemisah kata. Kata pertama terdiri dari 3 karakter, kata kedua terdiri dari 4 karakter, kata ketiga juga terdiri dari 4 karakter. Pada Vernam Cipher, setiap chipertext tidak dapat diidentifikasi karena nantinya tidak hanya karakter huruf alfabet saja yang dienkripsi. Pada Vernam CIpher, seluruh karakter lain seperti spasi, tanda titik, dan lain sebagainya juga akan dilakukan enkripsi karena juga memiliki kode biner yang berbeda.


2. Hasil ciphertext tidak unik

Pada umumnya, setiap algoritme enkripsi memiliki ciphertext yang unik. Dengan kata lain bahwa 1 ciphertext hanya bisa dihasilkan dari 1 permutasi plaintext dan key. Pada algoritme vernam cipher, ciphertext bisa dihasilkan dari banyak permutasi sehingga sulit untuk menentukan key yang sesungguhnya digunakan. Panjang plaintext dan key adalah sama sehingga bisa juga dikatakan bahwa panjang ciphertext juga sama.


Contoh karakteristik yang sama pada biner Vernam Cipher:

1 XOR 0 = 1

0 XOR 1 = 1

1 XOR 1 = 0

0 XOR 0 = 0


Jadi 1 angka biner bisa dihasilkan dari 2 permutasi. Jika menggunakan biner 8 bit maka total permutasi angka biner yaitu 256 (2 pangkat 8). Plaintext, key dan ciphertext memiliki karakteristik yang sama. Jika dimisalkan ciphertext terdiri dari 8 bit biner dapat dihasilkan dari 256 permutasi maka itu berlaku juga pada key dan plaintext.


Di bawah ini merupakan contoh source code enkripsi dan source code bruteforce dekripsi Vernam Cipher menggunakan bahasa pemrograman PHP.


Enkripsi Vernam Cipher


<?php
$plaintext="01100001";//ganti dengan biner plaintext yang diinginkan
$key="01100011";//ganti dengan biner key yang diinginkan
$ciphertext="";
for($i=0;$i<strlen($plaintext);$i++){
$temp=(int)$plaintext[$i]^(int)$key[$i];
$ciphertext.=$temp;
}
echo $ciphertext."\n";//00000010
?>

Jika kode di atas dijalankan di terminal maka akan menampilkan output yaitu "00000010" yang didapatkan dari hasil XOR antara "01100001" dan "01100011".


Bruteforce Vernam Cipher


<?php
//fungsi untuk generate seluruh permutasi biner 8 bit (2 pangkat 8) dan mengecualikan biner dari ciphertext
function get_kemungkinan_key($ciphertext){
$biner=Array("0","1");
$hasil=Array();
$panjang=count($biner);
for($a=0;$a<$panjang;$a++){
for($b=0;$b<$panjang;$b++){
for($c=0;$c<$panjang;$c++){
for($d=0;$d<$panjang;$d++){
for($e=0;$e<$panjang;$e++){
for($f=0;$f<$panjang;$f++){
for($g=0;$g<$panjang;$g++){
for($h=0;$h<$panjang;$h++){
$val=$biner[$a].$biner[$b].$biner[$c].$biner[$d].$biner[$e].$biner[$f].$biner[$g].$biner[$h];
if($val!==$ciphertext){
array_push($hasil,$val);
}
}
}
}
}
}
}
}
}
return $hasil;
}
$ciphertext="00000010";//ganti dengan biner ciphertext yang diinginkan
$key=get_kemungkinan_key("");
$plaintext=get_kemungkinan_key($ciphertext);
$hasil=Array();
$kemungkinan_key=Array();
$kemungkinan_plaintext=Array();
foreach($key as $k=>$vk){
foreach($plaintext as $p=>$vp){
$vernam="";
for($i=0;$i<strlen($ciphertext);$i++){
$temp=(int)$vk[$i]^(int)$vp[$i];
$vernam.=$temp;
}
$decimal_k=bindec($vk);
$hexa_k=dechex($decimal_k);
$asci_k=chr($decimal_k);
$decimal_p=bindec($vp);
$hexa_p=dechex($decimal_p);
$asci_p=chr($decimal_p);
if($vernam==$ciphertext){
array_push($hasil,$vernam);
if($vk!=$ciphertext){
array_push($kemungkinan_key,$vk);
}
if($vp!=$ciphertext){
array_push($kemungkinan_plaintext,$vp);
}
// echo $vk."(".$asci_k.") ^ ".$vp."(".$asci_p.") = ".$vernam."\n";
echo $vk." ^ ".$vp." = ".$vernam."\n";
}
}
}
?>

Jika kode di atas dijalankan di terminal maka akan menampilkan seluruh kemungkinan untuk menghasilkan ciphertext tersebut. Karena kemungkinan yang dihasilkan begitu banyak sesuai panjang ciphertext maka dapat mengakibatkan para peretas mengalami kesulitan untuk menentukan key mana yang dimaksud.


Dari hasil kode program di atas dapat disimpulkan bahwa 1 ciphertext dapat dihasilkan dari banyak kemungkinan. Semakin panjang plaintext maka ciphertext juga semakin panjang sehingga jumlah kemungkinan juga akan meningkat. Itulah kenapa algoritme Vernam Cipher menjadi tidak mungkin atau sangat sulit untuk dipecahkan. Sangat sulit bahkan tidak mungkin untuk bisa mengetahui key yang sebenarnya karena tidak adanya karakteristik yang unik.


Tidak ada cara perhitungan matematika atau logika yang dapat digunakan untuk memecahkan algoritme Vernam Cipher. Hanya ada 1 cara untuk memecahkan algoritme Vernam Cipher yaitu dengan mengandalkan tebakan keberuntungan. Walaupun dikatakan tidak mungkin dipecahkan tetapi di dunia ini tidak ada yang tidak mungkin.

Anda harus sudah login untuk berkomentar di thread ini
Artikel Terkait
projek skripsi
Projek: Enkripsi Vernam Cipher Dan Distribusi Kunci Three-Pass Protocol

Ini adalah projek berupa dua buah sistem yang dapat digunakan untuk komunikasi [i]chatting[/i] secara offline menggunakan jaringan radio. Dikarenakan sifatnya yang offline sehingga komunikasi chatting dapat dilakukan tanpa perlu menggunakan pulsa ata...


Penulis: sadboy
musik klasik
Ada Musik, Tidak Tahu Info Musiknya, Begini Mencarinya

Musik tidak dapat dipisahkan dari kehidupan kita. Kemanapun kita melangkah akan terasa sepi dan sunyi jika tidak ditemani dengan musik. Jadi, musik sangat cocok didengarkan ketika sedang berada di sebuah tempat yang sepi dan hening. Misalnya jika kal...


Penulis: sama
memasak makanan sehat
7 Manfaat Sarapan Sehat Yang Tidak Boleh Anda Lewatkan Setiap Hari

Makanan merupakan salah satu kebutuhan utama manusia. Idealnya, manusia makan 3 kali dalam sehari. Hal ini tentu untuk memberikan energi agar dapat beraktivitas. Tanpa asupan makanan, maka tubuh tidak akan bergairah melakukan apapun. Maka dari itu An...


Penulis: ayua
agar tanaman hias tidak layu
Cara Merawat Tanaman Hias Paling Gampang Agar Tidak Cepat Layu

Anda tetap bisa mempraktikkan cara merawat tanaman hias untuk halaman rumah meskipun lokasi tidak mendukung. Menanam tanaman hias atau berkebun sayur-sayuran selalu identik dengan aktivitas di desa. Siapa sangka bahwa naluri menanam ini bisa Anda tua...


Penulis: ayua
lubang cacing
Terfavorit, Inilah Alasan Game Cacing Sangat Digemari

Hampir seluruh orang di dunia terkena wabah cacing yang sangat fenomenal. Salah satu game yang sedang naik daun belakangan ini ialah permainan cacing. Meskipun sudah terkenal sejak beberapa tahun silam, namun ternyata permainan dengan tema hewan meng...


Penulis: ayua
Artikel Lainnya dari Budiy
anonymous hacker
3 jenis klasifikasi hacker yang perlu dipahami

Kegiatan hacking atau peretasan sudah dimulai sejak tahun 1960-an. Penggunaan switch telepon pada masa itu menggunakan berbagai macam nada untuk menunjukkan aktivitas apa yang sedang dikerjakan. Seorang hacker menyadari bahwa dengan meniru nada mengg...


Penulis: sadboy
perempuan pergi meninggalkanku
Lirik lagu The Middle East - Blood terjemahan Indonesia

Berikut ini lirik lagu dari "The Middle East - Blood" disertai dengan terjemahan lirik dalam bahasa Indonesia. Lagu tersebut juga menjadi soundtrack dari film romance "Crazy, Stupid, Love - (2011)". [file]image/265[/file]...


Penulis: sadboy
vnc laptop linux melalui iphone
Cara remote komputer dengan OS Linux melalui iPhone menggunakan VNC

Pada tutorial kali ini kita akan fokus membahas mengenai cara remote komputer OS Linux berbasis distro Debian melalui perangkat iPhone menggunakan Virtual Network Computing (VNC). Pada umumnya konfigurasi remote antara komputer dan perangkat mobile m...


Penulis: sadboy
mengedit video
Kompres ukuran file video x264 tanpa mengurangi kualitas dengan FFmpeg

Tutorial ini difokuskan pada kalian yang ingin melakukan kompres file video dengan format x264 atau H.264 pada Sistem Operasi Linux dengan distro Debian. Format x264 merupakan format video yang banyak didukung pada berbagai macam perangkat. Pada umum...


Penulis: sadboy
pengiriman email
Kirim Email Melalui Gmail Dengan Alamat Pengirim Dari Google Domain

Mengirim email dengan alamat pengirim seperti [email protected] sudah biasa bukan ? Lalu bagaimana jika kita ingin mengirim email tetapi alamat pengirim menggunakan domain kita sendiri misalnya [email protected] ? Kalian bisa setup email sendir...


Penulis: sadboy