• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Verschlüsselung sicher?

daWonderer

New member
Hallo,

ich habe in PHP eine Verschlüsselungsfunktion für einen String geschrieben. Das Problem ist, dass der Schlüssel zur Entschlüsselung im resultierenden String selbst enthalten ist.
Nun ist die Frage, ob eine solche Verschlüsselung ausreichend und sicher ist?
Es interessiert mich, ob es möglich ist Rückschlüsse auf den Algorithmus ziehen zu können wenn ein Hacker (gibts da hier welche ? ;) ) den String und den daraus resultierenden Verschlüsselungscode hat.

Der verschlüsselte Code ist bei gleichem Ausgangs-String bei jeder Verschlüsselung unterschiedlich.

Mal ein Beispiel:

String 1: 12345678
Code 1.1: TvhC[un\}u}twccoxY€M|^Zu
Code 1.2: Œ�…Sm€TX€ZbZ„Y€yb\ƒ…fTVv

String 2: 90123456
Code 2.1: Z`nK^WjOgQWnyƒkMVvhUXqOz

Hintergrund ist, dass ich gelesen habe, dass Verschlüsselungen mit dem Cäsar-Algorithmus durch längeres Probieren geknackt werden können.
Dies hier ist jedoch nicht der native Cäsar-Algorithmus.

PS: Nein, ich möchte nicht auf vorhandene Funktionen zurückgreifen...
 
Zuletzt bearbeitet:
Also für mich sieht das nach einer Hash-Funktion aus...

Was meinst du mit "im resultierenden String enthalten"? Kannst du mal ein schematisches Beispiel machen? Wie benutzt man deine Verschlüsselungsfunktionen?

Edit: Und wie soll der verschlüsselte String entschlüsselt werden, wenn für den gleichen String eine Vielzahl an verschlüsselten Strings rauskommt?
 
Es ist keine Hash-Funktion, sondern eine Abwandlung des Cäsar-Algorithmus.

Wie benutzt man deine Verschlüsselungsfunktionen?

$crypt = cryptIt($string);
$plain = decryptIt($crypt);

:d

Was meinst du mit "im resultierenden String enthalten"? Kannst du mal ein schematisches Beispiel machen?

Ungern, da ich ja eig.wissen möchte, ob anhand der Verschlüsselungen das Schema ermittelt werden kann.
Erläuterung: Die Cäsar-Verschlüsselung funktioniert nach dem Prinzip der Verschiebung des ASCII-Wertes. Wenn man nun z.b. den Datenverkehr mitschneidet kann man ermitteln wie verschlüsselt wurde.
Umn dies zu verhindern, habe ich eine Funktion geschrieben, die verschiedene resultierende Strings zur Folge hat. Dennoch ist ein Entschlüsseln möglich.

Edit: Und wie soll der verschlüsselte String entschlüsselt werden, wenn für den gleichen String eine Vielzahl an verschlüsselten Strings rauskommt?

Das geht, da der verschlüsselte String die Informationen enthält, wie der Ausgangsstring verschlüsselt wurde.

EDIT: Vielleicht sollte ich noch dazu sagen, dass die Verschlüsselung im Moment nicht für jede Art von String vorgesehen ist und funktioniert. Die Funktion verschlüsselt nur Alpha-Numerische Codes. Die Aufgabenstellung ist, eine Verschlüsselung für Konto-Daten zu programmieren.
 
Zuletzt bearbeitet:
Also wenn du mit Konto-Daten Bankkontodaten meinst, dann ist ein Verschiebungsalgorithmus (Cäsar) eine sehr schlechte Wahl, da dieser mit Brute-Force relativ einfach geknackt werden kann. Häufigkeitsanalyse...

Wenn du wirklich sicher verschlüsseln willst, brauchst du ein asymmetrischer Algorithmus, wie z.B. Diffie-Hellmann oder RSA.

Früher oder später wird irgendjemand sowieso deine verschlüsselten Strings knacken können, wenn du einen Verschiebealgorithmus verwendest. Und wenn der Algorithmus bekannt ist, ist er nichts mehr wert. Dein Ziel muss es also sein einen Algorithmus zu haben, welcher offengelegt werden kann und man den String trotzdem nicht entschlüsseln kann.

Eine relativ einfache Einführung gibt es unter:
RSA: Mathe Prisma
Cäsar: Mathe Prisma
Data Encryption Standard: Mathe Prisma
Enigma: MathePrisma

Oder bei Wiki:
Diffie-Hellmann: Diffie-Hellman-Schlüsselaustausch - Wikipedia
RSA: RSA-Kryptosystem - Wikipedia
Cäsar: Enigma (Maschine) - Wikipedia
DES: Data Encryption Standard - Wikipedia
Enigma: Enigma (Maschine) - Wikipedia
 
Danke für deine Antwort und die Links!

Also wenn du mit Konto-Daten Bankkontodaten meinst, dann ist ein Verschiebungsalgorithmus (Cäsar) eine sehr schlechte Wahl, da dieser mit Brute-Force relativ einfach geknackt werden kann. Häufigkeitsanalyse...

Ja, es geht um Bankkontodaten.
Es ist kein 'einfacher' Verschiebealgorithmus!
Die einzelnen Zeichen des Strings werden nicht alle um die selbe Anzahl verschoben und diese Verschiebungen wiederum sind bei jeder Verschlüsselung unterschiedlich. Es ist also nicht möglich einen Wert der Verschiebung in verschiedenen Varianten durchzuprobieren bis der entschlüsselte String erscheint.

Reicht das aus um Brute-Force zu erschweren/verhindern?

Außerdem ist es nicht möglich zwei verschiedene Texte zu verschlüsseln und deren Verschlüsselung zu analysieren um dann alle Codes entschlüsseln zu können, da die Verschiebungen variieren.
Die Häufigkeitsanalyse habe ich denke ich dadurch aussgeschlossen.(?)

PS-EDIT: Okay, wenn mein Algorithmus bekannt ist, dann ist natürlich der Schutz dahin - jetzt hab ich endlich mal den Sinn der Keys verstanden :rolleyes:
 
Zuletzt bearbeitet:
Na gut, daWonderer: Anscheinend hast du jetzt bisschen Freude an Kryptographie und möchtest mal einen eigenen Algorithmus machen.

Ich lass mich mal auf den Spass ein. Hast du ein Tool, mit dem man testen kann?
 
Zuletzt bearbeitet:
Hast du ein Tool, mit dem man testen kann?

Hab das Skript auf Arbeit. Ich stelle dann morgen hier nen Link rein von der ersten Funktion zur Verschlüsselung von Zahlencodes mit einer Länge bis zu 10 Stellen. (Anforderung waren dt. Kontonummern)

@Rene Danke für den Link! Wenn sich rausstellt, dass mein Algorithmus nix taugt werd ich mal sehen ob ich die Library installiere.

@schlauer Auf vorhandene Funktionen zurückgreifen ist eine gute Möglichkeit. Ich bin zur Zeit im Studium und da kann es denke ich nicht schaden, wenn ich solch eine Funktion mit eigenem Algorithmus entwickle und diese als kleinen Teil in eine Studienarbeit mit einfließen lasse.
 
Zuletzt bearbeitet:
Falls es noch jmd. interessiert...

Ich habe nun Eingabefelder für die Verschlüsselung von BIC-CODES mit eingebaut. Verschlüsselung von Zahlencodes

Wieso werden bei meinem lokalen Webserver (XAMPP) die Slashes des Input-Feldes maskiert? Wenn dort ein Slash im verschlüsselten String auftaucht erscheint dieser doppelt und ich muss lokal ein 'stripslashes' einbauen, damit die Funktionen richtig arbeiten.

EDIT: Ich ziehe meine Frage zurück, magic_quotes...
 
Zuletzt bearbeitet:
Zurück
Oben