Anda di halaman 1dari 24

ALGORITMA KRIPTOGRAFI

BLOCK CIPHER











Direpresentasikan Ulang Oleh :

Alfred Nugraha
Ardi Adma
Stiven Marrent
Viqih Ayudya
Zulfikar Akbar





Magister Perangkat Lunak Sistem Informasi
Universitas Gunadarma
Jakarta
2014
1. Pendahuluan

Algoritma merupakan urutan langkah-langkah logis untuk menyelesaikan masalah yang
disusun secara matematis dan benar. Sedangkan kriptografi (cryptography) berasal dari kata
crypto yang berarti secret (rahasia) dan graphy yang berarti writing (tulisan). Kriptografi
merupakan suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap
aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga.
Sehingga algoritma kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan
pesan dari orang-orang yang tidak berhak atas p esan tersebut.
Prinsip-prinsip yang mendasari kriptografi yakni :
1. Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak
diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin).
Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis y ang mampu
mengubah data hingga menjadi sulit untuk dibaca dan dipahami.
2. Data integrity (keutuhan data) yaitu layanan yang mampu mengenali/mendeteksi adanya
manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain).
3. Authentication (otentik) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi
pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi.
4. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk
menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal
dirinya). (Alferd J. M enezes, 1996).
Algoritma kriptografi terdiri dari tiga fungsi dasar, yaitu :
1. Enkripsi, merupakan hal yang sangat penting dalam kriptografi, merupakan pengamanan data
yang dikirimkan agar terjaga kerahasiaannya. Pesan asli disebut plaintext, yang diubah menjadi
kode-kode yang tidak dimengerti. Enskripsi bisa diartikan dengan cipher atau kode.
2. Dekripsi, merupakan kebalikan dari enkripsi. Pesan yang telah dienkripsi dikembalikan ke
bentuk asalnya (tesk-asli), disebut dengan dekripsi pesan. Algoritma yang digunakan untuk
dekripsi tentu berbeda dengan algoritma untuk enkripsi.
3. Kunci, yang dimaksud adalah kunci yang dipakai untu melakukan enkripsi dan dekripsi. Kunci
terbagi menjadi dua bagian, kunci rahasia (private key) dan kunci umum (public key).

Secara umum fungsi tersebut digambarkan :



Gambar 1.1. Skema Umum Kriptografi

2.1. Block Cipher

Yaitu proses penyandiannya berorientasi pada sekumpulan bit atau byte data (per blok).
Berikut ini merupakan beberapa algoritma kriptografi yang dikembangkan menggunakan
kriptografi simetri dan merupakan pengembangan dari kriptografi klasik.

2.1.1. Data Encryption Standard (DES)

Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada
tahun 1972. Algoritma ini didasarkan pada algoritma LUCIFER yang dibuat oleh Horst Feistel.
Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian
kekuatannya oleh National Security Agency (NSA) Amerika Serikat. DES termasuk ke dalam
sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64
bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit
kunci internal (internal key) atau upa-kunci (subkey). Kunci internal dibangkitkan dari kunci
eksternal (external key) yang panjangnya 64 bit.
Skema global dari algoritma DES adalah sebagai berikut :
1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP).
2. Hasil permutasi awal kemudian di-enciphering- sebanyak 16 kali (16 putaran). Setiap putaran
menggunakan kunci internal yang berbeda.
3. Hasil enciphering kemudian dipermutasi dengan matriks p ermutasi balikan (invers initial
permutation atau IP-1 ) menjadi blok cipherteks.


Gambar 2.1. Skema Global DES

Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan
kanan (R), yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran
DES. Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang disebut
f. Pada fungsi f, blok R dikombinasikan dengan kunci internal Ki. Keluaran dai fungsi f di-XOR-
kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru langsung
diambil dari blok R sebelumnya. Ini adalah satu putaran DES. Secara matematis, satu putaran
DES dinyatakan sebagai :
Li = Ri 1
Ri = Li f(Ri 1, Ki)


Gambar 2.2. Skema Satu Putaran DES

Isu-isu yang menyangkut keamanan DES :


1. Panjang kunci
Panjang kunci eksternal DES hanya 64 bit atau 8 karakter, itup un yang dipakai hanya 56
bit. Tahun 1998, Electronic Frontier Foundation (EFE) merancang dan membuat perangkat keras
khusus untuk menemukan kunci DES secara exhaustive search key dengan biaya $250.000 dan
diharapkan dapat menemukan kunci selama 5 hari. Tahun 1999, kombinasi perangkat keras EFE
dengan kolaborasi internet yang melibatkan lebih dari 100.000 komputer dapat menemukan
kunci DES kurang dari 1 hari.

2. Jumlah putaran
Berdasarkan penelitian, DES dengan jumlah putaran yang kurang dari 16 ternyata dapat
dipecahkan dengan known-plaintext attack lebih mangkus daripada dengan brute force attack.

3. Kotak-S
Pengisian kotak-S DES masih menjadi misteri tanpa ada alasan mengapa memilih
konstanta-konstanta di dalam kotak itu.

4. Kunci Lemah dan Kunci Setengah Lemah
DES mempunyai beberapa kunci lemah (weak key). Kunci lemah menyebabkan kunci-
kunci internal pada setiap putaran sama (K1 = K2 = = K16). Akibatnya, enkripsi dua kali
berturut-turut terhadap plainteks menghasilkan kembali plainteks semula. Kunci lemah terjadi
bila bit-bit di dalam Ci dan Di semuanya 0 atau 1, atau setengah dari kunci seluruh bitnya 1 dan
setengah lagi seluruhnya 0. Kunci eksternal (dalam notasi HEX) yang menyebabkan terjadinya
kunci lemah adalah (ingat bahwa setiap bit kedelapan adalah bit paritas).

2.1.2. International Data Encryption Algorithm (IDEA)

Adalah algoritma enkripsi blok kunci yang aman dan rahasia yang dikembangkan oleh
James Massey dan Xuejia Lai. Algoritma ini berkembang pada 1992 dari algoritma semula yang
disebut dengan Proposed Encryption Standard and The Inproved Proposed Encryption Standard.
IDEA beroperasi pada blok plaintext 64 bit dan menggunakan kunci 128 bit. Algoritma IDEA
menggunakan delapan round dan beroperasi pada subblok 16 bit dengan menggunakan kalkulasi
aljabar yang dapat digunakan untuk implementasi hardware. Op erasi ini adalah penjumlahan
modulo 216, perkalian modulo 216 + 1, dan XOR. Dengan kunci 128 bitnya, cipher IDEA lebih
sulit untuk dibobol daripada DES. Pada Algoritma IDEA, plaintext memiliki panjang 64 bit dan
kunci sepanjang 128 bit. Metodologi dari algoritma IDEA menggunakan operasi yang berbeda
seperti berikut ini :
Bit per bit XOR 16 bit sub-block
Penambahan 16 bit integer modulo 216
Perkalian 16 bit integer modulo 216+1
Operasi ini tidak berlaku hukum distributif atau hukum asosiatif.

Langkah-langkah Enkripsi IDEA adalah sebagai berikut :
Blok pesan terbuka dengan lebar 64-bit, X, dibagi menjadi 4 sub-blok 16-bit, X1, X2, X3,
X4, sehingga X = (X1, X2, X3, X4). Keempat sub-blok 16-bit itu ditransformasikan
menjadi sub-blok 16-bit, Y1, Y2, Y3, Y4, sebagai pesan rahasia 64-bit Y = (Y1, Y2, Y3,
Y4) yang berada dibawah kendali 52 subblok kunci 16- bit y ang dibentuk dari blok
kunci 128 bit.
Keempat sub-blok 16-bit, X1, X2, X3, X4, digunakan sebagai masukan untuk putaran
pertama dari algoritma IDEA. Dalam setiap putaran dilakukan operasi XOR,
penjumlahan, perkalian antara dua sub-blok 16-bit dan diikuti pertukaran antara sub-blok
16-bit putaran kedua dan ketiga. Keluaran putaran sebelumnya menjadi masukan putaran
berikutnya. Setelah putaran kedelapan dilakukan transformasi keluaran yang
dikendalikan oleh 4 sub-blok kunci 16-bit.
Pada setiap putaran dilakukan operasi-operasi sebagai berikut :
1. Perkalian X1 dengan sub-kunci pertama, A = X1 K1
2. Penjumlahan X2 dengan sub-kunci kedua, B = X2 + K2
3. Pejumlahan X3 dengan sub kunci ketiga, E = A C
4. Perkalian X4 dengan sub kunci keempat, C = X3 + K3
5. Op erasi XOR hasil langkah 1 dan 3, D = X4 K4
6. Op erasi XOR hasil langkah 2 dan 4, F = B D
7. Perkalian hasil langkah 5 dengan sub-kunci kelima, G = E K5
8. Penjumlahan hasil langkah 6 dengan langkah 7, H = G + F
9. Perkalian hasil langkah 8 dengan sub-kunci keenam, J = H K6
10. Penjumlahan hasil langkah 7 dengan 9, L = J + G
11. Op erasi XOR hasil langkah 1 dan 9, R1 = A J
12. Op erasi XOR hasil langkah 3 dan 9, R2 = C J
13. Op erasi XOR hasil langkah 2 dan 10, R3 = B L
14. Op erasi XOR hasil langkah 4 dan 10, R4 = D L
Ket : = Xor, = Perkalian Modulo 216 + 1, + = Penambahan modulo 216.


Gambar 2.3. Skema Putaran Algoritma IDEA

Keluaran setiap putaran adalah 4 sub-blok yang dihasilkan pada langkah 11, 12, 13, dan
14 dan menjadi masukan putaran berikutnya. Setelah putaran kedelapan terdapat transformasi
keluaran, yaitu :
1. Perkalian X1 dengan sub-kunci pertama
2. Penjumlahan X2 dengan sub-kunci ketiga
3. Penjumlahan X3 dengan sub-kunci kedua
4. Perkalian X4 dengan sub-kunci keempat
Terakhir, keempat sub-blok 16-bit 16-bit yang merupakan hasil operasi 1, 2, 3, dan 4
digabung kembali menjadi blok pesan rahasia 64-bit.

Untuk proses Deskripsi IDEA :

Proses dekripsi menggunakan algoritma yang sama dengan proses enkripsi tetapi 52 buah
sub-blok kunci yang digunakan masing-masing merupakan hasil turunan 52 buah sub-blok kunci
enkripsi.


2.1.3. Advanced Encryption Standard (AES)

Advanced Encryption Standard (AES) merupakan standar enkripsi dengan kunci-simetris
yang diadopsi oleh pemerintah Amerika Serikat. Standar ini terdiri atas 3 blok cipher, yaitu AES-
128, AES-192 and AES-256, yang diadopsi dari koleksi yang lebih besar yang awalnya
diterbitkan sebagai Rijndael. Masing-masing cipher memiliki ukuran 128-bit, dengan ukuran
kunci masing-masing 128, 192, dan 256 bit. AES telah dianalisis secara luas dan sekarang
digunakan di seluruh dunia, seperti halnya dengan pendahulunya, Data Encryption Standard
(DES).
AES diumumkan oleh Institut Nasional Standar dan Teknologi (NIST) sebagai Standar
Pemrosesan Informasi Federal (FIPS) publikasi 197 (FIPS 197) pada tanggal 26 November 2001
setelah proses standardisasi selama 5 tahun, di mana ada 15 desain enkripsi yang disajikan dan
dievaluasi, sebelum Rijndael terpilih sebagai yang paling cocok. AES efektif menjadi standar
pemerintah Federal pada tanggal 26 Mei 2002 setelah persetujuan dari Menteri Perdagangan.
AES tersedia dalam berbagai paket enkripsi yang berbeda. AES merupakan standar yang
pertama yang dapat diakses publik dan sandi-terbuka yang disetujui oleh NSA untuk informasi
rahasia. Rijndael dikembangkan oleh dua kriptografer Belgia, Joan Daemen dan Vincent Rijmen,
dan diajukan oleh mereka untuk proses seleksi AES.


Gambar 2.4. Skema Algoritma AES



Proses shift dalam AES
Ada 10, 12, atau 14 putaran (round) dalam AES. Jumlah putaran ini sesuai dengan
ukuran kunci yang digunakan. Setiap putarab mengandung :
Penggantian Byte (SubByte) yang sama seperti DES
Peralihan = Pertukaran baris
Campur Jalur = Peralihan Kiri & XOR Bit-bit.
Penambahan Subkunci = XOR Bagian Kunci dengan Keputusan Putaran

2.2. Metode GOST

GOST merupakan algoritma block cipher yang dikembangkan oleh Uni Soviet dengan
nama lengkap yaitu "Gosudarstvennyi Standard Soyuza SSR" atau diterjemahkan ke dalam
bahasa Inggris menjadi "Government Standard of the Union of Soviet Socialist Republics"
[Sch96]. GOST merupakan algoritma 64-fo/f block dengan panjang key mencapai 256 bit.
Algoritma ini terdiri dari 32 putaran {round) untuk melakukan enkripsi/dekripsi. Untuk
melakukan enkripsi, terlebih dahulu suatu berkas teks dipecah menjadi dua bagian yang sama
yaitu bagian kiri {left half), L, dan bagian kanan {right half), R. Subkey untuk putaran ke I adalah
Ki. Sebuah putaran dapat dinyatakan dalam persamaan sebagai berikut:
Li = RM
Ri = LM f(R, KO


Gambar 3.1. Skema GOST
Gambar 1 menyatakan sebuah putaran GOST. Tahap pertama, teks bagian kanan (RM)
dan subkey ke / ditambahkan dengan modulo 2 . Hasilnya dipecah menjadi potongan 4 bit
sebanyak 8 buah, setiap potongan menjadi masukan ke S-box yang berbeda. Ada 8 buah S-box
yang berbeda dalam GOST, 4 bit pertama akan menjadi masukan bagi S-box pertama, 4 bit
kedua akan menjadi masukan bagi S-box kedua dan seterusnya. Setiap S-box merupakan
permutasi angka 0 sampai dengan 15. Sebagai contoh, sebuah S-box dapat berupa deretan angka:
7, 10,2,4,15,9,0,3,6, 12,5, 13,1,8,11
Dalam kasus ini, jika masukan bagi S-box adalah 0 maka keluarannya menjadi 7. Jika
masukan bagi S-box adalah 1 maka keluarannya menjadi 10 dan seterusnya. Seluruh S-box harus
dijaga kerahasiaannya. Hasil dari seluruh S-box digabungkan ke dalam 32-bit word, lalu seluruh
word digeser sebesar 11 bit ke kiri secara sirkular. Pada akhirnya, hasil pergeseran tersebut di
XOR-kan dengan teks bagian kiri (I_M) untuk menjadi teks bagian kanan yang baru (R,).
Keseluruhan proses ini berlanjut sampai dengan 32 putaran. Subkey dihasilkan dengan
mekanisme yang sederhana. 256-b/f key dibagi ke dalam 32-b/f block sebanyak 8 buah yaitu
k1,k2,..., k8. Setiap putaran menggunakan subkey berbeda, sebagaimana dinyatakan dalam tabel
2 di bawah ini:


3.1. Perancangan Kunci Enkripsi/Dekripsi
Perancangan ini mencakup pembuatan kunci enkripsi, mekanisme baik mekanisme
enkripsi maupun mekanisme dekripsi.

3.1.1. Pembuatan Kunci Enkripsi

Sebelum proses enkripsi dilakukan, kunci untuk proses tersebut harus terlebihdahulu
dibuat dan kerahasiaannya harus terjaga dengan baik. Urutan pembuatan kunci yaitu:
a. Menghitung banyaknya karakter plaintext.
b. Memanggil fungsi pembangkit bilangan acak untuk mendapatkan banyaknya bit satu.
c. Inisialisasi kunci dengan rangkaian bit nol.
d. Memanggil fungsi pembangkit bilangan acak untuk mendapatkan posisi penempatan bit satu.
e. Mengisi bit satu pada posisi yang telah ditentukan.

3.1.2 Mekanisme Enkripsi

Guna melakukan fungsi enkripsi/dekripsi, digunakan algoritma enkripsi block cipher
Dengan ukuran blok yang bervariasi mulai dari 2 karakter sampai dengan 200 karakter per blok
(untuk enkripsi) atau 400 karakter per blok (untuk dekripsi). Panjang key yang digunakan pun
bervariasi mulai dari 2 karakter sampai dengan 400 karakter.
Proses enkripsi terjadi menurut urutan berikut ini:
a. Membaca plaintext per karakter dalam baris file.
b. Mengubah setiap karakter ASCII menjadi bit.
c. Susun seluruh bit sampai satu baris file selesai dibaca.
d. Memanggil fungsi pembuatan kunci enkripsi.
e. Melakukan operasi XOR antara kunci dengan susunan bit plaintext.
f. Melakukan rotasi 3 bit ke kanan terhadap hasil operasi XOR di atas.
g. Susun seluruh bit pada teks dan kunci secara selang-seling.
h. Ubah kembali notasi bit ke dalam karakter ASCII.
Struktur format file sebelum dan setelah dienkripsi akan menjadi:


Gambar 3.2. Perbandingan Format File sebelum dan sesudah enkripsi



3.1.3 Mekanisme Dekripsi

Proses dekripsi merupakan kebalikan proses enkripsi yaitu:
a. Membaca ciphertext per karakter dalam baris file.
b. Mengubah setiap karakter ASCII menjadi bit.
c. Susun ulang seluruh bit guna memperoleh kunci dan teks yang akan didekripsi.
d. Melakukan rotasi 3 bit ke kiri untuk setiap bit.
e. Melakukan operasi XOR.
f. Susun ulang seluruh bit.
g. Ubah kembali notasi bit ke dalam karakter ASCII sehingga diperoieh plaintext semula.

Jadi, secara keseluruhan proses enkripsi/dekripsi yang terjadi dapat dinyatakan dalam
diagram sebagai berikut:

Gambar 3.3. Mekanisme Enkripsi/Dekripsi



3.2. Contoh Implementasi

3.2.1. Proses Pembentukan Kunci

Proses pembentukan kunci ini memerlukan input data key dengan panjang 256 bit atau 64
digit heksadesimal atau 32 buah karakter. Proses ini dapat dilihat pada contoh berikut ini :
Misalkan key : Kriptografi Metoda GOST, Rosmaya
1. KUNCI = 'Kriptografi Metoda GOST, Rosmaya'.
2. Ubah kunci ke bentuk biner.

Gambar 3.4. Pengubahan Kunci ke Biner

Hasil konversi kunci ke bentuk biner
= (k(1), k(2), k(3), ... , k(256))
=010010110111001001101001011100000111010001101111011001110111001001
1000010110011001101001001000000100110101100101011101000110111101
1001000110000100100000010001110100111101010011010101000010110000
10000001010010011011110111001101101101011000010111100101100001


Kelompokkan hasil yang didapat pada K(0) - K(7)
K(0) = k( 32), ... , k( 1) = 00001110100101100100111011010010
K(1) = k( 64), ... , k( 33) = 01001110111001101111011000101110
K(2) = k( 96), ... , k( 65) = 00000100100101100110011010000110
K(3) = k(128), ... , k( 97) = 11110110001011101010011010110010
K(4) = k(160), ... , k(129) = 11100010000001001000011000100110
K(5) = k(192), ... , k(161) = 00110100001010101100101011110010
K(6) = k(224), ... , k(193) = 11001110111101100100101000000100
K(7) = k(256), ... , k(225) = 10000110100111101000011010110110

Tabel 3.1. S-Box dari Metode GOST


3.2.2. Proses Enkripsi

Proses enkripsi dari metoda GOST memproses input data plaintext 64 bit atau 16 digit
heksadesimal atau 8 karakter dengan melalui 32 tahapan iterasi (putaran). Misalkan diambil hasil
pembentukan kunci di atas dan plaintext ENKRIPSI, PROSES ENKRIPSI - PUTARAN 0


(1) PLAIN TEXT = 'ENKRIPSI'

Konversi ke biner =
0100010101001110010010110101001001001001010100000101001101001001
L(0) = 10010010110010100000101010010010
R(0) = 01001010110100100111001010100010

(2) R(0) + K(0) mod 232

R( 0) = 1255305890
K( 0) = 244731602
-------------------------------- +
Hasil = 1500037492 mod 232
= 1500037492
= 01011001011010001100000101110100









3.2.3. Proses Dekripsi

Proses dekripsi merupakan kebalikan dari proses enkripsi. Proses dekripsi dari metoda
GOST menggunakan algoritma yang sama dengan proses enkripsi.

PROSES DEKRIPSI - PUTARAN 0
(1) CIPHER TEXT = '-k'
Konversi ke biner =
1010100100011110000000110001100111110001101001100110101110111110
L(0) = 01111101110101100110010110001111
R(0) = 10011000110000000111100010010101













4.1. Kesimpulan

Kelebihan algoritma GOST adalah berupa round yang panjang dan panjang kunci yang
default, sebesar 256-bit dan kecepatan proses enkripsi/dekripsi dapat dikategorikan sebagai
waktu yang cukup baik meski tak secepat algoritma Blowfish. Sedangkan kelemahannya struktur
round dan key schedule-nya yang terlalu sederhana sehingga pada keadaan tertentu menjadi titik
lemahnya terhadap metoda kriptanalisis seperti Related-key Cryptanalysis.

Anda mungkin juga menyukai