DE60213762T2 - Implementierung des SHA1 Algorithmusses - Google Patents

Implementierung des SHA1 Algorithmusses Download PDF

Info

Publication number
DE60213762T2
DE60213762T2 DE60213762T DE60213762T DE60213762T2 DE 60213762 T2 DE60213762 T2 DE 60213762T2 DE 60213762 T DE60213762 T DE 60213762T DE 60213762 T DE60213762 T DE 60213762T DE 60213762 T2 DE60213762 T2 DE 60213762T2
Authority
DE
Germany
Prior art keywords
hash
authentication
round
bit
sha
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
DE60213762T
Other languages
English (en)
Other versions
DE60213762D1 (de
Inventor
Zheng Milpitas Qi
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.)
Broadcom Corp
Original Assignee
Broadcom 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 Broadcom Corp filed Critical Broadcom Corp
Application granted granted Critical
Publication of DE60213762D1 publication Critical patent/DE60213762D1/de
Publication of DE60213762T2 publication Critical patent/DE60213762T2/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/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
    • 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)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein das Gebiet der Nachrichtenauthentifikation und genauer eine Authentifikationsimplementierung, die zur Kryptographie-Beschleunigung verwendet werden kann. Insbesondere ist die Erfindung auf eine Hardware-Implementierung gerichtet, um die Geschwindigkeit zu erhöhen, mit der SHA1 Authentifikationsprozeduren bei Datenpaketen durchgeführt werden können, die über ein Computernetzwerk übertragen werden.
  • 2. Beschreibung des Standes der Technik
  • Die Nachrichtenauthentifikation wird allgemein in Verbindung mit der Kryptographie besprochen. Die Kryptographie bezieht sich auf das Verschlüsseln und Entschlüsseln von Daten. Die Authentifikation befasst sich mit der Datenintegrität, die das Bestätigen der Identität der sendenden Partei und das Gewährleisten, dass eine Nachricht (z.B. ein Datenpaket) auf dem Weg zum Empfänger nicht geändert oder verfälscht worden ist, umfasst. Viele Kryptographieprotokolle beinhalten typischerweise sowohl Verschlüsselungs-/Entschlüsselungs- als auch Authentifikationsfunktionalitäten. Viele Verfahren zur Praktizierung beider Operationen sind im Stand der Technik wohl bekannt und werden zum Beispiel in dem Dokument "Applied Cryptography" (Angewandte Kryptographie) von Bruce Schneier, John Wiley & Sons, Inc. (1996, 2. Ausgabe) besprochen.
  • Um die Geschwindigkeit der Kryptographie- und/oder Authentifikationsverarbeitung der Daten zu verbessern, die über ein Computernetzwerk übertragen werden, sind spezialisierte Chips entwickelt worden, zum Beispiel der BCM 5805, der von Broadcom Corporation, Irvine, Kalifornien erhältlich ist. Es ist bekannt, dass durch die Einbeziehung von sowohl Kryptographie- als auch Authentifikationsfunktionalitäten auf einem einzigen Beschleunigerchip die Gesamtleistung des Systems verbessert werden kann. Kryptographiebeschleunigerchips können zum Beispiel in Routern oder Gateways enthalten sein, um eine automatische Verschlüsselung/Entschlüsselung und/oder Authen tifikation von IP-Paketen bereitzustellen. Durch das Einbetten der Kryptographie- und/oder Authentifikationsfunktionalität in einer Netzwerk-Hardware werden sowohl die Systemleistung als auch die Datensicherheit verbessert.
  • Beispiele für Kryptographieprotokolle, die Verschlüsselungs-/Entschlüsselungs- und Authentifikationsfunktionalitäten beinhalten, umfassen das IP Layer Security Standard Protocol, das IPSec (RFC2406), und andere Netzwerksicherheitsprotokolle, einschließlich der Protokolle Secure Socket Layer (SSL) (v3) (Netscape Communications Corporation) (nachfolgend SSL genannt) und Transport Layer Security (TLS) (RFC2246), die alle allgemein bei elektronischen Handelstransaktionen verwendet werden. Das IPSec-Protokoll (RFC2406) spezifiziert zwei Standardalgorithmen für die Durchführung von Authentifikationsoperationen, nämlich den HMAC-MDS-96 (RFC2403) und den HMAC-SHA1-96 (RFC2404). Die Protokolle SSL und TLS verwenden jeweils einen MAC und einen HMAC für die Authentifikation. Der zugrunde liegende Hash-Algorithmus kann in beiden Fällen entweder der MD5 (RFC1321) oder der SHA1 (NIST (FIPS 180-1)) sein. SSL und TLS verwenden solche allgemein bekannten Algorithmen wie RC4, DES, Triple DES für Verschlüsselungs-/Entschlüsselungsoperationen. Diese Netzwerkprotokolle werden auch ausführlich in E. Rescorla, SSL and TLS: Designingand Building Secure Systems (SSL und TLS: Entwurf und Fertigung von sicheren Systemen) (Addison-Wesley, 2001) und S.A. Thomas, SSL & TLS Essentials: Securing the Web (Die wesentlichen Punkte von SSL & TLS: Sicherung des Netzes) (John Wiley & Sons, Inc. 2000) beschrieben, die beide durch Hinweis darauf für alle Zwecke in die Patentanmeldung aufgenommen werden. Diese Protokolle und ihre zugehörigen Algorithmen sind in der Kunst der Kryptographie und der Authentifikation allgemein bekannt und werden in den erwähnten National Institute of Standards and Technology (NIST) (Nationales Institut für Normen und Technologie), IETF (identifiziert durch die RFC-Nummer (Artikelnummer)) und in anderen erwähnten Quellen und Spezifikationen ausführlich beschrieben.
  • Sowohl der MD5 Authentifikationsalgorithmus als auch der SHA1 Authentifikationsalgorithmus spezifizieren, dass Daten in Blöcken von 512 Bit (nachfolgend 512 Bit Blöcke bzw. 512 Bit Block genannt) verarbeiten werden sollen. Wenn die Daten in einem Paket, das verarbeitet werden soll, nicht ein Vielfaches von 512 Bit sind, wird das Auffüllen (Padding) angewendet, um die Datenlänge zu einem Vielfachen von 512 Bit aufzurunden. Somit wird dann, wenn ein Datenpaket, das von einem Chip für eine Authentifikation empfangen wird, größer als 512 Bit ist, das Paket für die Authentifikationsverarbeitung in Datenblöcke von 512 Bit getrennt. Wenn das Paket kein Vielfaches von 512 Bit ist, müssen die Daten, die nach dem Aufteilen des Pakets in vollständige 512 Bit Blöcke übrig bleiben, aufgefüllt werden, um die Blockverarbeitungsgröße von 512 Bit zu erreichen. Das Gleiche gilt, wenn ein Paket weniger als 512 Bit an Daten enthält. Zu Referenzzwecken sei gesagt, dass ein typisches Ethernet-Paket bis zu 1.500 Byte enthält. Wenn ein solches Paket in Blöcke von 512 Bit aufgeteilt wird, wird nur der letzte Block aufgefüllt, so dass insgesamt nur ein relativ kleiner Prozentsatz an Auffüll-Overhead benötigt wird. Aber bei kürzeren Paketen kann der Auffüll-Overhead viel größer sein. Wenn ein Paket zum Beispiel gerade etwas mehr als 512 Bit aufweist, muss es in zwei 512 Bit Blöcke aufgeteilt werden, von denen der zweite hauptsächlich aus Auffüllen besteht, so dass sich der Auffüll-Overhead 50 % der Verarbeitung der Daten nähert. Die Authentifikation von solchen kurzen Datenpaketen ist besonders lästig und zeitaufwändig, wenn man die herkömmlicherweise implementierten MD5- und SHA1-Authentifikationsalgorithmen verwendet.
  • Bei jedem 512 Bit Datenblock wird ein Satz von Operationen, der nichtlineare Funktionen, Schiebefunktionen und Additionen umfasst, was als eine "Runde" bezeichnet wird, wiederholt bei dem Block angewendet. MD5 und SHA1 spezifizieren jeweils 64 Runden bzw. 80 Runden, was auf unterschiedlichen nichtlinearen Funktionen und Schiebefunktionen basiert, sowie auch unterschiedliche Arbeitsabläufe. In jeder Runde startet die Operation mit bestimmen Hash-Zuständen (die als "Kontext" bezeichnet werden), die von Hash-Zustandsregistern (in Hardware) oder Variablen (in Software) gehalten werden, und endet mit einem neuen Satz von Hash-Zuständen (d.h., ein Anfangs-"Satz" von Hash-Zuständen und ein Endsatz; ein "Satz" kann jeweils aus 4 oder 5 für die Anzahl von Registern bestehen, die von MD5 und SHA1 verwendet werden). MD5 und SHA1 spezifizieren jeweils einen Satz von Konstanten als die Anfangs-Hash-Zustände für den ersten 512 Bit Block. Die nachfolgenden Blöcke verwenden Anfangs-Hash-Zustände, die sich aus den Additionen der Anfangs-Hash-Zustände und der End-Hash-Zustände der vorhergehenden Blöcke ergeben.
  • Typischerweise werden MD5- und SHA1-Runden in Taktzyklen in Hardwareimplementierungen übertragen. Die Addition der Hash-Zustände bis zu dem Grad, dass sie nicht parallel zu anderen Rundenoperationen ausgeführt werden können, benötigt Extra-Taktzyklen in der gesamten Berechnung. Die Berechnung des aufgefüllten Abschnitts der Daten wird ebenfalls allgemein als eine zusätzliche Leistung bzw. als ein Leistungs-Overhead betrachtet, da sie kein Teil der wirklichen Daten ist. Folglich verschlechtert sich die Leistung von MD5 und SHA1 am meisten, wenn die Länge des Auffüllens etwa gleich der Länge der Daten ist (z.B. wie oben beschrieben worden ist, wenn ein Paket gerade ein wenig mehr als 512 Bit an Daten aufweist und die Auffülllogik extra einmal 512 Bit benötigt, die hinzugefügt werden, um die Auffüllwerte zu halten).
  • Darüber hinaus erweitern die HMAC-MD5-96- und HMAC-SHA1-96-Algorithmen, die in IPSec verwendet werden, jeweils MD5 und SHA1, indem sie zwei Schleifen von Operationen durchführen. Der HMAC-Algorithmus für entweder MD5 oder SHAI (HMAC-x-Algorithmus) ist in 1 veranschaulicht. Der innere Hash (innere Schleife) und der äußere Hash (äußere Schleife) verwenden unterschiedliche Anfangs-Hash-Zustände. Der äußere Hash wird verwendet, um ein Digest auf der Grundlage des Ergebnisses des inneren Hash zu berechnen. Da das Ergebnis des inneren Hash für MD5 128 Bit lang ist und für SHA1 160 Bit lang ist, muss das Ergebnis immer bis auf 512 Bit aufgefüllt werden, und der äußere Hash verarbeitet nur den einen 512 Bit Block an Daten. Der HMAC-MD5-96 und der HMAC-SHA1-96 stellen ein höheres Niveau an Sicherheit bereit, aber es wird zusätzliche Zeit benötigt, um die äußere Hash-Operation durchzuführen. Diese zusätzliche Zeit wird beträchtlich, wenn die Länge der Daten, die verarbeitet werden sollen, kurz ist, denn in diesem Fall ist die Zeit, die benötigt wird, um die äußere Hash-Operation durchzuführen, vergleichbar mit der Zeit, die benötigt wird, um die innere Hash-Operation durchzuführen.
  • Die Authentifikation stellt einen beträchtlichen Anteil der Zeit dar, die benötigt wird, um Kryptographieoperationen in der Anwendung von Kryptographieprotokollen, die sowohl Verschlüsselungs-/Entschlüsselungs- als auch MD5- und/oder SHA1-Authentifikationsfunktionalitäten beinhalten, fertig zu stellen. In dem Fall von IPSec ist die Authentifikation oftmals der zeitbegren zende Schritt, vor allem für die Verarbeitung von kurzen Paketen, und schafft somit einen Datenverarbeitungsengpass. Insbesondere ist von den beiden Algorithmen, die von dem IPSec-Protokoll unterstützt werden, der NMAC-SHA1-96 etwa 25 Prozent langsamer als der HMAC-MD5-96, was die gesamten Berechnungsrunden anbetrifft. Folglich wären Verfahren zur Beschleunigung der Authentifikation und zur Befreiung von diesem Engpass wünschenswert. Außerdem wären beschleunigte Implementierungen von SHA-1 von Nutzen für jede Anwendung dieses Authentifikationsalgorithmus.
  • Das Dokument "SCHNEIER B: "APPLIED CRYPTOGRAPHY, SECOND EDITION" (Angewandte Kryptographie, zweite Auflage) 1996, JOHN WILEY & SONS, NEW YORK US, XP002184521, Seiten 436-445" offenbart Kryptographieprotokolle, die typischerweise sowohl Verschlüsselungs-/Entschlüsselungsals auch Authentifikationsfunktionalitäten enthalten, sowie auch weitere Verfahren zur Praktizierung beider Operationen.
  • Es ist eine Aufgabe der Erfindung, eine Vorrichtung und ein Verfahren zum Bereitstellen einer beschleunigten Implementierung von SHA-1 bereitzustellen.
  • Diese Aufgabe wird von einer Vorrichtung, wie sie in Anspruch 1 angegeben ist, und einem Verfahren erfüllt, wie es in Anspruch 10 angegeben ist.
  • Vorteilhafte Ausführungsbeispiele der Erfindung sind in den Unteransprüchen definiert.
  • Im Allgemeinen stellt die vorliegende Erfindung eine Architektur (Hardware-Implementierung) für eine Authentifikationsmaschine (authentication engine) bereit, um die Geschwindigkeit zu erhöhen, mit der SHA1 Mehrschleifen- und/oder Mehrrunden-Authentifikationsalgorithmen bei Datenpaketen, die über ein Computernetzwerk übertragen werden, durchgeführt werden können. Wie in dieser Anmeldung beschrieben ist, findet die Erfindung vor allem auf die Varianten der SHA1-Authentifikationsalgorithmen Anwendung, die von dem IPSec-Kryptographiestandard spezifiziert sind. Gemäß dem IPSec-Standard kann die Erfindung in Verbindung mit Datenverschlüsselungs-/entschlüsselungs-Architekturen und -Protokollen verwendet werden. Aber sie ist auch zur Verwendung in Verbindung mit anderen Kryptographiealgorithmen, die nicht zum IPSec-Standard gehören, sowie auch für Anwendungen geeignet, bei denen die Entschlüsselung/Verschlüsselung nicht durchgeführt wird (in IPSec oder nicht), und bei denen es lediglich die Authentifikation ist, die beschleunigt wird. Neben anderen Vorteilen stellt eine Authentifikationsmaschine gemäß der vorliegenden Erfindung eine verbesserte Leistung im Hinblick auf die Verarbeitung von kurzen Datenpaketen bereit.
  • In einer Ausführungsform betrifft die vorliegende Erfindung eine Authentifikationsmaschinenarchitektur für einen SHA1 Mehrrunden-Authentifikationsalgorithmus. Die Authentifikationsarchitektur umfasst eine Hash-Maschine, die so konfiguriert ist, dass sie eine Hashrundenlogik für einen SHA1 Authentifikationsalgorithmus implementiert. Die Hashrundenlogik-Implementierung umfasst einen kombinierten Addiererbaum mit einem bezüglich der Zeitsteuerung bzw. des Zeitablaufs kritischen Pfad, der einen einzelnen 32 Bit Carry Look Ahead Addierer (CLA) aufweist. Die benötigten Additionen werden in einem einzigen Taktzyklus durchgeführt, indem die Reihenfolge der CLA- und Ringschiebe-Operationen neu geordnet wird.
  • In einer anderen Ausführungsform betrifft die Erfindung ein Verfahren zur Authentifikation von Daten, die über ein Computernetzwerk übertragen werden. Das Verfahren umfasst das Empfangen eines Datenpaketstroms, das Splitten des Paketdatenstroms in Datenblöcke mit einer festen Größe und das Verarbeiten der Datenblöcke mit einer festen Größe unter Verwendung einer Mehrrunden-Authentifikationsmaschinenarchitektur. Die Architektur implementiert eine Hashrundenlogik für einen SHA1 Mehrrunden-Authentifikationsalgorithmus, die einen kombinierten Addiererbaum mit einem bezüglich der Zeitsteuerung kritischen Pfad umfasst, der einen einzigen 32 Bit Carry Look Ahead Addierer (CLA) aufweist. Die Additionen werden in einem einzigen Taktzyklus durchgeführt, indem die Reihenfolge der CLA- und Ringschiebe-Operationen neu geordnet wird.
  • Diese und weitere Merkmale und Vorteile der vorliegenden Erfindung werden in der nachfolgenden Beschreibung der Erfindung und den begleitenden Zeichnungen ausführlicher dargestellt, die die Prinzipien der Erfindung beispielshalber veranschaulichen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird durch die nachfolgende ausführliche Beschreibung in Verbindung mit den begleitenden Zeichnungen leicht verständlich, wobei gleiche Bezugszeichen gleiche strukturelle Elemente bezeichnen und in denen:
  • 1 ein grobes Blockdiagramm ist, das den HMAC-x-Algorithmus (HMAC für entweder MD5 oder SHA1) veranschaulicht, der in dem IPSec-Standardprotokoll implementiert ist.
  • 2 ein grobes Blockdiagramm einer Authentifikationsmaschinenarchitektur gemäß einem Ausführungsbeispiel der vorliegenden Erfindung ist.
  • 3 ein Zeitstudiendiagramm ist, das den kritischen Pfad der herkömmlichen Rundenlogik des SHA1 Authentifikationsalgorithmus veranschaulicht.
  • 4 ein Zeitstudiendiagramm ist, das den kritischen Pfad der Rundenlogik des SHA1 Authentifikationsalgorithmus gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht.
  • 5 ein grobes Blockdiagramm einer SHA1 Hash-Maschine ist, das die Hauptelemente eines Rundenlogikdesigns gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht.
  • 6A und 6B jeweils Blockdiagramme einer Volladdiererzelle (FA; full adder cell) und einer Halbaddiererzelle (HA; half adder cell) veranschaulichen.
  • 7 ein Blockdiagramm einer Carry Save Addiererzelle veranschaulicht.
  • 8 ein Blockdiagramm einer Carry Look Ahead Addiererzelle veranschaulicht.
  • 9A und 9B jeweils Blockdiagramme der umfassenden Additionsmodule Addiere5zu1 und Addiere4zu1 veranschaulichen.
  • 10 ein genaueres Blockdiagramm ist, das Einzelheiten der Anordnung der Additionen in einem kombinierten Addiererbaum in dem Rundenlogikdesign von 5 veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG VON AUSFÜHRUNGSBEISPIELEN DER ERFINDUNG
  • Nun wird ausführlich auf einige bestimmte Ausführungsbeispiele der Erfindung Bezug genommen, die die Modi enthalten, die von den Erfindern als am Besten zur Ausführung der Erfindung erachtet worden sind. Beispiele dieser speziellen Ausführungsbeispiele sind in den beigefügten Zeichnungen veranschaulicht. Obwohl die Erfindung in Verbindung mit diesen spezifischen Ausführungsbeispielen beschrieben wird, ist es selbstverständlich, dass es nicht beabsichtigt ist, die Erfindung auf die beschriebenen Ausführungsbeispiele zu beschränken. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten erläutert, um ein vollständiges Verständnis der vorliegenden Erfindung bereitzustellen. Die vorliegende Erfindung kann ohne einige oder alle dieser speziellen Einzelheiten praktisch verwendet werden. In anderen Fällen sind allgemein bekannte Prozessoperationen nicht ausführlich beschrieben worden, um die vorliegende Erfindung nicht unnötigerweise schwer verständlich oder mehrdeutig zu machen.
  • Im Allgemeinen stellt die vorliegende Erfindung eine Architektur (Hardware-Implementierung) für eine Authentifikationsmaschine zur Steigerung der Geschwindigkeit bereit, mit der die SHA-1 Authentifikationsalgorithmen (die die Mehrschleifen-Implementierung (z.B. HMAC) umfassen) bei Datenpaketen durchgeführt werden können, die über ein Computernetzwerk übertragen werden. Authentifikationsmaschinen in Übereinstimmung mit der vorliegenden Erfindung wenden eine Vielfalt von Techniken an, die in verschiedenen Anwendungen das Zusammenfassen von zwei SHA-1 Authentifikationsalgorithmus-Verarbeitungsrunden zu einer, das Verringern des operationsmäßigen Overhead, indem die Additionen, die von einem SHA-1 Authentifikationsalgorithmus benötigt werden, derart angeordnet werden, dass der gesamte bezüg lich der Zeitsteuerung kritische Pfad reduziert wird ("Verstecken der Additionen"), und für eine HMAC-(Mehrschleifen)-Variante eines SHA-1 Authentifikationsalgorithmus das Pipelining der inneren und äußeren Schleifen umfassen können. Neben anderen Vorteilen stellt eine Authentifikationsmaschine in Übereinstimmung mit der vorliegenden Erfindung eine verbesserte Leistung im Hinblick auf die Verarbeitung von kurzen Datenpaketen bereit.
  • In der vorliegenden Beschreibung umfassen die Singularformen "ein", "eine", "einer" und "die", "der" und "das" den Bezug zum Plural, es sei denn, der Kontext schreibt dies eindeutig anders vor. Wenn dies nicht ausdrücklich anders dargelegt ist, weisen alle technischen und wissenschaftlichen Begriffe, die hier verwendet werden, die gleiche Bedeutung auf, wie sie allgemein von einem Durchschnittsfachmann auf dem Gebiet, zu dem die Erfindung gehört, verstanden werden.
  • Die vorliegende Erfindung kann auf verschiedene Arten und Weisen implementiert werden. Wie in dieser Anmeldung beschrieben wird, findet die Erfindung eine besondere Anwendung auf die Varianten des SHA1 Authentifikationsalgorithmus, der von dem IPSec Kryptographiestandard spezifiziert wird. In der nachfolgenden Beschreibung wird die Erfindung hauptsächlich in Zusammenhang mit dem IPSec Protokoll beschrieben. Obwohl die vorliegende Erfindung auf die Beschleunigung des SHA-1 Authentifikationsalgorithmus gerichtet ist, umfasst die Beschreibung in dieser Hinsicht auch einen Bezug zu dem MD5 Algorithmus, der ebenfalls in IPSec zur Verfügung steht, um einen Kontext bereitzustellen, in dem die vorliegende Erfindung implementiert werden kann. Des Weiteren wird ein Fachmann auf diesem Gebiet erkennen, dass verschiedene Ausführungsformen der Erfindung auch auf andere Anwendungen des SHA-1 Authentifikationsalgorithmus im Allgemeinen Anwendung finden können, egal, ob sie mit IPSec oder überhaupt in Verbindung mit Kryptographieoperationen verwendet werden oder nicht. Und obwohl die Ausführungsformen der vorliegenden Erfindung, die unten beschrieben werden, zusammen in einem bevorzugten Ausführungsbeispiel der Erfindung verwendet werden, können einige Ausführungsformen auch unabhängig voneinander verwendet werden, um Authentifikationsoperationen zu beschleunigen. Zum Beispiel sind die Pipelining-Operationen vor allem anwendbar auf Mehrschleifen-Mehrrunden-Authentifikationsalgorithmen, während das Zusammenfassen von Runden und das Ordnen der Additionsoperationen vor allem auf SHA-1 Authentifikationsalgorithmen und Varianten davon anwendbar sind. Insbesondere stellt die vorliegende Erfindung ein Verfahren und eine Logik zur Durchführung der benötigten Additionen in einem einzigen Taktzyklus unter Verwendung eines einzigen 32 Bit CLA bereit, indem die Reihenfolge der CLA- und der Ringschiebe-Operationen, die durchgeführt werden, neu geordnet wird.
  • Die Pipelineverarbeitung der inneren und äußeren Hash-Operationen
  • 2 ist ein grobes Blockdiagramm einer Authentifikationsmaschinenarchitektur in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung. Die Maschinenarchitektur implementiert eine einem Pipelining unterzogene Struktur, um die Zeit zu verstecken, die zum Durchführen der äußeren Hash-Operation benötigt wird, wenn der Maschine mehrere Datennutzlasten kontinuierlich zugeführt werden. Die Maschinenarchitektur umfasst einen Kern, der zwei Instantiierungen der Hashrundenlogik aufweist, nämlich in diesem Fall innere und äußere Hash-Maschinen (innere und äußere Schleifen) für jede der MD5 Hashrundenlogik und der SHA1 Hashrundenlogik, die von dem IPSec Protokoll unterstützt werden. Die Pipelinesteuerlogik gewährleistet, dass die äußere Hash-Operation für eine Datennutzlast parallel zu der inneren Hash-Operation der nächsten Datennutzlast in dem Paketstrom durchgeführt wird, der der Authentifikationsmaschine zugeführt wird. Ein Doppelrahmen-Eingabepuffer wird für die innere Hash-Maschine verwendet und erlaubt es, dass ein neuer 512 Bit Block geladen werden kann, während ein anderer verarbeitet wird, und die Anfangs-Hash-Zustände werden für die gleichzeitig ablaufenden inneren und äußeren Hash-Operationen doppelt gepuffert. Außerdem wird ein Dualport-ROM für die gleichzeitigen Konstantensuchen durch sowohl die innere Hash-Maschine als auch die äußere Hash-Maschine verwendet.
  • Unter Bezugnahme auf 2 umfasst die Maschine 200 einen Doppelrahmen-Eingabe-Datennutzlast-Puffer 201, der in diesem Fall einen linken Rahmen 202 und einen rechten Rahmen 204 aufweist. Die Eingabedatennutzlasten, die von der Maschine 200 empfangen werden, zum Beispiel von Datenpaketen, die aus einem Netzwerk durch einen Chip empfangen werden, auf dem die Maschinenarchitektur implementiert ist, werden zwischen den Rah men 202, 204 des Eingabedatenpuffers 201 so verteilt, dass ein Datenblock in den Puffer geladen werden kann, während ein anderer stromabwärts (downstream) in dem Datenfluss verarbeitet wird. Da 2 eine Implementierung der vorliegenden Erfindung zur Verarbeitung von IPSec Paketen veranschaulicht, umfasst die Architektur Hash-Maschinen für die MD5 und SHA1 Authentifikationsprotokolle, die von IPSec unterstützt werden. Gemäß den MD5 und SHA1 Protokollen werden die Eingabedatennutzlasten in die Doppelrahmen des Eingabedatenpuffers 201 geladen, in 512 Bit Datenblöcke gesplittet, falls notwendig aufgefüllt (d.h., wenn der Datenblock kleiner als 512 Bit ist) und gespeichert, bevor sie zu einer inneren Hash-Maschine zur Verarbeitung weitergeleitet werden. Ein Multiplexer 206 steuert den Fluss der 512 Bit Datenblöcke von den Rahmen des Eingabepuffers zu einer inneren Hash-Maschine.
  • Anfangs-Hash-Zustände werden auf einer pro Paket Basis für den ersten Datenblock jedes Pakets benötigt. Anfangs-Hash-Zustände werden von Software auf der Basis des Authentifikationsschlüssels und einige Standardkonstantenzustände auf der Basis des HMAC-Algorithmus (vorher einem Hash unterzogen) gemäß den Spezifikationen dieser Algorithmen generiert. Dies wird typischerweise einmal pro Schlüssel ausgeführt. Alternativ dazu können die Anfangszustände von den Standardkonstantenzuständen und dem Authentifikationsschlüssel abgeleitet werden, indem die gleiche Hardware für jedes Paket verwendet wird, das eine Authentifizierung benötigt.
  • Die Anfangs-Hash-Zustände für den inneren Hash eines gegebenen Datenblocks werden in einen Puffer 214 geladen, der mit der/den inneren Hash-Maschine(n) 210, 212 assoziiert ist. Die Anfangs-Hash-Zustände für den äußeren Hash dieses Datenblocks werden in den ersten eines Paares von Puffern 216 geladen (der als ein HMAC-Zustandspuffer bezeichnet wird), der/die mit der/den äußeren Hash-Maschine(n) 220, 222 assoziiert ist/sind. Wenn die Anfangs-Hash-Zustände an die innere Hash-Maschine weitergeleitet werden, um den Datenblock zu verarbeiten, werden die äußeren Hash-Zustände für diesen Block in den zweiten Puffer 216 geladen, und die inneren und äußeren Anfangs-Hash-Zustände für das nächste Paket, das verarbeitet werden soll, werden jeweils in die Puffer 214, 216 geladen. Auf diese Weise wird die Synchronisation der inneren und äußeren Hash-Zustände für einen gegebenen Daten block aufrechterhalten, und die Anfangs-Hash-Zustände stehen für gleichzeitig ablaufende innere Hash-Operationen und äußere Hash-Operationen zur Verfügung. Außerdem erlaubt es das doppelte Puffern der Hash-Zustände, dass die Anfangs-Hash-Zustände des zweiten Pakets geladen werden können, während das erste Paket verarbeitet wird, so dass die Datenverarbeitung von Paket zu Paket kontinuierlich verläuft, wodurch die Effizienz und die Verarbeitungsleistung der Hash-Maschine maximiert werden.
  • Die Maschine 200 umfasst des Weiteren einen Dualport-ROM 218. Der Dualport-ROM 218 erleichtert die parallelen inneren und äußeren Hash-Operationen noch weiter, indem er gleichzeitig ablaufende Konstantensuchen durch sowohl die innere Hash-Maschine als auch die äußere Hash-Maschine erlaubt.
  • Der innere Hash wird bei allen 512 Bit Blöcken eines gegebenen Datenpakets durchgeführt. Das Ergebnis des inneren Hash ist für MD5 128 Bit lang und für SHA1 160 Bit lang. Das Ergebnis wird auf 512 Bit aufgefüllt, und der äußere Hash verarbeitet den einen 512 Bit Block der Daten, um ein Digest auf der Grundlage des Ergebnisses des inneren Hash zu berechnen. Ein Ausgabepuffer 230 speichert das Digest und gibt dieses durch einen Multiplexer 232 aus.
  • Zusammenfassen von SHA-1 Authentifikationsalgorithmus-Verarbeitungsrunden
  • Wie oben angemerkt worden ist, ist von den beiden Algorithmen, die von dem IPSec Protokoll unterstützt werden, der HMAC-SHA1-96 etwa fünfundzwanzig Prozent langsamer als der HMAC-MD5-96 in Bezug auf die gesamten Berechnungsrunden. Eine Art, um den HMAC-SHA1-96 in einer das IPSec Protokoll unterstützenden Hardware-Implementierung zu verbessern, liegt darin, mehrere Runden der Logik in einen einzigen Taktzyklus zusammenzufassen, so dass die gesamte Anzahl von Takten, die für die HMAC-SHA1-96 Operation benötigt werden, verringert wird. Der gleiche Lösungsweg kann bei jedem Mehrrunden-Authentifikationsalgorithmus verwendet werden. Aber einfach die Logik für mehrere Runden in einem einzigen Taktzyklus zusammenzufassen, kann bewirken, dass die Verzögerung zur Berechnung der zusammengefassten Logik verlängert wird, wodurch die maximale Taktfrequenz verringert wird.
  • 3 ist ein Zeitstudiendiagramm, das den bezüglich der Zeitsteuerung kritischen Pfad der herkömmlichen Rundenlogik des SHA1 Authentifikationsalgorithmus veranschaulicht. Die Register a, b, c, d und e halten die Zwischen-Hash-Zustände zwischen den Runden. Sie sind in dieser Figur dupliziert, um die Endpunkte der Logikpfade klar zu demonstrieren. In dem aktuellen Design werden die Pfade zu dem gleichen Satz von Registern zurückgeführt, weil die Rundenlogik achtzig mal wieder verwendet wird. Die "+"-Symbole kennzeichnen Standardaddierer, die als Carry Look Ahead Addierer (CLAs) implementiert sind. Wi stellt die ankommende Nutzlast dar. Ki stellt eine Konstante dar, die von dem ROM erhalten wird, der bei den Authentifikationsberechnungen verwendet wird. In der Figur ist gezeigt, dass die bezüglich der Zeitsteuerung kritischen Pfade von den Registern b, c und d ausgehen, durch die nichtlineare Funktion (definiert von der SHA1 Spezifikation) und die Addierer gehen und an dem Register a enden. Die Register b, c, d und e erhalten jeweils eine nichtkritische Eingabe (b erhält a, etc.).
  • 4 ist ein Zeitstudiendiagramm, das den bezüglich der Zeitsteuerung kritischen Pfad der zusammengefassten Rundenlogik des SHA1 Authentifikationsalgorithmus gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht. Der SHA1 Algorithmus spezifiziert fünf Register. Wie oben veranschaulicht ist, sind die Datenpfade von vier der fünf Register in jeder SHA1 Runde nicht kritisch (zeitbegrenzend). In Übereinstimmung mit der vorliegenden Erfindung sind die Register, die den kritischen Pfad aufweisen, in aufeinander folgenden SHA1 Runden alternativ, so dass vier datenwürdige Register immer zu der nächsten Runde weiter gegeben werden können, bevor der kritische Pfad in der aktuellen Runde abgeschlossen ist. Somit ist die Berechnung des kritischen Pfades der zweiten Runde dann, wenn zwei Runden von SHA1 zusammengefasst werden, unabhängig von der der ersten Runde, da das empfangende Register des kritischen Pfades der ersten Runde (d.h., das Register a) nicht das treibende Register des kritischen Pfades der zweiten Runde (d.h., Register e) ist. Dieser Lösungsweg demonstriert, wie zwei SHA1 Runden zusammengefasst werden können, während der gleiche Betrag an Verzögerung für den bezüglich der Zeitsteuerung kritischen Pfad aufrechterhalten werden kann, und wie durch das Wechseln des kritischen Pfades von Register zu Register zwischen den Runden auf diese Weise die Addieroperationen "versteckt" werden können.
  • In einem bevorzugten Ausführungsbeispiel werden die achtzig Runden einer SHA1 Schleife zu vierzig Runden zusammengefasst. Wie oben beschrieben und veranschaulicht worden ist, wird das Zusammenfassen der Runden dadurch erreicht, dass ein einzelner Satz von Registern (das bevorzugte Ausführungsbeispiel weist 5 Register auf, wie dies von dem IPSec Protokoll definiert wird) mit zwei Runden an Logik vorhanden ist. Es wird in Betracht gezogen, dass die Techniken der Erfindung, die hier beschrieben werden, auch dazu verwendet werden können, um die Anzahl an SHA1 Runden in einer SHA1 Schleife zu zwanzig oder sogar noch weniger Runden zusammenzufassen.
  • Anordnen der Additionen
  • Wie oben beschrieben worden ist, spezifizieren sowohl der MD5 Algorithmus als auch der SHA1 Algorithmus, dass die End-Hash-Zustände jedes 512 Bit Blocks mit den Anfangs-Hash-Zuständen addiert werden. Die Ergebnisse werden dann als die Anfangszustände des nächsten 512 Bit Blocks verwendet. Bei dem MD5 müssen Werte von vier Paaren von 32 Bit Registern addiert werden, und beim SHA1 müssen fünf Paare addiert werden.
  • In Anbetracht der Tatsache, dass jede 32 Bit Addition einen Taktzyklus benötigt, würde eine typische Hardware-Implementierung vier zusätzliche Zyklen beim MD5 und fünf zusätzliche Zyklen beim SHA1 verwenden, um diese Additionen durchzuführen, wenn die Hardware-Ressourcen beschränkt sind.
  • Wie oben unter Bezugnahme auf die 3 und 4 angemerkt ist, wird sowohl beim MD5 als auch beim SHA1 nur ein Zustandsregister in jeder Runde neu berechnet. Der Rest der Zustandsregister verwendet verschobene oder nicht verschobene Inhalte von den benachbarten Registern. Somit werden die End-Hash-Zustände nicht in der letzten Runde generiert, sondern vielmehr jeweils in den letzten vier aufeinander folgenden MD5 Runden oder fünf SHA1 Runden. Die vorliegende Erfindung nützt diese Beobachtung aus, indem sie eine Architektur und eine Logik bereitstellt, die das Ordnen der Additionen bereits so früh ermöglicht, wie der End-Hash-Zustand zur Verfügung steht, wodurch die Berechnungszeit vollständig hinter den Rundenoperationen versteckt wird. Dies wird in den folgenden Rechenzeitvergabetabellen veranschaulicht, in denen "Ti" einen Taktzyklus darstellt und "rnd i" eine Rundenoperation darstellt. Die Anfangs-Hash-Zustände werden durch ia, ib, ic, id und ie dargestellt. Parallele Operationen werden in der gleichen Spalte aufgelistet. MD5
    Figure 00150001
    ursprünglicher SHA1
    Figure 00150002
    zusammengefasster SHA1
    Figure 00150003
  • In einem Ausführungsbeispiel der Erfindung kann eine Vielzahl von Addiervorgängen mit den End-Hash-Zuständen in einem einzigen Taktzyklus erledigt werden. Ein Beispiel ist in der Tabelle für den "zusammenfassten SHA1" gezeigt, in der die fünf Addiervorgänge in nur drei Taktzyklen T39, T40 und T1 der nächsten Schleife durchgeführt werden. Ein Fachmann auf diesem Gebiet wird erkennen, dass es in Einklang mit den Prinzipien der vorliegenden Erfindung, die hier beschrieben wird, möglich ist, mehr als zwei Addiervorgänge parallel in einem Taktzyklus durchzuführen. Darüber hinaus sollte es angemerkt werden, dass, wie dies in den Tabellen veranschaulicht ist, diese Ausführungsform der vorliegenden Erfindung sowohl auf zusammengefasste als auch auf nicht zusammengefasste Mehrrunden-Authentifi-kationsalgorithmen an wendbar ist. Die Implementierung dieser Ausführungsform der vorliegenden Erfindung in Verbindung mit einem zusammengefassten Mehrrunden-Algorithmus ist besonders vorteilhaft, da das Verstecken der Addierschritte in dem Maße immer wichtiger wird, wie die Anzahl an Runden geringer wird. Addiervorgänge, die nicht auf die Art und Weise dieser Ausführungsform der vorliegenden Erfindung versteckt werden, würden einen noch größeren Anteil von Overhead in einer zusammengefassten Rundenimplementierung darstellen als in einer Implementierung mit einer höheren Anzahl an Runden.
  • Logikdesign
  • 5 ist ein grobes Blockdiagramm einer SHA1 Hash-Maschine, die die Hauptelemente eines zusammengefassten Rundenlogikdesigns gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht, das in Einklang mit der bezüglich der Zeitsteuerung kritischen Pfadstudie von 4 ist. Die Hardware-Implementierung von Additionsoperationen kann durchgeführt werden, indem eine Vielzahl von Operatoren verwendet werden, die als Addierer bzw. Addierglieder bezeichnet werden und die den Fachleuten auf diesem Gebiet wohl bekannt sind. Die Haupttypen der Multibit-Addierer sind der Carry Propagate Addierer (CPA), der Carry Save Addierer (CSA) und der Carry Look Ahead Addierer (CLA). Die CPAs, CSAs und CLAs setzen sich allgemein aus Einbit-Addierern zusammen, die als Volladdierer (FA) und Halbaddierer (HA) bezeichnet werden. Unter Bezugnahme auf die 6 bis 8 sind die verschiedenen Addierer, die oben genannt sind, beschrieben, wobei die zwei ganzen Zahlen A und B mit k Bit als zwei Eingaben für die Addierer betrachtet werden: Wenn Ai und Bi für i = 1, 2, ..., dann stellt k – 1 jeweils die Bit der ganzen Zahlen A und B dar.
  • Die 6A und 6B veranschaulichen jeweils Blockdiagramme einer Volladdiererzelle (FA) und einer Halbaddiererzelle (HA). Der Unterschied zwischen diesen beiden liegt darin, dass der FA eine zusätzliche Übertrag-Eingabe (carry Input) (Ci) aufweist. Die booleschen Funktionen der Addiererausgaben können folgendermaßen ausgedrückt werden: Ci+1 = AiBi + AiCi + BiCi Si = Ai ∧ Bi ∧ Ci wobei das Symbol "∧" eine logisches exklusives ODER darstellt.
  • Ein Carry Propagate Addierer ist ein Multibit-Addierer, der eine in Reihe geschaltete FA-Kette enthält. Die Übertrag-Ausgabe (carry output) jeder FA-Stufe kann sich nach oben durch alle Stufen höherer Ordnung ausbreiten (propagate). Der CPA ist eine einfache Darstellung des logischen Konzepts der Multibit-Additionsoperationen, aber aufgrund der langen Ausbreitungsverzögerung des Übertrags (carry) weist er einen geringen praktischen Wert für das Entwerfen von breiten Addierern auf.
  • 7 veranschaulicht ein Blockdiagramm einer Carry Save Addiererzelle. Ein CSA ist ein Multibit-Addierer, der aus einer Reihe von FAs aufgebaut ist. Ein CSA verbreitet den Übertrag nicht nach oben (upstream). Stattdessen sichert bzw. speichert er den Übertrag zusammen mit der Zwischensumme. Ein CSA weist drei Eingaben (Ai, Bi, Ci) und zwei Ausgaben (Ci+1, Si) auf. Wenn ein CSA dazu verwendet wird, mehrere Operanden aufzuaddieren, kann er die Gesamtzahl an Operanden schnell reduzieren. CSAs werden oft in Multiplizierdesigns verwendet, in denen eine große Anzahl an Teilsummen miteinander addiert werden muss.
  • 8 veranschaulicht ein Blockdiagramm einer Carry Look Ahead Addiererzelle. Ein CLA ist dafür ausgelegt, die Übertrags-Ausbreitungsverzögerung zu reduzieren. Er verwendet eine speziell ausgelegte Logik, um den Übertrag vor der Summation zu berechnen. [Das Modul 'Carry Look-ahead Logic' in 8 stellt die Logik dar, die C1, C2 ... auf der Grundlage von P und G in den Gleichungen berechnet, die nachfolgen]. Wenn die Überträge auf einer pro Bit Basis generiert sind, gibt es die beiden Eingaben Ai und Bi sowie auch die endgültige Übertrag-Eingabe. Die Summe (S0, S1) ist ein exklusives ODER-Ergebnis aller drei Eingaben.
  • Gemäß der Übertrag-Berechnungslogik werden zwei Variable definiert, nämlich die Generierung (G) und die Ausbreitung (P) (propagation). Die Generierung stellt dar, ob ein spezifisches Bit oder spezifische Bitgruppen auf der Basis der Eingabewerte einen Übertrag erzeugen können oder nicht. Die Aus breitung stellt dar, ob ein Übertrag durch ein spezifisches Bit oder spezifische Bitgruppen schnell übertragen (ripple) werden kann oder nicht. Gi = AiBi Pi = Ai + Bi (logisches ODER) Ci+1 = Gi + CiPi
  • Durch das Anwenden dieser Logik können alle Überträge wie folgt berechnet werden: C1 = G0 + C0P0 C2 = G1 + G0P1 + C0P0P1 C3 = G2 + G1P2 + G0P1P2 + C0P0P1P2 und so weiter.
  • Die Summe jedes Bit kann folgendermaßen berechnet werden: Si = Ai ∧ Bi ∧ Ci
  • Nun wird zu 5 zurückgekehrt, in dem das Design in Übereinstimmung mit der vorliegenden Erfindung Carry Save Addierer (CSA; die Verzögerung ist äquivalent zu einem 1-Bit-Addierer) und Carry Look Ahead Addierer (CLAs) verwendet, um die beste Geschwindigkeit zu erzielen. Wie oben angemerkt worden ist, addieren die CSAs effizient mehrere Größen miteinander, um Teilprodukte zu erzeugen, die nicht verbreitet werden, und die CLAs sind so ausgelegt, dass sie die Übertrags-Ausbreitungsverzögerung reduzieren. Das Ringschieben (circular shift) ist ein Neuzuordnen der Bits. Es verbraucht keine Zeit. In Übereinstimmung mit der vorliegenden Erfindung werden die Additionen in einem einzigen Taktzyklus durchgeführt, indem die Reihenfolge der CLA-Operationen und Ringschiebe-Operationen neu geordnet wird, so dass nur ein einziger CLA in dem kritischen Pfad benötigt wird.
  • Zwei umfassende Additionsmodule Addiere5zu1 und Addiere4zu1 in der Architektur verwenden jeweils mehrere Stufen von CSA, auf die ein Carry Look Ahead Addierer (CLA) folgt, wie unter Bezugnahme auf 10 unten noch genauer veranschaulicht und beschrieben werden wird. Die 9A und 9B veranschaulichten jeweils Blockdiagramme der umfassenden Addiere5zu1- und Addiere4-zu1-Additionsmodule. Das Addiere5zu1-Modul umfasst drei CSA-Addierer, gefolgt von einem CLA. Das Addiere4zu1-Modul umfasst zwei CSA-Addierer, gefolgt von einem CLA.
  • Die Hash-Maschine weist fünf Register A, B, C, D und E auf. Der Anfangs-Hash-Zustand im Register A (a1) wird zu dem Anfangs-Hash-Zustand im Register E (e1), den Nutzlastdaten (Wi), einer Konstante (Ki) und dem Ergebnis einer Funktion (Ft) der Anfangs-Hash-Zustände in den Registern B, C und D durch eine Kombination von CSA- und CLA-Addierern in einem kombinierten Addiererbaum addiert (10). Der Anfangs-Hash-Zustand im Register D (d1) wird zu den Nutzlastdaten (Wi+1), einer Konstante (Ki+1) und dem Ergebnis einer Funktion (Ft) der Anfangs-Hash-Zustände in den Registern A, B (das durch ein 30 Bit Ringverschieben wandert) und C durch den kombinierten Addiererbaum addiert (10).
  • Die Addierermodule enden mit einem Carry Look Ahead (CLA) Addierer. Die Summe jedes Addierermoduls wird von einem CLA-Addierer addiert, um eine Endsumme für die Runde, die dann in das Register A für die nächste Runde zurück geführt wird, zu generieren und auszubreiten. Wie genauer in 10 gezeigt ist, wandert die bezüglich der Zeitsteuerung kritischste Eingabe dieser beiden Module (Addiere5zu1 und Addiere4zu1) durch die letzte CSA-Reduktion und die CLA-Stufe.
  • 10 ist ein genaueres Blockdiagramm, das Einzelheiten des Anordnens der Additionen in einem kombinierten Addiererbaum in dem Rundenlogikdesign von 5 veranschaulicht. Es wird angemerkt, dass die Logik der kombinierten zwei SHA1 Runden die Summenbildung von mehreren Registerwerten (a bis e) mit den Eingaben W und K und eine Ringschiebe-Operation (<<<5) enthält. Die am meisten Zeit benötigende (d.h., die kritischste Pfad-) Berechnung in den abgewickelten SHA1 Runden kann folgendermaßen ausgedrückt werden: S = ((a<<<5) + f(b, c, d) + e + wi + ki)<<<5 + f(a, b<<<30, c) + d + wi+1 + ki+1 wobei a, b, c, d, e, w und k 32 Bit Größen sind.
  • Die Operation kann logisch in zwei Schritten durchgeführt werden: Schritt 1 verwendet das Modul Addiere5zu1, um Folgendes zu generieren Si = (a<<<5) + f(b, c, d) + e + w[i] und k[i],und Schritt 2 verwendet das Modul Addiere4zu1 und einen 32 Bit Carry Look Ahead Addierer (CLA), um Folgendes zu generieren S = Si + f(a,b<<<30,c) + d + wi+1 + ki+1
  • In jedem Schritt werden Carry Save Addierer (CSAs) dazu verwendet, die 3-zu-2-Reduzierungen bei der Gesamtzahl an Operanden durchzuführen, wie dies in 9 veranschaulicht ist. Die CSAs werden in beiden Schritten so oft wie möglich angewendet. Wenn A und B dazu verwendet werden, die Ausgaben der kaskadierten CSAs (3 Ebenen) in Schritt 1 darzustellen, und C und D dazu verwendet werden, die Ausgaben der kaskadierten CSAs (2 Ebenen) in Schritt 2 darzustellen, kann das Endergebnis S folgendermaßen ausgedrückt werden: S = (A + B)<<<5 + C + D.
  • In der oben beschriebenen Implementierung wird ein Ringschieben bei Si von Schritt 1 durchgeführt, so dass ein CLA in Schritt 1 benötigt wird, um Si vor der Schiebeoperation zu berechnen. Ein zweiter CLA wird in Schritt 2 benötigt, um das Endergebnis zu berechnen. Deshalb ist die Gesamtverzögerung beider Schritte äquivalent zu zwei 32 Bit CLA-Verzögerungen plus einer 32 Bit CSA-Verzögerung plus der Verzögerung für die Funktion "f" für den bezüglich der Zeitsteuerung kritischsten Pfad. Der Grund dafür, dass nur eine CSA- Verzögerung gezählt wird, liegt darin, dass die bezüglich der Zeitsteuerung kritischste Eingabe in die letzte CSA-Stufe eingeführt wird, anstatt dass sie durch mehrere CSAs ausgebreitet wird.
  • Die Logikimplementierung gemäß der vorliegenden Erfindung dehnt die Effektivität des CSA über beide Schritte aus. Dadurch können die Teilergebnisse von Schritt 1 gespeichert werden, ohne dass ein CLA verwendet wird, wodurch ein CLA aus dem kritischen Pfad entfernt wird (der CLA ist aufgrund der Übertragsverzögerung immer zeitaufwändig). Dies wird erreicht, indem die Position des Ringschiebens manipuliert wird, das normalerweise an einer festgelegten Bitstelle in dem SHA1 passiert. Gemäß der vorliegenden Erfindung wird die Reihenfolge der Ringschiebe-Operation mit der letzten CLA-Addition (A + B) in Schritt 1 geschaltet, wodurch die CLA-Operation in Schritt 1 durch mehr CSAs ersetzt wird.
  • Um die Ringschiebe-Operationen bei A und B durchzuführen, bevor sie zusammengezählt werden, wird das Folgende abgeleitet: S0 = {A[26:0], 5'b0} + {B[26:0], 5'b0} + C + D + {27'b0, E} S1 = {A[26:0], 5'b0} + {B[26:0], 5'b0} + C + D + {27'b0, F}wobei E und F 5 Bit Größen sind, die aus Folgendem abgeleitet worden sind: E = A[31:27] + B[31:27] F = A[31:27] + B[31:27] + 5'b0
  • Die Notwendigkeit, E und F zu haben, ist bedingt durch die Tatsache, dass ein Übertrag aus A[26:0] + B[26:0] generiert werden kann. Da A und B zuerst nicht addiert werden, ist nicht bekannt, ob die oberen fünf Bit einen Übertrag von den unteren Bit erhalten werden. Deshalb werden zwei Fälle berechnet, einer mit einer Übertrag-Eingabe (F) und der andere ohne (E).
  • S0 und S1 werden unter Verwendung des Moduls Addiere5zu1 berechnet, da das Constraint des Ringschiebens aus den Gleichungen entfernt wird. Während dieser Berechnung wird nur ein CLA in dem letzten Schritt benötigt. Um zwischen S0 und S1 als dem Endergebnis auszuwählen, wird die höchste Übertrags-Ausgabe von (A[26:0] + B[26:0]) parallel zu dem CLA berechnet. Dies kann geringfügig schneller als der CLA-Schritt durchgeführt werden, weil es nur 27 Bit zu berechnen gibt und nur die höchstwertige Übertrags-Ausgabe benötigt wird, da diese Übertrags-Ausgabe dazu verwendet werden wird, zwischen den beiden Sätzen von Ergebnissen auszuwählen. Es besteht keine Notwendigkeit, in diesem Fall die Summe zu berechnen. Deshalb wird es bezüglich des Zeitablaufs nie kritisch.
  • Die Gesamtverzögerung der abgewickelten SHA1 Runden wird nun die Verzögerung zur Berechnung von S0 oder S1 plus die Verzögerung zur Auswahl zwischen diesen (unter Verwendung eines Multiplexers (MUX)). Ein 32 Bit CSA ist eine Reihe von FAs. Die Verzögerung, die mit einem 32 Bit CSA assoziiert ist, ist die Gleiche wie die Verzögerung für einen FA. Da E und F die Ausgaben von 5 Bit Addierern auf der Grundlage von A[31:27] und B[31:27] sind, liegt diese Verzögerung in der Größenordnung von zwei FAs, basierend auf der Komplexität, die Überträge und die Summe von 5 Bit Addierern unter Verwendung von P und G zu berechnen. Entweder die Verzögerung von zwei CSAs (FAs) oder die Verzögerung eines 5 Bit Addierers sollten beträchtlich kleiner als die eines 32 Bit CLA sein. Somit ist die Verzögerung zur Erhaltung von S0 oder S1 äquivalent zu einer 5 Bit Addition, plus einem 32 Bit CSA, plus einer Multiplexer-Operation (die MUX-Verzögerung, die mit der Auswahl zwischen S0 und S1 verbunden ist), plus einem 32 Bit CLA, wenn man annimmt, dass die 5 Bit Addition, die benötigt wird, um E und F zu generieren langsamer ist als die Verzögerung von zwei 32 Bit CSAs. Anderenfalls geht der bezüglich der Zeitsteuerung kritische Pfad durch drei 32 Bit CSAs, plus eine Multiplexer-Operation (die MUX-Verzögerung, die mit der Auswahl zwischen S0 und S1 verbunden ist) plus einen 32 Bit CLA. In beiden Fällen beträgt die Verzögerung viel weniger als ein bezüglich der Zeit kritischer Pfad, der zwei CLAs umfasst.
  • Somit tauscht der Lösungsweg der vorliegenden Erfindung eine 32 Bit CLA-Verzögerung gegen im schlimmsten Fall einen 5 Bit CLA oder zwei 32 Bit CSAs plus die zusätzliche MUX-Verzögerung. Das Design führt zu einer be trächtlichen Beschleunigung aufgrund der Zeit, die durch die Beseitigung des 32 Bit CLA gespart wird.
  • Implementierungen der Erfindung, die dieses Logikdesign in einer Authentifikationsmaschine verwenden, die den HMAC-SHA1-Algorithmus des IPSec Protokolls verwendet, die die herkömmlichen 80 SHA1 Runden zu 40 Runden zusammenfasst, die Addiervorgänge versteckt und das Pipelining der inneren und äußeren Schleifen verwendet, können es ermöglichen, dass der HMAC-SHA1 in etwa der gleichen Zeit wie ein herkömmlicher SHA1 oder weniger durchgeführt werden kann.
  • Schlussfolgerung
  • Obwohl die vorstehende Erfindung zu Zwecken des klaren Verständnisses in einigen Einzelheiten beschrieben worden ist, wird es den Fachleuten auf diesem Gebiet klar sein, dass verschiedene Adaptionen und Modifikationen der soeben beschriebenen bevorzugten Ausführungsbeispiele konfiguriert werden können, ohne dass von dem Schutzumfang der Erfindung abgewichen wird. Zwar ist die vorliegende Erfindung zum Beispiel hauptsächlich in Zusammenhang mit dem IPSec Protokoll beschrieben worden, aber die Prinzipien vieler Ausführungsformen der Erfindung können auch bei Mehrrunden-Authentifikationsalgorithmen im Allgemeinen angewendet werden, egal ob diese nun in Verbindung mit Kryptographieoperationen verwendet werden oder nicht. Deshalb sollten die beschriebenen Ausführungsbeispiele nur als Veranschaulichung und nicht als Einschränkung betrachtet werden, und die Erfindung sollte nicht auf die darin angegebenen Einzelheiten begrenzt sein, sondern soll durch die nachfolgenden Ansprüche definiert werden.

Claims (22)

  1. Authentifikationsvorrichtung, die so ausgelegt ist, dass sie einen SHA-1 Mehrrunden-Authentifikationsalgorithmus durchführen kann, mit: einer Hash-Vorrichtung, die so konfiguriert ist, dass sie eine Hashrundenlogik für einen SHA-1 Authentifikationsalgorithmus implementiert, dadurch gekennzeichnet, dass die Hashrundenlogik-Implementierung folgendes umfasst: einen kombinierten Addiererbaum mit einem bezüglich der Zeitsteuerung kritischen Pfad, der einen einzelnen 32 Bit Carry Look Ahead Addierer (CLA) aufweist, mit Einrichtungen, die so ausgelegt sind, dass sie zwei aufeinander folgende Runden des SHA-1 Authentifikationsalgorithmus zu einer Runde zusammenfassen.
  2. Authentifikationsvorrichtung nach Anspruch 1, wobei die Hashrundenlogik-Implementierung einen bezüglich der Zeitsteuerung kritischen Pfad aufweist, der äquivalent ist zu einem aus: einer 5 Bit Addition, einem 32 Bit CSA, einer Multiplexeroperation und einem 32 Bit CLA; und drei 32 Bit CSA, einer Multiplexeroperation und einem 32 Bit CLA.
  3. Authentifikationsvorrichtung nach Anspruch 1, die einen 5 Bit Ringschieber umfasst, der dem kombinierten Addiererbaum vorgeschaltet ist.
  4. Authentifikationsvorrichtung nach Anspruch 3, wobei der kombinierte Addiererbaum Addiere5zu1- und Addiere4zu1-Addierer aufweist.
  5. Authentifikationsvorrichtung nach Anspruch 1, wobei der kombinierte Addiererbaum so konfiguriert ist, dass die Additionsberechnungen parallel zu den Rundenoperationen durchgeführt werden.
  6. Authentifikationsvorrichtung nach Anspruch 1, die so ausgelegt ist, dass sie einen SHA-1 Mehrschleifen-Authentifikationsalgorithmus implementiert, mit: einer inneren Hash-Vorrichtung (210, 212), die so ausgelegt ist, dass sie eine erste Instantiierung einer SHA-1 Authentifikationsalgorithmus-Hashrundenlogik bereitstellt; einer äußeren Hash-Vorrichtung (220, 222), die so ausgelegt ist, dass sie eine zweite Instantiierung einer SHA-1 Authentifikationsalgorithmus-Hashrundenlogik bereitstellt; einem Doppelrahmen-Nutzlastdaten-Eingabepuffer (201), der so konfiguriert ist, dass er einen neuen Datenblock lädt, während ein anderer Datenblock in der inneren Hash-Vorrichtung (210, 212) verarbeitet wird; einem Anfangs-Hash-Zustands-Eingabepuffer (214, 216), der so konfiguriert ist, dass er Anfangs-Hash-Zustände in die inneren (210, 212) und äußeren (220, 222) Hash-Vorrichtungen für gleichzeitig ablaufende innere und äußere Hash-Operationen lädt; und einem Dualport-ROM (218), der für gleichzeitige Konstantensuchen für sowohl die innere Hash-Vorrichtung (210, 212) als auch die äußere Hash-Vorrichtung (220, 222) konfiguriert ist.
  7. Authentifikationsvorrichtung nach Anspruch 6, wobei der Mehrschleifen-Mehrrunden-Authentifikationsalgorithmus der HMAC-SHA-1 ist.
  8. Authentifikationsvorrichtung nach Anspruch 1, wobei die Hashrundenlogik derart implementiert ist, dass achtzig Runden einer SHA-1-Schleife zu vierzig Runden zusammengefasst werden.
  9. Authentifikationsvorrichtung nach Anspruch 1, wobei die Hash-Vorrichtung so konfiguriert ist, dass sie die Hashrundenlogik implementiert, mit: fünf Hash-Zustandsregistern; einem kritischen und vier unkritischen Datenpfaden, die mit den fünf Registern derart assoziiert sind, dass in aufeinander folgenden SHA-1-Runden die Register, die den kritischen Pfad aufweisen, alternativ sind.
  10. Verfahren zur Authentifikation von Daten, die über ein Computernetzwerk übertragen werden, umfassend: Empfangen eines Datenpaketstroms; Splitten des Paketdatenstroms in Datenblöcke mit einer festen Größe; Verarbeiten der Datenblöcke mit der festen Größe unter Verwendung einer SHA-1 Mehrrunden-Authentifikationsvorrichtung, dadurch gekennzeichnet, dass die Authentifikationsvorrichtung die Hashrundenlogik implementiert und für einen SHA-1 Authentifikationsalgorithmus ausgelegt ist, einen kombinierten Addiererbaum mit einem bezüglich der Zeitsteuerung kritischen Pfad umfasst, der einen einzelnen 32 Bit Carry Look Ahead Addierer (CLA) aufweist; und zwei aufeinander folgende Runden des SHA-1 Authentifikationsalgorithmus zu einer Runde zusammenfasst.
  11. Verfahren nach Anspruch 10, wobei die Hashrundenlogik-Implementierung einen bezüglich der Zeitsteuerung kritischen Pfad aufweist, der äquivalent ist zu einem aus: einer 5 Bit Addition, einem 32 Bit CSA, einer Multiplexeroperation, und einem 32 Bit CLA; und drei 32 Bit CSA, einer Multiplexeroperation, und einem 32 Bit CLA.
  12. Verfahren nach Anspruch 10, wobei Additionen, die von dem kombinierten Addiererbaum durchgeführt werden, ein 5 Bit Ringschieber vorgeschaltet ist.
  13. Verfahren nach Anspruch 10, das des Weiteren folgendes umfasst: Bereitstellen von fünf Hash-Zustandsregistern; und Bereitstellen von Datenpfaden ausgehend von den fünf Zustandsregistern derart, dass vier der fünf Datenpfade von den Registern in jeder SHA-1-Runde bezüglich der Zeitsteuerung nicht kritisch sind.
  14. Verfahren nach Anspruch 13, wobei in aufeinander folgenden SHA-1-Runden Register, die den kritischen Pfad aufweisen, alternativ sind.
  15. Verfahren nach Anspruch 14, wobei achtzig Runden einer SHA-1-Schleife zu vierzig Runden zusammengefasst werden.
  16. Verfahren nach Anspruch 10, wobei die Additionsberechnungen parallel zu den Rundenoperationen durchgeführt werden.
  17. Verfahren nach Anspruch 10, wobei die Authentifikationsvorrichtung eine Mehrschleifen-Mehrrunden-Authentifikationsvorrichtung ist, die einen Hash-Vorrichtungskern (200) aufweist, der eine innere Hash-Vorrichtung (210, 212) und eine äußere Hash-Vorrichtung (220, 222) umfasst, wobei die Authentifikationsvorrichtung so konfiguriert ist, dass sie Hash-Operationen der inneren Hash-Vorrichtung (210, 212) und der äußeren Hash-Vorrichtung (220, 222) einer Pipeline-Verarbeitung unterzieht, die Mehrrundenlogik zusammenfasst und neu ordnet, um die Runden der Hash-Operationen zu verringern, und die Mehrrundenlogik derart implementiert, dass die Additionsberechnungen parallel zu den Rundenoperationen durchgeführt werden.
  18. Verfahren nach Anspruch 17, wobei der Mehrschleifen-Mehrrunden-Authentifikationsalgorithmus der HMAC-SHA-1 ist.
  19. Verfahren nach Anspruch 18, wobei das Pipelining die Durchführung einer äußeren Hash-Operation für eine Datennutzlast parallel zu einer inneren Hash-Operation einer zweiten Datennutzlast in einem Paketstrom umfasst, der der Authentifikationsvorrichtung zugeführt wird.
  20. Verfahren nach Anspruch 19, wobei ein Doppelrahmen-Eingabepuffer (201) für die innere Hash-Vorrichtung (210, 212) verwendet wird.
  21. Verfahren nach Anspruch 20, wobei die Anfangs-Hash-Zustände für die Hash-Operationen für gleichzeitige innere Hash-Operationen und äußere Hash-Operationen doppelt gepuffert werden.
  22. Verfahren nach Anspruch 21, wobei gleichzeitige Konstantensuchen aus einem Dualport-ROM (218) von sowohl der inneren Hash-Vorrichtung (210, 212) als auch der äußeren Hash-Vorrichtung (220, 222) durchgeführt werden.
DE60213762T 2001-01-12 2002-01-08 Implementierung des SHA1 Algorithmusses Expired - Lifetime DE60213762T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US26142501P 2001-01-12 2001-01-12
US261425P 2001-01-13
PCT/US2002/000642 WO2002056538A2 (en) 2001-01-12 2002-01-08 Implementation of the shai algorithm

Publications (2)

Publication Number Publication Date
DE60213762D1 DE60213762D1 (de) 2006-09-21
DE60213762T2 true DE60213762T2 (de) 2007-10-04

Family

ID=22993246

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60213762T Expired - Lifetime DE60213762T2 (de) 2001-01-12 2002-01-08 Implementierung des SHA1 Algorithmusses

Country Status (4)

Country Link
US (1) US7299355B2 (de)
EP (1) EP1360795B1 (de)
DE (1) DE60213762T2 (de)
WO (1) WO2002056538A2 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US20020191783A1 (en) * 2001-06-13 2002-12-19 Takahashi Richard J. Method and apparatus for creating a message digest using a multiple round, one-way hash algorithm
US7512780B1 (en) * 2001-08-31 2009-03-31 Verizon Corporate Services Group, Inc. Packet-parallel high performance cryptography systems and methods
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
TWI230532B (en) * 2002-03-05 2005-04-01 Admtek Inc Pipelined engine for encryption/authentication in IPSEC
US7151829B2 (en) * 2002-04-22 2006-12-19 International Business Machines Corporation System and method for implementing a hash algorithm
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7181009B1 (en) * 2002-12-18 2007-02-20 Cisco Technology, Inc. Generating message digests according to multiple hashing procedures
CN100449986C (zh) * 2003-01-28 2009-01-07 华为技术有限公司 一种提高键入-散列法运算速度的方法
US7684563B1 (en) * 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US20050135604A1 (en) * 2003-12-22 2005-06-23 Feghali Wajdi K. Technique for generating output states in a security algorithm
KR20050065976A (ko) * 2003-12-26 2005-06-30 한국전자통신연구원 Sha-1 해쉬값 연산 장치 및 방법
JP2005208400A (ja) * 2004-01-23 2005-08-04 Mitsubishi Electric Corp ハッシュ値算出装置及び演算装置
US7818563B1 (en) * 2004-06-04 2010-10-19 Advanced Micro Devices, Inc. Method to maximize hardware utilization in flow-thru IPsec processing
CN101040306B (zh) * 2005-09-09 2012-01-04 三菱电机株式会社 伪随机数生成装置
JP4734089B2 (ja) * 2005-10-27 2011-07-27 日立オートモティブシステムズ株式会社 車載端末
JP4767057B2 (ja) * 2006-03-27 2011-09-07 富士通株式会社 ハッシュ値生成プログラム、ストレージ管理プログラム、判定プログラム及びデータ変更検証装置
US20070260892A1 (en) * 2006-05-08 2007-11-08 Paul Christopher R System and method for authenticating a power source
JP4308840B2 (ja) * 2006-11-08 2009-08-05 Okiセミコンダクタ株式会社 Sha演算方法およびsha演算装置
KR100901697B1 (ko) * 2007-07-09 2009-06-08 한국전자통신연구원 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치
US8036378B2 (en) * 2008-05-07 2011-10-11 Apple Inc. System and method of authentication
DE102008030421A1 (de) * 2008-06-26 2010-01-07 Micronas Gmbh Verfahren und Schaltungsanordnung zur SHA1- und SHA256-Signatur Generierung
US8331555B1 (en) 2008-11-24 2012-12-11 Guidance-Tableau, Llc Hardware-implemented MD5 function
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法
JP5990466B2 (ja) 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US8925109B2 (en) * 2010-07-30 2014-12-30 Adobe Systems Incorporated Client-side player file and content license verification
US8712039B2 (en) * 2011-04-06 2014-04-29 Certicom Corp. Efficient implementation of hash algorithm on a processor
JP5269137B2 (ja) * 2011-04-07 2013-08-21 三菱電機株式会社 演算装置
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10097345B2 (en) * 2015-04-14 2018-10-09 PeerNova, Inc. Secure hash algorithm in digital hardware for cryptographic applications
US10129018B2 (en) * 2015-11-12 2018-11-13 Intel Corporation Hybrid SM3 and SHA acceleration processors
US10454670B2 (en) * 2016-06-10 2019-10-22 Cryptography Research, Inc. Memory optimization for nested hash operations
US10484181B2 (en) * 2016-12-12 2019-11-19 Datiphy Inc. Streaming non-repudiation for data access and data transaction

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870474A (en) * 1995-12-04 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers
EP0478731A4 (en) * 1990-04-04 1993-09-22 International Business Machines Corporation Early scism alu status determination apparatus
US5276635A (en) * 1992-02-04 1994-01-04 Motorola, Inc. Method and apparatus for performing carry look-ahead addition in a data processor
US5297206A (en) * 1992-03-19 1994-03-22 Orton Glenn A Cryptographic method for communication and electronic signatures
EP0590251A2 (de) * 1992-09-22 1994-04-06 Motorola, Inc. Hochgeschwindigkeitsaddierer
US5548544A (en) * 1994-10-14 1996-08-20 Ibm Corporation Method and apparatus for rounding the result of an arithmetic operation
US5936967A (en) * 1994-10-17 1999-08-10 Lucent Technologies, Inc. Multi-channel broadband adaptation processing
US5796836A (en) * 1995-04-17 1998-08-18 Secure Computing Corporation Scalable key agile cryptography
JPH09231055A (ja) * 1996-02-27 1997-09-05 Denso Corp 論理演算回路及びキャリールックアヘッド加算器
US5943338A (en) * 1996-08-19 1999-08-24 3Com Corporation Redundant ATM interconnect mechanism
KR100244396B1 (ko) * 1996-12-30 2000-02-01 김영환 캐리 룩어헤드 가산기
US6111858A (en) * 1997-02-18 2000-08-29 Virata Limited Proxy-controlled ATM subnetwork
AUPO799197A0 (en) * 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART01)
US5940877A (en) * 1997-06-12 1999-08-17 International Business Machines Corporation Cache address generation with and without carry-in
US6216167B1 (en) * 1997-10-31 2001-04-10 Nortel Networks Limited Efficient path based forwarding and multicast forwarding
US6304657B1 (en) * 1999-05-26 2001-10-16 Matsushita Electric Industrial Co., Ltd. Data encryption apparatus using odd number of shift-rotations and method
JP3864675B2 (ja) * 2000-03-09 2007-01-10 株式会社日立製作所 共通鍵暗号装置
US7177421B2 (en) 2000-04-13 2007-02-13 Broadcom Corporation Authentication engine architecture and method
US7290027B2 (en) * 2002-01-30 2007-10-30 International Business Machines Corporation Circuit suitable for use in a carry lookahead adder

Also Published As

Publication number Publication date
DE60213762D1 (de) 2006-09-21
EP1360795B1 (de) 2006-08-09
WO2002056538A3 (en) 2002-12-19
WO2002056538A2 (en) 2002-07-18
US20020184498A1 (en) 2002-12-05
EP1360795A2 (de) 2003-11-12
US7299355B2 (en) 2007-11-20

Similar Documents

Publication Publication Date Title
DE60213762T2 (de) Implementierung des SHA1 Algorithmusses
DE69828150T2 (de) Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät
DE60105788T2 (de) AES Verschlüsselungsschaltung
DE60305775T2 (de) Verfahren und Gerät zur Berechnung von Haschwerten in einem kryptographischen Koprozessor
DE69838390T2 (de) Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation
EP0239749B1 (de) Kryptographie-Verfahren und Kryptographie-Prozessor zur Durchführung des Verfahrens
DE69818798T2 (de) Hochgeschwindige Montgomerywert-Berechnung
WO2006092448A2 (de) Verfahren und vorrichtung zum berechnen einer polynom-multiplikation, insbesondere für die elliptische kurven-kryptographie
DE102020113922A1 (de) Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen
DE102007052656B4 (de) Digital-Verschlüsselungs-Hardware-Beschleuniger
DE69727796T2 (de) Koprozessor zum Ausführen von modularer Multiplikation
DE102020102453A1 (de) Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation
Migliore et al. Hardware/software co-design of an accelerator for FV homomorphic encryption scheme using Karatsuba algorithm
CH660822A5 (de) Zufallsprimzahlen-erzeugungsmittel in einer mit oeffentlichem schluessel arbeitenden daten-verschluesselungsanlage.
DE102005012098A1 (de) Datenchiffrierprozessor sowie AES-Chiffriersystem und AES-Chiffrierverfahren
DE112007001319T5 (de) Multiplizieren zweier Zahlen
EP1920323A1 (de) Verfahren zur skalarmultiplikation von punkten auf einer elliptischen kurve
DE10260655B3 (de) Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
DE69735290T2 (de) Verfahren zur unsymmetrischen kryptographischen kommunikation und zugehöriger tragbarer gegenstand
EP2689554B1 (de) Verfahren und system zum abrufen des ergebnisses einer öffentlichen verbindungsfunktion für mehrere parteien
DE10219158B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE10260660B3 (de) Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
DE60027163T2 (de) Gegenmassnahmenverfahren in einem elektronischen bauelement mit einem kryptosystem mit privatem schlüssel
EP1999571B1 (de) Verfahren und vorrichtung zur reduktion eines polynoms in einem binären finiten feld, insbesondere im rahmen einer kryptographischen anwendung
Sklavos et al. Encryption and data dependent permutations: Implementation cost and performance evaluation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M