Czemu TrueCrypt nie wystarcza a $ur4ht4ub4h8 to słabe hasło

dodał 16 stycznia 2014 o 17:49 w kategorii Krypto, Prywatność  z tagami:
Czemu TrueCrypt nie wystarcza a $ur4ht4ub4h8 to słabe hasło

TrueCrypt stał się praktycznie jednym ze standardów szyfrowania dysków. Nie wystarczy jednak z niego skorzystać, by zaszyfrowane dane automatycznie stały się bezpieczne. Trzeba jeszcze pamiętać o tym, by korzystać z niego w odpowiedni sposób.

Nie wiemy, czy Ross Ulbricht, założyciel serwisu Silk Road, korzystał z TrueCrypta. Wiemy jednak, że FBI celowo czekało z jego aresztowaniem na moment, kiedy w miejscu publicznym, ze swojego komputera, nawiąże komunikację z jednym ze swoich współpracowników. Dlaczego FBI na tym zależało i jakie wiąże się z tym ryzyko dla użytkowników TrueCrypta?

Gdzie leżą klucze

Program szyfrujący, umożliwiający dostęp do zabezpieczonych plików w sposób przezroczysty dla systemu operacyjnego, musi gdzieś przechowywać klucze, umożliwiające odszyfrowanie danych. Nie wykluczamy, że specjalistyczne oprogramowanie, używane przez np. służby specjalne, może korzystać z kluczy znajdujących się na kartach mikroprocesorowych czy w dedykowanych modułach kryptograficznych, jednak najpopularniejsze programy takie jak TrueCrypt, PGP, FileVault czy BitLocker klucze trzymają w pamięci RAM. A skoro klucze znajdują się w pamięci komputera, to można je stamtąd odzyskać.

Wyciąganie kluczy

Na rynku dostępne są komercyjne narzędzia takie jak Elcomsoft Forensic Disk Decryptor czy Passware Kit Forensic, które potrafią znaleźć klucze szyfrujące zarówno w plikach hibernacji jak i zrzutach pamięci systemu czy też odnaleźć je w działającym systemie poprzez port FireWire.

Ekran wyboru źródła danych (źródło: Elcomsoft)

Ekran wyboru źródła danych (źródło: Elcomsoft)

Wkrótce jednak zostanie opublikowane darmowe narzędzie, znacznie ułatwiające śledczym zebranie informacji o wolumentach TrueCrypta.

Autorzy Volatility, darmowych skryptów w Pythonie służących do analizy pamięci, stworzyli nowy skrypt, którego efekt działania wygląda następująco:

$ python vol.py -f WIN-QBTA4959AO9.raw --profile=Win2012SP0x64 truecryptsummary
Volatility Foundation Volatility Framework 2.3.1 (T)

Process              TrueCrypt.exe at 0xfffffa801af43980 pid 2096
Kernel Module        truecrypt.sys at 0xfffff88009200000 - 0xfffff88009241000
Symbolic Link        Volume{52b24c47-eb79-11e2-93eb-000c29e29398} -> \Device\TrueCryptVolumeZ mounted2013-10-11 03:51:08 UTC+0000
Symbolic Link        Volume{52b24c50-eb79-11e2-93eb-000c29e29398} -> \Device\TrueCryptVolumeR mounted2013-10-11 03:55:13 UTC+0000
File Object          \Device\TrueCryptVolumeR\$Directory at 0x7c2f7070
File Object          \Device\TrueCryptVolumeR\$LogFile at 0x7c39d750
File Object          \Device\TrueCryptVolumeR\$MftMirr at 0x7c67cd40
File Object          \Device\TrueCryptVolumeR\$Mft at 0x7cf05230
File Object          \Device\TrueCryptVolumeR\$Directory at 0x7cf50330
File Object          \Device\TrueCryptVolumeR\$BitMap at 0x7cfa7a00
File Object          \Device\TrueCryptVolumeR\Chats\Logs\bertha.xml at 0x7cdf4a00
Driver               \Driver\truecrypt at 0x7c9c0530 range 0xfffff88009200000 - 0xfffff88009241000
Device               TrueCryptVolumeR at 0xfffffa801b4be080 type FILE_DEVICE_DISK
Container            Path: \Device\Harddisk1\Partition1
Device               TrueCrypt at 0xfffffa801ae3f500 type FILE_DEVICE_UNKNOWN

Narzędzie to potrafi przeszukać plik zrzutu pamięci i odnaleźć w nim ślady użycia TrueCrypta. Znajduje zarówno datę podpięcia zaszyfrowanego dysku do systemu jak i ścieżkę, w której znajduje się plik lub napęd. Z kolei drugi skrypt potrafi zidentyfikować użyty w TrueCrypcie rodzaj szyfrowania i zlokalizować w pamięci odpowiedni klucz

$ python vol.py -f WIN-QBTA4.raw --profile=Win2012SP0x64 truecryptmaster -D . 
Volatility Foundation Volatility Framework 2.3.1 (T)

Container: \Device\Harddisk1\Partition1
Hidden Volume: No
Read Only: No
Disk Length: 7743733760 (bytes)
Host Length: 7743995904 (bytes)
Encryption Algorithm: SERPENT
Mode: XTS
Master Key
0xfffffa8018eb71a8 bbe1dc7a8e87e9f1f7eef37e6bb30a25 ...z.......~k..%
0xfffffa8018eb71b8 90b8948fefee425e5105054e3258b1a7 ......B^Q..N2X..
0xfffffa8018eb71c8 a76c5e96d67892335008a8c60d09fb69 .l^..x.3P......i
0xfffffa8018eb71d8 efb0b5fc759d44ec8c057fbc94ec3cc9 ....u.D.......<.
Dumped 64 bytes to ./0xfffffa8018eb71a8_master.key
Jest to pierwsze znane darmowe narzędzie, umożliwiające automatyczną analizę pamięci pod kątem informacji o użyciu TrueCrypta i pierwsze, które potrafi odzyskać z pamięci klucze szyfrujące niezależnie od użytego rodzaju szyfrowania (wcześniej klucze AES potrafił odnaleźć aeskeyfind).

Problem znany, ale trudny do rozwiązania

Oczywiście przechowywanie kluczy w pamięci komputera jest znanym problemem, opisanym w dokumentacji TrueCrypta. Jak zaznaczają autorzy dokumentacji, w momencie odłączania dysków klucze szyfrujące są usuwane z pamięci komputera, jednak w momencie uruchomienia procesu hibernacji, nagłego odłączenia zasilenia lub wykonania resetu komputera program nie ma możliwości przeprowadzenia tej operacji, zatem klucze pozostają w RAMie.

Jak zabezpieczyć się przed atakiem na klucze szyfrujące? Po stronie samego bezpieczeństwa IT jedyną istotną rekomendacją jest wyłączenie funkcji hibernacji. Można także oczywiście ustawić automatyczne odłączanie dysków po minucie nieaktywności, jednak raz, że jest to bardzo uciążliwe (pewnie zmienicie na 10 minut następnego dnia), a dwa – rozsądny biegły na miejscu zdarzenia od razu podejmie czynności, zanim upłynie minuta. Warto w każdym razie rozważyć aktywowanie różnych opcji odłączania dysków.

Opcje odłączania dysków w TrueCrypcie

Opcje odłączania dysków w TrueCrypcie

Co zatem pozostaje? Pewnie tylko bezpieczeństwo fizyczne, czyli nie podłączanie dysków w miejscu, gdzie ktoś może Was odciągnąć od komputera w ciągu kilku sekund i zadbanie o to, by włączony komputer z podłączonymi partycjami nie pozostawał ani na chwilę bez opieki (jak prawdopodobnie miało to miejsce w przypadku Anakaty z The Pirate Bay).

Silne hasło przegrywa z kluczem do kół

Jak wiadomo, silne hasło jest niezbędne, a najlepszym narzędziem do jego wydobycia jest klucz do kół. Co prawda nie wiemy, czy Syed Hussain, podejrzany w Wielkiej Brytanii o terroryzm faktycznie zapomniał swojego hasła do danych zaszyfrowanych na dysku USB (prawdopodobnie mógł korzystać z TrueCrypta), ale wiemy, że w jego zapewnienia nie uwierzył sędzia, który wsadził go na kilka miesięcy do więzienia, by odświeżyć mu pamięć. Wezwani eksperci z GCHQ nie podołali problemowi.

Kiedy po 11 miesiącach w areszcie Hussain usłyszał nowe zarzuty, tym razem o oszustwa finansowe, znienacka przypomniał sobie, że hasło brzmi $ur4ht4ub4h8. Na odszyfrowanym dysku nie znaleziono śladów związanych z terroryzmem, lecz były tam dane finansowe, stanowiące cenne dowody w zakresie zarzutów o oszustwa. Wniosek płynący z tego incydentu: $ur4ht4ub4h8 było dobrym hasłem, ale niestety teraz jest już w zbyt wielu słownikach.