Unknackbarer Code

6 Antworten

Die guten Verschlüsselungsverfahren beachten das Kerkhoff'sche Prinzip, deins auch? http://de.wikipedia.org/wiki/Kerckhoffs%E2%80%99_Prinzip - Will heißen: könntest du deinen Algorithmus offenlegen, ohne, dass man dir damit den Schlüssel knackt?

Und wie speicherst du deinen Schlüssel eigentlich? Die einfachen Datentypen für Zahlen sind in ihrer Größe und Genauigkeit begrenzt und wenn du eine derartig große Zahl als String abspeicherst, dann sollte die Dateigröße sehr viel größer sein. 2 KB sind 16384 Möglichkeiten, das ist gut via Bruteforce zu knacken. Und könnte man den Schlüssel ganz sicher nicht mit einem Decompiler aus deiner exe fischen?

CrystalixXx  13.05.2013, 17:47

Irgendwie erinnert mich das an einen Festplattenhersteller (Seagate), der damals einen eigenen kryptographischen Algorithmus entwickelte, um die Daten der Festplatte sicher zu verschlüsseln.

In kürzester Zeit (ich meine es war sogar noch am selben Tag) als die Festplatte erhältlich war, wurde der Code geknackt. (Leider finde ich keine Quelle mehr dafür, liegt schon viele Jahre zurück.)

Durchaus ein namhafter und erfolgreicher Hersteller, aber eben kein Kryptograph. Selbes Problem hier, amüsant. :)

1
Terence009 
Fragesteller
 14.05.2013, 10:22

Na, die EXE dürfte natürlich niemand sehen. Das Programm generiert Zahlen nach einem bestimmten Prinzip, etwa so wie die Nachkommazahlen von PI, und diese werden zur Verschlüsselung eingesetzt. Nur ist die Art wie die Zufallszahlen erzeugt werden viel komplexer, also eine Art unendlich langer Schlüssel. Obendrein kann ich das noch mit ein paar einfachen Zufallszahlen kombinieren...

0
CrystalixXx  14.05.2013, 13:34
@Terence009

Echte Zufallszahlen können es wohl kaum sein. Denn sonst wäre keine Eineindeutigkeit des Schlüssels oder des Verschlüsselten nicht gewährleistet, was also heißt, dass es keine Entschlüsselung geben kann.

Werden die Zahlen nach einem Algorithmus erzeugt, der auf allen Systemen zwangsläufig der selbe sein muss, so findet man mit Reverse-Engineering mit Leichtigkeit den Algorithmus heraus. Assembler hat zumindest jeder Fachinformatiker irgendwann einmal gelernt. (Selbst das ist noch nicht einmal notwendig, wenn man ein passendes Programm dafür verwendet.)

Weiterhin muss dein Algorithmus extrem langsam sein, wenn der Schlüssel dynamisch der Länge der zu verschlüsselnden Daten angepasst wird. Ansonsten wüsste ich nicht, weshalb du behauptest, dass dein Schlüssel unendlich lang wäre. Ungeachtet dessen basieren die meisten (alle?) sicheren Verschlüsselungen auf Berechnungen mit Primzahlen. Diese haben in der Kryptographie einen sehr hohen Stellenwert - falls sich junge Menschen fragen sollten, wozu man Primzahlen eigentlich braucht: Kryptographie.

In dem von ceevee verlinkten Artikel gibt es gleich mehrere Problematiken, die genau auf den von dir genannten Beitrag zutreffen.

0

Ich habe grade in einem deiner Re-Kommentare gelesen, dass dein Programm einfach nur "durchmischt"...

Dann nehme ich dein Programm betreibe ein bischen Reverse Engineering und kann schritt für schritt nachverfolgen, welcher Algorithmuss für das durchmischen verwendet wird. Diesen Algo kehre ich dann um und erstelle mir damit ein Programm, dass alles entschlüsselt, was du verschlüsselt hast.

Zum verschlüsseln wird immer ein Schlüssel benötigt. Alles andere muss ins Programm integriert werden und alles was im Programm integriert ist, kann rekonstruiert werden.

Des weiteren, hab ich hier gelesen, dass es keine unknackbare Verschlüsselung gibt, was so auch nicht ganz richtig ist. Sowas ist nämlich machbar, wenn der Schlüssel genau so groß ist, wie die zu verschlüsselnden Daten (natürlich unter der voraussetzung, dass der Schlüssel nicht in fremde Hände gelangt), siehe:

https://de.wikipedia.org/wiki/One-Time-Pad

Terence009 
Fragesteller
 14.05.2013, 10:25

Ja klar, wer den Quellcode meines Programmes kennt, der kann das Rückgängig machen! Meine Verschlüsselung ist auch nicht so praktitabel wie TrueCrypt.

0

Es gibt nur eine Chiffre die mathematisch bewiesen unknackbar ist. Sie heißt One Time Pad und lässt sich in BASIC als Fünfzeiler programmieren.

halbsowichtig  13.05.2013, 13:23

Ach ja, noch was: Die OTPs, also die langen Einmalschlüssel, kann man theoretisch per QKE (Quantum Key Exchange) und Diffie-Hellmann-Algorithmus aushandeln. Technisch praktikabel ist das aber noch lange nicht.

0

Einen Unknackbaren Code / Verschlüsselung gibt es nicht! Du solltest also mit deinen Preisgeldausschreiben vorsichtig sein, sonst biste schneller um 1000 Euro ärmer als dir lieb ist! ;-)

halbsowichtig  13.05.2013, 13:22

Wenn man jeden Schlüssel nur genau einmal verwendet und er mindestens so lang wie die Nachricht ist, dann geht das sehr gut. Nur praktikabel wird es erst mit QKE.

0

denkt ihr dass damit eine praktisch unknackbere Verschlüsselung möglich wäre?

Nein. Es gibt keinen unknackbaren Code. Schon gar nicht mit einem 2KB-Basicprogramm.

Terence009 
Fragesteller
 13.05.2013, 13:30

Tja, das werden wir mal sehen :) Mein Programm "mixt" die Datei praktisch so durch, dass ich mir nicht vorstellen kann, wie jemand darauf kommen könnte, wie man das wieder zusammensetzt. Natürlich gibt es Krytpologen, die was drauf haben, aber wenn die nicht mal wissen WIE die Datei Verschlüsselt wurde, dann wird es schon extrem schwer.

PS: Mein Schlüssel ist ein paar Billiarden mal länger als es Atome im Universum gibt, etwa so wie die Zahl PI, nur unberechenbarer.

0
marx67  13.05.2013, 13:41
@Terence009

dass ich mir nicht vorstellen kann, wie jemand darauf kommen könnte, wie man das wieder zusammensetzt.

Das ist das Problem. Du kannst es dir nicht vorstellen. Jemand, der sich mit Kryptografie auskennt (und als Voraussetzung dafür extrem gut mit Mathematik), würde nicht leichtsinnig so eine Aussage treffen und dann auch noch das Wort "vorstellen" verwenden.

Vor allem aber würde er seine Idee nicht hier, sondern auf einer entsprechend spezialisierten Plattform präsentieren und nicht gerade ein Basic-Programm verwenden.

Von all dem abgesehen stellt sich die Frage nach der Praktikabilität. Schließlich muss die codierte Information ja auch wieder decodiert werden und der Anwender muss damit klarkommen, ohne dass Unbefugte ihm dabei ins Handwerk pfuschen können.

0