DE60316586T2 - Effiziente arithmetik in galois-feldern ungerader charakterstik auf binärer hardware - Google Patents

Effiziente arithmetik in galois-feldern ungerader charakterstik auf binärer hardware Download PDF

Info

Publication number
DE60316586T2
DE60316586T2 DE60316586T DE60316586T DE60316586T2 DE 60316586 T2 DE60316586 T2 DE 60316586T2 DE 60316586 T DE60316586 T DE 60316586T DE 60316586 T DE60316586 T DE 60316586T DE 60316586 T2 DE60316586 T2 DE 60316586T2
Authority
DE
Germany
Prior art keywords
register
binary
bits
bit
contents
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
DE60316586T
Other languages
English (en)
Other versions
DE60316586D1 (de
Inventor
Rolf Blom
Mats NÄSLUND
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of DE60316586D1 publication Critical patent/DE60316586D1/de
Publication of DE60316586T2 publication Critical patent/DE60316586T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf Verfahren und Vorrichtungen zum effizienten Ausführen von Berechnungen in finiten Feldern ungerade Primzahlencharakterisik auf binärer Hardware. Die Erfindung ist insbesondere nützlich zum ausführen solcher Berechnungen bei der Kryptographie und bei Fehlerkorrektur, ist aber auf solche Fälle nicht beschränkt.
  • Hintergrundinformation
  • Einige grundlegender Aspekte finiter Felder Ein finites Feld (auch Galois-Feld genannt) ist eine finite algebraische Struktur, die zwei wohldefinierte Operationen besitzt: eine "Addition" und eine "Multiplikation". Ein finites Feld mit N Elementen existiert, falls und nur falls N die Potenz einer Primzahl ist, d. h. N = pn für einige Primzahlen p = 2, 3, 5, ..., wie etwa in R. Lidl und H. Niederriter, Introduction to finite Fields and Their Applications, Cambridge University Press, Cambridge, Wiederauflage 1994, diskutiert wird. Dieses Feld ist einmalig bis zu einem Isomorphismus und wird normalerweise als GF(pn) bezeichnet. Für eine Primzahl p ist das Grundfeld GF(p) einfach die Ganzzahlen unter Addition und Multiplikation Modulo p. Im Allgemeinen, falls F ein Feld von q = pk Elementen ist (d. h. F = GF(pk)), kann das Erweiterungsfeld des Grades l definiert werden, das als F[t]/(f(t)) bezeichnet wird, wobei f(t) ein Polynom des Grades l ist, das über F nicht reduzierbar ist. Dieses Erweiterungsfeld kann auch als GF(plk) bezeichnet werden. Dies ergibt dann das (einmalige) finite Feld von ql Elementen. Anders ausgedrückt ist dies das Feld von plk = pn Elementen. Die Nummer p wird die Charakteristik des Felds genannt. Die wohlbekannte Tatsache, dass die zwei Felder der gleichen Größe isomorph sind, bedeutet nicht notwendigerweise, dass die Abbildung zwischen den Feldern trivial ist. Jedoch sind Konstruktionen solcher Abbildungen für die vorliegende Erfindung nicht notwendig und jedenfalls liegen innerhalb der Fähigkeiten ? eines Durchschnittsfachmanns und werden in Lehrbüchern diskutiert, wie etwa der oben angegebenen Introduction to Finite Fields and Their Applications.
  • Es gibt zwei vorrangige Wege, ein finites Feld zu repräsentieren. Eine Repräsentierung ist die Normalbasisrepräsentation, die Durchschnittsfachleuten wohlbekannt ist und als solche in Introduction to Finite Fields and Their Applications, oben angegeben, beschrieben ist. Der Hauptvorteil bei einer Normalbasis ist, dass sie das Multiplizieren von Elementen mit sich selbst erleichtert, d. h. Quadrieroperationen. Die Normalbasisrepräsentation wird hier nicht weiter diskutiert. Einige Berechnungsaspekte, die mit Normalbasisrepräsentationen assoziiert sind, werden im US-Patent Nr. 4,587,627 (Berechnungsverfahren und Apparat für finite Feldarithmetik), US-Patent Nr. 4,567,600 (Methode und Apparat zur Aufrechterhaltung der Privatheit von über öffentliche Übertragung transportierten Digitalnachrichten) und US Patent Nr. 5,854,759 (Verfahren und Apparat zur effizienten finiten Feldbasisumwandlung) diskutiert.
  • Eine andere Repräsentation ist als Polynominalbasis-Repräsentation bekannt. In dieser Repräsentation kann man sich Feldelemente von GF(pk) als Polynome des Grades von maximal k – 1 vorstellen, deren Koeffizientenfeldelemente des Grundfeldes GF(p) sind, d. h. Ganzzahlen im Satz (0, ..., p – 1). Ein typisches Element γ im Feld kann daher ausgedrückt werden als γ = γk-itk-i + ... + γit + γ0 (1)für einige Ganzzahlen γi, wobei 0 ≤ γi ≤ p – I, und wobei t eine formale Variable ist. Das Feldelement γ kann auch als der k-dimentionale Vektor (γk-l' ..., γl, γ0) angesehen werden und die Polynombasis-Repräsentation wie hier referenziert, soll diese Ansicht beinhalten. Ein anderer Aspekt der Polynombasis- Repräsentantion ist die Wahl eines Polynoms h(t) des Grades k und unreduzierbar über GF(p), das in der Multiplikation von Feldelementen verwendet wird. Dies wird detaillierter unten diskutiert. Weil jegliche zwei Felder derselben Größe isomorph sind, ist es irrelevant, welches reduzierbare h(t) gewählt wird. Vom Systemstandpunkt aus ist h(t) ein Systemparameter, der im Hinblick auf die bestimmte Verwendung vereinbart wird.
  • Wie oben angemerkt, kann ein Erweiterungsfeld des Grades l über das Feld F = GF(pk) als F[t]/f(t)) oder als GF(plk) bezeichnet werden. Ein Element des Erweiterungsfeldes kann als ein Polynom des Grades von maximal l – 1 angesehen werden, dessen Koeffizienten Elemente von GF(pk) sind. Anders ausgedrückt kann ein Element des Erweiterungsfeldes angesehen werden als ein Polynom mit anderen Polynomen als Feldkoeffizienten. Ein Element γ des Erweiterungsfeldes kann geschrieben werden als γ = γl-1tl-1 + ... + γ1t + γ0 (2)wobei jedes γj ein Polynom des Grades von maximal k – 1 ist, das Koeffizienten im Satz (0, ..., p – 1) hat. Somit können die Polynome γj geschrieben werden als γj = γ–k-1juk-1 + ... + γ1ju + γ0j (3)wo für diese Polynome eine andere formale Variable u gewählt worden ist, um zu vermeiden, dass sie mit dem Erweiterungsfeldpolynom verwechselt werden, dessen formale Variable t ist. Diese Erweiterungsfeldformulierung unter Verwendung einer Polynombasis-Repräsentation wird verwendet werden, um die vorliegende Erfindung zu beschreiben.
  • Die Summe zweier Elemente α, β in GF(pk) ist definiert durch einfache Addition der entsprechenden Polynome (oder äquivalent, Vektoren): α + β = (αk-1 + βk-1)tk-1 + ... + (α1 + β1)t + (α0 + β0) (4) wobei jeder Ganzzahlkoeffizient (αi + βi) als Modulo p berechnet wird. Die Komplexität (ausgedrückt als Anzahl von Modulo-p-Operationen) des Addierens zweier Elemente bei direkter Verwendung der Definition in Gleichung 4 oben ist gleich k. Beispielsweise kann für das finite Feld GF(32), wo p = 3, ein Feldelement α = (2, 1) in Vektornotation als Polynom α = 2t + 1 geschrieben werden und ein Feldelement β = (2, 2) in Vektornotation kann als Polynom β = 2t + 2 geschrieben werden. Die Summe dieser Feldelemente ist (α + β) = (2 + 2)t + (1 + 2) wobei jeder Koeffizient Modulo 3 evaluiert wird (mod 3). Somit reduziert sich die Summe auf (α + β) = t, weil 4 mod 3 = 1 und 3 mod 3 = 0. In Vektornotation ist die Summe (1, 0).
  • Das Produkt der zwei Feldelemente wird durch Bilden ihrer Produktmodulierung h(t) gebildet, wobei h(t) ein Polynom des Grades k und unreduzierbar (d. h., kann nicht faktorisiert werden) über GF(p) ist: α·β = δ2k-2t2k-2 + δ2k-3t2k-3 + ... + δ1t + δ0 mod h(t) (5)wobei δi = Σjαjβi-j mod p. Hier bedeutet "mod h(t)" die Verwendung des Rests bei Division durch h(t) unter Verwendung von Standardpolynomdivision. Dies lässt das Resultat mit einem Grad strikt kleiner als dem von h(t), d. h. weniger als k, wie gewünscht. Die Komplexität der Multiplikation von zwei Elementen gemäß dieser Definition ist klar in der Größenordnung von k2. Alternativ kann unter Verwendung des Durchschnittsfachleuten bekannten Karatsuba-Algorithmus die Multiplikation (asymptotisch in k) mit ungefähr k1,6 Operationen durchgeführt werden, aber dieser Algorithmus involviert eine größere Verwaltung der Berechnungen. Der Karatsuba-Algorithmus ist daher nur nützlich für große Werte von k, beispielsweise k > 100, wie angemerkt in §4.4.3 von D. Knuth, Seminumerical Algorithmus, Band 2 von The Art of Computer Programming, 2. Auflage, Addison-Esley-Reading, MA, 1981.
  • Als ein Beispiel, um die Feldelemente α = (2, 1) und β = (2, 2) des finiten Feldes GF(32) zu multiplizieren, muss ein über GF(3) unreduzierbares Polynom h(t) des Grades k = 2 gewählt werden und die Polynome 2t + 1 und 2t + 2 werden dann Modulo h(t) multipliziert. Ein geeignetes unreduzierbares Polynom ist h(t) = t2 + t + 2. Dann α·β = (4t2 + 6t + 2) mod h(t) = 4(t2 + t + 2) + 2t – 6 = 2t (weil 2 mod 3 = 2 und 6 mod 3 = 0). Somit ist α·β = 2t, oder (2, 0) in Vektornotation.
  • Für ein Erweiterungsfeld (das auch als Kompositfeld bezeichnet wird) sind die Formeln für Addition und Multiplikation die gleichen. Jedoch wird wahrgenommen, dass alle Koeffizient-weisen Operationen über dem Grundfeld aufgeführt werden, was selbst wieder polynome Arithmetik involvieren kann.
  • Subtraktion am finiten Feld kann vorgenommen werden, indem einfach wahrgenommen wird, dass in Feld GF(p) das Negative eines Elementes x gleich p – x ist. Somit kann ein Element x durch p – x ersetzt werden, um das Negative zu erhalten und dann kann eine normale Koeffizienten-weise Addition durchgeführt werden, um die Subtraktion zu erhalten. Eine Division kann ausgeführt werden, indem das Inverse multipliziert wird, wie Fachleuten bekannt.
  • Konventionelle Verwendung finiter Felder
  • Die Verwendung von finiten Feldern ist für viele Anwendungen von zentraler Bedeutung. Insbesondere für Kommunikationszwecke sind finite Felder sehr nützlich. Beispielsweise kann man durch Einbetten von Nachrichten in ein finites Feld Nachrichten so senden, dass im Übertragungsmedium eingeführte Fehler am Empfängerende korrigiert werden können. Dies ist das Prinzip hinter Fehlerkorrekturcodes. Zusätzlich können finite Felder verwendet werden, um Schutz (Vertraulichkeit, Integrität, Herkunfts-Authentifizierung und Nichtrückweisbarkeit) für Nachrichten mittels Verschlüsselung, Nachrichten-Authentifizierung und digitalen Signaturen zu erlangen.
  • Um nützlich zu sein, müssen diese Codier- und Verschlüsselungsoperationen, die finite Felder involvieren, so effizient wie möglich sein, insbesondere falls die Berechnungen auf einer leichtgewichtigen Plattform vorgenommen werden, wie etwa einem Mobiltelefon oder einer anderen tragbaren Vorrichtung. Beispielsweise verwenden viele kryptographischen Verfahren die folgende Exponentierungsoperation
    Figure 00060001
    wobei g ein Element in der multiplikativen Gruppe eines finiten Feldes ist, x eine Ganzzahl ist und "·" Multiplikation im finiten Feld bezeichnet. Der Grund für die Verwendung der expg(x) Funktion ist, dass expg(x) mit nur ungefähr (log2x)3 Feldmultiplikationen im Grundfeld berechnet werden kann, jedoch kein effizienter (d. h. Polynomzeit in log2x) Algorithmus für die inverse Transformation zum Finden von x aus expg(x) existiert. Das Letztere ist als das diskrete Logarithmus-Problem bekannt. Anders ausgedrückt ist expg(x) ein starker Kandidat für eine sogenannte Einwegefunktion, eine Funktion, die leicht zu berechnen ist, aber schwierig umzukehren. Das diskrete Logarithmus-Problem ist Durchschnittsfachleuten wohlbekannt und ist beispielsweise in Handbook of Applied Kryptography von A. Menezes, P. van Oorschot und S. A. Vanstone, CRC Press, Boca Raton, Florida, 1997, diskutiert.
  • Jedoch können auf einer rechenleistungssmäßig schwachen Plattform selbst (log2x)3 Multiplikationen berechnungsmäßig zu viel sein und für aktuell empfohlene Feldgrößen (z. B. Schlüsselgröße) können solche Berechnungen beispielsweise in vielen Situationen etwa 30 Sekunden erfordern. Eine konventionelle Weise zum Verbessern der Leistungsfähigkeit besteht darin, die Berechnungen auf binäre finite Felder (Felder der Charakteristik Zwei) zu beschränken. Das Beschränken von Berechnungen auf binäre finite Felder verbessert die Leistung, weil die meiste verfügbare Hardware von Natur aus binär ist (z. B. CPUs etc.). Daher können Feldoperationen aus elementaren Binäroperationen zusammengesetzt sein, wie etwa bitweise XORs, die direkt und effizient von der Hardware unterstützt werden.
  • Zusätzlich sind Methoden zur Verbesserung der Effizienz beim Ausführen von Berechnungen unter Verwendung eines binären Erweiterungsfeldes entwickelt worden, dessen Erweiterungsgrad eine Compositzahl (Nicht-Primzahl) ist, wie in E. De Win, A. Bosselaers, S. Vanderberghe, P. De Gersem, und J. Vandewalle, "A fast Software Implementation for Arithmetic Operations in GF(2n)", Advances in Kryptology, Proceedings of Asiacrypt '96, LNCS 1163, Springer-Verlag, Berlin, 1996, Seiten 65–76 (nachfolgend "De Win et al.") offenbart. In Verfahren nach De Win et al. wird angenommen, dass eine Standardbinärwertarchitektur in der Lage ist, Operationen (normale Arithmetik und Bitoperationen) an k Bit-Quantitäten (d. h. die Wortlänge beträgt k Bits) durchzuführen. Es wird weiterhin angemerkt, dass für ein (Binär-)Feld gerader Charakteristik, wo p = 2 ist, die Bildung des Restes Modulo 2 durch eine einfache Bit-Operation vorgenommen werden kann.
  • Wenn n keine Primzahl ist, wird das finite Feld GF(2n) als eine "nicht-triviale" Erweiterung des Grades l über GF(2k) angesehen, wo n = lk und l, k > 1. Somit kann ein Element im Feld geschrieben werden als γ = γl-1tl-1 + ... + γ1t + γ0, (7)wo jedes γi ein Element von GF(2k) ist. Das Addieren von Feldelementen α und β in dieser Repräsentation kann durch Ausführen der Operation: α + β = (αl-1 + βl-1)tl-1 + ... + (α1 + β1)t + (α0 + β0) (8)ausgeführt werden. Da α1, βi Elemente von GF(2k) sind, kann ihre Summe, αi + βi als bitweises XOR zwischen αi und βi berechnet werden. Somit, falls k klein genug ist, um in das Hardware-Register zu passen (typischerweise k ≤ 32) können k Additionen parallel unter Verwendung nur einer Operation in der Hardware durchgeführt werden und ein Faktor k wird bei der Geschwindigkeit der Ausführung der Addition gewonnen.
  • Eine Multiplikation unter Verwendung des De Win et al. Verfahrens wird ausgeführt, wobei bemerkt wird, dass die multiplikative Gruppe von GF(2k) (oder irgendein anderes finites Feld) immer zyklisch ist, was bedeutet, dass es ein Element g in GF(2k) gibt, bei dem irgendein Nicht-Null-Element αj im Feld als αj = gx für eine Ganzzahl 0 ≤ x < 2k – 1 geschrieben werden kann (d. h., x ist der diskrete Logarithmus von αj, und g ist als der Generator bekannt). Falls k moderat groß ist (z. B. k ≤ 16), kann der Generator g durch eine erschöpfende Suche gefunden werden. Auch in diesem Fall (z. B., k ≤ 16) kann eine Tabelle ANTILOG{x} von gx für alle x gebildet werden, bei denen 0 ≤ x < 2k – 1 ist. Zusätzlich kann auch eine Tabelle für die diskreten Logarithmen, DLOG{αj} für alle Nicht-Null αj im Feld GF(2k) gebildet werden. Das heißt, ANTILOG{DLOG{αj}} = αj (9)und DLOG{ANTILOG{x}} = x (10)für alle solchen αj und x. Das Produkt von α und β in GF(p) wird gemäß der Formel berechnet: α·β = δ2l-2t2l-2 + δ2l-3t2l-3 + ... + δ1t + δ0 mod f(t) (11)wo δi = Σjαjβi-j als Summe von Produkten berechnet wird und alle Operationen im Feld GF(2k) stattfinden. Wenn gegeben wird, dass gxgy = gx+y kann jeder Term αjβi-j durch drei Tabellennachschlagungen in der oben erwähnten vorberechneten Tabelle gemäß der Gleichung αjβi-j = ANTILOG{DLOG{αj} + DLOG{βi-j} mod (2k – 1)} (12)berechnet werden.
  • Die Speicheranforderung beträgt etwa k·2k-2 Bytes und die Anzahl von Operationen, um die Multiplikation durchzuführen, liegt in der Größenordnung von l2 = (n/k)2. Ein Faktor von k2 wird somit bei der Geschwindigkeit gewonnen. Der Ansatz erfordert vorberechnete Tabellen und erfordert Speicher zum Speichern dieser Tabellen. Falls k moderat ist (z. B. k ≤ 16), ist es möglich, dieses Verfahren unter Verwendung von in etwa 2k Vorberechnungsoperationen zu benutzen.
  • Im Gegensatz dazu ist für finite Felder ungerader Charakteristik p, wo p eine ungerade Primzahl ist, die Situation komplizierter als für binäre finite Felder, weil die für ungerad-charakteristische finite Felder benötigten grundlegenden Operationen Nicht-Modulo-2 Operationen (Bit-Operationen) sind, sondern stattdessen Modulo-p Operationen. Beispielsweise ist das De Win et al. Additionsverfahren, wie hier beschrieben, nicht auf finite Felder ungerader Charakteristik (p = 3, 5, 7, ...) anwendbar und es ist nach Kenntnis der Anmelderin nicht über ein ähnliches Verfahren für finite Felder ungerader Charakteristik berichtet worden. Das Ausführen von ungeraden Charakteristik-Finitfeldberechnungen in konventioneller Weise involviert modulare Arithmetik, die lange Divisionen erfordert. Die meiste Hardware unterstützt modulare Arithmetik, aber nur auf einem wortorientierten Niveau. Somit sind die oben erwähnten Optimierungen für Berechnungen, die binäre finite Felder involvieren, für Berechnungen nicht realisiert worden, die ungerad-charakteristische finite Felder involvieren.
  • Aus den angemerkten Gründen sind binäre finite Felder die meist verwendeten finiten Felder bei Fehlerkorrektur und Kryptographie. Jedoch merken die Anmelder an, dass das Beschränken solcher Berechnungen auf Binärfelder Nachteile haben kann. Beispielsweise sind Algorithmen zum Invertieren der oben erwähnten expg(x) Funktion effizienter, falls das Feld die Charakteristik Zwei (ein Binärfeld) hat, als wenn das Feld eine Charakteristik aufweist, die ungerade ist. Somit kann erwartet werden, dass die kryptographische Stärke der Funktion expg(x) für Binärfelder kleiner ist als für allgemeine ungerad-charakteristische finite Felder. In der Tat ist jüngst suggeriert worden, dass das Implementieren von Kryptographie unter Verwendung finiter Felder ungerader Charakteristik (siehe US-A-2002/0062330 ) und Compositgrad verbesserte kryptographische Sicherheit im Vergleich zu anderen kryptographischen Ansätzen, die finite Felder involvieren, bereitstellen kann und dass die Gewinne hinsichtlich der kryptographischen Sicherheit nach der Erwartung die computationalen Kosten solcher Berechnungen überwiegen (siehe K. Rubin und A. Silverberg, "Supersingular Abelian Varieties in Kryptology", Krypto 2002, Lecture Notes in Computer Science, Bd. 2442, Herausgeber M. Jung, Springer-Verlag, Berlin, Seiten 336–353, 2002). Zusätzlich sind im Falle von Binärfeldern compositen Grades, wo die in dem oben referierten De Win et al. Artikel beschriebenen Optimierungen anwendbar sind, Attacken auf Elliptische-Kurven-Kryptosysteme über solche Felder jüngst gefunden worden, wie in N. P. Gaudry-F. Hess und N. P. Smart "Constructive and Destructive Facets of Weil Descent an Elliptic Curves", Technical Report CSTR-00-016, Abteilung für Computerwissenschaft, Universität Bristol, Okt. 2000, und in N. P. Smart, "How secure are elliptic curves over composite extension fields?", Technischer Bericht CSTR-00-016, Abteilung für Computerwissenschaft, Universität Bristol, Nov. 2000, beschrieben. Somit ist es ratsam, solche binären Felder von compositem Grad zur Verschlüsselung zu vermeiden. Diese Attacken sind viel weniger effektiv, falls das finite Feld eine ungerade Charakteristik hat (selbst falls der Grad nicht prim ist), somit sind sie in diesem Fall keine relevante Bedrohung. Jedoch, wie oben erwähnt, erfordert das Verwenden konventioneller Berechnungsverfahren, die finite Felder von Ungerad-Charakteristik involvieren, das Opfern der Berechnungsoptimierungen, die ansonsten bei Verwendung einer binären finiten Feldstruktur gewonnen würden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Anmelder haben einen Bedarf für einen Berechnungsansatz erkannt, der das Beschleunigen von Berechnungen, die grundlegende finite Feldoperationen involvieren (z. B. Addition, Multiplikation etc.), für nicht-binäre finite Felder ermöglicht, selbst falls die verfügbare Hardware von binärer Natur ist und welcher die Notwendigkeit für eine spezielle Modulo-p Hardware reduziert. Zusätzlich haben die Anmelder einen Bedarf für einen Berechnungsansatz für nicht-binäre finite Felder erkannt, der Registerraum effizienter als konventionelle Verfahren einsetzt. Beispielsweise ist es möglich, eine konventionelle Modulo-p Arithmetik unter Verwendung einer 32-Bit CPU durchzuführen, aber falls p klein ist (z. B. p = 3 oder p = 7) ist es ineffizient, 32 Bit Registerraum für die Operationen zuzuweisen, da die involvierten Quantitäten (Feldelementkoeffizienten) nur 2 oder 3 signifikante Bits haben werden. Die Anmelder haben erkannt, dass es wünschenswert wäre, eine effizientere Verwendung vom verfügbaren Registerraum zu machen, gegeben, dass die involvierten Zahlen recht klein sind. Die vorliegende Erfindung erfüllt diese und andere Erfordernisse und stellt Vorteile bereit, die für Fachleute erkenntlich werden, wenn sie detaillierte Beschreibungen in Verbindung mit mit beigefügten den Zeichnungen lesen.
  • Es sollte betont werden, dass die Ausdrücke "umfassen" und "umfassend", wenn in dieser Spezifikation verwendet, so aufgefasst werden sollen, dass sie die Anwesenheit von angebenden Merkmalen, ganzen Zahlen, Schritten oder Komponenten spezifizieren; aber die Verwendung dieser Ausdrücke schließt nicht die Anwesenheit oder Hinzufügung einer oder mehrerer anderer Merkmale, Ganzezahlen, Schritte, Komponenten oder Gruppen derselben aus. In einem Aspekt der vorliegenden Erfindung wird eine Vorrichtung wie im unabhängigen Anspruch 1 definiert bereitgestellt.
  • In einem anderen beispielhaften Aspekt der vorliegenden Erfindung wird ein Verfahren zum Ausführen von Berechnungen bereitgestellt, die Feldelemente eines ungerad-charakteristischen finiten Feldes GF(pk) involvieren, wie im unabhängigen Anspruch 12 definiert.
  • Weitere Ausführungsformen der Erfindung sind in den angehängten abhängigen Ansprüchen definiert.
  • Wie hierin verwendet, soll die Terminologie "gemäß einer Polynombasis-Repräsentation" jegliche Repräsentation beinhalten, die mathematisch äquivalent zu einer Polynombasis-Repräsentation ist, einschließlich beispielsweise einer Vektor-Repräsentation.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, das ein System zum Ausführen von Berechnungen illustriert, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes gemäß einem beispielhaften Effekt der vorliegenden Erfindung involviert.
  • 2A ist eine schematische Illustration eines Hardware-Registers mit einem Datenspeicherschema, das in einer Einzel-Schutzbit-Repräsentation konfiguriert ist, gemäß einem beispielhaften Aspekt der vorliegenden Erfindung für das Beispiel von GF(310)
  • 2B ist eine andere schematische Illustration eines Hardware-Registers mit einem Datenspeicherschema, das in einer Einzel-Schutzbit-Repräsentation konfiguriert ist, gemäß einem beispielhaften Aspekt der vorliegenden Erfindung für das Beispiel von GF(75).
  • 2C ist eine schematische Illustration eines Hardware-Registers mit einem Datenspeicherschema, das in einer Multi-Schutzbit-Repräsentation konfiguriert ist, gemäß einem beispielhaften Aspekt der vorliegenden Erfindung für das Beispiel von GF(38).
  • 3 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes gemäß einem beispielhaften Aspekt der vorliegenden Erfindung repräsentieren.
  • 4 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, um die Summe der zwei Feldelemente zu bestimmen, wo p = 2m – 1, gemäß einem Verfahren, das in 3 gemäß einem beispielhaften Aspekt der vorliegenden Erfindung illustriert ist.
  • 5 ist eine schematische Illustration von Registerinhalten für ein Beispiel der Addition in GF(310) gemäß dem in 4 illustrierten Verfahren.
  • 6 ist ein Funktionsblockdiagramm einer Hardware-Vorrichtung zum Ausführen von Berechnungen, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes involvieren, bei dem p = 2m – 1 ist, gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 7 ist ein anderes Funktionsblockdiagramm einer Hardware-Vorrichtung zum Ausführen von Berechnungen, die Feldelemente eines Ungerad-Charakteristik finiten Feldes involvieren, bei dem p = 2m – 1 ist, gemäß einem anderen beispielhaften Aspekt der vorliegenden Erfindung.
  • 8A ist eine schematische Illustration einer Schutzbit-Einfügungsschaltung zur Verwendung in Verbindung mit der in 7 illustrierten Vorrichtung gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 8B ist eine schematische Illustration einer beispielhaften Schutzbit-Entfernungsschaltung zur Verwendung in Verbindung mit der in 7 illustrierten Vorrichtung gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 9 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes repräsentieren, um das Produkt solcher Elemente zu bestimmen, gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 10A ist eine schematische Illustration einer DLOG-Nachschlagtabelle zur Verwendung im in 9 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 10B ist eine Indextabelle, die die finiten Feldelemente a(t) und entsprechende Erzeugerpotenzen n, gemäß der in 10A illustrierten Binärinformation reflektiert.
  • 11A ist eine schematische Illustration einer ANTILOG-Nachschlagtabelle zur Verwendung im in 9 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 11B ist eine Indextabelle, welche die finiten Feldelemente a(t) und entsprechende Erzeugerpotenzen n reflektiert, die der in 11A illustrierten Binärinformation entsprechen.
  • 12 ist ein funktionales Blockdiagramm, das eine Hardware-Vorrichtung zum Ausführen von Multiplikation von Feldelementen eines Ungerad-Charakteristik-finiten Feldes gemäß einem beispielhaften Aspekt der vorliegenden Erfindung illustriert.
  • 13 ist eine schematische Illustration eines Kompressionsvorgangs zum Komprimieren von in einem Register in einer multiplen Schutzbit-Repräsentation gespeicherten Binärdaten gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 14 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, um die Summe von zwei Feldelementen zu bestimmen, bei denen p = 2m + 1 ist, gemäß dem in 3 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 15 ist eine schematische Illustration von Registerinhalten für ein Beispiel der Addition in GF(56) gemäß dem in 14 illustrierten Verfahren.
  • 16 ist ein Funktionsblockdiagramm einer Hardware-Vorrichtung zum Ausführen von Berechnungen, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes involvieren, bei dem p = 2m + 1, gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 17 ist ein anderes Funktionsblockdiagramm einer Hardware-Vorrichtung zum Ausführen von Berechnungen, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes involvieren, bei dem p = 2m + 1, gemäß einem anderen beispielhaften Aspekt der vorliegenden Erfindung.
  • 18 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, um die Summe von zwei Feldelementen zu bestimmen, wo p = 2m – d und d ≤ (2m + 1)/3, gemäß dem in 3 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 19 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, um die Summe von zwei Feldelementen zu bestimmen, wo p = 2m – d und (2m + 1)/3 < d < 2m – 1, gemäß dem in 3 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 20 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, um die Summe von zwei Feldelementen zu bestimmen, bei denen p = 2m + d und d ≤ p/6, gemäß dem in 3 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 21 ist ein Flussdiagramm, das ein Verfahren zum Verarbeiten von Binärdaten illustriert, um die Summe von zwei Feldelementen zu bestimmen, bei denen p = 2m + d und p/6 < d < 2m – 1, gemäß dem in 3 illustrierten Verfahren gemäß einem beispielhaften Aspekt der vorliegenden Erfindung.
  • 22 ist ein Blockdiagramm eines Systems zum Ausführen von Fehlerkorrektur.
  • 23 ist ein Flussdiagramm zum Illustrieren eines Verfahrens zum Ausführen einer Fehlerkorrektur.
  • 24A ist ein Funktionsblockdiagramm, das ein System zum Ausführen von Verschlüsselung/Entschlüsselung illustriert.
  • 24B ist ein Flussdiagramm, das ein beispielhaftes kryptographisches Verfahren illustriert.
  • 25 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Ausführen von Schlüsselaustausch illustriert.
  • 26 ist ein Flussdiagramm, das ein beispielhaftes Verfahren einer öffentlichen Schlüssel-Kryptographie illustriert.
  • 27 ist ein Flussdiagramm, das ein beispielhaftes Verfahren von öffentlicher Schlüssel-Kryptographie illustriert.
  • 28 ist ein Flussdiagramm, das ein beispielhaftes Verfahren von öffentlicher Schlüssel-Kryptographie illustriert.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt Ansätze für das effiziente Ausführen von arithmetischen und logischen Operationen bereit, die Elemente des finiten Feldes GF(plk) (ein Erweiterungsfeld) involvieren, wo p eine ungerade Primzahl ist. Wie im Detail unten diskutiert wird, wendet sich ein Aspekt der vorliegenden Erfindung dem zu, wie Elemente des Feldes GF(pk) repräsentierende Elemente in binärer Hardware gespeichert werden und wie arithmetische Operationen dann effizient ausgeführt werden. Wie hierin Bezug genommen, sollte man das finite Feld GF(pk) als ein Ungerad-Charakteristik-finites Feld verstehen, wo die Charakteristik p eine ungerade Primzahl ist.
  • Verschiedene Aspekte der Erfindung werden unten detaillierter in Verbindung mit einer Anzahl von beispielhaften Ausführungsformen beschrieben. Um ein Verständnis der Erfindung zu erleichtern, werden viele Aspekte der Erfindung anhand von Aktionen beschrieben, die durch Elemente eines Computersystems auszuführen sind. Weiter wird man erkennen, dass in jeder der Ausführungsformen die verschiedenen Aktionen durch spezialisierte Schaltungen (z. B. diskrete Logikgatter, die miteinander verbunden sind, um eine spezialisierte Funktion durchzuführen), durch Programminstruktionen, die von einem oder mehreren Prozessoren ausgeführt werden, oder durch eine Kombination beider durchgeführt werden können. Darüber hinaus kann die Erfindung zusätzlich erwogen werden als vollständig auf irgendeiner Form von Computer-lesbaren Trägern ausgeführt, wie etwa Festspeicher, magnetischen Platten, optischen Platten oder modulierten Wellen, die einen geeigneten Satz von Computeranweisungen enthalten, die einen Prozessor veranlassen würden, die hierin beschriebenen Techniken auszuführen. Eine modulierte Welle kann beispielsweise eine Funkfrequenzmodulationswelle sein, eine Audiofrequenzmodulationswelle einer optischen Frequenzmodulationswelle oder ein modulierter binärer Bitstrom, der über eine Netzwerkverbindung oder ein Modem heruntergeladen werden kann. Somit können die verschiedenen Aspekte der Erfindung in vielen verschiedenen Formen ausgeführt werden und alle solche Formen sollen innerhalb des Schutzumfangs der Erfindung, wie beansprucht, liegen. Für jeden der verschiedenen Aspekte der Erfindung kann jegliche solche Form von Ausführungsform hierin als "Logik, die dafür konfiguriert ist", eine beschriebene Aktion auszuführen, oder alternativ als "Logik, die" eine beschriebene Aktion durchführt, bezeichnet werden.
  • Bevor auf Aspekte der Erfindung eingegangen wird, die sich auf Berechnungen beziehen, die Elemente von GF(pk) selbst involvieren, werden zuerst Algorithmen beschrieben, die arithmetische Operationen im Feld GF(plk) mit arithmetischen Operationen im Erweiterungsfeld GF(pk) in Verbindung bringen. Wenn ein Polynom f(t) des Grades l gegeben ist, das über GF(pk) unreduzierbar ist und wenn gegeben wird, dass α (= Σiαixi, αi in GF(pk)) und β (= Σiβixi, βi in GF(pk)) Elemente von GF(plk) sind, an denen auf einem hohen Niveau gearbeitet werden soll, werden Algorithmen zur Addition, SUM(α, β) und zur Multiplikation, PRODUCT(α, β) in GF(plk) untenstehend bereitgestellt. Die Notation GF_p_k_<op>(αi, βj) in diesen Algorithmen bezeichnet eine Prozedur, die die Operation <op> (Addieren, Multiplizieren, etc.) an den Feldelementen αi und βj im Feld GF(pk) ausführt.
  • Zuerst wird ein Additionsalgorithmus, der als SUM(α, β) bezeichnet wird, der sich auf die Addition von Elementen α und β des Erweiterungsfeldes GF(plk) auf im Feld GF(pk) auszuführende Berechnungen bezieht, unten gegeben.
    SUM(α, β):
    for i = 0 to l – 1 do
    δ1 = GF_p_k_ADD(αi, βj)
    end
    return δl-1tl-1 + δl-2tl-2 + ... + δ1t + δ0
    wobei GV_p_k_ADD im Detail unten beschrieben wird.
  • Zusätzlich wird nunmehr ein Multiplikationsalgorithmus, der als PRODUCT(α, β) bezeichnet wird, der die Multiplikation von Elementen α und β des Erweiterungsfeldes GF(plk) auf im Feld GF(pk) auszuführende Berechnungen bezieht, beschrieben. Hier wird angenommen, dass notwendige Initialisierungen von DLOG und ANTILOG-Tabellen bereits vorgenommen worden sind. Formen von DLOG und ANTILOG-Tabellen werden untenstehend beschrieben. Zusätzlich werden beispielhafte DLOG und ANTILOG-Tabellen in 10A und 11A für eine einfache Illustration von GF(32) gegeben, die später zu beschreiben sind.
    PRODUCT (α, β):
    for i = 0 to 2l – 2 do
    δi = 0
    for j = max(0, i – l + 1) to min(i, l – 1) do
    δi = GF_p_k_ADD(δi, GF_p_k_MUL(αj, βi-j))
    end
    end
    return REDUCE(δ2l-2t2l-2 + δ2l-3t2l-3 + ... + δ1t + δ0, f(t))
    wobei GF_p_k_MUL und REDUCE(δ, f) (wobei das Letztere z(t) mod f(t)) berechnet), untenstehend detailliert beschrieben wird.
  • Man sollte anmerken, dass der obige Multiplikationsalgorithmus lediglich ein Beispiel möglicher Multiplikationsalgorithmen ist. Für große Werte von 1 (z. B. l > 100) kann eine größere Leistungsfähigkeit durch Verwenden des Karatsuba-Verfahrens anstelle des obigen einfachen PRODUCT-Algorithmus erhalten werden. Karatsuba's Verfahren ist Fachleuten bekannt und ist beispielsweise in dem oben referenzierten Seminumerical Algorithmus beschrieben.
  • Schließlich kann ein für das Abschließen des Multiplikations-Algorithmus PRODUCT(α, β) notwendige Reduktionsoperation "mod f(t)" mit einem wohlbekannten, unten angegebenen und als REDUCE(δ, f) bezeichneten Algorithmus durchgeführt werden. Dieser Algorithmus kann ebenfalls den vorliegenden erfinderischen Ansatz für zu beschreibende effiziente Arithmetik im Feld GF(pk) verwenden. Aus Gründen der computationalen Effizienz kann f(t) so ausgewählt werden, dass es "selten" ist, was bedeutet, dass f(t) nur wenige Nicht- Null-Koeffizienten (z. B. 3 Nicht-Null-Koeffizienten) aufweist. In diesem Fall hat f(t) die Form f(t) = fltl + fjtj + f0 für irgendein j zwischen l und 0. Man sollte jedoch anmerken, dass es im Allgemeinen nicht notwendig ist, dass f(t) solch eine Seltenheit hat. Für irgendeinen Wert von l kann ein unreduzierbares Polynom f(t) des Grades l leicht durch Fachleuten bekannte Verfahren gefunden werden. Ein allgemeiner Ansatz zum Bestimmen eines unreduzierbaren Polynoms f(t) kann beispielsweise im oben angegebenen Seminumerical Algorithmus gefunden werden. Unter Berücksichtigung dieser Kommentare ist der Reduktions-Algorithmus, der als REDUCE(δ, f) bezeichnet wird wie folgt.
    REDUCE(δ, f)
    tmp1 = GF_p_k_MUL(GF_p_k_INVERSE(fl), f0)
    tmp2 = GF_p_k_MUL(GF_p_k_INVERSE(fl), fj)
    for i = 2l – 2 downto 1 do
    δi-l = GF_p_k_SUB(δi-l, GF_p_k_MUL(tmp1, δi))
    δi-l+j = GF_p_k_SUB(δi-l+j, GF_p_k_MUL(tmp2, δi))
    end
    return δl-1tl-1 + δl-2tl-2 + ... δ1t + δ0.
  • Der obige REDUCE-Algorithmus ist lediglich ein normaler Polynomteiler-Algorithmus, der für die oben angegebene spezielle Form für f(t) adaptiert ist. Man sollte anmerken, dass tmp1 und tmp2 vorberechnet werden können, weil sie festliegen, wenn die Repräsentation einmal gegeben ist, d. h. wenn f(t) einmal definiert ist. Die Funktion GF_p_k_SUB bezieht sich auf Feldsubstraktion im Feld GF(pk) und die Funktion GF_p_k_INVERSE bezieht sich auf multiplikative inverse Berechnung, wobei beide leicht implementierte gegebene Algorithmen für GF_p_k_ADD und GF_p_k_MUL sind und beide untenstehend beschrieben werden.
  • Eine beispielhafte Vorrichtung 100 zum Ausführen der oben erwähnten Algorithmen und zum Implementieren anderer Aspekte der Erfindung wird nunmehr unter Bezugnahme auf das Blockdiagramm von 1 beschrieben. Die Vorrichtung 100 umfasst einen Speicher 101 und eine Verarbeitungseinheit 105, die mit dem Speicher 101 gekoppelt ist. Die Vorrichtung 100 kann auch eine Eingabe/Ausgabevorrichtung 103 umfassen. Die Verarbeitungseinheit 105 umfasst eine Mehrzahl von Registern 107121, die durch Logikschaltungen (nicht gezeigt) innerhalb der Verarbeitungseinheit 105 gesteuert werden. Die Verarbeitungseinheit 105 kann mit der Eingabe/Ausgabe-Vorrichtung 103 und dem Speicher 101 über elektrische Verbindungen (z. B. elektrische Busse) kommunizieren, die durch die in 1 gezeigten Pfeile repräsentiert sind. Es ist für die Verarbeitungseinheit 105 auch möglich, mit externen Registern (nicht gezeigt) zu kommunizieren, die außerhalb der Verarbeitungseinheit 105 lokalisiert sind.
  • Die Verarbeitungseinheit 105 kann beispielsweise jegliche konventionelle Art von Verarbeitungseinheit sein, wie etwa ein Prozessor der Pentium-Klasse oder eine andere CPU, die typischerweise in persönlichen Computern gefunden wird, oder kann ein Spezialverwendungsprozessor sein, wie sie etwa in drahtlosen Telefonen oder anderen tragbaren Vorrichtungen gefunden werden. Es ist für konventionelle Prozessoren, die in persönlichen Computern verwendet werden, üblich, dass sie acht Universalregister haben, wie durch die acht Register 107121 in 1 illustriert (auch als Register a–h bezeichnet). Die Register 107 können beispielsweise 8-Bit Register, 16-Bit Register, 32-Bit Register, 64-Bit Register etc. sein. Prozessoren der aktuellen Generation für übliche persönliche Computer haben allgemein 32-Bit Register.
  • Der Speicher 101 kann beispielsweise jeglicher geeignete Speicher sein, der zum Speichern von Computerprogrammen in der Lage ist, wie Magnetplatten, eine CD ROM, eine magnetooptische Platte, ein Flash-Speicher oder andere Art von Speicher. Zusätzlich zum Speichern von Computerprogrammen kann der Speicher 100 auch verwendet werden, um Zwischen- oder Endberechnungsprodukte zu speichern, die von der Verarbeitungseinheit 105 erzeugt wurden und kann auch verwendet werden, um Nachschlagtabellen zu speichern, die während der Berechnungen zu verwenden sind.
  • Die Eingabe-/Ausgabe-Vorrichtung 103 kann beispielsweise jegliche geeignete Vorrichtung zum Weitergeben von Daten zu und/oder aus der Verarbeitungseinheit 105 sein, wie etwa ein hart-verdrahtetes Modem oder eine Netzwerkschnittstelle, ein Drahtlosmodem, ein zweiter Speicher, ein Analog-Digital/Digital-Analog (AD/DA) Wandler oder andere ähnliche Typen von Vorrichtungen. Getrennte Eingabe- und Ausgabevorrichtungen können anstelle einer kombinierten Eingabe/Ausgabe-Vorrichtung verwendet werden, falls erwünscht. Zusätzlich kann die Eingabe/Ausgabe-Vorrichtung 103 konfiguriert sein, Schutz-Bit-Einfügung und Schutz-Bit-Entfernung durchzuführen. Schutz-Bit-Einfügung und Schutz-Bit-Entfernung werden später in Bezug auf die 8A und 8B beispielhaft beschrieben.
  • In einem Aspekt kann der Speicher 101 eines oder mehrere Computerprogramme speichern und die Verarbeitungseinheit 105 kann auf den Speicher 101 zugreifen, um Schritte des Computerprogramms/der Computerprogramme auszuführen. Diese Computerprogramme können beispielsweise Programme beinhalten, welche die oben angemerkten Algorithmen repräsentieren und Programme, die andere Aspekte der Erfindung, wie unten beschrieben, implementieren.
  • Zusätzlich versteht, sich, obwohl ein einzelnes Verarbeitungssystem 100 mit einer einzelnen Verarbeitungseinheit 105 in 1 gezeigt ist, dass das Verarbeitungssystem 100 multiple Verarbeitungseinheiten 105 umfassen kann. Darüber hinaus ist es möglich, die vorliegende Erfindung unter Verwendung von mehreren Verarbeitungssystemen anstelle eines einzelnen Verarbeitungssystems 100 auszuführen.
  • Der Rest der detaillierten Beschreibung wird auf die Beschreibung der erfinderischen Ansätze zum Speichern von Binärdaten, welche Feldelementen von GF(pk) in Hardware-Registern und zum Ausführen von Operationen an solchen Binärdaten in einer Weise beschreiben, um die Geschwindigkeit von arithmetischen Berechnungen, die Feldelemente von GF(pk) involvieren, zu verbessern. In dieser Hinsicht werden Beschreibungen der Algorithmen GF_p_k_ADD und GF_p_k_MUL, die eine Addition und Multiplikation von Feldelementen des Feldes GF(pk) bereitstellen, beschrieben werden. Zusätzlich werden auch andere Vorrichtungen zum Implementieren der Ansätze beschrieben.
  • Gemäß einem Aspekt der Erfindung kann der in 1 illustrierte Apparat 100 verwendet werden, um Berechnungen auszuführen, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes GF(pk) involvieren, in einer Weise, welche die Berechnungseffizienz im Vergleich zu konventionellen Ansätzen zum Ausführen von Berechnungen, die Feldelemente von Ungerad-Charakteristik-finiten Feldern involvieren, verbessert. Insbesondere ist die Verarbeitungseinheit 105 dafür konfiguriert (z. B. programmiert), Binärdaten, die zumindest einen Teil eines Feldelementes eines Ungerad-Charakteristik-finiten Feldes GF(pk) repräsentieren, in einem Register zu speichern, wie etwa Register 107, das in 1 gezeigt ist, wobei p eine ungerade Primzahl ist und wobei das Feldelement k Koeffizienten gemäß einer Polynombasis Repräsentation umfasst. Die Verarbeitungseinheit 105 und das Register können als Mittel zum Speichern von Binärdaten angesehen werden, die zumindest einen Teil eines Feldelementes von GF(pk) repräsentieren. Die Binärdaten umfassen mehrere Gruppen von Datenbits, wobei jede Gruppe von Datenbits einen Assoziierten der k Koeffizienten repräsentiert. Somit werden gemäß einem Aspekt der vorliegenden Erfindung multiple Koeffizienten eines Feldelemente des Ungerad-Charakteristik-finiten Feldes GF(pk) repräsentierende Binärdaten in ein einzelnes Hardware-Register gepackt. Im Gegensatz dazu platzieren konventionelle Ansätze zum Ausführen von Berechnungen, die Feldelemente von Ungerad-Charakteristik-finiten Feldern involvieren, lediglich Binärdaten, die einen einzelnen Koeffizienten eines Ungerad-Charakteristik finiten Feldes repräsentieren, in ein einzelnes Hardware-Register.
  • Zusätzlich ist die Verarbeitungseinheit 105 auch dafür konfiguriert, zumindest eine Operation an den Inhalten des oben erwähnten Registers 107 so durchzuführen, dass die mehreren Gruppen von Datenbits parallel verarbeitet werden. Beispielsweise können eine oder mehrere Operationen eine Schiebeoperation, eine Additionsoperation, eine Binärsubtraktions-Operation, eine logische UND-Operation und eine NICHT-Operation (logische Negation) beinhalten, um einige zu benennen. In dieser Hinsicht kann die Verarbeitungseinheit 105 als Mittel zum Ausführen zumindest einer Operation an den Binärdaten so verstanden werden, dass die mehreren Gruppen von Datenbits parallel verarbeitet werden. Somit kann durch Speichern von Binärdaten, welche multiple Koeffizienten eines Feldelementes von GF(pk) in einem einzelnen Hardware-Register repräsentieren und durch paralleles Verarbeiten der mehreren Gruppen von Datenbits die Geschwindigkeit der Berechnungen gemäß der vorliegenden Erfindung im Vergleich zu konventionellen Verfahren für Berechnungen, die Feldelemente ungerad-charakteristischer finiter Felder involvieren, stark gesteigert werden. Falls beispielsweise alle k Koeffizienten eines Feldelementes von GF(pk) in einem einzelnen Hardware-Register repräsentiert sind, wie etwa dem in 1 gezeigten Register 107, kann die Geschwindigkeit der Verarbeitung von das Feldelement repräsentierenden Binärdaten um einen Faktor k für die Addition und k2 für die Multiplikation gegenüber konventionellen Verfahren gesteigert werden.
  • Multiple Koeffizienten eines Feldelementes von GF(pk) können in einem einzelnen Hardware-Register gespeichert werden, indem zwei beispielhafte Ansätze gemäß der vorliegenden Erfindung verwendet werden. Diese Ansätze werden hierin als Einzel-Schutzbit-Repräsentation bzw. die Multi-Schutzbit-Repräsentation bezeichnet, von denen jede unterschiedliche Vorteile hat, wie unten beschrieben wird. Beim Beschreiben dieser Repräsentationen wird angenommen, dass die Hardware-Architektur in der Lage ist, grundlegende arithmetische und logische Operationen an w-Bit-Worten durchzuführen, z. B. können die Hardware-Register w-Bit-Register für einige w ≥ k(m + 1) sein, wobei ein gesamtes Feldelement repräsentierende Binärdaten in einem Einzelregister zu speichern sind. In konventionellen Bezeichnungen bedeutet dies, dass die Hardware-Architektur arithmetische und logische Operationen an binär codierten Ganzzahlen im Bereich (0 .. 2w – 1) durchführen kann. Im Prinzip sind größere Werte von w zu bevorzugen, weil dadurch mehr Informationen pro Operation verarbeitet werden können. Bit-Positionen werden von rechts nach links numeriert, wobei das am wenigsten signifikante Bit durch "0" indiziert ist, das nächste Bit durch "1", das nächste Bit durch "2" und so weiter, bis zum signifikantesten Bit (der Wortgröße), welches durch "w – 1" indiziert wird. Beispiele der Einzel-Schutzbit-Repräsentation sind in den 2A und 2B für 32-Bit Hardware-Register gezeigt. 2A ist eine schematische Illustration eines Hardware-Registers 200 mit einem Datenspeicherschema zum Speichern von Binärdaten, die ein Feldelement αi = (α9,i, ..., α1,i, α0,i) von GF(310) repräsentieren.
  • Im Beispiel von 2A werden zehn Gruppen von Bitpositionen 201-r (unschattierte Bitpositionen) alloziert, um zehn Gruppen von Datenbits zu speichern, die die Feldkoeffizienten α9,i, ..., α1,i, α0,i repräsentieren. Zwei Bitpositionen werden zum Speichern der Binärdaten alloziert, die jeden Koeffizienten αj,i repräsentieren (was hinreicht, da αj,i ≤ 3 < 22). Eine Gruppe von Datenbits, die den Koeffizienten α0,i repräsentiert, werden in Bitpositionen Null und Eins (von rechts) gespeichert. Eine andere Gruppe von Datenbits, die den Koeffizienten α1,i repräsentieren, werden in den Bitpositionen Drei und Vier gespeichert, und so weiter. Zusätzlich werden zehn Bitpositionen 203-r alloziert, um "Schutz-Bits" (hell schraffierte Bereiche) zu speichern, denen anfangs Binärwerte von 0 zugewiesen werden. Im Beispiel von 2A werden Bitpositionen Zwei, Fünf, Acht, etc. für Schutz-Bits alloziert. Die Schutz-Bit-Positionen (die auch als Trenn-Bit-Positionen bezeichnet werden) dienen dazu, Binärdaten, welche die Feldkoeffizienten repräsentieren, zu trennen, und jegliches Übertragsbit von einer unmittelbar vorhergehenden Gruppe von Datenbit-Positionen 201-r zu akzeptieren. Wenn beispielsweise arithmetische und logische Operationen durchgeführt werden, wird ein Übertragsbit von der Gruppe von Bitpositionen 201-1 daran gehindert, in die benachbarten Gruppe von Bitpositionen 201-2 übertragen zu werden und stattdessen wird es in die Schutz-Bit-Position 203-1 übertragen. Auch sind im Beispiel von 2A die zwei signifikantesten Bitpositionen 205 in Register 200 unbenutzt (dunkelschattierte Bereiche). Allgemein sind unbenutzte Bitpositionen an den signifikantesten Bitorten lokalisiert. Jedoch können unbenutzte Bitpositionen auch an den wenigst signifikanten Bitlokationen lokalisiert sein. Falls die unverwendeten Bitpositionen an den signifikantesten Bitlokationen lokalisert sind, ist es nicht notwendig, den unbenutzten Bitpositionen irgendwelche bestimmten Werte zuzuweisen. Ansonsten müssen den unbenutzten Bitpositionen Anfangswerte von Null zugewiesen werden.
  • In Beispiel von 2A für GF(310) ist das Grundfeld GF(3) und die nachfolgende Abbildung zwischen Ganzzahlwerten jedes Koeffizienten und entsprechend Binärdaten ist anwendbar (die Mengen in Klammern sind Binärdaten): 0~(0, 0); 1~(0, 1); 2~(1, 0); 3~(1, 1), wobei 3 jedenfalls 0 entspricht (weil 3 mod 3 = 0). Somit wird in einem Aspekt der vorliegenden Erfindung eine duale Repräsentation bereitgestellt, wobei zwei unterschiedliche Zahlen in GF(p) (3 und 0 in diesem Beispiel, wobei p = 3) einen selben Wert repräsentieren (Null). In GF(3k) werden zwei Binärbits verwendet, um jeden Koeffizienten eines Feldelementes zu repräsentieren. Im Allgemeinen hängt für GF(pk) die Anzahl von Bits, die verwendet werden, um einen Koeffizienten eines Feldelementes zu repräsentieren, vom Wert von p ab. Wo p durch p = 2m – 1 gegeben ist, werden m binäre Bits (nicht einschließlich der Schutz-Bits) verwendet, um jeden Koeffizienten eines Feldelementes zu repräsentieren.
  • Ein anderes Beispiel einer Einzelschutz-Repräsentation ist in 2B gezeigt. 2B ist eine schematische Illustration eines Hardware-Registers 210 mit einem Datenspeicherschema zum Speichern eines Feldelementes αi = (α4,i, α1,i, α0,i) von GF(75). Im Beispiel von 2B werden fünf Gruppen von Bitpositionen 211-r (unschattierte Bitpositionen) alloziert, um Binärdaten zu speichern, welche die Feldkoeffizienten α4,i, ..., α1,i, α0,i zu repräsentieren. In diesem Beispiel ist p = 7 = 2m – 1. Daher ist m = 3, und drei Bits (nicht einschließlich der Schutz-Bits) werden alloziert, um die Binärdaten zu speichern, welche jeden Koeffizienten αj,i repräsentieren. Binärdaten, die den Koeffizienten α0,i repräsentieren, werden in Bitpositionen Null, Eins und Zwei gespeichert (ab rechts). Binärdaten, die den Koeffizienten α1,i repräsentieren, werden in den Bitpositionen Vier, Fünf und Sechs gespeichert, und so weiter.
  • Im Beispiel von 2B für GF(75) ist das Grundfeld GF(7) und es ist die folgende Abbildung zwischen Ganzzahlwerten jedes Koeffizienten und entsprechenden Binärdaten anwendbar (die Mengen in Klammern sind die Binärdaten): 0~(0, 0, 0); 1~(0, 0, 1); 2~(0, 1, 0); 3~(0, 1, 1); 4~(1, 0, 0); 5~(1, 0, 1); 6~(1, 1, 0); und 7~(1, 1, 1), wo 7 auch 0 entspricht (bei 7 mod 7 = 0). Somit stellt die vorliegende Erfindung eine duale Repräsentation bereit, wo zwei unterschiedliche Zahlen im Feld GF(p) (7 und 0 in diesem Beispiel, wo p = 7) denselben Wert repräsentieren (Null).
  • Zusätzlich werden im Beispiel von 2B fünf Bitpositionen 213-r alloziert, um Schutz-Bits zu speichern (hell schattierte Bereiche), denen Anfangsbinärwärte von 0 zugewiesen werden. Zusätzlich werden die Bitpositionen Drei, Sieben, acht, Elf, etc. für Schutz-Bits alloziert. Auch sind im Beispiel von 2B die zwölf signifikantesten Bitpositionen 215 im Register 210 unbenutzt (dunkel schattierte Bereiche).
  • Ein Beispiel der Multi-Schutz-Bit-Repräsentation ist in 2C gezeigt. 2C ist eine schematische Illustration eines Hardware-Registers 220, mit einem Datenspeicherschema zum Speichern von Feldelementen αi = (α7,i, ..., α1,i, α0,i) von GF(38). Im Beispiel von 2C werden acht Gruppen von Bitpositionen 221-r (unschattierte Bitpositionen) alloziert, um Binärdaten zu speichern, welche die Feldkoeffizienten α7,i, ... α1,i, α0,i repräsentieren und angrenzende Gruppen von Bitpositionen 221-r werden durch eine Gruppe von zwei Schutz-Bitpositionen 213-r getrennt (hell schattierte Bitpositionen). In diesem Beispiel ist p = 3 = 2m – 1. Daher ist m = 2 und es werden zwei Bits (nicht einschließlich Schutz-Bits) alloziert, um die Binärdaten zu speichern, um jeden Koeffizienten αj,i repräsentieren. Den Koeffizienten α0,i repräsentierende Binärdaten werden in Bitpositionen Null und Eins (von rechts) gespeichert. Den Koeffizienten α1,i repräsentierende Binärdaten werden in Bitpositionen Vier und Fünf und Sechs gespeichert, und so weiter. Acht Gruppen von Bitpositionen 223-r werden alloziert, um je zwei Schutz-Bits (hell schattierte Bereiche) zu speichern, denen Anfangsbinärwerte von 0 zugewiesen werden. Im Beispiel von 2C werden Bitpositionen Zwei, Drei, Sechs, Sieben, Acht, Zehn, Elf, etc. für Schutz-Bits alloziert. Es gibt keine unbenutzten Bitpositionen in diesem Beispiel.
  • Es ist typischerweise wünschenswert, ein gesamtes Feldelement von GF(pk) repräsentierende Binärdaten in einem einzelnen Hardwareregister 107 zu speichern. Jedoch ist es in Fällen, wo ein Feldelement hinreichend groß ist, dass seine binäre Repräsentation die Speicherkapazität eines einzelnen Registers übersteigt, wünschenswert, zumindest einen Teil des Feldelementes repräsentierende Binärdaten im Register 107 zu speichern. Die oben erwähnten arithmetischen und logischen Operationen können durch koordinierende Operationen in mehreren Registern ausgeführt werden, die zusammen Binärdaten speichern, welche ein einzelnes Feldelement von GF(pk) repräsentieren. Falls beispielsweise zwei Register verwendet werden, um ein einzelnes Feldelement von GF(pk) repräsentierende Binärdaten zu speichern, kann eine Rechtsschiebung um m Bits über alle Binärdaten ausgeführt werden, indem die zwei Register so koordiniert werden, dass das am wenigsten signifikante Bit im linkshändigen Register zur Seite des signifikantesten Bits des rechtshändigen Registers verschoben wird. (die Terminologie "rechtshändig" und "linkshändig" wird lediglich verwendet, um die Register in dem Sinne zu unterscheiden, dass eine linkeste Bitposition in einem Register der signifikantesten Bitposition entspricht. Die Terminologie soll nicht suggerieren, dass ein Register notwendigerweise physikalisch links von einem anderen Register positioniert ist). Es sollte jedoch angemerkt werden, dass, wo zwei Register verwendet werden, um ein Feldelement repräsentierende Daten zu speichern, falls unverwendete Biträume in den signifikantesten Bitpositionen des rechtshändigen Registers vorhanden sind, eine Rechtsschiebeoperation implementiert werden muss, um die unverwendeten Biträume zu überspringen.
  • Gemäß einem anderen beispielhaften Aspekt der vorliegenden Erfindung kann das System 100, das in 1 illustriert ist, konfiguriert werden, um die in dem in 3 illustrierten Flussdiagramm gezeigte Schritte auszuführen. 3 illustriert einen Ansatz 300, der eine Mehrzahl von Schritten umfasst, die von der in 1 gezeigten Verarbeitungseinheit 105 ausgeführt werden können. In Schritt 301, gezeigt in 3, gezeigt, speichert die Verarbeitungseinheit 105 ein erstes Feldelement von GF(pk) repräsentierende Binärdaten in einem ersten Register (z. B. Register 109), wobei p eine ungerade Primzahl ist, wobei die ersten Binärdaten k Gruppen von ersten Datenbits umfassen, und wobei jede Gruppe von ersten Datenbits einem assoziierten der k Koeffizienten im ersten Feldelement entspricht. Ähnlich, wie in Schritt 303 gezeigt, speichert die Verarbeitungseinheit 105 ein zweites Feldelement von GF(pk) repräsentierende zweite Binärdaten in einem zweiten Register (z. B. Register 111), wobei die zweiten Binärdaten k Gruppen von zweiten Datenbits umfassen und wobei jede Gruppe von zweiten Datenbits einem Assoziierten der k Koeffizienten des zweiten Feldelementes entspricht. Weiterhin, wie in Schritt 305 gezeigt, erzeugt dann die Verarbeitungseinheit 105 dritte Binärdaten durch Ausführen zumindest einer Operation an Inhalten des ersten Registers und Inhalten des zweiten Registers, so dass die k Gruppen von ersten Datenbits parallel verarbeitet werden und so dass die k Gruppen von zweiten Datenbits parallel verarbeitet werden. Beispielsweise können die in Schritt 305 referenzierte Operation oder Operationen eine Additionsoperation, eine Subtraktionsoperation, eine Schiebeoperation, eine logische UND-Operation und eine Nicht-Operation beinhalten, um lediglich einige zu nennen. Kombinationen solcher Operationen können beispielsweise ausgeführt werden, um dritte Binärdaten zu erzeugen, die ein drittes Feldelement repräsentieren, das gleich der Summe der ersten und zweiten Feldelemente ist, oder ein drittes Feldelement, das gleich dem Produkt der ersten und zweiten Feldelemente ist, wie untenstehend im Detail beschrieben wird.
  • Die k Gruppen von ersten Datenbits können im ersten Register 109 so strukturiert werden, dass zumindest ein erstes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits positioniert wird, wobei jede Gruppe von ersten Datenbits von einer angrenzenden Gruppe von ersten Datenbits entsprechend durch zumindestens ein erstes Schutz-Bit getrennt ist. Die k Gruppen von zweiten Datenbits können im zweiten Register 111 so strukturiert werden, dass zumindest ein zweites Schutz-Bit angrenzend am signifikantesten Bit jeder Gruppe von zweiten Datenbits positioniert wird, wobei jede Gruppe von zweiten Datenbits von einer angrenzenden Gruppe von zweiten Datenbits durch ein entsprechendes, zumindest ein zweites Schutz-Bit getrennt ist. Zusätzlich können die dritten Binärdaten k Gruppen von dritten Datenbits umfassen, die in einem dritten Register so gespeichert und strukturiert sind (z. B. Register 113), dass zumindest ein drittes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von dritten Datenbits positioniert ist, wobei jede Gruppe von dritten Datenbits von einer angrenzenden Gruppe von dritten Datenbits durch ein entsprechendes zumindestens ein drittes Schutz-Bit getrennt ist. In dieser Hinsicht umfasst das dritte Feldelement k dritte Koeffizienten gemäß der Polynombasis-Repräsentation und jeder Gruppe von dritten Datenbits repräsentiert einen Assoziierten der k dritten Koeffizienten. (In der obigen Diskussion werden "erste", "zweite" und "dritte" als Markierungen verwendet.)
  • Die Verarbeitungseinheit 105 und ein erstes Register (z. B. Register 109) können als Mittel zum Speichern von ein erstes Feldelement von GF(pk) repräsentierenden ersten Binärdaten angesehen werden. Die Verarbeitungseinheit 105 und ein zweites Register (z. B. Register 111) können als Mittel zum Speichern von ein zweites Feldelement von GF(pk) repräsentierenden zweiten Binärdaten angesehen werden. Die Verarbeitungseinheit 105 und ein drittes Register (z. B. Register 113) können als Mittel zum Speichern von ein drittes Feldelement von GF(pk) repräsentierenden dritten Binärdaten angesehen werden. Die Verarbeitungseinheit 105 kann als Mittel zum Ausführen zumindest einer solchen Operation an den ersten Binärdaten und den zweiten Binärdaten aufgefasst werden, dass die k Gruppen von ersten Datenbits parallel verarbeitet werden und dass die k Gruppen von zweiten Datenbits parallel verarbeitet werden.
  • In Schritt 307 wird bestimmt, ob weitere Daten verarbeitet werden sollten oder nicht. Falls mehr Daten verarbeitet werden sollten, geht der Ablauf dann zurück zu Schritt 301. Falls die zusätzliche Verarbeitung das Verarbeiten von Binärdaten involviert, die bereits in einer Weise gespeichert worden sind, die mit den Schritten 301 und/oder 303 konsistent ist, als Ergebnis einer anderen Kalkulation, können die Schritte 301 und/oder 303 gegebenenfalls übersprungen werden. Falls in Schritt 307 festgestellt wird, dass keine Daten mehr verarbeitet werden, endet der Algorithmus.
  • Nunmehr werden beispielhafte Ansätze zum Ausführen des in 3 gezeigten Schrittes 305 beschrieben. Schritt 305 kann beispielsweise unter Verwendung eines Algorithmus GF_p_k_ADD oder eines Algorithmus GF_p_k_MUL implementiert werden, die unten beschrieben werden. GF_p_k_ADD und GF_p_k_MUL wurden oben in der Diskussion der Algorithmen SUM(α, β), PRODUCT(α, β) und REDUCE(δ, f) referenziert. Wie unten beschrieben wird, hängen gewisse Aspekte von Algorithmen von sowohl GF_p_k_ADD als auch GF_p_k_MUL von der funktionalen Form des charakteristischen Werts p ab und davon, ob die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet wird. Insbesondere hängen gewisse Aspekte dieser Algorithmen davon ab, ob p = 2m – 1, p = 2m + 1 oder p = 2m ± d für eine gewisse Ganzzahl m und eine kleine Ganzzahl d geschrieben wird. Die Ganzzahl d ist so ausgewählt, dass d < 2m – 1. Jedoch hat das Auswählen von d als kleiner, z. B. d ≤ p/6, einige Vorteile, die unten beschrieben werden. Dementsprechend werden beispielhafte Formen für GF_p_k_ADD und beispielhafte Formen für GF_p_k_MUL unten unter Bezugnahme auf die funktionale Form des charakteristischen Werts p und unter Bezugnahme darauf, ob die Einzel-Schutz-Bit-Repräsentation oder die Mehr-Schutz-Bit-Repräsentation verwendet wird, beschrieben.
  • Im Hinblick auf die obigen Kommentare stellt sich die Frage, welche Form von GF_p_k_ADD oder welche Form von GF_p_k_MUL gewählt werden sollte, wo eine gegebene ungerade Primzahl p in mehr als einer funktionalen Form beschrieben werden kann. Beispielsweise kann p = 5 als p = 2m + 1 für m = 2 geschrieben werden und p = 5 kann auch als p = 2m – d für m = 3 und d = 3 geschrieben werden. Allgemein wird bevorzugt, den Ansatz für p=2m – 1 gegenüber Ansätzen für andere zwei funktionalen Formen zu verwenden. Zusätzlich wird bevorzugt, den Ansatz für p = 2m + 1 gegenüber dem Ansatz für p = 2m ± d mit d > 1 zu verwenden. Im Allgemeinen ist dies für p = 2m ± d wünschenswert, d als ungerade und so nahe an 1 wie möglich zu wählen. Wenn ein Wert von p gegeben ist, kann ein gutes (m, d)-Paar durch Ausprobieren aller m = 1, 2, ..., (2log2(p)) gefunden werden und für jedes solches m kann d so ausgewählt werden, dass es p = 2m ± d erfüllt, bis ein kleines d gefunden ist.
  • Addition unter Verwendung von Einzel-Schutz-Bit-Repräsentation, p = 2m – 1
  • Eine Form von GF_p_k_ADD für die Einzel-Schutz-Bit-Repräsentation, wo p = 2m – 1, wird nunmehr beschrieben und es wird gezeigt werden, wie eine voll Addition von zwei Feldelementen in GF(pk) (d. h. k Additionen, die sich auf k Koeffizienten jedes Feldelements beziehen), einschließlich der assoziierten modularen Reduktion, mit einer kleinen, feststehenden Anzahl von Operationen (und ohne modulare Reduktionen, die lange Divisionen erfordern) an einer Hardware-Architektur durchgeführt werden kann, die eine Bitwortgröße von zumindest 2 = k(m + 1) aufweist. Beispielsweise können für eine 32 Bit Architektur volle Additionen in GF(310) unter Verwendung von nur fünf Instruktionen durchgeführt werden.
  • Bei der Einzel-Schutz-Bit-Repräsentation werden ein erstes Feldelement αi = (αk-1,i, ..., a1,i, α0,i) von GF(pk) repräsentierende Binärdaten in einem ersten einzelnen Hardware-Register (z. B. dem in 1 gezeigten Register 107) durch Speichern von α0,i repräsentierenden Binärdaten in den Bitpositionen 0 bis m – 1, von α1,i repräsentierenden Binärdaten in Bitpositionen m + 1 bis 2m, etc. so gespeichert, dass eine Gruppe von einen Feldkoeffizienten repräsentierenden Datenbits durch eine Bitposition von einer angrenzenden Gruppe von Datenbits, die einen anderen Feldkoeffizienten repräsentieren, getrennt wird. Ein zweites Feldelement βj repräsentierende Binärdaten werden in ähnlicher Weise in einem zweiten einzelnen Hardware-Register (z. B. Register 109) gespeichert. Bitpositionen v(m + 1) – 1, wo v = 1, 2, ..., k werden alloziert, um die, die Koeffizienten α0,i, α1,i etc. repräsentierenden Binärdaten zu trennen. Diese Positionen werden als Schutz-Bit-Positionen oder Trenn-Bit-Positionen bezeichnet und es werden ihnen Anfangswerte von "0" zugewiesen. Beispiele zum Speichern von Binärdaten gemäß einer Einzel-Schutz-Bit-Repräsentation für eine w = 32-Bit-Architektur werden für zuvor beschriebene Elemente der Felder GF(310) bzw. GF(75) in den 2A und 2B gezeigt. Beispielsweise werden in 2A für GF(310) zwei Bitpositionen für jedes αj,i reserviert (was hinreicht, da αj,i ≤ 3 < 22).
  • Mit ersten und zweiten Feldelementen GF(pk) repräsentierenden ersten und zweiten Binärdaten in ersten bzw. zweiten Registern gespeichert, können Operationen ausgeführt werden, um die Summe der ersten und zweiten Feldelemente zu bestimmen. Die Inhalte der ersten und zweiten Register können als a bzw. b bezeichnet werden. Es sei M2 eine Binärmenge, deren einzige "1" Bits in Positionen j(m + 1) – 1, j = 1, 2, ..., k sind und "0" überall sonst (d. h. M2 = 2m + 22m+1 + ... + 2k(m+1)-1) vorliegen und sei M1 eine durch M1 = NICHT(M2) gegebene Binärmenge (bitweise Negierung). Die Summe der ersten und zweiten Feldelemente kann durch Ausführen der in Gleichung (13) gegebenen Operationen ausgeführt werden c = ((a + b) & M1) + (((a + b) & M2) >> m) (13)wobei "&" bitweises logisches UND repräsentiert, ">>" Rechtsverschiebung bezeichnet, "+" Addition mit Übertrag bezeichnet, und c sich auf Registerinhalte bezieht, die dritte Binärdaten umfassen, welche ein drittes Feldelement gleich der Summe der ersten und zweiten Feldelemente repräsentieren. Die in 13 wiedergespiegelten Operationen können in jeglicher Weise, die gewünscht wird, ausgeführt werden. beispielsweise kann die Zwischenmenge (a + b) in einem gegebenen Register gespeichert werden und das gegebene Register kann dann mit dem durch die Menge c gegebenen Endresultat überschrieben werden, so dass die Operation (a + b) nur einmal durchgeführt wird. Die Binärmengen M1 und M2, sich als Maskenmengen denken, weil bei Kombination mit der Menge (a + b) über die entsprechenden logischen UND-Operationen, wie in Gleichung (13) gezeigt, die Binärmengen M1 und M2 Bits in gewissen Bitpositionen in den Mengen ((a + b) & M1) und ((a + b) & M2) ausmaskieren (auf Null setzen). Die Binärmenge M1 maskiert Bits in der Menge ((a + b) & M1) entsprechend von Schutz-Bit-Positionen aus. Die Binärmenge M2 maskiert Bits in der ((a + b) & M2) entsprechend Nicht-Schutz-Bit-Positionen aus.
  • Beim Ausführen von Gleichung (13) mit Schutz-Bits an Positionen m, 2m + 1, etc. werden keine Übertragsbits von einem m-Bit-Segment entsprechend einem αj,i (oder βj,i) in das αj+1,i (oder βj+1,i) repräsentierende Segment propagieren. Somit wird die Feldelementsumme tatsächlich komponentenweise, Modulo p, an αi und βi berechnet. Die Maskenoperation durch M1 stellt sicher, dass das Ergebnis die korrekte Repräsentation mit Nullen an den Schutz-Bit-Positionen hat. In der obigen Diskussion wird zuerst M2 bestimmt und dann wird M1 anhand von M2 definiert. Jedoch wird es äquivalent sein, zuerst M1 als eine Binärmenge zu bestimmen, die Werte von Null an Bitpositionen, die Bitpositionen von ersten Schutz-Bits entsprechen, die im ersten Register gespeichert sind, aufweisen, und die ansonsten Werte von Eins aufweisen, und dann M2 als M2 = NICHT(M1) zu bestimmen.
  • Ein Beispiel dieser Form von GF_p_k_ADD, wo p = 2m – 1, ist in Flussdiagramm von 4 gezeigt. Die in 4 gezeigten Operationen können von einem System wie etwa einem in 1 gezeigten System 100 ausgeführt werden. Es wird angenommen, dass die Schritte 301 und 303, in 3 gezeigt, bereits vom Prozessor 105 durchgeführt worden sind, so dass die ein erstes Feldelement von GF(pk) repräsentierenden ersten Binärdaten in einem ersten Register (z. B. dem in 1 gezeigten Register 107) gespeichert werden und so dass zweite, ein zweites Feldelement repräsentierende Binärdaten in einem zweiten Register (z. B. Register 109) gespeichert werden. Die in 4 illustrierten Schritte repräsentieren dann eine beispielhafte Implementation von Schritt 305, gezeigt in 3.
  • Wie in Schritt 401 angezeigt, addiert die Verarbeitungseinheit 105 die Inhalte a des ersten Registers 107 und die Inhalte b des zweiten Registers 109. Die Addition kann einen Übertrag in ein gegebenes nächst-signifikantes Bit involvieren, falls notwendig. Das Ergebnis der Addition kann in einem anderen Register 111 gespeichert werden. Wie in Schritt 403 angezeigt, führt dann die Verarbeitungseinheit 105 eine logische UND-Operation zwischen der Menge (a + b), die im Register 111 gespeichert ist, und einer in einem der Register (z. B. Register 113) gespeicherten ersten vorgegebenen Binärmenge M1 aus. Die Menge M1 hat Werte von Null an Bitpositionen, die Bitpositionen von im ersten Register 107 gespeicherten ersten Schutz-Bits entsprechen und hat Werte von Eins an Bitpositionen der Gruppen von in dem ersten Register gespeicherten ersten Datenbits entsprechenden Bitpositionen. Das Ergebnis dieser Operation kann als erste intermediäre Daten c1 bezeichnet werden und wird in einem der Register (z. B. Register 115) gespeichert.
  • Wie in Schritt 405 angezeigt, führt die Verarbeitungseinheit eine logische UND-Operation zwischen der im Register 111 gespeicherten Menge (a + b) und einer zweiten vorgegebenen binären Menge M2 aus, wo M2 durch M2 = NICHT(M1) gegeben ist. Die NICHT-Operation ist eine bitweise logische Negation. Das Ergebnis dieser Operation wird in einem der Register (z. B. Register 117) gespeichert. Wie in Schritt 405 auch angezeigt, führt die Verarbeitungseinheit 105 dann eine Rechtsverschiebung um m Bits an der durch ((a + b) & M2) gegebenen Menge aus. Das Ergebnis dieser Operation kann in selben Register 117 oder in einem anderen Register gespeichert werden. Das Ergebnis dieser Operation kann als zweite intermediäre Daten c2 bezeichnet werden, wie in Schritt 405 gezeigt. Im Schritt 407 führt der Prozessor eine Addition zwischen den ersten Binärdaten c1 und den zweiten Binärdaten c2 aus, um dritte Binärdaten zu erzeugen, die durch c repräsentiert sind, die in einem der Register (z. B. Register 119) gespeichert werden können. Gemäß diesem Ansatz repräsentieren die dritten Binärdaten c die Summe des ersten Feldelements und des zweiten Feldelements.
  • Die Algorithmen gemäß 3 und 4 sind im Hinblick auf eine spezifische Abfolge von Schritten beschrieben worden, um die Beschreibung zu erleichtern. Jedoch ist es nicht notwendig, die in den 3 und 4 angezeigten Schritte in der exakt dargestellten Reihenfolge auszuführen. Fachleute werden erkennen, dass die Anordnung von Schritten variiert werden kann und dass einige der Schritte simultan ausgeführt werden können. Beispielsweise können die in 3 gezeigten Schritte 301 und 303 gleichzeitig ausgeführt werden und die in 4 gezeigten Schritte 403 und 405 können gleichzeitig ausgeführt werden.
  • Zusätzlichen Einblick in Aspekte der oben beschriebenen beispielhaften Form für GF_p_k_ADD kann durch Erwägen des folgenden Spezialfalles für k = 1 gewonnen werden. In der obigen Beschreibung hat die Zahl "0" zwei Repräsentationen: sowohl 0 selbst als auch p = 2m – 1. Es ist nur notwendig, diese Dualität während Eingabe- und Ausgabeoperationen zu berücksichtigen. Wenn man p = 0 mod p annimmt, gibt es kein mathematisches Problem mit dieser dualen Repräsentation. Ganzzahlen können bei dieser dualen Repräsentation Modulo p gemäß der folgenden Gleichung addiert werden (a + b) mod p = ((a + b) mod 2m) + ((a + b) div 2m) (14)wo div 2m sich auf eine Funktion bezieht, die den Boden des Quotienten rückgibt, wo der Divisor 2m ist. Anders ausgedrückt ist die Summe von a + b (in der Dualrepräsentation) a + b, falls a + b < 2m; ansonsten ist die Summe ((a + b) mod 2m) + 1. Diese zwei Fälle (abhängig davon, ob die Summe 2m ist oder nicht) können somit gemeinsam durch die Formel (a + b) mod p = [(a + b) mod 2m] + [(a + b) div 2m] behandelt werden. Man beachte, dass (a + b) ≤ 2(2m – 1) = 2m+1 – 2 und dass die mod und div Operationen effizient als Bitoperationen (logisches UND, Verschiebung) implementiert werden können, da das Modul und der Divisor beide Potenzen von 2 sind. Somit kann, gegeben eine Hardware-Architektur, die Operationen an (zumindest) m + 1 Bitmengen durchführen kann und gegeben die duale Repräsentationen für a und b, die Menge (a + b) mod p (in der Dual-Repräsentation) gemäß Gleichung 15 bestimmt werden: c = ((a + b) & (2m – 1)) + (((a + b) & 2m) >> m) (15).
  • Weil a + b < 2m+1 – 2, ergibt sich kein Überlauf durch das Ausführen der Gleichung 15, falls w ≥ m + 1, wobei w die Registergröße ist. Somit werden anstelle von einer Addition und einer modularen Reduktion (einer langen Division) durch p fünf einfache Operationen durchgeführt, wo die Mengen 2m und 2m – 1 feststehen und als konstante Bitmasken angesehen werden können. In der obigen Diskussion wurde angenommen, dass k = 1, um die Diskussion zu erleichtern. Natürlich kann die vorliegende Erfindung unter Verwendung eines Wertes von k, der größer als Eins ist, ausgeführt werden. Nichts desto weniger gewährt die Diskussion für k = 1 einen Einblick in die Form von GF_p_k_ADD und die Auswahl der binären Mengen M1 und M2 gemäß der vorliegenden Erfindung zur Verwendung bei k größer als Eins.
  • Zusätzlich erleichtern die duale Repräsentation, in der die Zahl "0" sowohl 0 selbst als auch p = 2m – 1 repräsentiert wird, das Bestimmen der Summe der zwei Feldelemente gemäß dem oben beschriebenen Ansatz. Wie oben angemerkt, gestattet statt der Verwendung einer Addition und einer modularen Reduktion (einer langen Teilung) durch p, um die Summe von zwei Feldelementen zu bestimmen, die duale Repräsentation unter Verwendung von fünf einfachen Operationen an Binärdaten, welche die zwei Feldelemente repräsentieren, ihre Summe zu bestimmen.
  • In Bezug auf das Erweiterungsfeld GF(plk) ist, wie oben in der Diskussion bezüglich SUM(α, β) und PRODUCT(α, β) erwähnt, jedes Element des Erweiterungsfelds als ein Vektor (Polynom) der Länge l repräsentiert, wo jede Komponente (Koeffizient) ein Element von GF(pk) ist und gemäß der Einzel-Schutz-Bit-Repräsentation, wie oben beschrieben, gespeichert werden kann. Das Addieren von zwei Elementen im Erweiterungsfeld GF(plk) kann nunmehr unter Verwendung von 5l Operationen anstelle von lk Operationen, wie sie unter Verwendung konventionaler Ansätze erforderlich wären, durchgeführt werden. Somit kann selbst für relativ kleine Werte von k ein signifikantester Anstieg der Berechnungsgeschwindigkeit erzielt werden.
  • Wie später beschrieben werden wird, ist zusätzlich die oben beschriebene exemplarische Form für GF_p_k_ADD ebenfalls auf gemäß der Multi-Schutz-Bit-Repräsentation für p = 2m – 1 gespeicherte Binärdaten anwendbar.
  • Beispiel 1
  • Ein den in 3 und 4 gezeigten Ansatz illustrierendes numerisches Beispiel wird nunmehr unter Bezugnahme auf 5 beschrieben. Die unten beschriebenen Operationen können durch Verwendung eines solchen in 1 gezeigten Systemes 100 ausgeführt werden, das zuvor beschrieben worden ist. 5 illustriert Registerinhalte, die aus dem Ausführen der Operationen, wie oben unter Bezugnahme auf 3 und 4 beschrieben, resultieren. In 5 beziehen sich Bezugszeichen 501517 auf 32-Bit Register und die innerhalb der Register 501517 gespeicherten Binärdaten werden gemäß einer Einzel-Schutz-Bit-Repräsentation konfiguriert. Zusätzlich repräsentieren in diesem Beispiel die Binärdaten Feldelemente des finiten Feldes GF(310) und die Charakteristik p ist durch p = 2m – 1 = 3 gegeben. Dementsprechend ist m = 2 und 2 Bits vom Registerplatz werden für jedem Koeffizienten des finiten Feldelementes alloziert. Ein einzelnes Schutz-Bit (leicht schattierte Bit-Stellen) trennt angrenzende Binärdaten, die angrenzende Koeffizienten des finiten Feldes repräsentieren, ab. Zusätzlich gibt es in diesem Beispiel zwei unverwendete Bits Registerplatz (dunkel schattierte Bitstellen) an den signifikantesten Bitpositionen jeden Registers 501517.
  • In diesem Beispiel werden erste Binärdaten a, die ein erstes Feldelement (2, 2, 0, 2, 0, 3, 2, 2, 0, 0) (in Vektornotation) repräsentieren, und zweite Binärdaten b, die ein zweites Feldelement (0, 1, 2, 2, 0, 2, 1, 3, 0, 0) (in Vektornotation) repräsentieren, in ersten bzw. zweiten Registern 501 bzw. 503 gespeichert (Schritte 301 und 303). Jeder Koeffizient der Feldelemente ist selbst ein Element des Grundfeldes GF(3) und jeder Koeffizient wird durch Binärdaten gemäß den folgenden Assoziationen repräsentiert: 0~(0, 0); 1~(0, 1); 2~(1, 0); 3~(1, 1). Eine duale Repräsentation wird bereitgestellt, wobei zwei verschiedene Zahlen in GF(p) (in diesem Beispiel 3 und 0, wobei p = 3) einen selben Wert (Null) repräsentieren. Somit repräsentieren durch (1, 1) gegebene Binärdaten, die 3 entsprechen, auch 0 (weil 3 mod 3 = 0). Jeder Schutz-Bit-Position in den Registern 501 und 503 wird anfangs ein Wert von Null zugewiesen.
  • Die Registerinhalte a und b, die in den Registern 501 bzw. 503 gespeichert sind, werden dann über Addition (entsprechend Schritt 401) addiert. Das Ergebnis (a + b) wird in einem dritten Register 505 gespeichert. Die Inhalte (a + b) von Register 505 werden dann über eine logische UND-Operation mit den Inhalten von Register 507 kombiniert, in dem die Menge M1 gespeichert worden ist, und das Ergebnis c1 = (a + b) & M1 wird in Register 509 gespeichert (entsprechend Schritt 403). Zusätzlich wird die Menge M2 = NICHT(M1) in Register 511 gespeichert. Die Inhalte (a + b) von Register 505 und die Inhalte M2 von Register 511 werden dann über eine logische UND-Operation kombiniert und das Ergebnis (a + b) & M2 wird im Register 513 gespeichert (entsprechend Schritt 405). Die Inhalte (a + b) & M2 vom Register 513 werden dann um m = 2 Bits nach rechts verschoben und das Ergebnis wird im Register 515 gespeichert (entsprechend Schritt 405). Die Inhalte c1 von Register 509 und die Inhalte c2 von Register 515 werden dann über Addition addiert und das Ergebnis wird in Register 517 gespeichert. Das Ergebnis wird durch (2, 3, 2, 1, 0, 2, 3, 2, 0, 0) (in Vektornotation) gegeben und ist äquivalent zu (2, 0, 2, 1, 0, 2, 0, 2, 0, 0), wie erwartet.
  • Im obigen Beispiel werden Überträge in drei Schutz-Bit-Positionen (Bitpositionen Acht, Vierzehn und Zwanzig) erzeugt, wie in Register 505 gezeigt, beim Addieren der ersten Binärdaten a und der zweiten Binärdaten b. Die Schutz-Bit-Positionen hindern die Übertragsbits daran, die Werte der angrenzenden Gruppe von Datenbits zu beeinträchtigen. Dementsprechend gestatten in diesem Beispiel die Schutz-Bit-Positionen (leicht schattierte Bitpositionen) das parallele Ausführen von Operationen an zehn Gruppen von Datenbits, wobei die zehn Gruppen von Datenbits die zehn Feldkoeffizienten repräsentieren.
  • Aus Gründen der Bequemlichkeit bei der Beschreibung der obigen Operationen sind die Binärergebnisse der verschiedenen, in 5 gezeigten Schritte als in getrennt identifizierten Registern gespeichert beschrieben worden. Jedoch werden Durchschnittsfachleute wahrnehmen, dass verschiedene Schritte durch Wiederverwenden von Registern in einer Weise ausgeführt werden können, die zuvor gespeicherte Binärdaten von einem früheren Schritt überschreibt. Beispielsweise können die ersten und zweiten intermediären Binärdaten c1 und c2, die in Registern 509 und 515 gezeigt sind, stattdessen in Registern 501 und 503 gespeichert werden, durch Überschreiben der zuvor gespeicherten Binärdaten a und b, um den Registerraum effizienter zu nutzen. Dies beendet die Diskussion von Beispiel 1.
  • In einem anderen Aspekt der Erfindung, der sich auf Berechnungen bezieht, die Feldelemente eines Ungeradcharakteristik-finiten Feldes involvieren, wo p = 2m – 1, kann eine Hardware-Vorrichtung zum Ausführen von Operationen für die beispielhafte Form von GF_p_k_ADD, die in 4 illustriert worden ist, bereitgestellt werden. 6 ist ein Funktionsblockdiagramm einer solchen beispielhaften Hardware-Vorrichtung. Insbesondere stellt die in 6 illustrierte Vorrichtung 600 einen anderen Ansatz zum Erzeugen von dritten Binärdaten bereit, die in den 4 und 6 als c bezeichnet werden, welche die Summe eines ersten Feldelements und eines zweiten Feldelements von GF(pk) repräsentieren können. In 6 repräsentieren durchgehende Linien elektrische Verbindungen für den Datenfluss und gestrichelte Linien repräsentieren elektrische Verbindungen für den Fluss von Steuersignalen. Durchgezogene Linien, die sich kreuzen, sind nicht verbunden, es sei denn, am Schnittpunkt der Linien ist ein schwarzer Punkt vorhanden, wie etwa Verbindung 623. Die Vorrichtung 600 wird hier in der Diskussion bezüglich einer Einzel-Schutz-Bit-Repräsentation beschrieben, aber die Vorrichtung 600 ist gleichermaßen auf eine Multi-Schutz-Bit-Repräsentation anwendbar, die später beschrieben wird.
  • Die Vorrichtung 600 umfasst ein erstes Register 601 und ein zweites Register 603 zum Halten von ersten Binärdaten (Registerinhalte "a") bzw. zweiten Binärdaten (Registerinhalte "b"). Die ersten Binärdaten und die zweiten Binärdaten repräsentieren Feldelemente des finiten Feldes GF(pk). Hier wird angenommen, dass die ersten und zweiten Binärdaten in den ersten und zweiten Registern 601 und 603 bereits mit Nullen an den Schutz-Bit-Positionen konfiguriert sind, wie etwa beispielsweise in 2A illustriert. Die Vorrichtung 600 umfasst auch eine kombinatorische Logik und eine Taktvorrichtung (Takt/Logik) 605, ein Additionsgatter (+) 607 (das als Addierer bezeichnet wird), ein Register 609 zum Halten der Summe der Registerinhalte a und b, ein erstes logisches UND-Gatter (&1) 611, ein Maskenregister 613 zum Erzeugen und Halten einer ersten vorgegebenen binären Menge M1 beim Eingang m, ein NICHT-Gatter (NICHT) 615 und ein zweites logischen UND-Gatter (&2) 617. Zusätzlich umfasst die Vorrichtung 600 ein Rechtsschiebegatter (>>) 619 und ein Ausgaberegister 621 zum Halten eines Ergebnisses "c". Rechtsschiebegatter sind Fachleuten bekannt und solche Gatter schieben die Werte darin um eine ausgewählte Anzahl von Bits nach rechts und geben eine entsprechende Anzahl von Nullen an den signifikantesten Bitpositionen ein. Die Takt/Logikeinheit 605 kann auch einen Ausgabeanschluss (nicht gezeigt) zum Bereitstellen eines Signales an den Eingang einer anderen Hardware-Vorrichtung aufweisen, um Berechnungen an anderen Hardware-Vorrichtungen zu initiieren, wenn Berechnungen in der Vorrichtung 600 abgeschlossen sind. Beispielsweise kann eine andere Hardware-Vorrichtung eine andere Vorrichtung 600 oder eine Multipliziervorrichtung 1200 sein, wie etwa die in 12 illustrierte, die später zu beschreiben sein wird.
  • Nun wird der Betrieb der in 6 illustrierten Vorrichtung 600 beschrieben. Ein erstes Feldelement repräsentierende erste Binärdaten und ein zweites Feldelement von GF(pk) repräsentierende zweite Binärdaten werden auf Leitungen, die mit a und b beschriftet sind, an das erste Register 601 bzw. das zweite Register 603 eingegeben. Es wird angenommen, dass die ersten und zweiten Binärdaten bereits mit Nullen an Schutzbit-Positionen konfiguriert sind (z. B. durch einen Prozessor, der nicht gezeigt ist). Die Menge m repräsentierende Binärdaten werden auch dem Rechtsschiebegatter (>>) 619 bereitgestellt. Das Maskenregister 613 empfängt eine erste vorgegebene binäre Menge M1 (eine Maskenmenge) von einem Prozessor (nicht gezeigt), wobei M1 eine Menge mit zuvor beschriebenen Werten ist. Alternativ kann das Maskenregister 613 auch eine Schaltung umfassen, welche die Menge M1 bei Eingabe von Binärdaten erzeugt, welche die Menge m repräsentieren. Das Erstellen einer solchen Schaltung liegt im fachmännischen Wissen des Durchschnittsfachmanns.
  • Die Berechnung wird durch ein Startsignal an der mit s beschrifteten Eingangsleitung initiiert. Die ersten und zweiten Binärdaten, die die Menge m repräsentierende Binärdaten und das Startsignal können von einem Prozessor (nicht gezeigt) oder von einer anderen Hardware-Vorrichtung (nicht gezeigt) bereitgestellt werden, wie etwa einer in 12 illustrierten Multipliziervorrichtung, die später zu beschreiben ist, beispielsweise über eine konventionelle Routingschaltung.
  • Wenn die Werte der ersten Binärdaten und der zweiten Binärdaten in den Registern 601 und 603 stabil sind, verriegelt ein Signal s1 jene Werte in den Registern 601 bzw. 603. Der Addierer 607 addiert dann die an seinen zwei Eingängen von den Registern 601 und 603 bereitgestellten Werte. Wenn die Ausgabe des Addierers 607 stabil ist, wird die Ausgabe vom Addierer 607 in Register 609 durch ein Signal auf der mit s2 beschrifteten Leitung verriegelt. Die für einen gegebenen Wert erforderliche Zeit, um in einem gegebenen Register stabil zu werden, kann konventioneller Weise vom Durchschnittsfachmann für Schaltungsdesign bestimmt werden und ein Verriegelungssignal (z. B. auf Leitung s1 oder Leitung s2) kann so getimed werden, dass es nach dieser Zeit auftritt. An diesem Punkt hält das Register 609 Binärdaten, die der Menge a + b entsprechen, repräsentieren, wie in Schritt 401 von 4 gezeigt.
  • Die Binärdaten im Register 609 werden dann vom Register 609 an das UND-Gatter 611 gerichtet. Das UND-Gatter 611 führt ein logisches UND zwischen den Binärdaten aus Register 609 und der Maskenmenge M1 aus Maskenregister 613 durch. Das Ergebnis dieser logischen UND-Operation ist äquivalent der in Schritt 403 von 4 illustrierten Menge c1. Die Ausgabe aus dem ersten UND-Gatter 611 wird dann zurück zur Eingabe des ersten Registers 601 gerichtet und ein anderes Signal auf der s1 bezeichneten Leitung verriegelt dann die entsprechenden Werte in dem ersten Register 601 zur angemessenen Zeit. In dieser Hinsicht versteht sich, dass ein Signal auf der Logikschaltung S1 geeignet so getimed werden kann, dass es unnötig ist, einen Multiplexer oder Schalter am 623 genannten Punkt vorzusehen, um Datenausgabe aus den Register 609 zu routen. Selbstverständlich könnte die Vorrichtung 609 mit einem Multiplexer oder Schalter am Punkt 623 zum Routen von Daten ausgerüstet werden, falls erwünscht.
  • Während die in dem unmittelbar zuvor stehenden Absatz beschriebenen Operationen ausgeführt werden, werden die folgenden Operationen mehr oder weniger simultan ausgeführt. Die Ausgabe aus dem Register 609 wird zum zweiten UND-Gatter 617 gerichtet und die erste vorgegebene binäre Menge M1 wird zu einem logischen NICHT-Gatter 615 gerichtet. Die Ausgabe aus dem logischen NICHT-Gatter 615 wird ebenfalls an einen Eingang des zweiten UND-Gatters 617 gerichtet. Die Daten an diesen Eingängen des zweiten UND-Gatters 617 werden dann über eine logische UND-Operation kombiniert und an ein Rechtsschiebegatter 619 gerichtet. Das Rechtsschiebegatter 619 führt eine Rechtsverschiebung um m Bits an der Dateneingabe aus dem zweiten UND-Gatter 617 gemäß der Eingabe auf der mit m bezeichneten Leitung aus. Die Ausgabe des Rechtsschieberegisters 619 wird dann an den Eingang des zweiten Registers 603 gerichtet. Das Ergebnis dieser Gruppe von Operationen, die am zweiten Register 603 eingegeben wird, entspricht der Menge c2, auf die in Schritt 405 von 4 Bezug genommen wurde.
  • Wenn die der nunmehr in den ersten und zweiten Registern 601 und 603 gespeicherten Binärdaten stabil sind, verriegelt das Signal s1 diese Werte in den ersten und zweiten Registern 601 und 603. Zu diesem Zeitpunkt addiert der Addierer 607 die Binärdaten aus den ersten und zweiten Registern 601 und 603 und richtet die Ausgabe an das Ausgaberegister 609. Die nun in Register 609 gespeicherten Binärdaten werden dann an das Ausgaberegister 621 gerichtet und ein Signal auf Leitung s3 verriegelt die Binärdaten im Register 621 zu einem geeigneten Zeitpunkt. Diese Binärdaten entsprechen den dritten Binärdaten, die im Schritt 407 von 4 als c bezeichnet werden.
  • Durchschnittsfachleute werden erkennen, dass viele Variationen der Vorrichtung 600 gemäß der vorliegenden Erfindung möglich sind. Beispielsweise kann jedes interne w-Bit-Register 601, 603, 609, 613 und 621 durch mehrere parallele (d. h. koordinierte) Register ersetzt werden, von denen zumindest eines Binärdaten hält, die zumindest zwei Koeffizienten eines Feldelementes repräsentieren. Weiterhin werden das erste UND-Gatter 611, der Addierer 607, das zweite UND-Gatter 617, das NICHT-Gatter 615 und das Rechtsschiebegatter 619, in 6 gezeigt, entsprechend durch mehrere parallele (d. h. koordinierte) Kopien von jedem ersetzt.
  • In der unter Bezugnahme auf 6 beschriebenen Vorrichtung 600 werden erste und zweite Binärdaten an erste und zweite Register 601 bzw. 603 eingegeben, wobei Nullen bereits an geeigneten Schutz-Bit-Positionen konfiguriert sind. Die ersten und zweiten Binärdaten können in dieser Konfiguration beispielsweise durch einen Prozessor (nicht gezeigt) bereitgestellt werden, beispielsweise, der Nullen an Schutz-Bit-Positionen einfügt, wie geeignet. Somit können der Prozessor (nicht gezeigt) und das erste Register 601 als Mittel zum Speichern erster Binärdaten angesehen werden und der Prozessor (nicht gezeigt) und das zweite Register 603 können als Mittel zum Speichern zweiter Binärdaten angesehen werden. Weiterhin können Register 621 und/oder Register 609 als Mittel zum Speichern dritter Binärdaten angesehen werden. Darüber hinaus können Takt/Logik-Vorrichtung 605 und irgendeine der verbleibenden in 6 illustrierten Vorrichtungen als Mittel zum Ausführen zumindest einer Operation an den ersten Binärdaten und den zweiten Binärdaten angesehen werden.
  • Durch Verwenden der Vorrichtung 600 gemeinsam mit einem Prozessor (nicht gezeigt) hat die Vorrichtung 600 eine mit Feldelementen für verschiedene Auswahlen von p und k für das finite Feld GF(pk), wobei p von der Form p = 2m – 1 ist, zu verwendende Flexibilität. Insbesondere ist die Menge m eine Variable und das Rechtsschieberegister 619 antwortet gemäß dem Eingangswert von m. Zusätzlich hält das Maskenregister 613 eine geeignete Form der ersten vorgegebenen binären Menge M1, die von der Menge m abhängt. Die Menge M1 ist "vorbestimmt" in dem Sinne, dass, wenn einmal die Menge m ausgewählt ist (welche die Menge p bestimmt), die Form der Menge M1 direkt wie oben beschrieben folgert.
  • In einem anderen beispielhaften Aspekt der Erfindung kann die Vorrichtung 600 modifiziert werden, wie etwa durch die im Blockdiagramm von 7 illustrierte Hardwarevorrichtung 700 gezeigt, für eine Situation, in der eine dedizierte Auswahl des finiten Feldes GF(pk) getroffen wird und unverändert bleibt. Das heißt, die Mengen m, p und k, wie auch die Wahl, ob die Repräsentation eine Einzel-Schutz-Bit-Repräsentation oder eine Mehr-Schutz-Bit-Repräsentation ist, stehen fest und die Hardware-Vorrichtung 700 ist auf solche Auswahlen ausgerichtet. In dieser Situation kann die Hardware-Vorrichtung 700 anfängliche Binärdaten empfangen, die Feldelemente repräsentieren, wobei die anfänglichen Binärdaten nicht mit Nullen in Schutz-Bit-Positionen konfiguriert sind. Stattdessen konfiguriert die Hardware-Vorrichtung 700 selbst die anfänglichen Binärdaten mit Nullen in geeigneten Schutz-Bit-Positionen, um erste und zweiten Binärdaten zu erzeugen, ohne die Notwendigkeit eines Prozessor, um die ersten und zweiten Binärdaten mit Nullen in Schutz-Bit-Positionen zu konfigurieren. Die in 7 illustrierte Hardware-Vorrichtung 700 wird nunmehr beschrieben.
  • Die Hardware-Vorrichtung 700, die im Funktionsblockdiagramm von 7 illustriert ist, teilt verschiedene gemeinsame Merkmale und Betriebsaspekte mit der Vorrichtung 600, die in 6 illustriert ist, und gleichen Merkmalen werden in 6 und 7 gleiche Bezugszeichen gegeben. Die Diskussion von Aspekten der Vorrichtung 700, die sie gemeinsam mit der Vorrichtung 600 hat, wird hier nicht wiederholt. Stattdessen werden Aspekte, in denen sich die Vorrichtung 700 von der Vorrichtung 600 unterscheidet, diskutiert.
  • Die Vorrichtung 700 besitzt verschiedene Merkmale, die man nicht in der Vorrichtung 600 finden kann. Insbesondere besitzt die Vorrichtung 700 Schutz-Bit-Einfügungsschaltungen 701' und 703' (SB-Einfügung) und eine Schutz-Bit-Entfernungsschaltung 709' (SB-Entfernung). Beispielhafte Implementationen dieser Schaltungen werden in 8A und 8B beschrieben. Wie in 7 gezeigt, sind die Schutz-Bit-Einfügeschaltung 701' und 703' funktional am Eingang der Hardware-Vorrichtung 700 angeordnet und die Schutz-Bit-Entfernungsschaltung 709 ist funktional zwischen dem Register 709 und dem Ausgaberegister 721 angeordnet. Die Schutz-Bit-Einfügeschaltungen 701' und 703' arbeiten dafür, anfängliche Binärdaten a' und b' (ohne Schutz-Bits) entsprechend den ersten und zweiten Feldelementen von GF(pk) zu empfangen und geeignete Schutz-Bits in diese Daten einzufügen. Anders ausgedrückt transformieren die Schutz-Bit-Einfügeschaltungen 701' und 703' die anfänglichen Binärdaten a' und b' in erste Binärdaten und zweite Binärdaten, die Schutz-Bits haben, insbesondere mit Nullen an Schutz-Bit-Positionen. Die Schutz-Bit-Entfernungsschaltung 709' hat die entgegengesetzte Funktion – nämlich, dritte Binärdaten c zu empfangen, die ein Berechnungsergebnis repräsentieren und Schutz-Bits aufweisen, und jene Schutz-Bits zu entfernen, wodurch endgültige Binärdaten c' gebildet werden, welche das Berechnungsergebnis repräsentieren, aber ohne Schutz-Bits.
  • Der Vorrichtung 700 fehlen auch gewisse Merkmale, die in der Vorrichtung 600 vorhanden sind, weil sie in der Vorrichtung 700 nicht erforderlich sind. Insbesondere fehlt der Vorrichtung 700 eine Eingangsleitung für die Menge m in das Rechtsschieberegister 719 und in das Maskenregister 713. Solch eine Eingangsleitung ist nicht notwendig, weil m als feststehend gegeben ist. Stattdessen wird das Rechtsschiebegatter 719 einmal mit dem Wert von m initialisiert, um die geeignete Rechtsverschiebung durchzuführen. Ähnlich wird das Maskenregister 713 einmal mit der geeigneten Form von M1 initialisiert. Konventionelle elektrische Verbindungen können zur Ausführung dieser Initialisierungen verwendet werden und werden in 7 nicht gezeigt. Der Betrieb der Vorrichtung 700, in 7 illustriert, ist im Wesentlichen ähnlich der für die in 6 illustrierte Vorrichtung 600, abgesehen von den oben erwähnten Betriebsunterscheidungen.
  • In der oben beschriebenen Vorrichtung 700 können das erste Register 701 und die Schutz-Bit-Einfügeschaltung 701' als Mittel zum Speichern erster Binärdaten angesehen werden. Das zweite Register 703 und die Schutz-Bit-Einfügeschaltung 703' können als Mittel zum Speichern zweiter Binärdaten angesehen werden. Weiterhin kann das Register 709 als Mittel zum Speichern dritter Binärdaten angesehen werden. Darüber hinaus können die Takt/Logikschaltung 705 und alle anderen der in 7 illustrierten verbleibenden Vorrichtungen als Mittel zum Ausführen zumindest einer Operation an den ersten Binärdaten und den zweiten Binärdaten angesehen werden.
  • Die Schutz-Bit-Einfügeschaltungen 701' und 703' und die Schutz-Bit-Entfernungsschaltung 709', auf die in 7 Bezug genommen wird, werden nunmehr detaillierter unter Bezugnahme auf 8A und 8B beschrieben. Die in 8A und 8B illustrierten beispielhaften Schaltungen reflektieren eine für das Feld GF(78) konfigurierte 32-Bit Registeranordnung; jedoch sind die in den 8A und 8B reflektierten Konzepte allgemein auf Register anderer Größen und auf andere finite Felder GF(pk) anwendbar. 8A illustriert eine beispielhafte Schutz-Bit-Einfügeschaltung 800, die für Schutz-Bit-Einfügeschaltungen (SB-Einfügung) verwendet werden kann, die durch Bezugszeichen 701' bzw. 703' in 7 bezeichnet werden. Wie in 8A gezeigt, umfasst die Schaltung 800 ein erstes Register 801 und eine Mehrzahl von Bitpositionen 803 (z. B. 32 Bits). Die Schaltung 800 umfasst auch ein Register 805 mit einer Mehrzahl von Gruppen 807 von Bitpositionen, die zum Speichern von Binärdaten dienen sollen, welche Feldkoeffizienten eines Feldelements von GF(pk) repräsentieren, und eine Mehrzahl von Schutz-Bit-Positionen 809 (hell schattierte Regionen). Die Schaltung 800 umfasst auch eine Mehrzahl von elektrischen Verbindungen 811, die dafür konfiguriert ist, Daten vom Register 801 an Register 805 in einer Weise zu routen, die eine Schutz-Bit-Position 809 angrenzend an der signifikantesten Bitposition der vorherigen Gruppe von drei Bitpositionen 807 bereitstellt. Die Schutz-Bit-Positionen 809 werden elektrisch geerdet, um für diese Bitwerte Nullen bereitzustellen, aber diese elektrischen Verbindungen sind in 8A nicht gezeigt. Solch eine Schaltung kann beispielsweise unter Verwendung konventioneller Lithographietechniken gebildet werden.
  • Auf diese Weise kann jede 3-Bit Gruppe 807 von Bitpositionen in Register 805 Binärdaten speichern, die einen Koeffizienten eines Feldelementes von GF(78) repräsentieren und jede Gruppe 807 von Bitpositionen in Register 805 wird von einer angrenzenden Gruppe 807 von Bitpositionen durch ein einzelnes Schutz-Bit 809 getrennt. Dementsprechend gestattet die Schutz-Bit-Einfügeschaltung 800, dass Koeffizienten eines Feldelementes repräsentierende anfängliche Binärdaten parallel vom Register 81 an Register 805 in einer Weise übertragen werden, die Schutz-Bits zwischen Gruppen von Datenbits einfügt, welche Koeffizienten des Feldelementes repräsentieren.
  • In ähnlicher Weise ist eine beispielhafte Schutz-Bit-Entfernungsschaltung 820 in 8B für eine 32-Bit GF(78) Konfiguration illustriert. Wie in 8B illustriert, ist die Schutz-Bit-Entfernungsschaltung 820 das Spiegelbild der Schutz-Bit-Einfügungsschaltung 800, die in 8A gezeigt ist. Die Schutz-Bit-Entfernungsschaltung 820 umfasst ein Register 825, ein Register 821 und eine Mehrzahl von elektrischen Verbindungen 831. Das Register 825 umfasst mehrere Gruppen 827 von Bitpositionen und eine Mehrzahl von Schutz-Bit-Positionen 829, wobei jede Schutz-Bit-Position angrenzend an das signifikanteste Bit einer gegebenen Gruppe 827 von Bitpositionen ist. Wie in 8B illustriert, sind die elektrischen Verbindungen 831 so konfiguriert, dass Koeffizienten eines Feldelementes repräsentierende Binärdaten, die in Register 825 gespeichert sind, an ein Register 821 in einer Weise übertragen werden, die Schutz-Bits zwischen angrenzenden Gruppen von Feldkoeffizienten repräsentierenden Datenbits eliminiert. Dies schließt die Diskussion von 8A und 8B ab.
  • Multiplikation unter Verwendung von Einzel-Schutz-Bit-Repräsentation
  • Gemäß einem anderen Aspekt der Erfindung wird nunmehr eine beispielhafte Form für GF_p_k_MUL für eine Einzel-Schutz-Bit-Repräsentation zum Berechnen des Produktes von zwei (Nicht-Null) Feldelementen αi und βi in GF(pk) beschrieben. Der Fall, wo ein Feldelement Null ist, ist trivial, und muss nicht beschrieben werden. Diese Diskussion ist auf ein in den funktionalen Formen p = 2m – 1, p = 2m + 1, p = 2m – d und p = 2m + d geschriebenes p anwendbar.
  • Wie zuvor in der zu den Gleichungen 9–12 gehörigen Diskussion angemerkt, ist eine multiplikative Gruppe zyklisch und ein Feldelement g kann daher so aufgefunden werden, dass irgend ein anderes Nicht-Null-Feldelement als gx für eine Ganzzahl x < pk geschrieben werden kann. Somit können die diskreten Logarithmen aller Feldelemente, wie auch die entsprechenden Anti-Logarithmen, einmal vorab berechnet werden es können und Tabellennachschlagungen verwendet werden, um das Produkt der zwei Feldelemente zu berechnen. In ähnlicher Weise sind in Bezug auf die vorliegende Erfindung für Binärdaten "a", die irgendein αj gemäß der Einzel-Schutz-Bit-Repräsentation repräsentieren (d. h. wo Schutz-Bits vom Werte Null in Bitpositionen v(m + 1) – 1 platziert sind, wobei v = 1, 2, ..., k – d. h. jede sukzessive m-te Bitposition) die folgenden Beziehungen anwendbar: DLOG{a} = x (16) ANTILOG{x} = a (17)wobei 0 ≤ x < pk, so dass gx = αj. Dementsprechend kann in der Einzel-Schutz-Bit-Repräsentation die Multiplikation von Feldelementen von GF(pk) gemäß der Relation erreicht werden: c = ANTILOG{(DLOG{a} + DLOG{b}) mod (pk – 1)} (18)wobei "a" erste Binärdaten (Registerinhalte) sind, die gemäß der, ein erstes Feldelement repräsentierenden Einzel-Schutz-Bit-Repräsentation gespeichert sind, "b" zweite Binärdaten (Registerinhalte) sind, die gemäß der, ein zweites Feldelement repräsentierenden Einzel-Schutz-Bit-Repräsentation gespeichert sind und "c" dritte Binärdaten (Registerinhalte) sind, die ein drittes Feldelement gleich dem Produkt der ersten und zweiten Feldelemente repräsentieren. Beispielsweise kann anhand der mit den zuvor beschriebenen Algorithmen PRODUCT(α, β) und GF_p_k_MUL verwendeten Notation, "a" ein Feldelement αj von GF(pk) repräsentieren und "b" kann ein Feldelement βi-j von GF(pk) repräsentieren. Dementsprechend kann das Produkt der zwei Feldelemente von GF(pk) in der Einzel-Schutz-Bit-Repräsentation gemäß der vorliegenden Erfindung unter Verwendung von nur drei Tabellennachschlagungen und einer modularen Addition berechnet werden.
  • Gemäß einem beispielhaften Aspekt der vorliegenden Erfindung kann das in 1 illustrierte System 100 verwendet werden, um den oben erwähnten Ansatz zur Multiplikation von Feldelementen zu implementieren. Insbesondere kann das System 100 so konfiguriert werden, dass der Prozessor 105 eine beispielhafte Serie von in 9 illustrierten Schritten ausführt, um in Schritt 305 von 3 referenzierte dritte Binärdaten zu erzeugen. Es wird angenommen, dass die in 3 gezeigten Schritte 301 und 303 bereits vom Prozessor 105 ausgeführt worden sind, so dass ein erstes Feldelement von GF(pk) repräsentierende erste Binärdaten in einem ersten Register (z. B. dem in 1 gezeigten Register 107) gespeichert sind und so dass ein zweites Feldelement repräsentierende zweite Binärdaten in einem zweiten Register (z. B. Register 109) gespeichert sind. Die in 9 illustrierten Schritte repräsentieren dann eine beispielhafte Implementation von Schritt 305, der in 3 gezeigt ist. Der im Flussdiagramm von 9 illustrierte Ansatz 900 wird nunmehr beschrieben.
  • 9 ist ein Flussdiagramm, das von der Verarbeitungseinheit 105 zum Verarbeiten der ersten und zweiten Binärdaten ausgeführte Schritte illustriert, um dritte Binärdaten zu erzeugen, die das Produkt der ersten und zweiten Feldelemente repräsentieren. Wie in Schritt 901 von 9 angezeigt, bestimmt der Prozessor die Mengen DLOG(a) und DLOG(b), wobei "a" die Inhalte des ersten Registers repräsentiert und "b" die Inhalte des zweiten Registers repräsentiert. In Schritt 901 repräsentiert die DLOG-Operation eine Nachschlagoperation aus einer Nachschlagtabelle von diskreten Logarithmen in Binärform von Nicht-Null-Feldelementen von GF(pk). Die Nachschlagtabelle von diskreten Logarithmen kann im Speicher 101, der in 1 illustriert ist, gespeichert werden. Ein Beispiel einer einfachen Nachschlagtabelle für die DLOG-Operation für GF(pk) ist in 10A gegeben. Die Nachschlagtabelle in 10A wird unten detaillierter beschrieben.
  • In Schritt 903 führt die Verarbeitungseinheit 105 eine Addition der Mengen DLOG(a) und DLOG(b) aus und reduziert das Ergebnis dieses Addition Modulo (pk – 1). In Schritt 905 bestimmt die Verarbeitungseinheit 105 die Menge ANTILOG{(DLOG(a) + DLOG(b)) mod (pk – 1)}. Die ANTILOG-Operation repräsentiert eine Nachschlagoperation aus einer Nachschlagtabelle von Anti-Logarithmen, wobei ANTILOG(x) = gx, wobei g ein Erzeuger von GF(pk) ist. Ein Beispiel einer einfachen Nachschlagtabelle für die ANTILOG-Operation für GF(32) ist in 11A gegeben. Die Nachschlagtabelle in 11A wird unten in größerem Detail beschrieben. Das Ergebnis der in Schritt 905 dargestellten Operationen sind in 3 von Schritt 305 referierte dritte Binärdaten, die in diesem Beispiel ein drittes Feldelement repräsentieren, welches das Produkt der ersten und zweiten Feldelemente ist.
  • Exemplarische Nachschlagtabellen diskreter Logarithmen und Anti-Logarithmen, die oben für die Einzel-Schutz-Bit-Repräsentation referiert werden, werden nunmehr beschrieben. Aus Gründen der Kürze kann eine Nachschlagtabelle diskreter Logarithmen nachfolgend auch als eine DLOG-Tabelle bezeichnet werden und eine Nachschlagtabelle von Anti-Logarithmen kann nachfolgend auch als eine ANTILOG-Tabelle bezeichnet werden.
  • In einem Beispiel kann die DLOG-Tabelle durch Binärdaten indiziert sein, die den Feldelementen von GF(pk) entsprechen, wobei die Binärdaten als Speicheradressen angesehen werden. Diese Art von DLOG-Tabelle wird hierin als "direkt adressierte" DLOG-Tabelle bezeichnet und verwendet aufeinanderfolgende Binärdaten entsprechend Feldelementen, als Speicheradressen. Für p = 2m – 1 beispielsweise kann die DLOG-Tabelle durch k(m + 1)-Bit binäre Ketten indiziert (adressiert) werden. Alternativ kann die DLOG-Tabelle unter Verwendung von binären Ketten von k(m + 1) – 1 Bits Länge indiziert werden, falls das signifikanteste Schutz-Bit der jedes Feldelement repräsentierenden Binärdaten nicht für Adressierung verwendet wird (das signifikanteste Schutz-Bit ist für Tabellennachschlagungen nicht erforderlich). Falls das signifikanteste Schutz-Bit nicht zur Adressierung verwendet wird, kann die Größe der DLOG-Tabelle um einen Faktor von Zwei vermindert werden. Unter der Annahme, dass Feldelemente repräsentierende Binärdaten als a(t) bezeichnet werden (wobei t eine Polynomvariable in einer Polynom-Basisrepräsentation ist), ist der entsprechende nachgeschlagene Wert aus der DLOG-Tabelle an einer Adresse entsprechend a(t) die Ganzzahl "x", wobei x = DLOG{a(t)} ist. In einer direkt adressierten DLOG-Tabelle für p = 2m – 1, gegeben dass eine Einzel-Schutz-Bit-Repräsentation von Feldelementen jedes m-te Bit alloziert, ein Schutz-Bit zu sein (für insgesamt k Schutz-Bits), gibt es nur 2km relevante Einträge in der DLOG-Tabelle, die tatsächlich während des Nachschlagens verwendet werden. Diese relevanten Einträge sind jene, für die eine Menge a(t) Nullen an den Schutz-Bit-Positionen hat. Solch eine DLOG-Tabelle hat insgesamt 2k(m+1) reservierte Speicherstellen (Zeilen), falls unter Verwendung von binären Ketten von k(m + 1) Bits Länge indiziert oder 2k(m+1)-1 Zeilen, falls unter Verwendung von Binärstrings von k(m + 1) –1 Bits Länge indiziert. Anders ausgedrückt, werden Reihen in einer direkten Adressierungs-DLOG-Tabelle, für welche das Feldelement a(t) (die Speicheradresse) eine "Eins" an jeglicher Schutzposition hat, nicht verwendet.
  • Falls beispielsweise k = 8 und p = 3 (d. h. m = 2), kann jedes Element des Feldes als 24-Bit-Kette repräsentiert werden (mit Nullen an jeder dritten Bitposition), und die DLOG-Tabelle kann entsprechend durch Ketten der Länge 8(2 + 1) = 24 indiziert werden (äquivalent zu 8(log2(3) + 1)). In diesem Beispiel gibt es 224 reservierte Speicherstellen in der DLOG-Tabelle, aber nur je eine von 256 von diesen wird auch Daten enthalten, auf die tatsächlich zugegriffen wird, da Nachschlagungen nur für Adressen vorgenommen werden, die Feldelementen entsprechen, d. h. Ketten, deren Schutz-Bit-Stellen Nullen sind. Im obigen Beispiel gibt es k = 8 Schutz-Bit-Stellen, so dass nur ein Tabellen-Index pro 28 (= 256) für tatsächliche Tabellennachschlagungen verwendet wird. Dennoch ist für moderate k und m (z. B. k(m + 1) < 25) das Implementieren einer Nachschlagtabelle in dieser Weise in vielen Fällen noch machbar.
  • Wie oben erwähnt, ist das signifikanteste Schutz-Bit nicht erforderlich, um eine direkt adressierte DLOG-Tabelle zu indizieren, und diese Beobachtung gestattet das Einsparen eines Faktors von Zwei bei der Größe der DLOG-Tabelle. Wie unten beschrieben wird, wird jeder Koeffizient eines Feldelementes für p der Form p = 2m + 1, p = 2m – d und p = 2m + d (d > 1 und d ungerade) jeweils unter Verwendung von m + 2, m + 1 und m + 2 Bits von Binärdaten (nicht einschließlich von Schutz-Bits) repräsentiert, anstelle von m Bits, wie für p = 2m – 1. Direkt adressierte DLOG-Tabellen für p von anderen Formen als p = 2m – 1 sind daher entsprechend größer als direkt adressierte DLOG-Tabellen für p der Form p = 2m – 1.
  • Eine, die oben beschriebenen Konzepte illustrierende beispielhafte DLOG-Tabelle 1000 für die Einzel-Schutz-Bit-Repräsentation ist in 10A für den einfachen Fall von GF(32) gezeigt, wobei p = 2m – 1 für m = 2. Das Beispiel in 10A wurde für GF(32) unter Verwendung des Generators g(t) = t und des unreduzierbaren Polynoms p(t) = t2 + t + 2 konstruiert. Solche eine DLOG-Tabelle kann beispielsweise unter Verwendung einer 8-Bit, 16-Bit, 32-Bit etc. -Architektur implementiert werden. Wie zuvor erwähnt, liegt die Auswahl eines geeigneten Generators und unreduzierbaren Polynoms für ein gegebenes finites Feld GF(pk) innerhalb des Kenntnisbereichs eines Durchschnittsfachmanns.
  • Die in 10A illustrierte beispielhafte DLOG-Tabelle 1000 umfasst Speicheradressen 1001 entsprechend den Feldelementen a(t) in Binärform und gespeicherte Werte 1003 entsprechend den assoziierten Ganzzahlen x in Binärform. Zusätzlich umfasst die beispielhafte DLOG-Tabelle 1000 2k(m+1) = 26 = 64 Zeilen (Einträge) 1005. Im Beispiel von 10 umfasst jede Speicheradresse eine k(m + 1) = 2(2 + 1) = 6-Bit Kette und das linkeste Bit jeder Speicheradresse 1001 entspricht dem signifikantesten Schutz- Bit eines entsprechenden Feldelements. Dieses signifikanteste Schutz-Bit kann, falls gewünscht, aus den Speicheradressen 1001 eliminiert werden, was es gestattet, die DLOG-Tabelle 1000 durch binäre Ketten von k(m + 1) – 1 Bits Länge zu indizieren.
  • Die Speicheradressen 1001 umfassen Gruppen von Datenbits entsprechend den Koeffizienten von Feldelementen in der zuvor beschriebenen Weise. Jede Speicheradresse 1001 umfasst weiter eine Mehrzahl von Schutz-Bits 1005.
  • Die gespeicherten Werte 1003 der DLOG-Tabelle 1000 sind als funktional angrenzend an die Speicheradressen 1001 aus Gründen der Illustration illustriert. Jeder gespeicherte Wert 1003 umfasst Binärdaten, die eine Ganzzahl x, wie oben definiert, repräsentieren. Referenzinformation 1050 ist in 10B in einer Weise präsentiert, die ausgerichtet ist über Zeilen, mit der Information in der in 10A gezeigten DLOG-Tabelle 1000. Die Referenzinformation 1050 in 10B ist nicht Teil der DLOG-Tabelle 1000 und lediglich aus Gründen der Bequemlichkeit vorgesehen, um die Assoziation zwischen der Binärinformation, die in der DLOG-Tabelle 1000 gezeigt ist, und den Feldelementen a(t) in Polynomform und den tatsächlichen Ganzzahlwerten x zu reflektieren. Verschiedene Leereinträge, die durch "- -" bezeichnet werden, liegen in den "x"- und "a(t)"-Spalten beider 10B und 10A vor. Diese leeren Einträge stammen von zwei Erwägungen. Zuerst einmal reflektieren leere Einträge die Tatsache, dass es keine Ganzzahl x gibt, die gx = 0 für das Feldelement "0" (a(t) = 0) erfüllt, wie Fachleuten bekannt ist. Andere leere Einträge entsprechen Speicheradressen 1001, die eine "Eins" in irgendeiner entsprechenden Schutz-Bit-Position aufweisen. Wie oben erwähnt, werden diese Einträge nicht in der beispielhaften DLOG-Tabelle 1000 verwendet.
  • Im oben beschriebenen Direktadressierungsbeispiel weist die DLOG-Tabelle 100 reservierte Speicherstellen auf, die nicht für Nachschlagoperationen entsprechend den zwei Arten von oben beschriebenen Leereinträgen verwendet werden. Die Mehrzahl dieser Leereinträge ist mit Speicheradressen assoziiert, die eine "Eins" an irgendeiner Schutz-Bit-Position aufweisen. Jedoch können kompakte DLOG-Tabellen ohne solche Leereinträge implementiert werden. Beispielsweise können anstelle eines Assoziierens von Feldelementen mit aufeinanderfolgenden Speicheradressen, Feldelemente a(t) repräsentierende Binärdaten mit nur Nullen an Schutz-Bit-Positionen in einer DLOG-Tabelle gespeichert werden. Entsprechende Werte von x = DLOG(a(t)) können auch in der DLOG-Tabelle gespeichert werden. Die gespeicherten a(t) Einträge und x Eintrage können miteinander so assoziiert werden, dass das Nachschlagen eines gegebenen a(t) Eintrags den entsprechenden x Eintrag rückgibt. Dieser Einsatz hat nicht die Einfachheit der Verwendung konsekutiver Binärdaten entsprechend a(t) Einträgen als Adressen, hat aber den Vorteil, dass weniger Speicherplatz erforderlich ist.
  • In einem Aspekt der vorliegenden Erfindung kann die Multi-Schutz-Bit-Repräsentation verwendet werden, um kompakte Tabellen zu erhalten, ohne die Nachschlagungen signifikantester Bit zu verkomplizieren, wie später beschrieben wird. Im Allgemeinen kann eine solche kompakte DLOG-Tabelle mit 2km+1 reservierten Speicherstellen konfiguriert werden (z. B. als 2km Zeilen mit zwei Eintragen pro Zeile angesehen), die alle für Nachschlagsoperationen verwendet werden können. Alternativ kann eine solche kompakte DLOG-Tabelle unter Verwendung von 2km reservierten Speicherstelle implementiert werden, falls das signifikanteste Schutz-Bit eliminiert wird. Im Vergleich umfasst eine direkt adressierte DLOG-Tabelle 2k(m+1) reservierte Speicherstellen (oder 2k(m+1)-1 reservierte Speicherstellen, falls das signifikanteste Schutz-Bit eliminiert wird). Somit kann der Einsatz einer kompakten DLOG-Tabelle für Berechnungen nützlich sein, die relativ größere Feldelemente involvieren (z. B. Feldelemente, die durch Binärdaten größer als 25 Bit einschließlich der Schutz-Bits repräsentiert werden).
  • Beispielhafte Aspekte von ANTILOG-Tabellen gemäß der vorliegenden Erfindung werden nunmehr beschrieben. ANTILOG- Tabellen gemäß der vorliegenden Erfindung ähneln den oben beschriebenen DLOG-Tabellen. Insbesondere enthalten ANTILOG-Tabellen ebenfalls Binärinformationen, die die Mengen x und a(t) repräsentieren. Jedoch sind ANTILOG-Tabellen durch Binärdaten indiziert (adressiert), welche die Menge x = DLOG(a(t)) repräsentieren. Somit ist für eine Speicheradresse entsprechend einem gegebenen Wert von x die Nachschlagmenge a(t) = ANTILOG(x). Gegeben, dass ANTILOG-Tabellen durch x anstelle von a(t) indiziert sind (wie für DLOG-Tabellen), sind ANTILOG-Tabellen beachtlich kleiner als entsprechende DLOG-Tabellen. Insbesondere weisen ANTILOG-Tabellen pk – 1 reservierte Speicherstellen auf, unabhängig von der funktionellen Form von p. Die Tatsache, dass es pk – 1 reservierte Speicherstellen anstelle von pk reservierten Speicherstellen gibt, stammt von der Tatsache, dass es keine Ganzzahl x entsprechend dem Feldelement a(t) = gx = 0 gibt.
  • Eine beispielhafte ANTILOG-Tabelle 1100 ist in 11A für den einfachen Fall von GF(32), für die Einzel-Schutz-Bit-Repräsentation gezeigt, wobei p = 2m – 1 und m = 2. Das Beispiel in 11A wurde für GF(32) unter Verwendung des Generators g(t) = t und des unreduzierbaren Polynoms p(t) = t2 + t + 2 konstruiert. Solch eine ANTILOG-Tabelle kann beispielsweise unter Verwendung einer 8-Bit, 16-Bit, 32-Bit etc. Architektur implementiert werden. Die in 11A illustrierte beispielhafte ANTILOG-Tabelle 1100 umfasst Speicheradressen 1101 entsprechend Ganzzahlen x in Binärform und gespeicherte Werte 1103 entsprechend assoziierten Feldelementen a(t) in Binärform.
  • Die Speicheradressen 1101 der beispielhaften ANTILOG-Tabelle 1100 werden in 11A als funktionell angrenzend an die gespeicherten Werte 1103 aus Gründen der Illustration illustriert. Jeder gespeicherte Wert 1103 umfasst Gruppen von Datenbits, die Koeffizienten von Feldelementen in der zuvor beschriebenen Weise repräsentieren. Jeder gespeicherte Wert 1103 umfasst weiterhin eine Mehrzahl von Schutz-Bits 1105, deren Einträge Nullen sind.
  • In einer zu der in 10B gezeigten Weise ähnlichen wird Referenzinformation 1150 in 11B in einer Weise präsentiert, die über Zeilen ausgerichtet ist, mit der Information in der in 11A gezeigten ANTILOG-Tabelle 1100. Die Referenzinformation 1150 in 11B ist nicht Teil der ANTILOG-Tabelle 1100 und lediglich aus Bequemlichkeit vorgesehen, um die Assoziation zwischen der in der ANTILOG-Tabelle 1100 gezeigten Binärinformation und den Feldelementen a(t) in Polynomform und den tatsächlichen Ganzzahlwerten x zu reflektieren.
  • Wie oben erwähnt, können DLOG-Tabellen und ANTILOG-Tabellen gemäß der vorliegenden Erfindung unter Verwendung jeglicher geeigneter Hardware-Architektur (z. B. 8-Bit, 16-Bit, 32-Bit etc.) gespeichert werden. Zusätzlich, wie oben erwähnt, können direkt adressierte DLOG-Tabellen mit konsekutiven Binärdaten implementiert werden, die Feldelemente repräsentieren, die als Speicheradressen verwendet werden. Alternativ können kompakte DLOG-Tabellen implementiert werden, die keine direkte Adressierung, wie oben beschrieben, implementieren. Solche kompakten DLOG-Tabellen verwenden weniger Speicherplatz, gestatten aber keine direkte Indizierung durch Feldelemente repräsentierende Binärdaten und es wird für kompakte DLOG-Tabellen eine mehr Zeit erfordernde Tabellennachschlagung benötigt. Jedoch kann bei der unten beschriebenen Mehr-Schutz-Bit-Repräsentation eine beachtlich kompaktere DLOG-Tabelle bereitgestellt werden (ungefähr um den Faktor 2k kleiner), die immer noch eine direkte Adressierung gestattet und in der nur ein kleiner Effizienzverlust in Bezug auf Tabellennachschlagungen vorkommt.
  • Speicheranforderungen für direkt adressierte Nachschlagtabellen für die Einzel-Schutz-Bit-Repräsentation für p = 2m – 1 sind wie folgt. Für eine direkt adressierte DLOG-Tabelle enthält jede Zeile der Binärform einer Ganzzahl x der Größe k*log2(p) ≈ km Bits und (nicht einschließlich des signifikantesten Schutz-Bits) wird die Tabelle durch (k – 1)(m + 1)m = k(m + 1) – 1 Bit Binärketten entsprechend den Feldelementen indiziert. Somit ist die Größe der DLOG-Tabelle ungefähr km2k(m+1)-1 Bits. Für die ANTILOG-Tabelle enthält jeder Eintrag maximal eine k(m + 1)-Bitkette und es gibt pk – 1 Einträge. Somit beträgt die Größe k(m + 1)(pk – 1) Bits, was ungefähr gleich k(m + 1)2km Bits ist. Dementsprechend ist die DLOG-Tabelle ungefähr um den Faktor 2k-1 größer als die ANTILOG-Tabelle.
  • Es ist möglich, Tabellengrößen noch weiter zu reduzieren (sowohl für Einzel-Schutz-Bit-Repräsentation als auch Multi-Schutz-Bit-Repräsentation), was die Ausführung einer größeren Zahl von Multiplikationen erfordert. Beispielsweise arbeitet die zuvor erwähnte Karatsuba-Methode zum Multiplizieren von Polynomen des Grads k durch Ersetzen einer einzelnen Multiplikation von zwei Grad-k Polynomen durch drei Multiplikationen, die alle Polynome des Grads k/2 involvieren. Durchschnittsfachleute werden erkennen, dass die oben beschriebene beispielhafte Multiplikation gemäß der vorliegenden Erfindung ähnlich modifiziert werden kann, um Tabellen kleiner Größe in Verbindung mit mehr Tabellennachschlagungen zu verwenden. Falls beispielsweise S eine Tabellengröße zum Ausführen beispielhafter Multiplikationen gemäß der vorliegenden Erfindung wie oben beschrieben ist, kann eine Modifikation vorgenommen werden, bei der Tabellen der Größe S1/2 in Verbindung mit dreimal so vielen Tabellennachschlagungen verwendet werden. Unabhängig von den gesteigerten Kosten für die Tabellennachschlagungen kann dieser Ansatz wünschenswert sein für speicherbeschränkte Umgebungen.
  • Im Hinblick auf die obige Diskussion in Bezug auf GF_p_k_MUL und die entsprechenden DLOG- und ANTILOG-Tabellen kann gesehen werden, dass der oben beschriebene exemplarische Ansatz zum Ausführen der Multiplikation von Feldelementen von GF(pk) gemäß der vorliegenden Erfindung sich signifikant von konventionellen Ansätzen unterscheidet. Zuerst speichert, im Vergleich zu Ansätzen für binäre finite Felder mit Charakteristik p = 2, der vorliegende Ansatz Binärdaten repräsentierende Feldelemente anders, durch Verwendung von Schutz-Bits. Dementsprechend besitzen die DLOG- und ANTILOG-Tabellen gemäß der vorliegenden Erfindung auch Schutz-Bits, wie etwa in 10A und 11A illustriert, während die Nachschlagtabellen für konventionelle Ansätze binäre finite Felder involvieren, die nicht Schutz-Bits besitzen (oder erfordern).
  • Zusätzlich erzielt im Vergleich zu konventionellen Ansätzen zur Multiplikation von Feldelementen eines Ungerad-Charakteristik-finiten Feldes die vorliegende Erfindung die Multiplikationsaufgabe mit signifikant weniger Operationen. Insbesondere wird in Bezug auf das Erweiterungsfeld GF(plk), das oben in der Diskussion bezüglich SUM(α, β) und PRODUCT(α, β) reflektiert wurde, jedes Element des Erweiterungsfeldes als ein Vektor (Polynom) der Länge l repräsentiert, bei dem jede Komponente (Koeffizient) gemäß der Einzel-Schutz-Bit-Repräsentation gespeichert wird. Das Multiplizieren von zwei Elementen im Erweiterungsfeld erfordert ungefähr 3l2 Operationen statt (lk)2 Operationen, die unter Verwendung konventioneller Ansätze erforderlich wären. Somit wird, selbst für relativ kleine Werte von k, ein signifikanter Anstieg der Berechnungsgeschwindigkeit erzielt.
  • In einem anderen Aspekt der Erfindung, der sich auf Multiplikationen von Feldelementen eines Ungerad-Charakteristik-finiten Feldes bezieht, kann eine dedizierte Hardware-Vorrichtung zum Ausführen von Operationen von GF_p_k_MUL vorgesehen sein, wie in 9 illustriert ist. 12 ist ein Funktionsblockdiagramm, das solch eine beispielhafte Hardware-Vorrichtung illustriert. Insbesondere stellt die in 12 illustrierte beispielhafte Vorrichtung 1200 einen anderen Ansatz zur Erzeugung von dritten Binärdaten bereit, die in 4 als c bezeichnet werden, und kann das Produkt eines ersten Feldelements und eines zweiten Feldelements von GF(pk) repräsentieren. In 12 repräsentieren durchgezogene Linien eine elektrische Verbindung für den Datenfluss und gestrichelte Linien repräsentieren elektrische Verbindungen für den Fluss von Kontrollsignalen. Die Vorrichtung 1200 wird hier in der Diskussion als zu der Einel-Schutz-Bit-Repräsentation gehörig beschrieben, aber die Vorrichtung 1200 ist gleichermaßen auf eine Mehr-Schutz-Bit-Repräsentation anwendbar, die später beschrieben wird. Darüber hinaus ist die Vorrichtung 1200 unabhängig von der Form des Charakteristikwertes p (d. h., p = 2m ± 1 oder p = 2m ± d).
  • Die Vorrichtung 1200 umfasst ein erstes Register 1201 und ein zweites Register 1203 zum Halten erster Binärdaten (Registerinhalte "a") bzw. zweiter Binärdaten (Registerinhalte "b"). Die ersten Binärdaten und die zweiten Binärdaten repräsentieren Feldelemente des finiten Feldes GF(pk). Hier wird angenommen, dass die ersten und zweiten Binärdaten in den ersten und zweiten Registern 1201 und 1203 bereits mit Nullen an geeigneten Schutz-Bit-Stellen konfiguriert sind. Jedoch könnte eine Schutz-Bit-Einfügungs- und Entfernungsschaltung, wie etwa in Bezug auf 7 und 8 beschrieben, ebenfalls beinhaltet sein, falls gewünscht, so dass anfängliche Binärdaten ohne Schutz-Bits an der Vorrichtung 1200 eingegeben werden können. Die Vorrichtung 1200 umfasst auch eine kombinatorische Logik- und Taktvorrichtung (Takt/Logik) 1205, einen erste Multiplexer 1207 (MUX1), einen DLOG-Nachschlagspeicher 1209, und einen ANTILOG-Nachschlagspeicher 1211. Die DLOG- und ANTILOG-Nachschlagspeicher können beispielsweise unter Verwendung von Wahlfreizugriffspeicher (RAM) oder einem Flash-Speicher implementiert werden. Die Vorrichtung 1200 umfasst auch ein Register 1213 zum Halten der Binärmenge DLOG(a), ein Register 1215 zum Halten der Binärmenge DLOG(b), ein Additionsgatter (+) 1217 (das auch als Addierer bezeichnet wird) und ein Register 1219 zum Halten eine Ganzzahlwertes pk – 1 in Binärform, der beispielsweise von einem Prozessor empfangen werden kann. Alternativ kann eine spezialisierte Schaltung zusammen mit dem Register 1219 vorgesehen sein, um den Wert pk – 1 bei Eingabe von Werten für p und k zu erzeugen. Das Konfigurieren solch einer spezialisierten Schaltung liegt im Können des Durchschnittsfachmannes. Die Vorrichtung 1200 umfasst auch eine Modulo-Arithmetikschaltung 1221 (MOD) zum Berechnen des Restes einer Eingabemenge, geteilt durch pk – 1, die vom Register 1219 geliefert wird. Die Schaltung 1221 kann eine konventionelle modulare Arithmetik-Hardware sein, die Durchschnittsfachleuten bekannt ist und nicht weiter beschrieben werden muss. Die Vorrichtung 1200 umfasst weiterhin einen zweiten multiplexer 1223 (MUX2) und ein Ausgaberegister 1225 zum Halten dritter Binärdaten "c", die sich aus Berechnungen innerhalb der Vorrichtung ergeben. Die Takt/Logikeinheit 1205 kann auch einen Ausgabeanschluss (nicht gezeigt) zum Bereitstellen eines Signales aufweisen, das an einer anderen Hardware-Vorrichtung eingegeben wird, um Berechnungen in einer anderen Hardware-Vorrichtung zu initiieren, wenn Berechnungen in der Vorrichtung 1200 abgeschlossen sind. Beispielsweise kann eine andere Hardware-Vorrichtung eine andere Vorrichtung 1200 oder eine Additionsvorrichtung 600, wie etwa in 6 illustriert, sein.
  • Nunmehr wird der Betrieb der in 12 illustrierten beispielhaften Vorrichtung 1200 beschrieben. Zuerst werden der DLOG-Nachschlagspeicher 1209 und der ANTILOG-Nachschlagspeicher 1211 einmal mit geeigneten diskreten Logarithmus- und Antilogarithmus-Daten initialisiert. Dies kann erzielt werden, indem ein anfängliches Programmierungssignal an die Takt/Logik-Einheit 1205 über die mit s bezeichnete Leitung bereitgestellt wird und durch simultanes Liefern diskreter Logarithmus- und Antilogarithmus-Daten an den DLOG-Nachschlagspeicher 1209 bzw. den ANTILOG-Nachschlagspeicher 1211 über als eD1 und eD2 bezeichnete externe Datenbusse. Gleichzeitig werden über externe Adressbusse eA1 bzw. eA2 Adressdaten dem DLOG-Speicher 1209 und dem ANTILOG-Speicher 1211 zugeführt, über MUX1 1207 bzw. MUX2 1223. Wie oben angemerkt, können die Nachschlagspeicher 1209 und 1211 beispielsweise mit RAM- oder Flash-Speichern implementiert sein. Alternativ, falls die Vorrichtung 1200 für bestimmte Werte von p und k zu dedizieren ist, können Nachschlagspeicher 1209 und 1211 unter Verwendung von ROM konfiguriert werden, und Vorberechnungen der diskreten Logarithmus- und Antilogarithmus-Daten können einmal vorgenommen werden und während der Herstellung in das ROM geladen werden.
  • Mit den initialisierten Nachschlagspeichern 1209 und 1211 können, ein erstes Feldelement repräsentierende erste Binärdaten und ein zweites Feldelement repräsentierende zweite Binärdaten an mit a und b beschrifteten Leitungen an einem ersten Register 1201 und bzw. einem zweiten Register 1203 eingegeben werden. Es wird angenommen, dass die ersten Binärdaten und die zweiten Binärdaten bereits mit Nullen an geeigneten Schutz-Bit-Positionen konfiguriert sind. Alternativ können Schutz-Bit-Einfügeschaltungen verwendet werden, um geeignete Schutz-Bits vor dem Laden der ersten Binärdaten und zweiten Binärdaten in die ersten bzw. zweiten Register 1201 bzw. 1203 einzufügen, wie etwa in Bezug auf die 7 und 8 beschrieben. Die Menge pk – 1 repräsentierende Binärdaten werden an der "pk – 1" bezeichneten Leitung in das Register 1219 eingegeben. Die ersten Binärdaten, die zweiten Binärdaten, die diskreten Logarithmen- und Antilogarithmen-Daten und die, die Mengen k und p repräsentierenden Binärdaten können beispielsweise von einem Prozessor (nicht gezeigt) oder von einer oder mehrerer Hardware-Vorrichtungen (nicht gezeigt) bereitgestellt werden. Beispielsweise kann eine Additionsvorrichtung 600, wie in 6 und 7 illustriert, verwendet werden, um zumindest einige dieser Daten (z. B. erste Binärdaten und zweiten Binärdaten) über eine konventionelle Routing-Schaltung bereitzustellen.
  • Die Berechnung wird durch ein Startsignal auf der mit s bezeichneten Leitung initiiert, wie in 12 gezeigt. Das Startsignal kann auch von einem Prozessor (nicht gezeigt) oder von einer oder mehrerer Hardware-Vorrichtungen (nicht gezeigt) bereitgestellt werden. Wenn die Werte der ersten Binärdaten und zweiten Binärdaten in Registern 1201 und 1203 stabil sind, verriegelt ein Signal s1 jene Werte in den ersten bzw. zweiten Registern 1201 und 1203. Wenn Werte der die Menge pk – 1 im Register 1219 repräsentierenden Binärdaten stabil sind, Verriegelt ein Signal s5 jene Werte im Register 1219. Ein Signal s2 wird dann an MUX1 1207 eingegeben, der dann die Inhalte a des ersten Registers 1201 an den DLOG-Speicher 1209 weiterleitet, um auf den DLOG-Speicher 1209 zuzugreifen. Wenn die Ausgabewerte aus dem DLOG-Speicher stabil sind, werden die Ausgabewerte durch ein Signal S4 in das Register 1213 verriegelt. Das Register 1213 hält nun die Werte für DLOG(a). Ein anderes Signal s2 wird dann an MUX2 1223 eingegeben, der dann die Inhalte b des zweiten Registers 1203 an den DLOG-Speicher 1209 weitergibt, um auf den DLOG-Speicher 1209 zuzugreifen. Wenn die Ausgabewerte aus dem DLOG-Speicher stabil sind, werden die Ausgabewerte im Register 1215 durch ein Signal s3 verriegelt. Das Register 1213 hält nun den Wert von DLOG(b). Der Addierer 1217 berechnet dann die Ganzzahlsumme der Inhalte der Register 1213 und 1215 und sendet die Ergebnisse an die Modulo-Arithmetikschaltung 1221 (MOD), um den Rest des darin eingegebenen Wertes bei Teilung durch die Menge pk – 1, die aus dem Register 1219 verfügbar ist, zu berechnen. Die Ausgabe aus MUX2 wird dann an dem ANTILOG-Speicher 1211 eingegeben, um auf den ANTILOG-Speicher 1211 zuzugreifen. Wenn die Ausgabewerte aus dem ANTILOG-Speicher 1211 stabil sind, werden die Ausgabewerte im Register 1225 durch ein Signal s6 verriegelt. Das Register 1225 hält nun die Werte ANTILOG{DLOG(a) + DLOG(b)) mod (pk – 1)} in der Einzel-Schutz-Bit-Repräsentation, die zur Ausgabe als Registerinhalte c verfügbar ist. Falls gewünscht, könnte jedoch eine Schutz-Bit-Entfernungsschaltung, wie etwa in den 7 und 8 illustriert, funktional zwischen dem ANTILOG-Speicher 1211 und dem Register 1225 platziert werden, um Schutz-Bits aus dem Ergebnis der Berechnungen zu entfernen. Dies schließt die Beschreibung der in 12 illustrierten beispielhaften Multiplikationsvorrichtung 1200 ab.
  • In der Vorrichtung 1200, wie beschrieben, können das erste Register 1201 und ein Prozessor (nicht gezeigt) als Mittel zum Speichern erster Binärdaten angesehen werden. Alternativ können das erste Register 1201 und die Schutz-Bit-Einfügungsschaltung (nicht gezeigt) als Mittel zum Speichern erster Binärdaten angesehen werden. Das zweite Register 1203 und ein Prozessor (nicht gezeigt) können als Mittel zum Speichern zweiter Binärdaten angesehen werden. Alternativ können das zweite Register 1203 und eine Schutz-Bit-Einfügungsschaltung (nicht gezeigt) als Mittel zum Speichern zweiter Binärdaten angesehen werden. Weiterhin kann das Register 1225 als Mittel zum Speichern dritter Binärdaten angesehen werden. Darüber hinaus können die Takt/Logik-Vorrichtung 1205 und jegliche oder alle der verbleibenden in 12 illustrierten Vorrichtungen als Mittel zum Ausführen zumindest einer Operation an den ersten Binärdaten und den zweiten Binärdaten angesehen werden.
  • Addition unter Verwendung von Multi-Schutz-Bit-Repräsentation, p = 2m – 1
  • Beispielhafte Aspekte der Erfindung, die sich auf die Addition von Feldelementen beziehen, wobei p = 2m – 1, werden nun für die Multi-Schutz-Bit-Repräsentation beschrieben. Hier wird angenommen, dass die Erfindung unter Verwendung einer Hardware-Architektur implementiert wird, die an zumindest 2km Bitmengen arbeitet (d. h., Register sind zumindest von einer Größe von 2km Bits). Die Erfindung gemäß der Mehr-Schutz-Bit-Repräsentation kann beispielsweise unter Verwendung des in 1 illustrierten Systems 100 implementiert werden, das bereits beschrieben worden ist. Zusätzlich können ebenfalls dedizierte Hardware-Vorrichtungen, wie etwa in den 6, 7, 8 und 12 illustriert, die bereits beschrieben worden sind, verwendet werden, um die Erfindung gemäß der Multi-Schutz-Bit-Repräsentation zu implementieren. Beschreibungen dieser Vorrichtungen werden hier nicht wiedergegeben. Jedoch werden geeignete Modifikationen an den in den 6, 7, 8 und 12 illustrierten Vorrichtungen für die Multi-Schutz-Bit-Repräsentation, soweit nötig, unten beschrieben.
  • Die Repräsentation von Feldelementen von GF(pk) in der Multi-Schutz-Bit-Repräsentation wurde zuvor in der Diskussion, die sich auf das Beispiel von 2C bezieht, beschrieben. Wie in dieser Diskussion erwähnt, werden Elemente eines finiten Elements als binäre Ketten gespeichert, aber, statt nur eine Schutz-Bit-Position zwischen angrenzenden Gruppen von Datenbits, die Koeffizienten eines Feldelementes repräsentieren, wird eine Mehrzahl von Schutz-Bit-Positionen (z. B. m Schutz-Bit-Positionen) zwischen angrenzenden Gruppen von Bit-Positionen bereitgestellt, die alloziert sind, um die Feldkoeffizienten eines Feldelementes repräsentierende Binärdaten zu speichern. Beispielsweise werden, wie in 2C für GF(38) illustriert, acht Gruppen von Bitpositionen 221-r (unschattierte Bitpositionen) alloziert, um Feldkoeffizienten α7,i, ..., α1,i, α0,i repräsentierende Binärdaten zu speichern und aneinandergrenzende Gruppen von Bitpositionen 221r werden durch Gruppen von zwei Schutz-Bit-Positionen 213-r (hell schattierte Bitpositionen) getrennt. Die Schutz-Bit-Positionen werden so initialisiert, dass sie alle einen Binärwert von Null enthalten.
  • Eine Implementierung einer beispielhaften Form von GF_p_k_ADD für das Feld von GF(pk), wobei p = 2m – 1, wird nun für die Multi-Schutz-Bit-Repräsentation beschrieben. Um die Addition von zwei Feldelementen αi und βi unter Verwendung von ersten und zweiten Binärdaten, die in ersten und zweiten Registern gespeichert sind, gemäß der Multi-Schutz-Bit-Repräsentation durchzuführen, sind die mit GF_p_k_ADD assoziierten Operationen im Prinzip dieselben wie die für die Einzel-Schutz-Bit-Repräsentation. Nur die Zahl der Schutz-Bit-Positionen zwischen Feldkoeffizienten repräsentierenden angrenzende Gruppen von Datenbits und die Formen der ersten und zweiten vorgegebenen Binärmengen, M1 und M2, werden geändert. Wenn multiple Schutz-Bit-Positionen (z. B. "m" Schutz-Bit-Positionen) zwischen angrenzenden Gruppen von Datenbits, die mit Feldkoeffizienten assoziiert sind, konfiguriert werden, setzt sich der Ansatz wie zuvor in Bezug auf 4 beschrieben fort. Das heißt, M1 wird so zugewiesen, dass sie Werte von Null an Bitpositionen entsprechend Bitpositionen von ersten Schutz-Bits im ersten Register und die Menge 2m – 1 repräsentierende Binärwerte an Bitpositionen entsprechend Bitpositionen von Gruppen von ersten Datenbits im ersten Register aufweist. M2 wird durch M2 = NICHT(M1) gegeben. Dann können in ähnlicher Weise zu der oben für die Einzel-Schutz-Bit-Repräsentation beschriebenen Weise die Summe der ersten und zweiten Feldelemente von GF(pk) repräsentierende dritte Binärdaten durch Ausführen der Operation in Gleichung 19 erzeugt werden. c = ((a + b) & M1) + (((a + b) & M2) >> m) (19)wobei a und b Inhalte vom ersten bzw. zweiten Register repräsentieren, in dem erste und zweite Binärdaten gemäß der Multi-Schutz-Bit-Repräsentation gespeichert sind und wo c die resultierenden Inhalte eines dritte Binärdaten haltenden dritten Registers repräsentiert, das auch gemäß der Multi-Schutz-Bit-Repräsentation gespeichert wird. Die Erläuterung dafür, wie die oben erwähnten Operationen zu einem korrekten Bereitstellen von dritten Binärdaten führen, die ein drittes Feldelement von GF(pk) gleich der Summe der ersten und zweiten Feldelemente repräsentieren, ist dieselbe wie oben für die Einzel-Schutz-Bit-Repräsentation beschrieben und wird hier nicht wiederholt.
  • Wie oben erwähnt, können in 6, 7 und 8 illustrierte Hardware-Vorrichtungen verwendet werden, um die Erfindung gemäß der Mehr-Schutz-Bit-Repräsentation zu implementieren. Es sind keine Modifikationen an der in 6 illustrierten Vorrichtung 600 in dieser Hinsicht nötig. Es ist lediglich notwendig, wahrzunehmen, dass die ersten und zweiten Binärdaten im ersten und zweiten Register 601 und 603 gemäß der Multi-Schutz-Bit-Repräsentation gespeichert werden und dass die ersten und zweiten vorgegebenen binären Mengen M1 und M2 wie oben beschrieben konfiguriert sind.
  • Für die Multi-Schutz-Bit-Repräsentation ist eine Modifikation an der in 7 illustrierten Additionsvorrichtung in dem Sinne notwendig, dass die Schutz-Bit-Einfügungsschaltungen 701' und 703' und die Schutz-Bit-Entfernungsschaltung 709' konfiguriert sein müssen, um mehrere Schutz-Bits anstelle eines einzelnen Schutz-Bits, zwischen angrenzenden Gruppen von Datenbits, die Koeffizienten eines Feldelements repräsentieren, einzufügen. In dieser Hinsicht kann die in 8A illustrierte beispielhafte Bit-Einfügungsschaltung 800 so korrigiert werden, dass die elektrischen Verbindungen 811 verschoben werden, wobei mehr als eine Schutz-Bit-Position 809 ohne eine elektrische Verbindung 811 zwischen angrenzenden Gruppen von Bitpositionen 807 in dem Register 805 eingefügt wird. In ähnlicher Weise kann die in 8B illustrierte beispielhafte Schutz-Bit-Entfernungsschaltung 820 so konfiguriert werden, dass die elektrischen Verbindungen 831 verschoben werden, um mehr als eine Schutz-Bit-Position zwischen angrenzenden Gruppen von Bitpositionen 807 im Register 825 zu entfernen. Mit solchen Modifikationen für die Multi-Schutz-Bit-Repräsentation ist der Betrieb der in 7 illustrierten Vorrichtung 700 derselbe wie zuvor beschrieben.
  • Multiplikation unter Verwendung von Multi-Schutz-Bit-Repräsentation
  • Implementierungen von beispielhaften Formen von GF_p_k_MUL für das Feld GF(pk) werden nunmehr für die Multi-Schutz-Bit-Repräsentation beschrieben. Diese Diskussion ist auf ein durch die funktionalen Formen p = 2m ± 1 und p = 2m ± d gegebenes p anwendbar. Die einzigen Unterschiede, die für unterschiedliche Funktionsformen von p auftreten, beziehen sich auf die Anzahl von Bits, die zum Speichern von, einen gegebenen Koeffizienten eines Feldelementes repräsentierenden Binärdaten verwendet werden und darauf, wie viele Datenbits in ANTILOG-Tabellen für jeden Koeffizienten eines Feldelementes alloziert werden. Diese Unterschiede werden unten detaillierter beschrieben. Die unmittelbare Diskussion fährt jetzt mit dem Fall fort, wo p = 2m – 1, wofür m Bits verwendet werden, um jeden Koeffizienten eines Feldelements zu speichern, aber die Diskussion ist auf andere funktionale Formen für p, die oben angemerkt sind, anwendbar.
  • In einer ersten beispielhaften Implementation von GF_p_k_MUL für die Multi-Schutz-Bit-Repräsentation wird eine Kompressionsfunktion verwendet, um Speicherplatz, der für DLOG- und ANTILOG-Tabellen alloziert ist, effizienter zu verwenden. Dieser Ansatz verwendet direkt adressierte DLOG- und ANTILOG-Tabellen in einer Weise, die etwas der oben für die Einzel-Schutz-Bit-Repräsentation beschriebenen ähnelt, aber die Formen der direkt adressierten DLOG- und ANTILOG-Tabellen sind anders. Insbesondere, um für die DLOG- und ANTILOG-Tabellen allozierten Speicherplatz zu sparen, werden die DLOG und ANTILOG ohne Schutz-Bits konfiguriert (wodurch sie eine kombinierte Größe von km2km Bytes bekommen). Für eine direkt adressierte DLOG-Tabelle, wo Feldelementen entsprechende Binärdaten als Speicheradressen verwendet werden, bedeutet das Eliminieren von Schutz-Bits aus der DLOG-Tabelle, dass die Gesamtzahl von nacheinander folgenden Speicheradressen reduziert wird. Somit wird auch die Anzahl von reservierten Speicherstellen reduziert. Für die ANTILOG-Tabelle, die auch direkt adressiert wird und die in Ganzzahlen x = DLOG(a(t)) repräsentierende Binärdaten als Speicheradressen verwendet, reduziert das Eliminieren von Schutz-Bits die Anzahl von Bits, die zum Speichern von Binärdaten verwendet werden, die Feldelemente a(t) repräsentieren, wodurch die Speicheranforderungen reduziert werden. Um solche Tabellen zu benutzen, werden Feldelemente von GF(pk) repräsentierende Binärdaten, die in der Multi-Schutz-Repräsentation gespeichert werden, vor dem Ausführen einer DLOG-Tabellennachschlagung komprimiert. Zusätzlich werden dann sich ergebende Binärdaten nach Ausführen einer ANTILOG-Tabellennachschlagung dekomprimiert. Dies wird nun detaillierter beschrieben.
  • Hier wird angenommen, dass Feldelemente gemäß der Multi-Schutz-Bit-Repräsentation mit m Schutz-Bits zwischen angrenzenden Gruppen von Datenbits, die Koeffizienten eines Feldelementes repräsentieren, gespeichert werden. Jedoch ist der vorliegende Ansatz nicht auf m Schutz-Bits zwischen angrenzenden Gruppen von Datenbits beschränkt und Modifikationen für mehrere Schutz-Bits, außer den m Schutz-Bits zwischen angrenzenden Gruppen von Datenbits, werden aus der unten stehenden Beschreibung ersichtlich. Es sei t = INT(k/2), wobei INT(k/2) der Ganzzahlwert von k/2, gerundet auf die nächste Ganzzahl, ist. Eine Kompression kann an Registerinhalten a ausgeführt werden, die in der Multi-Schutz-Bit-Repräsentation gespeichert ist, unter Verwendung einer Kompressionsfunktion (COMP), gegeben durch COMP(a) = {(aXOR(a >> (2t – 1)m)) & M3} (20)wobei M3 eine vorgegebene Binärmenge ist, die den Wert 2km – 1 repräsentiert, so dass COMP(a) km Bits aufweist. (Das XOR kann in Gleichung 20 oben durch eine bitweise ODER-Operation ersetzt werden.) Die COMP Funktion bewegt Gruppen von Datenbits, die Feldkoeffizienten repräsentieren (das heißt, relevante, informationstragende Daten) von Bitpositionsblöcken 2jm, ..., (2j + 1)m – 1, wobei j ≥ t, zu den reservierten Schutz-Bit-Positionsblöcke (2(j – t) + 1)m, ..., (2(j – t) + 2)m – 1. Dies ist beispielsweise in 13 gezeigt, welche die oben erwähnt Abbildung von Bitpositionen aus einem Register 1301 auf Bitpositionen eines Registers 1302 illustriert, wobei unkomprimierte Daten im Register 1301 im Register 1302 komprimiert werden. Gestrichelte durchgehende Linien 1303 illustrierten die Abbildung von Bitpositionsblöcken, die relativ zu ihren Ursprungspositionen verschoben sind. Gestrichelte vertikale Linien 1304 illustrieren die Abbildung von Bitpositionsblöcken, die nicht relativ zu ihren ursprünglichen Positionen verschoben sind. Wie in 13 im Fall von GF(38) illustriert, wobei t = 4 und m = 2 (weil p = 2m – 1), werden als ein Beispiel für j = t = 4 Daten in Bitpositionen 16 (d. h. 2jm) und 17 (d. h. (2j + 1)m – 1) auf Bitpositionen 2 (d. h. (2(j – t) + 1)m) und 3 (d. h. (2(j – t) + 2)m – 1) abgebildet. Andere Datenblöcke werden in ähnlicher Weise abgebildet. Dementsprechend gehen keine Koeffizienten eines Feldelementes repräsentierende Gruppen von Datenbits in den oben beschriebenen Operationen verloren. Die direkt adressierte DLOG-Tabelle wird so konfiguriert, dass die Speicheradressen COMP-Werten der assoziierten Feldelemente für ein schnelles Nachschlagen entsprechen. Die direkt adressierte ANTILOG-Tabelle speichert COMP-Werte von Feldelemente repräsentierenden Binärdaten. Darüber hinaus enthalten alle Einträge in den DLOG- und ANTILOG-Tabellen relevante (d. h. informationstragende) Daten. Daher gibt es keinen leeren oder unbenutzten Platz in den DLOG- und ANTILOG-Tabellen. Eine Dekompression komprimierter Binärdaten kann unter Verwendung einer Dekompressionsfunktion (DECOMP) in analoger Weise ausgeführt werden. Es sei M4 eine vorgegebene binäre Menge mit Einsen in Bitpositionen 2jm, 2jm + 1, 2jm + 2, ..., (2j + 1)m – 1, wobei j = 0, 1, ..., k – 1, sind, und Nullen ansonsten. Dann gilt DECOMP(z) = {(zXOR(z >> (2t – 1)m)) & M4} (21) wobei wiederum XOR durch eine bitweise ODER-Operation ersetzt werden kann und << (2t – 1)m eine Linksverschiebung um (2t – 1)m Bits repräsentiert. Die Maske M4 wird sicherstellen, dass Schutz-Bit-Positionen nur Nullen enthalten. Nachdem ein Tabellennachschlag unter Verwendung der ANTILOG-Tabelle ausgeführt worden ist, wird der Wert durch die obige DECOMP Funktion dekomprimiert. Daher, falls a und b erste und zweite Binärdaten (Registerinhalte von ersten und zweiten Registern) sind, die gemäß der Multi-Schutz-Bit-Repräsentation gespeichert sind, wobei a und b erste und zweite Feldelemente αi und βi von GF(pk) repräsentieren, kann eine volle Multiplikation von αi und βj in GF(pk) durch Ausführen der in Gleichung 22 eingegebenen Operationen ausgeführt werden c = DECOMP(ANTILOG{(DLOG{COMP(a)} + DLOG{COMP(b)} mod (pk – 1)}) (22)wobei c dritte Binärdaten darstellt, die in einem dritten Register gespeichert werden können und die ein drittes Feldelement gleich dem Produkt der ersten und zweiten Feldelemente repräsentieren. Somit können neun schnelle Operationen und eine modulare Operation ausgeführt werden, um effektiv k2 Multiplikationen parallel durchzuführen. Durch Implementieren von GF_p_k_MUL in dieser beispielhaften Weise können Konfigurationen in Erweiterungsfeldern des Typs GF(plk) leicht über die Algorithmen PRODUCT(α, β) und REDUCE(δ, f), wie früher beschrieben, ausgeführt werden.
  • Bei der zweiten exemplarischen Implementierung von GF_p_k_MUL für die Multi-Schutz-Bit-Repräsentation ist es möglich, Feldelemente von GF(pk) ohne Verwendung der oben erwähnten Kompressions- und Dekompressionsfunktionen zu multiplizieren. In diesem beispielhaften Ansatz sind die mit GF_p_k_MUL assoziierten Operationen im Prinzip dieselben wie jene für die oben unter Bezugnahme auf 912 beschriebenen Einzel-Schutz-Bit-Repräsentationen. Nur die Anzahl von Schutz-Bit-Positionen zwischen angrenzenden Gruppen von Datenbits, die Feldkoeffizienten in einem gegebenen Register repräsentieren, und die Form der DLOG- bzw. ANTILOG-Tabellen 1000 und 1100 sind geändert. In dieser Hinsicht werden Feldelemente gemäß der Multi-Schutz-Bit-Repräsentation gespeichert, wie oben beschrieben und beispielsweise in 2C illustriert. Darüber hinaus ähneln DLOG- und ANTILOG-Tabellen in der Form den beispielhaften, in 10A bzw. 11A gezeigten Tabellen, sind aber so modifiziert, dass mehr als ein Schutz-Bit zwischen angrenzenden Gruppen von Feldkoeffizienten repräsentierenden Datenbits vorgesehen sind. Beispielsweise kann die in 10A illustrierte beispielhafte DLOG-Tabelle 1000 für die Multi-Schutz-Bit-Repräsentation durch Bereitstellen mehr als eines Schutz-Bits 1009 (z. B. m Schutz-Bits) zwischen angrenzenden Gruppen von Datenbits 1007 modifiziert werden. In ähnlicher Weise kann die in 11A illustrierte beispielhafte ANTILOG-Tabelle 1100 für die Multi-Schutz-Bit-Repräsentation durch Bereitstellen mehr als eines Schutz-Bits 1109 (z. B. m Schutz-Bits) zwischen aneinander angrenzenden Gruppen von Datenbits 1107 modifiziert werden. Bei solchen Modifikationen kann Multiplikation in der Multi-Schutz-Bit-Repräsentation in derselben Weise, wie oben unter Bezugnahme auf die 912 beschrieben, ausgeführt werden. Selbstverständlich hat dieser unmittelbare Ansatz nicht den Vorteil des Einsparens von Speicherplatz, wie oben in Bezug auf die Form von GF_p_k_MUL für die Multli-Schutz-Bit-Repräsentation beschrieben, die Kompressions- und Dekompressionsfunktionen verwendet.
  • Andere Berechnungen unter Verwendung einer Einzel-/Mehr-Schutz-Bit Repräsentation, p = 2m – 1
  • Einige andere Operationen, die unter Verwendung der Einzel- und/oder Multi-Schutz-Bit-Repräsentation leicht vorgenommen werden können, werden nunmehr beschrieben. Zuerst kann eine skalare Multiplikation einfach ausgeführt werden unter Verwendung der Multi-Schutz-Bit-Repräsentation. Skalare Multiplikationen, d. h. das Multiplizieren einer als Element αi = (αk-1,i, ..., a1,i, α0,i) von GF(pk) für einige γ in dem Grundfeld GF(p) können bei der Multi-Schutz-Bit-Repräsentation ohne die Verwendung von irgendwelchen Tabellen ausgeführt werden. Es ist wünschenswert, die folgende Menge zu berechnen γ·α = (γαk-1,i mod p, ..., γα1,i mod p, yα0,i mod p) (23)
  • Wie im oben referenzierten Seminumerical Algorithms angemerkt, kann für p = 2m – 1 Multiplikation Modulo p der zwei Binärmengen u und v, von denen angenommen wird, dass sie beide im Bereich 0, 1, ..., p sind, gemäß den Relationen durchgeführt werden: uv mod p = {(uv mod 2m) + uv div 2m)} mod p (24) = {(uv & (2m – 1) + (uv >> m)} mod p (25).
  • Weil u < 2m und v < 2m, ist klar, dass uv < 22m. Seien u Binärdaten, die αi repräsentieren, die in einem ersten Register gemäß der Multi-Schutz-Bit-Repräsentation gespeichert sind, und es seien vγ (ein Element von GF(p)) repräsentierende Binärdaten, die in einem zweiten Register gemäß der Multi-Schutz-Bit-Repräsentation gespeichert sind, wobei v Binärwerte aufweist, welche die Menge γ in den rechtesten Bitpositionen repräsentiert und ansonsten Nullen. Anders ausgedrückt, falls v als eine Vektormenge repräsentierende Binärdaten angesehen würde, würde die Vektormenge (0, 0, ..., 0, γ) sein. Dann können k modulare Multiplikationen parallel durch Ausführen der folgenden Operationen durchgeführt werden c' = uv (26) c = GF_p_k_ADD(c' & M1, (c' >> m) & M1) (27)wobei M1 eine vorgegebene Binärmenge mit Einsen in Bitpositionen 2jm, ..., (2j + 1)m – 1 ist und Binärwerten, die die Menge 2m – 1 repräsentieren, anderswo (j = 0, 1, ..., t, wo t wie oben definiert ist), und wobei GF_p_k_ADD der beispielhafte Additionsalgorithmus für die oben beschriebene Multi-Schutz-Bit-Repräsentation ist. In dieser Hinsicht kann die Multiplikation von u und v in Gleichung 26 eine normale Multiplikation von Registerinhalten, wie konventionell von bekannten Prozessoren ausgeführt, sein (z. B. Ganzzahl-Multiplikation oder Fließkomma-Multiplikation). Alternativ kann die Multiplikation von u und v in Gleichung 26 unter Verwendung von Tabellennachschlagungen durchgeführt werden, wie oben unter Bezugnahme auf 9 beschrieben. Daher ist die Konvolution (Multiplikation) bei dieser Repräsentation in 4 + 5 = 9 einfachen Operationen durchführbar, und nicht in 2k Multiplikations- und modularen Reduktionsoperationen, die konventionell erforderlich wären.
  • Ein spezieller Fall von skalarer Multiplikation ist die Verdoppelung. Die Feldmenge αi + αi (oder 2αi), wobei αi ein Element von GF(pk) gegeben ist, kann durch Ausführen der folgenden Operationen bestimmt werden c' = a << 1 (28) c = (c' & M1) + ((c' & M2) >> m) (29)wobei a αi repräsentierende Binärdaten sind, die gemäß der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert sind, und wobei M1 und M2 vorgegebene Binärmengen (Maskenmengen) sind, die wie oben beschrieben definiert sind, entweder für die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation, wie geeignet. Dementsprechend ist ersichtlich, dass eine Verdoppelung unter Verwendung von fünf effizienten Operationen erzielt werden kann.
  • Eine andere Berechnung, die ausgeführt werden kann, ist Gleichheitstestung. Beispielsweise kann ein Test, ob binäre Daten a, die ein Feldelement von GF(pk) repräsentieren, das Nullelement repräsentieren, durch Überprüfen vorgenommen werden, ob a = 2a, wobei die Verdopplung wie direkt oben beschrieben durchgeführt wird. Da die Charakteristik p ungerade ist, kann die Menge 2a niemals Null sein, wenn nicht a = 0. Im Prinzip wäre es wünschenswert, direkt zu testen, ob a = 0, unter Verwendung einer Einzelwortoperation. Weil jedoch das Element 0 im Grundfeld GF(p) zwei Repräsentationen (0 und p) hat, ist es möglich, dass die Binärdaten a Null repräsentieren, selbst falls alle Bits der Binärdaten a nicht identisch gleich Null sind. Somit stellt die Verdoppelungsoperation einen bequemen Ansatz zum Testen dar, ob eine Menge gleich Null ist. Dieser Ansatz kann sowohl auf Einzel-Schutz-Bit-Repräsentation als auch auf Multi-Schutz-Bit-Repräsentation angewendet werden.
  • Eine andere Berechnung, die ausgeführt werden kann, ist die Bestimmung des additiven Inversen eines Feldelements von GF(pk), d. h., gegeben a, wird gewünscht, "–a" so zu bestimmen, dass a + (–a) = 0. Wenn erste Binärdaten a gegeben sind, die gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert sind, die ein Feldelement von GF(pk) repräsentieren, ist es möglich, zweite Binärdaten c, welche das additive Inverse Feldelement repräsentieren, wie folgt zu bestimmen. Es seien z die Menge (p, p, ..., p) GF(pk) repräsentierenden Binärdaten. Das heißt, z umfasst k Gruppen von Datenbits mit an geeigneten Stellen zwischengefügten Schutz-Bits, wobei jede Gruppe von Datenbits das Binäräquivalent von p hält (z. B. kann z vorberechnet sein und als eine Konstante behandelt werden). Dann kann c = –a durch Ausführen der Einzelwortoperation c = z – a (30)bestimmt werden, wobei "–" der normale Subtraktionsoperator an Worten ist. Daraus folgt, dass ein allgemeiner Gleichheitstest, d. h. Bestimmung, ob a = b ist, durch Überprüfen vorgenommen werden kann, ob a + (–b) = 0, d. h. zuerst Verwenden der obigen Technik für ein additives Inverses, dann das vorgenannte Verfahren zum Testen, ob ein Element Null ist.
  • Eine andere Berechnung, die ausgeführt werden kann, ist das multiplikative Inverse. In einer Multiplikationsgruppe der Größe s gilt, dass xs = 1 für jedes x. Anders ausgedrückt, gilt für jedes x im Feld x–1 = xs-1. Für das finite Feld von GF(pk) hat die multiplikative Gruppe die Größe s = pk – 1. Daher kann das multiplikative Inverse eines Feldelementes durch Tabellennachschlagungen gemäß der Relation a–1 = ANTILOG{((pk – 2)·(DLOG{a}) mod (pk – 1)) (31) durchgeführt werden, wobei erste Binärdaten a ein Feldelement von GF(pk) repräsentieren und gemäß der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert sind. Zwei Binärdaten a–1 repräsentieren das multiplikative inverse Feldelement. Die obigen Operationen in Gleichung 35 können direkt unter Verwendung der Einzel-Schutz-Bit-Repräsentation durchgeführt werden, verwendend Tabellennachschlagungen in einer Weise ähnlich zu der oben in Bezug auf die Diskussion von GF_p_k_MUL für die Einzel-Schutz-Bit-Repräsentation beschriebenen. Für die Multi-Schutz-Bit-Repräsentation können die Operationen in Gleichung 35 ebenfalls direkt ausgeführt werden, wenn die DLOG-Nachschlagtabelle mit mehreren Schutz-Bits in den Speicheradressen konfiguriert ist und wenn die in der ANTILOG-Tabelle gespeicherten Binärdaten mit mehreren Schutz-Bits konfiguriert sind, die zwischen Gruppen von Datenbits positioniert sind, welche Feldkoeffizienten repräsentieren. Alternativ können die Operationen in Gleichung 35 für die Multi-Schutz-Bit-Repräsentation unter Verwendung "komprimierter" DLOG- und ANTILOG-Nachschlagtabellen in Verbindung mit Kompressions- und Dekompressions-Operationen durchgeführt werden, wie zuvor beschrieben. Das heißt, die ersten Binärdaten a können unter Verwendung der oben beschriebenen COMP-Funktion vor Ausführen eines DLOG Tabellennachschlagens komprimiert werden und eine Dekompressionsoperation kann zur Verwendung der DECOMP Funktion an sich ergebenden Binärdaten ausgeführt werden, nachdem die ANTILOG-Tabellennachschlagung ausgeführt worden ist.
  • Eine andere Berechnung, die ausgeführt werden kann, ist die Exponentierung. Unter Generalisierung der obigen Diskussion des multiplikativen Inversen kann die Exponentierung eines Feldelements zur n-ten Potenz durch Tabellennachschlagungen gemäß der Relation an = ANTILOG{(n – (DLOG{a})) mod (pk – 1)} (32) durchgeführt werden, wobei a erste binäre Daten sind, die einen Feldkoeffizienten gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation repräsentieren. In einer Weise wie der oben beschriebenen kann Gleichung 36 direkt implementiert werden oder kann alternativ unter Verwendung von Kompressions- und Dekompressionsfunktionen, falls gewünscht, implementiert werden, vor dem DLOG Tabellennachschlagen bzw. nach dem ANTILOG Tabellennachschlagen.
  • Bewertung von Effizienzverbesserungen
  • Eine Bewertung von Effizienzverbesserungen, die unter Verwendung der oben beschriebenen erfinderischen Ansätze im Vergleich zu konventionellen Ansätzen erzielt werden, werden nunmehr für eine typische kryptographische Anwendung diskutiert. Vom Standpunkt der kryptographischen Sicherheit wird derzeit empfohlen, eine Verschlüsselung unter Verwendung von elliptischen Kurven (siehe Handbook of Applied Cryptography, oben angegeben) über finite Felder einer Größe von ungefähr 2160 zu implementieren, um eine hinreichende Komplexität für die Verschlüsselungsschemata bereitzustellen, um als sicher angesehen zu werden. Somit wäre es im Fall von p = 3 gemäß der vorliegenden Erfindung notwendig, eine Entwicklung von GF(3) eines Grads größer als 101 zu verwenden (d. h. 3101 ≈ 2160). Im Fall von p = 7 gemäß der vorliegenden Erfindung würde der Entwicklungsgrad zumindest 57 sein. Das heißt, die notwendige Komplexität würde durch Ausführen Berechnungen in GF(3102) oder GF(760) beispielhaft erzielt werden.
  • Statt eine Berechnung in GF(3102) oder GF(760) direkt auszuführen, stellt die vorliegende Erfindung eher das Erzielen der notwendigen Komplexität durch Ausführen der Berechnungen in einem geeigneten Erweiterungsfeld GF(plk) bereit. Beispielsweise kann für p = 3 die notwendige Komplexität durch Ausführen von Berechnungen im Erweiterungsfeld GF(3lk) erhalten werden, bei dem l = 17 und k = 6 (weil 102 = 6·17). In ähnlicher Weise kann für p = 7 die notwendige Komplexität durch Ausführen von Berechnungen im Entwicklungsfeld GF(7lk) erhalten werden, wenn l = 12 und k = 5 (weil 60 = 5·12). Wie oben beschrieben, erfordern solche Berechnungen das Ausführen von arithmetischen Operationen in einem Basisfeld GF(pk), das in den unmittelbaren Beispielen GF(36) bzw. GF(75) sein kann. Zusätzlich sollte angemerkt werden, dass Berechnungen in GF(36) unter Verwendung der Einzel-Schutz-Bit-Repräsentation mit einer konventionellen 32-Bit Architektur implementiert werden können. Darüber hinaus können Berechnungen in GF(75) unter Verwendung entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation mit einer konventionellen 32-Bit Architektur implementiert werden. Wie zuvor beschrieben, können die Algorithmen SUM(α, β) und PRODUCT(α, β) verwendet werden, um Berechnungen im Entwicklungsfeld GF(plk) auf Berechnungen im Feld GF(pk) zu beziehen. Verschiedene Arten von Berechnungen in GF(pk) sind oben im Detail beschrieben worden, einschließlich verschiedener Implementationen von GF_p_k_ADD und GF_p_k_MUL.
  • Die Tabelle unten präsentiert eine Zusammenfassung der Berechnungseffizienz für die Einzel-Schutz-Bit-Repräsentation und Multi-Schutz-Bit-Repräsentation gemäß der vorliegenden Erfindung im Vergleich zum konventionellen Ansatz von Berechnungen, die spezifische finite Felder von GF(3lk) involvieren, wobei l = 17 und k = 6, und GF(7lk), wobei l = 12 und k = 5. Insbesondere zeigt die Tabelle unten die ungefähre kombinierte Größe (in Bytes) der DLOG- und ANTILOG-Nachschlagtabellen und die Anzahl von Operationen, die erforderlich sind, um Additionen und Multiplikationen in den entsprechenden Feldern durchzuführen. Die Anzahl von zur Durchführung von Multiplikation unter Verwendung der Multi-Schutz-Bit-Repräsentation erforderlichen Operationen beinhaltet die Verwendung der oben beschriebenen Kompressions- und Dekompressionsoperationen.
    Feld k l Einzel-Schutz-Bit-Repräsentation Multi-Schutz-Bit-Repräsentation Konventioneller Ansatz
    Tab. Größe Op. für Add. Op. für Mult. Tab. Größe Op. für Add. Op. für Mult. Tab. Größe Op. für Add. Op. für Mult.
    GF(3lk) 6 17 219 85 578 213 85 2890 - 102 10400
    GF(7lk) 5 12 221 60 288 216 60 1440 - 60 3600
  • Wie aus der obigen Tabelle ersichtlich, wird ein großer Gewinn an Effizienz gegenüber dem konventionellen Ansatz für die Multiplikation unter Verwendung der oben beschriebenen erfinderischen Ansätze erzielt. In Bezug auf die angezeigte Anzahl von Operationen, die zur Addition notwendig sind, muß angemerkt werden, dass die Art von Operationen, die in der Einzel-Schutz-Bit-Repräsentation und der Multi-Schutz-Bit-Repräsentation eingesetzt werden, gemäß der vorliegenden Erfindung hauptsächlich hocheffiziente, simple Bit-Operationen sind, während die Art von Operationen, die mit dem konventionellen Ansatz assoziiert sind, wesentlich langsamere modulare Additionsoperationen sind. Somit ist evident, dass ein signifikanter Effizienzgewinn auch für die Addition unter Verwendung der erfinderischen, oben beschriebenen Ansätze im Vergleich zum konventionellen Ansatz zum Ausführen von Addition in GF(pk) erzielt wird. Somit sind die unter Verwendung der vorliegenden Erfindung erzielten Gewinne sogar noch signifikanter als die Tabelle oben auf den ersten Blick suggeriert. Dieselbe Beobachtung gilt auch für die Multiplikation von ersten Elementen gemäß der vorliegenden Erfindung.
  • Erwägungen, die dafür relevant sind, zu bestimmen, ob eine Einzel-Schutz-Bit-Repräsentation oder eine Multi-Schutz-Bit-Repräsentation, werden nunmehr beschrieben. Falls der Speicherverbrauch kein Problem ist, ist die Einzel-Schutz-Bit-Repräsentation aufgrund ihrer besseren Berechnungsleistung bevorzugt. Abhängig von der geplanten Anwendung sollte, falls Additionsoperationen die dominanten Operationen sind, eine Einzel-Schutz-Repräsentation verwendet werden, weil sie es gestattet, k so groß wie möglich zu machen, und k Additionen können daher parallel zu einem gegebenen Zeitpunkt ausgeführt werden. Darüber hinaus, weil die Größe der DLOG- und ANTILOG-Nachschlagtabellen mit 2k skaliert, kann es praktisch sein, falls hauptsächlich Additionen statt Multiplikationen verwendet werden, die DLOG- und ANTILOG-Nachschlagtabellen komplett wegzulassen und einfach das konventionelle Verfahren zum Multiplizieren von Feldelementen zu verwenden.
  • Falls andererseits Multiplikationen die hauptsächlichen Operationen sind, wird die Multi-Schutz-Bit-Repräsentation bevorzugt, weil sie die Größe von DLOG- und ANTILOG-Nachschlagtabellen minimiert. Im Hinblick auf die obige Diskussion ist ersichtlich, dass die Einzel-Schutz-Bit-Repräsentation und Multi-Schutz-Bit-Repräsentation gewissermaßen entgegengesetzte Enden einer Skala repräsentieren, welche die Erwägung von Nachteilen zwischen der Kompaktheit der DLOG- und ANTILOG-Nachschlagtabellen, die Leichtigkeit von Tabellennachschlagungen und den Grad der Parallelisierung (d. h. der Anzahl von Feldelement-Koeffizienten, die in einem einzelnen Maschinenregister repräsentiert werden können) involviert. Falls w die (feste) Wortgröße der Hardware-Architektur ist (d. h. w ist die Registergröße) und m die Anzahl von Bits im Grundfeld GF(p) für p = 2m – 1 ist, können einige Attribute der Einzel-Schutz-Bit-Repräsentation wie folgt zusammengefasst werden. k = 2/(m + 1) Koeffizienten von GF(pk) (wobei die Koeffizienten Elemente von GF(p) sind) repräsentierende Binärdaten können in ein Wort passen, d. h. in ein einzelnes Hardwareregister. Dieses Packen von Binärdaten ist optimal, da sicher k < w/m erfüllt ist. Es ist keine Kompression vor einem DLOG-Tabellennachschlagen notwendig und es ist keine Dekompression notwendig nach einem ANTILOG-Tabellennachschlagen (was ganz klar optimal ist). Die Nachschlagtabellen für die Einzel-Schutz-Bit-Repräsentation sind etwa 2k Mal so groß wie die Nachschlagtabellen für die Multi-Schutz-Bit-Repräsentation. Das heißt, die Nachschlagtabellen für die Einzel-Schutz-Bit-Repräsentation sind größer als die absolute Minimalgröße, die zum Speichern aller Elemente des Feldes erforderlich ist.
  • Einige Attribute der Multi-Schutz-Bit-Repräsentation können wie folgt zusammengefasst werden. k = 2/(2m) Koeffizienten von GF(pk) repräsentierende Binärdaten (die Elemente von GF(p) sind) können in ein Wort passen, d. h. in ein einzelnes Hardware-Register. Eine kleiner Betrag an Berechnungen kann und sollte Kompressions- und Dekompressionsoperationen, die mit Tabellennachschlagungen assoziiert sind, gewidmet sein, falls erwünscht, um für DLOG- und ANTILOG-Nachschlagtabellen erforderlichen Speicherplatz zu sparen. Durch Einsetzen der Kompressions- und Dekompressionsoperationen sind die DLOG- und ANTILOG-Tabellen im Wesentlichen von optimaler Größe.
  • Erweiterungen von p der Form p = 2m + 1 und p = 2m ± d
  • In der obigen Diskussion wurden Berechnungen in finiten Feldern Ungerad-Primzahl-Charakteristik für p in der Form von p = 2m – 1 beschrieben. Erweiterungen der oben beschriebenen Ansätze werden unten für Berechnungen in finiten Feldern von Ungerad-Primzahl-Charakteristik beschrieben, wo p von der Form p = 2m + 1 und p = 2m ± d ist, wobei d klein ist. Im Prinzip können jegliche Werte von d, wo d < 2m ist, verwendet werden, aber, wie zu sehen sein wird, ist ein kleineres d zu bevorzugen. Insbesondere, wie unten diskutiert, sind spezielle Optimierungen verfügbar, wenn p = 2m – d, mit d ≤ (2m + 1)/3 und p = 2m + d, mit d ≤ p/6, was sich als im Wesentlichen so effizient wie im Falle d = 1 herausstellt. Nur kleine Steigerungen an Speicheranforderungen und Berechnungs-Overhead sind für diese Erweiterungen im Vergleich zu dem Fall, wenn p = 2m – 1 ist, notwendig. Während die oben beschriebene Behandlung für p = 2m – 1 p = 3, 7, 31, etc. gestatteten, gestatten die Erweiterungen auf p = 2m + 1 und p = 2m + d die Verwendung der Primzahlen p = 5, 11, 13, 17, etc. Im Prinzip sind alle Primzahlen gestattet, wenn auch, wie erwähnt, die Erfindung am nützlichsten ist, wenn d klein ist, wie oben erwähnt. Auch setzen Wortgröße und Speicher der Hardware einige praktische Beschränkungen dahingehend, ein wie großer Wert von p eingesetzt werden kann. Wie zuvor erwähnt, wird es allgemein bevorzugt, wenn es möglich ist, eine Ungerad-Charakteristik-Primzahl p im Begriff von mehr als einer funktioneller Form zu schreiben, allgemein bevorzugt, einen Ansatz für p = 2m – 1 gegenüber Ansätzen für die anderen zwei funktionalen Formen einzusetzen. Zusätzlich wird bevorzugt, einen Ansatz von p = 2m + 1 gegenüber einem Ansatz für p = 2m ± d, bei dem d > 1, zu verwenden.
  • Die folgende Beobachtung ist für das Verständnis der Erweiterung an p der Form p = 2m + 1 wie auch p = 2m ± d relevant. Wie oben unter Verwendung einer etwas anderen Notation (siehe z. B. Gleichung 15) suggeriert, kann ein Reduktion eines gewissen Werts e Modulo p, wenn p = 2m – 1, gemäß der folgenden Relation ausgeführt werden e mod p = (e mod 2m) + (3 div 2m) = (e & (2m – 1)) + (e >> m) (33).
  • Wie angemerkt, subtrahiert dies ein Ganzzahl-Vielfaches von p von e. Somit ist das Ergebnis automatisch korrekt und das einzige Problem ist "praktisch", d. h., dass das Ergebnis nicht immer zum Satz {0, 1, ..., p – 1} gehören mag, was die konventionelle Repräsentation von Ganzzahlen Modulo p ist. Dies wurde durch die nachfolgende Beobachtung gelöst. Die Repräsentation von Ganzzahlen Modulo p kann auf den größeren Satz Sp = {0, 1, ..., p} erweitert werden, so dass 0 zwei Repräsentationen, 0 und p, aufweist. Dann, falls f und g Elemente von Sp sind, berechnet die Gleichung 33 korrekt (f + g) mod (p) in der dualen Repräsentation, wobei e die Binärsumme von f und g ist. Diese Beobachtungen werden nunmehr verallgemeinert. Es sei p = 2m + d (wobei d negativ sein mag, aber |d| < 2m). Dann gelten für jede Ganzzahl die folgenden Relationen e mod (p) = (e mod 2m) – d(e div 2m) = (e – 2m(e div 2m)) – d(e div 2m) (34) = e – (2m + d)(e div 2m) = e – pr (35)für ein Ganzzahl r. Das heißt, das Ergebnis ist gleich e mod(p) bis zu einem Ganzzahl-Vielfachen von p. Daher ist, was in Gleichungen 34 und 35 durchgeführt wird, eine Subtraktion eines Mehrfachen von p. Um eine komplette Reduktion mod p zu erhalten, so dass die Menge c – pk tatsächlich im Satz {0, 1, p – 1) liegt, sollten die Relationen in Gleichung 34 und 35 k = e div p = e div (2m + d) verwenden. Jedoch verwendet die vorliegende Erfindung eine Annäherung, wobei k = e div 2m, so dass e – pk nicht garantierter Weise im Satz {0, 1, ..., p – 1} liegt. Für den Fall d = –1 (entsprechend p = 2m – 1), gestattet beispielsweise das Einsetzen des etwas größeren Satzes Sp, dass die modulare Reduktionsoperation in Kombination mit einer Addition in Bezug auf den Satz Sp bei der Bestimmung von e = f + g abgeschlossen ist.
  • Verallgemeinerung der Algorithmen G_p_k_ADD und GF_p_k_MUL für die Fälle p = 2m + 1 und p = 2m ± d für ungerades |d| > 1, werden unten in Verbindung mit der Bestimmung geeigneter Repräsentationssätze Sp beschrieben, entsprechend gestatteten Werten von Koeffizienten von Feldelementen von GF(pk). Wie zu sehen sein wird, hängen die Sp-Sätze von der funktionalen Form von p und von m und d ab, wobei p = 2m + d. In Analogie zum Obigen werden diese Sätze durch Sp+ für den Fall p = 2m + 1, Sp+d für p = 2m + d und Sp–d für p = 2m – d bezeichnet. Wie oben erwähnt, sind die Koeffizienten der Feldelemente von GF(pk) selbst Elemente von GF(p). Es sollte angemerkt werden, dass, solange eine modulare Reduktion einer Menge c ein Mehrfaches von p von c subtrahiert, es mathematisch kein Problem damit gibt, mehr allgemeine Sätze Sp zu gestatten, wenn sie unter Addition geschlossen sind, gefolgt von modularer Reduktion.
  • Addition und Multiplikation in GF(pk) wobei p = 2m + 1
  • Bei den folgenden Beschreibungen von GF_p_k_ADD und GF_p_k_MUL für den Fall, bei dem p = 2m + 1, wird angenommen, dass m ≥ 2, so dass p ≥ 5. Dies liegt daran, dass der Fall, wo p = 3 ist, vorzugsweise unter Verwendung der zuvor beschriebenen Ansätze für Additionen und Multiplikationen behandelt wird, bei dem p = 2m – 1 (d. h. p = 22 – 1). Es sei der Satz Sp+ gegeben durch Sp+ = {0, 1, ..., 2p – 2). (Somit gestattet für p = 2m + 1 die vorliegende Erfindung den Werten 0, 1, .., p – 2, zwei Repräsentationen aufzuweisen, wobei im Falle von p = 2m – 1 nur der Wert 0 mehr als eine Repräsentation hätte.) Jeder Koeffizient eines Feldelementes von GF(pk) ist dann ein Element von Sp+. Man beachte, dass 2p – 2 = 2m+1, so dass m + 2 Bits (nicht einschließlich von Schutz-Bits) verwendet werden, um einen Koeffizienten eines Feldelements von GF(pk) zu repräsentieren, was ein Bit mehr ist als erforderlich war, um Koeffizienten im Satz Sp = {0, ..., p} zu repräsentieren, die in den Ansätzen für p = 2m – 1 eingesetzt werden.
  • Für den Fall p = 2m + 1 können Feldelemente von GF(pk) repräsentierende Binärdaten in Hardware-Registern gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert werden, wie etwa oben beschrieben, außer dass für p = 2m + 1 m + 2 Bits (nicht einschließlich Schutz-Bits) für jede Gruppe von Datenbits alloziert werden, die einen Koeffizienten von Feldelementen repräsentieren. Beispielsweise können in der Einzel-Schutz-Bit-Repräsentation ein erstes Feldelement αi von GF(pk) repräsentierende erste Binärdaten, wobei die ersten Binärdaten k Gruppen von ersten Datenbits umfassen, wie folgt gespeichert werden. Hier wird angenommen, dass (m + 3)k die maximale Hardware-Wortgröße ist (d. h., Registergröße). Es sei αi ein erstes Feldelement von GF(pk), wobei αi = (αk-1,i, ..., α0,i) und wobei jedes αj,i zum Satz Sp+ gehört. Eine Gruppe erster, α0,1 repräsentierender Datenbits wird in einem ersten Register an den Bitpositionen 0, 1, ..., m + 1 gespeichert. Ein erstes Datenbit mit einem Wert von Null wird im ersten Register an Bitposition m + 2 gespeichert (eine Schutz-Bit-Position). Eine andere Gruppe von ersten Daten, die α1,i repräsentieren, wird im ersten Register an den Bitpositionen m + 3, ..., 2m + 4, usw. gespeichert. Dementsprechend gibt es ein erstes Schutz-Bit an jeder Bitposition v(m + 3) – 1, wo v = 1, 2, ... – das heißt, jeder aufeinanderfolgenden (m + 3)-ten Bitposition. Mit anderen Worten gibt es ein erstes Schutz-Bit positioniert angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits. Zweite Binärdaten, die k Gruppen von zweiten Datenbits umfassen, welche ein zweites Feldelement von GF(pk) repräsentieren, können in ähnlicher Weise in einem zweiten Register mit einem zweiten Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von zweiten Datenbits gespeichert werden. (Hier unterscheidet die Verwendung von "ersten" und "zweiten" lediglich zwischen Attributen entsprechend dem ersten Feldelement beziehungsweise dem zweiten Feldelement.) Durch Speichern von, erste und zweite Feldelemente von GF(pk) repräsentierenden Binärdaten in ersten und zweiten Hardware-Registern auf diese Weise, wird sich kein Übertragsbit von einer Gruppe von Datenbits, welche einen Koeffizienten repräsentieren, zu einer angrenzenden Gruppe von Datenbits, die einen anderen Feldkoeffizienten repräsentieren, ausbreiten. Der Ansatz zum Speichern von Feldelemente repräsentierenden Binärdaten gemäß der Multi-Schutz-Bit-Repräsentation ist vollständig analog, wobei die einzige Differenz darin besteht, dass mehr als eine Schutz-Bit-Position zwischen angrenzenden Gruppen von Datenbits, die Feldkoeffizienten repräsentieren, vorgesehen ist.
  • Eine beispielhafte Form von GF_p_k_ADD, wo p = 2m + 1, wird nunmehr unter Bezugnahme auf das Flussdiagramm von 14 beschrieben. Die in 14 gezeigten Operationen können durch ein System, wie etwa dem in 1 gezeigten System 100, ausgeführt werden. Weiterhin wird angenommen, dass die Schritte 301 und 303, die in 3 gezeigt sind, bereits vom Prozessor 105 ausgeführt worden sind, so dass die ein erstes Feldelement von GF(pk) repräsentierenden ersten Binärdaten in einem ersten Register (z. B. Register 107, gezeigt in 1) gespeichert sind und so, dass die ein zweites Feldelement repräsentierenden zweiten Binärdaten in einem zweiten Register (z. B. Register 109) in einer Weise wie der direkt oben beschriebenen gespeichert sind. Die ersten und zweiten Binärdaten können gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert sein, der Ansatz ist in beiden Fällen derselbe. Die in 14 illustrierten Schritte repräsentieren eine beispielhafte Implementation des in 3 gezeigten Schritts 305.
  • Wie in Schritt 1401 angezeigt, addiert die Verarbeitungseinheit 105 die Inhalte a des ersten Registers 107 und der Inhalte b des zweiten Registers 109 unter Verwendung von Addition (d. h., Addition mit einem Übertrag in das nächst signifikante Bit, falls notwendig). Das Ergebnis der Addition kann in einem anderen Register 111, wie etwa in 1 illustriert, gespeichert werden. Wie in Schritt 1403 angezeigt, führt die Verarbeitungseinheit 105 dann eine logische UND-Operation zwischen der Menge (a + b), die im Register 111 gespeichert ist, und einer in einem der Register (z. B. Register 113) gespeicherten ersten vorbestimmten Binärmenge M1 aus. Die Menge M1 hat Werte von Null an Bitpositionen entsprechend Bitpositionen von ersten Schutz-Bits, die im ersten Register 107 gespeichert sind und hat Binärwerte, welche die Menge 2m – 1 repräsentieren, an Bitpositionen entsprechend Bitpositionen jeder Gruppe von ersten, im ersten Register gespeicherten Datenbits. Wenn beispielsweise p = 5 (d. h., m = 2, wobei p = 2m + 1), umfasst die erste vorgegebene binäre Menge M1 sukzessive binäre Ketten (0, 0, 1, 1), die durch Bitwerte von Null (entsprechend den Schutz-Bit-Positionen) getrennt sind, weil 2m – 1 = 3, was durch (0, 0, 1, 1) binär gegeben ist. Die obige Definition für die Menge M1 ist auf die Multi-Schutz-Bit-Repräsentation wie auch auf die Einzel-Schutz-Bit-Repräsentation für den Fall, wo p = 2m + 1, anwendbar. Das Ergebnis der im Schritt 1403 angezeigten Operationen kann als erste Zwischendaten c1 bezeichnet werden und es wird in einem der Register gespeichert (z. B. Register 115).
  • Wie im Schritt 1405 angezeigt, führt die Verarbeitungseinheit 105 eine logische UND-Operation zwischen der im Register 111 gespeicherten Menge (a + b) und einer zweiten vorgegebenen binären Menge M2 aus, wo M2 durch M2 = NICHT(M1) gegeben ist. Die NICHT-Operation ist eine bitweise logische Negation. Das Ergebnis dieser Operation wird in einem der Register (z. B. Register 117) gespeichert. Wie in Schritt 1405 angezeigt, führt dann die Verarbeitungseinheit 105 eine Rechtsverschiebung um m Bits an der Menge ((a + b) & M2) aus. Das Ergebnis dieser Operation kann in demselben Register 117 oder in einem anderen Register gespeichert werden. In Schritt 1407 subtrahiert die Verarbeitungseinheit 105 die Menge {((a + b) & M2) >> m} von einer dritten vorgegebenen Binärmenge P1. Die Menge P1 hat Werte von Null an Bitpositionen entsprechend Bitpositionen der ersten, im ersten Register gespeicherten Schutz-Bits und weist Binärwerte repräsentierend die Menge 2m + 1 (= p) an Bitpositionen auf, die Bitpositionen jeder Gruppe von ersten Datenbits im ersten Register entsprechen. Beispielsweise wenn p = 5 (d. h. m = 2), umfasst die dritte vorgegebene Binärmenge P1 sukzessive Binärketten (0, 1, 0, 1) die durch Bitwerte von Null (entsprechend Schutz-Bit-Positionen) getrennt sind, weil 2m + 1 = 5, was durch (0, 1, 0, 1) binär gegeben ist. Das Ergebnis der im Schritt 1409 angezeigten Operation kann als zweite intermediäre Binärdaten c2 bezeichnet werden und wird in einem der Register (z. B. Register 119) gespeichert. Im Schritt 1409 führt der Prozessor eine Addition zwischen den ersten Zwischenbinärdaten c1 und den zweiten Zwischenbinärdaten c2 aus, um dritte Binärdaten, repräsentiert durch c, zu erzeugen, die in einem der Register (z. B. Register 121) gespeichert werden können. Gemäß diesem Ansatz repräsentieren die dritten Binärdaten c die Summe des ersten Feldelements und des zweiten Feldelements.
  • Die Algorithmen gemäß 3 und 14 sind im Hinblick auf eine spezifische Abfolge von Schritten beschrieben worden, um die Beschreibung zu erleichtern. Jedoch ist es nicht notwendig, die in den 3 und 14 angezeigten Schritte exakt in der illustrierten Reihenfolge auszuführen. Durchschnittsfachleute werden wahrnehmen, dass die Anordnung von Schritten variiert werden kann und dass einige der Schritte simultan ausgeführt werden können. Beispielsweise können die in 3 gezeigten Schritte 301 und 303 simultan ausgeführt werden und können die in 4 gezeigten Schritte 1403 und 1405 simultan ausgeführt werden.
  • Unabhängig von der Abfolge, in der die verschiedenen Operationen ausgeführt werden, ist es lediglich notwendig, die Menge c (dritte Binärdaten) gemäß der Gleichung c = ((a + b) & M1) + (P1 – {((a + b) & M2) >> m)}) (36)zu bestimmen, wobei a die das erste Feldelement repräsentierenden ersten Binärdaten, b die das zweite Feldelement repräsentierenden zweiten Binärdaten sind, + Addition repräsentiert und M1, M2 und P1 wie oben definiert sind. In dieser Hinsicht werden Durchschnittsfachleute wahrnehmen, dass jede Gruppe von Datenbits cj der sich ergebenden Menge c einen Wert repräsentiert, der ein Element des Satzes Sp+ ist, und jede solche cj durch cj = (aj + bj) mod (p) gegeben ist (bis zu einem einfachen Mehrfachen von p), wobei das tiefgestellte j für die Menge von a und b entsprechende Gruppen von Datenbits bezeichnen, die einen assoziierten Koeffizienten des entsprechenden Feldelements repräsentieren.
  • Somit ist es evident, dass die Addition von Feldelementen in GF(pk), wo p = 2m + 1, unter Verwendung von sechs einfachen Anweisungen ausgeführt werden kann (im Vergleich zu fünf einfachen Anweisungen für p = 2m – 1). Die Verwendung des zweiten Ausdrucks (P1 – {c' & M2) >> m)}) als eine additive Menge in Gleichung 36 ist im Prinzip das Gleiche wie das Subtrahieren der Menge ((a + b) div 2m) Modulo p, womit Gleichung 36 konsistent zur Gleichung 33 gemacht wird. Jedoch hat die Implementierung einer Substraktion der Menge q als eine Addition der Menge p – q Vorteile. Insbesondere, falls die Subtraktion in einer konventionellen Weise implementiert wird, d. h. durch Subtrahieren ((a + b) div 2m) statt durch Addieren (P1 – {kkab) & M2) >> m)}), gibt es keine Möglichkeit, dass einem ein negativer "Übertrag" begegnet, selbst wenn keine Additivüberträge vorkommen. Im Gegensatz dazu können durch Verwenden der Additivmenge (P1 – {kkab) & M2) >> m)}) solche negativen Überträge vermieden werden.
  • Um zu beweisen, dass der in Gleichung 36 gegebene Ansatz korrekte Additionsergebnisse erzeugt, beachte man, dass, falls aj und bj ∊ Sp+, jedes cj der Menge c in Gleichung 36 0 ≤ cj ≤ 2m – 1 + p = 2p – 2 erfüllen wird (weil 0 ≤ (aj + bj) div 2m ≤ 4 < p). Somit ist jedes cj der Menge c in Gleichung 36 ein Element von Sp, wie beansprucht. Wie oben erwähnt, subtrahiert die Reduktion in Gleichung 36 ((cj div 2m) – 1)p von cj, das ein Mehrfaches von p ist. Somit wird jedes cj tatsächlich im Satz Sp+ sein und als solches gleich dem Rest von (aj + bj) mod p, bis zu einem (einzelnen) Mehrfachen von p.
  • Wie oben angemerkt, ist die Behandlung der Addition (GF_p_k_ADD) von zwei Feldelementen von GF(pk) für p = 2m + 1 in der Multi-Schutz-Bit-Repräsentation gemäß der vorliegenden Erfindung im Wesentlichen dieselbe wie diejenige für die Einzel-Schutz-Bit-Repräsentation. Es ist lediglich notwendig, anzumerken, dass die, die ersten und zweiten Feldelemente repräsentierenden ersten bzw. zweiten Binärdaten mit mehreren Schutz-Bits gespeichert sind, die zwischen angrenzenden Gruppen von Datenbits, welche Koeffizienten der entsprechenden Feldelemente repräsentieren, platziert sind. Darüber hinaus erfordern die oben zur Bestimmung der Mengen M1, M2 und P1 angegebenen Vorschriften keine Modifikationen für die Multi-Schutz-Bit-Repräsentation. Selbstverständlich erzeugt das Anwenden solcher Vorschriften bei der Multi-Schutz-Bit-Repräsentation andere Werte bei den Mengen M1, M2 und P1, als sie für die Einzel-Schutz-Bit-Repräsentation erzeugt werden.
  • Beispiel 2
  • Ein den in 14 gezeigten Ansatz illustrierendes numerisches Beispiel für p = 2m + 1 wird nunmehr unter Bezugnahme auf 15 beschrieben. 15 illustriert schematisch eine Ansammlung von Registern 15011521 mit darin gespeicherten beispielhaften Registerinhalten gemäß einer Einzel-Schutz-Bit-Repräsentation. Jedes Register 15011521 umfasst in diesem Beispiel 32 Bit-Stellen, entsprechend einer 32-Bit Architektur. In diesem bestimmten Beispiel werden Berechnungen unter Verwendung von Feldelementen von GF(56) repräsentierenden Binärdaten ausgeführt, wobei p = 2m + 1 = 5 und m = 2. Dementsprechend werden m + 2 = 4 Bits für jeden Koeffizienten des Feldelementes alloziert (Schutz-Bits nicht eingeschlossen) und es werden aneinander grenzende 4-Bit Gruppen durch eine einzelne Schutz-Bit-Position (hell schattierte Bereiche) getrennt. Zusätzlich gibt es in diesem Beispiel zwei unbenutzte Bitpositionen (dunkel schattierte Bereiche) an den signifikantesten Bitpositionen jedes Registers. Die unten beschriebenen Berechnungen können beispielsweise unter Verwendung eines Verarbeitungssystems, wie etwa des in 1 gezeigten Verarbeitungssystems 100 ausgeführt werden.
  • In diesem Beispiel ist jeder Koeffizient eines gegebenen Feldelementes selbst ein Element des Feldes GF(5). Werte der Koeffizienten von GF(5) entsprechen Binärdaten gemäß den folgenden Assoziationen: 0~(0, 0, 0, 0); 1~(0, 0, 0, 1); 2~(0, 0, 1, 0); 3~(0, 0, 1, 1); 4~(0, 1, 0, 0). Zusätzlich gibt es eine Dural-Repräsentation der folgenden zusätzlichen Assoziationen, bei denen zwei unterschiedliche Zahlen in GF(p) denselben Wert repräsentieren: 5~(0, 1, 0, 1), das auch 0 entspricht; 6~(0, 1, 1, 0), das auch 1 entspricht; 7~(0, 1, 1, 1), das auch 2 entspricht; und 8~(1, 0, 0, 0), das auch 3 entspricht.
  • Um zu beginnen, werden erste Binärdaten, die ein erstes Feldelement repräsentieren, gegeben in Vektornotation als (0, 3, 1, 6, 3, 0) in einem ersten Register 1501 gespeichert. Zusätzlich werden zwei Binärdaten b, die ein zweites in Vektornotation angegebenes Feldelement repräsentieren (0, 7, 1, 4, 4, 0), in einem zweiten Register 1503 gespeichert. Jeder Schutz-Bit-Position in den Registern 1501 und 1503 wird anfangs ein Wert von Null zugewiesen. Die Inhalte der Register 1501 und 1503 werden über Addition addiert und das Ergebnis (a + b) wird im Register 1505 gespeichert (entsprechend Schritt 1401 in 14). Die Inhalte von Register 1505 (a + b) werden dann mit der ersten, im Register 1507 gespeicherten Binärmenge M1 über eine logische UND-Operation kombiniert und das Ergebnis ((a + b) & M1) wird in Register 1509 gespeichert (entsprechend Schritt 1403 von 14). In diesem Beispiel umfasst die erste vorgegebene binäre Menge M1 sukzessive binäre Ketten (0, 0, 1, 1), die durch Bitwerte von Null getrennt sind (entsprechend Schutz-Bit-Positionen), weil 2m – 1 = 3, was durch (0, 0, 1, 1) binär gegeben ist.
  • Die zweite vorbestimmte Binärmenge M2 = NICHT(M1) wird dann gebildet und im Register 1511 gespeichert, und die Inhalte von Register 1511 (M2) werden dann mit den Inhalten von Register 1505 (a + b) über eine logische UND-Operation kombiniert, wobei das Ergebnis (c1 = ((a + b) & M2)) im Register 1513 gespeichert wird (entsprechend Schritt 1405 in 14). Die erste vorbestimmte Binärmenge P1 wird im Register 1515 gespeichert, wobei P1 das wiederholte Binär-Äquivalent der Menge 2m + 1 repräsentiert, platziert in aneinander grenzenden 4-Bit Gruppen, von denen jede durch einen Bitwert von Null (entsprechend den Schutz-Bit-Positionen) getrennt ist. In diesem Beispiel umfasst die dritte vorbestimmte binäre Menge P1 sukzessive Binärketten (0, 1, 0, 1), die durch Bitwerte von Null getrennt sind (entsprechend den Schutz-Bit-Positionen), weil 2m + 1 = 5, was durch (0, 1, 0, 1) binär gegeben ist. Die Inhalte von Register 1513 ((a + b) & M2) werden um m Bits (z. B. 2 Bits) nach rechts verschoben und das Ergebnis (((a + b) & M2) >> 2) wird im Register 1517 gespeichert (entsprechend Schritt 1405 in 14). Die Inhalte von Register 1517 (((a + b) & M2) >> 2) werden von den Inhalten von Register 1515 (P1) und dem Ergebnis (c2 = P1 – (((a + b)) & M2) >> 2)) in Register 1519 gespeichert (entsprechend Schritt 1407 von 14). Schließlich werden die Inhalte vom Register 1509 (c1) zu den Inhalten von Register 1519 (c2) mittels Addition hinzuaddiert und diese gegebenen dritten Binärdaten (c = c1 + c2) werden im Register 1521 gespeichert. Die resultierenden dritten Binärdaten, die in Register 1521 gespeichert werden, entsprechen einem Feldelement, das in Vektornotation als (5, 5, 7, 5, 7, 5) gegeben ist, was das erwartete Ergebnis ist. Falls erwünscht, kann dieses Ergebnis beispielsweise vor einer Ausgabeoperation Modulo 5 reduziert werden (was in diesem Beispiel mod(p) ist), was das Ergebnis (0, 0, 2, 0, 2, 0) ergibt. Dies schließt die Diskussion von Beispiel 2 ab.
  • In einem anderen Aspekt der Erfindung, die sich auf Berechnungen bezieht, die Feldelemente eines Ungerad-Charakteristik-finiten Feldes involvieren, wo p = 2m + 1, kann eine Hardware-Vorrichtung zum Ausführen von Operationen für die beispielhafte Form von GF_p_k_ADD, die in 14 illustriert ist, vorgesehen sein. 16 ist ein Funktionsblockdiagramm einer solchen beispielhaften Hardware-Vorrichtung. Insbesondere stellt die in 16 illustrierte Vorrichtung 1600 einen anderen Ansatz zum Erzeugen von dritten Binärdaten bereit, die als c in 14 und 16 bezeichnet sind, welche die Summe eines ersten Feldelementes und eines zweiten Feldelementes von GF(pk) repräsentieren können. Die Vorrichtung 1600 ist sowohl auf die Einzel-Schutz-Bit-Repräsentation als auch die Multi-Schutz-Bit-Repräsentation anwendbar.
  • Die Hardware-Vorrichtung 1600, die in dem Funktionsblockdiagramm von 16 illustriert ist, teilt verschiedene gemeinsame Merkmale und betriebliche Aspekte mit der Vorrichtung 600, die in 6 illustriert ist, und vergleichbare Merkmale werden in 6 und 16 gleiche Bezugszeichen gegeben. Diskussion von Aspekten der Vorrichtung 1600, die sie mit der Vorrichtung 600 gemeinsam hat, werden hier nicht dupliziert. Stattdessen werden Aspekte, in denen sich die Vorrichtung 1600 von der Vorrichtung 600 unterscheidet, diskutiert.
  • Die Vorrichtung 1600 besitzt verschiedene Merkmale, die in der Vorrichtung 600 nicht zu finden sind. Insbesondere besitzt die Vorrichtung 1600 ein zusätzliches Register 1625 zum Halten der dritten vorbestimmten Binärmenge P1 und ein Subtraktionsgatter 1627 zum Subtrahieren der Ausgabe auf dem Rechtsverschiebegatter 1619 von den Inhalten (P1) des Registers 1625. Die Ausgabe aus dem Subtraktionsgatter 1627 wird zum Register 1603 zurückgegeben, wie angezeigt. Im Gegensatz dazu hat, wie in 6 illustriert, die Vorrichtung 600 kein zum Register 1625 analoges Register und kein zum Subtraktionsgatter 1625 analoges Subtraktionsgatter. Stattdessen wird für die in 6 illustrierte Vorrichtung 600 die Ausgabe aus dem Rechtsverschiebegatter 619 direkt in das darin illustrierte Register 603 zugeführt. Durch Bereitstellen des Registers 1625 und des Subtraktionsgatters 1627 in der in 16B illustrierten Weise wird es der Vorrichtung 1600 möglich, Daten in einer Weise entsprechend Schritt 1407, illustriert in 14, zu manipulieren. In anderen Hinsichten arbeitet die Vorrichtung 1600 wie die in 6 illustrierte Vorrichtung 600 und es ist keine zusätzliche Diskussion der gleichen Aspekte in 16 erforderlich.
  • In der oben beschriebenen Vorrichtung 1600 können das erste Register 1601 und ein Prozessor (nicht gezeigt) als Mittel zum Speichern erster Binärdaten, wie etwa in Bezug auf 6 beschrieben, angesehen werden. Das zweite Register 1603 und ein Prozessor (nicht gezeigt) können als Mittel zum Speichern zweiter Binärdaten angesehen werden. Weiterhin können das Register 1621 und/oder das Register 1609 als Mittel zum Speichern dritter Binärdaten angesehen werden. Darüber hinaus können die Taktlogikvorrichtung 1605 und jede der verbleibenden in 16 illustrierten Vorrichtungen als Mittel zum Ausführen zumindest einer Operation an den ersten Binärdaten und den zweiten Binärdaten angesehen werden.
  • In einem anderen beispielhaften Aspekt der Erfindung kann die für p = 2m + 1 verwendete Additionsvorrichtung 1600 modifiziert werden, wie etwa für die Hardware-Vorrichtung 1700 gezeigt, die im Blockdiagramm von 17 illustriert ist, für eine Situation, in der eine dedizierte Wahl des finiten Felds GF(pk) gemacht wird und unverändert bleibt. Das heißt, die Mengen m, p und k wie auch die Wahl dafür, ob die Repräsentation eine Einzel-Schutz-Bit-Repräsentation oder eine Multi-Schutz-Bit-Repräsentation ist, sind feststehend und die Hardware-Vorrichtung 1700 ist für diese Auswahlen dediziert. In dieser Situation kann die Hardware-Vorrichtung 1700 anfängliche Binärdaten empfangen, welche Feldelemente repräsentieren, wobei die anfänglichen Binärdaten nicht mit Nullen in Schutz-Bit-Konfigurationen konfiguriert sind. Stattdessen konfiguriert die Hardware-Vorrichtung 1706 die anfänglichen Binärdaten mit Nullen an geeigneten Schutz-Bit-Positionen, um erste und zweite Binärdaten zu erzeugen, ohne die Notwendigkeit eines Prozessor, um die ersten und zweiten Binärdaten mit Nullen in Schutz-Bit-Positionen zu konfigurieren. Die in 17 illustrierte Hardware-Vorrichtung wird nun beschrieben.
  • Die Hardware-Vorrichtung 1700, die im Funktionsblockdiagramm von 17 illustriert ist, teilt verschiedene Merkmale und betriebliche Aspekte mit der Vorrichtung 1600, die in 16 illustriert ist, und gleichen Merkmalen werden gleiche Bezugszeichen in den 16 und 17 gegeben. Eine Diskussion von Aspekten der Vorrichtung 1700, die sie mit der Vorrichtung 1600 gemein hat, wird hier nicht wiederholt. Stattdessen werden Aspekte, in denen sich die Vorrichtung 1700 von der Vorrichtung 1600 unterscheidet, diskutiert.
  • Die Vorrichtung 1700 besitzt verschiedene, in der Vorrichtung 1600 nicht zu findende Merkmale. Insbesondere besitzt die Vorrichtung 1700 Schutz-Bit-Einfügungsschaltungen 1701' und 1703' (SB-Einfügung) und eine Schutz-Bit-Entfernungsschaltung 1709' (SB-Entfernung). Die Schutz-Bit-Einfügungs- und Schutz-Bit-Entfernungsschaltungen 1701', 1703' und 1709' können beispielsweise unter Verwendung von Schaltungen ähnlich denen, die in den Beispielen von 8A und 8B beschrieben worden sind, implementiert werden, die bereits beschrieben worden sind. Wie in 17 gezeigt, sind die Schutz-Bit-Einfügungsschaltungen 1701' und 1703' funktional an dem Eingang der Hardware-Vorrichtung 1700 angeordnet und die Schutz-Bit-Entfernungsschaltung 1709' ist funktional zwischen dem Register 1709 und dem Ausgaberegister 1721 angeordnet. Die Schutz-Bit-Einfügungsschaltungen 1701' und 1703' arbeiten, um Anfangsbinärdaten a' und b' (ohne Schutz-Bits) zu empfangen, entsprechend ersten und zweiten Feldelementen von GF(pk) und geeignete Schutz-Bits in diese Daten einzufügen. Anders ausgedrückt transformieren die Schutz-Bit-Einfügungsschaltungen 1701' und 1703' die Anfangsbinärdaten a' und b' zu ersten Binärdaten und zweiten Binärdaten mit Schutz-Bits, insbesondere mit Nullen an Schutz-Bit-Positionen. Die Schutz-Bit-Entfernungsschaltung 1709' hat die entgegengesetzte Funktion – nämlich, dritte Binärdaten c, welche ein Berechnungsergebnis repräsentieren und Schutz-Bits aufweisen, zu empfangen und jene Schutz-Bits zu entfernen, wodurch endgültige Binärdaten c' gebildet werden, welche das Berechnungsergebnis repräsentieren, aber ohne Schutz-Bits.
  • Der Vorrichtung 1700 fehlen auch gewisse, in der Vorrichtung 1600 vorhandene Merkmale, weil sie in der Vorrichtung 1700 nicht notwendig sind. Insbesondere fehlt der Vorrichtung 1700 eine Eingangsleitung für die Menge m in das Rechtsverschiebegatter 1719 und in das Maskenregister 1713. Solch eine Eingangsleitung ist nicht notwendig, wenn m als fest angenommen ist. Stattdessen wird das Rechtsverschiebegatter 1719 einmal mit dem Wert von m initialisiert, um die geeignete Rechtsverschiebung auszuführen. Ähnlich werden das Maskenregister 1713 und das Register 1725 einmal mit den geeigneten Formen von M1 und P1 initialisiert, abhängig davon, ob die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet werden wird. Es können zum Ausführen dieser Initialisierungen konventionelle elektrische Verbindungen verwendet werden und diese sind in 17 nicht gezeigt. In anderer Hinsicht als den oben erwähnten Betriebsunterscheidungen ist der Betrieb der in 17 illustrierten Vorrichtung 1700 im Wesentlichen ähnlich zu dem für die in 16 illustrierte Vorrichtung 1600 beschriebenen und es ist keine weitere Diskussion notwendig.
  • In der oben beschriebenen Vorrichtung 1700 können das erste Register 1701 und die Schutz-Bit-Einfügungsschaltung 1701' als Mittel zum Speichern erster Binärdaten angesehen werden. Das zweite Register 1703 und die Schutz-Bit-Einfügungsschaltung 1703' können als Mittel zum Speichern zweiter Binärdaten angesehen werden. Weiterhin kann das Register 1709 als Mittel zum Speichern dritter Binärdaten angesehen werden. Darüber hinaus können die Takt/Logikschaltvorrichtung 1705 und alle der verbleibenden in 7 illustrierten Vorrichtungen als Mittel zum Ausführen zumindest einer Operation an den ersten Binärdaten und den zweiten Binärdaten angesehen werden.
  • Multiplikation von Feldelementen in GF(pk), wobei p = 2m + 1, kann unter Verwendung der beispielhaften Formen von GF_p_k_MUL ausgeführt werden, die zuvor unter Bezugnahme auf die 912 für p = 2m – 1 sowohl für die Einzel-Schutz-Bit-Repräsentation als auch die Multi-Schutz-Bit-Repräsentation beschrieben worden sind. Es ist lediglich notwendig, wahrzunehmen, dass m + 2 Bits (nicht einschließlich von Schutz-Bits) alloziert werden, um jede Gruppe von Datenbits, die einen Koeffizienten eines Feldelementes von GF(pk) für p = 2m + 1 repräsentieren, zu speichern, im Gegensatz zu m Bits für den Fall wo p = 2m – 1. Dieser Unterschied muss natürlich auf die Form der DLOG- und ANTILOG-Tabellen angewendet werden. Wo die Kompressionsfunktion (COMP) und Dekompressionsfunktion (DECOMP) mit der Multi-Schutz-Bit-Repräsentation eingesetzt werden, müssen diese Funktion auch berücksichtigen, dass m + 2 Bits und nicht m Bits alloziert werden, um jede Gruppe von Datenbits, die einen Feldkoeffizienten repräsentieren, zu speichern.
  • Addition und Multiplikation in GF(pk), wo p = 2m ± d
  • In einem anderen Aspekt der vorliegenden Erfindung können die oben beschriebenen Behandlungen zum Ausführen von Berechnungen in GF(pk) für p = 2m – 1 und p = 2m + 1 auf p der Form p = 2m ± d erweitert werden. Hier wird angenommen, dass angenommen wird, dass d > 1 und d ungerade ist. Darüber hinaus sind die Auswahlen von m und d so, dass das resultierende p eine ungerade Primzahl ist. Wenn eine gegebene Primzahl sowohl als p = 2m – d als auch p = 2m + d für unterschiedliche Wahlen von m und d geschrieben werden kann, wird es bevorzugt, die Form zu verwenden, die den kleinsten Wert von d gestattet. Beispielsweise kann p = 11 sowohl als p = 23 + 3 (m = 3, d = 3) als auch als p = 24 – 5 (M = 4, d = 5) geschrieben werden. Es wird bevorzugt, die Auswahl p = 23 + 3 zu verwenden, wo m = 3 und d = 3. Ansätze zum Ausführen von Addition und Multiplikation in GF(pk) – das heißt Ansätze zum Implementieren von GF_p_k_ADD und GF_p_k_MUL – für p = 2m ± d werden nunmehr beschrieben.
  • Für den Fall p = 2m ± d können Feldelemente von GF(pk) repräsentierende Binärdaten in Hardware-Registern gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation, wie zuvor beschrieben, gespeichert werden, außer dass für p = 2m – d, m + 1 Bits (Schutz-Bits nicht eingeschlossen) für jede Gruppe von Datenbits, die einen Koeffizienten eines Feldelements repräsentieren, alloziert werden und dass für p = 2m + d, m + 2 Bits (Schutz-Bits nicht eingeschlossen) für jede Gruppe von einen Koeffizienten eines Feldelements repräsentierenden Datenbit alloziert werden.
  • Beispielsweise können bei der Einzel-Schutz-Bit-Repräsentation für p = 2m – d erste Binärdaten (Registerinhalte a), die ein erstes Feldelement αi von GF(pk) repräsentieren, wobei die ersten Binärdaten k Gruppen von ersten Datenbits umfassen, wie folgt gespeichert werden. Hier wird angenommen, dass (m + 2)k maximal die Hardware-Wortgröße (d. h. Registergröße) ist. Es sei αi das erste Feldelement von GF(pk) wobei αi = (αk-1,i, ..., α0,i), und wobei jedes (αj,i zu einem Sp gehört (der ein sicherer Satz Sp–d oder Sp+d ist, abhängig von der Form von p, wie unten diskutiert). Eine Gruppe von α0,i repräsentierenden ersten Daten wird in einem ersten Register in Bitpositionen 0, 1, .., m gespeichert. Ein erstes Schutz-Bit und ein Wert von Null wird im ersten Register in Bitposition m + 1 (einer Schutz-Bit-Position) gespeichert. Eine andere Gruppe von α1,i repräsentierenden Bitdaten wird in einem ersten Register in Bitpositionen m + 2, ..., 2m + 2, und so weiter, gespeichert. Dementsprechend gibt es ein erstes Schutz-Bit an jeder Bitposition v(m + 2) – 1, wobei v = 1, 2, ..., – das heißt, jeder sukzessiven (m + 1)-ten Bitposition. Anders ausgedrückt gibt es ein erstes Schutz-Bit, das an dem signifikantesten Bit jeder Gruppe von ersten Datenbits angrenzend positioniert ist. Zweite Binärdaten (Registerinhalte b), die k Gruppen von zweiten, ein zweites Feldelement von GF(pk) repräsentierende Datenbits umfassen, können ähnlich in einem zweiten Register mit einem zweiten Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von zweiten Datenbits gespeichert werden. (Die Verwendung von "erstes" und "zweites" unterscheidet lediglich zwischen Attributen entsprechend dem ersten Feldelement bzw. dem zweiten Feldelement.) Durch Speichern von erste und zweite Feldelemente von GF(pk) repräsentierenden Binärdaten in ersten und zweiten Hardware-Registern auf diese Weise, wird sich kein Übertragsbit von einer Gruppe von Datenbits, die einen Feldkoeffizienten repräsentieren, in eine angrenzende Gruppe von Datenbits ausbreiten, die einen anderen Feldkoeffizienten repräsentieren. Der Ansatz zum Speichern von Feldelemente repräsentierenden Binärdaten gemäß der Multi-Schutz-Bit-Repräsentation ist vollständig analog, wobei der einzige Unterschied ist, dass mehr als eine Schutz-Bit- Position zwischen angrenzenden Gruppen von Feldkoeffizienten repräsentierenden Datenbits vorgesehen ist.
  • Eine Addition in GF(pk) (das heißt Implementieren von GF_p_k_ADD) für den Fall, wo p = 2m – d, wird nunmehr unter Bezugnahme auf die 18 und 19 beschrieben. Der Fall, bei dem p = 2m – d, kann durch Erweitern des für p = 2m – 1 verwendeten Ansatzes behandelt werden. Es wird angenommen, dass d > 1 und d ungerade. Es kann offensichtlich angenommen werden, dass 1 < d < 2m – 1, weil ansonsten p stets kleiner als 5 sein würde (oder sogar negativ). Zwei exemplarische Ansätze zum Ausführen von Addition (zwei beispielhafte Formen zum Implementieren von GF_p_k_ADD) können gemäß zwei Regimen für den Wert von d verwendet werden: 1) d ≤ (2m + 1)/3 und 2) (2m + 1)/3 < d < 2m – 1.
  • Zuerst wird ein beispielhafter Ansatz 1800 zum Implementieren von GF_p_k_ADD, bei dem d ≤ (2m + 1)/3 für den Fall p = 2m – d ist, unter Bezugnahme auf 18 beschrieben. Die Beschreibung ist sowohl auf die Einzel-Schutz-Bit-Repräsentation als auch die Multi-Schutz-Bit-Repräsentation anwendbar. Es sei Sp–d durch {0, 1, ..., 2m + d – 1} gegeben und es sei jeder Koeffizient eines Feldelements von GF(pk) ein Element des Satzes Sp–d. Natürlich hat jede im Satz Sp–d referenzierte Ganzzahl eine äquivalente Binärkette, die verwendet wird, um einen entsprechenden Koeffizienten eines Feldelements zu speichern, wie zuvor beschrieben worden ist. Die in 18 gezeigten Operationen können durch ein System, wie etwa das System 100, das in 1 gezeigt ist, ausgeführt werden. Weiterhin wird angenommen, dass die in 3 gezeigten Schritte 301 und 303 bereits vom Prozessor 105 so ausgeführt worden sind, dass die ein erstes Feldelement von GF(pk) repräsentierenden ersten Binärdaten in einem ersten Register (z. B. dem in 1 gezeigten Register 107) gespeichert sind und so, dass ein zweites Feldelement repräsentierende zweite Binärdaten in einem zweiten Register (z. B. Register 109) in einer Weise gespeichert sind, die direkt oben beschrieben worden ist. Die ersten und zweiten Binärdaten können gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert werden – der Ansatz ist der gleiche in beiden Fällen. Die in 18 illustrierten Schritte repräsentieren dann eine beispielhafte Implementierung des in 3 gezeigten Schritts 305.
  • Man wird bemerken, dass die Schritte 1801, 1803 und 1807 dieselben sind wie Schritte 401, 403 und 407, die in 4 gezeigt sind, für den Fall p = 2m – 1. Darüber hinaus sind die Vorschriften zum Bestimmen der vorgegebenen Binärmengen im einzelnen Fall für den in 18 illustrierten Ansatz dieselben wie für 4. Die exakten Formen von M1 und M2 hängen selbstverständlich davon ab, ob die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet wird, wie zuvor beschrieben worden ist. Auch werden, anders als im Fall von p = 2m – 1, wo m Bits verwendet wurden, um jeden Koeffizienten zu repräsentieren, m + 1 Bits verwendet, um jeden Koeffizienten für p = 2m – d zu repräsentieren. Die Masken M1 und M2 werden somit im Hinblick auf diese Erwägungen im Vergleich zum Fall für p = 2m – 1 modifiziert. Jedoch sind die Definitionen (Vorschriften) für diese Mengen im Hinblick darauf, wo Null/Nicht-Null Bits relativ zu den Schutz/Nicht-Schutz-Bitstellen lokalisiert sind, für jede Funktionsform von p dieselben. Nach Beschreibung dieser Unterschiede ist keine weitere Beschreibung der Schritte 1801, 1803 und 1807 nötig.
  • Schritt 1805 ist analog zu dem in 4 gezeigten Schritt 405, außer dass die Menge c2 im Schritt 1805 durch c2 = d*{((a + b)) & M2) >> m} anstelle von {((a + b)) & M2) >> m} gegeben ist. Das heißt, die Menge c2 in Schritt 1805 hat einen Multiplikationsfaktor von "d", der nicht im in 4 gezeigten Schritt 405 vorhanden ist. Die Multiplikation * mit d ist eine Multiplikation, die konventionell mit bekannten Prozessoren ausgeführt wird (z. B. normale Ganzzahl-Multiplikation und Fließkomma-Multiplikation). Die Menge d repräsentierende Binärdaten werden in den rechtesten Bitpositionen von Register gespeichert, mit Nullen ansonsten. Anders ausgedrückt, falls d als eine Vektormenge mit Koeffizienten entsprechend zu Gruppen von mit Feldelementen assoziierten Datenbits angesehen würde, wäre die Vektormenge (0, 0, 0, ..., d). Somit stellt das Implementieren des in 18 illustrierten Ansatzes 1800 dritte Binärdaten c bereit, welche die Summe von ersten und zweiten Feldelementen von GF(pk) repräsentieren.
  • Selbstverständlich kann die Sequenz zum Ausführen der in 18 gezeigten Operationen von der in 18 illustrierten Abfolge abweichen, wie zuvor beschrieben worden ist. Unterschiedliche Abfolgen können verwendet werden, solange die Menge c gemäß der Relation bestimmt wird. c = ((a + b) & M1) + d*(((a + b) & M2) >> m) (37)wobei a, b, c, M1 und M2 wie oben beschrieben sind. Man beachte, dass Gleichung 37 sich für den Fall d = 1 auf Gleichung 13 reduziert.
  • Es wird nunmehr gezeigt, dass der Satz Sp–d unter den in Gleichung 37 gezeigten Operationen (Addition gefolgt von modularer Reduktion) abgeschlossen ist, wobei a und b beide k Gruppen von Datenbits aj bzw. dj umfassen, wobei j = 0, ..., k – 1 und wobei jedes aj und bj eine Gruppe von Datenbits entsprechend einem Element des Satzes Sp–d = {0, 1, ..., 2m + d – 1} repräsentieren, auf die oben Bezug genommen wird. Dann kann in Bezug auf jeden individuellen Koeffizienten der ersten und zweiten Feldelemente von GF(pk) jeweils gesehen werden, dass aj + bj ≤ 2m+1 + 2d – 2 (diese Gleichung soll einen Vergleich der von aj und bj repräsentierten Ganzzahlwerte widerspiegeln). Man beachte, dass eine durch h(x) = (x mod 2m) + d(x div 2m) definierte Funktion (entsprechend Gleichung 43 oben) eine "Sägezahn"-Funktion ist, die monoton über jedes Intervall der Form {t2m, (t + 1)2m – 1} ansteigt. Darüber hinaus gilt für y < 2m und z < z', wobei z und z' positive Ganzzahlen sind, h(z2m + y) < h(z'2m + y). Für 0 ≤ (aj + bj) ≤ 2m+1 + 2d – 2 gilt dann ((aj + bj) div 2m) ≤ 2 (diese Gleichung soll einen Vergleich der durch aj + bj repräsentierten Ganzzahlwerte widerspiegeln). Somit, um zu zeigen, dass h(aj + bj) ≤ 2m + d1, für alle aj + bj in dem oben erwähnten Intervall, reicht es aus, zu zeigen, dass h(2m+1 – 1) der höchste "Peak" jedes "Sägezahns") und h(2m+1 + 2d – 2) (für die größten möglichen Eingabe an h) beide von oben durch 2m + d – 1 gebunden sind. Das Evaluieren von h an diesen zwei Punkten ergibt h(2m+1 – 1) = 2m + d – 1 und h(2m+1 + 2d – 2) = 4d – 2 ≤ 2m + d – 1 unter der Beschränkung d ≤ (2m + 1)/3. Somit ist Sp–d in Bezug auf Gleichung 36 oben geschlossen. Dies schließt die Diskussion für den Fall, bei dem d ≤ (2m + 1)/3 und p = 2m – d unter Bezugnahme auf 18 ab.
  • Ein beispielhafter Ansatz 1900 zum Implementieren von GF_p_k_ADD, wo (2m + 1)/3 < d < 2m – 1 für den Fall p = 2m – d wird nun unter Bezugnahme auf 19 beschrieben. Die Beschreibung ist auf sowohl die Einzel-Schutz-Bit-Repräsentation als auch die Multi-Schutz-Bit-Repräsentation anwendbar. Wenn d in dem Bereich liegt, der durch (2m + 1)/3 < d < 2m – 1 gegeben ist, kann es schwierig sein, einen Satz Sp brauchbarer Größe zu finden, der unter der obigen Reduktionsoperation abgeschlossen ist. In dieser Hinsicht kann eine brauchbare Größe bedeuten, dass der Satz Sp hinreichend klein ist, so dass zumindest zwei Koeffizienten eines Feldelementes von GF(pk) in einem einzelnen Hardware-Register repräsentiert werden können, oder dass eine hinreichende Anzahl von Koeffizienten eines Feldelements von GF(pk) in einem einzelnen Hardware-Register so repräsentiert werden kann, dass ein gewünschter Parallelisierungsgrad und eine gewünschte Berechnungseffizienz unter Verwendung eines in 18 dargestellten Ansatzes erzielt werden kann. Falls solch ein Satz Sp brauchbarer Größe gefunden werden kann, kann auch der in 18 illustrierte Ansatz verwendet werden, wenn d durch (2m + 1)/3 < d < 2m – 1 gegeben ist.
  • Wenn ein Satz Sp brauchbarer Größe für d, das durch (2m + 1)/3 < d < 2m – 1 gegeben wird, nicht verfügbar ist, kann der in 19 illustrierte beispielhafte Ansatz für GF_p_k_ADD verwendet werden, um die Addition in GF(pk) auszuführen. In dieser Situation lasse man einfach den Satz Sp den Satz sein, der durch Sp = {0, 1, ..., 2m – 1} gegeben ist (d. h. unabhängig von d). Die Addition in GF(pk) kann dann gemäß einem etwas modifizierten modularen Additions-Algorithmus, wie in 19 reflektiert, ausgeführt werden. Insbesondere ist ersichtlich, dass die Schritte 1901, 1903, 1905 und 1907, die in 19 gezeigt werden, dieselben wie die Schritte 1801, 1803, 1805 und 1807, wie in 18 gezeigt, sind, außer dass Schritt 1901 aus Gründen der Bequemlichkeit als c = a + b geschrieben wird, wobei die Notation "c" in den Schritten 1903 und 1905 eingesetzt wird und eine Wiederzuweisung der Menge c in Schritt 1907 auftritt. Darüber hinaus sind die Vorschriften zum Bestimmen von M1 und M2, die in 19 gezeigt sind, dieselben wie in 18 (die Formen von M1 und M2 werden selbstverständlich davon abhängen, ob die Einzel-Schutz-Bit-Repräsentation oder Multi-Schutz-Bit-Repräsentation verwendet wird) gezeigt. Dementsprechend ist keine weitere Diskussion der Schritte 1901, 1903, 1905 und 1907 nötig.
  • Der in 19 illustrierte Ansatz 1900 ist im Vergleich zum in 18 illustrierten Ansatz 1800 in Bezug auf Schritt 1909 modifiziert. Schritt 1909 ist ein Entscheidungsschritt, der bestimmt, ob irgendein cj (des Ergebnisses c) einen Ganzzahlwert repräsentiert, der größer oder gleich 2m ist. Falls die Antwort Ja ist, werden die Schritte 1903, 1905 und 1907 unter Verwendung des aktuellen c wiederholt. Mit anderen Worten führt der in 19 illustrierte Ansatz 1900 in den Gleichungen 38 und 39 gegebene Operationen durch c = a + b (38) while any cj ≥ 2m do c = (c & M1) + d*((c & M2) >> m) (39)wobei es sich versteht, dass cj ≥ 2m eine Abkürzung für die Feststellung ist, ob eine Gruppe von Datenbits cj einen Ganzzahlwert größer 2m repräsentiert. Somit wird, wie in den Gleichungen 38 und 39 oben reflektiert, eine modulare Reduktion ausgeführt, bis jedes cj < 2m, was garantiert, dass jedes cj des Ergebnisses c im Satz Sp liegt. Somit involviert im Effekt der obige Ansatz das Subtrahieren einer Anzahl von Vielfachen von p von jedem Koeffizienten eines Feldelementes von GF(pk), wo jeder Koeffizient ein Element des Satzes Sp ist Weil p < 2m und c > 0, ist jedes cj des Ergebnisses c tatsächlich eine korrekte Repräsentation von (aj + bj) mod p, bis zum Vielfachen von p. Selbstverständlich kann die modulare Reduktion nun einige Zeit erfordern und es ist eine Frage, wieviel Mal die in Gleichung 39 oben repräsentierte Reduktion ausgeführt wird. Beim oben beschriebenen Ansatz kann gesehen werden, dass die Reduktion maximal zweimal ausgeführt wird. Insbesondere nehme man an, dass ein cj in Gleichung 38 zumindest cj > 2m (ansonsten gibt es nichts zu zeigen) wird. Da aj und bj Koeffizienten repräsentieren, die Elemente von Sp sind, ist auch wahr, dass cj ≤ 2m+1 – 2. Jede Ausführung der Reduktion in Gleichung 39 subtrahiert ein Vielfaches von p, z. B. t·p, wobei t ≥ 1. Dann, weil cj – 2p ≤ 2m+1 – 2 – 2(2m – d) = 2d – 2 < 2m, sieht man, dass höchsten zwei modulare Reduktionen notwendig sind.
  • Es bleibt zu zeigen, wie bestimmt wird, ob irgendein cj ≥ 2m in Gleichung 39 existiert. Dieser Test kann an allen cj parallel wie folgt durchgeführt werden. Man nehme an, dass c = (ck-1, ..., c0) ein Binärergebnis hält, das der Reduktion in Gleichung 39 folgt. Die Reduktion in Gleichung 39 muss wieder durchgeführt werden, falls es ein j gibt, 0 ≤ j ≤ k – 1, so dass cj ≥ 2m. Mit M2 als die oben definierte vorbestimmte binäre Menge (Maskenmenge) ist beim Durchführen des Tests (cj & M2) ≠ 0 wahr, falls und nur falls zumindest ein cj cj ≥ 2m erfüllt. Man beachte, dass selbst, wenn einige andere ci < 2m, es keinen Schaden bei der Durchführung der Reduktion an solch einer Komponente gibt, weil die Reduktion keinerlei Effekt auf diese Komponente hat (da ci div 2m = 0 und kein Mehrfaches von p da subtrahiert wird). Dies schließt die Diskussion für den Fall ab, bei dem (2m + 1)/3 < d < 2m – 1 und p = 2m – d, unter Bezugnahme auf 19.
  • Nunmehr wird die Addition an GF(pk) (das heißt, die Implementierung von GF_p_k_ADD) für den Fall beschrieben, wo p = 2m + d, unter Bezugnahme auf die 20 und 21. Der Fall, bei dem p = 2m + d, kann durch Erweitern des für p = 2m + 1 verwendeten Ansatzes behandelt werden. Es wird nunmehr angenommen, dass d > 1 und d ungerade. Zwei beispielhafte Ansätze zum Ausführen von Addition (zwei beispielhafte Formen der Implementierung von GF_p_k_ADD) können gemäß zwei Regimen für den Wert von d benutzt werden: 1) d ≤ p/6 und 2) p/6 < d < 2m – 1. Man beachte, dass der Fall d ≥ 2m – 1 durch die zuvor beschriebenen Verfahren behandelt werden kann, indem einfach p als p = 2m ± d' umgeschrieben wird, wobei m' und d geeignet ausgewählt werden.)
  • Zuerst wird ein beispielhafter Ansatz 2000 zur Implementierung von GF_p_k_ADD unter Bezugnahme auf 20 beschrieben, wobei d ≤ p/6 für den Fall p = 2m + d. Diese Beschreibung ist sowohl auf die Einzel-Schutz-Bit-Repräsentation als auch auf die Multi-Schutz-Bit-Repräsentation anwendbar. Hier ist der Satz Sp+d durch 10, 1, ..., 2p – (d + 1)} gegeben und jeder Koeffizient eines Feldelements von GF(pk) ist ein Element des Satzes Sp+d, was m + 2 Bits Speicher für jeden solchen Koeffizienten erfordert, die Schutz-Bit(s) nicht eingeschlossen. Die in 18 gezeigten Operationen können durch ein System, wie das in 1 gezeigte System 100 ausgeführt werden. Weiterhin wird angenommen, dass die in 3 gezeigten Schritte 301 und 303 bereits von Prozessor 105 so ausgeführt worden sind, dass ein erstes Feldelement von GF(pk) repräsentierende erste Binärdaten in einem ersten Register (z. B. Register 107, gezeigt in 1) gespeichert sind und so, dass ein zweites Feldelement repräsentierende zweite Binärdaten in einem zweiten Register (z. B. Register 109) in einer Weise gespeichert sind, wie direkt oben beschrieben. Die ersten und zweiten Binärdaten können gemäß entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation gespeichert werden – der Ansatz ist in beiden Fällen derselbe. Die in 20 illustrierten Schritte repräsentieren dann eine beispielhafte Implementation von dem in 3 gezeigten Schritt 305.
  • Man wird bemerken, dass die Schritte 2001, 2003, 2005 und 2009 dieselben sie die Schritte 1401, 1403, 1405 und 1409 sind, die in 14 für den Fall p = 2m + 1 gezeigt sind. Darüber hinaus sind die Vorschriften zum Bestimmen der vorgegebenen Binärmengen M1 und M2 dieselben wie für 20 und für 14 (die exakten Formen von M1 und M2 hängen natürlich davon ab, ob die Einzel-Schutz-Bit-Repräsentation und die Multi-Schutz-Bit-Repräsentation verwendet wird, wie zuvor beschrieben worden ist). Wie angemerkt, werden hier m + 2 Bits alloziert, um jeden Koeffizienten von Feldelementen zu speichern, Schutz-Bit(s) nicht eingeschlossen. Dementsprechend ist keine weitere Beschreibung dieser Schritte notwendig. Der Schritt 2007 ist analog zum in 14 gezeigten Schritt 1407, außer dass die Menge c2 in Schritt 2007 durch c2 = P1 – d*{((a + b) & M2) >> m} anstelle von P1 – {((a + b) & M2) >> m} gegeben ist, wo * Multiplikation ist, wie oben diskutiert (z. B. eine normale Ganzzahlmultiplikation oder eine Fließkomma-Multiplikation). Das heißt, die Menge c2 in Schritt 2007 hat einen multiplikativen Faktor von "d", der im in 14 gezeigten Schritt 1407 nicht vorhanden ist. Zusätzlich umfasst P1 in Schritt 2007 in 20 Binärwerte, die die Menge 2m + d repräsentieren, statt 2m + 1, wie in Schritt 1407 von 14. Somit stellt das Implementieren des in 20 illustrierten Ansatzes 2000 dritte Binärdaten c bereit, welche die Summe von ersten und zweiten Feldelementen von GF(pk) repräsentieren.
  • Natürlich kann die Sequenz der Ausführung der in 20 gezeigten Operationen von der in 18 gezeigten Abfolge abweichen, wie zuvor beschrieben worden ist. Unterschiedliche Ansätze können verwendet werden, solange die Menge c wie in Gleichung 40 unten gezeigt bestimmt wird, wo a, b, c, M1, M2 und P1 wie zuvor unter Bezugnahme auf 14 beschrieben sind. c = ((a + b) & M1) + P1 – d*(((a + b) & M2) >> m) (40)
  • Man beachte, dass sich dies für den Fall d = 1 zu Gleichung 36 reduziert. Dies schließt die Diskussion für den Fall ab, bei dem d ≤ p/6 und p = 2m + d, unter Bezugnahme auf 20. Es kann auch durch Durchschnittsfachleute verifiziert werden, dass der Satz Sp+d tatsächlich in Bezug auf die obige Reduktion abgeschlossen ist, bei Verwendung von Verfahren in Analogie zum Fall p = 2m – d, d > 1, wie oben diskutiert.
  • Ein beispielhafter Ansatz 2100 zum Implementieren von GF_p_k_ADD, wo p/6 < d < 2m – 1 für den Fall p = 2m + d wird nunmehr unter Bezugnahme auf 21 beschrieben. Diese Beschreibung ist sowohl auf die Einzel-Schutz-Bit-Repräsentation als auch auf die Multi-Schutz-Bit-Repräsentation anwendbar. Wie zuvor für den Fall p = 2m – d angemerkt, wenn d im Bereich liegt, der durch p/6 < d < 2m – 1 gegeben ist, kann es schwierig sein, den einen Satz Sp brauchbarer Größe zu finden, der unter der obigen Reduktionsoperation abgeschlossen ist. Falls jedoch ein Satz Sp brauchbarer Größe gefunden werden kann, kann auch der in 20 illustrierte Ansatz verwendet werden, wenn d durch p/6 < d < 2m – 1 gegeben ist.
  • Wenn ein Satz Sp brauchbarer Größe für d unter der Bedingung p/6 < d < 2m – 1 nicht verfügbar ist, kann der in 21 illustrierte beispielhafte Ansatz für GF_p_k_ADD verwendet werden, um eine Addition in GF(pk) auszuführen, indem Reduktionen wiederholt durchgeführt werden, in Analogie zu dem, was in Gleichung 39 für den Fall p = 2m – d gemacht wurde. Es ist jedoch jetzt nicht klar, dass ein Koeffizient, der bereits kleiner ist als 2m, tatsächlich nicht größer werden kann durch diese Reduktion. Tatsächlich ist dies der Fall. Wenn man die Reduktionsfunktion h'(z) = (z mod 2m) + p – d(z div 2m) erwägt, beachte man, dass h'(0) = p > 0. Darüber hinaus weist im Intervall {p, p + 1, ..., 2m+1 – 1} die Funktion h' Fixpunkte auf; h'(z) = z für alle z in diesem Intervall. Der Ansatz wiederholter Reduktionen erfordert daher eine leichte Modifikation. In dieser Situation wird der Satz Sp stattdessen gegeben durch Sp = {0, 1, 2m+1 – 1} (d. h., unabhängig von d). Man beachte, dass nunmehr m + 1 Bits zum Speichern jedes Koeffizienten nötig sind, die Schutz-Bits nicht eingeschlossen. Die Addition in GF(pk) kann dann gemäß einem etwas modifizierten modularen Reduktions-Algorithmus, wie in 21 reflektiert, durchgeführt werden. Insbesondere ist ersichtlich, dass die Schritte 2101, 2103, 2105, 2107 und 2109, die in 21 gezeigt sind, dieselben wie die in 20 gezeigten Schritte 2001, 2003, 2005, 2007 bzw. 2009 sind, außer dass Schritt 2101 unter Verwendung von c = a + b geschrieben wird, die Notation "c" in den Schritten 21032107 verwendet wird und eine Wiederzuordnung der Menge c in Schritt 2109 auftritt. Darüber hinaus sind die Vorschriften zur Bestimmung der Mengen M1, M2 und P1, die in 21 gezeigt sind, dieselben wie in 20 (die exakten Formen von M1, M2 und P1 hängen natürlich davon ab, ob die Einzel-Schutz-Bit-Repräsentation oder Multi-Schutz-Bit-Repräsentation verwendet wird). Dementsprechend ist keine weitere Diskussion der Schritte 2101, 2103, 2105, 2107 und 2109 nötig.
  • Jedoch ist der in 21 illustrierte Ansatz 2100 im Vergleich zum in 20 illustrierten Ansatz 2000 in Bezug auf Schritt 2111 modifiziert. Schritt 2111 ist ein Entscheidungsschritt, der feststellt, ob irgendein cj (des Ergebnisses c) einen Ganzzahlwert repräsentiert, der größer als 2m+1 ist, ähnlich zu dem, was unter Bezugnahme auf 19 beschrieben wurde. Falls die Antwort Ja ist, werden die Schritte 2103, 2105, 2107 und 2109 wiederholt. Mit anderen Worten führt der in 21 illustrierte Ansatz 2100 die in Gleichung 41 und 42 gegebenen Operationen durch. c = a + b (41) while any cj ≥ 2m+1 do c = (c & M1) + P1 – d*((c & M2) >> m) (42)wobei sich versteht, dass cj ≥ 2m+1 eine Abkürzung dafür ist, zu bestimmen, ob eine Gruppe von Datenbits cj einen Ganzzahlwert größer 2m+1 repräsentiert. Die Implementation der durch Gleichung 42 repräsentieren Schleife ist ähnlich der, die unter Bezugnahme auf Gleichung 39 und 19 beschrieben worden ist. Ein Unterschied liegt darin, dass im vorherigen Fall der Test durch Überprüfen implementiert werden konnte, ob (c & M2) Null war oder nicht. Im vorliegenden Fall kann der Test durch Überprüfen, ob (c & M7) Null ist oder nicht, ausgeführt werden, wobei M7 eine neue binäre Menge ist, welche dieselbe wie M2 ist, außer dass Bit m und im Allgemeinen das am wenigsten signifikanteste Nicht-Null-Bit irgendeines gegebenen Segmentes von M2 auf Null zurückgesetzt ist. (Beispielsweise während die in Beispiel von 15 illustrierte Menge M2 durch wiederholtes Auftreten von (1, 1, 0, 0) gegeben ist, wie durch Bezugszeichen 1511 angezeigt, würde die oben beschriebene Menge M7 durch wiederholtes Auftreten von (1, 0, 0, 0) für den Test des vorliegenden Falls gegeben werden, mit Schutz-Bits an geeigneten Positionen.) Es kann von Fachleuten einfach gesehen werden, dass durch Verwendung der oben erwähnten Wahl von Sp und der Testbedingung in Gleichung 42 die Reduktion schließlich beendet wird, wobei alle Komponenten von c kleiner sind als 2m+1. Dies schließt die Diskussion für den Fall, bei dem p/6 < d < 2m – 1 und p = 2m + d unter Bezugnahme auf 21, ab.
  • In der obigen Diskussion bezüglich 1821 wurde angemerkt, dass die darin illustrierten Ansätze sowohl auf Einzel-Schutz-Bit-Repräsentation als auch auf Multi-Schutz-Bit-Repräsentation anwendbar sind. Wenn die Multi-Schutz-Bit-Repräsentation verwendet wird, ist es lediglich notwendig, zu bemerken, dass die, die ersten bzw. zweiten Feldelemente repräsentierenden ersten und zweiten Binärdaten mit mehreren Schutz-Bits platziert zwischen angrenzenden Gruppen von Datenbits, gespeichert werden, die Koeffizienten der entsprechenden Feldelemente repräsentieren, und nicht einzelne Schutz-Bits, wie im Fall der Einzel-Schutz-Bit-Repräsentation. Darüber hinaus erfordern die Vorschriften zum Bestimmen der Mengen M1, M2 und P1 keine Modifikation für die Multi-Schutz-Bit-Repräsentation. Natürlich wird das Anwenden solcher Vorschriften auf die Multi-Schutz-Bit-Repräsentation andere Werte der Mengen M1, M2 und P1 erzeugen, als bei der Einzel-Schutz-Bit-Repräsentation erzeugt werden. Darüber hinaus, wenn als gegeben angenommen wird, dass separate Beschreibungen für die Addition in GF(pk) für die Fälle vorgesehen worden sind, wo p in der Form p = 2m – 1 und p = 2m + 1 geschrieben werden kann, wird erkannt werden, dass die oben beschriebenen Ansätze für die Fälle, bei denen p = 2m – d und p = 2m + d sind, primär anwendbar sind, wenn d eine ungerade Ganzzahl größer gleich 3 und kleiner als 2m – 1 ist, m eine Ganzzahl größer gleich 3 und p ≠ 2N ± 1 für jegliche Ganzzahl N ist.
  • Die Multiplikation von Feldelementen in GF(pk), wobei p = 2m – d und p = 2m + d, kann unter Verwendung der beispielhaften Formen von GF_p_k_MUL ausgeführt werden, die vorstehend unter Bezugnahme auf die 912 für p = 2m – 1 sowohl für die Einzel-Schutz-Bit-Repräsentation als auch für die Multi-Schutz-Bit-Repräsentation beschrieben worden sind. Es ist lediglich notwendig, anzumerken, dass m + 1 Bit (Schutz-Bits nicht eingeschlossen) alloziert werden, um jede Gruppe von, einen Koeffizienten eines Feldelements von GF(pk) für p = 2m – d repräsentierende Gruppe von Datenbits zu speichern, im Gegensatz zu m Bits für den Fall, bei dem p = 2m – 1. Dieser Unterschied muss natürlich auf die Form der DLOG- und ANTILOG-Tabellen angewendet werden. Wenn die Kompressionsfunktion (COMP) und Dekompressionsfunktion (DECOMP) mit der Multi-Schutz-Bit-Repräsentation eingesetzt werden, müssen diese Funktionen ebenfalls berücksichtigen, dass m + 1 Bits, und nicht m Bits, alloziert werden, um jede Gruppe von, einen Feldkoeffizienten repräsentierenden Datenbits zu speichern.
  • Es wurde oben für den Fall p = 2m – 1 angemerkt, dass eine Vielzahl von anderen Operationen gemäß der vorliegenden Erfindung ausgeführt werden kann, einschließlich skalarer Multiplikation (Gleichung 23), Verdoppelung (Gleichungen 28–29), Bestimmen des additiven Inversen (Gleichung 30), Bestimmung des multiplikativen Inversen (Gleichung 31) und Exponentierung (Gleichung 32). Im Hinblick auf die obige Diskussion wird für Fachleute ersichtlich, dass diese Operationen auch für die Fälle ausgeführt werden können, bei denen p = 2m + 1, p = 2m – d und p = 2m + d, unter Verwendung der oben beschriebenen Ansätze. Darüber hinaus wird es auch ersichtlich werden, dass Hardware-Vorrichtungen, wie etwa unter Bezugnahme auf die 68, 12, 16 und 17 beschrieben, für die Fälle verwendet werden können, bei denen p = 2m – d und p = 2m + d. Die in 12 illustrierte Multiplikationsvorrichtung erfordert tatsächlich keine Modifikation zur Verwendung bei p = 2m – d und p = 2m + d.
  • Um die Hardware-Vorrichtung von 6 so zu modifizieren, dass sie für den Fall p = 2m – d (d > 1) adaptiert ist, wird eine Multiplizierschaltung, die Multiplikation (konventionelle Multiplikation) mit der gegebenen Menge d durchführt, zwischen der Ausgabeverbindung des Rechtsverschiebungsgatter 619 und der Eingabeverbindung von Register 603 eingefügt, d. h. an der durch "**" angezeigten Stelle in 6. Für 7 kann dieselbe Art von Multiplizierschaltung zwischen der Ausgabeverbindung des Rechtsverschiebungsgatters 719 und der Eingabeverbindung von Register 703 eingefügt werden, d. h. an der in 7 mit "**" angezeigten Stelle. In vollständiger Analogie können die in den 16 und 17 illustrierten Vorrichtungen mit derselben Art von Multiplizierschaltung an den in jenen Figuren jeweils mit "**" angezeigten Stellen modifiziert werden, um sie für den allgemeinen Fall p = 2m + d, d > 1, zu modifizieren.
  • Ähnlich den oben beschriebenen Effizienzverbesserungen für p = 2m – 1, werden auch für Ansätze für p = 2m + 1, p = 2m – d und p = 2m + d Effizienzverbesserungen erwartet. Es wird beispielsweise für k = 3 erwartet, dass die hierin beschriebenen vorliegenden Verfahren etwa 8 Mal schneller sind als der konventionelle Ansatz (der keine Parallelisierung involviert, wie bei der vorliegenden Erfindung). Für k = 8 und k = 10 wird erwartet, dass die hierin beschriebenen vorliegenden Verfahren etwa 15 Mal schneller sind als der konventionelle Ansatz.
  • Parallel-Addition mit Nicht-Primzahl Moduli
  • Wie Fachleuten klar sein sollte, haben wir in keinem der Fälle zur Beschreibung von k parallelen Additionen Modulo p = 2m ± d, d ≥ 1 wirklich die Tatsache verwendet, dass p eine Primzahl war. Während die Verwendung der Primzahl p für die Multiplikation in finiten Feldern wichtig ist (ansonsten ist die Gruppe nicht zyklisch und es können keine Generator/Log-Tabellen gefunden werden) sind Additionsoperationen wohldefiniert und komplett analog, selbst falls p keine Primzahl ist. Somit können in einem anderen Aspekt der vorliegenden Erfindung die oben für GF_p_k_ADD beschriebenen beispielhaften Ansätze verwendet werden, um k parallele Additionen Modulo p für irgendein p (Primzahl oder nicht) durchzuführen, die nahe an der Potenz von 2 liegt, d. h. p = 2m ± d. In vollständiger Analogie können die oben beschriebenen Ansätze für unterschiedliche funktionale Formen von p verwendet werden, abhängig vom Vorzeichen vor dem d und dem Betrag von d.
  • Andere Aspekte, einschließlich Kryptographie und Fehlerkorrektur
  • Die oben beschriebenen Ansätze können bei einer Fehlerkorrekturvorrichtung und bei einem Verfahren zur Fehlerkorrektur verwendet werden. Der Zweck eines Fehlerkorrekturcodes besteht darin, einen Empfänger in die Lage zu versetzen, eine Ursprungsnachricht zu rekonstruieren, selbst falls die Nachricht durch Fehler bei der Übertragung gestört wurde, d. h. die Fehler in der empfangenen Nachricht zu korrigieren. Dies wird durch Einführen von Redundanz in der Nachricht bewerkstelligt. Wie für Durchschnittsfachleute bekannt, wird bei Feldkoeffizientencodes eine Anzahl von Überprüfungsgleichungen verwendet. Beim Empfang einer Nachricht kann der Empfänger bestimmen, ob ein Fehler aufgetreten ist, indem die empfangenen Daten gemäß diesen Gleichungen überprüft werden, und falls, kann er den Fehler auch bestimmen. Abhängig von diesen Gleichungen, welche den Fehlerkorrekturcode definieren, können manchmal mehrere Fehler korrigiert werden.
  • In vielen Fällen werden die Codes/Gleichungen unter Verwendung finiten Feldarithmetik konstruiert. Der Code besteht dann aus n-Tupeln (oder "Vektoren") der Form g = (g0, g1, ..., gN-1), wo jedes gi ein Element in GF(q) für ein q ist. Man beachte, dass nur ein relativ kleiner Satz aller solch möglichen g valide Kurzwörter sein kann; falls alle g gestattet würden, würde es unmöglich, zu sagen, ob ein Fehler auftrat oder nicht.
  • Konventioneller Weise wird jede Nachricht in ein solches N-Tupel abgebildet und übertragen. Falls eine begrenzte Zahl von gi korrumpiert sind, kann der Empfänger noch g empfangen, um die Ursprungsnachricht zu erhalten. Beispiele solcher Codes beinhalten Reed-Solomon Codes, BCH-Codes und Goppa-Codes, die Fachleuten bekannt sind, wie etwa in "The Theory of Error Correcting Codes" von F. J. MacWilliams und N. J. A. Sloane, Elsevier Science B.V., Amsterdam, 1977, beschrieben. Wie oben angemerkt, können diese Codes arithmetische Operationen über finiten Feldern einsetzen. Jedoch setzen konventionelle Implementierungen solcher Codes entweder binäre finite Felder ein oder setzen Ungeradcharakteristik-finite Felder in der konventionellen ineffizienten Weise ein, in der ein einzelner Koeffizient von GF(pk) in einem Hardware-Register bearbeitet wird. Im Gegensatz dazu stellt die vorliegende Erfindung einen Ansatz zur Ausführung von Fehlerkorrektur bereit, der Ungeradcharakteristik-finite Felder involviert, in denen Koeffizienten eines finiten Feldes repräsentierende Daten in einer parallelen und hocheffizienten Weise verarbeitet werden, in denen multiple Koeffizienten eines Ungeradcharakteristik-finiten Feldes repräsentierende Binärdaten in einem einzelnen Hardware-Register gespeichert werden und durch paralleles Verarbeiten der die multiplen Koeffizienten repräsentierenden Binärdaten.
  • Ein konventioneller Ansatz zum Decodieren eines BCH-Codes, wie etwa in "The Theory of Error Correcting Codes", oben angegeben, diskutiert, kann wie folgt beschrieben werden. Das Feld f = GF(q) ist das Feld von q = pn Elementen und wir lassen w die multiplikative Ordnung von q Modulo N bezeichnen (d. h. w ist das kleinste y, so dass qy = 1 mod N). Es sei ein Element α in GF(qN) eine primitive n-te Wurzel der Einheit, d. h. N ist die kleinste Ganzzahl, für welche αN = 1 in diesem Feld. Wichtige Spezialfälle treten auf, wenn N = qw – 1, was einem primitiven BCH-Code entspricht und wenn N = q – 1, was einem Reed-Solomon Code entspricht. Der entsprechende BCH-Code besteht aus allen N-dimensionalen Vektoren g = (g0, g1, ..., gN-1) mit Komponenten GF(q), welche die Matrix-Vektor-Gleichung HgT = 0 erfüllen, wobei H eine (D – 1)-mal-N Matrix ist, die gegeben ist durch
    Figure 01120001
    wobei T Transposition bezeichnet und wobei D jeglichen Wert zwischen 1 und N – 1 annehmen kann. Die Beschreibung bezieht sich auf einen BCH-Code im engeren Sinne, der nicht die generellste Form ist.
  • Eine beispielhafte Fehlerkorrekturvorrichtung 2200 wird vorgesehen, wie etwa im Blockdiagramm von 22 illustriert.
  • Die Vorrichtung 2200 umfasst eine Eingabevorrichtung 2201 (die auch beispielsweise eine Eingabe/Ausgabe-Vorrichtung sein kann), die ein Signal empfängt, das dazu dient, ein gestattetes Codewort eines Fehlerkorrekturcodes zu repräsentieren, und eine für die Fehlerkorrektur programmierte Verarbeitungseinheit 2203. Die Vorrichtung 2200 kann auch einen Speicher umfassen, auf den von der Verarbeitungseinheit 2203 zugegriffen werden kann (z. B. um ein Computerprogramm einzulesen, das die Verarbeitungseinheit veranlassen kann, Schritte der hierin beschriebenen Ansätze auszuführen) und die von einem Prozessor bereitgestellte Binärdaten (z. B. Berechnungsergebnisse) speichern kann. Das Signal kann Binärdaten oder ein Analogsignal sein, das in der Eingabe/Ausgabeeinheit 2201 gewandelt wird (z. B. mit einer Abbildungsvorrichtung abgebildet werden kann) zu Binärdaten. Der Ausdruck "Binärdaten, die zum Repräsentieren eines gestatteten Codeworts dienen sollen", wie hierin verwendet, soll beide diese Möglichkeiten umfassen.
  • Die Verarbeitungseinheit 2203 kann jegliche geeignete Verarbeitungseinheit sein, einschließlich konventioneller oder spezialisierter Prozessoren, zum Ausführen der hier beschriebenen Ansätze, und die Eingabe/Ausgabeeinheit 22 kann jegliche geeignete Schnittstelle oder Vorrichtung zum Eingeben/Ausgeben von Daten sein. Beispielsweise kann die Verarbeitungseinheit 2203 die Verarbeitungseinheit eines konventionellen Computers sein und die Eingabe/Ausgabe-Vorrichtung 2201 kann ein konventionelles Modem sein. Als anderes Beispiel kann die Verarbeitungseinheit 2203 die einer tragbaren Vorrichtung, wie etwa einem Mobiltelefon oder einem persönlichen Digitalassistenten, sein, und die Eingabe/Ausgabe-Vorrichtung 2201 kann ein Funkempfänger/Sender sein. Als anderes Beispiel kann die Verarbeitungseinheit 2203 die eines Compact Disk (CD) Abspielers oder eines Digitalvideo-Disk (DVD) Abspielers sein und die Eingabe/Ausgabe-Vorrichtung kann ein optischer Signalempfänger sein, der ein Signal von einem durch die CD oder DVD modulierten Laserstrahl empfängt und ein entsprechendes elektrisches Signal ausgibt.
  • Die Verarbeitungseinheit wird programmiert, um Fehler in den Binärdaten zu korrigieren, wo gestattete Codewörter N-Tupeln von Feldelementen von GF(plk) sind. Das finite Feld GF(plk) ist ein Erweiterungsfeld eines Basisfelds GF(pk), bei dem p eine ungerade Primzahl ist und bei dem die Feldelemente von GF(pk) k Basiskoeffizienten enthalten. Ein Teil der Binärdaten umfasst k Gruppen von Datenbits und repräsentiert ein Feldelement von GF(pk), wobei das Feld GF(pk) k Basiskoeffizienten gemäß einer Polynom-Basis-Repräsentation hat, wobei jede Gruppe von Datenbits einen entsprechenden der k Basiskoeffizienten repräsentiert. Der Teil der Binärdaten wird in einem Register gespeichert, und die Verarbeitungseinheit und die Verarbeitungseinheit prozessierungs-verarbeitet den Teil der Binärdaten so, dass die k Gruppen von Datenbits parallel verarbeitet werden, unter Verwendung beispielsweise von zuvor oben beschriebenen arithmetischen Operationen. Dies wird später unten detaillierter beschrieben.
  • Insbesondere kann die Fehlerkorrekturvorrichtung 2200 für eine Fehlerkorrektur gemäß der vorliegenden Erfindung unter Verwendung eines beispielhaften Ansatzes 2300, der in 23 illustriert ist, programmiert werden. Beispielsweise kann der Ansatz 2300 zum Decodieren eines BCH-Codes implementiert sein, bei dem die erfinderischen Berechnungsansätze, die zuvor beschrieben worden sind, auf die Matrixformulierung zur Fehlerkorrektur, die oben unter Bezugnahme auf Gleichung 50 beschrieben worden ist, angewendet werden. Der Ansatz 2300 kann d/2 Fehler (und manchmal mehr Fehler) in empfangenen Binärdaten g' = (g'0, g'1, ..., g'N-1) korrigieren, die dazu dienen sollen, ein gestattetes Codewort zu repräsentieren.
  • Zuerst, wie in Schritt 2301 von 23 angezeigt, empfängt die Fehlerkorrekturvorrichtung Binärdaten, die ein gestattetes Codewort eines Fehlerkorrekturcodes repräsentieren sollen, wobei das gestattete Codewort ein N-Tupel von Feldelementen von GF(plk) ist, wobei p eine ungerade Primzahl ist. Mit anderen Worten umfasst jedes gestattete Codewort N Feldelemente von GF(plk). Die Binärdaten können direkt empfangen werden oder können aus einem Analogsignal konvertiert werden, wie oben angemerkt. Zusätzlich kann jedes Feldelement von GF(plk) als l primäre Koeffizienten gemäß einer Polynom-Basis-Repräsentation umfassend angesehen werden, wobei jeder Primärkoeffizient ein Feldelement von GF(pk) mit k Basiskoeffizienten ist. Die Binärdaten, die ein gestattetes Codewort repräsentieren sollen, können als N Ansammlungen von Datenbits umfassend angesehen werden, wobei jede Sammlung von Datenbits Z Segmente von Datenbits umfasst, und jedes Segment von Datenbits einen entsprechenden der l Primärkoeffizienten umfasst. Weiterhin kann jedes Segment von Datenbits als k Gruppen von Datenbits umfassend angesehen werden, wobei jede Gruppe von Datenbits einen entsprechenden der k Basiskoeffizienten repräsentiert.
  • Wie in Schritt 2303 angezeigt, berechnet dann die Fehlerkorrekturvorrichtung 2200 ein Syndrom, basierend auf den empfangenen Binärdaten, wobei ein gegebener Teil der Binärdaten (z. B. ein gegebenes Segment von Datenbits entsprechend einem der l primären Koeffizienten) in einem Register gespeichert wird und wobei k Gruppen von Datenbits des gegebenen Teils der Binärdaten parallel verarbeitet werden. Insbesondere kann für das Beispiel der oben unter Bezugnahme auf Gleichung 43 (zu einem BCH-Code gehörigen) beschriebenen Matrixformulierung ein Syndrom wie folgt kalkuliert werden. Übertragene Binärdaten g = (g0, g1, ..., gN-1) (oder ein solchen Binärdaten entsprechendes übertragenes Signal) wird als Binärdaten g' = (g'0, g'1, ..., g'N-1) empfangen. Es seien die Fehlerstellen in den Binärdaten g' solche Indizes j, für die g'j ≠ gj gilt, und es seien die Fehlerwerte die (Nicht-Null) Werte ej in GF(plk), die g'j = gj + ej erfüllen. Schließlich wird aus Gründen der Bequemlichkeit ηj = αj definiert, wo αj α zur j-ten Potenz ist (berechnet im Feld). Dann wird in Verbindung mit der oben referenzierten Matrixgleichung 43 das Syndrom S kalluliert gemäß der Relation S = Hg'T (44) berechnet werden können, was S = (S1, S2, ..., Sd-1) ergibt. Man sollte anmerken, dass die Komponenten g'j in g' Elemente in GF(plk) sind und die Syndromeinträge Si Elemente von GF(pNlk) sind, wobei GF(pNlk) ein Erweiterungsfeld von GF(plk) ist. Beim Berechnen des Syndroms S gemäß Gleichung 44 müssen arithmetische Operationen im Feld GF(pk) ausgeführt werden. Wie oben angemerkt, umfasst jedes der l Segmente von Datenbits k Gruppen von Datenbits, jede Gruppe von Datenbits repräsentiert einen entsprechenden der k Basiskoeffizienten. Wie in Schritt 2303 widergespiegelt, wird das Syndrom so kalkuliert, dass k Gruppen von Datenbits, die in einem Register gespeichert sind, parallel verarbeitet werden, wobei beispielsweise beispielhafte Implementierungen von GF_p_k_ADD und GF_p_k_MUL verwendet werden, wie auch andere notwendige Operationen, die zuvor beschrieben worden sind.
  • Als Nächstes, wie in Schritt 2305 angezeigt, wird festgestellt, ob das Syndrom S gleich Null ist, d. h. ob S = 0 = (0, 0, ..., 0). Falls S = 0, trat kein Fehler auf und die Prozedur springt zu Schritt 2309, wo bestimmt wird, ob weitere Daten verarbeitet werden sollten. Falls S ≠ 0, schreitet die Prozedur zu Schritt 2307 fort, wo die Fehler detektiert werden. Wie in Schritt 2307 angezeigt, detektiert die Fehlerkorrekturvorrichtung Fehler in einem Fehler enthaltenden Teil der Binärdaten (z. B. ein Fehler enthaltendes Segment von Datenbits), basierend auf dem Syndrom, und korrigiert die Fehler im Fehler korrigierenden Teil der Binärdaten durch Verarbeiten von k Gruppen von Datenbits des Fehler enthaltenden Teils der Binärdaten parallel. Dieser Prozess wird für alle Fehler enthaltenden Teile der Binärdaten wiederholt. Beispielsweise muss in Bezug auf die Matrixformulierung von Gleichung 44, die sich auf einen BCH-Code bezieht, unter der Annahme, dass r Fehler auftraten, Gleichung 45 unten für jedes j erfüllt sein, bei dem 0 ≤ j ≤ d – 1 Sj = e1ηi1 j + ... + erηir j (45) für einige ei (die Fehlerwerte) in GF(plk) und für einige ηik, die zum Satz {η0, ..., ηn-1} (den Fehlerstellen) gehören.
  • Darüber hinaus muss beim Bestimmen der Fehlerwerte gemäß diesem Beispiel die Maximalzahl r bestimmt werden, so dass das System von Gleichungen Sj+r + Sj+r-1τ1 ... + Sjτr = 0 (46)(wobei 1 ≤ j ≤ r – 1) eine eindeutige Lösung für Werte von τi aufweist und jene τi bestimmt werden müssen (hier ist r die Anzahl von korrupten Indizes in g'). Dies kann beispielsweise unter Verwendung des, Fachleuten bekannten und beispielsweise in "The Theory Of Error Correcting" Code, zuvor referenziert, beschriebenen Berlekamp-Massey Algorithmus erreicht werden. Dann kann ein Grad r Fehler-Lokator-Polynom etabliert werden, welches die in Gleichung 47 unten dargestellte Form hat s(x) = (1 – ηi1x)(1 – ηi2x) ... (1 – ηirx) = τr-1xr + τr-1xr-1 + ... + τ0 (47)wo τ0 = 1, zum Bestimmen von Fehlerstellen. Durch Gleichung 47 ist ein gegebenes j (0 ≤ j ≤ N – 1) eine Fehlerstelle, falls und nur falls s(ηj –1) = 0, was durch Evaluieren jedes s(x) wiederum durch Horner's Evaluierungsregel für Polynome bestimmt werden kann, die Fachleuten bekannt ist und beispielsweise in "Seminumerical Algorithms", Bd. 2 von "The Art of Computer Programming", oben erwähnt, beschrieben ist. Jede solche Berechnung involviert in der Größenordnung von r Additionen und Multiplikationen in GF(plk), die unter Verwendung beispielhafter Ansätze für SUM(α, β), PRODUCT(α, β), GF_p_k_ADD und GF_p_k_MUL gemäß der vorliegenden Erfindung ausgeführt werden kann, die oben beschrieben worden sind.
  • Dann werden die Fehlerwerte ei durch Einführen der wie oben beschrieben gefundenen ηj Werte in die durch Gleichung 45 definierten Gleichungen und ihre Lösung gefunden. Für Stellen j, wo kein Fehler aufgetreten ist, ist der Wert ej als ej = 0 definiert. Als Nächstes werden die Fehler gemäß der Relation g = g' – 3 korrigiert, wo e = (e0, e1, ..., eN-1). Das heißt, für jedes j zwischen 0 und N – 1 wird die Menge gj gemäß gj = g'j – ej bestimmt. Der letztere Schritt wird durch Ausführen von N Subtraktionen wie in GF(plk) erzielt. An diesem Punkt ist der Schritt 2307 für die beispielhafte Behandlung der Fehlerkorrektur, die einen BCH-Code involviert, abgeschlossen.
  • Wie im in 23 gezeigten Schritt 2309 angezeigt, wird festgestellt, ob mehr Daten verarbeitet werden sollten – das heißt, ob mehr Binärdaten, die ein gestattetes Codewort repräsentieren sollen, empfangen worden sind und verarbeitet werden sollten. Falls mehr Daten verarbeitet werden sollten, kehrt die Prozedur zu Schritt 2301 zurück. Falls keine weiteren Daten bearbeitet werden sollten, endet die Prozedur.
  • Die oben beschriebenen arithmetischen Ansätze, einschließlich aber nicht beschränkt auf die beispielhaften Ansätze für GF_p_k_ADD und GF_p_k_MUL und Exponentierung, können beispielsweise in der Kryptographie bei einer Kryptographie, die elliptische Kurven verwendet, und beim Schlüsselaustausch verwendet werden. Elliptische Kurven einsetzende Kryptographie ist Fachleuten bekannt. Beispielsweise wird ein Ansatz zum Verschlüsseln von Klartext auf elliptischen Kurven beispielsweise im US Patent Nr. 6,307,935 (Verfahren und Vorrichtung zur schnellen elliptischen Verschlüsselung mit direkter Einbettung) beschrieben. Zusätzlich wird eine Schlüsselvereinbarung und ein Transportprotokoll, das elliptische Kurven verwenden kann, im US Patent Nr. 6,122,736 (Schlüsselanordnung und Transportprotokoll mit impliziten Signaturen) beschrieben. Weiterhin wird ein öffentliches Schlüsselprotokoll, welches elliptische Kurven einsetzen kann, im US-Patent Nr. 5,933,504 (Verstärktes öffentliches Schlüsselprotokoll) beschrieben. Darüber hinaus wird ein Ansatz zur Implementierung von Schlüsselaustauschen, der elliptische Kurven involviert, im US-Patent Nr. 5,159,632 (Verfahren und Vorrichtung für öffentlichen Schlüsselaustausch in einem kryptographischen System) beschrieben. Es sollte jedoch angemerkt werden, dass US-Patent Nummern 6,307,935 , 6,122,736 , 5,933,504 und 5,159,632 nicht das Speichern von multiplen Feldelementkoeffizienten repräsentierende Binärdaten in einem Einzelregister und das parallele Verarbeiten solcher Binärdaten beschreiben, wie hierin gelehrt.
  • Einige Aspekte von elliptischen Kurven werden nunmehr beschrieben. Für ein finites Feld F und zwei Elemente α und β in F kann eine elliptische Kurve über F (informell) betrachtet werden, wobei die Sätze von Punkten (x, y) in F × F die Gleichung erfüllen y2 = x3 + αx + β (48)Zusätzlich gibt es einen Unendlichkeitspunkt O, den man sich konzeptionell als "unendlich" hoch auf der y-Achse liegend vorstellen kann. Diese Punkte bilden zusammen eine abelische Gruppe unter einer Gruppen-"Additions"-Operation, die als bezeichnet wird. Diese Gruppen-Additions-Operation ist im Hinblick auf arithmetische Operationen im unterliegenden Feld F definiert, wie Durchschnittsfachleuten bekannt. Somit wird gemäß der vorliegenden Erfindung das unterliegende Feld, das ausgewählt wird, ein Ungeradcharakteristik-finites Feld GF(pk) (oder einer Erweiterung desselben) sein, und können die hierin beschriebenen beispielhaften arithmetischen Ansätze, einschließlich, aber nicht beschränkt auf GF_p_k_ADD und GF_p_k_MUL und Exponentierung, verwendet werden, um die Berechnungseffizienz bei kryptographischen Berechnungen zu verbessern, die für eine elliptische Kurvengruppe über das Ungerad-Charakteristik-finite Feld GF(pk) ausgeführt werden.
  • Falls beispielsweise g ein Punkt auf solch einer elliptischen Kurve ist, kann g mit sich selbst x Mal unter der ⊗ Operation kombiniert werden, um zu ergeben z = g ⊗ g ⊗ ... ⊗ g (49)
  • Die Operationen in Gleichung 49 kann man sich als eine Art von Exponentierung denken, wobei z = gx. Im Rest der Beschreibung verwenden wir allgemein gx, um die Komposition der Gruppenoperation mit sich selbst, x Mal auf g wirkend, zu bezeichnen. Aus dem Kontext wird immer klar sein, ob die Operation eine finite Feldmultiplikation oder eine elliptischen Kurvenpunkt-Addition ist. Im Fall der elliptischen Kurve führt dies somit zu einem Spezialfall des zuvor referenzierten diskreten Logarithmusproblems. Der aktuelle Stand der Technik suggeriert, dass die elliptische Kurvenversion des diskreten Logarithmus schwieriger zu lösen sein kann als bei anderen Settings, was sie besonders attraktiv für die Kryptographie macht.
  • Es kann eine kryptographische Vorrichtung vorgesehen werden, die eine Schlüsselquelle und eine mit der Schlüsselquelle gekoppelte Ungerad-Charakteristik-finite Feld-Kryptographieeinheit umfasst, zur Verwendung in einem kryptographischen System, wie etwa dem in 24A illustrierten beispielhaften kryptographischen System. Die kryptographische Vorrichtung ist dafür konfiguriert, kryptographische Berechnungen zu implementieren, die das Feld GF(pk) (wobei p eine ungerade Primzahl ist) involvieren und kann die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation einsetzen. Das beispielhafte kryptographische System wird nun unter Bezugnahme auf 24A beschrieben.
  • 24A ist ein Funktionsblockdiagramm, das ein kryptographisches System 2400 illustriert, das eine erste kryptographische Vorrichtung 2401, eine zweite kryptographische Vorrichtung 2403, einen ersten Transceiver 2405 zum Senden und Empfangen von Chiffretext über einen unsicheren Kanal 2417, und einen zweiten Transceiver 2407 zum Senden und Empfangen von Chiffretext über den den unsicheren Kanal 2417 umfasst. Es wird angenommen, dass ein Lauscher 2419 in der Lage ist, die Kommunikation über den unsicheren Kanal 2417 zu beobachten. Die erste kryptographische Vorrichtung 2401 umfasst eine erste Schlüsselquelle 2409 und eine Ungerad-Charakteristik Finitfeld-Kryptographie einer 2411 (die hier auch als erste FFCU bezeichnet wird), zur Verschlüsselung und Entschlüsselung von Nachrichten. Eine oder beide der ersten Schlüsselquelle 2409 und der ersten FFCU 2411 können beispielsweise unter Verwendung von einer oder mehrerer Verarbeitungseinheiten eines konventionellen Computers oder einer tragbaren Vorrichtung, wie etwa einem Mobiltelefon, implementiert werden. Zusätzlich kann die erste kryptographische Vorrichtung 2401 auch einen Speicher umfassen, auf den durch die FFCU 2411 zugegriffen werden kann (z. B. um ein Computerprogramm einzulesen, das die FFCU 2411 veranlassen kann, Schritte von hier beschriebenen kryptographischen Ansätzen auszuführen), und der von der FFCU 2411 bereitgestellte Binärdaten (z. B. Berechnungsergebnisse) speichern kann.
  • Die zweite kryptographische Vorrichtung 2403 umfasst eine zweite Schlüsselquelle 2413 und eine zweite Ungerad-Charakteristik-finiten Feld-Kryptographieeinheit 2415 (die auch hierin als "zweite" FFCU 2415 bezeichnet wird), zum Verschlüsseln und Entschlüsseln von Nachrichten. (Hier sollen "erste" und "zweite" lediglich verwendet werden, um Aspekte der ersten kryptographischen Vorrichtung 2401 und der zweiten kryptographischen Vorrichtung 2403 zu unterscheiden.) Eine oder beide zweite Schlüsselquellen 2413 und zweite FFCU 2415 können beispielsweise unter Verwendung einer oder mehrerer Verarbeitungseinheiten eines konventionellen Computers oder einer tragbaren Vorrichtung, wie einem Mobiltelefon, implementiert werden. Zusätzlich kann die zweite kryptographische Vorrichtung 2403 auch einen Speicher umfassen, auf den durch die FFCU 2415 zugegriffen werden kann (z. B. um ein Computerprogramm einzulesen, das die FFCU 2415 veranlassen kann, Schritte von hierin beschriebenen kryptographischen Ansätzen auszuführen) und der von der FFCU 2415 bereitgestellte Binärdaten speichern kann (z. B. Berechnungsergebnisse). Zusätzlich können die ersten und zweiten Schlüsselquellen 2409 und 2413 Zufallszahlengeneratoren enthalten.
  • Wie oben angemerkt, umfasst die erste kryptographische Vorrichtung 2401 eine erste Schlüsselquelle 2409 und eine Ungerad-Charakteristik-finite Feld-Kryptographieeinheit (FFCU) 2411, die mit der Schlüsselquelle gekoppelt ist. In einem Aspekt der vorliegenden Erfindung kann die FFCU 2411 (oder die FFCU 2415) konfiguriert sein, Schritte eines in dem Flussdiagramm von 24B illustrierten beispielhaften kryptographischen Verfahrens 2450 auszuführen. Das Verfahren 2450 umfasst das Speichern von, zumindest einen Teil eines Feldelementes eines Ungerad-Charakteristik-finiten Feldes GF(pk) repräsentierenden Binärdaten in einem Register (z. B. einem internen Register einer Verarbeitungseinheit, die zur Implementierung der FFCU 2411 verwendet wird), wobei p eine ungerade Primzahl ist (Schritt 2451). Das Feldelement umfasst k Koeffizienten gemäß einer Polynom-Basis-Repräsentation und die Binärdaten umfassen mehrere Gruppen von Datenbits, wobei jede Gruppe von Datenbits einen assoziierten der k Koeffizienten repräsentiert. Das Verfahren umfasst auch das Verarbeiten von Binärdaten gemäß einem kryptographischen Algorithmus, so dass die mehreren Gruppen von Datenbits parallel verarbeitet werden (Schritt 2453).
  • Zusätzliche Details bezüglich einer beispielhaften Operation des in 24A illustrierten kryptographischen Systems 2400 und bezüglich des in 24B illustrierten beispielhaften kryptographischen Verfahrens 2450 werden jetzt beschrieben. Die Beschreibung wird sich um den Fall kümmern, bei dem eine Nachricht von der ersten kryptographischen Vorrichtung 2401 gesendet wird und von der zweiten kryptographischen Vorrichtung 2403 empfangen wird, aber die Beschreibung ist gleichermaßen auf die Situation anwendbar, wo die Nachricht an der zweiten kryptographischen Vorrichtung 2403 entsteht und von der ersten kryptographischen Vorrichtung 2401 empfangen wird.
  • Ein erster Konverser und ein zweiter Konverser haben beide sichere Schlüssel. In einem Aspekt kann ein sicherer Schlüssel durch Schlüsselaustausch erzeugt werden. In dieser Hinsicht können die oben bezogenen Binärdaten Schlüsseldaten sein und der oben angegebene kryptographische Algorithmus kann ein Schlüsselaustausch-Algorithmus sein, wie unten unter Bezug auf 25 beschrieben. Ein sicherer Schlüssel kann dadurch über den unsicheren Kanal 2417 ausgetauscht werden. Alternativ kann in einem anderen beispielhaften Aspekt jeder der Konverser ein öffentliches Schlüssel/privates Schlüsselpaar aufweisen, wobei die öffentlichen Schlüssel jedes Konversers dem anderen Konverser über einen öffentlichen Kanal zugänglich gemacht werden. In dieser Hinsicht können die oben referenzierten Binärdaten Nachrichtendaten sein und der oben angegebene kryptographische Algorithmus kann ein öffentlicher Schlüssel-Verschlüsselungs-Algorithmus sein, der zum Verschlüsseln/Entschlüsseln der Nachrichtendaten verwendet wird, wie etwa unten unter Bezugnahme auf 26 beschrieben.
  • Wie in 24A illustriert, können ein vom Schlüsselaustausch erzeugter sicherer Schlüssel oder ein öffentlicher Schlüssel aus der Schlüsselquelle 2409 der ersten FFCU 2411 der ersten Verschlüsselungsvorrichtung 2401 bereitgestellt werden. Klartext P wird der ersten FFCU 2411 bereitgestellt und der Klartext wird durch die erste FFCU 2411 unter Verwendung eines geeigneten Verschlüsselungs-Algorithmus verschlüsselt, wodurch Chiffretext C erzeugt wird. Der Verschlüsselung-Algorithmus wird vorab zwischen den ersten und zweiten Konversern vereinbart und der Schlüssel aus der Schlüsselquelle 2409 ist für den Verschlüsselungs-Algorithmus in geeigneter Weise konfiguriert. Falls Schlüsselaustausch gemäß der vorliegenden Erfindung verwendet wird, um einen sicheren Schlüssel zu erzeugen, kann der zum Verschlüsseln des Klartextes verwendete Verschlüsselungs-Algorithmus jeglicher geeignete Verschlüsselungs-Algorithmus sein, wie etwa beispielsweise DES oder RSA. Falls öffentliche/private Schlüsselpaare verwendet werden, kann der zum Verschlüsseln des Klartexts verwendete Verschlüsselungs-Algorithmus Öffentliche-Schlüssel-Verschlüsselung sein, wie etwa unten unter Bezugnahme auf die 26, 27 und 28 beschrieben, oder jeglicher geeignete Verschlüsselungs-Algorithmus, der gemäß dem in 24B illustrierten Verfahren 2450 implementiert ist.
  • Der Chiffretext C wird dann im Transceiver 2405 bereitgestellt (z. B. einer Netzwerkschnittstelle, einem Modem oder einem Drahtlossender/-empfänger), der den Chiffretext über den unsicheren Kanal 2417 an den Transceiver 2407 überträgt. Es wird angenommen, dass die Übertragung von einem Lauscher 2419 beobachtet werden kann.
  • Der Chiffretext wird dann der zweiten FFCU 2415 der zweiten kryptographischen Vorrichtung 2403 bereitgestellt. Die zweite FFCU 2415 entschlüsselt den Chiffretext gemäß einem Entschlüsselungs-Algorithmus, der dem zwischen dem ersten und zweiten Konverser vereinbarten Verschlüsselungs-Algorithmus entspricht. Der Entschlüsselungs-Algorithmus setzt einen Schlüssel aus der Schlüsselquelle 2413 in Verbindung mit der Entschlüsselung ein. Der Schlüssel kann beispielsweise ein Schlüssel sein, der unter Verwendung von Schlüsselaustausch erzeugt wird, oder ein privater Schlüssel, der einem zur Verschlüsselung verwendeten öffentlichen Schlüssel entspricht. Zusätzliche beispielhafte Aspekte, die sich auf die 24A und 24B beziehen, werden nunmehr beschrieben.
  • Die im Register gespeicherten Binärdaten können alle k Koeffizienten des Feldelements repräsentieren. Zusätzlich können die mehreren Gruppen von Datenbits in dem Register so gespeichert werden, dass zumindest ein Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von Datenbits positioniert wird, wobei jede Gruppe von Datenbits von einer angrenzenden Gruppe von Datenbits durch ein entsprechendes zumindest ein Schutz-Bit getrennt wird. Ein Schutz-Bit (Einzel-Schutz-Bit-Repräsentation) oder mehrere Schutz-Bits (Multi-Schutz-Bit-Repräsentation) können angrenzend an das signifikanteste Bit jeder Gruppe von Datenbits positioniert werden. Ein Anfangswert von Null kann jedem zumindest einen Schutz-Bit zugewiesen werden.
  • Die kryptographische Vorrichtung 2401 (und/oder 2403) kann Schlüsselaustausch implementieren, als ein Beispiel des kryptographischen Verfahrens 2450, unter Verwendung von Berechnungen, die das Ungerad-Charakteristik-finite Feld von GF(pk) involvieren. Solch ein Schlüsselaustausch kann unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation ausgeführt werden. Ein beispielhaftes Verfahren 2500 von Schlüsselaustausch gemäß der vorliegenden Erfindung, z. B. unter Verwendung des kryptographischen Systems 2400 implementiert, wird nunmehr unter Bezug auf die 24A und 25 beschrieben.
  • Ein erster Konverser mit einer ersten kryptographischen Vorrichtung 2401 und ein zweiter Konverser mit einer zweiten kryptographischen Vorrichtung 2403 möchten sicher über den unsicheren Kanal 2417 so kommunizieren, dass ein Lauscher ihre Übertragungen nicht entschlüsseln kann. Somit müssen die ersten und zweiten Konverser zuerst einen Schlüssel zur Verwendung für Verschlüsselung, Daten-Authentifizierung etc. vereinbaren. Solch ein Schlüssel kann unter Verwendung eines Diffie-Hellman-Schlüsselaustausch erzeugt werden, adaptiert für finite Feldberechnungen über GF(pk) gemäß der vorliegenden Erfindung. Ein konventioneller Diffie-Hellman Schlüsselaustausch ist in US Patent Nr. 4,200,770 (Kryptographische Vorrichtung und Verfahren) beschrieben. Darüber hinaus, wie oben erwähnt, wird ein konventioneller Schlüsselaustausch über elliptische Kurven im US-Patent Nr. 5,159,632 beschrieben.
  • Die ersten und zweiten Konverser einigen sich auf eine Menge g, wobei g ein Element über einem finiten Feld F oder ein Punkt auf einer elliptischen Kurve über F ist, wobei F ein Ungerad-Charakteristik-finites Feld GF(pk) oder ein Erweiterungsfeld von GF(pk) ist, wobei p eine ungerade Primzahl ist. In der Praxis wird g eine Gruppe erzeugen, über der Berechnungen ausgeführt werden, wobei die Gruppe eine Exponentierungsoperation aufweist. Falls g beispielsweise als ein Punkt auf einer elliptischen Kurve über F ausgewählt wird, kann die Gruppe als eine elliptische Kurvengruppe angesehen werden, die über das F definiert ist. Falls g als ein Element von F ausgewählt wird, kann die Gruppe als eine konventionelle multiplikative Gruppe über dem finiten Feld F angesehen werden. In beiden Fällen sollte die Menge g so ausgewählt werden, dass eine kleinste Ganzzahl x, wo gx = 1, hinreichend groß ist, um ausreichende Sicherheit bereitzustellen ("1" ist das Identitätselement in der Gruppe). Beispielsweise sollte die Binärrepräsentation dieser Ganzzahl x zumindest 160 Bit groß sein, im Hinblick auf die Rechenleistung von Prozessoren der aktuellen Generation. Die kleinste Ganzzahl x kann als |G| (die Größe der Gruppe) bezeichnet werden. Eine hinreichende Sicherheit in dieser Hinsicht bedeutet, dass die Exponentierung in dem Sinne sicher ist, dass das diskrete Logarithmusproblem unerschließbar ist (d. h. berechnungsmäßig nicht machbar).
  • Um einen Schlüssel zu erzeugen, wird eine Zahl xA von der Schlüsselquelle 2409 der mit dem ersten Konverser assoziierten ersten kryptographischen Einheit 2401 erzeugt (Schritt 2501) und der ersten FFCU 2411 bereitgestellt. Die Zahl xA kann beispielsweise eine Ganzzahl sein, die zufällig oder pseudozufällig erzeugt wird, wie man diese Ausdrücke konventioneller Weise in der Technik versteht. Die Zahl xA soll nicht mit anderen Konversern geteilt werden und kann in dieser Hinsicht als eine Geheimzahl angesehen werden. Es versteht sich, dass eine Ganzzahl in diesem Kontext sowohl eine als eine Ganzzahl gespeicherte Ganzzahl als auch eine als Fließkomma-Dezimale gespeicherte Ganzzahl beinhalten soll. Die erste FFCU 2411 erzeugt und sendet yA, wobei yA = gxA (Schritt 2503), an die mit dem zweiten Konverser assoziierte zweite kryptrographische Einheit 2403 über den unsicheren Kanal 2417. Wie oben angemerkt, ist g ein Element des finiten Elements F oder ein Punkt auf der elliptischen Kurve über F, wobei F ein Ungerad-Charakteristik-finites Feld GF(pk) oder ein Erweiterungsfeld von GF(pk) ist, wobei p eine ungerade Primzahl ist. Die Menge g umfasst mehrere erste Basiskoeffizienten, wobei die ersten Basiskoeffizienten Elemente von GF(p) sind. Falls beispielsweise g als ein Element von GF(pk) ausgewählt wird, würde g k erste Basiskoeffizienten, die Elemente von GF(p) sind, umfassen. Falls g als ein Element eines Erweiterungsfelds GF(plk) ausgewählt wird, würde g l·k erste Basiskoeffizienten umfassen, die Elemente von GF(p) sind. Falls g als ein Punkt auf einer elliptischen Kurve über GF(pk) ausgewählt wird, würde g 2·k erste Basiskoeffizienten umfassen, die Elemente von GF(p) sind, weil g dann durch ein Paar von Mengen repräsentiert würde, die beide Elemente von GF(pk) sind. In ähnlicher Weise, falls g als ein Punkt auf einer elliptischen Kurve über GF(plk) ausgewählt wird, würde g 2·l·k Basiskoeffizienten umfassen, die Elemente von GF(p) sind.
  • Die erste FFCU 2411 führt die Berechnung von yA durch Speichern von mehreren Gruppen von ersten Datenbits, die zumindest einige der mehreren ersten Basiskoeffizienten von g repräsentieren, in einem ersten Register und durch Verarbeiten der mehreren Gruppen von ersten Datenbits parallel, um yA zu erzeugen, aus (Schritt 2503). Die mehreren Gruppen von ersten Datenbits können im ersten Register so gespeichert werden, dass zumindest ein erstes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits positioniert wird, wobei jede Gruppe von ersten Datenbits von einer angrenzenden Gruppe von ersten Datenbits durch ein entsprechendes zumindest ein erstes Schutz-Bit getrennt ist. Ein erstes Schutz-Bit kann angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits (d. h. die Einzel-Schutz-Bit-Repräsentation) positioniert sein, oder mehrere erste Datenbits können angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits positioniert sein (d. h. die Multi-Schutz-Bit-Repräsentation). Ein Anfangswert von Null kann jedem ersten Schutz-Bit zugewiesen werden. Die Berechnung von yA kann unter Verwendung der in Gleichung 32 referenzierten Exponentierungsfunktion so ausgeführt werden, dass die mehreren Gruppen von ersten Datenbits parallel in der zuvor beschriebenen Weise verarbeitet werden. Selbst obwohl Gleichung 32 in Bezug auf p der Form p = 2m – 1 beschrieben worden ist, ist Gleichung 32 auch für p der Form p = 2m + 1 und p = 2m ± d anwendbar, wie zuvor erwähnt. Abhängig von der Registergröße der Hardware und der Anzahl von ersten Basiskoeffizienten, die g umfasst, kann es möglich sein, mehrere Gruppen von ersten Datenbits in einem einzelnen Register zu speichern, die alle Basiskoeffizienten von g repräsentieren.
  • Ähnlich wird eine Zahl xB (z. B. eine zufällig oder pseudozufällig erzeugte Ganzzahl) unabhängig von der zweiten Schlüsselquelle 2413 der mit dem zweiten Konverser assoziierten zweiten kryptographischen Einheit 2403 erzeugt und der zweiten FFCU 2415 bereitgestellt. Die Zahl xB soll nicht mit anderen Konversern geteilt werden und kann in dieser Hinsicht als eine Geheimzahl angesehen werden. Die zweite FFCU 2415 berechnet und sendet yB = gxB an die erste kryptographische Einheit 2401 über den unsicheren Kanal 2417. Die zweite FFCU 2415 kann die Berechnung von yB durch Speichern mehrerer Gruppen von Datenbits, die zumindest einige der mehreren erste Basiskoeffizienten von g in entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation repräsentieren, und durch Verwenden der in Gleichung 32 referenzierten Exponentierungsfunktion, so dass die mehreren Gruppen von Datenbits parallel in der zuvor beschriebenen Weise verarbeitet werden, ausführen.
  • Die erste FFCU 2411 empfängt die Menge yB, wobei yB mehrere zweite Basiskoeffizienten umfasst, wobei die zweiten Basiskoeffizienten Elemente von GF(p) sind (Schritt 2505). Die FFCU 2411 speichert mehrere Gruppen von zweiten Datenbits, die zumindest einige der mehreren zweiten Basiskoeffizienten von yB repräsentieren, in einem zweiten Register und berechnet dann K = (yB)xA durch paralleles Verarbeiten der mehreren Gruppen von zweiten Datenbits (Schritt 2507). Die zweite FFCU 2415 berechnet denselben Wert K gemäß K = (yA)xB. Diese Berechnungen können auch unter Verwendung von der in Gleichung 32 referenzierten Exponentierungsoperation ausgeführt werden, wobei multiple Gruppen von Datenbits, die assoziierte Basiskoeffizienten repräsentieren (Elemente von GF(p)) von yB und yA jeweils parallel verarbeitet werden. Unter den obigen Annahmen können nur die ersten und zweiten Konverser K berechnen und die ersten und zweiten Konverser können K (oder eine Funktion desselben) als ein Schlüssel verwenden. Durch Implementieren der oben beschriebenen Adaption des Diffie-Hellman-Schlüsselaustausches über eine elliptische Kurve oder eine andere über GF(pk) definierte Gruppe unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder Multi-Schutz-Bit-Repräsentation bietet die vorliegende Erfindung eine verbesserte Berechnungseffizienz im Vergleich zu konventionellen Ansätzen, was sich entweder als erhöhte Geschwindigkeit im Vergleich zu konventionellen Ansätzen oder eine verbesserte Sicherheit für denselben Berechnungsaufwand manifestiert.
  • Nach Erzeugung eines sicheren Schlüssels K gemäß dem oben beschriebenen Schlüsselaustausch-Algorithmus können die ersten und zweiten Konverser diesen Schlüssel in Verbindung mit ihren ersten und zweiten FFCUs 2411 bzw. 2415 einsetzen, um ausgetauschte Nachrichten zu verschlüsseln und entschlüsseln. Der Verschlüsselungs/Entschlüsselungs-Algorithmus können in dieser Hinsicht beispielsweise konventionelle kryptographische Verfahren, wie etwa RSA oder DES sein, die Durchschnittsfachleuten bekannt sind, oder jeglicher geeignete Verschlüsselungs-Algorithmus.
  • Die erste kryptographische Vorrichtung 2401 und die zweite kryptographische Vorrichtung 2403 sind beide als eine finite Feld-Kryptographieeinheit und eine Schlüsselquelle umfassend beschrieben worden. Es versteht sich, dass die erste finite Feld-Kryptographieeinheit 2411 und die erste Schlüsselquelle 2409 der ersten kryptographischen Vorrichtung 2401 unter Verwendung eines Speichers und einer mit dem Speicher gekoppelten Verarbeitungseinheit implementiert werden können. Mit anderen Worten kann die erste kryptographische Vorrichtung 2410 ein Speicher und eine mit dem Speicher gekoppelte Verarbeitungseinheit umfassen, wobei die Verarbeitungseinheit dafür konfiguriert ist, oben erwähnte Schritte für die erste kryptographische Einheit auszuführen. In ähnlicher Weise kann die zweite kryptographische Vorrichtung auch einen Speicher und eine mit dem Speicher gekoppelte Verarbeitungseinheit umfassen, wobei die Verarbeitungseinheit der zweiten kryptographischen Vorrichtung dafür konfiguriert ist, die oben erwähnten Schritte für die zweite kryptographische Einheit auszuführen.
  • Selbstverständlich sind die zuvor beschriebenen beispielhaften Aspekte der Erfindung einschließend, aber nicht beschränkt auf den Einsatz von Einzelnen oder mehreren Schutz-Bits, dem Speichern eines Teils eines Feldelements oder des gesamten Feldelements in einem einzelnen Register (oder Speichern eines Teils oder einer gesamten Menge, die einen Punkt auf einer elliptischen Kurve über F repräsentiert, in einem einzelnen Register), die Optionen von verschiedenen funktionalen Formen von p etc. auf das in 25 illustrierte beispielhafte Verfahren 2500 anwendbar.
  • Es kann ein Verfahren für öffentliche Schlüssel-Kryptographie als ein anderes Beispiel des kryptographischen Verfahrens 2450 vorgesehen sein. Ein beispielhaftes Verfahren von öffentlicher Schlüssel-Kryptographie 2600 wird nunmehr unter Bezugnahme auf 24A und 26 beschrieben. Das beispielhafte Verfahren 2600 entspricht einer Adaption der EIGamal öffentliche Schlüsselverschlüsselung und -Entschlüsselung. Es versteht sich, dass jede kryptographische Vorrichtung 2401 und 2403, die in 24 illustriert ist, unter Verwendung eines Speichers und einer mit dem Speicher überkoppelten Verarbeitungseinheit implementiert werden kann, wobei jede entsprechende Verarbeitungseinheit mit der entsprechenden kryptographischen Vorrichtung assoziierte Schritte ausführt.
  • Beim beispielhaften Verfahren 2600 erhält der zweite Konverser einen öffentlichen Schlüssel yA, der mit einem ersten Konverser assoziiert ist, wobei yA = gxA, und wobei xA der private Schlüssel des ersten Konversers ist (Schritt 2601). Beispielsweise kann der zweite Konverser eine Übertragung empfangen, die den öffentlichen Schlüssel des ersten Konversers und eine Menge g umfasst, oder der zweite Konverser kann den öffentlichen Schlüssel des ersten Konversers und die Menge g in einem Verzeichnis, in dem diese Information publiziert ist, nachschlagen. Die Menge g ist ein Element des finiten Felds F oder ein Punkt auf einer elliptischen Kurve über F, wobei F ein Ungerad-Charakteristik-finites Feld GF(pk) oder eine Erweiterungsfeld von GF(pk) ist, wobei p eine ungerade Primzahl ist. Die ersten und zweiten Konverser können vorab eine bestimmte Auswahl für das zu verwendende F und darüber, ob eine elliptische Kurve zu verwenden ist, vereinbaren, oder der erste Konverser kann diese Information in einem Verzeichnis zusammen mit dem öffentlichen Schlüssel yA und der Menge g veröffentlichen. Die Menge yA umfasst mehrere erste Basiskoeffizienten und die Menge g umfasst mehrere zweite Basiskoeffizienten, wobei die ersten und zweiten Basiskoeffizienten Elemente von GF(p) sind. Der erste Konverser kann die erste kryptographische Vorrichtung 2401 verwenden, um den öffentlichen Schlüssel yA = gxA zu erzeugen. Der private Schlüssel des ersten Konversers xA kann eine zufällig oder pseudo-zufällig erzeugte Ganzzahl sein, wie man diese Ausdrücke konventionell im Stand der Technik versteht, und soll nicht mit anderen Konversern geteilt werden. In dieser Hinsicht kann die mit dem ersten Konverser assoziierte FFCU 2411 mehrere Gruppen von Koeffizienten von g repräsentierende Datenbits in einem Register speichern und kann die mehreren Gruppen von Datenbits parallel unter Verwendung der in Gleichung 32 referenzierten Exponentierungsoperation in Verbindung mit der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation verarbeiten, um yA zu erzeugen. Wie oben angemerkt, kann der öffentliche Schlüssel yA des ersten Konversers in einem Verzeichnis veröffentlicht sein, aber es ist beabsichtigt, dass der erste Konverser die Menge xA (der private Schlüssel) geheim hält.
  • Der zweite Konverser erzeugt eine Zahl r (z. B. unter Verwendung eines Zufallszahlengenerators oder eines Pseudo-Zufallszahlengenerators, der beispielsweise in die Schlüsselquelle 2413 inkorporiert werden kann) und berechnet ein Paar von Mengen (u, v) = (gr, f–1(P)*(yA)r) unter Verwendung der FFCU 2415 (z. B. einer Verarbeitungseinheit), wobei P eine Klartextnachricht eines Satzes von Klartextnachrichten repräsentiert, F eine Abbildungsfunktion ist, die zumindest einen Teil des Vektorraums über F auf den Satz von Klartextnachrichten abbildet und * eine geeignete Binäroperation auf dem Vektorraum über F bezeichnet (Schritt 2603). Zusätzliche Details, die sich auf die Abbildungsfunktion F, den Vektorraum über F und die Operation * beziehen, werden unten stehend und unter Bezugnahme auf 27 beschrieben (die sich mit dem Fall beschäftigt, wo g ein Element von F ist) und 28 (die sich mit dem Fall beschäftigt, wo g ein Punkt auf einer elliptischen Kurve über F ist).
  • Die Zahl r kann eine zufällig oder pseudo-zufällig erzeugte Ganzzahl sein, wie diese Ausdrücke konventioneller Weise im Stand der Technik verstanden werden. Die Zahl r soll nicht mit anderen Konversern geteilt werden und kann in dieser Hinsicht als eine Geheimzahl angesehen werden. Um die Menge ν zu berechnen, werden mehrere Gruppen von, zumindest einige der mehreren ersten Basiskoeffizienten von yA repräsentierenden ersten Datenbits in einem ersten Register gespeichert und parallel verarbeitet. Die mehreren Gruppen von ersten Datenbits können im ersten Register so gespeichert werden, dass zumindest ein erstes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits positioniert wird, wobei jede erste Gruppe von Datenbits von einer angrenzenden Gruppen von ersten Datenbits durch ein entsprechendes zumindest ein Schutz-Bit getrennt wird. Anders ausgedrückt, kann entweder die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet werden. Ein Anfangswert von Null kann jedem ersten Schutz-Bit zugewiesen werden. Wo g als ein Element von F ausgewählt wird, kann die Exponentierung von yA gemäß der zuvor beschriebenen Gleichung 32 ausgeführt werden. Wenn g als ein Punkt auf einer elliptischen Kurve über F ausgewählt wird, bezeichnen die mit (yA)r assoziierten Exponentierungen und g eine r-fache (oder xA-fache) elliptische Kurven-Punkt-Addition.
  • Die ersten und zweiten Konverser vereinigen vorab den Satz von Klartextnachrichten, den sie bei ihren Kommunikationen verwenden werden. Die Funktion F ist eine Abbildungsfunktion, die zumindest einen Teil des Vektorraums über F auf den Satz von Klartextnachrichten abbildet und die ersten und zweiten Konverser vereinbaren die Abbildungsfunktion f vorab. Beispielsweise kann der Satz von Klartextnachrichten Wörter, Sätze und/oder individuelle Zeichen umfassen, und jede Klartextnachricht kann als eine Ganzzahl codiert werden.
  • Die Menge g wird eine Gruppe erzeugen, über der kryptographische Kalkulationen ausgeführt werden, und die Natur der Gruppe hängt von der Wahl von g ab. Zusätzlich wird für Fachleute ersichtlich sein, dass die Wahl von g (und somit der Gruppe) auch die Dimension des Vektorraums über F beeinflusst. Darüber hinaus beeinflusst die Natur der Gruppe, wie eine Exponentierung im Schritt 2603 ausgeführt wird, und beeinflusst die Auswahl der Binäroperation *. Beispielsweise kann die von g erzeugte Gruppe das finite Feld F sein, in welchem Fall der Vektorraum der eindimensionale Vektorraum entsprechend F ist, und die Operation * ist eine Multiplikation in F. Alternativ kann die durch g erzeugte Gruppe eine Subgruppe des finiten Feldes F sein, in welchem Fall der Vektorraum auch ein eindimensionaler Vektorraum entsprechend F ist und * wiederum eine Multiplikation in F ist. Bei einer anderen Alternative kann die von g erzeugte Gruppe eine elliptische Kurvengruppe über F sein und die Operation * kann eine elliptische Kurvenpunkt-Addition oder eine komponentenweise Multiplikation in F × F sein, wie detaillierter unter Bezugnahme auf 28 diskutiert werden wird. Im letzteren Fall kann der Vektorraum über F gemäß zwei Optionen ausgewählt werden. Bei der ersten Option kann der Vektorraum über F der zweidimensionale Vektorraum entsprechend F × F sein, wobei "×" das kartesische Produkt anzeigt. Bei der zweiten Option kann der Vektorraum ein dreidimensionaler Vektorraum über F sein, in dem projektive Koordinaten, die Fachleuten bekannt sind, in Verbindung mit der elliptischen Kurvengruppe verwendet werden. In dem Ausmaß, in dem die von g erzeugte Gruppe kleiner sein kann als irgendeiner der oben erwähnten Vektorräume, kann es für f hinreichend sein, lediglich einen Teil des Vektorraums über F auf den Satz von Klartextnachrichten abzubilden.
  • Die Menge G sollte daher so ausgewählt werden, dass die Größe der von g erzeugten Gruppe gleich oder größer als der Satz von Klartextnachrichten ist. Darüber hinaus wird angenommen, dass die Mengen g und yA, von denen angenommen wird, dass sie öffentlich verfügbar sind, so ausgewählt werden, dass das Bestimmen von xA auf yA und g komputational unmachbar wäre.
  • Andere die Beziehung zwischen Sicherheit und der Größe der von g erzeugten Gruppe involvierende Erwägungen werden Durchschnittsfachleuten im Hinblick auf konventionell bekannte Attribute von öffentlichen EIGamal Kryptosystemen ersichtlich sein, wie etwa beispielsweise im "Handbook of Applied Cryptography" beschrieben, das zuvor erwähnt wurde. Beispielsweise ist Fachleuten bekannt, wie die Größe einer Gruppe auszuwählen ist, die bei konventionellen öffentlichen EIGamal Schlüssel-Kryptosystemen eingesetzt werden. Alternativ ist Durchschnittsfachleuten ebenfalls bekannt, wie die Größe der Gruppe angenähert wird, basierend auf einer gegebenen Auswahl des Generators. Diese Aspekte sind auch auf das oben beschriebene Verfahren 2600 anwendbar.
  • Die Abbildungsfunktion f sollte so ausgewählt werden, dass jedes Element der von g erzeugten Gruppe einer anderen Klartextnachricht entspricht. Anders ausgedrückt kann die Abbildungsfunktion f eindeutig invertibel sein. Alternativ, falls die von g erzeugte Gruppe größer ist als der Satz von Klartextnachrichten, kann die Abbildungsfunktion so ausgewählt werden, dass mehr als ein Element der von g erzeugten Gruppe mit derselben Klartextnachricht assoziiert ist. Wenn Klartextnachrichten als Ganzzahlen codiert werden, kann die Abbildungsfunktion f dann so ausgewählt werden, dass f fast eine injektive Abbildung von der von g erzeugten Gruppe auf den Satz von Ganzzahlen {0, 1, 2, ..., Q – 1} ist, wobei Q ≈ |G| (|G| ist die Größe der Gruppe). Dies kann beispielsweise im Wesentlichen eine Identitätsabbildung sein. Das Auswählen einer gegebenen Abbildungsfunktion f liegt im Bereich des Durchschnittsfachmanns im Hinblick auf die oben beschriebenen Techniken.
  • Der zweite Konverser sendet dann das Paar von Mengen (u, v) an den ersten Konverser über den unsicheren Kanal 2417 (Schritt 2605). Das Paar von Mengen (u, v) entspricht einer verschlüsselten Version der Klartextnachricht.
  • Zusätzlich kann die Berechnung der Menge u durch den zweiten Konverser durch Speichern von mehreren Gruppen von zweiten Datenbits, die zumindest einige der mehreren zweiten Basiskoeffizienten von g repräsentieren, in einem zweiten Register und durch Verarbeiten der multiplen Gruppen von zweiten Datenbits parallel ausgeführt werden. In dieser Hinsicht können entweder die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet werden. Die Berechnung von gxA (um u zu berechnen) kann unter Verwendung von Exponentierung gemäß Gleichung 32 oder unter Verwendung von einer xA-fachen elliptischen Kurvenpunkt-Addition durchgeführt werden, abhängig von der Wahl von g. Die Mengen g, u und v können Elemente des finiten Felds F sein, wobei F als GF(pk) oder als ein Erweiterungsfeld von GF(pk) ausgewählt werden kann. Alternativ können die Mengen g, u und v Punkte auf einer elliptischen Kurve über F sein.
  • Der erste Konverser kann ein empfangenes Paar von Mengen (u, v) entschlüsseln, wodurch die Klartextnachricht P wiedergewonnen wird, durch Berechnen von P = f(u–xA*v), wobei u–xA*v = v/uxA, und wobei "/" das Inverse der Operation von * bedeutet (Schritt 2607). Die Menge uxA kann von der ersten FFCU 2411 gemäß der Exponentierungsfunktion von Gleichung 32 oder gemäß einer xA-fachen elliptischen Kurvenpunkt-Addition, wie geeignet, berechnet werden. Diese Berechnung kann unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder Multi-Schutz-Bit-Repräsentation ausgeführt werden, wie oben in Bezug auf den Schlüsselaustausch beschrieben. Nur vom ersten Konverser, der xA kennt, wird angenommen, dass er in der Lage ist, diese Nachricht zu entschlüsseln. Durch Implementieren der oben beschriebenen Adaption von öffentlicher EIGamal Schlüssel-Kryptographie unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation bietet die vorliegende Erfindung eine verbesserte Berechnungseffizienz im Vergleich zu konventionellen Ansätzen, was sich entweder als vergrößerte Geschwindigkeit im Vergleich zu konventionellen Ansätzen oder vergrößerte Sicherheit beim gleichen computationalen Aufwand manifestiert.
  • Selbstverständlich sind zuvor beschriebene beispielhafte Aspekte der Erfindung einschließlich, aber nicht beschränkt auf den Einsatz von Einzel- oder mehreren Schutz-Bits, Speichern eines Teils eines Feldelements oder des gesamten Feldelements in einem einzelnen Register (oder Speichern eines Teils oder einer Gesamtmenge, die einen Punkt auf einer elliptischen Kurve über F repräsentiert in einem einzelnen Register) der Optionen der verschiedenen funktionalen Formen von p etc. auf die in 26 illustrierte beispielhafte Methode 2600 anwendbar.
  • Beispielhafte Implementierungen des Verfahrens 2600 werden nun unter Bezugnahme auf 27 (die den Fall adressiert, bei dem g ein Element von F ist) und 28 (die den Fall adressiert, wo g ein Punkt auf einer elliptischen Kurve über F ist) beschrieben.
  • 27 ist ein Flussdiagramm eines beispielhaften Verfahrens einer öffentlichen Schlüssel-Kryptographie 2700. Beim exemplarischen Verfahren 2700 erhält der zweite Konverser einen öffentlichen Schlüssel yA, der mit dem ersten Konverser assoziiert ist, wobei yA = gxA, wobei xA der private Schlüssel des ersten Konversers ist (Schritt 2701). Beispielsweise kann der zweite Konverser eine Übertragung empfangen, die den öffentlichen Schlüssel des ersten Konversers und die Menge g umfasst, oder der zweite Konverser kann den öffentlichen Schlüssel des ersten Konversers und die Menge g in einem Verzeichnis nachschlagen, in dem diese Information veröffentlicht ist. Die Menge g ist ein Element eines finiten Feldes F, wobei F ein Ungerad-Charakteristik-finites Feld GF(pk) oder ein Erweiterungsfeld von GF(pk) ist, wobei p eine ungerade Primzahl ist. Die ersten und zweiten Konverser können sich über bestimmte Auswahlen für das zu verwendende F vorab einigen oder der erste Konverser kann diese Information in einem Verzeichnis zusammen mit dem öffentlichen Schlüssel und der Menge g veröffentlichen. Die Menge yA umfasst mehrere erste Basiskoeffizienten und die Menge g umfasst mehrere zweite Basiskoeffizienten, wobei die ersten und zweiten Basiskoeffizienten Elemente von GF(p) sind. Der erste Konverser kann die erste kryptographische Vorrichtung 2401 verwenden, um den öffentlichen Schlüssel yA = gxA zu erzeugen.
  • Der Privatschlüssel xA des ersten Konversers kann eine zufällig oder pseudo-zufällig erzeugte Ganzzahl sein, so wie diese Ausdrücke konventioneller Weise im Stand der Technik verstanden werden, und es ist nicht vorgesehen, diese mit anderen Konversern zu teilen. In dieser Hinsicht kann die mit dem ersten Konverser assoziierte FFCU 2411 mehrere, Koeffizienten von g repräsentierende Gruppen von Datenbits in einem Register speichern und kann die mehreren Gruppen von Datenbits parallel unter Verwendung der in Gleichung 32 referenzierten Exponentierungs-Operation in Verbindung mit der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation verarbeiten, um yA zu erzeugen. Wie oben bemerkt, kann der öffentliche Schlüssel yA des ersten Konversers in einem Verzeichnis veröffentlicht werden, aber es ist beabsichtigt, dass der erste Konverser die Menge xA (den privaten Schlüssel) geheim hält.
  • Der zweite Konverser erzeugt eine Zahl r (z. B. unter Verwendung eines Zufallszahlengenerators oder eines Pseudo-Zufallszahlengenerators, der beispielsweise in die Schlüsselquelle 2413 inkorporiert werden kann) und berechnet ein Paar von Mengen (u, v) = (gr, f–l(P)*(yA)r) unter Verwendung der FFCU 2415 (z. B. einer Verarbeitungseinheit), wobei * eine Multiplikation in F bezeichnet und wobei P eine Klartextnachricht im Satz von Klartextnachrichten repräsentiert (Schritt 2703). Die Zahl r kann eine zufällig oder pseudo-zufällig erzeugte Ganzzahl sein, wie diese Ausdrücke im Stand der Technik konventioneller Weise verstanden werden. Die Zahl r soll nicht mit anderen Konversern geteilt werden und kann in dieser Hinsicht als eine Geheimzahl angesehen werden. Um die Menge v zu berechnen, werden mehrere Gruppen von, zumindest einige der mehreren ersten Basiskoeffizienten von yA repräsentierenden ersten Datenbits in einem ersten Register gespeichert und parallel verarbeitet. Die mehreren Gruppen von ersten Datenbits können in dem ersten Register so gespeichert werden, dass zumindest ein erstes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits positioniert wird und jede Gruppe von ersten Datenbits von der angrenzenden Gruppe von ersten Datenbits durch ein entsprechendes zumindest ein erstes Schutz-Bit getrennt ist. Mit anderen Worten kann entweder die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet werden. Ein Anfangswert von Null wird jedem zumindest einem ersten Schutz-Bit zugewiesen. Zusätzlich kann die Exponentierung von yA gemäß Gleichung 32, wie zuvor beschrieben, ausgeführt werden.
  • Die ersten und zweiten Konverser einigen sich vorab auf den Satz von Klartextnachrichten, den sie bei ihren Kommunikationen verwenden werden. Die Funktion f ist eine Abbildungsfunktion, die zumindest einen Teil von F auf den Satz von Klartextnachrichten abbildet und die ersten und zweiten Konverser verständigen sich vorab über die Abbildungsfunktion f. Beispielsweise kann der Satz von Klartextnachrichten Worte, Sätze und/oder individuelle Zeichen umfassen und jede Klartextnachricht kann als eine Ganzzahl codiert werden. Die Menge g erzeugt eine Gruppe, über der kryptographische Kalkulationen ausgeführt werden. Diese Gruppe kann die multiplikative Gruppe des finiten Felds F sein oder eine Untergruppe dieser multiplikativen Gruppe, abhängig von der Wahl von g. In dem Ausmaß, in dem die von g erzeugte Gruppe kleiner als f sein kann, kann es für f hinreichen, lediglich einen Teil von F auf den Satz von Klartextnachrichten abzubilden.
  • Die Menge g sollte daher so ausgewählt werden, dass die Größe der von g erzeugten Gruppe gleich oder größer ist als der Satz von Klartextnachrichten. Darüber hinaus wird angenommen, dass die Mengen g und yA, von denen angenommen wird, dass sie öffentlich verfügbar sind, so ausgewählt werden, dass das Bestimmen von xA aus yA und g rechenmäßig nicht machbar wäre. Andere, die Beziehung zwischen Sicherheit und der Größe der dort von g erzeugten Gruppe involvierende Erwägungen werden für Durchschnittsfachleute im Hinblick auf konventionell bekannte Attribute von öffentlichen EIGamal Schlüssel-Kryptosystemen ersichtlich, wie etwa im "Handbook of Applied Cryptography", das oben angegeben ist, beschrieben. Beispielsweise ist Durchschnittsfachleuten bekannt, wie die Größe einer Gruppe auszuwählen ist, die bei konventionellen öffentlichen EIGamal Schlüssel-Kryptosysteme verwendet werden. Alternativ ist Durchschnittsfachleuten auch bekannt, wie die Größe der Gruppe, basierend auf einer gegebenen Auswahl des Generators, angenähert werden kann. Diese Aspekte sind auch auf das oben beschriebene Verfahren 2600 anwendbar.
  • Die Abbildungsfunktion f sollte so ausgewählt werden, dass jedes Element der von g erzeugten Gruppe einer anderen Klartextnachricht entspricht. Mit anderen Worten kann die Abbildungsfunktion f eindeutig invertierbar sein. Alternativ, falls die von g erzeugte Gruppe größer ist als der Satz von Klartextnachrichten, kann die Abbildungsfunktion f so ausgewählt werden, dass mehr als ein Element der von p erzeugten Gruppe mit derselben Klartextnachricht assoziiert ist. Wenn Klartextnachrichten als Ganzzahlen codiert werden, kann dann die Abbildungsfunktion f so ausgewählt werden, dass f eine praktisch injektive Abbildung vpm der von g erzeugten Gruppe auf den Satz von Ganzzahlen {0, 1, 2, ..., Q – 1) ist, wobei Q ≈ |G| (|G| ist die Größe der Gruppe). Dies kann beispielsweise im wesentlichen eine Identitätsabbildung sein. Das Auswählen einer gegebenen Abbildungsfunktion f liegt im Kenntnisbereich des Durchschnittsfachmanns im Hinblick auf die oben beschriebenen Techniken.
  • Der zweite Konverser sendet dann das Paar von Mengen (u, v) über den unsicheren Kanal 2417 an den ersten Konverser (Schritt 2705). Das Paar von Mengen (u, v) entspricht einer verschlüsselten Version der Klartextnachricht.
  • Zusätzlich kann die Berechnung der Menge u von dem zweiten Konverser durch Speichern mehrerer Gruppen von, zumindest einige der mehreren zweiten Basiskoeffizienten von g repräsentierenden zweiten Datenbits in einem zweiten Register und durch Verarbeiten der mehreren Gruppen von zweiten Datenbits parallel ausgeführt werden. In dieser Hinsicht kann entweder die Einzel-Schutz-Bit-Repräsentation oder die Multi-Schutz-Bit-Repräsentation verwendet werden und die Exponentierung von g (um u zu berechnen) kann unter Verwendung der zuvor beschriebenen Gleichung 32 ausgeführt werden. Die Mengen g, u und v können Elemente des finiten Felds F sein, wobei F als GF(pk) oder als ein Erweiterungsfeld von GF(pk) ausgewählt werden kann.
  • Der erste Konverser kann ein empfangenes Paar von Mengen (u, v) entschlüsseln, wodurch die Klartextnachricht P wiedergewonnen wird, durch Berechnen von P = f(u–xA*v), wobei u–xA*v = v/uxA, und wobei "/" die Division in F bezeichnet (Schritt 2707). Das Ausführen von Division in F liegt im Können des Durchschnittsfachmanns und erfordert keine weitere Erörterung. Die Menge uxA kann durch die erste FFCU 2411 durch Anwenden der Exponentierungsfunktion von Gleichung 32 unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation berechnet werden, wie etwa oben in Bezug auf den Schlüsselaustausch beschrieben. Nur vom ersten Konverser, der xA kennt, wird angenommen, dass er zum Entschlüsseln dieser Nachricht in der Lage ist. Durch Implementieren der oben beschriebenen Adaption von öffentlicher EIGamal Schlüssel-Kryptographie über eine über GF(pk) definierte Gruppe, oder das Feld selbst, unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder Multi-Schutz-Bit-Repräsentation bietet die vorliegende Erfindung eine verbesserte Berechnung zur Effizienz im Vergleich zu konventionellen Ansätzen, die sich entweder als verbesserte Geschwindigkeit im Vergleich zu konventionellen Ansätzen oder eine verbesserte Sicherheit für denselben Berechnungsaufwand manifestiert.
  • Selbstverständlich sind zuvor beschriebene beispielhafte Aspekte der Erfindung, einschließlich, aber nicht beschränkt auf den Einsatz von einzelnen oder mehreren Schutz-Bits, dem Speichern eines Teils eines Feldelementes oder des gesamten Feldelementes in einem einzelnen Register (oder Speichern eines Teils oder einer gesamten Menge, die einen Punkt auf einer elliptischen Kurve über GF(pk) repräsentiert, in einem Einzelregister), die Optionen von verschiedenen funktionalen Formen von p etc. auf das in 27 illustrierte beispielhafte Verfahren 2700 anwendbar.
  • Das oben beschriebene öffentliche Schlüssel-Kryptographieverfahren 2700 kann auch für Implementierung unter Verwendung von elliptischen Kurven über F, wo F wie oben beschrieben ist, modifiziert werden. Ein beispielhaftes Verfahren 2800 von öffentlicher Schlüssel-Kryptographie wird nun unter Bezugnahme auf 28 beschrieben. Tatsächlich ist die Behandlung komplett analog zu der in Bezug auf 27 beschriebenen und die Diskussion wird entsprechend abgekürzt, wobei hauptsächlich die Unterschiede, die erwogen werden müssen, beschrieben werden. Wir nehmen an, dass sich der erste und zweite Konverser auf eine elliptische Kurvengruppe geeinigt hat oder dass eine Beschreibung der zu verwendenden Gruppe zwischen den Konversern übertragen wird. Dies kann beispielsweise als eine Präambel für tatsächliche Nachrichten vorgenommen werden. Der Schritt 2801 ist vollständig analog zum zuvor beschriebenen Schritt 2701, außer dass im Verfahren 2800 g ein Punkt auf einer elliptischen Kurve über F ist. Somit erhält beim exemplarischen Verfahren 2800 der zweite Konverser einen öffentlichen Schlüssel yA, der mit einem ersten Konverser assoziiert ist, wobei yA = gxA, und wobei xA der private Schlüssel des ersten Konversers ist (Schritt 2801). Die Menge g ist ein Punkt auf einer elliptischen Kurve über dem finiten Feld F, wobei F ein Ungerad-Charakteristik-finites Feld GF(pk) oder ein Erweiterungsfeld von GF(pk) ist, wobei p eine ungerade Primzahl ist. Die Menge yA umfasst mehrere erste Basiskoeffizienten und die Menge b umfasst mehrere zweite Basiskoeffizienten, wobei erste und zweite Basiskoeffizienten Elemente von GF(p) sind.
  • Der zweite Konverser erzeugt eine Zahl r (z. B. unter Verwendung eines Zufallszahlengenerators oder eines Pseudo-Zufallszahlengenerators, der beispielsweise in der Schlüsselquelle 2413 inkorporiert sein kann) und berechnet ein Paar von Mengen (u, v) = (gr, f(u–1(P)*(yA)r) unter Verwendung der FFCU 2415 (z. B. einer Verarbeitungseinheit), wobei P eine Klartextnachricht eines Satzes von Klartextnachrichten repräsentiert, wobei * eine elliptische Kurvenpunkt-Addition oder eine komponenten-weise Multiplikation in F × F ist und wobei r wie zuvor beschrieben erzeugt werden kann (Schritt 2803). Die Funktion f ist eine Abbildungsfunktion, die zumindest einen Teil von F × F auf den Satz von Klartextnachrichten abbildet, wobei mehrere Gruppen von ersten Datenbits, die zumindest einige der mehreren ersten Datenbasis-Koeffizienten von yA repräsentieren, in einem ersten Register gespeichert werden und parallel verarbeitet werden, um v zu berechnen. Zusätzliche Aspekte bezüglich der Berechnung von u und v werden unten beschrieben.
  • Wie in Schritt 2805 angemerkt, sendet der zweite Konverser dann das Paar von Mengen (u, v) an den ersten Konverser, wobei das Paar von Mengen einer verschlüsselten Version der Klartextnachricht entspricht. Wie in Schritt 2807 angemerkt, kann der erste Konverser dann ein empfangenes Paar von Mengen (u, v) entschlüsseln, wodurch die Klartextnachricht p wiedergewonnen wird, indem P = f(u–xA*v) berechnet wird, wobei u–xA*v = v/uxA, und wobei "/" das Inverse der Operation * bezeichnet (Schritt 2807). Zusätzliche Details bezüglich der Operation "/" werden unten beschrieben. Die Menge uxA kann von der ersten FFCU 2411 durch Anwenden der Exponentialfunktion in Gleichung 32 unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder Multi-Schutz-Bit-Repräsentation berechnet werden, wie etwa oben in Bezug auf den Schlüsselaustausch beschrieben. Nur vom ersten Konverser, der xA kennt, wird angenommen, dass er in der Lage ist, diese Nachricht zu entschlüsseln. Durch Implementieren der oben beschriebenen Adaption von öffentlicher EIGmal Schlüssel-Kryptographie über einer elliptischen Kurve über F unter Verwendung der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation bietet die vorliegende Erfindung eine verbesserte Berechnungseffizienz im Vergleich zu konventionellen Ansätzen, die sich entweder als vergrößerte Geschwindigkeit im Vergleich zu konventionellen Ansätzen oder vergrößerte Sicherheit beim selben Berechnungsaufwand manifestiert.
  • Zusätzliche Aspekte, die sich auf die Berechnung des Paars von Mengen u und v durch den ersten Konverser beziehen und auf das Wiedergewinnen einer Klartextnachricht p aus dem Paar von Mengen u und v durch den ersten Konverser beziehen, werden nun beschrieben. Von einem Notationsstandpunkt aus, wie etwa bereits in Verbindung mit Gleichung 49 erwähnt, bezeichnen die mit (yA)r, gr, etc. assoziierten Exponentierungen nun r-fache (oder xA-fache) elliptischen Kurvenpunkt-Addition. Das Berechnen der Menge u ist somit komplett analog zu dem in Bezug auf 27 dargestellten Ansatz und u wird nun ein elliptischer Kurvenpunkt sein. Für v können zwei Fälle für die Operation * und für die Abbildungsfunktion f erwogen werden, wie nun beschrieben wird. In jedem der zwei Fälle muss der zweite Konverser einen Wert der Form f–1(P)*(yA)r berechnen, wobei (yA)r nun ein Punkt auf der elliptischen Kurve ist, d. h. ein (x, y)-Koordinatenpaar in F × F, wobei × das kartesische Produkt bezeichnet, d. h. Paare von Elementen aus F. Somit muss f–l einen Wert erzeugen, der aus diesem zweidimensionalen Wert zusammengesetzt werden kann. Im ersten Fall, bei dem f so ausgewählt werden kann, dass fl garantiert ein Punkt auf der elliptischen Kurve ist, kann * einfach die übliche elliptische Kurvenpunkt-Additionsoperation sein. Für den ersten Konverser ist in diesem Fall die "/" Operation eine Punktsubtraktion (das Inverse der Addition, die Fachleuten bekannt ist). Für den ersten Fall kann die f-Abbildung auf verschiedene Weise durchgeführt werden, von denen ein Beispiel nachfolgend ausgegeben ist. Wir können annehmen, dass der Klartextnachrichtenraum aus Binärketten von Längen kleiner als lklog2(p) besteht, wo l, k, p die das Feld F definierenden Werte sind. Man beachte, dass dies ohne Verlust an Verallgemeinerung angenommen werden kann, da wir eine Nachricht längerer Größe in kleinere Blöcke schneiden können, was die Längenbeschränkung erfüllt, und jeden Block individuell verarbeiten können. Wir können auch P auf natürliche Weise als einen Satz von Basiskoeffizienten im Feld F interpretieren. Man beachte, dass P nicht eindeutig das mit diesem Satz von Basiskoeffizienten assoziierte Element bestimmt, da einige Bits unspezifiziert bleiben (die tatsächliche Position der unspezifizierten Bits kann vorab vereinbart oder zwischen den Konversern kommuniziert werden). Wir können einen Zufallswert R den unspezifizierten Bits zuweisen und einen Wert x = x(P, R) in F erhalten. Dieser x Wert wird als rechtshändige Seite der Gleichung 48 evaluiert. Wie Durchschnittsfachleuten bekannt, ist die Wahrscheinlichkeit, dass es einen linkshändigen y-Wert gibt, der die Gleichungsbedingung von Gleichung 48 erfüllt, ein Halb, und falls, kann das Auffinden eines passenden y-Werts mit bekannten Verfahren gemacht werden. Falls kein passender y-Wert existiert, wiederholen wir den Prozess mit einer neuen Zufallszahl R, etc. Die Wahrscheinlichkeit, dass der Prozess wiederholt für eine große Zahl aufeinanderfolgender Versuche versagen würde, ist klein. Der obige Ansatz beschreibt, wie f–1 vom zweiten Konverser berechnet werden kann. Der ersten Konverser berechnet f durch einfaches Verwerfen der y-Koordinate des elliptischen Kurvenpunkts und durch ebenfalls Verwerfen der Bitpositionen, die den zufällig ausgewählten R-Bits entsprechen.
  • Die oben beschriebenen Prozedur dient lediglich als ein Beispiel dafür, wie Nachrichten als elliptische Kurvenpunkte eingebettet werden, andere Ansätze zur Definition von f sind möglich. In Bezug auf solche Ansätze kann es im Allgemeinen etwas kompliziert sein, anzunehmen, dass die Abbildung immer Punkte auf der elliptischen Kurve erzeugt, die Gleichung 48 erfüllen. Dies schließt die Diskussion bezüglich des ersten beispielhaften Falls für das Auswählen der Abbildungsfunktion f und der Operation "*", die mit Schritten 2803 und 2807 assoziiert sind, ab.
  • Im zweiten beispielhaften Fall für Auswahlen der Abbildungsfunktion f und der Operation "*" ist es nicht notwendig, die Berechnungen in den Schritten 2803 und 2807 auszuführen, um Punkte auf einer elliptischen Kurve zu erzeugen. Somit können Ansätze, die den zweiten hier beschriebenen Fall involvieren, attraktiver sein. Wir beschreiben nunmehr einen beispielhaften Ansatz für den zweiten Fall. Beim zweiten Fall wählt man f als eine Abbildung, die zumindest einen Teil von willkürlichen Werten in F × F auf den Klartextraum abbildet. Das heißt wir produzieren mehr oder weniger willkürlich (x, y) Koordinatenpaare, die nicht notwendigerweise 48 erfüllen. Dies wird so vorgenommen, dass eine eindeutige Verschlüsselung fast immer garantiert ist (somit muss das Feld F im Allgemeinen zumindest so groß wie die Quadratwurzel der Größe des Klartextraums sein). Das Auffinden eines solchen f ist einfach und Durchschnittsfachleuten vertraut. Beispielsweise kann, wenn P als ein Satz von Basiskoeffizienten interpretiert wird, die als Binärstring codiert sind, f im Wesentlichen die Identitätsabbildung sein. Im zweiten Fall ist die Kombinationsoperation * definiert, einfach eine koordinatenweise Multiplikation in F zu sein, d. h. (a, b)*(x, y) = (ax, by). Für den zweiten Konverser (in dieser beispielhaften Beschreibung den Empfänger) ist die Operation "/" entsprechend als koordinatenweise Division in F definiert (der inversen Operation von "*"). Der Ansatz der Verwendung von koordinatenweiser Multiplikation und Division anstelle elliptischer Kurvenoperationen ist in der Literatur als das Menezes-Vanstone-Verfahren bekannt.
  • In beiden der mit den zwei Fällen zur Auswahl der Abbildungsfkunktion f assoziierten oben beschriebenen Ansätze findet die Parallelverarbeitung von, multiple Gruppen von Basiskoeffizienten repräsentierenden Datenbits wie zuvor beschrieben statt.
  • Man beachte, dass bei allen der drei oben beschriebenen Ansätze (bezüglich 27 und 28 (modifiziertes EIGamal über F, modifiziertes EIGamal über eine elliptische Kurve E oder F mit Klartexteinbettung in E und modifiziertes EIGamal über eine elliptische Kurve E über F ohne Klartexteinbettung in E) die Funktion f als eine Abbildung zumindest eines Teils eines eindimensionalen Vektorraums (d. h. F) oder zweidimensionalen Vektorraums über F (z. B. F × F) auf den Satz von Klartextnachrichten angesehen werden kann.
  • Bei einem anderen beispielhaften Aspekt kann das Verfahren 2800 so modifiziert sein, dass anstelle einer Abbildung zumindest eines Teils des zweidimensionalen Vektorraums über F (d. h. F × F) auf den Satz von Klartextnachrichten die Abbildungsfunktion f so ausgewählt werden kann, dass f zumindest einen Teil eines dreidimensionalen Vektorraums über F auf dem Satz von Klartextnachrichten abbildet. In diesem Aspekt werden projektive Koordinaten in einem dreidimensionalen Vektorraum in Verbindung mit einem elliptischen Kurvenansatz verwendet. Andere Aspekte des Ansatzes bleiben dieselben wie die in 28 für das beispielhafte Verfahren 2800 dargestellten. Projektive Koordinaten sind Durchschnittsfachleuten bekannt und es ist keine weitere Diskussion des Modifizierens von Verfahren 2800 gemäß diesem Aspekt notwendig.
  • Verschlüsselung, Entschlüsselung und/oder Authentifizierung können unter Verwendung eines sicheren Schlüssels, der von einem der Konverser ausgewählt wird und der über einen sicheren Kanal ausgetauscht wird, wie etwa dem in 24A illustrierten sicheren Kanal 2421, implementiert werden. Beispielsweise können entweder der erste Konverser oder der zweite Konverser einen sicheren Schlüssel unter Verwendung der ersten Schlüsselquelle 2409 oder der zweiten Schlüsselquelle 2413 erzeugen. Solch ein sicherer Schlüssel kann dann über den sicheren Kanal 2421 (z. B. unter Verwendung eines Kuriers) ausgetauscht werden. Verschlüsselung und Entschlüsselung können dann unter Verwendung der FFCUs 2411 und 2415, die in 24A illustriert sind, ausgeführt werden. In dieser Hinsicht kann der in 24B referenzierte kryptographische Algorithmus jeglicher geeignete Verschlüsselungs-Algorithmus sein, der gemäß dem Verfahren 2450 implementiert werden kann, und verschlüsselte Information kann dadurch über den unsicheren Kanal 2417 übertragen werden. Als ein anderes Beispiel kann die Information unter Verwendung irgendeines konventionellen Verschlüsselungs-Algorithmus verschlüsselt werden und der Verschlüsselungs-Algorithmus, der in 24B referenziert wird, kann irgendein geeigneter Authentifizierungs-Algorithmus sein, der auf einem über den sichere Kanal 2421 ausgetauschten sicheren Schlüssel basiert und der gemäß dem Verfahren 2450 implementiert werden kann. Das Implementieren eines geeigneten Authentifizierungs-Algorithmus gemäß Verfahren 2450 liegt innerhalb der Fähigkeiten eines Durchschnittsfachmanns im Hinblick auf die hierin bereitgestellten Lehren.
  • Eine Variante der öffentlichen EIGamal Schlüssel-Kryptographie kann unter Verwendung des erfinderischen vorliegenden Ansatzes über ein finites Feld F implementiert werden, wobei F das finite Feld GF(pk) oder ein Erweiterungsfeld von GF(pk) ist (wobei p eine ungerade Primzahl ist), um digitale Signaturen unter Verwendung des in 24A illustrierten kryptographischen Systems 2400 bereitzustellen. Beispielsweise wird nunmehr eine auf dem Basis DSA (Digitaler Signatur Algorithmus) basierende Variante beschrieben. Es gibt auch andere Varianten.
  • Wieder einmal werden eine über F definierte Gruppe, eine Menge g (z. B. ein Element von F oder ein Punkt auf einer elliptischen Kurve über F) und eine Abbildungsfunktion f von ersten und zweiten Konversern vereinbart, wie oben in Bezug auf die beispielhafte Implementation von EIGamal öffentlicher Schlüssel-Kryptographie über GF(pk) in 26 beschrieben. Zusätzlich erzeugt der ersten Konverser einen privaten Schlüssel xA und einen öffentlichen Schlüssel yA, wie oben beschrieben. Um eine Nachricht P zu signieren (z. B. Klartext oder Chiffretext, der als Ganzzahl codiert ist) kann der erste Konverser wie folgt vorgehen. Der erste Konverser erzeugt eine Zahl r (z. B. eine zufällig oder pseudo-zufällig erzeugte Ganzzahl) unter Verwendung beispielsweise eines Zufallszahlengenerators oder eines Pseudo-Zufallszahlengenerators, der beispielsweise in der Schlüsselquelle 2409 inkorporiert sein kann, und berechnet a = gr unter Verwendung der ersten FFCU 2411 durch Anlegen der Exponentierungsfunktion 32 in Verbindung mit entweder der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation. Die Zahl r soll nicht mit anderen Konversern geteilt werden und kann in dieser Hinsicht als eine Geheimzahl angesehen werden. Der erste Konverser berechnet dann eine Lösung für die Gleichung P = –xA*f(a) + r*b(mod |G|) (50) wobei * eine übliche Multiplikation ist, um eine Menge b zu finden, die Gleichung 50 erfüllt. Nur vom ersten Konverser, der xA kennt, wird angenommen, dass er in der Lage ist, dies zu tun. Die Signatur der Nachricht P wird dann als ein Paar (a, b) definiert.
  • Der erste Konverser kann dann die Klartextnachricht P unter Verwendung der ersten FFCU 2411 durch Anwenden eines der oben beschriebenen kryptographischen Ansätze signieren, wodurch eine Signatur, (a, b) erzeugt wird, und sendet P und das Paar (a, b) über den unsicheren Kanal 2417 an den zweiten Konverser.
  • Um zu verifizieren, dass das Paar (a, b) eine gültige Signatur auf P des ersten Konversers repräsentiert, berechnet der zweite Konverser die folgenden Mengen u und v u = P*b–1(mod |G|) (51) v = f(a)*b–1(mod |G|) (52)wobei b–1 das multiplikative Inverse von b ist und * Multiplikation repräsentiert (konventionelle Multiplikation). Der zweite Konverser berechnet dann gu(yA)v unter Verwendung der zweiten FFCU 2415 durch Anwenden der Exponentierungsfunktion 32 in Verbindung mit den erfinderischen Ansätzen zum Speichern mehrerer Gruppen von ersten Datenbits, die Koeffizienten von yA repräsentieren, in einem ersten Register, Speichern von mehreren Gruppen von zweiten Datenbits, die einen Koeffizienten einer Repräsentation von g repräsentieren, in einem zweiten Register, dem Verarbeiten von mehreren Gruppen von ersten Datenbits parallel und dem Verarbeiten von mehreren Gruppen von zweiten Datenbits parallel. Der zweite Konverser akzeptiert die Signatur als gültig, falls und nur falls gu(yA)v = a. Dementsprechend können Berechnungsansätze, welche das Feld GF(pk) gemäß der vorliegenden Erfindung involvieren, auf digitalen Signaturen angewendet werden und die entsprechenden Berechnungen können in einer Weise ausgeführt werden, die viel schneller ist als konventionelle Ansätze, die GF(pk) involvieren, oder in einer Weise, die eine signifikant größere Sicherheit gegenüber gefälschten Signaturen für denselben Berechnungsaufwand bereitstellt.
  • Die Verwendung von elliptischen Kurven über F gemäß der vorliegenden Erfindung ist auch eine mögliche Einstellung für digitale Signaturen. Im Falle elliptischer Kurven sind Differenzen, die im Vergleich zur oben beschriebenen Implementation von digitalen Signaturen erwogen werden muss, vollständig analog zu den Unterschieden bei der Implementation von öffentlicher Schlüssel-Kryptographie, wo g ein Element eines finiten Felds F ist (27) und wo g ein Punkt auf einer elliptischen Kurve über F ist (28). Dementsprechend ist keine weitere Diskussion der Verwendung elliptischer Kurven in Verbindung mit digitalen Signaturen notwendig.
  • Es kann ein Pseudo-Zufallsgenerator vorgesehen sein, der Berechnungen im Feld GF(pt) ausführt (wobei p eine ungerade Primzahl ist) unter Verwendung der hier zuvor beschriebenen Berechnungsansätze. Ein Zufallszahlengenerator expandiert deterministisch kurze Zufallszahlsaaten auf längere Ketten, die als zufällig erscheinen. Viele konventionelle Konstruktionen sind Durchschnittsfachleuten bekannt und solche Konstruktionen können beispielsweise auf finiten Feldern und elliptischen Kurven basieren.
  • Es sei beispielsweise F = GF(pn) ein finites Feld, das als ein Erweiterungsfeld von GF(pt) für einige t = n/w definiert ist, wobei w eine Ganzzahl ist. Es sei g ein Feldelement von F, das eine hinreichend große Untergruppe von Fs multiplikativen Gruppen erzeugt. Zusätzlich sei f eine Funktion, wie oben in Bezug auf die Anwendung der vorliegenden erfinderischen Ansätze auf EIGamal öffentliche Schlüssel-Kryptographie beschrieben. Schließlich sei Tr eine Spurenabbildung, die Fachleuten bekannt ist, die Elemente von F auf Elemente von GF(pt) gemäß der folgenden Gleichung abbildet Tr(x) = x + xpt + xp2t + ... + xpn-1 (53) für jedes x in F. Schließlich sei die Funktion I(x) als I(x) = gx definiert.
  • Beim Eingeben einer Zufallssaat s (als eine binär codierte Ganzzahl) ist der Generator nunmehr wie folgt definiert. Es sei x0 = I(s) und es sei xi+1 = I(f(xj)) für i = 0, 1, 2, ..., T. Im Prinzip kann T als sehr groß eingesetzt werden, z. B. von einer Größenordnung vergleichbar der Quadratwurzel der Feldgröße, obwohl ein kleineres T eine größere Sicherheit ergeben wird. Zusätzlich definiert man die Ausgabe des Pseudo-Zufallszahlengenerators als eine Konkatenation von Tr(x0), Tr(x1), Tr(x2), .... Dieser Ansatz stellt eine Ausgabe bereit, die aus Pseudo-Zufallselementen von GF(pt) besteht. Falls als Ausgabe eine binäre Kette erwünscht ist, wird eine geeignete Umwandlungsfunktion an die Ausgaben angelegt. Unter der Annahme, dass das diskrete Logarithmusproblem in der Gruppe nicht nachverfolgbar ist (d. h. rechenmäßig nicht machbar) wird der oben beschriebenen Pseudo-Zufallszahlengenerator sicher sein. Wie oben angezeigt, setzt der Pseudo-Zufallszahlengenerator verschiedene Operationen in GF(pt) ein, einschließlich Addition, Multiplikation und Exponentierung, und die zuvor beschriebenen erfinderischen Ansätze, die entweder auf der Einzel-Schutz-Bit-Repräsentation oder der Multi-Schutz-Bit-Repräsentation basieren, können verwendet werden, um die notwendigen Berechnungen effizient auszuführen.

Claims (25)

  1. Vorrichtung zum Ausführen von Berechnungen, die Feldelemente eines ungerad-charakteristischen finiten Feldes GF(pk) involvieren, wobei die Vorrichtung umfasst: – einen Speicher (101); und – eine Verarbeitungseinheit (105), die mit dem Speicher gekoppelt ist, die eine w-Bit Universal-ALU und zwei binäre w-Bit Universal-Register (107 bis 121) umfasst, wobei die Verarbeitungseinheit Binärdaten, die irgendwelche zwei Feldelemente eines ungerad-charakteristischen finiten Feldes GF(pk) repräsentieren, in einem ersten und einem zweiten w-Bit-Binärregister speichert, wobei p eine ungerade Primzahl ist, das Feldelement k Koeffizienten gemäß einer Polynominalbasis-Repräsentation umfasst, die Binärdaten mehrere Gruppen von Datenbits umfassen, wobei jede Gruppe (201-1) von Datenbits einer assoziierten der k-Koeffizienten repräsentiert, wobei die Speicherung so ist, dass zumindest ein Schutz-Bit (203-1) angrenzend am signifikantesten Bit jeder Gruppe von Datenbits positioniert ist, wobei jede Gruppe von Datenbits von einer angrenzenden Gruppe von Datenbits durch zumindest ein entsprechendes Schutz-Bit getrennt ist, und – Ausführen einer festen Anzahl von w-Bit ALU-Operationen an Inhalten der Register, wodurch das Ergebnis einer finiten Feldoperation erzeugt wird.
  2. Vorrichtung nach Anspruch 1, wobei die Verarbeitungseinheit jedem des zumindest einen Schutz-Bits einen Anfangswert von Null zuweist.
  3. Vorrichtung nach Anspruch 1, wobei mehrere Schutz-Bits angrenzend an das signifikanteste Bit jeder Gruppe von Datenbits positioniert werden.
  4. Vorrichtung nach Anspruch 1, wobei die finite Feldoperation eine finite Feldaddition ist.
  5. Vorrichtung nach Anspruch 1, wobei die finite Feldoperation eine finite Feldmultiplikation ist.
  6. Vorrichtung nach Anspruch 4, wobei p = 2m – d, d eine ungerade Ganzzahl größer oder gleich 3 und kleiner als 2m – 1 ist, m eine Ganzzahl größer oder gleich 3 ist, jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits eine Größe von m + 1 Bits mit m > 1 hat, wobei das Ausführen einer festen Anzahl von W-Bit Operationen das Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + d*{((a + b) & M2) >> m},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, * Multiplikation repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und c ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  7. Vorrichtung nach Anspruch 4, wobei p = 2m + d, d eine ungerade Ganzzahl größer oder gleich 3, m eine Ganzzahl größer oder gleich 3 und kleiner als 2m – 1 ist, wobei jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits eine Größe von m + 2 Bits aufweist und p ≠ 2N ± 1 für jegliche Ganzzahl N, wobei die Ausführung einer festen Anzahl von w-Bit Operationen das Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + {P1 – d*(((a + b) & M2) >> m)},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, P1 eine dritte vorgegebene Binär-Quantität ist, die Nullwerte an Bit-Positionen aufweist, die Bit-Positionen der ersten Schutzbits entsprechen, die im ersten Register gespeichert sind, und Binärwerte aufweisen, welche die Quantität 2m + d an Bit-Positionen repräsentieren, die Bit-Positionen jeder Gruppe von ersten, im ersten Register gespeicherten Datenbits entsprechen, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, – Subtraktion repräsentiert, * Multiplikation repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  8. Vorrichtung nach Anspruch 4, wobei p = 2m – 1, m eine Ganzzahl größer gleich 2 ist und jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits von m Bit Größe ist, wobei das Ausführen einer festen Anzahl von w-Bit-Operationen das Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + {((a + b) & M2) >> m},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  9. Vorrichtung nach Anspruch 4, wobei p = 2m + 1, m eine Ganzzahl größer gleich 2 ist und jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits eine Größe von m + 2 Bits hat, wobei die Ausführung einer festen Anzahl von w-Bit-Operationen das Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + {P1 – (((a + b) & M2) >> m)},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, P1 eine dritte vorgegebene Binär-Quantität ist, die Nullwerte an Bit-Positionen aufweist, die Bit-Positionen der ersten Schutzbits entsprechen, die im ersten Register gespeichert sind, und Binärwerte aufweisen, welche die Quantität 2m + 1 an Bit-Positionen repräsentieren, die Bit-Positionen jeder Gruppe von ersten, im ersten Register gespeicherten Datenbits entsprechen, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, – Subtraktion repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  10. Vorrichtung nach Anspruch 5, wobei die Ausführung einer festen Anzahl von w-Bit Operationen das Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = ANTILOG{(DLOG(a) + DLOG(b)) mod (pk – 1)},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein die dritten Binärdaten umfassendes Ergebnis repräsentiert, DLOG eine Nachschlagoperation aus einer Nachschlagtabelle diskreter Logarithmen aller Nicht-Null-Feldelemente von GF(pk) repräsentiert, wobei die Nachschlagtabelle in binärer Form in einer Weise indiziert ist, die einer Weise entspricht, in der die ersten Binärdaten und die zweiten Binärdaten in den ersten bzw. zweiten Registern gespeichert sind, ANTILOG eine Nachschlagoperation aus einer Nachschlagtabelle von Antilogarithmen repräsentiert, wobei ANTILOG(x) = gx, wobei g ein Erzeuger von GF(pk) so ist, dass ein Nicht-Null-Feldelement von GF(pk) als gx für irgendeine Ganzzahl x geschrieben werden kann, wobei 0 ≤ x ≤ pk – 1, + Addition repräsentiert, mod (pk – 1) einen modularen arithmetischen Modulo pk – 1 repräsentiert, und ein von den dritten Binärdaten repräsentiertes drittes Feldelement, das einem finiten Feldprodukt in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  11. Vorrichtung nach Anspruch 1, wobei die Binärdaten das Feldelement in seiner Gesamtheit repräsentieren und wobei die Ausführung zumindest einer Operation das Berechnen einer durch die Gleichung an = ANTILOG{(n·(DLOG{a})) mod (pk – 1)},gegebene Menge umfasst, wobei a die Inhalte des Registers repräsentiert, DLOG eine Nachschlagoperation aus einer Nachschlagtabelle diskreter Logarithmen aller Nicht-Null-Feldelemente von GF(pk) repräsentiert, wobei die Nachschlagtabelle in binärer Form in einer Weise indiziert ist, die einer Weise entspricht, in der die ersten Binärdaten und die zweiten Binärdaten in den ersten bzw. zweiten Registern gespeichert sind, ANTILOG eine Nachschlagoperation aus einer Nachschlagtabelle von Antilogarithmen repräsentiert, wobei ANTILOG(x) = gx, wobei g ein Erzeuger von GF(pk) so ist, dass ein Nicht-Null-Feldelement von GF(pk) als gx für irgendeine Ganzzahl x geschrieben werden kann, wobei 0 ≤ x ≤ pk – 1, mod (pk – 1) einen modularen arithmetischen Modulo pk – 1 repräsentiert, und an Binärdaten repräsentiert, welche die Exponentierung des Feldelementes zu n-ten Potenz repräsentiert.
  12. Verfahren zum Prozessieren von Binärdaten, die Feldelemente eines Ungerad-charakteristischen finiten Feldes GF(pk) repräsentieren, umfassend: Speichern von ersten, ein erstes Feldelement eines ungerad-charakteristischen finiten Feldes GF(pk) repräsentierenden, ersten Binärdaten in einem zusammenhängenden Register, wobei p eine ungerade Primzahl ist, wobei das erste Feldelement k erste Koeffizienten in einer Polynom-Basis-Repräsentation umfasst, die ersten Binärdaten k Gruppen von ersten Datenbits umfassen, wobei jede Gruppe von ersten Datenbits eine mit den k ersten Koeffizienten assoziierte umfasst; Speichern von zweiten Binärdaten, die ein zweites Feldelement des ungerad-charakteristischen finiten Feldes GF(pk) repräsentieren, in einem zweiten zusammenhängenden Register, wobei das zweite Feldelement k zweite Koeffizienten gemäß der Polynom-Basis-Repräsentation umfasst, die zweiten Binärdaten k Gruppen von zweiten Datenbits umfassen, wobei jede Gruppe von zweiten Datenbits eine assoziierte der k zweiten Koeffizienten repräsentiert, wobei das Speichern das Strukturieren jeder der k Gruppen von Datenbits im entsprechenden Register umfasst, so dass zumindest ein erstes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von Datenbits positioniert ist, wobei jede Gruppe von Datenbits von einer angrenzenden Gruppe von Datenbits durch ein entsprechendes zumindest ein Schutz-Bit getrennt ist; und Ausführen zumindest einer Operation an Inhalten des ersten Registers und. Inhalten des zweiten Registers, so dass die k Gruppen von ersten Datenbits parallel prozessiert werden und so, dass die k Gruppen von zweiten Datenbits parallel prozessiert werden, wodurch dritte Binärdaten erzeugt werden.
  13. Verfahren nach Anspruch 12, wobei mehrere erste Schutz-Bits angrenzend an das signifikanteste Bit jeder Gruppe von ersten Datenbits positioniert werden und wobei mehrere zweite Schutz-Bits angrenzend an das signifikanteste Bit jeder Gruppe von zweiten Datenbits positioniert werden.
  14. Verfahren nach Anspruch 12, weiterhin umfassend Speichern der dritten Binärdaten in einem dritten Register, wobei die dritten Binärdaten k Gruppen von dritten Datenbits umfassen, die im dritten Register so strukturiert sind, dass zumindest ein drittes Schutz-Bit angrenzend an das signifikanteste Bit jeder Gruppe von dritten Datenbits positioniert ist, wobei jede Gruppe von dritten Datenbits von einer angrenzenden Gruppe von dritten Datenbits durch zumindest ein entsprechendes drittes Schutz-Bit getrennt ist, die dritten Binärdaten ein drittes Feldelement von GF(pk) repräsentieren, das dritte Feldelement k dritte Koeffizienten gemäß der polynominalen Basis-Repräsentation umfasst, und jede Gruppe von dritten Datenbits einen assoziierten der k dritten Koeffizienten repräsentiert.
  15. Verfahren nach Anspruch 12, wobei Bitpositionen der ersten Schutz-Bits im ersten Register Bitpositionen der zweiten Schutz-Bits im zweiten Register entsprechen, und Bitpositionen der Gruppe der ersten Datenbits im ersten Register Bitpositionen der Gruppe von zweiten Datenbits im zweiten Register entsprechen.
  16. Verfahren nach Anspruch 12, wobei p = 2m – d, d eine ungerade Ganzzahl größer gleich 3 und kleiner als 2m – 1 ist, m eine Ganzzahl größer gleich 3 ist, jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits eine Größe von m + 1 Bits hat und p ≠ 2N ± 1 für jede Ganzzahl N.
  17. Verfahren nach Anspruch 16, wobei das Ausführen zumindest einer Operation an Inhalten des ersten Registers und Inhalten des zweiten Registers ein Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + d*{((a + b) & M2) >> m},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, * Multiplikation repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  18. Verfahren nach Anspruch 12, wobei p = 2m + d, d eine ungerade Ganzzahl größer oder gleich 3, m eine Ganzzahl größer oder gleich 3 und kleiner als 2m – 1 ist, wobei jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits eine Größe von m + 2 Bits aufweist und p ≠ 2N ± 1 für jegliche Ganzzahl N.
  19. Verfahren nach Anspruch 18, wobei das Ausführen zumindest einer Operation an Inhalten des ersten Registers und Inhalten des zweiten Registers ein Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + {P1 – d*(((a + b) & M2) >> m)},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, P1 eine dritte vorgegebene Binär-Quantität ist, die Nullwerte an Bit-Positionen aufweist, die Bit-Positionen der ersten Schutzbits entsprechen, die im ersten Register gespeichert sind, und Binärwerte aufweisen, welche die Quantität 2m + d an Bit-Positionen repräsentieren, die Bit-Positionen jeder Gruppe von ersten, im ersten Register gespeicherten Datenbits entsprechen, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, * Multiplikation repräsentiert, – Subtraktion repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  20. Verfahren nach Anspruch 12, wobei p = 2m – 1, m eine Ganzzahl größer gleich 2 ist und jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits von m Bit Größe ist.
  21. Verfahren nach Anspruch 20, wobei das Ausführen zumindest einer Operation an Inhalten des ersten Registers und Inhalten des zweiten Registers ein Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + {((a + b) & M2) >> m},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  22. Verfahren nach Anspruch 12, wobei p = 2m + 1, m eine Ganzzahl größer gleich 2 ist und jede Gruppe von ersten Datenbits und jede Gruppe von zweiten Datenbits eine Größe von m + 2 Bits hat.
  23. Verfahren nach Anspruch 22, wobei das Ausführen zumindest einer Operation an Inhalten des ersten Registers und Inhalten des zweiten Registers ein Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = {(a + b) & M1} + {P1 – (((a + b) & M2) >> m)},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein Ergebnis, das die dritten Binärdaten umfasst, repräsentiert, M1 eine erste vorbestimmte Binär-Quantität mit Nullwerten an Bit-Positionen ist, die Bit-Positionen der im ersten Register gespeicherten Schutz-Bits entsprechen und Binärwerte aufweisen, welche die Quantität 2m – 1 an Bit-Positionen repräsentieren, welche Bit-Positionen jeder Gruppe von ersten Datenbits, die im ersten Register gespeichert sind, entsprechen, M2 eine zweite vorgegebene Binär-Quantität ist, welche durch M2 = NOT(M1) gegeben ist, P1 eine dritte vorgegebene Binär-Quantität ist, die Nullwerte an Bit-Positionen aufweist, die Bit-Positionen der ersten Schutzbits entsprechen, die im ersten Register gespeichert sind, und Binärwerte aufweisen, welche die Quantität 2m + 1 an Bit-Positionen repräsentieren, die Bit-Positionen jeder Gruppe von ersten, im ersten Register gespeicherten Datenbits entsprechen, NOT eine bitweise logische Negation repräsentiert, + Addition repräsentiert, – Subtraktion repräsentiert, & ein bitweises logisches UND repräsentiert, >> m eine bitweise Verschiebung nach rechts um m Bits repräsentiert, und ein drittes Feldelement ist, das durch die dritten Binärdaten repräsentiert wird, das einer finiten Feldsumme in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  24. Verfahren nach Anspruch 12, wobei das Ausführen zumindest einer Operation an Inhalten des ersten Registers und Inhalten des zweiten Registers ein Kombinieren der Inhalte des ersten Registers und der Inhalte des zweiten Registers gemäß der Gleichung umfasst: c = ANTILOG{(DLOG(a) + DLOG(b)) mod (pk – 1)},wobei a die Inhalte des ersten Registers repräsentiert, b die Inhalte des zweiten Registers repräsentiert, c ein die dritten Binärdaten umfassendes Ergebnis repräsentiert, DLOG eine Nachschlagoperation aus einer Nachschlagtabelle diskreter Logarithmen aller Nicht-Null-Feldelemente von GF(pk) repräsentiert, wobei die Nachschlagtabelle in binärer Form in einer Weise indiziert ist, die einer Weise entspricht, in der die ersten Binärdaten und die zweiten Binärdaten in den ersten bzw. zweiten Registern gespeichert sind, ANTILOG eine Nachschlagoperation aus einer Nachschlagtabelle von Antilogarithmen repräsentiert, wobei ANTILOG(x) = gx, wobei g ein Erzeuger von GF(pk) so ist, dass ein Nicht-Null-Feldelement von GF(pk) als gx für irgendeine Ganzzahl x geschrieben werden kann, wobei 0 ≤ x ≤ pk – 1, + Addition repräsentiert, mod (pk – 1) einen modularen arithmetischen Modulo pk – 1 repräsentiert, und ein von den dritten Binärdaten repräsentiertes drittes Feldelement, das einem finiten Feldprodukt in GF(pk) des ersten Feldelements und des zweiten Feldelementes entspricht.
  25. Verfahren nach Anspruch 12, wobei die Binärdaten das Feldelement in seiner Gesamtheit repräsentieren und wobei die Ausführung zumindest einer Operation das Berechnen einer durch die Gleichung an = ANTILOG{(n·(DLOG{a})) mod (pk – 1)},gegebene Menge umfasst, wobei a die Inhalte des Registers repräsentiert, DLOG eine Nachschlagoperation aus einer Nachschlagtabelle diskreter Logarithmen aller Nicht-Null-Feldelemente von GF(pk) repräsentiert, wobei die Nachschlagtabelle in binärer Form in einer Weise indiziert ist, die einer Weise entspricht, in der die ersten Binärdaten und die zweiten Binärdaten in den ersten bzw. zweiten Registern gespeichert sind, ANTILOG eine Nachschlagoperation aus einer Nachschlagtabelle von Antilogarithmen repräsentiert, wobei ANTILOG(x) = gx, wobei g ein Erzeuger von GF(pk) so ist, dass ein Nicht-Null-Feldelement von GF(pk) als gx für irgendeine Ganzzahl x geschrieben werden kann, wobei 0 ≤ x ≤ pk – 1, mod (pk – 1) einen modularen arithmetischen Modulo pk – 1 repräsentiert, und an Binärdaten repräsentiert, welche die Exponentierung des Feldelementes zu n-ten Potenz repräsentiert.
DE60316586T 2002-10-17 2003-10-07 Effiziente arithmetik in galois-feldern ungerader charakterstik auf binärer hardware Expired - Lifetime DE60316586T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/271,947 US7724898B2 (en) 2002-10-17 2002-10-17 Cryptography using finite fields of odd characteristic on binary hardware
US271947 2002-10-17
PCT/SE2003/001560 WO2004036413A2 (en) 2002-10-17 2003-10-07 Efficient arithmetic in finite fields of odd characteristic on binary hardware

Publications (2)

Publication Number Publication Date
DE60316586D1 DE60316586D1 (de) 2007-11-08
DE60316586T2 true DE60316586T2 (de) 2008-07-24

Family

ID=32106422

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60316586T Expired - Lifetime DE60316586T2 (de) 2002-10-17 2003-10-07 Effiziente arithmetik in galois-feldern ungerader charakterstik auf binärer hardware

Country Status (6)

Country Link
US (1) US7724898B2 (de)
EP (1) EP1552382B1 (de)
AT (1) ATE374397T1 (de)
AU (1) AU2003267913A1 (de)
DE (1) DE60316586T2 (de)
WO (1) WO2004036413A2 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100486726B1 (ko) * 2002-11-09 2005-05-03 삼성전자주식회사 유한 체에서의 기저 변환 방법 및 기저 변환 장치
FR2867289A1 (fr) * 2004-03-02 2005-09-09 France Telecom Procede et dispositif pour accomplir une operation cryptographique
DE102005028662B4 (de) * 2005-03-04 2022-06-02 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie
US7983415B2 (en) * 2006-12-19 2011-07-19 King Fahd University Of Petroleum And Minerals Method for performing iterative scalar multiplication which is protected against address bit attack
US8607070B2 (en) * 2006-12-20 2013-12-10 Kingston Technology Corporation Secure storage system and method of use
CN101617351B (zh) * 2007-01-19 2011-06-22 三菱电机株式会社 密文生成装置、密码通信系统以及群参数生成装置
US8010768B2 (en) * 2007-05-09 2011-08-30 Kingston Technology Corporation Secure and scalable solid state disk system
US8499168B2 (en) * 2007-05-09 2013-07-30 Kingston Technology Corporation Secure and scalable solid state disk system
US8527781B2 (en) * 2007-05-09 2013-09-03 Kingston Technology Corporation Secure and scalable solid state disk system
CA2688592C (en) * 2007-10-01 2014-04-15 Research In Motion Limited Substitution table masking for cryptographic processes
JP5079024B2 (ja) * 2008-02-20 2012-11-21 三菱電機株式会社 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム
WO2009141756A2 (en) * 2008-05-20 2009-11-26 Koninklijke Philips Electronics N.V. Cryptographic system
JP5354994B2 (ja) * 2008-08-25 2013-11-27 株式会社東芝 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
US8498411B1 (en) 2008-12-12 2013-07-30 Emc Corporation Using multiples above two with running totals and reference values other than 0 and 2 (window size) in elliptic curve cryptography scalar multiplication acceleration tables
US7773000B1 (en) 2009-02-27 2010-08-10 Red Hat, Inc. Efficient coding of integers in non-power-of-two ranges
WO2011148558A1 (ja) * 2010-05-28 2011-12-01 日本電気株式会社 署名生成装置、署名方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体
TW201243643A (en) * 2011-04-22 2012-11-01 Inst Information Industry Hierarchical encryption/decryption device and method thereof
CA2838203C (en) 2011-06-06 2021-04-06 Certicom Corp. Squaring binary finite field elements
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
CN104813383A (zh) * 2013-01-16 2015-07-29 三菱电机株式会社 信息处理装置和信息处理方法以及程序
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
US9553723B2 (en) * 2014-11-14 2017-01-24 Unsene, ehf. Multi-dimensional encryption
US11755288B2 (en) * 2016-11-08 2023-09-12 Koninklijke Philips N.V. Secure transformation from a residue number system to a radix representation
WO2020036598A1 (en) * 2018-08-16 2020-02-20 Pqsecure Technologies, Llc An efficient architecture and method for arithmetic computations in post-quantum cryptography
US11206136B1 (en) * 2020-05-27 2021-12-21 Nxp B.V. Method for multiplying polynomials for a cryptographic operation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2512270A1 (de) * 1975-03-20 1976-09-23 Siemens Ag Steuereinheit eines durch mikroprogramme steuerbaren prozessors einer datenverarbeitungsanlage und verfahren zu ihrem betrieb
US4200770A (en) * 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
JPS588348A (ja) * 1981-07-07 1983-01-18 Sony Corp 出力表示用メモリの制御回路
EP0080528A1 (de) 1981-11-30 1983-06-08 Omnet Associates Berechnungsverfahren und Gerät für Arithmetik endlicher Felder
EP0085130A1 (de) 1982-02-02 1983-08-10 Omnet Associates Verfahren und Einrichtung zur Aufrechterhaltung der Geheimhaltung von durch öffentliche Übertragung übermittelten Nachrichten
US4587657A (en) * 1983-12-16 1986-05-06 Rockwell International Corporation Suppression of high-frequency acoustic waves in E-beam lasers
US4875211A (en) 1986-12-10 1989-10-17 Matsushita Electric Industrial Co., Ltd. Galois field arithmetic logic unit
US4891781A (en) * 1987-03-04 1990-01-02 Cylink Corporation Modulo arithmetic processor chip
EP0804758B1 (de) * 1994-07-29 2005-11-09 Certicom Corp. Verschlüsselungssystem für elliptische kurve
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5854759A (en) * 1997-05-05 1998-12-29 Rsa Data Security, Inc. Methods and apparatus for efficient finite field basis conversion
US7069287B2 (en) * 2000-09-19 2006-06-27 Worcester Polytechnic Institute Method for efficient computation of odd characteristic extension fields
DE10107376A1 (de) * 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
US7046803B2 (en) * 2001-10-06 2006-05-16 Samsung Electronics Co., Ltd. Random keystream generation apparatus and method for use in an encryption system

Also Published As

Publication number Publication date
WO2004036413A2 (en) 2004-04-29
WO2004036413A3 (en) 2004-06-24
DE60316586D1 (de) 2007-11-08
ATE374397T1 (de) 2007-10-15
AU2003267913A8 (en) 2004-05-04
AU2003267913A1 (en) 2004-05-04
US7724898B2 (en) 2010-05-25
EP1552382A2 (de) 2005-07-13
US20060072743A1 (en) 2006-04-06
EP1552382B1 (de) 2007-09-26

Similar Documents

Publication Publication Date Title
DE60316586T2 (de) Effiziente arithmetik in galois-feldern ungerader charakterstik auf binärer hardware
EP1141820B1 (de) Verfahren zur beschleunigung kryptographischer operationen auf elliptischen kurven
EP2003546B1 (de) Geschlossene Galois-Körper-Kombination
US7197527B2 (en) Efficient arithmetic in finite fields of odd characteristic on binary hardware
US8184803B2 (en) Hash functions using elliptic curve cryptography
US7907723B2 (en) Device, system and method for fast secure message encryption without key distribution
CN101087195A (zh) 有限域离散对数密码系统的割圆多项式结构
EP2351287B1 (de) Verfahren zum Erzeugen eines kryptografischen Schlüssels, Netzwerk und Computerprogramm dafür
US7912213B2 (en) Device, system and method for fast secure message encryption without key distribution
Banegas et al. DAGS: Key encapsulation using dyadic GS codes
CN110493201B (zh) 一种数据的处理方法、装置和系统
US7243292B1 (en) Error correction using finite fields of odd characteristics on binary hardware
DE102020119569B3 (de) Bereitstellen einer kryptografischen Information
EP4109814A1 (de) Verfahren und system für digitale signaturen unter verwendung von multiplikativen halbgruppen
JPH11109859A (ja) 擬似乱数発生方法および装置
US20040174995A1 (en) Cryptosystems
US11368280B2 (en) Homomorphic encryption using discrete Galois transforms
Mashahdi et al. A non-interactive (t, n)-publicly verifiable multi-secret sharing scheme
DE60023934T2 (de) Verfahren und vorrichtung zur erzeugung einer schlüsselsequenz
RU2793408C1 (ru) Способ блочного шифрования с использованием Кронекерова произведения инволютивных матриц
Gómez-Torrecillas et al. Skew differential Goppa codes and their application to Mceliece cryptosystem
EP1998492A1 (de) Verfahren zur Berechnung von komprimierten RSA-Moduli
CA2263056C (en) Method and apparatus for finite field basis conversion
Howell The Index Calculus Algorithm for Discrete Logarithms
RU2090006C1 (ru) Способ формирования ключа шифрования-дешифрования

Legal Events

Date Code Title Description
8364 No opposition during term of opposition