DE102006030325B4 - Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen - Google Patents

Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen Download PDF

Info

Publication number
DE102006030325B4
DE102006030325B4 DE200610030325 DE102006030325A DE102006030325B4 DE 102006030325 B4 DE102006030325 B4 DE 102006030325B4 DE 200610030325 DE200610030325 DE 200610030325 DE 102006030325 A DE102006030325 A DE 102006030325A DE 102006030325 B4 DE102006030325 B4 DE 102006030325B4
Authority
DE
Germany
Prior art keywords
key
codes
algorithm
modifier
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE200610030325
Other languages
English (en)
Other versions
DE102006030325A1 (de
Inventor
Gerhard Kosel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE200610030325 priority Critical patent/DE102006030325B4/de
Publication of DE102006030325A1 publication Critical patent/DE102006030325A1/de
Application granted granted Critical
Publication of DE102006030325B4 publication Critical patent/DE102006030325B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

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 Alle mathematischen Kriterien werden durch logisch-argumentative Kriterien ersetzt.
1.2 Die bisher starre Arbeitsweise eines Algorithmus wird durch eine alternative, oszillierende Arbeitsweise ersetzt, indem der ganze Algorithmus unregelmäßig aufgebaut ist, sich ständig ändert und nach 1.3 bis 1.3.1 jeder Zyklus in anderer Weise verläuft.
1.2.1 Es wird ein langer, flexibler Zyklus installiert, der 24 Codes erzeugt.
1.2.2 Der Algorithmus benutzt nur zwei Arten von Hauptbefehlen: Additionen und Rotationen mit Addition (Rotation/Plus).
1.2.3 Die Funktion Rotation/Plus ist eine Doppelfunktion, bei der ein Register nach rechts rotiert und dann zum unverschobenen Original arithmetisch addiert wird.
1.2.4 Die Anordnung und Reihenfolge aller Hauptbefehle ist unregelmäßig und willkürlich und könnte fast beliebig verändert werden.
1.2.5 Alle Hauptbefehle werden alternativ angewandt, indem für die Addition die Alternativen...

Description

  • 1. Einleitung
  • Schlüsselstrom-Generatoren erzeugen sogenannte Pseudo-Zufallszahlen zur Verschlüsselung von Daten. Die bisherige Technik ist auf mathematischen Theorien begründet. Diese Generatoren schließen nicht aus, daß Korrelationen (sog. short term correlations) auftreten, die ein Sicherheitsrisiko sein können. Die Zufälligkeit der Ergebnisse dieser Systeme ist oft sehr mangelhaft. Zufall heißt Chaos. Die formelhafte Struktur und der immer gleiche Ablauf eines Zyklus stehen diesem Ziel jedoch entgegen. Die bisherigen Systeme sind deshalb auch ungeeignet, ein echtes One-Time-Pad zu verarbeiten.
  • 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, Moduln
    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.
  • Figure 00050001
    Figur 1: Grundschema
  • 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).
  • 3.2. 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 4.294.967.295. 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 rundgeschoben, 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.
  • Figure 00100001
    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 Zwischenspeichem 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).
  • Figure 00130001
    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 internationalen 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.
  • 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-Länge 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: 27, 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
      ” ”: Bit-Zählung Register
      98
      ” ”: 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
      Aktuelles Arbeitsregister. Wird im Stack (4 Register) realisiert und dort ständig untergebracht, muß aber in PC-Programmen einen eigenen Speicherplatz erhalten.
      X
      Hilfsregister für Operationen mit 2 Operanden. Wird im Stack-Register X realisiert.
  • 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 L-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)
    Figure 00240001
  • Funktion 2: Parameter K-/L-Schlüssel (Label 05)
    Figure 00240002
  • Funktion 3: Parameter ”+”/XOR (Label 06)
    Figure 00240003
  • Funktion 4: Parameter Code-Ausgabe Reihe 2 (Label 07)
    Figure 00240004
  • 12.3.2. Ausführende Funktionen
  • Funktion 5: Entscheidung ”+”/XOR (Label 08/03)
    Figure 00240005
  • Funktion 6: Rotation mit Addition (Label 09)
    Figure 00250001
  • 12.3.3. Funktionen der Code-Ausgabe
  • Funktion 7: Code-Entnahme Reihe 2 (Label 04)
    Figure 00250002
  • Funktion 8: Code-Entnahme Reihe 1 (Label 10)
    Figure 00250003
  • Funktion 9: Doppel-Codierung Reihe 1 (Label 13)
    Figure 00250004
  • Funktion ”CODE”: Code-Entnahme Reihe 1 (Label CODE)
    Figure 00250005
  • Figure 00260001
  • Figure 00270001
  • Funktion c: Dokumentation und Schnittstelle Code-Ausgabe 1 und 2
    Figure 00270002
  • Figure 00280001
  • 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.
  • Figure 00280002
  • Figure 00290001
  • Figure 00300001
  • Figure 00310001
  • Figure 00320001
  • Figure 00330001
  • 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.
  • 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
    Figure 00360001
  • Figure 00370001
  • Figure 00380001
  • 14.2. Schlüssel 1, Modifikator 1, 24 Codes
    Figure 00390001
  • Figure 00400001
  • Figure 00410001
  • 14.3. Schlüssel 1, Modifikator 2, 12 Codes
    Figure 00420001
  • Figure 00430001
  • Figure 00440001
  • 14.4. Schlüssel 1, Modifikator 2, 24 Codes
    Figure 00450001
  • Figure 00460001
  • Figure 00470001
  • 14.5. Schlüssel 1, Modifikator 3, 12 Codes
    Figure 00480001
  • Figure 00490001
  • Figure 00500001
  • 14.6. Schlüssel 1, Modifikator 3, 24 Codes
    Figure 00510001
  • Figure 00520001
  • Figure 00530001
  • 14.7. Schlüssel 2, Modifikator 3, 12 Codes
    Figure 00540001
  • Figure 00550001
  • Figure 00560001
  • 14.8. Schlüssel 2, Modifikator 3, 24 Codes
    Figure 00570001
  • Figure 00580001
  • Figure 00590001
  • 14.9. Schlüssel 3, Modifikator 4, 12 Codes
    Figure 00600001
  • Figure 00610001
  • Figure 00620001
  • 14.10. Schlüssel 3, Modifikator 4, 24 Codes
    Figure 00630001
  • Figure 00640001
  • Figure 00650001
  • 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
    Figure 00660001
  • 14.11. Nullversion, ohne Schlüssel, ohne Modifikator, 12 Codes
    Figure 00670001
  • Figure 00680001
  • 14.12. Nullversion, 24 Codes
    Figure 00690001
  • 14.12. Nullversion, ohne Schlüssel, ohne Modifikator, 24 Codes
    Figure 00700001
  • 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.419 224.581 3.474 32 0 225.661
    (225.000) 0,128 (225.000) 0,186 (3.516) –1,184 (27) +16,51 (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 225.366 224.634 3.591 29 0 225.037
    0,018 0,163 +2,144 +5,586 +0,016
    450.329 449.671 450.785 449.215 7.065 61 0 450.698
    (450.000) 0,073 (450.000) 0,174 (7.031) +0,48 (55) +11,05 (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): Summe aller R1–R7 (Register R 78): Anzahl Zyklen
    12 Codes 24 ” 10.330.107 5.163.578 12 Codes 24 ” 8.396.684 4.197.633 37.500 18.750
    Gesamt: 15.493.685 12.594.317 56.250 Zyklen
    Durchschnitt: 15.493.685 12.594.317
    (56.250·24) (56.250·14)
    = 11,4768 = 15,9928
    (Soll = 11,5) (Soll = 16)
    % Differenz –0,2017 –0,045

Claims (2)

  1. 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 Alle mathematischen Kriterien werden durch logisch-argumentative Kriterien ersetzt. 1.2 Die bisher starre Arbeitsweise eines Algorithmus wird durch eine alternative, oszillierende Arbeitsweise ersetzt, indem der ganze Algorithmus unregelmäßig aufgebaut ist, sich ständig ändert und nach 1.3 bis 1.3.1 jeder Zyklus in anderer Weise verläuft. 1.2.1 Es wird ein langer, flexibler Zyklus installiert, der 24 Codes erzeugt. 1.2.2 Der Algorithmus benutzt nur zwei Arten von Hauptbefehlen: Additionen und Rotationen mit Addition (Rotation/Plus). 1.2.3 Die Funktion Rotation/Plus ist eine Doppelfunktion, bei der ein Register nach rechts rotiert und dann zum unverschobenen Original arithmetisch addiert wird. 1.2.4 Die Anordnung und Reihenfolge aller Hauptbefehle ist unregelmäßig und willkürlich und könnte fast beliebig verändert werden. 1.2.5 Alle Hauptbefehle werden alternativ angewandt, indem für die Addition die Alternativen XOR und ”+” bereitstehen und nach 1.3.1 bei Rotationen um eine sich zufallsmäßig ändernde Zahl von Bits rotiert wird. 1.3 Das System steuert sich selbst, indem alle Funktionen durch Parameter gesteuert werden. 1.3.1 Alle Parameter werden aus diversen zufallsmäßigen Zwischensummen des Systems extrahiert, womit sie ebenfalls zufallsähnlichen Charakter annehmen. Die Parameter werden für folgende Funktionen eingesetzt: 1.3.2 Rotation/Plus: 14mal Parameter 1 bis 31, in 7 Registern gespeichert, welche zweimal im Zyklus erneuert werden, und zwar mehrere Segmente vor der Anwendung. 1.3.3 Code-Ausgabe: 24mal Parameter 0 bis 24 für die einfache Rotation der Code-Ausgabe Reihe 2 und für die bitweise Generierung der Codereihe 1 (1.4.1). 1.3.4 Alternative Auswahl von Addition oder XOR: 15mal zweiwertige Parameter als Flag, die nach dem Kriterium X < A0? bestimmt werden, wobei X ein Register des aktuellen oder vorigen Zyklus und A0 das aktuelle Arbeitsregister ist. 1.3.5 Alternative Auswahl der Schlüsselelemente K oder L (System- oder Arbeitsschlüssel): sechsmal zweiwertige Parameter als Flag, die nach dem Kriterium A0 = ungerade? ermittelt werden. 1.4 Die 24 Codes je Zyklus werden, in zwei Reihen zu je 12 Codes gegliedert, auf unterschiedliche Weise durch Parametersteuerung ermittelt. 1.4.1 Die Schlüsselcodes der Reihe 2 entstehen durch einfache Rotation und anschließendem modulo, während die Schlüsselcodes der Reihe 1 durch eine Parameterschleife gesteuert werden, bestehend aus elf Parametern, wobei jeweils 8 Bits einzeln nach verschiedenen Parametern aus dem aktuellen Register A0 ausgewählt werden. 1.4.2 Die Codes der Reihe 1 werden mit denen der Reihe 2 nach einem willkürlichen Schema zyklusübergreifend XOR-verknüpft. 1.4.3 Die Code-Reihen 1 und 2 werden ineinander verschachtelt ausgegeben.
  2. 2 Verfahren nach Anspruch 1, gekennzeichnet durch folgende Sicherheits-Merkmale: 2.1 Der Algorithmus wird blockiert, indem verhindert wird, daß der interne 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. Die Blockade des Algorithmus (2.1) wird wie folgt realisiert: 2.3 Alle 12 Zufalls-Schlüsselsegmente nach 2.4.3 werden ständige Bestandteile des internen Generator-Zustands. 2.3.1 Der Schlüssel wird in gleichen Teilen den sechs Segmenten zugeordnet. 2.3.2 Die einzelnen Schlüsselsegmente arbeiten unabhängig voneinander wie selbständige Schlüssel. 2.3.3 Die Schlüsselsegmente werden in jedem Zyklus als ständige Summanden verwendet. Der One-Time-Pad-Modus (2.2) wird wie folgt installiert: 2.4 Mit Hilfe eines Modifikators wird ein zweiter Schlüssel eingeführt. 2.4.1 Der Modifikator M und der Systemschlüssel K bilden durch Addition den zweiten Schlüssel, der als Arbeitsschlüssel L in die A-Register übertragen wird und die Anfangsposition des Generators bildet. 2.4.2 Der Modifikator wird vor jeder Codierung neu generiert, bildet durch Modifizierung des Systemschlüssels einen neuen Arbeitsschlüssel und wird unverschlüsselt übertragen. 2.4.3 Jedes Segment hat zwei gleichwertige Schlüsselelemente K und L, die nach 1.3.5 alternativ als ständige Summanden im Algorithmus verwendet werden, wobei alle Schlüsselelemente nur im Original benutzt werden. 2.4.4 Für ein echtes One-Time-Pad kann der Modifikator als zweiter Zufallsschlüssel generiert werden, der mit einem zusätzlichen öffentlichen Modifikator zu verschlüsseln ist.
DE200610030325 2006-06-30 2006-06-30 Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen Expired - Fee Related DE102006030325B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200610030325 DE102006030325B4 (de) 2006-06-30 2006-06-30 Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610030325 DE102006030325B4 (de) 2006-06-30 2006-06-30 Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen

Publications (2)

Publication Number Publication Date
DE102006030325A1 DE102006030325A1 (de) 2008-01-03
DE102006030325B4 true DE102006030325B4 (de) 2009-12-31

Family

ID=38776967

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610030325 Expired - Fee Related DE102006030325B4 (de) 2006-06-30 2006-06-30 Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen

Country Status (1)

Country Link
DE (1) DE102006030325B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111159721B (zh) * 2018-11-08 2024-03-01 陈麟华 变易密钥的码控式数据加密方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0443752A2 (de) * 1990-02-21 1991-08-28 General Instrument Corporation Of Delaware Einrichtung zur Blockchiffrierung, welche auf der Anwendung eines nichtlinearen Pseudozufallsfolgengenerators beruht
EP1583278A1 (de) * 2004-03-31 2005-10-05 Microsoft Corporation Entwurf eines Schlüsselstromes mit drehenden Zwischenspeichern
US6961427B1 (en) * 1999-11-23 2005-11-01 General Instrument Corporation Methods and apparatus for keystream generation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0443752A2 (de) * 1990-02-21 1991-08-28 General Instrument Corporation Of Delaware Einrichtung zur Blockchiffrierung, welche auf der Anwendung eines nichtlinearen Pseudozufallsfolgengenerators beruht
US6961427B1 (en) * 1999-11-23 2005-11-01 General Instrument Corporation Methods and apparatus for keystream generation
EP1583278A1 (de) * 2004-03-31 2005-10-05 Microsoft Corporation Entwurf eines Schlüsselstromes mit drehenden Zwischenspeichern

Also Published As

Publication number Publication date
DE102006030325A1 (de) 2008-01-03

Similar Documents

Publication Publication Date Title
EP2433242B1 (de) Verwendung einer zeichenkette in systemen der kryptographie, der statistik, der simulation, der randomisierung, von spielautomaten und dgl.
DE19827904C2 (de) Blockchiffrier- oder -dechiffrierverfahren und Blockchiffrier- oder -dechiffriervorrichtung
DE10201449C1 (de) Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
DE60121566T2 (de) Verschlüsselungsverfahren, Verschlüsselungsprogramm, Speichermedium zur Aufzeichnung des Programms, und Verschlüsselungsvorrichtung sowie Entschlüsselungsverfahren und Entschlüsselungsvorrichtung
DE60025901T2 (de) Verfahren und Vorrichtung zur Markierung eines Textdokuments mit einem Muster von zusätzlichen Leerstellen zum Zweck der Authentifizierung
DE69831982T2 (de) Kryptographisches vermittlungsverfahren und gerät
EP1777913B1 (de) Verfahren zur Verschlüsselung bzw. Entschlüsselung von Datenpaketen eines Datenstroms
DE60315700T2 (de) Verfahren zum erzeugen einer stromverschlüsselung mit mehreren schlüsseln
CH660822A5 (de) Zufallsprimzahlen-erzeugungsmittel in einer mit oeffentlichem schluessel arbeitenden daten-verschluesselungsanlage.
DE60221850T2 (de) Verfahren und vorrichtung zur datenverschlüsselung
DE10129285A1 (de) Verschlüsselungsverfahren mit beliebig wählbaren Enmalschlüsseln
AT510730B1 (de) Verfahren und vorrichtung zur durchführung einer symmetrischen stromverschlüsselung von daten
DE102004042826B4 (de) Verfahren und Vorrichtung zur Datenverschlüsselung
DE102012111383A1 (de) Computerimplementiertes Verfahren zum Ersetzen eines Datenstrings
EP3552344B1 (de) Bidirektional verkettete blockchainstruktur
DE69737806T2 (de) Datenverschlüsselungsverfahren
DE19831347C2 (de) Initialisierungsprogramm für einen Codierdatengenerator
DE60038042T2 (de) Einserkomplement-verschlüsselungskombinator
DE102006030325B4 (de) Verfahren für die Konstruktion eines Schlüsselstrom-Generators zur Erzeugung von Pseudo-Zufallszahlen für kryptographische Anwendungen
EP3480724A1 (de) Computerimplementiertes verfahren zum ersetzen eines datenstrings durch einen platzhalter
DE10345378B4 (de) Verfahren und Vorrichtung zur Ver-/Entschlüsselung
DE102004018874B4 (de) Verfahren und Vorrichtung zum Bestimmen eines Ergebnisses
EP3734486B1 (de) Computerimplementiertes verfahren zum ersetzen eines datenstrings
DE10158003B4 (de) Verfahren zur Erzeugung von Schlüsseln für die Datenverschlüsselung sowie Verfahren zur Datenverschlüsselung
AT515097A4 (de) Verschlüsselungsverfahren und Pseudo-Zufallszahlengenerator

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8122 Nonbinding interest in granting licenses declared
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20120103