DE19635107A1 - Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-Basis - Google Patents

Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-Basis

Info

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
Application number
DE19635107A
Other languages
English (en)
Inventor
Matthew H Childs
Thomas M Norcross
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19635107A1 publication Critical patent/DE19635107A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/26Testing 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
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)
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
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]
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.
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.
Registerdefinition und Registeraddressen
Steuerregisterbeschreibung
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.
Zustandsregisterbeschreibung
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.
ATCNT-Registerbeschreibung
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.
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_Datenregisterdefinition
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_Datenregisterdefinition
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 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.
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.
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.
DE19635107A 1995-08-31 1996-08-30 Verfahren zum Prüfen einer Zerstückelungsfunktion auf Hardware-Basis Withdrawn DE19635107A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4680539A (en) * 1983-12-30 1987-07-14 International Business Machines Corp. General linear shift register

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