Stream_cipher_attack (Potoku útok)

Kódy potoku , kde jsou kousky holého textu v kombinaci s trochou potoku výhradní-nebo provoz ( xor ), může být velmi bezpečné, pokud jsou použity správně. Nicméně oni jsou náchylné k útoku, pokud některá opatření nejsou následuje:

  • klíče nesmí být nikdy použit dvakrát

  • platný šifrovací by nikdy neměla být spoléhal na znamení pravosti

Použité klíčový útok

Potoční kódy jsou náchylné k útoku, pokud stejný klíč je použit dvakrát (hloubky dvou) nebo více.

Říci, že jsme posílat zprávy a B stejné délky, a to jak šifrované pomocí stejného klíče, K . Potoku produkuje řetěz kousků C (K), stejně dlouhý jako zprávy. Šifrovaná verze zprávy pak jsou:

E (A) = C xor

E (B) = B xor C

kde xor se provádí bit po bitu.

Řekněme, že protivník má zachycené E (A) a E (B) . Ten lze snadno spočítat:

E (A) xor E (B)

Nicméně xor je komutativní a má tu vlastnost, že X xor X = 0 (self-inverzní), takže:

E (A) xor E (B) = (xor C) xor (B xor C) = xor B xor C xor C = B xor

Pokud jedna zpráva je delší než ostatní naše protivníka jen zkrátí delší zprávy do velikosti kratší a jeho útok bude jen ukáže, že část delší zprávy. Jinými slovy, pokud někdo zachytí dvě zprávy zašifrované stejným klíčem, mohou obnovit xor B , což je forma běží klíčový kód . Dokonce i když je známo, ani zpráva, tak dlouho, jak zprávy jsou v přirozeném jazyce, lze tyto šifry často zlomený papír-a-tužka metod. John Tiltman dosáhne s šifrou Lorenz (TUNNY) v druhé světové válce . S průměrem osobní počítač , šifry mohou být rozděleny jako obvykle během několika minut. Pokud jedna zpráva je známo, je řešení triviální.

Jinou situaci, kde využití je triviální, je-li provoz-flow bezpečnostních opatření každá stanice vysílající nepřetržitý proud bitů šifry, s null znaky (např. LTRS v Baudot ) je poslán když není tam žádný skutečný provoz. To je běžný ve vojenských komunikacích. V takovém případě, a pokud je přenosový kanál není plně naloženo, tam je dobrá pravděpodobnost, že jeden z ciphertext toků bude jen nuly.NSA jde do velkých délek, aby se zabránilo klíče se používá dvakrát. 1960-éra šifrovací systémy se často zahrnuta děrný štítek čtečky pro načítání klíče. Tento mechanismus se automaticky sníží na polovinu, kdy karta byla odstraněna karta, předcházet jeho opětovné použití. [ pochvalná zmínka potřebovala ]

Jeden způsob, jak se tomuto problému vyhnout, je použití inicializačního vektoru (IV), poslal do jasné, že je v kombinaci s tajným hlavní klíč k vytvořit jeden-čas klíč pro proudová šifra. To se provádí v několika společných systémů, které používají populární proudová šifra RC4 , včetně Wired Equivalent Privacy (WEP), Wi-Fi Protected Access (WPA) a Ciphersaber . Jedním z mnoha problémů s WEP bylo to, že jeho IV bylo příliš krátké, 24 bitů. To znamenalo, že existuje vysoká pravděpodobnost, že stejná IV by byly použity dvakrát v případě více než několik tisíc pakety byly odeslány se stejným hlavního klíče (viz útok narozenin ), podřizovat pakety s duplicitní IV klíč znovu zaútočit. Tento problém byl opraven v WPA změnou "master" klíč často.

Bit-mizerný útok

Předpokládám, že protivník zná přesný obsah všech nebo části jednoho z našich zpráv. Jako součást člověka ve středu útoku , může změnit obsah zprávy, aniž by věděl, klíče, K . Říkají, například, on zná část zprávy obsahuje ASCII řetězec "1000,00 dolarů" . On může změnit na "9500,00 dolarů", tím, že xor'ing část ciphertext s řetězcem: "1000,00 dolarů" xor "9500,00 dolarů" . Chcete-li vidět, jak to funguje, za to, že šifry text pošleme je jen C (K) xor "1000,00 dolarů" . Co je vytváření je:

C (K) xor "1000,00 dolarů" xor "1000,00 dolarů" xor "9500,00 dolarů" = C (K) xor "9500,00 dolarů"

což je to, co naši ciphertext by bylo, kdyby 9500 dolar byl správnou částku. Viz také: malleability (kryptografie) .

Bit-obracející útoky jsou předešel tím, autentizační kód zprávy , aby zvýšila pravděpodobnost, že manipulace bude odhalen.