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
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
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.
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
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.
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
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 1-256. 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.
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ - ® ¯ ° ¡
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.
2. Plaintext “Ilmu Komputer adalah prodi terbaik” setelah disusun sesuai dengan
aturanalgoritma Playfair Cipher:
Il mu [Sp]K om pu te r[Sp] ad al ah [Sp]p ro di [Sp]t er ba
3. Ciphertext yang dihasilkan adalah sebagai berikut:
ik
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
Naccache-Stern 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
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 faktorbersama 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
5 x 6 8
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:
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: ��� ≡ �� ����
Tabel 2.2 Nilai �� yang diperoleh dari Perhitungan
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
3. Kemudian membandingkan nilai yang ada di ruas kanan dengan nilai yang ada di ruas kiri apakah sama jika dimodulo dengan p.
(1 + 5)11≡ 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
Tabel 2.3 Nilai ���� dengan Kode Karakter 202
3. Ciphertext diperoleh dengan mengalikan semua nilai ���� dimodulo dengan
nilai p sehingga menghasilkan:
c = �71��61��50��40��31��20��11��00 ����
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:
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
Tabel 2.4 Perhitungan Ciphertext dengan Nilai 7202882
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.
Super-Playfair 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.
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