Wat is het voordeel van XTS ten opzichte van de CBC-modus (met diffuser)?
Geplaatst op november 30, 2020 door adminIk heb wat problemen met het begrijpen van het “voordeel” van AES-XTS vergeleken met CBC met diffuser.
Ik heb iets gelezen over FileVault , in dit artikel noemen ze de twee bewerkingsmodi XTS en CBC (met diffuser) en de voordelen van XTS.
Beide modi coderen data-eenheden bijna op dezelfde manier. Voor CBC wordt het sectornummer op de een of andere manier gebruikt om de IV te bouwen, voor XTS is er een “tweak-waarde”, die ook (op de een of andere manier) de blokoffset omvat, zodat elk datablok onafhankelijk kan worden gecodeerd (is logisch bij het coderen van harde schijven / partities). Ik kan het voordeel van XTS niet echt zien.
Nu schrijven ze het volgende over XTS:
Er zijn verschillende voordelen ten opzichte van alternatieven zoals AES in CBC: er is geen vereiste voor een initialisatievector (de tweak-sleutel kan worden afgeleid uit het bloknummer); elk blok is anders gecodeerd (aangezien de tweak-waarde anders zal zijn); en in tegenstelling tot AES-CBC, voorkomt AES-XTS dat een aanvaller één specifiek bit in een gegevenseenheid wijzigt door elke AES-invoer te xorsen met een andere verschoven versie van de gecodeerde tweak.
Misschien vergelijken ze XTS gewoon met CBC (zonder diffuser) … zo ja, kent iemand dan enig voordeel van XTS?
En kan iemand het tweede voordeel uitleggen: “AES- XTS voorkomt dat een aanvaller een specifiek bit in een gegevenseenheid wijzigt door elke AES-invoer te xorsen met een andere verschoven versie van de gecodeerde tweak. “?
Reacties
- Welke ' s " diffuser "? " het sectornummer is op de een of andere manier " hoe? Je hebt het schema niet ' niet duidelijk omschreven. Als het algoritme voorspelbaar is, leidt dit tot zwakke punten, en een onvoorspelbaar algoritme is duur.
- @CodesInChaos Ik denk dat de verwijzing is naar Microsoft ' s gebruikte Elephant-diffuser in BitLocker ( download.microsoft.com/download/0/2/3/… – waarschuwing: download PDF ).
- Welkom bij Cryptography Stack Exchange. Uw vraag is hier naartoe gemigreerd omdat deze niet direct gerelateerd is aan softwareontwikkeling (het onderwerp Stack Overflow), maar omdat het hier meer on-topic is. Registreer hier ook uw account om te kunnen reageren en een antwoord te kunnen accepteren.
Answer
XTS vs. Undiffused CBC. Het probleem hier is maakbaarheid . Zowel XTS als CBC voorkomen dat een aanvaller informatie over gecodeerde gegevens leert. Geen van beiden slaagt er echter volledig in om te voorkomen dat een aanvaller knoeit met versleutelde gegevens.
Het is echter aantoonbaar gemakkelijker om met een (niet-verstrooide) CBC-cijfertekst te knoeien dan met knoeien met een XTS-cijfertekst. Laten we zeggen dat een aanvaller toevallig een bericht kent:
“blah blah Geef Alice \ $ 400 … blah blah blah “.
Als dit bericht is gecodeerd met CBC, kan de aanvaller de cijfertekst zodanig manipuleren dat het nu wordt gedecodeerd naar
“blah blah! ^% @ ^^ Geef Alice \ $ 800 blah blah blah”
De \ $ 400 is \ $ 800 geworden. Dit is waar uw citaat over “AES-XTS voorkomt dat een aanvaller een specifiek bit in een gegevenseenheid wijzigt” verwijst. Hier schrijf ik! ^% @ ^^ om aan te geven dat het vorige blok van 16 bytes wartaal wordt zodra het is gedecodeerd, en dit gebrabbel valt buiten de controle van de aanvaller.
Aan de andere kant, met behulp van XTS voorkomt deze aanval. De aanvaller kan een bericht corrumperen door elk blok van 16 bytes in willekeurig gebrabbel te veranderen, maar hij zal niet dezelfde mate van controle kunnen hebben als in het CBC-voorbeeld.
Maar Microsoft besloot toch geen gebruik te maken van XTS. De reden is dat de mogelijkheid om een blok van 16 bytes te corrumperen nog steeds schadelijk kan zijn. Hier is het citaat van de papieren dchest gelinkt:
Er kan bijvoorbeeld een configuratiebestand (of registervermelding) zijn met een waarde die, indien ingesteld op 0, een beveiligingslek in het besturingssysteem creëert. Op de schijf ziet de instelling er ongeveer zo uit als “enableSomeSecuritySetting = 1”. Als het begin van de waarde op een 16-byte-grens valt en de aanvaller de waarde in platte tekst willekeurig maakt, is er een $ 2 ^ {16} $ kans dat de eerste twee bytes van de leesbare tekst zal 0x30 0x00 zijn, wat een tekenreeks is die de ASCII-waarde 0 codeert.
(Dit citaat verwijst naar het LRW-tweakbare cijfer, maar de aanpasbare XEX-code die in XTS wordt gebruikt, heeft hetzelfde probleem).
Een diffuser toevoegen. een diffuser is de oplossing van Microsft voor dit probleem.Het idee hier is om de leesbare tekst te “mixen” alvorens deze te versleutelen, zodat een aanvaller “niet \ $ 400 in \ $ 800 kan veranderen — zich bemoeien met een deel van de cijfertekst zal bijna de hele platte tekst veranderen, niet alleen kleine delen ervan.
Dit klinkt goed, maar er is een addertje onder het gras: niemand weet eigenlijk of de diffuser van Microsoft echt veilig is. Voor zover ik weet, heeft het geen gepubliceerde formele analyse van cryptografen ontvangen. Dit betekent dat u sceptisch moet zijn als u erop vertrouwt. Microsoft erkent dit:
Aan de andere kant is de diffuser een nieuw onbewezen algoritme, en dit leidt onvermijdelijk tot vragen. Zonder uitgebreide openbare controle en analyse van een algoritme is er een gerechtvaardigde scepsis over de veiligheid ervan. Mensen zijn terughoudend om nieuwe algoritmen te vertrouwen. Dus waarom hebben we eigenlijk voor deze optie gekozen? Uiteindelijk hebben we besloten dat dit de betere keuze was voor ons product. De prestatiewinst ten opzichte van de alternatieven was belangrijk genoeg om op te wegen tegen de nadelen van een nieuw diffuser-algoritme. De tijd zal uitwijzen of we de juiste keuze hebben gemaakt.
Waar het op neerkomt. XTS is minder kneedbaar dan ongediffundeerde CBC. CBC + Diffuser is echter waarschijnlijk minder kneedbaar dan XTS, althans voor praktische doeleinden.
Een belangrijke kanttekening. CBC noch XTS zijn ontworpen om niet-kneedbaar te zijn. Ervoor zorgen dat er niet met cijferteksten wordt geknoeid, is een apart probleem dat moet worden opgelost met behulp van Message Authentication Codes (MACs), zoals HMAC-SHA256. De redenen waarom MACs niet typisch worden gebruikt voor coderingsalgoritmen op volledige schijf zijn (1) prestatieproblemen en (2) het gebruik van een MAC vereist het opslaan van extra informatie met de cijfertekst, wat het transparant toevoegen ervan een beetje lastig maakt.
Een middenweg tussen MACs en diffusers zou zijn om een wide-block encryptiemodus te gebruiken, zoals CMC, EME of HEH. Je kunt deze beschouwen als een “ingebouwde” diffuser, waardoor ze niet kneedbaar zijn. In tegenstelling tot de diffuser van Microsoft, hebben deze algoritmen formele beveiligingsdefinities en door vakgenoten beoordeelde wiskundige bewijzen. Ze zijn veilig in de veronderstelling dat AES veilig is. Microsoft heeft ervoor gekozen deze niet te gebruiken vanwege (1) prestatieproblemen en (2) patenten.
Opmerkingen
- In de context van eenvoudige schijfversleuteling MACs zijn ' niet goed genoeg. U ' zult een hashtree nodig hebben met een geverifieerde root.
- bedankt voor dit geweldige antwoord !!! dit maakte alles duidelijk … 5 *****
- Waarschijnlijk heeft dit ' geen werk opgeleverd, maar ' Kan het probleem van maakbaarheid worden opgelost door dezelfde gegevens tweemaal te versleutelen met verschillende wachtwoorden en / of verschillende algoritmen? Dus waarom zou u, in plaats van een onbewezen diffuser-algoritme te gebruiken, niet opnieuw bewezen AES gebruiken?
- @Yura Dat hangt af van hoe AES wordt gebruikt (XTS wordt bijvoorbeeld meestal bovenop AES gebouwd). Als je de CTR-AES-modus twee keer gebruikt, wordt het resultaat niet ' minder kneedbaar (als je een beetje in de cijfertekst omdraait, wordt het corresponderende bit nog steeds in de platte tekst omgedraaid). Als je de CBC-AES-modus twee keer gebruikt, kun je nog steeds dezelfde aanval uitvoeren die ik in mijn antwoord noemde, maar de lengte van de ongecontroleerde willekeurige " garbage " sectie zal verdubbelen. Ten slotte zou het gebruik van AES in een veilige " wideblock " modus sowieso ongeveer net zo snel zijn als elk van deze oplossingen. U kunt dat net zo goed doen.
- Update: Windows 10 biedt de mogelijkheid om de XTS-modus te gebruiken. Nog grotere / slechtere update: in Windows 8 VERWIJDERDE Microsoft de diffuser. Dus windows 8 bitlocker heeft geen ' zelfs de diffuser.
Geef een reactie