Analisis Hybrid Cryptosystem Algoritma Elgamal Dan Algoritma Triple Des
BAB 2
TINJAUAN PUSTAKA
2.1 Pengertian Kriptografi
Kriptografi adalah merupakan ilmu yang mempelajari teknik-teknik matematika yang
berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data
serta otentikasi (Munir, kriptografi, 2008 ). Kriptografi adalah proses penggunaan
berbagai teknik dan atau ilmu dan seni untuk menjaga keamanan pesan.
2.2 Pengenalan Kriptografi
Kriptografi (cryptography) berasal dari bahasa yunani: “ cryptos” yang artinya
“secret” (rahasia) dan “graphein” yang artinya “writing” (tulisan). Jadi Kriptografi
adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and
science of keeping message secure). (Munir, 2008) Kriptografi adalah ilmu yang
mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan
informasi seperti kerahasiaan, integritas data, serta otentikasi. Kata “seni” didalam
definisi diatas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah
kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan
pesan. Cara-cara unik tersebut berbeda-beda pada setiap pelaku kriptografi sehingga
setiap cara menulis pesan rahasia, pesan mempunyai nilai estetika tersendiri sehingga
kriptografi berkembang menjadi sebuah seni merahasiakan pesan. Kriptografi
mempunyai sejarah yang sangat menarik dan panjang. Kriptografi sudah digunakan
lebih dari 4000 tahun yang lalu, diperkenalkan oleh orang-orang mesir lewat
hieroglyph. Jenis tulisan ini bukanlah bentuk standard untuk menulis pesan.
Dikisahkan pada zaman romawi kuno, pada suatu saat Julius Caesar ingin
mengirimkan pesan rahasia kepada seorang jenderal di medan perang. Pesan tersebut
harus di kirim melalui seorang kurir. Karena pesan tersebut mengandung rahasia,
Julius Caesar tidak ingin pesan rahasia tersebut sampai terbuka di jalan. Julius Caesar
Universitas Sumatera Utara
kemudian memikirkan bagaimana mengatasinya. Kemudian mengacak pesan tersebut
hingga menjadi suatu pesan yang tidak dapat dipahami oleh siapapun terkecuali oleh
Jenderalnya saja. Tentu Sang Jenderal telah diberi tahu sebelumnya bagaiman cara
membaca pesan teracak tersebut yang dilakukan Julius Caesar adalah mengganti
semua susunan alfabet dari a, b, c yaitu a menjadi b, b menjadi c dan c menjadi d dan
seterusnya hingga kalimat tersebut tidak bisa dibaca siapapun.
Dalam arti lain, cryptography adalah seni dan ilmu dalam mengamankan
pesan. Dalam dunia kriptografi, pesan disebut plaintext atau cleartext. Proses untuk
menyamarkan pesan dengan cara sedemikian rupa untuk menyembunyikan isi aslinya
disebut enkripsi. Pesan yang telah dienkripsi disebut ciphertext. Proses pengembalian
sebuah
ciphertext
ke
plaintext
disebut
dekripsi.
Gambar 2.1 Konsep Dasar dari Enkripsi dan Dekripsi
Cryptographer adalah orang yang mempraktekkan ilmu kriptografi, sedangkan
cryptoanalysts adalah orang yang mempraktekkan kriptanalisis, seni dan ilmu dalam
memecahkan ciphertext.
2.3 Konsep Kriptografi
Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada
peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang
mendasari kriptografi yakni:
a. Confidentiality (kerahasiaan) yaitu layanan yang ditujukan untuk menjaga
agar isi pesan yang di kirimkan tidak dapat dibaca oleh pihak lain (kecuali pihak
pengirim, pihak penerima / pihak-pihak yang memiliki ijin). Umumnya hal ini
dilakukan dengan cara menyandikan pesan menjadi ciphertext sehingga sulit dibaca
dan dipahami. Misalnya: “BELAJAR KRIPTOGRAFI” disandikan menjadi
Universitas Sumatera Utara
“676525024912432374087133368665572917926466924334 “. Agar pesan tidak
dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan kebentuk
lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut ciphertext atau
sering juga disebut kriptogram. Ciphertext harus dapat ditransformasikan kembali
menjadi plaintext semula agar pesan yang diterima bisa dibaca.
b. Data integrity (keutuhan data) yaitu layanan yang mampu menjamin pesan
masih asli/utuh atau belum pernah dimanipulasi selama masa waktu pengiriman.
Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi
adanya manipulasi pesan tersebut oleh pihakpihak yang tidak berhak antara lain
penghapusan, pengubahan atau penambahan data yang tidak sah oleh pihak lain.
c. Authentication (otentikasi) yaitu layanan yang berhubungan dengan
identifikasi. Baik
mengidentifikasi kebenaran pihak-pihak yang berkomunikasi
maupun mengidentifikasi kebenaran sumber pesan. Dua pihak yang saling
berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat
memastikan sumber pesan. Pesan yang di kirim melalui saluran komunikasi juga harus
di otentikasi asalnya
2.4. Sistem Kriptografi
Sistem kriptografi seperti yang ditunjukkan pada gambar 2.1. terdiri dari 5 bagian
yaitu : (Sadikin, 2012)
1. Plaintext
Yaitu pesan atau data dalam bentuk aslinya dapat terbaca. Plaintext merupakan
masukan bagi algoritma enkripsi
2. Secret Key
Secret Key juga merupakan masukkan bagi algoritma enkripsi serta merupakan
nilai yang bebas
terhadap text asli dan menentukan hasil keluaran algoritma
enkripsi. Untuk selanjutnya istilah kunci rahasia sebagai padanan kata secret ke.
3. Ciphertext
Cipher text adalah keluaran algoritma enkipsi. Cipher text dapat dianngap sebagai
pesan dalam bentuk tersembunyi. Algoritma enkripsi yang baik akan menghasilkan
Universitas Sumatera Utara
cipher text yang kelihatan acak. Selanjutnya digunakan istilah teks sandi sebagai
padanan kata ciphertext
4. Algoritma enkripsi
Algoritma enkripsi memiliki 2 masukan teks asli dan kunci rahasia.Algoritma
melakukan tranformasi terhadap teks asli sehingga menghasilkan teks sandi.
5. Algoritma Dekripsi
Algoritma dekripsi memiliki 2 masukan yaitu teks sandi dan kunci rahasia.
Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci
rahasia yang dipakai algoritma dekripsi sama dengan kunci rahasia yang dipakai
algoritma enkripsi.
Kunci rahasia dibangkitkan oleh pembangkit kunci dan dikirim melalui saluran
aman ke pihak penyandi (encryptor) maupun pemulih sandi (descriptor). Teks sandi
dikirim melalui saluran umum sehingga ada pihak ketiga yang dapat membaca teks
sandi tersebut.
RIKO
IRA
M
C
Algoritma
Enkripsi
RINA
M
Algoritma
Dekripsi
Saluran Publik
Sumber
Kunci
Saluran Aman
Universitas Sumatera Utara
Gambar 2.2. Sistem Kriptografi
2.5 Kriptografi Modern
Untuk kondisi yang lebih aman, semua algortima kriptografi modern menggunakan
kunci atau key. Kunci ini dapat berisi banyak sekali peluang nilai. Batas nilai yang
mungkin untuk sebuah kunci disebut keyspace. Dalam kriptografi yang berbasiskan
kunci, terdapat dua buah bentuk umum algoritma, yaitu Algoritma Simetrik (Symetric
Algorithm) dan Algoritma Asimetrik (Asymetric Algorithm).
Perkembangan algoritma kriptografi modern berbasis bit didorong oleh
penggunaan komputer digital yang merepresentasikan data dalam bentuk biner. Muara
dari kriptografi modern adalah menyediakan keamanan pesan di dalam jaringan
computer. Adapun diagram blok kriptografi modern bisa dilihat pada Gambar 2.3.
Gambar 2.3. Blok kriptografi modern
2.5.1 Algoritma simetrik
Universitas Sumatera Utara
Algoritma simetrik adalah suatu algoritma yang simetris dengan menggunakan sebuah
kunci yang sama baik dalam melakukan enkripsi maupun dekripsi. Apabila kunci
yang digunakan dalam melakukan enkripsi dan dekripsi berbeda, maka menyebabkan
keluaran terakhir dari algoritma kacau, sehingga tidak berhasil mengembalikan bentuk
ciphertext ke plaintext semula. Karena kunci ini memegang peranan yang sangat
penting dalam melakukan enkripsi maupun dekripsi, maka algoritma simetrik ini
disebut juga dengan algoritma kunci rahasia (Secret key algorithm). Algortima ini
mengharuskan pengirim dan penerima pesan untuk menyetujui kunci yang akan
digunakan dan keamanan dari algoritma ini tergantung dari kunci yang digunakan,
sehingga kunci ini harus dirahasiakan. Jika kunci ini disebarkan berarti semua orang
dapat melakukan enkripsi dan dekripsi pesan dalam sistem tersebut.
Dalam notasi matematika, proses algoritma kunci rahasia digambarkan sebagai
berikut:
Ek(P) = C
Dk(C) = P
Ek dan Dk adalah fungsi enkripsi dan dekripsi yang menggunakan kunci sama.
Kunci Ek
Kunci Ek
Gambar 2.4 Proses Enkripsi dan Dekripsi pada algoritma Kunci Rahasia
Sumber : Kriptografi, Dony Ariyus, Andi Publisher
Algoritma Simetrik dapat dibagi menjadi dua kategori.yaitu algoritma stream
(stream algorithm) atau stream ciphers, yang beroperasi pada setiap bit dari plaintext,
dan algoritma blok (block algorithms) atau cipher blok (block ciphers), yang
beroperasi pada kelompok-kelompok bit.
Universitas Sumatera Utara
Untuk plaintext yang panjangnya lebih besar dari n-bit perlu dipilih mode operasi
untuk menentukan cara enkripsi dan dekripsi tersebut. Ada beberapa pilihan mode
operasi yang bisa diterapkan antara lain Electronic Codebook (ECB), Cipher-Block
Chaining (CBC), Cipher Feedback (CFB) dan Output FeedBack (OFB).
2.5.2 Algoritma asimetrik
Berbeda dengan algoritma kunci rahasia, algoritma kunci umum dirancang sedemikian
rupa sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci yang
digunakan untuk dekripsi, dan bahkan kunci yang digunakan untuk dekripsi tidak
dapat dikalkulasikan atau diturunkan dari kunci enkripsi. Algoritma ini disebut
algoritma kunci umum (public key algorithm) karena kunci enkripsi yang digunakan
boleh disebarluaskan, berarti setiap orang dapat melakukan enkripsi, namun hanya
pihak yang memegang kunci dekripsi saja yang dapat melakukan dekripsi.
Beberapa istilah dalam algoritma kunci umum yaitu,
1. Kunci umum, yaitu kunci yang diberikan atau disebarkan kepada publik sehingga
semua orang akan tahu.
2. Kunci privat, yaitu kunci yang tetap disimpan oleh pemilik kunci.
Dalam notasi matematika, proses algoritma kunci publik digambarkan sebagai berikut,
Ek1(P) = C
Dk2(C) = P
Ek1 fungsi enkripsi dengan kunci publik
Dk2 fungsi dekripsi dengan kunci privat
Gambar 2.5 Proses Enkripsi dan Dekripsi pada algoritma Kunci Umum
Universitas Sumatera Utara
Algoritma tersebut seperti yang digambarkan pada gambar diatas. Untuk enkripsi
konvensional, kunci yang digunakan pada proses enkripsi dan dekripsi adalah sama.
Tetapi ini bukanlah kondisi sesungguhnya yang diperlukan. Namun adalah
dimungkinkan untuk membangun suatu algoritma yang menggunakan satu kunci
untuk enkripsi dan pasangannya, kunci yang berbeda, untuk dekripsi. Lebih jauh lagi
adalah mungkin untuk menciptakan suatu algoritma yang mana pengetahuan tentang
algoritma enkripsi ditambah kunci enkripsi tidak cukup untuk menentukan kunci
dekripsi.
2.6. Hibrid Cryptosystem
Hybrid cryptosystem merupakan gabungan antara cryptosystem yang memakai
asymmetric cryptosystem dan cryptosystem yang memakai symmetric cryptosystem.
(Schneier, 1996)
Cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke
ciphertext dan sebaliknya, cryptosystem terdiri dari suatu algoritma seluruh
kemungkinan plaintext, ciphertext, dan kunci.
Algoritma hibrid adalah algoritma yang memanfaatkan dua tingkatan kunci
yaitu kunci rahasia (simetris) – yang disebut juga session key (kunci sesi) – untuk
enkripsi data dan pasangan kunci rahasia – kunci public untuk pemberian tanda tangan
digital serta melidungi kunci simetriss. (Ariyus, 2008)
Pada sistem hibrid ini enkripsi/dekripsi pesan menggunakan kriptografi kunci
simetris, sedangkan kunci simetris dienkripsi/dekripsi dengan menggunakan kunci
publik. Kunci simetris (yang disebut juga kunci sesi) dibangkitkan oleh salah satu
pihak dan mengenkripsi pesan dengan kunci tersebut. Selanjutnya kunci sesi
dienkripsikan dengan kunci publik penerima lalu dikirim bersama-sama dengan pesan
yang sudah dienkripsi. Penerima mula-mula mendekripsikan kunci sesi dengan kunci
privatnya, lalu mendekripsikan pasan dengan kunci sesi tersebut.
Kriptografi hibrid sering dipakai karena memanfaatkan keunggulan kecepatan
pemrosesan data oleh algoritma simetris dan kemudahan transfer kunci menggunakan
Universitas Sumatera Utara
algoritma asimetris. Hal ini mengakibatkan peningkatan kecepatan tanpa mengurangi
kenyamanan serta keamanan.
2.7. Manajemen Kunci
Aspek manajemen kunci sangat penting dalam aplikasi kriptografi. Manajemen kunci
yang tidak baik dapat berakibat fatal. Proses pembuatan kunci sangat penting dan
sebaiknya proses ini benar acak. Sumber acak (entropi) dapat diambil dari proses
fisika acak seperti proses radio-aktif. Sumber acak dapat juga diambil dari berbagai
kejadian (events) yang muncul secara acak. Aplikasi kriptografi dapat menggunakan
random number generator yang disediakan operating system untuk pembuatan kunci,
akan tetapi sebaiknya ini dilakukan hanya jika random number generator yang
disediakan cukup acak. (Kromodimoeljo, 2010)
Distribusi kunci secara aman juga penting untuk keperluan pengamanan komunikasi.
Sebagai contoh, untuk komunikasi yang diamankan dengan en- kripsi simetris,
tentunya kedua mitra dalam komunikasi harus menggunakan kunci yang sama. Kunci
ini dapat dibuat oleh satu pihak dan dikirim secara aman ke mitra komunikasi.
Pengiriman kunci dapat dilakukan out-of-band yaitu menggunakan jalur khusus diluar
jalur normal komunikasi, atau dilakukan in-band melalui jalur normal menggunakan
sarana public key cryptography. Alternatif dari pengiriman kunci adalah key
agreement, dimana kedua mitra berpartisipasi membuat kunci tanpa dapat diketahui
oleh pihak ketiga. Key agreement juga menggunakan sarana public key cryptography.
Penyimpanan kunci jelas sangat penting untuk pengamanan sistem enkripsi secara
menyeluruh. Kunci yang disimpan secara sembrono akan mudah untuk \dicuri" oleh
pihak yang tidak diinginkan. Solusi untuk penyimpanan kunci beraneka ragam, mulai
dari penggunaan hardware khusus dimana semua proses kriptografi dilakukan didalam
hardware khusus dan kunci enkripsi disimpan dan tidak dapat keluar dari hardware,
sampai dengan penyimpanan dalam file yang dienkripsi menggunakan password atau
passphrase. Karena praktis, metode terakhir sangat populer, yang berarti pengamanan
password menjadi penting.
Universitas Sumatera Utara
Pengamanan password juga mempunyai beberapa masalah, dari masalah
manusia seperti menulis password di secarik kertas yang ditempelkan ke meja kerja,
sampai dengan masalah sistem seperti program yang menyimpan pass- word dalam
bentuk teks.
Pada dasarnya masalah akses terhadap sesuatu yang penting seperti kunci enkripsi
menjadi masalah authentication dan tren saat ini mengarah pada mul- tiple factor
authentication. Kebenaran identititas seseorang atau sesuatu dinilai dari gabungan
berbagai atribut yang cukup unik seperti sidik jari, pengetahuan password, dan
kepemilikan sesuatu yang unik lainnya.
2.8. Konsep Acak
Sifat acak adalah (randomness) dalam kriptografi adalah sifat bebas dari
kecendrungan sehingga tidak mudah untuk diterka. Dari segi matematika, jika sudau
variabel dianggap
bersifat acak, maka teori probabilitas dapat digunakan untuk
memprediksi “kelakuan” dari variabel tersebut, antara lain variabel akan memenuhi
beberapa kreteria statistic. Metode statistika dapat digunakan, berdasarkan apa yang
sudah terjadi, untuk menilai apakah variabel memenuhi kreteria statistic untuk
variabel acak. Akan tetapi jika criteria statistik terpenuhi, belum tentu variabel benar
acak, karena sesuatu yang deterministic seperti pseudo-random number generator
dapat memenuhi kreteria statistic untuk variabel acak. Jadi criteria statistic bukan
merupakan definisi untuk variabel acak. (Kromodimoeljo, 2010)
Sifat acak dapat dikaitkan dengan urutan event,
dimaka event berikutnya
dalam suatu urutan tidak mudah untuk diterka berdasarkan apa yang sudah lalu. Sifat
ini diperlukan dalam pembuatan kunci (key generator) supaya kunci dekripsi tidak
mudah untuk diterka. Sifat acak juga dikaitkan dengan tidak adanya korelasi (atau
korelasi yang mendekati nol). Dalam kriptografi, tidak diinginkan adanya korelasi
antara naskah asli dengan naskah acak atau kunci dengan naskah acak. Ini untuk
mempersulit analisa seperti analisa frekuensi (frequency analysis) atau analisa lebih
canggih seperti linear cryptanalysis atau differential cryptanalysis.
Universitas Sumatera Utara
Meskipun tidak sebenarnya acak, sesuatu yang pseudo-random berguna dan
digunakan dalam kriptografi, tetapi harus dikombinasikan dengan sesuatu yang benar
acak. Sebagai contoh, pseudo-random number generator dikombinasikan dengan
sumber entropi yang benar acak sebagai seed,
untuk mendapatkan sesuatu yang
praktis bersifat random number generator.
2.9. Pembangkit Bilangan Acak Semu
Pembangkit Bilangan Acak-Semu atau yang biasa dikenal dengan singkatan PRNG
(Pseudo-Random Number Generator ) adalah sebuah algoritma untuk menghasilkan
suatu urutan bilangan yang terlihat acak, namun sebenarnya urutan tersebut tidak
benar-benar acak karena urutan tersebut ditentukan oleh suatu nilai awal. Urutan
bilangan yang terlihat acak ini sangat penting karena bisa dimanfaatkan untuk suatu
parameter bagi percobaan atau simulasi dan juga menjadi pusat pake praktik
kriptografi. (Pratama, 2011)
Sebuah pembangkit bilangan acak-semu bisa dimulai dengan memberikan nilai
umpan. Pembangkit bilangan acak-semu ini akan selalu memberikan urutan bilangan
yang sama jika diberikan nilai umpan yang sama, dengan jumlah bilangan yang
dihasilkan bergantung kepada besar nilai umpan yang diukur dengan satuan bit.
Keuntungan dari penggunaan pembangkit bilangan acak-semu ini adalah
efisien, algoritma ini mampu menghasilkan banyak angka dalam waktu singkat, dan
tertentu, urutan yang digunakan bisa dimunculkan kembali dengan mudah jika nilai
awalnya diketahui. Efisien adalah karakteristik yang sangat baik jika aplikasi kita
membutuhkan banyak angka. Tertentu juga akan berguna jika kita perlu mengulang
suatu urutan bilangan.
Dalam kriptografi, bilangan acak banyak dibutuhkan antara lain untuk:
1. Session dan message keys dalam cipher simetris seperti triple-DES atau Blowfish.
2. Umpan (seeds) untuk fungsi-fungsi yang membangkitkan nilai-nilai matematis
seperti bilangan prima besar pada RSA dan ElGamal.
3. Dikombinasikan dengan password untuk mengacaukan program untuk menebak
password secara offline.
Universitas Sumatera Utara
4. Initialization Vectors untuk enkripsi dengan mode cipher block chaining.
5. Nilai acak untuk berbagai skema tanda tangan digital, seperti DSA.
6. Random challenges pada protokol otentikasi seperti Kerberos
Kesemua contoh di atas menggunakan suatu nilai acak dengan ukuran tertentu. Acak
disini dalan artian acak secara probabilitas. Selain acak, biasanya juga menggunakan
ukuran yang cukup besar, misalnya 512 bit. Ukuran yang besar dan keacakan ini
membuat kriptanalis tidak akan berfikir untuk melakukan brute-force. Karena, akan
memakan waktu yang sangat lama, bisa mencapai ratusan atau ribuan tahun bahkan
dengan super komputer paling hebat.
Berikut ini beberapa contoh PRNG pembangkit bilangan acak semu :
1. Linear Congruential Generators (LCG)
2. Blum Blum Shub
3. Lagged Fibonacci generators
4. Linear feedback shift registers
5. Generalised feedback shift registers
6. Mersenne twister
7. Lehmann
8. Well Equidistributed Long-period Linear
2.10. Algoritma Lehmann
Bilangan P dan a akan dibangkitkan secara acak menggunakan program , dimana
bilangan P adalah bilangan prima, sedangkan bilangan a adalah bilangan bulat yang
merupakan
{
} Oleh karena itu, bilangan P yang didapat secara acak
tersebut harus diuji kembali keprimaannya. Dalam penelitian ini, penulis
menggunakan teori Lehmann untuk menguji keprimaannya nilai P tersebut. Dalam
teori Lehmann dinyatakan bahwa untuk setiap bilangan prima P dan setiap bilangan a
yang kurang dari P dan tidak habis dibagi oleh P, maka berlaku :
Universitas Sumatera Utara
2.11. Probabilistic Encryption
Probabilistic encryption adalah penggunaan keadaan acak pada sebuah algoritma
kriptografi, sehingga ketika mengenkripsi pesan yang sama beberapa kali, secara
umum akan menghasilkan cipher text yang berbeda. Bentuk probabilistic encryption
secara khusus digunakan pada algoritma kriptografi kunci public. Ide probabilistic
encryption pertama kali ditemukan oleh Shafi Gold Wasser dan Silvia Micali.
Inti dari metode probabilistic encryption adalah untuk meneliminasi kebocoran
informasi dengan kriptografi kunci public, karena metode ini menerapkan konsep
acak dalam proses enkripsinya sehingga setiap kali proses enkripsi terhadap pesan
yang sama akan menghasilkan nilai cipher text yang berbeda. Hal ini menyebabkan
cryptanalyst tidak dapat menerka bentuk pesan dari ciphertext yang diperolehnya,
karena setiap kali proses percobaan akan selalu menghasilkan yang berbeda-beda.
2.12. El-Gamal
Algoritma ElGamal ditemukan pada tahun 1985 oleh ilmuwan Mesir yaitu Taher
ElGamal. Algoritma ElGamal merupakan algoritma berdasarkan konsep kunci publik.
Algoritma ini pada umumnya digunakan untuk digital signature, namun kemudian
dimodifikasi
sehingga
bisa
digunakan
untuk
enkripsi
dan
dekripsi.
Algoritma kriptografi kunci publik ElGamal merupakan algoritma blok chipper yaitu
algoritma yang melakukan proses enkripsi pada blok-blok plainteks yang kemudian
menghasilkan blok-blok chipertext, yang nantinya blok-blok chipertext tersebut akan
didekripsi kembali dan hasilnya kemudian digabungkan menjadi plainteks semula.
Keamanan algoritma ElGamal terletak pada kesulitan perhitungan logaritma diskrit
pada modulo prima yang besar, sehingga upaya untuk menyelesaikan masalah
logaritma ini menjadi sulit untuk dipecahkan. Algoritma ini memiliki kelebihan yaitu
pembangkitan kunci yang menggunakan logaritma diskrit dan metode enkripsi
dekripsi yang menggunakan proses komputasi yang besar sehingga hasil enkripsinya
berukuran dua kali dari ukuran semula. Kekurangan algoritma ini adalah
membutuhkan resource yang besar karena chipertext yang dihasilkan dua kali panjang
Universitas Sumatera Utara
plaintext serta membutuhkan processor yang mampu untuk melakukan komputasi
yang besar untuk perhitungan logaritma perpangkatan besar. (Madhur, Yadav, dan
Vijay, 2012)
Dari beberapa banyak algoritma kriptografi kunci-publik yang pernah dibuat,
algoritma El-gamal juga termasuk algoritma yang populer. Algoritma ini melakukan
pemfaktoran bilangan yang sangat besar. Oleh karena alasan tersebut El-gamal
dianggap aman. Untuk membangkitkan dua kunci, dipilih dua bilangan prima acak
yang besar. (Ariyus, 2008).
Enkripsi ElGamal merupakan salah satu skema enkripsi yang memanfaatkan
pengacakan dalam proses enkripsi. Lainnya termasuk enkripsi McEliece (x 8.5), dan
Goldwasser-Micali (x 8.7.1), dan Blum-Goldwasser (x8.7.2) enkripsi probabilistik.
Skema enkripsi deterministik seperti RSA juga dapat menggunakan pengacakan untuk
menghindari beberapa serangan (misalnya, lihat x8.2.2 (ii) dan x8.2.2 (iii)). Ide dasar
di balik enkripsi acak adalah dengan menggunakan pengacakan untuk keamanan
kriptografi dari proses enkripsi melalui satu atau lebih metode berikut - Meningkatkan
ukuran efektif dari ruang pesan plaintext. Proses enkripsi menggunakan kunci publik
(p,g,y) dan sebuah bilangan integer acak k (k
{0,1,..., p − 1}) yang dijaga
kerahasiaannya oleh penerima pesan. Untuk setiap karakter dalam pesan dienkripsi
dengan menggunakan
bilangan
k
yang
berbeda-beda. Satu karakter
yang
direpresentasikan dengan menggunakan bilangan bulat ASCII akan menghasilkan
kode dalam bentuk blok yang terdiri atas dua nilai (a, b). (Rashmi Singh, Shiv Kumar,
2012)
a) Ambil sebuah karakter dalam pesan yang akan dienkripsi dan transformasi
karakter tersebut ke dalam kode ASCII sehingga diperoleh bilangan bulat m.
Plainteks tersebut disusun menjadi blok-blok m1, m2, …, sedemikian hingga
setiap blok merepresentasikan nilai di dalam rentang 0 (nol) sampai p-1.
b) Memilih bilangan acak k, yang dalam hal ini 0 < k < p-1, sedemikian hingga k
relative prima dengan p-1.
c) Hitung nilai a dan b dengan persamaan berikut :
a = gk
Universitas Sumatera Utara
(mod p) …..………(4)
b = yk
m (mod p) ...……..(5)
d) Diperoleh cipherteks untuk karakter m tersebut dalam blok (a,b)
e) Melakukan proses di atas untuk seluruh karakter dalam pesan termasuk
karakter spasi.
Dekripsi dari cipherteks ke plainteks menggunakan kunci rahasia a yang
disimpan kerahasiaanya oleh penerima pesan. Teorema :
Diberikan (p,g, y) sebagai kunci public dan x sebagai kunci rahasia pada
algoritma ElGamal. Jika diberikan cipherteks (a, b), maka
m = b/a x mod p .......... (4)
dengan M adalah plainteks.
Di mana nilai
(ax)-1= r –a = rp -1-a mod p. … (5)
a. Ambil sebuah blok cipherteks dari pesan yang telah dienkripsikan pengirim.
b. Dengan menggunakan a yang dirahasiakan oleh penerima, hitung nilai
plainteks dengan menggunakan “persamaan (4)” dan “persamaan (5)”.
Key
Pseudo Random sequence
Plaintext Bitstream
Plaintext stream
Cipertext
1111111100000
Pseudo Random sequence
Ciphertext stream
1001101011010
0110010111010
Gambar 2.6. Pembentukan Kunci
Universitas Sumatera Utara
Secara garis besar algoritma el-gamal mempunya langkah-langkah pembentukan
kunci sebagai berikut :
a. Bilangan prima, p (bersifat public atau tidak rahasia)
b. Bilangan acak, g (dimana g < p dan bersifat public atau tidak rahasia)
c. Bilangan acak, x (dimana x < p dan bersifat private atau rahasia)
d. Bilangan acak, k (dimana k < p dan bersifat private atau rahasia)
e. m merupakan plainteks dan bersifat private/rahasia
f. a dan b merupakan pasangan chiperteks hasil enkripsi bersifat private atau
tidak rahasia.
Proses Pembentukan kunci Algoritma ElGamal Proses pembentukan kunci
merupakan proses penentuan suatu bilangan yang kemudian akan digunakan sebagai
kunci pada proses enkripsi dan dekripsi pesan. Kunci untuk enkripsi dibangkitkan dari
nilai p, g, y sedangkan kunci untuk dekripsi terdiri dari nilai x, p. Masing-masing nilai
mempunyai persyaratan yang harus dipenuhi.
Langkah-langkah dalam pembuatan kunci adalah sebagai berikut :
1. Pilih sembarang bilangan prima p, dengan syarat p > 255.
2. Pilih bilangan acak g dengan syarat g < p.
3. Pilih bilangan acak x dengan syarat 1 ≤ x ≤ p – 2.
4. Hitung y = g^x mod p.
Kunci public nya adalah y, g, p sedangkan kunci private nya adalah x. nilai y, g, dan p
tidak dirahasiakan sedangkan nilai x harus dirahasiakan karena merupakan kunci
privat untuk mendekripsi plainteks. (Rashmi Singh, Shiv Kumar, 2012).
2.13. Algoritma DES
2.13.1. Proses enkripsi algoritma DES
Data Encrytion Standar (DES) merupakan teknik atau algoritma kriptografi
penyandian pesan yang menggunakan teknik blok simetris, Algoritma DES juga
memerlukan sebuah kunci yang panjang bloknya 64 bit di setiap blok DES digunakan
Universitas Sumatera Utara
untuk mengamankan data pada perangkat lunak dan keras negara tersebut. Dan berikut
desain input-output algoritma DES.
Gambar 2.7. DES input-output
Sumber : ( ZHONG PuCha & BAO WanSu,2010 )
Dapat dilihat bahwa ada dua input untuk fungsi enkripsi, yaitu plaintext dengan
panjang 64-bit dan kunci dengan panjang 56-bit. Seperti pada gambar 2.8
Gambar 2.8. Tahapan proses enkripsi DES
Sumber : Munir, 2008
Untuk mengenkripsi data dengan menggunakan algoritma DES, dimulai dengan
membagi bit dari teks tersebut kedalam blok-blok dengan ukuran blok sebesar 64-bit,
yang kemudian disebut blok plaintext. Ukuran efektif dari kunci rahasia (secret key) K
Universitas Sumatera Utara
adalah k = 56 bit, masukan kunci (input key) K dispesifikasikan sebagai 64-bit kunci
(key), dan 8-bit (bit 8, 16,…,64) digunakan sebagai parity bit. Parity bit tersebut akan
mereduksi ukuran efektif key dari 64-bit menjadi 56-bit. Proses enkripsi dimulai
dengan 16 iterasi blok ciphertext (disebut juga round) dengan menggunakan initial
-1
permutation (IP ) dan diakhiri dengan invers initial permutation (IP ).(ZHONG
PuCha & BAO WanSu, 2010)
2.13.2. Proses dekripsi algoritma DES
Algoritma yang digunakan untuk enkripsi dan dekripsi sebenarnya sama, hanya
perbedaannya pada dekripsi pengiriman subkey yang terbalik. Untuk proses Dekripsi
yang berdasarkan algoritma enkripsi dengan menggunakan kunci yang sama tetapi
tetapi dengan membalikkan key schedule, yang dimulai dari K16,K15,…,K1. Efek dari
IP -1 dibatalkan oleh IP pada proses dekripsi, membebaskan (R16, L16); dengan
menggunakan round-1 sebagai input. Operasi pada bagian kiri (L) adalah:
L0 f(R0, Ki) Maka : R16 ⊕⊕ f(L16, K16)
Setelah : L16 = R15 dan R16 = L15 ⊕ f(R15, K16) Ini sama dengan :
L15 f(R⊕ , K ) ⊕ f(R , K ) = L15
15
16
15
16
Jadi hasil dekripsi pada round-1 adalah (R , L ). Penggunaan key schedule pada
15
15
dekripsi DES, subkey K ,..,K dibuat berdasarkan algoritma. Setelah K telah dibuat,
1
16
16
nilai asli dari register 28-bit C dan D dimasukkan kembali (masing-masing di rotasi
28-bit). Untuk membuat subkey K ,…,K , caranya adalah dengan menukarkan rotasi
1
16
left-shift dengan right-shift dan merubah nilai shift v1 = 0.Untuk melihat algoritma
yang sama dalam urutan terbalik dapat dilihat pada Gambar 6 [STALL95]. Pada
gambar tersebut dapat dilihat bahwa nilai berikutnya dari proses dekripsi adalah sama
dengan nilai yang sama dari proses enkripsi dengan dua bagian dari nilai yang
ditukarkan (swap). Dengan cara lain, dianggap bagian enkripsi yang ke-i dinotasikan
dengan Li || Ri (Li dikonkantinasi dengan Ri). Kemudian untuk input (16-i) yang sama
dari taraf dekripsi adalah Ri || Li.
Universitas Sumatera Utara
Gambar. 2.9. Proses Enkripsi dan Dekripsi Algoritma DES
Sumber : Munir, 2008
Pada Gambar 2.9. setelah iterasi terakhir dari proses enkripsi, output saling
-1
ditukarkan, maka input untuk bagian IP
adalah R
16
|| L . Outputnya merupakan
16
ciphertext. Kemudian ciphertext tersebut digunakan sebagai input untuk algoritma
DES. Langkah pertama adalah dengan memasukkan ciphertext melalui IP, yang akan
d
d
menghasilkan jumlah 64-bit : L || R . Juga diketahui bahwa IP merupakan invers
0
0
-1
dari IP , maka : Ld || Rd = IP(ciphertext)
0
0
-1
-1
d
d
Ciphertext = IP (R || L ) , L || R = IP(IP (R || L )) = R || L
16
16
0
0
16
16
16
16
Input pada tingkat pertama dari proses dekripsi sama dengan 32-bit ditukarkan
dengan output bagian ke-16 dari proses enkripsi. Pertama, dengan mengingat bahwa
Universitas Sumatera Utara
proses enkripsi adalah berdasarkan persamaan (Ld || Rd = IP(ciphertext)). Maka
0
d
d
d
d
d
0
pada proses dekripsi : L = R = L = R R = L f(R⊕ , K ) = R f(R⊕ ,K )
1
0
16
15,
1
0
0
16
16
15
16
d
R = [L f(R⊕ ,K )] ⊕ f(R ,K ) Karena fungsi XOR mempunyai sifat :
1
15
15
16
15
16
[A B] ⊕ C = A ⊕ [B ⊕⊕ C] , D ⊕ D = 0, E ⊕ 0 = E
Dapat dilihat bahwa output bagian terakhir dari proses dekripsi adalah R || L .
0
0
-1
Penukaran 32-bit dilakukan, maka input untuk bagian IP adalah L || R , tetapi :
0
–1
0
-1
IP (L || R ) = IP (IP (plaintext)) = plaintext
0
0
Dengan demikian berdasarkan persamaan diatas, maka plaintext yang asli dapat
diperoleh. (ZHONG PuCha & BAO WanSu, 2010)
2.14. Triple DES
2.14.1. Sejarah Triple DES
Pada akhir tahun 1960, IBM memulai suatu riset Lucifer proyek yang dipimpin oleh
Horst Feistel untuk komputer kriptografi. Proyek ini berakhir pada tahun 1971 dan
Lucifer yang pertama kali dikenal sebagai blok cipher pada pengoperasian pada blok
64 bit dan menggunakan ukuran kunci 128 bit. Setelah IBM mengembangkan suatu
sistem enkripsi yang dikomersilkan, maka Lucifer disebut dengan DES (Data
Encryption Standard), proyek ini dipimpin oleh Walter Tuchman, hasil dari riset ini
merupakan versi dari Lucifer yang bersifat menentang pemecahan algoritma
kriptografi. (Kurniawan, Yusuf, Kriptografi. Keamanan Internet dan jaringan
Komunikasi, 2004.)
Pada tahun 1973, National Burean of Standard (NBS), sekarang menjadi
National Institute of Standard and Technology (NIST), mengeluarkan proposal cipher
standar untuk nasional. IBM menyampaikan hasil risetnya tentang proyek DES dan
mengajukan sebagai kandidat untuk cipher standar nasional. NBS meminta agar
National Security Agency (NSA) untuk melakukan evaluasi keamanan algoritma dan
menentukan apakah pantas menjadi standar pemerintahan. Pada bulan November
1976, DES dipilih sebagai standar yang dipakai pada pemerintahan dan authorize
Universitas Sumatera Utara
untuk menggunakan atas nama US Government Communication. Undang-undang atas
penggunaan DES yaitu PUB 46 diterbitkan pada 15 Januari 1977.
Algoritma DES merupakan salah satu proposal yang terbaik pada tahun 1977,
tidak ada kritik yang datang dari kalangan ilmuan tentang panjang kunci yang
digunakan dan S-Box yang merupakan bagian internal dari DES. Selama 20 tahun
algoritma DES dipakai sebagai standar nasinal. Pada tahun 1990 panjang kunci DES
dianggap terlalu pendek dan pada tahun 1998, 70 ribu PC di internet berhasil membobol
satu kunci DES dalam tempo waktu 96 hari, tahun 1999 dalam tempo 22 hari. Dengan
alasan tersebut, maka pada tahun 2001 NIST mengganti DES menjadi Triple DES sebagai
standar dari algoritma DES.
Tahap pertama, plainteks yang diinputkan dioperasikan dengan kunci eksternal
pertama (K1) dan melakukan proses enkripsi dengan menggunakan algoritma DES.
Sehingga menghasilkan pra-cipherteks pertama. Tahap kedua, pra-cipherteks pertama
yang dihasilkan pada tahap pertama, kemudian dioperasikan dengan kunci eksternal
kedua (K2) dan melakukan proses enkripsi atau proses dekripsi (tergantung cara
pengenkripsian yang digunakan) dengan menggunakan algoritma DES. Sehingga
menghasilkan pra-cipherteks kedua. Tahap terakhir, pra-cipherteks kedua yang
dihasilkan pada tahap kedua, dioperasikan dengan kunci eksternal ketiga (K3) dan
melakukan proses enkripsi dengan menggunakan algoritma DES, sehingga
menghasilkan cipherteks (C).
Gambar. 2.10. Algoritma Triple DE S(NIST, 2004)
Sumber : Munir, 2008
Universitas Sumatera Utara
Keterangan pada gambar :
1.
Dilakukan tiga kali DES dengan cara seri; hasil enkripsi DES1 menjadi
masukan DES2 dan hasil enkripsi DES2 menjadi masukan DES3.
2.
3.
DES1, DES2, dan DES3 memiliki tiga kunci dengan kemungkinan:
a.
Ketiga kunci berlainan sama sekali.
b.
Kunci 1 dan kunci 2 berlainan; kunci 1 = kunci 3
c.
Ketiga kunci sama
Hasil enkripsi DES3 merupakan cipherteks yang dikirimkan.
2.14.2. Pemilihan kunci
Ada dua pilihan untuk pemilihan kunci eksternal algoritma Triple, yaitu:
Jumlah kunci yang digunakan pada Triple DES adalah 3 buah dengan panjang
masing-masing kunci adalah 8 karakter.
Ada 3 kemungkinan pemilihan kunci yang digunakan:
1. K1 ≠ K2 ≠ K3
2. K1 = K3 ≠ K2
3. K1 = K2 = K3
Pemilihan kunci biasanya didasarkan atas metode Triple DES mana yang akan
digunakan:
1. Metode EEE atau EK3( EK2( EK1 (P))).
2. Metode EDE atau EK3( DK2( EK1 (P))).
Untuk metode pertama maka ketiga kemungkinan kunci dapat digunakan dikarenakan
proses yang terjadi adalah Enkripsi sebanyak 3 kali, meskipun kunci yang paling
aman adalah K1 ≠ K2 ≠ K3 dikarenakan panjang kunci adalah 168 bits (setelah
mengalami proses permutasi PC-1) .
Untuk metode kedua maka kemungkinan yang dapat dipakai adalah pilihan pertama
dan kedua. Pilihan ketiga, di mana semua kunci adalah sama, tidak dapat digunakan
karena akan mengubah Triple DES menjadi DES. Dapat dilihat pada persamaan
berikut:
EK3( DK2( EK1 (P))), dengan K1 = K2 = K3,
Universitas Sumatera Utara
maka DK2( EK1 (P)) = P,
dan didapat EK3(P)
Pada proses pembentukan kunci internal ini dapat dilakukan sebelum atau bersamaan
dengan proses enkripsi. Karena ada 16 putaran, dibutuhkan kunci internal sebanyak
16 buah, yaitu K1, K2, K3, ..., K16. Kunci internal dibangkitkan dari kunci
eksternal yang panjangnya 64 bit atau 8 karakter.
Gambar 2.11 Flowchart Pembentukan Kunci DES
Proses pembentukan kunci pada algoritma 3DES adalah sebagai berikut.
Misalkan: Input key = “ALGORITM” Input key dalam biner:
0100000101001100010001110100111101010010010010010101010001001101
Universitas Sumatera Utara
Input key dalam biner dijadikan masukkan ke Matriks permutasi kompresi sehingga
menghasilkan 56 bit
00000000111111110000000001010001110011001110101010100000
Pecah menjadi 2 (dua) bagian:
C0
: 0000000011111111000000000101
D0
: 1000111001100111010101010000
Selanjutnya dilakukan pergeseran bit ke kiri atau Left Shift terhadap C0 dan
D0. Pergeseran bit dilakukan sepanjang 1 (satu) atau 2 (dua) bit bergantung pada tiap
putaran. Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 2.1:
Tabel 2.1 Jumlah Pergeseran Bit
Putaran, i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Jumlah pergeseran bit
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
Keterangan:
Ci = LeftShift(Ci-1) Di = LeftShift(Di-1)
Ci adalah nilai C pada putaran ke-i
Di adalah nilai D pada putaran ke-i
2.14.3. Perancangan sistem
Perancangan dimulai dengan pembuatan diagram konteks, berupa gambaran system
penerapan algoritma Triple secara garis besar.
Universitas Sumatera Utara
Gambar 2.12 Diagram Konteks Triple DES
Sumber : Munir, 2008
Contoh file yang akan dienkripsi dan didekripsi berikut ini diambil dari file teks
dan kunci yang digunakan adalah saling bebas.
(K1 ≠ K2 ≠ K3 ≠ K1) yaitu:
Kunci 1 : Enkripsi
Kunci 2 : Keamanan
Kunci 3 : Dekripsi
Pada dasarnya algoritma yang digunakan sama, hanya pada Triple DES
dikembangkan dengan melakukan enkripsi dengan implementasi algoritma DES
sebanyak tiga kali. Triple DES memiliki tiga buah kunci yang berukuran 168-bit (tiga
kali kunci 56-bit dari DES). Pada algoritma Triple DES dibagi menjadi tiga tahap,
setiap tahapnya merupakan implementasi dari algoritma DES.
Tahap pertama, plainteks yang diinputkan dioperasikan dengan kunci eksternal
pertama (K1) dan melakukan proses enkripsi dengan menggunakan algoritma DES.
Sehingga menghasilkan pra-cipherteks pertama.
Tahap kedua, pra-cipherteks pertama yang dihasilkan pada tahap pertama,
kemudian dioperasikan dengan kunci eksternal kedua (K2) dan melakukan proses
enkripsi atau proses dekripsi (tergantung cara pengenkripsian yang digunakan) dengan
menggunakan algoritma DES. Sehingga menghasilkan prs-cipherteks kedua. Tahap
Universitas Sumatera Utara
terakhir, pra-cipherteks kedua yang dihasilkan pada tahap kedua, dioperasikan dengan
kunci eksternal ketiga (K3) dan melakukan proses enkripsi dengan menggunakan
algoritma DES, sehingga menghasilkan cipherteks (C), untuk algoritma Triple DES
adalah sebagai berikut:
Li = Ri – 1
Ri = Li – 1 f(Ri – 1, Ki).
Bagian R disubstitusikan pada fungsi ekspansi panjangnya menjadi 48-bit kemudian
di XOR-kan dengan kunci internal yang sudah diproses sebelumnya pada proses
pembangkitan kunci (pada putaran pertama menggunakan kunci internal pertama,
dan
seterusnya).
Hasil
XOR kemudian
disubstitusikan pada S-box yang
dikelompokkan menjadi 8 kelompok, masing-masing 6-bit hasilnya menjadi 4-bit.
Kelompok 6-bit pertama menggunakan S1, kelompok 6-bit kedua menggunakan
S2, dan seterusnya. Setelah proses S-box tersebut panjangnya menjadi 32-bit.
Kemudian disubstitusikan lagi pada matriks permutasi P-box, kemudian
di-XOR-kan
dengan bagian L. Hasil dari XOR tersebut disimpan untuk bagian
selanjutnya. Sedangkan untuk bagian Ldiperoleh dari bagian Ryang sebelumnya.
Proses tersebut dilakukan 16 kali.Setelah 16 putaran selesai, bagian Ldan
Rdigabungkan dan disubstitusikan pada matriks permutasi awal balikan (invers
initial permutation) atau IP-1, hasilnya merupakan cipherteks 64-bit.
2.14.4 Differential Attack
Differential cryptanalysis adalah metode yang menganalisa hubungan dari perbedaan
atas pasangan plaintext dengan pasangan ciphertext. Perbedaan ini dapat digunakan
untuk mencari kemungkinan kunci yang digunakan dan menentukan kunci mana yang
paling cocok. Metode ini dapat diterapkan pada pasangan plaintext yang memiliki
pola perbedaan yang sama terhadap pasangan ciphertext. Untuk DES, tingkat
perbedaan yang digunakan adalah menggunakan metode XOR terhadap pasangan
plaintext yang dipilih. (Biham & Shamir, 1990)
Notasi yang digunakan adalah sebagai berikut:
1. P melambangkan plaintext, T melambangkan ciphertext.
Universitas Sumatera Utara
2. (P, P*) adalah pasangan plaintext yang akan dilakukan operasi XOR untuk
mendapatkan nilai Pl di mana Pl = P ⊕ P*.
3. (T, T*) adalah pasangan plaintext yang akan dilakukan operasi XOR untuk
mendapatkan nilai Tl di mana Tl = T ⊕ T*.
Dengan karateristik dari S-box ada 642 = 4,096 kemungkinan dari masukan (x,
x*). Besar dari x, x* dan xl = x ⊕ x* adalah 6 bit. Besar dari y = S(x), y* = S(x*), dan
yl = y ⊕ y* = S(x) ⊕ S(x*) adalah 4 bit.
Universitas Sumatera Utara
TINJAUAN PUSTAKA
2.1 Pengertian Kriptografi
Kriptografi adalah merupakan ilmu yang mempelajari teknik-teknik matematika yang
berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data
serta otentikasi (Munir, kriptografi, 2008 ). Kriptografi adalah proses penggunaan
berbagai teknik dan atau ilmu dan seni untuk menjaga keamanan pesan.
2.2 Pengenalan Kriptografi
Kriptografi (cryptography) berasal dari bahasa yunani: “ cryptos” yang artinya
“secret” (rahasia) dan “graphein” yang artinya “writing” (tulisan). Jadi Kriptografi
adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and
science of keeping message secure). (Munir, 2008) Kriptografi adalah ilmu yang
mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan
informasi seperti kerahasiaan, integritas data, serta otentikasi. Kata “seni” didalam
definisi diatas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah
kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan
pesan. Cara-cara unik tersebut berbeda-beda pada setiap pelaku kriptografi sehingga
setiap cara menulis pesan rahasia, pesan mempunyai nilai estetika tersendiri sehingga
kriptografi berkembang menjadi sebuah seni merahasiakan pesan. Kriptografi
mempunyai sejarah yang sangat menarik dan panjang. Kriptografi sudah digunakan
lebih dari 4000 tahun yang lalu, diperkenalkan oleh orang-orang mesir lewat
hieroglyph. Jenis tulisan ini bukanlah bentuk standard untuk menulis pesan.
Dikisahkan pada zaman romawi kuno, pada suatu saat Julius Caesar ingin
mengirimkan pesan rahasia kepada seorang jenderal di medan perang. Pesan tersebut
harus di kirim melalui seorang kurir. Karena pesan tersebut mengandung rahasia,
Julius Caesar tidak ingin pesan rahasia tersebut sampai terbuka di jalan. Julius Caesar
Universitas Sumatera Utara
kemudian memikirkan bagaimana mengatasinya. Kemudian mengacak pesan tersebut
hingga menjadi suatu pesan yang tidak dapat dipahami oleh siapapun terkecuali oleh
Jenderalnya saja. Tentu Sang Jenderal telah diberi tahu sebelumnya bagaiman cara
membaca pesan teracak tersebut yang dilakukan Julius Caesar adalah mengganti
semua susunan alfabet dari a, b, c yaitu a menjadi b, b menjadi c dan c menjadi d dan
seterusnya hingga kalimat tersebut tidak bisa dibaca siapapun.
Dalam arti lain, cryptography adalah seni dan ilmu dalam mengamankan
pesan. Dalam dunia kriptografi, pesan disebut plaintext atau cleartext. Proses untuk
menyamarkan pesan dengan cara sedemikian rupa untuk menyembunyikan isi aslinya
disebut enkripsi. Pesan yang telah dienkripsi disebut ciphertext. Proses pengembalian
sebuah
ciphertext
ke
plaintext
disebut
dekripsi.
Gambar 2.1 Konsep Dasar dari Enkripsi dan Dekripsi
Cryptographer adalah orang yang mempraktekkan ilmu kriptografi, sedangkan
cryptoanalysts adalah orang yang mempraktekkan kriptanalisis, seni dan ilmu dalam
memecahkan ciphertext.
2.3 Konsep Kriptografi
Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada
peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang
mendasari kriptografi yakni:
a. Confidentiality (kerahasiaan) yaitu layanan yang ditujukan untuk menjaga
agar isi pesan yang di kirimkan tidak dapat dibaca oleh pihak lain (kecuali pihak
pengirim, pihak penerima / pihak-pihak yang memiliki ijin). Umumnya hal ini
dilakukan dengan cara menyandikan pesan menjadi ciphertext sehingga sulit dibaca
dan dipahami. Misalnya: “BELAJAR KRIPTOGRAFI” disandikan menjadi
Universitas Sumatera Utara
“676525024912432374087133368665572917926466924334 “. Agar pesan tidak
dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan kebentuk
lain yang tidak dapat dipahami. Bentuk pesan yang tersandi disebut ciphertext atau
sering juga disebut kriptogram. Ciphertext harus dapat ditransformasikan kembali
menjadi plaintext semula agar pesan yang diterima bisa dibaca.
b. Data integrity (keutuhan data) yaitu layanan yang mampu menjamin pesan
masih asli/utuh atau belum pernah dimanipulasi selama masa waktu pengiriman.
Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi
adanya manipulasi pesan tersebut oleh pihakpihak yang tidak berhak antara lain
penghapusan, pengubahan atau penambahan data yang tidak sah oleh pihak lain.
c. Authentication (otentikasi) yaitu layanan yang berhubungan dengan
identifikasi. Baik
mengidentifikasi kebenaran pihak-pihak yang berkomunikasi
maupun mengidentifikasi kebenaran sumber pesan. Dua pihak yang saling
berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat
memastikan sumber pesan. Pesan yang di kirim melalui saluran komunikasi juga harus
di otentikasi asalnya
2.4. Sistem Kriptografi
Sistem kriptografi seperti yang ditunjukkan pada gambar 2.1. terdiri dari 5 bagian
yaitu : (Sadikin, 2012)
1. Plaintext
Yaitu pesan atau data dalam bentuk aslinya dapat terbaca. Plaintext merupakan
masukan bagi algoritma enkripsi
2. Secret Key
Secret Key juga merupakan masukkan bagi algoritma enkripsi serta merupakan
nilai yang bebas
terhadap text asli dan menentukan hasil keluaran algoritma
enkripsi. Untuk selanjutnya istilah kunci rahasia sebagai padanan kata secret ke.
3. Ciphertext
Cipher text adalah keluaran algoritma enkipsi. Cipher text dapat dianngap sebagai
pesan dalam bentuk tersembunyi. Algoritma enkripsi yang baik akan menghasilkan
Universitas Sumatera Utara
cipher text yang kelihatan acak. Selanjutnya digunakan istilah teks sandi sebagai
padanan kata ciphertext
4. Algoritma enkripsi
Algoritma enkripsi memiliki 2 masukan teks asli dan kunci rahasia.Algoritma
melakukan tranformasi terhadap teks asli sehingga menghasilkan teks sandi.
5. Algoritma Dekripsi
Algoritma dekripsi memiliki 2 masukan yaitu teks sandi dan kunci rahasia.
Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci
rahasia yang dipakai algoritma dekripsi sama dengan kunci rahasia yang dipakai
algoritma enkripsi.
Kunci rahasia dibangkitkan oleh pembangkit kunci dan dikirim melalui saluran
aman ke pihak penyandi (encryptor) maupun pemulih sandi (descriptor). Teks sandi
dikirim melalui saluran umum sehingga ada pihak ketiga yang dapat membaca teks
sandi tersebut.
RIKO
IRA
M
C
Algoritma
Enkripsi
RINA
M
Algoritma
Dekripsi
Saluran Publik
Sumber
Kunci
Saluran Aman
Universitas Sumatera Utara
Gambar 2.2. Sistem Kriptografi
2.5 Kriptografi Modern
Untuk kondisi yang lebih aman, semua algortima kriptografi modern menggunakan
kunci atau key. Kunci ini dapat berisi banyak sekali peluang nilai. Batas nilai yang
mungkin untuk sebuah kunci disebut keyspace. Dalam kriptografi yang berbasiskan
kunci, terdapat dua buah bentuk umum algoritma, yaitu Algoritma Simetrik (Symetric
Algorithm) dan Algoritma Asimetrik (Asymetric Algorithm).
Perkembangan algoritma kriptografi modern berbasis bit didorong oleh
penggunaan komputer digital yang merepresentasikan data dalam bentuk biner. Muara
dari kriptografi modern adalah menyediakan keamanan pesan di dalam jaringan
computer. Adapun diagram blok kriptografi modern bisa dilihat pada Gambar 2.3.
Gambar 2.3. Blok kriptografi modern
2.5.1 Algoritma simetrik
Universitas Sumatera Utara
Algoritma simetrik adalah suatu algoritma yang simetris dengan menggunakan sebuah
kunci yang sama baik dalam melakukan enkripsi maupun dekripsi. Apabila kunci
yang digunakan dalam melakukan enkripsi dan dekripsi berbeda, maka menyebabkan
keluaran terakhir dari algoritma kacau, sehingga tidak berhasil mengembalikan bentuk
ciphertext ke plaintext semula. Karena kunci ini memegang peranan yang sangat
penting dalam melakukan enkripsi maupun dekripsi, maka algoritma simetrik ini
disebut juga dengan algoritma kunci rahasia (Secret key algorithm). Algortima ini
mengharuskan pengirim dan penerima pesan untuk menyetujui kunci yang akan
digunakan dan keamanan dari algoritma ini tergantung dari kunci yang digunakan,
sehingga kunci ini harus dirahasiakan. Jika kunci ini disebarkan berarti semua orang
dapat melakukan enkripsi dan dekripsi pesan dalam sistem tersebut.
Dalam notasi matematika, proses algoritma kunci rahasia digambarkan sebagai
berikut:
Ek(P) = C
Dk(C) = P
Ek dan Dk adalah fungsi enkripsi dan dekripsi yang menggunakan kunci sama.
Kunci Ek
Kunci Ek
Gambar 2.4 Proses Enkripsi dan Dekripsi pada algoritma Kunci Rahasia
Sumber : Kriptografi, Dony Ariyus, Andi Publisher
Algoritma Simetrik dapat dibagi menjadi dua kategori.yaitu algoritma stream
(stream algorithm) atau stream ciphers, yang beroperasi pada setiap bit dari plaintext,
dan algoritma blok (block algorithms) atau cipher blok (block ciphers), yang
beroperasi pada kelompok-kelompok bit.
Universitas Sumatera Utara
Untuk plaintext yang panjangnya lebih besar dari n-bit perlu dipilih mode operasi
untuk menentukan cara enkripsi dan dekripsi tersebut. Ada beberapa pilihan mode
operasi yang bisa diterapkan antara lain Electronic Codebook (ECB), Cipher-Block
Chaining (CBC), Cipher Feedback (CFB) dan Output FeedBack (OFB).
2.5.2 Algoritma asimetrik
Berbeda dengan algoritma kunci rahasia, algoritma kunci umum dirancang sedemikian
rupa sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci yang
digunakan untuk dekripsi, dan bahkan kunci yang digunakan untuk dekripsi tidak
dapat dikalkulasikan atau diturunkan dari kunci enkripsi. Algoritma ini disebut
algoritma kunci umum (public key algorithm) karena kunci enkripsi yang digunakan
boleh disebarluaskan, berarti setiap orang dapat melakukan enkripsi, namun hanya
pihak yang memegang kunci dekripsi saja yang dapat melakukan dekripsi.
Beberapa istilah dalam algoritma kunci umum yaitu,
1. Kunci umum, yaitu kunci yang diberikan atau disebarkan kepada publik sehingga
semua orang akan tahu.
2. Kunci privat, yaitu kunci yang tetap disimpan oleh pemilik kunci.
Dalam notasi matematika, proses algoritma kunci publik digambarkan sebagai berikut,
Ek1(P) = C
Dk2(C) = P
Ek1 fungsi enkripsi dengan kunci publik
Dk2 fungsi dekripsi dengan kunci privat
Gambar 2.5 Proses Enkripsi dan Dekripsi pada algoritma Kunci Umum
Universitas Sumatera Utara
Algoritma tersebut seperti yang digambarkan pada gambar diatas. Untuk enkripsi
konvensional, kunci yang digunakan pada proses enkripsi dan dekripsi adalah sama.
Tetapi ini bukanlah kondisi sesungguhnya yang diperlukan. Namun adalah
dimungkinkan untuk membangun suatu algoritma yang menggunakan satu kunci
untuk enkripsi dan pasangannya, kunci yang berbeda, untuk dekripsi. Lebih jauh lagi
adalah mungkin untuk menciptakan suatu algoritma yang mana pengetahuan tentang
algoritma enkripsi ditambah kunci enkripsi tidak cukup untuk menentukan kunci
dekripsi.
2.6. Hibrid Cryptosystem
Hybrid cryptosystem merupakan gabungan antara cryptosystem yang memakai
asymmetric cryptosystem dan cryptosystem yang memakai symmetric cryptosystem.
(Schneier, 1996)
Cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke
ciphertext dan sebaliknya, cryptosystem terdiri dari suatu algoritma seluruh
kemungkinan plaintext, ciphertext, dan kunci.
Algoritma hibrid adalah algoritma yang memanfaatkan dua tingkatan kunci
yaitu kunci rahasia (simetris) – yang disebut juga session key (kunci sesi) – untuk
enkripsi data dan pasangan kunci rahasia – kunci public untuk pemberian tanda tangan
digital serta melidungi kunci simetriss. (Ariyus, 2008)
Pada sistem hibrid ini enkripsi/dekripsi pesan menggunakan kriptografi kunci
simetris, sedangkan kunci simetris dienkripsi/dekripsi dengan menggunakan kunci
publik. Kunci simetris (yang disebut juga kunci sesi) dibangkitkan oleh salah satu
pihak dan mengenkripsi pesan dengan kunci tersebut. Selanjutnya kunci sesi
dienkripsikan dengan kunci publik penerima lalu dikirim bersama-sama dengan pesan
yang sudah dienkripsi. Penerima mula-mula mendekripsikan kunci sesi dengan kunci
privatnya, lalu mendekripsikan pasan dengan kunci sesi tersebut.
Kriptografi hibrid sering dipakai karena memanfaatkan keunggulan kecepatan
pemrosesan data oleh algoritma simetris dan kemudahan transfer kunci menggunakan
Universitas Sumatera Utara
algoritma asimetris. Hal ini mengakibatkan peningkatan kecepatan tanpa mengurangi
kenyamanan serta keamanan.
2.7. Manajemen Kunci
Aspek manajemen kunci sangat penting dalam aplikasi kriptografi. Manajemen kunci
yang tidak baik dapat berakibat fatal. Proses pembuatan kunci sangat penting dan
sebaiknya proses ini benar acak. Sumber acak (entropi) dapat diambil dari proses
fisika acak seperti proses radio-aktif. Sumber acak dapat juga diambil dari berbagai
kejadian (events) yang muncul secara acak. Aplikasi kriptografi dapat menggunakan
random number generator yang disediakan operating system untuk pembuatan kunci,
akan tetapi sebaiknya ini dilakukan hanya jika random number generator yang
disediakan cukup acak. (Kromodimoeljo, 2010)
Distribusi kunci secara aman juga penting untuk keperluan pengamanan komunikasi.
Sebagai contoh, untuk komunikasi yang diamankan dengan en- kripsi simetris,
tentunya kedua mitra dalam komunikasi harus menggunakan kunci yang sama. Kunci
ini dapat dibuat oleh satu pihak dan dikirim secara aman ke mitra komunikasi.
Pengiriman kunci dapat dilakukan out-of-band yaitu menggunakan jalur khusus diluar
jalur normal komunikasi, atau dilakukan in-band melalui jalur normal menggunakan
sarana public key cryptography. Alternatif dari pengiriman kunci adalah key
agreement, dimana kedua mitra berpartisipasi membuat kunci tanpa dapat diketahui
oleh pihak ketiga. Key agreement juga menggunakan sarana public key cryptography.
Penyimpanan kunci jelas sangat penting untuk pengamanan sistem enkripsi secara
menyeluruh. Kunci yang disimpan secara sembrono akan mudah untuk \dicuri" oleh
pihak yang tidak diinginkan. Solusi untuk penyimpanan kunci beraneka ragam, mulai
dari penggunaan hardware khusus dimana semua proses kriptografi dilakukan didalam
hardware khusus dan kunci enkripsi disimpan dan tidak dapat keluar dari hardware,
sampai dengan penyimpanan dalam file yang dienkripsi menggunakan password atau
passphrase. Karena praktis, metode terakhir sangat populer, yang berarti pengamanan
password menjadi penting.
Universitas Sumatera Utara
Pengamanan password juga mempunyai beberapa masalah, dari masalah
manusia seperti menulis password di secarik kertas yang ditempelkan ke meja kerja,
sampai dengan masalah sistem seperti program yang menyimpan pass- word dalam
bentuk teks.
Pada dasarnya masalah akses terhadap sesuatu yang penting seperti kunci enkripsi
menjadi masalah authentication dan tren saat ini mengarah pada mul- tiple factor
authentication. Kebenaran identititas seseorang atau sesuatu dinilai dari gabungan
berbagai atribut yang cukup unik seperti sidik jari, pengetahuan password, dan
kepemilikan sesuatu yang unik lainnya.
2.8. Konsep Acak
Sifat acak adalah (randomness) dalam kriptografi adalah sifat bebas dari
kecendrungan sehingga tidak mudah untuk diterka. Dari segi matematika, jika sudau
variabel dianggap
bersifat acak, maka teori probabilitas dapat digunakan untuk
memprediksi “kelakuan” dari variabel tersebut, antara lain variabel akan memenuhi
beberapa kreteria statistic. Metode statistika dapat digunakan, berdasarkan apa yang
sudah terjadi, untuk menilai apakah variabel memenuhi kreteria statistic untuk
variabel acak. Akan tetapi jika criteria statistik terpenuhi, belum tentu variabel benar
acak, karena sesuatu yang deterministic seperti pseudo-random number generator
dapat memenuhi kreteria statistic untuk variabel acak. Jadi criteria statistic bukan
merupakan definisi untuk variabel acak. (Kromodimoeljo, 2010)
Sifat acak dapat dikaitkan dengan urutan event,
dimaka event berikutnya
dalam suatu urutan tidak mudah untuk diterka berdasarkan apa yang sudah lalu. Sifat
ini diperlukan dalam pembuatan kunci (key generator) supaya kunci dekripsi tidak
mudah untuk diterka. Sifat acak juga dikaitkan dengan tidak adanya korelasi (atau
korelasi yang mendekati nol). Dalam kriptografi, tidak diinginkan adanya korelasi
antara naskah asli dengan naskah acak atau kunci dengan naskah acak. Ini untuk
mempersulit analisa seperti analisa frekuensi (frequency analysis) atau analisa lebih
canggih seperti linear cryptanalysis atau differential cryptanalysis.
Universitas Sumatera Utara
Meskipun tidak sebenarnya acak, sesuatu yang pseudo-random berguna dan
digunakan dalam kriptografi, tetapi harus dikombinasikan dengan sesuatu yang benar
acak. Sebagai contoh, pseudo-random number generator dikombinasikan dengan
sumber entropi yang benar acak sebagai seed,
untuk mendapatkan sesuatu yang
praktis bersifat random number generator.
2.9. Pembangkit Bilangan Acak Semu
Pembangkit Bilangan Acak-Semu atau yang biasa dikenal dengan singkatan PRNG
(Pseudo-Random Number Generator ) adalah sebuah algoritma untuk menghasilkan
suatu urutan bilangan yang terlihat acak, namun sebenarnya urutan tersebut tidak
benar-benar acak karena urutan tersebut ditentukan oleh suatu nilai awal. Urutan
bilangan yang terlihat acak ini sangat penting karena bisa dimanfaatkan untuk suatu
parameter bagi percobaan atau simulasi dan juga menjadi pusat pake praktik
kriptografi. (Pratama, 2011)
Sebuah pembangkit bilangan acak-semu bisa dimulai dengan memberikan nilai
umpan. Pembangkit bilangan acak-semu ini akan selalu memberikan urutan bilangan
yang sama jika diberikan nilai umpan yang sama, dengan jumlah bilangan yang
dihasilkan bergantung kepada besar nilai umpan yang diukur dengan satuan bit.
Keuntungan dari penggunaan pembangkit bilangan acak-semu ini adalah
efisien, algoritma ini mampu menghasilkan banyak angka dalam waktu singkat, dan
tertentu, urutan yang digunakan bisa dimunculkan kembali dengan mudah jika nilai
awalnya diketahui. Efisien adalah karakteristik yang sangat baik jika aplikasi kita
membutuhkan banyak angka. Tertentu juga akan berguna jika kita perlu mengulang
suatu urutan bilangan.
Dalam kriptografi, bilangan acak banyak dibutuhkan antara lain untuk:
1. Session dan message keys dalam cipher simetris seperti triple-DES atau Blowfish.
2. Umpan (seeds) untuk fungsi-fungsi yang membangkitkan nilai-nilai matematis
seperti bilangan prima besar pada RSA dan ElGamal.
3. Dikombinasikan dengan password untuk mengacaukan program untuk menebak
password secara offline.
Universitas Sumatera Utara
4. Initialization Vectors untuk enkripsi dengan mode cipher block chaining.
5. Nilai acak untuk berbagai skema tanda tangan digital, seperti DSA.
6. Random challenges pada protokol otentikasi seperti Kerberos
Kesemua contoh di atas menggunakan suatu nilai acak dengan ukuran tertentu. Acak
disini dalan artian acak secara probabilitas. Selain acak, biasanya juga menggunakan
ukuran yang cukup besar, misalnya 512 bit. Ukuran yang besar dan keacakan ini
membuat kriptanalis tidak akan berfikir untuk melakukan brute-force. Karena, akan
memakan waktu yang sangat lama, bisa mencapai ratusan atau ribuan tahun bahkan
dengan super komputer paling hebat.
Berikut ini beberapa contoh PRNG pembangkit bilangan acak semu :
1. Linear Congruential Generators (LCG)
2. Blum Blum Shub
3. Lagged Fibonacci generators
4. Linear feedback shift registers
5. Generalised feedback shift registers
6. Mersenne twister
7. Lehmann
8. Well Equidistributed Long-period Linear
2.10. Algoritma Lehmann
Bilangan P dan a akan dibangkitkan secara acak menggunakan program , dimana
bilangan P adalah bilangan prima, sedangkan bilangan a adalah bilangan bulat yang
merupakan
{
} Oleh karena itu, bilangan P yang didapat secara acak
tersebut harus diuji kembali keprimaannya. Dalam penelitian ini, penulis
menggunakan teori Lehmann untuk menguji keprimaannya nilai P tersebut. Dalam
teori Lehmann dinyatakan bahwa untuk setiap bilangan prima P dan setiap bilangan a
yang kurang dari P dan tidak habis dibagi oleh P, maka berlaku :
Universitas Sumatera Utara
2.11. Probabilistic Encryption
Probabilistic encryption adalah penggunaan keadaan acak pada sebuah algoritma
kriptografi, sehingga ketika mengenkripsi pesan yang sama beberapa kali, secara
umum akan menghasilkan cipher text yang berbeda. Bentuk probabilistic encryption
secara khusus digunakan pada algoritma kriptografi kunci public. Ide probabilistic
encryption pertama kali ditemukan oleh Shafi Gold Wasser dan Silvia Micali.
Inti dari metode probabilistic encryption adalah untuk meneliminasi kebocoran
informasi dengan kriptografi kunci public, karena metode ini menerapkan konsep
acak dalam proses enkripsinya sehingga setiap kali proses enkripsi terhadap pesan
yang sama akan menghasilkan nilai cipher text yang berbeda. Hal ini menyebabkan
cryptanalyst tidak dapat menerka bentuk pesan dari ciphertext yang diperolehnya,
karena setiap kali proses percobaan akan selalu menghasilkan yang berbeda-beda.
2.12. El-Gamal
Algoritma ElGamal ditemukan pada tahun 1985 oleh ilmuwan Mesir yaitu Taher
ElGamal. Algoritma ElGamal merupakan algoritma berdasarkan konsep kunci publik.
Algoritma ini pada umumnya digunakan untuk digital signature, namun kemudian
dimodifikasi
sehingga
bisa
digunakan
untuk
enkripsi
dan
dekripsi.
Algoritma kriptografi kunci publik ElGamal merupakan algoritma blok chipper yaitu
algoritma yang melakukan proses enkripsi pada blok-blok plainteks yang kemudian
menghasilkan blok-blok chipertext, yang nantinya blok-blok chipertext tersebut akan
didekripsi kembali dan hasilnya kemudian digabungkan menjadi plainteks semula.
Keamanan algoritma ElGamal terletak pada kesulitan perhitungan logaritma diskrit
pada modulo prima yang besar, sehingga upaya untuk menyelesaikan masalah
logaritma ini menjadi sulit untuk dipecahkan. Algoritma ini memiliki kelebihan yaitu
pembangkitan kunci yang menggunakan logaritma diskrit dan metode enkripsi
dekripsi yang menggunakan proses komputasi yang besar sehingga hasil enkripsinya
berukuran dua kali dari ukuran semula. Kekurangan algoritma ini adalah
membutuhkan resource yang besar karena chipertext yang dihasilkan dua kali panjang
Universitas Sumatera Utara
plaintext serta membutuhkan processor yang mampu untuk melakukan komputasi
yang besar untuk perhitungan logaritma perpangkatan besar. (Madhur, Yadav, dan
Vijay, 2012)
Dari beberapa banyak algoritma kriptografi kunci-publik yang pernah dibuat,
algoritma El-gamal juga termasuk algoritma yang populer. Algoritma ini melakukan
pemfaktoran bilangan yang sangat besar. Oleh karena alasan tersebut El-gamal
dianggap aman. Untuk membangkitkan dua kunci, dipilih dua bilangan prima acak
yang besar. (Ariyus, 2008).
Enkripsi ElGamal merupakan salah satu skema enkripsi yang memanfaatkan
pengacakan dalam proses enkripsi. Lainnya termasuk enkripsi McEliece (x 8.5), dan
Goldwasser-Micali (x 8.7.1), dan Blum-Goldwasser (x8.7.2) enkripsi probabilistik.
Skema enkripsi deterministik seperti RSA juga dapat menggunakan pengacakan untuk
menghindari beberapa serangan (misalnya, lihat x8.2.2 (ii) dan x8.2.2 (iii)). Ide dasar
di balik enkripsi acak adalah dengan menggunakan pengacakan untuk keamanan
kriptografi dari proses enkripsi melalui satu atau lebih metode berikut - Meningkatkan
ukuran efektif dari ruang pesan plaintext. Proses enkripsi menggunakan kunci publik
(p,g,y) dan sebuah bilangan integer acak k (k
{0,1,..., p − 1}) yang dijaga
kerahasiaannya oleh penerima pesan. Untuk setiap karakter dalam pesan dienkripsi
dengan menggunakan
bilangan
k
yang
berbeda-beda. Satu karakter
yang
direpresentasikan dengan menggunakan bilangan bulat ASCII akan menghasilkan
kode dalam bentuk blok yang terdiri atas dua nilai (a, b). (Rashmi Singh, Shiv Kumar,
2012)
a) Ambil sebuah karakter dalam pesan yang akan dienkripsi dan transformasi
karakter tersebut ke dalam kode ASCII sehingga diperoleh bilangan bulat m.
Plainteks tersebut disusun menjadi blok-blok m1, m2, …, sedemikian hingga
setiap blok merepresentasikan nilai di dalam rentang 0 (nol) sampai p-1.
b) Memilih bilangan acak k, yang dalam hal ini 0 < k < p-1, sedemikian hingga k
relative prima dengan p-1.
c) Hitung nilai a dan b dengan persamaan berikut :
a = gk
Universitas Sumatera Utara
(mod p) …..………(4)
b = yk
m (mod p) ...……..(5)
d) Diperoleh cipherteks untuk karakter m tersebut dalam blok (a,b)
e) Melakukan proses di atas untuk seluruh karakter dalam pesan termasuk
karakter spasi.
Dekripsi dari cipherteks ke plainteks menggunakan kunci rahasia a yang
disimpan kerahasiaanya oleh penerima pesan. Teorema :
Diberikan (p,g, y) sebagai kunci public dan x sebagai kunci rahasia pada
algoritma ElGamal. Jika diberikan cipherteks (a, b), maka
m = b/a x mod p .......... (4)
dengan M adalah plainteks.
Di mana nilai
(ax)-1= r –a = rp -1-a mod p. … (5)
a. Ambil sebuah blok cipherteks dari pesan yang telah dienkripsikan pengirim.
b. Dengan menggunakan a yang dirahasiakan oleh penerima, hitung nilai
plainteks dengan menggunakan “persamaan (4)” dan “persamaan (5)”.
Key
Pseudo Random sequence
Plaintext Bitstream
Plaintext stream
Cipertext
1111111100000
Pseudo Random sequence
Ciphertext stream
1001101011010
0110010111010
Gambar 2.6. Pembentukan Kunci
Universitas Sumatera Utara
Secara garis besar algoritma el-gamal mempunya langkah-langkah pembentukan
kunci sebagai berikut :
a. Bilangan prima, p (bersifat public atau tidak rahasia)
b. Bilangan acak, g (dimana g < p dan bersifat public atau tidak rahasia)
c. Bilangan acak, x (dimana x < p dan bersifat private atau rahasia)
d. Bilangan acak, k (dimana k < p dan bersifat private atau rahasia)
e. m merupakan plainteks dan bersifat private/rahasia
f. a dan b merupakan pasangan chiperteks hasil enkripsi bersifat private atau
tidak rahasia.
Proses Pembentukan kunci Algoritma ElGamal Proses pembentukan kunci
merupakan proses penentuan suatu bilangan yang kemudian akan digunakan sebagai
kunci pada proses enkripsi dan dekripsi pesan. Kunci untuk enkripsi dibangkitkan dari
nilai p, g, y sedangkan kunci untuk dekripsi terdiri dari nilai x, p. Masing-masing nilai
mempunyai persyaratan yang harus dipenuhi.
Langkah-langkah dalam pembuatan kunci adalah sebagai berikut :
1. Pilih sembarang bilangan prima p, dengan syarat p > 255.
2. Pilih bilangan acak g dengan syarat g < p.
3. Pilih bilangan acak x dengan syarat 1 ≤ x ≤ p – 2.
4. Hitung y = g^x mod p.
Kunci public nya adalah y, g, p sedangkan kunci private nya adalah x. nilai y, g, dan p
tidak dirahasiakan sedangkan nilai x harus dirahasiakan karena merupakan kunci
privat untuk mendekripsi plainteks. (Rashmi Singh, Shiv Kumar, 2012).
2.13. Algoritma DES
2.13.1. Proses enkripsi algoritma DES
Data Encrytion Standar (DES) merupakan teknik atau algoritma kriptografi
penyandian pesan yang menggunakan teknik blok simetris, Algoritma DES juga
memerlukan sebuah kunci yang panjang bloknya 64 bit di setiap blok DES digunakan
Universitas Sumatera Utara
untuk mengamankan data pada perangkat lunak dan keras negara tersebut. Dan berikut
desain input-output algoritma DES.
Gambar 2.7. DES input-output
Sumber : ( ZHONG PuCha & BAO WanSu,2010 )
Dapat dilihat bahwa ada dua input untuk fungsi enkripsi, yaitu plaintext dengan
panjang 64-bit dan kunci dengan panjang 56-bit. Seperti pada gambar 2.8
Gambar 2.8. Tahapan proses enkripsi DES
Sumber : Munir, 2008
Untuk mengenkripsi data dengan menggunakan algoritma DES, dimulai dengan
membagi bit dari teks tersebut kedalam blok-blok dengan ukuran blok sebesar 64-bit,
yang kemudian disebut blok plaintext. Ukuran efektif dari kunci rahasia (secret key) K
Universitas Sumatera Utara
adalah k = 56 bit, masukan kunci (input key) K dispesifikasikan sebagai 64-bit kunci
(key), dan 8-bit (bit 8, 16,…,64) digunakan sebagai parity bit. Parity bit tersebut akan
mereduksi ukuran efektif key dari 64-bit menjadi 56-bit. Proses enkripsi dimulai
dengan 16 iterasi blok ciphertext (disebut juga round) dengan menggunakan initial
-1
permutation (IP ) dan diakhiri dengan invers initial permutation (IP ).(ZHONG
PuCha & BAO WanSu, 2010)
2.13.2. Proses dekripsi algoritma DES
Algoritma yang digunakan untuk enkripsi dan dekripsi sebenarnya sama, hanya
perbedaannya pada dekripsi pengiriman subkey yang terbalik. Untuk proses Dekripsi
yang berdasarkan algoritma enkripsi dengan menggunakan kunci yang sama tetapi
tetapi dengan membalikkan key schedule, yang dimulai dari K16,K15,…,K1. Efek dari
IP -1 dibatalkan oleh IP pada proses dekripsi, membebaskan (R16, L16); dengan
menggunakan round-1 sebagai input. Operasi pada bagian kiri (L) adalah:
L0 f(R0, Ki) Maka : R16 ⊕⊕ f(L16, K16)
Setelah : L16 = R15 dan R16 = L15 ⊕ f(R15, K16) Ini sama dengan :
L15 f(R⊕ , K ) ⊕ f(R , K ) = L15
15
16
15
16
Jadi hasil dekripsi pada round-1 adalah (R , L ). Penggunaan key schedule pada
15
15
dekripsi DES, subkey K ,..,K dibuat berdasarkan algoritma. Setelah K telah dibuat,
1
16
16
nilai asli dari register 28-bit C dan D dimasukkan kembali (masing-masing di rotasi
28-bit). Untuk membuat subkey K ,…,K , caranya adalah dengan menukarkan rotasi
1
16
left-shift dengan right-shift dan merubah nilai shift v1 = 0.Untuk melihat algoritma
yang sama dalam urutan terbalik dapat dilihat pada Gambar 6 [STALL95]. Pada
gambar tersebut dapat dilihat bahwa nilai berikutnya dari proses dekripsi adalah sama
dengan nilai yang sama dari proses enkripsi dengan dua bagian dari nilai yang
ditukarkan (swap). Dengan cara lain, dianggap bagian enkripsi yang ke-i dinotasikan
dengan Li || Ri (Li dikonkantinasi dengan Ri). Kemudian untuk input (16-i) yang sama
dari taraf dekripsi adalah Ri || Li.
Universitas Sumatera Utara
Gambar. 2.9. Proses Enkripsi dan Dekripsi Algoritma DES
Sumber : Munir, 2008
Pada Gambar 2.9. setelah iterasi terakhir dari proses enkripsi, output saling
-1
ditukarkan, maka input untuk bagian IP
adalah R
16
|| L . Outputnya merupakan
16
ciphertext. Kemudian ciphertext tersebut digunakan sebagai input untuk algoritma
DES. Langkah pertama adalah dengan memasukkan ciphertext melalui IP, yang akan
d
d
menghasilkan jumlah 64-bit : L || R . Juga diketahui bahwa IP merupakan invers
0
0
-1
dari IP , maka : Ld || Rd = IP(ciphertext)
0
0
-1
-1
d
d
Ciphertext = IP (R || L ) , L || R = IP(IP (R || L )) = R || L
16
16
0
0
16
16
16
16
Input pada tingkat pertama dari proses dekripsi sama dengan 32-bit ditukarkan
dengan output bagian ke-16 dari proses enkripsi. Pertama, dengan mengingat bahwa
Universitas Sumatera Utara
proses enkripsi adalah berdasarkan persamaan (Ld || Rd = IP(ciphertext)). Maka
0
d
d
d
d
d
0
pada proses dekripsi : L = R = L = R R = L f(R⊕ , K ) = R f(R⊕ ,K )
1
0
16
15,
1
0
0
16
16
15
16
d
R = [L f(R⊕ ,K )] ⊕ f(R ,K ) Karena fungsi XOR mempunyai sifat :
1
15
15
16
15
16
[A B] ⊕ C = A ⊕ [B ⊕⊕ C] , D ⊕ D = 0, E ⊕ 0 = E
Dapat dilihat bahwa output bagian terakhir dari proses dekripsi adalah R || L .
0
0
-1
Penukaran 32-bit dilakukan, maka input untuk bagian IP adalah L || R , tetapi :
0
–1
0
-1
IP (L || R ) = IP (IP (plaintext)) = plaintext
0
0
Dengan demikian berdasarkan persamaan diatas, maka plaintext yang asli dapat
diperoleh. (ZHONG PuCha & BAO WanSu, 2010)
2.14. Triple DES
2.14.1. Sejarah Triple DES
Pada akhir tahun 1960, IBM memulai suatu riset Lucifer proyek yang dipimpin oleh
Horst Feistel untuk komputer kriptografi. Proyek ini berakhir pada tahun 1971 dan
Lucifer yang pertama kali dikenal sebagai blok cipher pada pengoperasian pada blok
64 bit dan menggunakan ukuran kunci 128 bit. Setelah IBM mengembangkan suatu
sistem enkripsi yang dikomersilkan, maka Lucifer disebut dengan DES (Data
Encryption Standard), proyek ini dipimpin oleh Walter Tuchman, hasil dari riset ini
merupakan versi dari Lucifer yang bersifat menentang pemecahan algoritma
kriptografi. (Kurniawan, Yusuf, Kriptografi. Keamanan Internet dan jaringan
Komunikasi, 2004.)
Pada tahun 1973, National Burean of Standard (NBS), sekarang menjadi
National Institute of Standard and Technology (NIST), mengeluarkan proposal cipher
standar untuk nasional. IBM menyampaikan hasil risetnya tentang proyek DES dan
mengajukan sebagai kandidat untuk cipher standar nasional. NBS meminta agar
National Security Agency (NSA) untuk melakukan evaluasi keamanan algoritma dan
menentukan apakah pantas menjadi standar pemerintahan. Pada bulan November
1976, DES dipilih sebagai standar yang dipakai pada pemerintahan dan authorize
Universitas Sumatera Utara
untuk menggunakan atas nama US Government Communication. Undang-undang atas
penggunaan DES yaitu PUB 46 diterbitkan pada 15 Januari 1977.
Algoritma DES merupakan salah satu proposal yang terbaik pada tahun 1977,
tidak ada kritik yang datang dari kalangan ilmuan tentang panjang kunci yang
digunakan dan S-Box yang merupakan bagian internal dari DES. Selama 20 tahun
algoritma DES dipakai sebagai standar nasinal. Pada tahun 1990 panjang kunci DES
dianggap terlalu pendek dan pada tahun 1998, 70 ribu PC di internet berhasil membobol
satu kunci DES dalam tempo waktu 96 hari, tahun 1999 dalam tempo 22 hari. Dengan
alasan tersebut, maka pada tahun 2001 NIST mengganti DES menjadi Triple DES sebagai
standar dari algoritma DES.
Tahap pertama, plainteks yang diinputkan dioperasikan dengan kunci eksternal
pertama (K1) dan melakukan proses enkripsi dengan menggunakan algoritma DES.
Sehingga menghasilkan pra-cipherteks pertama. Tahap kedua, pra-cipherteks pertama
yang dihasilkan pada tahap pertama, kemudian dioperasikan dengan kunci eksternal
kedua (K2) dan melakukan proses enkripsi atau proses dekripsi (tergantung cara
pengenkripsian yang digunakan) dengan menggunakan algoritma DES. Sehingga
menghasilkan pra-cipherteks kedua. Tahap terakhir, pra-cipherteks kedua yang
dihasilkan pada tahap kedua, dioperasikan dengan kunci eksternal ketiga (K3) dan
melakukan proses enkripsi dengan menggunakan algoritma DES, sehingga
menghasilkan cipherteks (C).
Gambar. 2.10. Algoritma Triple DE S(NIST, 2004)
Sumber : Munir, 2008
Universitas Sumatera Utara
Keterangan pada gambar :
1.
Dilakukan tiga kali DES dengan cara seri; hasil enkripsi DES1 menjadi
masukan DES2 dan hasil enkripsi DES2 menjadi masukan DES3.
2.
3.
DES1, DES2, dan DES3 memiliki tiga kunci dengan kemungkinan:
a.
Ketiga kunci berlainan sama sekali.
b.
Kunci 1 dan kunci 2 berlainan; kunci 1 = kunci 3
c.
Ketiga kunci sama
Hasil enkripsi DES3 merupakan cipherteks yang dikirimkan.
2.14.2. Pemilihan kunci
Ada dua pilihan untuk pemilihan kunci eksternal algoritma Triple, yaitu:
Jumlah kunci yang digunakan pada Triple DES adalah 3 buah dengan panjang
masing-masing kunci adalah 8 karakter.
Ada 3 kemungkinan pemilihan kunci yang digunakan:
1. K1 ≠ K2 ≠ K3
2. K1 = K3 ≠ K2
3. K1 = K2 = K3
Pemilihan kunci biasanya didasarkan atas metode Triple DES mana yang akan
digunakan:
1. Metode EEE atau EK3( EK2( EK1 (P))).
2. Metode EDE atau EK3( DK2( EK1 (P))).
Untuk metode pertama maka ketiga kemungkinan kunci dapat digunakan dikarenakan
proses yang terjadi adalah Enkripsi sebanyak 3 kali, meskipun kunci yang paling
aman adalah K1 ≠ K2 ≠ K3 dikarenakan panjang kunci adalah 168 bits (setelah
mengalami proses permutasi PC-1) .
Untuk metode kedua maka kemungkinan yang dapat dipakai adalah pilihan pertama
dan kedua. Pilihan ketiga, di mana semua kunci adalah sama, tidak dapat digunakan
karena akan mengubah Triple DES menjadi DES. Dapat dilihat pada persamaan
berikut:
EK3( DK2( EK1 (P))), dengan K1 = K2 = K3,
Universitas Sumatera Utara
maka DK2( EK1 (P)) = P,
dan didapat EK3(P)
Pada proses pembentukan kunci internal ini dapat dilakukan sebelum atau bersamaan
dengan proses enkripsi. Karena ada 16 putaran, dibutuhkan kunci internal sebanyak
16 buah, yaitu K1, K2, K3, ..., K16. Kunci internal dibangkitkan dari kunci
eksternal yang panjangnya 64 bit atau 8 karakter.
Gambar 2.11 Flowchart Pembentukan Kunci DES
Proses pembentukan kunci pada algoritma 3DES adalah sebagai berikut.
Misalkan: Input key = “ALGORITM” Input key dalam biner:
0100000101001100010001110100111101010010010010010101010001001101
Universitas Sumatera Utara
Input key dalam biner dijadikan masukkan ke Matriks permutasi kompresi sehingga
menghasilkan 56 bit
00000000111111110000000001010001110011001110101010100000
Pecah menjadi 2 (dua) bagian:
C0
: 0000000011111111000000000101
D0
: 1000111001100111010101010000
Selanjutnya dilakukan pergeseran bit ke kiri atau Left Shift terhadap C0 dan
D0. Pergeseran bit dilakukan sepanjang 1 (satu) atau 2 (dua) bit bergantung pada tiap
putaran. Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 2.1:
Tabel 2.1 Jumlah Pergeseran Bit
Putaran, i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Jumlah pergeseran bit
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
Keterangan:
Ci = LeftShift(Ci-1) Di = LeftShift(Di-1)
Ci adalah nilai C pada putaran ke-i
Di adalah nilai D pada putaran ke-i
2.14.3. Perancangan sistem
Perancangan dimulai dengan pembuatan diagram konteks, berupa gambaran system
penerapan algoritma Triple secara garis besar.
Universitas Sumatera Utara
Gambar 2.12 Diagram Konteks Triple DES
Sumber : Munir, 2008
Contoh file yang akan dienkripsi dan didekripsi berikut ini diambil dari file teks
dan kunci yang digunakan adalah saling bebas.
(K1 ≠ K2 ≠ K3 ≠ K1) yaitu:
Kunci 1 : Enkripsi
Kunci 2 : Keamanan
Kunci 3 : Dekripsi
Pada dasarnya algoritma yang digunakan sama, hanya pada Triple DES
dikembangkan dengan melakukan enkripsi dengan implementasi algoritma DES
sebanyak tiga kali. Triple DES memiliki tiga buah kunci yang berukuran 168-bit (tiga
kali kunci 56-bit dari DES). Pada algoritma Triple DES dibagi menjadi tiga tahap,
setiap tahapnya merupakan implementasi dari algoritma DES.
Tahap pertama, plainteks yang diinputkan dioperasikan dengan kunci eksternal
pertama (K1) dan melakukan proses enkripsi dengan menggunakan algoritma DES.
Sehingga menghasilkan pra-cipherteks pertama.
Tahap kedua, pra-cipherteks pertama yang dihasilkan pada tahap pertama,
kemudian dioperasikan dengan kunci eksternal kedua (K2) dan melakukan proses
enkripsi atau proses dekripsi (tergantung cara pengenkripsian yang digunakan) dengan
menggunakan algoritma DES. Sehingga menghasilkan prs-cipherteks kedua. Tahap
Universitas Sumatera Utara
terakhir, pra-cipherteks kedua yang dihasilkan pada tahap kedua, dioperasikan dengan
kunci eksternal ketiga (K3) dan melakukan proses enkripsi dengan menggunakan
algoritma DES, sehingga menghasilkan cipherteks (C), untuk algoritma Triple DES
adalah sebagai berikut:
Li = Ri – 1
Ri = Li – 1 f(Ri – 1, Ki).
Bagian R disubstitusikan pada fungsi ekspansi panjangnya menjadi 48-bit kemudian
di XOR-kan dengan kunci internal yang sudah diproses sebelumnya pada proses
pembangkitan kunci (pada putaran pertama menggunakan kunci internal pertama,
dan
seterusnya).
Hasil
XOR kemudian
disubstitusikan pada S-box yang
dikelompokkan menjadi 8 kelompok, masing-masing 6-bit hasilnya menjadi 4-bit.
Kelompok 6-bit pertama menggunakan S1, kelompok 6-bit kedua menggunakan
S2, dan seterusnya. Setelah proses S-box tersebut panjangnya menjadi 32-bit.
Kemudian disubstitusikan lagi pada matriks permutasi P-box, kemudian
di-XOR-kan
dengan bagian L. Hasil dari XOR tersebut disimpan untuk bagian
selanjutnya. Sedangkan untuk bagian Ldiperoleh dari bagian Ryang sebelumnya.
Proses tersebut dilakukan 16 kali.Setelah 16 putaran selesai, bagian Ldan
Rdigabungkan dan disubstitusikan pada matriks permutasi awal balikan (invers
initial permutation) atau IP-1, hasilnya merupakan cipherteks 64-bit.
2.14.4 Differential Attack
Differential cryptanalysis adalah metode yang menganalisa hubungan dari perbedaan
atas pasangan plaintext dengan pasangan ciphertext. Perbedaan ini dapat digunakan
untuk mencari kemungkinan kunci yang digunakan dan menentukan kunci mana yang
paling cocok. Metode ini dapat diterapkan pada pasangan plaintext yang memiliki
pola perbedaan yang sama terhadap pasangan ciphertext. Untuk DES, tingkat
perbedaan yang digunakan adalah menggunakan metode XOR terhadap pasangan
plaintext yang dipilih. (Biham & Shamir, 1990)
Notasi yang digunakan adalah sebagai berikut:
1. P melambangkan plaintext, T melambangkan ciphertext.
Universitas Sumatera Utara
2. (P, P*) adalah pasangan plaintext yang akan dilakukan operasi XOR untuk
mendapatkan nilai Pl di mana Pl = P ⊕ P*.
3. (T, T*) adalah pasangan plaintext yang akan dilakukan operasi XOR untuk
mendapatkan nilai Tl di mana Tl = T ⊕ T*.
Dengan karateristik dari S-box ada 642 = 4,096 kemungkinan dari masukan (x,
x*). Besar dari x, x* dan xl = x ⊕ x* adalah 6 bit. Besar dari y = S(x), y* = S(x*), dan
yl = y ⊕ y* = S(x) ⊕ S(x*) adalah 4 bit.
Universitas Sumatera Utara