- 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 p1, 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