LUKS

LUKS (od Linux Unified Key Setup ) je specifikace formátu šifrování disku původně zaměřená na použití v operačních systémech založených na jádře Linuxu . Primárním cílem technologie bylo poskytnout uživatelsky přívětivý, standardizovaný způsob správy dešifrovacích klíčů . Jednou z vlastností formátu je podpora více klíčů používaných na stejné úrovni pro přístup k jednomu šifrovanému médiu s možností jejich přidání a odebrání na žádost uživatele [1] .

První verzi LUKS, později pojmenovanou LUKS1, navrhl a implementoval Clemens Fruwirth v roce 2005 na základě kryptografického schématu TKS1, které poprvé popsal o rok dříve. Specifikace dále rozpracoval Milan Broz [1] . V roce 2018 vydal M. Brozh popis LUKS2 - rozšíření standardu LUKS1 s podporou dalších funkcí - například kontrola integrity . K dnešnímu dni má tento dokument status WIP ("probíhá") [2] .

Specifikace LUKS1 a LUKS2 definují standardy nezávislé na platformě pro použití v různých nástrojích. To nejen usnadňuje kompatibilitu a interoperabilitu různého softwaru , ale také zajišťuje, že software implementuje zdokumentovanou a bezpečnou metodu správy hesel [3] .

Referenční implementace LUKS1 a LUKS2 existují pro Linux a jsou dostupné prostřednictvím obslužného programu cryptsetup. Základem implementace je použití transparentního šifrovacího subsystému dm-crypt zabudovaného do linuxového jádra. Pod Microsoft Windows lze s FreeOTFE používat šifrovaná média LUKS1 [4] .

Teoretické základy

V „New Methods in Hard Disk Encryption“ z roku 2005 Fruwirth poskytuje analýzu požadavků na kryptosystém, který poskytuje uspokojivé zabezpečení a výkon na široce používaném uživatelském zařízení. Na základě výsledků této analýzy je navrženo kryptografické schéma „Template Key Setup 1“ neboli TKS1 a jeho modifikace TKS2, optimalizovaná pro aplikační implementaci a stává se základem specifikace LUKS [5] .

Hierarchie klíčů

Symetrické šifrování datového pole jedním klíčem , pokud je nutné tento klíč změnit (např. při jeho kompromitaci ), vyžaduje povinné přešifrování celého množství dat novým klíčem. V mnoha případech se jedná o nepřijatelně dlouhou operaci, kterou je obtížné provést v reálném čase bez přerušení systému [5] [3] .

Tento problém má vyřešit použití klíčové hierarchie. Takový systém používá klíče různých úrovní: hlavní klíč , který se používá přímo pro šifrování dat a zůstává fixní po celý životní cyklus šifrovaného oddílu, a uživatelské klíče , který se používá k šifrování hlavního klíče. Obsah hlavního klíče je vždy uložen zašifrovaný s každým z klíčů uživatele. Vzhledem k tomu, že velikost hlavního klíče je malá a obvykle nezávisí na objemu hlavních dat, lze jej znovu zašifrovat v krátkém pevném čase [5] [3] .

Přidání nového uživatelského klíče se provádí obnovením hlavního klíče jedním z již používaných uživatelských klíčů a jeho zašifrováním novým. Uživatelský klíč se změní stejným způsobem, ale kopie hlavního klíče zašifrovaná starým klíčem se přepíše. Smazání uživatelského klíče nevyžaduje zadání žádných klíčů a spočívá ve zničení kopie hlavního klíče zašifrovaného tímto klíčem. Každý z uživatelských klíčů tedy poskytuje přístup k zašifrovaným datům, přičemž jakýkoli klíč lze odvolat nebo změnit, aniž by bylo nutné znovu šifrovat celé pole dat. Je třeba poznamenat, že toto schéma vyžaduje trvalé uložení alespoň jedné kopie hlavního klíče zašifrovaného známým uživatelským klíčem [5] [3] [6] .

Sdílení tajemství

V praxi může nastat problém s implementací přístupu k zašifrovaným datům za předpokladu, že má subjekt více uživatelských klíčů současně. Pro takový scénář používá TKS1 Shamirovo schéma využívající prahové schéma [7] .

Ochrana dat před obnovením

Mnohá ​​fyzická zařízení pro ukládání dat – zejména pevné magnetické disky  – mají tu vlastnost, že zadržují stopy informací, které z nich byly odstraněny, i když jsou zcela přepsány, a to v takové míře, že existuje riziko nežádoucí obnovy. Některé konstrukční vlastnosti disků – například přeřazení náhradních sektorů  – činí toto riziko zvláště kritickým v podmínkách použití hierarchie klíčů kvůli malé velikosti šifrovaného hlavního klíče, který se často vejde do jednoho sektoru [5] [8] .

Prohlášení o problému

Úkol minimalizace pravděpodobnosti obnovy datového pole (například kompromitované kopie hlavního klíče) po pokusu o jeho zničení spočívá ve vytvoření speciální „křehké“ datové struktury, tedy takové nevratné destrukci jakéhokoli z nichž malá část výrazně sníží šance na obnovu všech původních dat [5] .

Let  - informace, která vyžaduje možnost nevratného zničení,  - datová struktura sestávající z bloků . Převzít hodnoty od ,  — od pro všechny . Pak musí existovat funkce , , která staví na , a funkce , , která obnovuje . Pak je požadováno, aby nebylo možné obnovit, pokud je alespoň jedna z komponent poškozena , jinými slovy,

P [ D ( s jeden , … , s i − jeden , X , s i + jeden , … , s n ) = D ] = jeden | D | {\displaystyle P[{\mathfrak {D}}(s_{1},\ldots ,s_{i-1},x,s_{i+1},\ldots ,s_{n})=D]={ \frac {1}{|\mathbb {D} |}}} pro všechny a pro všechny . Jakékoli lze získat se stejnou pravděpodobností, pokud alespoň jeden chybí. Jednoduše řečeno, velmi záleží na každém argumentu .

V případě úmyslného přepsání všech bloků takové struktury exponenciálně roste šance, že alespoň jeden z nich bude nenávratně zničen a v důsledku toho nebude možné obnovit všechny původní informace [5] [8] .

Řešení

Jednoduché schéma pro vytvoření takové závislosti může být následující: pro datovou strukturu vygenerujte bloky náhodných dat a vypočítejte . Poté lze obnovu provést jako V tomto případě nenávratné zničení alespoň jednoho bloku vede k neobnovitelnosti původní informace. Tento návrh lze považovat za variantu Shamirova schématu, až na to, že všechny části tajemství jsou uloženy na jednom místě. [7]

Toto schéma lze vylepšit zavedením prvku bitové difúze do řetězce XOR. Pak i částečné poškození jakéhokoli prvku v rozsahu jednoho nebo několika bitů výrazně ovlivní výsledek restaurování. K tomu lze použít nějakou kryptografickou hashovací funkci . Let  - bloky náhodných dat, pak musíte vypočítat řetězec hodnot hash: , , a vypočítat jako . V souladu s tím se pro obnovení řetězce hodnot hash vypočítá znovu a

Tento algoritmus ukládání dat se nazývá AFSplitter a používá se v kryptografickém schématu TKS1 k ukládání kopií hlavního klíče zašifrovaného uživatelskými klíči [5] [8] .

Ochrana hrubou silou

Jako součást obrany proti útokům hrubou silou na uživatelsky generovaná hesla, která mají tendenci mít nízkou entropii , využívá schéma TKS1 standard PBKDF2 k odvození uživatelského klíče z hesla , čímž se zvyšuje cena hrubé síly, aniž by došlo ke snížení výkonu při běžném používání [ 5] [8] [9] .

TKS1 a TKS2

Konečná sekvence akcí provedených podle schématu TKS1 za účelem získání přístupu k šifrovanému médiu [5] :

  • Parametry PBKDF2 se čtou z úložiště klíčů: salt, počet iterací;
  • Odtud je načten klíč zpracovaný AFSplitter, což je hlavní klíč zašifrovaný uživatelským klíčem. Je umístěn do paměti po zpracování reverzním algoritmem AFMerge;
  • Uživatel je vyzván k zadání hesla;
  • Pomocí hesla a dříve načtených parametrů je pomocí PBKDF2 odvozen šifrovací klíč hlavního klíče;
  • Hlavní klíč je dešifrován přijatým klíčem a uložen do paměti;
  • Pro přístup k datům je proudová šifra inicializována hlavním klíčem;
  • Kopie nešifrovaného hlavního klíče je vymazána z paměti .

TKS2 je v každém ohledu podobný TKS1, kromě toho, že uložená kopie hlavního klíče je nejprve zpracována AFSplitterem a poté zašifrována uživatelským klíčem. Při dešifrování klíče získaného z PBKDF2 je tedy uložená datová struktura nejprve dešifrována a poté zpracována pomocí AFMerge pro získání konečného uživatelského klíče. Toto schéma se lépe hodí pro implementaci transparentního šifrování a právě toto schéma vytvořilo základ standardu LUKS 1.0. [5] [3] .

Formát LUKS

Cílem vytvoření specifikace LUKS bylo standardizovat systém správy klíčů pro diskový oddíl, ke kterému se přistupuje prostřednictvím šifrování datového proudu. Prioritou byla bezpečnost všech fází práce s klíči v podmínkách používání zařízení dostupného běžnému uživateli. LUKS je považován za referenční implementaci modelu TKS2 a jako takový má poskytovat následující výhody [3] :

  • Podpora více hesel používaných pro přístup k jednomu šifrovanému disku, s možností bezpečně přidat, změnit a odstranit jakýkoli klíč na žádost uživatele;
  • Ochrana proti obnovení přístupu staženým heslem po jeho odstranění;
  • Přijatelná míra odolnosti vůči hrubé síle i při použití slabých hesel s nízkou entropií.

Mezi výhody LUKS navíc patří zajištění kompatibility prostřednictvím standardizace a bezplatná licence (GNU GPL). [1] [3]

Struktura sekce

Sekce LUKS1 se skládá z následujících částí [1] :

  • hlavička LUKS;
  • Úložiště klíčů KM1 - KM8;
  • Šifrovaná data.
+-------------+-------+-------+-------+--------+--- --------------+ | LUKS phdr | KM1 | KM2 | ... | KM8 | hromadné údaje | +-------------+-------+-------+-------+--------+--- --------------+ Název

Hlavička LUKS spolu s obsahem sekce klíče KM poskytuje všechny potřebné informace pro přístup k šifrovanému oddílu. Záhlaví obsahuje následující údaje [1] :

kouzlo Podpis záhlaví oddílu LUKS
verze Verze LUKS
jméno-šifry název šifry
šifrový režim parametry šifry
hash-spec hash používaný v režimu HMAC pro všechny operace PBKDF2
užitečné zatížení-offset počáteční offset šifrovaných dat (v sektorech)
klíčové bajty velikost klíče v bajtech
mk-digest kontrolní součet hlavního klíče
mk-trávicí-sůl sůl používaná v PBKDF2
mk-digest-iter počet iterací PBKDF2
uid UUID oddílu
klíč-slot-1 slot na klíče 1
klíčová drážka-2 slot na klíče 2
klíčová drážka-8 slot na klíče 8

Záhlaví a obsahové části klíčů mohou být uloženy na jiném fyzickém médiu než samotná šifrovaná data. Pokud dojde ke ztrátě záhlaví nebo částí obsahu klíčů, nebude možné získat přístup k zašifrovaným datům [5] .

Každý z 8 slotů klíče v phdr odpovídá jedné části obsahu klíče a obsahuje následující informace [1] :

aktivní stav slotu (povoleno/zakázáno)
iterací počet iterací PBKDF2
sůl sůl pro PBKDF2
klíč-materiál-offset posun začátku sekce klíčového obsahu
pruhy počet jízdních pruhů pro ochranu při obnově

Poznámky

  1. 1 2 3 4 5 6 Specifikace formátu On-Disk LUKS1 verze 1.2.3, Clemens Fruhwirth 2018
  2. Specifikace formátu On-Disk LUKS2 verze 1.0.0, Milan Brož 2018
  3. 1 2 3 4 5 6 7 Aus Linux Magazin, č. 10 2006 [1] Archivováno 12. října 2019 na Wayback Machine
  4. Oficiální stránky LUKS/cryptsetup, [2] Archivováno 7. dubna 2015 na Wayback Machine
  5. 1 2 3 4 5 6 7 8 9 10 11 12 Nové metody v šifrování pevného disku, Clemens Fruhwirth 2005
  6. Co by uživatelé měli vědět o úplném šifrování disku založeném na LUKS; Simone Bossi, Andrea Visconti, Universit`a degli Studi di Milano [3] Archivováno 6. května 2021 na Wayback Machine
  7. 1 2 Adi Shamir, How To Share A Secret (MIT, 1979) [4] Archivováno 2. února 2020 na Wayback Machine
  8. 1 2 3 4 Bezpečnostní analýza Cryptsetup/LUKS, tým Ubuntu, 2012 [5] Archivováno 26. června 2021 na Wayback Machine
  9. Implementace a analýza výkonu algoritmů PBKDF2, Bcrypt, Scrypt [6] Archivováno 25. prosince 2019 na Wayback Machine

Odkazy