Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615
Implementasi Kriptografi Dengan Algoritma Blowfish dan Riverst Shamir Adleman (RSA) Untuk Proteksi File Faizal Zuli1, Ari Irawan2 1
Universitas Satya Negara Indonesia, 2UIN Syarif Hidayatullah
1
[email protected],
[email protected]
Abstract - Blowfish is one of the algorithms are not patentable and strong enough because it has a large key space and the length can vary so it is not vulnerable on the key. A cryptographic system that is well located on the secrecy of the key and not on secrecy algorithm used. RSA (RivestShamirAdleman) stands for the makers are RonRivest, Adi Shamir, and Leonard Adleman created in 1977. RSA is an asymmetric cryptography system. Keyword: Criptography, Blowfish, RSA, Secrecy Algorithm, Cryptographic Abstrak - Blowfish merupakan salah satu algoritma yang tidak dipatenkan dan cukup kuat karena memiliki ruang kunci yang besar dan panjangnya bisa beragam sehingga tidak mudah diserang pada bagian kuncinya. Suatu sistem kriptografi yang baik terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma yang digunakan. RSA (RivestShamirAdleman) adalah singkatan dari para pembuatnya yaitu RonRivest, Adi Shamir, dan Leonard Adleman yang dibuat pada tahun1977. RSA merupakan sistem kriptografi asimetrik. Kata Kunci: Kriptografi, Blowfish, RSA I.
PENDAHULUAN
Untuk melindungi file yang terdapat pada komputer atau tempat penyimpanan data dari akses illegal salah satu caranya adalah dengan menggunakan kriptografi. Kriptografi juga diperlukan dalam melindungi dokumen dari orang yang tidak berhak untuk merubah isi dokumen, merubah password atau pemanfaatan dokumen tersebut untuk keuntungan pribadi. Kriptografi akan merahasiakan informasi dengan menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Saat ini banyak bermunculan algoritma kriptografi yang terus dianalisis, dicoba dan disempurnakan untuk mencari algoritma yang dianggap memenuhi standar keamanan. Beberapa algoritma kriptografi yang dikenal antara lain DES, Rijndael, Blowfish, RC4, Vigenere Cipher, Enigma, IDEA dan lainnya. II. LANDASAN TEORI Dokumen Digital Dokumen merupakan suatu sarana transformasi informasi dari satu orang ke orang lain atau dari suatu kelompok ke kelompok lain. Dokumen meliputi berbagai kegiatan yang diawali dengan bagaimana suatu dokumen dibuat, dikendalikan, diproduksi, disimpan, didistribusikan, dan digandakan. Dokumen digital merupakan setiap informasi elektronik yang dibuat, diteruskan, dikirimkan, diterima, atau disimpan dalam bentuk analog, digital, elektromagnetik, optikal, atau sejenisnya, yang dapat dilihat, ditampilkan dan/atau didengar melalui komputer atau sistem elektronik, termasuk tetapi tidak terbatas pada tulisan, suara atau gambar, peta, rancangan, foto atau sejenisnya, huruf, tanda, angka, kode akses, simbol atau perforasi yang memiliki makna atau arti atau dapat dipahami oleh orang yang mampu memahaminya [1] Metode Keamanan Data Ada 2 metode keamanan data yang digunakan yaitu Kriptografi menggunakan algoritma Advanced Encryption Standard (AES) dan Steganografi menggunakan Command/DOS dan menampilkan warna pada citra digital berdasarkan pada penelitian bahwa sebuah warna merupakan kombinasi dari tiga warna dasar, yaitu Red, Green, Blue [2]
27
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615
Kompresi File (File Compress) Kompresi file adalah suatu cara untuk mengkodekan informasi dengan menggunakan bit yang lebih rendah yang digunakan untuk memperkecil ukuran data agar dapat disimpan dengan ruang penyimpanan yang kecil dan juga dapat mempersingkat waktu dalam transfer data [2]. File File adalah entitas dari data yang disimpan didalam sistem file yang dapat diakses dan diatur oleh pengguna. Sebuah file memiliki nama yang unik dalam direktori di mana ia berada. Alamat direktori dimana suatu berkas ditempatkan diistilahkan dengan path. Sebuah file berisi aliran data (atau data stream) yang berisi sekumpulan data yang saling berkaitan serta atribut berkas yang disebut dengan properties yang berisi informasi mengenai file yang bersangkutan seperti informasi mengenai kapan sebuah berkas dibuat [2] Kriptografi Kriptografi berasal dari bahasa Yunani yaitu cryptós yang artinya “secret” (yang tersembunyi) dan gráphein yang artinya “writting” (tulisan). Jadi, kriptografi berarti ”secret writting” (tulisan rahasia). Definisi yang dikemukakan oleh Bruce Schneier (1996), kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and science of keeping messages secure). Kriptografi mempunyai beberapa tujuan. Munir menyampaikan tujuan kriptografi bahwa untuk memberi layanan keamanan (yang juga dinamakan sebagai aspek-aspek keamanan) sebagai berikut [2]: a. Kerahasiaan (confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapt dibaca oleh pihak-pihak yang tidak berhak. Di dalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan menjadi chiperteks. b. Integritas data (data integrity), adalah layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman. Dengan kata lain, aspek keamanan ini dapat diungkapkan sebagai pernyataan: “Apakah pesan yang diterima masih asli atau tidak mengalami perubahan (modifikasi)?”. Untuk menjaga integritas data, system harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubstitusian data lain ke dalam pesan yang sebenarnya. Kriptografi mempunyai dua komponen utama yaitu enkripsi dan dekripsi. Selain itu dibutuhkan kunci untuk mengubah plainteks menjadi chiperteks dan juga sebaliknya.Tanpa kunci plainteks tidak bisa mengenkrip masukan menjadi chiperteks, demikian juga sebaliknya. Kerahasiaan kunci sangatlah penting, apabila kerahasiaannya terbongkar maka isi pesan akan terbongkar. Gambar 1 adalah skema yangmengilustrasikan enkripsi dan dekripsi.
.
Gambar 1. Skema Enkripsi dan Dekripsi
Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibedakan atas dua jenis yaitu, algoritma simetrik (symmetric) dan asimetrik (asymmetric). Algoritma Simetrik Algoritma simetrik dapat pula disebut sebagai algoritma konvensional, dimana kunci dekripsi dapat ditentukan dari kunci enkripsinya, begitu pula sebaliknya. Pada algoritma simetrik, kunci enkripsi dan kunci dekripsinya sama [2]. Keamanan dari algoritma ini terletak pada kuncinya, jika kunci diberitahukan atau dibocorkan maka siapa saja dapat mengenkrip dan mendekrip data, jadi kunci harus benar-benar rahasia dan aman. Proses enkripsi dan dekripsi dari fungsi algoritma ini dapat dinotasikan sebagai berikut : Ek (P) = C (Proses Enkripsi) Dk (C) = P (Proses Dekripsi) di mana E adalah fungsi enkripsi, D adalah fungsi dekripsi, k adalah kunci enkripsi dan dekripsi, P adalah plaintext (pesan yang sebenarnya) dan C adalah ciphertext (hasil enkripsi dari plaintext). Proses enkripsi dan dekripsi dengan algoritma simetrik dapat diilustrasikan pada Gambar 2.
28
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615
Gambar 2: Enkripsi dan Dekripsi Algoritma Simetrik
Algoritma Asimetrik Algoritma Asimetrik (Asymmetric atau Public Key) adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi. Algoritma ini disebut juga algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang berwenang mengetahui data yang disandikan. Jadi hanya orang tertentu saja yang berhak terhadap kunci dekripsi, walaupun kunci enkripsi dapat diketahui dan digunakan oleh orang lain [2]. Kunci enkripsi pada algortima ini disebut kunci publik (public key) dan kunci dekripsi sering disebut dengan kunci pribadi atau kunci rahasia (private key). Proses enkripsi dengan kunci publiknya (misalkan “ek”) dan proses dekripsi dengan kunci rahasianya (misalkan “dk”) akan menghasilkan persamaan sebagi berikut: Eek (P) = C (Proses Enkripsi) Ddk (C) = P (Proses Dekripsi) Proses enkripsi dan dekripsi dengan algoritma asimetrik dapat diilustrasikan pada Gambar 3.
Gambar 3: Enkripsi dan Dekripsi Algoritma Asimetrik
Pada dasarnya algoritma simetrik terdiri atas dua metode yaitu metode blok cipher dan aliran cipher. Pada subbab ini pembahasan lebih ditekankan pada metode kriptografi blok cipher, karena algoritma kriptografi CRYPTON yang dibahas di sini termasuk metode kriptografi blok cipher. Teknik Penyandian Pada blok cipher, penyandian dilakukan pada sebuah blok plaintext dan berorientasi pada satu bit atau satu karakter pada blok plaintext tersebut. Algoritma kriptografi modern merupakan algoritma berbasis kunci. Teknik penyandian pada algoritma blok cipher modern juga mengandalkan kunci untuk kerahasiaannya [2]. Beberapa teknik penyandian blok cipher modern diantaranya : 1. Cipher Berulang Cipher berulang (iterated cipher) mengenkripsi blok plaintext dengan sebuah proses yang mengalami beberapa putaran (round) atau iterasi untuk mendapatkan blok ciphertext. Pada masing-masing putaran diterapkan transformasi atau fungsi putaran (round function ) yang sama pada plaintext dengan menggunakan sub kunci. Fungsi tersebut biasanya merupakan gabungan dari proses substitusi, permutasi, transposisi, atau ekspansi terhadap blok plaintext. Kumpulan subkunci biasanya dihasilkan dari secret key dengan fungsi khusus dan biasanya disebut dengan daftar kunci (key schedule). Jumlah putaran dalam cipher berulang bergantung pada tingkat keamanan yang diinginkan. Dalam banyak kasus, penambahan jumlah putaran akan memperbaiki keamanan, tetapi untuk beberapa penyandian, jumlah putaran untuk mencapai keamanan yang memadai akan menjadikan penyandian tidak efisien. 2. Jaringan Fiestel Fiestel Cipher merupakan metode yang dikemukakan pertama kali oleh Horst Fiestel pada awal tahun 1970an. Metode ini sering juga disebut Fiestel Network. Fiestel cipher beroperasi terhadap panjang blok data tetap sepanjang n (n adalah bilangan genap), kemudian membagi menjadi 2 blok dengan panjang masing-masing n/2, yang dinotasikan L dan R. Fiestel cipher menerapkan metode cipher berulang dengan masukan pada putaran ke-i didapat dari keluaran putaran sebelumnya, secara matematis [3] : Li = Ri-2 Ri = Li-1 f (Ri-1,Ki) i = 1, 2, 3, ..., r (r adalah jumlah putaran) Yang dalam hal ini Ki adalah kunci putaran pada putaran ke-i dan f adalah fungsi transformasi.
29
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 Blok plaintext adalah gabungan L dan R awal atau secara formal plaintext dinyatakan dengan (L0,R0) . Sedangkan blok ciphertext didapatkan dari L dan R hasil putaran terakhir setelah terlebih dahulu dipertukarkan atau secara formal ciphertext dinyatakan dengan (Rr, Lr). Feistel cipher banyak diterapkan karena metode ini reversible untuk proses enkripsi dan dekripsi sehingga tidak perlu mendekripsikan algoritma baru untuk dekripsi ciphertext menjadi plaintext. Hal ini didapatkan karena operator XOR ini mempunyai sifat-sifat unik. Dari sifat unik tersebut maka didapatkan persamaan : Li-1 f (Ri-1,Ki)
f(Ri-1,Ki) = Li-1
Dari persamaan diatas dapat dilihat bahwa sifat reversible tidak tergantung pada fungsi transformasi f yang digunakan sehingga fungsi ini dapat dibuat serumit yang diinginkan. Mode Operasi Secara umum, terdapat empat mode enkripsi data baku yang dapat diterapkan pada enkripsi blok dengan sembarang ukuran blok. Mode baku tersebut adalah Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB) dan Output Feedback (OFB). [2]. 1. Electronic Code Book (ECB) Pada metode ini setiap blok plaintext dienkripsi secara independent menjadi blok ciphertext. Secara matematis dapat dinyatakan : Ci = Ek (Pi) Pi = Dk (Ci) 2. Cipher Block Chaining (CBC) Pada proses enkripsi mode CBC, blok plaintext terlebih dahulu di-XOR-kan dengan blok ciphertext hasil enkripsi blok sebelumnya. Blok pertama plaintext di-XOR-kan dengan suatu initialization vector (vektor awal) yang besarnya sama dengan blok plaintext. Secara matematis dapat dinyatakan : Ci = Ek (Pi Ci-1) Pi = Ci-1 Dk (Ci) Kotak-S (S-box) S-box (Substitution-box) adalah komponen dasar dari algoritma kunci simetris yang berfungsi melakukan proses substitusi. Pada sistem blok cipher, S-box dimaksudkan untuk mengaburkan hubungan antara kunci dan cipherteks. Secara umum, cara kerja S-box adalah dengan menerima sejumlah bit masukan, m, dan mentransformasinya ke dalam beberapa bit keluaran, n. Tabel yang digunakan biasanya bernilai tetap seperti yang digunakan pada algoritma DES (Data Encryption Standard), namun di beberapa algoritma kriptografi tabel tersebut dibuat secara dinamis berdasarkan kata kunci seperti yang digunakan pada algoritma blowfish. Tabel 1 adalah contoh penggunaan S-Box pada DES dengan tabel bernilai tetap berukuran 6 x 4 bit (6 bit masukan, 4 bit keluaran) [3]: TABEL 1. TABEL S-BOX
Tabel 1 menggunakan 6 bit masukan dan 4 bit keluaran yang didapat dengan menggunakan 2 bit terluar (bit pertama dan bit terakhir) untuk menentukan baris dan 4 bit tengah untuk menentukan kolom. Menggunakan bit ”011011” sebagai masukan didapatkan bahwa 2 bit terluarnya adalah bit “01” dan 4 bit tengahnya adalah “1101” maka keluaran yang didapat adalah bit “1001”. Algoritma Blowfish menggunakan sistem S-Box yang sama hanya nilainya saja yang berbeda. Pembuatan Subkunci (Subkey Generator) Algorima blowfish diawali dengan proses pembuatan subkunci. Terdapat dua buah subkunci yang digunakan pada algoritma blowfish. Subkunci pertama berupa 18 buah P-array berukuran 32 bit: P1, P2, P3,..., P18. Subkunci kedua merupakan S-box dengan 4 x 256 buah array multidimensi berukuran 32 bit: S1,0, S1,1, S1,2,..., S1,255; S2,0, S2,1, S2,2,..., S2,255; S3,0, S3,1, S3,2,..., S3,255; S4,0, S4,1, S4,2,..., S4,255.
30
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615
1.
2.
3. 4. 5. 6. 7.
Langkah-langkah pembuatan subkunci pada algoritma blowfish adalah sebagai berikut: Inisialisasi semua array P dan S secara berurutan menggunakan digit heksadesimal bilangan pi/π (nilai dibelakang angka 3), misal: P1 = 0x243f6a88, P2 = 0x85a308d3, P3 = 0x13198a2e, dst. Lakukan operasi XOR pada P1 dengan 32 bit pertama dari kunci yang digunakan, XOR P2 dengan 32 bit kedua dari kunci tersebut dan lakukan terus hingga bagian akhir bit kunci (maksimal hingga P14). Ulangi kembali dari bit kunci awal hingga seluruh array P dan S selesai di-XOR-kan dengan bit-bit kunci. Lakukan enkripsi menggunakan algoritma blowfish pada variabel 64 bit yang semua bitnya bernilai 0 menggunakan subkunci pada proses 1 dan 2. Ganti subkunci P1 dan P2 dengan hasil keluaran pada proses 3 Enkripsi hasil keluaran pada proses 3 menggunakan blowfish dengan subkunci yang telah dimodifikasi pada proses 4. Ganti subkunci P3 dan P4 dengan hasil keluaran pada proses 5. Terus lanjutkan proses diatas untuk mengganti semua nilai array P dan S secara berurutan.
Algoritma Blowfish Blowfish diciptakan oleh seorang Cryptanalyst bernama Bruce Schneier, Presiden perusahaan Counterpane Internet Security, Inc (Perusahaan konsultan tentang kriptografi dan keamanan komputer) dan dipublikasikantahun 1994. Dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32-bit keatas dengancache data yang besar). Blowfish merupakan algoritma yang tidak dipatenkan dan licensefree, dan tersediasecara gratis untuk berbagai macam kegunaan (Syafari, 2007). Pada saat blowfish dirancang, diharapkan mempunyai kriteria perancangan sebagai berikut [4] : 1. Cepat Blowfish melakukan enkripsi data pada microprocessors 32-bit dengan rate 26 clock cycles perbyte. 2. Compact (ringan) Blowfish dapat dijalankan pada memori kurang dari 5K. 3. Sederhana Blowfish hanya menggunakan operasi-operasi sederhana: penambahan, XOR, dan lookuptabel pada operan 32bit. 4. Memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapatbervariasi dan bisa sampai sepanjang 448 bit. Algoritma Blowfish terdiri atas dua bagian, yaitu ekspansi kunci dan enkripsi data [3] a. Ekspansi Kunci (Key-expansion) Berfungsi merubah kunci (minimum 32-bit, maksimum 448-bit)menjadi beberapa array subkunci (subkey)dengan total 4168 byte (18x32-bit untuk P-array dan 4x256x32-bit untuk S-box sehingga totalnya 33344 bit atau4168 byte). Kunci disimpan dalam K-array: K1, K2, ... Kj 1 j 14 Kunci-kunci ini yang dibangkitkan (generate) dengan menggunakan subkunci yang harus dihitung terlebihdahulu sebelum enkripsi atau dekripsi data. Sub-sub kunci yang digunakan terdiri dari:P-array yang terdiri dari 18 buah 32-bit subkunci, b. Enkripsi Data Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran (iterasi), masukannya adalah 64-bit elemen data X. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan datadependent.Semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit. Operasi tambahan lainnya Algoritma RSA ( Riverst Shamir Adleman ) Pada tahun 1997 kontes pemilihan suatu standar algoritma kriptografi baru pengganti DES dimulai dan diikuti oleh 21 peserta dari seluruh dunia. Setelah melewati tahap seleksi yang ketat, pada tahun 1999 hanya tinggal 5 calon yaitu algoritma Serpent (Ross Anderson-University of Cambridge, Eli Biham-Technion, Lars KnudsenUniversity of California San Diego), MARS (IBM Amerika), Twofish (Bruce Schneier, John Kelsey, dan Niels Ferguson-Counterpane Internet Security Inc, Doug Whiting-Hi/fn Inc, David Wagner-University of California Berkeley, Chris Hall-Princeton University), Rijndael (Dr. Vincent RijmenKatholieke Universiteit Leuven dan Dr. Joan Daemen-Proton World International), dan RC6 (RSA Amerika). Setahun kemudian pada tahun 2000, algoritma Rijndael terpilih sebagai algoritma kriptografi yang selain aman juga efisien dalam implementasinya dan dinobatkan sebagai AES. Nama Rijndael sendiri berasal dari gabungan nama penemunya [5]. Algoritma ini dikembangkan oleh Ron Rivest, Adi Shamir, dan Len Adleman pada tahun 1977. Algoritma ini sekaligus menjawab tantangan dari sebuah tulisan yang dibuat oleh Diffie dan Hellman tentang pendekatan baru mengenai algoritma kriptografi yang dapat memenuhi kebutuhan untuk metode kunci publik. Algoritma Rivest Shamir Adleman (RSA) ini adalah algoritma metode kunci publik yang paling banyak dipakai sampai saat ini.
31
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 Cara kerja dari algoritma RSA ini adalah sebagai berikut : RSA merupakan algoritma yang melibatkan ekspresi dengan fungsi eksponensial. Plaintext dienkripsi dalam blokblok, dimana setiap blok tersebut mempunyai nilai biner yang kurang dari angka tertentu (n). Proses enkripsi dan dekripsi untuk plaintext blok M dan ciphertext blok C dapat digambarkan sebagai berikut : C = Me mod n M = Cd mod n = (Me)d mod n = Med mod n
Advanced Encryption Standard (AES) Advanced Encryption Standard (AES) merupakan algoritma cryptographic yang dapat digunkan untuk mengamakan data. Algoritma AES adalah blokchipertext simetrik yang dapat mengenkripsi (encipher) dan dekripsi (decipher) informasi. Enkripsi merubah data yang tidak dapat lagi dibaca disebut ciphertext; sebaliknya dekripsi adalah merubah ciphertext data menjadi bentuk semula yang kita kenal sebagai plaintext [5]. Algoritma AES mengunakan kunci kriptografi 128, 192, dan 256 bits untuk mengenkrip dan dekrip data pada blok 128 bits. Pemilihan ukuran blok data dan kunci akan menentukan jumlah proses yang harus dilalui untuk proses enkripsi dan dekripsi. Blok-blok data masukan dan kunci dioperasikan dalam bentuk array. Setiap anggota array sebelum menghasilkan keluaran ciphertext dinamakan dengan state. Setiap state akan mengalami proses yang secara garis besar terdiri dari empat tahap yaitu, AddRoundKey, SubBytes, ShiftRows, dan MixColumns. Kecuali tahap MixColumns, ketiga tahap lainnya akan diulang pada setiap proses sedangkan tahap MixColumns tidak akan dilakukan pada tahap terakhir. Proses dekripsi adalah kebalikan dari dekripsi. Karena terjadi beberapa tahap dalam proses enkripsi, maka diperlukan subkeysubkey yang akan dipakai pada tiap tahap. Pengembangan jumlah kunci yang akan dipakai diperlukan karena kebutuhan subkey-subkey yang akan dipakai dapat mencapai ribuan bit, sedangkan kunci yang disediakan secara default hanya 128-256 bit. Jumlah total kunci yang diperlukan sebagai subkey adalah sebanyak Nb(Nr+1), dimana Nb adalah besarnya blok data dalam satuan word. Sedangkan Nr adalah jumlah tahapan yang harus dilalui dalam satuan word. Sebagai contoh, bilamana digunakan 128 bit. (4 word) blok data dan 128 bit (4 word) kunci maka akan dilakukan 10 kali proses. Dengan demikian dari rumus didapatkan 4(10+1)=44 word=1408 bit kunci. Untuk melakukan pengembangan jumlah kunci yang akan dipakai dari kunci utama maka dilakukan key schedule. Ekspansi Kunci AES Algoritma AES mengambil kunci cipher, K, dan melakukan rutin ekspansi kunci (key expansion) untuk membentuk key schedule. Ekspansi kunci menghasilkan total Nb(Nr+1) word. Algoritma ini membutuhkan set awal key yang terdiri dari Nb word, dan setiap round Nr membutuhkan data kunci sebanyak Nb word. Hasil key schedule terdiri dari array 4 byte word linear yang dinotasikan dengan [wi]. SubWord adalah fungsi yang mengambil 4 byte word input dan mengaplikasikan S-Box ke tiap-tiap data 4 byte untuk menghasilkan word output. Fungsi RotWord mengambil word [a0, a1, a2, a3] sebagai input, melakukan permutasi siklik, dan mengembalikan word [a1, a2, a3, a0]. Rcon[i] terdiri dari nilai-nilai yang diberikan oleh [xi-1, {00}, {00}, {00}], dengan xi-1 sebagai pangkat dari x (x dinotasikan sebagai {02} dalam field GF(28). Word ke Nk pertama pada ekspansi kunci berisi kunci cipher10. Setiap word berikutnya, w[i], sama dengan XOR dari word sebelumnya, w[i1] dan word Nk yang ada pada posisi sebelumnya, w[i-Nk]. Untuk word pada posisi yang merupakan kelipatan Nk, sebuah transformasi diaplikasikan pada w[i-1] sebelum XOR, lalu dilanjutkan oleh XOR dengan konstanta round, Rcon[i]. Transformasi ini terdiri dari pergeseran siklik dari byte data dalam suatu word RotWord, lalu diikuti aplikasi dari lookup Tabel untuk semua 4 byte data dari word SubWord. Enkripsi AES Proses enkripsi pada algoritma Adavanced Encryption Standard terdiri dari 4 jenis transformasi bytes, yaitu SubBytes, ShiftRows, Mixcolumns, dan AddRoundKey. Pada awal proses enkripsi, input yang telah dikopikan ke dalam state akan mengalami transformasi byte AddRoundKey. Setelah itu, state akan mengalami transformasi SubBytes, ShiftRows, MixColumns, dan AddRoundKey secara berulangulang sebanyak Nr. Proses ini dalam algoritma AES disebut sebagai round function. Round yang terakhir agak berbeda dengan round-round sebelumnya dimana pada round terakhir, state tidak mengalami transformasi MixColumns. 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 InvShiftRows, InvSubBytes, InvMixColumns, dan AddRoundKey. Steganografi Steganografi (steganography) adalah ilmu dan seni menyembunyikan pesan rahasia (hiding message) sedemikian sehingga keberadaan (eksistensi) pesan tidak terdeteksi oleh indera manusia. Kata steganorafi berasal dari bahasa Yunani yang berarti “tulisan tersembunyi” (covered writing). Steganografi membutuhkan dua properti yaitu wadah penampung dan data rahasia yang akan disembunyikan. Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, suara, teks, dan video. Data rahasia yang disembunyikan juga
32
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 dapat berupa citra, suara, teks, atau video. Steganografi berbeda dengan kriptografi, letak perbedaannya adalah hasil keluarannya [3]. Hasil dari kriptografi biasanya berupa data yang berbeda dari bentuk aslinya dan biasanya datanya seolaholah berantakan dan dapat dikembalikan ke bentuk semula. Sedangkan steganografi ini memiliki bentuk persepsi yang sama dengan bentuk aslinya, tentunya persepsi di sini oleh indera manusia, tetapi tidak oleh komputer atau perangkat pengolah digital Teknik steganografi sudah ada sejak 4000 tahun yang lalu di kota Menet Khufu, Mesir. Awalnya adalah penggunaan hieroglyphic yakni menulis menggunakan karakter-karakter dalam bentuk gambar. Ahli tulis menggunakan tulisan Mesir kuno ini untuk menceritakan kehidupan majikannya. Tulisan Mesir kuno tersebut menjadi ide untuk membuat pesan rahasia saat ini. Oleh karena itulah, tulisan Mesir kuno yang menggunakan gambar dianggap sebagai steganografi pertama di dunia [4]. Secara umum, terdapat dua proses utama didalam steganografi, yaitu proses penyisipan (Embedding/encoding) untuk menyembunyikan pesan dan ekstraksi (extraction/decoding) untuk mengekstraksi pesan yang disembunyikan. Pesan dapat berupa plaintext, chipertext, citra atau apapun yang dapat ditempelkan ke dalam bit-strem. Embedding merupakan proses menyisipkan pesan ke dalam file yang belum dimodifikasi, yang disebut media cover (cover object). Kemudian media cover dan pesan yang ditempelkan membuat media stego (stego object). Extraction adalah proses menguraikan pesan yang tersembunyi dalam media stego. Suatu kunci khusus (stego key) juga dapat digunakan secara tersembunyi, pada saat penguraian selanjutnya dari pesan. Ringkasnya steganografi adalah teknik menanamkan embedded message pada suatu cover object, dimana hasilnya berupa stego object. Pihak yang terkait dengan steganografi antara lain embeddor, extractor, dan stegoanalyst. III.
METODE PENELITIAN
Pengumpulan data dilakukan untuk memperoleh informasi yang dibutuhkan dalam rangka mencapai tujuan penelitian. Tujuan yang diungkapkan dalam bentuk hipotesis merupakan jawaban sementara terhadap pertanyaan penelitian.metode pengumpulan data bisa dilakukan dengan cara: a. Observasi, merupakan cara untuk mendapatkan data dan informasi dengan melakukan peninjauan atau pengamatan secara langsung ke tempat yang berkaitan dengan penulisan tugas akhir dan perancangan sistem informasinya. b. Komparatif, merupakan cara untuk mendapatkan data dan informasi dengan melakukan pertimbangan atau membandingkan dua sistem atau lebih, melihat kekurangan dan kelebihan antara sistem yang lama dengan sistem yang baru. Sehingga dapat dilakukan pengembangan sistem yang baru. Metodologi yang digunakan dalam pembangunan aplikasi ini adalah : a) Metode Studi Pustaka Metode Studi Pustaka ini dilakungan dengan cara mengumpulkan dan mempelajari teori - teori literatur dari berberapa buku referensi, skripsi, jurnal serta data- data penunjang lainnya yang berhubungan dengan judul skripsi penulis dalam menyelesaikan masalah. b) Metode Pengembangan Perangkat Lunak 1) Analisis Analisis dilakungan dengan cara menganalisa permasalahan yang muncul dan menentukan spesifikasi kebutuhan atas sistem yang akan dibuat. Hasil dari analisa berupa Dokumen Spesifikasi Kebutuhan Prangkat Lunak (SKPL). 2) Perancangan Perancangan sistem dilakukan dengan berdasarkan hasil analisis yang telah dilakukan pada tahap sebelumnya. Perancangan dilakukan untuk mendapatkan deskripsi arsitektural perangkat lunak, deskripsi data dan deskripsi prosedural. Metode yang digunakan pada perancangan aplikasi kriptografi file adalah metode waterfall. 3) Pengkodean Pengkodean dilakukan dengan mengimplentasi hasil analisis dan perancangan kedalam program untuk membangun aplikasi. Hasil dari pengkodean adalah kode yang siap di eksekusi.
IV.
HASIL DAN PEMBAHASAN
A. Enkripsi file. Proses enkripsi file yang dilakukan adalah sebagai berikut : 1. Pengguna memasukkan input berupa file. File yang akan diinputkan berupa file teks. 2. Masukkan kunci blowfish untuk mengenkripsi. 3. Lakukan enkripsi file yang telah diinputkan. 4. File yang telah terenkripsi menjadi file yang tidak terbaca (chipertext). 5. Chipertext dienkripsi kembali dengan algoritma RSA.
33
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 6. 7.
RSA kunci generator (kunci publik dan kunci privat). Enkripsi file selesai.. Diagram alir enkripsi dan dekripsi file disajikan pada Gambar 4 dan Gambar 5. Mulai
Enkripsi
Ya Input File
Masukkan Kunci Blowfish Generate KunciPublik&Privat RSA
Tidak Proses Enkripsi
File Terenkripsi (Chipertext) Selesai Gambar 4. EnkripsiFile
Gambar 5. Dekripsi File
B. Melakukan pembangkitan kunci publik dan kunci privat 1. Ambil dua buah bilangan prima sembarang, x dan y 2. Hitung n = xy dan m = (x-1)*(y-1). 3. Pilih bilangan integer e, 1 < e < m, yang relative prima terhadap m yaitu FPB(e,m) = 1. 4. Hitung eksponen rahasia d, 1 < d < m, sehingga ed ≡1 (mod m). 5. Kunci publik adalah (n,e) dan kunci privat adalah (n,d). Nilai x, y dan m juga harus dirahasiakan.
34
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 • n disebut juga modulus • e disebut juga public exponent atau exponentenkripsi • d disebut juga secret exponent atau exponentdekripsi C. Melakukan enkripsi kunci simetris dan plain text terenkripsi dengan enkripsi kriptografi asimetris RSA Adapun langkah – langkah pada proses ini adalah sebagai berikut : 1. Ambil kunci public (n,e) 2. Nyatakan plainteks dalam integer positif m 3. Enkripsi menjadi cipher teks c = me mod n
Plain Text
Enkripsi Kriptografi Simetris
Plain Text Terenkripsi Enkripsi Kriptografi Asimetris
Kunci
Chiper Text Terenkripsi
Hasil Enkripsi
Kunci Publik
Gambar 6. Enkripsi Dengan Kunci Publik
D. Melakukan dekripsi kunci simetris dan plainteks terenkripsi dengan dekripsi kriptografi asimetris RSA. Menggunakan kunci privat (n, d) untuk dekripsi dengan rumus m = cd mod n.
Kunci Privat
Cipherteks
Plain Teks Terenkripsi
Enkripsi Kriptografi Asimetris
Kunci
Enkripsi Kriptografi Simetris
Plain Teks
Gambar 7. Dekripsi Dengan Kunci Privat
E. Perancangan Tampilan Antarmuka Pada perancangan tampilan antarmuka aplikasi asimetrisblowcrypt v1.0, dibangun dengan java untuk menampilkan tampilan antarmuka yang nyaman dan mudah digunakan bagi pengguna.
35
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 1.
Halaman Enkripsi 2
1 6
3 4
7
5
8 9 10 11 12
Gambar 8. Tampilan Antarmuka Halaman Enkripsi
Keterangan Gambar 8: 1. Tombol untuk menutup aplikasi. 2. Tombol untuk minimize aplikasi. 3. Nama aplikasi dan versi aplikasi. 4. Tombol tab menu enkripsi. 5. Tombol tab menu dekripsi. 6. Tombol tab menu Key RSA 7. Tombol browse file. 8. Tombol input password. 9. Tombol generate password 10. Informasi ukuran file sumber, ukuran file tujuan, dan waktu proses. 11. Progress bar. 12. Tombol Encryption 2.
Halaman Dekripsi
2
1
3 6 4
7
5
8
9 10 11
Gambar 9. Tampilan Antarmuka Halaman Dekripsi
36
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 Keterangan Gambar 9: 1. Tombol untuk menutup aplikasi. 2. Tombol untuk minimize aplikasi. 3. Nama aplikasi dan versi aplikasi. 4. Tombol tab menu enkripsi. 5. Tombol tab menu dekripsi. 6. Tombol tab menu Key RSA 7. Tombol browse file. 8. Tombol input password. 9. Informasi ukuran file sumber, ukuran file tujuan, dan waktu proses. 10. Progress bar. 11. Tombol Decryption. 3.
Key RSA Pada Gambar 10 disajikan rancangan halaman input key RSA.
3
6
4
7
5
8 9 10
11
13
12
Gambar 10. Tampilan Antarmuka Halaman Key RSA
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Keterangan Gambar 10: Tombol untuk menutup aplikasi. Tombol untuk minimize aplikasi. Nama aplikasi dan versi aplikasi. Tombol tab menu enkripsi. Tombol tab menu dekripsi. Tombol tab menu Key RSA. Tombol Set Key. Hasil generate P. Hasil generate Q. Hasil generate modulus. Hasil generate ctr coefficient. Hasil generate Public Key. Hasil generate Private Key.
37
Jurnal Format Volume 6 nomor 2 Tahun 2016 :: ISSN : 2089 -5615 Perangkat Yang Digunakan Perangkat yang digunakan dalam proses pembuatan aplikasi terdiri dari: a. Perangkat Lunak 1) Java (SE) Run Time Environment1.8.0_25. 2) Netbeans IDE 7.4. 3) Adobe Photoshop. 4) Visual Paradigm For UML. 5) Advance Installer 12.5 b. Perangkat Keras Notebook MSI FX400 dengan spesifikasi Intel® Core™ i3-350M Processor (2.26 GHz, Cache 3MB), RAM 4 GB DDR3 SODIMM PC-8500, VGA NVIDIA GeForce GT325M 1GB, Kamera onboard, Resolusi layar 1366 x 768, dan Kapasitas Penyimpanan 320GB.
V.
KESIMPULAN
Dari analisa algoritma dan implementasi program maka hasil yang didapatkan dengan menggunakan algoritma Blowfish dan RSA dapat disimpulkan sebagai berikut: 1. Enkripsi dengan algoritma blowfish terdiri dari dua bagian, yaitu ekspansi kunci yang berfungsi merubah kunci (minimum 32-bit, maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte (18x32-bit untuk P-array dan 4x256x32-bit untuk S-box sehingga totalnya 33344 bit atay 4168 byte) dan enkripsi data. 2. Enkripsi dengan algoritma RSA memiliki dua buah kunci yang berbeda, yaitu kunci publik dan kunci privat. Prinsip kerja algoritma RSA menggunakan operasi pemangkatan dan operasi mod (modulus) yang menghasilkan nilai yang relatif acak. 3. Ukuran file sebelum dan sesudah dienkripsi dengan algoritma Blowfish dan RSA terjadi perubahan karena penambahan ukuran file sesuai dengan algoritma yang digunakan.
DAFTAR PUSTAKA [1] [2] [3] [4]
Hakim S, Rachmad. 2010. Buku Pintar Windows 7. Jakarta: PT Elex Media Komputindo. Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika. Ariyus, Dony. 2006. Kriptografi: Keamanan Data dan Komunikasi. Yogyakarta: Graha Ilmu. Nani, Paskalis Adrianus. 2011. Penerapan Enkripsi Algoritma Blowfish Pada Proses Steganografi Metode EOF. Universitas Katolik Widya Mandira: Kupang. [5] Nandar Pabokory, Fresly., dkk. 2015. Implementasi Kriptografi Pengamanan Data Pada Pesan Teks, Isi File Dokumen, Dan File Dokumen Menggunakan Algoritma Advanced Encryption Standard. Jurnal Informatika Mulawarman, Vol 10.
38