-
Die vorliegende Erfindung betrifft
im allgemeinen ein Verfahren und eine Vorrichtung zum Entwickeln einer
Verschlüsselungslogik
einer Verschlüsselungsanordnung,
die ein Verschlüsseln
oder Dechiffrieren pro Block unter Verwendung einer F-Funktion zum
Konvertieren von Eingabebits in Ausgabebits mittels einer Vielzahl
von S-Boxen bewirkt. Im besonderen betrifft diese Erfindung ein
Verfahren und eine Vorrichtung, durch die ein rasches und effektives
Selektieren einer optimalen S-Box möglich ist, die einer Computerleistung
entspricht, wenn eine Blockverschlüsselung mit gemeinsamem Schlüssel (common
key) mit S-Boxen entwickelt wird. Diese Erfindung betrifft auch
ein Computerprogramm, das auf einem Aufzeichnungsmedium gespeichert werden
kann und das dann, wenn es ausgeführt wird, das Verfahren gemäß der vorliegenden
Erfindung auf einem Computer realisiert. Zusätzlich betrifft diese Erfindung
eine Verschlüsselungsanordnung
(Chiffriersystem), bei der das obige Verfahren, die Vorrichtung
oder das Programm zum Einsatz kommt.
-
Bei dem heutigen Fortschritt auf
dem Gebiet der Kommunikationsinformationstechnik werden wichtige Informationen
durch verschiedene Typen von Kommunikationsmedien vorgesehen, die
die verdrahtete, drahtlose und Satellitenkommunikation enthalten.
Es ist jedoch erforderlich, solche wichtigen Informationen auf die sicherste
Weise zu übertragen.
-
Verschiedene Arten von Verschlüsselungsprotokollen,
wie beispielsweise ein Kryptosystem mit Geheimschlüssel (secret
key) oder ein Kryptosystem mit öffentlichem
Schlüssel
(public key), sind entwickelt worden und zum übertragen der Informationen
auf gesicherte Weise verwendet worden. Das Kryptosystem mit Geheimschlüssel, das
ein Typ der Blockverschlüsselung
mit gemeinsamem Schlüssel
ist, hat sich hinsichtlich der Hochgeschwindigkeitsverschlüsselungskommunikation
als das geeignetste erwiesen.
-
Eine Reihe von Verschlüsselungsalgorithmen
ist als herkömmliche
Blockverschlüsselung
mit gemeinsamem Schlüssel
vorgeschlagen worden. Die meisten derartigen Algorithmen verwenden
eine einfache und sich wiederholende Struktur, die als Feistel-Struktur
bezeichnet wird. In einem internen Abschnitt dieser Feistel-Struktur,
die auch als F-Funktion bezeichnet wird, sind nichtlineare Funktionen
ausgerichtet, die als S-Boxen bezeichnet werden, und in den meisten
Fällen
wird eine Kombination von Ausgaben durch eine lineare Funktion verteilt.
Die interne Struktur, die als F-Funktion bezeichnet wird, ist im
allgemeinen als SPN-(Substitution Permutation Network)-Struktur
bekannt.
-
Es ist keineswegs leicht, die S-Boxen
zu entwickeln, die den Sicherheitskern der Blockverschlüsselung
mit gemeinsamem Schlüssel
bilden. Wenn mehrere Arten von S-Boxen verwendet werden, ist ferner
eine größere Speicherkapazität erforderlich,
um die S-Boxen zu speichern. Daher wird bei der allgemeinen Blockverschlüsselung
mit gemeinsamem Schlüssel,
um die Entwicklungskosten von S-Boxen und Speicherkapazität zu reduzieren
und dadurch die Struktur derselben zu vereinfachen, dieselbe S-Box
wiederholt verwendet, oder die S-Boxen mit derselben Eingangsgröße oder
Ausgangsgröße werden
wiederverwendet.
-
Da die Eingabebitanzahl bei der Blockverschlüsselung
mit gemeinsamem Schlüssel
im allgemeinen 64 oder 128 beträgt,
werden S-Boxen mit einem 2n-Bit-Eingang
verwendet, wenn die S-Boxen mit derselben Größe ohne jegliche Duplizierung
eingesetzt werden. Tatsächlich
haben die S-Boxen jedoch entweder einen 4-Bit- oder einen 8-Bit-Eingang
auf Grund der Implementierungseinschränkung.
-
Das heißt, da die S-Boxen die Abschnitte
sind, die in der Verschlüsselungsvorrichtung
am häufigsten konsultiert
werden, beeinträchtigen
sie höchstwahrscheinlich
die Ver schlüsselungsrate.
Aus diesem Grund ist es wünschenswert,
die Entwicklung auf solch eine Weise vorzunehmen, daß die gesamte
Tabelle, die die S-Boxen repräsentiert,
in einer am schnellsten konsultierbaren Speichervorrichtung (im
allgemeinen ein Primär-Cache-Speicher)
in einem Computer enthalten ist. Falls die Eingabebitanzahl der
S-Boxen jedoch zunimmt, nimmt die Tabellengröße allmählich exponentiell zu. Da eine
obere Grenze der in der Praxis verwendbaren Tabellengröße vorhanden
ist, fällt
die Zugriffsrate mehr ab als der Zahlenwert, falls eine Tabelle
konsultiert werden sollte, die die Speicherkapazität der Speicheranordnung überschreitet.
Angesichts dessen sind nur der 4-Bit-Eingang oder der 8-Bit-Eingang
realisierbare Alternativen für
S-Boxen mit einem
2n-Eingang, um Nachteile in dem Zustand,
wie er implementiert wird, zu vermeiden.
-
Die Speicherkapazität von heutigen
Computern nimmt von Jahr zu Jahr zu. Obwohl es zu früh sein kann,
S-Boxen mit einem 16-Bit-Eingang einzusetzen, kann nicht gesagt
werden, daß die
Speicherquelle der Computer durch S-Boxen mit einem 8-Bit-Eingang
voll genutzt wird.
-
Mit anderen Worten, S-Boxen mit einem
Eingang mit kleinerer Bitanzahl können in dem Primär-Cache-Speicher
in Computern von fast jedem Typ enthalten sein. Auf diese Weise
nimmt jedoch die Gesamtanzahl der S-Boxen zu, und damit auch die
Anzahl der Male des Konsultierens der S-Boxen, wodurch sich das Problem
ergibt, daß die
Leistungsrate reduziert wird.
-
Demgegenüber kann durch S-Boxen mit
einem Eingang mit größerer Bitanzahl
die Anzahl der Male des Konsultierens der S-Boxen reduziert werden,
aber die Größe der Tabelle,
die die S-Boxen bildet, nimmt zu. Daher können die S-Boxen nicht in dem
Primär-Cache-Speicher
enthalten sein und müssen
in einer anderen Speicheranordnung installiert werden, die eine niedrigere
Konsultationsrate hat. Aus diesem Grund dauert jede Konsultation
der Tabelle länger,
wodurch das Problem verursacht wird, daß eine Gesamtleistungsrate
reduziert wird.
-
Angesichts dessen ist es ziemlich
wichtig, wie eine optimale S-Box, die der Computerleistung entspricht,
selektiert werden sollte, wenn eine Blockverschlüsselung mit gemeinsamem Schlüssel mit
S-Boxen entwickelt wird.
-
PRENEEL B ET AL: 'STATE OF THE ART IN APPLIED CRYPTOGRAPHY' COURSE ON COMPUTER
SECURITY AND INDUSTRIAL CRYPTOGRAPHY. REVISED LECTURES, LEUVEN,
BELGIEN, 3.–6. JUNI
1997, Seiten 105–130,
XP000979891 1997, Deutschland, Springer-Verlag, ISBN: 3-540-65474-7,
offenbart ein Verschlüsselungsentwicklungsverfahren
gemäß der Präambel des
unabhängigen
Verfahrensanspruchs. Es ist auch offenbart, daß S-Boxen mit mehr Ausgabebit
eine höhere
Effektivität
vorsehen können und
daß die
S-Boxen in den schnellen Cache-Speicher passen sollten. Gemäß diesem
Dokument sind S-Boxen mit 8 Eingabebit und 32 oder 64 Ausgabebit
für 32-Bit-
oder 64-Bit-Architekturen
besonders geeignet.
-
SCHNEIER B ET AL: 'Fast software encryption:
designing encryption algorithms for optimal Software Speed on the
Intel Pentium processor' FAST
SOFTWARE ENCRYPTION, 4. INTERNATIONALER WORKSHOP, FSE '97 PROCEEDINGS, HAIFA,
ISRAEL, 20.–22.
JAN. 1997, Seiten 242–259,
XP008002230 1997, Berlin, Deutschland, Springer-Verlag, Deutschland
ISBN: 3-540-63247-6, offenbart, daß größere Tabellen für S-Boxen
unter dem kryptographischen Gesichtspunkt besser sind, daß aber kleinere
unter dem Gesichtspunkt der Softwaregeschwindigkeit besser sind.
Es wird hervorgehoben, daß eine
wesentliche Leistungsminderung eintreten kann, falls die Tabellen
nicht in den chipintegrierten Daten-Cache der CPU passen.
-
Ausführungsformen der Erfindung
können
ein Verfahren und eine Vorrichtung zum Entwickeln einer Verschlüsselungslogik
vorsehen, durch die ein rasches und effektives Selektieren einer
optimalen S-Box möglich
ist, die der Computerleistung entspricht, wenn eine Blockverschlüsselung
mit gemeinsamem Schlüssel
mit S-Boxen entwickelt wird. Eine Ausführungsform der vorliegenden
Erfindung kann auch ein Computerprogramm vorsehen (das auf einem
Aufzeichnungsmedium gespeichert werden kann), welches das Verfahren
gemäß der vorliegenden
Erfindung auf einem Computer realisiert.
-
Bei dem Verfahren und der Vorrichtung
zum Entwickeln einer Verschlüsselungslogik
der vorliegenden Erfindung wird eine Eingabe- und Ausgabebitanzahl
einer Vielzahl von S-Boxen
auf der Basis der Speicherkapazität des mit hoher Geschwindigkeit
konsultierbaren Speichers selektiert, der in einer Verschlüsselungsanordnung
vorgesehen ist, und wird eine Vielzahl von S-Boxen mit der selektierten
Eingabe- und Ausgabebitanzahl erzeugt. Demzufolge kann eine optimale
S-Box, die der Computerleistung
entspricht, rasch und effektiv selektiert werden, wenn eine Blockverschlüsselung
mit gemeinsamem Schlüssel
mit S-Boxen entwickelt wird.
-
Das Computerprogramm der vorliegenden
Erfindung kann auf einem Aufzeichnungsmedium gespeichert sein, und
es kann das Verfahren gemäß der vorliegenden
Erfindung auf einem Computer realisieren. Demzufolge kann das Verfahren
gemäß der vorliegenden
Erfindung leicht und automatisch auf dem Computer realisiert werden.
-
Das Verfahren, die Vorrichtung oder
das Programm der vorliegenden Erfindung kann Teil eines Chiffriersystems
sein, wie etwa eines Computers, der zur Übertragung von sicheren Informationen
ausgelegt ist.
-
Nun wird beispielhaft Bezug auf die
beiliegenden Zeichnungen genommen, in denen:
-
1 ein
Funktionsblockdiagramm ist, das eine Anordnung einer Verschlüsselungsentwicklungsvorrichtung
gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt;
-
2 ein
Flußdiagramm
ist, das eine Verarbeitungsprozedur der Verschlüsselungsentwicklungsvorrichtung
von 1 zeigt;
-
3 ein
Flußdiagramm
ist, das eine S-Box-Optimierungsprozedur zeigt, die bei Schritt
S3 von 2 angeführt ist;
-
4 ein
Flußdiagramm
ist, das eine S-Box-Erzeugungsprozedur einer S-Box-Erzeugungseinheit
von 1 zeigt;
-
5 ein
Diagramm ist, das ein Beispiel für
eine F-Funktion
(wie entwickelt) zeigt, die durch eine F-Funktions-Erzeugungseinheit
von 1 erzeugt wurde;
-
6 ein
Diagramm ist, das ein Beispiel für
die Feistel-Struktur zeigt, wenn die in 5 gezeigte F-Funktion verwendet wird;
-
7 ein
Flußdiagramm
ist, das eine Verarbeitungsprozedur zeigt, wenn die Verschlüsselungsentwicklungsvorrichtung
von 1 auf einem Computer
implementiert wird;
-
8 ein
Flußdiagramm
ist, das eine S-Box-Extraktionsverarbeitungsprozedur zeigt, die
bei Schritt S32 von 7 angeführt ist;
-
9 ein
Flußdiagramm
ist, das eine Kombinationstabellenerzeugungsprozedur zeigt, die
bei Schritt S33 von 7 angeführt ist;
-
10 ein
Flußdiagramm
ist, das eine Prozedur zum Kombinieren der S-Boxen und eine lineare Transformation
L zeigt; und
-
11 ein
Diagramm ist, das ein Beispiel für
die F-Funktion (wie
implementiert) gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt.
-
Eine bevorzugte Ausführungsform
des Verfahrens und der Vorrichtung zum Entwickeln einer Verschlüsselungslogik
und des Computerprogramms der vorliegenden Erfindung wird im folgenden
unter Bezugnahme auf die beiliegenden Zeichnungen erläutert. Bei
der folgenden Erläuterung
wird der Fall angenommen, daß ein
Pentium-II-Prozessor mit einem 16-kByte-Primär-Cache-Speicher
verwendet wird.
-
Zunächst wird die Konfiguration
der Verschlüsselungsentwicklungsvorrichtung
gemäß der vorliegenden
Ausführungsform
erläutert. 1 ist ein Funktionsblockdiagramm,
das die Konfiguration der Verschlüsselungsentwicklungsvorrichtung
der vorliegenden Erfindung zeigt. Die Verarbeitungsanordnung 1 lädt Programme,
die von einem nichtgezeigten Aufzeichnungsmedium gelesen werden,
auf ihren nichtgezeigten Hauptspeicher herunter und startet den
Ablauf jedes Prozesses, der im folgenden beschrieben ist. Die Verarbeitungsanordnung 1 umfaßt eine
Eingabeeinheit 2, eine Optimierungsverarbeitungseinheit 3,
eine S-Box-Erzeugungseinheit 4, eine F-Funktions-Erzeugungseinheit 5 und
dergleichen.
-
Die Eingabeeinheit 2 wird
verwendet, wenn Parameter eingegeben werden. Beispiele für die Parameter
sind Speicherkapazität
des Primär-Cache-Speichers
in dem Computer, Eingabe- und Ausgabebitgesamtanzahl und kleinste
Eingabe- und Ausgabeanzahl
der S-Box.
-
Die Optimierungsverarbeitungseinheit 3 optimiert
die Eingabe- und Ausgabebitanzahl der S-Box auf der Basis der von
der Eingabeeinheit 2 eingegebenen Parameter.
-
Das heißt, die Optimierungsverarbeitungseinheit 3 dividiert
einen Wert 32, der als Eingabe- und Ausgabebitgesamt anzahl gegeben
ist, durch einen Wert 5, der als kleinste Eingabe- und Ausgabeanzahl
gegeben ist, um einen Satz von "5
5 5 5 5 5" zu ergeben,
und ordnet den Rest den am weitesten entfernten Positionen zu, um
einen Satz von "6
5 5 5 5 6" zu ergeben,
Anschließend
kombiniert die Optimierungsverarbeitungseinheit 3 immer
zwei oder drei benachbarte Bitketten, um einen Satz von "11 10 11" oder "16 16" zu ergeben. Dann beurteilt
die Optimierungsverarbeitungseinheit 3, ob diese in dem
Primär-Cache-Speicher
enthalten sein können
oder nicht, und selektiert diejenige als optimale Eingabe- und Ausgabebitanzahl,
bei der beurteilt wurde, daß sie
enthalten sein kann.
-
Der Grund dafür, daß der obige Prozeß ausgeführt wird,
ist wie folgt. Durch das Verwenden der größten S-Box im Rahmen der Speicherkapazität des Primär-Cache-Speichers
kann nicht nur der Primär-Cache-Speicher
voll genutzt werden, auf den mit hoher Geschwindigkeit zugegriffen
werden kann, sondern kann auch die Anzahl der Male des Zugreifens
auf die S-Box reduziert werden, wodurch eine Hochgeschwindigkeitsverschlüsselung/-dechiffrierung
(Chiffrierung/Dechiffrierung) realisiert wird.
-
Die S-Box-Erzeugungseinheit 4 erzeugt
die S-Box gemäß der optimierten
Eingabe- und Ausgabeanzahl der S-Box. Das heißt, die S-Box-Erzeugungseinheit 4 erzeugt
eine S-Box mit der Eingabe- und Ausgabeanzahl, die durch die Optimierungsverarbeitungseinheit 3 optimiert
wurde.
-
Die F-Funktions-Erzeugungseinheit 5 erzeugt
die F-Funktion. Das heißt,
die F-Funktions-Erzeugungseinheit 5 richtet eine Vielzahl
von S-Boxen aus, die durch die S-Box-Erzeugungseinheit 4 erzeugt
wurden, und erzeugt eine F-Funktion, die die Ausgabe von jeder S-Box
kollektiv linear transformiert, indem jeder S-Box das Resultat einer
Exklusiv-ODER-Operation
der Eingabe und eines Schlüssels
eingegeben wird.
-
Eine Eingabedatei 6 umfaßt eine
Computerparameterdatei, die die Speicherkapazität des Primär-Cache-Speichers in dem Computer
oder dergleichen speichert, und eine S-Box-Parameterdatei, die alle
Arten von Daten bezüglich
der S-Box und dergleichen speichert.
-
Eine Ausgabedatei 7 umfaßt eine
Ausgabedatei der S-Box (wie entwickelt/wie implementiert), eine Ausgabedatei
der F-Funktion (wie
entwickelt/wie implementiert) und eine Ausgabedatei der Feistel-Struktur-Daten
(wie entwickelt/wie implementiert). Diese Ausgabedatei 7 kann
andere Dateien umfassen, die hier nicht erwähnt sind.
-
Die Anzeigeanordnung 8 ist
eine CRT, eine Flüssigkristallplatte
oder dergleichen. Diese Anzeigeanordnung 8 zeigt Bilder
an. Die Eingabe- und Ausgabeanordnung 9 enthält solche
Anordnungen wie Drucker, Plattenanordnungen, eine Anzeigeanordnung,
eine Speicheranordnung, etc.
-
Als nächstes wird hier unter Bezugnahme
auf 2 die Reihenfolge
der Prozedur erläutert,
die durch die in 1 gezeigte
Verschlüsselungsentwicklungsvorrichtung
ausgeführt
wird. Bei der Verschlüsselungsentwicklungsvorrichtung
wird zuerst die Speicherkapazität
des Primär-Cache-Speichers
in dem Computer, wie in 2 gezeigt,
als Parameter eingegeben (Schritt S1). Zum Beispiel wird bei einem
Pentium-II-Prozessor "16 kByte" eingegeben und wird
bei einem PA-RISC-Prozessor "1 MByte" eingegeben.
-
Dann werden Parameter der S-Box und
die Gesamteingabe und -ausgabe eingegeben (Schritt S2). Es wird
angenommen, daß die
Eingabe- und Ausgabebitanzahl der S-Box 5 oder größer ist
und die Eingabe- und Ausgabebitgesamtanzahl 32 beträgt.
-
Dann wird die S-Box optimiert (Schritt
S3). Das heißt,
ein Wert 32, der als Eingabe- und Ausgabebitgesamtanzahl gegeben
ist, wird durch einen Wert 5 dividiert, der als kleinste Eingabe-
und Ausgabebitanzahl der S-Box gegeben ist, um einen Satz von sechs
5-Bit-Ketten, nämlich "5 5 5 5 5 5", und einen 2-Bit-Rest
zu ergeben. Dann wird der 2-Bit-Rest
den am weitesten entfernten Positionen zum Beispiel am linken Ende
und am rechten Ende zugeordnet, um einen Satz von "6 5 5 5 5 6" zu ergeben.
-
Anschließend wird eine Kombinationszahl
von Kombinationsbitketten auf der Basis der Speicherkapazität des Primär-Cache-Speichers bestimmt,
und die S-Box wird durch das Kombinieren der obigen sechs Bitketten
auf der Basis der Kombinationszahl optimiert. Wenn die Speicherkapazität des Primär-Cache-Speichers zum
Beispiel 16 kByte beträgt,
werden immer zwei Bitketten kombiniert, um einen Satz zu ergeben,
der drei Kombinationen hat, nämlich "11 10 11". Wenn die Speicherkapazität des Primär-Cache-Speichers
1 MByte beträgt,
werden immer drei Bitketten kombiniert, um einen Satz mit zwei Kombinationen
zu ergeben, nämlich "16 16". Wie die Kombinationszahl
auf der Basis der Speicherkapazität des Primär-Cache-Speichers bestimmt wird,
wird unten beschrieben.
-
Im Anschluß daran wird die S-Box auf
der Basis der optimierten Eingabe- und Ausgabebitanzahl der S-Box
erzeugt (Schritt S4), und die F-Funktion (der Geheimschlüssel bezüglich der
F-Funktion, ein Schlüssel mit
derselben Bitanzahl wie die Eingabe- und Ausgabebitanzahl der F-Funktion,
etc.) wird unter Verwendung der so erzeugten S-Box erzeugt (Schritt
S5), wonach die Verschlüsselung
unter Verwendung der so erzeugten F-Funktion erzeugt wird.
-
Durch die obige Serie von Prozessen
kann die Eingabe- und
Ausgabebitanzahl der S-Box nach Eingabe der Parameter (Speicherkapazität des Primär-Cache-Speichers
und Eingabe- und
Ausgabebitgesamtanzahl) des Computers oder dergleichen automatisch
optimiert werden, wodurch es möglich
wird, die optimierte S-Box, die F-Funktion und die Verschlüsselung
zu erzeugen.
-
Als nächstes wird die bei Schritt
S3 von 2 angeführte S-Box-Optimierungsprozedur
eingehender erläutert. 3 ist ein Flußdiagramm,
das die bei Schritt S3 von 2 angeführte S-Box-Optimierungsprozedur
zeigt. Es wird angenommen, daß die
Eingabe- und Ausgabebitanzahl der S-Box 5 oder größer ist
und daß die
Eingabe- und Ausgabebitgesamtanzahl 32 beträgt.
-
Wie in 3 gezeigt,
werden zuerst 5-Bit-Ketten von insgesamt bis zu 32 Bit ausgerichtet
(Schritt S11). Genauer gesagt, der kleinste Wert wird gemäß dem Eingabeparameter
auf 5 Bit festgelegt (die Eingabe- und Ausgabebitanzahl der S-Box
beträgt
5 oder mehr), und ein Wert 32, der als Eingabe- und Ausgabebitgesamtanzahl
gegeben ist, wird durch einen Wert 5 dividiert, der als kleinste
Eingabe- und Ausgabebitanzahl der S-Box festgelegt wurde. Dann werden
dividierte Bitketten von insgesamt bis zu 32 Bit ausgerichtet, wodurch sich
ein Satz von "5
5 5 5 5 5" (mit
dem 2-Bit-Rest) ergibt.
-
Dann wird der 2-Bit-Rest beliebigen
gewünschten
Positionen zugeordnet (Schritt S12). Hierin werden die am weitesten
entfernten Positionen selektiert, und die zwei Bit werden jeweilig
dem linken Ende und rechten Ende zugeordnet, um einen Satz von "6 5 5 5 5 6" zu ergeben.
-
Anschließend wird solch eine Kombination
ermittelt, die die Speichergröße des Primär-Cache-Speichers
nicht überschreitet
(Schritt S13). Genauer gesagt, immer zwei oder drei der Eingabe-
und Ausgabebitzahlen der S-Boxen, die bei Schritt S12 ausgerichtet
wurden, werden ab dem linken Ende kombiniert, um einen Satz von "11 10 11" (wenn immer zwei
Eingabe- und Ausgabezahlen kombiniert werden) und einen Satz von "16 16" (wenn immer drei
Eingabe- und Ausgabezahlen kombiniert werden) zu ergeben.
-
Dann wird a = ganzzahliger Abschnitt
von ((Eingabe- und Ausgabebitgesamtanzahl)/log2 (Cache-Größe)) + 1
berechnet (Schritt S14). Wenn zum Beispiel 32 als Eingabe- und Ausgabebitgesamtanzahl
und 16 kByte als Cache-Größe gegeben
ist, ist dann
-
-
Anschließend wird die Kombinationszahl
b, die nach dem Kombinationsprozeß bei Schritt S13 erhalten
wird, mit dem bei Schritt S14 erhaltenen Wert a (Wert der endgültigen Kombinationszahl)
verglichen (Schritt S15). Wenn b = a ist (wenn die Kombinationszahl
b bei Schritt 13 dem endgültigen
Wert a (zum Beispiel 3) gleich ist), ist der Optimierungsprozeß vollendet
(Schritt S16). Wenn andererseits b > a ist, kehrt die Verschlüsselungsentwicklungsvorrichtung
zu Schritt S11 zurück,
um den Kombinationsprozeß zu
wiederholen.
-
Auf diese Weise wird die Eingabe-
und Ausgabegesamtanzahl (zum Beispiel 32 Bit) durch die kleinste Eingabe-
und Ausgabeanzahl (zum Beispiel 5 Bit) der durch den Parameter spezifizierten
S-Box dividiert, und die dividierten Bitketten werden ausgerichtet.
Wenn ein Rest vorhanden ist, wird er den am weitesten entfernten
Positionen zugeordnet, um einen Satz von Eingabe- und Ausgabeversuchsanzahlen
der S-Box zu erzeugen.
Die Eingabe- und Ausgabeanzahl wird durch wiederholtes Kombinieren
der Eingabe- und Ausgabeanzahlen optimiert, bis die Kombinationszahl
b dem endgültigen
Wert a gleich wird, der gemäß der Eingabe-
und Ausgabebitgesamtanzahl und der Cache-Größe ermittelt wurde. Somit wird
die Anzahl der Male des Konsultierens der S-Boxen durch das Minimieren
der Kombinationszahl der S-Boxen reduziert, um in dem Primär-Cache-Speicher
enthalten zu sein, wodurch es möglich
wird, die S-Box für
jeden Computer separat zu optimieren.
-
Die folgende Beschreibung betrifft
als nächstes
die S-Box-Erzeugungsprozedur
der S-Box-Erzeugungseinheit 4, die in 1 gezeigt ist. 4 ist ein Flußdiagramm, das die S-Box-Erzeugungsprozedur
der S-Box-Erzeugungseinheit 4 von 1 zeigt.
-
Wie in 4 gezeigt,
werden zuerst die Zuordnungszahlen nach der Optimierung extrahiert
(Schritt S21). Im Fall der Optimierung mit drei Kombinationen, wie
es bei Schritt S3 von 2 erläutert wurde,
werden zum Beispiel die Werte 6 und 5 extrahiert.
-
Dann wird eine nichtlineare Tabelle
mit der Eingabe-/ Ausgabebitanzahl entsprechend jeder Zuordnungszahl
erzeugt (Schritt S22). Zum Beispiel wird, wie auf der rechten Seite
der Zeichnung gezeigt, eine nichtlineare Tabelle erzeugt, die die
5-Bit-Eingabe als Adresse und eine 5-Bit-Ausgabe hat. Ferner wird
eine nichtlineare Tabelle für
6 Bit erzeugt. Bei der obigen Prozedur können die nichtlinearen Tabellen
in der Anzahl der Kombinationszahl der S-Boxen nach der Optimierung
erzeugt werden.
-
Als nächstes folgt eine Beschreibung
eines Beispiels für
die F-Funktion, die durch die F-Funktions-Erzeugungseinheit 5 von 1 erzeugt wird. 5 ist eine Ansicht, die
ein Beispiel für
die F-Funktion (wie entwickelt) zeigt, die durch die F-Funktions-Erzeugungseinheit 5 von 1 erzeugt wird.
-
Wie in 5 gezeigt,
werden die S-Boxen (nichtlineare Tabellen), die bei der ausführlich beschriebenen
Verarbeitungsprozedur von 4 erzeugt
wurden, ausgerichtet und miteinander verbunden, wobei jede mit dem
Großbuchstaben
S bezeichnet ist. Ein Exklusiv-ODER der Eingabe- und Ausgabegesamtanzahl
von 32 Bit und eines 32-Bit-Schlüssels
wird berechnet, und das Berechnungsresultat des XOR wird in 6 Bit,
5 Bit, 5 Bit, 5 Bit, 5 Bit und 6 Bit dividiert. Dann wird die Schaltung
gebildet, um diese dividierten Bit ihren jeweiligen S-Boxen einzugeben.
Ferner wird die Schaltung gebildet, um die Ausgabebit von allen
S-Boxen zu addieren, um 32 Bit zu ergeben, um durch eine lineare
Transformationsschaltung L ausgegeben zu werden. Gemäß der obigen
Anordnung kann die F-Funktion unter Verwendung der S-Boxen, die
jeweils die optimierte Eingabe- und Ausgabeanzahl haben, für jeden
Computer erzeugt (entwickelt) werden.
-
Als nächstes folgt eine Beschreibung
eines Beispiels für
die Feistel-Struktur unter Verwendung der F-Funktion, die in 5 gezeigt ist. 6 ist ein Diagramm, das
ein Beispiel für
die Feistel-Struktur unter Verwendung der F-Funktion von 5 zeigt.
-
Die in 6 gezeigte
Feistel-Struktur arbeitet als Verschlüsselungsschaltung oder Dechiffrierschaltung,
und nach Eingabe von Klartext oder einem Verschlüsselungstext von dem oberen
Abschnitt fließen
Verarbeitungsresultate abwärts,
wie durch Pfeile gezeigt, und unten wird ein Verschlüsselungstext
oder Klartext ausgegeben. Da das Konsultieren der S-Boxen, die jeweils
die F-Funktion innerhalb der gezeigten Struktur bilden, so optimiert
wird, daß der
Zugriff auf den Primär-Cache-Speicher
in jedem Computer möglich
ist, kann der Verschlüsselungsprozeß oder Dechiffrierprozeß mit hoher
Geschwindigkeit ausgeführt
werden, wobei der für
jeden Computer einzigartige Primär-Cache-Speicher vollständig genutzt
wird.
-
Als nächstes folgt eine Beschreibung
der Verarbeitungsprozedur, wenn die Verschlüsselungsentwicklungsvorrichtung,
die in 1 gezeigt ist,
auf einem Computer implementiert wird. 7 ist ein Flußdiagramm, das die Verarbeitungsprozedur
zeigt, wenn die Verschlüsselungsentwicklungsvorrichtung
von 1 auf einem Computer
implementiert wird.
-
Wie in 7 gezeigt,
wird zuerst die Speicherkapazität
des Primär-Cache-Speichers
in dem Computer als Parameter eingegeben (Schritt S31). Im Falle
des Pentium-II-Prozessors wird "16
kByte" eingegeben.
-
Dann wird ein optimaler Satz der
S-Boxen extrahiert (Schritt S32). Genauer gesagt, auf dieselbe Weise
wie bei dem vorherigen Entwicklungsprozeß wird zuerst ein Wert 32,
der als Eingabe- und Ausgabegesamtanzahl gegeben ist, durch einen
Wert 5 dividiert, der als kleinste Eingabe- und Ausgabeanzahl der
S-Box gegeben ist, und falls ein Rest vorhanden ist, wird der Rest
den am weitesten entfernten Positionen zugeordnet, wodurch sich
ein Satz von "6
5 5 5 5 6" als Satz
von Eingabe- und Ausgabeanzahlen der S-Boxen ergibt. Von dem zweiten
an werden immer zwei oder drei Eingabe- und Ausgabezahlen gemäß dem in 3 eingehend beschriebenen
Optimierungsprozeß wiederholt
kombiniert, bis die optimale Kombination erhalten wird.
-
Dann wird eine Kombinationstabelle
der S-Boxen erzeugt (Schritt S33). Genauer gesagt, wie auf der rechten
Seite der Zeichnung gezeigt, wird eine Kombinationstabelle von jeder
Eingabe- und Ausgabezahl der S-Box erzeugt. Zum Beispiel werden
beim ersten Mal Kombinationstabellen 6 und 5 erzeugt,
und beim zweiten Mal wird eine Kombinationstabelle (vergrößerte S-Box)
von 11 Bit erzeugt, nämlich
eine Kombination von 6 und 5, und diese Prozesse werden wiederholt.
-
Dann wird beurteilt, ob der Prozeß vollendet
ist oder nicht (Schritt S34). Falls nicht (NEIN bei Schritt S34),
kehrt die Verschlüsselungsentwicklungsvorrichtung
zu Schritt S32 zurück
und wiederholt den vorherigen Prozeß; anderenfalls (JA bei Schritt
S34) werden jede vergrößerte S-Box
und die lineare Transformationsschaltung L kombiniert (Schritt S35).
Demzufolge wird die lineare Transformationsschaltung L in jede vergrößerte S-Box
aufgenommen, und der durch die lineare Transformationsschaltung
L erledigte Prozeß wird
unnötig,
wodurch es möglich
wird, die Ausführung
zu beschleunigen.
-
Anschließend werden, wie auf der rechten
Seite der Zeichnung gezeigt, die anderen Komponenten implementiert,
wie etwa eine Schlüsseladdiereinheit
und eine Eingabe- und
Ausgabeeinheit (Schritt S36), und die Implementierung der F-Funktion
ist vollendet (Schritt S37).
-
Gemäß der obigen Prozedur werden
die Parameter (Speicherkapazität
des Primär-Cache-Speichers und
dergleichen) in der Verschlüsselungsentwicklungsvorrichtung
von dem Computer bei Implementierung auf dem Computer aufgenommen,
und die F-Funktion
kann automatisch erzeugt werden, indem die optimale Eingabe- und
Ausgabeanzahl der S-Box auf der Basis des Cache-Speichers des Primär-Cache-Speichers
und der Eingabe-/ Ausgabegesamtanzahl ermittelt wird. Demzufolge
können
Daten der obigen Feistel-Struktur, die in 6 gezeigt ist und die F-Funktion inkorporiert,
erzeugt werden, und die Ausführungsrate
kann beschleunigt werden, indem die Anzahl der Male des Konsultierens
der in dem Primär-Cache-Speicher
in dem Computer angeordneten Tabelle minimiert wird, wenn ein Klartext
verschlüsselt/ein
Verschlüsselungstext
dechiffriert wird.
-
Als nächstes folgt eine eingehendere
Beschreibung der S-Box-Extraktionsverarbeitungsprozedur, die bei
Schritt S32 von 7 angeführt ist. 8 ist ein Flußdiagramm,
das die S-Box-Extraktionsverarbeitungsprozedur zeigt, die bei Schritt
S32 von 7 angeführt ist.
-
Wie in 8 gezeigt,
wird zuerst ein Satz der optimierten S-Boxen extrahiert (Schritt
S41). Zum Beispiel wird, wie auf der rechten Seite der Zeichnung
gezeigt, ein Satz von "6
5 5 5 5 6" als Satz
der Eingabe-/Ausgabebitanzahlen der optimierten S-Boxen extrahiert.
-
Dann wird die Kombination gemäß der Cache-Speicherkapazität des Primär-Cache-Speichers
extrahiert (Schritt S42). Hier werden immer zwei oder drei Eingabe-
und Ausgabeanzahlen in dem extrahierten Satz der Eingabe- und Ausgabeanzahlen
der S-Boxen ab der linken Seite kombiniert, um einen neuen Satz
wiederholt zu erzeugen, bis die Kombinationszahl dem obigen endgültigen Wert
a, der bei Schritt S14 von 3 erhalten
wurde, gleich wird, wie oben beschrieben. So wird ein Satz der Eingabe-
und Ausgabeanzahlen der S-Boxen mit der optimalen Kombinationszahl
bestimmt. Zum Beispiel wird ein Satz von "11 10 11" bestimmt (extrahiert).
-
Durch den obigen Prozeß können die
Eingabe- und Ausgabebitanzahlen der optimalen S-Boxen entsprechend
der Speicherkapazität
des Primär-Cache-Speichers
in dem Computer bei Implementierung auf dem Computer bestimmt werden.
-
Als nächstes folgt die Beschreibung
der bei Schritt S33 von 7 angeführten Kombinationstabellenerzeugungsprozedur. 9 ist ein Flußdiagramm,
das die bei Schritt S33 von 7 angeführte Kombinationstabellenerzeugungsprozedur
zeigt.
-
Wie in der Zeichnung gezeigt, wird
die Kombination der S-Boxen eingegeben (Schritt S51). Genauer gesagt,
wie auf der rechten Seite der Zeichnung gezeigt, werden zum Beispiel
Werte von 6 und 5 als Eingabe- und Ausgabeanzahlen der S-Boxen eingegeben.
-
Anschließend werden die S-Boxen kombiniert
(Schritt S52). Genauer gesagt, wie auf der rechten Seite der Zeichnung
gezeigt, werden die eingegebenen S-Boxen kombiniert, um eine vergrößerte S-Box
zu erzeugen. Hier wird eine Eingabe anzahl von 11 Bit als Adresse
verwendet, um eine nichtlineare Tabelle mit einer 11-Bit-Ausgabe
zu erzeugen.
-
Durch den obigen Prozeß können Kombinationstabellen
(nichtlineare Tabellen) in der Anzahl der Kombinationszahl der optimierten
S-Boxen erzeugt werden.
-
Als nächstes folgt eine Beschreibung
der Kombinationsprozedur zum Kombinieren der S-Box und der linearen
Transformation L. 10 ist
ein Flußdiagramm,
das die Kombinationsprozedur zum Kombinieren der S-Box und der linearen
Transformation L zeigt. Wie in der Zeichnung gezeigt, wird nach
der Eingabe der vergrößerten S-Box
(Schritt S61) und der linearen Transformation L (Schritt S62) das
Resultat der linearen Transformation, das durch lineare Transformation
einer Ausgabe der vergrößerten S-Box
durch die lineare Transformation L erhalten wird, gespeichert (Schritt
S63).
-
Genauer gesagt, wie auf der rechten
Seite der Zeichnung gezeigt, wird das Resultat der linearen Transformation
der Ausgabe der vergrößerten S-Box
durch die lineare Transformation L in der auf der rechten Seite
gezeigten Tabelle gespeichert, wodurch der Prozeß, der durch die lineare Transformation
L erledigt wird, in die Tabelle der vergrößerten S-Box aufgenommen wird.
-
Durch den Ablauf des obigen Prozesses
wird der durch die lineare Transformation L erledigte Prozeß in die
vergrößerte S-Box
aufgenommen. Dadurch wird es unnötig,
daß die
lineare Transformation L bei dem Verschlüsselungs-/Dechiffrierprozeß arbeitet,
wodurch es möglich
wird, die Ausführungsrate
zu beschleunigen.
-
Als nächstes folgt eine Beschreibung
eines Beispiels der F-Funktion (wie implementiert) in der vorliegenden
Ausführungsform. 11 ist ein Diagramm, das
ein Beispiel für
die F-Funktion der vorliegenden Ausführungsform zeigt. Wie in der
Zeichnung gezeigt, sind S11, nämlich
die vergrö ßerte S-Box
nach dem Kombinieren, das in 10 erläutert wurde
(S-Box von 11), S10 (S-Box von 10) und S11 (S-Box von 11) angeordnet, und
andere Schaltungen, wie etwa XOR, sind auch angeordnet.
-
Somit wird die in 6 gezeigte Feistel-Struktur auf der Basis
der F-Funktion erzeugt, so daß ein
Verschlüsselungstext
durch das Chiffrieren von Klartext ausgegeben werden kann oder ein
Klartext durch das Dechiffrieren eines Verschlüsselungstextes ausgegeben werden
kann. Indessen kann die Anzahl der Male des Konsultierens der Tabelle
minimiert werden, indem die Tabelle in dem Primär-Cache-Speicher im Computer angeordnet
wird, wodurch es möglich
wird, den Verschlüsselungs-/Dechiffrierprozeß mit hoher
Geschwindigkeit ablaufen zu lassen.
-
Gemäß einem Aspekt der vorliegenden
Erfindung wird die Eingabe- und Ausgabebitanzahl der Vielzahl von
S-Boxen auf der Basis der Speicherkapazität des mit hoher Geschwindigkeit
konsultierbaren Speichers selektiert, der für die Verschlüsselungsanordnung
vorgesehen ist, wie erläutert
worden ist, und wird eine Vielzahl von S-Boxen erzeugt, die die
selektierte Eingabe- und Ausgabebitanzahl haben. Als Effekt können demzufolge
ein Verfahren und eine Vorrichtung zum Entwickeln einer Verschlüsselungslogik
erhalten werden, durch die ein rasches und effektives Selektieren
einer optimalen S-Box möglich
ist, die der Computerleistung entspricht, wenn die Blockverschlüsselung
mit gemeinsamem Schlüssel
mit S-Boxen entwickelt wird.
-
Da ferner die F-Funktion erzeugt
wird, um die Vielzahl von S-Boxen zu haben, die auf die obige Weise erzeugt
wurden, können
ein Verfahren und eine Vorrichtung zum Entwickeln einer Verschlüsselungslogik
erhalten werden, durch die als Effekt eine F-Funktion mit optimalen
S-Boxen erzeugt werden kann, die der Computerleistung entsprechen.
-
Ferner wird die Eingabe- und Ausgabebitanzahl
von jeder S-Box auf solch eine Weise selektiert, daß eine Summe
der Größen der
Vielzahl von S-Boxen innerhalb einer Speicherkapazität eines
Primär-Cache-Speichers,
der in einem in der Verschlüsselungsanordnung
vorgesehenen Prozessor installiert ist, am größten wird. Dementsprechend
können
hier als Effekt ein Verfahren und eine Vorrichtung zum Entwickeln
einer Verschlüsselungslogik
erhalten werden, durch die der in einem Zyklus ausgelesene Primär-Cache-Speicher
vollständig
genutzt werden kann.
-
Ferner werden die Speicherkapazität des Primär-Cache-Speichers und eine
Eingabe- und Ausgabebitgesamtanzahl des Blocks eingegeben, und über eine
Eingabe- und Ausgabeanzahl von jeder S-Box wird versuchsweise entschieden,
indem eine Eingabe- und Ausgabeanzahl von jeder S-Box erzeugt wird,
indem die eingegebene Eingabe- und Ausgabebitgesamtanzahl des Blocks
dividiert wird und ein Rest der Eingabe- und Ausgabeanzahl einer
beliebigen S-Box zugeordnet wird, während die Eingabe- und Ausgabeanzahlen
der S-Boxen, über
die versuchsweise entschieden wurde, innerhalb der Speicherkapazität des Primär-Cache-Speichers
kombiniert werden. Demzufolge können
ein Verfahren und eine Vorrichtung zum Entwickeln einer Verschlüsselungslogik
erhalten werden, durch die als Effekt ein rasches und effektives
Selektieren der optimalen Eingabe- und Ausgabeanzahl der S-Box möglich ist.
-
Ferner wird der kleinste Eingabe-
und Ausgabewert der Vielzahl von S-Boxen spezifiziert. Damit können als
Effekt ein Verfahren und eine Vorrichtung zum Entwickeln einer Verschlüsselungslogik
erhalten werden, durch die ein rasches Selektieren der Eingabe-
und Ausgabeanzahl der S-Box möglich
ist, indem die S-Box nicht mehr als nötig dividiert wird.
-
Ferner wird das Kombinieren der Eingabe-
und Ausgabeanzahlen auf der Basis eines endgültigen Wertes vollendet, der
durch die Eingabe- und Ausgabebitgesamtanzahl des Blocks und die
Speicherkapazität des
Primär-Cache-Speichers
bestimmt wird. Somit können
als Effekt ein Verfahren und eine Vorrichtung zum Entwickeln einer
Verschlüsselungslogik
erhalten werden, durch die der Prozeß vollendet werden kann, wenn die
Kombinationszahl der optimalen Eingabe- und Ausgabeanzahl der S-Box
gleich wird.
-
Ferner wird über die Eingabe- und Ausgabeanzahl
von jeder S-Box versuchsweise entschieden, indem der Rest, falls
vorhanden, den Eingabe- und Ausgabeanzahlen der S-Boxen zugeordnet
wird, die an den am weitesten entfernten Positionen räumlich getrennt
angeordnet sind. Daher können
als Effekt ein Verfahren und eine Vorrichtung zum Entwickeln einer
Verschlüsselungslogik
erhalten werden, durch die die versuchsweise Entscheidung auf adäquate Weise
effektiv getroffen werden kann.
-
Gemäß einem anderen Aspekt der
vorliegenden Erfindung stellt ein Aufzeichnungsmedium oder ein Netz
ein Computerprogramm zur Verfügung,
welches das Verfahren gemäß der vorliegenden
Erfindung auf einem Computer realisiert. Dadurch kann das Verfahren
gemäß der vorliegenden
Erfindung leicht und automatisch auf dem Computer realisiert werden.
Auf diese Weise kann eine Verschlüsselungsanordnung (Chiffriersystem)
erhalten werden, bei dem die vorliegende Erfindung zum Einsatz kommt.
-
Obwohl die Erfindung bezüglich einer
spezifischen Ausführungsform
zwecks einer vollständigen
und klaren Offenbarung beschrieben worden ist, sind die beigefügten Ansprüche nicht
darauf zu beschränken,
sondern als alle Abwandlungen und alternativen Konstruktionen verkörpernd aufzufassen,
auf die ein Fachmann kommen kann und die berechtigterweise unter
die hierin enthaltene Grundlehre fallen.