BAB II TINJAUAN PUSTAKA 2.1 Pengertian kriptografi kriptografi adalah seni atau ilmu yang digunakan untuk menjaga keamanan informasi atau pesan dengan mengubahnya menjadi suatu yang tidak memiliki arti. Pada kriptografi terdapat enkripsi dan dekripsi, enkripsi adalah mengubah pesan menjadi data yang tidak bisa dibaca atau di mengerti sedangkan dekripsi adalah mengembalikan data seperti semula sehingga data dapat dibaca dengan baik. Selain itu kriptografi juga dapat dibagi berdasarkan jenis kunci yaitu algoritma simetris dan asimetris. Agoritma simetris adalah algortima yang menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi, sedangkan algoritma asimetris adalah algoritma yang menggunakan kunci berbeda untuk melakukan enkripsi dan dekripsi, untuk eknripsi menggunakan kunci public dan dekripsi menggunakan kunci private. 2.1.1 Kriptografi simetris Algoritma simetris (symmetric
algorithm)
adalah
algortima
yang
menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi.
Gambar 2.1 Proses algoritma kriptografi simetris (Sumber : Kristoforus, Aditya, 2012) 2.1.2 Algoritma AES AES merupakan standar algoritma kriptografi terbaru yang dipublikasikan oleh NIST ( National Institute of Standard and Technology ) sebagai pengganti algoritma DES ( Data Encryption Standard ) yang sudah berakhir masa penggunaannya. Algoritma AES adalah algoritma kriptografi yang dapat mengenkripsi dan mendekripsi data dengan panjang kunci 128 bit, 192 bit, dan 256 bit. Pada algoritma AES (Yuniati dkk, 2009) perbedaan panjang kunci akan mempengaruhi jumlah round yang akan diimplementasikan pada algoritma AES.
1
Tabel 2.1 Jumlah proses berdasarkan bit blok dan kunci ( Sumber : Yuniati dkk, 2009 )
Pada table diatas memperlihatkan jumlah round / putaran ( Nr ) yang harus diimplementasikan pada masing-masing panjang kunci. Dibawah ini adalah diagram proses enkripsi dan dekripsi dari algoritma AES.
Gambar 2.2 Diagram proses enkripsi (Sumber : Kristoforus, Aditya, 2012)
Gambar 2.3 Diagram proses dekripsi (Sumber : Kristoforus, Aditya, 2012)
2
2.2 Proses Enkripsi Advanced Enryption Standard (AES) Proses enkripsi algoritma AES terdiri dari 4 jenis transformasi bytes, yaitu SubBytes, ShiftRows, Mixcolumns, dan AddRoundKey. 2.2.1 Sub bytes Proses SubBytes adalah mengganti setiap byte state dengan byte pada sebuah tabel yang dinamakan tabel S-Box. Sebuah tabel S-Box terdiri dari 16x16 baris dan kolom dengan masing-masing berukuran 1 byte.
Gambar 2.4 S-box ( Sumber : Yuniati dkk, 2009 )
Gambar 2.5 Proses sub bytes ( Sumber : Yuniati dkk, 2009 ) 2.2.2 Shift Row Shift rows adalah proses pergeseran bit, bit paling kiri akan dipindahkan menjadi bit paling kanan ( rotasi bit ).
Gambar 2.6 Proses shift row ( Sumber : Yuniati dkk, 2009 )
3
2.2.3 Mix Columns MixColumns mengoperasikan setiap elemen yang berada dalam satu kolom pada state. lebih jelasnya bisa dilihat pada perkalian matriks dibawah ini :
Hasil dari perkalian matriks diatas dapat dilihat dibawah ini :
Berikut adalah contoh perhitungan MixColumns : Input = D4 BF 5D 30 Output (0) = (D4*2) XOR (BF*3) XOR (5D*1) XOR (30*1) = E(L(D4)+L(02)) XOR E(L(BF)+L(03)) XOR 5D XOR 30 = E(41+19) XOR E(9D+1) XOR 5D XOR 30 = E(5A) XOR E(9E) XOR 5D XOR 30 = B3 XOR DA XOR 5D XOR 30 = 04 Output (1) = (D4*1) XOR (BF*2) XOR (5D*3) XOR (30*1) = D4 XOR E(L(BF)+L(02)) XOR E(L(5D)+L(03)) XOR 30 = D4 XOR E(9D+19) XOR E(88+01) XOR 30 = D4 XOR E(B6) XOR E(89) XOR 30 = D4 XOR 65 XOR E7 XOR 30 = 66 Output (2) = (D4*1) XOR (BF*1) XOR (5D*2) XOR (30*3) = D4 XOR BF XOR E(L(5D)+L(02)) XOR E(L(30)+L(03)) = D4 XOR BF XOR E(88+19) XOR E(65+01) = D4 XOR BF XOR E(A1) XOR E(66)
4
= D4 XOR BF XOR BA XOR 5D = 81 Output (3) = (D4*3) XOR (BF*1) XOR (5D*1) XOR (30*2) = E(L(D4)+L(03)) XOR BF XOR 5D XOR E(L(30)+L(02)) = E(41+01) XOR BF XOR 5D XOR E(65+19) = E(42) XOR BF XOR (5D) XOR (E(7E) = 67 XOR BF XOR 5D XOR 60 = E5 Hasil dari MixColumns dicari dengan menggunakan tabel Galois Field Multiplication. Cara yang dilakukan adalah mirip dengan mencari nilai SubByte, tetapi tabel yang digunakan bukan tabel S-Box, melainkan E-Table dan L-Table dari Galois Field Multiplication.
Gambar 2.7 E-Table dari Galois Field Multiplication (Sumber : Barent, 2014)
Gambar 2.8 L-Table dari Galois Field Multiplication (Sumber : Barent, 2014)
5
2.3 Proses Dekripsi Advanced Encryption Standard (AES) Proses dekripsi algoritma AES berbeda dengan proses enkripsi, transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah yang berlawanan. Transformasi byte yang digunakan pada invers cipher adalah InvShiftRows, InvSubBytes, InvMixColumns, dan AddRoundKey. 2.3.1 InvShiftRows InvShiftRows adalah berkebalikan dengan transformasi shiftrows pada proses enkripsi. Pada transformasi InvShiftRows, dilakukan pergeseran bit ke kanan.
Gambar 2.9 Transformasi InvShiftRows ( Sumber : Yuniati dkk, 2009 ) 2.3.2 InvSubBytes InvSubBytes adalah berkebalikan dengan transformasi SubBytes pada proses enkripsi. Pada InvSubBytes, tiap elemen pada state dipetakan dengan menggunakan table Inverse S-Box.
Gambar 2.10 Inverse S-Box ( Sumber : Yuniati dkk, 2009 ) 2.3.3 InvMixColumns Setiap kolom dalam state dikalikan dengan matrik perkalian dalam AES. Perkalian dalam matrik dapat dilihat dibawah ini : 6
Hasil dari perkalian dalam matrik adalah
Untuk mencari hasil dari invers mixcolumn hampir sama dengan perhitungan pada mixcolumn dengan menggunakan tabel E dan tabel L. 2.4 Add Round Key Pada proses ini subkey digabungkan dengan state. Proses penggabungan ini menggunakan operasi XOR untuk setiap byte dari subkey dengan byte yang bersangkutan dari state. Untuk setiap tahap, subkey dibangkitkan dari kunci utama dengan menggunakan proses key schedule. Setiap subkey berukuran sama dengan state yang bersangkutan.
Gambar 2.11 Proses add round key ( Sumber : Surian, 2009 ) 2.5 Key Schedule Proses key schedule diperlukan untuk mendapatkan subkey-subkey dari kunci utama agar dapat melakukan enkripsi dan dekripsi. Proses ini terdiri dari beberapa operasi yaitu:
Operasi Rotate, yaitu operasi perputaran 8 bit pada 32 bit dari kunci. 7
Operasi SubBytes, pada operasi ini 8 bit dari subkey disubstitusikan dengan nilai dari S-Box.
Operasi Rcon, operasi ini dapat diterjemahkan sebagai operasi pangkat 2 nilai tertentu dari user. Operasi ini menggunakan nilai-nilai dalam Galois field. Nilai-nilai dari Rcon kemudian akan di-XOR dengan hasil operasi SubBytes. Operasi XOR dengan w[i-Nk] yaitu word yang berada pada Nk sebelumnya.
Tabel 2.2 Tabel Rcon (Sumber : Stallings, 2010)
2.6 Gambar (Citra Digital) Gambar adalah suatu representasi kemiripan atau imitasi dari suatu objek. Sebuah citra digital dapat diwakili oleh sebuah matriks yang terdiri dari M kolom dan N baris, dimana perpotongan antara kolom dan baris disebut piksel, yaitu elemen terkecil dari sebuah citra. Citra bitmap menyimpan data kode citra secara digital dan lengkap, salah satu contoh citra bitmap yaitu bmp (Kristoforus, Aditya, 2012). Format file bmp ini biasanya digunakan oleh aplikasi dan sistem operasi Microsoft Windows dan merupakan kompresi tipe lossless. Format ini mampu menyimpan informasi dengan kualitas tingkat 1 bit sampai 24 bit. 2.7 Kompresi Lossless Metode Lossless adalah metode yang dapat memperkecil filenya sehingga ukuran datanya menjadi kecil, namun dapat dikembalikan lagi seperti aslinya. Proses kompresi dapat dilakukan dengan mengganti suatu data dengan kode yang berukuran lebih ringkas, data yang diganti tersebut dapat dikembalikan seperti semula dengan melakukan proses dekompresi. Tujuan utama dari metode lossless (Wijaya, Widodo, 2010) adalah menghasilkan file yang kecil namun tanpa sedikitpun mengurangi kualitas dari data tersebut. Hal ini sangat penting untuk
8
data-data yang memerlukan keakuratan yang tinggi. Contoh teknik kompresi lossless diantaranya adalah Huffman dan Lempel-Ziv-Welch, Dynamic Markov Compression. 2.7.1 Algoritma Huffman Algoritma Huffman ini pertama kali diterbitkan pada tahun 1952 oleh D.A. Huffman dalam paper-nya yang berjudul “A Method for the Construction of Minimum Redundancy Codes”. Secara umum, algoritma ini dapat memberikan penghematan sebesar 20%- 30%. Prinsip kerja dari Algoritma Huffman (Adrisatria, 2006) adalah mengodekan setiap karakter ke dalam representasi bit. Representasi bit untuk setiap karakter akan berbeda dari segi panjangnya. Hal ini disebut sebagai variable-length code. Panjang pendek bit yang dihasilkan ditentukan dengan sering atau tidak karakter tersebut muncul, jika sering maka bitnya pendek sedangkan jika jarang maka bitnya makin panjang. Untuk cabang kiri pada pohon biner diberikan label 0, sedangkan pada cabang kanan diberikan label 1. Kompresi Huffman adalah metode paling efisien dari metode lain yang sejenis karena pemetaan lain menghasilkan simbol dari sumber data menjadi string unik dan menghasilkan file output yang lebih kecil. Algoritma huffman merupakan algoritma yang paling sederhana dibandingkan dengan algoritma pengompresian lainnya karena Algoritma Huffman Statis hanya membutuhkan 2 langkah dalam pengompresian hal ini membuatnya begitu cepat, yaitu encoding dan decoding karena peta kode akan selalu sama (Soendoro,2009). Algoritma huffman ini dibagi menjadi dua yaitu statis dan dinamis. Algoritma huffman dinamis lebih sering dipakai dalam proses transfer data (streaming) dan Algoritma huffman statis dipakai dalam proses pengompresian internal (Soendoro,2009). Kode Huffman pada dasarnya ( Putra dkk, 2013) adalah himpunan yang berisi sekumpulan kode biner yang direpresentasikan dari pohon biner yang diberikan nilai atau label. Untuk cabang kiri diberikan label 0, sedangkan pada cabang kanan diberikan label 1. Pohon biner ini biasa disebut pohon Huffman (Huffman tree). Langkah-langkah pembentukannya sebagai berikut :
9
Gambar 2.12 Diagram alir pengkodean Huffman (Sumber : Zulen, 2009) Setelah mendapatkan pohon biner, data asli dapat digantikan dengan kode bit berdasarkan pohon biner, proses ini dinamakan encoding. Encoding merupakan sebuah cara dalam menyusun susunan (string) biner dari data yang ada. Proses encoding dilakukan setelah kita memperoleh pohon Huffman (Soendoro, 2009) yaitu terlebih dahulu melihat akar baru kemudian akar kiri kemudian kanan. Penyusunan pohon Huffman harus yang kemunculan lebih besar di kiri, karena pohon kiri akan diperiksa terlebih dahulu daripada pohon kanan. Metode
Huffman
termasuk
metode
lossless compression.
Pengkodean citra berdasarkan pada derajat keabuan (gray level) atau tingkat warna dari piksel-piksel dalam keseluruhan image. Dengan kata lain, metode Huffman termasuk dalam pendekatan statistikal (statistical compression) dalam kompresi citra (Zulen, 2009). Derajat keabuan yang sering muncul pada citra akan dikodekan dengan jumlah bit lebih sedikit 10
sedangkan derajat keabuan yang sedikit muncul akan dikodekan dengan jumlah yang lebih panjang. Algoritma Huffman untuk kompresi citra yaitu: 1. Buat data citra yang berupa matriks tersebut menjadi vektor. 2. Tentukan frekuensi kemunculan tiap warna atau derajat keabuan. 3. Urutkan secara menaik warna atau nilai keabuan berdasarkan frekuensi kemunculannya atau peluang kemunculan piksel dalam citra Setiap nilai dinyatakan sebagai pohon bersimpul tunggal dan setiap simpul diassign dengan frekuensi kemunculan nilai tersebut. 4. Gabungkan 2 buah pohon yang mempunyai frekuensi kemunculan paling
kecil
pada
sebuah akar. Akar mempunyai
frekuensi yang
merupakan jumlah dari frekuensi dua pohon penyusunnya. Frekuensi dengan nilai lebih kecil diletakkan di sisi kiri dan diberi bobot 0 sedangkan sisi kanan diberi bobot 1. 5. Ulangi langkah 4 sampai tersisa 1 pohon biner. 6. Telusuri pohon biner dari akar ke daun. Barisan bobot sisi dari akar ke daun menyatakan kode Huffman untuk derajat keabuan atau warna yang bersesuaian. 7. Mengganti data dengan kode Huffman yang bersesuaian 8. Menyimpan data lebar citra, tinggi citra, kode bit untuk tiap nilai, data warna yang terdapat di dalam citra, dan data citra yang sudah dikodekan ke dalam file hasil kompresi. Berikut ini adalah langkah-langkah untuk mengembalikan data citra yang sudah dikodekan menjadi data citra semula : 1. Baca file hasil kompresi dan data-datanya dimasukkan ke variabel yang sesuai
yaitu variabel ukuran citra, variabel kode bit data,dan variabel
warna 2. Baca data kode bit per bit dari kiri ke kanan dan dicocokkan dengan kode Huffman dari data warna yang didapat.Demikian seterusnya konversi dilakukan hingga data terakhir. 3. Rekonstruksi citra dengan menggunakan data ukuran citra, berarti data pixel berbentuk 1D dipenggal baris dan kolom sesuai ukuran citra.
11
2.7.2 Rasio Kompresi Rasio kompresi data adalah menghitung pengurangan ukuran representasi data yang dihasilkan oleh algoritma kompresi data (Zulen, 2009). Untuk menghitung persentase kompresi dengan cara : ……………….(1)
Sedangkan untuk menghitung rasio kompresi dengan cara : ……………….(2)
2.8 Algoritma SHA (Secure Hash Algorithm) SHA adalah fungsi hash satu-arah yang dibuat oleh NIST dan digunakan bersama DSS (Digital Signature Standard). Oleh NSA, SHA dinyatakan sebagai standard fungsi hash satu-arah. Pada tahun 2002 dipublikasikan empat variasi lainnya, yaitu SHA-224, SHA-256, SHA-384, dan SHA-512, keempatnya disebut sebagai SHA-2 (Sutanto, 2011). Algoritma hash menghitung suatu representasi digital dengan panjang yang telah ditentukan (message digest) dari suatu masukkan data yang panjangnya berbeda-beda atau bermacam-macam. SHA-1 menerima masukan berupa pesan dengan ukuran maksimum 264 bit (2.147.483.648 gigabyte) dan menghasilkan message digest yang panjangnya 160 bit, lebih panjang dari message digest yang dihasilkan oleh MD5 yang hanya 128 bit. Algoritma utama SHA-1 terdiri dari enam proses utama berikut. 1. Inisialisasi variabel kunci 2. Penambahan bit 1 3. Pemecahan pesan ke dalam kelompok berukuran 512-bit 4. Ekstensi pesan 5. Iterasi utama 6. Pembangkitan hash value.
12