Fájlrendszer-titkosítás, LUKS

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
(TrueCrypt)
149. sor: 149. sor:
 
* Azt állítja a FAQ, hogy az adatok írása és olvasása ugyanolyan gyorsan történik, mint amikor nincs titkosítva a lemez (pipelining-re és párhuzamosításra hivatkozik, de én kételkedem).
 
* Azt állítja a FAQ, hogy az adatok írása és olvasása ugyanolyan gyorsan történik, mint amikor nincs titkosítva a lemez (pipelining-re és párhuzamosításra hivatkozik, de én kételkedem).
 
* Jelszó változtatás, más algoritmus választása menet közben lehetséges
 
* Jelszó változtatás, más algoritmus választása menet közben lehetséges
+
== Konklúzió ==
  +
* Teljesítményvizsgálat hiányában nem lehet beszélni a különböző programok egymáshoz viszonyított sebességéről.
  +
* Biztonsági szempontból mindkét modern (dm-crypt/LUKS és TrueCrypt) titkosítóprogram megbízható (jelenleg nincs ismert gyenge pontjuk)
  +
* A LUKS több-kulcsos hozzáférése és a TrueCrypt cross-platform elérhetősége, mint jó tulajdonságok között nem lehet objektíven ítélni, ezért mindenki használja azt, amelyik neki jobban tetszik.
 
== Hivatkozások ==
 
== Hivatkozások ==
   
 
# LUKS formátum: http://cryptsetup.googlecode.com/svn-history/r42/wiki/LUKS-standard/on-disk-format.pdf
 
# LUKS formátum: http://cryptsetup.googlecode.com/svn-history/r42/wiki/LUKS-standard/on-disk-format.pdf
 
# LUKS közösségi wiki: http://www.saout.de/tikiwiki/tiki-index.php?page=LUKS
 
# LUKS közösségi wiki: http://www.saout.de/tikiwiki/tiki-index.php?page=LUKS
# Hivatalos honlap, ami most nem érhető el: http://luks.endorphin.org/
+
# LUKS hivatalos honlapja, ami most nem érhető el: http://luks.endorphin.org/
 
# Clemens Fruhwirth. New methods in hard disk encryption. http://clemens.endorphin.org/nmihde/nmihde-A4-os.pdf, 2005
 
# Clemens Fruhwirth. New methods in hard disk encryption. http://clemens.endorphin.org/nmihde/nmihde-A4-os.pdf, 2005

A lap 2009. november 16., 12:56-kori változata

Írta: Biró Marci

Tartalomjegyzék

1 Bevezető

Adataink biztonságos kezelése mindig is nagyon fontos szerepet töltött be, mióta az informatika fejlődésnek indult. Háttértáron tárolt adatok biztonságát működés közben különféle jogosultság-beállításokkal szavatoljuk, ez a módszer nem elégséges, ha az adatokhoz valaki fizikailag hozzáfér. Ekkor a merevlemez (vagy más adattároló eszköz) tartalmát védő szoftvereket könnyű kikapcsolni (például egy másik gépbe helyezéssel), így a tartalom hozzáférhetővé válik. A merevlemez-titkosítás ezek ellen véd.

Biztonsági célok:

  • A rejtett adat legyen titkos.
  • Integritásvédelem, módosítás észrevehető legyen.
  • Elérhető legyen
  • Támadó ne tudjon vízjelezni, rejtett csatornát használni.
  • Egyéb: legyen hatékony, ne foglaljon extra tárhelyet.

2 A megvalósítás módja

Szimmetrikus kulcsú titkosítást használunk, mert sokkal gyorsabb, mint az aszimmetrikus, ráadásul nincs szükség külön kódoláshoz használt és dekódoláshoz használt kulcsra, hanem elég egy kulcs.

2.1 Jelölések

  • Kulcs: K
  • Titkosítandó adat: P
  • Titkosított adat: C.
  • Kódoló függvény:
C = E(P,K)
  • Dekódoló függvény:
P = D(C,K)

2.2 Blokktitkosító és üzemmódjai

A titkosításhoz blokktitkosítót használhatunk, mivel a merevlemezen úgyis blokkokban tárolódik az adat. A blokktitkosító egy blokknyi adatot vár bemenetként, és ezt a kulcs segítségével kódolja. Ezek az üzemmódok fontosak az alább tárgyalt kérdések tárgyalásakor:

2.2.1 ECB (Electronic Codebook)

A legegyszerűbb változat, mely egy blokknyi adatot vár bemenetként, és ezt a kulcs segítségével kódolja. Minden blokkhoz ugyanazt a kulcsot használja. Hátránya, hogy homogén adatok (például egy kép, melyen nagy egybefüggő területek vannak) a kódolás elenére felismerhetőek maradnak.

Képlet

1.jpg

2.2.2 CBC (Cipher Block Chaining)

A kódolt kimenetet hozzáadja a következő blokkhoz annak kódolása előtt, ezzel egy láncot hozva létre. Az első blokkhoz egy IV (inicializáló vektor) értéket adunk hozzá.

Képlet

2.jpg

2.2.3 Counter

IV helyett egy számlálót használunk bemenetként, ezt titkosítjuk a kulccsal, majd XOR-oljuk a titkosítandó adattal. Blokkonként léptetjük a számlálót.
A blokktitkosítókat a merevlemez-titkosítás speciális esetére használva használhatjuk mindhárom említett üzemmódot. A CBC üzemmódhoz szükséges IV értékét származtathatjuk például szektorazonosítóból, vagy tehetjük minden szektor első blokkjába az IV értéket. Ezen kívül használhatunk CTR üzemmódot, ahol a szektoron belüli blokkazonosító lehet a szükséges számláló.

3 Elméleti támadások

3.1 Content leak attack

A nagy ciphertext-ből (több TB is lehet) következik, hogy valószínűleg vannak azonos értékek. Ha

3.jpg

, valamint tudjuk, hogy

4.jpg
5.jpg

, akkor a két egyenletet behelyettesítve és Ek-val egyszerűsítve

6.jpg

. Ebből

7.jpg

adódik. Próbasejtést alkalmazva

8.jpg ,

így megkapjuk

14.JPG -t.
Egy alternatívát jelent, ha
9.jpg.

Ekkor a fenti gondolatmenetet alkalmazva

10.jpg

adódik.

3.2 Lavina támadás (adatmódosítási támadás)

Támadó célja, hogy megtalálja, hogy hova írt. Ezt úgy lehet megtenni, hogy másolatot készítünk a lemezről, majd kierőszakoljuk a változást az eredeti adatokon, aztán összehasonlítjuk a régi és az új adatot. Így megtaláljuk, honnan módosul a szektor.

3.3 Watermarking támadás

Feltételezés: CBC módot használó titkosítás, IV minden szektor 0. blokkjában, IV generáló algoritmus ismert a támadó előtt.

Ha 11.jpg i. és j. szektorban,

12.jpg
13.jpg,

ebből IV-k ismertek, így 15.jpg és 16.jpg közötti összefüggés ismert. Ha pedig 16.jpg -t a támadó állította elő, ezzel megtudja 15.jpg -t is.

A watermarking támadás különösen más támadásokkal ötvözve hasznos.

3.4 Cut and paste (vagy copy-paste) támadás

Néhány blokk átrendezésével lehetséges olyan támadást intézni a titkosítás ellen, hogy a visszafejtés során a helyes adatokat kapjuk, a blokkok kicserélésének megfelelő sorrendben. Fontos adatot tartalmazó blokkokat helyettesít a támadó előkészített blokkjaival, így egyrészt felülírhatja a fontos adatokat általa megadottal, másrészt az eredeti adatokat átmásolva elérhető helyre (például /etc/shadow fájlt a home könyvtárába) elérhetővé teheti a védett adatokat. A támadás CBC vagy EBC üzemmódú titkosítás esetén működhet.

4 Titkosító szoftverek

4.1 PGPdisk

  • windows-os titkosító, fizetős és ingyenes változata is létezik.

4.2 loop-AES

  • AES algoritmust használja, 128-192-256 bites kulcsokkal
  • 2.0.x kernel verziótól működik.
  • CBC módot használ, 512 byte-os chain egységekkel
  • három működési mód van:
    • single-key: egy kulcsot használ titkosításra, egyszerűen szektor IV-vel.
    • multi-key-v2: 64 különböző kulcsot használ, szektoronként különbözőt. MD5 IV-t használ, mely az inicializáló vektort titkosítja. ** multi-key-v3: hasonlít a v2-höz, ráadásként egy 65. kulcsot használ az MD5 IV bemeneteként.
  • érdekesség: 20 (!) karakteres jelszót ajánlanak elég biztonságosnak

4.3 cryptoloop

  • a linux kernel része, nem szükséges patch-et használni
  • Crypto API-ban felkínált titkosításokat tudja használni
  • nincs karbantartója, régóta nem fejlesztik, ezért hamarosan kikerül a hivatalos kernelből (vagy már ki is vették)
  • watermarking támadás alkalmazható rajta, ezért nem ajánlott

4.4 dm-crypt

  • a hivatalos kernel része
  • a 2.6.4-es kernel óta ez az alapértelmezett titkosítási mechanizmus
  • ugyanúgy, mint a cryptoloop, a Crypto API által elérhető algoritmusokat használja
  • device mapperrel használható, így RAID, LVM, partíciók vagy akár fájlok titkosítására is alkalmazható
  • dmsetup és cryptsetup (inkább felhasználóbarát) programokkal használható
  • a cryptsetup ezeket a műveleteket támogatja: create, remove, status, reload, resize
  • dm-crypt adattábla, ilyen formában tárol metaadatokat a titkosított adatokról:
0 <sector count> crypt <sector format> <key> <IV offset> <real device> <sector offset>
  • nagy hiányosság: felhasználói jelszó cseréje csak a TELJES tartalom dekódolásával és az új jelszóval való kódolással lehetséges (enyhíti a fájdalmat, hogy ez menet közben is lehetséges a szerző szerint)

4.5 LUKS (Linux Unified Key Setup) platformfüggetlen formátum

  • létrejöttét az azonos algoritmusokon alapuló, de különféle titkosítóprogramok (vagy programok különböző verzióinak) inkompatibilitása motiválta
  • segítségével szabványos, platformfüggetlen leírást adhatunk meg a partíció fejrészében
  • az adatok mozgatása, más rendszerbe integrálása problémamentesen végbevihető
  • biztonságos keretek között kezel több felhasználóhoz tartozó jelszavakat/kulcsokat is
  • a LUKS csak egy formátumot ír le, a dm-crypt cryptsetup programjában megvalósított működése tekinthető referenciának (másik megvalósítás Windows alatt a FreeOTFE programban)
  • „entropy weak” felhasználói jelszavak védelme szótáralapú brute-force támadás ellen
  • megvalósítja a TKS1 biztonságos kulcskezelési eljárás-ajánlást
  • adatformátum:
|LUKS partíció fejrész |KM1 | KM2 |… | KM8 | nagy mennyiségű titkosított adat |

LUKS partíció fejrész információi: verziószám, használt titkosító algoritmus, blokktitkosító üzemmódja, kulcs hossza, hash függvény salt és iterációs paraméter, partíció id, master key ellenőrző összeg.

    • támogatott algoritmusok: aes , [www.schneier.com/paper-twofish-paper.pdf twofish] , serpent, cast5, cast6
    • támogatott üzemmódok: ebc, cbc-plain, cbc-essiv (Encrypted Sector Salt Initialization Vector, sha-256-ot használ az IV-k előállítására)
    • támogatott hash függvények: sha-1, sha-256, sha-512, ripemd160
    • A KMx kulcsmezők a master key-t tartalmazzák különböző felhasználói jelszavak által titkosítva. Metaadat-mező formátuma egy kulcsmezőre: aktív/passzív, iterációs paraméter, salt.

4.5.1 LUKS használata cryptsetup programmal

  • A cryptsetup LUKS kiegészítéssel ellátva a következő akciókat képes még végrehajtani:
    • luksFormat <eszköz> <kulcs-fájl> – inicializál egy LUKS partíciót
    • luksOpen <eszköz> <név> [ --key-file, –readonly ] – megnyit egy partíciót
    • luksClose <név> - ugyanaz, mint az eredeti remove
    • luksAddKey <eszköz> [<új kulcs fájl>] – új jelszót ad hozzá
    • luksDelKey <szám> - töröl egy jelszót
    • luksUUID <eszköz> - kiírja az id-t.
    • isLuks <eszköz> - igaz, ha a megadott eszköz LUKS partíció
    • luksDump <eszköz> - lementi a teljes fejrészt
  • Érdekes probléma a luksDelKey használata. Ha ugyanis kitöröljük az összes kulcsot, nem férhetünk hozzá többet az adatokhoz. Bár egy adatromboló támadás egyszerűbben végrehatható a dd paranccsal.

4.6 TrueCrypt

  • Nyílt forráskódú, Linux, Mac és Windows platformokra
  • titkosítás és adatrejtés funkciók
  • TrueCrypt partíció létrehozható partíción és fájlban, ezen belül hozható létre FAT, NTFS, ext2-3 vagy bármi más, a rendszer által támogatott fájlrendszer.
  • adatrejtés lehetséges úgy, hogy ezt elvileg lehetetlen detektálni
    • Sajnos a Data Leak nevű jelenség ezt megakadályozhatja, azaz más programok által a titkosítatlan részre írt metaadatok, hivakozások, ideiglenes fájlok jelenléte elárulja a rejtett partíciót.
    • Ez elkerülhető az operációs rendszer rejtésével.
  • támogatott titkosító algoritmusok: aes, serpent, twofish, és ezek kombinációi
  • támogatott hash algoritmusok: ripemd160, sha-512, whirlpool
  • partíció fejrész: salt, ASCII string TRUE, fejrész verziószám, minimum program-verzió, checksum, rejtett partíció méret, partíció méret, … , master key, secondary master key, rejtett partíció fejrésze, adat
  • rejtett partíció keresésekor a megadott jelszóval elkezdi dekódolni a lemezt a 65536 – 131071 byte-ok között, mivel létrehozáskor ide írja a rejtett partíció fejrészét
  • a salt-on kívül minden adat titkosítva van a fejrészben
  • a titkosítás XTS módot használja, ez nagyobb erőforrás-igényű, mint az említett egyszerű üzemmódok:
Xts1.jpg
Xts2.jpg
  • Amint a képletből látható, nem alkalmaz láncolást, ezért egy bithiba csak az adott cipherblokk (128 bit) értékét teszi olvashatatlanná.
  • PKCS-11 kulcskezelési eljárást használ
  • Azt állítja a FAQ, hogy az adatok írása és olvasása ugyanolyan gyorsan történik, mint amikor nincs titkosítva a lemez (pipelining-re és párhuzamosításra hivatkozik, de én kételkedem).
  • Jelszó változtatás, más algoritmus választása menet közben lehetséges

5 Konklúzió

  • Teljesítményvizsgálat hiányában nem lehet beszélni a különböző programok egymáshoz viszonyított sebességéről.
  • Biztonsági szempontból mindkét modern (dm-crypt/LUKS és TrueCrypt) titkosítóprogram megbízható (jelenleg nincs ismert gyenge pontjuk)
  • A LUKS több-kulcsos hozzáférése és a TrueCrypt cross-platform elérhetősége, mint jó tulajdonságok között nem lehet objektíven ítélni, ezért mindenki használja azt, amelyik neki jobban tetszik.

6 Hivatkozások

  1. LUKS formátum: http://cryptsetup.googlecode.com/svn-history/r42/wiki/LUKS-standard/on-disk-format.pdf
  2. LUKS közösségi wiki: http://www.saout.de/tikiwiki/tiki-index.php?page=LUKS
  3. LUKS hivatalos honlapja, ami most nem érhető el: http://luks.endorphin.org/
  4. Clemens Fruhwirth. New methods in hard disk encryption. http://clemens.endorphin.org/nmihde/nmihde-A4-os.pdf, 2005
Személyes eszközök