Keamanan mode penghitungan AES vs. mode CBC

Evgeni Vaknin 09/05/2017. 1 answers, 401 views
aes cbc ctr nonce

Untuk AES-CBC menjadi CPA, amankan IV yang digunakan harus dipilih secara acak untuk setiap paket. Jika IV dapat diprediksi daripada enkripsi tidak aman CPA. Apakah hal yang sama berlaku untuk mode AES-CTR? yaitu, untuk mode AES-CTR, penghitung pertama harus acak atau dapat berupa nonce? Terima kasih

1 Answers


Patrick K 07/31/2017.

Persyaratan untuk blok masukan AES-CTR adalah, bahwa mereka harus unique selama masa kunci. Dalam sebagian besar kasus, nonbit 96bit acak digunakan dengan penghitung 32bit yang dimulai dari 0. Jika blok masukan yang sama untuk AES-CTR terjadi dua kali, AES-CTR tidak lagi mengamankan CPA. Dalam hal ini, hal ini dapat disebabkan oleh counter-overflow setelah $ 2 ^ {32} $ blok atau karena bertabrakan 96bit nonces yang dipilih secara acak (paradoks ulang tahun: 50% kemungkinan setelah $ \ sqrt {2 ^ {96}} $ messages. Pertimbangkan kasus berikut:

Dua pesan 1-Blok yang berbeda $ P $ dan $ P '$ dikirim dengan kunci yang sama $ K $ (yang mungkin dinegosiasikan sebelumnya) dan dengan nilai $ N $ yang sama. Penyerang mengetahui bahwa teks cipher terkait $ C $ dan $ C '$ yang dihitung dengan XORing mereka dengan keystream (yang didasarkan pada nonce dan penghitung):

$ C = P \ oplus E_K (N, 0) $

$ C '= P' \ oplus E_K (N, 0) $

Kemudian penyerang dapat dengan mudah menyalin teks rahasia

$ C \ oplus C '= P \ oplus E_K (N, 0) \ oplus P' \ oplus E_K (N, 0) = P \ oplus P '$

dan dia mendapatkan 'jarak' antara dua teks biasa. Karena redudansi dalam bahasa Inggris, ia mungkin dapat menentukan $ P $ dan $ P '$.

Masalah ini juga dikenal sebagai "dua kali-pad". Begitu keystream yang sama di-XOR dengan plaintext, kita mendapat masalah. Oleh karena itu, penting, bahwa masukan untuk enkripsi AES adalah unik selama masa kunci. Itu tidak harus tidak dapat diprediksi, hanya unik.

5 comments
Evgeni Vaknin 07/31/2017
oleh pernyataan "2 ^ 32 pesan" Saya pikir Anda berarti 2 ^ 32 blok dari 16 byte masing-masing dalam AES? jika demikian, dari 2 ^ 32 blok waktu adalah 2 ^ 32 * 128 bit, yang dalam 10Gbps, sekitar 1 menit ... jadi setiap 1 menit algoritma pertukaran kunci harus dijalankan untuk menyiapkan kunci baru dan nonce ?
1 Patrick K 07/31/2017
Ya kau benar. Saya telah mengedit jawabannya. Jika Anda memiliki aturan statis, maka Anda perlu melakukan pertukaran kunci setiap menit dalam kasus ini. Tapi karena nonce biasanya berubah dengan setiap pesan, Anda terbatas pada pesan dengan panjang maksimal $ 2 ^ {32} \ cdot128 $ bit. Jumlah maksimum pesan yang dapat dikirim di bawah kunci tertentu dibatasi oleh paradoks ulang tahun. Jika 96bit nonce dipilih secara seragam secara acak untuk setiap pesan, kemungkinan tabrakan nonce adalah $ \ kira-kira 0,5q ^ 2/2 ^ {96} $ untuk pesan q. Jika Anda ingin istilah ini paling banyak 1%, Anda $ q_ {max} = 4 \ cdot10 ^ {13} $.
Evgeni Vaknin 07/31/2017
Apa yang terjadi jika saya tidak menggunakan acak nonce, bukan saya menggunakan nilai acak untuk nilai awal nonce dan daripada kenaikan itu setiap paket? Sebagai contoh, katakanlah setiap paket berisi kurang dari 256 blok AES (masing-masing 128 bit), dan penghitung untuk AES-CTR terdiri dari nonce dari 120 bit, yang diinisialisasi secara acak ketika kunci dipertukarkan, dan daripada di dalam paket 8 bit counter digunakan untuk menghitung blok 128 bit. Dan setiap paket baru, (lanjutkan di komentar berikutnya)
Evgeni Vaknin 07/31/2017
Saya menaikkan nilai non dengan 1, dan menghapus penghitung 8 bit. Dalam hal ini, paradoks ulang tahun tidak relevan, karena tabrakan tidak mungkin (dengan asumsi saya mengganti kunci sebelum penghitung 120 bit nonce kedaluwarsa)
1 Patrick K 08/01/2017
Ya, jika Anda entah bagaimana memastikan bahwa Anda tidak pernah menggunakan kembali pasangan (masukan-blok, kunci) yang sama untuk generasi-keystream, maka semuanya baik-baik saja. (tentu saja dengan asumsi bahwa kuncinya dirahasiakan dan dipilih secara seragam dari acak)

Related questions

Hot questions

Language

Popular Tags