PatentDe  


Dokumentenidentifikation DE102006030325A1 03.01.2008
Titel Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen
Anmelder Kosel, Gerhard, 50677 Köln, DE
Erfinder Kosel, Gerhard, 50677 Köln, DE
DE-Anmeldedatum 30.06.2006
DE-Aktenzeichen 102006030325
Offenlegungstag 03.01.2008
Veröffentlichungstag im Patentblatt 03.01.2008
IPC-Hauptklasse H04L 9/22(2006.01)A, F, I, 20060630, B, H, DE
Zusammenfassung 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 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

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 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

  • 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 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


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.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

  Patente PDF

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com