-
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.