10. huhtikuuta 2007

Ajatus steganografiseksi salaussysteemiksi

Kirjoittelinkin tästä jo Truecryptin foorumeille, mutta meni englanniksi ja pitkäksi, joten kerrotaanpa lukijoillekin suomeksi, mistä oikein olisi kysymys.

Salausohjelma nimeltä Truecrypt kykenee helposti salaamaan kiintolevyn osion tai vaikka kokonaisen kiintolevynkin (ei kuitenkaan käyttöjärjestelmäosiota), sekä luomaan kryptattuja tiedostosäiliöitä. Nämä voi sitten avata oikealla salasanalla ja/tai avaintiedoistoilla, jolloin kryptatun levyn/osion/säiliön sisältö näkyy uutena kiintolevyasemana Windows Explorerissa. Kaikki mitä kyseiselle "asemalle" sitten laitetaan, salataan huomaamatta taustalla ja kaikki mitä sieltä siirretään pois (tai avataan), puretaan huomaamatta taustalla mikäli siis salausavain on pystytty antamaan ja kyseinen levy/osio/tiedosto saamaan auki. Salaus tapahtuu sektoritasolla LRW-moodissa.

Salausalgoritmeja on valittavana AES, Twofish ja Serpent (kaikki 256 bittisellä avaimella) tai mikä tahansa näiden yhdistelmä. Tiivistefunktiona avainten generoinnin avuksi on valittavana SHA-1, RIPEMD-160 tai Whirpool tiiviste. On myös mahdollista luoda salatun levyn/osion/säiliön sisälle näkymätön, salainen levy, jonka koko olemassaolosta ei ole mitään tietoa ilman toista salausavainta. Tämä on mahdollista, koska salattu tieto on satunnaista, eikä näin ollen ole mahdollista erottaa onko muu osa tästä salatusta levystä täynnä "tyhjää" (joka sekin on salattu tietenkin), vai onko siellä jotakin minkä salaus aukeaisi toisella salausavaimella.

Systeemi on siis todella hyvä ja turvallinen.

Itselleni tuli mieleen, että vaikka tämä piiloitettu salattu osio sinällään antaa hyvän suojan esimerkiksi silloin, kun viranomainen vaatii sinua näyttämään mitä "piilottelet" kiintolevylläsi, se ei ehkä riitä. Kun vihamielinen taho tietää sinun käyttävän Truecryptiä, hän voi olettaa että olet tehnyt tällaisen piiloitetun salatun osion sinne salatun osion sisään. Mitään hän ei voi todistaa toki, mutta voi aina epäillä ja joskus sekin riittää.

Entäpä, jos sen sijaan että Truecrypt yrittää avata salattua levyä/osiota/säiliötä, sen voisikin määritellä yrittämään avata tietyn, käyttäjän sille kertoman sektorin kiintolevystä, josta salattu "säiliö" alkaa? Tällöin olisi mahdotonta todistaa, että olet käyttänyt Truecryptiä koneellasi, tai voisit vain näyttää jotain harmittomia säiliöitä jotka olet sillä salannut. Koska salattu tieto on satunnaista, ei kyseisen "supersalaisen" säiliön sijaintia ja sisältöä pysty erottamaan kiintolevyltä, jos levy tai sen vapaa tila on vaikkapa pyyhitty satunnaisella datalla tätä ennen. Näin ollen kukaan ei pysty edes osoittamaan tai perustellusti epäilemään, että kiintolevylläsi on jotain (muuta kuin ehkä se valesäiliö) salattuna!

Jos käyttäjä ei halua muistaa sektorin numeroa josta "supersalainen" säiliö alkaa, tuon tiedon voisi yksinkertaisesti säilöä kiintolevyn viimeisille sektoreille salattuna otsikkotietona, josta Truecrypt voisi automaattisesti sitä kokeilla hakea (oikealla salausavaimella jos se sille on syötetty). Salatulla levyllä/osiolla/säiliöllä on aina otsikkotiedot, jotka ovat salattuja kuten koko muukin levy/osio/säiliö ja joita Truecrypt koettaa sille annetulla salausavaimella purkaa selkokieliseksi. Jos Truecrypt onnistuu, salausavain ja levy/osio/säiliö on oikea ja jos ei, vähintään toinen niistä on väärä. Otsikkotiedot kertovat Truecrypt ohjelmalla esimerkiksi minkä kokoinen salattu levy/osio/säiliö on jne. joten ne voisivat aivan yhtä hyvin kertoa myös, missä sektorilla "supersalainen" säiliö sijaitsee. :)

Tietysti järjestelmää voisi kehittää helposti sellaiseksi, että esimerkiksi tuo aloitussektori määriteltäisiin vaikka salasanan tai avaintiedoston perusteella. Mikäpä olisi mukavampaa kuin se, että MP3 soittimessasi oleva musiikkitiedosto kertoo muistitikullasi olevalle Truecryptin ohjelmalle, että toisen kiintolevysi muutaman gigatavun vapaassa tilassa onkin sektorilta X alkaen "supersalainen" salattu säiliö? Tietokoneellasi ei ole mitään Truecryptiltä haiskahtavaa etkä edes itse osaa kertoa millä sektorilla "supersalainen" salattu säiliö edes on.

Tietysti ongelmia on muutamia.
- Ensinnäkin, Windows ja eri ohjelmat joita siinä käytetään, tuppaavat tallentamaan muistiin mitä tiedostoja ja mistä sillä on käytetty. Nämä pitäisi pyyhkiä esimerkiksi CCleaner ohjelmalla.
- Toiseksi, Truecryptin pitää asentaa eräs ajuri, jotta salattuja levyjä/osioita/säiliöitä voidaan luoda ja muokata, eikä tätä ajuria voi asentaa kuin järjestelmänvalvojana toimien. Tämä ongelma ratkeaisi joko toisenlaisen ajurin kirjoittamalla tai sitten liittämällä Truecryptiin käskyn, joka pyyhkii kyseisen ajurin jälkineen Windowsista aina kun Truecrypt sammutetaan.
- Kolmanneksi, "supersalaisen" säiliön sisältävällä levyllä pitää kaiken vapaan tilan olla pyyhitty satunnaisella datalla, koska muuten "supersalainen" säiliö paljastuu (mutta ei tietenkään avaudu) levyä tutkimalla, koska muu osa levyn vapaasta tilasta ei sisällä satunnaista dataa tuollaista määrää. Tämä ongelma ratkeaa tietysti sillä, että vapaa tila levystä pyyhitään vaikkapa Eraser ohjelmalla ennen "supersalaisen" säiliön ottamista käyttöön.
- Neljänneksi, on olemassa vaara, kun mitä tahansa tiedostoja siirretään siihen levyyn, jossa on sisällä tuo "supersalainen" säiliö, että ne kirjoittuvat "supersalaisen" päälle ja siten tuhoavat sen. Koska säiliötä on ilman sen avaamista mahdotonta havaita, ei myöskään Windows sitä voi havaita ja varoa kirjoittamasta sen päälle mitään. Tämä ongelma hoituu sillä, että joko kyseiseen levyyn ei kirjoitella liiemmälti tiedostoja, tai sitten "supersalainen" avataan & sen käyttämät sektorit sitten suojataan Truecryptin toimesta ylikirjoitukselta.

Tietysti voidaan aina spekuloida esimerkiksi sillä, että jos hyökkääjä pääsee koneeseen käsiksi huomaamatta 2 kertaa, hän voi tarkastella levyn sektoreita ja huomata, että jossain kohdassa satunnaisuutta sisältävät sektorit ovatkin muuttuneet toisenlaisiksi satunnaisuutta sisältäviksi sektoreiksi, vaikka mitään konkreettista tiedostoa niihin ei ole kirjoitettu. Voidaan kuitenkin todeta, että jos hyökkääjä pääsee huomaamatta 2 kertaa koneesi luokse, se ei enää ole sinun koneesi. Hyökkääjä voi vähemmällä vaivalla asentaa koneeseen ohjelmallisen - tai fyysisen - keyloggerin tai muulla tavoin vakoilla Truecryptin käyttämät salausavaimet - ja supersalaisten säiliöiden sijainnit - selville ja peli on joka tapauksessa menetetty.

Mutta, nämä ongelmat jotka kerroin, ovat siis voitettavissa ja Truecryptiä voisi kehittää vaikkapa tuollaiseen suuntaan jatkossa. Toivottavasti kehittäjät kuulevat kirjoitukseni ja homma ottaa ilmaa siipiensä alle. Nyt ei voi muuta kuin odottaa. :)

4 kommenttia:

Anonyymi kirjoitti...

Jos kiintolevyn osioi sen todellista kokoa pienemmäksi, niin silloin levylle jää osioimaton alue, jota Windows ei ylikirjoita.

Itse kuitenkin käytän tätä:
http://www.securstar.com/products_drivecryptpp.php

"Hidden Operating System:
DCPP is the only software on the market, able to hide an entire operating system inside the free disk space of another operating system. You can practically define two passwords for your DCPP encrypted disk: One password is for the visible operating system, the other for the invisible one. The first "fake" password gives you access to a pre-configured operating system (outer OS), while the other gives you access to your real working operating system. This functionality is extremely useful if you fear that someone may force you to provide the DCPP password; in this case, you simply give away the first (fake) password so that your attacker will be able to boot your system, but only see the prepared information that you want him to find. The attacker will not be able to see any confidential and personal data and he will also not be able to understand that the machine is storing one more hidden operating system. On the other hand, if you enter your private password (for the invisible disk), your system will boot a different operating system (your working system) giving you the access to all your confidential data.
The creation of a hidden operating system is not obligatory and as such, it is not possible for anyone who does not have the hidden OS password to know or find out, if a hidden operating system exists or not."

Markus Jansson kirjoitti...

Jos kiintolevyn osan jättää osioimatta, se herättää heti epäilyksiä hyökkääjässä. Muuten hyvä huomio. :)

DCPP taas on kyllä ohjelmana sellainen että en siihen hirveästi luottaisi. Sitä markkinoidaan mm. termein "military grade encryption" (jota ei ole olemassakaan) ja aikaisemmin mm. termein "1344bit encryption". Sanotaan näin että noin räikeistä vääristelyistä/selittelystä kärsivät firma ei ole minusta kovin luotettava. Lisäksi tietysti ohjelma on suljettua lähdekoodia, joten et voi olla varma mitä se oikeasti tekee ja kuka salausavaimiin pääsee myös käsiksi.

Mutta tuo idea sinällään on hyvä. Ongelmana vain on sama kuin TC:ssä, että sinällään pelkkä ohjelman läsnäolo aiheuttaa oletuksen siitä, että koetat huijata käyttäen hyväksi juuri tuota ominaisuutta. Tuossa ajattelemassani steganografisessa salaussysteemissä tätä ongelmaa ei ole, koska koko tietokoneelle ei missään vaiheessa jäisi mitään jälkeä, että TC ohjelmaa on edes käytetty siinä mihinkään.

Anonyymi kirjoitti...

Monia muitakin luotettavaksi todettuja ja suosituimpia kryptaussoftia markkinoidaan "military grade encryption" -jutuilla.

Mielestäni se ei kerro epärehellisestä valmistajasta. Jotkut toiset valmistajat käyttää aivan yhtä epämääräisiä termejä, kuten "excellent" ja "pretty good privacy". Kaikki noi on täysin suhteellisia käsitteitä.

Osioimaton tila saattaa herättää hieman epäilyksiä, mutta ei ole mitenkään harvinaista, että ihmisten koneilta löytyy melko paljonkin osioimatonta tilaa.

Paras tapa vois olla, kun piilottaa tiedostonsa kirjoitussuojatulle usb-muistitikulle VMwaren levytiedostona, salattuna osioimattomaan tilaan. Sille VMwaren levytiedostolle vo asentaa Windowsin ja tietysti ne salaiset tiedostot. Näin tiedostojen avaamisesta ei jää vahingossakaan jälkiä Windowsiin (paitsi siihen salattuun ja piilotettuun Windowsiin).

Ainoa tieto minkä hyökkääjä saa selville on, että koneella on käytetty VMwarea.

Tosin kirjoitussuojauksessakin on omat haittapuolensa :(

Markus Jansson kirjoitti...

Kyllä "military grade" on sikäli erilaien termi, että se selvästi viittaa, että kyseessä olisi armeijan käyttämä salaus, mikä ei tietenkään pidä paikkaansa.

Joo, noi VMWaret ovat kyllä hauskoja vekottimia tietoturvamielessä. Ehdotuksesi on hyvä, mutta täytyy muistaa, että harva osaa käyttää noiden vaatimia ohjelmistoja kovinkaan hyvin. Käsittääkseni Linuxiin on saatavissa kyllä yhä tuo Steganographic Filesystem...