Implementasi Algoritma ADFGVX Cipher dan Knapsack Dalam Pengamanan Data Teks

BAB 2
LANDASAN TEORI

2.1

Kriptogafi

Kriptografi merupakan bidang ilmu yang mempelajari tentang metode untuk
mengirim pesan secara rahasia (yaitu di enkripsi atau disamarkan) sehingga hanya
penerima pesan yang dituju yang dapat menghapus penyamaran dan membaca pesan
(atau memahaminya). Secara etimologi kriptografi berasal dari bahasa yunani, cryptos
yang berarti tersembunyi, dan graphein yang berarti menulis. Dalam kriptografi pesan
yang akan dirahasiakan disebut plainteks dan pesan yang sudah dirahasiakan disebut
cipherteks. Proses pengubahan plainteks menjadi cipherteks disebut enkripsi,
sebaliknya proses pengubahan cipherteks menjadi plainteks yang dilakukan oleh
penerima pesan disebut dekripsi (Mollin, R.A. 2007). Skema rangkaian proses
enkripsi dan dekripsi secara umum ditunjukkan pada Gambar 2.1.
Plainteks

Enkripsi


Cipherteks

Dekripsi

Plainteks

Gambar 2.1. Skema Proses Enkripsi dan Dekripsi

2.1.1

Tujuan Kriptografi

Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan
informasi yaitu:
1) Privacy/Confidentiality yaitu usaha menjaga informasi dari orang yang tidak
berhak mengakses.

Universitas Sumatera Utara

7


2) Integrity yaitu usaha untuk menjaga data atau sistem tidak bisa diubah oleh
pihak yang tidak berhak.
3) Authentication usaha atau metode untuk mengetahui keaslian dari informasi,
misalnya apakah informasi yang dikirim dibuka oleh orang yang benar atau
layanan dari server yang diberikan benar dari server yang dimaksud.
4) Availability yaitu berhubungan dengan ketersediaan sistem dan data ketika

data dibutuhkan.

2.1.2

Jenis-Jenis Algoritma Kriptografi

Ada dua jenis algoritma kriptografi yaitu algoritma simetris dan algoritma asimetris.
Pada kriptografi simetris maupun kriptografi asimetris tidak ada keamanan yang bisa
terjamin tanpa syarat. Suatu metode enkripsi tidak ada yang praktis. Maka, untuk
semua protokol pada kriptografi, keamanan bergantung pada asumsi perhitungan
(Pointcheval. David. 2002).
1) Kriptografi Simetris

Algoritma klasik (sebutan untuk algoritma simetris) merupakan algoritma yang
menggunakan kunci yang sama untuk proses enkripsi dan dekripsi. Algoritma
simetris juga sering disebut one key/ private key/ single key karena memiliki
kunci yang sama untuk proses enkripsi dan dekripsi (Sembiring, Dira Fahrendy
2013). Kemanan algoritma simetris berada pada kunci, agar komunikasi tetap
aman maka kunci harus tetap dirahasiakan. Contoh algoritma simetris One Time
Pad, ADFGVX Cipher, Affine Cipher , dan lainnya. Proses enkripsi dan dekripsi

algoritma simetris dapat dilihat pada Gambar 2.2.
Kunci

Plainteks

Cipherteks
Enkripsi

Plainteks
Dekripsi

Gambar 2.2. Skema Algoritma Simetris (Hayanti, Disa 2013)


2) Kriptografi Asimatris

Universitas Sumatera Utara

8

Algoritma asimetris (public key) merupakan algoritma kriptografi yang
menggunakan sepasang kunci dalam melakukan enkripsi dan dekripsi, yaitu kunci
publik (public key) dan kunci privat (private key). Dalam algoritma simetris kunci
publik bisa disebar-luaskan sedangkan kunci privat harus tetap dirahasiakan
(Kromodimoeljo, S. 2010). Kunci publik digunakan

untuk proses enkripsi

plainteks, dan kunci privat digunakan untuk proses dekripsi. algoritma yang
digunakan untuk kriptografi public key berdasarkan pada relasi matematika
(Sachdeva, Komal. 2013).
Hampir semua skema kunci publik hanya digunakan untuk mengenkripsi
pesan yang singkat, seperti mengenkripsi kunci. Hal tersebut dikarenakan skema

dari kunci publik kurang efisien jika digunakan untuk mengenkripsi data dalam
jumlah yang besar. Kemudian data dalam jumlah besar dienkripsi dengan
menggunakan algoritma simetris. Pendekatan seperti ini disebut dengan skema
enkripsi hybrid (Smart, N.P. 2016). Contoh algoritma asimetris yaitu RivestShamir-Adlenan (RSA), El-gamal, Knapsack, Rabin dan lainnya. Proses enkripsi
dan dekripsi dari algoritma asimetris dapat dilihat pada Gambar 2.3.

Kunci Private (K2)

Kunci Publik (K1)

Plainteks
Enkripsi

Cipherteks

Dekripsi

Plainteks

Gambar 2.3. Skema Algorima Asimetris


2.2

ADFGVX Cipher

Algoritma ADFGVX Cipher ini merupakan algoritma yang ditemukan oleh seorang
petugas radio tentara Jerman yang bernama Fritz Nebel (1891-1967) (Sihotang, Rajab.
2014). untuk menggunakan ADFGVX Cipher, dimulai dengan sebuah matriks 6x6.
Matriks tersebut diisi dengan alphabet dan nomor 0-9 yang disusun secara acak.
ADFGVX chiper dipertimbangkan sebagai algoritma yang cukup aman karena
algoritma ini mengkombinasikan dua kelebihan rata-rata algoritma kriptografi, yaitu
substitusi yang baik dan transposisi yang unggul dalam sebuah sistem (Manoharan,
N., Balasubramanian., Nandhini, Uma. & Sujatha, V. 2015). Nama ADFGVX dipilih

Universitas Sumatera Utara

9

karena refresentatif huruf-huruf tersebut sangatlah berbeda dalam sandi morse
(Mollin, R.A. 2007).


2.2.1

Enkripsi ADFGVX Cipher

Berikut adalah langkah-langkah dalam melakukan enkripsi dengan menggunakan
algoritma ADFGVX Cipher:
1) Tentukan kata yang akan dienkripsi (plainteks) yang terdiri dari angka dan
hurup misal “HARAHAP289”
2) Buat sebuah tabel 6x6 yang berisi 26 huruf dan 10 angka, seperti pada Tabel
2.1.
Tabel 2.1. Tabel ADFGVX Cipher
A

D

F

G


V

X

A

F

E

D

C

B

A

D


G

H

I

J

K

L

F

R

Q

P


O

N

M

G

S

T

U

V

W

X


V

3

2

1

0

Z

Y

X

4

5

6

7

8

9

3) Setiap huruf dalam plainteks disubstitusi menjadi dua huruf berdasarkan baris
dan kolom, misal huruf K menjadi DV. Jika plainteks-nya adalah
“HARAHAP289” maka hasil substitusinya adalah DD AX FA AX DD AX FF
VD XV XX.
4) Tentukan kata kunci yang terdiri dari huruf saja. Kunci ini akan digunakan
pada proses tranposisi. Misal kunci yang digunakan adalah ILKOM. Maka
buatlah sebuah tabel baru dan tuliskan kata kunci di baris pertama. Kemudian
tulis hasil substitusi plainteks dibawahnya berurutan dari kanan kemudian
kebawah jika ada sisa maka diisi dengan huruf x atau sesuai dengan
kesepakatan, seperti pada Tabel 2.2.
Tabel 2.2 Tabel Kunci Enkripsi ADFGVX Cipher
I

L

K

O

M

Universitas Sumatera Utara

10

1

2

3

4

5

D

D

A

X

F

D

D

X

A

A

A

X

F

F

V

X

X

V

X

D

5) Selanjutnya urutkan kolom pada kata kunci berdasarkan alphabet. Maka
ILKOM menjadi IKLMO sehingga menjadi seperti pada Tabel 2.3.
Tabel 2.3. Perubahan Posisi Kunci ADFGVX Cipher
I

K

L

M

O

1

3

2

5

4

D

A

D

F

X

D

X

D

A

A

A

F

X

V

F

X

V

X

D

X

6) Cipherteksnya adalah huruf-huruf yang berada dikolom pertama dan
seterusnya. Maka cipherteks dari HARAHAP289 adalah DDAXAXFVDDXX
FAVDXAFX.

2.2.2

Dekripsi ADFGVX Cipher

1) Lakukan pemisahan cipherteks dengan cara membagi jumlah huruf yang ada
pada cipherteks dengan jumlah huruf yang ada pada kunci. Kita memiliki
pesan cipherteks DDAXAXFVDDXXFAVDXAFX dan misalkan kita
memiliki kunci ILKOM. Maka kita dapat membagi tiap kelompok terdiri dari
20/5= 4 huruf, menjadi DDAX AXFV DDXX FAVD XAFX
2) Selanjutnya, urutkan kunci sesuai alphabet, maka ILKOM menjadi IKLMO,
seperti pada Tabel 2.4.
Tabel 2.4 Tabel Kunci Dekripsi ADFGVX Cipher
I

K

L

M

O

Universitas Sumatera Utara

11

1

3

2

5

4

D

A

D

F

X

D

X

D

A

A

A

F

X

V

F

X

V

X

D

X

3) Urutkan kolom-kolom yang ada pada tabel 2.4 menjadi kata kunci yang kita
miliki, seperti pada Tabel 2.5.
Tabel 2.5 Tabel Kunci Dekripsi ADFGVX Cipher sesuai Urutan

4) Lakukan

pembacaan

I

L

K

O

M

1

2

3

4

5

D

D

A

X

F

D

D

X

A

A

A

X

F

F

V

X

X

V

X

D

secara

berurutan

kekanan

kemudian

kebawah

DDAXFAAXDDAXFFVDXVXX.
5)

Langkah terakhir adalah mencari padanan karakter dari dua huruf yang kita
dapatkan dengan tabel ADFGVX, seperti pada Tabel 2.6.

Tabel 2.6. Tabel ADFGVX Cipher
A

D

F

G

V

X

A

F

E

D

C

B

A

D

G

H

I

J

K

L

F

R

Q

P

O

N

M

G

S

T

U

V

W

X

V

3

2

1

0

Z

Y

Universitas Sumatera Utara

12

X

6)

4

5

6

7

8

9

Dengan mencari padanan karakter pada Tabel 2.6 maka kita dapatkan pesan
HARAHAP289.

2.3

Algoritma Knapsack

Algoritma knapsack merupakan algoritma kunci publik (asimetris) yang keamanannya
terletak pada sulitnya memecahkan persoalan knapsack (knapsack problem).
Knapsack problem merupakan permasalahan bagaimana cara mengisi knapsack

(ransel) yang mempunyai kapasitas tertentu dengan sekumpulan benda yang berbedabeda ukurannya sehingga knapsack terisi penuh sesuai dengan kapasitas
(Kromodimoeljo, S. 2010). Masing-masing benda memiliki nilai dan berat yang
sudah diasosiasikan di dalamnya. Jadi, nilai pada seluruh item dapat dimaksimalkan
dan beratnya tidak menambah kapasitas total pada knapsack (Agarwal, Ashish. 2011).

2.3.1

knapsack problem

Jika m adalah bobot knapsack dan n adalah banyaknya objek yang masing-masing
mempunyai bobot W1, W2, …, Wn. tentukan nilai bi untuk i = 1, 2, 3, …, n sedemikian
sehingga
M = b1W1 + b2W2 + …. + bnWn…………………………… (Pers 1)

Yang dalam hal ini bi hanya bernilai 0 dan 1. Jika b = 1 maka objek i dimasukkan
kedalam knapsack, sebaliknya jika b = 0, maka tidak dimasukkan ke dalam knapsack
(Sembiring, Dira Fahrendy. 2013). Ada dua jenis algoritma knapsack, yaitu:
a) Algoritma knapsack sederhana
Ide dasar dari knapsack ini adalah mengkodekan pesan sebagai rangkaian solusi
dari persoalan knapsack. Setiap bobot W1 dalam persoalan knapsack merupakan
kunci privat sedangkan bit-bit plainteks merupakan b1.

b) Superincreasing knapsack

Universitas Sumatera Utara

13

Algoritma yang digunakan untuk membangkitkan kunci publik dan kunci privat
dalam Superincreasing knapsack:
1) Tentukan barisan superincreasing dimana setiap nilai di dalam barisan lebih
besar daripada jumlah semua nilai sebelumnya.
2) Jumlahkan semua nilai di dalam barisan, kemudian bandingkan total nilai
dengan nilai terbesar di dalam barisan. Jika nilai terbesar lebih kecil atau sama
dengan total nilai maka ia dimasukkan ke dalam knapsack, jika tidak maka ia
tidak dimasukkan.
3) Kurangi total nilai dengan nilai terbesar yang telah dimasukkan. Kemudian
bandingkan total nilai sekarang dengan nilai terbesar selanjutnya, demikian
seterusnya sampai semua nilai dalam barisan selesai dibandingkan.
4) Jika bobot total sama dengan nol maka terdapat solusi persoalan
superincreasing knapsack. sebaliknya jika bobot total tidak sama dengan nol

maka tidak ada solusinya.

2.3.2 Enkripsi superincreasing knapsack

Mula-mula plainteks dipecah menjadi blok bit yang panjangnya sama dengan
kardinalitas barisan kunci publik. Kalikan setiap bit di dalam blok dengan elemen
yang berkoresponden dengan nilai di dalam kunci publik.
Contoh:
Kita gunakan kunci ADFGVX cipher diatas sebagai barisan plainteks yaitu : ILKOM
Misal A = 0, B = 1, …. Z = 25, maka:
I = 8, biner 01000
L = 11, biner 01011
K = 10, biner 01010
O = 14, biner 01110
M = 12, biner 01100
Sehingga didapatkan plainteks: 0100001011010100111001100 yang akan di enkripsi
menggunakan kunci privat sebagai berikut:
Barisan superincreasing (w) ={1, 2, 4, 8, 16}
m = 75
n = 14

maka kunci publik dapat dicari dengan menggunakan rumus (w.n) mod m.

Universitas Sumatera Utara

14

Sehingga:
(1 x 14) mod 75 = 14
(2 x 14) mod 75 = 28
(4 x 14) mod 75 = 56
(8 x 14) mod 75 = 37
(16 x 14) mod 75 = 74
Maka kunci publik yang didapatkan adalah {14, 28, 56, 37, 74}.
Kemudian plainteks dibagi menjadi blok dengan panjang 5 (panjang kunci publik),
kemudian setiap bit di dalam blok dikalikan dengan elemen yang berkoresponden
dengan kunci publik, sebagai berikut:
Blok plainteks 1: 01000
Kriptogram: (1 x 28) = 28
Blok plainteks 2: 01011
Kriptogram: (1 x 28) + (1 x 37) + (1 x 74) = 139
Blok plainteks 3: 01010
Kriptogram: (1 x 28) + (1 x 37) = 65
Blok plainteks 4: 01110
Kriptogram: (1 x 28) + (1 x 56) + (1 x 37) = 121
Blok plainteks 5: 01100
Kriptogram: (1 x 28) + (1 x 56) = 84
Jadi, cipherteks yang dihasilkan: 28, 139, 65, 121, 84

2.3.3 Dekripsi superincreasing knapsack

Untuk mendekripsikan cipherteks menjadi plainteks maka kita gunakan kunci privat,
yaitu barisan superincreasing knapsack. Mula-mula penerima pesan menghitung n-1,
yaitu inversi n modulo m, sedemikian sehingga: n.n-1 ≡ 1 (mod m) , maka untuk
mendekripsi cipherteks tersebut dengan menggunakan kunci privat {1, 2, 4, 8, 16} di
dapatkan hasil inversi n modulo m seperti pada Tabel 2.7.

Universitas Sumatera Utara

15

Tabel 2.7. Perhitungan Inversi n modulo m
n-1

n.n-1 (mod m)

1

14.1 (mod 75) = 14

2

14.2 (mod 75) =24

3

14.3 (mod 75) = 42

4

14.4 (mod 75) = 56

.

.

.

.

59

14.59 (mod 75) = 1

Dapatlah n-1 yaitu 59. Maka plainteks yang berkoresponden dengan {1, 2, 4, 8, 16}
diperoleh kembali dengan cara menggunakan algoritma superincreasing sebagai
berikut:
Temp : (cipherteks x n-1) mod m
(28 x 59) mod 75 = 2 = 2, berkoresponden dengan 01000
(139 x 59) mod 75 = 26 = 16 + 8 + 2, berkoresponden dengan 01011
(65 x 59) mod 75 = 10 = 8 + 2, berkoresponden dengan 01010
(121 x 59) mod 75 = 14 = 8 + 4 + 2, berkoresponden dengan 01110
(84 x 59) mod 75 = 6 = 4 + 2, berkoresponden dengan 01100
Sehingga painteks yang dihasilkan adalah 0100001011010100111001100, dimana
01000 = 8, berkoresponden dengan huruf “I”
01011 = 11, berkoresponden dengan huruf “L”
01010 = 10, berkoresponden dengan huruf “K”
01110 = 14, berkoresponden dengan huruf “O”
01100 = 12, berkoresponden dengan huruf “M”

Universitas Sumatera Utara