Kirjoittaja Aihe: Kryptattu tiedostosäilö (ISO-image)?  (Luettu 2544 kertaa)

uggeli

  • Käyttäjä
  • Viestejä: 351
    • Profiili
Kryptattu tiedostosäilö (ISO-image)?
« : 12.06.07 - klo:22.51 »
Foorumilla löytyy haulla ohjeita kuinka kovalevy/osio kryptataan, myös kansion kryptauksesta löytyi vanha ketjunsa muttei siinäkään oltu päästy mahdollisia ehdotelmia pidemmälle. Kysynkin tämän keskustelun herättämän mielikuvan johdosta seuraavaa:

Onko linuxiin mahdollista saada mitään vastaavaa järjestelmää kuin tuossa keskustelussa mainittu OS X:n DiskUtility/Levytyökalu? Ainakin swapinhan voi luoda myös tiedostoon, joten kuvittelisi että tiedostoon voisi luoda myös tuollaisen säilön, vai voiko? Ihanne olisi että onnistuisi ISO-imagena jolloin tiedoston voisi mountata (salasanaa tietty kysyisi), polttaa levylle imagena, tai tiedostoina hiiren oikeaa klikkaamalla ja valitsee levylle kirjoituksen. Tietenkin tiedostoina poltettaessa tulisi kryptatun imagen kyseessä ollessa tulla salasanakysely ja lopputuotos levyllä olisi kryptaamaton mikäli näin polttaisi.

Tuossa siis vain ajatusleikkiä miten homma voisi toimia, onko mitään tapaa millä päästään edes lähelle, tai ylipäätään tuo alkuasetelma mahdollinen että luo tiedostoon kryptatun tiedostosäilön? Mitään varsinaista tarvetta tälle ei ole itselläni ainakaan tällä hetkellä, enkä kysy siksi että käyttäisin samaan tarkoitukseen kuin mainitun ketjun lopussa käy ilmi tuota käytetyn.. :D Ihan puhtaasta mielenkiinnosta siis ajattelin esittää täällä kysymyksen asiasta. :)

Edit:
Jääköön tuo ajatusleikki nyt tuohon, mutta tottakai huomasin pian postaamiseni jälkeen tämän ketjun jossa onkin mainittu EncFS (löytyy repoista) jolla taitaa päästä lähimmäs otsikon mukaista tilannetta.
« Viimeksi muokattu: 12.06.07 - klo:23.27 kirjoittanut uggeli »
Linux: Be root
Windows: Reboot

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Kryptattu tiedostosäilö (ISO-image)?
« Vastaus #1 : 13.06.07 - klo:00.08 »
On olemassa kaksi suhteellisen ongelmatonta ja helppoa tapaa: koko levyosio voidaan kryptata joko dmcrypt:in tai luks:in avulla tai sitten luodaan encfs:n avulla kryptattu hakemistohierarkia. Levyimagen luominen ja käyttäminen loop devicen kautta on epävarmempi ja journaloivilla tiedostojärjestelmillä virheille altis joten sitä en suosittele.

Dmcrypt on Linuxin kernelin oma salausrajapinta. Luks puolestaan on taaksepäin yhteensopiva laajennus tämän rajapinnan päälle ja tarjoaa tuen useille salasanoille salattua osiota kohden. Lisäksi luks käyttää erilaisia tekniikoita joiden ansiosta tavallisten salasanojen murtaminen vaikeutuu ja vanhentuneet salasanat saadaan poistettua turvallisesti. Jos nämä asiat kiinnostavat enemmän niin kannattaa lukea Luksin määrittelydokumentti.

Oma suositukseni on käyttää ensisijaisesti luksia ja *ubuntun cryptsetup tukee luks-laajennusta suoraan. Luksia (tai dmcryptiä) käytettäessä tulee muistaa osioita luodessa määritellä käytettävä salausalgoritmi itse sillä oletuksena oleva on haavoittuvainen vesileimatuille tiedostoille. Tämän haavoittuvuuden ansiosta hyökkääjä voi tunnistaa vesileimatun tiedoston suoraan levyltä ilman salauksen purkamista. Tältä voi suojautua esimerkiksi ESSIV-menetelmää käyttäen (Encrypted Salt-Sector Initialization Vector). Yksi vaihtoehto käytettäväksi salausalgoritmimääritykseksi on aes-cbc-essiv:sha256.

Jos ei ole mahdollisuutta salata koko levyosiota niin silloin encfs tuo apua ongelmaan. Encfs on FUSE-tiedostojärjestelmä jossa encfs:n luoma salattu hakemistohierarkia liitetään muuhun hakemistorakenteeseen ja encfs näyttää tämän liitospisteen kautta oman salatun hakemistorakenteensa selväkielisenä. Toimintatavastaan johtuen encfs paljastaa ulkopuoliselle hyökkääjälle salattujen tiedostojen hakemistorakenteen, tiedostojen ja hakemistojen lukumäärät ja blokin tarkkuudella tiedostojen koot. Nämä kaikki pysyvät salassa dmcryptiä tai luksia käytettäessä.

Itseasiassa, dmcryptiä käytettäessä voidaan kiistää koko salatun osion olemassa olo, sillä sitä ei käsittääkseni voida erottaa satunnaisdatalla kirjoitetusta levystä. Luksia käytettäessä nähdään että salattu osio on olemassa, mitä ja kuinka vahvaa salausta sillä on käytetty ja montako salausavainta on olemassa. Sekään ei paljasta varsinaisesta sisällöstä mitään. Näihin nähden encfs paljastaa massiivisen määrän tietoa. Omien tarpeiden mukaan voi jokainen pyrkiä arvioimaan näihin menetelmiin liittyviä riskejä.

Salattuja levyosioita käytettäessä voidaan pitää swapin salaamista perusvaatimuksena. Tämä onnistuu helposti dmcryptin avulla. Jos swap on osiolla /dev/hda99 niin blowfish-algoritmilla salattu swap saadaan lisäämällä tiedostoon /etc/crypttab määrittely:
Koodia: [Valitse]
# <target name> <source device>         <key file>      <options>
swap0           /dev/hda99          /dev/urandom    swap,cipher=blowfish

Tämän lisäksi swap tulee määritellä tiedostossa /etc/fstab:
Koodia: [Valitse]
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/swap0 none          swap    sw                  0       0

Salauksessa käytetty avain luetaan /dev/urandom:sta koska swap on "kertakäyttöinen" ja voidaan luoda joka bootin yhteydessä uudestaan.

Kerroin tässä lähinnä omasta mielestäni järkevistä tavoista huolehtia salauksesta Linuxilla. Vaatimuksena minulla yleensä on että kerneliä ei joudu päivittämään ja kääntämään uudelleen salauksen takia ja tämä sulkee esimerkiksi Loop-AES:n vaihtoehdoista pois. Todennäköisesti Loop-AES on kuitenkin turvallisempi kuin kernelin oma dmcrypt. En myöskään pidä TrueCryptiä varteenotettavana vaihtoehtona.

Pahoittelen lähteiden vähyyttä sillä en nyt jaksanut ruveta etsimään niitä. Muutenkaan tämä ei ole mikään howto-dokumentti vaan lähinnä tarkoituksenani oli antaa viitteitä sopivista avainsanoista joilla tietoa voi etsiä lisää. En myöskään vastaa mahdollisista virheistä esittämissäni asiatiedoissa.

uggeli

  • Käyttäjä
  • Viestejä: 351
    • Profiili
Vs: Kryptattu tiedostosäilö (ISO-image)?
« Vastaus #2 : 14.06.07 - klo:00.13 »
Siinäpä tuli asiaa, kiitos! Ja eipä noita kaikkia lähteitä tarvitse mainita, jonkun verran täytyy olla itsekin valmis näkemään vaivaa kun kysyttyäkin tuli, riittää siis että näyttää suunnan. :)
Linux: Be root
Windows: Reboot