DE69120596T2 - Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung - Google Patents

Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung

Info

Publication number
DE69120596T2
DE69120596T2 DE69120596T DE69120596T DE69120596T2 DE 69120596 T2 DE69120596 T2 DE 69120596T2 DE 69120596 T DE69120596 T DE 69120596T DE 69120596 T DE69120596 T DE 69120596T DE 69120596 T2 DE69120596 T2 DE 69120596T2
Authority
DE
Germany
Prior art keywords
data
address
key
bus
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69120596T
Other languages
English (en)
Other versions
DE69120596D1 (de
Inventor
Thomas I Elmer
Rung-Pan Lin
Tuan T Nguyen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE69120596D1 publication Critical patent/DE69120596D1/de
Application granted granted Critical
Publication of DE69120596T2 publication Critical patent/DE69120596T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Description

  • Diese Erfindung befaßt sich mit dem Schutz von vertraulicher Information oder Algorithmen, die in dem physischen Speicher eines Computers abgelegt worden sind. Genauer gesagt, bezieht sich diese Erfindung auf den Transfer dieser Daten von dem Computer zwecks Untersuchung oder Transport ohne Offenbarung des ursprünglichen geschützen Algorithmus oder der Information. Die Technik, die verwendet wird, um dies durchzuführen, ist ein besonderes Verfahren der Verschlüsselung der transferierten Daten. Diese Technik ist auch anwendbar bei irgendwelchem Transport von privater oder geschützter Information.
  • Im vorliegenden Beispiel ist die Verschlüsselungstechnik vollständig innerhalb eines Speicherschutzschemas eingeschlossen. Das Ziel dieses Speicherschutzschemas besteht darin, unautorisierte Offenbarung des Inhalts eines bestimmten Computerspeichersegments zu verhindern, während die Möglichkeit beibehalten wird, bestimmte Diagnosen an diesen Daten auszuführen. Die vorliegende Ausführungsform befaßt sich mit dem Schutz des Speichers auf einem integrierten Schaltkreis, im einzelnen eines Mikroprozessors. In der vorliegenden Ausführungsform ist der Speicher, der für den Schutz ausgewählt wird, ein auf dem Chip befindliches EPROM und wird als OCEPROM (on chip EPROM) bezeichnet. Die anderen Arten von Speicher, auf die in dieser Beschreibung Bezug genommen wird, werden als nicht auf dem Chip befindliche EPROM-Speicher oder NOCEPROM (non on chip EPROM) für die Zwecke der Unterscheidung bezeichnet. NOCEPROM umfaßt irgendwelche anderen Speicher, als das erfindungsgemäß geschützte Segment. Speicher, die zu der Kategorie NOCEPROM gehören, können, müssen aber nicht, physisch auf dem integrierten Schaltkreis vorhanden sein, der OCEPROM enthält, und können beispielsweise die folgenden Speicher in der Kategorie NOCEPROM umfassen: auf dem Chip befindliches RAM, auf dem Chip befindliches ROM und irgendwelche Speicher außerhalb des Chips.
  • Figur 1 ist ein Diagramm, das ein typisches Mikroprozessorsystem nach dem Stand der Technik einschließlich eines Systemdaten/Adressbusses 105, Mikrosteuereinheit 101 und Speichereinrichtung 110 sowie Mikroprozessor 120 wiedergibt. Die Mikrosteuereinheit 101 ist mit dem Systemadress/Datenbus 105 über Bus 101-1 verbunden und enthält OCEPROM 101-2 und NOCEPROM 101-3. Die Speichereinrichtung 110 ist als NOCEPROM bezeichnet entsprechend der obigen Definition und ist mit dem Systemadress/Datenbus 105 über Bus 110-1 verbunden. Der Mikroprozessor 120 ist mit dem Systemadress/Datenbus über Bus 120-1 verbunden. Zwecks Erläuterung beschreibt die Beschreibung eine Situation, in der es erwünscht ist, die unautorisierte Offenbarung des Inhalts von OCEPROM 101-2, enthalten innerhalb der Mikrosteuereinheit 101, zu verhindern, beispielsweise durch irgendeinen Code, der vom NOCEPROM über die Mikrosteuereinheit 101, Mikroprozessor 120 oder andere (nicht dargestellte) Prozessoren exekutiert wird.
  • Wenn der Inhalt eines bestimmten Segments eines physischen Speichers der Mikrosteuereinheit gegen Offenbarung zu schützen ist, diktieren die vorhandenen Umstände der Mikrosteuereinheitsarchitektur und -anwendung mindestens zwei Überlegungspunkte. Der erste Überlegungspunkt ist, wie dieser Speicherinhalt während der "Laufzeit" zu schützen ist. Der zweite Überlegungspunkt ist, wie dieser Speicherinhalt während eines alternativen Betriebsmodus zu schützen ist.
  • "Laufzeit" wird hier mit der Bedeutung jenes Intervalls verwendet, während welchem der Prozessor der Mikrosteuereinheit Befehle aus dem Speicher holt und abarbeitet. Diese Befehle können verwendet werden, um Datenteile zu manipulieren. Die Daten, die derart in Verbindung mit einem Befehl gebracht werden, werden als "Operand(en)" des Befehls bezeichnet. Es ist vorstellbar, daß die Eigenbefehle einer Mikrosteuereinheit verwendet werden könnten, um den Inhalt eines geschützten Segmentes des physikalischen Speichers zu offenbaren. Beispielsweise könnte ein Datentransferbefehl verwendet werden, um Daten von dem geschützten Segment zu einem Ausgang zu transferieren.
  • Der alternative Betriebsmodus, der gegenwärtig praktiziert wird, wird generell für das Programmieren oder die Programmverifikation des geschützten Segments verwendet und wird üblicherweise als "Speicherabbau", "ROM-Abbau" oder "EPROM-Modus" bezeichnet. Gleichgültig, mit welchem Namen man diesen alternativen Betriebsmodus bezeichnet, ist er durch Konfigurieren der Mikrosteuereinheit in irgendeiner Weise charakterisiert, die anders ist als ihre normale Laufkonfiguration. Der Zweck dieses alternativen Modus besteht darin, eine Offenbarung des Inhalts irgendeines physikalischen Segments des Gesamtspeichers der Mikrosteuereinheit zu offenbaren oder darauf Zugriff zu nehmen. Generell macht diese alternative Konfiguration keinen Gebrauch von den auf dem Chip der Mikrosteuereinheit befindlichen Prozessormöglichkeiten.
  • Während die vorliegende Offenbarung sich in großem Umfang mit dem Schutz gegen unautorisierte Offenbarung von Information befaßt ("Leseschutz"), ist es auch üblich, Veränderung des Inhalts eines geschützten Speichersegments zu steuern oder zu verhindern. Dies wird mit "Schreibschutz" bezeichnet. Als Teil des Speicherschutzmechanismus kann "Schreibschutz" in Verbindung mit Maßnahmen praktiziert werden oder auch nicht, die so ausgelegt sind, daß die Offenbarung der Information verhindert wird.
  • Die meisten Speicherschutzmechanismen nach dem Stand der Technik für Mikrosteuereinheiten fallen in eine von zwei Klassen, die als Klasse 1 bzw. Klasse 2 zwecks Unterscheidung bezeichnet werden sollten. Mechanismen der Klasse 1 verwenden ein einziges Element (d.h. ein Computerbit oder irgendeine Schmelzsicherung), um den Zugriff auf geschützte Daten zu Steuern. Wenn dieses einzelne Element richtig konfiguriert ist, werden im allgemeinen die folgenden Maßnahmen ergriffen. Bei "Laufzeit" sind die einzigen Befehle, die Daten aus dem geschützten Speichersegment als Operand benutzen können, solche Befehle, die in dem betreffenden Speichersegment selbst gespeichert sind und aus diesem abgerufen werden. Kein Zugriff auf das geschützte Speichersegment ist in einem "Speicherabbau"-Modus zulässig. Mechanismen der Klasse 2 verwenden dieselben Beschränkungen bei "Laufzeit" wie jene, die bei Klasse 1 angewandt werden. Im "Speicherabbau"-Modus wird der Zugriff auf das geschützte Speichersegment im allgemeinen durch die Verwendung eines "Schlüssels" gesteuert. Ein solcher Schlüssel ist üblicherweise ein binärer Wert. Die Feldbreite des Schlüssels liegt typischerweise im Bereich von 128 bis 256 Bits entsprechend einem Bereich von 16 bis 32 8-Bit-Bytes. Feldbreiten dieser Größenordnung beinhalten eine ernorme Anzahl von möglichen Schlüsseln von 2¹²&sup8; bis 2²&sup5;&sup6; und machen das Abschätzen des einzigen korrekten Schlüssels zu einer schwierigen Aufgabe. Im Stand der Technik werden diese Schlüssel auf zwei Arten verwendet, um Software auf einem Chip zu schützen.
  • Ein erstes Verfahren nach dem Stand der Technik verwendet einfach den korrekten Schlüssel als Erlaubnis für den Zugriff des Speichers auf dem Chip. Das bedeutet, daß der Schlüssel einem integrierten Schaltkreis, der den geschützten Speicher enthält, präsentiert wird, und der integrierte Schaltkreis den präsentierten Schlüssel mit einem korrekten Schlüsselwert vergleicht, der auf dem integrierten Schaltkreis abgespeichert ist. Wenn diese beiden Werte zusammenpassen, wird die Erlaubnis erteilt, auf den Speicher auf dem Chip Zugriff zu nehmen. Dieser Ansatz beruht einfach auf der überwältigenden Anzahl möglicher Schlüsselwerte, ganz ähnlich einem Kombinationsschloß. Es gibt mehrere Nachteile bei diesem Ansatz: (1) der korrekte Schlüsselwert muß sicher aufbewahrt werden, (2) der korrekte Schlüsselwert muß auf dem Chip gespeichert werden unter Verbrauch von wertvoller Oberfläche des integrierten Schaltkreises und (3), wenn der Schlüssel entdeckt ist, versagt dieser Sicherheitsmechanismus in katastrophaler Weise, indem absolut kein Speicherschutz mehr beibehalten wird.
  • Ein zweites Verfahren nach dem Stand der Technik verwendet den Schlüssel, um die auf dem Chip gespeicherte Information zu verschlüsseln, bevor sie der Umgebung offenbart wird. Diese Verschlüsselung betrachtet gewöhnlich die geschützte Information als einen Strom von Bytes von dem Speicher auf dem Chip. Dieser Bytestrom wird üblicherweise wiederholt mit den Schlüsselbytes mit EXKLUSIV-ODER- oder EXKLUSIV-NICHT- ODER-Operationen verknüpft, bis der gesamte Speicherinhalt auf dem Chip verschlüsselt und ausgegeben worden ist. Wenn es 32 Schlüsselbytes gibt, wird demgemäß das erste Schlüsselbyte mit EXKLUSIV-NICHT-ODER mit dem ersten Byte von dem Speicher verknüpft, das zweite Schlüsselbyte wird mit dem zweiten Byte von dem Speicher EXKLUSIV-NICHT-ODER-verknüpft und so weiter bis zum 32. Byte. Das 33. Byte von dem Speicher wird dann EXKLUSIV-NICHT-ODER-verknüpft mit dem ersten Schlüsselbyte und der Prozeß wiederholt sich selbst. Es gibt mehrere Nachteile dieses Ansatzes nach dem Stand der Technik: (1) der Schlüssel muß auf dem Chip gespeichert werden unter Verbrauch wertvoller Oberfläche der integrierten Schaltung, (2) wenn der Schlüssel entdeckt ist, versagt der Sicherheitsmechanismus in einer katastrophalen Weise, und (3) wenn irgendwelche unprogrammierten Bytes aus dem Speicher auf dem Chip mit einem Schlüsselbyte EXKLUSIV-NICHT-ODER-verknüpft werden, wird das Schlüsselbyte bekannt.
  • Speicherschutzverfahren 1 nach dem Stand der Technik (Klasse 2)
  • Ein Verfahren nach dem Stand der Technik (beispielsweise in den INTEL-Komponententypen 839XBH, 879XBH und 87C196KB angewandt) verwendet zwei Bits, die sich in dem Chipkonfigurationsregister (CCR) einer integrierten Schaltung befinden, um vier Niveaus des Schutzes für einen auf dem Chip befindlichen Programmspeicher zu definieren. Diese Bits werden als LOC0 bzw. LOC1 bezeichnet und bewirken die folgenden Schutzniveaus: TABELLE 1
  • Wenn der Leseschutz entsperrt ist, gilt, (1) die letzten fünf Bytes des Speichers auf dem Chip können nicht für Programmspeicherung verwendet werden, (2) der Speicher auf dem Chip kann nur gelesen werden mittels Befehlen von auf dem Chip befindlichem Speicher, und (3) nichtmaskierbarer Interrupt (NMI) bewirkt, daß die integrierte Schaltung auf externe Exekution bis zum nächsten Rücksetzen schaltet. Diese drei Maßnahmen verhindern wahrscheinlich die Offenbarung von Daten, abgespeichert in dem geschützten Speicher auf dem Chip in der Laufzeit.
  • Der Wert von /EA (externer Zugriff, externer Speicher) ist mit dem Rücksetzen verriegelt, so daß der integrierte Schaltkreis während des Laufens nicht von externer auf interner Exekution schalten kann. Es ist möglich, daß dies als ein Aspekt der Laufzeitsicherheit gemacht wurde, um einen gespaltenen Befehl fetch:opcode vom externen Speicher, Operand vorn internen geschützten Speicher, zu verhindern. Dies kann manchmal bei integrierten Schaltkreisen, die nicht /EA verriegeln, durch clevere Steuerung dieses Signals ausgeführt werden.
  • Um einen Speicherabbau auszuführen, muß ein auf dem Chip befindlicher 16-Byte-Sicherheitsschlüssel angepaßt werden. Der Chip überprüft automatisch die Anpassung zwischen einem vorn Benutzer bereitgestellten Schlüssel, gespeichert an einer bestimmten Stelle im externen Speicher, und dem 16-Byte-Sicherheitsschlüssel, gespeichert auf dem integrierten Schaltkreis. Wenn die Überprüfung erfolgreich ist, werden die Inhalte des auf dem Chip befindlichen Speichers zum externen Speicher abgebaut. Wenn die Anpassung nicht erfolgreich ist, versetzt sich der Chip selbst in eine endlose Schleife der internen Exekution.
  • Wenn der Schreibschutz entsperrt ist, ist keine weitere Programmierung mehr für den Speicher auf dem Chip zulässig.
  • Speicherschutzverfahren 2 nach dem Stand der Technik (Klasse 2)
  • Dieses Verfahren (beispielsweise in den INTEL-Komponententypen 87C51, 87C51BH, 87C51FA, 87C51FB, 87C51GA und 8751BH angewandt) verwendet ebenfalls zwei EPROM-Bits auf dem integrierten Schaltkreis, um vier Schutzniveaus für den Programmspeicher auf dem Chip zu definieren. Bezeichnet man diese beiden Bits als B1 und B2, werden die Schutzniveaus, wiedergegeben in Tabelle 2, vorgesehen. TABELLE 2
  • Der Wert von /EA ist mit dem Rücksetzen immer dann verriegelt, wenn der auf dem Chip befindliche Speicher gegen Lesen geschützt ist. Unter diesen Umständen muß der "vorhandene" Wert von /EA mit dem verriegelten Wert übereinstimmen, um eine richtige Abarbeitung zu ermöglichen. Dies ist wahrscheinlich ein Aspekt des Laufzeitspeicherschutzes der Komponente.
  • Der Speicherabbau ist für alle Chips verschlüsselt, die dieses Verfahren benutzen. Eine auf dem Chip befindliche 32-Byte-Speichermatrix wird vom Benutzer programmiert. Diese Speichermatrix wird verwendet, um Programmbytes bei der Verifikation zu codieren. Jedes Programmbyte wird logisch EXKLUSIV-NICHT-ODER-verknüpft mit einem der 32 Schlüsselbytes von der Matrix. Die Schlüsselbytes werden sequentiell adressiert. Demgemäß wird das erste Byte des Programms mit dem ersten Byte der Matrix EXKLUSIV-NICHT-ODER-verknüpft. Das zweite Byte des Programms wird mit dem zweiten Byte der Matrix EXKLUSIV-NICHT-ODER-verknüpft und so weiter bis zum 32. Byte des Programms. Das 33. Byte des Programms wird dann mit dem ersten Byte der Matrix EXKLUSIV-NICHT-ODER-verknüpft. Der Verschlüsselungsalgorithmus wiederholt sich auf diese Weise für das gesamte Programm.
  • Speicherschutzverfahren 3 nach dem Stand der Technik (Klasse 1
  • Dieser Ansatz (beispielsweise in den INTEL-Komponententypen 8751H und 8744H angewandt) verwendet ein einziges Verriegelungsbit, versteckt auf dem integrierten Schaltkreis, um den Zugriff auf den Speicher auf dem Chip zu kontrollieren. Wenn dieses Bit programmiert ist, gilt: (1) der interne Programmspeicher kann nicht ausgelesen werden, (2) die Komponente kann nicht weiter programmiert werden, und (3) die Komponente kann keinen externen Speicher abarbeiten. Die Beschränkung der Komponente auf interne Arbeit ist ein Nachteil dieses Verfahrens. Das Verriegelungsbit wird typischerweise in einer EPROM-Zelle gespeichert, und Löschen des EPROM stellt die volle Funktionalität der Komponente wieder her.
  • Speicherschutzverfahren 4 nach dem Stand der Technik (Klasse 1)
  • Eine andere Technik nach dem Stand der Technik (beispielsweise in den INTEL-Komponententypen 8051AHP und 80C51BHP angewandt) begrenzt den Programmspeicherraum während der Laufzeit auf 4K Bytes. Dieser Raum muß in einer von zwei möglichen Weisen konfiguriert werden. Er ist entweder vollständig auf dem Chip enthalten oder er ist vollständig extern bezüglich des Chips. Datenzugriffe über diese 4K-Byte-Begrenzung können nur über Register Ri erfolgen, wobei geeignete Programmbefehle angewandt werden (wie MOVX&Ri,A oder MOVX A,&Ri). Offensichtlich reduziert die Verhinderung der kombinierten internen/externen Abarbeitung die Flexibilität dieses Schemas in Systemanwendungen.
  • Der Programmverifikationstestmodus, der in diesem Dokument als "ROM-Abbau" oder "EPROM-Modus" bezeichnet wird, ist bei diesen Komponenten einfach weggelassen.
  • Speicherschutzverfahren 5 nach dem Stand der Technik (Klasse 2)
  • Bestimmte Komponenten nach dem Stand der Technik (wie INTEL- Komponententypen 87C51FA und 83C51FB) verwenden ein einziges Verriegelungsbit zum Kontrollieren des Zugriffs auf den auf dem Chip befindlichen Speicher. Wenn dieses Bit unprogrammiert gelassen wird, ist kein Schutz vorgesehen. Wenn dieses Bit programmiert ist, gilt: (1) /EA ist mit Rücksetzen verriegelt, um die Komponente daran zu hindern, von externer auf interne Abarbeitung während des Laufs umzuschalten, und (2) MOVC-Befehle (verwendet zum Bewegen von Programrncodebytes), abgearbeitet von externem Speicher, werden nicht zugelassen, um Codebytes von dem internen Speicher abzufordern.
  • Zusätzlich wird eine 32-Byte-Verschlüsselungsmatrix verwendet, um den Speicherabbauausgang zu codieren, wie oben bei dem Verfahren 2 nach dem Stand der Technik erläutert. Diese Matrix wird immer über den Speicherabbauausgang umkartiert. Wenn diese Matrix unprogrammiert gelassen wird, bleiben die Speicherdaten unbeeinflußt. Wenn sie durch den Benutzer programmiert wird, werden die ROM-Daten codiert.
  • Speicherschutzverfahren 6 nach dem Stand der Technik (Klasse 2)
  • Eine andere Technik nach dem Stand der Technik (beispielsweise in der INTEL-Komponententype 8398 angewandt) verwendet ein einzelnes Verriegelungsbit, das in einer Speicherzelle gespeichert ist, welche auf dem integrierten Schaltkreis verborgen ist, um den Zugriff auf den Programmspeicher auf dem Chip zu steuern. Wenn dieses Bit programmiert ist, kann der Speicher auf dem Chip nicht von einem Programm gelesen werden, das von einem externen Speicher abarbeitet. Um einen Speicherabbau auszuführen, muß ein 16-Byte-Schlüssel auf dem Chip angepaßt werden. Beim Speicherabbaumodus wird der Schlüssel automatisch aus dem externen Speicher von dem integrierten Schaltkreis gelesen. Wenn der aus dem externen Speicher gelesene Schlüssel zu dem Schlüssel auf dem Chip paßt, erfolgt der Speicherabbau. Wenn er nicht paßt, wird der Speicherabbau unterbunden.
  • Speicherschutzverfahren 7 nach dem Stand der Technik
  • U.S.-Patent Nr. 4,698,617 beschreibt eine Variation einer Verschlüsselungstechnik, bei der der Schlüssel, der zum Verschlüsseln von Daten verwendet wird, sich ändert, wenn unterschiedliche Datenbytes gelesen werden. Dieses '617-Patent beschreibt die Verwendung eines Pseudozufallszählers zum Herstellen des Verschlüsselungsschlüssels, wobei seine Zählung von einem bekannten Wert ausgehend beginnt. Ein entsprechender Pseudozufallszähler, der mit seiner Zählung von demselben bekannten Wert ausgeht, wird in einem empfangenden integrierten Schaltkreis verwendet, um die verschlüsselten Daten zu entschlüsseln. Das '617-Patent zeigt auch ein Beispiel für eine Verschlüsselungstechnik, bei der der Verschlüsselungsschlüssel ganz einfach die Adresse der Daten ist, die gelesen werden sollen.
  • Dies sind Nachteile bei den Ausführungsformen des '617-Patents, wiedergegeben in seinen Figuren 1 und 4. Indem zunächst auf Figur 4 eingegangen wird, wird dort die Adresse zum Verschlüsseln des ROM- Ausgangs verwendet. Einer der beiden Operanden für die Codierschaltung ist ohne weiteres bekannt - die Adresse. Da die Codierung wahrscheinlich auf EXKLUSIV-ODER/EXKLUSIV-NICHT-ODER basiert (Figuren 5a und 5b), brauchen wir nur die feste Zuordnung von Adressbits zu ROM-Ausgangsbits zu bestimmen, um den übertragenen Bytestrom zu entziffern. ROMs benötigen generell ein festes Intervall zum Reagieren, gemessen von der letzten Adressänderung. Dieses Intervall sei mit Te bezeichnet. Während Te, halten ROMs gewöhnlich einen Konstantwertausgang Vo. Es ist festzuhalten, daß es keine Ausgangsabtastung für die Codierschaltung nach Figur 4 gibt, so daß ihre Ausgangsänderungen relativ unmittelbar bezüglich Änderungen auf Bus 10 oder Bus 7 erfolgen. Zum Bestimmen der Zuordnung wenden wir einfach entsprechende Adressmuster auf dem Bus 10 an mit einer Periodizität, die kleiner ist als Te, und beobachten den Effekt auf Vo am Bus 8.
  • Die Darstellung der Figur 1 des '617-Patents ist etwas mehr robust. Da kein Verschlüsselungsoperand bekannt ist, müssen wir gleichzeitig den Effekt auf einen unbekannten Operanden und eine unbekannte Zuordnung auf Vo beobachten. Da jedoch die Konstruktion uns ermöglicht, den ROM-Entsperrleiter zu steuern, können wir in der Lage sein, den Nettoeffekt zu bestimmen. Dies kann auf verschiedene Weise erfolgen. Erstens können wir einen konstanten aktiven Wert auf Leiter 11 halten, während die Adresse mit einer Periodizität größer als Te geändert wird. Dies ermöglicht uns, die Wirkung eines einzelnen Verschlüsselungsschlüssels auf verschiedene unterschiedliche Datenbytes zu beobachten.
  • Zweitens können wir die Adresse konstant halten und den Leiter 11 mit einer Periodizität größer als Te kommutieren. Dies ermöglicht uns, den Effekt jedes Verschlüsselungsschlüssels auf mehrere (oder alle) Datenbytes zu bestimmen.
  • Drittens können wir die Adresse konstant halten und den Leiter 11 mit einer Periodizität kleiner als Te kommutieren. Dies ermöglicht uns, den Effekt jedes Schlüsselbytes auf konstanten Wert Vo zu bestimmen.
  • Während keine dieser Maßnahmen mit Wahrscheinlichkeit direkt die Verschlüsselungszuordnung oder die geschützten Daten offenbart, offenbaren sie doch eine erhebliche Menge an Information, die für diesen Zweck verwendbar ist.
  • Es gibt erhebliche Nachteile bei den Lehren nach dem Stand der Technik, Verfahren 1 bis 6. Beispielsweise muß bei einer Ausführungsform, bei der ein 32-Byte-Schlüssel verwendet wird, um Programmdaten zu verschlüsseln, ein erheblicher Bereich der Oberfläche des integrierten Schaltkreises der Speicherung des 32-Byte-Schlüssels vorbehalten bleiben. Außerdem wird in dem verschlüsselten Ausgangsmuster alle 32 Byte das Verschlüsselungsbyte wiederholt. Demgemäß codiert jedes Schlüsselbyte 1/32 des Programms. Wenn man nur ein einziges Schlüsselbyte erkennt, so offenbart dies unmittelbar einen erheblichen Anteil des Programms, das gegen Offenbarung geschützt werden sollte. Wenn darüber hinaus ein unprogrammiertes Byte von OCEPROM mit einem der Schlüsselbytes codiert wird, wird dieses Schlüsselbyte bekannt. Dies kann vorkommen, wenn das geschützte Programm nicht vollständig den Raum einnimmt, der in OCEPROM verfügbar ist, und die unprogrammierten Abschnitte von OCEPROM während des Speicherabbaus ausgegeben werden. Zusätzlich muß der Schlüsselwert jederzeit sorgfältig sowohl auf als auch außerhalb des Chips aufbewahrt werden. Wenn schließlich der gesamte Schlüssel entdeckt ist, versagt der Schutzmechanismus in katastrophaler Weise, indem keinerlei Speicherschutz mehr beibehalten wird.
  • Die vorliegende Erfindung ist durch die Ansprüche 1 bzw. 11 definiert.
  • Gemäß einer Ausführungsform dieser Erfindung wählt ein Verschlüsselungsverfahren bestimmte Bytes der Daten, gespeichert in einem bestimmten, auf dem Chip befindlichen Speicher als Verschlüsselungsschlüssel. Diese gewählten Bytes werden verwendet, um sich selbst zu verschlüsseln wie auch alle verbleibenden Daten in dem oben erwähnten bestimmten Speicher. Die gewählten Bytes haben keine speziell für die Verschlüsselung zugeteilten Werte, sondern sie werden bloß entsprechend einer Regel aus der Masse der zu verschlüsselnden Daten gewählt. Wenn diese Technik implementiert wird, wird jedes Byte von Daten, gespeichert in dem erwähnten Speicher, mit einem der bezeichneten Verschlüsselungsschlüsselbytes kombiniert (beispielsweise unter Verwendung eins EXKLU- SIV-NICHT-ODER-Gatters), bevor es offenbart wird. Gemäß dieser Ausführungsform wird der Versuch eines Eindringlings, die Verschlüsselungsschlüsselbytes zu lesen, vereitelt, weil sie verwendet werden, um sich selbst zu verschlüsseln, was zu einem Ausgangsbyte führt, dessen Bits sämtlich den Logikwert 1 haben.
  • Es gibt bestimmte Vorteile bei der Anwendung dieser Technik. Der Benutzer braucht nicht einen Satz von Schlüsselbytes getrennt vorzusehen, zu programmieren oder aufzubewahren. Darüber hinaus wird keine Siliciumfläche für die Abspeicherung solcher Bytes verschwendet. Ein Eindringling müßte bestimmte Teile der ursprünglichen Daten kennen, um die Ergebnisse dieser Verschlüsselungstechnik entziffern zu können. Zusätzlich degradiert diese Technik sich in eleganter Weise. Die Schlüssel werden so gewählt, daß die verschlüsselten Daten nicht eine einzige gemeinsame Abhängigkeit haben. Demgemäß wird in dem Falle, daß ein einzelner Schlüssel entdeckt wird, nur ein sehr kleiner Anteil der verschlüsselten Daten offenbart.
  • Figur 1 ist ein Blockdiagramm zur Wiedergabe eines typischen Mikroprozessorsystems nach dem Stand der Technik;
  • Figur 2 ist ein Blockdiagramm zur Wiedergabe einer Ausführungsform eines Laufzeitspeicherschutzschemas, aufgebaut gemäß der Lehre der Erfindung;
  • Figur 3 ist ein Blockdiagramm zur Wiedergabe einer Ausführungsform eines Speicherschutzschemas, aufgebaut gemäß der Lehre dieser Erfindung;
  • Figur 4 ist ein Diagramm zur Wiedergabe der Anwendung eines Verfahrens der Erfindung für die deterministische Isolation von Bytefehlern und zeigt, wie die Lehre dieser Erfindung jedes Schlüsselbytes mit den Datenbytes assoziiert, für deren Verschlüsselung es eingesetzt wird; und
  • Figur 5 zeigt, wie die Lehre dieser Erfindung geschützten Code in Untersektionen unterteilt, wobei jeder mit seinem eigenen getrennten Schlüssel geschützt wird.
  • Gemäß der Lehre dieser Erfindung wird ein neuartiges Verfahren der Datenverschlüsselung ausgeführt, um einen Mechanismus für das Schützen des Inhalts von Speichern zu schaffen. Dies ist besonders gut geeignet für die Anwendung in einer Mikrosteuereinheit, und die folgende Dikussion der Verschlüsselungsstrukturen und -techniken dieser Erfindung richten sich auf die Anwendung bei einer Mikrosteuereinheit. Es versteht sich jedoch, daß die Verschlüsselungsstrukturen und -techniken dieser Erfindung für die Anwendung in anderen Speichersysternen als Mikrosteuereinheiten, Mikroprozessoren oder Prozessoren irgendeiner Größe und bei der Datenübertragung bei anderen als Speicherkomponenten geeignet ist.
  • Wir definieren das Segment des Speichers, das hier OCEPROM genannt wird, als einen physischen Teil einer Mikrosteuereinheit.
  • Eine Ausführungsform eines Laufzeitspeicherschutzschemas gemäß der Erfindung hat vier primäre Elemente, wie in Figur 2 gezeigt.
  • Der Befehlsoperationscode wird aus dem OCEPROM 21 mittels der Abruf-, Decodier- und Exekutiereinheit (FDE) 22 aufgerufen, und dieser Prozeß wird durch den Sicherheitsmonitor 23 überwacht. Die erste Beschränkung unseres Laufzeitsicherheitsmechanismus ist, daß nur eine FDE-Einheit auf OCEPROM 21 Zugriff nehmen kann. Die Mikrosteuereinheit FDE-Einheit mit diesem Privileg ist spezifisch diejenige Mikrosteuereinheit, die physikalisch OCEPROM 21 enthält. Diese Beschränkung eliminiert die Möglichkeit des Laufzeitdirektspeicherzugriffs (DMA) auf OCEPROM 21 und sperrt andere Laufzeitmehrfachzugriffsmechanismen. Wenn beispielsweise die Mikrosteuereinheit, welche OCEPROM 21 enthält, in einem Mehrfachprozessorsystem konstruiert wäre, wäre dieses OCEPROM bei Laufzeit nur durch die spezifische Mikrosteuereinheit zugreifbar, in welcher sie enthalten ist. In einer alternativen Ausführungsform ist mehrfach Exekutionszugriff auf geschützte Speichersegmente vorgesehen, beispielsweise durch eine Mehrzahl von Prozessoren oder Steuereinheiten, wie einen Mikroprozessor und einen DMA-Steuerer. In einer solchen Ausführungsform wird eine Mehrzahl von Sicherheitsmonitoren eingesetzt, einer für jede Komponente, die in der Lage ist, Zugriff auf den geschützten Speicher zu nehmen. In einer alternativen Ausführungsform wird ein einziger Sicherheitsmonitor verwendet, der etwas komplizierter ist und in der Lage ist, der Tatsache Rechnung zu tragen, daß es eine Mehrzahl von Exekutionsmöglichkeiten gibt. In dieser Ausführungsform wird beispielsweise der einzige Sicherheitsmonitor nicht nur die Adresse, auf die zugegriffen werden soll, bei der Festlegung, ob Information aus dem geschützten Speicher gelesen werden darf, in Betracht ziehen, sondern auch die Komponente, welche diesen Zugriff sucht.
  • Die folgenden Definitionen dienen der Illustration der Lese- und Schreibprivilegien in Verbindung mit einer Ausführungsform dieser Erfindung. Zusätzlich zu der folgenden Diskussion sind diese Privilegien in Tabelle 3 beschrieben.
  • Wir definieren "DATEN-Privileg zum Steuern des Laufzeitzugriffs auf OCEPROM. Es kann als ein Exekutionszugriff gedacht werden und ist ausgelegt, um ein feindliches Programm am Lesen des Inhalts der gesicherten OCEPROM als Daten zu hindern. Wenn das DATEN-Privileg erlaubt wird, dürfen Befehle, abgerufen und ausgeführt von NOCEPROM, OCEPROM als eine Quelle für Operanden verwenden. Wenn DATEN-Privileg nicht erlaubt ist, dürfen von NOCEPROM abgerufene Befehle nicht OCEPROM als Quelle für Operanden verwenden. Befehle, die von OCEPROM aufgerufen und verarbeitet werden, dürfen immer OCEPROM als Quelle für Operanden verwenden. Bei diesen Referenzen auf Befehle "abgerufen und ausgeführt" ist die Mikrosteuereinheit, die dieses Abrufen und Ausführen ausführt, spezifisch die Mikrosteuereinheit, die physikalisch OCEPROM enthält.
  • Wir definieren "SCHREIB"-Privileg zum Steuern des Versuchs, den Inhalt von OCEPROM zu verändern. Wenn das SCHREIB-Privileg erlaubt wird, kann OCEPROM durch vorgesehene Programmiermechanismen verändert werden. Wenn SCHREIB-Privileg nicht erlaubt ist, werden die vorgesehenen Programm-Mechanismen gesperrt und eine Veränderung des OCEPROM-Inhalts wird nicht zugelassen.
  • In einer Ausführungsform manifestiert eine Mikrosteuereinheit mehr als einen Betriebsmodus alternativ zu dem generell verstandenen normalen Laufmodus. Diese Moden sollen Programmierung und/oder Verifikation von OCEPROM ausführen und können die Resourcen der Mikrosteuereinheit für die Ausführung von Befehlen verwenden oder auch nicht. Sie unterliegen in jedem Falle der Geltendmachung der oben definierten "DATEN"-Privileg und "SCHREIB"-Privileg. Für diese Betriebsmoden definieren wird "VERIFIZIER"-Privileg, um zu bestimmen, ob die Daten, enthalten in OCEPROM, bei Anforderung offenbart werden dürfen. Solche Anforderungen werden durch spezifische Mechanismen erkannt, wenn die Mikrosteuereinheit in einem entsprechenden Betriebsmodus ist. Wenn VERIFIZIEREN erlaubt ist, sind die von OCEPROM offenbarten Daten eine genaue Repräsentation ihres gespeicherten Wertes. Wenn VERIFIZIEREN nicht erlaubt ist, werden keine Daten von OCEPROM offenbart. Wenn nur "verschlüsseltes VERIFIZIEREN" erlaubt ist, sind die von OCEPROM offenbarten Daten eine Verschlüsselung des tatsächlich gespeicherten Wertes. TABELLE 3
  • Diese vier Sicherheitsniveaus (Tabelle 3) sind ausgelegt, um nichtautorisierte Offenbarung von in OCEPROM gespeicherten Daten zu verhindern. Zusätzlich verhindern sie nichtautorisierte Veränderung dieser Daten. In einer Ausführungsform einer Mikrosteuereinheit unter Verwendung der Lehre dieser Erfindung befindet sich OCEPROM zwischen den Adressen COOO hex und FFFF hex, diese umfassend. Diese vier Sicherheitsniveaus steuern den Zugriff auf das gesamte OCEPROM. Zusätzlich sind die Chipkonfigurationsbytes, welche die Sicherheitsbits SB1 und SB0 enthalten, gegen Schreiben geschützt, wenn das SCHREIB-Privileg nicht zugelassen ist. Die Chipkonfigurationsbytes werden nicht verschlüsselt und sind in den vorgesehenen alternativen Betriebsmoden lesbar.
  • Figur 3 zeigt Teile einer Mikrosteuereinheit, die gemäß einer Ausführungsform dieser Erfindung aufgebaut ist. Die Mikrosteuereinheit 200 umfaßt NOCEPROM 201-3, das Adress-Signale vorn Adressbus 250-A empfängt und Datensignale auf Bus 250-F gibt. Da dies ein NOCEPROM ist, wird in Verbindung mit NOCEPROM 201-3 keine Verschlüsselung oder Berechtigungsschaltung verwendet.
  • Die Mikrosteuereinheit 200 enthält auch OCEPROM 201-2, das Adress-Signale vorn Adressbus 250-B sowie Adress-Signale vom Adressbus 250-C erhält. Auch OCEPROM 201-2 liefert Datensignale auf den Datenbus 250-D. Da es sich um OCEPROM handelt, werden zusätzliche Schaltkreise verwendet um sicherzustellen, daß der Zugriff auf die in ihm enthaltenen Daten autorisiert ist, und um die Daten, die auf Bus 250-E oder Bus 250-F bei Anforderung gegeben werden, verschlüsselt werden. Wie in Tabelle 3 gezeigt, steuern die programmierbaren Konfigurationsbits SB1 und SB0 den Betrieb der auf dem Chip vorgesehenen Sicherheitsschaltkreise. Im Folgenden wird der Betrieb dieser Schaltkreise und Strukturen der Figur 3 unter Bezugnahme auf die Kombinationen von Konfigurationsbit SB1 und Konfigurationsbit SB0, definiert in Tabelle 3, beschrieben.
  • Wenn die Konfigurationsbits SB1 und SB0 beide den Logikwert 1 haben, werden keine speziellen Vorkehrungen getroffen, um die Offenbarung des Inhalts von OCEPROM 201-2 im normalen Laufmodus zu offenbaren. Unter diesen Umständen kann auf die innerhalb OCEPROM 201-2 enthaltenen Daten zugegriffen werden, indem ein entsprechender Adresswert auf Adressbus 250-A präsentiert wird. Der Adressmonitor 205 gibt die von ihm empfangene Adresse auf Bus 250-A bis Bus 250-B, ohne daß Änderungen vorgenommen werden. Wenn dieser Adresswert nicht identisch mit dem vorhergehenden Adresswert ist, gibt der Adressmonitor 205 kurz einen Logik- 0-Impuls auf die neue Adresszuleitung 255. Die Verschlüsselungssteuerlogik 204 erkennt den Logik-1-Wert von SB1-Leiter 251 und den Logik-1- Wert von SB0-Leiter 252 und gibt dementsprechend einen Logik-0-Wert auf die Schlüsselleseabtastleitung 256. Die Nullschaltung 206 erkennt den Logik-0-Wert von Schlüsselleseabtastleitung 256 und gibt dementsprechend die Adressbits A(2,3,4), die sie von Bus 250-B empfängt, jeweils als Bits A(2,3,4) von Bus 250-C unverändert weiter. In Reaktion auf den kurzen Logik-0-Impuls des Neuadressleiters 255 liefert OCEPROM 201-2 Daten auf Datenbus 250-D entsprechend der Adresse, die auf Adressbus 250-B und 250-C ansteht. Der Laufzeitsicherheitsmonitor 202 liest den Logik-1-Wert von SB1-Leiter 251 und gibt dementsprechend den Logik-1- Wert auf Entsperrleitung 253. Der Datenbusselektor 203 überprüft den Modusbus 257 um festzustellen, daß die integrierte Schaltung gegenwärtig im normalen Laufmodus ist, und liefert entsprechend den Logik-1-Werten, die auf jede der Leitungen SB1 251, SB0 252 und Entsperren 253 vorhanden sind, die Daten, die auf dem Datenbus 250-D anstehen, unverändert auf den Laufzeitdatenbus 250-F, wenn er entsprechend den auf dem Status- und Zeitlagebus 254 vorhandenen Signalwerten angewiesen wird, so zu verfahren.
  • Wenn die Konfigurationsbits SB1 und SB0 beide Logikwert 1 haben, werden keinerlei spezielle Maßnahmen getroffen, um die Offenbarung des Inhalts von OCEPROM 201-2 in Operationsmoden zu verhindern, die primär für die Programmierung oder das Auslesen der genannten Inhalte vorgesehen sind. Diese Betriebsmoden wurden vorher als alternativ zu dem normalen Laufmodus beschrieben. Unter diesen Umständen kann auf die Daten, enthalten im OCEPROM 201-2, zugegriffen werden, indem ein entsprechender Adresswert auf Adressbus 250-A präsentiert wird. Der Adressmonitor 205 gibt die Adresse, die er auf Bus 250-A empfängt, unverändert auf Bus 250-B. Wenn dieser Adresswert nicht identisch mit dem vorherigen Adresswert ist, gibt der Adressmonitor kurz einen Logik-0-Impuls auf den Neuadressleiter 255. Die Verschlüsselungssteuerlogik 204 erkennt den Logikwert 1 von SB1 auf Leiter 251 und den Logikwert 1 von SB0 auf Leiter 252 und gibt in Übereinstimmung damit einen Logikwert 0 auf den Schlüsselleseabtastleiter 256 und einen Logikwert 0 auf den Ausgangsabtastleiter 259. Die Nullschaltung 206 erkennt den Logikwert 0 auf dem Schlüsselleseabtastleiter 256 und gibt infolgedessen die Adressbits A(2,3,4), die sie vom Bus 250-B empfängt, als Bits A(2,3,4) unverändert auf Bus 250-C. In Reaktion auf den kurzen Logik-0-Impuls auf der Neuadressleitung 255, gibt OCEPROM 201-2 Daten auf den Datenbus 250-D in Übereinstimmung mit der auf dem Adressbus 250-B und 250-C anstehenden Adresse. Wie durch die auf dem Modusbus 257 vorhandenen Signaiwerte festgelegt, können nun die Daten auf Datenbus 250-D nur auf einen von Datenbus 250-E oder Datenbus 250-F gegeben werden wie folgt. Die Verschlüsselungsschaltung 207 erkennt den Logikwert 0 der Ausgangsabtastleitung 259 und den Logikwert 1 der Konfigurationsbitleitung SB1 251, und wenn die Signaiwerte auf Modusbus 257 dementsprechend sind, gibt sie die Daten von Bus 250-D auf Bus 250-E, ohne sie zu verändern. Der Laufzeitsicherheitsmonitor 202 erkennt den Logikwert 1 von SB1-Leitung 251 und gibt dementsprechend einen Logikwert 1 auf die Entsperrleitung 253. Der Datenbusselektor 203 erkennt die Logikwerte 1 von allen Leitern SB1 251, SB0 252 und Entsperrung 253, und wenn die Signalwerte auf Modusbus 257 dementsprechend sind, gibt er Daten vom Bus 250-D ohne Änderungen auf Bus 250-F, wenn er so entsprechend den auf Status- und Zeitlagebus 254 vorhandenen Werten angewiesen wird.
  • Wenn die Konfigurationsbits SB1 uns SB0 beide den Logikwert 1 haben, werden keine speziellen Vorkehrungen getroffen, um das Programmieren von Daten des OCEPROM 201-2 zu verhindern. Unter diesen Umständen können in einem entsprechenden Operationsmodus Daten im OCEPROM 201-2 programmiert werden, indem eine Adresse auf Adressbus 250-A und Daten auf Datenbus 250-G präsentiert werden. Der Adressmonitor 205 gibt die von ihm auf Adressbus 250-A empfangene Adresse unverändert auf Bus 250-B weiter. Die Verschlüsselungssteuerlogik 204 liest den Logikwert 1 vom SB1-Leiter 251 und den Logikwert 1 von SB0-Leiter 252 und gibt dementsprechend einen Logikwert 0 auf den Schlüsselleseabtastleiter 256. Die Nullschaltung 206 erkennt den Logikwert 0 auf Schlüsselleseabtastleiter 256 und gibt dementsprechend die Adressbits A(2,3,4), die sie von dem Bus 250-B empfängt, als unveränderte Bits A(2,3,4) an Bus 250-C. Nach einem hinreichenden Adress- und Datenstabilisationsintervall wird ein kurzer Logikimpuls 0 an PGM-Leiter 262 angelegt. Dieser kurze Logikimpuls 0 veranlaßt die Verschlüsselungslogik 204, einen kurzen Logikimpuls O auf OPGM-Leiter 263 entsprechend dem Logikwert 1 des SB1-Leiters 251 und des Logikwertes 1 von SB0-Leiter 252 zu geben. OCEPROM 201-2 liest den kurzen Logikimpuls 0 auf OPGM-Leiter 263 und programmiert dementsprechend die Daten von Bus 250-G in die Stelle innerhalb OCEPROM 201-2 entsprechend dem Adresswert, der gleichzeitig von Bus 250-B und Bus 250-C präsentiert wird.
  • Wenn das Konfigurationsbit SB1 den Logikwert 1 hat und das Konfigurationsbit SB0 den Logikwert 0 hat, werden keine speziellen Vorkehrungen getroffen, um die Offenbarung des Inhalts von OCEPROM 201-2 im normalen Laufmodus zu verhindern. Unter diesen Umständen kann auf Daten, enthalten innerhalb OCEPROM 201-2, zugegriffen werden, indem ein entsprechender Adresswert auf Adressbus 250-A präsentiert wird. Der Adressmonitor 205 leitet die Adresse, die er auf Bus 250-A empfängt, unverändert auf Bus 250-B. Wenn dieser Adresswert nicht identisch mit dem vorherigen Adresswert ist, gibt der Adressmonitor 205 einen kurzen Logikimpuls 0 auf den Neuadressleiter 255. Die Verschlüsselungssteuerlogik 204 erkennt den Logikwert 1 von SB1-Leiter 251 und den Logikwert 0 von SB0-Leiter 252 und gibt infolgedessen einen Logikwert 0 auf den Schlüsselleseabtastleiter 256. Die Nullschaltung 20 erkennt den Logikwert 0 auf dem Schlüsselleseabtastleiter 256 und überführt die Adressbits A(2,3,4), die sie vom Bus 250-B empfängt, als Bits A(2,3,4) unverändert auf Bus 250-C. In Reaktion auf den kurzen Logikimpuls 0 auf dem Neuadressleiter 255 liefert OCEPROM 201-2 Daten an Datenbus 250-D entsprechend der Adresse, die auf Adressbus 250-B und 250-C ansteht. Der Laufzeitsicherheitsmonitor 202 liest den Logikwert 1 von SB1-Leiter 251 und stellt dementsprechend einen Logikwert 1 auf dem Entsperrleiter 253 zur Verfügung. Der Datenbusselektor 203 überprüft den Modusbus 257 um festzustellen, ob die integrierte Schaltung gegenwärtig im normalen Laufmodus ist, und, entsprechend den Logikwerten 1 auf dem SB1-Leiter 251 und Entsperrleiter 253 und in Übereinstimmung mit dem Logikwert auf dem SB0-Leiter 252, gibt die auf Datenbus 250-D vorhandenen Daten unverändert auf den Laufzeitdatenbus 250-F, wenn er entsprechend den Signalwerten, die auf dem Status- und Zeitlagebus 254 vorhanden sind, entsprechend angewiesen wird.
  • Wenn das Konfigurationsbit SB1 den Logikwert 1 hat und das Konfigurationsbit SB0 den Logikwert 0 hat, werden keine speziellen Vorkehrungen getroffen, um die Offenbarung des Inhalts von OCEPROM 201-2 in Betriebsmoden zu verhindern, die primär für das Programmieren oder Auslesen dieses Inhalts bestimmt sind. Diese Betriebsmoden sind oben beschrieben worden als alternativ zu dem normalen Laufmodus. Unter diesen Umständen kann auf Daten, enthalten im OCEPROM 201-2, zugegriffen werden, indem ein entsprechender Adresswert auf dem Adressbus 250-A präsentiert wird. Der Adressmonitor 205 überträgt die Adresse, der er auf Bus 250-A empfängt, unverändert auf Bus 250-B. Wenn dieser Adresswert nicht identisch ist mit dem vorherigen Adresswert, gibt der Adressmonitor 205 kurz einen Logik-0-Impuls auf den Neuadressleiter 255. Die Verschlüsselungssteuerlogik 204 erkennt den Logikwert 1 auf SB1-Leiter 251 und den Logikwert 0 auf SB0-Leiter 252 und überträgt demgemäß einen Logikwert 0 auf dem Schlüsselleseabtastleiter 256 und einen Logikwert 0 auf Ausgangsabtastleiter 259. Die Nullschaltung 206 erkennt den Logikwert 0 auf dem Schlüsselleseabtastleiter 256 und überträgt entsprechend die Adressbits A(2,3,4), die sie vom Bus 250-B empfängt, jeweils unverändert auf Bus 250-C als Bits A(2,3,4). In Reaktion auf den kurzen Logikimpuls 0 auf dem Neuadressleiter 255 liefert OCEPROM 201-2 Daten auf Datenbus 250-D entsprechend der Adresse, die auf dem Adressbus 250-B und 250-C anliegt. Wie durch die Signalwerte bestimmt, die auf dem Modusbus 257 anstehen, können die Daten, die nun auf Bus 250-D vorhanden sind, nur auf einen der Datenbusse 250-E oder Datenbus 250-F übertragen werden wie folgt. Die Verschlüsselungsschaltung 207 erkennt den Logikwert 0 des Ausgangsabtastleiters 259 und den Logikwert 1 des Konfigurationsbitleiters 251 für SB1 und, wenn die Signalwerte auf dem Modusbus 257 angemessen sind, gibt sie die Daten vom Bus 250-D unverändert auf Bus 250-E aus. Der Laufzeitsicherheitsmonitor 202 erkennt den Logikwert 1 von SB1-Leiter 251 und legt dementsprechend einen Logikwert 1 auf den Entsperrleiter 253. Der Datenbusselektor 203 erkennt den Logikwert 1 auf SB1-Leiter 251, den Logikwerk 0 auf SB0-Leiter 252 und den Logikwert 1 auf Entsperrleitung 253, und wenn die Signalwerte auf dem Modusbus 257 dementsprechend sind, legt er die Daten von Bus 250-D unverändert auf Bus 250-F, wenn er entsprechend den Signalwerten auf dem Status- und Zeitlagebus 254 angewiesen wird.
  • Wenn das Konfigurationsbit SB1 den Logikwert 1 hat und das Konfigurationsbit SB0 den Logikwert 0 hat, wird die Verschlüsselungssteuerlogik 204 keinen Logikimpuls 0 auf den OPGM-Leiter 263 legen, unabhängig vom Wert auf PGM-Leiter 262, womit wirksam das Programmieren von OCEPROM 201-2 verhindert wird.
  • Wenn Konfigurationsbit SB1 Logikwert 0 und Konfigurationsbit SB0 Logikwert 1 haben, werden spezielle Vorkehrungen im Normallaufmodus getroffen, um unautorisierte Offenbarung des Inhalts von OCEPROM 201-2 zu verhindern. In Übereinstimmung mit dem Logikwert 0 von SB1 überprüft der Laufzeitsicherheitsmonitor 202 die Signalwerte auf dem Status- und Zeitlagebus 254, urn die Quelle jedes Operationscodeabrufs aufzuzeichnen. Wenn ein bestimmter Operationscode vom OCEPROM 201-2 abgerufen wird, wird der Laufzeitsicherheitsmonitor 202 einen Logikwert 1 auf den Entsperrleiter 253 legen, sobald dieser Operationscode mit der Abarbeitung beginnt, wodurch dem Datenbusselektor 203 ermöglicht wird, Operandendaten vom Datenbus 250-D auf Bus 250-F zu transferieren, wie dies erforderlich ist, um den Operationscode auszuführen. Wenn ein bestimmter Operationscode vom NOCEPROM abgerufen wird, wird der Laufzeitsicherheitsmonitor 202 keinen Logikwert 1 auf den Entsperrleiter 253 während des Abarbeitens des Operationscodes legen, womit verhindert wird, daß der Datenbusselektor 203 irgendwelche Daten vom Bus 250-D auf 250-F überträgt. Auf diese Weise wird der Lesezugriff auf OCEPROM 201-2 gesperrt für irgendwelche Software, die vom NOCEPROM ausgeführt wird.
  • Wenn der Wert des Konfigurationsbits SB1 logisch 0 ist und der Wert des Konfigurationsbit SB0 logisch 1 ist, werden spezielle Vorkehrungen getroffen, um die Offenbarung des Inhalts von OCEPROM 201-2 in Betriebsmoden zu beschränken, die primär für das Programmieren oder Auslesen dieses Inhalts bestimmt sind. Diese Betriebsmoden sind oben als Alternativen zu dem normalen Laufmodus beschrieben worden. Unter diesen Umständen ist die Verifikation von Speicherstellen innerhalb OCEPROM 201-2 zulässig, und der Inhalt solcher Speicherstellen wird vor der Offenbarung verschlüsselt. Um die Verifikation durchzuführen, wird auf dem Adressbus 250-A eine Adresse präsentiert. Wenn diese Adresse nicht identisch mit der vorherigen Adresse ist, liefert der Adressmonitor 205 kurz einen Logikwert 0 als Impuls auf die Neuadressleitung 255. Dieser Impuls initialisiert die Verschlüsselungssteuerlogik 204 und bringt sie dazu, die folgenden Ausgangswerte zu erzeugen: Schlüsselleseabtastleiter 256 mit Logikwert 0, Datenlatchabtastleiter 258 mit Logikwert 1, Ausgangsabtastleiter 259 mit Logikwert 0, nstart-Leseleitung 261 mit Logikwert 1. Der Adressmonitor 205 gibt die von ihm auf Bus 250-A empfangene Adresse unverändert auf Bus 250-B weiter. Da der Wert der Schlüsselleseabtastung 256 jetzt logisch 0 ist, hat die Nullschaltung 206 keinen Einfluß auf die Adressbits A(2,3,4) und präsentiert diese Bits dem Bus 250-C unverändert. In Reaktion auf den logischen 0-Impuls auf der Neuadressleitung 255, erzeugt OCEPROM 201-2 Daten für Bus 250-D entsprechend der Adresse, kombiniert von Bus 250-B und 250-C. Nach Belassen von Zeit für diese Daten, um sich bis zu ihrem Ziel fortzupflanzen, erzeugt OCEPROM 201-2 einen Logikwert 1 auf der Datenausbreitungsleitung 260. Dies bewirkt, daß die Verschlüsselungssteuerlogik 204 einen Logikwert 0 auf der Datenlatchabtastleitung 258 erzeugt, was bewirkt, daß die Daten auf Bus 250-D von der Datenlatchschaltung 208 zwischengespeichert (gehalten) werden. Unmittelbar danach erzeugt die Verschlüsselungssteuerlogik 204 einen Logikwert 1 auf dem Schlüsselleseabtastleiter 256, um ein Verschlüsselungsschlüsselbyte vom OCEPROM 201-2 zu lesen. Die Nullschaltung 206 erkennt den Logikwert 1 auf dem Schlüsselleseabtastleiter 256 und erzeugt dementsprechend einen Logikwert 0 auf jedem der drei Adressbits des Adressbusses 250-C. Unmittelbar danach erzeugt die Verschlüsselungssteuerlogik 204 einen kurzen Logikimpuls 0 auf dem nstart- Leseleiter 261. Dies bringt OCEPROM 201-2 dazu, den Logikwert 0 auf dem Datenausbreitungsleiter 260 zu erzeugen und Daten für den Datenbus 250-D entsprechend der Adresse, kombiniert von Bus 250-B und von Bus 250-C, zu erzeugen, der gegenwärtig den Logikwert 0 hat. Nach Verstreichenlassen von Zeit, daß diese Daten sich zu ihrer Bestimmung ausbreiten können, und für den Verschlüsselungsschaltkreis 207, um die in der Datenlatchschaltung 208 gespeicherten Daten und auf Bus 261 präsentierten Daten mit dem Verschlüsselungsschlüsselwert auf Bus 250-D zu verschlüsseln, erzeugt OCEPROM 201-2 einen Logikwert 1 auf der Datenausbreitungsleitung 260. Unmittelbar danach erzeugt die Verschlüsselungssteuerlogik 204 einen Logikwert 1 auf Ausgangsabtastleiter 259, was die Verschlüsselungsschaltung 207 dazu bringt, die verschlüsselten Datenwerte auf Datenbus 250-E zu erzeugen. Wenn der Modusbus 257 von entsprechendem Wert ist, können die verschlüsselten Datenwerte nun auf Bus 250-E dem Laufzeitdatenbus 250-F verfügbar gemacht werden, und zwar über Selektor 203, wenn dieser dementsprechend durch die Signalwerte auf dem Status- und Zeitlagebus 254 angewiesen wird. Wenn zu irgendeinem Zeitpunkt während des obigen Verschlüsselungsprozesses der Adresswert auf Bus 250-A geändert wird, wird der Adressmonitor 205 kurz einen Logikimpuls 1 auf dem Neuadressleiter 255 erzeugen, was die Verschlüsselungssteuerlogik 204 dazu bringt, den Verschlüsselungsprozeß zu unterbrechen und einen neuen mit dem neuen Adresswert zu beginnen. In diesem Falle werden keine Daten von dem angehaltenen Verschlüsselungsprozeß auf Bus 250-E verfügbar gemacht, wodurch das beabsichtigte Sicherheitsniveau aufrechterhalten wird. Wenn der obige Verschlüsselungsprozeß weiter laufengelassen wird bis zur Beendigung durch Aufrechterhalten eines konstanten Adresswertes auf Bus 250-A über eine hinreichende Zeitperiode, kann ein zusätzliches verschlüsseltes Datenbyte angefordert werden, indem dann die entsprechenden Adresswerte auf Bus 250-A präsentiert werden.
  • Wenn das Konfigurationsbit SB1 den Logikwert 0 und das Konfigurationsbit SB0 den Logikwert 1 hat, wird die Verschlüsselungssteuerlogik 204 keinen Logikimpuls-O-opgm-Leiter 263 zuführen, unabhängig von dem Wert auf dem PGM-Leiter 262, womit wirksam das Programmieren von OCEPROM 201-2 verhindert wird.
  • Wenn der Leiter 251 das Konfigurationsbit SB1 mit Logikwert 0 führt und der Leiter 252 das Konfigurationsbit SB0 mit Logikwert 0 führt, werden spezielle Vorkehrungen im normalen Laufmodus getroffen, um die unautorisierte Offenbarung des Inhalts von OCEPROM 201-2 zu verhindern. In Übereinstimmung mit dem Logikwert 0 von SB1-Leiter 251 überprüft der Laufzeitsicherheitsmonitor 202 die Signalwerte auf dem Status- und dem Zeitlagebus 254, um die Quelle jeder Betriebscodeanforderung aufzuzeichnen. Wenn ein bestimmter Betriebscode vom OCEPROM 201-2 abgefordert wird, liefert der Laufzeitsicherheitsmonitor 202 einen Logikwert 1 auf die Entsperrleitung 253, sobald dieser Betriebscode mit der Abarbeitung beginnt, wodurch zugelassen wird, daß der Datenbusselektor 203 Operandendaten vom Datenbus 250-D auf Bus 250-F transferiert, wie dies für die Abarbeitung des Operationscodes erforderlich ist. Wenn ein bestimmter Operationscode von NOCEPROM abgefordert wird, liefert der Laufzeitsicherheitsmonitor 202 keinen Logikwert 1 auf die Entsperrleitung 253 während der Abarbeitung dieses Betriebscodes, wodurch der Datenbusselektor 203 gehindert ist, irgendwelche Daten vom Bus 250-D auf Bus 250-F zu transferieren. Auf diese Weise wird der Lesezugriff auf OCEPROM 201-2 für irgendwelche Software gesperrt, die von NOCEPROM abarbeitet.
  • Wenn der Wert des Konfigurationsbits SB1 logisch 0 ist und der Wert des Konfigurationsbits SB0 logisch 0 ist, ist die Verifikation (Auslesung) von Speicherstellen innerhalb OCEPROM 201-2 in Betriebsmoden unterbunden, die primär dazu bestimmt sind, deren Inhalt zu programmieren oder auszulesen. Dementsprechend erzeugt die Verschlüsselungssteuerlogik 204 keinen Logikwert 1 auf dem Ausgangsabtastleiter 259, und die Verschlüsselungsschaltung 207 überträgt keinerlei Daten von Datenbus 250-D auf Datenbus 250-E. Demgemäß macht der Selektor 203 keine Daten, die auf Datenbus 250-D anstehen, für den Laufzeitdatenbus 250-F verfügbar.
  • Wenn das Konfigurationsbit SB1 Logikwert 0 und Konfigurationsbit SB0 Logikwert 0 haben, wird die Verschlüsselungssteuerlogik 204 keinen Logikimpuls 0 auf OPGM-Leiter 263 legen, unabhängig vom Wert auf PGM-Leiter 262, womit wirksam das Programmieren von OCEPROM 201-2 verhindert wird.
  • Es ist hier von Interesse, daß ein Vorteil gegenüber dem Stand der Technik das Ausmaß ist, in welchem die Schaltungen und Strukturen der Ausführungsform der Figur 3, erforderlich für den Prozeß der Datenverschlüsselung, gegen irgendwelche potentiellen Eindringlinge isoliert sind. Wie beim Stand der Technik, dienen die Umhüllung der integrierten Schaltung und die physikalischen Abmessungen derselben dazu, dramatisch das Niveau der Schwierigkeit zu erhöhen, das beim Umgehen des Verschlüsselungsschemas vorliegt. Zusätzlich dazu werden nur zwei Signale durch die Verschlüsselungsstrukturen der Figur 3 verwendet, die ohne weiteres extern bezüglich der integrierten Schaltkreisumhüllung steuerbar sind. Diese Signale sind (1) der Adressbus 250-A und (2) die Gleichleistung, die erforderlich ist, um die Verschlüsselungsschaltungen zu betreiben. Wie vorerwähnt, bewirken irgendwelche Änderungen im Wert des Adressbus 250-A, daß die Verschlüsselungssteuerlogik 204 reinitialisiert wird, womit wirksam die Verschlüsselung des präsenten Datenbytes unterbrochen wird und eine neue mit dem neuen Adresswert beginnt. Änderungen in dem Gleichleistungssignal, erforderlich zum Betreiben dieser Schaltungen, bringt diese dann dazu, entweder schneller oder langsamer zu arbeiten. Unter diesen Umständen jedoch werden alle Schaltungen, enthalten in der integrierten Schaltungspackung, ihre Geschwindigkeit im gleichen Ausmaß erhöhen oder verhindern. Es ist demgemäß nicht möglich, konsistent die Verschlüsselungssteuerlogik 204 schneller oder langsamer als OCEPROM 201-2 arbeiten zu lassen. Dies dient dazu, die Integrität unseres Verschlüsselungsmechanismus aufrechtzuerhalten. Alle anderen Signale, die verwendet werden, um die Verschlüsselungsschaltungen arbeiten zu lassen, werden innerhalb des integrierten Schaltkreisgehäuses abgeleitet.
  • Von besonderem Interesse ist in einer Ausführungsform, daß wir jegliche externe steuerbare Takt-, Zeitlage- oder Synchronisationssignale eliminiert haben, die irgendwie verwendet würden, um die Art und Weise, in der die Verschlüsselung ausgeführt wird, zu beeinflussen. Um diese Eliminierung zu bewirken, haben wir die Verschlüsselungssteuerlogik 204 gemäß den vorliegenden Praktiken asynchroner sequentieller Schaltungsauslegung konstruiert. Von besonderem Interesse ist in dieser Ausführungsform die Verwendung der Signalneuadresse 255, um die Verschlüsselungssteuerlogik 204 zu reinitialisieren und um OCEPROM 201-2 dazu zu bringen, neue Daten auf dem Datenbus 250-D zu erzeugen. Es ist festzuhalten, daß das Signal neue Adresse 255 kein Entsperrsignal für OCEPROM 201-2 ist, sondern nur anzeigt, daß ein neuer Adresswert präsentiert worden ist. Die Verwendung dieses Signals in der Art und Weise, die wir gewählt haben, hindert jeden Eindringling daran, die Kontrolle über den Schlüsselwert auszuüben, der verwendet wird, um das angeforderte Datenbyte zu verschlüsseln. Dies mag früher durch Ändern der extern präsentierten Adresse durchgeführt worden sein, gerade wenn die Verschlüsselungssteuerlogik 204 OCEPROM 201-2 anwies, einen Verschlüsselungsschlüsselwert zu erzeugen. Von zusätzlichem Interesse ist in dieser Ausführungsform die Verwendung des Datenausbreitungsleiters 260, erzeugt durch OCEPROM 201-2. Das Datenausbreitungssignal zeigt an, daß Daten, angefordert von OCEPROM 201-2, bereitgestellt worden sind und ein hinreichendes Intervall gehabt haben, um sich längs der vorgesehenen Signalpfade zu ihrem Bestimmungsort auszubreiten. Die Verwendung dieses Signals hat uns ermöglicht, die externe Abhängigkeit von einem Zeitlage- oder Synchronisationssignal zu eliminieren. Von zusätzlichem Interesse ist in dieser Ausführungsform die Verwendung des Signals nstart-Lesesignals (auf Leiter 261), daß es der Verschlüsselungssteuerlogik 204 erlaubt, OCEPROM 201-2 anzuweisen, einen Verschlüsselungsschlüsselwert zu erzeugen. Diese drei Signale bei gemeinsamer Verwendung liefern ein neuartiges Mittel für die Steuerung des Prozesses der Verschlüsselung innerhalb eines einzigen integrierten Schaltkreisgehäuses. Keines dieser Signale ist direkt extern bezüglich der integrierten Schaltkreispackung steuerbar, und ihre gemeinsame Anwendung reduziert dramatisch die Verletzbarkeit dieses Verschlüsselungsmechanismus.
  • Anwendung der verschlüsselten Verifikation
  • Wenn eine integrierte Schaltung, aufgebaut gemäß der Lehre dieser Erfindung, konfiguriert wird, um verschlüsselte Verifikation durchzuführen, werden vom OCEPROM angeforderte Daten vor der Offenbarung verschlüsselt. Die Adresse des angeforderten Datenbytes wird von dem Anforderer bereitgestellt. Gemäß der Erfindung verwendet das Verschlüsselungsverfahren Bytes des Benutzercodes, gespeichert im OCEPROM als ein Verschlüsselungsschlüssel, wodurch keine Abspeicherung und Verwendung eines separaten Verschlüsselungsschlüssels erforderlich ist.
  • Um die Verschlüsselung eines angeforderten Datenbytes vor der Offenbarung zu bewirken, steuern auf dem Chip befindliche Schaltungen den folgenden Prozeß. Das angeforderte Datenbyte wird abgerufen und in einer zeitweiligen Speicherstelle gespeichert, dem "Datenregister". Die Adresse, bereitgestellt von dem Anfordernden, wird geändert, indem die Adressbits A&sub2;, A&sub3;, A&sub4; auf Null gesetzt werden. Diese Bits werden identifiziert durch Zählen von dem niedrigststelligen Ende des Adressfelds, beginnend mit dem Adressbit A&sub0;. Die neugebildete Adresse wird verwendet. um ein anderes Byte von OCEPROM abzurufen, das als Verschlüsselungsschlüsselbyte eingesetzt wird. Das Verschlüsselungsschlüsselbyte wird bitweise EXKLUSIV-NICHT-ODER-verknüpft mit dem in dem Datenregister gespeicherten Byte. Das bedeutet, daß das Bit K&sub0; des Verschlüsselungsschlüsselbytes mit Bit D&sub0; des Datenregisters EXKLUSIV-NICHT-ODER-verknüpft wird, das Bit K&sub1; des Schlüsselbytes mit dem Bit D&sub1; des Datenregisters EXKLUSIV-NICHT-ODER-verknüpft wird und so weiter. Der resultierende Wert wird dann als verschlüsselter Wert des angeforderten Datenbytes ausgegeben.
  • Ein Beispiel einer Ausführungsform dieser Verschlüsselungstechnik wird nun unter Bezugnahme auf Tabelle 4 wiedergegeben. Es sei angenommen, daß das von dem OCEPROM abgeforderte Datenbyte die Adresse COFF hex hat und den Datenwert AC hex. Das abgeforderte Datenbyte wird abgerufen und im Datenregister gespeichert. Die Adresse wird dann geändert auf den Wert COE3 hex. Das unter dieser Adresse abgelegte Byte wird abgerufen und bitweise mit dem im Datenregister gespeicherten Datenbyte EXKLUSIV-NICHT-ODER-verknüpft. Es sei angenommen, daß das Byte unter der Adresse COE3 hex den Wert 8B hex hat. Der resultierende verschlüsselte Wert ist D8 hex. Hierbei ist von Interesse, daß gemäß der Erfindung in dem verschlüsselten Verifikationsbetriebsmodus die Schlüsselbytes nicht durch einen unautorisierten Benutzer erkannt werden können, weil jedes Schlüsselbyte für seine eigene Verschlüsselung verwendet wird, was zu einem verschlüsselten Ausgang von Logik 1 for jedes Bit führt. Dies ist klar ein deutlicher Vorteil gegenüber Verfahren nach dem Stand der Technik, welche die Adressdaten als Verschlüsselungsschlüssel verwendet, was inhärent einem einzigen Programm bekannt ist. TABELLE 4
  • Natürlich kann irgendeine gewünschte Art und Weise der Auswahl von Information, gespeichert in dem auf dem Chip befindlichen Speicher, als Verschlüsselungsschlüssel verwendet werden, beispielsweise indem man eine unterschiedliche Kombination von Adressbits auf ausgewählte Werte setzt, etwa alle auf Eins, alle auf Null oder eine Kombination von Einsen und Nullen. Alternativ kann ein ausgewählter Satz von Adressbits verändert werden durch Ausführen einer logischen oder arithmetischen Operation an ihm, wobei ausgewählte Bits in der Adressspeicherstelle zu lesen sind. Mit derselben Berechtigung kann irgendeine gewünschte Art und Weise der Verschlüsselung der Daten unter Verwendung des Verschlüsselungsschlüssels verwendet werden, beispielsweise durch Ausführen von arithmetischen und/oder logischen Funktionen unter Verwendung des Datenbytes und des Schlüsselbytes. Darüber hinaus kann eine solche Verschlüsselung vorgesehen werden, die alle Bits oder alternativ ein oder mehr Bits unverschlüsselt läßt. Falls gewünscht, kann eine Auswahl bezüglich der zu verschlüsselnden Bits sich mit der Zeit ändern, beispielsweise abhängig von Daten, die in dem gewünschten Datenbyte enthalten sind und/oder entsprechend dem Wert des Verschlüsselungsschlüssels. Darüber hinaus können in einer alternativen Ausführungsform die Bits des Schlüsselbytes im wesentlichen verwürfelt werden, indem man ihre Ordnung vor ihrer Verwendung zum Verschlüsseln des Datenbytes ändert.
  • Deterministische Fehlerisolation
  • Unter Bezugnahme auf Figur 4 beschreiben wir, wie das besondere Verfahren der Verschlüsselung, das wir in einer Ausführungsform gewählt haben, die deterministische Isolation von Bitfehlern innerhalb des geschützten Speichersegments ohne Offenbarung der innerhalb des geschützten Segments enthaltenen Information ermöglicht. Figur 4 detailliert eine Ausführungsform der Paarung von Verschlüsselungsschlüsselbytes mit Datenbytes. Der verschlüsselte Speicherausgang wird generell mit einem Testvektor oder einem vertrauenswürdigen Strom verschlüsselter Daten verglichen. Diskrepanzen in diesen beiden Datenbyteströmen (Ungleichheiten) indizieren einen Fehler in entweder dem Testvektor oder in den verschlüsselten Daten, abgebaut aus dem Speicher. Wenn solche Diskrepanzen entdeckt werden und der Testvektor hat sich als korrekt erwiesen, schließen wir, daß der verschlüsselte Datenstrom fehlerhaft ist. Wir definieren einen Bytefehler als einen Zustand, bei dem ein oder mehrere Bits innerhalb des Bytes den falschen Binärwert haben - jeder von diesen wird als ein Bitfehler bezeichnet. Jedes Schlüsselbyte codiert 7 Datenbytes und sich selbst. Für ein bestimmtes 32-Byte-Segment können wir ein Schlüsselbyte KB&sub1; wählen und seine zugeordneten Datenbytes DB&sub1;&sub1;-DB&sub1;&sub7; für die folgende Diskussion. Die Fehlermoden, demonstriert in einem bestimmten Bytestrom, fallen generell in eine von 3 folgenden Klassen.
  • 1) Einzelbitfehler in einem Datenbyte von dem Satz von Bytes (DB&sub1;&sub1;..,DB&sub4;&sub7;)
  • 2) Einzelbitfehler in einem Schlüsselbyte von dem Satz von Bytes (KB&sub1;, KB&sub2;, KB&sub3;, KB&sub4;)
  • 3) Doppelbitfehler, umfassend einen Fehler des Typs (1) und einen Fehler des Typs (2) derart, daß das Schlüssel- und Datenbyte durch das gewählte Verschlüsselungsmuster einander zugeordnet sind, und derart, daß die beiden fehlerhaften Bits dieselbe Relativposition innerhalb ihrer entsprechenden Bytes aufweisen. Ein Beispiel ist in Tabelle 5 wiedergegeben: Tabelle 5
  • Die indizierten Bits bilden einen Doppelbitfehler.
  • Einzelbitfehler in einem Datenbyte (Fehlermodus 1) sind einfach erfaßbar, weil sie nicht gleich ihren Gegenstücken in dem Testvektor sind. Mit einer Rückschau auf die Funktion, gewählt für die Verschlüsselung (EXKLUSIV-NICHT-ODER), wie in Tabelle 6 gezeigt, kann es zunächst so erscheinen, daß Einzelbitfehler in einem Schlüsselbyte unerkennbar sind (da jedes Schlüsselbyte für seine eigene Verschlüsselung verwendet wird - das Ergebnis also immer eine "1" sein wird). Tabelle 6
  • Es jedoch daran zu erinnern, daß jedes Schlüsselbyte auch 7 Datenbytes verschlüsselt. Der Schlüsseleinzelbitfehler wird repräsentiert als ein Datenbitfehler in jedem dieser 7 Datenbytes. Er wird als alleiniger Fehler durch die Tatsache identifiziert, daß jeder dieser 7 Datenbitfehler dieselben relativen Bitpositionen innerhalb der entsprechenden Bytes aufweist.
  • Das traditionelle Problem bei der Entdeckung von Doppelbitfehlern (Fehlermodus 3) bei Verschlüsselungsmechanismen, die eine EXKLUSIV- ODER/EXKLUSIV-NICHT-ODER-Verknüpfung verwenden, besteht darin, daß ein bestimmtes Schlüsselbyte nur ein Datenbyte codiert. Das bedeutet, daß der Fehlermodus 3 unerkennbar würde. Bei dem vorliegenden Verschlüsselungsschema manifestiert der Fehlermodus 3 sich selbst als ein Einzelbitfehler in jedern der 6 verbleibenden Datenbytes, zugeordnet dem jeweils fehlerbehafteten Schlüsselbyte/Bit. Als Beispiel wird auf den folgenden Vergleich von Testvektor und verschlüsselten Speicherdaten Bezug genommen.
  • Der korrekte verschlüsselte Datentestvektor wird mit dem verschlüsselten Datenstrom verglichen, um den Doppelbitfehler zu entdecken.
  • Dieser Ansatz für VERIFIKATION DER VERSCHLÜSSELUNG ermöglicht, daß die geschützte Information als ihr eigener VERSCHLÜSSELUNGSSCHLÜSSEL verwendet wird, wodurch der Benutzer nicht gezwungen ist, einen separaten Satz von Verschlüsselungsschlüsselbytes bereitzustellen, zu programmieren oder sicher aufzubewahren. Er unterstützt die deterministische Fehlerisolation, indern das genaue Fehlerbit, falls erforderlich, gefunden werden kann. Die Daten dienen als ihr eigener Verschlüsselungsschlüssel, so daß keine zusätzlichen Schaltkreise oder Oberfläche des integrierten Schaltkreises benötigt wird, um einen oder mehrere Sicherheitsschlüssel zu halten oder um einen Pseudozufallszähler zu schaffen, der eine Varietät von Verschlüsselungsschlüsseln, ausgehend von einem Startwert, erzeugt. Dieser Ansatz ermöglicht dem Benutzer, die verschlüsselte Version seines Programms für Verifikationszwecke wie Felddiagnose zu halten - dies ist inhärent sicherer als das Halten einer unverschlüsselten Version. Dieser Ansatz "versagt allmählich" - wenn irgendeines der Schlüsselbytes entdeckt wird, werden nur 8 Bytes der geschützten Daten offenbart. Diese 8 Bytes sind nicht benachbart und werden deshalb wahrscheinlich nicht einen vollständigen Rechnerbefehl offenbaren.
  • Die Verwendung der hier beschriebenen Speicherschutzarchitektur behält die Systemauslegungsflexibilität bei, wie sie auch ermöglicht, daß ein Rechnerprozessor entweder von einem internen Speicher arbeitet (wie man ihn bei einer Mikrosteuereinheit findet) oder von externem Speicher, ohne einen Kompromiß hinsichtlich der Sicherheit des geschützten Speichers eingehen zu müssen. Die Ausführung der spezifischen Schaltungen, die hier beschrieben sind, reduziert dramatisch die Verletzbarkeit dieser Speicherschutzarchitektur, da kein extern abgeleitetes Synchronisationssignal für den Prozeß der Verschlüsselung benötigt wird.
  • Das bestimmte hier wiedergegebene Beispiel unterteilt den geschützten Speicherinhalt in 32 Bytesegmente für die Verschlüsselungsverifikation. Jedes dieser 32 Bytesegmente wird durch eine 4 Bytetabelle verschlüsselt, die sich an der "Basis" des Segments befindet, wie in Figur 5 wiedergegeben. Alle 32 Bytesektionen der Ausgangsdaten sind schlüsselunabhängig.

Claims (17)

1. Eine Dateneinrichtung, umfassend:
Speichermittel für das Speichern von Daten;
einen Adressenbus für den Empfang einer Datenadresse, die eine Stelle innerhalb der Speichermittel definiert;
einen Datenbus, auf welchem eines der genannten Daten, abgespeichert innerhalb des Speichermittels an einer Stelle, definiert durch die Datenadresse, vorgesehen ist;
Mittel für das Bereitstellen einer Schlüsseladresse, basierend auf der Datenadresse, welche Schlüsseladresse eine Stelle eines anderen der genannten Daten innerhalb des Speichermittels definiert, welches andere Datum als ein Verschlüsselungsschlüssel in Verbindung mit der genannten Adresse dient; und
Mittel für das Verschlüsseln des Datums mit dem Verschlüsselungsschlüssel, um ein verschlüsseltes Datum auf dem Datenbus bereitzustellen.
2. Eine Dateneinrichtung nach Anspruch 1, bei der die Mittel für das Bereitstellen einer Schlüsseladresse Mittel für das Verändern der Datenadresse zum Bereitstellen der Schlüsseladresse umfaßt.
3. Eine Dateneinrichtung nach Anspruch 2, bei der die Schlüsseladresse bereitgestellt wird durch Setzen eines oder mehrerer Bits der Datenadresse auf vorbestimmte Werte.
4. Eine Dateneinrichtung nach Anspruch 2, bei der die Schlüsseladresse bereitgestellt wird durch Ausführen logischer oder arithmetischer Funktionen an einem oder mehreren Bits der Datenadresse.
5. Eine Dateneinrichtung nach Anspruch 1, bei der die Mittel für das Verschlüsseln Mittel für das logische oder arithmetische Kombinieren eines oder mehrerer Bits der Daten und des Verschlüsselungsschlüssels umfaßt.
6. Eine Dateneinrichtung nach Anspruch 3, bei der sich die Auswahl von Bits, die als das eine oder mehrere Bits dienen, für unterschiedliche Datenadressen ändert.
7. Eine Dateneinrichtung nach Anspruch 6, bei der die Auswahl des einen oder mehreren Bits abhängt von dem Wert der Daten und/oder der Datenadresse.
8. Eine Dateneinrichtung nach Anspruch 4, bei der die Auswahl von Bits, die als das eine oder mehrere Bits dienen, abhängt vom Wert der Daten und/oder der Datenadresse.
9. Eine Dateneinrichtung nach Anspruch 8, bei der die Auswahl des einen oder mehreren Bits abhängt von dem Wert der Daten und/oder der Datenadresse.
10. Eine Dateneinrichtung nach Anspruch 5, bei der die Auswahl des einen oder mehreren Bits abhängt von dem Wert der Daten und/oder der Datenadresse.
11. Ein Verfahren zum Verschlüsseln von Daten, umfassend die Schritte:
Empfangen einer Datenadresse, die eine Stelle von einem der Daten innerhalb eines Speichermittels, das zu verschlüsselnde Daten enthält, definiert;
Bereitstellen einer Schlüsseladresse, basierend auf der Datenadresse, welche Schlüsseladresse eine Stelle eines anderen der Daten innerhalb des Speichermittels definiert, welche anderen Daten als ein Verschlüsselungsschlüssel dienen; und
Verwenden des Verschlüsselungsschlüssels zum Verschlüsseln der Daten, wodurch verschlüsselte Daten bereitgestellt werden.
12. Ein Verfahren nach Anspruch 11, bei dem der Schritt der Bereitstellung einer Schlüsseladresse den Schritt der Veränderung der Datenadresse zum Bereitstellen der Schlüsseladresse umfaßt.
13. Ein Verfahren nach Anspruch 12, bei dem der Schritt der Veränderung der Datenadresse zum Bereitstellen der Schlüsseladresse den Schritt des Setzens eines oder mehrerer Bits oder der Datenadresse auf vordefinierte Werte umfaßt.
14. Ein Verfahren nach Anspruch 12, bei dem der Schritt der Veränderung der Datenadresse zum Bereitstellen der Schlüsseladresse den Schritt der Ausführung einer logischen oder arithmetischen Funktion an einem oder mehreren Bits der Datenadresse umfaßt.
15. Ein Verfahren nach Anspruch 11, bei dem der Schritt der Verschlüsselung das logische oder arithmetische Kombinieren eines oder mehrerer Bits der Daten und des Verschlüsselungsschlüssels umfaßt.
16. Eine Dateneinrichtung nach Anspruch 1, bei dem die Dateneinrichtung einen integrierten Schaltkreis umfaßt und das Mittel für das Verschlüsseln in Reaktion auf mindestens ein Steuersignal arbeitet, das nicht ohne weiteres extern bezüglich des integrierten Schaltkreises verfügbar ist.
17. Eine Dateneinrichtung nach Anspruch 16, bei der das Mittel für das Verschlüsseln asynchron arbeitet.
DE69120596T 1990-05-03 1991-04-19 Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung Expired - Fee Related DE69120596T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/518,117 US5058164A (en) 1990-05-03 1990-05-03 Encryption of streams of addressed information to be used for program code protection

Publications (2)

Publication Number Publication Date
DE69120596D1 DE69120596D1 (de) 1996-08-08
DE69120596T2 true DE69120596T2 (de) 1997-02-20

Family

ID=24062621

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69120596T Expired - Fee Related DE69120596T2 (de) 1990-05-03 1991-04-19 Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung

Country Status (5)

Country Link
US (1) US5058164A (de)
EP (1) EP0455064B1 (de)
JP (1) JPH04229346A (de)
KR (1) KR100227875B1 (de)
DE (1) DE69120596T2 (de)

Families Citing this family (150)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG46177A1 (en) * 1989-12-13 1998-02-20 Ibm Computer system security device
JPH03276345A (ja) * 1990-03-27 1991-12-06 Toshiba Corp マイクロコントローラ
JP2862030B2 (ja) * 1991-06-13 1999-02-24 三菱電機株式会社 暗号化方式
US6963859B2 (en) 1994-11-23 2005-11-08 Contentguard Holdings, Inc. Content rendering repository
US5629980A (en) * 1994-11-23 1997-05-13 Xerox Corporation System for controlling the distribution and use of digital works
US6865551B1 (en) 1994-11-23 2005-03-08 Contentguard Holdings, Inc. Removable content repositories
US5715403A (en) * 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US7117180B1 (en) 1994-11-23 2006-10-03 Contentguard Holdings, Inc. System for controlling the use of digital works using removable content repositories
US5638443A (en) * 1994-11-23 1997-06-10 Xerox Corporation System for controlling the distribution and use of composite digital works
US5634012A (en) * 1994-11-23 1997-05-27 Xerox Corporation System for controlling the distribution and use of digital works having a fee reporting mechanism
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US5644636A (en) * 1994-12-30 1997-07-01 Xtec, Incorporated Method and apparatus for securing data stored in semiconductor memory cells
US5606615A (en) * 1995-05-16 1997-02-25 Lapointe; Brian K. Computer security system
US5917910A (en) * 1995-10-16 1999-06-29 Sony Corporation Encrypting method and apparatus, recording method, decrypting method and apparatus, and recording medium
US5812883A (en) * 1995-11-22 1998-09-22 Mitsubishi Chemical America, Inc. System for reading and storing formatting information after formatting a first storage medium and using the stored formatting information to format a second storage medium
JP2000503154A (ja) 1996-01-11 2000-03-14 エムアールジェイ インコーポレイテッド デジタル所有権のアクセスと分配を制御するためのシステム
US5892826A (en) * 1996-01-30 1999-04-06 Motorola, Inc. Data processor with flexible data encryption
JP3747520B2 (ja) * 1996-01-30 2006-02-22 富士ゼロックス株式会社 情報処理装置及び情報処理方法
CA2173688C (en) * 1996-04-09 2000-01-18 Hideo Shimizu Encryption apparatus and method capable of controlling encryption process in accordance with an internal state
US6760779B1 (en) * 1996-07-08 2004-07-06 William K. Riceman Apparatus and method for high speed data communication
KR100201396B1 (ko) * 1996-07-20 1999-06-15 구본준 이피롬의 비화코드 해독 방지회로
FR2758898B1 (fr) * 1997-01-28 1999-03-05 Sagem Procede de preservation de l'integrite de donnees logiciel
US6233684B1 (en) 1997-02-28 2001-05-15 Contenaguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermaking
KR100253328B1 (ko) * 1997-09-30 2000-05-01 김영환 메모리의 데이터 보호회로
US6345359B1 (en) * 1997-11-14 2002-02-05 Raytheon Company In-line decryption for protecting embedded software
US7068787B1 (en) 1998-10-23 2006-06-27 Contentguard Holdings, Inc. System and method for protection of digital works
US7286665B1 (en) 1999-04-06 2007-10-23 Contentguard Holdings, Inc. System and method for transferring the right to decode messages
US6859533B1 (en) 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US7356688B1 (en) 1999-04-06 2008-04-08 Contentguard Holdings, Inc. System and method for document distribution
US6937726B1 (en) 1999-04-06 2005-08-30 Contentguard Holdings, Inc. System and method for protecting data files by periodically refreshing a decryption key
US6289450B1 (en) 1999-05-28 2001-09-11 Authentica, Inc. Information security architecture for encrypting documents for remote access while maintaining access control
JP4106156B2 (ja) * 1999-07-07 2008-06-25 理想科学工業株式会社 孔版印刷装置
GB9920502D0 (en) 1999-09-01 1999-11-03 Ncr Int Inc Portable terminal
US6885748B1 (en) 1999-10-23 2005-04-26 Contentguard Holdings, Inc. System and method for protection of digital works
US6741705B1 (en) * 2000-02-23 2004-05-25 Cisco Technology, Inc. System and method for securing voice mail messages
US7073199B1 (en) 2000-08-28 2006-07-04 Contentguard Holdings, Inc. Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine
US20030196120A1 (en) 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for automatic deployment of a rendering engine
US6931545B1 (en) 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
US7743259B2 (en) 2000-08-28 2010-06-22 Contentguard Holdings, Inc. System and method for digital rights management using a standard rendering engine
JP2002105639A (ja) * 2000-09-25 2002-04-10 L'air Liquide Mocvd処理用の銅原料液及びその製造方法
US7343324B2 (en) 2000-11-03 2008-03-11 Contentguard Holdings Inc. Method, system, and computer readable medium for automatically publishing content
US6978376B2 (en) 2000-12-15 2005-12-20 Authentica, Inc. Information security architecture for encrypting documents for remote access while maintaining access control
US6912294B2 (en) 2000-12-29 2005-06-28 Contentguard Holdings, Inc. Multi-stage watermarking process and system
US7206765B2 (en) 2001-01-17 2007-04-17 Contentguard Holdings, Inc. System and method for supplying and managing usage rights based on rules
AU2002234254B2 (en) 2001-01-17 2005-04-21 Contentguard Holdings, Inc. Method and apparatus for managing digital content usage rights
US6754642B2 (en) 2001-05-31 2004-06-22 Contentguard Holdings, Inc. Method and apparatus for dynamically assigning usage rights to digital works
US7774279B2 (en) 2001-05-31 2010-08-10 Contentguard Holdings, Inc. Rights offering and granting
US7028009B2 (en) * 2001-01-17 2006-04-11 Contentguardiholdings, Inc. Method and apparatus for distributing enforceable property rights
US8069116B2 (en) 2001-01-17 2011-11-29 Contentguard Holdings, Inc. System and method for supplying and managing usage rights associated with an item repository
DE10101972A1 (de) * 2001-01-17 2002-07-25 Siemens Ag Vorrichtung mit einem Steuergerät und einem nicht-flüchtigen Speicher sowie Verfahren zum Betreiben einer solchen Vorrichtung
US7155011B2 (en) * 2001-03-13 2006-12-26 Victor Company Of Japan, Limited Encryption method, decryption method, and recording and reproducing apparatus
US7185205B2 (en) * 2001-03-26 2007-02-27 Galois Connections, Inc. Crypto-pointers for secure data storage
WO2002079955A2 (en) * 2001-03-28 2002-10-10 Nds Limited Digital rights management system and method
US6895503B2 (en) 2001-05-31 2005-05-17 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US8275709B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US8001053B2 (en) 2001-05-31 2011-08-16 Contentguard Holdings, Inc. System and method for rights offering and granting using shared state variables
US7725401B2 (en) 2001-05-31 2010-05-25 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US8275716B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US6973445B2 (en) * 2001-05-31 2005-12-06 Contentguard Holdings, Inc. Demarcated digital content and method for creating and processing demarcated digital works
US7152046B2 (en) 2001-05-31 2006-12-19 Contentguard Holdings, Inc. Method and apparatus for tracking status of resource in a system for managing use of the resources
US6876984B2 (en) 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US8099364B2 (en) 2001-05-31 2012-01-17 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US6976009B2 (en) 2001-05-31 2005-12-13 Contentguard Holdings, Inc. Method and apparatus for assigning consequential rights to documents and documents having such rights
US7222104B2 (en) * 2001-05-31 2007-05-22 Contentguard Holdings, Inc. Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US7853531B2 (en) 2001-06-07 2010-12-14 Contentguard Holdings, Inc. Method and apparatus for supporting multiple trust zones in a digital rights management system
AU2002312351B2 (en) * 2001-06-07 2006-11-30 Contentguard Holdings, Inc. Method and apparatus managing the transfer of rights
WO2002101494A2 (en) 2001-06-07 2002-12-19 Contentguard Holdings, Inc. Protected content distribution system
US7774280B2 (en) * 2001-06-07 2010-08-10 Contentguard Holdings, Inc. System and method for managing transfer of rights using shared state variables
JP2003134106A (ja) * 2001-10-22 2003-05-09 Victor Co Of Japan Ltd 暗号化方法、復号化方法及び装置、並びに情報記録媒体
US8065713B1 (en) 2001-12-12 2011-11-22 Klimenty Vainstein System and method for providing multi-location access management to secured items
US7260555B2 (en) 2001-12-12 2007-08-21 Guardian Data Storage, Llc Method and architecture for providing pervasive security to digital assets
US7921450B1 (en) 2001-12-12 2011-04-05 Klimenty Vainstein Security system using indirect key generation from access rules and methods therefor
US7631184B2 (en) 2002-05-14 2009-12-08 Nicholas Ryan System and method for imposing security on copies of secured items
US7562232B2 (en) 2001-12-12 2009-07-14 Patrick Zuili System and method for providing manageability to security information for secured items
US7380120B1 (en) 2001-12-12 2008-05-27 Guardian Data Storage, Llc Secured data format for access control
US7565683B1 (en) 2001-12-12 2009-07-21 Weiqing Huang Method and system for implementing changes to security policies in a distributed security system
US8006280B1 (en) 2001-12-12 2011-08-23 Hildebrand Hal S Security system for generating keys from access rules in a decentralized manner and methods therefor
US7921288B1 (en) 2001-12-12 2011-04-05 Hildebrand Hal S System and method for providing different levels of key security for controlling access to secured items
US10360545B2 (en) 2001-12-12 2019-07-23 Guardian Data Storage, Llc Method and apparatus for accessing secured electronic data off-line
US10033700B2 (en) 2001-12-12 2018-07-24 Intellectual Ventures I Llc Dynamic evaluation of access rights
US7921284B1 (en) 2001-12-12 2011-04-05 Gary Mark Kinghorn Method and system for protecting electronic data in enterprise environment
US7681034B1 (en) 2001-12-12 2010-03-16 Chang-Ping Lee Method and apparatus for securing electronic data
US7783765B2 (en) 2001-12-12 2010-08-24 Hildebrand Hal S System and method for providing distributed access control to secured documents
USRE41546E1 (en) 2001-12-12 2010-08-17 Klimenty Vainstein Method and system for managing security tiers
US6889210B1 (en) * 2001-12-12 2005-05-03 Pss Systems, Inc. Method and system for managing security tiers
US7478418B2 (en) 2001-12-12 2009-01-13 Guardian Data Storage, Llc Guaranteed delivery of changes to security policies in a distributed system
US7178033B1 (en) 2001-12-12 2007-02-13 Pss Systems, Inc. Method and apparatus for securing digital assets
US7930756B1 (en) 2001-12-12 2011-04-19 Crocker Steven Toye Multi-level cryptographic transformations for securing digital assets
US7950066B1 (en) 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US8176334B2 (en) 2002-09-30 2012-05-08 Guardian Data Storage, Llc Document security system that permits external users to gain access to secured files
US8613102B2 (en) 2004-03-30 2013-12-17 Intellectual Ventures I Llc Method and system for providing document retention using cryptography
US8051303B2 (en) * 2002-06-10 2011-11-01 Hewlett-Packard Development Company, L.P. Secure read and write access to configuration registers in computer devices
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems
US6920566B2 (en) * 2002-07-12 2005-07-19 Phoenix Technologies Ltd. Secure system firmware by disabling read access to firmware ROM
KR100474526B1 (ko) * 2002-07-19 2005-03-10 매그나칩 반도체 유한회사 외부 프로그램 코드를 보호할 수 있는 컨트롤 시스템
US8171567B1 (en) 2002-09-04 2012-05-01 Tracer Detection Technology Corp. Authentication method and system
US7512810B1 (en) 2002-09-11 2009-03-31 Guardian Data Storage Llc Method and system for protecting encrypted files transmitted over a network
US7836310B1 (en) 2002-11-01 2010-11-16 Yevgeniy Gutnik Security system that uses indirect password-based encryption
US7890990B1 (en) 2002-12-20 2011-02-15 Klimenty Vainstein Security system with staging capabilities
US7577838B1 (en) 2002-12-20 2009-08-18 Alain Rossmann Hybrid systems for securing digital assets
JP4891521B2 (ja) * 2003-03-28 2012-03-07 三洋電機株式会社 データ入出力方法、およびその方法を利用可能な記憶装置およびホスト装置
US7257718B2 (en) 2003-05-12 2007-08-14 International Business Machines Corporation Cipher message assist instructions
US8707034B1 (en) 2003-05-30 2014-04-22 Intellectual Ventures I Llc Method and system for using remote headers to secure electronic files
EP1639462B1 (de) * 2003-06-27 2022-05-11 Oracle America, Inc. Hybridsystem zur verwirklichung von isolierten und koexistierenden ausführungsumgebungen für anwendungen und verfahren zur verwirklichung derselben
US7730543B1 (en) 2003-06-30 2010-06-01 Satyajit Nath Method and system for enabling users of a group shared across multiple file security systems to access secured files
US7555558B1 (en) 2003-08-15 2009-06-30 Michael Frederick Kenrich Method and system for fault-tolerant transfer of files across a network
US7703140B2 (en) 2003-09-30 2010-04-20 Guardian Data Storage, Llc Method and system for securing digital assets using process-driven security policies
DE10345385B4 (de) 2003-09-30 2005-10-06 Infineon Technologies Ag Entschlüsselung bzw. Verschlüsselung bei Schreibzugriffen auf einen Speicher
US8127366B2 (en) 2003-09-30 2012-02-28 Guardian Data Storage, Llc Method and apparatus for transitioning between states of security policies used to secure electronic documents
DE602005015178D1 (de) * 2004-02-05 2009-08-13 Research In Motion Ltd Speicherung auf einem chip,erzeugung und handhabung eines geheimschlüssels
JP5148996B2 (ja) 2004-03-12 2013-02-20 インジェニア・テクノロジー・(ユーケイ)・リミテッド 認証可能な印刷物品を作成し、その後に検証するための方法および装置
EP2131315A3 (de) * 2004-03-12 2011-01-26 Ingenia Technology Limited Authentifizierung durch großangelegte Beleuchtung
US7707427B1 (en) 2004-07-19 2010-04-27 Michael Frederick Kenrich Multi-level file digests
GB2417592B (en) 2004-08-13 2006-07-26 Ingenia Technology Ltd Authenticity verification of articles
GB2444139B (en) * 2004-08-13 2008-11-12 Ingenia Technology Ltd Authenticity verification methods products and apparatuses
US7458102B2 (en) * 2004-08-17 2008-11-25 Emc Corporation Information security architecture for remote access control using non-bidirectional protocols
US7653802B2 (en) * 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US7444523B2 (en) 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7734926B2 (en) * 2004-08-27 2010-06-08 Microsoft Corporation System and method for applying security to memory reads and writes
US7822993B2 (en) * 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
GB2419434A (en) * 2004-10-23 2006-04-26 Qinetiq Ltd Encrypting data on a computer's hard disk with a key derived from the contents of a memory
KR20070118589A (ko) * 2005-02-11 2007-12-17 유니버셜 데이터 프로텍션 코퍼레이션 마이크로프로세서 데이터 보안을 위한 방법 및 시스템
RU2417448C2 (ru) * 2005-07-27 2011-04-27 Инджениа Холдингс Лимитед Верификация аутентичности
US20070067644A1 (en) * 2005-08-26 2007-03-22 International Business Machines Corporation Memory control unit implementing a rotating-key encryption algorithm
US8566607B2 (en) * 2005-08-26 2013-10-22 International Business Machines Corporation Cryptography methods and apparatus used with a processor
US20070050642A1 (en) * 2005-08-26 2007-03-01 International Business Machines Corporation Memory control unit with configurable memory encryption
JP4469783B2 (ja) 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
WO2007072044A1 (en) 2005-12-23 2007-06-28 Ingenia Holdings (Uk) Limited Optical authentication
US9313027B2 (en) * 2005-12-29 2016-04-12 Proton World International N.V. Protection of a calculation performed by an integrated circuit
US7484060B2 (en) * 2006-04-27 2009-01-27 Blue Coat Systems, Inc. Systems and methods for protecting customer secrets during vendor troubleshooting
US7987358B1 (en) * 2006-06-09 2011-07-26 Xilinx, Inc. Methods of authenticating a user design in a programmable integrated circuit
US8863230B1 (en) * 2006-06-09 2014-10-14 Xilinx, Inc. Methods of authenticating a programmable integrated circuit in combination with a non-volatile memory device
US9251339B2 (en) * 2007-12-29 2016-02-02 International Business Machines Corporation Core dump privacy during application failure
GB2466311B (en) 2008-12-19 2010-11-03 Ingenia Holdings Self-calibration of a matching algorithm for determining authenticity
GB2466465B (en) 2008-12-19 2011-02-16 Ingenia Holdings Authentication
GB2476226B (en) 2009-11-10 2012-03-28 Ingenia Holdings Ltd Optimisation
WO2011159918A2 (en) * 2010-06-16 2011-12-22 Vasco Data Security, Inc. Mass storage device memory encryption methods, systems, and apparatus
US9128876B2 (en) 2011-12-06 2015-09-08 Honeywell International Inc. Memory location specific data encryption key
US8539601B2 (en) 2012-01-17 2013-09-17 Lockheed Martin Corporation Secure data storage and retrieval
US9152801B2 (en) * 2012-06-28 2015-10-06 Steven W. Cooke Cryptographic system of symmetric-key encryption using large permutation vector keys
US10102390B2 (en) 2012-06-28 2018-10-16 Honeywell International Inc. Memory authentication with redundant encryption
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US9729320B2 (en) * 2014-02-25 2017-08-08 Cavium, Inc. Apparatus and method for software enabled access to protected hardware resources
CN104881611B (zh) 2014-02-28 2017-11-24 国际商业机器公司 保护软件产品中的敏感数据的方法和装置
IL234956A (en) * 2014-10-02 2017-10-31 Kaluzhny Uri Data bus protection with enhanced key entropy
US10013363B2 (en) 2015-02-09 2018-07-03 Honeywell International Inc. Encryption using entropy-based key derivation
US10708073B2 (en) 2016-11-08 2020-07-07 Honeywell International Inc. Configuration based cryptographic key generation
CN110268392A (zh) * 2017-01-10 2019-09-20 瑞萨电子美国有限公司 安全架构和方法
KR102659866B1 (ko) * 2022-02-09 2024-04-22 김봉묵 꼬치 구이장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4087626A (en) * 1976-08-04 1978-05-02 Rca Corporation Scrambler and unscrambler for serial data
DE2658065A1 (de) * 1976-12-22 1978-07-06 Ibm Deutschland Maschinelles chiffrieren und dechiffrieren
US4246638A (en) * 1978-09-14 1981-01-20 Thomas William J Method and apparatus for controlling usage of a programmable computing machine
JPS59501128A (ja) * 1982-06-21 1984-06-28 エス・ピ−・エル・ソフトウエア・プロテクト・ア−・ゲ− デジタル情報コ−ド化方法および装置
US4847902A (en) * 1984-02-10 1989-07-11 Prime Computer, Inc. Digital computer system for executing encrypted programs
CH666972A5 (de) * 1984-07-02 1988-08-31 Software Protect Ltd Verfahren und einrichtung zur verschluesselten datenuebertragung in datenverarbeitungsanlagen.

Also Published As

Publication number Publication date
EP0455064B1 (de) 1996-07-03
EP0455064A2 (de) 1991-11-06
US5058164A (en) 1991-10-15
JPH04229346A (ja) 1992-08-18
DE69120596D1 (de) 1996-08-08
KR100227875B1 (ko) 1999-11-01
EP0455064A3 (en) 1991-11-21
KR910020560A (ko) 1991-12-20

Similar Documents

Publication Publication Date Title
DE69120596T2 (de) Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung
DE69729557T2 (de) Verfahren und gerät zum softwarezugriff auf eine mikroprozessorseriennummer
DE69729558T2 (de) Verfahren und vorrichtung zum verschlüsseln und entschlüsseln von mikroprozessorseriennummern
DE19782169C2 (de) Kryptographisch geschütztes Seitenwechsel-Subsystem
EP0932867B1 (de) Elektronische datenverarbeitungsschaltung
DE60013424T2 (de) Datenverarbeitungsvorrichtung und integrierter Schaltkreis
DE112009002502T5 (de) Multilayer inhalte-schützender Mikrocontoller
DE60303126T2 (de) Verfahren und vorrichtung zum sicheren scan-testen
EP0965076B1 (de) Elektronische datenverarbeitungseinrichtung und -system
EP0155399A2 (de) Schutzanordnung zur Verhinderung der unerlaubten Ausführung eines Programms
DE3855294T2 (de) Mikrorechner mit Speicher
DE102009017496B4 (de) Speicherzugriff in einem System mit Speicherschutz
DE102014208855A1 (de) Verfahren zum Durchführen einer Kommunikation zwischen Steuergeräten
DE102014208851A1 (de) Verfahren zum Verhindern eines unbefugten Betriebs eines Kraftfahrzeugs
DE102014208838A1 (de) Verfahren zum Betreiben eines Steuergeräts
DE102019110501A1 (de) Fehlerkorrekturcode-speichersicherheit
DE2801518A1 (de) Datenverarbeitungssystem mit speicher-schutzeinrichtung
DE102016210788B4 (de) Komponente zur Verarbeitung eines schützenswerten Datums und Verfahren zur Umsetzung einer Sicherheitsfunktion zum Schutz eines schützenswerten Datums in einer solchen Komponente
DE102022105600A1 (de) Register-fehlerdetektor
DE2721599A1 (de) Verfahren und geraet zur verhinderung der ausgabe von fehlerhaften daten in digitalen datenverarbeitungseinrichtungen
EP0280035B1 (de) Verfahren zum Sichern von Programmen und zur Integritätskontrolle gesicherter Programme
EP0276450A1 (de) Datenschutzschaltung zur Sperrung der Uebertragung von Signalen über einen Bus
DE60101758T2 (de) Entschlüsselungsvorrichtung
DE102015201298A1 (de) Verfahren zum kryptographischen Bearbeiten von Daten
DE102019110440A1 (de) Replay-Schutz für Speicher auf der Basis eines Schlüsselauffrischens

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee