DE112012002332B4 - Schützen eines Steuervektors in einem kryptographischen System - Google Patents
Schützen eines Steuervektors in einem kryptographischen System Download PDFInfo
- Publication number
- DE112012002332B4 DE112012002332B4 DE112012002332.3T DE112012002332T DE112012002332B4 DE 112012002332 B4 DE112012002332 B4 DE 112012002332B4 DE 112012002332 T DE112012002332 T DE 112012002332T DE 112012002332 B4 DE112012002332 B4 DE 112012002332B4
- Authority
- DE
- Germany
- Prior art keywords
- key
- block
- parameter
- length
- optional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Description
- HINTERGRUND
- Die vorliegende Erfindung betrifft die Datenverarbeitung und insbesondere kryptographische Verfahren und Strukturen.
- Hersteller von Sicherheitssoftware verfügen über herstellereigene Datenstrukturen für die Schlüsselverwaltung und über Steuermechanismen, um bei der Umsetzung von kundenspezifischen Richtlinien zur Schlüsselverwaltung unterstützend mitzuwirken. Diese Datenstrukturen werden als Schlüsseltoken oder Schlüsselblöcke bezeichnet. In jüngster Zeit, als das Bedürfnis nach mehr Sicherheit zugenommen hat, haben verschiedene Unternehmen damit begonnen, unterschiedliche Datenstrukturen von verschiedenen Herstellern für die Schlüsselverwaltung zu verwenden. Dies hat zu einem Bedarf für eine Schnittstelle zwischen diesen unterschiedlichen Systemen von Datenstrukturen für die Schlüsselverwaltung der verschiedenen Hersteller geführt.
- Folglich wurde von der Arbeitsgruppe
X9 des American National Standards Institute (ANSI) ein technischer Bericht (technical report (TR)) erstellt, um ein Format für den Schlüsselaustausch zwischen interessierten Parteien zu erzeugen. Dieses Format wird als TR-31 bezeichnet und legt fest, dass das Layout eines standardmäßigen Schlüsselblocks mehrere Datenfelder für den Schlüsseltyp, den Algorithmus und die Steuerung sowie Verschlüsselungsmechanismen enthält, die einen anderen Schlüssel verwenden, um den Schlüssel als einen nicht transparenten Datenblock zu verschlüsseln, der in eine Nutzlast nach dem Schlüsselblock gestellt wird. Der Verschlüsselungsmechanismus legt ein Verfahren fest, mit dem sich als Teil des Verschlüsselungsmechanismus Schlüssel-Steuerungsinformationen kryptographisch in den Schlüsselblock einbinden lassen. Insbesondere legt ein TR-31-Schlüsselblock Attributfelder für die Schlüsselverwendung, die Schlüsselverwaltung und für Verschlüsselungsinformationen zusammen mit mehreren anderen, für andere Zwecke vorgesehene Felder fest. Ein TR-31-Schlüsselblock legt jedoch keine Verfahren fest, die dazu dienen, herstellereigene Schlüssel-Datenstrukturen in dem TR-31-Schlüsselblock abzubilden. - Zum Beispiel kann ein bestimmtes verschlüsselungsfähiges Datenverarbeitungssystem ein Hardware-Sicherheitsmodul (HSM) enthalten, das eine Common Cryptographic Architecture (CCA) realisiert, die eine Bytematrix aus Schlüssel-Steuerungsinformationen (d.h. einen Steuervektor (Control Vector (CV)) festlegt, welche kryptographisch in ein Schlüsseltoken für einen kryptographischen Schlüssel eingebunden wird. In diesem Fall steuert der CV die Schlüssel-Steuerungsinformationen innerhalb der sicheren Grenzen des HSM und betrifft die Verwendung und Verwaltung der Schlüssel, wobei Daten einen Schlüsseltyp, einen Untertyp des Schlüssels, Schlüsselverwaltungs- und Schlüsselverwendungsrichtlinien darstellen. Beim Schlüsseltyp handelt es sich um das allgemeine Funktionsspektrum, für das der Schlüssel verwendet werden kann, wie zum Beispiel das Verschlüsseln und/oder Entschlüsseln von Daten, das Verschlüsseln oder Entschlüsseln von Schlüsseln, das Berechnen oder Überprüfen von Authentifizierungscodes für Nachrichten, die Verwendung bei verschiedenen Finanzoperationen wie zum Beispiel das Verschlüsseln oder Entschlüsseln von PIN-Daten und das Erzeugen oder Überprüfen von PIN-Daten. Der Schlüssel-Untertyp stellt eine Einschränkung des Funktionsspektrums des Schlüssels im Bereich von Aktionen dar, die von dem Schlüsseltyp unterstützt werden, wie zum Beispiel die Beschränkung des Schlüssels auf die ausschließliche Verwendung zum Verschlüsseln von Daten oder aber zum Entschlüsseln von Daten, nicht aber für beides. Richtlinien für die Schlüsselverwaltung steuern, wie der Schlüssel verteilt (oder nicht verteilt) werden kann, so zum Beispiel, ob der Schlüssel (überhaupt) auf ein anderes System exportiert werden kann und, wenn ja, ob er exportiert werden kann, während er in einem TR-31-Schlüsselblock verschlüsselt wird. Die Richtlinien für die Schlüsselverwendung steuern, wie der Schlüssel außerhalb dieser von dem Typ und dem Untertyp auferlegten Beschränkungen verwendet werden kann, wie zum Beispiel Beschränkungen bei den Arten von Daten, die verarbeitet werden können (bei Schlüsseln, die Verschlüsselungs-/Entschlüsselungsschlüssel sind), oder den Arten von Schlüsseln, die mit dem Schlüssel verschlüsselt werden können (bei Schlüsseln, die zum Verschlüsseln/Entschlüsseln von anderen Schlüsseln verwendet werden). Wie vorstehend erwähnt wurde, wurden keine Verfahren zur Umsetzung solcher CCA-CV-Daten in eine für den TR-31-Schlüsselblock geeignete Darstellung festgelegt.
- In diesem Kontext sind bereits andere Dokumente veröffentlicht worden: Das Dokument
US 2010/0031021 A1 - Darüber hinaus beschreibt das Dokument
US 2004/0003246 A1 - Allerdings legt ein TR-31 -Schlüsselblock - wie bereits oben erwähnt - keine Verfahren fest, die dazu dienen, herstellereigene Schlüssel-Datenstrukturen in dem TR-31-Schlüsselblock abzubilden. Die Aufgabe des hier vorgeschlagenen Konzeptes besteht also darin, ein derartiges Verfahren anzugeben.
- KURZDARSTELLUNG
- Diese Aufgabe wird durch die Gegenstände der unabhängigen Ansprüche gelöst.
- Zusätzliche Merkmale und Vorteile werden durch die Methoden der vorliegenden Erfindung realisiert. Weitere Ausführungsformen und Aspekte der Erfindung werden hier ausführlich beschrieben und als Teil der beanspruchten Erfindung betrachtet. Um die Erfindung mit den Vorteilen und den Merkmalen besser verstehen zu können, sollte auf die Beschreibung und die Zeichnungen Bezug genommen werden.
- Figurenliste
- Eine Ausführungsform beziehungsweise Ausführungsformen der Erfindung werden nun lediglich anhand eines Beispiels und mit Bezug auf die beiliegenden Zeichnungen beschrieben, bei denen:
-
1 eine schematische Darstellung eines Datenverarbeitungssystems ist; -
2 eine Darstellung von Feldern eines Schlüsselblocks ist; -
3 ein Ablaufplan ist, der ein Verfahren zum Abbilden von Schlüsselinformationen in einer Export-Operation zeigt; -
4 ein Ablaufplan ist, der ein Verfahren zum Erstellen von optionalen Blöcken zeigt; -
5 ein Ablaufplan ist, der ein Verfahren zum Schützen eines Steuervektors in einem optionalen Block zeigt; -
6 ein Ablaufplan ist, der ein Verfahren zum Abbilden von Schlüsselinformationen in einer Import-Operation zeigt; und -
7 ein Ablaufplan ist, der ein Verfahren zur syntaktischen Analyse (Parsing) von Daten eines optionalen Blocks zeigt. - AUSFÜHRLICHE BESCHREIBUNG
- Aspekte der vorliegenden Erfindung betreffen ein Verfahren zum Abbilden von Steuerinformationen eines Schlüsseltokens auf Datenfelder, die von einem standardmäßigen Schlüsselblock festgelegt werden, wobei das Verfahren eine Export-Operation beinhaltet. Ein Ausgabeschlüsselblock enthält Schlüssel-Steuerungsinformationen, die mittels eines Verschlüsselungsverfahrens des standardmäßigen Schlüsselblocks kryptographisch an Schlüsselmaterial gebunden sind. Die Schlüssel-Steuerungsinformationen werden von dem Schlüsseltoken und Begriffsklärungsinformationen abgeleitet, um die Umsetzung zu steuern, die vor oder während der Export-Operation festgelegt wird. Aspekte der vorliegenden Erfindung betreffen auch ein Verfahren, um iterativ ein gültiges Bündel an optionalen Blöcken zu erstellen, um sie bei der späteren Erzeugung eines standardmäßigen Schlüsselblocks als Eingabe zu verwenden. Aspekte der vorliegenden Erfindung legen auch ein Verfahren fest, das dazu dient, die Informationen des Schlüsseltokens in eine Darstellung zu codieren, die sich für die Verwendung in den optionalen Blöcken des Schlüsselblocks eignet, und ein Verfahren, das dazu dient, sicher festzuhalten, dass diese Operation zulässig oder nicht zulässig ist.
- Aspekte der vorliegenden Erfindung betreffen auch ein Verfahren, das dazu dient, Informationen von Datenfeldern, die von einem standardmäßigen Schlüsselblock festgelegt werden, in Informationen eines Schlüsseltokens abzubilden, wobei das Verfahren eine Import-Operation beinhaltet. Dies unterscheidet sich vom Exportfall aus den Gründen, dass die Abstriche bei der Sicherheit asymmetrisch sind, und beim Import, dass ein lokales System möglicherweise beeinträchtigt wird. Das Ausgabeschlüsseltoken enthält Schlüssel-Steuerungsinformationen, die mittels eines festgelegten Verschlüsselungsverfahrens kryptographisch an das Schlüsselmaterial gebunden sind. Diese Schlüssel-Steuerungsinformationen werden von den Schlüssel-Steuerungsinformationen in dem standardmäßigen Schlüsselblock und von Begriffsklärungsinformationen abgeleitet, um die Umsetzung zu steuern, die vor oder während der Export-Operation festgelegt wird. Aspekte der vorliegenden Erfindung betreffen auch ein Verfahren, das dazu dient, einen standardmäßigen Schlüsselblock syntaktisch zu analysieren und auf Gültigkeit zu prüfen und bestimmte und/oder angeforderte Informationen über Daten eines optionalen Blocks, die sich in dem Schlüsselblock befinden, zurückzusenden.
- Bezug nehmend auf
1 ist ein Datenverarbeitungssystem10 als ein Zugriffssteuerungssystem bereitgestellt, in dem Leistungsmerkmale von Benutzern durch einen Dienst und durch bestimmte Funktionen eingeschränkt sind, die innerhalb dieses Dienstes ausgeführt werden können. Jedes Leistungsmerkmal wird als Zugriffssteuerungspunkt (access control point (ACP)) bezeichnet. Das Zugriffssteuerungssystem, das die ACPs für Benutzeroperationen verwaltet, kann so realisiert werden, dass es den Zugriff innerhalb von kryptographischen Verarbeitungssystemen steuert, die mindestens eine erste Datenverarbeitungseinheit20 und eine zweite Datenverarbeitungseinheit30 enthalten. - Die erste Datenverarbeitungseinheit
20 und die zweite Datenverarbeitungseinheit30 sind über ein drahtgebundenes oder ein drahtloses Netzwerk40 miteinander verbunden. Die erste Datenverarbeitungseinheit20 und die zweite Datenverarbeitungseinheit30 enthält jeweils ein physisch greifbares Speichermedium21 und31 , das von einer Verarbeitungsschaltung22 und32 gelesen werden kann und auf dem ausführbare Anweisungen zur Ausführung durch die Verarbeitungsschaltung22 und32 gespeichert sind, um ein oder mehrere der hier beschriebenen Verfahren durchzuführen. Im Einzelnen enthält jeweils die erste Datenverarbeitungseinheit20 und die zweite Datenverarbeitungseinheit30 ein jeweiliges Hardware-Sicherheitsmodul (HSM), das von dem jeweiligen Speichermedium21 ,31 und der jeweiligen Verarbeitungsschaltung22 ,32 gemeinsam festgelegt wird. Die jeweiligen HSMs sind neben anderen Aufgaben dafür zuständig, Schlüssel-Steuerungsinformationen an kryptographische Schlüssel zu binden, und jedes HSM kann zu diesem Zweck eine oder mehrere von diversen Architekturen realisieren. Als solches können die jeweiligen HSMs dieselbe oder unterschiedliche Architekturen realisieren. - In einem beispielhaften Fall realisiert das HSM der ersten Datenverarbeitungseinheit
20 die Common Cryptographic Architecture (CCA) und wird angewiesen, ein Schlüsseltoken100 , das Schlüssel-Steuerungsinformationen und einen kryptographischen Schlüssel enthält, an den die Schlüssel-Steuerungsinformationen kryptographisch gebunden sind, an die zweite Datenverarbeitungseinheit30 zu senden. Da die HSMs von jeweils der ersten Datenverarbeitungseinheit20 und der zweiten Datenverarbeitungseinheit30 gegebenenfalls dieselben Architekturen realisieren oder auch nicht realisieren, besteht für das HSM der ersten Datenverarbeitungseinheit20 folglich die Notwendigkeit, die Schlüssel-Steuerungsinformationen mittels einer Parameter-Datenbank201 und einer Umsetzungstabelle202 , die jeweils in dem Speichermedium21 gespeichert sind, sicher an einen standardmäßigen Schlüsselblock zu exportieren, und für das HSM der zweiten Datenverarbeitungseinheit30 besteht die Notwendigkeit, die exportierten Schlüssel-Steuerungsinformationen mittels einer Parameter-Datenbank301 und einer Umsetzungstabelle302 , die jeweils in dem Speichermedium31 gespeichert sind, von dem Schlüsselblock zu importieren. - Wie vorstehend erwähnt wurde, können die HSMs jeweils dieselbe Architektur (d.h. die CCA) oder unterschiedliche Architekturen realisieren, aber in beiden Fällen besteht für das HSM der ersten Datenverarbeitungseinheit
20 gegebenenfalls die Notwendigkeit, das Schlüsseltoken100 zu ändern, um dadurch den standardmäßigen Schlüsselblock400 zu erzeugen (nachstehend als „Schlüsselblock 400“ bezeichnet), der die Schlüssel-Steuerungsinformationen enthält, die exportiert worden sind. Für das HSM der zweiten Datenverarbeitungseinheit30 , das den Schlüsselblock400 empfangen hat, besteht gegebenenfalls des Weiteren die Notwendigkeit, die Schlüssel-Steuerungsinformationen von dem Schlüsselblock400 in ein neues Schlüsseltoken500 zu importieren. Somit müssen die HSMs der ersten Datenverarbeitungseinheit20 und der zweiten Datenverarbeitungseinheit30 gegebenenfalls eine Umsetzung von Informationen in Bezug auf den Schlüsselblock400 vornehmen (d.h., indem sie entweder in einer Export-Operation Informationen in ein Format des Schlüsselblocks400 umsetzen oder umgekehrt in einer Import-Operation durchführen). - In dem Beispiel, in dem die HSMs jeweils die CCA verwenden, ermöglichen die Umsetzungstabellen
202 ,302 eine Abbildung auf/von verschiedene(n) Verwendungs- und Moduswerte(n) des Schlüsselblocks400 von/auf Werte(n) des CV-Schlüsseltyps und des Untertyps. Die Werte „Output CCA Type“ und „Output CCA Usage“ sind entsprechend der CCA-Dokumentation definiert. Jede Umsetzung kann gegebenenfalls die Aktivierung eines möglicherweise eindeutigen ACP erforderlich machen und auf diese Weise können Systemsicherheitsadministratoren benutzergebunden direkt steuern, welche CCA-Schlüsseltypen dieser Benutzer aus dem Format des Schlüsselblocks400 importieren darf. Dies ist wichtig, da Schlüsselblöcke400 oftmals in mehr als 1 Kombination aus CCA-Typ und Untertyp importiert werden können. - Während sich die hier angegebene Beschreibung auf mehrere Architekturen beziehen kann, um Schlüssel-Steuerungsinformationen kryptographisch an kryptographische Schlüssel und an jeden beliebigen standardmäßigen Schlüsselblock zu binden, wird der Klarheit und der knappen Darstellung halber davon ausgegangen, dass das jeweilige HSM von jeweils der ersten Datenverarbeitungseinheit
20 und der zweiten Datenverarbeitungseinheit30 die CCA realisiert und dass der Schlüsselblock400 der Schlüsselblock nach ANSI-TR-31 (nachstehend „TR-31 “) ist. - Bezug nehmend auf
2 enthält der Schlüsselblock400 mindestens neun Schlüsselblockfelder wie folgt. Das Feld410 für die Versionskennung (ID) des Schlüsselblocks gibt eine Version des Schlüsselblocks400 an, die selbst ein Verfahren angibt, mit dem der Schlüsselblock400 kryptographisch geschützt wird, und es gibt ferner den Inhalt und den Aufbau des Schlüsselblocks400 an. Das Feld420 für die Schlüsselblocklänge gibt eine Länge des Schlüsselblocks400 an. Das Schlüsselverwendungsfeld430 gibt Informationen über eine vorgesehene Funktion des geschützten Schlüssels und/oder sensible Daten an, die kryptographisch an den Schlüsselblock400 gebunden sind. Das Algorithmusfeld440 gibt den Algorithmus an, für den der geschützte Schlüssel und/oder die sensiblen Daten, die kryptographisch an den Schlüsselblock400 gebunden sind, verwendet werden kann. Das Feld450 für die Verwendungsmodi gibt eine Operation an, die der geschützte Schlüssel und/oder die sensiblen Daten, die kryptographisch an den Schlüsselblock400 gebunden sind, durchführen können. Das Feld460 für die Schlüsselversionsnummer ist eine Zeichenversionsnummer, um anzugeben, dass es sich bei dem Inhalt des Schlüsselblocks400 um Komponenten von alten Schlüsseln handelt, oder um eine Wiedereinspeisung von alten Schlüsseln zu vermeiden. Das Exportierbarkeitsfeld470 gibt an, ob der geschützte Schlüssel und/oder die sensiblen Daten, die kryptographisch an den Schlüsselblock400 gebunden sind, außerhalb der kryptographischen Domäne übertragen werden können. Das Feld480 für die Anzahl der optionalen Blöcke gibt eine Anzahl von optionalen Blöcken an, die in dem Schlüsselblock400 enthalten sind. Das Feld490 für die optionalen Blöcke enthält eine veränderliche Anzahl von optionalen Blöcken, von denen jeder eine Kennung (ID), Längeninformationen und Daten veränderlicher Länge enthält. - In einer Export-Operation übergibt ein Benutzer der ersten Datenverarbeitungseinheit
20 die folgenden Parameter an ein Objekt, wie zum Beispiel die Parameter-Datenbank201 , auf die von dem HSM der ersten Datenverarbeitungseinheit20 zugegriffen wird, um die Schlüssel-Steuerungsinformationen an den Schlüsselblock400 zu exportieren. Zu den Parametern gehören Schlüsselwörter der Regelmatrix, die ein Hinweis auf entsprechende Anweisungen sind, wie zum Beispiel ein Verfahren zum Schutz eines einzelnen Schlüsselblocks, das in das Feld410 für die Versions-ID des Schlüsselblocks gestellt werden soll, ein Schlüsselverwendungswert für den Ausgabeschlüsselblock400 , der in das Schlüsselverwendungsfeld430 gestellt werden soll, ein Schlüsselverwendungsmodus, der in das Feld450 für die Verwendungsmodi gestellt werden soll, ein optionaler Exportsteuerungscode, um das Exportierbarkeitsfeld470 zu setzen, und eine optionale Steuervektor-Transportsteuerung, die in das Feld490 für die optionalen Blöcke gestellt werden soll. - Das Verfahren zum Schutz des Schlüsselblocks kann ein Verfahren vom Typ VARXOR-A sein, das die Variantenmethode verwendet, die TR31-KBV entspricht und dadurch gekennzeichnet ist, dass ein „A“ in das Feld
410 für die Versions-ID des Schlüsselblocks gestellt wird, oder ein Verfahren vom Typ VARDRV-B, das das Schlüsselableitungsverfahren verwendet, welches TR31-KBV entspricht und dadurch gekennzeichnet ist, dass ein „B“ in das Feld410 für die Versions-ID des Schlüsselblocks gestellt wird, oder ein Verfahren vom Typ VARXOR-C, das die Variantenmethode verwendet, die TR31-KBV entspricht und dadurch gekennzeichnet ist, dass ein „C“ in das Feld410 für die Versions-ID des Schlüsselblocks gestellt wird. - Der Schlüsselverwendungswert kann ein Basisableitungsschlüssel mit einem Schlüsselwort „BDK“ sein, der dadurch gekennzeichnet ist, dass „B0“ in das Schlüsselverwendungsfeld
430 gestellt wird, ein Kartenüberprüfungsschlüssel mit einem Schlüsselwort „CVK“, der dadurch gekennzeichnet ist, das „C0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein Datenverschlüsselungsschlüssel mit einem Schlüsselwort „ENC“, der dadurch gekennzeichnet ist, dass „D0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein EMV-Anwendungskryptogramm-Hauptschlüssel mit einem Schlüsselwort „EMVACMK“, der dadurch gekennzeichnet ist, dass „E0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein EMV-Hauptschlüssel zur sicheren Nachrichtenübertragung für Vertraulichkeit (EMV secure messaging for confidentiality master key) mit einem Schlüsselwort „EMVSCMK“, der dadurch gekennzeichnet ist, dass „E1“ in das Schlüsselverwendungsfeld430 gestellt wird, ein EMV-Hauptschlüssel zur sicheren Nachrichtenübertragung für Integrität (EMV secure messaging for integrity master key) mit einem Schlüsselwort „EMVSIMK“, der dadurch gekennzeichnet ist, dass „E2“ in das Schlüsselverwendungsfeld430 gestellt wird, ein EMV-Datenauthentifizierungscodeschlüssel (EMV data authentication code key) mit einem Schlüsselwort „EMVDAMK“, der dadurch gekennzeichnet ist, dass „E3“ in das Schlüsselverwendungsfeld430 gestellt wird, ein EMV-Hauptschlüssel für dynamische Zahlen (EMV dynamic numbers master key) mit einem Schlüsselwort „EMVDNMK“, der dadurch gekennzeichnet ist, dass „E4“ in das Schlüsselverwendungsfeld430 gestellt wird, ein EMV-Hauptschlüssel für die Kartenpersonalisierung (EMV card personalization master key) mit einem Schlüsselwort „EMVCPMK“, der dadurch gekennzeichnet ist, dass „E5“ in das Schlüsselverwendungsfeld430 gestellt wird, ein Schlüssel-Verschlüsselungsschlüssel mit einem Schlüsselwort „KEK“, der dadurch gekennzeichnet ist, dass „K0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein Schlüssel-Verschlüsselungsschlüssel zum Verschlüsseln von TR-31-Blöcken mit einem Schlüsselwort „KEK-WRAP“, der dadurch gekennzeichnet ist, dass „K1“ in das Schlüsselverwendungsfeld430 gestellt wird, ein Schlüssel für den ISO-16609-MAC-Algorithmus 1, der TDES verwendet, ein Schlüsselwort „ISOMACO“ hat und dadurch gekennzeichnet ist, dass „M0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein Schlüssel für den ISO-9797-1-MAC-Algorithmus 1 mit einem Schlüsselwort „ISOMAC1“, der dadurch gekennzeichnet ist, dass „M1“ in das Schlüsselverwendungsfeld430 gestellt wird, ein Schlüssel für den ISO-9797-1-MAC-Algorithmus 3 mit einem Schlüsselwort „ISOMAC3“, der dadurch gekennzeichnet ist, dass „M3“ in das Schlüsselverwendungsfeld430 gestellt wird, ein PIN-Verschlüsselungsschlüssel mit einem Schlüsselwort „PINENC“, der dadurch gekennzeichnet ist, dass „P0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein PIN-Überprüfungsschlüssel, ein „weiterer“ Algorithmus mit einem Schlüsselwort „PINVO“, der dadurch gekennzeichnet ist, dass „V0“ in das Schlüsselverwendungsfeld430 gestellt wird, ein PIN-Überprüfungsschlüssel für den IBM-3624-Algorithmus mit einem Schlüsselwort „PINV3624“, der dadurch gekennzeichnet ist, dass „V1“ in das Schlüsselverwendungsfeld430 gestellt wird, ein PIN-Überprüfungsschlüssel oder ein VISA-PW-Algorithmus mit einem Schlüsselwort „VISAPW“, der dadurch gekennzeichnet ist, dass ein „V2“ in das Schlüsselverwendungsfeld430 gestellt wird. - Der Schlüsselverwendungsmodus kann „Verschlüsselung“ oder „Entschlüsselung“ mit einem Schlüsselwort „ENCDEC“ sein, das dadurch gekennzeichnet ist, dass ein „B“ in das Feld
450 für die Verwendungsmodi gestellt wird, wobei Entschlüsselung nur ein Schlüsselwort „DEC-ONLY“ hat, das dadurch gekennzeichnet ist, dass ein „D“ in das Feld450 für die Verwendungsmodi gestellt wird, wobei Verschlüsselung nur ein Schlüsselwort „ENC-ONLY“ hat, das dadurch gekennzeichnet ist, dass ein „E“ in das Feld450 für die Verwendungsmodi gestellt wird, wobei „MAC oder PIN erzeugen und überprüfen“ ein Schlüsselwort „GENVER“ hat, das dadurch gekennzeichnet ist, dass ein „C“ in das Feld450 für die Verwendungsmodi gestellt wird, wobei „MAC oder PIN nur erzeugen“ ein Schlüsselwort „GEN-ONLY“ hat, das dadurch gekennzeichnet ist, dass ein „G“ in das Feld450 für die Verwendungsmodi gestellt wird, wobei „MAC oder PIN nur überprüfen“ ein Schlüsselwort „VER-ONLY“ hat, das dadurch gekennzeichnet ist, dass ein „V“ in das Feld450 für die Verwendungsmodi gestellt wird, wobei Schlüssel-Ableitung ein Schlüsselwort „DERIVE“ hat, das dadurch gekennzeichnet ist, dass ein „X“ in das Feld450 für die Verwendungsmodi gestellt wird, und wobei „jeder beliebige Modus zulässig“ ein Schlüsselwort „ANY“ hat, das dadurch gekennzeichnet ist, dass ein „N“ in das Feld450 für die Verwendungsmodi gestellt wird. - Der optionale Exportsteuerungscode, der dazu dient, das Exportierbarkeitsfeld
470 zu setzen, kann angeben „Export zulässig“, der einen beliebigen Schlüssel-Verschlüsselungsschlüssel mit einem Schlüsselwort „EXP-ANY“ verwendet, welches dadurch gekennzeichnet ist, dass ein „S“ in das Exportierbarkeitsfeld470 gestellt wird, oder „Export unter Verwendung eines vertrauenswürdigen SchlüsselVerschlüsselungsschlüssels zulässig“, wie in den Normen für den Schlüsselblock400 angegeben ist, welcher ein Schlüsselwort „EXP-TRST“ hat, das dadurch gekennzeichnet ist, dass ein „E“ in das Exportierbarkeitsfeld470 gestellt wird, oder „Export untersagt“, der ein Schlüsselwort „EXP-NONE“ hat, das dadurch gekennzeichnet ist, dass ein „N“ in das Exportierbarkeitsfeld470 gestellt wird. Die optionale Steuervektor-Transportsteuerung, die in das Feld490 für die optionalen Blöcke gestellt werden soll, kann eine Anweisung, einen CV als ein optionales Feld in den Kopfbereich des Schlüsselblocks400 aufzunehmen, welche ein Schlüsselwort „INCL-CV“ hat, wobei das Schlüsselverwendungsfeld430 und das Feld450 für die Verwendungsmodi gemäß den nachstehend beschriebenen Umsetzungen auf nichtnumerische Werte gesetzt werden, oder eine Anweisung angeben, den CV als ein optionales Feld in den Kopfbereich des Schlüsselblocks400 aufzunehmen, welcher ein Schlüsselwort „ATTR-CV“ hat, wobei das Schlüsselverwendungsfeld430 und das Feld450 für die Verwendungsmodi auf vorher festgelegte Werte gesetzt werden. - Zu den Parametern gehören ferner eine „Schlüsselversionsnummer“, eine „Schlüsselfeldlänge“, eine „Länge der Quellenschlüsselkennung“, eine „Quellenschlüsselkennung“, eine „Länge der Entschlüsselungs-Schlüsselverschlüsselungsschlüssel-(Kek-)Kennung“, eine „Entschlüsselungs-Schlüsselverschlüsselungsschlüssel-(Kek-)Kennung“, eine Länge der „Verschlüsselungs-Schlüsselverschlüsselungsschlüssel-(Kek-)Kennung“, eine „Verschlüsselungs-Schlüsselverschlüsselungsschlüssel-(Kek-)Kennung“, eine „Länge der opt Blöcke“, ein Parameter „opt Blöcke“, eine „tr31-Schlüsselblocklänge“ und ein „tr31-Schlüsselblock“. Der Parameter „Schlüsselversionsnummer“ kann eine zwei Byte umfassende Zahl sein und in das Feld
460 für die Schlüsselversionsnummer des Schlüsselblocks400 kopiert werden, außer wenn der Parameter „Quellenschlüsselkennung“ im Schlüsseltoken100 ein Teil des Schlüssels ist, wobei dieser Parameter in diesem Fall ignoriert und das Feld für die Schlüsselversionsnummer auf einen Wert „c0“ gesetzt wird. Der Parameter „Schlüsselfeldlänge“ kann ein ganzzahliger Parameter sein, der eine Länge eines Schlüsselfeldes angibt, die in dem Schlüsselblock400 verschlüsselt ist. Gemäß Ausführungsformen ist die Länge ein Vielfaches von 8 und größer oder gleich einer Länge eines „Klartext“-Schlüssels, der in dem Schlüsseltoken100 mit dem Parameter „Quellenschlüsselkennung“ zuzüglich einer Länge einer 2-Byte-Schlüssellänge übergeben wird, die diesem Schlüssel in dem Schlüsselblock400 vorausgeht. Der Parameter „Länge der Quellenschlüsselkennung“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „Quellenschlüsselkennung“ angibt. Der Parameter „Quellenschlüsselkennung“ zeigt auf eine String-(Zeichenfolge-)Variable, die das zu exportierende Schlüsseltoken100 enthält. Der Parameter „Länge der Entschlüsselungs-Kek-Kennung“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „Entschlüsselungs-Kek-Kennung“ angibt. Der Parameter „Entschlüsselungs-Kek-Kennung“ zeigt auf eine String-Variable, die das Schlüsseltoken100 enthält, welches einen Verschlüsselungsschlüssel zum Entschlüsseln enthält, wenn das Schlüsseltoken100 in dem Parameter „Quellenschlüsselkennung“ unter einem anderen Schlüssel als dem Schlüssel, der in dem HSM der ersten Datenverarbeitungseinheit20 abgelegt ist, verschlüsselt ist. Wenn kein Parameter „Verschlüsselungs-Kek-Kennung“ angegeben ist, wird dieser Parameter zum Verschlüsseln des Schlüsselblocks400 verwendet. Der Parameter „Länge der Verschlüsselungs-Kek-Kennung“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „Verschlüsselungs-Kek-Kennung“ angibt. Die Verschlüsselungs-Kek-Kennung zeigt auf eine String-Variable, die das Schlüsseltoken100 enthält, welches den Verschlüsselungsschlüssel zum Verschlüsseln des Schlüsselblocks400 enthält. Der Parameter „Länge der opt Blöcke“ zeigt auf eine ganzzahlige Variable, die eine Länge des Parameters „opt Blöcke“ angibt. Der Parameter „opt Blöcke“ zeigt auf einen Pufferspeicher, der ein Array von optionalen Blöcken enthält, die in den Ausgabeschlüsselblock400 aufgenommen werden sollen. Gegebenenfalls muss das Array von optionalen Blöcken zuvor in einem korrekten Format vorbereitet worden sein. Der Parameter „tr31-Schlüsselblocklänge“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „tr31-Schlüsselblock“ angibt. Gemäß Ausführungsformen gibt der Parameter „tr31-Schlüsselblocklänge“ bei der Eingabe eine Größe des für den Ausgabeschlüsselblock400 verfügbaren Pufferspeichers an und bei der Rückgabe wird der Parameter „tr31-Schlüsselblocklänge“ aktualisiert, damit er eine tatsächliche Länge dieses zurückgesandten Tokens enthält. Der tr31-Schlüsselblock zeigt auf eine String-Variable, in die der Ausgabeschlüsselblock400 gestellt wird. - Bezug nehmend auf
3 wird nun der Exportvorgang beschrieben. Zunächst werden in der Operation600 die für den Export notwendigen Bedingungen geprüft. Die Prüfung beinhaltet eine Prüfung des Regelmatrix-Parameters auf Gültigkeit, wobei die Prüfung auf Gültigkeit eine kleinstmögliche Anzahl von Schlüsselwörtern und nur 1 von jeder erforderlichen Gruppe von Schlüsselwörtern sowie eine Überprüfung beinhaltet, ob keiner der Parameter „Regelmatrix“, „Schlüsselversionsnummer“, „Schlüsselfeldlänge“, „Länge der Quellenschlüsselkennung“, „Quellenschlüsselkennung“, „Länge der Entschlüsselungs-Kek-Kennung“, „Entschlüsselungs-Kek-Kennung“, „Länge der Verschlüsselungs-Kek-Kennung“, „Verschlüsselungs-Kek-Kennung“, „Länge der opt Blöcke“, „opt Blöcke“, „tr31-Schlüsselblocklänge“ und „tr31-Schlüsselblock“ fehlt, was in manchen Ausführungsformen durch das Feststellen von Nullzeigern erkannt wird. Wenn irgendwelche Parameter fehlen (d.h., sie sind Nullzeiger), bricht der Vorgang ab. - Der Prüfvorgang der Operation
600 beinhaltet des Weiteren eine Prüfung des Schlüsseltokens100 auf Gültigkeit, das in den Parametern „Quellenschlüsselkennung“, „Entschlüsselungs-Kek-Kennung“ und „Verschlüsselungs-Kek-Kennung“ übergeben wird. Diese Prüfung auf Gültigkeit beinhaltet eine Überprüfung, ob der mit dem Parameter „Quellenschlüsselkennung“ übergebene Wert ein gültiges Schlüsseltoken100 mit Version, Länge, Steuerinformationen ist, und falls nicht, bricht der Vorgang ab. Die Prüfung auf Gültigkeit beinhaltet ferner eine Überprüfung, ob der mit der Entschlüsselungs-Kek-Kennung übergebene Wert ein gültiges Schlüsseltoken100 ist, und falls nicht, bricht der Vorgang ab. Wenn sowohl der Parameter „Quellenschlüsselkennung“ als auch der Parameter „Entschlüsselungs-Kek-Kennung“ syntaktisch analysiert worden sind, wird das Schlüsselmaterial in der Quellenschlüsselkennung entweder unter Verwendung des Parameters „Entschlüsselungs-Kek-Kennung“ oder des in dem HSM der ersten Datenverarbeitungseinheit20 abgelegten Verschlüsselungsschlüssels entschlüsselt. Die Prüfung auf Gültigkeit beinhaltet des Weiteren noch eine Überprüfung, ob der mit der Verschlüsselungs-Kek-Kennung übergebene Wert ein gültiges Schlüsseltoken100 ist und ob irgendein Token übergeben worden ist. Wenn nicht, bricht der Vorgang ab. - Die Prüfvorgang der Operation
600 beinhaltet ferner eine Überprüfung, ob das im Parameter „Entschlüsselungs-Kek-Kennung“ empfangene Schlüsseltoken100 einen CV mit der Erlaubnis hat, den Parameter „Quellenschlüsselkennung“ zu entschlüsseln oder umzusetzen, eine Überprüfung, ob das in dem Parameter „Verschlüsselungs-Kek-Kennung“ empfangene Schlüsseltoken100 einen CV mit der Erlaubnis hat, den Parameter „Quellenschlüsselkennung“ zu verschlüsseln oder umzusetzen, sowie eine Prüfung, ob das Schlüsseltoken100 in dem Parameter „Quellenschlüsselkennung“ exportiert werden kann. Zu diesem Zeitpunkt wird auch festgestellt, ob das Schlüsseltoken100 als der Schlüsselblock400 exportiert werden kann, wobei geprüft wird, ob die angeforderte Operation für entsprechende ACPs genehmigt ist. - Wenn Ergebnisse des Prüfvorgangs der Operation
600 positiv sind, wird das Verfahren bei der Operation610 fortgesetzt, indem der Schlüsselblock400 vorbereitet wird. Diese Operation schließt zunächst eine Prüfung des Parameters „Schlüsselfeldlänge“ auf Gültigkeit sowie eine Prüfung von optionalen Blöcken auf Gültigkeit ein, die im Parameter „opt Blöcke“ übergeben werden. Diese Prüfung auf Gültigkeit schließt doppelte Block-Markierungen, die nicht erlaubt sind, numerische Block-Markierungen, die erlaubt sind, alphabetische Block-Markierungen, die notwendig sind, um Normen zu entsprechen, Längenfelder, die ausreichend sind, eine Berechnung eines Parameters „Anz. opt Blöcke“ (wenn die Anzahl größer als eine vorher festgelegte Zahl, wie zum Beispiel 99, ist, bricht der Prozess ab), eine Feststellung, ob eine Gesamtlänge des Teils mit den optionalen Blöcken zwangsläufig zu einer zu großen Gesamtlänge des Schlüsselblocks400 führt, und ein Kopien der optionalen Blöcke in das Feld490 für die optionalen Blöcke ein. - Das Vorbereiten der Operation
610 beinhaltet ferner das Vorbereiten von jedweden zusätzlichen optionalen Blöcken, wie zum Beispiel einem optionalen Block, um eine codierte Version des CV des Parameters „Quellenschlüsselkennung“ zu übertragen, sowie eine Prüfung, ob die Schlüsselversionsnummer korrekt formatiert ist. Wenn der übergebene Parameter „Schlüsselversionsnummer“ mit „c“ beginnt und das Schlüsseltoken100 kein partielles Schlüsseltoken ist, bricht der Prozess ab. Wenn der übergebene Parameter „Schlüsselversionsnummer“ mit „c“ beginnt und das Schlüsseltoken100 ein partielles Schlüsseltoken ist, verwendet der Vorgang anstelle des standardmäßigen „c0“ die übergebene Versionsnummer. Wenn der übergebene Parameter „Schlüsselversionsnummer“ nicht mit „c“ beginnt und das Schlüsseltoken100 ein partielles Schlüsseltoken ist, wird der Parameter „Schlüsselversionsnummer“ vollständig ignoriert und für den Schlüsselblock400 wird „c0“ verwendet. - Im Anschluss an die Vorbereitung der Operation
610 wird das Verfahren fortgesetzt, indem der Schlüsselblock400 in der Operation620 erzeugt wird. Der Erzeugungsvorgang der Operation620 beinhaltet das Erzeugen und Füllen einer Struktur eines leeren Schlüsselblocks400 und das Festlegen des CV-Umsetzungsverfahrens, das für den Schlüsselblock400 verwendet werden soll. Das Festlegen beinhaltet die Vorbereitung des Felds490 für die optionalen Blöcke mit dem CV und das Vorbereiten des Schlüsselverwendungsfelds430 und des Felds450 für die Verwendungsmodi auf der Grundlage des CV, wie in der Umsetzungstabelle202 beschrieben ist, wenn der INCL-CV an die Parameter-Datenbank201 übergeben wird. Alternativ beinhaltet das Festlegen die Vorbereitung des Felds490 für die optionalen Blöcke mit dem CV und das Setzen des Schlüsselverwendungsfelds430 und des Felds450 für die Verwendungsmodi auf vorher festgelegte Werte, wenn der ATTR-CV an die Parameter-Datenbank201 übergeben wird. Gemäß noch einer weiteren Alternative beinhaltet das Festlegen die Vorbereitung des Schlüsselverwendungsfelds430 und des Felds450 für die Verwendungsmodi auf der Grundlage des CV, wie in der Umsetzungstabelle202 beschrieben ist, wenn kein Schlüsselwort an die Parameter-Datenbank201 übergeben wird. - Im Anschluss an den Erzeugungsvorgang der Operation
620 wird der Schlüsselblock400 in der Operation630 fertiggestellt. Der Fertigstellungsvorgang der Operation630 beinhaltet die Vorbereitung eines Schlüsselübertragungsteils des Schlüsselblocks400 gemäß dem vorgeschriebenen Verschlüsselungsverfahren, das Verknüpfen des verschlüsselten Schlüsselteils nach dem Feld490 für die optionalen Blöcke, um den Schlüsselblock400 zu erzeugen, und das Kopieren des Schlüsselblocks in den Parameter „tr31-Schlüsselblock“ und das Aktualisieren der tr31-Schlüsselblocklänge auf die endgültige Länge. - Gemäß weiteren Aspekten der Erfindung wird ein Verfahren bereitgestellt, wobei ein gültiges Array von optionalen, für den Schlüsselblock
400 formatierten Blöcken iterativ erstellt wird. - Ein Benutzer der Erfindung übergibt die folgenden Parameter, die alle als Zeiger angegeben sind, gemäß der Erfindung, mittels anderer Verfahren oder nach Wert an die Parameter-Datenbank
201 . Zu den Parametern gehören ein Parameter „bfr-Länge der opt Blöcke“, ein Parameter „Länge der opt Blöcke, ein Parameter „opt Blöcke“, ein Parameter „Anz. opt Blöcke“, ein Parameter „ID des opt Blocks“, ein Parameter „Länge der Daten des opt Blocks“ und ein Parameter „Daten des opt Blocks“. Der Parameter „bfr-Länge der opt Blöcke“ zeigt auf eine ganze Zahl, die eine Länge eines Pufferspeichers enthält, welche mit dem Parameter „opt Blöcke“ übergeben wird. Diese Länge wird verwendet, um festzustellen, ob das Hinzufügen eines neuen optionalen Blocks zu dem aktuellen Inhalt des Pufferspeichers zu einem Pufferüberlauf führen würde. Der Parameter „Länge der opt Blöcke“ zeigt auf eine ganze Zahl, die die Länge der Daten in dem Pufferspeicher für die opt Blöcke enthält. Bei der Eingabe gibt er die Länge der Daten an, die sich derzeit in dem optionalen Block befinden. Bei der Ausgabe wird er mit der Länge aktualisiert, welche die Daten haben, nachdem der neue optionale Block zu dem Satz der optionalen Blöcke in diesem Pufferspeicher hinzugefügt worden ist. Der Parameter „opt Blöcke“ zeigt auf einen Pufferspeicher, der den Satz der optionalen Blöcke enthält, die gerade erstellt werden. Anfangs ist er leer und dann wird bei jeder Iteration ein optionaler Block an den Pufferspeicher angehängt. Der Parameter „bfr-Länge der opt Blöcke“ gibt die Gesamtlänge dieses Pufferspeichers an und eine Fehlermeldung wird zurückgeschickt, wenn diese Länge dadurch überschritten würde, dass der optionale Block in dem Parameter „Daten des opt Blocks“ zu dem aktuellen Inhalt hinzugefügt würde. Der Parameter „Anz. opt Blöcke“ zeigt auf eine ganze Zahl, die die Anzahl der optionalen Blöcke enthält, welche in der Struktur enthalten sind, die in dem Parameter „opt Blöcke“ zurückgegeben werden. Dieser wird als ein Ausgabeparameter bereitgestellt, so dass er anschließend als eine Eingabe in die Verarbeitung verwendet werden kann, die einen vollständigen Schlüsselblock400 erstellen kann. Dieser Parameter wird bei der Eingabe nicht geprüft und nur bei einer erfolgreichen Ausgabe aktualisiert. Der Parameter „Kennung des opt Blocks“ zeigt auf einen Zwei-Byte-Wert, der die Identifikationsmarkierung des optionalen Blocks sein soll, welcher in dem Parameter „Daten des opt Blocks“ übergeben wird. Der Parameter „Länge der Daten des opt Blocks“ zeigt auf eine ganze Zahl, die die Länge der Daten angibt, welche in dem Parameter „Daten des opt Blocks“ übergeben werden. Diese Länge kann den Wert null haben, da ein optionaler Block zulässigerweise eine Markierung und eine Länge haben kann, aber nicht unbedingt Daten aufweisen muss. Der Parameter „Daten des opt Blocks“ zeigt auf einen Pufferspeicher, an dem die Anwendung die Daten für den optionalen Block, die zu denjenigen hinzugefügt werden sollen, die sich bereits in dem Pufferspeicher befinden, in dem Parameter „opt Blöcke“ übergibt. Die Länge dieser Daten wird in dem Parameter „Länge der Daten des opt Blocks“ angegeben. - Bezug nehmend auf
4 ist das Verfahren zum iterativen Erstellen des gültigen Array von optionalen Blöcken, die für den Schlüsselblock400 formatiert werden, gemäß Ausführungsformen gezeigt. - Das Verfahren beinhaltet eine anfängliche Überprüfungsoperation
700 , auf die eine Parsing-Operation710 folgt. Der Überprüfungsvorgang der Operation700 beinhaltet eine Überprüfung, ob keiner der Parameter „bfr-Länge der opt Blöcke“, „Länge der opt Blöcke“, „opt Blöcke“, „Anz. opt Blöcke“, „ID des opt Blocks“, „Länge der Daten des opt Blocks“ oder „Daten des opt Blocks“ fehlt (d.h., sie sind Nullzeiger). Wenn irgendwelche den Wert null haben, bricht der Prozess ab. Als Nächstes wird überprüft, ob keiner der ganzzahligen Parameter „bfr-Länge der opt Blöcke“, „Länge der opt Blöcke“, „Anz. der opt Blöcke“, „Länge der Daten des opt Blocks“ einen negativen Wert hat (d.h., sie haben einen Wert, der größer oder gleich null ist). Dann wird überprüft, ob der Pufferspeicher über ausreichend Platz verfügt, um den neuen optionalen Block zu ihm hinzuzufügen. - Der Parsing-Vorgang der Operation
710 beinhaltet eine syntaktische Analyse der Daten des optionalen Blocks in dem Parameter „opt Blöcke“, um ihn auf Gültigkeit zu prüfen und um seine Länge und die Anzahl der optionalen Blöcke festzustellen, die er enthält, falls der Benutzer einen Teil des Pufferspeichers selbst vorbereitet hat, so dass die Erfindung in der Lage sein muss, eine Garantie aufrechtzuerhalten, dass das ausgegebene Array von optionalen Blöcken uneingeschränkt gültig ist. Der Parsing-Vorgang der Operation710 verbietet des Weiteren doppelte Block-Markierungen, lässt numerische Block-Markierungen zu, überprüft, ob alphabetische Block-Markierungen für den Schlüsselblock400 korrekt formatiert sind, überprüft, ob die Längenfelder ausreichend lang sind, und legt fest, dass kein weiterer optionaler Block hinzugefügt werden kann, wenn der Parameter „Anz. opt Blöcke“ den Wert „99“ hat. - Im Anschluss an den Parsing-Vorgang der Operation
710 wird die ID des optionalen Blocks, der hinzugefügt werden soll, in der Operation720 auf Gültigkeit geprüft, in der ein Versuch des Benutzers, einen Auffüllblock (padding block) „PB“ hinzuzufügen, verhindert wird. Gemäß der Operation720 sind doppelte Block-Markierungen, d.h. Block-Markierungen, die zusätzlich zu denen, die sich bereits in dem Array befinden, vorhanden sind, nicht zulässig, numerische Block-Markierungen sind erlaubt und alphabetische Block-Markierungen müssen für den Schlüsselblock400 korrekt formatiert sein. Als Nächstes wird in der Operation730 festgelegt, wo der neue optionale Block in dem Pufferspeicher gemäß dem Wert des Parameters „opt Blöcke“ gespeichert werden soll. - Der neue optionale Block wird dann entsprechend dem Parameter „opt Blöcke“ an der Anfangsadresse, die vorstehend in der Operation
740 berechnet wurde, in den Pufferspeicher eingefügt. Der Einfügevorgang beinhaltet eine Überprüfung, ob der Wert in dem Parameter „ID des opt Blocks“ korrekt formatiert ist, ein Kopieren des Werts von dem Parameter „ID des opt Blocks“ in das Feld490 für die optionalen Blöcke, eine Überprüfung, ob der Wert angemessen ist, eine Umwandlung des Längenwerts von dem Parameter „Länge der Daten des opt Blocks“ in ein korrektes Format, ein Kopieren dieses korrekt formatierten Längenwerts in das Feld420 für die Schlüsselblocklänge, eine Überprüfung, ob die Daten in dem Pufferspeicher korrekt formatiert sind, und ein Kopieren der in dem Parameter „Daten des opt Blocks“ übergebenen Daten an den Schlüsselblock400 . - In der Operation
750 wird der Wert des Parameters „Länge der opt Blöcke“ aktualisiert, um die neue Länge anzugeben, nachdem der neue optionale Block hinzugefügt worden ist, so dass der Wert des Parameters „Länge der opt Blöcke“ gleich dem Wert des Parameters „Länge der opt Blöcke“ plus dem Parameter „neue Datenlänge“ ist. In der Operation760 wird die richtige neue Gesamtzahl in dem Wert des Parameters „Anz. opt Blöcke“ für die optionalen Blöcke in dem Wert des Parameters „opt Blöcke“ zurückgegeben. - Gemäß weiteren Aspekten der Erfindung möchte der Benutzer der ersten Datenverarbeitungseinheit
20 möglicherweise in der Lage sein, seinen CV kryptographisch an den Schlüssel gebunden zu halten, selbst wenn er das Schlüsseltoken100 in einen Schlüsselblock400 exportiert, falls das HSM der zweiten Datenverarbeitungseinheit30 dieselbe Architektur wie die erste Datenverarbeitungseinheit20 realisiert. Normalerweise verfügen die Schlüsselblöcke400 jedoch über keine festgelegten Verfahren, um herstellereigene Strukturen von Schlüsselsteuerungsdaten zuzuordnen, wie zum Beispiel den CCA-CV zum Schlüsselblock400 . Folglich wird ein Verfahren bereitgestellt, bei dem herstellereigenes Material in dem Schlüsselblock400 in einer für den Schlüsselblock400 geeigneten Darstellung codiert wird, wobei in sicherer Weise aufgezeichnet wird, ob diese Operation für einen bestimmten CCA-CV zulässig oder untersagt ist. - Das vorliegende Verfahren verwendet einen optionalen Block in dem Schlüsselblock
400 und legt ein Format und eine Verarbeitungsmethode fest, um den CV in dem Feld490 für die optionalen Blöcke zu codieren. Entsprechend den Normen für den Schlüsselblock400 stellen bestimmte numerische Markierungen für die optionalen Blöcke herstellereigene Informationen dar, die in dem Feld490 für die optionalen Blöcke dargestellt werden. Das vorliegende Verfahren betrifft 2 Punkte. Der erste Punkt ist die sichere Codierung einer von dem Benutzer getroffenen Richtlinien-(Policy-)Entscheidung dahingehend, ob der CCA-Schlüssel in dem Format des Schlüsselblocks400 exportiert werden darf. Diese Richtlinie wird sicher an den CCA-Schlüssel gebunden, indem das Verschlüsselungsverfahren für den CCA-Schlüssel in dem HSM ausgeführt wird, so dass, wenn die CV-Richtlinienbits geändert werden, wenn die den Schlüssel übertragende Datenstruktur außerhalb des HSM gespeichert wird, das CCA-Schlüsselmaterial einen anderen Wert hat, wenn es später in dem HSM entschlüsselt wird, und folglich nutzlos ist. Der zweite Punkt betrifft eine Formatierung und eine Codierung der Daten in dem „Daten“-Teil des optionalen Blocks, wobei das resultierende Feld490 für die optionalen Blöcke gemäß Folgendem angeordnet wird. - Bezug nehmend auf
5 fährt das Verfahren entsprechend dem Folgenden fort, wenn der Benutzer der ersten Datenverarbeitungseinheit20 die Anforderung stellt, dass das Schlüsseltoken100 in dem Schlüsselblock400 codiert werden und von dem CV begleitet werden soll. Zuerst werden die an die Parameter-Datenbank201 übergebenen Parameter in der Operation800 auf Gültigkeit geprüft. Hier wird das Schlüssel-Token100 als eine Datenstruktur festgelegt, die einen CV und einen Schlüssel enthält, der kryptographisch an den CV gebunden ist, so dass eine Änderung des CV den Schlüssel ändert und ihn nutzlos macht, wobei das Schlüsseltoken eine gültige Version und ein gültiges Format hat, einen Schlüssel und einen CV enthält und der CV angibt, dass das Schlüsseltoken100 in den Schlüsselblock400 exportiert werden darf. Darüber hinaus wird der Schlüsselblock400 zumindest am Anfang als ein teilweise vorbereiteter Schlüsselblock400 festgelegt, der über Platz verfügt, um einen neuen optionalen Block und eine unter der Höchstzahl liegende Anzahl hinzuzufügen. Als Nächstes wird in der Operation810 die erforderliche Länge für die Daten des CV berechnet und überprüft, und in der Operation820 werden eine optionale Block-Markierung und Längenfelder des Schlüsselblocks400 vorbereitet. In der Operation830 werden eine Kennung für herstellereigene Informationen, eine Kennung für einen Teilblock und Längenfelder vorbereitet und in der Operation840 wird der CV in ein korrektes Format umgewandelt. Schließlich wird die Anzahl der optionalen Blöcke in der Operation850 aktualisiert. - In einer Import-Operation übergibt ein Benutzer der zweiten Datenverarbeitungseinheit
30 die folgenden Parameter an die Parameter-Datenbank301 , auf die von dem HSM der zweiten Datenverarbeitungseinheit30 zugegriffen wird, um Informationen aus dem Schlüsselblock400 in das neue Schlüsseltoken500 zu importieren. Zu den Parametern gehören Schlüsselwörter der Regelmatrix, wie zum Beispiel ein Verschlüsselungsverfahren mit einem einzigen Schlüssel, eine Untergruppe „C0“, eine Untergruppe „K0“ oder „K1“, eine Untergruppe „V0“/„V1“/„V2“, eine Untergruppe „EO“/„E2“, eine Untergruppe „E1“, eine Untergruppe „E5“, eine Schlüsselableitungsebene und ein Schlüsseltyp-Änderungswert. Das Verschlüsselungsverfahren mit einem einzigen Schlüssel kann entweder „INTERNAL“, das sich auf ein internes Schlüsseltoken bezieht, oder „EXTERNAL“ sein, das sich auf ein externes Schlüsseltoken bezieht. Wie von der Umsetzungstabelle302 angegeben, entspricht jede der Untergruppen einer Anweisung in dem neuen Schlüsseltoken500 . - In der Untergruppe „CO“ kann sich entweder die Anweisung CVK-CVV oder die Anweisung CVK-CSC befinden, die dazu dienen, die CVK-Anweisung des Schlüsselblocks
400 in eine Anweisung des neuen Schlüsseltokens500 zur Verwendung bei der Berechnung von verschiedenen Kreditkarten-Prüfnummern umzuwandeln. In den Untergruppen „K0“ oder „K1“ kann sich entweder die Anweisung EXPORTER, die Anweisung OKEYXLAT, die Anweisung IMPORTER oder die Anweisung IKEYXLAT für die Verwendungs- und Modusschlüssel KO-E/D oder K0-B des Schlüsselblocks400 befinden, um die KEK-Anweisung des Schlüsselblocks400 in einen Schlüssel vom Typ eines neuen Schlüsseltokens500 umzuwandeln. In der Untergruppe „V0“/„V1 “/„V2“ kann sich entweder die Anweisung PINGEN oder die Anweisung PINVER befinden, um einen PIB-Überprüfungsschlüssel des Schlüsselblocks400 in einen PINGEN- oder PINVER-Schlüssel des neuen Schlüsseltokens500 umzuwandeln. In der Untergruppe „E0“/„E2“ kann sich entweder die Anweisung DMAC oder die Anweisung DMV befinden, um den EMV-Hauptschlüssel des Schlüsselblocks400 für Anwendungs-Kryptogramme oder für eine Anweisung für den sicheren Nachrichtenaustausch in einen Schlüssel vom Typ DKYGENKY des neuen Schlüsseltokens500 mit den Untertypen DMAC oder DMV umzuwandeln. In der Untergruppe „E1“ kann sich entweder die Anweisung DMPIN oder die Anweisung DDATA befinden, um einen EMV-Hauptschlüssel des Schlüsselblocks400 für eine Anweisung des Secure Messaging for Confidentiality in einen Schlüssel vom Typ DKYGENKY des neuen Schlüsseltokens500 mit den Untertypen DMPIN oder DDATA umzuwandeln. In der Untergruppe „E5“ kann sich entweder die Anweisung DMAC, die Anweisung DMV oder die Anweisung DEXP befinden, um einen EMV-Hauptschlüssel des Schlüsselblocks400 für die Kartenpersonalisierung in den Schlüssel vom Typ des neuen Schlüsseltokens500 mit den Untertypen DMAC, DMV oder DEXP umzuwandeln. Auf der Schlüsselableitungsebene kann sich entweder die Anweisung DKYL0 oder die Anweisung DKYL1 befinden, um den EMV-Hauptschlüssel des Schlüsselblocks400 in den Schlüssel vom Typ des neuen Schlüsseltokens500 auf der Ableitungsebene DKYLO oder DKYL1 umzuwandeln. In dem Schlüsseltyp-Änderungswert kann sich eine Anweisung NOOFFSET befinden, die nur für Verwendungswerte des „V0“/„V1 “-Schlüsselblocks 400 gültig ist und das HSM der zweiten Datenverarbeitungseinheit30 anweist, einen Schlüssel vom Typ PINGEN oder PINVER in ein Schlüsseltoken500 zu importieren, das nicht an der Erzeugung oder Überprüfung teilnehmen kann. - Zu den Parametern gehören des Weiteren ein Parameter „tr31-Schlüsselblocklänge“, ein Parameter „tr31-Schlüsselblock“, ein Parameter „Länge der Entschlüsselungs-Kek-Kennung“, ein Parameter Entschlüsselungs-Kek-Kennung“, ein Parameter „Länge der Verschlüsselungs-Kek-Kennung“, ein Parameter „Verschlüsselungs-Kek-Kennung“, ein Parameter „Länge der Kennung des Ausgabeschlüssels“, ein Parameter „Kennung des Ausgabeschlüssels“, ein Parameter „Anz. opt Blöcke“, ein Parameter „cv-Quelle“ und ein Parameter „Schutzverfahren“. Der Parameter „tr31-Schlüsselblocklänge“ zeigt auf eine ganze Zahl, die die Länge des Parameters „tr31-Schlüsselblock“ angibt. Der Parameter „tr31-Schlüsselblock“ zeigt auf eine String-Variable, die den zu importierenden Eingabeschlüsselblock des Schlüsselblocks
400 enthält. Der Parameter „Länge der Entschlüsselungs-Kek-Kennung“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „Entschlüsselungs-Kek-Kennung“ angibt. Der Parameter „Entschlüsselungs-Kek-Kennung“ zeigt auf eine String-Variable, die das neue Schlüsseltoken500 enthält, welches den Verschlüsselungsschlüssel enthält, der zum Entschlüsseln des Parameters „tr31-Schlüsselblock“ verwendet werden soll. Wenn keine Verschlüsselungs-Kek-Kennung angegeben ist und das Regelmatrix-Schlüsselwort „EXTERNAL“ übergeben wird, wird dieser Parameter auch verwendet, um das neue Schlüsseltoken500 auch für die Ausgabe zu verschlüsseln. Der Parameter „Länge der Verschlüsselungs-Kek-Kennung“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „Verschlüsselungs-Kek-Kennung“ angibt. Der Parameter „Verschlüsselungs-Kek-Kennung“ zeigt auf eine String-Variable, die das neue Schlüsseltoken500 enthält, welches den Verschlüsselungsschlüssel enthält, der zum Verschlüsseln des ausgegebenen neuen Schlüsseltokens500 verwendet werden soll, wenn ein anderer Verschlüsselungsschlüssel erforderlich ist und das Regelmatix-Schlüsselwort „EXTERNAL“ übergeben wurde. Der Parameter „Länge der Kennung des Ausgabeschlüssels“ zeigt auf eine ganze Zahl, die eine Länge des Parameters „Kennung des Ausgabeschlüssels“ angibt. Bei der Eingabe muss er die Größe des verfügbaren Pufferspeichers angeben, und bei der Rückgabe wird er aktualisiert, damit er die tatsächliche Länge dieses zurückgesandten Tokens enthält. Der Parameter „Kennung des Ausgabeschlüssels“ zeigt auf eine String-Variable, in die das neue Schlüsseltoken500 gestellt wird. Der Parameter „Anz. opt Blöcke“ zeigt auf eine ganzzahlige Variable, in die die Anzahl der optionalen Blöcke, die in dem Schlüsselblock400 vorhanden sind, gestellt wird. Der Parameter „cv-Quelle“ zeigt auf eine ganzzahlige Variable, die bei der Ausgabe einen Wert aufweist, der anzeigt, wie der CV in dem ausgegebenen neuen Schlüsseltoken500 erzeugt worden ist. Es kann einer der folgenden drei Werte sein: 0x00, der anzeigt, dass kein CV in einem Schlüsselblock400 optional vorhanden war und dass der ausgegebene CV auf der Grundlage von eingegebenen Schlüsselwörtern der Regelmatrix und den Attributen in dem Schlüsselblock400 erzeugt wurde, 0x01, der anzeigt, dass ein CV von einem optionalen Block in dem Schlüsselblock400 abgerufen wurde, dass die Verwendung und der Modus ebenfalls angegeben wurden und dass die Kompatibilität für diese Werte mit dem CV geprüft und dieser CV dann in dem ausgegebenen neuen Schlüsseltoken500 verwendet wurde, oder 0x02, der anzeigt, dass ein CV von einem optionalen Block in dem Schlüsselblock400 abgerufen wurde, dass die Verwendung und der Modus die vorher festgelegten Werte aufwiesen, was anzeigt, dass der enthaltene CV die einzige Quelle an Steuerungsinformationen war und dass der CV von dem Schlüsselblock400 als der CV für das neue Schlüsseltoken500 verwendet wurde. Der Parameter „Schutzverfahren“ zeigt auf eine ganzzahlige Variable, die bei der Ausgabe einen Wert aufweist, der anzeigt, welches Verfahren zum Schutz des Eingabeschlüsselblocks400 verwendet wurde. Es kann einer der folgenden drei Werte sein: 0x00, 0x01 oder 0x02, die anzeigen, dass der Schlüsselblock400 mit Hilfe des Verfahrens mit der Schlüsselblock-Versionskennung „A“, „B“ oder „C“ geschützt wurde. - Bezug nehmend auf
6 wird nun der Importvorgang beschrieben. Zunächst werden in der Operation900 die für den Import notwendigen Bedingungen geprüft. Der Prüfvorgang beinhaltet eine Prüfung des Parameters der Regelmatrix auf Gültigkeit, wobei die Prüfung auf Gültigkeit eine kleinstmögliche Anzahl von Schlüsselwörtern und nur 1 von jeder erforderlichen Gruppe der Schlüsselwörter und entweder 0 oder 1 von jeder optionalen Gruppe der Schlüsselwörter sowie eine Überprüfung beinhaltet, dass keiner der Parameter „tr31-Schlüsselblocklänge“, „tr31-Schlüsselblock“, „Länge der Entschlüsselungs-Kek-Kennung“, „Entschlüsselungs-Kek-Kennung“, „Länge der Verschlüsselungs-Kek-Kennung“, „Verschlüsselungs-Kek-Kennung“, „Länge der Kennung des Ausgabeschlüssels“, „Kennung des Ausgabeschlüssels“, „Anz. opt Blöcke“, „cv-Quelle“ und „Schutzverfahren“ fehlt (d.h., sie sind Nullzeiger). - Der Prüfvorgang der Operation
900 beinhaltet des Weiteren eine Prüfung des Schlüsseltokens100 auf Gültigkeit, das in dem Parameter „Entschlüsselungs-Kek-Kennung“ und in dem Parameter „Verschlüsselungs-Kek-Kennung“ an die Parameter-Datenbank301 übergeben wurde. Diese Prüfung auf Gültigkeit beinhaltet eine Überprüfung, dass der an die Parameter-Datenbank301 mit dem Parameter „Entschlüsselungs-Kek-Kennung“ übergebene Wert gültig ist, sowie eine Überprüfung, dass der mit der Verschlüsselungs-Kek-Kennung an die Parameter-Datenbank301 übergebene Wert gültig ist. - Der Prüfvorgang der Operation
900 beinhaltet ferner eine Überprüfung, ob das im Parameter „Entschlüsselungs-Kek-Kennung“ empfangene Schlüsseltoken100 einen CV mit der Erlaubnis hat, den Parameter „tr31-Schlüsselblock“ über den CV-Steuersatz zu entschlüsseln oder umzusetzen, eine Überprüfung, ob das in dem Parameter „Verschlüsselungs-Kek-Kennung“ empfangene Schlüsseltoken100 einen CV mit der Erlaubnis hat, den Parameter „Kennung des Ausgabeschlüssels“ zu verschlüsseln oder umzusetzen, sowie eine Prüfung des Schlüsselblocks400 auf Gültigkeit. Diese Prüfung auf Gültigkeit beinhaltet eine Prüfung, ob die Schlüsselblockfelder gültige Werte mit korrekt formatiertem Text und bestimmten Feldbedingungen haben und ob die Version des Schlüsselblocks400 unterstützt wird. - Diese Prüfung auf Gültigkeit beinhaltet ferner eine syntaktische Analyse der Daten des optionalen Blocks in dem Schlüsselblock
400 , auf den der Parameter „tr31-Schlüssel“ verweist, um ihn auf Gültigkeit zu prüfen sowie seine Länge und die Anzahl der optionalen Blöcke zu ermitteln, die er enthält. Zu der syntaktischen Analyse gehört die Überprüfung, ob die Anzahl an optionalen Blöcken der Anzahl, die in dem Schlüsselblockfeld für diese Anzahl angegeben ist, sowie dem Parameter „Anz. opt Blöcke“ entspricht, die Bestätigung, dass die Längenfelder richtig und korrekt formatiert sind, das Verbieten von doppelten optionalen Block-Markierungen, das Erlauben von numerischen optionalen Block-Markierungen, das Überprüfen, ob alphabetische Block-Markierungen korrekt formatiert sind, und, wenn ein in einem optionalen Block codierter CV aufgefunden wird, das Umsetzen des CV in binäre Daten als Vorbereitung für die Gültigkeitsprüfung. - Im Anschluss an den Prüfvorgang der Operation
900 fährt das Verfahren mit der Operation910 fort, indem der Schlüsselblock400 mit Hilfe des Schlüsselverschlüsselungsschlüssels, der in dem Parameter „Entschlüsselungs-Kek-Kennung“ übergeben wurde, und des Entschlüsselungsverfahrens, das von dem Feld410 für die Versions-ID des Schlüsselblocks angegeben wird, entschlüsselt wird, und indem die für das Feld410 für die Versions-ID des Schlüsselblocks spezifischen ACPs in der Operation920 auf Gültigkeit geprüft werden. Daraufhin wird in der Operation930 der in dem neuen Schlüsseltoken500 zu verwendende CV bestimmt. Es gibt 3 Möglichkeiten der Bestimmung: Der CV kann als ein optionaler Block mit Verwendungs- und Moduswerten des numerischen Schlüsselblocks400 übergeben werden, der CV kann als ein optionaler Block mit Verwendungs- und Moduswerten des nichtnumerischen Schlüsselblocks übergeben werden, die mit dem Inhalt des CV verglichen werden müssen, und es besteht die Möglichkeit, keinen CV als einen optionalen Block in dem Schlüsselblock400 zu übergeben. - Wenn der CV als ein optionaler Block mit den Verwendungs- und Moduswerten des numerischen Schlüsselblocks
400 übergeben wird und wenn das Schlüsselverwendungsfeld430 einen Wert von beispielsweise „10“ hat und das Feld450 für die Verwendungsmodi einen Wert von beispielsweise „1“ hat, wird dieser CV zum Erstellen des neuen Schlüsseltokens500 verwendet (wenn die Werte numerisch, aber voneinander abweichend sind, bricht der Prozess mit einem Fehler ab). Wenn kein CV übergeben wird, werden die Werte des Schlüsselverwendungsfelds430 und des Felds450 für die Verwendungsmodi mit den Schlüsselwörtern der Regelmatrix abgeglichen, die eine weitere Auswertung bei der Erstellung des neuen Schlüsseltokens500 angeben, ein Schlüsseltyp, ein Untertyp und Einschränkungen werden mit Hilfe der Umsetzungstabelle302 gewählt und der CV wird auf der Grundlage des gewählten Schlüsseltyps, des Untertyps und der Schlüsselwörter der Regelmatrix erzeugt. - Wenn der CV als ein optionaler Block mit einem nichtnumerischen Schlüsselverwendungsfeld
430 und einem nichtnumerischen Feld450 für die Verwendungsmodi übergeben wird, wird die Kompatibilität zwischen Attributen in dem CV und dem nichtnumerischen Schlüsselverwendungsfeld430 und dem nichtnumerischen Feld450 für die Verwendungsmodi mit Hilfe der Umsetzungstabelle302 überprüft. Wenn keine Kompatibilität vorhanden ist, bricht der Prozess ab, und bei Vorhandensein von Kompatibilität wird beziehungsweise werden (ein) entsprechende(r) ACP(s) auf seine/ihre Funktionsweise geprüft, es wird überprüft und bestätigt, dass, wenn sich die Bits des Schlüsselteils darauf befinden, das Feld460 für die Schlüsselversionsnummer korrekt ist, und dieser CV wird zum Erstellen des neuen Schlüsseltokens500 verwendet. - An diesem Punkt wird das Verfahren fortgesetzt, indem das neue Schlüsseltoken
500 in der Operation940 beziehungsweise in der Operation950 vorbereitet und erstellt wird. Der Vorbereitungsvorgang der Operation940 beinhaltet das Kopieren des gewählten oder erzeugten CV in einen Pufferspeicher und das Setzen des Versions- und des Attributfeldes. Der Erstellungsvorgang der Operation950 geht wie folgt vonstatten: Wenn das Regelmatrix-Schlüsselwort „EXTERNAL“ an die Parameter-Datenbank301 übergeben wird, wird der Parameter „Entschlüsselungs-Kek-Kennung“ oder der Parameter „Verschlüsselungs-Kek-Kennung“ (sofern übergeben) verwendet, um Schlüsselmaterial von dem entschlüsselten Schlüsselblock400 zusammen mit dem neuen CV zu verschlüsseln, wobei das Ergebnis in die verschlüsselten Schlüsselfelder des neuen Schlüsseltokens500 gestellt wird. Wenn das Regelmatrix-Schlüsselwort „INTERNAL“ übergeben wird, wird der Hauptschlüssel des HSM verwendet, um das Schlüsselmaterial von dem entschlüsselten Schlüsselblock400 zusammen mit dem neuen CV zu verschlüsseln, wobei das Ergebnis in die verschlüsselten Schlüsselfelder des neuen Schlüsseltokens500 gestellt wird. Dann wird der Wert des Parameters „Anz. opt Blöcke“ entsprechend dem Parameter „tr31 Anz. opt“ gesetzt und der Wert des Parameters „cv-Quelle“ sowie der Wert des Parameters „Schutzverfahren“ werden mit Bezug auf die Umsetzungstabelle302 gesetzt. Das ausgegebene neue endgültige Schlüsseltoken500 wird dann in den Parameter „Kennung des Ausgabeschlüssels“ kopiert und die Länge in dem Parameter „Länge der Kennung des Ausgabeschlüssels“ wird aktualisiert. - Gemäß weiteren Aspekten der vorliegenden Erfindung wird ein Verfahren bereitgestellt, das dazu dient, Informationen in dem Schlüsselblock
400 syntaktisch zu analysieren und auf Gültigkeit zu prüfen und bestimmte und/oder angeforderte Informationen über Daten des optionalen Blocks, die sich in dem Schlüsselblock400 befinden, zurückzusenden. Gemäß dem Verfahren übergibt ein Benutzer der Erfindung die folgenden Parameter, die alle als Zeiger angegeben sind, an die Parameter-Datenbank301 . Die Parameter können gemäß der Erfindung, mittels anderer Verfahren oder nach Wert übergeben werden. - Zu den Parametern gehören ein Parameter „Regelmatrix“, ein Parameter „tr31-Schlüssellänge“ und ein Parameter „tr31-Schlüssel“. Der Parameter „Regelmatrix“ zeigt auf eine String-Variable, die ein Schlüsselwort enthält, welches gewünschte Informationen angibt. Die Schlüsselwörter haben eine Länge von 8 Byte und müssen linksbündig ausgerichtet und auf der rechten Seite mit Leerzeichen aufgefüllt werden. Zu den Schlüsselwörtern der Regelmatrix gehören INFO, das zu einer Anweisung gehört, Informationen über einen ganzen Array von optionalen Blöcken in dem Schlüsselblock
400 zurückzusenden, und DATA, das zu einer Anweisung gehört, Daten zurückzusenden, die in einem angegebenen optionalen Block aus dem Array von optionalen Blöcken enthalten sind. Der Parameter „tr31-Schlüssellänge“ zeigt auf eine ganze Zahl, die eine Länge des Parameters tr31-Schlüssel enthält, und der Parameter „tr31-Schlüssel“ zeigt auf einen Pufferspeicher, der den Schlüsselblock400 enthält, welcher syntaktisch analysiert werden soll. - Zu Parametern für den Parameter „INFO“ des Schlüsselworts der Regelmatrix gehören ein Parameter „Anz. opt Blöcke“, ein Parameter „IDs der opt Blöcke“ und ein Parameter „Längen der opt Blöcke“. Der Parameter „Anz. opt Blöcke“ zeigt auf eine ganze Zahl, die die Anzahl der optionalen Blöcke in dem Schlüsselblock
400 enthält. Der Wert wird mit dem entsprechenden Wert in dem Kopfbereich des Schlüsselblocks verglichen und wenn sie nicht übereinstimmen, bricht das Verfahren mit einem Fehler ab. Der Grund, dass dieser Parameter enthalten ist, besteht darin, dass die jeweilige Größe der Pufferspeicher, die der Benutzer für die Parameter „IDs der opt Blöcke“ und „Längen der opt Blöcke“ bereitstellen muss, auf die Anzahl der optionalen Blöcke bezogen ist. Wenn der Benutzer die Anzahl der optionalen Blöcke nicht genau kennt, hat er möglicherweise Pufferspeicher zugeordnet, die zu klein sind. Der Parameter „Längen der opt Blöcke“ zeigt auf ein Array von vorzeichenfreien, ganzzahligen 16-Bit-Werten. Nach einer erfolgreichen Rücksendung durch das Verfahren wird das Array, auf das dieser Parameter zeigt, mit der in Byte angegebenen Länge eines jeden der optionalen Blöcke, welche in dem Schlüsselblock400 enthalten sind, in derselben Reihenfolge, in der sie erscheinen, gefüllt. Dies entspricht einer Rücksendung des Array in dem Parameter „IDs der opt Blöcke“. Die Gesamtlänge der zurückgesandten Liste entspricht dem Zweifachen der Anzahl der optionalen Blöcke (eine vorzeichenfreie, ganze 16-BitZahl entspricht 2 Byte an Speicher), weswegen der Benutzer einen Pufferspeicher bereitstellen muss, dessen Länge mindestens das Doppelte des Werts beträgt, den er in dem Parameter „Anz. opt Blöcke“ übergibt. - Zu Parametern für den Parameter „DATA“ des Schlüsselworts der Regelmatrix gehören ein Parameter „ID des opt Blocks“, ein Parameter „Länge der Daten des opt Blocks“ und ein Parameter „Daten des opt Blocks“. Der Parameter „ID des opt Blocks“ zeigt auf einen 2-Byte-String, der die Kennung des Blocks enthält, für den die Anwendung Daten anfordert. Der Parameter „Länge der Daten des opt Blocks“ zeigt auf eine ganzzahlige Variable, die die Länge für den Parameter „Daten des opt Blocks“ enthält. Bei der Eingabe muss er auf die Länge des Pufferspeichers gesetzt werden, der von dem Anwendungsprogramm bereitgestellt wird, und bei der Ausgabe wird er aktualisiert, damit er die Länge der zurückgesandten Daten des optionalen Blocks in Bytes enthält. Der Parameter „Daten des opt Blocks“ zeigt auf einen Pufferspeicher, bei dem das Verb die Daten speichert, die es aus dem angegebenen optionalen Block liest. Der Pufferspeicher muss über ausreichend Platz für die Daten verfügen, der von dem Eingabewert des Parameters „Länge der Daten des opt Blocks“ angegeben wird. Bei der Ausgabe werden die Daten des optionalen Blocks, die dem Parameter „ID des opt Blocks“ entsprechen, in den Pufferspeicher kopiert und ihre Länge wird in dem Parameter „Länge der Daten des opt Blocks gespeichert.
- Bezug nehmend auf
7 beinhaltet das Verfahren eine Überprüfungsoperation1000 , eine eingangs erfolgende Parsing-Operation1010 , eine sekundäre INFO-Parsing-Operation1020 und eine sekundäre DATA-Parsing-Operation1030 . Der Überprüfungsvorgang der Operation1000 beinhaltet eine Überprüfung, dass keiner der Parameter „Regelmatrix“, „tr31-Schlüssellänge“ und „tr31-Schlüssel“ fehlt (d.h., sie sind Nullzeiger), eine Überprüfung für das Regelmatrix-Schlüsselwort INFO, dass keiner der Parameter „Anz. opt Blöcke“, IDs der opt Blöcke“ und „Länge der opt Blöcke“ fehlt (d.h., sie sind Nullzeiger) und eine Überprüfung für das Regelmatrix-Schlüsselwort DATA, dass keiner der Parameter „ID des opt Blocks“, „Länge der Daten des opt Blocks“ und „Daten des opt Blocks“ fehlt (d.h., sie sind Nullzeiger). Der Überprüfungsvorgang der Operation1000 beinhaltet ferner eine Überprüfung, dass der Parameter „tr31-Schlüssellänge“ nicht fehlt (d.h., dass er kein Nullzeiger ist), eine Überprüfung für das Regelmatrix-Schlüsselwort INFO, dass der Parameter „Anz. opt Blöcke“ nicht fehlt (d.h., dass er kein Nullzeiger ist), und eine Überprüfung für das Regelmatrix-Schlüsselwort DATA, dass der Parameter „Länge der Daten des opt Blocks) nicht fehlt (d.h., dass er kein Nullzeiger ist). Der Überprüfungsvorgang der Operation1000 beinhaltet des Weiteren eine Prüfung, ob die Schlüsselblockfelder in dem Parameter „tr31-Schlüssel“ zulässige Wertebereiche sind. Dies beinhaltet eine Bestätigung, dass die an dem Schlüsselblock orientierte Formatierung der Daten in dem korrekten Format erfolgt und dass eine Version des Schlüsselblocks400 unterstützt wird. - Dieser eingangs erfolgende Parsing-Vorgang der Operation
1010 führt eine syntaktische Analyse der Daten des optionalen Blocks in dem Schlüsselblock400 durch, auf den der Parameter „tr31-Schlüssel“ verweist, um ihn auf Gültigkeit zu prüfen und seine Länge sowie die Anzahl der optionalen Blöcke, die er enthält, zu ermitteln. Gemäß der syntaktischen Analyse muss eine Anzahl von optionalen Blöcken der Anzahl, die in dem Schlüsselblockfeld für diese Anzahl angegeben ist, sowie dem Parameter „Anz. opt Blöcke“ entsprechen, die Längenfelder müssen korrekt formatiert sein, doppelte optionale Block-Markierungen sind nicht zulässig, numerische optionale Block-Markierungen sind zulässig und alphabetische Block-Markierungen müssen denjenigen des Schlüsselblocks400 entsprechen. - Der sekundäre INFO-Parsing-Vorgang der Operation
1020 kommt in dem Fall zur Anwendung, in dem das Regelmatrix-Schlüsselwort INFO vorhanden ist. Wenn hier keine optionalen Blöcke gefunden werden, setzt das Verfahren den Parameter „Anz. opt Blöcke“ so, dass er Nullblöcke anzeigt und mit einer Meldung „erfolgreich“ zurückgeschickt wird. Dann wird der Schlüsselblock in dem Parameter „tr31-Schlüssel“ iterativ syntaktisch analysiert, um die Markierung und die Längenfelder für jeden optionalen Blick in dem Kopfbereich zu finden. Während der Durchführung der syntaktischen Analyse für jeden angetroffenen optionalen Block wird der Block zu einem Array in dem Parameter „IDs der opt Blöcke“ hinzugefügt, welcher jede der Block-Markierungen in der Reihenfolge, in der sie in dem Kopfbereich erscheinen, enthält, und zu einem Array in dem Parameter „Länge der opt Blöcke“, der jede Länge der optionalen Blöcke enthält, welche in der Reihenfolge, in der sie in dem Kopfbereich erscheinen, in das korrekte Format umgewandelt wurden. - Der sekundäre DATA-Parsing-Vorgang der Operation
1030 kommt in dem Fall zur Anwendung, in dem das Regelmatrix-Schlüsselwort DATA vorhanden ist. Wenn keine optionalen Blöcke gefunden werden, bricht das Verfahren hier ab. Dann wird der Schlüsselblock in dem Parameter „tr31-Schlüssel“ iterativ syntaktisch analysiert, wobei die Markierung von einem jeden mit dem Wert in dem Parameter „ID des opt Blocks“ verglichen wird. Wenn die angeforderte Markierung nicht gefunden wird, bevor das Ende des Teils mit den optionalen Blöcken erreicht ist, bricht das Verfahren ab. Anschließend wird der Datenteil dieses optionalen Blocks in den Parameter „Daten des opt Blocks“ mit einer Länge kopiert, die von dem Längenfeld des optionalen Blocks angegeben wird, das Längenfeld des optionalen Blocks wird umgewandelt und als ein Wert in den Parameter „Länge der Daten des opt Blocks“ gestellt und eine Benachrichtigung über die erfolgreiche Durchführung wird an den Benutzer zurückgesandt. - Zu den technischen Wirkungen und Vorteilen der vorliegenden Erfindung gehören die Bereitstellung eines Verfahrens zur sicheren Umsetzung, so dass ein Benutzer nicht außerhalb eines Hardware-Sicherheitsmoduls (HSM) arbeiten und folglich Schlüsselmaterial offen legen muss. Gemäß dem Verfahren braucht der Benutzer nicht die Gültigkeit eines Arrays von optionalen Blöcken in Frage zu stellen, und ein resultierendes Array kann direkt bei der Erzeugung eines standardmäßigen Schlüsselblocks verwendet werden. Auch wird der Benutzer unmittelbar in die Lage versetzt, Schlüsseltoken an Schlüsselblöcke zu exportieren und diese Schlüsselblöcke in Schlüsseltoken zu importieren, ohne die Informationen über die Schlüsseltoken zu verlieren.
- Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung der Erfindung zu verstehen. Die Singular-Formen „ein“, „eine“ und „der“, „die“, „das“ sollen in der hier verwendeten Weise auch die Plural-Formen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe „aufweist“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen.
- Die entsprechenden Strukturen, Materialien, Vorgänge und Gleichwertiges von allen Mitteln oder Schritten sowie Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Erfindung in der offenbarten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die entsprechende vorgesehene Verwendung geeignet sind, zu ermöglichen.
- Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung ferner als ein System, ein Verfahren oder ein Computer-Programmprodukt realisiert werden. Folglich können Aspekte der vorliegenden Erfindung die Form einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle allgemein als eine „Schaltung“, ein „Modul“ oder ein „System“ bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computer-Programmprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträger(n) befindet, auf dem beziehungsweise denen sich der von einem Computer lesbare Programmcode befindet.
- Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das von einem Computer lesbare Speichermedium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. In Zusammenhang mit diesem Schriftstück kann ein von einem Computer lesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Anweisungssausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
- Ein von einem Computer lesbarer Signaldatenträger kann ein übertragenes Datensignal mit einem darin enthaltenen, von einem Computer lesbaren Programmcode, beispielsweise in einem Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein übertragenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne darauf beschränkt zu sein, annehmen. Bei einem von einem Computer lesbaren Signaldatenträger kann es sich um jeden beliebigen von einem Computer lesbaren Datenträger handeln, der kein von einem Computer lesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit übertragen, weiterleiten oder transportieren kann.
- Auf einem von einem Computer lesbaren Datenträger enthaltener Programmcode kann mittels eines geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz (HF) usw., ohne darauf beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
- Computer-Programmcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache „C“ oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden werden oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) hergestellt werden.
- Aspekte der vorliegenden Erfindung werden nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computer-Programmprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Anweisungen eines Computerprogramms realisiert werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Computers für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
- Diese Computerprogramm-Anweisungen können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
- Die Computerprogramm-Anweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
- Der Ablaufplan und die Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computer-Programmprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist auch festzuhalten, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Hardware für spezielle Anwendungen beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Computer-Anweisungen ausgeführt werden können.
Claims (7)
- Verfahren zum Schützen eines Steuervektors in einem verschlüsselungsbefähigten Datenverarbeitungssystem, wobei das Verfahren aufweist: Prüfen von Parametern auf Gültigkeit, die an eine Parameter-Datenbank übergeben werden; Bestimmen einer erforderlichen Länge für Daten eines optionalen Blockes eines Steuervektors (CV), eines Formates und eines Berechnungsverfahren; Vorbereiten des optionalen Blocks entsprechend einem Ergebnis der Bestimmung; Umwandeln des CV in das bestimmte Format für einen standardmäßigen Schlüsselblock, während der umgewandelte CV in den optionalen Block kopiert wird; und Aktualisieren von Daten des optionalen Blocks in dem standardmäßigen Schlüsselblock, wobei das Bestimmen aufweist: Berechnen einer erforderlichen Länge für die Daten des CV; Berechnen von erforderlichen Längen von Teilblöcken, und wobei das Vorbereiten des optionalen Blocks aufweist: Vorbereiten einer optionalen Block-Markierung und von Längenfeldern des standardmäßigen Schlüsselblocks; und Vorbereiten einer Kennung für herstellereigene Informationen, einer Kennung für einen Teilblock und von Längenfeldern.
- Verfahren nach
Anspruch 1 , wobei die Prüfung auf Gültigkeit aufweist: Festlegen eines Schlüsseltokens als eine Datenstruktur, die den CV und eine Schlüsselsteuerungsinformation aufweist, die kryptographisch an den CV gebunden ist, so dass eine Änderung des CV die Schlüsselsteuerungsinformation ändert; und teilweises Vorbereiten des standardmäßigen Schlüsselblocks. - Verfahren nach
Anspruch 2 , wobei das Festlegen zusätzlich ein Bestätigen aufweist, dass das Schlüsseltoken eine gültige Version und ein gültiges Format hat, dass das Schlüsseltoken den Schlüssel und den CV aufweist und dass der CV angibt, dass das Schlüsseltoken exportierbar ist. - Verfahren nach
Anspruch 2 , wobei das teilweise Vorbereiten ein Bestätigen aufweist, dass der Schlüsselblock über Platz verfügt, um einen neuen optionalen Block und eine unter einer vorher festgelegten Höchstzahl liegende Anzahl hinzuzufügen. - Verfahren nach einem der vorhergehenden Ansprüche, wobei das Aktualisieren ein Aktualisieren einer Anzahl von optionalen Blöcken und eines Gesamtlängenfeldes des standardmäßigen Schlüsselblocks aufweist.
- Kryptographisches System, das eine Verarbeitungsschaltung aufweist, die so konfiguriert ist, dass sie alle Schritte des in einem der vorhergehenden Ansprüche beanspruchten Verfahrens durchführt.
- Computer-Programmprodukt, das ein physisch greifbares Speichermedium aufweist, welches von einer Verarbeitungsschaltung lesbar ist und auf dem Anweisungen zur Ausführung durch die Verarbeitungsschaltung gespeichert werden, um ein Verfahren nach einem der
Ansprüche 1 bis5 durchzuführen.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
USUS-13/118,951 | 2011-05-31 | ||
US13/118,951 | 2011-05-31 | ||
US13/118,951 US8675871B2 (en) | 2011-05-31 | 2011-05-31 | Protecting a control vector in an optional block of a standard key block |
PCT/IB2012/052431 WO2012164427A1 (en) | 2011-05-31 | 2012-05-15 | Protecting a control vector in a cryptographic system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112012002332T5 DE112012002332T5 (de) | 2014-02-20 |
DE112012002332B4 true DE112012002332B4 (de) | 2020-12-24 |
Family
ID=47258463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112012002332.3T Active DE112012002332B4 (de) | 2011-05-31 | 2012-05-15 | Schützen eines Steuervektors in einem kryptographischen System |
Country Status (5)
Country | Link |
---|---|
US (2) | US8675871B2 (de) |
CN (1) | CN103563289B (de) |
DE (1) | DE112012002332B4 (de) |
GB (1) | GB2505602B (de) |
WO (1) | WO2012164427A1 (de) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905187B (zh) * | 2012-12-26 | 2018-04-03 | 厦门雅迅网络股份有限公司 | 一种基于内容的网络通信加密方法 |
US9252944B2 (en) * | 2014-03-21 | 2016-02-02 | International Business Machines Corporation | Key wrapping for common cryptographic architecture (CCA) key token |
US10607017B2 (en) * | 2017-01-04 | 2020-03-31 | Ca, Inc. | Restricting access to sensitive data using tokenization |
IT201700050153A1 (it) * | 2017-05-09 | 2018-11-09 | St Microelectronics Srl | Modulo hardware di sicurezza, relativo sistema di elaborazione, circuito integrato e dispositivo |
US11616844B2 (en) * | 2019-03-14 | 2023-03-28 | Sphero, Inc. | Modular electronic and digital building systems and methods of using the same |
EP3742317A1 (de) * | 2019-05-21 | 2020-11-25 | Ordnance Survey Limited | Verfahren und system zur gewährung des zugriffs auf daten in einem unveränderlichen ledger-system |
US11652626B2 (en) * | 2020-02-18 | 2023-05-16 | International Business Machines Corporation | Safeguarding cryptographic keys from modification or deletion |
US11575520B2 (en) | 2020-12-14 | 2023-02-07 | International Business Machines Corporation | Key block enhanced wrapping |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003246A1 (en) * | 2002-06-28 | 2004-01-01 | Compaq Information Technologies Group, L.P. | Method and system for secure storage, transmission and control of cryptographic keys |
US20100031021A1 (en) * | 2006-09-22 | 2010-02-04 | International Business Machines Corporation | Method for improved key management for atms and other remote devices |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142578A (en) | 1991-08-22 | 1992-08-25 | International Business Machines Corporation | Hybrid public key algorithm/data encryption algorithm key distribution method based on control vectors |
US5265164A (en) | 1991-10-31 | 1993-11-23 | International Business Machines Corporation | Cryptographic facility environment backup/restore and replication in a public key cryptosystem |
KR100411912B1 (ko) * | 1998-02-24 | 2003-12-18 | 오트크리토에 악츠이오네른오에 옵스체스트보 (모스코브스키야 고로즈카야 텔레폰나야 셋) | 이산 데이터 블록 암호화 방법 |
JP2001352321A (ja) * | 2000-04-06 | 2001-12-21 | Sony Corp | 情報処理システム、情報処理方法、および情報記録媒体、並びにプログラム提供媒体 |
CN1878059A (zh) * | 2006-07-07 | 2006-12-13 | 北京财富投资有限公司 | 一种分组加密及解密算法 |
-
2011
- 2011-05-31 US US13/118,951 patent/US8675871B2/en active Active
-
2012
- 2012-05-15 DE DE112012002332.3T patent/DE112012002332B4/de active Active
- 2012-05-15 WO PCT/IB2012/052431 patent/WO2012164427A1/en active Application Filing
- 2012-05-15 CN CN201280025794.6A patent/CN103563289B/zh active Active
- 2012-05-15 GB GB1321840.9A patent/GB2505602B/en active Active
- 2012-10-18 US US13/655,055 patent/US9178703B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003246A1 (en) * | 2002-06-28 | 2004-01-01 | Compaq Information Technologies Group, L.P. | Method and system for secure storage, transmission and control of cryptographic keys |
US20100031021A1 (en) * | 2006-09-22 | 2010-02-04 | International Business Machines Corporation | Method for improved key management for atms and other remote devices |
Also Published As
Publication number | Publication date |
---|---|
DE112012002332T5 (de) | 2014-02-20 |
CN103563289B (zh) | 2016-08-17 |
US20130058486A1 (en) | 2013-03-07 |
GB201321840D0 (en) | 2014-01-22 |
US9178703B2 (en) | 2015-11-03 |
WO2012164427A1 (en) | 2012-12-06 |
US8675871B2 (en) | 2014-03-18 |
GB2505602B (en) | 2014-09-24 |
GB2505602A (en) | 2014-03-05 |
CN103563289A (zh) | 2014-02-05 |
US20120307999A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112012002332B4 (de) | Schützen eines Steuervektors in einem kryptographischen System | |
DE112005001672B4 (de) | Verfahren zum Liefern eines geheimen Direktnachweisschlüssels an Vorrichtungen unter Verwendung eines Onlinedienstes | |
DE3689569T2 (de) | Verfahren zur Systemdateiensicherung und Datenverarbeitungseinheit zu dessen Durchführung. | |
DE112013000642B4 (de) | Verwaltung und Abruf von verschlüsselten biometrischen Daten | |
DE69130461T2 (de) | Zugriffsteuerung in einem verteilten Rechnersystem | |
EP2899714A1 (de) | Gesichertes Bereitstellen eines Schlüssels | |
DE102011077218B4 (de) | Zugriff auf in einer Cloud gespeicherte Daten | |
WO2019016140A1 (de) | Hardwaresystem mit blockchain | |
DE112005001666T5 (de) | Verfahren zum Bereitstellen von privaten Direktbeweis-Schlüsseln in signierten Gruppen für Vorrichtungen mit Hilfe einer Verteilungs-CD | |
DE102015117727A1 (de) | Schutz von Softwaremodellen | |
DE69737905T2 (de) | Gültigkeitsprüfung kryptografischer öffentlicher Schlüssel für Chipkarten | |
DE112011103580T5 (de) | Verfahren, sichere Einheit, System und Computerprogrammprodukt für das sichere Verwalten des Benutzerzugriffs auf ein Dateisystem | |
EP3159824B1 (de) | Verfahren zur verarbeitung eines verschlüsselten druckauftrags | |
DE60318633T2 (de) | Verwaltung digitaler rechte | |
EP3552344B1 (de) | Bidirektional verkettete blockchainstruktur | |
DE102020117999A1 (de) | Bereitsteller- und Empfänger-Kryptosysteme mit kombinierten Algorithmen | |
EP2491513B1 (de) | Verfahren und system zum bereitstellen von edrm-geschützten datenobjekten | |
WO2015074745A1 (de) | Verfahren, vorrichtungen und system zur online-datensicherung | |
DE112011104945T5 (de) | Informationsverarbeitungsgerät und Informationsverarbeitungsprogramm | |
EP3407237B1 (de) | Klassenbasiertes verschlüsselungsverfahren | |
EP3105703B1 (de) | Verfahren und system zum sichern von datenbankrelationen vor unberechtigtem zugriff | |
EP3673614B1 (de) | Verfahren und validierungseinrichtung zum validieren eines digitalen zertifikats | |
WO2012028391A1 (de) | Verfahren zum bereitstellen von informationen für ein steuergerät | |
DE102010021655A1 (de) | Verfahren zum Bereitstellen von EDRM (Enterprise Digital Rights Management) geschützten Datenobjekten | |
EP4083831A1 (de) | Digitales zertifikat |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE |
|
R084 | Declaration of willingness to licence | ||
R020 | Patent grant now final |