tugas computer security
DESCRIPTION
Algoritma ini pertama kali diperkenalkan oleh Whitfield Diffie dan Martin Hellman pada tahun 1975. Mereka berdua adalah peneliti pada universitas Stanford. Mereka memperkenalkan algoritma ini untuk memberi solusi atas pertukaran informasi secara rahasia. Algoritma ini tidak berdasarkan pada proses enkripsi dan dekripsi, melainkan lebih kepada proses matematika yang dilakukan untuk menghasilkan kunci rahasia yang dapat disebarkan secara bebas tanpa harus khawatir karena kunci rahasia tersebut hanya dapat didekripsi hanya oleh pengirim dan penerima pesan. Dasar dari algoritma ini adalah matematika dasar dari aljabar eksponen dan aritmatika modulus.TRANSCRIPT
Tugas Computer Security
Algoritma Kunci Asimetris
Dandy Pramana Hostiadi (1291761009)
Muhammad Riza Hilmi (1291761010)
I Gusti Rai Agung Sugiartha (1291761017)
I Gede Muriarka (1291761018)
PROGRAM PASCASARJANA
MAGISTER SISTEM INFORMASI DAN KOMPUTER (MSIK)
UNIVERSITAS UDAYANA
DENPASAR
2013
Algoritma Deffie-Hellman
I Gede Muriarka (1291761018)[email protected]
A. SEJARAH
Algoritma ini pertama kali diperkenalkan oleh Whitfield Diffie dan Martin Hellman pada
tahun 1975. Mereka berdua adalah peneliti pada universitas Stanford. Mereka
memperkenalkan algoritma ini untuk memberi solusi atas pertukaran informasi secara rahasia.
Gambar 1. 1 Whitfield Diffie dan Martin Hellman
Algoritma ini tidak berdasarkan pada proses enkripsi dan dekripsi, melainkan lebih
kepada proses matematika yang dilakukan untuk menghasilkan kunci rahasia yang dapat
disebarkan secara bebas tanpa harus khawatir karena kunci rahasia tersebut hanya
dapat didekripsi hanya oleh pengirim dan penerima pesan. Dasar dari algoritma ini
adalah matematika dasar dari aljabar eksponen dan aritmatika modulus.
B. Langkah-langkah pertukaran kunci
Langkah-langkah dalam pertukaran kunci dengan menggunakan algoritma Diffie-
Hellman adalah sebagai berikut:
1. Pilih bilangan prima yang besar, p dan bilangan integer yang tidak melebihi dari nilai p,
g, biasa disebut bilangan basis atau generator. Kedua bilangan tersebut dapat diketahui
secara publik.
2. Pilih sebuah bilangan acak oleh pengirim, x, bilangan ini tidak boleh diketahui oleh orang
lain.
3. Pilih sebuah bilangan acak oleh penerima, y, bilangan ini tidak boleh diketahui oleh
orang lain.
4. Pengirim menghitung A = gx mod p. Bilangan A ini dapat diketahui secara publik.
5. Penerima menghitung B = gy mod p. Bilangan B ini dapat diketahui secara publik.
6. Lakukan pertukaran bilangan A dan B terhadap pengirim dan penerima.
7. Lalu Pengirim menghitung ka = Bx mod p.
8. Penerima menghitung kb = Ay mod p.
9. Berdasarkan hukum aljabar nilai ka sama dengan kb atau bisa disebut ka = kb = k. Sehingga
pengirim dan penerima tersebut mengetahui kunci rahasia tersebut “k”.
*note
Bukti dari ka = kb = k : ka = kb
Bx mod p = Ay mod p
(gy mod p)x mod p = (gx mod p)y mod p
(gy)x mod p = (gx)y mod p
gyx mod p = gxy mod p
C. Contoh Algoritma Deffie - Hellman
1. Alice dan Bob menetapkan p = 23 dan g = 5.
2. Eve (penyadap) tahu nilai p dan g.
3. Alice memilih nilai x = 6 dan Bob memilih nilai y = 15.
4. Alice menghitung nilai A = 56 mod 23 = 8.
5. Bob menghitung nilai B = 5 15 mod 23 = 19.
6. Alice dan Bob bertukar nilai A dan B.
7. Eve menyadap mereka dan tahu nilai A dan B.
8. Alice melakukan perhitungan ka = 196 mod 23 = 2.
9. Bob melakukan perhitungan k b = 815 mod 23 = 2.
10. Eve mengetahui nilai p , g, A, dan B tetapi dia tidak dapat mengetahui kunci rahasia, k
dari Bob dan Alice.
Alice dan Bob dapat mengetahui kunci rahasia tersebut dan dapat bertukar pesan
dengan aman tanpa harus diketahui oleh Eve. Eve hanya dapat mengetahui nilai p, g, A, dan B
tetapi tidak dapat menghitung kunci rahasia dari mereka berdua. Sehingga Eve tidak dapat
mengetahui pesan rahasia apa antara Alice dan Bob.
Hal ini dapat diilustrasikan seperti pada gambar di bawah ini
Gambar 1. 2 Ilustrasi penggunaan algoritma Diffie- Hellman
Algoritma ini tidak hanya terbatas pada 2 pengguna saja. Jumlah pengguna yang ingin
menggunakan pertukaran kunci menggunakan algoritma Diffie-Hellman ini tidak dibatasi. Hal
ini hanya berlaku jika memenuhi 2 prinsip yang harus dilakukan:
1. Bilangan p dan g yang telah disetujui oleh semua anggota.
2. Setiap anggota harus melakukan pertukaran data yang diperlukan oleh anggota lainnya
sehingga
semua data dapat didapatkan secara merata gabc….n
D. Tingkat Keamanan Algoritma Deffie - Hellman
Tingkat keamanan dari algoritma ini tinggi, jika nilai p dan g dipilih secara benar. Karena
untuk mengetahui atau menebak nilai rahasia yang dimiliki oleh penerima dan pengirim harus
menyelesaikan persamaan Diffie-Hellman terlebih dahulu. Ini merupakan masalah logaritma
diskrit yang perhitungan tersebut tidak dapat diselesaikan untuk nilai bilangan p yang sangat
besar. Menghitung logaritma diskrit dari bilangan modulo p memakan waktu yang kurang lebih
sama seperti dengan memfaktorkan bilangan non prima menjadi faktor primanya, seperti yang
digunakan di algoritma RSA. Oleh karena itu, algoritma ini tingkat keamanannya setingkat
dengan algoritma RSA. Ilustrasi dalam pengkonversian kembali persamaan Diffie-Hellman
dapat dilihat pada gambar di bawah ini
Gambar 1. 3 Ilustrasi dalam pengkonversian kembali persamaan Diffie-Hellman
KRIPTOGRAFI ELGAMAL
I Gusti Rai Agung Sugiartha (1291761017)[email protected]
1. Pendahuluan
Algoritma ElGamal dibuat oleh ilmuwan Mesir Taher ElGamal pada tahun 1984.
Algoritma ini mulanya digunakan untuk tanda tangan digital atau digital signature. Namun
kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. ElGamal
digunakan dalam perangkat lunak yang dikembangkan oleh GNU (), program PGP, dan pada
program keamanan jaringan lainnya. Keamanan ini terletak pada sulitnya menghitung
algoritma diskrit.
Sebelum membahas ElGamal, akan dijelaskan sedikit tentang permasalahan algoritma
diskrit. Misalkan G merupakan sebuah grup siklik dengan order n, α adalam pembangun G dan
elemen identitas dari G adalah 1. Diberikan γ ϵ G. masalah yang muncul adalah bagaimana
menentukan suatu bilangan bulat nonnegatif terkecil b sedemikian memenuhi
γ ≡α b
Bilangan bulat b seperti ini disebut dengan algoritma diskret dari γ dengan basis α.
Masalah bagaimana untuk menentukan bilangan bulan b seperti ini disebut dengan masalah
logaritma diskret.
Masalah komputasi algoritma diskret sangat penting dalam kriptografi. Banyak
kegiatan kriptografi yang tumpuan utamanya menggunakan masalah aloritma diskret.
Misalnya menggunakan dasar pembangkitan kunci pada kriptografi ElGamal.
2. Kriptografi ElGamal
Pada algoritma ElGamal ini terdiri dari tiga proses, yaitu pembangkitan pasangan kunci,
proses enkripsi, dan proses dekripsi. Algoritma ini melakukan proses enkripsi pada blok-blok
plaintext dan kemudian menghasilkan blok-blok chippertext yang kemudian dilanjutkan oleh
proses dekripsi, dimana hasilnya digabungkan kembali, sehingga menjadi pesan yang utuh dan
mudah dipahami. Untuk pembentukan sistem kriptografi ElGamal, dibutuhkan bilangan prima
p dan elemen bilangan primitif.
2.1 Pembentukan Kunci
Pembentukan kunci merupakan proses penentuan suatu bilangan yang kemudian akan
digunakan sebagai kunci pada proses enkripsi dan dekripsi pesan. Kunci terdiri dari nilai p, g,
dan y. sedangkan kunci untuk dekripsi terdiri dari nilai a dan p. masing-masing nilai
mempunyai persyaratan yang harus dipenuhi.
Pada proses ini dibutuhkan sebuah bilangan prima p yang digunakan untuk
membentuk grup Zp¿ , elemen primitif g dan sebarang a ϵ {1, 2, 3, …, p-2}. Dipilih a dalam
rentang tersebut karena dalam ElGamal merupakan bilangan yang digunakan untuk operasi
pangkat, padahal diketahui grup Zp¿ ber-order p-1, oleh karena itu pangkatnya dari {1, 2, …. , p-
2}. Jika dipangkatkan dengan p-1 maka akan menghasilkan elemen identitas, dan pada grup Zp¿
elemen identitasnya adalah 1. Untuk kunci publik pada algoritma ElGamal ini adalah tiga
pasangan bilangan yaitu (p, g, y), dengan
y = ga mod p............................................................... (1)
sedangkan untuk kunci privatnya adalah a.
Karena algoritma ElGamal menggunakan bilangan bulat dalam proses perhitungannya,
maka pesan yang akan dikirimkan harus dikonversikan ke dalam bilangan bulat. Sebagai
pengkonversiannya, digunakan kode ASCII (American Standard for Information Interchange).
Kode ini adalah representasi numerik dari karakter yang digunakan pada komputer, yang nilai
minimalnya 0 dengan nilai maksimal 255. Berdasarkan sistem kriptografi ElGamal, maka
bilangan prima yang digunakan adalah lebih besar dari 255. Kode ASCII berkorespodensi satu
satu dengan karakter pesan yang akan dikirimkan. Berikut merupakan alur pembentukan kunci
ElGamal
Alur pembentukan Kunci
Input : bilangan prima > 255, dan elemen primitif g, dimana g<p.
Output : kunci publik (p, g, y) dan kunci rahasia a.
Langkah :
1. Pilih bilangan prima p.
2. Pilih dua buah bilangan acak g dan a, dengan a ϵ {1, 2, 3, …, p-2}.
3. Hitung y = ga mod p.
4. Publikasikan p, g, dan y tetapi a dirahasiakan.
Kunci publik yang dihasilkan pada pembentukan kunci sifat tunggal, karena ketiga nilai
yang akan digunakan pada pembentukan kunci sudah ditetapkan, sehingga nilai y adalah
tunggal. Terdapat y1 dan y2. Diambil bilangan prima p, bilangan acak g ϵ Zp¿ , dan a ϵ {1, 2, 3, …,
p-2}. Dengan y = ga mod p, maka
y1 = ga mod p dan y2 = ga mod p
Mulai
Bilangan prima > 255
Pilih a ϵ {1, 2, 3, …, p-2}
y = mod p
Selesai
Kunci publik ( p, g, y)
y = ga mod p, maka
ga= y1 mod p
Sehingga y2 = y1 mod p, dengan demikian y2=y1, terbukti bahwa kemunculan kunci y bersifat
tunggal.
Berikut ini diperlihatkan diagram alir pembentukan kunci, seperti gambar dibawah ini:
Gambar 1 Diagram Alir Pembentukan Kunci
Pihak yang melakukan proses pembuatan kunci adalah pihak penerima. Jadi pihak
penerima mengetahui kunci publik dan kunci privat. Kunci publik yang dia hasilkan,
diberitahukan kepada pengirim pesan. Namun, pengirim pesan tidak mengetahui kunci
privatnya. Berikut ini akan diberikan contoh proses pembentukan kunci dengan menggunakan
algoritma ElGamal.
Budi memberikan pesan rahasia kepada Iwan. Iwan memilih bilangan prima p = 257, dan
elemen primitif g = 2. Selanjutnya dipilih a = 178. Lalu dihitung
y = ga mod p
y = 2178 mod 257 = 4
Jadi diperoleh kunci publik (p, g, y) adalah (4, 2, 257) dan kunci private a = 178. Iwan
memberikan kunci publik (4, 2, 257) kepada Budi dan untuk kunci privatenya Iwan
simpan sendiri.
2.2 Proses Enkripsi
Plaintext adalah himpunan dari {1, 2, 3, …, p-1}. Untuk mengenkripsi sebuah
plaintext m, dibutuhkan kunci publik (p, g, y) yang sebelumnya sudah dibuat oleh
penerima pesan. Lalu dipilih sembarang bilangan rahasia acak k dimana k ϵ {1, 2, 3, 4, …,
p-2} Pesan yang akan disampaikan adalah m , lalu m akan dipecah tiap-tiap karakternya,
yang dikonversikan ke dalam kode ASCII, sehingga pesan menjadi plaintext m1, m2, m3, ..,
mn dengan m1 ϵ {1, 2, 3, …, p-1}, i = 1, 2, .. , n. Proses enkripsi dilakukan tiap-tiap blok m
dengan menghitung:
B = gk mod p.......................................................................................(2)
β = ykmi mod p...................................................................................(3)
dengan k ϵ {1, 2, 3, …, p-2} acak, sehingga diperoleh chipertext (B, β) untuk blok pesan m. jadi
ukuran ciphertext menjadi dua kali lipat plaintext.
Proses penentuan bilangan acak k, pengirim pesan yang berperan, dan sifat
bilangan acak k tadi adalah rahasia, jadi hanya pengirim pesan saja yang mengetahuinya.
Berikut merupakan alur proses enkripsi:
Input : Pesan yang dikirimkan, kunci publik (p, g, y)
Output : Ciphertext (B, β), i = 1, 2, …., n
Langkah :
1. Memotong pesan m menjadi blok-blok pesan, sehingga satu blok adalah satu karakter
pesan.
2. Mengkonversikan masing-masing karakter yang telah diperoleh ke dalam kode ASCII,
sehingga diperoleh plaintext sebanyak n bilangan, yaitu m1, m2, m3, …., mn.
3. Untuk i dari 1 sampai n :
a. Memilih sebarang bilangan acak ki ϵ {1, 2, 3, …, p-2}.
b. Menghitung Bi = gk mod p
c. Menghitung βi = ykimi mod p
4. Diperoleh ciphertext (Bi, βi), i = 1, 2, 3, …, n
Berikut ini diperlihatkan diagram alir enkripsi pesan, seperti gambar dibawah ini:
Mulai
pesan(m), panjang blok(i)kunci publik(p, g, y)
Pemotongan pesan (m)
Konversi ke kode ASCII
Pilih ki ϵ {1, 2, 3, .., p-2}
Bi = gk mod pβi = mi mod p
i = panjang m
i= i+ 1
Selesai
Gambar 2 Diagram Alir Enkripsi Pesan
Dari contoh pembentukan kunci publik sebelumnya, yaitu (p, g, y) = (257, 2, 4).
Budi akan mengirimkan pesan “Udayana” kepada Iwan. Budi akan melakukan enkripsi
dengan menggunakan kunci publik dari Iwan. Langkah pertama yaitu membagi pesan
menjadi blok pesan, kemudian dikonversi menjadi kode ASCII. Hasil konversi ke dalam
kode ASCII dapat dilihat dalam tabel berikut ini:
Tabel 1 Konversi Blok Pesan ke Kode ASCII
i mi Karakter Kode ASCII
1 m1 U 85
2 m2 D 100
Tabel 2 Konversi Blok Pesan ke Kode ASCII (Lanjutan)
i mi Karakter Kode ASCII
3 m3 a 97
4 m4 y 121
5 m5 a 97
6 m6 n 110
7 m7 a 97
Dari tabel diatas dapat kita lihat blok pesan yang terbentuk adalah sebanyak 7 buah.
Langkah selanjutnya adalah membangkitkan bilangan k dimana ki ϵ {1, 2, 3, .., p-2} adalah ki ϵ
{1, 2, 3, .., 255}, i = 1, 2, …., 7. Setelah itu mencari nilai B dengan rumus (2) yaitu : B = 2k mod
257 dan nilai β dengan rumus (3) yaitu β = 178kmi mod 257, dengan i = 1, 2, …., 7. Lebih
jelasnya hasil enkripsi disajikan dalam tabel berikut ini:
Tabel 3 Enkripsi Pesan menjadi Ciphertext
i mi ki B = 2k mod 257 β = 178kmi mod 257
1 85 11 32 174
2 100 149 32 114
3 97 101 32 126
4 121 196 16 136
5 97 72 256 97
6 110 47 2 183
7 97 141 32 126
Dari tabel diatas dapat diperoleh ciphertext yang akan dikirimkan adalah sebagai berikut:
(32,174) (32,114) (32,126) (16,136) (256,97) (2,183) (32,126)
Ciphertext itulah yang nantinya akan diterima oleh Iwan. Kelebihan dari penggunaan
algoritma Elgamal ini adalah ciphertext yang dihasilkan berbeda-beda, meskipun huruf aslinya
adalah sama, hal ini dikarenakan karena pemilihan bilangan k yang acak.
2.3 Proses Dekripsi
Proses selanjutnya adalah dekripsi. Setelah memperoleh ciphertext, maka penerima
melakukan pengubahan ciphertext (Bi, βi) menjadi plaintext, sehingga dapat dengan mudah
membaca isi dari pesan tersebut. Untuk mendekripsi pesan, penerima membutuhkan kunci
private a.
Misalkan diberikan suatu kunci publik (p, g, y) dan kunci private a, serta ciphertext (B, β),
maka:
m = β (Ba)−1 mod p.............................................................................(4)
dengan m adalah plaintext.
Plaintext juga dapat ditemukan kembali dengan
m = β (Bp−1−a)❑ mod p.......................................................................(5)
ini merupakan grup siklik berorder p-1, dan lambang “-1” menyatakan inversi modulo.
Berikut merupakan alur proses dekripsi:
Input : ciphertext (Bi, βi), i = 1, 2, .., n. Kunci publik (p, g, y) dan kunci private a.
Output : pesan asli
Langkah:
1. Untuk i sampai dengan n :
Menghitung : mi = βi (Bia)−1 mod p
2. Akan diperoleh plaintext m1, m2, m3, …, mn.
3. Konversi dari kode ASCII kemudian digabung menjadi pesan asli.
Berikut ini diperlihatkan diagram alir enkripsi pesan, seperti gambar dibawah ini:
Mulai
ciphertext(Bi, βi), kunci publik(p, g, y)
kunci private a
mi = βi mod p
Pesan m
Konversi pesan m ke ASCII
i = panjang m
i= i+ 1
Selesai
pesan
Gambar 3 Diagram Alir Dekripsi Pesan
Berdasarkan contoh sebelumnya. Iwan menerima ciphertext yang telah dikirimkan oleh
Budi. Iwan harus melakukan proses dekripsi agar dapat membaca pesan yang terkirim. Adapun
ciphertext yang diterima Iwan adalah :
(32,174) (32,114) (32,126) (16,136) (256,97) (2,183) (32,126)
Diperoleh kunci publik (p, g, y) = (257, 2, 4) dan kunci private a = 178. Iwan melakukan
perhitungan sesuai dengan rumus (4), yaitu m = β (B178)−1 mod 257
Sebagai hasil perhitungannya, akan disajikan dalam tabel berikut ini:
Tabel 4 Dekripsi ciphertext menjadi pesan
i Bi βi m = β (B78)❑ mod 257 Karakter
1 32 174 85 U
2 32 114 100 d
3 32 126 97 a
4 16 136 121 y
5 256 97 97 a
6 2 183 110 n
7 32 126 97 a
Setelah proses dekripsi, Iwan mengetahui pesan yang dikirim Budi adalah “Udayana”.
5. Penggunaan Kriptografi ElGamal
Kriptografi ElGamal sering digunakan dalam sistem kriptografi hibrid, pesan sendiri di enkripsi
dengan sistem simetrik dan ElGamal kemudian digunakan untuk dekripsi dengan
menggunakan kunci rahasia (private). Karena sistem kriptografi asimetrik seperti
ElGamal biasanya membutuhkan waktu yang lama dikembangkan untuk mengenkripsi
sistem kriptografi simetrik(yang berbanding lurus dengan panjang pesan yang
dikirimkan). Sistem Kriptogafi ElGamal biasa digunakan pada pengiriman surat elektronik
(E-mail), tanda tangan digital, citra.
6. Simpulan
Penerapan sistem kriptografi ElGamal dibagi menjadi proses pembentukan kunci,
enkripsi pesan dan dekripsi pesan. Perhitungan ketiga proses menggunakan masalah logaritma
diskret. Ciphertext yang terbentuk pada proses enkripsi sangat beragam, dipengaruhi oleh
bilangan acak k yang dibangkitkan, sehingga pesan sangat aman untuk di kirimkan.
Penerapan kriptografi ElGamal harus menjaga keamanan kunci publik, pembangkitan
kunci publik harus terus berbeda setiap komunikasi agar tidak di manipulasi oleh pihak yang
tidak bertanggung jawab.
Penerapan kriptografi ElGamal dari tiga proses perhitungan, harus menggunakan
beberapa algoritma tambahan, karena perhitungan terdiri dari eksponensial yang besar dan
modulus yang besar juga. Penggunaan tipe data yang disediakan oleh bahasa pemrograman
akan tidak bisa menampung hasil perhitungan.
Algoritma RSA
Dandy Pramana Hostiadi (1291761019)[email protected]
RSA di bidang kriptografi adalah sebuah algoritma pada enkripsi public key. RSA
merupakan algoritma pertama yang cocok untuk digital signature seperti halnya ekripsi, dan
salah satu yang paling maju dalam bidang kriptografi public key. RSA masih digunakan secara
luas dalam protokol electronic commerce, dan dipercaya dalam mengamnkan dengan
menggunakan kunci yang cukup panjang.
A. Sejarah RSA
Algortima RSA dijabarkan pada tahun 1977 oleh tiga orang : Ron Rivest, Adi Shamir dan
Len Adleman dari Massachusetts Institute of Technology. Huruf RSA itu sendiri berasal dari
inisial nama mereka (Rivest—Shamir—Adleman). RSA adalah salah satu algoritma penyandian
yang paling banyak mengundang kontroversi, selain DES (Data Encryption Standart). Sejauh ini
belum seorang pun yang berhasil menemukan celah keamanan pada DES dan RSA, tetapi tak
seorang pun juga yang berhasil memberikan pembuktian ilmiah yang memuaskan dari
keamanan kedua teknik sandi ini.
RSA yang menggunakan algoritma asimetrik mempunyai dua kunci yang berbeda,
disebut pasangan kunci (key pair) untuk proses enkripsi dan dekripsi. Kunci-kunci yang ada
pada pasangan kunci mempunyai hubungan secara matematis, tetapi tidak dapat dilihat secara
komputasi untuk mendeduksi kunci yang satu ke pasangannya. Algoritma ini disebut kunci
publik, karena kunci enkripsi dapat disebarkan. Orang-orang dapat menggunakan kunci publik
ini, tapi hanya orang yang mempunyai kunci privat sajalah yang bisa mendekripsi data
tersebut.
B. Keunggulan dan Kelemahan RSA
Sisi keamanan pada sistem RSA terletak pada sulitnya memfaktorkan sebuah bilangan
besar n yang dihasilkan dari perkalian dua buah bilangan prima p dan q. nilai n yang dihasilkan
bersifat tidak rahasia, sementara nilai bilangan prima p dan q harus bersifat rahasia, sehingga
hampir mustahil bagi seorang penyerang untuk mendapatkan nilai ϕ (n) (totien (n)atau disebut
juga phi(n)) yang merupakan nilai bilangan dasar yang digunakan untuk menghasilkan
pasangan kunci publik e dengan kunci privat d. Secara umum, tipe serangan yang mungkin
untuk algoritma RSA adalah:
Brute Force
Mathematical Attack
Man-In-The-Middle Attack
Choosen Ciphertext Attack
Sisi Kelemahan RSA adalah pada ukuran kunci privat yang terlalu besar akan
mengakibatkan proses dekripsi yang cukup lambat, terutama untuk ukuran pesan yang besar.
Oleh karena itu, RSA umumnya digunakan untuk meng-enkripsi pesan berukuran kecil seperti
kata kunci dari enkripsi simetris seperti DES dan AES yang kemudian kunci tersebut dikirim
secara bersamaan dengan pesan utama.
C. Implementasi RSA
RSA merupakan metode penyandian yang masih kokoh untuk mengatasi masalah
keamanan dalam pengiriman data pada suatu jaringan pada media elektronik. Dari segi teknis
penghitungan, system RSA mempunyai cara enkripsi yang mudah, tetapi jika sudah dienkripsi,
data yang terenkripsi sulit untuk dibobol jika hanya mempunyai kunci publiknya saja. Dalam
proses pembuatan kunci publik dan kunci privat, terdapat beberapa faktor yang menjadi
pertimbangan, yaitu ukuran dari kunci, penentuan nilai p dan q agar sulit untuk dibobol, dan
kemungkinan-kemungkinan kelemahan yang dapat diketahui saat data selesai dienkripsi. Pada
kehidupan sehari-hari, aplikasi sisten RSA dapat ditemukan pada system autentikasi data dan
pembuatan tanda tangan digital pada komputer, pada tingkat perangkat keras, RSA banyak
digunakan pada telepon yang mempunyai system pengaman dari penyadapan, kartu jaringan
ethernet, dan pada kartu cerdas. RSA juga dimasukkan ke dalam protokol internet yang
mempunyai sistem pengaman, seperti S-HTTP, S/MIME dan lain-lain.
D. Pembangkitan RSA
Berikut merupakan perhitungan matematika dibalik enkripsi kunci publik RSA :
Pilih P dan Q, dua bilangan prima besar
Pilih E dimana E lebih besar dari 1, E adalah kurang dari PQ dan E relatif prima
terhadap (P-1)(Q-1) (tidak memiliki faktor prima yang sama). E tidak harus prima
tetapi harus ganjil. (P-1)(Q-1) tidak dapat prima karena merupakan bilangan genap.
Hitung D dimana (DE-1) dibagi sempurna oleh (P-1)(Q-1). Ahli matematika
menuliskan sebagai DE = 1 (mod(P-1)(Q-1)) dan mereka menyebut D multiplicative
inverse dari E. Lebih mudahnya pilih integer X yang menghasilkan D = (X(P-1)(Q-
1)+1)/E yang menghasilkan bilangan integer (bulat), gunakan nilai D.
Fungsi Enkripsi adalah C = (T^E) mod PQ, dimana C adalah ciphertext (positive
integer), T adalah plaintext (positive integer), dan ^ menunjukkan pangkat. Message
yang dienkripsi, T, harus lebih kecil dari modulus PQ.
Fungsi Dekripsi adalah T = (C^D) mod PQ, dimana C adalah ciphertext (positive
integer), T adalah plaintext (positive integer), dan ^ menunjukkan pangkat.
Public key adalah pasangan (PQ, E).
Private key adalah D.
Perkalian PQ adalah modulus (biasa disebut N dalam literatur).
E adalah public exponent. D adalah secret exponent.
Contoh
Penghitungan Enkripsi dan Dekripsi dengan RSA dengan text “ Dandy”
Dimana code ASCII
D = 68 a = 97 n = 110 d = 100 y = 121
Pembangkitan nilai public key dan nilai private key
Pemilihan nilai p = 7 dan q = 19
Mencari nilai n ==>> n = p.q
= 7 x 19
= 133
Mencari nilai m ==>> m = (p-1) (q-1)
= (7 -1)(19 – 1)
= 108
Mencari nilai e dan d ==>> (e * d) mod 108 = 1
e = 5
d = 65
public key = (e,n) = (5,133)
private key = (d,n) = (65,133)
Proses Enkripsi
Mencari nilai chipertext (Enkripsi)
C = Me mod n
◦ = 685 mod 133 (karakter “D”)
◦ = 45 (karakter “-“)
◦ = 975 mod 133 (karakter “a”)
◦ = 130 (karakter “é “)
◦ = 1105 mod 133 (karakter “n”)
◦ = 59 (karakter “;” )
◦ = 1005 mod 133 (karakter “d”)
◦ = 123 (karakter “{“ )
◦ = 1215 mod 133 (karakter “y”)
◦ = 11 ( karakter “♂”)
Teks Dandy = -é;{♂
Proses Dekripsi
Mencari nilai plaintext (Dekripsi)
D = Cd mod n
◦ 4565 mod 133 (karakter “-”)
◦ 68 (karakter “D”)
◦ 13065 mod 133 (karakter “é”)
◦ 97 (karakter “a”)
◦ 5965 mod 133 (karakter “;”)
◦ 110 (karakter “n”)
◦ 12365 mod 133 (karakter “{”)
◦ 100 (karakter “d”)
◦ 1165 mod 133 (karakter “♂”)
◦ 121 (karakter “y”)
Teks -é;{♂ = Dandy
Digital Signature Algorithm (DSA)Muhammad Riza Hilmi (1291761010)
A. Pendahuluan
Seiring dengan perkembangan teknologi informasi, pada tahun 1990 keamanan
informasi menjadi bahan pembicaraan bagi banyak kalangan antaranya pemerintah, bisnis
komersial, dan individu.
Informasi disimpan dalam bentuk elektronik karena medium ini lebih sederhana,
ukurannya kompak, dan melayani transfer data yang cepat. Namun dengan terjadinya revolusi
elektronik maka informasi menghadapi masalah yang serius yaitu keamanan informasi pada
proses komunikasi. Proses komunikasi sendiri melibatkan dua pihak yaitu pihak pengirim
(sender) dan penerima (receiver). Tentunya, yang dikirim adalah informasi atau pesan yang
hanya boleh diketahui oleh kedua belah pihak. Namun jika pihak ketiga menyadap dan
memodifikasi pesan atau berpurapura sebagai pengirim asli tentunya akan sangat merugikan.
Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. Kata
cryptography berasal dari kata Yunani kryptos (tersembunyi) dan graphein (menulis). Selain
pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika
yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan
data, integritas data, serta autentikasi data. Enkripsi adalah transformasi data kedalam bentuk
yang tidak dapat terbaca tanpa sebuah kunci tertentu. Tujuannya adalah untuk meyakinkan
privasi dengan menyembunyikan informasi dari orang-orang yang tidak ditujukan, bahkan
mereka mereka yang memiliki akses ke data terenkripsi. Dekripsi merupakan kebalikan dari
enkripsi, yaitu transformasi data terenkripsi kembali ke bentuknya semula.
Kriptografi saat ini lebih dari enkripsi dan dekripsi saja. Otentikasi menjadi bagian dari
kehidupan kita sama seperti privasi. Kita menggunakan otentikasi dalam kehidupan sehari-hari,
sebagai contoh saat kita menandatangani sejumlah dokumen dan saat kita berpindah ke dunia
dimana keputusan dan persetujuan kita dikomunikasikan secara elektronis, kita membutuhkan
tekikteknik untuk otentikasi. Digital Signature Algorithm (DSA) adalah termasuk ke dalam
sistem kriptografi kunci-publik.
B. Digital Signature Algorithm(DSA)
Pada bulan Agustus 1991, NIST (The National Institute of Standard and Technology)
mengumumkan algoritma sidik dijital yang disebut Digital Signature Algorithm (DSA). DSA
dijadikan sebagai bakuan (standard) dari Digital Signature Standard (DSS).
Digital signature merupakan sistem keamanan kriptografi simetris (symetric
crypthography/secret key crypthography) atau public key cryptography system yang dikenal
sebagai kriptografi simetris, menggunakan kunci yang sama dalam melakukan enkripsi dan
dekripsi terhadap suatu pesan (message), disini pengirim dan penerima menggunakan kunci
yang sama sehingga mereka harus menjaga kerahasian (secret) terhadap kunci tersebut. Suatu
digital signature sebenarnya bukan tanda tangan biasa, tapi tanda tangan dengan
menggunakan cara yang berbeda untuk menandai suatu dokumen sehingga dokumen atau
data tidak mengidentifikasi dari pengirim. Kriptografi simetris menggunakan dua kunci yaitu
satu kunci untuk melakukan enkripsi terhadap suatu pesan (messages) dan kunci yang lain
digunakan untuk melakukan dekripsi terhadap pesan tersebut. Tanda tangan secara digital
adalah memberikan suatu ciri khas terhadap suatu pesan. Message digest adalah suatu
besaran (value) yang berasal dari suatu data/pesan yang memiliki sifat yang unik dengan kata
lain pesan tersebut mempunyai suatu besaran tertentu yang diciptakan dengan melakukan
enkripsi terhadap suatu data dengan menggunakan kriptografi satu arah (one way
crypthography), yaitu suatu tehnik kriptografi yang terhadapnya tidak dapat dilakukan proses
pembalikan (reversed). Pada saat message digests dienkripsi dengan menggunakan kunci
privat dari pengirim dan "ditambahkan" kepada data/pesan yang asli maka hasil yang didapat
adalah digital signature dari pesan tersebut.
Gambar 1. Alur Signing dan Verification dengan DSA
Pada gambar 1 tersebut dijelaskan bagaimana data diubah ke hash yaitu bilangan biner
dan diberikan kunci private key, kemudian ditambahkan certificate setelah itu data dikirimkan.
Pada sisi penerima, data kembali dipecah menjadi datanya sendiri dan signature key-nya,
kemudian hash dari data, dicocokkan dengan hash yang dimilik oleh penerima melalui public
key, jika memiliki hash yang sama maka data akan ditampilkan.
DSA menggunakan fungsi hash SHA (Secure Hash Algorithm) untuk mengubah pesan
menjadi intisari pesan yang berukuran 160 bit. DSA dan algoritma tanda-tangan digital lainnya
mempunyai tiga proses utama yaitu:
1. Pembangkitan pasangan kunci (Key Pair Generation)
2. Pembangkitan tanda-tangan digital (Digital Signature Generation)
3. Verifikasi tanda-tangan digital (Digital Signature Verification)
C. Parameter DSA
DSA dikembangkan dari algoritma ElGamal. DSA mempunyai properti berupa
parameter sebagai berikut:
1. p, adalah bilangan prima dengan panjang L bit, yang dalam hal ini 512 ≤ L ≤ 1024
dan L harus kelipatan 64. Parameter p bersifat publik dan dapat digunakan
bersama oleh orang di dalam kelompok.
2. q, bilangan prima 160 bit, merupakan faktor dari p – 1. Dengan kata lain, (p – 1)
mod q =0. Parameter q bersifat publik.
3. g=h (p -1) /q mod p, yang dalam hal ini h < p– 1 sedemikian sehingga h ( p-1) / q mod p >
1. Parameter g bersifat publik.
4. x, adalah bilangan bulat kurang dari q. Parameter x adalah kunci privat.
5. y = g x mod p , adalah kunci publik.
6. m, pesan yang akan diberi tanda-tangan.
D. Prosedur Algoritma DSA
1. Prosedur Pembangkitan Sepasang Kunci
1) Pilih bilangan prima p dan q, yang dalam hal ini (p -1)mod q = 0
2) Hitung g = h(p – 1)/q mod p, yang dalam hal ini 1>h>p -1dan h( p-1) / q mod p-1
3) Tentukan kunci privat x, yang dalam hal ini x< q.
4) Hitung kunci publik y = gx mod p.
Jadi, prosedur di atas menghasilkan:
kunci publik dinyatakan sebagai (p, q, g, y),kunci privat dinyatakan sebagai (p, q, g, x).
2. Prosedur Pembangkitan Tanda-tangan (Signing)
1) Ubah pesan m menjadi intisari pesan dengan fungsi hash SHA, H.
2) Tentukan bilangan acak k < q.
3) Tanda-tangan dari pesan m adalah bilangan r dan s. Hitung r dan s sebagai
berikut:
r = (g k mod p) mod q
s =(k-1(H(m)+ x*r))mod q.
4) Kirim pesan m beserta tanda- tangan r dan s.
3. Prosedur Verifikasi Keabsahan Tanda-tangan (Verifying)
1) Hitung
w = s -1 mod q
u1 =(H(m)*w) mod q
u2 =(r *w)mod q
v = ((g u1 * yu2)mod p)mod q
2) Jika v = r, maka tanda-tangan sah, yang berarti bahwa pesan masih asli dan
dikirim oleh pengirim yang benar.
E. Contoh Perhitungan
a. Pembangkitan Sepasang Kunci
1) Pilih bilangan prima p dan q, yang dalam hal ini (p – 1) mod q = 0.
p = 59419
q = 3301 (memenuhi 3301 * 18 = 59419 – 1)
2) Hitung g = h(p – 1)/q mod p, yang dalam hal ini 1 < h < p – 1 dan h(p – 1)/q mod p > 1.
g = 18870 (dengan h = 100)
3) Tentukan kunci rahasia x, yang dalam hal ini x < q.
x = 3223
4) Hitung kunci publik y = gx mod p.
y = 29245
b. Pembangkitan Tanda-tangan (Signing)
1) Hitung nilai hash dari pesan, misalkan H(m) = 4321
2) Tentukan bilangan acak k < q.
k = 997
k– 1 = 2907 (mod 3301)
3) Hitung r dan s sebagai berikut:
r = (gk mod p) mod q = 848
s = (k– 1 (H(m) + x * r)) mod q
= 7957694475 mod 3301
= 183
4) Kirim pesan m dan sidik dijital r dan s.
c. Verifikasi Keabsahan Tanda-tangan (Verifying)
1) Hitung
s– 1 = 469 (mod 3301)
w = s– 1 mod q = 469
u1 = (H(m) * w) mod q 2026549 mod 3301 = 3036
u2 = (r * w) mod q = 397712 mod 3301 = 1592
v = ((gu1 * yu2) mod p) mod q) = 848 mod 3301 = 848
2) Karena v = r, maka sidik dijital sah.
DAFTAR PUSTAKA
Arizka, Rininda Ulfa . 2011 . “Penerapan Sistem Kriptografi ElGamal Atas Z_p^* Dalam
Pembuatan Tanda Tangan Digital”. Universitas Negeri Yogyakarta : Program Studi
Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam
Brownawell, W. Dale . “Pseudo-Code for Integer Algorithms in Bressoud’s Factorization and
Primality Tesing”. CSE/Math 467
ElGamal, Taher. 1985 . “A Public-Key Cryptosystem and a Signature Scheme Based on
Discrete Logarithms”. IEEE Transactions on Information Theory
Menezes, A. 1996 . “Handbook of Applied Cryptography” CRC Press. Hal : 294-296
Rochmat, Nur. Dkk. 2012 . “Implementasi Algoritma Kriptografi ElGamal untuk Keamanan
Pesa (Message Security)”. Transient Vol. 1, No. 3. ISSN : 2302-9927, 83.