25.02.2009
Esa Turtiainen

Salattu tiedosto herättää aina kysymyksen, mitä tiedostossa on sisällä. Saatat haluta pitää koko salatun tiedon olemassaolon piilossa. Samoin tiedon koko voi paljastaa paljon tiedon sisällöstä.

TrueCrypt

TuerCrypt on ohjelma, jolla voidaan luoda iso tiedosto, jonka sisältö nähdään tiedostojärjestelmänä - samalla tavalla kuin CD-ROM, levyke tai USB-muistitikku. Tämä tiedosto on vahvasti salattu.

image1
Windows TrueCrypt, jossa tiedosto D:TrueCryptVolume asennetaan tiedostojärjestelmäksi X:

TrueCryptin mielenkiintoinen ominaisuus tiedon piilottamisen kannalta on se, että tavallisen salatun tiedostojärjestelmän lisäksi tiedostossa voi olla piilotettuna toinenkin tiedostojärjestelmä. Toisen tiedostojärjestelmän olemassaoloa ei voi todistaa, koska se ei mitenkään eroa satunnaisesta tiedosta. Se, että käytät TrueCrypt-ohjelmaa, voi olla julkinen tieto, mutta kukaan ei tiedä, oletko tehnyt salaisen toisen tiedostojärjestelmän. Sinun voidaan siis vaatia paljastamaan ensimmäisen tiedostojärjestemän avain, mutta sinulta ei voida vaatia toisen tiedostojärjestelmän avainta.

image2

Piilotettu tiedostojärjestelmä otetaan käyttöön täsmälleen samoin kuin tavallinenkin tiedostojärjestelmä, mutta silloin annat salasanaksi piilotetun tiedostojärjestelmän salasanan.

Yksinkertaisempi tapa piilottaa salatun TrueCrypt-tiedon olemassaolo on nimetä TrueCrypt-tiedosto joksikin muuksi tiedostotyypiksi. Salattu TrueCrypt-tiedosto saa olla minkä tahansa tiedoston tyyppinen, esimerkiksi kuten Access-tietokanta "SAMPLE.MDB", eikä tiedoston sisällä ole muuta kuin satunnaisen näköistä tietoa - tiedostossa ei esimerkiksi ole helposti tunnistettavaa otsikkotietoa kuten monissa muissa tiedostoissa. Tiedostoja ei voida käytä lävitse ja tunnistaa jokin tiedosto salatuksi TrueCrypt-tiedoksi.

TrueCrypt on ilmainen ohjelma, joka on saatavissa Windows-, Linux- ja MacOS X -käyttöjärjestelmille.

Steganografia

Tietoa voidaan jonkin verran piilottaa kuviin, musiikkiin ja esimerkiksi tekstin asetteluun sivulla. Tätä kutsutaan steganografiaksi. Käyttökelpoisin tapa on piilottaa tieto kuvassa olevaan kohinaan. Tieto kannattaa luonnollisesti salata perinteisimmillä menetelmillä ennen steganografista piilottamista.

Steganografisia kuvia käytettäessä on tärkeää, ettei piilotettua tietoa etsivällä ole käytettävissä alkuperäistä kuvaa. Paras kuva on esimerkiksi web-kameran tuottama kohinainen kuva. Tällöin tulee tarkoin pitää huolta, että alkuperäinen kuva tuhotaan huolellisesti.

Ilmainen ohjelma, joilla voidaan lisätä tietoa kuviin on esimerkiksi OpenStego. Se on Java-ohjelma jota voidaan käyttää missä tahansa käyttöjärjestelmässä.

image3

Esimerkiksi seuraavassa kuvassa on piilossa kappaleen verran steganografiasta kertovaa tekstiä. Sen saa purettua OpenStego-ohjelmalla (tavallinen LSB-menetelmä, ei randomLSB, ilman salasanaa).

image4

Kaupallisista tuotteista steganografiaa tukee esimerkiksi Steganos Privacy Suite.

Steganografian alueella ei ole vakiintuneita tuotteita. On hieman epävarmaa, kuinka vaikeaa todella on havaita steganografialla piilotettu tieto. Steganografisten tietojen löytämistä tutkii steganalyysi.

Tiedon koon piilotus lisäämällä satunnaista tietoa

Kryptologit aina varoittavat luottamasta tiedon salauksissa muihin tapoihin kuin itse salaukseen. Tiedon piilottamisessa kannattaa kuitenkin käyttää muitakin keinoja. Ensinnäkin piilotettava tieto kannattaa aina tiivistää mahdollisimman paljon esimerkiksi tekemällä 7-Zip-ohjelmalla tiivistetty arkisto. Tiivistetty tieto jo itsessään muistuttaa paljon enemmän satunnaista tietoa kuin tavallinen tieto. Toinen keino on yhdistää tieto satunnaiseen tietoon, jolloin varsinainen tieto on paljon vaikeampaa löytää. Lisäämällä ennen salaamista arkistotiedostoon satunnaisia tiedostoja voidaan kätkeä piilotetun tiedon koko.

Satunnaisen tiedon luominen on tietokoneelle hankala tehtävä. Kun tiedon ei tarvitse olla todella satunnaista, tietokoneet käyttävät pseudosatunnaista tietoa, jossa seuraava luku on johdettu edellisestä useimmissa satunnaisuustarkoituksissa riittävällä tavalla. Tiedon piilottamisessa on parempi käyttää todella satunnaista tietoa, joita varten joudutaan keräämään tietokoneesta tietoa tapahtumista, joihin ympäristö vaikuttaa jollain tavalla.

Linux-tietokoneissa ja MacOS X:ssä todellisen satunnaistiedon luomiseen on olemassa laitetiedosto /dev/random. Kun tiedostosta /dev/random luetaan, se näyttää loputtomalta tiedostolta täynnä satunnaista tietoa. Komentoriviltä sitä voi käyttää yhdessä komennon dd kanssa, joka lukee tiedostosta halutun määrän tietoa. Seuraava komento luo yhden megatavun satunnaisen tiedoston:

dd if=/dev/random of=satunnaistiedosto bs=1 count=1M

Windows-tietokoneissa samaan tarkoitukseen on käytettävissä kutsu CryptGenRandom(), mutta en ole löytänyt helppokäyttöistä ohjelmaa luoda sen avulla satunnaisia tiedostoja. Helpoin tapa käyttää sitä on Python-ohjelmointikieli, jolle voidaan antaa komentoikkunassa seuraavat komennot yhden megatavun satunnaistiedoston luomiseksi:

import os
f = open("satunnaistiedosto", "w")
f.write(os.urandom(1024\*1024))
f.close()

Tämä toimii samalla tavalla myös Linuxissa ja MacOS X:ssä. Tosin os.urandom() käyttää laitetiedostoa /dev/urandom, joka on hieman nopeampi mutta ei aivan yhtä varma kuin /dev/random. Urandom ei pysähdy odottamaan varmasti riittävää satunnaista ympäristötietoa. Käytännössä sekin riittää salaustarkoituksiin.

Artikkelissa mainitut tuotteet

TrueCrypt http://www.truecrypt.org

OpenStego http://openstego.sourceforge.net

Steganos http://www.steganos.com/

7-Zip http://www.7-zip.org/

Python http://python.org/