-
Prioritätsanspruch
-
Diese Anmeldung beansprucht die Priorität gemäß 35 U.S.C. § 365(c) der am 5. April 2017 eingereichten
US-Anmeldung Nr. 15/479,424 mit der Bezeichnung „RAN-DOM NUMBER GENERATOR THAT INCLUDES PHYSICALLY UNCLONABLE“, die hiermit durch Nennung zur Gänze aufgenommen wird.
-
Das Gebiet der Erfindung betrifft im Allgemeinen die Halbleitertechnik, und genauer einen Zufallszahlengenerator, der physikalisch nicht klonbare Schaltungen aufweist.
-
Allgemeiner Stand der Technik
-
Die Fähigkeit, eine zufällige Information zu erzeugen, ist eine wichtige Funktion für, z.B. die Verschlüsselung und andere Sicherheitsanwendungen. Dabei ist die Verschlüsslung oder die andere Sicherheitsaufgabe, die bewerkstelligt werden kann, umso besser, je perfekter oder wirklich zufälliger die erzeugte Information ist. Somit sind Entwickler angespornt, Schaltungen zu entwickeln, die in der Lage sind, eine sehr zufällige Information zu erzeugen.
-
Figurenliste
-
Ein besseres Verständnis der vorliegenden Erfindung kann aus der folgenden ausführlichen Beschreibung in Verbindung mit den folgenden Zeichnungen erhalten werden, wobei
- 1 eine Ausführungsform einer PUF-Schaltung zeigt;
- 2 eine Ausführungsform einer Schaltung, die eine Schaltungsdegradation detektiert, zeigt;
- 3 eine andere Ausführungsform einer PUF-Schaltung mit Schaltkreisen zur Bestimmung, ob die PUF-Schaltung instabil ist oder nicht, zeigt;
- 4 eine Änderungsdetektionsschaltung zeigt;
- 5 eine Zufallszahlengeneratorkernschaltung zeigt;
- 6 eine Zufallszahlengeneratorschaltung zeigt;
- 7 ein Rechensystem zeigt.
-
Ausführliche Beschreibung
-
Schaltungen sind im Allgemeinen so gestaltet, dass sie gegenüber Herstellungstoleranzen unempfindlich sind (soweit praktisch umsetzbar). Es kann jedoch eine Klasse von Schaltungen gestaltet werden, die gezielt gegenüber Herstellungstoleranzen empfindlich sind (sogenannte „physikalisch nicht klonbare Schaltungen (physically unclonable circuits“ oder PUFs). Zum Beispiel kann eine Schaltung, die auf einem Halbleiterchip ausgeführt wird, so gestaltet werden, dass sie eine messbare oder bestimmbare Eigenschaft aufweist, die gegenüber dem Schwellenwert und/oder der Verstärkung der Transistoren, die sie bilden, sehr empfindlich ist.
-
Durch die deutliche Empfindlichkeit gegenüber bestimmten Parametern, und durch den Umstand, dass der zugrundeliegende Herstellungsprozess inhärente Abweichungen in Bezug auf diese gleichen Parameter aufweist, können identisch gestaltete Exemplare der Schaltungen selbst dann, wenn sie auf dem gleichen Halbleiterchip hergestellt sind, unterschiedliche Eigenschaften zeigen. 1 zeigt ein Beispiel für eine PUF-Schaltung 100, die bei Ausführung auf einem Halbleiterchip Eigenschaften aufweisen wird, die gegenüber dem Schwellenwert und der Verstärkung der Transistoren, die sie bilden, empfindlich sind.
-
Wie in 1 ersichtlich ist, weist die PUF-Schaltung 100 ein Paar von Invertern 101, 102 auf, wobei der jeweilige Ausgang beider Inverter mit dem jeweiligen Ausgang des anderen Inverters gekoppelt ist. Durchschnittsfachleute werden erkennen, dass die kreuzgekoppelten Inverter 101, 102 eine Latch-Schaltung ausführen, die inhärent von selbst stabil ist (eine 0 an dem Eingang eines ersten Inverters liefert eine 1 an dem Eingang des zweiten Inverters, was erneut erzwingt, dass die 0 an den ersten Inverter angelegt wird). Hier arbeitet die Schaltung 100 gemäß diesem stabilen Modus, wenn beide Transistoren Q1 und Q2 abgeschaltet ist, was stattfindet, wenn der Steuermodus 103 auf eine logische 0 gesetzt ist.
-
Doch wenn der Steuermodus 103 zu einer logischen 1 wechselt, versucht die Schaltung 100, beide Transistoren Q1 und Q2 einzuschalten, was die Schaltung anfangs in einen instabilen Zustand bringt. Der instabile Zustand wird rasch zu einem stabilen Zustand zurückkehren, wenn genügend Herstellungsschwankungen zwischen den verschiedenen Transistoren der Inverter 101, 102, den Transistoren Q1 und Q2, und/oder den Zwischenverbindungswiderständen dazwischen vorhanden sind. Das heißt, obwohl die Schaltung 100 als symmetrisch oder ausgeglichen gestaltet ist, kann es sein, dass sie wie tatsächlich hergestellt aufgrund von Herstellungstoleranzen eigentlich nicht symmetrisch oder ausgeglichen ist. Wenn die Schaltung 100 ausreichend unausgeglichen ist, wird die Schaltung kurz nach dem Einschalten der Transistoren Q1 und Q2 von Natur aus in einen stabilen Zustand „schnappen“, der durch das Ungleichgewicht hervorgerufen wird.
-
Wenn die Transistoren Q1 und Q2 zum Beispiel unterschiedliche Ansprechzeiten aufweisen, beginnt sich bei der Abgabe der Vorladung durch das Steuerungssignal jener Latch-Knoten 104/105, der an dem schnelleren Vorladetransistor angebracht ist, früher als der andere Knoten zu entladen, und wird er schließlich eine höhere Wahrscheinlichkeit der Stabilisierung zu einer „null“ aufweisen. Der an dem Knoten 105 gehaltene Wert wird letztendlich in einem Flipflop 106 aufgefangen, das im Wesentlichen speichert, in welchen bestimmten der beiden möglichen Zustände der Knoten 105 geschnappt ist.
-
Doch selbst wenn die Transistoren Q1 und Q2 identisch hergestellt sind, kann die Schaltung 100 immer noch in einen stabilen Zustand schnappen, wenn genügend Herstellungsunterschiede vorhanden sind, die mit den Invertern 101, 102 selbst verbunden sind. Wie in der Technik bekannt ist, kann eine Transistorverstärkungsschwankung oder eine Transistorschwellenwertschwankung die Zeit beeinflussen, zu der ein Inverter einen Empfangsinverter dazu bringen wird, sein Ausgangsbit umzudrehen. Insbesondere werden eine niedrigere Antriebsinverterverstärkung und ein höherer Empfangsinverterschwellenwert verursachen, dass der Empfangsinverter sein Ausgangsbit zeitlich später umdrehen wird. Im Gegensatz dazu werden eine höhere Antriebsinverterverstärkung und ein niedrigerer Empfangsinverterschwellenwert verursachen, dass der Empfangsinverter sein Ausgangsbit zeitlich früher umdrehen wird. Zur Einfachheit wurden nur die Transistorverstärkung und der Schwellenwert genannt. Doch das Timing einer wie oben beschriebenen Inverterschleife kann durch andere herstellungsbezogene Eigenschaften (den Zwischenverbindungswiderstand (die Zwischenverbindungswiderstände), den Kontaktwiderstand (die Kontaktwiderstände), eine Schwankung der Transistorabmessung(en), zufällige Dotierstoffschwankungen usw.) beeinflusst werden.
-
Hier wird selbst dann, wenn beide Latch-Knoten 104, 105 gleichzeitig auf eine logische 1 gezogen werden, wenn der Steuerknoten zu einer logischen 1 wechselt (da die Transistoren Q1 und Q2 identisch sind), einer der Latch-Knoten 104, 105 vor dem anderen der Latch-Knoten 104, 105 damit beginnen, auf eine logische 0 getrieben zu werden (erneut aufgrund von, z.B., Herstellungsunterschieden bei den Transistoren in den Invertern 101, 102). Sobald einer der Latch-Knoten 104, 105 vor dem anderen der Latch-Knoten 104, 105 damit beginnt, auf eine logische 0 getrieben zu werden, wird die Schaltung 100 rasch zu einem stabilen Zustand schnappen, der den Latch-Knoten, der zuerst auf eine logische 0 getrieben wurde, bei einer logischen 0 hält, und den anderen Latch-Knoten bei einer logischen 1 hält. Erneut wird jener Wert, zu dem der Knoten 105 schnappt, in dem Flipflop 106 gespeichert.
-
2 zeigt eine Schaltung mit N Exemplaren 201_1 bis 201_N einer Schaltung wie etwa der gerade im Vorhergehenden beschriebenen PUF-Schaltung, die sich selbst abhängig von ihrer bestimmten Kombination von Herstellungsschwankungen auf eine 1 oder eine 0 setzt. Bei einer Ausführungsform sind die Schaltungen 201_1 bis 201_N auf einem gleichen Halbleiterchip integriert (während die Schaltungen bei anderen Ausführungsformen auf einer gleichen gedruckten Leiterplatte integriert sein können). Zur Bequemlichkeit wird als Beispiel meist auf ein Halbleiterdie Bezug genommen.
-
Bei einer Ausführungsform, die z.B. für jede der PUF-Schaltungen 201_1 bis 201_N die oben genannte PUF-Schaltung 100 von 1 verwendet, wechselt der Steuerknoten 103 während der Endproduktprüfung zu einer 1, um jede der N Schaltungen dazu zu bringen, zu ihrem jeweiligen stabilen Bitwert zu schnappen, der dann in dem jeweiligen Flipflop 201_1 bis 201_N jeder Schaltung gespeichert wird. Jeder der jeweiligen stabilen Bitwerte, die in den Flipflops 201_1 bis 202_N gehalten werden, kann kombiniert werden, um z.B. eine sichere Kennung oder einen Schlüssel für den Halbleiterchip zu bilden, die bzw. der verwendet wird, um mit einem Sicherheitsschaltkreis 205, der auf dem Halbleiterchip integriert ist, verschiedene Sicherheitsfunktionen (z.B. eine Verschlüsselung/Entschlüsselung) durchzuführen. Im Allgemeinen wird verhindert, dass die Kennung/der Schlüssel den Chip oder ein sicheres System, das mit dem Chip ausgeführt ist, verlässt. Der Sicherheitsschaltkreis 205 kann sich auf ECC-Helferdaten, die in einem nichtflüchtigen Speicher 203 gespeichert sind, stützen, um z.B. Bitfehler, die im Lauf der Zeit in dem Schlüssel/der Kennung entstehen können, zu korrigieren. Die ECC-Helferdaten werden ebenfalls nicht enthüllt oder können auch nicht anderweitig Informationen über den Schlüssel/die Kennung, der bzw. die durch die PUF-Schaltungen 201_1 bis 201_N bereitgestellt wird, durchsickern lassen.
-
Wie in der Technik bekannt ist, werden sich elektronische Schaltungen im Lauf der Zeit und Verwendung so verschlechtern, dass sich wenigstens eine ihrer herstellungsbezogenen Eigenschaften ändern wird. Als Folge beginnen die N PUF-Schaltungen 201_1 bis 201_N, eine Veränderung in ihrem Verhalten zu zeigen. Somit kann sich die jeweilige N-Bit-Signatur im Lauf der Zeit verändern. Im Fall eines Verlässlichkeitsproblems oder eines Herstellungsfehlers, das bzw. der einem ernsten Degradationsproblem entspricht, wird sich die Signatur um irgendein beträchtliches Ausmaß verändern, das daraufhin als Früherkennungswarnung markiert werden kann, dass der elektronische Chip oder die Leiterplatte zu einem bevorstehenden Ausfall neigt. Daher kann eine Korrekturmaßnahme getroffen werden, bevor ein ernsterer fataler „harter“ Ausfall auftritt.
-
Die obige Besprechung unter Bezugnahme auf 1 und 2 hat angenommen, dass jede der PUF-Schaltungen 201_1 bis 201_N zu einem stabilen Wert schnappen wird. Es kann jedoch Fälle geben, in denen eine wie hergestellte PUF-Schaltung so symmetrisch oder ausgeglichen ist, dass sie nicht in einen stabilen Zustand schnappt, wenn der Steuerknoten zu einer logischen 1 wechselt. Wenn zum Beispiel die Transistoren Q1 und Q2 identisch hergestellt sind und beide Inverter identisch hergestellt sind, kann es sein, dass die oben beschriebenen Mechanismen, die die PUF-Schaltung in einen stabilen Zustand schnappen lassen, nicht auftreten. Somit schnappt die PUF-Schaltung nicht unverzüglich in einen stabilen Zustand, sondern bleibt sie statt dessen für eine längeren Zeitraum in einem instabilen Zustand und/oder wird die PUF-Schaltung auf Basis zeitlicher Bedingungen wie etwa einem thermischen Rauschen, einem Spannungsabfall, einer Kopplung von anderen Schaltungen usw. in einen Zustand schnappen. Hier besteht eine große Wahrscheinlichkeit, dass sie sich bei einer mehrmaligen Bewertung für unterschiedliche Zustände entscheidet.
-
Mit der Erkenntnis, dass das Flipflop 106 dazu gestaltet ist, den Wert des Knotens 105 kurz nach dem Setzen des Steuerwerts auf eine logische 1 (z.B. beim Zurückwechseln des Steuerknotens 103 zu einer logischen 0 kurz, nachdem der Steuerknoten 103 zu einer logischen 1 gewechselt hat) aufzuzeichnen, wird das Flipflop 106 entweder eine 1 oder eine 0 latchen, da die PUF-Schaltung 100 nicht in einen stabilen Zustand geschnappt hat, bevor das Flipflop 106 seinen Eingangswert gelatcht hat.
-
Schaltungen, die sich auf diese Weise verhalten (sich nicht stets für einen Zustand entscheiden), sind instabil. Bei einer Ausführungsform werden unter Bezugnahme auf 2 instabile PUF-Schaltungen identifiziert und ihre entsprechenden gelatchten Bits, die aus ihren jeweiligen Flipflops gelesen werden, idealerweise nicht für den Signaturcode der Schaltung, der verwendet wird, um Chipdegradationsprobleme zu detektieren, verwendet. Somit ist das tatsächlich verwendete Signaturwort kürzer als N Bits. Hier werden die Bits von instabilen PUF-Schaltungen als „dunkle Bits“ markiert. Ein Dunkle-Bits-Maskenvektor (nachstehend eine „Dunkle-Bits-Maske“), der identifiziert, welche der N Bits von N PUF-Schaltungen von einer instabilen PUF-Schaltung stammen, kann z.B. in einem nichtflüchtigen Speicher (wie etwa dem nichtflüchtigen Speicher 203) gespeichert werden. Die Dunkle-Bits-Maske wird verwendet, um die von den instabilen PUF-Schaltungen erzeugten Bits zu ignorieren, wenn der Signaturschlüssel/die Kennung für die Schaltung bestimmt wird.
-
3 zeigt eine PUF-Schaltung 300, die eingebaute Schaltkreise 307, 308 aufweist, um zu prüfen, ob die PUF-Schaltung 300 instabil ist oder nicht. Wie in 3 ersichtlich ist, ist hier eine Zählerschaltung 307 so gekoppelt, dass sie den Ausgang eines Flipflop 306 erhält. Anstatt nur eine Abtastung zu nehmen (d.h., den Steuerwert 103 einmal pro Ablesung der PUF-Schaltung 300 zu einem Wert von 1 wechseln zu lassen, wie oben unter Bezugnahme auf 1 beschrieben wurde), werden mehrere Abtastungen der Schaltung 300 genommen und wird der Ausgang des Flipflop 306 in die Zählerschaltung 307 eingegeben.
-
Hier werden mehrere Abtastungen genommen, indem der Steuerknoten 303 mit einem Taktsignal (CLK) angetrieben wird, wenn ein Bewertungseingang 312 ein logisches H ist. Jedes Mal, wenn der Takt zu einem logischen H wechselt, wird die Schaltung 300 erneut versuchen, zu einem stabilen Wert zu schnappen. Bei jeder Abtastung (d.h., jedem Taktwechsel zu einem logischen H) wird der Zählerschaltung 307 der durch das Flipflop 306 gelatchte Wert bereitgestellt. Wenn der Q-Ausgang des Flipflop 306 ein logisches H ist, wird die Zählerschaltung 307 als Reaktion ihren Zählwert erhöhen.
-
Nach einer Anzahl von solchen Abtastungen (z.B. 15) wird der Wert in dem Zähler 307 durch eine Vergleichsschaltung 308 mit dem höchstmöglichen Zählerwert (der aus der Bitbreite des Zählers bestimmt wird) verglichen. Wenn der Wert in dem Zähler 307 größer als die Hälfte des höchstmöglichen Zählerwerts ist, wird der PUF-Schaltungs-Ausgang als 1 angesehen. Andernfalls wird der PUF-Schaltungs-Ausgang als 0 angesehen. Durchschnittsfachleute werden erkennen, dass die Verwendung des Ausgangs des Zählers 307 und der Vergleichsschaltung 308 auf diese Weise einer zeitlichen Mehrheitsentscheidungstechnik entspricht, die Sparse-Fehler in der PUF-Schaltungssignatur verringert.
-
Unter kurzer erneuter Bezugnahme auf 2 ist zu beachten, dass die jeweiligen Flipflops 202_1 bis 202_N der PUF-Schaltungen 201_1 bis 201_N, die jeweils dem Flipflop 306 entsprechen, tatsächlich einen jeweiligen Zähler 307 und eine Vergleichslogikschaltung 308, die den PUF-Schaltungs-Ausgang bereitstellt, speisen. Unter erneuter Bezugnahme auf 3 zeichnet eine Änderungsdetektionsschaltung 309 die wie durch die Vergleichsschaltung 308 bestimmte Signatur der PUF-Schaltung 300 auf.
-
Dann wird erneut eine zweite Runde von (z.B. 15) Abtastungen genommen, was einen unterschiedlichen Wert in dem Zähler 307 erzeugen kann. Bei instabilen Schaltungen kann der Ausgang der Vergleichsschaltung 308 so wie zwischen den beiden Sätzen von Abtastungen unterschiedlich sein (d.h., die PUF-Schaltung 300 erzeugte über die beiden Sätze von Abtastungen unterschiedliche Signaturen). Die Änderungsdetektionsschaltung 309 vergleicht die gespeicherte (vorherige) Signatur mit dem gegenwärtigen Ausgang von der Vergleichsschaltung 308. Wenn die beiden unterschiedlich sind, wird die PUF-Schaltung 300 als instabil erachtet. Bei einer weiteren Ausführungsform wird eine Anzahl von Sätzen von (z.B. 15) Abtastungen genommen und wird die PUF-Schaltung als instabil erachtet (d.h., als „dunkel“ identifiziert), wenn die PUF-Schaltung über beliebige zwei aufeinanderfolgende Abtastungen unterschiedliche Signaturen erzeugt.
-
4 zeigt eine Ausführungsform 409 der Änderungsdetektionsschaltung 309 von 3. Der Ausgang 404 gibt an, ob die PUF-Schaltung instabil ist oder nicht. Der Ausgang wird aktiviert, wenn das Bewertungssteuersignal 313, 412 ein logisches H ist. Der Q-Eingang 401 des Flipflop ist mit dem Ausgang der Vergleichsschaltung 308 von 3 gekoppelt. Mit jedem neuen Satz von Abtastungen erzeugt die PUF-Schaltung aus dem Ausgang der Vergleichsschaltung 308 eine nächste PUF-Signatur (die der PUF-Signatur, die aus dem vorhergehenden Satz von Abtastungen erzeugt wurde, gleich oder davon verschieden sein kann). Der Ausgang der Vergleichsschaltung 308 wird zu dem Eingang 401 gerichtet und in einem ersten Flipflop 401 gelatcht. Und mit jedem neuen Satz von Abtastungen wird die vorhergehende PUF-Schaltungssignatur von dem Flipflop 401 in einem Flipflop 402 gelatcht. Daher hält das Flipflop 401 die neue PUF-Schaltungssignatur und hält das Flipflop 402 die unmittelbar vorhergehende PUF-Schaltungssignatur. Wenn sich die beiden Werte unterscheiden, liefert das XOR-Gatter 403 einen H-Wert, der von dem Ausgang 404 verbreitet wird, um anzugeben, dass die PUF-Schaltung instabil ist.
-
Wenn die PUF-Schaltung als dunkel identifiziert wird, wird die Identität der PUF-Schaltung in der Dunkle-Bits-Maske aufgezeichnet, damit sie z.B. nicht für Chipkennungs/schlüsselzwecke verwendet werden kann. Doch bei einer Ausführungsform werden die PUF-Schaltung und einige/alle anderen instabilen PUF-Schaltungen, die an der Dunkle-Bits-Maske identifiziert sind, statt dessen als die Kernquelle(n) für einen Zufallszahlengenerator verwendet.
-
5 zeigt eine grundlegende Zufallszahlengeneratorkernschaltung 500, die die instabilen PUF-Zellen, welche durch die Dunkle-Bits-Maske als Quelle für eine zufällige Information identifiziert werden, verwendet. Hier zeigt die Kernschaltung 500 von 5 einen Multiplexierer 501, der Eingangskanäle aufweist, die mit jeder PUF-Schaltung („Zelle“), welche z.B. auf einer Halbleiterschaltung instanziiert wurde, gekoppelt sind. Bei verschiedenen Ausführungsformen sind einige der PUF-Schaltungen, die mit dem Multiplexierer 501 gekoppelt sind, stabil, weshalb sie für die Chipidentifikation (z.B. wie bei der Schaltung von 2) oder eine andere Verwendung benutzt, werden. Das heißt, nach verschiedenen Ausführungsformen sind die jeweiligen Ausgänge von mehreren PUF-Schaltungen, die auf einem Halbleiterchip ausgeführt sind, z.B. nicht nur mit einer Chipidentifikationsschaltung (wie in 2) gekoppelt, sondern auch mit einer Zufallszahlengeneratorschaltung 500 (wie in 5) gekoppelt. Die Ausgänge der PUF-Schaltungen, die als stabil erachtet werden, werden zu der Chipidentifikationsschaltung gerichtet, während die Ausgänge der PUF-Schaltungen, die als instabil erachtet werden, durch die Zufallszahlengeneratorschaltung 500 verwendet werden.
-
In der Kernschaltung 500 von 5 wird eine Information von der Dunkle-Bits-Maske verwendet, um den Kanalwahleingang des Multiplexierers 501 zu steuern, der wiederum verursacht, dass durch den Multiplexierer 501 nur die Ausgangswerte von instabilen PUF-Schaltungen gewählt werden. Bei einer Ausführungsform wird die Dunkle-Bits-Maske z.B. der Reihe nach, zufällig, oder pseudo-zufällig durchscrollt, um die jeweiligen Ausgangswerte einer Reihe von instabilen PUF-Schaltungen zu wählen. Hier werden dem Durchscrollen der PUF-Schaltungs-Identitäten an der Dunkle-Bits-Maske entsprechend zeitgleich Taktwerte in die instabilen PUF-Schaltungen eingegeben.
-
Wenn beispielsweise eine Ausführungsform angenommen wird, bei der die Dunkle-Bits-Maske der Reihe nach (z.B. von „oben“ nach „unten“) durchscrollt wird, wird anfänglich ein Taktimpuls in die instabilen PUF-Schaltungen eingegeben, um sie dazu zu bringen, in den jeweiligen Zustand, in den sie jeweils schnappen, zu schnappen. Dann wird die Dunkle-Bits-Maske so durchscrollt, dass jede instabile PUF-Schaltung einmal abgetastet und durch den Multiplexierer 501 gewählt wird. Nachdem die Dunkle-Bits-Maske vollständig durchscrollt wurde (das untere Ende erreicht wurde), wird der Prozess wiederholt. Das heißt, es wird ein anderer Taktimpuls in die instabilen PUF-Schaltungen eingegeben, damit sie in den jeweiligen Zustand, in den sie schnappen, schnappen können, und die Dunkle-Bits-Maske wird erneut durchscrollt (oder, z.B., von unten nach oben oder erneut von oben nach unten). Es ist zu beachten, dass sich der Ausgangszustand des Satzes von instabilen PUF-Schaltungen mit jedem Taktimpuls fortlaufend und zufällig ändern sollte.
-
Unter Bezugnahme auf den Kernzufallszahlengenerator 500 von 5 wird mit der Wahl der Ausgänge der instabilen PUF-Schaltungen durch Durchscrollen der Dunkle-Bits-Maske und Bereitstellen ihrer jeweiligen Identitäten für den Kanalwahleingang des Multiplexierers 501 an dem Ausgang des Multiplexierers 501 ein Bitstrom (in 5 als Bit 1 bezeichnet) erzeugt werden. Hier entspricht jedes nächste Bit des Bitstroms dem Ausgangsbit einer nächsten abgetasteten instabilen PUF-Schaltung. Jedes nächste Bit des Bitstroms Bit 1 wird in einem Latch 502 gelatcht und durch ein XOR-Gatter 503 mit seinem unmittelbaren Vorgänger (in 5 als Bit 2 bezeichnet) verglichen. Wenn sich die beiden Bits unterscheiden, wird der Ausgang eines Logikgatters 504 als gültig angesehen und gestattet, dass sein Ausgang in ein Schieberegister 505 gelangt, das die Ausgangsbits von der Kernschaltung 500 erhält. Das Logikgatter 504 weist zwei potenzielle unterschiedliche Ausgangszustände auf, die kennzeichnen, ob der Bitstrom der zwei Bits (Bit 1,Bit 2) (1,0) oder (0,1) lautet. Somit wird das Schieberegister 505 nur dann mit einer neuen Information geladen, wenn in dem Bitstrom von Bit 1 und Bit 2 ein Unterschied besteht, wodurch von dem Satz von instabilen PUF-Schaltungen mehr Zufälligkeit erlangt wird.
-
Wie in 6 ersichtlich ist, kann eine Reihe von Zufallszahlgeneratorkernen 600_2, 600_3, ... mit zunehmend kleinerer Eingangsbitbreite verkettet werden, um noch mehr Zufälligkeit in das erzeugte Bitmuster einzubringen und/oder die Ausgangsbitrate des Zufallszahlengenerators zu erhöhen. Hier ist unter erneuter kurzer Bezugnahme auf 5 zu beachten, dass die instabilen PUF-Schaltungen, die für den Eingang in den Multiplexierer 501 gewählt werden, als Eingangswort mit einer gewissen Breite angesehen werden können. Das heißt, wenn X instabile PUF-Schaltungen vorhanden sind, weist das Eingangswort in den Multiplexierer 501 eine Breite von X auf und wird der Bitstrom Bit 1 durch Wählen eines jeden der X Bits des X Bit breiten Eingangsworts erzeugt.
-
Hier kann das Schieberegister 505 unter Bezugnahme auf 5 und 6 so angesehen werden, dass es ein nächstes Wort mit einer Breite Y für eine nächste Kernzufallszahlengeneratorschaltung 600_2 wie die Kernschaltung 500 von 5 bereitstellt. Bei einer Ausführungsform weist der Ausgang des Schieberegisters 505 der ersten Kernschaltung 500 eine Breite auf, die die Hälfte der Anzahl von instabilen PUF-Schaltungen, die durch den in 5 gezeigten ersten Kernzufallszahlengenerator 500 verwendet werden, beträgt. Das heißt, bei einer Ausführungsform beträgt die Ausgangsbitbreite des Schieberegisters 505 X/2.
-
Unter Bezugnahme auf 5 und 6 wird eine nächste Zufallszahlengeneratorkernschaltung 600_2, die der Kernschaltung 500 von 5 ähnlich ist, von dem Schieberegister 505 mit dem Y = X/2 breiten Wort beliefert. Das Ausgangsschieberegister 605_2 des zweiten Zufallszahlengeneratorkerns 600_2 stellt jedoch nur ein Y/2 = X/4 breites Ausgangswort bereit. Eine nächste Zufallszahlengeneratorkernschaltung 600_3, die ebenfalls der Kernschaltung 500 von 5 ähnlich ist, erhält das Ausgangswort mit der Breite X/4 von dem Schieberegister 605_2 und liefert seine Zufallsbits in ein Ausgangsschieberegister 605_3, das Y/4 = X/8 Bits breit ist. Die Kette von Zufallszahlengeneratoren verringert die Bitbreite fortlaufend, bis an dem Ausgang 610 des gesamten Zufallszahlengenerators die Bitbreite der gewünschten Zufallszahl erreicht wird.
-
Es ist zu beachten, dass auch die Ausrichtung zur Wahl der Zufälligkeit durch die Kernschaltungen 500, 600_2, 600_3, usw. zufällige Entropie oder Zufälligkeit in den Endwert, der an dem Zufallszahlengeneratorausgang 610 bereitgestellt wird, einbringt. Die Einbringung einer solchen Zufälligkeit sollte dabei helfen, etwaige als instabil erachtete PUF-Schaltungen, die tatsächlich eine gewisse Stabilität aufweisen oder zu einem bestimmten Ausgangszustand neigen, zu kompensieren. Zum Beispiel zeigt eine instabile PUF-Schaltung, die wiederholt für 47 % ihrer Abtastungen zu einer 1 schnappt und für 53 % ihrer Abtastungen zu einer 0 schnappt, eine gewisse Neigung/Stabilität zu einem Wert von 1. Die erhöhte Entropie/Zufälligkeit, die durch die Zufallszahlengeneratorschaltungen 500, 600 von 5 und 6 eingebracht wird, sollte eine zusätzliche Entropie/Zufälligkeit hinzufügen, um jede solche Neigung/Stabilität in den ursprünglichen PUF-Schaltungen zu versetzen.
-
Das Kaskadieren mehrerer Zufallsgeneratoren mit abnehmender Bitbreite sollte auch die Bitrate des Zufallszahlengenerators erhöhen. Hier entspricht das Vorhandensein von mehreren Schieberegistern dem Festhalten an einer großen Vorgeschichte von sehr zufälligen Informationen durch die gesamte Schaltung. Das trichterförmige Verengen zu kleineren Wortgrößen extrahiert im Wesentlichen Informationen, die näher am reinen Zufall liegen, mit einer ausreichend hohen Bitrate aus der Vorgeschichte.
-
Bei alternativen Ausführungsformen kann die Reihenfolgen, in der die Bits von den instabilen PUF-Schaltungen kaskadiert werden, geändert/verändert werden (z.B. mit der Zeit). Das Kaskadieren kann auch zeitlich stattfinden, was bedeutet, dass mehrere Bits von der gleichen instabilen PUF-Zelle in den Kernzufallszahlengenerator 500 eingegeben werden können, um die Entropie des zufällig erstellten Ausgangs zu steigern. Die Ausführung des Kaskadenaufbaus und, welche Bits durch den wie hier gezeigten Kernzufallszahlengenerator verbraucht werden, ist lediglich beispielhaft (andere Ausführungsformen können unterschiedliche Ansätze verfolgen).
-
Der Ausgang des Zufallszahlengenerators kann z.B. mit einer Verschlüsselungs- und/oder Entschlüsselungsschaltung oder einer anderen Sicherheitsschaltung (z.B. zur Umsetzung eines Passworts oder einer anderen zufälligen Kennung) gekoppelt werden. Obwohl sich oben beschriebene Ausführungsformen auf Schaltkreise, die auf einem einzelnen Halbleiterchip ausgeführt sind, konzentriert haben, können alternative Ausführungsformen andere Systeme wie etwa Schaltungen, die auf einer Planarplatine (z.B. einer „PC“-Platine) angeordnet sind, aufweisen.
-
7 zeigt eine Darstellung eines beispielhaften Rechensystems 700 wie etwa eines PC-Systems (z.B. Desktop oder Laptop) oder eines mobilen oder tragbaren Rechensystems wie etwa einer Tablet-Vorrichtung oder eines Smartphones, oder eines größeren Rechensystems wie etwa eines Serverrechensystems. Wie in 7 ersichtlich ist, kann das grundlegende Rechensystem eine zentrale Verarbeitungseinheit 701 (die z.B. mehrere Allzweck-Verarbeitungskerne und eine Hauptspeichersteuerung, die an einem Anwendungsprozessor oder einem Mehrkernprozessor angeordnet sind, aufweisen kann), einen Systemspeicher 702, eine Anzeige 703 (z.B. Touchscreen, Flachbildschirm), eine lokale verdrahtete Punkt-zu-Punkt-Verbindungs(z.B. USB)-Schnittstelle 704, verschiedene Netzwerk-E/A-Funktionen 705 (wie etwa eine Ethernet-Schnittstelle und/oder ein Zellularmodem-Subsystem), eine drahtlose lokale Netzwerk(z.B. WiFi)-Schnittstelle 706, eine drahtlose Punkt-zu-Punkt-Verbindungs(z.B. Bluetooth)-Schnittstelle 707 und eine Globales-Positionierungssystem-Schnittstelle 708, verschiedene Sensoren 709_1 bis 709_N (z.B. eines oder mehrere aus einem Gyroskop, einem Beschleunigungsmesser, einem Magnetometer, einem Temperatursensor, einem Drucksensor, einem Feuchtigkeitssensor, usw.), eine Kamera 710, eine Batterie 711, eine Leistungsverwaltungssteuereinheit 712, einen Lautsprecher und ein Mikrophon 713, und einen Audiocodierer/decodierer 714 aufweisen.
-
Ein Anwendungsprozessor oder Mehrkernprozessor 750 kann einen oder mehr Allzweck-Verarbeitungskerne 715 in seiner CPU 701, eine oder mehrere graphische Verarbeitungseinheiten 716, eine Speicherverwaltungsfunktion 717 (z.B. eine Speichersteuerung), und eine E/A-Steuerfunktion 718 aufweisen. Die Allzweck-Verarbeitungskerne 715 führen typischerweise das Betriebssystem und die Anwendungssoftware des Rechensystems aus. Die Grafikverarbeitungseinheiten 716 führen typischerweise grafikintensive Funktionen aus, um z.B. Grafikinformationen zu erzeugen, die an der Anzeige 703 gezeigt werden. Die Speichersteuerfunktion 717 ist mit dem Systemspeicher 702 gekoppelt. Der Systemspeicher 702 kann ein Mehrebenen-Systemspeicher mit unterschiedlichen Zwischenspeicherstrukturen in einer schnelleren Ebene des Systemspeichers sein.
-
Bei verschiedenen Ausführungsformen können physikalisch nicht klonbare Schaltungen in das Rechensystem integriert werden und mit einer Signaturschaltung und/oder einem oben ausführlich beschriebenen Zufallszahlengenerator gekoppelt werden.
-
Alle aus der Touchscreen-Anzeige 703, den Kommunikationsschnittstellen 704 bis 707, der GPS-Schnittstelle 708, den Sensoren 709, der Kamera 710, und dem Lautsprecher/Mikrophon-Codierer/Decodierer 713, 714 können als verschiedene Formen von E/A (Eingang und/oder Ausgang) in Bezug auf das gesamte Rechensystem einschließlich, gegebenenfalls, auch einer integrierten peripheren Vorrichtung (z.B. der Kamera) angesehen werden. Abhängig von der Ausführung können verschiedene dieser E/A-Komponenten an dem Anwendungsprozessor/Mehrkernprozessor 750 integriert sein oder sich abseits des Die oder außerhalb des Packages des Anwendungsprozessors/Mehrkernprozessors 750 befinden. Der Massenspeicher des Rechensystems kann mit einem nichtflüchtigen Speicher 720 ausgeführt sein, der mit der E/A-Steuerung 718 (die auch als peripherer Steuerhub bezeichnet werden kann) gekoppelt sein kann.
-
Ausführungsformen der Erfindung können verschiedene wie oben dargelegte Prozesse beinhalten. Die Prozesse können durch maschinenausführbare Befehle verkörpert werden. Die Befehle können verwendet werden, um einen Allzweck-Prozessor oder einen Prozessor mit besonderer Zweckbestimmung dazu zu bringen, verschiedene Prozesse durchzuführen. Alternativ können diese Prozesse durch bestimmte Hardwarekomponenten, die eine Festverdrahtungslogik zur Durchführung der Prozesse enthalten, oder durch jede beliebige Kombination von software- oder befehlsprogrammierten Computerkomponenten oder maßgeschneiderten Hardwarekomponenten wie etwa anwendungsspezifischen integrierten Schaltungen (ASIC), programmierbaren Logikvorrichtungen (PLD), programmierbaren Logikanordnungen (PLA), oder feldprogrammierbaren Gateanordnungen (PFGA) durchgeführt werden.
-
Elemente der vorliegenden Erfindung können auch als maschinenlesbares Medium zum Speichern der maschinenausführbaren Befehle bereitgestellt werden. Das maschinenlesbare Medium kann, jedoch ohne Beschränkung darauf, Floppy-Disketten, optische Platten, CD-ROMs, und magnetooptische Platten, FLASH-Speicher, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Ausbreitungsmedien oder eine andere Art von Medium/maschinenlesbarem Medium, das zur Speicherung von elektronischen Befehlen geeignet ist, beinhalten. Zum Beispiel kann die vorliegende Erfindung als Computerprogramm, das durch Datensignale, die in einer Trägerwelle oder einem anderen Ausbreitungsmedium enthalten sind, über eine Kommunikationsverbindung (z.B. eine Modem- oder Netzwerkverbindung) von einem entfernten Computer (z.B. einem Server) zu einem anfordernden Computer (z.B. einem Client) übertragen wird, heruntergeladen werden.
-
In der obigen Beschreibung wurde die Erfindung unter Bezugnahme auf bestimmte beispielhafte Ausführungsformen davon beschrieben. Es wird jedoch offensichtlich sein, dass daran verschiedene Abwandlungen und Änderungen vorgenommen werden können, ohne von dem breiteren Geist und Umfang der Erfindung, der in den beiliegenden Ansprüchen dargelegt ist, abzuweichen. Die Beschreibung und die Zeichnungen sollen entsprechend in einem erläuternden anstatt in einem beschränkenden Sinn angesehen werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-