Algoritma Pendukung Kriptografi

dokumen-dokumen yang mirip
Digital Signature Algorithm (DSA)

Digital Signature Standard (DSS)

Algoritma RSA dan ElGamal

HASIL DAN PEMBAHASAN. Algoritma Modular Exponentiation mempunyai kompleksitas sebesar O((lg n) 3 ) (Menezes et al. 1996).

Departemen Teknik Informatika Institut Teknologi Bandung 2004

Tanda Tangan Digital Dengan Menggunakan SHA-256 Dan Algoritma Knapsack Kunci-Publik

Perbandingan Algoritma Kunci Nirsimetris ElGammal dan RSA pada Citra Berwarna

APLIKASI TEORI BILANGAN UNTUK AUTENTIKASI DOKUMEN

Sistem Kriptografi Kunci-Publik

METODE ENKRIPSI DAN DEKRIPSI DENGAN MENGGUNAKAN ALGORITMA ELGAMAL

Sifat Prima Terhadap Fungsionalitas Algoritma RSA

Algoritma Divide and Conquer (Bagian 2)

Kegunaan Chinese Remainder Theorem dalam Mempercepat dan Meningkatkan Efisiensi Peforma Sistem Kriptografi RSA

Implementasi dan Perbandingan Algoritma Kriptografi Kunci Publik

Algoritma Pemrograman

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

FAST EXPONENTIATION. 1. Konsep Modulo 2. Perpangkatan Cepat

Algoritma Pemrograman

ALGORITMA DAN BILANGAN BULAT

Software yang digunakan yaitu: 1. Sistem Operasi Windows 7 2. Bloodshed Dev-C Notepad++ 4. Winmerge

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Studi dan Implementasi Sistem Kriptografi Rabin

Bahan Kuliah ke-24. IF5054 Kriptografi. Manajemen Kunci. Disusun oleh: Ir. Rinaldi Munir, M.T.

Algoritma Pemrograman

Analisis dan Implementasi Serangan Kunci secara Konkuren pada Algoritma RSA

Algoritma dan Struktur Data

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

BAB II LANDASAN TEORI

Integrasi Kriptografi Kunci Publik dan Kriptografi Kunci Simetri

Induksi Matematik. Bahan Kuliah IF2120 Matematika Diskrit. Oleh: Rinaldi Munir. Program Studi Teknik Informatika STEI - ITB

Algoritma Divide and Conquer. (Bagian 2)

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

Teori Bilangan (Number Theory)

BAB II LANDASAN TEORI

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

BAB 2 LANDASAN TEORI. Berikut ini akan dijelaskan pengertian, tujuan dan jenis kriptografi.

Penerapan ECC untuk Enkripsi Pesan Berjangka Waktu

Tanda Tangan Digital Majemuk dengan Kunci Publik Tunggal dengan Algoritma RSA dan El Gamal

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Algoritma Pemrograman

RC4 Stream Cipher. Endang, Vantonny, dan Reza. Departemen Teknik Informatika Institut Teknologi Bandung Jalan Ganesha 10 Bandung 40132

Algoritma Pemrograman

Algoritma Pemrograman

PERANAN ARITMETIKA MODULO DAN BILANGAN PRIMA PADA ALGORITMA KRIPTOGRAFI RSA (Rivest-Shamir-Adleman)

BAB 2 LANDASAN TEORI

Teori Algoritma TIPE DATA

Penentuan Hubungan Kompleksitas Algoritma dengan Waktu Eksekusi pada Operasi Perkalian

MAKALAH ALGORITMA DIVIDE AND CONQUER

Penggabungan Algoritma Kriptografi Simetris dan Kriptografi Asimetris untuk Pengamanan Pesan

Teknik Konversi Berbagai Jenis Arsip ke Dalam bentuk Teks Terenkripsi

Algoritma Brute Force

BAB II TINJAUAN PUSTAKA

BAB III ANALISIS. Pada tahap analisis, dilakukan penguraian terhadap topik penelitian untuk

BAB 3 KRIPTOGRAFI RSA


Cipher yang Tidak Dapat Dipecahkan (Unbreakable Cipher)

Induksi Matematik Program Studi Teknik Informatika STEI - ITB

PERSEGI ANGKA-HURUF VERTIKAL

Algoritma Pemrograman

Algoritma Pemrograman

BAB II TINJAUAN PUSTAKA

CCH1A4 / Dasar Algoritma & Pemrogramanan

Pertemuan 3 Penyeleksian Kondisi

ALGORITMA ELGAMAL UNTUK KEAMANAN APLIKASI

Analisis Penggunaan Algoritma RSA untuk Enkripsi Gambar dalam Aplikasi Social Messaging

Teorema Fermat Dalam Menentukan Keprimaan Bilangan

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

FUNGSI. setiap elemen di dalam himpunan A mempunyai pasangan tepat satu elemen di himpunan B.

BAB I PENDAHULUAN. mempunyai makna. Dalam kriptografi dikenal dua penyandian, yakni enkripsi

Algoritma Pemrograman

BAB 2 LANDASAN TEORI

Aplikasi Teori Bilangan dalam Algoritma Kriptografi

Decrease and Conquer

III PEMBAHASAN. enkripsi didefinisikan oleh mod dan menghasilkan siferteks c.

Percobaan Perancangan Fungsi Pembangkit Bilangan Acak Semu serta Analisisnya

BAB I PENDAHULUAN. 1.1 Latar Belakang

Algoritma Pemrograman

DAFTAR ISI. Pengamanan Pesan Rahasia Menggunakan Algoritma Kriptografi Rivest Shank Adleman (RSA)

PERANCANGAN ALGORITMA KRIPTOGRAFI KUNCI PUBLIK MENGGUNAKAN ARSITEKTUR JARINGAN SARAF TIRUAN

Algoritma Kriptografi Kunci Publik. Dengan Menggunakan Prinsip Binary tree. Dan Implementasinya

Teknik Kriptografi Rabin, Serangan yang Dapat Dilakukan dan Perbandingannya dengan RSA

STUDI ALGORITMA ADLER, CRC, FLETCHER DAN IMPLEMENTASI PADA MAC

Pendiskritan Pembangkit Bilangan Acak Peta Logistik Menggunakan Fungsi Trigonometri Osilasi Tinggi

Data Encryption Standard (DES)

Vigènere Cipher Dengan Kunci Substitusi Inkremental Berdasarkan Caesar Cipher

Algoritma Kriptografi Kunci-publik RSA menggunakan Chinese Remainder Theorem

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

CCH1A4 / Dasar Algoritma & Pemrogramanan

Analisis dan Strategi Algoritma

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

ALGORITMA ELGAMAL DALAM PENGAMANAN PESAN RAHASIA

Pemanfaatan Metode Pembangkitan Parameter RSA untuk Modifikasi SHA-1

Algoritma Pemrograman

Studi dan Implementasi Algoritma Inverse Generator Cipher

Kompleksitas Algoritma

PENGGUNAAN POLINOMIAL UNTUK STREAM KEY GENERATOR PADA ALGORITMA STREAM CIPHERS BERBASIS FEEDBACK SHIFT REGISTER

PENERAPAN KRIPTOGRAFI DAN GRAF DALAM APLIKASI KONFIRMASI JARKOM

Konversi Citra ke dalam Bentuk Teks Terenkripsi dengan Memanfaatkan Chiper Abjad Majemuk

Transkripsi:

Bahan Kuliah ke-20 IF5054 Kriptografi Algoritma Pendukung Kriptografi Disusun oleh: Ir. Rinaldi Munir, M.T. Departemen Teknik Informatika Institut Teknologi Bandung 2004

20. Algoritma Pendukung Kriptografi 20.1 Algoritma untuk Perpangkatan-Modulo Algoritma kunci-publik seperti RSA, ElGamal, DSA, dan sebagainya, sederhana perhitungannya namun sulit implementasinya di dalam perangkat lunak. Hal ini karena algoritma tersebut melakukan operasi perpangkatan dengan bilangan yang besar. Misalnya, pada algoritma RSA, setiap blok x i dienkripsi menjadi blok y i dengan rumus y i = x i e mod r dan blok cipherteks y i didekripsi kembali menjadi blok x i dengan rumus x i = y i d mod r Pada algoritma DSA, kunci publik y dihitung dengan rumus y = g x mod p dan sidik dijital dihitung dengan rumus r = (g k mod p) mod q Karena bilangan bulat yang dioperasikan bisa sangat besar, maka kita perlu membuat algoritma perpangkatan semangkus mungkin. IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 1

Sebagai contoh, kita akan menghitung 5 123 mod 713. Jika dilakukan secara konvensional, maka 5 123 mod 713 = (5 5 5) mod 713 = 9.403954806578300063749892297778e+85 mod 713 = 435 Algoritma konvensional (dalam notasi Bahasa Pascal) untuk menghitung a n mod m: function Expo1(a, n, m : LongInt):LongInt { Mengembalikan a n mod m } var i : integer; H : LongInt; begin H:=1; for i:=1 to n do H:=H*a; {endfor} Expo1:= H mod m; { return value } end; Dengan algoritma Expo1 di atas, dibutuhkan n kali operasi perkalian dalam perpangkatannya. Untuk n yang besar, algoritma membutuhkan waktu yang lebih lama. Selain itu, nilai antara yang dihasilkan selama perkalian meningkat tajam, sehingga ada kemungkinan tipe integer yang digunakan tidak sanggup menampunya. Kesulitan di atas dapat diatasi dengan mengingat bahwa ab mod m = [(a mod m)(b mod m)] mod m (20.1) IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 2

Contoh 20.1. Sebagai ilustrasi, untuk menghitung 572 37 mod 713 dapat dilakukan sebagai berikut: 572 37 = 572 36 572 = 572 32 572 4 572 572 2 mod 713 = 327184 mod 713 = 630 572 4 mod 713 = 572 2. 572 2 mod 713 = [(572 2 mod 713)(572 2 mod 713)] mod 713 = 630 2 mod 713 = 396900 mod 713 = 472 572 8 mod 713 = 572 4. 572 4 mod 713 = [(572 4 mod 713)(572 4 mod 713)] mod 713 = 472 2 mod 713 = 222784 mod 713 = 328 572 16 mod 713 = 572 8. 572 8 mod 713 = [(572 8 mod 713)(572 8 mod 713)] mod 713 = 328 2 mod 713 = 107584 mod 713 = 634 572 32 mod 713 = 572 16. 572 16 mod 713 = [(572 16 mod 713)(572 16 mod 713)] mod 713 = 634 2 mod 713 = 401956 mod 713 = 537 572 36 mod 713 = 572 32. 572 4 mod 713 = [(572 32 mod 713)(572 4 mod 713)] mod 713 = 537. 472 mod 713 = 253464 mod 713 = 349 572 37 mod 713 = 572 36. 572 mod 713 = [(572 36 mod 713)(572 mod 713)] mod 713 = 349. 572 mod 713 = 199628 mod 713 = 701 Jadi, 572 37 mod 713 = 701 IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 3

Teknik divide and conquer dapat digunakan untuk membagi dua pemangkatnya sampai berukuran kecil. Misalnya, a 8 mod m = (a 4 a 4 ) mod m = ((a 4 mod m)(a 4 mod m)) mod m = (a 4 mod m) 2 mod m = (a 2 a 2 mod m) 2 mod m = ((a 2 mod m) 2 mod m) 2 mod m atau dengan kata lain, a 8 mod m = ((a 2 ) 2 ) 2 mod m = ((a 2 mod m) 2 mod m) 2 mod m Contoh-contoh lainnya, a 16 mod m = (((a 2 ) 2 ) 2 ) 2 mod m = (((a 2 mod m) 2 mod m) 2 mod m) 2 mod m { hanya membutuhkan 4 operasi perkalian } a 25 mod m = (a 12 ) 2 a mod m = ((a 6 ) 2 ) 2 a mod m = (((a 3 ) 2 ) 2 ) 2 a mod m = (((a 2 a) 2 ) 2 ) 2 a mod m = (((((((a 2 mod m) a) 2 mod m) 2 mod m) 2 mod m) 2 mod m) a) mod m { hanya membutuhkan 7 operasi perkalian } Metode perhitungan a n mod m seperti pada teknik divide and conquer di atas disebut juga metode addition chaining karena hasil perkalian antara langsung dirangkai dengan operasi modulo. Dengan teknik ini, hasil antara tidak akan mencapai bilangan yang besar. Algoritma addition chaining dengan teknik divide and conquer untuk menghitung a n mod m: IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 4

function Expo2(a, n, m : LongInt):LongInt { Mengembalikan a n mod m } var i : integer; H : LongInt; begin if n = 0 then Expo2:=1 else if odd(n) then { n ganjil } Expo2:=SQR(Expo2(a, n div 2, p))*a mod m else Expo2:=SQR(Expo2(a, n div 2, p)) mod m; {endif} {endif} end; Metode addition chaining dapat diterapkan secara biner sehingga disebut juga metode binary square. Dalam hal ini, pemangkat (n) diubah ke dalam bentuk biner baru kemudian dioperasikan. Algoritmanya adalah sebagai berikut: function Expo3(a, n, m : LongInt):LongInt { Mengembalikan nilai a n mod m } var i : integer; H : LongInt; Begin ConvertToBiner(n, b); { Konversi n ke dalam biner, misalkan bit-bitnya disimpan di dalam b } H:=1; for i:=1 to Length(b) do begin H := H*H mod m; if b[i] = 1 then H:=(H*a) mod m {endif} end; {for} Expo3:=H; end; IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 5

Misalkan algoritma Expo3 akan digunakan untuk menghitung 2 129 mod 29 maka 129 diubah dulu ke dalam biner menjadi 10000001. Tabel berikut memperlihatkan hasil perhitungan dengan algoritma Expo3: i 1 2 3 4 5 6 7 8 b[i] 1 0 0 0 0 0 0 1 H 2 4 16 24 25 16 24 21 2 1 1 1 1 1 1 2 Ket: menyatakan jumlah operasi perkalian Dengan algoritma Expo3, maka perhitungan 2 129 mod 29 hanya membutuhkan 10 operasi perkalian dan hasil antara tidak mencapai bilangan yang besar sebab hasil antara langsung di-modulo-kan dengan m. 20.2 Tipe Data Bilangan Bulat yang Besar Masalah lain yang muncul adalah penggunaan bilangan bulat yang sangat besar. Nilai-nilai parameter di dalam algoritma kriptografi kunci-publik (seperti bilangan prima p dan q) disarankan adalah bilangan bulat yang sangat besar (panjang). Semua bahasa pemrograman tidak menyediakan tipe data bilangan bulat yang panjang. IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 6

Satu cara untuk mengatasi tipe data tersebut adalah membuat primitif aritmetika bilangan bulat yang besar. Kita dapat menggunakan tipe string untuk menyimpan bilangan bulat yang setiap angkanya diperlakukan sebagai karakter. Misalnya, bilangan 4568732459909876451245890 akan disimpan sebagai string 4568732459909876451245890 Selanjutnya, kita harus membuat primitif operasi aritmetika seperti a b, a + b, a b, a div b, a mod b, dan a b mod c. 20.3 Pembangkitan Bilangan Prima Sebagian besar algoritma kunci-publik menggunakan bilangan prima sebagai salah satu nilai parameternya. Bilangan prima yang disarankan berkuran besar sehingga penggunaan tipe data bilangan bulat yang besar mutlak diperlukan. Algoritma untuk membangkitkan bilangan prima adalah: 1. Bangkitkan bilangan acak p sepanjang n angka. 2. Uji brute force terhadap p dengan membagi p dengan bilangan prima kurang dari 256. Pengujian ini akan menghilangan bilangan bukan prima sebesar 80%. Yang paling mangkus adalah membagi p dengan bilangan prima yang lebih kecil dari 2000. 3. Jika p berhasil melewati uji brute force, uji p dengan algoritma Lehmann. IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 7

Algoritma Lehmann { Masukan: p (yang akan diuji keprimaannya) Keluaran: p adalah prima atau tidak prima } (a) Bangkitkan bilangan acak a yang lebih kecil dari p. (b) Hitung a (p 1)/2 mod p. (c) Jika a (p 1)/2 / 1 atau 1 (mod p), maka p tidak prima. (d) Jika a (p 1)/2 1 atau 1 (mod p), maka peluang p bukan prima adalah 50%. 4. Ulangi pengujian dengan algoritma Lehmann di atas sebanyak t kali (dengan nilai a yang berbeda). Jika hasil perhitungan langkah (b) sama dengan 1 atau 1, tetapi tidak selalu sama dengan 1, maka peluang p adalah prima mempunyai kesalahan tidak lebih dari 1/2 t. Bilangan acak a yang digunakan pada algoritma Lehmann dapat dipilih nilai yang kecil agar perhitungan lebih cepat. Sedangkan jumlah pengujian yang disarankan adalah lima kali. Selain algoritma Lehmann, metode lain yang banyak digunakan untuk menguji bilangan prima adalah Rabin- Miller. Algoritma Rabin-Miller { Sebelum algoritma ini dijalankan, lakukan prosedur berikut: 1. Bangkitkan bilangan p yang akan diuji keprimaannya. 2. Hitung b, yang dalam hal ini 2 b adalah nilai pangkat 2 terbesar yang habis membagi p 1. 3. Hitung m sedemikian sehingga p = 1 + 2 b m. IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 8

Masukan: p, m, dan b Keluaran: p adalah prima atau tidak prima. } (a) Bangkitkan bilangan acak a yang lebih kecil dari p. (b) Nyatakan j = 0 dan hitung z = a m mod p. (c) Jika z = 1 atau z = p 1, maka p lolos dari pengujian dan mungkin prima. (d) Jika z > 0 dan z = 1, maka p bukan prima. (e) Nyatakan j = j + 1. Jika j < b dan z p 1, nyatakan z = z 2 mod p dan kembali ke langkah (d). Jika z = p 1, maka p lolos pengujian dan mungkin prima. (f) Jika j = b dan z p 1, maka p tidak prima. Ulangi pengujian dengan algoritma Rabin-Miller di atas sebanyak t kali (dengan nilai a yang berbeda). 4. Tabel Bilangan Prima dari 2 256 2 3 5 7 11 13 17 19 23 29 31 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 139 149 151 157 163 167 173 179 181 191 193 199 211 223 227 229 233 239 241 251 IF5054 Kriptografi/Algoritma-algoritma Pendukung Kriptografi 9