Senin, 05 November 2012

DSA (digital signature algoritma)


TANDA TANGAN DIGITAL

Sejak berabad-abad lamanya tanda tangan digunakan untuk membuktikan otentik dokumen kertas (misal surat, piagam, ijazah, buku, karyaseni, dan sebagainya). Tanda-tangan mempunyai karakteristik sebagai berikut :
1.      Tanda tangan adalah bukti yang otentik
2.      Tanda tangan tidak dapat dilupakan
3.      Tanda tangan tidak dapat dipindahka untuk digunakan ulang.
4.      Dokumen yang telah di tanda tangan tidak dapat diubah
5.      Tanda tangan tidak dapat disangakal (repudiation).

Fungsi tanda tangan pada dokumen kertas juga diterapkan untuk otentikasi pada data digital seperti pesan yang dikirim melalui saluran komunikasi dan dokumen elektronis yang disimpan dalam memori komputer. Tanda tangan digital ini dinamakan tanda-tangan digital (digital signature). Yang dimaksud dengan tanda-tangan digital bukanlah tanda tangan yang di-digitalisasi dengan alat scanner, tetapi suatu nilai kriptografis yang bergantung pada pesan dan pengirim pesan (hal ini kontras dengan tanda tangan yang di dokumen kertas yang bergantung pada pengirim dan selalu sama untuk semua dokumen). Dengan tanda-tangan digital ,maka integritas data dapat dijamin, disamping itu ia juga digunakan untuk membuktikan asal pesan (keabsahan pengirim), dan nirpenyangkalan.

Menandatangani pesan dapat dilakukan dengan salah satu dari dua cara :
1.      Enkripsi pesan
Mengenkripsikan pesan dengan sendirinya juga menyediakan ukuran otentikasi. Pesan yang terenkripsi sudah menyatakan bahwa pesan tersebut telah ditandatangani.
2.      Tandatangan digital dengan fungsi hash (hash function)
Tandatangan digital dibangkitkan dari hash terhadap pesan. Nilai hash adalah kode ringkas dari pesan. Tandatangan digital berlaku seperti tanda–tangan pada dokumen kertas.Tandatangan digital ditambahkan (append) pada pesan.

Tanda Tangan Digital / Digital Signature Algorithm (DSA)

Tandatangan digital berbentuk sepasang besar angka yang ditampilkan komputer sebagai string dari digit biner. Tandatangan digital dihitung dengan menggunakan sejumlah aturan dan sejumlah parameter sehingga identitas pemilik dan integritas data dapat diverifikasi. Pembuat tanda tangan menggunakan kunci privat untuk membuat tanda tangan; sedangkan Kunci publik, yang berkorespodensi dengan kunci privat namun tidak sama, digunakan untuk Memverifikasi tanda tangan. Setiap user memiliki sepasang kunci publik dan kunci privat. Kunci publik diasumsikan diketahui public secara umum, sedangkan kunci privat tidak pernah disebar. DSA dapat dilihat sebagai variasi dari skema tanda tangan ElGamal. Keamanan DSA berdasarkan pada kemampuan logaritma diskrit dalam urutan bilangan prima Z*p. Domain parameter DSA dibangkitkan untuk setiap entitas dalam domain keamanan tertentu :

1.      Pilih bilangan prima sepanjang 160 bit dan 1024 bit dengan kondisi : q | p – 1
2.      Pilih pembangkit g yang memiliki kelompok putaran yang unik di mana q berada dalam Z*p. Pilih sebuah elemen h ε Z*p dan hitung g = h (p-1)/q mod p. Ulangi hingga g ≠1
3.      Parameter domain adalah p, q dan g.

Setiap entitas A dalam domain, dengan domain parameter (p,q,g) melakukan :
1. Pilih bilangan acak x dengan ketentuan 1 ≤ x ≤ q−1
2. Hitung y = gx mod p
3. Kunci publik A adalah y, sedangkan kunci privat A adalah x
Untuk menandatangani pesan m, A melakukan :
1. Pilih bilangan acak k denganketentuan 1 ≤ k ≤ q−1
2. Hitung X = gk mod p dan r = X mod q. Jika r = 0, lakukan langkah 1
3. Hitung k-1 mod q
4. Hitung e = SHA-1(m)
5. Hitung s = k-1 { e+xr } mod q. Jika s = 0, lakukan langkah 1
6. Tanda tangan A untuk pesan m adalah (r,s)
Untuk memverifikasi tanda tangan A (r,s) pada m, B mendapat salinan sah dari domain
parameter A (p,q,g) dan kunci publik y dan melakukan :
1. Verifikasi bahwa r dan s berada dalam interval [1,q-1]
2. Hitung e = SHA-1(m)
3. Hitung w = s-1 mod q
4. Hitung u1 = ew mod q dan u2 = rw mod q
5. Hitung X = gu1yu2 mod p dan v = X mod q
6. Tanda tangan benar jika dan hanya jika v = r

ALGORITMA TANDA TANGAN DIGITAL

Sepasang kunci :
            P: bilangan prima antara panjang 412 dan 1024 bit
            q: factor bilangan prima p – 1, panjang 160 bit
            g≡ h-(p-1)/q (mod p) > 1, dan h_ < p - 1
            (p, q dan g): parameter umum
            x <q :kunci rahasia, mempunyai panjang 160 bit



Proses pengiriman :
            k < q: bilangan acak   
            r≡ (gk mod p) (mod q)
            s ≡ k-1 (h + xr) (mod q), h = H(m) adalah fungsi Hash satu arah untuk pesan m.
            (r, s): tanda tangan digital
Pembuktian tanda tangan digital :
            w ≡ s-1 (mod q)
            ul ≡ h x w (mod q)
            u2 ≡ r x w (mod q)
            v ≡ (gu1yu2 (mod p)) (mod q)
            If v = r, tanda tangan digital telah dibuktikan keasliannya.


algoritmanya

Contoh :
Diasumsikan dipilih p = 23 dan q = 11, q adalah factor bilangan prima dari p -1. Dipilih h’ =16 < p -1, g ≡ 162(mod 23) ≡ 3 > 1.
Dipilih kunci rahasia x = 7 < q dan kunc iumum y gx(mod p) ≡ 37(mod 23)≡ 2
1.      Pengirim menanda-tangani pesan :
Dipilih K = 5, k < q = 11 dan untuk tanda tangannya (r,s) seperti di bawah ini:
r≡ (gk mod p) (mod q)
  ≡ (35 mod 23) (mod 11) ≡ 13 (mod 11) ≡ 2
Diasumsikan h = H(m) = 10 dan dihitung :
s ≡ k-1 (h + xr) (mod q)
  ≡ 5-1 (10 + 7 x 2) (mod 11) ≡ (9 x 24) (mod 11) ≡ 216 (mod 11) ≡ 7
Di mana perkalian inverse k-1adalah:
k .k-1 ≡ 1 (mod q)
5k-1 ≡ (mod 11) darik-1 = 9
2.   Penerima membuktikan tanda tangan digital dengan perhitungan :
      w ≡s-1 (mod q)
           ≡7-1(mod 11) ≡ 8
      u1≡ (h x w) (mod q)
           ≡ (10 x 8) (mod 11) ≡ 3
      u2 ≡ (r x w) (mod q)
           ≡ (2 x 8) (mod 11) ≡ 5
      v   ≡ ((gu1 x yu2) mod p) (mod q)
           ≡ ((33 x 25) mod 23) (mod 11)
           ≡ (864 (mod 23)) (mod 11) ≡ 13 (mod 11) ≡ 2
Karena v = r = 2, tanda tangan digital terbukti keabsahannya.