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
abc….n semua data dapat didapatkan secara merata g
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
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
, 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
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 elemen identitasnya adalah 1. Untuk kunci publik pada algoritma ElGamal ini adalah tiga pasangan bilangan yaitu (p, g, y), dengan y=
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
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 ϵ p-2}. Dengan y = y1 = y=
mod p, maka
mod p dan y2 = mod p, maka
mod p
, dan a ϵ {1, 2, 3, …,
= 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:
Mulai
Bilangan prima > 255
Pilih a ϵ {1, 2, 3, …, p-2}
y = 𝑔𝑎 mod p
Kunci publik ( p, g, y)
Selesai
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= y=
mod p 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=
mod p ....................................................................................... (2)
β=
mi 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 =
mod p
c. Menghitung βi =
mi 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}
k
Bi = g mod p
i= i+ 1
βi = 𝑦 𝑘𝑖 mi mod p
i = panjang m
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 = 257 dan nilai β dengan rumus (3) yaitu β =
mod
mi 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
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
B=
mod 257
β=
mi mod 257
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=β
mod p ............................................................................ (4)
dengan m adalah plaintext. Plaintext juga dapat ditemukan kembali dengan m=β
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
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
i= i+ 1
Konversi pesan m ke ASCII
i = panjang m
pesan
Selesai
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 = β
mod 257
Sebagai hasil perhitungannya, akan disajikan dalam tabel berikut ini: Tabel 4 Dekripsi ciphertext menjadi pesan i
Bi
βi
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
m=β
mod 257
Karakter
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)(Q1)+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)
[email protected]
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:
C.
1.
Pembangkitan pasangan kunci (Key Pair Generation)
2.
Pembangkitan tanda-tangan digital (Digital Signature Generation)
3.
Verifikasi tanda-tangan digital (Digital Signature Verification)
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.
D.
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.
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: k
r = (g 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.