Автор Тема: Full Disk Encryption в линукс.  (Прочетена 10138 пъти)

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Full Disk Encryption в линукс.
« -: Dec 03, 2012, 00:56 »
Току-що завърших един 3-дневен експеримент, който ми промени някои схващания, донякъде съм доволен че се оказах прав, донякъде съм силно разочарован че стана толкова лесно.

Мисля да лягам да спя, така че няма да изпадам в много детайли. В общи линии нещата се свеждат до следното: с помощта на хардуер за общо под 20 лева и в рамките на около 30 минути (с доста неоптимизиран код, мисля да го преправя), стига да имаш физически достъп до машината, full disk encryption-а се обезсмисля в голяма част от случаите. Тестовете ми бяха с dmcrypt/LUKS, но това е приложимо за абсолютно всеки opensource full-disk encryption софтуер (и за затворения също, просто ще е малко по-сложно)

Сложността на паролата и дали се използва въобще парола или keyfile е тотално ирелевантна - и най-сложната парола да бъде избрана, резултатът е потрошена криптография и то за същото време. Т.е атаката не включва bruteforce или каквато и да била подобна грубост върху паролата или ключа за декриптиране на блоковете.

Също така, това не е въобще нещо революционно и ново. Състои се от две части, като първата част е описана още преди 4-5 години (и вероятно е известна още по-отдавна), втората част теоретично е загатната на доста места, а за уиндоуските FDE решения има (поне) един продукт, който фирмата, която разработва (Passware) продава на разни law enforcement агенции. Това което направих е просто да приложа същите неща по отношение на най-масово използваното FDE решение в линукс - което е част от ядрото. Това което ме потресе е колко лесно става всичко - с малко железария и общо няколкостотин реда C код.

Трябва да го демонстрирам това, много хора ще го видят като нещо забавно :)


Като цяло за всеки, който има машина, за която е вероятно да стане обект на физическо посегателство (лаптоп в честия случай) и има криптирани дялове, към момента мога да кажа следното:

* В никакъв случай не оставяйте машината включена някъде без надзор (примерно хотелска стая) без значение дали е lock-ната или не.
* В никакъв случай не оставяйте машината "приспана" (suspend-to-ram)
* Освен ако не криптирате swap дяла, в никакъв случай не я хибернирайте (suspend-to-disk)
* Blacklist-вайте firewire_sbp2 kernel модула, така че да не се зарежда

Единственото, което би могло да бъде частичен проблем е че нещата зависят от kernel версията до известна степен. Това не е огромен проблем обаче. Която и да е kernel версия до момента няма да го спре, единствената разлика е че кода може да се налага малко да се преправи (също и спрямо 32-битова/64-битова машина). Вярвам, че може да се направи по далеч по-reliable начин ако се отдели малко повече време.

Като цяло всичкото това не е нещо ново или различно, обаче лекотата с която може да се направи е просто плашеща.



Активен

"Knowledge is power" - France is Bacon

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #1 -: Dec 03, 2012, 02:07 »
* В никакъв случай не оставяйте машината включена някъде без надзор (примерно хотелска стая) без значение дали е lock-ната или не.
* В никакъв случай не оставяйте машината "приспана" (suspend-to-ram)
* Освен ако не криптирате swap дяла, в никакъв случай не я хибернирайте (suspend-to-disk)
* Blacklist-вайте firewire_sbp2 kernel модула, така че да не се зарежда
Имам въпрос: всички тези случаи описват включена машина със заредено ядро и модулi dm_mod и dm_crypt, когато ключът за декриптиране се намира в RAM. Осмелявам се да предположа, че използваш вече заредения ключ, така ли е? Използването може и да не е пряко, но така или иначе ключът е в наличност и вече е бил въведен при старта на системата. Какво е положението когато компютърът е изключен и трябва да се декриптира дискът, или да предположим дискът е изваден и трябва да се декриптира на друг компютър, направен е образ на диска и т.н.? (т.е. целта не е открадването на хардуера, а на данните?) Така или иначе ЛУКС защитава срещу посегателство преди въвеждане на ключа, а не след. След въвеждането му защитата се свежда до слабостта на най-слабото звено на работещата система.. Т.е. ако щракна ctrl-alt-F1 и паролата на root е празна за каква криптография говорим? Тя е снета в момента в който потребителят си е въвел ключа.
« Последна редакция: Dec 03, 2012, 02:32 от dejuren »
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #2 -: Dec 03, 2012, 08:09 »
По същество това е форма на side-channel атака, която работи само когато модулите и ключът под някаква форма е зареден в RAM паметта. Ако машината вече е изключена, тогава остава вариантът същото да се случи ако някога машината е била хибернирана. Тогава обаче няма 100% гаранция че ще е успешно (няма да е успешно ако swap дяла/файла е криптиран и/или ако имаме впоследствие pageout-ната памет, помазала точно това, което ни е нужно).

dm-crypt обаче не е напълно невинен. Има начин всичко това да се предотврати, въпреки че не е особено евтин. По-новите системи са многоядрени и имат 8 (или 16 при x86_64) 128-битови SSE регистри. Това е напълно достатъчно за да може master key-а никога да не напуска регистрите и да отива в RAM-а. За целта обаче трябва да бъде dedicate-нато едно процесорно ядро само и единствено за kernel thread-а, който евентуално би се занимавал с това. Защото слабото място би било context switch-ването, тогава състоянието на регистрите трябва да се запази някъде (в рамта).

В случай че машината попадне в ръцете на лошите изключена, тогава единствения вариант е атака върху passphrase-а (тъй като се предполага че ентропията ще е по-ниска от тази на derive-натия ключ). Успехът силно зависи от редица фактори, бих казъл не особено висок обаче.

Активен

"Knowledge is power" - France is Bacon

ddantgwyn

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 1262
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #3 -: Dec 03, 2012, 08:35 »
...

В случай че машината попадне в ръцете на лошите изключена, тогава единствения вариант е атака върху passphrase-а (тъй като се предполага че ентропията ще е по-ниска от тази на derive-натия ключ). Успехът силно зависи от редица фактори, бих казъл не особено висок обаче.

Което и ни дава някакво [временно] решение, ако сме параноично настроени на тема защита на информацията -- да изключваме винаги машината (имам предвид мобилна такава) и да използваме сложна passphrase при криптирането на дяловете.

Темата е интересна -- не толкова с методиката на разбиване (тя е за gat3way :)), колкото с възможните мерки за противодействие.
Активен

the lamer's team honourable member

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #4 -: Dec 03, 2012, 08:52 »
P.S току-що разбрах че MacOSX взема допълнителни мерки за защита когато машината е заключена. Твърде вероятно там няма да мине точно същият номер. Въпреки че има различни attack vector-и, ние просто минаваме през най-проучения.
Активен

"Knowledge is power" - France is Bacon

annikoloff

  • Напреднали
  • *****
  • Публикации: 24
  • Distribution: Windows 8 Pro
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #5 -: Dec 03, 2012, 09:29 »
Ако разбирам правилно, хардуерният TPM би решил проблема, така ли?
Активен

Нямам време да се занимавам с глупости. Затова ползвам Windows.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #6 -: Dec 03, 2012, 09:43 »
Би могъл да го реши. За съжаление не се сещам за линукски FDE софтуер, който да може да прави нещата по този начин.
Активен

"Knowledge is power" - France is Bacon

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #7 -: Dec 03, 2012, 17:40 »
Значи външен диск с encfs например си е сигурен засега
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #8 -: Dec 03, 2012, 18:20 »
encfs работи на ниво файлова система, не блокови устройства. В известен смисъл е по-сигурно (можеш да си вземеш външния диск в джоба и тогава няма как да го откраднат :)

В противен случай - вероятно не, същите проблеми би трябвало да са валидни и там.
Активен

"Knowledge is power" - France is Bacon

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #9 -: Dec 03, 2012, 19:58 »
Не, ставаше дума ако ти задигнат диска
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #10 -: Dec 03, 2012, 20:18 »
Трябва да е същото. Мислех да си поиграя с TrueCrypt на второ четене, но и с encfs мога да се занимая.

P.S оптимизирах го. Значи цялата операция вече отнема 12 минути за машина с 4GB RAM. 10 минути и половина за да се сдобия със съдържанието на цялата физическа памет и минута и половина да го сканирам за ключа. Лошото в цялата работа е че dm-crypt е преживял няколко "еволюции" така да се каже (със сигурност една в 2.6.32 и една някъде в 3.0 или 3.2). Засега работи надеждно единствено срещу 2.6.32 и 3.2 системи (и между тези версии, вероятно и след 3.2 ако не са пипали). Става малко забавно, както в антивирусния софтуер, да търсиш сигнатури :)

Иначе най-забавното е как без да знаеш паролата можеш да активираш и mount-ваш устройството. С dm-crypt е относително лесно, с TrueCrypt и encfs предполагам ще е малко по-голяма играчка.

П.П още по-забавно е как може цялата работа да пропадне заради трета страна. Сега установих че заради умниците списващи Gnome проекта, спокойно може (в някои случаи) да се recover-не и паролата, а не само да се отключва криптираното устройство без да знаеш паролата. Това вече е прекалено според мен.
« Последна редакция: Dec 03, 2012, 23:09 от gat3way »
Активен

"Knowledge is power" - France is Bacon

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #11 -: Dec 04, 2012, 03:17 »
да ама при външен диск с encfs каква памет ще сканираш за ключове, а и паролата никъде не се записва, а се набива в момента на маунтване
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Full Disk Encryption в линукс.
« Отговор #12 -: Dec 04, 2012, 08:06 »
Някой може ли да го обясни малко по-така, като за неразбирачи. Доколкото разбрах, се исползва вече зареден ключ, стига да се знае къде се намира в RAM-та или някъде в SWAP ?
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #13 -: Dec 04, 2012, 08:09 »
Паролата по принцип не трябва да се пази никъде. Тя служи единствено като вход на някаква трансформация (key derivation), която докарва крайния ключ с който се декриптират данните. Това може да става относително просто, а може да е доста усложнено. В случаят с LUKS примерно е доста усложнено. Но крайният резултат (един или няколко ключа, в зависимост от режима за декриптиране - примерно при LRW са два, при CBC-ESSIV е един) трябва да стои в някаква бърза памет. Понеже не е практично потребителят да въвежда паролата при всеки блок, който ще се декриптира (а и тъй като key derivation-а служи и за усложняване на bruteforce атаките като въвежда CPU-интензивни операции, няма и да е бързо ако трябва да го правим постоянно).

Така че ключът (ключовете) под една или друга форма отново са ти в RAM паметта. Без значение дали е външен диска и как точно се криптират данните.

П.П за дискове, чиито контролер извършва криптирането, номерът няма да мине. Но пък там ако откраднеш и контролера....та такива работи.
« Последна редакция: Dec 04, 2012, 08:18 от gat3way »
Активен

"Knowledge is power" - France is Bacon

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Full Disk Encryption в линукс.
« Отговор #14 -: Dec 04, 2012, 09:57 »
Цитат
Някой може ли да го обясни малко по-така, като за неразбирачи. Доколкото разбрах, се исползва вече зареден ключ, стига да се знае къде се намира в RAM-та или някъде в SWAP ?

Не можеш да знаеш къде се намира. Разбира се съществува подхода да изпробваш всички (keysize) стойности като тръгнеш от нулевия байт в дъмпнатата памет и стигнеш до края. Това обаче е доста проблемно - първо че няма лесен начин да валидираш ключовете (след като не знаеш каква файлова система има) - т.е ще трябва да монтираш файловата система със всеки възможен ключ и да гледаш дали има файлове вътре. За машинка с повечко рам (примерно 4GB), това вероятно ще отнеме години. Не че няма гарантирано да успее, но сроковете са прекалено големи. Та има други хитрини, от които можеш да се възползваш. Както казах, при 4GB дъмп от физическа памет ми трябват до минута и половина-две за да мога да извлека ключа.
« Последна редакция: Dec 04, 2012, 10:01 от gat3way »
Активен

"Knowledge is power" - France is Bacon

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
SuSe 8.1 full 7 diska
Хардуерни и софтуерни проблеми
Alexandro 1 3170 Последна публикация Oct 29, 2002, 08:14
от IvanST
samba full access na dir ??
Настройка на програми
PAIN1 9 4564 Последна публикация Jul 24, 2003, 13:22
от
как да забраня disk cache и disk buffers?
Настройка на програми
Vesko 6 3498 Последна публикация Jan 06, 2005, 20:32
от Vesko
Full log на веб активност
Настройка на програми
kennedy 8 4101 Последна публикация Dec 30, 2007, 17:50
от kennedy
Disk format 'qcow2' does not support full allocation.
Настройка на програми
bILLY 5 3270 Последна публикация Apr 18, 2015, 21:51
от neter