Tupla Salaus?

Seuraa 
Viestejä45973
Liittynyt3.9.2015

Olen joskus mietiskellyt, että salausta voisi parantaa huomattavasti ihan vaan salaamalla kahdesti sama viesti eri avaimilla. No, nyt mulle on kumminkin vakuutettu ettei asia olisi noin vaan salaus voisi itse asiassa jopa huonontua tuon seurauksena! Pitääkös tuo paikkansa?

Kommentit (8)

Vierailija
180°

Hyöty on hieman kyseenalainen minun mielestäni.
Toisaalta voihan olla että salauksen purku onnistuu kerralla yhdellä avaimella.
Purku vaiheessa on suuri riski korruptoida alkuperäinen viesti. IMHO

Ihan mielenkiinnosta: Mihinköhän tuo väite perustuu, että purkuvaiheessa olisi suuri riski korruptoida alkuperäinen viesti?

Kahden päällekkäisen salauksen käyttäminen on todella yleistä ja parantaa ehdottomasti tietoturvaa, mutta käytännössä aina olen törmännyt tapauksiin, joissa käytetään päällekkäin kahta erilaista salausta, vaikkapa Twofish256-AES256 -yhdistelmää. Tosin jo pelkkä AES256 on nykymaailmassa melkeinpä overkilliä, vähintäänkin erittäin turvallista.

Mutta ymmärrykseni ei todellakaan riitä käsittämään, että miksi kahden päällekkäisen, samalla salausalgoritmilla, mutta eri avaimella salatun tiedon purkaminen riskeeraisi tiedon sisältöä. Tämän pitäisi periaatteessa tarkoittaa sitä, että salauksen purkualgoritmi on viallinen eikä osaa purkaa salattua tiedostoa 1:1 samanlaiseksi kuin alkuperäinen salaamaton tieto oli. Ja näinhän käytössä olevien nykysalausten kanssa ei käy.

Lisäksi haluaisin kuulla hieman lisävalotusta väitteelle siitä, että kahden päällekkäisen samalla algoritmilla tehdyn cipheröinnin purkaminen voisi onnistua yhdellä avaimella. Miten ihmeessä?

Vierailija
von Munchausen
Olen joskus mietiskellyt, että salausta voisi parantaa huomattavasti ihan vaan salaamalla kahdesti sama viesti eri avaimilla. No, nyt mulle on kumminkin vakuutettu ettei asia olisi noin vaan salaus voisi itse asiassa jopa huonontua tuon seurauksena! Pitääkös tuo paikkansa?

Mietinpä tuossa noita differentiaaliyhtälöitä pyöritellessäni asiaa hieman enemmän ja periaatteessa uskoisin että olet oikeassa, ja olet väärässä.

Eli kaksi päällekkäistä samalla algoritmilla mutta eri avaimilla suoritettua salausta parantaa tiedon salausta, mutta hyöty ei ole niin huomattava kuin nopeasti voisi ajatella. Kuitenkin, se on merkittävä.

Näkisin asian niin, että jos tieto salataan samalla algoritmilla kahteen kertaan, paranee salauksen taso yhdellä bitillä, jolloin sen purkuaika kasvaa huomattavasti. Esimerkiksi 3DES:issä käsittääkseni on käytössä algoritmitasolla kuvatunkaltainen menetelmä, jossa sama salaus suoritetaan useaan kertaan.

Hyötyä ei kuitenkaan saavuteta, mikäli aliavaimet ovat huonot - tai pikemminkin mikäli jotkin aliavaimista ovat samat.

Tiedon korruptoituminen purkuvaiheessa (kuten edellä esitettiin) on minusta aivan teoreettinen mahdottomuus, mikäli tieto puretaan oikeilla avaimilla. Salauksen purussa tietoa ei katoa yhtään - kyseessä ei ole mistään häviöllisestä pakkausmenetelmästä, vaan algoritmista joka kääntelee bittejä ylösalaisin monimutkaisen algoritmin ja sille annetun salausavaimen perusteella. Purkualgoritmin ja saman avaimen kanssa pystytään tieto aina palauttamaan edelliseen tilaansa, oli tieto sitten valmiiksi salattua tai ei.

Vierailija

@Janne Mikola
Tarkoitin lähinnä sitä, jos ensimmäisen salauksen purkaminen ei olekkaan aivan niinkuin pitää niin ei viesti silloin selviä.
Oikeilla avaimilla tietysti asia on eri.
Mutta taitaa olla nopeampaa ainakin yksinkertaisempaa käyttää yhtä avainta?
Menikö bittisalauksen brute-force purkuaika toiseen potenssiin, kun bittimäärä tuplattiin.?
Esim. 512->1024

PS.
En muuten ymmärrä itsekkään aikaisempaa kirjoitustani.

Vierailija
180°
@Janne Mikola
Tarkoitin lähinnä sitä, jos ensimmäisen salauksen purkaminen ei olekkaan aivan niinkuin pitää niin ei viesti silloin selviä.
Oikeilla avaimilla tietysti asia on eri.



Juuri näin, mutta eikös tämä ole tietoturvallisuuden kannalta pelkästään positiivinen asia? Jos se taho, jolle salattu tieto on tarkoitettu, purkaa tiedon salausta, on hänellä käytännössä aina purkamiseen tarvittavat avaimet tiedossa. Tällöin tieto purkautuu kaksinkertaisestakin salauksesta oikein, kunhan purkamista suorittava henkilö käyttää tiedossaan olevia avaimia oikein.

Kräkkereiden ja muiden rikollisten kannalta tämä taas on huono asia: he eivät vielä ensimmäisen salauskerroksen purkamisen jälkeen vielä välttämättä pysty toteamaan, että onko salaus purettu oikein, vaan heidän on purettava myös toinen salauskerros ja tämän jälkeen verifioitava tieto - joka on silkkaa siansaksaa jos salaus on jo ensimmäisellä purkukerralla purettu väärällä avaimella.

180°

Mutta taitaa olla nopeampaa ainakin yksinkertaisempaa käyttää yhtä avainta?
Menikö bittisalauksen brute-force purkuaika toiseen potenssiin, kun bittimäärä tuplattiin.?
Esim. 512->1024

Nopeampaa ja yksinkertaisempaa yhden avaimen käyttäminen varmasti on, mutta ei missään nimessä tietoturvallisempaa - ja siihenhän aina vaan raskaammilla salauksilla pyritään: maksimaaliseen tietoturvaan. Ei salauksen laillista purkajaa varmasti haittaa pieni ylimääräinen odottelu ja kaksinkertainen avaimen syöttö, kun hän voi myhäillä mielessään että "onpa tieto ainakin salassa".

512-bittinen ja 1024-bittinen salaus ovat nykyaikana aikamoista utopiaa, mutta käytetään nyt niitä esimerkkinä, kun ne esille nostit. Jos salaus on 512-bittinen, on mahdollisia avainvaihtoehtoja 2^512. Paljaalla brute forcella tälläisen salauksen avaaminen kestää tilastollisesti keskimäärin sen verran, että puolet, eli 2^511 avainta on käyty läpi.

Tässä välissä olisi tietysti mielenkiintoista tietää, että paljonko aikaa yhden avaimen läpikäymiseen menee. Eli n-bittisen avaimen murtamiseen siis menee aikaa t=k*2^n, missä k on herwantavakio, joka kuvaa juuri yhden avaimen läpikäymiseen menevää aikaa.

Vastaavasti siis 1024-bittisen salauksen purkuun kuluu aikaa keskimäärin 2^1023 yritystä, eli t=k*2^1023. Kannattaa huomata, että tarkalleenottaen bittimäärän kaksinkertaistuessa purkuun kuluva kasvaa jopa hieman enemmän kuin toiseen potenssiin; 512-bittisen avaimen purkamiseen kuluva aika kun toiseen potenssiin korotettuna olisi k*2^1022.

Brute forcella yli 64-bittisten symmetriseen avaimeen perustuvien salausten (kuten DES) purkaminen ei ole käytännössä tänäpäivänä mahdollista, eikä ainakaan mielekästä. Eikä puhdasta brute forcea kukaan kuitenkaan oikeasti käytä nykypäivänä, kyllä se on vähintään kevyillä herustiikoilla varustettua.

Vierailija
Janne Mikola
Brute forcella yli 64-bittisten symmetriseen avaimeen perustuvien salausten (kuten DES) purkaminen ei ole käytännössä tänäpäivänä mahdollista, eikä ainakaan mielekästä. Eikä puhdasta brute forcea kukaan kuitenkaan oikeasti käytä nykypäivänä, kyllä se on vähintään kevyillä herustiikoilla varustettua.

DES-avain on itse asiassa 56-bittinen (+8 pariteettibittiä). EFF:llä oli (on?) spesiaalirauta, jolla DES-salauksen sai purettua päivässä, kahdessa muutama vuosi sitten. Tuon spesiaalivirityksen hinta oli muistaakseni jotain $30.000. Eli DES on lähes kenen tahansa purettavissa tänään.

DES:iä voidaan tehostaa käyttämällä kahta eri avainta ja suorittamalla kaksi salaus- sekä yksi purkuoperaatio. Tuloksena on 3DES, jonka tehollinen avaimen pituus on arvioitu muistaakseni olevan n. 110 bittiä.

Mikäli oletetaan, että (symmetrinen) salausalgoritmi ja sen toteutus ovat virheettömiä sekä käytössä on nykyisen kaltaiseen toteutukseen perustuva tietokone, niin 256-bittinen avain riittää turvalliseen salaukseen. Mikäli lasketaan, kuinka monta operaatiota tarvitaan brute-force murtoon, ja oletetaan lähes olematon energiamäärä yhden operaation suorittamiseen, niin Auringossa ei riitä tarpeeksi energiaa 256-bittisen avaimen brute-force murtoon.

Tietokonearkkitehtuurin muutos esim. kvanttitietokoneeseen laittaa tietenkin laskelmat uusiksi. Mikäli kvanttikoneelle voidaan tehdä murtoalgoritmi, käytännössä mikään avaimen bittimäärä ei riitä.

Vierailija
Arla
DES-avain on itse asiassa 56-bittinen (+8 pariteettibittiä). EFF:llä oli (on?) spesiaalirauta, jolla DES-salauksen sai purettua päivässä, kahdessa muutama vuosi sitten. Tuon spesiaalivirityksen hinta oli muistaakseni jotain $30.000. Eli DES on lähes kenen tahansa purettavissa tänään.

DES:iä voidaan tehostaa käyttämällä kahta eri avainta ja suorittamalla kaksi salaus- sekä yksi purkuoperaatio. Tuloksena on 3DES, jonka tehollinen avaimen pituus on arvioitu muistaakseni olevan n. 110 bittiä.

Kirjoitin tuossa kohtaa ehkä hieman epäselvän lauseen. Tarkoitin sitä, että yli 64-bittisten (eli käytännössä siis 128-bittisen, vaikka joitain välimuotoja mm. 96-bitin pituudella taitaa olla) symmetrisen salauksen purkaminen puhtaalla brute forcella on nykyään, uskallan ehkä sanoa, että jopa toivotonta. DES tosiaan murrettiin jo vuonna 1998, samoin esimerkiksi 64-bittinen RC5 on jo murrettu kohtalaisen nopeassa ajassa.

Esim. 128-bittinen AES on jo NSA:nkin mukaan melko lailla riittävä salausmentelemä. Toistaiseksi.

"The design and strength of all key lengths of the AES algorithm (i.e., 128, 192 and 256) are sufficient to protect classified information up to the SECRET level. TOP SECRET information will require use of either the 192 or 256 key lengths. The implementation of AES in products intended to protect national security systems and/or information must be reviewed and certified by NSA prior to their acquisition and use."

http://csrc.nist.gov/cryptval/CNSS15FS.pdf

Vierailija
Janne Mikola

Kahden päällekkäisen salauksen käyttäminen on todella yleistä ja parantaa ehdottomasti tietoturvaa, mutta käytännössä aina olen törmännyt tapauksiin, joissa käytetään päällekkäin kahta erilaista salausta, vaikkapa Twofish256-AES256 -yhdistelmää. Tosin jo pelkkä AES256 on nykymaailmassa melkeinpä overkilliä, vähintäänkin erittäin turvallista.



Jos käytetään blokkisalaimia, kaksi kertaa eri avaimella salaaminen ei auta mitään. Tämä vain aiheuttaa tilanteen, jossa on kolmas avain, joka purkaa kerralla molemmat salaukset. Tämän takia 3DES käyttää välissä purkamista, eikä pakkaamista ja siksi 3x56 ei ole 168 vaan 112.

Janne Mikola

Lisäksi haluaisin kuulla hieman lisävalotusta väitteelle siitä, että kahden päällekkäisen samalla algoritmilla tehdyn cipheröinnin purkaminen voisi onnistua yhdellä avaimella. Miten ihmeessä?

Koska salaaminen on yleensä xor-tyyppinen, jossa annetun avaimen avulla vain tehdään bittimuunnoksia tiedolle. Jos tehdään sama asia kahdesti, päädytään tilanteeseen, jossa bitit muuntuvat ihan vastaavasti kolmannella avaimella. Vertaa seuraavaa:

alkuperäinen data:
101001010100
ensimmäinen avain:
010101001001
tulos:
111100011101
toinen avain:
010100010101
tulos:
101000001010

alkuperäinen data:
101001010100
kolmas avain:
000001011010
tulos:
101000001010

Ja vaikka käytetään feedbackia (mikähän tämä olisi suomeksi hyvin sanottuna), saadaan silti ihan samat xor-tulokset. Täten ei paljoa auta useampi kierros.

Uusimmat

Suosituimmat