Pembangkit Kunci Acak pada One-Time Pad Menggunakan Fungsi Hash Satu-Arah

dokumen-dokumen yang mirip
Modifikasi Cipher Block Chaining (CBC) MAC dengan Penggunaan Vigenere Cipher, Pengubahan Mode Blok, dan Pembangkitan Kunci Berbeda untuk tiap Blok

Cipher yang Tidak Dapat Dipecahkan (Unbreakable Cipher)

Penanganan Kolisi pada Fungsi hash dengan Algoritma Pengembangan Vigenere Cipher (menggunakan Deret Fibonacci)

Modifikasi Pergeseran Bujur Sangkar Vigenere Berdasarkan Susunan Huruf dan Angka pada Keypad Telepon Genggam

APLIKASI TEORI BILANGAN UNTUK AUTENTIKASI DOKUMEN

I. PENDAHULUAN. Key Words Tanda Tangan Digital, , Steganografi, SHA1, RSA

ALGORITMA ELGAMAL UNTUK KEAMANAN APLIKASI

H-Playfair Cipher. Kata Kunci: H-Playfair cipher, playfair cipher, polygram cipher, kriptanalisis, kriptografi.

Teknik Konversi Berbagai Jenis Arsip ke Dalam bentuk Teks Terenkripsi

Streamed Key Vigenere Cipher : Vigenere Cipher Menggunakan Penerapan Metode Pembangkitan Aliran Kunci

STUDI ALGORITMA SOLITAIRE CIPHER

Algoritma Kriptografi Kunci Publik. Dengan Menggunakan Prinsip Binary tree. Dan Implementasinya

PENGGUNAAN FUNGSI HASH SATU-ARAH UNTUK ENKRIPSI DATA

PENERAPAN METODA FILE COMPRESSION PADA KRIPTOGRAFI KUNCI SIMETRI

Disusun oleh: Ir. Rinaldi Munir, M.T.

ENKRIPSI CITRA BITMAP MELALUI SUBSTITUSI WARNA MENGGUNAKAN VIGENERE CIPHER

Tanda Tangan Digital Dengan Menggunakan SHA-256 Dan Algoritma Knapsack Kunci-Publik

ANALISIS KEMUNGKINAN PENGGUNAAN PERSAMAAN LINEAR MATEMATIKA SEBAGAI KUNCI PADA MONOALPHABETIC CIPHER

TRIPLE VIGENÈRE CIPHER

Studi, Perbandingan Metode Steganografi, dan Metode Steganalisis pada Berkas HTML

BAB III. ANALISIS MASALAH

Studi Perancangan Algoritma Fungsi Hash

STUDI DAN PERBANDINGAN PERFORMANSI ALGORITMA SIMETRI VIGENERE CHIPPER BINNER DAN HILL CHIPPER BINNER Ivan Nugraha NIM :

Optimasi Enkripsi Teks Menggunakan AES dengan Algoritma Kompresi Huffman

Analisis Cara Kerja Beragam Fungsi Hash Yang Ada. Christian Angga

BAB I PENDAHULUAN 1.1 Latar Belakang

Vigenere Minimum-Prime Key-Adding Cipher

FUNGSI HASH PADA KRIPTOGRAFI

RANCANGAN,IMPLEMENTASI DAN PENGUJIAN ZENARC SUPER CIPHER SEBAGAI IMPLEMENTASI ALGORITMA KUNCI SIMETRI

MODIFIKASI VIGÈNERE CIPHER DENGAN MENGGUNAKAN MEKANISME CBC PADA PEMBANGKITAN KUNCI

RC4 Stream Cipher. Endang, Vantonny, dan Reza. Departemen Teknik Informatika Institut Teknologi Bandung Jalan Ganesha 10 Bandung 40132

Implementasi dan Analisis Perbandingan Algoritma MAC Berbasis Fungsi Hash Satu Arah Dengan Algoritma MAC Berbasis Cipher Block

Algoritma Message Authentication Code (MAC) dan Perbandingan Metode Penyerangannya

Pemanfaatan Metode Pembangkitan Parameter RSA untuk Modifikasi SHA-1

Integrasi Kriptografi Kunci Publik dan Kriptografi Kunci Simetri

Vigènere Chiper dengan Modifikasi Fibonacci

Modifikasi Vigenère Cipher dengan Metode Penyisipan Kunci pada Plaintext

Vigènere Cipher dengan Pembangkitan Kunci Menggunakan Bilangan Euler

Pengembangan dan Implementasi Algoritma Tiger

Aplikasi UMAC pada Instant Messaging

Analisa Perbandingan Algoritma Monoalphabetic Cipher Dengan Algoritma One Time Pad Sebagai Pengamanan Pesan Teks

BAB III PENYANDIAN ONE TIME PAD MENGGUNAKAN SANDI VIGENERE

OZ: Algoritma Cipher Blok Kombinasi Lai-Massey dengan Fungsi Hash MD5

Studi Perbandingan ORYX Cipher dengan Stream Cipher Standard

Pengembangan Fungsi Random pada Kriptografi Visual untuk Tanda Tangan Digital

Pengembangan Vigenere Cipher menggunakan Deret Fibonacci

Implementasi MD5 Hash dengan Random Salt serta Analisis Keamanannya

Implementasi Vigenere Chiper Kunci Dinamis dengan Perkalian Matriks

Venigmarè Cipher dan Vigenère Cipher

BAB Kriptografi

Enkripsi Pesan pada dengan Menggunakan Chaos Theory

MODIFIKASI VIGENERE CIPHER DENGAN MENGGUNAKAN TEKNIK SUBSTITUSI BERULANG PADA KUNCINYA

BAB I PENDAHULUAN. Kerahasiaan dan keamanan saat melakukan pertukaran. data adalah hal yang sangat penting dalam komunikasi data,

Vigènere Transposisi. Kata Kunci: enkripsi, dekripsi, vigènere, metode kasiski, known plainteks attack, cipherteks, plainteks 1.

ANALISA DAN IMPLEMENTASI ALGORITMA TRIANGLE CHAIN PADA PENYANDIAN RECORD DATABASE

Penggabungan Algoritma Kriptografi Simetris dan Kriptografi Asimetris untuk Pengamanan Pesan

BAB 2 LANDASAN TEORI. 2.1 Pengertian Kriptografi

BAB I PENDAHULUAN. Informasi merupakan suatu hal yang sangat penting dalam. kehidupan kita. Seperti dengan adanya teknologi internet semua

Implementasi SHA untuk Komparasi File

Pembangkitan Nilai MAC dengan Menggunakan Algoritma Blowfish, Fortuna, dan SHA-256 (MAC-BF256)

Otentikasi dan Tandatangan Digital (Authentication and Digital Signature)

Fungsi Hash. Bahan Kuliah IF3058 Kriptografi. Rinaldi Munir/Teknik Informatika STEI-ITB

Analisis Kriptografi Klasik Jepang

Analisis Penerapan Algoritma MD5 Untuk Pengamanan Password

Algoritma Enkripsi Citra dengan Pseudo One-Time Pad yang Menggunakan Sistem Chaos

TRIPLE STEGANOGRAPHY

Algoritma QR Code Digital Signature dengan Memanfaatkan Fingerprint

VISUAL KRIPTOGRAFI PADA TEKS

PENGAKSESAN DAUN SECARA RANDOM PADA HASH TREE

Algoritma MAC Berbasis Jaringan Syaraf Tiruan

Tanda Tangan Digital Majemuk dengan Kunci Publik Tunggal dengan Algoritma RSA dan El Gamal

I. PENDAHULUAN. Gambar 1. Komponen- komponen dari sidik jari manusia

Perancangan dan Implementasi Digital Signature pada Dokumen PDF dengan Algoritma Vigenere Artikel Ilmiah

Kriptografi. A. Kriptografi. B. Enkripsi

Aplikasi Perkalian dan Invers Matriks dalam Kriptografi Hill Cipher

Penerapan Vigenere Cipher Untuk Aksara Arab

SKK: ENKRIPSI KLASIK - SUBSTITUSI

Pemanfaatan Vigenere Cipher untuk Pengamanan Foto pada Sistem Operasi Android

Analisis dan Perbandingan Algoritma Whirlpool dan SHA- 512 sebagai Fungsi Hash

Algoritma Kriptografi Klasik Baru

Implementasi ECDSA untuk Verifikasi Berkas Berukuran Besar dengan Menggunakan Merkle Tree

Modifikasi Algoritma Caesar Cipher Menjadi SPICA-XB (Spinning Caesar dengan XOR Binary)

BAB I PENDAHULUAN. Perkembangan teknologi informasi yang semakin pesat. dapat dirasakan hampir di setiap bidang kehidupan. Salah

ALGORITMA MAC BERBASIS FUNGSI HASH SATU ARAH

KEAMANAN DATA DENGAN MENGGUNAKAN ALGORITMA RIVEST CODE 4 (RC4) DAN STEGANOGRAFI PADA CITRA DIGITAL

Studi Perbandingan Secom Cipher Dan VIC Cipher Terhadap Algoritma Kriptography Kunci Simetri Klasik

Studi dan Implementasi Algoritma kunci publik McEliece

Algoritma SAFER K-64 dan Keamanannya

Perbandingan Algoritma Kunci Nirsimetris ElGammal dan RSA pada Citra Berwarna

ALGORITMA RIPEMD. Roland L. Bu'ulölö

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Metode Enkripsi baru : Triple Transposition Vigènere Cipher

Modifikasi Bigram dan Penggunaan Tabel Tiga Dimensi pada Vigenere Cipher

Optimasi Konversi String Biner Hasil Least Significant Bit Steganography

Algoritma Kriptografi Modern (Bagian 2)

PEMANFAATAN KEMBALI KRIPTOGRAFI KLASIK DENGAN MELAKUKAN MODIFIKASI METODE-METODE KRIPTOGRAFI YANG ADA

Add your company slogan STREAM CIPHER. Kriptografi - Week 7 LOGO. Aisyatul Karima, 2012

Kriptografi Modern Part -1

PENERAPAN KRIPTOGRAFI DAN GRAF DALAM APLIKASI KONFIRMASI JARKOM

Modifikasi Ceasar Cipher menjadi Cipher Abjad-Majemuk dan Menambahkan Kunci berupa Barisan Bilangan

Transkripsi:

Pembangkit Kunci Acak pada One-Time Pad Menggunakan Fungsi Hash Satu-Arah Junita Sinambela (13512023) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia sinambelajunita@gmail.com Abstract Salah satu algoritma kriptografi yang tidak dapat dipecahkan adalah menggunakan One-Time Pad (OTP). OTP menggunakan kunci yang benar-benar random dan memiliki panjang yang sama dengan panjang plaintext untuk dapat melakukan enkripsi pesan. Makalah ini berisi alternatif pembangkit kunci random dengan menggunakan fungsi hash satuarah. Kata Kunci One-Time Pad (OTP), fungsi hash, message digest, kunci acak I. PENDAHULUAN Salah satu tantangan dalam dunia kriptografi adalah menciptakan algoritma yang menghasilkan unbreakable cipher. Untuk menghasilkan unbreakable cipher, algoritma kriptografi harus memenuhi syarat yaitu kunci harus benar-benar acak dan panjang kunci harus sama dengan panjang plaintext. Algoritma kriptografi klasik seperti Caesar Cipher, Vigènere Cipher, ataupun Playfair Cipher terbukti sudah dapat dipecahkan kriptanalis, baik menggunakan teknik analisa frekuensi, ataupun melakukan brute force terhadap kemungkinan kunci. Salah satu algoritma yang diyakini mampu menghasilkan unbreakable cipher adalah One-Time Pad (OTP). OTP ditemukan pada tahun 1917 oleh Major Joseph Mauborgne. Adapun pad yang digunakan berisi deretan karakter-karakter kunci yang dibangkitkan secara acak. OTP sendiri merupakan algoritma kriptografi simetri, sehingga penerima pesan harus memiliki salinan pad yang sama dengan pad yang digunakan oleh pengirim pesan untuk melakukan dekripsi pesan agar mendapatkan plaintext. Setiap pad hanya boleh digunakan sekali saja untuk mengenkripsi satu pesan. Oleh karena itu, setiap kali pad digunakan untuk mengenkripsi satu pesan, pad tersebut harus dihanguskan supaya tidak dipakai kembali untuk mengenkripsi pesan yang lain. Hal ini dimaksudkan untuk mencegah kriptanalis menemukan pola enkripsi pada lebih dari satu pesan. Kelemahan algoritma OTP terletak pada ketidakmangkusannya dalam mengenkripsi pesan. Pada OTP, panjang kunci harus sama dengan panjang pesan, sehingga menyulitkan untuk melakukan penyimpanan dan pendistribusian kunci. Secara teoritis, tidak mungkin pengirim dan penerima dapat membangkitkan kunci acak yang sama. Hal ini menyebabkan kunci harus dikirimkan oleh pengirim ke penerima. Maka, untuk mengatasi kelemahan tersebut, pada makalah ini diajukan solusi pembangkitan kunci untuk OTP dengan menggunakan fungsi hash satu-arah. Fungsi hash satu-arah memiliki sifat irreversible, sehingga menyulitkan kriptanalis untuk menebak kunci yang digunakan. II. TEORI SINGKAT A. Algoritma Kriptografi One-Time Pad (OTP) Pad yang digunakan sebagai sumber kunci acak merupakan kunpulan karakter alfabetik. Algoritma kriptografi OTP persis sama dengan algoritma kriptografi Vigènere Cipher. Setiap karakter pada pesan dienkripsi menggunakan bujur sangkar Vigènere. Pada Gambar 1, c i merupakan ciphertext pada indeks ke-i, sedangkan p i merupakan plaintext pada indeks ke-i, dan k i merupakan kunci pada indeks ke-i. Enkripsi pada OTP menggunakan pad dengan panjang kunci sama dengan panjang plaintext. OTP sendiri menggunakan algoritma ini dengan asumsi semua karakter kuncinya adalah huruf alphabet, sehingga enkripsi menggunakan bujur sangkar Vigènere dapat dilakukan. Enkripsi: c i = (p i + k i ) mod 26 Dekripsi: c i = (p i k i ) mod 26 Gambar 1 Algoritma kriptografi Vigènere Cipher versi standard Pada Gambar 2, bagian kolom merepresentasikan kunci, dan bagian baris merepresentasikan karakter plaintext. Untuk Vigènere Cipher jenis standard, kunci dan plaintext hanya dapat berupa alfabet, sehingga implementasi algoritma ini terbatas. Untuk itu, Vigènere Cipher dapat dikembangkan menjadi versi extended, yaitu menggunakan karakter ASCII. Karakter ASCII memiliki 256 jenis karakter yang direpresentasikan dalam desimal yang terurut, sehingga Vigènere Cipher dapat digunakan untuk melakukan enkripsi pesan yang terdiri dari karakter ASCII. Algoritma enkripsi dan dekripsi untuk Vigènere Cipher versi extended (ASCII) dapat dilihat pada Gambar 3.

Message digest pada fungsi hash satu-arah dapat direpresentasikan dalam berbagai bentuk. Perhitungan di dalam fungsi hash satu-arah sebagian besar menggunakan perhitungan byte. Tujuan penghitunag message digest menggunakan fungsi hash satu-arah salah satunya adalah melakukan pengecekan integritas pada suatu pesan, sehingga message digest biasanya diubah dalam bentuk heksadesimal untuk memudahkan pengguna dalam menganalisis. Dalam implementasinya, pengguna dapat mengubah representasi message digest menjadi array of byte, atau dapat di-encode menjadi bentuk lain, salah satunya adalah Base64. Gambar 2 Bujur sangkar Vigènere Enkripsi: c i = (p i + k i ) mod 256 Dekripsi: c i = (p i k i ) mod 256 Gambar 3 Algoritma kriptografi Vigènere Cipher versi extended (ASCII) B. Fungsi Hash Satu-Arah Fungsi hash merupakan fungsi yang menerima masukan string yang panjangnya sembarang dan menghasilkan string yang panjangnya konstan walaupun ukuran string masukannya berbeda-beda. String keluaran dari fungsi hash dinamakan message digest. Fungsi ini digunakan untuk melakukan kompresi terhadap suatu pesan atau berkas digital. Fungsi hash dapat digunakan untuk melakukan pengecekan integritas suatu pesan. Suatu pesan yang diubah dan berbeda dengan pesan aslinya akan memiliki message digest yang berbeda dengan message digest pesan aslinya. Fungsi hash satu-arah (one-way hash function) merupakan fungsi hash yang bekerja satu arah. Prinsip fungsi hash satu-arah adalah message digest suatu pesan tidak dapat dikembalikan lagi menjadi bentuk semula (irreversible). Ada beberapa sifat fungsi hash satu arah, yaitu: a) dapat diterapkan pada blok data berukuran berapa saja, b) menghasilkan message digest dengan panjang konstan, c) mudah dikomputasikan, d) tidak dapat mengembalikan message digest menjadi pesan asalnya, e) tidak menghasilkan message digest yang sama untuk dua pesan yang berbeda, dan f) tidak mungkin mencari pasangan dua pesan sedemikian yang memiliki message digest yang sama. C. Penambahan Salt Pada awalnya, salt digunakan sebagai salah satu indikator aspek keamanan pada password. Kebanyakan implementasi sistem terdistribusi tidak menyimpan password pengguna secara utuh, melainkan menyimpan message digest dari password. Oleh sebab itu, jika ada dua pengguna dengan password yang sama, dapat dipastikan bahwa message digest yang disimpan oleh sistem adalah sama. Untuk mengatasi hal ini, password yang ingin dihitung message digest-nya terlebih dahulu disisipi dengan salt. Salt berupa string yang dapat disisipkan pada bagian tertentu dari password sebelum dihitung message digest-nya. Salt menggunakan string acak dengan ukuran tak terbatas, ditujukan untuk menambah cost yang dibutuhkan untuk melakukan brute force kemungkinan password. Dalam implementasinya, salt tidak dirahasiakan. Salt biasanya disimpan bersamaan dengan message digest dari password yang sudah disisipkan salt. Salt yang digunakan berbeda-beda untuk setiap kali penggunaan. Hal ini menyebabkan sistem harus membangkitkan string acak untuk setiap plaintext yang akan dihitung message digest-nya. Karena salt tidak perlu dirahasiakan, maka sistem dapat melakukan pembangkitan string secara acak untuk dijadikan salt. Setelah digunakan, salt disimpan untuk digunakan nantinya jika dibutuhkan untuk melakukan pengecekan password. III. RANCANGAN PEMBANGKIT KUNCI OTP Dalam membangkitkan kunci acak pada OTP, digunakan fungsi hash satu-arah. Fungsi hash satu-arah memiliki sifat yang dapat dimanfaatkan untuk membangkitkan kunci, yaitu irreversible. Selain itu, untuk membangkitkan kunci OTP dengan ukuran yang sesuai dengan panjang pesan yang ingin dienkripsi, dibutuhkan seed yang ukurannya sesuai dengan keinginan pengguna. Fungsi hash yang digunakan untuk membangkitkan kunci OTP dapat menggunakan fungsi hash satu-arah yang sudah ada, seperti SHA1, MD5, atau kelompok SHA2 (SHA-256, SHA- 521), dan lain-lain. Dalam memilih fungsi hash satu-arah yang akan digunakan, pengguna disarankan untuk memilih fungsi yang dapat menghasilkan perbedaan yang cukup signifikan jika seed yang digunakan diubah sedikit saja. Selain itu, pertimbangan dalam menentukan fungsi hash satu-arah yang akan digunakan adalah panjang message digest yang dihasilkan. Semakin panjang message digest yang dihasilkan, maka semakin sulit dipecahkan.

compute message digest of seed append message digest to result while length of result < length of plaintext add salt to result compute message digest of result that have been salted append message digest to result Gambar 4 Pseudo-code algoritma pembangkit kunci acak pada OTP Seed sebagai masukan pengguna dihitung message digestnya. Message digest ini dimasukkan sebagai kunci acak pada algoritma kriptografi OTP. Kunci acak tersebut kemudian dicek apakah lebih panjang atau sama dengan panjang plaintext. Jika kondisi tersebut tidak terpenuhi, kunci acak akan diberi salt dan kemudian message digest dari hasil penambahan salt tersebut dihitung kembali. Message digest kedua ini akan digabungkan dengan kunci acak pertama. Proses penambahan salt pada kunci acak dan penghitungan message digest ini akan diulang sampai panjang kunci acak lebih dari atau sama dengan panjang plaintext. Saat panjang kunci acak OTP melebihi panjang plaintext, kunci acak yang nantinya akan digunakan sebagai kunci yang valid adalah karakter sebanyak n terakhir pada kunci acak, dengan n merupakan panjang plaintext. Algoritma Ukuran message Ukuran Kolisi digest (bit) blok pesan MD2 128 128 Ya MD4 128 512 Hampir MD5 128 512 Ya RIPEMD 128 512 Ya RIPEMD-128/256 128/256 512 Tidak RIPEMD-160/320 160/320 512 Tidak SHA-0 160 512 Ya SHA-1 160 512 Ada cacat SHA-256/224 256/224 512 Tidak SHA-512/384 512/384 1024 Tidak WHIRLPOOL 512 512 Tidak Gambar 6 Beberapa jenis fungsi hash satu-arah dan ciri-cirinya. Sumber dari [3] B. Penambahan Salt Salt digunakan untuk menciptakan perubahan yang signifikan pada pesan yang akan dihitung message digest-nya. Salt adalah string yang akan disisipkan pada bagian yang sudah ditentukan. Pada algoritma ini, setiap kali message digest akan dihitung, salt ditambahkan oleh pengguna algoritma sesuai keinginan. Bagian ini dapat menjadi alternatif penggunaan pembangkit kunci acak pada OTP ini. IV. EKSPERIMEN DAN ANALISIS Algoritma ini diimplementasikan pada bahasa pemrograman Java, menggunakan fungsi hash SHA1, dan menggunakan extended Vigènere Cipher (untuk karakter ASCII). Hal ini disebabkan karena pada eksperimen yang dilakukan, hasil message digest direpresentasikan dalam bentuk string heksadesimal, sehingga kemungkinan karakter pada kunci acak adalah karakter heksadesimal. Oleh karena itu, Vigènere Cipher versi standard tidak dapat diimplementasikan untuk eksperimen ini. Ada beberapa kasus pengujian dengan seed yang berbeda yang dilakukan, yaitu pada Tabel 1. Tabel 1 Perbandingan beberapa seed dan kunci acak yang dibangkitkan Gambar 5 Skema solusi pembangkit kunci acak pada OTP A. Fungsi Hash Satu-Arah Ada banyak fungsi hash satu-arah yang telah dikembangkan. Beberapa diantaranya masih dipertanyakan dan diuji apakah menimbulkan collision apa tidak. Collision adalah keadaan di mana dua pesan yang berbeda memiliki message digest yang sama. Hal ini dapat terjadi, mengingat ukuran message digest yang konstan berapapun ukuran pesannya. Beberapa fungsi hash satu-arah yang sudah terbukti mengalami collision pada panjang masukan tertentu adalah MD5 dan SHA0. Pada Gambar 6, dapat dilihat bahwa beberapa fungsi hash satu-arah sudah diketahui collision yang terjadi dari hasil eksperimen yang dilakukan. Hal ini mempertegas bahwa ada fungsi hash satu arah yang dapat diserang. No Seed Panjang plaintext 1 nih key 2 nih key1 3 nih key2 4 Nih key Kunci Acak (dalam format heksadesimal) 38 32074fa2018e195f816812 36047446c48834ea 38 f9b40ce14e1cbe4a02634f 24936a3af75a86aa 38 1e73fbbf1b8b5a34002313 75194a73aa51b54c 38 da7c67f7d0650e62d25dea 99a9d6b42b215e3a Pada Tabel 1, dapat dilihat bahwa sedikit perubahan pada seed dapat menyebabkan perubahan yang signifikan pada kunci acak yang dihasilkan. Keseluruhan karakter pada kunci acak terganti. Bahkan, pada kunci pertama dan keempat, perbedaan

seed hanya terletak pada awal huruf pada kalimat saja, dan seluruh karakter pada kunci acak terganti. Tabel 2 Pengujian enkripsi menggunakan extended Vigènere Cipher Plaintext: nih message Seed: Random Key Generated: Ciphertext (dilakukan encode ke Base64): Tabel 3 Pengujian enkripsi menggunakan extended Vigènere Cipher Plaintext: Seed: Random Key Generated: Ciphertext (dilakukan encode ke Base64): nih key 1236047446c48834ea n5ubvpojpaijnoohnaumlczg nih message nih key1 4f24936a3af75a86aa os+avjyipnwiyyakmtsrl8jg Pada Tabel 2 dan Tabel 3, dapat dilihat hasil eksperimen yang dilakukan pada algoritma Vigènere Cipher menggunakan pembangkit kunci acak. Analisis frekuensi hanya dapat dilakukan dengan mengecek frekuensi byte pada ciphertext, dengan melakukan decode dari Base64 terlebih dahulu. Setiap jenis karakter pada plaintext akan dienkripsi dengan kunci yang berbeda, sehingga menutup celah analisis kunci menggunakan analisis frekuensi. Seed yang digunakan untuk melakukan pembangkitan kunci acak berukuran bebas, sehingga menyulitkan kriptanalis untuk melakukan brute force. Seed dengan ukuran apapun akan dapat menghasilkan kunci acak dengan ukuran yang sesuai dengan ukuran plaintext yang akan dienkripsi. Seed dapat berupa array of byte, sehingga berkas apapun juga dapat dimanfaatkan sebagai seed. Untuk melakukan pendistribusian kunci, cukup mendistribusikan seed saja. Seed dapat didistribusikan menggunakan algoritma kunci asimetri, salah satunya adalah RSA. Jika seorang kriptanalis dapat menebak message digest dari seed dengan melakukan brute force saja tanpa menebak seed, maka dapat dipastikan kunci acak dapat diketahui. Hal ini menyebabkan pentingnya penambahan salt pada akhir string yang akan dihitung message digest-nya, sehingga brute force yang dilakukan menjadi semakin lama dan cost untuk melakukan pemecahan kunci acak semakin besar. Salt yang ingin ditambahkan disetujui terlebih dahulu oleh kedua pihak yang ingin berkomunikasi. Hal ini disebabkan karena secara teoretis, tidak mungkin string yang dibangkitkan secara acak pada dua pihak yang berbeda dapat menghasilkan string yang sama persis. Salt disarankan untuk memiliki ukuran yang besar, sehingga kriptanalis yang ingin memecahkan kunci acaknya kesulitan dalam melakukan brute force. Salt juga disarankan berbeda-beda untuk setiap kali penggunaan, sehingga memperbesar cost yang dibutuhkan untuk memecahkan kunci. Salah satu cara untuk memperbesar cost untuk memecahkan kunci adalah dengan mengambil n terakhir dari kunci acak yang telah dibangkitkan untuk melakukan enkripsi plaintext, dengan n adalah panjang plaintext. Jika kriptanalis melakukan brute force dimulai dari bagian terakhir ciphertext, akan mempersulit kriptanalis untuk menebak kunci acak sebelumnya, bahkan setelah mendapatkan kunci acak yang benar dengan ukuran yang sama dengan panjang message digest yang digunakan. Hal ini disebabkan karena sifat fungsi hash satu-arah yang digunakan untuk menghitung message digest, yaitu irreversible. Jika kriptanalis melakukan brute force dari bagian awal ciphertext, maka ia harus menebak kemungkinan awalan yang dihilangkan dari kunci acak yang telah dibangkitkan, sehingga menambah cost. Untuk panjang plaintext dengan kelipatan panjang message digest, cost dapat diperbesar dengan menggunakan salt. OTP sendiri dapat dipecahkan menggunakan brute force semua kemungkinan kunci untuk setiap karakter. Dalam kasus ini, kompleksitas untuk menemukan kunci acak pada suatu cipher adalah O(n), dimana n merupakan panjang plaintext. Untuk melakukan brute force kemungkinan message digest dari seed, kompleksitas untuk menemukan n kunci acak pertama adalah O(n), dimana n merupakan panjang message digest yang digunakan. Untuk menemukan salt yang digunakan juga kemungkinannya tidak berhingga, sehingga memperbesar cost yang dibutuhkan oleh kriptanalis untuk melakukan brute force. Selain itu, adanya ketergantungan antar message digest menunjukkan diterapkannya konsep diffusion dari Shannon pada pembangkit kunci. Hal ini menyebabkan ketergantungan kunci acak pada satu blok sangat bergantung pada kunci acak pada blok sebelumnya. Konsep confusion dari Shannon juga ada pada algoritma ini, karena semua kuncinya dianggap benarbenar acak. Seed yang digunakan untuk melakukan pembangkitan kunci acak berukuran bebas, sehingga menyulitkan kriptanalis untuk melakukan brute force. Seed dengan ukuran apapun akan dapat menghasilkan kunci acak dengan ukuran yang sesuai dengan ukuran plaintext yang akan dienkripsi. Seed dapat berupa array of byte, sehingga berkas apapun juga dapat dimanfaatkan sebagai seed. Untuk melakukan pendistribusian kunci, cukup mendistribusikan seed saja. Seed dapat didistribusikan menggunakan algoritma kunci asimetri, salah satunya adalah RSA. V. KESIMPULAN DAN SARAN Dalam melakukan pembangkitan kunci acak pada algoritma kriptografi OTP, pengguna dapat menggunakan fungsi hash satu-arah. Sifat irreversible pada fungsi hash satu-arah menjadikan fungsi tersebut kandidat yang kuat untuk melakukan pembangkitan kunci acak. Kunci yang dihasilkan tidak

sepenuhnya acak, karena dapat dibangkitkan kembali menggunakan seed yang ditentukan oleh pengguna. Dalam melakukan pemecahan kunci acak, ada dua cara yang dapat digunakan oleh kriptanalis, yaitu brute force dan analisis keterkaitan antar message digest. Namun, karena adanya penambahan salt, mengakibatkan keterkaitan antar message digest menjadi sulit dilakukan, karena ada konsep confusion dan diffusion yang diterapkan pada pembangkit kunci acak. Maka, untuk menggunakan algoritma pembangkit kunci ini, sebaiknya digunakan fungsi hash satu-arah yang diketahui tidak memiliki collision, message digest yang dihasilkan berukuran cukup panjang, dan salt yang digunakan cukup kuat. VI. UCAPAN TERIMA KASIH Penulis mengucapkan terima kasih kepada Bapak Rinaldi Munir sebagai dosen mata kuliah IF4020 Kriptografi yang telah membimbing dalam perkuliahan sehingga penulis dapat menyelesaikan makalah ini. Ucapan terima kasih juga penulis sampaikan kepada seluruh pihak yang telah membantu penulis dalam penulisan makalah ini. Semoga makalah ini dapat bermanfaat pada bidang keilmuan informatika, khususnya pada bidang kriptografi. REFERENSI [1] http://techglimpse.com/sha256-hash-certificate-openssl/, diakses pada 18 Mei 2016 [2] https://crackstation.net/hashing-security.htm#salt, diakses pada 18 Mei 2016 [3] Munir, Rinaldi (2015). Diktat kuliah IF4020 : Kriptografi. Informatika ITB PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 19 Mei 2015 Junita Sinambela (13512023)