BAB 2
TINJAUAN TEORITIS
2.1 Definisi Kriptografi
Ditinjau dari terminologinya, kata kriptografi berasal dari bahasa Yunani, yaitu kryptos yang berarti menyembunyikan, dan graphein yang berarti menulis, sehingga dapat didefinisikan bahwa kriptografi adalah ilmu yang mengubah informasi dari bentuk normal yang dapat dipahami menjadi bentuk yang tidak dapat dipahami. Kriptografi merupakan bagian dari suatu cabang ilmu matematika yang disebut Cryptology.
Kriptografi merupakan seni dan ilmu untuk menjaga keamanan data dengan metode tertentu, dan pelakunya disebut cryptographer. Kriptografi disebut sebagai ilmu karena didalamnya terdapat metode (rumusan) yang digunakan, dan dikatakan sebagai seni karena karena dalam membuat suatu teknik kriptografi itu sendiri merupakan ciri tersendiri dari si pembuat dan memerlukan teknik khusus dalam mendisainnya. (Munir, 2006). Sedangkan cryptanalysis adalah suatu ilmu dan seni memecahkan ciphertext menjadi plaintext tanpa melalui cara yang seharusnya dan orang yang melakukannya disebut cryptanalyst.
2.2 Sejarah Kriptografi
Kriptografi memiliki sejarah yang panjang dan mengagumkan. Penulisan rahasia ini dapat dilacak kembali ke 3000 tahun SM saat digunakan oleh bangsa Mesir. Mereka menggunakan hieroglyphcs untuk menyembunyikan tulisan dari pihak yang tidak
Universitas Sumatera Utara
berkepentingan terhadap tulisan tersebut. Hieroglyphcs diturunkan dari bahasa Yunani hieroglyphica yang berarti ukiran rahasia. Hieroglyphcs berevolusi menjadi hieratic, yaitu stylized script yang lebih mudah untuk digunakan. Sekitar tahun 400 SM, yaitu pada zaman Yunani kuno. Kriptografi militer digunakan oleh bangsa Spartan dalam bentuk sepotong papirus atau perkapen dibungkus dengan batang kayu, sistem ini disebut Scytale.
Sekitar 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher substitusi untuk mengirim pesan ke Marcus Tullius Cicero. Pada cipher ini, huruf-huruf alfabet disubstitusi dengan huruf-huruf yang lain pada alfabet yang sama. Karena hanya satu alfabet yang digunakan, cipher ini merupakan substitusi monoalfabetik. Cipher semacam ini mencakup penggeseran alfabet dengan 3 huruf dan mensubstitusikan huruf tersebut. Substitusi ini kadang dikenal dengan C3 (untuk Caesar menggeser 3 tempat).
Disk mempunyai peranan penting dalam kriptografi sekitar 547 tahun yang lalu. Di Italia sekitar tahun 1460, Leon Battista Alberti mengembangkan disk cipher untuk enkripsi. Sistemnya terdiri dari dua disk konsentris. Setiap disk memiliki alfabet di sekelilingnya, dan dengan memutar satu disk berhubungan dengan yang lainnya, huruf pada satu alfabet dapat ditransformasi ke huruf pada alfabet yang lain.
Bangsa Arab menemukan cryptanalysis karena kemahirannya dalam bidang matematika, statistik, dan linguistik. Pada tahun 815, Caliph al-Mamun mendirikan House of Wisdom di Baghdad yang merupakan titik pusat dari usaha-usaha translasi.
Pada 1790, Thomas Jefferson mengembangkan alat enkripsi dengan menggunakan tumpukan yang terdiri dari 26 disk yang dapat diputar secara individual. Pesan dirakit dengan memutar setiap disk ke huruf yang tepat dibawah batang berjajar yang menjalankan panjang tumpukan disk. Kemudian, batang berjajar diputar dengan sudut tertentu, misalkan sudut A, dan huruf-huruf dibawah batang adalah pesan yang terenkripsi. Penerima akan menjajarkan karakter-karakter cipher
Universitas Sumatera Utara
dibawah batang berjajar, memutar batang kembali dengan sudut A dan membaca pesan plaintext.
Sistem disk digunakan secara luas selama perang sipil US. Federal Signal Officer mendapatkan hak paten pada sistem disk mirip dengan yang ditemukan oleh Leon Battista Alberti di Italia, dan dia menggunakannya untuk mengkode dan mendekodekan sinyal-sinyal bendera diantara unit-unit.
Pada tahun 1920-an, Herbert O. Yardley bertugas pada organisasi rahasia US MI-8 yang dikenal sebagai “Black Chamber”. MI-8 menjebol kode-kode sejumlah negara. Selama konferensi Angkatan Laut Washington tahun 1921-1922, US membatasi negosiasi dengan Jepang karena MI-8 telah memberikan rencana negosiasi Jepang yang telah disadap kepada sekretaris negara US. Departemen negara menutup MI-8 pada tahun 1929 sehingga Yardley merasa kecewa. Sebagai wujud kekecewaanya, Yardley menerbitkan buku “The American Black Chamber”, yang menggambarkan kepada dunia rahasia dari MI-8. Sebagai konsekuensinya, pihak Jepang menginstal kode-kode baru. Karena kepeloporannya dalam bidang ini, Yardley dikenal sebagai “Bapak Kriptografi Amerika”.
Mengikuti peninggalan Yardley, William F. Friedman melanjutkan usaha cryptanalysis untuk tentara US. Tim Friedman berhasil menjebol cipher diplomatik Jepang yang baru. Rekan Yardley di Angkatan Laut US adalah Laurence Stafford. Stafford mengepalai tim yang memecahkan kode angkatan laut Purple Machine Jepang selama Perang Dunia II. Kelompok pemecah kode ini bekerja di ruang bawah tanah yang gelap pada pusat distrik Naval di Pearl Harbour. Komandan Joseph J.Rochefort memimpin kelompok ini pada musim semi 1942 saat cryptanalyst menyadap dan mendekodekan pesan terkode Jepang. Pesan ini mengatakan akan ada serangan Jepang pada sebuah lokasi yang dikenal dengan AF. Rochefort yakin bahwa AF adalah pulau Midway. Midway adalah basis US kunci yang memproyeksikan kekuatan US di pasifik tengah. Rochefort tidak dapat meyakinkan atasannya bahwa AF adalah pulau Midway. Sebagai tipu daya, Rochefort meminta personel Midway untuk mengirim pesan bahwa Midway memiliki masalah air.
Universitas Sumatera Utara
Pesannya dikirim dengan kode yang jelas dan lemah yang diyakini akan disadap dan dipecahkan oleh Jepang. Kemudian pada 22 Mei, agen rahasia Angkatan Laut Jepang mengirim pesan yang dibaca oleh US bahwa AF mempunyai masalah air. Sebagai hasil dari usaha jenius dalam memecahkan kode ini, laksamana Chester W. Nimitz mengotorisasi strategi untuk mengirimkan armada US untuk mengejutkan armada Jepang di Midway. Usaha yang hebat ini berdampak pada gema kemenangan US yang merupakan titik balik di perang Pasifik.
Militer Jerman menggunakan mesin cipher substitusi polialfabetik disebut Enigma sebagai sistem pengkodean utama selama Perang Dunia II. Enigma menggunakan rotor mekanis untuk pengkodean dan pendekodean. Seorang Belanda, Hugo Koch mengembangkan mesin ini pada 1919, dan diproduksi untuk pasar komersial pada 1923 oleh Arthur Scherbius. Scherbius mendapatkan hak paten pada mesin Enigma untuk perusahaan Berlin Chiffriermasschinen Aktiengesellschaft. Pakar cryptanalysis Polandia, Marian Rejewski, bekerja bersama Perancis dari 1928 sampai 1938, berhasil memecahkan pengkabelan sistem 3 rotor yang digunakan Jerman saat itu dan menciptakan berkas kartu yang dapat mengantisipasi 6 kali 17.576 kemungkinan posisi rotor. Jerman mengubah indikator sistem dan jumlah rotor menjadi 6 pada 1938, sehingga meningkatkan kesulitan untuk memecahkan cipher Enigma. Dalam kerjanya pada 1938, Polandia dan Perancis mengkonstruksi mesin prototipe yang disebut “The Bombe” untuk memecahkan cipher Enigma. Namanya diturunkan dari bunyi detikan yang dihasilkan oleh mesin.
Usaha memecahkan cipher Enigma diambil alih oleh Inggris di Bletchley Park Inggris dan dipimpin oleh banyak ilmuwan terkemuka termasuk Alan Turing. Prototipe Bombe Turing muncul pada 1940, dan Bombe berkecepatan tinggi dikembangkan oleh Inggris dan Amerika pada 1943.
Perkembangan komputer dan sistem komunikasi pada tahun 1960-an berdampak pada permintaan dari sektor-sektor privat sebagai sarana untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamanan. Dimulai dari usaha Feistel pada IBM di awal tahun 1970-an dan
Universitas Sumatera Utara
mencapai puncaknya pada 1977 dengan pengangkatan “Data Encryption Standard” (DES) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah.
Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Diffie dan Hellman mempublikasikan “New Directions in Cryptography”. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru dan jenius untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskrit. Meskipun penulis tidak memiliki realisasi praktis pada ide enkripsi kunci publik saat itu, idenya sangat jelas dan menumbuhkan ketertarikan yang luas pada komunitas kriptografi.
Induk dari keilmuan dari kriptografi sebenarnya adalah matematika, khususnya teori aljabar yang mendasar ilmu bilangan. Oleh karena itu kriptografi semakin berkembang ketika komputer ditemukan. Sebab dengan penemuan komputer memungkinkan dilakukannya perhitungan yang rumit dan komplek dalam waktu yang relatif sangat singkat, suatu hal yang sebelumnya tidak dapat dilakukan. Dari hal tersebut lahirlah banyak teori dan algoritma penyandian data yang semakin kompleks dan sulit dipecahkan.
Dewasa ini bidang ilmu kriptografi memiliki kemungkinan aplikasi yang sangat luas, mulai dari bidang militer, telekomunikasi, jaringan komputer, keuangan dan perbakan, pendidikan dan singkatnya dimana suatu kerahasiaan data amat diperlukan, disitulah kriptografi memegang peranan penting. Produk-produk yang menggunakan kriptografi sebagai dasarnya-pun cukup beragam, mulai dari kartu ATM, E-Commerce, secure e-mail dan lain-lain. 2.3 Tujuan Kriptografi
Dalam teknologi informasi, telah dan sedang dikembangkan cara untuk menangkal berbagai bentuk serangan semacam penyadapan dan pengubahan data yang dikirimkan. Salah satu cara yang ditempuh mengatasi masalah ini ialah dengan
Universitas Sumatera Utara
menggunakan kriptografi yang menggunakan transformasi data sehingga data yang dihasilkan tidak dapat dimengerti oleh pihak yang tidak berhak mengakses. Transformasi ini memberikan solusi pada dua macam masalah keamanan data, yaitu masalah privasi (privacy) dan keotentikan (authenticatioan). Privasi mengandung arti bahwa data yang dikirimkan hanya dapat dimengerti informasinya oleh penerima yang sah atau berhak. Sedangkan keotentikan mencegah pihak ketiga untuk mengirimkan data yang salah atau mengubah data yang dikirimkan .
Adapun tujuan sistem kriptografi adalah sebagai berikut :
1.
Convidentiality Convidentiality merupakan tujuan sistem kriptografi dalam memberikan kerahasiaan pesan dan menyimpan data dengan menyembunyikan informasi lewat teknik-teknik enkripsi.
2.
Data Integrity Data integrity merupakan tujuan sistem kriptografi dalam memberikan jaminan untuk tiap bagian bahwa pesan tidak akan mengalami perubahan dari saat data dibuat/dikirim sampai dengan saat data tersebut dibuka. Penerima dapat memeriksa apakah pesan telah dimodifikasi di tengah jalan atau tidak. Seorang penyusup seharusnya tidak dapat memasukkan tambahan ke dalam pesan, mengurangi atau mengubah pesan selama data berada dalam perjalanan. Integritas data merupakan layanan yang bertujuan untuk mencegah terjadinya pengubahan informasi oleh pihak-pihak yang tidak berwenang.
3.
Non-repudiation Non-repudiation merupakan tujuan sistem kriptografi dalam memberikan cara untuk membuktikan bahwa suatu dokumen datang dari seseorang apabila ia mencoba menyangkal memiliki dokumen tersebut. Nonrepudiation adalah layanan yang berfungsi untuk mencegah terjadinya penyangkalan terhadap suatu aksi yang dilakukan oleh pelaku sistem
Universitas Sumatera Utara
informasi. Oleh karenanya, pengirim tidak dapat menyangkal bahwa dialah pengirim pesan yang sesungguhnya.
4.
Authentication Authentication
merupakan
tujuan
sistem
kriptografi
dalam
mengidentifikasikan keaslian suatu pesan dan memberikan jaminan keotentikannya, dan menguji identitas seseorang apabila ia akan memasuki sebuah sistem. Penerima pesan dapat memastikan keaslian pengirimnya. Penyerang tidak dapat berpura-pura sebagai orang lain. Otentikasi memberikan dua layanan. Pertama, mengidentifikasi keaslian suatu pesan dan memberikan jaminan keautentikannya baik keaslian isi datanya, maupun waktu pengiriman. Kedua, menguji identitas seseorang apabila ia akan memasuki sebuah sistem.
5.
Authority Informasi yang berada pada sistem jaringan seharusnya hanya dapat dimodifikasi oleh pihak yang berwenang. Modifikasi yang tidak diinginkan, dapat berupa penulisan tambahan pesan, pengubahan isi, penghapusan, dan pembuatan pesan baru.
2.4 Algoritma Kriptografi
Ditinjau dari asal-usulnya, kata “algoritma” mempunyai sejarah yang menarik. Kata ini muncul di dalam kamus Webster sampai akhir tahun 1957. Kata algorism mempunyai arti proses perhitungan dalam bahasa Arab. Algoritma berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad Ibnu Musa alKhuwarizmi, dimana al- Khuwarizmi dibaca oleh orang sebagai algorism. Kata algorism lambat laun berubah menjadi algorithm.
Ariyus (2008, hal: 43) menyatakan bahwa:
Universitas Sumatera Utara
Definisi terminologi algoritma adalah urutan langkah-langkah logis untuk menyelesaikan masalah yang disusun secara sistematis. Algoritma kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang-orang yang tidak berhak terhadap pesan tersebut. Algoritma kriptografi selalu terdiri dari dua bagian yaitu fungsi enkripsi dan dekripsi. Bila keamanan algoritma tergantung pada kerahasiaan algoritma bekerja, maka algoritma tersebut dikatakan algoritma terbatas (terbatas kemampuannya). Algoritma terbatas mempunyai sejarah yang menarik, namun sayangnya tidak cukup baik untuk digunakan pada masa sekarang ini. Sejumlah besar pengguna (yang tidak dalam satu grup) tidak dapat menggunakannya bersama-sama, sehingga setiap kali seorang pengguna meninggalkan grupnya, pemakai lain dalam grup tersebut harus mengganti algoritma agar algoritma yang mereka gunakan tidak diketahui kelompok lain. Dan bila salah satu anggota tanpa sengaja menampakkan algoritma keluar grupnya, grup tersebut harus mengganti algoritmanya.
Bahkan lebih buruk lagi, algoritma terbatas tidak mengijinkan kontrol kualitas atau standardisasi. Setiap grup pemakai harus mempunyai algoritma tersendiri. Mereka tidak dapat menggunakan produk perusahaan lain karena kalau demikian tentu orang lain dapat juga membeli produk tersebut dan kemudian memecahkan algoritmanya sehingga data yang dienkrip dengan algoritma tersebut tidak aman lagi. Anggota grup tersebut harus menulis sendiri algoritma dan implementasinya. Sehingga jika tidak ada satu anggota pun yang ahli kriptografi, mereka tidak akan tahu apakah algoritmanya aman atau tidak. Meskipun mempunyai kelemahan yang besar, algoritma terbatas sangat terkenal untuk aplikasi keamanan tingkat rendah.
Kriptografi modern menyelesaikan masalah ini dengan hanya merahasiakan kunci (key) saja tanpa harus menyembunyikan algoritmanya sendiri. Kunci (K) dapat juga disebut sebagai password. Keamanan enkripsi hanya tergantung pada kunci, dan tidak tergantung apakah algoritmanya dilihat orang lain atau tidak. Rentang kemungkinan nilai kunci ini disebut keyspace.
Universitas Sumatera Utara
Bila keseluruhan keamanan algoritma ini tergantung kunci dan tak satu pun yang didasarkan pada detil algoritma maka algoritma ini dapat dipublikasikan dan dianalisis oleh semua orang. Produk-produk yang menggunakan algoritma tersebut dapat diproduksi secara massal. Tidak masalah bila penguping mengetahui algoritma tersebut, jika dia tidak mengetahui kunci rahasianya, dia tetap tak dapat membaca pesan yang ada.
Contoh sistem semacam ini adalah kartu kredit. Semua kartu kredit yang beredar diseluruh dunia menggunakan algoritma kriptografi yang sama yaitu DES dan Rivest Shamir Adleman (RSA). Semua orang boleh mengetahui ini rinci algoritma DES dan RSA. Namun pengetahuan terhadap algoritma ini tidak membantu proses pembongkaran kodenya. Hanya dengan pengetahuan kuncinya sajalah orang dapat melakukan dekripsi. Artinya dengan memberikan kepada setiap kartu satu kunci, keamanan kartu kredit dapat diandalkan. Keuntungan sistem seperti ini adalah bahwa berbagai produsen kartu kredit yang berbeda dapat menggunakan algoritma keamanan yang sama sehingga dapat digunakan pada mesin perusahaan yang berbeda.
2.5 Kriptanalisis
Cryptanalysis (analisis sandi) adalah ilmu untuk mendapatkan plaintext pesan tanpa harus mengetahui kunci secara wajar. Pemecahan sandi rahasia yang berhasil akan menghasilkan plaintext atau kunci. Analisis sandi juga dapat menemukan kelemahan dalam kriptosistem yang pada akhirnya dapat menemukan kunci dan plaintext. Kehilangan kunci melalui peralatan non-cryptanalitic disebut compromise. Dengan kata lain, analisis sandi merupakan kebalikan dari kriptografi. (Ariyus, 2008).
Usaha analisis sandi disebut juga dengan attack (serangan). Asumsi dasar dalam cryptanalisis pertama kali diungkapkan oleh Dutchman A Kerckhoffs pada abad ke-19, yaitu bahwa kerahasiaan harus terletak pada kunci. Kerckhoffs mengasumsikan bahwa analis sandi mempunyai detil lengkap algoritma kriptografi
Universitas Sumatera Utara
dan implementasinya. Meskipun dalam dunia nyata, analisis sandi mungkin tidak mempunyai informasi yang sedemikian detil, adalah baik untuk membuat asumsi semacam itu.
Lars Knudsen menggolongkan berbagai macam jenis pemecahan algoritma
1.
Total break Seorang analis berhasil menemukan kunci, K yang digunakan untuk melindungi data-data, sedemikian sehingga Dk(C) = P
2.
Global deducation Analis sandi mendapatkan algoritma alternatif P, yang ekivalen dengan Dk(C), tanpa mengetahui K
3.
Instance (local) deducation Analisis sandi mendapatkan plaintext atau ciphertext yang disadap.
4.
Information deducation Analis sandi memperoleh beberapa informasi mengenai kunci atau plaintext. Informasi ini dapat berupa beberapa bit kunci, atau sedikit informasi tentang bentuk plaintext.
Kompleksitas serangan dapat diukur dalam berbagai cara :
1.
Data complexity Jumlah data yang diperlukan sebagai input attack. Semakin sedikit jumlah data yang diperlukan untuk melakukan attack, berarti kualitas algoritma yang digunakan semakin tidak baik
Universitas Sumatera Utara
2.
Processing complexity Lama waktu yang tersedia untuk melakukan attack. Ini sering disebut faktor kerja. Semakin cepat waktu yang dibutuhkan, berarti semakin buruk kualitas algoritma yang digunakan.
3.
Storage requirements Jumlah memori yang dibutuhkan untuk melakukan attack.
Kompleksitas dinyatakan sebagai orde besarnya. Jika algoritma memiliki kompleksitas 2128, maka sejumlah 2128 operasi diperlukan untuk memecahkan algoritma. Operasi ini mungkin komplek dan banyak menghabiskan waktu. Jika dimiliki kecepatan komputasi prosesor hingga 1000 juta operasi per detik dan menggunakan satu juta prosesor untuk melakukan tugas ini, maka akan diperlukan waktu 1016 tahun untuk menemukan kunci. Ini berarti satu juta kali umur alam semesta.
Sementara kompleksitas attack konstan (sampai analis sandi mendapatkan cara yang lebih baik), kekuatan komputasi meningkat pesat. Attack akan meningkat pesat dalam mesin paralel. Tugas dapat dipecah-pecah ke dalam miliyaran bagian yang kecil-kecil dan tak satu pun dari prosesor-prosesor tersebut memerlukan interaksi dengan lainnya. Kriptosistem yang baik dirancang untuk menghadapi kemajuan teknologi peningkatan kecepatan komputasi hingga tahun-tahun kedepan.
2.6 Enkripsi dan Dekripsi
Salah satu hal yang penting dalam komunikasi menggunakan komputer untuk menjamin kerahasiaan data adalah enkripsi. Enkripsi adalah sebuah proses yang melakukan perubahan sebuah kode dari bahasa yang bisa dimengerti menjadi sebuah kode yang tidak dapat dimengerti (tidak dapat dibaca). Enkripsi dapat diartikan sebagai kode cipher. Sebuah sistem pengkodean menggunakan suatu tabel atau kamus yang telah didefinisikan untuk mengganti kata dari informasi atau
Universitas Sumatera Utara
merupakan bagian dari informasi yang dikirim. Sebuah cipher menggunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unnitelligible). Karena teknik cipher merupakan suatu sistem yang telah siap untuk diautomasi, maka teknik ini digunakan dalam sistem keamanan komputer dan jaringan.
Suatu pesan yang tidak disandikan disebut sebagai plaintext atau dapat disebut juga sebagai cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext disebut encryption (enkripsi) atau encipher ment. Sedangkan proses untuk mengubah ciphertext kembali ke plaintext disebut decryption (dekripsi) atau decipherment. Secara sederhana istilah-istilah di atas dapat digambarkan sebagai berikut : Kunci K
Kunci K
ciphertext Plaintext P
Enkripsi EK(P)
Dekripsi DK(C)
Plaintext P
Gambar 2.1 Proses Enkripsi/Dekripsi Sederhana
Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst.
Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan transformasi enkripsi tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakan.
Universitas Sumatera Utara
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut :
EK (P) = C (Proses Enkripsi)
(2.1)
DK (C) = P (Proses Dekripsi)
(2.2)
Pada saat proses enkripsi kita menyandikan pesan P dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan P yang sama seperti pesan sebelumnya. Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang digunakan, dan tidak tergantung pada algoritma yang digunakan.
Enkripsi dimaksudkan untuk melindungi informasi agar tidak terlihat oleh orang atau pihak yang tidak berhak. Informasi ini dapat berupa nomor kartu kredit, catatan penting dalam komputer, maupun password untuk mengakses sesuatu. Enkripsi juga digunakan untuk verifikasi. Bila men-download software, bagaimana tahu bahwa software yang di download adalah yang asli, bukannya yang telah dipasangkan trojan di dalamnya. Dalam hal ini terdapat tiga kategori enkripsi, yaitu:
1.
Kunci enkripsi rahasia Dalam hal ini, terdapat sebuah kunci yang digunakan untuk mengenkripsi dan juga sekaligus mendekripsikan informasi.
2.
Kunci enkripsi publik Dalam hal ini, dua kunci digunakan, satu untuk proses enkripsi dan yang lain untuk proses dekripsi.
3.
Fungsi one-way (fungsi satu arah)
Universitas Sumatera Utara
Suatu fungsi di mana informasi dienkripsi untuk menciptakan ”signature” dari informasi asli yang bisa digunakan untuk keperluan autentikasi.
Enkripsi dibentuk berdasarkan suatu algoritma yang akan mengacak suatu informasi menjadi bentuk yang tidak bisa dibaca atau tak bisa dilihat. Dekripsi adalah proses dengan algoritma yang sama untuk mengembalikan informasi teracak menjadi bentuk aslinya. Algoritma yang digunakan harus terdiri dari susunan prosedur yang direncanakan secara hati-hati yang harus secara efektif menghasilkan sebuah bentuk ter-enkripsi yang tidak bisa dikembalikan oleh seseorang, bahkan sekalipun mereka memiliki algoritma yang sama.
Algoritma sederhana dapat dicontohkan di sini. Sebuah algoritma direncanakan, selanjutnya disebut algoritma (karakter + 3), agar mampu mengubah setiap karakter menjadi karakter nomor tiga setelahnya. Artinya, setiap menemukan huruf A, maka algoritma akan mengubahnya menjadi D, B menjadi E, C menjadi F, dan seterusnya. Sebuah pesan asli atau plaintext dikonversikan oleh algoritma karakter + 3 menjadi ciphertext (hasil enkripsi). Sedangkan untuk mendekripsikan pesan digunakan algoritma dengan fungsi kebalikannya yaitu karakter - 3. Metode enkripsi yang lebih umum adalah menggunakan sebuah algoritma dan sebuah kunci. Pada contoh diatas, algoritma bisa diubah menjadi karakter+x, di mana x adalah variabel yang berlaku sebagai kunci. Kunci bisa bersifat dinamis, artinya kunci dapat berubah-ubah sesuai kesempatan untuk lebih meningkatkan keamanan pesan. Kunci harus diletakkan terpisah dari pesan yang terenkripsi dan dikirimkan secara rahasia. Teknik semacam ini disebut sebagai symmetric (single key) atau secret key cryptography.
2.7 Algoritma Kriptografi
Universitas Sumatera Utara
Berdasarkan jenis kunci yang digunakan dalam proses enkripsi dan dekripsi, algoritma kriptografi dapat dibedakan menjadi dua bagian yaitu Algoritma Kunci Simetri (Konvensional) dan Algoritma Asimetri (Kunci Public).
2.7.1 Algoritma Simetri (Algoritma Konvensional)
Algoritma Kriptografi Simetrik merupakan algoritma kriptografi yang menggunakan kunci yang sama untuk proses enkripsi dan dekripsi. Secara matematis dapat dinyatakan bahwa: E=D←K
(2.3)
EK (P) = C
(2.4)
DK(C) = P
(2.5)
Keterangan: E = proses enkripsi
P = plaintext
D = proses dekripsi
C = ciphertext
K = kunci EK = proses enkripsi menggunakan kunci K DK = proses dekripsi menggunakan kunci K
Kriptografi simetrik sangat menekankan pada kerahasiaan kunci yang digunakan untuk proses enkripsi dan dekripsi. Oleh karena itulah kriptografi ini dinamakan pula sebagai kriptografi kunci rahasia. Algoritma simetri disebut juga sebagai algoritma konvensional karena algoritma yang biasa digunakan orang sejak berabad-abad yang lalu adalah algoritma jenis ini. Contoh algoritma kunci simetri adalah OTP, DES, RC2, RC4, RC5, RC6, IDEA, Twofish, Magenta, FEAL, SAFER, LOKI, CAST, Rijndael (AES), Blowfish, dan lain-lain.
Proses enkripsi pada algoritma simetri ditunjukkan pada gambar 2.2 berikut:
Universitas Sumatera Utara
Plaintext (P)
Algoritma enkripsi
Ciphertext (C )
Algoritma dekripsi
User A
Plaintext (P)
User B
Kunci/ Key K
Gambar 2.2. Proses Enkripsi Algoritma Simetri
Dari gambar 2.2, diperlihatkan bahwa pesan plaintext P dikodekan (dienkripsi) menjadi ciphertext menggunakan password (kunci K). Untuk mengembalikan cipher dilakukan proses dekripsi dengan kunci yang sama. Karena kunci yang digunakan sama, maka disebut kriptografi kunci simetri.
Pesan asal P dan kode rahasia C yang diperoleh dari enkripsi dengan kunci K, dapat dituliskan: C = EK (P). Notasi ini menyatakan bahwa C dihasilkan oleh fungsi enkripsi E yang dioperasikan terhadap masukan P dengan kunci K. Operasi ini dilakukan pengirim. Pada penerima dilakukan operasi sebaliknya, yaitu P = DK(C) Pemecah kode (cryptanalyst) sering kali hanya memiliki C dan harus menemukan nilai P. 2.7.2 Algoritma Asimetri
Algoritma Asimetri adalah algoritma yang menggunakan kunci yang berbeda untuk setiap proses enkripsi dan dekripsi. Kunci enkripsi dapat disebarkan kepada umum dan dinamakan sebagai kunci publik (public key) sedangkan kunci dekripsi disimpan untuk digunakan sendiri dan dinamakan sebagai kunci pribadi (private key). Oleh karena itulah, kriptografi ini dikenal pula dengan nama kriptografi kunci publik (public key cryptography). Plain teks
Algoritma enkripsi
Cipher teks
User A
Algoritma dekripsi
Plain teks User B
Private Key B Public Key B
Universitas Sumatera Utara
Gambar 2.3 Proses Enkripsi Kunci Publik
Keuntungan skema model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci (disebut public-key) bagi para koresponden untuk mengenkripsi pesan, dan private-key untuk mendekripsi pesan. Berbeda dengan skema kunci simetrik yang jumlah kunci yang dibuat adalah harus sebanyak jumlah pihak yang berkorespondensi. Contoh algoritma asimetri adalah ECC, LUC, RSA, EI Gamal dan DH. Enkripsi dengan kunci publik ke dinyatakan sebagai:
Eke(P) = C
(2.6)
Dengan kunci privat (Kd) sebagai pasangan kunci publik (Ke), dekripsi dengan kunci privat yang bersesuaian dapat dinyatakan dengan:
Dkd(C) = P
(2.7)
Ke merupakan pasangan Kd. Artinya tidak ada Kd lain yang dapat digunakan untuk melakukan dekripsi kode C yang merupakan hasil enkripsi dengan kunci Ke. Sebaliknya, pesan dapat dienkrip dengan kunci privat dan didekrip dengan kunci publik. Metode ini digunakan pada tanda tangan digital. Operasi ini dapat dinyatakan sebagai berikut :
Ekd(P) = C
(2.8)
Dke(C) = P
(2.9)
Artinya kunci privat dan kunci publik dapat digunakan secara berlawanan dengan tujuan yang berbeda. Sifat ini hanya berlaku untuk algoritma kunci publik tertentu semacam RSA.
Universitas Sumatera Utara
2.8. Algoritma Twofish
Algoritma Twofish adalah sebuah algoritma Cipher blok yang dibentuk oleh “Counterpane Labs USA” dan dipublikasikan tahun 1998. Merupakan salah satu finalis Advanced Encryption Standard (AES). Algoritma Twofish tidak dipatenkan, dan kode sumbernya dapat disalin serta bebas lisensi untuk semua pengguna.
Bruce Schneier beserta timnya di Counterpane Labs USA telah mencoba untuk memberikan penamaan yang diawali dengan kata blow atau diakhiri dengan kata fish. Nama Twofish diberikan untuk beberapa alasan, yaitu: menjadi tradisi untuk memberikan penamaan yang menggunakan makhluk laut, atau animal pada umumnya, selain itu tim yang tergabung dalam Counterpane Labs USA tidak menyetujui untuk memberikan nama Blowfish II. Selain itu, fungsi putaran di dalam algoritma Twofish diperoleh dari dua fungsi putaran algoritma Blowfish secara paralel. (Schneier et al, 1999)
Universitas Sumatera Utara
2.8.1 Latar Belakang Twofish
Twofish merupakan algoritma yang beroperasi dalam mode blok yang merupakan pengembangan dari algoritma Blowfish. Pengembangan algoritma Blowfish difokuskan pada struktur algoritma, panjang blok, tingkat pengacakan, penjadwalan internal, pembangkitan kotak-S.
Struktur algoritma pada algoritma Twofish menggunakan jaringan Fiestel 16 putaran, menggunakan kotak-S, menggunakan operasi penambahan, ExclusiveOR (XOR), dan look-up table. Pengembangan menghasilkan struktur algoritma Twofish yang memiliki matriks Maximum Distance Separable (MDS), penggunaan teknik Pseudo-Hadamard Transform (PHT). Hal tersebut tentu berpengaruh terhadap tingkat pengacakan algoritma Twofish yang lebih rumit dibanding algoritma Blowfish. Demikian pula halnya dengan penjadwalan kunci internal dan pembangkitan kotak-S, dimana pada algoritma Blowfish penjadwalan kunci internal dan pembangkitan kotak-S
tidak serumit algoritma Twofish yang sudah
menggunakan matriks MDS. Sementara itu panjang blok pesan yang diolah pada algoritma Blowfish adalah 64 bit, sedangkan algoritma Twofish adalah 128 bit. Blok pesan yang lebih besar akan lebih sulit dianalisis difference pair dibanding yang lebih kecil.
Perancangan algoritma Twofish dilakukan dengan memperhatikan kriteriakriteria yang diajukan National Institute of Standards and Technology (NIST) untuk kompetisi Advanced Encryption Standard (AES). Tujuan perancangan Twofish yang selaras dengan kriteria NIST untuk AES adalah sebagai berikut:
1.
Merupakan blok kode dengan kunci simetri 128 bit.
2.
Panjang kunci yang digunakan adaah 128 bit, 192 bit, dan 256 bit. dan tidak mempunyai kunci lemah
Universitas Sumatera Utara
3.
Efisiensi algoritma, baik pada Intel Pentium Pro dan perangkat lunak lainnya serta platform perangkat keras.
4.
Rncangan yang fleksibel, yang dapat diartikan, misalnya, dapat menerima panjang kunci tambahan, dapat diterapkan pada platformdan aplikasi yang sangat variatif, serta cocok untuk aliran kode, fungsi Hash, dan MAC.
5.
Rancangan yang sederhana agar memudahkan proses analisis dan implementasi algoritma
Pada bulan Agustus 1998, Konferensi umum NIST memutuskan 5 finalis yang didasarkan pada aspek keamanan algoritma, kemangkusan (efficiency), fleksibilitas, dan kebutuhan memori. Finalis tersebut adalah: Rijndael (oleh Vincent Rijmen dan Joan Daemen dari Belgia mendapat 86 suara), Serpent (oleh Ross Anderson, Eli Biham, dan Lars Knudsen dari Inggris, Israel, dan Norwegia mendapatkan 59 suara), Twofish (oleh tim yang diketuai Bruce Schneier dari USA mendapat 31 suara), RC6 (dari laboratorium RSA dari USA mendapat 23 suara), MARS (dari IBM mendapatkan 13 suara).
Universitas Sumatera Utara
Perbandingan 5 finalis AES dilihat dari segi kecepatan enkripsi dengan 128 bit kunci menggunakan bahasa assembly ditunjukkan pada gambar 2.4 berikut:
Gambar 2.4 Perbandingan 5 finalis AES kecepatan enkripsi dengan 128 bit kunci menggunakan bahasa assembly (Sumber : Schneier, Bruce, et al. 1998. A performane Comparison of the five AES Finalist. [Online] Tersedia : www.schneier.com/paper-aes-comparison-twofish.pdf.) [Desember 2008]
Dari gambar 2.4 dapat dilihat bahwa
pada beberapa jenis arsitektur
perangkat keras, algoritma Twofish tidak kalah unggul dibanding 4 finalis AES lainnya.
Universitas Sumatera Utara
Perbandingan 5 finalis AES dilihat dari segi kecepatan enkripsi dengan 192 bit kunci menggunakan bahasa assembly ditunjukkan pada gambar 2.5 berikut:
Gambar 2.5 Perbandingan 5 finalis AES kecepatan enkripsi dengan 192 bit kunci menggunakan bahasa assembly (Sumber : Schneier, Bruce, et al. 1998. A performane Comparison of the five AES Finalist. [Online] Tersedia : www.schneier.com/paper-aes-comparison-twofish.pdf.) [Desember 2008]
Dari gambar 2.5 dapat dilihat bahwa
pada beberapa jenis arsitektur
perangkat keras, algoritma Twofish tidak kalah unggul dibanding 4 finalis AES lainnya
Universitas Sumatera Utara
Perbandingan 5 finalis AES dilihat dari segi kecepatan enkripsi dengan 256 bit kunci menggunakan bahasa assembly ditunjukkan pada gambar 2.6 berikut:
Gambar 2.6 Perbandingan 5 finalis AES kecepatan enkripsi dengan 256 bit kunci menggunakan bahasa assembly (Sumber : Schneier, Bruce, et al. 1998. A performane Comparison of the five AES Finalist. [Online] Tersedia : www.schneier.com/paper-aes-comparison-twofish.pdf.) [Desember 2008]
Dari gambar 2.6 dapat dilihat bahwa pada arsitektur pentium dan HP PA8200 algoritma Twofish lebih unggul dibanding 4 finalis AES lainnya. Algoritma Twofish tentu saja menjadi salah satu algoritma yang unggul disamping algoritma Rijndael. Dapat dilihat dari gambar 2.4, gambar 2.5, bahwa Algoritma Twofish memiliki keunggulan dari segi konsistensi kecepatan enkripsi. Algoritma Rijndael semakin lambat 20% dengan panjang kunci 192 dan 40% dengan panjang kunci 256. Berbeda dengan 4 finalis lainnya yang konsisten dari segi kecepatan enkripsi pada panjang kunci berbeda.
Universitas Sumatera Utara
Selain kriteria-kriteria yang diajukan oleh NIST, pada algoritma Twofish juga ditambahkan kriteria performasi sebagai berikut:
1.
Menerima kunci dengan panjang berapapun hingga 256 bit
2.
Mengenkripsi data dalam waktu kurang dari 500 clock cycles per blok pada Intel Pentium, Pentium Pro, dan Pentium II, untuk versi algoritma yang teroptimasi sepenuhnya.
3.
Mampu membentuk sebuah kunci 128 bit(untuk kecepatan enkripsi yang optimal) dalam waktu kurang dari waktu yang dibutuhkan untuk mengenkripsi 32 blok pada Intel Pentium, Pentium Pro, dan Pentium II
4.
Tidak menggunakan operasi yang membuat Twofish tidak efisien pada mikroprosesor selain 32 bit, mikroprosesor 8 bit, dan mikroprosesor 16 bit. Twofish juga tidak menggunakan operasi yang dapat mengurangi efisiensi mikroprosesor 64 bit.
2.8.2 Prinsip Perancangan Algoritma Twofish
Prinsip perancangan algritma Twofish adalah:
1.
Daya Guna (Performance) Daya guna dari algoritma yang diimplementasikan pada arsitektur mikroprosesor yang berbeda.
2.
Rancangan yang Umum Elemen-elemen yang membangun Algoritma Twofish, secara keseluruhan adalah adalah elemen yang telah dikenal.
Universitas Sumatera Utara
3.
Kesederhanaan Prinsip perancangan dibalik Algoritma Twofish adalah bagaimana fungsifungsi yang digunakan dalam tiap putaran pada algoritma cukup mudah diingat, tetapi tetap aman dalam waktu yang cukup.
2.8.3 Elemen Pembangun Algoritma Twofish
Twofish merupakan struktur sejenis Fiestel dalam 16 putaran dengan tambahan teknik whitening terhadap masukan dan keluaran. Teknik whitening adalah teknik melakukan operasi Exclusive OR (XOR) terhadap materi kunci sebelum putaran pertama dan sesudah putaran akhir.
2.8.3.1. Jaringan Fiestel
Hampir semua algoritma blok kode bekerja dalam model jaringan fiestel. Jaringan fiestel ditemukan oleh Horst Fiestel dalam desain Lucifer, dan dipopulerkan oleh DES. Jaringan fiestel adalah metode umum untuk mentransformasi fungsi apapun ke dalam permutasi. Beberapa algoritma kriptografi lain yang menggunakan jaringan Fiestel adalah LOKI, GOST, FEAL, Blowfish, Khufu Khafre, dan RC-5. Model jaringan Fiestel bersifat reversible, untuk proses enkripsi dan dekripsi, sehingga tidak perlu membuat algoritma baru untuk mendekripsi teks kode menjadi teks asli. Bagian yang paling penting dari jaringan Fiestel adalah fungsi F. Pemetaan string masukan menjadi string keluaran berdasarkan kunci yang digunakan. fungsi F selalu tidak linier dan mungkin tidak surjektif. F : {0,1}n/2 x {0,1}N → {0,1}n/2
(2.10)
dengan n adalah ukuran blok dari jaringan fiestel dan F adalah fungsi yang menerima n/2 bit dari blok dan N bit kunci sebagai masukan dan menghasilkan n/2 bit keluaran.dalam setiap putaran. Blok sumber adalah masukan fungsi F dan keluaran
Universitas Sumatera Utara
dari fungsi F di-XOR dengan blok target, lalu dua blok ini dipertukarkan sebelum masuk ke putaran berikutnya. Jaringan Fiestel pada algoritma Twofish ditunjukkan pada Gambar 2.7. X[0]
X[1]
X[2]
X[3]
<<< 1
g K2r+8
Kotak-S 0 Kotak-S 1
MDS
Kotak-S 2 Kotak-S 3 Satu putaran K2r+9 Kotak-S 0 Kotak-S 1 <<< 8
MDS
Kotak-S 2 Kotak-S 3
>>> 1
15 putaran selanjutny a Pertukara n akhir
X[2]
X[3]
X[0]
X[1]
Gambar 2.7 Skema Jaringan Fiestel pada Twofish
Ide yang digunakan adalah untuk mengambil fungsi F, yang mungkin merupakan algoritma enkripsi yang lemah jika berdiri sendiri, dan melakukan
Universitas Sumatera Utara
perulangan untuk membuat algoritma enkripsi yang kuat. Dua putaran dalam jaringan Fiestel disebut satu siklus, dan dalam satu siklus setiap bit dari blok teks telah dimodifikasi sekali. Twofish merupakan jaringan Fiestel 16-putaran, dengan fungsi F bijektif.
2.8.3.2 Kotak Substitusi atau Kotak-S (S-Boxes) dan Fungsi g
Kotak-S adalah matriks yang berisi substitusi non-linear yang memetakan satu atau lebih bit lain dan digunakan di banyak blok kode. Kotak-S memiliki ukuran masukan dan ukuran keluaran yang bervariasi. Kotak-S mendukung pencapaian prinsip Confussion oleh Shannon pada tahun 1994. Prinsip Confussion akan membuat kriptanalisis frustasi untuk mencari pola statistik yang muncul pada cipherteks. Empat pendekatan yang digunakan dalam mengisi kotak-S, yaitu: dipilih secara acak, dipilih secara acak lalu diuji, dibuat orang, dihitung secara matematis. Kotak-S pertama digunakan di Lucifer, lalu DES dan diikuti banyak algoritma enkripsi yang lain. Twofish menggunakan empat buah kotak-S yang dibangun dengan material kunci, fixed permutation serta bantuan MDS.
Gambar 2.8 menunjukkan hubungan material kunci dengan pembentukan Kotak-S melalui pembentukan Kunci kotak-S (Sbox-key).
Key [0..7] i = 0,1,2,3
Key_even[i] = Key[2*i]
Key_odd[i] = Key[2*i+1]
RS_MDS_Encode
Sbox_Key[j]
dec(j)
Gambar 2.8 Pembentukan S-Box Key
Universitas Sumatera Utara
Material Kunci digunakan untuk membentuk S-Box Key. S-Box Key menggunakan
fungsi
Reed-Solomon
Code
(RS
Code),
yang
membantu
menghindarkan segala kemungkinan serangan yang berhubungan dengan kunci (related-key).
Fungsi g merupakan bagian yang sangat penting dari algoritma Twofish. Masukan plainteks yang dibagi menjadi 4 byte. Masing-masing byte akan dijalankan melewati key-dependent S-box. S-Box menerima masukan 8 bit dan menghasilkan 8 bit keluaran.
Skema langkah Pembentukan fungsi g dengan Panjang Kunci 128 digambarkan dalam gambar 2.9.
S-Box Key[0]
S-Box Key[1]
permutasi 8x8
XOR256 MDS
Gambar 2.9 Pembentukan Fungsi g Dengan Panjang Kunci 128
Skema langkah Pembentukan fungsi g dengan panjang kunci 192 digambarkan dalam gambar 2.10. S-Box Key[2]
permutasi 8x8
XOR256 S-Box Key[0]
S-Box Key[1]
MDS
Gambar 2.10 Pembentukan Fungsi g Dengan Panjang Kunci 192
Universitas Sumatera Utara
Skema langkah Pembentukan fungsi g dengan Panjang Kunci 256 digambarkan dalam gambar 2.11 S-Box Key[3]
S-Box Key[2]
permutasi 8x8
XOR256
XOR256 S-Box Key[0]
S-Box Key[1]
MDS
Gambar 2.11 Pembentukan Fungsi g Dengan Panjang Kunci 256
XOR256 merupakan suatu prosedur bantu untuk melakukan proses pencampuran bit S-Box key dengan S-Box . Perancangan prosedural XOR256 dapat dilihat pada tabel 4.9.
2.8.3.3 Maximum Distance Separable (MDS) Matrices
Kode MDS pada sebuah field adalah pemetaan linear dari x elemen 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 di antara 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 di antara dua vektor yang berbeda, sehingga disebut jarak pisah maksimum (maximum distance separable). Pemetaan MDS dapat direpresentasikan dengan sebuah matriks MDS yang terdiri dari x x y untuk menjadi MDS adalah semua kemungkinan submatriks kotak yang diperoleh dengan membuang kolom atau baris adalah tidak singular.
Universitas Sumatera Utara
Serge Vaudenay pertama kali mengajukan matriks MDS sebagai elemen desain kode. Shark dan Square menggunakan matriks MDS, meskipun konstruksinya pertama kali di kode Manta yang tidak dipublikasikan.
2.8.3.4 Pseudo-Hadamard Transformation(PHT)
Sebuah operasi pencampuran sederhana yang berjalan secara cepat dalam perangkat lunak. PHT 32-bit dengan dua masukan didefinisikan sebagai: a’ = a + b mod 2 32
(2.11)
b’ = a + 2b mod 2 32
(2.12)
Pada tahun 1994, SAFER menggunakan PHT 8-bit untuk difusi. Twofish menggunakan PHT 32-bit untuk mengubah keluaran dari fungsi g. PHT memiliki rancangan yang sederhana dan reversibel untuk proses enkripsi dan dekripsi.. Skema PHT ditampilkan pada gambar 2.12 berikut: b
a’
a
b’
Gambar 2.12 Skema PHT pada algoritma Twofish
2.8.3.5 Whitening
Sebuah teknik XOR material kunci sebelum putaran pertama dan setelah putaran terakhir, digunakan oleh Merkle dalam Khufu Khafre, dan ditemukan oleh Rivest untuk DES-X. Whitening menambah tingkat kesulitan serangan pencarian kunci terhadap teks-kode, dengan menyembunyikan masukan spesifik terhadap putaran
Universitas Sumatera Utara
pertama dan putaran terakhir dari fungsi F. Hal ini disebabkan oleh gerbang logika XOR hanya menghasilkan nilai output 1 (True) jika dan hanya jika salah satu input saja yang bernilai 1 (True). Dan jika nilai kedua inputnya 1 (True), maka akan tetap menghasilkan nilai output 0 (False). Dengan demikian, logika XOR tidak akan membiarkan kedua input bernilai sama. Jika sama maka akan menghasilkan nilai outputnya dalah 0 (False).
Dalam langkah whitening masukan terhadap keempat bagian teks-asli ini dilakukan operasi XOR dengan empat buah bagian kunci dari kunci yang telah diekspansi. R0i = Pi ⊕ Ki
(2.13)
dengan i = 0,...,3
Skema Langkah Whitening Masukan pada Algoritma Twofish, ditunjukkan sebagai berikut:
Plainteks 128 bits = P[0..16]
P[0..3] SK[0]
X[0] P[4..7]
SK[1]
X[1] P[8..11]
SK[2
X[2] P[12..15
SK[3]
X[3]
Gambar 2.13 Skema Langkah Whitening Masukan pada Algoritma Twofish
Universitas Sumatera Utara
Dalam langkah whitening masukan terhadap keempat bagian teks-asli ini dilakukan operasi XOR dengan empat buah bagian kunci dari kunci yang telah diekspansi. Ci = R16,(i+2) mod 4 ⊕ Ki+4
(2.14)
dengan i = 0,...,3 Plaintext 128 bits = C[0..16]
X[2] Sub-Key[4]
X[3]
Sub-Key[5]
X[0] Sub-Key[6]
X[1]
Sub-Key[7] C[0..3] C[4..7] C[8..11] C[12..15]
Ciphertext 128 bits = C[0..16]
Gambar 2.14 Skema Langkah Whitening Keluaran pada Algoritma Twofish
2.8.3.6 Penjadwalan Kunci
Penjadwalan kunci adalah proses pengubahan bit-bit kunci mencapi sub-kunci tiap putaran yang dapat digunakan oleh kode. Twofish memerlukan banayak material kunci dan memiliki penjadwalan kunci yang rumit.
Universitas Sumatera Utara
Pada Algoritma Twofish, penjadwalan kunci harus menyediakan 40 buah kata dari kunci yang sudah dibentuk. Twofish didefinisikan untuk menerima kunci dengan panjang 128 bit, 192 bit, dan 256 bit. Kunci yang lebih pendek dari ketiga panjang kunci tersebut akan mengalami penambahan nol pada bagian akhir dari kunci sehingga menghasilkan kunci dengan perpanjangan mencapai panjang kunci yang terdekat.
Nilai didefinisikan k=N/64 dengan N menunjukkan panjang bit. Kunci M terdiri dari 8k byte m0,..., m8k-1. Nilai tersebut akan dikonversikan menjadi kata-kata berukuran 2k dari setiap 32 bit. 3
Mi = ∑ m(41+j) .28j
dengan i = 0,...,2k-1
(2.15)
j=0
Nilai M akan dibagi ke dalam dua bagian vektor kata-kata berindeks ganjil dan genap dengan panjang k.
Me = (M0, M2,...,M2k-2)
(2.16)
Mo = (M1, M3,...,M2k-1)
(2.17)
Tiap bagian Me dan Mo akan memasuki fungsi h yang menerima masukan N bit dan sebuah daftar L = (L0,...,Lk-1) yang didapat melalui bilangan permutasi 8 bit, dan akan menghasilkan keluaran A dan B.
Universitas Sumatera Utara
Pembentukan 40 Sub-Kunci Pada Algoritma Twofish ditunjukkan sebagai berikut: Kunci [0..7] i = 0,1,2,3
Kunci [2*i] Me
Kunci [2*i + 1] Mo
Len(Key) = K
Fungsi h
Fungsi h
A
B PHT Pseudo Hadamard Transform <<8
Sub-Kunci [2*j]
Sub-Kunci [2*j + 1]
Gambar 2.15 Pembentukan 40 Sub-Kunci Pada Algoritma Twofish
Universitas Sumatera Utara
Fungsi h yang terdapat pada algoritma Twofish ditunjukkan sebagai berikut: Key t0
t1
t2
L3
t3
k=4
k<4 t0
t1
t2
L2
t3
k>2
k=2 t0
t1
t2
t3
L1
t0
t1
t2
t3
L0
t0
t1
t2
t3
MDS Gambar 2.16 Skema Fungsi h Pada Algoritma Twofish
Penjadwalan kunci dilakukan pada 40 sub kunci yang telah terbentuk.
1.
4 Kunci untuk whitening masukan (Ki, dengan i = 0,1,2,3) dan 4 kunci untuk whitening keluaran (Ki+4 dengan i = 0,1,2,3)
2.
15 kunci untuk keluaran fungsi F pada blok plainteks pertama (K2r+8 dengan i = 0,...,15) dan 15 kunci untuk keluaran fungsi F pada blok plainteks kedua (K2r+9 dengan i = 0,...,15)
Universitas Sumatera Utara
Penjadwalan 40 Sub-Kunci Pada Algoritma Twofish yang terdapat pada algoritma Twofish ditunjukkan sebagai berikut: Sub-Kunci [2*j]
Sub-Kunci [2*j + 1]
Sub-Kunci [i]
i= 0,1,2,3
i= 4,5,6,7
i= 8,..,39
Sub-Kunci Input Whitening
Sub-Kunci OutputWhitening
Sub-Kunci 16 round
Sub-Kunci [2*r+8]
Sub-Kunci [2*r+9]
Gambar 2.17 Skema Penjadwalan 40 Sub-Kunci Pada Algoritma Twofish
Universitas Sumatera Utara
2.9
Analisis Kerahasiaan Data pada Algoritma Twofish
2.9.1 Analisis Kompleksitas Algoritma
Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Efisiensi algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya. Algoritma yang efisien ialah algoritma yang meminimumkan kebutuhan waktu dan ruang.
Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan yang menyatakan jumlah data yang diproses. Namun dalam prakteknya informasi berapa waktu sesungguhnya untuk melaksanakan suatu operasi tertentu tidak ditemukan.Demikian pula halnya komputer dengan arsitektur yang berbeda akan berbeda pula lama waktu untuk setiap jenis operasinya. Sehingga dibutuhkan suatu model abstrak waktu dan ruang yang independen terhadap berbagai jenis arsitektur perangkat keras komputer.
Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma. Ada dua macam kompleksitas algoritma, yaitu:
1.
Kompleksitas waktu T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n.
2.
Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.
Universitas Sumatera Utara
Kompleksitas Waktu Asimptotik
Sifat asimtot misalnya ditunjukkan dalam persamaan hiperbola orthogonal y = (ax + b) / (cx + d)
(2.18)
yang memiliki dua asimtot, yaitu:
1.
Asimtot Datar pada persamaan 2.18 dengan x → ∞ atau x → -∞ maka nilai y → a/c ditunjukkan dalam: lim x → ∞ (ax + b) / (cx + d) = lim x → -∞ (ax + b) / (cx + d) = a/c.
(2.19)
Kurva y = a/c merupakan sebuah garis datar sehinggan disebut asimtot datar. Maka semakin besar nilai x, maka kurva y akan semakin dekat dengan kurva y = a/c dan juga semakin kecil nilai x, maka kurva y akan semakin dekat dengan kurva y = a/c.
2.
Asimtot Tegak pada fungsi 2.18 memiliki asimtot tegak x = -d/c ditunjukkan dalam lim x → (-d/c) (ax + b) / (cx + d) = -∞ atau ∞.
(2.20)
Hal ini menunjukkan bahwa: Jika y → ∞ atau y → -∞ maka nilai x → -d/c. Kurva x = -d/c merupakan sebuah garis tegak sehinggan disebut asimtot tegak. Maka semakin besar atau semakin kecil nilai y, maka kurva y akan semakin dekat dengan kurva x = -d/c.
Notasi yang digunakan untuk mendeskripsikan penggunaan waktu dalam suatu algoritma ditunjukkan dalam suatu fungsi dengan domain sebuah himpunan bilangan natural N = {0,1,2,...}. Notasi ini sangat tepat digunakan untuk
Universitas Sumatera Utara
menampilkan penggunaan waktu terburuk yang paling mendekati dalam suatu fungsi, yang digunakan dalam sejumlah ukuran masukan. Penggunaan waktu terburuk, dan terbaik yang paling mendekati menjadi dasar deskripsi penggunaan waktu secara asimtotik dalam suatu algoritma.
2.9.1.1.1 Notasi- O
Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan notasi kompleksitas waktu asimptotik. Notasi ini menunjukkan fungsi yang lebih berkaitan dengan kelajuan proses dari pada kelajuan pertambahan data. Notasi Big-O sering digunakan untuk mendeskripsikan keadaan terburuk. Sebagai contoh untuk n yang besar, pertumbuhan f(n) sebanding dengan n2. Pada kasus ini, f(n) tumbuh seperti n2 tumbuh. f (n) tumbuh seperti n2 tumbuh saat n bertambah. Maka f(n) berorde n2 adalah f(n) = O(n2)
(2.21)
Sebuah fungsi f(n) = O(g(n)) (dibaca “f(n) adalah O(g(n)”) yang artinya f(n) berorde paling besar g(n)) bila terdapat konstanta c dan N sedemikian sehingga : f(n) ≤ c(g(n)
(2.22)
untuk n ≥ N. Dapat disimpulkan bahwa g(n) merupakan batas atas asimtotik dari f(n).
Gambar 2.17 berikut menunjukkan f(n) = O(g(n) dengan f(n) = n2 + 2n + 3, g(n) = n2 untuk c = 2
Universitas Sumatera Utara
80 70 60 50 f(n) c*g(n)
40 30 20 10 0
01
12
23
34
45
56
67
f(n)
3
6
11
18
27
38
51
c*g(n)
0
2
8
18
32
50
72
Gambar 2.18 Kurva f(n) = O(g(n)), dengan c = 3
Untuk semua nilai n < 3 maka f(n) > g(n), sementara itu untuk semua nilai n ≥ 3 maka g(n) ≥ f(n).Dengan N = 3 dan c = 2 dapat diperoleh f(n) = O(g(n). Melalui Notasi-O, dapat dilakukan pengelompokan terhadap algoritma, yaitu:
1.
Algoritma Konstan Memiliki kompleksitas O(1) dengan waktu pelaksanaan algoritma adalah tetap, dan tidak bergantung pada ukuran masukan.
2.
Algoritma Logarimik Memiliki kompleksitas O(log n) dengan laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n. Algoritma yang termasuk kelompok ini adalah algoritma yang memecahkan persoalan besar dengan mentransformasikannya menjadi beberapa persoalan yang lebih kecil yang berukuran sama. Contoh dari jenis algoritma ini adalah algoritma pencarian biner.
Universitas Sumatera Utara
3.
Algoritma Lanjar Memiliki kompleksitas O(n) terdapat pada kasus yang setiap elemen masukannya dikenai proses yang sama. Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma juga dua kali semula.
4.
Algoritma O (n log n) Memiliki kompleksitas O(n log n) terdapat pada algoritma yang memecahkan persoalan menjadi beberapa persoalan yang lebih kecil, menyelesaikan tiap persoalan secara independen, dan menggabung solusi masing-masing persoalan. Algoritma yang diselesaikan dengan teknik bagi dan gabung mempunyai kompleksitas asimptotik jenis ini contohnya Algoritma Quicksort. Bila n = 1000, maka n log n mungkin 20.000. Bila n dijadikan dua kali semual, maka n log n menjadi dua kali semula (tetapi tidak terlalu banyak).
5.
Algoritma Kuadratik Memiliki kompleksitas O(n2) digunakan untuk persoalan yang berukuran kecil. Umumnya algoritma yang termasuk kelompok ini memproses setiap masukan dalam dua buah kalang bersarang, misalnya pada algoritma bublesort. Bila n = 1000, maka waktu pelaksanaan algoritma adalah 1.000.000. Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula.
6.
Algoritma Kubik Memiliki kompleksitas O(n3) memproses setiap masukan dalam tiga buah kalang bersarang, misalnya algoritma perkalian matriks. Bila n = 100, maka waktu pelaksanaan algoritma adalah 1.000.000. Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula.
7.
Algoritma Eksponensial Algoritma yang tergolong kelompok memiliki kompleksitas O(n3), mencari solusi persoalan secara "brute force", misalnya pada algoritma mencari
Universitas Sumatera Utara
sirkuit Hamilton. Bila n = 20, waktu pelaksanaan algoritma adalah 1.000.000. Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula.
8.
Algoritma Faktorial Seperti halnya pada algoritma eksponensial, algoritma jenis ini memproses setiap masukan dan menghubungkannya dengan n - 1 masukan lainnya, misalnya algoritma Persoalan Pedagang Keliling (Travelling Salesperson Problem). Algoritma yang tergolong kelompok memiliki kompleksitas O(n!). Bila n = 5, maka waktu pelaksanaan algoritma adalah 120. Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.
Urutan spektrum kompleksitas algoritma berdasarkan derajat polinomial adalah : O(1) < O(log n) < O(n) < O(n log n) < O(n2) < O(n3) <… < O(2n) < O(n!)
(2.23)
Sebuah masalah yang mempunyai algoritma dengan kompleksitas polinomial kasus terburuk dianggap mempunyai algoritma yang baik; artinya masalah tersebut mempunyai algoritma yang mangkus, dengan catatan polinomial tersebut berderajat rendah. Jika polinomnya berderajat tinggi, waktu yang dibutuhkan untuk mengeksekusi algoritma tersebut panjang.
Universitas Sumatera Utara
2.9.1.1.2 Notasi-Ω
Notasi-Ω disebut notasi omega yang merupakan notasi kompleksitas waktu asimptotik batas bawah. Notasi ini menunjukkan fungsi yang lebih berkaitan dengan kelajuan proses dari pada kelajuan pertambahan data. Notasi-Ω sering digunakan untuk mendeskripsikan keadaan terbaik. Sebuah fungsi f(n) = Ω(g(n)) (dibaca “f(n) adalah omega (g(n)”) yang artinya f(n) berorde paling kecil g(n)) bila terdapat konstanta c dan N sedemikian sehingga f(n) ≤ c(g(n)
(2.24)
untuk n ≥ N
2.9.1.2. Kompleksitas Ruang
Kompleksitas ruang diukur melalui memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan. Struktur data merupakan cara penyusunan suatu data di dalam memori dan menghubungkannya dengan komputer. Model logika atau model matematika dari sebuah organisasi khusus data disebut struktur data.
2.9.2 Karakteristik Kunci
Tiap putaran, dua buah sub-kunci ditambahkan pada hasil dari PHT pada fungsi gdan hasil dari penambahan tersebut akan mendapat operasi XOR. XOR difference dari suatu sub kunci cukup memiliki probabilitas yang besar dalam operasi penambahan dan hasil akhir dari blok cipher. Probabilitas ini ditentukan melalui nilai Hamming Weight dari XOR difference.
Universitas Sumatera Utara
Nilai Hamming Weight dari suatu string adalah jumlah simbol yang berbeda dengan simbol nol pada penggunaan alphabet. Misalkan suatu string 11101000 memiliki nilai Hamming Weight sebesar 4.. Nama Hamming Weight diambil dari Richard Hamming, seorang ahli matematika Amerika kelahiran Chicago, 11 Februari 1915.
Penelusuran XOR difference terhadap sub-key dapat dipermisalkan dengan x + y = z adalah ekuivalen dengan (x ⊕ δ0) + y = (z ⊕ δ1), jika dan hanya jika δ0 = δ1. Bila terdapat sejumlah t bit yang ada pada δ0 dan δ1 maka probabilitas δ0 = δ1 adalah 2-t.
2.9.3 Karakteristik Kotak-S
Analisis komponen chipper yang dilakukan pada komponen Kotak-S adalah dengan memeriksa pasangan berbeda (diffence pair) pada pasangan masukan dan keluaran yang bersesuaian pada Kotak-S. Misalkan terdapat 4x4 kotak-S dengan input X=[X1X2X3X4] dan Y=[Y1 Y2Y3Y4]. X1
X2
X3
X4
4x4 kotak-S
Y1
Y2
Y3
Y4
Gambar 2.19 Skema Penggunaan Kotak-S 4x4 Semua perbedaan pasangan dari Kotak-S, (∆X, ∆Y), dapat diperiksa dan probabilitas ∆Y dengan masukan ∆X dapat diturunkan dengan cara memeriksa pasangan input
Universitas Sumatera Utara
(X’,X’’) dimana ∆X = X’ ⊕ X’’. Keterurutan pasangan tidaklah relevan, maka untuk 4x4 Kotak-S, maka hanya 16 nilai dari X’ dan kemudian nilai ∆X ditentukan dengan batasan X’’ = X’ ⊕ ∆X. Nilai ∆Y dapat diturunkan melalui pasangan input (X’,X’’), Berikut ini contoh nilai dari X, Y dan nilai korespondensi ∆Y dari pasangan input (X’, X’ ⊕ ∆X), dengan nilai ∆X = 1011 (hex B), 100 (hex 8), dan 0100 (hex 4). Perbedaan pasangan dari Kotak-S, (∆X, ∆Y) ditunjukkan pada tabel 2.1 berikut:
Tabel 2.1 Contoh Korespondensi Pasangan Input Dan Output ∆ X
Y
∆X = 1011
∆X = 1000
∆X = 0100
0000
1110
0010
1101
1100
0001
0100
0010
1110
1100
0010
1101
0111
0101
1011
0011
0001
0010
1011
0110
0100
0010
0101
0111
1001
0101
1111
1111
0110
1100
0110
1011
0010
1011
1011
0111
1000
1101
1111
0110
1000
0011
0010
1101
1001
1001
1010
0111
1110
0011
1010
0110
0010
0101
0110
1011
1100
0010
1011
1011
1100
0101
1101
0111
0110
1101
1001
0010
0110
0011
1110
0000
1111
1011
0110
1111
0111
0101
1111
1011
Universitas Sumatera Utara
Pada tabel 2.1 terlihat bahwa jumlah terjadinya ∆Y = 0010 untuk ∆X = 1011 terdapat 8 nilai dari 16 korespondensi, sementara itu ∆Y = 1011 untuk ∆X = 1000 terdapat 4 nilai dari 16 korespondensi, sedangkan ∆Y = 1010 untuk ∆X = 0100 tidak ditemukan dari 16 korespondensi. Kotak-S disebut ideal, bila semua pasangan nilai harus satu untuk mempunyai probabilitas 1/16 (0,0625). dari suatu nilai ∆Y untuk suatu nilai ∆X.
Karakteristik Penyandian
Salah satu prinsip penyandian yang dikemukakan Shannon pada tahun 1949 adalah Diffusion. Prinsip ini menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungkin cipherteks. Sebagai contoh, pengubahan kecil pada plainteks satu bit menghasilkan perubahan pada cipherteks yang tidak dapat diprediksi. Hal ini menyembunyikan hubungan statistik antara plainteks, cipherteks, dan kunci yang membuat kriptanalisis menjadi semakin sulit.
Prinsip diffusion menjadi salah satu karakteristik untuk menentukan baik tidaknya suatu algoritma kriptografi. Prinsip diffusion dapat ditelusuri pada suatu algoritma kriptografi melalui nilai avalanche effect. Nilai suatu avalanche effect ditunjukkan melalui persentase bit cipherteks yang mengalami perubahan disebabkan perubahan terkecil pada plainteks atau kunci. Perubahan terkecil pada plainteks atau kunci ditunjukkan melalui perubahan satu bit pada plainteks maupun kunci, sehingga menghasilkan perubahan banyak bit pada cipher.
Avalanche effect
akan membantu dalam memprediksi kemungkinan
perubahan bit pada suatu posisi. Avalanche effect 0% dan 100% tentu akan sangat memudahkan kriptanalisis dalam memprediksi penyandian. Nilai Prediksi (Prae) ditentukan berdasarkan nilai maksimum antara persentase bit berubah (Pae) adan persentase bit tidak berubah (Pae’).
Universitas Sumatera Utara
Prae = Maks(Pae, Pae’)
(2.25)
dengan Pae’ = 100% - Pae keterangan: Prae = Nilai Prediksi Pae = Persentase bit berubah Pae’ = Persentase bit tidak berubah Suatu avalanche effect dikatakan baik jika perubahan bit yang dihasilkan berkisar antara 40% - 60%, dan akan sangat baik bila 50% atau separuhnya. Hal ini dapat dilihat dari nilai Prae yang lebih kecil yaitu 50% < Prae ≥ 60 untuk avalanche effect sekitar 40% - 60%. Akan lebih baik lagi bila avalanche effect bernilai 50% karena akan memiliki nilai prediksi terkecil Prae(50%,50%) = 50%. Nilai ini menunjukkan keseimbangan sebaran antara bit yang berubah dengan yang tidak berubah. Sementara itu untuk avalanche effect bernilai 0% karena akan memiliki nilai prediksi Prae(0%,100%) = 100%, dan untuk avalanche effect bernilai 100% karena akan memiliki nilai prediksi Prae(100%,0%) = 100%. Nilai ini menunjukkan cipher teks yang dihasilkan sangat mudah untuk diprediksi.
Universitas Sumatera Utara