DE69833594T2 - Gesicherter Prozessor mit externem Speicher unter Verwendung von Block-Chaining und Wiederherstellung der Blockreihenfolge - Google Patents

Gesicherter Prozessor mit externem Speicher unter Verwendung von Block-Chaining und Wiederherstellung der Blockreihenfolge Download PDF

Info

Publication number
DE69833594T2
DE69833594T2 DE69833594T DE69833594T DE69833594T2 DE 69833594 T2 DE69833594 T2 DE 69833594T2 DE 69833594 T DE69833594 T DE 69833594T DE 69833594 T DE69833594 T DE 69833594T DE 69833594 T2 DE69833594 T2 DE 69833594T2
Authority
DE
Germany
Prior art keywords
program information
block
circuit
blocks
authentication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69833594T
Other languages
English (en)
Other versions
DE69833594D1 (de
Inventor
Brant Escondido Candelore
Eric Carlsbad Sprunk
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.)
Arris Technology Inc
Original Assignee
Arris Technology Inc
General Instrument 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 Arris Technology Inc, General Instrument Corp filed Critical Arris Technology Inc
Publication of DE69833594D1 publication Critical patent/DE69833594D1/de
Application granted granted Critical
Publication of DE69833594T2 publication Critical patent/DE69833594T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Die vorliegende Erfindung bezieht sich auf ein Gerät zum effizienten und sicheren Übermitteln von Blöcken von Programminformationen zwischen einer sicheren Schaltung und einer externen Speichervorrichtung. Die Programminformationen werden in Blockketten zur stabileren Verschlüsselung, Trübung der Ausführung, und zur Reduzierung von Authentifizierungsdatenoverhead übertragen.
  • EP 0 354 774 offenbart ein Verfahren zur Kryptographie von Daten unter Verwendung von Steuervektoren. Eine Kryptographie-Einrichtung wird bereitgestellt, die eine sichere Grenze aufweist. Die Kryptographie-Einrichtung bietet eine sichere Stelle zum Ausführen von Datenkryptographiefunktionen als Reaktion auf eine empfangene Dienstanforderung. Ein Steuervektor gehört zu einem Datenkryptographieschlüssel. Der Speicher des kryptographischen Schlüssels befindet sich außerhalb der sicheren Grenze und ist über einen Eingangs-/Ausgangsweg an die sichere Einrichtung gekoppelt. Die sichere Grenze der kryptographischen Einrichtung enthält einen kryptographischen Befehlsspeicher, kryptographische Verarbeitungseinheiten und eine Steuervektorüberprüfungseinheit. Der Steuervektor stellt die Berechtigung für die Verwendungen des kryptographischen Schlüssels, die durch den Urheber des Schlüssels beabsichtigt sind, bereit.
  • Schneier, B. „Applied Cryptographic" 1996, Wiley XP002202254 offenbart kryptographische Algorithmustypen und -modi, insbesondere offenbart diese Referenz einen Modus zur Schlüsselblockverkettung.
  • EP 0 281 224 A2 offenbart die Übertragung von verschlüsselten Nachrichten zwischen ausgewählten Paaren von Benutzerstationen in einem sicheren Nachrichtensystem.
  • DE 2715 631 A1 offenbart ein Verfahren zum Verschlüsseln von Daten, die in der Form von Datenblöcken bereitgestellt sind. Dieses Verfahren übermittelt nachfolgende Datenblöcke an die Verschlüsselungsvorrichtung, um verschlüsselte Datenblöcke zu erhalten.
  • US Patent 4,634,807 offenbart eine Vorrichtung zum Schutz von Software. Um das unberechtigte Kopieren von Software zu verhindern, wird ein Softwaremodul unter Verwendung des Datenverschlüsselungsnorm-Algorithmus (DES-Algorithmus) verschlüsselt, und der Schlüssel wird unter Verwendung des öffentlichen Schlüssels eines öffentlichen/privaten Schlüsselalgorithmus verschlüsselt. Um das Modul zu verwenden, wird es in eine Vorrichtung zum Schutz der Software eingegeben, in der der in dem RAM gehaltene private Schlüssel durch einen Prozessor verwendet wird, um den DES-Schlüssel unter Verwendung von im ROM aufbewahrten Befehlen zu decodieren. Weitere durch diesen ROM aufbewahrte Befehle werden durch den Prozessor verwendet, um das Modul zu decodieren. Wenn die Reihenfolge vollständig ist, wird der Prozessor oder zum Beispiel ein Hauptrechner dazu befähigt, die decodierte Software zu verwenden. Eine Schalt-/Rücksetzschaltung arbeitet jedoch, so dass sie den Zugriff auf das RAM und das ROM verhindert, wodurch die Geheimhaltung des privaten Schlüssels und jedes beliebigen decodierten DES-Schlüssels, der nun in dem RAM gespeichert ist, bewahrt wird.
  • Die folgenden Definitionen werden bereitgestellt:
  • Sichere Schaltung:
  • Eine sichere Schaltung ist eine kryptographische integrierte Schaltung (IC), bei der niemand, nicht einmal der Besitzer, über Zugriff auf die Internbusse, Register und andere in der IC enthaltenen Schaltungsanordnungen verfügt. Die IC kann schutzwürdige Schlüssel-, identifizierungs- und andere Daten aufbewahren, die sichere Schaltung muss jedoch nicht der Umfang einer IC sein. Es könnte beispielsweise ein Personalcomputer (PC) in einem Netzrechner sein, der ein Programm aus einer gemeinsamen Speichervorrichtung ausführt, auf das über ein Netz zugegriffen wird. Der Netzrechner könnte auf einen Server zugreifen, um Anwendungen in Echtzeit ablaufen zu lassen. Teile der Anwendungen werden stückweise an die Netzrechner übertragen. Das Netz kann mehreren Computern ermöglichen, auf die gleiche Anwendung zur gleichen Zeit zuzugreifen. Mit einem PC kann der Besitzer Zugriff auf die empfangenen entschlüsselten und/oder authentifizierten und/oder neu geordneten Programminformationen haben. Des Weiteren kann eine sichere Schaltung unverschlüsselte aber authentifizierte Daten verarbeiten.
  • Speichervorrichtung:
  • Eine Speichervorrichtung ist eine Komponente mit diskretem Speicher, wie etwa einer IC, verschiedener Typen. Wie in dem oben beschriebenen PC-Beispiel könnte die Speichervorrichtung jedoch eine Massenspeichervorrichtung wie etwa ein lokal oder entfernt befindliches Hartplattenlaufwerk sein. Falls entfernt befindlich, könnten die Daten zwischen der Speichervorrichtung und der sicheren Schaltung über ein Ethernet ähnliches Netz oder zum Beispiel gemäß der IEEE 1394-Norm übertragen werden. Lokaler Zugriff auf die Massenspeichervorrichtung kann zum Beispiel über den ISA-, VESA- oder den PCI-Datenbus des PCs erfolgen, oder er könnte sogar durch eine SCSI-, serielle oder parallele Schnittstelle erfolgen. Auf die Massenspeichervorrichtung kann durch andere Netzrechner oder sichere Schaltungen zugegriffen werden. Die Speichervorrichtung könnte ebenfalls ein JazzTM-Laufwerk, ein Band, eine CD-ROM, eine DVD, ein Personalcomputerspeicherkartenschnittstellenadapter (PCMCIA Personal Computer Memory Card Interface Adapter), eine Chipkarte oder jeder beliebige andere Typ von Massenspeichervorrichtung sein.
  • Es ist im Fall des Netzrechners zum Beispiel möglich, dass auf Nur-Lese-Programminformationen über das Netz zugegriffen wird. Eine lokale Speichervorrichtung, z. B. ein Speicher, der Schreib-/Lesevermögen ermöglicht, der für externe Speicherzwecke sicher ist, kann verwendet werden. Daher kann die Speichervorrichtung jede beliebige Kombination von Gerättypen sein. Und in dem Fall einer vernetzten Speichervorrichtung können die Programminformationen stückweise an einen schnelleren lokalen Speicher kopiert werden, der ein synchroner dynamischer Speicher sein kann.
  • Programminformationen:
  • Programminformationen beziehen sich allgemein auf beliebige Informationen, die bei der Ausführung eines Programms von der sicheren Schaltung verwendet werden. Dies kann Befehle wie etwa Betriebscodes (Opcodes) in Maschinencode oder Pseudocode oder interpretiertem Code, wie etwa JavaTM umfassen. Es kann Verweistabellen, gespeicherte Schlüssel und verschiedene vorübergehende Daten wie etwa Zwischenkalkulationen und den Zustand der sicheren Schaltung umfassen.
  • Es kann sogar einige oder alle der Initialisierungsvektoren und Schlüssel umfassen, die verwendet werden, um den Rest der Programminformationen in Blockketten zu verschlüsseln/entschlüsseln oder zu verifizieren/authentifizieren. Dies kann die Verschlüsselung der gleichen Vektor- oder Schlüsselinformationen unter unterschiedlichen Schlüsseln ermöglichen, so dass verschiedene sichere Schaltungen individuell oder als ausgewählte Gruppen Zugriff auf die gleichen Programminformationen ableiten und unterschiedliche Schlüssel abgeleitet haben oder geliefert worden sind.
  • Die Informationen könnten Schlüsselinformationen und Daten umfassen, die mit der Beschaffenheit der Speicherung von Bytes eines Blocks, von Blöcken einer Kette und Ketten in der Speichervorrichtung zu tun haben. Dies kann die Ordnungspermutationsinformationen der verschiedenen Felder einer Kette oder von Reihenfolgen von Ketten, die später detaillierter beschrieben werden, umfassen.
  • Hash:
  • Der Hash kennzeichnet nicht grundsätzlich eine Einwegfunktion. Obwohl eine strikte Einwegfunktion eine Möglichkeit ist, kann die Funktion unter einem geheimen Schlüssel oder einer Falltür-Einwegfunktion umkehrbar sein, oder sie kann eine sehr einfache Funktion wie etwa eine EXKLUSIV ODER-Verknüpfung sein.
  • Datenübersendung und kryptographische Verarbeitung:
  • Datenübersendung wird für Text-, Nachrichten-, Video- und Audiosignale aller Typen verwendet. Diese umfassen, sind aber nicht begrenzt auf Text, Nachrichten, Video und Audio von rundgesendetem und interaktivem Fernsehen und Radio, Programmführern, Nachrichtendiensten und interaktivem Nachrichtenverkehr über Übertragungskanäle. Die verwürfelte Datenübersendung kann auf verschiedenen Wegen, z. B. über eine Rundfunk-, Satelliten-, Kabel-, Telephon- oder andere Verbindung, oder von einem entfernbaren Massenspeichermittel wie etwa einer DVD-Platte, einem Band, einer Audio-CD (CD), einer Diskette oder einer anderen sicheren Schaltung gesendet werden und von einem Entwürfelungsempfänger, z. B. einem Decodierer wie etwa einer Set-Top-Box, einem Spieler oder einem Personalcomputer bei einem Benutzer zu Hause empfangen werden.
  • Die Datenübersendung könnte einfach eine Antwort auf eine Herausforderung sein. Die Herausforderung verursacht, dass die sichere Schaltung die Herausforderungsinformationen mit einer Art kryptographischer Verarbeitung transformiert, um eine Ausgabe zu schaffen, die verifiziert, dass die sichere Schaltung tatsächlich gewisse geheime oder private Schlüssel hält.
  • Interne Register in der sicheren Schaltung können inkrementiert oder dekrementiert werden. Diese Werte können zusammen mit dem geheimen oder dem privaten Schlüssel berechnet werden, um den Wert der Ausgabe zu kalkulieren. Derartige Herausforderungs- und Antworttechniken werden typischerweise verwendet, um das Vorhandensein einer gültigen sicheren Schaltung zu authentifizieren, bevor eine Dienstleistung bewilligt wird.
  • Kryptographische Verarbeitung:
  • Es handelt sich hier um Verarbeitung, die durch eine sichere Schaltung durchgeführt wird, was typischerweise in der Erzeugung eines Schlüssels resultiert. Der Schlüssel kann dann für zahlreiche Dinge verwendet werden: Verwürfeln und Entwürfeln einer Datenübersendung, Identitätsverifizierung durch einen Client oder Hauptrechner etc. Der Schlüssel muss nicht immer innerhalb der sicheren Schaltung eingebaut sein. Er kann zum Beispiel aus Verifizierungsgründen aus der sicheren Schaltung hinaus geschickt werden.
  • Verschiedene Probleme aus Entwürfen des Stands der Technik werden nun behandelt.
  • Problem: Verschiedene proprietäre Algorithmen können gestohlen werden
  • Mühsam und mit großen Kosten entwickelte Software kann alltäglich von externen Speichervorrichtungen kopiert werden. Das Problem wird durch offene Netze, wie etwa das Internet, verschlimmert, die eine schnelle und weitreichende Verteilung des raubkopierten Codes ermöglichen.
  • Mit den erhöhten Geschwindigkeiten von Universal-Prozessorchips besteht ein Trend dazu, viele Verarbeitungsaufgaben in Software durchzuführen, die früher in Hardware vorgenommen wurden. Die Software wird durch die Verwendung von diskreten Speicherkomponenten und/oder Speichervorrichtungen einschließlich Massenspeichervorrichtungen übertragen. Dies kann eine schnelle Rekonfiguration des Verarbeitungssystems für unterschiedliche Anwendungen durch das einfache Ausführen unterschiedlicher Software ermöglichen. Dieser Trend wird aber durch die Tatsache behindert, dass Software leicht kopiert, disassembliert, umgekehrt technisiert und nachfolgend verteilt werden kann, wodurch der Entwickler und/oder Erfinder des Nutzens dieses geistigen Eigentums beraubt wird.
  • Mit erhöhter Geschwindigkeit und Zuverlässigkeit von Netzen, z. B. einem Ethernet, das von 10 Megabit pro Sekunde zu 100 Megabit pro Sekunde und so weiter geht, ist es ebenfalls realistisch, Systeme zu implementieren, bei denen Software in einem Netz in Echtzeit ausgeführt werden kann. Sogenannte Netzrechner würden immer auf die neueste Ausgabe einer Anwendung zugreifen, die auf dem Netz basierenden Server geladen ist. Auf jede beliebige Anwendung in den Archiven dieses Servers könnte schnell zugegriffen werden. Derartige Server könnten jedoch für jemanden empfänglich sein, der die gesamte Anwendung herunterlädt und speichert, wodurch dem Dienstleistungsanbieter aktueller Umsatz vorenthalten wird. Sobald die Software heruntergeladen ist, könnte sie leicht mit anderen geteilt werden.
  • Es wäre daher wünschenswert, die Softwareanalyse und die Umkehrtechnik sowie das Kopieren von Software und die Wiederverwendung durch Universalprozessoren schwieriger zu machen.
  • Problem: Kryptographischer Schlüsselerzeuger
  • Kryptographische Anwendungen umschließen typischerweise die Erzeugung/Ableitung von einem auf geheimen oder privaten Schlüsselinformationen basierenden Schlüssel.
  • Ein typischer kryptographischer Schlüsselerzeuger führt kryptographische Verarbeitung auf Datenübersendungen durch. Verwürfelnde Datenübersendungen sind aufgrund der Notwendigkeit, unberechtigte Personen (z. B. Raubkopierer) vom Erlangen von Zugriff auf Datenübersendungen abzuhalten, zunehmend wichtig geworden. Ganz gleich, wie die Daten übersendet oder geliefert werden, ist die kryptographische Verarbeitung gegenwärtig, um sicherzustellen, dass die Anbieter der Daten, z. B. die verwürfelnden Sender, für das geistige Eigentum, dass sie übersenden, bezahlt werden. Im Fall eines Kommunikationsnetzes können Nachrichten verwürfelt werden, um die Geheimhaltung der Nachrichten sicherzustellen und sowohl den Sender als auch den Empfänger zu authentifizieren. Es kann Unleugbarkeit berücksichtigen, um zu verhindern, dass ein Empfänger später beansprucht, dass er die Daten nicht bestellt hat. Unleugbarkeit ist wichtig für Anbieter, da sie so eher mit Bezahlung rechnen können. Niemand außer dem gutgläubigen Käufer verfügt sonst über die notwendigen kryptographischen Schlüssel, um Nachrichten zu authentifizieren. Die Datenübertragung wird vor der Übersendung unter einem oder mehreren geheimen Verwürfelungsschlüsseln kryptographisch verarbeitet, z. B. verwürfelt. Die kryptographisch verarbeitete Datenübersendung wird durch einen kryptographischen Deprozessor (Entwürfelungsempfänger) wie etwa eine Set-Top-Box, einen Mediaplayer oder einen Personalcomputer bei einem Benutzer zu Hause empfangen.
  • Typischerweise wird die kryptographische Verarbeitung wie etwa das, was durch einen Entwürfelungsempfänger gemacht wird, in einer sicheren Schaltung vorgenommen. Die sichere Schaltung wird zum Zeitpunkt der Herstellung oder Anwendungsinstallation und Initialisierung mit den erforderlichen Schlüsseln versehen und führt eine Art von Verarbeitung durch, um Zugriff auf die Datenübersendung zu gewähren. Wenn Zugriff ermöglicht wird, wird der Entschlüsselungsschlüssel abgeleitet. Wenn der Entschlüsselungsschlüssel zusammen mit dem zugehörigen Hardware- oder Softwareentschlüsselungsmodul verwendet wird, wird die Datenübersendung entwürfelt, z. B. sichtbar oder anderweitig geeignet für den Benutzer gemacht.
  • Die Entwürfelungshardware oder -software kann in einer sicheren Schaltung wie etwa einer anwendungsspezifischen IC (ASIC) eingeschlossen sein.
  • Auf ähnliche Weise verwendet der Verwürfelungssender, z. B. ein PC bei jemandem zu Hause, Verwürfelungsinformationen wie etwa Kreditkartennummern für die Lieferung an einen Händler über das Internet, die zur Zeit der Herstellung oder Anwendungsinstallierung und -initialisierung die erforderlichen geladenen Schlüssel, um einen Schlüssel abzuleiten, um die sensitiven Daten zur Übersendung zu verwürfeln.
  • In dem PC-Beispiel kann das Verwürfeln in einem Softwaremodul vorgenommen werden, aber das Verwürfeln kann nicht wirklich in dem stattfinden, was als sichere Schaltung betrachtet wird. Der in beiden Fällen abgeleitete Schlüssel (zum Verwürfeln und Entwürfeln) kann von der sicheren Schaltung an das Verwürfelungs-/Entwürfelungsmodul für Hardware oder Software ausgegeben werden, oder sie kann den Schlüssel intern an der sicheren Schaltung halten – wobei das Entschlüsselungsmodul intern in der sicheren Schaltung liegt. Der Schlüssel wird vorzugsweise gehalten, und das Verwürfeln/Entwürfeln wird intern zu der sicheren Schaltung durchgeführt.
  • Wenn der Schlüssel von der sicheren Schaltung ausgegeben wird, kann er sehr schnell gewechselt werden, sogar einige Male in einer Sekunde, wobei er nur zur kurzlebigen Verwendung bekannt ist. Die Hardwareverwürfelung/-Entwürfelung des Hardware- oder Softwaremoduls kann sich entfernt von der sicheren Schaltung befinden, die den Schlüssel abgeleitet hat, um die Datenübersendung zu verwürfeln/entwürfeln.
  • Für einen PC, der Befehle über ein Netz ausführt, kann die sichere Schaltung der PC selbst sein, und die Entwürfelungseinheit könnte einfach ein Softwaremodul sein, das eine Länge und einen Zeiger zum Beispiel auf eine Nachricht im Intern- oder Externspeicher empfängt, zusammen mit dem dazugehörigen Schlüssel und kryptographischen Funktionsbezeichner.
  • Die durch das kryptographische Verarbeiten in der sicheren Schaltung durchgeführte Funktion könnte das Hashen von Nachrichten, Unterzeichnen und Signaturauthentifizierung unter Verwendung von öffentlich bekannten Hash-Algorithmus und der Kryptographie öffentlicher Schlüssel mit sich bringen.
  • In sowohl dem ASIC-Fall als auch dem PC-Fall oben wird typischerweise ein Mikroprozessor verwendet, um die Zugriffskontrolle zu implementieren, um Hashen, Signaturverifizierung, Signatur und Authentifizierungsfunktionen durchzuführen. Diese Verarbeitung verifiziert, dass die sichere Schaltung tatsächlich berechtigt ist, die Datenübersendung zu entschlüsseln. Wenn er berechtigt ist, leitet der Mikroprozessor dann den Entwürtelungsschlüssel zur Datenübersendung ab. Die sichere Schaltung weist typischerweise eine interne Speichervorrichtung, z. B. einen Speicher, zum Speichern von Entwürfelungsprogramminformationen zur Verwendung durch den Mikroprozessor, Speicher zum Speichern der Entwürfelungsschlüsseldaten und des Zustands des Decodierers und einen Notizblockspeicher zum Speichern von Zwischenkalkulationen und vorübergehenden Daten auf. Der Zustand des Entwürfelungsempfängers, z. B. Decodierers, kann zum Beispiel anzeigen, ob der Decodierer auf einen bestimmten Kanal und den Kanalkennzeichner abgestimmt ist. Der Zustand des Entwürfelungsempfängers kann ebenfalls speichern, ob er berechtigt ist, den Kanal zu empfangen, und ob ein abgestimmtes Programm zum Beispiel Abonnement, Gebührenfernsehen oder Videoabruf ist.
  • Es wäre daher wünschenswert, die Angriffe von Raubkopierern auf kryptographische Schlüsselerzeuger, die mit dem Externspeicher ausführen, schwieriger zu machen.
  • Problem: Starrheit bei der Verwendung von internen ROM- und RAM-Kapazitätsangelegenheiten
  • Bei einer ASIC (anwendungsspezifische integrierte Schaltung) kann der durch die IC verwendete Internspeicher, um Programminformationen zu speichern, aus dem Festwertspeicher (ROM), einem änderbaren programmierbaren Festwertspeicher (EPROM), einem elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), einem Flash-Speicher oder einem batteriegeschützten Festwertspeicher geschaffen werden. Typischerweise werden die Gießereiprozesse zur Herstellung von ASICs mit den kleinsten Geometrien und den schnellsten Schaltungen ursprünglich für auf ROM und auf RAM basierende Technologie entwickelt und charakterisiert. EEPROM und Flashfähigkeit treten zu einem späteren Zeitpunkt auf. Daher kann ein Leistungsvorteil gegenüber anderen Technologien dadurch erhalten werden, dass die ASIC zur Verwendung von auf ROM und auf RAM basierender Technologie entworfen wird. Es ist für Gießereien der Größtintegration ebenfalls leichter, Vorrichtungen anstatt mit EEPROM und Flash mit ROM und RAM zu bauen, da diese ein einfacheres Design aufweisen. Der Designer kann daher mit auf ROM und RAM basierenden Entwürfen niedrigere Herstellungskosten realisieren.
  • Das Schaffen eines Internspeichers vollständig aus batteriegeschütztem RAM ist im Allgemeinen unpraktisch, da eine RAM-Zelle mit ihrer Fähigkeit, das Lesen und Schreiben von Daten zu ermöglichen, viel mehr Verknüpfungsglieder enthält und typischerweise eine viel größere Struktur als die einer ROM-Zelle ist, die nur das Lesen von Daten ermöglicht. Daher speichert ein derartiger RAM-Speicher viel weniger Programminformationen als ein ROM-Speicher von gleicher physikalischer Größe.
  • Es gibt jedoch Nachteile beim Speichern von Programminformationen in internem ROM, da die gesamte ASIC ersetzt werden muss, um die Programminformationen zu verändern. Dies kann zum Beispiel notwendig oder wünschenswert sein, um ein Softwareproblem (z. B. einen Fehler) zu beheben oder um unterschiedlichen Kunden neue oder kundenspezifische Merkmale bereitzustellen. Um dies zu erreichen, muss ein neuer Chip mit den veränderten Programminformationen hergestellt werden. Dies kann sehr teuer und zeitaufwendig sein.
  • Außerdem kann, egal wieviel Speicher jedes Typs in die sichere Schaltung, z. B. eine ASIC, gebaut wird, dies zu viel oder zu wenig für jede gegebene Anwendung sein. Wenn der Speicher größer als erforderlich ist, ist der Preis der sicheren Schaltung höher als notwendig. Wenn der Speicher kleiner als erforderlich ist, ist die sichere Schaltung für die Aufgabe entweder nicht geeignet, oder Merkmale müssen ausgelassen werden, um die Software passend zu machen. Es ist selten, dass die Größe des Speichers genau richtig ist.
  • Dementsprechend wäre es wünschenswert, ein Schema zum Modifizieren der Kapazität einer Speichervorrichtung, z. B. die Menge an Speicher, und zum leichten und günstigen Aktualisieren der Programminformationen einer sicheren Schaltung wie etwa eines kryptographischen Chips bereitzustellen. Das System sollte die Programminformationen in einer Speichervorrichtung speichern, die außerhalb der sicheren Schaltung liegt, und für eine effiziente und sichere Übermittlung der Programminformationen zwischen der Speichervorrichtung und der sicheren Schaltung sorgen. Die Übermittlung von Programminformationen sollte schnell genug sein, selbst über ein Netz, um den Codeausführungsanforderungen zu entsprechen. Des Weiteren sollte die Menge an internem Speicher, z. B. Speicher, der erforderlich ist, um die sichere Schaltung zu betreiben, begrenzt sein. Das System kann eine begrenzte Menge an schnell zugreifbaren internen Programminformationen verwenden, die die sichere Schaltung urladen, Fehlerzustände überwachen, Pseudocode interpretieren oder Verarbeitungsereignisse in Echtzeit handhaben können. Diese internen Programminformationen, wenn sie in einer starren Form gespeichert sind, z. B. ROM oder Nur-Lese-CD-ROM, können nicht so leicht geändert werden wie extern gespeicherte Programminformationen.
  • Problem: Sichern des externen Speichers – Authentifizierungsoverhead
  • In der Vergangenheit sind verschiedene Verschlüsselungstechniken auf Bytes und Blöcken verwendet worden. Raubkopierer haben jedoch eine Vielzahl von „Angriffen" eingesetzt, um die Sicherheit des Systems zu brechen. Ein Angriff versucht, die sichere Schaltung dazu zu bringen, den verschlüsselten Speicher zu lesen und ihn in einen klaren Bereich zu schreiben, wo die Programminformationen eingefangen und dann analysiert werden können. Ein Angriff dieses Typs setzt sogar die Entschlüsselungsschaltungsanordnung selbst ein, um die Programminformationen zu entschlüsseln, was die Notwendigkeit ausschließt, umfangreichere Analysen vorzunehmen.
  • Ein anderer Angriff versucht, die Sicherheit der Anwendung selbst zu brechen, indem die Ausführung der Anwendung geändert wird, um die sichere Schaltung, in diesem Fall den Entwürfelungsempfänger, dazu zu bringen, Vorzugsdienstleistungen zu entwürfeln, ohne die entsprechenden Bestellgebühren zu entrichten. Um diese und andere Angriffe zu bewerkstelligen, versuchen die Raubkopierer, die Inhalte der externen Speichervorrichtung, z. B. den Speicher, zu modifizieren. Und um dies zu bewerkstelligen, ist eine verwendete Technik das „Ausloten", bei dem Programminformationen in der externen Speichervorrichtung in einem Trial-and-error-Ansatz manipuliert werden. Der Raubkopierer weiß nicht, welcher geheime Schlüssel oder welche geheimen Schlüssel verwendet wurden, um die Programminformationen zu verschlüsseln, versucht aber, die Programminformationen in der externen Speichervorrichtung zu manipulieren, bis ein nützliches Ergebnis erhalten wird.
  • Um den Erfolg dieser und anderer Angriffe zu verhindern, muss entweder Authentifizierung, stärkere Verschlüsselung, Neuordnung der Kettenfelder oder jede beliebige Kombination der obigen verwendet werden.
  • Authentifizierung kann verwendet werden, um den Ursprung der Programminformationen zu verifizieren. In einem System, das Authentifizierung verwendet, wird die sichere Schaltung keine Programminformationen verarbeiten, die nicht durch die korrekten Authentifizierungsinformationen begleitet werden. Starke Authentifizierung des Stands der Technik ist teuer. Die Menge an Authentifizierungsinformationen muss jedoch ausreichend groß sein, um einen adäquaten Grad an Sicherheit bereitzustellen. Bei herkömmlichen Speicherverschlüsselungsschemata, die Byteverschlüsselung und Blockverschlüsselung verwenden, wären Authentifizierungsinformationen bei jedem Byte oder Block notwendig, die der Chip aus der externen Speichervorrichtung holt. Für ein einzelnes Byte Programminformationen wären einige Bytes Authentifizierungsinformationen notwendig, um das Ausloten zu verhindern. Mit anderen Worten müsste das Byte geweitet werden, um die zusätzlichen Authentifizierungsinformationen zu umfassen. Wenn Oktette von Programminformationen geweitet würden, um nur 8 zusätzliche Bits Authentifizierungsinformationen zu umfassen, könnten die Authentifizierungsinformationen leicht durch Ausloten bestimmt werden, da es bei acht Bits pro Byte nur 28= 256 mögliche Auslotungskombinationen gibt. Um ein Sicherheitsniveau bereitzustellen, das mit dem Datenverschlüsselungsstandard (DES) vergleichbar ist, können 56 Bits (sieben Bytes) verwendet werden, um 256 = 7,2 × 1016 mögliche Kombinationen an Authentifizierungsinformationen bereitzustellen. Die Authentifizierungsinformationen würden folglich (7/(1 + 7)) oder 87 % des Gesamtspeichers darstellen. Diese Menge Overheaddaten ist sehr ineffizient.
  • Bei der Blockverschlüsselung werden einige Bytes Daten gruppiert und in einem Block authentifiziert. Eine Blockgröße von 8 Datenbytes kann zum Beispiel verwendet werden. Mit acht Bytes Authentifizierungsinformationen ist dann der Overhead bei (7/(7 + 8)) oder 47 % des Gesamtspeichers immer noch sehr hoch. Diese überschüssigen Overheaddaten können die Kosten des Gesamtsystems ernsthaft beeinträchtigen, da eine wesentlich größere Speichervorrichtung erforderlich ist, nur um die Authentifizierungsinformationen zu handhaben. Dies ist bei elektronischen Verbrauchervorrichtungen wie etwa tragbaren Spielen, Mobiltelephonen und Fernsehdecodierern, die zu den niedrigst möglichen Kosten hergestellt werden müssen, nicht möglich. Insbesondere sind die Kosten der Speichervorrichtungen üblicherweise ein bedeutender einschränkender Faktor. Folglich ist die Menge an Authentifizierungsinformationenoverhead bei existierenden Datenauthentifizierungsschemen inakzeptabel hoch.
  • Dementsprechend wäre es wünschenswert, ein System zu haben, das die Menge an Authentifizierungsinformationen (z. B. Prüfbits), die erforderlich ist, um die Programminformationen sicher zu übertragen, minimiert.
  • Problem: Verschlüsselung von Programminformationen ungeeignet
  • Auslotangriffe eines einzelnen verschlüsselten Bytes Programminformatonen sind in der Durchführung unbedeutend. Unter erneuter Annahme eines Oktetts erfordert dies das Ausloten von nur 28= 256 Möglichkeiten der Programminformationen, um ein genaues Ergebnis zu erhalten. Bei manchen Angriffen von Raubkopierern ist die Möglichkeit, die Programminformationen einfach in etwas anderes zu ändern, ein Ziel. In diesem Beispiel würde dann allein die Fähigkeit, einen einzelnen Bytewert auszuloten, ohne andere Bytes zu beeinflussen, in einem erfolgreichen Raubkopiererangriff resultieren.
  • Auslotangriffe eines einzelnen verschlüsselten Blocks von Programminformationen sind ein bißchen schwieriger, aber immer noch handhabbar. Ein großer Universalcomputer mit reduziertem Befehlssatz-Prozessor (RISC-Prozessor) weist zum Beispiel Befehle auf, die 64 Bits lang sind. Unter der Annahme eines 8-Byte-Blocks und 8 Bits per Byte ist es für einen Raubkopierer relativ leicht, einen Block Programminformationen abzuändern und nur einen Befehl zu bewirken.
  • Selbst bei Befehlsbreiten der halben Größe, z. B. 32 Bits, sind nur zwei Befehle betroffen. Sogenannte Computer mit komplexen Befehlssätzen-Prozessoren (CISC-Prozessoren) stehen gleichermaßen unter dem Risiko eines Angriffs. Und als „8-Bit-Prozessoren" beschriebene CISC-Prozessoren sind nicht wirklich 8 Bits, da sie typischerweise das Holen von einem, zwei oder drei Operanden von Programminformationen erfordern, was dazu führt, das jeder Befehl zwischen 8 und 32 Bits aufweist, mit einem Durchschnitt von ungefähr 20 Bits, aber dies hängt von der Wahl des durch das Programm verwendeten Befehls ab. Das Ausloten eines 8 Byte-Blocks Verschlüsselungswerte für sogenannte „8 Bit"-Befehle kann daher nur drei Befehle bewirken.
  • Es wäre dementsprechend wünschenswert, einen stabileren Verschlüsselungsalgorithmus zu haben, um Programminformationen sicher zu übertragen.
  • Problem: Sogar die verschlüsselte Ausführung ist beobachtbar
  • Obwohl die Blöcke von Programminformationen verschlüsselt oder authentifiziert sein können, kann jemand, der den Verkehr von Daten auf einem Übertragungsmittel, z. B. einem Bus oder Netz, beobachtet, etwas über die Funktion und den Entwurf der Programminformationen erfahren. Je mehr Informationen ein Raubkopierer über die Programminformationen erfahren kann, desto mehr Möglichkeiten kann er haben, die Ausführung des Programms abzuändern. Eine interne Speicherschaltung wie etwa ein Cache-Speicher kann durch Verweisdaten, die entweder nur entschlüsselt, entschlüsselt und authentifiziert oder einfach von der internen Speicherschaltung authentifiziert wurden, einiges der Funktion und des Entwurfs trüben, anstatt die Programminformationen erneut extern zu holen.
  • Ein Problem tritt jedoch auf, da die ursprüngliche Übertragungsreihenfolge, die die Programminformationen an erster Stelle in den Cache-Speicher geladen hat, beobachtet werden kann. Ein System ohne einen Cache-Speicher ist noch leichter zu analysieren, da der rekursive Code, z. B. Schleifen, auf der externen Schnittstelle sichtbar ist. Es wäre leicht, das Übertragen der gleichen verschlüsselten, verschlüsselten und authentifizierten oder einfach authentifizierten Programminformationen immer wieder zu sehen. Ein Cache-Speicher wird diesen Betrieb verblenden, indem er die Übertragung intern in dem Cache-Speicher und auf dem Übertragungsmittel nicht sichtbar macht. Ein raffinierter Raubkopierer bekommt jedoch eventuell mit, dass keine externe Übertragung erfolgt ist und schließt daraus, dass somit eine Art interner Betrieb erfolgt ist. Prinzipiell ist es nicht wünschenswert, dass ein Raubkopierer irgendetwas über den ausgeführten Algorithmus erfährt. Dies umfasst die Gesamtstruktur wie etwa Byte an Block, Block an Kette oder Kette an Programminformationsreihenfolgeassoziation, Reihenfolge des Verarbeitens, wie etwa das Ausführen bestimmter Programminformationen auf Urladen, und die Organisation der Programminformationen wie etwa Datentabellenorganisation.
  • Es wäre daher wünschenswert, über Techniken zum Trüben der Ausführung der verschlüsselten, authentifizierten oder jeder beliebigen Kette von Programminformationen zu verfügen. Es wäre wünschenswert, die Programminformationen auf eine Weise zu übertragen, die außerhalb der Reihenfolge der wahren Ausführungsreihenfolge durch die sichere Schaltung liegt. Die Reihenfolge kann innerhalb eines Blocks, einer Kette oder einer Programminformationsreihenfolge getrübt werden.
  • Das heißt, es wäre wünschenswert, das Aufreihen der Bytes, die einen Block ausmachen, der Blöcke, die eine Kette ausmachen und der Ketten die eine Programminformationsreihenfolge ausmachen, zu trüben. Die Permutierung der Reihenfolge kann fixiert und kann trotzdem auf einer Byte-um-Byte-, Kette-um-Kette- oder einer Programminformationsreihenfolgebasis unterschiedlich sein. Es wäre wünschenswert, die Trübung der Reihenfolge auszudehnen, so dass sie eine größere Tiefe erreicht, die größer als beispielsweise ein Block über zwei Blöcken oder in der Tat eine gesamte Kette ist. Das gleiche wäre für alle anderen Felder wünschenswert.
  • Problem: Permutierungsalgorithmus der Reihenfolge kann herausgefunden werden
  • Jeder beliebige in Hardware implementierte Permutierungsalgorithmus der Reihenfolge kann für einen Raubkopierer herausfindbar sein, der die Größtintegration oder eine andere Analyse erforscht. Die Permutierungsfunktion kann verschlüsselt und sowohl von der Adresse als auch von der Einheit abhängig sein. Dies hält jedoch einen entschlossenen Raubkopierer nicht davon ab, herauszufinden, was der Schlüssel und die Abhängigkeiten sind.
  • Es wäre daher ebenfalls wünschenswert, über eine Art und Weise zu verfügen, um die Analyse und die Umkehrtechnik der Permutierung der Reihenfolge schwieriger zu machen.
  • Problem: Grundlegende Reihenfolge verändert sich nicht – Adressenplatz immer gleich
  • Selbst mit der Permutierung der Reihenfolge kann ein Raubkopierer jede Übertragung zwischen der Speichervorrichtung beobachten und wissen, welche Bytes zu welchen Blöcken gehören, und welche Blöcke zu welchen Ketten gehören. Das heißt, ein bestimmter Adressenplatz in der Speichervorrichtung gehört zu einem bestimmten Byte, Block oder einer bestimmten Kettensequenz. Der Adressenplatz wird immer die gleichen Informationen enthalten. Es kann sein, dass der Raubkopierer die genauen Positionsinformationen aufgrund der Trübung der Reihenfolge nicht weiß, aber er weiß, dass deren Zugehörigkeit zu den andere Bytes, Blöcken oder Ketten fixiert ist. Der Raubkopierer muss nicht wissen, was der Wert der an der bestimmten Speicherstelle gespeicherten Programminformationen ist. Der Raubkopierer kann einen Wert an der Speicherstelle ausloten. Der Raubkopierer kann dies systematisch tun, indem er durch alle Werte geht, selbst wenn aufgrund der Reihenfolgepermutierungstechniken zu verschiedenen Zeiten auf die Speicherstelle zugegriffen wird.
  • Es wäre daher wünschenswert, über ein Schema zum dynamischen Verändern des Adressenplatzes in der Speichervorrichtung zu verfügen, wo Daten ein bestimmtes Byte, einen bestimmten Block oder eine bestimmte Kettenreihenfolge darstellen, die sich in der Speichervorrichtung befinden, um zu verhindern, dass jemand systematisch den Code auslotet.
  • Problem: Jede Übertragung ist relevant
  • Ein Raubkopierer kann jede Übertragung von Programminformationen zwischen der Speichervorrichtung beobachten und wissen, dass sie verschlüsselt, authentifiziert, in der Reihenfolge permutiert oder alle der obigen ist.
  • Zur zusätzlichen Trübung wäre es wünschenswert, „leere" oder nicht unbedingt notwendige Daten mit den übertragenen Programminformationen zu übertragen.
  • Problem: Bidirektionales Schreiben und Lesen erforderlich
  • Die Speichervorrichtung kann Nur-Lese sein, aber es gibt viele Gründe, weshalb die Speichervorrichtung ebenfalls beschreibbar sein sollte. Unterschiedliche kryptographische und nicht kryptographische jedoch proprietäre Anwendungen weisen variierende Anforderungen zur Datenspeicherung auf.
  • Moderne kryptographische Anwendungen setzen oft öffentliche Schlüsselkryptographie ein, die im Allgemeinen größere Schlüssel erfordert als geheime Schlüsselkryptographie. Der verwürfelnde Sender oder der entwürfelnde Empfänger kann eine Art von kryptographischer Anwendung durchführen, die auf einem offenen Netz wie etwa dem Internet eine Schnittstelle aufweist, was das Speichern einer Anzahl verschiedener öffentlicher Schlüssel, z. B. von einer Root Authority oder einer Certificate Authority, erfordern kann. Bei Decodierern für Bezahlfernsehen gibt es ebenfalls öffentliche Schlüssel für das Zugriffskontrollsystem und/oder den Hersteller des Decodierers. Im Zeitablauf müssen viel mehr öffentliche Schlüssel als ein Ergebnis des Interagierens auf dem Netz gespeichert werden. Einige dieser Schlüssel sollen langlebig sein, und die öffentlichen Schlüssel können zum Beispiel 2048, 4096 Bit oder größer sein. Folglich kann eine Speichervorrichtung mit großer Kapazität, z. B. einer großen Menge an Lese-/Schreibspeicher zur Speicherung von Schlüsseln und anderen ähnlichen Informationen erforderlich sein, um eine gültige kryptographische Anwendung zu bewirken.
  • Das Gleiche kann über zahlreiche proprietäre Anwendungen gesagt werden. Der Trend geht dahin, immer mehr Daten zu verarbeiten. Es ist wünschenswert, eine so große Flexibilität mit der Art und Menge von Speicher zum Schreiben und späteren Wiederfinden von Programminformationen aufzuweisen, wie es sie für Nur-Lese-Programminformationen gibt.
  • Dementsprechend wäre es wünschenswert, eine sichere bidirektionale Übertragung zwischen einer externen Speichervorrichtung und einer sicheren Schaltung zu haben, wobei diese die Flexibilität aufweist, wachsende Anforderungen für zusätzliche Programminformationenspeicher ohne das Erfordernis einer Entwurfsveränderung der sicheren Schaltung unterzubringen. Außerdem kann die Sicherheit der Gesamtimplementierung nicht vermindert werden.
  • Problem: Übertragung mit nicht sicheren Außenwelt- und aiternativen Sicherheitsmodi
  • Die sichere Schaltung muss möglicherweise mit Anzeigevorrichtungen, Peripheriegeräten oder Computern, die kein Entschlüsselungsmittel aufweisen, Schnittstellen bilden. Dies ist wichtig, wenn Interaktivität mit einem Menschen involviert ist. Wenn ein Kunde zum Beispiel einen falschen persönlichen Identifikationsnummercode (PIN-Code) eingibt, kann es für die sichere Schaltung erforderlich sein, den Kunden über das Problem zu informieren, so dass die PIN erneut eingegeben werden kann. Dies kann die Übertragung mit der Hauptrechner-Vorrichtung eines Fehlerzustands oder einer Fehlermeldung, die passend auf einem Bildschirm angezeigt wird, erfordern. Es kann ein Mangel an Pins, Übertragungsanschlüssen oder Bussen vorliegen, der einer externen Übertragung zufolge sein kann.
  • Die Ausführung einiger Programminformationen kann reduzierte Ausführungslatentanforderungen aufweisen, die einen anderen Übertragungsmodus nicht über Ketten erfordert. Die sichere Schaltung muss vielleicht auch mit anderen Vorrichtungen interagieren, die unterschiedliche Sicherheitsschemata aufweisen.
  • Es wäre ebenfalls wünschenswert, einen bedingten klaren Modus bereitzustellen, wobei keine Verschlüsselung/Entschlüsselung, Authentifizierungserzeugung/-verifizierung oder Reihenfolgenpermutierung der Programminformationen durchgeführt wird. Dieser bedingte klare Modus würde nicht nur eine mögliche Chipaustesteinrichtung ermöglichen, sondern auch ermöglichen, dass die sichere Schaltung mit klaren Daten mit Allgemeinen wie Anzeigevorrichtungen, anderen Computern und dergleichen Schnittstellen bildet, diese sendet und empfängt, wobei dem Übertragungsmittel mehr als die Beförderung von Programminformationen ermöglicht wird. Dies würde die Anzahl an separaten Stiften, Übertragungsanschlüssen und Bussen, die zur externen Übertragung verwendet werden, reduzieren.
  • Es wäre ebenfalls wünschenswert, die Kettenverschlüsselung/-entschlüsselung, Authentifizierungserzeugung/-verifizierung oder eine Permutation der Reihenfolge der Programminformationen zugunsten einer unterschiedlichen Art von Verschlüsselung/Entschlüsselung, Authentifizierung/Verifizierung oder Permutierung der Reihenfolge, die nicht auf Ketten basiert, auszuschalten. Anstelle einer Kette kann zum Beispiel Byte- oder Blockverarbeitung verwendet werden.
  • Problem: Erfassung der Kettenlängen
  • Ein Raubkopierer kann dazu fähig sein, die Ausführung der Programminformationen zu analysieren, um zu bestimmen, welche Programminformationen zu welcher bestimmten Kette gehören. Dieses Wissen könnte es einem Raubkopierer ermöglichen, Programminformationen auf eine ausgewählte Art und Weise auszuloten. Im Prinzip ist es eine gute Idee, einen möglichen Raubkopierer daran zu hindern, irgendetwas darüber zu erfahren, wie die Programminformationen ausgeführt werden.
  • Es wäre daher wünschenswert, Blöcke von Programminformationen mit variablen Kettenlängen in willkürlicher Reihenfolge von einer Kette zur nächsten zu übertragen, ohne die ausgeführten Programminformationen besonders zu berücksichtigen.
  • Problem: Unterschiedliche Latenzanforderungen
  • Unterbrechungs-Unterprogramme in Echtzeit weisen unterschiedliche Ausführungslatenzanforderungen auf als Routinen im Hintergrund oder in Wartung. Es gibt eine natürliche Tendenz bei einem Designer, für alle Programminformationen kürzere Ketten zu machen, um die schnelleren Ausführungsanforderungen der Unterbrechungs-Unterprogramme in Echtzeit zu handhaben. Das Reduzieren der Kettenlängen für alle Programminformationen kann jedoch die Speicherkapazität der Speichervorrichtung unnötig vergrößern, um die erhöhte Menge an Authentifizierungsinformationen unterzubringen.
  • Es wäre daher wünschenswert, Blöcke von Programminformationen und zugehörige Authentifizierungsinformationen in Blockketten zu übertragen, wobei unterschiedliche Kettenlängen zur Übertragung unterschiedlicher Typen Programminformationen mit unterschiedlichen Latenzanforderungen verwendet werden können. In unteren Adressenplätzen platzierte Routinen könnten eine geringere Latenz aufweisen, während die in einem höheren Adressenplatz einer Speichervorrichtung höhere Latenzanforderungen aufweisen könnten.
  • Problem: Allgemeine Übertragungs-/Speicherlatenzanforderungen
  • Während gewisse Routinen spezielle Ausführungslatenzberücksichtigungen aufweisen können, kann die Latenz für gewisse Anwendungen immer noch zu viel sein. Mittel müssen folglich erforscht werden, um eine effizientere Übertragung und Speicherung von Programminformationen zu ermöglichen.
  • Es wäre wünschenswert, gewisse Merkmale in der Architektur der Übertragungsmittel zu entwerfen und die sichere Schaltung zu sichern, um bei der Reduzierung der Programminformationslatenz zu helfen, um bei der Beschleunigung der Ausführung zu helfen.
  • Problem: Authentifizierungs-/Verifizierungslatenzanforderungen
  • Während gewisse Routinen spezielle Ausführungslatenzberücksichtigungen aufweisen können, kann die Latenz aufgrund von Authentifizierung/Verifizierung für gewisse Anwendungen immer noch zu viel sein. Mittel müssen folglich erforscht werden, um eine effizientere Authentifizierung/Verifizierung zu ermöglichen.
  • Es wäre daher wünschenswert, gewisse Merkmale in der Authentifizierungs-Nerifizierungsfunktion zu entwerfen, um bei der Reduzierung der Programminformationsausführungslatenz zu helfen.
  • Problem: Verschlüsselungs-/Entschlüsselungslatenzanforderungen
  • Während gewisse Routinen spezielle Ausführungslatenzberücksichtigungen aufweisen können, kann die Latenz aufgrund von Verschlüsselung/Entschlüsselung für gewisse Anwendungen immer noch zu viel sein. Mittel müssen folglich erforscht werden, um eine effizientere Verschlüsselung/Entschlüsselung zu ermöglichen.
  • Es wäre daher wünschenswert, gewisse Merkmale bei der Verschlüsselungs-/Entschlüsselungsfunktion zu entwerfen, um bei der Reduzierung der Programminformationsausführungslatenz zu helfen.
  • Die vorliegende Erfindung stellt ein System mit den obigen und weiteren Vorteilen bereit.
  • Ziel
  • Es ist das Ziel der vorliegenden Erfindung, ein sichereres Gerät bereitzustellen.
  • Die Erfindung
  • Dieses Problem wird durch ein Gerät gemäß Anspruch 1 gelöst.
  • Weitere vorteilhafte Ausführungsformen sind Gegenstand der abhängigen Ansprüche 2 bis 26.
  • Gemäß der vorliegenden Erfindung wird ein Gerät zum sicheren Übertragen verschlüsselter Blöcke von Programminformationen zwischen einer Speichervorrichtung und einer sicheren Verarbeitungsschaltung in Schlüsselblockketten vorgestellt.
  • In einer Ausführungsform sind die Programminformationen in Schlüsselblockketten verschlüsselt und authentifiziert.
  • In einer anderen Ausführungsform sind die Programminformationen in Blockketten authentifiziert und optional verschlüsselt. Blockketten reduzieren den Authentifizierungsdatenoverhead enorm. Adressverwürfelung kann zur erhöhten Sicherheit verwendet werden.
  • Die Neuordnung von Feldern wie etwa Blöcken oder Bytes innerhalb jeder Kette sowie unter ganzen Ketten kann ferner verwendet werden, um noch mehr Sicherheit bereitzustellen.
  • In einer anderen Ausführungsform werden der sicheren Schaltung Blöcke von Programminformationen bereitgestellt, um einen Schlüssel zu erzeugen. Der Schlüssel kann zur Entschlüsselung einer Datenübersendung verwendet werden.
  • Die Erfindung Ist besonders zum Verhindern des Kopierens und der Umkehrtechnik von proprietären Softwarealgorithmen geeignet, und zum Sichern von kryptographischen Anwendungen wie etwa dem Entwürfeln von Bezahlfernsehprogrammen oder dergleichen.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung gemäß Anspruch 1 wird ein Gerät zum sicheren Übertragen authentifizierter Blöcke von Programminformationen zwischen einer Speichervorrichtung und einer sicheren Verarbeitungsschaltung in Blockketten vorgestellt.
  • In einem Aspekt der vorliegenden Erfindung umfasst ein Gerät zum sicheren Übertragen der Blöcke von Programminformationen zwischen einer Speichervorrichtung und einer sicheren Schaltung Mittel zum Bereitstellen von mindestens einem Block Programminformationen einschließlich eines bestimmten Blocks, der eine Vielzahl von Bytes mit einer ersten Bytereihenfolge beinhaltet.
  • Ein Blockpuffer, der bemessen ist, um einen Block an Daten zu speichern, ist alles, was für eine minimale Implementierung erforderlich ist, da die Daten seriell, ein Block nach dem anderen, verarbeitet werden können.
  • Mittel wie etwa ein Adressenerzeuger werden bereitgestellt, um den Block/die Blöcke von Programminformationen in der Speichervorrichtung zu speichern.
  • Schlüsselblockverkettung ist ein stabiler Verschlüsselungsalgorithmus, da eine Veränderung in einem Block Veränderungen an anderen Blöcken kaskadieren wird, was es für einen Raubkopierer schwierig macht, eine einfache Veränderung an den Programminformationen zu bewirken.
  • Schlüsselblockverkettung kann verwendet werden, um zur Geheimhaltung sowohl zu hashen als auch zu verschlüsseln. Der letzte klare Textblock kann auf dem verschlüsselten Authentifizierungsblock mit Exklusiv ODER verknüpft werden (mit EXKLUSIV ODER verknüpft), um eine Abhängigkeit der gesamten Schlüsselblockkette auf der Entschlüsselung des Authentifizierungsblocks bereitzustellen.
  • Die Programminformationen und die Authentifizierungsinformationen können zum Beispiel in zwei oder mehreren Acht-Byte-Blöcken getragen werden. Blockverkettung ist aufgrund des relativ niedrigen Overheads der Authentifizierungsinformationen relativ zu den authentifizierten Daten effizient. Die Authentifizierungsinformationen werden mit den letzten klaren Daten (z. B. Programminformationen) EXKLUSIV ODER verknüpft und wahlweise entschlüsselt, um einen Verifizierungswert zu ergeben. Der Wert wird mit einem Wert verglichen, der durch die Hardware bekannt ist, um zu verifizieren, dass die Authentifizierungsdaten korrekt sind. Der Wert kann für unterschiedliche Ketten unterschiedlich sein oder er kann für alle Ketten fixiert sein. Um eine zusätzliche Trennung zwischen den Schlüsseln bereitzustellen, kann der zur Entschlüsselung der Authentifizierungsinformationen verwendete Schlüssel unterschiedlich zu dem sein, der zur Entschlüsselung der authentifizierten Informationen verwendet wird. Außerdem kann bei jedem Entschlüsselungsvorgang der Schlüssel mit der Adresse modifiziert werden, um die Adressenabhängigkeit jedes Blocks innerhalb einer Kette bereitzustellen.
  • Zur stabileren Sicherheit kann die Schlüsselblockverkettung zusammen mit einem weiteren Hash-Algorithmus verwendet werden. Es gibt hierfür keinen zusätzlichen Nachteil in der Latenz, da jeder Block auf eine serielle Weise verarbeitet werden muss. Wenn der erste Block entschlüsselt wird, wird er nicht nur mit dem Schlüsseltext des zweiten Blocks EXKLUSIV ODER verknüpft, er wird auch ebenfalls der Authentifizierungsschaltung unterzogen. Der letzte Block ist die Authentifizierungsbits, und er muss nicht der Authentifizierungsschaltung unterzogen werden, er wird einfach entschlüsselt und mit einem Wert, der in der Hardware gehalten wird, verglichen.
  • Ein erster Übertragungsweg wie etwa ein Bus wird bereitgestellt, um Blöcke der Programminformationen und Authentifizierungsinformationen zwischen der externen Speichervorrichtung und dem einen oder den mehreren Blockpuffern in einer Kette zu übertragen. Ein Blockpuffer, der bemessen ist, um einen Block Daten zu speichern, ist alles, was für eine minimale Implementierung erforderlich ist, da die Daten seriell, ein Block nach dem anderen, verarbeitet werden können. Die Authentifizierungsinformationen werden durch die Authentifizierungsschaltung eingelesen und verifiziert.
  • Die Programminformationen werden falls notwendig in einer Schaltung zur Dechiffrierung, die zu der Authentifizierungsschaltung gehört, entschlüsselt. Kryptographische Schlüsseldaten aus einer zugehörigen Speichervorrichtung können zu diesem Zweck verwendet werden.
  • Wenn ein Raubkopierer beliebige Daten in vorangehenden Blöcken in der Kette zum Ausloten ändert, sind die errechneten Hash-Daten, die mit den Authentifizierungsinformationen verglichen werden, falsch, und der resultierende Verifizierungswert passt nicht. Die sichere Schaltung wie etwa eine ASIC oder ein PC weiß dann, dass eine Manipulation erfolgt ist, und Gegenmaßnahmen ergriffen werden können.
  • Es gibt eine Reihe von Wegen, wie der Authentifizierungsbetrieb implementiert werden kann. Der Hash kann verschlüsselt sein, z. B. unter Verwendung eines geheimen Schlüssels mit den Authentifizierungsinformationen im klaren Bereich, oder der Hash kann nicht verschlüsselt sein und die Authentifizierungsinformationen sind verschlüsselt, oder der Hash ist zur stabileren Sicherheit verschlüsselt und die Authentifizierungsinformationen sind verschlüsselt.
  • Unterschiedliche Schlüssel können zum Hashen und zum Entschlüsseln verwendet werden. Der Hash-Schlüssel kann ein geheimer Schlüssel sein, während die Authentifizierungsinformationen unter einem öffentlichen Schlüssel verschlüsselt sein können. Der gleiche Schlüssel, der zur Verschlüsselung der Authentifizierungsinformationen verwendet wird, kann verwendet werden, um die Programminformationen, die authentifiziert werden, zu verschlüsseln. Das hat den Nutzen, dass die Authentifizierungsinformationen auf eine ähnliche Weise wie die Programminformationen behandelt werden. Die Verwendung eines separaten Schlüssels würde jedoch einen weiteren Grad an Sicherheit hinzufügen.
  • In einer Ausführungsform der Erfindung basierend auf Anspruch 1 wird Blockverschlüsselung zur Geheimhaltung verwendet. Wenn sie entschlüsselt sind, werden die Blöcke authentifiziert. Die verwendete Authentifizierungstechnik kann ein Hash sein, der eine strenge Ordnung des Hashens erfordern kann, z. B. wird Block Nr.1 gehasht, dann wird Block Nr. 2 mit der Ausgabe des Hashes aus Block Nr. 1 gehasht, und so weiter.
  • Bekannte Algorithmen wie etwa MD5 und SHA können für diese Art von strengem Hashen verwendet werden.
  • Obwohl derartiges Hashen verwendet werden kann, kann das Hashen aufgrund der seriellen Natur des Vorgangs eine Latenz einführen. Eine vereinfachte Hashfunktion kann bereitgestellt werden, die eine EXKLUSIV ODER-Verknüpfung aller klaren Blöcke durchführen kann. Dieser Hash-Wert kann mit den Authentifizierungsinformationen verifiziert werden. Tatsächlich können diese Authentifizierungsinformationen als ein Block zusammen mit den Programminformationen als EXKLUSIV ODER-Verknüpfung dargestellt werden. Diese Technik verbessert die Ausführungslatenz der Programminformationen, die für Echtzeit-Betriebssysteme wichtig sind. Hier kann jeder Block Daten nicht nur unabhängig wie in dem Elektronischen Codebuch, wie von FIPS herausgegeben, entschlüsselt werden, sondern auch unabhängig als EXKLUSIV ODER-Verknüpfung dargestellt werden, während der Hash für die gesamte Kette berechnet wird. Diese Technik, die „einfache Blockverkettung" genannt wird, betont die Reduzierung bei der Ausführungslatenz.
  • Die Erfassung illegaler Opcodes oder illegaler interpretierter Codeanweisungen kann als eine Form von Authentifizierung verwendet werden. Bei Empfang eines illegalen Opcodes oder einer Anweisung kann das System entscheiden, wie es reagiert, z. B. durch Zurücksetzen, einen Zähler inkrementieren oder einen anderen Vorgang.
  • Die Schaffung eines illegalen Opcodes durch einen Raubkopierer hängt von dem Befehlssatz eines gegebenen Prozessors ab. Manche Befehlssätze sind vollständig entwickelt und weisen wenige undefinierte oder illegale Opcodes auf, während andere Befehlssätze reduziert sind und mehr davon aufweisen. Wenn ein Befehlssatz zum Beispiel über 20 undefinierte oder illegale Opcodes verfügt, bedeutet dies, dass ein Raubkopierer eine Chance von 80 % hat, willkürlich einen legalen Opcode zu schaffen. Dies soll nicht heißen, dass der Raubkopierer einen bestimmten Opcode statt einen legalen erzeugt hat. Aber ein willkürlicher legaler Opcode anstelle eines beabsichtigten könnte den erfolgreichen Angriff eines Raubkopierers ausmachen. Dies könnte zum Beispiel der Fall sein, wenn eine einfache Annullierung des ursprünglichen Opcodes das Ziel wäre. Da die Chancen zu 80 % zugunsten eines Raubkopierers stehen, lässt dieses Verfahren der einfachen Erfassung illegaler Opcodes viel zu wünschen übrig.
  • Die Erfassung illegaler Opcodes als eine Form der Authentifizierung ist effektiver mit Schlüsselblockverkettung, da die Chancen des Raubkopierers, einen illegalen Opcode zu schaffen, erhöht werden, da jeder nachfolgende Block in einer bestimmten Kette beeinträchtigt wird. Wenn es in einer Kette zum Beispiel sechzehn Blöcke Befehle gibt, dann sind die Chancen eines Raubkopierers auf Erfolg, wenn der Raubkopierer den allerersten Block der Kette abändert, wie folgt: (.8)16 = 0,028. Die Situation hat sich verändert; die Wahrscheinlichkeit für den Raubkopierer, zu versagen, liegt nun bei annähernd 97 %. Aus diesem Grund ist Schlüsselblockverkettung ein stabileres Verschlüsselungsverfahren – dies impliziert Authentifizierung durch die Erfassung illegaler Opcodes. Aber Schlüsselblockverkettung ist ebenfalls besser, weil dies es schwieriger für einen Raubkopierer macht, die Verschlüsselung von Programminformationen auszuloten, um beliebige Veränderungen zu isolieren, die an einem einzelnen Block vorgenommen wurden, um die Chance der Schaffung unbeabsichtigter Opcodes mit ungewollten Nebeneffekten zu erhöhen.
  • Ein Problem ist, dass die externe Speichervorrichtung mehr als nur Opcodes speichert. Nur Opcodes können durch die Befehlsdecodierschaltungsanordnung der CPU verifiziert werden. Stabilere Sicherheit erfordert explizite Authentifizierung.
  • Authentifizierung kann entweder durch das EXKLUSIV ODER-Verknüpfen der Authentifizierungsinformationen mit dem Hash der klaren Textdatenblöcke durchgeführt werden, um einen Verifizierungswert zu produzieren, der nachfolgend mit einem vorgespeicherten Wert verglichen wird, oder die Authentifizierungsinformationen können einfach mit den gehashten Programminformationen verglichen werden.
  • Die Authentifizierungsfunktion kann optional Hash-Blöcke von Programminformationen, die im Klaren mit den verschlüsselten Authentifizierungsinformationen an die EXKLUSIV ODER-Verknüpfung übertragen wurden, hashen. Um Raubkopierer daran zu hindern, ihre eigenen authentifizierten Programminformationen unter Verwendung eines bekannten Hash-Algorithmus zu schalten, muss ein kryptographischer Schlüssel verwendet werden. Dies kann auf zwei Wegen vollbracht werden – Verschlüsseln des Hashes oder Verschlüsseln der Authentifizierung oder beides.
  • Einfache Blockverkettung, eine alternative Technik, die Latenzprobleme adressiert, verwendet eine einmalige Blockverschlüsselung jedes Blocks von Programminformationen. Folglich wird jeder Block unabhängig verschlüsselt und entschlüsselt, so dass das Verarbeiten parallel erfolgen kann. Des Weiteren wird die gesamte Kette oder Gruppe von Blöcken authentifiziert. Ein Verfahren des Hashens ist, die Programminformationsblöcke miteinander und mit den Authentifizierungsinformationen EXKLUSIV ODER zu verknüpfen. Das kann alles zusammen vollzogen werden.
  • Zur stabileren Sicherheit kann ebenfalls komplizierteres Hashen verwendet werden, aber diese Verfahren können eine serielle Abhängigkeit einführen, wobei ein Block vor einem anderen Block gehasht werden muss. Einfache Blockverkettung unter Verwendung des oben beschriebenen Verschlüsselungs- und Entschlüsselungsprozesses reduziert den Authentifizierungsbitoverhead wie bei der Schlüsselblockverkettung, kann jedoch die Latenzprobleme von Schlüsselblockverkettung vermeiden, wenn eine parallele Dechiffrierschaltungsanordnung verwendet wird. Wenn nur ein einzelner Blockpuffer verwendet wird, ist die Latenz ungefähr die gleiche für Schlüsselblockverkettung und einfache Blockverkettung, wobei der einzige Unterschied darin liegt, dass die Ausgabe einer Blockentschlüsselung mit der Ausgabe der nächsten Entschlüsselung mit einfacher Blockverkettung) anstelle der Eingabe an die nächste Entschlüsselung (mit Schlüsselblockverkettung) EXKLUSIV ODER verknüpft wird.
  • Das einfache Blockverkettungsverfahren, das Entschlüsseln und Authentifizieren unter Verwendung der EXKLUSIV ODER-Verknüpfung von klaren Blöcken, leidet unter dem Problem, dass beliebige der Blöcke außerhalb der Reihenfolge neu geordnet werden können und die Authentifizierung immer noch nachprüft. Während also Entschlüsselungs- und Authentifizierungsvorgänge immer noch parallel vorgenommen werden können, ist ein potentielles Problem aufgetreten. Die Verschlüsselung mit Adressabhängigkeit sollte mit einfacher Blockverkettung unter Verwendung der einfachen EXKLUSIV ODER-Hashfunktion verwendet werden.
  • Das heißt, dass der mit jedem Block in der Kette verwendete Schlüssel unterschiedlich zu dem Schlüssel wäre, der eine Funktion der Adresse des spezifischen Blocks ist. Wenn DES-Verschlüsselung verwendet würde, würde das Verändern von beliebigen Programminformationen eines Blocks zum Ausloten verursachen, dass sich annähernd die Hälfte der Bits in der entschlüsselten Ausgabe verändern würde, was verursachen würde, dass die Authentifizierungsverifizierung nicht nachprüft. Ohne die Kenntnis des Schlüssels wäre es für einen vermeintlichen Raubkopierer schwierig, die richtigen Authentifizierungsinformationen zur Kompensierung zu finden.
  • In einem Versuch, die Ausführungslatenz der Programminformationen zu reduzieren, kann die Authentifizierung auf den Schlüsseltextdaten unter Verwendung entweder eines verschlüsselten Hash oder einer Verschlüsselung der Authentifizierungsinformationen durchgeführt werden. Die Entschlüsselung und die Authentifizierung können simultan ohne Authentifizierung nach der Verschlüsselung stattfinden. Bei der einfachen Blockverkettung besteht das Problem, dass Adressen abhängige Entschlüsselung nicht auf den Programminformationen durchgeführt wurde, was sie möglicherweise anfällig dafür macht, außerhalb der Reihenfolge dem Entschlüsseler unterzogen zu werden.
  • Willkürliche Permutierung der Reihenfolge von Feldern innerhalb einer Kette während der Übertragung zwischen der externen Speichervorrichtung und der sicheren Schaltung kann verwendet werden. Mittel wie etwa ein Datenbus oder ein Netz werden zum Übertragen der Programminformationen an die sichere Schaltung bereitgestellt.
  • Der sicheren Schaltung zugehörige Mittel werden bereitgestellt, um die neu geordneten Felder der Kette neu zu ordnen, um die Felder in der ersten Feldreihenfolge wieder zu erlangen. Eine Kette Programminformationen kann in zwei oder mehrere Felder neu geordnet werden, die Neuordnung kann bereitgestellt werden.
  • Das heißt, die Blöcke können zwischen der externen Speichervorrichtung und den Blockpuffern auf eine willkürliche, nicht sequentielle Weise, die nicht die wahre Ausführungsreihenfolge der Blöcke durch die sichere Schaltung widerspiegelt, übertragen werden. Des Weiteren kann die Neuordnung für Bytes innerhalb eines oder mehrerer Blöcke oder für ganze Ketten erfolgen. Jedes beliebige Feld kann neu geordnet werden.
  • Eine derartige nicht sequentielle Übersendung ist effektiv dazu, einen Raubkopierer vom Erfassen der Struktur der Programminformationen, der Reihenfolge und der Organisation, die in der sicheren Schaltung ausgeführt wird, abzuhalten. Durch die Neuordnung jedes beliebigen Felds mit einer Kette oder Ketten oder der relativen Position ganzer Ketten in einer Reihenfolge von Programminformationen oder den Reihenfolgen mehrerer Programminformationen wird ein Raubkopierer vom Erfassen von Informationen, die die Ausführungsreihenfolge der Programminformationen in der Verarbeitungsschaltung betreffen, abgehalten. Durch die Neuordnung kann ein Raubkopierer dann davon abgehalten werden, leicht den korrekten klaren Text oder den Schlüsseltext der Programminformationen zu erfahren, was das Vollbringen gewisser kryptographischer Angriffe schwieriger macht. Die Programminformationen sind vorzugsweise zur erhöhten Schwierigkeit der Analyse verschlüsselt.
  • Ferner wird ein Gerät basierend auf Anspruch 1 zum sicheren Übertragen neu geordneter Felder Programminformationen zwischen einer Speichervorrichtung und einer sicheren Verarbeitungsschaltung in Ketten vorgestellt.
  • Eine Ausführungsform dieses Geräts überträgt die Blöcke Programminformationen von der Speichervorrichtung zu der sicheren Schaltung, während die Felder einer Reihenfolge Programminformationen im Wesentlichen willkürlich neu geordnet werden. Eine neue Reihenfolge wird verwendet, um die Felder von der sicheren Schaltung zurück zu der Speichervorrichtung zu übertragen, wodurch das einer bestimmten Speicherstelle in der Speichervorrichtung zugehörige Feld verändert wird. Mittel werden der sicheren Schaltung intern bereitgestellt, um die neue „wahre" Reihenfolge der Programminformationen in der Speichervorrichtung zu speichern.
  • Die neue grundlegende Ordnung der Reihenfolge für die Felder einer Reihenfolge von Programminformationen wird dann in der sicheren Vorrichtung gespeichert, so dass zukünftige Übertragungen an die gleichen Blöcke die korrekte Neuordnung auf der Basis der neuen Reihenfolge in der sicheren Schaltung ermöglichen. Mittel wie etwa ein Datenbus oder ein Netz werden zum Übertragen der Programminformationen an die sichere Verarbeitungsschaltung bereitgestellt.
  • Während die Bytes neu geordnet werden können, wenn sie zwischen der Speichervorrichtung und der sicheren Schaltung unter Verwendung der obigen Technik zur Neuordnung der Reihenfolge übertragen werden, ist jedes Byte Programminformationen immer noch zu einer bestimmten Speicherstelle zugehörig. Das erste Byte des ersten Blocks der ersten Kette einer Reihenfolge von Programminformationen befindet sich zum Beispiel immer an einer bestimmten Speicherstelle, obwohl der Raubkopierer wegen der Neuordnung Probleme damit haben kann festzustellen, dass es tatsächlich das erste Byte des ersten Blocks war. Der Raubkopierer kann dann trotzdem den Wert an dieser bestimmten Speicherstelle (z. B. Adresse) auf eine systematische und organisierte Weise ausloten.
  • Das Verändern der grundlegenden Speicherstelle von Daten in der Speichervorrichtung hindert einen Raubkopierer daran, die an einer bestimmten Speicherstelle in der Speichervorrichtung gespeicherten Programminformationen auszuloten. Durch das dynamische Verändern der Speicherstelle der Programminformationen in einer Speichervorrichtung nach jeder Verwendung wird sich ein Raubkopierer, der Programminformationen an einer bestimmten Speicherstelle in der Speichervorrichtung auslotet, nicht jedes Mal mit genau den gleichen Programminformationen befassen. Der Angriff ist daher schwer zu bewältigen.
  • Ferner kann ein Gerät basierend auf Anspruch 1 zum kryptographischen Erzeugen eines Schlüssels bereitgestellt werden, wobei der Schlüssel verwendet werden kann, um Zugriff auf eine Datenübersendung oder dergleichen zu erlangen.
  • In einem weiteren Aspekt der vorliegenden Erfindung basierend auf Anspruch 1 können die Datenteilfelder, Bytes, Blöcke, Ketten und Reihenfolgen der Programminformationen fixiert und nicht willkürlich sein. Die Reihenfolge kann für jedes Byte, jeden Block, jede Kette oder jede Reihenfolge der Programminformationen, auf die angegriffen wird, unterschiedlich sein. Dies ist eine Permutierung, die auf entsprechenden Feldern auf den eingehenden Programminformationen unterschiedlich durchgeführt wird. Diese Permutierungsfunktion kann vorteilhafterweise leicht in Hardware implementiert werden, da sie nicht willkürlich ausgewählt wird.
  • Bei einer bestimmten Implementierung verwendet die sichere Schaltung Programminformationen zum Erzeugen eines kryptographischen Schlüssels.
  • Die Programminformationen werden unter Verwendung von Schlüsselblockverkettung verschlüsselt und wahlweise authentifiziert und/oder neu geordnet. In einer anderen Ausführungsform werden die Programminformationen authentifiziert und optional verschlüsselt und/oder unter Verwendung von Blockverkettung neu geordnet. In einer anderen Ausführungsform werden die Programminformationen authentifiziert und optional verschlüsselt und/oder unter Verwendung von Blockverkettung neu geordnet.
  • Der Schlüssel kann in Software verwendet werden, um eine Datenübersendung zu entschlüsseln oder zu entwürfeln. Durch das Authentifizieren der Befehle wird ein Raubkopierer davon abgehalten, der sicheren Schaltung unechte Programminformationen bereitzustellen, die die Datenübersendung entwürfeln.
  • In einem anderen Aspekt der vorliegenden Erfindung basierend auf Anspruch 1 verwendet eine sichere Schaltung Programminformationen zur Erzeugung eines kryptographischen Schlüssels. Der Schlüssel kann zur Entwürfelung einer Datenübersendung in Hardware verwendet werden. Abhängig von der Aufteilung der sicheren Schaltung kann die Entwürfelung intern oder extern vorgenommen werden.
  • Der Schlüssel kann erzeugt und an ein Softwaremodul weitergereicht werden, um die Datenübersendung zu entwürfeln. Das Softwaremodul kann innerhalb der sicheren Schaltung oder außerhalb der sicheren Schaltung liegen.
  • In beiden obigen Fällen kann die sichere Schaltung aus einer integrierten Schaltung (IC) mit einer Authentifizierungsschaltung, einer zentralen Verarbeitungseinheit (CPU) und einem oder mehreren Blockpuffern, die angepasst sind, um einen oder mehrere Blöcke von Programminformationen zu speichern, bestehen.
  • Die externe Speichervorrichtung kann ein Flash-Speicher, ein änderbarer programmierbarer Festwertspeicher (EPROM), ein elektrisch löschbarer programmierbarer Festwertspeicher (EEPROM), ein batteriegeschützter Festwertspeicher (RAM), RAM oder eine Kombination aus den obigen sein. Sie kann ebenfalls ein Hartplattenlaufwerk oder eine CD-ROM oder jede beliebige Art von Massenspeichervorrichtung sein. Die externe Speichervorrichtung speichert ebenfalls Authentifizierungsinformationen (z. B. Prüfbits) zum Authentifizieren der Programminformationen, wenn sie in der sicheren Schaltung empfangen werden. Bei manchen Implementierungen ist es für die Inhalte der Speichervorrichtung wünschenswert, in eine schnellere Speichervorrichtung wie etwa einen synchronen dynamischen Speicher kopiert zu werden, so dass die sichere Schaltung Programminformationen aus der schnelleren Speichervorrichtung, z. B. dem dynamischen Speicher, anstatt aus der langsameren Speichervorrichtung mit ihren zugehörigen Latenzen holen kann. Ein Netzrechner kann zum Beispiel Programminformationen von dem Server über das Netz kopieren. Die schnellere Speichervorrichtung kann lokal sein, während der langsamere Speicher im Fall des Netzrechners vom Netz aus zugegriffen entfernt sein kann.
  • Um die Gesamtlatenz der Ausführung des Echtzeit-Ausführungscodes zu reduzieren, kann der erste Übertragungsweg eine ausreichende Bandbreite aufweisen, sodass zwei oder mehr der Zeichenfolgen, einer oder mehrere der Blöcke, eine oder mehrere der Ketten an die Blockpuffer im Wesentlichen zur gleichen Zeit übertragen werden können.
  • Der Programminformationenbus ist typischerweise nicht breiter als die Befehlsbreite, da es ein Engpaßproblem gibt. Die CPU führt nur bei einer bestimmten Geschwindigkeit aus. Die Programminformationen müssten irgendwo gespeichert werden. Wenn es jedoch eine einer anderen Verarbeitung zugehörige Latenz gibt – Verschlüsselung oder Authentifizierung – kann dies beim Reduzieren der Gesamtlatenz helfen.
  • Die sichere Schaltung kann zum Beispiel mehr als einen Block Programminformationen im Wesentlichen gleichzeitig lesen, wenn mehr als ein Blockpuffer verwendet wird, um die zusätzlichen Blöcke, z. B. einen Puffer pro Block, zu speichern. In der sicheren Schaltung empfängt die Authentifizierungsschaltung die Programminformationen und die Authentifizierungsinformationen aus dem einen oder den mehreren Blockpuffern zur Verwendung beim Authentifizieren der Programminformationen. Auf einem zweiten Übertragungsweg in der IC werden die authentifizierten Programminformationen aus der Authentifizierungsschaltung der CPU bereitgestellt, um ausgeführt zu werden, um dadurch die verwürfelte Datenübersendung zu entschlüsseln. Die Programminformationen können eine Vielzahl von Zeichenfolgen an Befehlen, wie etwa Linien von Computercode oder verwandte Reihenfolgen von Daten, die aufeinanderfolgend durch die CPU verarbeitet werden, umfassen.
  • Ein Cache-Speicher kann auf dem zweiten Übertragungsweg angeordnet sein, um die authentifizierten Programminformationen vorübergehend zu speichern, bevor sie der CPU bereitgestellt werden. Der Cache-Speicher kann mindestens eine der Zeichenfolgen von Programminformationen speichern, so dass mindestens zwei der Zeichenfolgen von Programminformationen der CPU im Wesentlichen gleichzeitig bereitgestellt werden können (z. B. die gespeicherte Zeichenfolge und die letzte authentifizierte und dechiffrierte Zeichenfolge.) Auf diese Weise werden die Programminformationen effizient an die CPU übertragen. Der Vorteil eines Cache-Speichers ist, dass die CPU bereits authentifizierte Programminformationen aus dem Cache-Speicher holen kann, anstatt das Übertragungsmittel der externen Speichervorrichtung z. B. den Bus oder das Netz zu benutzen, was verschiedene Latenzen involviert.
  • Wenn eine erste Kette und eine nachfolgende zweite Kette von der externen Speichervorrichtung an den einen oder die mehreren Blockpuffer übertragen werden, authentifiziert die Authentifizierungsschaltung die erste und die zweite Schlüsselblockkette, um entsprechende authentifizierte Programminformationen bereitzustellen. Zusätzlich dazu kann die CPU mindestens einen Abschnitt der authentifizierten Programminformationen aus der ersten Kette verarbeiten, während die Authentifizierungsschaltung mindestens einen Abschnitt der Programminformationen der zweiten Kette authentifiziert. Die Dechiffrierung der Programminformationen falls erforderlich kann ähnlich auf eine überlappende Weise durchgeführt werden.
  • Eine alternative Ausführungsform dieses Geräts basierend auf Anspruch 1 überträgt die Felder von Programminformationen zwischen der Speichervorrichtung und der sicheren Schaltung, während Felder, die nicht durch die unmittelbaren z. B. die gegenwärtigen oder nächsten Reihenfolgen von Programminformationen, die durch die sichere Schaltung verarbeitet werden, übertragen werden. Diese Trübungstechnik verwendet Leerfelder von Daten, die einfach Düppelstreifen sein können, z. B. niemals durch die sichere Schaltung während jeglicher Programminformationsausführung verwendet, oder sie können Teil von anderen Programminformationsreihenfolgen sein, die gegenwärtig zwischen der sicheren Schaltung und der Speichervorrichtung einfach nicht verarbeitet werden. Zu der sicheren Schaltung zugehörige Mittel werden bereitgestellt, um die Leerbytes der bestimmten Blöcke zu eliminieren, um die Bytes in der ersten Bytereihenfolge und nachfolgende Bytereihenfolgen der verbleibenden Blöcke wiederzuerlangen. Die Leerbytes können optional während der Entschlüsselung und/oder der Authentifizierung vor der Eliminierung verwendet werden, nachdem sie durch die sichere Schaltung empfangen wurden. Zusätzlich werden Blöcke und Ketten, die auf die gleiche Weise eliminiert werden können, bereitgestellt.
  • Schlüsselblockverkettung oder einfache Blockverkettung wie hier beschrieben können verwendet werden, um zur Geheimhaltung sowohl zu hashen als auch zu verschlüsseln. Die Programminformationen und die Authentifizierungsinformationen können zum Beispiel in zwei oder mehreren Acht-Byte-Blöcken getragen werden. Blockverkettung ist aufgrund des relativ niedrigen Overheads der Authentifizierungsinformationen relativ zu den authentifizierten Daten effizient. Die Authentifizierungsinformationen sind mit den letzten klaren Daten (z. B. Programminformationen) EXKLUSIV ODER verknüpft und wahlweise entschlüsselt, um einen Verifizierungswert zu ergeben. Der Wert wird mit einem Wert verglichen, der durch die Hardware bekannt ist, um zu verifizieren, dass die Authentifizierungsdaten korrekt sind. Der Wert kann für unterschiedliche Ketten unterschiedlich sein oder kann für alle Ketten fixiert sein.
  • Die Verwendung von Schlüsselblockverkettung, um sowohl zu verschlüsseln als auch au hashen, ist ein Weg, die Menge an der Sicherheitsfunktion zugehöriger Hardware zu reduzieren. Nur ein Puffer wird benötigt, da alle Blöcke der Notwendigkeit halber auf eine serielle Weise verarbeitet werden. Die EXKLUSIV ODER-Funktion ist stabiler als die bei der einfachen Blockverkettung, weil es schwierig ist, eine Veränderung in einem Block vorzunehmen und diese durch das Verändern eines anderen Blocks zu kompensieren. Da die EXKLUSIV ODER-Verknüpfung vor einem Entschlüsselungsschritt vorgenommen wird, ist es schwieriger, einen Block zu manipulieren, um eine beliebige vorgenommene Änderung zu löschen. Serielle Verarbeitung wird jedoch benötigt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Schaltschema eines kryptographischen Schlüsselerzeuger-/Entwürfelungsempfängergeräts gemäß der vorliegenden Erfindung.
  • 2 ist eine schematische Darstellung eines Schlüsselblock-Verkettungsverschlüsselungsschemas gemäß der vorliegenden Erfindung.
  • 3 ist eine schematische Darstellung eines Schlüsselblock-Verkettungsentschlüsselungsschemas gemäß der vorliegenden Erfindung.
  • 4 ist eine schematische Darstellung eines einfachen Block-Verkettungsverschlüsselungsschemas gemäß der vorliegenden Erfindung.
  • 5 ist eine schematische Darstellung eines einfachen Block-Verkettungsentschlüsselungsschemas gemäß der vorliegenden Erfindung.
  • 6 ist ein Schaltschema eines alternativen kryptographischen Schlüsselerzeugers/eines Entwürfelungsempfängergeräts gemäß der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Ein Gerät wird für einen gesicherten Prozessor dargestellt. Die bevorzugte Ausführungsform legt Wert auf Sicherheit.
  • Verschlüsselte, authentifizierte und in der Reihenfolge permutierte Blöcke von Programminformationen und Leerdaten werden sicher zwischen einem Externspeicher und einer kryptographischen ASIC in Schlüsselblockketten übertragen. Das Verarbeiten der Programminformationen ermöglicht der ASIC, einen Schlüssel abzuleiten, der verwendet wird, um digitale Pakete von Video und Audio für Abonnementfernsehen zu entschlüsseln.
  • 1 ist ein Schaltschema eines kryptographischen Schlüsselerzeuger-/Entwürfelungsempfängergeräts gemäß der vorliegenden Erfindung. Der Entwürfelungsempfänger, der im Allgemeinen bei 100 gezeigt wird, umfasst eine sichere Schaltung, z. B. eine integrierte Schaltung (IC) 105 wie etwa eine ASIC, und eine Speichervorrichtung, z. B. einen Speicher 110, der sich außerhalb der ASIC 105 befindet. Der Speicher 110 liegt außerhalb der ASIC 105, da der Speicher 110 nicht innerhalb der ASIC-Einheit eingebettet ist. Der Speicher 110 und die ASIC 105 können zum Beispiel als separate Einheiten auf der Hauptplatine eines Decodierers bereitgestellt werden.
  • In beiden Fällen kann der Speicher 110 durch das Entfernen und Ersetzen der Speicher-IC vergrößert oder verkleinert werden, ohne in die sichere Schaltung 105 einzugreifen oder diese zu modifizieren. Zusätzlich können neue Programminformationen wie etwa Patch Code in den Externspeicher 110 zum Beispiel über eine Telephonleitung, eine Satellitenverbindung oder eine Kabelfernsehverbindung heruntergeladen werden. Alternativ könnten die Programminformationen lokal an dem Entwürfelungsempfänger wie etwa über eine Chipkarte installiert werden oder entweder durch eine Buchse angeschlossen oder an die gleiche Platte gelötet werden. Oder der Speicher 110 selbst könnte sich in einer Chipkarte befinden, in welchem Fall eine neue Chipkarte zu relativ niedrigen Kosten bereitgestellt werden könnte, um einen Decodierer aufzurüsten. Vorteilhafterweise stellt diese Anordnung wesentlichen Nutzen dadurch bereit, dass es den Programminformationen, (z. B. Software oder Firmware), die in der externen Speichervorrichtung 110 gespeichert sind, das leichte Aufrüsten oder Modifizieren ermöglicht, um neue Merkmale bereitzustellen oder um Softwareprobleme zu beheben.
  • Die externe Speichervorrichtung 110 kann zum Beispiel leicht ersetzt oder modifiziert werden, um Unternehmen oder Einzelpersonen kundenspezifische Merkmale bereitzustellen, oder um Gruppen spezifische Einrichtungen gemäß Faktoren wie etwa demographischem Profil, geographischem Standort, Zeitzone und dergleichen bereitzustellen.
  • Wenn im Gegensatz dazu der Speicher 110 im ROM und intern in der ASIC 105 wäre, müsste die ASIC komplett ersetzt werden, was in bedeutenden Kosten und Verzögerungen resultieren würde. Die ASIC kann unter Verwendung fortgeschrittener Größtintegration-Prozesse, die RAM- und ROM-Technologie verwenden, gebaut werden, um eine hohe Verarbeitung und Bit-Übermittlungsraten nicht nur für die Übermittlung von Programminformationen zwischen der ASIC und dem Externspeicher zu erreichen, sondern auch für die interne Ausführung aus dem Cache-Speicher heraus, und für die Entwürfelung der digitalen Pakete von Video und Audio. Die aus RAM- und ROM-Technologie geschaffene ASIC kann eine höhere Bitrate von paketierten Daten entschlüsseln als eine aus alternativen Technologien kreierte ASIC. Der Externspeicher versieht die ASIC daher mit größerer Flexibilität.
  • Die externe Speichervorrichtung 110 kann ein Flash-Speicher, ein löschbarer programmierbarer Festwertspeicher (EPROM), ein elektrisch löschbarer programmierbarer Festwertspeicher (EEPROM), oder ein batteriegeschützter flüchtiger Speicher wie etwa ein Direktzugriffsspeicher (RAM) sein. Alternativ kann ein herkömmlicher Festwertspeicher (ROM) verwendet werden.
  • Ein EPROM ermöglicht die Umkehrung des Programmierens in dem Speicher durch das Aussetzen an intensives ultraviolettes Licht. Neuer Code kann leicht in dem EPROM in einem Prozess gespeichert werden, der als Neubrennen bekannt ist. Ein EEPROM ist durch die Verwendung eines großen elektrischen Stroms, um die internen Speicherzellen zurückzusetzen, änderbar. Durch die Verwendung eines EEPROM oder eines batteriegeschützten RAM kann der Externspeicher ebenfalls verwendet werden, um kurzfristige und langfristige Daten zu speichern. Der Speicherraum könnte ebenfalls aufgeteilt sein, um unterschiedliche reale Geräte bereitzustellen, so dass unterschiedliche Speichertypen zusammen verwendet werden können. Beim Hochfahren kann der nichtflüchtige Speicher in viel schnelleren Speicher wie etwa synchronen dynamischen Speicher kopiert werden. Dies kann die Latenz im Schreib-/Lesebetrieb des Externspeichers reduzieren.
  • Die externe Speichervorrichtung 110 kann unter Verwendung von Schlüsselblockketten oder unter Verwendung von einfachen Blockketten verschlüsselt werden, kann authentifiziert und optional entschlüsselt werden. Die Programminformationen können durch die ASIC 105 verwendet werden, um eine verwürfelte Datenübersendung zu decodieren. Die Programminformationen können Zeilen (z. B. Zeichenfolgen) von Code beinhalten, die durch eine zentrale Verarbeitungseinheit (CPU) 170 in der ASIC 105 ausgeführt werden sollen. Jede Zeile bezieht sich auf eine ausführbaren Anweisung oder auf durch das Programm verwendete Daten. Der Code kann einer Architektur eines Computers mit reduziertem Befehlssatz (RISC-Architektur) entsprechen, bei der jede Zeile von Code in einem einzelnen Chip-Taktzyklus ausgeführt werden kann.
  • Die Programminformationen werden unter Verwendung von Schlüsselblockverkettung verarbeitet. Das Blockverschlüsselungsverfahren ist Dreifach-DES. Drei Schlüssel sind zur Verwendung erhältlich. Ein Schlüssel wird mit den höchstwertigen Adresszeilen verwendet. Ein Schlüssel wird mit den höchstwertigen Adresszeilen verwendet. Dies stellt Adressen abhängige Entschlüsselung bereit. Der dritte Schlüssel kann von der Einheit abhängig sein.
  • Der Hash-Algorithmus kann einen Doppelspeisungsvorwärtshash (DFFH) wie zum Beispiel in der U.S. Patentanmeldung mit der Seriennummer 08/577,922, eingereicht am 22. Dezember 1995 beschrieben, verwendern. Der Hash ist verschlüsselt. Der Schlüssel kann eine EXKLUSIV ODER-Verknüpfung der Adresse und des Einheitsschlüssels sein, um der Authentifizierung sowohl die Adressen- als auch die Einheitsabhängigkeit bereitzustellen. Unterschiedliche Hash-Algorithmen können verwendet werden, wobei die Schlüssel besser verkettet als miteinander EXKLUSIV ODER verknüpft werden können.
  • In der bevorzugten Ausführungsform werden die erzeugten Opcodes durch einen Befehlsdecodierer 172 verarbeitet. Illegale Opcodes können durch einen Detektor 174 für illegale Opcodes in dem Befehlsdecodiercodierer 172 gekennzeichnet werden, wobei die erforderlichen Maßnahmen erfasst werden. Die CPU 170 kann zum Beispiel ein Signal an eine Alarmschaltung 162 senden, die wiederum ein Tötungssignal (Löschungssignal) an eine Speichervorrichtung 150 schickt, die Initialisierungsvektoren, Entschlüsselungsschlüssel und Authentifizierungsschlüssel speichern kann.
  • Bei der Schlüsselblockverkettung verursacht jegliches Ausloten von Programminformationen, dass jeder nachfolgende Block unterschiedlich entschlüsselt.
  • Des Weiteren können die Adresszeilen der externen Speichervorrichtung verwürfelt sein, so dass sequentielle Blöcke von Programminformationen nicht sequentiell gespeichert werden. Das heißt die Bytes, die jeweils zum Beispiel acht Bits umfassen können, können an nicht sequentiellen Adressenplätzen des Speichers gespeichert werden. Die externe Speichervorrichtung 110 gilt folglich als ein verwürfelter Speicher. Ein Schlüssel kann hier ebenfalls verwendet werden. Ein Schlüssel kann unterschiedlich auf der Basis einer Gruppe oder einer Einheit sein.
  • Die Speichervorrichtung 110 speichert ebenfalls Authentifizierungsinformationen zur Verwendung durch das sichere Übertragen der Programminformationen an Blockpuffer 130, 132 und 134 der ASIC 105 über einen Bus 115. Die Authentifizierungsinformationen, ebenfalls als Prüfbits bekannt, werden an einen Prüfbitblockpuffer 136 der ASIC 105 übertragen.
  • Authentifizierungsinformationen sind Daten, die an eine Nachricht angehängt sind, z. B. eine Kette von Programminformationen, um es einem Empfänger zu ermöglichen, zu verifizieren, dass eine Nachricht als authentisch akzeptiert werden sollte. Die Authentifizierungsinformationen sind eine Funktion der Inhalte der Nachricht (z. B. Kette), als ob ein Hash-Wert oder eine kryptographische Prüfsumme verwendet wird. Ein Hash-Wert ist ein Wert von fixierter Länge, der durch die Umsetzung einer Kette von Daten jeder beliebigen Länge mit einer öffentlichen Funktion erhalten wird. In der bevorzugten Ausführungsform wird der Hash verschlüsselt, und die Authentifizierungsinformationen werden unter einem anderen Schlüssel verschlüsselt.
  • Die Programminformationen der externen Speichervorrichtung 110 werden über einen Bus 115 an einen oder eine Anzahl N von Blockpuffern, einschließlich zum Beispiel der Blockpuffer 130, 132 und 134, übertragen. Während eine Vielzahl von Blockpuffern gezeigt wird, ist mindestens einer erforderlich.
  • Die Verschlüsselungs-/Entschlüsselungsschaltung 120 wird bereitgestellt, um die Blöcke zu verschlüsseln oder zu entschlüsseln. Die Schaltung 120 kann zum Beispiel ebenfalls das Chiffrieren bereitstellen, wenn klare Textdaten durch die Blockpuffer oder eine andere Quelle empfangen werden, und es ist wünschenswert, die klaren Textdaten zu verschlüsseln. Die chiffrierten Daten können nachfolgend über die Puffer an die externe Speichervorrichtung übersendet werden.
  • Eine Authentifizierungsschaltung 125 hasht die klaren Textblöcke von Programminformationen unter Verwendung von zum Beispiel der oben erwähnten DFFH-Funktion. Die Authentifizierung kann auf eine gleichzeitige serielle Weise durchgeführt werden, während die Blöcke entschlüsselt werden. Wenn Block 1 entschlüsselt ist, kann er gehasht werden. Wenn Block 2 entschlüsselt ist, kann er mit der Ausgabe des Hash des ersten Blocks gehasht werden, und so weiter. Der Hash der Daten ist verschlüsselt, so dass nur das Wissen über einen geheimen oder privaten Schlüssel den korrekten Hash erzeugen kann. Alternativ erfolgt, wie oben erwähnt, die Entschlüsselung für die Authentifizierungsinformationen, z. B. die Prüfbits, wenn sie mit den authentifizierten Daten (z. B. Programminformationen) EXKLUSIV ODER verknüpft werden, was in einem bekannten Wert resultiert, der durch die Hardware verifiziert werden kann. Die Authentifizierungsschaltung 125 und die Verschlüsselungs-/Entschlüsselungsschaltung 120 können miteinander übertragen werden und können eine gemeinsame Schaltungsanordnung teilen.
  • Schlüsselblockverkettung kann für die Blockkette verwendet werden, die von der externen Speichervorrichtung an die sichere Schaltung 105 übertragen wird. Schlüsselblockverkettung wird in W. Stallings, Network and Internetwork Security, IEEE Press, Englewood Cliffs, New Jersey, U.S.A., S. 59-61, 1995 erörtert. Schlüsselblockverkettung kann sowohl für Verschlüsselung als auch für Hash verwendet werden, aber in einer bevorzugten Ausführungsform wird sie einfach für stabile Verschlüsselung verwendet. Eine separate Hashfunktion wird verwendet. Der Blockverschlüsselungsalgorithmus, der bei der Schlüsselblockverkettung verwendet wird, ist Dreifach-DES.
  • Die Kettenlängen können zwischen 16 und 32 Blöcken variieren. Kettenlängen werden auf einer Kette-um-Kette-Basis gemäß Schlüssel- und Adressparametern variiert.
  • Die Ordnung der Reihenfolge, in der die Blöcke zwischen dem Speicher und der ASIC übertragen werden, ist willkürlich. Ein willkürlicher, dem Adressenerzeuger zugehöriger Nummernerzeuger griff auf die richtigen Speicherstellen der Blöcke in dem Speicher zu.
  • Authentifizierungsinformationen werden als einer der 16 bis 32 übertragenen Blöcke gesendet. Sie können in jeder Reihenfolge übertragen werden. Wenn sie entschlüsselt sind, werden sie mit dem Hash-Wert verglichen.
  • N = 16 Blöcke können zum Beispiel in der Schlüsselblockkette verwendet werden, wobei jeder Block acht Bytes Daten aufweist. Bei der Schlüsselblockverkettung hängt jeder verschlüsselte Block von Daten von den klaren Textdaten des gegenwärtigen Blocks sowie von den klaren Textdaten aller vorangehenden Blöcke ab. Blockverkettung erhöht die Sicherheit, da die gleiche klare Texteingabe unterschiedliche verschlüsselte Daten abhängig von den anderen klaren Textblöcken ergeben wird. Zusätzlich werden die Overheaddaten, die den Authentifizierungsinformationen zugeteilt werden, bedeutend reduziert. Wenn einer der 16 Blöcke Authentifizierungsinformationen gewidmet ist, repräsentiert dies nur 1/16 = 0,0625 oder 6,25 % der Programminformationen. Wenn N = 32, dann wäre die Figur 1/32 = 0,03125 oder 3,13 %. In der bevorzugten Ausführungsform kann die Größe der Kette zwischen 16 und 32 variieren, im Durchschnitt wäre die Figur also 1/24 = 0,0417 oder 4,17 %. Das heißt, nur 4,17 % der Programminformationen sind Authentifizierungsinformationen.
  • Dies könnte variieren, wenn zum Beispiel zwei Blöcke anstelle von einem Block Authentifizierungsinformationen bereitgestellt würden. Es gibt viele Möglichkeiten. Verkettung erniedrigt jedoch drastisch die erforderliche Speicherkapazität, die zur Authentifizierung benötigt wird.
  • Die Verkettung ermöglicht ebenfalls die Verwendung kleinerer Speicherkomponenten, was die Kosten des Systems bedeutend verringert und/oder erhöht, da die Menge an Authentifizierungsinformationen, auf die von der Speichervorrichtung zugegriffen wird, reduziert wird. Schlüsselblockverkettung wird unten ebenfalls in Verbindung mit 2 und 3 erörtert.
  • Ein eventueller Nachteil der Schlüsselblockverkettung ist die Latenz bei der Befehlsausführung, wenn auf ein neues Codesegment, das nicht entschlüsselt und vor der Zeit authentifiziert und vielleicht in dem Cache-Speicher gespeichert ist, zugegriffen werden muss. Die Blöcke müssen seriell entschlüsselt werden, da es nicht möglich ist, mit der Entschlüsselung eines Blocks zu beginnen, bis der vorherige Block entschlüsselt worden ist.
  • Technisch ausgereifte Hashfunktionen wie etwa Message Digest (MD) 5, der sichere Hash-Algorithmus (SHA) und sogar Schlüsselblockverkettung könnten verwendet werden. DFFH wurde ausgewählt, weil es auf DES basiert. Es ist möglich, die gleiche Hardware zu verwenden, die Entschlüsselung vornimmt, um ebenfalls die Authentifizierung vorzunehmen. Die Eingaben an die DES-Maschine können gesteuert werden, um die Verwendung der Hardware zu maximieren. Obwohl Einwegfunktionen wünschenswert sind, sind sie nicht obligatorisch, da, wenn der Authentifizierungsalgorithmus einen geheimen Schlüssel verwendet, eine Einwegfunktion nicht so viel besser als ein umkehrbarer Algorithmus wie etwa Schlüsselblockverkettung ist, da jeder mit der Kenntnis des geheimen Schlüssels fähig ist, die angemessenen Authentifizierungsinformationen, die mit beliebigen eventuell bereitgestellten Programminformationen einhergehen, zu berechnen. Die Authentifizierung unter Verwendung der Kryptographie mit dem öffentlichen Schlüssel ist besser, da die Kenntnis des privaten Entschlüsselungsschlüssels der sicheren Schaltung einem Raubkopierer nicht das Wissen ermöglicht, wie er den Hash an erster Stelle verschlüsselt. Der öffentliche Verschlüsselungsschlüssel muss bekannt sein.
  • Bei jedem Schema muss der Bus 115 bemessen sein, um eine Bandbreite aufzuweisen, die das Tragen von mindestens zwei Zeilen von Befehlen oder gruppierten Programminformationen auf einmal ermöglicht. Alternativ kann der Bus 115 bemessen sein, um einen vollen Block (z. B. acht Bytes) der Kette oder sogar zwei oder mehrere volle Blöcke zu tragen. Der Bus 115 kann ebenfalls bemessen sein, um eine oder mehrere ganze Ketten auf einmal zu tragen.
  • Eine Reihenfolge von Blöcken sind entweder Befehle, die authentifiziert und optional verschlüsselt sind, z. B. Blöcke B1, B2, ..., BN-1, oder Schlüsselblöcke, die verschlüsselt und optional authentifiziert sind. Verschlüsselte Blöcke werden mit Schlüsselblockverkettung verwendet, sind aber mit einfacher Blockverkettung optional. Die Authentifizierungsinformationen sind in der Übertragung der Programminformationen in einem Block von Prüfbits, z. B. Block BN, eingeschlossen.
  • Die Einsparungen bei Overheaddaten mit Schlüsselblockverkettung oder einfacher Blockverkettung, während ein gewünschter Grad an Sicherheit beibehalten wird, sind wie folgt zu sehen. Die durchschnittliche Anzahl an Versuchen, die Authentifizierung zu brechen, liegt bei 2n-1, wobei die Authentifizierung n Bits lang ist. Um einen ausreichenden Grad an Sicherheit bereitzustellen, sollte eine Authentifizierung zu einem gewissen Grad die Länge des Schlüssels oder der Schlüssel, die verwendet werden, um die Befehle zu verschlüsseln, reflektieren. Ansonsten werden die Raubkopierer die schwächste Komponente des Systems angreifen, die die Authentifizierungsinformationen selbst sein könnten. Das heißt, anstatt den Schlüssel auszuloten, um herauszufinden, unter welchem Schlüssel die Programminformationen entschlüsselt waren, kann ein Raubkopierer die Authentifizierungsinformationen ausloten und bewirken, dass die CPU die synthetisierten Programminformationen verarbeitet. Wenn die Verschlüsselung einen Schlüssel von mindestens sieben Bytes für DES verwendet, dann sollten vorzugsweise sieben oder acht Bytes für die Authentifizierungsinformationen verwendet werden. Bei Authentifizierungsinformationen, die zum Beispiel sieben Bytes lang sind (z. B. n = 56 Bits lang), sind im Durchschnitt 255 Versuche erforderlich, was ähnlich schwierig ist, wie einen DES-Schlüssel zu brechen.
  • Wenn ein Block Authentifizierungsinformationen von acht Byte an einen Nachrichtenblock von acht Byte angehängt wird, beträgt der Overhead der Authentifizierungsinformationen 50 % (z. B. 8/(8 + 8)). Wenn jedoch Blockverkettung gemäß der vorliegenden Erfindung verwendet wird, und einer Kette von 16 bis 32 Blöcken von acht Byte ein Block von sieben Byte angehängt wird, beträgt der Overhead zum Beispiel wie oben erörtert bei stabiler Sicherheit nur ungefähr 4,17 %. Dementsprechend stellt Blockverkettung eine wesentliche Reduktion im Overhead der Authentifizierungsinformationen bereit, während ein gewünschter Grad an Sicherheit beibehalten wird.
  • In einem weiteren Aspekt der vorliegenden Erfindung wird die Neuordnung der Kette, die von der externen Speichervorrichtung an die ASIC 105 übertragen wird, bereitgestellt. Diese Neuordnung wird zusätzlich zu der verwürfelten Speicherung der Blöcke in der Speichervorrichtung verwendet, wie unten erörtert, aber es Ist möglich, die Neuordnung selbst zu verwenden. Durch die willkürliche Neuordnung der Blöcke in der Kette wird ein Raubkopierer davon abgehalten, Informationen bezüglich der Ausführungsreihenfolge der Programminformationen in der Verarbeitungsschaltung zu erfassen. Wie bei der Neuordnung von Byte- und Kettengraden kann die Neuordnung von Blöcken willkürlich vorgenommen werden, so dass die wiederholte Ausführung des gleichen Codes Daten aus dem Externspeicher jedes Mal in unterschiedlichen Reihenfolgen holt. Bei der Neuordnung des Bytegrades gibt es zum Beispiel, wenn es acht Bytes pro Block gibt, 8! 40,320 unterschiedliche Reihenfolgen, in denen die Bytes geordnet werden können. Wenn es auf ähnliche Weise bei der Neuordnung von Blöcken sechzehn Blöcke pro Kette gibt, gibt es 16! = 2.09 × 1013 unterschiedliche Reihenfolgen, in denen die Blöcke geordnet sein können. Für die Neuordnung der Kette gibt es 4 Ketten pro Programminformationsreihenfolge, es gibt 4! = 24 unterschiedliche Reihenfolgen, in denen die Ketten geordnet werden können. Und es ist möglich, alle drei zusammen zu verwenden. Die Gesamtzahl der möglichen Permutierungen wäre dann 40,320 × 2,09 × 1013 × 24 = 2,02 × 1019.
  • Es ist wichtig zu realisieren, dass jedes beliebige Feld die Basis für die Neuordnung sein kann und dass Bytes, Blöcke und Ketten willkürliche Einheiten für Bits sind. Die neu geordneten Felder könnten Halbbytes sein. Außerdem müssen Bytes nicht aus acht Bits bestehen, und Blöcke nicht aus 8 Bytes usw.
  • Unter Berücksichtigung dessen könnte dieser Betrieb der Neuordnung es Bytes ermöglichen, über zwei oder mehrere Blöcke, Blöcken, über zwei oder mehrere Ketten und Ketten über zwei oder mehrere Programminformationsreihenfolgen neu geordnet zu werden. Hier erhalten wir ein anderes Ergebnis. Bei der Neuordnung des Bytegrades gibt es zum Beispiel, wenn es acht Bytes pro Block gibt, 16! = 2.09 × 1013 unterschiedliche Reihenfolgen, in denen die Bytes geordnet werden können.
  • Wenn Schlüsselblockverkettung gemeinsam mit der Neuordnung verwendet wird, bei der eine serielle Verarbeitung der Blöcke erforderlich ist, werden mehrfache Blockpuffer benötigt, um alle verwandten Felder vor der Dechiffrierung zu speichern. Wie ferner in Verbindung mit 6 erörtert, wird des Weiteren der Wert von zwei oder mehr Blockpuffern benötigt werden, wenn eine Neuordnung über zwei oder mehr Ketten erfolgen würde. Die Neuordnung über Programminformationsreihenfolgen würde sogar noch mehr Blockpuffer erfordern. Die Dechiffrierung kann verzögert sein, bis die der letzten Blockreihenfolge zugehörigen Felder gelesen werden, da bei interner Neuordnung der letzte gelesene Block der erste Block der Kettenreihenfolge sein kann.
  • Bei der Schlüsselblockverkettung wird Wert auf die Sicherheit gelegt. Die einfache Blockverkettung, wie bei der EXKLUSIV ODER-Hashfunktion in 3 beschrieben, vermeidet Latenzprobleme und kann bei der Neuordnung von Ketten, Blöcken, Bytes oder jedem beliebigen Feld verwendet werden. Ungeachtet der Ordnung der Kette, des Blocks, des Bytes oder des Felds sind alle der Bytes in einem Block verfügbar, um die Authentifizierung durchzuführen. Wenn zusätzlich Entschlüsselung erforderlich ist, wird jeder Block unabhängig entschlüsselt.
  • Der externen Speichervorrichtung bereitgestellte Addressdaten können willkürlich Felder, Bytes, Blöcke oder Ketten zur Übertragung an die ASIC 105 auswählen. Ein Schaltungsmultiplexer 112 zur Neuordnung eines Blocks kann bereitgestellt werden, der mit dem Bus 115 Daten austauscht, um die Neuordnung wie für die Verschlüsselungs-/Entschlüsselungsschaltung 120 und die Authentifizierungsschaltung 125 erforderlich umzukehren, um deren Funktionen durchzuführen. Der Schaltungsmultiplexer 112 zur Neuordnung eines Blocks, der Adressenerzeuger 160 und der Adressenverwürfler 164 können miteinander Daten austauschen, und mit der CPU 170 wie erforderlich, um die Neuordnungsschritte zu koordinieren. Der Adressenerzeuger 160 kann auf einen willkürlichen Nummernerzeuger 166 reagieren. Der willkürliche Nummernerzeuger 166 kann willkürliche oder pseudo-willkürliche Permutierungen der Reihenfolge für die Felder von einer Kette oder von Ketten bereitstellen, die nicht einem in der Hardware eingebetteten Algorithmus entsprechen müssen.
  • Die Verwürfelung von Ketten-, Block-, Byte- und Feldgradreihenfolgen ist im Allgemeinen auf praktisch jedes Schema anwendbar, bei dem Blöcke von Daten zur Verarbeitung von einem Speicher an eine sichere Schaltung übertragen werden. Wie oben erwähnt, kann die Verwürfelung der Ordnung von Bytes oder Teilfeldern innerhalb jedes Blocks nicht die Entschlüsselungslatenz beeinträchtigen, da alle Bytes zusammengesetzt werden müssen, bevor Authentifizierung und Entschlüsselung beginnen können. Die Neuordnung verwirrt jedoch einen Raubkopierer bezüglich dessen, welcher Schlüsseltext welchem Befehl oder anderen Datenblock entspricht. Sie verwirrt einen Raubkopierer ebenfalls bezüglich der Struktur, Reihenfolge und Organisation der Programminformationen in der Speichervorrichtung.
  • In der bevorzugten Ausführungsform wird ein ganzer Acht-Bit-Block durch die sichere Schaltung 105 in der Reihenfolge eingelesen, dass das erste Byte, das relativ zu anderen Bytes gelesen wird, sich von Block zu Block verändert, und sich willkürlich jedes Mal verändern könnte, wenn auf die Speichervorrichtung zugegriffen wird. Bei der Neuanordnung innerhalb der sicheren Schaltung gibt es jedoch nur eine richtige Reihenfolge für einen Block, der Verschlüsselung unterzogen werden muss. Bei der Schlüsselblockverkettung hat dies den Vorteil, dass es nicht mehr als einen Blockpuffer benötigt, da es über die Bytes eines individuellen neu geordneten Blocks verfügt, es verengt jedoch die Trübung auf einen noch kleineren Zeitraum. Die externe Speichervorrichtung kann vor dem Laden der individuellen Bytes in den Blockpuffer neu angeordnet oder sortiert werden.
  • In einem weiteren Aspekt der vorliegenden Erfindung werden die Blöcke einer Kette zurück in die Speichervorrichtung in einem neuen Muster geschrieben. Jede willkürliche Lesung der Speichervorrichtung wird durch ein entsprechendes Schreiben der Daten zurück in eine unterschiedliche willkürliche Reihenfolge gefolgt. Zu jeder Kette zugehörig ist eine Speichervorrichtung, die die gegenwärtige grundlegende Ordnungssequenz der Kette speichert. Die Neuordnung kann willkürlich sein.
  • Leerdaten können ebenfalls zwischen der Speichervorrichtung 110 und der sicheren Schaltung 105 übertragen werden. Die Leerdaten können Düppelstreifen sein, die durch die Speichervorrichtung 110 gespeichert werden. Dies sind Daten, die nie durch die sichere Schaltung verarbeitet werden, aber sie können optional als Füller verwendet werden und durch die sichere Schaltung entschlüsselt und optional authentifiziert werden. Es ist leicht, Düppelstreifen zu erzeugen. Man muss einfach eine Verzweigung oder eine Sprungoperation unmittelbar vor den Düppelstreifen durchführen. Wenn an der Stelle, an der sieh die Düppelstreifen befinden, keinerlei Aufrufe, Verzweigungen oder Sprünge vorgenommen werden, dann werden die Düppelstreifen niemals ausgeführt. Die Leerdaten können reale Programminformationen für andere Ketten und Befehlsreihenfolgen sein, auf die zu einem späteren Zeitpunkt und unter unterschiedlichen Situationen zugegriffen werden kann. Wie Düppelstreifen können diese Daten optional als Füller verwendet werden, und mit den anderen Programminformationen entschlüsselt und optional authentifiziert werden. Diese Daten werden aber nicht durch die sichere Schaltung verarbeitet. Diese überflüssigen Daten verwirren den Raubkopierer, der versucht, die authentifizierten Programminformationen zu analysieren.
  • Einer der besten Wege, Leerdaten zu übertragen, ist durch Ketten variabler Länge. Die eigentliche Anzahl von übertragenen Blöcken könnte gleich bleiben, während sich die Anzahl von Leerblöcken verändert. Mit der Neuordnung von Blöcken wäre es für einen Raubkopierer schwierig zu bestimmen, welche Blöcke die leeren sein könnten. Die Leerblöcke in der bevorzugten Ausführungsform wären sogar Daten, die niemals verarbeitet werden.
  • Die externe Speichervorrichtung 110 kann derart verschlüsselt sein, dass die Blöcke von Programminformationen und Authentifizierungsinformationen an einem nicht sequentiellen Adressenplatz in der Speichervorrichtung gespeichert sind. Es wäre vorzuziehen, die Adressbits der hohen Ordnung bei der Verschlüsselung der Speichervorrichtung einzuschließen, so dass sich jeder Block Programminformationen überall in dem Speicherraum befinden kann. Substitutionstabellen (S-Tabellen) können verwendet werden, um die Regelmäßigkeit zu eliminieren und Nichtlinearität bei der Verschlüsselung der Adresse hinzuzufügen.
  • Genauer ist die authentifizierte blockverkettete externe Speichervorrichtung verschlüsselt, so dass die Ausführung des kryptographischen Codes von einem Raubkopierer, der die Zugriffe auf die Speichervorrichtung auf dem Übertragungsweg 113 beobachtet, verborgen werden kann. Ein Raubkopierer kann daran gehindert werden, etwas über die proprietären Algorithmen, die ausgeführt werden, zu erfahren. Das Verschlüsseln kann daher einen Raubkopierer daran hindern, die Inhalte der Speichervorrichtung herauszufinden, und die sichere Schaltung 105 durch andere Mittel mit der Hardware systematisch anzugreifen. Die Verschlüsselung der Speichervorrichtung verhindert, dass der Raubkopierer genau weiß, welche verschlüsselten Programminformationen das wahrscheinliche Ziel für den Angriff sind. Da der Raubkopierer genau weiß, welche Programminformationen das System anfällig für einen Sicherheitsbruch machen könnten, kann er sich auf das Stauchen der Verarbeitung jener Programminformationen konzentrieren.
  • Wenn Adressverwürfelung und Datenverschlüsselung und Authentifizierung allein verwendet würden, z. B. ohne die Neuordnung der Daten, ist nur ein Blockpuffer in einer minimalen Implementierung erforderlich.
  • Die Verwürfelung kann durch die Verwendung eines Adressenerzeugers vollzogen werden, der zu der sicheren Schaltung 105 gehört, um der externen Speichervorrichtung Adressierungsinformationen bereitzustellen. Eine Anzahl, möglicherweise eine willkürliche, kann bereitgestellt werden, um die Reihenfolge zu ändern, in der die Programminformationen übertragen werden. Die Reihenfolgeninformationen werden verwendet, um das geeignete Feld, Byte oder den Blockpuffer zu multiplexieren, um mit dem geeigneten Byte oder Block zur richtigen Zeit Daten auszutauschen. Individuelle Zeichenfolgen von Teilfeldern, Bytes oder Blöcken von Daten aus der externen Speichervorrichtung werden dann auf die Blockpuffer in einer gewünschten Reihenfolge gemäß den Adressierungsinformationen übermittelt. Die Adressierungsinformationen werden den Schaltungen zur Authentifizierung und Entschlüsselung bereitgestellt, um es diesen Schaltungen zu ermöglichen, die Daten zur entsprechenden Funktion zu entwürfeln.
  • Verschiedene Blockverschlüsselungsalgorithmen wie etwa Dreifach-DES können verwendet werden. Des Weiteren kann der Verwürfelungsalgorithmus die gleichen Substitutionsbox-Tabelle (S-Box-Tabellen) verwenden wie DES, aber mit nur Runden. Die Anzahl von Runden kann für unterschiedliche Anwendungen auswählbar sein, so dass eine Anwendung, die weniger Sicherheit benötigt, weniger Runden verwendet, während eine, die mehr Sicherheit erfordert, die gesamten sechzehn Runden verwenden kann, die DES verliest. Das Reduzieren der Anzahl von Runden reduziert die Latenz des Entschlüsselungsbetriebs.
  • Adressabhängige Verschlüsselung und Authentifizierung der Programminformationen können einen Raubkopierer daran hindern, anderweitig richtig verschlüsselte und authentifizierte Blockketten in der Speichervorrichtung herum zu bewegen, um den Decodierer zum Verarbeiten von Programminformationen außerhalb der Reihenfolge zu bringen. Derartige Verarbeitung außerhalb der Reihenfolge könnte verursachen, dass der Entwürfelungsempfänger unzulässig Zugriff auf eine Datenübersendung gewährt und diese entwürfelt.
  • Wenn möglich sollte der zur Verschlüsselung und Entschlüsselung und/oder Authentifizierung verwendete Schlüssel sowohl adressabhängige Verwürfelung als auch Einheitsschlüsselabhängigkeit aufweisen. Der Einheitsschlüssel ist ein Schlüssel, der für jeden Decodierer einzigartig ist und der zum Beispiel von der Seriennummer des Decodierers abhängen kann, die zur Zeit der Herstellung bereitgestellt wird. Folglich ist es für den Schlüssel wünschenswert, von individuellen Einheiten oder Gruppen individueller Einheiten abzuhängen. Ansonsten kann es einem Raubkopierer möglich sein, die verwürfelten Schlüsseldaten in der externen Speichervorrichtung von einer Einheit zu lesen und dann den gleichen verwürfelten Schlüssel in der externen Speichervorrichtung einer anderen Einheit zu platzieren. Dies kann eine Art und Weise für einen Raubkopierer sein, die Berechtigung für Dienste zwischen Einheiten zu klonen, und muss verhindert werden.
  • Die adressabhängige Verwürfelung und die Einheitsschlüsselabhängigkeit verhindern ebenfalls die Kenntnis von einem Schlüssel, der verwendet wird, um einen Block von Programminformationen in einem Decodierer zu authentifizieren und/oder zu verwürfeln, damit er in einem anderen Decodierer verwendet werden kann. Wenn der geheime Schlüssel zum Beispiel ohne die Einheitsabhängigkeit durch Prüfung der Größtintegration herausgefunden wird, kann er beispielsweise zur korrekten Authentifizierung und Entschlüsselung von Programminformationen für andere Decodierer verwendet werden. Mit anderen Worten, wenn ein oder mehrere Schlüssel für mehr als eine Einheit nützlich wären, könnte ein Raubkopierer dazu fähig sein, den Schlüssel oder die Schlüssel, die aus einer Einheit erhalten wurden, entweder zu verschlüsseln, zu verschlüsseln und zu authentifizieren oder Programminformationen für eine andere Einheit zu authentifizieren. Um von der Einheit abhängige Verwürfelung zu erreichen, kann ein Herunterladeprozess unter Verwendung einer optionalen chipintegrierten Chiffrierungsschaltung verwendet werden, um externen Flash, EPROM, batteriegeschützten RAM oder Massenspeichervorrichtungen zur Zeit der Erschaffung der Einheit zu laden. Diese Chiffrierschaltung kann die gleiche sein, die verwendet wird, um die bidirektionale Lese-/Schreibfähigkeit zwischen der sicheren Schaltung und der Speichervorrichtung zu ermöglichen. Es wäre eine Alternative, diese externen Speichervorrichtungen durch das Konfigurationssystem zu der Zeit der Erschaffung der Einheit unter Verwendung der Kenntnis des geheimen oder privaten Schlüssels oder der geheimen oder privaten Schlüssel geladen zu haben.
  • 2 ist eine schematische Darstellung eines Schlüsselblockverkettungsverchlüsselungsschemas gemäß der vorliegenden Erfindung. Blöcke klarer Textprogramminformationen werden in eine Kette umgewandelt, die Blöcke verschlüsselter Programminformationen beinhaltet, was die Authentifizierungsinformationen umfasst. In dem gezeigten Beispiel hängt jeder verschlüsselte Block von Informationen von den klaren Textprogramminformationen des gegenwärtigen Blocks sowie den klaren Textprogramminformationen eines vorherigen Blocks ab.
  • Eine Authentifizierungsschaltung 203 und eine Verschlüsselungsschaltung 200 sind gezeigt. Die Authentifizierungsschaltung 203 umfasst spezifischerweise Hashfunktionen 204, 206 und 208 und einen Addierer 214. Die Funktionen 204, 206 und 208 können die oben erörterte DFFH-Funktion oder praktisch jede beliebige Hashfunktion verwenden. Ein Schlüssel wird nacheinanderfolgend an den Funktionen 204, 206 und 208 gehasht, um den Addierer 214 mit einem Hash-Wert zu versehen. Der Addierer 214 empfängt ebenfalls eine Null oder einen anderen Wert, der durch die Hardware bekannt ist und der die Verschlüsselungsschaltung 200 mit einem Ausgabewert versieht, der eine Dreifach-DES-Verschlüsselungsfunktion umfassen kann, die durch die Verschlüsselungsfunktionen 218, 222 und 224 repräsentiert wird.
  • Die Verschlüsselungsfunktion 218 empfängt einen geheimen Schlüssel, der eine EXKLUSIV ODER-Verknüpfung von Adressbits niedriger Ordnung ist, und einen Schlüssel DK6, während die Verschlüsselungsfunktion 222 einen geheimen Schlüssel empfängt, der ein EXKLUSIV ODER-Glied von Adressbits höherer Ordnung und einen Schlüssel DK5 ist, und die Verschlüsselungsfunktion 224 empfängt einen geheimen Schlüssel, der eine EXKLUSIV ODER-Verknüpfung eines Einheitsschlüssels und eines Schlüssels DK6 ist. Ein Addierer 226 empfängt eine Ausgabe von der Verschlüsselungsfunktion 224 zusammen mit dem klaren Textblock AN-1, und stellt den Chiffriertextauthentifizierungsblock BN bereit. Der Addierer 226 hasht im Wesentlichen die klaren Textdaten.
  • Die klaren Textblöcke A1, ..., AN-1, die Programminformationen zum Entwürfeln einer Datenübersendung umfassen können, werden durch die entsprechenden Dreifach-Schlüsselverschlüsselungsfunktionen empfangen und werden ebenfalls zum ENTWEDER-ODER-Verknüpfen der nachfolgenden Schlüsseltextblöcke bereitgestellt. A1 wird zum Beispiel durch die Verschlüsselungsfunktionen 228, 232 und 234 verarbeitet, die alle wie gezeigt auf die Schlüssel reagieren. Ein Addierer 236 empfängt die Ausgabe von der Verschlüsselungsfunktion 234 zusammen mit einem Initialisierungsvektor (IV) zum Bereitstellen des Schlüsseltextblocks B1.
  • A2 wird durch die Verschlüsselungsfunktionen 242, 244 und 246 verarbeitet, die alle wie gezeigt auf die Schlüssel reagieren. Ein Addierer 248 empfängt die Ausgabe von der Verschlüsselungsfunktion 246 zusammen mit dem klaren Textblock A1, um den Schlüsseltextblock B2 bereitzustellen. B2 ist folglich eine Funktion von sowohl A1 als auch A2. Auf ähnliche Weise wird AN-1, durch die Verschlüsselungsfunktionen 252, 254 und 256 verarbeitet, die alle wie gezeigt auf die Schlüssel reagieren. Ein Addierer 258 empfängt die Ausgabe von der Verschlüsselungsfunktion 256 zusammen mit dem klaren Textblock AN_2, um den Schlüsseltextblock BN-1, bereitzustellen.
  • Die IV kann Null sein, oder eine Funktion der Adressdaten oder des Einheitsschlüssels, die der Schaltung 112 zur Neuordnung des Blocks oder einer anderen Zufallsverteilungsfunktion bereitgestellt werden. Für dieses Beispiel wird eine Blockgröße von acht Bytes angenommen. Obwohl des Weiteren Dreifach-DES unter Verwendung von drei unterschiedlichen Schlüsseln für jeden DES-Betrieb angenommen wird, können weniger oder mehr Schlüssel verwendet werden. Mehr Schlüssel können in einen DES-Betrieb durch das Aufsplitten der Runden, um unterschiedliche Schlüssel anstelle eines einzelnen Schlüssels zu verwenden, eingeführt werden.
  • Zusätzliche Schlüssel können für die Verschlüsselungsfunktionen verwendet werden, und zusätzliche und/oder alternative Verschlüsselungsschritte können vorgenommen werden. Vorzugsweise verwendet jede der Schlüsseltextblockverschlüsselungsfunktionen den gleichen Verschlüsselungsalgorithmus, obwohl dies nicht erforderlich ist.
  • Die N verschlüsselten Blöcke B1 bis BN können einer weiteren Verschlüsselungsfunktion bereitgestellt werden, wie etwa dem Blockneuordnungsschaltungsmultiplexer 112 aus 1, der ein blockartiges Verwürfeln der N-Blöcke gemäß einem Adressdatensignal durchführt. Bei N = 8 Blöcken können die Blöcke zum Beispiel in sequentiellen Adressen der externen Speichervorrichtung 110 in der folgenden Ordnung gespeichert werden: B1, B3, B2, B5, B4, B6, B8, B7. Die Blöcke gelten als auf eine willkürliche oder nicht sequentielle Weise gespeichert, da sie nicht in nacheinanderfolgenden Adressen der Speichervorrichtung gespeichert sind.
  • Bei dem oben erörterten temporären Neuordnungsschema können die Blöcke nachfolgend an die Blockpuffer in einer anderen Reihenfolge übersendet werden, zum Beispiel B5, B3, B2, B6, B4, B7, B8, B1, was sich sowohl von der Ordnung unterscheidet, in der die Blöcke der Schaltung zur Neuordnung 112 bereitgestellt wurden, als auch in der Reihenfolge der Speicherung.
  • Die Authentifizierungs- und Verschlüsselungsfunktionen und zugehörigen Elemente müssen nicht mit der externen Speichervorrichtung 110 zusammengestellt werden. Das heißt, dass sich die Verschlüsselungsschaltung 200 am Kopfende eines Kabelfernsehsystems oder einer Satelliten-Aufwärtsstrecke befinden kann, während die Speichervorrichtung Teil eines Entwürfelungsempfängers bei einem Benutzer zu Hause ist. Die authentifizierten und/oder verschlüsselten Programminformationen können dem Speicher 110 über einen beliebigen geeigneten Kanal, wie zum Beispiel über ein Telephon, einen Satelliten, eine Kabelfernsehverbindung oder ein Computernetz bereitgestellt werden. Die authentifizierten und/oder verschlüsselten Programminformationen können ebenfalls lokal oder über eine Chipkarte installiert werden, oder die Speichervorrichtung 110 selbst kann mit den verschlüsselten Programminformationen vor der Installation und der Initialisierung in dem Entwürfelungsempfänger vorgeladen werden.
  • Unter erneuter Bezugnahme auf den Entwürfelungsempfänger 100 aus 1 können durch den Adressenverwürfler 164 verwendete Adressdaten in einem Adressenerzeuger 160 der ASIC 105 gespeichert werden. Die Adressdaten werden dem Externspeicher 110 über einen Pfad 165 bereitgestellt, so dass die verwürfelten Blöcke der verschlüsselten Befehle in einer gewünschten Reihenfolge (z. B. B1, B2, ..., BN) ausgelesen werden können. Insbesondere können Blöcke, die eine Kette beinhalten, nicht sequentiell aus dem Speicher 110 ausgelesen werden, um die Blöcke in der unverwürfelten Reihenfolge über Zeile 113 bereitzustellen. Die Blöcke können optional von der externen Speichervorrichtung 110 zu der sicheren Schaltung 105 in der verwürfelten oder willikürlichen Zeitreihenfolge übersendet werden und an der ASIC 105 unter Verwendung des Blockneuordnungsschaltungsmultiplexers 112 entwürfelt werden. Die Adressdaten können ebenfalls durch die externe Speichervorrichtung 110 verwendet werden, um unterschiedliche Blockketten auf eine verwürfelte Weise (z. B. in nicht sequentieller Ordnung) zu übersenden.
  • Die Adressdaten und die verschlüsselten Blöcke B1 bis BN der nachfolgenden Schlüsselblockketten werden einer Verschlüsselungs-/Entschlüsselungsschaltung 120 und einer Authentifizierungsschaltung 125 der ASIC 105 bereitgestellt. Die Verschlüsselungs- /Entschlüsselungsschaltung 120 verwendet die Adressdaten zur Entwürfelung der Schlüsselblockkettenreihenfolge wie erforderlich. Die Neuordnung kann ebenfalls an dem Blockneuordnungsschaltungsmultiplexer 112 erfolgen. Die Verschlüsselungs-/Entschlüsselungsschaltung 120 empfängt ebenfalls den geheimen Entschlüsselungsschlüssel aus einem Entschlüsselungsschlüsselspeicher 150 der ASIC 105 und führt einen Entschlüsselungsalgorithmus durch, der umgekehrt zu dem ist, der bereitgestellt wird, um die verschlüsselten Blöcke bereitzustellen. Der Entschlüsselungsprozess wird unten unverzüglich und ebenfalls in Verbindung mit 3 erörtert.
  • Bei dem Blockverkettungsschema müssen die Blöcke B1 bis BN von jeder Kette aufeinanderfolgend entschlüsselt werden. Das heißt, B1 wird als erstes entschlüsselt, dann wird das Ergebnis bei der Entschlüsselung von B2 verwendet und so weiter. Sobald die Blöcke B1 bis BN-1 entschlüsselt worden sind, kann der Authentifizierungsblock BN entschlüsselt werden, und die Authentifizierungsinformationen (z. B. Prüfsumme oder Hash) können durch die Authentifizierungsschaltung 125 kalkuliert werden, um die Kette zu authentifizieren. Die korrekten Authentifizierungsinformationen können innerhalb der Authentifizierungsschaltung 125 vorgespeichert und mit den kalkulierten Authentifizierungsinformationen verglichen werden, um die notwendige Verifizierung bereitzustellen. Letztlich werden Zeilen klaren Textes (z. B. entschlüsselt) von Programminformationen erhalten und dem Cache-Speicher 140 bereitgestellt.
  • Zur sicheren Übertragung zwischen einer externen Speichervorrichtung 110 und der sicheren Schaltung 105 müssen die aus der sicheren Schaltung herausgehenden Programminformationen ebenfalls authentifiziert und/oder verschlüsselt werden. Um ein Byte oder eine Zeichenfolge von Daten in der externen Speichervorrichtung 110 zu ändern, müssen folglich der ganze Block und die Blockkette in die ASIC gelesen, die Veränderung vorgenommen werden, und dann können die richtigen Authentifizierungsinformationen kalkuliert werden. Nachdem die Authentifizierungsinformationen kalkuliert sind, werden die neu verschlüsselten Blockinformationen und geänderten Authentifizierungsinformationen zum Beispiel unter Verwendung von einfacher Blockverkettung ausgeschrieben. Die Programminformationen können zurück in die Speichervorrichtung in einer anderen grundlegenden Reihenfolge als die, aus der sie geholt wurden, geschrieben werden.
  • Die nicht modifizierten Blöcke müssen nicht ausgeschrieben werden, außer die Stelle der Speicherung hat sich verändert. Bei der Schlüsselblockverkettung kann das Verändern von einem Block von Daten die nachfolgenden Blöcke in einer Kette verändern. Die betroffenen Blöcke müssten ebenfalls ausgeschrieben werden.
  • Es gibt Umstände, unter denen die sichere Schaltung an die Außenwett in einem klaren Modus übertragen muss, z. B, für Drucker, Fehlernachrichten, Anzeigezwecke und degleichen. Daher sollten die Verschlüsselungs-/Entschlüsselungsschaltung 120 und/oder die Verifizierungs-/Authentifizierungsschaltung 125 einen Sperrmodus aufweisen, durch den Programminformationen übertragen und bedingt umgangen werden können. In einem derartigen Modus können Programminformationen weder in einem Block noch in einer Kette übertragen werden, da es kein Erfordernis weder für Verschlüsselung noch für Authentifizierung geben würde. Ein derartiger Modus wäre ebenfalls zum Austesten und Testen des Systems nützlich.
  • Unterschiedliche Kettenlängen können verwendet werden, um unterschiedliche Typen von Programminformationen von der Speichervorrichtung zu übertragen. Programminformationen, die weniger Latenz erfordern, können kleinere Kettenlängen haben. Programminformationen, die eine größere Latenz tolerieren können, können eine längere Kettenlänge haben, wodurch sie am Speicher der entsprechenden Authentifizierungsinformationen sparen. Die Länge jeder Kette kann folglich gemäß der Verarbeitungslatenz der Programminformationen der entsprechenden Ketten festgesetzt werden.
  • Es kann zum Beispiel möglich sein, nur zwei Blöcke von Programminformationen in der Kette zu haben, einen für die Daten und einen für die Authentifizierungsinformationen. Obwohl eine ganze Kette von Programminformationen geholt und zuerst entschlüsselt werden muss, um sogar nur ein einzelnes Byte zu verändern, muss eine Veränderung der Daten nicht unmittelbar an die externe Speichervorrichtung ausgeschrieben werden. Daten müssen intern gespeichert werden, wie etwa in dem Cache-Speicher 140, bis zu dem Zeitpunkt, zu dem die externe Speichervorrichtung aktualisiert werden muss. Zu diesem Zeitpunkt muss die ASIC die ganze Kette mit der Modifizierung aus der externen Speichervorrichtung zurückschreiben.
  • Unter erneuter Bezugnahme auf die Verschlüsselungs-/Entschlüsselungsschaltung 120 werden die entschlüsselten Programminformationen einem Cache-Speicher 140 zur vorübergehenden Speicherung und einer CPU 170 zur Ausführung bereitgestellt. Die Programminformationen können verwendet werden, um eine verwürfelte Datenübersendung unter Verwendung von zusätzlicher Verarbeitungshardware oder -software und Schritten, die nicht gezeigt sind, aber die im Fach wohl bekannt sind, zu decodieren.
  • Der Cache-Speicher 140 ist ein RAM, das eine Fähigkeit zum Pufferbetrieb mit einem Zugriff von relativ hoher Geschwindigkeit bereitstellt, und bemessen sein kann, um eine wesentliche Menge an Daten zu speichern. Der Cache-Speicher 140 kann Tausende von Bytes speichern, was der Größe der Befehle und der Betriebsdaten vieler Blockketten entspricht. Die CPU kann Programminformationen aus einer ersten Schlüsselblockkette ausführen, während die Verschlüsselungs-/Entschlüsselungsschaltung 120 Blöcke aus einer zweiten, nachfolgenden Schlüsselblockkette entschlüsselt. Die zweite Kette kann direkt auf die erste Kette folgen, oder sie kann von der ersten Kette durch eine oder mehrere Zwischenketten getrennt werden. Der Durchsatz des Systems kann folglich aufgrund der überlappenden Aktivität der Authentifizierungsschaltung, der Entschlüsselungsschaltung und der CPU verbessert werden. Obwohl die Ausführungszeit der Programminformationen in der CPU typischerweise schneller sein wird als die Entschlüsselungszeit in der Verschlüsselungs-/Entschlüsselungsschaltung 120 können Wirkungsgrade im Allgemeinen durch das Koordinieren der Entschlüsselungs- und Ausführungsaktivitäten und das Optimieren der Anzahl von Runden, die in dem Verschlüsselungs-/Entschlüsselungsalgorithmus verwendet werden, erreicht werden.
  • Zusätzliche Wirkungsgrade können durch das Schreiben der Programminformationen, z. B. Befehle, die durch die CPU ausgeführt werden, um dem Blockkettenübermittlungsschema zu entsprechen, realisiert werden. Insbesondere kann die Menge an Programminformationen in Zeilen der Befehle der Blockgröße und der Anzahl an Blöcken in einer Kette entsprechen. Zeilen von Befehlen sollten zum Beispiel vollständig in einer Blockkette ausgetragen werden, anstatt in zwei Ketten aufgespaltet zu werden, um das Warten auf die Decodierung einer zweiten Blockkette, um den Rest einer Zeile wiederzuerlangen, zu vermeiden. Ein Befehl ist typischerweise nur wenige Bytes lang (z. B. 1-4 Bytes), so dass eine Kette von Blöcken typischerweise einige Befehle umfasst.
  • Der Cache-Speicher 140 kann wahlweise ein Signal von dem Adressenerzeuger 160 empfangen, um die Speicherung und die Übermittlung von Programminformationen an die CPU 170 zu koordinieren. Das Signal kann zum Beispiel den Cache-Speicher 140 darüber informieren, dass zusätzliche Blockketten an die Puffer, die Authentifizierungsschaltung 125 und die Verschlüsselungs-/Entschlüsselungsschaltung 120 geschickt werden, so dass zusätzliche ausführbare Programminformationen von dem Cache-Speicher 140 empfangen werden.
  • Ein oder mehrere Register 180 können bereitgestellt werden, die sich an den Cache-Speicher 140 und die CPU 170 anschließen. Außerdem kann ein kleiner interner ROM verwendet werden, um Urlade- oder andere Programminformationen, die in der ASIC 105 erforderlich sein können, zu speichern.
  • 3 ist eine schematische Darstellung eines Schlüsselblockverkettungsentschlüsselungsschemas gemäß der vorliegenden Erfindung. Das gezeigte Schema ist der Gegensatz zu dem Verschlüsselungsschema aus 2. Neuordnung wird falls erforderlich durchgeführt, um die Felder in der gewünschten Reihenfolge zum Entschlüsseln zu erhalten. Eine Authentifizierungsschaltung 303 und eine Entschlüsselungsschaltung 300 werden bereitgestellt. An der Entschlüsselungsschaltung wird jeder der Schlüsseltextblöcke B1 ..., BN entschlüsselt.
  • Als erstes werden die entsprechenden Schlüsseltextblöcke mit dem vorher entschlüsselten klaren Textblock oder einem Initialisierungsvektor EXKLUSIV ODER verknüpft. Insbesondere werden B1 und VI während der Verschlüsselung an einem Addierer 320 empfangen, um einer Dreifach-DES-Entschlüsselungsfunktion einschließlich der Entschlüsselungsfunktionen 322, 324 und 326 eine Ausgabe bereitzustellen. Der klare Textblock A1 wird von der Entschlüsselungsfunktion 326 ausgegeben und einem Addieren 330 und einer Hashfunktion 304 bereitgestellt. An der Hashfunktion 304 werden A1 und ein Schlüssel gehasht, um nachfolgenden Hashfunktionen 306 und 308 und einem Addierer 310 eine Ausgabe bereitzustellen.
  • Der Addierer 330 empfängt A1 und B2, um den Entschlüsselungsfunktionen 332, 334 und 336 eine Ausgabe bereitzustellen, um den klaren Textblock A2 bereitzustellen. Auf ähnliche Weise empfängt ein Addierer 340 AN- 2 und BN-1, um den Entschlüsselungsfunktionen 342, 344 und 346 eine Ausgabe bereitzustellen, um den klaren Textblock AN-1, bereitzustellen. Ein Addierer 350 empfängt den Authentifizierungsblock BN sowie AN- 1, um den Entschlüsselungsfunktionen 352, 354 und 356 einen Wert bereitzustellen. Die Ausgabe der Entschlüsselungsfunktion 356 wird einem Addierer 310 zusammen mit einem Hash-Wert aus einer Hashfunktion 308 bereitgestellt, um eine Ausgabe von entweder eins oder null zu produzieren. Wenn die Ausgabe null ist, dann ist der Authentifizierungswert gültig, da er zu dem Hash-Wert passt, und ein Freigabesignal wird festgesetzt, um das Weiterlaufen der Verarbeitung zu ermöglichen. Wenn die Ausgabe des Addierers 310 jedoch eins ist, dann ist der Authentifizierungswert nicht gültig, und ein Alarmzustand kann an der Alarmschaltung 162 initiiert werden, um ein Tötungssignal (Löschungssignal) zur teilweisen oder vollständigen Auslöschung der Inhalte der Schlüsselspeichervorrichtung 150 bereitzustellen.
  • Wenn die Neuordnung von Blöcken verwendet wird, ist es wahrscheinlich, dass ein Raubkopierer, der versucht, Programminformationen und den Wert der Authentifizierungsinformationen auszuloten, ungültige Opcodes schafft. Ungültige Opcodes sind hexadezimale Befehle, für die es keinen entsprechenden Vorgang gibt. Verschiedene Optionen existieren zur Handhabung eines Authentifizierungswerts oder Opcodes, der nicht nachprüft. Eine Möglichkeit besteht darin, eine Rücksetzung der sicheren Schaltung durchzuführen, was von dem Raubkopierer erfordern würde, die ASIC für einen neuen Angriff zu rekonfigurleren und zu reinitialisieren.
  • Eine weitere Möglichkeit besteht darin zu verursachen, dass der Prozessor in der ASIC auf eine unendliche „Kein-Betrieb"-Schleife (NOP-Schleife) springt. Dies ist ein Zustand, in dem die ASIC keinen wesentlichen Betrieb durchführt, was den Raubkopierer dazu auffordert, zuerst den NOP-Betrieb zu erfassen, dann eine Rücksetzung selbst zu erzwingen und die ASIC für einen weiteren Angriff zu rekonfigurieren und zu reinitialisieren. Oder die Anzahl von Fehlanpassungen zwischen dem vorgespeicherten Wert und dem entschlüsselten Wert kann gezählt werden, so dass einer oder alle der gespeicherten Schlüssel ausgelöscht werden, wenn eine Schwellenanzahl von Fehlanpassungen erfasst wird. Diese Schlüssel könnten empfindliche Schlüssel sein, wobei das Wissen in der Außenwelt einen bedeutenden Sicherheitsbruch darstellen könnte. Deren Löschung würde eine permanente Fehlfunktion einer ansonsten guten Einheit verursachen.
  • Eine weitere mögliche Gegenmaßnahme ist es, einen vorübergehenden Schlüssel wie etwa einen der gelieferten Schlüssel zu löschen, anstelle eines Schlüssels, der bei der Initialisierung der Einheit oder der Zeit der Schaffung geladen wird. Dies zwingt den Raubkopierer dazu, den Netzdienstanbieter zur erneuten Berechtigung zu kontaktieren, wodurch der Raubkopierer potentiell entlarvt wird. In der bevorzugten Ausführungsform, in der Wert auf Sicherheit gelegt wird, würden alle Schlüssel gelöscht werden.
  • 4 ist eine schematische Darstellung eines einfachen Blockverkettungsschemas gemäß der vorliegenden Erfindung. Wie oben erörtert, kann diese Konfiguration Latenzprobleme vermeiden, die für die Schlüsselblockverkettungstechnik aus 2 und 3 charakteristisch sind. Die Verschlüsselung aller klaren Textblöcke kann unabhängig und im Wesentlichen parallel ausgeführt werden. Die Verschlüsselung und Entschlüsselung der Authentifizierungsinformationen hängt von den klaren Textblöcken ab. Die einfache Blockverschlüsselungstechnik kann eine größere Anfälligkeit für einige Auslotungsangriffe durch Raubkopierer aufweisen, da die Modifizierung eines Blocks jedoch die anderen Blöcke nicht beeinträchtigt, mit Ausnahme von den Authentifizierungsinformationen.
  • Eine Authentifizierungsschaltung 403 und eine Entschlüsselungsschaltung 400 werden bereitgestellt. Blöcke von klaren Textprogramminformationen A1, A2, ..., AN werden verarbeitet, um jeweils entsprechende Blöcke von Schlüsseltext B1, B2, ..., BN bereitzustellen. Einer der Schlüsseltextblöcke, der im Allgemeinen als B1 bezeichnet wird, ist ein Authentifizierungsblock und kann neben den anderen Schlüsseltextblöcken (z. B. 1 ≤ i ≤ N) jede beliebige Position einnehmen.
  • An der Verschlüsselungsschaltung 400 ist Block A1 an einer Funktion 402 verschlüsselt, um Block B1 bereitzustellen, Block A2 ist an einer Funktion 404 verschlüsselt, um Block B2 bereitzustellen, Block AN- 1 ist an einer Funktion 408 verschlüsselt, um Block BN- 1 bereitzustellen, und Block AN ist an einer Funktion 410 verschlüsselt, um Block BN bereitzustellen. Zusätzlich dazu wird jeder der klaren Textblöcke einem Addierer 412 in der Authentifizierungsschaltung 403 bereitgestellt, um einer Verschlüsselungsfunktion 406 einen Wert bereitzustellen, um einen Schlüsseltextauthentifizierungsblock B1 zu produzieren. B1 kann der erste Block B1, der letzte Block BN, oder jede beliebige Block dazwischen sein. Der Addierer 412 empfängt ebenfalls eine Null oder einen anderen Wert, der durch die Hardware bekannt ist.
  • Jede der Verschlüsselungsfunktionen für die Nicht-Authenifizierungsblöcke, z. B. die Funktionen 402, 404, 408 und 410, kann unter dem gleichen Schlüssel K1, der durch das EXKLUSIV-ODER-Verknüpfen eines Einheitsschlüssels, von Adressbits höherer Ordnung, eines geheimen Schlüssels DK1 und Adressbits niedrigerer Ordnung erhalten wird, betrieben werden. Die Verschlüsselungsfunktion für den Authentifizierungsblock, z. B. die Funktion 406, kann unter einem unterschiedlichen Schlüssel K2 betrieben werden, der unter Verwendung eines geheimen Schlüssels DK2 erhalten wird. Die verschlüsselten Blöcke können der Blockneuordnungsschaltung bereitgestellt werden, wie vorher erörtert.
  • Gemäß der vorliegenden Erfindung werden die Authentifizierungsinformationen von den klaren Textblöcken durch das Bereitstellen eines Addierers 412 abgeleitet, was das EXKLUSIV ODER der klaren Textblöcke A1, A2, ..., AN und optional einen vorgespeicherten Wert erfordert. Die Ausgabe des Addierers 412 wird nachfolgend an der Funktion 406 verschlüsselt, um den verschlüsselten Authentifizierungsblock B1 bereitzustellen. Praktisch jede Hashfunktion kann anstelle des Addierers 412 oder zusätzlich zu diesem verwendet werden. Des Weiteren ist es nicht notwendig, jeden klaren Textblock in den Addierer 412 einzugeben.
  • 5 ist eine schematische Darstellung eines einfachen Blockverschlüsselungsentschlüsselungsschemas gemäß der vorliegenden Erfindung. Der Entschlüsseler ist das Gegenstück zu dem Verschlüsseler aus 4. Neuordnung wird falls erforderlich durchgeführt, um die Blöcke in der gewünschten Reihenfolge zum Entschlüsseln zu erhalten.
  • Eine Entschlüsselungsschaltung 500 und eine Authentifizierungsschaltung 503 werden bereitgestellt. Die Entschlüsselungsfunktionen 502, 504, 508 und 510 verwenden wie gezeigt einen Schlüssel K1, um die Schlüsseltextblöcke B1, B2, BN-1 bzw. BN zu entschlüsseln, um die klaren Textblöcke A1, A2, AN-1 und AN, bereitzustellen. Der Schlüsseltextauthentifizierungsblock B1 wird an einer Funktion 506 unter Verwendung eines unterschiedlichen Schlüssels entschlüsselt. Die Ausgaben von jeder der Entschlüsselungsfunktionen werden einem Addierer 512 bereitgestellt, um einen Hash-Wert bereitzustellen, der wiederum an einem Addierer 514 mit einem vorgespeicherten Hardwarewert summiert wird.
  • Wenn die Ausgabe des Addierers 514 null ist, dann sind der Hash-Wert und der Hardware-Wert gleich, und die Authentifizierungsdaten werden verifiziert, und die nachfolgende Verarbeitung wird ermöglicht. Wenn die Ausgabe des Addierers 514 eins ist, dann sind der Hash-Wert und der Hardware-Wert jedoch unterschiedlich, und die Authentifizierungsdaten werden nicht verifiziert, also wird ein Alarmzustand festgelegt.
  • 6 ist ein Schaltschema eines alternativen kryptographischen Sehlüsselerzeuger-/Entwürfelungsempfängergeräts gemäß der vorliegenden Erfindung. Gleich bezifferte Elemente entsprechen den Elementen von 1. Der im Allgemeinen bei 600 gezeigte Empfänger umfasst die Kettenblockpuffer 130, 132 und 134, die für den ersten, zweiten bzw. Nten Block einer ersten Kette verwendet werden, und die Blockpuffer 630, 632 und 634, die für den ersten, zweiten bzw. Mten Block einer zweiten Kette verwendet werden. Bei diesem Schema können zwei oder mehrere Blöcke (einer von jeder Kette) zur gleichen Zeit über die Leitung 113 übertragen werden. Des Weiteren können zusätzliche Blockpuffer bereitgestellt werden, um Daten von mehr als zwei Ketten zu speichern. Jede Kette kann die gleiche oder unterschiedliche Längen aufweisen.
  • Die Verschlüsselungs-/Entschlüsselungsschaltung 120 und die Authentifizierungsschaltung 125 verarbeiten die Kette 1, während die Verschlüsselungs-/Entschlüsselungsschaltung 620 und die Authentifizierungsschaltung 625 die Kette 2 verarbeiten. Die Daten von der Schlüsselspeichervorrichtung 150 können den Schaltungen 120, 125, 620 und 625 bereitgestellt werden, wie für jede der Ketten erforderlich. Obwohl sie als separate Elemente gezeigt werden, können die Authentifizierungsschaltung 125 und die Verschlüsselungs-/Entschlüsselungsschaltung 120 eine gemeinsame Schaltungsanordnung mit der Authentifizierungsschaltung 625 und der Verschlüsselungs-/Entschlüsselungsschaltung 620 teilen.
  • Die Ausführungsform aus 6 ermöglicht die Neuordnung über zwei oder mehrere Ketten, wenn Schlüsselblockverkettung verwendet wird. Wenn Schlüsselblockverkettung verwendet wird, muss wie erörtert jeder Block in einer Kette vorübergehend gespeichert werden, um den Authentifizierungsblock wiederzuerlangen. Der Empfänger 600 kann daher das parallele Verarbeiten von zwei oder mehreren Schlüsselblockketten, die kettenweise Neuordnung oder die blockweise Neuordnung über zwei oder mehrere Ketten bereitstellen.
  • Dementsprechend ist es ersichtlich, dass die vorliegende Erfindung ein Gerät zum Entwürfeln einer verwürfelten Datenübesendung durch das Übermitteln von authentifizierten und optional verschlüsselten Programminformationen von einer externen Speichervorrichtung an eine sichere Schaltung in einer einfachen Blockkette bereitstellt. Verschlüsselte und optional authentifizierte Programminformationen werden ebenfalls von der externen Speichervorrichtung an die sichere Schaltung in der Schlüsselblockkette übermittelt. Das Schema ermöglicht das leichte Vornehmen von Aktualisierungen und anderen Veränderungen an den Entwürfelungsbefehlen ohne eine Modifizierung der sicheren Schaltung.
  • Zusätzlich dazu verbessert die Verwendung von Blockverkettung den Durchsatz des Systems und reduziert die Systemkosten durch das Reduzieren des Authentifizierungsinformationsoverheads. Weitere Wirkungsgrade werden durch das Bereitstellen eines Cache-Speichers zum Übermitteln von zwei oder mehreren Zeilen der entschlüsselten oder authentifizierten Programminformationen an die CPU in einem einzelnen Taktzyklus und durch das Verwalten der Zeitsteuerung der Blockentschlüsselung mit der Übermittlung der entschlüsselten Daten an den Cache-Speicher und die CPU erhalten.
  • Eine alternative Ausführungsform der Erfindung verwendet einfache Blockverschlüsselung anstelle von Schlüsselblockverkettung. Bei diesem Schema werden die Blöcke der Kette durch die Verwendung eines großen Authentifizierungsfelds wie bei der Schlüsselblockverkettung authentifiziert. Die Kette von Blöcken kann jedoch im Wesentlichen parallel anstatt seriell entschlüsselt und authentifiziert werden.
  • Die Neuordnung der Blockkette unter Verwendung eines beliebigen Felds wie etwa Byte, Block und/oder Kettengrad wird ebenfalls zusätzlich zu der verwürfelten Adressenspeicherung an der externen Speichervorrichtung bereitgestellt.
  • Zusätzlich dazu kann eine bidirektionelle Fähigkeit bereitgestellt werden, um zu ermöglichen, dass die Programminformationen von der sicheren Schaltung an die externe Speichervorrichtung übermittelt werden. Die Programminformationen müssen zur Sicherheit nicht nur entschlüsselt sondern auch authentifiziert werden.
  • Obwohl die Erfindung in Verbindung mit verschiedenen spezifischen Ausführungsformen beschrieben worden ist, versteht der Fachmann, dass daran zahlreiche Anpassungen und Modifikationen vorgenommen werden können, ohne von dem Bereich der Erfindung, wie er in den Ansprüchen dargelegt ist, abzuweichen.
  • Die Erfindung ist zum Beispiel besonders geeignet, um das Kopieren und die Umkehrtechnik von proprietären Softwarealgorithmen. zu verhindern, und um kryptographische Anwendungen wie etwa das Entwürfeln von Datenübersendungen wie etwa Bezahlfernsehprogrammen, um nicht berechtigte Benutzer davon abzuhalten, Fernsehübertragungen zu empfangen, zu sichern. Die Erfindung ist gleichermaßen für andere Anwendungen nützlich, einschließlich Terminals und Chipkarten für elektronische Banktransaktionen, Gebäudekontrollen, elektronische Spiele, durch Händler verwendete Waren und Bestandsdaten, Daten, die über das Internet oder andere Computernetze übermittelt werden, und so weiter.
  • Die Erfindung ist des Weiteren mit alternativen Verschlüsselungsschemen wie etwa einer Stromverschlüsselung oder einer Kombination aus sowohl einer Stromverschlüsselung als auch einer Schlüsselblockverkettung wie etwa dem gemeinsamen Verwürfelungsalgorithmus (CSA) kompatibel. Ein weiteres derartiges Schema ist die Verschlüsselung des öffentlichen Schlüssels. Da jeder Block und jede Kette im Vergleich zu den Modulgrößen von zum Beispiel dem RSA-System des öffentlichen Schlüssels, das Größen von 2048 Bits (256 Oktette) aufweisen kann, relativ klein ist, ist es möglich, RSA zu verwenden, um eine oder mehrere Programminformationsketten zu verschlüsseln. Wenn das RSA-System des öffentlichen Schlüssels verwendet würde, dann könnte es vorzuziehen sein, ein unsymmetrisches Exponentenpaar zu verwenden, wobei der private Exponent der Entschlüsselung klein wäre, zum Beispiel gleich drei. Das würde die Latenz der Programminformationen senken. Nach der Entschlüsselung könnten die Authentifizierungsinformationen wie in den oben beschriebenen Blockverschlüsselungstechniken entschlüsselt und überprüft oder einfach überprüft werden. Dies macht es schwierig, den entschlüsselten Authentifizierungswert festzusetzen. Und wie oben erwähnt, kann eine Kombination aus einem geheimen Schlüssel und einem öffentlichen Schlüssel verwendet werden.

Claims (26)

  1. Ein Gerät zur Verarbeitung von Programminformationen, das Folgendes beinhaltet: eine sichere Schaltung (105), die Folgendes umfasst: einen Puffer (130-134, 630-634) zum Speichern von verschlüsselten Programminformationen, wobei der Puffer mindestens einen Blockpuffer (130-134, 630-634) beinhaltet, und eine Entschlüsselungsschaltung (120, 620), die auf den mindestens einen Blockpuffer zum Entschlüsseln der verschlüsselten Programminformationen reagiert, eine externe Speichervorrichtung (110), die angepasst ist, um die verschlüsselten Programminformationen außerhalb der sicheren Schaltung (105) zu speichern; einen ersten Übertragungsweg (113), der angepasst ist, um eine Gruppe von Blöcken der verschlüsselten Programminformationen von der externen Speichervorrichtung (110) an den mindestens einen Blockpuffer (130-134) in einer ersten Blockkette, die zur Übertragung der Gruppe von Blöcken verwendet wird, zu übertragen; und einen zweiten Übertragungsweg (140), der angepasst ist, um die verschlüsselten Programminformationen von dem mindestens einen Blockpuffer an die Zentraleinheit (170) zur Verarbeitung darin zu übertragen; dadurch gekennzeichnet, dass eine zentrale Verarbeitungseinheit (CPU) (170) zum Ausführen der Programminformationen in der sicheren Schaltung eingeschlossen ist; dass die erste Blockkette von der Gruppe von Blöcken abgeleitete Authentifizierungsdaten verschlüsselter Programminformationen beinhaltet; dass die sichere Schaltung (105) eine Authentifizierungsschaltung (125, 625) beinhaltet, die auf den mindestens einen Blockpuffer (130-134, 630-634) und die Entschlüsselungsschaltung (120, 620) zur Verarbeitung der ersten Blockkette reagiert, um die Authentifizierungsdaten davon zu verifizieren, und dass die Authentifizierungsschaltung (125, 625) der CPU (170) entschlüsselte und authentifizierte Programminformationen zur Ausführung durch die CPU (170) bereitstellt.
  2. Gerät gemäß Anspruch 1, wobei: die Blockkette eine einfache Blockkette ist, so dass die Gruppe von Blöcken in der ersten Blockkette parallel zu der Authentifizierungsschaltung (125) verarbeitet wird.
  3. Gerät gemäß Anspruch 2, wobei: die erste Blockkette und eine nachfolgende zweite Blockkette der Programminformationen zwischen der externen Speichervorrichtung (110) und dem mindestens einen Blockpuffer (130-134, 630-634) übertragen werden; und die Authentifizierungsschaltung (125) angepasst ist, um mindestens einen Abschnitt der Programminformationen der ersten Blockkette zu authentifizieren, während mindestens ein Abschnitt der zweiten Blockkette über den ersten Übertragungsweg (113) übertragen wird.
  4. Gerät gemäß Anspruch 2 oder 3, wobei: der erste Übertragungsweg (113) angepasst ist, um Blöcke von Programminformationen von der Speichervorrichtung (110) an den mindestens einen Puffer (130-134, 630-634) in einer zweiten Kette zu übertragen; und die Authentifizierungsschaltung (125, 625) angepasst ist, um die Programminformationen aus mindestens einem Abschnitt der ersten Blockkette und mindestens einem Abschnitt der zweiten Kette gleichzeitig zu authentifizieren.
  5. Gerät gemäß einem der Ansprüche 2 bis 4, das ferner Folgendes beinhaltet: einen Cache-Speicher (140), der in dem zweiten Übertragungsweg angeordnet ist, der angepasst ist, um die authentifizierten Programminformationen vorübergehend zu speichern, bevor der CPU (170) die authentifizierten Programminformationen bereitgestellt werden.
  6. Gerät gemäß einem der vorhergehenden Ansprüche, das ferner Folgendes beinhaltet: Mittel (174), um einen illegalen Betriebscode in den Programminformationen zu erfassen.
  7. Gerät gemäß einem der vorhergehenden Ansprüche, wobei: mindestens ein Teil der Programminformationen gehasht ist, um die Blockkette bereitzustellen.
  8. Gerät gemäß einem der vorhergehenden Ansprüche, das ferner Folgendes beinhaltet: Adressenerzeugungsmittel (160), um der externen Speichervorrichtung (110) Adressierungsinformationen zum Übertragen der Blöcke von Programminformationen von der externen Speichervorrichtung (110) an den mindestens einen Blockpuffer (130-134, 630-634) in einer gewünschten Reihenfolge bereitzustellen.
  9. Gerät gemäß einem der vorhergehenden Ansprüche, wobei die Programminformationen eine Vielzahl von Sequenzen beinhalten, die aufeinanderfolgend durch die CPU (170) verarbeitet werden sollen.
  10. Gerät gemäß einem der vorhergehenden Ansprüche, wobei: die Blöcke von Programminformationen in der externen Speichervorrichtung (110) an verwürfelten Speicherstellen gespeichert sind.
  11. Gerät gemäß einem der vorhergehenden Ansprüche, wobei: Ketten der Programminformationen mit willkürlich variierenden Längen von der externen Speichervorrichtung (110) an mindestens einen Blockpuffer (130-134, 630-634) übertragen werden.
  12. Gerät gemäß Anspruch 11, das ferner Folgendes beinhaltet: Adressenerzeugungsmittel (160), um der externen Speichervorrichtung (110) Adressierungsinformationen zum Übertragen der Blöcke von Programminformationen von der externen Speichervorrichtung (110) an den mindestens einen Blockpuffer (130-134, 630-634) in einer gewünschten Reihenfolge bereitzustellen; wobei: die willkürlich variierenden Längen gemäß den Adressierungsinformationen bestimmt werden.
  13. Gerät gemäß einem der vorhergehenden Ansprüche, das ferner Folgendes beinhaltet: Mittel (164) zum Bereitstellen einer willkürlichen Block-Neuordnung der ersten Blockkette, und willkürlichen Neuordnung eines Blocks der ersten Blockkette zum Übertragen einer neu geordneten Kette von der externen Speichervorrichtung (110) an den mindestens einen Blockpuffer (130-134, 630-634).
  14. Gerät gemäß einem der vorhergehenden Ansprüche, wobei: Einheiten der Programminformationen unter Verwendung von willkürlich variierenden Reihenfolgen von der externen Speichervorrichtung (110) an den mindestens einen Blockpuffer (130-134, 630-634) übertragen werden.
  15. Gerät gemäß Anspruch 14, wobei die Einheiten von Programminformationen Blockketten beinhalten.
  16. Gerät gemäß einem der vorhergehenden Ansprüche, wobei: eine Vielzahl von Programminformationen von der externen Speichervorrichtung (110) an die sichere Schaltung (170) in Einheiten variierender Länge übertragen wird; und die Länge jeder Einheit gemäß einer Verarbeitungslatenz der zugehörigen Programminformationen der entsprechenden Einheiten bestimmt wird.
  17. Gerät gemäß einem der vorhergehenden Ansprüche, wobei: die Programminformationen Leerdaten beinhalten, die nicht durch die CPU (170) verarbeitet werden.
  18. Gerät gemäß einem der vorhergehenden Ansprüche, das ferner Folgendes beinhaltet: einen dritten Übertragungsweg (165), der angepasst ist, um eine Gruppe von Blöcken von Programminformationen von der sicheren Schaltung zu der externen Speichervorrichtung (110) in einer zweiten Blockkette zu übertragen.
  19. Gerät gemäß Anspruch 18, das ferner Folgendes beinhaltet: eine Verschlüsselungsschaltung (120) zum Verschlüsseln der Programminformationen für die zweite Blockkette.
  20. Gerät gemäß Anspruch 19, wobei die Verschlüsselungsschaltung (120) bedingt auf Adressierungsinformationen reagiert, um einen klaren Modus für die Programminformationen für die zweite Blockkette zu ermöglichen.
  21. Gerät gemäß einem der Ansprüche 18 bis 20, das ferner Folgendes beinhaltet: eine Authentifizierungsschaltung (625) zum Authentifizieren der Programminformationen für die zweite Blockkette.
  22. Gerät gemäß Anspruch 21, wobei die Authentifizierungsschaltung bedingt auf Adressierungsinformationen reagiert, um einen klaren Modus für die Programminformationen für die zweite Blockkette zu ermöglichen.
  23. Gerät gemäß einem der Ansprüche 18 bis 22, das ferner Folgendes beinhaltet: eine Schaltung zur Neuordnung (112) zum willkürlich Neuordnen der Programminformationen für die zweite Blockkette.
  24. Gerät gemäß einem der Ansprüche 18 bis 23, das ferner Folgendes beinhaltet: eine Schaltung zum Bestimmen der Länge, um die Länge der Einheiten der Programminformationen für die zweite Blockkette willkürlich zu variieren.
  25. Gerät gemäß einem der Ansprüche 18 bis 24, das ferner Folgendes beinhaltet: eine Schaltung zur Einfügung von Leerdaten zum Hinzufügen von Leerdaten zu den Programminformationen für die zweite Blockkette.
  26. Gerät gemäß einem der vorhergehenden Ansprüche, wobei eine Vielzahl von Ketten von Programminformationen von der externen Speichervorrichtung (110) zu der sicheren Schaltung (105) in einer willkürlich variierenden Reihenfolge übertragen werden.
DE69833594T 1997-10-10 1998-10-06 Gesicherter Prozessor mit externem Speicher unter Verwendung von Block-Chaining und Wiederherstellung der Blockreihenfolge Expired - Fee Related DE69833594T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/949,111 US6061449A (en) 1997-10-10 1997-10-10 Secure processor with external memory using block chaining and block re-ordering
US949111 1997-10-10

Publications (2)

Publication Number Publication Date
DE69833594D1 DE69833594D1 (de) 2006-04-27
DE69833594T2 true DE69833594T2 (de) 2006-12-28

Family

ID=25488612

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69833594T Expired - Fee Related DE69833594T2 (de) 1997-10-10 1998-10-06 Gesicherter Prozessor mit externem Speicher unter Verwendung von Block-Chaining und Wiederherstellung der Blockreihenfolge

Country Status (8)

Country Link
US (1) US6061449A (de)
EP (2) EP1571523A1 (de)
KR (1) KR19990037007A (de)
CN (1) CN1236132A (de)
CA (1) CA2249554A1 (de)
DE (1) DE69833594T2 (de)
IL (1) IL126448A (de)
TW (1) TW445402B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202016101111U1 (de) 2016-03-02 2016-04-07 Omp Telematics Gmbh Vorrichtung zur Verteilung und Ausführung von verschlüsselten Programmen

Families Citing this family (302)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6676127B2 (en) 1997-03-13 2004-01-13 Shuffle Master, Inc. Collating and sorting apparatus
US6385723B1 (en) * 1997-05-15 2002-05-07 Mondex International Limited Key transformation unit for an IC card
JP3567696B2 (ja) * 1997-09-24 2004-09-22 松下電器産業株式会社 ソフトウェアダウンロードシステム
US6655684B2 (en) 1998-04-15 2003-12-02 Shuffle Master, Inc. Device and method for forming and delivering hands from randomly arranged decks of playing cards
US6254096B1 (en) 1998-04-15 2001-07-03 Shuffle Master, Inc. Device and method for continuously shuffling cards
US6957341B2 (en) 1998-05-14 2005-10-18 Purdue Research Foundation Method and system for secure computational outsourcing and disguise
US6941463B1 (en) 1998-05-14 2005-09-06 Purdue Research Foundation Secure computational outsourcing techniques
CN1174347C (zh) * 1998-05-18 2004-11-03 德国捷德有限公司 保护存取的数据载体
US20030118190A1 (en) * 1998-05-29 2003-06-26 Siemens Aktiengesellschaft Method and apparatus for processing data where a part of the current supplied is supplied to an auxiliary circuit
US6523118B1 (en) * 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
JP3925586B2 (ja) * 1998-07-17 2007-06-06 ソニー株式会社 データ受信装置および方法ならびにデータ送受信システムおよび方法
DE19837808A1 (de) * 1998-08-20 2000-02-24 Orga Kartensysteme Gmbh Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
JP2000132404A (ja) * 1998-10-22 2000-05-12 Matsushita Electric Ind Co Ltd 命令列最適化装置
JP2000181796A (ja) * 1998-12-14 2000-06-30 Nec Corp 情報処理装置
US6195732B1 (en) * 1999-01-22 2001-02-27 Quantum Corp. Storage device capacity management
EP2312791B1 (de) * 1999-01-29 2017-11-01 Google Technology Holdings LLC Schlüsselverwaltung für telefonanrufe zum schutz von signalisierungs- und anrufspaketen zwischen cta's
JP2000250817A (ja) * 1999-03-02 2000-09-14 Tokyo Electron Ltd 記憶システム、記憶装置及び記憶データ保護方法
US7549056B2 (en) 1999-03-19 2009-06-16 Broadcom Corporation System and method for processing and protecting content
US7415110B1 (en) 1999-03-24 2008-08-19 Intel Corporation Method and apparatus for the generation of cryptographic keys
US6701432B1 (en) * 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6618789B1 (en) * 1999-04-07 2003-09-09 Sony Corporation Security memory card compatible with secure and non-secure data processing systems
US7370348B1 (en) * 1999-07-30 2008-05-06 Intel Corporation Technique and apparatus for processing cryptographic services of data in a network system
ES2235895T3 (es) * 1999-08-04 2005-07-16 Nagravision Sa Metodo y dispositivo para controlar la integridad y la autenticidad de un conjunto de datos.
JP4710211B2 (ja) * 1999-08-20 2011-06-29 ソニー株式会社 情報記録装置、情報再生装置、情報記録再生装置、情報記録方法、情報再生方法、情報記録再生方法並びに記録媒体
US7068786B1 (en) 1999-08-29 2006-06-27 Intel Corporation Dual use block/stream cipher
US6731758B1 (en) * 1999-08-29 2004-05-04 Intel Corporation Digital video content transmission ciphering and deciphering method and apparatus
US6947558B1 (en) 1999-08-29 2005-09-20 Intel Corporation Stream cipher having a shuffle network combiner function
US6477252B1 (en) * 1999-08-29 2002-11-05 Intel Corporation Digital video content transmission ciphering and deciphering method and apparatus
US6920221B1 (en) 1999-08-29 2005-07-19 Intel Corporation Method and apparatus for protected exchange of status and secret values between a video source application and a video hardware interface
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
US7287166B1 (en) 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
FR2802669B1 (fr) * 1999-12-15 2002-02-08 St Microelectronics Sa Procede non deterministe de transfert securise de donnees
US20070288765A1 (en) * 1999-12-22 2007-12-13 Kean Thomas A Method and Apparatus for Secure Configuration of a Field Programmable Gate Array
GB9930145D0 (en) * 1999-12-22 2000-02-09 Kean Thomas A Method and apparatus for secure configuration of a field programmable gate array
DE60143133D1 (de) * 2000-01-14 2010-11-04 Panasonic Corp System und Methode zur gegenseitigen Authentifizierung, die dabei die Informationen zum Zugriff auf vertrauliche Datenbereiche verschlüsselt
US6701528B1 (en) * 2000-01-26 2004-03-02 Hughes Electronics Corporation Virtual video on demand using multiple encrypted video segments
US7240218B2 (en) * 2000-02-08 2007-07-03 Algotronix, Ltd. Method of using a mask programmed key to securely configure a field programmable gate array
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
AU2001239780A1 (en) * 2000-02-17 2001-08-27 Minds@Work Video content distribution system including an interactive kiosk, a portable content storage device, and a set-top box
US6853727B1 (en) 2000-03-23 2005-02-08 International Business Machines Corporation File table copy protection for a storage device when storing streaming content
US7054443B1 (en) * 2000-03-27 2006-05-30 Microsoft Corporation System and method for protecting digital goods using random and automatic code obfuscation
US6816843B1 (en) * 2000-04-06 2004-11-09 Daniel G. Baughman Method and apparatus for conducting purchases in private over a network
US6609226B1 (en) 2000-04-10 2003-08-19 Nortel Networks Limited Networking device and method for making cyclic redundancy check (CRC) immune to scrambler error duplication
US8590896B2 (en) 2000-04-12 2013-11-26 Shuffle Master Gmbh & Co Kg Card-handling devices and systems
CA2305078A1 (en) * 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
US7000119B1 (en) 2000-04-20 2006-02-14 Realnetworks, Inc. Instruction/data protection employing derived obscuring instruction/data
US7003107B2 (en) 2000-05-23 2006-02-21 Mainstream Encryption Hybrid stream cipher
TWI239447B (en) 2000-06-02 2005-09-11 Koninkl Philips Electronics Nv Recordable storage medium with protected data area
JP2003536110A (ja) * 2000-06-16 2003-12-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ウォーターマーク検出器
FR2810481B1 (fr) * 2000-06-20 2003-04-04 Gemplus Card Int Controle d'acces a un moyen de traitement de donnees
FR2810425A1 (fr) * 2000-06-20 2001-12-21 Groupe Ecoles Telecomm Microprocesseur securise
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
JP4337244B2 (ja) * 2000-07-25 2009-09-30 ソニー株式会社 Mpeg画像ストリームのデコード装置およびデコード方法
JP2002049310A (ja) * 2000-08-04 2002-02-15 Toshiba Corp 暗復号装置、認証装置及び記憶媒体
US20020016917A1 (en) * 2000-08-04 2002-02-07 Tomohiko Kitamura System integrated circuit
KR100346411B1 (ko) * 2000-08-26 2002-08-01 조인구 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체
JP2002082732A (ja) * 2000-09-06 2002-03-22 Nec Corp プログラムコードの不正改竄防止システム及びその方法並びにその制御プログラムを記録した記録媒体
US8281155B1 (en) * 2000-11-02 2012-10-02 Intel Corporation Content protection using block reordering
US7861272B2 (en) 2000-11-14 2010-12-28 Russ Samuel H Networked subscriber television distribution
US8127326B2 (en) 2000-11-14 2012-02-28 Claussen Paul J Proximity detection using wireless connectivity in a communications system
WO2002060150A2 (en) * 2001-01-24 2002-08-01 Broadcom Corporation Method for processing multiple security policies applied to a data packet structure
IL142487A0 (en) * 2001-04-05 2003-09-17 Hexalock Ltd Method and system for protecting data
PT1305708E (pt) 2001-05-11 2003-10-31 Sospita As Mecanismo de numeracao de sequencia para assegurar a integridade da ordem de execucao de aplicacoes de placas inteligentes interdependentes
US20060291650A1 (en) * 2001-05-22 2006-12-28 Viswanath Ananth State-varying hybrid stream cipher
US6950937B2 (en) * 2001-05-30 2005-09-27 Lucent Technologies Inc. Secure distributed computation in cryptographic applications
US20020188856A1 (en) * 2001-06-11 2002-12-12 Brian Worby Storage device with cryptographic capabilities
US20030001978A1 (en) * 2001-06-12 2003-01-02 Xsides Corporation Method and system for enhancing display functionality in a set-top box environment
GB0114317D0 (en) * 2001-06-13 2001-08-01 Kean Thomas A Method of protecting intellectual property cores on field programmable gate array
US7127618B2 (en) * 2001-06-28 2006-10-24 Koninklijke Philips Electronics N.V. Data protection via reversible data damage
US7251326B2 (en) * 2001-06-29 2007-07-31 Harris Corporation Method and apparatus for data encryption
US7925894B2 (en) * 2001-07-25 2011-04-12 Seagate Technology Llc System and method for delivering versatile security, digital rights management, and privacy services
US20060174352A1 (en) * 2001-07-25 2006-08-03 Seagate Technology Llc Method and apparatus for providing versatile services on storage devices
US6996725B2 (en) 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors
US6901354B2 (en) * 2001-09-27 2005-05-31 Intel Corporation Method and apparatus for command perception by data value sequencing, allowing finite amount of unrelated interim data
US6918037B2 (en) * 2001-09-27 2005-07-12 Intel Corporation Method and apparatus for command perception by data value sequencing, allowing a bounded total amount of spurious data
US8011661B2 (en) 2001-09-28 2011-09-06 Shuffle Master, Inc. Shuffler with shuffling completion indicator
US7753373B2 (en) 2001-09-28 2010-07-13 Shuffle Master, Inc. Multiple mode card shuffler and card reading device
GB0123419D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Data handling system
US8616552B2 (en) 2001-09-28 2013-12-31 Shfl Entertainment, Inc. Methods and apparatuses for an automatic card handling device and communication networks including same
US8337296B2 (en) 2001-09-28 2012-12-25 SHFL entertaiment, Inc. Method and apparatus for using upstream communication in a card shuffler
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US8038521B2 (en) 2001-09-28 2011-10-18 Shuffle Master, Inc. Card shuffling apparatus with automatic card size calibration during shuffling
US7677565B2 (en) 2001-09-28 2010-03-16 Shuffle Master, Inc Card shuffler with card rank and value reading capability
EP1440535B1 (de) * 2001-10-03 2011-01-05 Nxp B.V. Verfahren und System zur Speicherverschlüsselung
FR2832574B1 (fr) * 2001-11-19 2004-02-27 Cyber Comm Appareil de certification, procede et dispositif pour authentifier une origine de message
US20030120938A1 (en) * 2001-11-27 2003-06-26 Miki Mullor Method of securing software against reverse engineering
KR100445406B1 (ko) * 2001-11-30 2004-08-25 주식회사 하이닉스반도체 데이터 암호화 장치 및 그 방법
GB0129065D0 (en) * 2001-12-05 2002-01-23 Philips Electronics Uk Ltd Method and apparatus for verifying the integrity of system data
US7117535B1 (en) * 2001-12-14 2006-10-03 Microsoft Corporation Software-generated machine identifier
FR2834174A1 (fr) * 2001-12-20 2003-06-27 Koninkl Philips Electronics Nv Detection optimisee d'un marquage au sein d'un signal d'information
TW573259B (en) * 2001-12-28 2004-01-21 Admtek Inc LIFM algorithm for security association database lookup in IPSec application
FR2834361B1 (fr) * 2001-12-28 2004-02-27 Bull Sa Module de securisation de donnees par chiffrement/dechiffrement et/ou signature/verification de signature
DE10200288A1 (de) * 2002-01-07 2003-07-17 Scm Microsystems Gmbh Eine Vorrichtung zur Ausführung von Anwendungen, die sichere Transaktionen und/oder Zugangskontrolle zu werthaltigen Inhalten und/oder Dienstleistungen umfassen, und Verfahren zum Schutz einer solchen Vorrichtung
US6886829B2 (en) 2002-02-08 2005-05-03 Vendingdata Corporation Image capturing card shuffler
US7606364B1 (en) 2002-04-23 2009-10-20 Seagate Technology Llc Disk drive with flexible data stream encryption
WO2004013744A2 (en) * 2002-08-01 2004-02-12 Matsushita Electric Industrial Co., Ltd. Apparatuses and methods for decrypting encrypted blocks of data and locating the decrypted blocks of data in memory space used for execution
US7516470B2 (en) 2002-08-02 2009-04-07 Cisco Technology, Inc. Locally-updated interactive program guide
US7908625B2 (en) 2002-10-02 2011-03-15 Robertson Neil C Networked multimedia system
US8046806B2 (en) 2002-10-04 2011-10-25 Wall William E Multiroom point of deployment module
US7545935B2 (en) * 2002-10-04 2009-06-09 Scientific-Atlanta, Inc. Networked multimedia overlay system
US7360235B2 (en) 2002-10-04 2008-04-15 Scientific-Atlanta, Inc. Systems and methods for operating a peripheral record/playback device in a networked multimedia system
DE10256587A1 (de) * 2002-12-04 2004-06-17 Philips Intellectual Property & Standards Gmbh Datenverarbeitungseinrichtung, insbesondere elektronisches Speicherbauteil, und hierauf bezogenes Verschlüsselungsverfahren
US8094640B2 (en) 2003-01-15 2012-01-10 Robertson Neil C Full duplex wideband communications system for a local coaxial network
US7487532B2 (en) 2003-01-15 2009-02-03 Cisco Technology, Inc. Optimization of a full duplex wideband communications system
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
JP4043388B2 (ja) * 2003-03-20 2008-02-06 ソニー株式会社 再生装置および再生方法
FR2853098B1 (fr) * 2003-03-24 2005-07-01 Innova Card Circuit pourvu d'un acces externe securise
US8510571B1 (en) 2003-03-24 2013-08-13 Hoi Chang System and method for inserting security mechanisms into a software program
FR2853097B1 (fr) * 2003-03-24 2005-07-15 Innova Card Circuit programmable pourvu d'une memoire securisee
US7809680B2 (en) * 2003-03-27 2010-10-05 Panasonic Corporation Contents distribution system with integrated recording rights control
US20110081130A1 (en) * 2003-06-20 2011-04-07 ZOO Digital Limited, a Limited Company Obscuring data in an audiovisual product
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
EP1494460A1 (de) * 2003-07-02 2005-01-05 THOMSON Licensing S.A. Verfahren oder Vorrichtung zur Authentifizierung digitaler Daten mittels eines Authentifizierungs-Plugins
TWI222598B (en) * 2003-07-09 2004-10-21 Sunplus Technology Co Ltd Device and method protecting data by scrambling address lines
TWI288348B (en) * 2003-07-09 2007-10-11 Sunplus Technology Co Ltd Processor using data block scrambling for data protection and method thereof
JP4404190B2 (ja) * 2003-07-24 2010-01-27 ソニー株式会社 電子機器、認証使用情報更新方法
DE10340861A1 (de) * 2003-09-04 2005-04-07 Infineon Technologies Ag Prozessorschaltung und Verfahren zum Zuordnen eines Logikchips zu einem Speicherchip
US20050094551A1 (en) * 2003-09-25 2005-05-05 Broadcom Corporation Processor instruction for DMT encoding
US7305608B2 (en) * 2003-09-25 2007-12-04 Broadcom Corporation DSL trellis encoding
US20050071656A1 (en) * 2003-09-25 2005-03-31 Klein Dean A. Secure processor-based system and method
US7903810B2 (en) * 2003-09-26 2011-03-08 Broadcom Corporation Single instruction for data scrambling
US7734041B2 (en) * 2003-09-26 2010-06-08 Broadcom Corporation System and method for de-scrambling and bit-order-reversing payload bytes in an Asynchronous Transfer Mode cell
US7756273B2 (en) * 2003-09-26 2010-07-13 Broadcom Corporation System and method for bit-reversing and scrambling payload bytes in an asynchronous transfer mode cell
US7751557B2 (en) * 2003-09-26 2010-07-06 Broadcom Corporation Data de-scrambler
US7681046B1 (en) 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7580412B2 (en) * 2003-09-26 2009-08-25 Broadcom Corporation System and method for generating header error control byte for Asynchronous Transfer Mode cell
US7933950B1 (en) * 2003-10-02 2011-04-26 Tivo Inc. Secure control of features of a digital device
FR2861234A1 (fr) * 2003-10-17 2005-04-22 St Microelectronics Sa Chiffrement de donnees dans un appareil electronique a plusieurs processeurs symetriques
US7631292B2 (en) * 2003-11-05 2009-12-08 Microsoft Corporation Code individualism and execution protection
US7694151B1 (en) * 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
FR2863076B1 (fr) * 2003-11-28 2006-02-03 Bull Sa Systeme cryptographique haut debit a architecture modulaire.
US7818572B2 (en) * 2003-12-09 2010-10-19 Dominic Kotab Security system and method
US7543142B2 (en) * 2003-12-19 2009-06-02 Intel Corporation Method and apparatus for performing an authentication after cipher operation in a network processor
US7512945B2 (en) 2003-12-29 2009-03-31 Intel Corporation Method and apparatus for scheduling the processing of commands for execution by cryptographic algorithm cores in a programmable network processor
US20050149744A1 (en) * 2003-12-29 2005-07-07 Intel Corporation Network processor having cryptographic processing including an authentication buffer
US7529924B2 (en) * 2003-12-30 2009-05-05 Intel Corporation Method and apparatus for aligning ciphered data
KR100604828B1 (ko) * 2004-01-09 2006-07-28 삼성전자주식회사 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치
US20050177504A1 (en) * 2004-02-10 2005-08-11 Bottomline Technologies (De) Inc. System and method for remotely authorizing a payment transaction file over an open network
US7236957B2 (en) * 2004-02-10 2007-06-26 Bottomline Technologies (De) Inc. Method for remotely authorizing a payment transaction file over an open network
JP4294514B2 (ja) * 2004-03-05 2009-07-15 シャープ株式会社 半導体装置および電子装置
JP4701166B2 (ja) * 2004-04-26 2011-06-15 パナソニック株式会社 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム
US20060143454A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Storage of multiple keys in memory
ATE407494T1 (de) * 2004-07-06 2008-09-15 Proton World Int Nv Stromverschlüsselung des inhalts eines speichers, welcher ausserhalb eines prozessors angeordnet ist
EP1615369A1 (de) * 2004-07-06 2006-01-11 Proton World International N.V. Blockverschlüsselung des Inhalts eines ausserhalb eines Prozessors angeordneten Speichers
US7890992B2 (en) 2004-08-19 2011-02-15 Cisco Technology, Inc. Method and apparatus for selection of authentication servers based on the authentication mechanisms in supplicant attempts to access network resources
US7653802B2 (en) 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US7734926B2 (en) 2004-08-27 2010-06-08 Microsoft Corporation System and method for applying security to memory reads and writes
US7822993B2 (en) 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US7444523B2 (en) 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US20060047955A1 (en) * 2004-08-30 2006-03-02 Axalto Inc. Application code integrity check during virtual machine runtime
US20060059369A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Circuit chip for cryptographic processing having a secure interface to an external memory
US7818574B2 (en) 2004-09-10 2010-10-19 International Business Machines Corporation System and method for providing dynamically authorized access to functionality present on an integrated circuit chip
US20060066048A1 (en) 2004-09-14 2006-03-30 Shuffle Master, Inc. Magnetic jam detection in a card shuffler
US7418100B2 (en) * 2004-10-20 2008-08-26 Cisco Technology, Inc. Enciphering method
JP2008530663A (ja) * 2005-02-11 2008-08-07 ユニバーサル データ プロテクション コーポレーション マイクロプロセッサのデータセキュリティの方法およびシステム
US20060218581A1 (en) * 2005-03-01 2006-09-28 Barbara Ostrowska Interactive network guide with parental monitoring
JP2006279644A (ja) * 2005-03-30 2006-10-12 Fujitsu Ltd 暗号化システム、暗号化装置、復号化装置、暗号化・復号化方法、暗号化方法および復号化方法
WO2006115217A1 (ja) * 2005-04-21 2006-11-02 Matsushita Electric Industrial Co., Ltd. プログラム変換装置及び秘密保持プログラム
US7433980B1 (en) * 2005-04-21 2008-10-07 Xilinx, Inc. Memory of and circuit for rearranging the order of data in a memory having asymmetric input and output ports
EP1717723A1 (de) * 2005-04-29 2006-11-02 ST Incard S.r.l. Verbesserte virtuelle Maschine oder Hardware-Prozessor für tragbare elektronische Einrichtungen mit einer Chipkarte
US7764836B2 (en) 2005-06-13 2010-07-27 Shuffle Master, Inc. Card shuffler with card rank and value reading capability using CMOS sensor
US20070022288A1 (en) * 2005-07-05 2007-01-25 Stmicroelectronics S.A. Checking of a digital quantity stored in a memory area
WO2007028241A2 (en) * 2005-09-07 2007-03-15 Universal Data Protection Corporation Method and system for data security of recording media
US8468361B2 (en) * 2005-09-21 2013-06-18 Broadcom Corporation System and method for securely provisioning and generating one-time-passwords in a remote device
US7876998B2 (en) 2005-10-05 2011-01-25 Wall William E DVD playback over multi-room by copying to HDD
US20080031451A1 (en) * 2005-11-14 2008-02-07 Jean-Francois Poirier Method and system for security of data transmissions
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
US7556266B2 (en) 2006-03-24 2009-07-07 Shuffle Master Gmbh & Co Kg Card shuffler with gravity feed system for playing cards
JP4767057B2 (ja) * 2006-03-27 2011-09-07 富士通株式会社 ハッシュ値生成プログラム、ストレージ管理プログラム、判定プログラム及びデータ変更検証装置
US8429724B2 (en) * 2006-04-25 2013-04-23 Seagate Technology Llc Versatile access control system
US7539890B2 (en) * 2006-04-25 2009-05-26 Seagate Technology Llc Hybrid computer security clock
US8028166B2 (en) * 2006-04-25 2011-09-27 Seagate Technology Llc Versatile secure and non-secure messaging
US8353513B2 (en) 2006-05-31 2013-01-15 Shfl Entertainment, Inc. Card weight for gravity feed input for playing card shuffler
US8342525B2 (en) 2006-07-05 2013-01-01 Shfl Entertainment, Inc. Card shuffler with adjacent card infeed and card output compartments
US8579289B2 (en) 2006-05-31 2013-11-12 Shfl Entertainment, Inc. Automatic system and methods for accurate card handling
DE102007026977B4 (de) * 2006-06-07 2012-03-08 Samsung Electronics Co., Ltd. Kryptographisches System und zugehöriges Betriebsverfahren und Computerprogrammprodukt
KR100837270B1 (ko) * 2006-06-07 2008-06-11 삼성전자주식회사 스마트 카드 및 그것의 데이터 보안 방법
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US8070574B2 (en) 2007-06-06 2011-12-06 Shuffle Master, Inc. Apparatus, system, method, and computer-readable medium for casino card handling with multiple hand recall feature
US9225761B2 (en) * 2006-08-04 2015-12-29 The Directv Group, Inc. Distributed media-aggregation systems and methods to operate the same
US9178693B2 (en) * 2006-08-04 2015-11-03 The Directv Group, Inc. Distributed media-protection systems and methods to operate the same
US8301890B2 (en) * 2006-08-10 2012-10-30 Inside Secure Software execution randomization
US7613907B2 (en) * 2006-08-11 2009-11-03 Atmel Corporation Embedded software camouflage against code reverse engineering
US7984301B2 (en) * 2006-08-17 2011-07-19 Inside Contactless S.A. Bi-processor architecture for secure systems
US7554865B2 (en) * 2006-09-21 2009-06-30 Atmel Corporation Randomizing current consumption in memory devices
US8001607B2 (en) * 2006-09-27 2011-08-16 Direct Computer Resources, Inc. System and method for obfuscation of data across an enterprise
US7870395B2 (en) 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US8919775B2 (en) 2006-11-10 2014-12-30 Bally Gaming, Inc. System for billing usage of an automatic card handling device
US7724918B2 (en) * 2006-11-22 2010-05-25 International Business Machines Corporation Data obfuscation of text data using entity detection and replacement
FR2909466A1 (fr) * 2006-12-05 2008-06-06 Logiways France Sa Procede et dispositif de memorisation securisee de donnees dans une memoire permanente de type a adressage par blocs
US7890559B2 (en) 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
US7953221B2 (en) * 2006-12-28 2011-05-31 Intel Corporation Method for processing multiple operations
US7925009B2 (en) * 2007-05-25 2011-04-12 Red Hat, Inc. Hybrid data encryption
US8189769B2 (en) * 2007-07-31 2012-05-29 Apple Inc. Systems and methods for encrypting data
US8781117B2 (en) * 2007-08-29 2014-07-15 Red Hat, Inc. Generating pseudo random bits from polynomials
US8265272B2 (en) * 2007-08-29 2012-09-11 Red Hat, Inc. Method and an apparatus to generate pseudo random bits for a cryptographic key
WO2009101483A1 (en) * 2008-02-15 2009-08-20 Freescale Semiconductor, Inc. Semiconductor device and method for storing data
US8416947B2 (en) 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
US7945049B2 (en) * 2008-02-28 2011-05-17 Red Hat, Inc. Stream cipher using multiplication over a finite field of even characteristic
US8560587B2 (en) * 2008-05-22 2013-10-15 Red Hat, Inc. Non-linear mixing of pseudo-random number generator output
US8588412B2 (en) 2008-05-23 2013-11-19 Red Hat, Inc. Mechanism for generating pseudorandom number sequences
US8675868B1 (en) 2008-07-01 2014-03-18 Maxim Integrated Products, Inc. Encrypting an address-dependent value along with code to prevent execution or use of moved code
US8615492B1 (en) * 2008-07-29 2013-12-24 Symantec Corporation Techniques for providing multiplexed data for backup
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8358781B2 (en) * 2008-11-30 2013-01-22 Red Hat, Inc. Nonlinear feedback mode for block ciphers
EP2196937A1 (de) * 2008-12-15 2010-06-16 Thomson Licensing Verfahren und Vorrichtungen zur Softwareverschlüsselung auf Befehlsebene
US8364601B2 (en) * 2008-12-31 2013-01-29 Intel Corporation Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
US8195932B2 (en) * 2009-01-30 2012-06-05 Texas Instruments Incorporated Authentication and encryption for secure data transmission
JP5541277B2 (ja) * 2009-03-23 2014-07-09 富士通株式会社 データ処理装置及びデータ処理方法
US8967621B2 (en) 2009-04-07 2015-03-03 Bally Gaming, Inc. Card shuffling apparatuses and related methods
US7988152B2 (en) 2009-04-07 2011-08-02 Shuffle Master, Inc. Playing card shuffler
US8356184B1 (en) 2009-06-25 2013-01-15 Western Digital Technologies, Inc. Data storage device comprising a secure processor for maintaining plaintext access to an LBA table
ES2390796T3 (es) * 2009-07-27 2012-11-16 Nagravision S.A. Método de implementación de un procesador para garantizar la integridad de un software
US8577024B2 (en) * 2009-07-28 2013-11-05 Vixs Systems, Inc Concealing plain text in scrambled blocks
ES2660541T3 (es) * 2009-09-30 2018-03-22 Amazon Technologies, Inc. Marco de autenticación de dispositivo modular
US8526605B2 (en) * 2009-10-09 2013-09-03 Seagate Technology Llc Data encryption to provide data security and memory cell bit wear leveling
CN102959556B (zh) * 2010-07-22 2015-12-16 纳格拉影像股份有限公司 用于确保软件完整性的处理器实现的方法
US8800993B2 (en) 2010-10-14 2014-08-12 Shuffle Master Gmbh & Co Kg Card handling systems, devices for use in card handling systems and related methods
CN102541762A (zh) * 2010-12-27 2012-07-04 北京国睿中数科技股份有限公司 用于外部存储器的数据保护器和数据保护方法
US8665311B2 (en) * 2011-02-17 2014-03-04 Vbrick Systems, Inc. Methods and apparatus for collaboration
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
US8485527B2 (en) 2011-07-29 2013-07-16 Savant Shuffler LLC Card shuffler
US9731190B2 (en) 2011-07-29 2017-08-15 Bally Gaming, Inc. Method and apparatus for shuffling and handling cards
US20130061298A1 (en) * 2011-09-01 2013-03-07 International Business Machines Corporation Authenticating session passwords
US9305142B1 (en) 2011-12-19 2016-04-05 Western Digital Technologies, Inc. Buffer memory protection unit
EP2626804B1 (de) * 2012-02-09 2017-09-13 Inside Secure Verfahren zur Verwaltung von Speicherplatz in einem sicheren nichtflüchtigen Speicher eines Sicherheitsmoduls
US9141809B2 (en) * 2012-07-23 2015-09-22 Qualcomm Incorporated Method and apparatus for deterring a timing-based glitch attack during a secure boot process
US8960674B2 (en) 2012-07-27 2015-02-24 Bally Gaming, Inc. Batch card shuffling apparatuses including multi-card storage compartments, and related methods
US9355277B2 (en) * 2012-08-31 2016-05-31 Ncr Corporation Installable secret functions for a peripheral
US9511274B2 (en) 2012-09-28 2016-12-06 Bally Gaming Inc. Methods for automatically generating a card deck library and master images for a deck of cards, and a related card processing apparatus
US9378766B2 (en) 2012-09-28 2016-06-28 Bally Gaming, Inc. Card recognition system, card handling device, and method for tuning a card handling device
US20140192974A1 (en) * 2012-10-17 2014-07-10 Elliptic Technologies Inc. System and method for cryptographic processing in a time window
US9262639B2 (en) * 2013-01-09 2016-02-16 Cisco Technology Inc. Plaintext injection attack protection
TWI498737B (zh) * 2013-03-29 2015-09-01 Mstar Semiconductor Inc 用於主機板控制模組之除錯權限判斷方法及相關主機板控制模組
US9215067B2 (en) 2013-04-05 2015-12-15 International Business Machines Corporation Achieving storage efficiency in presence of end-to-end encryption using downstream decrypters
EP3120589B1 (de) * 2014-03-21 2017-08-09 Telefonaktiebolaget LM Ericsson (publ) Adressierung zur kommunikation von vorrichtung zu vorrichtung
KR20160144440A (ko) 2014-04-11 2016-12-16 발리 게이밍, 인코포레이티드 카드를 셔플링 및 처리하는 방법 및 장치
US9474957B2 (en) 2014-05-15 2016-10-25 Bally Gaming, Inc. Playing card handling devices, systems, and methods for verifying sets of cards
US9566501B2 (en) 2014-08-01 2017-02-14 Bally Gaming, Inc. Hand-forming card shuffling apparatuses including multi-card storage compartments, and related methods
USD764599S1 (en) 2014-08-01 2016-08-23 Bally Gaming, Inc. Card shuffler device
US9504905B2 (en) 2014-09-19 2016-11-29 Bally Gaming, Inc. Card shuffling device and calibration method
CN105721154B (zh) * 2014-12-05 2020-02-18 航天信息股份有限公司 一种基于Android平台通讯接口的加密保护方法
US10747907B2 (en) * 2014-12-16 2020-08-18 Cryptography Research, Inc. Buffer access for side-channel attack resistance
DE102015201430A1 (de) 2015-01-28 2016-07-28 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Intrinsische Authentifizierung von Programcode
US10558996B2 (en) * 2015-06-09 2020-02-11 Fidelity National Information Services, Llc Methods and systems for regulating operation of units using encryption techniques associated with a blockchain
US9993719B2 (en) 2015-12-04 2018-06-12 Shuffle Master Gmbh & Co Kg Card handling devices and related assemblies and components
SG10202011641RA (en) 2016-02-23 2021-01-28 Nchain Holdings Ltd Tokenisation method and system for implementing exchanges on a blockchain
SG11201805472RA (en) 2016-02-23 2018-07-30 Nchain Holdings Ltd Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys
AU2017223129A1 (en) 2016-02-23 2018-07-12 nChain Holdings Limited Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
EP3420668B1 (de) 2016-02-23 2023-08-23 nChain Licensing AG Verfahren und system zur effizienten übertragung einer kryptowährung in verbindung mit einer gehaltsabrechnung auf einer blockkette, die zu einem automatisierten gehaltsabrechnungsverfahren und -system auf der basis von intelligenten verträgen führt
CA3227439A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
KR101999188B1 (ko) 2016-02-23 2019-07-11 엔체인 홀딩스 리미티드 비밀 공유를 위한 타원 곡선 암호를 사용하는 개인용 장치 보안
GB2561727A (en) 2016-02-23 2018-10-24 Nchain Holdings Ltd Blockchain-based exchange with tokenisation
EP3754901A1 (de) 2016-02-23 2020-12-23 Nchain Holdings Limited Blockchain-implementiertes zählsystem und verfahren zur verwendung bei der sicheren stimmabgabe und verteilung
CN113595726A (zh) 2016-02-23 2021-11-02 区块链控股有限公司 用于控制和分发数字内容的区块链实现的方法
EP3860037A1 (de) 2016-02-23 2021-08-04 Nchain Holdings Limited Kryptographisches verfahren und system zur sicheren extraktion von daten aus einer blockchain
EP3420517B1 (de) 2016-02-23 2022-07-06 nChain Holdings Limited Verfahren und system zum sicheren transfer von entitäten auf einer blockchain
SG10202011640TA (en) 2016-02-23 2021-01-28 Nchain Holdings Ltd System and method for controlling asset-related actions via a blockchain
KR20180114942A (ko) 2016-02-23 2018-10-19 엔체인 홀딩스 리미티드 분산형 해시 테이블 및 블록체인을 사용하여 컴퓨터 소프트웨어를 보호하기 위한 방법 및 시스템
CA3013182A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
WO2018046008A1 (zh) * 2016-09-12 2018-03-15 上海鼎利信息科技有限公司 一种区块链加密射频芯片存储设计方法
US10339765B2 (en) 2016-09-26 2019-07-02 Shuffle Master Gmbh & Co Kg Devices, systems, and related methods for real-time monitoring and display of related data for casino gaming devices
US10933300B2 (en) 2016-09-26 2021-03-02 Shuffle Master Gmbh & Co Kg Card handling devices and related assemblies and components
US11146535B2 (en) 2016-10-12 2021-10-12 Bank Of America Corporation System for managing a virtual private ledger and distributing workflow of authenticated transactions within a blockchain distributed network
US10361853B2 (en) 2016-10-12 2019-07-23 Bank Of America Corporation Automated data authentication and service authorization via cryptographic keys in a private blockchain
CN108073353B (zh) * 2016-11-15 2020-04-14 华为技术有限公司 一种数据处理的方法及装置
US10158611B2 (en) 2016-11-17 2018-12-18 Bank Of America Corporation System for multiplexing and demultiplexing blockchain ledgers via a cryptographic hash
US10257206B2 (en) 2016-12-21 2019-04-09 International Business Machines Corporation Monitoring actions performed by a network of peer devices using a blockchain
DE102017000167A1 (de) 2017-01-11 2018-07-12 Giesecke+Devrient Mobile Security Gmbh Anonymisierung einer Blockkette
US10679210B2 (en) 2017-06-26 2020-06-09 International Business Machines Corporation Blockchain transaction commitment ordering
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
EP3457623B1 (de) * 2017-09-15 2024-03-06 Panasonic Intellectual Property Corporation of America Elektronisches wahlsystem
US10818121B2 (en) * 2017-09-15 2020-10-27 Panasonic Intellectual Property Corporation Of America Electronic voting system and control method
JP7064947B2 (ja) * 2017-09-15 2022-05-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 電子投票システム、及び、制御方法
US10818122B2 (en) 2017-09-15 2020-10-27 Panasonic Intellectual Property Corporation Of America Electronic voting system and control method
JP7064950B2 (ja) * 2017-09-15 2022-05-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 電子投票システム、及び、制御方法
EP3457622B1 (de) * 2017-09-15 2024-03-06 Panasonic Intellectual Property Corporation of America Elektronisches wahlsystem
EP3518188A1 (de) * 2018-01-29 2019-07-31 Accenture Global Solutions Limited Blockkettenbasierte anonymisierte kryptologische abstimmung
US10445965B2 (en) 2018-01-29 2019-10-15 Accenture Global Solutions Limited Blockchain-based cryptologic ballot organization
US20190278930A1 (en) * 2018-03-08 2019-09-12 FHOOSH, Inc. Integrated circuits for secure data storage and retrieval
US10404454B1 (en) * 2018-04-25 2019-09-03 Blockchain Asics Llc Cryptographic ASIC for derivative key hierarchy
GB201807612D0 (en) 2018-05-10 2018-06-27 Rolls Royce Plc Structured file encryption process
US11017128B2 (en) 2018-05-22 2021-05-25 Seagate Technology Llc Data security using bit transposition during memory accesses
US10585779B2 (en) * 2018-07-30 2020-03-10 General Electric Company Systems and methods of requirements chaining and applications thereof
US11113422B2 (en) * 2018-08-03 2021-09-07 Micron Technology, Inc. Data protection in computer processors
US11896891B2 (en) 2018-09-14 2024-02-13 Sg Gaming, Inc. Card-handling devices and related methods, assemblies, and components
US11376489B2 (en) 2018-09-14 2022-07-05 Sg Gaming, Inc. Card-handling devices and related methods, assemblies, and components
US11338194B2 (en) 2018-09-28 2022-05-24 Sg Gaming, Inc. Automatic card shufflers and related methods of automatic jam recovery
US11100254B2 (en) * 2018-12-05 2021-08-24 Micron Technology, Inc. Processors with security levels adjustable per applications
CN110046482A (zh) * 2018-12-25 2019-07-23 阿里巴巴集团控股有限公司 身份核实方法及其系统
WO2020144027A1 (en) * 2019-01-09 2020-07-16 British Telecommunications Public Limited Company Variable data protection
US11347860B2 (en) 2019-06-28 2022-05-31 Seagate Technology Llc Randomizing firmware loaded to a processor memory
PH12020050309A1 (en) 2019-09-10 2021-03-22 Shuffle Master Gmbh And Co Kg Card-handling devices with defect detection and related methods
US11173383B2 (en) 2019-10-07 2021-11-16 Sg Gaming, Inc. Card-handling devices and related methods, assemblies, and components
US11532040B2 (en) 2019-11-12 2022-12-20 Bottomline Technologies Sarl International cash management software using machine learning
US11526859B1 (en) 2019-11-12 2022-12-13 Bottomline Technologies, Sarl Cash flow forecasting using a bottoms-up machine learning approach
CN111415259B (zh) * 2020-03-26 2024-02-06 杭州复杂美科技有限公司 交易排队方法、设备和存储介质
US11704671B2 (en) 2020-04-02 2023-07-18 Bottomline Technologies Limited Financial messaging transformation-as-a-service
CN112069091B (zh) * 2020-08-17 2023-09-01 北京科技大学 一种应用于分子动力学模拟软件的访存优化方法及装置
JP2024513716A (ja) * 2021-04-02 2024-03-27 グーグル エルエルシー 読み取り専用メモリ(rom)のセキュリティ
CN113596042A (zh) * 2021-08-03 2021-11-02 拉卡拉汇积天下技术服务(北京)有限公司 信息投递方法、装置、系统、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4074066A (en) * 1976-04-26 1978-02-14 International Business Machines Corporation Message verification and transmission error detection by block chaining
CH607506A5 (de) * 1976-06-01 1978-12-29 Europ Handelsges Anst
US4465901A (en) * 1979-06-04 1984-08-14 Best Robert M Crypto microprocessor that executes enciphered programs
US4319079A (en) * 1979-09-13 1982-03-09 Best Robert M Crypto microprocessor using block cipher
EP0175487A3 (de) * 1984-08-23 1989-03-08 Btg International Limited Softwaresicherungsvorrichtung
GB8704920D0 (en) * 1987-03-03 1987-04-08 Hewlett Packard Co Secure messaging system
EP0354774B1 (de) * 1988-08-11 1996-04-10 International Business Machines Corporation Geheime Datenübertragung mittels Steuervektoren
FR2728980B1 (fr) * 1994-12-30 1997-01-31 Thomson Csf Dispositif de securisation de systemes d'information organises autour de microprocesseurs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202016101111U1 (de) 2016-03-02 2016-04-07 Omp Telematics Gmbh Vorrichtung zur Verteilung und Ausführung von verschlüsselten Programmen

Also Published As

Publication number Publication date
KR19990037007A (ko) 1999-05-25
CA2249554A1 (en) 1999-04-10
EP0908810A2 (de) 1999-04-14
IL126448A0 (en) 1999-08-17
TW445402B (en) 2001-07-11
EP1571523A1 (de) 2005-09-07
CN1236132A (zh) 1999-11-24
EP0908810A3 (de) 2003-10-01
DE69833594D1 (de) 2006-04-27
US6061449A (en) 2000-05-09
EP0908810B1 (de) 2006-03-01
IL126448A (en) 2002-08-14

Similar Documents

Publication Publication Date Title
DE69833594T2 (de) Gesicherter Prozessor mit externem Speicher unter Verwendung von Block-Chaining und Wiederherstellung der Blockreihenfolge
DE60207869T2 (de) Verfahren und system zum verarbeiten von informationen in einem elektronischen gerät
DE69932326T2 (de) Verbessertes verfahren für bedingten zugang und zur inhaltssicherung
CN100592786C (zh) 智能卡动态管理
US6215875B1 (en) Cipher processing system
EP1251688B1 (de) Datenfernladung
US8356188B2 (en) Secure system-on-chip
US8042157B2 (en) System for restricting data access
DE60308990T2 (de) Schutz eines gerätes gegen unerwünschte verwendung in einem sicheren umfeld
US20060136898A1 (en) Method of providing patches for software
EP1768408A1 (de) Integrierte Schaltung, Verfahren und Vorrichtung gegen unbefugten Zugang zu Entschlüsselungsschlüsseln mit Hilfe einer verschlüsselten digitalen Unterschrift
JP2013059078A (ja) マルチメディア・データの保護
NO301255B1 (no) System for sikring av data for generering av krypteringsnökler samt tilsvarende gjenoppretteranordning
JP2003529963A (ja) デジタルコンテンツの著作権侵害を防止するための方法と装置
CN104506504B (zh) 一种无卡终端涉密信息的存储方法及安全装置
US8656191B2 (en) Secure system-on-chip
KR20090045285A (ko) 보안 프로세서, 보안 프로세서의 동작을 설정하기 위한 기록 방법 및 기록 매체
WO2009095838A1 (en) Securing a smart card
CN101448127A (zh) 保密信息存储系统和方法
CN1647484B (zh) 加扰数据存取权限注册、禁止与/或删除协议及相应存取控制模块
US20030026421A1 (en) Method for transmitting data with digital watermark access control and devices therefor
JPH0250539A (ja) アクセスタイトル制御メッセージ放送及び受信方法
EP0984403A1 (de) Sicherheitssytem
WO2015012782A1 (en) Dynamic obfuscation processing
EP1978467A1 (de) Integrierte Schaltung und Verfahren zur sicheren Ausführung von Software

Legal Events

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