Algoritma Kriptografi Klasik
(bag 1)
Yanuar Nurdiansyah, ST., M.Cs
UNEJ 2011
Kriptografi
1
Pendahuluan





Kriptografi Klasik memiliki beberapa ciri :
Algoritma kriptografi klasik berbasis karakter
Menggunakan pena dan kertas saja, belum ada
komputer
Termasuk ke dalam kriptografi kunci-simetri
Tiga alasan mempelajari algoritma klasik:
1. Memahami konsep dasar kriptografi.
2. Dasar algoritma kriptografi modern.
3. Memahami kelemahan sistem cipher.
2
Algoritma kriptografi klasik:
1. Cipher Substitusi (Substitution Ciphers)
2.Cipher Transposisi (Transposition Ciphers)

3
Cipher Substitusi
Subtitusi merupakan penggantian setiap karakter teks asli
dengan karakter lain
A
F
K
P
U

B
G
L
Q
V

C
H
M
R
W

D
I
N
S
X

E
J
O
T
Y

N
B
V
C
X

F
D
S
A
M

L
K
J
H
G

T
R
E
W
Q

P
O
I
U
Y

Ter dapat 4 istilah subtitusi kode ;
1.Monoalphabet : setiap karakter teks kode menggantikan salah satu
karakter teks asli.
2.Polyalphabet : setiap karakter teks kode dapat mengantikan lebih
dari 1 mcm teks asli
3.Monograf
: satu enkripsi dilakukan terhadap satu karakter teks
asli
4.Poygraph
: satu enkripsi dilakukan terhadap lebih dari satu

4
Kode Kaisar



Subtitusi kode pertama dalam dunia penyandian
Mengganti posisi huruf awal dari alphabet atau
disebut jg dg Algoritma ROT3
Caesar Cipher (ROT3)
Plain Text
Encoded Text
ABC
DEF
Hello
Khoor
Attack
Dwwdfn

5



Contoh: Caesar Cipher
Tiap huruf alfabet digeser 3 huruf ke kanan

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
ci : 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



Contoh:
Plainteks: AWASI ASTERIX DAN TEMANNYA OBELIX
Cipherteks: DZDVL DVWHULA GDQ WHPDQQBA REHOLA

6


Dalam praktek, cipherteks dikelompokkan ke dalam
kelompok n-huruf, misalnya kelompok 4-huruf:

DZDV LDVW HULA GDQW HPDQ QBAR EHOL A


Atau membuang semua spasi:

DZDVLDVWHULAGDQWHPDQQBAREHOLA


Tujuannya agar kriptanalisis menjadi lebih sulit
7
Caesar

wheel
8
Secara detail perhatikan cnth:
A B C DE FGH I J K L MN O P Q R S T U VWX Y Z
0 1 2 3 4 5 6 7 8 9 101112 13 14151617 18 19 20 2122 23 2425

Menjadi :
D E F GH I J K L MN O P Q R S T U V W X Y Z A B C
3 4 5 6 7 8 9 1011 12 131415 16 17181920 21 22 23 2425 0 1 2
•Jika

pergeseran dilakukan Sebanyak 3 kali maka key untuk dekripi
nya adlh 3.
•Pergesaran key tergantung keinginan pengirim pesan
•Key yang dipakai bisa a=7, b=9 dst….
9


Misalkan 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
10


Jika pergeseran huruf sejauh k, maka:
Enkripsi: ci = E(pi) = (pi + k) mod 26
Dekripsi: pi = D(ci) = (ci – k) mod 26
k = kunci rahasia



Untuk 256 karakter ASCII, maka:
Enkripsi: ci = E(pi) = (pi + k) mod 256
Dekripsi: pi = D(ci) = (ci – k) mod 256
k = kunci rahasia

11
/* 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",
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);
}

argv[1]);

fclose(Fin);
fclose(Fout);
}

12
/* 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); 
}  

13
EX. GEMPA YOGYA MENELAN KORBAN TIDAK
SEDIKIT DAN SAMPAI SEKARANG MASIH
MENYISAKAN TRAUMA BAGI ORANG-ORANG
KOTA GUDEG
Menjadi:
JHPSDBRJBDPHQHODQNRUEDQWLGDNVHGLNL
WGDQVDPDLVHNDUDQJPHNDUDQJPHQBLVDND
QWUDPDEDJLRUDQJRUDQJNRWDJXGHJ
A B C DE FGH I J K L MN O P Q R S T U VWX Y Z
0 1 2 3 4 5 6 7 8 9 101112 13 14151617 18 19 20 2122 23 2425
D E F GH I J K L MN O P Q R S T U V W X Y Z A B C
3 4 5 6 7 8 9 1011 12 131415 16 17181920 21 22 23 2425 0 1 2
14
KENAIKAN HARGA BBM MEMBUAT RAKYAT
KECIL MENDERITA
Menjadi
NHQDLNDQKDUJDEEPPHPEXDWUDNBDWNHFL
OPHQGHULWD
VDBDNXOLDKGLSURGLVLVWLPLQIRUPDVLX
QHMGHQJDQGREVEQBDQJJDQWEQJ ?
COBA DI BACA ……. ^_^
15
Kelemahan:
Caesar cipher mudah dipecahkan dengan
Brute force attack, suatu bentuk serangan
yang dilakukan dengan mencoba-coba
berbagai kemungkinan untuk menentukan
kunci
exhaustive key search karena jumlah kuncinya
sangat sedikit (hanya ada 26 kunci).
16
Ada cara lain yang dpt digunakan kriptanalis untuk memecahkan
nya yaitu dgn melihat frekuensi kemunculan huruf seperti brkt
Tabel 2. Frekuensi kemunculan (relatif) huruf-huruf
dalam teks Bahasa Inggris (sampel mencapai 300.000 karakter di dalam
sejumlah novel dan suratkabar
Huruf
A
B
C
D
E
F
G
H
I
J
K
L
M

%
8,2
1,5
2,8
4,2
12,7
2,2
2,0
6,1
7,0
0,1
0,8
4,0
2,4

Huruf
N
O
P
Q
R
S
T
U
V
W
X
Y
Z

%
6,7
7,5
1,9
0,1
6,0
6,3
9,0
2,8
1,0
2,4
2,0
0,1
0,1

17
Pada teks bhs indonesia yang paling Sering muncul adalah 10
huruf yaitu
Letter
A
N
I
E
K
T
R
D
S
M

Frequency kemunculan (%)
17.50
10.30
8.70
7.50
5.65
5.10
4.60
4.50
4.50
4.50
18
Contoh: kriptogram XMZVH
Tabel 1. Contoh exhaustive key search terhadap cipherteks XMZVH
Kunci (k)
ciphering
0
25
24
23
22
21
20
19
18

‘Pesan’ hasil
dekripsi
XMZVH
YNAWI
ZOBXJ
APCYK
BQDZL
CREAM
DSFBN
ETGCO
FUHDP

Kunci (k)
ciphering
17
16
15
14
13
12
11
10
9

‘Pesan’ hasil
dekripsi
GVIEQ
HWJFR
IXKGS
JYLHT
KZMIU
LANJV
MBOKW
NCPLX
ODQMY

Kunci (k)
ciphering
8
7
6
5
4
3
2
1

‘Pesan’ hasil
dekripsi
PERNZ
QFSOA
RGTPB
SHUQC
TIVRD
UJWSE
VKXTF
WLYUG

Plainteks yang potensial adalah CREAM dengan k = 21.
Kunci ini digunakan untuk mendekripsikan cipherteks lainnya.
19
Contoh: Kriptogram HSPPW menghasilkan dua
kemungkinan kunci yang potensial, yaitu k =
4 menghasilkan pesan DOLLS dan k = 11
menghasilkan WHEEL.
Jika kasusnya demikian, maka lakukan
dekripsi terhadap potongan cipherteks lain
tetapi cukup menggunakan k = 4 dan k = 11
agar dapat disimpulkan kunci yang benar.
20


Di dalam sistem operasi Unix, ROT13
adalah fungsi menggunakan Caesar cipher
dengan pergeseran k = 13

21



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



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



Enkripsi arsip dua kali dengan ROT13 menghasilkan
pesan semula:
P = ROT13(ROT13(P))
sebab
ROT13(ROT13(x)) = ROT26(x) = x



Jadi dekripsi cukup dilakukan dengan mengenkripsi
cipherteks kembali dengan ROT13
22

Kripto Klasik

  • 1.
    Algoritma Kriptografi Klasik (bag1) Yanuar Nurdiansyah, ST., M.Cs UNEJ 2011 Kriptografi 1
  • 2.
    Pendahuluan    Kriptografi Klasik memilikibeberapa ciri : Algoritma kriptografi klasik berbasis karakter Menggunakan pena dan kertas saja, belum ada komputer Termasuk ke dalam kriptografi kunci-simetri Tiga alasan mempelajari algoritma klasik: 1. Memahami konsep dasar kriptografi. 2. Dasar algoritma kriptografi modern. 3. Memahami kelemahan sistem cipher. 2
  • 3.
    Algoritma kriptografi klasik: 1.Cipher Substitusi (Substitution Ciphers) 2.Cipher Transposisi (Transposition Ciphers) 3
  • 4.
    Cipher Substitusi Subtitusi merupakanpenggantian setiap karakter teks asli dengan karakter lain A F K P U B G L Q V C H M R W D I N S X E J O T Y N B V C X F D S A M L K J H G T R E W Q P O I U Y Ter dapat 4 istilah subtitusi kode ; 1.Monoalphabet : setiap karakter teks kode menggantikan salah satu karakter teks asli. 2.Polyalphabet : setiap karakter teks kode dapat mengantikan lebih dari 1 mcm teks asli 3.Monograf : satu enkripsi dilakukan terhadap satu karakter teks asli 4.Poygraph : satu enkripsi dilakukan terhadap lebih dari satu 4
  • 5.
    Kode Kaisar   Subtitusi kodepertama dalam dunia penyandian Mengganti posisi huruf awal dari alphabet atau disebut jg dg Algoritma ROT3 Caesar Cipher (ROT3) Plain Text Encoded Text ABC DEF Hello Khoor Attack Dwwdfn 5
  • 6.
      Contoh: Caesar Cipher Tiaphuruf alfabet digeser 3 huruf ke kanan 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 ci : 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  Contoh: Plainteks: AWASI ASTERIX DAN TEMANNYA OBELIX Cipherteks: DZDVL DVWHULA GDQ WHPDQQBA REHOLA 6
  • 7.
     Dalam praktek, cipherteksdikelompokkan ke dalam kelompok n-huruf, misalnya kelompok 4-huruf: DZDV LDVW HULA GDQW HPDQ QBAR EHOL A  Atau membuang semua spasi: DZDVLDVWHULAGDQWHPDQQBAREHOLA  Tujuannya agar kriptanalisis menjadi lebih sulit 7
  • 8.
  • 9.
    Secara detail perhatikancnth: A B C DE FGH I J K L MN O P Q R S T U VWX Y Z 0 1 2 3 4 5 6 7 8 9 101112 13 14151617 18 19 20 2122 23 2425 Menjadi : D E F GH I J K L MN O P Q R S T U V W X Y Z A B C 3 4 5 6 7 8 9 1011 12 131415 16 17181920 21 22 23 2425 0 1 2 •Jika pergeseran dilakukan Sebanyak 3 kali maka key untuk dekripi nya adlh 3. •Pergesaran key tergantung keinginan pengirim pesan •Key yang dipakai bisa a=7, b=9 dst…. 9
  • 10.
     Misalkan 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 10
  • 11.
     Jika pergeseran hurufsejauh k, maka: Enkripsi: ci = E(pi) = (pi + k) mod 26 Dekripsi: pi = D(ci) = (ci – k) mod 26 k = kunci rahasia  Untuk 256 karakter ASCII, maka: Enkripsi: ci = E(pi) = (pi + k) mod 256 Dekripsi: pi = D(ci) = (ci – k) mod 256 k = kunci rahasia 11
  • 12.
    /* Program enkripsifile 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", 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); } argv[1]); fclose(Fin); fclose(Fout); } 12
  • 13.
    /* Program dekripsifile 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);  }   13
  • 14.
    EX. GEMPA YOGYAMENELAN KORBAN TIDAK SEDIKIT DAN SAMPAI SEKARANG MASIH MENYISAKAN TRAUMA BAGI ORANG-ORANG KOTA GUDEG Menjadi: JHPSDBRJBDPHQHODQNRUEDQWLGDNVHGLNL WGDQVDPDLVHNDUDQJPHNDUDQJPHQBLVDND QWUDPDEDJLRUDQJRUDQJNRWDJXGHJ A B C DE FGH I J K L MN O P Q R S T U VWX Y Z 0 1 2 3 4 5 6 7 8 9 101112 13 14151617 18 19 20 2122 23 2425 D E F GH I J K L MN O P Q R S T U V W X Y Z A B C 3 4 5 6 7 8 9 1011 12 131415 16 17181920 21 22 23 2425 0 1 2 14
  • 15.
    KENAIKAN HARGA BBMMEMBUAT RAKYAT KECIL MENDERITA Menjadi NHQDLNDQKDUJDEEPPHPEXDWUDNBDWNHFL OPHQGHULWD VDBDNXOLDKGLSURGLVLVWLPLQIRUPDVLX QHMGHQJDQGREVEQBDQJJDQWEQJ ? COBA DI BACA ……. ^_^ 15
  • 16.
    Kelemahan: Caesar cipher mudahdipecahkan dengan Brute force attack, suatu bentuk serangan yang dilakukan dengan mencoba-coba berbagai kemungkinan untuk menentukan kunci exhaustive key search karena jumlah kuncinya sangat sedikit (hanya ada 26 kunci). 16
  • 17.
    Ada cara lainyang dpt digunakan kriptanalis untuk memecahkan nya yaitu dgn melihat frekuensi kemunculan huruf seperti brkt Tabel 2. Frekuensi kemunculan (relatif) huruf-huruf dalam teks Bahasa Inggris (sampel mencapai 300.000 karakter di dalam sejumlah novel dan suratkabar Huruf A B C D E F G H I J K L M % 8,2 1,5 2,8 4,2 12,7 2,2 2,0 6,1 7,0 0,1 0,8 4,0 2,4 Huruf N O P Q R S T U V W X Y Z % 6,7 7,5 1,9 0,1 6,0 6,3 9,0 2,8 1,0 2,4 2,0 0,1 0,1 17
  • 18.
    Pada teks bhsindonesia yang paling Sering muncul adalah 10 huruf yaitu Letter A N I E K T R D S M Frequency kemunculan (%) 17.50 10.30 8.70 7.50 5.65 5.10 4.60 4.50 4.50 4.50 18
  • 19.
    Contoh: kriptogram XMZVH Tabel1. Contoh exhaustive key search terhadap cipherteks XMZVH Kunci (k) ciphering 0 25 24 23 22 21 20 19 18 ‘Pesan’ hasil dekripsi XMZVH YNAWI ZOBXJ APCYK BQDZL CREAM DSFBN ETGCO FUHDP Kunci (k) ciphering 17 16 15 14 13 12 11 10 9 ‘Pesan’ hasil dekripsi GVIEQ HWJFR IXKGS JYLHT KZMIU LANJV MBOKW NCPLX ODQMY Kunci (k) ciphering 8 7 6 5 4 3 2 1 ‘Pesan’ hasil dekripsi PERNZ QFSOA RGTPB SHUQC TIVRD UJWSE VKXTF WLYUG Plainteks yang potensial adalah CREAM dengan k = 21. Kunci ini digunakan untuk mendekripsikan cipherteks lainnya. 19
  • 20.
    Contoh: Kriptogram HSPPWmenghasilkan dua kemungkinan kunci yang potensial, yaitu k = 4 menghasilkan pesan DOLLS dan k = 11 menghasilkan WHEEL. Jika kasusnya demikian, maka lakukan dekripsi terhadap potongan cipherteks lain tetapi cukup menggunakan k = 4 dan k = 11 agar dapat disimpulkan kunci yang benar. 20
  • 21.
     Di dalam sistemoperasi Unix, ROT13 adalah fungsi menggunakan Caesar cipher dengan pergeseran k = 13 21
  • 22.
      Contoh: ROT13(ROTATE) =EBGNGR Nama “ROT13” berasal dari net.jokes (hhtp://groups.google.com/group/net.jokes) (tahun 1980)  ROT13 biasanya digunakan di dalam forum online untuk menyandikan jawaban teka-teki, kuis, canda, dsb  Enkripsi arsip dua kali dengan ROT13 menghasilkan pesan semula: P = ROT13(ROT13(P)) sebab ROT13(ROT13(x)) = ROT26(x) = x  Jadi dekripsi cukup dilakukan dengan mengenkripsi cipherteks kembali dengan ROT13 22