dm-krypta
dm-crypt je kryptografický modul mapovače zařízení v linuxovém jádře . Pomocí dm-crypt lze data šifrovat a dešifrovat pomocí různých algoritmů, které lze použít na jakékoli soubory zařízení , ve většině případů na oddíly, pevné disky nebo logické jednotky ( LVM ). Mezi (šifrovanými) (surovými) daty a systémem souborů se zde vytvoří další vrstva. To se pro uživatele provádí zcela transparentně . dm-crypt je vhodný pro šifrování pevného disku (diskové oddíly, celé pevné disky, ale také všechna ostatní blokově orientovaná zařízení, jako jsou logické jednotky (LVM) nebo smyčková zařízení). dm-crypt podporuje různé šifrovací algoritmy, protože používá linuxové jádro Crypto API.
Dalším přístupem je (transparentní) šifrování souborů , ve kterém je systém souborů odpovědný za šifrování a dešifrování.
aplikace
- Šifrování pevného disku k ochraně citlivých dat před (offline) krádeží (zejména u mobilních zařízení, jako jsou notebooky ).
- Ochrana před obnovením dat po prodeji nebo likvidaci datových nosičů. Jinak by pro bezpečné odstranění dat byly někdy nutné složité postupy, například přepsání nebo fyzické zničení datového nosiče.
Parametry šifrování
dm-crypt podporuje různé šifrovací algoritmy a provozní režimy. Jsou uvedeny ve speciálním formátu (volitelné části jsou uvedeny v hranatých závorkách):
- cipher [: keycount ] - chainmode - ivmode [: ivopts ]
Jednotlivá pole znamenají:
- šifra
- Název použitého šifrovacího algoritmu. Například
aes,twofish - počet klíčů
- volitelné pole pro šifrování pomocí více klíčů (aby bylo kompatibilní se smyčkami)
- řetězový režim
- Režim šifrování, např. B.
ecb,cbc - ivmode
- Typ inicializačního vektoru, pokud to režim šifrování vyžaduje. Příklady:
plain,essiv,lmk - ivopts
- Volitelný parametr pro ivmode, je-li požadován. z. B. hash použitý v esenčním režimu:
sha256
Příklady:
twofish-ecb |
Algoritmus Twofish v režimu ECB (nedoporučuje se) |
aes:64-cbc-lmk |
Algoritmus AES v režimu CBC , v režimu 64 kláves, s inicializační vektorovou metodou kompatibilní se smyčkami |
aes-cbc-essiv:ripemd160 |
AES v režimu CBC, přičemž inicializační vektory se počítají pomocí hashového algoritmu RIPEMD-160 |
Rozšíření o LUKS
Běžným rozšířením je LUKS („Linux Unified Key Setup“), který k šifrovaným datům přidává záhlaví, ve kterém jsou uložena metadata a až osm klíčů. Výhody oproti „čisté“ dm-kryptě jsou: standardizovaný formát, informace o typu šifrování v záhlaví, alokace až osmi klíčů a změna a vymazání klíčů bez přepisování šifrovaných dat.
Vzhledem k tomu, že záhlaví, které LUKS zapisuje do kontejneru, obsahuje jasný textový identifikátor, použité šifrovací a hash algoritmy a velikost hlavního klíče, lze kontejnery LUKS rozpoznat automaticky a snadno. Také zpřístupňuje šifrování třetím stranám a útočným programům. Tím je důvěryhodná popíratelnost obtížná nebo dokonce nemožná. Záhlaví LUKS včetně klíčových dat také snižuje využitelný úložný prostor na médiu o 1028 KiB (standardní nastavení). Na rozdíl od centrálních metadat různých souborových systémů, jako je B. superblok na ext2 , tato data, která jsou důležitá pro provoz datového nosiče, nejsou uložena v distribuované replikaci na médiu. Pokud jsou přepsána nebo je již nelze číst kvůli hardwarové vadě, nelze již dešifrovat uživatelská data na médiu bez zálohy záhlaví (což umožňuje program pro správu cryptsetup ).
Formát na disku
Oddíl pevného disku šifrovaný pomocí LUKS má následující záhlaví (vícebajtové hodnoty se ukládají ve formátu Big Endian, identifikátory prostého textu jsou vyplněny nulovými bajty, pokud jsou kratší než zamýšlený úložný prostor):
| Ofset | Datový typ | obsah | |
|---|---|---|---|
| 0 | 0 hex | char [6] | Magické číslo {'L', 'U', 'K', 'S', 0xBA, 0xBE} |
| 6. | 6 hex | uint16_t | LUKS verze (aktuálně vždy 0x0001) |
| 8. | 8 hex | char [32] | Název šifrovacího algoritmu (např. „Twofish“ nebo „aes“) |
| 40 | 28 hex | char [32] | Název režimu šifrování (např. „Cbc-essiv: sha256“) |
| 72 | 48 hex | char [32] | Název hashovací funkce (např. „Sha1“ nebo „ripemd160“) |
| 104 | 68 hex | uint32_t | Odsazení dat (v sektorech) |
| 108 | 6C hex | uint32_t | Počet klíčových bajtů |
| 112 | 70 hex | char [20] | Kontrolní součet hlavního klíče PBKDF2 |
| 132 | 84 hex | char [32] | Sůl hlavního klíče PBKDF2 |
| 164 | A4 šestihran | uint32_t | Počet iterací PBKDF2 (výchozí: 10) |
| 168 | A8 šestihran | char [40] | UUID oddílu (v obvyklém hexadecimálním formátu, např. „504c9fa7-d080-4acf-a829-73227b48fb89“) |
| 208 | D0 hex | (48 bajtů) | Keyslot 1 (viz níže) |
| ... | |||
| 544 | 220 hex | (48 bajtů) | Keyslot 8 (viz níže) |
| 592 bytů celkem | |||
Každý z osmi klíčových slotů má následující formát:
| Ofset | Datový typ | obsah |
|---|---|---|
| 0 | uint32_t | Stav: Aktivní = 0x00AC71F3; Neaktivní = 0x0000DEAD |
| 4. místo | uint32_t | Počet iterací pro PBKDF2 |
| 8. | char [32] | Sůl pro PBKDF2 |
| 40 | uint32_t | Spusťte sektor klíčových dat |
| 44 | uint32_t | Počet anti-forenzních pruhů (výchozí: 4000) |
| 48 bytů celkem | ||
Porovnání LUKS versus jednoduchá dm-krypta
Následující seznam si nenárokuje úplnost. Relevance jednotlivých vlastností se také liší v závislosti na zamýšleném použití, takže tento seznam neumožňuje obecně platné vyhodnocení LUKS.
- Záhlaví prostého textu
- Pro umožňuje skripty bez externí konfigurace pro automatickou integraci datového kontejneru
- Contra brání věrohodné popírání
- Contra vyžaduje místo na datovém nosiči; To znamená, že 1: 1 kopie sektoru (nešifrovaného nebo přímo použitého jako úložného prostoru) datového nosiče / oddílu v šifrovaném kontejneru LUKS stejné velikosti není možná; cílová jednotka (pro kontejner LUKS) musí být odpovídajícím způsobem větší.
- Nevýhody V případě chyb v sektoru záhlaví (které přímo ovlivňují klíčová data) je téměř nemožné obnovit zbývající data bez zálohy záhlaví, i když je lze stále číst (šifrovat).
- Nastavení klíče
- Profesionální soli pro klíče a hlavní klíče ztěžují útoky s předpočítanými hashy
- Pro PBKDF2 vyžaduje zvýšené výpočetní úsilí kvůli iteracím , které zpomalují slovníkový útok v libovolném konfigurovatelném rozsahu (ale ve stejném rozsahu jako integrace svazku)
- Contra PBKDF2 vede k znatelnému zpoždění při integraci kontejneru na pomalých počítačích (zadaný čas se odpovídajícím způsobem vynásobí)
- Klíčové sloty
- Pro umožňuje více hesel / přístupových frází na datový kontejner, které lze také snadno změnit a odstranit
- Contra zabírají místo na disku; To znamená, že sektorově kopie 1: 1 nezašifrovaného datového nosiče v šifrovaném kontejneru LUKS (např. Pro zálohy) stejné velikosti není možná
- Contra sám přítomnost několika Keyslots a mezer v Keyslotliste ukazují podrobnosti o použití kontejneru dat.
LUKS2
Od linuxového jádra verze 4.12 existuje nová verze LUKS, která nabízí některé nové funkce:
- Authenticated Encryption - vyžaduje funkci „dm-integrity“, která byla také zavedena s jádrem verze 4.12, aby bylo možné uložit další metadata na sektor.
- Funkce odvození hesla Argon2 (ve variantách Argon2i a Argon2id), která ztěžuje paralelní útoky hrubou silou
- Metadata a záhlaví jsou nyní ve formátu JSON a lze je ukládat redundantně a také na samostatných datových nosičích.
- Podpora externích úložišť klíčů a metod ověřování
- Konverze z LUKS1 na LUKS2 (a naopak) je možná za běhu, za předpokladu, že nejsou použity žádné nové funkce LUKS2.
nevýhoda
Propustnost
Vzhledem k dalšímu výpočetnímu úsilí šifrovacích algoritmů, stejně jako u jakéhokoli šifrování pevného disku prováděného v softwaru, mohou nastat ztráty výkonu: datová propustnost je ve srovnání s nešifrovanými datovými nosiči snížena. Vylepšení lze dosáhnout rychlejšími procesory, vícejádrovými procesory , optimalizací algoritmů pro příslušnou architekturu nebo implementací jako hardwarové šifrování.
Kryptografická chyba zabezpečení
Kryptografické útoky jsou částečně myslitelné na data šifrovaná pomocí dm-crypt:
- Útok vodoznakem, pokud není nakonfigurován pomocí ESSIV
- Útok prostřednictvím úniku obsahu
- Útok únikem modifikace dat
- obecné útoky na metody šifrování pevného disku
Alternativy a porty
S FreeOTFE byla implementace pro Windows kompatibilní s LUKS do roku 2013 . Zdrojový kód byl přenesen do DoxBoxu, který byl v roce 2015 přejmenován na LibreCrypt z verze 6.2ß. LibreCrypt běží na Microsoft Windows 10 a zdrojový kód lze stáhnout z GitHubu.
VeraCrypt je alternativní produkt pro Windows a Linux, který je funkčně téměř srovnatelný .
literatura
- Clemens Fruhwirth, Markus Schuster: Tajné psaní. Šifrování pevného disku pomocí DM-Crypt a Cryptsetup-LUKS: Technologie a aplikace In: Linux-Magazin 08/2005. Linux New Media AG, str. 28–36, ISSN 1432–640X , k dispozici online
- Frank Becker, Konrad Rosenbaum: Klíč disku - kryptovací souborové systémy v systému Linux . (PDF, 400 kB) Přednáška na Chemnitz Linuxtag 2005
- Christian Ney, Peter Gutmann: Sýr s otvory. Šifrované systémy souborů v systému Linux . In: Linux-Magazin , 10/2006, s. 36–44. Linux New Media AG, ISSN 1432-640X
webové odkazy
- Mini-Howto pro kryptsetup
- Další vývoj pozastavení cryptsetup
- Webové stránky dm-crypt (anglicky)
- Webové stránky LUKS (anglicky)
- Rozsáhlý článek na téma LUKS
- Zdrojový kód LibreCrypt na GitHubu
Individuální důkazy
- ↑ dm-crypt: kryptografický cíl mapovače zařízení s jádrem Linuxu. Citováno 23. dubna 2013 .
- ↑ Specifikace formátu LUKS na disku. (PDF) Verze 1.2.2. Citováno 19. března 2017 .
- ↑ gitlab.com (PDF)
- ↑ Nastavení šifrování pevného disku Linux , anglicky
- ↑ Dodatek A: Historie verzí ( anglicky ) GitHub, Inc. Zpřístupněno 14. března 2019.