DE60036499T2 - Eine Technik, um einen Parameter, wie z.b. eine Prüfsumme, durch ein Primitiv zu erzeugen, welche elementare Register-Operationen verwendet - Google Patents

Eine Technik, um einen Parameter, wie z.b. eine Prüfsumme, durch ein Primitiv zu erzeugen, welche elementare Register-Operationen verwendet Download PDF

Info

Publication number
DE60036499T2
DE60036499T2 DE60036499T DE60036499T DE60036499T2 DE 60036499 T2 DE60036499 T2 DE 60036499T2 DE 60036499 T DE60036499 T DE 60036499T DE 60036499 T DE60036499 T DE 60036499T DE 60036499 T2 DE60036499 T2 DE 60036499T2
Authority
DE
Germany
Prior art keywords
parameter
predefined
mod
primitive
generating
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
DE60036499T
Other languages
English (en)
Other versions
DE60036499D1 (de
Inventor
Ramarathnam Redmond Venkatesan
Mariusz H. Bellevue Jakubowski
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE60036499D1 publication Critical patent/DE60036499D1/de
Publication of DE60036499T2 publication Critical patent/DE60036499T2/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Logic Circuits (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Diese Erfindung betrifft eine Technik zum Implementieren eines Primitivs zum Berechnen von beispielsweise einer Prüfsumme. Vorteilhafterweise ist diese Technik relativ einfach und verwendet relativ elementare Register-Operationen, wodurch in signifikanter Weise Verarbeitungszeit im Vergleich zu derjenigen gespart wird, die benötigt wird, um zum Beispiel einen Nachrichten-Authentifikationscode (message authentication code, MAC) zu berechnen oder eine Strom-Chiffre zu implementieren.
  • Viele verschiedene kryptografische Techniken, die derzeit verwendet werden, setzen heutzutage mathematische Funktionen ein, welche modulare Arithmetik einschließen, wobei typischerweise ein Rest einer Zahl im Hinblick auf eine relativ große Primzahl (M) berechnet wird, wie zum Beispiel 231 – 1 oder größer. Ein illustratives Beispiel einer solchen Funktion, f(x) wäre von der Form f(x) = a x + b mod(M) in einem Galois-Feld (GF) über 2n, wobei n = 2 m + 1 und n und m vordefinierte ganze Zahlen im Feld Z (modM) sind. Während die Funktionen selbst stark von einer Technik zur anderen variieren, benötigen sie im Allgemeinen die Berechnung einer mod(M) Operation der einen oder anderen Form und üblicherweise auf einer hoch repetitiven Basis.
  • Solche modularen Operationen werden nicht nur zum Chiffrieren eines jeden und von allen Blöcken eines Klartexts in einer Nachricht verwendet, um einen korrespondierenden Chiffretextblock zu ergeben und den letztgenannten zu Dechiffrieren, um den assoziierten Klartext-Block zurückzugewinnen, sondern auch bei der Berechnung von zwischenliegenden Anteilen der Technik, wie zum Beispiel einen Nachrichten-Authentifikationscode (MAC) oder einer Stromchiffre.
  • Die Durchführung einer einzelnen mod(M)-Operation kann Verarbeitungszyklen von 10 bis 15 nötig machen, falls nicht noch mehr (basierend auf dem Wert eines Mo dulus, M). Da eine kryptografische Technik eine große Anzahl von solchen Operationen benötigt, kann eine signifikante Menge der Verarbeitungs-Zeit, assoziiert mit dem Einsatz dieser Technik, einfach durch Berechnen von mod(M) Operationen verbraucht werden.
  • Kryptografische Techniken finden in zunehmendem Maße Anwendung, um Informationen in einer breiten sich ausdehnenden Vielfalt von hochdiversiven Anwendungen zu schützen, wie auch in einem sich ausdehnendem Feld von Geräten, von hoch ausgefeilten Mehrzweck-Geräten, wie zum Beispiel Personal-Computern und Arbeitsstationen (Workstations), bis hin zu relativ einfachen fest zugeordneten Geräten wie zum Beispiel „Chip-Karten", Fernbedienungen und elektronische Apparaten.
  • Beispielsweise im Hinblick auf die einfache und wenig kostende Kommunikation durch elektronische Mails, erfährt das Internet (neben andere Netzwerk-Modalitäten) ein explosives und exponentielles Wachstum als ein bevorzugtes Kommunikationsmedium. Jedoch ist das Internet als ein öffentlich zugängliches Netzwerk nicht sicher und war in der Vergangenheit und bleibt in zunehmendem Maße ein Ziel einer breiten Vielfalt von Angriffen von verschiedenen Individuen und Organisationen, die darauf bedacht sind zu spionieren, Informationen abzufangen und/oder in irgendeiner anderen Weise den Nachrichten-Verkehr zu beeinträchtigen oder sogar zu schädigen oder unerlaubterweise in Internet-Seiten einzudringen. Diese Sicherheits-Bedrohung erschwert im Hinblick auf eine sich vergrößernde Verlässlichkeit, welche in das Internet als bevorzugtes Medium der Kommunikation gesetzt wird, die Bemühungen auf dem Gebiet, wachsend starke kryptografische Techniken zu entwickeln, welche erhöhte Stufen der Sicherheit der elektronischen Kommunikation zur Verfügung zu stellen, beispielsweise für Mail-Nachrichten, Daten und Computer-Dateien, und zwar gegen das Spionieren von dritten Parteien, das Abfangen und das mögliche unbefugte Hantieren damit. Als eine Konsequenz wird kryptokrafische Verarbeitung in ein sich vergrößerndes Feld an Computersoftware eingearbeitet, insbesondere in Web-Browser und andere Betriebsystem-Komponenten sowie elektronische Mail-Programme und andere Anwendungs-Programme, um eine sichere Internetverbindung zur Verfügung zu stellen.
  • Eine gänzlich andersartige kryptografische Anwendung involviert sogenannte „Chip-Karten" („smart-cards"). Hier speichert ein bestimmtes Kredit-Karten großes Hilfsmittel, welches einen ziemlich primitiven und billigen Mikroprozessor einsetzt, d.h. eine „Chip-Karte", Bank- und/oder andere finanzielle Bilanzen für ein korrespondierendes Individuum. Der Mikroprozessor kann unter Verwendung eines Programms, welches intern auf der Karte gespeichert ist, eine Transaktion validieren und in geeigneter Art und Weise jede solcher Bilanzen basierend auf der Transaktion verändern. Im Einzelnen kann dieses Individuum eine elektronische Transaktion mit einer anderen Partei aufrufen, beispielsweise einem Verkäufer oder einer Bank und zwar durch Einführen der Karte in einen geeigneten Daten-Terminal und durch Eingabe der Transaktions-Daten in eine Tastatur assoziiert mit dem Terminal, um das gesamte oder einen Teil eines Kontos gespeichert auf de Karte abzubuchen und/oder darauf etwas gutzuschreiben. Transaktionen nach dieser Art und Weise stellen einen augenblicklichen Geld-Transfer zur Verfügung, wobei sie gleichzeitig jeglichen Bedarf nach sowie Kosten assoziiert mit der Verarbeitung von Papierbargeld oder papierbasierten monetären Instrumenten eliminieren, beispielsweise von Schecks. Das gespeicherte Programm setzt extrem starke kryptografische Techniken ein, um die Informationen gespeichert auf der Karte zu schützen, beispielsweise die Konten gegen unerlaubten Zugriff bzw. Manipulation von dritten Parteien.
  • Denning, D.: „Cryptography and data security", 1982 offenbart, wie Eingabe-Blöcke von Klartexten unter Verwendung einer affinen Transformation verarbeitet werden.
  • Schneider, B.: „Applied cryptography", Oktober 1995 offenbart Primitive für die Erzeugung eines kryptografischen Parameters aus einer Vielzahl von sukzessiven Blöcken. Insbesondere von unumkehrbare Prüf-Funktionen, welche symmetrische Blockalgorithmen verwenden sowie Nachrichten-Authentifikationscodes werden beschrieben.
  • Bosselaers, A. et al.: „Comparison of three modular reduction functions", CRYPTO '93, 1994, Seiten 175 bis 186 offenbart drei modulare Reduktions-Algorithmen für große, ganze Zahlen und vergleicht sie im Hinblick auf die zu erwartenden Ausführungs-Zeiten.
  • Jedoch bringt, wie oben erwähnt, Kryptografie Verarbeitungs-Aufwand mit sich. Während in hochentwickelten Geräten mit signifikanter Verarbeitungskapazität, wie zum Beispiel PC und Arbeitsstationen, die Belastung den Durchsatz durch das ganze System reduziert, kann die Belastung in anderen Geräten mit relativ begrenzter Verarbeitungskapazität, wie zum Beispiel Chip-Karten, Fernbedienungen und anderen „einfachen" Geräten nicht-tolerabel bis zu dem Punkt sein, dass die Verwendung von hinreichend starken kryptografischen Techniken in solchen Geräten ausgeschlossen ist. Folglich existiert, berücksichtigt man das rasche und offensichtlich stets zunehmende Bedürfnis auf dem Gebiet, kryptografische Techniken in eine große Vielzahl von Geräten einzubringen, insbesondere in diejenigen mit limitiertem Verarbeitungspotential, derzeit ein Bedürfnis auf dem Gebiet, die Verarbeitungszeit benötigt um kryptografische Techniken zu implementieren zu reduzieren.
  • Es ist die Aufgabe der vorliegenden Erfindung ein Verfahren und eine Vorrichtung zum Erzeugen eines Parameters aus einer Vielzahl von sukzessiven Blöcken aus Klartext zu erzeugen, während die Verarbeitungszeit auf Grund von modularen Berechnungen reduziert wird. Diese Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
  • Insbesondere Verarbeitungs-Aufwand assoziiert mit bestimmten kryptografischen Techniken, insbesondere das Berechnen einer Prüfsumme, kann scharf reduziert werden, falls eine mod(M) Operation trotz weniger Prozessor-intensiver Verarbeitung(en) durch ein Äquivalent ersetzt werden könnte. Falls dieses Ergebnis erzielt werden könnte, könnte dann der gesamte Durchsatz von hoch entwickelten Geräten, wie zum Beispiel Personalcomputern und Arbeitsstationen, welche verschiedene kryptografische Techniken einsetzen, in vorteilhafter Art und Weise vergrößert werden. Des weiteren könnten, falls solch eine Belastung reduziert werden könnte, dann starke kryptografische Techniken in eine Vielzahl von Computer-verwandten Geräten eingebracht werden, welche bislang unzureichendes Verarbeitungspotential aufwiesen, um in adäquater Art und Weise solche Techniken zu unterstützen.
  • In vorteilhafter Art und Weise erfüllt unsere vorliegende Erfindung dieses Bedürfnis durch Implementation eines Primitivs zum Berechnen einer Prüfsumme, aber in vorteilhafter Art und Weise ohne irgendeinen Bedarf für eine mod(M) Operation. In Übereinstimmung mit unseren breiten erfinderischen Lehren, ersetzt dieses Primitiv die mod(M) Operation mit einer Serie von einfachen elementaren Register-Operationen. Diese Operationen schließen mod2n Multiplikationen, Reihenfolge-Manipulation (beispielsweise Byte- oder Word-Swaps) und Additionen ein – wobei all diese extrem einfach zu implementieren sind und sehr wenig Verarbeitungszyklen zur Ausführung benötigen. Die Verwendung von unserer erfinderischen Technik kann in signifikanter Art und Weise die Verarbeitungszeit gegenüber derjenigen reduzieren, welche konventionell benötigt wird, um verschiedene kryptografische Parameter zu berechnen, wie zum Beispiel einen Nachrichten-Authentifikationscode (Message authentication code, MAC) oder um eine Strom-Chiffre zu implementieren.
  • Im speziellen setzt eine elementare, illustrative und nicht umkehrbare Version unserer Technik auf das Berechnen des Primitivs durch die vorgegebene Sequenz von Gleichungen: xS ← Wort-Swap (x) y ← A x + B xS mod(2n) yS ← Wort-Swap (y) z ← C yS + y D mod(2n) θ ← z + yS E mod(2n),wobei die Koeffizienten A, B, C, D und E jeweils eine ungerade zufällige ganze Zahl von kleiner oder gleich 2n darstellen; und θ eine n-Bit Zeichenkette (String) ist.
  • Zur Anwendung bei der Erzeugung eines MAC oder anderer kryptografischer Parameter sind die Koeffizienten „geheim"; jedoch bei der Verwendung, um eine Prüfsumme zu erzeugen, sind diese Koeffizienten öffentlich bekannt.
  • In vorteilhafter Art und Weise weist unsere erfindungsgemäße Technik in ihr Merkmal sowohl umkehrbare als auch nicht-umkehrbare Varianten auf.
  • Die Lehren der vorliegenden Erfindung können leicht verstanden werden, wenn man die folgende detaillierte Beschreibung in Zusammenhang mit den beigefügten Zeichnungen betrachtet, in welchen:
  • 1 ein Blockdiagramm darstellt des gesamten Ende-zu-Ende (end-to-end) kryptografischen-Prozesses 5, welcher die vorliegenden erfinderischen Lehren einsetzt, um in illustrierender Art und Weise einen Nachrichten-Authentifikationscode (MAC) zu erzeugen;
  • 2 ein Blockdiagramm auf hoher Ebene einer typischen internet-basierten zentralen Client-Server Verarbeitungs-Umgebung darstellt, welche in illustrierender Art und Weise die vorliegende Erfindung einsetzt;
  • 3 ein Blockdiagramm eines zentralen Client-Computers 100, gezeigt in 2, darstellt;
  • 4 ein Flussdiagramm des MAC-Erzeugungs-Prozesses 400 auf hoher Ebene darstellt, welcher in Prozess 5 dargestellt in 1 verwendet wird, um ein MAC in Übereinstimmung mit unseren vorliegenden erfindungsgemäßen Lehren zu erzeugen;
  • 5 ein Flussdiagramm auf höchster Ebene einer Alternativ-Berechnungs-Summen-Prozedur 500 darstellt, die an Stelle einer Berechnungs-Summen-Prozedur 430 verwendet wird, welche einen Teil eines MAC-Erzeugungs-Prozesses 400 gezeigt in 4 ausbildet;
  • 6A eine typische Wort-Swap-Operation darstellt, wie sie von unserer vorliegenden Erfindung eingesetzt werden kann; und
  • 6B eine typische Byte-Swap-Operation darstellt, wie sie durch unsere vorliegende Erfindung eingesetzt werden kann.
  • Nur um das Verständnis zu erleichtern, wurden identische Referenz-Nummern verwendet, wo es möglich war, um identische Elemente zu kennzeichnen, welche den Figuren gemeinsam sind.
  • Nach Betrachtung der folgenden Beschreibung werden die Fachleute auf dem Gebiet klar realisieren, dass die Lehren unserer vorliegenden Erfindung in irgendeinem eines breiten Bereiches von kryptografischen Techniken verwendet werden kann, welcher das Berechnen einer Prüfsumme involviert. Solche Techniken sind diejenigen, welche beispielsweise Nachrichten-Authentifikationscodes (MACs) berechnen oder Stromchiffren implementieren.
  • Um das Verständnis des Lesers zu erleichtern, werden wir unsere Erfindung im Kontext seiner Anwendung in solch einer Technik – obwohl relativ verallgemeinert – diskutieren, die eingesetzt werden kann in einer zentralen Client-Server Transaktions-verarbeitenden Umgebung, wo Transaktions-Nachrichten über ein unsicheres Kommunikations-Netzwerk kommuniziert werden müssen, wie zum Beispiel das Internet, und im Speziellen im Zusammenhang des Berechnens eines MAC eingesetzt in dieser Technik.
  • A. Überblick
  • 1 zeigt ein Blockdiagramm des gesamten End-zu-End kryptografischen Prozesses 5, welche einen MAC durch die Anwendung unserer vorliegenden Erfindung erzeugt. Wie dargestellt, wird die eintreffende Klartext-lnformation in einer sogenannten „Nachricht" organisiert. Eine jede solcher Nachrichten 7, dargestellt als P, wird aus N Blöcken (P1, P2, ..., PN) organisiert, wobei jeder Block n Bit an Breite darstellt, wobei hier n aus Illustrationsgründen 32 Bit ist. Jeder solche Klartext-Block wird, wie durch die Zeile 10 symbolisiert, dem Chiffrier(Verschlüsselungs)-Prozess 20 unterzogen. Dieser Prozess schließt aus Gründen der Illustration den Nachricht-Chiffrier-Prozess 23 sowie den erfindungsgemäßen MAC-Erzeugungsprozess 400 ein. Der Prozess 400 (der im Detail und im Zusammenhang mit den 4 und 5 beschrieben werden wird) erzeugt, geht man von einer Klartext-Nachricht, P, aus oder einer geeigneten kryptografischen Manipulation derselben, als Eingabe, in Übereinstimmung mit unserer Erfindung, einen MAC, von typischerweise 64 Bit an Länge, der einzigartig für diese Nachricht ist. Der Nachricht-Chiffrier-Prozess 23 chiffriert die Klartext-Nachricht in einen Zifferntext und insertiert in geeigneter Art und Weise den 64-Bit in die Nachricht, hier aus Gründen der Illustrierung in Form von den 2 höchst-sortierten Blöcken (CN-1; CN) dargestellt (ein Komma trennt die aufeinanderfolgende Werte in Parenthese und wird im Folgenden als ein Operator verwendet, um die Verkettung dieser Werte darzulegen), um die Zifferntextnachricht, C, zu erzeugen. Die beiden höchst-sortierten Blöcke bilden kollektiv den MAC 42 aus. Abhängig von einem spezifischen Chiffrier-Prozess eingesetzt innerhalb von Prozess 23, kann der MAC 42 selbst chiffriert sein, wie zum Beispiel durch eine wohlbekannte DES (Daten Chiffrier-Standart, Data Encryption Standard) Chiffrierung oder eine andere konventionelle pseudozufällige Permutation, oder auch nicht. Die Zifferntext-Nachricht wird ausgebildet aus N sukzessiven n-Bitblöcken an Zifferntext.
  • Die resultierende Zifferntextnachricht C wird dann gespeichert oder übertragen über eine gegebene Modalität, beispielsweise einen unsicheren Kommunikations-Kanal repräsentiert durch die gestrichelte Linie 45 und typifiziert durch eine Internet-Verbindung zu einer Empfängerstation. Hier wird die empfangene Version der Zifferntext-Nachricht, dargestellt als C ~ (auch gelabelt als Nachricht 40'), wie dechiffriert durch den Dechiffrier-Prozess 50, und die wiedergewonnene Klartext-Nachricht 70, auch dargestellt als Klartext-Nachricht P ^ erzeugen, welche, um intakt und folglich geeignet für die Downstream-Anwendung zu sein, identisch in allen Aspekten mit der originalen Klartext-Nachricht P sein muss. Der Dechiffrier-Prozess 50 enthält den Nachrichten-Dechiffrierprozess 60, den MAC Erzeugungsprozess 400 und den Identitäts-Komparator 90.
  • Um zu bestimmen, ob die wiedergewonnene Nachricht intakt ist, beispielsweise nicht verändert wurde, erzeugt der Dechiffrier-Prozess 60 nicht nur den wiedergewonnenen Klartext, sondern extrahiert auch (und dechiffriert, falls notwendig) die MAC aus der Zifferntext-Nachricht C ~. Eine resultierende wiedergewonnene MAC wird, wie symbolisiert durch Zeile 67, einem Input des Komparator 90 zugeführt. Der wiedergewonnene Klartext wird auch wie durch Zeile 77 symbolisiert dem MAC Erzeugungsprozess 400 zugeführt. Der Prozess 400 berechnet die MAC aus der wiedergewonnenen Klartext-Nachricht P ^ erneut und bringt die dargestellte Zeile 80 eine resultierende und wiederberechnete MAC an eine andere Eingabe des Komparator 90. Falls beide dieser MACs dann eingebracht an die korrespondierenden Eingaben des Komparators 90 identisch zusammenpassen, erzeugt dann der Komparator 90 eine geeignete Anzeige bei der Ausgabe 93, um anzuzeigen das die zurückgewonnene Klartext-Nachricht P ^, die dann an der Auswahl-Stelle 73 erscheint, intakt für die weitere Anwendung ist. Andernfalls, wenn der zurückgewonnene und wiederberechnete MAC nicht zusammenpassen, erzeugt der Komparator 90 eine geeignete Anzeige bei der Ausgabe 97, um anzuzeigen, dass die rückgewonnene Klartext-Nachricht P ^, die dann bei der Ausgabe 73 erscheint, ungeeignet ist und ignoriert werden soll. Insofern die spezifische Natur, abgesehen von der Erzeugung eines MACs, der Chiffrierung und Dechiffrierungs-Techniken, die im Chiffrier-Prozess 23 bzw. im Nachrichten-Dechiffrierprozess 60 eingesetzt werden, irrrelevant für die vorliegende Erfindung ist, und irgendeine der großen Vielzahl neuer Techniken erfolgreich eingesetzt werden kann, werden wir diese Aspekte nicht in irgendeinem weiteren Detail diskutieren. Nichts desto trotz beschreiben wir und beanspruchen wir eine solche illustrative kryptografische Technik in unseren gleichzeitig anhängigen US-Patentanmeldungen (auf welche der Leser verwiesen sei) mit dem Titel: "Cryptographic Technique That Provides Fast Encryption and Decryption and Assures Integrity of a Ciphertext Message" eingereicht am 20. April 1998, Seriennummer 09/062,836; und „Method and Apparatus for Producing A Message Authentication Code" eingereicht am 20. April 1998, Seriennummer 09/062,837 – wobei beide dem allgemeinen Rechtsnachfolger hiervon übertragen wurden.
  • B. Illustrative Verarbeitungs-Umgebung
  • Man betrachte – mit dem oben gesagten im Hinterkopf – 2, welche ein Blockdiagramm auf hoher Ebene einer Client-Server Verarbeitungs-Umgebung 200 darstellt, welche Gebrauch macht von der vorliegenden Erfindung.
  • Wie dargestellt enthält diese Umgebung den Computer 205, welcher den Server 210 implementiert, wobei der letztgenannte aus Gründen der Illustration ein Web-Server sei. Eine Vielzahl von individuell entfernten lokalisierten Client-Computern, wobei jeder aus Gründen der Illustration ein Personal Computer (PC) sei, von welchen nur ein solcher Client, d.h. der Client-Computer 100, spezifisch dargestellt ist, ist verknüpft unter Verwendung geeigneter Kommunikations-Kanäle, wie zum Beispiel der Kanäle 140 und 160, durch ein unsicheres Kommunikations-Netzwerk, hier dargestellt als illustratives Internet 150 mit dem Computer 205. Ein Anwender (nicht spezifisch dargestellt) stationiert am Client-Computer 100 begierig, Information vom Server zu erhalten, kann das korrespondierende Client-Programm 130 am Client-Computer aufrufen. Das Client-Programm stellt eines einer Vielzahl der Anwendungsprogramme 120 dar, die kollektiv innerhalb des Client-Computers 100 enthalten sind und von diesem ausgeführt werden. Obwohl das Client-Programm spezifisch als beherbergt innerhalb der Anwendungs-Programme dargestellt ist, kann das zuerst genannte auch als eine Komponente implementiert sein, beispielsweise als ein Web-Browser eines Betriebssystems (O/S), beispielsweise von O/S 337 dargestellt in 3. Der Server 210, dargestellt in 2, kann irgendeine einer großen Vielzahl von Anwendungs-Funktionen implementieren, einschließend beispielsweise einen Handels-Server, einen Bank-Server, einen Server für elektronische Mails oder einen File-Server. Im Falle des elektronischen Handels (ecommerce), kann der Anwender möglicherweise wünschen, eine kommerzielle Transaktion über den Client-Computer 100 und den Server 210 durchzuführen, was das zur Verfügung stellen (wie durch Linie 110 symbolisiert) von Information an den Server, wie zum Beispiel eine Zugangszahl des Anwenders bei einer Finanz-Institution sowie der Zahlungsinstruktionen, um finanzielle Mittel an den Zahlungsempfänger zu transferieren, oder das Erhalten von Informationen (wie symbolisiert durch Linie 35) von dem Server, beispielsweise verfügbare Zugangs- oder Kredit-Konten des Anwenders, welche in jedem Fall vertraulich für diesen Anwender sind, involviert. Alternativ kann der Server 210 ein File-Server sein, welcher dem Anwender mit Zugang zu verschiedenen Dateien gespeichert in einer Ablage versorgt, wobei der Anwender all diese herunterladen kann. Sobald solch eine Datei (File) heruntergeladen wird, kann sie innerhalb des Speichers 330 (siehe 3) gespeichert werden, der innerhalb des Client-Computers 100 für die lokale Anwendung dort untergebracht ist. Jedoch kann jede dieser Dateien geheime und/oder vertrauliche Informationen enthalten, für welche der Besitzer wünscht, dass die Zugangs-Berechtigung kontrolliert wird. Beispielsweise kann solch eine Datei eine sich selbst installierende Anwendungsdatei eines Updates für ein gegebenes Programm sein, für welches sein Besitzer, beispielsweise ein Software-Hersteller, wünscht, unerlaubten öffentlichen Zugriff zu verhindern, d.h. dass das Update dagegen geschützt wird, von irgendeinem Individuum verwendet zu werden, welches nicht die geeignete Zahlung dafür geleistet hat. Der Server 210 selbst, wie dargestellt in 2, kann auch vertrauliche oder geheime Informationen (wie symbolisiert durch Linie 215) zur Verfügung stellen, welche vom Anwender stammt und (über das Netzwerk (hier Internet) 150 an den Server übertragen wurde) um Downstream-Anlagen (nicht spezifische dargestellt) für die weitere Verarbeitung abzulegen, oder vertrauliche oder geheime Informationen (wie symbolisiert durch Linie 218) von der abgelegten Downstream-Anlage für die eventuelle Überlieferung über das Netzwerk in Richtung Anwender zu empfangen.
  • Das Netzwerk 150, welches aus Gründen der Illustration das Internet darstellt, ist anfällig für Beeinträchtigungen die von dritten Parteien. In dieser Hinsicht könnte die dritte Partei eine konventionell verschlüsselte Nachricht, die dann über das Internet transportiert und, beispielsweise vom Client-Computer 100 erhalten werden kann, abfangen, beispielsweise eine gerade laufende finanzielle Transaktion, was eine sich für den Anwender ergebene Bedrohung involviert. Selbst wenn die dritte Partei nicht hinreichend Ressourcen besitzen könnte, entweder im Hinblick auf die verfügbare Verarbeitungs-Kapazität oder Zeit um eine konventionell verwendete Ziffer, die zum verschlüsseln von Nachrichten verwendet wird, aufzubrechen, und den Klartext, der inhärent in der übermittelten Nachricht enthalten ist, zurückzugewinnen, so mag die Partei nicht desto weniger hinreichend Wissen über die Zifferntext-Nachricht besitzen, im speziellen deren strukturelle Organisation und Anlage benötigt, um erfolgreich die Nachricht zu verändern und damit dem Anwender zu schaden. In dieser Hinsicht könnte sich die dritte Partei in illegaler Art und Weise in die Zifferntext-Nachricht einmischen durch Ersetzen von einem oder mehreren vordefinierten Zifferntext-Blocken an Stelle von korrespondierenden originalen Zifferntext-Blöcken, um dann eine resultierende modifizierte Zifferntext-Nachricht zurück auf das Netzwerk zum Transport zum Computer 205 zur Verarbeitung an dieser Stelle zu übermitteln.
  • Um die vertrauliche oder geheime Natur der Informationen, welche über das Netzwerk 150 zwischen dem Client-Computer 100 und dem Computer 205 übermittelt wird, gegen den Zugriff einer dritten Partei zu sichern, setzen sowohl das Client-Programm 130 als auch der Server 210 jeweils eine kryptografische Kommunikation durch das Einbringen des Verschlüsselungsprozesses 20 und des Entschlüsselungsprozesses 50 dort ein. Als solche sind Nachrichten bestimmt für Netzwerk-Übertragung und erzeugt durch eine Netzwerk-Anwendungs-Einheit, entweder Client-Programm 130 oder Server 210 verschlüsselt durch den Verschlüsselungsprozess 20 darin, um korrespondierende Zifferntext-Nachrichten zu erzeugen mit eingebundenen MACs, welche wiederum dann über das Netzwerk 150 zur anderen Netzwerk-Anwendungs-Einheit übertragen werden. In ähnlicher Art und Weise werden die Ziffern-Text-Nachrichten empfangen von dem Netzwerk von jeder der Einheiten dechiffriert vom Entschlüsselungs-Prozess 50 darin, um eine geeignete wiedergewonnene Klartext-Nachricht und eine Angabe in Bezug auf deren intakte Form zu ergeben. Die Chiffrierung und Dechiffrierungs-Prozeduren 20 und 50 sind Umkehr-Prozeduren relativ zueinander.
  • C. Client-Computer 100
  • 3 stellt ein Blockdiagramm eines Client-Computers (PC) 100 dar.
  • Wie dargestellt ist, umfasst der Client-Computer 100 Eingabeschnittstellen 320 (Interfaces, IF), den Prozessor 340, eine Kommunikationsschnittstelle 350, einen Speicher 330 und eine Ausgabeschnittstelle 360, welche alle konventionell miteinander durch den Bus 370 verknüpft sind. Der Speicher 330, welche im Allgemeinen verschiedene Modalitäten einschließt, enthält aus Gründen der Illustration einen Random Access Memory (RAM) 332 für temporäre Daten und Befehls-Speicher, ein Diskettenlaufwerk (Diskettenlaufwerke) 334 zum Austausch von Informationen, beispielsweise durch Anwender-Befehl mit Floppydisketten, und einen nicht-volatilen Massenspeicher 335, der durch eine Festplatte implementiert ist, typischerweise von magnetischer Natur. Der Massenspeicher 335 kann auch ein CD-ROM-Laufwerk enthalten oder andere optische Speichermedien-Lesegeräte (nicht spezifisch dargestellt) (oder Schreibgeräte), um Informationen aus geeigneten optischen Speicher-Medien zu lesen (und Informationen darauf zu schreiben). Der Massenspeicher speichert das Betriebssystem (O/S) 337 sowie die Anwendungsprogramme 120; wobei die letztgenannten aus Gründen der Illustration ein Client-Programm 130 (siehe 2) enthalten, welches unsere erfindungsgemäße Technik enthält. O/S 337, dargestellt in 3, kann durch irgendein konventionelles Betriebssystem implementiert sein, beispielsweise das Betriebssystem Windows NT („WINDOWS NT" ist ein eingetragenes Warenzeichen von Microsoft Corporation of Redmond, Washington). Unter dieser Voraussetzung werden wir keinerlei Komponenten von O/S 337 diskutieren, da diese allesamt irrelevant sind. Es reicht aus, anzugeben, dass das Client-Programm, welches eines der Anwendungs-Programme 120 darstellt, unter Kontrolle des O/S ausgeführt wird.
  • In vorteilhafter Art und Weise spart unsere vorliegende erfindungsgemäße Technik, wenn sie zur Anwendung innerhalb der kryptografischen Verschlüsselung und Entschlüsselungs-Module eingebettet wird, in vorteilhafter Art und Weise Verarbeitungs-Zeit, wodurch der Durchsatz sowohl durch den Client-Computer 100 und den Server 210 (siehe 2) erhöht wird.
  • Wie in 3 dargestellt kann ankommende Information aus zwei illustrativen äußeren Quellen stammen: durch das Netzwerk gelieferte Information, beispielsweise aus dem Internet und/oder anderen Netzwerk-Verbindungen, über die Netzwerk-Verknüpfung 140 zur Kommunikations-Schnittstelle 350, oder von einer zweckbestimmten Eingabe-Quelle über einen Pfad (über Pfade) 310, an den Eingangs-Schnittstellen 320. Die speziell zweckbestimmte Eingabe kann von einer breiten Vielzahl von Quellen herrühren, beispielsweise aus einer externen Datenbank. Darüber hinaus kann die Eingabe-Information, in der Form von Dateien oder eines speziellen Inhaltes darin, auch zur Verfügung gestellt werden durch Einführen einer Diskette, welche die Information enthält, in das Disketten-Laufwerk 334, von welchem der Computer 100, unter Anleitung des Anwenders, auf diese Information von der Diskette zugreifen und lesen wird. Die Eingabe-Schnittstellen 320 enthalten geeignete Schaltungen, um die notwendigen und korrespondierenden elektrischen Verknüpfungen benötigt zur physikalischen Verknüpfung zur Verfügung zu stellen und jede der verschiedenen speziell abgestimmten Quellen für die Eingabe-Information mit dem Computer-System 100 zu verbinden. Unter Steuerung des Betriebssystems, tauschen Anwendungs-Programme 120 Befehle und Daten mit den externen Quellen aus, und zwar über die Netzwerk-Verknüpfung 140 oder dem Pfad (die Pfade) 310, um Information zu übersenden oder sie zu empfangen, die typischer Weise von einem Anwender während dem Ausführen des Programms benötigt wird.
  • Eingabe-Schnittstellen 320 stellen auch eine elektrische Verknüpfung und Anschluss her zu den Anwender-Eingabe-Geräten 395, wie z.B. der Tastatur und der Maus zum Computer-System 100. Das Display 380, wie z.B. ein herkömmlicher Farb-Bildschirm und der Drucker 385, wie z.B. ein herkömmlicher Laser-Drucker, werden über die Leitungen 363 bzw. 367 an die Ausgabe-Schnittstellen 360 verknüpft. Die Ausgabe-Schnittstellen stellen gewünschte Anschlüsse zur Verfügung, um elektrisch den Monitor und den Drucker an das Computer-System anzubinden und anzuschließen. Wie leicht eingesehen werden kann, kann unsere vorliegende erfindungsgemäße kryptografische Technik mit irgend einem Typ an digitaler Information arbeiten, unabhängig von den Modalitäten, über welche der Client-Computer 100 diese Information erhalten, speichern und/oder kommunizieren wird.
  • Des weiteren, werden, da die speziellen Hardware-Komponenten des Computer-Systems 100, wie auch alle Aspekte der Software gespeichert innerhalb des Speichers 335, abgesehen, von den Modulen, welche die vorliegende Erfindung, implementieren, konventionell und wohlbekannt sind, sie nicht in weiteren Details diskutiert werden. Allgemein gesagt, weißt der Computer 205 eine Architektur auf, die relativ ähnlich zu derjenigen des Client-Computers 100 ist.
  • D. Begrenzung, welche durch die Modulo-Arithmetik in konventionellen kryptografischen Techniken auferlegt wird
  • Konventionelle kryptografische Techniken setzen häufig als ein Primitiv eine Prüfsumme ein, welche das Berechnen von mod(M) benötigt, wobei M eine große Primzahl ist, wie z.B. 231 – 1 oder eine größere Zahl.
  • Unglücklicher Weise benötigt eine mod(M) Operation eine Größenordnung von mindestens 10-15 Maschinen-Zyklen, falls nicht noch mehr (basierend auf dem Wert des Modulus M) zur Berechnung. Diese Funktion wird wiederholt berechnet und zwar sowohl während konventionellen Verschlüsselungs- als auch Dechiffrieroperationen. Als solche, falls solch eine Technik auf einem Gerät mit signifikater Verarbeitungskapazität zu implementieren wäre, wie z.B. einem PC oder einer Ar beitsstation, würden die mod(M) Berechnungen den gesamten Durchsatz, unter Umständen merklich, reduzieren. Jedoch diese rechnerische Beschränkung kann in Geräten nicht tolerabel sein, welche ziemlich begrenzte Verarbeitungs-Kapazität aufweisen und folglich die Verwendung dieser kryptografischen Technik in diesen Geräten ausschließen – wobei ihre Verwendung von relativ großem Nutzen sein könnte.
  • E. Unsere erfindungsgemäße Technik und ihre Implementation
  • Nachdem wir dieses Defizit auf dem Gebiet erkannt haben, haben wir eine Technik zum Implementieren einer Prüfsumme entwickelt, die in vorteilhafter Art und Weise keine mod(M) Operation benötigt.
  • Unsere Technik implementiert die Prüfsumme als eine relativ einfache Serie von elementaren Register-Operationen. Diese Operationen schließen mod2n Multiplikationen, Reihenfolge-Manipulationen (welche eine Operation darstellen, welche die Bit-Reihenfolge in einem Block darstellen, wie z.B. Byte- oder Wort-Swaps) und Additionen ein – wobei alle der erwähnten Operationen extrem simpel zu implementieren sind und sehr wenig Verarbeitungs-Zyklen zur Durchführung benötigen. Die Operationen, verwendet in dem Primitiv, können auch relativ effektiv umgesetzt werden. Folglich kann die Verwendung des Primitivs basierend auf unserer Erfindung, insbesondere bei der Umsetzung, signifikant die Verarbeitungszeit gegenüber der reduzieren, welche in konventioneller Art und Weise benötigt wird, um verschiedene kryptografische Parameter zu berechnen, wie z.B. einen Nachrichten-Authentifikations-Code (MAC), oder eine Strom-Chiffre zu implementieren. Wir glauben, dass unsere erfindungsgemäße Technik auch in vorteilhafter Art und Weise in bestimmte Ziffern eingebracht werden kann, um die Sicherheit dieser Ziffern gegen bestimmte Klartext-Ziffertext-Attacken zu vergrößern.
  • Wir gehen von den folgenden mathematischen Definitionen aus:
    F(x) = θ und ein Exponent "S", d.h. wie z.B. in xS, stellt entweder eine geeignete Byte- oder Wort-Austausch-Operation dar.
  • Um etwas abzuschweifen, 6A und 6B stellen Wort-Swap- und bzw. Byte-Swap-Operationen dar. Geht man von dem n-Bit-Block 610 (aus Gründen der Illustration 32 Bit an Länge) aus, mit zwei 16 Bit großen Wörtern (z.B. den Wörtern 613 und 617, auch gelabelt als L und R für "links" bzw. "rechts") erzeugt eine Wort-Vertauschungs-Operation, symbolisiert durch Linie 620, den n-Bit-Block 630 mit diesen Wörtern vertauscht in ihrer Position (d.h. mit den Wörtern 633 und 637, die identisch mit den Wörtern 617 bzw. 613 sind). Solch eine Operation kann implementiert sein in einem Verarbeitungs-Zyklus durch einfaches Vertauschen der individuellen Wörter wie durch den Pfeil 625 gezeigt. Geht man von einem n-Bit-Block 650 (auch aus Gründen der Illustration 32 Bit an Länge) aus, mit den individuellen acht-Bit-großen Bytes 652, 654, 656 und 658 (auch gelabelt als die Bytes A, B, C, bzw. D), erzeugt eine Byte-Swap-Operation, symbolisiert durch die Linie 660, den n-Bit-Block 670 mit diesen 4 Bytes in umgekehrter Reihenfolge (d.h. mit den Bytes 672, 674, 676 und 678, die identisch mit den Bytes 658, 656, 654 bzw. 652 sind). Die Byte-Swap-Operation kann implementiert sein in einem Verarbeitungs-Zyklus durch Vertauschen von individuellen Bytes in paralleler Vorgehensweise wie dies durch die Pfeile 665 gezeigt ist.
  • Mit diesen Definitionen im Hinterkopf wird das Primitiv F(x) gebildet, welche eine Prüfsumme implementiert, speziell gesagt f(x) = a x + b mod(M), durch Berechnen in Übereinstimmung mit unseren erfindungsgemäßen Lehren der Gleichungen (1)-(5) wie folgt in angegebener Reihenfolge: xS ← Wort-Swap (x) (1) y ← A x + B xS mod(2n) (2) yS ← Wort-Swap (y) (3) z ← C yS + y D mod(2n) (4) θ ← z + yS E mod(2n) (5)wobei die Koeffizienten A, B, C, D und E jeweils eine ungerade zufällig ganze Zahl von weniger oder gleich 2n darstellen; und θ eine n-bit-Zeichenkette (string) darstellt.
  • Wie zu sehen ist, werden diese Gleichungen implementiert unter Verwendung elementarer Register-Operationen, d.h. Reihenfolgen-Manipulationen (beispielsweise Wort- oder Byte-Swaps (Vertauschungen), Additionen und mod(2n) Multiplikationen). In Konsequenz können diese Operationen durchgeführt werden, unter Verwendung von relativ wenig Verarbeitungs-Zyklen – mit Sicherheit merklich weniger als 10-15 Zyklen benötigt, um eine mod(M) Operation durchzuführen. Obwohl wir die Gleichung (1) und (3) dargestellt haben, welche Wort-Swap-Operationen einsetzen, könnten Byte-Swap-Operationen (oder möglicherweise andere Manipulationen, welche die Bit-Reihenfolge verändern) statt dessen eingesetzt werden. Zur Anwendung bei der Erzeugung eines MAC oder anderer verschiedener kryptografischer Bezeichnungen, sind die Koeffizienten-Werte A, B, C, D und E "geheime" Werte, d.h. nicht der Öffentlichkeit preisgegeben.
  • Eine invertierbare (umkehrbare) Version des Primitivs F(x), welches f(x) implementiert, und auch in Übereinstimmung mit unseren erfindungsgemäßen Lehren ist, ist eines definiert durch die Gleichungen (6)-(15) wie folgt: y ← A x mod(2n) (6) yS ← Wort-Swap (y) (7) z ← B yS mod(2n) (8) zS ← Wort-Swap (z) (9) v ← C zS mod(2n) (10) vS ← Wort-Swap (v) (11) w ← D vS mod(2n) (12) wS ← Wort-Swap (w) (13) t ← E wS mod(2n) (14) θ ← t + G yS mod(2n) (15)wobei die Koeffizienten A, B, C, D und E jeweils eine ungerade zufällig ganze Zahl von kleiner oder gleich 2n darstellen; und G eine zufällig ganze Zahl von kleiner oder gleich 2n ist.
  • Auch in diesem Fall sind bei der Erzeugung eines MAC oder verschiedener anderer kryptografischer Bezeichnungen die Werte der Koeffizienten A, B, C, D, E und G allesamt "geheime" Werte. Alternativ könnten die Gleichungen (6)-(12) verwendet werden, um das Primitiv mit F(x) = w zu implementieren. Des weiteren könnte eine "Revers"-Operation (wobei alle die Bits in dem Block komplett entgegengesetzt in ihrer Sequenz sind) – was einen weiteren Typ der Reihenfolgen-Manipulation darstellt – anstelle eines Byte- oder Wort-Swaps eingesetzt werden. Beispielsweise könnte das Primitiv F(x) für eine unumkehrbare Form von f(x) implementiert werden in Übereinstimmung mit unserer Erfindung durch die Gleichungen (16)-(19) wie folgt: y ← H x mod(2n) (16) z ← reverse (y) (17) s ← J z mod(2n) (18) θ ← s + K mod(2n) (19)wobei die Koeffizienten H, J und K jeweils eine zufällig ganze Zahl von kleiner oder gleich 2n darstellen.
  • Falls dieses Primitiv verwendet werden würde, um einen MAC oder andere kryptografische Bezeichnungen zu erzeugen, dann würden die Koeffizienten H, J und K "geheime" Werte darstellen. Da eine Revers-Operation relativ langsam im Vergleich zu einer Byte- oder Wort-Austausch-Operation ist, ist die Verwendung der Primitive dargestellt durch die Gleichungen (6)-(12) oder (6)-(15) oben bevorzugt im Vergleich zu dem dargestellt durch die Gleichungen (16)-(19).
  • Es steht außer Frage, dass basierend auf der oben dargelegten Beschreibung die Fachleute auf dem Gebiet leicht verschiedene andere Primitive, F(x), erzeugen können, welche äquivalente kryptografische Charakteristika für f(x) = a x + b mod(M) zur Verfügung stellen können und welche in Übereinstimmung mit unserer Erfindung mod2n Multiplikationen, Reihenfolgen-Manipulationen und Additionen, jedoch nicht eine mod(M) Operation einsetzen und folglich anstelle der speziellen Primitive wie oben beschrieben, eingesetzt werden können.
  • Wie oben diskutiert, kann ein verallgemeinertes Primitiv basierend auf unserer erfindungsgemäßen Technik verwendet werden, um einen MAC zu erzeugen. Um dies zu realisieren, wird eine Serie von Primitiven F1(x), F2(x), ..., FP(x) für die Funktion f(x), welche nicht-invertierbar sind, und von der gleichen Form wie oben dargelegt sind (wie F(x)) sind, ausgewählt, jedoch mit unterschiedlichen Werten für die korrespondierenden "geheimen" Koeffizienten, d.h. falls F1(x) die "geheimen" Koeffizienten A, B, C, D und E aufweist, dann weist F2(x) die "geheimen" Koeffizienten a, b, c, d und e usw. auf. In der Folge werden, geht man von einer Eingabe-Sequenz X = x1, x2, ..., xN von n-Bit-Verkettungen korrespondierende Ausgabewerte (Zwischenergebnisse) Y = y1, y2, ..., yN in Übereinstimmung mit den Gleichungen (20)-(25) wie folgt berechnet unter Verwendung der nachfolgenden dieser p Primitive (wobei p < n) für die korrespondierenden sukzessiven Eingabewerte xi: y1 = F1(x1) (20) y2 = F2(x2 + y1) (21) y3 = F3(x3 + y2) (22) yP = FP(xP + yP-1) (23)
    .
    .
    . yP+1 = F1(yP + XP+1) (24) yP+2 = F2(yP+1 + xP+2) (25)
    .
    .
    .
  • Der MAC kann dann erzeugt werden in Übereinstimmung mit Gleichung (26) als eine Funktion der Zwischenergebnisse wie folgt:
    Figure 00190001
  • Zur weiteren Sicherheit kann die Gleichung (25) modifiziert werden, durch Einbringen einer geheimen oder zufälligen Permutation (γi) für jeden yi Term in der Summe wie durch die Gleichung (27) wie folgt gezeigt wird:
    Figure 00200001
    wobei γi zufällig ausgewählt ist oder als ein "geheim" vordefinierter Wert innerhalb eines Bereiches von ± k (inklusive) gewählt wird, d.h. γi ∈ {k, k-1, k-2, ..., 0, –1, –2, ..., –k}, wobei k eine vordefinierte ganze Zahl ist. Aus Gründen der Einfachheit kann jedes γi auf den Wert +1 oder –1 gesetzt werden, und zwar entweder mit einer zufälligen, pseudo-zufälligen oder "geheimen" vordefinierten Variation unter all solchen γi.
  • Obwohl die Gleichung (20)-(25) eine Wiederholungs-Serie der gleichen p Primitive einsetzen, können verschiedene solche Serien statt dessen eingesetzt werden. Jede Serie der Funktionen wird einen separaten Ausgabe-Hash-Wert y erzeugen, welche dann miteinander verkettet werden können, um einen MAC auszubilden; oder ein individueller Ausgabewert, gleich y, von jedem der Primitive kann durch die Verwendung der Gleichung (26) aufsummiert werden, um den MAC-Wert zu erhalten. Des weiteren könnte eine Serie mit Vorwärts-Verkettung durchlaufen werden, wie dies beispielsweise angegeben wird durch die Gleichungen (20)-(23). Ein nächster Durchlauf der gleichen Serie, wie z.B. angezeigt durch die Gleichungen (24) und (25) oder ein nächster Durchlauf einer anderen Serie könnte mit einer "Rückwärts"-Verkettung durchlaufen werden. Wo Rückwärts-Verkettung verwendet wird, können assoziierte Eingabewerte in einer umgekehrten Reihenfolge angewandt werden, im Hinblick auf diejenigen, welche bei der Vorwärts-Verkettung eingesetzt werden, und zwar auf das individuelle Primitiv in dieser Serie.
  • Wo unsere erfindungsgemäße Technik verwendet wird, um eine Prüfsumme zu berechnen, sind die Berechnungen möglichst ähnlich, wenn nicht gar identisch, mit denjenigen, verwendet, um einen MAC zu berechnen, jedoch mit all den Koeffizienten-Werten, wie auch den γi Werten, falls verwendet, die dann öffentlich bekannt sind.
  • Behält man das oben dargelegte im Hinterkopf, so werden wir uns nun der Beschreibung der Software, benötigt, um einen MAC zu erzeugen, zuwenden, die für die Anwendung durch den Verschlüsselungsprozess 20 und in Übereinstimmung mit einem Primitiv, welches unsere erfindungsgemäße Technik implementiert, geeignet ist.
  • 4 stellt ein Flussdiagramm auf hoher Ebene des MAC-Erzeugungsprozesses 400 dar, der verwendet wird, im Prozess 5 wie in 1 gezeigt, zum Erzeugen eines MACs. Diese Routine implementiert Gleichungen (20)-(25), wie oben diskutiert, und nimmt der gleichen an, dass die Primitive F(x) und G(x) vollständig ausgewählt wurden.
  • Insbesondere schreitet nach Einsetzen die Routine 400 während der Durchführung entweder des Verschlüsselungsprozesses 20 oder des Entschlüsselungsprozesses 50 die Ausführung zunächst wie in 4 gezeigt, in Richtung des Blockes 410 voran. Dieser Block initialisiert einen Zeiger (i) zu eins und eine Summenvariable (ys) zu Null. Anschließend betritt die Durchführung eine Schleife ausgebildet aus Blöcken 420, 430, 440 und 450, um nachfolgende Ausgabe-Werte, yi, für jeden Eingabe-Klartext-Block (Pi) als Eingabe zu berechnen und diese Ausgabe-Werte in der Summenvariablen, ys zu akkumulieren.
  • Im Speziellen schreitet nach Eintritt in diese Schleife die Ausführung zunächst zu Block 420 voran, um den Ausgabe-Wert y1 als gleichkommend F(P1) zu berechnen. Sobald dies eintritt, schreitet die Ausführung voran, um die Summen-Prozedur 430 zu berechnen, welche durch Block 435 einfach den Wert der Ausgabe yi zur Summenvariablen ys, addiert. Sobald dies eintritt, schreitet die Ausführung voran, zum Entscheidungsblock 440, um zu bestimmen, ob alle N-Blöcke der Eingabe-Klartext-Nachricht P verarbeitet worden sind, d.h. ob eine laufende Variable des Zeigers i dann gleich N ist. In dem Fall, dass irgend einer der solchen Blöcke überbleibt, d.h. die laufende Variable i kleiner als N ist, leitet der Entscheidungsblock 440 die Ausführung über den NEIN-Pfad 443 zum Block 450 weiter. Der letztgenannte Block erhöht den Wert des Zeigers i um 1 und leitet die Ausführung dann über den Rückkopplungs-Pfad 455 zurück zum Block 420, um den nächst sukzessiven Ausgabe-Wert zu berechnen usw. An dieser Stelle werden die Berechnungen durchgeführt durch den Block 420, davon abhängen, ob für irgend eine der gegebenen Iterationen durch Block 420 der Wert von i dann gerade oder ungerade ist; und folglich wird zwischen den Primitiven F(x) und G(x) für nachfolgende i abgewechselt.
  • Sobald alle Ausgabe-Werte berechnet und aufsummiert worden sind, leitet der Entscheidungs-Block 440 die Ausführung über den JA-Pfad 447 zum Block 460. Dieser letztgenannte Block bildet einfach den MAC durch Verkettung des Wertes von yN mit einem laufenden Wert der Summen-Variablen und gibt als Ausgabe-Wert einen resultierenden 64-Bit-Wert als den MAC aus. Sobald dies der Fall ist, steigt die Durchführung aus Routine 400 aus.
  • 5 stellt ein Flussdiagramm auf hoher Ebene der alternativen Summen-Berechnung-Prozedur 500 dar, welche anstelle der Summen-Berechnungs-Prozedur 430 eingesetzt werden kann, die einen Teil des MAC-Erzeugungsprozesses 400 ausbildet. Die Prozedur 500 implementiert die Gleichung (26) wie oben dargestellt.
  • Insbesondere nach Eintritt in die Prozedur 500 schreitet die Durchführung zuerst zum Block 510 voran, welcher einen Wert von γi geeignet setzt. Wie oben dargelegt, kann dieser Wert zufällig, pseudozufällig oder vordefiniert innerhalb eines Bereichs von ± k sein (obwohl Werte von ± 1 typischerweise verwendet werden). Sobald dieser Wert gesetzt worden ist, schreitet die Durchführung zum Block 520 voran, welcher den derzeitigen Ausgabe-Wert yi mit dem korrespondierenden Wert von γi multipliziert und einen resultierenden Wert zur Summen-Variablen ys addiert. Sobald dies der Fall ist, verlässt die Durchführung dann die Prozedur 500.
  • Es ist klar, dass die Fachleute auf dem Gebiet realisieren werden, dass obwohl der MAC (oder die Prüfsumme) mit einer Länge von 64-Bit beschrieben worden ist, d.h. zwei 32-Bit-Blöcke, MACs (und Prüfsummen) von anderen Bit-(und Block)-Größen, wie z.B. ein einzelner 32-Bit-Block oder mehr als 64-Bit-lange Blöcke (jedoch in der Größe von ganzzahligen Blöcken) statt dessen verwendet werden können. Größere MACs stellen größere Grade der Sicherheit zur Verfügung, in dem Ausmaße, in dem es gerechtfertigt ist, obwohl damit wahrscheinlich Kosten von vergrößerten Verarbeitungs-Zeiten, um den MAC zu erzeugen, und wo benötigt, ihn zu verschlüsseln und entschlüsseln, einhergehen.
  • Obwohl eine detaillierte Ausführungsform mit einer Vielzahl von Variationen, welche die Lehren der vorliegenden Erfindung einbringt, dargestellt wurde, und hier im Detail beschrieben wurde, werden die Fachleute auf dem Gebiet leicht viele andere Ausführungsformen und Anwendungen der vorliegenden Erfindung entwickeln können, die immer noch diese Lehren einsetzen.

Claims (29)

  1. Prozess zur Verwendung in einem Gerät (100) zur Erzeugung eines Parameters aus einer Vielzahl N aufeinanderfolgender n-Bit-Blöcke x1, x2, ..., xN, eines digitalen Eingabe-Klartextes (7), wobei der Prozess ein Primitiv F(x) implementiert, das dahingehend äquivalent zu einer vordefinierten Funktion f(x) = a x + b mod(M) ist, dass das Primitiv kryptographischen Charakteristiken hat, die äquivalent zu den Eigenschaften der vordefinierten Funktion sind, wobei a, b und n vordefinierte ganze Zahlen sind, M eine vordefinierte Primzahl ist und das Gerät umfasst: einen Prozessor (340); und einen Speicher (330), der mit dem Prozessor (340) verbunden ist und in dem ein Computerprogramm gespeichert ist, das aus computerausführbaren Befehlen besteht; und wobei der Prozess einen Schritt des Erzeugens des Parameters umfasst, der Schritt durch den Prozessor (340) durchgeführt und über die ausführbaren Befehle implementiert wird, wobei: der Schritt des Erzeugens des Parameters Verarbeiten der Blöcke des Klartextes über eine vorgegebene Prozedur umfasst, die das Primitiv umfasst, wobei das Primitiv eine vordefinierte Sequenz von Reihenfolge-Manipulationen, Additionen und mod(2n)-Multiplikations-Operationen ohne Durchführen von mod(M)-Berechnungen umfasst, wobei n eine vordefinierte ganze Zahl ist, und wobei die Anzahl von Reihenfolge-Manipulationen, Additionen und mod(2n)-Multiplikations-Operationen der vordefinierten Sequenz für jeden Block des Klartextes (7), der durch das Primitiv verarbeitet wird, die gleiche ist.
  2. Prozess nach Anspruch 1, wobei jede der Reihenfolge-Manipulationen eine vordefinierte Operation ist, die eine Bit-Reihenfolge eines Blocks von Daten ändert, an dem jede Reihenfolge-Manipulation durchgeführt wird.
  3. Prozess nach Anspruch 2, der des Weiteren die durch den Prozessor in Reaktion auf die ausführbaren Befehle durchgeführten folgenden Schritte umfasst: Erzeugen einer Vielzahl von Zwischenergebnissen y1, (N ≥ i ≥ 1) gemäß den folgenden Gleichungen: y1 = F1(x1) y2 = F2(x2 + y1) y3 = F3(x3 + y2) yp = Fp(xp + yp-1) . . . yp+1 = F1(yp + xp+1) yp+2 = F2(yp+1 + yp+2)wobei F1(x), F2(X), ..., Fp(x) Primitive der gleichen Form sind, und p < n; und Erzeugen des Parameters in Reaktion auf eine vordefinierte Funktion der Zwischenergebnisse.
  4. Prozess nach einem der Ansprüche 1 bis 3, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und einer Summe der Zwischenergebnisse umfasst.
  5. Prozess nach einem der Ansprüche 1 bis 3, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und
    Figure 00250001
    umfasst, wobei für jedes i, yi einen vordefinierten oder zufälligen Wert innerhalb eines Bereiches einschließlich ± k aufweist, wobei k eine vordefinierte ganze Zahl ist.
  6. Prozess nach Anspruch 3, wobei jede Reihenfolge-Manipulation ein Byte- oder Word-Swap oder eine Invertierungs-Operation ist.
  7. Prozess nach Anspruch 4, der des Weiteren die durch den Prozessor ausgeführten Schritte und in Reaktion auf die ausführbaren Befehle die folgenden Schritte umfasst: Implementieren des Primitivs F1(x) gemäß den folgenden Gleichungen: xs ← wordswap (x) y ← A x + B xs mod(2n) ys ← wordswap (y) z ← C ys + y D mod(2n) θ ← z + ys E mod(2n)wobei Koeffizienten A, B, C, D und E jeweils eine ungerade zufällige ganze Zahl kleiner oder gleich 2n sind; und θ eine Ausgabenzeichenfolge ist; und Implementieren des Primitivs F2(x) gemäß den folgenden Gleichungen: xs ← wordswap (x) y ← a x + b xs mod(2n) ys ← wordswap (y) z ← c ys y d mod(2n) θ ← z + ys e mod(2n)wobei Koeffizienten a, b, c, d und e Koeffizienten A, B, C, D und E entsprechen, jedoch davon jeweils verschiedene Werte haben.
  8. Prozess nach Anspruch 7, wobei die Koeffizienten für Primitive F1(x), F2(x), ..., Fp(x) geheim sind und ein Nachricht-Authentifikations-Code aus den Parametern gebildet wird.
  9. Prozess nach Anspruch 8, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und einer Summe der Zwischenergebnisse umfasst.
  10. Prozess nach Anspruch 8, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und
    Figure 00270001
    umfasst, wobei für jedes i, yi einen vordefinierten oder zufälligen Wert innerhalb eines Bereiches einschließlich ± k aufweist, wobei k eine vordefinierte ganze Zahl ist.
  11. Prozess nach Anspruch 7, wobei die Koeffizienten für Primitive F1(x), F2(x), ..., Fp(x) öffentlich bekannt sind und der Parameter eine Prüfsumme ist.
  12. Prozess nach Anspruch 11, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und einer Summe der Zwischenergebnisse umfasst.
  13. Prozess nach Anspruch 11, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und
    Figure 00270002
    umfasst, wobei für jedes i, yi einen vordefinierten oder zufälligen Wert innerhalb eines Bereiches einschließlich ± k aufweist, wobei k eine vordefinierte ganze Zahl ist.
  14. Prozess nach einem der Ansprüche 1 bis 13, wobei die kryptographischen Eigenschaften des Primitivs im Wesentlichen äquivalent zu den Eigenschaften der vordefinierten Funktion sind.
  15. Computerlesbares Medium, auf dem durch Computer ausführbare Befehle zum Durchführen der Schritte nach einem der Ansprüche 1 bis 14 gespeichert sind.
  16. Vorrichtung (100) zur Erzeugung eines Parameters aus einer Vielzahl N aufeinanderfolgender n-Bit-Blöcke eines Eingabe-Klartextes (7) x1, x2, ..., xN, wobei die Vorrichtung (100) so eingerichtet ist, dass sie ein Primitiv F(x) implementiert, das dahingehend äquivalent zu einer vordefinierten Funktion f(x) = a x + b mod(M) ist, dass die kryptographischen Charakteristiken äquivalent zu den Eigenschaften der vordefinierten Funktion sind, wobei a, b und n vordefinierte ganze Zahlen sind und M eine vordefinierte Primzahl ist und die Vorrichtung (100) umfasst: einen Prozessor (340); und einen Speicher (330), der mit dem Prozessor verbunden ist und in dem ein Computerprogramm gespeichert ist, das aus computerausführbaren Befehlen besteht; wobei der Prozessor so eingerichtet ist, dass er die folgenden Prozessschritte in Reaktion auf die ausführbaren Befehle durchführt: Erzeugen des Parameters durch Verarbeiten der Blöcke des Klartexts über eine vorgegebene Prozedur, die das Primitiv umfasst, wobei das Primitiv eine vordefinierte Sequenz von Reihenfolge-Manipulationen, Additionen und mod(2n)-Multiplikations-Operationen ohne Durchführen von mod(M)-Berechnungen umfasst, wobei n eine vordefinierte ganze Zahl ist, und wobei die Anzahl der Reihenfolge-Manipulationen, Additionen, und mod(2n)-Multiplikations-Operationen für jeden Block von Klartext, der durch das Primitiv verarbeitet wird, die gleiche ist.
  17. Vorrichtung (100) nach Anspruch 16, wobei jede der Reihenfolge-Manipulationen eine vordefinierte Operation ist, die eine Bit-Reihenfolge eines Blocks von Daten ändert, an dem jede Reihenfolge-Manipulation durchgeführt wird.
  18. Vorrichtung (100) nach Anspruch 17, wobei der Prozessor (340) des Weiteren so eingerichtet ist, dass er in Reaktion auf die ausführbaren Befehle die folgenden Schritte durchführt: Erzeugen einer Vielzahl von Zwischenergebnissen y1, (N ≥ i ≥ 1) gemäß den folgenden Gleichungen: y1 = F1(x1) y2 = F2(x2 + y1) y3 = F3(x3 + y2) yp = Fp(xp + yp-1) yp+1 = F1(yp + xp+1) yp+2 = F2(yp+1 + yp+2)wobei F1(x), F2(X), ..., Fp(x) Primitive der gleichen Form sind und p < n; und Erzeugen des Parameters in Reaktion auf eine vordefinierte Funktion der Zwischenergebnisse.
  19. Vorrichtung (100) nach Anspruch 18, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und einer Summe der Zwischenergebnisse umfasst.
  20. Vorrichtung (100) nach Anspruch 18, wobei der Prozessor (340) des Weiteren so eingerichtet ist, dass er in Reaktion auf die ausführbaren Befehle einen Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und
    Figure 00290001
    umfasst, wobei für jedes i, yi einen vordefinierten oder zufälligen Wert innerhalb eines Bereiches einschließlich ± k aufweist, wobei k eine vordefinierte ganze Zahl ist.
  21. Vorrichtung nach einem der Ansprüche 16 bis 18, wobei jede Reihenfolge-Manipulation ein Byte- oder Word-Swap oder eine Invertierungs-Operation ist.
  22. Vorrichtung nach Anspruch 21, wobei der Prozessor (340) des Weiteren so eingerichtet ist, dass er in Reaktion auf die ausführbaren Befehle die folgenden Schritte durchführt: Implementieren eines Primitivs F1(x) gemäß den folgenden Gleichungen: xs ← wordswap (x) y ← A x + B xs mod(2n) ys ← wordswap (y) z ← C ys + y D mod(2n) θ ← z + ys E mod(2n)wobei die Koeffizienten A, B, C, D und E jeweils eine ungerade zufällige ganze Zahl kleiner oder gleich 2n sind; und θ eine Ausgabenzeichenfolge ist; und Implementieren eines Primitivs F2(x) gemäß den folgenden Gleichungen: xs ← wordswap (x) y ← a x + b xs mod(2n) ys ← wordswap (y) z ← c ys y d mod(2n) θ ← z + ys e mod(2n) wobei die Koeffizienten a, b, c, d und e den Koeffizienten A, B, C, D und E entsprechen, jedoch davon jeweils verschiedene Werte haben.
  23. Vorrichtung (100) nach Anspruch 22, wobei die Koeffizienten für Primitive F1(x), F2(x), ..., Fp(x) geheim sind und ein Nachricht-Authentifikation-Code aus den Parametern gebildet wird.
  24. Vorrichtung (100) nach Anspruch 23, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte yN und einer Summe der Zwischenergebnisse umfasst.
  25. Vorrichtung (100) nach Anspruch 23, wobei der Prozessor (340) des Weiteren so eingerichtet ist, dass er in Reaktion auf die ausführbaren Befehle den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte yN und
    Figure 00310001
    durchführt, wobei für jedes i, yi einen vordefinierten oder zufälligen Wert innerhalb eines Bereiches einschließlich ± k aufweist, wobei k eine vordefinierte ganze Zahl ist.
  26. Vorrichtung (100) nach Anspruch 22, wobei die Koeffizienten für Primitive F1(x), F2(x), ..., Fp(x) öffentlich bekannt sind und der Parameter eine Prüfsumme ist.
  27. Vorrichtung (100) nach Anspruch 26, wobei der Schritt des Erzeugens des Parameters des Weiteren den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und einer Summe der Zwischenergebnisse umfasst.
  28. Vorrichtung (100) nach Anspruch 26, wobei der Prozessor (340) des Weiteren so eingerichtet ist, dass er in Reaktion auf die ausführbaren Befehle den Schritt des Produzierens des Parameters als eine Verknüpfung der Werte von yN und
    Figure 00310002
    durchführt, wobei für jedes i, yi einen vordefinierten oder zufälligen Wert innerhalb eines Bereiches einschließlich ± k aufweist, wobei k eine vordefinierte ganze Zahl ist.
  29. Vorrichtung (100) nach einem der Ansprüche 16 bis 28, wobei die kryptographischen Eigenschaften des Primitivs im Wesentlichen äquivalent zu den Eigenschaften der vordefinierten Funktion sind.
DE60036499T 1999-06-09 2000-06-09 Eine Technik, um einen Parameter, wie z.b. eine Prüfsumme, durch ein Primitiv zu erzeugen, welche elementare Register-Operationen verwendet Expired - Lifetime DE60036499T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/329,138 US6483918B2 (en) 1999-06-09 1999-06-09 Technique for producing a parameter, such as a checksum, through a primitive that uses elementary register operations
US329138 1999-06-09

Publications (2)

Publication Number Publication Date
DE60036499D1 DE60036499D1 (de) 2007-10-31
DE60036499T2 true DE60036499T2 (de) 2008-01-10

Family

ID=23284016

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60019432T Expired - Lifetime DE60019432T2 (de) 1999-06-09 2000-06-09 Eine technik, um einen parameter, wie z.b. eine prüfsumme, durch ein primitiv zu erzeugen, welche elementare register-operationen verwendet
DE60036499T Expired - Lifetime DE60036499T2 (de) 1999-06-09 2000-06-09 Eine Technik, um einen Parameter, wie z.b. eine Prüfsumme, durch ein Primitiv zu erzeugen, welche elementare Register-Operationen verwendet

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE60019432T Expired - Lifetime DE60019432T2 (de) 1999-06-09 2000-06-09 Eine technik, um einen parameter, wie z.b. eine prüfsumme, durch ein primitiv zu erzeugen, welche elementare register-operationen verwendet

Country Status (10)

Country Link
US (1) US6483918B2 (de)
EP (2) EP1208416B1 (de)
JP (1) JP2003501698A (de)
AT (2) ATE373906T1 (de)
AU (1) AU7469500A (de)
DE (2) DE60019432T2 (de)
DK (1) DK1208416T3 (de)
ES (1) ES2235946T3 (de)
HK (1) HK1081021A1 (de)
WO (1) WO2000075750A2 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6657625B1 (en) * 1999-06-09 2003-12-02 Microsoft Corporation System and method of caching glyphs for display by a remote terminal
US7676438B2 (en) * 1999-10-27 2010-03-09 Ncr Corporation Personal digital assistant as smart card
US7505046B1 (en) * 2000-05-02 2009-03-17 Adobe Systems Incorporated Preserving opaque-like rendering in transparent 2D graphics using knockout groups
CN1202648C (zh) * 2002-06-07 2005-05-18 周颖平 用手机短信息进行无线遥控的方法
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7844053B2 (en) 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US8060755B2 (en) * 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7502943B2 (en) * 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7925891B2 (en) * 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7539876B2 (en) * 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7542566B2 (en) * 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7529367B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7900055B2 (en) * 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7536560B2 (en) 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7519833B2 (en) * 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7528834B2 (en) * 2003-09-30 2009-05-05 Microsoft Corporation System and method of caching glyphs for display by a remote terminal
WO2006040682A2 (en) * 2004-10-13 2006-04-20 Synaptic Laboratories Limited Process of and apparatus for encoding a digital input
EP1966670B1 (de) * 2005-12-29 2017-08-23 Telecom Italia S.p.A. Verfahren zum übermitteln von berechtigungsdaten von einem server, diesbezüglicher server, client-systeme und computerprogrammprodukt
US7930551B2 (en) * 2006-05-15 2011-04-19 Arris Group, Inc. Method and system for reusing an MMH function to perform a fast MMH-MAC calculation
FR2907622A1 (fr) * 2006-10-19 2008-04-25 St Microelectronics Sa Procede de transmission de donnees utilisant un code d'accuse de reception comportant des bits d'authentification caches
JP5487966B2 (ja) 2007-07-03 2014-05-14 日本電気株式会社 データ暗号化/復号化処理方法およびデータ処理装置
US8161166B2 (en) * 2008-01-15 2012-04-17 Adobe Systems Incorporated Information communication using numerical residuals
US8082320B1 (en) * 2008-04-09 2011-12-20 Adobe Systems Incorporated Communicating supplemental information over a block erasure channel

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
US5724428A (en) 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations
JP3013774B2 (ja) * 1996-03-13 2000-02-28 日本電気株式会社 循環演算にもとづく暗号化装置
JP3024549B2 (ja) * 1996-04-26 2000-03-21 日本電気株式会社 循環演算にもとづく暗号文の復号化方法および装置
JPH118616A (ja) * 1997-06-17 1999-01-12 Dainippon Printing Co Ltd 故障利用攻撃対応icカード
US6570988B1 (en) * 1999-06-09 2003-05-27 Microsoft Corporation Simple technique for implementing a cryptographic primitive using elementary register operations

Also Published As

Publication number Publication date
US20020110239A1 (en) 2002-08-15
WO2000075750A3 (en) 2001-02-15
HK1081021A1 (en) 2006-05-04
EP1555777A2 (de) 2005-07-20
ES2235946T3 (es) 2005-07-16
EP1208416A4 (de) 2003-03-12
EP1208416A2 (de) 2002-05-29
AU7469500A (en) 2000-12-28
EP1208416B1 (de) 2005-04-13
DE60019432T2 (de) 2005-09-01
JP2003501698A (ja) 2003-01-14
ATE293262T1 (de) 2005-04-15
US6483918B2 (en) 2002-11-19
EP1555777B1 (de) 2007-09-19
EP1555777A3 (de) 2005-09-14
ATE373906T1 (de) 2007-10-15
DK1208416T3 (da) 2005-07-11
DE60019432D1 (de) 2005-05-19
DE60036499D1 (de) 2007-10-31
WO2000075750A2 (en) 2000-12-14

Similar Documents

Publication Publication Date Title
DE60036499T2 (de) Eine Technik, um einen Parameter, wie z.b. eine Prüfsumme, durch ein Primitiv zu erzeugen, welche elementare Register-Operationen verwendet
DE60026868T2 (de) Ein einfaches implementierungsverfahren für kryptographische primitiva mittels elementar-register-operationen
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE60222052T2 (de) Verschlüsselung gesichert gegen Angriffe durch die Analyse der Leistungsaufnahme (DPA)
DE69829938T2 (de) Verfahren zum Einführen von elektronischem Geld für einen Emittent mit elektronischen Saldo-Zählern, entsprechende Vorrichtung und Speicherelement mit gespeichertem Programm zur Durchführung des Verfahrens
DE102005012098B4 (de) Datenchiffrierprozessor sowie AES-Chiffriersystem und AES-Chiffrierverfahren
DE60023705T2 (de) Sichere verteilung und schutz einer schlüsselinformation
DE68918971T2 (de) Vorrichtung und Verfahren zur persönlichen Identifizierung.
DE2843583C2 (de) Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal
DE69022610T2 (de) Verfahren zum Chiffrieren von übertragenen Daten, das einen Einheitsschlüssel anwendet.
DE10201449C1 (de) Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
DE69101257T2 (de) Verfahren zur Erlangung einer geschätzten Klarbeglaubigung in verteilten Informationssystemen.
DE3685987T2 (de) Verfahren zum vermindern der fuer eine rsa-verschluesselung benoetigten veraenderlichen speicherkapazitaet.
DE602004013206T2 (de) Verfahren und diesbezügliche einrichtung zur hardwareorientierten umsetzung zwischen arithmetik- und boolscher zufallsmaskierung
DE60119620T2 (de) Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung
EP1298834B1 (de) Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
WO2008128528A2 (de) Abhör- und manipulationssichere verschlüsselung für online-accounts
DE10143728A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation
WO2020126078A1 (de) Verfahren zum erzeugen einer blinden signatur
DE10304451B3 (de) Modulare Exponentiation mit randomisiertem Exponenten
EP3340527A1 (de) Verfahren und vorrichtung zum rechnergestützten erstellen eines transaktionsdatensatzes
EP3576001A1 (de) Computerimplementiertes verfahren zum übergeben eines datenstrings von einer anwendung an eine datenschutzeinrichtung
DE60203909T2 (de) Kryptographisches verfahren zum schutz eines elektronischen chips gegen betrug
DE10248006B4 (de) Verfahren und Vorrichtung zum Verschlüsseln von Daten
EP2894811B1 (de) Verfahren zur Sicherstellung von Authentizität, Integrität und Anonymität einer Datenverknüpfung, insbesondere bei Präsentation der Datenverknüpfung in Form eines zweidimensionalen optischen Codes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition