DE19635107A1 - Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-Basis - Google Patents
Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-BasisInfo
- Publication number
- DE19635107A1 DE19635107A1 DE19635107A DE19635107A DE19635107A1 DE 19635107 A1 DE19635107 A1 DE 19635107A1 DE 19635107 A DE19635107 A DE 19635107A DE 19635107 A DE19635107 A DE 19635107A DE 19635107 A1 DE19635107 A1 DE 19635107A1
- Authority
- DE
- Germany
- Prior art keywords
- bit
- block
- input
- register
- function
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/26—Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
Landscapes
- Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Error Detection And Correction (AREA)
Description
Die Erfindung betrifft ein Verfahren zum Prüfen einer Zerstüc
kelungsfunktion auf Hardware-Basis.
Zerstückelungsfunktionen reduzieren im allgemeinen eine varia
ble Länge von Daten in eine Darstellung aus festen Längen. Viele krypto
graphische Zerstückelungsfunktionen teilen die Eingangsdaten in kleine
Unterblöcke fester Länge und verarbeiten einen Unterblock jeweils zu ei
ner Zeit. Wenn ein Unterblock verarbeitet ist, wird der nächste eingege
ben und verarbeitet. Dies geschieht solange, bis der gesamte Eingangs
block zerstückelt ist, um einen Ausgangsblock fester Länge, eine soge
nannte Nachrichtenübersicht, zu erzeugen.
Der Sicherheitszerstückelungs-Algorithmus nimmt als Eingang
eine variable Anzahl von 512-bit-Nachrichtenblöcken MB(i) auf. Wenn die
Nachricht nicht ein genaues Vielfaches von 512-bit in ihrer Länge ist,
wird die Nachricht so aufgefüllt, daß sie ein derartiges Vielfaches ist.
Das Auffüllen geschieht durch Anhängen einer 1 und dann von so vielen
Nullen, wie notwendig sind, um 64 bits als Bruchteil eines Vielfachen
von 512 zu bekommen. Schließlich wird eine 64-bit-Darstellung der Vor
auffüllänge der Nachricht am Ende angehängt. Die aufgefüllte Nachricht
besteht daher aus einem oder mehreren 512-bit-Nachrichtenblocks MB(0),
MB(1), . . . , MB(i). Der Sicherheitszerstückelungs-Algorithmus startet
fünf 32-bit-Variablen, die wie folgt initialisiert werden:
A = H0 = 0×67452301
B = H1 = 0×EFCDAB89
C = H2 = 0×98BADCFE
D = H3 = 0×10325476
E = H4 = 0×C3D2E1F0
B = H1 = 0×EFCDAB89
C = H2 = 0×98BADCFE
D = H3 = 0×10325476
E = H4 = 0×C3D2E1F0
Der 512-bit-Nachrichtenblock wird dann von sechzehn 32-bit-
Worten (M0 bis M15) auf achtzig 32-bit-Worte (W0 bis W79) unter Verwen
dung der folgenden Erweiterungsfunktion erweitert, in der t die Opera
tionszahl von 0 bis 79 ist und Mi des i-te Wort repräsentiert:
Wt = Mt für t = 0 bis 15
Wt = Wt-3 XOR Wt-8 XOR WT-14 XOR Wt-16 für t = 16 bis 79
(XOR = exklusives ODER)
Wt = Wt-3 XOR Wt-8 XOR WT-14 XOR Wt-16 für t = 16 bis 79
(XOR = exklusives ODER)
Die Hauptschleife des Prozesses des Sicherheitszerstückelungs-
Algorithmus beginnt dann und wird für t = 0 bis 79 wie folgt ausgeführt.
(In den folgenden Gleichungen bedeutet das Symbol "" Linksrotation;
beispielsweise stellt "(A5)" das Ergebnis einer Linksrotation um 5
bit-Positionen dar.)
Akkumulator = (A5) + f(t,B,C,D) + E + Wt + Kt
E = D
D = C
C = (B30)
B = A
A = Akkumulator
E = D
D = C
C = (B30)
B = A
A = Akkumulator
In den obigen Gleichungen besitzt die Konstante Kt vier ver
schiedene konstante Werte und f(t,B,C,D) realisiert drei logische Funk
tionen während der vier Schleifen von zwanzig Operationen, wie nachste
hend gezeigt.
Nach den achtzig Schleifen werden A, B, C, D und E zu H0, H1, H2, H3
bzw. H4 addiert und entsprechende Summen ersetzen vorherige H0, H1, H2,
H3 bzw. H4. Die schließlich ausgegebene Nachrichtenübersicht ist eine
160-bit-Verkettung von H0, H1, H2, H3 und H4. Der Sicherheitszerstücke
lungs-Algorithmus wird auf den nächsten Nachrichtenblock MB(i+1) ange
wandt, bis sämtliche Nachrichtenblöcke verarbeitet sind.
Eine Sicherheitszerstückelungsfunktion stellt eine kritische
Funktion in bezug auf Datensicherheit, elektronischen Kommerz und Ge
heimhaltung unterliegender Postsysteme dar. Um den Sicherheitsaspekt zu
optimieren, werden diese Funktionen hardwaremäßig auf einer tragbaren
Sicherheitsmarke untergebracht. Hierdurch wird ein wirksames und
möglichst umfassendes Prüfen in gesicherter Weise notwendig. Da soll mit
minimaler Prüfzeit auszukommen sein, um kryptographische Zerstückelungs
funktionen, die in persönlichen tragbaren Sicherheitseinrichtungen ver
wendet werden, zu validieren, wobei die Gesamtchipgröße möglichst gering
sein soll. Üblicherweise benötigen gesicherte Einrichtungen einen großen
Satz von Testvektoren zum Liefern der notwendigen Fehlerabdeckung, da
normale Testvorgänge wie Abtasten oder das Anlegen von internen Signalen
an Anschlüsse wegen des damit verbundenen Sicherheitsverlustes, der sol
chen Vorgängen inhärent ist, nicht verwendet werden können.
Um gesonderte Firmware und Datenspeicher zum Prüfen des Zer
stückelungsalgorithmus unterzubringen, war die Chipgröße zu vergrößern.
In Herstellungstests wurde der Zerstückelungsblock in serieller Weise
mit anderen Hardwaremodulen geprüft. Die Nachteile hiervon sind größere
Chipgröße und längere Prüfzeiten mit damit verbundenem höherem Entwick
lungsaufwand.
In Fig. 10 ist ein Produktionsprüfer 1000 dargestellt, der ei
ne kryptographische Einrichtung 1020 prüft. Die Einrichtung 1020 ist
entweder ein einzelner integrierter Schaltkreis oder ein System mit meh
reren integrierten Schaltkreisen. Die Einrichtung 1020 umfaßt wenigstens
eine Zerstückelungsfunktionsausführung 1030, die entweder auf Hardware
basis, Softwarebasis oder einer Kombination von Software mit speziellem
Hardwareträger realisiert ist. Der Produktionsprüfer 1000 umfaßt einen
Teil zum Erzeugen von Eingangstestvektoren 1050 zum Eingeben in die Ein
richtung 1020 sowie einen logischen Analysator zum Empfangen von Aus
gangstestvektoren 1060 von der Einrichtung 1020. Ein Testprogramm 1010
umfaßt ausgewählte Werte für den Eingangstestvektor 1050 und die erwar
teten korrekten Ausgangstestvektoren 1060 für irgendeine spezifische
Einrichtung 1020. Die Eingangstestvektoren 1050 werden typischerweise so
gewählt, daß sie die Einrichtung 1020 vollständig prüfen. Wenn irgendein
Teil der Einrichtung 1020 entstellt ist, wird der Ausgangstestvektor
1060 nicht die vorberechneten erwarteten (korrekten) Ergebnisse lie
fern, die im Testprogramm 1010 gespeichert sind, d. h. die Einrichtung
1020 wird verworfen.
Gemäß Fig. 2 werden zum Prüfen T 512-bit-Prüfnachrichtenblöc
ke, die in den Zerstückelungstestdaten 1040 von Fig. 1 gespeichert sind,
verwendet. Der Produktionsprüfer 1000 beginnt bei Stufe 2010 das Prüfen
der Zerstückelungsrealisierung 1030. In Stufe 2020 sendet der Produk
tionsprüfer 1000 den ersten 512-bit-Prüfnachrichtenblock MB(1) in 16 se
rielle 32-bit-Eingangsvektoren 105. In Stufe 2030 zerstückelt die Ein
richtung 1020 den ersten Nachrichtenblock unter Verwendung seiner Zer
stückelungsrealisierung 1030, um eine Nachrichtenübersicht MD(1) zu er
zeugen. Ein Test gemäß Stufe 2040 prüft, ob der letzte Prüfnachrichten
block MB(T) bereits eingegeben wurde. Wenn dies nicht der Fall ist, ver
anlaßt man in Stufe 2040 die Eingabe des nächsten Prüfnachrichtenblocks
in Stufe 2020 bis Stufe 2050. Stufe 2050 illustriert den Übergang zum
nächsten Zerstückelungsblock, wobei die Stufen 2020, 2030 und 2040 wie
derholt werden, bis der letzte Prüfnachrichtenblock T verarbeitet worden
ist, zu welchem Zeitpunkt die Abfrage in Stufe 2040 zur Produktausgabe
der schließlichen Nachrichtenübersicht MD(T) in Stufe 2060 veranlaßt.
Während des Zerstückelns von jedem zwischenliegenden Prüfnachrichten
block MB(i) illustriert Stufe 2030, daß jede zwischenliegende Nachrich
tenübersicht MD(i) eine Funktion des laufenden Nachrichtenblocks MB(i)
und der vorherigen Nachrichtenübersicht MD(i-1) ist. Dann vergleicht das
Testprogramm in Stufe 2070 die ausgegebene Nachrichtenübersicht MD(T)
mit den vorberechneten korrekten Resultaten PCR, die im Testprogramm
1010 gespeichert sind. Wenn die beiden gleich sind, passiert die Ein
richtung 1020 die Prüfung erfolgreich, Ergebnis 2080, sonst ist die Prü
fung fehlgeschlagen, Ergebnis 2090.
Es gibt hierbei eine sehr große Anzahl von möglichen Permuta
tionen. Da es wünschenswert ist, den Hardware-Zerstückelungsschaltkreis
vollständig zu testen, wird T gewöhnlich sehr groß gewählt. Angenommen,
daß der Anteil der während eines bestimmten Zerstückelungszyklus i ge
prüften Schaltkreise eine zufällige P-Fraktion der gesamten Hardware
ist, dann ist der Anteil F der Gesamtprüfüberdeckung der gesamten Hard
ware 1 - (1 - P)T. Dies bedeutet, daß zum Erreichen einer hohen Fehler
überdeckung die Zahl der Prüfnachrichtenblöcke T zu erhöhen ist. Jedoch
sind die T Prüfnachrichtenblöcke MB(1) bis MB(T) im Testprogramm 1010
als Zerstückelungsprüfdaten 1040 gespeichert. Da P eine niedrige Zahl
ist, muß T groß sein, um eine hohe Fehlerüberdeckung zu erzielen, und
alle diese Prüfdaten 1040 sind in dem Testprogramm 1010 gespeichert. Es
ist aber unerwünscht, eine große Menge an Prüfdaten 1040 im Testprogramm
1010 zu speichern. Selbst wenn ein Programm geschrieben würde, das Prüf
daten ohne das Erfordernis großer Datenspeicherung erzeugen würde, wäre
es nicht wünschenswert, die Eingangsvektorleitungen durch einen langen
Verstückelungstest zu belegen, da dies weitere Prüfungen behindert, die
bezüglich anderer Teile der Einrichtung 1020 durchzuführen sind, wo
durch sehr lange Testzeiten in kauf zu nehmen sind.
Aufgabe der Erfindung ist es, ein Verfahren zum Prüfen einer
Zerstückelungsfunktion auf Hardware-Basis zu schaffen, das eine einfa
chere bzw. verkürzte Prüfung ermöglicht.
Diese Aufgabe wird entsprechend Anspruch 1 gelöst.
Hierdurch wird es unnötig, kontinuierlich zu zerstückelnde
Eingangsdaten einzuspeisen, um eine hohe Fehlerüberdeckung zu erhalten.
Dies reduziert die Größe der Firmware und Testvektoren, die notwendig
sind, um die Prüfungsvorzunehmen. Vielmehr werden durch die Hardware
autonom neue zu zerstückelnde Daten erzeugt, die es ermöglichen, andere
Hardwaremodule parallel zu testen, so daß der Gesamtaufwand reduziert
wird.
Im allgemeinen reduzieren Zerstückelungsfunktionen eine varia
ble Länge von Daten in eine Darstellung mit fester Länge. Viele krypto
graphische Zerstückelungsfunktionen teilen die Eingangsdaten in kleine
Unterblöcke fester Länge und verarbeiten einen Unterblock zu einer Zeit.
Wenn ein Unterblock verarbeitet wurde, wird der nächste Unterblock ein
gegeben und verarbeitet. Dies wird fortgeführt, bis der gesamte Ein
gangsblock zerstückelt worden ist, um den schließlichen Ausgangsblock
fester Länge, die Nachrichtenübersicht, zu erzeugen. Damit das Erforder
nis der Eingabe einer Vielzahl von Unterblocks fester Länge entfällt,
können zusätzliche Unterblocks aus den ursprünglichen Unterblocks durch
Verwendung einer Hardware-Erweiterungsfunktion erzeugt werden, und die
Hardware fährt fort, für eine vorbestimmte Anzahl von Unterblocks unbe
aufsichtigt weiter zu laufen. Die Zerstückelungshardware kann die Erwei
terungsfunktion W[i] = W[i-3] xor W[i-8] xor W[i-14] xor W[i-16] (xor =
exklusive ODER-Verknüpfung) verwenden, um existierende Daten in neue Da
ten zu erweitern, wobei W[i-x] vom anfänglichen Unterblock stammt. Durch
Verwendung der nichtlinearen xor-Funktion wird W[i] ein Zufallsdatum
sein, wenn eines von W[i-3], W[i-8], W[i-14] oder W[i-16] zufällig ist.
Diese Erweiterungsfunktion ist zum Erreichen einer hohen Fehlerüberdec
kung geeignet, da die neuen W-Werte wahrscheinlich unterschiedlich zu
den anderen W-Werten sind, die zerstückelt wurden. Diese Erweiterungs
funktion ist bequem in der Verwendung, da sie von dem Sicherheitszer
stückelungsalgorithmus verwendet wird, wie er durch den Secure Hash
Standard FIPS PUB 180 und FIS PUB 180-1 (der eine Linksrotation um eine
bit-Position beinhaltet) verwendet wird. Daher ist kein wesentlicher
Hard- oder Softwareaufwand für die automatische Prüfung der Zerstücke
lungsfunktion notwendig.
Zur erhöhten Sicherheit enthalten eingebettete Kontroller eine
Anzahl von integrierten kryptographischen Algorithmen einschließlich für
Zerstückelungen. Nahezu alle Sicherheitseinrichtungen für den elektroni
schen Kommerz verwenden Zerstückelungsfunktionen. Das Erhalten von
ROM-Speicherplatz ist in diesen Anwendungen wegen der gewünschten Tragbar
keit kritisch. Es ist daher unerwünscht, zum Erzeugen von Prüfdaten
Firmware zu verwenden. Selbst wenn Firmware verwendet wird, um entweder
Zerstückelungsprüfdaten zu speichern oder zu erzeugen, wird der interne
Bus während des Prüfens belegt, um Prüfdaten zu erzeugen oder zur Zer
stückelungshardware zu übertragen. Bei hoher Produktionsrate ist eine
Einsparung von Prüfzeit besonders wichtig, weil sich ein langes Warten
auf das Prüfergebnis nachteilig in bezug auf die anderen Prüfungen, die
nacheinander auszuführen sind, auswirkt.
Weitere Ausgestaltungen der Erfindung sind der nachfolgenden
Beschreibung und den Unteransprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand eines in den beigefügten
Abbildungen dargestellten Ausführungsbeispiels näher erläutert.
Fig. 1 zeigt ein Blockdiagramm einer Anordnung einer erfin
dungsgemäß geeigneten Konfiguration.
Fig. 2 zeigt ein schematisches Diagramm eine Hauptteils einer
Hardware-Realisierung des Sicherheitszerstückelungsalgorithmus gemäß ei
ner bevorzugten Ausführungsform.
Fig. 3 zeigt ein Logikdiagramm von Erweiterungsfunktions-Hard
ware.
Fig. 4 zeigt eine Ausführungsform eines Generators der
f(t,B,C,D)-Funktion.
Fig. 5 zeigt eine Methode zur Erzeugung von Kt-Werten.
Fig. 6 zeigt ein Businterface, Register und eine Folgesteue
rung für die Ausführung des Sicherheitszerstückelungsalgorithmus.
Fig. 7 zeigt ein Zeitablauf- und Verwendungs- und Belegungs
diagramm für die hauptsächlichen Komponenten der Ausführungsform des Sicher
heitszerstückelungsalgorithmus während der normalen Nachrichtenblockver
arbeitung.
Fig. 8 zeigt ein Zeitablauf- und Verwendungs- und Belegungs
diagramm für die hauptsächlichen Komponenten der Ausführungsform des Sicher
heitszerstückelungsalgorithmus während eines Prüfvorgang mit automati
scher Datenerzeugung.
Fig. 9 zeigt diagrammartig ein Verfahren zum Prüfen einer Zer
stückelungsfunktion mit automatischer Datenerzeugung.
Fig. 10 illustriert eine bekannte Prüfanordnung für eine Zer
stückelungsfunktion.
Fig. 11 illustriert eine bekannte Methode zum Prüfen einer
Zerstückelungsfunktion.
Die kryptographische Einrichtung 100 umfaßt gemäß der in Fig.
1 dargestellten Ausführungsform einen Bus 101, einen RISC- (Reduced In
struction Set Computing) Prozessor 102, ein Code-ROM 103, einen (Hardwa
re-)Zerstückelungsmodul 104 und andere notwendige Elemente wie etwa ein
Businterface 105 in einem einzelnen Gerät. Die Einrichtung 100 ist über
das Businterface 106 an einen äußeren Speicher 106 gekoppelt. Sie ent
hält einen sicheren Kern, der die wesentlichen Elemente eines API (Ap
plication(s)Program(m)Interface) liefert, das seinerseits Zugang zu in
ternen Chipbetriebsmitteln bietet. Der Anwendungscode für die kryptogra
phische Schaltkreiskarte befindet sich in einem Speicher außerhalb des
Chips getrennt von dem Chip für die kryptographischen Einrichtung 100.
Dieser Anwendungscode außerhalb des Chips liefert Zugang zur Einrichtung
100 über das Businterface 105. Gemäß Fig. 1 ist der Prozessor 102 insbe
sondere ein 32-bit-RISC-Prozessor mit einem RAM (nicht dargestellt) zum
Erhalten eines internen Stapels für bewahrten Maschinenzustand, der von
Ausnahmen (Traps und Unterbrechungen) resultiert, und der Zerstücke
lungsmodul 104 für den Sicherheitszerstückelungsalgorithmus ist bevor
zugt als FIPS PUB 180 (Secure Hash Standard, 1. Mai 1993) und FIPS PUB
180-1 (Secure Hash Standard, 31. Mai 1994) ausgeführt. Das nichtflüchti
ge ROM 103 dient zum Speichern des sicheren Kerns. Andere Hardwarefunk
tionen können ohne weiteres gewünschtenfalls in die oder von der Ein
richtung 100 ein- oder ausgeschlossen werden. Beispielsweise kann an
stelle der Hardware-Lösung für den Sicherheitszerstückelungsalgorithmus
eine Software-Lösung treten, die in dem ROM 103 gespeichert ist.
Software, die aus dem äußeren Speicher 106 ausgeführt wird,
liefert Zugang zu den kryptographischen Diensten des Geräts 100 über ei
nen Überwacheraufruftrapbefehl (EXCP SVC). Vor dem Aufrufen dieses Be
fehls wird die externe Software spezifische Register der Einrichtung 100
mit einem Steuercode und anderen Parametern für den geforderten Service
laden und den EXCP SVC-Befehl ausführen. Das Ausnahmeserviceprogramm
wird in dem ROM 103 gespeichert. Die Einrichtung 100 wird dann die In
halte des derzeitigen Maschinenzustands auf einem internen Stapel in dem
SRAM bewahren und eine Sprungadresse von einer Unterbrechungszuweisungs
tabelle in dem ROM 103 lesen. Dann wird die Kontrolle auf die Sprung
adresse in dem ROM 103 übertragen.
Das SVC(Überwacheraufruf)Ausnahmeserviceprogramm wird den
Steuercode und Parameter, die in die Register überführt wurden, verifi
zieren und zu einem geeigneten Steuerserviceprogramm innerhalb des ROM
103 springen. Wenn das Steuerserviceprogramm die geforderte Operation
ausgeführt hat, wird es zum SVC-Ausnahmeserviceprogramm zurückkehren,
das den vorherigen Maschinenzustand von dem internen Stapel in dem SRAM
wiederherstellt, und die Steuerung der externen Software überlassen. Die
Einrichtung 100 ist mit externer Hardware 107 und dem externen Speicher
106 verbunden.
Der Zerstückelungsmodul 104 (SHA-Beschleuniger) liefert einen
zusätzlichen Modus für Prüf- und Verifikationszwecke. Dieser Autotestmo
dus erlaubt es dem SHA-Beschleuniger, nach einem ersten Ingangsetzungs
vorgang eine programmierbare Anzahl von Malen ohne externe Unterstützung
den SHA-Beschleuniger zyklisch zu durchlaufen.
Der SHA-Beschleuniger baut auf einen Busmaster (beispielswei
se den Prozessor 102 oder das Businterface 105, das externe Daten von
externen Quellen 107 oder 106 liefert), um Anfangswerte und Daten zu la
den. Der Busmaster residiert auf dem Bus 101 (bzw. 602 in Fig. 6). Der
Busmaster läd die anfänglichen H-Werte, die W-Werte und liest die end
gültige Nachrichtenübersicht aus H0-H4 213 aus.
Sx(variabel) stellt eine Linksrotation um x bits der Variablen
dar. X → Y bedeutet X geladen in Y. X+Y bedeutet die Summe aller Addi
tionen unter Entfall des Übertragsbits.
Der folgende funktionale Überblick zum Zerstückeln einer Nach
richt mit dem Zerstückelungsmodul 104 geht davon aus, daß dieser sich
anfänglich im Wartezustand befindet. Der Zerstückelungsmodul 104 gibt
sein Arbeitszustandsbit frei, wenn die in Fig. 2 gezeigte Hardware ihren
Zerstückelungsvorgang beendet hat und die in Fig. 3 gezeigte Erweite
rungshardware nicht länger zukünftige W-Werte erzeugt.
Der Zerstückelungsmodul 104 verwendet zum Ingangsetzen einen
Busmaster. Fig. 6 zeigt ein Businterface 600 mit Steuer- und Zustandsre
gistern 603, einer Adressendekodierung und eine Folgesteuerung 604 für
einen Fünftaktzyklushauptbetrieb des Zerstückelungsmoduls 104 enthält.
Jedes Inkrement von t umfaßt fünf Taktzyklen. Das folgende ist der In
gangsetzungsprozeß für den Zerstückelungsmodul 104:
- 1. Schreib H4, H3, H2, H1 und H0 in das H_Datenregister. Das H_Datenregister unterstützt 32-bit-Lese/Schreibzyklen. Der Zerstücke lungsmodul 104 läd das A-E-Register, wenn die H-Werte geladen sind (H4 → E, H3 → D, H2 → C, H1 → B, H0 → A). Daher muß der Busma ster die H-Werte in der Ordnung H4, H3, H2, H1, H0 laden.
Das in Fig. 2 dargestellte H_Datenregister 200 ist in der Tat
ein Adressenraum, der durch Dekodieren über ein Zerstückelungsbusinter
face 601 (Fig. 6) auf einen Multiplexer 201 abgebildet wird, der Flip-
Flip H0 202 lädt, wenn H_Daten eingeschrieben werden. H0 speist H1 203,
das H2 204 speist, das H3 205 speist, das H6 206 speist. Ferner ist ein
Multiplexer 207 vorgesehen, der ähnlich nach Dekodieren H_Daten aufnimmt
und durch das gleiche Auswahlsignal LD_H wie der Multiplexer 201 gesteu
ert wird. Der Multiplexer 207 gibt die Eingangsdaten an ein entsprechen
des Schieberegister für die A 208, B 209, C 210, D 211 und E 212 Varia
blen weiter.
- 2. Schreib 16 W-Werte in das W_Datenregister. Der Busmaster muß die Werte in der folgenden Ordnung laden: W0, W1, W2, . . . , W14, W15.
Fig. 3 zeigt eine detaillierte Ausführung eines Wt-Generators
214 von Fig. 2. Das in Fig. 3 dargestellte W_Datenregister ist ein 16
Worte tiefes, 32 bit breites Schieberegister, das durch LD_MB auf Mult
plexer 301 von Fig. 3 ausgewählt wird, wenn jedes Nachrichtenblockwort
zu W_Daten geschrieben wird.
- 3. Wenn W15 geladen ist, tritt der Zerstückelungsmodul 104 auto matisch in den Zerstückelungszustand ein und setzt das Inbetriebzu standsbit. Wenn dieses gelöscht worden ist, können 16 neue W-Werte geladen werden. Das H_Datenregister kann während der Existenz des In betriebzustandsbits nicht modifiziert werden. Wenn es dagegen ge löscht ist, können die H-Werte gelesen oder geschrieben werden.
Im Zerstückelungszustand vollzieht der Zerstückelungsmodul 104
80 Schleifen (t = 0 bis 79). Gleichzeitig mit der Schleifenausführung
erzeugt der Zerstückelungsmodul 104 neue Wt-Werte. Wenn der letzte
W-Wert W79 zur Zeit t = 63 erzeugt wurde, wird die Erweiterungsfunk
tionshardware (305, 306, 308, 307) nicht mehr benötigt, obwohl das
Schieberegister 302, der Multiplexer 303 und das Wt-Register 304 fort
fahren, die verbleibenden W-Werte W64 bis W79 einzuspeisen, die im
Schieberegister 302 zu dieser Zeit gespeichert sind. Die Erweiterungs
funktions-Hardware 305, 306, 308, 307 wird verwendet, um automatisch 16
32-bit Prüfnachrichtenblock-Unterblöcke, die im Autotestmodus benötigt
werden, zu erzeugen.
Gemäß Fig. 2 inkrementiert jede Schleife t und erfordert jede
Schleife fünf Taktzyklen. Das Hauptrechenmittel in der Hardware 200 sind
ein Addierer 222 und ein Akkumulatorregister 223. Am Eingang A des zwei
Eingänge aufweisenden Addierers 222 liegt ein Multiplexer 221 mit drei
Eingängen und am Eingang B ein Multiplexer mit vier Eingängen. Die ande
ren Hauptkomponenten des Zerstückelungsmoduls 104 sind der Wt-Generator
214, die H-Schieberegister H0-H4 202-206 und das A-E-Schieberegister
208-212. Zwischen Flip-Flops B 209 und C 210 wählt ein Multiplexer 217
zwischen einem Ausgang und 30-bit-Positions-linksrotierten-Version, die
durch das Verbindungsmuster eines festverdrahteten Linksdrehers 218 ge
liefert wird.
Ein f(t,B,C,D)-Generator 216 umfaßt vorzugsweise das Realisie
ren kombinatorischer Logik 401, wie sie beispielhaft in Fig. 4 darge
stellt ist, wobei RND[1 : 0] den kodierten Wert der Schleifenzahl dar
stellt, und zwar von O bis 3 die erste bis vierte Schleife von zwanzig
Operationen. Die kombinatorische Logik 401 realisiert drei alternative,
32-bit bitweise Logikfunktionen, die auf B, C und D während jeder der
vier Schleifen angewandt werden. Anstelle von drei vollständig separa
ten, aber alternativen Logikkreisen kann ein Teil der Logik 401 in aller
Wahrscheinlichkeit auch zwischen den Ausgängen aufgeteilt werden. Multi
plexer 402 und 403 wählen die richtige Funktion für die vorgegebene
Schleife RND[1:0].
Ähnlich kann der K-Generator 215 als Schaltkreis 500, wie in
Fig. 5 dargestellt, realisiert werden, wobei die festverdrahteten Kon
stantwerte für Kt durch die kodierte Darstellung der Schleifenzahl
RND[1:0] ausgewählt wird.
Bei dem Wt-Generator 214 handelt es sich um den in Fig. 3 dar
gestellten Schaltkreis, der ein 16 bit tiefes FIFO-Schieberegister 302
umfaßt. Die 16 Speicherstellen umfassende Speicherstruktur, die in Fig.
3 durch die Funktion des Schieberegisters 302 und des Multiplexers 303
dargestellt ist, kann in unterschiedlicher Weise realisiert werden. Fig.
3 dient lediglich zur Darstellung der gewünschten Logik und des Datenflusses.
Takt | |
Maßnahme | |
0 | |
E und f(t,B,C,D) werden zusammen addiert. | |
Das Ergebnis wird in den Akkumulator geladen. | |
Akkumulator = E + f(t,B,C,D) | |
1 | Kt wird zu dem Wert des Akkumulators addiert. |
Akkumulator = Kt + [E+f(t,B,C,D)] | |
2 | S5(A) wird zu dem Akkumulator addiert. |
Akkumulator = (A5) + [Kt+E+f(t,B,C,D)] | |
3 | Wt wird zum Akkumulator addiert. |
Akkumulator = Wt + [(A5)+Kt+E+f(t,B,C,D)] | |
4 | D → E |
C → D | |
S30(B) → C | |
Accumulator → A |
In der obigen Tabelle ist bezüglich der Taktperiode vier dar
gestellt, daß sie das Vorwärtsschieben der A-E-Register umfaßt, das am
Ende jeder Zerstückelungsoperation auftritt. Fig. 2 zeigt einen einzel
nen Eingang shift_h zur Schiebevorgangsfreigabe zum Schieberegister A-E.
Wenn shift_h hoch ist, werden sämtliche Werte A bis E vorwärts gescho
ben. In einer tatsächlichen Ausführung kann shift_h durch fünf separate
Signal (shift_h0 bis shift_h4 beispielsweise) ersetzt werden. Jedes se
parate Signal kann dann eines der Register A bis E steuern. Mit dieser
Hardware-Struktur und einer geeigneten Steuerung können die Zuordnungen,
die in obiger Periode vier gezeigt sind, über die Zyklen verteilt wer
den. Beispielsweise kann in Periode eins D zu E zugeordnet werden. In
Periode zwei kann C zu D zugeordnet werden. In Periode drei kann A zu B
zugeordnet werden, während S30(B) zu C zugeordnet wird. Schließlich kann
in Periode vier der Akkumulator zu A zugeordnet werden.
Nach Durchführung von 80 Schleifen werden zehn zusätzliche
Taktzyklen erforderlich, um die Nachrichtensammlung (H4=H4+E, H3=H3+D,
H2=H2+C, H1=H1+B, H0=H0+A) zu aktualisieren.
Takt | |
Maßnahme | |
0 | |
H4 und E werden addiert | |
Das Ergebnis wird im Akkumulator plaziert. | |
H3 → H4, H2 → H3, H1 → H2, H0 → H1, D → E, C → D, B → C und A → B | |
1 | Der Akkumulator → H0 und A |
2-9 | Die Maßnahmen, die in dem ersten und zweiten Taktzyklus ergriffen wurden, werden vier weitere Male wiederholt. |
Dann kehrt der Zerstückelungsmodul 104 in seinen Wartezustand
zurück und löscht sein Inbetriebzustandsbit.
Der Zerstückelungsmodul 104 ist in acht funktionelle Blöcke
unterteilt:
- - Businterface 601
- - Folgesteuereinheit 604
- - H0-H4-Register 202 bis 206
- - A-E-Register 208 bis 212
- - W-Generator 214
- - K-Generator 215
- - Addierer, Akkumulator 222, 223
- - f(t,B,C,D)-Generator 216
Das Businterface 601 ist das Interface zwischen den internen
funktionellen Blöcken des Zerstückelungsmoduls 104 und dem Bus 101, 602.
Das Businterface decodiert die Adresse, speichert Daten vom Bus 101, 602
zwischen und schreibt Daten auf den Bus 101, 602. Das Businterface 601
unterliegt der Busspezifikation. Der Zerstückelungsmodul 104 unterstützt
einen 8-bit-Zugang zu sämtlichen seiner Steuer- und Zustandsregister und
einen 32-bit-Zugang zu den Datenregistern. Die Steuer- und Zustandsregi
ster befinden sich im Businterface 601. Der Zerstückelungsmodul 104 ar
beitet mit null Wartezuständen und unterstützt Fließbandverarbeitungszu
gänge.
Die Folgesteuereinheit 604 enthält als funktionaler Block
sämtliche Logik, die notwendig ist, um den Zerstückelungsmodul 104 zu
betreiben, abgesehen von der Steuerlogik, die in dem Businterface 601
enthalten ist. Die Steuerregister 603 befinden sich benachbart zu der
Folgesteuereinheit 604.
Die H0-H4-Register 202-206 sind als ein fünf Wort tiefes, 32
bit breites FIFO-Puffer konfiguriert. Sie werden verwendet, um die
H-Werte des Zerstückelungsmoduls 104 zu speichern.
Die A-E-Register 208 bis 212 sind als ein fünf Worte tiefer,
32 bit breiter FIFO-Puffer ausgebildet. Sie werden verwendet, um die
A-E-Werte des Zerstückelungsmoduls 104 zu speichern. Die Verbindung zwi
schen B und C enthält zwei Pfade. Der erste und der zweite Pfad reali
sieren B → C bzw. S30(B) → C. Der erste Pfad wird während des anfäng
lichen Ladens der H-Werte und während des Aktualisierens der Nachrich
tenübersicht am Ende der Verarbeitung des neuen Nachrichtenblocks ver
wendet. Der zweite Pfad wird während der 80 Zerstückelungsoperationen
während der Verarbeitung jedes Nachrichtenblocks verwendet.
Der W-Generator 214 speichert und erzeugt die W-Werte, die für
den Zerstückelungsmodul 104 notwendig sind. Die W-Werte (W16-W79) werden
gleichzeitig mit dem Zerstückeln des Nachrichtenblocks (ursprünglich W0-
W15) erzeugt. Während jeder der Schleifen wird W[t+16] erzeugt. Das FP_
MODE-Steuerbit wählt aus, wie die neuen W-Werte erzeugt werden. W80-W95
werden nur im Autotestmodus verwendet.
FP180-1: W[t+16] = S1(W[t+13] XOR W[t+8] XOR W[t+2] XOR W[t])
FP180: W[t+16] = W[t+13] XOR W[t+8] XOR W[t+2] XOR W[t]
FP180: W[t+16] = W[t+13] XOR W[t+8] XOR W[t+2] XOR W[t]
Takt | |
Maßnahme | |
0 | |
Lösche PXOR Teil-XOR | |
Lese W[t+2] | |
Signal CLRPXOR wird aufgedrückt und der PXOR-Flipflop 306 wird gelöscht. SELSROUT, ebenfalls durch Folgesteuereinheit 604 erzeugt, wählt W2 als Ausgang des Multiplexers 303 | |
1 | Lade W[t+2] in PXOR |
Lese W[t] | |
Da die Inhalte von PXOR am Ende des Taktes null gleich 0 sind, liefert null durch 32-bit-breites XODER-Gatter 305 XODERrt mit W[t+2] W[t+2], das in PXOR-Flipflop 306 gespeichert wird. Die Folgesteuereinheit 604 wählt WO aus dem Multiplexer 303. | |
2 | Lade W[t] in Wt |
Lade (W[t+2] XOR W[t] in PXOR | |
Lese W[t+8] | |
W(t) wird in Register Wt durch Aufdrücken von LDWt gespeichert. Der Ausgang von 305 wird in PXOR 306 geladen. Der Multiplexer 303 wählt W8. | |
3 | Lade (W[t+2] XOR W[t] XOR W[t+8]) in PXOR-Flipflop 306 |
Lese W[t+13] | |
Der Ausgang des XODER-Gatters 305 wird in PXOR-Flipflop 306 gespeichert. Die Steuereinheit 604 wählt W13 als Ausgang des Multiplexers 303 aus. | |
4 | Schreibe W[t+16] über das ursprüngliche W[t] |
Der Ausgang des XODER-Gatters 305 wird in W(t+15) (wenn t inkrementiert wird) geschrieben, da die Steuereinheit 604 SHIFTW aufdrückt, wenn alle Werte der Matrix von Flipflops vorwärts geschoben werden, während das vorherige W(0) verlorengeht. Multiplexer 301 wählt Eingang 0, da LDMB entfällt, da kein neuer Nachrichtenblock geschrieben wird. FPMode steuert Multiplexer 308, der bestimmt, ob der resultierende Erweiterungswert W(t+16) linkverschoben wird oder nicht. |
Der K-Generator 215 von Fig. 5 enthält die vier K-Werte für
den Zerstückelungsmodul 104. Sie sind festverdrahtet und der korrekte
wird ausgewählt in Abhängigkeit von der laufenden Schleife des Zerstücke
lungsmoduls 104.
Für t = 0 bis 19, Kt = 5A827999h.
Für t = 20 bis 39, Kt = 6ED9EBAlh.
Für t = 40 bis 59, Kt = 8F1BBCDCh.
Für t = 60 bis 79, Kt = CA62C1D6h.
Für t = 20 bis 39, Kt = 6ED9EBAlh.
Für t = 40 bis 59, Kt = 8F1BBCDCh.
Für t = 60 bis 79, Kt = CA62C1D6h.
Die Einheit aus Addierer 222 und Akkumulator 223 kann funktio
nal entsprechend unterteilt sein. Der Addierer 222 addiert zwei 32-bit-
Operanden. Der Addierer 222 erfordert kein Übertragensbit in oder aus
diesem. Der erste Operand des Addierers 222, Add_A, wird durch H4,
f(t,B,C,D) oder den Ausgang des Akkumulators 223 geliefert. Der zweite
Operand des Addierers, Add_B, wird durch Kt, S5(A), Wt oder E gelie
fert. Die korrekten Signale, die in den Addierer 222 zu geben sind, wer
den durch die in Fig. 6 dargestellte Steuereinheit 604 gesteuert. Das
32-bit-Register des Akkumulators 223 hält das Ergebnis der Addition.
Der f(t,B,C,D)-Generator 216 von Fig. 4 basiert auf reiner
kombinatorischer Logik, die verwendet wird, um drei Bool′sche Funktionen
durchzuführen, die von dem Zerstückelungsmodul 104 verwendet werden. Die
drei Funktionen sind nachstehend aufgelistet:
Für t = 0 bis 19, f(t,B,C,D) = (B) ≦λτ (∼B),
Für t = 20 bis 39, f(t,B,C,D) = B XOR C XOR D,
Für t = 40 bis 59, f(t,B,C,D) = (B) ≦λτ (B) ≦λτ (C),
Für t = 60 bis 79, f(t,B,C,D) = B XOR C XOR D,
wobei & = bitweises UND, ≦λτ = bitweises ODER, ∼ = bitweises Komplement bedeuten.
Für t = 20 bis 39, f(t,B,C,D) = B XOR C XOR D,
Für t = 40 bis 59, f(t,B,C,D) = (B) ≦λτ (B) ≦λτ (C),
Für t = 60 bis 79, f(t,B,C,D) = B XOR C XOR D,
wobei & = bitweises UND, ≦λτ = bitweises ODER, ∼ = bitweises Komplement bedeuten.
Bits 7, 6: Resv - Reserviert
Bit 5: FPC -- Das Setzen dieses bits realisiert den Sicherheitszer stückelungsalgorithmus, wie durch FIPS PUB 180, 11. Mai 1993, spezifiziert. Während des Autotestmodus (wenn ATst gesetzt ist), ist FPC das niederwertigste bit von ATCNT und Schreiben zu diesem bit hat keine Wirkung. FPC sollte nur geändert wer den, wenn das Zustandsbit Busy nicht gesetzt ist. Der Wert von FPC steuert den Wert des Signals FP_MODE in Fig. 3.
Bit 4: Resv - Reserviert
Bit 3: ATst - Aurotest. Setzen dieses bits plaziert den Zerstücke lungsmodul 104 in den Autotestmodus. Das Löschen dieses bits nimmt ihn aus dem Autotestmodus heraus. ATst kann nur geändert werden, wenn das Zustandsbit Busy nicht gesetzt ist.
Bit 2: Resv - Reserviert
Bit 1: Resv - Reserviert
Bit 0: Rst -- Setzen des Rst-bits stellt den Zerstückelungsmodul 104 zurück. Das Rückstellen des bits hat keine schädliche Wirkung. Dieses Bit ist selbstlöschend. Das Setzen dieses Bits verstümmelt die laufende Zerstückelung.
Bit 5: FPC -- Das Setzen dieses bits realisiert den Sicherheitszer stückelungsalgorithmus, wie durch FIPS PUB 180, 11. Mai 1993, spezifiziert. Während des Autotestmodus (wenn ATst gesetzt ist), ist FPC das niederwertigste bit von ATCNT und Schreiben zu diesem bit hat keine Wirkung. FPC sollte nur geändert wer den, wenn das Zustandsbit Busy nicht gesetzt ist. Der Wert von FPC steuert den Wert des Signals FP_MODE in Fig. 3.
Bit 4: Resv - Reserviert
Bit 3: ATst - Aurotest. Setzen dieses bits plaziert den Zerstücke lungsmodul 104 in den Autotestmodus. Das Löschen dieses bits nimmt ihn aus dem Autotestmodus heraus. ATst kann nur geändert werden, wenn das Zustandsbit Busy nicht gesetzt ist.
Bit 2: Resv - Reserviert
Bit 1: Resv - Reserviert
Bit 0: Rst -- Setzen des Rst-bits stellt den Zerstückelungsmodul 104 zurück. Das Rückstellen des bits hat keine schädliche Wirkung. Dieses Bit ist selbstlöschend. Das Setzen dieses Bits verstümmelt die laufende Zerstückelung.
Bits 7-6: Resv -- Reserviert, liest immer 0
Bit 5: FPM -- FP180-Modus. Eine Null zeigt an, daß der Zerstücke lungsmodul 104 im FP180-1-Modus arbeitet. Eine Eins zeigt an, daß er im FP-180-Modus arbeitet. FPM zeigt den letzten Wert des FP_MODE-Signals in Fig. 3 an.
Bit 4: Resv -- Reserviert, liest immer 0
Bit 3: ATM -- Autotestmodus. Eine Null zeigt an, daß der Zerstücke lungsmodul nicht im Autotestmodus ist, eine Eins dagegen, daß er sich im Autotestmodus befindet.
Bit 2: Resv -- Reserviert
Bit 1: Resv -- Reserviert. Liest nicht immer 0.
Bit 0: Busy -- Eine Null zeigt an, daß der Zerstückelungsmodul nicht arbeitet. H_Daten können gelesen oder geschrieben werden. Eine Eins zeigt an, daß der Zerstückelungsmodul 104 eine Zer stückelung durchführt. H_Daten können nicht gelesen oder ge schrieben werden.
Bit 5: FPM -- FP180-Modus. Eine Null zeigt an, daß der Zerstücke lungsmodul 104 im FP180-1-Modus arbeitet. Eine Eins zeigt an, daß er im FP-180-Modus arbeitet. FPM zeigt den letzten Wert des FP_MODE-Signals in Fig. 3 an.
Bit 4: Resv -- Reserviert, liest immer 0
Bit 3: ATM -- Autotestmodus. Eine Null zeigt an, daß der Zerstücke lungsmodul nicht im Autotestmodus ist, eine Eins dagegen, daß er sich im Autotestmodus befindet.
Bit 2: Resv -- Reserviert
Bit 1: Resv -- Reserviert. Liest nicht immer 0.
Bit 0: Busy -- Eine Null zeigt an, daß der Zerstückelungsmodul nicht arbeitet. H_Daten können gelesen oder geschrieben werden. Eine Eins zeigt an, daß der Zerstückelungsmodul 104 eine Zer stückelung durchführt. H_Daten können nicht gelesen oder ge schrieben werden.
Bit 7-5: Resv -- Reserviert liest immer 0.
Bit 4-0: ATCNT -- Der Autotestzähler ist ein programmierbarer 5-bit- Abwärtszähler, der während des Autotestmodus verwendet wird. Der in den Zähler programmierte Wert ist die Anzahl von durchzuführenden Zerstückelungszyklen. Die Maximalzahl von Zyklen ist 32, wenn ATCNT mit 0×1Fh programmiert wird. Die mi nimale Anzahl von Zyklen ist 1, wenn ATCNT mit 0×00h program miert wird. Wenn der Zerstückelungsmodul im Autotestmodus läuft, wird der ATCNT, außer am Ende des letzten Zyklus (ATCNT = 0×00h), um eins am Ende jedes Zyklus decrementiert. Während das Zustandsbit ATM gesetzt ist, ist das Zustandsbit FP18O-Modus gleich dem niederwertigsten bit von ATCNT.
Bit 4-0: ATCNT -- Der Autotestzähler ist ein programmierbarer 5-bit- Abwärtszähler, der während des Autotestmodus verwendet wird. Der in den Zähler programmierte Wert ist die Anzahl von durchzuführenden Zerstückelungszyklen. Die Maximalzahl von Zyklen ist 32, wenn ATCNT mit 0×1Fh programmiert wird. Die mi nimale Anzahl von Zyklen ist 1, wenn ATCNT mit 0×00h program miert wird. Wenn der Zerstückelungsmodul im Autotestmodus läuft, wird der ATCNT, außer am Ende des letzten Zyklus (ATCNT = 0×00h), um eins am Ende jedes Zyklus decrementiert. Während das Zustandsbit ATM gesetzt ist, ist das Zustandsbit FP18O-Modus gleich dem niederwertigsten bit von ATCNT.
ATCNT kann gelesen werden, wann immer Busy gesetzt ist.
Wenn Busy gesetzt ist, mag ATCNT nicht stabil sein. Um si
cherzustellen, das ein gültiges Lesen erfolgt, muß das Regi
ster zweifach gelesen werden, und die Werte müssen vergli
chen werden. Wenn die beiden Lesungen den gleichen Wert erge
ben, ist das Lesen gültig. Wenn die beiden Werte nicht gleich
sind, ist der obige Vorgang zu wiederholen.
W_Daten ist ein 32-bit-Pfad zum Laden von W-Werten in das
Schieberegister 302 innerhalb des Zerstückelungsmoduls 104 durch den
Multiplexer 301. Die Steuereinheit 604 und das Businterface 601 decodie
ren ein Schreiben zu dem W_Datenregister vom Busmaster. Der Busmaster
muß die W_Werte in folgender Ordnung laden: W0, W1, W2, . . . , W14, W15.
Wenn W15 geladen ist, setzt der Zerstückelungsmodul 104 Busy. W15 muß
zuletzt geladen werden.
H_Daten sind ein 32-bit-Pfad zum Laden und Entladen von H-Wer
ten. Der Busmaster lädt die H-Werte in der folgenden Ordnung: H4, H3,
H2, H1, H0. Die H-Werte werden in folgender Ordnung ausgelesen: H4, H3,
H2, H1, H0.
Die folgende Beschreibung ist eine Methode zum Programmieren
und Verwenden des Zerstückelungsmoduls 104.
- 1. Lese das Zustandsregister zum Checken des Zustandsbits Busy.
- 2. Wenn das Zustandsbit Busy gesetzt ist, gehe zurück zu # 1. Wenn das Bit gelöscht ist, fahre fort.
- 3. Lösche das FP180-Kontrollbit, um den Zerstückelungsmodul in den FP- 180-1-Modus zu bringen.
- 4. Schreibe H4, H3, H2, H1 und dann H0 in das H_Datenregister. Das H_Datenregister muß in dieser Ordnung geladen werden.
- 5. Schreibe W0, W1, . . . , W14, dann W15 in das W_Datenregister.
- 6. Zerstückelung beginnt, sobald W15 geschrieben ist. Der Zerstücke lungsmodul setzt das Zustandsbit Busy.
- 7. Wenn das Zustandsbit Busy gelöscht ist, können die nächsten W0-W15 geladen werden. Die zyklische Abfrage des Zustandsbits Busy und das Laden der W-Werte geschieht, nachdem das Zustandsbit Busy gelöscht ist.
- 8. Schritte 6 und 7 werden für so viele Nachrichtenblocks wiederholt, wie gewünscht.
- 9. Wenn das Zustandsbit Busy gelöscht ist und der letzte Nachrichten block von W-Worten zerstückelt worden ist, kann die Nachrichtenüber sicht aus MD 213 in Fig. 2 über das Businterface 601 in Fig. 6 ausge lesen werden. Die Nachrichtenübersicht MD wird gelesen, wie H-Werte aus dem H_Datenregister ausgelesen werden, nämlich in folgender Ordnung: H4, H3, H2, H1 und H0.
In Fig. 7 ist die Belegung und Zeitabfolge der Hardwareteile
während der obigen Zyklen 6 und 7 dargestellt, in denen ein neuer Nach
richtenblock durch den Bus 101, 502 über das Businterface 501 und in das
Schieberegister 302 zur Zeit t = 0 geladen wird. Nachdem der 32-bit-Un
terblock M15 der letzten Nachricht in das Schieberegister 302 zur Zeit t
= tL eingegeben wurde, ist der i-te Nachrichtenblock vollständig geladen
und der Wt-Generator 214, 300 beginnt mit der Erweiterung der Daten in
einer Rate von einem neuen zukünftigen Wt-Wert (Wt+16) pro Operationszy
klus t. Zur Zeit tL beginnt der Zerstückelungsmodul 200, 104 das Zer
stückeln des Nachrichtenblocks mit einer Operation pro Zyklus t. Daher
hält das Schieberegister 302 den laufenden und die nächsten 15W_Daten
werte. Die Länge von tL beträgt 16 Zyklen. Die Erweiterungshardware
(305, 306, 307, 308), 214 befindet sich zur Zeit t = tL + tE, das 16 Zy
klen vor dem Ende der Zerstückelungsschleife von 80 Zyklen ist, im Ruhe
zustand. Zur Zeit tL + tE + tI befindet sich der Zerstückelungsmodul
200, 104 im Ruhezustand. Während dieser Zeit wird der nächste Nachrich
tenblock i+1 durch das Businterface 601 auf den Bus 101, 602 in das
Schieberegister 302 geladen, während die Erweiterungshardware (305, 306,
307, 308), 214 und der Zerstückelungsmodul 200, 104 sich im Ruhezustand
befinden.
Wenn ein Produktionstest durch Zuführen eines vorbestimmten
Satzes von Eingängen wie in zugehörigen Lösungen durchgeführt wird, wird
der Bus 101, 602 belegt und das Prüfen anderer Module hat zu warten, bis
die Prüfung der Zerstückelungsfunktion beendet ist. Die Nachrichten
blockverarbeitungszeit beträgt tL + tE + tI; während der Zeit tL befin
det sich der Zerstückelungsmodul 200, 104 in unerwünschtem Ruhezustand.
Das in Fig. 8 dargestellte Zeitablaufdiagramm zeigt die Bele
gung und den Zeitablauf von Hardwarebauteilen während zwei Autotestzy
klen. Zur Zeit t = 0 wird ein Anfangsprüfnachrichtenblock über den Bus
101, 602 in das Schieberegister 302 geschrieben. Zur Zeit t = tL beginnt
die Expansionshardware (305, 306, 307, 308), 214 und der Zerstückelungs
modul 200 mit der Verarbeitung. Jedoch beendet zur Zeit t = tL + tE die
Erweiterungshardware (305, 306, 307, 308), 214 das Erzeugen des W79, wie
durch den Sicherheitszerstückelungsalgorithmus gefordert, und beginnt
automatisch, die Daten des zweiten Prüfblocks während der letzten 16 Zy
klen der Verarbeitung des vorherigen Nachrichtenblocks zu erzeugen. Die
Verwendung der Erweiterungshardware (305, 306, 307, 308), 214 zum Erzeu
gen des nächsten Prüfnachrichtenblocks eliminiert die Notwendigkeit, den
nächsten Nachrichtenblock über den Bus 101, 602 zu laden. Auf diese Wei
se kann die Prüfüberdeckung infolge eines Durchlaufens von T Prüfnach
richtenblöcken MB(1) bis MB(T) groß werden, um eine Fehlerüberdeckung
von 1-(1-P)T zu erreichen. Jedoch muß nur ein Nachrichtenblock MB(1)
eingegeben werden. Die übrigen Prüfnachrichtenblöcke MD(2) bis MD(T)
werden aus dem ersten Nachrichtenblock MB(1) gemäß der folgenden Erwei
terungsfunktion erzeugt, in der Mi das i-te 32-bit-Nachrichtenwort dar
stellt:
M(t-64) = Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16
für t = 64 bis 79.
Zur Zeit t = 64 (t = tL + tE in Fig. 8) beginnt die Erweiterungshardware
(305, 306, 307, 308), 214 mit dem Berechnen des ersten Nachrichtenunter
blocks M0 des nächsten Prüfnachrichtenblocks gemäß der obigen Gleichung,
und zwar basierend auf den letzten sechzehn 32-bit-Unterblocks (W64-W79)
des laufenden Prüfnachrichtenblocks, die sich noch in dem Schieberegi
ster 302 befinden. Da das Schreiben des nächsten Nachrichtenblocks durch
den Multiplexer 301 anstatt über den Bus 101, 602 erfolgt, können andere
Tests parallel zu dem Autotest der Zerstückelungsfunktion durchgeführt
werden.
Der Zerstückelungsmodul 104 liefert daher einen speziellen Mo
dus zum Prüfen und Verifizieren. Dieser Autotestmodus ermöglicht es da
her, daß der Zerstückelungsmodul 104 um eine Programmiere-Anzahl von Ma
len ohne äußere Hilfe nach einem Ingangsetzungsprozeß den Zerstücke
lungsalgorithmus durchläuft.
Der Autotestmodus ermöglicht es, daß der Zerstückelungsmodul
104 zwischen 1 bis 32 Malen den Zerstückelungsalgorithmus durchläuft.
Bevorzugt bestimmt das niederwertigste bit des ATCNT-Registers, ob der
laufende Zerstückelungszyklus in FP180- oder FP180-1-Modus durchlaufen
wird. Nach dem Laden der anfänglichen 16 W-Werte in das W_Datenregister
ist der Zerstückelungsmodul in Betrieb, bis alle Zerstückelungszyklen
vervollständigt sind, wie sie durch den im ATCNT-Register programmierten
Wert bestimmt sind, das Signal Rst gesetzt wird oder ein Systemrückset
zen eintritt. Das ATCNT-Register wird um eins am Ende jedes Zerstücke
lungszyklus dekrementiert, außer wenn ATCNT gleich null ist.
W-Werte werden in der folgenden Weise im Autotestmodus er
zeugt:
Die ersten W0-W15 werden durch den Benutzer geladen. Während des ersten Zerstückelungszyklus werden W16-W79 wie üblich während Schleifen 0-63 des Zerstückelungszyklus erzeugt. Die W-Werte werden un ter Verwendung von entweder der FP180- oder FP180-1-Methode in Abhängig keit von dem niederwertigsten bit von ATCNT erzeugt. Während der Schlei fen 64-78 des Zerstückelungszyklus werden W80-W94 in der gleichen Weise wie die anderen W-Werte erzeugt. Für den zweiten Zerstückelungszyklus werden W80-W94 des ersten Zyklus zu W0-W14 des zweiten Zyklus und W79 des ersten Zyklus wird W15 des zweiten Zyklus. (Alternativ wird W95 ge mäß der oben definierten Erweiterungsfunktion während des ersten Zyklus berechnet und wird W15 des nächsten Zyklus.) Dies setzt sich durch alle Zerstückelungszyklen fort.
Die ersten W0-W15 werden durch den Benutzer geladen. Während des ersten Zerstückelungszyklus werden W16-W79 wie üblich während Schleifen 0-63 des Zerstückelungszyklus erzeugt. Die W-Werte werden un ter Verwendung von entweder der FP180- oder FP180-1-Methode in Abhängig keit von dem niederwertigsten bit von ATCNT erzeugt. Während der Schlei fen 64-78 des Zerstückelungszyklus werden W80-W94 in der gleichen Weise wie die anderen W-Werte erzeugt. Für den zweiten Zerstückelungszyklus werden W80-W94 des ersten Zyklus zu W0-W14 des zweiten Zyklus und W79 des ersten Zyklus wird W15 des zweiten Zyklus. (Alternativ wird W95 ge mäß der oben definierten Erweiterungsfunktion während des ersten Zyklus berechnet und wird W15 des nächsten Zyklus.) Dies setzt sich durch alle Zerstückelungszyklen fort.
Die Methode zur Verwendung dieses Modus ist nachstehend aufge
führt:
- 1. Setze das Rst-bit in das Steuerregister.
- 2. Setze das ATst-bit in das Steuerregister.
- 3. Wenn ATst gesetzt ist, ist das FP180-Modus-Zustandsbit gleich dem niederwertigsten bit von ATCNT.
- 4. Lese das Zustandsregister, um das Setzen von ATM sicherzustellen.
- 5. Programmiere einen Wert N (zwischen 0 und 31) in ATCNT.
- 6. Lese ATCNT, um sicherzustellen, daß es gleich N ist.
- 7. Lade fünf H-Werte in das H_Datenregister.
- 8. Lade 16 W-Werte in das W_Datenregister.
- 9. Lese das Zustandsregister, um sicherzustellen, daß ATM und Busy gesetzt sind und FP180 gleich dem niederwertigsten bit von ATCNT ist.
- 10. Der Zerstückelungsmodul sollte für etwa (410*(N+1))-Takte laufen.
- 11. Wenn das Zustandsbit Busy gelöscht ist, ist der Autotest vervoll ständigt.
- 12. Lese die Nachrichtenübersicht aus den H_Datenregistern.
Der korrekte Weg, um den Autotestmodus zu verwenden, besteht
darin, einen Test mit bekannter Antwort durchzuführen. Fig. 9 illu
striert ein Verfahren zur Durchführung eines solchen Tests. Der Tester,
etwa ein Testprogramm im Produktionstestbereich, wie in Fig. 10 darge
stellt, oder ein Selbsttestprogramm im ROM 103, oder ein Testprogramm in
einem externen Speicher 106, beginnt die Zerstückelung beim Schritt 901.
Ein Testnachrichtenwortzähler 1 startet bei null. Test 902 bestimmt, ob
der sechzehnte und letzte 32-bit-Testnachrichtenunterblock M0(15) be
reits eingegeben wurde. Wenn Test 902 die Antwort bejaht, lädt Stufe 903
den l-ten 32-bit-Nachrichtenunterblock in einen FIFO Eingangspuffer (wie
etwa das Schieberegister 302). Nachdem die Schritte 902 und 903 sech
zehnmal gemäß der bevorzugten Ausführungsform des Sicherheitszerstücke
lungsalgorithmus wiederholt wurden, zweigt Test 902 zur Zeit t = 0 und
Testnachrichtenblock i = O zu Schritt 904. In Schritt 904 vollführt die
Zerstückelungsfunktion ihre grundlegende Zerstückelung. In Schritt 905
vollführt die Erweiterungshardware ihre Erweiterungsfunktion, die vor
zugsweise eine solche ist, die im Sicherheitszerstückelungsalgorithmus
verwendet wird. Test 906 prüft den FIPS PUB 180-Modus, der vorzugsweise
das niederwertigste bit des Testzählers ATCNT ist. Wen FIPS MODE ge
löscht ist, wird das Ergebnis der Erweiterung um eine Bitposition links
rotiert, und wenn FIPS MODE gesetzt ist, wird das Resultat der Erweite
rung in Schritt 908 nicht links rotiert. Test 909 bestimmt, ob die Ope
rationszahl t kleiner als 64 ist, in welchem Fall Erweiterungs-W-Daten
für den laufenden Nachrichtenblockzyklus durch die W-Datenerweiterungs
hardware erzeugt und in der Zerstückelung des laufenden Nachrichten
blocks in Schritt 910 verwendet werden müssen. Wenn Test 909 bestimmt,
daß Schritt 63 vorbei ist, erzeugt die W-Datenerweiterungshardware zu
sätzliche sechzehn W-Werte für den nächsten Prüfnachrichtenblock und
schreibt diese in den Eingangspuffer in Schritt 911. Test 912 iteriert
die Zerstückelungsoperation 904, wenn t inkrementiert wird oder aktuali
siert die Nachrichtenübersicht in Schritt 913, wenn die letzte Zerstüc
kelungsoperation durchgeführt wurde (t = 79). Danach wird der Prüfzähler
ATCNT mit null im Test 914 verglichen. Wenn ATCNT nicht null ist, wird
ATCNT in Schritt 917 dekrementiert und die Zerstückelungsoperation für
einen weiteren 512-bit-Prüfnachrichtenblock wiederholt. In der bevorzug
ten Ausführungsform wird der FIPS MODE (in Schritt 906 geprüft, um zu
bestimmen, welcher der Schritte 907 und 908 durchzuführen ist) während
des nächsten Zyklus das Gegenteil, da das niederwertigste bit des ATCNT
jeden Zyklus relativ zu seinem vorhergehenden Zyklus invertiert. Wenn
Test 914 bestimmt, daß der Testzähler ATCNT null erreicht hat, gibt
Schritt 915 die Nachrichtenübersicht als eine Serie von fünf 32-bit-Wor
ten über das Businterface 601 an den Tester. Dann vergleicht das Test
programm das Produkt, die berechnete Nachrichtenübersicht mit der vorbe
rechneten bekannten korrekten Antwort. Wenn die ausgegebene Nachrichten
übersicht und die vorbestimmte bekannte korrekte Antwort gleich sind,
passiert das Produkt den Produkttest. Wenn dagegen Gleichheit nicht
festgestellt wird, hat der Zerstückelungsmodul 104 den Test verfehlt.
ATCNT wird groß gemacht, um eine hohe Fehlerüberdeckung mit einem Wort
fester Größe zu erzielen.
Der Zerstückelungsmodul profitiert von der laufenden Unter
stützung durch den Prozessor. Der Prozessor ist verantwortlich zur Nach
richtenauffüllung, das Laden der Anfangs-(H)Werte und das Datenla
den/Entladen. Die Firmware muß das Zustandbit Busy zyklisch abfragen,
dann die sechzehn neuen W-Werte innerhalb von 100 Zyklen laden, um diese
Leistung zu ereichen. Wenn das Zustandsbit Busy gelöscht ist, wird nicht
länger in das Schieberegister 302 geschrieben.
Claims (19)
1. Verfahren zum Prüfen einer Zerstückelungsfunktion, insbe
sondere einer Sicherheitszerstückelungsfunktion, auf Hardwarebasis, bei
dem M-bit-Nachrichtenblocks seriell als Eingang verwendet und eine
H-bit-Nachrichtenübersicht erzeugt wird, wobei die Zerstückelungsfunk
tion eine Datenerweiterungsfunktion in Hardware-Lösung zum Konvertieren
der M-bit-Nachrichtenblocks in einen E-bit-Block erweiterten Nachrichten
umfaßt, dadurch gekennzeichnet, daß zum Prüfen
- (a) ein vorbestimmter M-bit-Eingangsprüfnachrichtenblock MB(1) in die Zerstückelungsfunktion geladen wird, wobei für jedes i von 1 bis T inklusiv
- (b) die Erweiterungsfunktion auf einen i-ten M-bit-Prüf nachrichtenblock MB(i) zum Erzeugen eines i-ten erweiterten E-bit-Prüf nachrichtenblocks angewandt wird,
- (c) die Zerstückelungsfunktion auf den i-ten erweiterten E-bit-Prüfnachrichtenblock zum Erzeugen einer i-ten H-bit-Nachrichten übersicht MD(i) angewandt wird,
- (d) die Erweiterungsfunktion verwendet wird, um einen Teil des i-ten erweiterten Prüfnachrichtenblocks als Eingang zum Erzeugen ei nes i+1-ten M-bit-Prüfnachrichtenblocks MB(i+1) zu verwenden, und
- (e) durch die Zerstückelungsfunktion die T-te H-bit-Nachrich tenübersicht ausgegeben wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß als-
Werte für M = 512, E = 2056 und H = 160 verwendet werden.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß die Erweiterungsfunktion einen W-bit-Unterblock pro Zerstückelungs
operation erzeugt.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die
Erweiterungsfunktion einen zukünftigen W-bit-Unterblock über ein bitwei
se arbeitendes exklusives ODER-Gatter für zwei oder mehr W-bit-Unter
blocks erzeugt.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß bei
W = 32 die Zerstückelungsfunktion 32-bit-Unterblocks bearbeitet, wobei
jeder nachfolgende Prüfnachrichtenblock MB(i+1) sechzehn Unterblocks
MB(i+1)[0 : 15] umfaßt, der erweiterte Nachrichtenblock EMB(i) achtzig er
weiterte 32-bit-Unterblocks EMB(i)[0 : 79] umfaßt und die Zerstückelungs
funktion Schritt (d) durch Vornahme einer bitweisen logischen Erweite
rungsoperation für t = 64 bis 79 vornimmt, um den nachfolgenden Nach
richtenblock t-64-ten Unterblock MB(i+1)[t-64] durch bitweises XODERn
von vier vorher berechneten Unterblöcken zu erzeugen.
6. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß bei
W = 32 die Zerstückelungsfunktion 32-bit-Unterblocks bearbeitet, wobei
jeder nachfolgende Prüfnachrichtenblock MB(i+1) sechzehn Unterblocks
MB(i+1)[0 : 15] umfaßt, der erweiterte Nachrichtenblock EMB(i) achtzig er
weiterte 32-bit-Unterblocks EMB(i)[0 : 79] umfaßt und die Zerstückelungs
funktion Schritt (d) durch Vornahme einer bitweisen logischen Erweite
rungsoperation für t = 64 bis 78 vornimmt, um den nachfolgenden Nach
richtenblock t-64-ten Unterblock MB(i+1)[t-64] durch bitweises XODERn
von vier vorher berechneten Unterblöcken zu erzeugen, und für t = 79 der
nachfolgende Nachrichtenblock t-64-te Unterblock dem letzten Nachrich
tenblockunterblock EMB(i)[t] zugeordnet wird.
7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet,
daß als die vier vorher berechneten Unterblöcke
EMB(i)[t],
EMB(i)[t+2] für t<78, ansonsten MB(i+1)[t-78],
EMB(i)[t+8] für t<72, ansonsten MB(i+1)[t-72] und
EMB(i)E[t+13] für t<67, ansonsten MB(i+1)[t-67]
verwendet werden.
EMB(i)[t],
EMB(i)[t+2] für t<78, ansonsten MB(i+1)[t-78],
EMB(i)[t+8] für t<72, ansonsten MB(i+1)[t-72] und
EMB(i)E[t+13] für t<67, ansonsten MB(i+1)[t-67]
verwendet werden.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß der
nächste Nachrichtenblockunterblock MB(i+1)[t-64] um eine bit-Position
nach links rotiert wird, wenn ein FP-Steuerbit entfällt.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß das
niederwertigste bit eines Prüfnachrichtenblockzählers (ATCNT) in das
FP-Steuerbit geschrieben wird und der Prüfnachrichtenblockzähler (ATCNT)
bei jedem Prüfnachrichtenblock i dekrementiert wird.
10. Verfahren nach einem der Ansprüche 7 bis 9, dadurch ge
kennzeichnet, daß ein K-tiefes, W-bit-breites FIFO-Register mit einem
Ladeeingang für W_Daten, einem gewählten Registerausgang und einem Regi
sterwähleingang, ein W-bit breites bitweises XODER-Gatter mit einem er
sten und einem zweiten XOR-Eingang, das einen XOR-Ausgang erzeugt, und
ein W-bit breiter Teil-PXODER-Akkumulator-Flipflop zum Speichern zwi
schenzeitlicher Erweiterungsdaten, das einen Ladeeingang PXOR und einen
PXOR-Ausgang für den Inhalt besitzt, verwendet werden, wobei der
XOR-Ausgang mit dem PXOR-Eingang verbunden und der PXOR-Ausgang mit dem er
sten XOR-Eingang verbunden ist, während der zweite XOR-Eingang mit dem
gewählten Registerausgang verbunden ist.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß
ein Linksschiebe-Multiplexer zum wahlweisen Schieben des XOR-Ausgangs um
eine bit-Position verwendet wird, der einen durchgehenden Eingang und
einen linkschiebenden Eingang aufweist und einen Erweiterungsunterblock
ausgang erzeugt.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß
ein Eingangsmultiplexer zum Wählen eines extern gespeisten Eingangs oder
des Erweiterungsunterblockausgangs als Eingang und zum Erzeugen des La
deeingangs für W_Daten verwendet wird.
13. Verfahren nach einem der Ansprüche 1 bis 12, dadurch ge
kennzeichnet, daß die T-te H-bit-Nachrichtenübersicht mit einer bekann
ten, korrekten Antwort zum Bestimmen des Prüfresultats verglichen wird.
14. Verfahren nach einem der Ansprüche 10 bis 13, dadurch ge
kennzeichnet, daß die Schritte (b) und (d) aus folgenden Schritten zu
sammengesetzt sind:
Löschen des PXOR-Flipflops,
Wahl eines ersten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in den PXOR-Flip-Flop,
Wahl eines zweiten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in den PXOR-Flipflop,
Wahl eines dritten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in den PXOR-Flipflop, und
Wahl eines vierten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in die letzte Stelle des K-tiefen Registers.
Löschen des PXOR-Flipflops,
Wahl eines ersten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in den PXOR-Flip-Flop,
Wahl eines zweiten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in den PXOR-Flipflop,
Wahl eines dritten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in den PXOR-Flipflop, und
Wahl eines vierten Registers über den Registerwähleingang des K-tiefen Registers und Laden des XOR-Ausgangs in die letzte Stelle des K-tiefen Registers.
15. Verfahren nach einem der Ansprüche 1 bis 14, dadurch ge
kennzeichnet, daß vor Schritt (a) ein Autoteststeuerbit gesetzt, T-1 in
einen Prüfnachrichtenblockzähler (ATCNT) geladen und fünf Initialisie
rungskonstanten in ein H-Register geladen werden.
16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß in
Schritt (a) für j = 0 bis 15 ein j-ter 32-bit-Nachrichtenblockunterblock
Mj(l) in den Zerstückelungsfunktionsdatenspeicher geladen wird.
17. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß
der Zerstückelungsfunktionsdatenspeicher ein sechzehn tiefer 32-bit
breiter FIFO-Puffer ist.
18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß im
Zerstückelungsfunktionsdatenspeicher ein laufender W-Wert und 15 zukünf
tige W-Werte gespeichert werden.
19. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß
Schritt (c) ein Lesen des laufenden W-Wert und eines oder mehrerer zu
künftiger W-Werte aus dem Zerstückelungsfunktionsdatenspeicher, die Aus
übung einer bitweisen logischen XODER-Funktion auf den laufenden W-Wert
und den einen oder die mehreren zukünftigen W-Werte zum Erzeugen eine
erweiterten W-Werts sowie Schreiben des letzteren in den Zerstückelungs
funktionsdatenspeicher umfaßt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/521,794 US5623545A (en) | 1995-08-31 | 1995-08-31 | Automatic data generation for self-test of cryptographic hash algorithms in personal security devices |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19635107A1 true DE19635107A1 (de) | 1997-04-24 |
Family
ID=24078187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19635107A Withdrawn DE19635107A1 (de) | 1995-08-31 | 1996-08-30 | Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-Basis |
Country Status (3)
Country | Link |
---|---|
US (1) | US5623545A (de) |
KR (1) | KR970012213A (de) |
DE (1) | DE19635107A1 (de) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5841872A (en) * | 1996-07-01 | 1998-11-24 | Allsoft Distributing Incorporated | Encryption enhancement system |
US6041123A (en) * | 1996-07-01 | 2000-03-21 | Allsoft Distributing Incorporated | Centralized secure communications system |
WO1998047259A2 (en) * | 1997-03-10 | 1998-10-22 | Fielder Guy L | File encryption method and system |
US6105010A (en) * | 1997-05-09 | 2000-08-15 | Gte Service Corporation | Biometric certifying authorities |
KR100486062B1 (ko) | 1997-05-09 | 2005-04-29 | 지티이 서비스 코포레이션 | 생측정 증명 |
US6208746B1 (en) | 1997-05-09 | 2001-03-27 | Gte Service Corporation | Biometric watermarks |
US6202151B1 (en) | 1997-05-09 | 2001-03-13 | Gte Service Corporation | System and method for authenticating electronic transactions using biometric certificates |
US6307936B1 (en) | 1997-09-16 | 2001-10-23 | Safenet, Inc. | Cryptographic key management scheme |
US6704871B1 (en) | 1997-09-16 | 2004-03-09 | Safenet, Inc. | Cryptographic co-processor |
CA2303297C (en) * | 1997-09-16 | 2008-11-25 | Information Resource Engineering, Inc. | Cryptographic co-processor |
US6278782B1 (en) | 1997-09-16 | 2001-08-21 | Safenet, Inc. | Method of implementing a key recovery system |
US6397331B1 (en) | 1997-09-16 | 2002-05-28 | Safenet, Inc. | Method for expanding secure kernel program memory |
US6282657B1 (en) | 1997-09-16 | 2001-08-28 | Safenet, Inc. | Kernel mode protection |
US6412069B1 (en) | 1997-09-16 | 2002-06-25 | Safenet, Inc. | Extending crytographic services to the kernel space of a computer operating system |
US6453415B1 (en) | 1997-09-16 | 2002-09-17 | Safenet, Inc. | Method of communicating securely between an application program and a secure kernel |
US6708273B1 (en) | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US5960434A (en) * | 1997-09-26 | 1999-09-28 | Silicon Graphics, Inc. | System method and computer program product for dynamically sizing hash tables |
GB9909539D0 (en) * | 1999-04-27 | 1999-06-23 | Ncipher Corp Limited | Data storage and retrieval |
US6690667B1 (en) | 1999-11-30 | 2004-02-10 | Intel Corporation | Switch with adaptive address lookup hashing scheme |
US6928162B1 (en) | 2000-04-07 | 2005-08-09 | International Business Machines Corporation | Method and system for manipulating and telescoping a hash function |
US7318050B1 (en) | 2000-05-08 | 2008-01-08 | Verizon Corporate Services Group Inc. | Biometric certifying authorities |
FR2810481B1 (fr) * | 2000-06-20 | 2003-04-04 | Gemplus Card Int | Controle d'acces a un moyen de traitement de donnees |
US20020032551A1 (en) * | 2000-08-07 | 2002-03-14 | Jabari Zakiya | Systems and methods for implementing hash algorithms |
US6798883B1 (en) * | 2000-09-18 | 2004-09-28 | The United States Of America As Represented By The National Security Agency | Method of testing a randomizer |
US7142669B2 (en) * | 2000-11-29 | 2006-11-28 | Freescale Semiconductor, Inc. | Circuit for generating hash values |
KR100369939B1 (ko) * | 2000-12-27 | 2003-01-29 | 한국전자통신연구원 | 전화번호를 이용한 아이피브이6 인터넷 주소 자동생성방법 및 획득방법 |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
US7489779B2 (en) * | 2001-03-22 | 2009-02-10 | Qstholdings, Llc | Hardware implementation of the secure hash standard |
US20040133745A1 (en) | 2002-10-28 | 2004-07-08 | Quicksilver Technology, Inc. | Adaptable datapath for a digital processing system |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
US6836839B2 (en) | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US7962716B2 (en) | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US6577678B2 (en) | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
US20020191783A1 (en) * | 2001-06-13 | 2002-12-19 | Takahashi Richard J. | Method and apparatus for creating a message digest using a multiple round, one-way hash algorithm |
KR100417793B1 (ko) * | 2001-07-06 | 2004-02-11 | 주홍정보통신주식회사 | Sha-1에 사용되는 중간값 생성회로 |
US7167514B2 (en) * | 2001-07-18 | 2007-01-23 | Agere Systems Inc. | Processing of quinary data |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US7215701B2 (en) | 2001-12-12 | 2007-05-08 | Sharad Sambhwani | Low I/O bandwidth method and system for implementing detection and identification of scrambling codes |
US7403981B2 (en) * | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
US7660984B1 (en) | 2003-05-13 | 2010-02-09 | Quicksilver Technology | Method and system for achieving individualized protected space in an operating system |
US7328414B1 (en) | 2003-05-13 | 2008-02-05 | Qst Holdings, Llc | Method and system for creating and programming an adaptive computing engine |
US7203844B1 (en) * | 2002-06-20 | 2007-04-10 | Oxford William V | Method and system for a recursive security protocol for digital copyright control |
US8438392B2 (en) * | 2002-06-20 | 2013-05-07 | Krimmeni Technologies, Inc. | Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7937591B1 (en) | 2002-10-25 | 2011-05-03 | Qst Holdings, Llc | Method and system for providing a device which can be adapted on an ongoing basis |
US8276135B2 (en) | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
US7539304B1 (en) * | 2002-11-18 | 2009-05-26 | Silicon Image, Inc. | Integrated circuit having self test capability using message digest and method for testing integrated circuit having message digest generation circuitry |
US8140824B2 (en) * | 2002-11-21 | 2012-03-20 | International Business Machines Corporation | Secure code authentication |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US8694510B2 (en) * | 2003-09-04 | 2014-04-08 | Oracle International Corporation | Indexing XML documents efficiently |
WO2005033888A2 (en) * | 2003-10-03 | 2005-04-14 | Qmotions Inc. | Input system and method |
US20050076161A1 (en) * | 2003-10-03 | 2005-04-07 | Amro Albanna | Input system and method |
WO2005085888A1 (en) * | 2004-03-05 | 2005-09-15 | Vfs Technologies Limited | Testing of embedded systems |
KR20070042511A (ko) * | 2004-06-14 | 2007-04-23 | 디 유니버시티 오브 노스 캐롤라이나 앳 그린스보로 | 디지털 콘텐트 보안 시스템 및 방법 |
JP4546339B2 (ja) * | 2005-06-29 | 2010-09-15 | キヤノン株式会社 | 乱数生成装置及び乱数生成方法 |
US8521736B2 (en) * | 2005-10-26 | 2013-08-27 | Dassault Systemes Enovia Corp. | Managing hierarchies of components |
US20080304664A1 (en) * | 2007-06-07 | 2008-12-11 | Shanmugathasan Suthaharan | System and a method for securing information |
US8442218B2 (en) * | 2009-02-27 | 2013-05-14 | Red Hat, Inc. | Method and apparatus for compound hashing via iteration |
US9680637B2 (en) * | 2009-05-01 | 2017-06-13 | Harris Corporation | Secure hashing device using multiple different SHA variants and related methods |
JP5990466B2 (ja) | 2010-01-21 | 2016-09-14 | スビラル・インコーポレーテッド | ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置 |
US8904189B1 (en) | 2010-07-15 | 2014-12-02 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time using control flow signatures |
US20120216281A1 (en) * | 2011-02-22 | 2012-08-23 | PCTEL Secure LLC | Systems and Methods for Providing a Computing Device Having a Secure Operating System Kernel |
KR20150011802A (ko) | 2012-03-20 | 2015-02-02 | 크림메니 테크놀로지스, 인크. | 프로세스 작업 세트 격리를 위한 방법 및 시스템 |
US9990505B2 (en) | 2014-08-12 | 2018-06-05 | Redwall Technologies, Llc | Temporally isolating data accessed by a computing device |
US10454670B2 (en) * | 2016-06-10 | 2019-10-22 | Cryptography Research, Inc. | Memory optimization for nested hash operations |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4680539A (en) * | 1983-12-30 | 1987-07-14 | International Business Machines Corp. | General linear shift register |
-
1995
- 1995-08-31 US US08/521,794 patent/US5623545A/en not_active Expired - Lifetime
-
1996
- 1996-08-30 KR KR1019960036665A patent/KR970012213A/ko not_active Application Discontinuation
- 1996-08-30 DE DE19635107A patent/DE19635107A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR970012213A (ko) | 1997-03-29 |
US5623545A (en) | 1997-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19635107A1 (de) | Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-Basis | |
DE60105788T2 (de) | AES Verschlüsselungsschaltung | |
DE2540824C2 (de) | Auf verschiedene Ausbaustufen veränderbare Abrechnungsmaschine | |
DE69632978T2 (de) | Multi-Operand-Addierer, der Parallelzähler benutzt | |
DE69831900T2 (de) | Programmier-Modus-Auswahl mit JTAG Schaltungen | |
DE2753062A1 (de) | Einrichtung zur durchfuehrung programmierter befehle | |
DE19635115A1 (de) | Verfahren zum Prüfen einer kryptographischen Einrichtung | |
DE1499722B1 (de) | Einrichtung zur modifizierung von informationswoertern | |
WO2006092448A2 (de) | Verfahren und vorrichtung zum berechnen einer polynom-multiplikation, insbesondere für die elliptische kurven-kryptographie | |
DE19839627A1 (de) | Digitaler Signalprozessor | |
DE2910839A1 (de) | Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion | |
DE102007052656A1 (de) | Digital-Verschlüsselungs-Hardware-Beschleuniger | |
DE2946846A1 (de) | Rundungs-korrekturlogik fuer multiplizierer fuer modifizierten booth-algorithmus | |
DE102012012509B4 (de) | Verfahren und Vorrichtung zum Austausch des Betriebssystems eines ressourcenbeschränkten tragbaren Datenträgers | |
DE2221693C3 (de) | Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen | |
DE10319585B4 (de) | Manipulationsgeschütztes Datenverarbeitungssystem und zugehöriges Verfahren zum Manipulationsschutz | |
DE2830334C2 (de) | ||
EP1324188A2 (de) | Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens | |
DE102004061312B4 (de) | Vorrichtung und Verfahren zum Detektieren eines potentiellen Angriffs auf eine kryptographische Berechnung | |
EP1342153B1 (de) | Verfahren und vorrichtung zum erzeugen einer pseudozufallsfolge mittels diskretem logarithmus | |
DE3138698A1 (de) | Verfahren zur potenzierung grosser binaerzahlen in einer restklasse modulo n, insbesondere zur verschluesselung und entschluesselung digital dargestellter nachrichten | |
WO2012065730A1 (de) | Verfahren zur langzahldivision oder modulare reduktion | |
DE2362238A1 (de) | Elektronische datenverarbeitungsanordnung | |
EP1478999B1 (de) | Vorrichtung und verfahren zum umrechnen eines terms | |
DE112018006405T5 (de) | Verfahren und Vorrichtung zur Berechnung der Hashfunktion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |