Krádež šifrovacího textu - Ciphertext stealing
Tento článek obsahuje a seznam doporučení, související čtení nebo externí odkazy, ale jeho zdroje zůstávají nejasné, protože mu chybí vložené citace.Dubna 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v kryptografie, krádež šifrovacího textu (CTS) je obecná metoda používání a režim provozu blokové šifry který umožňuje zpracování zpráv, které nelze rovnoměrně rozdělit na bloky, aniž by to mělo za následek jakékoli rozšíření šifrový text, za cenu mírně zvýšené složitosti.
Obecná charakteristika
Krádež šifrovacích textů je technika šifrování prostý text pomocí blokové šifry, bez polstrování zprávu na násobek velikosti bloku, takže šifrový text má stejnou velikost jako prostý text.
Dělá to změnou zpracování posledních dvou bloků zprávy. Zpracování všech kromě posledních dvou bloků se nemění, ale je součástí druhý-šifrovaný text posledního bloku je "ukraden", aby vyplnil poslední blok prostého textu. Polstrovaný finální blok je poté šifrován jako obvykle.
Poslední ciphertext, pro poslední dva bloky, se skládá z částečného předposledního bloku (s vynechanou „ukradenou“ částí) plus úplného posledního bloku, které mají stejnou velikost jako původní holý text.
Dešifrování vyžaduje nejprve dešifrování posledního bloku a poté obnovení ukradeného šifrovacího textu do předposledního bloku, který nelze dešifrovat jako obvykle.
V zásadě jakýkoli blokově orientovaný režim provozu blokové šifry lze použít, ale režimy podobné proudové šifře lze již použít na zprávy libovolné délky bez výplně, takže z této techniky nemají prospěch. Běžný režimy provozu které jsou spojeny s krádežemi šifrovacích textů Elektronický číselník (ECB) a Řetězení šifrovacích bloků (CBC).
Krádež šifrovacího textu pro režim ECB vyžaduje, aby holý text byl delší než jeden blok. Možné řešení je použít proudovou šifru režim provozu blokové šifry když je délka prostého textu jedna blok nebo méně, například režimy CTR, CFB nebo OFB.
Šifrování šifry pro CBC režim nutně nevyžaduje, aby holý text byl delší než jeden blok. V případě, že holý text je jeden blok dlouhý nebo menší, Inicializační vektor (IV) může fungovat jako předchozí blok šifrovacího textu. V tomto případě musí být příjemci zaslána upravená IV. To nemusí být možné v situacích, kdy odesílatel nemůže odesílatelem volně zvolit IV (např. Když je IV odvozená nebo předem stanovená hodnota) a v tomto případě může šifrovat šifru pouze pro režim CBC vyskytují se v holých textech delších než jeden blok.
Chcete-li implementovat šifrování nebo dešifrování CTS pro data neznámé délky, musí implementace zpozdit zpracování (a vyrovnávací paměť) dvou nejnovějších bloků dat, aby je bylo možné na konci datového proudu správně zpracovat.
Formát šifrovacího textu
Existuje několik různých způsobů, jak uspořádat šifrovací text pro přenos. Bity ciphertextu jsou ve všech případech stejné, pouze se přenášejí v jiném pořadí, takže volba nemá žádné bezpečnostní důsledky; je to čistě jedna z výhod implementace.
Toto číslování je převzato od Dworkina, který je všechny popisuje. Třetí je nejoblíbenější a popsal ji Daemen a Schneier; Meyer popisuje související, ale nekompatibilní schéma (s ohledem na řazení bitů a použití klíče).
CS1
Pravděpodobně nejzřejmějším způsobem, jak uspořádat šifrovací text, je přenos zkráceného předposledního bloku, po kterém následuje celý poslední blok. To není pro přijímač vhodné ze dvou důvodů:
- Přijímač musí v každém případě dešifrovat poslední blok jako první a
- To má za následek, že poslední blok nebude zarovnaný na přirozené hranici, což komplikuje hardwarové implementace.
To má tu výhodu, že pokud je výsledný blok holého textu násobkem velikosti bloku, je šifrovací text identický s původním režimem provozu bez krádeže šifrovacího textu.
CS2
Často je pohodlnější zaměnit poslední dva bloky ciphertextu, takže ciphertext končí úplným posledním blokem, za nímž následuje zkrácený předposlední blok. Výsledkem jsou přirozeně zarovnané bloky šifrovaného textu.
Z důvodu zachování kompatibility s režimy bez krádeže provede volba CS2 tento swap pouze v případě, že množství ukradeného šifrovacího textu je nenulové, tj. Původní zpráva nebyla násobkem velikosti bloku.
To udržuje přirozené zarovnání a kompatibilitu s režimy bez krádeže, ale vyžaduje odlišné zacházení s případy zarovnané a nezarovnané velikosti zprávy.
CS3
Nejpopulárnější alternativa bezpodmínečně zamění poslední dva bloky šifrovacího textu. Toto je pořadí použité v níže uvedených popisech.
Popis režimu krádeže šifrovacího textu
K šifrování nebo dešifrování dat použijte standard režim provozu blokové šifry na všech dvou posledních blocích dat.
Následující kroky popisují, jak zacházet s posledními dvěma bloky holého textu, tzv Pn−1 a Pn, kde délka Pn−1 rovná se velikost bloku šifry v bitech, B; délka posledního bloku, Pn, je M bity; a K. je klíč, který se používá. M se může pohybovat od 1 do B, včetně, takže Pn může to být úplný blok. Popis režimu CBC také využívá blok ciphertext těsně před příslušnými bloky, Cn−2, což může být ve skutečnosti IV, pokud se holý text vejde do dvou bloků.
Pro tento popis se používají následující funkce a operátory:
- Hlava (data, A): vrátí první A bity řetězce „data“.
- Ocas (data, A): vrátí poslední A bity řetězce „data“.
- Šifrovat (K., data): použijte základní blokovou šifru v režimu šifrování na řetězci „data“ pomocí klíče K..
- Dešifrovat (K., data): použijte podkladovou blokovou šifru v dešifrovacím režimu na řetězci „data“ pomocí klíče K..
- XOR: Bitový exkluzivně-NEBO. Odpovídá bitovému sčítání bez použití přenosového bitu.
- ||: Operátor zřetězení. Zkombinujte řetězce na obou stranách operátoru.
- 0A: řetězec A 0 bitů.
Krádež šifrovacího textu ECB
Ciphertext krádež v režimu ECB zavádí meziblokovou závislost v posledních dvou blocích, což má za následek změněné chování při šíření chyb pro poslední dva bloky.
Kroky šifrování ECB (viz obrázek)
- En−1 = Šifrovat (K., Pn−1). Šifrovat Pn−1 vytvořit En−1. To odpovídá chování standardního režimu ECB.
- Cn = Hlava (En−1, M). Vyberte první M kousky En−1 vytvořit Cn. Poslední blok šifrovaného textu, Cn, se skládá z předních M bity předposledního bloku šifrovacího textu. Ve všech případech se poslední dva bloky odesílají v jiném pořadí než odpovídající bloky prostého textu.
- Dn = Pn || Ocas (En−1, B−M). Podložka Pn s bity nižšího řádu od En−1.
- Cn−1 = Šifrovat (K., Dn). Šifrovat Dn vytvořit Cn−1. Pro prvního M bitů, to je ekvivalentní tomu, co by se stalo v režimu ECB (jiné než uspořádání ciphertext). Za poslední B−M bitů, je to podruhé, kdy byla tato data zašifrována pod tímto klíčem (již bylo zašifrováno při výrobě En−1 v kroku 2).
Kroky dešifrování ECB
- Dn = Dešifrovat (K., Cn−1). Dešifrovat Cn−1 vytvořit Dn. Tím se zruší krok 4 procesu šifrování.
- En−1 = Cn || Ocas (Dn, B−M). Podložka Cn s extrahovaným šifrovacím textem na konci ocasu Dn (umístěno tam v kroku 3 procesu šifrování ECB).
- Pn = Hlava (Dn, M). Vyberte první M kousky Dn vytvořit Pn. Jak je popsáno v kroku 3 procesu šifrování ECB, první M kousky Dn obsahovat Pn. Tento poslední (případně částečný) blok zařadíme do fronty pro případný výstup.
- Pn−1 = Dešifrovat (K., En−1). Dešifrovat En−1 vytvořit Pn−1. Tím se obrátí krok 1 šifrování.
Šíření šifrovacího textu ECB šíření chyb
Bitová chyba v přenosu Cn−1 by vedlo k celoblokové korupci obou Pn−1 a PnBitová chyba při přenosu Cn by vedlo k celoblokové korupci Pn−1. Toto je významná změna oproti chování ECB při šíření chyb.
Krádež šifrovacích textů CBC
V CBC již existuje interakce mezi zpracováním různých sousedních bloků, takže CTS má v tomto režimu menší koncepční dopad. Šíření chyb je ovlivněno.
Kroky šifrování CBC
- Xn−1 = Pn−1 XOR Cn−2. Exkluzivně-NEBO Pn−1 s předchozím blokem šifrovaného textu, Cn−2, vytvořit Xn−1. To odpovídá chování standardního režimu CBC.
- En−1 = Šifrovat (K., Xn−1). Šifrovat Xn−1 vytvořit En−1. To odpovídá chování standardního režimu CBC.
- Cn = Hlava (En−1, M). Vyberte první M kousky En−1 vytvořit Cn. Poslední blok šifrovaného textu, Cn, se skládá z předních M bity předposledního bloku šifrovacího textu. Ve všech případech se poslední dva bloky odesílají v jiném pořadí než odpovídající bloky prostého textu.
- P = Pn || 0B−M. Podložka Pn s nulami na konci k vytvoření P délky B. Nulová výplň v tomto kroku je důležitá pro krok 5.
- Dn = En−1 XOR P. Exkluzivně-NEBO En−1 s P vytvořit Dn. Pro prvního M bity bloku, to je ekvivalentní režimu CBC; první M bity šifrovacího textu předchozího bloku, En−1, jsou XORed s M bity holého textu posledního bloku holého textu. Nulová výplň P v kroku 4 bylo důležité, protože to dělá operaci XOR na poslední B−M bity ekvivalentní kopírování posledního B−M kousky En−1 do konce roku Dn. Jedná se o stejné bity, které byly odstraněny En−1 v kroku 3, když Cn byl vytvořen.
- Cn−1 = Šifrovat (K., Dn). Šifrovat Dn vytvořit Cn−1. Pro prvního M bitů, to je ekvivalentní tomu, co by se stalo v režimu CBC (jiné než řazení ciphertext). Za poslední B−M bitů, je to podruhé, kdy byla tato data zašifrována pod tímto klíčem (již bylo zašifrováno při výrobě En−1 v kroku 2).
Kroky dešifrování CBC
- Dn = Dešifrovat (K., Cn−1). Dešifrovat Cn−1 vytvořit Dn. Tím se zruší krok 6 procesu šifrování.
- C = Cn || 0B−M. Podložka Cn s nulami na konci pro vytvoření bloku C délky B. Padáme Cn s nulami, které pomohou v kroku 3.
- Xn = Dn XOR C. Exkluzivně-NEBO Dn s C vytvořit Xn. Při pohledu na první M bitů, tento krok má za následek XORing Cn (první M bity procesu šifrování “ En−1) s (nyní dešifrováno) Pn Hlava XOR (En−1, M) (viz kroky 4-5 procesu šifrování). Jinými slovy, CBC jsme dešifrovali první M kousky Pn. Při pohledu na poslední B−M bitů, toto obnoví poslední B−M kousky En−1.
- Pn = Hlava (Xn, M). Vyberte první M kousky Xn vytvořit Pn. Jak je popsáno v kroku 3, první M kousky Xn obsahovat Pn. Tento poslední (případně částečný) blok zařadíme do fronty pro případný výstup.
- En−1 = Cn || Ocas (Xn, B−M). Připojit ocas (B−M) kousky Xn na Cn vytvořit En−1. Jak je popsáno v kroku 3, En−1 se skládá ze všech Cn (který je M bitů dlouhý) připojený k poslednímu B−M kousky Xn. Znovu sestavujeme En−1 (což je stejné En−1 v procesu šifrování) pro zpracování v kroku 6.
- Xn−1 = Dešifrovat (K., En−1). Dešifrovat En−1 vytvořit Xn−1. Tím se obrátí krok 2 šifrování. Xn−1 je stejný jako v procesu šifrování.
- Pn−1 = Xn−1 XOR Cn−2. Exkluzivně-NEBO Xn−1 s předchozím blokem šifrovaného textu, Cn−2, vytvořit Pn−1. Nakonec obrátíme krok XOR z kroku 1 procesu šifrování.
Poznámky k implementaci CBC
Pro krádež šifry CBC existuje chytrá (ale neprůhledná) metoda implementace popsaného procesu krádeže šifry pomocí standardního rozhraní CBC. Použití této metody ukládá výkonnostní trest ve fázi dešifrování jedné další operace dešifrování bloku nad to, co by bylo nutné pomocí vyhrazené implementace.
CBC ciphertext krást šifrování pomocí standardního rozhraní CBC
- Naplňte poslední dílčí blok prostého textu 0.
- Zašifrujte celý polstrovaný prostý text pomocí standardního režimu CBC.
- Zaměňte poslední dva bloky šifrovaného textu.
- Zkraťte ciphertext na délku původního holého textu.
CBC šifrovací text ukradl dešifrování pomocí standardního rozhraní CBC
- Dn = Dešifrovat (K., Cn−1). Dešifrujte předposlední blok šifrovaného textu pomocí režimu ECB.
- Cn = Cn || Ocas (Dn, B−M). Pomocí posledního vložte šifrovací text na nejbližší násobek velikosti bloku B−M bity dešifrování blokové šifry předposledního bloku šifrovacího textu.
- Zaměňte poslední dva bloky šifrovaného textu.
- Dešifrujte (upravený) šifrový text pomocí standardního režimu CBC.
- Zkraťte prostý text na délku původního šifrovacího textu.
Šíření chyby šifrovacího textu CBC
Bitová chyba v přenosu Cn−1 by vedlo k celoblokové korupci obou Pn−1 a PnBitová chyba při přenosu Cn by mělo za následek odpovídající bitovou chybu v Pna v blokové korupci Pn−1.
Reference
- Daemen, Joan (1995). „2.5.1 a 2.5.2“. Návrh funkce šifrování a hašování, strategie založené na lineární a diferenciální kryptoanalýze (PDF) (Disertační práce). Katholieke Universiteit Lovaň.
- Schneier, Bruce (1995). Aplikovaná kryptografie (2. vyd.). John Wiley & Sons, Inc., str. 191, 195. ISBN 978-0-471-12845-8.
- Meyer, Carl H .; Matyas, Stephen M. (1982). Kryptografie: nový rozměr zabezpečení počítačových dat. John Wiley & Sons, Inc., str. 77–85. ISBN 978-0-471-04892-3.
- R. Baldwin; R. Rivest (říjen 1996). Algoritmy RC5, RC5-CBC, RC5-CBC-Pad a RC5-CTS. doi:10.17487 / RFC2040. RFC 2040.
- Dworkin, Morris (říjen 2011). Doporučení pro blokové šifrovací režimy provozu: Tři varianty krádeže šifrovacího textu pro režim CBC (PDF). Americký národní institut pro standardy a technologie (NIST). Dodatek k NIST Special Pub 800-38A.