Profil

Kamis, 27 Juni 2013

Algoritma Kriptograpi Klasik

Sejarah dan Pengertian Kriptografi, Berasal dari akar kata Yunani kryptos dan gráphō, yang mempunyai arti "tulisan tersembunyi", telah ada hampir sepanjang kata-kata tertulis. Sepanjang masa, keuntungan dalam pertempuran antara ahlikriptologi (pembuat kode) dan cryptanalysts (pemecah kode) telah berpindah tangan berkali-kali. Peristiwa berikut ini adalah beberapa yang paling penting dalam sejarah perkembangan kriptografi.

Sejarah dan Pengertian KriptografiAbad ke-5 SM - Digunakannya kriptografi oleh Jendral Spartan untuk bertukar pesan rahasia menggunakan pita sempit membungkus perkamen sekitar staf silinder dikenal sebagai scytale, kemudian menyalin pesan mereka pada papirus. Pesan hanya dapat dibaca saat papirus adalah ulang luka di sekitar scytale ketebalan yang sama. Ini adalah penggunaan yang tercatat paling awal apa yang sekarang dikenal sebagai cipher transposisi.

Abad ke-2 SM - Sejarawan Polybius Yunani mengembangkan salah satu yang paling awal tercatat yaitu cipher substitusi dengan mengganti huruf-huruf alfabet, disusun dalam Polybius persegi, dengan angka.

Abad ke-1 SM - jenderal Romawi menggunakan cipher pergeseran sederhana, di mana setiap huruf dari pesan plaintext akan bergeser jumlah tetap huruf dalam alfabet untuk menghasilkan ciphertext. Sandi kemudian dikenal sebagai sandi Caesar setelah Julius Caesar, yang konon lebih suka pergeseran dari tiga huruf.

Abad ke-9 - matematikawan Islam Yaqūb bin Yusuf Abu Ishaq al-Kindi menerbitkan buku teks pertama memecahkan kode, A Manuscript on Deciphering Cryptographic Messages. Al-Kindi memperkenalkan buku klasifikasi cipher, polyalphabetic sandi, dan analisis frekuensi, teknik penting yang digunakan dalam memecahkan cipher substitusi. Analisis frekuensi menggunakan frekuensi relatif simbol dalam pesan berkode untuk mengungkapkan apa huruf alfabet.
Algoritma kriptografi klasik berbasis karakter
nMenggunakan pena dan kertas saja, belum ada komputernTermasuk ke dalam kriptografi kunci-simetrinTiga alasan mempelajari algoritma klasik:
nContoh: Caesar Cipher
nTiap huruf alfabet digeser 3 huruf ke kanan
nContoh:


Cipher Substitusi

1. Memahami konsep dasar kriptografi.
2. Dasar algoritma kriptografi modern.
3. Memahami kelemahan sistem cipher.
Algoritma kriptografi klasik:
1. Cipher Substitusi (Substitution Ciphers)   pi : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
2.Cipher Transposisi (Transposition Ciphers)
  ci            : DE F G H I J K L M N O P Q R S T U V W X Y Z A B C
  Plainteks     :   AWASI ASTERIX DAN TEMANNYA OBELIX
  Cipherteks    :   DZDVL DVWHULA GDQ WHPDQQBA REHOLA
nDalam praktek, cipherteks dikelompokkan ke dalam kelompok n-huruf, misalnya kelompok 4-huruf:
nAtau membuang semua spasi:
nTujuannya agar kriptanalisis menjadi lebih sulit

DZDV LDVW HULA GDQW HPDQ QBAR EHOL A 
DZDVLDVWHULAGDQWHPDQQBAREHOLA  
nMisalkan A = 0, B = 1, …, Z = 25, maka secara matematis caesar cipher dirumuskan sebagai   berikut:
  Enkripsi: ci = E(pi) = (pi + 3) mod 26
  Dekripsi: pi = D(ci) = (ci – 3) mod 26 
nJika pergeseran huruf sejauh k, maka:
 
  Enkripsi: ci = E(pi) = (pi + k) mod 26
  Dekripsi: pi = D(ci) = (ci k) mod 26
  k = kunci rahasia
nUntuk 256 karakter ASCII, maka:
 
  Enkripsi: ci = E(pi) = (pi + k) mod 256
  Dekripsi: pi = D(ci) = (ci k) mod 256
  k = kunci rahasia


/* Program enkripsi file dengan Caesar cipher */
#include <stdio.h>
 
main(int argc, char *argv[])
{
 FILE *Fin, *Fout;
 char p, c;
 int k;
 
 Fin = fopen(argv[1], "rb");
 if (Fin == NULL)
   printf("Kesalahan dalam membuka %s sebagai berkas masukan/n",  argv[1]);   
 Fout = fopen(argv[2], "wb"); 
 printf("\nEnkripsi %s menjadi %s ...\n", argv[1], argv[2]);
 printf("\n");
 printf("k : ");
 scanf("%d", &k); 
 while ((p = getc(Fin)) != EOF)
 {
  c = (p + k) % 256;
  putc(c, Fout); 
 }
 
 fclose(Fin);
 fclose(Fout);
        }   

/* Program dekripsi file dengan Caesar cipher */
 
#include <stdio.h>
 
main(int argc, char *argv[])
{
 FILE *Fin, *Fout;
 char p, c;
 int n, i, k;
 
 Fin = fopen(argv[1], "rb");
 if (Fin == NULL)
   printf("Kesalahan dalam membuka %s sebagai berkas masukan/n",  argv[1]);   
 Fout = fopen(argv[2], "wb"); 
 printf("\nDekripsi %s menjadi %s ...\n", argv[1], argv[2]);
 printf("\n");
 printf("k : ");
 scanf("%d", &k); 
 while ((c = getc(Fin)) != EOF)
 {
  p = (c - k) % 256;
  putc(p, Fout); 
 }
  fclose(Fin);
 fclose(Fout);
        }    

Kelemahan: 
  Caesar cipher mudah dipecahkan dengan exhaustive key search karena jumlah kuncinya sangat sedikit (hanya ada 26 kunci).
Contoh: kriptogram XMZVH
PHHW PH DIWHU WKH WRJD SDUWB
KEY
1  oggv og chvgt vjg vqic rctva
2  nffu nf bgufs uif uphb qbsuz
3  meet me after the toga party
4  Ldds ld zesdq sgd snfz ozqsx
5  kccr kc ydrcp rfc rmey nyprw
6 
21 ummb um inbmz bpm bwoi xizbg
22 tlla tl hmaly aol avnh whyaf
23 skkz sk glzkx znk zumg vgxze
24 rjjy rj fkyjw ymj ytlf ufwyd
25 qiix qi ejxiv xli xske tevxc
Contoh: Kriptogram  HSPPW menghasilkan dua kemungkinan kunci yang potensial, yaitu k = 4 menghasilkan pesan DOLLS dan k = 11 menghasilkan WHEEL.
nDi dalam sistem operasi Unix, ROT13 adalah fungsi menggunakan Caesar cipher dengan pergeseran k = 13
  Jika kasusnya demikian, maka lakukan dekripsi terhadap potongan cipherteks lain tetapi cukup menggunakan k = 4 dan k = 11  agar dapat disimpulkan kunci yang benar

nContoh:  ROT13(ROTATE) = EBGNGR
nNama “ROT13” berasal dari net.jokes
  (hhtp://groups.google.com/group/net.jokes)  (tahun 1980)

nROT13 biasanya digunakan di dalam forum online untuk menyandikan jawaban teka-teki, kuis,  canda, dsb

nEnkripsi arsip dua kali dengan ROT13 menghasilkan pesan semula:
   P = ROT13(ROT13(P))  
   sebab        ROT13(ROT13(x)) = ROT26(x) = x
nJadi dekripsi cukup dilakukan dengan mengenkripsi cipherteks kembali dengan ROT13

Tidak ada komentar:

Posting Komentar