-
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.