DE602004005025T2 - Instruktionen zur verarbeitung einer verschlusselten nachricht - Google Patents

Instruktionen zur verarbeitung einer verschlusselten nachricht Download PDF

Info

Publication number
DE602004005025T2
DE602004005025T2 DE602004005025T DE602004005025T DE602004005025T2 DE 602004005025 T2 DE602004005025 T2 DE 602004005025T2 DE 602004005025 T DE602004005025 T DE 602004005025T DE 602004005025 T DE602004005025 T DE 602004005025T DE 602004005025 T2 DE602004005025 T2 DE 602004005025T2
Authority
DE
Germany
Prior art keywords
bit
code value
encryption
instruction
function code
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
DE602004005025T
Other languages
English (en)
Other versions
DE602004005025D1 (de
Inventor
Shawn Poughkeepsie LUNDVALL
Ronald Wappingers Falls SMITH
Phil Chi-Chung Poughkeepsie YEH
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 DE602004005025D1 publication Critical patent/DE602004005025D1/de
Application granted granted Critical
Publication of DE602004005025T2 publication Critical patent/DE602004005025T2/de
Anticipated expiration legal-status Critical
Active legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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

Description

  • Diese Erfindung betrifft eine Computersystemarchitektur und insbesondere die Verarbeitung neuer Befehle, die die IBM z/Architektur erweitern und durch andere Architekturen emuliert werden können.
  • Vor unserer Erfindung hat IBM durch die Arbeit vieler hochtalentierter Ingenieure, beginnend in den 60er Jahren mit den als IBM System 360 bekannten Maschinen bis hin zur Gegenwart, eine spezielle Architektur geschaffen, die aufgrund ihrer Beschaffenheit als Datenverarbeitungssystem als „Großrechner" bekannt wurde, dessen Arbeitsweise die Architektur der Maschine durch Beschreibung der Befehle darlegt, die in der „Großrechner"-Realisierung der Befehle ausgeführt werden können, die von Erfindern der IBM erfunden und aufgrund ihres erheblichen Beitrags zur Verbesserung des Zustands der durch den „Großrechner" dargestellten Datenverarbeitungsmaschine im Lauf der Jahre in die Funktionsprinzipien (Principles of Operation) von IBM aufgenommen wurden. Die im Dezember 2000 veröffentlichte erste Ausgabe von „z/Architecture Principles of Operation" wurde zur Standardquellenangabe als SA22-7832-00.
  • Die Quellenangabe „IBM PCI Cryptographic Coprocessor CCA Basic Services Reference and Guide for IBM Models 002 and 023 with Release 2.40" [Online] September 2001, International Business Machines Corporation, Charlotte, NC 28262-8563 USA, XP002291430 Abruf aus dem Internet: URL: http://www.zoneh.org/files/33/CCA_Bas ic_Services_240.pdf>, beschreibt die allgemeine Verschlüsselungsarchitektur von IBM.
  • Die Quellenangabe WU L. et al: „CryptoManiac: a fast flexible architecture for secure communication", PROCEEDINGS OF THE 28TH. INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE, ISCA 2001, Göteborg, Schweden, 30. Juni bis 4. Juli 2001, INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE (ISCA), Los Alamitos, Kalifornien, IEEE COMP. SOC, USA, 30. Juni 2001, Seiten 104 bis 113, XP010553867 ISBN: 0-7695-1162-7, beschreibt einen Verschlüsselungsmikroprozessor gemäß der Einleitung von Anspruch 1.
  • Wir stellten fest, dass weitere neue Befehle den Stand der Technik unterstützen würden und in eine Maschine der z/Architektur aufgenommen sowie auch von anderen Architekturen in einfacheren Maschinen emuliert werden könnten, wie hierin beschrieben wird.
  • Die vorliegende Erfindung stellt ein Verfahren, wie es in Anspruch 1 beansprucht wird, und ein entsprechendes Computerprogramm und eine Vorrichtung bereit, wie sie in den Ansprüchen 6 bzw. 7 beansprucht werden.
  • Die Merkmale der bevorzugten Ausführungsformen der Erfindung gehen für Fachleute aus der folgenden ausführlichen Beschreibung der Erfindung in Verbindung mit den begleitenden Zeichnungen hervor, in denen:
  • 1 der Befehl „Nachricht verschlüsseln" (Cipher Message – KM) im RRE-Befehlsformat ist;
  • 2 der Befehl „Nachricht verschlüsseln mit Verkettung" (Cipher Message with Chaining – KMC) im RRE-Befehlsformat ist;
  • 3 eine Tabelle ist, die die Funktionscodes für den Befehl „Nachricht verschlüsseln" von 1 zeigt;
  • 4 eine Tabelle ist, die die Funktionscodes für den Befehl „Nachricht verschlüsseln mit Verkettung" von 2 zeigt;
  • 5 eine Darstellung der Allgemeinregisterzuordnungen für den KM- und den KMC-Befehl ist;
  • 6 das Symbol für die binäre EXKLUSIV-ODER-Verknüpfung (Bit-Wise Exclusive Or) darstellt;
  • 7 die Symbole für die DEA-Verschlüsselung und -Entschlüsselung darstellt;
  • 8 das Format für den Parameterblock der KM-Abfrage darstellt;
  • 9 den Parameterblock für KM-DEA darstellt;
  • 10 den KM-DEA-Verschlüsselungsvorgang (KM-DEA Encipher Operation) darstellt;
  • 11 den KM-DEA-Entschlüsselungsvorgang darstellt;
  • 12 das Format für den Parameterblock für KM-TDA-128 darstellt;
  • 13 den KM-TDEA-128-Verschlüsselungsvorgang darstellt;
  • 14 den KM-TDEA-128-Entschlüsselungsvorgang darstellt;
  • 15 das Format für den Parameterblock für KM-TDEA-192 darstellt;
  • 16 den KM-TDEA-192-Verschlüsselungsvorgang darstellt;
  • 17 den KM-TDEA-192-Entschlüsselungsvorgang darstellt;
  • 18 das Format für den Parameterblock für eine KMC-Abfrage darstellt;
  • 19 das Format für den Parameterblock für KMC-DEA darstellt;
  • 20 den KMC-DEA-Verschlüsselungsvorgang darstellt;
  • 21 den KMC-DEA-Entschlüsselungsvorgang darstellt;
  • 22 das Format für den Parameterblock für KMC-TDEA-128 darstellt;
  • 23 den KM-TDEA-128-Verschlüsselungsvorgang darstellt;
  • 24 den KM-TDEA-128-Entschlüsselungsvorgang darstellt;
  • 25 das Format für den Parameterblock für KMC-TDEA-128 darstellt;
  • 26 den KMC-TDEA-192-Verschlüsselungsvorgang darstellt;
  • 27 den KMC-TDEA-192-Entschlüsselungsvorgang darstellt;
  • 28 eine Tabelle ist, die die Ausführungspriorität von KM und KMC zeigt;
  • 29 unseren Verschlüsselungscoprozessor veranschaulicht; und
  • 30 die verallgemeinerte bevorzugte Ausführungsform eines Computerspeichers zeigt, der Befehle gemäß der bevorzugten Ausführungsform und Daten sowie den Mechanismus zum Abrufen, Decodieren und Ausführen dieser Befehle enthält, entweder in einem diese architekturdefinierten Befehle verwendenden Computersystem oder wie sie in der Emulation unserer architekturdefinierten Befehle verwendet wird.
  • Der Befehl NACHRICHT VERSCHLÜSSELN (CIPHER MESSAGE – KM) und der Befehl NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG (CIPHER MESSAGE WITH CHAINING – KMC) werden als Erstes erläutert, gefolgt von einer Erläuterung des bevorzugten Computersystems zum Ausführen dieser Befehle. Alternativ wird ein zweites bevorzugtes Computersystem erläutert, das ein anderes Computersystem zum Ausführen dieser Befehle emuliert.
  • NACHRICHT VERSCHLÜSSELN (KM)
  • 1 ist der Befehl „Nachricht verschlüsseln" (KM) im RRE-Befehlsformat.
  • NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG (KMC)
  • 2 ist der Befehl „Nachricht verschlüsseln mit Verkettung" (KMC) im RRE-Befehlsformat.
  • Eine durch den Funktionscode im Allgemeinregister 0 angegebene Funktion wird ausgeführt.
  • Die Bits 16 bis 23 des Befehls werden ignoriert. Die Bitpositionen 57 bis 63 des Allgemeinregisters 0 enthalten den Funktionscode. Die 3 und 4 zeigen die zugeordneten Funktionscodes für NACHRICHT VERSCHLÜSSELN bzw. NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG. Alle anderen Funktionscodes werden nicht zugeordnet. Bei Verschlüsselungsfunktionen ist das Bit 56 das Änderungsbit (modifier bit), das angibt, ob ein Verschlüsselungs- oder ein Entschlüsselungsvorgang ausgeführt werden muss. Das Änderungsbit wird für alle anderen Funktionen ignoriert. Alle anderen Bits des Allgemeinregisters 0 werden ignoriert. Das Allgemeinregister 1 enthält die logische Adresse des höchstwertigen Bytes des Parameterblock im Speicher. Im 24-Bit-Adressiermodus stellt der Inhalt der Bitpositionen 40 bis 63 des Allgemeinregisters 1 die Adresse dar, und der Inhalt der Bitpositionen 0 bis 39 wird ignoriert. Im 31-Bit-Adressiermodus stellt der Inhalt der Bitpositionen 33 bis 63 des Allgemeinregisters 1 die Adresse dar, und der Inhalt der Bitpositionen 0 bis 32 wird ignoriert.
  • Im 64-Bit-Adressiermodus stellt der Inhalt der Bitpositionen 0 bis 63 des Allgemeinregisters 1 die Adresse dar.
  • Die Funktionscodes für NACHRICHT VERSCHLÜSSELN werden in 3 gezeigt.
  • Die Funktionscodes für NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG werden in 4 gezeigt.
  • Alle anderen Funktionscodes werden nicht zugeordnet. Die Abfragefunktion stellt das Mittel zum Angeben der Verfügbarkeit der anderen Funktionen bereit. Der Inhalt der Allgemeinregister R1, R2 und R1 + 1 wird für die Abfragefunktion ignoriert.
  • Für alle anderen Funktionen wird der zweite Operand verschlüsselt, wie durch den Funktionscode angegeben wird, wobei ein Verschlüsselungsschlüssel im Parameterblock verwendet wird, und das Ergebnis an der Position des ersten Operanden platziert. Bei NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG verwendet die Verschlüsselung außerdem einen anfänglichen Verkettungswert im Parameterblock, und der Verkettungswert wird als Teil des Vorgangs aktualisiert.
  • Das Feld R1 bezeichnet ein Allgemeinregister und muss ein Register mit einer geraden Nummerierung bezeichnen; andernfalls wird ein Spezifikationsfehler erkannt.
  • Das Feld R2 bezeichnet ein gerades/ungerades Paar von Allgemeinregistern und muss Register mit einer geraden Nummerierung bezeichnen; andernfalls wird ein Spezifikationsfehler erkannt.
  • Die Position des höchstwertigen Bytes des ersten und zweiten Operanden wird durch den Inhalt der Allgemeinregister R1 bzw. R2 angegeben. Die Anzahl von Bytes an der Position des zweiten Operanden wird im Allgemeinregister R2 + 1 angegeben. Der erste Operand hat dieselbe Länge wie der zweite Operand.
  • Als Teil des Vorgangs werden die Adressen in den Allgemeinregistern R1 und R2 um die Anzahl der verarbeiteten Bytes erhöht, und die Länge im Allgemeinregister R2 + 1 wird um die gleiche Anzahl vermindert. Die Bildung und Aktualisierung der Adressen und der Länge sind abhängig vom Adressiermodus.
  • Im 24-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 40 bis 63 der Allgemeinregisters R1 und R2 die Adresse des ersten bzw. zweiten Operanden, und der Inhalt der Bitpositionen 0 bis 39 wird ignoriert; die Bits 40 bis 63 der aktualisierten Adressen ersetzen die entsprechenden Bits in den Allgemeinregistern R1 und R2, Übertragausgaben (carries out) der Bitposition 40 der aktualisierten Adresse werden ignoriert, und der Inhalt der Bitpositionen 32 bis 39 der Allgemeinregister R1 und R2 wird auf null gesetzt. Im 31-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 33 bis 63 der Allgemeinregister R1 und R2 die Adresse des ersten bzw. zweiten Operanden, und der Inhalt der Bitpositionen 0 bis 32 wird ignoriert; die Bits 33 bis 63 der aktualisierten Adressen ersetzen die entsprechenden Bits in den Allgemeinregistern R1 und R2, Übertragausgaben der Bitposition 33 der aktualisierten Adressen werden ignoriert, und der Inhalt der Bitposition 32 der Allgemeinregister R1 und R2 wird auf null gesetzt. Im 64-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 0 bis 63 der Allgemeinregister R1 und R2 die Adresse des ersten bzw. zweiten Operanden; die Bits 0 bis 63 der aktualisierten Adressen ersetzen den Inhalt der Allgemeinregister R1 und R2, und Übertragausgaben der Bitposition 0 werden ignoriert.
  • Sowohl im 24-Bit- als auch im 31-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 32 bis 63 des Allgemeinregisters R2 + 1 eine vorzeichenlose binäre ganze Zahl mit 32 Bit (32-bit unsigned binary integer), die die Anzahl von Bytes im ersten und zweiten Operanden angibt, und der Inhalt der Bitpositionen 0 bis 31 wird ignoriert; die Bits 32 bis 63 des aktualisierten Wertes ersetzen die entsprechenden Bits im Allgemeinregister R2 + 1. Im 64-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 0 bis 63 des Allgemeinregisters R2 + 1 eine vorzeichenlose binäre ganze Zahl mit 64 Bit, die die Anzahl von Bytes im ersten und zweiten Operanden angibt; und der aktualisierte Wert ersetzt den Inhalt des Allgemeinregisters R2 + 1.
  • Im 24-Bit- oder im 31-Bit-Adressiermodus bleibt der Inhalt der Bitpositionen 0 bis 31 der Allgemeinregister R1, R2 und R2 + 1 stets unverändert. 5 zeigt den Inhalt der gerade beschriebenen Allgemeinregister.
  • Im Zugriffsregistermodus (access-register mode) geben die Zugriffsregister 1, R1 und R2 die Adressbereiche an, die den Parameterblock und den ersten bzw. zweiten Operanden enthalten.
  • Das Ergebnis wird erhalten, als ob die Verarbeitung auf der linken Seite sowohl des ersten als auch des zweiten Operanden beginnt und Block für Block nach rechts weitergeht. Der Vorgang ist beendet, wenn die Anzahl von Bytes im zweiten Operanden gemäß der Angabe im Allgemeinregister R2 + 1 verarbeitet und an der Position des ersten Operanden platziert wurde (als normale Beendigung bezeichnet) oder wenn eine von der CPU festgelegte Anzahl von Blöcken, die geringer als die Länge des zweiten Operanden ist, verarbeitet wurden (als teilweise Beendigung bezeichnet). Die von der CPU festgelegte Anzahl von Blöcken hängt vom Modell ab, und es kann sich bei jeder Ausführung des Befehls um eine andere Anzahl handeln. Die von der CPU festgelegte Anzahl von Blöcken ist normalerweise verschieden von null. In bestimmten unüblichen Situationen kann diese Anzahl null sein, und der Bedingungscode 3 kann ohne Fortschritt gesetzt werden. Die CPU schützt jedoch vor einem endlosen Wiederholung dieses Falles ohne Fortschritt.
  • Die Ergebnisse an der Position des ersten Operanden und im Verkettungsfeld sind nicht vorhersehbar, falls eine der folgende Situationen auftritt:
    • 1. Das Feld des Verschlüsselungsschlüssels überlagert einen Teil des ersten Operanden.
    • 2. Das Verkettungswertfeld überlagert einen Teil des ersten Operanden oder des zweiten Operanden.
    • 3. Der erste und der zweite Operand überlappen sich unzulässig. Operanden überlappen sich unzulässig, wenn die Position des ersten Operanden als eine Quelle verwendet würde, nachdem Daten in diesen übertragen worden wären, unter der Voraussetzung, dass die Verarbeitung von links nach rechts und Byte pro Byte ausgeführt werden muss.
  • Wenn der Vorgang aufgrund einer normalen Beendigung endet, wird der Bedingungscode 0 gesetzt, und der sich ergebende Wert in R2 + 1 ist null. Wenn der Vorgang aufgrund einer teilweisen Beendigung endet, wird der Bedingungscode 3 gesetzt, und der sich ergebende Wert in R2 + 1 ist verschieden von null.
  • Wenn ein PER-Speicheränderungsereignis erkannt wird, werden weniger als 4 Kilobyte zusätzliche Bytes in die Positionen der ersten Operanden gespeichert, bevor das Ereignis gemeldet wird.
  • Wenn die Länge des zweiten Operanden anfänglich null ist, wird auf den Parameterblock, den ersten und den zweiten Operanden nicht zugegriffen, die Allgemeinregister R1, R2 und R2 + 1 werden nicht geändert, und der Bedingungscode 0 wird gesetzt.
  • Wenn der Inhalt der Felder R1 und R2 gleich ist, wird der Inhalt der bezeichneten Register nur um die Anzahl von verarbeiteten Bytes und nicht um die doppelte Anzahl verarbeiteter Bytes erhöht.
  • Im Falle einer Überwachung durch andere CPUs und Kanalprogramme können Bezugnahmen auf den Parameterblock und Speicheroperanden Bezugnahmen mit Mehrfachzugriff sein, Zugriffe auf diese Speicherpositionen laufen bezüglich der Blöcke nicht unbedingt gleichzeitig ab, und die Abfolge dieser Zugriffe oder Bezugnahmen ist nicht festgelegt.
  • In bestimmten ungewöhnlichen Situationen kann die Befehlsausführung durch Setzen des Bedingungscodes 3 beendet werden, ohne die Register und den Verkettungswert zu aktualisieren, um die letzte verarbeitete Einheit des ersten und zweiten Operanden widerzuspiegeln. Die Größe der verarbeiteten Einheit hängt in diesem Fall von der Situation und dem Modell ab, ist jedoch so begrenzt, dass die Teile des ersten und zweiten Operanden, die verarbeitet und nicht gemeldet wurden, sich im Speicher nicht überlappen. In allen Fällen werden Änderungsbits gesetzt und gegebenenfalls PER-Speicheränderungsereignisse für alle verarbeiteten Positionen des ersten Operanden gemeldet.
  • Zugriffsfehler können für einen größeren Teil eines Operanden gemeldet werden, als in einer einzigen Ausführung des Befehls verarbeitet wird; Zugriffsfehler werden jedoch weder für Positionen erkannt, die über die Länge eines Operanden hinausgehen, noch für Positionen, die um mehr als 4 Kilobyte über die gerade verarbeitete Position hinausgehen.
  • In Funktionsbeschreibungen verwendete Symbole
  • Die folgenden Symbole werden in der nachfolgenden Beschreibung der Funktionen NACHRICHT VERSCHLÜSSELN und NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG verwendet. Für Datenverschlüsselungsalgorithmus-Funktionen (data-encryption-algorithm (DEA) functions) wird das DEA-Schlüsselparitätsbit (DEA-key-parity bit) in jedem Byte des DEA-Schlüssels ignoriert, und der Vorgang wird unabhängig von der DEA-Schlüsselparität des Schlüssels normal fortgesetzt. Eine weitere Beschreibung des Datenverschlüsselungsalgorithmus ist in Data Encryption Algorithm, ANSI-X3.92.1981, American National Standard for Information Systems, zu finden.
  • 6 stellt das Symbol für die binäre Exklusiv-ODER-Verknüpfung dar, 7 stellt die Symbole für die DEA-Verschlüsselung und -Entschlüsselung dar.
  • KM-Abfrage (KM-Funktionscode 0)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen werden in 5 gezeigt.
  • Der für die KM-Abfragefunktion verwendete Parameterblock hat das in 8 gezeigte Format.
  • Ein 128-Bit-Statuswort wird im Parameterblock gespeichert. Die Bits 0 bis 127 dieses Feldes entsprechen jeweils den Funktionscodes 0 bis 127 des Befehls NACHRICHT VERSCHLÜSSELN. Wenn ein Bit eins ist, wird die entsprechende Funktion installiert, andernfalls wird die Funktion nicht installiert.
  • Der Bedingungscode 0 wird gesetzt, wenn die Ausführung der KM-Abfragefunktion beendet ist; der Bedingungscode 3 kann auf diese Funktion nicht angewandt werden.
  • KM-DEA (KM-Funktionscode 1)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen werden in 5 gezeigt.
  • Der für die Funktion KM-DEA verwendete Parameterblock hat das in 9 gezeigte Format.
  • Wenn das Änderungsbit im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des DEA-Algorithmus mit dem 64-Bit-Verschlüsselungsschlüssel im Parameterblock verschlüsselt. Jeder Block aus unverschlüsseltem Text wird unabhängig verschlüsselt; das heißt, der Verschlüsselungsvorgang wird ohne Verkettung ausgeführt. Die Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der Vorgang wird in 10 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des DEA-Algorithmus mit dem 64-Bit-Verschlüsselungsschlüssel im Parameterblock entschlüsselt. Jeder Block aus verschlüsseltem Text wird unabhängig entschlüsselt; das heißt, der Entschlüsselungsvorgang wird ohne Verkettung ausgeführt. Die Blöcke aus entschlüsseltem Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der KM-DEA-Entschlüsselungsvorgang wird in 11 gezeigt.
  • KM-TDEA-128 (KM-Funktionscode 2)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten. Der für die Funktion KM-TDEA-128 verwendete Parameterblock wird in 12 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-(Dreifach-DEA-)Algorithmus mit den beiden 64-Bit-Verschlüsselungsschlüsseln im Parameterblock verschlüsselt. Jeder Block aus unverschlüsseltem Text wird unabhängig verschlüsselt; das heißt, der Verschlüsselungsvorgang wird ohne Verkettung ausgeführt. Die Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der KM-TDEA-128-Verschlüsselungsvorgang wird in 13 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den beiden 64-Bit-Verschlüsselungsschlüsseln im Parameterblock entschlüsselt. Jeder Block aus verschlüsseltem Text wird unabhängig entschlüsselt; das heißt, der Entschlüsselungsvorgang wird ohne Verkettung ausgeführt. Die Blöcke aus entschlüsseltem Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der KM-TDEA-128-Entschlüsselungsvorgang wird in 14 gezeigt.
  • KM-TDEA-192 (KM-Funktionscode 3)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die Funktion KM-TDEA-192 verwendete Parameterblock hat das in 15 gezeigte Format.
  • Wenn das Änderungsbit im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den drei 64-Bit-Verschlüsselungsschlüsseln im Parameterblock verschlüsselt. Jeder Block aus unverschlüsseltem Text wird unabhängig verschlüsselt; das heißt, der Verschlüsselungsvorgang wird ohne Verkettung ausgeführt. Die Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der KM-TDEA-192-Verschlüsselungsvorgang wird in 16 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den drei 64-Bit-Verschlüsselungsschlüsseln im Parameterblock entschlüsselt. Jeder Block aus verschlüsseltem Text wird unabhängig entschlüsselt; das heißt, der Entschlüsselungsvorgang wird ohne Verkettung ausgeführt. Die Blöcke aus entschlüsseltem Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der KM-TDEA-192-Entschlüsselungsvorgang wird in 17 gezeigt.
  • KMC-Abfrage (KMC-Funktionscode 0)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die KMC-Abfragefunktion verwendete Parameterblock hat das in 18 gezeigte Format.
  • Ein 128-Bit-Statuswort wird im Parameterblock gespeichert. Die Bits 0 bis 127 dieses Feldes entsprechen jeweils den Funktionscodes 0 bis 127 des Befehls NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG. Wenn ein Bit eins ist, wird die entsprechende Funktion installiert; andernfalls wird die Funktion nicht installiert.
  • Der Bedingungscode 0 wird gesetzt, wenn die Ausführung der KMC-Abfragefunktion beendet ist; der Bedingungscode 3 kann auf diese Funktion nicht angewandt werden.
  • KMC-DEA (KMC-Funktionscode 1)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die KMC-DEA-Funktion verwendete Parameterblock hat das in 19 gezeigte Format.
  • Wenn das Änderungsbit im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des DEA-Algorithmus mit dem 64-Bit-Verschlüsselungsschlüssel und dem 64-Bit-Verkettungswert im Parameterblock verschlüsselt.
  • Der als anfänglicher Verkettungswert (initial chaining value – ICV) bezeichnete Verkettungswert zum Ableiten des ersten Blocks aus verschlüsseltem Text ist der Verkettungswert im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks aus verschlüsseltem Text ist der entsprechende vorhergehende Block aus verschlüsseltem Text. Die Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der letzte Block aus verschlüsseltem Text ist der Ausgabeverkettungswert (output chaining value – OCV) und wird im Verkettungswert-Feld des Parameterblocks gespeichert. Der KMC-DEA-Verschlüsselungsvorgang wird in 20 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des DEA-Algorithmus mit dem 64-Bit- Verschlüsselungsschlüssel und dem 64-Bit-Verkettungswert im Parameterblock entschlüsselt.
  • Der als anfänglicher Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des ersten Blocks aus unverschlüsseltem Text befindet sich im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks aus unverschlüsseltem Text ist der entsprechende vorhergehende Block aus verschlüsseltem Text. Die Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der letzte Block aus verschlüsseltem Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld im Parameterblock gespeichert. Der KMC-DEA-Entschlüsselungsvorgang wird in 21 gezeigt.
  • KMC-TDEA-128 (KMC-Funktionscode 2)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die KMC-TDER-128-Funktion verwendete Parameterblock hat das in 22 gezeigte Format.
  • Wenn das Änderungsbit im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den beiden 64-Bit-Verschlüsselungsschlüsseln und dem 64-Bit-Verkettungswert im Parameterblock verschlüsselt.
  • Der als anfänglicher Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des ersten Blocks aus verschlüsseltem Text ist der Verkettungswert im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks aus verschlüsseltem Text ist der entsprechende vorhergehende Block aus verschlüsseltem Text. Die Blöcke aus verschlüsseltem Text (Cl, C2, ..., Cn) werden im Operand 1 gespeichert. Der letzte Block aus verschlüsseltem Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld des Parameterblocks gespeichert. Der KMC-TDEA-128-Verschlüsselungsvorgang wird in 23 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den beiden 64-Bit-Verschlüsselungsschlüsseln und dem 64-Bit-Verkettungswert im Parameterblock entschlüsselt.
  • Der als anfänglicher Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des ersten Blocks aus unverschlüsseltem Text befindet sich im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks aus unverschlüsseltem Text ist der entsprechende vorhergehende Block aus verschlüsseltem Text. Die Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der letzte Block aus verschlüsseltem Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld im Parameterblock gespeichert. Der KMC-TDEA-128-Entschlüsselungsvorgang wird in 24 gezeigt.
  • KMC-TDEA-192 (KMC-Funktionscode 3)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die Funktion KMC-TDEA-192 verwendete Parameterblock hat das in 25 gezeigte Format.
  • Wenn das Änderungsbit im Allgemeinregister 0 null ist, wird ein Verschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den drei 64-Bit-Verschlüsselungsschlüsseln und dem 64-Bit-Verkettungswert im Parameterblock verschlüsselt.
  • Der als anfänglicher Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des ersten Blocks aus verschlüsseltem Text ist der Verkettungswert im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks aus verschlüsseltem Text ist der entsprechende vorhergehende Block aus verschlüsseltem Text. Die Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) werden im Operand 1 gespeichert. Der letzte Block aus verschlüsseltem Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld des Parameterblocks gespeichert. Der KMC-TDEA-192-Verschlüsselungsvorgang wird in 26 gezeigt.
  • Wenn das Änderungsbit im Allgemeinregister 0 eins ist, wird ein Entschlüsselungsvorgang ausgeführt. Die 8-Byte-Blöcke aus verschlüsseltem Text (C1, C2, ..., Cn) im Operand 2 werden unter Verwendung des TDEA-Algorithmus mit den drei 64-Bit-Verschlüsselungsschlüsseln und dem 64-Bit-Verkettungswert im Parameterblock entschlüsselt.
  • Der als anfänglicher Verkettungswert (ICV) bezeichnete Verkettungswert zum Ableiten des ersten Blocks aus unverschlüsseltem Text befindet sich im Parameterblock; der Verkettungswert zum Ableiten jedes nachfolgenden Blocks aus unverschlüsseltem Text ist der entsprechende vorhergehende Block aus verschlüsseltem Text. Die Blöcke aus unverschlüsseltem Text (P1, P2, ..., Pn) werden im Operand 1 gespeichert. Der letzte Block aus verschlüsseltem Text ist der Ausgabeverkettungswert (OCV) und wird im Verkettungswert-Feld im Parameterblock gespeichert. Der KMC-TDEA-192-Entschlüsselungsvorgang wird in 27 gezeigt.
  • Spezielle Bedingungen für KM und KMC
  • Ein Spezifikationsfehler wird erkannt und keine andere Maßnahme ergriffen, falls eine der folgenden Bedingungen auftritt:
    • 1. Die Bits 57 bis 63 des Allgemeinregisters 0 geben einen nichtzugewiesenen oder nichtinstallierten Funktionscode an.
    • 2. Das Feld R1 oder R2 bezeichnet ein Register mit ungerader Nummerierung oder das Allgemeinregister 0.
    • 3. Die Länge des zweiten Operanden ist kein Vielfaches der Datenblockgröße der bezeichneten Funktion (siehe 73 auf Seite 7–35 zur Ermittlung der Datenblockgrößen für Funktionen NACHRICHTEN VERSCHLÜSSELN; siehe 74 auf Seite 7–35 zur Ermittlung der Datenblockgrößen für Funktionen NACHRICHTEN VERSCHLÜSSELN MIT VERKETTUNG). Diese Spezifikationsfehler-Bedingung kann nicht auf die Abfragefunktionen angewandt werden.
  • Resultierender Bedingungscode:
    • 0 Normale Beendigung
    • 1 –
    • 2 –
    • 3 Teilweise Beendigung
  • Programmfehler:
    • • Zugriff (Abrufen, Operand 2 und Verschlüsselungsschlüssel; Speichern, Operand 1; Abrufen und Speichern, Verkettungswert)
    • • Vorgang (falls die Nachrichtensicherheitsunterstützung (message security assist) nicht installiert ist)
    • • Spezifikation
  • 28 ist eine Tabelle, die die Ausführungspriorität von KM und KMC zeigt.
  • Programmierhinweise:
    • 1. Wenn der Bedingungscode 3 gesetzt ist, werden die die Operandenadressen und -länge enthaltenden Allgemeinregister sowie bei NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG der Verkettungswert im Parameterblock normalerweise aktualisiert, so dass das Programm einfach zurück zum Befehl verzweigen kann, um den Vorgang fortzusetzen. Bei ungewöhnlichen Situationen schützt die CPU gegen ein endloses Wiederauftreten im Falle eines fehlenden Fortschritts und schützt auch vor dem Setzen des Bedingungscodes 3, wenn die erneut zu verarbeitenden Teile des ersten und zweiten Operanden sich im Speicher überlappen. Folglich kann das Programm bei jedem Setzen des Bedingungscodes 3 sicher zum Befehl zurück verzweigen, ohne einer Endlosschleife oder eines fehlerhaften erneuten Versuchs des Befehls ausgesetzt zu sein.
    • 2. Falls die Länge des zweiten Operanden anfänglich verschieden von null ist und der Bedingungscode 0 gesetzt wird, werden die Register auf dieselbe Weise aktualisiert wie beim Bedingungscode 3. Bei NACHRICHT VERSCHLÜSSELN MIT VERKETTUNG ist der Verkettungswert in diesem Fall so, dass zusätzliche Operanden verarbeitet werden können, als wären sie Teil derselben Kette.
    • 3. Zur Einsparung von Speicherplatz können sich der erste und der zweite Operand genau überlappen, oder der Anfangspunkt des ersten Operanden kann sich links vom Anfangspunkt des zweiten Operanden befinden. In jedem Fall ist die Überlappung nicht unzulässig.
  • VERSCHLÜSSELUNGSCOPROZESSOR (CRYPTO COPROCESSOR):
  • Die bevorzugte Ausführungsform stellt einen Verschlüsselungscoprozessor bereit, der mit den hierin beschriebenen Befehlen sowie zur Ausführung verschlüsselter Nachrichten und zur Unterstützung in einer Vielfalt von Verkettungsnachrichten-Tasks verwendet werden kann, die mit den entsprechenden Befehlen für Verkettungen und Verschlüsselungen verwendet werden können.
  • 29 stellt unseren Verschlüsselungscoprozessor dar, der direkt mit einem Datenpfad verbunden ist, der allen internen Ausführungseinheiten im Universalmikroprozessor mit mehreren Befehlsausführungsketten (execution pipelines) gemeinsam ist. Der interne Bus (1) des Mikroprozessors ist allen anderen mit der Verschlüsselungssteuereinheit (2) verbundenen Ausführungseinheiten gemeinsam, und die Steuereinheit überwacht den Bus auf Prozessorbefehle, die sie ausführen muss.
  • Die Verschlüsselungssteuereinheit stellt einen Verschlüsselungscoprozessor bereit, der direkt mit einem Datenpfad verbunden ist, der allen internen Ausführungseinheiten der Zentraleinheit in einem Universalmikroprozessor gemeinsamen ist, der die verfügbare Hardware (E0...En, oder eine Kombination davon in der bevorzugten Ausführungsform mit mehreren Befehlsausführungsketten) für die Zentraleinheit bereitstellt. Wenn ein Verschlüsselungsbefehl im Befehlsregister (3) gefunden wird, ruft die Steuereinheit (2) den entsprechenden Algorithmus aus der verfügbaren Hardware auf. Die Operandendaten werden über denselben internen Mikroprozessorbus über ein Eingabe-FIFO-Register (4) bereitgestellt. Wenn ein Vorgang ausgeführt worden ist, wird eine Markierung in einem Statusregister (6) gesetzt, und die Ergebnisse können aus dem Ausgabe-FIFO-Register (5) gelesen werden.
  • Die dargestellte bevorzugte Ausführungsform unserer Erfindung ist erweiterbar gestaltet, so dass sie so viele Hardwareeinrichtungen aufnehmen kann, wie von einer bestimmten Ausführung in Abhängigkeit von der gewünschten Leistungsfähigkeit des Systems benötigt werden. Die Datenpfade zu den Eingangs- und Ausgangsregistern (7) sind allen Einrichtungen gemeinsam.
  • Die Verschlüsselungsfunktionen der bevorzugten Ausführungsform der Erfindung werden in der Ausführungseinheit-Hardware in der CPU realisiert, und diese Realisierung ermöglicht eine kürzere Latenzzeit zum Aufrufen und Ausführen von Verschlüsselungsvorgängen und erhöht die Leistungsfähigkeit.
  • Diese verminderte Latenzzeit verbessert in hohem Maße die Funktionseigenschaften von Universalprozessoren in Systemen, die häufig viele Verschlüsselungsvorgänge ausführen, insbesondere wenn es sich nur um geringe Datenmengen handelt. Dies ermöglicht eine Ausführung, die die an sicheren Online-Transaktionen beteiligten Prozesse deutlich beschleunigen kann. Die üblichsten Verfahren zur Sicherung von Online-Transaktionen beinhalten einen Satz von drei Algorithmen. Der erste Algorithmus wird nur einmal in einer Sitzung verwendet und kann in Form von Hardware oder Software realisiert werden, während die anderen Vorgänge mit jeder Transaktion der Sitzung aufgerufen werden, und die Kosten verursachende Latenzzeit zum Aufrufen von externer Hardware sowie der Zeitaufwand zum Ausführen des Software-Algorithmus entfallen bei dieser Erfindung.
  • In 30 wurde konzeptionell die Realisierung dessen gezeigt, was in einer bevorzugten Ausführungsform in einem Großrechner mit dem oben beschriebenen Mikroprozessor realisiert wurde, der, wie wir innerhalb der IBM experimentell bewiesen haben, in einer handelsüblichen Ausführung des computerarchitekturdefinierten Befehlsformates der Einrichtung mit langer Verschiebung (long displacement facility) wirkungsvoll verwendet werden kann, wobei die Befehle von Programmierern verwendet werden, heutzutage normalerweise von „C"-Programmierern. Diese im Speichermedium gespeicherten Befehlsformate können ursprünglich in einem Server der IBM z/Architektur oder alternativ in Maschinen mit anderen Architekturen ausgeführt werden. Sie können in den vorhandenen und in künftigen IBM Großrechnern und in anderen Maschinen von IBM (z.B. Server der p-Serie und der x-Serie) emuliert werden. Sie können in Maschinen mit dem Betriebsystem Linux in einer großen Vielfalt von Maschinen unter Verwendung von Hardware von IBM, Intel, AMD, Sun Microsystems u.a. ausgeführt werden. Neben der Ausführung in dieser Hardware in einer z/Architektur kann Linux ebenso verwendet werden wie Maschinen, die eine Emulation von Hercules, UMX, FXI oder Platform Solutions verwenden, wobei die Ausführung im Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus wird der spezifische emulierte Befehl decodiert und eine Teilroutine zum Ausführen des einzelnen Befehls erstellt, wie in einer „C"-Teilroutine oder einem Treiber oder in einem anderen Verfahren zur Bereitstellung eines Treibers für die spezifische Hardware, wie Fachleute nach dem Lesen der Beschreibung der bevorzugten Ausführungsform verstehen werden. Verschiedene Software- und Hardwareemulationspatente, darunter – jedoch nicht ausschließlich – US 5 551 013 , US 6 009 261 , US 5 574 873 , US 6 308 255 , US 6 463 582 und US 5 790 825 , veranschaulichen die Vielfalt bekannter Möglichkeiten zum Ausführen einer Emulation eines Befehlsformates, dessen Architektur für eine andere Maschine, für eine für Fachleute erhältliche Zielmaschine sowie jene von den oben erwähnten Herstellern verwendeten handelsüblichen Softwareverfahren definiert wurde.
  • In der bevorzugten Ausführungsform bilden die bestehenden Befehlsformate mit langer Verschiebung für einen nichtsuperskalaren Befehl die Speicheradresse des Operanden durch Addition des Basisregisters und der vorzeichenlosen 12-Bit-Verschiebung (12 bit unsigned displacement) oder des Basisregisters, des Indexregisters und der vorzeichenlosen 12-Bit-Verschiebung, und die neuen Befehlsformate mit langer Verschiebung bilden die Speicheradresse des Operanden durch das Addieren des Basisregisters und der vorzeichenbehafteten 20-Bit-Verschiebung oder des Basisregisters, des Indexregisters und der vorzeichenbehafteten 20-Bit-Verschiebung.
  • Wie durch 30 gezeigt wird, werden diese Befehle in Hardware von einem Prozessor oder durch die Emulation des Befehlssatzes durch Software ausgeführt, die in einem Computer mit einem anderen ursprünglichen Befehlssatz ausgeführt wird.
  • In 30 wird bei 501 ein Computerspeicher gezeigt, der Befehle und Daten enthält. Die in dieser Erfindung beschriebenen Befehle mit langer Verschiebung würden anfangs in diesem Computer gespeichert. Bei 502 wird ein Mechanismus zum Abrufen von Befehlen aus einem Computerspeicher gezeigt, dies kann außerdem die lokale Zwischenspeicherung dieser abgerufenen Befehle beinhalten. Anschließend werden die unbearbeiteten Befehle an einen Befehlsdecodierer 503 übertragen, wo festgestellt wird, welcher Typ von Befehl abgerufen wurde. Bei 504 wird ein Mechanismus zum Ausführen von Befehlen gezeigt. Dazu kann das Laden von Daten aus dem Speicher 501 in ein Register, das Rückspeichern von Daten aus einem Register in den Speicher oder das Ausführen eines bestimmten Typs von arithmetischem oder logischem Vorgang gehören. Der genaue Typ von auszuführendem Vorgang wurde zuvor vom Befehlsdecodierer festgelegt. Die in dieser Erfindung beschriebenen Befehle mit langer Verschiebung würden hier ausgeführt werden. Falls die Befehle mit langer Verschiebung in einem Computersystem ursprünglich ausgeführt werden, ist diese Darstellung gemäß der obigen Beschreibung vollständig. Falls jedoch eine Befehlssatzarchitektur, die Befehle mit langer Verschiebung enthält, in einem anderen Computer emuliert wird, würde der obige Prozess in Form von Software in einem Hostcomputer 505 realisiert werden. In diesem Fall würde der oben dargelegte Mechanismus normalerweise als eine oder mehrere Software-Teilroutinen innerhalb der Emulationssoftware realisiert werden. In beiden Fällen wird ein Befehl abgerufen, decodiert und ausgeführt.
  • Insbesondere können diese architekturdefinierten Befehle in einer Computerarchitektur mit vorhandenen Befehlsformaten mit einer vorzeichenlosen 12-Bit-Verschiebung, die zum Bilden der Operandenspeicheradresse verwendet wird, sowie in einer Architektur mit zusätzlichen Befehlsformaten verwendet werden, die zusätzliche Verschiebungsbits bereitstellen, vorzugsweise 20 Bits, die eine erweiterte vorzeichenbehaftete Verschiebung (extended signed displacement) umfassen, die zum Bilden der Operandenspeicheradresse verwendet wird. Diese computerarchitekturdefinierten Befehle umfassen in einem Computerspeichermedium gespeicherte Computersoftware zum Erzeugen des Codes, der in dem die Computersoftware verwendenden Prozessor ausgeführt wird, und den Befehlscode zur Verwendung durch einen Compiler oder Emulator/Interpreter, der in einem Computerspeichermedium 501 gespeichert ist, und wobei der erste Teil des Befehlscodes einen Operationscode umfasst, der den auszuführenden Vorgang angibt, und der zweite Teil die beteiligten Operanden bezeichnet. Die Befehle mit langer Verschiebung ermöglichen die direkte Adressierung zusätzlicher Adressen unter Verwendung der Einrichtung für Befehle mit langer Verschiebung.
  • Wie in 30 gezeigt wird, werden diese Befehle in Hardware von einem Prozessor oder durch die Emulation des Befehlssatzes durch Software ausgeführt, die in einem Computer mit einem anderen ursprünglichen Befehlssatz ausgeführt wird.
  • Gemäß der Computerarchitektur der bevorzugten Ausführungsform wird das Verschiebungsfeld als zweiteilig definiert, wobei der aus 12 Bits bestehende niedrigstwertige Teil als DL bezeichnet wird, DL1 für den Operand 1 oder DL2 für den Operand 2, und der aus 8 Bits bestehende höchstwertige Teil als DH bezeichnet wird, DH1 für den Operand 1 oder DH2 für den Operand 2.
  • Außerdem weist die bevorzugte Computerarchitektur das folgende Befehlsformat auf: der Operationscode befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als R1 bezeichnetes Zielregister in den Bitpositionen 8 bis 11, ein als X2 bezeichnetes Indexregister in den Bitpositionen 12 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16 bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der erste als DL2 bezeichnete Teil sich in den Bitpositionen 20 bis 31 und der als DH2 bezeichnete zweite Teil sich in den Bitpositionen 32 bis 39 befindet.
  • Diese Computerarchitektur hat das folgende Befehlsformat: der Operationscode befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als R1 bezeichnetes Zielregister in den Bitpositionen 8 bis 11, ein als R3 bezeichnetes Quellenregister in den Bitpositionen 12 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16 bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der als DL2 bezeichnete erste Teil sich in den Bitpositionen 20 bis 31 und der als DH2 bezeichnete zweite Teil sich in den Bitpositionen 32 bis 39 befindet.
  • Außerdem weisen unsere Computerarchitekturbefehle mit einer Einrichtung für lange Verschiebung das folgende Befehlsformat auf: der Operationscode befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als R1 bezeichnetes Zielregister in den Bitpositionen 8 bis 11, ein als M3 bezeichneter Maskenwert (mask value) in den Bitpositionen 12 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16 bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der als DL2 bezeichnete erste Teil sich in den Bitpositionen 20 bis 31 und der als DH2 bezeichnete zweite Teil sich in den Bitpositionen 32 bis 39 befindet.
  • Wie dargestellt wird, hat unsere bevorzugte Computerarchitektur mit ihrer Einrichtung für lange Verschiebung das folgende Befehlsformat: der Operationscode befindet sich in den Bitpositionen 0 bis 7 und 40 bis 47, ein als I2 bezeichneter Direktwert (immediate value) in den Bitpositionen 8 bis 15, ein als B2 bezeichnetes Basisregister in den Bitpositionen 16 bis 19, eine aus zwei Teilen bestehende Verschiebung, wobei der als DL1 bezeichnete erste Teil sich in den Bitpositionen 20 bis 31 und der als DH1 bezeichnete zweite Teil sich in den Bitpositionen 32 bis 39 befindet.
  • Unsere Computerarchitektur mit der Einrichtung für lange Verschiebung arbeitet leistungsfähig, wenn neu erzeugte Befehle verwendet werden, die ausschließlich das Befehlsformat mit der neuen vorzeichenlosen 20-Bit-Verschiebung verwenden.
  • Ein spezifisches Beispiel unserer Computerarchitektur verwendet vorhandene Befehle mit Befehlsformaten, die nur die vorzeichenlose 12-Bit-Verschiebung aufweisen und nun in den neuen Befehlsformaten definiert werden, so dass sie den vorhandenen vorzeichenlosen 12-Bit-Verschiebungswert aufweisen, wenn die 8 höchstwertigen Bits der Verschiebung, Feld DH, alle null sind, oder einen vorzeichenbehafteten 20-Bit-Wert aufweisen, wenn die höchstwertigen 8 Bits der Verschiebung, Feld DH, verschieden von null sind.
  • Eine Vorrichtung zum Verschlüsseln oder Entschlüsseln des Speichers einer Datenverarbeitungsumgebung, wobei die Vorrichtung Folgendes umfasst:
    ein Mittel zum Angeben einer zu verschlüsselnden oder zu entschlüsselnden Speichereinheit über einen Befehl; und
    ein Mittel zum Verschlüsseln oder Entschlüsseln der Speichereinheit.

Claims (11)

  1. Verfahren zum Verschlüsseln oder Entschlüsseln des Speichers einer Datenverarbeitungsumgebung, wobei das Verfahren Folgendes umfasst: Angeben einer zu verschlüsselnden oder zu entschlüsselnden Speichereinheit über einen Mikroprozessorbefehl; und Verschlüsseln oder Entschlüsseln der Speichereinheit; dadurch gekennzeichnet, dass der Befehl einem Feld zugeordnet wird, das einen Funktionscodewert kennzeichnet, und einem anderen Feld, das einen Änderungsbitwert kennzeichnet, und dass ein den Befehl ausführender Prozessor auf der Grundlage des Funktionscodewertes und des Änderungsbitwertes erkennt, ob ein Verschlüsselungs- oder Entschlüsselungsvorgang ausgeführt werden muss; und wobei ein zusätzlicher Funktionscodewert einem Abfragevorgang entspricht, der der die Speicherung eines Statuswortes in einem Parameterblock veranlasst, wobei das Statuswort eine Vielzahl von Bits aufweist, wobei ein Bit des Statuswortes einem einer installierten Funktion entsprechenden Funktionscodewert entspricht, wenn es einen Binärwert von 1 hat, und wobei ein Bit des Statuswortes einem einer nichtinstallierten Funktion entsprechenden Funktionscodewert entspricht, wenn es einen Binärwert von 0 hat.
  2. Verfahren nach Anspruch 1, wobei der Befehl bei Ausführung durch den Prozessor das Ergebnis der Verschlüsselung oder Entschlüsselung in einem ersten Operanden speichert.
  3. Verfahren nach Anspruch 1, wobei der Befehl einen Operationscode und keine anderen Felder umfasst, wenn der Funktionscodewert einem Abfragevorgang entspricht.
  4. Verfahren nach Anspruch 1, wobei der Funktionscodewert irgendeinem der folgenden Vorgänge entspricht: einem KM-Abfragevorgang, einem KM-DEA-Verschlüsselungsvorgang mit 64-Bit-Schlüssel, einem Dreifach-KM-DEA-Verschlüsselungsvorgang mit zwei 64-Bit-Schlüsseln oder einem Dreifach-KM-DEA-Verschlüsselungsvorgang mit drei 64-Bit-Schlüsseln.
  5. Verfahren nach Anspruch 1, wobei der Befehl in einem für die Befehlsarchitektur des Prozessors spezifischen Format vorliegt.
  6. In einem computerlesbaren Speichermedium gespeichertes Computerprogrammprodukt, um bei Ausführung in einem Computersystem dieses zum Ausführen des Verfahrens nach irgendeinem der vorhergehenden Ansprüche zu veranlassen.
  7. Vorrichtung zum Verschlüsseln oder Entschlüsseln des Speichers einer Datenverarbeitungsumgebung, wobei die Vorrichtung Folgendes umfasst: ein Mittel zum Angeben einer zu verschlüsselnden oder zu entschlüsselnden Speichereinheit über einen Mikroprozessorbefehl; und ein Mittel zum Verschlüsseln oder Entschlüsseln der Speichereinheit; dadurch gekennzeichnet, dass der Befehl einem Feld zugeordnet wird, das einen Funktionscodewert kennzeichnet, und einem anderen Feld, das einen Änderungsbitwert kennzeichnet, und dass ein den Befehl ausführender Prozessor auf der Grundlage des Funktionscodewertes und des Änderungsbitwertes erkennt, ob ein Verschlüsselungs- oder Entschlüsselungsvorgang ausgeführt werden muss; und wobei ein zusätzlicher Funktionscodewert einem Abfragevorgang entspricht, der die Speicherung eines Statuswortes in einem Parameterblock veranlasst, wobei das Statuswort eine Vielzahl von Bits aufweist, wobei ein Bit des Statuswortes einem einer installierten Funktion entsprechenden Funktionscodewert entspricht, wenn es einen Binärwert von 1 hat, und wobei ein Bit des Statuswortes einem einer nichtinstallierten Funktion entsprechenden Funktionscodewert entspricht, wenn es einen Binärwert von 0 hat.
  8. Vorrichtung nach Anspruch 7, wobei der Befehl bei Ausführung durch den Prozessor das Ergebnis der Verschlüsselung oder Entschlüsselung in einem ersten Operanden speichert.
  9. Vorrichtung nach Anspruch 7, wobei der Befehl einen Operationscode und keine anderen Felder umfasst, wenn der Funktionscodewert einem Abfragevorgang entspricht.
  10. Vorrichtung nach Anspruch 7, wobei der Funktionscodewert irgendeinem der folgenden Vorgänge entspricht: einem KM-Abfragevorgang, einem KM-DEA-Verschlüsselungsvorgang mit 64-Bit-Schlüssel, einem Dreifach-KM-DEA-Verschlüsselungsvorgang mit zwei 64-Bit-Schlüsseln oder einem Dreifach-KM-DEA-Verschlüsselungsvorgang mit drei 64-Bit-Schlüsseln.
  11. Vorrichtung nach Anspruch 7, wobei der Befehl in einem für die Befehlsarchitektur des Prozessors spezifischen Format vorliegt.
DE602004005025T 2003-05-12 2004-05-04 Instruktionen zur verarbeitung einer verschlusselten nachricht Active DE602004005025T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US435916 2003-05-12
US10/435,916 US7257718B2 (en) 2003-05-12 2003-05-12 Cipher message assist instructions
PCT/GB2004/001928 WO2004099950A1 (en) 2003-05-12 2004-05-04 Instructions to assist the processing of a cipher message

Publications (2)

Publication Number Publication Date
DE602004005025D1 DE602004005025D1 (de) 2007-04-12
DE602004005025T2 true DE602004005025T2 (de) 2007-08-09

Family

ID=33417043

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004005025T Active DE602004005025T2 (de) 2003-05-12 2004-05-04 Instruktionen zur verarbeitung einer verschlusselten nachricht

Country Status (15)

Country Link
US (6) US7257718B2 (de)
EP (1) EP1623294B1 (de)
KR (1) KR100745430B1 (de)
CN (1) CN100394348C (de)
AT (1) ATE355552T1 (de)
AU (1) AU2004236861A1 (de)
CA (1) CA2523241C (de)
DE (1) DE602004005025T2 (de)
ES (1) ES2279366T3 (de)
GB (1) GB2413878B (de)
IL (1) IL171906A (de)
PL (1) PL1623294T3 (de)
RU (1) RU2334268C2 (de)
TW (1) TWI279692B (de)
WO (1) WO2004099950A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802108B1 (en) * 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
US20040230813A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Cryptographic coprocessor on a general purpose microprocessor
KR100604828B1 (ko) * 2004-01-09 2006-07-28 삼성전자주식회사 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치
KR101123742B1 (ko) * 2005-12-23 2012-03-16 삼성전자주식회사 사용자 인터페이스와 소프트웨어 간의 신뢰 경로 설정 방법및 장치
US20100169637A1 (en) * 2008-06-28 2010-07-01 Visisoft, Llc Palette for real-time display of previously accessed documents
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US9179303B2 (en) * 2010-11-17 2015-11-03 Qualcomm Incorporated Methods and apparatus for transmitting and receiving secure and non-secure data
US8737604B2 (en) 2011-05-09 2014-05-27 Advanced Micro Devices, Inc. Processor with architecture implementing the advanced encryption standard
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US20150234750A1 (en) * 2014-02-18 2015-08-20 Aspeed Technology Inc. Method and apparatus for addressing a memory containing different bit-length field variables
US10642987B2 (en) * 2017-01-19 2020-05-05 Ebay Inc. Cryptography based fraud tracking
US11121856B2 (en) * 2018-06-15 2021-09-14 Intel Corporation Unified AES-SMS4—Camellia symmetric key block cipher acceleration
US11700135B2 (en) * 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function
US11706039B2 (en) 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function
US20220209967A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Isa accessible physical unclonable function

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
JPS56121138A (en) 1980-02-28 1981-09-22 Nippon Telegr & Teleph Corp <Ntt> Buffer memory controlling system
JPS56149645A (en) * 1980-04-21 1981-11-19 Nec Corp Instruction word deciphering device of information processor
US4578530A (en) * 1981-06-26 1986-03-25 Visa U.S.A., Inc. End-to-end encryption system and method of operation
EP0354774B1 (de) 1988-08-11 1996-04-10 International Business Machines Corporation Geheime Datenübertragung mittels Steuervektoren
US5058164A (en) * 1990-05-03 1991-10-15 National Semiconductor Corp. Encryption of streams of addressed information to be used for program code protection
JP3086507B2 (ja) 1991-10-02 2000-09-11 旭化成工業株式会社 熱可塑性合成樹脂成形品
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5673319A (en) 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
US5765030A (en) * 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5787302A (en) 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US20010025337A1 (en) 1996-06-10 2001-09-27 Frank Worrell Microprocessor including a mode detector for setting compression mode
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
JPH11249873A (ja) 1998-03-02 1999-09-17 Mitsubishi Electric Corp ドライバ機能の動的管理方式及び動的管理方法
EP2031792B1 (de) * 1998-06-03 2013-01-09 Cryptography Research Inc. Gesicherte modulare Exponentiation mit Verlustminimierung für Smart-Cards und andere Kryptosysteme
DE69936856T2 (de) * 1998-06-03 2008-04-30 Cryptography Research Inc., San Francisco Ausgewogene kryptographische rechenmethode und apparat zur schlupfminimierung in smartcards und anderen kryptosystemen
EP1210790A2 (de) 1999-08-09 2002-06-05 QUALCOMM Incorporated Verfahren und vorrichtung zur erzeugung eines nachrichtenauthentifizierungscodes (mac)
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
US7278016B1 (en) * 1999-10-26 2007-10-02 International Business Machines Corporation Encryption/decryption of stored data using non-accessible, unique encryption key
US6542981B1 (en) * 1999-12-28 2003-04-01 Intel Corporation Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode
CA2305078A1 (en) * 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
JP4098478B2 (ja) * 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US20030002666A1 (en) 2001-06-13 2003-01-02 Takahashi Richard J. Method and apparatus for creating a message digest using a parallel, one-way hash algorithm
US7360076B2 (en) * 2001-06-13 2008-04-15 Itt Manufacturing Enterprises, Inc. Security association data cache and structure
US7266703B2 (en) * 2001-06-13 2007-09-04 Itt Manufacturing Enterprises, Inc. Single-pass cryptographic processor and method
US20030028765A1 (en) 2001-07-31 2003-02-06 Cromer Daryl Carvis Protecting information on a computer readable medium
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US6996725B2 (en) * 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors
US6765030B2 (en) 2002-03-22 2004-07-20 The University Of North Carolina At Chapel Hill Methods of forming polymeric structures using carbon dioxide and polymeric structures formed therapy
US7254696B2 (en) * 2002-12-12 2007-08-07 Alacritech, Inc. Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
CN100539289C (zh) 2006-05-23 2009-09-09 索尼株式会社 电池

Also Published As

Publication number Publication date
WO2004099950A1 (en) 2004-11-18
US20120254628A1 (en) 2012-10-04
TW200511040A (en) 2005-03-16
US8103860B2 (en) 2012-01-24
GB2413878A (en) 2005-11-09
US20040230816A1 (en) 2004-11-18
EP1623294B1 (de) 2007-02-28
GB0516236D0 (en) 2005-09-14
US20080201554A1 (en) 2008-08-21
US9424055B2 (en) 2016-08-23
CA2523241A1 (en) 2004-11-18
GB2413878B (en) 2006-04-05
EP1623294A1 (de) 2006-02-08
CN1764881A (zh) 2006-04-26
RU2334268C2 (ru) 2008-09-20
US7257718B2 (en) 2007-08-14
US7720220B2 (en) 2010-05-18
KR100745430B1 (ko) 2007-08-02
RU2005121915A (ru) 2007-06-20
US20090164803A1 (en) 2009-06-25
CA2523241C (en) 2011-09-20
US8261048B2 (en) 2012-09-04
CN100394348C (zh) 2008-06-11
TWI279692B (en) 2007-04-21
US20140114641A1 (en) 2014-04-24
US20120096283A1 (en) 2012-04-19
IL171906A0 (en) 2006-04-10
DE602004005025D1 (de) 2007-04-12
KR20060009247A (ko) 2006-01-31
IL171906A (en) 2010-11-30
ATE355552T1 (de) 2006-03-15
AU2004236861A1 (en) 2004-11-18
PL1623294T3 (pl) 2007-07-31
US8661231B2 (en) 2014-02-25
ES2279366T3 (es) 2007-08-16

Similar Documents

Publication Publication Date Title
DE602004005025T2 (de) Instruktionen zur verarbeitung einer verschlusselten nachricht
DE602004004101T2 (de) Bearbeitung von message-digest-befehlen
DE602004004079T2 (de) Befehl zur berechnung eines sicherheits-nachricht-authentifizierungskodes
DE112012007063B4 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE10319435B4 (de) Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE102009041176B4 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
DE102018005101A1 (de) Feld-Systemtest-Sicherheit
DE112014000329T5 (de) Anweisung zum Ausführen einer Operation zum Generieren einer pseudozufälligen Zahl
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112014000252T5 (de) Anweisung &#34;Vector floating point test data class immediate&#34;
DE112013004798T5 (de) Befehlssatz zur Nachrichtenplanung des SHA256-Algorithmus
DE102019100009A1 (de) Vereinheitlichter Hardwarebeschleuniger für Verschlüsselungssysteme mit symmetrischen Schlüsseln
DE112014000845T5 (de) Anweisung zum Ausführen einer Seed-Operation für eine pseudozufällige Zahl
DE112017004609T5 (de) Mehrstufiges Speicherintegritätsverfahren und -vorrichtung
DE102008014359A1 (de) Ausführen einer AES-Verschlüsselung oder -Entschlüsselung in mehreren Modi mit einem einzigen Befehl
DE112013005466T5 (de) Anweisung &#34;Vector generate mask&#34;
DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
DE102012215196A1 (de) Schützen von Anwendungsprogrammen vor zerstörerischer Software oder Malware
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster

Legal Events

Date Code Title Description
8364 No opposition during term of opposition