Oracle saldırılarının doldurulmasının gerçek sonuçları var mı?

Aug 18 2020

Python'da verileri şifreleyen ve oracle saldırılarını dolduran bir program yazıyorum , ancak savunmasız olan eski uygulamalar için bile (gerçek dünya kullanımları nelerdir?) padding SSLv3 gibi doğru veya yanlıştır).

Çünkü:

  1. Tek ihtiyacım olan iki şifreli metinse $c(n-1)$, $c(n)$ son iki şifrelenmiş mesaj bloğu ve şifresi çözülüp çözülmediğini bana söyleyen bir sunucu $c(n)$doğrudur ya da her neyse, bu, sunucunun ona ne gönderirseniz gönderin şifresini çözdüğü anlamına gelmez (yani, şifrelenmiş mesajın tamamını aldığınız gibi gönderin ve çıktıyı okuyun). Demek istediğim, bu ilk etapta bir anahtar almadığı ve doğru olup olmadığını kontrol ettiği sunucu hatasıdır.
  2. Diyelim ki tek yapmamız gereken, son bloğu (dolgu bloğu) bilmek ve şifresini çözmek için bu iki şifre mesajını göndermek. Bu yalnızca dolgu düz metni bilindiği veya en azından rastgele olmadığı veya herhangi bir nedenle olmadığı için çalışır.

Peki ya tüm mesajın ortasında olan c2 ve c3 ne olacak ? C3 ve c2'yi biliyoruz, ancak bilmiyoruz ve ne p3'ü ne p2'yi (düz metin) ne de orta düzey IS3'ü asla bilmeyeceğiz ; yani biz değil XOR c2 ile iS3 elde etmek p3 Bu saldırı, bu yüzden düşünüyorum sadece dolgu bloğunun bir ara durumdur bize biz aslında bildiği tek yeni şey ile dolgu bloğu şifresini sağlar.

Bu saldırının sadece gerçek dünya etkileri ve gerçek veri şifre çözme yetenekleri (gerçek veriler) olmayan bir saldırı olup olmadığını soruyorum.

Yanıtlar

7 MaartenBodewes Aug 18 2020 at 23:14

Demek istediğim bu, ilk etapta bir anahtar almadığı ve doğru olup olmadığını kontrol ettiği sunucu hatasıdır :)

Ne demek istiyorsun? Anahtar doğru olmalıdır ve doldurma oracle saldırıları , saldırıyı gerçekleştirmek için diğer tarafta o anahtarla şifrelenen şifreli metni değiştirir .

peki ya tüm mesajın ortasında olan c2, c3 diyelim, c3 ve c2'yi biliyoruz ama bilmiyoruz ve ne p3'ü (tabii ki düz metin) ne de ara durum IS3'ü asla bilmeyeceğiz

Hayır, bir dolgulu oracle saldırısı bir mesajın şifresini tamamen çözebilir. Bunun nedeni XOR'un bir sonraki bloğu etkilemesidir.

Dolgu oracle saldırılarının, düz metin oracle saldırısının yalnızca bir türü olduğunu unutmayın . Örneğin, dolgunun kendisini kullanmadan bile XML-enc üzerinde düz metin oracle saldırıları gerçekleştirebilirsiniz.

Bu saldırının gerçek dünya etkileri ve gerçek veri şifre çözme yetenekleri (gerçek veriler) içermeyen bir saldırı olup olmadığını soruyorum.

Evet, bu tamamen ve tamamen yanlış. Dolgu oracle saldırısı, bayt başına 128 deneme kullanarak tüm mesajın şifresini çözebilir ve diğer düz metin oracle'ları aslında daha da etkili olabilir.

Bunun yanı sıra, alıcı tarafın değiştirilmiş bir açık metni kabul etmesi, gizliliği kaybetmek kadar muhtemelen tehlikelidir. Bu nedenle, kimliği doğrulanmış şifreleme veya daha doğrusu , kimliği doğrulanmamış CBC yerine kimliği doğrulanmış şifreleme kullanan bir protokol kullanmalısınız .

5 Gilles'SO-stopbeingevil' Aug 19 2020 at 07:33

Bu saldırının gerçek dünya etkileri ve gerçek veri şifre çözme yetenekleri (gerçek veriler) içermeyen bir saldırı olup olmadığını soruyorum.

Şanslı Onüç saldırı TLS karşı gerçek dünya saldırıdır. TLS protokolünün o zamanki güncel sürümleri için ciddi bir saldırı idi (o sırada TLS 1.0 - TLS 1.1 ve 1.2 vardı, ancak çok az benimsendi). Yani hayır, dolgulu oracle saldırıları gerçek dünyada kesinlikle işe yarıyor.

(dolgunun doğru mu yanlış mı olduğunu sslv3 gibi söyleyenler).

Lucky Thirteen, günümüzde güvenli iletişimlerin çoğunda kullanılan sürüm olan TLS 1.2'ye kadar olan sürümleri etkiler. Yalnızca bu saldırı nedeniyle kullanımdan kaldırılan CBC'yi kullanan şifre paketlerini etkiler, ancak çoğu uç nokta, AEAD şifreleme takımlarını tercih etseler bile yine de buna izin verir. Popüler TLS uygulamalarının tümü olmasa da çoğu, Lucky Thirteen saldırısını önleyen koda sahiptir (performans pahasına). Yani hayır, dolgu oracle saldırıları hala yaygın olarak kullanılan protokollerle ilgilidir.

Python'da verileri şifreleyen bir program yazıyorum ve oracle saldırılarını doldurmayı duydum, ancak bunların abartıldığını düşünüyorum

Peki, oracle saldırılarını doldurma konusunda endişelenmemen gerektiği doğru. Ancak endişelenmemenizin nedeni, iyi bilindikleri için onlara karşı nasıl savunma yapacağımızı biliyoruz: dolgu kullanmayın. Ve hiçbir şifreleme modern modu dolgu kullanmaz. GCM, CCM veya ChaCha20 + Poly1305 gibi herhangi bir genel AEAD modunu kullanın. Daha da iyisi, NaCl / libsodium ( Python'da PyNaCl ) gibi yüksek seviyeli bir kitaplık kullanın : kodunuza AES harflerini yazıyorsanız, yanlış yapıyorsunuz demektir .