DE112012002332B4 - Schützen eines Steuervektors in einem kryptographischen System - Google Patents

Schützen eines Steuervektors in einem kryptographischen System Download PDF

Info

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
Application number
DE112012002332.3T
Other languages
English (en)
Other versions
DE112012002332T5 (de
Inventor
Richard Victor Kisley
Todd Weston Arnold
Carsten Dahl Frehr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012002332T5 publication Critical patent/DE112012002332T5/de
Application granted granted Critical
Publication of DE112012002332B4 publication Critical patent/DE112012002332B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic 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

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; undAktualisieren 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, undwobei das Vorbereiten des optionalen Blocks aufweist:Vorbereiten einer optionalen Block-Markierung und von Längenfeldern des standardmäßigen Schlüsselblocks; undVorbereiten einer Kennung für herstellereigene Informationen, einer Kennung für einen Teilblock und von Längenfeldern.

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 beschreibt eine Bereitstellung einer Implementierung einer Datenstruktur, welche Anweisungen enthält, die kryptographisch gegen eine Änderung oder Missbrauch geschützt sind, wobei die Anweisungen einen „trusted block“ aufweisen, welcher spezifische SchlüsselManagement-Policies definiert.
  • Darüber hinaus beschreibt das Dokument US 2004/0003246 A1 ein Verfahren zur Unterstützung einer sicheren Implementierung von 3DES und anderen starken kryptographischen Algorithmen. Ein sicherer Schlüsselblock mit Steuerung-, Schlüssel- und MAC-Feldern speichert Übertragungschlüssel für unsichere oder feindliche Umgebungen. Das Steuerungsfeld stellt Attribut-Informationen wie beispielsweise die Art und Weise der Nutzung eines Schlüssels zur Verfügung.
  • 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 Datenverarbeitungssystem 10 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 Datenverarbeitungseinheit 20 und eine zweite Datenverarbeitungseinheit 30 enthalten.
  • Die erste Datenverarbeitungseinheit 20 und die zweite Datenverarbeitungseinheit 30 sind über ein drahtgebundenes oder ein drahtloses Netzwerk 40 miteinander verbunden. Die erste Datenverarbeitungseinheit 20 und die zweite Datenverarbeitungseinheit 30 enthält jeweils ein physisch greifbares Speichermedium 21 und 31, das von einer Verarbeitungsschaltung 22 und 32 gelesen werden kann und auf dem ausführbare Anweisungen zur Ausführung durch die Verarbeitungsschaltung 22 und 32 gespeichert sind, um ein oder mehrere der hier beschriebenen Verfahren durchzuführen. Im Einzelnen enthält jeweils die erste Datenverarbeitungseinheit 20 und die zweite Datenverarbeitungseinheit 30 ein jeweiliges Hardware-Sicherheitsmodul (HSM), das von dem jeweiligen Speichermedium 21, 31 und der jeweiligen Verarbeitungsschaltung 22, 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üsseltoken 100, das Schlüssel-Steuerungsinformationen und einen kryptographischen Schlüssel enthält, an den die Schlüssel-Steuerungsinformationen kryptographisch gebunden sind, an die zweite Datenverarbeitungseinheit 30 zu senden. Da die HSMs von jeweils der ersten Datenverarbeitungseinheit 20 und der zweiten Datenverarbeitungseinheit 30 gegebenenfalls dieselben Architekturen realisieren oder auch nicht realisieren, besteht für das HSM der ersten Datenverarbeitungseinheit 20 folglich die Notwendigkeit, die Schlüssel-Steuerungsinformationen mittels einer Parameter-Datenbank 201 und einer Umsetzungstabelle 202, die jeweils in dem Speichermedium 21 gespeichert sind, sicher an einen standardmäßigen Schlüsselblock zu exportieren, und für das HSM der zweiten Datenverarbeitungseinheit 30 besteht die Notwendigkeit, die exportierten Schlüssel-Steuerungsinformationen mittels einer Parameter-Datenbank 301 und einer Umsetzungstabelle 302, die jeweils in dem Speichermedium 31 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üsseltoken 100 zu ändern, um dadurch den standardmäßigen Schlüsselblock 400 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 Datenverarbeitungseinheit 30, das den Schlüsselblock 400 empfangen hat, besteht gegebenenfalls des Weiteren die Notwendigkeit, die Schlüssel-Steuerungsinformationen von dem Schlüsselblock 400 in ein neues Schlüsseltoken 500 zu importieren. Somit müssen die HSMs der ersten Datenverarbeitungseinheit 20 und der zweiten Datenverarbeitungseinheit 30 gegebenenfalls eine Umsetzung von Informationen in Bezug auf den Schlüsselblock 400 vornehmen (d.h., indem sie entweder in einer Export-Operation Informationen in ein Format des Schlüsselblocks 400 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üsselblocks 400 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üsselblocks 400 importieren darf. Dies ist wichtig, da Schlüsselblöcke 400 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 Datenverarbeitungseinheit 30 die CCA realisiert und dass der Schlüsselblock 400 der Schlüsselblock nach ANSI-TR-31 (nachstehend „TR-31 “) ist.
  • Bezug nehmend auf 2 enthält der Schlüsselblock 400 mindestens neun Schlüsselblockfelder wie folgt. Das Feld 410 für die Versionskennung (ID) des Schlüsselblocks gibt eine Version des Schlüsselblocks 400 an, die selbst ein Verfahren angibt, mit dem der Schlüsselblock 400 kryptographisch geschützt wird, und es gibt ferner den Inhalt und den Aufbau des Schlüsselblocks 400 an. Das Feld 420 für die Schlüsselblocklänge gibt eine Länge des Schlüsselblocks 400 an. Das Schlüsselverwendungsfeld 430 gibt Informationen über eine vorgesehene Funktion des geschützten Schlüssels und/oder sensible Daten an, die kryptographisch an den Schlüsselblock 400 gebunden sind. Das Algorithmusfeld 440 gibt den Algorithmus an, für den der geschützte Schlüssel und/oder die sensiblen Daten, die kryptographisch an den Schlüsselblock 400 gebunden sind, verwendet werden kann. Das Feld 450 für die Verwendungsmodi gibt eine Operation an, die der geschützte Schlüssel und/oder die sensiblen Daten, die kryptographisch an den Schlüsselblock 400 gebunden sind, durchführen können. Das Feld 460 für die Schlüsselversionsnummer ist eine Zeichenversionsnummer, um anzugeben, dass es sich bei dem Inhalt des Schlüsselblocks 400 um Komponenten von alten Schlüsseln handelt, oder um eine Wiedereinspeisung von alten Schlüsseln zu vermeiden. Das Exportierbarkeitsfeld 470 gibt an, ob der geschützte Schlüssel und/oder die sensiblen Daten, die kryptographisch an den Schlüsselblock 400 gebunden sind, außerhalb der kryptographischen Domäne übertragen werden können. Das Feld 480 für die Anzahl der optionalen Blöcke gibt eine Anzahl von optionalen Blöcken an, die in dem Schlüsselblock 400 enthalten sind. Das Feld 490 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-Datenbank 201, auf die von dem HSM der ersten Datenverarbeitungseinheit 20 zugegriffen wird, um die Schlüssel-Steuerungsinformationen an den Schlüsselblock 400 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 Feld 410 für die Versions-ID des Schlüsselblocks gestellt werden soll, ein Schlüsselverwendungswert für den Ausgabeschlüsselblock 400, der in das Schlüsselverwendungsfeld 430 gestellt werden soll, ein Schlüsselverwendungsmodus, der in das Feld 450 für die Verwendungsmodi gestellt werden soll, ein optionaler Exportsteuerungscode, um das Exportierbarkeitsfeld 470 zu setzen, und eine optionale Steuervektor-Transportsteuerung, die in das Feld 490 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 Feld 410 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 Feld 410 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üsselverwendungsfeld 430 gestellt wird, ein Datenverschlüsselungsschlüssel mit einem Schlüsselwort „ENC“, der dadurch gekennzeichnet ist, dass „D0“ in das Schlüsselverwendungsfeld 430 gestellt wird, ein EMV-Anwendungskryptogramm-Hauptschlüssel mit einem Schlüsselwort „EMVACMK“, der dadurch gekennzeichnet ist, dass „E0“ in das Schlüsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 gestellt wird, ein Schlüssel-Verschlüsselungsschlüssel mit einem Schlüsselwort „KEK“, der dadurch gekennzeichnet ist, dass „K0“ in das Schlüsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 gestellt wird, ein PIN-Verschlüsselungsschlüssel mit einem Schlüsselwort „PINENC“, der dadurch gekennzeichnet ist, dass „P0“ in das Schlüsselverwendungsfeld 430 gestellt wird, ein PIN-Überprüfungsschlüssel, ein „weiterer“ Algorithmus mit einem Schlüsselwort „PINVO“, der dadurch gekennzeichnet ist, dass „V0“ in das Schlüsselverwendungsfeld 430 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üsselverwendungsfeld 430 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üsselverwendungsfeld 430 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 Feld 450 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 Feld 450 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 Feld 450 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 Feld 450 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 Feld 450 für die Verwendungsmodi gestellt wird, wobei Schlüssel-Ableitung ein Schlüsselwort „DERIVE“ hat, das dadurch gekennzeichnet ist, dass ein „X“ in das Feld 450 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 Feld 450 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 Exportierbarkeitsfeld 470 gestellt wird, oder „Export unter Verwendung eines vertrauenswürdigen SchlüsselVerschlüsselungsschlüssels zulässig“, wie in den Normen für den Schlüsselblock 400 angegeben ist, welcher ein Schlüsselwort „EXP-TRST“ hat, das dadurch gekennzeichnet ist, dass ein „E“ in das Exportierbarkeitsfeld 470 gestellt wird, oder „Export untersagt“, der ein Schlüsselwort „EXP-NONE“ hat, das dadurch gekennzeichnet ist, dass ein „N“ in das Exportierbarkeitsfeld 470 gestellt wird. Die optionale Steuervektor-Transportsteuerung, die in das Feld 490 für die optionalen Blöcke gestellt werden soll, kann eine Anweisung, einen CV als ein optionales Feld in den Kopfbereich des Schlüsselblocks 400 aufzunehmen, welche ein Schlüsselwort „INCL-CV“ hat, wobei das Schlüsselverwendungsfeld 430 und das Feld 450 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üsselblocks 400 aufzunehmen, welcher ein Schlüsselwort „ATTR-CV“ hat, wobei das Schlüsselverwendungsfeld 430 und das Feld 450 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üsselblocks 400 kopiert werden, außer wenn der Parameter „Quellenschlüsselkennung“ im Schlüsseltoken 100 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üsselblock 400 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üsseltoken 100 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üsselblock 400 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üsseltoken 100 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üsseltoken 100 enthält, welches einen Verschlüsselungsschlüssel zum Entschlüsseln enthält, wenn das Schlüsseltoken 100 in dem Parameter „Quellenschlüsselkennung“ unter einem anderen Schlüssel als dem Schlüssel, der in dem HSM der ersten Datenverarbeitungseinheit 20 abgelegt ist, verschlüsselt ist. Wenn kein Parameter „Verschlüsselungs-Kek-Kennung“ angegeben ist, wird dieser Parameter zum Verschlüsseln des Schlüsselblocks 400 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üsseltoken 100 enthält, welches den Verschlüsselungsschlüssel zum Verschlüsseln des Schlüsselblocks 400 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üsselblock 400 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üsselblock 400 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üsselblock 400 gestellt wird.
  • Bezug nehmend auf 3 wird nun der Exportvorgang beschrieben. Zunächst werden in der Operation 600 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üsseltokens 100 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üsseltoken 100 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üsseltoken 100 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 Datenverarbeitungseinheit 20 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üsseltoken 100 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üsseltoken 100 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üsseltoken 100 einen CV mit der Erlaubnis hat, den Parameter „Quellenschlüsselkennung“ zu verschlüsseln oder umzusetzen, sowie eine Prüfung, ob das Schlüsseltoken 100 in dem Parameter „Quellenschlüsselkennung“ exportiert werden kann. Zu diesem Zeitpunkt wird auch festgestellt, ob das Schlüsseltoken 100 als der Schlüsselblock 400 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 Operation 610 fortgesetzt, indem der Schlüsselblock 400 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üsselblocks 400 führt, und ein Kopien der optionalen Blöcke in das Feld 490 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üsseltoken 100 kein partielles Schlüsseltoken ist, bricht der Prozess ab. Wenn der übergebene Parameter „Schlüsselversionsnummer“ mit „c“ beginnt und das Schlüsseltoken 100 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üsseltoken 100 ein partielles Schlüsseltoken ist, wird der Parameter „Schlüsselversionsnummer“ vollständig ignoriert und für den Schlüsselblock 400 wird „c0“ verwendet.
  • Im Anschluss an die Vorbereitung der Operation 610 wird das Verfahren fortgesetzt, indem der Schlüsselblock 400 in der Operation 620 erzeugt wird. Der Erzeugungsvorgang der Operation 620 beinhaltet das Erzeugen und Füllen einer Struktur eines leeren Schlüsselblocks 400 und das Festlegen des CV-Umsetzungsverfahrens, das für den Schlüsselblock 400 verwendet werden soll. Das Festlegen beinhaltet die Vorbereitung des Felds 490 für die optionalen Blöcke mit dem CV und das Vorbereiten des Schlüsselverwendungsfelds 430 und des Felds 450 für die Verwendungsmodi auf der Grundlage des CV, wie in der Umsetzungstabelle 202 beschrieben ist, wenn der INCL-CV an die Parameter-Datenbank 201 übergeben wird. Alternativ beinhaltet das Festlegen die Vorbereitung des Felds 490 für die optionalen Blöcke mit dem CV und das Setzen des Schlüsselverwendungsfelds 430 und des Felds 450 für die Verwendungsmodi auf vorher festgelegte Werte, wenn der ATTR-CV an die Parameter-Datenbank 201 übergeben wird. Gemäß noch einer weiteren Alternative beinhaltet das Festlegen die Vorbereitung des Schlüsselverwendungsfelds 430 und des Felds 450 für die Verwendungsmodi auf der Grundlage des CV, wie in der Umsetzungstabelle 202 beschrieben ist, wenn kein Schlüsselwort an die Parameter-Datenbank 201 übergeben wird.
  • Im Anschluss an den Erzeugungsvorgang der Operation 620 wird der Schlüsselblock 400 in der Operation 630 fertiggestellt. Der Fertigstellungsvorgang der Operation 630 beinhaltet die Vorbereitung eines Schlüsselübertragungsteils des Schlüsselblocks 400 gemäß dem vorgeschriebenen Verschlüsselungsverfahren, das Verknüpfen des verschlüsselten Schlüsselteils nach dem Feld 490 für die optionalen Blöcke, um den Schlüsselblock 400 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üsselblock 400 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üsselblock 400 formatiert werden, gemäß Ausführungsformen gezeigt.
  • Das Verfahren beinhaltet eine anfängliche Überprüfungsoperation 700, auf die eine Parsing-Operation 710 folgt. Der Überprüfungsvorgang der Operation 700 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 Operation 710 verbietet des Weiteren doppelte Block-Markierungen, lässt numerische Block-Markierungen zu, überprüft, ob alphabetische Block-Markierungen für den Schlüsselblock 400 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 Operation 720 auf Gültigkeit geprüft, in der ein Versuch des Benutzers, einen Auffüllblock (padding block) „PB“ hinzuzufügen, verhindert wird. Gemäß der Operation 720 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üsselblock 400 korrekt formatiert sein. Als Nächstes wird in der Operation 730 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 Feld 490 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 Feld 420 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üsselblock 400.
  • 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 Operation 760 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üsseltoken 100 in einen Schlüsselblock 400 exportiert, falls das HSM der zweiten Datenverarbeitungseinheit 30 dieselbe Architektur wie die erste Datenverarbeitungseinheit 20 realisiert. Normalerweise verfügen die Schlüsselblöcke 400 jedoch über keine festgelegten Verfahren, um herstellereigene Strukturen von Schlüsselsteuerungsdaten zuzuordnen, wie zum Beispiel den CCA-CV zum Schlüsselblock 400. Folglich wird ein Verfahren bereitgestellt, bei dem herstellereigenes Material in dem Schlüsselblock 400 in einer für den Schlüsselblock 400 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 Feld 490 für die optionalen Blöcke zu codieren. Entsprechend den Normen für den Schlüsselblock 400 stellen bestimmte numerische Markierungen für die optionalen Blöcke herstellereigene Informationen dar, die in dem Feld 490 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üsselblocks 400 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 Feld 490 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 Datenverarbeitungseinheit 20 die Anforderung stellt, dass das Schlüsseltoken 100 in dem Schlüsselblock 400 codiert werden und von dem CV begleitet werden soll. Zuerst werden die an die Parameter-Datenbank 201 übergebenen Parameter in der Operation 800 auf Gültigkeit geprüft. Hier wird das Schlüssel-Token 100 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üsseltoken 100 in den Schlüsselblock 400 exportiert werden darf. Darüber hinaus wird der Schlüsselblock 400 zumindest am Anfang als ein teilweise vorbereiteter Schlüsselblock 400 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 Operation 810 die erforderliche Länge für die Daten des CV berechnet und überprüft, und in der Operation 820 werden eine optionale Block-Markierung und Längenfelder des Schlüsselblocks 400 vorbereitet. In der Operation 830 werden eine Kennung für herstellereigene Informationen, eine Kennung für einen Teilblock und Längenfelder vorbereitet und in der Operation 840 wird der CV in ein korrektes Format umgewandelt. Schließlich wird die Anzahl der optionalen Blöcke in der Operation 850 aktualisiert.
  • In einer Import-Operation übergibt ein Benutzer der zweiten Datenverarbeitungseinheit 30 die folgenden Parameter an die Parameter-Datenbank 301, auf die von dem HSM der zweiten Datenverarbeitungseinheit 30 zugegriffen wird, um Informationen aus dem Schlüsselblock 400 in das neue Schlüsseltoken 500 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 Umsetzungstabelle 302 angegeben, entspricht jede der Untergruppen einer Anweisung in dem neuen Schlüsseltoken 500.
  • 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üsseltokens 500 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üsselblocks 400 befinden, um die KEK-Anweisung des Schlüsselblocks 400 in einen Schlüssel vom Typ eines neuen Schlüsseltokens 500 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üsselblocks 400 in einen PINGEN- oder PINVER-Schlüssel des neuen Schlüsseltokens 500 umzuwandeln. In der Untergruppe „E0“/„E2“ kann sich entweder die Anweisung DMAC oder die Anweisung DMV befinden, um den EMV-Hauptschlüssel des Schlüsselblocks 400 für Anwendungs-Kryptogramme oder für eine Anweisung für den sicheren Nachrichtenaustausch in einen Schlüssel vom Typ DKYGENKY des neuen Schlüsseltokens 500 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üsselblocks 400 für eine Anweisung des Secure Messaging for Confidentiality in einen Schlüssel vom Typ DKYGENKY des neuen Schlüsseltokens 500 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üsselblocks 400 für die Kartenpersonalisierung in den Schlüssel vom Typ des neuen Schlüsseltokens 500 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üsselblocks 400 in den Schlüssel vom Typ des neuen Schlüsseltokens 500 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 Datenverarbeitungseinheit 30 anweist, einen Schlüssel vom Typ PINGEN oder PINVER in ein Schlüsseltoken 500 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üsseltoken 500 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üsseltoken 500 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üsseltoken 500 enthält, welches den Verschlüsselungsschlüssel enthält, der zum Verschlüsseln des ausgegebenen neuen Schlüsseltokens 500 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üsseltoken 500 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üsselblock 400 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üsseltoken 500 erzeugt worden ist. Es kann einer der folgenden drei Werte sein: 0x00, der anzeigt, dass kein CV in einem Schlüsselblock 400 optional vorhanden war und dass der ausgegebene CV auf der Grundlage von eingegebenen Schlüsselwörtern der Regelmatrix und den Attributen in dem Schlüsselblock 400 erzeugt wurde, 0x01, der anzeigt, dass ein CV von einem optionalen Block in dem Schlüsselblock 400 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üsseltoken 500 verwendet wurde, oder 0x02, der anzeigt, dass ein CV von einem optionalen Block in dem Schlüsselblock 400 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üsselblock 400 als der CV für das neue Schlüsseltoken 500 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üsselblocks 400 verwendet wurde. Es kann einer der folgenden drei Werte sein: 0x00, 0x01 oder 0x02, die anzeigen, dass der Schlüsselblock 400 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 Operation 900 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üsseltokens 100 auf Gültigkeit, das in dem Parameter „Entschlüsselungs-Kek-Kennung“ und in dem Parameter „Verschlüsselungs-Kek-Kennung“ an die Parameter-Datenbank 301 übergeben wurde. Diese Prüfung auf Gültigkeit beinhaltet eine Überprüfung, dass der an die Parameter-Datenbank 301 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-Datenbank 301 ü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üsseltoken 100 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üsseltoken 100 einen CV mit der Erlaubnis hat, den Parameter „Kennung des Ausgabeschlüssels“ zu verschlüsseln oder umzusetzen, sowie eine Prüfung des Schlüsselblocks 400 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üsselblocks 400 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 Operation 910 fort, indem der Schlüsselblock 400 mit Hilfe des Schlüsselverschlüsselungsschlüssels, der in dem Parameter „Entschlüsselungs-Kek-Kennung“ übergeben wurde, und des Entschlüsselungsverfahrens, das von dem Feld 410 für die Versions-ID des Schlüsselblocks angegeben wird, entschlüsselt wird, und indem die für das Feld 410 für die Versions-ID des Schlüsselblocks spezifischen ACPs in der Operation 920 auf Gültigkeit geprüft werden. Daraufhin wird in der Operation 930 der in dem neuen Schlüsseltoken 500 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üsselblocks 400 ü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üsselblock 400 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üsselverwendungsfeld 430 einen Wert von beispielsweise „10“ hat und das Feld 450 für die Verwendungsmodi einen Wert von beispielsweise „1“ hat, wird dieser CV zum Erstellen des neuen Schlüsseltokens 500 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üsselverwendungsfelds 430 und des Felds 450 für die Verwendungsmodi mit den Schlüsselwörtern der Regelmatrix abgeglichen, die eine weitere Auswertung bei der Erstellung des neuen Schlüsseltokens 500 angeben, ein Schlüsseltyp, ein Untertyp und Einschränkungen werden mit Hilfe der Umsetzungstabelle 302 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 Feld 450 für die Verwendungsmodi übergeben wird, wird die Kompatibilität zwischen Attributen in dem CV und dem nichtnumerischen Schlüsselverwendungsfeld 430 und dem nichtnumerischen Feld 450 für die Verwendungsmodi mit Hilfe der Umsetzungstabelle 302 ü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 Feld 460 für die Schlüsselversionsnummer korrekt ist, und dieser CV wird zum Erstellen des neuen Schlüsseltokens 500 verwendet.
  • An diesem Punkt wird das Verfahren fortgesetzt, indem das neue Schlüsseltoken 500 in der Operation 940 beziehungsweise in der Operation 950 vorbereitet und erstellt wird. Der Vorbereitungsvorgang der Operation 940 beinhaltet das Kopieren des gewählten oder erzeugten CV in einen Pufferspeicher und das Setzen des Versions- und des Attributfeldes. Der Erstellungsvorgang der Operation 950 geht wie folgt vonstatten: Wenn das Regelmatrix-Schlüsselwort „EXTERNAL“ an die Parameter-Datenbank 301 ü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üsselblock 400 zusammen mit dem neuen CV zu verschlüsseln, wobei das Ergebnis in die verschlüsselten Schlüsselfelder des neuen Schlüsseltokens 500 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üsselblock 400 zusammen mit dem neuen CV zu verschlüsseln, wobei das Ergebnis in die verschlüsselten Schlüsselfelder des neuen Schlüsseltokens 500 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 Umsetzungstabelle 302 gesetzt. Das ausgegebene neue endgültige Schlüsseltoken 500 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üsselblock 400 befinden, zurückzusenden. Gemäß dem Verfahren übergibt ein Benutzer der Erfindung die folgenden Parameter, die alle als Zeiger angegeben sind, an die Parameter-Datenbank 301. 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üsselblock 400 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üsselblock 400 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üfungsoperation 1000, eine eingangs erfolgende Parsing-Operation 1010, eine sekundäre INFO-Parsing-Operation 1020 und eine sekundäre DATA-Parsing-Operation 1030. Der Überprüfungsvorgang der Operation 1000 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 Operation 1000 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 Operation 1000 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üsselblocks 400 unterstützt wird.
  • Dieser eingangs erfolgende Parsing-Vorgang der Operation 1010 führt eine syntaktische Analyse der Daten des optionalen Blocks in dem Schlüsselblock 400 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üsselblocks 400 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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 bis 5 durchzuführen.
DE112012002332.3T 2011-05-31 2012-05-15 Schützen eines Steuervektors in einem kryptographischen System Active DE112012002332B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/118,951 US8675871B2 (en) 2011-05-31 2011-05-31 Protecting a control vector in an optional block of a standard key block
USUS-13/118,951 2011-05-31
US13/118,951 2011-05-31
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
JP2002505452A (ja) * 1998-02-24 2002-02-19 オトクリィトエ アクツィオネルノエ オブシェスト ヴォ 「モスコフスカヤ ゴロドスカヤ テレフォナヤセット」 個々のデータをブロック暗号化するための方法
JP2001352321A (ja) * 2000-04-06 2001-12-21 Sony Corp 情報処理システム、情報処理方法、および情報記録媒体、並びにプログラム提供媒体
CN1878059A (zh) * 2006-07-07 2006-12-13 北京财富投资有限公司 一种分组加密及解密算法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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
CN103563289A (zh) 2014-02-05
GB2505602A (en) 2014-03-05
US20130058486A1 (en) 2013-03-07
GB2505602B (en) 2014-09-24
DE112012002332T5 (de) 2014-02-20
CN103563289B (zh) 2016-08-17
GB201321840D0 (en) 2014-01-22
US8675871B2 (en) 2014-03-18
WO2012164427A1 (en) 2012-12-06
US9178703B2 (en) 2015-11-03
US20120307999A1 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
DE112012002332B4 (de) Schützen eines Steuervektors in einem kryptographischen System
DE60200616T2 (de) Gesicherte Inhaltsobjekte
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE112005001672B4 (de) Verfahren zum Liefern eines geheimen Direktnachweisschlüssels an Vorrichtungen unter Verwendung eines Onlinedienstes
DE112013000642B4 (de) Verwaltung und Abruf von verschlüsselten biometrischen Daten
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
DE60219706T2 (de) Verfahren und Vorrichtung zum Anfügen einer elektronischen Unterschrift an ein strukturiertes Dokument
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
EP2491513B1 (de) Verfahren und system zum bereitstellen von edrm-geschützten datenobjekten
WO2015074745A1 (de) Verfahren, vorrichtungen und system zur online-datensicherung
DE102021130643A1 (de) Verbessertes umhüllen von schlüsselblöcken
EP3407237B1 (de) Klassenbasiertes verschlüsselungsverfahren
DE102020117999A1 (de) Bereitsteller- und Empfänger-Kryptosysteme mit kombinierten Algorithmen
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

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