Salaustila

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 13. syyskuuta 2016 tarkistetusta versiosta . tarkastukset vaativat 48 muokkausta .

Salaustila  - menetelmä käyttää lohkosalausta (algoritmia), jonka avulla voit muuntaa avoimien tietolohkojen sarjan salattujen tietolohkojen sekvenssiksi . Tässä tapauksessa toisen lohkon tietoja voidaan käyttää yhden lohkon salaamiseen .

Tyypillisesti salaustiloja käytetään salausprosessin muuttamiseen siten, että jokaisen lohkon salauksen tulos on ainutlaatuinen riippumatta salattavasta tiedosta, eikä sen rakenteesta voi tehdä johtopäätöksiä. Tämä johtuu ensisijaisesti siitä, että lohkosalaukset salaavat tiedot kiinteän kokoisina lohkoina, ja siksi on olemassa mahdollisuus vuotaa tietoa toistuvista datan osista, jotka on salattu samalla avaimella .

Historia

Vuonna 1981 FIPS 81 -standardi otettiin käyttöön . Standardi kuvasi ensimmäiset lohkosalauksen tilat: ECB, CBC, OFB ja CFB. Vuonna 2001 NIST Institute ( US National Institute of Standards and Technology ) tarkisti tilojen luetteloa ja lisäsi siihen kuvauksen AES - lohkosalauksen toiminnasta CTR-tilassa ( SP800-38A ). Tammikuussa 2010 NIST lisäsi standardiin kuvauksen AES -salauksen toiminnasta XTS-tilassa (SP800-38E).

Standardi ei kuvaa kaikkia tiloja, vaan vain NIST -instituutin hyväksymiä tiloja . Esimerkiksi CTS ( ciphertext stealing )  -tilaa ei kuvata standardissa, mutta se on toteutettu monissa suosituissa kryptografisissa kirjastoissa .

Useat kansallisesti ja kansainvälisesti tunnustetut organisaatiot määrittävät salaustilat. Näistä vaikutusvaltaisin on NIST .

Päätilat

Alla on kuvaus useista lohkosalauksia käyttävistä salaustiloista [1] .

Electronic Codebook (ECB)

GOST 28147-89 : ssä tätä tilaa kutsutaan yksinkertaiseksi vaihtotilaksi .

Salaus:

Anna viesti ( selkoteksti , bittisekvenssi, data).

Salauksen aikana suoritetaan seuraavat toiminnot:

  1. Viesti on jaettu samankokoisiin lohkoihin. Lohkon koko (pituus) on n ja se mitataan bitteinä . Tuloksena on lohkosarja . Viimeinen lohko pehmustetaan tarvittaessa pituuteen [2] [3] .
  2. Jokainen lohko on salattu salausalgoritmilla käyttämällä avainta k :
missä: Tuloksena on salattuja lohkoja .

Salauksen purku:

funktio suorittaa samalla näppäimellä k :

Ominaisuudet:

EKP:n haitat:

Pelkkä teksti kuvana EKP-tilassa salauksella saatu kryptogrammi . Kuvassa näkyy alkuperäisen kuvan piirteitä Ei-ECB-salauksella saatu kryptogrammi . Kuva on näennäissatunnainen pikselien sarja

EKP:n edut:

Tätä tilaa kutsutaan sähköiseksi koodikirjatilaksi, koska on mahdollista luoda kirja, jossa jokainen pelkkä tekstilohko liitetään salatekstilohkoon. Kirjan luominen ei kuitenkaan ole vähäpätöinen tehtävä. Jos lohkon koko on x bittiä, kirja sisältää 2 x merkintää ja jokainen kirja vastaa yhtä avainta.

Cipher Block Chaining (CBC)

Viestin salaamiseksi suoritetaan seuraavat vaiheet [4] .

(alustusvektori on satunnaisluku) IV:n koko (pituus) on yhtä suuri kuin lohkon koko ( n ). missä:

Salauksen purku suoritetaan funktiolla käyttämällä samaa avainta k ja alustusvektoria IV :

CBC:n haitat:

CBC:n edut:

Propagating Cipher Block Chaining (PCBC)

CBC-moodin puutteet johtivat parannetun salauslohkoketjutuksen (Propagating Cipher Block Chaining , PCBC) luomiseen [4] . Luonnollisesti tämä tila on samanlainen kuin CBC, paitsi että edellinen selvätekstilohko ja edellinen salatekstilohko XOR-koodataan nykyisellä selvätekstilohkolla ennen tai jälkeen salauksen. [1] Vastaavasti salauksen purku: missä  on alustusvektori RSVS-salaustilaa käytetään Kerberos 4 -protokollaversiossa, ja sen avulla voit havaita virheet. Tämä salaustila ei ole liittovaltion tai kansainvälinen standardi. PCBC-tila on muunnos CBC-tilasta, jolla on tietty ominaisuus - salatekstivirhe johtaa kaikkien myöhempien lohkojen virheelliseen purkamiseen. Tämä tarkoittaa vastaavasti, että rakennuspalkin tarkistaminen viestin lopussa varmistaa koko viestin eheyden.




Tässä tilassa ei tietenkään ole puutteita, sillä kahden salatekstilohkon vaihtaminen aiheuttaa kahden vastaavan selkeän tekstin lohkon salauksen purkamisen väärin, mutta pelkän tekstin ja salatekstin yli tapahtuvan XOR:n vuoksi lisävirheet kompensoidaan. Jos eheystarkistus tarkistaa vain salauksesta puretun tekstin viimeiset lohkot, saatat päätyä osittain vioittuneeseen viestiin. Vaikka kukaan ei ole vielä hyödyntänyt tätä Kerberoksen haavoittuvuutta, versio 5 on jo siirtynyt CBC-tilaan.

Cipher Feedback (CFB)

Salakirjoituksen palautetila , salauksen takaisinkytkentätila , CFB [ 4 ] . _ _ Salauksen aikana jokainen selkeä tekstilohko lisätään modulo 2 edellisessä vaiheessa salattuun lohkoon.  

CFB:n vahvuus määräytyy käytetyn salauksen vahvuuden mukaan. Selkeän tekstin lohkot "sekoitetaan" ("naamioitu") salatekstin lohkoihin . Jos CFB-tilassa on kaksi identtistä salatekstilohkoa täyden lohkon takaisinkytkennällä, esimerkiksi DES-salauksen tulos seuraavassa vaiheessa on sama. Täyden lohkon takaisinkytkennällä varustetun CFB-moodin salausnopeus on sama kuin lohkosalauksen, ja mahdollisuus rinnakkaista salausproseduuri on rajoitettu [1] .

Output Feedback (OFB)

Lähtöpalautemoodi (OFB) [4] muuttaa lohkosalauksen synkroniseksi stream-salaukseksi: se luo avainlohkoja, jotka ovat seurausta lisäämällä selvätekstilohkoihin salatekstin saamiseksi. Aivan kuten muissakin virtasalauksissa, salatekstin peilaus tuottaa peilatun bitin tavalliseen tekstiin samassa paikassa. Tämä ominaisuus mahdollistaa useiden virheenkorjauskoodien toiminnan normaalisti, vaikka virheenkorjaus käytettäisiin ennen koodausta.

Lisäystoiminnon symmetrian vuoksi salaus ja salauksen purku ovat samanlaisia:

Jokainen lähtöpalautteen lohkosalauksen toiminto riippuu kaikista edellisistä, eikä sitä siksi voida suorittaa rinnakkain. Koska selkeää tekstiä tai salatekstiä käytetään kuitenkin vain lopulliseen lisäykseen, lohkosalauksen toiminnot voidaan suorittaa etukäteen, jolloin lopullinen salaus voidaan suorittaa rinnakkain selkeän tekstin kanssa.
Palautetta k bitin lähdöstä ei suositella turvallisuussyistä . OFB-moodilla on seuraava etu CFB-moodiin verrattuna: häiriöt, jotka aiheutuvat lähetyksestä kohinaisen kanavan kautta, eivät "takerru" koko salatekstiin salauksen purkamisen aikana, vaan ne lokalisoidaan yhteen lohkoon. Selkeää tekstiä voidaan kuitenkin muuttaa tietyillä salatekstilohkojen käsittelyillä. Huolimatta siitä, että OFB-salausta ei voida rinnastaa, voidaan proseduurin tehokkuutta parantaa generoimalla etukäteen riippumaton lohkojono. [yksi]

Tätä menetelmää kutsutaan myös " lähtöpalautemoodiksi ".

OFB ehdottaa myös joitain parannuksia koskien menetelmää itsenäisen lohkosekvenssin muodostamiseksi: seuraavan lohkon saamiseksi ehdotetaan salaamista ei :lla , vaan c:llä , jossa on jokin alustusvektori.

Laskuritila (CTR)

Laskurimoodissa (CTR) [4] palautetaan vastaavan lohkosalausalgoritmin sisääntuloon jonkin alusta lähtien kertyneen laskurin arvo. Tila tekee lohkosalauksen virran, eli se generoi sekvenssin, johon XOR-toimintoa sovelletaan sanomatekstin kanssa. Selvällä tekstillä ja salatekstilohkolla on sama lohkokoko kuin alla olevalla salauksella (kuten DES tai AES ). [5] CTR-tila tarjoaa seuraavat toiminnot.

Salaus napsautussuhdetilassa

Salauksen purku CTR-tilassa

 — i:nnen lohkon laskuriarvo.

Ilmeisesti laskuriarvojen on oltava yksilöllisiä kullekin tietyllä salauksella annetulla avaimella koodaaman selkeän tekstin lohkolle (muuten identtisillä laskuriarvoilla salatut salatekstilohkot ovat vaarassa). Tämä vaatimus täytetään kahdessa vaiheessa.

Ensinnäkin yksittäisen viestin sisällä olevien lohkojen salaamisen laskuriarvot saadaan alkuperäisestä laskurin arvosta käyttämällä lisäystoimintoa. Satunnaisuuden varmistamiseksi lisäyksen määrä voi riippua lohkon numerosta. Vakioinkrementtitoimintoa voidaan soveltaa koko laskurilohkoon tai sen osaan. Esittää laskurin arvon b-bitin lohkoa ja olkoon lisäysfunktio sovellettavissa m vähiten merkitsevään bittiin.

 on ketjutusfunktio ;  - alemmat bitit;  - vanhempi bittiä. Laskuriarvojen ainutlaatuisuus varmistetaan kaikille viestin lohkoille, jos . Missä  on niiden lohkojen määrä, joihin viesti on jaettu.

Toiseksi kunkin viestin alkuperäiset laskuriarvot valitaan sen varmistamiseksi, että kaikki käytetyt laskuriarvot ovat yksilöllisiä. Tämä voidaan saavuttaa monella tapaa. Esimerkiksi, jos viestit salataan peräkkäin, tulos, kun inkrementifunktiota käytetään edellisen viestilaskurin viimeiseen arvoon, voidaan käyttää tämän viestin laskurin alkuarvona. Lisäksi, jos lisäysfunktio käyttää m bittiä, selkotekstilohkojen kokonaismäärä ei saa ylittää . Toinen lähestymistapa ehdottaa laskurin binääriesityksen jakamista kahteen osaan. Merkittävimmille numeroille annetaan viestin nonce, ja lisäystoimintoa [6] sovelletaan muihin numeroihin .

Palautteen puuttuessa salaus- ja salauksenpurkualgoritmit CTR-tilassa voidaan suorittaa rinnakkain. Lisäksi laskuriarvojen salaukseen liittyvä suuri määrä laskentaa voidaan tehdä etukäteen, ennen kuin selväteksti tai salateksti on saatavilla. Tämä antaa CTR-tilalle edun CFB- ja OFB-tiloihin verrattuna.

Random Delta (RD)

Random Delta -tilaa käytetään estämään laskurin muutosten ennustettavuus CTR-tilassa. Tämä on esimerkiksi AES, ja lohkon koko on 16 tavua. Otetaan satunnainen alustusvektori (esimerkiksi käyttämällä RdRand ). Sen alempia 8 tavua pidetään satunnaisena deltana - Random Delta (RD):

Alkuteksti (Initialization Vector) salataan ja lähetetään viestin alussa. Lohko 0 XOR-koodataan Initialilla ennen salausta. Jokaisessa myöhemmässä lohkossa Initialin arvo kasvaa Deltalla (etumerkittömässä kokonaislukumuodossa - uint128 += uint64):

Tämä eliminoi laskurin muuttamisen ennustettavuuden CTR-tilassa. Jos delta on aina yksi, tässä delta on satunnaisluku, yksi luvusta 2^64. Se, kuten Initial, on hyökkääjälle tuntematon.

CTR on myös hälyttävä, koska selväkieli on suorassa lähellä salatekstiä XOR:n kautta. Random Deltassa AES on selvätekstin ja salatekstin välissä.

Myös alkuperäisen lähetyksen avoimuus herättää kysymyksiä. Mitä vähemmän hyökkääjä näkee, sen parempi. Mitä kauempana selväteksti on salatekstistä, sitä parempi. Kaikissa tunnetuissa tiloissa - ECB, CBC, OFB, CTR - on joitain näistä puutteista. Random Deltassa kaikki on AES:n takana, ja Initial ja Delta ovat satunnaismuuttujia , joita hyökkääjä ei tunne.

Yksi napsautussuhteen haitoista RD:ssä on kuitenkin olemassa. Lähetettyjen tietojen muodon tunteminen mahdollistaa satunnaisten vääristymien heittämisen tämän tiedon tiettyihin paikkoihin, joita voidaan käyttää hyökkäykseen. Hajautus voidaan lisätä lohkosekvenssiin eheyden tarkistamiseksi:

Näyttää siltä, ​​​​että Random Delta + Hashilla ei ole näitä haittoja. Siirretty julkiseen käyttöön.

Tärkeä seikka: suljetun tekstin ja avoimen tekstin välillä täytyy olla paljon AES-permutaatioita, muuten se heikentää salaussyvyyttä. Suljettu teksti avoimen tekstin funktiona pelkän XOR:n kautta mitätöi AES:n antaman salaussyvyyden (eli tätä menetelmää käyttävät OFB-, CFB-, CTR-tilat).

Random Deltan turvallisuus ei ole paljon alhaisempi kuin itse AES:n.

Jos tarvitaan suurempaa delta-satunnaisuutta (esimerkiksi 128-bittinen), se voidaan generoida erikseen ja lähettää viestin alussa yhdessä Initialin kanssa.

Kuten CTR, Random Delta antaa sinun salata / purkaa lohkoja rinnakkain paremmalla suorituskyvyllä odottamatta edellisen lohkon salausta / salauksen purkamista (joka on välttämätön CBC:ssä, PCBC:ssä, CFB:ssä, OFB:ssä).

"Random Delta 128" -tila erottuu erillisen 128-bittisen Initial- ja Delta-tilan käytöstä. Antaa lisää satunnaisuutta varjolle.

Galois/Counter Mode (GCM) ja AEAD

Galois/Counter Mode (laskuri ja Galois -todennus ) on CTR:n turvallisempi muunnos, joka tarjoaa todennettua salausta liitetyillä tiedoilla ( AEAD-lohkosalaustila ).

Alustusvektori (IV)

Salaustekniikassa alustusvektori ( ) edustaa jotakin numeroa, pääsääntöisesti sen tulee olla satunnainen tai näennäissatunnainen . Satunnaisuus on ratkaisevan tärkeää semanttisen turvallisuuden saavuttamiseksi, mikä estää hyökkääjää päättelemästä salattujen viestisegmenttien välisiä suhteita, kun skeemaa käytetään uudelleen samalla avaimella. Lohkosalausten käyttö on kuvattu toimintatilojen mukaan. Satunnaistamista tarvitaan myös muille primitiivisille, kuten universaaleille hash-funktioille ja niihin perustuville viestien todennuskoodeille .

Tällaisissa salaustiloissa, kuten CBC, CFB ja OFB, alustusvektori ( ) syötetään tulona. Lisäksi sekä lähettäjällä että vastaanottajalla viestintäistunnon alussa on oltava sama . Arvon ei tarvitse olla lainkaan salainen, ja se voidaan hyvin lähettää yhdessä salatekstin ensimmäisen lohkon kanssa. Todella tärkeää on, että CBC- ja CFB-moodissa tämän arvon on oltava arvaamaton ja OFB-tilassa sen on oltava ainutlaatuinen [2] .

CBC- ja CFB-tilojen ennakoimattomuus voidaan saavuttaa useilla tavoilla. Esimerkiksi jonkin laskurin (esim. sanomalaskurin) arvo voidaan muuntaa samalla funktiolla. Tai käytä GPC:tä halutun pituisen näennäissatunnaisen sekvenssin luomiseen.

OFB-tilassa alustusvektorin ei tarvitse olla arvaamaton, mutta sen on oltava ainutlaatuinen kaikissa viestintäistunnoissa, joissa käytetään samaa salaista salausavainta OFB:ssä . Tämä voidaan saavuttaa jälleen viestilaskurin avulla. Jos tätä vaatimusta ei noudateta, viestin salassapito OFB-tilassa voi helposti vaarantua. Yksi seuraus tästä vaatimuksesta on, että seuraavaa OFB-moodin alustusvektoria ei voida generoida käyttämällä funktiota samalla avaimella .

Pehmuste (täyte)

ECB-, CBC- ja PCBC-tilat toimivat selkotekstiviesteillä, joiden on oltava yhden lohkon pituuden kerrannainen. Jos tämä ominaisuus ei täyty , viestiin on lisättävä vaadittu määrä bittejä, jota kutsutaan täyteksi .  Esimerkiksi "täytemenetelmä 2" ISO/IEC 9797-1 ehdottaa, että viestin loppuun lisätään yksi bitti ja loput täytetään nolilla [7] .

Tällä menetelmällä salatekstin vastaanottajan on tiedettävä varmasti, että viesti sisältää täytön. Tämä voidaan saavuttaa liittämällä jokaiseen viestiin täyte, vaikka sitä ei vaadittaisi (jolloin se lähetetään erillisenä lohkona). Tämä ei ole ainoa ratkaisu - voit esimerkiksi lähettää tiedot sen pituudesta jokaisen viestin yhteydessä [6] .

Virheiden leviäminen

Missä tahansa tilassa salatekstilohkon virhebitti aiheuttaa sen salauksen purkutuloksen vioittumisen. CFB-, OFB- ja CTR-tiloissa vioittuneella bitillä on sama paikka salauksesta puretussa lohkossa kuin virhebitillä salatekstilohkossa, eikä virhe etene lohkon jäljellä oleviin bitteihin. ECB- ja CBC-tiloissa mikä tahansa lohkon bitti voi vioittua noin 50 %:n todennäköisyydellä (itse salauksen vahvuudesta riippuen). Samanaikaisesti ECB-, OFB- ja CTR-tiloissa vain vioittun lohkon salauksen purkamisesta saatu lohko on vioittunut. CBC-tilassa myös seuraava lohko on virheellisen salauksenpurkussa, ja vioittuneet bitit vastaavat edellisen lohkon salatekstin virhebittejä. CFB-tilassa salatekstisegmentin virhebitti vaikuttaa segmenttien seuraavaan b/s:iin (pyöristettynä lähimpään kokonaislukuun, b on lohkon pituus, s on segmentin pituus), ja mikä tahansa salatun tekstin bitti voi olla virheellinen [6] .

Virhebittien läsnäolo alustusvektorissa on myös haitallista salauksen purkuprosessille. OFB-tilassa IV:n virhebitti osuu jokaiseen vastaavan viestin salatekstilohkoon. CFB-tilassa alustusvektorin virheet turmelevat ainakin salatekstin ensimmäisen segmentin. Se, ovatko muut segmentit vioittuneet, riippuu IV:n oikeanpuoleisimman bitin paikasta (pahimmassa tapauksessa se vaikuttaa salatekstin segmenttien b/s:iin). OFB- ja CFB-tiloja käytettäessä mikä tahansa vioittun salatekstin bitti voi vioittua IV:n virhebitin seurauksena. CBC-tilassa vain ensimmäisen salatekstilohkon bitit, jotka ovat alustusvektorin virhebittejä vastaavissa paikoissa, vioituvat.

CTR-tilassa laskurin arvon virhebitti aiheuttaa sen, että mikä tahansa vastaavan salatekstin salauksen purku bitti korruptoituu noin 50 %:n todennäköisyydellä.

Virhebitin esiintymisen lisäksi salatekstilohkossa voi tapahtua myös poistoa tai bitin lisäystä. Tämä johtaa kaikkien myöhempien salatekstin lohkojen rajojen rikkomiseen, ja salauksen purkutulokset ovat täysin vääriä, kunnes rajat on synkronoitu. Käytettäessä 1-bittistä CFB-tilaa synkronointi palautuu automaattisesti b+1-asemaan bitin ilmestymisen tai katoamisen jälkeen. Muissa tiloissa automaattista synkronoinnin palautusta ei tapahdu [6] .

Salaustilan valinta

Salaustilan valinta riippuu tavoitteestasi.

Pelkkää tekstiä varten voit käyttää CBC:tä, CFB:tä tai OFB:tä. Tiedostojen salaamiseen on parempi käyttää CBC:tä: turvallisuus lisääntyy huomattavasti, kun tallennetuissa tiedoissa tapahtuu virheitä, synkronointi ei koskaan epäonnistu. Tietty tila riippuu tarpeistasi. Yleensä salausmenetelmän valinta on kompromissin etsiminen tehokkuuden ja suorituskyvyn välillä [8] .

Muistiinpanot

  1. 1 2 3 4 5 6 Vorobyeva Elena, Lukyanova Alexandra "Salaus" (pääsemätön linkki) . Haettu 11. joulukuuta 2012. Arkistoitu alkuperäisestä 5. joulukuuta 2012. 
  2. 1 2 3 Zenin O. " Salaustilat Arkistoitu 20. elokuuta 2011 Wayback Machinessa ".
  3. Andrey Vinokurov "Salaustilat" . Haettu 16. helmikuuta 2008. Arkistoitu alkuperäisestä 19. helmikuuta 2008.
  4. 1 2 3 4 5 Bruce Schneier "Soveltava kryptografia"
  5. B. A. Forouzan "Salauksen matematiikka ja salausteoria"
  6. 1 2 3 4 NIST: Suositus lohkosalauskäyttötapoille . Käyttöpäivä: 25. joulukuuta 2013. Arkistoitu alkuperäisestä 22. heinäkuuta 2017.
  7. ISO/IEC 9797-1: Tietotekniikka - Suojaustekniikat - Viestin todennuskoodit (MAC:t) - Osa 1: Mekanismit lohkosalauksen avulla , ISO/IEC, 2011 , < http://www.iso.org/iso/iso_catalogue /catalogue_ics/catalogue_detail_ics.htm?csnumber=50375 > Arkistoitu 27. joulukuuta 2013 Wayback Machinessa 
  8. Täysi levyn salaus (downlink) . Haettu 11. joulukuuta 2012. Arkistoitu alkuperäisestä 13. lokakuuta 2012. 

Katso myös

Kirjallisuus