-
1. Gebiet
der Erfindung
-
Die vorliegende Erfindung betrifft
allgemein das Gebiet der Kryptografie und insbesondere ein Verfahren
zur Beschleunigung der kryptografischen Verarbeitung und einen Kryptografie-Beschleunigungs-Chip.
-
2. Beschreibung des Standes
der Technik
-
Im Fach sind viele Verfahren zur
Ausführung von
Kryptografie bekannt und werden besprochen, zum Beispiel in dem
Buch Applied Cryptograhhy, Bruce Schneider, John Wiley & Sons, Inc. (1996, zweite
Ausgabe), auf das nachfolgend verwiesen wird. Um die Geschwindigkeit
der Kryptografie-Verarbeitung zu erhöhen, sind spezielle Kryptografie-Beschleunigungs-Chips
entwickelt worden. Beispielsweise bieten die Chips Hi/fnTM 7751
und VLSITM VMS115 Hardware-Kryptografie-Beschleunigung, die ähnliche
Software-Implementierungen übertreffen.
Kryptografie-Beschleunigungs-Chips können in Routern oder Gateways
enthalten sein, zum Beispiel, um automatische Verschlüsselung/Entschlüsselung von
IP-Paketen zu bieten. Durch Einbettung der Kryptografie-Funktionalität in Netzwerk-Hardware werden
sowohl die Systemleistung, als auch die Datensicherheit verbessert.
-
Diese Chips erfordern jedoch einen
veränderbaren
extern beigefügten
Speicher zum Arbeiten. Der Chip VLSI VMS118 erfordert tatsächlich einen beigefügten synchronen
SRAM, welcher der teuerste Speichertyp ist. Die zusätzlichen
Speicheranforderungen machen diese Lösung in Bezug auf die Kosten
gegenüber
der Leistung für
viele Anwendungen unannehmbar.
-
Außerdem ist die tatsächliche
unterstützte Leistung
dieser Chips wesentlich geringer als der Spitzendurchsatz, den die
internen Kryptografie-Engines (oder "Krypto-Engines" unterstützen können. Ein Grund dafür ist, dass
die Chips eine lange "Kontext"-Änderungszeit aufweisen. Mit
anderen Worten, wenn die Kryptografie-Schlüssel und die zugehörigen Daten
paketweise geändert
werden müssen, müssen die
Chips des Stands der Technik den aktuellen Kontext auslagern und
einen neuen Kontext herunter laden, der den Durchsatz herab setzt.
Der neue Kontext muss im Allgemeinen extern von Software geladen
werden, und für
viele Anwendungen, wie Router und Gateways, die Bandbreite von mehreren
Anschlüssen
ansammeln, ist das Ändern
von Kontext eine sehr häufige
Aufgabe.
-
Kürzlich
ist ein Sicherheitsstandard vorgeschlagen worden, der "DES/3DES"-Verschlüsselung mit "MD5/SHA1"-Authentifizierung
verbindet und als "IPSec." bekannt ist. Durch
Einbindung sowohl der Verschlüsselungs-,
als auch der Authentifizierungs-Funktionalität in einem einzigen Beschleunigungs-Chip
kann die Gesamt-Systemleistung verbessert werden. Aber aufgrund
der zuvor aufgeführten
Beschränkungen
bieten die Lösungen
des Stands der Technik keine angemessene Leistung zu vertretbaren
Kosten.
-
Tarman, Hutchinson, Pierson, Sholander, Witzke: "Algorithm – Agile
Encryption in ATM Networks",
11. Juni 1998, IEEE Computer Society USA, bezieht sich auf Switches
in einem ATM-Netzwerk. ATM verwendet eine kleine Zelle fester Länge in ihrer Informations-Grundeinheit. Wenn
eine Zelle an einem Switch-Eingangskanal ankommt, untersucht der Switch
den VPI/VCI (virtuelle Pfadkennung/virtuelle Kanalkennung), um zu
bestimmen, wie die Zelle weiter zu leiten ist. Die ATM-Einheiten
mit Sicherheitsagenten können
einen gemeinsamen Satz von Algorithmen vereinbaren und eine Sicherheitsverknüpfung bilden.
Die dort beschriebene ATM-Verschlüsselung erlaubt es, Anwendern,
einen geeigneten Algorithmus auszuwählen, um Sicherheitsdienste
für eine gegebene Übertragung
zu implementieren.
-
Pierson at al.: "Context-Agile Encryption for High Speed
Communication Networks" Computer Communication
Review, US, Association for Computing Machinery, New York, Band
29, Nr. 1, Januar 1999, Seiten 35–49, bezieht sich ebenfalls
auf die Verschlüsselung
in einem ATM-Netzwerk.
-
"Analog
Devices and IRE Announce First DSP-Based Internet Security System-on-a-Chip", Analog Devices,
Pressemitteilung [online], 19. Januar 1999, Norwood, MA, bezieht
sich auf ein DSP-basiertes System auf einem Chip zur Bereitstellung
einer eingebetteten Verschlüsselungslösung.
-
"3Com® Launches
New Era of Network Connectivity",
3Com-Pressemitteilung, [online] 14. Juni 1999, bezieht sich auf
eine neue Kategorie von Hochleistungs-Netzwerkschnittstellen-Karten und auf einen
kartenintegrierten Verschlüsselungs-Chip.
-
Somit wäre es wünschenswert, ein Verfahren
zur Beschleunigung der Kryptografie-Verarbeitung und einen Kryptografie-Beschleunigungs-Chip zu
haben, die in der Lage sind, die IPSec-Spezifikation (oder einen beliebigen
anderen Kryptografie-Standard) zu implementieren, der keinen externen
Speicher erfordert und der Kontext-Informationen schnell ändern kann.
-
KURZE BESCHREIBUNG
DER ERFINDUNG
-
Gemäß der Erfindung wird dies durch
ein Verfahren nach Anspruch 1 und einen Kryptografie-Beschleunigungs-Chip
nach Anspruch 11 erreicht. Vorteilhafte Ausführungsformen werden in den jeweiligen
anhängigen
Ansprüchen
definiert.
-
Im Allgemeinen bietet die vorliegende
Erfindung eine Architektur für
einen Kryptografie-Beschleunigungs-Chip,
der gegenüber
Ausführungen des
Stands der Technik bedeutende Leistungsverbesserungen bietet. Insbesondere
ermöglicht
die Chip-Architektur die "zellbasierte" Verarbeitung von IP-Pakten
zufälliger
Länge.
Die IP-Pakete, die von veränderbarer
und unbekannter Größe sein
können, sind
in kleinere "Zellen" fester Größe eingeteilt.
Die Zellen fester Größe werden
dann verarbeitet und in Paketen wieder zusammen gesetzt. Beispielsweise können die
eingehenden IP-Pakete zur Verarbeitung in 64-Byte-Zellen eingeteilt
werden.
-
Die zellbasierte Paketverarbeitungs-Architektur
der vorliegenden Erfindung ermöglicht
die Implementierung einer Verarbeitungs-Pipeline, die einen bekannten
Verarbeitungsdurchsatz und Zeitablaufeigenschaften hat, wodurch
es möglich
wird, die Zellen in einem vorhersehbaren Zeitrahmen zu abzurufen
und zu verarbeiten. Die vorliegende Architektur ist skalierbar und
außerdem
von dem Typ der ausgeführten
Kryptografie unabhängig.
In bevorzugten Ausführungsformen
können
die Zellen der Zeit voraus gelesen (vorher abgerufen) werden, und
die Pipeline kann so gestuft werden, dass der beigefügte (lokale)
Speicher keine Paketdaten speichern oder Parameter steuern muss.
-
In einer ersten Ausführungsform
kann ein IPSec-Verarbeitungs-Chip durch 3DES-CBC- und MD5/SHA1-Verarbeitungsblöcke implementiert
werden. Die Verarbeitung der Zellen erfolgt zeitverschachtelt, und
die Sequentialisierung wird von einem programmierbaren Mikrocontroller
gesteuert. In einer zweiten Ausführungsform
kann außerdem
eine Verarbeitung öffentlicher
Schlüssel
nach Diffie-Hellman oder RSA und DAS hinzugefügt werden. Zusätzliche
Verarbeitungsblöcke
können
auch implementiert werden. Die vorliegende Erfindung bietet gegenüber den
Ausführungen
des Stands der Technik eine Leistungsverbesserung, ohne dass ein
zusätzlicher externer
Speicher erforderlich ist.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die vorliegende Erfindung ist leicht
durch die folgende ausführliche
Beschreibung in Verbindung mit den begleitenden Zeichnungen zu verstehen,
in denen gleiche Bezugszeichen gleiche Strukturelemente bezeichnen
und in denen:
-
1 ein
grobes Blockdiagramm eines Systems ist, das einen Kryptogfafie-Beschleunigungs-Chip gemäß der vorliegenden
Erfindung implementiert;
-
2 ein
grobes Blockdiagramm eines Kryptografie-Beschleunigungs-Chips der
vorliegenden Erfindung ist;
-
3 ein
Diagramm ist, das die Umwandlung eines Pakets zufälliger Länge in eine
Zelle fester Größe darstellt,
wie von der vorliegenden Erfindung offenbart;
-
4 ein
Blockdiagramm eines Kryptografie-Beschleunigungs-Chips ist, der
gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung konfiguriert ist;
-
5 ein
Blockdiagramm eines Kryptografie-Beschleunigungs-Chips ist, der
gemäß einer zweiten
Ausführungsform
der vorliegenden Erfindung konfiguriert ist;
-
6 ein
Blockdiagramm ist, das die Paketverarbeitung der vorliegenden Erfindung
darstellt;
-
7(A)–7(D) Ablaufdiagramme sind,
die eine Ausführungsform
der Paket-Sequentialisierungs-Prozedur
der vorliegenden Erfindung darstellen; und
-
8 eine
grafische Darstellung ist, in der die Leistung eines Kryptografie-Beschleunigungs-Chips gemäß der vorliegenden
Erfindung mit einem Kryptografie-Beschleunigungs-Chip des Stands
der Technik verglichen wird.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Die folgende Beschreibung wird geboten,
um einem beliebigen Fachmann zu ermöglichen, die Erfindung herzustellen
und zu verwenden und legt die von den Erfindern als am Besten erachteten
Verfahrensweisen zur Ausführung
der Erfindung dar. Verschiedene Abänderungen werden Fachleuten
jedoch leicht ersichtlich sein, da das Grundprinzip der vorliegenden
Erfindung in diesem Dokument insbesondere definiert worden ist,
um eine Architektur und ein Verfahren zur Kryptografie-Beschleunigung
bereit zu stellen.
-
Die vorliegende Erfindung stellt
allgemein eine Architektur für
einen Ktyptografie-Beschleunigungs-Chip
bereit, der bedeutende Leistungsverbesserungen gegenüber Ausführungen
des Stands der Technik ermöglicht.
Insbesondere ermöglicht
die Chip-Architektur die "zellbasierte" Verarbeitung von IP-Pakten
zufälliger
Länge.
Die zellbasierte Verarbeitung beinhaltet die Aufteilung von IP-Paketen,
die von verschiedener und unbekannter Größe sein können, in kleinere "Zellen" fester Größe. Die
Zellen fester Größe werden
dann verarbeitet und wieder in Paketen zusammen gesetzt (wieder
vereinigt). Beispielsweise können
die ankommenden IP-Pakete zur Verarbeitung in 64-Byte-Zellen aufgeteilt
werden. Die zellbasierte Paketverarbeitungs-Architektur der vorliegenden
Erfindung ermöglicht
die Implementierung einer Verarbeitungs-Pipeline, die einen bekannten Verarbeitungsdurchsatz
und Zeitablaufeigenschaften besitzt, wodurch es möglich wird,
die Zellen in einem vorhersehbaren Zeitrahmen abzurufen und zu verarbeiten.
In bevorzugten Ausführungsformen
können die
Zellen voraus gelesen (vorher abgerufen) werden und die Pipeline
kann so gestuft sein, dass der beigefügte (lokale) Speicher keine
Paketdaten speichern oder Parameter steuern muss.
-
Derzeit verwenden die anderen bekannten Lösungen in
der Industrie eine vollständig
andere Architektur, die darauf beruht, abhängig von der Architektur, einen
lokalen beigefügten
Speicher zu besitzen, um Kontext-Informationen, Paketdaten oder
beides zu behalten. Somit erfordern die Ausführungen des Stands der Technik
einen externen Speicherblock sehr nah am Chip. Die vorliegende Erfindung erfordert
aufgrund der hochgradig zeitverschachtelten Struktur, die Pakete
in Zellen fester Größe aufteilt,
keinen externen Speicher. Weil die Zellen von fester Größe sind,
kann die vorliegende Erfindung die Zellen fester Größe schon
vor der Verarbeitung abrufen.
-
Die Größe des Speichers, der auf einem
Beschleunigungs-Chip erforderlich ist, der gemäß der vorliegenden Erfindung
ausgebildet ist, ist wesentlich geringer, als der für andere
Lösungen
erforderliche Speicher. Die vorliegende Erfindung benötigt lediglich
genug Speicher auf dem Chip, um einige wenige 64-Byte-Zellen, Kontext-Informationen,
Schlüssel, etc.
für zwei
oder mehr Pakete zu speichern und ist in der Lage, die volle Leistung
für jede
beliebige Paketgröße und jede
beliebige Anzahl von Kontexten zu unterstützen. Die Lösungen des Stands der Technik erfordern
ausreichend Speicher, um den Kontext für viele hundert oder viele
tausend unterschiedliche Pakete zu behalten, zusätzlich genug Speicher, um ebenfalls
die Paketdaten zu behalten.
-
Der zellbasierte Pipeline-Ablauf
der vorliegenden Erfindung wird von einem programmierbaren Steuerprozessor
angetrieben, der dafür
verantwortlich ist, den Paketfluss, sowie die Steuer-Informationen durch
den Satz der Verarbeitungseinheiten in eine logische Reihenfolge
zu bringen. Der Steuerprozessor bestimmt zu jedem beliebigen Zeitpunkt,
wie die Pakete in Zellen fester Größe aufgeteilt werden und wann
die Zellen von dem Bus in den Speicher auf dem Chip gelesen werden
sollten. Der Prozessor ruft außerdem
vorher Kontext-Informationen ab, die beschreiben, welche Verarbeitung
auf die Pakete angewandt werden muss. Der Steuerprozessor bringt dann
die Recheneinheiten (Kryptografie, Authentifizierung, Komprimierung
etc.) in eine logische Reihenfolge, um die besonderen, in den Kontext-Informationen
angegebenen, Algorithmen auf die Zellen anzuwenden, die zuvor abgerufen
worden sind. Der Steuerprozessor schreibt außerdem das verarbeitete Ergebnis
in Informationseinheiten von Zellengröße. Darüber hinaus unterstützt die
vorliegende Erfindung eine Erscheinungsform, in der fortlaufend
gegensinnige Pakete ohne Leistungsverlust unterschiedliche Schlüssel und
unterschiedliche kryptografische Formate besitzen können, weil
der Kontext und die Paketdaten vorher abgerufen werden.
-
In Standard-Netzwerken können IP-Pakete eine
veränderliche
Größe besitzen,
irgendwo zwischen 1 und 216 Bytes, obgleich
die meisten Pakete in der Praxis zwischen 64 und 8 KBytes groß sind.
-
Gemäß einer Ausführungsform
der vorliegenden Erfindung werden die Pakete veränderlicher Länge in Standard-64-Byte-Zellen
aufgeteilt, obgleich andere Implementierungen eine andere feste Größe für jede Zelle
verwenden können.
Die vorliegende Erfindung beruht darauf dass der Steuerprozessor
die Zellverarbeitung wirksam in eine logische Reihenfolge bringt.
Wenn beispielsweise viele große Pakete
gegensinnig sind, konzentriert sich der Steuerprozessor auf die
möglichst
schnelle Verarbeitung des aktuellen Pakets, aber wenn es einige
kleine Pakete gibt, die in Warteschlange gestellt sind, wird er das
vorherige Abrufen der Steuer-Informationen betonen, da dies der
wahrscheinliche Verarbeitungsengpass sein wird.
-
Unter gewissen Bedingungen kann der
Prozessor entscheiden, den nächsten
Satz Kontext- und Schlüssel-Informationen
nicht vorher abzurufen, und in gewissen Fällen wird er diese Informationen
vorher abrufen. Beispielsweise kann der Prozessor entscheiden, in
den folgenden beiden Szenarien nicht vorher abzurufen:
- 1) Wenn der Systembus derzeit schwer mit Verarbeitungsdaten
vom aktuellen Paket beladen ist (beispielsweise mit dem Zurückschreiben
verarbeiteter Zellen), würde
der Steuerprozessor alle weiteren Anfragen zum vorherigen Abrufen
verzögern,
um ein Überlasten
des Systembusses zu vermeiden, bis der Systembus zur Verfügung steht;
- 2) Wenn der Steuerprozessor selbst damit beschäftigt ist,
Steuer-Informationen für
das aktuelle Paket zu verarbeiten, wie das Abrufen neuer Zellen
für das
aktuelle Paket, dann verzögert
der Steuerprozessor das vorherige Abrufen des nächsten Satzes von Paketen und
zugehöriger Steuer-Informationen.
-
Da der Steuerprozessor über Mikrocodebefehle
programmiert werden kann, kann die Architektur in einer verhältnismäßig kleinen
Chip-Größe im Verhältnis zu
den zu erreichenden Leistungsbereichen implementiert werden, was
ein großer
Vorteile gegenüber
Konkurrenzlösungen
ist. Die Architektur der vorliegenden Erfindung hängt außerdem von dem
Typ der verwendeten Kryptografie-Engines ab, und daher können neue
Algorithmen unterstützt
werden, indem einfach zusätzliche
Kryptografie-Blöcke hinzugefügt werden.
-
Wie in 1 dargestellt,
kann die vorliegende Erfindung als selbständiger Kryptografie-Beschleunigungs-Chip 102 implementiert
werden und in ein Standard-Verarbeitungssystem 100 eingebunden werden.
Der Kryptografie-Beschleunigungs-Chip 102 kann an einen
Standard-PCI-Bus 104 über eine
Standard-PCI-Schnittstelle auf dem Chip angeschlossen werden. Das
Verarbeitungssystem 100 umfasst eine Verarbeitungseinheit 106 und
eine Systemspeichereinheit 108. Die Verarbeitungseinheit 106 und
die Systemspeichereinheit 108 können über eine Brücke und eine Speichersteuerung 110 mit
dem Systembus 104 verbunden werden. Eine LAN-Schnittstelle 114 verbindet
das Verarbeitungssystem 100 mit einem lokalen Netz und
empfängt
Pakete zur Verarbeitung und speichert verarbeitete Pakete ins Netzwerk
ein. Ähnlich
verbindet eine WAN-Schnittstelle 112 das Verarbeitungssystem
mit einem WAN, wie dem Internet, und handhabt ankommende und ausgehende Pakete,
wobei automatische Sicherheitsverarbeitung für IP-Pakete bereit gestellt
wird.
-
2 ist
ein grobes Blockdiagramm der Kryptografie-Chip-Architektur der vorliegenden
Erfindung. Eine Standard-PCI-Schnittstelle 202 bietet eine
Standard-Schnittstelle zum Anschließen des Chips 200 an
externe Systeme. Gemäß dieser
Ausführungsform
ist der PCI-Bus ein 32-Bit-Bus, der bei bis zu 33 MHz arbeitet.
Natürlich
können,
wie im Fach bekannt ist, andere Schnittstellen und Konfigurationen
verwendet werden, ohne von dem Umfang der vorliegenden Erfindung
abzuweichen. Die IP-Pakete werden in einen FIFO (Pufferspeicher
mit Durchlaufprinzip) 204 gelesen, wobei die Pakete zufälliger Länge in Zellen
fester Größe aufgeteilt
werden. Die Zellen fester Größe werden
dann in Nutzzellen-Pufferspeichern 210 über den internen Bus 224 gespeichert.
Kontext-Pufferspeicher 208 speichern "Kontext"-Informationen für die zugehörigen Zellen fester Größe, wie
Verschlüsselungsschlüssel, Daten,
etc. Ein programmierbarer Prozessor 212 steuert das Sequentialisieren
und Verarbeiten der Zellen fester Größe und optimiert die zeitverschachtelte
Verarbeitung. Der Prozessor 212 wird über einen Mikrocode auf dem
Chip programmiert, der in einer Mikrocode-Speichereinheit 214 gespeichert
ist.
-
Die Zellen fester Größe werden
dann zeitverschachtelt von einer der Kryptografie-Engines verarbeitet.
Beispielsweise können
die Kryptografie-Engines " 3DES-CBC/DES
X"-Verschlüsselung/Entschlüsselung 216, "MD5/SHA1"-Authentifizierung/digitale
Signaturverarbeitung 218 und Kompressions-/Dekompressionsverarbeitung 220 umfassen. Es
ist zu beachten, dass die gegenwärtige
Architektur vom Typ der ausgeführten
Kryptografie-Verarbeitung
unabhängig
ist, und zusätzliche
Kryptogtafie-Engines können
eingebunden werden, um andere gegenwärtige oder zukünftige Kryptogtafie-Algorithmen 222 zu
unterstützen.
Die Ausgabe-Zellen werden dann in einem Ausgabe-FIFO 206 gespeichert, um
die Pakete über
den PCI-Bus in das System zurück
zu schreiben.
-
Wie zuvor besprochen, wandelt die
vorliegende Architektur Pakete zufälliger Länge in Zellen fester Größe, um die
zeitverschachtelte Verarbeitung zu erleichtern. Diese Umwandlung
wird in 3 dargestellt.
Nachdem ein IP-Paket zufälliger
Länge vom System
erhalten worden ist, wird das Paket in mehrere Zellen fester Größe (oder
eine Zelle, wenn das Paket kleiner als die Standard-Zelle fester
Größe ist) umgewandelt.
Da die Zellen eine gleichmäßige Größe besitzen,
kann der Verarbeitungsfluss so ausgelegt sein, dass der Durchsatz
des Systems maximiert wird, indem zeitverschachtelte Verarbeitungstechniken,
wie vorheriges Abrufen, eingebunden werden. Wenn ein IP-Paket kleiner
als die Standardzelle fester Größe ist,
wird das Paket in eine einzelne Zelle fester Größe umgewandelt und verarbeitet.
Der Schritt des "Wiedervereinigens" umfasst in diesem Fall
einfach das Umwandeln der einzelnen Zelle zurück in ein IP-Paket.
-
Eine erste Ausführungsform der vorliegenden
Erfindung ist ausführlicher
in 4 dargestellt. Ein
IPSec-Kryptografie-Beschleunigungs-Chip 400, der gemäß der vorliegenden
Erfindung ausgebildet ist, liest und schreibt Daten über eine
PCI-Schnittstelle 402 in das System. Jedes ankommende Paket
wird in Zellen fester Größe durch
einen datenausrichtenden Bitstellenverschieber 404 unterteilt,
wobei jede Zelle in dieser Implementierung 64 Bytes umfasst. Der
datenausrichtende Bitstellenverschieber 404 dient als eine
Paket-Aufteilungseinheit, um die ankommenden Pakete in Zellen fester
Größe zu teilen. Die
ankommenden Pakete können
auch über
den gesamten Speicher gestreut sein (z.B. Fragmentierung), und der
datenausrichtenden Bittstellenverschieber 404 setzt diese
Stücke
wieder zusammen und stellt als Ausgabe 64-Byte-Zellen fester Größe her.
-
Die Größe jeder Zelle kann größer oder
kleiner sein, abhängig
von den Kosten- und Leistungsanforderungen für eine gegebene Implementierung.
Außerdem
können
andere Techniken angewandt werden, die im Fach bekannt sind, um
die ankommenden Pakete zu unterteilen, ohne vom Umfang der vorliegenden
Erfindung abzuweichen. Die Wahl von 64-Byte-Zellen fester Größe ist ein Ausführungskompromiss
zwischen der Menge von Speicher, die auf dem Chip benötigt wird,
und der Höhe
der Leistung, die mit Zellen größerer Größe erreicht
werden kann. Für
das derzeitige Kosten-Leistungsverhältnis ist eine Zellengröße von 64-Byte
ein guter Kompromiss. Außerdem
ist eine Zellengröße von 64-Byte
eine gute Anpassung für
die Größenanforderungen
einiger Kryptografie-Algorithmen, insbesondere MD5/SHA1, der 64-Byte-Informationseinheiten
bevorzugt.
-
Wird ein ankommendes Paket unterteilt,
werden die Zellen fester Größe in FIFO-Pufferspeichern 406, 408 gespeichert
und warten auf die Verarbeitung durch die Kryptografie-Engines 410, 414.
Die für die
Verarbeitung des aktuellen Pakets benötigten Kontext-Informationen werden
auch eingelesen und im Vorabruf-Pufferspeicher für Kontext 420 gespeichert.
Diese Implementierung ist so ausgelegt, dass sie IETF-IPSec-Verschlüsselung
und Authentifizierungs-Beschleunigung nach Industrie-Standard bereit
stellt und daher nur zwei Kryptografie-Engines umfasst. Eine "3DES-CBC"-Einheit 410 gehört dazu, um
Verschlüsselung
und Entschlüsselung
der ankommenden Pakete bereit zu stellen, und eine "MD5/SHA1"-Einheit 414 bietet
Authentifizierung und digitale Signaturverarbeitung. Für ankommende
Pakete werden die Zellen zuerst authentifiziert und dann auf parallele
Weise entschlüsselt.
Für ausgehende Pakete
werden die Zellen zuerst verschlüsselt
und dann authentifiziert, wieder auf zeitverschachtelte Weise. Die
Verarbeitungseinheiten 410, 414 verarbeiten die
Zellen in den FIFOs 406, 408 unter Verwendung
der aktuellen Paket-Kontext-Informationen, die in dem aktuellen
Kontext-Pufferspeicher 422 gespeichert sind.
-
Die Ausgaben der Verarbeitungseinheiten 410, 414 werden
in den Ausgabe-FIFOs 412, 416 gespeichert, bis
die Daten über
die PCI-Schnittstelle 402 in den Systemspeicher zurück geschrieben
werden können.
Das in eine logische Reihenfolge bringen der Datenverarbeitung und
das vorherige Abrufen werden von der Mikrosteuerung 418 gesteuert, und
der Programmcode (nachfolgend beschrieben) gewährleistet, dass die Kryptografie-Engines
durchgängig
mit Zellen und Kontext-Informationen versorgt werden. Da die Kryptografie-Einheiten nicht warten müssen, während ganze
Pakete unterschiedlicher Größen vom
Systemspeicher eingelesen werden, erhöht dieses Verfahren den Durchsatz
des Chips, im Vergleich zu Ausführungen
des Stands der Technik. Für
diese Grundausführung
mit einer internen Taktrate von 60 MHz beträgt der Engine-Durchsatz ungefähr 195 MB/s
bei eingeschalteter 3DES-Verschlüsselung
und MD5/SHA1-Authentifizierung.
-
Diese Implementierung ist für eine Vielzahl kostenempfindlicher
Anwendungen, wie Kabelmodems, xDSL-Dienste, Sicherheits-Gateways
und PC-basierte Sicherheits-Beschleuniger geeignet. Da die vorliegende
Erfindung keinen externen Speicher erfordert, sind die Kosten wesentlich
geringer als bei Konkurrenzausführungen,
die einen externen Speicher erfordern. Außerdem haben Tests ergeben, dass
die volle Leistung unabhängig
von irgend einer angemessenen Latenzzeit des PCI-Busses erhalten werden
kann, da die Daten lange vorher abgerufen werden, bevor sie für die interne
Verarbeitung benötigt
werden.
-
Die Schnittstelle zwischen dem Kryptografie-Beschleunigungs-Chip
und der Host-CPU-Software bietet unabhängigen Software-Betrieb über eine
intelligente, Beschreiber-basierte Direktspeicherzugriffs-Schnittstelle,
welche die Software-Verarbeitungslast minimiert. Insbesondere wird
das Kopieren von Paketdaten unter allen Bedingungen vermieden. Die
Eingangspaket-Fragmentierung wird unterstützt (auf IP-Ebene, sowie hinsichtlich
der Speicherzuordnung für
die Paketdaten), und die Eingangs-Fragmente können von beliebiger Größe sein (bis
zu einem Byte klein) und können
an einer beliebigen Byte-Grenze ausgerichtet werden. Ausgangs-Paket-Fragmentierung
(auf IP-Ebene, sowie hinsichtlich der Speicherzuordnung für Paketdaten) wird
auch unterstützt.
Die Ausgangs-Fragmentgröße kann
auf eine der beiden konfigurierbaren Arten gesteuert werden: Durch
ein Längenfeld
mit jedem Ausgangsdaten-Beschreiber oder durch ein globales Ausgangsdaten-Pufferspeicher-Längenfeld.
Dies bietet die Flexibilität,
ein ausgehendes Fragment fester Größe zu verwenden oder die Fragmentgröße pro Paket
fest zu legen. In der vorliegenden Ausführungsform müssen die
ausgehenden Fragmente an 32-Bit-Wortgrenzen ausgerichtet werden
und in Bezug auf die Größe Vielfache
eines 32-Bit-Worts sein.
-
Die Host-CPU stellt eine beliebige
Anzahl von Paketen im Systemspeicher in Warteschlange und reicht
einen Zeiger an eine Master-Befehlsstruktur weiter, die diese Pakete
für den
Beschleunigungs-Chip identifiziert. Der Master-Befehlseintrag wird
verwendet, um eine Anzahl von Paketen an den Chip zur Verarbeitung
weiter zu reichen. Die Struktur ist von veränderbarer Länge und enthält bis zu
216–1 Sätze Felder,
wobei jedes Feld ein Paket beschreibt. Dieses Maß an Flexibilität erlaubt,
dass die Host-CPU eine beliebige Anzahl Pakete in Warteschlange
stellt und die Hardware-Verarbeitung aller in Warteschlange gestellten
Pakete über
eine einzige PCI-Schreibopexation
eingeleitet wird. Der Beschleunigungs-Chip verarbeitet dann alle
Pakete wie spezifiziert, gibt Status-Informationen über einen "Erledigt"-Merker und, wenn
eingeschaltet, über
eine Unterbrechung pro Paket oder bei globaler Beendigung aller
Pakete innerhalb einer Master-Befehlsstruktur zurück an die
CPU.
-
Jedem Paket im Master-Befehlseintrag
wird eine einzigartige Verarbeitungs-Kontextstruktur zugewiesen,
die ermöglicht,
dass verschiedene Pakete unterschiedlich verarbeitet werden, obwohl
sie alle Teil einer gemeinsamen Master-Befehlsstruktur sind. Außerdem können Daten
von jedem Paket beim Eingang (Unterstützung der "Erfassen"-Funktion) und beim Ausgang (Unterstützung der "Streuen"-Funktion) fragmentiert
werden.
-
Eine zweite Ausführungsform der vorliegenden
Erfindung ist in 5 dargestellt.
Diese Ausführungsform
ist der Ausführungsform
von 4 ähnlich,
außer,
dass sie auch eine DH (Diffie-Hellman)/RSA/DAS-Einheit 506 und
eine Zufallszahlengenerator-Einheit 508 umfasst, um die
Verarbeitung von öffentlichen
Schlüsseln
zu ermöglichen.
Mit einem Systemtakt von 75 MHz beträgt der Engine-Durchsatz in
dieser Ausführungsform über 400 Mb/s,
bei eingeschalteter 3DES-Verschlüsselung und
MD5/SHA1-Authentifizierung. In dieser Ausführungsform ist der PCI-Bus
ein 64-Bit-Bus, der bei bis zu 66 MHz arbeitet. Es ist zu beachten,
dass die Geschwindigkeit des PCI-Bustakts (33 MHz gegenüber 66 MHz)
und die Buslatenzzeit eine sehr geringe Auswirkung auf die Leistung
der vorliegenden Erfindung haben, da die Beschleunigungs-Chips Beschreiber,
Befehls-Pufferspeicher, Kontext-Parameter und Paketdaten aggressiv
vorher abrufen und zurück
schreiben. Dies ermöglicht
die Beschleunigungs-Chips,
die Kryptografie- und Authentifizierungs-Engines trotz anderer Systemlatenzzeiten
bei voller Leistungsfähigkeit
laufen zu lassen.
-
Die Ausführungseinheit für Schlüsseleinrichtung 506 beschleunigt
die öffentlichen
Schlüsseloperationen,
und die Zufallszahlengeneratox-Einheit 508 erzeugt sichere
private Schlüssel.
-
Außerdem hat ein Registerblock 504 1024-Bit-Registerdateien,
um die großen öffentlichen Schlüsseldaten
zu behalten, die bei der Verarbeitung öffentlicher Schlüssel verwendet
werden. Obgleich nicht in 5 dargestellt,
umfasst diese Ausführungsform
die FIFOs und den Bitstellenvexschieber, die mit Verweis auf 4 beschrieben werden. Zusätzlich zu
den dargestellten Kryptografie-Einheiten kann jeder andere gegenwärtige oder
zukünftige
Algorithmus unter Anwendung ähnlicher
Techniken verwendet werden.
-
Die Ausführungsform von 5 erzeugt SSL-Sitzungsschlüssel unter
Verwendung von RSA in folgenden Stufen:
- 1.
Abrufen des Befehlskontexts, umfassend Schlüssel und Nachricht durch eine
Direktspeichexzugriffs-Schnittstelle
- 2. Wenn es sich bei der erforderlichen Operation um die Verschlüsselung
eines privaten Schlüssels handelt,
Verwendung des RSA-Algorithmus' des privaten
Schlüssels
mit vorberechneten Komponenten, die unter Verwendung des Chinesischen Restsatzes
erzeugt wurden
- 3. Wenn es sich bei der erforderlichen Operation um die Verschlüsselung
eines öffentlichen Schlüssels handelt,
Verwendung des öffentlichen RSA-Algorithmus'
- 4. Schreiben der entschlüsselten/verschlüsselten Nachricht
in den Ausgabe-Pufferspeicher.
-
Alternativ erzeugt die zweite Ausführungsform
Schlüssel
unter Verwendung des Diffie-Hellman-Algorithmus' für
eine IPSec-Sitzung während
eines IKE-Quittungsaustauschs gemäß folgenden Stufen:
- 1. Abrufen des Befehlskontexts und der Nachricht durch
eine Dixektspeicherzugriffs-Schnittstelle
- 2. Wenn die erforderliche Operation ist, eine Nachricht an eine
andere Partei zu erzeugen (g* mod n), Erzeugen einer 180-Bit Zufallszahl
von der Zufallszahlengenerator-Einheit 508, und danach
das Ausführen
der modularen Exponentiation mit der erzeugten Zufallszahl als Exponent
- 3. Wenn die erforderliche Operation ist, den geteilten Schlüssel von
der empfangenen Nachricht (Y* mod n) zu erzeugen, Ausführen der
modularen Exponentiation mit einer zuvor erzeugten Zufallszahl (die
Zufallszahl wird ein Teil des Befehlskontexts durch die Direktspeicherzugriffs-Schnittstelle
sein)
- 4. Schreiben der Ausgabe mit der Zufallszahl, gegebenenfalls
in den Ausgabe-Pufferspeicher.
-
Authentifizierung unter Verwendung
des DSA-Algortihmus' für eine IPSec-Sitzung,
während ein
IKE-Quittungsaustausch ausgeführt
wird, in folgenden Stufen:
- 1. Abrufen des Befehlskontexts
und der Nachricht durch eine Direktspeicherzugriffs-Schnittstelle
- 2. Wenn die erforderliche Operation ist, eine Nachricht zu signieren,
Erzeugen einer Zufallszahl und Berechnen von "r"-
und "s"-Werten unter Verwendung
der Ausführungseinheiten
für SHA1 512 und
Schlüsseleinrichtung 506.
- 3. Wenn die erforderliche Operation ist, eine Signatur zu verifizieren,
Berechnen des "v"-Werts unter Verwendung der Ausführungseinheiten
für SHA1 512 und
Schlüsseleinrichtung 506.
- 4. Schreiben der Ausgabe in den Ausgabe-Pufferspeicher.
-
6 stellt
eine grobe Ansicht der Paket-Verarbeitung gemäß der vorliegenden Erfindung dar.
Man beachte, dass viele Sätze
von Eingabe-Paketen über
einen einzigen Befehls-Beschreiber (d.h. eine einzige PCI-Schreiboperation)
spezifiziert werden können.
IPSec-Pakete werden in folgenden Stufen verarbeitet:
- 1. Abrufen des Befehlskontexts und der Daten über Beschreiber
- 2. Wenn ein Paket ankommt, Authentifizieren und dann Entschlüsseln der
Zellen auf parallele Weise
- 3. Wenn ein Paket ausgeht, Verschlüsseln und dann Authentifizieren
der Zellen in zeitverschachtelter Weise
- 4. Schreiben (über
Beschreiber) der Ausgabedaten und gegebenenfalls der Authentifizierungs-Codes.
-
Die Abrufphasen für den Befehl, den Daten-Beschreiber,
die Paketdaten und die Kontextdaten finden vollständig überlappend
mit der Engine-Verarbeitung statt. Das Zurückschreiben der ausgehenden
Paketdaten findet ebenfalls vollständig überlappend statt.
-
Nachfolgend wird nun die Verarbeitungssequenz-Steuerung
für die
erste Ausführungsform
der vorliegenden Erfindung ausführlicher
mit Bezug auf die 7(A)–7(D) beschrieben. Die Verarbeitung
ist so ausgelegt, dass der gesamte Chip-Durchsatz durch zeitverschachtelte
Verarbeitung der verschiedenen Funktionen maximiert wird.
-
Das in 7(A)–7(D) offenbarte Verfahren stellt
nur eine Möglichkeit
der Implementierung der vorliegenden Erfindung dar, wobei Abänderungen der
offenbarten Prozedur Fachmännern
leicht ersichtlich sein werden. Die zusätzlichen Verarbeitungsverfahren,
die für
die Implementierung der zweiten Ausführungsform notwendig sind,
wurden zuvor mit Bezug auf die Verarbeitungsschritte für öffentliche
Schlüssel
beschrieben.
-
Die Verarbeitungs-Sequenzsteuerung
beginnt bei Schritt 2 durch Abrufen einer neuen Zelle (N).
Mit anderen Worten wird eine neue Zelle vorher abgerufen, in einem
Pufferspeicher gespeichert und in die "Pipeline" gestellt. Nachdem die Verarbeitung der
voran gehenden Zelle (N–1)
bei Schritt 4 abgeschlossen worden ist, wird die neue Zelle
(In bei Schritt 6 in die 3DES-Kryptografie-Einheit und die MD5/SHA1-Authentifizierungs-Einheit
geladen. Wenn es mehr als zwei ausstehende PCI-Schreiboperationen
gibt, wird mit der Verarbeitung gewartet, bis nur zwei oder weniger
PCI-Schreiboperationen übrig
sind, um (Schritt 8) auszuführen. Dies gewährleistet,
dass die Kryptografie-Engines nicht den PCI-Bus und das Systems
hinsichtlich ihrer Leistungsfähigkeit
bei der Handhabung der Ausgabe hinter sich lassen. Abhängig von
dem System kann die Anzahl der ausstehenden PCI-Schreiboperationen so
angepasst werden, dass sie zu den Leistungsergebnissen eines bestimmten
Systems, einer Schnittstelle oder einer Bus-Ausführung
passt.
-
Die Kryptografie-Verarbeitung und
die Authentifizierungs-Verarbeitung werden dann in den Schritten 10–16 parallel
ausgeführt.
Zuerst wird die Kryptografie-Verarbeitung für die aktuelle Zelle (In bei
Schritt 10 gestartet, und dann wird bei Schritt 12 eine
PCI-Schreiboperation für
die voran gegangene Zelle (N–1),
deren Verarbeitung gerade abgeschlossen worden ist, in Warteschlange
gestellt. Unterdessen wird die Authentifizierungs-Verarbeitung verzögert, wenn
zwei PCI-Schreiboperationen ausstehen (Schritt 14). Dann
wird bei Schritt 16 die Authentifizierungs-Verarbeitung
für die
aktuelle Zelle (In gestartet. Wird die Authentifizierung für das Paket
nun mit der Verarbeitung der letzten Zelle (Schritt 18)
abgeschlossen, wird der äußere HMAC-Status
geschrieben und die äußere Authentifizierungs-Verarbeitung gestartet
(Schritt 20). Wie im Fach bekannt ist, verwenden Hashed
Message Authentication Codes (HMAC) geheime Schlüssel, um jemanden davon abzuhalten,
die Daten zu ändern
und das Paket zu signieren. Da die Authentifizierungs-Algorithmen öffentlich
bekannt sind, können
die HMAC-Codes verwendet werden, um eine größere Paket-Sicherheit zu bieten.
-
Wenn die Authentifizierungs-Ausgabe
fertig ist (Schritt 22), wird bei Schritt 24 eine
neue PCI-Schreiboperation
in Warteschlange gestellt. Wenn jedoch die aktuelle Zelle die erste
Zelle, ist, die in die Authentifizierungs-Einheit gelangt (Schritt 26), wird
ein innerer HMAC-Status geschrieben, und die innere Authentifizierung
wird gestartet (Schritt 28). Wenn das Vorabrufen der nächsten Zelle
begonnen worden ist, wird der innere HMAC-Status geschrieben und
die innere Authentifizierung begonnen (Schritt 32), ansonsten
springt die Verarbeitung auf "D" in 7(C). Nach der inneren HMAC-Schreiboperation
kehrt die Prozess-Steuerung zu "C" in 7(A) zurück, beginnend mit Schritt 4.
-
Bei Schritt 34 erfolgt die
Bestimmung, ob die nächste
Zelle Teil des gleichen Pakets ist, wie die aktuelle Zelle. Wenn
sie es ist, wird die nächste
Zelle (N+1) vorher abgerufen (Schritt 36), und nachdem das
vorherige Abrufen beendet worden ist (Schritt 38) kehrt
die Verarbeitung zu "C" in 7(A) zurück. Wenn jedoch die nächste Zelle
nicht Teil des aktuellen Pakets ist (d.h. die Verarbeitung des aktuellen
Pakets ist beendet worden), erfolgt bei Schritt 40 die
Bestimmung, ob die Pakete Teil des gleichen Master-Befehlseintrags
(MCR) sind. Wie zuvor besprochen, kann das System mehrere Pakete
in einen einzigen MCR packen, um die Systemverwaltungszeit herab
zu setzen, indem ermöglicht
wird, dass mehrere Pakete über
eine einzige PCI-Schreiboperation verarbeitet werden. Wenn die Pakete
vom gleichen MCR sind, so wird der Kontext für das nächste Paket abgerufen (Schritt 44).
Wenn die Pakete jedoch von unterschiedlichen MCRs sind, werden die
Kryptografie- und Authentifizierungsblöcke zuerst geleert, die Ausgaben
geschrieben und die MCR-Statusflaggen aktualisiert (Schritt 42),
bevor der Kontext für
das nächste
Paket erhalten wird.
-
Die erste Zelle des neuen Pakets
wird bei Schritt 46 vorabgerufen. Nachdem die Kryptografie- und die Authentifizierungs-Verarbeitung
für die
letzte Zelle des aktuellen Pakets beendet worden sind (Schritt 48),
werden die Kryptografie- und die Authentifizierungs-Verarbeitungsmodi
geändert
(Schritt 50), wie von dem neuen Kontext vorgegeben. Die
ursprünglichen
Zustände
werden geladen (Schritt 52), und die Ausgabe-Beschreiber
des vorherigen Pakets werden dann gespeichert (Schritt 54).
Die Verarbeitung kehrt dann zu "A" in 7(A) zurück, und die gesamte Prozedur
wird fortgeführt,
bis es keine Pakete mehr zu verarbeiten gibt.
-
Wie beschrieben, ist die Verarbeitungs-Sequenzsteuerung
in hohem Maße
zeitverschachtelt, mit überlappender
Ausführung
verschiedener Funktionen. Die Tatsache, dass die Pakete in Zellen
fester Größe aufgeteilt
werden, ermöglicht
eine sehr effiziente Steuersequenz-Verarbeitung. Somit bietet die vorliegende
Erfindung einen größeren Durchsatz,
als Ausführungen
des Stands der Technik. Wie in 8 dargestellt,
besitzt beispielsweise die erste Ausführungsform der zuvor beschriebenen
vorliegenden Erfindung (uBSecTM 5501 bei
60 MHz) einen wesentlich größeren Durchsatz,
als eine vergleichbare Ausführung
des Stands der Technik (Hi/fn TM 7751 bei 66 MHz). Die vorliegende
Erfindung ist nicht nur schneller, sondern sie ist in der Lage,
die Leistungssteigerung ohne einen zusätzlich beigefügten Speicher,
wie es bei dem Chip Hi/fnTM erforderlich
ist, zu erreichen.
-
Fachmänner werden schätzen, dass
verschiedene Anpassungen und Abänderungen
der gerade beschriebenen bevorzugten Ausführungsformen konfiguriert werden
können.
Beispielsweise können
andere Kryptografie-Engines verwendet werden, andere Systemschnittstellen-Konfigurationen verwendet
werden oder Abänderungen
hinsichtlich der Verarbeitungsprozedur der Zelle vorgenommen werden.