Fordeler og ulemper med Stream versus Block Ciphers

Krypteringsalgoritmer som Blowfish, AES, RC4, DES og Seal er implementert i en av to kategorier av kodere. Hva er fordelene / ulempene med typen kodere?

Svar

Mens begge er symmetriske koder, er strømkoder basert på generere en «uendelig» kryptograpisk nøkkelstrøm, og bruke den til å kryptere en bit eller byte om gangen (ligner på engangsputen), mens blokkryptering fungerer på større biter av data (dvs. blokker) om gangen, og ofte kombinerer blokker for ekstra sikkerhet (f.eks. AES i CBC-modus).

  • Strømkodere er vanligvis raskere enn blokkering, men det har sin egen pris.
  • Blokkodere krever vanligvis mer minne, siden de fungerer på større deler av data og har ofte «overført» fra tidligere blokker, mens siden strømkoder fungerer på bare noen få biter om gangen, har de relativt lave minnekrav (og derfor billigere å implementere i begrensede scenarier som innebygde enheter, firmware og spesielt maskinvare) .
  • Strømkoder er vanskeligere å implementere riktig, og utsatt for svakheter basert på bruk – siden prinsippene ligner på en engangspute, har nøkkelstrømmen veldig strenge krav. På den annen side at » s er vanligvis den vanskelige delen, og kan lastes ned til f.eks en ekstern boks.
  • Fordi blokkodere krypterer en hel blokk om gangen (og dessuten har «tilbakemeldingsmodus» som er mest anbefalt), er de mer utsatt for støy i overføring, det vil si hvis du ødelegger en del av data, resten er sannsynligvis ikke gjenopprettelig. Mens krypteringskoder bytes krypteres individuelt uten forbindelse til andre deler av data (i de fleste krypteringer / moduser), og ofte har støtte for avbrudd på linjen.
  • Strømkryptere gir heller ikke integritetsbeskyttelse eller autentisering, mens noen blokkrypter (avhengig av modus) kan gi integritetsbeskyttelse i tillegg til konfidensialitet.
  • På grunn av alt ovenfor , er streamkoder vanligvis best for tilfeller der datamengden enten er ukjent eller kontinuerlig – for eksempel nettverksstrømmer. Blokker chiffer, derimot, eller mer nyttig når datamengden er kjent – for eksempel en fil, datafelter eller forespørsels- / responsprotokoller, for eksempel HTTP der lengden på den totale meldingen er kjent allerede på begynnelse.

Kommentarer

  • Den andre punkten er ikke nøyaktig. Forskjellen i minne på grunn av » overføring » fra tidligere blokkeringer er ubetydelig og mye mindre enn forskjellen i minne fra algoritme til algoritme ( Sammenlign f.eks. RC4, med sine 256 byte intern tilstand, med AES, med 0 byte intern tilstand i noen implmeentasjoner). Den siste kula trekker falske skill og er et dårlig råd.
  • @ D.W. 2. kule var » generelt sett «, slik det vanligvis er tilfelle (men jeg godtar at det ikke er strengt nøyaktig).
  • @DW har du noe grunnlag for din kommentar til den siste kula? Hvor er det falske skillet, og hvorfor sier du at dette er dårlig råd?
  • ja, jeg har grunnlag for min kommentar til den siste kula. Det virker bare forvirret over hele linja. Blokkeringskoder er fine for streaming av data; se for eksempel CBC-modus, CTR-modus, etc., for forskjellige driftsmåter som fungerer bra med streamingdata. Blokkeringskoder er ikke begrenset til tilfeller der datamengden er kjent på forhånd. Jeg ‘ er ikke klar over noen grunn til å vurdere streamkoder bedre enn blokkere koder for streaming av data (til tross for navnet).
  • D.W. er riktig: Ordet ‘ Stream ‘ i Stream Cipher gjenspeiler at det er en nøkkelstrøm – en strøm av biter som er kombinert med ren tekst til produsere krypteringsteksten. Det gjenspeiler ikke komposisjonen i ren tekst. Åpenbart er dette en detalj som ofte forvirrer utviklere og ingeniører som sistnevnte vanligvis er underforstått med. Blokk kryptering kan brukes til å manipulere streaming klar tekst helt fint. Ofte forvirrende er også at Block Ciphers kan brukes som Stream Cipher med en passende driftsmåte og når blokkstørrelsen er atomisk (f.eks. 1 byte).

Svar

A block cipher er en allsidig algoritme som implementerer en nøkkel- avhengig permutasjon av verdier som er sekvenser av et fast antall bits (kalt «blokker»). Den kan brukes til forskjellige roller i mange typer kryptografiske protokoller. En slik rolle er massekryptering av lange datastrømmer; for å oppnå noe slikt, må blokkrypteringen brukes med en passende driftsmodus (aka «chaining mode»), den tradisjonelle er CBC, og trendy nyere modus er CTR.

En stream cipher er en spesialisert algoritme for formålet med bulk kryptering av lange datastrømmer. Tanken er at ved å miste allsidigheten til blokkrypteringen, ville det være mulig å lage en mer effektiv algoritme (dvs. noe som krypterer data raskere ).

Begge blokkodningene med en strømorientert krypteringsmodus og strømkryptere, kan komme i sikkerhetsproblemer hvis den samme nøkkelen brukes to ganger, for to forskjellige strømmer, uten å ha en passende, unik / tilfeldig nok Initialiseringsvektor . For CBC-kryptering må IV være en ny, jevn tilfeldig sekvens av biter, av samme størrelse enn en blokk, for hver nye melding. Gode strømkoder aksepterer også en IV. En tradisjonell strømkryptering kalt RC4 er IV-mindre (spesifikasjonen angir ikke hvor eller hvordan en IV kan settes inn), noe som førte til mye kaos og ga en dårlig navn til konseptet med strømkoder.

For nyere, sikrere (og raskere) strømkoder, se eSTREAM-porteføljen . Disse algoritmene har gått gjennom en ganske grundig analyse av mange kryptografer og betraktes som «ganske sikre».

En strømkryptering kan konverteres til en Pseudorandom Number Generator ved å kryptere en lang bytesekvens med verdien null. Egentlig fungerer mange (men ikke alle) streamkoder internt ved å være en PRNG, og genererer en lang sekvens av nøkkelavhengige pseudo-tilfeldige byte, som deretter blir kombinert (av bitvis XOR) med dataene for å kryptere (eller dekryptere), så kryptering av null byte tilsvarer da å utelate XOR helt. Derfor brukes streamkoder ofte som tilpasset PRNG.

Kommentarer

  • Du glemte å nevne noe som generelt er sikrere (stream vs block).
  • Jeg har ikke glemt det, fordi påstanden ikke gir noen generell mening. Både blokkryptering og strømkryptering kan gi tilstrekkelig sikkerhet hvis de brukes riktig og ikke har ‘ t strukturelle svakheter.
  • » allsidigheten til blokkeringen » Jeg har problemer med denne delen. Hva gjør en blokkryptering iboende mer allsidig? Blokk kryptering kan brukes til å kryptere og autentisere enten begge strømmer (f.eks. TLS) eller pakkedata (f.eks. ESP) og det samme for strømkryptere (f.eks. TLS eller DTLS). Det er tilfeller der en strømkryptering virker mer » naturlig » (f.eks. Kryptering av lyd) eller en blokkryptering virker mer » naturlig » (f.eks. Krypterende disker) men jeg ser bare ikke ‘ ikke mye gap i rimelige applikasjoner for begge.

Svar

En fordel med strømkoder som ikke har blitt nevnt tidligere er at de ikke «t trenger polstring (blokkodere fungerer på komplette blokker, så hvis du ikke har nok data, må du generere litt mer på en eller annen måte). Og overraskelse (egentlig ikke, kryptografi er feltet der Murphy er overalt), kan polstring gjøres feil, som eksemplifisert for eksempel i Praktiske Padding Oracle Attacks .

Også sikkerheten til blokkodere avhenger stort sett av deres driftsmåte, du ser fremdeles ECB brukes her og der til tider, og det er ikke mye bedre enn ingen krypto a t alle.

I utgangspunktet kan du ikke si at den ene er bedre enn den andre, den ene må se på et komplett kryptosystem for å gjøre en sikkerhetsvurdering.

Kommentarer

  • til ditt første avsnitt: det er driftsmåter for blokkodere som ikke ‘ ikke trenger polstring, enten: f.eks. CTR-modus. Så dette er ikke en fordel som er unik for strømkoder. Men +1 til ditt siste avsnitt – vel sagt!
  • Vel jeg ‘ Jeg sier at CTR og OFB er konstruksjoner for å lage en strømkryptering fra en blokkryptering. At ‘ er en annen flott ting med blokkiffer, de kan lett brukes som byggesteiner for andre ting, det være seg strømkoder eller enveis hashes. Strømmekoder er ikke så allsidige.
  • Du glemte å nevne noe som generelt er sikrere (stream vs block).
  • Ingen er sikrere av natur, det ‘ er virkelig hvordan du bruker dem.

Svar

Stream Ciphers krypter dataene i ren tekst med en tilfeldig strøm av bit (vanligvis med en XOR fordi den lett kan reverseres). Hvis du har 128-biters data, vil du bruke en 128-biters psedurandom-strem (nøkkelen din) til å kryptere. ).Så du har 128bit-data, krypteringen bryter dem i blokker (som 4 blokker med 32 biter) og bruker samme transformasjon på hver blokk som skaffer 4 krypterte blokker, som til sammen vil danne det endelige kryptogrammet.

Of Selvfølgelig er Cyphers sikrere, men kostbare å bruke når det gjelder maskinvarekompleksitet. Strømmekoder er raskere og «billige», men de kan være utsatt for sikkerhetsproblemer hvis de implementeres feil.

Kommentarer

  • Siste avsnitt har en rekke faktafeil. Blokkeringskoder er ikke tryggere generelt, og heller ikke nødvendigvis dårligere i maskinvare. Strømmekoder er ikke nødvendigvis raskere eller billigere.
  • @DW: til tross for at strømkoder er vanligvis raskere eller billigere enn blokkryptering, fordi den ‘ er avtalen: en mindre allsidig algoritme som handles for forbedret ytelse. En strømkryptering som tilfeldigvis er tregere og dyrere enn AES / CTR blir bare ikke brukt i det hele tatt.
  • Du glemte å nevne noe som generelt er sikrere (stream vs block).

Svar

Data (tingene som skal krypteres) kommer vanligvis i strømmer. For å kryptere den, må vi benytte en strømkryptering, det vil si en krypteringsalgoritme som er egnet for bruk i en datastrøm. En strøm er en sekvens av biter (eller byte) med vilkårlig, varierende eller uspesifisert lengde.

De beste kodene vi har oppfunnet så langt, er vanligvis blokkiffer. En blokkryptering er i stand til å kryptere en enkelt blokk med fast størrelse; og, etter bevisene rundt oss, er det tilsynelatende lettere å bygge gode blokkrypter enn strømkodere.

Gode nyheter, skjønt. Ved å bruke en gitt blokkryptering i noen bestemte mønstre (en «driftsmåte»), og ved hjelp av bestemte polstringsstrategier, kan vi forvandle hvilken som helst blokkryptering til en strømkryptering! Det betyr at vi kan bruke bedre kodere, som er blokkodere, til å kryptere data, hvorav de fleste kommer i strømmer.

Kommentarer

  • andre setning virker misvisende. Du kan kryptere strømmedata ved hjelp av en blokkryptering ved å bruke hvilken som helst av en rekke standard driftsmåter: f.eks. CBC-modus, CTR-modus osv. AES-CBC er fortsatt en blokkryptering. Faktisk støtter nesten alle standard driftsmåter for blokkodere allerede streaming av data. Videre er en blokkryptering ikke sikker uten en driftsmodus, så det er ‘ som en driftsmodus er en valgfri ting du bare trenger når du vil kryptere streamingdata .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *