DE602004004101T2 - Bearbeitung von message-digest-befehlen - Google Patents

Bearbeitung von message-digest-befehlen Download PDF

Info

Publication number
DE602004004101T2
DE602004004101T2 DE602004004101T DE602004004101T DE602004004101T2 DE 602004004101 T2 DE602004004101 T2 DE 602004004101T2 DE 602004004101 T DE602004004101 T DE 602004004101T DE 602004004101 T DE602004004101 T DE 602004004101T DE 602004004101 T2 DE602004004101 T2 DE 602004004101T2
Authority
DE
Germany
Prior art keywords
message digest
operand
command
general register
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE602004004101T
Other languages
English (en)
Other versions
DE602004004101D1 (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 DE602004004101D1 publication Critical patent/DE602004004101D1/de
Application granted granted Critical
Publication of DE602004004101T2 publication Critical patent/DE602004004101T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/30181Instruction operation extension or modification
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Manufacturing Of Printed Wiring (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)

Description

  • Diese Erfindung betrifft die Computersystemarchitektur und insbesondere die Verarbeitung von neuen Befehlen, die die IBM z/Architektur erweitern und von anderen 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, 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 in Dezember 2000 veröffentlichte erste Ausgabe von „z/Architecture Principles of Operation" wurde als SA22-7832-00 zur Standardquellenangabe.
  • 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.
  • Ein Befehl, der einen Hash-Vorgang ausführt, der zum Berechnen eines Message Digest geeignet ist, ist aus GB 149 475 0 bekannt.
  • Die vorliegende Erfindung stellt ein Verfahren bereit, wie es in Anspruch 1 beansprucht wird.
  • Die Merkmale der bevorzugten Ausführungsformen der Erfindung gehen für Fachleute aus der folgenden ausführlichen Beschreibung in Verbindung mit den begleitenden Zeichnungen hervor, in denen:
  • 1 eine Darstellung des Befehls „Vorläufigen Message Digest berechnen" (Compute Intermediate Message Digest – KIMD) im RRE-Befehlsformat ist;
  • 2 eine Darstellung des Befehls „Letzten Message Digest berechnen" (Compute Last Message Digest – KLMD) im RRE-Befehlsformat ist;
  • 3 eine Tabelle ist, die die Funktionscodes des Befehls KIMD von 1 zeigt;
  • 4 eine Tabelle ist, die die Funktionscodes des Befehls KLMD von 2 zeigt;
  • 5 eine Darstellung der Allgemeinregisterzuordnung für die Befehle KIMD und KLMD der 1 und 2 ist;
  • 6 das Symbol für den SHA1-Block-Digest-Algorithmus darstellt;
  • 7 das Format des Parameterblocks für eine KIMD-Abfrage darstellt;
  • 8 das Format des Parameterblocks für KIMD-SHA-1 darstellt;
  • 9 den KIMD-SHA-1-Vorgang darstellt;
  • 10 das Format für den Parameterblock für eine KLMD-Abfrage darstellt;
  • 11 das Format für den Parameterblock für KLMD-SHA-1 darstellt;
  • 12 den KLMD-SHA-1-Vorgang für den gesamten Block (KLDM-SHA-1 Full Block operation) darstellt;
  • 13 den KLMD-SHA-1-Vorgang für den leeren Block (KLDM-SHA-1 Empty Block operation) darstellt;
  • 14 den KLMD-SHA-1-Vorgang für den Fall 1 des Teilblocks (KLDM-SHA-1 Partial-Block Case 1 operation) darstellt;
  • 15 den KLMD-SHA-1-Vorgang für den Fall 2 des Teilblocks (KLDM-SHA-1 Partial-Block Case 2 operation) darstellt;
  • 16 eine Tabelle ist, die die Ausführungspriorität der Befehle KIMD und KLMD darstellt;
  • 17 unseren Verschlüsselungscoprozessor darstellt; und
  • 18 die verallgemeinerte bevorzugte Ausführungsform eines Computerspeichers, der Befehle gemäß der bevorzugten Ausführungsform und Daten enthält, sowie den Mechanismus zum Abrufen, Decodieren und Ausführen dieser Befehle zeigt, entweder in einem Computersystem, das diese architekturdefinierten Befehle verwendet, oder wie sie in der Emulation unserer architekturdefinierten Befehle verwendet werden.
  • Die hierin erläuterten Message-Digest-Befehle dienen der Berechnung einer verdichteten Darstellung einer Nachricht oder einer Datendatei. Als Erstes werden die Befehle „Vorläufigen Message Digest berechnen" und „Letzten Message Digest berechnen" 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.
  • VORLÄUFIGEN MESSAGE DIGEST BERECHNEN (KIMD)
  • 1 ist eine Darstellung des Befehls „Vorläufigen Message Digest berechnen" (KIMD) in RRE-Befehlsformat.
  • LETZTEN MESSAGE DIGEST BERECHNEN (KLMD)
  • 2 ist eine Darstellung des Befehls „Letzten Message Digest berechnen" (KLMD) in RRE-Befehlsformat.
  • Eine durch den Funktionscode im Allgemeinregister 0 angegebene Funktion wird ausgeführt.
  • Die Bits 16 bis 23 des Befehls und das Feld R1 werden ignoriert.
  • Die Bitpositionen 57 bis 63 des Allgemeinregisters 0 enthalten den Funktionscode. Die 3 und 4 zeigen die zugeordneten Funktionscodes für VORLÄUFIGEN MESSAGE DIGEST BERECHNEN bzw. LETZTEN MESSAGE DIGEST BERECHNEN. Alle anderen Funktionscodes werden nicht zugeordnet. Das Bit 56 des Allgemeinregisters 0 muss null sein; andernfalls wird ein Spezifikationsfehler (specification exception) erkannt. Alle anderen Bits des Allgemeinregisters 0 werden ignoriert. Das Allgemeinregister 1 enthält die logische Adresse des höchstwertigen Byte des Parameterblocks im Speicher. Im 24-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 40 bis 63 des Allgemeinregisters 1 die Adresse, und der Inhalt der Bitpositionen 0 bis 39 wird ignoriert. Im 31-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 33 bis 63 des Allgemeinregisters 1 die Adresse, und der Inhalt der Bitpositionen 0 bis 32 wird ignoriert. Im 64-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 0 bis 63 des Allgemeinregisters 1 die Adresse.
  • Die Funktionscodes für VORLÄUFIGEN MESSAGE DIGEST BERECHNEN werden in 3 gezeigt.
  • Die Funktionscodes für LETZTEN MESSAGE DIGEST BERECHNEN werden in 4 gezeigt.
  • Alle anderen Funktionscodes werden nicht zugeordnet.
  • Die Abfragefunktion stellt das Mittel zum Angeben der Verfügbarkeit aller anderen Funktionen bereit. Der Inhalt der Allgemeinregister R2 und R2 + 1 wird für die Abfragefunktion ignoriert.
  • Für alle anderen Funktionen wird der zweite Operand verarbeitet, wie durch den Funktionscode angegeben wird, wobei ein anfänglicher Verkettungswert im Parameterblock verwendet wird und das Ergebnis den Verkettungswert ersetzt. Bei LETZTEN MESSAGE DIGEST BERECHNEN verwendet der Vorgang außerdem eine Nachrichtenbitlänge im Parameterblock. Der Vorgang wird fortgesetzt, bis das Ende der Position des zweiten Operanden erreicht wird oder eine von der CPU festgelegte Anzahl von Bytes verarbeitet wurde, je nachdem welches von beiden Ereignissen zuerst eintritt. Das Ergebnis wird im Bedingungscode (condition code) angegeben.
  • Das Feld R2 bezeichnet ein gerades/ungerades Paar von Allgemeinregistern und muss ein Register mit einer geraden Nummerierung bezeichnen; andernfalls wird ein Spezifikationsfehler erkannt.
  • Die Position des höchstwertigen Byte des zweiten Operanden wird durch den Inhalt des Allgemeinregisters R2 angegeben. Die Anzahl von Bytes an der Position des zweiten Operanden wird im Allgemeinregister R2 + 1 angegeben.
  • Als Teil des Vorgangs wird die Adresse im Allgemeinregister R2 um die Anzahl der vom zweiten Operanden verarbeiteten Bytes erhöht, und die Länge im Allgemeinregister R2 + 1 wird um die gleiche Anzahl vermindert. Die Bildung und Aktualisierung der Adresse und der Länge sind abhängig vom Adressiermodus.
  • Im 24-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 40 bis 63 des Allgemeinregisters R2 die Adresse des zweiten Operanden, und der Inhalt der Bitpositionen 0 bis 39 wird ignoriert; die Bits 40 bis 63 der aktualisierten Adresse ersetzen die entsprechenden Bits im Allgemeinregister R2, Übertragungsausgänge (carries out) der Bitposition 40 der aktualisierten Adresse werden ignoriert, und der Inhalt der Bitpositionen 32 bis 39 des Allgemeinregisters R2 wird auf Nullen gesetzt. Im 31-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 33 bis 63 des Allgemeinregisters R_ die Adresse des zweiten Operanden, und der Inhalt der Bitpositionen 0 bis 32 wird ignoriert; die Bits 33 bis 63 der aktualisierten Adresse ersetzen die entsprechenden Bits im Allgemeinregister R2, Übertragungsausgänge der Bitposition 33 der aktualisierten Adresse werden ignoriert, und der Inhalt der Bitposition 32 des Allgemeinregisters R2 wird auf null gesetzt. Im 64-Bit-Adressiermodus bildet der Inhalt der Bitpositionen 0 bis 63 des Allgemeinregisters R2 die Adresse des zweiten Operanden; die Bits 0 bis 63 der aktualisierten Adresse ersetzen den Inhalt des Allgemeinregisters R_, und Übertragungsausgänge 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 zweiten Operanden angibt; und der aktualisierte Wert ersetzt den Inhalt der Bitpositionen 32 bis 63 des Allgemeinregisters 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 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 R2 und R2 + 1 stets unverändert.
  • 5 zeigt den Inhalt der gerade beschriebenen Allgemeinregister. Im Zugriffsregistermodus (access-register mode) geben die Zugriffsregister 1 und R2 die Adressbereiche an, die den Parameterblock bzw. den zweiten Operanden enthalten.
  • Das Ergebnis wird erhalten, als ob die Verarbeitung auf der linken Seite des zweiten Operanden beginnt und Block für Block nach rechts weitergeht. Der Vorgang ist beendet, wenn alle Quellenbytes im zweiten Operanden verarbeitet wurden (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.
  • Wenn das Feld für den Verkettungswert einen Teil des zweiten Operanden überlagert, ist das Ergebnis in diesem Feld nicht vorhersehbar.
  • Bei VORLÄUFIGEN MESSAGE DIGEST BERECHNEN findet eine normale Beendigung statt, wenn die im Allgemeinregister R2 + 1 angegebene Anzahl von Bytes im zweiten Operanden verarbeitet wurde. Bei LETZTEN MESSAGE DIGEST BERECHNEN wird der Auffüllvorgang ausgeführt, nachdem alle Bytes im zweiten Operanden entsprechend der Angabe im Allgemeinregister R2 + 1 verarbeitet wurden, und anschließend findet eine normale Beendigung statt.
  • 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 nu1ll.
  • Wenn die Länge des zweiten Operanden anfänglich null ist, wird auf den zweiten Operanden nicht zugegriffen, die Allgemeinregister R2 und R2 + 1 werden nicht geändert, und der Bedingungscode 0 wird gesetzt. Bei VORLÄUFIGEN MESSAGE-DIGEST BERECHNEN wird nicht auf den Parameterblock zugegriffen. Bei LETZTEN MESSAGE DIGEST BERECHNEN wird jedoch der Auffüllvorgang für den Fall eines leeren Blocks (L = 0) ausgeführt und das Ergebnis im Parameterblock gespeichert.
  • 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.
  • Zugriffsfehler können für einen größeren Teil des zweiten Operanden berichtet werden, als in einer einzigen Ausführung des Befehls verarbeitet wird; Zugriffsfehler werden jedoch weder für Positionen erkannt, die über die Länge des zweiten Operanden hinausgehen, noch für Positionen, die um mehr als 4 Kilobyte über die gerade verarbeitete Position hinausgehen.
  • In Funktionsbeschreibungen verwendete Symbole
  • Die Symbole von 6 werden in der nachfolgenden Beschreibung der Funktionen VORLÄUFIGEN MESSAGE DIGEST BERECHNEN und LETZTEN MESSAGE DIGEST BERECHNEN verwendet. Eine weitere Beschreibung des sicheren Hash-Algorithmus ist in „Secure Hash Standard", Federal Information Processing Standards, Veröffentlichung 180-1, National Institute of Standards and Technology, Washington DC, 17. April 1995, zu finden.
  • KIMD-Abfrage (KIMD-Funktionscode 0)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen werden in 5 gezeigt.
  • Der Parameterblock für die KIMD-Abfrage hat das in 7 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 VORLÄUFIGEN MESSAGE DIGEST BERECHNEN. 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 KIMD-Abfragefunktion beendet ist; der Bedingungscode 3 kann auf diese Funktion nicht angewandt werden.
  • KIMD-SHA-1 (KIMD-Funktionscode 1)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen werden in 8 gezeigt.
  • Der für die KIMD-SHA-1-Funktion verwendete Parameterblock hat das in 8 gezeigte Format.
  • Unter Verwendung des SHA-1-Block-Digest-Algorithmus (SHA-1 block digest algorithm) mit dem 20-Byte-Verkettungswert im Parameterblock wird ein vorläufiger 20-Byte-Message-Digest für die 64-Byte-Nachrichtenblöcke im Operand 2 erzeugt. Der erzeugte vorläufige Message Digest, auch als Ausgabeverkettungswert (output chaining value – OCV) bezeichnet, wird im Feld „Verkettungswert" des Parameterblocks gespeichert. Der KIMD-SHA-1-Vorgang wird in 9 gezeigt.
  • KLMD-Abfrage (KLMD-Funktionscode 0)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die Funktion KLMD-Abfrage verwendete Parameterblock hat das in 10 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 LETZTEN MESSAGE DIGEST BERECHNEN. 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 Funktion KLMD-Abfrage endet; der Bedingungscode 3 kann auf diese Funktion nicht angewandt werden.
  • KLMD-SHA-1 (KLMD-Funktionscode 1)
  • Die Positionen der vom Befehl verwendeten Operanden und Adressen entsprechen den in 5 gezeigten.
  • Der für die Funktion KLMD-SHA-1 verwendete Parameterblock hat das in 11 gezeigte Format.
  • Der Message Digest für die Nachricht (M) im Operand 2 wird unter Verwendung des SHA-1-Algorithmus mit dem Verkettungswert und den Daten zur Nachrichtenbitlänge im Parameterblock erzeugt.
  • Falls die Länge der Nachricht im Operand 2 gleich oder größer als 64 Byte ist, wird für jeden 64-Byte-Nachrichtenblock unter Verwendung des SHA-1-Block-Digest-Algorithmus mit dem 20-Byte-Verkettungswert im Parameterblock ein vorläufiger Message Digest erzeugt, und der auch als Ausgabeverkettungswert (OCV) bezeichnete erzeugte vorläufige Message Digest wird im Feld „Verkettungswert" des Parameterblocks gespeichert. Dieser Vorgang wird in 12 gezeigt und wiederholt, bis die verbleibende Nachricht kleiner als 64 Byte ist. Falls die Länge der Nachricht oder der verbleibenden Nachricht null Byte ist, wird der Vorgang in 13 ausgeführt.
  • Falls die Länge der Nachricht oder der verbleibenden Nachricht zwischen einem Byte und einschließlich 55 Byte beträgt, wird der Vorgang in 14 ausgeführt; falls die Länge der Nachricht oder der verbleibenden Nachricht zwischen 56 Byte und einschließlich 63 Byte beträgt, wird der Vorgang in 15 ausgeführt. Der auch als Ausgabeverkettungswert (OCV) bezeichnete Message Digest wird im Feld „Verkettungswert" des Parameterblocks gespeichert.
  • Zusätzliche in KLMD-Funktionen verwendete Symbole
  • Die folgenden zusätzlichen Symbole werden in der Beschreibung der Funktionen LETZTEN MESSAGE DIGEST BERECHNEN verwendet.
  • Symbolerläuterung für Figuren der KLMD-Funktionen
    • L Bytelänge des Operanden 2 im Speicher.
    • p <n> n Füllbytes; das am weitesten links stehende Byte hat den hexadezimalen Wert 80; alle anderen Bytes haben den hexadezimalen Wert 00
    • z <56> 56 Füllbytes von null.
    • Mbl ein 8-Byte-Wert, der die Bitlänge der Gesamtnachricht angibt.
    • q <64> ein Füllblock, bestehend aus 56 Null-Bytes, gefolgt von einem 8-Byte-Mbl.
  • Spezielle Bedingungen für KIMD und KLMD
  • Ein Spezifikationsfehler wird erkannt und keine andere Maßnahme ergriffen, falls eine der folgenden Bedingungen auftritt:
    • 1. Das Bit 56 des Allgemeinregisters 0 ist nicht null.
    • 2. Die Bits 57 bis 63 des Allgemeinregisters 0 geben einen nichtzugewiesenen oder nichtinstallierten Funktionscode an.
    • 3. Das Feld R2 bezeichnet ein Register mit ungerader Nummerierung oder das Allgemeinregister 0.
    • 4. Bei VORLÄUFIGEN MESSAGE DIGEST BERECHNEN ist die Länge des zweiten Operanden kein Vielfaches der Datenblockgröße der bezeichneten Funktion (siehe 3 zur Ermittlung der Datenblockgrößen für Funktionen VORLÄUFIGEN MESSAGE DIGEST BERECHNEN). Diese Spezifikationsfehlerbedingung kann weder auf die Abfragefunktion noch auf LETZTEN MESSAGE DIGEST BERECHNEN angewandt werden.
  • Resultierender Bedingungscode:
    • 0 Normale Beendigung
    • 1 –
    • 2 –
    • 3 Teilweise Beendigung
  • Programmfehler:
    • • Zugriff (Abrufen, Operand 2 und Nachrichtenbitlänge; Abrufen und Speichern, Verkettungswert)
    • • Vorgang (falls die Nachrichtensicherheitsunterstützung (message security assist) nicht installiert ist)
    • • Spezifikation
  • Programmierhinweise:
    • 1. Das Bit 56 des Allgemeinregisters 0 ist für eine zukünftige Erweiterung reserviert und muss auf null gesetzt werden.
    • 2. Wenn der Bedingungscode 3 gesetzt ist, werden die Adresse und die Länge des zweiten Operanden in den Allgemeinregistern R2 bzw. R2 + 1 und 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. Folglich kann das Programm bei jedem Setzen des Bedingungscodes 3 sicher zum Befehl zurück verzweigen, ohne einer Endlosschleife ausgesetzt zu sein.
    • 3. 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; der Verkettungswert ist in diesem Fall so, dass zusätzliche Operanden verarbeitet werden können, als wären sie Teil derselben Kette.
    • 4. Die Befehle VORLÄUFIGEN MESSAGE DIGEST BERECHNEN und LETZTEN MESSAGE DIGEST BERECHNEN sind so gestaltet, dass sie von einer Programmierschnittstelle (application programming interface – API) eines Sicherheitsdienstes (security service) verwendet werden können. Diese APIs versehen das Programm mit einem Mittel zum Berechnen der Zusammenfassung von Nachrichten von nahezu unbegrenzter Größe, darunter jene, die zu groß sind, um auf einmal in den Speicher zu passen. Dies wird ausgeführt, indem es dem Programm ermöglicht wird, die Nachricht in Teilen an die API weiterzuleiten. Die folgenden Programmierhinweise werden in Bezug auf diese APIs beschrieben.
    • 5. Vor der Verarbeitung des ersten Teils einer Nachricht muss das Programm die Anfangswerte für das Feld „Verkettungswert" setzen. Bei SHA-1 werden die Anfangswerte folgendermaßen aufgelistet: H0 = x'6745 2301' H1 = x'EFCD AB89' H2 = x'98BA DCFE' H3 = x'1032 5476' H4 = x'C3D2 E1F0'
    • 6. Wenn andere Nachrichtenteile als der letzte verarbeitet werden, muss das Programm Nachrichtenteile in Vielfachen von 512 Bits (64 Bytes) verarbeiten und den Befehl VORLÄUFIGEN MESSAGE DIGEST BERECHNEN verwenden.
    • 7. Wenn der letzte Nachrichtenteil verarbeitet wird, muss das Programm die Länge der ursprünglichen Nachricht in Bits berechnen und diesen 64-Bit-Wert in das Feld „Nachrichtenbitlänge" des Parameterblocks platzieren und den Befehl LETZTEN MESSAGE DIGEST BERECHNEN verwenden.
    • 8. Der Befehl LETZTEN MESSAGE DIGEST BERECHNEN macht es nicht erforderlich, dass der zweite Operand ein Vielfaches der Blockgröße ist. Er verarbeitet zuerst vollständige Blöcke und kann vor der Verarbeitung aller Blöcke den Bedingungscode 3 setzen. Nach der Verarbeitung aller vollständigen Blöcke führt er sodann den Auffüllvorgang aus, der den verbleibenden Teil des zweiten Operanden beinhaltet. Dies kann eine oder zwei Wiederholungen des SHA-1-Block Digest-Algorithmus erforderlich machen.
    • 9. Der Befehl LETZTEN MESSAGE DIGEST BERECHNEN stellt die SHA-1-Auffüllung für Nachrichten bereit, deren Länge ein Vielfaches von acht Bit ist. Falls SHA-1 auf eine Bitfolge angewandt werden muss, die kein Vielfaches von acht Bit ist, muss das Programm die Auffüllung ausführen und den Befehl VORLÄUFIGEN MESSAGE DIGEST BERECHNEN verwenden.
  • VERSCHLÜSSELUNGSCOPROZESSOR (CRYPTO COPROCESSOR):
  • Die bevorzugte Ausführungsform stellt einen Verschlüsselungscoprozessor bereit, der mit den hierin beschriebenen Befehlen sowie zur Ausführung chiffrierter 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.
  • 17 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 der vorliegenden 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 meisten allgemeinen 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 Latenzzeit zum Aufrufen von externer Hardware sowie der Zeitaufwand zum Ausführen des Software-Algorithmus entfallen bei dieser Erfindung.
  • In 18 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 spezifisch (natively) 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ßrechner-Servern 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 Computerarchitektur 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 18 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 spezifischen Befehlssatz ausgeführt wird.
  • In 18 wird bei 501 ein Computerspeicher gezeigt, der Befehle und Daten enthält. Die in dieser Computerarchitektur 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 Computerarchitektur beschriebenen Befehle mit langer Verschiebung würden hier ausgeführt werden. Falls die Befehle mit langer Verschiebung in einem Computersystem spezifisch 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 18 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 spezifischen Befehlssatz ausgeführt wird.
  • Gemäß der bevorzugten Computerarchitektur wird das Verschiebungsfeld als zweiteilig definiert, wobei der aus 12 Bits bestehende niedrigstwertige Teil als DL bezeichnet wird, DL1 für den Operanden 1 oder DL2 für den Operanden 2, und der aus 8 Bits bestehende höchstwertige Teil als DH bezeichnet wird, DH1 für den Operanden 1 oder DH2 für den Operanden 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 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.
  • 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 die Befehle der vorliegenden Computerarchitektur 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 22 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 8 höchstwertigen Bits der Verschiebung, Feld DH, verschieden von null sind.
  • Eine Vorrichtung zum Zusammenfassen (digesting) des Speichers einer Datenverarbeitungsumgebung, wobei die Vorrichtung Folgendes umfasst:
    ein Mittel zum Angeben einer zusammenzufassenden Speichereinheit über einen Befehl; und
    ein Mittel zum Zusammenfassen von Daten in der Speichereinheit.

Claims (14)

  1. Verfahren zum Ausführen eines Message-Digest-Befehls in einem Computersystem, wobei der Message-Digest-Befehl eine Abfragefunktion umfasst, wobei das Computersystem eine Vielzahl von Allgemeinregistern und einen mit einem Computerspeicher Daten austauschenden Universalprozessor umfasst, wobei der Prozessor eine oder mehrere Ausführungseinheiten umfasst, wobei die Ausführungseinheiten aus dem Computerspeicher abgerufene Befehle ausführen, dadurch gekennzeichnet, dass das Verfahren die folgenden Schritte umfasst: Abrufen eines Message-Digest-Befehls; auf das Abrufen des Message-Digest-Befehls hin Festlegen eines auszuführenden Message-Digest-Vorgangs aus einem zuvor definierten Funktionscode, wobei der zuvor definierte Funktionscode einen der folgenden Vorgänge umfasst: eine Berechnung eines Message Digest oder eine Funktionsabfrage; wenn der festgelegte auszuführende Message-Digest-Vorgang ein Vorgang des Berechnens eines Message Digest ist, Ausführen des Vorgangs des Berechnens eines Message Digest mit einem Operanden, wobei der Vorgang des Berechnens eines Message Digest einen Hash-Algorithmus umfasst; wenn der festgelegte auszuführende Message-Digest-Vorgang ein Funktionsabfragevorgang ist, Speichern von Statuswortbits in einem Parameterblock, wobei die Bits des Statuswortes einem oder mehreren im Prozessor installierten Funktionscodes entsprechen.
  2. Verfahren nach Anspruch 1, wobei das Ausführen außerdem die folgenden Schritte umfasst: x1) Erhalten eines 20-Byte-Verkettungswertes; x2) Erhalten eines 64-Byte-Blocks des Operanden; x3) Verwenden des 20-Byte-Verkettungswertes, Erzeugen eines direkten Hash-Werts des 64-Byte-Blocks des Operanden, um einen neuen 20-Byte-Verkettungswert zu erzeugen; x4) Wiederholen der Schritte x2 bis x3 für nachfolgende Blöcke des Operanden; und x5) Speichern des erzeugten neuen 20-Byte-Verkettungswertes.
  3. Verfahren nach Anspruch 2, wobei der Schritt des Erzeugens eines Hash-Wertes einen SHR-1-Algorithmus umfasst.
  4. Verfahren nach Anspruch 2, das außerdem den Schritt des Speicherns eines 20-Byte-Hexadezimalwertes von '6745 2301', 'EFCD AB89', '98BA DCFE', '1032 5476', 'C3D2 E1F0' als Verkettungswert umfasst.
  5. Verfahren nach Anspruch 1, wobei der Message-Digest-Befehl aus einem Befehl zum Berechnen eines vorläufigen Message Digest oder einem Befehl zum Berechnen des letzten Message Digest besteht.
  6. Verfahren nach Anspruch 5, wobei der Message-Digest-Befehl ein Befehl zum Berechnen des letzten Message Digest ist, wobei außerdem die folgenden Schritte ausgeführt werden: wenn weniger als 64 Bytes im Operand vorliegen, Erhalten der weniger als 64 Bytes; Auffüllen von Bytes mit dem Wert "00" zu den erhaltenen weniger als 64 Bytes, um einen 64-Byte-Operanden zu erzeugen.
  7. Verfahren nach Anspruch 1, wobei der Message-Digest-Befehl Folgendes umfasst: ein Operationscodefeld; ein Feld R2, wobei das Feld R2 ein Paar von Allgemeinregistern angibt, wobei das Paar von Allgemeinregistern ein erstes Allgemeinregister und ein zweites Allgemeinregister umfasst, wobei das erste Allgemeinregister eine Adresse des Operanden enthält, wobei das zweite Allgemeinregister eine Länge des Operanden angibt, wobei außerdem der zuvor definierte Funktionscode aus einem ersten festgelegten Allgemeinregister aus der Vielzahl von Allgemeinregistern des Prozessors erhalten wird; und wobei ein zweites festgelegtes Allgemeinregister aus der Vielzahl von Allgemeinregistern die Adresse eines Parameterblocks im Speicher enthält, wobei der Parameterblock den Verkettungswert umfasst, wobei das Verfahren außerdem die folgenden Schritte umfasst: Erhalten der Speicheradresse des Parameterblocks; anfängliches Erhalten des 20-Byte-Verkettungswertes aus dem Parameterblock im Speicher an der durch die erhaltene Speicheradresse angegebenen Position; anfängliches Erhalten des zuvor definierten Funktionscodes aus dem ersten festgelegten Allgemeinregister; anfängliches Erhalten der Adresse des Operanden aus dem ersten Allgemeinregister; anfängliches Erhalten der Länge des Operanden aus dem zweiten Allgemeinregister; und anfängliches Erhalten des 64-Byte-Blocks des Operanden an der durch die erhaltene Adresse des Operanden angegebenen Position.
  8. Verfahren nach Anspruch 7, wobei das erste festgelegte Allgemeinregister das Allgemeinregister 0 und das zweite festgelegte Allgemeinregister das Allgemeinregister 1 ist.
  9. Verfahren nach Anspruch 7, das außerdem die folgenden Schritte umfasst: Erhöhen des Inhaltes des ersten Allgemeinregisters entsprechend einer Anzahl von Bytes des Operanden, die in den ausgeführten Schritten verarbeitet wurden; und Vermindern des Inhaltes des zweiten Allgemeinregisters entsprechend der Anzahl von Bytes des Operanden, der in den ausgeführten Schritten verarbeitet wurden.
  10. Verfahren nach Anspruch 1, das außerdem die folgenden Schritte umfasst: wenn der Ausführungsschritt nur mit einem Teil des Operanden ausgeführt wurde, Setzen eines Codewertes einer teilweisen Beendigungsbedingung als Bedingungscode, wobei der Codewert der teilweisen Beendigungsbedingung anzeigt, dass der Ausführungsschritt unvollständig ist; und wenn der Ausführungsschritt mit dem gesamten Operanden ausgeführt wurde, Setzen eines Codewertes einer normalen Beendigungsbedingung als Bedingungscode, wobei der Codewert der normalen Beendigungsbedingung anzeigt, dass der Ausführungsschritt vollständig ist.
  11. Verfahren nach Anspruch 1, wobei der Message-Digest-Befehl ein für die Befehlsarchitektur des Prozessors natives Format aufweist.
  12. Verfahren nach Anspruch 1, wobei das Verfahren im Falle eines für die Maschinenbefehlsarchitektur des Prozessors nichtspezifischen Message-Digest-Befehls außerdem die folgenden Schritte umfasst: Interpretieren des Message-Digest-Befehls, um eine festgelegte Softwareroutine zum Emulieren des Vorgangs des Message-Digest-Befehls zu ermitteln, wobei die festgelegte Softwareroutine eine Vielzahl von Befehlen umfasst; und Ausführen der festgelegten Softwareroutine.
  13. Computerprogramm, das Befehle zum Ausführen aller Schritte des Verfahrens nach einem beliebigen vorhergehenden Verfahrensanspruch umfasst, wenn das Computerprogramm in einem Computersystem ausgeführt wird.
  14. Vorrichtung, die ein Mittel umfasst, das zum Ausführen aller Schritte des Verfahrens nach irgendeinem der Ansprüche 1 bis 12 geeignet ist.
DE602004004101T 2003-05-12 2004-05-04 Bearbeitung von message-digest-befehlen Expired - Lifetime DE602004004101T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/436,230 US7159122B2 (en) 2003-05-12 2003-05-12 Message digest instructions
US436230 2003-05-12
PCT/GB2004/001915 WO2004099975A2 (en) 2003-05-12 2004-05-04 Processing message digest instructions

Publications (2)

Publication Number Publication Date
DE602004004101D1 DE602004004101D1 (de) 2007-02-15
DE602004004101T2 true DE602004004101T2 (de) 2007-07-05

Family

ID=33417120

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004004101T Expired - Lifetime DE602004004101T2 (de) 2003-05-12 2004-05-04 Bearbeitung von message-digest-befehlen

Country Status (11)

Country Link
US (2) US7159122B2 (de)
EP (1) EP1623316B1 (de)
JP (2) JP4817189B2 (de)
CN (1) CN1799024B (de)
AT (1) ATE350702T1 (de)
DE (1) DE602004004101T2 (de)
ES (1) ES2279365T3 (de)
GB (1) GB2416609B (de)
PL (1) PL1623316T3 (de)
RU (1) RU2344467C2 (de)
WO (1) WO2004099975A2 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230813A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Cryptographic coprocessor on a general purpose microprocessor
KR101123742B1 (ko) * 2005-12-23 2012-03-16 삼성전자주식회사 사용자 인터페이스와 소프트웨어 간의 신뢰 경로 설정 방법및 장치
JP5263498B2 (ja) * 2008-07-09 2013-08-14 セイコーエプソン株式会社 信号処理プロセッサ及び半導体装置
JP5263497B2 (ja) * 2008-07-09 2013-08-14 セイコーエプソン株式会社 信号処理プロセッサ及び半導体装置
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
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
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
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
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
US8312258B2 (en) * 2010-07-22 2012-11-13 Intel Corporation Providing platform independent memory logic
US8737604B2 (en) 2011-05-09 2014-05-27 Advanced Micro Devices, Inc. Processor with architecture implementing the advanced encryption standard
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US9276750B2 (en) * 2013-07-23 2016-03-01 Intel Corporation Secure processing environment measurement and attestation
US9787278B1 (en) 2016-09-26 2017-10-10 International Business Machines Corporation Lossless microwave switch based on tunable filters for quantum information processing
US10348506B2 (en) * 2016-09-30 2019-07-09 International Business Machines Corporation Determination of state of padding operation
US9680653B1 (en) * 2016-10-13 2017-06-13 International Business Machines Corporation Cipher message with authentication instruction
US10630312B1 (en) * 2019-01-31 2020-04-21 International Business Machines Corporation General-purpose processor instruction to perform compression/decompression operations
US10831497B2 (en) * 2019-01-31 2020-11-10 International Business Machines Corporation Compression/decompression instruction specifying a history buffer to be used in the compression/decompression of data
US11061685B2 (en) * 2019-02-27 2021-07-13 International Business Machines Corporation Extended asynchronous data mover functions compatibility indication

Family Cites Families (26)

* 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
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
US5200999A (en) 1991-09-27 1993-04-06 International Business Machines Corporation Public key cryptosystem key management based on control vectors
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
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
US5774670A (en) * 1995-10-06 1998-06-30 Netscape Communications Corporation Persistent client state in a hypertext transfer protocol based client-server system
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6226750B1 (en) * 1998-01-20 2001-05-01 Proact Technologies Corp. Secure session tracking method and system for client-server environment
JPH11249873A (ja) * 1998-03-02 1999-09-17 Mitsubishi Electric Corp ドライバ機能の動的管理方式及び動的管理方法
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
AU6625000A (en) 1999-08-09 2001-03-05 Qualcomm Incorporated Method and apparatus for generating a message authentication code
JP2001142694A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
US6542981B1 (en) 1999-12-28 2003-04-01 Intel Corporation Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode
JP2002353960A (ja) 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US7266703B2 (en) 2001-06-13 2007-09-04 Itt Manufacturing Enterprises, Inc. Single-pass cryptographic processor and method
US7213148B2 (en) * 2001-06-13 2007-05-01 Corrent Corporation Apparatus and method for a hash processing system using integrated message digest and secure hash architectures
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
US20030028765A1 (en) 2001-07-31 2003-02-06 Cromer Daryl Carvis Protecting information on a computer readable medium
US6996725B2 (en) 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors

Also Published As

Publication number Publication date
US7725736B2 (en) 2010-05-25
US7159122B2 (en) 2007-01-02
US20070055886A1 (en) 2007-03-08
GB2416609B (en) 2006-03-22
US20040230814A1 (en) 2004-11-18
WO2004099975A2 (en) 2004-11-18
EP1623316A2 (de) 2006-02-08
JP2007080278A (ja) 2007-03-29
ATE350702T1 (de) 2007-01-15
RU2344467C2 (ru) 2009-01-20
ES2279365T3 (es) 2007-08-16
CN1799024A (zh) 2006-07-05
JP2006526202A (ja) 2006-11-16
PL1623316T3 (pl) 2007-05-31
GB2416609A (en) 2006-02-01
RU2005138547A (ru) 2007-06-20
JP4817185B2 (ja) 2011-11-16
WO2004099975A3 (en) 2006-01-05
JP4817189B2 (ja) 2011-11-16
EP1623316B1 (de) 2007-01-03
DE602004004101D1 (de) 2007-02-15
CN1799024B (zh) 2010-04-28
GB0518811D0 (en) 2005-10-26

Similar Documents

Publication Publication Date Title
DE602004004101T2 (de) Bearbeitung von message-digest-befehlen
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE602004005025T2 (de) Instruktionen zur verarbeitung einer verschlusselten nachricht
DE602004004079T2 (de) Befehl zur berechnung eines sicherheits-nachricht-authentifizierungskodes
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE112012007063B4 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE3851746T2 (de) Sprungvorhersage.
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE112012001542T5 (de) System, Vorrichtung und Verfahren zum Ausrichten von Registern
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE112010002773T5 (de) Entpacken von gepackten daten auf mehreren spuren
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE112014000252T5 (de) Anweisung &#34;Vector floating point test data class immediate&#34;
DE112013005466T5 (de) Anweisung &#34;Vector generate mask&#34;
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102010051476A1 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE112017000983T5 (de) System und Verfahren zum Ausführen eines Befehls zum Permutieren einer Maske
DE102018006744A1 (de) Bitmatrixmultiplikation
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE102018125665A1 (de) Vorrichtung und verfahren zum pausieren einer prozessortrace für eine effiziente analyse

Legal Events

Date Code Title Description
8364 No opposition during term of opposition