Linux за българи: Форуми

Сигурност => Системна Сигурност => Темата е започната от: gat3way в Dec 03, 2012, 00:56



Титла: Full Disk Encryption в линукс.
Публикувано от: gat3way в 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 начин ако се отдели малко повече време.

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





Титла: Re: Full Disk Encryption в линукс.
Публикувано от: dejuren в 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 е празна за каква криптография говорим? Тя е снета в момента в който потребителят си е въвел ключа.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в 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-натия ключ). Успехът силно зависи от редица фактори, бих казъл не особено висок обаче.



Титла: Re: Full Disk Encryption в линукс.
Публикувано от: ddantgwyn в Dec 03, 2012, 08:35
...

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

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

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


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 03, 2012, 08:52
P.S току-що разбрах че MacOSX взема допълнителни мерки за защита когато машината е заключена. Твърде вероятно там няма да мине точно същият номер. Въпреки че има различни attack vector-и, ние просто минаваме през най-проучения.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: annikoloff в Dec 03, 2012, 09:29
Ако разбирам правилно, хардуерният TPM би решил проблема, така ли?


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 03, 2012, 09:43
Би могъл да го реши. За съжаление не се сещам за линукски FDE софтуер, който да може да прави нещата по този начин.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: jet в Dec 03, 2012, 17:40
Значи външен диск с encfs например си е сигурен засега


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 03, 2012, 18:20
encfs работи на ниво файлова система, не блокови устройства. В известен смисъл е по-сигурно (можеш да си вземеш външния диск в джоба и тогава няма как да го откраднат :)

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


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: jet в Dec 03, 2012, 19:58
Не, ставаше дума ако ти задигнат диска


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в 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-не и паролата, а не само да се отключва криптираното устройство без да знаеш паролата. Това вече е прекалено според мен.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: jet в Dec 04, 2012, 03:17
да ама при външен диск с encfs каква памет ще сканираш за ключове, а и паролата никъде не се записва, а се набива в момента на маунтване


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: 4096bits в Dec 04, 2012, 08:06
Някой може ли да го обясни малко по-така, като за неразбирачи. Доколкото разбрах, се исползва вече зареден ключ, стига да се знае къде се намира в RAM-та или някъде в SWAP ?


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

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

П.П за дискове, чиито контролер извършва криптирането, номерът няма да мине. Но пък там ако откраднеш и контролера....та такива работи.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 04, 2012, 09:57
Цитат
Някой може ли да го обясни малко по-така, като за неразбирачи. Доколкото разбрах, се исползва вече зареден ключ, стига да се знае къде се намира в RAM-та или някъде в SWAP ?

Не можеш да знаеш къде се намира. Разбира се съществува подхода да изпробваш всички (keysize) стойности като тръгнеш от нулевия байт в дъмпнатата памет и стигнеш до края. Това обаче е доста проблемно - първо че няма лесен начин да валидираш ключовете (след като не знаеш каква файлова система има) - т.е ще трябва да монтираш файловата система със всеки възможен ключ и да гледаш дали има файлове вътре. За машинка с повечко рам (примерно 4GB), това вероятно ще отнеме години. Не че няма гарантирано да успее, но сроковете са прекалено големи. Та има други хитрини, от които можеш да се възползваш. Както казах, при 4GB дъмп от физическа памет ми трябват до минута и половина-две за да мога да извлека ключа.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: shoshon в Dec 04, 2012, 11:06
Цитат
Та има други хитрини, от които можеш да се възползваш. Както казах, при 4GB дъмп от физическа памет ми трябват до минута и половина-две за да мога да извлека ключа.


Ако имаш дъмп на паметта не виждам защо трябва да се сканира... според мен ключа може да се извлече с прост debugger. Момент...

Това да не е оня "bug" на firewire хардуера, дето ти позволява да издъмпиш всичкото рам?


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 04, 2012, 11:46
С debugger ще е трудно, защото имаш дъмп на физическа памет, трябва да превърнеш всички вирутални адреси във физически такива. При 32-битови системи, има сравнително прост mapping между горния 1GB виртуална памет и първия 1GB физическа памет, след това обаче става сложно - трябва да си ги превръщаш сам с помощта на page таблиците.  Което е проблем, защото не знаеш къде са въпросните page таблици - адреса се пази в регистър (май CR3 беше), а стойностите на регистрите ги нямаш (което на практика създава доста други проблеми свързани с дебъгването). Дори и да е възможно, дъмпа трябва доста да се преработи, за да стане подходящ за дебъгване. Според мен вероятността да стане обаче е доста ниска.

Иначе се използва firewire като attack vector за DMA атаката. Pодобно нещо би трябвало да може да се направи и с друга шина (eSATA или Thunderbolt). Не е bug, а е feature :)


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: growchie в Dec 04, 2012, 22:59
Това работи ли и на UEFI? Ако е активиран secure boot механизма където се зарежда само подписан код атаката върви ли. (Далеч съм от мисълта, че за правилните правителства буут лоудъра няма да разпознае кода като приятелски). До колкото схващам дъмпът на паметта става преди процесора да се вкара в защитен режим или бъркам.

В тази връзка преди време бях гледал видео как от изключен компютър вадят рама от компютъра охлаждаха я и след това я сканираха наново и вадеха в случая снимка на мона лиза :)


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 04, 2012, 23:18
Това е ирелевантно. Знам че има такъв вид атаки с инсталиране на троянизиран bootloader, не помня как го наричаха "evil maid" или нещо от сорта. Там идеята е съвсем различна - и да, подписаните bootloader-и и secure boot-ването би следвало да не го позволяват. В нашият случай вземаме съдържанието на физическата памет след като е преминало в защитен режим, заредено е ядрото, въведен е passphrase-а, потребителят е правил там каквото е правил, без да се налага инсталация на каквото и да било на машината му, т.е UEFI няма отношение към проблема. Всичко е доста просто, може да го издемонстрирам на който има желание, няма никакъв rocket science в цялата работа. Това, което мен лично доста ме впечатли е колко е просто и как всеки може да го направи доволно лесно (какво остава за органите на реда примерно :) ).

Иначе, в момента съм се заял с LUKS по принцип, сега работя по offline атаката в hashkill. Имам работеща версия, засега само върху CPU. Мога само да кажа, че хората, които са го правили са били доста параноични, разбира се зависи от случая, но в общият случай, единствено в защитените 7zip архиви и MS Office 2013 файлове съм виждал толкова брутален key derivation. За съжаление, авторите са решили да адресират евентуалната поява на massive parallel хардуера от сорта на видеокарти и FPGA чипове просто с ненормално увеличен брой итерации, което е грешка предвид това което се е случило след това. Ако бяха подбрали някой memory-интензивен алгоритъм за key derivation от сорта на scrypt, нещата щяха да са вече наистина отчайващи.

Другият пропуск според мен е че броят на итерациите се обвързва със скоростта на машината, където е създаден keyslot-а. Т.е Ако създадем криптиран диск (или просто keyslot за него) върху бавна машина, ще можем да го атакуваме с доста по-висока скорост, отколкото ако го създадем върху бърза машина. Това е доста странно хрумване, не съм го виждал имплементирано другаде.


Цитат

В тази връзка преди време бях гледал видео как от изключен компютър вадят рама от компютъра охлаждаха я и след това я сканираха наново и вадеха в случая снимка на мона лиза


Да, и това го има (само че е от включен компютър, RAM-а при стайни температури губи изцяло съдържанието си в рамките на секунди след изключване на напрежението). Обаче там нещата са one-shot, т.е имаш един опит и не успееш ли, си прецакан. Дори охладени до минус 50-60 градуса, паметта в банките дегенерира в рамките на минути и трябва спешно да се "имплантира". А "имплантирането" на рамта в друга машина е забавна задача, има доста мотики. Примерно power-on self теста на BIOS-а има навика да тества рам-та като я презаписва и препрочита и гледа за разлики. Това ако се случи с "имплантираната" памет, всичко отива по дяволите :)


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: growchie в Dec 05, 2012, 20:03
И какво излиза, лаптоп със запоена памет и подписан процес на зареждане без dma портове като firewire thuderbotl ili esata е относително добре защитен от подобни посегателства. Май само chromebook i macbookair са долу горе в тази категория.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 05, 2012, 20:22
Ами не трябва да има и PCMCIA или ExpressCard, защото не е проблем да му се ръгне Firewire адаптер.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: Sairos в Dec 05, 2012, 21:25
И какво излиза, лаптоп със запоена памет и подписан процес на зареждане без dma портове като firewire thuderbotl ili esata е относително добре защитен от подобни посегателства. Май само chromebook i macbookair са долу горе в тази категория.

Дори и Mac AIR има thunderbotl.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: growchie в Dec 05, 2012, 21:28

Дори и Mac AIR има thunderbotl.

Новият може, моят е първата генерация и няма нищо освен 1 юсб порт. Но няма подписване на зареждането, така че май само chromebook-a остава като опция.

Иначе PCMCIA и екпрес катрите ги бях забравил че съществуват.
Един допълнителен въпрос, как стои положението с USB3? Да не са го ъпргрейднали по несигурен начин.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 05, 2012, 22:00
Не, няма как да стане през USB, понеже там host контролера единствено може да иницира DMA трансфери, а навързаната периферия е "slave" и прави каквото й се каже.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 05, 2012, 23:14
А, всъщност имало нещо наречено USB on-the-go, където имало вариант устройството да го играе slave или host, в зависимост от каквото му се каже. Това теоретично би трябвало да може да доведе до същият проблем, обаче не мисля, че който и да е лаптоп е застрашен.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: dejuren в Dec 06, 2012, 01:26
gat3way, разкарай LUKS-a и тествай пак. Аз имам подозрението, че си открил нещо, несвързано с криптиране на диска.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 06, 2012, 08:08
Нищо не съм откривал, открито е отдавна. Просто пробвах да видя дали ще сработи и доколко успешно срещу luks. Ако няма криптиране...тогава има други поразии които могат да се направят ползвайки тази особеност. Те обаче не са целта на занятието.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: Yasen6275 в Dec 06, 2012, 08:34
Разбирам малко от криптография, да не кажа почти нищо, но това което описваш ми се струва неизбежно.

За да се рабои с криптирания диск/дял някъде трябва да се съхранява ключа за достъп до него, нали така?

Не разбирам кое те притеснява толкова. Леснотата с която може да се намери ключа в мемори дъмпа? Или нещо друго? Освен постоянно гасене/криптиране на слапа виждаш ли някакво друго решение на проблема?

 Варианта с отделеното ядро ми се струва непрактичен. Ако се мисли в подобна посока по скро ни трябва устройство специално предназначено за крипто нужди.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 06, 2012, 11:51
Притеснява ме колко е лесно на първо време да се сдобиеш с дъмпа и на второ време колко е лесно да изровиш точно това, което ти трябва от него.

Известно време мислих по въпроса как може да се подобрят нещата от страна на dm-crypt/luks като изключим варианта с пазенето в регистри и dedicate-нато ядро за криптографията. Това не е единственият начин, има и други начини ако не това да се забрани, то поне да се направи доста сложно за реализация. Примерно в luks има една забавна трансформация, AFMerge/AFSplit, която грубо казано "пръсва" по бройка сектори на устройството малка част от ключа, съответно за да ги събереш, трябва да изчетеш тези сектори и да приложиш една относително сложна трансформация, докато получиш ключа.

Същото може да се реализира и с крайния master key - може да се приложи вместо върху секторите на устройството, върху няколко страници виртуална памет (с една структура от указатели към тях). При извличането на ключа и декриптирането/криптирането, ключът вече ще може да си стои в регистрите. Това ще направи възтановяването на ключа от дъмп много сложна задача - защото дори да успееш да идентифицираш структурата с адресите на page-овете, ще трябва да превърнеш виртуалния адрес във физически такъв, а това ще е доста сложно, след като нямаш състоянието на регистрите. От друга страна подхода с bruteforce-ването на всеки адрес от паметта вече ще клони към тотално непрактичен.

От друга страна, писането и четенето ще се забавят, особено ако няколкото страници памет не могат да се поберат в процесорния кеш. Колко ще се забавят - вероятно с порядъци. Но пък ще е доста по-сигурно :)


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 20, 2012, 23:51
Я, изглежда полицаите са отдавна наясно с това...

http://www.hacker10.com/other-computing/u-n-report-reveals-secret-law-enforcement-techniques/

Цитат
Point 194: An Alqeda affiliated webmaster managing a jihadist website from Brazil was specifically targeted by the police to grab him by surprise while he was still online to make sure that they would get his encryption keys thanks to which the investigators were able to open all relevant encrypted files.


Апропо, в момента се занимавам с truecrypt. Там възтановяването (надеждно) на ключа от паметта може да бъде малко (доста) по-сложно, в зависимост от това, което е сътворил потребителя. Има нещо забавно в цялата работа. Като цяло, мисля, че Truecrypt е малко по-добре премислен в доста отношения. Като цяло, default-ните настройки на LUKS са OK, ако тръгнеш да ги променяш, най-вероятно ще си го набиеш отзад. При truecrypt е обратното - default-ните настройки са криви, ако знаеш какво правиш, можеш да докараш доооооооста прилично ниво на сигурност на данните.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: jet в Dec 21, 2012, 02:25
gat3way: това май е твойта творба или бъркам: http://www.theregister.co.uk/2012/12/20/elcomsoft_tool_decrypts_pgp/ ($2)


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 21, 2012, 09:31
Не, това е затворен софтуер за уиндоус. Аз в момента работя по truecrypt подръжката, имам още доста работа. Иначе към момента знам за един freeware (но затворен) windows-ски софтуер, който атакува контейнери и към момента е най-пълното решение (подържа всички хеш алгоритми/блокови шифри, които се използват в последната версия на TC, не подържа по-старите, не подържа keyfiles). Опънсорс софтуер за линукс има - truecrack и един patch към John The Ripper. Първият подържа само RIPEMD160/AES, но работи върху NVidia видеокарти, втория не работи върху видеокарти и подържа само RIPEMD160/SHA512/Whirlpool с AES.

Моята идея е да подържам всичко, което подържа TrueCrypt от 4.2 насам, т.е на практика всеки контейнер създаден в последните 5 години. Това включва RIPEMD160/SHA512/Whirlpool с AES/Twofish/Serpent, както и каскадните комбинации от сорта на AES-Twofish-Serpent, това в XTS и LRW режим, както и keyfiles, hidden volumes и криптирани boot сектори (windows). Няма да подържам единствено извличане на keyfile от crypto token-и. Когато всичко това е готово, ще имаме най-пълното решение за трошене на TrueCrypt, при това opensource и за линукс.

Лошото е че е огромна работа - засега съм приключил с почти всички криптопримитиви върху CPU-та, с изключение на Twofish и Serpent в XTS режим (което сериозно ми пили нервите - колкото и да е просто, вече два дни не мога да ги докарам да смятат вярно). За съжаление, част от тях не се подържат от крипто-библиотеката, която ползвам и трябва да си ги пиша сам, което е пипкава работа. OpenSSL дори не подържа XTS режима, а не е много приятно да си разписваш умножение на полиноми в крайни полета - за щастие обаче при XTS това става в GF(2^128) и редукционния полином е така подбран, че нещата стават в крайна сметка много лесно.

Върху GPU има смисъл да се реализира единствено PBKDF2 трансформацията на паролата в ключ, тъй като това е най-изчислително-интензивната операция (на фона на изпробването на всички възможности за декриптиране на първия сектор, където е криптирания volume header, става с порядъци по-бавно).

Между другото, TrueCrypt използва много забавен алгоритъм при прилагането на keyfile-а.

Като цяло обаче TrueCrypt е от нещата, които много трудно се трошат, понеже най-малкото щом човек иска да го ползва, значи не е толкова тъп че да си избира прости пароли. Но пък дори да не е тъп, не е толкова сложно да направи фатално тъпа грешка.

Примерно - с дефолтните алгоритми, които се ползват, скоростта на пробване на паролата е десетки пъти по-висока, отколкото с добре подбрани. Друг момент разбира се е DMA атаката - която за TrueCrypt си важи. Тя лесно bypass-ва и най-добре подбраната парола, както и всички keyfiles.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 26, 2012, 21:50
OK - малко (доста) разхърляни размисли по въпроса:

http://www.gat3way.eu/index.php?mact=News,cntnt01,detail,0&cntnt01articleid=187&cntnt01returnid=15


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 28, 2012, 16:33
Айде, забавата вече е публична :)

На който му се експериментира, това е кода:

http://gat3way.eu/poc/tcgetkey_0.1.tgz


Вътре има и tool-че за източване на физическата памет през FireWire, както и друг такъв, който анализира memory dump-а, събира де що има ключове вътре и декриптира TrueCrypt контейнера. Цялата галимация става относително бързо (15-тина минути). Засега обаче работи само срещу TrueCrypt върху линукс системи (с други операционни системи по този начин няма да стане). Освен което не подържа hidden volumes и не подържа big-endian архитектури.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: 10101 в Dec 29, 2012, 01:49
В момента тормозя един truecrypt volume с truecrack да видим какво ще се случи.
Ще пробвам и твоя софт.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Dec 29, 2012, 02:19
Ъм линка дето го постнах касае само декриптиране на TrueCrypt дялове при положение, че са активирани и маунтнати на някоя машина с firewire порт, съответно ти връзваш един кабел, дъмпваш съдържанието на RAM-та през firewire, съответно вътре са ключовете за декриптиране и благодарение на това можеш да декриптираш устройството без да знаеш паролата.

Ако искаш да bruteforce-ваш truecrypt, преди 1-2 седмици завърших truecrypt плъгина за hashkill и кода е в github. Но дори върху high-end видеокарта, скоростта не е много приятна (няколко хиляди опита/секунда). Върху 6-ядрен bulldozer процесор е 40-50 опита/секунда (и дори да оптимизирам CPU кода, трудно ще надскочи 100-200 опита/секунда). Просто key derivation-а в TrueCrypt е доста брутален :) В случай че със сигурност знаеш какви алгоритми си използвал (дори дали са били дефолтните), скоростта може да бъде десетки пъти по-голяма. Но лично според мен шансът не е особено висок, освен ако не си спомняш поне част от паролата (тогава трябва да ползваш rule engine-а).

Мисля, че Иван Голубев (първият, който реализира TrueCrypt чупене върху GPU-та въпреки че софтуерът му е windows-ки и затворен) го е казал доста добре:

Цитат
TrueCrypt software was designed to provide high level of protection and it stays true in reality. Generally speaking it's impossible to crack TrueCrypt volumes without additional knowledge about password used. Or if password was ridiculously weak but it's very unlikely that somebody was paranoid enough to use TrueCrypt but chose weak password.

Според мен, трошенето на truecrypt е забавна игра на котка и мишка, в идеалният случай шансът да го атакуваш успешно клони към нула. Обаче, малка грешка може да е фатална, а хората са склонни да правят грешки. Атакуването на паролата е първото, за което човек може да се сети и ако си представиш че TrueCrypt е някаква крепост, а атакуването на паролата е влизането през парадния вход, то парадния вход има няколко метра дебела желязна врата, не е толкова лесно да се разбие :)


П.П.

truecrack подържа само дефолтните алгоритми - RIPEMD160/AES. Ако си сигурен че са използвани те е ОК, иначе няма смисъл. Има още 2 хеш алгоритъма (SHA512 и Whirlpool), както и 2 симетрични блокови шифри (Twofish и Serpent), както са възможни и различни комбинации от тях, за които truecrack просто не знае. Към момента (самореклама) единствено моя софтуер, IGRPS (на Иван безплатния затворен софтуер, windows) и на passware forensic kit-а (затворен, платен, windows) подържат всичките възможни варианти използвани от TrueCrypt.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: 10101 в Dec 29, 2012, 07:52
Здр,
 За монтиран диск и т.н е ясно, аз за спорта ще тествам.
При успех с контейнера ще споделя, как за колко време каква парола и т.н. наистина незнам паролата (контейнера не е мой), но не нищо не пречи да опитам.
Относно останалата информация, която сподели е много полезна. Благодаря.

Поздрави.


Титла: Re: Full Disk Encryption в линукс.
Публикувано от: gat3way в Jan 12, 2013, 01:30
Между другото правих разни тестове, ако на някой му е интересно (на ингилизки обаче):

http://www.gat3way.eu/fde