Luin että
Tyypillinen virta salaus salaa yksinkertaisen tekstin yksi tavu kerrallaan, vaikka virta-salaus voidaan suunnitella toimimaan yhdellä bitillä kerrallaan tai tavua suuremmilla yksiköillä kerrallaan.
(Lähde: Salaus ja verkkoturva , William Stallings.)
Lohkon salaus salaa yhden lohkon kerrallaan. Lohko voi olla yhden tavun kokoinen tai enemmän tai vähemmän. Tämä tarkoittaa sitä, että voimme myös salata yhden tavun lohkon stream-salauksen avulla.
Mikä siis on ero stream-salauksen ja lohkosalauksen välillä?
Kommentit
- IMHO: n monet käsitteet / määritelmät eivät ole aivan selkeitä, mutta niillä on tavallaan rajat melko joustavasti. Niitä käytetään sellaisin tavoin, koska ne ovat käteviä diskurssissa, missä yleensä on sopivia konteksteja tarkemman ymmärtämisen helpottamiseksi. Siksi on olemassa irtisanomisia. Oletan, että hyvä analogia asiaan on ” rikas mies ” vs. ” huono mies ”.
- Kysymyksen ensimmäinen kappale näyttää kopioitavan sanasta sanaan Salaus ja verkkoturva (William Stallings, osa 6.3). Sinun on aina määritettävä ulkoisen lähteen kopioidun materiaalin lähde; katso crypto.stackexchange.com/help/referencing .
- Suoran salaus voi käyttää tai ’ kääri ’ lohkon salaus. Esim. AES SIC: ää voidaan käyttää avaimen virran luomiseen. Sillä, että avainvirta on N kertaa lohkokokoinen, ei ole mitään merkitystä salauksen / tavallisten tekstien pituudelle.
Vastaus
A lohkon salaus on deterministinen ja laskettava funktio $ k $ -bit-avaimista ja $ n $ -bit (selkokielinen) lohkot $ n $ -bit (salaus) lohkoihin. (Yleisemmin sanottuna lohkojen ei tarvitse olla bittikokoisia, $ n $ -merkkilohkot sopisivat myös tähän.) Tämä tarkoittaa, kun salaat sama selkokielinen lohko samalla avaimella, saat saman tuloksen. (Normaalisti haluamme myös, että funktio on käännettävä, ts. Että avaimen ja salatun tekstilohkon perusteella voimme laskea selkeän tekstin.)
Jos haluat tosiasiallisesti salata tai purkaa minkä tahansa kokoisen viestin, sinun ei tarvitse ” t käytä salaussalaa suoraan, mutta laita se toimintatilaan . Yksinkertaisin tällainen tila olisi elektroninen koodikirjamuoto (ECB) , joka yksinkertaisesti leikkaa viestin lohkoina, käyttää salausta jokaiseen lohkoon ja antaa tuloksena olevat lohkot. (Tämä ei kuitenkaan yleensä ole suojattu tila.)
Jotkut Caesarin käyttämät kaltaiset varhaiset salausjärjestelmät voidaan luokitella ”lohkosalaukseksi, jossa on 1-merkkisiä lohkoja EKP: ssä” Tai yleensä kaikki, joilla on koodikirja .
Käytämme yleensä muita toimintatiloja, joihin kuuluu alustusvektori ja jonkinlainen palaute, jotta jokainen lohko jokaisen viestin salaus on tehty eri tavalla.
A virran salaus on funktio, joka kartoittaa $ k $ -bit-avaimet ja mielivaltaisen pituiset selityslaitteet (saman mielivaltaisen pituiseen) salaustekstiin sellaisessa muodossa tapa, jolla selvätekstikartan etuliitteet salakirjoituksen etuliitteisiin, ts. voimme laskea salakirjoituksen alkuosan, ennen kuin selväkielisen tekstin loppuosa tunnetaan. (Usein viestin koot saattavat olla rajoitettuja myös jonkin ”lohkokoon” kerrannaisiin, mutta yleensä pienemmillä lohkoilla, kuten kokonaiset tavut tai vastaava.)
Jos osa selkokielisestä tekstistä toistuu, vastaava salateksti yleensä ei ole sama – viestin eri osat salataan eri tavoin.
Usein tällaiset virta-salaukset toimivat tuottamalla avainvirta todellisesta avaimesta (ja ehkä myös alustusvektorista ) ja sitten yksinkertaisesti XOR: in tekeminen viestin kanssa – näitä kutsutaan synkronisoitujen salausten salaamiseksi
. Muut stream-salaukset saattavat vaihdella viestin tulevien osien salausta edellisten osien mukaan.
Jotkut lohkosalaustilat luovat tosiasiallisesti synkronisen stream-salauksen, kuten CTR ja OFB -tila.
Älä koskaan käytä uudelleen synkronisen stream-salauksen avainta (ja tarvittaessa myös IV: tä) (joka sisältää lohkosalat suoratoistotiloissa) eri viesteille, koska se voi johtaa kompromisseihin. (Ja jopa saman viestin kohdalla se osoittaa, että olet toistanut viestin.)
Huomaa, että todellisessa käytössä haluat myös MAC: n, esim. viestisi eheyssuoja. (Jotkin järjestelmät ovat rikki esimerkiksi valitun salakirjoitetun hyökkäyksen yhteydessä, ja tällainen MAC estää tämän (jos välität viestin salauksen purkijalle vasta tarkistettuasi MAC: n).)
Kommentit
- Milloin valitsisit suoratoiston tai eston välillä? Onko tietoturvassa eroa? Tai salausnopeus?
- @anoopelias Lohkosalaus on yleensä hidasta verrattuna Stream-salaukseen. En myöskään ole varma, mutta mielestäni stream-salakirjoitukset tarjoavat hyvät tietoturvaominaisuudet, kun taas lohkosalat tarjoavat hyvät laskennalliset suojaukset
- Viimeisen kappaleen osalta – voisitteko antaa linkin esimerkkiin, jossa MAC: n lisääminen suojaa valitun salakirjoituksen hyökkäykseltä?
Vastaa
Matemaattisesti lohkosala on vain avain näennäissatunnainen permutaatio -perhe asetettuihin $ \ {0,1 \} ^ n $ / $ n $ -bit-lohkoihin. (Käytännössä vaaditaan yleensä myös tehokas tapa käänteisen permutaation laskemiseksi.) Lohkosala yksin ei ole kovin hyödyllinen käytännöllisessä salauksessa, ainakaan, ellei sinun tarvitse vain salata pieniä viestit, jotka kukin mahtuvat yhteen lohkoon.
On kuitenkin käynyt ilmi, että lohkosalat ovat erittäin monipuolisia rakennuspalikoita muiden salaustyökalujen rakentamiseen: kun sinulla on hyvä lohkosala, voit helposti rakentaa mitä tahansa stream-salauksista hash-funktioihin, viestien todennuskoodeihin, avainten johtamistoimintoihin, näennäissatunnaisten numeroiden generaattoreihin, entropiapooleihin jne. vain yhden lohkosalauksen perusteella.
Kaikki nämä sovellukset eivät välttämättä tarvitsevat salaussalakirjan; esimerkiksi monet niistä voivat perustua mihin tahansa näennäissatunnaisfunktioon , joiden ei tarvitse olla permutaatio (mutta kätevästi siellä on ”sa lemma , joka sanoo, että näennäissatunnainen permutaatio toimii kuitenkin.) Monet rakenteet ovat myös epäsuoria; esimerkiksi voit rakentaa avaimen johtamistoiminnon viestin todennuskoodista, jonka voit koota hash-funktiosta, jonka voit —, mutta älä ”
Lisäksi näissä rakenteissa on yleensä (ehdollisia) suojaustodistuksia, jotka vähentävät tietoturvaa rakennettujen toimintojen vastaavuus taustalla olevan salakoodin kanssa. Siksi sinun ei tarvitse suorittaa työlästä ja epäluotettavaa tehtävää kryptata analysoimalla nämä toiminnot erikseen —, sen sijaan voit keskittää kaikki ponnistelusi salakoodiin, tietäen, että luottamus salakirjoituksen turvallisuuteen tarkoittaa suoraan luottamusta kaikkiin siihen perustuviin toimintoihin.
Kaikki tämä on tietysti erittäin kätevää, jos olet esimerkiksi töissä pieni upotettu alusta, jossa tehokkaan ja turvallisen koodin sisällyttäminen monille erillisille salauksen alkeellisille osille voi olla vaikeaa ja kallista. Mutta vaikka et olisikaan niin rajoitetulla alustalla, matalan tason salakoodin kirjoittaminen ja analysointi voi olla työlästä johtuen tarpeesta kiinnittää huomiota esimerkiksi sivukanavan hyökkäyksiin. . On helpompaa rajoittaa itsesi rajoitettuun määrään matalan tason rakennuspalikoita ja rakentaa kaikki tarvitsemasi niistä.
Myös nopeilla alustoilla, joilla on paljon muistia, kuten pöytätietokoneiden suorittimet, matalan tason salaustoimintojen toteuttaminen suoraan laitteistossa voi olla paljon nopeampi kuin niiden suorittaminen ohjelmistoissa —, mutta sitä ei ole käytännöllistä tehdä useammalle kuin muutamalle niistä Lohkosalat ovat monipuolisuutensa vuoksi erinomaisia ehdokkaita laitteistojen toteuttamiseen (kuten AES-käskysarjassa nykyaikaisille x86-suorittimille).
Entä stream-salaukset?
Matemaattisesti stream-salaus — termin yleisimmässä merkityksessä — on myös avattu kääntyvä näennäissatunnaisfunktioperhe, mutta joukossa $ \ {0,1 \} ^ * $ mielivaltaisen pituisia bittijonoja pikemminkin kuin rajoitetun pituisissa lohkoissa.
(Tässä on joitain hienovaraisuuksia; esimerkiksi useimmat stream-salausrakenteet edellyttävät, että syöttö sisältää ainutlaatuisen nonce -arvon, eikä takaa turvallisuuden — erottamattomuuden kannalta todella satunnaisesta funktiosta —, jos samaa noncea käytetään kahdelle eri tulolle. kääntymättömille funktioille välillä $ \ {0,1 \} ^ * $ ei ole yhtenäistä jakaumaa, josta valita satunnaisfunktiot, meidän on määriteltävä huolellisesti, mitä tarkoittaa, että stream-salaus näyttää ”erotettavissa satunnaiselta”, ja tällä määritelmällä on käytännön turvallisuusvaikutuksia —, esimerkiksi useimmat stream-salaukset vuotavat viestin pituuden. Käytännössä vaaditaan yleensä myös, että stream-salaukset, tosiasiallisesti, ole ”suoratoisto”, siinä mielessä, että mielivaltaisesti pitkät syötetyt bittivirrat voidaan salata — ja purkaa — käyttämällä o Viestin pituus on jatkuvasti vakio ja aika lineaarinen.)
Suorituskoodisalaus on tietysti paljon välittömämpää kuin lohkosalaus: voit käyttää niitä suoraan minkä tahansa pituisten viestien salaamiseen. On kuitenkin käynyt ilmi, että ne ”ovat myös paljon vähemmän hyödyllisiä rakennuspalikoita muille salaustyökaluille: jos sinulla on lohkosala, voit helposti muuta se stream-salaukseksi , kun taas mielivaltaisen stream-salauksen muuttaminen lohkosalaukseksi on vaikeaa ellei mahdotonta .
Joten miksi ihmiset vaivautuvat suunnittelemaan omistettuja stream-salauksia lainkaan, niin jos lohkosalat pystyvät tekemään työn yhtä hyvin? Enimmäkseen syy on nopeus: joskus tarvitset nopean salauksen salaamaan paljon tietoja, ja on joitain todella nopeasti omistetut suoran salauksen mallit siellä. Jotkut näistä malleista on myös suunniteltu erittäin pienikokoisiksi toteutettaviksi joko ohjelmistoissa tai laitteistoissa tai molemmissa, joten jos tarvitset vain suoran salauksen, voit säästää koodin / piirin koossa käyttämällä yhtä näistä salakirjoista yleisen lohkosalauspohjaisen sijasta.
Kuitenkin saavutat nopeudessa ja kompaktuudessa menetät monipuolisuudessa. e xample, ei näytä olevan mitään yksinkertaista tapaa tehdä hash-toiminto stream-salauksesta , joten jos tarvitset jotain näistä (ja tarvitset usein tee, koska hash-toiminnot ovat itsenäisten hyödyllisten lisäksi myös yleisiä rakennuspalikoita muille salaustyökaluille), sinun on toteutettava ne erikseen. Ja arvaa mitä, useimmat hash-toiminnot perustuvat lohkosalauksiin, joten jos sinulla on sellainen, voit myös käyttää samaa lohkosalausta myös salaukseen (ellet todellakaan tarvitse erillisen stream-salauksen raakanopeutta).
Kommentit
- Kysyin, onko tarpeen käyttää kahta erilaista termiä. Selittämänne mukaan virta-salaus on yksinkertaisesti lohkosalauksen erityistapaus, ts. Raja-tapaukselle, jossa n joukossa {0,1} ^ n on 1. Joten väittäisin, ettei nykyistä virtaa säilytetä. terminologioiden erottaminen.
- @ Mok-KongShen Oikeastaan virran salaus ei ole yksinkertaisesti lohkon salaus, jonka lohkokoko on 1 (muu kuin klassiset yksiaakkoset, joiden voidaan olettaa olevan molemmat). Suorakoodin salaus kääntää virran bitit / tavut / … eri tavoin salakoodin nykyisestä sisäisestä tilasta riippuen, kun taas saman tulon lohkosalauksella on sama lähtö (ja sitä käytetään siten yleensä ” toimintatila ” virran salauksen luomiseksi).
- @PauloEbermann. IMHO vastasit minulle kysymykseen CodesinChaosista, joka koski ” dynamiikkaa ja vaihtelevuutta ”.
- @ Mok-KongShen Ei hän ei ’ t. Ainoa etu, jolla erillisellä virta-salauksella on lohkosalaukseen sopivassa tilassa, on suorituskyky. Voit ’ jättää huomiotta ketjutustilat, koska kukaan ei ymmärrä, että hän käyttää salaussalakkeita ilman asianmukaista ketjutusta.
- @CodesInChaos. Eri sovelluksilla on erilaiset suorituskykyvaatimukset. Salata esim. sähköpostia, joka ei ’ ei tarvitse suorituskykyä, joka olisi toivottavaa esimerkiksi videotiedoston salauksessa.
Vastaa
Lohkon salaus itsessään kartoittaa n
-bittejä n
bittiä avaimen avulla. Toisin sanoen se on avainkoodattu näennäissatunnainen permutaatio. Se ei voi hyväksyä pidempiä tai lyhyempiä tekstejä.
Jotta viesti todella salataan, aina tarvitset ketjutustilan. EKP on yksi tällainen ketjutustila (ja todella huono), eikä se ole puhdas salakirjoitus. Jopa EKP koostuu ”lisäkäsittelytoiminnoista”. Näillä ketjutustiloilla voi olla melko erilaisia ominaisuuksia.
Yksi suosituimmista ketjutustiloista, laskuritila (CTR), rakentaa synkronisen virran salauksen lohkosalauksesta.Toinen tila, CFB, rakentaa itsestään synkronoivan stream-salauksen, jonka ominaisuudet ovat jossakin CBC: n ja synkronisen stream-salauksen välillä.
Joten olettamus, että virta- ja lohkosignaalien välillä ei ole salauksia, ei ole totta. Salauskäyttäjät mieluummin rakennat ne hyvin ymmärretystä lohkosalauksen primitiivistä sen sijaan, että luodaan täysin uusi järjestelmä.
Soittaisin Vigenèreä stream-salaukseksi, vaikkakin liian lyhyellä jaksolla. Se käyttää 26-merkkikoodausta 2-symbolisen koodauksen sijasta, mutta se ei tarkoita, että se ei ole virran salaus. Katso Solitaire / Pontifex -sivulta modernin 26-symbolisen stream-salauksen rakenne.
Kommentit
- Jos en ’ erehdy, ” ketjutetaan ” lohkosalausta käytetään yleensä ” -lohkoketjun ” yhteydessä, ts. tehdään peräkkäiset lohkot toisistaan riippuvaisiksi, jotta analyysi on vaikeampi. Joten IMHO EKP: llä ei sellaisenaan ole ketjuttamista.
- Te erehdytte. hyvällä ketjutustilalla on nämä ominaisuudet, mutta huonoja tiloja on silti olemassa!
Vastaa
Salaa on kaksi perustyyppiä.
- Symmetrinen. Se käyttää samaa avainta salaukseen ja salauksen purkamiseen.
- Epäsymmetrinen. Se käyttää kahta erilaista avainta (julkista ja yksityistä) salaukseen ja salauksen purkamiseen.
Estä salaus ja Stream-salaus ovat osa symmetristä salausta. Stream Cipher luo laajennetun avainvirran käyttäjän antamasta avaimesta ja XoR: n sen sitten yksinkertaisella tekstillä (salausta varten) / salaustekstillä (salauksen purkamista varten).
Kun lohkosalaus ottaa syötteen tietolohkon, suorita sillä useita kierroksia yhdessä avainten sekoittamisen kanssa ja tuottaa salakirjoitusteksti. Lohkosipereillä on useita toimintatapoja, joista laskurin (CTR) tila toimii samalla tavalla kuin suoran salaus. Lohkakoodiin syötetään peräkkäinen numero, ja sen lähtö Xored-muodossa Plaintext-tekstillä Ciphertextin tekemiseksi. Tässä toimintatilassa tarvitaan vain salakoodin salauskoodi. Salauksen purkukoodia ei tarvita, salauksen purkamista varten yksinkertaisesti syötetään sama järjestysnumero salakoodin estämiseksi ja Xored sen lähtö Ciphertextillä tavallisen tekstin saamiseksi. Joskus laskurin kanssa käytetään välinpitämättömyyttä, joten syötä lohkon salaus jaetaan kahteen osaan, ts. Kiinteään välitettävään ja inkrementaaliseen laskuriin.
Muu toimintatapa ovat: –
- EKP (tarjoaa luottamuksellisuuden)
- CBC ja napsautussuhde (tarjoaa luottamuksellisuuden ja suojaavat sementtitasolla valitulle selvätekstihyökkäykselle)
- EAX, CCM ja GCM (tarjoaa todennetun salauksen)
Lisätietoja löytyy TÄSTÄ