• Tidak ada hasil yang ditemukan

APLIKASI ENKRIPSI DAN DEKRIPSI FILE MENGGUNAKAN ALGORITMA TWOFISH

N/A
N/A
Protected

Academic year: 2021

Membagikan "APLIKASI ENKRIPSI DAN DEKRIPSI FILE MENGGUNAKAN ALGORITMA TWOFISH"

Copied!
13
0
0

Teks penuh

(1)

13 APLIKASI ENKRIPSI DAN DEKRIPSI FILE

MENGGUNAKAN ALGORITMA TWOFISH Sry Yunarti

Program Studi Sistem Informasi STMIK ProfesionalMakassar yeye_rumbu@yahoo.co.id

Abstrak

Masalah keamanan dan kerahasiaan data merupakan hal yang sangat penting dalam suatu organisasi maupun pribadi. Apalagi jika data tersebut berada dalam suatu jaringan komputer yang terkoneksi dengan jaringan lain. Rawannya kejahatan dalam pencurian data dapat menyebabkan data yang berharga diakses oleh orang-orang yang tidak berhak, data diubahan secara legal, serta tidak jarang pula beberapa pihak menduplikanya. Jika hal tersebut sampai terjadi, kemungkinan besar akan merugikan pihak-pihak tertentu. Selain itu data yang dibajak tersebut akan memiliki kemungkinan rusak bahkan hilang yang akan menimbulkan kerugian material yang besar.

Tujuan penelitian ini adalah menerapkan algoritma twofish untuk mengamankan file sehingga file menjadi tidak dapat terbaca. Proses utama pada aplikasi perangkat lunak ini adalah melakukan enkripsi dan dekripsi.

Kata kunci: Enkripsi, Dekripsi, Algoritma twofish

PENDAHULUAN

Masalah keamanan dan kerahasiaan data merupakan hal yang sangat penting dalam suatu organisasi maupun pribadi. Apalagi jika data tersebut berada dalam suatu jaringan komputer yang terkoneksi dengan jaringan lain. Rawannya kejahatan dalam pencurian data dapat menyebabkan data yang berharga diakses oleh orang-orang yang tidak berhak, data diubahan secara legal, serta tidak jarang pula beberapa pihak menduplikanya. Jika hal tersebut sampai terjadi, kemungkinan besar akan merugikan pihak-pihak tertentu. Selain itu data yang dibajak tersebut akan memiliki kemungkinan rusak bahkan hilang yang akan menimbulkan kerugian material yang besar.

Oleh karena itu untuk menghindari agar hal tersebut tidak terjadi, digunakanlah sebuah program khusus proteksi/enkripsi data. Dewasa ini dengan arus informasi yang semakin global, kriptografi telah menjadi suatu bagian tidak dapat dipisahkan dari sistem keamanan data. Dalam kriptografi data di scramble menjadi kode yang tidak dapat di mengerti oleh orang lain. Kriptografi mengubah data asli menjadi

data sandi yang tidak dapat dikenali. Proses mengubah data asli menjadi data sandi lebih dikenal dengan istilah Enkripsi, sebaliknya untuk mentransformasikan kembali data sandi menjadi data asli disebut Dekripsi.

DASAR TEORI 1.1 Keamanan Data

Keamanan data merupakan keadaan dimana catatan yang berisi fakta-fakta berada dalam keadaan aman dan tidak diakses oleh individu atau kelompok yang tidak berkepentingan. Berikut beberapa ancaman keamanan data, yaitu :

a. Kebocoran (Leakage) : pengambilan informasi oleh penerima yang tidak berhak. b. Tampering : pengubahan informasi yang

tidak legal atau tanpa sepengetahuan.

c. Perusakan (Vandalism) : adalah gangguan dari system operasi tertentu di mana si perusak tidak mengharapkan keuntungan apapun dari perusakan tersebut.

Dalam hal ini, keamanan data dapat dibedakan menjadi dua kategori, yaitu keamanan fisik dan keamanan sistem.

(2)

14 Keamanan fisik merupakan bentuk keamanan

berupa fisik dari server, terminal/ client router sampai dengan cabling. Sedangkan keamanan sistem adalah keamanan pada sistem pengoperasiannya atau lebih khususnya pada lingkup perangkat lunak, misalnya dengan penggunaan kriptografi dan steganografi. Dalam laporan akhir ini akan dibahas tentang penggunaan kriptografi dalam memberikan keamanan pada data.

1.2 Kriptografi

Kriptografi (Cryptography) berasal dari bahasa Yunani, Cryptos d a n Graphien. Cryptos yang berarti rahasia dan Graphien artinya tulisan. Schneier (1996) mendefenisikan kriptografi sebagai ilmu yang mempelajari teknik untuk menjaga keamanan pesan. Di lain pihak, Guritman (2003) mendefinisikan kriptografi sebagai studi teknik matematik yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi entitas, dan otentikasi asal data. Dari penjelasan tersebut terlihat bahwa kriptografi tidak hanya sebagai alat yang memberikan keamanan informasi, melainkan juga berupa seperangkat teknik atau prosedur yang berhubungan dengan keamanan informasi. A. Enkripsi dan Dekripsi

Proses utama dalam suatu algoritma kriptografi adalah enkripsi dan dekripsi. Enkripsi merupakan hal yang sangat penting dalam Kriptografi sebagai pengamanan atas data yang dikirimkan agar rahasianya terjaga. Pesan aslinya disebut Plaintext yang diubah menjadi kode-kode yang tidak dimengerti (Chipertext). Enkripsi bisa diartikan sebagai Chiper atau Kode.

Pada mode ECB (Elekctronic

Codebook), sebuah blok pada plaintext

dienkripsi ke dalam sebuah blok ciphertext dengan panjang blok yang sama. Blok cipher memiliki sifat bahwa setiap blok harus memiliki panjang yang sama (misalnya 128 bit). Namun apabila pesan yang dienkripsi memiliki panjang blok terakhir tidak tepat 128 bit, maka diperlukan mekanisme padding, yaitu penambahan bit-bit dummies untuk menggenapi menjadi panjang blok yang sesuai; biasanya padding dilakukan pada

blok terakhir plaintext. Padding pada blok terakhir bisa dilakukan dengan berbagai macam cara, misalnya dengan penambahan bit-bit tertentu. Salah satu contoh penerapan padding dengan cara menambahkan jumlah total padding sebagai byte terakhir pada blok terakhir plaintext. Misalnya panjang blok adalah 128 bit (16 byte) dan pada blok terakhir terdiri dari 88 bit (11 byte) sehingga jumlah padding yang diperlukan adalah 5 byte, yaitu dengan menambahkan angka nol sebanyak 4 byte, kemudian menambahkan angka 5 sebanyak satu byte. Cara lain dapat juga menggunakan penambahan karakter end-of-file pada byte terakhir lalu diberi padding setelahnya.

Dekripsi merupakan proses kebalikan dari proses enkripsi, dimana pesan yang telah dienkripsi (Chipertext) ditransformasikan kembali ke bentuk asalnya (Plaintext). Untuk menghilangkan padding yang diberikan pada saat prpses enkripsi, dilakukan berdasarkan informasi jumlah padding yaitu angka pada byte terakhir.

Skema yang mengilustrasikan enkripsi dan dekripsi terlihat pada gambar 1.

Gambar 1. Skema Enkripsi dan Dekripsi

Gambar 1 mengilustrasikan sebuah Plaintext dienkripsi menggunakan Kunci Enkripsi sehingga menjadi Chipertext dan Chipertext didekripsi kembali menggunakan Kunci Dekripsi sehingga menjadi Plaintext. B. Tujuan Kriptografi

Terdapat empat tujuan mendasar pada ilmu Kriptografi yaitu:

1. Kerahasiaan, merupakan layanan yang digunakan untuk menjaga isi informasi dari siapapun kecuali yang memiliki kunci

(3)

15 rahasia untuk membuka informasi yang

telah di enkripsi.

2. Integritas data, 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, penghapusan dan pensubtitusian data lain ke dalam data yang sebenarnya. 3. Autentikasi, berhubungan dengan

identifikasi/ pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang berkmunikasi harus memperkenalkan. Informasi yang harus diautentikasi keaslian, isi datanya, waktu pengiriman dan lailn-lain.

4. Non-repudiasi atau penyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman atau terciptanya suatu informasi oleh yang mengirimkan/membuat.

Menurut Shannon terdapat 2 hal penting yang harus diperhatikan dalam kripto sistem yang baik yaitu :

1. Difusi : Apabila karakter dari plaintext ada yang diubah maka beberapa karakter dalam ciphertext akan berubah, sebaliknya apabila karakter dalam ciphertext ada yang berubah maka karakter dalam plaintext ikut berubah 2. Membingungkan : Key tidak berhubungan

dengan sederhana ke ciphertext, yang mana setiap karakter dalam ciphertext tergantung dari beberapa bagian key.

C. Algoritma Kriptografi

Algoritma Kriptografi adalah langkah-langkah logis bagaimana menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut. Algoritma kriptografi berdasarkan jenis kunci dibagi menjadi:

1. Algoritma Simetris

Algoritma simetris adalah algoritma kriptografi dimana kunci yang digunakan untuk enkripsi dan dekripsi sama. Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini

haruslah rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci rahasia. 2. Algoritma Asimetris

Algoritma asimetris adalah algoritma kriptografi dimana kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi. Pada algoritma ini menggunakan dua kunci yakni kunci publik dan kunci privat. Kunci publik disebarkan secara umum sedangkan kunci privat disimpan secara rahasia oleh si pengguna. Walau kunci publik telah diketahui namun akan sangat sukar mengetahui kunci privat yang digunakan. Pada umumnya kunci publik (public key) digunakan sebagai kunci enkripsi sementara kunci privat (private key) digunakan sebagai kunci dekripsi.

Algoritma kriptografi berdasarkan mode bit dibagi menjadi :

1. Block Cipher

Algoritma kriptografi ini bekerja pada suatu data yang berbentuk blok/ kelompok data dengan panjang data tertentu (dalam beberapa byte), jadi dalam sekali proses enkripsi atau dekripsi data yang masuk mempunyai ukuran yang sama.

2. Stream Cipher

Algoritma yang dalam operasinya bekerja dalam suatu pesan berupa bit tunggal. Stream Chiper mengenkripsi karakter secara individu (biasanya dalam bilangan biner) dari suatu plaintext, menggunakan transformasi enkripsi yang bergantung pada waktu.

1.3 Algoritma Twofish

Algoritma Twofish diciptakan oleh Bruce Schneier, sebelumnya ia menciptakan algoritma blowfish dengan 64 bit block chiper dan kunci 128 bit. Twofish merupakan algoritma kunci simetris blok cipher dengan blok masukan 128 bit dan kunci 128 bit,192 bit dan 256 bit. Menurut Schneier berikut adalah unsur pembangun twofish, yaitu :

1. Feistel Network (Jaringan Feistel)

Feistel Network adalah metode umum untuk mentransformasi suatu fungsi menjadi bentuk permutasi. Bagian paling fundamental dari Jaringan Feistel adalah

(4)

16 fungsi F yaitu sebuah pemetaan

key-dependent dari suatu input string menjadi output string. Dalam twofish dilakukan Feistel Network sebanyak 16 kali. Pada twofish, jaringan feistel terdiri dari Input Whitening, S-boxes, Transformasi Pseudo Hadamard, dan Output Whitening.

2. S-Boxes

Sebuah S-box adalah matriks yang berisi subtitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain. Pada kebanyakan algoritma Chiper blok, S-box memetakan m bit masukan dan n bit keluaran (m x n). Twofish menggunakan empat bijective, key-dependent dan 8-by-8-bit S-boxes. S- boxes ini dibuat menggunakan dua permutasi 8-by-8-bit dan material key.

3. Matrik MDS

Code Maximum Distance Separable (MDS) melalui sebuah pemetaan linear dari elemen field a ke elemen field b, menghasilkan campuran dari vektor a+b elemen, dengan properti jumlah minimum angka tidak nol dalam vector tidak nol paling kurang b+1. Pemetaan MDS dapat direpresentasikan dengan matriks MDS berdimensi a x b. Twofish menggunakan 4 x 4 matriks MDS tunggal.

4. Transformasi Pseudo-Hadamard (PHT) Transformasi Pseudo-Hadamard (PHT) adalah operasi pencampuran sederhana. Diberikan 2 input, a dan b. Twofish menggunakan PHT 32 bit untuk melakukan pencampuran output dari 2 double word yang menghasilkan fungsi g.

5. Whitening

Whitening merupakan teknik mengXOR key material sebelum ronde pertama dan sesudah ronde terakhir. Dalam serangan terhadap Twofish, terbukti bahwa whitening meningkatkan kesulitan menyerang Chipper, dengan jalan menyembunyikan input spesifik untuk awal dan akhir ronde dari twofish.

6. Key schedule

Key schedule adalah suatu cara dimana bit-bit key diubah menjadi key-key bulat setiap putaran yang digunakan oleh chipper. Twofish memerlukan material key yang sangat banyak, dan memiliki key schedule yang rumit. Jadi secara singkat, key schedule (penjadwalan kunci) adalah

proses pengacakan kunci untuk melakukan proses enkripsi sehingga tingkat kerumitannya menjadi tinggi.

Blok diagram Twofish terlihat pada Gambar 2

Gambar 2 Blok diagram Twofish Twofish menggunakan sebuah Struktur Feistel-like 16-round dengan tambahan whitening pada masukan dan keluaran. Satu-satunya unsur non-Feistel adalah 1-bit rotasi. Perputaran dapat dipindah ke dalam fungsi F untuk membuat suatu struktur Feistel murni, tapi memerlukan suatu tambahan perputaran kata-kata yang tepat sebelum langkah keluaran whitening. Plaintext dipecah menjadi empat kata 32-bit. Pada langkah whitening masukan terdapat xored dengan empat kata kunci. Ini diikuti oleh 16 putaran. Pada setiap putaran, dua kata-kata pada sisi kiri digunakan sebagai masukan kepada fungsi g (salah satu darinya diputar pada 8 bit pertama). Fungsi g terdiri dari empat byte-wide S-Box key-dependent, yang diikuti oleh suatu langkah pencampuran linier berdasar pada suatu matriks MDS. Hasil kedua fungsi g dikombinasikan menggunakan suatu Pseudo

(5)

17 Hadamard Transform (PHT), dan

ditambahkan dua kata kunci. Kedua hasil ini kemudian di-XOR ke dalam kata-kata pada sisi kanan (salah satunya diputar ke kanan 1 bit pertama, yang lainnya diputar ke kanan setelahnya). Yang kiri dan kanan dibelah dua kemudian ditukar untuk putaran yang berikutnya, pertukaran yang terakhir adalah dibalik, dan yang empat kata di-XOR dengan lebih dari empat kata kunci untuk menghasilkan ciphertext. Secara formal, 16byte plaintext p0,…,p15 yang yang pertama dipecah menjadi 4 kata P0,…,P3 dari 32bit masing-masing menggunakan konvensi little-endian.

Di dalam langkah whitening, double word ini di-XOR dengan 4 word dari kunci yang diperluas. Pada setiap 16 putaran, dua word pertama digunakan sebagai masukan kepada fungsi F, yang juga mengambil angka bulat itu sebagai masukan. Word yang ketiga di-XOR dengan keluaran pertama F dan kemudian diputar ke kanan satu bit. Word keempat diputar ke kiri satu bit kemudian di-XOR dengan word keluaran F Yang kedua . Akhirnya, keduanya saling ditukar menghasilkan persamaan : (Fr,0,Fr,1) = F(Fr,0,Fr,1,r) Rr+1,0 = ROR(Rr,2Fr,0,1) Rr+1,1 = ROL(Rr,3,1)Fr,1 Rr+1,2 = Rr,0 Rr+1,3 = Rr,1

Untuk r=0,…,15 di mana ROR dan ROL adalah berfungsi memutar argumentasi pertama (32-bit kata) ke kanan dengan angka bit-bit diindikasikan dengan argumentasi keduanya. Langkah whitening keluaran membatalkan pertukaran putaran terakhir dan meng XOR double word dengan 4 word dari kunci yang diperluas.

Ci=R16,(i+2) mod 4 Ki+4 I = 0,…,3 Empat word dari ciphertext kemudian menulis seperti 16 byte co,…,c15 sama seperti menggunakan konversi little-endian untuk plaintext. ci=

 

    ) 4 mod ( 8 2 4 / i i C mod 28 i = 0,…,15 Fungsi F

Fungsi F adalah suatu permutasi

key-dependent di atas nilai 64-bit. Untuk

mengambil tiga argumentasi, dua kata masukan R0 Dan R1, dan angka bulat r

digunakan untuk memilih subkey yang sesuai. R0 yang dilewati fungsi g,

menghasilkan T0. i diputar 8 bit ke kanan

kemudian melewati fungsi g untuk menghasilkan T1. Hasil T0 dan T1

selanjutnya dikombinasikan dalam sebuah

PHT danditambahkan 2 kata dari kunci

yang diperluas menghasilkan persamaan : T0 = g(R0)

T1 = g(ROL(R1,8))

F0 = (T0 + T1 + K2r+8) mod 232 F1 = (T0 + 2T1 + K2r+9) mod 232 Di mana (F0, F1) adalah hasil dari F. Kita juga menggambarkan fungsi F’ untuk menganalisa. F’ adalah identik dengan fungsi F, kalau tidak tambahkan beberapa blok kunci pada keluaran. ( PHT masih dilakukan.)

Gambar 3: Satu putaran fungsi F (kunci 128-bit)

(6)

18 Fungsi g

Fungsi g membentuk jantungnya Twofish. Kata masukan X dipecah menjadi empat byte. Masing-masing byte dijalankan melewati S-box key-dependent. Masing-masing S-box adalah bijective, mengambil 8 bit masukan, dan menghasilkan 8 bit keluaran. Ke empat hasil diinterpretasikan sebagai vektor yang panjangnya 4 di atas

GF(28), dan dikalikan dengan yang matriks

MDS 4x4 (menggunakan bidang GF(28)

untuk perhitungannya). Untuk menghasilkan vektor diinterpretasikan sebagai 32-bit kata sebagai hasil dari g : xi=

X/28i

mod 28 i = 0,…,3 yi=si

 

x i i = 0,…,3             3 2 1 0 z z z z =           . . . MDS .             3 2 1 0 y y y y Z= 8 3 0 2 .

i i z

Di mana si adalah S-Box key-dependent dan Z adalah hasil dari g. Untuk merumuskan

dengan baik, kita harus menetapkan koresponden antara nilai-nilai byte dan elemen-elemen bidang GF(28). Kita merepresentasikan GF(28) sebagai GF(2) [x]/v(x) di mana v(x)=x8+x6+x5+x3+1 adalah suatu polynomial primitif dari 8 tingkat di atas GF(2). Unsur Bidang a=

 7 0 i aix i dengan ai Є GF(2) adalah dikenal dengan nilai byte

7

0

i aix

i . Ini adalah beberapa pengertian pemetaan “alamiah"; penambahan di dalam GF(28

) berkorespondensi dengan suatu XOR dari bytes. Matriks MDS-nya adalah sebagai berikut : MDS =             B EF EF EF B EF EF EF B B B EF 5 01 01 5 01 5 5 5 01

Di mana elemen-elemen ditulis sebagai nilai-nilai byte hexadecimal.

Jadwal Kunci

Jadwal kunci harus menyediakan 40 kata dari kunci yang diperluas K0,…,K39, dan 4 buah S-Box key-dependent yang digunakan di dalam fungsi g. Twofish didefinisikan untuk kunci-kunci dengan panjang N= 128, N= 192, dan N= 256. Beberapa kunci yang lebih pendek dari 256 bit dapat digunakan oleh lapisannya dari nol hingga yang lebih besar yang didefinisikan sebagai panjang kunci. Kita mendefinisikan k=N/64. Kunci M terdiri dari 8k byte m0,…,m8k-1. Byte-byte adalah yang pertama diubah ke dalam 2k kata dari 32 bit masing-masing :

Mi = j j j i m 8 3 0 ) 4 ( .2

  i = 0,…2k-1

dan kemudian ke dalam dua vektor kata dari panjang k :

Me = (M0,M2,…,M2k-2) Mo = (M1,M3,…,M2k-2)

Sepertiga vektor kata dari panjang k adalah juga diperoleh dari kunci itu.

Hal ini dilakukan dengan mengambil byte-byte kunci di dalam kelompok 8, menginterpretasikannya sebagai vektor di atas GF(28), dan mengalikannya dengan matrils 4x8 yang diperoleh dari suatu kode

R. Masing-masing hasil dari 4 byte

kemudian diinterpretasikan sebagai suatu kata 32 bit.. Kata-kata ini menyusun vektor yang ketiga :

(7)

19               3 , 2 , 1 , 0 , i i i i s s s s =           . . . RS .                                  7 6 5 4 3 2 1 Si Si Si Si Si Si Si Si m m m m m m m m Si = j j j i S 8 3 0 , .2

 untuk i = 0,…,k-1, dan S = (Sk-1,Sk-2,…,S0)

Catat bahwa daftar S kata-kata itu di dalam order “terbalik". Karena Untuk perkalian matriks RS, GF (28) diwakili oleh

GF(2)[x]/w(x), di mana w(x)=

x8+x6+x3+x2+1 adalah polynomial primitif derajat dari 8 tingkat di atas GF(2). Pemetaan antara nilai-nilai byte dan elemen-elemen GF(28) menggunakan defnisi yang sama sebagaimana yang digunakan untuk perkalian matriks MDS. Dalam pemetaan ini, matriks RS ditunjukkan sebagai berikut :

RS =             03 9 58 19 3 47 5 68 6 1 9 58 5 5 87 55 4 1 1 02 3 82 56 4 87 55 4 01 E DB D AE E C E E DB A A A C FC A F A A

Ke tiga vektor Me, Mo, dan S ini

membentuk basis dari jadwal kunci. Penambahan Panjang Kunci

Twofish dapat menerima kunci-kunci

dengan panjang byte di atas 256 bit. Untuk ukuran-ukuran kunci yang tidak didefinisikan di atas, kunci diisi pada bagian akhir dengan nol byte kepada yang lebih panjang berikutnya. Sebagai contoh, suatu kunci 80-bit m0,…,m9 akan diperluas dengan mengatur mi=0 untuk i= 10,…,15

dan diperlakukan sebagaimana pada kunci 128-bit.

Fungsi h

Fungsi h adalah suatu fungsi yang mengambil dua input-a 32-bit kata X dan sebuah daftar L = ( L0,…,Lk-1) dari kata-kata

X 32 dengan panjang k- dan menghasilkan

satu kata pada outputnya. Ini adalah pekerjaan fungsi di dalam langkah-langkah k. Pada setiap langkah, empat byte itu masing-masing melintasi suatu fixed S-Box, dan di-XOR dengan sebuah byte yang diperoleh dari daftar. Akhirnya, byte-byte sekali lagi digeser melewati sebuah fixed S-box dan empat byte itu dikalikan dengan matriks MDS seperti halnya dalam g. Lebih formal kita memisah-misahkan kata-kata itu ke dalam bytes :

li,j=

Li /28

mod 2

8 xj=

X/28j

mod 28

untuk i=0,…, k-1 dan j=0,…,3. Kemudian urutan subtitusi dan XOR diterapkan:

yk,j=xj j = 0,…,3 jika k≥ 3 didapatkan : y3,0 = q1[y4,0]  l3,0 y3,1 = q0[y4,1]  l3,1 y3,2 = q0[y4,2]  l3,2 y3,3 = q1[y4,3]  l3,3 jika k= 4 didapatkan : y2,0 = q1[y3,0]  l3,0 y2,1 = q1[y3,1]  l3,1 y2,2 = q0[y3,2]  l3,2 y2,3 = q0[y3,3]  l3,3

Dalam seluruh kasus didapatkan : y0 = q1[q0[q0[y2,0]  l1,0] l0,0] y1 = q0[q0[q1[y2,1]  l1,1] l0,1] y2 = q0[q1[q0[y2,2]  l1,2] l0,2] y3 = q1[q1[q1[y2,3]  l1,3] l0,3]

Di sini, q0 dan q1 ditetapkan permutasi di

(8)

20 segera. Menghasilkan vektor yang

merupakan perkalian matriks MDS, seperti halnya dalam fungsi g :

            3 2 1 0 z z z z =           . . . MDS .             3 2 1 0 y y y y Z = i i i z 8 3 0 2 .

di mana Z adalah hasil dari fungsi h

S-Box Key-dependent

Sekarang dapat didefinisikan S-Box dalam fungsi g oleh :

g(x)= h(X; S)

Hal itu adalah karena i= 0,…,3, S-Box

Key-Dependent si dibentuk oleh pemetaan dari xi

ke yi di dalam fungsi h, di mana daftar

Lsama dengan vektor S yang diperoleh dari kunci itu.

Kata-kata Kunci yang Diperluas Kj

Kata-kata dari kunci yang diperluas didefinisikan menggunakan fungsi h : Ρ = 224 + 216 + 28 + 20

Ai = h(2iρ,Me)

Bi = ROL(h((2i + 1) ρ,Mo),8) K2i = (Ai + Bi) mod 232

K2i+1 = ROL((Ai + 2Bi) mod 232,9)

Konstanta ρ digunakan untuk menduplikat byte yang mempunyai properti untuk i= 0,…,255, kata itu jika terdiri dari empat byte yang sama, masing-masing dengan nilai i. Fungsi h diberlakukan bagi kata-kata jenis ini. Untuk Ai nilai-nilai byte itu adalah

2i, dan argumentasi yang kedua dari h adalah Me. Bi dihitung dengan cara yang

sama menggunakan 2i+1 sebagai byte nilai dan Mo sebagai argumentasi yang kedua, dengan suatu putaran ekstra di atas 8 bit. Nilai-nilai Ai dan Bi Dua dikombinasikan

dalam PHT. Salah satu dari hasil itu

selanjutnya diputar dengan 9 bit. Kedua hasil tersebut membentuk dua kata kunci yang diperluas.

Permutasi q0 dan q1

Permutasi q0 dan q1 adalah ditetapkan permutasi di atas nilai-nilai 8 bit. Mereka dibangun dari empat 4-bit permutasi yang masing-masing berbeda. Untuk nilai masukan x didefinisikan sebagai nilai output y sebagai berikut :

a0, b0 =

x/16

, x mod 16 a = a0  b0

b1 = a0  ROR1(b0,1)  8a0 mod 16

a2, b2 = t0[a1],t1[b1] a3 = a2  b2

b3 = a2  ROR1(b2,1)  8a2 mod 16

a4, b4 = t2[a3],t3[b3] y = 16b4 + a4

di mana ROR4 adalah suatu fungsi yang

serupa dengan ROR yang merupakan putaran nilai 4-bit. Pertama, byte dipecah menjadi dua bagian. Ini dikombinasikan dalam suatu bijective yang mencampur langkah. Masing-masing bagian kemudian melintasi 4-bitfixed S-Box. Ini diikuti oleh yang lain. Akhirnya, dua bagian dikombinasikan kembali ke dalam satu byte. Untuk permutasi q0 S-Box 4-bit :

t0 = [8 1 7 D 6 F 3 2 0 B 5 9 E C A 4] t1 = [E C B 8 1 2 3 5 F 4 A 6 7 0 9 D] t2 = [B A 5 E 6 D 9 0 C 8 F 3 2 4 7 1] t3 = [D 7 F 4 1 2 6 E 9 B 3 0 8 5 C A] di mana masing-masing S-Box 4-Bit diwakili oleh daftar masukan yang menggunakan notasi hexadecimal. (untuk masukan 0,…,15 didaftarkan dalam order.) Dengan cara yang sama, untuk q1 S-Box 4-bit :

t0 = [2 8 B D F 7 6 E 3 1 9 4 0 A C 5] t1 = [1 E 2 B 4 C 3 7 6 D A 5 F 9 0 8] t2 = [4 C 7 5 1 6 9 A 0 E D 8 2 B 3 F] t3 = [B 9 5 1 C 3 D E 6 4 7 F 2 0 8 A]

(9)

21 PERANCANGAN SISTEM

1.4 Tahapan Proses Enkripsi dan Dekripsi Tujuan pembuatan sistem ini adalah menerapkan algoritma twofish untuk mengamankan file sehingga file menjadi tidak dapat terbaca. Proses utama pada pembuatan aplikasi perangkat lunak ini adalah melakukan enkripsi dan dekripsi. 1. Proses Enkripsi

Langkah-langkah dalam melakukan proses Enkripsi File :

a. Memulai proses enkripsi.

b. Input file yang akan dienkripsi.

c. Jika Plaintext berukuran 128 bit maka tidak akan terjadi proses Padding. Jika

Plaintext berukuran lebih dari 128 bit,

maka proses Padding akan dilakukan. d. Input kunci untuk mengenkripsi.

e. Jika panjang kunci yang di input kurang dari 128 bit maka akan dilakukan penyesuaian panjang kunci untuk mencapai 128 bit.

f. Proses enkripsi.

g. Menampilkan hasil enkripsi. h. Selesai.

Digram alur proses enkripsi file terlihat pada gambar 4.

Mulai Input File File Hasil Enkripsi Selesai Panjang File > 128 bit Proses Padding Input Kunci Panjang Kunci < 128 bit Penyesuaian panjang kunci Proses Enkripsi T F T F

Gambar 4. Flowchart Enkripsi File 2. Proses Dekripsi

Langkah-langkah dalam melakukan proses Dekripsi File :

a. Memulai proses dekripsi.

b. Input file yang akan di dekripsi. c. Input kunci untuk mendekripsi file. d. Jika panjang kunci yang akan di input

kurang dari 128 bit maka akan dilakukan penyesuaian panjang kunci untuk mencapai panjang 128 bit.

e. Proses dekripsi. f. Menghapus padding.

g. Menampilkan hasil dekripsi. h. Selesai.

Digram alur proses dekripsi file terlihat pada gambar 4.

(10)

22 Mulai Input File File Hasil Dekripsi Selesai Input Kunci Panjang Kunci < 128 bit Penyesuaian panjang kunci Proses Dekripsi T F

Gambar 5. Flowchart Dekripsi File 1.5 Perancangan Proses

Proses yang dirancang pada perangkat lunak ini berdasarkan pada algoritma Twofish. Algoritma Twofish sendiri merupakan algoritma yang menggunakan kunci simetris. Secara lebih jelas tahapan-tahapan algoritma twofish akan dijabarkan sebagai berikut.

Penjadwalan Kunci :

a. Sebelum melalui tahapan enkripsi, maka harus melalui penjadwalan kunci. Panjang kunci yang didefiniksikan twofish sepanjang 128 bit, 192 bit dan 256 bit. Apabila input kunci yang dimasukkan kurang dari ketentuan tersebut, maka akan ditambahkan zero

byte sampai panjang kunci memenuhi

ketentuan.

b. Setelah itu kunci dibagi menjadi vector Me, Mo dan S. Vector Me dan Mo digunakan pada fungsi h sebagai list, sedangkan vector S digunakan untuk tahap enkripsi pada fungsi g.

c. Masukkan masing-masing word kunci Kj yang diekspansi yaitu 2i dan 2i+1 ke

dalam fungsi h yaitu melalui pemutasi q0 dan q1 dilanjutkan dengan matrik MDS.

d. Hasil dari word 2i melalui proses PHT, sedangkan word 2i+1 sebelum melalui proses PHT dilakukan rotasi ke kiri sejauh 8 bit. Maka hasil dari proses tersebut menjadi kunci yang sudah terjadwal.

Tahap Enkripsi :

a. Input Plaintext sebesar 128 bit akan dibagi menjadi empat word yaitu P0, P1, P2, P3 yang masing-masing sebesar 32 bit. P0 dan P1 akan menjadi bagain kiri, sedangkan P2 dan P3 akan menjadi bagian kanan.

b. Plaintext akan melalui proses input

whitening yaitu input akan di-XOR

dengan empat word kunci yang telah terjadwal yaitu K0, K1, K2 dan K3.

c. Proses berikutnya input akan melalui

proses pada fungsi F yang meliputi di dalamnya adalah fungsi g dan dilanjutkan dengan PHT, dan dilakukan penambahan hasil PHT dengan kunci. Proses fungsi F tersebut dilakukan secara bertahap . R0 dan R1 yang merupakan hasil whitening akan menjadi input untuk fungsi F.

d. R0 dan R1 akan dimasukkan ke dalam

fungsi g yang merupakan bagian awal dari fungsi F. Untuk R1 sebelum dimasukkan ke dalam fungsi g akan dirotasi ke kiri sejauh 8 bit. R0dan R1 melalui S-Box dan selanjutnya akan dikalikan dengan menulis matriks MDS. Hasil dari fungsi g ini masing-masing menjadi T0 dan T1.

e. T0 dan T1 akan melalui proses PHT

yang merupakan penggabungan T0 dan T1 dimana T0+T1 dan T0+2T1. Setelah itu hasil dari PHT tersebut masing-masing akan ditambahkan dengan kunci yang sudah terjadwal yaitu K2r+8 dan K2r+9. Hasil dari fungsi F adalah F0 dan F1, maka dengan demikian fungsi F telah terpenuhi.

f. Setelah itu F0 dan F1 masing-masing di-XOR dengan R2 dan R3. Hasil dari

(11)

23 R2 XOR F0 dirotasi ke kanan sejauh 1

bit. Sedangkan R3 XOR F1, sebelumnya R3 dirotasi ke kiri sejauh 1 bit.

e. Setelah itu, maka akan dilakukan iterasi sebanyak 16 kali. Setiap iterasi sama dengan proses sebelumnya.

f. Hasil dari swap blok terakhir adalah penukaran bagian kanan dan kiri yang di-undo.

g. Hasil dari 16 round enkripsikan melalui

output whitening yaitu proses

peng-XORan 16 round enkripsi dengan K4, K5, K6 dan K7.

Tahap Dekripsi :

Pada proses dekripsi, cara yang dilalui sama dengan proses enkripsi tetapi hanya arahnya saja yang berlawanan. Proses yang dilalui secara berurutan yaitu :

Output Whitening, Swap Blok Terakhir, 16

Iterasi Dekripsi, dan Input Whitening. Inputnya adalah chipertext dan kunci untuk memperoleh plaintext. Kunci untuk dekripsi sama saja dengan kunci enkripsi, begitupun juga panjang maksimal kunci yaitu 256 atau 32 karakter.

IMPLEMENTASI

Implementasi dari perangkat lunak merupakan tahap akhir dari proses perancangan. Agar proses implementasi dapat bekerja dengan baik, maka terlebih dahulu dilakukan pengujian untuk mengetahui kesalahan yang ada kemudian dievaluasi.

Jika program dijalankan maka tampilan yang muncul adalah tampilan Form Utama seperti pada Gambar 6.

Gambar 6. Form Menu Utama Pada form menu utama yang merupakan tampilan awal ini terdapat pilihan Encryption/ Decryption serta pilihan Exit. Jika memili Encryption/ Decryption maka akan tampil form Enkripsi dan Dekripsi. Untuk keluar dari menu utama maka dipilih tombol Exit yang merupakan pilihan untuk keluar secara keseluruhan dari Aplikasi. Tampilan form Enkripsi dapat dilihat pada gambar 7.

Gambar 7. Form Enkripsi Pada form tersebut, plaintext yang akan dienkripsi di browse dari komputer melalui tombol Browse File, kemudian pilih format

file yang akan dienkripsi, dalam hai ini

(12)

24 melakukan pemilihan file, input kunci yang

akan digunakan pada proses. Klik tombol

Encrypt untuk melakukan proses enkripsi.

Tampilan form Dekripsi dapat dilihat pada gambar 8.

Gambar 8. Form Dekripsi Tampilan tersebut ditampilkan ketika Pengguna hendak melakukan proses Dekripsi. Proses dekripsi hanya bisa dilakukan jika kunci yang di input oleh user bernilai Benar. File yang akan didekripsi di browse dari komputer dan untuk melakukan proses dekripsi haruslah memasukkan kunci yang sama pada saat melakukan proses enkripsi. Klik tombol Decrypt untuk melakukan proses dekripsi.

Saat proses Enkripsi dijalankan akan terlihat di sebelah pojok kiri bawah terdapat label “Encrypt” dengan nilai persen disebelahnya yang memiliki maksud untuk memberitahu sampai seberapa jauh proses enkripsi telah dilaksanakan. Keterangan “Success” berarti proses enkripsi telah berhasil dijalankan. Terlihat pada gambar 9.

Gambar 9. Proses Enkripsi Proses ini juga terjadi saat proses dekripsi akan tetapi label yang tertulis adalah “Decrypt”. Terlihat pada gambar 10. Sama seperti proses enkripsi setelah proses dekripsi dijalankan hasil dekripsi akan diletakkan pada textbox bagian bawah yang berjudul “Plaintext”, dengan waktu mulai tercatat dibawahnya dengan label yang berjudul “Start At” dan waktu selesai tercatat dengan label “Finish At” dan terdapat label yang berjudul “Elapsed

time” yang menandakan seberapa lama

proses dekripsi dilakukan. Jika file didekripsi menggunakan kunci berbeda dengan yang digunakan pada saat proses enkripsi, maka akan menampilkan hasil yang tidak sesuai dengan file asli. File hasil dekripsi tidak sama dengan file asli. File masih terdeteksi sebagai file rusak.

Gambar 10. Proses Dekripsi Jika file didekripsi menggunakan kunci

(13)

25 berbeda dengan yang digunakan pada saat

proses enkripsi, maka akan menampilkan hasil yang tidak sesuai dengan file asli seperti gambar 11.

Gambar 11. Proses Dekripsi Dengan Kunci Berbeda

File hasil dekripsi tidak sama dengan file asli. File masih terdeteksi sebagai file rusak.

KESIMPULAN

Dari hasil perancangan, pembahasan dan pengujian aplikasi, data dapat dibuat menjadi data yang tidak dapat terbaca dengan menggunakan algoritma twofish, sehingga kriptosistem yang dirancang dapat memenuhi prinsip kriptografi. Dengan demikian data dapat lebih terjaga keamanaannya. Sekalipun terjadi pencurian data, setidaknya pihak yang tidak berhak tersebut tidak dapat mengetahui isi dari file.

DAFTAR PUSTAKA

Ariyus, Dony. 2008. Pengantar Ilmu Kriptografi Teori, Analisis, dan Implementasi. Yogyakarta : Andi. J. Alam, M. Agus. 2003. Belajar Sendiri

Mengolah Database Dengan Borload Delphi 7. Jakarta : PT Elex Media Komputindo.

Kurniawan J., Ir. , M.T., Kriptografi, Keamanan Internet dan Jaringan Komunikasi, Penerbit Informatika Bandung, April 2004.

Mudeng, Denny. Kriptografi Twofish, (Online),

(budi.insan.co.id/courses/el7010/dikme njur-2004/denny-report.doc)

Schneier B., Applied Crytography, Second Edition, John Wiley & Sons, Inc., 1996. Schneier, B., Kelsey, J., Whiting, D., Wagner, D., Hall, C., dan Ferguson, N.(1998). Twofish: A

128-Bit Block Cipher, (online)

(http://www.schneier.com/paper-twofish- paper.pdf)

Wahana Komputer. The Best Encryption Tools. Jakarta : PT Elex Media Komputindo. 2004.

Gambar

Gambar 1. Skema Enkripsi dan  Dekripsi
Gambar 2  Blok diagram Twofish  Twofish  menggunakan  sebuah  Struktur  Feistel-like  16-round  dengan  tambahan  whitening  pada  masukan  dan  keluaran
Gambar 3: Satu putaran fungsi F (kunci  128-bit)
Gambar 4.  Flowchart Enkripsi File
+5

Referensi

Dokumen terkait

Hasil penelitian menunjukkan bimbingan sosial efektif untuk mengembangkan perilaku asertif remaja, dibuktikan pada peningkatan skor 10 indikator yaitu: hormat

Dari hasil penelitian uji antidiare kombinasi ekstrak etanol kunyit, beluntas, salam dan jambu biji dengan metode proteksi dan transit intestinal yang diberikan per oral pada

Narasumber yang dipilih penulis adalah dua orang perawat yang telah bekerja lebih dari lima tahun di Panti Lansia Santa Anna dan dua orang lansia yang tinggal di Panti Lansia Santa

Preprocessing data telah dilakukan sesuai dengan proses yang ada pada KDD, dengan menghasilkan set data yang baru hasil dari penggabungan dua sumber data yang berbeda yaitu

Satriadi dan Widada (2004) menambahkan bahwa sumber-sumber material tersuspensi yang berasal dari aliran sungai berupa hasil pelapukan dari bahan organik, material

Diriwayatkan dari Sufyān Al-Tsauriy bahwa ia berkata : Kalau bukan karena Abu Hāsyim Al-Shūfi, maka aku tidak akan tahu tentang kedalaman riya, dan telah disebutkan dalam buku

The incorporation of Epoxidized Natural Rubber also enhanced the rubber-filler interaction and tensile properties of the silica-filled Styrene Butadiene. Rubber

Penelitian ini bermanfaat untuk mencari obat yang yang lebih efektif dalam mengurangi nyeri tenggorok dan suara serak akibat dari pemasangan pipa nafas selama operasi.. Adapun