Kriptografi Kunci Publik Asimetry Key Algoritma Digital Signature
Kriptografi Kunci Publik (Asimetry Key) Algoritma Digital Signature Algorithm Materi 8 Pemrograman Jaringan Dosen: Eko Prasetyo Teknik Informatika UMG 2012
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 forgetable (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 3 berbeda) dan harus berfungsi pada seluruh dokumen
Standart Tanda Tangan Digital � Pada bulan Agustus 1991, NIST (The National Institute of Standard and Technology) mengumumkan bakuan (standard) untuk tanda-tangan 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 X 9. 31 - CCITT X. 509 � 4
DSA � Sebagaimana halnya pada algoritma kriptografi kunci-publik, DSA menggunakan dua buah kunci, yaitu kunci publik dan kunci privat. � � � 5 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.
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 privat dinyatakan sebagai PR = {p, q, g, x} Untuk menandatangani kunci publik dinyatakan sebagai PU = {p, q, g, y} Untuk 6 menverifikasi 5.
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. 7 Kirim pesan m beserta tanda-tangan r dan s.
Proses Verifikasi Dokumen 1. Hitung Tetapkan s-1 sebagai invers multiplikatif dimana s * s-1 ≡ 1 mod q w = s– 1 mod q u 1 = (H(m) * w) mod q u 2 = (r * w) mod q v = ((gu 1 * yu 2) mod p) mod q 2. 8 Jika v = r, maka tanda-tangan sah, yang berarti bahwa pesan masih asli dan dikirim oleh pengirim yang benar.
Contoh (1) – Pembentukan Pasangan Kunci � Dibangkitkan � Harus memenuhi syarat (p-1) mod q = 0 � Nilai � p=23 dan q=11, p dan q harus prima dan q < p 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 Privat : PR = {p, q, g, x} = {23, 11, 8, 6} � Kunci Publik : PU = {p, q, g, y} = {23, 11, 8, 13} � 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 10 pesan m, r=5, dan s=7 bersama-sama.
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 � � � Hitung w � � � u 2 = (r * w) mod q u 2 = (5 * 8) mod 11 = 40 mod 11 = 7 Hitung v � � � u 1 = (H(m) * w) mod q u 1 = (16 * 8) mod 11 = 128 mod 11 = 7 Hitung u 2 � � w = s– 1 mod q w = 8 mod 11 = 8 Hitung u 1 � � s * s-1 ≡ 1 mod q 7 * s-1 ≡ 1 mod 11, didapat s-1 = 8 v = ((gu 1 * yu 2) 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 � � � Hitung w � � � u 2 = (r * w) mod q u 2 = (5 * 8) mod 11 = 40 mod 11 = 7 Hitung v � � � u 1 = (H(m) * w) mod q u 1 = (10 * 8) mod 11 = 80 mod 11 = 3 Hitung u 2 � � w = s– 1 mod q w = 8 mod 11 = 8 Hitung u 1 � � s * s-1 ≡ 1 mod q 7 * s-1 ≡ 1 mod 11, didapat s-1 = 8 v = ((gu 1 * yu 2) mod p) mod q v = ((83 * 137) mod 23) 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 � � Pasangan kunci: � � � � p = 23, q = 11, h = 20, x = 10 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: � � � � 16 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
Jawab Latihan – Verifikasi untuk H(m) = 40 � � Kunci Privat : PR = {p, q, g, x} = {23, 11, 9, 10} Kunci Publik : PU = {p, q, g, y} = {23, 11, 9, 18} r = 6, dan s = 3 Hitung s-1 � � � Hitung w � � � u 2 = (r * w) mod q u 2 = (6 * 4) mod 11 = 24 mod 11 = 2 Hitung v � � � u 1 = (H(m) * w) mod q u 1 = (40 * 4) mod 11 = 160 mod 11 = 6 Hitung u 2 � � w = s– 1 mod q w = 4 mod 11 = 4 Hitung u 1 � � s * s-1 ≡ 1 mod q 3 * s-1 ≡ 1 mod 11, didapat s-1 = 4 v = ((gu 1 * yu 2) mod p) mod q v = ((86 * 182) mod 23) 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 � � � u 2 = (r * w) mod q u 2 = (6 * 4) mod 11 = 24 mod 11 = 2 Hitung v � � � u 1 = (H(m) * w) mod q u 1 = (43 * 4) mod 11 = 172 mod 11 = 7 Hitung u 2 � � w = s– 1 mod q w = 4 mod 11 = 4 Hitung u 1 � � s * s-1 ≡ 1 mod q 3 * s-1 ≡ 1 mod 11, didapat s-1 = 4 v = ((gu 1 * yu 2) mod p) mod q v = ((87 * 182) mod 23) mod 11 = 1 Karena v=1, dan r=6 SAMA, maka pesan m adalah TIDAK ASLI 18
Any Question ?
- Slides: 19