Fordele og ulemper ved Stream versus Block Ciphers

Krypteringsalgoritmer som Blowfish, AES, RC4, DES og Seal implementeres i en af to kategorier af cifre. Hvad er fordele / ulemper ved typen af cifre?

Svar

Mens begge er symmetriske cifre, er streamciphers baseret på generere en “uendelig” kryptograpisk nøglestrøm og bruge den til at kryptere en bit eller byte ad gangen (svarende til engangspuden), hvorimod blokkoder arbejder på større stykker data (dvs. blokke) ad gangen og ofte kombinerer blokke for yderligere sikkerhed (f.eks. AES i CBC-tilstand).

  • Streamkodere er typisk hurtigere end blokering, men det har sin egen pris.
  • Blockcifre kræver typisk mere hukommelse, da de arbejder på større stykker data og har ofte “overført” fra tidligere blokke, hvorimod da streamkodere kun fungerer på et par bits ad gangen, har de relativt lave hukommelseskrav (og derfor billigere at implementere i begrænsede scenarier som indlejrede enheder, firmware og specielt hardware) .
  • Streamkodere er sværere at implementere korrekt og tilbøjelige til svagheder baseret på brug – da principperne ligner en engangspude, har keystream meget strenge krav. På den anden side er det ” s er normalt den vanskelige del og kan downloades til f.eks en ekstern kasse.
  • Fordi blokcifre krypterer en hel blok ad gangen (og desuden har “feedback” -tilstande, der anbefales mest), er de mere modtagelige for støj i transmission, det vil sige hvis du ødelægger en del af data, resten er sandsynligvis uoprettelig. Mens stream ciphers bytes individuelt krypteres uden forbindelse til andre data klumper (i de fleste chifre / tilstande) og ofte understøtter afbrydelser på linjen.
  • Strømkodere giver heller ikke integritetsbeskyttelse eller godkendelse, mens nogle blokkodere (afhængigt af tilstand) kan give integritetsbeskyttelse ud over fortrolighed.
  • På grund af alt ovenstående er streamkodere normalt bedst i tilfælde, hvor datamængden enten er ukendt eller kontinuerlig – såsom netværksstrømme. Blok cifre på den anden side eller mere nyttigt, når mængden af data er forud kendt – såsom en fil, datafelter eller anmodnings- / svarprotokoller, såsom HTTP, hvor længden af den samlede meddelelse allerede er kendt på starten.

Kommentarer

  • 2. punkt er ikke korrekt. Forskellen i hukommelse på grund af ” overførsel ” fra tidligere blokke er ubetydelig og meget mindre end forskellen i hukommelse fra algoritme til algoritme ( sammenlign f.eks. RC4 med sine 256 bytes intern tilstand med AES med 0 byte intern tilstand i nogle implmeentationer). Den sidste kugle trækker falske forskelle og er dårligt råd.
  • @ D.W. 2. kugle var ” generelt set “, da det typisk er tilfældet (men jeg accepterer, at det ikke er strengt nøjagtigt).
  • @DW har du noget grundlag for din kommentar til den sidste kugle? Hvor er den falske skelnen, og hvorfor siger du, at dette er dårligt råd?
  • ja, jeg har et grundlag for min kommentar til den sidste kugle. Det virker bare forvirret over hele linjen. Blokeringskoder er fine til streaming af data; se fx CBC-tilstand, CTR-tilstand osv. for forskellige driftsformer, der fungerer fint med streaming af data. Blokeringskoder er ikke begrænset til tilfælde, hvor mængden af data er kendt på forhånd. Jeg ‘ er ikke opmærksom på nogen grund til at overveje streamkodere bedre end blokcifre til streaming af data (på trods af navnet).
  • D.W. er korrekt: Ordet ‘ Stream ‘ i Stream Cipher afspejler, at der er en keystream – en strøm af bits, der kombineres med almindelig tekst til producere ciphertext. Det afspejler ikke sammensætningen af almindelig tekst. Dette er åbenbart en detalje, der ofte forvirrer udviklere og ingeniører, som sidstnævnte normalt er underforstået med. Blokeringskoder kan bruges til at manipulere streaming almindelig tekst fint. Også forvirrende er ofte, at blokcifre kan bruges som en streamcipher med en passende driftsform, og når blokstørrelsen er atomisk (f.eks. 1 byte).

Svar

A blokciffer er en alsidig algoritme, der implementerer en nøgle- afhængig permutation af værdier, som er sekvenser af et fast antal bits (kaldet “blokke”). Det kan bruges til forskellige roller i mange slags kryptografiske protokoller. En sådan rolle er bulk-kryptering af lange datastrømme; for at opnå sådan en ting, skal blokcifringen bruges med en passende driftstilstand (også kendt som “chaining mode”), hvor den traditionelle er CBC, og trendy nyere tilstand er CTR.

En streamcipher er en specialiseret algoritme med henblik på bulkkryptering af lange datastrømme. Ideen er, at ved at miste alsidigheden af blokciffreringen, ville det være muligt at skabe en mere effektiv algoritme (dvs. noget, der krypterer data hurtigere ).

Begge blokcifre med en streamorienteret krypteringstilstand og streamcifre kan komme i sikkerhedsproblemer, hvis den samme nøgle bruges to gange til to forskellige streams uden at have en passende, unik / tilfældig nok Initialiseringsvektor . For CBC-kryptering skal IV være en ny ensartet tilfældig sekvens af bits, af samme størrelse end en blok, for hver ny besked. Gode strømkoder accepterer også en IV. En traditionel streamcipher kaldet RC4 er IV-mindre (dens specifikation angiver ikke, hvor eller hvordan en IV kan indsættes), hvilket førte til meget kaos og gav en dårligt navn til begrebet streamciphers.

For nyere, mere sikre (og hurtigere) streamciphers, se eSTREAM-porteføljen . Disse algoritmer har gennemgået en temmelig grundig analyse af mange kryptografer og betragtes som “ret sikre”.

En streamcipher kan konverteres til en Pseudorandom Number Generator ved at kryptere en lang række bytes med værdien nul. Faktisk fungerer mange (men ikke alle) streamkodere internt ved at være en PRNG og genererer en lang række nøgleafhængige pseudo-tilfældige bytes, som efterfølgende kombineres (ved bitvis XOR) med dataene til at kryptere (eller dekryptere), så kryptering af nulbyte svarer derefter til at udelade XOR helt. Derfor bruges streamciphers ofte som brugerdefineret PRNG.

Kommentarer

  • Du har glemt at nævne, hvilket generelt er mere sikkert (stream vs block).
  • Jeg glemte det ikke, fordi påstanden ikke giver nogen generel mening. Både blokcifre og streamcipere kan give tilstrækkelig sikkerhed, hvis de anvendes korrekt og ikke har ‘ t strukturelle svagheder.
  • ” alsidigheden af blokciffer ” Jeg har problemer med denne del. Hvad gør en blokciffer i sagens natur mere alsidig? Blokcifre kan bruges til at kryptere og godkende enten begge streams (f.eks. TLS) eller pakkede data (f.eks. ESP) og det samme for streamcifre (f.eks. TLS eller DTLS). Der er tilfælde, hvor en streamcipher virker mere ” naturlig ” (f.eks. Kryptering af lyd) eller en blokcipher synes mere ” naturlig ” (f.eks. Kryptering af diske), men jeg ser bare ikke ‘ ikke meget hul i rimelige applikationer for begge.

Svar

En fordel ved streamkodere, der ikke tidligere er nævnt, er at de ikke “t har brug for polstring (blokcifre fungerer på komplette blokke, så hvis du ikke har nok data, skal du generere nogle mere på en eller anden måde). Og overraskelse (ikke rigtig, kryptografi er det felt, hvor Murphy er overalt), polstring kan gøres forkert, som f.eks. eksemplificeret i Praktiske polstring af Oracle-angreb .

Også sikkerheden for blokcifre afhænger stort set af deres driftsform, du ser stadig ECB bruges her og der til tider, og det er ikke meget bedre end ingen krypto a t alle.

Grundlæggende kan du ikke sige, at den ene er bedre end den anden, man må se på et komplet kryptosystem for at træffe en sikkerhedsvurdering.

Kommentarer

  • til dit første afsnit: der er driftsformer for blokcifre, der ikke ‘ ikke har brug for polstring, enten: f.eks. CTR-tilstand. Så dette er ikke en fordel, der er unik for streamkodere. Men +1 til dit sidste afsnit – godt sagt!
  • Nå, jeg ‘ siger CTR og OFB er konstruktioner til at lave en streamkryptering fra en blokciffer. At ‘ er en anden god ting med blokcifre, de kan let bruges som byggesten til andre ting, det være sig streamcifre eller envejs hashes. Streamkodere er ikke så alsidige.
  • Du har glemt at nævne, hvilket generelt er mere sikkert (stream vs block).
  • Ingen er mere sikker af natur, det ‘ er virkelig, hvordan du bruger dem.

Svar

Streamciphers krypter data i almindelig tekst med en tilfældig strøm af bit (normalt med en XOR, fordi den let kan vendes). Hvis du har 128bit-data, bruger du en 128 bit psedurandom-strem (din nøgle) til at kryptere.

Blokcifre krypterer almindelig tekstdata en blok ad gangen med den samme transformation (baseret på nøglen ).Så du har dine 128bit-data, chifferet bryder dem i blokke (som 4 blokke på 32 bit) og anvender den samme transformation på hver blok, der opnår 4 krypterede blokke, som tilsammen udgør det endelige kryptogram.

Af naturligvis på grund af dette Block Cyphers er sikrere, men dyre at bruge med hensyn til hardware-kompleksitet involveret. Stream-koder er hurtigere og “billige”, men de kan være modtagelige for sikkerhedsproblemer , hvis de implementeres forkert.

Kommentarer

  • Sidste afsnit indeholder et antal faktiske fejl. Blokeringskoder er generelt ikke sikrere, og de er heller ikke nødvendigvis dårligere i hardware. Streamcifre er ikke nødvendigvis hurtigere eller billigere.
  • @DW: streamciphers er ikke desto mindre normalt hurtigere eller billigere end blokcifre, fordi det ‘ er handlen: en mindre alsidig algoritme handles for forbedret ydeevne. En streamcipher, der tilfældigvis er langsommere og dyrere end AES / CTR, bliver bare slet ikke brugt.
  • Du har glemt at nævne, hvilket generelt er mere sikkert (stream vs block).

Svar

Data (de ting, der skal krypteres) kommer normalt i streams. For at kryptere det er vi nødt til at anvende en streamcipher, det vil sige en krypteringsalgoritme, der er egnet til brug i en datastrøm. En stream er en sekvens af bits (eller bytes) med vilkårlig, varierende eller uspecificeret længde.

De bedste cifre, vi hidtil har opfundet, er normalt blokcifre. En blokciffer er i stand til at kryptere en enkelt blokformat med fast størrelse; og ifølge beviserne omkring os er det tilsyneladende lettere at opbygge gode blokcifre end streamcifre.

Gode nyheder dog. Ved at bruge en given blokciffer i nogle bestemte mønstre (en “funktionsmåde”) og ved hjælp af bestemte polstringsstrategier kan vi omdanne enhver blokcipher til en streamcipher! Det betyder, at vi kan bruge de bedre cifre, som er blokcifre, til at kryptere alle data, hvoraf størstedelen kommer i streams.

Kommentarer

  • anden sætning virker vildledende. Du kan kryptere streamingdata ved hjælp af en blokcipher ved hjælp af en hvilken som helst af et antal standardfunktioner: fx CBC-tilstand, CTR-tilstand osv. AES-CBC er stadig en blokciffer. Faktisk understøtter næsten alle standardtilstande for blokcifre allerede streaming af data. Desuden er en blokciffer ikke sikker uden en driftsform, så den ‘ er ikke som en driftsform, er en valgfri ting, som du kun har brug for, når du vil kryptere streamingdata .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *