Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks
BAB 2
TINJAUAN PUSTAKA
3.1.
Latar Belakang
3.1.1. Pengertian Kriptografi
Kriptografi berasal dari kata kripto dan grafi. Kripto berarti menyembunyikan, dan
grafi yaitu ilmu. Kriptografi (cryptography) adalah suatu ilmu yang mempelajari suatu
sistem penyandian untuk menjamin kerahasiaan dan keamanan data. Orang yang
melakukan disebut Criptographer. Kriptografi merupakan ilmu yang mempelajari
teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti
kerahasiaan data, keabsahan data, dan integritas data serta autentifikasi data (Menezes,
1996)
Sisem kriptografi klasik umumnya menggunakan metode subtitusi atau transposisi
dan telah digunakan jauh sebelum komputer ditemukan. Terdapat beberapa komponen
utama dalam sistem kriptografi yaitu:
Secara umum, istilah kriptografi yang sering digunakan adalah (Munir, 2006):
1. Pesan
Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya,
pesan sering juga disebut dengan plaintext atau teks jelas (cleartext). Plaintext
merupakan suatu pesan bermakna yang akan diproses menggunakan algoritma
kriptografi.
2. Ciphertext
Cipertext atau di sebut dengan cryptosystem merupakan pesan yang telah
tersandi. Pesan dalam bentuk ciphertext tidak dapat dibaca karena berisi
karakter-karekter yang tidak memiliki makna setelah melalui proses enkripsi.
3. Enkripsi
Enkripsi merupakan proses penyandian plaintext menjadi ciphertext atau
disebut sebagai enciphering. Enkripsi dilakukan dengan tujuan agar plaintext
tersebut tidak dapat dibaca oleh pihak yang tidak memiliki otoritas
(wewenang).
4. Dekripsi
Dekripsi merupakan proses pengembalian ciphertext menjadi plaintext semula
atau di sebut deciphering. Dekripsi dilakukan ketika pesan telah sampai
kepada pihak yang dituju.
5. Kunci (key).
Kunci (key) adalah parameter yang digunakan untuk transformasi enkripsi dan
dekripsi. Kunci dapat juga berupa string atau deretan bilangan. Keamanan
suatu algoritma kriptografi biasanya tergantug kepada kerahasiaan penyebaran
key.
6. Kriptosistem (cryptosystem)
Cryptosystem adalah perangkat keras atau implementasi perangkat lunak
kriptografi yang diperlukan atau mentranformasi sebuah pesan asli menjadi
ciphertext atau juga sebaliknya.
3.1.2. Jenis Kriptografi
Menurut (Munir, 2006) terdapat dua jenis algoritma kriptografi berdasarkan jenis
kunci yang digunakan, yaitu:
1. Algoritma Kriptografi Simetri (Konvensional) / Symetric Cryptosystem
2. Algoritma Kriptografi Asimetri (Kunci Publik) / Assymetric Cryptosystem
1. Kriptografi Simetri / Symetric Cryptosystem
Konsep dasar dari kriptografi simetri adalah kunci yang digunakan untuk enkripsi
merupakan kunci yang sama dengan kunci untuk dekripsi. Istilah lain untuk
kriptografi simetri adalah kriptografi kunci privat (private-key cryptography).
Kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional
(conventional cryptography). Dapat juga di katakan sebagai proses enkripsi dan
dekripsi yang kuncinya harus dirahasiakan. Dan contoh disini yang diambil adalah
DES (Data Encrpytion Standart), Blowfish, IDEA. Dua kategori yang termasuk
algoritma simetri adalah algoritma blok cipher dan stream cipher . Proses enkripsi
dan dekripsi dapat dilihat pada gambar 2.1 dibawah ini:
Gambar 2.1 Proses enkripsi dan dekripsi Simetric Cryptosystem
a. Block Cipher
Algoritma block cipher adalah algoritma yang masukan dan keluarannya
berupa satu block, dan setiap blocknya terdiri dari banyak bit. Beberapa mode
operasi enkripsi block cipher.
1. Data Encryption Standard (DES)
2. AES (Advanced Encryption Standard)
3. Blowfish
b. Stream Cipher
Stream cipher (cipher aliran) adalah cipher yang berasal dari hasil XOR antara
bit plaintext dengan setip bit kuncinya. Stream cipher sangat rawan terhadap
attack dan pembalikan kunci. Beberapa model algoritma stream cipher adalah
antara lain:
1. One Time Pad (OTP)
2. Rivest Code 4 (RC4)
Kelebihan algoritma simetri adalah:
a. Proses enkripsi dekripsi kriptografi simetri membutuhkan waktu yang relatif
singkat.
b. Ukuran kunci yang relatif pendek.
c. Otentifikasi pengiriman pesan langsung diketahui dari ciphertext yang diterima
karena kunci hanya diketahui oleh penerima dan pengirim saja.
Kekurangan kriptografi simetri adalah:
a. Kunci simetri harus dikirim melalui saluran komunikasi yang aman dan kedua
entitas yang berkomunikasi harus menjaga kerahasiaan kunci.
b. Kunci harus sering diubah, setiap kali melaksanakan komunikasi.
2. Kriptografi Asimetri / Symetric Cryptosystem
Konsep dasar kriptografi asimetri sering juga disebut dengan algoritma kunci publik
(plaintext key), dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan
dekripsi berbeda. Pada algoritma simetri kunci dibagi dua bagian, yaitu:
1. Kunci umum (public key): kunci yang boleh dikataui oleh semua orang / kunci
dipublikasikan.
2. Kunci rahasia (private key): kunci yang dirahasiakan / hanya diketui oleh
pengirim dan penerima pesan saja.
Kunci-kunci tersebut berhubungan satu dengan yang lain. Dengan kunci
plaintext orang dapat mengenkripsi pesan tapi tidak bisa mendekripsikannya. Hanya
orang yang memiliki kunci rahasia yang dapat di dekripsi pesan tersebut. Algoritma
asimetri dapat mengirim pesan dengan lebih aman dari algoritma simetri.
Dalam kriptografi asimetris digunakan dua buah kunci yang berbeda dalam
proses enkripsi dan dekripsi lagi. Salah satu disebut kunci publik (plaintext key) dapat
dipublikasikan. Sedangkan kunci yang lain disebut kunci privat (private key) yang
harus dirahasiakan. Misalnya bila A mengirim pesan kepada B, A dapat menyandikan
pesannya menggunakan kunci plaintext B, dan bila B ingin membaca pesan tersebut,
maka Si B tersebut perlu mendekripsikan dengan kunci privatnya. Dengan demikian
kedua belah pihak dapat menjamin asal pesan serta keaslian pesan tersebut, karena
adanya mekasnisme ini. Contoh dari sistem ini antara lain RSA Scheme dan Merkie
Hellman Scheme. Proses enkripsi dan dekripsi pada algoritma asimetri dapat dilihat
pada gambar 2.2 dibawah ini:
Gambar 2.2 Proses Enkripsi dan dekripsi Asymetric Cryptosystem
3.1.3. Tujuan Kriptografi
Ditinjau dari tujuan kriptografi sendiri adalah sebagai berikut (Menezes, Oorschot dan
Vanstone, 1996):
1. Kerahasiaan (confidentialy)
Merupakan layanan yang bertujuan untuk mendaga agar pesan tidak dapat
dibaca oleh pihak-pihak yang tidak memiliki otoritas (wewenang). Dalam
kriptografi layanan ini dapat direalisasikan dengan menyandikan pesan
ciphertext. Misalnya kata “majid” dapat disandikan dengan “abcde”. Istilah
lain yang serupa dengan confidentialy adalah secrecy dan privacy.
2. Integritas data (data integrity)
Merupakan layanan yang menjamin bahwa pesan asli masih uth atau belum
dimanipulasi selama proses pengiriman. Dengan kata lain, aspek keamanan ini
dapat diungkap sebagai pertanyaan “ apakah pesan yang diterima masih asli
atau sudah di lakukan modifikasi”.
3. Otentifikasi (autentification)
Merupakan
layanan
mengidentifikasi
autentification
yang
kebenaran
atau
entity
berhubungan
pihak-pihak
dengan
yang
autentification).
Dua
identifikasi,
berkomunikasi
pihak
yang
baik
(user
saling
berkomunikasi harus dapat mengidentifikasi satu sama yang lainnya sehingga
si penerima memastikan sumber pesan.
4. Non-repudiation
Merupakan layanan untuk mencegah entitas yang berkomunikasi melakukan
penyangkalan, yaitu si pengirim pesan menyangkal melakukan pengiriman
atau penerima pesan menyagkal telah menerima pesan sebelumnya.
3.1.4. Serangan Terhadap Kriptografi
Attack (serangan) merupakan suatu usaha yang dilakukan oleh seorang kriptanalis
untuk menemukan kunci atau plaintext ke ciphertext dalam suatu sistem kriptogafi.
Kriptanalis akan berusaha untuk menemukan plaintext dari ciphertext tanpa memiliki
akses kunci yang digunakan dari sistem kriptografi. Berdasarkan teknik yang
digunakan dalam menemukan kunci, serangan dapat dibagi menjadi exahaustive atau
brute force attack dan analytical attack (Fitria, 2007).
Exhaustive atau brute force attack merupakan serangan untuk mendapatkan
plaintext dai ciphertext dengan mencoba satu persatu kombinasi atau kemungkinan
kunci yang digunakan. Dalam hal ini kriptanalis harus tahu jenis algoritma kriptografi
yang digunakan oleh pengirim pesan dan juga memiliki sejumlah plaintext dan
ciphertext.
a.
Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi
atas dua macam, yaitu serangan pasif dan serangan aktif:
1. Serangan aktif
Pada serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi
sistem untuk keuntungan pribadinya. Misalnya penyerang mengubah aliran pesan
seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan
potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang
tersimpan, dan sebagainya.
2. Serangan pasif
Pada proses ini, penyerang tidak terlibat dalam komunikasi antara pengirim dan
penerima pesan, namun penyerang menyadap semua pertukaran pesan antara
kedua entitas tersebut, tujuan utamanya adalah untuk mendapatkan sebanyak
mungkin informasi yang digunakan untuk kriptanalis
2.1.5 Teknik Enkripsi dan Dekripsi
a.
Teknik Subtitusi
Teknik subtitusi akan diganti suatu kode dengan kode yang lain, degan menggunakan
tabel subtitusi. Dapat ditampilkan dalam tabel dibawah ini. Dapat dilihat pada tabel
2.1 dibawah ini:
Tabel 2.1 Teknik subtitusi
A
B
C D E
M A J
I
F G
H I
J
K
L
M N O P
D ! @ # $ % ^ & *
(
)
Q R S
T
U
V W X
S Y 4 B R U L 0
Y
Z
1 2 3
Tabel subtitusi diatas dibuat secara acak, misalkan huruf A akan diganti dengan huruf
M, dan huruf B diganti dengan huruf A begitu seterusnya. Misalkan kata “ENKRIPSI”
akan dienkripsi dengan teknik subtitusi dengan tabel diatas menjadi “D(^4$SBS”.
Untuk memperoleh kata “ENKRIPSI” kembali maka dilakukan pula melihat tabel
subtitusi diatas.
b.
Teknik Blocking
Teknik blocking yaitu membagi pesan plaintext kedalam blok-blok pesan yang
kemudian akan di enkripsi secara independen. Misalkan kalimat “TEKNIK
BLOCKING ENCRYPTION METHODE ” akan dibagi kedalam blok-blok sebagai
berikut. Dapat dilihat pada tabel 2.2 dibawah ini:
Tabel 2.2 Teknik Blocking
T
K
C
space
Y
N
H
E
space
K
E
P
space
O
K
B
I
N
T
M
D
N
L
N
C
I
E
E
I
O
G
R
O
T
space
Selajutnya teknik dapat dienkripsi perblok, misalkan untuk proses pengacakan
sederhana dengan pembacaaan yang terbalik yaitu karena proses penyimpanan pada
blok dilakukan per kolom, maka proses enkripsi akan dilakukan dengan cara menaruh
kalimat “ EDOHTEM NIOTPYRCNE GNIKCOLB KINKET” pada blok-blok pesan
berbaris dan membaca dengan perkolom dan menjadi kalimat “TEKNIK BLOCKING
ENCRYPTION METHODE” kembali. Agar rumit dapat menggunakan kalkulasi
tertentu untuk mengacak susunan blok seperti pada algoritma FEAL dan ElGamal
pada skripsi ini.
b.
Teknik permutasi
Teknik permutasi sering juga disebut transposisi. Teknik ini memindahkan atau
merotasikan karakter dengan aturan tertentu, prinsipnya adalah berlawanan tetap tapi
identitasnya yang diacak. Sebelum dilakukakan permutasi, umumnya plaintetxt
terlebuh dahulu di bagi menjadi blok-blok dengan panjang yang sama. Untuk contoh
diatas, plaintext dibagi menjadi blok terdiri dari 5 karakter, dengan aturan permutasi
pada gambar 2.3. berikut:
Gambar 2.3. Teknik Permutasi
Misalkan kalimat “KUNCI RAHASIA” di enkripsi menjadi “ICNUK
ISAHAR A” dengan cara membaginya kalimat kedalam 5 blok – 5 blok dan
melakukan proses permutasi seperti pada gambar diatas dengan teknik pengacakan.
Proses dekripsi dilakukan serupa dengan membagi kedalam 5 blok pula dan membalik
permutasinya pada gambar. 2.4. dibawah ini:
K
U N C
I
R
A H A
I
C
N U K
I
S
A
S
I
A
H A R
A
Gambar 2.4. Teknik Permutasi
c.
Teknik Ekspansi
Teknik akan menambahkan beberapa byte kata kedalam plaintext dengan aturan
tertentu.
Proses
penambahan
beberapa
byte
kata
ini
diharapkan
dapat
menyembunyikan informasi dapat plaintext. Salah satu contoh penggunaan teknik ini
adalah dengan menukar huruf awal dan akhir kata yang diberi awalan “NI” proses
enkripsi dengan cara ekspansi terhadap plaintext terjadi sebagai pada gambar 2.5.
Berikut ini:
Gambar 2.5. Teknik Ekspansi
Ciphertextnya adalah “EVINGNI EETRCSNI SDROWNI”. Aturan ekspansi dapat
dibuat lebih kompleks dan terkadang teknik ekspansi dapat digabungkan dengan
teknik lainnya.
d.
Teknik Pemampatan (Compaction)
Mengurangi panjang pesan atau jumlah bloknya adalah cara lain untuk
menyembunyikan isi pesan. Misalkan untuk plaintext “SECRET WORDS” setiap kata
ke dua akan dihilangkan dan di sertakan pada akhir kalimat yang sebelumnya diberi
tanda “.”. proses yang terjadi untuk plaintext tersebut adalah pada gambar. 2.6. yaitu:
S
E
S
S
C
R
C
C
E
E
T
E
E
W
R
E
W
E
W
S
.
E
O
R
R
D
S
R
S
T
O
D
Gambar 2.6. Teknik Pemampatan.
Aturan penghilangan karakter dan karakter khusus dan berfungsi sebagai pemisah
menjadi dasar untuk proses dekripsi ciphertext menjadi plaintext kembali.
Dengan menggunakan kelima menjadi teknik kriptografi diatas, dapat
diciptakan teknik kriptografi yang amat banyak walaupun sekilas terlihat sederhanana,
kombinasi teknik dasar kriptografi dapat menghasilkan teknik kriptografi turunan
yang cukup kompleks, dan beberapa teknik dasar kriptografi masih digunakan dalam
kriptografi modern.
2.2 Algoritma Hibrida (Hybrid Algorithm)
Kriptografi hybrid adalah suatu penggabungan antara kriptografi simetris dan
kriptografi asimetris bentuk tulisan rahasia yang memperhatikan keseimbangan dan
menggunakan syarat-syarat tertentu yang telah ditetapkan dan juga tetap pada
kerahasiaan sampai kepada si penerima. Proses ini dimulai dengan negosiasi
menggunakan cipher asimetris dimana kedua belah pihak setuju dengan private
key/session key yang akan dipakai. Kemudian session key diunakan dengan teknik
simetrik untuk mengengkripsi conversation ataupun tukar-menukar data selanjutnya.
Suatu session key hanya dipakai sekali sesi. Untuk sesi selanjutnya session key harus
dapat dibuat kembali.
a. Distribusi key
Dalam pendistribusian suatu dapat dialakukan dengan bermacam cara misalnya
download, diberikan secara langsung dan sebagainya. Untuk mencegah pemalsuan key
oleh pihak ketiga maka diperlukan adanya certificate.
b. Protokol persetujuan key
Atau disebut juga degan protokol pertukaran key adalah suatu sistem dimana dua
pihak bernegosiasi untuk menetukan secret value. Contohnya adalah SSL (Secure
Socket Layer)
Metode hibrida terdiri atas enkripsi simetris dengan satu kunci (session key) dan
ekripsi asimetris dengan sepasang kunci (plaintext/private key).
Lagkah dalam kriptografdi hibrida adalah:
Langkah 1
: Pengirim mengengkripsi teks dengan session key
Langkah 2
: Mengengkripsi dengan session key dengan plaintext key
Langkah 3
: menerima men-decryp session key dengan private key.
Langkah 4
: men-decrypt dengan session Key.
2.2.1
Pretty Good privacy (PGP)
Pretty Good Privacy yang selanjutnya disebut dengan PGP adalah suatu program
komputer yang dikembangkan oleh phil Zimmermann pada pertengahan tahun 1980
yang memungkinkan seseorang untuk saling bertukar pesan melaui email dan juga file
yang memberikan pelindungan kerahasiaan berupa enkripsi dan autentifikasi berupa
digital signature (tandatangan digital). Oleh karena itu PGP memiliki dua tingkatan
kunci yaitu kunci rahasia (private key) / simetri sebagai session key untuk melakukan
enkripsi data dan pasangan kunci private dan kunci plaintext untuk memberikan
digital signature dan sekaligus melindungki kunci simetri. (T. Andri 2013).
Secara garis besar PGP memiliki tiga fitur utama sebagai berikut:
1. Fitur untuk melakukan enkripsi dan menandatangani dokumen.
2. Fitur untuk dekripsi dan untuk verifikasi tandatangan.
3. Fitur untuk mengelola kunci PGP yang dimiliki oleh pengguna.
Setiap orang yang menggunakan PGP harus menerima kunci plaintext terlebih
dahulu, kunci plaintext tersebut didapatkan dengan cara mengirim email kepada rekan
yang akan diajak berkomunikasi dengan memanfaatkan program PGP atau dengan
terhubung secara langsung ke server yang memegang kunci plaintext.
1.
Enkripsi dengan PGP
PGP mengkombinasikan fitur-fitur terbaik yang didapat pada kriptografi konvensional
dengan kriptografi kunci plaintext. PGP merupakan system kriptografi hybrid.
Enkripsi pada PGP menggunakan kriptografi kunci dan juga sistem yang
menggabungkan kunci plaintext tersebut dengan identitas pengguna. Enkripsi pada
PGP mengggunakan kunci asimetri dengan pasangan kunci plaintext dan kunci privat.
Untuk melalukan enkripsi kunci rahasia digunakan pada algoritma chiper simetri.
Yang pada akhirnya kunci akan digunakan melakukan enkripsi plaintext. Hampir
semua kunci kan digunakan untuk kunci publik yang bebas disebarkan di seluruh
dunia. Pada gambar 2.7 seperti digambarkan skema dari enkripsi menggunakan PGP:
Gambar 2.7 Proses enkripsi pada PGP
2.
Dekripsi dengan PGP
Penerima email yang terenkripsi tersebut menggunakan kunci sesi (session key) untuk
melakukan dekripsi terhadap email tersebut. Kunci sesi terdapat pada email yang
terenkripsi tersebut diperoleh dengan cara mendekripsinya dengan kunci private.
Seperti yang dipaparkan pada gambar 2.8 dibawah ini:
Gambar 2.8 Proses dekripsi pada PGP
Strategi yang sama digunakan untuk mendeteksi apakah suatu pesan sudah
mengalami perubahan atau belum dan juga menentukan apakah pesan bersasal dari
pengirim yang sebenarnya. Pengirim emenggunakan enkripsi PGP untuk memberikan
tanda tangan digital (digital signature) pada pesan.
2.3 Lehmann Primary Test (Tes Keprimaan Lehmann)
Menurut Schneier (1996), berikut merupakan pengujian apakah p adalah bilangan
prima:
1. Pilih sebuah bilangan acak a kurang dari p.
2. Hitung
.
3. Jika
, maka
4. Jika
, maka kemungkinan
prima lebih dari 50%.
bukan bilangan prima.
bukan
5. Bila syarat telah terpenuhi maka dilakukan pengujian ulang sebanyak digit
bilangan prima yang diambil. Jika pada pengujian terakhir
, maka bilangan tersebut pasti bilangan prima.
atau
Demikian sehingga, kemungkinan acak sebagai witness pada bilangan
sebagai
bilangan tidak prima. Ulangi pengujian t kali. Jika perhitungan menghasilkan 1 atau 1, tetapi tidak selalu menghasilkan 1, maka tingkat kesalahan kemungkinan p sebagai
prima dengan
.
Contoh 1: Penulis ingin mengetahui apakah 17 adalah bilangan prima
a
2
p
Sesuai dengan ketentuan diatas dapat diambil kesimpulan bahwa
merupakan
bilangan prima
Contoh 2: Penulis ingin mengetahui apakah
a
adalah bilangan prima
3
p
Untuk hasil diatas tidak sesui dengan ketentuan pada point 2 dan 3 diatas maka
dilakukan pengujian sekali lagi dengan mengganti nilai a.
a
p
2
Jika pengujian telah dilakukan sebanyak 2 kali dengan mengganti nilai a, namun
hasilnya tidak sesuai dengan point 2 dan 3 diatas, maka dipastikan bilangan 27 bukan
merupakan bilangan prima.
Contoh 3: Penulis ingin mengetahui apakah
a
adalah bilangan prima
2
p
Sesuai dengan ketentuan point 2 dan 3 diatas dapat diambil kesimpulan bahwa 103
merupakan bilangan prima
2.4 Algoritma FEAL (Fast Data Encipherment Agorithm)
FEAL merupakan singkatan dari (Fast Data Encipherment Agorithm). FEAL
merupakan enkripsi tipe simetris block ciphers. Algoritma ini dibuat dengan tujuan
sebagai alternatif dari Data Encryption Standart (DES) dan di desain agar dapat
beroperasi dengan lebih cepat pada perangkat lunak. FEAL termasuk kedalam
keluarga algoritma yang memainkan peranan penting ke dalam perkembangan dan
perbaikan dari berbagai macam teknik kriptanalis. Termasuk kriptanalis linear dan
diferensial. Sama halnya seperti DES, FEAL berbasis algoritma Fiestel. FEAL
pertama kali di publikasikan pada tahun 1987 oleh akhiro shmizu dan Shozi
Miyaguchi dari NTT. Cipher ini rentan terhadap berbagai bentuk kriptanalis, dan telah
berperan penting sebagai katalis pada pertemuan kriptanalis diferensial dan linear.
(Livia. 2010)
Terdapat sejumlah revisi yang berbeda dari FEAL, meskipun semuanya
merupakan cipher Fiestel, dan menggunakan dasar putaran kunci yang sama dan
beroperasi pada blok 64-bit. FEAL-N memetakan bit blok plaintext dengan
menggunakan 64-bit kunci rahasia. Sama halnya dengan DES, FEAL menggunakan N
putaran cipher Feistel, namun dengan fungsi-f jauh lebih yang sederhana, dan di
jumlahkan dengan state awal dan akhir yang melakukan XOR sebagian dari kedua
data seperti melakukan subkey langsung dengan sebagian data.
FEAL mempunyai panjang blok 64 bit, dibagi menjadi 32 + 32 blok, dan
memiliki iterasi sebanyak 8 ronde seperti pada gambar. 2.9 dibawah ini:
ciphertext
Gambar 2.9 Diagram Alir Algoritma FEAL (Semuil dan Wijaya, 2009)
2.4.1 Sejarah dan penjelasan Algoritma FEAL
Untuk proses enkripsi, pertama kali program akan memerkas terlebih dahulu ada atau
tidaknya teks pada kotak plaintext sebagi text input proses enkripsi, jika teks belum
dimasukkan maka akan ditampilkan pesan peringatan dan program akan dihentikan.
Jika teks sudah dimasukkan maka akan dilakukan pengecekan karakter pada teks
masukan tersebut untuk validasi data. Pada fungsi enkrip, kemudian akan di cek
jumkah karakter dari plaintextnya. Jika plaintext bukan kelipatan dari blok yang
panjangnya 64 bit, maka akan ditambahakan angka “0” sebanyak jumlah karakter
yang perlu ditambahkan agar jumlahnya merupakan kelipatan 64 bit dikurangi satu,
dan karakter terakhir ditambahkan adalah nilai dari banyaknya karakter ditambahkan.
Berikut akan dijelaskan salah satu algoritma FEAL-N, yaitu FEAL-8,
a. Terdapat fungsi f f(A,Y) yang memetakan pasangan masukan 32 x 16 bit
menjadi keluaran 32 bit.
b. Pada fungsi f tersebut terdapat dua byte-oriented data subtitusi S0 dan S1 yang
masing-masing digunakan dua kali.
c. Masing-masing data subtitusi tersebut akan memetakan sepasang masukan 8bit menjadi 8-bit keluaran.
d. S0 dan S1 menambahkan 1 bit d e (0,1) menjadi 8-bit argumen x dan y,
dengan mengabaikan carry teratas, kemudian hasilnya di geser ke kiri
sebanyak 2-bit (ROT2)
S (x, y) = ROT 2(x + y + mod 256)
e. Terdapat pula fungsi key schedule fK( A, B) yang sama seperti fungsi f, fungsi
ini memetakan dua 32-bit input menjadi keluaran 32-bit.
f. Pada tabel 2.3 dibawah ini, Ai, Bi, Yi, ti, dan Ui adalah variable berukuran 8-bit
Tabel 2.3 Sistem Kriptografi Algoritma FEAL
t1
t2
U←f A,Y
U←fK A, B
(Ao⊕A1) ⊕Y0
Ao⊕A1
(A2⊕A3) ⊕Y1
A2⊕A3
U1
S1(t1, t2)
S1(t1, t2⊕B0)
U2
S0(t2, U1)
S0(t2, U1⊕B1)
U0
S0(A0, U1)
S0(A0, U1⊕B2)
U3
S1(A3, U2)
S1(A3, U2⊕B3)
2.4.2 Langkah Enkripsi Algoritma FEAL
Adapun langkah enkripsi pada algoritma FEAL adalah sebagai berikut:
1. Algoritma
ini
menerima
input
berupa
64-bit
plaintext
dan 64-bit kunci
2. Jika inputan 64-bit plaintext maka keluarannya adalah 64-bit blok ciphertext
C= C1, C2, C3, ..., C64
3. Dengan fungsi key schedule yang dijelaskan dibawah, maka ubah 16-bit
subkey menjadi K1 dan K
4. Defenisikan ML = M1, M2, M3, ... M32, dan MR = M33, M34, M35, ...,M64
5. Lakukan XOR initial subkey:
(L0, R0)←(ML, MR) ⊕ ((K8, K9),(K10, K11)).
6. R0 ←R0⊕L0.
7. Untuk i = 1 hingga i = 8, lakukan:
Li ←Ri-1
Ri ←Li-1 ⊕f(Ri-1, Ki-1)
Gunakan Table 1 untuk f(A, Y) dengan
A = Ri-1= (A0, A1, A2, A3) dan
Y = Ki-1= (Y0, Y1)
8. Ls ← Ls⊕Rs
9. Lakukan XOR final subkey
10. C ←(Rs, Ls)
(Rs,Ls) ←(Rs,Ls) ⊕((K12,K13),(K14,K15))
Algoritma dari proses pembangkit kunci adalah:
1. Pilih dua bilangan prima yang berbeda (p dan q)
2. Hitung
3. Hitung
4. Pilih sebua integer e dengan batas
Dan memenuhi syarat:
Dengan menggunakan algoritma extended euclian dapat diperoleh nilai d,
dengan batas
dan memenuhi syarat:
ed ≡ 1 (mod Ө)
5. Diperoleh kunci public (e, n) dan kunci private (d, n)
6. Untuk memperoleh nilai signature digunakan persamaan:
S = Hd mod n,
Nilai H diambil dari nilai validasi
7. Dan untuk verifikasi digunakan persamaan
V = s e mod n
Contoh Enkripsi 1:
Diketahui public key: (2203, 5959)
Private key
: (2667, 5959)
Nilai signature
: 3784
Ciphertext:
2.4.3 Proses Validasi (Key Schedule) Algoritma FEAL
Untuk proses validasi digunakan CRC cek. Pada CRC cek, pertama kali dilakukan
inisialisasi tabel kemudian iCRC diatur sehingga semua bit-nya bernilai satu. Tabel
CRC terdiri dai 256 buah nilai yang tiap nilainya mewakili satu karakter. Nilai ini
dibuat secara acak, yang masing-masing memiliki panjang 64 bit. Setiap karakter nilai
ini dibuat secara acak, yang masing-masing memiliki panjang 64 bit.
Fungsi key schedule:
1. Fungsi ini menerima masukan 64-bit kunci
K = k1 … k64.
2. Sedangkan keluarannya adalah 256-bit extended key (16-bit subkey Ki, 0 ≤ i ≤
15).
3. Inisialisasi:
U (-2) ← 0, U (-1) ← k1 … k32, U(0) ← k33 … k64.
U ≝(U0, U1, U2, U3) untuk 8-bit Ui.
4. Hitung K0, ..., K15 untuk i = 1 hingga i = 8:
a. U ←fK(U(i-2), U(i-1), U(i-3))
fK didefinisikan pada Tabel 1, dengan A dan
B menunjukkan 4-byte vector (A0, A1, A2, A3), (B0, B1, B2, B3)
b.
K2i-2 = (U0, U1)
K2i-1 = (U2, U3)
U(i) ←U.
2.4.4 Proses Dekripsi algoritma FEAL
Proses dekripsi FEAL sama dengan proses enkripsi, hanya pada proses dekripsi input
yang digunakan berupa ciphertext dan proses kerja kebalikan dari proses enkripsi.
Pada proses dekripsi urutan kunci yang digunakan merupaan kebalikan dari urutan
kunci yang digunakan pada proses enkripsinya. Untuk mendekripsi ciphertext kembali
menjadi plaintext, digunakan cara yang sama dengan sewaktu mengenkripsi plaintext
menjadi ciphertext, yaitu dengan menggunakan kunci K yang sama dan ciphertext C =
(RS, LS) yang menggantikan masukan plaintext. Namun fungsi key schedule
digunakan secara terbalik.
Untuk lebih spesifik, berikut ini adalah urutan key schedule pada saat melakukan
dekripsi:
1. Subkey ((K12, K13),(K14,K15)) digunakan untuk XOR initial subkey
2. Sedangkan subkey ((K8,K9),(K10,K11)) digunakan untuk XOR final subkey.
3. Dan putaran kunci digunakan dari i=8 hingga i=1 (tahap 7)
Contoh Dekripsi 1:
Diketahui kunci yang digunakan
: elektro
Nilai signature yang dimasukkan
:
Public key
: (2203, 5959)
Signature
: 3784
Plaintext:
2.5 Algoritma ElGamal
Algoritma ElGamal merupakan algoritma kriptografi asimetris. Pertama kali
dipublikasikan oleh Taher ElGamal pada tahun 1985. (Sadikin R. 2011)
Seperti RSA (Rivest Shamir Adleman), algoritma ElGamal terdiri dari tiga proses,
yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi. Algoritma ini
merupakan cipher blok, yaitu melakukan proses enkripsi pada blok-blok palintext dan
menghasilkan blok-blok ciphertext yang kemudian dilakukan proses enkripsi, dan
hasilnya digabungkan kembali menjadi pesan yang utuh dan bisa dimengerti. Untuk
membentuk sistem kriptografi ElGamal, dibutuhkan bilangan prima p. Untuk
algoritma ElGamal maka secara secara umum dapat dijelaskan pada gambar dibawah
ini, merupakan pseudo code ElGamal proses pembentukan kunci, enkripsi dan
dekripsi ElGamal, (Sadikin R. 2011)
Pseudo code algoritma ElGamal (Ghazi M, 2010):
1. Pilih P dimana P adalah bilangan prima
2. Pilih a dimana a adalah primitive root P dan a < p
3. Pilih sembarang bilangan Xa , dimana Xa < Q - 1
4. Hitung Ya, dimana Ya = a Xa mod Q
5. Plaintext key = { P, a, Ya}
6. Private key = {Xa}
7. Plaintext M < Q
8. Pilih sembarang bilangan K0 dimana K0 < Q
9. Hitung K1 dimana K1 = Yak mod Q
10.
Hitung C1 = ak0 mod Q
11.
Hitung C2 = K1 * M mod Q
12.
Cipher = (C1, C2)
13.
Dekripsi : cipher = (C1, C2)
Gambar
2.10
Sistem Kriptografi
prosesK1
pembentukan
kunci,Qenkripsi dan dekripsi
14.
Hitung
K1 dimana
= C1 Xa mod
-1
15.
Plaintext M = (C2K1 ) mod Q
ElGamal
2.5.1
Landasan perhitungan Matematika Algoritma ElGamal
Dalam memahami dan mempelajari sebuah kriptografi, ada baiknya terlebih dahulu
memahami konsep-konsep dasar dalam perhitungan matematis yang digunakan dalam
suatu algoritma kriptografi tersebut.
2.5.1.1 Modulo Eksponesial (menghitung modulo / sisa hasil pembagian)
Modulo eksponensial sering dipakai dalam bidang kriptografi dalam menghitung hasil
dari enkripsi maupun dekripsi. Permaslahan pada operasi modulo adalah bagaimana
dengan
mengitung
yang sangat besar. Terdapat beberapa cara untuk
menghitung modulo eksponensial, antara lain adalah dengan cara iteratif.
Function mod exp (x, y, n)
{
z =1
For (i=1; i≤y; i++){
z = x * z mod n
Return z
}
Contoh : Tentukan hasil dari
dengan cara iterasi!
Diketahui nilai x = 2, y = 5 dan n = 60
z= 1
i= 1
z = 4 * 1 mod 60 = 4
i= 2
z = 4 * 2 mod 60 = 8
i= 3
z = 4 * 4 mod 60 = 16
i= 4
z = 4 * 8 mod 60 = 32
i= 5
z = 4 * 16 mod 60 = 4
adalah 4
Maka hasil dari
Hasil kalkulator
2.5.1.2 Algoritma Euclidean
Algoritma Euclidean merupakan algoritma yang digunakan untuk mencari Faktor
Persekutuan Terbesar (Great Common Divisor) dari dua bilangan bulat. Algoritma ini
berdasarkan pernyataan bahwa ada dua bilangan bulat yang positif yaitu
dimana
dan
. Tahap perhitungan algoritma ini adalah sebagai berikut:
1. Jika
lanjutkan kelangkah selanjutnya (langkah nomor 2)
Jika tidak
2. Bagilah
3. Ganti nilai
dengan
dan misalkan sisanya adalah
dengan nilai
(langkah nomor 1)
dengan nilai , lalu ulang kembali ke langkah awal
Contoh 1: Tentukan GCD dari 312 dan 720
720 mod 312 = 96
312 mod 96 = 24
96 mod 24 = 0
Jadi GCD dari (312, 720) adalah 96
Contoh 2: Tentukan GCD dari 64 dan 93
93 mod 64 = 29
64 mod 29 = 6
29 mod 6 = 5
6 mod 5 = 1
5 mod 1 = 0
Jadi GCD dari (64, 93) = 1. Apabila GCD dari
maka
disebut
relatif prima
2.5.1.3 Inversi Modulo
Jika a dan n relatif prima dan
Inversi dari
, maka inversi dari a mod n dapat ditemukan.
, disebut juga sebagai inversi perkalian, dimana bilangan
demikian sehingga:
Pembuktian dari persamaan diatas dapat dilihat dari defenisi relatif prima diketahu
bahwa
Contoh 1: tentukan inversi dari 7 mod 17, dapat dijelaskan dalam tabel 2.4 berikut ini:
Tabel 2.4 Inversi Modulo dari 7 mod 17
Dari tabel diatas iterasi berhenti ketika
dan diperoleh hasil
Contoh 2: Tentukan inversi dari 25 mod 31,
Tabel 2.5 Inversi Modulo dari 25 mod 31
Dari tabel diatas iterasi berhenti ketika
dan diperoleh hasil
2.5.1.4 Bilangan Prima Aman
Input
: Bilangan prima
Output
: Pernyataan “bilangan prima aman” atau”bukan bilangan prima aman”
Langkah-Langkah:
1. Hitung prima
2. Jika q adalah bilangan prima, maka output “bilangan prima aman”
3. Jika q komposit, maka output “bukan bilangan prima aman”
Contoh 1: Tentukan bilangan p = 2579 adalah bilangan prima!
Dengan melakukan tes keprimaan diatas , diperoleh bahwa 1289 merupakan bilangan
prima. Jadi dapat disimpulkan bahwa 1289 merupakan bilangan prima aman.
2.5.1.5 Elemen primitive
Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitive
yang merupakan elemen pembangun dari Zp. Untuk mencari dan menentukan elemen
, dimana
ini digunakan
dan
merupakan bilangan prima. Jika elemen
, maka
merupakan elemen primitive (Jeffrey dkk,
2008).
Dalam Gambar Gambar 2.11 dibawah ini akan dijelaskan elemen primitive dari
algoritma ElGamal
Gambar 2.11 Elemen primitive algoritma ElGamal ( Stalling W., 5th, pg. 305, 2011)
Tahap menentukan suatu bilangan merupakan elemen primitive atau tidak dapat
dilihat dari beberapa poin dibwah ini:
1. Input bilangan prima aman
.
2. Hitung
3. Hitung
dan
.
4. Jika
5. Jika
6. Jika tidak terpenuhi dua persyaratan diatas maka
primitive
merupakan elemen
Contoh 1: Misalkan
pada point 2.5.1.4 diatas merupakn bilangan prima
= 1289. Untuk
aman. Maka dapat ditentukan bilangan prima
menunjukkan bahwa suatu bilangan bulat a merupakan elemen primitive Z2579*,
harus ditunjukkan bahwa
.
Dari tabel 2.5 dibawah ini dapat ditunjukkan untuk perhitungan
yaitu sebagai
berikut:
Tabel 2.5 Perhitungan bilangan prima aman algoritma ElGamal
2578
4
9
16
25
36
49
64
2578
1
1
1
2578
1
2578
Dalam algoritma ElGamal menggunakan bilangan bulat dalam proses
perhitungannya, maka pesan harus di konversi kedalam bilangan bulat. Untuk
mengubah pesan menjadi bilangan bulat, digunakan kode ASCII (American Standart
for Information Interchange). Kode ASCII merupakan represntasi Numerik dari
karakter masing-masing yang digunakan pada komputer, serta mempunyai nilai
minimal 0 sampai 255. Oleh karena itu, berdasarkan sistem kriptografi ElGamal diatas
harus digunakan bilangan yang lebih besar dari 255. Karakter dalam ASCII
berkorespondesnsi 1-1 dengan karakter pesan.
2.5.2
Prinsip Kerja Algoritma ElGamal
2.5.2.1 Algoritma Pembangkitan Kunci ElGamal
Dalam gambar 2.12 dibawah ini akan dijelaskan bagaimana gambaran Pembangkian
Kunci Algoritma ElGamal,
Gambar 2.12 Pembangkitan kunci algoritma ElGamal ( Stalling W., 5th, pg. 305,
2011)
1. Pilih sembarang bilang prima p (sebaiknya nilai bilangan prima lebih besar
dari 255). Misalkan 271
2. Ambil bilangan α sebagai primitive mod p
Misalkan α = 107
3. Ambil bilangan acak α dengan syarat α berada pada rentang
.
Misalkan 96
4. Hitung berapa
Maka hasil perhitungan didapat
a. Kunci public (p, α, x) = (271, 107, 39)
b. Kunci private (p,a) = (271, 96)
Contoh: Diketahui bilangan prima aman yaitu p = 2579, elemen primitive a = 2. Dan
dipilih a = 765 dan dihitung
Jadi diperoleh kunci public
dan kunci private
.
Kunci public diberikan Alice kepada Bob. Sedangkan kunci private tetap di
rahasiakan oleh alice dan tidak di publikasikan.
2.5.3
Enkripsi Algoritma ElGamal
Proses enkripsi dari algoritma ElGamal dapat dijelaskan secara ringkas dalam gambar
2.13 dibawah ini:
Gambar 2.13 Proses Enkripsi ElGamal ( Stalling W., 5th, pg. 305, 2011)
Input : Pesan yang akan di enkripsi dan kunci public (p, α, x)
Output : Ciphertext (1, 2, .... n)
Langkah enkripsi algoritma ElGamal adalah sebagai berikut:
1. Sebelum melakukan enkripsi harus menerima kunci public (p, α, x)
2. Pesan di potong-potong (blok) kedalam bentuk blok-blok dengan setiap blok
adalah karakter suatu pesan.
3. Konversikan masing-masing karakter tersebut kedalam kode ASCII, maka
diperoleh plaintext sebanyak n, bilangan, yaitu
4. Diperoleh ciphertext yaitu (C 1 = ak mod q; C 2 = KM mod q)
Contoh 1: Tentukan output dari “Desember tahun 2015”, dengan diketahui kunci
public
(p, α, x) = (2579, 2, 1127), jika diketahui alice mengirim pesan rahasia “Desember
tahun 2015” kepada bob. Alice akan mengengripsi kunci public (2579, 2, 1127) yang
telah diterima oleh bob sebelumnya. Selanjutnya pesan di potong menjadi beberapa
blok dari setiap karakter pesan, dan konversikan dalam bentuk ASCII.
Untuk menyelesaikan permasalahan diatas dapat dijelaskan dengan tabel 2.6 dibawah
ini:
Tabel 2.7 Blok Cipher Algoritma ElGamal dalam bentuk ASCII
i
Karakter Plaintext (Mi) ASCII
1
D
68
2
e
101
3
s
115
4
e
101
5
m
109
6
b
98
7
e
101
8
r
114
9
spasi
32
10
t
116
11
a
97
12
h
104
13
u
117
14
n
110
15
spasi
32
16
2
50
17
0
48
18
1
49
19
5
53
Berdasarkan tabel 2.6 diatas diperoleh banyak karakter pada pesan tersebut
Proses
selanjutnya
yaitu
menentukan
bilangan
acak
Kemudian dihitung
,
.
rahasia
dan
. Dapat dijelaskan pada tabel 2.7
dibawah ini:
Tabel 2.8 Pembentukan ciphertext algoritma ElGamal
i
Karakter
1
D
68
2341
798
1955
2
e
101
2329
1192
2318
3
s
115
1127
2264
2179
4
e
101
1303
1669
407
5
m
109
859
2050
187
6
b
98
662
2569
115
7
e
101
863
1852
1840
8
r
114
202
1177
1832
9
spasi
32
377
1127
2240
10
t
116
1259
2373
1681
11
a
97
13
455
95
12
h
104
681
227
799
13
u
117
587
1694
2206
14
n
110
315
99
2156
15
spasi
32
213
1710
724
16
2
50
2383
1019
2045
17
0
48
545
1891
111
18
1
49
545
1891
1924
19
5
53
450
739
868
Berdasarkan tabel diatas diperoleh ciphertext
sebagai berikut:
(798, 1955)
(1177, 1832)
(1710, 724)
(1192, 2318)
(1127, 2240)
(1019, 2045)
(2264, 2179)
(2373, 1681)
(1891, 111)
(1669, 407)
(455, 95)
(1891, 1924)
(2050, 187)
(227, 799)
(739, 868)
(2569, 115)
(1694, 2206)
(1852, 1840)
(99, 2156)
Selanjutnya Alice sending chiper message to Bob,
Salah satu kelebihan dari Algoritma ElGamal merupakan bahwa sebuah ciphertext
akan di enkripsi menjadi ciphertext yang berbeda. Permasalahan ini terjadi karena
pemilihan bilangan acak k. Namun meskipun demikian, ciphertext yang diperoleh
berbeda, tetapi proses enkripsi dan dekripsi akan diperoleh plaintext yang sama,
seperti akan dijelaskan pada tahap dekripsi Algoritma ElGamal.
2.5.4
Dekripsi Algoritma ElGamal
Proses dekripsi dari algoritma ElGamal dapat dijelaskan secara ringkas dalam gambar
2.14 dibawah ini:
Gambar 2.14 Proses Dekripsi ElGamal ( Stalling W., 5th, pg. 305, 2011)
Langkah dekripsi algoritma ElGamal adalah sebagai berikut:
: Ciphertext ( , ) γ δ i i , i n =1, 2,..., , kunci publik p dan kunci rahasia
Input
a.
: Pesan asli. (plaintext)
Output
Langkah dekripsi algoritma ElGamal adalah sebagai berikut:
1. Untuk i dari 1 sampai dengan n kerjakan
1.1 Hitung
1.2 Hitung
2. Diperoleh plaintext
3. Konversikan masing-masing bilangan
kedalam karakter
sesuai dengan kode ASCII
Contoh : pada contoh kasus dalam algoritma Enkripsi bahwa Alice telah mengirimkan
ciphertext kepada Bob, Ciphertextnya yang diperoleh adalah:
(798, 1955)
(1177, 1832)
(1710, 724)
(1192, 2318)
(1127, 2240)
(1019, 2045)
(2264, 2179)
(2373, 1681)
(1891, 111)
(1669, 407)
(455, 95)
(1891, 1924)
(2050, 187)
(227, 799)
(2569, 115)
(1694, 2206)
(1852, 1840)
(99, 2156)
(739, 868)
Bob mempunyai kunci public p = 2579 dan kunci rahasia, 765. Selanjutnya maka
dilakukan perhitungan pada tabel 2.7 sebagai berikut:
Tabel 2.8 Dekripsi pengembalian ciphertext ke dalam bentuk plaintext algoritma
ElGamal
i
1
798
1955
314
68
D
2
1192
2318
2392
101
e
3
2264
2179
767
115
s
4
1669
407
165
101
e
5
2050
187
2552
109
m
6
2569
115
2535
98
b
7
1852
1840
1852
101
e
8
1177
1832
352
114
r
9
1127
2240
1879
32
spasi
10
2373
1681
1051
116
t
11
455
95
734
97
a
12
227
799
1472
104
h
13
1694
2206
55
117
u
14
99
2156
79
110
n
15
1710
724
456
32
spasi
16
1019
2045
62
50
2
17
1891
111
2792
48
0
18
1891
1924
2192
49
1
19
739
868
215
53
5
Dari tabel diatas maka pesan dalam blok maka digabungkan maka pesan akan menjadi
semula yaitu “Desember Tahun 2015”.
TINJAUAN PUSTAKA
3.1.
Latar Belakang
3.1.1. Pengertian Kriptografi
Kriptografi berasal dari kata kripto dan grafi. Kripto berarti menyembunyikan, dan
grafi yaitu ilmu. Kriptografi (cryptography) adalah suatu ilmu yang mempelajari suatu
sistem penyandian untuk menjamin kerahasiaan dan keamanan data. Orang yang
melakukan disebut Criptographer. Kriptografi merupakan ilmu yang mempelajari
teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti
kerahasiaan data, keabsahan data, dan integritas data serta autentifikasi data (Menezes,
1996)
Sisem kriptografi klasik umumnya menggunakan metode subtitusi atau transposisi
dan telah digunakan jauh sebelum komputer ditemukan. Terdapat beberapa komponen
utama dalam sistem kriptografi yaitu:
Secara umum, istilah kriptografi yang sering digunakan adalah (Munir, 2006):
1. Pesan
Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya,
pesan sering juga disebut dengan plaintext atau teks jelas (cleartext). Plaintext
merupakan suatu pesan bermakna yang akan diproses menggunakan algoritma
kriptografi.
2. Ciphertext
Cipertext atau di sebut dengan cryptosystem merupakan pesan yang telah
tersandi. Pesan dalam bentuk ciphertext tidak dapat dibaca karena berisi
karakter-karekter yang tidak memiliki makna setelah melalui proses enkripsi.
3. Enkripsi
Enkripsi merupakan proses penyandian plaintext menjadi ciphertext atau
disebut sebagai enciphering. Enkripsi dilakukan dengan tujuan agar plaintext
tersebut tidak dapat dibaca oleh pihak yang tidak memiliki otoritas
(wewenang).
4. Dekripsi
Dekripsi merupakan proses pengembalian ciphertext menjadi plaintext semula
atau di sebut deciphering. Dekripsi dilakukan ketika pesan telah sampai
kepada pihak yang dituju.
5. Kunci (key).
Kunci (key) adalah parameter yang digunakan untuk transformasi enkripsi dan
dekripsi. Kunci dapat juga berupa string atau deretan bilangan. Keamanan
suatu algoritma kriptografi biasanya tergantug kepada kerahasiaan penyebaran
key.
6. Kriptosistem (cryptosystem)
Cryptosystem adalah perangkat keras atau implementasi perangkat lunak
kriptografi yang diperlukan atau mentranformasi sebuah pesan asli menjadi
ciphertext atau juga sebaliknya.
3.1.2. Jenis Kriptografi
Menurut (Munir, 2006) terdapat dua jenis algoritma kriptografi berdasarkan jenis
kunci yang digunakan, yaitu:
1. Algoritma Kriptografi Simetri (Konvensional) / Symetric Cryptosystem
2. Algoritma Kriptografi Asimetri (Kunci Publik) / Assymetric Cryptosystem
1. Kriptografi Simetri / Symetric Cryptosystem
Konsep dasar dari kriptografi simetri adalah kunci yang digunakan untuk enkripsi
merupakan kunci yang sama dengan kunci untuk dekripsi. Istilah lain untuk
kriptografi simetri adalah kriptografi kunci privat (private-key cryptography).
Kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional
(conventional cryptography). Dapat juga di katakan sebagai proses enkripsi dan
dekripsi yang kuncinya harus dirahasiakan. Dan contoh disini yang diambil adalah
DES (Data Encrpytion Standart), Blowfish, IDEA. Dua kategori yang termasuk
algoritma simetri adalah algoritma blok cipher dan stream cipher . Proses enkripsi
dan dekripsi dapat dilihat pada gambar 2.1 dibawah ini:
Gambar 2.1 Proses enkripsi dan dekripsi Simetric Cryptosystem
a. Block Cipher
Algoritma block cipher adalah algoritma yang masukan dan keluarannya
berupa satu block, dan setiap blocknya terdiri dari banyak bit. Beberapa mode
operasi enkripsi block cipher.
1. Data Encryption Standard (DES)
2. AES (Advanced Encryption Standard)
3. Blowfish
b. Stream Cipher
Stream cipher (cipher aliran) adalah cipher yang berasal dari hasil XOR antara
bit plaintext dengan setip bit kuncinya. Stream cipher sangat rawan terhadap
attack dan pembalikan kunci. Beberapa model algoritma stream cipher adalah
antara lain:
1. One Time Pad (OTP)
2. Rivest Code 4 (RC4)
Kelebihan algoritma simetri adalah:
a. Proses enkripsi dekripsi kriptografi simetri membutuhkan waktu yang relatif
singkat.
b. Ukuran kunci yang relatif pendek.
c. Otentifikasi pengiriman pesan langsung diketahui dari ciphertext yang diterima
karena kunci hanya diketahui oleh penerima dan pengirim saja.
Kekurangan kriptografi simetri adalah:
a. Kunci simetri harus dikirim melalui saluran komunikasi yang aman dan kedua
entitas yang berkomunikasi harus menjaga kerahasiaan kunci.
b. Kunci harus sering diubah, setiap kali melaksanakan komunikasi.
2. Kriptografi Asimetri / Symetric Cryptosystem
Konsep dasar kriptografi asimetri sering juga disebut dengan algoritma kunci publik
(plaintext key), dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan
dekripsi berbeda. Pada algoritma simetri kunci dibagi dua bagian, yaitu:
1. Kunci umum (public key): kunci yang boleh dikataui oleh semua orang / kunci
dipublikasikan.
2. Kunci rahasia (private key): kunci yang dirahasiakan / hanya diketui oleh
pengirim dan penerima pesan saja.
Kunci-kunci tersebut berhubungan satu dengan yang lain. Dengan kunci
plaintext orang dapat mengenkripsi pesan tapi tidak bisa mendekripsikannya. Hanya
orang yang memiliki kunci rahasia yang dapat di dekripsi pesan tersebut. Algoritma
asimetri dapat mengirim pesan dengan lebih aman dari algoritma simetri.
Dalam kriptografi asimetris digunakan dua buah kunci yang berbeda dalam
proses enkripsi dan dekripsi lagi. Salah satu disebut kunci publik (plaintext key) dapat
dipublikasikan. Sedangkan kunci yang lain disebut kunci privat (private key) yang
harus dirahasiakan. Misalnya bila A mengirim pesan kepada B, A dapat menyandikan
pesannya menggunakan kunci plaintext B, dan bila B ingin membaca pesan tersebut,
maka Si B tersebut perlu mendekripsikan dengan kunci privatnya. Dengan demikian
kedua belah pihak dapat menjamin asal pesan serta keaslian pesan tersebut, karena
adanya mekasnisme ini. Contoh dari sistem ini antara lain RSA Scheme dan Merkie
Hellman Scheme. Proses enkripsi dan dekripsi pada algoritma asimetri dapat dilihat
pada gambar 2.2 dibawah ini:
Gambar 2.2 Proses Enkripsi dan dekripsi Asymetric Cryptosystem
3.1.3. Tujuan Kriptografi
Ditinjau dari tujuan kriptografi sendiri adalah sebagai berikut (Menezes, Oorschot dan
Vanstone, 1996):
1. Kerahasiaan (confidentialy)
Merupakan layanan yang bertujuan untuk mendaga agar pesan tidak dapat
dibaca oleh pihak-pihak yang tidak memiliki otoritas (wewenang). Dalam
kriptografi layanan ini dapat direalisasikan dengan menyandikan pesan
ciphertext. Misalnya kata “majid” dapat disandikan dengan “abcde”. Istilah
lain yang serupa dengan confidentialy adalah secrecy dan privacy.
2. Integritas data (data integrity)
Merupakan layanan yang menjamin bahwa pesan asli masih uth atau belum
dimanipulasi selama proses pengiriman. Dengan kata lain, aspek keamanan ini
dapat diungkap sebagai pertanyaan “ apakah pesan yang diterima masih asli
atau sudah di lakukan modifikasi”.
3. Otentifikasi (autentification)
Merupakan
layanan
mengidentifikasi
autentification
yang
kebenaran
atau
entity
berhubungan
pihak-pihak
dengan
yang
autentification).
Dua
identifikasi,
berkomunikasi
pihak
yang
baik
(user
saling
berkomunikasi harus dapat mengidentifikasi satu sama yang lainnya sehingga
si penerima memastikan sumber pesan.
4. Non-repudiation
Merupakan layanan untuk mencegah entitas yang berkomunikasi melakukan
penyangkalan, yaitu si pengirim pesan menyangkal melakukan pengiriman
atau penerima pesan menyagkal telah menerima pesan sebelumnya.
3.1.4. Serangan Terhadap Kriptografi
Attack (serangan) merupakan suatu usaha yang dilakukan oleh seorang kriptanalis
untuk menemukan kunci atau plaintext ke ciphertext dalam suatu sistem kriptogafi.
Kriptanalis akan berusaha untuk menemukan plaintext dari ciphertext tanpa memiliki
akses kunci yang digunakan dari sistem kriptografi. Berdasarkan teknik yang
digunakan dalam menemukan kunci, serangan dapat dibagi menjadi exahaustive atau
brute force attack dan analytical attack (Fitria, 2007).
Exhaustive atau brute force attack merupakan serangan untuk mendapatkan
plaintext dai ciphertext dengan mencoba satu persatu kombinasi atau kemungkinan
kunci yang digunakan. Dalam hal ini kriptanalis harus tahu jenis algoritma kriptografi
yang digunakan oleh pengirim pesan dan juga memiliki sejumlah plaintext dan
ciphertext.
a.
Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi
atas dua macam, yaitu serangan pasif dan serangan aktif:
1. Serangan aktif
Pada serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi
sistem untuk keuntungan pribadinya. Misalnya penyerang mengubah aliran pesan
seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan
potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang
tersimpan, dan sebagainya.
2. Serangan pasif
Pada proses ini, penyerang tidak terlibat dalam komunikasi antara pengirim dan
penerima pesan, namun penyerang menyadap semua pertukaran pesan antara
kedua entitas tersebut, tujuan utamanya adalah untuk mendapatkan sebanyak
mungkin informasi yang digunakan untuk kriptanalis
2.1.5 Teknik Enkripsi dan Dekripsi
a.
Teknik Subtitusi
Teknik subtitusi akan diganti suatu kode dengan kode yang lain, degan menggunakan
tabel subtitusi. Dapat ditampilkan dalam tabel dibawah ini. Dapat dilihat pada tabel
2.1 dibawah ini:
Tabel 2.1 Teknik subtitusi
A
B
C D E
M A J
I
F G
H I
J
K
L
M N O P
D ! @ # $ % ^ & *
(
)
Q R S
T
U
V W X
S Y 4 B R U L 0
Y
Z
1 2 3
Tabel subtitusi diatas dibuat secara acak, misalkan huruf A akan diganti dengan huruf
M, dan huruf B diganti dengan huruf A begitu seterusnya. Misalkan kata “ENKRIPSI”
akan dienkripsi dengan teknik subtitusi dengan tabel diatas menjadi “D(^4$SBS”.
Untuk memperoleh kata “ENKRIPSI” kembali maka dilakukan pula melihat tabel
subtitusi diatas.
b.
Teknik Blocking
Teknik blocking yaitu membagi pesan plaintext kedalam blok-blok pesan yang
kemudian akan di enkripsi secara independen. Misalkan kalimat “TEKNIK
BLOCKING ENCRYPTION METHODE ” akan dibagi kedalam blok-blok sebagai
berikut. Dapat dilihat pada tabel 2.2 dibawah ini:
Tabel 2.2 Teknik Blocking
T
K
C
space
Y
N
H
E
space
K
E
P
space
O
K
B
I
N
T
M
D
N
L
N
C
I
E
E
I
O
G
R
O
T
space
Selajutnya teknik dapat dienkripsi perblok, misalkan untuk proses pengacakan
sederhana dengan pembacaaan yang terbalik yaitu karena proses penyimpanan pada
blok dilakukan per kolom, maka proses enkripsi akan dilakukan dengan cara menaruh
kalimat “ EDOHTEM NIOTPYRCNE GNIKCOLB KINKET” pada blok-blok pesan
berbaris dan membaca dengan perkolom dan menjadi kalimat “TEKNIK BLOCKING
ENCRYPTION METHODE” kembali. Agar rumit dapat menggunakan kalkulasi
tertentu untuk mengacak susunan blok seperti pada algoritma FEAL dan ElGamal
pada skripsi ini.
b.
Teknik permutasi
Teknik permutasi sering juga disebut transposisi. Teknik ini memindahkan atau
merotasikan karakter dengan aturan tertentu, prinsipnya adalah berlawanan tetap tapi
identitasnya yang diacak. Sebelum dilakukakan permutasi, umumnya plaintetxt
terlebuh dahulu di bagi menjadi blok-blok dengan panjang yang sama. Untuk contoh
diatas, plaintext dibagi menjadi blok terdiri dari 5 karakter, dengan aturan permutasi
pada gambar 2.3. berikut:
Gambar 2.3. Teknik Permutasi
Misalkan kalimat “KUNCI RAHASIA” di enkripsi menjadi “ICNUK
ISAHAR A” dengan cara membaginya kalimat kedalam 5 blok – 5 blok dan
melakukan proses permutasi seperti pada gambar diatas dengan teknik pengacakan.
Proses dekripsi dilakukan serupa dengan membagi kedalam 5 blok pula dan membalik
permutasinya pada gambar. 2.4. dibawah ini:
K
U N C
I
R
A H A
I
C
N U K
I
S
A
S
I
A
H A R
A
Gambar 2.4. Teknik Permutasi
c.
Teknik Ekspansi
Teknik akan menambahkan beberapa byte kata kedalam plaintext dengan aturan
tertentu.
Proses
penambahan
beberapa
byte
kata
ini
diharapkan
dapat
menyembunyikan informasi dapat plaintext. Salah satu contoh penggunaan teknik ini
adalah dengan menukar huruf awal dan akhir kata yang diberi awalan “NI” proses
enkripsi dengan cara ekspansi terhadap plaintext terjadi sebagai pada gambar 2.5.
Berikut ini:
Gambar 2.5. Teknik Ekspansi
Ciphertextnya adalah “EVINGNI EETRCSNI SDROWNI”. Aturan ekspansi dapat
dibuat lebih kompleks dan terkadang teknik ekspansi dapat digabungkan dengan
teknik lainnya.
d.
Teknik Pemampatan (Compaction)
Mengurangi panjang pesan atau jumlah bloknya adalah cara lain untuk
menyembunyikan isi pesan. Misalkan untuk plaintext “SECRET WORDS” setiap kata
ke dua akan dihilangkan dan di sertakan pada akhir kalimat yang sebelumnya diberi
tanda “.”. proses yang terjadi untuk plaintext tersebut adalah pada gambar. 2.6. yaitu:
S
E
S
S
C
R
C
C
E
E
T
E
E
W
R
E
W
E
W
S
.
E
O
R
R
D
S
R
S
T
O
D
Gambar 2.6. Teknik Pemampatan.
Aturan penghilangan karakter dan karakter khusus dan berfungsi sebagai pemisah
menjadi dasar untuk proses dekripsi ciphertext menjadi plaintext kembali.
Dengan menggunakan kelima menjadi teknik kriptografi diatas, dapat
diciptakan teknik kriptografi yang amat banyak walaupun sekilas terlihat sederhanana,
kombinasi teknik dasar kriptografi dapat menghasilkan teknik kriptografi turunan
yang cukup kompleks, dan beberapa teknik dasar kriptografi masih digunakan dalam
kriptografi modern.
2.2 Algoritma Hibrida (Hybrid Algorithm)
Kriptografi hybrid adalah suatu penggabungan antara kriptografi simetris dan
kriptografi asimetris bentuk tulisan rahasia yang memperhatikan keseimbangan dan
menggunakan syarat-syarat tertentu yang telah ditetapkan dan juga tetap pada
kerahasiaan sampai kepada si penerima. Proses ini dimulai dengan negosiasi
menggunakan cipher asimetris dimana kedua belah pihak setuju dengan private
key/session key yang akan dipakai. Kemudian session key diunakan dengan teknik
simetrik untuk mengengkripsi conversation ataupun tukar-menukar data selanjutnya.
Suatu session key hanya dipakai sekali sesi. Untuk sesi selanjutnya session key harus
dapat dibuat kembali.
a. Distribusi key
Dalam pendistribusian suatu dapat dialakukan dengan bermacam cara misalnya
download, diberikan secara langsung dan sebagainya. Untuk mencegah pemalsuan key
oleh pihak ketiga maka diperlukan adanya certificate.
b. Protokol persetujuan key
Atau disebut juga degan protokol pertukaran key adalah suatu sistem dimana dua
pihak bernegosiasi untuk menetukan secret value. Contohnya adalah SSL (Secure
Socket Layer)
Metode hibrida terdiri atas enkripsi simetris dengan satu kunci (session key) dan
ekripsi asimetris dengan sepasang kunci (plaintext/private key).
Lagkah dalam kriptografdi hibrida adalah:
Langkah 1
: Pengirim mengengkripsi teks dengan session key
Langkah 2
: Mengengkripsi dengan session key dengan plaintext key
Langkah 3
: menerima men-decryp session key dengan private key.
Langkah 4
: men-decrypt dengan session Key.
2.2.1
Pretty Good privacy (PGP)
Pretty Good Privacy yang selanjutnya disebut dengan PGP adalah suatu program
komputer yang dikembangkan oleh phil Zimmermann pada pertengahan tahun 1980
yang memungkinkan seseorang untuk saling bertukar pesan melaui email dan juga file
yang memberikan pelindungan kerahasiaan berupa enkripsi dan autentifikasi berupa
digital signature (tandatangan digital). Oleh karena itu PGP memiliki dua tingkatan
kunci yaitu kunci rahasia (private key) / simetri sebagai session key untuk melakukan
enkripsi data dan pasangan kunci private dan kunci plaintext untuk memberikan
digital signature dan sekaligus melindungki kunci simetri. (T. Andri 2013).
Secara garis besar PGP memiliki tiga fitur utama sebagai berikut:
1. Fitur untuk melakukan enkripsi dan menandatangani dokumen.
2. Fitur untuk dekripsi dan untuk verifikasi tandatangan.
3. Fitur untuk mengelola kunci PGP yang dimiliki oleh pengguna.
Setiap orang yang menggunakan PGP harus menerima kunci plaintext terlebih
dahulu, kunci plaintext tersebut didapatkan dengan cara mengirim email kepada rekan
yang akan diajak berkomunikasi dengan memanfaatkan program PGP atau dengan
terhubung secara langsung ke server yang memegang kunci plaintext.
1.
Enkripsi dengan PGP
PGP mengkombinasikan fitur-fitur terbaik yang didapat pada kriptografi konvensional
dengan kriptografi kunci plaintext. PGP merupakan system kriptografi hybrid.
Enkripsi pada PGP menggunakan kriptografi kunci dan juga sistem yang
menggabungkan kunci plaintext tersebut dengan identitas pengguna. Enkripsi pada
PGP mengggunakan kunci asimetri dengan pasangan kunci plaintext dan kunci privat.
Untuk melalukan enkripsi kunci rahasia digunakan pada algoritma chiper simetri.
Yang pada akhirnya kunci akan digunakan melakukan enkripsi plaintext. Hampir
semua kunci kan digunakan untuk kunci publik yang bebas disebarkan di seluruh
dunia. Pada gambar 2.7 seperti digambarkan skema dari enkripsi menggunakan PGP:
Gambar 2.7 Proses enkripsi pada PGP
2.
Dekripsi dengan PGP
Penerima email yang terenkripsi tersebut menggunakan kunci sesi (session key) untuk
melakukan dekripsi terhadap email tersebut. Kunci sesi terdapat pada email yang
terenkripsi tersebut diperoleh dengan cara mendekripsinya dengan kunci private.
Seperti yang dipaparkan pada gambar 2.8 dibawah ini:
Gambar 2.8 Proses dekripsi pada PGP
Strategi yang sama digunakan untuk mendeteksi apakah suatu pesan sudah
mengalami perubahan atau belum dan juga menentukan apakah pesan bersasal dari
pengirim yang sebenarnya. Pengirim emenggunakan enkripsi PGP untuk memberikan
tanda tangan digital (digital signature) pada pesan.
2.3 Lehmann Primary Test (Tes Keprimaan Lehmann)
Menurut Schneier (1996), berikut merupakan pengujian apakah p adalah bilangan
prima:
1. Pilih sebuah bilangan acak a kurang dari p.
2. Hitung
.
3. Jika
, maka
4. Jika
, maka kemungkinan
prima lebih dari 50%.
bukan bilangan prima.
bukan
5. Bila syarat telah terpenuhi maka dilakukan pengujian ulang sebanyak digit
bilangan prima yang diambil. Jika pada pengujian terakhir
, maka bilangan tersebut pasti bilangan prima.
atau
Demikian sehingga, kemungkinan acak sebagai witness pada bilangan
sebagai
bilangan tidak prima. Ulangi pengujian t kali. Jika perhitungan menghasilkan 1 atau 1, tetapi tidak selalu menghasilkan 1, maka tingkat kesalahan kemungkinan p sebagai
prima dengan
.
Contoh 1: Penulis ingin mengetahui apakah 17 adalah bilangan prima
a
2
p
Sesuai dengan ketentuan diatas dapat diambil kesimpulan bahwa
merupakan
bilangan prima
Contoh 2: Penulis ingin mengetahui apakah
a
adalah bilangan prima
3
p
Untuk hasil diatas tidak sesui dengan ketentuan pada point 2 dan 3 diatas maka
dilakukan pengujian sekali lagi dengan mengganti nilai a.
a
p
2
Jika pengujian telah dilakukan sebanyak 2 kali dengan mengganti nilai a, namun
hasilnya tidak sesuai dengan point 2 dan 3 diatas, maka dipastikan bilangan 27 bukan
merupakan bilangan prima.
Contoh 3: Penulis ingin mengetahui apakah
a
adalah bilangan prima
2
p
Sesuai dengan ketentuan point 2 dan 3 diatas dapat diambil kesimpulan bahwa 103
merupakan bilangan prima
2.4 Algoritma FEAL (Fast Data Encipherment Agorithm)
FEAL merupakan singkatan dari (Fast Data Encipherment Agorithm). FEAL
merupakan enkripsi tipe simetris block ciphers. Algoritma ini dibuat dengan tujuan
sebagai alternatif dari Data Encryption Standart (DES) dan di desain agar dapat
beroperasi dengan lebih cepat pada perangkat lunak. FEAL termasuk kedalam
keluarga algoritma yang memainkan peranan penting ke dalam perkembangan dan
perbaikan dari berbagai macam teknik kriptanalis. Termasuk kriptanalis linear dan
diferensial. Sama halnya seperti DES, FEAL berbasis algoritma Fiestel. FEAL
pertama kali di publikasikan pada tahun 1987 oleh akhiro shmizu dan Shozi
Miyaguchi dari NTT. Cipher ini rentan terhadap berbagai bentuk kriptanalis, dan telah
berperan penting sebagai katalis pada pertemuan kriptanalis diferensial dan linear.
(Livia. 2010)
Terdapat sejumlah revisi yang berbeda dari FEAL, meskipun semuanya
merupakan cipher Fiestel, dan menggunakan dasar putaran kunci yang sama dan
beroperasi pada blok 64-bit. FEAL-N memetakan bit blok plaintext dengan
menggunakan 64-bit kunci rahasia. Sama halnya dengan DES, FEAL menggunakan N
putaran cipher Feistel, namun dengan fungsi-f jauh lebih yang sederhana, dan di
jumlahkan dengan state awal dan akhir yang melakukan XOR sebagian dari kedua
data seperti melakukan subkey langsung dengan sebagian data.
FEAL mempunyai panjang blok 64 bit, dibagi menjadi 32 + 32 blok, dan
memiliki iterasi sebanyak 8 ronde seperti pada gambar. 2.9 dibawah ini:
ciphertext
Gambar 2.9 Diagram Alir Algoritma FEAL (Semuil dan Wijaya, 2009)
2.4.1 Sejarah dan penjelasan Algoritma FEAL
Untuk proses enkripsi, pertama kali program akan memerkas terlebih dahulu ada atau
tidaknya teks pada kotak plaintext sebagi text input proses enkripsi, jika teks belum
dimasukkan maka akan ditampilkan pesan peringatan dan program akan dihentikan.
Jika teks sudah dimasukkan maka akan dilakukan pengecekan karakter pada teks
masukan tersebut untuk validasi data. Pada fungsi enkrip, kemudian akan di cek
jumkah karakter dari plaintextnya. Jika plaintext bukan kelipatan dari blok yang
panjangnya 64 bit, maka akan ditambahakan angka “0” sebanyak jumlah karakter
yang perlu ditambahkan agar jumlahnya merupakan kelipatan 64 bit dikurangi satu,
dan karakter terakhir ditambahkan adalah nilai dari banyaknya karakter ditambahkan.
Berikut akan dijelaskan salah satu algoritma FEAL-N, yaitu FEAL-8,
a. Terdapat fungsi f f(A,Y) yang memetakan pasangan masukan 32 x 16 bit
menjadi keluaran 32 bit.
b. Pada fungsi f tersebut terdapat dua byte-oriented data subtitusi S0 dan S1 yang
masing-masing digunakan dua kali.
c. Masing-masing data subtitusi tersebut akan memetakan sepasang masukan 8bit menjadi 8-bit keluaran.
d. S0 dan S1 menambahkan 1 bit d e (0,1) menjadi 8-bit argumen x dan y,
dengan mengabaikan carry teratas, kemudian hasilnya di geser ke kiri
sebanyak 2-bit (ROT2)
S (x, y) = ROT 2(x + y + mod 256)
e. Terdapat pula fungsi key schedule fK( A, B) yang sama seperti fungsi f, fungsi
ini memetakan dua 32-bit input menjadi keluaran 32-bit.
f. Pada tabel 2.3 dibawah ini, Ai, Bi, Yi, ti, dan Ui adalah variable berukuran 8-bit
Tabel 2.3 Sistem Kriptografi Algoritma FEAL
t1
t2
U←f A,Y
U←fK A, B
(Ao⊕A1) ⊕Y0
Ao⊕A1
(A2⊕A3) ⊕Y1
A2⊕A3
U1
S1(t1, t2)
S1(t1, t2⊕B0)
U2
S0(t2, U1)
S0(t2, U1⊕B1)
U0
S0(A0, U1)
S0(A0, U1⊕B2)
U3
S1(A3, U2)
S1(A3, U2⊕B3)
2.4.2 Langkah Enkripsi Algoritma FEAL
Adapun langkah enkripsi pada algoritma FEAL adalah sebagai berikut:
1. Algoritma
ini
menerima
input
berupa
64-bit
plaintext
dan 64-bit kunci
2. Jika inputan 64-bit plaintext maka keluarannya adalah 64-bit blok ciphertext
C= C1, C2, C3, ..., C64
3. Dengan fungsi key schedule yang dijelaskan dibawah, maka ubah 16-bit
subkey menjadi K1 dan K
4. Defenisikan ML = M1, M2, M3, ... M32, dan MR = M33, M34, M35, ...,M64
5. Lakukan XOR initial subkey:
(L0, R0)←(ML, MR) ⊕ ((K8, K9),(K10, K11)).
6. R0 ←R0⊕L0.
7. Untuk i = 1 hingga i = 8, lakukan:
Li ←Ri-1
Ri ←Li-1 ⊕f(Ri-1, Ki-1)
Gunakan Table 1 untuk f(A, Y) dengan
A = Ri-1= (A0, A1, A2, A3) dan
Y = Ki-1= (Y0, Y1)
8. Ls ← Ls⊕Rs
9. Lakukan XOR final subkey
10. C ←(Rs, Ls)
(Rs,Ls) ←(Rs,Ls) ⊕((K12,K13),(K14,K15))
Algoritma dari proses pembangkit kunci adalah:
1. Pilih dua bilangan prima yang berbeda (p dan q)
2. Hitung
3. Hitung
4. Pilih sebua integer e dengan batas
Dan memenuhi syarat:
Dengan menggunakan algoritma extended euclian dapat diperoleh nilai d,
dengan batas
dan memenuhi syarat:
ed ≡ 1 (mod Ө)
5. Diperoleh kunci public (e, n) dan kunci private (d, n)
6. Untuk memperoleh nilai signature digunakan persamaan:
S = Hd mod n,
Nilai H diambil dari nilai validasi
7. Dan untuk verifikasi digunakan persamaan
V = s e mod n
Contoh Enkripsi 1:
Diketahui public key: (2203, 5959)
Private key
: (2667, 5959)
Nilai signature
: 3784
Ciphertext:
2.4.3 Proses Validasi (Key Schedule) Algoritma FEAL
Untuk proses validasi digunakan CRC cek. Pada CRC cek, pertama kali dilakukan
inisialisasi tabel kemudian iCRC diatur sehingga semua bit-nya bernilai satu. Tabel
CRC terdiri dai 256 buah nilai yang tiap nilainya mewakili satu karakter. Nilai ini
dibuat secara acak, yang masing-masing memiliki panjang 64 bit. Setiap karakter nilai
ini dibuat secara acak, yang masing-masing memiliki panjang 64 bit.
Fungsi key schedule:
1. Fungsi ini menerima masukan 64-bit kunci
K = k1 … k64.
2. Sedangkan keluarannya adalah 256-bit extended key (16-bit subkey Ki, 0 ≤ i ≤
15).
3. Inisialisasi:
U (-2) ← 0, U (-1) ← k1 … k32, U(0) ← k33 … k64.
U ≝(U0, U1, U2, U3) untuk 8-bit Ui.
4. Hitung K0, ..., K15 untuk i = 1 hingga i = 8:
a. U ←fK(U(i-2), U(i-1), U(i-3))
fK didefinisikan pada Tabel 1, dengan A dan
B menunjukkan 4-byte vector (A0, A1, A2, A3), (B0, B1, B2, B3)
b.
K2i-2 = (U0, U1)
K2i-1 = (U2, U3)
U(i) ←U.
2.4.4 Proses Dekripsi algoritma FEAL
Proses dekripsi FEAL sama dengan proses enkripsi, hanya pada proses dekripsi input
yang digunakan berupa ciphertext dan proses kerja kebalikan dari proses enkripsi.
Pada proses dekripsi urutan kunci yang digunakan merupaan kebalikan dari urutan
kunci yang digunakan pada proses enkripsinya. Untuk mendekripsi ciphertext kembali
menjadi plaintext, digunakan cara yang sama dengan sewaktu mengenkripsi plaintext
menjadi ciphertext, yaitu dengan menggunakan kunci K yang sama dan ciphertext C =
(RS, LS) yang menggantikan masukan plaintext. Namun fungsi key schedule
digunakan secara terbalik.
Untuk lebih spesifik, berikut ini adalah urutan key schedule pada saat melakukan
dekripsi:
1. Subkey ((K12, K13),(K14,K15)) digunakan untuk XOR initial subkey
2. Sedangkan subkey ((K8,K9),(K10,K11)) digunakan untuk XOR final subkey.
3. Dan putaran kunci digunakan dari i=8 hingga i=1 (tahap 7)
Contoh Dekripsi 1:
Diketahui kunci yang digunakan
: elektro
Nilai signature yang dimasukkan
:
Public key
: (2203, 5959)
Signature
: 3784
Plaintext:
2.5 Algoritma ElGamal
Algoritma ElGamal merupakan algoritma kriptografi asimetris. Pertama kali
dipublikasikan oleh Taher ElGamal pada tahun 1985. (Sadikin R. 2011)
Seperti RSA (Rivest Shamir Adleman), algoritma ElGamal terdiri dari tiga proses,
yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi. Algoritma ini
merupakan cipher blok, yaitu melakukan proses enkripsi pada blok-blok palintext dan
menghasilkan blok-blok ciphertext yang kemudian dilakukan proses enkripsi, dan
hasilnya digabungkan kembali menjadi pesan yang utuh dan bisa dimengerti. Untuk
membentuk sistem kriptografi ElGamal, dibutuhkan bilangan prima p. Untuk
algoritma ElGamal maka secara secara umum dapat dijelaskan pada gambar dibawah
ini, merupakan pseudo code ElGamal proses pembentukan kunci, enkripsi dan
dekripsi ElGamal, (Sadikin R. 2011)
Pseudo code algoritma ElGamal (Ghazi M, 2010):
1. Pilih P dimana P adalah bilangan prima
2. Pilih a dimana a adalah primitive root P dan a < p
3. Pilih sembarang bilangan Xa , dimana Xa < Q - 1
4. Hitung Ya, dimana Ya = a Xa mod Q
5. Plaintext key = { P, a, Ya}
6. Private key = {Xa}
7. Plaintext M < Q
8. Pilih sembarang bilangan K0 dimana K0 < Q
9. Hitung K1 dimana K1 = Yak mod Q
10.
Hitung C1 = ak0 mod Q
11.
Hitung C2 = K1 * M mod Q
12.
Cipher = (C1, C2)
13.
Dekripsi : cipher = (C1, C2)
Gambar
2.10
Sistem Kriptografi
prosesK1
pembentukan
kunci,Qenkripsi dan dekripsi
14.
Hitung
K1 dimana
= C1 Xa mod
-1
15.
Plaintext M = (C2K1 ) mod Q
ElGamal
2.5.1
Landasan perhitungan Matematika Algoritma ElGamal
Dalam memahami dan mempelajari sebuah kriptografi, ada baiknya terlebih dahulu
memahami konsep-konsep dasar dalam perhitungan matematis yang digunakan dalam
suatu algoritma kriptografi tersebut.
2.5.1.1 Modulo Eksponesial (menghitung modulo / sisa hasil pembagian)
Modulo eksponensial sering dipakai dalam bidang kriptografi dalam menghitung hasil
dari enkripsi maupun dekripsi. Permaslahan pada operasi modulo adalah bagaimana
dengan
mengitung
yang sangat besar. Terdapat beberapa cara untuk
menghitung modulo eksponensial, antara lain adalah dengan cara iteratif.
Function mod exp (x, y, n)
{
z =1
For (i=1; i≤y; i++){
z = x * z mod n
Return z
}
Contoh : Tentukan hasil dari
dengan cara iterasi!
Diketahui nilai x = 2, y = 5 dan n = 60
z= 1
i= 1
z = 4 * 1 mod 60 = 4
i= 2
z = 4 * 2 mod 60 = 8
i= 3
z = 4 * 4 mod 60 = 16
i= 4
z = 4 * 8 mod 60 = 32
i= 5
z = 4 * 16 mod 60 = 4
adalah 4
Maka hasil dari
Hasil kalkulator
2.5.1.2 Algoritma Euclidean
Algoritma Euclidean merupakan algoritma yang digunakan untuk mencari Faktor
Persekutuan Terbesar (Great Common Divisor) dari dua bilangan bulat. Algoritma ini
berdasarkan pernyataan bahwa ada dua bilangan bulat yang positif yaitu
dimana
dan
. Tahap perhitungan algoritma ini adalah sebagai berikut:
1. Jika
lanjutkan kelangkah selanjutnya (langkah nomor 2)
Jika tidak
2. Bagilah
3. Ganti nilai
dengan
dan misalkan sisanya adalah
dengan nilai
(langkah nomor 1)
dengan nilai , lalu ulang kembali ke langkah awal
Contoh 1: Tentukan GCD dari 312 dan 720
720 mod 312 = 96
312 mod 96 = 24
96 mod 24 = 0
Jadi GCD dari (312, 720) adalah 96
Contoh 2: Tentukan GCD dari 64 dan 93
93 mod 64 = 29
64 mod 29 = 6
29 mod 6 = 5
6 mod 5 = 1
5 mod 1 = 0
Jadi GCD dari (64, 93) = 1. Apabila GCD dari
maka
disebut
relatif prima
2.5.1.3 Inversi Modulo
Jika a dan n relatif prima dan
Inversi dari
, maka inversi dari a mod n dapat ditemukan.
, disebut juga sebagai inversi perkalian, dimana bilangan
demikian sehingga:
Pembuktian dari persamaan diatas dapat dilihat dari defenisi relatif prima diketahu
bahwa
Contoh 1: tentukan inversi dari 7 mod 17, dapat dijelaskan dalam tabel 2.4 berikut ini:
Tabel 2.4 Inversi Modulo dari 7 mod 17
Dari tabel diatas iterasi berhenti ketika
dan diperoleh hasil
Contoh 2: Tentukan inversi dari 25 mod 31,
Tabel 2.5 Inversi Modulo dari 25 mod 31
Dari tabel diatas iterasi berhenti ketika
dan diperoleh hasil
2.5.1.4 Bilangan Prima Aman
Input
: Bilangan prima
Output
: Pernyataan “bilangan prima aman” atau”bukan bilangan prima aman”
Langkah-Langkah:
1. Hitung prima
2. Jika q adalah bilangan prima, maka output “bilangan prima aman”
3. Jika q komposit, maka output “bukan bilangan prima aman”
Contoh 1: Tentukan bilangan p = 2579 adalah bilangan prima!
Dengan melakukan tes keprimaan diatas , diperoleh bahwa 1289 merupakan bilangan
prima. Jadi dapat disimpulkan bahwa 1289 merupakan bilangan prima aman.
2.5.1.5 Elemen primitive
Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitive
yang merupakan elemen pembangun dari Zp. Untuk mencari dan menentukan elemen
, dimana
ini digunakan
dan
merupakan bilangan prima. Jika elemen
, maka
merupakan elemen primitive (Jeffrey dkk,
2008).
Dalam Gambar Gambar 2.11 dibawah ini akan dijelaskan elemen primitive dari
algoritma ElGamal
Gambar 2.11 Elemen primitive algoritma ElGamal ( Stalling W., 5th, pg. 305, 2011)
Tahap menentukan suatu bilangan merupakan elemen primitive atau tidak dapat
dilihat dari beberapa poin dibwah ini:
1. Input bilangan prima aman
.
2. Hitung
3. Hitung
dan
.
4. Jika
5. Jika
6. Jika tidak terpenuhi dua persyaratan diatas maka
primitive
merupakan elemen
Contoh 1: Misalkan
pada point 2.5.1.4 diatas merupakn bilangan prima
= 1289. Untuk
aman. Maka dapat ditentukan bilangan prima
menunjukkan bahwa suatu bilangan bulat a merupakan elemen primitive Z2579*,
harus ditunjukkan bahwa
.
Dari tabel 2.5 dibawah ini dapat ditunjukkan untuk perhitungan
yaitu sebagai
berikut:
Tabel 2.5 Perhitungan bilangan prima aman algoritma ElGamal
2578
4
9
16
25
36
49
64
2578
1
1
1
2578
1
2578
Dalam algoritma ElGamal menggunakan bilangan bulat dalam proses
perhitungannya, maka pesan harus di konversi kedalam bilangan bulat. Untuk
mengubah pesan menjadi bilangan bulat, digunakan kode ASCII (American Standart
for Information Interchange). Kode ASCII merupakan represntasi Numerik dari
karakter masing-masing yang digunakan pada komputer, serta mempunyai nilai
minimal 0 sampai 255. Oleh karena itu, berdasarkan sistem kriptografi ElGamal diatas
harus digunakan bilangan yang lebih besar dari 255. Karakter dalam ASCII
berkorespondesnsi 1-1 dengan karakter pesan.
2.5.2
Prinsip Kerja Algoritma ElGamal
2.5.2.1 Algoritma Pembangkitan Kunci ElGamal
Dalam gambar 2.12 dibawah ini akan dijelaskan bagaimana gambaran Pembangkian
Kunci Algoritma ElGamal,
Gambar 2.12 Pembangkitan kunci algoritma ElGamal ( Stalling W., 5th, pg. 305,
2011)
1. Pilih sembarang bilang prima p (sebaiknya nilai bilangan prima lebih besar
dari 255). Misalkan 271
2. Ambil bilangan α sebagai primitive mod p
Misalkan α = 107
3. Ambil bilangan acak α dengan syarat α berada pada rentang
.
Misalkan 96
4. Hitung berapa
Maka hasil perhitungan didapat
a. Kunci public (p, α, x) = (271, 107, 39)
b. Kunci private (p,a) = (271, 96)
Contoh: Diketahui bilangan prima aman yaitu p = 2579, elemen primitive a = 2. Dan
dipilih a = 765 dan dihitung
Jadi diperoleh kunci public
dan kunci private
.
Kunci public diberikan Alice kepada Bob. Sedangkan kunci private tetap di
rahasiakan oleh alice dan tidak di publikasikan.
2.5.3
Enkripsi Algoritma ElGamal
Proses enkripsi dari algoritma ElGamal dapat dijelaskan secara ringkas dalam gambar
2.13 dibawah ini:
Gambar 2.13 Proses Enkripsi ElGamal ( Stalling W., 5th, pg. 305, 2011)
Input : Pesan yang akan di enkripsi dan kunci public (p, α, x)
Output : Ciphertext (1, 2, .... n)
Langkah enkripsi algoritma ElGamal adalah sebagai berikut:
1. Sebelum melakukan enkripsi harus menerima kunci public (p, α, x)
2. Pesan di potong-potong (blok) kedalam bentuk blok-blok dengan setiap blok
adalah karakter suatu pesan.
3. Konversikan masing-masing karakter tersebut kedalam kode ASCII, maka
diperoleh plaintext sebanyak n, bilangan, yaitu
4. Diperoleh ciphertext yaitu (C 1 = ak mod q; C 2 = KM mod q)
Contoh 1: Tentukan output dari “Desember tahun 2015”, dengan diketahui kunci
public
(p, α, x) = (2579, 2, 1127), jika diketahui alice mengirim pesan rahasia “Desember
tahun 2015” kepada bob. Alice akan mengengripsi kunci public (2579, 2, 1127) yang
telah diterima oleh bob sebelumnya. Selanjutnya pesan di potong menjadi beberapa
blok dari setiap karakter pesan, dan konversikan dalam bentuk ASCII.
Untuk menyelesaikan permasalahan diatas dapat dijelaskan dengan tabel 2.6 dibawah
ini:
Tabel 2.7 Blok Cipher Algoritma ElGamal dalam bentuk ASCII
i
Karakter Plaintext (Mi) ASCII
1
D
68
2
e
101
3
s
115
4
e
101
5
m
109
6
b
98
7
e
101
8
r
114
9
spasi
32
10
t
116
11
a
97
12
h
104
13
u
117
14
n
110
15
spasi
32
16
2
50
17
0
48
18
1
49
19
5
53
Berdasarkan tabel 2.6 diatas diperoleh banyak karakter pada pesan tersebut
Proses
selanjutnya
yaitu
menentukan
bilangan
acak
Kemudian dihitung
,
.
rahasia
dan
. Dapat dijelaskan pada tabel 2.7
dibawah ini:
Tabel 2.8 Pembentukan ciphertext algoritma ElGamal
i
Karakter
1
D
68
2341
798
1955
2
e
101
2329
1192
2318
3
s
115
1127
2264
2179
4
e
101
1303
1669
407
5
m
109
859
2050
187
6
b
98
662
2569
115
7
e
101
863
1852
1840
8
r
114
202
1177
1832
9
spasi
32
377
1127
2240
10
t
116
1259
2373
1681
11
a
97
13
455
95
12
h
104
681
227
799
13
u
117
587
1694
2206
14
n
110
315
99
2156
15
spasi
32
213
1710
724
16
2
50
2383
1019
2045
17
0
48
545
1891
111
18
1
49
545
1891
1924
19
5
53
450
739
868
Berdasarkan tabel diatas diperoleh ciphertext
sebagai berikut:
(798, 1955)
(1177, 1832)
(1710, 724)
(1192, 2318)
(1127, 2240)
(1019, 2045)
(2264, 2179)
(2373, 1681)
(1891, 111)
(1669, 407)
(455, 95)
(1891, 1924)
(2050, 187)
(227, 799)
(739, 868)
(2569, 115)
(1694, 2206)
(1852, 1840)
(99, 2156)
Selanjutnya Alice sending chiper message to Bob,
Salah satu kelebihan dari Algoritma ElGamal merupakan bahwa sebuah ciphertext
akan di enkripsi menjadi ciphertext yang berbeda. Permasalahan ini terjadi karena
pemilihan bilangan acak k. Namun meskipun demikian, ciphertext yang diperoleh
berbeda, tetapi proses enkripsi dan dekripsi akan diperoleh plaintext yang sama,
seperti akan dijelaskan pada tahap dekripsi Algoritma ElGamal.
2.5.4
Dekripsi Algoritma ElGamal
Proses dekripsi dari algoritma ElGamal dapat dijelaskan secara ringkas dalam gambar
2.14 dibawah ini:
Gambar 2.14 Proses Dekripsi ElGamal ( Stalling W., 5th, pg. 305, 2011)
Langkah dekripsi algoritma ElGamal adalah sebagai berikut:
: Ciphertext ( , ) γ δ i i , i n =1, 2,..., , kunci publik p dan kunci rahasia
Input
a.
: Pesan asli. (plaintext)
Output
Langkah dekripsi algoritma ElGamal adalah sebagai berikut:
1. Untuk i dari 1 sampai dengan n kerjakan
1.1 Hitung
1.2 Hitung
2. Diperoleh plaintext
3. Konversikan masing-masing bilangan
kedalam karakter
sesuai dengan kode ASCII
Contoh : pada contoh kasus dalam algoritma Enkripsi bahwa Alice telah mengirimkan
ciphertext kepada Bob, Ciphertextnya yang diperoleh adalah:
(798, 1955)
(1177, 1832)
(1710, 724)
(1192, 2318)
(1127, 2240)
(1019, 2045)
(2264, 2179)
(2373, 1681)
(1891, 111)
(1669, 407)
(455, 95)
(1891, 1924)
(2050, 187)
(227, 799)
(2569, 115)
(1694, 2206)
(1852, 1840)
(99, 2156)
(739, 868)
Bob mempunyai kunci public p = 2579 dan kunci rahasia, 765. Selanjutnya maka
dilakukan perhitungan pada tabel 2.7 sebagai berikut:
Tabel 2.8 Dekripsi pengembalian ciphertext ke dalam bentuk plaintext algoritma
ElGamal
i
1
798
1955
314
68
D
2
1192
2318
2392
101
e
3
2264
2179
767
115
s
4
1669
407
165
101
e
5
2050
187
2552
109
m
6
2569
115
2535
98
b
7
1852
1840
1852
101
e
8
1177
1832
352
114
r
9
1127
2240
1879
32
spasi
10
2373
1681
1051
116
t
11
455
95
734
97
a
12
227
799
1472
104
h
13
1694
2206
55
117
u
14
99
2156
79
110
n
15
1710
724
456
32
spasi
16
1019
2045
62
50
2
17
1891
111
2792
48
0
18
1891
1924
2192
49
1
19
739
868
215
53
5
Dari tabel diatas maka pesan dalam blok maka digabungkan maka pesan akan menjadi
semula yaitu “Desember Tahun 2015”.