Perbandingan Keamanan Algoritma Kriptografi Klasik...

15
Makalah IF3058 Kriptografi Sem. II Tahun 2010/2011 Perbandingan Keamanan Algoritma Kriptografi Klasik Berlapis dengan Algoritma Kriptografi Modern Sederhana Bobby H. Suryanaga - 13508022 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia 1 [email protected] AbstraksiEnkripsi teks secara umum dapat dilakukan dengan menggunakan dua jenis algoritma, yaitu algoritma kriptografi klasik yang melakukan enkripsi teks dengan enkripsi tiap karakter, dan algoritma kriptografi modern yang melakukan enkripsi pada bit-bit dari plaintext. Algoritma kriptografi klasik tentu saja lebih sederhana bila dibandingkan dengan algoritma kriptografi modern. Namun, dengan adanya teknologi komputer, algoritma enkripsi klasik dapat menjadi lebih sulit dipecahkan dengan adanya penggantian karakter yang lebih luas dengan menggunakan mode extended (ASCII). Pada makalah ini akan dijelaskan mengenai beberapa algoritma kriptografi klasik dan algoritma kriptografi modern. Algoritma kriptografi klasik akan dilakukan secara berlapis dan dengan teknik memodifikasi kunci yang digunakan sehingga kunci tidak mudah ditebak. Perbandingan dilakukan dengan berbagai jenis algoritma kriptografi modern. Kata kuncialgoritma kriptografi klasik dengan modifikasi kunci, algoritma kriptografi modern sederhana, perbandingan keamanan, statistik. I. PENDAHULUAN Pada saat ini, informasi dapat menyebar dengan begitu cepat dan mudahnya dengan mendunianya teknologi internet. Sering kali informasi pribadi seseorang, seperti nomor telepon, alamat, gambar dan video pribadi, diketahui dan didapatkan oleh orang lain dan digunakan tidak semestinya, seperti untuk melakukan penipuan, penyebaran informasi pribadi, dan lain-lain. Untuk itu pengenkripsian data menjadi sangat penting untuk melindungi data-data pribadi. Enkripsi merupakan proses mengubah informasi (sering disebut plaintext) menggunakan suatu algoritma dengan suatu kunci tertentu untuk membuatnya tidak dapat dibaca (ciphertext). Hanya orang yang mengetahui kunci tersebut yang dapat mengembalikan (dekripsi) teks yang tidak terbaca tersebut dengan sebuah algoritma ke bentuk yang dapat terbaca lagi seperti semula. Enkripsi telah lama digunakan militer dan pemerintah untuk mengirim pesan dan berkomunikasi secara rahasia. Enkripsi merakyat dengan berkembangnya komputer sehingga diperlukan cara untuk melindungi data-data yang terdapat dalam komputer dari orang lain. Enkripsi menjadi bagian yang sangat penting dalam transaksi jual beli dalam jaringan. Data-data yang dikirimkan dalam transaksi dalam jaringan seperti nomor kartu kredit harus dienkripsi untuk mencegah pencurian data tersebut. II. ALGORITMA KRIPTOGRAFI KLASIK Algoritma kriptografi klasik pada dasarnya mengimplementasikan substitusi, yaitu mengganti suatu elemen pada plaintext menjadi elemen yang terdapat pada ciphertext, dan transposisi, yaitu mengubah urutan kemunculan elemen plaintext. Salah satu algoritma enkripsi klasik yang ditemukan paling awal adalah Caesar Cipher. Caesar Cipher menggunakan prinsip substitusi. Pada Caesar Cipher, setiap karakter digantikan oleh 3 karakter sebelumnya pada abjad alphabet. Algoritma versi umum dari Caesar Cipher adalah sebagai berikut: C = E( k, p ) = (p + k) mod 26 C : karakter hasil enkripsi dengan representasi bilangan (a = 0, b = 1, dst.) p: karakter plaintext yang dienkripsi dengan representasi bilangan k: jumlah pergeseran yang digunakan Algoritma dekripsinya adalah sebagai berikut: p = D( k, C ) = (C - k) mod 26 Pengembangan algoritma kriptografi yang menggunakan substitusi adalah monoalphabetic cipher, yaitu penggantian tiap karakter dari plaintext menggunakan kunci dengan urutan karakter yang random. Algoritma ini memerlukan kunci sepanjang 26 karakter pengganti a sampai z. Algoritma substitusi lainnya contohnya cipher substitusi homofonik, cipher abjad majemuk, cipher substitusi poligram. Pada cipher substitusi homofonik Setiap huruf plainteks dipetakan ke dalam salah satu huruf cipherteks yang mungkin. Fungsi ciphering memetakan satu-ke-

Transcript of Perbandingan Keamanan Algoritma Kriptografi Klasik...

Page 1: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

Perbandingan Keamanan

Algoritma Kriptografi Klasik Berlapis

dengan Algoritma Kriptografi Modern Sederhana

Bobby H. Suryanaga - 13508022

Program Studi Teknik Informatika

Sekolah Teknik Elektro dan Informatika

Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia [email protected]

Abstraksi— Enkripsi teks secara umum dapat dilakukan

dengan menggunakan dua jenis algoritma, yaitu algoritma

kriptografi klasik yang melakukan enkripsi teks dengan

enkripsi tiap karakter, dan algoritma kriptografi modern

yang melakukan enkripsi pada bit-bit dari plaintext.

Algoritma kriptografi klasik tentu saja lebih sederhana

bila dibandingkan dengan algoritma kriptografi modern.

Namun, dengan adanya teknologi komputer, algoritma

enkripsi klasik dapat menjadi lebih sulit dipecahkan dengan

adanya penggantian karakter yang lebih luas dengan

menggunakan mode extended (ASCII).

Pada makalah ini akan dijelaskan mengenai beberapa

algoritma kriptografi klasik dan algoritma kriptografi

modern. Algoritma kriptografi klasik akan dilakukan secara

berlapis dan dengan teknik memodifikasi kunci yang

digunakan sehingga kunci tidak mudah ditebak.

Perbandingan dilakukan dengan berbagai jenis algoritma

kriptografi modern.

Kata kunci—algoritma kriptografi klasik dengan

modifikasi kunci, algoritma kriptografi modern sederhana,

perbandingan keamanan, statistik.

I. PENDAHULUAN

Pada saat ini, informasi dapat menyebar dengan begitu

cepat dan mudahnya dengan mendunianya teknologi

internet. Sering kali informasi pribadi seseorang, seperti

nomor telepon, alamat, gambar dan video pribadi,

diketahui dan didapatkan oleh orang lain dan digunakan

tidak semestinya, seperti untuk melakukan penipuan,

penyebaran informasi pribadi, dan lain-lain. Untuk itu

pengenkripsian data menjadi sangat penting untuk

melindungi data-data pribadi.

Enkripsi merupakan proses mengubah informasi

(sering disebut plaintext) menggunakan suatu algoritma

dengan suatu kunci tertentu untuk membuatnya tidak

dapat dibaca (ciphertext). Hanya orang yang mengetahui

kunci tersebut yang dapat mengembalikan (dekripsi) teks

yang tidak terbaca tersebut dengan sebuah algoritma ke

bentuk yang dapat terbaca lagi seperti semula.

Enkripsi telah lama digunakan militer dan pemerintah

untuk mengirim pesan dan berkomunikasi secara rahasia.

Enkripsi merakyat dengan berkembangnya komputer

sehingga diperlukan cara untuk melindungi data-data

yang terdapat dalam komputer dari orang lain.

Enkripsi menjadi bagian yang sangat penting dalam

transaksi jual beli dalam jaringan. Data-data yang

dikirimkan dalam transaksi dalam jaringan seperti nomor

kartu kredit harus dienkripsi untuk mencegah pencurian

data tersebut.

II. ALGORITMA KRIPTOGRAFI KLASIK

Algoritma kriptografi klasik pada dasarnya

mengimplementasikan substitusi, yaitu mengganti suatu

elemen pada plaintext menjadi elemen yang terdapat pada

ciphertext, dan transposisi, yaitu mengubah urutan

kemunculan elemen plaintext. Salah satu algoritma

enkripsi klasik yang ditemukan paling awal adalah Caesar

Cipher. Caesar Cipher menggunakan prinsip substitusi.

Pada Caesar Cipher, setiap karakter digantikan oleh 3

karakter sebelumnya pada abjad alphabet. Algoritma versi

umum dari Caesar Cipher adalah sebagai berikut:

C = E( k, p ) = (p + k) mod 26

C : karakter hasil enkripsi dengan representasi bilangan (a

= 0, b = 1, dst.)

p: karakter plaintext yang dienkripsi dengan representasi

bilangan

k: jumlah pergeseran yang digunakan

Algoritma dekripsinya adalah sebagai berikut:

p = D( k, C ) = (C - k) mod 26

Pengembangan algoritma kriptografi yang

menggunakan substitusi adalah monoalphabetic cipher,

yaitu penggantian tiap karakter dari plaintext

menggunakan kunci dengan urutan karakter yang random.

Algoritma ini memerlukan kunci sepanjang 26 karakter

pengganti a sampai z.

Algoritma substitusi lainnya contohnya cipher

substitusi homofonik, cipher abjad majemuk, cipher

substitusi poligram.

Pada cipher substitusi homofonik Setiap huruf

plainteks dipetakan ke dalam salah satu huruf cipherteks

yang mungkin. Fungsi ciphering memetakan satu-ke-

Page 2: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

banyak (one-to-many). Tujuannya adalah untuk

menyembunyikan hubungan statistik antara plainteks

dengan cipherteks.[1]

Pada cipher abjad majemuk, setiap huruf menggunakan

kunci berbeda. Cipher abjad-majemuk dibuat dari

sejumlah cipher abjad-tunggal, masing-masing dengan

kunci yang berbeda. [1]

Pada cipher substitusi poligram, blok huruf plainteks

disubstitusi dengan blok cipherteks. Misalnya AS diganti

dengan RT, BY diganti dengan SL Jika unit huruf

plainteks/cipherteks panjangnya 2 huruf, maka ia disebut

digram (biigram), jika 3 huruf disebut ternari-gram, dst.

Tujuannya adalah distribusi kemunculan poligram

menjadi flat (datar), dan hal ini menyulitkan analisis

frekuensi.Contoh algoritma kriptografi cipher substitusi

poligram adalah playfair cipher.[1]

Dari semua algoritma kriptografi klasik tersebut, yang

akan dipakai dalam pembuatan algoritma kriptografi

klasik berlapis pada makalah ini adalah cipher abjad

majemuk dalam bentuk Vigenere Cipher dan cipher

transposisi.

Pada algoritma enkripsi Vigenere Cipher, ciphertext

dienkripsi menggunakan sebuah kunci berjenis string.

Setiap karakter pada plaintext dienkripsi berdasarkan

urutan karakter pada kunci. Bila kunci lebih pendek dari

plaintext, kunci akan diulang. Rumus penghitungan

karakter hasil ciphertext adalah sebagai berikut.

C = P + K mod 26

C: karakter pada ciphertext dalam representasi integer

P: karakter pada plaintext dalam representasi integer

K: karakter pada kunci dalam representasi integer

Dalam makalah ini Vigenere yang digunakan adalah

versi extended sehingga rumusnya menjadi

C = P + K mod 256

III. ALGORITMA KRIPROGRAFI MODERN

Perkembangan algoritma kriptografi modern didorong

oleh berkembangnya komputer digital. Algoritma

kriptografi modern beroperasi pada level bit (biner).

Kebanyakan algoritma kriptografi modern menggunakan

operasi XOR dalam melakukan enkripsinya karena pada

operasi XOR dapat diketahui kembali sumber bit yang

dioperasikan bila hasil operasi dan sebuah bit sumber

operasi (kunci) diketahui.

Enkripsi: C = P K

Dekripsi: P = C K

Secara umum, algoritma kriptografi berbasis bit dibagi

menjadi 2, cipher aliran (stream cipher) dan cipher blok

(block cipher). Pada cipher aliran, algoritma beroperasi

pada bit tunggal dan proses enkripsi dan dekripsi

dilakukan secara bit per bit. Pada cipher blok, algoritma

beroperasi pada blok bit dan proses enkripsi dan dekripsi

dilakukan blok per blok. Pada makalah ini, perbandingan

akan dilakukan dengan algoritma kriptografi modern

berjenis cipher block.

Algoritma kriptografi modern cipher block ada 4 mode,

yaitu: Electronic Code Book (ECB), Cipher Block

Chaining (CBC), Cipher Feedback (CFB), Output

Feedback (OFB).

Pada ECB, setiap blok plainteks Pi dienkripsi secara

individual dan independen menjadi blok cipherteks Ci .

[2]

Enkripsi: Ci = EK(Pi)

Dekripsi: Pi = DK(Ci)

Pada mode ECB, blok plainteks yang sama selalu

dienkripsi menjadi blok cipherteks yang sama[2].

Kelemahan pada ECB adalah setiap blok yang sama akan

menghasilkan ciphertext yang sama juga sehingga mudah

diserang secara statistik. Selain itu, pihak lawan juga

dapat mengelabui penerima pesan dengan memanipulasi

ciphertext.[2]

Pada mode ECB, setiap blok cipherteks bergantung

tidak hanya pada blok plainteksnya tetapi juga pada

seluruh blok plainteks sebelumnya, hasil enkripsi blok

sebelumnya di-umpan-balikkan ke dalam enkripsi blok

yang current.[2]

Kelemahan mode CBC adalah kesalahan satu bit pada

sebuah blok plainteks akan merambat pada blok

cipherteks yang berkoresponden dan semua blok

cipherteks berikutnya. Tetapi, hal ini berkebalikan pada

proses dekripsi. Kesalahan satu bit pada blok cipherteks

hanya mempengaruhi blok plainteks yang berkoresponden

dan satu bit pada blok plainteks berikutnya (pada posisi

bit yang berkoresponden pula). [2]

Pada CFB, Data dienkripsikan dalam unit yang lebih

kecil daripada ukuran blok. Unit yang dienkripsikan dapat

berupa bit per bit (jadi seperti cipher aliran), 2 bit, 3-bit,

dan seterusnya.[2]

Mode OFB mirip dengan mode CFB, kecuali n-bit dari

hasil enkripsi terhadap antrian disalin menjadi elemen

posisi paling kanan di antrian. Dekripsi dilakukan sebagai

kebalikan dari proses enkripsi.[2]

IV. ALGORITMA KRIPTOGRAFI KLASIK BERLAPIS

DENGAN MODIFIKASI KUNCI

A. Enkripsi

Algoritma kriptografi klasik yang akan dipakai pada

pembuatan algoritma kriptografi klasik berlapis dengan

modifikasi kunci pada makalah ini adalah algoritma

vigenere cipher. Pemilihan algoritma Vigenere Cipher

karena memiliki kunci yang mudah diingat dan

pemodifikasian kunci dapat dilakukan dengan beragam.

Selain itu algoritma Vigenere Cipher juga tidak

membutuhkan kunci yang panjang, menghasilkan

ciphertext yang panjangnya sama dengan plaintext, dan

mudah diimplementasikan dalam mode extended

(ASCII).

Algoritma ini terdiri dari 3 tahap enkripsi. Tahap

pertama dan kedua mengaplikasikan algoritma cipher

substitusi dalam bentuk algoritma Vigenere Cipher.

Tahap ketiga mengaplikasikan cipher transposisi. Tahap

pertama merupakan enkripsi dengan algoritma Vigenere

Cipher biasa dalam mode extended dengan pengulangan

Page 3: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

kunci.

Pada tahap kedua, dilakukan enkripsi dengan algoritma

Vigenere Cipher, tetapi kali ini dengan modifikasi kunci.

Ciphertext yang dihasilkan dari tahap pertama dipecah-

pecah menjadi blok-blok teks dengan panjang sama

dengan panjang kunci. Kemudian blok pertama dienkripsi

menggunakan algoritma Vigenere Cipher dengan kunci

semula. Namun, pada blok kedua, teks dienkripsi dengan

algoritma Vigenere Cipher menggunakan kunci yang

berasal dari hasil enkripsi blok pertama. Begitu juga

dengan blok ketiga yang dienkripsi menggunakan hasil

enkripsi dari blok kedua dan seterusnya.

Pada tahap ketiga dilakukan transposisi pada setiap

blok yang dihasilkan pada tahap kedua. Transposisi

dilakukan dengan menggeser karakter pada blok sebanyak

nilai integer dari ASCII pada kunci dimodulo dengan

panjang dari kunci tersebut ke arah kiri. Pada blok

terakhir, jumlah pergeseran mungkin lebih besar dari

panjang blok tersebut. Jika hal tersebut terjadi, pergeseran

yang dilakukan tidaklah sebanyak jumlah pergeseran

seperti pada blok lainnya, melainkan jumlah pergeseran

yang dilakukan sebanyak jumlah pergeseran pada blok

lain dimodulo dengan panjang dari blok tersebut.

Terakhir, ciphertext dapat dihasilkan dengan

menggabung semua karakter yang terdapat pada blok-

blok yang dihasilkan pada tahap ketiga.

Berikut ini adalah pseudo-code dari algoritma

kriptografi klasik berlapis dengan modifikasi kunci yang

digunakan.

function EncryptVigenere(array of byte

B, array of byte Key) array of byte

{menghasilkan ciphertext dari

plaintext B dengan kunci Key

menggunakan algoritma Vigenere Cipher

dengan pengulangan kunci,

Masukan: B, Key}

Deklarasi:

result: array of byte

i, temp:integer

Algoritma:

for i 0 to B.Length – 1 do

temp B[i] + (int)(Key[(i mod

K.Length)])

result[i] (byte)(temp mod 256)

endfor

result

function MainEncryptAlgorithm(array of

byte Plain, array of byte Key)array

of byte

{menghasilkan ciphertext dari

plaintext Plain dengan kunci Key

menggunakan algoritma kriptografi

klasik berlapis.

Masukan: Plain, Key}

Deklarasi:

s, temp, temp2: array of array of

byte

result: array of byte

i, j, k, N: integer

Algoritma:

s

ByteToListOfByte(EncryptVigenere(Plain

, Key),Key.Length)

for i 0 to s.Count - 1 do

if (i = 0)

temp[i] EncryptVigenere(s[i],

Key)

else

temp[i] EncryptVigenere(s[i],

temp[i-1])

endif

endfor

N 0

for i 0 to Key.Length – 1 do

N N + (int)(Key[i])

endfor

N N mod Key.Length

for i 0 to temp.Count – 1 do

temp2[i] transpose(N, temp[i])

endfor

k 0

for i 0 to temp2.Count – 1 do

for j 0 to temp2[i].Length – 1 do

result[k] temp2[i][j]

k k + 1

endfor

endfor

result

{NB: fungsi ByteToListOfByte dan

transpose disediakan pada lampiran

dalam bahasa C#.}

Berikut ini adalah diagram dari proses enkripsi.

Page 4: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

Gambar 1. Diagram proses enkripsi

B. Dekripsi

Pendekripsian ciphertext yang dienkripsi menggunakan

algoritma kriptografi klasik berlapis dengan modifikasi

kunci pada poin A memiliki tahap yang serupa dengan

algoritma enkripsinya namun dalam urutan yang dibalik.

Pertama-tama ciphertext dikelompokkan menjadi blok-

blok dengan panjang sama dengan panjang kunci.

Kemudian dilakukan penghitungan pergeseran yang akan

dilakukan dari masukan kunci. Setiap blok digeser

sebanyak hasil perhitungan tadi ke arah kanan. Sama

seperti pada proses enkripsi, blok terakhir digeser ke arah

kanan sebanyak hasil perhitungan dimodulo dengan

panjang blok bila panjang blok lebih kecil dari hasil

perhitungan jumlah pergeseran.

Pada tahap kedua, dilakukan iterasi blok-blok dari

belakang untuk didekripsi. Pendekripsian dilakukan

menggunakan algoritma pendekripsian Vigenere Cipher

dengan kunci blok sebelumnya. Tahap pendekripsian

untuk ciphertext dengan jumlah blok n adalah dengan

iterasi dari blok n hingga blok pertama dengan kunci

setiap blok merupakan blok yang akan didekripsi

setelahnya atau blok sebelum blok tersebut pada urutan

blok ciphertext. Blok pertama didekripsi menggunakan

kunci yang diberikan.

Tahap ketiga, gabungkan semua blok yang didapatkan

dari tahap kedua menjadi sebuah teks sepanjang plaintext

semula. Kemudian lakukan pendekripsian dengan

algoritma dekripsi Vigenere Cipher sehingga didapatkan

plaintext hasil akhir dekripsi.

Berikut ini adalah pseudo code dari algoritma dekripsi

di atas.

function DecryptVigenere(array of byte

B, array of byte Key) array of byte

{menghasilkan plaintext dari

ciphertext B dengan kunci Key

menggunakan algoritma Vigenere Cipher

dengan pengulangan kunci,

Masukan: B, Key}

Deklarasi:

result: array of byte

i, n:integer

Algoritma:

for i 0 to B.Length – 1 do

if ((int)(B[i]) < (int)(key[(i mod

Key.Length)]))

n (int)(B[i]) + 256 -

(int)(key[(i mod Key.Length)])

else

n (int)(B[i]) - (int)(key[(i

mod Key.Length)])

endif

result[i] (byte)n

endfor

result

function MainDecryptAlgorithm(array of

byte Ciphertext, array of byte

Key)array of byte

{menghasilkan plaintext dari

Ciphertext dengan kunci Key

menggunakan algoritma kriptografi

klasik berlapis.

Masukan: Ciphertext, Key}

Deklarasi:

s, temp, temp2, temp3: array of

array of byte

result: array of byte

i, j, k, N: integer

Algoritma:

s ByteToListOfByte(Ciphertext,

Key.Length)

N 0

for i 0 to Key.Length 1 do

N N + (int)(Key[i])

endfor

N N mod Key.Length

Page 5: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

for i 0 to s.Count - 1 do

temp[i] transpose(-N, s[i]))

endfor

i s.Count - 1

while i >= 0 do

if (i = 0)

temp2[i]

DecryptVigenere(temp[i], Key)

else

temp2[i]

DecryptVigenere(temp[i], temp[i - 1])

endif

i i - 1

endwhile

for i 0 to temp.Count - 1 do

temp3[i]

DecryptVigenere(temp2[i],Key)

endfor

k 0

for i 0 to temp3.Count - 1 do

for j 0 to temp3[i].Length - 1 do

result[k] temp3[i][j]

k k + 1

endfor

endfor

result

{NB: fungsi ByteToListOfByte dan

transpose disediakan pada lampiran

dalam bahasa C#.}

Berikut ini adalah diagram proses dekripsi.

Gambar 2. Diagram proses dekripsi

V. ANALISA PERBANDINGAN KEAMANAN

Ciphertext hasil enkripsi algoritma kriptografi klasik

dapat diserang dengan teknik penghitungan statistik untuk

kemunculan suatu huruf dan kelompok huruf. Oleh

karena itu, untuk menguji keamanan ciphertext hasil

enkripsi algoritma kriptografi klasik berlapis pada bagian

IV, akan digunakan serangan dengan menggunakan

statistik. Plaintext yang digunakan berbahasa Inggris

(terdapat pada lampiran) dienkripsi menggunakan kunci

„worldmystery‟. Program yang digunakan untuk

melakukan enkripsi dibuat menggunakan kakas Visual

Studio 2010 dan ditulis dalam bahasa C#. Berikut ini

adalah tampilan dari program yang dibut.

Page 6: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

Gambar 3. Tampilan program enkripsi dekripsi yang dibuat

Dari hasil penghitungan frekuensi kemunculan

karakter pada ciphertext (terdapat pada lampiran)

didapatkan hasil sebagai berikut.

ASCII Karakter Jumlah Lokasi

162 ¢ 23 54, 102, 224, 378, 527, 642,

656, 1288, 1345, 1416,

1518, 1632, 1664, 1752,

1833, 2304, 2370, 2380,

2395, 3116, 3219, 3235,

3241

163 £ 23 35, 57, 468, 645, 938,

1115, 1131, 1167, 1273,

1305, 1545, 1626, 1633,

1934, 2239, 2453, 2540,

2723, 2904, 2966, 2988,

3060, 3185

210 Ò 22 89, 133, 324, 472, 780,

1025, 1259, 1544, 1603,

1617, 1799, 1908, 2185,

2482, 2650, 2732, 2739,

2844, 2892, 2984, 3023,

3100

6 21 2, 58, 73, 450, 493, 658,

971, 1186, 1314, 1349,

1417, 1777, 2426, 2456,

2489, 2502, 2544, 2564,

2601, 2715, 2716

16

21 80, 103, 172, 218, 308,

368, 475, 506, 547, 576,

881, 1074, 1589, 1624,

1687, 1783, 1931, 1964,

2114, 2199, 2572

69 E 21 56, 169, 225, 551, 842,

1077, 1148, 1169, 1485,

1558, 1611, 1825, 1937,

2111, 2188, 2236, 2275,

2518, 2523, 2549, 2870

132 „ 21 22, 94, 390, 491, 591, 800,

810, 932, 1024, 1285,

1437, 1455, 1491, 1847,

2198, 2204, 2508, 2709,

3092, 3120, 3215 Tabel 1. Jumlah kemunculan karakter dalam ciphertext beserta

lokasinya

Seperti tampak pada tabel, frekuensi kemunculan

karakter yang paling besar adalah karakter dengan ASCII

162 (¢) ,163 (£), 210 (Ò), 6 ( [bukan -]), 16 ( ), 69 (E),

132 („). Berikut ini adalah tabel jumlah kemunculan

karakter yang terbesar beserta lokasi kemunculannya

(dimulai dari 0).

Untuk mengetahui kesulitan pemecahan ciphertext

dengan serangan statistik, akan dilihat kembali karakter

pada plaintext yang menghasilkan karakter pada

ciphertext tersebut. Hal tersebut akan direpresentasikan

dalam tabel, lokasi menunjukkan tempat kemunculan

ASCII dalam ciphertext, isi menunjukkan karakter pada

lokasi tersebut di plaintext (karakter sebelum dienkripsi

menjadi ASCII dengan nilai tersebut).

Lokasi

(162)

Isi Lokasi

(163)

Isi Lokasi

(210)

Isi

54 (spasi) 35 h 89 i

102 r 57 (spasi) 133 y

224 m 468 o 324 t

Page 7: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

378 r 645 h 472 o

527 a 938 (spasi) 780 t

642 h 1115 d 1025 o

656 i 1131 i 1259 y

1288 (spasi) 1167 s 1544 s

1345 n 1273 (spasi) 1603 e

1416 (spasi) 1305 c 1617 a

1518 i 1545 t 1799 (spasi)

1632 e 1626 u 1908 (spasi)

1664 r 1633 y 2185 (spasi)

1752 n 1934 v 2482 (spasi)

1833 c 2239 h 2650 a

2304 l 2453 w 2732 u

2370 , 2540 n 2739 a

2380 a 2723 r 2844 (spasi)

2395 e 2904 F 2892 u

3116 t 2966 d 2984 a

3219 p 2988 m 3023 (spasi)

3235 w 3060 (spasi) 3100 e

3241 (spasi) 3185 m

Lokasi

(6)

Isi Lokasi

(16)

Isi Lokasi

(69)

Isi

2 w 80 u 56 s

58 a 103 n 169 s

73 y 172 d 225 u

450 a 218 k 551 i

493 i 308 e 842 (spasi)

658 u 368 (spasi) 1077 h

971 a 475 s 1148 (spasi)

1186 r 506 t 1169 d

1314 o 547 h 1485 (spasi)

1349 (spasi) 576 , 1558 i

1417 d 881 (spasi) 1611 m

1777 i 1074 w 1825 (spasi)

2426 (spasi) 1589 n 1937 d

2456 a 1624 h 2111 t

2489 g 1687 e 2188 o

2502 T 1783 a 2236 t

2544 r 1931 (spasi) 2275 c

2564 a 1964 (spasi) 2518 g

2601 f 2114 b 2523 a

2715 d 2199 a 2549 n

2716 i 2572 l 2870 t Tabel 2. Karakter asal (plaintext) dari karakter yang

kemunculannya terbanyak pada ciphertext

Dari tabel di atas, terlihat bahwa karakter pada

plaintext yang menghasilkan karakter terbanyak pada

ciphertext sangat beragam sehingga tidak dapat

menggunakan statistik kemunculan huruf dalam bahasa

Inggris. Peggunaan metode Kasiski juga kurang efektif

karena ditemukan bahwa karakter plaintext yang sama

dari suatu karakter ciphertext tidak memiliki indeks kunci

yang sama.

Gambar 3. Frekuensi kemunculan huruf dalam bahasa Inggris

Dengan hasil pengamatan di atas, penghitungan

frekuensi kemunculan bigraf dan trigraf juga menjadi

trivial karena kemunculan karakter terbanyak pada

ciphertext berasal dari karakter yang berbeda-beda pada

plaintext.

Jika dibandingkan dengan algoritma kriptografi modern

block cipher dengan mode ECB dengan algoritma

enkripsi sederhana seperti operasi XOR saja, ciphertext

hasil enkripsi menggunakan algoritma kriptografi berlapis

dengan modifikasi kunci di atas lebih sulit dipecahkan

karena karakter yang sama belum tentu dienkripsi

menjadi karakter yang sama pada ciphertext.

Jika dibandingkan dengan CBC dengan algoritma

enkripsi sederhana seperti operasi XOR saja, tingkat

keamanan ciphertext hampir setara, namun pada

penggunaan algoritma kriptografi klasik berlapis tidak

diperlukan menambah plaintext jika blok tidak lengkap.

Jika dibandingkan dengan CFB dan OFB dengan

Page 8: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

algoritma enkripsi sederhana seperti operasi XOR saja,

tingkat keamanan algoritma kriptografi klasik berlapis

dapat disejajarkan.

Namun, jika dibandingkan dengan penggunaan

algoritma yang rumit pada algoritma kriptografi modern

seperti algoritma Rijndael, tentu saja algoritma kriptografi

klasik berlapis tidak dapat menyaingi keamanan algoritma

kriptografi modern.

Kelebihan algoritma kriptografi klasik berlapis di atas

adalah kecepatannya dalam melakukan enkripsi dan

dekripsi. Selain itu panjang kunci tidak dibatasi. Kunci

dapat bekerja sebagaimana mestinya jika memiliki

panjang maksimal sepanjang plaintext yang akan

dienkripsi. Jika panjang kunci melebihi panjang plaintext,

sisa karakter pada kunci akan tidak digunakan.

Misalnya, jika kita memilki plaintext “ini plaintext”,

kemudian kita memasukkan kunci

“kuncikriptografiklasik”, maka kunci yang sebenarnya

dipakai adalah “kuncikriptogr”, potongan kunci semula

dengan panjang sama dengan panjang plaintext.

VI. KESIMPULAN

Algoritma kriptografi klasik berlapis memiliki

keamanan yang setara dengan algoritma kriptografi

modern sederhana. Untuk kehidupan sehari-hari,

algoritma kriptografi klasik sederhana sudah cukup aman

untuk digunakan.

Algoritma kriptografi modern dengan algoritma yang

rumit seperti AES memiliki tingkat keamanan yang lebih

baik dari pada algoritma kriptografi klasik berlapis

dengan modifikasi kunci pada makalah ini.

VII. UCAPAN TERIMA KASIH

Atas terselesaikannya makalah ini, saya mengucapkan

terima kasih kepada dosen pembimbing dalam

perkuliahan Kriptografi, Pak Rinaldi Munir, karena telah

memberikan pengetahuan dasar yang memungkinkannya

dibuatnya makalah ini.

REFERENCES

[1] Munir, Rinaldi, Algoritma Kriptografi Klasik [2] Munir, Rinaldi, Algoritma Kriptografi Modern

[3] Munir, Rinaldi, Advanced Encryption Standard (AES)

[4] http://www.ascii.cl/htmlcodes.htm Waktu akses: 16 Maret 2011 [5] http://www.stealthcopter.com/blog/wp-

content/uploads/2009/12/letter_freq.png Waktu akses: 18 Maret

2011

PERNYATAAN

Dengan ini saya menyatakan bahwa makalah yang saya

tulis ini adalah tulisan saya sendiri, bukan saduran, atau

terjemahan dari makalah orang lain, dan bukan plagiasi.

Bandung, 19 Maret 2011

ttd

Bobby H. Suryanaga – 13508022

Page 9: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

Lampiran – Plaintext

How The Bermuda Triangle Works

The Bermuda Triangle is a strange and mysterious place in the southern Atlantic Ocean. It is roughly the shape of a

triangle and it is said to have sucked planes and boats into its dark and murky waters. No one knows what happened to

the planes and boats. When some enter the waters of the triangle they disappear forever.

For over forty years the Bermuda Triangle has been popularly known for supposedly paranormal disappearances of

boats and aircraft. This imaginary triangle, also known as devils triangle, has its three points at Miami, Puerto Rico, and

Bermuda, actually, despite several factors which should contribute to higher rates of accidents in the region, the

Bermuda Triangle has been found to be no more statistically dangerous than other areas of the open ocean.

The popular legend of the Bermuda Triangle began with a nineteen sixty four article in the magazine Argosy that

described and named the triangle. Further articles and reports in such magazines, as National Geographic and Playboy,

merely repeated the legend without additional research. Many of the disappearances discussed in these articles and

others did not even occur in the area of the triangle. You won‟t find it on any official map and you won‟t know when

you cross the line, but according to some people, the Bermuda Triangle is a very real place where dozen of ships,

planes, and people have disappeared with no good explanation.

Since a magazine first coined the phrase Bermuda Triangle in nineteen sixty four, the mystery has continued to attract

attention. When you dig deeper into most cases, though they‟re much less mysterious either they were never in the area

to begin with, they were actually found or there‟s a reasonable explanation for their disappearance. Does this mean

there‟s nothing to the claims of so many who have had odd experiences in the Bermuda Triangle, not necessarily

scientists have documented deviations from, then, or min the area and have found some interesting formations on the

seafloor within the Bermuda Triangles boundaries?

So, for those who like to believe in it, there is plenty fuel for the fire in this article. Well, look at the facts surrounding

what we do know about the area as well as some of the most commonly recited stories. Well, also explore the bizarre

theories like aliens and space portals, as well as the mundane explanations. Many think of the Bermuda Triangle, also

known as the devils triangle, as an imaginary area. The US board of geographic names does not recognize the Bermuda

Triangle and does not maintain an official file on it however within this imaginary area many real vessels and the

people aboard them have seemingly disappeared without explanation.

The Bermuda Triangle is located off the southeastern coast of the United States in the Atlantic Ocean with its apexes in

the vicinities of Bermuda, Miami, Florida, and San Juan, Puerto Rico. It covers roughly five hundred thousands square

miles. The area may have been named after its Bermuda apex since Bermuda was once known as the isle of devils

treacherous reefs that have ensnared ships sailing too close to its shores surround Bermuda and there are hundreds of

ship wrecks in the waters that surround it.

Ciphertext (dalam bentuk screenshot dari notepad karena beberapa karakter ASCII akan merusak tampilan jika

dimasukkan ke Ms. Word) kunci: worldmystery

Page 10: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

NB: Beberapa karakter ASCII tidak dapat ditampilkan sehingga tampak seperti spasi

Hasil perhitungan frekuensi kemunculan huruf dan lokasi kemunculannya (hanya ditampilkan yang kemunculannya

lebih dari 20 kali / 11 terbesar)

ASCII 6 Jumlah: 21

Posisi: 2, 58, 73, 450, 493, 658, 971, 1186, 1314, 1349, 1417, 1777, 2426, 2456, 2489,

2502, 2544, 2564, 2601, 2715, 2716

ASCII 15 Jumlah: 20

Posisi: 33, 248, 265, 413, 557, 794, 915, 945, 960, 1093, 1134, 1155, 1519, 1703, 1902,

2160, 2405, 2827, 2845, 3179

ASCII 16 Jumlah: 21

Posisi: 80, 103, 172, 218, 308, 368, 475, 506, 547, 576, 881, 1074, 1589, 1624, 1687, 1783,

1931, 1964, 2114, 2199, 2572

ASCII 47 Jumlah: 20

Posisi: 4, 328, 364, 570, 1083, 1232, 1428, 1674, 1681, 1764, 2038, 2253, 2458, 2562, 2604,

2731, 2879, 2913, 2999, 3206

ASCII 69 Jumlah: 21

Posisi: 56, 169, 225, 551, 842, 1077, 1148, 1169, 1485, 1558, 1611, 1825, 1937, 2111, 2188,

2236, 2275, 2518, 2523, 2549, 2870

ASCII 132 Jumlah: 21

Posisi: 22, 94, 390, 491, 591, 800, 810, 932, 1024, 1285, 1437, 1455, 1491, 1847, 2198,

2204, 2508, 2709, 3092, 3120, 3215

ASCII 139 Jumlah: 20

Page 11: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

Posisi: 445, 554, 574, 733, 760, 774, 1478, 1612, 1691, 1712, 2402, 2486, 2659, 2736, 2771,

2826, 2924, 2978, 3024, 3167

ASCII 162 Jumlah: 23

Posisi: 54, 102, 224, 378, 527, 642, 656, 1288, 1345, 1416, 1518, 1632, 1664, 1752, 1833,

2304, 2370, 2380, 2395, 3116, 3219, 3235, 3241

ASCII 163 Jumlah: 23

Posisi: 35, 57, 468, 645, 938, 1115, 1131, 1167, 1273, 1305, 1545, 1626, 1633, 1934, 2239,

2453, 2540, 2723, 2904, 2966, 2988, 3060, 3185

ASCII 208 Jumlah: 20

Posisi: 262, 585, 937, 990, 1033, 1085, 1103, 1126, 1323, 1336, 1613, 1963, 2045, 2234,

2308, 2363, 2897, 2962, 2982, 3173

ASCII 210 Jumlah: 22

Posisi: 89, 133, 324, 472, 780, 1025, 1259, 1544, 1603, 1617, 1799, 1908, 2185, 2482, 2650,

2732, 2739, 2844, 2892, 2984, 3023, 3100

Kode yang digunakan untuk memproses teks dalam C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ClassicCryptographyModified { class TextProcessing { public TextProcessing() { } public byte[] GetPlaintext() { return Plaintext; } public byte[] GetCiphertext() { return Ciphertext; } public void SetPlaintext(byte[] b) { Plaintext = b; } public void SetCiphertext(byte[] b) { Ciphertext = b; } public void SetPlaintext(string S) { Plaintext = StringToByte(S); } public void SetCiphertext(string S) { Ciphertext = StringToByte(S); } public void SetKey(string S) { Key = S; } private byte[] Plaintext; private byte[] Ciphertext; public string Key; public byte[] StringToByte(string S) { char[] AC = S.ToCharArray(); byte[] b = new byte[S.Length]; for (int i = 0; i < S.Length; i++) { b[i] = (byte)(AC[i]); } return b; } public string ByteToString(byte[] b) { string S = ""; for (int i = 0; i < b.Length; i++) { S += ((char)(b[i])).ToString(); } return S; } public List<byte[]> ByteToListOfByte(byte[] B, int N) {

Page 12: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

List<byte[]> LB = new List<byte[]>(); if (B.Length % N == 0) { for (int i = 0; i < (B.Length / N); i++) { byte[] b = new byte[N]; for (int j = 0; j < N; j++) { b[j] = B[i*N+j]; } LB.Add(b); } return LB; } else { for (int i = 0; i < (B.Length / N + 1); i++) { if (i != B.Length / N) { byte[] b = new byte[N]; for (int j = 0; j < N; j++) { b[j] = B[i * N + j]; } LB.Add(b); } else { int n = B.Length % N; byte[] b = new byte[n]; for (int j = 0; j < n; j++) { b[j] = B[i * N + j]; } LB.Add(b); } } return LB; } } public byte[] transpose(int N, byte[] B) { byte[] result = new byte[B.Length]; if (N > 0) { if (N < B.Length) { for (int i = N; i < B.Length; i++) { result[i - N] = B[i]; } for (int i = 0; i < N; i++) { result[B.Length - N + i] = B[i]; } return result; } else { return transpose(N % B.Length, B); }

Page 13: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

} else if (N < 0) { if (-N < B.Length) { for (int i = - N; i < B.Length; i++) { result[i] = B[i + N]; } for (int i = 0; i < -N; i++) { result[i] = B[B.Length + N + i]; } return result; } else { return transpose(0 - (-N % B.Length), B); } } else { return B; } } public byte[] EncryptVigenere(byte[] source, string K) { byte[] hasil = new byte[source.Length]; char[] key = K.ToCharArray(); for (int i = 0; i < source.Length; i++) { int temp; temp = source[i] + key[(i % K.Length)]; hasil[i] = (byte)(temp % 256); } return hasil; } public byte[] EncryptVigenere(byte[] source, byte[] K) { byte[] hasil = new byte[source.Length]; for (int i = 0; i < source.Length; i++) { int temp; temp = source[i] + (int)(K[(i % K.Length)]); hasil[i] = (byte)(temp % 256); } return hasil; } public byte[] DecryptVigenere(byte[] source, string K) { byte[] temp = new byte[source.Length]; char[] key = K.ToCharArray(); for (int i = 0; i < source.Length; i++) { int n; if ((int)(source[i]) < (int)(key[(i % K.Length)])) { n = (int)(source[i]) + 256 - (int)(key[(i % K.Length)]); } else

Page 14: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

{ n = (int)(source[i]) - (int)(key[(i % K.Length)]); } temp[i] = (byte)n; } return temp; } public byte[] DecryptVigenere(byte[] source, byte[] K) { byte[] temp = new byte[source.Length]; for (int i = 0; i < source.Length; i++) { int n; if ((int)(source[i]) < (int)(K[(i % K.Length)])) { n = (int)(source[i]) + 256 - (int)(K[(i % K.Length)]); } else { n = (int)(source[i]) - (int)(K[(i % K.Length)]); } temp[i] = (byte)n; } return temp; } public void MainEncryptionAlgorithm() { List<byte[]> s = ByteToListOfByte(EncryptVigenere(Plaintext, Key),Key.Length); List<byte[]> temp = new List<byte[]>(); for (int i = 0; i < s.Count; i++) { if (i == 0) { temp.Add(EncryptVigenere(s.ElementAt(i), Key)); } else { temp.Add(EncryptVigenere(s.ElementAt(i), temp.ElementAt(i-1))); } } List<byte[]> temp2 = new List<byte[]>(); int N = 0; for (int i = 0; i < Key.Length; i++) { N += (int)(Key[i]); } N = N % Key.Length; for (int i = 0; i < temp.Count; i++) { temp2.Add(transpose(N, temp.ElementAt(i))); } byte[] result = new byte[Plaintext.Length]; int k = 0; for (int i = 0; i < temp2.Count; i++) { for (int j = 0; j < temp2.ElementAt(i).Length; j++) { result[k] = temp2.ElementAt(i)[j]; k++; } }

Page 15: Perbandingan Keamanan Algoritma Kriptografi Klasik ...informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2010-2011/... · Dari semua algoritma kriptografi klasik tersebut, yang

Makalah IF3058 Kriptografi – Sem. II Tahun 2010/2011

Ciphertext = result; } public void MainDecryptionAlgorithm() { List<byte[]> s = ByteToListOfByte(Ciphertext, Key.Length); List<byte[]> temp = new List<byte[]>(); int N = 0; for (int i = 0; i < Key.Length; i++) { N += (int)(Key[i]); } N = N % Key.Length; for (int i = 0; i < s.Count; i++) { temp.Add(transpose(-N, s.ElementAt(i))); } List<byte[]> temp2 = new List<byte[]>(); for (int i = s.Count - 1; i >= 0; i--) { if (i == 0) { temp2.Add(DecryptVigenere(temp.ElementAt(i), Key)); } else { temp2.Add(DecryptVigenere(temp.ElementAt(i), temp.ElementAt(i - 1))); } } temp2.Reverse(); List<byte[]> temp3 = new List<byte[]>(); for (int i = 0; i < temp.Count; i++) { temp3.Add(DecryptVigenere(temp2.ElementAt(i),Key)); } byte[] result = new byte[Ciphertext.Length]; int k = 0; for (int i = 0; i < temp3.Count; i++) { for (int j = 0; j < temp3.ElementAt(i).Length; j++) { result[k] = temp3.ElementAt(i)[j]; k++; } } Plaintext = result; } } }