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