ALGORITMA KRIPTOGRAFI
DISUSUN OLEH :
NAMA : MUHAMAMD RIZKY ALFARREL
NIM : A12.2017.05770
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
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.
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.
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.
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 :
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.
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 ]
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