Stream Cipher Juni 19, 2008
Posted by cryptobounce in Kriptografi.Tags: Kriptografi Simetrik
add a comment
Ok, karena sebelumnya telah dijelaskan tentang block cipher. Maka, pada kesempatan kali ini saya akan menjelaskan mengenai stream cipher…
Langsung aj ya…:-)
Stream Cipher merupakan algoritma kriptografi simetrik yang mengenkripsi plaintext 1 bit/byte per satuan waktu. Pada umumnya, fungsi yang digunakan untuk enkripsi pada stream cipher adalah XOR. Bit plaintext di-XOR dengan rangkaian kunci yang dihasilkan oleh pseudorandom key generator. Karena fungsi yang digunakan untuk enkripsi hanyalah XOR, maka kekuatan dari stream cipher ini terletak pada rangkaian kunci yang digunakan untuk enkripsi.
Rangkaian kunci yang digunakan pada stream cipher bersifat pseudorandom. Artinya rangkaian kunci bersifat semi acak, bit selanjutnya pada rangkaian kunci ini tidak dapat diprediksikan tanpa mengetahui kunci input yang digunakan oleh pseudorandom key generator.
Stream cipher hapir sama dengan seperti one time pad. Perbedaan antara keduanya adalah pada stream cipher rangkaian kunci yang digunakan bersifat pseudorandom (semi acak) sedangkan rangkaian kunci yang digunakan pada one time pad bersifat trully random (benar-benar acak).
Stream cipher terdiri dari 2 macam, yaitu:
- Synchronous Stream cipher
Merupakan algoritma stream cipher dimana rangkaian kunci yang digunakan untuk enkripsi dihasilkan secara independen terhadap plaintext dan ciphertext. Artinya Dalam menggenerate rangkaian kunci, hanya dipengaruhi oleh kunci input pada pseudorandom key generator dan tidak dipengaruhi oleh plaintext dan ciphertext.
- Asynchronous Stream Cipher
Merupakan algoritma stream cipher dimana rangkaian kunci yang digunakan untuk enkripsi, dihasilkan oleh pseudorandom key generator akan dipengaruhi oleh ciphertext sebelumnya. Artinya, dalam menghasilkan rangkaian kunci, pseudorandom key generator tidak hanya membutuhkan masukan berupa kunci input, tetapi juga sejumlah bit dari ciphertext yang dihasilkan sebelumnya.
Mendesain suatu algoritma stream cipher bukanlah hal yang mudah, karena perlu memperhatikan beberapa hal sebagai berikut:
- Rangkaian kunci yang digunakan untuk proses enkripsi sebaiknya memiliki periode yang panjang, atau bila perlu, panjang periode lebih besar dibandingkan panjang plaintext.
- Sebaiknya rangkaian kunci yang dihasilkan oleh pseudorandom key generator sebisa mungkin memiliki kriteria/sifat yang hampir mendekati trully random. Misalnya jum;lah bit 1 dan 0 hampir sama.
- Kunci input yang digunakan oleh Pseudorandom key generator sebaiknya memiliki panjang bit >128. Hal ini dimaksudkan untuk menghindari brute force attack.
So, udah siap untuk mendesain algoritma stream cipher???
Block Cipher Juni 19, 2008
Posted by cryptobounce in Kriptografi.Tags: Algoritma Kriptografi, A, Kriptografi Simetrik
add a comment
Definisi
Blok cipher merupakan algoritma kriptografi simetrik yang mengenkripsi satu blok plaintext dengan jumlah bit tertentu dan menghasilkan blok ciphertext dengan jumlah bit yang sama. Misalkan ukuran blok plaintext yang dienkripsi adalah 64 bit, maka akan menghasilkan ciphertext yang berukuran 64 bit.
Pada umumnya, setiap blok plaintext yang diproses berukuran 64 bit. Namun, seiring dengan kemajuan teknologi, ukuran blok plaintext berkembang menjadi 128 bit, 256 bit bahkan menjadi 512 bit. Dalam proses enkripsinya, block cipher menggunakan beberapa fungsi matematika, diantaranya fungsi permutasi dan fungsi substitusi, sehingga konfusi (confussion) dan difusi (diffusion) pada block cipher terpenuhi.
Istilah konfusi dan difusi diperkenalkan oleh Claude Shannon pada tahun 1949. Menurutnya, konfusi dan difusi merupakan hal yang harus diperhatikan dalam sistem kriptografi, karena dapat mencegah cyptanalysis, khususnya yang berbasis analisis statistik (Cryptography and Network Security-William Stalling). Konfusi adalah mengaburkan/membuat hubungan antara ciphertext dan kunci enkripsi sekompleks mungkin sehingga tidak ada hubungan statistik antara keduanya. Hal ini dapat mencegah attacker untuk mendapatkan kunci enkripsi. Konfusi dapat diusahakan dengan menggunakan fungsi substitusi. Sedangkan difusi adalah menyebarkan struktur plaintext pada ciphertext, sehingga tidak ada hubungan statistik antara keduanya. Setiap digit plaintext mempengaruhi sejumlah digit ciphertext, atau dengan kata lain, setiap digit ciphertext dipengaruhi oleh sejumlah digit plaintext. Difusi dapat diusahakan dengan menggunakan fungsi permutasi pada proses enkripsi.
Pada block cipher, dikenal istilah feistel cipher. Feistel Cipher merupakan iterated block cipher, dimana ciphertext dihasilkan dari plaintext dengan mengulang transformasi yang sama untuk setiap round. Feistel ciphers disebut juga DES-like ciphers.
Pada feistel cipher, sebelum dienkripsi, text dibagi menjadi dua bagian, biasanya disebut dengan bagian kanan dan bagian kiri. Salah satu bagian dari text tersebut akan diproses pada fungsi round f menggunakan sebuah subkey dan output-nya di-XOR dengan bagian yang lain. Kemudian, kedua bagian dari text tersebut ditukar (swapped). Setiap round memiliki struktur yang sama kecuali pada round terakhir, dimana pada round ini tidak terjadi pertukaran kedua bagian text.
Keunikan dari feistel cipher adalah struktur enkripsi dan dekripsinya bersifat identik, walaupun subkunci yang digunakan selama enkripsi pada setiap round diambil berdasarkan urutan terbalik pada proses dekripsi. Tidak semua iterative cipher adalah feistel cipher, meskipun struktur enkripsi dan dekripsinya sama, salah satu contohnya adalah IDEA (International Data Encryption Algorithm).
Mode Operasi
Seperti telah diketahui sebelumnya bahwa block cipher beroperasi pada blok plaintext dan ciphertext. Biasanya ukuran bloknya adalah 64 bit. Operasi pada blok dengan 64 bit (8 byte) ini tidak selalu aman dan rentan terhadap cryptanalysis, misalnya plaintext yang sama selalu menghasilkan ciphertext yang sama dan teknik ini sangat rentan terhadap replay attack. Untuk menghindari hal tersebut, maka pada block cipher digunakan mode operasi. Mode Operasi yang biasa digunakan adalah:
- Electronic Codebook Mode
Mode Operasi block cipher yang paling sederhana adalah Electronic Codebook Mode (ECB). Pada mode operasi ini, pola dari plaintext akan diketahui, karena blok plaintext yang sama selalu menghasilkan blok ciphertext yang sama. Sehingga jika cryptanalyst mengetahui bahwa hasil enkripsi blok plaintext “8d226acd” adalah “1c7ed351″, maka dia dapat dengan mudah mendekripsi ciphertext dengan bentuk yang sama, setiap kali ciphertext tersebut terlihat di dalam message. Kelemahan ini berpeluang besar terjadi pada awal dan akhir dari message, karena pada header dan footer berisi informasi mengenai pengirim (sender), penerima (receiver), tanggal dan lain sebagainya.
- Cipher Block Chaining
Mode operasi Cipher Block Chaining (CBC) merupakan salah satu mode operasi block cipher yang menggunakan vektor inisialisasi (initialitation vector/IV) dengan ukuran tertentu (ukurannya sama dengan satu blok plaintext). Pada mode operasi ini plaintext dibagi menjadi beberapa blok, kemudian masing-masing blok dienkripsi dengan ketentuan blok plaintext pertama dienkripsi lebih dahulu. Sebelum dienkripsi, plaintext di-XOR dengan IV. Lalu, hasil XOR tersebut dienkripsi hingga menghasilkan ciphertext. Selanjutnya, ciphertext tersebut digunakan sebagai IV untuk proses penyandian blok plaintext selanjutnya.
Mode operasi CBC menutupi kelemahan dari mode operasi ECB, karena pada CBC dapat menyembunyikan pola dari plaintext. Mengapa demikian? Karena sebelum dienkripsi, plaintext di-XOR dengan IV atau ciphertext sebelumnya, sehingga plaintext yang sama belum tentu menghasilkan ciphertext yang sama, kecuali jika memiliki IV/ciphertext sebelumnya yang sama.
Kelemahan dari CBC adalah untuk mendekripsi ciphertext, dipengaruhi oleh ciphertext sebelumnya. Jika ada kesalahan pada ciphertext sebelumnya, maka ciphertext selanjutnya pun akan salah.
- Cipher Feed Back Mode
Mode Operasi Cipher Feed Back (CFB) merupakan mode operasi blok cipher yang hampir sama dengan CBC. Keduanya sama-sama menggunakan IV. Yang membedakan dari keduanya adalah pada CFB, IV/ciphertext sebelumnya dienkripsi menggunakan block cipher dan hasilnya di-XOR dengan plaintext yang akan dienkripsi. Dengan kata lain, mode CFB merupakan stream cipher yang didapatkan dari blok cipher, dimana algoritma block cipher digunakan untuk menggenerate kunci, yang kemudian hasilnya di-XOR dengan plaintext.
- Output Feed Back Mode
Mode operasi Output Feed Back (OFB) memiliki struktur yang hampir sama dengan CFB, perbedaannya terletak pada input yang digunakan untuk proses enkripsi. Pada CFB, ciphertext sebelumnya digunakan untuk IV pada proses enkripsi sebelumnya. Namun pada OFB, input yang digunakan untuk enkripsi selanjutnya adalah hasil enkripsi ciphertext sebelum di-XOR dengan plaintext.
Ok, gmn? masih penasaran??? Let’s check it out…:-)
El Gamal Juni 13, 2008
Posted by cryptobounce in Kriptografi.Tags: Contoh Algoritma Kriptografi
1 comment so far
Berikut ini akan dibahas mengenai salah satu contoh dari algoritma asimetrik, yaitu El Gamal Public Key Encryption.
Key Generation
- Tentukan sebuah bilangan prima p dan sebuah generator a dari multiplicative group Z(p) yang merupakan grup perkalian bilangan bulat modulo p.
- Tentukan sebuah bilangan bulat acak a, dengan ketentuan 1 = a = p-2 dan hitung a^a mod p.
- Maka yang merupakan kunci publik adalah (p, a, a^a)
- Sedangkan kunci privat adalah a
Enkripsi
- Diketahui kunci publik (p, a, a^a)
- Ubah message (plaintext) sebagai integer m dalam range (0, 1, …, p-1)
- Tentukan bilangan bulat acak k
- Hitung x = a^k mod p dan y = m(a^a)^k mod p
- Kirim ciphertext c = (x,y)
Dekripsi
- Gunakan kunci privat a untuk menghitung x^(p-1-a) mod p
- Dapatkan m dengan menghitung (x^(-a)).y mod p
Gimana? gampang khan???So…read for more….;-)
Fungsi Hash Juni 13, 2008
Posted by cryptobounce in Kriptografi.Tags: Algoritma Kriptografi
add a comment
Fungsi Hash merupakan sebuah fungsi yang memetakan input dengan panjang bit yang bervariasi (arbitrary length) menjadi output dengan panjang tetap (fixed length). Istilah hash function berasal dari ilmu komputer (computer science), yang berarti sebuah fungsi yang digunakan untuk mengkompress suatu string yang memiliki panjang bervariasi menjadi string dengan panjang tetap. Hash function digunakan untuk mengurangi memory yang dibutuhkan untuk menyimpan suatu file.
Di dalam kriptografi, fungsi hash dibedakan menjadi dua macam, yaitu fungsi hash yang menggunakan kunci (keyed hash function) dan fungsi hash yang tidak menggunakan kunci (unkeyed hash function). Penggunaan fungsi hash di dalam kriptografi digunakan untuk otentikasi data dan menjamin keutuhan data (data integrity)
Mengapa bisa begitu??
Ketika suatu message dikirimkan melalui suatu jalur komunikasi, maka terdapat berbagai kemungkinan yang menyebabkan message tersebut rusak ataupun berubah ketika sampai ke penerima. Hal ini dapat dicegah dengan mengikutsertakan/melampirkan hasil nilai hash (hash value) pada message yang kita kirimkan. Ketika message tersebut sampai ke pengirim, dia dapat menghitung nilai hash dari message yang diterimanya dan membandingkan dengan nilai hash yang telah dilampirkan oleh pengirim pada message tersebut. Jika hasil hashnya bernilai sama, maka message yang diterima oleh si penerima merupakan message yang benar. Namun, sebaliknya, jika nilai hashnya tidak sama, maka message yang diterima oleh si penerima bukan message yang sebenarnya. Artinya, ada kemungkinan message tersebut berubah selama transmisi ataupun karena ada “seseorang” yang sengaja mengubah pesan tersebut…;-)
Membuat/mendesain suatu fungsi hash tidaklah mudah. Terdapat beberapa hal yang perlu diperhatikan dalam mendesain fungsi hash, supaya fungsi hash yang dihasilkan bisa dikategorikan aman secara kriptografi. Persyaratannya adalah sebagai berikut:
- H dapat digunakan untuk blok data dengan ukuran yang bervariasi;
- H menghasilkan output dengan panjang yang tetap;
- H(x) mudah dihitung jika diberikan sembarang nilai x, dan H(x) mudah diimplementasikan pada software dan hardware;
- Jika diberikan nilai h, maka secara perhitungan tidak mungkin untuk mendapatkan x sehingga H(x)=h. Di dalam beberapa literatur, sifat ini disebut “one way property“
- Jika diberikan x, maka secara perhitungan tidak mungkin untuk mendapatkan y?x dimana H(y)=H(x). Sifat ini disebut “weak collisiion resistant“
- Secara prhitungan tidak mungkin untuk mendapatkan pasangan x,y sehingga H(x)=H(y). Sifat ini disebut “strong collision resistant“.
Keterangan:
H(x)=h
H = jenis fungsi hash
x = data yang menjadi input fungsi hash
h = nilai hash (hash value)
Contoh hash function adalah sebagai berikut:
SHA-1
MD-5
MAC (Message Authentication Code), yang merupakan keyed hash function.
Dll….:-)
Mau tau contoh konkrit dari fungsi hash??? baca dech artikel selanjutnya…..;-)
Algoritma Asimetrik Juni 13, 2008
Posted by cryptobounce in Kriptografi.Tags: Algoritma Kriptografi
add a comment
Algoritma kriptografi asimetrik (Algoritma asimetrik) merupakan algoritma kriptografi yang menggunakan dua buah kunci yang berbeda untuk proses enkripsi dan dekripsi. Kunci yang digunakan untuk enkripsi disebut kunci publik sedangkan kunci yang digunakan untuk dekripsi disebut kunci privat. Dinamai kunci publik karena nilai kunci ini bisa diketahui oleh siapa saja. Maksudnya jika kunci ini diketahui oleh semua orang, tidak akan mempengaruhi keamanan dari informasi yang akan dikirim. Namun, jika kunci privat diketahui oleh banyak orang, maka keamanan informasi tidak akan terjamin. Oleh sebab itu, kunci privat hanya diketahui oleh orang-orang tertentu (pihak yang berwenang).
Pada awalnya, algoritma asimetrik hadir untuk mengatasi masalah yang terjadi pada algoritma simetrik (key manajemen). Namun, seiring dengan perkembangan zaman, algoritma asimetrik digunakan untuk enkripsi dan dekripsi data.
Sebenarnya, dua buah kunci yang digunakan pada algoritma asimetrik (kunci publik dan kunci privat) didapatkan melalui suatu perhitungan. Kunci privat dihitung menggunakan perhitungan yang melibatkan kunci publik dan sejumlah parameter tertentu, sehingga seseorang yang hanya mengetahui kunci publik saja akan sulit bahkan tidak mungkin untuk menghitung kunci privat.
Pada umumnya, algoritma asimetrik mengaplikasikan beberapa persoalan pada matematika, seperti pemfaktoran bilangan integer yang sangat besar, masalah logaritma diskrit (discrete logarithm problem), elliptic curve, bilangan kompleks (complex number) dan sebagainya.
Contoh dari algoritma asimetrik adalah
RSA;
Gimana? Udah ngerti blm?? klo ada yang belum dimengerti, silakan tanya lebih lanjut…;-)