Arsip untuk crypto

Membandingkan keamanan/kekuatan algoritma sandi (kripto)

Ini adalah lanjutan dari tulisan sebelumnya: keamanan sistem kripto

Lagi-lagi, saya akan mulai dari definisi. Maklum…, masih bingung. Posting sebelumnya telah menjelaskan tiga definisi keamanan sistem kripto menurut Shannon. Di sini, saya akan menuliskan definisi yg lebih umum (merujuk ke Ritter’s Crypto Glossary):

Definisi_1 Keamanan atau kekuatan sistem kripto adalah: kemampuan sistem untuk menanggulangi berbagai serangan terhadapnya agar tujuan pengamanan (misalnya: menjaga kerahasiaan/secrecy/confidentiality) dapat tercapai.

Definisi_2 Ukuran keamanan/kekuatan sistem kripto adalah: upaya dan sumber daya minimum yang diperlukan untuk mematahkan keamanan sistem kripto tersebut.

Jadi, jika saya memiliki dua cipher, sebut saja A dan B, bagaimana saya menentukan cipher mana yg lebih aman/kuat? Dari definisi_2, kita harus menentukan cipher mana yg membutuhkan upaya atau sumber daya minimum yang paling besar untuk membongkarnya. Jika kita membutuhkan waktu 5 tahun untuk membongkar cipher A dan 3 tahun untuk membongkar cipher B dengan maka cipher A lebih kuat dari cipher B.

Selanjutnya, bagaimana cara kita menentukan sumber daya minimum yang dibutuhkan untuk membongkar cipher A?

Karena yg kita cari adalah sumber daya minimum, maka, sebelumnya kita harus menemukan teknik atau cara serangan yang paling efisien diantara seluruh serangan yg mungkin dilakukan. Kita sebut saja serangan paling efisien ini sebagai ult_attack (kependekan dari ultimate attack). Kemudian, kita hitung sumber daya yg dibutuhkan utk melakukan ult_attack tersebut dan hasilnya kita tetapkan sebagai ukuran kekuatan cipher A. Hal yg sama kita lakukan jg terhadap cipher B sehingga kita dapat membandingkan kekuatan dua cipher tersebut.

Bagaimana kita menemukan teknik atau cara serangan yg mungkin terhadap sebuah cipher?

Kegiatan membongkar keamanan cipher disebut sebagai cryptanalysis (kriptanalisis atau analisa sandi). Tekniknya bermacam-macam dan akan saya bahas dalam tulisan lain. Kita ambil contoh, bahwa sekelompok ahli kriptanalisis telah menemukan lima teknik serangan terhadap cipher A. Teknik serangan ini diberi nama attackA_1, attackA_2,…, attackA_5.

Apakah serangan paling efisien terhadap cipher A, yaitu ult_attackA, dapat kita tentukan dari lima macam serangan tersebut.

Namun, pertanyaan yg seharusnya diajukan sebelum pertanyaan di atas adalah:

Apakah tidak ada teknik serangan selain lima teknik serangan tersebut?

Disiplin ilmu kriptanalisis ternyata tidak dapat menjawab pertanyaan yg terakhir. Singkatnya, para ahli itu hanya mengatakan bahwa mereka telah menemukan 5 jenis serangan yg mungkin. Penemuan itu tidak dapat menafikan kemungkinan adanya serangan lain. Jadi, kita dapat saja menentukan ult_attack, namun metodologi kriptanalisis sama sekali tidak dapat menjamin ketiadaan jenis serangan lain yang lebih efisien daripada ult_attack.

Kembali lagi ke cipher A dan cipher B. Kekuatan dua cipher tersebut hanya dapat dibandingkan secara relatif berdasarkan beberapa teknik serangan yang telah diketahui. Kita akan mengulang kembali langkah-langkah analisis di atas:

Untuk cipher A. Pakar kriptanalisis telah menemukan 5 teknik serangan terhadap cipher A, yaitu: attackA_1,… ,attackA_5. Dari kelimanya, kita dapat menentukan teknik mana yg paling efisien, sebut saja sebagai ult_attackA.

Untuk cipher B. Pakar kriptanalisis telah menemukan 3 teknik serangan terhadap cipher B, yaitu: attackB_1, attackB_2, attackB_3. Dari ketiganya, kita dapat menentukan teknik mana yg paling efisien, sebut saja sebagai ult_attackB.

Perbandingan kekuatan cipher A dan B dapat dilakukan dengan membandingkan besarnya upaya atau sumber daya yg diperlukan untuk melakukan ult_attackA dan ult_attackB. Cipher yg lebih kuat adalah cipher yg membutuhkan sumber daya yg lebih besar.

Note:

cipher : merupakan sistem kripto yg dipergunakan untuk mengacak/menyandikan/mengenkripsi data.

Komentar (11)

Keamanan sistem kripto

Saat ini saya sedang mencoba menggali mengenai apa saja syarat-syarat yg harus dipenuhi agar sebuah sistem kripto ‘aman’? Bingung juga…, karena sumber (textbook atau paper) yg berbeda seringkali mendaftar syarat-syarat yg berbeda. Karena bingung, maka saya coba tulis di sini saja. Barangkali ada pembaca yg dapat memberikan petunjuk :D .

Trus, karena belum nemu kriteria, maka saya akan mulai dulu dengan menuliskan apa yg dimaksudkan dengan ‘aman’ dalam konteks sistem kripto.

Mengenai keamanan sistem kripto, kita dapat memahaminya dengan merujuk pada ide-ide Shannon mengenai keamanan sistem kripto (dipublikasikan dalam Communication Theory of Secrecy Systems, 1949). Menurut Shannon, ada tiga macam keamanan dalam sistem kripto:

  1. Keamanan secara komputasional (computational security). Ukuran keamanan ini menyatakan seberapa besar upaya/effort komputasi yang diperlukan untuk memecahkan suatu sistem kripto. Persisnya, kita menyatakan sebuah sistem kripto aman secara komputasional jika algoritma terbaik (paling efisien) untuk membongkarnya memerlukan sedikitnya sejumlah N operasi, dengan N merupakan bilangan yang sangat besar. Masalah dalam definisi ini adalah: sangat sulit menemukan algoritma terbaik ataupun membuktikan bahwa suatu algoritma merupakan algoritma terbaik. Dalam praktek, peneliti menyatakan keamanan komputasional sistem kripto hanya terhadap berbagai tipe serangan tertentu.
  2. Provable security. Yaitu membuktikan keamanan dengan cara mereduksi problem keamanan ini ke dalam problem lain. Dengan kata lain, kita harus menunjukkan bahwa: jika suatu sistem kripto berhasil dipecahkan dengan suatu cara, maka problem lain (yg berdasarkan kajian yg kokoh telah dinyatakan sulit utk dipecahkan) juga dapat dipercahkan. Jadi, ‘aman’ dlm pengertian ini adalah aman relatif terhadap problem lain, bukan aman secara absolut.
  3. Unconditional security. Sistem kripto dinyatakan aman dalam pengertian ini jika tidak dapat dipecahkan meskipun dengan upaya dan sumber daya komputasi yg tidak terbatas.

Jadi, klaim keamanan sistem kripto harus menunjukkan dengan jelas tipe keamanannya. Karena terdapat berbagai jenis tipe serangan yg berbeda, maka keamanan (atau ketidakamanan) juga harus dinyatakan berdasarkan tipe serangan tersebut.

Misal: vigenere cipher (salah satu jenis cipher klasik) tidak aman secara komputasional terhadap ciphertext-only attack.

Sumber: Cryptography; Theory and Practice, Douglas Stinson

Komentar (6)

Good vs Bad Cryptography

Tidak sengaja nemu artikel lama dan menarik dari Bruce Schneier tentang kriptografi. Artikel ini memberikan beberapa panduan untuk membedakan algoritma kriptografi yang aman dan yang tidak. Singkatnya, Bruce memaparkan tanda-tanda apa saja yang membuat sebuah algoritma kriptografi layak untuk diragukan keamanannya. Artikel ini tampaknya ditulis oleh Bruce untuk menyikapi munculnya berbagai perangkat lunak kriptografi komersial yang memberikan klaim keamanan yang berlebihan. Berikut ini adalah beberapa hal (tidak semua saya tulis kembali) yang harus diperhatikan menurut Bruce (dengan beberapa komentar saya):

Pertama, kriptografi yg dibangun dengan metode matematika baru, misalnya chaos, neural-network dan cellular automata. Tiga hal ini memang belum lazim dipergunakan oleh komunitas kriptografi saat ini. Menurut saya: metode matematika baru seharusnya secara terbuka harus diterima oleh komunitas kriptografi dengan syarat algoritma tersebut harus dapat membuktikan klaim-klaim keamanannya berdasarkan beberapa kriteria yang telah dipergunakan oleh komunitas kriptografi. Penolakan terhadap metode matematikan baru tanpa kecuali dapat menghambat kemajuan riset kriptografi secara keseluruhan.

Kedua, proprietary cryptography. Yaitu algoritma kriptografi yang disembunyikan. Perusahaan yang memproduksinya menolak membuka algoritma kriptografi karena beberapa alasan, mungkin keamanan mungkin juga karena proses patent yang belum selesai. Apapun alasannya, kita harus menghindari produk kriptografi jenis ini. Menurut prinsip Kerckhoff, proses desain algoritma kriptografi harus mengasumsikan bahwa algoritma tersebut (termasuk kriteria-kriteria desainnya) terpublikasi, tidak dirahasiakan. There is no security by obscurity. Algoritma yang terpublikasi dapat dianalisa dan diuji oleh banyak pihak dalam komunitas kriptografi.

Ketiga, kunci yang sangat panjang. Beberapa contoh algoritma kunci simetrik yang dipaparkan Bruce menggunakan kunci 4096 bit, bahkan ada yg hingga satu juta bit! Panjang kunci dalam batas tertentu memang diperlukan dalam sistem kriptografi. Tujuannya adalah untuk membuat brute-force attack menjadi infeasible. Hitungan sederhana kebutuhan komputasi untuk brute-force attack menyatakan bahwa kunci 256-bit untuk symmetric-key cryptography dan 2048-bit untuk public-key cryptography. Membongkarnya dengan metode brute-force attack memerlukan waktu yang lebih panjang dari usia alam semesta. Jadi kunci yang lebih panjang dari ini sama sekali tidak berguna.

Keempat, klaim dengan OTP (one time pad). One time pad merupakan teknik enkripsi dengan menggunakan panjang kunci yang sama dengan panjang plaintext. Selanjutnya tiap karaker dari kunci ini dipergunakaan untuk me-masking tiap karakter plaintext (misal dengan XOR). Secara teori OTP bersifat provably secure (tidak ada teknik yang lebih efisien dari brute-force attack untuk membongkarnya). Namun teknik ini tidak dapat dipergunakan secara praktis, karena beberapa hal berikut:

  • Panjang kunci bergantung pada panjang plaintext, sehingga jika plaintext sangat panjang maka kita juga perlu kunci yang sangat panjang. Secara praktis hal ini sangat menyulitkan proses distribusi kunci.
  • One-time-pad bersifat provably secure jika dan hanya jika kunci yang dipergunakan benar-benar random artinya tidak boleh ada algoritma atau sistem yang dapat mereproduksi kunci tersebut. Secara praktis sangat sulit membuat atau menemukan truly random number generator.

Kelima, tidak ada bukti keamanan secara matematis. Ada dua kemungkinan untuk kasus ini, (1) ada bukti matematis yang sangat rinci dan kokoh yang tidak relevan dengan pembuktian keamanan sistem kriptografi, atau (2) bukti matematis palsu. Contoh yang dipaparkan bruce: sebuah produsen sistem kripto menjelaskan cara kerja dan tingkat keamanan OTP, kemudian produsen tersebut menyatakan bahwa algoritmanya memiliki perilaku yang serupa dengan OTP sehingga karena itu memiliki tingkat keamanan yang setara OTP. Kemudian dilanjutkan dengan serangkaian uji statistik untuk menunjukkan klaim tersebut. Menurut Bruce, cara pembuktian ini tidak valid dalam komunitas kriptografi

Artikel ini sangat penting bagi rekan-rekan yang sedang melakukan riset di bidang kriptografi, dan juga bagi kalangan praktisi yang akan mengimplementasikan sistem kriptografi dalam aplikasi-aplikasi yang mensyaratkan keamanan tinggi (misal: payment system, e-cash, settlement system dll)

Artikel lengkap dapat dilihat di sini.

Komentar (13)

Teknik membongkar disk encryption

Beberapa aplikasi yang dapat dipergunakan untuk mengenkripsi hardisk, diantaranya adalah BitLocker, FileVault, dm-crypt, dan TrueCrypt. Aplikasi-aplikasi ini menggunakan beberapa algoritma enkripsi standar misalnya AES, Twofish dan Serpent yang telah dinyatakan aman oleh komunitas kriptografi. Saat ini saya menggunakan Truecrypt untuk laptop saya. Saya merasa cukup yakin dengan keamanan data-data saya, karena truecrypt akan secara otomatis mengenkripsi data-data saya sesaat setelah komputer dimatikan. Jadi, kalaupun terjadi pencurian terhadap Laptop saya, data-data saya akan tetap aman.

Namun ada artikel menarik di Bisnis Indonesia tentang teknik untuk menembus aplikasi-aplikasi enkripsi tersebut. Teknik ini mengeksploitas karakteristik DRAM yang tetap menyimpan data-data terakhir beberapa saat setelah catu daya diputus. Syaratnya, DRAM tersebut harus didinginkan hingga sekitar -50 derajat Celcius. Penyerang kemudian dapat mengekstrak master key enkripsi dari DRAM ini. Teknik ini disebut memory imaging attack. Sistem enkripsi apapun akan sulit menghindari serangan ini karena sistem tersebut harus menyimpan master-key di suatu tempat.

ilustrasi-cold-boot-attack.jpg

Cara untuk mencegah serangan (counter measure) tersebut diantaranya adalah:

1. Mengosongkan memori. Aplikasi harus segera menghapus master-key ketika sudah tidak dipergunakan.

2. Menghindari hibernasi dan standby sebelum men-dismount file, direktori atau partisi harddisk yang kita enkripsi.

3. Melindungi DRAM dari akses fisik. Ini tentu saja hanya dapat dilakukan oleh pabrikan PC atau Laptop.

Tentang cara no (1), truecrypt ternyata telah menerapkan mekanisme untuk menghapus seluruh master-key yang disimpan di memory ketikan komputer akan memasuki mode hibernasi. Penjelasan lebih detil mengenai mode hibernasi dalam truecrypt dapat dilihat di sini. Tentu saja mekanisme ini tidak dapat mencegah serangan terhadap DRAM yang dilakukan pada saat data dalam keadaan terdekripsi (mounted)

Rangkuman penelitian dan paper tentang teknik serangan ini dapat dilihat di sini

Komentar (4)