Anda di halaman 1dari 31

TUGAS PROTEKSI ASET INFORMASI

ALGORITMA KRIPTOGRAFI

DISUSUN OLEH :
NAMA : MUHAMAMD RIZKY ALFARREL
NIM : A12.2017.05770

PROGRAM STUDI SISTEM INFORMASI


FAKULTAS ILMU KOMPUTER
UNIVERSITAS DIAN NUSWANTORO
2019
1. ALGORITMA ASIMETRIS
ELLIPTIC CURVE CRYPTOGRAPHY (ECC)
1. PENGERTIAN
The Elliptic Curce Cryptosystem (ECC) diperkenalkan pada tahun 1985
oleh Neal Koblitz dan Victor Miller dari Universitas Washington. Kurva
eliptik mempunyai masalah logaritma yang terpisah sehingga sulit untuk
dipecahkan.Kriptografi kurva eliptik termasuk sistem kriptografi kunci
publik yang mendasarkan keamanannya pada permasalahan matematis
kurva eliptik. The Elliptic Curce Cryptosystem (ECC) diperkenalkan pada
tahun 1985 oleh Neal Koblitz dan Victor Miller dari Universitas
Washington[7]. Kurva eliptik mempunyai masalah logaritma yang
terpisah sehingga sulit untuk dipecahkan.Kriptografi kurva eliptik
termasuk sistem kriptografi kunci publik yang mendasarkan
keamanannya. Dalam proses enkripsi, pertama-tama dilakukan pembacaan
suatu berkaskunci publik yang berisi kurva eliptik E, suatu point P yang
berada pada E, suatu bilangan prima p ∈ Fp, dan kunci publik pemakai
lain Q =d*P.Kemudian dipilih suatu bilangan random k ∈ {2,…,p-1} yang
berubah untuk setiap blok data, dan dihitung k*Q dan k*P, selanjutnya
berkas data dibaca secara per blok (M) dan dienkripsi dengan cara :
M’ = [k*P, M ⊕ X(k*Q)]
Keterangan : M = data yang akan dienkripsi (plaintext).
M' = blok data yang telah dienkripsi (ciphertext).
k = suatu bilangan random yang akan digunakan
sebagai session key dengan k ∈ {2,…,p-1}
Q = d*P
P = suatu point pada kurva
E(Fp) X(k*Q) = koordinat X untuk point yang
dihasilkan dari perkalian k*Q.
M di-xor-kan dengan absis point yaitu k*Q, hasilnya
berupa string yang lalu ditulis ke berkas dengan k*P
ditambahkan sebelumnya. Hasil akhirnya secara sederhana
dapat dilihat sebagai berikut :

Keterangan :
M1 : session key.
M2 : Data terenkripsi.
M : Data yang belum terenkripsi. M' : Blok data yang telah
dienkripsi (ciphertext).

Proses ini akan terus dilakukan selama data yang dibaca masih ada.
Dalam proses dekripsi, pertama-tama dilakukan pembacaan suatu berkas
kunci publik yang berisi kurva eliptik E, suatu point P yang berada pada E,
dan suatu field bilangan prima p. Kemudian dibaca ciphertext seperti pada
Gambar. 2.4. Lalu dihitung d*(k*P), dengan d adalah kunci privat yang
dimasukkan oleh pemakai dalam bentuk passphrase, dan k*P berasal dari
ciphertext. Satu buah blok data lalu dibaca (M’). Setelah itu dilakukan proses
dekripsi untuk memperoleh M , dengan
M = [M2 ⊕ X(d*(k*P))]
M2 di-xor-kan dengan absis point yaitu d*(k*P) sehingga diperoleh suatu
string. Hasilnya (M) lalu ditulis ke berkas. Hasil akhirnya secara sederhana
dapat dilihat sebagai berikut :
Keterangan :
M2 : Data terenkripsi.
M : Blok data yang telah didekripsi (plaintext). Proses ini akan
terus dilakukan selama data terenkripsi yang dibaca masih ada.

2. PEMBAHASAN
Pada proses enkripsi dan depenelitian dengan metode ECC adapun yang
menjadi input adalah kunci rahasia (k) dan titik kurva (x,y). Titik kurva
didapatkan dengan menggunakan rumus dan juga secara manual dengan
memperhatikan titik x dan y. Sebelum melakukan proses enkripsi dan
depenelitian terlebih dahulu ditentukan kunci umum (kP) dan kunci rahasia
(kP).
Kunci publik (kP) akan dikirimkan bersama dengan pesan terenkripsi
sebagai header yang akan dihitung oleh penerima pesan sebagai titik awal
pendepenelitiansan pesan.
a. Tahap-Tahap Enkripsi
1. Tentukan plaintext
2. Tentukan kunci publik dengan rumus k*(x,y)
Kunci rahasia (k) Titik kurva (x,y)
3. Proses
k*(x,y) = kunci publik (kP)
Menentukan titik enkripsi k*kP untuk mendapatkan titik absis x.
Pesan diubah dan di xor kan dengan titik x yang menghasilkan pesan
terenkripsi. Pesan dikirim dengan (kP sebagai header, pesan terenkripsi).
4. Output : Pesan terenkripsi/chipertext
b. Tahap-Tahap Deskripsi
1. Ambil pesan terenkripsi
2. Masukkan kunci rahasia Kunci rahasia (k)
Titik kurva (x,y) didapatkan dari header pesan terenkripsi sebagai kP
3. Proses
Menentukan titik enkripsi k*kP untuk mendapatkan titik absis x.
Menentukan titik awal deskripsi dengan memisahkan header kP dan pesan.
Hader kP dikalikan dengan k untuk mendapatkan kunci dalam bentuk (x,y).
Titix x di xor kan dengan pesan terenkripsi untuk
mendeskripsikan pesan.
4. Output
Pesan terdeskripsi/plaintext

2. ALGORITMA SIMETRIS

ADVANCED ENCRYPTION STANDARD (AES)

1. PENGERTIAN
Pada tahun 1997, National Institute of Standard and Technology (NIST) of
United States mengeluarkan Advanced Encryption Standard (AES) untuk
menggantikan Data Encryption Standard (DES).AES dibangun dengan
maksud untuk mengamankan pemerintahan diberbagai bidang. Algoritma
AES di design menggunakan blok chiper minimal dari blok 128 bit input dan
mendukung ukuran 3 kunci (3-key-sizes), yaitu kunci 128 bit, 192 bit, dan
256 bit.

Pada agustus 1998, NIST mengumumkan bahwa ada 15 proposal AES yang
telah diterima dan dievaluasi, setelah mengalami proses seleksi terhadap
algoritma yang masuk, NIST menumumkan pada tahun 1999 bahwa hanya
ada 5 algoritma yang diterima,
algoritma tersebut adalah : MARS, RC6, Rijndael, Serpent dan Twofish.
Algoritma-algoritma tersebut manjalani berbagai macam pengetesan.Pada
bulan oktober 2000, NIST mengumumkan bahwa Rijndael sebagai algoritma
yang terpilih untuk standar AES yang baru.

Pengantar Matematis Seluruh byte dalam algoritma AES diinterpretasikan


sebagai elemen finite field.Elemen finite field ini dapat dikalikan dan
dijumlahkan, tetapi hasil dari penjumlahan dan perkalian elemen finite field
sangat berbeda dengan hasil dari penjumlahan dan perkalian bilangan biasa.

Penjumlahan Penjumlahan dari dua elemen dalam suatu finite field dilakukan
dengan menjumlahkan koefisien dari pangkat polinom yang bersesuaian dari
dua elemen tersebut. Penjumlahan dilakukan dengan operasi XOR dan
dinotasikan dengan Å. Dengan operasi ini, maka 1Å1 = 0, 1Å0 = 1, 0Å1 = 1,
dan 0Å0 = 1. Pengurangan dari polinomial identik dengan penjumlahan
polinomial.

Sebagai alternatif, penjumlahan elemen-elemen pada finite field dapat


dijelaskan sebagai penjumlahan modulo 2 dari bit yang bersesuaian dalam
byte. Untuk 2 byte {a7a6a5a4a3a2a1a0} dan {b7b6b5b4b3b2b1b0}, hasil
penjumlahannya adalah {c7c6c5c4c3c2c1c0} dimana setiap ci = ai Å bi.

Contoh dari operasi penjumlahan adalah sebagai berikut :


(x6 +x4 +x2 +x+1) Å (x7 +x+1) = x7 +x6 +x4 +x2 (notasi polinomial)
{01010111}Å{10000011} = {11010100} (notasi biner)
{57}Å{83} = {d4} (notasi hexadesimal)
Perkalian Dalam representasi polinomial, perkalian dalam GF(28) yang
dinotasikan dengan • mengacu pada perkalian modulo polinomial sebuah
irreducible polynomial yang berderajat 8. Sebuah polinom bersifat
irreducible jika satu-satunya pembagi adalah dirinya sendiri dan 1. Untuk
algoritma AES, irreducible polynomial ini adalah : m(x) = x8 + x4 + x3 + x
+ 1 atau dalam notasi hexadesimal adalah {01}{1b}.
Sebagai contoh, {57}•{83} = {c1}, karena
(x6 + x4 + x2 + x + 1) • (x7 + x + 1)
= x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + x + 1
= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 dan
x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1
modulo (x8 + x4 + x3 + x + 1)
= x6 + x5 + 1
Pengurangan modular oleh m(x) memastikan bahwa hasilnya akan berupa
polinomial biner dengan derajat kurang dari 8, sehingga dapat
dipresentasikan dengan 1 byte saja.

a. Proses Enkripsi
Adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan
dalam bahasa sandi (ciphertext).
C = E (M)
Keterangan : M = Pesan asli (Plaintext)
E = Proses enkripsi dengan Key Private
C = Chipertext (Plaintext yang terenkripsi AES)
Secara umum enkripsi dengan algoritma AES sebagai berikut :
1. AddRoundKey: melakukan XOR antara state awal (plainteks) dengan
cipher key. Tahap ini disebut juga initial round.
2. Round : Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap
putaran adalah:
a) SubBytes: substitusi byte dengan menggunakan table substitusi (S-box).
b) ShiftRows: pergeseran baris-baris array state secara wrapping.
c) MixColumns: mengacak data di masingmasing kolom array state.
d) AddRoundKey: melakukan XOR antara state sekarang round key.
3. Final round: proses untuk putaran terakhir: a) SubBytes b) ShiftRows c)
AddRoundKey

b. Proses Dekripsi
Transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah yang
berlawanan untuk menghasilkan inverse cipher yang mudah dipahami untuk
algoritma AES. Transformasi byte yang digunakan pada invers cipher adalah
1. InvShiftRows : InvShiftRows InvShiftRows adalah transformasi byte yang
berkebalikan dengan transformasi ShiftRows. Pada transformasi InvShiftRows,
dilakukan pergeseran bit ke kanan sedangkan pada ShiftRows dilakukan
pergeseran bit ke kiri.
2. InvSubBytes : InvSubBytes juga merupakan transformasi bytes yang
berkebalikan dengan transformasi SubBytes. Pada InvSubBytes, tiap elemen
pada state dipetakan dengan menggunakan tabel Inverse S-Box.
3. InvMixColumns : Setiap kolom dalam state dikalikan dengan matrik perkalian
dalam AES.
4. AddRoundKey : Add Round Key pada dasarnya adalah mengkombinasikan chiper
teks yang sudah ada dengan chiper key yang chiper key dengan hubungan XOR.

RIVEST CODE 4 (RC4)


1. PENGERTIAN
Menurut Kromodimoedjo (Kromodimoeljo, 2009), RC4 adalah stream cipher
yang dirancang di RSA Security oleh Ron Rivest tahun 1987. Pada mulanya
cara kerja RC4 dirahasiakan oleh RSA Security, akan tetapi ini dibocorkan di
internet tahun 1994 di milis Cypherpunks. RSA Security tidak pernah merilis
RC4 secara resmi, akibatnya banyak yang menyebutnya sebagai ARC4
(alleged RC4 atau tersangka RC4) untuk menghindari masalah trademark.
RC4 dirancang agar dapat diimplementasikan di software secara sangat
efisien. Ini membuat RC4 sangat populer untuk aplikasi internet, antara lain
RC4 digunakan dalam standard TLS (transport layer security) dan WEP
(wireless equivalent privacy). Cara membuat keystream dalam RC4 adalah
dengan state automaton dan terdiri dari dua tahap :
(1) Tahap key scheduling dimana state automaton diberi nilai awal
berdasarkan kunci enkripsi.
(2) Tahap pseudo-random generation dimana state automaton beroperasi dan
outputnya menghasilkan keystream.

(1) Tahap pertama dilakukan menggunakan key scheduling algorithm (KSA).


State yang diberi nilai awal berupa array yang merepresentasikan suatu
permutasi dengan 256 elemen, jadi hasil dari algoritma KSA adalah
permutasi awal. Array yang mempunyai 256 elemen ini (dengan indeks 0
sampai dengan 255) dinamakan S. Berikut adalah algoritma KSA dalam
bentuk pseudo-code dimana key adalah kunci enkripsi dan keylength
adalah besar kunci enkripsi dalam bytes (untuk kunci 128 bit, key length =
16) :
for i = 0 to 255
S[i] := i
j := 0
for i = 0 to 255
j := (j + S[i] + key[i mod key length]) mod 256
swap(S[i],S[j])

(2) Tahap kedua menggunakan algoritma yang dinamakan pseudo-random


generation algorithm (PRGA). Setiap putaran, bagian keystream sebesar 1
byte (dengan nilai antara 0 sampai dengan 255) dioutput oleh PRGA
berdasarkan state S. Berikut adalah algoritma PRGA dalam bentuk
pseudo-code:
i := 0
j := 0
loop
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap(S[i],S[j])
K = S[(S[i] + S[j]) mod 256]
Byte K di-XOR kan dengan plaintext untuk menghasilkan ciphertext atau di XOR
kan dengan ciphertext untuk menghasilkan plaintext. Permutasi dengan 255 elemen
mempunyai 255! kemungkinan.
Ditambah dua indeks (i dan j) yang masing-masing dapat mempunyai nilai antara 0
dan 255, maka state automaton yang digunakan untuk membuat keystream
mempunyai 255! x2552= 21700 kemungkinan internal states. Karena banyaknya
jumlah kemungkinan untuk internal state, sukar untuk memecahkan RC4 dengan
menganalisa PRGA (teknik paling afisien saat ini harus menjajagi >2700
kemungkinan).

RIVEST SHAMIR ADLEMAN (RSA)


1. PENGERTIAN
RSA merupakan algoritma kriptografi asimetris. Ditemukan pada tahun 1977
oleh Ron Rivest, Adi Shamir, dan Leonard Adleman. Nama RSA sendiri
diambil dari inisial nama depan ketiga penemunya tersebut. Terdapat 3
algoritma pada sistem kriptografi RSA, yaitu algoritma pembangkitan kunci,
algoritma enkripsi, dan algoritma dekripsi.
Algoritma RSA memiliki besaran – besaran seperti berikut :
p dan q adalah bilangan prima (rahasia)
n=pxq (tidak rahasia)
ф(n)=(p-1) x (q-1) (rahasia)
e (kunci enkripsi) (tidak rahasia)
d (kunci dekripsi) (rahasia)
m (plainteks) (rahasia)
c (chiperteks) (tidak rahasia)

a. Proses Enkripsi
Setelah kunci publik Kpublik dibangkitkan oleh pendekripsi (Bob) maka
sembarang orang dapat menggunakan kunci publik Bob untuk mengirim
teks sandi ke Bob. Algoritma enkripsi RSA menggunakan fungsi
eksponensial dalam modular n seperti yang diberikan oleh Algoritma 2.2.

b. Proses Dekripsi
Jika Bob mendapatkan teks audio yang dienkripsi dengan kunci publik
Bob maka Bob dapat menggunakan kunci privatnya untuk mengembalikan
teks asli. Sama seperti enkripsi, algoritma dekripsi RSA merupakan
eksponensial modular n dengan menggunakan kunci privat seperti yang
diberikan oleh Algoritma 2.3.
3. ALGORITMA BLOCK CIPHER
DATA ENCRYPTION STANDARD (DES)
1. PENGERTIAN
Pada tahun 1972 sebuah perusahaan National Bureau Standard (NBS) di Amerika
Serikat, yang sekarang dikenal sebagai National Institute of Standard and
Technology (NIST), memulai sebua projek untuk mengamankan data dan
komunikasi komputer. Mereka ingin mengembangkan algoritma kriptografi
tunggal. Setelah dua tahun, NBS menyadari bahwa IBM’s Lucifer dapat menjadi
kandidat yang bagus, dari pada mengembangkan algoritma baru dari awal.
Setelah beberapa diskusi, pada tahun 1975 NBS mengumumkan detail dari
algoritma tersebut. Pada akhir tahun 1976, pemerintah federal Amerika Serikat
mengadopsi algoritma ini dan kemudian mengganti namanya menjadi Data
Encryption Standard (DES). DESmerupakan blockcipher simetris yang
beroperasi pada blok 64 bit yang menggunakan sebuah kunci 56 bit. DES
mengenkripsi data dalam blok 64 bit. Input dari dari algoritma ini adalah blok
plaintext sepanjang 64 bit dan menghasilkan output blok ciphertext sepanjang 64
bit pula, yang didapat setelah dilakukan 16 kali putaran dari operasi pengulangan
yang sama. Seperti algoritma lainya, algoritma ini mempunyai dua input pada
fungsi enkripsinya: sebuah plaintext 64 bit yang akan di enkrispi dan sebuah
kunci 56 bit. Hal yang paling utama yang diperlukan untuk membangun blok-blok
dari plaintext adalah kombinasi dari permutasi dan subtitusi pada blok plaintext.
Subtitusi didapatkan dari pencarian pada Tabel S-boxes. Pada algoritma DES
Enkripsi dan dekripsi menggunakan algoritma yang sama namun dalam urutan
yang terbalik. Seperti algoritma lainya, algoritma ini mempunyai dua input pada
fungsi enkripsinya: sebuah plaintext 64 bit yang akan di enkrispi dan sebuah
kunci 56 bit. Hal yang paling utama yang diperlukan untuk membangun blok-blok
dari plaintext adalah kombinasi dari permutasi dan subtitusi pada blok plaintext.
Subtitusi didapatkan dari pencarian pada Tabel S-boxes. Pada algoritma DES
Enkripsi dan dekripsi menggunakan algoritma yang sama namun dalam urutan
yang terbalik. DES terdiri dari 16 tahapan, setiap tahapan disebut sebagai putaran.
Setiap putaran dilakukan sebuah langkah subtitusi dan transposisi. Berikut
Algoritma langkah-langkah enkripsi menggunakan Algoritma DES :

1. Pada tahap pertama, permutasikan sebuah blok 64 bit plaintext dengan


Tabel Initial Permutation (IP).
2. Setelah itu akan didapatkan plaintext hasil initial permutation (IP).
3. Selanjutnya bagi hasil dari initial permutation tadi menjadi dua bagian,
yaitu bagian kiri (L) dan bagian kanan (R).
4. Kemudian lakukan proses enkripsi sebanyak 16 kali putaran pada tiap
bagian kiri (L) dan kanan (R) dengan kunci masing-masing.
5. Terakhir gabungkan bagian kiri (L) dan kanan (R) dan lakukan
permutasi terakhir menggunakan
6. Tabel Final Permutation (FP) / Invers Initial Permutation (IP-
1).Proses ini akan menghasilkan ciphertext.

2. Enkripsi dan Dekripsi DES


Proses awal yang dilakukan dalam enkripsi adalah Permutasi Awal (Initial
Permutation, IP). Pengacakan dilakukan dengan menggunakan Matriks Initial
Permutation.

Proses enciphering terhadap blok plaintext dilakukan setelah permutasi awal. Setiap
blok plaintext mengalami 16 kali putaran enciphering. Secara matematis, satu putaran
DES dinyatakan sebagai :
Ln = Rn-1
Rn = Ln-1 Å f(Rn-1, Kn)
Dimana :
Rn = Right permutation ke – n
Ln = Left permutation ke – n
Kn = Key permutation ke – n
f = Fungsi permutasi f
Kemudian setiap blok Rn-1di ekspansi dari 32 bit menjadi 48 bit [10].Berikut matriks
Permutasi Ekspansi (E)

Selanjutnya hasil ekspansi, yaitu E(Rn-1) yang panjangnya 48 bit di XOR-kan dengan
Kn yang panjangnya 48 bit dan menghasilkan vektor A yang panjangnya 48 bit pula.
E(Rn-1) Å Kn = A
A = (B1)(B2)(B3)(B4)(B5)(B6)(B7)(B8)
Dimana :
E = Fungsi ekspansi
Rn = Right permutation ke – n
Kn = Key permutation
A = Vektor hasil XOR yang panjangnya 48 bit
B1,…,B16 = Bit hasil XOR yang dikelompokan masing-masing 6 bit
Fungsi f di dapat dari mengimplementasikan permutasi pada bit-bit vektor A sebagai
berikut :
f = P(S1(B1)S2(B2),…,S8(B8))
Dimana :
f = Fungsi permutasi f
P = Permutasi kotak – P
S1,…,S8 = Subtitusi kotak – S
B1,…,B16 = Bit hasil XOR yang dikelompokan menjadi 6 bit.
Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit, dan menjadi
masukan bagi proses subtitusi. Proses subtitusi dilakukan dengan menggunakan
delapan kotak-S (S-boxes), S1sampai S8. Setiap kotak-S menerima masukan 6 bit dan
menghasilkan keluaran 4 bit. Kelompok 6 bit pertama menggunakan S1, kelompok 6
bit kedua menggunakan S2, dan seterusnya. Hal pertama yang harus dilakukan adalah
menuliskan kembali bit-bit vektor A dan kemudian kelompokkan bit-bit tersebut
menjadi 8 kelompok yang masing-masing kelompok terdiri dari 6 bit. Kotak-S
menerima masukan 6 bit dan menghasilkan keluaran 4 bit, bit pertama dan terakhir
dari masukan menggambarkan sebuah angka desimal dari range 0 sampai 3 (00
sampai 11) misalkan i. 4 bit pertengahan menggambarkan sebuah angka desimal dari
range 0 sampai 15 (0000 sampai 1111) misalkan j. Kemudian lihat Tabel kotak-S,
carilah angka yang didapat dari kolom i dan baris j. Kemudian ubah angka desimal
yang didapat ke dalam binary.
Setelah didapat hasil dari kotak-S, maka selanjutnya dilakukan proses permutasi yang
bertujuan untuk mengacak hasil proses subtitusi kotak-S. Permutasi dilakukan dengan
matriks permutasi kotak-P (Pbox).

Selanjutnya setelah didapatkan f lakukan proses XOR antara f(Rn-1, Kn) dengan Ln-1
untuk mendapatkan Rn.Langkah terakhir setelah dilakukan 16 kali putaran,
gabungkan blok kiri (L16) dan blok kanan (R16), kemudian lakukan proses permutasi
menggunakan Matriks Permutasi Awal Balikan (Invers Initial
Permutation, IP-1)
Untuk proses dekripsi DES dilakukan dengan proses dan langkah-langkah yang sama
namun perbedaanya hanya terletak pada urutan kunci yang digunakan. Untuk dekripsi
DES kunci yang digunakan kebalikan dari enkripsinya, yaitu K1 menjadi K16, K2
menjadi K15, K3 menjadi K15 dan seterusnya.

RON’S CODE 6 (RC6)


RC6 memiliki struktur yang sederhana. RC6 terdiri dari dua jaringan Feistel dimana
datanya dicampur dengan rotasi yang bergantung pada isi data tersebut. Dalam sekali
putaran RC6, ada beberapa operasi yang terjadi, antara lain : dua (2) aplikasi dari
fungsi persamaan f(x) = x(2x + 1) mod 232, dua (2) rotasi 32-bit yang tidak berubah,
dua (2) rotasi 32-bit yang bergantung pada data, dua (2) eksklusif OR dan dua (2)
fungsi modulo 232 tambahan. Tingkat keamanan pada algoritma ini terletak pada
kekuatan rotasi yang berdasarkan data, penggunaan eksklusif OR yang bergantian,
fungsi modulo dan fungsi persamaan yang menggunakan rotasi yeng tetap. Dengan
menghilangkan salah satu atau beberapa aspek di atas, maka cipher yang dihasilkan
akan menjadi lebih lemah terhadap beberapa serangan yang sudah diketemukan
sebelumnya. Beberapa jenis serangan modern terhadap algoritma ini hanya dapat
dilakukan secara teori tanpa praktek serangan sesungguhnya. Salah satu metode
kriptografi yang terkenal adalah RC6 (Ron’s Code 6) yang merupakan yang
sederhana dan cepat sehingga mudah diaplikasikan untuk pengamanan data. ini
biasanya dipakai untuk mengacak plain teks. Implementasi baru RC6 dapat dipakai
untuk melakukan pengacakan terhadap kunci. Sehingga data teks yang diamankan
tidak dapat di akses oleh orang yang tidak bertanggung jawab. Setelah diacak dengan
kunci yang tidak beraturan lagi. Teks tersebut setelah diacak dapat dikirim kepada
orang yang berhak lewat jaringan terbuka seperti Internet. Ini bertujuan agar citra
tidak dapat dibuka dan jatuh ketangan pihak yang tidak berkepentingan. Algoritma
RC6 merupakan salah satukandidat Advanced Encryption Standard (AES)yang
diajukan oleh RSA Laboratoriest kepadaNIST. Dirancang oleh Ronald L Rivest,
M.J.B.Robshaw, R. Sidney dan Y.L. Yin, algoritma inimerupakan pengembangan
dari algoritmasebelumnya yaitu RC5 dan telah memenuhi semua kriteria yang
diajukan oleh NIST. Algoritma RC6 adalah versi yang dilengkapi dengan beberapa
parameter, sehingga dituliskansebagai RC6-w/r/b, dimana parameter w
merupakanukuran kata dalam satuan bit, r adalah bilanganbulat bukan negatif yang
menunjukan banyaknyaiterasi selam proses enkripsi, dan b menunjukanukuran kunci
enkripsi dalam byte. Ketika algoritmaini masuk sebagai kandidat AES, maka
ditetapkannilai parameter w = 32, r = 20 dan b bervariasiantara 16, 24, dan 32 byte.

RC6-w/r/b memecah block 128 bit menjadi 4buah block 32 bit, dan mengikuti enam
aturanoperasi dasar sebagai berikut :
1. A + B Operasi penjumlahan bilangan integer.
2. A – B Operasi pengurangan bilangan integer.
3. A B Operasi exclusive-OR (XOR)
4. A x B Operasi perkalian bilangan integer.
5. A<<>>B A dirotasikan ke kanan sebanyak variabel kedua (B).
a. Enkripsi RC6
Karena RC6 memecah block 128 bit menjadi 4 buah block 32 bit, maka
algoritma ini bekerja dengan 4 buah register 32-bit A, B, C, D. Byte yang
pertama dari plaintext atau ciphertext ditempatkan pada byte A, sedangkan
byte yang terakhirnya ditempatkan pada byte D. Dalam prosesnya akan
didapatkan (A, B, C, D) = (B, C, D, A) yang diartikan bahwa nilai yang
terletak pada sisi kanan berasal dari register disisi kiri.
Berikut iniadalah algoritma enkripsi RC6:
B = B + S[ 0 ]
D = D + S[ 1 ]
for i = 1 to 20 do
{
t = ( B x ( 2B + 1 ) ) <<< 5
u = ( D x ( 2D + 1 ) ) <<< 5
A = ( ( A Å t ) <<< u ) + S[ 2i ]
C = ( ( C Å u ) <<< t ) + S[ 2i+ 1 ]
(A, B, C, D) = (B, C, D, A)
}
A = A + S[ 42 ]
C = C + S[ 43 ]
Algoritma RC6 menggunakan 44 buah sub kunci yang dibangkitkan dari
kunci dan dinamakan dengan S[0] hingga S[43]. Masing-masing sub kunci
panjangnya 32 bit. Proses enkripsi pada algoritma RC6 dimulai dan diakhiri
dengan proses whitening yang bertujuan untuk menyamarkan iterasi yang
pertama dan yang terakhir dari proses enkripsi dan dekripsi.Pada proses
whitening awal, nilai B akan dijumlahkan dengan S[0], dan nilai D
dijumlahkan dengan S[i]. Pada masing-masing iterasi pada RC6
menggunakan 2 buah sub kunci. Sub kunci pada iterasi yang pertama
menggunakan S[2] dan S[3], sedangkan iterasi-iterasi berikutnya
menggunakan sub-sub kunci lanjutannya. Setelah iterasi ke-20 selesai,
dilakukan proses whitening akhir dimana nilai A dijumlahkan dengan S[42],
dan nilai C dijumlahkan dengan S[43]. Setiap iterasi pada algoritma RC6
mengikutiaturan sebagai berikut, nilai B dimasukan ke dalamfungsi f, yang
didefinisikan sebagai f(x) =x(2x+1) ,kemudian diputar kekiri sejauh lg-w atau
5 bit.Hasil yang didapat pada proses ini dimisalkansebagai u. Nilai u
kemudian di XOR dengan C danhasilnya menjadi nilai C.
Nilai t juga digunakansebagai acuan bagi C untuk memutar nilainyakekiri.
Begitu pula dengan nilai u, juga digunakansebagai acuan bagi nilai A untuk
melakukan prosespemutaran kekiri. Kemudian sub kunci S[2i] padaiterasi
dijumlahkan dengan A, dan sub kunciS[2i+1] dijumlahkan dengan C. keempat
bagiandari block kemudian akan dipertukarkan denganmengikuti aturan,
bahwa nilai A ditempakan padaD, nilai B ditempatkan pada A, nilai C
ditempatkanpada B, dan nilai (asli) D ditempatkan pad C. Demikian iterasi
tersebut akan terus berlangsung hingga 20 kali.

b. Proses dekripsi
ciphertext pada algoritmaRC6 merupakan pembalikan dari proses
enkripsi.Pada proses whitening, bila proses enkripsimenggunakan operasi
penjumlahan, maka padaproses dekripsi menggunakan operasi
pengurangan.Sub kunci yang digunakan pada proses whiteningsetelah
iterasi terakhir diterapkan sebelum iterasipertama, begitu juga sebaliknya
sub kunci yangditerapkan pada proses whitening sebelum iterasipertama
digunakan pada whitening setelah iterasiterkahir. Akibatnya, untuk
melakukan dekripsi, halyang harus dilakukan sematamata
hanyalahmenerapkan algoritma yang sama dengan enkripsi,dengan tiap
iterasi menggunakan sub kunci yangsama dengan yang digunakan pada
saat enkripsi,hanya saja urutan sub kunci yang digunakan terbalik.
(MamanAbdurohman, 2002). Berikut ini adalah algoritmadeskripsi RC6:
C = C - S[ 43 ]
A = A - S[ 42 ]
for i = 20 down to 1 do
{
(A, B, C, D) = (D, A, B, C)
u = ( D x ( 2D + 1 ) )<<< 5
t = ( B x ( 2B + 1 ) )<<< 5
C = ( ( C - S[ 2i + 1 ] )>>> t ) ⊕ u
A = ( ( A - S[ 2i ] ) >>> u) ⊕ t
}
D = D - S[ 1 ]
B = B - S[ 0 ]

4. ALGORITMA STREAM CIPHER.


RIVEST CODE 4 (RC4)
1. PENGERTIAN
RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit
atau input data, pesan atau informasi pada satu saat. Unit atau data
pada umumnya sebuah byte atau bahkan kadang kadang bit (byte
dalam hal RC4). Dengan cara ini enkripsi atau dekripsi dapat
dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus
menunggu sejumlah input data, pesan atau informasi tertentu sebelum
diproses, atau menambahkan byte tambahan untuk mengenkrip.
Contoh stream cipher adalah RC4, Seal, A5, Oryx, dan lain-lain. Tipe
lainnya adalah block cipher yang memproses sekaligus sejumlah
tertentu data (biasanya 64 bit atau 128 bit blok), contohnya : Blowfish,
DES, Gost, Idea, RC5, Safer, Square, Twofish, RC6, Loki97, dan lain-
lain. RC4 merupakan enkripsi stream simetrik proprietary yang dibuat
oleh RSA Data Security Inc (RSADSI). Penyebarannya diawali dari
sebuah source code yang diyakini sebagai RC4 dan dipublikasikan
secara 'anonymously' pada tahun 1994. Algoritma yang dipublikasikan
ini sangat identik dengan implementasi RC4 pada produk resmi. RC4
digunakan secara luas pada beberapa aplikasi dan umumnya
dinyatakan sangat aman. Sampai saat ini diketahui tidak ada yang
dapat memecahkan/membongkarnya, hanya saja versi ekspor 40
bitnya dapat dibongkar dengan cara "brute force" (mencoba semua
kunci yang mungkin). RC4 tidak dipatenkan oleh RSADSI, hanya saja
tidak diperdagangkan secara bebas (trade secret).
Algoritma RC4 cukup mudah untuk dijelaskan. RC4 mempunyai
sebuah S-Box, S0,S1,...,S255, yang berisi permutasi dari bilangan 0
sampai 255, dan permutasi merupakan fungsi dari kunci dengan
panjang yang variabel. Terdapat dua indeks yaitu i dan j, yang
diinisialisasi dengan bilangan nol. Untuk menghasilkan random byte
langkahnya adalah sebagai berikut :
i = ( i + 1 ) mod 256
j = ( j + Si ) mod 256
swap Si dan Sj
t = (Si + Sj) mod 256
K = St
Byte K di XOR dengan plaintexs untuk menghasilkan cipherteks atau
di XOR dengan cipherteks untuk menghasilkan plainteks. Enkripsi
sangat cepat kurang lebih 10 kali lebih cepat dari DES.
Inisialisasi S-Box juga sangat mudah. Pertama isi secara berurutan S0
= 0, S1 = 1,...,S255 = 255. Kemudian isi array 256 byte lainnya
dengan kunci yang diulangi sampai seluruh array K0, K1,...,K255
terisi seluruhnya. Set indeks j dengan nol, Kemudian lakukan langkah
berikut :
for i = 0 to 255
j = (j + Si + Ki) mod 256
swap Si dan Sj
Salah satu kelemahan dari RC4 adalah terlalu tingginya kemungkinan
terjadi tabel S-box yang sama, hal ini terjadi karena kunci user
diulang-ulang untuk mengisi 256 bytes, sehingga 'aaaa' dan 'aaaaa'
akan menghasilkan permutasi yang sama. Untuk mengatasi ini maka
pada implementasinya nanti kita menggunakan hasil hash 160 bit SHA
dari password kita untuk mencegah hal ini terjadi. Kekurangan lainnya
ialah karena enkripsi RC4 adalah XOR antara data bytes dan pseudo-
random byte stream yang dihasilkan dari kunci, maka penyerang akan
mungkin untuk menentukan beberapa byte pesan orisinal dengan
meng-XOR dua set cipher byte, bila beberapa dari pesan input
diketahui (atau mudah untuk ditebak). Untuk mengatasinya pada
aplikasinya kita menggunakan initialization vector (IV) yang berbeda-
beda untuk setiap data, sehingga bahkan untuk file yang sama akan
dihasilkan ciphertext yang berbeda. IV ini tidak perlu dirahasikan
karena digunakan hanya agar setiap proses enkripsi akan
menghasilkan ciphertext yang berbeda Untuk lebih meningkatkan
keamanan dari metoda ini dapat juga mengembangkan inisialisasi
kunci yang baru yang kita sebut saja inisialisasi SK (strengtened key),
pada proses ini kunci user di-expand hingga 260 byte (tetapi kemudian
hanya 256 byte saja yang digunakan) dengan menggunakan SHA-1,
caranya pertama kunci user dijadikan kunci, kemudian 1-20 byte
pertama pada buffer diproses dengan SHA kemudian digestnya
diletakan pada 20 byte pertama, kemudian diambil byte 1-40 diproses
dengan SHA dan hasilnya diletakan mulai pada byte 20, berikutnya
byte 1-60 hasilnya diletakkan pada mulai byte 40, dan seterusnya.
Kemudian buffer ini dienkrip dengan RC4, lalu buffer dijadikan kunci
kembali, proses terakhir ini diulang sebanyak 16 kali untuk mencoba
mencampur dengan baik sehingga dihasilkan kunci yang se-random
mungkin. Untuk lebih jelas tetang proses ini dapat dilihat pada listing.
Penggunaan SHA pada proses inisialisasi kunci bukanlah hal yang
baru, hal ini dapat dilihat pada proses inisialisasi kunci SEAL
misalnya. Penggunaan proses primitif enkripsi pada inisialisasi kunci
juga digunakan juga pada Blowfish ataupun Cobra-128. Secara teoritis
dengan proses ini akan ekivalen dengan menggunakan kunci sebesar
2048 bit, walaupun penulis sendiri tidak yakin akan hal ini (mungkin
pembaca ada yang bisa memberikan tanggapan). Metoda ini
tampaknya sedikit lebih rumit dari pada inisialisasi kunci standar,
tetapi pada Pentium 133 prosesnya hanya memerlukan waktu kurang
sari 10ms saja. Metoda ini walaupun kami anggap lebih kuat, tetapi
belum teruji sehingga dalam penerapan aplikasinya terdapat dua
pilihan yaitu dengan metoda SK ini atau dengan metoda standard.

2. Enkripsi dan Dekripsi RC4


Algoritma RC4 adalah algoritma kriptografi simetrik. Disebut
algoritma kriptografi simetrik karena menggunakan kunci yang sama
untuk mengenkripsi ataupun mendekripsi suatu pesan, data, ataupun
informasi. Kunci enkripsi didapat dari sebuat 256 bit state-array
(KSA) yang diinisialisasi dengan sebuah key tersendiri dengan panjang
1-256 bit. Setelah itu, state-array tersebut akan diacak kembali dan
diproses untuk menghasilkan sebuah kunci enkripsi yang akan di-
XOR-kan dengan plainteks ataupun cipherteks. Secara umum,
algoritma RC4 terbagi menjadi dua, inisalisasi state-array dan
penghasilan kunci enkripsi serta pengenkripsiannya (Karina Novita
Suryani, 2008). Adapun algoritma dari Enkripsi RC-4 adalah sebagai
berikut ini :
Langkah 1:
Inisialisasi S-Box (Array S)
Jum = Len(Kunci)
i=0
j=0
For y=1 to Jum
j = (j + S[i] + K [i mod jum]) mod jum
Swap (S[i],S[j])
Next y
Langkah 2:
Lakukan Pengacakan S-Box
Jum = Len(Kunci)
i=0
j=0
For y=1 to Jum
i = (i + 1) mod Jum
j = (j + S[i]) mod Jum
swap (S[i],S[j])
Key(y) = S[(S[i]+S[j]) mod jum]
Next y
Langkah 3:
Lakukan Enkripsi
Jum = Panjang(PlainText)
i=0
j=0
For y=1 to Jum
C(y) = Biner(P[y]) XOR Biner(Key[y])
Next y
Dan untuk melakukan Dekripsi maka dilakukan langkah
sebagai berikut ini :
Langkah 1:
Inisialisasi S-Box (Array S)
Jum = Len(Kunci)
i=0
j=0
For y=1 to Jum
j = (j + S[i] + K [i mod jum]) mod jum
Swap (S[i],S[j])
Next y
Langkah 2:
Lakukan Pengacakan S-Box
Jum = Len(Kunci)
i=0
j=0
For y=1 to Jum
i = (i + 1) mod Jum
j = (j + S[i]) mod Jum
swap (S[i],S[j])
Key(y) = S[(S[i]+S[j]) mod jum]
Next y
Langkah 3:
Lakukan Enkripsi
Jum = Panjang(PlainText)
i=0
j=0
For y=1 to Jum
P(y) = Biner(C[y]) XOR Biner(Key[y])
Next y

ONE TIME PAD (OTP)


1. PENGERTIAN
Algoritma One Time Pad (OTP) ditemukan pada tahun 1917 oleh Major
Yoseph Mouborgn dan Gilbert Vernam pada perang dunia II. Metode ini telah
diklaim sebagai satu-satunya algoritma kriptografi sempurna dan tidak dapat
dipecahkan. Suatu algoritma dikatakan aman bila tidak ada cara untuk
menemukan plaintext-nya. Hingga saat ini hanya algoritma OTP yang
dinyatakan tidak dapat dipecahkan meskipun menggunakan sumber daya yang
tidak terbatas. Algoritma OTP adalah salah satu algoritma konvensional dan
merupakan algoritma untuk mengengkripsi berbagai informasi seperti gambar,
tulisan, dan sebagainya. Penggunaan algoritma OTP dalam kriptografi adalah
sebagai dasar untuk mengaburkan suatu informasi yang ingin
dirahasiakan dengan cara mengacak informasi tersebut sehingga menjadi
suatu informasi yang tidak dapat dipahami oleh orang lain. Algoritma OTP
adalah algoritma berjenis symmetric key, artinya kunci yang digunakan
untuk melakukan enkripsi dan dekripsi merupakan kunci yang sama. Dalam
proses enkripsi, algoritma OTP menggunakan cara stream cipher dimana
cipher berasal dari hasil XOR antara bit plaintext dan bit key. Prinsip enkripsi
pada algoritma OTP adalah dengan mengkombinasikan setiap karakter
plaintext dengan satu karakter key.
Karena itu, panjang key harus sama dengan panjang plaintext. Secara teoritis,
tidak mungkin untuk mendekripsi ciphertext tanpa kuncinya karena bila key
yang digunakan adalah key yang salah maka
yang diperoleh bukan plaintext yang seharusnya. Setiap key hanya boleh
digunakan untuk sekali pesan, pengambilan dilakukan secara acak agar
tidak dapat diterka, dan jumlah karakter key harus sebanyak jumlah karakter
pesan. Algoritma OTP sering digunakan dalam enkripsi karena prosesnya
yang relatif mudah.

Fungsi untuk mengenkripsi hanya dengan cara meng-XOR-kan plaintext


dengan key yang telah disiapkan untuk menghasilkan ciphertext, yaitu c = p
XOR k. Sedangkan fungsi untuk mendekripsi hanya meng-XOR-kan
ciphertext dengan key yang disepakati, yaitu p = c XOR k.

2. PROSES ENKRIPSI DAN DEKRIPSI


Enkripsi dalam penelitian ini dinyatakan sebagai penjumlahan modulo 26 dari
satu karakter plaintext dengan satu karakter key algoritma OTP
sebagai berikut:
Ci = (Pi + Ki) mod 26
Pi adalah plaintext ke-i dan Ci adalah huruf ciphertext ke-i. Panjang key sama
dengan panjang
plaintext, sehingga tidak ada pengulangan penggunaan key selama proses
enkripsi. Angka 26 muncul karena sistem ini menggunakan abjad, artinya
hanya abjad A – Z yang dapat dikodekan dengan sistem ini. Bila diinginkan
pengkodean sembarang data (teks, gambar, suara, atau video), sistem ini
diperluas dengan penggunaan sistem bilangan binner karena semua tipe data
dapat dianggap data binner dan karena bilangan binner hanya mengenal 0 dan
1 maka basis 26 diubah menjadi basis 2. Penjumlahan modulo 2 dinyatakan
dengan XOR yang sering digunakan dalam sistem digital. Ciphertext dari
penjumlahan modulo 2 adalah satu bit plaintext dengan satu bit key, yaitu: Ci
= (Pi + Ki) mod 2 Pi adalah bit plaintext, Ki adalah bit key, dan Ci adalah bit
ciphertext. Sedangkan plaintext dari penjumlahan modulo 2 adalah satu bit
ciphertext dengan satu bit key, yaitu:
Pi = (Ci + Ki) mod 2
Mengingat operasi penjumlahan modulo 2 adalah identik dengan operasi bit
yangmenggunakan operator XOR, maka persamaanenkripsi ditulis sebagai
berikut:
Ci = Pi xor Ki
sedangkan dekripsi ditulis sebagai berikut:
Pi = Ci xor Ki
Pada proses enkripsi, bit hanya mempunyai dua nilai sehingga proses enkripsi
hanya menyebabkan dua keadaan pada bit, yaitu berubah atau tidak berubah.
Kedua keadaan ini ditentukan oleh key enkripsi yang disebut aliran kunci
(keystream) dari sebuah pembangkit pembangkit aliran kunci (keystream
generator). Selanjutnya keystream di-XOR-kan dengan aliran bit-bit plaintext
P1, P2, ... Pi untuk menghasilkan aliran bit-bit ciphertext, yaitu:
Ci = Pi xor Ki
Di sisi penerima, bit-bit ciphertext kemudian di-XOR-kan dengan keystream
yang sama untuk menghasilkan bit-bit plaintext, yaitu:
Pi = Ci xor Ki
Karena proses enkripsi sebanyak dua kali berturut-turut maka akan
menghasilkan kembali plaintext semula. Dalam skema global algoritma OTP,
keystream menghasilkan elemen bit key (Ki) yang kemudian di-XOR-kan
dengan bit plaintext (Pi) sehingga menghasilkan bit ciphertext (Ci). Di sisi
penerima, keystream yang sama di-XOR-kan dengan bit ciphertext (Ci)
sehingga menghasilkan bit plaintext (Pi) semula. Skema global algoritma OTP
tersebut digambarkan sebagai berikut:
Secara teoritis, syarat yang harus dipenuhi untuk merancang suatu
unbreakable cipher, yaitu key harus dipilih secara acak dimana setiap key
memiliki peluang yang sama untuk terpilih, dan panjang key harus sama
dengan panjang plaintext yang akan dienkripsi. Kedua syarat ini
menyebabkan plaintext yang sama belum tentu dienkripsi menjadi ciphertext
yang sama. Kriptanalisis akan menemukan bahwa ciphertext
yang dideskripsikannya menghasilkan beberapa plaintext yang berbeda,
sehingga membingungkan dalam menentukan plaintext mana yang benar.
Misalnya sebuah plaintext, yaitu LAMRO memiliki sebuah key, yaitu
CRASH. Perlu diingat, panjang key harus sama dengan plaintext dan
tidak ada karakter yang diulang. Untuk melakukan enkripsi, pertama-tama
harus dicari kode ASCII plaintext (LAMRO) dan diubah ke bentuk binner
sebagai berikut:
Kemudian dicari kode ASCII key (CRASH) dan diubah ke bentuk binner
sebagai berikut:

Notasi binner key kemudian di-XOR-kan dengan notasi binner plaintext


sehingga menghasilkan ciphertext sebagai berikut:

Adapun proses dekripsi pesan juga melakukan operasi yang sama, yaitu XOR
antara ciphertext dengan key sebagai berikut:
Setelah pengirim mengenkripsi pesan dengan key, ia harus menghancurkan
key tersebut. Penerima pesan menggunakan key yang sama untuk
mendekripsikan ciphertext menjadi plaintext dengan persamaan sebagai
berikut:
Pi = (Ci + Ki) mod 26

Anda mungkin juga menyukai