DE60204708T2 - Auf hash basierter pseudozufallszahlengenerator - Google Patents

Auf hash basierter pseudozufallszahlengenerator Download PDF

Info

Publication number
DE60204708T2
DE60204708T2 DE60204708T DE60204708T DE60204708T2 DE 60204708 T2 DE60204708 T2 DE 60204708T2 DE 60204708 T DE60204708 T DE 60204708T DE 60204708 T DE60204708 T DE 60204708T DE 60204708 T2 DE60204708 T2 DE 60204708T2
Authority
DE
Germany
Prior art keywords
hash
current
predetermined event
output
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60204708T
Other languages
English (en)
Other versions
DE60204708D1 (de
Inventor
Mike Ruehle
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE60204708D1 publication Critical patent/DE60204708D1/de
Publication of DE60204708T2 publication Critical patent/DE60204708T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator

Description

  • ALLGEMEINER STAND DER TECHNIK
  • 1. Gebiet der Erfindung
  • Die Erfindung betrifft im Allgemeinen Computer. Im Speziellen betrifft sie das Erzeugen von Pseudozufallszahlen.
  • 2. Beschreibung des Standes der Technik
  • Bei vielen Arten von Sicherheit, wie etwa bei der Datenverschlüsselung, kommen Zufallszahlen zum Einsatz, um das Knacken des Codes zu erschweren. Eine solche Verschlüsselung und Zufallszahlenerzeugung wird meistens mit Computern durchgeführt. Allerdings benutzt ein Computer eine endliche Menge bekannter Befehle und bekannter Zeitablaufbeziehungen, weswegen theoretisch nichts, was von einem Computer erzeugt wird, zufällig ist. Gemäß nachstehender Ausführung kann jedoch ein Computer mittels eines komplexen Algorithmus der richtigen Art eine Zahlenfolge berechnen, die scheinbar zufällig und schwer vorherzusagen ist, selbst wenn die Abfolge der bis dato gelieferten Zahlen bekannt ist. Ein Pseudozufallszahlengenerator (PRNG, engl. „pseudorandom number generator") wird „pseudozufällig" genannt, weil er seine Ausgabe erzeugt, indem er auf einer vergleichsweise kleinen Eingabedatenmenge (die zufällig sein kann oder nicht) einen komplexen Algorithmus iteriert, und nicht, indem er einen echt zufälligen physikalischen Vorgang abtastet. Der Wert eines PRNG bei Sicherheitsanwendungen beruht auf der Schwierigkeit, basierend auf der Kenntnis aller oder eines Teils der zuvor vom PRNG ausgegebenen Zahlen und/oder der an den PRNG eingegebenen Zahlen den Wert einer bestimmten Ausgabezahl zu bestimmen.
  • Einige PRNG benutzen einen iterativen Einweg-Hashalgorithmus, der eine erste Zahl nimmt, sie über einen Algorithmus in eine zweite Zahl umwandelt und dann die zweite Zahl als Eingabe für den Algorithmus zur Erzeugung einer dritten Zahl benutzt, die die Eingabe für den Algorithmus zur Erzeugung einer vierten Zahl wird, etc. Wenn der Algorithmus hinreichend komplex ist, so ist die Vorhersage einer Zahl aus den vorherigen Zahlen sehr schwierig. Wenn jedoch ein feindlicher Angreifer Kenntnis des PRNG-Algorithmus erlangt, ist er aufgrund der inflexiblen Beziehung zwischen Eingabe und Ausgabe des PRNG möglicherweise in der Lage dazu, alle zukünftigen Ausgaben vorherzusagen.
  • Eie herkömmliche Art zur Verringerung dieses Risikos besteht darin, bei jedem Durchgang auch den Wert eines freilaufenden Zählers einzuhashen. Dies steigert die Schwierigkeit, eine gegebene Zahl vorherzusagen und dadurch den Code zu knacken; dennoch ist die Ausgabe eines Zählers vorhersagbar linear. Mit genügend Ressourcen kann ein Angreifer, der es darauf anlegt, die Vorhersagbarkeit des Zählers mit den bereits bekannten Eigenschaften des Algorithmus kombinieren, um zu bestimmen, welchen Wert eine gegebene Pseudozufallszahl annehmen wird, und dadurch die Entschlüsselung einer verschlüsselten Nachricht durch eine feindliche Partei zu ermöglichen.
  • US-A-5627894 lehrt das Erzeugen von Pseudozufallszahlen, wobei Proben von einem freilaufenden Taktgeber benutzt werden, um die Zufälligkeit zu vergrößern.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung lässt sich am Besten unter Bezugnahme auf die nachstehende Beschreibung und die beigefügten Zeichnungen verstehen, die benutzt werden, um Ausführungsformen der Erfindung zu erläutern. Es zeigen:
  • 1 ein Blockdiagramm eines Pseudozufallszahlengenerators gemäß einer Ausführungsform der Erfindung,
  • 2 ein Schema eines linear rückgekoppelten Schieberegisters gemäß einer Ausführungsform der Erfindung,
  • 3A, 3B den relativen Zeitablauf zwischen Durchgängen und Zyklen gemäß einer Ausführungsform der Erfindung,
  • 4 ein Blockdiagramm einer spezifischen Ausführungsform von 1 gemäß einer Ausführungsform der Erfindung,
  • 5 ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der Erfindung und
  • 6 ein System gemäß einer Ausführungsform der Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details vorgestellt, um ein eingehendes Verständnis der Erfindung zu ermöglichen. Es versteht sich jedoch, dass die Erfindung ohne diese spezifischen Details in die Praxis umgesetzt werden kann. In anderen Fällen wurden bekannte Schaltungen, Strukturen und Verfahren nicht im Detail gezeigt, um die Verständlichkeit der Erfindung nicht zu beeinträchtigen.
  • Verschiedene Ausführungsformen der Erfindung benutzen die Ausgabe eines Zahlenfolgegenerators, wie etwa eines Zählers oder eines linear rückgekoppelten Schieberegisters, als periodische partielle Eingabe für eine iterative Hash-Operation. Um die Zufälligkeit der Hash-Ergebnisse zu steigern, kann die Ausgabe des Zahlenfolgegenerators zufälliger gemacht werden, indem sein Betrieb über nicht vorhersagbare Zeitintervalle hinweg gestoppt wird. Eine Ausführungsform lässt die Hash-Operation fortwährend laufen, stoppt aber den Zahlenfolgegenerator, wenn eine Anforderung nach einer Pseudozufallszahl erzeugt wird und startet den Zahlenfolgegenerator wieder zu Beginn des nächsten Hash-Durchgangs.
  • Eine iterative Hash-Operation ist jede sich wiederholende Hash-Operation, die wiederholt Ausgabezahlen aus Eingabezahlen erzeugt, wobei mindestens ein Teil jeder Ausgabezahl als Eingabe zur Erzeugung der nächsten Ausgabezahl zurückgeführt wird. In einer Ausführungsform wird eine modifizierte Form des bekannten Secure Hash Algorithmus (SHA) benutzt. In der Federal Information Processing Standards Publication 180-1, herausgegeben am 17. April 1995 vom National Institute of Standards and Technologie, Behörde der technologischen Administration des US-Wirtschaftsministeriums, wird ein Standard-SHA definiert.
  • 1 zeigt ein Blockdiagramm eines Pseudozufallszahlengenerators gemäß einer Ausführungsform der Erfindung. In der dargestellten Ausführungsform aus 1 weist der Zufallszahlengenerator (PRNG) 10 den Hasher 12 in Form einer Hash-Schaltung auf, die auf IN-1 und IN-2 kombinierte Eingabedaten empfängt, auf den kombinierten Eingabedaten eine Hash-Operation ausführt und auf OUT Ausgabedaten in Form einer Pseudozufallszahl (PRN) erzeugt. In der dargestellten Ausführungsform wird das Taktsignal CLK benutzt, um die Verarbeitungselemente des Hashers 12 zu takten, und zur Erzeugung einer jeden PRN werden mehrere Taktimpulse benötigt. Die an der Ausgabe erzeugte PRN wird ins Register 16 zwischengespeichert, von wo aus sie für Geräte oder Operationen, die eine PRN anfordern, verfügbar gemacht werden kann. In einer Ausführungsform überschreibt jede neue PRN die Daten in Register 16, so dass die verfügbare PRN wiederholt geändert wird.
  • Der Hasher 12 kann Eingabedaten aus zwei Quellen empfangen. In einer Ausführungsform stellen IN-1 und IN-2 parallele Bitgruppen dar, die gleichzeitig Daten empfangen. In einer weiteren Ausführungsform stellen IN-1 und IN-2 unterschiedliche Eingaben dar, die zu unterschiedlichen Zeiten über dieselben Eingabebits empfangen wurden, wie etwa über einen Multiplexer (nicht gezeigt). In einigen Ausführungsformen empfangen IN-1 und IN-2 jeweils große Zahlen als Folgen kleinerer Zahlen, die sequentiell empfangen werden.
  • Mindestens ein Abschnitt der Ausgabedaten von Hasher 12 wird zur Verwendung als Eingabe zum Hashen der nächsten PRN durch die Rückführungsschaltung 15 zur Eingabe IN-2 zurückgeführt. In einer Ausführungsform besteht die Rückführungsschaltung 15 aus direkten Verbindungen von OUT nach IN-2. In einer weiteren Ausführungsform führt die Rückführungsschaltung 15 eine aktive Operation auf den Daten aus, wie beispielsweise, aber nicht ausschließlich, die Ausgabedaten vorübergehend zu speichern und nach Bedarf abschnittsweise bereitzustellen.
  • Um die Zufälligkeit der Ausgabe des Hashers zu steigern, wird vom Zahlenfolgegenerator (NS) 14 an der Eingabe IN-1 eine weitere Eingabedatenquelle bereitgestellt. NS 14 wird so genannt, weil er eine Zahlenfolge ausgibt. Die Folge kann sich irgendwann wiederholen, wenn auch die Periode der Wiederholung sehr lang sein kann. In der dargestellten Ausführungsform aus 1 wird das Signal NSCLK benutzt, um die Verarbeitungselemente von NS 14 zu takten. In einer Ausführungsform ist NSCLK von CLK abgeleitet und kann von der Steuerschaltung 18 unabhängig von CLK gestoppt und gestartet werden, so dass der Hasher 12 weiterläuft, während die Ausgabe von NS 14 von einem ersten vorbestimmten Ereignis (wie etwa dem Empfang einer Anforderung nach einer Pseudozufallszahl) gestoppt und von einem zweiten vorbestimmten Ereignis (wie etwa dem Start des nächsten Hash-Durchgangs) gestartet wird. In verschiedenen Ausführungsformen eliminiert die Möglichkeit, den NS 14 unabhängig vom Hasher 12 zu stoppen und zu starten, die Synchronisation, die andernfalls zwischen dem NS 14 und dem Hasher 12 existiert, wenn diese von einer gemeinsamen Taktquelle betrieben werden.
  • In einer Ausführungsform ist der NS 14 ein Zähler, wie etwa ein 64-Bit-Zähler, und NSCLK wird benutzt, um den Zähler hochzuzählen (oder herunterzuzählen). In einer weiteren Ausführungsform ist der NS 14 ein linear rückgekoppeltes Schieberegister (LSFR, engl. „linear feedback shift register"), und NSCLK wird benutzt, um die Bits durch die Elemente des LSFR vorzuschieben.
  • 2 zeigt ein Schema eines linear rückgekoppelten Schieberegisters gemäß einer Ausführungsform der Erfindung. In der dargestellten Ausführungsform des linear rückgekoppeltes Schieberegister (LSFR) 20 erzeugen Flipflops 21-0 bis 21-7 eine Acht-Bit-Zahl auf den Ausgabebits b0 bis b7. Der Wert der Zahl kann sich mit jedem Impuls des Taktsignals CLK ändern, während der aktuelle Wert durch die Flipflops geschoben und von exklusiven Oder-Gates (XOR-Gates) 22 bis 24 modifiziert wird. Jedes XOR-Gate modifiziert die Eingabe eines gegebenen Flipflops, indem es an der Ausgabe des vorherigen Flipflops eine XOR-Operation mit der Ausgabe eines der folgenden Flipflops durchführt. In der dargestellten Ausführungsform wird die Eingabe für Flipflop 21-6 von Gate 22 mittels Durchführen einer XOR-Operation mit den Werten von b7 und b0 modifiziert, die Eingabe für Flipflop 21-5 wird von Gate 23 mittels Durchführen einer XOR-Operation mit den Werten von b6 und b5 modifiziert, die Eingabe für Flipflop 21-3 wird von Gate 24 mittels Durchführen einer XOR-Operation mit den Werten von b4 und b1 modifiziert, und der Wert von b3 wird unmodifiziert an die Eingabe von Flipflop 21-7 zurückgeführt. Andere Ausführungsformen könnten andere Rückführungsanordnungen benutzen. In einer Ausführungsform kann die Ausgabe mehrfacher Flipflops an ein einzelnes XOR-Gate zurückgeführt werden, das die Eingabe für Flipflop 21-7 bereitstellt.
  • Die obenstehend beschriebenen Rückführungsanordnungen und die XOR-Gates wirken sich dergestalt aus, dass der normalerweise vorhersagbare Bitfluss durch ein Schieberegister in einen Pseudozufallszahlengenerator verwandelt werden kann. Die endliche Anzahl von Bits und die festgelegte Natur der Rückführungsanordnung führen jedoch irgendwann zu einer sich wiederholenden Folge von Ausgabewerten, analog zu der Weise, in der ein Zähler eine sich wiederholende Folge von Ausgabewertend ausgibt. Ein grundlegender Unterschied zwischen dem Zähler und dem linear rückgekoppelten Schieberegister (LSFR) in dieser Patentanmeldung besteht darin, dass ein Zähler lange Perioden mit gleichen oberen Bits durchläuft, wodurch die an der Ausgabe vorliegende Unvorhersagbarkeit um ein gewisses Maß reduziert wird.
  • In einer Ausführungsform weist das LSFR 20 so viele Flipflops auf, wie zum Erzeugen einer PRN mit der gewünschten Anzahl von Bits benötigt werden, wie etwa 64 Flipflops zum Erzeugen einer 64-Bit-Zahl. In einer weiteren Ausführungsform können mehrere LSFR parallel benutzt werden, wobei deren Ausgaben kombiniert werden, um eine Zahl mit der erforderlichen Anzahl von Bits zu bilden; so könnten etwa acht 8-Bit-LSFR benutzt werden, um eine 64-Bit-Zahl zu erzeugen. In einer weiteren Ausführungsform können mehrere aufeinanderfolgende Ausgabewerte vom LSFR 20 kombiniert werden, um eine Zahl mit der erforderlichen Anzahl von Bits zu bilden; so könnten etwa acht aufeinanderfolgende Ausgabewerte von einem 8-Bit-LSFR benutzt und zu einer 64-Bit-Zahl kombiniert werden.
  • 3A, 3B zeigen den relativen Zeitablauf zwischen Durchgängen und Zyklen gemäß einer Ausführungsform der Erfindung. 3A zeigt Durchgänge und Zyklen einer iterativen Hash-Operation und eines Zahlenfolgegenerators für die dargestellte Ausführungsform. Ein Durchgang umfasst die zum Erzeugen einer PRN an der PRNG-Ausgabe erforderlichen Operationen, während ein Zyklus die zum Erzeugen eines Zahlenfolgegenerator-Ausgabewerts erforderlichen Operationen umfasst. In einer Ausführungsform handelt es sich bei einem Zyklus um einen Taktzyklus. In der dargestellten Ausführungsform aus 3A benötigt der Hash-Algorithmus 80 Taktzyklen, um einen Hash-Wert zu berechnen, plus 5 Taktzyklen zur Verwaltung, also insgesamt 85 Taktzyklen pro Durchgang. Die Terminologie der dargestellten Operation kann generell als s:c gelesen werden, wobei s die Durchgangsnummer 1 bis n angibt, und wobei c die Zyklusnummer 1 bis 85 innerhalb der einzelnen Durchgänge angibt. Nach jedem Durchgang kann mindestens ein Anteil der Ausgabe des Hashers in einem Register oder auf einem anderen Speichergerät abgelegt werden, damit sie als PRN für jedes eine PRN benötigende Gerät oder jede eine PRN benötigende Operation zur Verfügung steht. In einer Ausführungsform wird die aktuelle PRN am Ende jedes Durchlaufs durch eine neue PRN ersetzt, so dass sich die einem Gerät oder einer Operation zur Verfügung stehende PRN wiederholt ändert.
  • In einigen Ausführungsformen wird zu Beginn jedes Durchgangs mindestens ein Anteil der Ausgabe des vorherigen Durchgangs als Startdaten eingegeben, wie von den Schleifenpfeilen von Zyklus 1:85 zu Zyklus 2:1, von Zyklus 2:85 zu Zyklus 3:1 usw. gezeigt. Diese Eingabe wird auch bei Eingabe IN-2 in 1 gezeigt. Zur gleichen Zeit kann der NS 14 eine Folge neuer Zahlen erzeugen. In einer Ausführungsform erzeugt jeder Zyklus eine neue Zahl an der Ausgabe des Zahlenfolgegenerators. In der dargestellten Ausführungsform aus 3A werden diese Zyklen als C0, C1, C2 etc. gezeigt. Zu dem Zeitpunkt, an dem jeder einzelne Hash-Durchgang beginnt, wird mindestens ein Teil des aktuellen Werts der NS-Ausgabe als Teil des Startwerts für diesen Durchgang benutzt, wie von den von rechts nach links weisenden Pfeilen in 3A gezeigt. Diese Eingabe wird auch bei IN-1 in 1 gezeigt. In einer Ausführungsform steht die Ausgabe des NS in keiner Beziehung zur Ausgabe des Hashers (d.h., der Wert der NS-Ausgabe hängt nicht vom Wert der Hasher-Ausgabe ab), aber der Wert der Hasher-Ausgabe hängt vom Wert der NS-Ausgabe ab. Diese einseitige Abhängigkeit steigert die Schwierigkeit, Ausgaben des NS auf Basis der bis dato erfolgen Hasher-Ausgaben abzuleiten.
  • Zu dem Zeitpunkt, an dem die Hash-Operation initialisiert wird, ist es möglich, dass kein vorheriges Ergebnis zur Benutzung als Eingabedaten vorliegt; daher können zur Initialisierung von Durchgang 1 Seed-Daten aus einer beliebigen Quelle benutzt werden.
  • 3B zeigt eine Fortsetzung der Ausführungsform aus 3A, nachdem der Hasher seinen 9. Durchgang erreicht und der NS mehr als 760 Ausgabewerte erzeugt hat. In der dargestellten Ausführungsform aus 3B wird beim 32. Zyklus des 10. Durchgangs eine Anforderung nach einer PRN empfangen. Die Anforderung kann von einer beliebigen Quelle ausgehen, die für ihren Betrieb mit einer Pseudozufallszahl versorgt werden muss. Bei Empfang der Anforderung kann der Betrieb des NS eingefroren werden, so dass er aufhört, bei jedem Taktzyklus neue Ausgabewerte zu erzeugen. In einer Ausführungsform wird der Betrieb des NS zu Beginn des nächsten Hash-Durchgangs wieder gestartet. Unter Bezugnahme auf 1, kann das Stoppen und Starten von NS 14 durch Stoppen und Starten des Taktsignals NSCLK mithilfe der Steuerschaltung 18 gesteuert werden. Da der exakte Zeitpunkt einer Anforderung nach einer PRN im Allgemeinen nicht vorhersagbar ist, kann der Zyklus, bei dem der NS eingefroren wird, und daher auch die Anzahl von Zyklen, für die er eingefroren bleibt, ebenso nicht vorhersagbar sein. Der vormals zwischen der Hash-Operation und der NS-Ausgabe synchronisierte Betrieb kann somit von einer Anforderung nach einer PRN unterbrochen werden; Hasher und NS verlieren ihre Synchronisation um eine nicht vorhersagbare Anzahl von Zyklen. Ein Synchronisationsverlust selbst um nur einen Zyklus ist in der Lage, vollkommen andere zukünftige Ausgaben des Hashers zu erzeugen.
  • Es wird mit der dargestellten Ausführungsform aus 3B fortgefahren. Wenn der nächste Hash-Durchgang (Durchgang 11) startet, wird der im NS 14 eingefrorene Wert dem Hasher 12 als Teil der Eingabedaten des Hashers bereitgestellt. Zu diesem Zeitpunkt kann der Betrieb des NS 14 wieder aufgenommen werden, und der NS 14 kann wieder starten und mit jedem Taktzyklus einen neuen Ausgabewert erzeugen. In der dargestellten Ausführungsform aus 3B wird NS 14 bei Zyklus C796 eingefroren, wenn die Anforderung nach einer PRN empfangen wird. Bei Abschluss des Durchgangs 10 wird der eingefrorene Wert von Zyklus C796 dem Hasher 12 als Eingabe bereitgestellt, damit dieser den Durchgang 11 beginnt, und bei Zyklus C797 beginnt NS 14 mit dem Erzeugen neuer Zahlen.
  • In dem dargestellten Beispiel aus 3B würde der Durchgang 11 mit dem Wert von Zyklus C850 starten, wenn der NS 14 nicht eingefroren worden wäre. Der Unterschied zwischen den Werten bei C796 und C850 stellt 54 Iterationen des NS 14 dar und kann wesentlich unterschiedliche Werte für den Start von Durchgang 11 darstellen. Weiterhin ist die Anzahl von Iterationen, die den Unterschied ausmachen, zufällig, und sie kann nur von der Anzahl von Taktzyklen pro Durchgang begrenzt sein.
  • In einer Schaltungsausführungsform wird NS 14 durch Stoppen seines Taktgebers (z.B. NSCLK in 1) eingefroren und durch Neustarten seines Taktgebers wieder gestartet. In einer Softwareausführungsform des Hashers wird NS 14 durch Stoppen eines Zählers oder einer anderen, in Hardware oder Software ausgebildeten Hochzähl- (oder Herun terzähl-)Entität eingefroren und durch Neustarten dieser Entität wieder gestartet.
  • In einer Ausführungsform profitiert die erste, nach Initialisieren des Systems angeforderte PRN nicht von dem Einfrieren des NS, da die PRN vor dem ersten Auftreten des Einfrierens erzeugt wird, aber alle nachfolgenden PRN-Anforderungen profitieren von dem Einfrieren des NS. Diese Unzulänglichkeit bezüglich der ersten angeforderten PRN lässt sich vermeiden, indem anfangs eine oder mehrere künstliche Anforderungen nach einer PRN erzeugt werden, die den NS zeitweilig einfrieren und eine hinreichende Zufälligkeit der darauffolgenden PRN-Werte erzeugen werden.
  • 4 zeigt ein Blockdiagramm einer spezifischen Ausführungsform von 1 gemäß einer Ausführungsform der Erfindung. Bei dem PRNG 40 aus 4 entsprechen der Hasher 42, der NS 44, die Rückführungsschaltung 45, das Register 46 und die Steuerschaltung 48 jeweils dem Hasher 12, dem NS 14, der Rückführungsschaltung 15, dem Register 16 und der Steuerschaltung 18 aus 1, wobei in PRNG 40 an diversen Eingängen, Ausgängen und Verbindungen spezifische Bitanzahlen vorliegen. In der Ausführungsform aus 4 wird nur ein Abschnitt der an diversen Orten erzeugten Bits vollständig benutzt, was das Erkennen des internen Zustands der Logik erschwert. Wenn nur ein Anteil der an einem gegebenen Punkt ausgegebenen Bits benutzt werden und die übrigen Bits nicht offengelegt werden, ist es schwieriger, den internen Zustand beliebiger Teile der Schaltung zu bestimmen, da zur Unterstützung einer solchen Bestimmung nur partielle Informationen verfügbar sind.
  • In der Ausführungsform aus 4 empfängt der Hasher 42 512-Bit-Zahlen und arbeitet intern mit diesen, er gibt aber nur 160 dieser Bits aus, die alle an IN-2 zurückgeführt werden, um einen Abschnitt der Eingabe für den nächsten Hash-Durchgang zu erzeugen. Nur 64 der 160 Bits werden im Register 46 zur Verwendung als PRN abgelegt, und diese 64 Bits sind die einzigen Bits, die vom PRNG 40 nach außen offengelegt werden. In derselben Ausführungsform erzeugt NS 44 intern 70 Bits und benutzt parallel 7 LFSR mit unterschiedlichen Längen, gibt aber nur 32 dieser Bits aus. In einer Ausführungsform gibt NS 44 11 aufeinanderfolgende 32-Bit-Werte aus, um die vom Hasher 42 an IN-1 empfangenen 352 Bits zu füllen. Wenn die 160 Bits von Hasher 42 auf 64 Bits und die 70 Bits von NS 44 auf 32 Bits reduziert werden, können verschiedene Techniken benutzt werden, um zu entscheiden, welche der verfügbaren Bits benutzt werden sollen. In einer Ausführungsform wird eine Gruppe aufeinanderfolgender Bits benutzt, und die Auswahl, welche aufeinanderfolgenden Bits benutzt werden sollen, kann vom Planer frei getroffen werden. In einer weiteren Ausführungsform sind die ausgewählten Bits nicht aufeinanderfolgend, und ihre Reihenfolge kann vor der Ausgabe umgestellt werden.
  • 5 zeigt ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der Erfindung. Im Flussdiagramm 50 der dargestellten Ausführungsform aus 5 wird bei Block 51 ein neuer Hash-Durchgang gestartet, wobei der aktuelle Wert einer PRN und die aktuelle Ausgabe des Zahlenfolgegenerators als Eingabedaten benutzt werden. In einer Ausführungsform umfassen die Eingabedaten die vollen 160 Bits, die zuvor von dem Hasher ausgegeben wurden, einschließlich der 64 Bits der PRN, die einen Teil dieser Ausgabe bilden. Falls das System gerade erst initiiert wurde, existieren diese Zahlen möglicherweise noch nicht, und an ihrer statt können Seed-Daten benutzt werden. Der Entscheidungsblock 52 ermittelt, ob eine Anforderung nach einer PRN empfangen wurde. In einer Ausführungsform bleibt die Antwort auf diesen Entscheidungsblock bis zum Abschluss des aktuellen Hash-Durchgangs „Ja", sobald eine solche Anforderung empfangen wurde. Falls eine Anforderung nach einer PRN empfangen wurde, stoppt Block 53 den Zahlenfolge generator, so dass dessen Ausgabewert eingefroren bleibt, bis der Zahlenfolgegenerator wieder gestartet wird. Falls keine Anforderung nach einer PRN empfangen wurde, läuft der Zahlenfolgegenerator weiter und erzeugt bei Block 54 einen neuen Ausgabewert. Jeder Durchgang durch Block 54 kann einen neuen Ausgabewert erstellen, der zum aktuellen Wert des Zahlenfolgegenerators wird, bis er geändert wird. Unabhängig davon, ob eine Anforderung nach einer PRN empfangen wurde, fährt die Operation des Hash-Durchgang mit Block 55 fort. In einer Ausführungsform weisen der Taktgeber für die Hash-Operation und der Taktgeber für den Zahlenfolgegenerator die gleiche Frequenz auf. Der Entscheidungsblock 56 ermittelt, ob der aktuelle Hash-Durchgang abgeschlossen ist. Falls der aktuelle Hash-Durchgang nicht abgeschlossen ist, wird zu Block 52 zurückgesprungen. Falls der Hash-Durchgang abgeschlossen ist, wird die neu erzeugte PRN in ein Register geladen, wo sie für darauffolgende PRN-Anforderungen zur Verfügung steht. Block 58 lädt die neue Hasher-Ausgabe, einschließlich der neuen PRN, und den aktuellen Ausgabewert des Zahlenfolgegenerators in die Eingänge des Hashers, wo sie zu den Startwerten für den nächsten Hash-Durchgang werden, der bei Block 51 beginnt. Außerdem wird der Zahlenfolgegenerator gestartet (oder er läuft weiter), so dass er beim Start des nächsten Hash-Durchgangs laufen wird.
  • 6 zeigt ein System gemäß einer Ausführungsform der Erfindung. In der dargestellten Ausführungsform aus 6 weist ein System 60 einen Prozessor 61 auf, der über einen Eingabe-Ausgabe-Bus (E/A-Bus) 65 und einen E/A-Controller 63 an einen PRNG 10 gekoppelt ist. Der E/A-Controller kann außerdem an einen Hauptspeicher 62 und einen beschleunigten Graphikprozessor (AGP, engl. „Accelerated Graphics Processor") 64 gekoppelt sein. Andere (nicht gezeigte) Geräte können ebenfalls an das System gekoppelt sein. Die CPU 61 kann Software ausführen, um den PRNG 10 zu betreiben. Jedes beliebige Gerät, das in der Lage ist, auf den PRNG 10 über den E/A-Bus 65 zuzugreifen, kann eine PRN anfordern und die aktuelle PRN aus dem PRNG 10 auslesen.
  • In diversen Ausführungsformen verleiht die Schwankung des präzisen Zeitablaufs eines Aufrufs mit einer Anforderung nach einer PRN dem Betrieb von PRNG 10 im Vergleich zum Betrieb eines gleichartigen PRNG ohne diese Schwankung zusätzliche Zufälligkeit oder Entropie. Wenn zum Beispiel der Zeitablauf eines solchen Aufrufs um gerade einmal eine Sekunde schwankt und ein Taktzyklus 15 Nanosekunden (ns) lang ist, kann eine Anforderung nach einer PRN in einem beliebigen aus 67 Millionen Zyklen von NS 14 eingehen. Da 67 Millionen ungefähr gleich 226 ist, stellt dies eine Entropie oder Zufälligkeit von 26 Bits dar. Wenn zwei Aufrufe gemacht werden, stellt das zweimalige Einfrieren des NS-Taktgebers (67 Millionen)2 mögliche Werte von NS 14 oder eine Entropie von 52 Bits dar. Jeder weitere Aufruf mit einer Anforderung nach einer PRN erzeugt weitere 26 Bits Entropie. Irgendwann überschreitet die Entropiemenge aus dem NS die Anzahl möglicher Hashsequenzen. Dies nähert die maximale, für den konkret benutzten Hash-Algorithmus verfügbare Zufälligkeitsmenge an, und weitere Aufrufe können die Zufälligkeitsmenge in der Ausgabe des PRNG nicht erhöhen. Zu diesem Zeitpunkt kann ein Brute-Force-Ansatz zum Ermitteln der PRN die effizienteste Methode sein, mit der ein feindlicher Angreifer deren Wert ermitteln kann. In einer Umgebung mit Datenverschlüsselung kann dies bedeuten, alle möglichen Zahlenkombinationen in einem Entschlüsselungsschlüssel ausprobieren zu müssen, um zu sehen, ob das Ergebnis lesbar ist.
  • Modifizierter Secure-Hash-Algorithmus
  • In diversen Ausführungsformen wird in dem Hasher ein modifizierter Secure-Hash-Algorithmus (SHA) benutzt. In einer Ausführungsform, die die in 4 beschriebenen Bitmengen benutzt, arbeitet der modifizierte SHA auf folgende Weise:
    Eine 512-Bit-Eingabe (160 Bits aus der vorherigen Ausgabe von Hasher 42 und 352 Bits vom NS 44) wird vom Hasher 42 als Eingabedaten benutzt. Die Hauptschleife im modifizierten SHA-Algorithmus weist insgesamt 80 aufeinanderfolgende Operationen (t = 0 ... 79) in Form von vier Gruppen zu zwanzig Operationen auf. Die nicht-linearen SHA-Operationen lauten wie folgt:
    ft(B, C, D) = (B ∧ C) ∨ (~B ∧ D) (für t = 0 ... 19)
    ft(B, C, D) = B xor C xor D (für t = 20 ... 39)
    ft(B, C, D) = (B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D) (für t = 40 ... 59)
    ft(B, C, D) = B xor C xor D (für t = 60 ... 79)
    wobei t = Nummer der Operation, ∧ = logisches UND, ∨ = logisches ODER, ~ = logisches Komplement und xor = exklusives ODER.
  • Im Algorithmus werden vier Konstanten K und fünf Variablen A, B, C, D und E benutzt, wobei deren Werte in hexadezimaler Notation gezeigt werden:
    Kt = 5A827999 (für t = 0 ... 19)
    Kt = 6ED9EBA1 (für t = 20 ... 39)
    Kt = 8F1BBCDC (für t = 40 ... 59)
    Kt = CA62C1D6 (für t = 60 ... 79)
  • Anfangswerte für Variablen:
    A0 = 67452301
    B0 = EFCDAB89
    C0 = 98BADCFE
    D0 = 10325476
    E0 = C3D2E1F0
  • Die Eingabedaten werden von sechzehn 32-Bit-Worten (M0 – M15)(W0 – W79) unter Verwendung des folgenden Algorithmus in achtzig 32-Bit-Worte umgewandelt:
    Wt = Mt (für t = 0 ... 15)
    Wt = (Wt-3 xor Wt-8 xor Wt-14 xor Wt-16) <<< 1
    (für t = 16 ... 79),
    wobei „ <<< 1" = „um ein Bit nach links verschieben".
  • Die Hauptschleife des Algorithmus sieht wie folgt aus:
    For t = 0 to 79,
    TEMP = (A <<< 5) + Ft(B, C, D) + Et + Wt + Kt
    E = D
    D = C
    C = B <<< 30
    B = A
    A = TEMP
  • Nach 80 Schleifen handelt es sich bei der Ausgabe des modifizierten SHA-Algorithmus um den 160-Bit-String, der durch ABCDE dargestellt wird. In einer Ausführungsform wird ein 64-Bit-Abschnitt dieses Strings als die aktuelle PRN im Register 46 gespeichert, während die gesamten 160 Bit zur Eingabe von Hasher 42 zurückgeführt werden, um als Teil der anfänglichen Eingabedaten für den nächsten Hash-Durchgang zu dienen. Wie zuvor beschrieben können die Bits umgestellt werden, bevor sie gespeichert und/oder zurückgeführt werden.
  • Zwar beschreibt die vorstehende Beschreibung eine Ausführungsform der Erfindung, die einen modifizierten SHA-Algorithmus benutzt, jedoch können andere Algorithmen benutzt werden, ohne vom Erfindungsgedanken abzuweichen.
  • Die Erfindung kann in Schaltungstechnik oder als Verfahren implementiert werden. Die Erfindung kann zudem als auf einem maschinenlesbaren Medium gespeicherte Instruktionen implementiert werden, die von mindestens einem Prozessor gelesen und ausgeführt werden können, um die vorliegend beschriebenen Operationen auszuführen. Ein maschinenlesbares Medium kann beliebige Mechanismen zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z.B. einen Computer) lesbaren Form umfassen. Zum Beispiel kann ein maschinenlesbares Medium umfassen:
    Nur-Lese-Speicher (ROM), Speicher mit wahlfreiem Zugriff (RAM), magnetische Plattenspeichermedien, optische Speichermedien, Flash-Speichergeräte, elektrische, optische, akustische oder andere Arten von sich ausbreitenden Signalen (z.B. Trägerwellen, Infrarotsignale, digitale Signale etc.) u. a. m.
  • Die vorstehende Beschreibung ist als veranschaulichende, nicht als einschränkende Beschreibung gedacht. Dem Fachmann werden Abwandlungen in den Sinn kommen. Es ist beabsichtigt, dass die Erfindung, die nur vom Umfang der beigefügten Ansprüche eingeschränkt wird, solche Variationen einschließt.

Claims (14)

  1. Vorrichtung, umfassend: eine Hash-Schaltung zum Empfang eines ersten und eines zweiten Eingabewertes für einen aktuellen Hashdurchgang und zum Erzeugen eines Ausgabewertes des aktuellen Hashdurchgangs basierend auf dem ersten und dem zweiten Eingabewert, einen Zahlenfolgegenerator, der an die Hash-Schaltung gekoppelt ist, zur Erzeugung einer Zahlenfolge während des aktuellen Hashdurchgangs und zum Bereitstellen mindestens eines Teiles einer aktuellen Zahl aus der Zahlenfolge als ersten Eingabewert für einen folgenden Hashdurchgang, dadurch gekennzeichnet, dass sie weiterhin Folgendes umfasst: eine Rückführungsschaltung, die an die Hash-Schaltung gekoppelt ist, zum Bereitstellen mindestens eines Teiles des Ausgabewertes als zweiten Eingabewert für den folgenden Hashdurchgang, und eine Steuerschaltung, die an den Zahlenfolgegenerator gekoppelt ist, zum Anhalten der Erzeugung der Zahlenfolge bei Auftreten eines ersten vorbestimmten Ereignisses, und zur Wiederaufnahme der Erzeugung der Zahlenfolge bei Auftreten eines zweiten vorbestimmten Ereignisses.
  2. Vorrichtung nach Anspruch 1, wobei: die Hash-Schaltung zum Empfang des ersten und des zweiten Eingabewertes zu einem Beginn des aktuellen Hashdurchgangs ausgebildet ist.
  3. Vorrichtung nach Anspruch 1, wobei: das erste vorbestimmte Ereignis den Empfang einer Anforderung nach einer Pseudozufallszahl umfasst.
  4. Vorrichtung nach Anspruch 1, wobei: das zweite vorbestimmte Ereignis einen Teil des folgenden Hashdurchgangs umfasst.
  5. Vorrichtung nach Anspruch 1, wobei: das zweite vorbestimmte Ereignis einen Beginn des folgenden Hashdurchgangs umfasst.
  6. Vorrichtung nach Anspruch 1, wobei: der Zahlenfolgegenerator einen Zähler umfasst.
  7. Vorrichtung nach Anspruch 1, wobei: der Zahlenfolgegenerator ein linear rückgekoppeltes Schieberegister umfasst.
  8. Vorrichtung nach Anspruch 1, wobei: der Teil der aktuellen Zahl aus der Zahlenfolge vorbestimmte Bits der aktuellen Zahl aus der Zahlenfolge umfasst.
  9. Vorrichtung nach Anspruch 1, wobei: der Teil des Ausgabewerts vorbestimmte Bits des Ausgabewerts umfasst.
  10. System, umfassend: einen Prozessor, einen Speicher, der an den Prozessor gekoppelt ist, einen Pseudozufallszahlengenerator, der an den Prozessor gekoppelt ist und die Vorrichtung nach einem der Ansprüche 1 bis 9 umfasst.
  11. Verfahren, das Folgendes umfasst: Erzeugen einer Reihe von Werten jeweils während eines vorherigen Hashdurchgangs, eines aktuellen Hashdurchgangs und eines folgenden Hashdurchgangs, Empfangen eines der Werte als erste Hasheingabe, Empfangen einer Hashausgabe des vorherigen Hashdurchgangs als zweite Hasheingabe, Hashen der ersten und der zweiten Hasheingabe während eines aktuellen Hashdurchgangs, um so eine aktuelle Hashausgabe zu schaffen, Anhalten der Erzeugung, wenn ein erstes vorbestimmtes Ereignis auftritt, und Wiederaufnahme der Erzeugung, wenn ein zweites vorbestimmtes Ereignis auftritt, sofern das erste vorbestimmte Ereignis während des aktuellen Hashdurchgangs auftritt, und Fortfahren mit der Erzeugung während des aktuellen Hashdurchgangs, sofern das erste vorbestimmte Ereignis nicht während des aktuellen Hashdurchgangs auftritt.
  12. Verfahren nach Anspruch 11, wobei: das erste vorbestimmte Ereignis das Empfangen einer Anforderung nach einer Pseudozufallszahl umfasst.
  13. Verfahren nach Anspruch 11, wobei: das zweite vorbestimmte Ereignis einen Beginn des folgenden Hashdurchgangs umfasst.
  14. Maschinenlesbares Medium, auf welchem Befehle gespeichert sind, die, wenn sie von mindestens einem Prozessor ausgeführt werden, den mindestens einen Prozessor dazu veranlassen, das Verfahren nach Anspruch 11, 12 oder 13 auszuführen.
DE60204708T 2001-09-26 2002-09-13 Auf hash basierter pseudozufallszahlengenerator Expired - Lifetime DE60204708T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/963,857 US20030059045A1 (en) 2001-09-26 2001-09-26 Hash-based pseudo-random number generator
US963857 2001-09-26
PCT/US2002/029080 WO2003027832A2 (en) 2001-09-26 2002-09-13 Hash-based pseudo-random number generator

Publications (2)

Publication Number Publication Date
DE60204708D1 DE60204708D1 (de) 2005-07-21
DE60204708T2 true DE60204708T2 (de) 2006-05-04

Family

ID=25507821

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60204708T Expired - Lifetime DE60204708T2 (de) 2001-09-26 2002-09-13 Auf hash basierter pseudozufallszahlengenerator

Country Status (6)

Country Link
US (1) US20030059045A1 (de)
EP (1) EP1430391B1 (de)
AT (1) ATE298106T1 (de)
DE (1) DE60204708T2 (de)
TW (1) TWI237214B (de)
WO (1) WO2003027832A2 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0013349D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd Pseudo-random number generator
CN1692600A (zh) * 2002-10-09 2005-11-02 松下电器产业株式会社 加密装置、解密装置和加密系统
US8229108B2 (en) * 2003-08-15 2012-07-24 Broadcom Corporation Pseudo-random number generation based on periodic sampling of one or more linear feedback shift registers
US20050182946A1 (en) * 2004-02-13 2005-08-18 Will Shatford Fast hashing function for pseudo-random generator
US8150900B2 (en) * 2004-08-09 2012-04-03 Telecom Italia S.P.A. Random number generation based on logic circuits with feedback
DE602004029619D1 (de) * 2004-08-09 2010-11-25 Telecom Italia Spa Verfahren und vorrichtung zum erzeugen von zufallsdaten
US7929549B1 (en) * 2006-03-06 2011-04-19 Advanced Micro Devices, Inc. Method and apparatus for scrambling data for control of high-speed bidirectional signaling
US20070299920A1 (en) * 2006-06-27 2007-12-27 Crespo Arturo E Anonymous Email Address Management
US8114117B2 (en) * 2008-09-30 2012-02-14 Tyco Healthcare Group Lp Compression device with wear area
EP2316180A4 (de) 2008-08-11 2011-12-28 Assa Abloy Ab Sichere wiegand-kommunikation
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US7796541B1 (en) 2008-09-30 2010-09-14 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US7738454B1 (en) * 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US7835357B2 (en) * 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US7961734B2 (en) * 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8953603B2 (en) * 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US9172698B1 (en) * 2012-10-12 2015-10-27 Ut-Battelle, Llc System and method for key generation in security tokens
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
WO2017000138A1 (en) * 2015-06-29 2017-01-05 Orange Method for controlling the execution of a program configurable into a disabled state and enabled state
US10922052B2 (en) * 2015-10-12 2021-02-16 Oracle International Corporation Generating pseudorandom number sequences by nonlinear mixing of multiple subsidiary pseudorandom number generators
US10142103B2 (en) 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
US10545792B2 (en) * 2016-09-12 2020-01-28 Seven Bridges Genomics Inc. Hashing data-processing steps in workflow environments
US10452877B2 (en) 2016-12-16 2019-10-22 Assa Abloy Ab Methods to combine and auto-configure wiegand and RS485
US10761877B2 (en) 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
FR3076923A1 (fr) 2018-01-16 2019-07-19 Stmicroelectronics (Rousset) Sas Procede et circuit d'authentification
US10928847B2 (en) * 2018-09-29 2021-02-23 Intel Corporation Apparatuses and methods for frequency scaling a message scheduler data path of a hashing accelerator
FR3098949B1 (fr) * 2019-07-15 2023-10-06 St Microelectronics Rousset Fonction à sens unique
US11237800B2 (en) 2019-11-12 2022-02-01 International Business Machines Corporation Time-shifted seed for random number generator
AU2020202883B1 (en) * 2020-01-10 2021-01-07 Mesinja Pty Ltd Systems and computer-implemented methods for generating pseudo random numbers
RU2740339C1 (ru) * 2020-03-05 2021-01-13 федеральное государственное автономное образовательное учреждение высшего образования "Национальный исследовательский ядерный университет МИФИ" (НИЯУ МИФИ) Генератор псевдослучайных чисел
US11662978B2 (en) 2020-06-04 2023-05-30 PUFsecurity Corporation Modular operation circuit adopting iterative calculations
US20220317975A1 (en) * 2021-03-30 2022-10-06 Micron Technology, Inc. Linear-feedback shift register for generating bounded random numbers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905176A (en) * 1988-10-28 1990-02-27 International Business Machines Corporation Random number generator circuit
DE4010305A1 (de) * 1990-03-30 1991-10-02 Gao Ges Automation Org Zufallszahlengenerator
US5483598A (en) * 1993-07-01 1996-01-09 Digital Equipment Corp., Patent Law Group Message encryption using a hash function
US5696828A (en) * 1995-09-22 1997-12-09 United Technologies Automotive, Inc. Random number generating system and process based on chaos
US6044388A (en) * 1997-05-15 2000-03-28 International Business Machine Corporation Pseudorandom number generator
US6285761B1 (en) * 1998-03-04 2001-09-04 Lucent Technologies, Inc. Method for generating pseudo-random numbers
US6961875B2 (en) * 2001-03-22 2005-11-01 International Business Machines Corporation Method and apparatus for capturing event traces for debug and analysis
US7007050B2 (en) * 2001-05-17 2006-02-28 Nokia Corporation Method and apparatus for improved pseudo-random number generation

Also Published As

Publication number Publication date
WO2003027832A3 (en) 2004-03-25
TWI237214B (en) 2005-08-01
EP1430391B1 (de) 2005-06-15
ATE298106T1 (de) 2005-07-15
WO2003027832A2 (en) 2003-04-03
US20030059045A1 (en) 2003-03-27
DE60204708D1 (de) 2005-07-21
EP1430391A2 (de) 2004-06-23

Similar Documents

Publication Publication Date Title
DE60204708T2 (de) Auf hash basierter pseudozufallszahlengenerator
EP1643643B1 (de) Zufallszahlengenerator sowie Verfahren zur Erzeugung von Zufallszahlen
DE60122994T2 (de) Erzeugung von kryptographisch starken Zufallszahlen unter Verwendung von MISR - Registern
DE60004640T2 (de) Verfahren und vorrichtung für sprungvorhersage unter verwendung einer hybriden branch-history mit gemeinsamer zugriffsstruktur
DE602004008516T2 (de) Verfahren und schaltung zum generieren von zufallszahlen und computerprogrammprodukt dafür
DE3113195A1 (de) &#34;speicheradressiervorrichtung&#34;
DE19505097C1 (de) Verschlüsselungsvorrichtung
DE112017006020T5 (de) Verfahren und System für suchmusterblinde dynamische symmetrische durchsuchbare Verschlüsselung
DE202017104836U1 (de) Gehärteter Zufallszahlengenerator
DE102010029735A1 (de) Verfahren zum Generieren eines Bitvektors
DE60125673T2 (de) Verfahren und Vorrichtung zur Ausführung einer kryptographischen Funktion
DE60211860T2 (de) Erzeugung von zufallszahlen
EP2446580B1 (de) Vorrichtung und verfahren zur bildung einer signatur
DE102007025780A1 (de) Vorrichtung und Verfahren zur Erzeugung einer Zufallszahl
DE19957594B4 (de) Verfahren zum Synchronisieren von threads eines Computerprogramms
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software
DE102004013480A1 (de) Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
DE602004011081T2 (de) Zufallszahlengenerator und Methode zum Testen des Generators
DE102006011699B4 (de) Systeme und Verfahren zum Erzeugen von Zufallszahlverteilungen bei Vorrichtungen, die begrenzte Verarbeitungs- und Speicherfähigkeiten aufweisen
DE19926640C2 (de) Verfahren zur Erzeugung von echten Zufallszahlen sowie Zufallszahlengenerator
DE102018116572A1 (de) Schutz gegen seitenkanalangriffe
DE60305781T2 (de) Verschlüsselung des Inhalts eines ausserhalb eines Prozessors angeordneten Speichers
DE102014200309A1 (de) Verfahren zum Überprüfen einer Ausgabe
AT515097B1 (de) Verschlüsselungsverfahren und Pseudo-Zufallszahlengenerator
DE102011052230B4 (de) Verfahren und Apparat zur Erzeugung von Zufalls-Wartezuständen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition