Kriptografi
Kriptografi adalah ilmu untuk menjaga keamanan pesan.
Keamanan pesan diperoleh dengan menyandikannya menjadi
pesan yang tidak mempunyai makna.
Contoh :
BALOK
menjadi KBALO
Pesan yang dirahasiakan dinamakan plainteks (plaintext, artinya
teks jelas yang dapat dimengerti)
sedangkan pesan hasil penyandian disebut cipherteks (ciphertext, artinya teks tersandi).
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi
(encryption)
dan
membalikkan cipherteks menjadi plainteks disebut dekripsi
(decryption)
1.
Notasi Matematika
Jika plainteks
dilambangkan dengan P dan cipherteks
dilambangkan dengan C, maka fungsi enkripsi
E memetakan P ke C
E(P) = C
Pada proses kebalikannya, fungsi dekripsi D memetakan C ke P
D(C)
= P
Algoritma kriptografi
atau cipher adalah fungsi matematika
yang digunakan untuk enkripsi dan dekripsi.
Contoh :
Algoritma berupa mempertukarkan pada setiap kata karakter
pertama dengan karakter kedua, karakter ketiga dengan karakter keempat dan
seterusnya.
Contohnya :
Plainteks : STIKOMPOLTEKCIREBON
Ciperteks : TSKIMOOPTLKEICEROBN
Contoh Sejarah :
Ada suatu kisah…..Di Jaman Pemerintahan Julius Caesar,
teknik kriptografi yang digunakan yaitu Caesar
Cipher.
Pada Caesar Cipher,
tiap huruf disubsitusi dengan huruf ketiga berikutnya dari susunan alphabet.
Dalam hal ini, kuncinya adalah jumlah pergeseran huruf
(yaitu 3). Susunan alphabet setelah digeser sejauh 3 huruf adalah :
Plainteks
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
Cipherteks
D E F G H I J K L M N O P Q
R S T U V W X Y Z A B C
Jadi :
Huruf A pada plainteks
disubsitusi dengan D
Huruf B pada plainteks
disubstitusi dengan E
demikian seterusnya.
Dengan mengkodekan setiap huruf alphabet dengan integer :
A = 0, B = 1, ……., Z = 25, maka secara matematika pergeseran 3 huruf alphabet
ekivalen dengan melakukan operasi mod
terhadap plainteks p menjadi cipherteks c dengan persamaan :
E(P) = C menjadi à E(P + 3)
mod 26
è E(15 + 3) mod 26
è S
Contoh :
AWAS KUCING GALAK
Disandikan dengan Caesar
Cipher yaitu mengkodekan A = 0, B = 1, ……, Z = 25, maka cipherteks-N dapat dihitung :
E(P)
= C menjadi à (P + 3) mod 26
P1 = A = 0 à C1
= E(0) = (0 + 3) mod 26 = 3 = D
P2
= W = 22 à C2 = E(22) = (22 + 3) mod 26 = 25 = Z
P3 = A = 0 à C3
= E(0) = (0 + 3) mod 26 = 3 = D
P4
= S = 18 à C4 = E(18) = (18 + 3) mod 26 = 21 = V
dst……
Cipherteks-nya
gimana …..?
Perhatikan pesan mengembalikan lagi cipherteks dengan
operasi kebalikan yang secara matematis dapat dinyatakan dengan persamaan :
D(C) = P
menjadi à (C – 3) mod
26
2.
Algoritma Simetris Bujursangkar Vigenere
Simetris Bujursangkar Vigenere adalah suatu algoritma yang
tergolong ke dalam algoritma subtitusi abjad majemuk. Ini artinya setiap huruf
yang sama dalam plaintext tidak
dipetakan. Melainkan disubtitusi oleh huruf yang berlainan bergantung dari
kunci yang digunakan untuk melakukan enkripsi.
Algoritma ini ditemukan oleh
diplomat sekaligus kriptologis dari Prancis, Blaise de Vigènere pada abad 16.
Simetris Bujursangkar Vigenere
dipublikasikan pada tahun 1856, tetapi algoritma ini baru dikenal luas 200
tahun kemudian.
Proses enkripsi dalam Simetris Bujursangkar Vigenere dilakukan dengan menggunakan bujursangkar vigenere. Bujursangkar vigenere berisi huruf-huruf abjad yang
disusun sedemikian rupa. Kolom paling kiri menyatakan huruf-huruf kunci
sedangkan baris paling atas menyatakan huruf-huruf plainteks.
Proses enkripsi dilakukan
dengan cara menarik garis vertikal ke bawah dari huruf plaintext hingga berada pada baris dari huruf kunci. Selanjutnya
huruf yang merupakan perpotongan antara huruf plainteks dan huruf kunci merupakan huruf cipherteks.
Sedangkan proses dekripsi dilakukan sebaliknya,yaitu
dengan cara menarik garis horizontal dari kunci ke kanan hingga menemukan huruf
yang sesuai dengan huruf ciperteks.
Selanjutnya tariklah garis vertikal
ke atas hingga sampai ke huruf plainteks.
Contoh :
Plainteks :
T U G A S T
Kunci : R B S C T W
Ciperteks :
K V Y C L P
Pseudo-code untuk enkripsi :
i ß 1
While i <= 6
read alfabet[i]
konversi_alfabet ß (0+mathcon(alfabet[i])-1
read kunci[i]
konversi_kunci ß (0+mathcon(kunci[i])-1
ngitung = 25 – konversi_kunci
if konversi_alfabet < ngitung then
C ß mathcon(alfabet[i]) + konversi_kunci
else
C ß
konversi_alfabet – ngitung
End While
Bujursangkat
Vigenere
Tidak ada komentar:
Posting Komentar