Det finns olika driftsätt för blockkryptering, varav några ger ”kryptering” och av vilka vissa ger autentiserad kryptering .
Varför ska jag använda ett autentiserad kryptering -läge snarare än bara ett krypteringsläge?
Denna fråga inte syfta till att diskutera olika lägen för autentiserad kryptering vrs krypteringslägen (även om ett bra svar kan välja att): Syftet är att motivera varför / när AE är bättre än ”vanlig” kryptering.
Kommentarer
- Ett annat svar finns här på Security.SE som skrivet av DW
Svar
Den avgörande skillnaden mellan vanlig kryptering och autentiserad kryptering (AE) är att AE dessutom provi des autenticitet, medan vanlig kryptering bara ger konfidentialitet. Låt oss undersöka dessa två begrepp i detalj.
I den ytterligare texten antar vi att $ K $ är en hemlig nyckel, vilket är känt till auktoriserade parter, men okända för angripare.
Mål
Sekretess (sekretess) betyder att en angripare inte kan få någon information om klartext $ P $ från ciphertext $ E_K (P) $ utom möjligen längden. Med andra ord ser chiffertexten ut som en slumpmässig sträng för de som inte känner till $ K $ , även om de har viss kontroll över klartext. Alla folklorekrypteringsmetoder, från engångsblocket till Enigma, ger konfidentialitet (under vissa antaganden) och bara det.
Data äkthet (integritet) betyder att en auktoriserad part (mottagare), som äger $ K $ , kan kontrollera om mottagningen ved data $ D $ är äkta, dvs den har konstruerats endast av en avsändare som känner till $ K $ . Uppgifterna kan vara klartext eller ciphertext, och det finns en subtil skillnad vad som är autentiskt i varje fall: om ciphertext är autentiserad, vet vi att nyckelägaren godkände ciphertext, men inte nödvändigtvis klartext. Ett traditionellt sätt att uppnå äkthet är att använda Message Authentication Code (MAC): $$ H_K (D) = T, $$ där $ T $ heter tag . I världen med offentlig nyckelkryptografi uppnås samma mål med digitala signaturer.
Vad du behöver
En användare kan vanligtvis bestämma vilka av dessa egenskaper han letar efter. Till exempel, om han vet att en angripare inte kan ändra data, kanske han inte behöver autentisera den. Men om han behöver båda finns det säkra såväl som osäkra sätt att kombinera scheman av två typer. Till exempel är en naiv metod för att använda samma tangent $ K $ i båda scheman farligt osäker för de flesta instanser. Därför rekommenderas ett kombinerat schema.
Autentiserad kryptering
Autentiserad kryptering (AE) ger konfidentialitet och datautenticitet samtidigt. Ett AE-system är vanligtvis mer komplicerat än konfidentialitets- eller autentisitetssystem. Det är dock lättare att använda eftersom det vanligtvis bara behöver en enda nyckel och är mer robust eftersom det finns mindre frihet för användaren att göra något fel (se även en mer detaljerat svar ).
Som en separat funktion kan ett autentiserat krypteringsschema verifiera, men inte kryptera, en del av ingången, som kallas associerad data . Vi kanske till exempel vill kryptera innehållet i ett internetpaket, men vi måste lämna dess rubrik okrypterad men ändå bunden till de interna uppgifterna.
Säkerhet
Vi har ännu inte angett vad vi menar med ett säkert -schema. Tydligen finns det flera säkerhetsföreställningar, och användaren måste välja bland dem enligt de möjligheter han förväntar sig av en motståndare.
För endast sekretess driftsätt de mest populära säkerhetsbegreppet handlar om valda-klartextattacker . Låt $ E $ vara ett krypteringsschema. Vi antar att motståndaren inte bara känner till vissa vanliga texter $ P $ utan också kan välja några av dem för kryptering (detta är en ganska praktisk situation).Därför tillåter vi motståndaren att välja vilken klartext som helst för krypteringen, och många gånger i rad. Vad vi fortfarande behöver från ett säkert schema är att det matar ut slumpmässigt sökta chiffertexter i varje fall: $$ E_K (P_1), E_K (P_2), \ ldots, E_K (P_n) \ sim RandomString (| P_1 | + | P_2 | + \ cdots + | P_n |) $$
Motståndaren kan inte urskilja hela uppsättningen ciphertexts som han får från en utgång från sann slumpmässig bitgenerator av samma längd, även om motståndaren upprepar sina vanliga texter. Det senare kravet innebär att systemet måste vara icke-deterministiskt, och de konfidentialitetslägen som uppfyller dessa krav är antingen probabilistiska eller nonce-baserade.
Jag noterar att det finns folklore säkerhetsuppfattningar som relaterar säkerheten för systemet med förmågan att återställa själva nyckeln $ K $ . Detta var relevant när nyckeln kunde användas någon annanstans, men det är mycket mindre vanligt nu och säkerhetsbegreppet som beskrivs ovan är vanligt.
Säkerheten för äkthetslägen definieras i på ett annat sätt. Låt $ H_K $ vara ett sådant schema med den hemliga nyckeln $ K $ . Vi kräver att om motståndaren väljer data $ D $ som inte har verifierats ännu, så är hans chanser att gissa taggen $ T $ så att $$ H_K (D) = T $$ är försumbara. Om han skickar paret $ (D, T) $ till en verifierare får han svaret $ \ perp $ (fel).
Observera att vi inte har pratat om valda ciphertext-attacker i konfidentialitetslägen. Dessa är attacker när motståndaren också kan skicka sina egna ciphertexts för dekryptering. Även om denna inställning också förekommer i praktiken (även om mindre ofta än valda klartextattacker), kan de system som endast är sekretess inte motstå sådana attacker. För att skapa denna typ av säkerhet måste användaren återvända till autentiserad kryptering .
Säkerheten för autentiserade krypteringsscheman definieras i två delar. För det första, på samma sätt som endast sekretesslägen, måste motståndaren inte kunna skilja chiffertexterna från slumpmässiga strängar. För det andra, oavsett falsk (inte skapad på $ K $ ) krypteringstext som hon skickar för dekryptering, kommer hon troligen att få $ \ perp $ som svar.
Därför ger de autentiserade krypteringslägena dig också säkerhet mot valda ciphertext-attacker om det behövs.
Så fungerar det
Det finns många integrerade autentiserade krypteringsscheman: CCM, GCM, OCB, EAX, etc , där mekanismer som skapar konfidentialitet och äkthet är tätt kopplade. Utformningen av dessa system är långt bortom ämnet. Det finns dock ett enkelt sammansatt schema, känt som Encrypt-then-MAC, som fungerar enligt följande. Låt $ K_1, K_2 $ vara hemliga nycklar, $ P $ vara vanlig text, $ E $ vara något krypteringsläge och $ H $ vara något MAC. Sedan schemat $$ \ Pi_ {K_1, K_2}: M \ rightarrow E_ {K_1} (M) || H_ {K_2} (E_ {K_1} (M)) $$ är ett säkert autentiserat krypteringsschema om $ E $ är ett säkert sekretessläge och $ H $ är ett säkert äkthetsläge.
Ytterligare funktioner i autentiserade krypteringsscheman
Förutom att ge både konfidentialitet och äkthet kan autentiserade krypteringsscheman ha ett antal ytterligare funktioner. Inget schema har dem alla, därför bestäms det bästa valet av användarens inställningar.
-
Säkerhetsnivå . Ett schema garanterar konfidentialitet och datautenticitet bara upp till vissa som är bundna av mängden krypterad data eller dekrypteringsförfrågningar. Denna bundning är vanligtvis mycket lägre än nyckelutrymmet och för AES-baserade lägen överstiger vanligtvis inte $ 2 ^ {64} $ .
-
Parallelism Om det finns många resurser finns det en önskan att köra kryptering, dekryptering eller verifiering parallellt. Lägena som använder kedjning (som de som härrör från CBC-kryptering eller svampkonstruktionen) är svåra att parallellisera.
-
Onlinekryptering Vi säger att ett schema är online, om det tillåter kryptering omedelbart när uppgifterna är tillgängliga, utan kunskap om dess längd.
-
Användning av patent . Ett av de mest intressanta AE-systemen, OCB-läget, är patenterat och är mindre frekvent används och analyseras på grund av denna egenskap.Det är ofta önskvärt att systemet är patentfritt.
-
Tagguppdatering . De flesta scheman, med några få undantag som GCM, kräver att man beräknar nästan hela chiffertexten om en liten del av klartext ändras. Om krypteringstexten kan uppdateras snabbt skulle det möjliggöra mycket snabbare bearbetning av stora mängder krypterad data, t.ex. kryptering av hårddisken.
-
Användning av nonces eller slumpmässig IVs . Nonces och slumpmässiga IV: er leder till distinkta säkerhetsmodeller, som ofta är oförenliga (system kan vara säkra med nonces, men inte med slumpmässiga IVs av samma längd, eller vice versa). Medan nonce-unikheten kan vara svårare att säkerställa behöver de slumpmässiga IV: erna en separat genereringsmekanism för slumptalsnummer och leder till ciphertext-expansion.
-
Variabel nyckel, nonce, eller tagglängd . Alla de tre parametrarna är vanligtvis begränsade av applikationen som använder ett AE-schema. I sin tur har AE-system sina egna, ibland oförenliga begränsningar. Ju mer variabilitet schemat har, desto fler applikationer passar det.
-
Bearbetning av tillhörande data . Alla moderna system möjliggör verifiering av tillhörande data, som inte är krypterad. En del av dem kan emellertid inte förbehandla AD innan klartext är över, vilket kan vara ett straff för föreställningen.
Ytterligare läsning
teknisk rapport av Rogaway är en omfattande undersökning av sekretess – endast lägen, MAC och vissa autentiserade krypteringslägen. Den innehåller också alla formella detaljer om säkerhetsföreställningar.
Kommentarer
- Jag kan tillägga att valet av autentiserat krypteringsschema i stor utsträckning dikteras enligt lämpliga konventioner eller protokoll. Det är mycket vanligt för människor att rynka pannan mot autentiserad kryptering, men i praktiken har jag ’ sett både anpassade implementeringar av MAC-då-kryptera och kryptera-då-MAC har brister än användningar av autentiserad kryptering. Detta beror på att det kräver mycket uppmärksamhet för detaljer för att implementera kombinationen korrekt.
- När det gäller ytterligare egenskaper har det varit viktigt att undvika skapandet av sidokanaler (särskilt tidtagning av sidokanaler) för att bedöma säkerheten av en AE (AD) chiffersvit. I praktiken betyder det att det är möjligt att implementera chiffrering så att den körs i en tid som inte påverkas av nyckeln eller inmatad klartext.
Svar
När vi överför information över en osäker kanal vill vi att våra data ska vara säkra.
Så vad betyder detta? För att diskutera dessa kommer vi att använda den kryptografiska situationen för Alice och Bob. Alice vill skicka något ( klartext ) över en osäker kanal (vad detta betyder kommer att diskuteras) till Bob. Den här kanalen kommer lyssnas på av Eve (en tjuvlyssnare) och Mallory (som försöker störa skadligt) – vad detta innebär kommer att diskuteras med tiden.
Sekretess : När Alice skickar ett meddelande till Bob kräver vi att en avlyssnare Eve som lyssnar på deras kommunikation inte får lära sig något om innehållet i sina meddelanden.
Motivering : Annars kanske Eve lär sig något som Alice / Bob inte vill dela
Lösning: Vi använder kryptering , som förvandlar klartext till en ciffertext som (i en informationsteoretisk mening ) innehåller endast information om klartext som inte går att extrahera. Detta innebär att (parafrasering av Goldwasser ) något ing Eve kan lära sig om klartext med tanke på att hon känner till ciphertext, hon kan också härleda utan ciphertext.
Även i det här fallet måste vi vara försiktiga. Bara för att ett schema håller emot en passiv angripare (någon som bara lyssnar på meddelandeströmmen), gör det inte starkt mot en aktiv angripare. Tänk till exempel på CBC -läget används. Det är säkert under IND – CPA , vilket du kanske känner gör det säkert. I spelet CCA tillåter vi dock angriparen att begära dekryptering av meddelanden (även om inte kryptering av krypteringstexten) Vad han kan göra, givet ciphertext $ c = {\ small IV} \ mathbin \ | c_1 \ mathbin \ | \ dots \ mathbin \ | c_n $ är be om dekryptering av $ c ”= a \ mathbin \ | c $, där $ a $ är något icke-tomt meddelande. Detta är inte lika med ciphertext, vilket är tillåtet under spelet, och genom att ta bara de sista $ n $ blocken kan han extrahera dekrypteringen av ciphertext.
Ett sådant exempel är inte så konstruerat som du kanske tror, eftersom det vi modellerar som ett dekrypteringsorakel kan existera genom att angriparen kanske kan få strängar dekrypterade, men att de data de kan be om dekryptera kan behöva börja med en specifik sträng (liknar tanken på en SQL-injektion).
Äkthet : När Bob får ett meddelande vet han att det definitivt var från Alice.
Motivering: Annars kan Mallory skicka ett meddelande till Bob och hävda att det är från Alice utan att Bob vet. ”är väldigt skonsam med vad det betyder för Mallory att skapa ett falskt meddelande – han vinner om han kan skapa något meddelande som Bob accepterar (även om det nästan är detsamma som ett som Alice redan har skickat honom). Det finns många sätt att göra detta, till exempel omspelning, ombeställning eller bit-flipping-attacker.
Lösning: För att uppnå autentisering ensam kan vi använda en MAC .
Äkthet och konfidentialitet : Alice och Bob kommunicerar konfidentiellt och varje meddelande är giltig.
Motivering: Om en ström bara är konfidentiell (dvs. kryptering men inte autentiserad kryptering) kan en avlyssnare kunna ändra meddelandet under transport, även om de inte skulle veta vad det här var. Antag till exempel att Alice & Bob använder helt säkert One Time Pad ( OTP ) med hemlig nyckel $ k $ och meddelande $ m $:
$$ A \ text {skickar} c = m \ oplus k \ till B \\ \ prec M \ text {avlyssnar} c \ succ \\ M \ text {skickar} c ”= c \ oplus h \ till B \ text {(för ett visst värde} h) \\ B \ text {mottar} c” \ text {från M, men tror att det är} c \ text {skickat från} A \\ B \ text {dekrypterar} m ”= c” \ oplus k = c \ oplus h $$ Detta innebär att $ B $ har fått meddelandet $ m ”$, men han tror att det är $ m $.
Så antar att protokollet inte är autentiserat och Mallory vet att meddelandet Alice kommer att skicka Bob är” Jag går med på att skicka £ ??? till konto # ???? ”för vissa värden på ???. Även om de inte kan ta reda på exakt vad kontot är, och så kanske de inte kan skicka betalningen till sitt eget konto, kan de ändra det så att det inte längre är Alice: s konto.
Lösning: Autentiserad kryptering!
En bra artikel som förklarar behovet av AE är det här blogginlägget av Matthew Green. En mer teknisk introduktion till driftsmetoder är denna uppsats av Rogaway.
Kommentarer
- Det enda krypteringsschemat som säkerställer informationsteoretisk säkerhet är engångsblocket. IND-CPA-krypteringsscheman garanterar bara att informationen inte kan extraheras från chiffertexten av en probabilistisk polytidsmotståndare.
- Ah ja det var oklart (/ felaktigt!) skrivet. Tack för att du redigerade det i – jag tänkte sätta det som ’ innehåller ingen information < som kan extraheras > ’
- Egentligen många ” endast sekretess ” -lägen ger faktiskt inte ens ’ t ger god konfidentialitet när de attackeras av en aktiv angripare (som kan modifiera meddelandena eller montera vald klartext eller valda ciphertext-attacker) . Därför måste dessa lägen i praktiken (för en kommunikationskanal) användas tillsammans med någon MAC även för att bara få den konfidentiella delen. Ett AE-läge kombinerar bara dessa till ett.
- @ PaŭloEbermann / Någon annan: Jag tror verkligen inte ’ att jag ’ har skrivit ett bra svar här (trots allt på fredagskvällen!) men jag ville bara lägga ner några första tankar. Lägg gärna till dina egna svar / redigera den här / skriv din egen av detta. Om människor tycker att mitt svar är ” tillräckligt nära ” till en bra (som läser igenom det gör jag ’ t) då är du ’ välkommen att bara redigera, eller återanvända mina ord i dina.
- Jag tror att AE också ger integritet ( sv.wikipedia.org/wiki/Authenticated_encryption ) så kanske du vill lägga till det också ..