• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 2 LANDASAN TEORI"

Copied!
26
0
0

Teks penuh

(1)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

Kriptografi dapat didefinisikan sebagai berikut :

− Menurut Menezes, Van Oorschot, dan Vanstone. (1996, p4) adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data.

− Menurut Rosen (2000, p266) adalah bagian dari kriptologi, ilmu yang mempelajari tentang sistem keamanan, yang berhubungan dengan desain dan implementasi dari sistem rahasia.

− Menurut Burton (2002, p144) adalah suatu teknik atau metode yang bertujuan untuk melindungi informasi yang dikirimkan melalui jaringan komunikasi publik.

Proses-proses yang ada dalam kriptografi adalah enkripsi dan dekripsi. Dimana menurut Rosen (2000, p260) metode enkripsi atau cipher adalah metode prosedur untuk mengubah plaintext, pesan yang akan dibentuk menjadi pesan rahasia, menjadi

ciphertext, pesan rahasia, dengan cara mengganti karakter yang ada pada plaintext

melalui proses transformasi. Proses untuk mengubah plaintext menjadi ciphertext disebut enkripsi atau enchipering; sementara proses sebaliknya yaitu mengubah

ciphertext menjadi plaintext kembali oleh penerima yang dimaksud, yang memiliki

pengetahuan mengenai metode untuk melakukannya, disebut dekripsi. Untuk menjalankan kedua proses tersebut diperlukan suatu algoritma kriptografi yang menggunakan fungsi matematika, algoritma ini membutuhkan suatu key (kumpulan karakter, nomor, atau frase) untuk melakukan proses enkripsi dan dekripsi. Plaintext yang sama akan menghasilkan ciphertext yang berbeda apabila menggunakan key yang berbeda (Anonymous, 1999, p12).

Terdapat empat tujuan mendasar pada ilmu kriptografi dimana tujuan tersebut merupakan beberapa aspek keamanan informasi (Menezes et al, 1996, p4), dimana tujuan tersebut adalah :

(2)

− Kerahasiaan adalah layanan yang digunakan untuk menjaga isi informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka informasi yang telah dienkripsi, dimana terdapat beberapa cara untuk memperoleh kerahasiaan tersebut mulai dari proteksi fisikal sampai menggunakan algoritma matematika yang mana menyebabkan data menjadi tidak dapat dibaca.

− 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 pensubsitusian data lain kedalam data yang sebenarnya.

− Autentikasi berhubungan dengan identifikasi/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.

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

Menurut Shannon (Trappe dan Washington, 2002, p37) terdapat 2 hal penting yang harus diperhatikan dalam kriptosistem yang baik yaitu :

− Difusi

Apabila karakter dari plaintext ada yang dirubah maka beberapa karakter dalam

ciphertext akan berubah, sebaliknya apabila karakter dalam ciphertext ada yang

berubah maka karakter dalam plaintext ikut berubah − membingungkan

key tidak berhubungan dengan sederhana ke ciphertext, yang mana setiap

(3)

2.1.1 Sejarah Singkat

Awal sejarah perkembangan kriptografi dimulai sejak tahun 1900 SM. Salah satu yang dikenal pada saat itu adalah enkripsi sederhana yang dibuat oleh Julius Caesar yang digunakannya untuk mengirim pesan rahasia. Perkembangan sistem komputer dan sistem komunikasi pada tahun 1960-an membuat keamanan informasi diperlukan, membuat kriptografi ikut berkembang karena kriptografi digunakan sebagai alat untuk memproteksi informasi tersebut. Dimulai dari penemuan Feistel pada awal 1970-an yang pada akhirnya diadopsi oleh U.S. Federal Information Processing Standard untuk mengenkripsi data rahasia, Data Encryption Standard (DES), sampai pada tahun 1976 dimana Diffie dan Hellman mempublikasi New Directions in Crytography. Makalah ini memperkenalkan konsep revolusioner dari kriptografi menggunakan public-key dan juga mempersembahkan metode baru dan brilian untuk pertukaran key.

Pada tahun 1978 Rivest, Shamir, dan Adleman menemukan enkripsi public-key pertama yang dapat digunakan (sekarang sering dikenal dengan nama algoritma RSA). Kontribusi yang paling menonjol dari kriptografi public-key adalah digunakannya untuk

digital signature, pada tahun 1991 standar internasional pertama dikeluarkan untuk digital signature.

Pada tahun 1998 diadakan suatu kompetisi yang diberi nama Advanced Encrytion

Standard (AES) untuk menetapkan metode algoritma enkripsi standar yang baru untuk

Amerika (keamanan DES dianggap tidak lagi relevan karena dengan teknologi yang ada kode enkripsi pada DES dapat dibuka dalam waktu kurang dari 1 hari). Pada kompetisi itu diperoleh 5 finalis yaitu algoritma Rijndael, Serpent, Twofish, MARS, dan RC5. Pada kompetisi itu ditetapkan algoritma Rijndael sebagai algoritma standar untuk enkripsi di Amerika. Rijndael dipilih karena kecepatan proses enkripsi dan kemudahan dalam pembentukannya, Serpent gagal karena proses enkripsi yang lama, dan Twofish gagal karena algoritmanya yang sulit. Namun di antara semua metode tersebut algoritma

twofish memiliki tingkat keamanan yang tinggi.

2.1.2 Kriptografi Public-key atau Asimetris

Kriptografi Public-key adalah proses enkripsi-dekripsi asimetrik yang menggunakan sepasang key dimana key yang pertama digunakan untuk enkripsi (public

(4)

key) dan key yang lain digunakan untuk dekripsi (private key). Dengan adanya kedua key

tersebut maka apabila public key dipublikasikan dan private key tetap disimpan maka siapapun yang memiliki public key tersebut dapat mengenkripsi suatu informasi, akan tetapi tidak bisa mendekripsinya, yang hanya dapat dibaca oleh pemilik private key. Secara komputerisasi untuk mendapatkan private key dari public key adalah hal yang tidak mungkin (Anonymous, 1999, p14).

Gambar 2.1 Enkripsi dengan teknik public key (Gambar diambil dari menezes et al, p26)

Pada Gambar 2.1 terlihat bahwa public key (e) dikirim ke tujuan melalui jaringan yang tidak diamankan, yang mana melalui jaringan ini pula kemungkinan ciphertext (c) dikirimkan.

2.1.3 Kriptografi Simetris

Kriptografi simetris adalah proses enkripsi-dekripsi simetrik yang menggunakan satu key baik untuk enkripsi maupun untuk dekripsi (Anonymous, 1999, p13).

(5)

Gambar 2.2 Enkripsi dengan kriptografi simetris (Gambar diambil dari menezes et al, p16)

Pada Gambar 2.2 terlihat bahwa key (e) dikirim ke tujuan melalui jaringan yang diamankan, kemudian melalui jaringan yang tidak diamankan ciphertext (c) dikirimkan ke tujuan. Salah satu masalah utama dari kriptografi simetris ini adalah mencari cara yang efisien untuk memberitahukan key yang dibutuhkan secara aman.

Menurut Menezes et al (1996, p16) terdapat 2 kelas dari enkripsi dengan key simetris, yaitu :

A Stream Cipher

Stream Cipher mengenkripsi karakter secara individu (biasanya dalam bilangan

biner) dari suatu plaintext, menggunakan transformasi enkripsi yang bergantung pada waktu. Dalam segi hardware stream cipher biasanya lebih cepat dari block cipher. Karena stream cipher memiliki propagasi yang terbatas atau jarang mengalami kesalahan, maka cipher ini memiliki keuntungan apabila digunakan dalam suatu transmisi yang memiliki tingkat kesalahan yang cukup besar, selain itu cipher ini baik digunakan juga pada saat informasi yang ingin dienkripsi harus diproses setiap karakternya satu persatu (misalnya pada perlengkapan yang tidak memiliki memori atau

(6)

B Block Cipher

Menurut Menezes et al (1996, p224) block cipher sebenarnya dapat dikategorikan sebagai key simetris atau dapat juga public-key. Block cipher adalah suatu fungsi yang memetakan n-bit blok dari plaintext ke dalam n-bit blok ciphertext; n adalah panjang blok.

Cara standar menggunakan block cipher adalah membagi beberapa kumpulan karakter pada plaintext menjadi beberapa blok, blok dari plaintext tersebut kemudian dikonversi menjadi blok dari ciphertext, satu persatu hingga seluruh blok, dan pada saat konversi setiap blok tidak akan melibatkan blok lainnya. Adapun teknik ini termasuk dalam tipe electronic codebook (ECB). Ada beberapa teknik untuk mengenkripsi ke dalam blok ciphertext dari blok plaintext, diantaranya tipe cipher block chaining (CBC) dan tipe cipher feedback (CFB) (Trappe dan Washington, 2002, p33).

Karena block cipher menggunakan blok untuk enkripsi maka apabila dalam suatu blok terdapat 1 karakter yang terganti maka pada saat enkripsi seluruh blok tersebut akan terenkripsi menjadi blok ciphertext yang berbeda, contoh ‘blo’ akan dienkripsi menjadi ‘rbz’ akan tetapi apabila blok ‘blo’ berubah menjadi ‘clo’ maka akan menghasilkan ‘sdc’ sebagai blok ciphertext-nya. Oleh karena itu keamanan block cipher tergantung pada jumlah frekuensi bloknya (Trappe dan Washington, 2002, p35).

2.1.4 Kriptografi simetris dibandingkan dengan Kriptografi asimetris

Menurut Menezes et al (1996, pp31-32) masing-masing jenis kriptografi memiliki keuntungan dan kerugian, keuntungan dari kriptografi simetris adalah

1. Cipher key simetris didesain untuk dapat menerima data yang banyak. Implementasi untuk mengenkripsi rata-rata ratusan megabyte per detik.

2. Key biasanya pendek.

3. Cipher key simetris dapat digunakan dalam mekanisme berbagai kriptografi seperti pseudorandom number generator, fungsi hash, dan digital signature. 4. Cipher key simetris dapat digunakan untuk membuat cipher yang lebih kuat.

Transformasi sederhana yang dengan mudah dianalisa, tapi apabila berdiri sendiri lemah, dapat digunakan untuk membangun cipher yang lebih kuat.

(7)

Kerugian dari kriptografi simetris adalah

1. Dalam komunikasi antara 2 orang, key harus tetap menjadi rahasia dari kedua orang tersebut.

2. Dalam jaringan yang luas, ada banyak key yang harus diatur.

3. Demi berlangsungnya keamanan maka key yang digunakan harus selalu diganti pada jangka waktu tertentu.

4. Mekanisme digital signature yang menggunakan enkripsi key simetris biasanya memerlukan key yang panjang guna fungsi verifikasi public atau untuk digunakan dalam trusted third party (TTP).

Keuntungan dari kriptografi asimetris adalah

1. Hanya private key yang harus dijaga kerahasiaannya.

2. Administrasi dari key dalam sebuah jaringan membutuhkan TTP yang benar-benar terpercaya.

3. Bergantung pada penggunaan, pasangan private key/public key tidak perlu diubah dalam jangka waktu yang lama.

4. Public key relatif lebih efisien dalam mekanisme digital signature. Key yang digunakan untuk fungsi verifikasi publik lebih kecil daripada key yang digunakan pada kriptografi simetris.

5. Dalam jaringan yang luas, jumlah key yang dibutuhkan lebih sedikit daripada yang digunakan dalam kriptografi simetris.

Kerugian dari kriptografi asimetris adalah

1. Proses dalam kriptografi asimetris dalam metode enkripsi lebih lambat dijalankan dibandingkan dengan kriptografi simetris.

2. Ukuran key yang digunakan biasanya lebih panjang dibandingkan dengan enkripsi menggunakan key simetris.

3. Tidak ada public key yang terbukti benar-benar aman (walaupun hal ini juga berlaku untuk block cipher).

Menurut Menezes et al (1996, p32) private key dalam sistem public-key harus lebih besar dari key pada sistem key simetris (apabila dalam key simetris 128 bit maka untuk public-key 1024 bit, RSA) karena (untuk algoritma yang masih terjaga)

(8)

penyerangan yang paling efisien dalam sistem key simetris adalah exhaustive key search, yang mana penyerangan paling efisien yang digunakan dalam sistem public-key adalah serangan “shortcut”, contohnya faktorisasi, yang mana lebih efisien apabila dibandingkan dengan exhaustive key search.

2.2 Algoritma Twofish

Berdasarkan Schneier, Kelsey, Whiting, Wagner, Hall, dan Ferguson. (1998, p3)

twofish merupakan salah satu peserta AES yang telah memenuhi kriteria National Institute of Standard and Technology (NIST), dimana kriteria itu antara lain adalah blok

sebesar 128 bit, dapat menggunakan key sepanjang 128 bit, 192 bit, dan 256 bit, efisien untuk diimplementasikan ke dalam berbagai spesifikasi komputer, memiliki variasi dalam performa yang disebabkan oleh adanya key schedule, dan lain-lain.

Menurut Schneier et al (1998, pp4-5) berikut adalah elemen-elemen yang membangun algoritma twofish:

1. Feistel Network

Adalah metode umum untuk mentransformasi fungsi tertentu (biasanya disebut sebagai fungsi F) menjadi permutasi. Elemen fundamental dari Feistel network adalah fungsi F, pemetaan yang bergantung pada key dari string input ke string

output. Menurut Xue (2006, p2) Feistel Network dapat juga disebut

substitution-permutation-network, yang memiliki bentuk umum seperti pada Gambar 2.3. Input dari Feistel Network berupa blok plaintext berukuran n bit, dan sebuah key K. Blok dari plaintext dibagi menjadi 2 bagian, L0 dan R0. kedua bagian data

tersebut diproses sebanyak r putaran yang kemudian dikombinasikan untuk menghasilkan blok ciphertext. Dalam setiap putaran i, input berupa Li-1 dan Ri-1,

yang diturunkan dari output putaran sebelumnya, sama seperti subkey Ki, yang

(9)

Gambar 2.3 Bentuk umum Feistel Network (Gambar diambil dari Xue, p3)

2 putaran dari Feistel network disebut “cycle”. Dalam 1 cycle, setiap bit dari blok teks telah diubah sekali. Twofish adalah 8 cycle Feistel network dengan fungsi bijektif F.

2. S-boxes

S-box adalah tabel operasi subtitusi non linear yang digunakan kebanyakan block cipher. Twofish menggunakan 4 diferensiasi, bijektif, key-dependent, 8 x 8 bit S-boxes, yang dibentuk menggunakan 2 8 x 8 bit permutasi yang sudah pasti dan

(10)

3. Matriks MDS

Kode maximum distance separable (MDS) melalui field adalah pemetaan linear dari elemen field a ke elemen field b, yang membentuk elemen vektor gabungan a+b, dengan properti jumlah minimum elemen tidak nol dalam vektor tidak nol paling kurang b+1. Pemetaan MDS dapat direpresentasikan dengan matriks MDS berdimensi a x b. Kondisi dimana matriks a x b bisa dikatakan MDS adalah semua submatriks persegi yang memungkinkan bersifat non-singular. Twofish menggunakan 4 x 4 matriks MDS tunggal yang didapatkan melalui GF(28) dengan polinomial modularnya adalah x8 + x6 + x5 + x3 + 1.

4. Pseudo-Hadamard Transforms (PHT)

PHT adalah operasi pencampuran sederhana. Memberikan 2 input, a dan b, 32 bit PHT didefinisikan :

a' = a + b mod 232 b' = a + 2b mod 232

Twofish menggunakan 32 bit PHT untuk mencampur output dari 2 double word

yang dihasilkan fungsi g. 5. Whitening

Adalah teknik meng-XOR materi key sebelum putaran pertama dan sesudah putaran terakhir, teknik ini dapat menambah tingkat kesulitan pada penyerangan

keysearch.

6. Key Schedule

Adalah bit dari key yang dirubah menjadi key-key setiap putaran yang digunakan.

Twofish membutuhkan banyak materi key, dan memiliki key schedule yang rumit.

Langkah – langkah untuk menjalankan algoritma twofish sebagai berikut. 1. Key Schedule

Langkah ini dijalankan untuk mendapatkan nilai output berupa Me, Mo, dan S. Dimana Nilai output Me dan Mo akan digunakan untuk langkah Expanded Key dan S akan digunakan dalam Fungsi g.

(11)

2. Expanded Key

Langkah ini dijalankan untuk mendapatkan ke-40 key yang akan digunakan dalam langkah whitening dan Fungsi F. Salah satu proses yang dilakukan pada langkah ini adalah menjalankan Fungsi h yang mana didalam Fungsi h ini akan dijalankan proses permutasi q0 dan q1.

3. Konversi little-endian

Langkah ini dijalankan untuk mengkonversi 16 karakter pada input menjadi

Double Word.

4. Input whitening

Langkah untuk meng-XOR Word yang dikonversi sebelumnya dengan 4

Expanded Key.

5. Algoritma Twofish

Langkah utama yang akan dijalankan, didalam algoritma akan dipanggil Fungsi F yang mana Fungsi tersebut akan memanggil Fungsi g.

6. Output whitening

Langkah untuk meng-XOR Word dengan 4 Expanded Key. 7. Konversi little-endian

Langkah ini dijalankan untuk mengkonversi kembali Double Word menjadi 16 karakter.

Gambar 2.4 menunjukkan garis besar dari algoritma twofish. Twofish menggunakan struktur yang seperti Feistel sebanyak 16 putaran dengan tambahan

whitening untuk input dan output. Elemen non-Feistel yang digunakan hanya perputaran

1 bit, yang mana rotasi tersebut dapat dipindah ke dalam fungsi F untuk membuat struktur Feistel murni, akan tetapi hal ini dapat menyebabkan perubahan algoritma karena dibutuhkan rotasi tambahan dari word sebelum langkah output whitening dilakukan.

(12)

Gambar 2.4 Twofish

(Gambar diambil dari Schneier et al, p6)

Plaintext dibagi menjadi 4 bagian yang berukuran double word. Pada langkah input whitening plaintext ini kemudian di-XOR dengan 4 key word, yang kemudian

diiterasi sebanyak 16 putaran. Dari setiap putaran, 2 word yang terletak pada sisi kiri digunakan untuk input pada fungsi g. Fungsi g terdiri dari 4 byte-wide-key-dependent

(13)

Kedua hasil ini kemudian di XOR dengan word yang berada di sebelah kanan (yang mana salah satunya dirotasi ke kiri sebanyak 1 bit sebelum di XOR, dan yang lainnya dirotasi ke kanan sesudah di XOR). Potongan kiri dan kanan kemudian ditukar untuk putaran berikutnya. Setelah semua putaran selesai, word yang ditukar pada putaran terakhir ditukar kembali dan 4 word tadi akan di XOR dengan 4 key word lainnya untuk membuat ciphertext.

2.2.1 Key Schedule

Key schedule harus menyediakan 40 expanded key word K0, . . . , K39, dan 4

key-dependent S-boxes yang digunakan dalam fungsi g. Didefinisikan k = N/64, key M

terdiri dari 8k byte m0, . . . , m8k-1 (dimana N adalah panjang key yang digunakan, twofish

dibuat agar dapat menerima key sepanjang N = 128, N = 192, dan N = 256, Key yang lebih kecil dari N bit yang tersedia dapat digunakan dengan cara mengisi nilai nol, untuk nilai yang tidak terisi, sampai panjang key standar yang paling dekat dengan panjang

key. Misalkan terdapat key sepanjang 80 bit maka key yang dimiliki adalah m0, . . . , m9

dan selebihnya mi = 0 dimana i = 10, . . . , 15 , karena panjang key standar yang terdekat

adalah 128 bit). Pertama-tama byte dikonversi menjadi double word, sehingga dapat dikatakan

Mi =

â

j=0

3

m

H

4i+j

L

. 28j i = 0, ..., 2k- 1

Kemudian ke dalam vektor 2 word dari panjang k

Me =

H

M0, M2, ..., M2k-2

L

Mo =

H

M1, M3, ..., M2k-1

L

Vektor word ketiga dari panjang k juga diturunkan dari key. Hal ini dapat dilakukan dengan cara membagi key byte dalam 8 grup, menginterpretasikan key tersebut sebagai vektor melalui GF(28), dan mengalikannya dengan 4 x 8 matriks yang diturunkan dari kode RS. Masing-masing akan menghasilkan 4 byte yang nantinya diinterpretasikan menjadi double word.

(14)

i

k

jjjjjjjjjjj

si,0 si,1 si,2 si,3

y

{

z

z

z

z

z

z

z

z

z

z

z

=

i

k

jjjjjjjjjjjjj

. ... . . . . RS . . . . ... .

y

{

z

z

z

z

z

z

z

z

z

z

z

z

z

.

i

k

jjjjjjjjjjjjjjjj

jjjjjjjjjjj

m8i m8i+1 m8i+2 m8i+3 m8i+4 m8i+5 m8i+6 m8i+7

y

{

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

z

Si =

â

j=0 3 si,j. 28j Untuk i = 0, . . . , k-1 maka S=

H

Sk-1, Sk-2, ..., S0

L

Hasil dimasukkan dengan urutan terbalik ke dalam vektor S. Vektor Me, Mo, dan

S merupakan faktor utama untuk membentuk key schedule.

Untuk perkalian matriks RS, GF(28) direpresentasikan sebagai GF(2)[x]/w(x), dimana w(x) = x8+x6+x3+x2+1 adalah polinomial primitif dari pangkat 8 melalui GF(2). Pemetaan antara nilai byte dan elemen GF(28) menggunakan definisi yang sama dengan perkalian matriks MDS. Menggunakan pemetaan tersebut, RS matriks dapat ditulis :

RS=

i

k

jjjjjjjjj

01 A4 55 87 5 A 58 DB 9 E A4 56 82 F3 1E C6 68 E5 02 A1 FC C1 47 AE 3D 19 A4 55 87 5A 58 DB 9E 03

y

{

z

z

z

z

z

z

z

z

z

2.2.2 Expanded Key

Word yang terdapat pada expanded key didefinisikan dengan menggunakan

fungsi h. r = 224+ 216+ 28+ 20 Ai = h

H

2ir, Me

L

Bi = ROL

H

h

H

H

2i+1

L

r, Mo

L

, 8

L

K2i =

H

Ai+ Bi

L

mod 232 K2i+1 = ROL

IH

Ai+2Bi

L

mod 232, 9

M

Nilai konstan ρ digunakan untuk duplikasi byte, word iρ terdiri dari 4 byte yang sama, masing-masing dengan nilai i. Ai nilai byte adalah 2i, dan argumen kedua dari h

(15)

argumen kedua, hanya berbeda pada rotasi tambahan sebanyak 8 bit. Nilai Ai dan Bi

dikombinasikan menggunakan PHT. Salah satu perhitungan dirotasi sebanyak 9 bit, hasil K tersebut menghasilkan expanded key.

2.2.2.1 Fungsi h

Gambar 2.5 adalah gambaran umum dari fungsi h. Fungsi h adalah fungsi yang mengambil 2 input, double word X dan sekumpulan L = (L0, . . . , Lk-1) double word dari

panjang k, dan menghasilkan 1 word sebagai output. Fungsi ini berjalan sebanyak k putaran. Di setiap putaran, 4 byte akan disampaikan pada S-box yang sudah tetap, dan di- XOR dengan byte yang diturunkan dari daftar L. Kemudian, byte sekali lagi disampaikan ke S-box yang sudah tetap, dan 4 byte dikalikan dengan matriks MDS sama seperti fungsi g. Kemudian word dibagi menjadi byte.

li,j =

A

Li 28j

E

mod 28

xj =

A

X 28j

E

mod 28

Untuk i = 0, . . . , k-1 dan j = 0, . . . , 3 , maka urutan subtitusi dan XOR diaplikasikan. yk,j = xj j = 0, ..., 3 Jika k = 4, maka y3,0 = q1

@

y4,0

D

Ål3,0 y3,1 = q0

@

y4,1

D

Ål3,1 y3,2 = q0

@

y4,2

D

Ål3,2 y3,3 = q1

@

y4,3

D

Ål3,3 Jika k ≥ 3, maka y2,0 = q1

@

y3,0

D

Ål2,0 y2,1 = q1

@

y3,1

D

Ål2,1 y2,2 = q0

@

y3,2

D

Ål2,2 y2,3 = q0

@

y3,3

D

Ål2,3

Untuk semua kasus

y0 = q1

@

q0

@

q0

@

y2,0

D

Ål1,0

D

Å l0,0

D

y1 = q0

@

q0

@

q1

@

y2,1

D

Ål1,1

D

Å l0,1

D

y2 = q1

@

q1

@

q0

@

y2,2

D

Ål1,2

D

Å l0,2

D

(16)

q0 dan q1 adalah permutasi yang sudah tetap berbasis nilai 8 bit. Vektor yang

dihasilkan yi dikalikan dengan matriks MDS, sama seperti fungsi g.

i

k

jjjjjjjjj

z0 z1 z2 z3

y

{

z

z

z

z

z

z

z

z

z

=

i

k

jjjjjjjjjjjjj

. ... . . . . MDS . . . . ... .

y

{

z

z

z

z

z

z

z

z

z

z

z

z

z

.

i

k

jjjjjjjjj

y0 y1 y2 y3

y

{

z

z

z

z

z

z

z

z

z

Z =

â

i=0 3 zi. 28i

(17)

Gambar 2.5 Fungsi h

(18)

2.2.2.2 Permutasi q0 dan q1

Permutasi q0 dan q1 adalah permutasi yang sudah tetap berbasis nilai 8 bit.

Permutasi tersebut masing-masing dikonstruksi dari 4 4-bit permutasi yang berbeda. Untuk nilai input x, dapat didefinisikan output y sebagai berikut :

a0, b0 =

@

x 16

D

, x mod 16 a1 = a0Åb0 b1 = a0 Å ROR4

H

b0, 1

L

Å8a0 mod 16 a2, b2= t0

@

a1

D

, t1

@

b1

D

a3 = a2Åb2 b3 = a2 Å ROR4

H

b2, 1

L

Å8a2 mod 16 a4, b4= t2

@

a3

D

, t3

@

b3

D

y = 16b4 + a4

Dimana ROR4 adalah fungsi ROR yang berdasarkan pada data yang bernilai 4

bit. Pertama, byte dipisah menjadi 2 bagian, langkah ini dikombinasi dengan langkah

bijective mixing. Kemudian setiap bagian disampaikan pada masing-masing S-box 4-bit

yang sudah tetap. Yang kemudian diikuti dengan langkah mixing dan S-box berikutnya. Akhirnya, kedua bagian tersebut dikombinasikan kembali menjadi byte. Untuk permutasi q0, S-box 4-bit yang digunakan adalah :

t0 =

@

8 1 7 D 6 F 3 2 0 B 5 9 E C A 4

D

t1 =

@

E C B 8 1 2 3 5 F 4 A 6 7 0 9 D

D

t2 =

@

B A 5 E 6 D 9 0 C 8 F 3 2 4 7 1

D

t3 =

@

D 7 F 4 1 2 6 E 9 B 3 0 8 5 C A

D

Dimana masing-masing S-box 4-bit tersebut diwakili oleh daftar yang menggunakan notasi heksadesimal. Sedangkan untuk permutasi q1, S-box 4-bit yang digunakan adalah :

t0 =

@

2 8 B D F 7 6 E 3 1 9 4 0 A C 5

D

t1 =

@

1 E 2 B 4 C 3 7 6 D A 5 F 9 0 8

D

t2 =

@

4 C 7 5 1 6 9 A 0 E D 8 2 B 3 F

D

t3 =

@

B 9 5 1 C 3 D E 6 4 7 F 2 0 8 A

D

2.2.3 Langkah Utama

Adapun metode untuk membagi plaintext adalah sebagai berikut, 16 byte dari

plaintext p0, . . . , p15 dibagi menjadi 4 double word P0, . . . , P3 masing-masing

(19)

Pi =

â

j=0

3

p

H

4i+j

L

.28j i = 0, . . ., 3

Pada langkah input whitening, word tersebut di XOR dengan 4 expanded key

word.

R0,i = Pi Å Ki i = 0, . . ., 3

Dari setiap 16 putaran, 2 word pertama akan digunakan sebagai input dari fungsi F, yang mana juga menggunakan jumlah putaran sebagai input. Kata ketiga di XOR dengan output pertama dari F, kemudian dirotasi ke kanan sebesar 1 bit. Word keempat dirotasi ke kiri sebesar 1 bit dan di XOR menggunakan output kedua dari F. Langkah ini dapat dirumuskan sebagai berikut :

H

Fr,0, Fr,1

L

= F

H

Rr,0, Rr,1, r

L

Rr+1,0 = ROR

H

Rr,2 Å Fr,0, 1

L

Rr+1,1 = ROL

H

Rr,3, 1

L

ÅFr,1

Rr+1,2 = Rr,0

Rr+1,3 = Rr,1

Untuk r = 0, . . . , 15 dan dimana ROR serta ROL adalah fungsi rotasi dari argumen pertama (Double word) kiri atau kanan sesuai nomor yang diindikasikan pada argumen kedua.

Langkah pada output whitening mengembalikan ‘pertukaran’ yang terdapat di putaran terakhir, dan meng-XOR word data dengan 4 expanded key word.

Ci = R16,

H

i+2

L

mod4ÅKi+4 i = 0, ..., 3

word dari ciphertext kemudian dikonversi menjadi 16 byte c0, . . . , c15 dengan

menggunakan konversi little-endian yang sama dengan yang digunakan pada plaintext.

ci =

A

C

@

i 4

D

28

H

i mod4

L

E

mod 2 8 i = 0, ..., 15 2.2.3.1 Fungsi F

Fungsi F adalah permutasi yang bergantung pada key yang memiliki nilai 64 bit. Fungsi ini memiliki 3 argumen, 2 input word R0 dan R1, dan bilangan bulat r digunakan

untuk memilih subkey yang diperlukan. R0 disampaikan ke dalam fungsi g, yang

(20)

untuk membentuk T1. Hasil dari T0 dan T1 kemudian dikombinasi dengan menggunakan

PHT dan 2 word dari expanded key dihasilkan. T0 = g

H

R0

L

T1 = g

H

ROL

H

R1, 8

L

L

F0 =

H

T0 + T1+ K2r+8

L

mod 232

F1 =

H

T0 +2T1+ K2r+9

L

mod 232

Dimana (F0,F1) adalah hasil dari F.

2.2.3.2 Fungsi g

Fungsi g adalah inti dari algoritma twofish. Word dari input dibagi menjadi 4

byte. Di setiap byte disampaikan ke key-dependent masing-masing dari S-box.

Masing-masing S-box bersifat bijektif, ambil 8 bit input, dan hasilkan 8 bit output. Keempat hasil akan diintrepretasikan sebagai vektor dengan panjang 4 melalui GF(28), dan dimultiplikasi menggunakan 4 x 4 MDS matriks. vektor yang dihasilkan diintrepretasikan sebagai double word yang mana merupakan hasil dari fungsi g.

xi =

A

X 28i

E

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

@

xi

D

i=0, ..., 3

i

k

jjjjjjjjj

z0 z1 z2 z3

y

{

z

z

z

z

z

z

z

z

z

=

i

k

jjjjjjjjjjjjj

. ... . . . . MDS . . . . ... .

y

{

z

z

z

z

z

z

z

z

z

z

z

z

z

.

i

k

jjjjjjjjj

y0 y1 y2 y3

y

{

z

z

z

z

z

z

z

z

z

Z =

â

i=0 3 zi.28i

Dimana X adalah word dari input, si adalah key-dependent S-boxes dan Z adalah

hasil dari fungsi g. Berdasarkan Savard (1999), keempat key-dependent S-boxes tersebut terbentuk dari elemen 32 bit dari vektor S.

Jika panjang key yang digunakan adalah 256 bit, vektor S memiliki 4 elemen 32 bit, s0, s1, s2, dan s3, sehingga operasi yang dijalankan adalah

output = q0(S0,0 xor q1(S1,0 xor q1(S2,0 xor q0(S3,0 xor q1(input))))

output = q1(S0,1 xor q1(S1,1 xor q0(S2,1 xor q0(S3,1 xor q0(input))))

output = q0(S0,2 xor q0(S1,2 xor q1(S2,2 xor q1(S3,2 xor q0(input))))

(21)

Saat panjang key yang digunakan sepanjang 192 bit, definisi S-box disederhanakan menjadi

output = q0(S0,0 xor q1(S1,0 xor q1(S2,0 xor q0(input)))

output = q1(S0,1 xor q1(S1,1 xor q0(S2,1 xor q0(input)))

output = q0(S0,2 xor q0(S1,2 xor q1(S2,2 xor q1(input)))

output = q1(S0,3 xor q0(S1,3 xor q0(S2,3 xor q1(input)))

dan jika panjang key yang digunakan 128 bit, definisi S-box disederhanakan menjadi

output = q0(S0,0 xor q1(S1,0 xor q1(input))

output = q1(S0,1 xor q1(S1,1 xor q0(input))

output = q0(S0,2 xor q0(S1,2 xor q1(input))

output = q1(S0,3 xor q0(S1,3 xor q0(input))

Dimana matriks MDS yang digunakan adalah :

MDS =

i

k

jjjjjjjjj

01 EF 5 B 5 B 5B EF EF 01 EF 5B 01 EF EF 01 EF 5B

y

{

z

z

z

z

z

z

z

z

z

2.2.4 Algoritma Dekripsi Twofish

Menurut Xue (p4, 2006), proses dekripsi dari kriptografi yang menggunakan

Feistel Network memiliki proses yang sama dengan proses enkripsi dengan

menggunakan ciphertext sebagai input-nya, akan tetapi subkey K digunakan dengan urutan yang terbalik. Pendapat Xue ini dapat digunakan untuk proses dekripsi pada algoritma Twofish, akan tetapi pada algoritma Twofish terdapat operasi pada bagian

Feistel Network sebelah kanan yang mengakibatkan adanya perubahan pada algoritma Twofish seperti berikut

H

Fr,0, Fr,1

L

= F

H

Rr,0, Rr,1, r

L

Rr+1,1 = ROR

H

Rr,3 Å Fr,1, 1

L

Rr+1,0 = ROL

H

Rr,2, 1

L

ÅFr,0

Rr+1,2 = Rr,0

Rr+1,3 = Rr,1

2.3 ROL dan ROR

Operasi ROL dan ROR adalah salah satu operasi yang digunakan dalam bahasa

assembly. Menurut Hyde (1996) operasi ROL adalah operasi yang merotasi input-nya ke

kiri sesuai dengan nilai bit yang telah ditentukan dimana bit pertama nantinya akan berputar menjadi bit terakhir, sedangkan operasi ROR adalah operasi yang merotasi

(22)

input-nya ke kanan sesuai dengan nilai bit yang telah ditentukan dimana bit terakhir

nantinya akan berputar menjadi bit pertama.

2.4 Interaksi Manusia dan Komputer

Menurut Shneiderman (1998, p15) Dalam merancang suatu program atau sistem, perlu diperhatikan satu hal yang sangat penting, yaitu interaksi antara pengguna dengan program atau sistem. Interaksi yang baik haruslah bersifat user friendly, yang berarti mudah untuk digunakan oleh pengguna yang awam sekalipun. Dalam merancang program atau sistem yang user friendly ada beberapa kriteria yang harus diperhatikan :

1. Waktu belajar, yaitu lamanya waktu yang diperlukan oleh seorang pengguna untuk mempelajari cara menggunakan piranti lunak tersebut.

2. Kecepatan sistem, yaitu kecepatan sistem dalam merespon perintah yang diberikan oleh pengguna.

3. Tingkat kesalahan pengguna, yaitu jumlah dan jenis kesalahan yang paling sering dilakukan oleh pengguna dalam menjalankan piranti lunak mencapai tingkat yang rendah.

4. Daya ingat pengguna, yaitu jangka waktu suatu informasi dapat diingat oleh seorang pengguna.

5. Kepuasan pengguna, hal ini sangat penting karena apabila pengguna tidak menyukai sistem yang dibuat, maka ia tidak akan menggunakannya lagi.

Menurut Shneiderman (1998, pp74-75) terdapat delapan aturan emas (eight

golden rules) yang digunakan dalam merancang suatu antar muka yang baik, aturan

tersebut yaitu :

1. Berusaha untuk konsisten

Konsistensi dalam merancang antarmuka antara lain konsistensi urutan aksi dalam situasi-situasi yang memiliki kemiripan, hal-hal yang standar menggunakan istilah yang sama, penggunaan font yang sama, dan lain-lain. 2. Memungkinkan pengguna menggunakan shortcut

(23)

sama dengan jumlah perintah yang banyak. Tersedianya shortcut, tombol spesial dan makro, akan sangat berguna bagi pengguna yang mengutamakan efisiensi.

3. Memberikan umpan balik yang informatif

Sistem yang baik memberikan umpan balik terhadap semua aksi yang dilakukan pengguna. Setiap interaksi pengguna seharusnya diberi umpan balik seperti suara atau tampilan visual untuk mengkonfirmasikan bahwa piranti lunak memberikan reaksi terhadap aksi pengguna, suatu tampilan yang bersifat statis atau tidak memberikan umpan balik akan membingungkan pengguna.

4. Merancang dialog untuk menghasilkan keadaan akhir yang baik

Setiap aksi yang dilakukan pengguna harus mempunyai urutan yang terorganisasi dengan baik. Dengan kata lain, aksi harus memiliki kondisi permulaan, tengah, dan kondisi akhir. Setelah aksi selesai dilakukan, akan sangat baik apabila tersedia umpan balik yang dapat menginformasikan pengguna bahwa aksi yang mereka lakukan telah berhasil dengan baik, sehingga akan timbul rasa aman pada pengguna untuk melanjutkan ke aksi yang berikutnya.

5. Memberikan pencegahan kesalahan dan penanganan kesalahan yang sederhana

Sistem harus dibuat sedemikian rupa sehingga pengguna tidak akan melakukan kesalahan yang besar. Jika pengguna melakukan kesalahan, hendaknya sistem memberikan peringatan berupa pesan kesalahan yang sederhana, spesifik dan bersifat konstruktif.

6. Memungkinkan pembalikan aksi yang mudah

Setiap aksi harus dirancang sedemikian rupa sehingga pengguna dapat melakukan pembalikan untuk kembali ke keadaan semula sebelum aksi tersebut dijalankan. Dengan adanya fasilitas ini, pengguna akan memiliki keberanian untuk mengeksplorasi sistem yang telah dibuat, karena apabila pengguna telah melakukan kesalahan, mereka dapat melakukan pembalikan terhadap aksi yang telah dilakukan.

(24)

7. Pengguna dapat menguasai sistem

Pengguna harus mampu menguasai sistem dengan cara memberikan perintah-perintah kepada sistem. Sistem yang rumit, kesulitan dalam memperoleh informasi, serta ketidakmampuan menjalankan sistem akan membuat pengguna merasa tidak nyaman dan tidak puas.

8. Mengurangi beban ingatan jangka pendek

Keterbatasan manusia dalam mengelola memori jangka pendek menyebabkan dibutuhkannya suatu tampilan yang sesederhana mungkin dimana informasi yang ada sebaiknya dikelompokkan, pengaturan dalam multipage, pergerakkan window yang sesedikit mungkin, waktu latihan yang cukup dan optimal serta pengaturan dalam urutan aksi.

2.5 Rekayasa Piranti Lunak

Menurut Bauer (Pressman, 2001, p20), Rekayasa Piranti Lunak adalah penggunaan prinsip-prinsip perancangan untuk membuat suatu piranti lunak yang dapat diandalkan dan dapat diterapkan pada mesin secara efisien. Menurut Pressman (2001, p20-21) rekayasa piranti lunak mencakup 3 elemen yang mampu mengontrol proses pengembangan piranti lunak, yaitu :

1. Proses (Process)

Proses rekayasa piranti lunak merupakan perekat yang menggabungkan layer teknologi secara bersama-sama dan memungkinkan pengembangan piranti lunak komputer secara berkala

2. Metode-metode (Methods)

Metode piranti lunak menyediakan cara-cara teknis dalam membangun piranti lunak. Terdiri dari analisis kebutuhan, perancangan, membangun program, pengujian, dan dukungan.

(25)

Menyediakan pendukung otomatis atau semi otomatis untuk proses dan metode, misalnya Computer Aided Software Engineering (CASE) yang mengkombinasikan piranti lunak, piranti keras, dan database piranti lunak. Menurut Pressman (2001, pp28-30) salah satu model yang paling umum dan sering digunakan dalam membangun piranti lunak adalah model waterfall, atau yang lebih dikenal dengan nama Classic Life Cycle. Pada model waterfall ini terdapat 6 tahap yaitu :

1. Rekayasa sistem

Tahap awal perancangan piranti lunak adalah rekayasa sistem yang akan dibangun dengan menetapkan kebutuhan-kebutuhan elemen sistem.

2. Analisis kebutuhan piranti lunak

Sebelum merancang sistem harus terlebih dahulu diketahui kebutuhan, informasi, beserta spesifikasi piranti lunak.

3. Perancangan

Pada tahap ini menitikberatkan pada tiga komponen program, yaitu struktur data, arsitektur piranti lunak, dan prosedur detail.

4. Pembuatan kode

Merupakan penerjemahan hasil rancangan ke bahasa yang dimengerti oleh mesin dalam bentuk program-program.

5. Pengujian

Sebelum diaplikasikan, suatu piranti lunak harus diuji dahulu agar keluaran yang dihasilkan oleh sistem sesuai dengan yang diharapkan.

6. Pemeliharaan

Pemeliharaan piranti lunak dilakukan untuk mengantisipasi peningkatan kebutuhan pengguna akan fungsi-fungsi baru.

2.5.1 State Transition Diagram (STD)

Menurut Pressman (2001, p302) State Transition Diagram atau diagram transisi merupakan suatu alat perancangan yang menggambarkan sistem bekerja sebagai akibat

(26)

dari suatu kejadian yang dinamis. Kejadian difokuskan dan dihubungkan dengan berbagai cara dari state ke state.

Simbol-simbol yang digunakan dalam STD : − State (tampilan kondisi)

Berupa simbol kotak, merepresentasikan layar yang ditampilkan menurut keadaan atau atribut, untuk memenuhi suatu tindakan pada waktu tertentu yang mewakili suatu bentuk keberadaan atau kondisi tertentu.

Gambar 2.6 State − State Transition (tindakan)

Berupa simbol anak panah disertai keterangan tindakan yang dilakukan.

Gambar 2.7 State Transition − Kondisi dan Aksi

Kondisi bersifat mengubah state dan aksi adalah aksi yang dilakukan sistem ketika state berubah.

2.5.2 Spesifikasi Proses

Berdasarkan Pressman (2001,p327) spesifikasi proses adalah penjelasan dari proses-proses yang terjadi di dalam sistem, spesifikasi proses menjadi pedoman bagi pembuat program dalam membuat kode program maupun dokumentasi. Beberapa cara untuk membuat spesifikasi proses antara lain dengan :

− Tabel keputusan − Pseudocode

− Bagan alur (Flowchart) − Diagram Nassi-Shneiderman − Bentuk narasi atau cerita

Gambar

Gambar 2.1 Enkripsi dengan teknik public key  (Gambar diambil dari menezes et al, p26)
Gambar 2.2 Enkripsi dengan kriptografi simetris  (Gambar diambil dari menezes et al, p16)
Gambar 2.3 Bentuk umum Feistel Network  (Gambar diambil dari Xue, p3)
Gambar 2.4  Twofish
+3

Referensi

Dokumen terkait

Tim Gabungan terus melakukan evakuasi pencarian korban longsor di dusun Dusun Jemblung Desa Sampang Kecamatan Karangkobar Kabupaten Banjarnegara.. Dari hasil pencarian

Sedangkan pembahasan yang dipilih peneliti lebih fokus pengenalan hewan peliharaan dengan media buku interaktif yang berjudul “Perancangan Buku Interaktif Pengenalan

dari masing-masing waktu perjalanan dari semua kendaraan dari arus lalu-lintas untuk bergerak dari satu titik ke titik yang lain. Traffic counting Proses penghtungan

Judul Tesis : HUBUNGAN SOSIAL EKONOMI DAN INTAKE ZAT GIZI DENGAN TINGGI BADAN ANAK BARU MASUK SEKOLAH (TBABS) PADA DAERAH ENDEMIS GAKY DI KECAMATAN PARBULUAN

(3) Apabila hasil pemeriksaan sebagaimana yang dimaksud ayat (1) pasal ini ternyata menimbulkan gangguan yang membahayakan lingkungan, kepada perusahaan tersebut

Me- mang benar, saya perlu ada paling tidak pun 10% daripada harga pangsapuri tersebut tetapi terdapat beberapa kaedah yang membo- lehkan kita membeli

Dengan melihat fungsi bangunan yaitu sebagai Galeri sepeda motor bekas dimana sebagai tempat pameran dan jual beli motor bekas maka konsep bentuk yang di ambil dari sebuah

Target penerimaan perpajakan pada APBN tahun 2013 ditetapkan sebesar Rp1.193,0 triliun, terdiri atas pendapatan pajak dalam negeri sebesar Rp1.134,3 triliun