Fragen zum TrueCrypt-Containerformat
-
hallo,
ich hab mir gerade die spezifikation von truecrypt-containern angeschaut (http://www.truecrypt.org/docs/?s=volume-format-specification), und ich hab da einige fragen:
1. wie erkennt truecrypt, mit welchem verschlüsselungs- und hashalgorithmus ein container verschlüsselt wurde? ich dachte eigentlich, bevor ich die spezifikation gelesen hab, dass truecrypt da ein ein "identifizierungsbyte" hat, das, wenn es z.b. auf "1" steht, aussagt, dass der container mit aes verschlüsselt wurde. aber so ist das nicht.
2. wie erkennt truecrypt überhaupt einen truecrypt-container? natürlich, da ist der ascii-string "TRUE" an offset 64, aber der ist verschlüsselt.
3. noch eine frage, die eher nichts mit dem containerformat zu tun hat: glaubt ihr, dass kaskaden (z.b. "AES-Twofish-Serpent" oder "Serpent-Twofish-AES") sicherer sind als "einfache" verschlüsselung (wie z.b. nur aes)? und welchen hash-algorithmus würdet ihr verwenden?
ich weiß, dass aktuell alle von truecrypt angebotenen verschlüsselungs- und hashalgorithmen als sicher gelten, aber was würdet ihr da nehmen?
-
Truecrypt probiert einfach alle Verfahren aus, bis eines funktioniert oder bis festgestellt wird, dass das eingegebene Passwort falsch war.
-
ok, danke, das erklärt aber nicht alles. es gibt da ein programm, "tc-hunt" heißt das glaub ich, und das programm kann truecrypt-container aufspüren, auch ohne passwort oder irgendwas.
wie geht das? ich mein, wo es doch keine magic number/ keinen magic string oder sonstiges gibt!
-
verschlüsselung!?! schrieb:
wie geht das? ich mein, wo es doch keine magic number/ keinen magic string oder sonstiges gibt!
Entweder gibt es doch einen undokumentierten magic string oder das Programm nennt einfach alles truecrypt-Container, was zufällig genug aussieht.
-
verschlüsselung!?! schrieb:
ok, danke, das erklärt aber nicht alles. es gibt da ein programm, "tc-hunt" heißt das glaub ich, und das programm kann truecrypt-container aufspüren, auch ohne passwort oder irgendwas.
wie geht das? ich mein, wo es doch keine magic number/ keinen magic string oder sonstiges gibt!
Ganz einfach. Truecryptcontainer (also z.B. eine verschlüsselte Partition) unterscheiden sich von leeren Bereichen der Festplatte. (Das einzige was man wohl nicht aufspüren kann, ist daher ein Container innerhalb des Containers.).
Kennt man diesen Unterschied, kann man TC-Container relativ leicht erkennen.
-
Ich hab in letzter Zeit auch viel an TrueCrypt rumgehackt..
Hab mir zu dem Zwecke die Sourcen mal unter visual-studio-2010 compilierbar gemacht.
Wer sich also das Makefile Hacking sparen will -> PM.Die algorithmen und modi werden, wie schon jemand erwähnte, durchprobiert.
truecrypt selber weiss erstma nicht, ob en file en container is oder nicht.In jedem durchgang wird dann der header einma versucht zu decrypten un dann wird gecheckt (in der reihenfolge):
1. das magic value "TRUE" an offset 64 - 4 byte
2. volume header version an offset 68 - 2 byte
2.1 wird zwecks kompatiblität gecheckt. die aktuelle version ist 5
3. ab version 4 gibt es dann noch en CRC 32-bit value in offset 252.
dieses wird gegengecheckt gegen die bytes 64...251 des headers.
4. in offset 70 steckt die RequiredProgramVersion (2 byte).
4.1 diese wird auch gecheckt. aktuelle programmversion is 0x071A.
5. dann gibts nochma en crc32 an offset 72 über die letzteren 256 bytes des 512 byte headers (key header).Hier mal die code-stellen:
//Truecrypt 7.1.A -> /Common/Volumes.c :: L163 : ReadVolumeHeader() // Test all available PKCS5 PRFs for (enqPkcs5Prf = FIRST_PRF_ID; enqPkcs5Prf <= LAST_PRF_ID || queuedWorkItems > 0; ++enqPkcs5Prf) { //... // Test all available modes of operation for (cryptoInfo->mode = FIRST_MODE_OF_OPERATION_ID; cryptoInfo->mode <= LAST_MODE_OF_OPERATION; cryptoInfo->mode++) { //... // Test all available encryption algorithms for (cryptoInfo->ea = EAGetFirst (); cryptoInfo->ea != 0; cryptoInfo->ea = EAGetNext (cryptoInfo->ea)) { //... // Check Magic 'TRUE' if (GetHeaderField32 (header, TC_HEADER_OFFSET_MAGIC) != 0x54525545) continue; // Check Header version headerVersion = GetHeaderField16 (header, TC_HEADER_OFFSET_VERSION); if (headerVersion > VOLUME_HEADER_VERSION) { status = ERR_NEW_VERSION_REQUIRED; goto err; } // Check CRC of the header fields if (!ReadVolumeHeaderRecoveryMode && headerVersion >= 4 && GetHeaderField32 (header, TC_HEADER_OFFSET_HEADER_CRC) != GetCrc32 (header + TC_HEADER_OFFSET_MAGIC, TC_HEADER_OFFSET_HEADER_CRC - TC_HEADER_OFFSET_MAGIC)) continue; // Required program version cryptoInfo->RequiredProgramVersion = GetHeaderField16 (header, TC_HEADER_OFFSET_REQUIRED_VERSION); cryptoInfo->LegacyVolume = cryptoInfo->RequiredProgramVersion < 0x600; // Check CRC of the key set if (!ReadVolumeHeaderRecoveryMode && GetHeaderField32 (header, TC_HEADER_OFFSET_KEY_AREA_CRC) != GetCrc32 (header + HEADER_MASTER_KEYDATA_OFFSET, MASTER_KEYDATA_SIZE)) continue; // Now we have the correct password, cipher, hash algorithm, and volume type // Check the version required to handle this volume if (cryptoInfo->RequiredProgramVersion > VERSION_NUM) { status = ERR_NEW_VERSION_REQUIRED; goto err; } // ....create volume....
ps. ich weiss zufällig auch ne menge darüber, wie die deutschen behörden bzw. die polizei aktuell mit truecrypt umgehen/-t.
nicht, weil ich super-l33t-underground bin, sondern aus einem aktuellen fall in meinem erweiterten bekanntenkreis.kurz zusammengefasst: es wird wirklich nach containern gesucht, und es wird auch versucht zu bruteforcen bzw. es werden recht genaue schätzungen über die dauer des bruteforcen gemacht fürs gericht. ich war extremst überrascht, sowohl davon, dass die sowas überhaupt machen, als auch von den schätzungen (in tagen!).
UND vor allem, weils in dem fall, der mir bekannt ist, eigentlich echt lächerlich erscheint, dass da überhaupt derartige anstrengungen unternommen wurden.
-
danke für eure antworten.
unregistrierter2012 schrieb:
verschlüsselung!?! schrieb:
ok, danke, das erklärt aber nicht alles. es gibt da ein programm, "tc-hunt" heißt das glaub ich, und das programm kann truecrypt-container aufspüren, auch ohne passwort oder irgendwas.
wie geht das? ich mein, wo es doch keine magic number/ keinen magic string oder sonstiges gibt!
Ganz einfach. Truecryptcontainer (also z.B. eine verschlüsselte Partition) unterscheiden sich von leeren Bereichen der Festplatte. (Das einzige was man wohl nicht aufspüren kann, ist daher ein Container innerhalb des Containers.).
Kennt man diesen Unterschied, kann man TC-Container relativ leicht erkennen.
ja, das weiß ich, aber ich rede von stinknormalen truecrypt-containern, und nicht von verschlüsselten partitionen.
@Gero_Programmierstil_de
danke für die infos.
ja, ich versteh das mit dem bruteforcen auch nicht. es sollte sich langsam mal rumgesprochen haben, auch bei der polizei, dass das nicht sooo viel bringt, wenn der nutzer: 1) ein möglichst beliebiges passwort wählt (mischung aus buchstaben-groß&klein , zahlen und sonderzeichen) und 2) wenn das passwort lang genug ist. ich will jetzt hier nix falsches erzählen, aber ich glaube, das passwort sollte mindestens 15 (ich empfehle >20) zeichen lang sein (umso mehr, umso besser).
ich habe auch mal irgendwo im internet gelesen, dass die polizei nach einer bestimmten passwortlänge das bruteforcen aufgibt. ich glaube (!) es waren 13 zeichen.ich hab mich übrigens nochmal informiert was "tchunt" betrifft, es scheint tatsächlich so, als ob das tool wirklich nur "auf gut glück" sucht, und alles, was gerade einem truecrypt-container ähnelt wird dort eben als container erkannt. man liest oft von "falschen" erkennungen. also so wie es aussieht, ist das tool nicht so nützlich.
-
Ich denke, mal dieses Programm durch stochastische messungen einfach verschlüsselte dateien aufzählt (stichwort: varianz, zufälligkeit).
truecrypt container haben ne file size, die immer durch 512 teilbar sein muss -> weiterer indikator. fertig.thema behörtden/ un bruteforcing: in benannten fall war das passwort in eigentlich allen fällen definitiv recht zufällig und lang. alle truecrypt container, die auch welche waren, wurden gefunden. in ein paar fällen wurde angegeben, dass brute force nicht möglich sei. es wurden immer 3 algos in verschiedenen kombinationen benutzt. bei denen, wo ein bruteforcing als möglich eingestuft wurde (über die hälfte), wurden die schätz-zeiten recht exakt in 3-stelligen tagen un zusätzlich noch genauen stunden angegeben.
-
Mich wuerde mal interessieren, ob du zufaellig weisst, in welcher Groessenordnung die fuer die Brute-Force genutzten Rechner sind.
Das es nicht ein einzelner Rechner sondern ein Cluster sein wird, ist ja logisch, aber ich wuerd gern wissen wie viele Rechner die zusammenschalten und in welcher Leistungsklasse (bzw. ungefaehres Alter) die liegen.3 Tage klingen zwar lang, aber fuer AES mit ca. 13 Zeichen PW, das auch noch gehasht ist, scheint mir das noch relativ kurz.
-
Leider weiss ich nix zur grössenordnung der benutzten rechner, nur, dass der aufwand lächerlich erscheint im vergleich zum vergehen.
-
Selbst wenn das Passwort nur aus englischen Buchstaben besteht. Solange es kein Wort ist oder Ähnliches, würde ich gerne mal sehen wie die die ~ 52^13 / 2 Möglichkeiten durchprobieren. Scheint mir nicht realistisch.
-
ja waren denn diese 3-tage brute force attacken erfolgreich?
wenn das nämlich so wäre, dann würde mich das schon sehr wundern.
ich hab da eine seite gefunden, da ist das alles ganz gut erklärt: http://www.1pw.de/brute-force.html
rechner für große zahlen: http://www.arndt-bruenner.de/mathe/java/rechnergz.htm
sekunden in andere zeiteinheiten umrechnen: http://www.umrechnung.org/zeit-einheiten-umrechnen/wochen-tage-minuten-sekunden-umrechnen.htm
machen wir mal eine praktische rechnung:
wir haben ein passwort, das 13 zeichen lang ist, sowohl klein als auch großbuchstaben enthält, zahlen von 0-9 und sonderzeichen (aber nur die sonderzeichen die sich mit SHIFT + <taste> erzeugen lassen, nichts mit ALT + <taste>).also:
26 kleinbuchstaben
26 großbuchstaben
10 zahlen
27 sonderzeichen (SHIFT + ...)
(insgesamt: 89 zeichen)laut der webseite oben gibt es genau 89^13 kombinationen.
89^13 = 21982145917308330487013369laut der webseite schafft ein moderner? computer 2.096.204.400 keys pro sekunde. auf welchem computer, auf welcher hardware und auf welcher software die zahl basiert, steht leider nicht da.
21982145917308330487013369 / 2096204400 ~ 10486642389124042,7 (sekunden)
10486642389124042,7 sekunden ~ 174777373152067,3783 minuten ~ 2912956219201,2 stunden ~ 17339025114.2 tage ~ 332529248.7 JAHRE!!!
natürlich ist diese rechnung nicht 100%ig richtig, weil ich viel gerundet hab.
aber das muss man sich mal vorstellen. das universum ist wahrscheinlich längst untergegangen, und das passwort ist immernoch nicht geknackt.
ich glaube, da würden selbst 50 computer nicht viel bringen. dann dauerts halt nurnoch 1000 jahre oder wie auch immer.und das waren erst 13 buchstaben!!!
p.s.: hoffe in der rechnung oben ist kein fehler. bei so großen zahlen passiert das schnell...
-
kam falsch rüber:
ich schrieb von "recht exakt in 3-stelligen tagen un zusätzlich noch genauen stunden".
Im protokol sind sätze enthalten wie z.B. "Der Container c:\bla.dat kann in 419 Tage und 19 Stunden entschlüsselt werden".
-
Gero_Programmierstil_de schrieb:
kam falsch rüber:
ich schrieb von "recht exakt in 3-stelligen tagen un zusätzlich noch genauen stunden".
Im protokol sind sätze enthalten wie z.B. "Der Container c:\bla.dat kann in 419 Tage und 19 Stunden entschlüsselt werden".mich würde sehr interessieren, wie diese schätzungen zu stande kommen. immerhin kann das programm nicht wissen, wie lang das passwort ist.
welche programme nutzen die eigenltich? gibts brute-force "Profi-tools"?
-
ich schick dir gleich ne pm mit nem ausschnitt aus dem protokoll.
mehr als ich bisher gesagt hab, weiss ich nicht.
edit. ach shit, bist nich angemeldet bzw anonym, willst en scan? dann gib ma ne email adresse oder dergleichen.
-
-
Gero_Programmierstil_de schrieb:
ich schick dir gleich ne pm mit nem ausschnitt aus dem protokoll.
Kannst du das irgendwo hochladen? Dann haben alle was zum Lachen.
Jede Schätzung ist natürlich völliger Unfug und nicht mal ansatzweise in der richtigen Größenordnung, und zwar einfach aus dem Grund, den "verschlüsselung!?!" genannt hat: Man kann ja nicht wissen, wie lang das Passwort ist.
-
verschlüsselung!?! schrieb:
aber das muss man sich mal vorstellen. das universum ist wahrscheinlich längst untergegangen, und das passwort ist immernoch nicht geknackt.
ich glaube, da würden selbst 50 computer nicht viel bringen. dann dauerts halt nurnoch 1000 jahre oder wie auch immer.Du scheinst anzunehmen, dass die Computer nicht deutlich schneller werden in den nächsten 1000 Jahren. Diese Annahme halte ich für gewagt.
-
habs mal gekürtzt und anonymisiert hochgeladen:
-
was ist das überhaupt für ein bericht? woher hast du den?