Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu Penelitian sebelumnya yang terkait dengan penelitian ini adalah penelitian yang dilakukan oleh Syaukani, (2003) yang berjudul “Implementasi Sistem Kriptografi Kunci Umum Menggunakan Metode Algoritma RSA” membahas tentang sistem enkripsi dan dekripsi menggunakan dua kunci. Algoritma yang dipakai adalah algoritma RSA, hal yang mendasar pada metode ini yaitu penggunaan kunci untuk enkripsi yang berbeda dengan kunci yang digunakan untuk dekripsi. Kunci enkripsi diberitahukan kepada umum dan disebut kunci publik (public key). Kunci dekripsi dijaga kerahasiaannya, dan hanya diketahui oleh pemilik sebagai penerima data disebut sebagai kunci pribadi (private key). Kedua kunci tersebut memiliki hubungan yang matematis oleh karena itu disebut juga sistem asimetris. Pada penelitian tersebut membahas tentang algoritma RSA yang memiliki tingkat keamanan relatif baik namun kecepatan prosesnya rendah, selain itu terdapat dua kali pembesaran ukuran dari file plaintext, ini merupakan kelebihan dan kekurangan. Adapun penelitian dengan judul “Penerapan Algoritma RSA Untuk Pengamanan Data Digital Signature dengan .Net” RSA digunakan untuk enkripsi file dokumen berformat .doc dan
8
.pdf, gambar berformat .png, .gif dan .jpg beserta audio format .mp3. Sedangkan teknologi yang dipakai adalah teknologi .NET. Hasil dari penelitian ini menyimpulkan bahwa pada proses enkripsi/dekripsi menggunakan algoritma RSA dan digital signature menggunakan kunci publik dan kunci private, file hasil enkripsi bertambah besar karena adanya penambahan bit-bit kunci dan kode-kode enkripsi. (Trioriska, 2010). Berdasarkan penelitian yang pernah dilakukan tentang penerapan algoritma XOR dan RSA maka akan dilakukan penelitian tentang implementasi algoritma kriptografi XOR dan RSA dalam pengamanan dan pengiriman dokumen melalui Email. Berdasarkan pada penelitian sebelumnya, penelitian yang diangkat pada skripsi ini dengan judul “Implementasi Algoritma Kriptografi RSA Dalam Pengamanan Pengiriman Dokumen”, RSA yang digunakan untuk enksripsi file
.doc, .pdf, .excel,
.docx, .xls, .xlsx, .jpg, .gif, .png. Hasil enkripsi yaitu chipertext akan disimpan dan dikirimkan melalui E-mail oleh aplikasi RSA yang dibuat. Proses dekripsi yang menghasilkan plaintext dapat dibuka atau read inbox dari E-mail. Dibandingkan dengan Penerapan Algoritma RSA untuk Pengamanan Data dan Digital Signature dengan . Net kunci private dan public melalui generate dan ditampilkan pada textboxform, sedangkan penelitian ini kunci private atau public disimpan didalam file chipertext.
9
2.2 Kriptografi Kriptografi (cryptography) merupakan ilmu dan seni penyimpanan
pesan,
data,
atau
informasi
secara
aman.
Kriptografi (Cryptography) berasal dari bahasa Yunani yaitu dari kata Crypto dan Graphia yang berarti penulisan rahasia. Kriptografi adalah suatu ilmu yang mempelajari penulisan secara rahasia. Kriptografi merupakan bagian dari suatu cabang ilmu matematika yang disebut Cryptology. Kriptografi bertujuan menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah. Dalam
menjaga
kerahasiaan
data,
kriptografi
mentransformasikan data yang 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 ditransformasikan kembali ke dalam bentuk plaintext agar dapat dikenali. Proses transformasi dari plaintext menjadi ciphertext disebut
proses
sedangkan
Encipherment
proses
atau
enkripsi
mentransformasikan
(encryption),
kembali
ciphertext
menjadi plaintext disebut proses dekripsi (decryption). Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun cleartext.
10
Untuk mengenkripsi dan mendekripsi data, kriptografi menggunakan suatu algoritma (cipher) dan kunci (key). Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan mendekripsi. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data (Stallings, 2005). Secara
sederhana,
proses-proses
tersebut
dapat
digambarkan pada Gambar 2.1. Kunci
Plaintext
Kunci
Enkripsi
Ciphertext
Dekripsi
Plaintext
Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana (Munir, 2006)
Cryptography
adalah
suatu
ilmu
mengamankan pesan, dan dilakukan oleh
ataupun
seni
cryptographer.
Sedangkan cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst. Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan transformasi ciphering tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.
11
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut : EK (M) = C (Proses Enkripsi)
(2.1)
DK (C) = M (Proses Dekripsi)
(2.2)
Pada saat proses enkripsi disandikan pesan M dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya. Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang digunakan, dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma yang digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk yang menggunakan algoritma tersebut dapat diproduksi masal. Tidaklah menjadi masalah apabila seseorang mengetahui algoritma yang digunakan. Selama tidak mengetahui kunci yang dipakai, maka tidak dapat membaca pesan. Kriptografi bertujuan untuk memberikan layanan pada aspek-aspek keamanan antara lain: 1.
Kerahasiaan (confidentiality), yaitu menjaga supaya pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
2.
Integritas data (data integrity), yaitu memberikan jaminan bahwa untuk tiap bagian pesan tidak akan mengalami perubahan dari saat data dibuat/dikirim oleh pengirim sampai dengan saat data tersebut dibuka oleh penerima data.
12
3.
Otentikasi (authentication), yaitu berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan.
4.
Nirpenyangkalan (non repudiation), yaitu memberikan cara untuk membuktikan bahwa suatu dokumen datang dari seseorang tertentu sehingga apabila ada seseorang yang mencoba mengakui memiliki dokumen tersebut, dapat dibuktikan kebenarannya dari pengakuan orang tersebut (Munir, 2006). Berdasarkan kunci yang digunakan untuk enkripsi dan
dekripsi, kriptografi dapat dibedakan atas dua golongan, yaitu: 2.2.1 Kriptografi Simetrik (Symetric Cryptography) Pada sistem kriptografi simetrik, kunci untuk proses enkripsi sama dengan kunci untuk proses dekripsi. Keamanan sistem kriptografi simetrik terletak pada kerahasiaan kunci. Istilah lain untuk kriptografi simetrik adalah kriptografi kunci pribadi (private key cryptography) atau kriptografi konvensional (conventional cryptography) (Kurniawan, 2004). Kunci Pribadi, K
Plaintext, P
Enkripsi EK(P) = C
Kunci Pribadi, K
Ciphertext, C
Dekripsi DK(C) = P
Plaintext, P
Gambar 2.2 Kriptografi Simetrik (Kurniawan, 2004)
13
Algoritma kriptografi simetrik dapat dikelompokkan menjadi dua kategori antara lain: -
Cipher aliran (stream cipher) Algoritma kriptografi beroperasi pada plaintext/ciphertext
dalam bentuk bit tunggal yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan
bit
per
bit.
Cipher
aliran
mengenkripsi satu bit setiap kali. Contoh algoritma stream cipher: RC4, Panama dan Pike. -
Cipher blok (block cipher) Algoritma kriptografi beroperasi pada plaintext/ciphertext
dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Cipher blok mengenkripsi satu blok bit setiap kali. Contoh algoritma block cipher: Rinjdael, DES dan IDEA. 2.2.2
Kriptografi Asimetrik (Asymetric Cryptography)
Pada sistem kriptografi asimetrik, kunci untuk proses enkripsi tidak sama dengan kunci untuk proses dekripsi. Istilah lain untuk kriptografi asimetrik adalah kriptografi kunci publik (public key cryptography), sebab kunci untuk enkripsi tidak rahasia dan dapat diketahui oleh siapapun, sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan. Contoh algoritma asimetrik: RSA, Knapsack, ECC dan Diffie-Hellman.
14
Kunci Publik, PK
Plaintext, P
Enkripsi EPK(P) = C
Kunci Pribadi, SK
Ciphertext, C
Dekripsi DSK(C) = P
Plaintext, P
Gambar 2.3 Kriptografi Asimetrik (Kurniawan, 2004)
Key yang digunakan pada sistem kriptografi memegang peran yang sangat penting dengan ketentuan: 1.
Pseudo random number
2.
Panjangnya key, semakin panjang semakin aman. Tetapi perlu diingat bahwa membandingkan dua buah sistem kriptografi yang berbeda dengan berdasarkan panjang keynya saja tidaklah cukup.
3.
Private key harus disimpan secara aman baik dalam file (dengan PIN atau passphrase) atau dengan smart card (Stallings, 2005).
2.3 Algoritma XOR Algoritma kriptografi modern umumnya beroperasi dalam mode bit ketimbang mode karakter (seperti yang dilakukan pada cipher substitusi atau cipher transposisi dari algoritma kriptografi klasik). Operasi dalam mode bit berarti semua data dan informasi baik kunci, plainteks, maupun cipherteks, dinyatakan dalam rangkaian (string) bit biner, 0 dan 1. Algoritma enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian bit. Rangkaian bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam bentuk rangkaian bit,
15
demikian
sebaliknya.
Perkembangan
algoritma
kriptografi
modern berbasis bit didorong oleh penggunaan komputer digital yang merepresentasikan data dalam bentuk biner. Operator XOR identik dengan penjumlahan modulo 2.
Misalkan a, b, dan c adalah peubah Boolean. Hukum-hukum yang terkait dengan operator XOR: (i) a a = 0 (ii) a b = b a
(Hukum komutatif)
(iii) a (b c) = (a b) c (Hukum asosiatif)
Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua rangkaian bit tersebut.
Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks: C= PK Karena
meng-XOR-kan
nilai
yang sama
dua
kali
menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan: P=CK Contoh:
plainteks
01100101
(karakter „e‟)
kunci
00110101
(karakter „5‟)
16
cipherteks
01010000
kunci
00110101
plainteks
01100101
(karakter „P‟)
(karakter „5‟) (karakter „e‟)
2.4 Algoritma RSA RSA adalah algoritma public key encryption yang pertama kali dipublikasikan tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard
Adleman
di
MIT
(Massachusetts
Institute
of
Technology). Algoritma RSA melibatkan dua buah kunci dalam melakukan enkripsi yaitu public key dan private key. Public key dapat disebarluaskan ke berbagai pihak untuk melakukan enkripsi ataupun dekripsi. Pesan yang sudah terenkripsi dengan public key hanya dapat didekripsi dengan menggunakan private key (Munir, 2006). 2.4.1 Pembangkitan Kunci RSA Langkah-langkah pembangkitan kunci pada RSA (Ireland, 2010) adalah: 1.
Pilih dua buah bilangan prima sembarang, p dan q. Untuk memperoleh tingkat keamanan yang tinggi pilih p dan q yang berukuran besar, misalnya 1024 bit.
2.
Hitung n = p.q (sebaiknya p ≠ q, sebab jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n) di mana n akan digunakan sebagai
17
nilai untuk melakukan modulus pada public dan private key. 3. Hitung: φ(n) = (p-1)(q-1) 4.
(2.3)
Pilih bilangan integer e sehingga 1 < e < φ (n), dan e adalah bilangan prima, dimana e akan digunakan sebagai private key exponent.
5.
Cari nilai d sehingga memenuhi: d ≡ e-1 mod φ (n), atau
(2.4)
ed ≡ 1 mod φ (n), atau
(2.5)
ed mod φ (n) = 1
(2.6)
Private Key terdiri dari n sebagai modulus dan e sebagai eksponen, sedangkan public key terdiri dari n sebagai modulus dan d sebagai eksponen yang harus dirahasiakan. Nilai eksponen kunci public untuk RSA 1024 minimal 65537 untuk menjaga keamanannya. Hubungan antara pesan dapat dituliskan: Med = M mod n
(2.7)
Jadi kebutuhan dari algoritma RSA sebelum proses adalah: -
p, q, dua bilangan prima yang berbeda
-
n = pq
-
e, di mana FPB (φ (n) ,e) = 1; 1 < e < φ (n)
-
d ≡ e-1 mod φ (n)
18
2.4.2 Contoh Proses Jika seorang user A ingin mengirimkan pesan kepada user B, maka pertama kali yang harus dilakukan user A adalah mengirimkan public key miliknya kepada user B. Setelah itu user B akan melakukan enkripsi pesan yang akan dikirimkan dengan menggunakan public key user B. Lalu user B melakukan enkripsi dengan cara C = Me (mod n), C adalah ciphertext yang dikirimkan dan M adalah message atau pesan. Setelah itu user A akan menerima pesan C dan melakukan dekripsi dengan cara M = Cd (mod n). Perlu diperhatikan bahwa panjang pesan M harus lebih kecil dari n. Contoh: -
Pilih dua bilangan prima yang berlainan p = 61 dan q = 53
-
Hitung n = pq N = 61 * 53 = 3233
-
Hitung totient φ (n) = (p-1)(q-1) φ (n) = (61 – 1) (53 – 1) = 3120
-
Tentukan e > 1 yang coprime dengan 3120 e = 17
-
Pilih d sehingga memenuhi ed ≡ 1 mod φ (n) d = 2753
19
17 * 2753 = 46801 = 1 + 15 * 3120 -
Jika m = 123, maka proses enkripsi adalah : C = 12317 mod 3233 = 855
-
Untuk proses dekripsi adalah : M = 8552753 mod 3233 = 123 Misalkan pesan (plaintext) yang akan dikirim adalah: m = HARI INI atau dalam sistem desimal (pengkodean ASCII) adalah 7265827332737873. Cara penyandiannya adalah:
-
Pecah m menjadi blok yang lebih kecil, misalnya m dipecah menjadi enam blok yang berukuran 3 digit : m1 = 726
m4 = 273
m2 = 582
m5 = 787
m3 = 733
m6 = 003
Nilai-nilai m ini masih terletak di dalam selang [0, 3337 – 1] agar transformasi menjadi satu kesatu. -
Jika kunci publik adalah e = 79 dan n = 3337, maka blokblok plaintext dapat dienkripsikan menjadi: c1 = 726 79 mod 3337 = 215; c2 = 582 79 mod 3337 = 776; c3= 733 79 mod 3337 = 1743; c4 = 273 79 mod 3337 = 933; c5 = 787 79 mod 3337 = 1731; c6 = 003 79 mod 3337 = 158 Jadi ciphertext yang dihasilkan adalah: c = 215 776 1743 933 1731 158
20
-
Dekripsi dilakukan dengan menggunakan kunci pribadi d = 1019 Blok-blok ciphertext didekripsikan menjadi: m1 = 215 1019 mod 3337 = 726 m2= 776 1019 mod 3337 = 582 m3 = 1743 1019 mod 3337 = 733 m4 = 933 1019 mod 3337 = 273 m5 = 1731 1019 mod 3337 = 787 m6 = 158 1019 mod 3337 = 003
-
Akhirnya diperoleh kembali plaintext semula m = 7265827332737873, yang dalam sistem pengkodean ASCII adalah m = HARI INI