Penanganan File Teks dengan Hybrid Cryptosystem Algoritma Knapsack Naccache-Stern dan Algoritma Playfair Cipher
BAB 2
LANDASAN TEORI
2.1. Kriptografi
2.1.1. Definisi Kriptografi
Kriptografi (Cryptography) merupakan ilmu dan seni penyimpanan pesan, data, atau
informasi secara aman. Kriptografi berasal dari bahasa Yunani yaitu dari kata Crypto
dan Graphia yang berarti penulisan rahasia. Kriptografi adalah suatu ilmu yang
mempelajari penulisan secara rahasia (Ariyus, 2008). Kriptografi merupakan bagian
dari suatu cabang ilmu matematika yang disebut Cryptology. Akses perlindungan
terhadap informasi untuk masalah keamanan merupakan alasan utama dalam
menggunakan kriptografi. Selain itu juga untuk peningkatan identifikasi terhadap
individu, authentikasi, dan non repudiation. Hal ini sangat penting seiring dengan
perkembangan internet yang cukup pesat, perdagangan global, dan aktifitas-aktifitas
lainnya (Subasree & Sakhthivel, 2010). Kriptografi juga sangat berguna dalam
antisipasi kemanan komputer seperti interruption, interception, modification, dan
fabrication.
Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas
(plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali.
Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima
(receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali
ke dalam bentuk plaintext agar dapat dikenali. Proses tranformasi dari plaintext
menjadi ciphertext disebut proses enkripsi (encryption), sedangkan proses
mentransformasikan kembali ciphertext menjadi plaintext disebut proses dekripsi
(decryption). Untuk mengenkripsi dan mendekripsi data, kriptografi menggunakan
suatu
algoritma
(cipher)
dan
kunci
(key).
Universitas Sumatera Utara
7
Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan
mendekripsi. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk
mengenkripsi dan mendekripsi data. Kunci yang digunakan untuk melakukan enkripsi
dan dekripsi terbagi menjadi 2 bagian, yaitu kunci pribadi (private key) dan kunci
umum (public key)(Munir, 2006).
Gambar 2.1 Bagan Proses Enkripsi dan Dekripsi
2.1.2. Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan keamanan, layanan tersebut terdiri
dari empat aspek yaitu sebagai berikut (Sukarno, 2013):
o
Confidentiality (Kerahasiaan) merupakan layanan yang ditujukan untuk menjaga
agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
o
Integrity (Integritas) merupakan layanan yang menjamin bahwa pesan masih asli
atau belum pernah dimanipulasi selama pengiriman.
o
Authentication (Authentikasi) merupakan layanan yang berhubungan dengan
identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi
(user authentication atau entity authentication) maupun mengidentifikasi
kebenaran sumber pesan (data origin authentication).
o
Non Repudiation (Nirpenyangkalan) merupakan layanan untuk mencegah entitas
yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal
melakukan pengiriman pesan atau penerima pesan menyangkal telah menerima
pesan.
Universitas Sumatera Utara
8
2.1.3. Jenis-Jenis Algoritma Kriptografi
2.1.3.1. Algoritma Simetris
Algoritma simetris merupakan algoritma yang memiliki kunci yang sama dalam
proses enkripsi dan dekripsi sehingga algoritma ini sering disebut algoritma kunci
tunggal atau algoritma satu kunci (Kumar & Vijay, 2017). Keunggulan dari algoritma
simetris adalah proses eksekusi yang lebih cepat karena transformasi hasil enkripsi
secara langsung disalurkan untuk kinerja yang lebih baik. Salah satu masalah utama
pada algoritma simetris adalah menemukan metode yang efisien untuk menyetujui dan
bertukar kunci dengan aman. Apabila kunci dapat diketahui orang lain, maka orang
tersebut dapat melakukan enkripsi dan dekripsi pada pesan yang akan dikirim.
Masalah ini disebut dengan masalah distribusi kunci (Gutub & Khan, 2012). Contoh
dari algoritma simetris adalah Playfair Cipher, Vigenere Cipher, Caesar Cipher,
Blowfish, dll. Proses dan cara kerja algoritma simetris dapat dilihat pada gambar 2.2.
Gambar 2.2 Bagan Cara Kerja Algoritma Kunci Simetris (Sumber: Dafid, 2006)
2.1.3.2. Algoritma Asimetris
Algoritma asimetris merupakan algoritma yang memiliki kunci yang berbeda pada
saat enkripsi dan dekripsi. Kunci yang digunakan untuk enkripsi adalah kunci publik
atau public key sehingga algoritma ini juga disebut dengan algoritma kunci publik.
Sedangkan kunci untuk proses dekripsi menggunakan kunci rahasia. (Prayudi, 2005).
Algoritma asimetris merupakan algoritma yang aman karena didasarkan pada
kesulitan matematis yang secara mendasar sulit untuk memecahkan masalahnya
namun secara substansial lebih lama dari algoritma simetris. (Gutub & Khan, 2012).
Contoh dari algoritma asimetris adalah RSA, ElGamal, Knapsack Naccache-Stern, dll.
Proses dan cara kerja algoritma asimetris dapat dilihat pada gambar 2.3.
Universitas Sumatera Utara
9
Gambar 2.3 Bagan Cara Kerja Algoritma Kunci Asimetris (Sumber: Dafid, 2006)
2.1.4. Hybrid Cryptosystem
Hybrid Cryptosystem sering dipakai karena memanfaatkan keunggulan kecepatan
pemrosesan data oleh algoritma simetris dan kemudahan transfer kunci oleh algoritma
asimetris. Hal ini mengakibatkan peningkatan kecepatan tanpa mengurangi
kenyamanan
serta
keamanan
(Annelis,
2010).
Hybrid
Cryptosystem
mengkombinasikan algoritma simetris dan algoritma asimetris. Metode ini
menerapkan kriptosistem yang sangat aman dengan menggabungkan kekuatan
algoritma simetris dan algoritma asimetris yang tersedia saat ini (Gutub & Khan,
2012). Proses dan cara kerja Hybrid Cryptosystem dapat dilihat pada gambar 2.4.
Gambar 2.4 Bagan Proses Hybrid Cryptosystem
2.2. Algoritma Playfair Cipher
Playfair Cipher ditemukan oleh Sir Charles Wheatstone (1802-1875) pada tahun
1854, dan dipopulerkan oleh Baron Lyon Playfair (1819-1898), yang namanya
Universitas Sumatera Utara
10
diabadikan untuk algoritma ini. Playfair Cipher pertama kali digunakan oleh tentara
Inggris pada Perang Boer dan masih digunakan pada Perang Dunia I.
Playfair Cipher merupakan suatu algoritma kriptografi klasik yang termasuk ke dalam
polygram cipher, dimana plaintext diubah menjadi bentuk poligram dan proses
enkripsi dekripsi dilakukan untuk poligram tersebut. Pada umumnya, kunci yang
digunakan adalah serangkaian kata yang mudah dimengerti.
2.2.1. Proses Enkripsi dan Dekripsi Algoritma Playfair Cipher
Playfair Cipher merupakan algoritma yang termasuk ke dalam substitution cipher dan
mengenkripsi dua huruf (digraf) dalam suatu waktu secara bersamaan (Alam, et al,
2011). Playfair Cipher memanfaatkan matriks 5x5 untuk melakukan proses enkripsi
maupun dekripsi. Kunci kriptografinya adalah 25 buah huruf yang disusun di dalam
bujur sangkar 5x5 dengan menghilangkan huruf ‘J’ dari abjad dan menganggapnya
sama seperti huruf ‘I’. Kunci yang didapatkan akan disusun ke dalam matriks
berdasarkan urutan huruf yang muncul pada kunci. Huruf yang telah muncul tidak
akan dimasukkan lagi kedalam matriks tersebut, sedangkan huruf yang belum muncul
akan diletakkan setelahnya.
Kemungkinan kunci yang terbentuk dari algoritma
Playfair Cipher adalah 25!. Susunan kunci di dalam bujur sangkar diperluas dengan
menambahkan kolom keenam dan baris keenam. Baris keenam merupakan baris
pertama, sementara kolom keenam berisi kolom pertama. Penggunaan kunci
ditunjukkan sebagai berikut, dalam contoh ini kunci yang digunakan adalah
“SITEPU” maka matriks yang dihasilkan dari kunci tersebut dapat dilihat pada
gambar 2.5.
S
I
T
E
P
U
A
B C D U
F
G
H K L
M
N
O Q R M
V W X Y Z
S
I
T
E
S
F
V
P
Gambar 2.5 Matriks dengan Kunci “SITEPU”
Universitas Sumatera Utara
11
Pesan yang akan dienkripsi menggunakan algoritma Playfair Cipher terlebih
dahulu disusun dengan aturan sebagai berikut:
1. Mengganti huruf J dengan huruf I.
2. Menulis pesan dalam pasangan huruf (digraf).
3. Hindari digraf yang mempunyai huruf yang sama, jika ada sisipkan huruf X di
dalamnya.
4. Jika jumlah huruf dalam pesan ternyata ganjil, tambahkan huruf X di huruf
terakhir yang tidak memiliki pasangan.
Setelah pesan tersebut tersusun dengan aturan yang telah diberikan, maka selanjutnya
adalah menerapkan proses enkripsi algoritma Playfair Cipher pada pesan tersebut
dengan ketentuan sebagai berikut (Sharma et al, 2014).:
1. Jika pasangan huruf berada pada baris yang sama, maka ciphertext dari
masing-masing huruf tersebut adalah huruf yang berada disebelah kanannya
(pada kunci yang sudah diperluas).
2. Jika pasangan huruf berada pada kolom yang sama, maka ciphertext dari
masing-masing huruf tersebut adalah huruf yang berada dibawahnya (pada
kunci yang sudah diperluas).
3. Jika pasangan huruf berada pada sudut diagonal dari persegi panjang yang
terbentuk dari huruf tersebut, maka ciphertext dari masing-masing huruf
tersebut adalah huruf yang berada pada sudut-sudut yang berlawanan dan
baris yang sama dengan huruf itu sendiri.
Sebagai contoh akan dilakukan proses enkripsi pada pesan berikut “ILMU
KOMPUTER ADALAH PRODI TERBAIK”. Enkripsi akan dilakukan dengan
matriks yang memiliki kunci “SITEPU”. Proses enkripsi pesan tersebut adalah sebagai
berikut:
1. Dengan mengikuti aturan yang ada maka pesan (plaintext) tersebut dapat disusun
menjadi pasangan-pasangan huruf sebagai berikut:
IL MU KO MP UT ER AD AL AH PR OD IT ER BA IK
2. Dengan mengikuti aturan enkripsi algoritma Playfair Cipher maka plaintext
tersebut menghasilkan ciphertext sebagai berikut:
PG VF HQ RS BS PQ BU DG BG DZ RB TE PQ CB EG
Untuk melakukan dekripsi, algoritma Playfair Cipher memiliki aturan yang berbeda
dengan saat melakukan enkripsi. Aturan dekripsi pada poin pertama dan poin kedua
Universitas Sumatera Utara
12
berlawanan dengan aturan enkripsinya, sedangkan poin ketiga tidak mengalami
perubahan pada saat melakukan dekripsi.
2.2.2. Modifikasi Algoritma Playfair Cipher Matriks 16 x 16
Playfair Cipher dengan matriks 5x5 memiliki keterbatasan dalam melakukan proses
enkripsi maupun dekripsi pesan (Eweoya, 2013). Keterbatasan-keterbatasan tersebut
adalah sebagai berikut:
1. Hanya dapat menjadikan 26 huruf sebagai kunci.
2. Spasi antara 2 buah kata dalam plaintext tidak dianggap sebagai satu karakter.
3. Tidak dapat menggunakan karakter khusus dan angka.
4. Hanya terdapat huruf besar (uppercase).
5. Digraf yang mempunyai huruf yang sama dalam plaintext dipisahkan oleh
sebuah huruf X padahal huruf X sendiri digunakan sebagai karakter yang
dikenali yang ada pada matriks dan karena itu menimbulkan kerumitan.
Dalam penelitian ini, diusulkan untuk memodifikasi matriks 5x5 menjadi matriks
16x16 yang berisi 256 karakter yang ada pada tabel ASCII mulai dari kode karakter 1256. Hal ini memungkinkan untuk menghilangkan keterbatasan-keterbatan yang
dimiliki oleh matriks 5x5 sehingga proses enkripsi dan dekripsi dapat lebih luas.
Kemungkinan kunci dari matriks 16x16 ini meningkat pesat, yang semula 25! Menjadi
256!. Peran huruf X sebagai padding character akan digantikan dengan symbol ‘¿’
(inverted question mark), dan pada saat dekripsi menjadi plaintext kembali dia akan
diabaikan sehingga plaintext hasil enkripsi akan kembali seperti semula. Gambar 2.6
merupakan contoh dari matriks 16x16.
[Null]
[SOH]
[STX]
[ETX]
[EOT]
[ENQ]
[ACK]
[BEL]
[BS]
[TAB]
[LF]
[VT]
[FF]
[CR]
[SO]
[SI]
[Null]
[DLE]
[DC1]
[DC2]
[DC3]
[DC4]
[NAK]
[SIN]
[EBT]
[CAN]
[EM]
[SUB]
[ESC]
[FS]
[GS]
[RS]
[SP]
[DLE]
!
“
#
$
%
&
'
(
)
*
+
,
-
.
/
0
!
1
2
3
4
5
6
7
8
9
:
‘
<
=
>
?
@
1
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
A
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
Q
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
a
q
r
s
t
u
v
w
x
y
z
{
|
}
~
[DEL]
Universitas Sumatera Utara
q
13
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
-
®
¯
°
¡
±
²
³
´
µ
¶
·
¸
¹
º
»
¼
½
¾
¿
À
±
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Á
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
Ñ
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
ð
á
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
[Null]
[SOH]
[STX]
[ETX]
[EOT]
[ENQ]
[ACK]
[BEL]
[BS]
[TAB]
[LF]
[VT]
[FF]
[CR]
[SO]
ñ
[SI]
Gambar 2.6 Matriks 16x16 Playfair Cipher
Contoh : Melakukan enkripsi dengan menggunakan modifikasi algoritma Playfair
Cipher yang mempunyai matriks 16x16 dengan plaintext “Ilmu Komputer adalah
prodi terbaik” dan menggunakan “Sitepu” sebagai kuncinya.
1. Bentuk matriks 16x16 dengan kunci “Raviza Sitepu” ditunjukkan seperti
gambar 2.7.
R
a
v
i
z
[Sp]
S
t
e
p
u
[Null]
[SOH]
[STX]
[ETX]
[EOT]
R
[ENQ]
[ACK]
[BEL]
[BS]
[TAB]
[LF]
[VT]
[FF]
[CR]
[SO]
[SI]
[DLE]
[DC1]
[DC2]
[DC3]
[DC4]
[ENQ]
[NAK]
[SIN]
[EBT]
[CAN]
[EM]
[SUB]
[ESC]
[FS]
[GS]
[RS]
!
“
#
$
%
&
[NAK]
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
'
7
8
9
:
‘
<
=
>
?
@
A
B
C
D
E
F
7
G
H
I
J
K
L
M
N
O
P
Q
T
U
V
W
X
G
Y
Z
[
\
]
^
_
`
b
c
d
f
g
h
j
k
Y
l
m
n
o
q
r
s
w
x
y
{
|
}
~
[DEL]
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
-
®
¯
°
¡
±
²
³
´
µ
¶
·
¸
¹
º
»
¼
½
¾
¿
À
±
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Á
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
Ñ
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
ð
á
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
R
a
v
i
z
[Sp]
S
t
e
p
u
[Null]
[SOH]
[STX]
[ETX]
l
ñ
[EOT]
Gambar 2.7 Matriks 16x16 dengan Kunci “Raviza Sitepu”
Universitas Sumatera Utara
14
2. Plaintext “Ilmu Komputer adalah prodi terbaik” setelah disusun sesuai dengan
aturan algoritma Playfair Cipher:
Il mu [Sp]K om pu te r[Sp] ad al ah [Sp]p ro di [Sp]t er ba ik
3. Ciphertext yang dihasilkan adalah sebagai berikut:
Gn {a zL qn u[Null] ep [][LF] uZ Rm [STX]Z Su sq \u Se [Sp]x Ze [EOT]\
Proses dekripsi matriks 16x16 memiliki aturan yang sama dengan dekripsi matriks
5x5 algoritma Playfair Cipher, sehingga hasil dekripsi akan menghasilkan plaintext
“Ilmu Komputer adalah prodi terbaik” kembali.
2.3.
Algoritma Knapsack Naccache-Stern
Algoritma Knapsack Naccache-Stern adalah sebuah algoritma kunci publik baru yang
ditemukan oleh ilmuwan perancis bernama David Naccache dan Jacques Stern pada
tahun 1997. Algoritma ini bersifat deterministik. Algoritma ini mengenkripsi plaintext
menjadi ciphertext dengan mengalikan elemen-elemen yang ada pada kunci publik
yang terindeks pada bit bit dalam plaintext. Proses dekripsi dilakukan dengan
memecah ciphertext dengan memanfaatkan secret power (Zayaraz et al, 2009).
Algoritma ini melibatkan 3 buah proses, yaitu pembangkitan kunci, enkripsi, dan
dekripsi (Naccache & Stern, 1997).
2.3.1. Landasan Teori Matematika Algoritma Knapsack Naccache-Stern
Dalam memahami dan mempelajari kriptografi, ada baiknya terlebih dahulu
memahami dan mempelajari konsep-konsep dasar dalam perhitungan matematis yang
digunakan dalam algoritma kriptogafi tersebut. Dalam algoritma Knapsack NaccacheStern akan melibatkan konsep perhitungan matematis seperti bilangan prima, Faktor
Persekutuan Terbesar (Greatest Common Divisor(GCD)), relatif prima, aritmatika
modulo.
2.3.1.1. Bilangan Prima
Sebuah bilangan dikatakan prima apabila bilangan tersebut merupakan bilangan bulat
dan lebih besar dari 1. Bilangan prima hanya memiliki faktor 1 dan bilangan itu
sendiri dan tidak memiliki bilangan pembagi lainnya. Bilangan yang bukan bilangan
prima disebut bilangan komposit. Contoh bilangan prima adalah 2, 3, 17, 41, 103.
Universitas Sumatera Utara
15
2.3.1.2. Faktor Persekutuan Terbesar (Greatest Common Divisor(GCD))
Faktor persekutuan terbesar atau Greatest Common Divisor merupakan elemen
terbesar pada himpunan semua faktor dua buah bilangan integer. Dua bilangan
tersebut mungkin saja memiliki beberapa elemen faktor yang sama namun hanya satu
yang terbesar. Misalnya 18 memiliki faktor {1, 2, 3, 6, 9, 18}, dan 48 memiliki faktor
{1, 2, 3, 4, 6, 8, 12, 24, 48}. Maka himpunan faktor bersama yang dimiliki oleh dua
bilangan tersebut adalah {1, 2, 3, 6} dan yang terbesar adalah 6. Sehingga dapat
dinotasikan sebagai GCD(18,48) = 6 (Sadikin, 2012).
2.3.1.3. Relatif Prima
Dua buah bilangan dikatakan relatif prima jika dan hanya jika GCD dari dua buah
bilangan tersebut adalah 1. GCD(a, b) = 1 maka dapat diartikan a relatif prima dengan
b.
2.3.1.4. Aritmatika Modulo
Aritmatika modulo digunakan agar operasi aritmatika selalu menghasilkan integer
pada lingkup yang sama. Operasi modulo memerlukan 2 buah masukan yaitu sebuah
bilangan bulat a dan sebuah bilangan positif yang disebut modulus b. Operasi modulo
mengembalikan nilai r yang merupakan sisa bagi atas operasi a dibagi b. Notasi
operasi modulus dituliskan sebagai a mod b = r (Sadikin, 2012).
Tabel 2.1
menunjukkan beberapa persamaaan aritmatika dengan modulo 11.
Tabel 2.1 Aritmatika Modulo 11
Ekspresi
Hasil
9
9
18 – 10
8
7+5
1
5x6
8
-9
2
Universitas Sumatera Utara
16
2.3.2. Pembangkit Kunci Algoritma Knapsack Naccache-Stern
Untuk membangkitkan public key dan private key pada algoritma ini dilakukan
dengan cara berikut:
1. Memilih bilangan prima yang dapat dibentuk dimulai dari i = 0 sampai i = 7.
Bilangan prima yang terbentuk disimbolkan dengan �� .
2. Kalikan semua bilangan prima yang terbentuk.
3. Pilih sebuah bilangan prima (p) yang lebih besar dari hasil perkalian semua �� ,
sehingga:
�
� > � ��
�=0
4. Pilih sebuah bilangan bulat rahasia s dimana s < p-1 sehingga gcd (p-1, s) = 1.
5. Tentukan �, dengan cara �� � ≡ �� ��� �.
Maka public key yang terbentuk adalah {n, p, �0 , … , �� } dan private key-nya adalah s.
Contoh: Membangkitkan public key dan private key dilakukan dengan cara sebagai
berikut:
1. Menyusun bilangan prima secara acak yang dapat terbentuk dimulai dari i = 0
sampai dengan i =7. Maka bilangan prima yang terbentuk adalah �� = {2, 3,
5, 7, 11, 13, 17, 19}. Bilangan prima yang dibentuk tidak boleh berulang.
2. Kemudian mengalikan semua bilangan prima yang terbentuk sehingga
diperoleh 9699690.
3. Selanjutnya memilih sebuah bilangan prima yang lebih besar dari 9699690
yaitu p = 9700247, sehingga:
�
� > � ��
�=0
4. Selanjutnya memilih sebuah bilangan bulat s
yang lebih kecil dari p-1
sehingga s relatif prima dengan p-1. Maka dipilih s = 5642069.
5. Menentukan �, yang mana i dimulai dari 0 sampai 7 dengan rumus:
�� � ≡ �� ��� �
Sehingga diperoleh nilai �� seperti yang ditunjukkan pada tabel 2.2.
Universitas Sumatera Utara
17
Tabel 2.2 Nilai �� yang diperoleh dari Perhitungan
0
��
2
�� � ≡ �� ��� �
1
3
5509679
2
5
2006538
3
7
4340987
4
11
8643477
5
13
6404090
6
17
1424105
7
19
7671241
i
8567078
Maka public key yang terbentuk adalah {7, 9700247, 8567078, 5509679, 2006538,
4340987, 8643477, 6404090, 1424105, 7671241} sedangkan private key-nya adalah
5642069.
2.3.2.1. Pengujian Bilangan Prima Algoritma Agrawal Kayal Saxena (AKS)
Pada tahun 2002 tiga peneliti berkebangsaan India bernama Manindra Agrawal,
Neeraj Kayal, dan Nitin Saxena telah membangun sebuah algoritma pengujian
bilangan prima yang mempunyai sifat deterministik dalam waktu polinomial yang
diberi nama Algoritma AKS. Diberikan sebuah bilangan bulat p yang ingin diuji
keprimaannya. Selanjutnya pilih lagi sebulah bilangan bulat positif z, yang mana 2 ≤ z
< p – 2 dan GCD(p, z) = 1 (Agrawal et al, 2002). Maka p merupakan bilangan prima
jika dan hanya jika:
(1 + z)p ≡ 1 + zp (mod p)
Contoh: Menguji keprimaan dari 11. Maka perhitungan menggunakan algoritma
Agrawal Kayal Saxena dapat dilakukan dengan cara berikut:
1. Bilangan yang ingin diuji keprimaannya adalah 11, maka p = 11.
2. Menentukan z dengan cara 2 ≤ z < p – 2, maka 2 ≤ z < 9 oleh karena itu z yang
dapat dibentuk adalah {2, 3, 4, 5, 6, 7, 8}. Pilih satu nilai z yang akan
digunakan misalnya 5.
Universitas Sumatera Utara
18
3. Kemudian membandingkan nilai yang ada di ruas kanan dengan nilai yang ada
di ruas kiri apakah sama jika dimodulo dengan p.
11
(1 + 5) ≡ 1 + 511 (mod 11)
611 ≡ 1 + 511 (mod 11)
362797056 ≡ 1 + 48828125 (mod 11)
362797056 ≡ 48828126 (mod 11)
6 ≡ 6 (mod 11)
Karena nilai yang ada di ruas kiri sama dengan nilai yang ada di ruas kanan dalam
modulo p, maka p merupakan bilangan prima. Namun, jika nilai yang ada di ruas kiri
dan nilai yang ada di ruas kanan tidak sama, maka p bukan merupakan bilangan prima
(Bilangan Komposit).
2.3.3. Proses Enkripsi Algoritma Knapsack Naccache-Stern
Enkripsi pada algoritma ini dapat dilakukan dengan rumus berikut:
�
� = � �� � � ��� �
�=0
Dimana �� merupakan plaintext yang telah dikonversi menjadi bilangan biner 8 bit.
Setiap bit yang terbentuk dari plaintext menjadi pangkat pada �� yang diperoleh dari
pembangkitan kunci. Kemudian setiap �� yang berpangkat �� tersebut dikalikan dan
hasil kalinya di mod dengan p, maka hasil akhirnya yang akan menjadi ciphertext.
Contoh: Mengenkripsi karakter “ Ö ” yang mempunyai kode karakter 202 dengan
menggunakan public key = {7, 9700247, 8567078, 5509679, 2006538, 4340987,
8643477, 6404090, 1424105, 7671241} yang telah dibangkitkan sebelumnya.
1. Mengkonversi kode karakter 202 menjadi bilangan biner, sehingga diperoleh
�� = 11001010
2. Memangkatkan setiap �� dengan �� dengan i = 0 sampai i = 7 sehingga
diperoleh nilai �� � � yang ditunjukkan pada tabel 2.3.
Universitas Sumatera Utara
19
Tabel 2.3 Nilai �� � � dengan Kode Karakter 202
0
��
8567078
��
0
�� ��
1
5509679
1
5509679
2
2006538
0
1
3
4340987
1
4340987
4
8643477
0
1
5
6404090
0
1
6
1424105
1
1424105
7
7671241
1
7671241
i
1
3. Ciphertext diperoleh dengan mengalikan semua nilai �� � � dimodulo dengan
nilai p sehingga menghasilkan:
c = �7 1 � �6 1 � �5 0 � �4 0 � �3 1 � �2 0 � �1 1 � �0 0 ��� �
c = 7671241 x 1424105 x 1 x 1 x 4340987 x 1 x 5509679 x 1 mod 9700247
c = 7202882
Maka karakter “ Ö ” yang mempunyai kode karakter 202 setelah dienkripsi akan
menghasilkan ciphertext = 7202882.
2.3.4. Proses Dekripsi Algoritma Knapsack Naccache-Stern
Dekripsi pada algoritma ini dapat dilakukan dengan menentukan terlebih dahulu nilai
dari � � ��� �. Kemudian plaintext diperoleh kembali dengan rumus berikut:
�
�= �
�=0
2�
� [gcd(�� , � � ��� �) − 1]
�� − 1
Contoh: Mendekripsi ciphertext = 7202882 dengan menggunakan private key =
5642069 yang telah dibangkitkan sebelumnya.
1. Menghitung
nilai
dari
� � ��� �
sehingga
diperoleh:
7208825642069 ��� 97002477 = 6783.
2. Menentukan nilai dari �� =
2�
� � −1
� [gcd(�� , � � ��� �) − 1] yang mana nilai
i = 0 sampai i = 7 yang ditunjukkan pada tabel 2.4.
Universitas Sumatera Utara
20
Tabel 2.4 Perhitungan Ciphertext dengan Nilai 7202882
0
��
2
��
�� − �
1
[���(�� , �� ��� �) − �]
0
��
1
3
1
2
2
2
5
1
0
0
3
7
8/6
6
8
4
11
16/10
0
0
5
13
32/12
0
0
6
17
4
16
64
7
19
128/18
18
128
i
0
3. Plaintext diperoleh dengan menjumlahkan semua nilai �� mulai dari i = 0
sampai i = 7 sehingga diperoleh :
m = �7 + �6 + �5 + �4 + �3 + �2 + �1 + �0
m = 128 + 64 + 0 + 0 + 8 + 0 + 2 + 0
m = 202
Maka ciphertext dengan nilai 7202882 setelah didekripsi akan menghasilkan
plaintext dengan kode karakter 202, yang mana karaker tersebut mewakili simbol “ Ö
”.
2.4. Penelitian yang Terdahulu
Beberapa penelitian yang relevan dengan penelitian yang akan dilakukan oleh penulis
adalah sebagai berikut:
1. Berdasarkan grafik waktu proses dan perhitungan kompleksitas, diperoleh hasil
O(n) yaitu linear untuk algoritma Playfair Cipher dan algoritma ElGamal.
Pertumbuhan waktu dalam enkripsi dan dekripsi pesan berbanding lurus dengan
panjang plaintext (Mizfar, 2016).
2. (Andriana, 2016) menyimpulkan bahwa dengan adanya algoritma Super-Playfair
memperbanyak kemungkinan kunci untuk algoritma Playfair Cipher. SuperPlayfair memberikan tingkat keamanan lebih daripada sekedar Playfair Cipher
karena kunci yang digunakan lebih banyak dan beragam.
3. (Rastaghi, 2011) menyimpulkan bahwa sebuah skema knapsack telah ditemukan.
Skema ini menggunakan algoritma permutasi pada fase enkripsi untuk
Universitas Sumatera Utara
21
menghindari penyerangan kepadatan yang rendah dengan menjaga kepadatan yang
tinggi. Seperti yang dilihat, skema ini rentan, karena algoritma yang asli yang
ditemukan oleh Merkle-Hellman menggunakan urutan superincreasing sebagai
private key dan mencoba menyembunyikan urutannya dengan modulus perkalian.
4. Hybrid cryptosystem memberikan kerangka baru untuk menerapkan sistem kripto
yang sangat aman dengan menggabungkan kekuatan algoritma simetris dan
algoritma asimetris (Gutub & Khan, 2012).
5. Penelitian ini mengubah tradisional Playfair Cipher dengan 26 karakter menjadi
256 kode karakter ASCII (Eweoya, 2013).
6. Ukuran ciphertext yang dihasilkan lebih besar daripada plaintext, karena enkripsi
dapat menghasilkan kriptogram yang nilai desimalnya lebih besar daripada nilai
desimal
blok
plaintext
yang
dienkripsikan
(Munir,
2006).
Universitas Sumatera Utara
LANDASAN TEORI
2.1. Kriptografi
2.1.1. Definisi Kriptografi
Kriptografi (Cryptography) merupakan ilmu dan seni penyimpanan pesan, data, atau
informasi secara aman. Kriptografi berasal dari bahasa Yunani yaitu dari kata Crypto
dan Graphia yang berarti penulisan rahasia. Kriptografi adalah suatu ilmu yang
mempelajari penulisan secara rahasia (Ariyus, 2008). Kriptografi merupakan bagian
dari suatu cabang ilmu matematika yang disebut Cryptology. Akses perlindungan
terhadap informasi untuk masalah keamanan merupakan alasan utama dalam
menggunakan kriptografi. Selain itu juga untuk peningkatan identifikasi terhadap
individu, authentikasi, dan non repudiation. Hal ini sangat penting seiring dengan
perkembangan internet yang cukup pesat, perdagangan global, dan aktifitas-aktifitas
lainnya (Subasree & Sakhthivel, 2010). Kriptografi juga sangat berguna dalam
antisipasi kemanan komputer seperti interruption, interception, modification, dan
fabrication.
Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas
(plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali.
Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima
(receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali
ke dalam bentuk plaintext agar dapat dikenali. Proses tranformasi dari plaintext
menjadi ciphertext disebut proses enkripsi (encryption), sedangkan proses
mentransformasikan kembali ciphertext menjadi plaintext disebut proses dekripsi
(decryption). Untuk mengenkripsi dan mendekripsi data, kriptografi menggunakan
suatu
algoritma
(cipher)
dan
kunci
(key).
Universitas Sumatera Utara
7
Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan
mendekripsi. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk
mengenkripsi dan mendekripsi data. Kunci yang digunakan untuk melakukan enkripsi
dan dekripsi terbagi menjadi 2 bagian, yaitu kunci pribadi (private key) dan kunci
umum (public key)(Munir, 2006).
Gambar 2.1 Bagan Proses Enkripsi dan Dekripsi
2.1.2. Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan keamanan, layanan tersebut terdiri
dari empat aspek yaitu sebagai berikut (Sukarno, 2013):
o
Confidentiality (Kerahasiaan) merupakan layanan yang ditujukan untuk menjaga
agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
o
Integrity (Integritas) merupakan layanan yang menjamin bahwa pesan masih asli
atau belum pernah dimanipulasi selama pengiriman.
o
Authentication (Authentikasi) merupakan layanan yang berhubungan dengan
identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi
(user authentication atau entity authentication) maupun mengidentifikasi
kebenaran sumber pesan (data origin authentication).
o
Non Repudiation (Nirpenyangkalan) merupakan layanan untuk mencegah entitas
yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal
melakukan pengiriman pesan atau penerima pesan menyangkal telah menerima
pesan.
Universitas Sumatera Utara
8
2.1.3. Jenis-Jenis Algoritma Kriptografi
2.1.3.1. Algoritma Simetris
Algoritma simetris merupakan algoritma yang memiliki kunci yang sama dalam
proses enkripsi dan dekripsi sehingga algoritma ini sering disebut algoritma kunci
tunggal atau algoritma satu kunci (Kumar & Vijay, 2017). Keunggulan dari algoritma
simetris adalah proses eksekusi yang lebih cepat karena transformasi hasil enkripsi
secara langsung disalurkan untuk kinerja yang lebih baik. Salah satu masalah utama
pada algoritma simetris adalah menemukan metode yang efisien untuk menyetujui dan
bertukar kunci dengan aman. Apabila kunci dapat diketahui orang lain, maka orang
tersebut dapat melakukan enkripsi dan dekripsi pada pesan yang akan dikirim.
Masalah ini disebut dengan masalah distribusi kunci (Gutub & Khan, 2012). Contoh
dari algoritma simetris adalah Playfair Cipher, Vigenere Cipher, Caesar Cipher,
Blowfish, dll. Proses dan cara kerja algoritma simetris dapat dilihat pada gambar 2.2.
Gambar 2.2 Bagan Cara Kerja Algoritma Kunci Simetris (Sumber: Dafid, 2006)
2.1.3.2. Algoritma Asimetris
Algoritma asimetris merupakan algoritma yang memiliki kunci yang berbeda pada
saat enkripsi dan dekripsi. Kunci yang digunakan untuk enkripsi adalah kunci publik
atau public key sehingga algoritma ini juga disebut dengan algoritma kunci publik.
Sedangkan kunci untuk proses dekripsi menggunakan kunci rahasia. (Prayudi, 2005).
Algoritma asimetris merupakan algoritma yang aman karena didasarkan pada
kesulitan matematis yang secara mendasar sulit untuk memecahkan masalahnya
namun secara substansial lebih lama dari algoritma simetris. (Gutub & Khan, 2012).
Contoh dari algoritma asimetris adalah RSA, ElGamal, Knapsack Naccache-Stern, dll.
Proses dan cara kerja algoritma asimetris dapat dilihat pada gambar 2.3.
Universitas Sumatera Utara
9
Gambar 2.3 Bagan Cara Kerja Algoritma Kunci Asimetris (Sumber: Dafid, 2006)
2.1.4. Hybrid Cryptosystem
Hybrid Cryptosystem sering dipakai karena memanfaatkan keunggulan kecepatan
pemrosesan data oleh algoritma simetris dan kemudahan transfer kunci oleh algoritma
asimetris. Hal ini mengakibatkan peningkatan kecepatan tanpa mengurangi
kenyamanan
serta
keamanan
(Annelis,
2010).
Hybrid
Cryptosystem
mengkombinasikan algoritma simetris dan algoritma asimetris. Metode ini
menerapkan kriptosistem yang sangat aman dengan menggabungkan kekuatan
algoritma simetris dan algoritma asimetris yang tersedia saat ini (Gutub & Khan,
2012). Proses dan cara kerja Hybrid Cryptosystem dapat dilihat pada gambar 2.4.
Gambar 2.4 Bagan Proses Hybrid Cryptosystem
2.2. Algoritma Playfair Cipher
Playfair Cipher ditemukan oleh Sir Charles Wheatstone (1802-1875) pada tahun
1854, dan dipopulerkan oleh Baron Lyon Playfair (1819-1898), yang namanya
Universitas Sumatera Utara
10
diabadikan untuk algoritma ini. Playfair Cipher pertama kali digunakan oleh tentara
Inggris pada Perang Boer dan masih digunakan pada Perang Dunia I.
Playfair Cipher merupakan suatu algoritma kriptografi klasik yang termasuk ke dalam
polygram cipher, dimana plaintext diubah menjadi bentuk poligram dan proses
enkripsi dekripsi dilakukan untuk poligram tersebut. Pada umumnya, kunci yang
digunakan adalah serangkaian kata yang mudah dimengerti.
2.2.1. Proses Enkripsi dan Dekripsi Algoritma Playfair Cipher
Playfair Cipher merupakan algoritma yang termasuk ke dalam substitution cipher dan
mengenkripsi dua huruf (digraf) dalam suatu waktu secara bersamaan (Alam, et al,
2011). Playfair Cipher memanfaatkan matriks 5x5 untuk melakukan proses enkripsi
maupun dekripsi. Kunci kriptografinya adalah 25 buah huruf yang disusun di dalam
bujur sangkar 5x5 dengan menghilangkan huruf ‘J’ dari abjad dan menganggapnya
sama seperti huruf ‘I’. Kunci yang didapatkan akan disusun ke dalam matriks
berdasarkan urutan huruf yang muncul pada kunci. Huruf yang telah muncul tidak
akan dimasukkan lagi kedalam matriks tersebut, sedangkan huruf yang belum muncul
akan diletakkan setelahnya.
Kemungkinan kunci yang terbentuk dari algoritma
Playfair Cipher adalah 25!. Susunan kunci di dalam bujur sangkar diperluas dengan
menambahkan kolom keenam dan baris keenam. Baris keenam merupakan baris
pertama, sementara kolom keenam berisi kolom pertama. Penggunaan kunci
ditunjukkan sebagai berikut, dalam contoh ini kunci yang digunakan adalah
“SITEPU” maka matriks yang dihasilkan dari kunci tersebut dapat dilihat pada
gambar 2.5.
S
I
T
E
P
U
A
B C D U
F
G
H K L
M
N
O Q R M
V W X Y Z
S
I
T
E
S
F
V
P
Gambar 2.5 Matriks dengan Kunci “SITEPU”
Universitas Sumatera Utara
11
Pesan yang akan dienkripsi menggunakan algoritma Playfair Cipher terlebih
dahulu disusun dengan aturan sebagai berikut:
1. Mengganti huruf J dengan huruf I.
2. Menulis pesan dalam pasangan huruf (digraf).
3. Hindari digraf yang mempunyai huruf yang sama, jika ada sisipkan huruf X di
dalamnya.
4. Jika jumlah huruf dalam pesan ternyata ganjil, tambahkan huruf X di huruf
terakhir yang tidak memiliki pasangan.
Setelah pesan tersebut tersusun dengan aturan yang telah diberikan, maka selanjutnya
adalah menerapkan proses enkripsi algoritma Playfair Cipher pada pesan tersebut
dengan ketentuan sebagai berikut (Sharma et al, 2014).:
1. Jika pasangan huruf berada pada baris yang sama, maka ciphertext dari
masing-masing huruf tersebut adalah huruf yang berada disebelah kanannya
(pada kunci yang sudah diperluas).
2. Jika pasangan huruf berada pada kolom yang sama, maka ciphertext dari
masing-masing huruf tersebut adalah huruf yang berada dibawahnya (pada
kunci yang sudah diperluas).
3. Jika pasangan huruf berada pada sudut diagonal dari persegi panjang yang
terbentuk dari huruf tersebut, maka ciphertext dari masing-masing huruf
tersebut adalah huruf yang berada pada sudut-sudut yang berlawanan dan
baris yang sama dengan huruf itu sendiri.
Sebagai contoh akan dilakukan proses enkripsi pada pesan berikut “ILMU
KOMPUTER ADALAH PRODI TERBAIK”. Enkripsi akan dilakukan dengan
matriks yang memiliki kunci “SITEPU”. Proses enkripsi pesan tersebut adalah sebagai
berikut:
1. Dengan mengikuti aturan yang ada maka pesan (plaintext) tersebut dapat disusun
menjadi pasangan-pasangan huruf sebagai berikut:
IL MU KO MP UT ER AD AL AH PR OD IT ER BA IK
2. Dengan mengikuti aturan enkripsi algoritma Playfair Cipher maka plaintext
tersebut menghasilkan ciphertext sebagai berikut:
PG VF HQ RS BS PQ BU DG BG DZ RB TE PQ CB EG
Untuk melakukan dekripsi, algoritma Playfair Cipher memiliki aturan yang berbeda
dengan saat melakukan enkripsi. Aturan dekripsi pada poin pertama dan poin kedua
Universitas Sumatera Utara
12
berlawanan dengan aturan enkripsinya, sedangkan poin ketiga tidak mengalami
perubahan pada saat melakukan dekripsi.
2.2.2. Modifikasi Algoritma Playfair Cipher Matriks 16 x 16
Playfair Cipher dengan matriks 5x5 memiliki keterbatasan dalam melakukan proses
enkripsi maupun dekripsi pesan (Eweoya, 2013). Keterbatasan-keterbatasan tersebut
adalah sebagai berikut:
1. Hanya dapat menjadikan 26 huruf sebagai kunci.
2. Spasi antara 2 buah kata dalam plaintext tidak dianggap sebagai satu karakter.
3. Tidak dapat menggunakan karakter khusus dan angka.
4. Hanya terdapat huruf besar (uppercase).
5. Digraf yang mempunyai huruf yang sama dalam plaintext dipisahkan oleh
sebuah huruf X padahal huruf X sendiri digunakan sebagai karakter yang
dikenali yang ada pada matriks dan karena itu menimbulkan kerumitan.
Dalam penelitian ini, diusulkan untuk memodifikasi matriks 5x5 menjadi matriks
16x16 yang berisi 256 karakter yang ada pada tabel ASCII mulai dari kode karakter 1256. Hal ini memungkinkan untuk menghilangkan keterbatasan-keterbatan yang
dimiliki oleh matriks 5x5 sehingga proses enkripsi dan dekripsi dapat lebih luas.
Kemungkinan kunci dari matriks 16x16 ini meningkat pesat, yang semula 25! Menjadi
256!. Peran huruf X sebagai padding character akan digantikan dengan symbol ‘¿’
(inverted question mark), dan pada saat dekripsi menjadi plaintext kembali dia akan
diabaikan sehingga plaintext hasil enkripsi akan kembali seperti semula. Gambar 2.6
merupakan contoh dari matriks 16x16.
[Null]
[SOH]
[STX]
[ETX]
[EOT]
[ENQ]
[ACK]
[BEL]
[BS]
[TAB]
[LF]
[VT]
[FF]
[CR]
[SO]
[SI]
[Null]
[DLE]
[DC1]
[DC2]
[DC3]
[DC4]
[NAK]
[SIN]
[EBT]
[CAN]
[EM]
[SUB]
[ESC]
[FS]
[GS]
[RS]
[SP]
[DLE]
!
“
#
$
%
&
'
(
)
*
+
,
-
.
/
0
!
1
2
3
4
5
6
7
8
9
:
‘
<
=
>
?
@
1
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
A
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
Q
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
a
q
r
s
t
u
v
w
x
y
z
{
|
}
~
[DEL]
Universitas Sumatera Utara
q
13
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
-
®
¯
°
¡
±
²
³
´
µ
¶
·
¸
¹
º
»
¼
½
¾
¿
À
±
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Á
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
Ñ
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
ð
á
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
[Null]
[SOH]
[STX]
[ETX]
[EOT]
[ENQ]
[ACK]
[BEL]
[BS]
[TAB]
[LF]
[VT]
[FF]
[CR]
[SO]
ñ
[SI]
Gambar 2.6 Matriks 16x16 Playfair Cipher
Contoh : Melakukan enkripsi dengan menggunakan modifikasi algoritma Playfair
Cipher yang mempunyai matriks 16x16 dengan plaintext “Ilmu Komputer adalah
prodi terbaik” dan menggunakan “Sitepu” sebagai kuncinya.
1. Bentuk matriks 16x16 dengan kunci “Raviza Sitepu” ditunjukkan seperti
gambar 2.7.
R
a
v
i
z
[Sp]
S
t
e
p
u
[Null]
[SOH]
[STX]
[ETX]
[EOT]
R
[ENQ]
[ACK]
[BEL]
[BS]
[TAB]
[LF]
[VT]
[FF]
[CR]
[SO]
[SI]
[DLE]
[DC1]
[DC2]
[DC3]
[DC4]
[ENQ]
[NAK]
[SIN]
[EBT]
[CAN]
[EM]
[SUB]
[ESC]
[FS]
[GS]
[RS]
!
“
#
$
%
&
[NAK]
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
'
7
8
9
:
‘
<
=
>
?
@
A
B
C
D
E
F
7
G
H
I
J
K
L
M
N
O
P
Q
T
U
V
W
X
G
Y
Z
[
\
]
^
_
`
b
c
d
f
g
h
j
k
Y
l
m
n
o
q
r
s
w
x
y
{
|
}
~
[DEL]
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
-
®
¯
°
¡
±
²
³
´
µ
¶
·
¸
¹
º
»
¼
½
¾
¿
À
±
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Á
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
Ñ
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
ð
á
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
R
a
v
i
z
[Sp]
S
t
e
p
u
[Null]
[SOH]
[STX]
[ETX]
l
ñ
[EOT]
Gambar 2.7 Matriks 16x16 dengan Kunci “Raviza Sitepu”
Universitas Sumatera Utara
14
2. Plaintext “Ilmu Komputer adalah prodi terbaik” setelah disusun sesuai dengan
aturan algoritma Playfair Cipher:
Il mu [Sp]K om pu te r[Sp] ad al ah [Sp]p ro di [Sp]t er ba ik
3. Ciphertext yang dihasilkan adalah sebagai berikut:
Gn {a zL qn u[Null] ep [][LF] uZ Rm [STX]Z Su sq \u Se [Sp]x Ze [EOT]\
Proses dekripsi matriks 16x16 memiliki aturan yang sama dengan dekripsi matriks
5x5 algoritma Playfair Cipher, sehingga hasil dekripsi akan menghasilkan plaintext
“Ilmu Komputer adalah prodi terbaik” kembali.
2.3.
Algoritma Knapsack Naccache-Stern
Algoritma Knapsack Naccache-Stern adalah sebuah algoritma kunci publik baru yang
ditemukan oleh ilmuwan perancis bernama David Naccache dan Jacques Stern pada
tahun 1997. Algoritma ini bersifat deterministik. Algoritma ini mengenkripsi plaintext
menjadi ciphertext dengan mengalikan elemen-elemen yang ada pada kunci publik
yang terindeks pada bit bit dalam plaintext. Proses dekripsi dilakukan dengan
memecah ciphertext dengan memanfaatkan secret power (Zayaraz et al, 2009).
Algoritma ini melibatkan 3 buah proses, yaitu pembangkitan kunci, enkripsi, dan
dekripsi (Naccache & Stern, 1997).
2.3.1. Landasan Teori Matematika Algoritma Knapsack Naccache-Stern
Dalam memahami dan mempelajari kriptografi, ada baiknya terlebih dahulu
memahami dan mempelajari konsep-konsep dasar dalam perhitungan matematis yang
digunakan dalam algoritma kriptogafi tersebut. Dalam algoritma Knapsack NaccacheStern akan melibatkan konsep perhitungan matematis seperti bilangan prima, Faktor
Persekutuan Terbesar (Greatest Common Divisor(GCD)), relatif prima, aritmatika
modulo.
2.3.1.1. Bilangan Prima
Sebuah bilangan dikatakan prima apabila bilangan tersebut merupakan bilangan bulat
dan lebih besar dari 1. Bilangan prima hanya memiliki faktor 1 dan bilangan itu
sendiri dan tidak memiliki bilangan pembagi lainnya. Bilangan yang bukan bilangan
prima disebut bilangan komposit. Contoh bilangan prima adalah 2, 3, 17, 41, 103.
Universitas Sumatera Utara
15
2.3.1.2. Faktor Persekutuan Terbesar (Greatest Common Divisor(GCD))
Faktor persekutuan terbesar atau Greatest Common Divisor merupakan elemen
terbesar pada himpunan semua faktor dua buah bilangan integer. Dua bilangan
tersebut mungkin saja memiliki beberapa elemen faktor yang sama namun hanya satu
yang terbesar. Misalnya 18 memiliki faktor {1, 2, 3, 6, 9, 18}, dan 48 memiliki faktor
{1, 2, 3, 4, 6, 8, 12, 24, 48}. Maka himpunan faktor bersama yang dimiliki oleh dua
bilangan tersebut adalah {1, 2, 3, 6} dan yang terbesar adalah 6. Sehingga dapat
dinotasikan sebagai GCD(18,48) = 6 (Sadikin, 2012).
2.3.1.3. Relatif Prima
Dua buah bilangan dikatakan relatif prima jika dan hanya jika GCD dari dua buah
bilangan tersebut adalah 1. GCD(a, b) = 1 maka dapat diartikan a relatif prima dengan
b.
2.3.1.4. Aritmatika Modulo
Aritmatika modulo digunakan agar operasi aritmatika selalu menghasilkan integer
pada lingkup yang sama. Operasi modulo memerlukan 2 buah masukan yaitu sebuah
bilangan bulat a dan sebuah bilangan positif yang disebut modulus b. Operasi modulo
mengembalikan nilai r yang merupakan sisa bagi atas operasi a dibagi b. Notasi
operasi modulus dituliskan sebagai a mod b = r (Sadikin, 2012).
Tabel 2.1
menunjukkan beberapa persamaaan aritmatika dengan modulo 11.
Tabel 2.1 Aritmatika Modulo 11
Ekspresi
Hasil
9
9
18 – 10
8
7+5
1
5x6
8
-9
2
Universitas Sumatera Utara
16
2.3.2. Pembangkit Kunci Algoritma Knapsack Naccache-Stern
Untuk membangkitkan public key dan private key pada algoritma ini dilakukan
dengan cara berikut:
1. Memilih bilangan prima yang dapat dibentuk dimulai dari i = 0 sampai i = 7.
Bilangan prima yang terbentuk disimbolkan dengan �� .
2. Kalikan semua bilangan prima yang terbentuk.
3. Pilih sebuah bilangan prima (p) yang lebih besar dari hasil perkalian semua �� ,
sehingga:
�
� > � ��
�=0
4. Pilih sebuah bilangan bulat rahasia s dimana s < p-1 sehingga gcd (p-1, s) = 1.
5. Tentukan �, dengan cara �� � ≡ �� ��� �.
Maka public key yang terbentuk adalah {n, p, �0 , … , �� } dan private key-nya adalah s.
Contoh: Membangkitkan public key dan private key dilakukan dengan cara sebagai
berikut:
1. Menyusun bilangan prima secara acak yang dapat terbentuk dimulai dari i = 0
sampai dengan i =7. Maka bilangan prima yang terbentuk adalah �� = {2, 3,
5, 7, 11, 13, 17, 19}. Bilangan prima yang dibentuk tidak boleh berulang.
2. Kemudian mengalikan semua bilangan prima yang terbentuk sehingga
diperoleh 9699690.
3. Selanjutnya memilih sebuah bilangan prima yang lebih besar dari 9699690
yaitu p = 9700247, sehingga:
�
� > � ��
�=0
4. Selanjutnya memilih sebuah bilangan bulat s
yang lebih kecil dari p-1
sehingga s relatif prima dengan p-1. Maka dipilih s = 5642069.
5. Menentukan �, yang mana i dimulai dari 0 sampai 7 dengan rumus:
�� � ≡ �� ��� �
Sehingga diperoleh nilai �� seperti yang ditunjukkan pada tabel 2.2.
Universitas Sumatera Utara
17
Tabel 2.2 Nilai �� yang diperoleh dari Perhitungan
0
��
2
�� � ≡ �� ��� �
1
3
5509679
2
5
2006538
3
7
4340987
4
11
8643477
5
13
6404090
6
17
1424105
7
19
7671241
i
8567078
Maka public key yang terbentuk adalah {7, 9700247, 8567078, 5509679, 2006538,
4340987, 8643477, 6404090, 1424105, 7671241} sedangkan private key-nya adalah
5642069.
2.3.2.1. Pengujian Bilangan Prima Algoritma Agrawal Kayal Saxena (AKS)
Pada tahun 2002 tiga peneliti berkebangsaan India bernama Manindra Agrawal,
Neeraj Kayal, dan Nitin Saxena telah membangun sebuah algoritma pengujian
bilangan prima yang mempunyai sifat deterministik dalam waktu polinomial yang
diberi nama Algoritma AKS. Diberikan sebuah bilangan bulat p yang ingin diuji
keprimaannya. Selanjutnya pilih lagi sebulah bilangan bulat positif z, yang mana 2 ≤ z
< p – 2 dan GCD(p, z) = 1 (Agrawal et al, 2002). Maka p merupakan bilangan prima
jika dan hanya jika:
(1 + z)p ≡ 1 + zp (mod p)
Contoh: Menguji keprimaan dari 11. Maka perhitungan menggunakan algoritma
Agrawal Kayal Saxena dapat dilakukan dengan cara berikut:
1. Bilangan yang ingin diuji keprimaannya adalah 11, maka p = 11.
2. Menentukan z dengan cara 2 ≤ z < p – 2, maka 2 ≤ z < 9 oleh karena itu z yang
dapat dibentuk adalah {2, 3, 4, 5, 6, 7, 8}. Pilih satu nilai z yang akan
digunakan misalnya 5.
Universitas Sumatera Utara
18
3. Kemudian membandingkan nilai yang ada di ruas kanan dengan nilai yang ada
di ruas kiri apakah sama jika dimodulo dengan p.
11
(1 + 5) ≡ 1 + 511 (mod 11)
611 ≡ 1 + 511 (mod 11)
362797056 ≡ 1 + 48828125 (mod 11)
362797056 ≡ 48828126 (mod 11)
6 ≡ 6 (mod 11)
Karena nilai yang ada di ruas kiri sama dengan nilai yang ada di ruas kanan dalam
modulo p, maka p merupakan bilangan prima. Namun, jika nilai yang ada di ruas kiri
dan nilai yang ada di ruas kanan tidak sama, maka p bukan merupakan bilangan prima
(Bilangan Komposit).
2.3.3. Proses Enkripsi Algoritma Knapsack Naccache-Stern
Enkripsi pada algoritma ini dapat dilakukan dengan rumus berikut:
�
� = � �� � � ��� �
�=0
Dimana �� merupakan plaintext yang telah dikonversi menjadi bilangan biner 8 bit.
Setiap bit yang terbentuk dari plaintext menjadi pangkat pada �� yang diperoleh dari
pembangkitan kunci. Kemudian setiap �� yang berpangkat �� tersebut dikalikan dan
hasil kalinya di mod dengan p, maka hasil akhirnya yang akan menjadi ciphertext.
Contoh: Mengenkripsi karakter “ Ö ” yang mempunyai kode karakter 202 dengan
menggunakan public key = {7, 9700247, 8567078, 5509679, 2006538, 4340987,
8643477, 6404090, 1424105, 7671241} yang telah dibangkitkan sebelumnya.
1. Mengkonversi kode karakter 202 menjadi bilangan biner, sehingga diperoleh
�� = 11001010
2. Memangkatkan setiap �� dengan �� dengan i = 0 sampai i = 7 sehingga
diperoleh nilai �� � � yang ditunjukkan pada tabel 2.3.
Universitas Sumatera Utara
19
Tabel 2.3 Nilai �� � � dengan Kode Karakter 202
0
��
8567078
��
0
�� ��
1
5509679
1
5509679
2
2006538
0
1
3
4340987
1
4340987
4
8643477
0
1
5
6404090
0
1
6
1424105
1
1424105
7
7671241
1
7671241
i
1
3. Ciphertext diperoleh dengan mengalikan semua nilai �� � � dimodulo dengan
nilai p sehingga menghasilkan:
c = �7 1 � �6 1 � �5 0 � �4 0 � �3 1 � �2 0 � �1 1 � �0 0 ��� �
c = 7671241 x 1424105 x 1 x 1 x 4340987 x 1 x 5509679 x 1 mod 9700247
c = 7202882
Maka karakter “ Ö ” yang mempunyai kode karakter 202 setelah dienkripsi akan
menghasilkan ciphertext = 7202882.
2.3.4. Proses Dekripsi Algoritma Knapsack Naccache-Stern
Dekripsi pada algoritma ini dapat dilakukan dengan menentukan terlebih dahulu nilai
dari � � ��� �. Kemudian plaintext diperoleh kembali dengan rumus berikut:
�
�= �
�=0
2�
� [gcd(�� , � � ��� �) − 1]
�� − 1
Contoh: Mendekripsi ciphertext = 7202882 dengan menggunakan private key =
5642069 yang telah dibangkitkan sebelumnya.
1. Menghitung
nilai
dari
� � ��� �
sehingga
diperoleh:
7208825642069 ��� 97002477 = 6783.
2. Menentukan nilai dari �� =
2�
� � −1
� [gcd(�� , � � ��� �) − 1] yang mana nilai
i = 0 sampai i = 7 yang ditunjukkan pada tabel 2.4.
Universitas Sumatera Utara
20
Tabel 2.4 Perhitungan Ciphertext dengan Nilai 7202882
0
��
2
��
�� − �
1
[���(�� , �� ��� �) − �]
0
��
1
3
1
2
2
2
5
1
0
0
3
7
8/6
6
8
4
11
16/10
0
0
5
13
32/12
0
0
6
17
4
16
64
7
19
128/18
18
128
i
0
3. Plaintext diperoleh dengan menjumlahkan semua nilai �� mulai dari i = 0
sampai i = 7 sehingga diperoleh :
m = �7 + �6 + �5 + �4 + �3 + �2 + �1 + �0
m = 128 + 64 + 0 + 0 + 8 + 0 + 2 + 0
m = 202
Maka ciphertext dengan nilai 7202882 setelah didekripsi akan menghasilkan
plaintext dengan kode karakter 202, yang mana karaker tersebut mewakili simbol “ Ö
”.
2.4. Penelitian yang Terdahulu
Beberapa penelitian yang relevan dengan penelitian yang akan dilakukan oleh penulis
adalah sebagai berikut:
1. Berdasarkan grafik waktu proses dan perhitungan kompleksitas, diperoleh hasil
O(n) yaitu linear untuk algoritma Playfair Cipher dan algoritma ElGamal.
Pertumbuhan waktu dalam enkripsi dan dekripsi pesan berbanding lurus dengan
panjang plaintext (Mizfar, 2016).
2. (Andriana, 2016) menyimpulkan bahwa dengan adanya algoritma Super-Playfair
memperbanyak kemungkinan kunci untuk algoritma Playfair Cipher. SuperPlayfair memberikan tingkat keamanan lebih daripada sekedar Playfair Cipher
karena kunci yang digunakan lebih banyak dan beragam.
3. (Rastaghi, 2011) menyimpulkan bahwa sebuah skema knapsack telah ditemukan.
Skema ini menggunakan algoritma permutasi pada fase enkripsi untuk
Universitas Sumatera Utara
21
menghindari penyerangan kepadatan yang rendah dengan menjaga kepadatan yang
tinggi. Seperti yang dilihat, skema ini rentan, karena algoritma yang asli yang
ditemukan oleh Merkle-Hellman menggunakan urutan superincreasing sebagai
private key dan mencoba menyembunyikan urutannya dengan modulus perkalian.
4. Hybrid cryptosystem memberikan kerangka baru untuk menerapkan sistem kripto
yang sangat aman dengan menggabungkan kekuatan algoritma simetris dan
algoritma asimetris (Gutub & Khan, 2012).
5. Penelitian ini mengubah tradisional Playfair Cipher dengan 26 karakter menjadi
256 kode karakter ASCII (Eweoya, 2013).
6. Ukuran ciphertext yang dihasilkan lebih besar daripada plaintext, karena enkripsi
dapat menghasilkan kriptogram yang nilai desimalnya lebih besar daripada nilai
desimal
blok
plaintext
yang
dienkripsikan
(Munir,
2006).
Universitas Sumatera Utara