Senin, 01 Oktober 2012

Data Encryption Standard (DES)

Data Encryption Standard (DES)

Dalam bidang kriptografi, Data Encryption Standard (DES) adalah sebuah algoritma enkripsi sandi blok kunci simetri dengan ukuran blok 64-bit dan ukuran kunci 56-bit.
DES untuk saat ini sudah dianggap tidak aman lagi. Penyebab utamanya adalah ukuran kuncinya yang sangat pendek (56-bit). Sejak beberapa tahun yang lalu DES telah digantikan oleh Advanced Encryption Standard (AES).
DES, atau juga dikenal sebagai Data Encryption Algorithm (DEA) oleh ANSI dan DEA-1 oleh ISO, merupakan algoritma kriptografi simetris yang paling umum digunakan saat ini. Sejarahnya DES dimulai dari permintaan pemerintah Amerika Serikat untuk memasukkan proposal enskripsi. DES memiliki sejarah dari Lucifer1, enkripsi yang dikembangan di IBM kala itu. Horst Feistel merupakan salah satu periset yang mula-mula mengembangkan DES ketika bekerja di IBM Watson Laboratory di Yorktown Heights, New York. DES baru secara resmi digunakan oleh pemerintah Amerika Serikat (diadopsi oleh National Bureau of Standards) di tahun 1977. Ia dikenal sebagai Federal Information Processing Standard 46 (FIPS PUB46).
Aplikasi yang menggunakan DES antara lain :
  • enkripsi dari password di sistem UNIX
  • berbagai aplikasi di bidang perbankan
Memecahkan DES
DES merupakan block chiper yang beroperasi dengan menggunakan blok berukuran 64-bit dan kunci berukuran 56-bit. Brute force attack dengan mencoba segala kombinasi membutuhkan 256 kombinasi atau sekitar 7x 1017 atau 70 juta milyar kombinasi.
DES dengan penggunaan yang biasa (cookbook mode) dengan panjang kunci 56 bit saat ini sudah dapat dianggap tidak aman karena sudah berhasil dipecahkan dengan metoda coba-coba (brute force attack).
Ada berbagai group yang mencoba memecahkan DES dengan berbagai cara. Salah satu group yang bernama distributed.net menggunakan teknologi Internet untuk memecahkan problem ini menjadi sub-problem yang kecil (dalam ukuran blok). Pengguna dapat menjalankan sebuah program yang khusus dikembangkan oleh tim ini untuk mengambil beberapa blok, via Internet, kemudian memecahkannya di komputer pribadinya. Program yang disediakan meliputi berbagai operating system seperti Windows, DOS, berbagai variasi Unix, Macintosh. Blok yang sudah diproses dikembalikan ke distributed.net via Internet. Dengan cara ini puluhan ribu orang, termasuk penulis, membantu memecahkan DES. Mekanisme ini dapat memecahkan DES dalam waktu 30 hari.
Sebuah group lain yang disebut Electronic Frontier Foundation (EFF) membuat sebuah komputer yang dilengkapi dengan Integrated Circuit chip DES cracker. Dengan mesin seharga US$50.000 ini mereka dapat memecahkan DES 56-bit dalam waktu rata-rata empat (4) sampai lima (5) hari. DES cracker yang mereka kembangkan dapat melakukan eksplorasi keseluruhan dari 56-bit keyspace dalam waktu sembilan (9) hari. Dikarenakan 56-bit memiliki 216 (atau 65536) keyspace dibandingkan DES dengan 40-bit, maka untuk memecahkan DES 40-bit hanya dibutuhkan waktu sekitar 12 detik. Dikarenakan hukum average, waktu rata-rata untuk memecahkan DES 40-bit adalah 6 detik.
Contoh peragaan client distributed.net untuk Windows 95 :
Perlu diingat bahwa group seperti EFF merupakan group kecil dengan budget yang terbatas. Dapat dibayangkan sistem yang dimiliki oleh National Security Agency (NSA) dari pemerintah Amerika Serikat. Tentunya mereka dapat memecahkan DES dengan lebih cepat.
Hash function – integrity checking
Salah satu cara untuk menguji integritas sebuah data adalah dengan memberikan “checksum” atau tanda bahwa data tersebut tidak berubah. Cara yang paling mudah dilakukan adalah dengan menjumlahkan karakter-karakter atau data-data yang ada sehingga apabila terjadi perubahan, hasil penjumlahan menjadi berbeda. Cara ini tentunya mudah dipecahkan dengan menggunakan kombinasi data yang berbeda akan tetapi menghasilkan hasil penjumlahan yang sama.
Pada sistem digital biasanya ada beberapa mekanisme pengujian integritas seperti antara lain :
  • parity checking
  • checksum
  • hash function
            Fungsi Hash (hash function) merupakan fungsi yang bersifat satu arah dimana jika kita masukkan data, maka dia akan menghasilkan sebuah “checksum” atau “fingerprint” dari data tersebut. Sebuah pesan yang dilewatkan ke fungsi hash akan menghasilkan keluaran yang disebut Message Authenticated Code (MAC). Dilihat dari sisi matematik, hash function memetakan satu set data ke dalam sebuah set yang lebih kecil dan terbatas ukurannya. Mari kita ambil sebuah contoh sederhana, yaitu fungsi matematik modulus (atau dalam pemrograman menggunakan mod). Hasil dari operasi mod adalah sisa pembagian bilangan bulat (integer). Sebagai contoh, “11 mod 7” menghasilkan nilai 4, karena 11 dibagi 7 menghasilkan nilai 1 dan sisanya adalah 4. Contoh lain “17 mod 7” menghasilkan bilangan 3, karena 17 dibagi 7 menghasilkan 2 dan sisanya adalah 3. Demikian pula “18 mod 7” akan menghasilkan 4. Dalam sehari-hari, operasi modulus kita gunakan dalam penunjukkan jam, yaitu modulus 12. Kalau kita perhatikan contoh di atas. Hasil dari opreasi mod tidak akan lebih besar dari angka pembaginya. Dalam contoh di atas, hasil “mod 7” berkisar dari 0 ke 6. Bilangan berapapun yang akan di-mod-kan akan menghasilkan bilangan dalam rentang itu. Tentu saja angka 7 bisa kita ganti dengan angka lain, misalnya sebuah bilangan prima yang cukup besar sehingga rentang bilangan yang dihasilkan bisa lebih besar. Hal kedua yang perlu mendapat perhatian adalah bahwa diketahui hasil operasi modulus, kita tidak tahu bilangan asalnya. Jadi kalau diberitahu bahwa hasil operasi modulus adalah 4, bilangan awalnya bisa 11, 18, 25, dan seterusnya. Ada banyak sekali. Jadi, dalam aplikasinya nanti agak sukar mengkonstruksi sebuah pesan asli jika kita hanya tahu hasil dari fungsi hashnya saja. Tentu saja operator mod sendirian tidak dapat digunakan sebagai fungsi hash yang baik. Ada beberapa persyaratan agar fungsi hasil baru dapat digunakan secara praktis. Misalnya, rentang dari hasil fungsi hash harus cukup sehingga probabilitas dua pesan yang berbeda akan menghasilkan keluaran fungsi hash yang sama. Perlu ditekankan kata “probabilitas”, karena secara teori pasti akan ada dua buah data yang dapat menghasilkan keluaran fungsi hash yang sama1. Hal ini disebabkan rentang fungsi hash yang sangat jauh lebih kecil dibandingkan space dari inputnya. Tapi hal ini masih tidak terlalu masalah karena untuk membuat dua pesan yang samasama terbaca (intelligible) dan memiliki keluaran fungsi hash yang sama tidaklah mudah. Hal yang terjadi adalah pesan (data) yang sama itu dalam bentuk sampah (garbage). Syarat lain dari bagusnya sebuah fungsi hash adalah perubahan satu karakter (dalam berkas teks) atau satu bit saja dalam data lainnya harus menghasilkan keluaran yang jauh berbeda, tidak hanya berbeda satu bit saja. Sifat ini disebut avalanche effect. Ada beberapa fungsi hash yang umum digunakan saat ini, antara lain:
• MD5
• SHA (Secure Hash Algorithm)

1 komentar:

  1. Useful information about data encryption standard is posted above. After searching this detail for hours finally I found this article. Can you please share more about the hashing algorithms ?
    electronic signature

    BalasHapus