DE60303476T2 - Verfahren und server für eine programm-aktualisierung - Google Patents

Verfahren und server für eine programm-aktualisierung Download PDF

Info

Publication number
DE60303476T2
DE60303476T2 DE60303476T DE60303476T DE60303476T2 DE 60303476 T2 DE60303476 T2 DE 60303476T2 DE 60303476 T DE60303476 T DE 60303476T DE 60303476 T DE60303476 T DE 60303476T DE 60303476 T2 DE60303476 T2 DE 60303476T2
Authority
DE
Germany
Prior art keywords
program
key
encrypted
lsi device
source
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
DE60303476T
Other languages
English (en)
Other versions
DE60303476D1 (de
Inventor
Makoto Fujiwara
Yusuke Nemoto
Junichi Yasui
Takuji Maeda
Takayuki Ito
Yasushi Yamada
Shinji Inoue
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.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of DE60303476D1 publication Critical patent/DE60303476D1/de
Publication of DE60303476T2 publication Critical patent/DE60303476T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • 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
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf eine Technik zum Aktualisieren eines Programms, während eine Sicherheit eines mit Schlüssel installierten Systems oder einer LSI-Vorrichtung, verwendet für ein solches System, beibehalten wird.
  • Beschreibung des in Bezug stehenden Stands der Technik
  • Herkömmlich wird, zum Zweck eines Schutzes eines Programms zum Betreiben einer LSI-Vorrichtung gegen eine missbräuchliche Verarbeitung, ein Programm, verschlüsselt mit einem vorbestimmten Schlüssel eines Herstellers, in einem Speicher gespeichert und mit dem Schlüssel zur Ausführung entschlüsselt. Allerdings wird, mit einem solchen System, ein Programm, verschlüsselt mit einem gemeinsamen Schlüssel eines Herstellers, in einer großen Anzahl von LSI-Vorrichtungen ausgeführt, und demzufolge wird es, falls Informationen über den Schlüssel des Herstellers missbräuchlich von einem einzelnen Produkt nach außen treten, möglich, einen Missbrauch von Programmen einer großen Anzahl von Produkten vorzunehmen. Deshalb kann die Sicherheit nicht verbessert werden.
  • In einem Verfahren, das zum Zwecke vorgesehen ist, ein solches Problem zu beseitigen, wird ein Programm zum Betreiben von LSI-Vorrichtungen mit einem eigenen Schlüssel, der für jede LSI-Vorrichtung einzigartig ist, verschlüsselt, und ein Produkt kann nur ein Programm, verschlüsselt mit einem eigenen Schlüssel, der für das Produkt einzigartig ist, ausführen (siehe Japanische Patentanmeldungen Nr.'n 2002-215096 und 2002-258481). Ein solches Verfahren verbessert die Sicherheit, da ein missbräuchliches nach Außentreten von Schlüssel-Informationen von einem einzelnen Produkt keinen Einfluss auf andere Produkte hat. Als eine Prämisse für dieses Verfahren wurde ein Verfahren zum Verschlüsseln eines Schlüssels zweimal vorgesehen (siehe Japanische, ungeprüfte Patentveröffentlichung No. 2003-101527).
  • Allgemein wird ein Aktualisieren eines Programms, installiert in einer Produkt-LSI-Vorrichtung, durch Sichern eines sicheren Kommunikations-Pfads durch eine SSL- Verbindung und durch Senden eines Ursprungs-Programms oder eines Programms, verschlüsselt mit einem Hersteller-Schlüssel, von einem Server zu der LSI-Vorrichtung erreicht. Allerdings kann mit diesem Verfahren, wenn auf den Kommunikations-Pfad missbräuchlich zugegriffen wird, ein Programm, das in einer großen Anzahl von Produkten ausführbar ist, missbräuchlich ausgelesen werden, so dass die Sicherheit in einer Programm-Aktualisierung nicht verbessert wird.
  • In dem Fall, in dem das vorstehende Verfahren für den Zweck verwendet wird, ein solches Problem zu beseitigen, können ein Ursprungs-Programm, oder ein Programm, verschlüsselt mit einem Hersteller-Schlüssel, nicht in einer LSI-Vorrichtung ohne irgendeine zusätzliche Verarbeitung ausgeführt werden, da die LSI-Vorrichtung nur ein Programm, verschlüsselt mit ihrem eigenen Schlüssel, ausführt.
  • In einem anderen, möglichen Verfahren werden Programme, verschlüsselt mit unterschiedlichen Schlüsseln für jeweilige LSI-Vorrichtungen, in einem Server präpariert, und Schlüssel-Informationen werden für jede LSI-Vorrichtung verwaltet. Die Programme, verschlüsselt mit unterschiedlichen Schlüsseln für jeweilige LSI-Vorrichtungen, werden von dem Server zu den LSI-Vorrichtungen übertragen. Allerdings erfordert dieses Verfahren enorme Anstrengungen und Kosten und ist deshalb nicht praktikabel.
  • Die Referenz US-A-5,666,411 bezieht sich auf ein System zum Schützen einer Software gegen eine nicht autorisierte Benutzung durch Begrenzen des Software-Produkts zur Verwendung mit einem Kauf-Computer. Die geschützten Programme werden als Dateien, verschlüsselt unter einem Satz von Schlüsseln, die in der Programm-Datei gespeichert sind, in einem Feld, bezeichnet als „Cipher Key Table" („Chiffrier-Schlüssel-Tabelle") verteilt. Die Chiffrier-Schlüssel-Tabelle ist selbst unter einem PGMKEY Verteilungsschlüssel verschlüsselt. Jeder Ziel-Computer ist mit einem Krypto-Mikroprozessor ausgestattet, der dazu geeignet ist, verschlüsselte Anweisungen, die einen Vorrichtungs-Chiffrier-Schlüssel (DEVKEY) einsetzen, der permanent in einem nichtflüchtigen Read-Only-Memory gespeichert ist, auszuführen. Zusätzlich besitzt jedes Computersystem einen System-Schlüssel (SYSKEY). Basierend auf den jeweiligen IDs greift ein Ziel-Computer auf die Austausch-Datenbank zu, um den PGMKEY zum Entschlüsseln des verschlüsselten Programms (verschlüsselt mit dem PGMKEY) zu erhalten. Die Austausch-Datenbank sendet den PGMKEY selbst chiffriert mit dem System-Schlüssel des Computers. Der System-Schlüssel wird im Voraus in der Austausch-Datenbank in Verbindung mit einer jeweiligen System-ID gespeichert. Jeder Krypto-Prozessor kann auf den System-Schlüssel SYSKEY durch Einsetzen seines Vorrichtungs-Chiffrier-Schlüssels DEVKEY zugreifen. Während einer Benutzer-Kundenanpassung wird das entschlüsselte, geschützte Programm zweimal unter Verwendung des DEVKEY, und, in einem zweiten Schritt, des SYSKEY, entschlüsselt.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Aktualisieren eines Programms zu schaffen, während eine hohe Sicherheit in einer LSI-Vorrichtung, geeignet zum Ausführen eines Programms, verschlüsselt mit einem eigenen Schlüssel, einzigartig für die LSI-Vorrichtung, aufrechterhalten wird.
  • Dies wird durch die Merkmale des unabhängigen Anspruchs gelöst.
  • Das Verfahren zum Aktualisieren eines Programms der vorliegenden Erfindung weist vorzugsweise weiterhin die Schritte auf: Empfangen von gemeinsamen Schlüssel-Informationen des Systems, Übertragen von dem Server, und Erzeugen, durch das System, eines gemeinsamen Ursprungs-Schlüssels unter Verwendung der empfangenen Informationen über den gemeinsamen Schlüssel, wobei, in dem zweiten Schritt, der gemeinsame Ursprungs-Schlüssel dazu verwendet wird, das gemeinsame, mit Schlüssel verschlüsselte Programm zu Entschlüsseln.
  • Die Informationen über den gemeinsamen Schlüssel umfassen vorzugsweise einen gemeinsamen, verschlüsselten Schlüssel, erzeugt durch Verschlüsseln des gemeinsamen Ursprungs-Schlüssels, mit einem ersten Ursprungs-Zwischenschlüssel, und einem verschlüsselten, ersten Zwischenschlüssel, erzeugt durch Verschlüsseln des ersten Ursprungs-Zwischenschlüssels mit einem zweiten Ursprungs-Zwischenschlüssel.
  • In dem Verfahren zum Aktualisieren des Programms der vorliegenden Erfindung umfasst die LSI-Vorrichtung einen internen Speicher, in dem eigene Schlüssel-Informationen gespeichert sind; das System verwendet die Informationen über den eigenen Schlüssel, gespeichert in dem internen Speicher, um einen eigenen Ursprungs-Schlüssel beim Hochfahren des Systems zu erzeugen, und an dem dritten Schritt wird der eigene Ursprungs-Schlüssel für ein Wiederverschlüsseln des Ursprungs-Programms verwendet.
  • Die Informationen über den eigenen Schlüssel umfassen vorzugsweise einen verschlüsselten, eigenen Schlüssel, erzeugt durch Verschlüsseln des eigenen Ursprungs-Schlüssels mit einem dritten Ursprungs-Zwischenschlüssel und einem verschlüsselten, zweiten Zwischenschlüssel, erzeugt durch Verschlüsseln des dritten Ursprungs-Zwischenschlüssels mit einem vierten Ursprungs-Zwischenschlüssel. Alternativ wird der erzeugte, eigene Ursprungs-Schlüssel vorzugsweise in einem Register der LSI-Vorrichtung gespeichert und wird zum Entschlüsseln des eigenen, mit Schlüssel verschlüsselten Programms zu einem Ursprungs-Programm zum Ausführen des eigenen, mit Schlüssel verschlüsselten Programms verwendet.
  • In dem Verfahren zum Aktualisieren eines Programms der vorliegenden Erfindung umfasst die LSI-Vorrichtung vorzugsweise einen Boot-ROM, in dem ein Boot-Programm gespeichert ist; der externe Speicher umfasst vorzugsweise ein Akquisitions-Programm zum Einrichten einer Datenübertragung zwischen der LSI-Vorrichtung und einem Server; und das System führt vorzugsweise einen Empfang des gemeinsamen, mit Schlüssel verschlüsselten Programms basierend auf dem Akquisitions-Programm, gespeichert in dem externen Speicher, aus und steuert eine Aktualisierungs-Verarbeitung, durchgeführt nach dem Empfang des gemeinsamen, mit Schlüssel verschlüsselten Programms basierend auf dem Boot-Programm, gespeichert in dem Boot-ROM.
  • Das Programm-Aktualisierungs-Verfahren der vorliegenden Erfindung weist vorzugsweise weiterhin den Schritt eines Empfangens eines Hash-Werts des Ursprungs-Programms, übertragen von dem Server aus, auf, wobei, an dem zweiten Schritt, der empfangene Hash-Wert dazu verwendet wird, eine Hash-Verifizierung in Bezug auf das entschlüsselte Ursprungs-Programm durchzuführen.
  • Ein anderer Aspekt der vorliegenden Erfindung ist ein Server, der in Bezug auf eine Programm-Aktualisierung in einem System, das eine LSI-Vorrichtung umfasst, arbeitet, wobei der Server ausführt: einen ersten Schritt eines Empfangens, von dem System, einer ID der LSI-Vorrichtung und einer Anwendungs-ID, die Identifikations-Informationen eines Aktualisierungs-Objekt-Programms sind; einen zweiten Schritt einer Bezugnahme auf eine erste Tabelle, die Korrespondenzen zwischen Anwendungs-IDs und LSI-IDs anzeigt, um zu bestimmen, ob das Aktualisierungs-Objekt-Programm zu dem System übertragen wird oder nicht; und falls an dem zweiten Schritt bestimmt ist, dass das Aktualisierungs-Objekt-Programm zu dem System übertragen ist, einen dritten Schritt eines Übertragens, zu dem System, eines mit einem gemeinsamen Schlüssel verschlüsselten Programms, erzeugt durch eine Verschlüsselung des Aktualisierungs-Objekt-Programms, mit einem gemein samen Schlüssel und gemeinsamen Schlüssel-Informationen, von denen der gemeinsame Schlüssel abgeleitet wird.
  • Der Server der vorliegenden Erfindung führt vorzugsweise aus: einen vierten Schritt eines Empfangens, von dem System, eines Signals, das für eine Anwendung eigene Informationen anfordert, notwendig zum Ausführen des Aktualisierungs-Objekt-Programms; und einen fünften Schritt einer Bezugnahme auf eine zweite Tabelle, die eine Korrespondenz zwischen einer Übertragungs-Historik der für die Anwendung eigenen Informationen und den LSI-IDs anzeigt, um zu bestimmen, ob die für die Anwendung eigenen Informationen, angefordert an dem vierten Schritt, übertragen sind oder nicht.
  • In dem Server der vorliegenden Erfindung umfassen die Informationen über den gemeinsamen Schlüssel vorzugsweise einen verschlüsselten, gemeinsamen Schlüssel, erzeugt durch ein Verschlüsseln eines gemeinsamen Ursprungs-Schlüssels mit einem ersten Ursprungs-Zwischenschlüssel, und einen verschlüsselten, ersten Zwischenschlüssel, erzeugt durch Verschlüsseln der ersten Ursprungs-Zwischenschlüssel mit einem zweiten Zwischenschlüssel.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Blockdiagramm, das den Aufbau einer sicheren LSI-Vorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • 2 stellt den gesamten Ablauf einer Entwicklung und Herstellung, den die sichere LSI-Vorrichtung der 1 verwendet, dar.
  • 3 zeigt ein Flussdiagramm eines gesamten Verfahrensablaufes eines Boot-Programms.
  • 4 zeigt einen Datenfluss einer Anfangswert-Einstellungsverarbeitung SZ1.
  • 5 zeigt ein Flussdiagramm einer Programm-Installations-Verarbeitung SD1 in dem Produkt-Operations-Modus.
  • 6 zeigt einen Datenfluss 1 einer Programm-Installations-Verarbeitung SD1.
  • 7 zeigt einen Datenfluss 2 einer Programm-Installations-Verarbeitung SD1.
  • 8 zeigt ein Flussdiagramm einer normalen Boot-Verarbeitung SD2 in dem Produkt-Operations-Modus.
  • 9 zeigt einen Datenfluss 1 einer normalen Boot-Verarbeitung SD2.
  • 10 zeigt einen Datenfluss 2 einer normalen Boot-Verarbeitung SD2.
  • 11 zeigt ein Flussdiagramm, das die Kommunikation zwischen einer sicheren LSI-Vorrichtung und einem Server in der Programm-Aktualisierungs-Verarbeitung darstellt.
  • 12 stellt eine Struktur eines Programms, verwendet in Verbindung mit einer Programmaktualisierung, das in einem externen Speicher 100 gespeichert ist, dar.
  • 13 zeigt ein Flussdiagramm, das eine Programm-Aktualisierungs-Verarbeitung darstellt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Nachfolgend wird eine Ausführungsform der vorliegenden Erfindung unter Bezugnahme auf die Zeichnungen beschrieben. Es ist anzumerken, dass in der nachfolgenden Beschreibung ein verschlüsselter Schlüssel oder ein Programm, das durch Verschlüsseln eines Schlüssels oder Programms X unter Verwendung eines Schlüssels Y erhalten ist, als „Enc (X, Y)" dargestellt ist.
  • 1 zeigt ein Blockdiagramm, das einen inneren Aufbau einer sicheren LSI-Vorrichtung, die eine Halbleitervorrichtung der vorliegenden Ausführungsform ist, darstellt. In 1 kann die sichere LSI-Vorrichtung mit einem externen Speicher (Flash-Speicher) 100, mit einem externen Tool 110, oder dergleichen, über einen externen Bus 120 verbunden sein. Der Betriebs-Modus der sicheren LSI-Vorrichtung 1 kann durch Zuführen einer Modus-ID zu der sicheren LSI-Vorrichtung 1 eingestellt werden.
  • Die Hauptkomponenten der sicheren LSI-Vorrichtung 1, die für die nachfolgende Beschreibung relevant sind, werden kurz beschrieben.
  • Die sichere LSI-Vorrichtung 1 besitzt einen sicheren Speicher (z.B. einen sicheren Flash) 10, umfassend einen nicht wieder beschreibbaren Bereich 11. Der nicht wieder beschreibbare Bereich 11 umfasst ein Schreib-Zeichen 12 für den nicht wieder beschreibbaren Bereich. Wenn einmal eine Modus-ID in dem sicheren Speicher 10 geschrieben ist, wird der Zeichen-Wert des Schreib-Zeichens 12 für den nicht wieder beschreibbaren Bereich von „WRITABLE" zu „WRITTEN" geändert, und ein Schreiben in dem nicht wieder beschreibbaren Bereich 11 wird danach verboten. Es sollte angemerkt werden, dass der sichere Speicher 10 und der externe Speicher 100 aus Flash-Speichern in der vorliegenden Ausführungsform aufgebaut sind, allerdings ist die vorliegende Erfindung nicht hierauf beschränkt. Irgendein Typ eines Speichers kann verwendet werden, solange wie er nicht flüchtig ist.
  • Ein Verschlüsselungsabschnitt 2 führt eine Verschlüsselung und Entschlüsselung von Programmen durch. Der Verschlüsselungsabschnitt 2 umfasst einen arithmetischen Privatschlüssel-Verarbeitungsabschnitt 20 und eine Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30. Der arithmetische Privatschlüssel-Verarbeitungsabschnitt 20 umfasst Register zum Speichern von verschiedenen Schlüsseln und einer Programm-Verschlüsselungs-Grundstruktur (ein Speicherregister 21 für einen gemeinsamen Programmschlüssel, ein Speicherregister 22 für einen programmeigenen Schlüssel, ein Speicherregister 23 für einen Verschlüsselungs-Schüssel, usw.) und ist dazu in der Lage, eine Vielzahl von Sequenzen auszuführen, umfassend Verfahren zum Verschlüsseln oder Entschlüsseln von Programmen. Die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 bestimmt, ob eine Ausführung jeder der Sequenzen, die durch den arithmetischen Privatschlüssel-Verarbeitungsabschnitt 20 ausgeführt werden können, zuzulassen ist, und verhindert den Betrieb des arithmetischen Privatschlüssel-Verarbeitungsabschnitts 20 in Bezug auf eine Sequenz, deren Ausführung dahingehend bestimmt wird, dass sie unzulässig ist. Die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 umfasst ein Modus-ID-Speicher-Register 31. Die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 bestimmt, ob eine Ausführung jeder Sequenz basierend auf der Modus-ID, gespeichert in dem Modus-ID-Speicher-Register 31, zuzulassen ist. Weiterhin umfasst die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 ein Verschlüsselungs-Typ-Identifizierer-Speicher-Register 32 zum Speichern eines Verschlüsselungs-Typ-Identifizierers und einen Speicherabschnitt 33 zum Speichern einer Programm-Verschlüsselungs-Grundstruktur. Der Verschlüsselungs-Typ-Identifizierer zeigt an, welcher Algorithmus und welche Schlüssellänge zum Verschlüsseln eines Schlüssels oder Programms verwendet werden.
  • Eine Modus-Abfolgesteuereinrichtung 40 umfasst auch ein Modus-ID-Speicher-Register 41. Die Modus-Abfolgesteuereinrichtung 40 steuert die Betriebsweise einer externen Host-Schnittstelle (I/F) 50, d.h. welche Schnittstelle zum Lesen eines Programms oder von Daten, gespeichert in dem externen Speicher 100, zu verwenden ist, entsprechend einer Modus-ID, gespeichert in dem Modus-ID-Speicher-Register 41, und den Wert eines Jumpers 43. Mit dieser Anordnung ist es möglich, zu steuern, ob ein grobes (binäres) Programm, gespeichert in dem externen Speicher 100, ausgeführt werden kann oder nicht. Die Modus-Abfolge-Steuereinrichtung 40 umfasst weiterhin ein Verschlüsselungs-Typ-Identifizierer-Speicher-Register 42 zum Speichern eines Verschlüsselungs-Typ-Identifizierers. Der Verschlüsselungs-Typ-Identifizierer zeigt an, welches Verfahren für eine Verschlüsselung eines Schlüssels verwendet wird.
  • Die externe Host-I/F 50 sendet/empfängt ein Programm oder Daten zu/von dem externen Speicher 100 oder dem externen Tool 110 entsprechend der Steuerung durch die Modus-Abfolge-Steuereinrichtung 40 über entweder einen Durchgangsabschnitt 52 für eine Verschlüsselung (nachfolgend „Verschlüsselungs-Durchgangsabschnitt 52"), einen Durchgangsabschnitt 53 zur Ausführung (nachfolgend „Ausführungs-Durchgangsabschnitt 53") und eine Kryptographie-Engine 54 für eine Programm-Entschlüsselung (nachfolgend bezeichnet als eine „Programm-Entschlüsselungs-Kryptographie-Engine" 54), die in einem Programm-Verarbeitungsabschnitt 51 enthalten ist, oder einen Durchgangsabschnitt 56 und eine Kryptographie-Engine 57 für eine Inhalt-Verschlüsselung/Entschlüsselung, die in einem Daten-Verarbeitungsabschnitt 55 enthalten sind. Die Programm-Entschlüsselungs-Kryptographie-Engine 54 umfasst ein einen programmeigenen Schlüssel speicherndes Register 58 zum Speichern eines programmeigenen Schlüssels, der für eine Entschlüsselung eines Programms verwendet wird.
  • In dem Schlüsselerzeugungsmodus und dem Produkt-Operations-Modus (beschrieben später) kann ein Programm nicht durch den Ausführungs-Durchgangsabschnitt 53 hereingenommen werden. Das bedeutet, dass die sichere LSI-Vorrichtung so aufgebaut ist, dass die Betriebsweise der sicheren LSI-Vorrichtung 1 nicht zu einem Programm fortschreitet, mit der Ausnahme eines Programms, das mit einem eigenen Schlüssel verschlüsselt ist, wenn sich die sichere LSI-Vorrichtung 1 in dem Schlüssel-Erzeugungsmodus oder dem Produkt-Operations-Modus befindet.
  • Ein Boot-ROM 60 speichert ein Boot-Programm zum Steuern eines Boot-Up-Vorgangs der sicheren LSI-Vorrichtung 1. Ein HASH-Berechnungsabschnitt 70 berechnet einen HASH-Wert zum Verifizieren der Gültigkeit eines Programms, das in die sichere LSI-Vorrichtung 1 eingelesen ist.
  • Weiterhin speichert der externe Speicher 100 Programme und Inhalte. Das externe Tool 110 speichert verschiedene Anfangswerte, die zu dem sicheren Speicher 10 zu dem Zeitpunkt des ersten Boot-Ups der sicheren LSI-Vorrichtung 1 übertragen und in dem si cheren Speicher 10 gespeichert werden sollen. Der Typ des Anfangswerts variiert in Abhängigkeit von einem ausgewählten Betriebs-Modus.
  • 2 stellt den gesamten Ablauf einer Entwicklung und Herstellung, die die sichere LSI-Vorrichtung 1 der 1 verwendet, dar. Wie in 2 dargestellt ist, arbeitet die sichere LSI-Vorrichtung 1 in den folgenden vier Betriebs-Modi: Administrator-Modus (Modus-ID: 00), Schlüssel-Erzeugungs-Modus (Modus-ID: 01), Entwicklungs-Modus (Modus-ID: 10) und Produkt-Betriebs-Modus (Modus-ID: 11).
  • Wenn auf den Administrator-Modus eingestellt wird, arbeitet die sichere LSI-Vorrichtung 1 als eine LSI-Vorrichtung für einen Administrator (nachfolgend bezeichnet als „Administrator-LSI-Vorrichtung"). In der Administrator-LSI-Vorrichtung wird ein Schlüssel-Erzeugungs-Programm entwickelt (PA1) und das entwickelte Schlüssel-Erzeugungs-Programm wird unter Verwendung irgendeines Schlüssel-Erzeugungs-Schlüssels verschlüsselt (PA2).
  • Wenn auf den Schlüssel-Erzeugungs-Modus eingestellt wird, arbeitet die sichere LSI-Vorrichtung 1 als eine LSI-Vorrichtung für eine Schlüssel-Erzeugung (nachfolgend bezeichnet als eine „Schlüssel-Erzeugungs-LSI-Vorrichtung"). In der Schlüssel-Erzeugungs-LSI-Vorrichtung wird das Erzeugungs-Programm für den verschlüsselten Schlüssel, erzeugt in der Administrator-LSI-Vorrichtung, installiert (PB1) und das Schlüssel-Erzeugungs-Programm wird ausgeführt, um verschiedene Schlüssel (PB2) zu erzeugen.
  • Wenn auf den Entwicklungs-Modus eingestellt ist, arbeitet die sichere LSI-Vorrichtung 1 als eine LSI-Vorrichtung für eine Entwicklung (nachfolgend bezeichnet als eine „Entwicklungs-LSI-Vorrichtung"). In der Entwicklungs-LSI-Vorrichtung wird ein Anwendungs-Programm, das in einem tatsächlichen Produkt ausgeführt werden soll, entwickelt (PC1). Das Anwendungs-Programm wird unter Verwendung des gemeinsamen Programmschlüssels verschlüsselt (PC2).
  • Wenn auf den Produkt-Operations-Modus eingestellt wird, arbeitet die sichere LSI-Vorrichtung 1 als eine tatsächliche Produkt-LSI-Vorrichtung. Das Anwendungs-Programm, erzeugt in der Entwicklungs-LSI-Vorrichtung, und verschlüsselt mit dem gemeinsamen Programmschlüssel, wird in der Produkt-LSI-Vorrichtung installiert. Innerhalb der Produkt-LSI-Vorrichtung wird das installierte Anwendungs-Programm zu einem Anwendungs-Programm, verschlüsselt mit einem programmeigenen Schlüssel (PD1), umgewandelt.
  • Nach der Umwandlung des Anwendungs-Programms arbeitet die sichere LSI-Vorrichtung 1 als eine normale Produkt-LSI-Vorrichtung (PD2). Diese Umwandlungsverarbeitung kann auch in der Entwicklungs-LSI-Vorrichtung für den Zweck eines Debugging des Anwendungs-Programms ausgeführt werden (PC3).
  • Nachfolgend werden Details einer normalen Operation und einer sicheren Aktualisierungs-Operation, die dann durchgeführt werden, wenn sich die sichere LSI-Vorrichtung 1, die den vorstehenden Aufbau besitzt, in dem Produkt-Operations-Modus befindet, unter Bezugnahme auf Flussdiagramme und Datenströmungen beschrieben.
  • 3 zeigt ein Flussdiagramm, das den gesamten Ablauf des Boot-Programms darstellt. Wenn die sichere LSI-Vorrichtung 1 hochgefahren wird, wird das Boot-Programm, gespeichert in dem Boot-ROM 60, durch eine CPU 65 ausgeführt. Wie 3 zeigt, wird jede Hardware zuerst initialisiert (SZ0). Dann werden die verschiedenen Anfangswerte von dem externen Tool 110 gelesen und in den sicheren Speicher 10 eingestellt (SZ1).
  • 4 zeigt ein Flussdiagramm, das die den Anfangswert einstellende Verarbeitung SZ1 darstellt. Zunächst wird, an einer Sprungeinrichtung 44, bestimmt, ob der sichere Speicher 10 in der LSI-Vorrichtung (SZ11) montiert ist oder nicht. Als nächstes wird bestimmt, ob ein Schreib-Zeichen 12 für den unbeschreibbaren Bereich „WRITTEN" (SZ12) anzeigt oder nicht. Wenn es „WRITTEN" (Ja an SZ12) anzeigt, wird die Verarbeitung SZ1 beendet, da ein Anfangswert bereits in dem sicheren Speicher 10 eingestellt ist. Wenn das Schreib-Zeichen 12 für den unbeschreibbaren Bereich „WRITABLE" (Nein an SZ12) anzeigt, werden Anfangswerte in den sicheren Speicher 10 hineingeschrieben (SZ13 bis SZ18). Zusätzlich zu der Modus-ID werden ein eigener Schlüssel für das verschlüsselte Programm, Adressen-Verwaltungs-Informationen und ein dateneigener Schlüssel in den unbeschreibbaren Bereich 11 des sicheren Speichers 10 hineingeschrieben (SZ13, SZ16 bis SZ18). Falls die erste Bestimmung anzeigt, dass der sichere Speicher 10 außerhalb der LSI-Vorrichtung (Nein an SZ14) existiert, wird die Modus-ID mit einem Wert überschrieben, der den Produkt-Operations-Modus anzeigt (SZ15). Als eine Folge arbeitet ein Produkt, das einen sicheren Speicher 10 außerhalb seiner LSI-Packung besitzt, nur dann, wenn es sich in dem Produkt-Operations-Modus befindet.
  • Als nächstes wird das Schreib-Zeichen 12 für den unbeschreibbaren Bereich auf „WRITTEN" gesetzt (SZ19), wodurch ein Überschreiben in dem nicht wieder überschreib baren Bereich 11 danach verhindert wird. Weiterhin werden ein Verschlüsselungs-Typ-Identifizierer und ein Installations-Modus-Zeichen in allgemeinen Bereichen 13 und 14 geschrieben (SZ1A). Wenn die Modus-ID einen Modus, einen anderen als den Administrator-Modus (Nein an SZ1B), anzeigt, werden ein verschlüsselter, gemeinsamer Schlüssel und ein Erzeugungs-Schlüssel für einen verschlüsselten Schlüssel in die allgemeinen Bereiche 13 und 14 zusätzlich zu dem Verschlüsselungs-Typ-Identifizierer und einem Installations-Modus-Zeichen geschrieben (SZ1C).
  • Danach wird eine Vorverarbeitung SZ2 ausgeführt. Hierbei wird die Modus-ID, eingestellt in dem nicht wieder beschreibbaren Bereich 11 des sicheren Speichers 10, in das Modus-ID-Speicher-Register 31 der Schlüssel-Erzeugungs-Aktualisierungs-Abfolgesteuereinrichtung 30 und in das Modus-ID-Speicher-Register 41 der Modus-Abfolgesteuereinrichtung 40 eingestellt. Weiterhin wird ein Verschlüsselungs-Typ-Identifizierer, eingestellt in dem allgemeinen Bereich 13 des sicheren Speichers 10, in dem Verschlüsselungs-Typ-Identifizierer-Speicher-Register 32 der Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 und in dem Verschlüsselungs-Typ-Identifizierer-Speicher-Register 42 der Modus-Abfolgesteuereinrichtung 40 eingestellt. Weiterhin werden die Adressen-Verwaltungs-Informationen, gespeichert in dem unbeschreibbaren Bereich 11 des sicheren Speichers 10, in einem Verschlüsselungs-Adressen-Segment-Speicher-Register 81 eines MEMC 80 eingestellt. Die Vorgänge, beschrieben vorstehend, entsprechen den Anfangs-Wert-Einstell-Phasen PA0, PB0, PC0 und PD0 von 2.
  • Danach wird der Vorgang in einem Modus, bestimmt gemäß dem Wert der Modus-ID, durchgeführt (SZ3). Demzufolge wird die Geheimhaltung eines Programms durch Begrenzen des Vorgangs, durchgeführt in einer sicheren LSI-Vorrichtung, entsprechend dem Wert der Modus-ID, verbessert.
  • Als nächstes wird eine normale Produkt-Operation (normaler Boot-Vorgang) im Detail beschrieben.
  • Wenn die Modus-ID „11" ist, wird die sichere LSI-Vorrichtung 1 auf den Produkt-Operations-Modus eingestellt, um eine Programm-Installations-Verarbeitung SD1 oder eine normale Boot-Verarbeitung SD2, in Abhängigkeit von dem Wert des Installations-Modus-Zeichens (bestimmt bei SD0), auszuführen.
  • 5 zeigt ein Flussdiagramm einer Programm-Installations-Verarbeitung SD1. 6 und 7 stellen einen Datenfluss einer Programm-Installations-Verarbeitung SD1 dar. In der Programm-Installations-Verarbeitung SD1 wird ein programmeigener Schlüssel unter Verwendung von Informationen über den eigenen Schlüssel, gespeichert in dem sicheren Speicher 10, entschlüsselt (SD11 und SD12), und ein gemeinsamer Programmschlüssel wird unter Verwendung der Informationen über den gemeinsamen Schlüssel entschlüsselt (SD13 und SD14). Der gemeinsame Schlüssel für das entschlüsselte Programm und der eigene Schlüssel für das entschlüsselte Programm werden dazu verwendet, ein Programm Enc (Programm, gemeinsamer Programmschlüssel), die in dem externen Speicher 100 gespeichert ist, in ein Programm Enc (Programm, programmeigener Schlüssel) umzuwandeln (SD15 bis SD17). Danach wird die Gültigkeit des Programms verifiziert (SD18). Falls es gültig ist, wird das Installations-Modus-Zeichen auf AUS gesetzt (SD19). Mit dieser Einstellung wird die Programm-Installations-Verarbeitung SD1 nicht weiter zum Zeitpunkt eines Bootens der sicheren LSI-Vorrichtung 1 durchgeführt. An dem Ende der Programm-Installations-Verarbeitung SD1 werden der gemeinsame Schlüssel für das Programm, gespeichert in dem sicheren Speicher 10, und das Programm Enc (Programm, gemeinsamer Programmschlüssel), gespeichert in dem externen Speicher 100, gelöscht (SD1A und SD1B).
  • 8 zeigt ein Flussdiagramm einer normalen Boot-Verarbeitung SD2. Die 9 und 10 stellen einen Datenablauf einer normalen Boot-Verarbeitung SD2 dar. In einer normalen Boot-Verarbeitung SD2 werden ein für ein verschlüsseltes Programm eigener Schlüssel (Informationen über den eigenen Schlüssel), gespeichert in einem nicht wiederbeschreibbaren Bereich 11 des sicheren Speichers (internen Speichers) 10, d.h. ein verschlüsselter, eigener Schlüssel Enc (programmeigener Schlüssel (Ursprung), MK0 (dritter Ursprungs-Zwischenschlüssel)), und ein verschlüsselter, zweiter Zwischenschlüssel Enc (MK0, CK0 (vierter Ursprungs-Zwischenschlüssel)) in einem Verschlüsselungsschlüssel-Speicher-Register des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel eingestellt (SD21). Dann wird der eigene Schlüssel für das verschlüsselte Programm unter Verwendung der Programm-Verschlüsselungs-Ursprungs-Struktur, installiert in der Schlüssel-Erzeugungs-Aktualisierungs-Abfolgesteuereinrichtung 30, entschlüsselt, wodurch ein programmeigener Schlüssel erhalten wird (SD22). Der erhaltene für das Programm eigene Schlüssel wird in dem Speicher-Register 22 für den programmeigenen Schlüssel des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel und in dem Schlüssel-Speicher-Register 48 für den programmeigenen Schlüssel der Programm-Entschlüsselungs-Kryptographie-Engine 54 der externen Host-I/F 50 eingestellt (SD23).
  • Danach wird eine dateneigene ID, gespeichert in dem nicht wieder überschreibbaren Bereich 11 des sicheren Speichers 10, in dem Speicher-Register für die eigene ID des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel eingestellt (SD24). Weiterhin werden Zufalls-Zahlen durch die CPU 65 erzeugt und die erzeugten Zufalls-Zahlen werden in dem Zufalls-Zahl-Speicher-Register des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel eingestellt (SD25). Dann wird ein für die Daten eigener Schlüssel von der für die Daten eigenen ID und die Zufalls-Zahlen durch den arithmetischen Verarbeitungs-Abschnitt 20 für den privaten Schlüssel erzeugt (SD26). Eine Reproduktion eines Inhalts wird unter Verwendung des für die Daten eigenen Schlüssels durchgeführt. Da der für die Daten eigene Schlüssel unter Verwendung von Zufalls-Zahlen erzeugt wird, unterscheidet sich der für die Daten eigene Schlüssel bei jedem Hochfahren. Demzufolge wird die Sicherheit in der Reproduktion des Inhalts verbessert.
  • Danach wird ein Programm, verschlüsselt mit einem für das Programm eigenen Schlüssel Enc (Programm, programmeigener Schlüssel), der in dem externen Speicher 100 gespeichert ist, über die Programm-Entschlüsselungs-Kryptographie-Engine 54 des Programm-Verarbeitungs-Abschnitts 51 der externen Host-I/F 50 entschlüsselt. Das entschlüsselte Programm wird zu dem Hash-Berechnungs-Abschnitt 70 übertragen, um den Hash-Wert zu berechnen (SD27). Der für das Programm eigene Schlüssel, gespeichert in dem Speicher-Register 58 für den programmeigenen Schlüssel der externen Host-I/F 50, wird zur Entschlüsselung verwendet. Der berechnete Hash-Wert wird mit dem Hash-Wert, gespeichert in dem allgemeinen Bereich 13 des sicheren Speichers 10, verglichen, um zu prüfen, ob das Anwendungs-Programm missbraucht worden ist oder nicht (SD28). Falls die Hash-Werte gleich zueinander sind (Nein bei SD29), geht der Vorgang weiter zu dem Programm Enc (Programm, programmeigener Schlüssel), gespeichert in dem externen Speicher 100, um eine Anwendung auszuführen (SD2A). Falls die Hash-Werte nicht gleich zueinander sind, wird bestimmt, dass ein bestimmter Missbrauch vorgenommen worden ist, und ein Missbrauch-Zugangs-Kontroll-Vorgang wird ausgeführt (SD2B).
  • Die Verarbeitung einer Aktualisierung eines Programms in einer sicheren LSI-Vorrichtung, die als ein Produkt so arbeitet, wie dies vorstehend beschrieben ist, wird nun unter Bezugnahme auf 11 beschrieben. 11 stellt einen Ablauf dar, der ein Senden von Daten zwischen dem Server 3 und einem System, umfassend die sichere LSI-Vorrichtung 1, in einer Programm-Aktualisierungs-Verarbeitung darstellt.
  • Wie 11 zeigt, empfängt, nachdem die sichere LSI-Vorrichtung 1 die Programm-Aktualisierungs-Verarbeitung startet, der Server 3 eine ID von der sicheren LSI-Vorrichtung 1 von dem System, um eine ID-Authentifizierung durchzuführen. Wenn die ID gültig ist, wird der Server 3 mittels SLL mit der sicheren LSI-Vorrichtung 1 verbunden (UD1). Mit einem solchen Vorgang wird die Sicherheit des Kommunikations-Pfads zwischen dem Server 3 und dem System, umfassend die sichere LSI-Vorrichtung 1, in einem gewissen Umfang gesichert.
  • Nachdem der Kommunikations-Pfad gesichert ist, sendet das System eine Anwendungs-ID, die eine Identifikations-Information eines Programms, das aktualisiert werden soll (nachfolgend bezeichnet als „Aktualisierungs-Objekt-Programm"), ist, zu dem Server 3 (UD2). Der Server 3 verwaltet eine erste Tabelle A 4, die Korrespondenzen zwischen Anwendungs-IDs von Aktualisierungs-Programmen und IDs von LSI-Vorrichtungen, auf denen ein Programm zugelassen ist, um ausgeführt zu werden, anzeigt. Der Server 3 bestimmt, ob ein Programm übertragen werden kann oder nicht, und zwar basierend auf der ersten Tabelle A 4. Nachdem eine Korrespondenz zwischen der ID der sicheren LSI-Vorrichtung 1 und einer Anwendungs-ID eines Programms, das anfordert, aktualisiert zu werden, geprüft ist, beginnt der Server 3 mit einer Übertragung des Aktualisierungs-Objekt-Programms.
  • Zuerst sendet der Server 3 zusätzliche Informationen des Aktualisierungs-Objekt-Programms zu der sicheren LSI-Vorrichtung 1 (UD3). Hierbei umfassen die zusätzlichen Informationen eine Signatur zum Authentifizieren, ob ein Programm zugelassen ist oder nicht, in der sicheren LSI-Vorrichtung 1 aktualisiert zu werden, die Größe des Aktualisierungs-Objekt-Programms, den Hash-Wert (Ursprungs-Hash-Wert) des Aktualisierungs-Objekt-Programms, usw. Die sichere LSI-Vorrichtung 1 führt eine Authentifizierung unter Verwendung einer Signatur, gesendet als zusätzliche Informationen, durch, und bestimmt, ob der externe Speicher 10 einen aktualisierbaren, freien Raum besitzt oder nicht, und zwar basierend auf der gesendeten Programm-Größe. Falls bestimmt ist, dass die Aktuali sierung möglich ist, fordert die sichere LSI-Vorrichtung 1 von dem Server 3, die gemeinsamen Schlüssel-Informationen zu übertragen (UD4).
  • Unter einem Empfangen der Anforderung sendet der Server 3 die Informationen über den gemeinsamen Schlüssel, umfassend einen verschlüsselten, gemeinsamen Schlüssel Enc (gemeinsamer Programmschlüssel (grob bzw. Ursprung), MK1, einen ersten Ursprungs-Zwischenschlüssel)) und einen verschlüsselten, ersten Zwischenschlüssel Enc (MK1, CK1 (zweiter Ursprungs-Zwischenschlüssel)) zu der sicheren LSI-Vorrichtung 1 (UD5). Die sichere LSI-Vorrichtung 1 entschlüsselt den für das Programm gemeinsamen Schlüssel unter Verwendung der Informationen über den gemeinsamen Schlüssel, und die Hash-Berechnung wird in Bezug auf den für das entschlüsselte Programm gemeinsamen Schlüssel durchgeführt, um die Gültigkeit des gemeinsamen Schlüssels für das Programm zu verifizieren. Nachdem der gemeinsame Schlüssel für das Programm erfolgreich entschlüsselt ist, fordert das System den Server 3 auf, ein verschlüsseltes Programm für den gemeinsamen Schlüssel zu senden (UD6). Unter Empfang der Anforderung sendet der Server 3 ein Programm Enc (Programm, für den Programm gemeinsamen Schlüssel) zu dem System (UD7). Die sichere LSI-Vorrichtung 1 wandelt das Programm Enc (Programm, gemeinsamer Programmschlüssel) zu Enc (Programm, programmeigener Schlüssel) um. Weiterhin entschlüsselt die sichere LSI-Vorrichtung 1 das umgewandelte Programm (Programm, programmeigener Schlüssel) zu einem Ursprungs-Programm um. Dann führt die sichere LSI-Vorrichtung 1 eine Hash-Berechnung in Bezug auf das Ursprungs-Programm durch und vergleicht den erhaltenen Hash-Wert mit einem Hash-Wert, der zuvor empfangen ist, als zusätzliche Informationen, um die Gültigkeit des Programms zu verifizieren. Die vorstehende Verarbeitung wird später im Detail beschrieben.
  • Nachdem das verschlüsselte Programm für den gemeinsamen Schlüssel erfolgreich zu einem verschlüsselten Programm für den eigenen Schlüssel umgewandelt ist, fordert das System, das die sichere LSI-Vorrichtung 1 umfasst, den Server 3 auf, für die Anwendung eigene Informationen zu übertragen (UD8). Die für die Anwendung eigenen Informationen umfassen Informationen, die zum Ausführen eines Programms notwendig sind. Demzufolge kann die sichere LSI-Vorrichtung 1 nicht ein Aktualisierungs-Programm ohne die für die Anwendung eigenen Informationen ausführen. Der Server 3 verwaltet auch eine zweite Tabelle B 5, die Korrespondenzen zwischen einer Sende-Historik der für die Anwendung eigenen Informationen und den IDs der LSI-Vorrichtungen anzeigt. Der Server 3 sendet nicht eine Vielzahl von Teilen von für die Anwendung eigenen Informationen zu derselben, sicheren LSI-Vorrichtung. Demzufolge kann eine einzelne, sichere LSI-Vorrichtung nicht ein Programm mehr als einmal aktualisieren.
  • Wenn bestimmt ist, dass die für die Anwendung eigenen Informationen gesendet werden können, sendet der Server 3 die für die Anwendung eigenen Informationen zu dem System, umfassend die sichere LSI-Vorrichtung 1 (UD9). Die sichere LSI-Vorrichtung 1 führt eine Hash-Berechnung in Bezug auf die für die Anwendung eigenen Informationen durch, um die Gültigkeit der für die Anwendung eigenen Informationen zu verifizieren, wodurch die Programm-Aktualisierungs-Verarbeitung abgeschlossen ist. Die Kommunikation zwischen der sicheren LSI-Vorrichtung 1 und dem Server 3 wird unterbrochen (UD10).
  • Es sollte angemerkt werden, dass ein Senden von Daten zwischen der sicheren LSI-Vorrichtung 1 und dem Server 3 gemäß der vorliegenden Erfindung nicht auf den vorstehend beschriebenen Datenfluss beschränkt ist. Zum Beispiel muss der Server 3 nicht notwendigerweise die zweite Tabelle B 5 verwalten, so dass eine Vielzahl von Teilen der für die Anwendung eigenen Informationen zu derselben, sicheren LSI übertragen werden können. Allerdings wird die Geheimhaltung eines Programms weiter verbessert, wenn ein einzelnes Programm nicht zu derselben, sicheren LSI mehr als einmal übertragen wird.
  • Weiterhin werden die zusätzlichen Informationen, Informationen über den gemeinsamen Schlüssel und das verschlüsselte Programm für den gemeinsamen Schlüssel nicht immer von dem Server 3 zu der sicheren LSI-Vorrichtung 1 getrennt übertragen. Zum Beispiel kann ein Teil der Gesamtheit dieser Daten zu einem Zeitpunkt in der Form eines Programm-Datenpakets übertragen werden.
  • Die Umwandlung von dem verschlüsselten Programm für den gemeinsamen Schlüssel Enc (Programm, gemeinsamer Programmschlüssel) zu dem verschlüsselten Programm für den eigenen Schlüssel Enc (Programm, programmeigener Schlüssel) der sicheren LSI-Vorrichtung 1 wird nun im Detail unter Bezugnahme auf die Zeichnungen beschrieben. 12 stellt eine Struktur eines Programms, verwendet in Verbindung mit der Programm-Aktualisierung, das in dem externen Speicher 100 gespeichert ist, dar.
  • Wie 12 zeigt, speichert der externe Speicher 100 ein Verschlüsselungs-Steuerprogramm (Enc (Steuerprogramm, für das Programm eigener Schlüssel)) 200 und ein Verschlüsselungs-Anwendungs-Programm (Enc (Anwendungs-Programm, programmeigener Schüssel)) 210, die mit einem eigenen Schlüssel verschlüsselt worden sind.
  • Das Verschlüsselungs-Steuerprogramm 200 umfasst einen Anwendungs-Boot-Up-Abschnitt 201 und einen Programm-Aktualisierungs-Steuerabschnitt 205. Der Programm-Aktualisierungs-Steuerabschnitt 205 umfasst einen Entschlüsselungs-Abschnitt 206 für den gemeinsamen Schlüssel, einen Verschlüsselungs-Verarbeitungs-Abschnitt 207 für den programmeigenen Schlüssel und einen Programm-Aktualisierungs-Erfolg/Fehler-Bestimmungs-Abschnitt 208.
  • Der Anwendungs-Boot-Up-Abschnitt 201 empfängt eine Anwendung von einem Boot-Programm, gespeichert in dem Boot-ROM 60, um das Verschlüsselungs-Anwendungs-Programm 210 hochzufahren. Der Entschlüsselungs-Abschnitt 206 für den gemeinsamen Schlüssel entschlüsselt den für das Programm gemeinsamen Schlüssel unter Verwendung der Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 basierend auf den Informationen über den gemeinsamen Schlüssel, übertragen von dem Server 3 aus. Der Verschlüsselungs-Verarbeitungs-Abschnitt 207 für den für das Programm eigenen Schlüssel wandelt das verschlüsselte Programm für den gemeinsamen Schlüssel Enc (Programm, gemeinsamer Programmschlüssel) zu dem verschlüsselten Programm für den eigenen Schlüssel Enc (Programm, programmeigener Schlüssel) unter Verwendung der Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 um. Der Programm-Aktualisierungs-Erfolg/Fehler-Bestimmungs-Abschnitt 208 entschlüsselt das entschlüsselte Programm für den eigenen Schlüssel Enc (Programm, programmeigener Schlüssel) zu einem Ursprungs-Programm und führt eine Hash-Verifizierung in Bezug auf das Ursprungs-Programm durch, um zu bestimmen, ob die Programm-Aktualisierung erfolgreich vorgenommen worden ist oder nicht. Falls sie erfolgreich ist, wird das alte Programm gelöscht, und Informationen, umfassend eine Adresse, wo das aktualisierte Programm gespeichert ist, die Größe des aktualisierten Programms, usw., werden in dem sicheren Speicher 10 gespeichert.
  • Das Verschlüsselungs-Anwendungs-Programm 210 umfasst einen allgemeinen Betriebsabschnitt 211, der ein allgemeines Anwendungs-Programm ist, und einen Programm-Akquisitions-Abschnitt 212, der ein Anwendungs-Programm ist, verwendet zum Akquirieren eines neuen Anwendungs-Programms von einem Server oder einem Aufzeichnungs-Medium. Solche Programme, gespeichert in dem externen Speicher 100, werden für eine Programm-Aktualisierung verwendet.
  • 13 zeigt ein Flussdiagramm einer Programm-Aktualisierungs-Verarbeitung, die eine Umwandlungs-Verarbeitung von einem verschlüsselten Programm für den gemeinsamen Schlüssel zu einem verschlüsselten Programm für einen eigenen Schlüssel umfasst.
  • Wenn eine Aktualisierung eines Programms von einem externen Faktor, wie beispielsweise einem Vorgang eines Benutzers, oder dergleichen, während der Ausführung eines Anwendungs-Programms gefordert wird (SX1), erfasst das System die Anforderung, und der allgemeine Betriebsabschnitt 211 aktiviert den Programm-Akquisitions-Abschnitt 212, der ein Akquisitions-Programm des Verschlüsselungs-Anwendungs-Programms 210 ist, um eine Programm-Aktualisierungs-Verarbeitung zu starten (SX2).
  • Der Programm-Akquisitions-Abschnitt 212 richtet eine Kommunikation mit dem Server 3 ein, um eine Authentifizierung einzurichten und Informationen über den gemeinsamen Schlüssel und Programme zu akquirieren (SX3). Unter Akquirieren der Informationen über den gemeinsamen Schlüssel von dem Server 3 entschlüsselt der Entschlüsselungs-Abschnitt 206 für den gemeinsamen Schlüssel den für das Programm gemeinsamen Schlüssel (SX4 und SX5). Genauer gesagt werden die Informationen über den gemeinsamen Schlüssel, d.h. ein gemeinsamer Schlüssel für das verschlüsselte Programm (Enc, für das Programm gemeinsamer Schlüssel, MK2) und Enc (MK2, CK)), in dem Verschlüsselungs-Schlüssel-Speicher-Register 23 des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel eingestellt. Der gemeinsame Schlüssel für das verschlüsselte Programm wird unter Verwendung der Programm-Verschlüsselungs-Ursprungs-Struktur, installiert in der Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30, entschlüsselt, um einen gemeinsamen Schlüssel für das Programm zu erhalten. Der erhaltene, gemeinsame Schlüssel für das Programm wird in dem Speicher-Register 21 für den für das Programm gemeinsamen Schlüssel des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel gespeichert.
  • Dann führt der Verschlüsselungs-Verarbeitungs-Abschnitt 207 des programmeigenen Schlüssels eine Umwandlungs-Verarbeitung von einem verschlüsselten Programm für den gemeinsamen Schlüssel zu einem verschlüsselten Programm für den eigenen Schlüssel durch. Genauer gesagt wird ein Programm Enc (Programm, für das Programm gemeinsamer Schlüssel), das von dem Server 3 übertragen worden ist und in dem externen Speicher 100 gespeichert ist, zu dem arithmetischen Verarbeitungs-Abschnitt 20 für den privaten Schlüssel über den Verschlüsselungs-Durchgangs-Abschnitt 52 des Programm-Verarbeitungs-Abschnitts 51, umfasst in der externen Host-I/F 50, übertragen (SX6). Das übertragene Programm wird mit dem für das Programm gemeinsamen Schlüssel, gespeichert in dem Speicher-Register 21 für den für das Programm gemeinsamen Schlüssel, entschlüsselt, und dann mit dem für das Programm eigenen Schlüssel, gespeichert in dem Speicher-Register 22 für den für das Programm eigenen Schlüssel, verschlüsselt, wodurch ein Programm Enc (Programm, programmeigener Schlüssel) erhalten wird. Es sollte angemerkt werden, dass der für das Programm eigene Schlüssel bereits zu dem Zeitpunkt eines Hochfahrens des Systems, wie vorstehend beschrieben ist, entschlüsselt worden ist und in dem Speicher-Register 22 für den für das Programm eigenen Schlüssel des arithmetischen Verarbeitungs-Abschnitts 20 für den privaten Schlüssel gespeichert worden ist.
  • Zuletzt bestimmt der Programm-Aktualisierungs-Erfolg/Fehler-Bestimmungs-Abschnitt 208, ob die Programm-Aktualisierung erfolgreich vorgenommen worden ist oder nicht. Genauer gesagt wird das Programm Enc (Programm, programmeigener Schlüssel) in den externen Speicher 100 geschrieben (SX8), das Programm wird unter Verwendung der Programm-Entschlüsselungs-Kryptographie-Engine 54 des Programm-Verarbeitungs-Abschnitts 51, umfasst in der externen Host-I/F 50, entschlüsselt (SX9), und der Hash-Wert des entschlüsselten Programms, d.h. des Ursprungs-Programms, wird berechnet (SX10). Der berechnete Hash-Wert wird mit einem Hash-Wert, erhalten durch den Programm-Akquisitions-Abschnitt 212, zusammen mit dem verschlüsselten Programm, verglichen, um dadurch zu bestimmen, ob die Aktualisierungs-Verarbeitung erfolgreich vorgenommen worden ist oder nicht (SX11). Falls sie erfolgreich ist, wird das alte Programm gelöscht (SX12). Falls sie fehlgeschlagen ist, wird das gesendete Programm gelöscht (SX13). Dann werden Informationen, umfassend eine Adresse, wo das aktualisierte Programm gespeichert ist, die Größe des aktualisierten Programms, usw., in dem sicheren Speicher 10 gespeichert (SX14), wodurch die Aktualisierungs-Verarbeitung abgeschlossen ist.
  • In dem Fall, in dem das verschlüsselte Programm des für das Programm gemeinsamen Schlüssels von dem Server, unter Verwendung des vorstehenden Programm-Adressierungs-Verfahrens, übertragen wird, wird ein Schlüssel, verwendet zur Verschlüsselung, von einem für das Programm gemeinsamen Schlüssel zu einem für das Programm eigenen Schlüssel, und installiert in dem System, geändert. Demzufolge wird, gerade wenn auf den Kommunikations-Pfad zwischen dem Server und der sicheren LSI-Vorrichtung missbräuchlich zugegriffen ist, und das verschlüsselte Programm für das Programm gemeinsamer Schlüssel gestohlen ist, der sicheren LSI-Vorrichtung nicht ermöglicht, mit diesem Programm zu arbeiten. Weiterhin sind, als eine Folge einer Programm-Aktualisierung, Programme, installiert in unterschiedlichen Benutzer-Produkten, solche Programme, die mit unterschiedlichen, eigenen Schlüsseln verschlüsselt sind, und demzufolge wird die Vertraulichkeit verbessert. Weiterhin kann, gerade dann, wenn ein Chiffrierer (eine Verschlüsselung) aufgedeckt ist, die Anzahl von Produkten, die beschädigt werden kann, begrenzt werden, und deshalb wird die Sicherheit, verglichen mit herkömmlichen Techniken, verbessert.
  • In der vorliegenden Ausführungsform werden die Informationen über den gemeinsamen Schlüssel von dem Server erhalten. Dies kommt daher, dass der gemeinsame Schlüssel für das entschlüsselte Programm und die Informationen über den gemeinsamen Schlüssel, gespeichert in dem sicheren Speicher 10, in dem letzten Schritt einer Programm-Installations-Verarbeitung (SD1) gelöscht werden, die in dem Produkt-Operations-Modus „11" durchgeführt wird. Falls diese nicht gelöscht werden, ist es nicht notwendig, die Informationen über den gemeinsamen Schlüssel von dem Server zu erhalten, und die Informationen über den gemeinsamen Schlüssel können von dem sicheren Speicher 10 gelesen und entschlüsselt werden.
  • Weiterhin wird, in der vorliegenden Ausführungsform, ein Start einer Programm-Aktualisierungs-Verarbeitung durch einen externen Faktor angewiesen, der allgemeine Operations-Abschnitt 211 aktiviert den Programm-Akquisitions-Abschnitt 212, und danach wird ein Programm akquiriert, wobei jeweilige Vorgänge durch ein Boot-Programm angewiesen werden. Allerdings ist die vorliegende Erfindung nicht hierauf beschränkt. Zum Beispiel verbessert eine Struktur, bei der das Boot-Programm den Programm-Akquisitions-Abschnitt 212 aktiviert, weiterhin die Sicherheit.
  • Weiterhin ist der für das Programm eigene Schlüssel nicht notwendigerweise einzigartig für jedes Produkt, sondern kann einzigartig für jeden Produkt-Typ oder für jeden Satz von Produkten sein. Die Absicht der vorliegenden Erfindung ist es, die Beschädigung zu verringern, die dann verursacht werden kann, wenn eine Chiffrierung (Verschlüsselung) in einem Produkt gestört wird. Die Effekte der vorliegenden Erfindung werden ausreichend durch Verringern der Anzahl von LSI-Vorrichtungen erreicht, die Programme haben, die mit demselben Schlüssel verschlüsselt sind. Weiterhin wird, gerade wenn der für das Programm eigene Schlüssel gemeinsam unter allen Produkten ist, der Kommunikations-Pfad gestört bzw. unterbrochen, und das mit dem gemeinsamen Schlüssel verschlüsselte Programm wird gestohlen, wobei einer sicheren LSI-Vorrichtung nicht ermöglicht wird, ohne irgendeine zusätzliche Verarbeitung zu arbeiten. Demzufolge können die ausreichenden Effekte nur durch Ändern des Verschlüsselungsschlüssels von einem gemeinsamen Schlüssel zu einem eigenen Schlüssel erreicht werden.
  • Wie vorstehend beschrieben ist, kann, gemäß der vorliegenden Erfindung, gerade in sicheren LSI-Vorrichtungen mit einer hohen Geheimhaltung, wenn ein Programm erneut mit einem eigenen Schlüssel verschlüsselt wird, der für jede LSI-Vorrichtung einzigartig ist, bevor es ausgeführt wird, eine Aktualisierung des Programms nur durch Übertragen desselben Programms von dem Server aus erreicht werden.
  • Weiterhin wird; gerade wenn auf den Kommunikations-Pfad zwischen dem Server und der sicheren LSI-Vorrichtung missbräuchlich zugegriffen wird, und das mit dem gemeinsamen Schlüssel verschlüsselte Programm gestohlen wird, der sicheren LSI-Vorrichtung nicht ermöglicht, mit dem Programm zu arbeiten, und deshalb wird die Vertraulichkeit verbessert. Weiterhin wird, gerade wenn der missbräuchliche Chiffrierer (die Verschlüsselung) aufgedeckt wird, die Anzahl von Produkten, die beschädigt werden kann, begrenzt, und deshalb wird die Sicherheit, verglichen mit den herkömmlichen Techniken, verbessert.
  • Darüber hinaus wird die Gültigkeit eines gemeinsamen Schlüssels oder eines Programms, empfangen von dem Server, unter Verwendung eines Ursprungs-Hash-Werts verifiziert. Demzufolge ist ein Missbrauch des Ursprungs-Hash-Werts schwierig verglichen mit dem Missbrauch eines verschlüsselten Hash-Werts in dem Kommunikations-Pfad. Deshalb wird die Sicherheit verbessert.

Claims (7)

  1. Verfahren zum Aktualisieren eines mit eigenem Schlüssel verschlüsselten Programms in einem System, das eine LSI-Vorrichtung (1) und einen externen Speicher (100) enthält, wobei das mit eigenem Schlüssel verschlüsselte Programm durch Verschlüsselung mit einem eigenen Schlüssel erzeugt wird, der einzigartig für die LSI-Vorrichtung (1) ist und in dem externen Speicher (100) gespeichert wird, und das Verfahren umfasst: einen ersten Schritt des Empfangens eines verschlüsselten gemeinsamen Schlüssels durch das System, der erzeugt wird, indem ein gemeinsamer Ursprungsschlüssel mit einem ersten Ursprungs-Zwischenschlüssel verschlüsselt wird, wobei der verschlüsselte gemeinsame Schlüssel von einem Server (3) gesendet wird; einen zweiten Schritt des Empfangens eines mit gemeinsamem Schlüssel verschlüsselten Programms durch das System, das durch Verschlüsseln mit dem gemeinsamen Ursprungsschlüssel erzeugt wird und von dem Server (3) gesendet wird; einen dritten Schritt des Entschlüsseln des verschlüsselten gemeinsamen Schlüssels durch das System, um den gemeinsamen Ursprungsschlüssel zu erzeugen; einen vierten Schritt des Entschlüsselns des empfangenen mit gemeinsamem Schlüssel verschlüsselten Programms durch das System mit dem erzeugten gemeinsamen Ursprungsschlüssel, um ein Ursprungsprogramm zu erzeugen; und einen fünften Schritt des Wiederverschlüsselns des Ursprungsprogramms durch das System mit dem eigenen Schlüssel und des Speicherns des wiederverschlüsselten Programms in dem externen Speicher (100) als ein neues mit eigenem Schlüssel verschlüsseltes Programm, gekennzeichnet durch das Empfangen eines verschlüsselten ersten Zwischenschlüssels in dem ersten Schritt, der durch Verschlüsseln des ersten Ursprungs-Zwischenschlüssels mit einem zweiten Ursprungs-Zwischenschlüssel erzeugt wird, wobei der verschlüsselte erste Zwischenschlüssel von dem Server (3) gesendet wird, und dadurch, dass sich der eigene Ursprungsschlüssel von dem gemeinsamen Ursprungsschlüssel und dem ersten Ursprungs-Zwischenschlüssel unterscheidet und in einem nicht überschreibbaren Bereich (11) in einem internen Speicher (10) der LSI-Vorrichtung (1) gespeichert wird.
  2. Programmaktualisierungsverfahren nach Anspruch 1, wobei der zweite Ursprungs-Zwischenschlüssel in der LSI-Vorrichtung (1) gespeichert wird, und wobei der dritte Schritt die folgenden Schritte einschließt: Entschlüsseln des verschlüsselten ersten Zwischenschlüssels mit dem zweiten Ursprungs-Zwischenschlüssel, der in der LSI-Vorrichtung (1) gespeichert ist, um den ersten Ursprungs-Zwischenschlüssel zu erzeugen; und Entschlüsseln des verschlüsselten gemeinsamen Schlüssels mit dem erzeugten ersten Ursprungs-Zwischenschlüssel, um den gemeinsamen Ursprungsschlüssel zu erzeugen.
  3. Programmaktualisierungsverfahren nach Anspruch 1, wobei: der interne Speicher eine Information über den eigenen Schlüssels speichert; das System die Information über den eigenen Schlüssel, die in dem internen Speicher (10) gespeichert ist, nutzt, um beim Urladen des Systems den eigenen Ursprungsschlüssel zu erzeugen.
  4. Programmaktualisierungsverfahren nach Anspruch 3, wobei die Information über den eigenen Schlüssel einen verschlüsselten eigenen Schlüssel, der erzeugt wird, indem der eigene Ursprungsschlüssel mit einem dritten Ursprungs-Zwischenschlüssel verschlüsselt wird, sowie einen verschlüsselten zweiten Zwischenschlüssel enthält, der erzeugt wird, indem der dritte Ursprungs-Zwischenschlüssel mit einem vierten Ursprungs-Zwischenschlüssel verschlüsselt wird.
  5. Programmaktualisierungsverfahren nach Anspruch 3, wobei der erzeugte Ursprungs-Zwischenschlüssel in einem Register (22) der LSI-Vorrichtung (1) gespeichert wird und zum Entschlüsseln des mit einem eigenen Schlüssel verschlüsselten Programms zu einem Ursprungsprogramm zur Ausführung des mit eigenem Schlüssel verschlüsselten Programms genutzt wird.
  6. Programmaktualisierungsverfahren nach Anspruch 1, wobei: die LSI-Vorrichtung (1) einen Boot-ROM (60) enthält, in dem ein Boot-Programm gespeichert ist; der externe Speicher (100) ein Erfassungsprogramm (212) zum Einrichten von Datenübertragung zwischen der LSI-Vorrichtung (1) und einem Server (3) enthält; und das System Empfang des mit gemeinsamem Schlüssel verschlüsselten Programms auf Basis des Erfassungsprogramms (212) ausführt, das in dem externen Speicher (100) gespeichert ist, und Aktualisierungsverarbeitung, die nach dem Empfang des mit gemeinsamem Schlüssel verschlüsselten Programms durchgeführt wird, auf Basis des in dem Boot-ROM (60) gespeicherten Boot-Programms steuert.
  7. Programmaktualisierungsverfahren nach Anspruch 1, das des Weiteren die folgenden Schritte umfasst: Empfangen eines HASH-Wertes des Ursprungsprogramms, der von dem Server gesendet wird; Durchführen einer HASH-Berechnung für das Ursprungsprogramm, das in dem vierten Schritt entschlüsselt wird; und Vergleichen des Ergebnisses der HASH-Berechnung mit dem HASH-Wert; wobei, wenn das Ergebnis der HASH-Berechnung und der HASH-Wert nicht gleich sind, das wiederverschlüsselte Programm nicht als das neue mit einem eignen Schlüssel verschlüsselte Programm gespeichert, sondern gelöscht wird.
DE60303476T 2002-11-15 2003-11-11 Verfahren und server für eine programm-aktualisierung Expired - Lifetime DE60303476T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002331992A JP4099039B2 (ja) 2002-11-15 2002-11-15 プログラム更新方法
JP2002331992 2002-11-15

Publications (2)

Publication Number Publication Date
DE60303476D1 DE60303476D1 (de) 2006-04-20
DE60303476T2 true DE60303476T2 (de) 2006-08-10

Family

ID=32212042

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60303476T Expired - Lifetime DE60303476T2 (de) 2002-11-15 2003-11-11 Verfahren und server für eine programm-aktualisierung
DE60313368T Expired - Lifetime DE60313368T2 (de) 2002-11-15 2003-11-11 Verfahren und Server zum Aktualisieren von Software

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60313368T Expired - Lifetime DE60313368T2 (de) 2002-11-15 2003-11-11 Verfahren und Server zum Aktualisieren von Software

Country Status (6)

Country Link
US (3) US7546468B2 (de)
EP (2) EP1422591B1 (de)
JP (1) JP4099039B2 (de)
CN (1) CN1505311A (de)
DE (2) DE60303476T2 (de)
TW (2) TW200409516A (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4099039B2 (ja) * 2002-11-15 2008-06-11 松下電器産業株式会社 プログラム更新方法
KR20060132011A (ko) * 2004-03-30 2006-12-20 마츠시타 덴끼 산교 가부시키가이샤 암호화 방식의 업 데이트 시스템
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US7512939B2 (en) * 2004-10-05 2009-03-31 Neopost Technologies System and method of secure updating of remote device software
US8347078B2 (en) 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US7562220B2 (en) * 2004-11-15 2009-07-14 Microsoft Corporation System and method for programming an isolated computing environment
US8176564B2 (en) 2004-11-15 2012-05-08 Microsoft Corporation Special PC mode entered upon detection of undesired state
US8464348B2 (en) 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
US8539587B2 (en) * 2005-03-22 2013-09-17 Hewlett-Packard Development Company, L.P. Methods, devices and data structures for trusted data
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
US9436804B2 (en) 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US8353046B2 (en) 2005-06-08 2013-01-08 Microsoft Corporation System and method for delivery of a modular operating system
US20090235003A1 (en) * 2005-06-09 2009-09-17 Takaharu Tanaka Memory control device and memory control method
US7600166B1 (en) * 2005-06-28 2009-10-06 David Dunn Method and system for providing trusted access to a JTAG scan interface in a microprocessor
FR2892876A1 (fr) * 2005-11-02 2007-05-04 Gemplus Sa Procede de depot securise de donnees numeriques, procede associe de recuperation de donnees numeriques, dispositifs associes pour la mise en oeuvre des procedes, et systeme comprenant les dits dispositifs
JP4851182B2 (ja) * 2005-12-28 2012-01-11 ルネサスエレクトロニクス株式会社 マイクロコンピュータ、マイクロコンピュータに対するプログラム書込み方法、及び書込み処理システム
US7941640B1 (en) * 2006-08-25 2011-05-10 Marvell International Ltd. Secure processors having encoded instructions
JP2008084140A (ja) * 2006-09-28 2008-04-10 Hitachi Software Eng Co Ltd 二次記憶装置書込み禁止システム
US8364975B2 (en) * 2006-12-29 2013-01-29 Intel Corporation Methods and apparatus for protecting data
US20080178257A1 (en) * 2007-01-20 2008-07-24 Takuya Mishina Method for integrity metrics management
JP4933286B2 (ja) * 2007-01-26 2012-05-16 株式会社日立製作所 暗号化パケット通信システム
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US20090025066A1 (en) * 2007-07-17 2009-01-22 Protectia Corporation Systems and methods for first and second party authentication
CN101542968B (zh) 2007-08-28 2012-12-26 松下电器产业株式会社 密钥终端装置、加密处理用lsi、固有密钥生成方法和内容系统
WO2009050617A2 (en) * 2007-10-15 2009-04-23 Nxp B.V. Method and service provider for managing expired or consumed applications being stored in mobile communication devices
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US20090204803A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Handling of secure storage key in always on domain
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
TWI585071B (zh) * 2008-05-23 2017-06-01 派洛泰克藥物股份有限公司 四環素化合物之甲苯磺酸鹽及同素異形體
US8397084B2 (en) * 2008-06-12 2013-03-12 Microsoft Corporation Single instance storage of encrypted data
CN102725737B (zh) * 2009-12-04 2016-04-20 密码研究公司 可验证防泄漏的加密和解密
JP2013523043A (ja) 2010-03-22 2013-06-13 エルアールディシー システムズ、エルエルシー ソースデータセットの完全性を識別及び保護する方法
US8555059B2 (en) * 2010-04-16 2013-10-08 Microsoft Corporation Secure local update of content management software
US20120213370A1 (en) * 2011-02-18 2012-08-23 General Instrument Corporation Secure management and personalization of unique code signing keys
US10110380B2 (en) * 2011-03-28 2018-10-23 Nxp B.V. Secure dynamic on chip key programming
US8560662B2 (en) * 2011-09-12 2013-10-15 Microsoft Corporation Locking system for cluster updates
US8876108B2 (en) * 2011-12-26 2014-11-04 Canon Kabushiki Kaisha Sheet transport apparatus and image forming apparatus
DE102013101508A1 (de) * 2012-02-20 2013-08-22 Denso Corporation Datenkommunikationsauthentifizierungssystem für ein Fahrzeug, Netzkopplungsvorrichtung für ein Fahrzeug, Datenkommunikationssystem für ein Fahrzeug und Datenkommunikationsvorrichtung für ein Fahrzeug
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
JP6079208B2 (ja) 2012-12-19 2017-02-15 株式会社ソシオネクスト マイクロコンピュータ,そのミドルウエア及びマイクロコンピュータの動作方法
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
DE102015108336A1 (de) * 2015-05-27 2016-12-01 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren zum Ausführen einer sicherheitsrelevanten Anwendung, Computersystem und Anordnung
JP2017033149A (ja) 2015-07-30 2017-02-09 株式会社東芝 情報処理装置、コントローラ、及び、情報処理装置の制御方法
JP6476098B2 (ja) * 2015-09-15 2019-02-27 ルネサスエレクトロニクス株式会社 半導体装置
US10044514B1 (en) * 2015-09-25 2018-08-07 Xilinx, Inc. Secure external key storage for programmable ICS
US9935945B2 (en) * 2015-11-05 2018-04-03 Quanta Computer Inc. Trusted management controller firmware
US9448785B1 (en) * 2015-11-06 2016-09-20 AO Kaspersky Lab System and method updating full disk encryption software
US11675587B2 (en) 2015-12-03 2023-06-13 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
US10564969B2 (en) 2015-12-03 2020-02-18 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
JP2017108293A (ja) * 2015-12-10 2017-06-15 ルネサスエレクトロニクス株式会社 半導体集積回路装置およびデータ処理装置
EP3293978A1 (de) * 2016-09-09 2018-03-14 Nagravision S.A. Verfahren zur implementierung einer neuen standardkonfiguration in einer host-vorrichtung und system dafür
WO2018235268A1 (ja) * 2017-06-23 2018-12-27 三菱電機株式会社 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ
JP7300866B2 (ja) * 2019-03-28 2023-06-30 オムロン株式会社 制御システム
WO2020243010A1 (en) * 2019-05-24 2020-12-03 Arris Enterprises Llc Key-ladder protected personalization data conversion from global to unique encryption
CN110621014B (zh) * 2019-09-18 2022-06-17 深圳市元征科技股份有限公司 一种车载设备及其程序升级方法、服务器

Family Cites Families (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218738A (en) 1978-05-05 1980-08-19 International Business Machines Corporation Method for authenticating the identity of a user of an information system
US4864615A (en) 1988-05-27 1989-09-05 General Instrument Corporation Reproduction of secure keys by using distributed key generation data
US4941176A (en) * 1988-08-11 1990-07-10 International Business Machines Corporation Secure management of keys using control vectors
US5037497A (en) * 1988-08-30 1991-08-06 Cochlear Corporation Method of fabricating an array of recessed radially oriented bipolar electrodes
US4914176A (en) * 1989-03-17 1990-04-03 Shell Oil Company Poly(heterocyclic) polymers
US5029207A (en) 1990-02-01 1991-07-02 Scientific-Atlanta, Inc. External security module for a television signal decoder
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
JPH0713705A (ja) * 1993-06-16 1995-01-17 Hitachi Ltd ディスク装置
US5416840A (en) * 1993-07-06 1995-05-16 Phoenix Technologies, Ltd. Software catalog encoding method and system
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
JPH0822390A (ja) 1994-07-05 1996-01-23 Advance Co Ltd ソフトウエア防衛方式
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5999629A (en) 1995-10-31 1999-12-07 Lucent Technologies Inc. Data encryption security module
US6577734B1 (en) * 1995-10-31 2003-06-10 Lucent Technologies Inc. Data encryption key management system
JP3627384B2 (ja) * 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
US5701492A (en) * 1996-03-29 1997-12-23 Canon Kabushiki Kaisha Fail-safe flashing of EPROM
US5812671A (en) 1996-07-17 1998-09-22 Xante Corporation Cryptographic communication system
US5771287A (en) 1996-08-01 1998-06-23 Transcrypt International, Inc. Apparatus and method for secured control of feature set of a programmable device
US6523119B2 (en) 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
JPH10214232A (ja) * 1997-01-30 1998-08-11 Rohm Co Ltd Icカードおよびicカードの運用方法
EP1653463A1 (de) * 1997-05-13 2006-05-03 Kabushiki Kaisha Toshiba Verfahren und Vorrichtung zum Kopieren von Lizenzinformationen, Verfahren zum Versetzen von Lizenzinformationen
US6987854B2 (en) 1997-09-25 2006-01-17 Thomson Licensing S.A. Method and apparatus for recording of encrypted digital data
EP0912052A1 (de) 1997-09-25 1999-04-28 CANAL+ Société Anonyme Verfahren und Vorrichtung zur Aufnahme chiffrierter digitaler Daten
JP3272283B2 (ja) 1997-11-14 2002-04-08 富士通株式会社 電子データ保管装置
US6333983B1 (en) * 1997-12-16 2001-12-25 International Business Machines Corporation Method and apparatus for performing strong encryption or decryption data using special encryption functions
US6134659A (en) * 1998-01-07 2000-10-17 Sprong; Katherine A. Controlled usage software
US6189146B1 (en) * 1998-03-18 2001-02-13 Microsoft Corporation System and method for software licensing
GB2336005A (en) 1998-03-28 1999-10-06 Motorola Ltd Maintaining security in development tools
JPH11282667A (ja) 1998-03-31 1999-10-15 Nakamichi Corp 多重鍵方式の暗号処理機能を有するマイクロプロセッサ
EP0994599A4 (de) 1998-04-01 2009-06-03 Panasonic Corp Verfahren zum senden/empfangen von daten, datensender, datenempfänger, einrichtung zum senden/empfangen von daten, verfahren zum senden eines audiovisuellen inhalts, verfahren zum empfangen eines audiovisuellen inhalts, sender und empfänger eines audiovisuellen inhalts, und programmaufzeichungsmedium
JP3995338B2 (ja) * 1998-05-27 2007-10-24 富士通株式会社 ネットワーク接続制御方法及びシステム
US6799277B2 (en) * 1998-06-04 2004-09-28 Z4 Technologies, Inc. System and method for monitoring software
EP1014618A1 (de) * 1998-07-30 2000-06-28 Sony Corporation Vorrichtung zur verarbeitung eines inhalts
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US7110984B1 (en) * 1998-08-13 2006-09-19 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US6385727B1 (en) * 1998-09-25 2002-05-07 Hughes Electronics Corporation Apparatus for providing a secure processing environment
JP2000122931A (ja) 1998-10-15 2000-04-28 Toshiba Corp デジタル集積回路
JP2000181803A (ja) * 1998-12-18 2000-06-30 Fujitsu Ltd 鍵管理機能付電子データ保管装置および電子データ保管方法
US6791580B1 (en) * 1998-12-18 2004-09-14 Tangis Corporation Supplying notifications related to supply and consumption of user context data
JP2000231608A (ja) * 1999-02-10 2000-08-22 Hitachi Ltd 移動体識別装置及びicカード
JP3779837B2 (ja) 1999-02-22 2006-05-31 松下電器産業株式会社 コンピュータ及びプログラム記録媒体
AU3629400A (en) 1999-03-19 2000-10-09 Cybersource Corporation Method and apparatus for verifying address information
WO2000057290A1 (fr) 1999-03-19 2000-09-28 Hitachi, Ltd. Processeur d'informations
US6367019B1 (en) * 1999-03-26 2002-04-02 Liquid Audio, Inc. Copy security for portable music players
JP2000347852A (ja) 1999-03-30 2000-12-15 Sony Corp 情報処理装置および方法、並びにプログラム格納媒体
JP2000347847A (ja) 1999-03-30 2000-12-15 Sony Corp 情報処理装置および方法、半導体ic、情報処理システム、並びにプログラム格納媒体
US6988199B2 (en) * 2000-07-07 2006-01-17 Message Secure Secure and reliable document delivery
US6324647B1 (en) * 1999-08-31 2001-11-27 Michel K. Bowman-Amuah System, method and article of manufacture for security management in a development architecture framework
US6643259B1 (en) * 1999-11-12 2003-11-04 3Com Corporation Method for optimizing data transfer in a data network
JP4090166B2 (ja) * 1999-11-22 2008-05-28 株式会社東京アールアンドデー 電動装置及び電動装置システム
JP3677001B2 (ja) * 1999-12-03 2005-07-27 三洋電機株式会社 データ配信システムおよびそれに用いられる記録装置
KR100758077B1 (ko) * 1999-12-28 2007-09-11 마츠시타 덴끼 산교 가부시키가이샤 기록장치, 재생장치, 데이터처리장치, 기록재생장치, 데이터송신장치, lsi
JP2001211149A (ja) 2000-01-25 2001-08-03 Sony Corp データ処理装置およびデータ処理方法、並びにプログラム提供媒体
JP2001274786A (ja) 2000-01-21 2001-10-05 Victor Co Of Japan Ltd コンテンツ情報伝送方法、コンテンツ情報記録方法、コンテンツ情報伝送装置、コンテンツ情報記録装置、伝送媒体、及び記録媒体
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
JP3888823B2 (ja) * 2000-02-14 2007-03-07 松下電器産業株式会社 半導体集積回路
US20020021804A1 (en) * 2000-02-18 2002-02-21 Ledzius Robert C. System and method for data encryption
JP4622064B2 (ja) * 2000-04-06 2011-02-02 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
JP2001290671A (ja) 2000-04-10 2001-10-19 Matsushita Electric Ind Co Ltd インサーキットエミュレータおよび記録媒体およびミドルウェア発行システム
US7003107B2 (en) * 2000-05-23 2006-02-21 Mainstream Encryption Hybrid stream cipher
JP2001339383A (ja) * 2000-05-29 2001-12-07 Hitachi Ltd 認証通信用半導体装置
JP3505482B2 (ja) * 2000-07-12 2004-03-08 株式会社東芝 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
US20020016917A1 (en) * 2000-08-04 2002-02-07 Tomohiko Kitamura System integrated circuit
JP3811340B2 (ja) * 2000-08-11 2006-08-16 Kpe株式会社 表示装置及び遊技機
US7051211B1 (en) * 2000-08-21 2006-05-23 International Business Machines Corporation Secure software distribution and installation
US6857067B2 (en) * 2000-09-01 2005-02-15 Martin S. Edelman System and method for preventing unauthorized access to electronic data
CN1219382C (zh) 2000-09-05 2005-09-14 中兴通讯股份有限公司 一种新的加密装置
JP4269501B2 (ja) * 2000-09-07 2009-05-27 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
JP4595182B2 (ja) * 2000-09-07 2010-12-08 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
WO2002023349A1 (fr) * 2000-09-18 2002-03-21 Kabushiki Kaisha Toshiba Support electronique portable
JP4153653B2 (ja) 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
US20020078380A1 (en) 2000-12-20 2002-06-20 Jyh-Han Lin Method for permitting debugging and testing of software on a mobile communication device in a secure environment
US6970565B1 (en) * 2000-12-22 2005-11-29 Xm Satellite Radio Inc. Apparatus for and method of securely downloading and installing a program patch in a processing device
JP4710132B2 (ja) 2000-12-26 2011-06-29 ソニー株式会社 情報処理システム、および情報処理方法、並びにプログラム記録媒体
DE10065684A1 (de) * 2000-12-29 2002-07-18 Aladdin Knowledge Systems Gmbh System und Verfahren zum Erteilen der Laufberechtigung für ein auf einem Rechner installiertes Programm
US20020095382A1 (en) * 2001-01-10 2002-07-18 Hiroki Taoka Content decryption device
US7174568B2 (en) * 2001-01-31 2007-02-06 Sony Computer Entertainment America Inc. Method and system for securely distributing computer software products
JP2002244989A (ja) * 2001-02-20 2002-08-30 Nec Corp デバイスドライバ作動方法
JP2002251326A (ja) 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
US20030211793A1 (en) * 2001-03-05 2003-11-13 Eugene Bell Injectable bio-compatible material and methods of use
JP3995894B2 (ja) 2001-03-16 2007-10-24 日本電信電話株式会社 アプリケーション又はデータ格納メモリを具えた装置の使用可能記憶容量増大方法
US7043637B2 (en) * 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
JP3918448B2 (ja) * 2001-04-02 2007-05-23 日本ビクター株式会社 エージェントシステムにおける認証方法
US20020174264A1 (en) * 2001-05-17 2002-11-21 David Fuller System and method for obtaining driver software and documentation for a detected hardware and software configuration
US20020184512A1 (en) 2001-05-31 2002-12-05 Cardoso Augusto C. Method and apparatus for supporting remote configuration to facilitate subscriber management
JP2002358092A (ja) * 2001-06-01 2002-12-13 Sony Corp 音声合成システム
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7367028B2 (en) 2001-08-14 2008-04-29 National Instruments Corporation Graphically deploying programs on devices in a system
KR100433056B1 (ko) * 2001-08-18 2004-05-24 엘지전자 주식회사 프로그램 업그레이드 방법
JP3773431B2 (ja) * 2001-09-20 2006-05-10 松下電器産業株式会社 鍵実装システムおよびこれを実現するためのlsi、並びに鍵実装方法
JP2003110543A (ja) * 2001-09-27 2003-04-11 Toshiba Corp 暗号キー設定システム、無線通信装置および暗号キー設定方法
US7117352B1 (en) 2002-02-13 2006-10-03 Lsi Logic Corporation Debug port disable mechanism
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US7146609B2 (en) 2002-05-17 2006-12-05 Sun Microsystems, Inc. Method, system and article of manufacture for a firmware image
US20040088176A1 (en) * 2002-11-04 2004-05-06 Balaji Rajamani System and method of automated licensing of an appliance or an application
JP4099039B2 (ja) * 2002-11-15 2008-06-11 松下電器産業株式会社 プログラム更新方法

Also Published As

Publication number Publication date
US7849331B2 (en) 2010-12-07
EP1422591A1 (de) 2004-05-26
US20090138728A1 (en) 2009-05-28
JP4099039B2 (ja) 2008-06-11
EP1594030A3 (de) 2005-12-28
DE60313368D1 (de) 2007-05-31
JP2004164491A (ja) 2004-06-10
EP1422591B1 (de) 2006-02-08
US7546468B2 (en) 2009-06-09
CN1505311A (zh) 2004-06-16
EP1594030B1 (de) 2007-04-18
US20040105548A1 (en) 2004-06-03
DE60303476D1 (de) 2006-04-20
US20070217614A1 (en) 2007-09-20
US7539312B2 (en) 2009-05-26
DE60313368T2 (de) 2008-05-15
TW200903215A (en) 2009-01-16
EP1594030A2 (de) 2005-11-09
TW200409516A (en) 2004-06-01

Similar Documents

Publication Publication Date Title
DE60303476T2 (de) Verfahren und server für eine programm-aktualisierung
DE60302844T2 (de) Halbleitervorrichtung mit Verschlüsselung, Halbleitervorrichtung mit externer Schnittstelle, und Inhaltswiedergabeverfahren
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE60002893T2 (de) Computerplattformen und deren betriebsverfahren
DE102009013384B4 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
DE60202605T2 (de) Verfahren zur sicherung eines elektronischen geräts, sicherheitssystem und elektronisches gerät
DE10392528T5 (de) Microcode-Patch-Authentifizierung
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE69534757T2 (de) System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE10196006B4 (de) Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung
DE69824251T2 (de) Entschlüsselungsvorrichtung
DE112005001666B4 (de) Verfahren zum Bereitstellen von privaten Direktbeweis-Schlüsseln in signierten Gruppen für Vorrichtungen mit Hilfe einer Verteilungs-CD
DE112005001654B4 (de) Verfahren zum Übermitteln von Direct-Proof-Privatschlüsseln an Geräte mittels einer Verteilungs-CD
DE112011104325T5 (de) Computerlesbare Speichermedien zum Verschlüsseln und Entschlüsseln einer virtuellen Platte
DE112009002502T5 (de) Multilayer inhalte-schützender Mikrocontoller
EP1184771A1 (de) Verfahren zum Schutz von Computer-Software und/oder computerlesbaren Daten sowie Schutzgerät
DE112009004762T5 (de) System und verfahren zum durchführen einer verwaltunosoperation
DE102015209108A1 (de) Verfahren und Entscheidungsgateway zum Autorisieren einer Funktion eines eingebetteten Steuergerätes
DE102007045743A1 (de) Verfahren und System zum Schutz gegen einen Zugriff auf einen Maschinencode eines Gerätes
DE60112227T2 (de) Verfahren und vorrichtung zur sicheren datenverteilung
DE102007030622A1 (de) Verfahren und Anwendung zum Verknüpfen zwischen Systemen auf der Grundlage von Hardware-Sicherheits-Einheiten
EP2502176B1 (de) Verfahren und vorrichtung zum zugreifen auf steuerungsdaten gemäss einer bereitgestellten rechteinformation
DE102012101876A1 (de) PC Absicherung durch BIOS/(U) EFI Erweiterungen
DE102017106042A1 (de) Verfahren zum abgesicherten Hochfahren eines Computersystems, sowie Anordnung, umfassend ein Computersystem und ein an das Computersystem angeschlossenes externes Speichermedium

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP