2.6 Fermat’s Little Theorem
Teorema : Untuk bilangan prima p dan bilangan bulat a, a
p
≡ amod p dan jika a tidak dapat dibagi oleh p, maka a
p-1
≡ 1 mod p.
Teorema ini dapat digunakan untuk mempermudah kalkulasi pemangkatan modulo bilangan prima. Sebagai contoh, kita coba kalkulasi 2
74
mod 13. Karena 13 adalah bilangan prima dan 2 tidak dapat dibagi 13, maka teorema ini dapat
digunakan untuk mengkalkulasi
2
12
≡ 2
13-1
mod 13 ≡ 1 mod 13. Jadi
2
74
= 2
12 6
× 2
2
≡ 1
6
× 2
2
≡ 4 mod 13.
Meskipun dapat digunakan untuk mempermudah kalkulasi, dalam kriptografi, peran terpenting dari
Fermat’s little theorem adalah sebagai dasar dari berbagai teknik enkripsi asimetris. Untuk memudahkan pembuatan program untuk
pembangkitan bilangan prima maka digunakan teknik iterasi. Untuk bilangan yang lebih kecil dari 100 maka akan dilakukan pengujian sebanyak tiga kali,
untuk bilangan yang lebih besar dari 100 maka dilakukan pengujian sebanyak
digit bilangan tersebut. Kromodimoeljo. 2010
2.7 Modulus Exponential
Dalam kriptografi, perhitungan modulus exponential sering dijumpai. Sistem kriptografi asimetris seperti RSA dan ElGamal menggunakan modulus
exponential dalam perhitungan enkripsi dan dekripsinya. Persamaan modulus exponential adalah Sadikin, 2012:
y = a
x
mod n Salah satu metode untuk menghitung modulus exponential adalah Square and
Multiply. Langkah-langkah untuk menghitung modulus exponential menggunakan Square And Multiply Sadikin, 2012:
1. Ubah nilai x ke dalam nilai biner.
2. Tentukan y
= 1. 3.
Lakukan perhitungan sebanyak panjang biner, jika x
i
= 1 maka,
Universitas Sumatera Utara
y = y
2
a mod n Jika x
i
= 0 maka, y = y
2
mod n
Perhitungan modulus exponential menggunakan Square And Multiply dicontohkan sebagai berikut:
Hitung nilai 17
25
mod 11. Penyelesaian:
Ubah 25 ke dalam nilai biner, maka didapat 11001, y = 1 Untuk nilai x
1
= 1 y = y
2
17 mod 11 = 1
2
17 mod 11 = 6
Untuk nilai x
2
= 1 y = y
2
17 mod 11 = 6
2
17 mod 11 = 7
Untuk nilai x
3
= 0 y = y
2
mod 11 = 7
2
mod 11 = 5
Untuk nilai x
4
= 0 y = y
2
mod 11 = 5
2
mod 11 = 3
Untuk nilai x
5
= 1 y = y
2
17 mod 11 = 3
2
17 mod 11 = 10
Maka, didapat hasil 17
25
10 mod 11
Universitas Sumatera Utara
2.8 Algoritma ElGamal
Algoritma ElGamal
merupakan algoritma
kriptografi asimetris
yang menggunakan dua jenis kunci, yaitu kunci publik dan kunci rahasia. Kunci publik
berfungsi untuk mengenkripsi pesan sedangkan kunci rahasia berfungsi untuk mendekripsi pesan. Tingkat keamanan algoritma ini didasarkan atas masalah
logaritma diskrit pada grup pergandaan bilangan bulat modulo prima. Singh, 2012
Algoritma ElGamal mempunyai kunci publik berupa urutan tiga bilangan dan sebuah bilangan sebagai kunci rahasia. Algoritma ElGamal merupakan cipher
block, yaitu melakukan proses enkripsi pada blok-blok plaintext dan menghasilkan blok-blok ciphertext yang kemudian dilakukan proses dekripsi, dan
hasilnya digabungkan kembali menjadi pesan yang utuh dan dapat dimengerti. Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci,
proses enkripsi dan proses dekripsi. Kelebihan algoritma ElGamal adalah suatu plaintext yang sama akan dienkripsi menjadi ciphertext yang berbeda-beda, tetapi
pada proses dekripsi akan diperoleh plaintext yang sama. Bahary, 2010
ElGamal dapat digunakan untuk tanda tangan digital dan enkripsi, algoritma ini memberikan keamanan dari sulitnya menghitung logaritma diskrit
yang digunakan dalam tempat terbatas. Untuk membangkitkan pasangan kunci, dilakukan langkah berikut Mollin, 2007:
1. Pilih bilangan prima p dan cari akar primitif
mod p 2.
Pilih bilangan random a dimana 2 a p – 1, dan hitung nilai
a
3. Public key yang diperoleh adalah p,
, dan
a
sedangkan private key adalah a
Setelah didapatkan public key yang disepakati, maka dilakukan enkripsi dengan langkah berikut Mollin, 2007:
1. Pilih bilangan random b dengan syarat b p -1
2. Hitung nilai
b
mod p untuk C1 dan m
ab
mod p untuk C2, dimana m adalah plaintext
Universitas Sumatera Utara
3. Maka setiap satu karakter plaintext memiliki dua ciphertext. Mollin, 2007
Proses selanjutnya adalah dekripsi. Setelah memperoleh ciphertext, maka penerima pesan akan mengubah ciphertext menjadi plaintext. Sehingga dapat
dengan mudah membaca isi dari pesan tersebut. Untuk mendekripsi pesan, penerima membutuhkan kunci private a. Dan dilakukan perhitungan berikut:
1. Kunci yang digunakan adalah nilai a
2. Hitung nilai dengan menggunakan C1 dengan cara C1
p-1-a
mod p yang disebut m1
3. Dari hasil perhitungan m1 maka untuk memperoleh hasil dilakukan
perhitungan m1C2 mod p, langkah-langkah ini dilakukan per karakter. Maka akan didapat plaintext yang disampaikan oleh pengirim. Mollin, 2007
2.9 Transposisi Segitiga