Jika suatu algoritma enkripsi dimaksudkan untuk mengubah suatu string ke string lain yang kemudian dapat didekripsi kembali ke aslinya, bagaimana proses ini dapat melibatkan keacakan?
Tentunya itu harus deterministik, kalau tidak bagaimana bisa fungsi dekripsi tahu faktor apa yang terlibat dalam membuat string terenkripsi?
Jawaban:
Mungkin ada lebih dari satu ciphertext yang memetakan kembali ke plaintext yang sama. Dalam istilah matematika, algoritma enkripsi harus bersifat injektif sehingga Anda dapat memulihkan plaintext untuk ciphertext, tetapi ini tidak mencegah ciphertext dari menyandikan lebih banyak informasi daripada plaintext.
Sebagai contoh nyata, pertimbangkan mode operasi cipher blok seperti CBC , CTR atau OFB . Semua mode ini melibatkan IV (vektor inisialisasi) selain plaintext, algoritma cipher blok dan kuncinya. (Untuk CTR, IV disebut nonce, tetapi memainkan peran yang sama.) Fungsi enkripsi adalah deterministik untuk IV yang diberikan. IV, di sisi lain, dapat dipilih secara acak (untuk RKT, harus dipilih secara acak). Jadi, kecuali protokol menentukan metode deterministik untuk memilih IV (seperti konstanta yang disepakati), IV dikirim bersama ciphertext. Bahkan, output dari perangkat lunak enkripsi sering kali terdiri dari IV diikuti oleh teks cipher stricto sensu. IV itu sendiri dikirim dalam plaintext; itu tidak (tidak boleh) mengandung informasi rahasia apa pun.
Sebagai contoh lain, pertimbangkan mode PKCS1.5 (“skema padding”) RSA (didefinisikan dalam PKCS # 1 versi 1.5 - lihat hal.22–25 dari PKCS # 1 v2.1 ). Sederhanakan sedikit, mode ini terdiri dari menggabungkan string acak dengan pesan, kemudian menerapkan operasi eksponensial. adalah mana adalah concatenation, adalah pesan dan adalah string padding yang sebagian besar bitnya acak. Untuk memulihkan pesan dari ciphertext , terapkan operasi dekripsi mentah dan pisahkan menjadi padding (yang dibuang) dan pesan.(P∥M)emodn ∥ M P C Cdmodn C
sumber
Skema enkripsi tidak hanya dapat memiliki keacakan, tetapi dalam beberapa kasus (misalnya, enkripsi kunci publik ), mereka harus diacak. Ini bukan masalah karena kami memerlukan skema enkripsi untuk menjadi benar , yaitu, untuk setiap pesan dan tombol apa saja itu menyatakan bahwa atas keacakan .m k
Alasan mengapa skema kunci publik harus acak berasal dari cara kami mendefinisikan keamanan: kami tidak ingin ciphertext membocorkan informasi apa pun tentang pesan terenkripsi. Contoh klasik adalah sebagai berikut. Asumsikan bahwa masing-masing adalah kunci publik dan rahasia, dan bahwa musuh mencegat pesan terenkripsi dikirim ke beberapa unit di lapangan. Musuh tahu bahwa pesannya "ATTACK" atau "RETREAT", tetapi tidak tahu yang mana. Satu hal yang dapat dilakukan musuh adalah mengenkripsi kedua pesan menggunakan publik . biarkan dan . Jika(pk,sk) c pk cA=ENCpk("ATTACK ") cR=ENCpk("RETREAT") ENC bersifat deterministik, musuh dapat mengetahui pesan dengan pasti dengan membandingkan ke dan .c cA cR
Cara pengertian ini didefinisikan secara formal dikenal sebagai keamanan semantik :
(Saya menghilangkan parameter keamanan , yang sangat penting untuk mendefinisikan "diabaikan" atau "terlihat"; Kita perlu mengasumsikan bahwa pembuatan kunci tergantung pada , dan bahwa keuntungan telah di atas dapat diabaikan dalam , yaitu kurang dari )κ κ A 1/2 κ κ−ω(1)
sumber
Anda belum menyatakan jenis enkripsi apa yang sedang kita diskusikan, tetapi izinkan saya menunjukkan apa yang benar-benar diperlukan untuk keamanan protokol kartografi (selain apa yang dinyatakan dalam jawaban lain).
Yang benar-benar kita butuhkan adalah ini: kunci harus dibuat secara acak (ini dapat dilakukan dalam kolaborasi seperti dalam kriptografi kunci publik seperti RSA atau oleh satu entitas seperti dalam kriptografi kunci pribadi). Keacakan kunci memastikan bahwa musuh tidak dapat memprediksi kunci (dan menggunakannya untuk melanggar protokol). Selama kunci tampak acak ke musuh protokol akan aman. Seringkali, kunci dihasilkan oleh algoritma acak dan kemudian diberikan kepada para pihak, sedangkan algoritma enkripsi dan dekripsi tidak acak tetapi deterministik.
Juga ingat bahwa menjadi acak tidak berarti bahwa prosesnya tidak dapat dibalik. Contoh sederhana adalah sebagai berikut: diberikan , secara acak menghasilkan , output . Untuk pembalikan, kita dapat menampilkan bagian pertama dari pasangan.x r ⟨x,r⟩
sumber
Enkripsi dan algoritma dekripsi dapat diacak selama Anda dapat membuktikan beberapa teorema bahwa enkripsi diikuti oleh dekripsi akan memberi Anda pesan asli sebagian besar kali .
Mengapa ada yang menginginkan skema enkripsi seperti itu? Karena: 1) terdapat situasi di mana kita tidak ingin menjadi benar sepanjang waktu tapi hanya 99.999.999 kali dari setiap 100000000 dan 2) yang memungkinkan kesalahan kecil seperti sering meningkatkan sesuatu yang lain (seperti efisiensi) dengan jumlah yang tidak proporsional.
sumber
Sebagai contoh, dalam enkripsi RSA , Anda perlu membuat dua bilangan prima dan dan bilangan bulat yang akan digunakan untuk membuat kunci publik dan pribadi Anda.p q e
Jika Anda menghasilkan salah satu dari nilai-nilai ini dengan cara deterministik, maka generasi mereka dapat direproduksi, yang berpotensi membahayakan enkripsi Anda. Jika angka-angka ini dihasilkan secara acak, maka ini bukan masalah.
Memperbarui
Sebagai contoh jawaban Ran G. yang lebih spesifik , Anda dapat melihat kriptografi Kurva Elliptic , di mana algoritme membutuhkan parameter acak (biasanya disebut , atau ) untuk mengenkripsi dan mendekripsi pesan. Jika parameter "acak" yang sama digunakan lebih dari sekali, kunci mereka dapat dihitung dari dua pesan terenkripsi. Ini adalah masalah / premis dari hack PlayStation 3 tahun lalu .d k r
sumber