AES sayaç modunun CBC moduna karşı güvenliği

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

AES-CBC'nin CPA güvenli olması için kullanılan her bir paket için rastgele seçilen IV'ün seçilmesi gerekir. IV şifrelemeden tahmin edilebilir ise CPA güvenli değildir. AES-CTR modu için de aynısı geçerli mi? Yani, AES-CTR modu için ilk sayaç rastgele olmalı veya bir nonce olabilir mi? Teşekkürler

1 Answers


Patrick K 07/31/2017.

AES-CTR giriş bloklarının gereksinimi, bir anahtarın ömrü boyunca unique olmalarıdır. Olguların çoğunda rastgele bir 96 bit nonce 0'dan başlayan bir 32bit sayacı ile kullanılır. AES-CTR için aynı giriş bloğu iki kez oluşursa, AES-CTR artık CPA güvenli değildir. Bu durumda, $ 2 ^ {32} $ bloktan sonra veya rastgele seçilmiş 96bit notaların çarpışmasından dolayı bir karşı taşma olabilir (doğum paradoksu: $ \ sqrt {2 ^ {96}} $ mesajından sonra% 50 şans. Aşağıdaki durumu düşünün:

İki farklı 1-Blok mesaj $ P $ ve $ P '$ aynı anahtar $ K $ altında (önceden müzakere edilebilir) ve aynı $ $ N $ ile gönderilir. Saldırgan, ilgili şifre metinlerinin $ C $ ve $ C '$' nin XORing tarafından hesaplandığı ve bunların keystream (nonce ve counter'a dayalı) ile hesaplandığını bilir:

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

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

Sonra saldırgan sadece şifreli metinleri okuyabilir

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

Ve iki düz metin arasındaki '' mesafeyi '' elde eder. İngilizce dilindeki fazlalıklar nedeniyle, $ P $ ve $ P '$ belirleyebilir.

Bu sorun aynı zamanda "iki zamanlı ped" olarak bilinir. Aynı keystream düz metinle XORed olduğunda, başımız belaya girer. Bu nedenle, AES şifrelemesi için girdinin, bir anahtarın ömrü boyunca benzersiz olması önemlidir. Tahmin edilemez, sadece benzersiz olmak zorunda değildir.

5 comments
Evgeni Vaknin 07/31/2017
deyimiyle "2 ^ 32 mesaj" AES'te her biri 16 ^ 16 baytlık 2 bloktan ibaret mi demek istiyorsunuz? eğer öyleyse, 2 ^ 32 bloktan daha uzun süre 2 ^ 32 * 128 bittir, 10Gbps'de, yaklaşık 1 dakikadır ... böylece her 1 dakikada bir anahtar değişim algoritması yeni bir anahtar ve nonce kurmak için çalıştırılmalıdır. ?
1 Patrick K 07/31/2017
Evet haklısın. Cevabı ben düzenledim. Statik olmayan bir sesiniz varsa, bu durumda her dakika bir anahtar değişimi yapmanız gerekir. Ama nonce genellikle her mesajla değiştiği için, maksimum 2 $ {32} \ cdot128 $ bit uzunluğundaki mesajlarla sınırlandırılırsınız. Verilen bir anahtarın altında gönderilebilecek maksimum mesaj sayısı doğum günü paradoksu ile sınırlıdır. Eğer her bir mesaj için 96bit nonce rastgele seçilirse, bir çarpışma olasılığı q mesajlar için $ \ yaklaşık 0,5q ^ 2/2 ^ {96} $ 'dır. Bu terimin en fazla% 1 olmasını istiyorsanız, $ q_ {max} = 4 \ cdot10 ^ {13} $.
Evgeni Vaknin 07/31/2017
Rastgele nonce kullanmazsam ne olur, ilk olmayan değer için rastgele bir değer kullanırım ve her bir paketi arttırmaktan daha çok kullanırım? Örneğin, her bir paketin 256 AES bloğu (her biri 128 bit) içerdiğinden ve AES-CTR sayacının anahtar bittiğinde rastgele başlatılan ve paketten 8 bit dahilinde 120 bitlik olmayan birinden oluştuğu söylenebilir. 128 bit blokları saymak için sayaç kullanılır. Ve her yeni paket, (sonraki yorumda devam)
Evgeni Vaknin 07/31/2017
Nonce'ı 1 artırıyorum ve 8 bit sayacı temizliyorum. Bu durumda, çarpışma imkansız olduğu için doğum günü paradoksu uygun değildir (anahtarın sona ermesinin 120 bit sayacından önce anahtarı değiştirdiğimi varsayarak)
1 Patrick K 08/01/2017
Evet, bir şekilde keystream-jenerasyonu için aynı (input-block, key) çiftini hiçbir zaman tekrar kullanmadığınızdan emin olursanız, her şey yolundadır. (tabii ki anahtarın gizli tutulduğunu ve rastgele tekdüze olarak seçildiğini varsayarak)

Related questions

Hot questions

Language

Popular Tags