MJK2011 – Digital Signature Algorithm
Download
Report
Transcript MJK2011 – Digital Signature Algorithm
Digital Signature Algorithm
Manajemen Jaringan Komputer
Topik: Pengamanan Jaringan dan Informasi
Eko Prasetyo
Teknik Informatika
Universitas Muhammadiyah Gresik
2011
1
Kasus pesan/kiriman antara 2 pihak
Maria bisa saja membuat pesan yang berbeda
(dari pesan lain yang sebenarnya diterima) dan
mengklaim bahwa pesan tersebut diterima dari
John.
◦ Untuk masalah ini bisa diatasi dengan penggunaan
kode otentikasi yang di-share antara Maria dan
John
John bisa juga menolak adanya klaim
pengiriman sebuah pesan
◦ Karena mungkin bagi Maria, tidak ada cara untuk
membuktikan bahwa pesan tersebut benar-benar
datang dari John.
◦ Masalah ini bisa diatasi dengan kode otentikasi.
2
Tanda Tangan Digital
Tanda tangan (signature) adalah sebuah teknik yang tidak bisa
dibantah, yang didasarkan pada kriptografi kunci publik
Pembuat pesan dapat melampirkan kode, tanda tangan, yang
menjamin sumber dan integritas pesan.
Mirip dengan tanda tangan tulisan tangan, tanda tangan digital
harus memenuhi syarat:
◦ Tidak boleh forgeable (lupa)
◦ Penerima harus dapat memverifikasi dokumen dan tanda tangan
◦ Penandatangan tidak harus dapat menyangkal tanda tangannya
Selain itu, tanda tangan digital tidak boleh konstan (selalu
berbeda) dan harus berfungsi pada seluruh dokumen yang
ditandatangani
3
Standart Tanda Tangan Digital
Pada bulan Agustus 1991, NIST (The National Institute of Standard
and Technology) mengumumkan bakuan (standard) untuk tandatangan digital yang dinamakan Digital Signature Standard (DSS).
◦ NIST FIPS 186 Digital Signature Standard (DSS)
DSS terdiri dari dua komponen:
◦ 1. Algoritma tanda-tangan digital yang disebut Digital Signature Algorithm
(DSA).
◦ 2. Fungsi hash standard yang disebut Secure Hash Algorithm (SHA).
Algoritma:
◦ DSA
◦ El Gamal
◦ RSA Digital Signature
- ISO 9796
- ANSI X9.31
- CCITT X.509
4
DSA
Sebagaimana halnya pada algoritma kriptografi kunci-publik, DSA
menggunakan dua buah kunci, yaitu kunci publik dan kunci privat.
◦ Pembentukan tanda-tangan menggunakan kunci rahasia privat,
◦ sedangkan verifikasi tanda-tangan menggunakan kunci publik pengirim.
DSA menggunakan fungsi hash SHA (Secure Hash Algorithm) untuk
mengubah pesan menjadi message digest yang berukuran 160 bit.
5
Parameter DSA – Komponen Kunci
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-sama oleh orang didalam 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 adalah sembarang nilai integer 1 < 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.
y = gx mod p, adalah kunci publik.
6.
m, pesan yang akan diberi tanda-tangan.
Jadi, prosedur di atas menghasilkan:
kunci publik dinyatakan sebagai PU = {p, q, g, y} Untuk menandatangani
kunci privat dinyatakan sebagai PR = {p, q, g, x} Untuk menverifikasi
5.
6
Parameter DSA –
Pembangkitan Tanda Tangan
1.
2.
Ubah pesan m menjadi message digest dengan fungsi
hash SHA, H. Dengan notasi H(m).
Tentukan bilangan acak k < q Nomor rahasia
untuk sebuah pesan (untuk parameter
penandatanganan)
Tentukan k-1 sebagai invers multiplikatif k
Bahwa k * k-1 ≡ 1 mod q
3.
Tanda-tangan dari pesan m adalah bilangan r dan s.
Hitung r dan s sebagai berikut:
r = (gk mod p) mod q
s = (k– 1 (H(m) + x * r)) mod q
4.
Kirim pesan m beserta tanda-tangan r dan s.
7
Proses Verifikasi Dokumen
1.
Hitung
Tetapkan s-1 sebagai invers multiplikatif dimana s
* s-1 ≡ 1 mod q
w = s–1 mod q
u1 = (H(m) * w) mod q
u2 = (r * w) mod q
v = ((gu1 * 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.
8
Contoh (1) – Pembentukan
Pasangan Kunci
Dibangkitkan p=23 dan q=11, p dan q harus prima dan q < p
◦ Harus memenuhi syarat (p-1) mod q = 0
Nilai h, nilai integer sembarang,secara acak didapatkan h=10
◦ Harus memenuhi syarat 1 < h < p-1
Maka untuk g didapatkan
◦ g = h(p – 1)/q mod p
◦ g = 10(23-1)/11 mod 23 = 102 mod 23 = 8
Tentukan kunci privat x
◦ Harus bulat x < q, tidak harus prima Rahasia
◦ Misal x = 6
Hitung kunci publik y
◦ y = gx mod p = 86 mod 23 = 13
Didapatkan pasangan kunci:
◦ Kunci Publik : PU = {p, q, g, y} = {23, 11, 8, 13}
◦ Kunci Privat : PR = {p, q, g, x} = {23, 11, 8, 6}
9
Contoh (2) – Pembangkitan Tanda
Tangan
Untuk sebuah pesan m, misalnya hasil fungsi hash H(m) = 16
Tentukan secara acak k
◦ Harus memenuhi syarat k < q
◦ Misal, k = 5
Hitung k-1 dari invers multiplikatif k
◦ k * k-1 ≡ 1 mod q
◦ 5 * k-1 ≡ 1 mod 11
◦ Didapat k-1 = 9
Hitung r
◦ r = (gk mod p) mod q
◦ r = (85 mod 23) mod 11 = 16 mod 11 = 5
Hitung s
◦ s = (k– 1 (H(m) + x * r)) mod q
◦ s = (9 * (16 + 6 * 5)) mod 11 = 414 mod 11 = 7
Kirimkan pesan m, r=5, dan s=7 bersama-sama.
10
Contoh (3) – Verifikasi Dokumen
Jika H(m) dari pesan m yang diterima
adalah 16 (sama) Buktikan bahwa
pesan m tadi adalah valid
Jika H(m) dari pesan m yang diterima
adalah 10 (tidak sama) Buktikan
bahwa pesan m tadi adalah tidak valid
11
Verifikasi untuk H(m) = 16
Hitung s-1
◦ s * s-1 ≡ 1 mod q
◦ 7 * s-1 ≡ 1 mod 11, didapat s-1 = 8
Hitung w
◦ w = s–1 mod q
◦ w = 8 mod 11 = 8
Hitung u1
◦ u1 = (H(m) * w) mod q
◦ u1 = (16 * 8) mod 11 = 128 mod 11 = 7
Hitung u2
◦ u2 = (r * w) mod q
◦ u2 = (5 * 8) mod 11 = 40 mod 11 = 7
Hitung v
◦ v = ((gu1 * yu2) mod p) mod q
◦ v = ((87 * 137) mod 23) mod 11 = 16 mod 11 = 5
Karena v=5, dan r=5 SAMA, maka pesan m adalah ASLI
12
Verifikasi untuk H(m) = 10
Hitung s-1
◦ s * s-1 ≡ 1 mod q
◦ 7 * s-1 ≡ 1 mod 11, didapat s-1 = 8
Hitung w
◦ w = s–1 mod q
◦ w = 8 mod 11 = 8
Hitung u1
◦ u1 = (H(m) * w) mod q
◦ u1 = (10 * 8) mod 11 = 80 mod 11 = 3
Hitung u2
◦ u2 = (r * w) mod q
◦ u2 = (5 * 8) mod 11 = 40 mod 11 = 7
Hitung v
◦ v = ((gu1 * yu2) mod p) mod q
◦ v = ((83 * 137) mod 23) mod 11 = 8 mod 11 = 8
Karena v=8, dan r=5 TIDAK SAMA, maka pesan m adalah TIDAK
ASLI
13
Latihan
Jika diketahui:
◦
◦
◦
◦
◦
p = 23
q = 11
h = 20
x = 10
Hitung pasangan kunci publik dan privat
Untuk pasangan kunci diatas, jika diberikan:
◦ k=4
◦ H(m) = 40
◦ Hitung parameter r dan s untuk tanda tangan digitalnya.
Lakukan verifikasi untuk nilai H(m) dari pesan m berikut:
◦ H(m) = 40 Buktikan bahwa H(m) tersebut ASLI
◦ H(m) = 43 Buktikan bahwa H(m) tersebut TIDAK ASLI
14
Implementasi DSA
Adanya batasan bahwa nilai p mempunyai panjang
512 sampai 1024 bit dan q 160-bit,
◦ menyebabkan DSA hampir tidak mungkin
diimplementasikan dalam perangkat lunak.
Panjang bit yang besar ini dimaksudkan agar upaya
untuk memecahkan parameter yang lain sangat
sulit dilakukan.
Compiler C hanya sanggup menyatakan bilangan
bulat hingga 232.
◦ Oleh karena itu, bila DSA diimplementasikan dalam
perangkat lunak, batasan panjang bit p dan q diubah
hingga maksimum nilai p dan q adalah 232.
15
Jawab Latihan
Diketahui
◦ p = 23, q = 11, h = 20, x = 10
Pasangan kunci:
◦
◦
◦
◦
◦
◦
g = h(p – 1)/q mod p
g = 20(23-1)/11 mod 23 = 400 mod 23 = 9
y = gx mod p = 910 mod 23 = 18
Didapatkan pasangan kunci:
Kunci Publik : PU = {p, q, g, y} = {23, 11, 9, 18}
Kunci Privat : PR = {p, q, g, x} = {23, 11, 9, 10}
Pembangkitan tanda tangan:
◦
◦
◦
◦
◦
◦
◦
k = 4, H(m) = 40
k * k-1 ≡ 1 mod q
4 * k-1 ≡ 1 mod 11 k-1 = 14
r = (gk mod p) mod q = (94 mod 23) mod 11 = 6
s = (k– 1 (H(m) + x * r)) mod q = (14*(40+10*6)) mod 11
s = 14 * 100 mod 11 = 3
Kirim pesan m, r = 6, dan s = 3 bersama-sama
16
Jawab Latihan – Verifikasi untuk
H(m) = 40
Kunci Publik : PU = {p, q, g, y} = {23, 11, 9, 18}
Kunci Privat : PR = {p, q, g, x} = {23, 11, 9, 10}
r = 6, dan s = 3
Hitung s-1
◦
◦
Hitung w
◦
◦
u2 = (r * w) mod q
u2 = (6 * 4) mod 11 = 24 mod 11 = 2
Hitung v
◦
◦
u1 = (H(m) * w) mod q
u1 = (40 * 4) mod 11 = 160 mod 11 = 6
Hitung u2
◦
◦
w = s–1 mod q
w = 4 mod 11 = 4
Hitung u1
◦
◦
s * s-1 ≡ 1 mod q
3 * s-1 ≡ 1 mod 11, didapat s-1 = 4
v = ((gu1 * yu2) mod p) mod q
v = ((86 * 182) mod 23) mod 11 = 6 mod 11 = 6
Karena v=6, dan r=6 SAMA, maka pesan m adalah ASLI
17
Jawab Latihan – Verifikasi untuk
H(m) = 43
Kunci Publik : PU = {p, q, g, y} = {23, 11, 9, 18}
Kunci Privat : PR = {p, q, g, x} = {23, 11, 9, 10}
r = 6, dan s = 3
Hitung s-1
◦
◦
Hitung w
◦
◦
u2 = (r * w) mod q
u2 = (6 * 4) mod 11 = 24 mod 11 = 2
Hitung v
◦
◦
u1 = (H(m) * w) mod q
u1 = (43 * 4) mod 11 = 172 mod 11 = 7
Hitung u2
◦
◦
w = s–1 mod q
w = 4 mod 11 = 4
Hitung u1
◦
◦
s * s-1 ≡ 1 mod q
3 * s-1 ≡ 1 mod 11, didapat s-1 = 4
v = ((gu1 * yu2) mod p) mod q
v = ((87 * 182) mod 23) mod 11 = 1 mod 11 = 1
Karena v=1, dan r=6 SAMA, maka pesan m adalah TIDAK ASLI
18