Algoritma ElGamal Analisis Sistem

8. Set j = j + 1. Bila j b dan z ≠ p – 1, set z = z 2 mod p dan kembali ke tahap 4. Jika z = p – 1, maka p lolos tes dan mungkin prima. 9. Jika j = b dan z ≠ p – 1, maka p bukan bilangan prima.

2.4.2 Implementasi Pembangkit Bilangan Prima

Dalam dunia nyata, implementasi pembangkitan bilangan prima dapat berlangsung dengan sangat cepat. Salah satu implementasinya adalah sebagai berikut:[8][9] 1. Bangkitkan bilangan acak p sepanjang n bit. 2. Set bit Most Significant Bit MSB dan Least Significant Bit LSB nya ke “1”. Atau set bit paling kiri dan kanannya ke bit satu. Pengesetan bit MSB menjamin panjang bit bilangan prima yang dihasilkan sesuai dengan yang diinginkan. Pengesetan bit LSB menjamin agar bilangan acak adalah bilangan ganjil, karena bilangan prima pasti harus bilangan ganjil. 3. Periksa apakah p tidak dapat dibagi bilangan prima kecil : 2,3,5,7,11, dan seterusnya hingga bilangan prima tertinggi yang lebih kecil dari 256. Pemeriksaan ini akan mengurangi 80 peluang bahwa bilangan yang dipilih bukan bilangan prima. Artinya bila bilangan yang dipilih tidak dapat dibagi bilangan prima kecil di atas, peluang bilangan yang dipilih merupakan bilangan prima adalah 80 . Lakukan tes Rabin – Miller untuk beberapa nilai a. Bila p lolos tes untuk satu nilai a, bangkitkan nilai a lainnya. Pilih nilai a yang kecil agar perhitungan lebih cepat. Lakukan tes dengan minimal 5 macam nilai a. Bila p gagal tes, bangkitkan p lainnya dan ulangi langkah 2

2.5 Algoritma ElGamal

Algoritma ElGamal diusulkan oleh Taher ElGamal pada tahun 1984. Keamanan dari algoritma ini didasarkan pada kesulitan memecahkan masalah logaritma diskrit yang terdapat dalam grup. Logaritma ini sendiri disebut logaritma diskrit karena nilainya berhingga dan bergantung pada bilangan prima yang digunakan. Karena bilangan prima yang digunakan adalah bilangan prima yang besar, maka sangat sulit atau Universitas Sumatera Utara bahkan tidak mungkin menurunkan kunci privat dari kunci public walaupun diserang dengan menggunakan sumber daya komputer yang besar.[3] Berikut ini algoritma ElGamal yang diilustrasikan dua orang pengguna yaitu Adi dan Budi:[3] 1. Diberikan p sebuah bilangan prima untuk Fp dan α yang merupakan anggota Fp. 2. Setiap pengguna memilih sebuah kunci rahasia a yang merupakan bilangan integer untuk ≤a≤ p – 2. 3. Setiap pengguna menghitung kunci publik β=α a mod p yang nilainya akan dikirim. 4. Misalkan Adi akan mengirim pesan x ∈ Fp, maka dia harus memilih sebuah bilangan k secara acak, yaitu k ∈ Fp-1 dan mengirimkan pesan terenkripsi ke Budi dengan persamaan: y 1 ,y 2 α k mod p, xβ k mod p 5. Untuk melakukan dekripsi, Budi menghitung: y 2 y 1 aJ -1 mod p aJ merupakan kunci rahasia Budi. Universitas Sumatera Utara BAB III ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis dan perancangan merupakan salah satu tahap dari pembuatan sebuah sistem. Tahapan – tahapan tersebut saling berhubungan satu dengan yang lain dan membentuk sebuah siklus. Dari semua tahap tersebut, tahap analisis merupakan tahapan yang paling penting, karena pada tahapan ini lah awal dari semua tahapan yang lain, kesalahan pada tahap ini akan menyebabkan kesalahan yang berkelanjutan dan berdampak sistemik pada tahapan selanjutnya. Proses analisis dalam pembuatan sebuah sistem merupakan sebuah prosedur yang harus dilakukan untuk pemeriksaan masalah dan pemecahan masalah yang timbul dalam sistem yang baru. Tahapan perancangan merupakan tahapan setelah analisis. Perancangan merupakan perumusan kebutuhan – kebutuhan fungsional dan persiapan untuk mengimpelementasikan dan menggambarkan sistem yang akan dibuat. Perancangan sendiri dapat berupa penggambaran, perencanaan dan pembuatan sketsa atau pengaturan dari beberapa elemen yang berbeda dan saling terpisah sehingga dapat bergabung ke dalam satu kesatuan yang utuh dan berfungsi. Tahapan perancangan sistem mempunyai dua buah tujuan, yaitu untuk memenuhi kebutuhan seorang pengguna serta memberikan gambaran jelas dan lengkap kepada si pembuat program programmer dan pengguna. Enkripsi dalam kriptografi adalah proses dimana informasi data yang hendak dikirim diubah menjadi bentuk yang hampir tidak dikenali sebagai informasi awal karena telah diubah terlebih dahulu dengan menggunakan algoritma tertentu. Dekripsi Universitas Sumatera Utara sendiri merupakan kebalikan dari proses enkripsi, yaitu proses mengubah kembali bentuk yang tersamar tadi kembali menjadi informasi awal. Pembangkit bilangan prima bertujuan untuk mendapatkan bilangan secara acak sehingga dapat digunakan sebagai kunci dalam proses enkripsi dengan algoritma tertentu. Ada banyak metode pembangkit bilangan prima, namun yang akan dibahas adalah metode Rabin-Miller.

3.1.1 Analisis Kriptografi Kurva Eliptik

Kriptografi kurva eliptik merupakan metode kriptografi yang menggunakan titik – titik pada kurva eliptik sebagai kunci untuk melakukan proses enkripsi dan dekripsi. Kekuatan dari kriptografi ini adalah banyaknya titik yang terdapat pada sebuah kurva dan sulitnya mengetahui kurva yang digunakan. Kriptografi kurva eliptik menggunakan dua kunci yaitu kunci publik dan kunci privat. Kunci publik pada kriptografi kurva eliptik adalah sebuah titik pada kurva yang kita pilih sendiri, sedangkan kunci privatnya adalah angka yang bersifat acak. Kunci publik diperoleh dengan melakukan operasi perkalian antara kunci privat dengan titik P yang kita pilih dari kurva. Adapun proses pembentukan kurva dan pembentukan kunci pada kriptografi kuva eliptik adalah sebagai berikut: 1. Menentukan bilangan prima p dengan syarat p 3 untuk Fp Bilangan prima yang akan digunakan pada tahap ini adalah bilangan prima yang akan dihasilkan dari pembangkit bilangan acak Rabin-Miller. Adapun apabila kita ingin menguji apakah suatu bilangan merupakan bilangan prima atau tidak, maka dapat diuji dengan cara berikut ini: Misalnya diambil bilangan prima 17, kemudian diambil nilai n = 2 kemudian dihitung Greatest Common Divisor GCD atau pembagi bersama terbesar dari 17 adalah 13,2 = 1 Universitas Sumatera Utara � �−1 ≡ 1��� � = 2 17−1 = 65536 ≡ 1 ��� 17 maka 17 adalah bilangan prima karena tidak habis dibagi, sehingga didapat p = 17. 2. Menentukan bentuk persamaan kurva eliptik Persamaan umum untuk kurva eliptik adalah � 2 = � 3 + �� + � ��� � dimana nilai a, b dibuat secara acak untuk koefisiennya. Pada sistem ini, sebagai salah satu batasan masalah, maka ditetapkan bahwa nilai a = 1 dan b = 1 sedangkan p kita gunakan 17, sehingga persaman kurva eliptik menjadi: � 2 = � 3 + � + 1 ��� 17 Sehingga: 4 � 3 + 27 � 2 ≠ 0 ��� � 4. 1 3 + 27. 1 2 ��� 17 = 31 mod 17 = 14 ≠ 0 Maka persamaan � 2 = � 3 + � + 1 ��� 17 merupakan persamaan kurva eliptik. 3. Menentukan titik – titik pada kurva Setelah kurva eliptik didapatkan, maka kita perlu menentukan titik – titik pada kurva. Dari titik – titik yang telah ditentukan tersebut, kemudian pilih salah satu secara acak . Misalnya pada contoh di atas, bilangan prima p = 17, selanjutnya kita cari elemen – elemen grup eliptik � 17 atas � � , dengan � � = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}. Namun sebelum menentukan elemen – elemen � 17 1, 1, terlebih dahulu kita perlu mencari quadratic residue modulo 17 �� 17 . Tabel 3.1 Nilai Quadratic Residue Modulo 17 �� �� � � � 2 ��� 17 �� 17 2 ��� 17 1 1 2 ��� 17 1 2 2 2 ��� 17 4 3 3 2 ��� 17 9 4 4 2 ��� 17 16 5 5 2 ��� 17 8 Universitas Sumatera Utara 6 6 2 ��� 17 2 7 7 2 ��� 17 15 8 8 2 ��� 17 13 9 9 2 ��� 17 13 10 10 2 ��� 17 15 11 11 2 ��� 17 2 12 12 2 ��� 17 8 13 13 2 ��� 17 16 14 14 2 ��� 17 9 15 15 2 ��� 17 4 16 16 2 ��� 17 1 Berdasarkan Tabel 3.1 di atas, maka himpunan quadratic residue modulo 17 adalah �� 17 = {0, 1, 2, 4, 8, 9, 13, 15, 16}. Kemudian menentukan elemen grup eliptik � 17 1, 1 yang merupakan penyelesaian dari persamaan � 2 = � 3 + � + 1 ��� 17, untuk � ∈ � 17 dan � 2 ∈ �� 17 Tabel 3.2 Nilai Elemen � �� �, � � ∈ � 17 � 2 = � 3 + � + 1 ��� 17 � 2 ∈ �� 17 �, � ∈ � 17 1, 1 1 Ya 0, 1 dan 0, 16 1 3 Bukan - 2 11 Bukan - 3 14 Bukan - 4 1 Ya 4, 1 dan 4, 16 5 12 Bukan - 6 2 Ya 6, 6 dan 6, 11 7 11 Bukan - 8 11 Bukan - 9 8 Ya 9, 5 dan 9, 12 10 8 Ya 10, 5 dan 10, 12 11 Ya 11, 0 12 7 Bukan - 13 1 Ya 13, 1 dan 13, 16 14 5 Bukan - 15 8 Ya 15, 5 dan 15, 12 16 16 Ya 16, 4 Berdasarkan tabel 3.2, maka misalnya untuk nilai x = 0, diperoleh � 2 = 0.0.0 + 1.0 + 1 ��� 17 = 1. Sehingga bila kita cek nilai 1 yang didapat di tabel 3.1 maka ada dua nilai �� 17 yang memenuhi yaitu 1 dan 16 maka titik x, y nya adalah 0, 1 dan 0, 16. Cara yang sama diulang terus sehingga Universitas Sumatera Utara didapatkan elemen – elemen grup eliptik modulo 17 atas � 17 yaitu � 17 1,1 = { 0, 1, 0, 16, 4, 1, 4, 16, 6, 6, 6, 11, 9, 5, 9, 12, 10, 5, 10, 12, 11, 0, 13, 1, 13, 16, 15, 5, 15, 12, 16, 4, 0 }. Jumlah titik pada kurva adalah 17 titik selain dari titik infinity 0. Setelah itu kita pilih sebuah titik yang akan dijadikan kunci publik, misalnya kita pilih titik P = 15, 12. 4. Membuat kunci privat 1 dan kunci privat 2 Kunci privat 1 dan 2 ditentukan dengan nilai acak dimana nilai kunci tersebut harus merupakan elemen dari {2, 3, … p -1} dalam � � . Misalnya kita pilih kunci privat 1 = 6 dan kunci privat 2 = 9. 5. Menghitung kunci publik 1 dan kunci publik 2 Kunci publik dihitung oleh masing – masing pengguna dengan melakukan operasi perkalian titik antara titik P dengan kunci rahasia masing – masing. Misalnya pada pengguna 1, kunci privat 1 = 6 dan titik P = 15, 12 maka: �� 1 = �� 1 ∗ � = 6 ∗ 15, 12 = 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 = 13, 16 + 15, 12 + 15, 12 + 15, 12 + 15, 12 = 9, 5 + 15, 12 + 15, 12 + 15, 12 = 9, 12 + 15, 12 + 15, 12 = 4, 16 + 15, 12 = 10, 5 Jadi kunci publik 1 adalah 10, 5 Sedangkan pada pengguna 2, kunci privat 2 = 9 dan titik P = 15, 12 maka: �� 2 = �� 2 ∗ � = 9 15, 12 = 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 = 13, 16 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 Universitas Sumatera Utara = 10, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 = 9, 5 + 15, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 = 9, 12 + 15, 12 + 15, 12 + 15, 12 + 15, 12 = 10, 5 + 15, 12 + 15, 12 + 15, 12 = 13, 1 + 15, 12 + 15, 12 = 15, 5 + 15, 12 = 4, 12 Jadi kunci publik 2 adalah 4, 12.

3.1.2 Analisis Algoritma ElGamal

Pada umumnya algoritma ElGamal biasanya digunakan untuk tanda tangan digital, namun seiring dengan perkembangan jaman, algoritma ElGamal juga dikembangkan sehingga bisa digunakan untuk proses enkripsi dan dekripsi file. ElGamal kemudian digunakan dalam berbagai perangkat lunak keamanan, kekuatan dari algoritma ElGamal ini terletak pada kesulitan untuk menghitung logaritma diskrit. Algoritma ElGamal terdiri dari tiga proses, proses pembangkitan kunci, proses enkripsi dan proses dekripsi. Proses pembangkitan kunci dilakukan untuk memperoleh kunci public yang kemudian akan digunakan pada proses enkripsi, hasil dari proses enkripsi kemudian akan di dekripsi. Selain dari kekuatannya, algoritma ini mempunyai kelemahan, yaitu cipherteks yang dihasilkan bisa mempunyai panjang sampai dua kali lipat dari plainteksnya. Akan tetapi kelebihan lain dari algoritma ini adalah apabila kita mengenkripsi plainteks yang sama berulang – ulang, ternyata akan didapatkan cipherteks yang berbeda – beda untuk setiap kali enkripsi. Adapun proses enkripsi dan dekripsi kriptografi kurva eliptik dengan algoritma ElGamal adalah sebagai berikut: 1. Proses Enkripsi ElGamal pada Kriptografi Kurva Eliptik Tahapan – tahapan dalam melakukan proses enkripsi ElGamal adalah: Universitas Sumatera Utara Gambar 3.1 Tahapan Proses Enkripsi ElGamal Kriptografi Kurva Eliptik Keterangan diagram: 1. Sebagai langkah awal, pengguna memilih sebuah angka acak yang akan dijadikan kunci rahasia bangkitan private1_gen yang akan disimbolkan dengan k. Nilai k dapat dipilih dalam interval k = {2, 3, … p -1} dalam � 17 . Kita misalkan kunci rahasia bangkitan yang kita pilih adalah 1. 2. Pengguna kemudian menghitung kunci rahasia bersama bangkitan key1_gen dengan cara: Key1_gen = private1_gen kunci publik 2 = 1 4, 12 = 4, 12 3. Selanjutnya pengguna mengambil nilai absis dari key1_gen di atas. Karena nilai key1_gen adalah 4, 12 maka absisnya adalah 4, jadi xkey1_gen = 4. 4. Setelah semua langkah di atas selesai, pengguna sudah bisa mengenkripsi pesan dengan menggunakan ketentuan: C1 = k P C2 = m ⨁ xkey1_gen pesan yang akan dienkripsi di XOR kan dengan xkey1_gen Pilih private1_gen Hitung key1_gen dengan Kunci Publik 2 Ambil absis key1_gen xkey1_gen Hitung cipherteks C1, C2, C3, …. Universitas Sumatera Utara Maka hasil yang didapat adalah C1 berupat titik, sedangkan C2, C3 dan seterusnya berupa bilangan integer yang akan dikirim kepada pengguna 2. Sebagai contoh misalnya pengguna 1 ingin mengirim pesan KRIPTOGRAFI kepada pengguna 2, maka pesan tersebut harus dikonversi terlebih dahulu dalam kode ASCII. Tabel 3.3 Konversi Karakter ke Kode ASCII CHAR ASCII dec K 75 R 82 I 73 P 80 T 84 O 79 G 71 R 82 A 65 F 70 I 73 Maka proses enkripsi dan cipherteks yang akan dihasilkan adalah: C1 = k P = 1 15, 12 = 15, 12 C2 = m1 ⨁ 2 = 75 ⨁ 4 = 79 C3 = m2 ⨁ 2 = 82 ⨁ 4 = 86 C4 = m3 ⨁ 2 = 73 ⨁ 4 = 77 C5 = m4 ⨁ 2 = 80 ⨁ 4 = 84 C6 = m5 ⨁ 2 = 84 ⨁ 4 = 80 C7 = m6 ⨁ 2 = 79 ⨁ 4 = 75 C8 = m7 ⨁ 2 = 71 ⨁ 4 = 67 C9 = m8 ⨁ 2 = 82 ⨁ 4 = 86 C10= m9 ⨁ 2 = 65 ⨁ 4 = 69 C11= m10 ⨁ 2 = 70 ⨁ 4 = 66 C12= m11 ⨁ 2 = 73 ⨁ 4 = 77 Hasil enkripsinya adalah: 15 12 79 86 77 84 80 75 67 86 69 66 77 Universitas Sumatera Utara 2. Proses Dekripsi ElGamal pada Kriptografi Kurva Eliptik Tahapan – tahapan dalam melakukan dekripsi ElGamal pada kriptografi kurva eliptik adalah: Gambar 3.2 Tahapan Proses Dekripsi ElGamal Kriptografi Kurva Eliptik Keterangan diagram: 1. Proses dekripsi oleh pengguna 2 dilakukan dengan mengambil nilai C1 dari cipherteks C1, C2, C3, …. Misalnya kita menggunakan cipherteks pada proses di atas, yaitu: 15 12 79 86 77 84 80 75 67 86 69 66 77 maka nilai C1 adalah 15, 12, C2 adalah 79, C3 adalah 86 dan seterusnya. 2. Pengguna 2 kemudian menghitung kunci rahasia bersama bangkitan key2_gen dengan menggunakan kunci privat 2 miliknya: Key2_gen = kunci privat 2 C1 = 9 15, 12 = 4, 12 3. Kemudian pengguna 2 mengambil nilai absis x dari key2_gen di atas. Karena nilai key2_gen adalah 4, 12 maka absisnya adalah 4, jadi xkey2_gen adalah 4 4. Selanjutnya pengguna 2 mendekripsi cipherteks sandi m menjadi plainteks dengan ketentuan: Ambil C1, C2, C3, … Hitung key2_gen dengan Kunci Privat 2 Ambil absis key2_gen xkey2_gen Hitung plainteks m Universitas Sumatera Utara M1 = C2 ⨁ xkey2_gen = 79 ⨁ 4 = 75 = K M2 = C3 ⨁ xkey2_gen = 86 ⨁ 4 = 82 = R M3 = C4 ⨁ xkey2_gen = 77 ⨁ 4 = 73 = I M4 = C5 ⨁ xkey2_gen = 84 ⨁ 4 = 80 = P M5 = C6 ⨁ xkey2_gen = 80 ⨁ 4 = 84 = T M6 = C7 ⨁ xkey2_gen = 75 ⨁ 4 = 79 = O M7 = C8 ⨁ xkey2_gen = 67 ⨁ 4 = 71 = G M8 = C9 ⨁ xkey2_gen = 86 ⨁ 4 = 82 = R M9 = C10 ⨁ xkey2_gen = 69 ⨁ 4 = 65 = A M10= C11 ⨁ xkey2_gen = 66 ⨁ 4 = 70 = F M11= C12 ⨁ xkey2_gen = 77 ⨁ 4 = 73 = I dari hasil dekripsi tersebut, maka didapatlah plaintek yang semula yaitu KRIPTOGRAFI

3.1.3 Analisis Metode Pembangkit Bilangan Prima Rabin-Miller

Metode pembangkitan bilangan prima Rabin-Miller merupakan salah satu metode pembangkitan dan pengujian bilangan prima yang paling sering digunakan. Metode ini dirancang oleh Michael Rabin dengan berdasarkan dari beberapa ide oleh Gary Miller. Metode pengujiannya adalah sebagai berikut: 1. Pilih sebuah bilangan acak p untuk diuji 2. Hitunglah b, dimana b adalah banyaknya p – 1 dibagi 2 dimana b adalah pangkat terbesar dari 2, sedemikian sehingga 2b merupakan faktor dari p – 1 3. Kemudian hitunglah m, sedemikian sehingga p = 1 + 2 b . m 4. Pilihlah sebuah bilangan acak a sedemikian sehingga a lebih kecil daripada p 5. Tentukanlah j = 0 dan z = a m mod p 6. Jika z = 1 atau jika z = p – 1, maka p lulus dari pengujian dan mungkin merupakan bilangan prima 7. Jika j 0 dan z = 1, maka p bukanlah bilangan prima 8. Tentukan j = j + 1. Bila j b dan z ≠ p – 1, tentukan z = z 2 mod p dan kembali ke poin 4. Jika z = p – 1, maka p lulus dari pengujian dan mungkin prima 9. Jika j = b dan z ≠ p – 1, maka p bukan bilangan prima Universitas Sumatera Utara Sebagai contoh misalnya kita pilih sebuah bilangan p = 37, maka p – 1 = 37 – 1 = 36. Setelah itu kita pilih b = 2, karena 2 2 = 4 merupakan bilangan 2 n terbesar yang dapat membagi 36. 37 = 1 + 2 2 .m atau 36 = 4.m sehingga m = 9. Pilih sebuah bilangan a, misalkan a = 3. j = 0, z = 3 9 mod 37 = 36. Jika z = 1 atau z = 36 maka p lulus dari pengujian dan merupakan bilangan prima.

3.2 Perancangan Flowchart