Bab 2 Tinjauan Pustaka -...
Transcript of Bab 2 Tinjauan Pustaka -...
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 E-
mail. 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 Encipherment atau enkripsi (encryption),
sedangkan proses mentransformasikan 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.
Plaintext Enkripsi Dekripsi PlaintextCiphertext
Kunci Kunci
Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana (Munir, 2006)
Cryptography adalah suatu ilmu ataupun seni
mengamankan pesan, dan dilakukan oleh 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).
Plaintext, PEnkripsi
EK(P) = C
Dekripsi
DK(C) = PPlaintext, PCiphertext, C
Kunci Pribadi, K Kunci Pribadi, K
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
Plaintext, PEnkripsi
EPK(P) = C
Dekripsi
DSK(C) = PPlaintext, PCiphertext, C
Kunci Publik, PK Kunci Pribadi, SK
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 key-
nya 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 = P K
Karena meng-XOR-kan nilai yang sama dua kali
menghasilkan nilai semula, maka proses dekripsi menggunakan
persamaan:
P = C K
Contoh: plainteks 01100101 (karakter „e‟)
kunci 00110101 (karakter „5‟)
16
cipherteks 01010000 (karakter „P‟)
kunci 00110101 (karakter „5‟)
plainteks 01100101 (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) (2.3)
4. 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 blok-
blok 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