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 .
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 .
Alla on kuvaus useista lohkosalauksia käyttävistä salaustiloista [1] .
GOST 28147-89 : ssä tätä tilaa kutsutaan yksinkertaiseksi vaihtotilaksi .
Salaus:
Anna viesti ( selkoteksti , bittisekvenssi, data).
Salauksen aikana suoritetaan seuraavat toiminnot:
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.
Viestin salaamiseksi suoritetaan seuraavat vaiheet [4] .
Salauksen purku suoritetaan funktiolla käyttämällä samaa avainta k ja alustusvektoria IV :
CBC:n haitat:
CBC:n edut:
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.
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] .
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.
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 napsautussuhdetilassaSalauksen 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 -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 (laskuri ja Galois -todennus ) on CTR:n turvallisempi muunnos, joka tarjoaa todennettua salausta liitetyillä tiedoilla ( AEAD-lohkosalaustila ).
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 .
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] .
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 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] .