
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
)
p
i
: 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
)
c
i
:
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
nAtau membuang semua spasi:
nTujuannya agar kriptanalisis menjadi lebih sulit
DZDV LDVW HULA GDQW HPDQ QBAR EHOL A
DZDVLDVWHULAGDQWHPDQQBAREHOLA
n
Misalkan
A
= 0,
B
= 1, …,
Z
= 25,
maka
secara
matematis
caesar
cipher
dirumuskan
sebagai
berikut
:
Enkripsi
:
c
i
=
E
(
p
i
) = (
p
i
+ 3) mod 26
Dekripsi
:
p
i
=
D
(
c
i
) = (
c
i
– 3) mod 26
n
Jika
pergeseran
huruf
sejauh
k
,
maka
:
Enkripsi
:
c
i
=
E
(
p
i
) = (
p
i
+
k
) mod 26
Dekripsi
:
p
i
=
D
(
c
i
) = (
c
i
–
k
) mod 26
k
=
kunci
rahasia
n
Untuk
256
karakter
ASCII,
maka
:
Enkripsi
:
c
i
=
E
(
p
i
) = (
p
i
+
k
) mod 256
Dekripsi
:
p
i
=
D
(
c
i
) = (
c
i
–
k
) mod 2
5
6
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
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