Dokumen tersebut membahas algoritma tanda tangan digital (Digital Signature Algorithm/DSA) yang dikembangkan oleh NIST pada 1991 sebagai standar untuk tanda tangan digital (Digital Signature Standard/DSS). DSA termasuk dalam sistem kriptografi kunci publik dan digunakan untuk membangkitkan tanda tangan digital, bukan untuk enkripsi. Dokumen tersebut menjelaskan proses pembangkitan kunci publik dan privat, pemberian tanda tangan digital, verifikasi tanda tangan
5. Kenapa Tanda Tangan Digital
Compliance & good business
practices for automated processes.
Accelerating, approvals, processes &
time savings
Cost Savings
6. Masalah dalam Digital Signature
menyebabkan data elektronik dikirimkan melalui
open network
Sifat dari keharusan Tanda Tangan Digital:
•Authenticity
•Integrity
•Non-Repudiation
•Confidentiality
Tanda tangan digital menjadi terancam membutuhkan
criptografi
8. Dua Kondisi yang harus Dipenuhi
• Digital signature yang dibangkitkan dari dokumen
dan private key harus bisa memverifikasi
dokumen yang disertai public key.
• Tidak boleh ada kemungkinan untuk
membangkitkan digital signature yang valid dari
sebuah dokumen tanpa ada private key yang
seharusnya
9. Dari segi keamanan, DS harusnya bersifat :
• Tahan terhadap preimage attack
jika ada suatu hash h, maka sulit dicari m dimana h = hash(m).
Preimage adalah suatu himpunan yang berisi tepat semua elemen
domain dari suatu fungsi
• Tahan terhadap second preimage attack
jika ada input m1, maka sulit dicari m2 dimana m1 ≠ m2 sehingga
hash(m1) = hash(m2).
• Tahan terhadap collision
penggabungan dua hal di atas sehingga sulit mencari m1 dan m2
dimana hash(m1) = hash(m2).
10. Digital Signature Algorithm (DSA)
Dikeluarkan oleh NIST bulan Agustus 1991.
DSA dijadikan sebagai bakuan (standard)
dari Digital Signature Standard (DSS).
DSS terdiri dari : DSA dan SHA
DSA termasuk ke dalam sistem kriptografi
kunci-publik, tidak dapat digunakan untuk
enkripsi
11. Proses Digital Signature Algorithm :
• Algoritma untuk membangkitkan private key dan publik
key-nya.
• Algoritma untuk memberi digital signature pada dokumen
jika disediakan dokumen dan private key.
• Algoritma untuk verifikasi tanda tangan digital jika
disediakan dokumen, public key, dan digital signature.
12. Pembangkitan private key dan publik
Menentukan Parameter DSA
• Pilih Bilangan Prima p dengan panjang L bit, dimana 2 L-1 < p < 2L dengan 512 ≤ L
≤1024 dan L adalah kelipatan 64.
• Pilih Bilangan Prima q, bilangan prima 160 bit, faktor dari p-1 dimana 2 159 < q
< 2160.
Parameter p bersifat publik.
• Hitung g = h (p-1)/q mod p, dimana 1< h < p-1 sehingga g > 1.
Parameter g bersifat publik.
• Pilih bilangan acak x (bilangan bulat yang dibangkitkan random atau
pseudorandom) dimana 0 < x < q dengan panjang 160 bit.
Parameter x bersifat privat.
• Hitung y = gx mod p adalah kunci publik
• Maka kunci publik yang telah dibangkitkan adalah (p, q, g, y) dan kunci
privat adalah x.
13. Pembangkitan private key dan publik
Pembangkitan Sepasang Kunci
• Pilih bilangan prima p dan q, dimana (p-1) mod q = 0
• Hitung g = h(p-1)/q mod p, dimana 1 < h < p-1 dan g > 1
Parameter p bersifat publik.
• Tentukan kunci privat x < q
• Hitung kunci publik y = gx mod p
Jadi didapatkan kunci publik (p,q,g,y) dan kunci privat (p,q,g,x)
14. Pemberian Digital Signature (Signing)
• Ubah pesan m menjadi massage digest
dengan fungsi Hash SHA menghasilkan
SHA(M)
• Tentukan bilangan acak k < q
• Tanda tangan dari pesan m adalah bilangan r
dan s yang didapat dari :
r = (gk mod p)mod q
s = (k-1 (SHA(M) + xr)) mod q, k-1 adalah
invers dari k modulo q.
• Pada perhitungan nilai s, 160-bit string
SHA(M) dikonversi terlebih dahulu ke dalam
integer. Jika tandatangan yang dihasilkan
benar maka nilai r dan atau s tidak mungkin
0.
• Maka tanda tangan digital pada pesan
m adalah (s, r).
15. Verifikasi Digital Signature (Verify)
• Ambil kunci publik (p, q, g, y).
• Jika 1 ≤ r ≤ q dan 1 ≤ s ≤ q terima
tanda tangan. Jika tidak, tolak tanda tangan
• Hitung w = s-1 mod q dan SHA(M)
• Hitung u1 = (SHA(M)*w) mod q
• Hitung u2 = (r*w) mod q
• v = ((gu1 * yu2 ) mod p) mod q)
16. Contoh perhitungan DSA
Pembangkitan sepasang kunci
• Pilih bilangan prima p dan q dengan (p-1) mod q = 0,
yaitu p = 59419 dan q = 3301 (memenuhi 3301.18 = 59419-
1)
• Hitung g = h(p-1)/q mod p, dimana 1 < h < p-1 dan g > 1,
yaitu (ambil h = 100), g = 100(59419-1)/3301 mod 59419 =
18870
• Tentukan kunci rahasia x bilangan bulat < q,
ambil x = 3223
• Hitung kunci publik y = gx mod p = 18870 3223 mod 59419 =
29245
17. Contoh perhitungan DSA
Pembangkitan tanda tangan (Sign)
• Hitung nilai hash dari pesan m,
Misal H(m) = 4321
• Tentukan bilangan acak k < q,
misal diambil k = 997, k.k-1 = 1 mod q, didapat
k-1 = 2907
• Hitung r dan s,
r = (gk mod p)mod q = (18870997 mod 59419)mod 3301 = 848
s = (k-1 (H(m) + x r)) mod q = (2907( 4321+3223. 848)) mod 3301= 183
• Kirim pesan m dan tandatangan r dan s
18. Contoh perhitungan DSA
Verifikasi Keabsahan Tanda Tangan
• Hitung
w = s-1 mod q
s. s-1 = 1 mod q, didapat s-1 = 469
w = 469 mod 3301 = 469
u 1 = (H(m)*w) mod q = (4321. 469) mod 3301 = 3036
u 2 = (r*w) mod q = (848. 469) mod 3301 = 1592
v = ((gu1 * yu2 ) mod p) mod q)
= ((18870 3036 . 292451592 ) mod 59419) mod 3301 = 848
• Karena v = r dimana 848=848, maka tanda tangan sah
19. Implementasi Digital Signature Algorithm
o 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
o 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.