Hill Cipher : Penerapan Matriks Pada Kriptografi



Hill Cipher merupakan penerapan aritmatika modulo pada kriptografi. Teknik kriptografi ini menggunakan sebuah matriks persegi sebagai kunci yang digunakan untuk melakukan enkripsi dan dekripsi. Hill Cipher diciptakan oleh Lester S. Hill pada tahun 1929.
Teknik kriptografi ini diciptakan dengan maksud untuk dapat menciptakan cipher (kode) yang tidak dapat dipecahkan menggunakan teknik analisis frekuensi. Hill Cipher tidak mengganti setiap abjad yang sama pada plaintext dengan abjad lainnya yang sama pada ciphertext karena menggunakan perkalian matriks pada dasar enkripsi dan dekripsinya.
Hill Cipher yang merupakan polyalphabetic cipher dapat dikategorikan sebagai block cipher karena teks yang akan diproses akan dibagi menjadi blokblok dengan ukuran tertentu. Setiap karakter dalam satu blok akan saling mempengaruhi karakter lainnya dalam proses enkripsi dan dekripsinya, sehingga karakter yang sama tidak dipetakan menjadi karakter yang sama pula. Hill Cipher termasuk kepada algoritma kriptografi klasik yang sangat sulit dipecahkan oleh kriptanalis apabila dilakukan hanya dengan mengetahui berkas ciphertext saja. Namun, teknik ini dapat dipecahkan dengan cukup mudah apabila kriptanalis memiliki berkas ciphertext dan potongan berkas plaintext. Teknik kriptanalisis ini disebut known-plaintext attack.
 Dasar Teknik Hill Cipher
Dasar dari teknik Hill Cipher adalah aritmatika modulo terhadap matriks. Dalam penerapannya, Hill Cipher menggunakan teknik perkalian matriks dan teknik invers terhadap matriks. Kunci pada Hill Cipher adalah matriks n x n dengan n merupakan ukuran blok. Matriks yang menjadi kunci ini harus merupakan matriks yang invertible, yaitu memiliki inverse   sehingga :

K .  = I      (1)
Kunci harus memiliki invers karena matriks     tersebut adalah kunci yang digunakan untuk melakukan dekripsi.

Teknik Enkripsi pada Hill Cipher
Proses enkripsi pada Hill Cipher dilakukan per blok plaintext. Ukuran blok tersebut sama dengan ukuran matriks kunci. Sebelum membagi teks menjadi deretan blok-blok, plaintext terlebih dahulu dikonversi menjadi angka, masing-masing sehingga A=1, B=2, hingga Y=25. Z diberi nilai 0.
A
B
C
D
E
F
G
H
I
J
K
L
M
1
2
3
4
5
6
7
8
9
10
11
12
13
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
14
15
16
17
18
19
20
21
22
23
24
25
0
Konversi Alfabet ke Angka dalam Hill Cipher


Secara matematis, proses enkripsi pada Hill Cipher adalah:
C = K . P        (2)
Keterangan:
Ciphertext
= Kunci
Plaintext
Jika terdapat plaintext P:
P = STRIKE NOW
Maka plaintext tersebut dikonversi menjadi:
P = 19 20 18 9 11 5 14 15 23
Plaintext tersebut akan dienkripsi dengan teknik Hill Cipher, dengan kunci K yang merupakan matriks 2x2.
K =
Karena matriks kunci K berukuran 2, maka plaintext dibagi menjadi blok yang masing-masing bloknya berukuran 2 karakter. Karena karakter terakhir tidak ada memiliki pasangan, maka diberi pasangan karakter yang sama yaitu W. P menjadi STRIKENOWW. Blok pertama dari plaintext P adalah :
P12 =
Blok plaintext ini kemudian dienkripsi dengan kunci K melalui persamaan.
C12 =    =
Hasil perhitungan menghasilkan angka yang tidak berkorespondensi dengan huruf-huruf, maka lakukan modulo 26 pada hasil tersebut. Sehingga, C12  menjadi:
C12 =     (modulo 20)
Karakter yang berkorespondensi dengan 7 dan 20 adalah G dan T. maka S menjadi G dan T menjadi T. Setelah melakukan enkripsi semua blok pada plaintext P maka dihasilkan ciphertext C sebagai berikut:


P = STRIKENOW
C = 7 20 14 11 7 11 4 21 19 11
C = GTNKGKDUSK
Dari ciphertext yang dihasilkan terlihat bahwa Hill Cipher menghasilkan ciphertext yang tidak memiliki pola yang mirip dengan plaintextnya.

Teknik Dekripsi pada Hill Ciper
Proses dekripsi pada Hill Cipher pada dasarnya sama dengan proses enkripsinya. Namun matriks kunci harus dibalik (invers) terlebih dahulu. Secara matematis, proses dekripsi pada Hill Cipher dapat diturunkan dari persamaan.
C = K.P
.C = .K.P
.C = I.P
P = .C
Menjadi persamaan proses dekripsi:
P = K-1.C       (3)
Dengan menggunakan kunci,
K =
maka proses dekripsi diawali dengan mencari invers dari matriks K. Mencari invers dapat dilakukan dengan menggunakan metode operasi baris (row operation) atau metode determinan. Setelah melakukan perhitungan, didapat matriks K-1 yang merupakan invers dari matriks K, yaitu :
    =

Kunci  yang digunakan untuk melakukan dekripsi ini telah memenuhi persamaan (1) karena:
K  =    =    (modulo 26) = I
Ciphertext C = GTNKGKDUSK, akan didekripsi dengan menggunakan kunci dekripsi K-1 dengan persamaan (3). Proses dekripsi ini dilakukan blok per blok seperti pada proses enkripsi. Pertama-tama ubah huruf-huruf pada ciphertext menjadi urutan numerik.
C = 7 20 14 11 7 11 4 21 19 11
Proses dekripsi dilakukan sebagai berikut:
P1,2 = .C1,2
P1,2 =       =   (mdulo 26)
dan blok kedua:
P3,24 = C1,2
P1,2 =       =   (mdulo 26)

Setelah semua blok selesai didekripsi, maka didapatkan hasil plaintext:
P = 19 20 18 9 11 5 14 15 23
P = STRIKENOW

Teknik Kriptanalisis Terhadap Hill Cipher
Kriptanalisis terhadap Hill Cipher sangat sulit jika dilakukan dengan ciphertext-only attack, terlebih apabila matriks kunci yang digunakan berukuran besar. Kesulitan ini disebabkan oleh ciphertext Hill Cipher yang tidak memiliki pola dan setiap karakter dalam satu blok saling mempengaruhi karakter lainnya.
Teknik yang dapat digunakan untuk melakukan kriptanalisis terhadap Hill Cipher adalah knownplaintext attack. Jika kriptanalisis memiliki pecahan plaintext dan ciphertext yang saling berkorespondensi, maka Hill Cipher dapat dipecahkan. Namun proses yang cukup sulit adalah untuk menentukan panjang kunci yang digunAkan. Hal ini menjadi salah satu kekuatan yang dimiliki oleh Hill Cipher. Cara yang dapat dilakukan hanya dengan mencari tahu panjang kunci atau dengan melakukan perkiraan dan percobaan.
Kemungkinan terburuk yang dimiliki oleh Hill Cipher adalah ketika seorang kriptanalis memiliki potongan plaintext dan ciphertext yang berkorespondensi serta mengetahui panjang kunci yang digunakan. Dengan informasi ini, kriptanalis dapat memecahkan Hill Cipher dengan sangat mudah. Misalkan kriptanalis mengetahui panjang kunci K adalah 2 dan memiliki potongan berkas plaintext P dan C sebagai berikut:
P = STRI
C = GTNKGKDUSK
Dari informasi yang dimiliki, maka diketahui bahwa karakter ST pada plaintext berkorespondensi dengan karakter GT, dan karakter RI dengan NK. Pemecahan dapat dilakukan dengan persamaan linier
Misalkan kunci direpresentasikan dengan:
K =
Plaintext P dengan:
P =  =
Ciphertext C dengan:
C =  =
Dengan menerapkan persamaan (2) maka persamaan linier yang dapat dibentuk dari contoh adalah:
C = K.P
   = 
19a + 20b = 7 (i)
18a + 9b = 14 (ii)
19c + 20d = 20 (iii)
18c + 9d = 11 (iv)
Dengan menyelesaikan persamaan (i) dan persamaan (ii) lalu persamaan (iii) dan persamaan (iv) memakai aritmatika modulo 26, maka nilai a, b, c, dan d didapat:

a = 5
b = 6
c = 2
d = 3
Dengan nilai a, b, c, dan d maka kunci didapatkan, yaitu:
K =
Dengan kunci tersebut, kriptanalis hanya perlu melakukan dekripsi terhadap ciphertext keseluruhan untuk mendapatkan plaintext seutuhnya.

    Maka matrik juga berguna sebagai pengaman dalam berbagi infomasi dan menjadi alat untuk menjaga privasi dalam bidang komputer.

Komentar