-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft einen Zufallszahlengenerator und insbesondere einen angriffsimmunen echten Zufallszahlengenerator.
-
Hintergrund der Erfindung
-
Das Gebiet der Kryptographie erfordert gute Zufallszahlen. Zufallszahlengeneratoren können zum Erzeugen von Paaren von öffentlichen/privaten Schlüsseln für asymmetrische Algorithmen benötigt werden, wie etwa Rivest, Shamir, Adelman (RSA), Digital Signature Algorithm (DSA) und Diffie-Helman. Ein Zufallszahlengenerator kann eine Rechenvorrichtung sein, die so gestaltet ist, dass sie eine Folge von Zahlen und/oder Symbolen erzeugt, die kein erkennbares Muster haben. Da Sicherheitsprotokolle auf der Nichtvorhersagbarkeit der Schlüssel, die sie verwenden, beruhen können, müssen Zufallszahlengeneratoren für kryptographische Anwendungen häufig strenge Anforderungen erfüllen.
-
Es gibt zwei Hauptverfahren, die zum Erzeugen von Zufallszahlen verwendet werden. Ein Pseudozufallszahlengenerator (pseude-random number generator; PRNG) verwendet deterministische Prozesse zum Erzeugen einer Serie von Ausgangssignalen von einem ersten Seed-Zustand aus. Das heißt, die Entwicklung von künftigen Zuständen des Systems hat keine Zufälligkeit. Im Gegensatz dazu nutzt ein echter Zufallszahlengenerator (true random number generator; TRNG) eine nicht-deterministische Quelle zum Erzeugen von Zufälligkeit. Einige TRNGs sind so betreibbar, dass sie unvorhersagbare natürliche Prozesse messen, wie etwa thermisches Rauschen, atmosphärisches Rauschen oder nuklearen Zerfall. Es kann ein Zufallszahlengenerator benötigt werden, der so konfiguriert ist, dass er ein System vor verschiedenen Angriffsempfindlichkeiten schützt.
-
US 2007/0168676 A1 offenbart elektronische Schaltungschips, die kryptographische Funktionen aufweisen, die in Multichip-Konfigurationen unter Verwendung eines gemeinsamen externen Speichers angeordnet sind. Die Sicherheit der Chips wird mithilfe eines Handshaking-Protokolls sichergestellt, das es ermöglicht, dass jeder Chip auf eingeschränkte Teile des Speichers zugreifen kann, die in der Weise definiert sind, dass derselbe hohe Sicherheitsstandard sichergestellt ist, wie bei den manipulationssicheren Chips selbst. Offenbart wird ein Chip, der interne Mechanismen zur Erzeugung von Zufallszahlen umfasst, wie einen echten Zufallsgenerator (TRNG) und einen Pseudozufallsgenerator (PRNG). Die elektrische Stromversorgung aller Komponenten innerhalb einer Spannungsinsel erfolgt durch einen Power-Controller.
-
US 2006/0050877 A1 offenbart eine Informationsverarbeitungsvorrichtung zur Kommunikation mit einer weiteren Informationsverarbeitungsvorrichtung, wobei die Vorrichtung einen Zufallszahlengeneratorabschnitt, einen ersten Authentifizierungsdatengeneratorabschnitt, einen Authentifizierungsdatensendeabschnitt, einen Authentifizierungsdatenempfangsabschnitt, einen Entschlüsselungsabschnitt und einen Authentifizierungsabschnitt aufweist. Es ist die Aufgabe der vorliegenden Erfindung eine Vorrichtung zur Erzeugung von Zufallszahlen bereitzustellen, mit der ein System vor äußeren Einflüssen geschützt werden kann.
-
Die Aufgabe wird gelöst durch eine Vorrichtung mit den Merkmalen gemäß Hauptanspruch. Vorteilhafte Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.
-
Kurze Beschreibung der Zeichnungen
-
Merkmale und Vorzüge von Ausführungsformen des beanspruchten Gegenstands dürften aus der nachstehenden detaillierten Beschreibung unter Einbeziehung der Zeichnungen hervorgehen, wobei
-
1 eine beispielhafte Ausführungsform eines Systems zeigt;
-
2 eine beispielhafte Ausführungsform einer Manageability Engine zeigt;
-
3 eine beispielhafte Ausführungsform eines echten Zufallszahlengenerators zeigt;
-
4 eine beispielhafte Ausführungsform eines Energieabfalldetektors zeigt;
-
5 eine beispielhafte Ausführungsform eines Spannungsdetektors zeigt und
-
6 eine beispielhafte Ausführungsform eines Verfahrens zeigt.
-
Die nachstehende detaillierte Beschreibung bezieht sich zwar auf erläuternde Ausführungsformen, aber Fachleute werden zahlreiche Alternativen, Modifikationen und Abwandlungen erkennen. Daher soll der beanspruchte Gegenstand umfassend betrachtet werden und nur so definiert werden, wie er in den beigefügten Ansprüchen dargelegt ist.
-
Detaillierte Beschreibung
-
Allgemein wird ein angriffsimmuner echter Zufallszahlengenerator beschrieben. In mindestens einer hier beschriebenen Ausführungsform wird ein integrierter Schaltkreis zur Verfügung gestellt, der so konfiguriert ist, dass er Zufallsbits entsprechend mindestens einer Sicherheitsanwendung erzeugt. Der integrierte Schaltkreis kann einen echten Zufallszahlengenerator mit einem analogen Kern enthalten. Der echte Zufallszahlengenerator kann auch einen Spannungsregler umfassen, der so konfiguriert ist, dass er für den analogen Kern eine intern erzeugte Energieversorgung bereitstellt.
-
1 zeigt eine System-Ausführungsform 100. Das System 100 kann einen Host-Prozessor 102, eine Chipsatz-Schaltung 104 und einen Systemspeicher 106 umfassen. Der Host-Prozessor 102 kann einen oder mehrere Prozessorkerne umfassen und kann so konfiguriert sein, dass er Systemsoftware (nicht dargestellt) abarbeitet. Die Systemsoftware kann zum Beispiel Betriebssystemcode (z. B. OS-Kernel-Code) und Treiber-Code eines lokalen Netzwerks (LAN) sein. Eine Chipsatz-Schaltung 120 kann allgemein eine Northbridge-Schaltung 104 zum Steuern der Kommunikation zwischen dem Prozessor 102, dem Systemspeicher 106 und einer Busschaltung 108 umfassen. Die Busschaltung kann eine E/A-Busschaltung sein, die dem PCI-Express-Kommunikationsprotokoll entsprechen oder mit diesem kompatibel sein kann, um eine Kommunikation zwischen der Northbridge-Schaltung 104 und Komponenten 110a–c herzustellen. Die Komponenten 110a–c können unter anderem eine Video-/Grafikkarte 110a und/oder andere Steuergeräte 110c für Peripheriegeräte sein. Außerdem kann die Chipsatz-Schaltung 120 eine Southbridge-Schaltung 110b umfassen, die so konfiguriert ist, dass sie eine E/A-Kommunikation zwischen dem Host-System und verschiedenen Komponenten steuert, unter anderem Bus-Architekturen, E/A, Speicher, Audio-Codecs, Arbeitsspeicher, Firmware, Power Management, Takt-Erzeugung, lokales Netzwerk (LAN) und drahtloses lokales Netzwerk (WLAN). Natürlich können auch zahlreiche andere Komponenten bei dem System 100 verwendet werden.
-
Die Northbridge 104 des Chipsatzes 120 enthält einen echten Zufallszahlengenerator (TRNG) 112. Der TRNG 112 kann von einer Manageability Engine (ME) 114 gesteuert werden, die ebenfalls in der Northbridge 104 des Chipsatzes 104 angeordnet sein kann. Der TRNG 112 kann einen analogen Kern umfassen, der so konfiguriert sein kann, dass er einen Zufallszahlen-Bitstrom erzeugt. Wenn der analoge Kern externen Spannungsänderungen oder Rauschen ausgesetzt wird, kann die Zufälligkeit (Entropie) der in dem analogen Kern erzeugten Daten geändert werden. Daher sind die Schlüssel und Verschlüsselungscodes, die aus diesen Daten erzeugt werden, möglicherweise weniger sicher. Bei den hier beschriebenen Ausführungsformen kann der analoge Kern von verschiedenen Schaltungen umgeben sein, die so konfiguriert sind, dass sie ihn vor äußeren Einflüssen schützen. Daten aus dem analogen Kern in dem TRNG 112 können zur weiteren Verfeinerung und Erfassung an die Manageability Engine 114 gesendet werden.
-
Kommen wir nun zu 2, worin eine beispielhafte Ausführungsform einer Manageability Engine 200 gezeigt ist. Bei einigen Ausführungsformen kann die Manageability Engine 200 als eingebetteter Mikrocontroller in der Northbridge 104 des Chipsatzes 120 arbeiten. Die ME 200 kann so konfiguriert sein, dass sie Tasks in Verbindung mit und/oder getrennt von dem Host-Prozessor 102 verarbeitet. Die ME 200 kann ihren eigenen Mikrocode und Registerdateien haben. Ein Teil des Mikrocodes kann in einem ROM gespeichert werden, und andere Routinen können über sichere Mittel aus dem Speicher geladen werden. Die ME 200 kann den Betrieb des TRNG 112 über eine Zufallszahlengenerator-Steuerungs(RNG-CTRL)- und Zustandsmaschinen-Schaltung 202 steuern. In Reaktion auf die Abarbeitung eines bestimmten Mikrocodes kann der TRNG 112 in die Lage versetzt werden, Zufallsbitströme zu erzeugen, oder er kann abgeschaltet werden, um Strom zu sparen.
-
Daten, die von dem TRNG
112 an die ME
200 gesendet wurden, werden an eine Von-Neumann-Korrekturschaltung (VNC-Schaltung)
204 gesendet. Die von dem analogen Kern erzeugten Daten können einen Bias haben, d. h. mehr Einsen als Nullen oder umgekehrt. Die VNC-Schaltung
204 ist so konfiguriert, dass sie Bitpaare analysiert und in dem Fall, dass sie nicht gleich sind, das erste Paar auswählt. Die Bitpaare „00” und „11” können gänzlich aussortiert werden. Daher kann die VNC-Schaltung
204 für einen Teil des Bias oder den gesamten Bias aus einem Zufallsstrom mit Bias konfiguriert sein. Bei einigen Ausführungsformen kann das Bit, das sich zwischen den Paaren von Daten befindet, die mit der VNC-Schaltung
204 verarbeitet werden, ebenfalls aussortiert werden, um die Abhängigkeit von dem vorhergehenden Zustand zu verringern. Das kann zum Beispiel geschehen, wenn ein Flipflop, das in einem Zustand ist, eine etwas höhere Wahrscheinlichkeit hat, in diesem Zustand zu bleiben, als den Zustand zu ändern. Da es eine im Wesentlichen gleichgroße Wahrscheinlichkeit gibt, dass die Bitpaare durchschnittlich den gleichen Wert haben, kann nur ungefähr ein von sechs Bits über die VNC-Schaltung
204 hinaus gelangen. Ein mögliches Beispiel für eine Datenkonversion über die VNC-Schaltung
204 ist in der nachstehenden Tabelle 1 gezeigt. Tabelle 1 zeigt die Eingabe- und Ausgabedaten der VNC-Schaltung
204. Bei einigen Ausführungsformen kann das letzte Bit einer 3-Bit-Sequenz wertunabhängig aussortiert werden. Das Ausgangssignal der VNC-Schaltung
204 kann das erste Bit einer 3-Bit-Sequenz sein, wenn das erste Bit nicht mit dem zweiten Bit übereinstimmt. Tabelle 1: Von-Neuman-Korrekturdatenkonversionstabelle
VNC-Eingabedatensequenz (3 Bit) | VNC-Ausgabedaten |
00X | Keine Daten |
01X | 0 |
10X | 1 |
11X | Keine Daten |
-
Wenn die Daten durch die VNC-Schaltung 204 gefiltert worden sind, können sie in eine Schieberegisterschaltung 206 (z. B. 32-Bit) verschoben werden. Wenn die Schieberegisterschaltung 206 voll ist, können die Daten in ein zweites Datenregister 208 übertragen werden, aus dem sie durch den ME-Kern 210 mittels einer Schieberegister-Steuerschaltung (S/R-Ctrl-Schaltung) 112 gelesen werden können. Die Operation des Lesens des Datenregisters 208 kann bewirken, dass Register 208 „leer” ist. Währenddessen kann die Schieberegisterschaltung 206 wieder gefüllt werden. Wenn das Datenregister 208 leer ist, können die neuen Zufallsdaten in das Datenregister 208 übertragen werden. Wenn das Datenregister 208 nicht leer ist (d. h., wenn es nicht von dem ME-Kern 210 gelesen wird), kann die S/R-Ctrl-Schaltung 212 die Schieberegisterschaltung 206 so lange halten, bis das Datenregister 208 leer ist. Alle Daten, die von der VNC-Schaltung 204 empfangen werden, können aussortiert werden. Bei einigen Ausführungsformen kann die ME-Kern-Schaltung 210 so konfiguriert sein, dass sie einige oder alle Daten, die über die VNC-Schaltung 204 erzeugt werden, erfasst und aussortiert.
-
Kommen wir nun zu 3, wo eine beispielhafte Ausführungsform einer Echter-Zufallszahlengenerator-Schaltung (TRNG-Schaltung) 300 gezeigt ist. Die TRNG-Schaltung 300 kann operativ mit der Manageability Engine 200 verbunden sein. Der TRNG 300 kann eine Analoger-Kern-Schaltung 302, eine Spannungsreglerschaltung 304, eine Energieabfall-Detektionsschaltung 306, eine Spannungsdetektionsschaltung 308 und einen Beobachtbarkeitsanschluss 310 haben.
-
Ein analoger Kern 302 kann Folgendes aufweisen: mindestens einen Widerstand (z. B. zwei 50-kΩ-Widerstände), der so konfiguriert ist, dass er ein Rausch-Eingangssignal 303 für mindestens einen Verstärker 305 bereitstellt; eine Niederfrequenzspannungsgesteuerter-Oszillator(LFO)-Schaltung 307; eine Hochfrequenzoszillator(HFO)-Schaltung 309 und ein Daten-Latch 311. Diese Schlüsselteile können mit einer Differentialschaltung konfiguriert sein, um sie gegen Rauschen der Stromquelle so immun wie möglich zu machen. Die Teile können außerdem so konfiguriert sein, dass sie eine geringe Empfindlichkeit bezüglich der Versorgungsspannung haben. Zum Beispiel können bestimmte Ausführungsformen Kaskodenverfahren verwenden, die so konfiguriert sind, dass sie die Empfindlichkeit bezüglich des Versorgungsrauschens senken, oder es können Replica-Bias- und/oder Kalibrierverfahren verwendet werden, um versorgungsinduzierte Schwankungen aufzuheben.
-
Bei einigen Ausführungsformen kann die Quelle der Zufallsdaten (z. B. Entropie-Quelle) das thermische Rauschen sein, das mit mindestens einem Widerstand verbunden ist. Thermisches Rauschen kann weißes Rauschen mit einer niedrigen Leistungsdichte über alle Frequenzen sein. Zum Beispiel können zwei im Wesentlichen identische Widerstände ein differentielles thermisches Rauschen-Eingangssignal 303 für den mindestens einen Verstärker 305 bereitstellen. Bei einigen Ausführungsformen können die Widerstände so gewählt werden, dass sie einen Widerstandswert zwischen 50 kΩ und 75 kΩ haben, was ein nominelles thermisches Rauschen von etwa 60 μV ergibt, wie es mit der nachstehenden Gleichung 1 erhalten wird. Natürlich können auch andere Widerstandswerte verwendet werden, um verschiedene Werte für das thermische Rauschen zu erzeugen. Rausch-VRMS = √4·K·T·R·Δf (1) worin K die Boltzmann-Konstante ist, T die Temperatur in Kelvin ist, R der Wert des Widerstands ist und Δf die Bandbreite ist, über die das Rauschen gemessen wird.
-
Bei einigen Ausführungsformen kann das differentielle Thermisches-Rauschen-Eingangssignal 303 an den Verstärker 305 (z. B. einen Dreistufenverstärker) gesendet werden, der eine Verstärkung von ungefähr 250 bis 600 haben kann. Der Verstärker 305 kann Wechselstromgekoppelt sein (z. B. Kondensatoren zwischen den Stufen haben, um das Offset-Rauschen zu erfassen) mit einem 1-kHz-Offset-Eliminierungszyklus. Um die erforderliche Verstärkung zu realisieren, kann der Verstärker so konfiguriert sein, dass er nur eine Stufe mit einer großen Verstärkung hat, oder es können mehrere Stufen gemeinsam hintereinandergeschaltet werden. Jede Stufe kann eine relativ kleine und stabile Verstärkung (z. B. von 4 bis 10) und einen geringen Offset (z. B. < 5 mV) haben. Während eines festgelegten Zeitrahmens (z. B. jede Millisekunde) kann der Verstärker 305 eine kurze Sequenz durchlaufen, die den Offset jeder Stufe erfassen kann, bevor das Rauschen der Widerstände wieder durchgelassen wird. Dadurch kann nicht nur der Offset beseitigt werden, der das kleine Rauschsignal überlagern kann, sondern es kann auch das Niederfrequenz-1/f-Rauschen unter 1 kHz beseitigt werden, das das Frequenzleistungsspektrum andern kann. Die Manageability Engine 200 kann so konfiguriert sein, dass sie, während der Verstärker 305 die Offset-Eliminierung durchführt, die von der TRNG-Schaltung 300 kommenden Daten ignoriert, da sie zu diesem Zeitpunkt möglicherweise noch nicht ausreichend zufällig sind. Die ME 200 kann außerdem so konfiguriert sein, dass sie dem Verstärker 305 etwas Zeit lässt, den normalen Betrieb wiederaufzunehmen, bevor Bits angenommen werden. Zum Beispiel können während der Phase, in der der Verstärker aufwacht, den Offset eliminiert oder sich stabilisiert, die erzeugten Bits einen gewissen Grad von Nicht-Zufälligkeit haben. Durch Konfigurieren der ME so, dass sie die Bits während dieser Aufwach-, Offset-Eliminierungs- und Stabilisierungsphase zurückweist, kann die Zufälligkeit der erzeugten Bits erhöht werden. Bei einigen Ausführungsformen macht die Eliminierungs- und Stabilisierungssequenz nur 5% der gesamten Bit-Erzeugungszeit aus.
-
Bei einigen Ausführungsformen kann das Ausgangssignal des Verstärkers 305 als Differenzspannungssignal in die LFO-Schaltung 307 eingegeben werden. Die LFO-Schaltung 307 kann so konfiguriert sein, dass sie mit einer Mittenfrequenz von etwa 600 kHz arbeitet. Die Ausgangsspannung des Verstärkers kann die LFO-Schaltung 307 veranlassen, die Frequenz proportional zu dem Eingangssignalpegel mit einer Frequenzverstärkung von etwa 2,0 MHz/V zu ändern. Dadurch kann sich die von der Entropiequelle erzeugte Zufallsspannung in eine Zufallsfrequenz wandeln, die sich von der LFO-Schaltung 307 ausbreitet. Dem LFO-Ausgangssignal kann die Wellenform (z. B. quasi-sinusförmig) eines Signals eines CMOS mit schnellem Übergang (CMOS: komplementärer Metall-Oxid-Halbleiter) verliehen werden, um den Einfluss von Versorgungsrauschen zu verringern.
-
Bei einigen Ausführungsformen kann die Hochfrequenzoszillator(HFO)-Schaltung 309 einen Ringoszillator enthalten, der so konfiguriert ist, dass er zwischen etwa 300 und 500 MHz arbeitet. Die Frequenz kann vor allem von dem Verfahren abhängig sein, aber dieses kann für eine gegebene Einheit festgelegt sein. Die Frequenz kann etwas temperaturabhängig sein. Die HFO-Frequenz kann so gewählt werden, dass sie relativ spannungsunempfindlich ist, was ein wichtiger Angriffsmechanismus sein kann.
-
Bei einigen Ausführungsformen kann das Ausgangssignal der HFO-Schaltung 309 durch 512 dividiert werden, um die RNG-CTRL- und Zustandsmaschinen-Schaltung 202 der ME 200 anzusteuern. Dadurch kann die RNG-CTRL-Schaltung 202 einen Takt erhalten, der unabhängig von äußeren Einflüssen sein kann. Wie nachstehend dargelegt wird, kann für den ordnungsgemäßen TRNG-Betrieb das Ausgangssignal von der RNG-CTRL- und Zustandsmaschinen-Schaltung 202 an die TRNG-Schaltung 300 in einem festgelegten Zeitbereich liegen. Andere Taktquellen können von einem Takt abhängen, der von außen geändert werden kann, was ein möglicher Angriffspunkt für die TRNG-Schaltung 300 sein kann.
-
Die HFO-Schaltung 309 kann so konfiguriert sein, dass sie ein Taktdatensignal erzeugt und dieses Signal als ein Eingangssignal für ein Daten-Latch 311 bereitstellt. Das Ausgangssignal von der HFO-Schaltung 309 kann als Differenzsignal an das Latch 311 gesendet werden, um es im Wesentlichen rauschimmun zu machen. Das Latch 311 kann von der LFO-Schaltung 307 getaktet werden. Die HFO-Schaltung 309 kann etwa 1000-mal schneller sein, und die LFO-Frequenzmodulation verschiebt die Flanken über einen Bereich, der größer als 20 HFO-Perioden ist. Da die Frequenz von der LFO-Schaltung 307 zufällig sein kann, kann der Punkt, an dem das HFO-Oszillator-Ausgangssignal abgetastet wird, zufälig sein, und da der Bereich der abgetasteten HFO-Zyklen breit sein kann, ist die Wahrscheinlichkeit, dass die LFO-Schaltung eine Eins oder eine Null abtastet, einheitlich, wenn man eine Einschaltdauer von 50% an der HFO-Schaltung 309 annimmt. Die HFO-Schaltung 309 kann so konfiguriert sein, dass sie eine Nenn-Einschaltdauer von 50% hat. Zum Beispiel kann die HFO-Schaltung 309 so konfiguriert sein, dass sie eine Division-durch-zwei-Schaltung an der Ausgangsstufe hat, um eine Einschaltdauer von 50% von dem HFO zu erhalten. Ein gewisser Bias kann noch immer in den Datenstrom gelangen. Dieser Bias kann mit der VNC-Schaltung 204 eliminiert werden.
-
Bei einigen Ausführungsformen hat das Latch 311 keine Abhängigkeit von dem vorhergehenden Zustand und kann so konfiguriert sein, dass es das Ausgangssignal von der HFO-Schaltung 309 abtastet. Zum Beispiel können die Stufen des Daten-Latch 311 unter Verwendung von Umkehrpuffern isoliert werden. Das Ausgangssignal des Daten-Latch 311 kann über Gated-Level-Shifter (nicht dargestellt) in die VNC-Schaltung 204 in der ME 200 eingegeben werden. Die Level Shifter können so konfiguriert sein, dass sie Signalpegel des analogen Kerns 302 in eine Differenzspannung der ME-Signale umwandelt. Die Steuersignale von der ME 200 an die TRNG-Schaltung 300 können ebenfalls von den Level Shiftern in der entgegengesetzten Richtung umgewandelt werden. Die Level Shifter können gegatet werden, sodass dann, wenn die ME 200 die TRNG-Schaltung 300 abschaltet, oder wenn die TRNG-Schaltung 300 eingeschaltet wird, bevor die ME 200 in Betrieb gesetzt wird, die Signalgabe zwischen den Domänen nicht aktiv ist. Die ME 200 und die TRNG-Schaltung 300 können mit verschiedenen Energiequellen arbeiten.
-
Bei einigen Ausführungsformen kann der analoge Kern 302 so konfiguriert sein, dass er einen vollständig differentiellen Datenpfad aufweist, um ein Gleichtaktrauschen (common mode noise) in dem System zu unterdrücken. Wie hier dargelegt ist, kann das Vorhandensein des Rauschens an der Stromquelle die Differentialschaltungen beeinflussen. Der Einfluss kann auf beiden Seiten des analogen Kerns 302 gleich sein, wodurch die Gleichtaktpegel in dem Kern 302 beeinträchtigt werden. Der nächste Differentialeingang kann so gestaltet sein, dass er eine hervorragende Gleichtaktunterdrückung hat, wodurch der Einfluss des Rauschens eliminiert wird. Die Verstärkerschaltung 305 kann zum Beispiel eine theoretische Unterdrückung von 300 dB haben, obwohl die praktischen Grenzen der digitalen Prozesse dies auf 80 dB beschränken können. Die von dem Spannungsregler 304 bereitgestellte Rauschreduktion und die Betriebsspannungsunterdrückung (power supply rejection ratio; PSRR) der Differentialschaltungen können gemeinsam das Rauschen an den Versorgungsquellen reduzieren.
-
Bei einigen Ausführungsformen können die hier beschriebenen analogen Schaltungen kaskodiert werden, um die Betriebsspannungsunterdrückung zu verbessern. Kaskodieren ist eine Schaltungstechnik, die die Ausgangsimpedanz von analogen Schaltungen vergrößern kann, um sie dadurch immuner gegen Versorgungsschwankungen zu machen. Bei einer beispielhaften Ausführungsform kann die kaskodierte Anordnung so gestaltet sein, dass sie mit nur 0,9 V arbeitet (eine beispielhafte Spannung für den Siliciumprozess, in dem die TRNG-Schaltung 300 hergestellt wird, beträgt 1,25 V). Darüber hinaus können gefaltete Kaskoden-Verfahren verwendet werden, um die erforderliche Betriebsspeisespannung zu verringern. Der Spannungsregler 304 kann 1,05 V anvisieren. Da die Schaltungen mit niedrigeren Spannungen arbeiten können, können selbst kleine Änderungen, die an dem Spannungsregler 304 vorbei gelangen, bevor die Energieabfall-Detektionsschaltung 306 ausgelöst wird, nicht zu einem Ausfall des analogen Kerns 302 führen.
-
Der Spannungsregler 304, die Energieabfall-Detektionsschaltung (PDDET) 306, die Spannungsdetektionsschaltung 308 und der Beobachtbarkeitsanschluss 310 können so konfiguriert sein, dass sie Einflüsse oder Angriffe von außen, die die Entropie des Datenstroms beeinträchtigen können, vermeiden oder detektieren. Diese Komponenten sind jeweils operativ mit der Analoger-Kern-Schaltung 302 verbunden. Jede dieser Komponenten wird nachstehend näher erläutert.
-
Der Spannungsregler 304 ist so konfiguriert, dass er eine Spannung für die Analoger-Kern-Schaltung 302 der TRNG-Schaltung 300 bereitstellt. Die Analoger-Kern-Schaltung 302 arbeitet mit einer intern erzeugten Energieversorgung, die über die Spannungsreglerschaltung 304 zugeführt wird. Diese Konfiguration kann die Fähigkeit eines potentiellen Hackers reduzieren, das Verhalten der Schaltkreiselemente durch Modulieren der Stromversorgung zu beeinträchtigen. Die Spannungsreglerschaltung 304 kann eine Referenzspannung von einer Niederspannungsbandlücke empfangen, die mit der Kernspannung gespeist wird. Dadurch kann die Spannung stabilisiert werden und eine Immunität gegen Niederfrequenzrauschen oder Spannungsmodulation in dem Betriebsbereich der Bandlücke erreicht werden. Bei höheren Frequenzen (z. B. bei ungefähr 10 MHz) kann sich die Fähigkeit der Bandlücke, das Versorgungsrauschen (das durch die PSRR gemessen wird) zu unterdrücken, verschlechtern, und Rauschen kann sogar verstärkt werden. Bei einigen Ausführungsformen kann zur Abschirmung der Versorgung des analogen Kerns die Referenzspannung mit einem einfachen zweipoligen RC-Filter tiefpassgefiltert werden, um dieses verstärkte Rauschen und anderes höherfrequentes Rauschen zu eliminieren.
-
Bei einigen Ausführungsformen kann die Speisespannung für die Spannungsreglerschaltung 304 so gewählt werden, dass sie eine rauschende Quelle ist, wie etwa eine Spannungsquelle für einen Speicher (z. B. mit doppelter Datenrate; DDR). Diese rauschende Quelle verbraucht mehr Energie als die TRNG-Schaltung 300 und kann eine Bit-Detektion aus der Netzstrom-Signatur verhindern. Der Strom, der von den Schaltungen verbraucht wird, die von der Spannungsreglerschaltung 304 angesteuert werden, mag nur einen kleinen Teil des Gesamtstroms ausmachen, der von der Stromquelle geliefert wird. Der Quellenstrom kann sinken, wenn Strom aus der Quelle gezogen wird, wodurch eine „1” angezeigt wird. Wenn der gezogene Strom nur einen kleinen Teil des Netzstroms ausmacht, der von der Spannungsquelle eingespeist wird, kann es schwierig werden, die Wahrscheinlichkeit einer „1” oder einer „0” zu erkennen. Das Ablesen des Speisestroms der Analoger-Kern-Schaltung 302 kann Informationen für den dort erzeugten Datenstrom liefern. Die Verwendung einer vollständig differentiellen Schaltung für alle wichtigen Elemente macht den Netzstrom stabiler und für unterschiedliche Datenausgänge nicht wesentlich anders. Die Quelle für den Spannungsregler 304 kann stark gefiltert werden, um das Hinein- oder Herausgelangen des hochfrequenten Rauschens zu verhindern. Und welche Stromsignatur auch immer entweichen könnte, sie kann durch das um Größenordnungen stärkere Rauschen des DDR-Blocks maskiert werden. Zum Beispiel kann das Rauschen in der DDR-Speisespannung etwa 200 mV von Spitze zu Spitze betragen, während das von dem TRNG erzeugte Rauschen nur einige Millivolt betragen kann.
-
Bei einigen Ausführungsformen kann die TRNG-Schaltung 300 vor fremdem Zugriff geschützt werden. Mit anderen Worten, es gibt keine eigene Stromversorgung, keine Anschlüsse oder Höcker, die einen direkten Zugriff auf die TRNG-Schaltung 300 ermöglichen. Darüber hinaus kann die TRNG-Schaltung 300 über einen ungesicherten Software-Mechanismus vor dem Zugriff geschützt werden. Mit Ausnahme des Prüfmodus, der nachstehend beschrieben wird, gestattet die TRNG-Schaltung 300 keinen Zugriff durch einen Nutzer, Hacker oder einen anderen ungesicherten Zugriffsmechanismus. Die TRNG-Schaltung 300 kann mittels ME-Firmware gesteuert werden. Die Steuerung der TRNG-Schaltung 300 kann durch die Sicherheit dieser Firmware geschützt werden.
-
Die TRNG-Schaltung 300 wird durch den Takt gesteuert, der in der Analoger-Kern-Schaltung 302 erzeugt wird. Daher kann durch Nichtverwenden der Takte, die auf der Plattform zum Steuern der TRNG-Schaltung 300 verfügbar sind, jede Möglichkeit für einen Angriff durch Beschädigen der Takte vermieden werden. Es werden keine externen Takte verwendet, wodurch eine Manipulation durch Verwendung von unsicherer Firmware vermieden wird. Die HFO-Schaltung 309 kann die Quelle des Taktes für die TRNG-Steuerlogik sein. Dieser Takt kann so konfiguriert sein, dass er eine relativ stabile Konfiguration über den Prozess, die Spannung und die Temperatur hat, und er kann stabiler als einfache Oszillatoren sein. Der Bereich der Frequenzen, die von der HFO-Schaltung 309 erzeugt werden, kann durch eine Schaltung mit konstanter Transkonduktanz (Gm-Schaltung) stabilisiert werden, die so konfiguriert sein kann, dass sie die Veränderbarkeit der Schaltung verfolgt und verringert. Der Takt kann mit der Spannungsreglerschaltung 304 und/oder der PDDET-Schaltung 306 geschützt werden. Auf diese Weise verwenden die hier beschriebenen Ausführungsformen keine externen Takttreiberquellen, die normalerweise von der Northbridge 104 des Chipsatzes 120 verwendet werden (z. B. für den Bus, den Speicher oder die Grafikkarte auf der Vorderseite) und werden nicht unter Verwendung des Echtzeittaktes (real-time clock; RTC) an der Southbridge erzeugt. Diese Quellen können angegriffen werden, um die Taktperiode zu beeinträchtigen und möglicherweise die Zeitsteuerung der TRNG-Steuerlogik zu beeinträchtigen.
-
Bei einigen Ausführungsformen kann die HFO-Schaltung 309 so gestaltet sein, dass sie ein stromgesteuerter Oszillator ist, dessen Schwanzstrom von einer stabilen Referenzschaltung zugeführt werden kann. Die Referenzschaltung kann so gestaltet sein, dass sie einen relativ stabilen Strom unter Verwendung einer Stromreferenzschaltungsanordnung liefert, die auf der Vorspannung einer gefalteten Kaskode (Gm) beruht. Jede Stufe der HFO-Schaltung 309 kann so konfiguriert sein, dass sie eine Gefaltete-Kaskode-Stufe enthält. Der stromgesteuerte Oszillator und der Referenzgenerator können von der Spannungsreglerschaltung 304 gespeist werden. Dadurch kann gewährleistet werden, dass der Takt über den Prozess, die Spannung und die Temperatur relativ stabil ist.
-
Kommen wir nun zu 4, wo eine beispielhafte Ausführungsform einer Energieabfall-Detektionsschaltung (PDDET) 400 gezeigt ist. Der TRNG 300 kann die Energieabfall-Detektionsschaltung 400 nutzen, um die Bit-Erzeugung abzuschalten, wenn zum Beispiel eine Gefahr in den Versorgungsleitungen detektiert wird, wenn die Leistung unter einen vorgegebenen minimalen Schwellenwert absinkt. Wenn sich das Rauschen (Wechselstrom- und Gleichstrom-Rauschen) in der Versorgungsspannung einem Pegel nähert, wo die Bandlücke keine stabile Spannung mehr erzeugen kann, oder wenn die Spannungsreglerschaltung 304 das Rauschen nicht mehr richtig filtert, kann die PDDET 400 ein Signal zum Unterbrechen der Bit-Erzeugung senden und die Zustandsmaschine zurücksetzen. Wenn die Leistung nicht stabil ist und unter einen minimalen Momentan-Schwellenwert absinkt, kann ein Komparator in der PDDET 400 ein Signal an die RNG-CTRL- und Zustandsmaschinen-Schaltung 202 senden. Wenn die Detektion zum Beispiel eine Breite von zwei Nanosekunden hat, kann die RNG CTRL 202 diese erfassen, kann alle Bits in der Pipeline der VNC 204 sofort ungültig machen und die Analoger-Kern-Schaltung 302 des TRNG eine minimale Zeit lang in ihren Offset-Eliminierungszustand zurücksetzen. Wenn die PDDET 400 weiterhin schlechte Spannungspegel detektiert, kann die TRNG-Schaltung 300 in diesem passiven Zustand gehalten werden. Nur wenn die PDDET 400 passiv wird, wird die TRNG-Schaltung 300 durch die restliche Offset-Sequenz gesandt, und die Bit-Erzeugung kann fortgesetzt werden. Da es bei einigen Ausführungsformen zwei Versorgungsquellen geben kann, die Teile des TRNG 300 (z. B. VCCA_DDR- und VCC_DDR-Spannungen) speisen, können beide Versorgungsquellen zugehörige Detektoren haben, sodass Angriffe an jeder Quelle detektiert werden können.
-
Bei einigen Ausführungsformen kann eine Bandlücke 402 eine Referenzspannung von ungefähr 640 mV (V640) für die Komparatoren 404 und 406 bereitstellen. Die Bandlücke kann von der Kern-Versorgungsquelle „VCCA_DDR” gespeist werden. Die Bandlücke 402 kann keinen Betrieb unterhalb einer gegebenen Spannung (z. B. 1,0 V) garantieren. Wenn die Spannung an der „VCCA_DDR” mehr als 1,0 V beträgt, kann ein Widerstandsteiler 410 eine Spannung für den Komparator 404 erzeugen, die über der Referenzspannung V640 liegen kann, und die Ausgangsspannung des Komparators 404 kann eine Null sein. Wenn die „VCCA_DDR” unter 1,0 V absinkt, kann der Widerstandsteiler 410 eine Spannung erzeugen, die kleiner als die Referenzspannung V640 ist, und die Ausgangsspannung des Komparators 404 kann eine logische Eins sein. Das Ausgangssignal des ODER-Gatters 408 kann ebenfalls eine logische Eins sein und kann das PDDET-Signal triggern, um die Bit-Erzeugung zu unterbrechen. Die Speisespannung für den Komparator 404 kann von der DDR-Speicher-Versorgungsquelle „VCC-DDR” kommen. Auf diese Weise kann der Komparator von der Spannungsquelle, die er überwacht, unabhängig sein.
-
Die Speisespannung für den internen Spannungsregler für den analogen Kern 302 des TRNG kann von der DDR-Speicher-Spannungsquelle „VCC-DDR” kommen und kann von einem Widerstandsteiler 412 und dem Komparator 406 überwacht werden. Es kann nicht garantiert werden, dass der Spannungsregler 304 unterhalb einer gegebenen Spannung (z. B. 1,15 V) arbeitet. Der Widerstandsteiler 412 kann eine Spannung erzeugen, die niedriger als die Referenzspannung V640 ist, wenn die „VCC-DDR” unter 1,15 V absinkt, was dazu führt, dass das Ausgangssignal des Komparators 406 eine logische Eins wird, und was das ODER-Gatter 408 veranlasst, das PDDET-Signal zu senden, um die Bit-Erzeugung zu unterbrechen. Ähnlich wie der Komparator 404 kann der Komparator 406 von der „VCCA_DDR” gespeist werden, die die Spannungsquelle ist, die er nicht überwacht.
-
Die vorstehende Beschreibung befasst sich zwar hauptsächlich mit externen Speisespannungen, die unter die Schwellenspannung absinken, die von den Widerstandsteilern 410 und 412 erzeugt wird, aber es ist auch möglich, zu detektieren, ob die externe Spannung den sicheren Betriebsbereich oder die Schwellenspannung überschreitet. Bei einigen Ausführungsformen kann das mit einer zweiten Gruppe von Schwellenwerten erfolgen, die von einer zweiten Gruppe von Widerstandsteilern erzeugt werden, die mit einer zweiten Gruppe von Komparatoren (nicht dargestellt) verbunden sind, wobei die Ausgänge mit zwei zusätzlichen Eingängen am ODER-Gatter 408 verbunden sind, um das PDDET-Signal zu treiben.
-
Kommen wir nun zu 5, wo eine beispielhafte Ausführungsform einer Spannungsdetektionsschaltung 500 gezeigt ist. Wie vorstehend unter Bezugnahme auf 3 dargelegt worden ist, kann die TRNG-Schaltung 300 einen Beobachtbarkeitsanschluss 310 zum Prüfen der internen Gleichspannungen und des internen Arbeitspunktes haben. Auf diese Weise kann ein Höcker (ball) zum Bereitstellen eines Prüfmodus zum Testen und Fehlerbeheben und/oder zur Fertigungsprüfung verwendet werden. Der Zugriff auf diesen Prüfmodus kann mit einer Sicherung deaktiviert werden, und der Prüfmodus-Höcker kann mit einem VSS verbunden werden. Die Spannungsdetektionsschaltung 500 kann so konfiguriert sein, dass sie verhindert, dass ein möglicher Angreifer dem Höcker identifiziert und ihn anschließend für den Zugriff auf die TRNG-Schaltung 300 verwendet. Die Spannungsdetektionsschaltung 500 kann an dem Beobachtbarkeitsanschluss 310 (z. B. einem Anschlussstift) angeordnet werden, um die Höckerspannung zu erfassen und die Bit-Erzeugung abzuschalten, wenn der Höcker in die Nähe der internen Spannung des Spannungsreglers 304 oder über diese hinaus angehoben wird. Bei einigen Ausführungsformen kann die Spannungsdetektionsschaltung 500 eine Schaltung haben, die der PDDET 400 ähnlich ist. Wenn die Spannung an dem Prüfhöcker hoch genug ansteigt, können parasitäre Dioden in den Schaltungen um dem Höcker Strom für die Analoger-Kern-Schaltung 302 des TRNG bereitstellen. Das kann durch Detektieren der Spannung an dem Höcker vermieden werden. Wenn die Spannung zu hoch ist, kann die Erzeugung von Bits von der TRNG-Schaltung 300 so lange abgeschaltet werden, bis der Angriff gestoppt wird. Dieses Verfahren ist dem bei der PDDET 400 ähnlich, die vorstehend unter Bezugnahme auf 4 beschrieben worden ist.
-
Bei einigen Ausführungsformen kann ein Widerstandsteiler 508 eine Referenzspannung erzeugen, die nicht größer als die Kernspannung „VCCA_DDR” ist, die von dem Spannungsregler für einen Komparator 502 ausgegeben wird. Diese Referenzspannung kann mit der Spannung an dem Beobachtbarkeitsanschluss 310 (Anschlussstift „VCC_TSTRNG” 506) verglichen werden. Wenn die Spannung an dem „VCC_TSTRNG” 506 die Referenzspannung von dem Widerstandsteiler 508 überschreitet, kann das Ausgangssignal von dem Komparator 502 zu einem logischen Eins-Pegel übergehen, was ein ODER-Gatter 504 veranlasst, eine neue Version des PDDET-Signals zu senden, um die Bit-Erzeugung zu unterbrechen. Wenn der Höcker für Prüfzwecke verwendet wird, kann der Komparator abgeschaltet werden. Während des normalen Betriebs kann der Komparator eingeschaltet sein, und mit einer Transistor-Pulldown- und Widerstandskombination 510 kann ein „Herunterziehen” an dem „VCC_TSTRNG” 506 durchgeführt werden, um zu gewährleisten, dass der „VCC_TSTRNG” 506 bei Abwesenheit einer anderen Ansteuerquelle niedrig ist.
-
Wie vorstehend unter Bezugnahme auf 3 dargelegt worden ist, kann der Beobachtbarkeitsanschluss 310 operativ mit der Spannungsdetektionsschaltung 308 verbunden sein, die so konfiguriert sein kann, dass sie eine Höckerspannung detektiert und dass sie die Bit-Erzeugung abschaltet, wenn die Höckerspannung außerhalb des Spannungsbereichs der Spannungsreglerschaltung 304 liegt. Zwar ist der Siliciumprozess, in dem die TRNG-Schaltungen hergestellt werden, nicht gegen eine Spannung empfindlich, die kleiner als das Erdpotential an dem Beobachtbarkeitsanschluss ist, jedoch können andere Prozesse dieses Problem haben. Die Detektion von niedrigen Spannungen kann mit einem anderen Komparator (nicht dargestellt) erfolgen, dessen Ausgang mit einem zusätzlichen Eingang an dem ODER-Gatter 504 verbunden ist, um ein PDDETNEW-Signal zu treiben.
-
6 zeigt ein Ablaufdiagramm 600 mit beispielhaften Operationen. Bei einer beispielhaften Ausführungsform können die Operationen das Erzeugen von Zufallsbits nach mindestens einer sicheren Anwendung über einen integrierten Schaltkreis umfassen, der einen echten Zufallszahlengenerator mit einem analogen Kern aufweist (602). Die Operationen können weiterhin das Bereitstellen einer intern erzeugten Speisespannung für den analogen Kern über einen Spannungsregler umfassen, der dem echten Zufallszahlengenerator zugeordnet ist (604).
-
Der Begriff „Speicher”, der hier in einigen Ausführungsformen verwendet wird, kann einen oder mehrere der folgenden Speicherarten umfassen: Halbleiter-Firmware-Speicher, programmierbarer Speicher, nichtflüchtiger Speicher, Nur-Lese-Speicher, elektrisch programmierbarer Speicher, Schreib-Lese-Speicher, Flash-Speicher, Magnetplattenspeicher und/oder Optische-Platten-Speicher.
-
Zusätzlich oder alternativ kann der Speicher andere und/oder später entwickelten Arten von maschinenlesbaren Speichern umfassen. Ausführungsformen der Verfahren, die hier beschrieben werden, können in einem Computerprogramm implementiert werden, das in einem Speichermedium gespeichert werden kann, das Befehle zum Programmieren eines Systems zum Durchführen der Verfahren hat. Das Speichermedium kann unter anderem Folgendes umfassen: alle Arten von Platten, wie etwa Disketten, optische Platten, CD-ROMs (compact disk read-only memories), CD-RWs (compact disk rewritables) und magnetooptischen Platten; Halbleiteranordnungen, wie etwa Nur-Lese-Speicher (ROMs), Schreib-Lese-Speicher (RAMs), wie etwa dynamische und statische RAMs, löschbare, programmierbare Nur-Lese-Speicher (EPROMs), elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs), Flash-Speicher, magnetische oder optische Karten oder alle Arten von Medien, die zum Speichern von elektronischen Befehlen geeignet sind. Weitere Ausführungsformen können als Software-Module implementiert sein, die von einer programmierbaren Steuervorrichtung abgearbeitet werden.
-
Der Begriff „Schaltung”, der hier in einigen Ausführungsformen verwendet wird, kann zum Beispiel einzeln oder in Kombination Folgendes umfassen: festverdrahtete Schaltungen, programmierbare Schaltungen, Zustandsmaschinenschaltungen und/oder Firmware, die Befehle speichern, die von den programmierbaren Schaltungen ausgeführt werden.
-
Der Begriff „Sicherheitsanwendung”, der hier in einigen Ausführungsformen verwendet wird, kann zum Beispiel Folgendes umfassen: eine kryptographische Anwendung oder ein kryptographisches Protokoll, ein Schlüsselverwaltungssystem, alles, was zum Schützen einer Chiffre oder eines Blocks eines Codes und/oder eines Systems dient, die zum Erzeugen mindestens eines Bits konfiguriert sind.