Skip to content

Digital Signature Standard

DSS terdiri dari 2 komponen :

  1. Algoritma tanda tangan digital : DSA
  2. Fungsi hash standard : Secure Hash Algorithm(SHA-1)

DSA tidak dapat digunakan untuk enkripsi, DSA dispesifikasikan khusus untuk tanda tangan digital

DSA mempunyai 2 fungsi utama :

  1. pembangkitan tanda tangan
  2. pemeriksaan keabsahan tanda tangan

Parameter DSA

  1. p, bil.prima, panjangnya L bit, 512 < L < 2046, L kelipatan 64 (p publik)
  2. q, bil.prima 160 bit, merupakan faktor dari p-1 ((p-1) % q = 0) (q publik)
  3. g = h^((p-1)/q) mod p, h < p-1 sedemikian sehingga h^((p-1)/q) mod p > 1 (g publik)
  4. x, kunci private, bil.bulat < q
  5. y = g^x mod p, kunci publik
  6. m = pesan

Pembangkitan sepasang kunci

  1. pilih bil.prima p & q (p-1 mod q = 0)
  2. hitung
    g = h^((p-1)/q) mod p, sehingga 1 < h < p-1 dan h^((p-1)/q) mod p > 1
  3. tentukan kunci private x (x < q)
  4. hitung kunci publik y = g^x mod p

hasil :

parameter publik: p, q, g, y
parameter privat: x

Pembangkitan tanda tangan

  1. hitung message digest H(m)
  2. tentukan bil.acak k < q
  3. tanda tangan dari pesan m adalah r & s
    r = (g^k mod p) mod q
    s = (k^-1 (H(m) + x . r)) mod q
  4. kirim m beserta r & s

*x: kunci private

Verifikasi tanda tangan

  1. hitung message digest H(m)
  2. verifikasi:
    w = s^-1 mod q
    u1 = (H(m) . w) mod q
    u2 = (r . w) mod q
    v = ((g^u1 . y^u2) mod p) mod q
  3. jika v = r, maka ttd sah

Contoh

Pembangkitan kunci

  1. Pilih bil.prima p & q, (p-1) mod q = 0
    p = 59419
    q = 3301
  2. hitung g = h^((p-1)/q) mod p, sehingga 1 < h < p-1 dan h^((p-1)/q) mod p > 1. *h = 100 g = 100^((59419-1)/3301) mod 59419 = 18870
  3. kunci private (x) = 3223
  4. kunci public (y)
    y = g^x mod p = 18870^3223 mod 59419 = 29245

Pembangkitan tanda tangan

  1. hitung nilai hash m, misal H(m) = 4321
  2. tentukan bil.acak k < q
    k = 997
    k^-1 ~= 2907 (mod 3301)
  3. hitung r & s
    r = g^k mod p = 848
    s = 183
  4. kirim pesan m dan tanda tangan, (r, s) = (848, 183)

Verifikasi tanda tangan

  1. hitung nilai hash m, misal H(m) = 4321
  2. verifikasi (r, s) = (848, 183)
    s^-1 ~= 469 (mod 3301)
    w = s^-1 mod q = 469 (mod 3301) = 469
    u1 = (H(m) . w) mod q = 3036
    u2 = (r . w) mod q = 1592
    v = 848
  3. karena v = r, maka ttd sah