PatentDe  


Dokumentenidentifikation DE102006032419B3 08.03.2007
Titel Verfahren Anordnung, Chip und Vorrichtung zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator und Computerprogramm
Anmelder Infineon Technologies AG, 81669 München, DE
Erfinder Laackmann, Peter, Dr., 81541 München, DE;
Janke, Marcus, 81541 München, DE
Vertreter Schoppe, Zimmermann, Stöckeler & Zinkler, 82049 Pullach
DE-Anmeldedatum 13.07.2006
DE-Aktenzeichen 102006032419
Veröffentlichungstag der Patenterteilung 08.03.2007
Veröffentlichungstag im Patentblatt 08.03.2007
IPC-Hauptklasse G06F 7/58(2006.01)A, F, I, 20060713, B, H, DE
IPC-Nebenklasse G07C 15/00(2006.01)A, L, I, 20060713, B, H, DE   
Zusammenfassung Vorrichtung (100) und Verfahren zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator, mit einer Oszillationseinrichtung (110) zum Erzeugen eines Oszillatorsignals; und einer Einrichtung (120) zum Erzeugen des Startwertes basierend auf dem Oszillatorsignal zumindest während eines Teils eines Einschwingvorgangs der Oszillationseinrichtung (110).

Beschreibung[de]
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 Smartcards verwendet wird.

Eine Aufabe, 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 aussehen. Da die Zufallszahlenberechnung deterministisch basierend auf einem Startwert, der auch als Seed (= engl. 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 Startwertes 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önnte mittels analoger Bauelemente durch Abtasten eines Rauschsignals, dessen Amplitude zufällig ist, eine echte Zufallszahl 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 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 er 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 DE 690 25 633 T2 schafft eine integrierte Datenverarbeitungsschaltung, die eine Datenverarbeitungsschaltungsanordnung mit einem Systembus und einem Systemtakt sowie einen Zufallszahlengenerator aufweist, wobei der Zufallszahlengenerator eine Oszillatoreinrichtung umfasst, die dazu dient, vom Systemtakt unabhängige Taktimpulssignale zu erzeugen, ferner eine Mehrzahl von Zählern umfasst, die dazu dienen, durch Zählen der Taktimpulssignale Zahlen zu erzeugen, und ferner eine Ausleseeinrichtung aufweist, die auf ein Lesesignal von der Datenverarbeitungsschaltungsanordnung anspricht, um die Inhalte der Zähler direkt dem Systembus zuzuführen. Vorzugsweise weist dabei die Oszillatoreinrichtung eine Mehrzahl unabhängiger Oszillatoren auf. Zur Erzeugung der Zufallszahlen werden die von den unabhängigen Oszillatoren bereitgestellten Signale Zähleinrichtungen zugeführt, wobei die Dauer des Zählintervalls von außen über ein Lesesignal vorgegeben wird, und die Zählgeschwindigkeit der Oszillatoren unabhängig voneinander und unabhängig vom Systemtakt ist. Ein Nachteil der erfindungsgemäßen Datenverarbeitungsschaltung ist, dass mehrere Oszillatoren benötigt werden, sowie dass ein von außen vorgegebenes Zählintervall die Unabhängigkeit der so entstehenden Zufallszahlen maßgeblich beeinflusst.

Die DE 10 2005 009 190 B3 beschreibt ein Verfahren zur Erzeugung einer Datenbitfolge durch Abtasten eines digitalisierten Rauschsignals, welches mittels nichtdeterministischer, zeitlich variabler Triggerimpulse derart abgetastet wird, dass der Grad der Abhängigkeit von Rauschsignal und Triggerpulsen als eine oder mehrere statistischer Eigenschaften der ausgegebenen Datenbitfolge in Erscheinung treten. Es wird ferner eine Anordnung beschrieben mit einer Rauschquelle zur Erzeugung eines digitalisierten Rauschsignals, welches einem flankengesteuerten Speicherelement zugeführt wird, dass wiederum durch einen Triggerpulsgenerator ansteuerbar ist und das einen Ausgang für eine Datenbitfolge aufweist. Das vorgeschlagene Verfahren und die vorgeschlagene Anordnung kombinieren eine Rauschquelle, einen Abtaster und einen Pulsgenerator derart, dass eine kontrollierte Ankopplung zweier Signale erreicht wird. Anstatt eines isolierten starren Generatorsystems werden in der vorgeschlagenen Erfindung kontrollierte Ankopplungen des Probanden oder beliebiger anderer Umweltsignale an einen Zufallsdatenstrom ausdrücklich zugelassen. Als Produkt entsteht eine nicht-triviale Zufallsbitfolge, die gewisse erwünschte statistische Eigenschaften aufweist und transportiert, welche bei geeigneter Auswertung dazu verwendet werden, um Geräte und Prozesse im Grenzbereich der Kommunikation zwischen Maschinen und lebenden Systemen zu steuern. Gegenstand der Ausführung, ist hier jedoch nicht das aufwandsgünstige Erzeugen einer Zufallszahl, sondern vielmehr das Verkoppeln der statistischen Eigenschaften eines technisch erzeugten Zufallssignals, mit den statistischen Eigenschaften eines an einem Probanden erfassten vorzugsweise physiologischen Signals.

Zusammenfassung

Gemäß einem Ausführungsbeispiel umfasst die vorliegende Erfindung eine Vorrichtung zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator, mit einer Oszillationseinrichtung zum Erzeugen eines Oszillatorsignals, und einer Einrichtung zum Erzeugen des Startwertes basierend auf dem Oszillatorsignal, zumindest während eines Teils eines Einschwingvorgangs der Oszillationseinrichtung.

Gemäß einem Ausführungsbeispiel schafft die vorliegende Erfindung ferner eine Schaltung, mit einem Oszillator und mit einem Oszillatorausgang, einem Periodenzähler mit einem Eingang, der mit dem Oszillatorausgang gekoppelt ist, und einem Periodenzählerausgang. Ferner umfasst die Schaltung einen Pseudo-Zufallszahlengenerator mit einem Eingang, der mit dem Periodenzählerausgang gekoppelt ist.

Die vorliegende Erfindung schafft ferner einen Chip, mit einem Oszillator und mit einem Oszillatorausgang, einem Periodenzähler mit einem Eingang, der mit dem Oszillatorausgang gekoppelt ist, einem Intervallvorgabeeingang und einem Periodenzählerausgang. Ferner umfasst der Chip einen Intervallvorgeber mit einem Intervallvorgabeausgang, der mit dem Intervallvorgabeeingang gekoppelt ist und einem Intervallsteuereingang, der mit einem externen Eingang gekoppelt ist.

Ferner schafft die vorliegende Erfindung ein Verfahren zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator, mit einem Schritt des Erzeugens eines Oszillatorsignals und einem Schritt des Bestimmens des Startwertes basierend auf dem Oszillatorsignal zumindest während eines Teils eines Einschwingvorgangs des Oszillatorsignals.

Somit weisen Ausführungsbeispiele der vorliegenden Erfindung den Vorteil auf, dass der Startwert für einen Pseudo-Zufallszahlengenerator unaufwändig und insbesondere ohne eine Notwendigkeit zusätzlicher oder eigens vorgesehener analoger Bauelemente zufällig erzeugt werden kann, beispielsweise basierend auf einer Anzahl von Schwingungen während eines Anlaufvorgangs eines Oszillators. Da die Anlaufphase eines Oszillators von vielen Parametern abhängt, wie beispielsweise der Umgebungstemperatur, der Versorgungsspannung, Herstellungsvariationen etc., kann ein Startwert generiert werden, der unbekannt ist und somit ein Rückrechnen erheblich erschwert wird.

Kurzbeschreibung der Figuren

1a) zeigt ein prinzipielles Blockschaltbild einer Startwerterzeugungsvorrichtung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;

1b) zeigt ein prinzipielles Blockschaltbild gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung;

2a) zeigt ein prinzipielles Blockschaltbild einer Schaltung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;

2b) zeigt ein prinzipielles Blockschaltbild einer Schaltung gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung;

2c) zeigt ein prinzipielles Blockschaltbild einer Schaltung gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung;

3 zeigt ein prinzipielles Blockschaltbild eines Chips gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und

4 zeigt prinzipielle Signalverläufe eines Oszillators, eines Intervallvorgabesignals und eines Algorithmus zur Berechnung eines Startwertes gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.

Detaillierte Beschreibung

Es sei darauf hingewiesen, dass bei der nachfolgenden Figurenbeschreibung gleiche Elemente in den Figuren gleiche Bezugzeichen aufweisen, und eine wiederholte Beschreibung weggelassen wird.

Ein prinzipielles Blockschaltbild eines Ausführungsbeispiels der vorliegenden Erfindung ist in 1a) dargestellt. 1a) zeigt eine Vorrichtung 100 zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator. 1a) zeigt ferner eine Oszillationseinrichtung 110 zum Erzeugen eines Oszillatorsignals, der eine Einrichtung 120 zum Erzeugen des Startwertes nachgeschaltet ist. Der Startwert wird dabei basierend auf dem Oszillatorsignal zumindest während eines Teils eines Einschwingvorgangs der Oszillationseinrichtung erzeugt.

Die Oszillationseinrichtung 110 kann beispielsweise durch einen VCO (Voltage Controlled Oscillator) oder ICO (Current Controlled Oscillator) realisiert werden, wie er in modernen Smart-Cards als interner schneller Takterzeuger beispielsweise zum Einsatz kommt, um eine schnelle Verarbeitung von Programmen zu ermöglichen. Beim Einschalten des Bausteins, also beim Bestromen der Smart-Card, läuft die Oszillationseinrichtung 110, bzw. der VCO oder ICO, langsam an, d. h. sie schwingt nicht direkt mit der gewünschten Taktfrequenz, sondern schwingt zunächst langsamer, wobei sich die Frequenz der Schwingungen bis zur gewünschten Taktfrequenz steigert. Der Verlauf der Anlaufphase hängt dabei von vielen individuellen Parametern ab, sowie von Herstellungsvariationen. Einflussfaktoren auf die Anlaufcharakteristik eines solchen Bausteins sind Umgebungsparameter, wie beispielsweise eine Versorgungsspannung, die Temperatur usw. Wird der Hochlauf über einen Zeitraum beobachtet, so kann beispielsweise durch Zählen der erzeugten Takte ein nicht-vorhersagbarer Wert erzeugt werden, der dann als Startwert für einen Pseudo-Zufallszahlengenerator verwendet werden kann. Alternativ kann der so ermittelte Wert auch als Eingabe für eine mathematische Operation dienen, die beispielsweise den Wertebereich möglicher Startwerte einschränkt, wie sie z.B. durch eine Modulo-Division realisiert werden könnte.

1b) illustriert ein weiteres Ausführungsbeispiel der vorliegenden Erfindung. Die Einrichtung 120 zum Erzeugen der Startwertes weist hierbei einen optionalen Steuereingang 122 auf, über den ein Zählintervall vorgegeben werden kann. Im Ausführungsbeispiel in 1b) weist die Vorrichtung 100 ferner eine Einrichtung zum Speichern 130 auf, die der Einrichtung 120 zum Erzeugen des Startwertes nachgeschaltet ist. Beispielsweise könnte die Einrichtung 120 zum Erzeugen des Startwertes dazu ausgelegt sein, das Zählintervall nach dem Einschalten zu beginnen und nach einer Signalflanke am Steuereingang 122 zu beenden. Die Signalflanke zum Beenden des Zählintervalls könnte beispielsweise von außen, d.h. von einer externen Quelle vorgegeben werden. Beispielsweise im Falle von Smartcards könnte diese Signalflanke durch ein externes Reset-Signal, das von einem Terminal an den Steuereingang 122 angekoppelt wird, realisiert werden, wobei sich prinzipiell die Möglichkeit bietet, die Dauer des Zählintervalls durch eine weitere Zufallsgröße, nämlich die Dauer der Zählintervalls, zu beeinflussen.

Im Ausführungsbeispiel, das in 1b) dargestellt ist, weist die Vorrichtung 100 zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator ferner eine Einrichtung 130 zum Speichern auf. Die Einrichtung 130 zum Speichern speichert dabei den Startwert, der je nach Anwendungsbereich beispielsweise nur einmalig bei der Produktion der Vorrichtung 100 erzeugt wird, und fortan von der Einrichtung 130 zum Speichern abgerufen werden kann, wobei die Einrichtung 130 zum Speichern dann einen nicht-flüchtigen Speicher aufweist, oder auch jeweils bei einem Einschalten neu erzeugt wird und für die Einschaltdauer weiter verwendet wird. In einem weiteren Ausführungsbeispiel wird der Startwert erfindungsgemäß einmalig erzeugt und in der Einrichtung 130 zum Speichern gespeichert. Bei einem Aufruf des Pseudo-Zufallszahlengenerators liefert dieser einen neuen Startwert, der dann in der Einrichtung 130 gespeichert wird, um bei einem nächsten Einschalten oder Aufruf des Pseudo-Zufallszahlengenerators verwendet zu werden. So kann in einem erfindungsgemäßen Ausführungsbeispiel eine Wiederholung einer Zufallszahlenfolge nach jedem Einschalten verhindert werden. Die Einrichtung 130 weist in diesem Ausführungsbeispiel ebenfalls einen nicht-flüchtigen Speicher auf. Ein nicht-flüchtiger Speicher kann beispielsweise durch Fuse-Strukturen oder sogenannte Soft-Fuses realisiert werden.

2a) zeigt ein weiteres Ausführungsbeispiel der vorliegenden Erfindung. Die erfindungsgemäßen Komponenten sind gemäß den 1a) und 1b) hier ebenfalls eingezeichnet. In 2a) ist eine Schaltung dargestellt, die einen Oszillator 210 mit einem Ausgang, einen Periodenzähler 220, der dem Oszillator 210 nachgeschaltet ist, mit einem Eingang und einem Ausgang und einen Pseudo-Zufallszahlengenerator 230 mit einem Eingang, aufweist. Der Ausgang des Oszillators 210 ist mit dem Eingang der Periodenzählers 220 gekoppelt, der Ausgang des Periodenzählers 220 ist wiederum mit dem Eingang des Pseudo-Zufallszahlengenerators gekoppelt.

Während einer Anlaufphase des Oszillators 210 ermittelt der Periodenzähler 220 eine Anzahl von Schwingungsperioden basierend auf einem zeitlichen Zählintervall. Das Zählintervall kann beispielsweise beim Einschalten des Periodenzählers beginnen und nach einem fest vorgegebenen Zeitraum enden. Der Periodenzähler kann optional über einen Steueranschluss 222 verfügen, über den ein Zählintervall vorgegeben werden kann, analog zur obigen Beschreibung. Auch hier könnte beispielsweise ein externes Reset-Signal zur Beendigung des Zählintervalls dienen, womit wiederum die Möglichkeit geschaffen wird, durch Variation der Dauer des Zählintervalls eine zusätzliche variable Komponente in den Prozess einfließen zu lassen. Das Reset-Signal wird dabei von einer externen Instanz, wie beispielsweise von einem Terminal, bereitgestellt. Analog zum obigen Ausführungsbeispiel, kann der Periodenzähler den so ermittelten Startwert durch mathematische Manipulation auf einen Wertebereich abbilden oder einschränken, bevor der endgültige Startwert an den Pseudo-Zufallszahlengenerator 230 weitergegeben wird. Beispielsweise könnte der Periodenzähler ein Überlaufregister aufweisen, und so inhärent eine Modulo-Operation auf der Basis der Anzahl der gezählten Perioden in dem Oszillatorsignal durchführen.

2b) zeigt ein weiteres Ausführungsbeispiel der vorliegenden Erfindung. Die Oszillationseinrichtung 110 und die Einrichtung 120 zum Erzeugen des Startwertes sind gemäß der 1a) und 1b) ebenfalls eingezeichnet. Die Oszillationseinrichtung 110 weist hier einen Oszillator 210 mit einem Ausgang 212 auf, der beispielsweise durch einen VCO realisiert sein könnte. Die Einrichtung 120 zum Erzeugen des Startwertes umfasst in 2b) drei Komponenten, einen Periodenzähler 220 mit einem Eingang 221, der mit dem Ausgang 212 des Oszillators 210 gekoppelt ist, einem Ausgang 222 und einem Steuereingang 223, einen optionalen Prozessor 224 mit einem Eingang 225, der mit dem Ausgang 222 des Periodenzählers 220 gekoppelt ist und einem Ausgang 226, und eine Steuerung 227 mit einem Ausgang 228, der mit dem Steuereingang 223 des Periodenzählers 220 gekoppelt ist. 2b) zeigt ferner einen Pseudo-Zufallszahlengenerator 230 mit einem Eingang 231, der mit dem Ausgang 228 des Prozessors 224 gekoppelt ist.

Der Periodenzähler 220 bestimmt dabei die Anzahl von Oszillationsperioden im Oszillatorsignal während einem Zählintervall, das die Steuerung 227 dem Periodenzähler 220 vorgibt. Beispielsweise könnte der Beginn einer Zählperiode das Einschalten der Anordnung sein, die Steuerung 227 könnte das Ende des Zählintervalls vorgeben. Dies könnte beispielsweise durch Laden eines Kondensators, durch ein externes Signal, oder auch durch eine zufällige Zeit geschehen. Nach Ende des Zählintervalls gibt der Periodenzähler 220 die im Zählintervall ermittelte Anzahl von Oszillationsperioden im Oszillatorsignal an den optionalen Prozessor 224 weiter. Dieser Prozessor führt beispielsweise eine mathematische Operation, wie z. B. eine Modulo-Operation, basierend auf der von dem Periodenzähler 220 übermittelten Anzahl durch. Eine Modulo-Operation könnte in einem weiteren Ausführungsbeispiel auch durch einen Periodenzähler mit Überlauf realisiert werden. Der Prozessor 224 gibt dann den gewünschten Startwert an einen Pseudo-Zufallszahlengenerator 230 weiter. Die mathematische Operation durch den Prozessor dient beispielsweise dazu den Startwert in einen gültigen Wertebereich der Pseudo-Zufallszahlengenerators abzubilden. Je nach Anwendungsbereich kann der Prozessor in Ausführungsbeispielen der vorliegenden Erfindung auch entfallen und der Ausgang 222 des Periodenzählers 220 direkt mit dem Eingang 231 des Pseudo-Zufallszahlengenerators 230 gekoppelt sein.

In 2c) ist ein weiteres Ausführungsbeispiel dargestellt, das die gleichen Komponenten enthält, die bereits anhand der 2b) erörtert wurden und zusätzlich einen Speicher 229 aufweist. Der Speicher dient analog zur obigen Erläuterung zum Speichern von Startwerten. Dabei kann der Speicher 229 mit dem Prozessor 224 oder dem Pseudo-Zufallszahlengenerator gekoppelt sein, was in 2c) durch gestrichelte Linien angedeutet ist. In einem Ausführungsbeispiel der vorliegenden Erfindung wird nur einmalig bei der Produktion ein Startwert bestimmt, der dann im Speicher 229 abgelegt wird und zukünftig von dort ausgelesen wird. Alternativ können auch Kombinationen zwischen dem gespeicherten und neu bestimmten Werten zur Bestimmung des Startwertes herangezogen werden. Der Speicher 229 weist dann nicht-flüchtige Speicherkomponenten auf. In einem anderen Ausführungsbeispiel wird der Startwert nach jedem Lauf des Pseudo-Zufallszahlengenerators 230 von diesem neu im Speicher 229 abgelegt und immer wieder von dort ausgelesen. Auch bei dieser Variante sind Kombinationen zwischen gespeicherten und neu bestimmten Werten zur Bestimmung des Startwertes denkbar. Dies verhindert in diesem erfindungsgemäßen Ausführungsbeispiel, dass sich Zufallsfolgen wiederholen. Auch hier kann der Speicher 229 nicht-flüchtige Speicherkomponenten aufweisen.

In einem weiteren Ausführungsbeispiel wird der Startwert durch die in 2c) dargestellte Schaltung nach jedem Einschalten neu bestimmt und dann für die Dauer des Betriebes im Speicher 229 hinterlegt, bzw. analog zum obigen Ausführungsbeispiel durch den Pseudo-Zufallszahlengenerator 230 nach jeder Iteration ersetzt. In einem weiteren Ausführungsbeispiel der vorliegenden Erfindung dient der zuletzt abgelegte Wert, als Startwert für einen nächsten Lauf. Der Speicher 229, der in diesem Fall als nicht-flüchtiger Speicher ausgelegt ist, stellt dann den zuletzt gespeicherten Wert entweder dem Prozessor 224 oder dem Pseudo-Zufallszahlengenerator 230 zur Verfügung. In einem Ausführungsbeispiel basiert ein neuer Startwert auf einer Rechenoperation der letzten Zufallszahl, so dass der Speicher 229 die letzte Zufallszahl vom Pseudo-Zufallszahlengenerator erhält und beim nächsten Einschaltvorgang, bzw. auch nach einem Reset, dem Prozessor zur Verfügung stellt.

Wahlweise kann anstatt einer indirekten Kopplung des Pseudo-Zufallszahlengenerators 230 über einem Prozessor 224 an den Ausgang des Periodenzählers 220, auch eine direkte Kopplung erfolgen und der Ausgabewert des Periodenzählers 220 direkt mit dem Eingang des Pseudo-Zufallszahlengenerators 230 verbunden sein. Der Periodenzähler 220 kann in einem Ausführungsbeispiel mit ein Überlaufregister aufweisen und so inhärent beispielsweise eine Modulo-Operation durchführen. In diesem Ausführungsbeispiel könnte der Prozessor entfallen und somit wäre der Speicher 229 direkt mit dem Ausgang des Periodenzählers gekoppelt und könnte wie oben beschrieben dem Pseudo-Zufallszahlengenerator den Startwert zur Verfügung stellen.

3 zeigt einen Chip 300 gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung. In 3 sind erneut die Oszillationseinrichtung 110 und die Einrichtung zum Erzeugen des Startwertes 120 dargestellt. Ferner zeigt 3 den Oszillator 210, den Periodenzähler 220 und den optionalen Prozessor 224, die wie bereits an den 2b) und 2c) miteinander gekoppelt sind. 3 zeigt ferner einen Intervallvorgeber 305, der mit einem Ausgang 306 mit dem Steuereingang 223 des Periodenzählers 220 gekoppelt ist und einer externen Schnittstelle 320, die auf einem gemeinsamen Substrat 300 implementiert sind. Der Ausgang 226 des Prozessors 224 ist zur Weitergabe des berechneten Startwertes mit einem Ausgangsanschluss 310 verbunden. Optional kann der Ausgangsanschluss 310 in einem anderen Ausführungsbeispiel direkt mit dem Ausgang 222 des Periodenzählers gekoppelt sein und der optionale Prozessor 224 kann entfallen. In einem weiteren Ausführungsbeispiel der vorliegenden Erfindung kann zusätzlich auf dem Chip 300 ein Pseudo-Zufallszahlengenerator implementiert sein, der direkt mit dem Ausgangsanschluss 310 gekoppelt ist, so dass der Startwert und der Pseudo-Zufallszahlengenerator in integrierter Form auf einem Substrat vorliegen.

Das Zählintervall, währenddessen der Periodenzähler 220 die Anzahl der Oszillationsperioden im Oszillationssignal, das vom Oszillator 210 zur Verfügung gestellt wird, ermittelt, wird durch den Intervallvorgeber 305 vorgegeben, der ferner an eine externe Schnittstelle 320 gekoppelt ist, über die ein chip-externes Steuersignal angekoppelt werden kann. So kann der Beobachtungszeitraum, d. h. das Zählintervall, sowohl chip-intern vorgegeben werden, z.B. durch einen festen Zeitraum oder auch durch versorgungsspannungsabhängiges Laden einer Kapazität, als auch von anderen externen Effekten abhängig gemacht werden. Beispielsweise kann eine Anzahl von Oszillationsperioden gezählt werden, zwischen dem Bestromen des Bausteins, d. h. des Chips 300, und dem „Loslassen" einer externen Reset-Leitung. Diese Reset-Leitung könnte beispielsweise von einem Terminal gesteuert werden und unterliegt, wie beispielsweise in einer ISO-Norm festgeschrieben, einer Mindest-Aktivitäts-Zeit. Durch diese Vorgehensweise würde in einem Ausführungsbeispiel der vorliegenden Erfindung erreicht, dass von Terminal zu Terminal und sogar von Start-Up zu Start-Up die Dauer des Zählintervalls variieren würde, und hierdurch eine zusätzliche Variationskomponente bzw. eine weitere Zufallsgröße in den Prozess eingebracht werden könnte. Der Zählwert, der dann am Ausgang 310 des optionalen Prozessors 224, bzw. am Ausgang 223 des Periodenzählers 220, ausgegeben wird, kann dann als Startwert für den Pseudo-Zufallsgenerator verwendet werden, der sich in einem Ausführungsbeispiel ebenfalls auf dem gleichen Chip befinden kann.

Gemäß der bereits erörterten Ausführungsbeispiele kann auch dieses Ausführungsbeispiel zusätzlich über einen Speicher verfügen, der beispielsweise mit auf dem Chip implementiert sein kann oder über einen externen Anschluss an den Prozessor 224 oder Periodenzähler 220 angekoppelt ist.

Zur Verdeutlichung dieser Vorgehensweise zeigt 4 beispielhafte Signalverläufe 410, 420 und 430. 4 illustriert den Signalverlauf 410 eines Oszillators 210 während einer Einschwingphase, der beispielsweise durch einen VCO oder ICO realisiert sein könnte, und der einen sich steigernden Takt zur Verfügung stellt. In 4 zeigt ferner der Signalverlauf 420 die Flanke eines Reset-Signals, das beispielsweise mit der Schnittstelle 320 des in 3 abgebildeten Ausführungsbeispiels der vorliegenden Erfindung verbunden sein könnte. Der Periodenzähler 220 beginnt nun mit dem Zählen der Perioden im Signalverlauf 410 des VCO-Taktes, und gibt den Zählwert an einen Prozessor 224 weiter. Der Prozessor 224 könnte beispielsweise eine Modulo-Operation durchführen. Ein Ausführungsbeispiel einer Modulo-Operation ist in 4 als eine Folge 430 von Modulo-Werten dargestellt. Die abfallende Flanke des Signalverlaufs 420 des Reset-Signals beendet das Zählintervall, woraufhin der Startwert vom Prozessor 224 beispielsweise an einem Ausgang 310 an einen Pseudo-Zufallszahlengenerator weitergegeben wird. In den beispielhaften Signalverläufen in 4, wird auf diese Art und Weise ein Startwert von 3 ermittelt. Der Prozessor 224 führt im Beispiel von 4 eine Modulo-Operation auf der Basis von 3 aus.

Obige Ausführungsbeispiele sind leicht in Security Controllern einsetzbar, die mit einer CPU, sowie verschiedenen Peripheriemodulen, unter anderem auch einem internen Oszillator (z. B. ein VCO oder ICO), ausgerüstet sind. Über einen echten Zufallszahlengenerator müssen sie jedoch nicht verfügen. Obige Ausführungsbeispiele ermöglichen nun bei Start eines Programms oder auch einmalig bei der Produktion, während einer Hochlaufphase des Oszillators einen Startwert zu generieren, der auf einer zufälligen Größe beruht. Das Zählintervall kann dabei über einen festen Zeitraum, einen zufälligen Zeitraum oder auch über einen extern vorgegebenen Zeitraum, wie beispielsweise über ein Reset-Signal festgelegt werden. Dies eröffnet die Möglichkeit, die Ermittlung eines Startwertes auf eine weitere Zufallsgröße zu stützen, nämlich die Dauer des Zählintervalls. Erfindungsgemäße Ausführungsbeispiele können weiterhin über eine Speichereinrichtung verfügen, die beispielsweise nach einmaligem Bestimmen eines Startwertes bei der Produktion, diesen in ihrem Speicher abspeichern, so dass er bei zukünftigen Anfragen von dort ausgelesen werden kann. Ein weiteres Ausführungsbeispiel der vorliegenden Erfindung wäre eine Vorrichtung, ein Chip oder ein Verfahren, das zusätzlich über eine Speichereinrichtung zur Speicherung eines Startwertes verfügt, wobei die Speichereinrichtung von einem Pseudo-Zufallszahlengenerator immer wieder neue Startwerte speichert, so dass der erfindungsgemäß ermittelte Startwert nur einmalig zum Einsatz kommt.

In einem weiteren Ausführungsbeispiel wird das oben beschriebene Verfahren in einem Computerprogramm realisiert, was beispielsweise auf einem Micro-Prozessor oder auch Micro-Controller abläuft.

Obige Ausführungsbeispiele schaffen eine Vorrichtung, ein Verfahren, ein Computerprogramm, eine Schaltung und einen Chip, die es ermöglichen, beispielsweise durch die Nutzung einer VCO-Anlaufphase, Startwerte, oder sogenannte Seeds, für Pseudo-Zufallszahlengeneratoren so zu ermitteln, dass selbst ein Hersteller eines solchen Pseudo-Zufallszahlengenerators keine Kenntnis über den Startwert besitzt, und dadurch eine erhöhte Sicherheit, gerade im Hinblick auf Verschlüsselungsalgorithmen usw. erzielt werden kann.

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 des Startwertes
110
Oszillationseinrichtung
120
Einrichtung zum Erzeugen des Startwertes
122
Optionaler Steuereingang zur Zählintervallvorgabe
130
Einrichtung zum Speichern eines Startwertes
200
Schaltung
210
Oszillator
212
Ausgang des Oszillators
220
Periodenzähler
221
Eingang des Periodenzählers
222
Ausgang des Periodenzählers
223
Optionaler Steuereingang zur Zählintervallvorgabe
224
Prozessor
225
Eingang des Prozessors
226
Ausgang des Prozessors
227
Steuerung
228
Ausgang der Steuerung
229
Speicher
230
Pseudo-Zufallszahlengenerator
300
Chip
305
Intervallvorgeber
306
Ausgang des Intervallvorgebers
310
Startwertausgangsanschluss
320
Intervallvorgabeanschluss
410
Signalverlauf eines VCO (voltage controlled oscillator)
420
Signalverlauf eines Reset-Signals
430
Zahlenfolge einer Modulo-Operation


Anspruch[de]
Vorrichtung (100) zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator, mit einer Oszillationseinrichtung (110) zum Erzeugen eines Oszillatorsignals; und einer Einrichtung (120) zum Erzeugen des Startwertes basierend auf dem Oszillatorsignal zumindest während eines Teils eines Einschwingvorgangs der Oszillationseinrichtung (110). Vorrichtung (100) gemäß Anspruch 1, wobei das Erzeugen des Startwertes durch die Einrichtung (120) zum Erzeugen des Startwertes von einer Anzahl von Perioden in dem Oszillatorsignal während eines Zählintervalls abhängt, wobei das Zählintervall mit einem Anlegen einer Spannungsversorgung oder einem Einschaltvorgang bezüglich der Vorrichtung beginnt und eine vordefinierte Zeitdauer aufweist. Vorrichtung (100) gemäß Anspruch 1, wobei die Vorrichtung auf einem Chip integriert ist und das Erzeugen des Startwertes durch die Einrichtung (120) zum Erzeugen des Startwertes von einer Anzahl von Perioden in dem Oszillatorsignal während eines Zählintervalls abhängt, wobei das Zählintervall von außerhalb des Chips einstellbar ist. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 3, wobei die Vorrichtung (100) zum Erzeugen des Startwertes ferner eine Einrichtung (130) zum Speichern eines Startwertes aufweist. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 4, wobei das Erzeugen des Startwertes durch die Einrichtung (120) zum Erzeugen des Startwertes eine Rechenoperation basierend auf einer Anzahl von aufgetretenen Perioden in dem Oszillatorsignal umfasst. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 5, die in einen Chip integriert ist. Schaltung (200) mit folgenden Merkmalen:

einem Oszillator (210) mit einem Oszillatorausgang;

einem Periodenzähler (220) mit einem Eingang, der mit dem Oszillatorausgang gekoppelt ist, und einem Periodenzählerausgang; und

einem Pseudo-Zufallszahlengenerator (230) mit einem Eingang, der mit dem Periodenzählerausgang gekoppelt ist.
Schaltung (200) gemäß Anspruch 7, wobei der Periodenzähler (220) aktivierbar ist, um eine Anzahl von Perioden während eines Zählintervalls zu bestimmen und an dem Periodenzählerausgang auszugeben. Schaltung (200) gemäß Anspruch 7 oder 8, wobei zwischen den Periodenzählerausgang (222) und den Eingang des Pseudo-Zufallszahlengenerators (230) ein Rechenoperator geschaltet ist. Schaltung (200) gemäß einem der Ansprüche 7 bis 9, wobei der Periodenzähler (220) durch Anlegen einer Spannungsversorgung oder durch Einschalten der Schaltung aktivierbar ist, und das Zählintervall eine vordefinierte Zeitdauer aufweist. Schaltung (200) gemäß einem der Ansprüche 7 bis 9, wobei die Schaltung in einen Chip integriert ist und der Periodenzähler (220) von außerhalb des Chips aktivierbar ist, um das Zählintervall zu beenden. Schaltung (200) gemäß Anspruch 11, wobei der Periodenzähler (220) einen Zähler mit Überlauf aufweist. Schaltung (200) gemäß einem der Ansprüche 7 bis 12, wobei der Oszillator (210) einen VCO (Voltage Controlled Oscillator) oder einen ICO (Current Controlled Oscillator) aufweist. Schaltung (200) gemäß einem der Ansprüche 7 bis 13, wobei die Schaltung (200) ferner einen Speicher (229) aufweist, der mit dem Periodenzähler (220), einem Prozessor (224) oder einem Pseudozufallszahlengenerator (230) gekoppelt ist. Chip (300) mit folgenden Merkmalen:

einem Oszillator (210) mit einem Oszillatorausgang (212);

einem Periodenzähler (220) mit einem Eingang (221), der mit dem Oszillatorausgang (212) gekoppelt ist, einem Intervallvorgabeeingang (223) und einem Periodenzählerausgang (222);

einem Intervallvorgeber (305) mit einem Intervallvorgabeausgang (306), der mit dem Intervallvorgabeeingang gekoppelt ist und einem Intervallsteuereingang; und

einer externen Schnittstelle (320), die mit dem Intervallsteuereingang gekoppelt ist.
Chip (300) gemäß Anspruch 15, wobei der Periodenzähler (220) durch Anlegen einer Spannungsversorgung oder durch Einschalten des Chips aktivierbar ist, um ein Zählintervall mit einer vordefinierten Zeitdauer zu beginnen. Chip (300) gemäß einem der Ansprüche 15 oder 16, wobei der Oszillator (210) einen VCO oder ICO aufweist. Chip (300) gemäß einem der Ansprüche 15 bis 17, der auf einem Kartenträger montiert ist, um als Smart-Card oder Chip-Karte zu fungieren. Chip (300) gemäß einem der Ansprüche 15 bis 18, der ferner einen Pseudo-Zufallszahlengenerator (230) aufweist, dessen Seedeingang mit dem Periodenzählerausgang (222) gekoppelt ist. Chip (300) gemäß einem der Ansprüche 15 bis 19, der mit einer Kommunikationseinrichtung koppelbar ist, und dessen Periodenzähler (220) über die externe Schnittstelle (320) aktivierbar ist, um das Zählintervall zu beenden. Chip (300) gemäß einem der Ansprüche 15 bis 20, wobei der Chip (300) ferner einen Speicher (229) aufweist, der mit dem Periodenzähler (220), einem Prozessor (224) oder einem Pseudozufallszahlengenerator (230) gekoppelt ist. Verfahren zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator, mit folgenden Schritten:

Erzeugen eines Oszillatorsignals; und

Bestimmen des Startwertes basierend auf dem Oszillatorsignal, zumindest während eines Teils eines Einschwingvorgangs des Oszillatorsignals.
Verfahren gemäß Anspruch 22, wobei das Bestimmen des Startwertes ferner einen Schritt des Zählens von Perioden in dem Oszillatorsignal während eines Zählintervalls umfasst. Verfahren gemäß einem der Ansprüche 22 oder 23, wobei das Bestimmen des Startwertes ferner einen Schritt des Durchführens einer Rechenoperation an einer Anzahl von Perioden in dem Oszillatorsignal während eines Zählintervalls umfasst. Verfahren gemäß einem der Ansprüche 22 bis 24, das ferner einen Schritt des Vorgebens eines Zählintervalls umfasst. Verfahren gemäß Anspruch 25, wobei das Vorgeben auf einem Einschaltvorgang und auf einer Pegeländerung eines externen Signals beruht. Verfahren gemäß Anspruch 26, wobei das Verfahren ferner einen Schritt des Ankoppelns an einer Kommunikationseinrichtung umfasst, die das externe Signal zur Verfügung stellt. Verfahren zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator, mit folgenden Schritten:

Erzeugen eines Oszillatorsignals; und

Zählen der Perioden in dem Oszillatorsignals, zumindest während eines Teils eines Einschwingvorgangs des Oszillatorsignals, wobei der Startwert auf dem Ergebnis des Zählens beruht.
Computerprogramm mit einem Programmcode zur Durchführung eines Verfahrens zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator mit einem Schritt des Bestimmens des Startwertes basierend auf einem Oszillatorsignal, zumindest während eines Teils eines Einschwingvorgangs des Oszillatorsignals, wenn das Computerprogramm auf einem Computer abläuft.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com