Verschlüsselung von externer Festplatte aushebeln?

Hallo liebe Hacker und Technik Freaks da draußen.

Bevor ich aufgrund meines Problems die Scheidung einreiche (mein Mann hat dies nämlich verursacht) möchte ich nichts unversucht lassen das unsere kleine heile Welt wieder in Ordnung kommt.

Folgendes ist passiert: Mein Mann hat unsere externe Festplatte an meinem Handy angeschlossen (ja dies funktionierte irgendwie, keine Ahnung)

Ausversehen hat er diese besagte Festplatte dann dadurch Schnellformariert. Nach Trauer, Wut, Panik und dem Ehestreit unseres Lebens haben wir die Festplatte zu einer renommierten Firma nach Leipzig für eine Datenrettung geschickt. Nach 4 Monaten und 2000 Euro weniger haben wir nun eine neue Festplatte zurück erhalten, zwar mit den Worten das die Daten darauf wiederhergestellt sein , jedoch ohne das man Zugriff darauf erlangen kann. Das Problem ist das die externe Festplatte zuvor passwortgeschützt war und man diese Verschlüsselung nun bei Rekonstruktion ebenfalls auf die neue Festplatte übernommen hat.

Lange Rede kurzer Sinn, gibt es unter euch jemanden, der eine Verschlüsselung aushebeln kann? Zur Info, man kann die Festplatte nicht einmal mehr an den PC anschließen, sie wird nicht als Träger angezeigt.

Ich freue mich über all eure Antworte, Einschätzung und vielleicht sogar einen persönlichen Austausch. Bitte helft mir das meine Vergangenheit am Leben bleibt und ich noch meinen Enkelkindern Fotos von meiner Hochzeit zeigen kann :-(

Computer, Festplatte, Verschlüsselung
Schlüsselaustausch bei OTP - Wird die Sicherheit damit erhöht?

Guten Tag zusammen,

ich bin durch eine Frage hier, die heute morgen gestellt wurde, auf die OTP-Verschlüsselung gekommen und habe ein bisschen darüber nachgedacht und hätte deshalb jetzt eine Frage an die Mathemathiker oder Kryptologen unter euch (Vielleicht auch generell an alle die auf Logik stehen)

Mal außer acht gelassen, dass das Verfahren alleine durch die größe der Schlüssel und die sichere Übertragung der Schlüssel einige größere Hürden mit sich bringt, finde ich das Prinzip vorallem wegen seiner Einfachheit und der, bei richtiger Verwendung, erreichten Sichherheit einfach klasse.

Allerdings habe ich jetzt eine Frage. Und zwar habe ich ein wenig darüber nachdegacht wie das so im Alltag verwendbar wäre und die Hauptschwastelle wäre wohl die sichere Übertragung des Schlüssels (Benötigter Speicherplatz und Generierung von echten Zufallszahlen mal außer Acht gelassen).

Jetzt habe ich überlegt ob es nicht noch sicherer werden würde, wenn es folgender Maßen Abläuft:

  1. Max verschlüsselt eine Nachricht mit einem wirklich zufälligen Key
  2. Der Schlüssel wird ausgestauscht und die verschlüsselte Nachricht über einen anderen Kommunikationsweg übertragen
  3. Peter entschlüsselt die Nachricht und antwortet.
  4. Dazu wird wieder ein zufälliger key generiert, allerdings wird die Antwort nicht direkt mit dem neuen Key verschlüsselt.
  5. Der neue Key wird mit allen bisher ausgetauschten Keys nacheinander verschlüsselt und der verschlüsselte key wird dann zum verschlüsseln der Antwort benutzt.
  6. Der neue zufällig gefundene Key (Nicht der verschlüsselte) wird mit Max ausgetauscht.
  7. Max muss den neuen Key wieder mit allen alten Keys verschlüsseln und kann diesen dann für das entschlüsseln der Nachricht benutzen.

... usw.

Wenn man zusätzlich jeden neuen schlüssel auch über einen neuen Kommunikationsweg austauscht sollte es für den Angreifer ja eigentlich unmöglich sein die Verschlüsselte Nachricht zu entschlüsseln. Selbst wenn er einen austausch des Schlüssels mitbekommen hat?

Bin ich jetzt richtig mit meinen Überlegungen oder verschlechtere ich die eigentliche Verschlüsselung damit eher, da man ja sogesehen alte Schlüssel wiederverwendet...

was sagt ihr? Ist das sicherer oder unsicherer? (Prämisse: Der Angreifer hat keinen Zugriff auf die db der alten schlüssel)

Computer, Mathematik, Sicherheit, Informatik, Kryptographie, Verschlüsselung
Wie funktioniert AES Verschlüsselung bei Android Smartphone?

seit Android 6 ist ja jedes Handy verschlüsselt. Ich finde jedoch keine genauen Angaben welche davon (128, 256 oder gar 512 bit?) genau verwendet wird. Weiß das zufällig jemand? Hoffe es sind mindestens 256 bit. Oder hängt das von der Android Version und dem jeweiligen Smartphone ab? Bei mir ist es seit Kurzem das Samsung Galaxy Note 9 mit Android 10 (Zweithandy A 7 2018).

Dann ist die Frage wie der Schlüssel gespeichert wird. Angeblich in einem sicheren Bereich, der von außen nicht zugänglich ist und erst wenn das korrekte Passwort/Muster/PIN eingegeben ist erhält er den Befehl den Schlüssel freizugeben. Stimmt das? Und ist der eigens zufällig generiert oder hängt das von der Komplexität des gewählten Passwortes ab?

Die Anzahl möglicher Passworteingaben beim Gerätestart ist auf 30 Versuche beschränkt, danach wird der Schlüssel gelöscht und das Gerät setzt sich zurück. Wenn der Code also binnen 30 Versuchen nicht geknackt werden kann, hilft nur den Speicher auszu"bauen" und den AES-Schlüssel zu bruteforcen was ja zum Glück fast unmöglich ist.

Jetzt ist die Frage ob es auch möglich ist das Passwort/Muster/PIN von außen zu bruteforcen wenn das Gerät ausgeschaltet ist oder ob man von Außen nur probieren kann den viel viel längeren AES Schlüssel anzugreifen. Und welche Möglichkeiten gäbe es wenn das Gerät noch an aber gesperrt ist? So Angriffspunkte wie Find my mobile oder USB-Debugging habe ich natürlich abgeschaltet.

Derzeit entsperre ich das Gerät zum Entschlüsseln mit einem sehr komplizierten Muster, welches in den möglichen 30 Versuchen nicht bzw. nur mit seeeeeeehr viel Zufall geknackt werden kann. Linien sind auch aus und beim Zeichen nutze ich manchmal Umwege und nach dem Zeichnen wird erstmal alles an Spuren verwischt. Geändert natürlich auch regelmäßig und dass viele Richtungswechsel und Überschneidungen drin sind ist selbstverständlich (zumindest für mich).

Wichtig zu wissen ist wiegesagt ob es stimmt dass man das Muster von außen nicht beliebig oft probieren/bruteforcen kann oder nicht. Sonst würde ich nämlich auf ein langes zufälliges Passwort umsteigen was eben nicht gebrutforced werden kann.... Wichtig ist halt dass das Teil niemand außer mir entschlüsseln kann, mit seinen 512 GB Speicher und der gigantischen Leistung ist es für mich wie ein Mikro-PC unterwegs, entsprechend intensiv wird es genutzt und so haben sich da einige Daten angesammelt....

Hier mal noch ein Bildle von dem Verschlüsselungsbildschirm:

Bild zu Frage
Handy, Smartphone, Technik, Android, Forensik, Handytechnik, IT-Spezialist, Verschlüsselung
MD5-Hash bei Java und C# geben nicht das selbe Ergebnis?

Hallo zusammen,

ich versuche in den letzten Tage mich mit der Entwickleroberfläche der FritzBox auseinander zu setzen. Leider scheitete ich am Session ID Login.

Der Login funktioniert über eine Challenge (String) den mir die FritzBox generiert und dem Passwort der FritzBox. Wenn ich den Login richtig verstanden habe geht er wie folgt:

Schritt 1: Challenge erhalten via fritz.box/login_sid.lua

Schritt 2: Alle Zeichen im Passwort der FritzBox, welche nicht in ISO-8859-1  
           anzeigbar sind (einen CodePoint von über 255 besitzen) mit einem "."  
           ersetzen

Schritt 3: Einen MD5-Hash im Format von 32 Hexzeichen mit Kleinbuchstaben 
           generieren aus dem String %Challenge%-%Passwort% (%Challenge% ist die
           aus dem Schritt 1, %Passwort% ist das Passwort der FritzBox aus dem 
           Schritt 2)

Schritt 4: Das Ergebnis zum Anmelden nutzen: 
           http://fritz.box/login_sid.lua?response=%Challenge%-%Ergebnis% 
           (%Ergebnis% ist der 
           MD5-Hash aus Schritt 3)

So: Was ist nun mein Problem?

Ich möchte diesen MD5-Hash generieren. Ich habe mir bereits Tutorials angeschaut, wie die von baeldung.com und auch einen String als Ergebnis bekommen. Das Problem ist aber, dass der Hash falsch ist.

Also habe ich mir den Beispiel C#-Code auf der FritzBox Webseite angeschaut und ausprobiert. Das Ergebnis ist ein ganz anderer Hash. Wie kommt das zu Stande?

Damit man mich besser versteht, habe ich hier meinen Java Code und den Code aus C#.

Input bei allen:

51cbb71a-Test

Java (Möglichkeit 1): https://pastebin.com/vpzA8mr9 (um Platz zu sparen als Link)

Output:

DigestTest: 3e2a82112b721922d21a2e62e12f02212b02142c12692a82

Java (Möglichkeit 2):

StringBuilder builder = new StringBuilder();
for (byte b : DigestUtils.md5(input)) {
    builder.append(byteToHex(b));
}
System.out.println("BuilderDigest: " + builder.toString());

Output:

BuilderDigest: 3ea811b7192d1ae6e1f021b014c169a8

Java (Möglichkeit 3):

String md5Hex = DigestUtils.md5Hex(input); //API: commons-codec-1.15.jar
System.out.println("Hash: " + md5Hex);

Output:

Hash: 3ea811b7192d1ae6e1f021b014c169a8

C#

static void Main(string[] args) {
  try {
    MD5 md5Hasher = MD5.Create();
    byte[] encoded = Encoding.Unicode.GetBytes("51cbb71a-Test");
    byte[] data = md5Hasher.ComputeHash(encoded);
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < data.Length; i++) {
      builder.Append(data[i].ToString("x2"));
    }
    Console.WriteLine(builder.ToString());
  } catch(IndexOutOfRangeException exception) {
    Console.WriteLine("null");
  }
}

Output:

0e9af10abdb7cd7119a85967272e3bc3

Wieso kommt da was anderes raus und wie kann ich das nun auch in Java umsetzen? (Der C#-Code gibt die richtige Lösung!)

Danke schon einmal im Voraus!

Links die Helfen können:

  • https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/Session-ID_deutsch_13Nov18.pdf
  • https://www.baeldung.com/java-md5 (etwas alt)
  • https://www.youtube.com/watch?v=hW2s03abGaI
  • https://codedocu.de/...
Computer, programmieren, Java, C Sharp, Encoding, Informatik, Verschlüsselung

Meistgelesene Fragen zum Thema Verschlüsselung