Ordo Modulo Exponentiation Invers Modulo

- untuk i from n down to t + 1 kerjakan : - jika x i = y t maka set q i−t−1  b − 1; selain itu set q i−t−1  x i b + x i−1 y t - while q i−t−1 y t b +y t−1 x i b 2 +x i−1 b + x i−β , kerjakan: q i−t−1  q i−t−1 −1 x  x − q i−t−1 yb i−t−1 - jika If x 0 maka set x  x - yb i−t−1 dan q i−t−1  q i−t−1 − 1. - r  x, output q, r. 3. output r

f. Kekongruenan

Misalkan a dan b adalah bilangan bulat dan m adalah bilangan bulat 0, maka a ≡ b mod m jika m habis membagi a – b ditulis m|a − b. Jika a tidak kongruen dengan b dalam modulus m, maka di tulis a ≡ b mod m Oppliger, 2005. Kekongruenan a ≡ b mod m dapat juga di tuliskan hubungan a = b + km yang dalam hal ini k adalah bilangan bulat. Berdasarkan definisi aritmetika modulo, dapat dituliskan a ≡ b mod m

g. Fungsi Euler 

Jika n  1, n adalah bilangan bulat n yang relatif prima dengan n, dengan ketentuan : a. Jika p adalah bilangan prima, maka p = p – 1 b. Jika gcdm, n = 1, maka mn = m . n c. Jika n = , maka n = n x Menezes, Oorschot and Vanstone, 1996

h. Ordo Modulo

Jika a  Z n , a disebut ordo dari m mod n apabila a adalah nilai terkecil, sehingga m e ≡ 1 mod n Menezes, Oorschot and Vanstone, 1996

i. Exponentiation

Fungsi ini digunakan untuk menghitung operasi pemangkatan bilangan bulat modulo. Algoritma Exponentiation Menezes, Oorschot and Vanstone, 1996 Input : m = m l−1 …m b , R = b l , m l = −m −1 mod b, e = e t …e 2 dimana e t =1, dan bilangan bulat x, 1  x m Output : x e mod m Universitas Sumatera Utara Langkah : 1. x  Mont x, R 2 mod m, A  R mod m R mod m dan R 2 mod m,dapat diberikan sebagai input 2. Untuk i from t down to 0 kerjakan : - A  Mont A, A - jika e i = 1 maka A Mont A, x 3. A  Mont A, 1 4. output A

j. Invers Modulo

Jika a dan m relatif prima dan m 1, maka dapat ditemukan invers dari a modulo m . Invers dari a mod m, disebut juga invers perkalian, yaitu bilangan bulat a - 1. Algoritma Invers Modulo Menezes, Oorschot and Vanstone, 1996 Input : bilangan bulat m = m n−1 …m 1 m b dimana gcdm, b = 1, R = b n , m 1 = − m −1 mod b, dan T = t βn−1 … t 1 t b mR Output : TR −1 mod m Langkah : 1. A ← T notasi : A = a βn−1 … a 1 a b 2. For i from 0 to n − 1 kerjakan : - u i ← a i m’ mod b - A ← A + u mb i 3. A ← Ab n 4. jika A  m maka A ← A − m 5. output A k . Elemen Primitif  Primitive root Jika m  Z, n  N dan ord n m = n maka m disebut akar primitive modulo n. dengan kata lain, m adalah primitive root jika memiliki eksponen n modulo n. Primitive root mod bilangan prima : jika p adalah bilangan prima dan e  N, dimana e  p − 1. Dalam setiap system residu modulo p, terdapat 0 atau e yang berbeda untuk m  Z, 0  m  p1, dengan ord p m = e secara khusus terdapat  p  1 akar primitive modulo p. Mollin, 2007 Universitas Sumatera Utara Jika digunakan bilangan prima p yang sama dengan p = 2 . q + 1 dan q adalah bilangan prima, maka dapat digunakan untuk mengecek apakah suatu Zp merupakan elemen primitif atau tidak. Karena p – 1 = 2 . q, 2 dan q merupakan pembagi prima dari p  1 sehingga harus dicek apakah  2 mod p  1 dan  q mod p  1. Jika keduanya dipenuhi, maka  adalah elemen primitif. Algoritma penentuan elemen primitif Input : bilangan prima p ≥ 5 dan α  Zp Output : elemen primitif atau bukan elemen primitive Langkah : 1 Hitung q = 2 Hitung  2 mod p dan  q mod p 3 Jika  2 mod p = 1 maka output :  bukan elemen primitif 4 Jika  q mod p = 1 maka output :  bukan elemen primitif 5 output :  element primitif 2.2.3 Prinsip Kerja Algoritma ElGamal 2.2.3.1 Proses pembentukan kunci Proses pertama adalah pembentukan kunci yang terdiri dari kunci private rahasia dan kunci public umum. Pada proses ini dibutuhkan sebuah bilangan prima p yang digunakan untuk membentuk grup Zp, elemen primitif α dan sembarang a  {1,..., p 2}. Kunci publik algoritma ElGamal berupa pasangan 3 bilangan, yaitu p, α, , dengan = α a � � Sedangkan kunci rahasianya adalah bilangan a tersebut. Karena pada algoritma ElGamal menggunakan bilangan bulat dalam proses perhitungannya, maka pesan harus dikonversi ke dalam suatu bilangan bulat. Untuk mengubah pesan menjadi bilangan bulat, digunakan kode ASCII American Standard for Information Interchange . Kode ASCII merupakan representasi numerik dari karakter-karakter yang digunakan pada komputer, serta mempunyai nilai minimal 0 dan maksimal 255. Kode ASCII berkorespondensi 1-1 dengan karakter pesan. Algoritma membangkitkan Pasangan Kunci : Menezes, Oorschot and Vanstone, 1996 Universitas Sumatera Utara 1. Pilih sembarang bilangan prima p besar dan elemen primitif  Primitive Root grup Zp dari bilangan bulat mod p 2. Pilih bilangan bulat acak a , dengan syarat 1 ≤ a ≤ p – 2. 3. Hitung = α a mod p. 4. Publikasikan nilai p, α dan , serta rahasiakan a. Hasil algoritma ini adalah kunci publik : triple , α, p dan kunci privat : pasangan a, p. Pihak yang membuat kunci publik dan kunci rahasia adalah pengirim, sedangkan pihak penerima hanya mengetahui kunci publik yang diberikan oleh pengirim, dan kunci publik tersebut digunakan untuk mengenkripsi pesan. Jadi, keuntungan menggunakan algoritma kriptografi kunci publik adalah tidak ada permasalahan pada distribusi kunci apabila jumlah pengirim sangat banyak serta tidak ada kepastian keamanan jalur yang digunakan. 2.2.3.2 Proses Enkripsi Pada proses ini pesan dienkripsi menggunakan kunci publik , α, p dan sembarang bilangan acak rahasia k  {1,..., p 2}. Misalkan m adalah pesan yang akan dikirim. Selanjutnya, m diubah ke dalam blok-blok karakter dan setiap karakter dikonversikan ke dalam kode ASCII, sehingga diperoleh plainteks m 1 , m 2 , ...,m n dengan m i  {1, 2,..., p 1}, i = 1, 2,..., n. Untuk nilai ASCII pemisah “;” digunakan untuk menandai akhir dari suatu teks. Proses enkripsi pada algoritma ElGamal dilakukan dengan menghitung : = � � � dan = � . � � � dengan k  {1, ..., p 2}acak rahasia. Bilangan acak k ditentukan oleh pihak pengirim dan harus dirahasiakan, jadi hanya pengirim yang mengetahuinya. Sedangkan nilai k hanya digunakan saat melakukan enkripsi dan tidak perlu disimpan. Diperoleh cipherteks , . Algoritma enkripsi pesan : 1. Susun plainteks menjadi blok-blok, m 1 , m 2 , …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai p – 1 dengan mengubah nilai m menjadi kode ASCII. 2. Pilih bilangan acak k, yang dalam hal ini 0 k p – 1, sedemikian sehingga k relatif prima dengan p – 1. 3. Setiap blok m dienkripsi dengan rumus : Universitas Sumatera Utara = α k mod p dan = β k m mod p. Pasangan dan adalah cipherteks untuk blok pesan m. 2.2.3.3 Proses Dekripsi Setelah menerima cipherteks , , proses selanjutnya adalah mendekripsi cipherteks menggunakan kunci publik p dan kunci rahasia a. Dapat ditunjukkan bahwa plainteks m dapat diperoleh dari cipherteks menggunakan kunci rahasia a. Diberikan p, α, sebagai kunci publik dan a sebagai kunci rahasia pada algoritma ElGamal. Jika diberikan cipherteks , , maka untuk mendekripsi dan  digunakan kunci rahasia a, dan plainteks m diperoleh kembali dengan persamaan : � = . α –1 � � m = a mod p Karena Zp merupakan grup siklik yang mempunyai order p 1 dan a  {1,..., p 2}, maka � −1 = −� = mod p Algoritma Dekripsi pesan : 1. Untuk i dari 1 sampai n : Hitung mod p Hitung m i = . � -1 mod p 4. Diperoleh plainteks m 1 m 2 ,..., m n . 5. Konversikan masing-masing bilangan m 1 , m 2 ,..., m n ke dalam karakter sesuai dengan kode ASCII-nya, kemudian hasilnya digabungkan kembali.

2.3 Kompresi