BAB 2 TINJAUAN PUSTAKA
2.1. Definisi Kriptografi Penjagaan sebuah informasi sangatlah diperlukan agar tidak jatuh ke tangan orangorang yang tidak berhak untuk mengaksesnya. Teknik kriptografi telah banyak digunakan sebagai salah satu cara untuk menciptakan sebuah informasi yang selalu terjaga keabsahannya (Dony Ariyus, 2005). Kriptografi pada awalnya merupakan ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Kemudian seiring dengan berkembangnya kriptografi yaitu di mana kriptografi tidak lagi sebatas mengenkripsikan pesan, tetapi juga memberikan aspek keamanan yang lain seperti serangan dari kriptanalisis. Oleh karena itu pengertian kriptografi pun berubah menjadi ilmu sekaligus seni untuk menjaga keamanan pesan. Cryptography (kriptografi) berasal dari bahasa Yunani yaitu dari kata crypto yang berarti penulisan screet (rahasia), sedangkan graphein artinya writing (tulisan). Jadi secara sederhana dapat diartikan screet writing (tulisan rahasia). Definisi lain dari kriptografi adalah sebuah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data serta otentikasi (Rinaldi Munir, 2006). Menurut terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain (Dony Ariyus, 2005). Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu : 1.
Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka atau mengupas informasi yang telah disandi.
8 2.
Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, psssenghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.
3.
Autentikasi, adalah berhubungan dengan identifikasi atau pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.
4.
Non-repudiasi, adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman atau terciptanya suatu informasi oleh yang mengirimkan atau membuat. Teknik kriptografi untuk enkripsi data ada dua macam, antara lain :
1. Kriptografi Simetris 2. Kriptografi Asimetris
2.1.1. Kriptografi Simetris Algoritma simetris atau sering disebut algoritma kriptografi konvensional adalah algoritma yang menggunakan kunci yang sama untuk proses enkripsi dan proses deskripsi. Algoritma kriptografi simetris dibagi menjadi dua kategori yaitu algoritma aliran (Stream Ciphers) dan algoritma blok (Block Ciphers). Di mana pada algoritma aliran, proses penyandiannya akan beriorientasi pada satu bit atau byte data. Sedangkan pada algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte data (per blok). Adapun contoh algoritma kunci simetris adalah DES (Data Encryption Standard), Blowfish, Twofish, MARS, IDEA, 3DES (DES diaplikasikan 3 kali), AES (Advanced Encryption Standard) yang bernama asli Rijndael.
9
Gambar 2.1 Proses Enkripsi dan Dekripsi Kriptografi Simetris
2.1.2. Kriptografi Asimetris Kriptografi asimetris adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi. Di mana kunci enkripsi dapat disebarkan kepada umum dan dinamakan sebagai kunci publik (public key), sedangkan kunci deskripsi disimpan untuk digunakan sendiri dan dinamakan sebagai kunci pribadi (private key). Oleh karena itu, kriptografi ini dikenal pula dengan nama kriptografi kunci publik (public key cryptography). Adapun contoh algoritma yang menggunakan kunci asimetris adalah RSA (Riverst Shamir Adleman) dan ECC (Elliptic Curve Cryptography). Adapun pada kriptografi asimetris, di mana setiap pelaku sistem informasi akan memiliki sepasang kunci, yaitu kunci publik dan kunci pribadi, dimana kunci publik di distribusikan kepada umum, sedangkan kunci pribadi disimpan untuk diri sendiri. Artinya bila A ingin mengirimkan pesan kepada B, A dapat menyandikan pesannya dengan menggunakan kunci publik B, dan bila B ingin membaca surat tersebut, ia perlu mendeskripsikan surat itu dengan kunci privatnya. Dengan demikian kedua belah pihak dapat menjamin asal surat serta keaslian surat tersebut.
Gambar 2.2 Proses Enkripsi dan Dekripsi Kriptografi Asimetris
10
2.2. Algoritma Rijndael Algoritma kriptografi bernama Rijndael yang didesain oleh oleh Vincent Rijmen dan John Daemen asal Belgia keluar sebagai pemenang kontes algoritma kriptografi pengganti DES yang diadakan oleh NIST (National Institutes of Standards and Technology) milik pemerintah Amerika Serikat pada 26 November 2001. Algoritma Rijndael inilah yang kemudian dikenal dengan Advanced Encryption Standard (AES). Setelah mengalami beberapa proses standarisasi oleh NIST, Rijndael kemudian diadopsi menjadi standar algoritma kriptografi secara resmi pada 22 Mei 2002. Pada 2006, AES merupakan salah satu algoritma terpopuler yang digunakan dalam kriptografi kunci simetrik. Proses enkripsi pada algoritma Rijndael terdiri dari 4 jenis transformasi byte, yaitu SubBytes(), ShiftRows(), MixCoulums(), dan AddRoundKey(). Pada awal proses enkripsi, masukan yang telah berbentuk array state akan mengalami transformasi AddRoundKey(). Setelah itu, array state akan mengalami transformasi SubBytes(), ShiftRows(), MixColoumns(), dan AddRoundKey() secara berulang-ulang sebanyak Nr. Proses ini dalam algoritma Rijndael disebut sebagai round function. Round yang terakhir agak berbeda dengan round-round sebelumnya dimana pada round terakhir, array state tidak mengalami transformasi MixColumns().
Gambar 2.3 Diagram Proses Enkripsi Rijndael
11
Transformasi cipher dapat dibalikkan dan diimplementasikan dalam arah yang berlawanan untuk menghasilkan inverse cipher. Transformasi yang digunakan pada inverse cipher adalah InvShiftRows(), InvSubBytes(), InvMixClolumns(), dan AddRoundKey().
Gambar 2.4 Diagram Proses Dekripsi Rijndael (Stallings, 2005) 2.2.1. Rijndael Block Chiper AES memiliki ukuran block yang tetap sepanjang 128 bit dan ukuran kunci sepanjang 128, 192, atau 256 bit. Berdasarkan ukuran block yang tetap, AES block bekerja pada matriks berukuran 4 x 4 di mana tiap-tiap sel matriks terdiri atas 1 byte (8 bit) (Nuryatin, 2014). Kunci round diturunkan dari kunci cipher melalui jadwal kunci, yang terdiri dari ekspansi kunci dan pemilihan kunci round. Jumlah round yang digunakan cipher rijndael adalah sebuah fungsi dari ukuran kunci sebagai berikut: 1. Kunci 128 bit: 10 round 2. Kunci 192 bit: 12 round 3. Kunci 256 bit: 14 round
2.3. Enkripsi Enkripsi adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan dalam bahasa sandi (ciphertext).
12
C = E ( M) Keterangan: C = Chipertext (Plaintext yang terenkripsi AES) E = Proses enkripsi dengan Key Private M = Pesan asli (Plaintext) Secara umum enkripsi dengan algoritma Rijndael 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 masing-masing kolom array state. d) AddRoundKey : Melakukan XOR antara state sekarang dengan round key. 3. Final round : Proses untuk putaran terakhir: a) SubBytes b) ShiftRows c) AddRoundKey
Diskripsi proses enkripsi sebagai berikut : 1.
Add Round Key Add Round Key pada dasarnya adalah mengkombinasikan chiper teks yang sudah ada dengan chiper key yang chiper key dengan hubungan XOR. Bagannya bisa dilihat pada Gambar 2.5
Gambar 2.5 Round Key
13
2.
Sub Bytes Proses SubBytes () memetakan setiap byte dari array state dengan menggunakan tabel substitusi S-Box. Tidak seperti Des S-box berbeda pada setiap putaran, AES hanya mempunyai satu buah S-Box. Tabel yang digunakan adalah seperti pada Tabel 2.1
Tabel 2.1 S-BOX Untuk Enkripsi
Cara pensubstitusian adalah untuk setiap byte pada array state, misalkan S[r,c] = xy, yang dalam hal ini xy adalah digit heksadesimal dari nilai Sā[r,c], maka nilai substitusinya, yang dinyatakan dengan Sā[r,c], adalah elemen di dalam S-Box yang merupakan perpotongan baris x dengan kolom y. Gambar 2.6 memperlihatkan transformasi SubBytes.
Gambar 2.6 Ilustrasi Sub Bytes
14
Add Round Key (State 1 XOR Cipherkey) State 2
: 19
a0
9a
e9
3d
f4
c6
f8
e3
e2
8d
48
be
2b
2a
08
Untuk angka 19 cara mengambil nilai sub bytenya sebagai berikut ini : Tabel 2.2 Tabel S-BOX Pengambilan Nilai Sub Byte
SubBytes (Subtitusi State 2 dengan S-Box Rijndael) State 3
3.
: d4
e0
b8
1e
27
bf
b4
41
11
98
5d
52
ae
f1
e5
30
Shift Rows Proses ShiftRows() ini adalah proses yang sangat sederhana. Pada ShiftRows() melakukan pergeseran wrapping (sikklik) pada 3 baris terakhir dari array state. Jumlah pergeseran bergantung nilai baris (r). Baris r = 1 digeser sejauh 1 byte, baris r = 2 digeser 2 byte, dan baris r = 3 digeser sejauh 3 byte. Baris r = 0 tidak digeser. Contoh : Geser baris 0 sebesar 0
15
byte : Karena 0 byte maka tidak melakukan pergeseran dan state-pun tetap sama.
Geser Baris 1 Sebesar 0
Geser Baris 3 Sebesar Dua Byte
Geser Baris 2 Sebesar Satu Byte
Geser Baris 4 Sebesar Tiga Byte
Gambar 2.7 Ilustrasi dari Shift Row Hasil dari Shift Row Sebagai berikut : Shift Row (Pergeseran Elemen State 3) State 4
4.
: d4
e0
b8
1e
bf
b4
41
27
5d
52
11
98
30
ae
f1
e5
Mix Columns Transformasi menggunakan MixColumns() adalah proses ketiga dalam satu Ronde enkripsi AES. Di sini, kolom-kolom pada array state akan diperlukan sebagai suatu polynomial yang berada dalam GF(28) dan akan dikalikan dengan modulo x4 +1 , dengan suatu polynomial tertentu seperti terlihat pada tabel berikut :
16
Tabel 2.3 Bilangan Polynominal Untuk Mix Column 02
01
01
03
03
02
01
01
01
03
02
01
01
01
02
03
Hasil Substitusi dikalikan dengan matrix MixColumn :
Hasil Perkalian dengan matrix MixColumn :
Pada proses AddRoundKey() maka 128 bit hasil state akan di-XOR-kan dengan Kunci Ronde, yaitu kunci hasil dari proses Expand Key. Pada awal enkripsi, 128 bit plaintext akan di-XOR-kan dengan 128 bit kunci yang asli. Kemudian 128 bit plaintext akan mengalami proses-proses : SubBytes(), ShiftRows() dan MixColumns(). Pada proses AddRoundKey(), 128 bit yang sudah melalui tiga tersebut akan di-XORkan dengan kunci ronde hasil Ekspand Key yang pertama. Hasil AddRoundKey() ini adalah state pada ronde 1. State 1 ini akan mengalami ketiga proses tersebut kembali. Pada AddRoundKey() yang berikut, maka 128 bit yang sudah mengalami perubahan pada ketiga proses tersebut kembali akan di XOR-kan dengan kunci hasil Ekspand Key kedua dan seterusnya.
17
2.4. Dekripsi Dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi menjadi pesan asli kembali. M = D (C) Keterangan: M = Pesan asli setelah di dekripsi D = Prose dekripsi menggunakan key private C = Chipertext (Hasil Plaintext terenkripsi)
Pada Gambar 2.8 merupakan proses dari sebuah dekripsi file
Gambar 2.8 Diagram Alur Proses Dekripsi
18
2.5.
Rfc2898 DeriveBytes
Rfc2898DeriveBytes adalah class atau metode dengan proses yang melibatkan pengambilan kunci (password), pencampur (salt), jumlah iterasi, dan kemudian menghasilkan
kedalaman
kunci
melalui
panggilan
ke
metode
GetBytes.
Rfc2898DeriveBytes mencakup metode untuk menciptakan vektor kunci dan inisialisasi (Blok IV) dari password dan pencampur (salt/S-Box/ASCII). Rfc2898DeriveBytes berguna untuk menghasilkan kunci yang berasal dari kunci dasar dan parameter lainnya. Rfc2898DeriveBytes ini bukanlah satu-satunya metode untuk menghasilkan kunci ke dalam bentuk tipe data byte (GetBytes). Salah satunya yang lain adalah PasswordDeriveBytes. Rfc2898DeriveBytes adalah penerus dari beberapa class lainnya yang sangat direkomendasi oleh Visual Studio 2013 (Microsoft). Rfc2898DeriveBytes merupakan implementasi dari PBKDF2. Adapun keuntungan pencampuran yang dilakukan berulang kali antara kunci dengan pencampur (salt) yakni: 1. Ukuran password tidak terbatas tergantung kepada iterasi yang diberikan. Sedangkan AES hanya mendukung ukuran kunci tertentu. 2. Penambahan ukuran pencampur (salt) dapat menggunakan frasa sandi yang sama untuk menghasilkan beberapa kunci yang berbeda (dengan asumsi pencampur (salt) bukan konstan. Hal ini penting untuk pemisahan kunci dengan menggunakan kembali kunci dalam konteks yang berbeda. 3. Bila iterasi yang diberi hingga 1000 kali, maka bertujuan agar memperlambat serangan untuk menebak password sebagaimana menghadapi serangan Brute Force dalam menebak kunci AES. Bilamana hanya menggunakan kunci AES maka kemungkinan kunci yang ditebak akan lebih mudah dikarenakan hanya mengandalkan kunci tanpa adanya pencampur (salt) dan iterasi yang dikenal sebagai pendalaman kunci. Dengan menggunakan Rfc2898DeriveBytes kita dapat menggunakan iterasi yang nilainya bisa di atur dan direkomendasikan hingga 10000 kali. Hal ini akan mempersulit serangan semacam Brute Force (serangan random pencarian password).
19
2.6. Data Flow Diagram (DFD) Data Flow Diagram (DFD) adalah alat pembuatan model yang memungkinkan profesional sistem untuk menggambarkan sistem sebagai suatu jaringan proses fungsional yang dihubungkan satu sama lain dengan alur data, baik secara manual maupun komputerisasi. Adapun komponen-komponen dalam DFD adalah sebagai berikut: Menurut Yourdan dan DeMarco:
Menurut Gene dan Serson:
2.7. Pengertian Database Pada sistem informasi, database merupakan sebuah komponen yang paling berperan penting dalam menampung semua data-data yang telah diolah, basis data adalah suatu pengorganisasian sekumpulan data yang saling terkait sehingga memudahkan aktivitas untuk memperoleh informasi (Abdul Kadir dan Terra CH. Triwahyuni, 2003). Berikut ini adalah beberapa alasan mengapa database sangat diperlukan : 1. Salah satu komponen penting dalam sistem informasi, karena merupakan dasar dalam menyediakan informasi. 2. Menentukan kualitas informasi yang akurat, tepat waktu dan relevan. Informasi dapat dikatakan bernilai bila manfaatnya lebih aktif dibandingkan biaya mendapatkannya. 3. Mengurangi duplikasi data. 4. Hubungan data dapat ditingkatkan. 5. Mengurangi pemborosan tempat simpanan luar.
20
2.7.1. Keamanan Database Ada beberapa cara yang umum dapat dilakukan untuk mengamankan database dari pengaksesan orang lain yang tidak berhak, diantaranya (Janner Simarmata dan Iman Paryudi, 2005) : 1. Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. 2. Password adalah kumpulan karakter atau string yang digunakan oleh pengguna jaringan atau sebuah sistem operasi yang mendukung banyak pengguna (multiuser) untuk memverifikasi identitas dirinya kepada sistem keamanan yang dimiliki oleh jaringan atau sistem tersebut. 3. Enkripsi adalah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus. 4. MD5 (Message-Digest algortihm 5) adalah sebuah fungsi hash kriptografi yang digunakan secara luas dengan hash value 128-bit. 2.8. VB NET Microsoft Visual Basic .NET adalah sebuah alat untuk mengembangkan dan membangun aplikasi yang bergerak di atas sistem .NET Framework, dengan menggunakan bahasa BASIC. Dengan menggunakan alat ini, para programmer dapat membangun aplikasi Windows Forms, Aplikasi web berbasis ASP.NET, dan juga aplikasi command-line.
2.9. Flowchart Flowchart merupakan sebuah metodologi yang digunakan untuk menganalisis, meningkatkan dokumen dan mengelola proses atau program. Adapun symbol-simbol yang dipakai pada flowchart terlihat pada Gambar 2.9 di bawah ini:
21
Gambar 2.9 Simbol Flowchart
2.9. UML
Diagram Dasar dalam Unified Modeling Language (UML) adalah
bahasa
spesifikasi
standar
untuk
mendokumentasikan,
menspesifikasikan, dan membangun sistem perangkat lunak. Standar spesifikasi UML dijadikan standar defacto oleh OMG (Object Management Group) pada tahun 1997. UML mendeskripsikan OOP dengan beberapa diagram, diantaranya : Diagram Struktur (Structure Diagram) 1. Diagram Kelas (Class Diagram) Menggambarkan struktur dari sistem dengan menunjukkan class sistem, atribut class dan hubungan atau relasi antar class.
22
2. Diagram Obyek (Object Diagram) Menunjukan tampilan baik secra menyeluruh atau pun bagian struktur dari sistem yang dimodelkan. 3. Diagram Komponen (Component Diagram) Menggambarkan bagaimana sistem dibagi menjadi komponen-komponen serta menunjukan ketergantungan antara komponen-komponen tersebut. 4. Diagram Deployment (Deployment Diagram) Untuk memodelkan perangkat keras yang digunakan pada implementasi sistem, lingkungan, dan cara penggunaan sitem pada perangkat keras. 5. Diagram Struktur Komposit (Composite Diagram) Menggambarkan struktur internal yang saling terhubung. 6. Diagram Paket (Package Diagram) Menggambarkan bagaimana sistem dibagi menjadi kelompok-kelompok logikal dengan menunjukkan ketergantungan antara kelompok tersebut. Diagram Perilaku (Behavior Diagram) 1. Diagram use-case Menunjukan fungsi-fungsi yang diberikan sistem kepada aktor, tujuannya merepresentasikan kasus penggunaan dan setiap ketergantungan antara kasus pengguna. 2. Diagram State Machine Merupakan notasi standar untuk menggambarkan banyak sistem, dari program komputer ke proses bisnis. 3. Diagram aktivitas (Activity Diagram) Merepresentasikan langkah demi langkah alur bisnis dan operasional dari komponen pada sebuah sistem. 4. Diagram Komunikasi (Communication Diagram) Menunjukan interaksi antara obyek-obyek atau bagian-bagian dari urutan pesan. 5. Diagram Ringkasan Interaksi (Interaction Overview Diagram) Merupakan sebuah tipe diagram aktifitas dengan node atau simpul mewakili diagram-diagram interaksi.
23
6. Diagram Urutan (Sequence Diagram) Menujukan bagaimana obyek-obyek berkomunikasi satu sama lain dari sebuah urutan pesan. 7. Diagram Pewaktuan (Timing Diagram) Merupakan jenis yang lebih spesifik dari diagram interaksi di mana fokusnya pada batasan waktu.
2.11. Penelitian Terdahulu Sistem kriptografi telah ada pada awal tahun 1900. Dalam melakukan penelitian, penulis membutuhkan beberapa referensi penelitian yang pernah dibuat oleh orang lain mengenai masalah pengamanan file dan algoritma rijndael. Fadhilah (2012) telah melakukan penelitian tentang pengamanan citra digital dengan menggunakan algoritma rijndael. Suriski et al (2010) juga telah melakukan penelitian tentang kriptografi file dengan menggunakan algoritma blowfish. Arief (2014) telah meneliti tentang bagaimana mengamankan file
dengan
menggunakan algortima rijndael dengan menggunakan interface USB Flashdisk. Tabel 2.5 Tabel Penelitian Terdahulu Peneliti
Metode
Kasus
Fadhilah
Rijndael
Suriski et al
Blowfish
Pengamanan File
2010
Arief
Rijndael
Pengamanan File
2014
Pengamanan Citra Digital
Tahun Penelitian 2012