Ist meine verschlüsselung jetzt sicher?

Hallo

Ich habe mein kleines verschlüsselungsprog von leztens etwas erweitert, und wollte euch nun fragen, ob so ein verschlüsselung sehr einfach zu knacken ist, oder obs eher in richtung "sicher" geht.

Das ganze funktioniert so:

Zu allererst wird ein Passwort eigelesen. Von diesem wird die Länge ermittelt, und die ASCII-Werte werden einzeln in einer schleife mit der länge, multipliziert der nummer des aktuellen schleifendurchlaufs hoch 2, multiplizie. Die dadurch entstehenden zahlen werden in ein integer array eingetragen. Dann gibt es noch ein weiteres Array, in dem die ersten 100 000 stellen von pi, aufgeteilt in 5 ziffern lange zahlen, stehen. Bei der eigentlichen verschlüsselung wird dann der aktuelle Buchstabe der datei (als ascii wert) mit der aktuellen stelle des schlüssels (integer array vom anfang), multipliziert mit der aktuellen stelle des pi-arrays, addiert und als nummer ausgegeben. Ist der schlüssel oder das array einmal ganz durchlaufen, wird wieder von vorne angefangen. Der startpunkt im pi-array wird durch die länge multipliziert mit der letzten schlüsselstelle bestimmt.

Ich hoffe ihr kapiert das einigermaßen, und ich hab keinn fehler in die beschreibung eingebaut, das programm läuft nämlich einwandfrei!

Danke schonmal für alle antworten...
 
Hallo,
hört sich kompilziert an, aber eine Sache stört mich sehr

Ist der schlüssel oder das array einmal ganz durchlaufen, wird wieder von vorne angefangen

Wenn sowas passiert, ist ein Verschlüsselungsscript fast immer Unsicher, denn wenn der key 3 Buchstaben hat, wurde jeder 3 Geheimtextbuchstabe mit dem gleichen Key Buchstaben verschlüsselt.

Schreibt man sich jetzt jeden 3. Buchstaben herraus, kann man eine Häufigkeitsanalyse machen und somit den Schlüssel Key herrausfinden.


Es wäre gut wenn du einmal den eingegebenen Key, den daraus errechneten Key, einen Klartext und einen Geheimtext posten könntest.

P.S. Der errechnete Key sollte bei dem gepostetem Geheimtextbeispiel nocht so lang sein wie der Klartext, denn im "wirklichen" Leben findet man sowas selten, und man kann so einen One-Time pad dann nicht knacken
 
Das es sich wiederholt soll je gerade dadurch verhindert werden, das noch die PI stellen dazukommen und das im PI array an einer durch die länge des schlüssels bestimmten stelle begonnen wird...wenn du verstehst was ich meine. Ich hab ma die sourcen angehängt, damit dus dir vielleicht etwas genauer ansehen kannst...also, wenn du magst. Ist übrigens in C++ geschrieben.
 
Hey hab mir heute mal dein Programm angeschaut!
Die Idee mit dem zusätzlichen Schlüssel mit den Stellen in Pi ist recht gut von dir...
Leider sind diese jedem bekannt. Und das ist die entscheidende Schwachstelle!
Häufigkeitsanalyse und das übliche braucht man gar nicht mal um den code zu knacken...
Dein Geheimtext wird im Prinzip durch die Formel
C = Klartext + Key * (Länge + i*i) * Pi[j]
berechnet.
der Klartext kann maximal den Wert 255 haben. (die ascii-zeichen halt)
den Rest (also die ganzen Multiplikationen) kannst du einfach umgehen, indem du Modulo Pi[j] nimmst dann kommt nämlich 0 raus und du erhälst einfach den ASCII-Wert des Klartextzeichens... (vorausgesetzt, die Werte der j-ten Pi-Stelle sind größer als 255 - was in 99,99744 % der Fall ist - ansonsten müsste man eine Art Kollisionsbehandlung einfügen)
Lange Rede kurzer Sinn:
Das ist die Funktion die dir aus einer verschlüsselten Datei eine entschlüsselte macht - OHNE eingabe von passwörtern!!!!

void ent2(string Ein, string Aus)
{
long a;
int j;
char c;
ifstream in(Ein.c_str());
ofstream out(Aus.c_str());
j=0;
while(in>>a)
{
if(j==20000) j=0;
c = a%pi[j];
out<<c;
j++;
}
}

Verbesserungsvorschläge für dieses Programm kann ich leider nicht geben, da es prinzipiell unsicher verschlüsselt.

Wenn du mit Verschlüsselungen gerade erst angefangen hast, würde ich mich lieber auf asymmetrische Verfahren stürzen, für den Anfang vereinfachte Versionen von RSA etc.... Die sind wirklich sicher und schwer zu knacken
Hoffe ich konnte ein wenig helfen, auch wenn sich rausgestellt hat, dass dein Programm nicht sicher ist ;)

Gruß, Netcracker
 
Zurück
Oben