-
Hintergrund
-
Die
vorliegende Erfindung bezieht sich auf eine Vorrichtung und ein
Verfahren zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator,
wie er beispielsweise in Smart Cards verwendet wird.
-
Eine
Aufgabe, die in Security Controllern häufig zu lösen ist, ist das Erzeugen von
Zufallszahlen, und insbesondere echten Zufallszahlen wie sie von
einem echten Zufallszahlengenerator generiert werden können. Echte
Zufallszahlengeneratoren werden auch True-RNGs (RNG = Random Number Generator)
genannt. Solche True-RNGs sind in ihrer Implementierung aufwändig und
kostenintensiv. Deshalb kommen häufig
Pseudo-Zufallszahlengeneratoren
zum Einsatz, sogenannte PRNGs (PRNG = Pseudo Random Number Generator),
die allerdings Zahlenfolgen basierend auf einem deterministischen Algorithmus
beginnend von einem Startwert generieren, die bei Kenntnis des Algorithmus
durch Außenstehende
prinzipiell nachvollziehbar und somit nicht mehr zufällig sind.
-
Als
Pseudo-Zufallszahlen bezeichnet man Zahlenfolgen, die durch einen
deterministischen Algorithmus in einem Pseudo-Zufallszahlengenerator berechnet werden
und somit nicht zufällig
sind, aber für
hinreichend kurze Sequenzen zufällig
erscheinen. Da die Zufallszahlenberechnung deterministisch basierend
auf einem Startwert, der auch als Seed (= englisch Samen) bezeichnet
wird, erfolgt, ist eine so erzeugte Zufallszahlenfolge reproduzierbar,
wenn man einen bekannten Startwert voraussetzt. Die entstehende
Zahlenfolge ist dann bei Kenntnis des Algorithmus und des Startwerts
durch Außenstehende sogar
vorhersagbar.
-
Herkömmliche
echte Zufallszahlengeneratoren bedingen praktisch immer das Vorhandensein von
analogen Schaltungselementen, vor deren Implementierung in vornehmlich
digitalen Schaltungen jedoch oft zurückgeschreckt wird. Beispielsweise können mittels
analoger Bauelemente, durch Abtasten eines Rauschsignals, dessen
Amplitude zufällig ist,
echte Zufallszahlen erzeugt werden.
-
Weiter
verbreitet ist jedoch die Verwendung eines Pseudo-Zufallszahlengenerators,
der zwar keine optimale Zufallszahlenfolge liefert, jedoch rein
in Digitaltechnik implementierbar ist. Ein solcher Pseudo-Zufallszahlengenerator
benötigt
allerdings einen Startwert. Will man verhindern, dass eine prinzipielle Möglichkeit
des Rückrechnens
besteht, so darf dieser Startwert auch einem Hersteller nicht bekannt sein.
Dies bedingt, dass der Startwert des Pseudo-Zufallszahlengenerators auch im Chip
selbst generiert werden sollte, was wiederum nur auf der Basis eines
echten Zufallszahlengenerators möglich
ist, so dass die Implementierung eines Pseudo-Zufallszahlengenerators
mit einem bekannten Startwert das Problem der Rückrechenbarkeit nicht löst.
-
Da
die Implementierung eines analogen Bausteins, wie es zur Erzeugung
einer echten Zufallszahlenfolge notwendig wäre, beispielsweise auf einer
Smart Card/Chip Card nur sehr bedingt bzw. mit hohem Aufwand möglich ist,
stellt das Problem des Erzeugens einer nicht rückrechenbaren Zufallszahl auf
einer Smart Card oder einer sonstigen kryptographischen Vorrichtung
ein großes
technisches Problem dar.
-
Die
US 6714955 beschreibt einen
schnellen Zufallszahlengenerator, der sich aus einem echten Zufallszahlengenerator
und einem Pseudozufallszahlengenerator zusammensetzt. Dabei generiert der
echte Zufallszahlengenerator einen Eingangswert für den Pseudozufallszahlengenerator.
Der echte Zufallszahlengenerator basiert dabei auf so genannten
Latches, die durch eine entsprechende zeitliche Ansteuerung in einen
metastabilen Zustand gebracht werden, so dass deren Ausgänge nicht
mehr vorhersagbar sind. Die Ansteuerung erfolgt dabei bewusst zu
kritischen Zeitpunkten, d. h. je nach der relativen Lage der Signalflanken
an den Eingängen
eines Latches, gerät
dieses in einen metastabilen Zustand.
-
Die
US 20050004959 offenbart
einen Zufallszahlengenerator, der auf einer Kaskade von verschalteten
Flip-Flops beruht. Die Flip-Flops sind dabei durch Verzögerungsglieder
voneinander getrennt, so dass an den Eingängen der verwendeten D-Flip-Flops unterschiedliche
Verzögerungen
entstehen. Durch diese Verschaltung wird ein metastabiler Zustand
der Flip-Flops provoziert,
was durch einen gezielten Vergleich der Signale an Ein- und Ausgängen verifiziert
werden kann. Auch hier wird der Effekt ausgenutzt, dass durch zeitlich
manipulierte Signalflanken an den Eingängen eines D-Flip-Flops, dieses gezielt
in einen metastabilen Zustand gebracht werden kann, in dem der Ausgang
einen zufälligen
Wert annehmen kann.
-
In
der
US 20030061250 ist
ebenfalls ein Zufallsgenerator beschrieben, der auf metastabilen
Zuständen
von Flip-Flops beruht. Hier wird beispielsweise vorgeschlagen ein
RS-Flip-Flop zu
verwenden, dessen Ausgangssignal nach einem Einschaltvorgang nicht
definiert ist. Mit Hilfe eines RS-Flip-Flops kann eine Zufallsfolge von binären Nullen
und Einsen erzeugt werden, wenn der Eingang des Flip-Flops nach
einem Einschaltvorgang unbeschaltet bleibt, und das Flip-Flop immer
wieder zurückgesetzt
wird. Ein dem Flip-Flop nachgeschalteter Entzerrer sorgt dafür, dass
in der Zufallsfolge die gewünsch ten
Auftrittswahrscheinlichkeiten für eine
binäre
Null und eine binäre
Eins vorliegen.
-
Die
US 4571556 offenbart eine
Anordnung zur Erzeugung einer Pseudozufallsfolge. Die Pseudozufallsfolge
entsteht dabei durch Multiplikation einer Folge von zufälligen Impulsen
einer vorbestimmten Länge
mit einem periodischen Taktsignal. Die Folgenlänge wird dabei von Reglern
eingestellt. Mehrere solche Anordnungen können über verschiedene Logik-Gatter
miteinander verknüpft
werden, um beispielsweise die Folgenlänge zu erhöhen.
-
Zusammenfassung der Erfindung
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein verbessertes Konzept
zur Erzeugung eines Startwertes für einen Pseudozufallszahlengenerator zu
schaffen.
-
Diese
Aufgabe wird gelöst
durch eine Vorrichtung gemäß Anspruch
1, eine Schaltung gemäß Anspruch
9, einen Chip gemäß Anspruch
12 und ein Verfahren gemäß einem
der Ansprüche
15 oder 18.
-
Gemäß einem
Ausführungsbeispiel
umfasst die vorliegende Erfindung eine Vorrichtung zum Erzeugen
eines Startwertes für
einen Pseudo-Zufallszahlengenerator, mit einer Einrichtung zum instabilen Auslesen
eines Ausgabewertes auf einer Spei cherzelle und mit einer Einrichtung
zum Bestimmen des Startwertes basierend auf dem Ausgabewert der Speicherzelle.
-
Gemäß einem
weiteren Ausführungsbeispiel schafft
die vorliegende Erfindung ferner eine Schaltung mit einem Speicher,
der durch ein Instabil-Signal ansteuerbar ist, um instabil ausgelesen
zu werden. Ferner umfasst die Schaltung eine Steuerung mit einem
Ausgang für
das Instabil-Signal, einem Eingang für einen instabil aus dem Speicher
ausgelesenen Speicherinhalt und einem Ausgang für einen Startwert. Die Schaltung
umfasst ferner einen Pseudo-Zufallszahlengenerator, mit einem Eingang
für den Startwert
und einem Ausgang für
eine Pseudo-Zufallszahl,
die auf dem Startwert basiert.
-
Gemäß einem
weiteren Ausführungsbeispiel schafft
die vorliegende Erfindung einen Chip mit einem Speicher, der durch
ein Instabil-Signal ansteuerbar ist, um instabil ausgelesen zu werden
und einer Steuerung, mit einem Ausgang für das Instabil-Signal, einem
Eingang für
einen instabil aus dem Speicher ausgelesenen Speicherinhalt, und
einem Ausgang für
einen Startwert. Ferner umfasst der Chip einen Pseudo-Zufallszahlengenerator,
mit einem Eingang für
den Startwert und einem Ausgang für eine Pseudo-Zufallszahl,
die auf dem Startwert basiert.
-
Kurzbeschreibung der Figuren
-
Ausführungsbeispiele
der vorliegenden Erfindung werden im folgenden bezugnehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen
-
1 ein
prinzipielles Blockschaltbild einer Vorrichtung zum Erzeugen eines
Startwerts für
einen Pseudo-Zufallszahlengenerator
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
2 einen
beispielhaften Aufbau einer Speicherzelle;
-
3 ein
Ablaufdiagram eines Ausführungsbeispiels
eines Verfahrens dar;
-
4 ein
Ausführungsbeispiel
einer Schaltung;
-
5 ein
weiteres Ausführungsbeispiel
einer Schaltung; und
-
6 ein
Ausführungsbeispiel
eines Chips.
-
Detaillierte Beschreibung
-
Es
sei darauf hingewiesen, dass bei der nachfolgenden Figurenbeschreibung
gleiche Elemente in den Figuren gleiche Bezugszeichen aufweisen,
und eine wiederholte Beschreibung weggelassen wird.
-
Ein
prinzipielles Blockschaltbild eines Ausführungsbeispiels der vorliegenden
Erfindung ist in 1 dargestellt. 1 zeigt
eine Vorrichtung 100 zum Erzeugen eines Startwertes für einen
Pseudo-Zufallszahlengenerator, mit einer Einrichtung 110 zum
instabilen Auslesen eines Ausgabewertes aus einer Speicherzelle 115 und
mit einer Einrichtung 120 zum Bestimmen des Startwertes
basierend auf dem Ausgabewert der Speicherzelle 115.
-
Das
Ausführungsbeispiel
von 1 weist den Vorteil auf, dass der Startwert für einen
Pseudo-Zufallszahlengenerator unaufwändig und insbesondere ohne
eine Notwendigkeit analoger Bauelemente zufällig erzeugt werden kann, beispielsweise basierend
auf einem Speicherinhalt von Speicherzellen, die bewusst instabil
ausgelesen werden, so dass der ausgelesene Inhalt einer Zufallszahl
entspricht, und basierend auf der so erhaltenen Zufallszahl ein zufälliger Startwert
für einen
Pseudo-Zufallszahlengenerator
erzeugt werden kann. Da dieser Startwert nunmehr unbekannt ist,
wird somit ein Rückrechnen erheb lich
erschwert. Deutlicher wird das Erreichen dieses Vorteils aus folgender
Beschreibung.
-
In
einem Ausführungsbeispiel
ist die Speicherzelle 115, beispielsweise diejenige eines
EEPROMs (EEPROM = Electrical Erasible Programmable Read-Only Memory).
Diese Art von Speicherelementen kommen beispielsweise im Bereich
der Smart Cards/Chip Cards zum Einsatz. Das EEPROM kann in MOS-Technik
implementiert sein (MOS = Metall Oxid Schicht). Ein solcher EEPROM-Speicherbaustein
ist exemplarisch in 2 dargestellt. 2 zeigt
insbesondere exemplarisch zwei MOSFETs (FET = FeldEffektTransistor) 210 und 220,
die zwei Speicherzellen des EEPROMs bilden, um jeweils den Wert
eines unterschiedlichen Bits zu speichern. Die beiden MOSFETs haben
sogenannte Floating Gates 230 und 240. Ein Floating
Gate wird durch eine Metalloxidschicht von dem Steuergate und dem
Kanal isoliert. Durch Ladungsinjektion auf das Floating Gate wird
der FET hochohmig. Dies wird in 2 durch
die Schraffierung des Floating Gates 240 angedeutet. In 2 ist
exemplarisch der MOSFET 220 geladen, wohingegen der MOSFET 210 ungeladen ist.
Sie speichern in diesem exemplarisch gezeigten Fall folglich unterschiedliche
Bitwerte. Die EEPROM Speicherzellen können durch einen hohen Spannungsimpuls
zwischen einer Leitung 245 und der Leitung 260 bzw. 265,
der die Ladung der Sperrschicht in den Ursprungszustand versetzt,
gelöscht
werden, wobei die Leitung 245 dabei mit Elektroden verbunden
ist, die nahe der Floating Gates angeordnet sind.
-
Der
EEPROM von 2 ist beispielsweise mit einem
Leseverstärker
(nicht gezeigt) ausgestattet. Dieser Leseverstärker ist im wesentlichen eine Art
Komparator, welcher das Signal, nämlich Spannung oder Strom,
aus dem Zellenfeld, nämlich
den Strom oder die Spannung über
den jeweiligen MOSFET, mit einer Lesereferenz vergleicht. Wenn die
Lesereferenz überschritten
wird, so ist der Speicher innerhalb der Zelle als Zustand bzw. Bitwert
A zu bewerten, falls nicht, dann als Zustand B. Bezugnehmend auf 2 würde beispielsweise
bei An legen einer Spannungsdifferenz zwischen einem Leitungspaar
von Leitungen 250 und 260, die mit Source bzw. Drain
des MOSFET 210 verbunden sind, ein Strom durch den MOSFET 210 fließen, wohingegen
dies bei Anlegen einer Spannungsdifferenz zwischen ein Paar von
Leitungen 255 und 265, die mit Source bzw. Drain
der MOSFET 220 verbunden sind, nicht der Fall wäre. Die
Stromsignale werden dem Leseverstärker oder Komparator zugeführt, der
dann den Strömen
durch Vergleich mit einer Lesereferenz die entsprechenden Speicherzellenzustände zuordnet. Daraus
ergibt sich, dass für
die Informationsauswertung die Lesereferenz von entscheidender Bedeutung
ist. Im Normalbetrieb einer Speicherzelle ist hierbei das Bestreben,
die Lesereferenz so zu wählen,
dass auch gealterte Zellen, bei denen die durch die Ladungsinjektion
auf dem Floating Gate bewirkte Ladungsmenge geringer ist, noch einen
definierten Zustand erzeugen. Das EEPROM von 2 bietet nun
die Möglichkeit,
die Lesereferenz zu variieren, so dass mit „verschärften" Lesereferenzen die Zellinformation
bewertet wird und der Leseverstärker
ein „instabiles
Auslesen" durchführt, um
als die Einrichtung 110 zu fungieren, in dem Sinne, dass
der Leseverstärker
mit mehr und mehr gegenüber
dem Normalzustand veränderter
Lesereferenz, Zellen mit einem bestimmten Bitwert fälschlicherweise
dem anderen Bitwert zuordnet. Wie es nun im folgenden beschrieben
wird, nutzt die Einrichtung 120 die Veränderbarkeit der Lesereferenz
so aus, dass sie gerade in einem instabilen Bereich liegt, d. h.
einige Zellen die den Zustand A enthalten als A ausgelesen werden und
andere Zellen, die den Zustand A enthalten als B interpretiert werden,
um einen Startwert aus den instabil ausgelesenen Zuständen zu
bestimmen. Gemäß nachfolgend
beschriebener Ausführungsbeispiele
wird die geeignete Lesereferenz herausgefunden, indem die Lesereferenz
iterativ variiert und sichergestellt wird, dass der instabile Zustand
möglichst
gut erreicht wird.
-
Der
Ablauf einer solchen iterativen Näherung ist in 3 in
einem Ablaufdiagramm beispielhaft dargestellt. Ausgehend von einem
Referenzsignal für einen
stabilen Bereich bzw. für
ein stabiles Auslesen 310 wird nun in einem Schritt 320 durch
die Einrichtung 120 das Referenzsignal nachgeregelt und
ein Kriterium, das ein Maß für die erreichte
Instabilität
der Speicherzelle 115 darstellt, in einem Schritt 330 überprüft. Beispielsweise
könnte
in einem Ausführungsbeispiel
ein bestimmter Speicherbereich aus mehreren Speicherzellen periodisch
ausgelesen werden, währenddessen
die Lesereferenz für
diesen Speicherbereich iterativ variiert wird. Ein Kriterium für die erreichte
Instabilität
wäre dann
beispielsweise, bzw. das Ziel der Iteration wäre dann zum Beispiel erreicht,
wenn möglichst
die Hälfte
der Informationen korrekt und die andere Hälfte falsch ausgelesen werden,
wobei die Speicherzellen des Speicherbereichs beispielsweise zuvor
alle auf einen vorbestimmten bekannten Bitwert initialisiert wurden.
Der Startwert wird dann unter Verwendung dieses Referenzwertes im
Schritt 340 gemäß 3 bestimmt,
nämlich
auf der Basis der mit dem iterativ bestimmten Referenzwert gewonnenen
instabil ausgelesenen Zellenzustände.
Der Startwert für
den Pseudo-Zufallszahlengenerator
kann den instabil ausgelesenen Zellenzuständen unmittelbar entsprechen
oder kann dann aus diesen ausgelesenen Bits beispielsweise mittels Bildung
des Hamming-Gewichtes,
durch Hash-Algorithmen oder auch durch komprimierende oder selektierende
Funktionen gewonnen werden. Komprimierende Funktionen bilden beispielsweise
eine Anzahl ausgelesener Speicherzelleninhalte bzw. Bits auf eine
entsprechend geringere Anzahl von Speicherzelleninhalten oder Bits
ab. Selektierende Funktionen selektieren beispielsweise aus einem
entsprechend ausgelesenen Datenwort eine Anzahl von Ziffern, um
daraus ein neues Datenwort zu bilden.
-
In
einem weiteren Ausführungsbeispiel
kann alternativ zur Anpassung der Lesereferenz, auch die Zellspannung über die
Leitungspaare 250/260 bzw. 255/265,
welche über
Pumpen generiert werden können,
bzw. der Zellstrom, variiert werden, und so die Speicherzellen in
einem instabilen Zustand ausgelesen werden. Dies ist beispielsweise
auch bei UCP (UCP = Uniform Channel Programming) Speichern möglich. UCP
Speicher kommen ebenfalls häufig
in Smart Cards/Chip Cards vor. Zusätzlich kann ein UCP-Speicher
eine iterative Variation einer Lesereferenz zulassen, so dass ein
instabiler Auslesezustand alternativ oder zusätzlich zur Zellspannungsvariation durch
die Lesereferenzvariation erreichbar ist. Zusätzlich kann der UCP-Speicher
einen sogenannten Disturb-Counter aufweisen, über den Zellbereiche identifiziert
werden können,
welche aufgrund von Programmierungen in der Nachbarschaft bereits
instabiler geworden sind, was durch die Einrichtung 120 dazu
verwendet werden kann, um ältere
Zellen vorab auszuwählen,
die zur Startwerterzeugung herangezogen werden.
-
In
einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung könnte
ein Programm, welches auf einer Smart Card/Chip Card läuft, zunächst einen
EEPROM-Speicherbereich suchen, in dem der Disturb-Counter einen
hohen Wert enthält
und dann bei periodischem Auslesen dieses Bereiches die Lesereferenz
iterativ variieren, wie es beispielhaft in 3 dargestellt
ist.
-
4 zeigt
ein weiteres Ausführungsbeispiel der
vorliegenden Erfindung. 4 zeigt eine Schaltung 400 mit
einem Speicher 410, der durch ein Instabil-Signal 415 ansteuerbar
ist, um instabil ausgelesen zu werden. Ferner weist die Schaltung
eine Steuerung 420 mit einem Ausgang für das Instabil-Signal 415,
einem Eingang für
einen instabil aus dem Speicher ausgelesenen Speicherinhalt 425,
und einen Ausgang für
einen Startwert auf. Die Schaltung 400 weist ferner einen
Pseudo-Zufallszahlengenerator 430 auf, mit einem Eingang 435 für den Startwert
und einem Ausgang für
eine Pseudo-Zufallszahl
die auf dem Startwert basiert. Der Speicher 410, der in 4 dargestellt
ist, weist ferner einen Leseverstärker 440 und Speicherzellen 450 auf.
Die Speicherzellen 450 sind beispielsweise EEPROM-Speicherzellen,
wie sie exemplarisch in 2 erläutert wurden. Im Ausführungsbeispiel
dargestellt in 4, ist am Leseverstärker 440 ange deutet,
dass die Lesereferenz eines Komparators basierend auf dem Instabil-Signal 415 angepasst
wird. Die Steuerung 420 könnte demzufolge einen iterativen
Anpassungs-Algorithmus, wie er exemplarisch im Ablaufdiagramm in 3 dargestellt
und erläutert
wurde, durchführen.
In 4 ist durch gestrichelte Linien angedeutet, dass
gemäß dem Ausführungsbeispiel
von 4 der Leseverstärker als die Einrichtung 110 zum
instabilen Auslesen eines Ausgabewertes fungiert und die Steuerung 420 als
die Einrichtung 120 zum Bestimmen des Startwertes basierend
auf dem Ausgabewert der Speicherzelle 115.
-
5 zeigt
ein weiteres Ausführungsbeispiel der
vorliegenden Erfindung. In 5 sind die
gleichen Komponenten wie bereits anhand von 4 besprochen
dargestellt, lediglich die Verschaltung innerhalb des Speichers 410 ist
unterschiedlich und soll andeuten, dass in diesem Ausführungsbeispiel über das
Instabil-Signal 415 das Versorgungssignal, also die Zellspannung
oder der Zellstrom, angepasst werden, um den instabilen Bereich
der Speicherzellen 450 anzusteuern. Wie bereits anhand
von 4 erläutert,
kann die Steuerung 420, über einen iterativen Annäherungsprozess,
gemäß 3,
nun einen instabilen Bereich, bzw. ein instabiles Auslesen der Ausgabewerte
der Speicherzellen 450 durchführen. Eine Kombination der
Ausführungsbeispiele
von 4 und 5 wäre natürlich wie bereits erwähnt ebenfalls
denkbar.
-
6 illustriert
ein weiteres Ausführungsbeispiel
der vorliegenden Erfindung. 6 zeigt
einen Chip 600, auf dem die bereits an den 4 und 5 besprochenen
Komponenten implementiert bzw. integriert sind. Der Chip 600 weist
einen Speicher 410 auf, mit einem Leseverstärker 440 und Speicherzellen 450,
der durch ein Instabil-Signal 415 ansteuerbar ist, um stabil
ausgelesen zu werden. Der Chip 600 weist ferner eine Steuerung 420 auf,
mit einem Ausgang für
das Instabil-Signal 415,
einem Eingang für
einen instabil aus dem Speicher 410 ausgelesenen Speicherinhalt
und einem Ausgang für
einen Startwert. Ferner weist der Chip einen Pseudo- Zufallszahlengenerator 430 auf,
mit einem Eingang 435 für
den Startwert und einem Ausgang für eine Pseudo-Zufallszahl,
die auf dem Startwert basiert. Ferner sind in 6 durch
gestrichelte Linien nochmals die Einrichtung 110 zum instabilen
Auslesen eines Ausgabewertes aus einer Speicherzelle 115 und
die Einrichtung 120 zum Bestimmen des Startwertes basierend
auf dem Ausgabewert der Speicherzelle 115 eingezeichnet.
-
Ein
Vorteil von Ausführungsbeispielen
der vorliegenden Erfindung ist, dass der Startwert einerseits im
NVM für
zukünftige
Nutzungen gespeichert werden kann, andererseits aber auch das Verfahren jederzeit
erneut durchgeführt
werden kann. Hierdurch ergeben sich vielfältige Möglichkeiten. Beispielsweise
kann der Startwert bei der Produktion einmalig generiert werden,
um dann zukünftig
in einem NVM-Speicher gespeichert zu werden, alternativ könnte auf
die beschriebene Art und Weise der Startwert nach einem Neustart
des Chips oder der Schaltung immer wieder neu generiert werden.
In einem weiteren Ausführungsbeispiel
würde der
Startwert einmalig generiert werden, im NVM-Speicher abgelegt werden,
und bei Aufruf des Pseudo-Zufallszahlengenerators entsprechend verwendet
werden. Ein Ausgabewert des Pseudo-Zufallszahlengenerators könnte dann
an die Stelle des Startwertes in einem zusätzlichen oder auch im gleichen
Speicher in der Schaltung oder auf dem Chip abgelegt werden, so
dass für
den nächsten
Aufruf des Pseudo-Zufallszahlengenerators
respektive für
den nächsten
Neustart der Schaltung oder des Chips ein anderer Startwert zur
Verfügung
steht.
-
Da
NVM-Speicher Alterungsprozessen unterliegen, besteht ein weiterer
Vorteil von Ausführungsbeispielen
der vorliegenden Erfindung in einer sehr geringen Belastung für den NVM-Speicher, welcher
sonst immer neue Startwerte bzw. Zwischenwerte abspeichern müsste. Das
Anwendungsbeispiel des einmaligen Bestimmens des Startwertes und Speichern
des Startwertes in einem NVM-Speicher für zukünftige Verwendung bringt also
den Vorteil, dass durch das beschriebene Verfahren bzw. die beschriebene
Schaltung, Vorrichtung oder Chip, Alterungsprozesse des NVM-Speichers
aufgrund des Generierens von Startwerten ausbleiben, da dies nur einmalig
geschieht und somit nur einen Schreibzyklus nach sich zieht.
-
Ein
weiterer Vorteil der Anwendungsbeispiele der vorliegenden Erfindung
liegt darin, dass NVM-Speicher zumeist nur eine begrenzte Schreibzyklenzahl
aufweisen und bei dem hier beschriebenen Verfahren ein Startwert
durch das Auslesen generiert wird, d. h. dass durch das Generieren
des Startwerts keine Abnutzung des NVM-Speichers wie beim Schreiben
auftreten.
-
Bei
Ausführungsbeispielen
der vorliegenden Erfindung wird durch eine Vorrichtung bzw. ein
Verfahren unter Ausnutzung eines instabilen Auslesens eines NVM-Speichers
durch temporäre
Veränderung der
Lesereferenz respektive der Zellenspannung/Stroms, ein Startwert
für einen
Pseudo-Zufallszahlengenerator
erzeugt. Der beschriebene Effekt wird kontrolliert eingesetzt und
die gelesenen Daten direkt, über
ein Hamming-Gewicht/Abstand, über Hash-Algorithmen
oder über
komprimierende bzw. selektierende Funktionen in einen Startwert
für einen Pseudo-Zufallszahlengenerator
umgewandelt. Zusätzliche
Vorteile vorliegender Ausführungsbeispiele liegen
darin, dass herkömmliche
Security-Controller mit einer CPU (CPU = Central Processing Unit),
sowie verschiedenen Peripherie-Modulen, unter anderem auch NVM-Modulen
(EEPROM/Flash) ausgerüstet
sind. Da jedoch keine echten Zufallszahlengeneratoren vorhanden
sind, bieten Ausführungsbeispiele
der vorliegenden Erfindung die Möglichkeit
einen dem Hersteller unbekannten Startwert für einen Pseudo-Zufallszahlengenerator
zu generieren. Alternativ beim Start eines Programmes oder auch
einmalig bei der Produktion kann nun der NVM-Speicher mit einem
Ausführungsbeispiel
eines erfindungsgemäßen Verfahrens
ausgelesen werden, wobei eine Lesereferenz oder eine Zellspannung/Strom
iterativ variiert werden kann, währenddessen
ein Speicherbereich periodisch ausgelesen wird. Ein Disturb- Counter kann als
Indikation für
einen geeigneten Speicherbereich herangezogen werden und durch optionales
Nacharbeiten, wie beispielsweise durch Hash-Algorithmen, durch komprimierende
oder selektierende Funktionen, bzw. durch Bestimmen von Hamming-Gewichten
oder Hamming-Abständen
zwischen unterschiedlichen Speicherbereichen, können dem Hersteller unbekannte
Startwerte für
Pseudo-Zufallszahlengeneratoren generiert werden.
-
Ausführungsbeispiele
der vorliegenden Erfindung können
in Smart Cards/Chip Cards integriert werden und generell das Problem
der Rückrechenbarkeit
von Pseudo-Zufallszahlenfolgen lösen.
Security-Controller sind mit einer CPU sowie verschiedenen Peripherie-Modulen,
unter anderem auch einem NVM-Modul (EEPROM/Flash) ausgerüstet. Dies
bietet nun in vielen Anwendungsbereichen die Möglichkeit, bei Start eines
Programmes oder einmal bei der Produktion das NVM-Modul mit dem
beschriebenen Verfahren auszulesen, d. h. beispielsweise iterativ
einen instabilen Lesezustand zu ermitteln, um dann einen Startwert
für einen
Pseudo-Zufallszahlengenerator zu erzeugen.
-
Prinzipiell
können
in Ausführungsbeispielen alle
denkbaren Speichertypen zum Einsatz kommen. Neben NVM-Speichern
sind beispielsweise auch RAM-Speicher (RAM = Random Access Memory) denkbar,
bei denen zum Beispiel durch Erhöhen
des Refreshzyklus, bzw. das Auslesen mit einem längeren Abstand zum letzten
Refreshzeitpunkt ein instabiles Auslesen erreicht werden kann. Weiterhin
kann in Ausführungsbeispielen
ein einmalig programmierbarer ROM-Speicher vorgesehen sein (ROM
= Read Only Memory), um den Startwert zu speichern, wobei die Programmierung
beispielsweise bei der Herstellung geschehen kann. Alternativ kann
auch ein Speicher vorgesehen sein, bzw. der gleiche Speicher, der auch
zu Erzeugung der Startwertes herangezogen wird, kann auch dazu dienen,
um den Startwert zu speichern bzw. auch zwischenzuspeichern, falls
erneut zu einen späteren
Zeitpunkt, z. B. beim nächsten
Einschalten ein Startwert generiert wird. Ferner sind die hier genannten
Ausführungsbeispiele
nicht auf Smart Cards/Chip Cards beschränkt und können allgemein überall dort
eingesetzt werden, wo Startwerte für Pseudo-Zufallszahlengeneratoren
erzeugt werden und entsprechende Speicherbausteine vorhanden sind.
-
Insbesondere
wird darauf hingewiesen, dass abhängig von den Gegebenheiten
das erfindungsgemäße Schema
auch in Software implementiert sein kann. Die Implementierung kann
auf einem digitalen Speichermedium, insbesondere einer Diskette
oder einer CD mit elektronisch auslesbaren Steuersignalen erfolgen,
die so mit einem programmierbaren Computersystem und/oder Mikrocontroller
zusammenwirken können,
dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht
die Erfindung somit auch in einem Computerprogrammprodukt mit auf
einem maschinenlesbaren Träger
gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens,
wenn das Computerprogrammprodukt auf einem Rechner und/oder Mikrocontroller abläuft. In
anderen Worten ausgedrückt
kann die Erfindung somit als ein Computerprogramm mit einem Programmcode
zur Durchführung
des Verfahrens realisiert werden, wenn das Computerprogramm auf einem
Computer und/oder Mikrocontroller abläuft.
-
- 100
- Vorrichtung
zum Erzeugen eines Startwerts
- 110
- Einrichtung
zum instabilen Auslesen
- 115
- Speicherzelle
- 120
- Einrichtung
zum Bestimmen des Startwerts
- 210
- MOSFET
- 220
- MOSFET
- 230
- Floating
Gate
- 240
- Floating
Gate
- 245
- Gateanschluss
- 250
- Versorgungsleitung
Source
- 255
- Versorgungsleitung
Drain
- 260
- Versorgungsleitung
Source
- 265
- Versorgungsleitung
Drain
- 310
- Referenzsignal
für stabilen
Bereich
- 320
- Nachregeln
des Referenzsignals
- 330
- Kriterium
für Instabilität
- 340
- Bestimmen
des Startwertes
- 400
- Schaltung
- 410
- Speicher
- 415
- Instabil-Signal
- 420
- Steuerung
- 425
- Eingang
für instabil
ausgelesenen Speicherinhalt
- 430
- Pseudo-Zufallszahlengenerator
- 435
- Eingang
für den
Startwert
- 440
- Leseverstärker
- 450
- Speicherzellen
- 600
- Chip