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”.