DE19781829C2 - Verfahren und Vorrichtung zum Schützen eines Flash-Speichers - Google Patents

Verfahren und Vorrichtung zum Schützen eines Flash-Speichers

Info

Publication number
DE19781829C2
DE19781829C2 DE19781829A DE19781829A DE19781829C2 DE 19781829 C2 DE19781829 C2 DE 19781829C2 DE 19781829 A DE19781829 A DE 19781829A DE 19781829 A DE19781829 A DE 19781829A DE 19781829 C2 DE19781829 C2 DE 19781829C2
Authority
DE
Germany
Prior art keywords
memory
flash memory
register
logic gate
access
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 - Lifetime
Application number
DE19781829A
Other languages
English (en)
Other versions
DE19781829T1 (de
Inventor
Phillip E Mattison
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE19781829C2 publication Critical patent/DE19781829C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written

Description

Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Schützen eines Flash-Speichers in einem Computersystem vor unbeabsichtigten oder nicht autori­ sierten Modifikationen.
Gegenwärtig beginnt ein PC, wenn er erstmalig initiali­ siert oder zurückgesetzt wird, die Ausführung eines Basis- Eingabe/Ausgabe-Systemprogramms (BIOS) an einem vorgegebenen Speicherplatz. Das BIOS führt zunächst einen Einschalt- Selbsttest (POST) aus, bei welchem sämtliche System-Hard­ ware-Einheiten (wie beispielsweise der Interrupt-Controller, der DMA-Controller und Zeitgeber/Zähler) getestet und für den normalen Betrieb programmiert werden. Nachdem der POST abgeschlossen ist, sucht das BIOS einen weiteren vorgegebe­ nen Speicherbereich nach BIOS-Erweiterungssoftware ab.
BIOS-Erweiterungssoftware kann auf Hardware-Erweite­ rungs-Einsteckkarten vorhanden sein. Typischerweise haben Graphikadapterkarten, LAN-Adapterkarten und andere Hardwa­ reerweiterungs-Einsteckkarten BIOS-Erweiterungssoftware. BIOS-Erweiterungssoftware gestattet es der Erweiterungshard­ ware, ihre eigenen Interrupt-Dienstprogramme in den BIOS- Funktionssatz abzubilden, wodurch der Funktionssatz an die Verwendung der Kunden-Hardware angepaßt wird.
Der BIOS-Funktionssatz wird in Form von Software-Inter­ rupts definiert, was bedeutet, daß das BIOS und irgendwelche BIOS-Erweiterungssoftware die Interrupt/Vektortabelle modi­ fizieren muß (BIOS-Software ist unter der Annahme geschrie­ ben, daß der Prozessor im reellen Modus arbeitet). Programme verwenden den BIOS-Funktionssatz, indem sie Software-Inter­ rupts erzeugen, welche die Adresse einer bestimmten BIOS- Funktion in der Interrupt-Vektortabelle finden und die Steuerung auf das Interrupt-Dienstprogramm übertragen.
Eine übliche, von DOS-Programmen verfolgte Prozedur be­ steht darin, die Interrupt-Vektortabelle zu modifizieren, um BIOS-Aufrufe (oder andere Interrupts, wie beispielsweise Ta­ statureingaben) abzufangen, irgendwelche relevanten Daten zu überprüfen oder zu verarbeiten und dann die Steuerung des Prozessors an das ursprüngliche Ziel-BIOS-Programm weiterzu­ leiten. Wenn beispielsweise eine Taste auf der Tastatur ge­ drückt wird, wird ein Hardware-Interrupt erzeugt, welches das BIOS veranlaßt, die relevanten Daten aus der Tastatur­ schnittstelle zu holen, die Daten in der erforderlichen Weise zu übersetzen und sie in einer Warteschlange zu spei­ chern. Später kann ein Programm ein Software-Interrupt er­ zeugen, das das BIOS auffordert, die nächste Tastatureingabe von der Tastatur zur Verfügung zu stellen.
Da das BIOS das erste Programm ist, das die Steuerung des Prozessors nach dem Rücksetzen erlangt, ist es kritisch für irgendwelche Sicherheitsanordnungen. Folglich muß das BIOS vor Modifikationen während der Zeiten geschützt werden, in denen die Maschine sich in einem ungesicherten Betriebs­ modus befindet, insbesondere in den Fällen, in denen das BIOS im Flash-Speicher gespeichert wird. Das BIOS ist im Flash-Speicher gespeichert, um eine Aktualisierung und Um­ programmierung des BIOS vor Ort zu gestatten.
Typischerweise wird der Zugriff auf das BIOS von einem System-Controller-Chip oder -Chipsatz gesteuert. Der System- Controller verkörpert sämtliche Standard-PC-Architekturfunk­ tionen, wie beispielsweise Interrupt-Controller, DMA-Con­ troller und Speicher-Controller. Diese Zugriffssteuerung um­ faßt eine Umprogrammierungsfunktion zum Modifizieren des Flash-Speichers ebenso wie Funktionen zum Zugreifen auf den Flash-Speicher zum Ausführen des in dem BIOS enthaltenen Programms.
Eine übliche Lösung, die gegenwärtig verwendet wird, um eine unabsichtliche Modifikation eines Flash-Speichers zu verhindern, ist es, eine Registerblockieranordnung zu ver­ wenden, bei der zwei oder mehr Register mit speziellen Wer­ ten in einer speziellen Sequenz beschrieben werden müssen, um die Umprogrammierung des Flash-Speichers zu gestatten. Ein Beispiel der gegenwärtigen Flash-Speicherschutzanordnung ist in Fig. 1 veranschaulicht, wo ein Register A2, ein er­ ster Schlüssel 4, ein erster Komparator 6, ein Register B8, ein zweiter Schlüssel 10, ein zweiter Komparator 14 und ein UND-Gatter 12 gezeigt sind. Das Register A2 empfängt Daten von dem Datenpfad 16, wenn es ein "Schreibfreigabe"-Signal auf der Schreibleitung 18 empfängt. Der Wert des Registers A 2 wird mit dem Wert des ersten Schlüssels 4 durch den Kompa­ rator 6 verglichen. Der Komparator 6 erzeugt ein Schreib­ freigabesignal an das UND-Gatter 12, sofern der Wert des Re­ gisters A2 gleich dem Wert des ersten Schlüssels 4 ist. In ähnlicher Weise vergleicht der Komparator 14 den in dem Re­ gister B8 enthaltenen Wert und den zweiten Schlüssel 10 und erzeugt ein "BIOS-Schreibfreigabe"-Signal auf der Signallei­ tung 20, wenn der in dem Register B enthaltene Wert gleich dem in dem zweiten Schlüssel 10 enthaltenen Wert ist.
Normalerweise enthalten nach dem Rücksetzen des die Re­ gisterverriegelung gemäß Fig. 1 enthaltenden Systems das Register A2 und das Register B8 den Wert Null. Zusätzlich kann auf das Register B8 zum Empfangen eines Werts nicht zugegriffen werden, da der Komparator 6 eine logische Null an das UND-Gatter 12 ausgibt, da der in dem Register A2 enthaltene Wert (d. h. Null) nicht gleich dem in dem Schlüs­ sel 4 enthaltenen Wert (d. h. der Hexadezimalzahl "0x00AA55FF") ist. Um ein Flash-Löschen und -Programmieren zu ermöglichen, muß das Register B8 einen Wert von "0xFF55AA00" enthalten. Um einen Zugriff auf das Register B 8 zu ermöglichen, muß das Register A2 einen Wert von "0x00AA55FF" enthalten, wie es in Fig. 1 gezeigt ist.
Somit muß, um die Umprogrammierung des Flash-BIOS-Pro­ gramms im Flash-Speicher zu ermöglichen, das Register A2 zunächst mit dem Wert "0x00AA55FF" über die Verwendung des Datenpfads 16 und der Schreibsignalleitung 18 geladen wer­ den. Wenn das Register A2 so konfiguriert worden ist, gibt der Komparator das "Schreibfreigabe"-Signal an das UND-Gat­ ter 12 aus, welches es einem nachfolgenden Schreibsignal auf der Schreibsignalleitung 18 gestattet, das Register B8 mit dem Wert "0xFF55AA00" über die Verwendung des Datenpfads 16 zu konfigurieren. Wenn das Register B8 so konfiguriert ist, gibt der Komparator 14 ein "BIOS-Schreibfreigabe"-Signal über die Signalleitung 20 aus, um den Zugriff auf den (nicht gezeigten) Flash-Speicher für eine Umprogrammierung zu ge­ statten.
Obwohl das Schema des Schreibens zweier spezieller Werte in einer speziellen Sequenz in zwei spezifische Register­ speicherplätze die Wahrscheinlichkeit eines versehentlichen Löschens reduziert, verhindert das Schema nicht ein unbeab­ sichtigtes oder böswilliges Löschen oder Umprogrammieren des Flash-Speichers, weil die Zugriffssequenz in irgendeiner Form durch den Hardware-Entwickler zur Verwendung durch ei­ nen Dritten BIOS-Programmentwickler veröffentlicht werden muß.
Aufgabe der Erfindung ist es daher, ein Schutzschema zu schaffen, welches nur autorisierten Personen gestattet, den Flash-Speicher zu modifizieren, ohne daß eine für jede zu schützende Maschine einzigartige Hardware vorgesehen werden muß.
Aus der deutschen Offenlegungsschrift DE 195 25 105 A1 ist ein Computersystem bekannt, bei dem ein BIOS in einem Flash-Speicher gespeichert ist und bei einem Boot-Vorgang in einen Schatten-RAM kopiert und anschließend nur von dort aus abgearbeitet werden kann. Für eine Aktualisierung des BIOS wird das neue BIOS in einen Update-Programmspeicher ge­ schrieben und ein Update-Flag gesetzt. Beim nächsten Initia­ lisieren des Systems wird das neue BIOS aus dem Update-Pro­ grammspeicher in den Flash-BIOS-Speicher kopiert.
Aus der europäischen Patentanmeldungsveröffentlichung Nr. 0 514 289 A1 ist ein Computersystem bekannt, bei dem die Daten (einschließlich Programme) eines BIOS zusammen mit ei­ nem Passwort zunächst in einem EEPROM gespeichert sind, auf den in einer von der normalen Art und Weise abweichenden Weise zugegriffen werden kann. Nach dem Einschalten des Com­ puters werden die Daten aus dem EEPROM gelesen und, mit Aus­ nahme des Passworts, in einen CMOS-Speicher gespeichert. Da auf den EEPROM nicht zugegriffen werden kann und nur das BIOS in dem CMOS-Speicher gelesen werden kann, ist es nicht autorisierten Personen unmöglich, das Passwort zu erlangen.
Die o. g. Aufgabe wird erfindungsgemäß durch ein Verfah­ ren mit den Merkmalen des Anspruchs 1 bzw. eine Vorrichtung mit den Merkmalen des Anspruchs 7 gelöst.
Um den Schutz des ein Programm, wie beispielsweise ein Basis-Eingabe/Ausgabe-System, enthaltenden Flash-Speichers vor nicht autorisierten Umprogrammierungsbemühungen zu schaffen, wird eine Systemspeichersteuereinrichtung vorgese­ hen, welche einen Modus zur Verfügung stellt, in dem der Prozessor darauf beschränkt ist, nur auf den Flash-Speicher zugreifen zu können (d. h. einen Modus, in dem der Prozessor nur Befehle aus dem Flash-Speicher und nicht aus irgendeinem anderen Speicher, wie beispielsweise einem Hauptspeichersy­ stem oder einen Cache, ausführen kann). Dieser Modus kann durch Setzen oder Löschen eines Steuerregisters der System­ speichersteuereinrichtung freigegeben oder gesperrt werden. Der Standardmodus nach dem Rücksetzen des Systems wäre dann die Einschränkung der Befehlsausführung auf das Programm in dem Flash-Speicher.
Zusätzlich sollte die Speichersteuereinrichtung einen Registersatz enthalten, der verwendet werden kann, um be­ grenzte Bereiche der Zugreifbarkeit auf Speicherbereiche au­ ßerhalb des Flash-Speichers (d. h. Bereiche in dem Hauptsy­ stemspeicher) zu definieren. Diese Register wären nur dann für den Prozessor zugreifbar, wenn die Steuereinrichtung in dem eingeschränkten Zugriffsmodus arbeitet (d. h., wenn der Prozessor nur Befehle aus dem Flash-Speicher ausführt). Der Registersatz besteht aus einem oder mehreren Paaren von Re­ gistern, wobei jedes Paar aus einem Basis-Register und einem Grenze-Register besteht. Das Basis- und das Grenze-Register definieren einen Speicherbereich, der über den Flash-Spei­ cher hinausgeht, welcher für den Prozessor zugreifbar ist, wenn das System in dem eingeschränkten Modus arbeitet. Der Standardwert nach dem Rücksetzen ist 0 (d. h., nach dem Rücksetzen ist kein "erweiterter" Speicherzugriff in dem eingeschränkten Modus gestattet).
Zusätzlich wird ein Flash-Speicher-Programmierregister verwendet, um ein Löschen und Umprogrammieren des Flash- Speichers zu ermöglichen. Das Flash-Speicher-Programierregi­ ster ist verriegelt, um die genannten Funktionen nur dann zu gestatten, wenn die Speichersteuereinrichtung in dem einge­ schränkten Modus arbeitet.
Um einen Flash-Speicher umzuprogrammieren, müßte die folgende Prozedur verwendet werden:
  • 1. Ein Flash-Speicher-Aktualisierungprogramm, das ein neues Flash-Speicherabbild für den Flash-Speicher enthält, wird in den Hauptsystemspeicher geladen und ausgeführt. Das Flash-Speicher-Aktualisierungsprogramm enthält eine digitale Signatur oder "Unterschrift", welche durch den privaten Schlüssel des Verkäufers "unterzeichnet" wurde; die digitale Unterschrift ist der ursprüngliche Hash-Wert des Flash-Spei­ cher-Aktualisierungsprogramms, der mit dem privaten Schlüs­ sel des Verkäufers verschlüsselt ist.
  • 2. Das Flash-Speicher-Aktualisierungsprogramm ruft eine spezielle Funktion in dem aktuellen, in dem Flash-Spei­ cher enthaltenen Programm auf, die zur Installation des neuen Flash-Speicherabbilds auffordert. Dieser Aufruf spezi­ fiziert die Adresse und Größe des Flash-Speicher-Aktualisie­ rungsprogramms, das im Hauptsystemspeicher angeordnet ist.
  • 3. Das aktuelle Programm versetzt die Speichersteuer­ einrichtung in einen eingeschränkten Betriebsmodus und ge­ stattet einen erweiterten Speicherzugriff auf denjenigen Ab­ schnitt des Systemspeichers, der das Flash-Speicher-Aktuali­ sierungsprogramm enthält.
  • 4. Das aktuelle Programm überprüft dann die Quelle und den Inhalt des Flash-Speicher-Aktualisierungsprogramms (welches das neue Flash-Speicher-Abbild enthält), indem: (a) die digitale Unterschrift unter Verwendung des öffentlichen Schlüssels des Verkäufers, der in dem aktuellen Programm ge­ speichert ist, entschlüsselt wird, um den ursprünglichen Hash-Wert zu erlangen; (b) unabhängig ein Hash-Wert für das Flash-Speicher-Aktualisierungsprogramm, welches sich im Hauptsystemspeicher aufhält, berechnet wird; und (c) der ur­ sprüngliche, aus dem Entschlüsseln der digitalen Unter­ schrift erlangte Hash-Wert mit dem unabhängig erzeugten Has­ h-Wert verglichen wird, um eine Übereinstimmung zu finden.
  • 5. Sofern die Hash-Werte übereinstimmen, was anzeigt, daß das in dem Hauptspeicher enthaltene Flash-Speicher-Ak­ tualisierungsprogramm von dem autorisierten Erzeuger her­ rührt UND nicht modifiziert worden ist, so gestattet dann das in dem Flash-Speicher enthaltene aktuelle Progamm ein Umprogrammieren des Flash-Speichers und gibt die Steuerung des Prozessors an das Flash-Speicher-Aktualisierungsprogramm zurück.
  • 6. Das Flash-Speicher-Aktualisierungsprogramm löscht dann den Flash-Speicher und kopiert das neue Flash-Speicher­ abbild in den Flash-Speicher. Der neue Programmcode enthält die gleichen Spezialfunktionen wie das aktuelle Programm, um zukünftige Aktualisierungen vor Ort zu gestatten, und dar­ über hinaus eine Kopie des öffentlichen Schlüssels des Ver­ käufers. Zusätzlich kann bei einem anderen bevorzugten Aus­ führungsbeispiel jede nachfolgende Version des Flash-Spei­ cher-Aktualisierungsprogramms einen aktualisierten oder un­ terschiedlichen Schlüssel enthalten. Bei diesem anderen be­ vorzugten Ausführungsbeispiel, bei dem jede unterschiedliche Version des Aktualisierungsprogramms einen unterschiedlichen Schlüssel aufweist, wären mehrere Unterschriften erforder­ lich, eine für jeden Schlüssel, der zuvor verwendet wurde, um zu sichern, daß irgendwelche früheren Versionen des Pro­ gramms aktualisiert werden können, ohne sämtliche dazwi­ schenliegenden Revisionen zu durchlaufen. Darüber hinaus würde jedes Aktualisierungsprogramm sämtliche vorhergehenden Schlüssel enthalten, um zu sichern, daß der Flash-Speicher auch auf eine vorhergehende Version des Programmcodes zu­ rückprogrammiert ("downgraded") werden kann.
  • 7. Das Flash-Speicher-Aktualisierungsprogramm, was noch immer aus dem Hauptsystemspeicher heraus ausgeführt wird, überträgt dann die Steuerung des Prozessors auf das in dem neuen Flash-Speicherabbild enthaltene Programm, welches sich jetzt im Flash-Speicher befindet und welches wiederum die Speichersteuereinrichtung in den normalen Betrieb zu­ rückversetzt und seine normale Initialisierungssequenz be­ ginnt, so als ob ein Rücksetzen aufgetreten wäre.
Das vorgesehene Sicherheitsschema erfordert es nicht, daß das System in einem sicheren Modus initialisiert wird, und kann nach einer normalen Initialisierungsprozedur des Systems implementiert werden. So würde bei Rücksetzen des Systems das in dem Flash-Speicher angeordnete Programm (wie beispielsweise das BIOS) die Steuerung über den Prozessor erlangen, die Speichersteuereinrichtung so setzen, daß sie einen unbeschränkten Zugriff auf den Systemspeicher gestat­ tet, und normal fortfahren. Wenn es gewünscht wird, daß das Programm in dem Flash-Speicher aktualisiert werden soll, be­ ginnt die Ausführung mit dem oben beschriebenen Schritt 1, wobei es nicht erforderlich ist, daß der Prozessor oder das System vor der Ausführung des Flash-Speicher-Aktualisie­ rungsprogramms in einen speziellen Modus versetzt wird.
Durch die Verwendung des obigen Schutzschemas können nur Halter des privaten Schlüssels des Verkäufers Software zum Modifizieren des aktuellen Programms verteilen. Die Fähig­ keit, nicht verwendeten Speicher während des Flash-Umpro­ grammierungsprozesses zu sperren, hindert jeden Code, der nicht kryptographisch überprüft worden ist, daran, die Steuerung des Systems zu erlangen. Zusätzlich wäre es Erwei­ terungen des aktuellen Programms, welche nicht in dem Flash- Speicher oder dem autorisierten Speicherraum enthalten sind, nicht gestattet, ausgeführt zu werden, was somit "bösartige" Programme, die in einer Erweiterung enthalten sind, daran hinderte, unautorisierte Modifikationen des Flash-Speichers vorzunehmen. Der einzige Weg, den Sicherheitsprozeß zu un­ tergraben, besteht darin, den Betrieb der Hardware zu ändern oder den privaten Schlüssel des Verkäufers bloßzustellen. Die fundamentale Integrität des ursprünglichen Codes selbst und irgendwelcher Aktualisierungen kann durch ökonomische und administrative Mittel gesichert werden und erfordert folglich keine Hardware-Unterstützung, welche für jede Ma­ schine einzigartig ist.
Diese Erfindung hängt darüber hinaus nicht von dem BIOS ab, das die Steuerung vom Beginn des Anfangsladeprozesses zu übernehmen hat, um ein Durchkreuzen einer unautorisierten Modifikation zu sichern.
Diese Lösung zum Schützen empfindlicher Register in Ge­ räten wird nicht nur zum Freigeben einer Flash-Programmie­ rung verwendet, sondern darüber hinaus für andere Anwendun­ gen, bei denen eine versehentliche Modifikation eines Hard­ ware-Registers zu schwerwiegenden Konsequenzen führen könn­ te.
Andere Aufgaben, Merkmale und Vorteile der Erfindung werden aus den begleitenden Zeichnungen und aus der unten folgenden detaillierten Beschreibung ersichtlich.
KURZBESCHREIBUNG DER ZEICHNUNGEN
Fig. 1 veranschaulicht eine bekannte Registerverriege­ lung zum Verhindern einer Modifikation eines BIOS.
Fig. 2 veranschaulicht ein System, das nach einem be­ vorzugten Ausführungsbeispiel der Erfindung konfiguriert ist.
Fig. 3 veranschaulicht ein Ablaufdiagramm, das einen bevorzugten Betrieb der Erfindung enthält.
DETALLIERTE BESCHREIBUNG DER ERFINDUNG
Die vorliegende Erfindung schafft ein Verfahren und eine Einrichtung zum Vermeiden nicht autorisierter Modifikationen von Flash-Speichern. Zu Zwecken der Erläuterung sind spezi­ elle Ausführungsbeispiele angegeben, um ein besseres Ver­ ständnis der vorliegenden Erfindung zu erreichen. Für den Fachmann wird es jedoch beim Lesen dieser Offenbarung klar, daß die Erfindung auch ohne diese Details ausgeführt werden kann. Darüber hinaus sind, obwohl die vorliegende Erfindung anhand der Verwendung des Flash-Speichers beschrieben wird, die meisten, wenn nicht alle Aspekte der Erfindung ebenso auf Speicher im allgemeinen anwendbar. Darüber hinaus werden gut bekannte Elemente, Einrichtungen, Prozeßschritte und dergleichen nicht im Detail beschrieben, um eine Verdunklung der vorliegenden Erfindung zu vermeiden.
Außerdem wird auf Verschlüsselungsverfahren Bezug genom­ men, wie beispielsweise das kryptografische System mit öf­ fentlichem Schüssel von Rivest, Shamir, Adlemann (RSA), wel­ ches sowohl für die Verschlüsselung als auch für digitale Unterschriften verwendet werden kann. Ohne vom Geist und Um­ fang der Erfindung abzuweichen, kann jedoch ein beliebiges kryptografisches System verwendet werden, welches die Au­ thentisierung der Quelle und des Nachrichteninhalts gestat­ tet. Im wesentlichen wird die Kryptografie mit öffentlichem Schlüssel als sicheres System verwendet, um die Quelle und den Inhalt gesicherter Software zu überprüfen und um die beim größten Teil der Kryptografie verwendeten Schlüssel zu schützen.
Es wird darüber hinaus auf eine andere Technik, die "Hashing" genannt wird, Bezug genommen. Diese Technik ist ähnlich einer Prüfsummenoperation, aber mathematisch stren­ ger, was die Möglichkeit, die gleiche Prüfsumme an zwei un­ terschiedlichen Datenblöcken zu erhalten, auf einen vernach­ lässigbaren Anteil reduziert. Das "Hashing" ist ein Element bei dem Schlüssel und der Überprüfung und bei der Unter­ schrift. Ein Hash-Wert ist eine Zahl, die für einen Informa­ tionsblock einzigartig ist, so daß dann, wenn irgendein Teil der Information in dem Informationsblock modifiziert wird, ein nachfolgend erzeugter Hash-Wert unterschiedlich sein wird. Ob eine Prüfsummen- oder eine Hash-Operation verwendet wird und welcher Hash-Algorithmus physisch verwendet wird, ist für die hier beschriebene Erfindung nicht relevant. Der­ artige Entscheidungen sollen demjenigen überlassen bleiben, der das jeweilige sichere Softwaresystem, das auf der siche­ ren Plattform arbeitet, implementiert.
Eine "Unterschrift" wird für einen Informationsblock er­ zeugt, indem ein Sender einen Hash-Wert unter Verwendung der Daten in dem Informationsblock erzeugt und dann den erzeug­ ten Hash-Wert mit dem privaten Schlüssel des Senders ver­ schlüsselt. Somit ist der verschlüsselte Hash-Wert die Un­ terschrift des Verkäufers für diesen Informationsblock.
Um den von dem Verkäufer herrührenden Informationsblock zu validieren und um darüber hinaus festzustellen, ob keine Änderungen an dem Informationsblock vorgenommen worden sind, erzeugt der Empfänger einen Hash-Wert über den Informations­ block und entschlüsselt dann die Unterschrift unter Verwen­ dung des öffentlichen Schlüssels des Verkäufers, um den je­ nigen Hash-Wert zu erlangen, der ursprünglich erzeugt wurde. Wenn der von dem Empfänger erzeugte Hash-Wert mit dem aus der dem Informationsblock anhaftenden Unterschrift herausge­ arbeiteten entschlüsselten Hash-Wert übereinstimmt, dann kann man darauf vertrauen, daß der empfangene Informations­ block von dem Verkäufer herrührt und ohne Änderungen empfan­ gen worden ist.
Fig. 2 veranschaulicht ein System, daß gemäß einem be­ vorzugten Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist und das aufweist: einen Prozessor 102, eine Speichersteuereinrichtung 104, einen Systemspeicher 106, ei­ nen Flash-Speicher 108, einen Speicheradressen/Fenster-De­ tektor 110, ein Systemspeicher-Zugriffsfreigaberegister 112, eine Speicherfenstersteuerung 114, eine Flash-Speicher-Pro­ grammierlogik 116, ein Flash-Speicher-Programmierfreigabere­ gister 118, ein erstes UND-Gatter 120, ein ODER-Gatter 122, ein zweites UND-Gatter 124 und ein NICHT-Gatter 126.
Wie es in Fig. 2 dargestellt ist, ist der Prozessor 102 über eine Datensignalleitung 202 und eine Adreßsignalleitung 204 mit der Speichersteuereinrichtung 104 gekoppelt. Die Speichersteuereinrichtung 104 ist mit dem Systemspeicher 106 über die Verwendung einer Speicherdatensignalleitung 206 und einer Speicheradreßsignalleitung 208 gekoppelt. Die Spei­ cherfenstersteuerung 114 ist ebenfalls mit der Speicherda­ tensignalleitung 206 gekoppelt. Die Speicherfenstersteuerung 114 stellt darüber hinaus ein Ausgangssignal über die Be­ reichssignalleitung 214 an den Speicheradressen/Fenster-De­ tektor 110 zur Verfügung.
Die Speichersteuereinrichtung und der Prozessor 102 sind über die Verwendung einer Cache-Freigabesignalleitung 210 und Adreßsignalleitung 204 mit dem Speicheradressen/Fenster- Detektor 110 gekoppelt. Der Speicheradressen/Fenster-Detek­ tor 110 ist darüber hinaus mit dem ersten UND-Gatter 120 ge­ koppelt, dessen Ausgang mit dem Systemspeicher-Zugriffsfrei­ gaberegister 112 gekoppelt ist, um das Schreiben von Werten in das Systemspeicher-Zugriffsfreigaberegister 112 zu kon­ trollieren. Der Ausgang des Systemspeicher-Zugriffsfreigabe­ registers 112 und ein Zugriffsfreigabe-Ausgangssignal aus dem Speicheradressen/Fenster-Detektor 110 werden über das ODER-Gatter 122 und über Verwendung einer Zugriffsfreigabe­ signalleitung 212 der Speichersteuereinrichtung 104 eingege­ ben und von dieser empfangen. Der Ausgang des Systemspei­ cher-Zugriffsfreigaberegisters wird darüber hinaus dem NICHT-Gatter 126 eingegeben.
Das Ausgangssignal des NICHT-Gatters 126 wird der Spei­ cherfenstersteuereinrichtung 114 bzw. dem zweiten UND-Gatter 124 eingegeben. Das Ausgangssignal des zweiten UND-Gatters 124 wird dem Flash-Speicher-Programmierfreigaberegister 118 eingegeben, dessen Ausgang darüber hinaus mit der Flash- Speicher-Programmierlogik 116 verbunden ist. Die Flash-Spei­ cher-Progammierlogik 116 ist mit dem Flash-Speicher 108 ge­ koppelt.
Die Speichersteuereinrichtung 104 übersetzt die Adressen des von dem Prozessor 102 verwendeten Adreßraums in irgend­ welche Adressen, wie sie von anderen Systemkomponenten benö­ tigt werden. Unabhängig davon, ob beispielsweise der Prozessor 102 versucht, Befehle auszuführen oder auf Daten aus dem Flash-Speicher 108 oder Systemspeicher 106 zuzugreifen, gehen somit sämtliche Daten und Befehle durch die Speichersteuereinrichtung 104 hindurch. Die Speichersteuereinrichtung 104 kann den Prozessor 102 daran hindern, auf den Systemspeicher 106 zuzugreifen, indem sie die Anforderung, die zum Adreßraum gehört, der zum Zugreifen auf den Systemspeicher 106 verwendet wird, nicht übersetzt. Die Speichersteuereinrichtung 104 ist in der Lage, in einem Modus zu arbeiten, der Nichts cache-speichert. Bei dem bevorzugten Ausführungsbeispiel gestattet die Speichersteuereinrichtung 104 den Zugriff auf den Systemspeicher 106, während sie ein Zugriffsfreigabesignal über die Zugriffsfreigabesignalleitung 212 empfängt. Darüber hinaus weist die Speichersteuereinrichtung einen Modus auf, bei der ein Zugriff auf einen außerhalb des Prozessors angeordneten Cache-Speicher (einen Ebene-2-Cache) nicht verarbeitet wird. Dieser Modus wird in der unten be­ schriebenen Weise von dem Speicheradressen/Fenster-Detektor 110 gesteuert.
Das Systemspeicher-Zugriffsfreigaberegister 112 wird verwendet, um das Zugriffsfreigabesignal über die Zugriffs­ freigabesignalleitung 212 während des normalen Betriebs zu erzeugen. Durch Modifikation des Systemspeicher-Zugriffs­ freigaberegisters 112 wird der Zugriff auf den Systemspei­ cher 106 entweder freigegeben oder gesperrt, d. h. sämtliche Anforderungen zum Zugriff auf den Systemspeicher 106 werden durch den in dem Systemspeicher-Zugriffsfreigaberegister 112 enthaltenen Wert gesteuert. Jedoch kann der Zugriff auf den Systemspeicher 106 unabhängig von dem in dem Systemspeicher- Zugriffsfreigaberegister 112 enthaltenen Wert durch den Speicheradressen/Fenster-Detektor 110 in der unten beschrie­ benen Weise gestattet werden.
Bei einem bevorzugten Ausführungsbeispiel enthält das Systemspeicher-Zugriffsfreigaberegister 112 ein einziges Bit und kann als Flip-Flop implementiert sein. Wenn das System­ speicher-Zugriffsfreigaberegister 112 den logischen Wert "0" enthält, gestattet es die Speichersteuereinrichtung 104 dem Prozessor 102 nicht, den Systemspeicher 106 zuzugreifen, so­ fern nicht der Speicheradressen/Fenster-Detektor eine logi­ sche "1" zum ODER-Gatter 122 erzeugt, um einen logischen Wert "1" an die Speichersteuereinrichtung 104 über die Zu­ griffsfreigabesignalleitung 212 zur Verfügung zu stellen. Somit wird bei dem bevorzugten Ausführungsbeispiel das Zu­ griffsfreigabesignal durch einen logischen Wert "1" reprä­ sentiert.
Bei dem bevorzugten Ausführungsbeispiel wird beim Hoch­ fahren, so beispielsweise wenn ein Hardware-Rücksetzen vor­ genommen wurde, das Systemsspeicher-Zugriffsfreigaberegister 112 gesperrt, d. h. das Systemspeicher-Zugriffsfreigaberegi­ ster 112 enthält eine logische "0", womit der Zugriff auf den Systemspeicher 106 gesperrt wird. Somit kann nur auf das BIOS-Programm im Flash-Speicher 108 zur Ausführung zugegrif­ fen werden. Während des Systeminitialisierungsprozesses geht der Rücksetz-Vektor in das BIOS und startet die Ausführung in dem BIOS, wobei eines der ersten Dinge, die ausgeführt werden, das Schreiben in das Systemspeicher-Zugriffsfreiga­ beregister 112 ist, um sämtliche Zugriffe auf den System­ speicher 106 zu gestatten.
Der Speicheradressen/Fenster-Detektor 110, welcher die Fähigkeit hat, die von dem Prozessor 102 über die Verwendung der Adreßsignalleitung 204 gegriffenen Adressen zu überwa­ chen, stellt sicher, daß nur ein im Flash-Speicher 108 ab­ laufendes Programm das Systemspeicher-Zugriffsfreigaberegi­ ster 112 modifizieren kann, um es der Speichersteuereinrich­ tung 104 zu gestatten, einen Zugriff auf den Systemspeicher 106 zur Verfügung zu stellen. So kann ein im Systemspeicher 106 betriebenes Programm nicht das Systemspeicher-Zugriffs­ freigaberegister 112 modifizieren, da der Speicheradres­ sen/Fenster-Detektor 110 einen Zugriff auf das Systemspei­ cher-Zugriffsfreigaberegister 112 nur dann gestatten wird, wenn es erfaßt, daß der Prozessor 102 ein in dem Flash-Spei­ cher 108 enthaltenes Programm ausführt.
Der Speicheradressen/Fensterdetektor 110 arbeitet auf der Grundlage der Tatsache, daß bei einer linearen Adreßab­ bildung typischerweise der oberen 64 Kilobyte in dem ersten Megabyte der ursprünglichen PC-Architektur für das BIOS zu­ gewiesen sind und daß irgendwelche Erweiterungen des BIOS in einem Bereich unterhalb der dem BIOS zugewiesenen 64 Kilo­ byte zusammen mit irgendeinem anderen "Programmspeicher" enthalten sind. So sind die BIOS-Erweiterungen für Inter­ rupt-Controller und andere Programme und Daten in einem an­ deren Speicherbereich enthalten als die in dem Flash-Spei­ cher 108 enthaltenen Programme. Wenn eine Maschine wirklich PC-kompatibel ist, so sind die Adreßbereiche, aus welchen das BIOS ausgeführt werden wird, bekannt.
Zusätzlich kann, wie oben beschrieben, der Speicher­ adressen/Fenster-Detektor 110 das Sperren des Zugriffs auf den Systemspeicher 106 durch das Systemspeicher-Zugriffs­ freigaberegister 112 aufheben, indem er ein Signal mit einem logischen Wert "1" zum ODER-Gatter 122 erzeugt. Der Spei­ cheradressen/Fenster-Detektor 110 setzt sich über die Sper­ rung des Zugriffs auf den Systemspeicher 106 auf diejenigen Adressen hinweg, die in der Speicherfenstersteuerung 114 enthalten sind, wie unten beschrieben wird.
Darüber hinaus kann der Speicheradressen/Fenster-Detek­ tor 110 ein Cache-Speichern entweder lokal für den Prozessor 102 (ein Ebene-1-Cache) oder für einen außerhalb des Prozes­ sors angeordneten Cache (einen Ebene-2-Cache) über die Er­ zeugung eines Cache-Sperrsignal über die Cachefreigabesi­ gnalleitung 210 zum Prozessor 102 bzw. zur Speichersteuer­ einrichtung 104 sperren.
Somit kann der Speicheradressen/Fenster-Detektor 110 ein Steuersignal senden, daß ein Cache-Speichern an der Spei­ chersteuereinrichtung 104 und am Prozessor 102 gestattet, und der Speicheradressen/Fenster-Detektor 110 kann außerdem ein Freigabesignal aussenden, daß es einem Schreibsignal ge­ stattet, durch das Speicherzugriffs-Freigaberegister 112 weitergeleitet zu werden. Der Speicheradressen/Fenster-De­ tektor 110 kann Adressen überwachen um zu erfassen, ob die CPU in dem richtigen Bereich ausführt.
Die Speicherfenstersteuerung 114 öffnet einen Bereich von "gültigen" Speicheradressen, innerhalb derer der Prozes­ sor 102 auf das Aktualisierungsprogramm zugreifen kann, in­ dem der Speicheradressen/Fenster-Detektor 110 das Zugriffs­ freigabesignal aussendet, daß es der Speichersteuereinrich­ tung 104 wieder gestattet, einen Zugriff auf den Systemspei­ cher 106 während bestimmter Punkte zur Verfügung zu stellen. Bei einem bevorzugten Ausführungsbeispiel enthält die Spei­ cherfenstersteuerung 114 ein (nicht gezeigtes) Basis-Regi­ ster und ein (nicht gezeigtes) Grenze-Register. Die Spei­ cherfenstersteuerung 114 ist nur dann zugreifbar, wenn das Systemspeicher-Zugriffsfreigaberegister 112 in den gesperr­ ten Zustand versetzt ist.
Fig. 3 veranschaulicht ein Reihe von Operationen zum Um­ programmieren des Flash-Speichers 108 gemäß der vorliegenden Erfindung.
Im Block 302 wird ein Flash-Speicher-Aktualisierungspro­ gramm, das ein neues Flash-Speicher-Abbild (z. B. ein neues BIOS-Abbild) für den Flash-Speicher 108 der das aktuelle BIOS enthält, in den Systemspeicher 106 geladen und ausge­ führt. Das Flash-Speicher-Aktualisierungsprogramm enthält eine digitale Unterschrift, welche durch den privaten Schlüssel des Verkäufers "unterschrieben" ist; die digitale Unterschrift ist der ursprüngliche Hash-Wert des Flash-Spei­ cher-Aktualisierungsprogramms, nachdem der ursprüngliche Hash-Wert mit dem privaten Schlüssel des Verkäufers ver­ schlüsselt worden ist. Die Operation fährt dann im Block 304 fort.
Im Block 304 ruft das Flash-Speicher-Aktualisierungspro­ gramm, nachdem das Flash-Speicher-Aktualisierungsprogramm die Ausführung beginnt, eine spezielle Funktion in dem aktu­ ellen Flash-Speicher 108 enthaltenen Programm auf, die die Installation des neuen Flash-Speicherabbilds anfordert. Die­ ser Aufruf spezifiziert die Adresse und Größe des in dem Sy­ stemspeicher 106 angeordneten Flash-Speicher-Aktualisie­ rungsprogramms. Folglich übergibt das Flash-Speicher-Aktua­ lisierungsprogramm, das das neue BIOS-Abbild enthält, wenn es seine Ausführung beginnt, die Steuerung an das in dem Flash-Speicher 108 enthaltenen Programm (das aktuelle BIOS), welches zum Aktualisieren des aktuellen BIOS auffordert.
Die Adresse und Größe des Flash-Speicher-Aktualisie­ rungsprogramms wird in dem Basis-Register bzw. dem Grenze- Register, die in der Speicherfenstersteuereung 114 enthalten sind, gespeichert. Wie oben erwähnt, kann die Speicherfen­ stersteuerung 114 mehr als ein Paar von Basis-Register und Grenze-Register enthalten, um Situationen zu berücksichti­ gen, bei denen das Flash-Speicheraktualisierungsprogramm nicht in einem zusammenhängenden Adreßraum enthalten ist.
Im Block 306, nachdem der Prozessor nach dem aktuellen, in dem Flash-Speicher 108 enthaltenen Programm begonnen hat zu arbeiten, sperrt der Speicheradressen/Fenster-Detektor 110 zunächst die Cache-Speicherung durch den Prozessor 102 und die Speichersteuereinrichtung 104, indem er ein Cache- Sperrsignal über die Cache-Freigabesignalleitung 210 aussen­ det. Es sei angemerkt, daß Cache-Speicherungen nicht notwen­ digerweise während sämtlicher Phasen der Aktualisierung ge­ sperrt werden müssen. Die Cache-Speicher müssen einer Flush- Operation unterzogen werden (d. h. sämtliche Daten und Be­ fehle gelöscht werden), bis das Flash-Speicher-Aktualisie­ rungsprogramm (und das beigefügte neue Flash-Speicherabbild) authentisiert ist.
Der Prozessor 102 holt einen Befehl aus dem Flash-Spei­ cher 108 (z. B. dem BIOS) heran, und dieser Befehl ist ein Register-I/O-Schreibbefehl. Das BIOS wünscht ein Schreiben in das Systemspeicher-Zugriffsfreigaberegister 112, um den Zugriff auf den Systemspeicher 106 zu sperren. Wenn der Schreibbefehl mit einem Busschreibzyklus gesendet ist, stellt der Speicheradressen/Fenster-Detektor 110 fest, daß das vorhergehende Befehls-Heranholen, das den Register-I/O- Schreibbefehl herbeigeführt hat, von innerhalb des BIOS (aus dem Flash-Speicher) herrührt, und der Speicheradres­ sen/Fenster-Detektor 110 gestattet ein Abschließen des Regi­ ster-I/O-Schreibbefehls, da der Register-I/O-Schreibbefehl aus dem BIOS kam.
Wenn der Prozessor 102 ein in dem Systemspeicher 106 enthaltenes Programm ausführt und er einen Register-I/O- Schreibbefehl zum Modifizieren des Systemspeicher-Zugriffs­ freigaberegisters 112 ausgeben würde, würde der Busschreib­ zyklus für den Register-I/O-Schreibbefehl blockiert werden, da der Speicheradressen/Fenster-Detektor 110 feststellt, daß der Register-I/O-Schreibbefehl von dem das in dem System­ speicher 106 enthaltene Programm ausführenden Prozessor 102 herbeigeführt wurde. Folglich kann nur das in dem Flash- Speicher 108 enthaltene Programm den Zustand des Systemspei­ cher-Zugriffsfreigaberegisters 112 modifizieren.
Darüber hinaus erzeugt der Speicheradressen/Fenster-De­ tektor 110, wenn er erfaßt, daß der Prozessor 102 aus einem physikalischen Adreßraum im Flash-Speicher 108 ausführt, d. h. daß der Prozessor 102 Befehlscode aus dem aktuellen BIOS ausführt, ein Signal, das eine logische "1" repräsentiert, an das erste UND-Gatter 120, um ein Sperren des Systemspei­ cher-Zugriffsfreigaberegisters 112 zu gestatten, indem ein Signal mit einem logischen Wert von "0" in das Systemspei­ cher-Zugriffsfreigaberegister 112 geschrieben wird. Da das Systemspeicher-Zugriffsfreigaberegister 112 einen logischen Wert "0" enthält, wird das Ausgangssignal des ODER-Gatters 122 eine logische "0", solange nicht der Speicheradres­ sen/Fenster-Detektor ein Signal mit einem logischen Wert von "1" ausgibt, d. h., der Zugriff auf den Systemspeicher 106 wird nur dann gestattet, wenn der Speicheradressen/Fenster- Detektor 110 einen logischen Wert von "1" zu dem ODER-Gatter 122 ausgibt.
Wie oben erwähnt, enthält die Speicherfenstersteuerung 114 Register, welcher einen Satz von zugreifbaren Adreßräu­ men im Systemspeicher 106 definieren, nachdem der System­ speicher 106 "abgesperrt" (down locked) worden ist. Der Speicheradressen/Fenster-Dektektor 110 gestattet einen Zu­ griff auf einen Abschnitt des Systemspeichers 106, der durch die Speicherfenstersteuerung 114 definiert ist, wobei er sich über das Totalverbot des Zugreifens auf den Systemspei­ cher 106, das durch das Setzen des Systemspeicher-Zugriffs­ freigaberegisters 112 verursacht wurde, "hinwegsetzt", indem er die in der Speicherfenstersteuerung 114 enthaltenen Regi­ ster liest. Wenn der Prozessor 102 das Heranholen von Daten oder Befehlen aus diesem Satz von zugreifbaren Adreßräumen anfordert, sendet der Speicheradressen/Fenster-Detektor 110 eine Zugriffsfreigabe-Aufhebung aus, um Zugriffe auf die zu­ greifbaren Adreßräume zu gestatten, obwohl das Systemspei­ cher-Zugriffsfreigaberegister 112 anderenfalls den System­ speicher 106 "abgesperrt" hat. Insbesondere gestattet der Speicheradressen/Fenster-Detektor 110 nur der Speichersteue­ reinrichtung 104, einen Zugriff auf den Systemspeicher 106 zur Verfügung zu stellen, d. h., der Speicheradres­ sen/Fenster-Detektor 110 gibt ein Signal über die Zugriffs­ freigabesignalleitung mit einem logischen Wert "1" an die Speichersteuereinrichtung 104 aus, wenn der angeforderte Zu­ griff sich innerhalb des durch die Register in der Speicher­ fenstersteuerung 114 definierten Adreßraums befindet.
So versetzt das aktuelle Programm in dem Flash-Speicher 108 die Speichersteuereinrichtung 104 in einen "beschränkten" Betriebsmodus, welcher den Systemspeicher 106 sperrt, so daß der Prozessor 102 nicht beliebig auf den Sy­ stemspeicher 106 zugreifen kann. Dann gibt das aktuelle Pro­ gramm in dem Flash-Speicher 108 einen erweiterten Speicher­ zugriff auf Abschnitte des Systemspeichers frei, die das Flash-Speicher-Aktualisierungsprogramm enthalten.
Im Block 308 überprüft dann das aktuell im Flash-Spei­ cher 108 vorhandene Programm die Quelle und den Inhalt des Flash-Speicher-Aktualisierungsprogramms (welches das neue Flash-Speicherabbild enthält), indem: (a) die digitale Un­ terschrift oder Signatur unter Verwendung des in dem aktuel­ len Programm gespeicherten öffentlichen Schlüssels des Ver­ käufers entschlüsselt wird, um den usprünglichen Hash-Wert zu erlangen; (b) unabhängig ein Hash-Wert für das Flash- Speicher-Aktualisierungsprogramm, welches sich im Hauptsy­ stemspeicher aufhält, berechnet wird; und (c) der aus der Entschlüsselung der digitalen Unterschrift erlangte ur­ sprüngliche Hash-Wert mit dem unabhängig erzeugten Hash-Wert verglichen wird, um eine Übereinstimmung zu finden.
Wenn die Hash-Werte übereinstimmen, was anzeigt, daß das in dem Hauptspeicher enthaltene Flash-Speicher-Aktualisie­ rungsprogramm von dem autorisierten Erzeuger herrührt UND nicht modifiziert worden ist, dann fährt die Operation im Block 310 fort. Wenn die Hash-Werte nicht übereinstimmen, wird die Aktualisierung abgebrochen. Bei einem alternativen Ausführungsbeispiel kann der Benutzer über die fehlgegangene Aktualisierung in einem weiteren Schritt (nicht gezeigt) be­ nachrichtigt werden.
Im Block 310 gibt das in dem Flash-Speicher 108 enthal­ tene aktuelle Programm die Neuprogrammierung des Flash-Spei­ chers 108 frei, indem das Flash-Speicher-Programmierfreiga­ beregister 118 mit einem Programmierfreigabesignal gesetzt wird und die Steuerung des Prozessors 102 auf das im System­ speicher 106 enthaltene Flash-Speicher-Aktualisierungspro­ gramm an einem vorgebenen Eintrittspunkt übertragen wird. Wie oben beschrieben, hat das Systemspeicher-Zugriffsfreiga­ beregister 112, solange es sich in dem freigebenen Zustand befindet, eine Verriegelung zurück zum Flash-Speicherpro­ grammierfreigaberegister, die eine Umprogrammierung des Flash-Speichers 108 nicht gestattet. Um das Systemspeicher- Zugriffsfreigaberegister 112 in den gesperrten Zustand zu versetzen, welcher einer Zugriff auf das Flash-Speicher-Pro­ grammierfreigaberegister freigibt, ist es erforderlich, daß der Prozessor 102 das in dem Flash-Speicher 108 enthaltene ursprüngliche autorisierte Programm (z. B. das BIOS) aus­ führt. Bei diesem System kann nur das in dem Flash-Speicher 108 enthaltene ursprüngliche Programm sich selbst autorisie­ ren, ersetzt zu werden.
Im Block 312 löscht das Flash-Speicher-Aktualisierungs­ programm unter Verwendung der Flash-Speicher-Programmierlo­ gik 116 den Flash-Speicher 108 und kopiert das neue Flash- Speicherabbild in den Flash-Speicher 108. Der neue Programm­ code enthält die gleichen speziellen Funktionen wie das ak­ tuelle Programm, einschließlich einer Kopie des öffentlichen Schlüssels des Verkäufers, um zukünftige Aktualisierungen vor Ort zu unterstützen. Die Operation fährt dann mit dem Block 314 fort.
Im Block 314 überträgt das noch aus dem Systemspeicher 106 ausgeführte Flash-Speicher-Aktualisierungsprogramm die Steuerung oder Kontrolle über den Prozessor 102 auf das in dem neuen Flash-Speicherabbild enthaltene Programm, welches sich jetzt im Flash-Speicher 108 befindet und welches wie­ derum die Speichersteuereinrichtung 104 in den normalen Be­ trieb zurückbringt und seine normale Initialisierungssequenz startet, so als ob ein Rücksetzen aufgetreten wäre. Die Ak­ tualisierungsoperation endet dann.
Beim normalen Betrieb erlangt das Programm im Flash- Speicher 108 (BIOS) die Steuerung unmittelbar nach einem Hardware-Rücksetzen. Das BIOS initialisiert dann die gesamte Hardware und lädt dann das Betriebssystem, bevor es die Steuerung auf das Betriebssystem überträgt. Die vorliegende Erfindung funktioniert entsprechend der normalen Situation, da sie in der Lage ist, in einem nicht-sicheren Betriebsmo­ dus zu starten und dann in einen sicheren Betriebsmodus um­ zuschalten, um das BIOS zu aktualisieren und dann zurückzu­ gehen und zu reinitialisieren und neu zu starten. Folglich erfordert das Schutzschema es nicht, daß das System anfäng­ lich in einem sicheren Modus startet.
Obwohl das Flash-Speicher-Aktualisierungsprogramm die gesmate Flash-Speicher-Aktualisierungsfunktion startet, be­ steht der tatsächliche Schlüssel für die Sicherheit in dem System darin, zu sichern, daß nur dann, wenn der Prozessor 102 Befehle aus dem Flash-Speicher 108 ausführt, es möglich ist, in einen sicheren Betriebsmodus zu wechseln, d. h. nur dann, wenn der Prozessor 102 Befehle aus dem Flash-Speicher 108 ausführt, ist es möglich, das Systemspeicher-Zugriffs­ freigaberegister 112 zu modifizieren.
Zusätzlich schützt das System gegen Umgehungsversuche, bei denen ein bösartiges Interupt zu den BIOS-Erweiterungen zugeführt wird, weil es erzwingt, daß der Prozessor 102 nur aus dem speziellen physikalischen Bereich des Speichers her­ aus ausführen kann, der durch das autorisierte Flash-Spei­ cher-Programm belegt ist, und keine andere Software auf die Register zugreifen kann, die die Fähigkeit zum Ausführen der Aktualisierung steuert.
Es ist außerdem klar, daß, obwohl bei dem bevorzugten Ausführungsbeispiel die Schlüsselüberprüfung ausschließlich in Software ausgeführt worden ist, d. h., die Entschlüsse­ lung der Unterschrift und die unabhängie Erzeugung des Hash- Werts für das Aktualisierungsprogramm durch die Verwendung des Befehlscode aus dem Flash-Speicher 108 ausführenden Pro­ zessors 102 ausgeführt wurde, es klar ist, daß die Ent­ schlüsselung und der Vergleich der Hash-Werte durch die Ver­ wendung anderer Verfahren ausgeführt werden kann, die eine anwendungsspezifische integrierte Schaltung einschließen.
Während die vorliegende Erfindung insbesondere unter Be­ zugnahme auf die verschiedenen Figuren beschrieben worden ist, ist es klar, daß die Figuren nur der Veranschaulichung dienen und nicht im Sinne einer Einschränkung des Umfangs der Erfindung zu verstehen sind. Viele Änderungen und Modi­ fikationen können durch einen Fachmann an der Erfindung aus­ geführt werden, ohne vom Geist und Umfang der Erfindung ab­ zuweichen.

Claims (14)

1. Verfahren zum Schützen eines Flash-Speichers in einem Computersystem vor unbeabsichtigten oder nicht autorisierten Modifikationen, wobei das Computersystem ferner einen Pro­ zessor, einen Systemspeicher und eine Speichersteuereinrich­ tung aufweist, umfassend die Schritte:
Laden eines ein neues Flash-Speicherabbild und eine di­ gitale Unterschrift enthaltenden Flash-Speicheraktualisie­ rungsprogramms in einen Abschnitt des Systemspeichers;
Konfigurieren der Speichersteuereinrichtung, um den Pro­ zessor derart einzuschränken, daß er nur auf den Flash-Spei­ cher und den Abschnitt des Systemspeichers zugreifen kann;
Überprüfen des Flash-Speicher-Aktualisierungsprogramms unter Verwendung der digitalen Unterschrift; und
Aktualisieren des Flash-Speichers nur dann, wenn das Flash-Speicher-Aktualisierungsprogramm authentisch ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Ladeschritt umfaßt:
Laden des Flash-Speicher-Aktualisierungsprogramms in ei­ nen Satz von in dem Systemspeicher enthaltenen Adressen, wo­ bei der Satz von Adressen eine Startadresse und eine Länge hat;
Laden eines Basis-Registers mit der Startadresse; und
Laden eines Grenze-Registers mit der Länge.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß der Konfigurierungsschritt umfaßt:
Liefern eines Speicherzugriffssperrsignals an die Spei­ chersteuereinrichtung; und
Setzen eines Speicheradressenfensterdetektors, um ein Speicherzugriffsfreigabesignal an die Speichersteuereinrich­ tung zu erzeugen.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß der Konfigurierschritt das Liefern eines Cache-Zugriffs­ sperrsignals an die Speichersteuereinrichtung und den Pro­ zessor umfaßt.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Überprüfungsschritt die Schritte umfaßt:
Entschlüsseln der digitalen Unterschrift, um einen ur­ sprünglichen Hash-Wert zu erlangen;
Berechnen eines unabhängigen Hash-Werts für das Flash- Speicher-Aktualisierungsprogramm; und
Vergleichen des ursprünglichen Hash-Werts und des unab­ hängigen Hash-Werts hinsichtlich einer Übereinstimmung.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Aktualisierungsschritt umfaßt:
Setzen eines Flash-Speicher-Programmierfreigaberegi­ sters, um eine Programmierung des Flash-Speichers zu ermög­ lichen; und
Ausführen des Flash-Speicher-Aktualisierungsprogramms.
7. Vorrichtung zum Schützen eines Flash-Speichers in ei­ nem Computersystem vor unbeabsichtigten oder nicht autori­ sierten Modifikationen, wobei das Computersystem ferner ei­ nen Prozessor, einen Systemspeicher und eine Speichersteuer­ einrichtung aufweist, mit:
einem mit dem Prozessor, der Speichersteuereinrichtung, einem ersten Eingang eines ersten logischen Gatters und ei­ nem ersten Eingang eines zweiten logischen Gatters gekoppel­ ten Speicheradressen/Fenster-Detektor, wobei das erste logi­ sche Gatter einen mit der Speichersteuereinrichtung gekop­ pelten Ausgang und das zweite logische Gatter einen zweiten Eingang zum Empfangen eines Systemspeicher-Zugriffsfreigabe­ signals aufweist;
einer mit dem Systemspeicher, der Speichersteuereinrich­ tung, dem Flash-Speicher, dem Speicheradressen/Fenster-De­ tektor, einem Ausgang eines dritten logischen Gatters und einem ersten Eingang eines vierten logischen Gatters gekop­ pelte Speicherfenstersteuerung, wobei das vierte logische Gatter einen zweiten Eingang zum Empfangen eines Flash-Spei­ cher-Programmierfreigabesignals aufweist;
einem mit einem Ausgang des zweiten logischen Gatters, einem zweiten Eingang des ersten logischen Gatters und einem Eingang des dritten logischen Gatters gekoppeltes System­ speicher-Zugriffsfreigaberegister;
einem mit einem Ausgang des vierten logischen Gatters gekoppeltes Flash-Speicher-Programmierfreigaberegister; und
einer mit dem Flash-Speicher-Programmierfreigaberegister und dem Flash-Speicher gekoppelte Flash-Speicher-Program­ mierschaltung.
8. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß das erste logische Gatter ein ODER-Gatter ist.
9. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß das zweite logische Gatter ein UND-Gatter ist.
10. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß das dritte logische Gatter ein NICHT-Gatter ist.
11. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß das vierte logische Gatter ein UND-Gatter ist.
12. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß der Systemspeicher einen Cache-Speicher enthält.
13. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß die Speicherfenstersteuerung einen Registersatz enthält.
14. Vorrichtung nach Anspruch 13, dadurch gekennzeich­ net, daß der Registersatz ein Basis-Register und ein Grenze- Register umfaßt.
DE19781829A 1996-06-28 1997-06-25 Verfahren und Vorrichtung zum Schützen eines Flash-Speichers Expired - Lifetime DE19781829C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/673,301 US5778070A (en) 1996-06-28 1996-06-28 Method and apparatus for protecting flash memory
PCT/US1997/011301 WO1998000846A1 (en) 1996-06-28 1997-06-25 Method and apparatus for protecting flash memory

Publications (1)

Publication Number Publication Date
DE19781829C2 true DE19781829C2 (de) 2001-02-22

Family

ID=24702093

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19781829T Pending DE19781829T1 (de) 1996-06-28 1997-06-25 Verfahren und Vorrichtung zum Schützen von Flash-Speicher
DE19781829A Expired - Lifetime DE19781829C2 (de) 1996-06-28 1997-06-25 Verfahren und Vorrichtung zum Schützen eines Flash-Speichers

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE19781829T Pending DE19781829T1 (de) 1996-06-28 1997-06-25 Verfahren und Vorrichtung zum Schützen von Flash-Speicher

Country Status (8)

Country Link
US (3) US5778070A (de)
KR (1) KR100294829B1 (de)
CN (1) CN1229513B (de)
AU (1) AU3644897A (de)
DE (2) DE19781829T1 (de)
GB (1) GB2330228B (de)
TW (1) TW347515B (de)
WO (1) WO1998000846A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10137505B4 (de) * 2001-07-16 2005-06-23 Francotyp-Postalia Ag & Co. Kg Anordnung und Verfahren zum Ändern der Funktionalität eines Sicherheitsmoduls

Families Citing this family (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19525916A1 (de) * 1995-07-04 1997-01-09 Siemens Ag Verfahren zum Aktualisieren des Speicherinhaltes eines elektronischen Speichers eines elektronischen Gerätes
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US6275911B1 (en) * 1996-09-20 2001-08-14 Denso Corporation Memory writing device for an electronic device
GB2317722B (en) 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
DE19716015A1 (de) * 1997-04-17 1998-10-29 Ibm Einbringen von Information auf einer Chipkarte
US6119212A (en) * 1997-04-23 2000-09-12 Advanced Micro Devices, Inc. Root size decrease on a UNIX based computer system
KR100258966B1 (ko) * 1997-05-02 2000-06-15 윤종용 시리얼 통신을 이용한 바이오스 업그레이드 방법
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6272631B1 (en) * 1997-06-30 2001-08-07 Microsoft Corporation Protected storage of core data secrets
US7246098B1 (en) * 1997-07-15 2007-07-17 Silverbrook Research Pty Ltd Consumable authentication protocol and system
US6009524A (en) * 1997-08-29 1999-12-28 Compact Computer Corp Method for the secure remote flashing of a BIOS memory
US6611599B2 (en) * 1997-09-29 2003-08-26 Hewlett-Packard Development Company, L.P. Watermarking of digital object
US6094702A (en) * 1997-10-30 2000-07-25 Micron Technology, Inc. Method and apparatus for enabling access to computer system resources
US20020069316A1 (en) * 1998-04-15 2002-06-06 Mattison Phillip E. Method and apparatus for protecting flash memory
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6463535B1 (en) * 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
AUPP734298A0 (en) * 1998-11-26 1998-12-24 Aristocrat Leisure Industries Pty Ltd Electronic casino gaming with authentication and improved security
JP3219064B2 (ja) * 1998-12-28 2001-10-15 インターナショナル・ビジネス・マシーンズ・コーポレーション デジタルデータ認証システム
FR2788353B1 (fr) * 1999-01-11 2001-02-23 St Microelectronics Sa Microprocesseur avec circuits de protection pour securiser l'acces a ses registres
US6408387B1 (en) * 1999-01-22 2002-06-18 Intel Corporation Preventing unauthorized updates to a non-volatile memory
DE19911794B4 (de) * 1999-03-17 2005-10-06 Robert Bosch Gmbh Verfahren und Vorrichtung zur Absicherung bei Veränderung des Speicherinhalts von Steuergeräten
US6643374B1 (en) 1999-03-31 2003-11-04 Intel Corporation Duty cycle corrector for a random number generator
US6795837B1 (en) 1999-03-31 2004-09-21 Intel Corporation Programmable random bit source
US6757827B1 (en) 1999-04-26 2004-06-29 Unisys Corporation Autonomously secured image data
WO2001004753A1 (en) * 1999-07-14 2001-01-18 Recourse Technologies, Inc. System and method for tracking the source of a computer attack
US6981155B1 (en) * 1999-07-14 2005-12-27 Symantec Corporation System and method for computer security
US7117532B1 (en) * 1999-07-14 2006-10-03 Symantec Corporation System and method for generating fictitious content for a computer
US6715074B1 (en) * 1999-07-27 2004-03-30 Hewlett-Packard Development Company, L.P. Virus resistant and hardware independent method of flashing system bios
US7814337B2 (en) * 2000-01-06 2010-10-12 Super Talent Electronics, Inc. Secure flash-memory card reader with host-encrypted data on a flash-controller-mastered bus parallel to a local CPU bus carrying encrypted hashed password and user ID
US6826697B1 (en) 1999-08-30 2004-11-30 Symantec Corporation System and method for detecting buffer overflow attacks
US6996843B1 (en) 1999-08-30 2006-02-07 Symantec Corporation System and method for detecting computer intrusions
US7065657B1 (en) 1999-08-30 2006-06-20 Symantec Corporation Extensible intrusion detection system
US7085936B1 (en) 1999-08-30 2006-08-01 Symantec Corporation System and method for using login correlations to detect intrusions
US7203962B1 (en) 1999-08-30 2007-04-10 Symantec Corporation System and method for using timestamps to detect attacks
US6647400B1 (en) 1999-08-30 2003-11-11 Symantec Corporation System and method for analyzing filesystems to detect intrusions
DE19950118C2 (de) * 1999-10-18 2002-03-07 Texas Instruments Deutschland Verfahren zum Verhindern eines unbefugten Zugriffs auf einen Speicher
US6671407B1 (en) * 1999-10-19 2003-12-30 Microsoft Corporation System and method for hashing digital images
US6581159B1 (en) * 1999-12-23 2003-06-17 Intel Corporation Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
FI111567B (fi) * 1999-12-27 2003-08-15 Nokia Corp Menetelmä ohjelmamoduulin lataamiseksi
US6757832B1 (en) * 2000-02-15 2004-06-29 Silverbrook Research Pty Ltd Unauthorized modification of values in flash memory
US7073064B1 (en) * 2000-03-31 2006-07-04 Hewlett-Packard Development Company, L.P. Method and apparatus to provide enhanced computer protection
US6625729B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Company, L.P. Computer system having security features for authenticating different components
US6687721B1 (en) 2000-03-31 2004-02-03 Intel Corporation Random number generator with entropy accumulation
US7089595B1 (en) 2000-03-31 2006-08-08 Intel Corporation Device and method for disabling an override hardware pin assertion
US6792438B1 (en) * 2000-03-31 2004-09-14 Intel Corporation Secure hardware random number generator
WO2001077837A1 (en) * 2000-04-11 2001-10-18 Mathis Richard M Method and apparatus for computer memory protection and verification
TW461997B (en) * 2000-05-24 2001-11-01 Asustek Comp Inc Write protection method of programmable chipset software
JP2002014871A (ja) * 2000-06-29 2002-01-18 Fujitsu Ltd コンテンツチェック方法、コンテンツ更新方法、および処理装置
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7032114B1 (en) 2000-08-30 2006-04-18 Symantec Corporation System and method for using signatures to detect computer intrusions
US7484081B1 (en) * 2000-10-10 2009-01-27 Altera Corporation Method and apparatus for protecting designs in SRAM-based programmable logic devices
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US6728876B1 (en) * 2000-12-27 2004-04-27 Cisco Technology, Inc. Method and apparatus to use non-volatile read/write memory for bootstrap code and processes by relocating write instructions
US7350083B2 (en) * 2000-12-29 2008-03-25 Intel Corporation Integrated circuit chip having firmware and hardware security primitive device(s)
DE10113531A1 (de) * 2001-03-20 2002-10-17 Infineon Technologies Ag Datenträger
US6996721B2 (en) * 2001-03-27 2006-02-07 Micron Technology, Inc. Flash device security method utilizing a check register
US8458689B2 (en) * 2001-03-30 2013-06-04 Roderick A. Barman Method and apparatus for reprogramming engine controllers
US20020144121A1 (en) * 2001-03-30 2002-10-03 Ellison Carl M. Checking file integrity using signature generated in isolated execution
US7096497B2 (en) 2001-03-30 2006-08-22 Intel Corporation File checking using remote signing authority via a network
US20020147918A1 (en) * 2001-04-05 2002-10-10 Osthoff Harro R. System and method for securing information in memory
US7356188B2 (en) * 2001-04-24 2008-04-08 Microsoft Corporation Recognizer of text-based work
US6975743B2 (en) * 2001-04-24 2005-12-13 Microsoft Corporation Robust and stealthy video watermarking into regions of successive frames
US7020775B2 (en) 2001-04-24 2006-03-28 Microsoft Corporation Derivation and quantization of robust non-local characteristics for blind watermarking
US6996273B2 (en) * 2001-04-24 2006-02-07 Microsoft Corporation Robust recognizer of perceptually similar content
US6973574B2 (en) * 2001-04-24 2005-12-06 Microsoft Corp. Recognizer of audio-content in digital signals
CA2449138A1 (en) * 2001-05-30 2002-12-05 Endress + Hauser Wetzer Gmbh + Co. Kg Paperless recorder for tamper-proof recording of product process information
US7484105B2 (en) * 2001-08-16 2009-01-27 Lenovo (Singapore) Ptd. Ltd. Flash update using a trusted platform module
JP4121333B2 (ja) * 2001-08-27 2008-07-23 株式会社リコー 画像形成装置,プログラム更新方法および記録媒体
US7406674B1 (en) * 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US20030126459A1 (en) * 2001-12-28 2003-07-03 Chin-Jun Kao Method of protecting basic input/output system
US20030135744A1 (en) * 2002-01-11 2003-07-17 International Business Machines Corporation Method and system for programming a non-volatile device in a data processing system
US7017004B1 (en) * 2002-03-29 2006-03-21 Microsoft Corporation System and method for updating contents of a flash ROM
US7398554B1 (en) * 2002-04-02 2008-07-08 Winbond Electronics Corporation Secure lock mechanism based on a lock word
US20050251305A1 (en) * 2002-06-03 2005-11-10 Junkei Sato Electronic control apparatus
US20040003265A1 (en) * 2002-06-26 2004-01-01 International Business Machines Corporation Secure method for BIOS flash data update
US7095873B2 (en) * 2002-06-28 2006-08-22 Microsoft Corporation Watermarking via quantization of statistics of overlapping regions
US7006703B2 (en) 2002-06-28 2006-02-28 Microsoft Corporation Content recognizer via probabilistic mirror distribution
US20040015709A1 (en) * 2002-07-18 2004-01-22 Bei-Chuan Chen Software delivery device and method for providing software copy protection
JP2004054834A (ja) * 2002-07-24 2004-02-19 Matsushita Electric Ind Co Ltd プログラム開発方法、プログラム開発支援装置およびプログラム実装方法
EP1795993B1 (de) * 2002-07-30 2018-02-28 Fujitsu Limited Verfahren und Gerät zur Wiedergabe von Information mit einem Sicherheitsmodul
US6948041B2 (en) * 2002-10-24 2005-09-20 Micron Technology, Inc. Permanent memory block protection in a flash memory device
DE60304602T2 (de) * 2002-11-18 2006-12-28 Arm Ltd., Cherry Hinton Ausnahmearten innerhalb eines sicheren verarbeitungssystems
FR2848702B1 (fr) * 2002-12-12 2005-03-18 A S K Procede securise de modification de donnees enregistrees dans une carte a memoire
US7409721B2 (en) * 2003-01-21 2008-08-05 Symantac Corporation Network risk analysis
US7284136B2 (en) * 2003-01-23 2007-10-16 Intel Corporation Methods and apparatus for implementing a secure resume
EP1447733A1 (de) * 2003-02-17 2004-08-18 Hewlett-Packard Development Company, L.P. Datenverarbeitungssystem und Verfahren
JP2004287541A (ja) * 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd 不揮発性メモリのアクセス制御システム
US7644288B2 (en) * 2003-03-19 2010-01-05 Ricoh Company, Ltd. Image forming apparauts that checks authenticity of an update program
US20090267747A1 (en) * 2003-03-31 2009-10-29 Rivest Ronald L Security and Data Collision Systems and Related Techniques for Use With Radio Frequency Identification Systems
TWI266240B (en) * 2003-05-20 2006-11-11 Via Tech Inc A method preventing to re-write MAC address of DMI's peripheral devices
US6842371B2 (en) * 2003-06-03 2005-01-11 Micron Technology, Inc. Permanent master block lock in a memory device
US20040268143A1 (en) * 2003-06-30 2004-12-30 Poisner David I. Trusted input for mobile platform transactions
US7240201B2 (en) * 2003-08-01 2007-07-03 Hewlett-Packard Development Company, L.P. Method and apparatus to provide secure communication between systems
US7177888B2 (en) 2003-08-01 2007-02-13 Intel Corporation Programmable random bit source
US7228432B2 (en) * 2003-09-11 2007-06-05 Angelo Michael F Method and apparatus for providing security for a computer system
US8332652B2 (en) * 2003-10-01 2012-12-11 International Business Machines Corporation Computing device that securely runs authorized software
US7225318B2 (en) * 2003-10-08 2007-05-29 Intel Corporation Dynamic prefetch in continuous burst read operation
US7496958B2 (en) * 2003-10-29 2009-02-24 Qualcomm Incorporated System for selectively enabling operating modes of a device
US7831832B2 (en) * 2004-01-06 2010-11-09 Microsoft Corporation Digital goods representation based upon matrix invariances
US20050165690A1 (en) * 2004-01-23 2005-07-28 Microsoft Corporation Watermarking via quantization of rational statistics of regions
US7382880B2 (en) * 2004-01-26 2008-06-03 Hewlett-Packard Development Company, L.P. Method and apparatus for initializing multiple security modules
US7930503B2 (en) * 2004-01-26 2011-04-19 Hewlett-Packard Development Company, L.P. Method and apparatus for operating multiple security modules
CN1926541A (zh) * 2004-03-17 2007-03-07 Abb研究有限公司 用于数据一致性验证的设备和方法
US7770014B2 (en) * 2004-04-30 2010-08-03 Microsoft Corporation Randomized signal transforms and their applications
JP2006067488A (ja) * 2004-08-30 2006-03-09 Mitsubishi Electric Corp 携帯通信端末
US8612772B1 (en) 2004-09-10 2013-12-17 Altera Corporation Security core using soft key
US8566616B1 (en) 2004-09-10 2013-10-22 Altera Corporation Method and apparatus for protecting designs in SRAM-based programmable logic devices and the like
US20060080540A1 (en) * 2004-10-08 2006-04-13 Robert Arnon Removable/detachable operating system
US7130209B2 (en) * 2004-10-15 2006-10-31 Atmel Corporation Flexible OTP sector protection architecture for flash memories
US7809949B2 (en) * 2005-07-26 2010-10-05 Apple Inc. Configuration of a computing device in a secure manner
US9489496B2 (en) 2004-11-12 2016-11-08 Apple Inc. Secure software updates
US7523350B2 (en) * 2005-04-01 2009-04-21 Dot Hill Systems Corporation Timer-based apparatus and method for fault-tolerant booting of a storage controller
US7711989B2 (en) * 2005-04-01 2010-05-04 Dot Hill Systems Corporation Storage system with automatic redundant code component failure detection, notification, and repair
WO2007004219A2 (en) * 2005-07-04 2007-01-11 Discretix Technologies Ltd. System, device and method of verifying that a code is executed by a processor
KR100970040B1 (ko) * 2005-08-03 2010-07-16 엔엑스피 비 브이 보안키 보호 방법, 보안키 보호 방법에 사용되는 실행 전용 루틴을 구비한 컴퓨터 판독가능 저장 매체 및 보안 단말기
US8135958B2 (en) * 2005-11-22 2012-03-13 International Business Machines Corporation Method, system, and apparatus for dynamically validating a data encryption operation
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7500095B2 (en) 2006-03-15 2009-03-03 Dell Products L.P. Chipset-independent method for locally and remotely updating and configuring system BIOS
US8019994B2 (en) * 2006-04-13 2011-09-13 Hewlett-Packard Development Company, L.P. Authentication of a request to alter at least one of a BIOS and a setting associated with the BIOS
US7613891B2 (en) * 2006-05-04 2009-11-03 Intel Corporation Methods and apparatus for providing a read access control system associated with a flash device
US7603587B2 (en) * 2006-05-26 2009-10-13 Intel Corporation Updating a memory block without status logging
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
US8001385B2 (en) * 2006-06-21 2011-08-16 Intel Corporation Method and apparatus for flash updates with secure flash
US8190919B2 (en) * 2006-11-07 2012-05-29 Spansion Llc Multiple stakeholder secure memory partitioning and access control
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
DE112006004173T5 (de) * 2006-12-15 2009-11-12 Agere Systems, Inc. Schutz eines programmierbaren Speichers gegen unberechtigte Veränderung
US7802069B2 (en) * 2007-03-07 2010-09-21 Harris Corporation Method and apparatus for protecting flash memory
US9053323B2 (en) * 2007-04-13 2015-06-09 Hewlett-Packard Development Company, L.P. Trusted component update system and method
US9354890B1 (en) 2007-10-23 2016-05-31 Marvell International Ltd. Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
US8095775B1 (en) * 2007-11-21 2012-01-10 Marvell International Ltd. Instruction pointers in very long instruction words
US7841436B2 (en) 2008-01-21 2010-11-30 Amigo Mobility International Personal mobility vehicle
US8132253B2 (en) * 2008-04-21 2012-03-06 Dell Products L.P. Memory security override protection for manufacturability of information handling systems
US9032151B2 (en) * 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
CN101839928B (zh) * 2009-03-19 2013-04-24 北京普源精电科技有限公司 数字示波器和数据存取方法
US20110099423A1 (en) * 2009-10-27 2011-04-28 Chih-Ang Chen Unified Boot Code with Signature
US8621169B2 (en) * 2009-12-10 2013-12-31 Blackberry Limited Method for address space layout randomization in execute-in-place code
US9582443B1 (en) 2010-02-12 2017-02-28 Marvell International Ltd. Serial control channel processor for executing time-based instructions
US8884920B1 (en) 2011-05-25 2014-11-11 Marvell International Ltd. Programmatic sensing of capacitive sensors
US9098694B1 (en) 2011-07-06 2015-08-04 Marvell International Ltd. Clone-resistant logic
US9069553B2 (en) 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US8842840B2 (en) 2011-11-03 2014-09-23 Arvind Gidwani Demand based encryption and key generation and distribution systems and methods
US9880908B2 (en) 2013-04-23 2018-01-30 Hewlett-Packard Development Company, L.P. Recovering from compromised system boot code
CN105144185B (zh) 2013-04-23 2018-06-05 惠普发展公司,有限责任合伙企业 验证控制器代码和系统启动代码
US9275697B2 (en) 2013-10-03 2016-03-01 Western Digital Technologies, Inc. Utilizing destructive features as RAM code for a storage device
KR102429906B1 (ko) 2015-10-13 2022-08-05 삼성전자주식회사 스토리지 장치, 상기 스토리지 장치와 통신하는 호스트 및 상기 스토리지 장치를 포함하는 전자 장치
US10185633B2 (en) * 2015-12-15 2019-01-22 Intel Corporation Processor state integrity protection using hash verification
US10768819B2 (en) * 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
FR3057086B1 (fr) * 2016-10-04 2018-11-23 Stmicroelectronics (Rousset) Sas Procede de gestion d'une mise a jour d'au moins un microcode au sein d'une unite de traitement, par exemple un microcontroleur, et unite de traitement correspondante
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
JP7263101B2 (ja) * 2019-04-26 2023-04-24 キヤノン株式会社 情報処理装置、データ検証方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0514289A1 (de) * 1991-04-16 1992-11-19 Hewlett-Packard Company Rechner-Schutzsystem
DE19525105A1 (de) * 1994-06-29 1996-01-25 Mitsubishi Electric Corp Informationsverarbeitungssystem

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69033262T2 (de) * 1989-04-13 2000-02-24 Sandisk Corp EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
US6009495A (en) * 1989-12-29 1999-12-28 Packard Bell Nec Protected address range in an electrically erasable programmable read only memory
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5465299A (en) * 1992-12-03 1995-11-07 Hitachi, Ltd. Electronic document processing system and method of forming digital signature
US5592641A (en) * 1993-06-30 1997-01-07 Intel Corporation Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status
JP3310060B2 (ja) * 1993-09-13 2002-07-29 株式会社東芝 記憶装置および同装置の制御プログラム書換え方法
US5442704A (en) * 1994-01-14 1995-08-15 Bull Nh Information Systems Inc. Secure memory card with programmed controlled security access control
US5568641A (en) * 1995-01-18 1996-10-22 Hewlett-Packard Company Powerfail durable flash EEPROM upgrade
US5727061A (en) * 1995-02-13 1998-03-10 Eta Technologies Corporation Personal access management systems
US5675645A (en) * 1995-04-18 1997-10-07 Ricoh Company, Ltd. Method and apparatus for securing executable programs against copying
US5721877A (en) * 1995-05-31 1998-02-24 Ast Research, Inc. Method and apparatus for limiting access to nonvolatile memory device
US5748940A (en) * 1995-08-17 1998-05-05 Compaq Computer Corporation Secure updating of non-volatile memory
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5781635A (en) * 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for improved digital message transaction model
EP0880840A4 (de) * 1996-01-11 2002-10-23 Mrj Inc Vorrichtung zur steuerung des zugriffs und der verteilung von digitalem eigentum
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0514289A1 (de) * 1991-04-16 1992-11-19 Hewlett-Packard Company Rechner-Schutzsystem
DE19525105A1 (de) * 1994-06-29 1996-01-25 Mitsubishi Electric Corp Informationsverarbeitungssystem

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10137505B4 (de) * 2001-07-16 2005-06-23 Francotyp-Postalia Ag & Co. Kg Anordnung und Verfahren zum Ändern der Funktionalität eines Sicherheitsmoduls

Also Published As

Publication number Publication date
US5778070A (en) 1998-07-07
KR20000022308A (ko) 2000-04-25
GB2330228A (en) 1999-04-14
CN1229513A (zh) 1999-09-22
US20020065978A1 (en) 2002-05-30
KR100294829B1 (ko) 2001-08-07
GB9828576D0 (en) 1999-02-17
WO1998000846A1 (en) 1998-01-08
DE19781829T1 (de) 1999-06-17
CN1229513B (zh) 2010-06-02
TW347515B (en) 1998-12-11
GB2330228B (en) 2001-02-28
US6363463B1 (en) 2002-03-26
AU3644897A (en) 1998-01-21
US6615355B2 (en) 2003-09-02

Similar Documents

Publication Publication Date Title
DE19781829C2 (de) Verfahren und Vorrichtung zum Schützen eines Flash-Speichers
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE102008011925B4 (de) Sicheres Initialisieren von Computersystemen
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE69725833T2 (de) Gesicherte zweiteilige Benutzer-Authentifizierung in einem Rechnernetz
DE60306952T2 (de) Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich
DE60304602T2 (de) Ausnahmearten innerhalb eines sicheren verarbeitungssystems
DE60308215T2 (de) Prozessorschaltung zwischen sicheren und nicht sicheren modi
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE69531112T2 (de) Mechanismus zum verknüpfen von dateien auf einem emulierten system mit dem zentralsystem für den zugriff durch emulierte systembenutzer
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
DE112009002502T5 (de) Multilayer inhalte-schützender Mikrocontoller
DE112009005466T5 (de) Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
WO2016131553A1 (de) Autonom bootendes system mit einem sicherheitsmodul
DE102013200161A1 (de) Datenverschlüsselung/-Komprimierung auf der Grundlage einer Speicheradressübersetzung
DE112007000363T5 (de) Verfahren zum Bereitstellen sicherer Firmware
DE112009004762T5 (de) System und verfahren zum durchführen einer verwaltunosoperation
DE112016000576T5 (de) Sicheres Booten eines Computers von einer für den Benutzer vertrauenswürdigen Einheit aus
DE102008063335A1 (de) Datenverarbeitungssystem, Verfahren zum Ausführen eines Verschlüsselungsalgorithmus und Verfahren zum Vorbereiten der Ausführung eines Verschlüsselungsalgorithmus
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
DE10196440T5 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software
DE112018006401T5 (de) Transparent zugeordnete flash-memory-sicherheit
EP2911080A1 (de) Verfahren und Vorrichtung zum sicheren Initialisieren eines Computers

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 12/14

8607 Notification of search results after publication
D2 Grant after examination
8364 No opposition during term of opposition
R071 Expiry of right