BAB II
LANDASAN TEORI 2.1. Definisi File Konteks komputerisasi file merupakan nama yang sudah tidak asing karena dalam melakukan aktifitas dipastikan user akan berjumpa dengan yang disebut file. Di mulai dari file yang berbentuk dokumen, foto, video maupun direktori – direktori lain. File dalam perkuliahan informatika sering diartikan sebagai“kumpulan record yang menyatakan sekumpulan entitas dengan aspek – aspek tertentu yang umum dan terorganisasi untuk maksud tertentu”. Sedangkan faktor – faktor pembentuk file ada juga Record yang diartikan sebagai kumpulan dari sejumlah elemen data yang saling terkait. Lalu ada pula Field yang merupakan data terkecil yang memiliki makna, sedangkan data adalah representasi fakta dunia nyata yang memilikisuatu objek seperti manusia, barang, hewan, peristiwa, konsep dan lain-lain.
2.2. Keamanan Jika kita bertukar pesan (contoh seperti surat) dengan orang lain, maka kita tentu ingin pesan yang kita kirim sampai pada pihak yang dituju dengan aman. Pengertian aman disini sangat luas, aman bisa berarti bahwa selamapengiriman pesan tentu kita berharap pesan tersebut tidak dibaca oleh orang yang tidak berhak. Sebab, mungkin saja pesan yang kita kirim berisi sesuatu yang rahasia sehingga jika pesan rahasia dibaca oleh pihak lawan atau pihak yang tidak berkepentingan, maka bocorlah kerahasiaan pesan yang kita kirim. Ini adalah masalah keamanan pesan yang dinamakan kerahasiaan. Aman bisa juga berarti bahwa kita ingin bahwa pesan yang akan kita kirim ke penerima sampai dengan utuh tanpa ada kurang pada isi atau lebih sedikitpun, artinya tidak ada manipulasi pesan selama pesan itu dalam perjalanan menuju 2-1
2-2
penerima, dan harus dipastikan bahwa pesan yang diterima oleh penerima adalah pesan asli yang memang dikirim oleh pengirim tanpa ada penambahan isi ataupun pengurangan isi yang memungkinkan akan merubah arti dari isi pesan tersebut. Selain itu, penerima yakin bahwa pesan tersebut memang benar berasal dari kita sendiri, bukan dari orang lain yang menyamar, dan kita pun yakin bahwa orang yang akan kita kirimi pesan adalah orang yang benar dan yang sesungguhnya akan kita kirimi pesan. Ini adalah masalah keamanan pesan yang dinamakan otentikasi. Jika kita menjadi penerima pesan, kita pun tidak ingin kelak pengirim pesan mambantah pernah mengirimi pesan kepada kita. Ini adalah msalah keamanan yang disebut penyangkalan (repudiation). Zaman sekarang banyak orang yang membantah telah mengirimi atau menerima pesan. Pedahal kita yakin bahwa kita memang menerima pesan dari orang tersebut. Jika pengirim membantah telah mengirim pesan, maka anda perlu membuktikan ketidak benaran penyangkalan tersebut (non – repudiation). Keempat masalah kemanan yang disebut diatas, yaitu kerahasiaan, integreitas data, otentikasi, dan penyangkalan dapat diselesaikan dengan menggunakan kriptografi. Kriptografi tidak hanya menyediakan alat untuk keamanan pesan , tetapi juga sekumpulan teknik yang berguna. Kehidupan kita saat ini dilingkupi oleh kriptografi. Mulai dari transaksi di mesin ATM, transaksi bank, transaksi dengan kartu debet maupun kredit, percakapan di telepon genggam, pengaksesan internet dan bahkan pengiriman pesan melalui pesan singkat di telepon genggam. Begitu pentingnya kriptografi untuk keamanan informasi, sehingga jika bicara mengenai masalah keamanan yang berkaitan dengan menggunakan computer, maka orang tidak bisa memisahkan dengan kriptografi.
2-3
2.3. Kriptografi 2.3.1. Definisi Kriptografi Kata kriptografi berasal dari bahasa Yunani, “kryptos” yang berarti tersembunyi dan “graphein” yang berarti tulisan. Sehingga kata kriptografi dapat diartikan dengan berupa fase “tulisan tersembunyi”.. artinya kriptografi merupakan seni dan ilmu menyembunyikan informasi dari penerima yang tidak berhak. Dalam kamus bahasa inggris Oxford diberikan pengertian sebagai berikut” “sebuah tekhnik rahasia dalam penulisan, dengan karakter khusus, dengan menggunakan huruf dan karakter diluar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci,juga semua hal yang ditulis dengan cara seperti ini”. Menezes, van Oorscot dan Vanstone (1996), menyatakan bahwa: ”kriptografi adalah sebuah studi teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi entitas dan otentikasi keaslian data. Kriptografi tidak hanya berarti penydiaan keaman informasi, melainkan sebuah himpunan teknik-teknik. Selain definisi diatas, scheiner (1996) mengemukakan pendapatnya tentang definisi kriptografi yaitu : “ilmu dan seni untuk menjaga keamanan pesan” Kriptografi berkembang menjadi sebuah seni merahasiakan pesan (kata ‘graphy” di dalam “cryphtography” itu sendiri sudah menyiratkan sebuah seni) (munir,2006) Dalam sebuah algoritma kriptografi, terdapat tiga unsur, yaitu : 1. enkripsi, yaitu proses mengubah plaintext menjadi chipertext 2. dekripsi, yaitu proses mengubah ciphertext menjadi plaintext 3. kunci, merupakan kunci yang digunakan untuk proses enkripsi maupun dekripsi
2-4
Konsep matematis yang mendasari kriptografi adalah relasi antara 2 (dua) buah himpunan yaitu himpunan yang berisi elemen – elemen plainteks dan himpunan yang berisi ciphertext. Enskripsi dan dekripsi merupakanm fungsi yang memetakan elemen – elemen antar kedua himpunan tersebut. Misalkan P menyatakan plainteks dan C menyatakan cipherteks, maka fungsi enkripsi E memetakan P ke C, E(P) = C Dan fungsi dekripsi D memetakan C ke P D(C)=P Karna proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka D(E(P))=P Kriptografi modern menggunakan kunci, yang dalam hal ini algoritma tidak dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci adalah parameter yang digunakan untuk transformasi enciphering dan dechipering. kunci biasanya berupa string atau deretan bilangan. Jika menggunakan kunci K, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai berikut : EK(P)=C dan DK(C)=P Dan kedua fungsi tersebut memenuhi DK(EK(P))=P
Plaintex
Enkripsi
Kunci
Ciphertex
Dekripsi
Kunci
Gambar 2-1 Enkripsi sederhada dengan kunci
Plaintex
2-5
2.3.2. Sejarah Kriptografi kriptografi memiliki sejarah yang panjang, penulisan rahasia ini dapat dilacak kembali ke 300 tahun SM saat digunakan oleh bansa mesir. Mereka menggunakan hierollyphcs untuk menyembunyikan tulisan dari mereka yang tidak berkepentingan. Sekitar 400SM, kriptografi militer digunakan oleh bangsa Spartan dalam bentuk sepotong papyrus atau perkamen yang dibungkus dengan sebatang kayu. Sistem ini disebut dengan skytale. Sekitar 50 SM, Julius Caesar, Kaisar Roma, menggunakan chipper subtitusi untuk mengirim pesan ke Marcus Tullius Cicero. Pada chipper ini, huruf – huruf alfabet disubtitusikan dengan huruf – huruf yang lain pada alfabet yang sama, karena hanya satu alfabet yang digunakan, chipper ini merupakan subtitusi monoalfabetik. Chipper semacam ini mencangkup penggeseran alfabet dengan 3 huruf dan mensubtitusikan huruf tersebut. Subtitusi ini kadang dikenal dengan C3 (untuk Caesar menggeser 3 tempat).
2.3.3. Tujuan Kriptografi Tujuan dari kriptografi yang juga merupakan aspek keamanan informasi adalah sebagai berikut :
1. Kerahasiaan (confidentiality) Adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak – pihak yang tidak berkepentingan dan tidak berhak. Didalam kriptografi, layanan ini direalisasikan dengan menyandikan pesan menjadi ciphertext
2. Integritas data (data integrity) Adalah layanan yang menjamin bahwa pesan masih asli datau belum pernah dimanipulasi selama pengiriman. Dengan kata lain . aspek kemanan inni dapat diungkapkan sebagai pertanyaan : “Apakah pesan
2-6
yang diterima masih asli atau tidak mengalami perubahan?”. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tak berhak, antara lain penyisipan , penghapusan, dan pensubtitusian data lain ke dalam pesan yang sebenarnya . 3. Otentikasi (authentication) Adalah
layanan
yang
berhubungan
denganidentifikasi,
baik
mengidentifikasi kebenaran pihak – pihak yang berkomunikasi (user authentication dan entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authentication). Pihak yang saling berkomunikasi harus dapat mengontetifikasi satu sama lain sehingga dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran komunikasi juga harus diontetikasi asalnya. Dengan kata lain, aspek keamanan ini dapat diungkapkan sebagai pertanyaan : “ Apakah pesan yang diterima benar – benar berasal dari pengirim yang benar?”.
4. Nirpenyangkal (non-repudiation) Adalah layanan untuk mencegah entitas yang berkomunikasi melakukan
penyangkalan,
yaitu
pengirim
pesan
menyangkal
melakukan pengiriman atau menerima pesan menyangkal telah menerima pesan.
2.3.4. Algoritma Simetri Algoritma ini juga sering disebut dengan algoritma klasik, karena memakai kunci yang sama untuk kegiatan enkripsi dan dekripsi. Mengirim pesan
dengan
menggunakan
algoritma
ini,
penerima
pesan
harus
diberitahukan kunci dari pesan tersebut agar bisa mendekripsi pesan yang
2-7
dikirim. Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain, maka orang tersebut bisa melakukan enkripsi dan dekripsi terhadap pesan tersebut Secara umum, cipher yang termasuk ke dalam kriptografi simetri beroprasi dalam mode blok (block cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan terhadap satu blok data yang berukuran tertentu, atau beroprasi dalam mode aliran (stream cipher) , yaitu setiap kali enkripsi dan dekripsi dilakukan pada 1 bit atau 1 byte data, aplikasi kriptografi simetri yang utama adalah melindungi kerahasiaan data yang dikirim melalui saluran tidak aman dan melindungi kerahasiaan data yang disimpan pada media yang tidak aman. Kelemahan dari sistem ini adalah baik pengirim maupun penerima pesan harus memiliki kunci yang sama, sehingga pengirim pesan harus mencari cara yang aman untuk memberitahukan kunci kepada penerima pesan Namun dibalik kelemahan tersebut, kriptografi simetri memiliki kelebihan juga, keuntungan menggunakan kriptografi simetri ini adalah kecepatan operasinya yang sangat baik. Disbandingkan dengan kriptografi tak simetri, kriptografi simetri memiliki kecepatan operasi yang jauh lebih cepat. Kelebihan kunci simetri : 1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi dan dekripsi membutuhkan waktu yang singkat 2. Ukuran kunci yang relative pendek. Algoritma kriptografi simetri dapat digunakan untuk membangkitkan bilangan acak 3. Algoritma kriptografi simetri dapat disusun untuk menghasilkan cipher yang lebih kuat 4. Otentifikasi pengirim pesan langsung diketahui dari cipherteks yang diterima, karna kunci hanya diketahui oleh pengirim dan penerima pesan saja. Kelemahah kriptografi kunci simetri :
2-8
1. Kunci simetri harus dikirim melalui satu saluran yang aman. 2 entitas yang berkomunikasi harus menjaga kerahsaiaan kunci ini. 2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi
2.3.5. Algoritma Tak Simetris Algoritma tak simetrik sering juga disebut dengan algoritma kunci public, dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsinya berbeda. Pada algoritma tak simetri kunci terbagi dua bagian :
1. Kunci umum (public key) adalah kunci yang boleh semua orang tahu (dipublikasikan) 2. Kunci pribadi (private key) adalah kunci yang dirahasiakan (hanya boleh diketahui oleh satu orang) Kunci – kunci tersebut saling berhubungan dengan yang lainnya. Dengan kunci public orang dapat mengenkripsi pesan tapi tidak bisa mendekripsinya, hanya orang yang memiliki kunci pribadi yang dapat melakukan dekripsi pada pesan tersebut. Algoritma tak simetri bisa melakukan pengiriman pesan lebih aman dari pada algoritma simetris. Kelebihan Kriptografi kunci tak simetri : 1. Hanya kunci pribadi yang perlu dijaga kerahasiaanya oleh setiap entitas yang berkomunikasi (tetapi, otentikasi kunci public harus tetap terjamin). Tidak ada kebutuhan mengirim kunci pribadi sebagaimana pada sistem simetri 2. Pasangan kunci public dan kunci pribadi tidak perlu diubah, bahkan dalam periode waktu yang panjang. 3. Dapat digunakan untuk mengamankan pengiriman kunci simetri. 4. Beberapa algoritma kunci public dapat digunakan untuk member tanda tangan digital pada pesan Kelemahan kriptografi kunci tak simetri :
2-9
1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar 2. Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat kali ukuran plainteks) 3. Ukuran kunci relative besar daripada ukuran kunci simetri 4. Jika kunci public diketahui secara luas dan dapat digunakan setiap orang maka cipherteks tidak memberikan informasi mengenai otentikasi pengirim 5. Tidak ada algoritma kunci public yang terbukti aman Aplikasi kriptografi kunci public dapat dibagi menjadi 3 kategori, yaitu : 1. Kerahasiaan data. Seperti pada kriptografi kunci simetri, kriptografi
kunci public dapat digunakan
untuk
menjaga
kerahasiaan data melalui mekanisme enkripsi dan dekripsi, contoh algoritma untuk aplikasi ini adalah RSA, Knapsack, Rabin, ElGamal,Elliptic, Curve Crytography (ECC) 2. Tanda Tangan Digital. Tanda tangan digital (digital signature) dengan menggunakan algoritma kriptografi kunci public dapat digunakan untuk membuktikan otentikasi pesan maupun otentikasi pengirim. Contoh algoritma untuk aplikasi ini adalah RSA, DSA, dan ElGamal. 3. Pertukaran kunci (keyexchange) Algoritma kriptografi kunci public dapat digunakan untuk pengiriman kunci simetri (session keys). Contoh algoritma adalah RSA, dan Diffie-Hellman
2.3.6. Fungsi Hash (hash function) Fungsi hash sering disebut fungsi hash satu arah (one way function),message digest, fingerprint, Fungsi kompresi dan Message
2-10
authentication Code (MAC), hal ini merubah suatu fungsi matematika yang mengambil input panjang variabel dan mengubahnya kedalam urutan biner dengan panjang yang tetap. Fungsi hash biasanya untuk keperluan membuat sidik jari dari suatu pesan. Sidik jari pada pesan merupakan suatu tanda yang menandakan pesan tersebut benar – benar dari orang yang diinginkan.
2.4. Teknik Dasar Kriptografi Metode ini bekerja dengan 1 karakter yang lain. Langkah pertama adalah membuat suatu label subtitusi. Tidak ada aturan khusus dalam membuat table subtitusi, dapat dibuat sesuai keinginan, dengan catatan bahwa penerima pesan memiliki table yang sama untuk keperluan dekripsi. Semakin acak tabel subtitusi maka semakin sulit pemecahan cipherteks. Salah satu contoh teknik ini adalah Caesar cipher. A
B C
D
E
F
G
H
I
E
F
G H
I
J
K
L
R S
J
K
L
M N
O
P
Q
M N
O
P
Q
S
T
U
T
U
V
W
X
Y
Z
V W X
Y
Z
[
\
]
“
R
Gambar 2.2 Sistemasi Enkripsi Caesar Cipher Plainteks
: METODE SUBSTITUSI
Cipherteks
: QIXSHI WYFWXMXYWM
2.4.1. Teknik Blok Sistem enkripsi kadang membagi plainteks menjadi blok – blok yang terdiri atas beberapa karakter yang kemudian dienkripsikan secara independen, contoh plainteks yang dienkripsikan dengan menggunakan teknik blok adalah:
2-11
E
P
K
I
Blok 1
N
S
R
Blok 2
K
I
I
Blok 3
R
D
P
Blok 4
I
E
S
Blok 5
Gambar 2.3 Enkripsi Block Cipher Dengan menggunakan teknik blok dipilih jumlah jalur dan kolom untuk penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan teknik ini. Plainteks dituliskan secara vertical ke bawah, berurutan pada lajur, dan dilajutkan pada kolom berikutnya sampai seluruhnya tertulis. Cipherteksnya adalah hasil pembacaan plainteks secara horizontal berurutan sesuai dengan bloknya. Jadi cipherteks yang dihasilkan dengan blok ini adalah “EPEKINSR KII RDP IES”. Plainteks dapat juga ditulis secara horizontal dan cipherteksnya adalah hasil pembacaan secara vertical.
2.4.2. Teknik Permutasi atau Teknik Tranposisi Teknik ini memindahkan atau merotasikan karakter dengan aturan tertentu. Prinsipnya adalah berlawanan dengan teknik subtitusi. Dalam teknik subtitusi, karakter berada posisi yang tetap tetapi identitasnya yang diacak. Pada teknik permutasi, identitas karakternya tetap, namun posisinya yang diacak sebelum dilakukan permutasi, umumnya plainteks dibagi menjadi blok – blok dengan panjang yang sama. Contoh : Plainteks
1
2
3
4
Cipherteks
1
2
3
4
Gambar 2.4 Teknik Permutasi dan Transposisi
2-12
2.5. Teknik – teknik Kriptanalis Terdapat beberapa teknik dalam melakukan kriptanalis, tergantung kepada akses yang dimiliki oleh kriptanalis, apakah melalui cipherteks, plainteks, ataupun aspek lain dari sistem kriptografi. Berikut adalah beberapa tipe penyerang umum dipakai untuk memecahkan sandi :
2.5.1. Know-plainteks Analysis Dengan prosedur ini, kriptanalis mengetahui sebagian isi teks dari cipherteks yang berhasil didapatkan, menggunakan informasi yang ada ini, kriptanalis berusaha untuk mencari kunci yang digunakan untuk menghasilkan cipherteks. Pesan-pesan yang memiliki format terstruktur memberikan peluang kepada kriptanalis untuk menebak plainteks dan cipherteks yang sesuai. Contoh dari pesan-pesan terstruktur ini adalah email dengan kolom from,to,subject, kemudian salam penutup dan pembuka pada surat seperti “dengan hormat”, salam dan lainnya. Linear Cryptanalysis adalah salah satu algoritma yang termasuk ke dalam serangan know-plaintext. Linear Cryptanalysis diperkenalkan oleh Mitsuru Matsui pada tahun 1993. Pada algoritma ini penyerang akan mempelajari fungsi linear yang merepresentasikan hubungan antara cipherteks dan plainteks untuk mendapatkan kunci. Algoritma berbasis XOR, termasuk ke dalam algoritma enkripsi atau dekripsi yang tidak aman karena dapat dipecahkan menggunakan linear cryptanaysis.
2.5.2. Chosen-Plaintext Analysis Kriptanalis telah dapat menghasilkan plainteks dari cipherteks yang ada, namun kuncinya sendiri belum ditemukan. Pada serangan jenis ini kriptanalis dapat memilih plainteks tertentu untuk dienkripsikan, yaitu plainteks yang lebih mengarahkan penemuan kunci.
2-13
Kriptanalis
berusaha
untuk
menemukan
kunci
pembangunan
cipherteks dengan membandingkan keseluruhan cipherteks dengan plainteks yang ada. Teknik enkripsi RSA (rivest shanir Adleman) telah terbukti dapat dipecahkan menggunakan teknik analisis ini. Differential Analysis adalah sebuah teknik yang dikembangkan oleh Eli Biham dan Adi Shamir. Teknik ini memberikan suatu cara untuk menemukan beberapa bit kunci dari plaint ks dan cipherteks yang tersedia, dengan begitu jumlah kemungkinan kunci yang akan dicoba pada exhaustive key search atau brute force attack dapat berkurang drastic, mengurangi waktu kalkulasi. Differential Analysis secara garis besar membahas pola lengkap dari bit-bit mana saja. Yang berubah dan tidak berubah pada proses pengubahan input menjadi output.
2.5.3. Ciphertest-Only Analysis Pada teknik ini, kriptanalis hanya berbekal cipherteks saja, tanpa adanya pengetahuan mengenai plainteks, teknik ini membutuhkan akurasi yang tinggi dalam melakukan penaksiran mengenai bagaimana sebuah pesan dapat disandikan. Teknik ini dapat bekerja lebih baik dengan dukungan adanya pengetahuan tambahan mengenai teks. Apabila plainteks ditulis dalam bahasa inggris, maka kriptanalis dapat menghitung frekuensi huruf dari cipherteks kemudian membandingkannya dengan frekuensi rata-rata huruf pada teks berbahasa inggris. Namun cara perhitungan frekuensi huruf seperti ini hanya bekerja untuk plainteks yang didekripsi menggunakan teknik subtitusi satu ke satu. Algoritma kriptografi modern memiliki daya tahan yang lebih tinggi terhadap jenis serangan seperti ini.
2-14
2.5.4. Men-In-The Middle Attack Penyerangan yang dalam hal ini adalah kriptanalis, masuk ke dalam saluran komunikasi antara kedua belah pihak yang akan saling bertukar kunci mereka. Penyerang mendapatkan dirinya sedemikian sehingga kedua pihak tadi merasa bahwa mereka yang saling bertukar kunci, namun sebenarnya penyeranglah memberikan kunci-kunci yang nantinya digunakan oleh pihakpihak tadi
Pengirim
Man In the Middle
Penerima
Gambar 2.5 Simulasi Penyerangan Men-In-The Middle Attack
Teknik ini dapat dipatahkan dengan menggunakan kombinasi fungsi hash dan algoritma kunci public. Pengirim dapat memeriksa apakah kunci public yang diterima dengan benar, dengan cara memeriksa sidik jadi (fingerprint). Sidik jari ini adalah suatu fungsi hash dari kunci public tersebut yang diberikan melalui jalur yang berbeda dengan pengiriman kunci public. Sidik jari digunakan karena ukurannya yang lebih kecil dibandingkan dengan kunci public sehingga lebih mudah ditentukan nilai kebenaranya. Cara lain untuk mematahkan serangan tipe ini adalah dengan menyimpan kunci publik dalam satu baris data online yang menjamin kebenaran dari kunci publik. Suatu CA (Certificate Authority) atau server kunci publik dapat memberikan keyakinan pada pengguna, pada saat mereka menyimpan kunci bahwa kunci tersebut bernilai benar.
2.5.5. Timming/Differential Power Analysis Sangat berguna digunakan melawan smartcard, yaitu menghitung perbedaan konsumsi elektrik dalam jangka waktu tertentu ketika microchip
2-15
melakukan pengamanan informasi. Teknik ini dapat digunakan untuk memperoleh informasi mengenai perhitungan pembangkitan kunci yang digunakan dalam algoritma enkripsi dan fungsi-fungsi pengamanan lainnya. Teknik ini dapat dicegah dengan menggunakan random noise ketika melakukan enkripsi, atau mengacak alur fungsi sehingga lebih sulit untuk melacak fluktuasi tenaga listrik yang terpakai. Tipe analisis ini dikembangkan oleh Paul Kocher dari Cryptographi Research. Penyerangan seperti umumnya terlepas dari jenis algoritma kriptografi yang digunakan.
2.5.6. Correlation Saling terkaitnya antara kunci dengan hasil pengenkripsian merupakan sumber utama yang akan digunakan oleh kriptanalis. Pada kasusyang paling mudah, kunci justru secara tidak sengaja terbocorkan oleh sistem kriptografi sendiri. Untuk kasus yang lebih kompleks, dicari keterhubungan antara informasi yang dapat diperoleh mengenai kriptosistem dan informasi mengenai perkiraan kunci. Ide mengenai keterhubungan merupakan ide dasar pada kriptosistem.
2.5.7. Kesalahan Dalam kriptosistem Kesalahan dalam kriptosistem dapat digunakan dalam kriptanalisis dan bahkan dapat membocorkan kunci sendiri. Kesalahan tersebut dapat dimamfaatkan dalam kriptanalisis. Kesalahan disini dapat juga berupa kelemahan dari fungsi matematis yang digunakan oleh algoritma enkripsi dekripsi atau pemilihan kunci lemah. Algoritma RSA merupakan contoh algoritma yang memiliki kesalahan yang dapat diserang.
2-16
2.5.8. Rubben-Hose Cryptanalysis Serangan jenis ini dapat dikatakan sebagai serangan yang paling efektif dan dapat langsung memberikan hasil. Serangan ini berupa serangan langsung kepada pihak pengirim. Didasarkan pada teori manusia yang berada di bawah tekanan akan menjadi lebih lemah. Di pihak lain, computer tidak mengalami stress sehingga tidak akan berpengaruh dengan serangan semacam ini. Pada serangan ini, pihak ketiga akan mengirim surat gelap, mengancam atau bahkan menyiksa pihak pengirim hingga mau memberikan kunci atau bahkan langsung memberikan plainteks yang dimaksud. 1. Tetap tenang dan gunakan steganografi 2. Pindah di luar jangkauan pihak-pihak lawan, misalkan diluar negeri 3. Tingkatkan ketahanan fisik 4. Gunakan multipart key yang membutuhkan lebih dari satu orang untuk melakukan enkripsi dekripsi terhadap informasi 5. Untuk menghindari serangan secara social. Menjauhlah dari orang – orang terdekat dan jangan bina hubungan dengan teman baru 6. Gunakan one-Time pad dimana tidak akan mungkin memecahkan cipherteks menggunakan kunci, karena sifatnya yang terlalu panjang sepanjang plainteks. 2.5.9. Serangan
terhadap
atau
menggunakan
Hardware
dari
Cryptosystem Serangan jenis ini merupakan serangan jenis baru yang diprediksikan semakin sering muncul dengan semakin luasnya penggunaan mobile crypto device. Serangan ini didasarkan kepada perhitungan rinci dari proses enkripsi yang dilakukan oleh suatu perangkat kripto. Dari informasi ini akan diperoleh informasi mengenai perhitungan kunci yang digunakan. Serangan ini bersifat
2-17
independen terhadap algoritma kriptografi yang digunakan oleh mobile crypto device yang bersangkutan.
2.6. Keamanan Rijndael Untuk Rijndael, tipe serangan square attack cukup dikenal sebagai serangan terbaik rijndael. Square attack adalah serangan yang memamfaatkan struktur orientasi byte. Algoritma ini bekerja dengan baik pada square cipher yang bekerja dalam 6 putaran. Apabila rijndael dengan kunci sepanjang 128 bit, maka serangan ini lebih cepat dari pada exhaustive search hingga 6 kali iterasi rijndael. Namun, untuk AES jelas bahwa serangan ini tidak mungkin dipraktekan karna jumlah putaran pada rijndael, mengakibatkan batas keamanan untuk algoritma ini menjadi lebih besar. Pada tahun 2002 melalui proses pengujian yang sifatnya teoritis ditemukan bahwa AES mungkin dapat dijebol atau dipecahkan. Metode attack ini dinamakan XLS attack. Serangan ini pertama kali dipublikasikan oleh Nicolas Courtois dan Josep Pieprzk dalam makalah mereka yang berjudul “Cryptanalysisi of Block Cipher with Overdefined System of Equations”. Teknik ini di klaim dapat memecahkan AES lebih cepat dari cara exhausetive search. XLS attack mengandalkan pada keberhasilan menganalisisi subsistem internal dari cipher untuk menurunkan persamaan kuadrat secara simultan. Kumpulan persamaan ini umumnya sangat besar. Contohnya pada 128 bit AES terdapat 8000 persamaan dengan jumlah variabel 1600. Metode untuk memecahkan
persamaan ini disebut XLS
(eXtended Spare Linearisation). Jika persamaan tersebut dapat dipecahkan , maka kunci dapat diperoleh. Jika pemecahan persamaan tersebut menjadi masalah, maka ditemukan persamaan
yang
bersifat
MQ(Multivariate
quadratic).
Persamaan
MQ
merupakan permasalahan yang bersifat NP-hard (non polimonial). XLS attack
2-18
membutuhkan algoritma yang efisien untuk menyelesaikan MQ. Salah satu teknik untuk menyelesaikan sistem MQ adalah dengan linearisasi, yang mengubah setiap persamaan kuadrat menjadi variabel yang independen yang akan menghasilkan persamaan linear dengan menggunakan algoritma seperti Gaussian elimination. Tahun 2000, Courtois mengajukan untuk MQ yang bernama XL(eXtended Linearisastion). Algoritma ini meningkatkan jumlah persamaan dengan mengalikan dengan monomial derajat tertentu. Algoritma ini akan menghasilkan suatu bentuk struktur yang disebut XLS. Algoritma XLS dibentuk dari algoritma XL dengan memilih monomial secara selektif.
2.7. Algoritma Twofish Twofish merupakan algoritma kriptografi yang beroperasi dalam mode blok cipher berukuran 128 bit dengan ukuran kunci sebesar 256 bit. Perancangan twofish dilakukan dengan memperhatikan kriteria-kriteria yang diajukan National Institute of Standards and Technology (NIST) untuk kompetisi Advanced Encryption Standard (AES), namun algoritma ini tidak terpilih sebagai basis standardisasi . Algoritma twofish merupakan pengembangandari algoritma blowfish. Berikut ini perbedaan algoritma twofish dengan algoritma blowfish secara umum: Tabel 2.1 Tabel Perbandingan Algoritma Twofish Blowfish
Twofish
Tahun perancangan
1993
1997
Algoritma pembanding
DES
AES
Perancang
Bruce Schneir
Panjang blok
64 bit
Panjang kunci
32
128 bit -
448
kelipatan 8 bit
bit, 128, 192, 256 bit
2-19
Manipulasi bit
Ya
Kotak permutasi
Ya
Jaringan Feistel
Ya
Putaran dan Pergiliran kunci
Ya
Transformasi
Pseudo- Tidak
Ya
Kotak MDS
Tidak
Ya
Jumlah putaran
16 putaran
Hadamar
Tujuan dari perancangan twofish yang selaras dengan kriteria NIST untuk AES adalah untuk membuat suatu algoritma kriptografi yang efisien dan portabel, rancangan yang fleksibel yang dapat menerima panjang kunci tambahan sehingga dapat diterapkan pada platform dan aplikasi yang sangat bervariatif serta cocok untuk cipher aliran, fungsi hash, dan MAC, serta rancangan
yang
sederhana
agar
memudahkan
proses
analisis
dan
implementasi algoritma . Algoritma twofish menggunakan struktur sejenis feistel dalam 16 putaran dengan tambahan
teknik whitening terhadap input dan output. Teknik
whitening sendiri adalah teknik melakukan operasi XOR terhdap materi kunci sebelum putaran pertama dan sesudah putaran akhir. Elemen di luar jaringan feistel normal yang terdapat dalam algoritma twofish adalah rotasi 1 bit. Proses rotasi ini dapat dipindahkan ke dalam fungsi F untuk membentuk struktur jaringan feistel yang murni, tetapi hal ini membutuhkan tambahan rotasi kata sebelum langkah outputwhitening. Berikut ini gambar dari struktur algoritma twofish :
2-20
Gambar 2.6 Struktur Algoritma Twofish Langkah-langkah algoritma twofish adalah sebagai berikut : 1. Masukan satu blok plaintext adalah 128 bit. Satu blok tersebut dibagi menjadi 4 buah sub-blok yang masing-masing sepanjang 32 bit (A, B, C, dan D).
2. Masing-masing sub-blok tersebut diputihkan dengan meng-XOR-kan dengan kunci k0, k1, k2, dan k3. Langkah-langkah satu putaran adalah sebagai berikut :
1. 2 buah 32 bit yang kiri (A dan B) merupakan input fungsi g (yang merupakan bagian dari fungsi f), yang salah salah satunya (B) digeser ke kiri sejauh 8 bit dahulu.
2-21
2. Fungsi g memiliki 4 kotak substitusi yang dibandingkan oleh kunci. 3. Keluaran fungsi kotak substitusi dilakukan percampuran linear menggunakan kotak Maximum Dintance Separable(MDS). 4. Keluaran fungsi g dimasukan ke fungsi tranformasi pseudo-Hadamard, kemudian ditambahkan dengan 2 buah 32 bit dari kunci. 5. Dua buah 32 bit hasil kemudian di-XOR-kan dengan C dan D. Hasil xor dengan C digeser ke kanan sejauh 1 bit. Dan untuk D sebelum di-XORkan digeser ke kiri sejauh 1 bit. 6. 2 buah 32 bit kiri dan kanan dipertukarkan (A dan B dipertukarkan dengan C dan D). Langkah-langkah diatas dilakukan hingga 16 kali putaran, kemudian langkah selanjutnya yaitu : 7.
Hasil keluaran setelah diputar 16 kali, ditukar lagi (A dan B dipertukarkan dengan C dan D).
8.
Hasil dari pertukaran tersebut di-XOR-kan dengan empat buah 32 bit kunci menghasilkan ciphertext.
2.8. Teknik pembangunan Algoritma Twofish 2.8.1. Fungsi F Fungsi F adalah permutasi yang tergantung pada kunci pada nilai 64 bit. Memerlukan 3 argumen, 2 buah 32 bit R0 dan R1. Nomor R digunakan untuk memilih subkunci yang benar. R0 dilewati melalui fungsi G yang menghasilkan T0. R1 dirotasi ke kiri 8 bit dan kemudian dilakukan fungsi dan menghasilkan T1. Hasil T0 dan T1 dikombinasikan menggunakan PHT dan 2 kata dari kunci ditambahkan. T0 = g(R0) T1 = g(ROL (R1,8)) F0 = (T0 + T1 + K2,+8) mod 232 F1 = (T0 + 2T1 + K2,+9) mod 232
2-22
F0 dan F1 adalah hasil dari F, yang masing-masing sepanjang 32 bit. Hasil keluaran ini nantinya akan dipertuklarkan dan dimasukan kembali ke putaran selanjutnya.
2.8.2. Fungsi G Fungsi G meruapakan jantung dari keseluruhan algoritma twofish. 32 bit masukan X dari fungsi f dipecah menjadi 4 buah yang masing-masing sepanjang 8 bit. Setiap 8 bit kemudian diproses dengan kotak S yang bersesuaian. Setiap kotak S bersifat bijektif, yaitu menerima 8 bit dan mengeluarkan 8 bit pula. 4 buah 8 bit hasil keluaran kemudian dikalikan dengan matriks maksimum distance separable (MDS) 4x4. Hasil pengalian kemudian diartikan sebagai 32 bit, yang merupakan keluaran dari fungsi g, yang kemudian akan dikembalikan kembali ke fungsi f. [3] Matriks MDS yang setiap elemennya ditampilkan sebagai heksadesimal adalah sebagai berikut : |01 EF 5B 5B| MDS =
|5B EF EF 01| |EF 5B 01 EF| |EF 01 EF 5B|
2.8.3. Blok pembangunan Twofish Secara garis besar algoritma twofish dibangun dari beberapa algoritma utama. Algoritma-algoritma tersebut diambil dari prinsip pembangunan algoritma cipher block. Ada 6 prinsip yang digunakan, diantaranya :
1. Jaringan Feistel Jaringa Feistel adalah metode umum untuk mentrasformasikan fungsi apapun bisa disebut fungsi F ke dalam permutasi. Beberapa algoritma kriptografi lain yang menggunakan jaringan Feistel misalnya LOKI, GOST, FEAL, Blowfish, KhufuKhafre, dan RC-5.
2-23
Model jaringan Feistel bersifat reversibel, untuk proses enkripsi dan dekripsi, sehingga kita tidak perlu membuat algoritma baru untuk mendekripsikan ciphertext menjadi plaintext.
2. Kotak-S (S-boxes) Kotak-S adalah matriks yang berisi substitusi non-linear yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain dan digunakan di banyak cipher block. Kotak-S memiliki ukuran input dan ukuran output yang bervariasi. Ada empat pendekatan yang digunakan dalam mengisi Kotak-S dipilih secara acak, dipilih secara acak lalu diuji, dibuat oleh orang, dihitung secara matematis. Twofish menggunakan empat buah 8x8 bit kotak-S yang berbeda, bijektif,
dan
bergantung pada
kunci.
Kotak-S
ini
dibuat
menggunakan 8x8 bit permutasi dan material kunci.
3. MDS Matrices Kode MDS (Maksimum Distance Separable) pada sebuah field adalah pemetaan linear dari x elemen field ke y elemen field, dan menghasilkan vektor komposit x+y elemen, dengan ketentuan bahwa jumlah minimum dari elemen bukan nol pada setiap vektor bukan nol paling sedikit y+1. Dengan kata lain, jumlah elemen yang berbeda diantara dua vektor berbeda yang dihasilkan oleh pemetaan MDS paling sedikit y+1. Dapat dibuktikan dengan mudah bahwa tidak ada pemetaan yang dapat memiliki jarak pisah yang lebih besar diantara dua vektor yang berbeda, maka disebut jarak pisah maksimum (maksimum distance separable). Pemetaan MDS dapat direpresentasikandengan sebuah MDS matriks yang terdiri dari x × y elemen.
2-24
Kode perbaikan-kesalahan Reed-Solomon (RS) adalah MDS kondisi yang diperlukan untuk sebuah x × y matriks menjadi MDS adalah semua kemungkinan submatriks kotak, yang diperoleh dengan membuang kolom atau baris, adalah singular.
4. Transformasi Pseudo-Hadamard Trasformasi Pseudo-Hadamard (PHT) adalah operasi pencampuran sederhana yang berjalan secara cepat dalam perangkat lunak. 32 bit PHT dengan dua masukan didefinisikan sebagai berikut : a’ = a+b mod 232 b’ = a+2b mod 232 SAFER menggunakan 8 bit PHT untuk difusinya. Twofish menggunakan 32 bit PHT untuk mengubah keluaran dari fungsi gnya.
PHT
ini
dapat
dieksekusi
dalam
dua
opcodes
di
mikroprosessor modern seperti keluaran pentium.
5. Whitening Whitening adalah teknik meng-XOR-kan material kunci sebelum putaran pertama dan setelah putaran terakhir. Whitening menambah tingkat kesulitan serangan pencarian kunci terhadap ciphertext, dengan menyembunyikan masukan spesifikasi terhadap putaran pertama dan putaran terakhir dari fungsi F. Twofish meng-XOR-kan 128 bit sub kunci sebelum putaran Feistel yang pertama, dan 128 bit lagi setelah putaran Feistel terakhir. Subkunci ini diperhitungkan dengan cara yang sama seperti sub-kunci putaran, tetapi tidak digunakan di tempat lain dalam cipher.
2-25
6. Penjadwalan kunci Penjadwalan kunci adalah proses pengubaha bit-bit kunci menjadi sub-kunci tiap putaran yang dapat digunakan oleh chipher. Algoritma twofish memerlukaan banyak material kunci dalam memiliki penjadwalan kunci menggunakan primitif yang sama seperti fungsi putaran.