Schlüsselstrom-Generatoren, die Pseudo-Zufallszahlen produzieren, arbeiten nach einem festen Schema. Ihre Ergebnisse in Bezug auf Zufälligkeit sind meistens sehr mangelhaft. Außerdem treten immer Regelmäßigkeiten auf, die sie für kryptanalytische Angriffe anfällig machen. Die Sicherheit läßt sich nur schwer abschätzen. Die mathematische Basis läßt nicht erkennen, ob das Formelwerk auch in Zukunft den Angriffen der Kryptanalytiker standhält. Das neue Verfahren beseitigt die qualitativen Mängel, liefert eine kryptographisch sichere Zahlenfolge und bietet die höchstmögliche Sicherheit eines Schlüsselstrom-Generators. Mit argumentativ begründeter, zufallsgerechter Arbeitsweise werden alle wichtigen Funktionen durch Parameter gesteuert. Auf diese Weise entsteht ein oszillierender Algorithmus. Die insgesamt 24 Codes je Zyklus werden, ebenfalls parametergesteuert, auf verschiedene Art erzeugt. Das System arbeitet in einem One-Time-Pad-Modus. Seine Sicherheit hängt nur von dem 180-Bit-Schlüssel ab, der bei jeder Codierung von einem Modifikator neu modifiziert wird. Jede Codierung ist ein Unikat. Insgesamt sind 10108 unterscheidbare Codierungen möglich. Infolge der Einbeziehung des Schlüssels als ständiger Bestandteil des inneren Generator-Zustands wird der Algorithmus vollkommen gegen Angriffe blockiert. Textvergleiche sind im OTP-Modus nicht möglich. Der Generator hat einen 64-Bit-Zähler, der durch Erweiterung um 4 weitere Zählregister auf 192 Bit den Generator praktisch ...
Beschreibung[de]
TEIL ADAS KONZEPT1. Einleitung
SECAL-crypt ist ein neues Verfahren zur Erzeugung von Pseudo-Zufallszahlen,
das sich von den bisherigen Systemen grundsätzlich unterscheidet. Der Algorithmus
von SECAL-crypt gehört zum Typ der Schlüsselstrom-Generatoren, die eine
unendliche Reihe von Codes generieren. Während bei herkömmlichen Systemen
jedoch auf mathematischer Basis nach einem starren Algorithmus gearbeitet wird,
verfolgt SECAL-crypt eine völlig neue Strategie.
Es ist bekannt, daß der systemtheoretische Ansatz die Konstruktion
eines Schlüsselstrom-Generators ermöglicht, mit der die gesetzten Entwurfskriterien
gezielt verwirklicht werden können.
Hier wird ein System vorgestellt, daß nicht auf der Basis mathematischer
Theorie, sondern auf logischen Argumenten aufgebaut ist und keinerlei Formeln zuläßt.
Das vorliegende Konzept ist sehr flexibel und kann in erheblicher Weise variiert
werden, wobei allerdings bestimmte Prinzipien einzuhalten sind. Es bietet daher
auch vielfältige Möglichkeiten für seinen Einsatz, ist aber vor allem
hervorragend für kryptographische Systeme geeignet. Die sicherheitsrelevanten
Probleme werden von SECAL-crypt ebenfalls mit Hilfe logischer Argumente in perfekter
Weise gelöst.
Für die vorliegende Arbeit werden bekannte Entwurfskriterien
verwendet, z. B. eine lange Periode, Konfusion, Immunität gegen Korrelationsangriffe,
Lawineneffekt u.a. Darüber hinaus wurden weitere Kriterien in Betracht gezogen,
welche gezielt auf eine totale Blockade aller möglichen Angriffspunkte eines
Systems, vor allem Schlüssel, Algorithmus, Codes und Texte gerichtet sind.
Zu beachten war auch, daß die Qualität der Codes kryptographisch
sicher sein muß und die Zahlen eine zufallsähnliche Verteilung aufweisen.
Es ist bekannt, daß viele Systeme, die sogenannte Pseudo-Zufallszahlen produzieren,
weit von einer Zufälligkeit entfernt und zum Teil von miserabler Qualität
sind. Das sind auch die Gründe für meine Arbeit, die das Ziel hat, solche
Mängel zu vermeiden und ein System zu gestalten, daß gleichzeitig höchste
Sicherheitsansprüche erfüllt.
Ein kleiner Abstecher zum Zufall sei mir gestattet. Die Frage, was
ist eine Zufallszahl, ist auch immer eine Frage nach der Situation, in der uns eine
Zahl begegnet. Grundsätzlich kann gesagt werden, daß Zufall immer ein
nicht erwartetes Ereignis ist, dessen Ursprung immer unbekannt ist. Nur die Unwissenheit,
die Unkenntnis der Faktoren eines Prozesses, das Nichterkennen von kausalen Zusammenhängen
lassen ein Ereignis als Zufall begreifen.
Ein Beispiel des klassischen Zufalls ist der Weg der rollenden Roulette-Kugel.
Der Spieler kann, obwohl er den Weg der Kugel verfolgt, bis zur letzten Sekunde
nicht wissen, in welches Zahlenfach sie fallen wird. Daß der Kessel wie auch
die Kugel selber nicht vollkommen sind, hört man an dem typischen Geräusch,
das der Lauf der Kugel verursacht. Sie läuft holprig, bis sie schließlich
beim Absinken durch die Widerstände im Kessel völlig abgelenkt wird und
auf ihrem unberechenbaren Weg auf den gegenläufigen Zahlenkranz trifft.
Hier wirken relativ wenige Faktoren aufeinander ein, aber dauerhaft
und mit erheblichem Gewicht. Nach einem ähnlichen Prinzip sollte auch ein Zufallszahlen-System
funktionieren können. Voraussetzung dafür ist die Schaffung zufallsähnlicher
Strukturen im System.
Natürlich läßt sich das Beispiel der Roulette-Kugel
nicht nachbauen. Das Roulette ist die perfekte Zufalls-Maschine, und so vollkommen
könnte nie ein nachgestelltes System sein. Hier geht es um das Prinzip, nach
dem Beispiel der Roulette-Kugel, Faktoren in ein System einzubauen, welche das System
vom starren Weg ablenken und so steuern können, daß dadurch eine zufallsähnliche
Struktur entstehen kann.
Bei SECAL-crypt wird die Systemstruktur so verändert, daß
ein unsteter, oszillierender Algorithmus entsteht, dessen Einzelfunktionen ständig
geändert werden. Dafür werden Kriterien festgelegt, nach denen sich das
System selbst steuert. Das System als Ganzes wird zu einer Zufallsfunktion, die
den Zufall simuliert statt einen Zufallswert nach festen Vorgaben zu errechnen.
SECAL-crypt arbeitet nach dem Prinzip, Regelmäßigkeiten
im Ablauf des Algorithmus weitgehend zu vermeiden. Durch seine oszillatorische Arbeitsweise
und die Anwendung der logisch argumentativen Methode kann ein System entwickelt
werden, das herausragende Eigenschaften besitzt und Leistungen hervorbringt, die
andere Systeme nicht bieten können.
Das Gleiche gilt für den Sicherheitsbereich. Auch hier werden
mit logischer Argumentation alle Probleme überzeugend gelöst. So kann
ein Höchstmaß an Sicherheit erzielt werden, das an die Sicherheit eines
echten One-Time-Pad heranreicht. Schon vorweggenommen sei an dieser Stelle, daß
SECAL-crypt tatsächlich in einem One-Time-Pad-Modus arbeitet.
Der Algorithmus von SECAL-crypt ist dementsprechend aufwendig und
von hoher Komplexität. Das mag den einen oder anderen zunächst vielleicht
abschrecken, da ein undurchschaubar scheinendes System immer Skepsis erzeugt. Deshalb
hoffe ich, mit meiner Beschreibung und den vorgebrachten Argumenten auch gerade
hinsichtlich der Sicherheit die Skeptiker überzeugen zu können, und ich
werde mich bemühen, das hier vorgestellte System in allen Einzelheiten verständlich
zu erklären.
Eine große Hilfe für meine Arbeit war der in der Reihe Informationssicherheit
herausgegebene Band von Bruce Schneier: Angewandte Kryptographie – Protokolle,
Algorithmen und Sourcecode in C, erschienen im Verlag Addison-Wesley 1996.
Es sei noch vermerkt, daß SECAL-crypt auf einem Taschenrechner
HP 42S entwickelt wurde. Dieser ist in der Programmierung mit dem bekannteren HP
41 im wesentlichen identisch.
Das vorliegende Dokumentationsprogramm enthält außer dem
Original-Algorithmus diverse Prüfroutinen, mit denen die Ergebnisse verschiedener
Testläufe in der beigefügten Dokumentation vorgestellt werden.
2. System-Daten
Typ:
Schlüsselstrom-Generator, ausgelegt für 32-Bit-Rechner
12 Bytes oder 24 Bytes je Zyklus mit teilweiser Doppelcodierung, wahlweise 12
Register (je 32 Bit)
Code-Umfang:
wählbar von 2 bis 256, für Kryptographie 128 oder 256
3. System-Konzept3.1. Das Grundschema
Das Gesamtkonzept von SECAL-crypt schließt in den Aufbau eines
Algorithmus zwangsläufig auch die erforderlichen Sicherheitsmaßnahmen
mit ein und entwickelte sich erst im Laufe der Zeit. Die Sicherheitsbelange sind
jedoch ein sehr wichtiger Bestandteil von SECAL-crypt, da das System vor allem für
kryptographische Anwendungen gedacht ist.
Die besondere Verwendung des Schlüssels bei SECAL-crypt (3.3.1.
Schlüssel und 3.3.4. Modifikator) macht bei einem Schlüsselraum von 180
Bit eine Segmentierung des Systems erforderlich. Es wird in sechs Segmente (S1...S6)
gegliedert, ebenso wird der Schlüssel in 6 gleichen Teilen (K1...K6) jeweils
einem Segment zugeordnet, und zwar K1 zu S1 usw. Diese Aufteilung bleibt unveränderlich.
Nachdem der Schlüssel in die Arbeitsregister (A1...A6) als Anfangswerte
jedes Segments übertragen worden ist, werden die Segmente der Reihe nach abgearbeitet.
Auch diese Reihenfolge bleibt bestehen. Die Endsummen der Segmente werden in Zwischenregistern
abgelegt, die im weiteren Verlauf wieder in den Algorithmus einfließen.
Auf diese Weise sind die Segmente 1, 3 und 5 sowie 2, 4 und 6 miteinander
verbunden. Außerdem gibt es noch einige Rückkopplungen,
die aber erst später behandelt werden sollen.
Zu erwähnen ist noch die Besonderheit, daß die Arbeitsregister
A3 und A4 und mithin die Schlüsselsegmente K3 und K4 als Zähler dienen.
A3 und A4 bilden eine 64-Bit-Zähleinheit.
1 zeigt das Schema der Segmentierung. Die eingetragenen
Verbindungslinien stellen lediglich dar, wo die Zwischensummen weiter verwendet
werden. Jedes Segment wird aber ab dem zugehörigen A-Register bearbeitet.
Auf den ersten Blick scheint es, als handele es sich hier um ein paralleles
Doppel-System. Tatsächlich haben je zwei nebeneinander liegende Segmente (1-2,
3-4 und 5-6) ähnliche Funktionen sowie einen ähnlichen Aufbau, sind aber
auf vielfältige Weise miteinander verflochten. Darüber wird in den nächsten
Abschnitten ausführlicher zu sprechen sein.
Wie 1 weiter zeigt, werden die Segmentreihen
1-3-5 und 2-4-6 am Ende des Zyklus vertauscht. Das Ergebnis von Segment 5 wird in
A2, das von Segment 6 in A1 abgelegt. Der letzte Wert des Zyklus wird also zum Ausgangspunkt
des nächsten Zyklus, womit eine nahtlose Endlosschleife entsteht.
Jedes Segment unterscheidet sich von allen anderen durch einen andersartigen
Aufbau mit unterschiedlichen Befehlsfolgen. Die Folge dieser Anweisungen bleibt
stets gleich; sie gehört zum unveränderlichen Teil des Systems.
Die Anweisungen selbst bestehen im wesentlichen aus dem kumulativen
Addieren aller verarbeiteten Zahlen. Nach jeder Addition werden bestimmte Funktionen
aufgerufen, die mit Abfragen verbunden sind. Sie haben den maßgeblichen Anteil
an der Bildung einer zufallsähnlichen Struktur in der Arbeitsweise des Algorithmus
von SECAL-crypt.
Die Entnahme der Codes aus verschiedenen Zwischenergebnissen ist willkürlich
festgelegt. Zum Teil werden dafür die Endsummen der Segmente verwendet, aber
auch Zwischensummen innerhalb eines Segments.
Die wesentlichen festen Bestandteile dieses Grundkonzeptes sind damit
beschrieben. Das Grundkonzept verlangt aber, daß das System eine zufallsähnliche
Struktur erhält. Ein wichtiges Argument dafür ist:
Ein Schlüsselstrom-Generator, der Pseudo-Zufallszahlen erzeugen soll, kann
dies mit Hilfe fester, unveränderlicher Formeln nur unvollkommen erreichen.
Es werden immer Regelmäßigkeiten in den Ergebnissen festzustellen sein,
welche das System z. Bsp. für One-Time-Pads ungeeignet erscheinen lassen. Solche
Regelmäßigkeiten müßten verhindert werden können, wenn
das ganze System unregelmäßig, also zufallsgerechter aufgebaut ist und
demnach auch zufallsgerechter arbeitet.
Dieser Grundsatz sollte beachtet werden. Nach diesem Prinzip wurde
SECAL-crypt konstruiert.
Der Algorithmus muß darüber hinaus imstande sein, alle Sicherheitsbelange
zu erfüllen, d. h. er muß, um für kryptographische Anwendungen geeignet
zu sein, alle angreifbaren Teile des Systems so blockieren, daß jeder Angriffsversuch
zum Scheitern verurteilt ist. Diese Maximalforderung wird bei SECAL-crypt erfüllt
(3.3. Sicherheitskonzept).
12. Das Konzept des Algorithmus
Eine zufallsgerechte Arbeitsweise des Algorithmus ist nur zu erreichen,
wenn bestimmte Prinzipien eingehalten werden, die im folgenden genannt seien:
Jede Regelmäßigkeit im Ablauf des Algorithmus ist nach Möglichkeit
zu vermeiden. Dazu müssen Funktionen eingebaut werden, welche eine Ablenkung
durch eine alternative Anwendung erlauben.
Für die Möglichkeit alternativer Anwendungen sind Kriterien
zu schaffen, nach denen eine Auswahl der Alternative erfolgen kann. Die verschiedenen
Kriterien müssen unterschiedlicher Art sein und dürfen in keinem unmittelbaren
Zusammenhang stehen.
Bei allen Anwendungen der Funktionen ist streng darauf zu achten,
daß alle Zwischenwerte gleichrangig behandelt werden. Das heißt, daß
auch jedes einzelne Bit eines Registers die gleiche Chance zur Veränderung
haben muß. Diese Chancengleichheit ist Bedingung!
Die Umsetzung dieser Prinzipien bedeutet, daß bei SECAL-crypt
alle wichtigen Funktionen, die als Teil der Gesamt-Zufallsfunktion zu betrachten
sind, durch Parameter gesteuert werden. Die Auswahlkriterien für diese Parameter
können sein: gerade/ungerade, a > b für zweiwertige Parameter. Größere
Parameter werden durch Modulo ermittelt.
Die wichtigste Funktion ist die Rundverschiebung (Rotation) eines
Registers. Sie ist nicht neu und wird in vielen bekannten Systemen angewandt. Sie
bewirkt das Verschieben der Bits, ohne jedoch die Bitstruktur zu verändern.
Bei SECAL-crypt wird diese Funktion abgewandelt: Zunächst wird
ein Register kopiert. Die Kopie wird rundgeschoben und dann zum Original addiert.
Dabei entsteht nicht nur ein neuer Zahlenwert, sondern es ändert sich auch
die Bitstruktur, was wesentlich effizienter ist als die bloße Verschiebung.
Dies ist die wichtigste Funktion des Systems. Sie ist von hoher Effizienz,
denn sie sorgt für die explosionsartige Vervielfältigung und Verbreitung
eines Bits über alle Register innerhalb eines Zyklus (Lawineneffekt). Die Addition
wird hier ausschließlich mit arithmetischem „+" statt mit XOR ausgeführt.
Das hat einen besonderen Grund:
Würde man XOR anwenden, ist zu bedenken, daß durch die Verdopplung des
Registers zunächst auch die doppelte, also gerade Anzahl Bits entsteht. Da
bei XOR aber immer nur Bitpaare herausfallen (1 XOR 1 = 0), hätten alle Ergebnisse
stets eine gerade Anzahl von (gesetzten) Bits. Das hieße, daß nur die
Hälfte aller möglichen Zahlen als Ergebnis erreicht werden könnte.
Das widerspricht jedoch der Chancengleichheit für alle Bits. Deshalb wird XOR
in diesem Fall niemals angewandt.
Für die Verschiebung eines Registers wird ein Parameter gebraucht.
Dieser kann die Werte 1 bis 31 haben, d. h. daß eine Verschiebung auf jeden
Fall stattfindet. Einen Parameter Null gibt es nicht. Die Chancengleichheit wird
auf jeden Fall gewahrt.
Die beschriebene Funktion wird 14mal innerhalb eines Zyklus angewandt.
Es werden also 14 Parameter gebraucht, welche jeweils aus dem gegenüberliegenden
Teil der Algorithmusschleife entnommen werden. Dafür sind 7 1-Byte-Register
(R1...R7) vorgesehen, die im Laufe eines Zyklus zweimal zu erneuern sind.
Die zweite Funktion betrifft 15 weitere Additionen des Algorithmus,
die wechselweise als „+" oder XOR ausgeführt werden. Dafür gibt
es die Parameter Null und Eins entsprechend der Antwort auf die Frage „a
> b?" beim Vergleich zweier Register. Von insgesamt 29 Additionen sind demnach
durchschnittlich 21-22 arithmetische und 7-8 XOR-Verknüpfungen. Dieses Verhältnis
kann auch geändert werden, allerdings ist das Gleichgewicht der Ergebnisse
zwischen Manque/Passe (ich benutze hier die beim Roulette übliche Bezeichnung)
oder gerade/ungerade dabei zu überprüfen. Normalerweise kann es jedoch
keine Schwierigkeiten geben.
Alle Arbeitsregister arbeiten übrigens als 32-Bit-Register ohne
Vorzeichen, also mit dem Höchstwert 4294.967295. Das Carry-Bit wird ignoriert,
ein Übertrag bleibt unberücksichtigt.
Eine dritte Entscheidung, die wahlweise getroffen wird, betrifft den
Schlüssel, der im nächsten Abschnitt (3.3. Sicherheitskonzept) abgehandelt
wird.
Die vierte Funktion schließlich ist die Code-Entnahme. Sie kann
auf verschiedene Weise erfolgen. Bei konsequenter Anwendung der festgelegten Prinzipien
wäre es folgerichtig, diese wichtige Funktion so durchzuführen, daß
aus allen Zwischensummen, die alle den gleichen Rang haben, also nach jeder Addition
oder Schiebefunktion, durch Parameter-Steuerung wahlweise einzelne Bits herausgeholt
und zu 8-Bit-Codes zusammengestellt werden (3.5. Code-Entnahme).
Diese Möglichkeit wurde zunächst nicht zugelassen, weil
sie sehr kompliziert ist und – zumindest auf dem Taschenrechner –
eine große Zeitverzögerung mit sich bringt.
In der vorliegenden Fassung erfolgt die Code-Entnahme aus den bereits
beschriebenen Registern. Zum einen werden diese ebenfalls nach Parameter randgeschoben,
allerdings ohne Verdopplung oder Addition. Die Verschiebung bewirkt nur die Auswahl
eines Abschnitts von 8 Bit, der damit ans Ende der Zahl gebracht und durch Modulo
2 bis 256 extrahiert wird. Das betrifft die Ausgabe von zwölf Codes. Zwölf
weitere Codes werden nach dem komplizierteren Verfahren bitweise ermittelt, das
in Abschnitt 3.5. (Seite 14) beschrieben ist.
Die Wahlmöglichkeit zwischen 2 bis 256 Codes bedeutet, daß
SECAL-crypt nicht ausschließlich für kryptographische
Arbeiten gedacht ist, sondern auch für alle anderen Zwecke, für die Zufallszahlen
benötigt werden, zur Verfügung steht.
Die Code-Entnahme ist übrigens die einzige Funktion, die keinerlei
Einfluß auf den Algorithmus hat. Die anderen Funktionen haben indessen einen
erheblichen Einfluß, auch auf die Zahlenverteilung. Eine weitere Vervielfachung
dieser Einflüsse ergibt sich durch zahlreiche Rückkopplungen, zum Teil
auch zyklusübergreifend.
Die Größenvergleiche zweier Register beziehen sich z. Bsp.
meistens auf eine aktuelle Zwischensumme und ein A-Register oder einen Zwischenspeicher
des vorherigen Zyklus. Auch die Parameter der R-Register für das Rundschieben
werden teilweise im Zyklus davor gebildet. Alle diese Register müssen deshalb
auch berücksichtigt werden bei der Beschreibung des inneren Zustands des Generators
unmittelbar vor Beginn eines neuen Zyklus.
Jeder Parameter nimmt also Einfluß auf den weiteren Verlauf des
Systems und auf alle anderen Parameter. Es entstehen somit laufend neue Rückkopplungseffekte.
Allein sie haben schon einen beträchtlichen Anteil am Sicherheitskonzept von
SECAL-crypt, indem sie mit verhindern, daß der Algorithmus rückwärts
gerechnet werden kann. Hinzu käme für diesen Fall allerdings noch die
große Anzahl 32-Bit-Register, die zu überwinden wäre.
3.3. Das Sicherheits-Konzept
Die angreifbaren Teile eines Chiffrier-Systems sind der Schlüssel,
der Algorithmus, die Codes und alle Texte (Chiffre-Text mit Klartext). Diese Angriffspunkte
sind möglichst vollständig zu blockieren.
3.3.1. Der Schlüssel
Grundsätzlich ist es immer möglich, einen Brute-Force-Angriff
auf den Schlüssel zu unternehmen. Ob eine Erfolgsaussicht besteht, hängt
von der Größe des Schlüssels und der verfügbaren Rechenkapazität
ab. Während der derzeitige Standard DES teilweise immer noch mit nur 56 Bit
arbeitet, obwohl dies längst als zu wenig angesehen wird, hat SECAL-crypt einen
180-Bit-Schlüssel. Eingegeben wird er als 54stellige Dezimalzahl.
Ein Brute-Force-Angriff wäre nutzlos. Um alle Möglichkeiten
des 180-Bit-Schlüssels von SECAL-crypt innerhalb von 20 Milliarden Jahren durchzuprüfen,
benötigt man eine Rechenleistung von
1,5844 mal 1036 Einzelprüfungen pro Sekunde
mit jeweils einem kompletten Zyklus. Von daher ist der Schlüssel als sicher
zu bezeichnen. Um ihn ganz sicher zu machen, ist folgende Überlegung anzustellen:
Der Schlüssel wird im allgemeinen bitweise verarbeitet und nach festen Vorgaben
verändert und kann durchaus angreifbar sein, auch über den Algorithmus
oder über Vergleich und Analyse von Texten. Die Argumentation kann demnach
so lauten:
Wenn in jedem Zyklus der gesamte Schlüssel in den Algorithmus einbezogen wird,
kann der innere Zustand des Generators zu einem bestimmten Zeitpunkt nicht mehr
ermittelt werden, weil der Angreifer den Schlüssel nicht kennt. Er will den
Schlüssel selber durch seinen Angriff erst herausbekommen, müßte
ihn aber vollständig wissen, um einen Angriff überhaupt durchführen
zu können. Das ergibt einen unlösbaren Widerspruch!
Bei SECAL-crypt wird also der gesamte Schlüssel auf die Segmente
aufgeteilt und bildet nach Übertrag in die A-Register die Anfangswerte der
Segmente. Er wird aber auch als ständiger Summand im Algorithmus Bestandteil
des inneren Zustands des Generators und damit unüberwindbares Hindernis für
einen Angriff auf den Algorithmus.
Der Schlüssel selber – ich will ihn schon vorweg als System-Schlüssel
bezeichnen – wird nur unverändert mit seinem Originalwert verwendet.
Dadurch identifiziert der Schlüssel eindeutig die eine Codierung und macht
sie von allen anderen Codierungen unterscheidbar. Gleichläufe wie bei verschiedenen
Schlüsseln, die sich immer wieder verändern, können im System nicht
auftreten.
3.3.2. Der Algorithmus
Die Komplexität des Algorithmus ist allein schon fast eine Garantie
dafür, daß ihn niemand knacken kann. Da keinerlei Formeln verwendet werden
und der Algorithmus unaufhörlich sich ändert, wenn auch nur in Einzelheiten,
die jedoch den weiteren Verlauf mitbestimmen, besteht keine Chance für einen
Angreifer. Das stärkste Hindernis bleibt aber die Installierung des gesamten
Schlüssels in jedem Arbeitszyklus.
Ein Angreifer hat keine Möglichkeit, den Algorithmus zu knacken,
da es für ihn keine Formel geben kann, nach der eine auch nur teilweise Rückrechnung
gelingen könnte. Das verzweigte Netz der Rückkopplungen läßt
das nicht zu. Der Algorithmus ist nur in einer Richtung rechenbar. Zusammen mit
dem unbekannten Schlüssel sind dies unüberwindbare Barrieren. Der innere
Zustand des Generators ist nicht herzustellen.
3.3.3. Textvergleiche
Texte können nur verglichen und analysiert werden, solange eine
Chiffrierung mit dem selben Schlüssel erfolgt. Denn Vergleich und Analyse sind
nur dann möglich, wenn die Texte eine Vergleichsbasis haben. Also lautet die
Forderung: Es ist dafür zu sorgen, daß keine Vergleichsbasis existiert.
Ein One-Time-Pad bietet keine solche Basis.
So ergibt sich zwangsläufig die Alternative eines One-Time-Pad-Systems.
Dieses soll aber trotzdem mit dem gleichen Systemschlüssel arbeiten können.
Daraus leitet sich die weitere Forderung nach einem zweiten Schlüssel ab.
SECAL-crypt setzt die Idee mit Hilfe eines „Modifikators" um.
3.3.4 Der Modifikator
Der Systemschlüssel wird also bei jeder zur Chiffrierung bestimmten
Codierung modifiziert. Der Modifikator ist quasi der zweite Schlüssel. Er hat
die gleiche Größe wie der Systemschlüssel, nämlich 180 Bit und
wird ebenfalls in 6 Segmente (M1...M6) aufgeteilt.
Damit steigt die Komplexität des Systems um eine weitere Stufe,
doch die Argumentation hilft, die Zusammenhänge und Notwendigkeiten trotzdem
zu verstehen. Hier wird ein deutlicher Vorteil gegenüber der rein mathematisch
basierten Methode sichtbar. Denn verständliche Argumente können auch den
Skeptiker eher überzeugen als eine für die Meisten unverständliche
Formelsprache. Der Anwender braucht auch hier mehr Sicherheit.
Der Modifikator muß keine Zufallszahl sein wie der Systemschlüssel,
der unbedingt zufällig erzeugt werden sollte, denn im Gegensatz zum geheimen
Systemschlüssel ist der Modifikator öffentlich und wird unverschlüsselt
im Header einer Datei übertragen.
Die Funktion des Modifkators ist, den Wert des Schlüssels bei
jeder Chiffrierung zu ändern. Er kann mit dem internen Zahlen-Generator des
Betriebssystems des Rechners automatisch erzeugt werden. Man könnte die Zahlen
auch beliebig aus der Zeitung entnehmen oder irgendwoher. Die Qualität spielt
hier keine Rolle.
2 zeigt, daß sich im Vorlaufprogramm nun eine Kleinigkeit
ändert: Nach der Blockade der Tastatur werden zuerst die Segmente
des Modifikators generiert und gespeichert, bevor der Systemschlüssel geladen
wird.
Im zweiten Schritt werden Schlüsselsegmente und Modifikatorsegmente
addiert (M1+K1...)
Drittens werden die Summen in neu einzurichtende Register (L1...L6)
abgelegt. Dies ist der modifizierte Schlüssel, der viertens in die Arbeitsregister
(A1...A6) übertragen wird und deshalb als Arbeitsschlüssel bezeichnet
wird. Die modifizierten Schlüsselelemente stellen somit letztendlich die Anfangswerte
der Segmente dar.
Es gibt jetzt für jedes Segment zwei Schlüsselregister,
das K-Register mit dem Systemschlüssel und das L-Register mit dem (modifizierten)
Arbeitsschlüssel. Beide Register enthalten echte Zufallswerte, denn wenn der
Systemschlüssel ein Zufallswert ist, muß auch der modifizierte Wert ein
Zufallswert und demnach auch geheim sein.
Also sind K-Register und L-Register gleichwertige Schlüsselelemente.
Entsprechend werden sie eingesetzt. Zu den bereits beschriebenen Funktionen (Seite
8) ist jetzt noch eine Funktion nachzutragen. Die beiden Schlüsselelemente
K und L werden, je nach dem Zustand eines Registers (gerade/ungerade), abwechselnd
in den Algorithmus übernommen. Beim Schlüssel wird also geprüft,
ob das K-Element oder L-Element verwendet werden soll. Außerdem wird nach dem
Kriterium a > b zweier Register geprüft, ob das gewählte Schlüsselelement
mit XOR oder „+" zu addieren ist.
Die Einführung des Modifikators bewirkt eine entscheidende Wandlung
des Systems: Vor jeder neuen Chiffrierung wird nunmehr automatisch ein neuer Modifikator
erzeugt, so daß jede Chiffrierung, auch mit dem gleichen Text, mit einer anderen
Codierung erfolgt.
Beide Schlüssel-Typen K und L bleiben indessen während einer
Codierung unverändert. Sie werden immer mit ihren Originalwerten benutzt. Auch
das bringt Vorteile im Zusammenwirken mit dem Zähler (siehe nächster Abschnitt
3.4.).
Die Sicherheit ändert sich durch den Modifikator nicht. Sie bleibt
bei 1054. Zwar sind die modifizierten L-Werte ebenfalls Zufallswerte,
doch ist ein L-Wert nur die Summe aus dem K-Wert und dem Modifikator. Dieser aber
ist bekannt. Für die Sicherheit zählt deshalb immer nur der geheime Systemschlüssel.
Mit dieser Konstruktion ergibt sich automatisch der One-Time-Pad-Modus
von SECAL-crypt.
Das eröffnet ganz neue Möglichkeiten (s., Kapitel 5 und
6).
3.4 Der Zähler
Der Mittelteil des Systems (Segmente 3 und 4) bildet eine 64-Bit-Zähleinheit.
Der Zähler garantiert, daß während der Zählung im System keine
Periode auftreten kann. Das ist bekannt und braucht nicht erläutert zu werden.
Diese Garantie umfaßt mindestens 9,8568 Trillionen Zyklen mit 236,5632 Trillionen
Codes (24 Codes Ausgabe) bzw. 118,2816 Trillionen Codes (12 Codes Ausgabe)!
Da der Zähler sich immer nur um Eins erhöht, bilden die
Arbeitsregister A3 und A4 eine Ausnahme im System, denn sie verändern sich
nur geringfügig. A3, das als höherwertiger Teil mit 232 zu
multiplizieren ist, verändert sich nur bei einem Übertrag aus A4. Deshalb
muß vor jeder Zählung das Carry-Bit, das sonst unbeachtet bleibt, gelöscht
werden. A3 und A4 werden nicht als gleichrangige Register betrachtet und sind nicht
für die Bildung von Parameter oder für eine Code-Entnahme geeignet.
Die Zählfunktion hat aber noch einen besonderen Effekt. Sie übernimmt
eine wichtige weitere Funktion, die sich sehr vorteilhaft auswirkt. Zusammen mit
der Schlüsselfunktion wird sichergestellt, daß nicht nur keine Perioden
entstehen können, sondern daß jede Codierung einmalig ist und bei der
großen Anzahl von Möglichkeiten kein Gleichlauf verschiedener Code-Reihen
auftreten kann. Das soll erklärt werden:
Der Zähler wird durch beide Schlüsselarten definiert. Die Schlüssel
ihrerseits sind auch durch den Zähler definiert, denn Zählerstand minus
Anzahl der Zyklen ergibt den Arbeitsschlüssel, aus dem mit Hilfe des bekannten
Modifikators eindeutig der Systemschlüssel hervorgeht. Zähler und die
Schlüsselteile sind untrennbar miteinander verbunden, und für jede Schlüssel-Kombination
gibt es einen eindeutigen Zähler, der durch beide Schlüsselteile ständig
identifiziert wird.
Ein gleich großer Zähler kann zwar mehrfach auftreten, da
viele Kombinationen des Systemschlüssels und des Modifikators die gleiche Summe
und mithin den gleichen Arbeitsschlüssel bilden. Aber beide Summanden werden
in den Zähler-Segmenten immer wieder neu definiert.
Ein Beispiel: Wäre der Systemschlüssel = Null, der Modifikator
= 999.999.999 (Höchstwert!), so entspricht der Arbeitsschlüssel dem Wert
des Modifikators, und auch der Zähler hätte diesen Anfangswert 999.999.999.
Den gleichen Wert erhält der Zähler, wenn die genannten Werte vertauscht
werden, der Systemschlüssel also den Höchstwert und der Modifikator den
Wert Null erhält.
Im ersten Fall haben die Schlüsselelemente, welche im Segment
verarbeitet werden, die Werte Null und 999.999.999 (System- und Arbeitsschlüssel).
Im zweiten Fall betragen sie beide 999.999.999, während der Modifikator den
Wert Null hat. Es werden also in beiden Fällen verschiedene Schlüsselwerte
im Algorithmus verarbeitet. Daraus folgt:
Ein Gleichlauf verschiedener Codierungen ist an keiner Stelle möglich. Zähler
und beide Schlüssel der Segmente 3 und 4 definieren sich gegenseitig. Da bei
gleichem Zähler, aber unterschiedlichen Schlüsseln das System abwechselnd
auch mit unterschiedlichen Werten arbeitet, muß es auch unterschiedliche Codierungen
hervorbringen. Das heißt, daß jede Schlüsselkombination einmalige
Ergebnisse hat und sich mit keiner anderen überschneiden kann.
Was bei dem Zähler in einleuchtender Weise erklärbar ist,
gilt im Prinzip für alle Segmente, auch wenn diese mit rasch wechselnden Werten
arbeiten, die nicht unmittelbar mit den Summanden im Zusammenhang stehen.
Für alle Segmente gilt, daß bei gleich großen Summen,
aber unterschiedlicher Aufteilung von Systemschlüssel und Modifikator ebenfalls
unterschiedliche Schlüsselwerte als Summanden entstehen (System- und Arbeitsschlüssel),
so daß die Bedingungen der Zählersegmente auch auf die Segmente ohne Zählfunktion
übertragen werden können.
Da es für jede der 1054 Möglichkeiten des Systemsschlüssels
eine gleich große Anzahl von Kombinationen mit dem Modifikator gibt, bedeutet
dies:
SECAL-crypt kann 10108 unterscheidbare Codierungen erzeugen!
Das Konzept für die Funktion des Algorithmus ist damit eigentlich
vollständig beschrieben. Der letzte Schritt, die Entnahme der Codes, hat keinerlei
Einfluß auf den Algorithmus. Er steht außerhalb des Programmaufbaus. Er
ist aber auch Endglied der Kette zufallsähnlicher Ereignisse, sozusagen –
um auf dieses Beispiel zurückzukommen – das Auftreffen der Roulettekugel
auf den gegenläufigen Zahlenkranz. Deshalb muß die Wichtigkeit dieses
Ereignisses besonders beachtet werden.
3.5. Die Codes3.5.1. Die Code-Entnahme
Es gäbe eine ganze Reihe von Möglichkeiten, die Codes zu
entnehmen. Im vorliegenden Dokumentationsprogramm wurde – aus Mangel an Speicherplatz
– zunächst eine einfache Art gewählt mit nur 8 Zeichencodes als
Ausgabe. Diese wurden u.a. aus Zwischenspeichern bzw. Endregistern der Segmente
entnommen. Diese Register sind auch Zwischenspeicher für die weitere Verwendung
der Daten und verbinden die Segmente.
Es gibt insgesamt 6 Zwischenspeicher (Z1...Z6), wovon die Register
Z5 und Z6 zusätzliche, bisher nicht erwähnte Rückkopplungen im laufenden
Zyklus sind. Nur Z1 bis Z4 sind die Endsummen der Segmente 1 bis 4, aus denen die
ersten Codes stammten. Die letzten vier Codes wurden aus den Segmenten 5 und 6 entnommen,
jeweils einer aus der Mitte (Unterteilung der Segmente) und aus den Endsummen, welche
gleichzeitig als neue Anfangswerte in A1 und A2 eingesetzt werden. Letztere sind
in keinem Zwischenspeicher abgelegt, sondern werden direkt in die A-Register übertragen.
Diese Aufteilung ist recht willkürlich. Das eigentliche Konzept
für die Entnahme der Codes sieht dagegen anders aus, ist allerdings auch sehr
aufwendig, wenn das Prinzip des Algorithmus voll zum Tragen kommen soll.
Gehen wir davon aus, daß die eingebauten Zufallsfunktionen ihren
Zweck erfüllen, so müßten alle Zwischensummen,
da sie gleichrangig sind, die gleichen Voraussetzungen für eine Code-Entnahme
bieten. Es wäre demnach völlig nebensächlich, welche Register dafür
zur Verfügung zu stellen sind. Die Konsequenz daraus heißt:
Man kann aus allen gleichrangigen Zwischenergebnissen Bits entnehmen und sie zu
Codes zusammenfügen. Diese Funktion sollte ebenfalls durch Parameter gesteuert
werden.
Nach diesem Konzept ist die Code-Entnahme zu gestalten. Es werden
nun in einem Zyklus aus 24 Zwischensummen Codes gebildet. Zwölf Codes werden,
wie auf Seite 8 beschrieben, durch Rundschieben eines Registers und anschließendem
Modulo ermittelt. Diese sind für die einfache Ausgabe (12 Codes, Code-Reihe
2) vorgesehen. Für die Chiffrierung werden 12 weitere Codes in einem gesonderten,
parametergesteuerten Programmteil bitweise zusammengestellt (Code-Reihe 1), wobei
jedes der 8 Bits nach einem anderen Parameter ausgewählt wird. Diese Codes
werden zusammen mit den anderen 12 Codes verwendet.
Um einen starken Effekt zu erzielen, sollte die Anzahl der auszuwählenden
Parameter eine Primzahl sein, damit der Anfang des Parameter-Zyklus immer mit wechselnden
Parametern beginnt. Zur Auswahl werden die bisherigen Parameter sowie einige Parameter-Summen,
die auch als Prüfzahlen dienen, in einer Mischung zusammengestellt. Es sind
11 Parameter, die in einer festen Schleife rotieren (s. Programm Seite 27).
Schließlich werden die Codes der Reihe 1 doppelt codiert, indem
sie mit den letzten Codes der Reihe 2 nach einem frei gewählten Schema verbunden
werden, wie aus 3 zu ersehen ist. Dafür werden Codes der Reihe
2 aus dem letzten Zyklus, teilweise aber auch aus dem aktuellen Zyklus verwendet
(Codes 2 bis 10).
Figur 3: Doppel-Codierung
Die Doppelcodierung wird nur für die Reihe 1 angewandt, also
bei der Ausgabe von 24 Codes, während die Reihe 2 nur einfach codiert wird.
Das wird damit begründet, daß beide Reihen auf ganz unterschiedliche Weise
entstehen und durch die Doppelcodierung eventuelle Regelmäßigkeiten in
der Codefolge beseitigt werden können.
Da bei Chiffrierungen stets beide Reihen verwendet werden, macht die
teilweise Doppelcodierung also durchaus Sinn, denn sie verhilft einem echten One-Time-Pad
zur vollen Berechtigung für dieses System.
Eine Doppelcodierung der Reihe 2 ist dagegen nicht sinnvoll. Sie wäre
bei 24 Codes Ausgabe nur unwirtschaftlich; bei 12 Codes Ausgabe könnte sie
nur mit Codes der gleichen Reihe kombiniert werden, was keinen Vorteil bringt.
Für die Sicherheit ist Doppelcodierung nicht erforderlich. Die
einfache Codierung ist hinreichend gegen Angriffe abgesichert, da bei Chiffrierungen
nur die Chiffrecodes nach außen dringen können. Die Chiffre-Datei könnte
man aber auch mit der Post verschicken.
3.5.2 Die Code-Ausgabe
In der aktuellen Fassung werden 12 oder 24 Zeichen-Codes ausgegeben.
Diese sind, wie schon erwähnt, bei der Ausgabe von 24 Codes teilweise doppelt
codiert. Beide Codereihen werden dann ineinander verschachtelt ausgegeben.
Eine weitere Möglichkeit der Ausgabe ist vorgesehen für
Zwecke, bei denen der Anwender selber bestimmen möchte, welche Art Codes er
benötigt, z. Bsp. Zufallszahlen, die größer als ein Byte sind. In
diesem Fall kann er zwölf 32-Bit-Register sich ausgeben lassen. Diese Version
ist jedoch im vorliegenden Dokumentations-Programm nicht enthalten.
4. Wirkungsweise des Systems
Die Wirkungen von SECAL-crypt werden vor allem von seiner zufallsähnlichen
Arbeitsweise bestimmt. Die wird hervorgerufen durch die Zufallsfunktionen des Algorithmus.
Die Unregelmäßigkeiten im Ablauf der Additionen durch die ständig
neue Entscheidung zwischen "+" und XOR, der gleichfalls unregelmäßige
Wechsel zwischen K- und L-Register (Schlüssel) zwingen den
Algorithmus in eine unruhige, oszillatorische Bahn, die zudem andauernd durch die
Rotations-Funktion gestört wird.
Die Effizienz der Rotation, die ja auch eine Addition beinhaltet,
kann durch das folgende Beispiel demonstriert werden:
Der Algorithmus kann auch ohne Schlüssel arbeiten. Zu diesem experimentellen
Zweck wurden sämtliche Register gelöscht. Lediglich die ersten 7 Parameter
R1...R7, welche fest im Programm vorgegeben sind, müssen bleiben, weil sonst
keine Verschiebung stattfinden kann.
In dieser Nullstellung, die ja theoretisch auch eine der 10108
Möglichkeiten aller Schlüssel-Kombinationen darstellt, arbeitet der Algorithmus
zunächst leer und gibt die Codes „Null" aus. Das einzige Bit, welches
das System antreibt, kommt von dem Zähler A4 in der zweiten Hälfte des
Zyklus. Es wird durch die Rotationen (mit Addition) rasend schnell vervielfacht
und es füllt die Register bis zum Ende des Zyklus mit insgesamt 66 Bits (s.
Seite 69, 1. Zyklus)! Dieser Effekt garantiert, daß jede Änderung eines
Bits sofort eine rasante Wirkung auf den gesamten Algorithmus ausübt und jedes
Bit aller Register innerhalb eines Zyklus tangiert.
Bereits ab dem zweiten Zyklus funktioniert diese Nullversion ganz
normal, und alle Register sind durchschnittlich mit Bits angefüllt, obwohl
das System nicht mit voller Kraft arbeiten kann, da alle Schlüsselregister
gelöscht sind und eine Addition mit Null verursachen.
Die Ausdrucke der Nullversion sind in der Dokumentation zu finden
und demonstrieren ein normales Verhalten des Systems. Grundsätzlich muß
aber bei Chiffrierungen immer mit Schlüssel gearbeitet werden. Nur dann gibt
der Algorithmus dem Anwender auch Sicherheit. Die 54 Stellen des Schlüssels
sollten immer voll ausgenutzt werden.
Das Zusammenwirken der einzelnen Funktionen geschieht reibungslos.
Sie brauchen nicht aufeinander abgestimmt zu werden, denn sie sind es bereits durch
das übereinstimmende Prinzip der Gleichrangigkeit und Chancengleichheit, das
allen Funktionen zu eigen ist. Die Funktionen ergänzen sich deshalb problemlos.
SECAL-crypt stellt sich automatisch auf einen zufallsähnlichen Gleichgewichtszustand
ein.
Die Register und Zwischensummen sind allesamt durchschnittlich mit
Bits gefüllt, die Verteilung der Bits entspricht ebenfalls dem Durchschnitt.
Das wird in der Dokumentation deutlich gezeigt.
Das sind auch die Voraussetzungen für eine zufallsgleiche Verteilung
der Codes, die somit erfüllt werden.
Dies wird ebenfalls durch die Dokumentation bestätigt. Häufigkeit
und Verteilung der Codes entsprechen den statistischen Erwartungen. Dieser Effekt
stellt sich sozusagen automatisch ein und ist, wie sich gezeigt hat, um so stärker,
je unregelmäßiger das System arbeitet.
5. Die Chiffrierung
Der One-Time-Pad-Modus von SECAL-crypt gestattet eine vom Klartext
unabhängige Arbeit des Systems. Seine Codes werden ohne Einfluß des Klartextes
ermittelt. Das heißt, daß die Code-Folge nur vom Schlüssel abhängt
und mit gleicher Schlüssel-Kombination immer die selbe ist, unabhängig
davon, wie der zu verschlüsselnde Text lautet.
Die Chiffrierung durch Verknüpfung der Code-Datei mit dem Klartext
mittels XOR findet außerhalb des Algorithmus statt. Da hier eine zeitliche
Trennung erfolgt, ist es möglich ist, im voraus die Codes zu generieren, um
bei Fertigstellung des Textes die schnellstmögliche Chiffrierung zu erhalten.
Merke: Bis zur erfolgten Chiffrierung muß die Tastatur blockiert sein! Die
Dechiffrierung erfolgt auf die gleiche Weise wie die Chiffrierung. Der einzige Unterschied
ist, daß kein neuer Modifikator generiert, sondern der gleiche Modifikator
benutzt wird, der unverschlüsselt im Header der Chiffre-Datei enthalten ist
und mit ihr übertragen wird.
SECAL-crypt tut demnach nichts anderes als nur Codes bzw. Zufallszahlen
zu produzieren. Was der Anwender damit anfängt, ist seine Sache. Er kann damit
Daten verschlüsseln, oder er kann nach Belieben die Zahlen-Codes für irgendwelche
anderen Zwecke benutzen.
Damit ist schon alles über die Chiffrierung und Dechiffrierung
gesagt. Sie ist unkompliziert und schnell. Auch wenn der Zeitfaktor bei SECAL-crypt
gegenüber anderen Systemen vielleicht ungünstig erscheint: Die Möglichkeit
der Codierung im voraus macht diesen scheinbaren Nachteil mehr als wett.
6. System-Eigenschaften und Leistungen
Die besondere Konstruktion von SECAL-crypt besitzt außergewöhnliche
Eigenschaften und bringt außergewöhnliche Leistungen hervor, die hier
noch einmal zusammengefaßt werden.
SECAL-crypt generiert Pseudo-Zufallszahlen nach einer neuen Methode,
die einen unregelmäßigen, oszillierenden Verlauf des Algorithmus zur Folge
hat. Die Zahlen sind für verschiedene Zwecke verwendbar und eignen sich vor
allem hervorragend zur Chiffrierung von Daten.
SECAL-crypt ist für alle 32-Bit-Systeme geeignet.
SECAL-crypt arbeitet mit einem 180-Bit-Schlüssel. Er könnte
nur durch einen Brute-Force-Angriff geknackt werden – bei einer Rechenleistung
von 1,5844 × 1036 Prüfungen/Sekunde innerhalb von 20 Milliarden
Jahren. Der Schlüssel ist sicher! SECAL-crypt besitzt einen 180-Bit-Modifikator,
mit dem der Schlüssel bei jeder Codierung neu modifiziert wird. Zwei gleiche
Codierungen sind ausgeschlossen.
SECAL-crypt besitzt einen 64-Bit-Zähler, mit dem ein periodenfreier
Lauf von mindestens 9,8568 Trillionen Zyklen garantiert wird.
SECAL-crypt kann in einem Zyklus 12 bzw. 24 Zeichen-Codes oder insgesamt
12 vollständige 32-Bit-Register ausgeben.
Bei Ausgabe von 24 Codes liefert SECAL-crypt teilweise doppelt codierte
Codes. Diese Codierungsform ist für alle Anwendungen gedacht, aber für
die Sicherheit nicht erforderlich. Sie vermeidet das Auftreten von Regelmäßigkeiten
in der Codefolge.
Der Code-Umfang kann von 2 bis 256 eingestellt werden. Für Chiffrierungen
sind 128 oder 256 Codes vorgegeben. Der Anwender kann selber entscheiden, wofür
er die Codes benutzen will, ob für Chiffrierung, statistische oder andere Anwendungen.
SECAL-crypt arbeitet im One-Time-Pad-Modus. Infolge der Modifizierung
des Schlüssels ist jede Codierung neu und einmalig. Für Chiffrierungen
ist dieser Modus obligatorisch.
Für individuelle Anwendungen kann der Modifikator abgeschaltet
werden und gestattet dann das wiederholte Arbeiten mit der gleichen Codierung.
SECAL-crypt könnte auch für Block-Chiffrierungen eingesetzt
werden, indem jeder Block eine eigene Chiffrierung erhält.
Der Algorithmus von SECAL-crypt arbeitet völlig unabhängig
vom Klartext, der nicht in den Algorithmus eingebunden ist. Das wird durch den One-Time-Pad-Modus
ermöglicht.
Die vom Text unabhängige Arbeitsweise gestattet für eilige
Chiffrierungen eine Vorausberechnung der Codes. Die Code-Datei kann dann sofort
mit der fertiggestellten Klartext-Datei mittels XOR verknüpft werden. Überzählige
Codes werden einfach vernichtet. Damit wird die schnellstmögliche Chiffrierung
erreicht.
SECAL-crypt kann 10108 (!) unterschiedliche Codierungen
erzeugen, die eindeutig unterscheidbar sind. Ein Parallellauf verschiedener Codierungen
ist ausgeschlossen.
SECAL-crypt decodiert nur fehlerhafte Codes falsch. Danach ist das
System sofort wieder synchronisiert.
Die Sicherheit von SECAL-crypt hängt nur vom Schlüssel ab.
Der Algorithmus ist nicht angreifbar, weil infolge der Verwendung des gesamten Schlüssels
im Algorithmus der innere Zustand des Generators nicht hergestellt werden kann.
Die Chiffre-Texte eines One-Time-Pad sind für Vergleiche und Analysen unbrauchbar,
da sie keine gemeinsame Basis haben, sondern Unikate sind.
7. Flexibilität
SECAL-crypt ist in jeder Hinsicht ein äußerst flexibles
System. Das betrifft nicht nur die Möglichkeiten, es nach Bedarf und Anwendungsbereich
einzustellen.
Auch der Algorithmus könnte vielfach verändert werden. Zum
Beispiel könnte er durch Vergrößerung des Zählers auf 192 Bits
auf einfache Weise praktisch periodenfrei gemacht werden, indem die Segmente 1,
2, 5 und 6 zusätzliche Zählregister erhalten. Es gäbe eine Vielzahl
von Möglichkeiten, diesen Algorithmus abzuwandeln, ohne das Prinzip zu ändern.
Wesentlich ist nur, daß bei jeder Änderung die Prinzipien
von SECAL-crypt eingehalten werden, insbesondere die der Unregelmäßigkeit,
Gleichrangigkeit und Chancengleichheit.
SECAL-crypt sollte nicht dort geändert werden, wo der Sicherheitsbereich
betroffen ist. Teile des Systems sind durchaus veränderbar, doch die im einzelnen
aufgestellten Regeln des Systems sind in jedem Fall dabei zu beachten.
Es kann gesagt werden, daß jeder Algorithmus, der nach den Prinzipien
des SECAL-crypt-Systems konstruiert worden ist, auch ein SECAL-crypt-Algorithmus
sein muß, mithin also ein SEcure Coding ALgorithm.
8. Anwendungs-Möglichkeiten
SECAL-crypt ist ein sehr anpassungsfähiges System, das für
viele Zwecke nützlich sein kann, und zwar mit höchster Sicherheit.
So steht denn auch die kryptographische Anwendung im Vordergrund der
Idee für dieses System. Dabei kommt der One-Time-Pad-Modus des Systems vor
allem dem wirtschaftlichen und industriellen Anwendungsbereich entgegen. Mit SECAL-crypt
können geheimste Informationen über Produkte, neue technische Verfahren,
aber auch interne Management-Kommunikation sowie alle Interna eines Betriebs oder
Konzerns mit höchstmöglicher Sicherheit für die Anwender chiffriert
werden.
Anwendungen im Forschungsbereich sind ebenso denkbar wie für
geheimes Datenmaterial in allen Branchen des allgemeinen geschäftlichen Bereichs.
Solche Anwendungen können auch dann sinnvoll sein, wenn im intemationalen
Geschäftsverkehr das offizielle Standard-System DES verwendet wird.
Besonders wenn höchste Sicherheit gefordert wird, kann ein echter
One-Time-Pad, dessen Schlüssel nach Gebrauch sofort vernichtet wird und keinen
Eingang in die Schlüsselverwaltung findet, von SECAL-crypt übernommen
werden. Der Umfang der Information spielt dabei keine Rolle.
Wenn auch der Zeitfaktor für SECAL-crypt nicht so günstig
ist wie bei anderen Systemen, welche direkt verschlüsseln, wird dieses Defizit,
das der Sicherheit dient, wettgemacht durch die Möglichkeit der Vorausberechnung
der Codes. Die dann zu tätigende Chiffrierung ist, wie schon erwähnt,
die schnellste, die es gibt, weil sie nur aus der Verbindung zweier Dateien besteht.
Nicht nur im Geschäftsbereich, sondern auch privat ist SECAL-crypt
anwendbar. Es könnte außerdem für Spiele und alle Anwendungen, welche
Zufallswerte benötigen, eingesetzt werden.
Die Art der Anwendung richtet sich auch nach den Möglichkeiten
der Implementierung. Diese dürften infolge der Tatsache, daß SECAL-crypt
nur die fertigen Codes liefert und direkt keine Chiffrierung vornimmt, relativ vielfältig
sein.
Auch Hardware-Implementierung ist denkbar. SECAL-crypt könnte
für die verschiedensten Aufgaben als Modem verwendet werden.
Im übrigen möchte ich diesen Möglichkeiten nicht vorgreifen
und überlasse dies Experten, die entsprechende Erfahrung haben und sicher noch
die eine oder andere Möglichkeit zur Anwendung finden werden.
9. System-Vergleich
Das Konzept von SECAL-crypt unterscheidet sich in wesentlichen Besonderheiten
von allen anderen, bisher bekannten Systemen. Die eigentlichen Unterscheidungsmerkmale
sind die folgenden:
Das Konzept ist nicht vergleichbar mit dem der auf der mathematischen Theorie fußenden
Systeme, welche mit festen Formeln oder nach einem starren Schema arbeiten.
Neu ist die Steuerung des Systems durch Parameter, durch die ein oszillierender
Algorithmus entsteht, welcher gleichermaßen bisher in anderen Systemen nicht
zu finden ist.
Neu ist die Art der Verwendung des Schlüssels. Es ist kein System
bekannt, das den Schlüssel in jedem Zyklus in den Algorithmus einbindet und
den gesamten Schlüssel damit zum Bestandteil des inneren Zustands des Generators
macht.
Neu ist auch die Verwendung eines Modifikators als zweiter öffentlicher
Schlüssel in einem Stromchiffre-Generator.
Neu ist ebenfalls das aus der Konstruktion heraus sich ergebende One-Time-Pad-System.
Auch das hat kein anderer Stromchiffre-Generator zu bieten.
Neu sind hier eingesetzte Funktionen wie die Rotation mit Addition,
die eine wesentlich höhere Effizienz besitzt als gebräuchliche Register-Verschiebungen.
Neu ist auch die Code-Entnahme und die Aufteilung in zwei Arten von
Codes, welche auf unterschiedliche Weise gebildet werden.
Das sind die wichtigsten Neuerungen Mit diesen Grundbausteinen unterscheidet
sich SECAL-crypt radikal von bisherigen Systemen und stellt somit ein völlig
neues Verfahren dar.
Die Einzelheiten des Sytemaufbaus gegenüber den gängigen
Systemen sind so verschieden, daß es schwer ist, Vergleichsmöglichkeiten
zwischen so unterschiedlichen Konstruktions-Prinzipien zu finden. Auch das überlasse
ich gern den Experten.
TEIL BDAS ALGORITHMUS – PROGRAMM10. Allgemeines
Das vorliegende Programm ist ein Dokumentations-Programm für
einen möglichen Algorithmus nach dem SECAL-crypt-System. Das heißt, daß
dieser Algorithmus alle Kriterien erfüllt, die von SECAL-crypt gefordert werden.
Es sind dies die Grundprinzipien der Unregelmäßigkeit (oszillierende Arbeitsweise),
Gleichrangigkeit aller Register und der Chancengleichheit aller Bits.
Dieser Algorithmus erfüllt auch die Forderungen nach Verwendung
des Systemschlüssels als Bestandteil des inneren Zustands des Generators. Der
Schlüssel wird in jedem Zyklus vollständig verwendet und bildet mit einem
gleich großen Modifikator bei jeder Codierung einen neuen Arbeitsschlüssel.
Die Schlüsselteile werden nur unverändert im Original benutzt. Der Algorithmus
arbeitet im One-Time-Pad-Modus.
Alle wichtigen Funktionen werden, wie im Konzept beschrieben, durch
Parameter gesteuert und entsprechend der Beschreibung eingesetzt.
Alle wichtigen Neuerungen von SECAL-crypt werden somit beachtet und
vom Algorithmus eingehalten. Das betrifft auch die besondere Art der Code-Entnahme.
Grundsätzlich sind alle Algorithmen, die nach diesen Prinzipien
aufgebaut sind, als SECAL-crypt-Algorithmen zu bezeichnen. Diese Fassung ist nur
eine von vielen Möglichkeiten, die Forderungen von SECAL-crypt zu erfüllen.
Sie sollte als Prototyp eines Algorithmus angesehen werden, die dem Konstruktions-Prinzip
von SECAL-crypt entspricht.
Der anschließenden Beschreibung des Algorithmus liegt die Programmierung
im Taschenrechner HP 42S zugrunde. Dieses Programm enthält außer dem eigentlichen
Algorithmus diverse Zähl-Routinen zur Dokumentation der Ergebnisse. Näheres
ist in der Dokumentation (Teil C) zu erfahren.
Hier soll nur der reine Algorithmus vorgestellt werden, d. h. es wird
nur der ständig zu wiederholende Zyklus beschrieben und das Programm des HP
42S in verständliche Anweisungen übersetzt und erläutert. Ausdrücklich
sei auf die Besonderheit der Stack-Verarbeitung beim HP 42S hingewiesen, in dem
auch das aktuelle Register A0 enthalten ist.
Ergänzt wird die Beschreibung durch eine Liste der HP 42S-Register
und deren Bedeutung im Programm. Ferner enthält sie eine Liste aller benutzten
Flags, die zum Teil per Hand gesetzt oder gelöscht werden müssen, um verschiedene
Einstellungen zu realisieren, z. Bsp. Zu- oder Abschaltung des Modifikators, Ein-
und Ausschaltung der Druckroutinen u.a.
= Arbeits-Register, erste Register der Segmente S1...S6
K1...K6
= Systemschlüssel, Segmente S1...S6, je 9 Dezimalstellen
M1...M6
= Modifikator, Segmente S1...S6, je 9 Dezimalstellen
L1...L6
= Arbeitsschlüssel, Segmente S1...S6, Summe K- + M-Register, wird als Anfangswerte
in die A-Register übertragen
Z1...Z6
= Zwischenspeicher. Z1...Z4: Endsummen der Segmente S1...S4, Z5, Z6: Rückkoppelnde
Zwischenregister, werden auch als Vergleichsregister für zweiwertige Parameter
benutzt.
N,I
N= Grenzwert (R 00) für Schleifenzähler I
Stat
= Status-Register
X
= Hilfsregister für Operationen mit 2 Operanden
Außerdem gibt es mehrere Summenregister, die nicht näher
definiert sind. Sie enthalten z. Bsp. die Summen verschiedener Parameter und werden
verwendet für die Code-Ausgabe.
11.2. 8-Bit-Zeichencodes
C0
= Allgemeines Code-Register für die Ausgabe von 24 Codes, die allen Registern
gleichen Ranges entnommen werden.
C1...C24
= Code-Register.
R
= Enthält den aktuellen Rotations-Parameter für Funktion 6 (Rotation).
R0
= Rotations-Parameter für die Entnahme von 12 Codes (Code-Reihe 2).
R1...R7
= Rotations-Parameter für Funktion 6 (Rotation).
Weitere zweiwertige Parameter werden durch Flags angezeigt. Diese
werden automatisch gesetzt und gelöscht. Ein Flag stellt 1 Bit im 32-Bit-Statusregister
dar.
11.3. Speicherbelegung des HP 42S
K1–K6
Systemschlüssel
M1–M6
Modifikator
L1–L6
Arbeitsschlüssel (L= K+M, Anfangswerte)
R
aktueller Rotationsfaktor
R0
Rotationsfaktor für Code-Entnahme Reihe 2 (ohne „+")
Register R 00 bis R 229
00Schleifenzähler I bis Grenzwert N (Zyklen des Algorithmus)01–24Serien Manque/Passe25Serienzähler (Eingabe Serien-Lange M/P)26Zähler Serien M/P (Ausgabe)27Summe Anzahl Serien M/P (Ausgabe)28Gesamtzahl Codes (Ausgabe)29frei30frei31–36A1–A6 Anfangswerte (Arbeitsregister)37–42Z1–Z6 Zwischenspeicher43–49R1–R7 Rotationsfaktoren50frei51–74Codes C1–C2475C0, Register für Code-Ausgabe (im Stack realisiert)76frei77SR1 = Summe aller R078SR2 = Summe aller R1–R779SR3 = Summe SR1 + SR2 (alle Rotationsfaktoren)80232-1, Höchstbetrag im 32-Bit-Register, wird
nur bei HP 42S benötigt81Anzahl verschiedener Codes (Grundeinstellung: 128)82Zählung 2 gleiche Codes83Zählung 3 gleiche Codes84Zählung 4 gleiche Codes85Letzter Code86Label CODE: 2, Hilfszahl für Code-Entnahme Reihe 187Label CODE: Zwischenspeicher der Code-Reihe 1 (C1, C3, C5...C23)88frei89Label CODE: Zähler Parameter-Schleife (11 Parameter)90Zähler (indirekt) Einzelcodes in R 100 – R 22791Zähler für Ausdruck Einzelcodes92Zählung Manque93Zählung Passe94Zählung gerade95Zählung ungerade96Label 95: Bitzähler (0–31)97Label 95: Bit-Zählung Register98Label 95: Bit-Zählung Gesamtsumme 8 Register99Label 93: Zähler für Generator-Zustand100–227Zählung Einzelcodes (0–127)228frei229freiA0erhalten. untergebracht, muß aber in PC-Programmen einen
eigenen Speicherplatz Aktuelles Arbeitsregister. Wird im Stack (4 Register) realisiert
und dort ständigXrealisiert. Hilfsregister für Operationen mit 2 Operanden.
Wird im Stack-Register X
11.4. Flag-Liste des HP 42S
Der HP 42S stellt 30 Benutzerflags zur Verfügung. Es sind dies
die Flags 00 bis 10 und die Flags 81 bis 99, die wie folgt verwendet werden:
Das vorliegende Dokumentations-Programm ist ein offenes Programm.
Alle Daten, auch die des Schlüssels, können wie alle anderen Register
abgerufen und eingesehen werden. Die Tastatur ist nicht blockiert. Auch während
der laufenden Berechnung kann das Programm jederzeit gestoppt werden. Die Daten
können dann eingesehen oder geändert werden.
Eine offene Version ist ebenfalls vorgesehen für den Gebrauch
ohne kryptographische Anwendung. Versionen, die nur für professionelle kryptographische
Anwendung bestimmt sind, dürfen nur mit blockierter Tastatur betrieben werden.
Dafür ist im Rahmenprogramm zu sorgen. Die Blockierung darf erst nach der Chiffrierung
bzw. Dechiffrierung und Löschung aller Programm-Daten aufgehoben werden.
12.2. Voreinstellungen
Vom Vorprogramm, welches hier nicht beschrieben wird, werden die folgenden
Voreinstellungen vorgenommen:
Die Elemente K1...K6 und M1...M6 sind eingetragen. K- und M-Elemente sind addiert,
die Summen in die L-Register und in die Arbeitsregister A1...A6 übertragen
worden. Die K- und M-Elemente können vor dem Programmstart per Hand geändert
werden durch Setzen des Flag 07 (Systemschlüssel, zufallsbedingt) oder Flag
08 (neuer Modifikator, automatisch).
Die Rotationsparameter R1...R7 erhalten folgende Werte: R1 = 11, R2
= 6, R3 = 9, R4 = 10, R5 = 15, R6 = 17, R7 = 13. Die Werte R1....R6 werden von den
vom Schlüssel initiierten R-Werten überschrieben, wenn diese ungleich
Null sind.
Der Zähler der Parameterschleife für Code-Reihe 1 (Register
R 89) hat den Wert 11 erhalten (erstes Label für die Code-Entnahme).
Die Anzahl der auszugebenden Codes je Zyklus ist auf 24 festgelegt.
Flag 00 ist gesetzt. Sollen nur 12 Codes ausgegeben werden, muß Flag 00 per
Hand gelöscht werden.
Der Wechsel des Modifikators ist ausgeschaltet. Flag 08 ist gelöscht.
Soll automatisch jeweils ein neuer Modifikator generiert werden, so ist Flag 08
per Hand zu setzen.
Die Anzahl der zu generierenden Codes ist auf 6.000 eingestellt. Diese
Zahl kann geändert werden. Die Änderung ist nach Aufforderung einzutragen.
Bei Chiffrierungen bestimmt die Länge der Klartext-Datei die Zahl der zu berechnenden
Codes (hier nicht vorgesehen).
Der Code-Umfang ist auf 128 begrenzt, da für 256 Codes bei voller
Dokumentation der im HP 42S zur Verfügung stehende Speicherplatz nicht ausreicht.
Er kann bis 256 eingestellt werden, wenn die Dokumentation ausgeschaltet wird (Flag
03 setzen).
Die vollständige Dokumentation ist eingeschaltet. Flag 03 ist
gelöscht. Wird Flag 03 per Hand gesetzt, so werden nur Manque/Passe und gerade/ungerade
gezählt.
Die Druckroutinen sind ausgeschaltet. Die entsprechenden Flags (siehe
Liste) können per Hand gesetzt werden.
12.3. Algorithmus-Funktionen (arbeiten wie Unterprogramme mit Return)12.3.1. Funktionen zur Kriterienauswahl (Parameter)
Funktion 1: Parameter Rotation (Label 02)
Funktion 2: Parameter K-/L-Schlüssel (Label 05)
Funktion 3: Parameter "+"/XOR (Label 06)
Funktion 4: Parameter Code-Ausgabe Reihe 2 (Label 07)
12.3.2. Ausführende Funktionen
Funktion 5: Entscheidung "+"/XOR (Label 08/03)
Funktion 6: Rotation mit Addition (Label 09)
12.3.3. Funktionen der Code-Ausgabe
Funktion 7: Code-Entnahme Reihe 2 (Label 04)
Funktion 8: Code-Entnahme Reihe 1 (Label 10)
Funktion 9: Doppel-Codierung Reihe 1 (Label 13)
Funktion "CODE": Code-Entnahme Reihe 1 (Label CODE)
Funktion c: Dokumentation und Schnittstelle Code-Ausgabe 1 und 2
Funktion c (Fortsetzung)
12.4. Das Algorithmus-Programm
Der Zyklus beginnt immer mit der Zählfunktion A3/A4, erst danach
beginnt die eigentliche Zyklus-Schleife mit Segment 1.
Zähler
Segment 1
Segment 2
Segment 3
Segment 3 (Fortsetzung)
Segment 4
Segment 4 (Fortsetzung)
Segment 5
Segment 5 (Fortsetzung)
Segment 6
Segment 6, Fortsetzung
Druckroutinen für Dokumentation
Fortsetzung Codierung
Die Dokumentations-Programme werden hier nicht aufgeführt. Das
Vorlauf-Programm wurde ebenfalls nicht vorgestellt, da hier nur der Algorithmus
zu beschreiben war. Die Voreinstellungen durch das Vorprogramm können auf Seite
24 nachgelesen werden.
TEIL CDIE DOKUMENTATION13. Übersicht
Diese Dokumentation wurde mit dem Taschenrechner HP 42S erstellt.
Zugrunde liegt eine Auswahl verschiedener Berechnungen der Codes 0 bis 127 mit wechselnden
Schlüsseln und Modifikatoren. Die Dokumentation umfaßt die folgenden Angaben:
1. Schlüsselsegmente K1...K6
2. Modifikatorsegmente M1...M6
3. Zählung der Hälften Manque und Passe (kleine und große Zahlen).
4. Zählung der geraden und ungeraden Zahlen.
5. Zählung der doppelt bis vierfach auftretenden gleichen Codes.
6. Zählung der Serien (Anzahl und Länge) Manque/Passe; Gesamtzahl
aller Serien.
7. Ausdruck von acht Registern dezimal und binär, Zählung der gesetzten
Bits.
8. Häufigkeit der einzelnen Codes 0 bis 127.
Während der Arbeit des Systems können auch die Codes ausgedruckt
werden (Set Flag 06). Außerdem werden die Daten für den inneren Zustand
des Generators erstellt. Sie umfassen:
die Schlüsselsegmente K1...K6 und L1...L6, welche ständige Summanden des
Algorithmus sind,
die Arbeitsregister A1...A6,
die Zwischenspeicher Z1...Z6, welche zyklusübergreifend benötigt werden,
die Rotationsparameter R0...R7, die zum Teil im vorigen Zyklus gebildet werden,
den Zustand des Registers R 89, das den Anfang der Parameterschleife für die
Codereihe 1 kennzeichnet,
den Zustand der Summen-Register SR1, SR2 und SR3 für die Parameterschleife
den Zustand der Flags 05 und 90, welche zyklusübergreifend wirksam sind.
14. Dokumente (Inhalt)
Ohne Schlüssel, ohne Modifikator, alle 32-Bit-Register gelöscht
Diese experimentelle Version ist nicht für die Praxis gedacht,
da nie ohne Schlüssel gearbeitet werden soll. Sie dient nur zum Nachweis der
Effizienz der Rotations-Funktion. Diese Funktion wird wie folgt ausgeführt:
Das Register wird zunächst kopiert. Die Kopie wird nach rechts rundgeschoben
um eine Anzahl Bits, die in Parameter R spezifiziert ist. Dann wird die rotierte
Kopie mit arithmetischem Plus zum Original addiert. Dabei entsteht nicht nur ein
neuer Wert, sondern es ändert sich im Gegensatz zur einfachen Rotation gleichzeitig
die Bitstruktur.
Diese Methode hat zur Folge, daß sich ein einzelnes Bit sehr
schnell vermehrt. Da bei der Nullversion alle 32-Bit-Register gelöscht sind,
wird das ganze System von dem einzigen in A4 gesetzten Bit des Zählers angetrieben.
Der Lawineneffekt der Rotation tangiert bis zum Ende des Zyklus jedes Bit eines
Registers, so daß die durchschnittliche Bitzahl erreicht wird.
Beispiel A demonstriert den Lawineneffekt durch sieben aufeinanderfolgende
Rotationen. Die Anzahl der zu rotierenden Bits wurde willkürlich bestimmt.
In der Praxis folgen die Rotationen nicht direkt aufeinander, und die Werte ändern
sich vor der nächsten Rotation infolge weiterer Additionen.
Beispiel A: Schematische Darstellung des Lawineneffekts14.11. Nullversion, ohne Schlüssel, ohne Modifikator, 12 Codes14.11. Nullversion, ohne Schlüssel, ohne Modifikator, 12 Codes.14.12. Nullversion, 24 Codes
14.12. Nullversion, ohne Schlüssel, ohne Modifikator, 24 Codes
Ausdruck von 720 Codes
Alle statistischen Werte bewegen sich im erwarteten Bereich. Die Register
mit gleichen Werten (siehe vorige Seite) bringen unterschiedliche Codes hervor.
14.13. Zusammenfassung
Gesamtzahl (ohne Nullversion): 900.000 Codes. Ausgabe 12 und 24 Codes
je 450.000
Parameter-Durchschnittswerte (nach Angaben der Generator-Ausdrucke)
Summe aller R0 (Register R 77):
12 Codes 10.330.107
24 Codes 5.163.578Summe aller R1–R7 (Register R 78):
12 Codes 8.396.684
24 Codes 4.197.633Anzahl Zyklen
37.500
18.750Gesamt:15.493.68512.594.31756.250 ZyklenDurchschnitt:15.493.685(56.250·24)
= 11,4768
(Soll = 11,5)12.594.317(56.250·14)
= 15,9928
(Soll = 16)%Differenz–0,2017–0,045
Anspruch[de]
Verfahren für die Konstruktion eines Schlüsselstrom-Generators
zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen, gekennzeichnet
durch folgende, die Zahlenqualität betreffenden Merkmale:
1.1. Die bisher starre Arbeitsweise eines Algorithmus wird durch eine unregelmäßige
und zufallsgerechtere Arbeitsweise ersetzt, indem Funktionen für eine alternative
Anwendung von Programmanweisungen eingebaut werden. Die Auswahl der Alternativen
wird durch Kriterien bestimmt, die voneinander unabhängig sind.
1.2. Die zufallsgerechten Bedingungen gelten auch für die Auswahl der Codes.
Dafür müssen alle Zwischensummen, die durch kumulative
Addition oder XOR-Verknüpfung entstehen, gleichrangig sein. Alle Bits eines
Registers müssen gleiche Chancen zur Veränderung haben. Die zufallsgerechte
Arbeitsweise des Algorithmus ist dadurch gekennzeichnet,
1.3. daß alle wichtigen Funktionen durch Parameter gesteuert werden, die sich
ständig verändern. Die Parameter werden aus diversen Zwischensummen entnommen,
höherwertige per modulo. Sie werden für folgende Funktionen eingesetzt:
1.3.1. Rotationsfunktion 1: Parameter 1 bis 31 für die Rechtsrotation der Kopie
eines Registers. Durch anschließende Addition zum Original wird auch die Bitstruktur
des Ergebnisses verändert. Der daraus entstehende Lawineneffekt ist weitaus
effizienter als bei üblichen Registerverschiebungen oder anderen Methoden wie
Expansionspermutationen. Diese Funktion erfolgt 14mal in einem Zyklus. Dafür
sind 7 Parameter vorgesehen. Sie werden innerhalb eines Zyklus zweimal erneuert.
1.3.2. Zweiwertige Parameter zur alternativen Auswahl von Addition oder XOR. Die
Parameter 0 oder 1 werden nach dem Kriterium X < A0? bestimmt, wobei X ein Register
des aktuellen oder vorigen Zyklus und A0 das aktuelle Arbeitsregister ist.
1.3.3. Zweiwertige Parameter zur alternativen Auswahl der Schlüsselelemente
K oder L (System- oder Arbeitsschlüssel) im Zusammenhang mit 2.4.3. Die Parameter
0 oder 1 werden nach dem Kriterium X = ungerade? ermittelt. X stellt ein Register
des aktuellen oder vorigen Zyklus dar.
Die zufallsgerechte Entnahme der Codes ist dadurch gekennzeichnet,
1.4. daß die Codes, insgesamt 24 je Zyklus, in zwei Reihen zu je 12 Codes gegliedert,
die ineinander verschachtelt ausgegeben werden, auf unterschiedliche Weise ebenfalls
durch Parametersteuerung ermittelt werden.
1.4.1. Für die Schlüsselcodes der Reihe 2 gilt die Rotationsfunktion 2
mit den Parametern 0 bis 23 für die Rechtsrotation eines Registers ohne anschließende
Addition. Damit wird ein beliebiger 8-Bit-Block ans Ende des Registers verschoben.
Mit modulo 128 bzw. 256 werden die Codes entnommen. Sie werden bei 12 und 24 Codes
Ausgabe benutzt.
1.4.2. Die Schlüsselcodes der Reihe 1 werden in einem gesonderten Programmteil
durch eine Parameterschleife gesteuert, bestehend aus elf Parametern der Rotationsfunktionen
1 und 2 sowie deren Summen modulo 29. Jeweils 8 Bits werden einzeln nach verschiedenen
Parametern ausgewählt. Der Beginn der Auswahl verschiebt sich, bis er nach
11 Durchlaufen wieder mit dem gleichen Parameter beginnt, wobei inzwischen alle
Parameter neue Werte erhalten haben.
1.4.3. Die Codes der Reihe 1 werden mit Codes der Reihe 2, vorwiegend aus dem vorigen
Zyklus, XOR-verknüpft. Sie werden nur bei 24 Codes Ausgabe benutzt.Verfahren nach Anspruch 1, gekennzeichnet durch folgende Sicherheits-Merkmale:
2.1. Um eine totale Blockade des Algorithmus zu erreichen, wird außer einer
oszillierenden Arbeitsweise und einem verbreitetem Netz von Rückkopplungen
zusätzlich verhindert, daß der innere Zustand des Generators ermittelt
werden kann.
2.2. Um jede Vergleichsmöglichkeit zwischen Codes und Chiffretexten bzw. Klartexten
zu verhindern, wird ein One-Time-Pad-Modus im System installiert. Er entzieht allen
Möglichkeiten die für einen Vergleich nötige Basis. Die Blockade
des Algorithmus nach 2.1. ist dadurch gekennzeichnet,
2.3. daß der Systemschlüssel zum Bestandteil des inneren Zustands gemacht
wird. Zu diesem Zweck wird das System in sechs Segmente aufgeteilt. Der Schlüssel
mit einer Größe von 180 Bit wird ebenfalls in sechs gleichen Teilen den
Segmenten zugeordnet.
2.3.1. Während der Schlüssel normalerweise nur den Anfangszustand eines
Generators darstellt, werden hier außerdem die Schlüsselelemente in den
Segmenten in jedem Zyklus als ständige Summanden verwendet. Die Segmente werden
der Reihe nach abgearbeitet, beginnend mit dem jeweiligen A-Register.
2.3.2. Dadurch wird der Schlüssel zum Bestandteil des inneren Zustands des
Generators, den er hiermit blockiert, da ohne Kenntnis des Schlüssels kein
Angriff auf den Algorithmus durchführbar ist.
Die Realisierung eines One-Time-Pad-Modus nach 2.2. ist dadurch gekennzeichnet,
2.4. daß ein zweiter Schlüssel eingeführt wird.
2.4.1. Diese Aufgabe übernimmt ein Modifikator M. Der Modifikator hat die gleiche
Größe wie der Systemschlüssel. Er wird zum Systemschlüssel addiert.
Die Summe wird als Arbeitsschlüssel L in die A-Register übertragen und
bildet letztendlich die Anfangsposition des Generators.
2.4.2. Der Modifikator wird vor jeder Codierung neu generiert und modifiziert den
Systemschlüssel. Jede Codierung ist ein Unikat. Der Modifikator muß kein
Zufallswert sein. Er ist öffentlich und wird im Header einer Datei unverschlüsselt
übertragen.
2.4.3. Es gibt nunmehr in jedem Segment zwei gleichwertige, aber unterschiedliche
Schlüsselelemente K und L (System- und Arbeitsschlüssel). Diese werden
nach 1.3.3. wechselweise durch zweiwertige Parameter als ständige Summanden
im Algorithmus verwendet, wobei die Schlüsselelemente immer im Original benutzt
werden. Die unter Anspruch 1. bis 1.4.3. genannten Ausführungen bewirken
einen unsteten, oszillierenden Algorithmus. Die Codes besitzen keine Korrelationen
zum Schlüssel und weisen keine auswertbaren Regelmäßigkeiten auf.
Die Zufaliszahlenfolge ist kryptographisch sicher; denn auch bei genauer Kenntnis
des Algorithmus und aller bisherigen Werte ist keine Voraussage einzelner Bits oder
Codes möglich. Durch die Parameter wird ein verbreitetes Netz von Rückkopplungen
installiert.
Die unter Anspruch 2. bis 2.4.3. genannten Ausführungen erzielen eine vollständige
Blockade des Algorithmus und lassen durch den One-Time-Pad-Modus keine Textvergleiche
mehr zu. Die Methode gestattet trotzdem, einen Systemschlüssel für längere
Zeit zu verwenden. Das System kann mit allen möglichen Kombinationen der Schlüsselelemente
insgesamt 10108 unterschiedliche Codierungen erzeugen. Ein Zusammenhang
zwischen Klartext und Chiffretext ist durch die wechselweise Benutzung der Schlüsselelemente
K oder L nicht mehr erkennbar. Auch die letzten Angriffspunkte des Systems sind
jetzt vollständig blockiert.