staging.inyokaproject.org

Binäres Passwort für LUKS2 aus Text erstellen

Status: Gelöst | Ubuntu-Version: Xubuntu 24.04 (Noble Numbat)
Antworten |

glaskugel

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3850

Wie könnte man ein binäres Passwort für LUKS aus einem Text erstellen, das leicht wiederherstellbar ist, wenn man das Keyfile nicht mehr hat, zB weil die Platte defekt geworden ist. Ok, man sollte ein Backup haben, aber ich habe mir folgendes überlegt. Wenn man den Algorithmus zur PW-Erstellung im Kopf hat, ist man letztlich besser daran. Man braucht das ja nicht so schnell wieder.

Ich nehme irgendeinen Text, zB meinen Nick

echo "Glaskugel" | md5sum | cut -f1 -d " "
8ce232c9d0a1a84e4870304144e9704b

bzw.

echo "Glaskugel" | md5sum | cut -f1 -d " " > testkey.txt

Aus dieser md5sum erzeugt man dann eine Binärdatei. Die Frage ist wie man das sinnvoll macht.

$ xxd -r -p testkey.txt testkey.bin

Das sieht dann so aus.

$ cat testkey.bin
��2��NHp0AD�pK

Etwas kurz, mit sha512sum wird das etwas länger.

$ cat testkey.bin 
��ɰ3��dℬ�h���J�("K7	h�گRc����J��_�9�QGb�Y��]���G�

Was gibt es da noch an Möglichkeiten ein binäres PW aus einem simplen Text zu erstellen? Entscheidend ist, das ein bestimmter Text immer eine idente Datei erzeugt.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Wenn man beliebig lange Binärdateien will, könnte die Differenz der Unicode-Positionen aus zwei Texten bilden (der längste Text bestimmt die Länge) und noch ein bisschen mit dem Wrap-around von uint8-Integern spielen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/usr/bin/env python3
import numpy as np
import itertools

Text_A = """Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."""
# see https://www.emojiipsum.top/
Text_B = """🔲📒🔃🕓🏫🐥 🕧🕗🎍📲👢🐹 🎌🔽🍏🌋 🌖🎩🎌💹🐇💺 📈👥🍧👷🕓🍯 💟🏉📑🐁 🎑🔪🏣🎈🐳🐠 🌾🐎🎤🔴📮 🍦🎥👋🔢📲 👆👰💩👘💏🎆 🏯🐶🐟👄💔🍒🏥🍮 💦🎤💇🕡 🕗🐎👸🍔🕤. 🎣🎸🕝👻💄📦 🐅🔸🍌💣 🎃🔻🏨💢📎🐌📲👣 👕📺🐏🏫 💲🕞🌃🔜🔞 🔖🌹🍞🎣🌲 🍑📨🕞👍🔑🐻🌏 🔵🎳🐞📥📛🎓 🔇👛🕤💍 🎋👹💲🍃💯💷 🔇👆👠💟📹👽 🌐🍤🏩🎺🐵. 🔝🕦🔼🌓🌞 🎾🍋🎺🎉🏨💶🐱 🎤🎺🎈💎🐦 🐴🍋📎🏫 🏬🍠🔥💫🎮📧 🏩🏈📹💼📯🐥 💺🔁🎂👰🕚🌏🏣 💒🐎🏇📌🏡🌳👲 🍜🐳🐦👵🌏 🍃💱🏥📱🌿 👰🌌🔥💜👰 🔪📣🐫🔏 🐱🔀👅💬💬🏇. 👱🌱👄👻🔤🔷 👯💮🔆🐇🍌 📍🎴🎱🍁🔭 🍊💭🎳👏🎴📐🎁🌖 📝🎻🔇🎱📢🎣 🔤🕓🔹🐧🎷🐏 📴🐫👇📃👣📬🐗 🐽🐴👛🐒👘 💊🔒🌍🔦 👰🕟🌘🏮🐶🔈 🎀👈💵🎑💦 👗🔮🕙🏃🍺🗾🔪 🐦📫👄🔛🎯👔 🍒🔼🐵🔋🍄🍠 🐍🐣🕞🌛📵. 🍨💁🎼🍡🎁 🌉🍛🍬🐡👟🍙 🎊👯🔲🐢👜📖 📪👃💲🗾 💓🍢👵🔦🍏📢🎑🎄 🐒🎠🌇🔈 🔪🔛💀🔄🐄🐨 🎬🐵🌃🔺 👪🏆💋📝💝 📶🌅🍡👷📜📎 💈👈🔀👖💯🌆📍 📧👛🔷💆👈. 🐓👣🌳🔆🔄 🐕💳📔🕛🔤🍄 💆🐮🌎🔠🐓🌽🎺🐄 🎴🎧🍷🏨🌱🕢👂🎱 💞👫🔱🍮📅🐑🌉 🐉🎢🔞🎎🕁🐴🎉 🌎🍒📠📌👎 🌼🕒🌺🔫🍔 🍒🕠🐣🎂🔎 💤🐈🐻🔀🐑🍍👫 🌱👹📻🎻👢 🍥🍔👠💌🌌 💶👼💐🐷. 📋👘🐶🏰💏 🐗🐬🍺🕡 🌇💾📭🔛🍝 🐧🌲🌝👝💌📎🌻📔 📒💅🔔📠💯🍶 📭💪🍯👆🕔 📳💯📩🔨🌿 🌜🌿💵📇🔇💂🏩 💚🍧🐹🍩🔶🕙 🌊📇💱🏤🕖 👻🍯📛📡📈🐧 🎰👸🎩🎽🐳. 🏃🌗🐪🍌👺💏🎷 📜🔴🐏💩 🔂👟📃🎤🍃🎏🔇 🗾🔯🎇🍲🍛🐆 🏆🐾🍤🔂🐎 🌔🌾🍲🌛🌾 👭🐢💃📩 🎃🔈🏁📡 🔟📊👝🍟👼 🔤👮👾💹 📢🎪💟🐣🔱🍒🔠 👰📳🎴🏥🍛 🐇🍣📨📝👞. 🎷🎠🍲🐜🏡📹 🐧🕥💘💲 🎹🍑🎮🎎🔓 👟👹🔫🏦🌆📪 👷🗼👭📖🌂 📴💞🌇💸🔍 🌟👋💑📂💟🍡🍭 💃👔🕑💾🐶 👴📻📻🌈🔧🔙 🔁🔭🔋🕁🔐💆. 🎉🍳🕒🐾🔲🔼🕧 💱🐯🍯📨🏧📒 📎🗼🍦💁💏 🌟🔃🏣💵📗📏🔂 🍖🏈🐜🎳 🏨🕞📘🍯🐣📎 🔔🎾🔝👾👂 👍🐮👯🎀🐁💡 🔈💟👺🎇. 🌟🍰🔝📥🎹 🐟🔭🔉🔅 🔊🐝🐆👥🔋🍤 🏁🎋🍸👩 🍣💘🕟💥 🔅🌁🌁🍙🍠 🎣🏤🐒🏄 👋🔻🔋🏉🎡💮 🏈🍦👧🔙🎍🌄📅🏤 🌈📲🎠💷💜📄 🍌🌜🎹🔴🎉 🐛📁🐊🏁🔂🐕🎏 🐺🐄🐩💣 🌝💭🐀📃 💇👏🌇🎏🌽👺. 📠👭🌔🔦🌴🌌🕥 🔵💭🔉👼👖📐 🔜🍪📜👵🍌🐫 🔓📏🐒🎐💣 📋🌗💉💉 👨🐋📌🏪📦👲 💊🌗🎍👩🐛 🍘🔝🌉🕃 👇🎉🐻🔗🔛🐾 🕓🎨👄👯📑🎭 💌🌁🎊🌋📺🐃 🕁🍰🔜🔝👗🍅 🐷🎂🎄🔮🐷🎐🔬🍷 🏂🐷💂🐍 👖👢🎈🎃💠🌖. 📪🍹🔉🔑👉🕙🎠 🐀🍟🔳🐪💄🕃🕣 📻👿👗📝 🔂🍓🔲🎶 🕣🐳🔰👨🐼 💓🐢🐘🐋🕓 🔱💚💇🐸💪📻🎣 🐳🍱🏪🐔🌂 🌔👼👯👷👈 🐧🐟💌🏮🍩👉 💟💧📞🍱👎🔳🐬 🍻👶🏆🎍. 👠🍻📌💇🐘🍝👵 👴🐩🔪🎀📼🔙 🕔👍🔖💋🕙 🐪🐶🎯🔇🏣🐮 🎩💔📠🐂🕓 💗🔖🕘🕙🔂👐💣 💙🔲🐗💚🍸🔏 🎡🍏🐛🎠💤💔 🐖🔖💭🐑🎬 🕛🌞🎽🌰 🍖👜🍹🎊 💸👸📛🎓🔢. 📞🐥👳🍇 🍼🍃💍🐇 🔀👱🔯🎱 💋👫📰📂 💫🔻🎡💣🔟 🍌💇🎎🔒🔫 🐙👠🔨👠 🔱🌽🔮💏💅🐄 👜🎳🕦🔅💌🍘💧🎇 🐙🍡🐨💡 👩🎿🔎🔠🔏🍅 👿🌋🕝📃 📇🍇🔍🐂🕑🍠👺. 🎁🍶📋🔏🍈🔄🍔🌝 👖🎐👞🍠📏🍉🌍 📛🕜🕠🌳👱💻 🏂🏤📱💉🎫👄 🌱🍠🏡🍦👂🎵💟👠 💽🎡🎽💫📪🌓 🌗👵🔋💆🍝💒 🍶🗾🐺💷🐲💞 🍬🐓📇🎤🍖 📊🍌🏊💚🍠🍃🐉🕥 🍟🏇🍁🏯🍂💶 📈👾🏨👃📇 🌎🐲💜🎌👏🐉."""

long, short = sorted([Text_A, Text_B], key=lambda s: len(s))

with open("output.bin", "wb") as f:
    for (a, b) in zip(long, itertools.cycle(short)):
        v = np.array(ord(a) - ord(b)).astype(np.uint8)
        f.write(v)

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3850

Wenn man beliebig lange Binärdateien will

Ich frage mich, ob allzu lang nicht konntraproduktiv ist.

Es geht zB um die Situation, die ich gerade erlebt habe. Eine intern verbaute HDD wird nicht mehr gefunden, man hört sie aber noch. Ich vermute der Controller ist defekt und jetzt will ich die problemlos entsorgen können. Ich denke der riesige Unterschied ist schon nicht verschlüsselt und irgendwie verschlüsselt. Bei unverschlüsselt kann schnell wer neugierig sein. Das PW zu hacken wird man sich ohne Grund nicht antun.

Die Sicherheitsanforderungen sind also ziemlich gering.

Jetzt geht es darum ein Lösung zu finden, die simpel ist, wenn man weiß was dahinter steckt.

Die Frage ist, ob xxd auch in 10 Jahren noch das gleiche Ergebnis bringt. Auch scheinen sehr kurze PW mit xxd nicht zu funktionieren, daher die Zwischenschaltung einer Prüfsumme. Ich habe mehrfach 0 Bytes erhalten.

Im Normalfall gibt es zum File noch mindestens 2 PW mit denen man entschlüsseln kann. Nun könnte es aber passieren, dass jemand diese 2 PW irrtümlich löscht und das File auf der HDD ist auch nicht mehr lesbar. Also sollte man dieses File möglichst mit einfachen Mitteln wieder herstellen können. Irgendein Script ist da schon wieder zu aufwendig, denn ist in einer Stress-Situation das Script gerade greifbar?

Das soll ja alles auch für Leute geeignet sind, die sich mit Linux viel weniger auskennen als ich.

Danke für deine Idee, mal schauen was noch vorgeschlagen wird.

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Kennst Du schon shc?

Damit kann man lustige oder listige Sachen machen, sogar mit Ablaufdatum. Guckst Du Manual Page:

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3850

Kennst Du schon shc?

Nein, aber ich habe Bedenken, dass das konstante Ergebnisse bringt. Ich habe mal was erstellt:

Da findet sich dann in der Binärdatei:

GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0.shstrtab.interp.note.gnu.property.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.data.bss.comment

Ich vermute mal, dass bei einem neueren Ubuntu, da was anderes steht.

Edit: gerade 2x hintereinander kompiliert, ergibt unterschiedliche Prüfsummen.

Das einzige was mich an xxd stört, ist, dass ich mir nicht sicher bin, ob das ein konstantes Ergebnis nach Jahren bringt. Ich glaube, das muss man organisatorisch lösen, zB bei jeder Distri einen neuen Key hinzufügen und den alten löschen. Das ist aber aufwendig und Fehler sind beim Löschen nicht auszuschließen.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

glaskugel schrieb:

Wenn man beliebig lange Binärdateien will

Ich frage mich, ob allzu lang nicht konntraproduktiv ist.

Wenn du eine konkrete Längenanforderung hast, gibt es auch Hash-Algorithmen wie Blake3, bei denen man die Länge des Hash einstellen kann - b3sum ist z.B. als Ubuntu-Paket verfügbar und als in Rust implementiertes Programm schön unabhängig vom genutzten Linux-System einsetzbar und die Kompilierung für Windows, MacOS usw. ist auch kein Hexenwerk - das würde dir z.B. einen 64 Bytes langen Hash im Binärformat geben (standardmäßig sind es 32 Bytes):

echo "TOPSECRET" | b3sum --no-names --raw -l 64 > hash.bin 

Es geht zB um die Situation, die ich gerade erlebt habe. Eine intern verbaute HDD wird nicht mehr gefunden, man hört sie aber noch. Ich vermute der Controller ist defekt und jetzt will ich die problemlos entsorgen können. Ich denke der riesige Unterschied ist schon nicht verschlüsselt und irgendwie verschlüsselt. Bei unverschlüsselt kann schnell wer neugierig sein. Das PW zu hacken wird man sich ohne Grund nicht antun.

Wenn die Platte defekt ist und man nicht will, dass da jemals jemand Leseversuche startet, ist mechanische Zerstörung i.d.R. die einfachste Variante - z.B. Bohrmaschine oder Vorschlaghammer, wenn man keinen Shredder hat.

Jetzt geht es darum ein Lösung zu finden, die simpel ist, wenn man weiß was dahinter steckt.

Das was ich vorgeschlagen hatte, kann man zur Not recht schnell mit Stift und Papier Zeichen für Zeichen nachvollziehen - Hashwerte sind i.d.R. komplexer zu berechnen, weil die komplette Eingabe mit reinspielt.

Die Frage ist, ob xxd auch in 10 Jahren noch das gleiche Ergebnis bringt. Auch scheinen sehr kurze PW mit xxd nicht zu funktionieren, daher die Zwischenschaltung einer Prüfsumme. Ich habe mehrfach 0 Bytes erhalten.

Das steht ja sogar als Warnung in der Manpage, dass "Müll" in der Eingabe stillschweigend ignoriert wird.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3850

Wenn du eine konkrete Längenanforderung hast, gibt es auch Hash-Algorithmen wie Blake3,

Super, danke, das gefällt mir sehr gut.

Spricht was dagegen:

echo 'TOPSECRET' | b3sum 

Mit " kann es passieren, dass man "event not found" erhält.

Stellt sich noch die Überlegung wie man die Datei harmlos benennt und wo man sie unauffällig speichert.

ist mechanische Zerstörung i.d.R. die einfachste Variante

Kann aber sehr aufwendig sein. EIne 3,5"-HDD mit der Flex zu zerschneiden ist nicht so leicht.

oder Vorschlaghammer,

Da wäre ich mir nicht so sicher, ob das reicht, hatte ich vor der Flex probiert.

Ich habe keine Ahnung was die beim Recycling alles machen. Ich denke, da reicht jede leichte Verschlüsselung. Gibt ja keinen speziellen Grund genau diese HDD anzusehen.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Mal ein paar unqualifizierte Anmerkungen von mir:

  • Die Hammermethode hatte ich mal einem Nachbarn empfohlen (spitzes Ende). Ich denke nicht, das bei mechanische Platten danach noch viel zu holen ist.

  • Wer es auf deine Festplatte abgesehen hat, wird nicht darauf warten, dass du sie irgendwann entsorgst.

  • Wer seine Festplatte beim Recyclinghof entsorgt, wird sicher keine Daten darauf haben, die für irgendeinen Geheimdienst interessant sind (die würden richtig Aufwand betreiben).

  • Wenn du 'echo ...' zur Eingabe verwendest, solltest du daran denken dass echo immer einen Zeilenwechsel an die Ausgabe anhängt, es sei denn du verwendest

    echo -n ...

    Das macht einen Unterschied!

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3850

Das macht einen Unterschied!

Ich denke, das ist egal, muss nur jedes Mal gleich sein. Ich erstelle eine Key-Datei und irgendwann wieder. Das PW habe ich im Kopf.

Darum geht es primär, vieles ist einfach Optimierung für unvorhergesehen Fälle:

HDD ist bei mir nicht mehr ansprechbar, ich muss sie daher beim Recyclinghof entsorgen und habe keine Lust auf Hammer & Co. Der Recyclinghof gibt sie an eine Verwertungsfirma weiter. Die haben dann zufällig die gleiche und reparieren meine. Wenn es unverschlüsselt ist, können sie alle meine Daten lesen, wenn verschlüsselt, ist die Neugierde vermutlich bei ihnen beendet.

Die Ansprüche, die man zum Datenschutz eventuell haben könnte, treffen bei mir nicht zu.

PS. Gab schon genügend Fälle wo Behörden-PCs unverschlüsselt entsorgt wurden und das dann in der Presse landete. Die Leute sind neugierig.

glaskugel

(Themenstarter)

Anmeldungsdatum:
8. Juli 2010

Beiträge: 3850

Ich verstehe nicht warum manche Webseiten empfehlen die Ḱey-Datei unverdächtig zu benennen und irgendwo zu speichern. Wer root-Rechte erlangt hat, braucht nur in die crypttab zu schauen. Da steht es in Plain Text.

Antworten |