-
TEIL A
-
DAS KONZEPT
-
1. 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
- System:
- nichtlinear (oszillierend),
segmentiert (6 Segmente)
- Verarbeitung:
- Ganze, positive Zahlen,
kumulativ
- Arbeitsmodus:
- One-Time-Pad
- Math. Operatoren:
- Arithmetisches „+", XOR, Modulo
- Schlüsselraum:
- 180 Bit
- Modifikator:
- 180 Bit
- Zähler:
- 64 Bit
- Code-Ausgabe:
- 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-Konzept
-
3.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.
Modifikator | M1 | M2 | M3 | M4 | M5 | M6 |
+ | | | | | | |
System-Schlüssel | K1 | K2 | K3 | K4 | K5 | K6 |
= | | | | | | |
Schlüssel Arbeits- | L1 | L2 | L3 | L4 | L5 | L6 |
= | | | | | | |
Werte
Anfangs- | A1 | A2 | A3 | A4 | A5 | A6 |
Figur
2
-
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 Codes
-
3.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 B
-
DAS ALGORITHMUS – PROGRAMM
-
10. 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.
-
11. Definitionen
-
11.1. 32-Bit-Register (ohne Vorzeichen)
-
-
- A0
- = Aktuelles Arbeitsregister
- A1...A6
- = 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
00 | Schleifenzähler I bis
Grenzwert N (Zyklen des Algorithmus) |
01–24 | Serien
Manque/Passe |
25 | Serienzähler (Eingabe
Serien-Lange M/P) |
26 | Zähler Serien
M/P (Ausgabe) |
27 | Summe
Anzahl Serien M/P (Ausgabe) |
28 | Gesamtzahl
Codes (Ausgabe) |
29 | frei |
30 | frei |
31–36 | A1–A6 Anfangswerte
(Arbeitsregister) |
37–42 | Z1–Z6 Zwischenspeicher |
43–49 | R1–R7 Rotationsfaktoren |
50 | frei |
51–74 | Codes
C1–C24 |
75 | C0,
Register für
Code-Ausgabe (im Stack realisiert) |
76 | frei |
77 | SR1
= Summe aller R0 |
78 | SR2
= Summe aller R1–R7 |
79 | SR3
= Summe SR1 + SR2 (alle Rotationsfaktoren) |
80 | 232-1, Höchstbetrag
im 32-Bit-Register, wird nur bei HP 42S benötigt |
81 | Anzahl
verschiedener Codes (Grundeinstellung: 128) |
82 | Zählung 2
gleiche Codes |
83 | Zählung 3
gleiche Codes |
84 | Zählung 4
gleiche Codes |
85 | Letzter
Code |
86 | Label
CODE: 2, Hilfszahl für
Code-Entnahme Reihe 1 |
87 | Label
CODE: Zwischenspeicher der Code-Reihe 1 (C1, C3, C5...C23) |
88 | frei |
89 | Label
CODE: Zähler
Parameter-Schleife (11 Parameter) |
90 | Zähler (indirekt)
Einzelcodes in R 100 – R
227 |
91 | Zähler für Ausdruck
Einzelcodes |
92 | Zählung Manque |
93 | Zählung Passe |
94 | Zählung gerade |
95 | Zählung ungerade |
96 | Label
95: Bitzähler
(0–31) |
97 | Label
95: Bit-Zählung
Register |
98 | Label
95: Bit-Zählung
Gesamtsumme 8 Register |
99 | Label
93: Zähler
für Generator-Zustand |
100–227 | Zählung Einzelcodes
(0–127) |
228 | frei |
229 | frei |
A0 | erhalten.
untergebracht, muß aber
in PC-Programmen einen eigenen Speicherplatz Aktuelles Arbeitsregister.
Wird im Stack (4 Register) realisiert und dort ständig |
X | realisiert.
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:
Flag | gesetzt | gelöscht | Anmerkungen |
00 | Ausgabe
24 Codes | Ausgabe
12 Codes | Handschaltung |
01 | Encod.
(Modifikator ein) | Decod.
(Modifikator aus) | '' |
02 | frei | | |
03 | Zählung M/P,
ger./unger. | Vollst.
Dokumentation | '' |
04 | allg.
Druckmodus ein | Druckmodus
aus | '' |
05 | Serien
Passe | Serien
Manque | automatisch |
06 | Ausdruck
aktuelle Codes | – | Handschaltung |
07 | Schlüssel-Generator
ein | – | '' |
08 | neuer
Modifikator | Modifikator
aus | '' |
09/10 | frei | | |
81 | nur
1. Zyklus (Null-Version) | ab
2. Zyklus | automatisch |
82 | zweifacher
Code | – | '' |
83 | dreifacher
Code | – | '' |
84 | vierfacher
Code | – | '' |
85-88 | frei | | |
89 | Lbl
CODE: Ende Entnahme | – | automatisch |
90 | Addition
XOR | Addition „+" | '' |
91 | Addition
C-Schlüssel | Addition
K-Schlüssel | '' |
92 | Rotation
ohne „+" | – | '' Ausg. Code-Reihe 2 |
93 | Ausdruck
innerer Zustand | – | Handschaltung |
94 | frei | | |
95 | Ausdruck
Register binär | – | Handschaltung |
96-99 | frei | | |
-
12. Das SECAL-crypt-Programm
-
12.1. Allgemeines
-
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
-
-
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.
-
-
-
-
-
-
-
-
-
-
-
-
-
Druckroutinen
für Dokumentation
-
-
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 C
-
DIE DOKUMENTATION
-
13. Ü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)
14.1.: | Schlüssel 1/Modifikator
1, Ausgabe 12 Codes | 37 |
14.2.: | Schlüssel 1/Modifikator
1, Ausgabe 24 Codes | 40 |
14.3.: | Schlüssel 1/Modifikator
2, Ausgabe 12 Codes | 43 |
14.4.: | Schlüssel 1/Modifikator
2, Ausgabe 24 Codes | 46 |
14.5.: | Schlüssel 1/Modifikator
3, Ausgabe 12 Codes | 49 |
14.6.: | Schlüssel 1/Modifikator
3, Ausgabe 24 Codes | 52 |
14.7.: | Schlüssel 2/Modifikator
3, Ausgabe 12 Codes | 55 |
14.8.: | Schlüssel 2/Modifikator
3, Ausgabe 24 Codes | 58 |
14.9.: | Schlüssel 3/Modifikator
4, Ausgabe 12 Codes | 61 |
14.10.: | Schlüssel 3/Modifikator
4, Ausgabe 24 Codes | 64 |
14.11.: | Nullversion
ohne Schlüssel,
ohne Modifikator. Ausgabe 12 Codes | 67 |
14.12.: | Nullversion
ohne Schlüssel,
ohne Modifikator, Ausgabe 24 Codes | 70 |
14.13.: | Zusammenfassung | 72 |
-
Es
werden nur Reihen der aktuellen Fassung des Systems dokumentiert,
darunter auch die sogenannte Nullversion zur Demonstration der Effizienz
der Rotation (Funktion 6). 14.1.
Schlüssel
1, Modifikator 1, 12 Codes
14.1.
Schlüssel
1, Modifikator 1, 12 Codes
14.1.
Schlüssel
1, Modifikator 1, 12 Codes
14.2.
Schlüssel
1, Modifikator 1, 24 Codes
14.2.
Schlüssel
1, Modifikator 1, 24 Codes
14.2.
Schlüssel
1, Modifikator 1, 24 Codes
14.3.
Schlüssel
1, Modifikator 2, 12 Codes
14.3.
Schlüssel
1, Modifikator 2, 12 Codes
14.3.
Schlüssel
1, Modifikator 2, 12 Codes
14.4.
Schlüssel
1, Modifikator 2, 24 Codes
14.4.
Schlüssel
1, Modifikator 2, 24 Codes
14.4.
Schlüssel
1, Modifikator 2, 24 Codes
14.5.
Schlüssel
1, Modifikator 3, 12 Codes
14.5.
Schlüssel
1, Modifikator 3, 12 Codes
14.5.
Schlüssel
1, Modifikator 3, 12 Codes
14.6.
Schlüssel
1, Modifikator 3, 24 Codes
14.6.
Schlüssel
1, Modifikator 3, 24 Codes
14.6.
Schlüssel
1, Modifikator 3, 24 Codes
14.7.
Schlüssel
2, Modifikator 3, 12 Codes
14.7.
Schlüssel
2, Modifikator 3, 12 Codes
14.7.
Schlüssel
2, Modifikator 3, 12 Codes
14.8.
Schlüssel
2, Modifikator 3, 24 Codes
14.8.
Schlüssel
2, Modifikator 3, 24 Codes
14.8.
Schlüssel
2, Modifikator 3, 24 Codes
14.9.
Schlüssel
3, Modifikator 4, 12 Codes
14.9.
Schlüssel
3, Modifikator 4, 12 Codes
14.9.
Schlüssel
3, Modifikator 4, 12 Codes
14.10.
Schlüssel
3, Modifikator 4, 24 Codes
14.10.
Schlüssel
3, Modifikator 4, 24 Codes
14.10.
Schlüssel
3, Modifikator 4, 24 Codes
-
14.11. Nullversion, 12 Codes
-
- 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 Lawineneffekts
14.11.
Nullversion, ohne Schlüssel,
ohne Modifikator, 12 Codes
14.11.
Nullversion, ohne Schlüssel,
ohne Modifikator, 12 Codes.
14.12.
Nullversion, 24 Codes
-
14.12. Nullversion, ohne Schlüssel, ohne
Modifikator, 24 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
12
Codes | Manque
Passe | Gerade
Ungerade | 2-fach
3-fach 4-fach | Serien |
K1 M1 | 44.891
45.109 | 44.936
45.064 | 714
11 0 | 45.339 |
K1 M2 | 45.210
44.790 | 45.247
44.753 | 654
6 0 | 45.047 |
K1 M3 | 45.023
44.977 | 44.980
45.020 | 711
4 0 | 44.984 |
K2 M3 | 44.968
45.032 | 45.103
44.897 | 691
2 0 | 45.274 |
K3 M4 | 45.197
44.803 | 45.153
44.847 | 704
9 0 | 45.017 |
(Soll)
%
Differenz
24 Codes | 225.289
224.711
(225.000)
0,128 | 225.419
224.581
(225.000)
0,186 | 3.474
32 0
(3.516) (27)
–1,184
+16,51 | 225.661
(225.000)
+0,294 |
K1 M1 | 44.947
45.053 | 45.010
44.990 | 698
5 0 | 45.136 |
K1 M2 | 45.055
44.945 | 44.749
45.251 | 734
6 0 | 44.737 |
K1 M3 | 45.173
44.827 | 45.269
44.731 | 740
11 0 | 45.031 |
K2 M3 | 44.876
45.124 | 45.116
44.884 | 712
3 0 | 45.076 |
K3 M4 | 44.989
45.011 | 45.222
44.778 | 707
4 0 | 45.057 |
%
Differenz
Gesamt:
(Soll)
% Differenz | 225.040
224.960
0,018
450.329 449.671
(450.000)
0,073 | 225.366
224.634
0,163
450.785 449.215
(450.000)
0,174 | 3.591
29 0
+2,144 +5,586
7.065 61 0
(7.031) (55)
+0,48
+11,05 | 225.037
+0,016
450.698
(450.000)
+0,155 |
Serien Manque/Passe (Summen der Dokumentationen
12 und 24 Codes)
Anzahl
Serien | Länge | Anzahl
Codes | Serien
(Soll) | %Differenz |
225.425 | × 1 | =
225.425 | 225.000 | +0,189 |
113.167 | × 2 | =
226.334 | 112.500 | +0,593 |
56.008 | × 3 | =
168.024 | 56.250 | –0,430 |
28.052 | × 4 | =
112.052 | 28.125 | –0,260 |
14.015 | × 5 | =
70.075 | 14.062 | –0.334 |
7.148 | × 6 | =
42.888 | 7.031 | +1,664 |
3.428 | × 7 | =
23.996 | 3.516 | –2,503 |
1,708 | × 8 | =
13.664 | 1.758 | –2,844 |
883 | × 9 | =
7.947 | 879 | +0,455 |
420 | × 10 | =
4.200 | 439 | –4,328 |
209 | × 11 | =
2.299 | 220 | –5,000 |
128 | × 12 | =
1.536 | 110 | – |
39 | × 13 | =
507 | 55 | – |
27 | × 14 | =
378 | 27 | – |
17 | × 15 | =
255 | 14 | – |
6 | × 16 | =
96 | 7 | – |
4 | × 17 | =
68 | 3 | – |
2 | × 18 | =
36 | 2 | – |
0 | × 19 | =
0 | 1 | – |
0 | × 20 | =
0 | 1 | – |
2 | × 21 | =
42 | 0 | – |
10 | offen | =
22 | 0 | – |
450.698 | | 900.000 | 450.000 | +0,155 |
Parameter-Durchschnittswerte (nach Angaben
der Generator-Ausdrucke)
Summe aller
R0 (Register R 77):
12 Codes 10.330.107
24 Codes 5.163.578 | Summe
aller R1–R7 (Register
R 78):
12 Codes 8.396.684
24 Codes 4.197.633 | Anzahl
Zyklen
37.500
18.750 |
Gesamt: | 15.493.685 | 12.594.317 | 56.250
Zyklen |
Durchschnitt: | 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 |