LUKS

A LUKS (a Linux Unified Key Setup -ból ) egy lemeztitkosítási formátum - specifikáció , amelyet eredetileg Linux kernelen alapuló operációs rendszerekben használtak . A technológia elsődleges célja az volt, hogy felhasználóbarát, szabványosított módszert biztosítson a visszafejtési kulcsok kezelésére . A formátum egyik sajátossága, hogy több, egymással egyenértékű kulcsot támogat egy titkosított adathordozó eléréséhez, a felhasználó kérésére lehetőség van ezek hozzáadására és eltávolítására [1] .

A LUKS első, később LUKS1 névre keresztelt verzióját Clemens Fruwirth tervezte és valósította meg 2005-ben, a TKS1 kriptográfiai séma alapján, amelyet egy évvel korábban írt le először. A specifikációt Milan Broz fejlesztette tovább [1] . 2018-ban M. Brozh kiadta a LUKS2 leírását – a LUKS1 szabvány kiterjesztését, amely további funkciókat is támogat – például az integritás-ellenőrzést . A mai napig ez a dokumentum WIP ("folyamatban") [2] státuszú .

A LUKS1 és LUKS2 specifikációk platformfüggetlen szabványokat határoznak meg a különféle eszközökben való használatra. Ez nemcsak a különböző szoftverek kompatibilitását és interoperabilitását segíti elő , hanem azt is biztosítja, hogy a szoftver dokumentált és biztonságos jelszókezelési módszert valósítson meg [3] .

A LUKS1 és LUKS2 referenciamegvalósításai léteznek Linuxra, és a cryptsetup segédprogramon keresztül érhetők el. A megvalósítás alapja a Linux kernelbe épített transzparens lemeztitkosítási alrendszer dm-crypt használata. Microsoft Windows alatt a LUKS1 titkosított adathordozók használhatók a FreeOTFE - vel [4] .

Elméleti alapok

A 2005-ös "New Methods in Hard Disk Encryption" című kiadványban a Fruwirth elemzi egy olyan titkosítási rendszer követelményeit, amely kielégítő biztonságot és teljesítményt nyújt a széles körben használt felhasználói berendezéseken. Ennek az elemzésnek az eredményei alapján javasolt a „Template Key Setup 1” vagy TKS1 kriptográfiai séma, valamint annak TKS2 módosítása, amely az alkalmazás implementációjára optimalizált és a LUKS specifikáció alapjává válik [5] .

A kulcsok hierarchiája

Egy adattömb szimmetrikus titkosítása egyetlen kulccsal , ha módosítani kell ezt a kulcsot (például ha feltörik ), a teljes adatmennyiség kötelező újratitkosítását új kulccsal kell végrehajtani. Sok esetben ez egy elfogadhatatlanul hosszú művelet, amelyet nehéz valós időben végrehajtani a rendszer megszakítása nélkül [5] [3] .

A kulcshierarchia használata ezt a problémát hivatott megoldani. Egy ilyen rendszer különböző szintű kulcsokat használ: mesterkulcsot , amelyet közvetlenül az adatok titkosítására használnak, és a titkosított partíció teljes életciklusa alatt rögzítettek maradnak, valamint felhasználói kulcsokat , amelyek a mesterkulcs titkosítására szolgálnak. A főkulcs tartalma mindig titkosítva kerül tárolásra a felhasználó minden egyes kulcsával. Mivel a mesterkulcs mérete kicsi, és általában nem függ a fő adatok mennyiségétől, rövid fix időn belül újratitkosítható [5] [3] .

Új felhasználói kulcs hozzáadása úgy történik, hogy a mesterkulcsot visszaállítjuk valamelyik már használt felhasználói kulccsal, és titkosítjuk egy újjal. A felhasználói kulcs ugyanígy megváltozik, de a főkulcs régi kulccsal titkosított másolata felülíródik. A felhasználói kulcs törléséhez nincs szükség kulcsok megadására, és az ezzel a kulccsal titkosított főkulcs másolatának megsemmisítését jelenti. Így a felhasználói kulcsok mindegyike hozzáférést biztosít a titkosított adatokhoz, miközben bármely kulcs visszavonható vagy megváltoztatható anélkül, hogy a teljes adattömböt újra titkosítani kellene. Megjegyzendő, hogy ez a séma megköveteli a mesterkulcs legalább egy példányának állandó tárolását, ismert felhasználói kulccsal titkosítva [5] [3] [6] .

Titok megosztása

A gyakorlatban probléma adódhat a titkosított adatokhoz való hozzáférés megvalósításával, feltéve, hogy az alany több felhasználói kulccsal rendelkezik egyidejűleg. Egy ilyen forgatókönyv esetén a TKS1 Shamir sémáját használja küszöbsémát használva [7] .

Adatok védelme a helyreállítástól

Számos fizikai adattároló eszköz – különösen a mágneses merevlemezek  – megvan az a tulajdonsága, hogy a róluk törölt információk nyomait még akkor is megőrzi, ha azok teljesen felülíródnak, olyan mértékben, hogy fennáll a nem kívánt helyreállítás veszélye. A meghajtók egyes tervezési jellemzői – például a tartalék szektorok átcsoportosítása  – ezt a kockázatot különösen kritikussá teszik kulcshierarchia használatának körülményei között a titkosított főkulcs kis mérete miatt, amely gyakran belefér egy szektorba [5] [8] .

A probléma leírása

Egy adattömb (például a főkulcs egy kompromittált másolata) visszaállításának valószínűségének minimalizálása a megsemmisítési kísérlet után egy speciális „törékeny” adatstruktúra felépítéséhez vezet, vagyis minden olyan visszafordíthatatlan megsemmisítéshez. amelyek kis része nagymértékben csökkenti az összes eredeti adat visszaállításának esélyét [5] .

Legyen  - információ, amely visszafordíthatatlan megsemmisítés lehetőségét igényli, - blokkokból  álló adatstruktúra . Vegyünk értékeket a ,  — -ból mindenki számára . Ekkor léteznie kell egy függvénynek , amely a -ra épít , és egy függvénynek , amely visszaállítja . Akkor szükséges, hogy a helyreállítás lehetetlen legyen, ha legalább az egyik alkatrész megsérült , más szóval,

P [ D ( s egy , … , s én − egy , x , s én + egy , … , s n ) = D ] = egy | D | {\displaystyle P[{\mathfrak {D}}(s_{1},\ldots ,s_{i-1},x,s_{i+1},\ldots ,s_{n})=D]={ \frac {1}{|\mathbb {D} |}}} mindenkinek és mindenkinek . Bármelyik beszerezhető ugyanolyan valószínűséggel, ha legalább egy hiányzik. Egyszerűen fogalmazva, ez erősen függ minden érvtől .

Az összes ilyen szerkezetű blokk szándékos felülírása esetén exponenciálisan nő az esélye annak, hogy legalább az egyik helyrehozhatatlanul megsemmisül, és ennek eredményeként lehetetlen lesz az összes eredeti információ visszanyerése [5] [8] .

Megoldás

Egy ilyen függőség létrehozásának egyszerű sémája a következő lehet: egy adatszerkezethez generáljon véletlenszerű adatblokkokat , és számítsa ki . Ekkor a helyreállítás a következőképpen történhet: Ebben az esetben legalább egy blokk helyrehozhatatlan megsemmisülése az eredeti információ visszaállíthatatlanságához vezet. Ez a kialakítás Shamir sémájának egy változatának tekinthető, kivéve, hogy a titok minden részét egy helyen tárolják. [7]

Ez a séma javítható, ha az XOR láncba bitenkénti diffúziós elemet vezetünk be. Ekkor bármely elem egy vagy több bites részleges sérülése is jelentősen befolyásolja a helyreállítás eredményét. Ehhez néhány kriptográfiai hash függvény használható . Legyen  - véletlenszerű adatok blokkjai, akkor ki kell számítani a hash értékek láncát: , , és kiszámítani a következőképpen . Ennek megfelelően a hash-értékek láncának visszaállításához újra kiszámítjuk és

Ezt az adattárolási algoritmust AFSplitternek hívják, és a TKS1 titkosítási sémában használják a mesterkulcs felhasználói kulcsokkal titkosított másolatainak tárolására [5] [8] .

Brute-force protection

Az alacsony entrópiájú , felhasználók által generált jelszavak elleni brute force támadások elleni védelem részeként a TKS1 rendszer a PBKDF2 szabványt használja a felhasználói kulcsok jelszóból való származtatására , növelve a brutális erőszak költségeit anélkül, hogy a normál használat során a teljesítményt veszélyeztetné . 5] [8] [9] .

TKS1 és TKS2

A TKS1 séma szerint végrehajtott műveletek végső sorrendje a titkosított adathordozóhoz való hozzáférés érdekében [5] :

  • A PBKDF2 paraméterei a kulcstárolóból kerülnek kiolvasásra: só, iterációk száma;
  • Innentől az AFSplitter által feldolgozott kulcs beolvasásra kerül, amely egy felhasználói kulccsal titkosított mesterkulcs. A fordított AFMerge algoritmus általi feldolgozás után a memóriába kerül;
  • A felhasználó jelszót kér;
  • A jelszó és az előzőleg beolvasott paraméterek felhasználásával a mesterkulcs titkosítási kulcsa a PBKDF2 használatával kerül származtatásra;
  • A mesterkulcsot a kapott kulcs dekódolja és a memóriába helyezi;
  • Az adatfolyam titkosítása egy mesterkulccsal inicializálva van az adatok eléréséhez;
  • A titkosítatlan főkulcs másolata törlődik a memóriából .

A TKS2 minden tekintetben hasonló a TKS1-hez, azzal a különbséggel, hogy a mesterkulcs tárolt másolatát először az AFSplitter dolgozza fel, majd titkosítja a felhasználói kulccsal. Így a PBKDF2-től kapott kulcs visszafejtésekor a tárolt adatszerkezetet először dekódolja, majd az AFMerge feldolgozza, hogy megkapja a végső felhasználói kulcsot. Ez a séma alkalmasabb transzparens titkosítás megvalósítására, és ez a séma képezte a LUKS 1.0 szabvány alapját. [5] [3] .

LUKS formátum

A LUKS specifikáció létrehozásának célja az volt, hogy szabványosítsa a streaming titkosítással elérhető lemezpartíció kulcskezelő rendszerét. Elsőbbséget élvezett a kulcsokkal végzett munka minden szakaszának biztonsága a hétköznapi felhasználó rendelkezésére álló berendezések használati körülményei között. A LUKS a TKS2 modell referencia megvalósításának tekinthető, és mint ilyen, a következő előnyöket kívánja nyújtani [3] :

  • Egy titkosított lemez eléréséhez használt több jelszó támogatása, a felhasználó kérésére bármilyen kulcs biztonságos hozzáadásának, megváltoztatásának és törlésének lehetőségével;
  • Védelem a hozzáférés visszaállítása ellen a visszavont jelszóval annak eltávolítása után;
  • Elfogadható fokú ellenállás a nyers erővel szemben, még alacsony entrópiájú, gyenge jelszavak használata esetén is.

Ezenkívül a LUKS előnyei között szerepel a kompatibilitás biztosítása a szabványosítás és a szabad licenc (GNU GPL) révén. [1] [3]

Szakaszszerkezet

A LUKS1 szekció a következő részekből áll [1] :

  • LUKS fejléc;
  • Kulcstárolók KM1 - KM8;
  • Titkosított adatok.
+-------------+-------+-------+--------+--------+---- -------------+ | LUKS phdr | KM1 | KM2 | ... | KM8 | tömeges adat | +-------------+-------+-------+--------+--------+---- -------------+ Cím

A LUKS fejléc a KM kulcs szakasz tartalmával együtt minden szükséges információt megad a titkosított partíció eléréséhez. A fejléc a következő adatokat tartalmazza [1] :

varázslat LUKS szakaszfejléc aláírás
változat LUKS verzió
rejtjel-név titkosított név
titkosítási mód titkosítási paraméterek
hash-spec HMAC módban használt hash minden PBKDF2 művelethez
hasznos teher-eltolás a titkosított adatok kezdeti eltolása (szektorokban)
kulcs-byte-ok kulcsméret bájtban
mk-emésztés főkulcs ellenőrző összeg
mk-emésztés-só PBKDF2-ben használt
mk-digest-iter a PBKDF2 iterációk száma
uid Partíció UUID
kulcs-nyílás-1 kulcsnyílás 1
kulcs-nyílás-2 kulcsnyílás 2
kulcs-nyílás-8 kulcsnyílás 8

A kulcsok fejlécei és tartalmi részei más fizikai adathordozón is tárolhatók, mint maga a titkosított adat. Ha a kulcsok tartalmának fejléce vagy részei elvesznek, lehetetlenné válik a titkosított adatok elérése [5] .

A phdr 8 kulcsnyílása mindegyike a kulcstartalom egy-egy szakaszának felel meg, és a következő információkat tartalmazza [1] :

aktív slot állapota (engedélyezett/letiltva)
iterációk a PBKDF2 iterációk száma
só a PBKDF2-hez
kulcs-anyag-offset a legfontosabb tartalom szakasz kezdetének eltolása
csíkok sávok száma a helyreállítási védelemhez

Jegyzetek

  1. 1 2 3 4 5 6 LUKS1 on-Disk formátum specifikáció, 1.2.3 verzió, Clemens Fruhwirth 2018
  2. LUKS2 on-Disk Format specifikáció, 1.0.0 verzió, Milan Brož 2018
  3. 1 2 3 4 5 6 7 Aus Linux Magazin, 2006. 10. szám [1] Archivált : 2019. október 12. a Wayback Machine -nél
  4. LUKS/cryptsetup hivatalos weboldal, [2] Archivált 2015. április 7. a Wayback Machine -nél
  5. 1 2 3 4 5 6 7 8 9 10 11 12 Új módszerek a merevlemez-titkosításban, Clemens Fruhwirth, 2005
  6. Amit a felhasználóknak tudniuk kell a LUKS-on alapuló teljes lemeztitkosításról; Simone Bossi, Andrea Visconti, Universit`a degli Studi di Milano [3] Archiválva : 2021. május 6. a Wayback Machine -nél
  7. 1 2 Adi Shamir, How To Share A Secret (MIT, 1979) [4] Archivált 2020. február 2-án a Wayback Machine -nél
  8. 1 2 3 4 A Cryptsetup/LUKS biztonsági elemzése, Ubuntu Team, 2012 [5] Archiválva : 2021. június 26. a Wayback Machine -nél
  9. A PBKDF2, Bcrypt, Scrypt algoritmusok megvalósítása és teljesítményelemzése [6] Archivált : 2019. december 25. a Wayback Machine -nél

Linkek