Die schnellsten Ergebnisse wirst Du bekommen wenn die Verschlüsselung
in hochoptimiertem Assemblercode programmierst (wenn man es kann...)
Allerdings ist diese Art der Verschlüsselung die schlechteste Wahl!
1.
Die schlechteste Art Daten zu verschlüsseln:
Die Verschlüsselung besteht aus einer Folge von Aktionen welche die Daten
des Originaltextes umstellen (von hinten nach vorn, Blöcke tauschen,...).
Wird das Verfahren einmal bekannt, so lassen sich alle jemals codierten
Texte sofort entschlüsseln. Da das Verfahren kompliziert ist, muß man es
aufschreiben und vergrößert so die Gefahr, das einem Anderem in die Hände
fällt. Schreibt man es nicht auf und die wissenden sterben, sind die Daten
für immer verloren. Ein solches Verfahren würde in der Öffentlichkeit
niemals akzeptiert: Da ich Niemandem sagen kann wie der Originaltext
verschlüsselt wird, kann auch Niemand prüfen ob das Verfahren ausreichend
sicher ist oder ob der Programmierer sein Wissen nicht missbraucht und die
Daten fremder Menschen ausspioniert.
2.
Eine gute Art Daten zu verschlüsseln (So arbeiten alle modernen Verschlüsselungen):
Der Originaltext wird mit Hilfe eines Schlüssels (etwa ein Passwort oder
eine Zahl mit einer größe von bis zu 512 oder 1024 Bits) verschlüsselt.
Dabei wird der Originaltext Byte für Byte mit dem Schlüssel XOR-Verknüpft.
Da der Text länger als der Schlüssel ist, muß man nach dem letzten Byte
des Schlüssels wieder mit seinem ersten Anfangen (also den Schlüssel so
lange wiederholen/hintereinanderlegen bis man die Länge des Originaltextes
hat. Wenn man diesen Vorgang wiederholt wird des Code wieder entschlüsselt.
Bei dieser Verschlüsselung muß dem Empfänger bei jeder Botschaft der Schlüssel
mitgeteilt werden. Ein solches Verfahren würde von der Öffentlichkeit akzeptiert,
weil man Jedem sagen kann, wie die Verschlüsselung arbeitet und Jeder prüfen
kann, ob das Verfahren keine Hintertüren enthält. Wenn man für jede Nachricht
einen anderen Schlüssel verwendet, kann (wenn der Schlüssel abgefangen würde)
immer nur eine Nachricht entschlüsselt werden. Hier läßt sich über ein "Private-/
Public-Key" Verfahren mehr Sicherheit schaffen.
Um eine solche Verschlüsselung zu knacken, muß man den Code analysieren. Da der
Schlüssel sich ständig wiederholt kann man bei genügend langen Texten Muster
finden und über die Entropie (Häufigkeit) der Buchstaben (für jede Sprache anders)
lassen sich Rückschlüsse auf den Schlüssel ziehen. Das ist um so einfacher, je
einfacher das verwendete Wort ist. Deutsche Soldaten haben im zweiten Weltkrieg
teilweise die Namen ihrer Freundinnen als Schlüssel benutzt und diese auch für
mehrere Botschaften hintereinander verwendet. Dadurch war es englischen Spezialisten
möglich schnell auf den Schlüssel zu kommen. Daher liest man überall "...möglichst
Groß-, Kleinbuchstaben, Zahlen und Sonderzeichen verwenden und keine sinnvollen
Wörter...). Es gibt Datenbanken in denen die Beliebtesten Passwörter gespeichert
sind. Diese werden von Hackern als erstes durchprobiert bevor sie sich mehr Mühe
geben müssen.
Man erkennt auch, das die Sicherheit mit der Länge des Schlüssels wächst! Das bringt
uns zu der perfekten Verschlüsselung...siehe unten...
3.
Die pefekte Verschlüsselung (klingt komisch...iss aber so...):
Wenn man den Schlüssel so lang wie den Originaltext wählt gibt es keine Möglichkeiten
Muster zu finden oder sonst irgendwelche Rückschlüsse zu ziehen. Bei hundert Zeichen
Text braucht man nur Byte-Weise mit einem hundert Zeichen Schlüssel XOR verknüpfen.
Das wiederholen des Vorgangs entschlüsselt den Code wieder.
Dieses Verfahren ist absolut sicher! Kein NASA-Computer, FBI, CIA,
NSA, andere Vereine... oder Rechengenies sind in der Lage diesen Code
zu Knacken!
Der Grund ist einfach: die Anzahl der Möglichkeiten ist so groß wie die möglichen
Variationen des Originaltextes. Man wüsste beim probieren nicht, ob ein aufgetauchtes
(sinnvolles) Wort durch den richtigen Teil des Schlüssels oder nur durch puren Zufall
entstanden ist. Oder anders ausgedrückt: Mit dem richtigen Schlüssel kann man aus jedem
beliebigen Text jeden beliebigen anderen Text erzeugen (mit gleicher Länge).
Schlaue Köpfe werden sagen: "Die perfekte Verschlüsselung gibt es nicht! Sonst würde man
das doch überall einsetzen!". Das diese Verschlüsselung nicht verwendet wird liegt an zwei
Dingen:
1.Es gibt einen kleinen Haken: Der Schlüssel ist so lang wie der Originaltext und damit in
der Regel zu lang um ihn sich merkenzu können. Abtippen möchte ihn auch Niemand. Er muß
also in Form einer Diskette, CD/DVD-Rom oder USB-Stick mit jeder ausgetauschten Botschaft
weitergegeben werden. Dadurch besteht die Gefahr, das Code und Schlüssel "abgefangen" werden.
Sie müssen also auf verschiedenen Wegen transportiert werden.
2.Sämtliche Staaten haben kein Interesse an einer perfekten Verschlüsselung! In einigen Ländern
sind starke Verschlüsselungen sogar bei Strafe verboten und/oder fallen unter das Waffengesetz!
Man beachte: Verschlüsselungen werden als Waffe angesehen! Die Staaten sind neugierig und wollen
überall reinschnüffeln; es macht sie nervös wenn Menschen auf ihre Privatsphäre bestehen und Daten
so austauschen, daß man ihnen dabei nicht "über die Schulter blicken" kann. Es kommt noch schlimmer:
In den USA sollen (müssen? - so glaube ich jedenfalls) Verschlüsselungen immer über einen Zusätzlichen Key
zu entschlüsseln sein, welcher dann der NSA gegeben wird. Die wollen sich nicht (trotz Kenntniss des
Verfahrens) die Mühe machen alles auszuprobieren. Dies wurde durch einen einzigartigen Fall bekannt:
Als die Microsoft Programmierer das ServicePack3 (oder war's 4?) compilierten, haben Sie vergessen
die "Häckchen" für die Debug-Informationen rauszunehmen. In dem ausgeliefertem Code sind nun die
Kommentare der Programmierer zu lesen. Im Bereich des Verschlüsselung wurden zusätzliche Keys angelegt
welche (unter anderem) mit "NSA" dokumentiert waren! Ein Schlüssel wurde mit einem Fragezeichen
dokumentiert und gibt bis Heute Rätsel auf (Wer hat den Wohl bekommen? Hintertürchen eines
Programmierers?).
Mein Tipp für die perfekte Verschlüsselung:
-Generiere mit einem Zufallsgenerator (unbedingt selber bauen! Delphi's interner erzeugt wiederholbare
Wertefolgen) eine Datei mit einer Größe von z.B. 8GB.
-Datei auf DVD brennen und an deine Freunde schicken (per Post oder noch besser persönlich überreichen).
-Wähle eine Startposition in der Datei und verknüpfe den Originaltext Byte für Byte XOR mit den Bytes in
der Datei (ab deiner Startposition).
-Die Startposition ist eine überschaubare Zahl und kann gemerkt oder per Telefon ausgetauscht werden.
-Der Empfänger wiederholt den Vorgang zum Entschlüsseln.
Dieses Verfahren ist absolut sicher, solange Niemand Zugriff auf die 8GB-Datei hat. Daher auf einem Rechner
entschlüsseln welcher keinen Zugang zu einem Netzwerkzugang hat (weder intern, noch extern) oder die DVD
nur zum Entschlüsseln einlegen (Die ist zu groß als das sie Online-Schnüffler vom BKA "mal eben" übertragen
könnten
).
Mal nebenbei bemerkt: So schnell dein Code auch sein mag - in ein paar Jahren sind moderne PC's auch mit
einem langsamen Code schneller beim Entschlüsseln und der Stellenwert der Geschwindigkeit so nur temporär.
Stichworte für Google-Suche: "Private Public Key", "HASH Funktion"