DE69534603T2 - Verschlüsselungssystem für elliptische kurve - Google Patents

Verschlüsselungssystem für elliptische kurve Download PDF

Info

Publication number
DE69534603T2
DE69534603T2 DE69534603T DE69534603T DE69534603T2 DE 69534603 T2 DE69534603 T2 DE 69534603T2 DE 69534603 T DE69534603 T DE 69534603T DE 69534603 T DE69534603 T DE 69534603T DE 69534603 T2 DE69534603 T2 DE 69534603T2
Authority
DE
Germany
Prior art keywords
correspondent
coordinates
coordinate
curve
point
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
DE69534603T
Other languages
English (en)
Other versions
DE69534603D1 (de
Inventor
C. Ronald MULLIN
A. Scott VANSTONE
B. Gordon AGNEW
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.)
Certicom Corp
Original Assignee
Certicom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Certicom Corp filed Critical Certicom Corp
Publication of DE69534603D1 publication Critical patent/DE69534603D1/de
Application granted granted Critical
Publication of DE69534603T2 publication Critical patent/DE69534603T2/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
    • G06F7/726Inversion; Reciprocal calculation; Division of elements of a finite field
    • 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
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)
  • Error Detection And Correction (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft die Verschlüsselung mit öffentlichem Schlüssel.
  • Die zunehmende Verwendung und Weiterentwicklung der Datenübertragung auf den Gebieten wie Telekommunikation, Netzwerkbetrieb, Zellulare Kommunikation, Funk-Kommunikation, "Smart Card"-Anwendungen, audiovisuelle und Video-Kommunikationen hat zu einem zunehmenden Bedarf an Systemen geführt, die eine Datenverschlüsselung, Authentifizierung und Verifizierung gestatten.
  • Es ist bekannt, dass Daten unter Verwendung eines Schlüsselpaars verschlüsselbar sind, wobei der eine Schlüssel öffentlich und der andere privat ist. Die Schlüssel stehen mathematisch derart in Beziehung, dass mit dem öffentlichen Schlüssel verschlüsselte Daten nur mit dem privaten Schlüssel entschlüsselt werden können, und umgekehrt, wobei mit dem privaten Schlüssel verschlüsselte Daten nur mit dem öffentlichen Schlüssel entschlüsselt werden können. Auf diese Weise kann der öffentliche Schlüssel eines Empfängers derart verfügbar gemacht werden, dass für den Empfänger vorgesehene Daten mit dem öffentlichen Schlüssel verschlüsselt werden können und nur mit dem privaten Schlüssel des Empfängers entschlüsselt werden können, oder umgekehrt, verschlüsselte gesendete Daten als authentisch verifiziert sind, wenn sie mit dem öffentlichen Schlüssel des Senders entschlüsselt werden.
  • Es ist bekannt, dass durch die Verwendung von Berechnungen in einem endlichen Körper, dessen Elemente auf einer elliptischen Kurve liegen, d.h. durch Definieren einer Gruppenstruktur G auf den Lösungen von y2 + xy = x3 + ax2 + b über einem endlichen Körper, das Problem aufgrund der Attribute elliptischer Kurven schwierig ist. Deshalb ist es möglich, ein höheres Sicherheitsmaß für eine gegebene Schlüsselgröße zu erreichen. Alternativ kann ein verkleinerter Schlüssel dazu benutzt werden, ein gewünschtes Maß an Sicherheit zu bewahren.
  • Die durch den Gebrauch elliptischer Kurven geschaffene inhärente Sicherheit wird abgeleitet aus der Besonderheit, dass die Addition zweier Punkte auf der Kurve definiert werden kann als weiterer Punkt, der sich auf der Kurve befindet. In ähnlicher Weise resultiert das Ergebnis der Addition eines Punkts mit sich selbst zu einem weiteren, auf der Kurve liegenden Punkt. Durch Auswählen eines Anfangspunkts auf der Kurve und Multiplizieren des Punkts mit einer ganzen Zahl wird also ein neuer Punkt gewonnen, der auf der Kurve liegt. Dies bedeutet, dass wenn P = (x, y) ein Punkt auf einer elliptischen Kurve über einem endlichen Körper [E(F n / q)] mit x und y jeweils als Vektor aus n Elementen ist, dann von einem weiteren Punkt R ∊ < P > (die von P erzeugte Untergruppe) gilt dP = R. Um ein solches Schema anzugehen, besteht die Aufgabe darin, ein effizientes Verfahren zum Auffinden einer ganzen Zahl d, 0 ≤ d ≤ (Grad von P)–1 derart aufzufinden, dass dP = R. Um ein solches Schema aufzubrechen, besitzen die bislang besten bekannten Algorithmen Laufzeiten von nicht besser als O(√P), mit p als größte Teiler-Primzahl für den Grad der Kurve (die Anzahl von Punkten auf der Kurve).
  • Damit lässt sich in einem kryptografischen System, in welchem die ganze Zahl d geheim bleibt, die Schwierigkeit ausnutzen, um d zu bestimmen.
  • Aus Menezes A J et al. "Elliptic Curve Cryptosystems And Their Implementation", Journal of Cryptology, vol. 6, no. 4, 1. Januar 1992 (1992-01-01), Seiten 209–224, XP002069135 ist es bekannt, Koordinaten eines auf einer elliptischen Kurve liegenden Punkt dadurch zu übermitteln, dass eine x-Koordinate und ein einzelnes Bit der y-Koordinate gesendet werden, woraus die vollständige y-Koordinate durch Berechnungen gewonnen werden kann.
  • Aspekte der Erfindung sind in den beigefügten Ansprüchen angegeben.
  • Im Folgenden wird eine Ausführungsform der Erfindung beispielhaft unter Bezugnahme auf die begleitenden Zeichnungen beschrieben. Es zeigen:
  • 1 ein Diagramm der Übertragung einer verschlüsselten Nachricht von einem Ort zu einem anderen,
  • 2 ein Diagramm eines Verschlüsselungsmoduls, welches in dem in 1 gezeigten Kommunikationssystem verwendet wird,
  • 3 ein Diagramm eines bei dem Verschlüsselungs- und Entschlüsselungsmodul nach 2 verwendeten Prozessors für endliche Körper.
  • 4 ist ein Flussdiagramm, welches die Bewegung der Elemente durch den Prozessor nach 3 bei der Berechnung einer inversen Funktion veranschaulicht.
  • 5 ist ein Flussdiagramm, welches die Bewegung der Elemente durch den Prozessor nach 3 bei der Berechnung der Addition zweier Punkte veranschaulicht.
  • Im Folgenden wird eine Ausführungsform der Erfindung anhand eines EIGamal-Schlüsselaustauschprotokolls und eines Galois-Felds F 155 / 2 zum Erläutern der grundlegenden Prinzipien erläutert. Anschließend werden Verfeinerungen beschrieben.
  • Systemkomponenten
  • Nach 1 soll eine Nachricht M von einem Sender 2 über einen Übertragungskanal 14 zu einem Empfänger 12 übertragen werden. Jeder Sender 10 und Empfänger 12 besitzt ein ihm zugehöriges Verschlüsselungs-/Entschlüsselungsmodul 16 zum Implementieren eines Schlüsselaustauschprotokolls und eines Verschlüsselungs-/Entschlüsselungsalgorithmus.
  • Das Modul ist 16 schematisch in 2 dargestellt und enthält eine arithmetische Einheit 20 zum Durchführen von Berechnungen beim Schlüsselaustausch und bei der Schlüsselerzeugung. Ein Privatschlüsselregister 22 enthält einen Privatschlüssel d, erzeugt als 155 Bit lange Datenkette durch einen Zufallszahlgenerator 24 und verwendet zum Erzeugen eines öffentlichen Schlüssels, der in einem Register 26 für öffentliche Schlüssel gespeichert wird. Ein Basispunktregister 28 enthält die Koordinaten eines Basispunkts P, der in der ausgewählten elliptischen Kurve mit jeder Koordinate (x, y) liegt, dargestellt als 155 Bit lange Datenkette.
  • Jede der Datenketten ist ein Vektor aus Binärziffern, wobei jede Ziffer der Koeffizient eines Elements des endlichen Körpers in der Normalbasisdarstellung der Koordinate ist.
  • Die ausgewählte elliptische Kurve hat die allgemeine Form y2 + xy = x3 + ax2 + b, wobei die Parameter dieser Kurve, nämlich die Koeffizienten a und b, in einem Parameterregister 30 gespeichert sind. Die Inhalte der Register 22, 24, 26, 28 und 30 können unter der Steuerung einer CPU 32 bedarfsweise zu der arithmetischen Einheit 20 transferiert werden.
  • Die Inhalte des Registers für öffentliche Schlüssel 26 stehen auch für den Übertragungskanal 14 bei Empfang einer entsprechenden Anforderung zur Verfügung. In der einfachsten Implementierung arbeitet jedes Verschlüsselungsmodul 16 in einer gemeinsamen Sicherheitszone mit derselben Kurve und demselben Basispunkt, so dass die Inhalte der Register 28 und 30 nicht zugänglich sein müssen. Wenn eine weitere Verfeinerung erforderlich ist, kann allerdings jedes Modul 16 seine eigene Kurve und eigenen Basispunkt auswählen, in welchem Fall die Inhalte der Register 28 und 30 für den Kanal 14 zugänglich sein müssen.
  • Das Modul 16 enthält weiterhin ein Ganzzahlregister 34, welches eine ganze Zahl k, den "Session-Seed", von dem Generator 24 zur Verwendung bei der Verschlüsselungen und beim Schlüsselaustausch aufnimmt. Das Modul 16 besitzt einen Schreib-/Lesespeicher (RAM) 36, der als Zwischenspeicher während Berechnungen fungiert.
  • Das Verschlüsseln der Nachricht M mit einem Chiffrierschlüssel kdP, der von dem öffentlichen Schlüssel dP und der Session-Seed-Ganzzahl k abgeleitet ist, erfolgt in einer Verschlüsselungseinheit 40, die einen ausgewählten Verschlüsselungsalgorithmus implementiert. Ein einfacher wenngleich effektiver Algorithmus besteht in einer XOR-Funktion, welche die Nachricht m mit den 310 Bits des Schlüssels kdP einer Exklusiv-Oder-Verknüpfung unterzieht.
  • Ein alternatives Verschlüsselungsprotokoll behandelt die Nachricht m1, m2, jeweils mit einer Länge von 155 Bits im Fall von F 155 / 2, und bildet eine XOR-Verknüpfung der Nachricht m1, m2 mit den Koordinaten des Session-Schlüssels kdP, um ein Paar Bit-Ketten (m1 ⊕ x0) (m2 ⊕ y0) zu bilden. Zur weiteren Sicherheit wird außerdem ein Paar Körperelemente z1z2 aus den Koordinaten (x0y0) des kdP gebildet.
  • In einer Ausführungsform werden die Elemente z1z2 aus der Aneinanderreihung eines Teils von x0 mit einem Teil von y0 gebildet, beispielsweise z1 = x01||y02 und z2 = x02||y01
    wobei x01 die erste Hälfte der Bit-Kette von x0 ist
    x02 die zweite Hälfte der Bit-Kette von x0 ist
    y01 die erste Hälfte der Bit-Kette von y0 ist
    y02 die zweite Hälfte der Bit-Kette von y0 ist.
  • Die ersten Elemente z1 und z2, die als Körperelemente behandelt werden, werden anschließend mit den jeweiligen Bit-Ketten (m1 ⊕ x0) und (m2 ⊕ y0) multipliziert, um die Bit-Ketten c1c2 des chiffrierten Textes c zu bilden. d.h.c1 = z1 (m1 ⊕ x0) C2 = z2 (m2 ⊕ y0)
  • In einer bevorzugten Implementierung des Verschlüsselungsprotokolls wird anstelle von y0 in der obigen Ausführungsform eine Funktion von x0 verwendet, beispielsweise dient die Funktion x 3 / 0 als die zweite 155-Bit-Kette, so dass c1 = z1 (m1 ⊕ x0) c2 = z2(m2 ⊕ x30 )und Z1 = X01||x302 z2 = X02||x301 wobei x 3 / 01 die erste Hälfte von x 3 / 0 ist und
    x 3 / 02 die zweite Hälfte von x 3 / 0 ist.
  • Dieses Protokoll ist auch anwendbar auf die Implementierung einer Verschlüsselung mit elliptischer Kurve in einem anderen Körper als F m / 2 beispielsweise ZP oder allgemein F m / p.
  • Wenn ZP verwendet wird, kann es notwendig sein, die Werte von x0 und y0 oder x 3 / 0 einzustellen, um einen Überlauf bei der Multiplikation mit z1 und z2 zu vermeiden. Üblicherweise geschieht dies durch Einstellen des höchstwertigen Bits x0 und F m / p oder y0 auf null.
  • Schlüsselerzeugung, -austausch und Verschlüsselung
  • Damit der Sender 10 die Nachricht M an den Empfänger 12 sendet, wird der öffentliche Schlüssel des Empfängers von dem Sender 10 erhalten. Der öffentliche Schlüssel wird von dem Empfänger 12 dadurch erhalten, dass er das Produkt des geheimen Schlüssels d und des Basispunkts P in der arithmetischen Einheit 20 berechnet, wie im Folgenden ausführlich erläutert wird. Das Produkt dP stellt einen Punkt auf der ausgewählten Kurve dar und dient als öffentlicher Schlüssel. Der öffentliche Schlüssel dP wird in Form von zwei 155 Bit langen Datenketten in dem Register 26 für öffentliche Schlüssel gespeichert.
  • Nach Erhalt des öffentlichen Schlüssels dP durch den Sender 10 wird der Schlüssel im RAM 36 gespeichert. Man sieht, dass selbst dann, wenn der Basispunkt P bekannt und öffentlich verfügbar ist, die Attribute der elliptischen Kurve das Herleiten des geheimen Schlüssels d verhindern.
  • Der Sender 10 verwendet die arithmetische Einheit 20 zum Berechnen des Produkts des Session-Seeds k und des öffentlichen Schlüssels dP und speichert das Ergebnis kdP in dem RAM 36 zur Verwendung bei dem Verschlüsselungs-Algorithmus. Das Ergebnis kdP ist ein weiterer Punkt auf der ausgewählten Kurve, wiederum dargestellt durch zwei 155 Bit lange Datenketten oder Vektoren, und dient als Chiffrierschlüssel.
  • Der Sender 10 berechnet außerdem das Produkt des Session-Seeds k und des Basispunkts P, um einen neuen Punkt kP, nämlich den öffentlichen "Session- Schlüssel" oder "Sitzungs-Schlüssel" bereitzustellen, der in dem RAM 36 gespeichert wird.
  • Der Sender 10 ist nun im Besitz des öffentlichen Schlüssels dP des Empfängers 12, eines öffentlichen Session-Schlüssels kP und eines Chiffrierschlüssels kdP und kann diese dazu benutzen, eine verschlüsselte, d.h. chiffrierte Nachricht zu senden. Der Sender 10 verschlüsselt die Nachricht M mit dem Chiffrierschlüssel kdP in der Verschlüsselungseinheit 40, wobei die ausgewählten, oben diskutierten Verschlüsselungsprotokolle implementiert werden, um eine verschlüsselte Nachricht C zu bilden. Der chiffrierte Text C wird zusammen mit dem Wert kP an das zu dem Empfänger 12 gehörige Verschlüsselungsmodul 16 gesendet.
  • Der Empfänger 12 macht Gebrauch von dem öffentlichen Session-Schlüssel kP mit Hilfe seines Privatschlüssels d, um den Chiffrierschlüssel kdP in der Arithmetikeinheit 20 zu berechnen und anschließend den chiffrierten Text C in der Verschlüsselungseinheit 40 zu entschlüsseln und die Nachricht M wiederzugewinnen.
  • Während dieses Austauschvorgangs bleiben der geheime Schlüssel d und der Session-Seed k geheim und sicher. Obwohl P, kP und dP bekannt sind, lässt sich der Chiffrierschlüssel kdP nicht berechnen, bedingt durch die Schwierigkeit des Erhaltens von entweder d oder k.
  • Die Effizienz der Verschlüsselung hängt ab von der effizienten Berechnung der Werte kP, dP und kdP mit Hilfe der arithmetischen Einheit 20. Jede Berechnung erfordert die wiederholte Addition von zwei Punkten auf der Kurve, was wiederum die Berechnung von Quadraten und Inversen in F m / 2 erfordert.
  • Arbeitsweise der arithmetischen Einheit
  • Der Betrieb der arithmetischen Einheit 20 ist schematisch in 3 dargestellt. Die Einheit 20 enthält einen Multiplizierer 48 mit einem Paar zyklischer Schieberegister 42, 44 und einem Akkumulatorregister 46. Jedes der Register 42, 44 und 46 enthält M Zellen 50a, 50b...50m, im vorliegenden Beispiel 155 Zellen, um die m Elemente einer Normalbasisdarstellung einer der Koordinaten von beispielsweise x von P aufzunehmen. Wie vollständig in dem US-Patent 4 745 568 erläutert ist, sind die Zellen 50 der Register 42, 44 mit entsprechenden Zellen 50 des Akkumulatorregisters 46 derart verbunden, dass in jeder Zelle des Registers 46 ein gruppenweiser Term erzeugt wird. Die Register 42, 44 und 46 sind außerdem direkt bitweise verbunden, um rasche Transfers von Daten zwischen den Registern zu ermöglichen.
  • Die Bewegung der Daten durch die Register wird gesteuert von einem Steuerregister 52, welches den Befehlssatz gemäß folgender Tabelle ausführen kann:
  • TABELLE 1 BEFEHLSSATZ
    Figure 00090001
  • Die Einheit 20 enthält einen Addierer 54 zum Empfangen von Daten aus den Registern 42, 44, 46 und dem RAM 36. Der Addierer 54 bildet eine XOR-Funktion, sein Ausgangssignal entspricht einem Datenstrom, der in dem RAM 36 oder in einem der Register 42, 44 gespeichert werden kann. Obwohl als serielles Bauelement dargestellt, ist ersichtlich, dass er in Form zweier paralleler Bauelemente implementiert werden kann, um die Berechnungszeit zu verbessern. In ähnlicher Weise können die Register 42, 44 und 46 parallel geladen werden. Jedes der Register 42, 44 und 46 ist ein 155 Bit langes Register und wird adressiert von einem 32-Bit-Datenbus, so dass 32 Bits Daten in zwei Taktzyklen transferiert werden können und der gesamte Ladevorgang in fünf Operationen geschieht.
  • Die bei der Berechnung verwendeten Unterroutinen werden im Folgenden diskutiert.
  • a) Multiplikation
  • Das zyklische Verschieben der Elemente durch die Register 42 und 44 mit m Wiederholungen in Verbindung mit einer zugehörigen Verschiebung des Akkumulatorregisters 46 akkumuliert aufeinander folgende Gruppenterme in einzelnen Akkumulatorzellen, wobei eine vollständige Umwälzung der Elemente in den Registern 42 und 44 die Elemente des Produkts im Akkumulatorregister 46 bildet.
  • b) Quadrierung
  • Durch Arbeiten in F m / 2 und Einführen einer Normalbasisdarstellung der Körperelemente kann der Multiplizierer 48 auch das Quadrat einer Zahl dadurch bilden, dass die Elemente einer Zelle durch das Register 42 zyklisch verschoben werden. Nach einer Zellenverschiebung repräsentieren die in dem Register enthaltenen Elemente das Quadrat der Zahl. Allgemein lässt sich eine Zahl zur Potenz 29 erheben, indem man g-mal eine zyklische Verschiebung durch ein Register vollzieht.
  • c) Inversion
  • Die Berechnung der Inversen einer Zahl lässt sich in effizienter Weise mit dem Multiplizierer 48 dadurch vornehmen, dass man einen Algorithmus implementiert, der von mehreren Quadrierungen Gebrauch macht. Die Inverse X–1 wird dargestellt in der Form
    Figure 00110001
    .
  • Wenn man m-1 als das Produkt zweier Faktoren g, h ansieht, lässt sich X–1 umschreiben in der Form
    Figure 00110002
    der
    Figure 00110003
    , mit β = X2.
  • Der Exponent 2gh–1 ist äquivalent zu
    Figure 00110004
  • Der Term 2g–1lässt sich schreiben in der Form
    Figure 00110005
    so dass
    Figure 00110006
    Figure 00110007
    und wird als γ bezeichnet.
  • Dieser Term lässt sich mit dem Multiplizierer 48 gemäß 4 dadurch berechnen, dass man zunächst das Register 42 mit dem Wert X lädt. Dies wird um eine Zelle verschoben, um β (d.h. x2) darzustellen, das Ergebnis wird in beide Register 42, 44 geladen.
  • Das Register 44 wird dann verschoben, um β2 zu erhalten, und die Registerinhalte der Register 42 und 44 werden multipliziert, um im Akkumulatorregister 46 den Wert β2+1 zu erhalten. Erreicht wird die Multiplikation mit einer Bewegung in Form einer m Bits umfassenden zyklischen Verschiebung jedes der Register 42, 44 und 46.
  • Der akkumulierte Term β1+2 wird in die Register 44 und 42 transferiert, die β2 enthalten, und dies wird um eine Stelle zum Erhalten von β4 verschoben. Dann werden die Register 42, 44 multipliziert, um β1+2+4 zu erhalten.
  • Diese Prozedur wird (g-2)-mal wiederholt, um γ zu erhalten. Wie im Folgenden beschrieben wird, lässt sich γ in ähnlicher Weise exponenzieren, um
    Figure 00120001
    ,d.h. x–1, zu erhalten.
  • Dieser Term lässt sich ausdrücken in der Form
    Figure 00120002
    .
  • Wie oben angemerkt, lässt sich γ dadurch auf 29 exponenzieren, dass man die Normalbasisdarstellung g-mal im Register 42 oder 44 verschiebt.
  • Damit werden die Register 42 und 44 jeweils mit dem Wert γ geladen, und das gmal verschobene Register 42 liefert den Wert
    Figure 00120003
    Die Register 42, 44 werden multipliziert, um
    Figure 00120004
    oder
    Figure 00120005
    zu erhalten im Akkumulatorregister 46. Dieser Wert wird zum Register 44 transferiert, und das Register 42 wird g-mal verschoben, um
    Figure 00120006
    zu erhalten.
  • Dann liefert die Multiplikation
    Figure 00120007
    . Das Wiederholen dieser Prozedur insgesamt (h-1)g-1-mal liefert die Inverse von X im Akkumulatorregister 46.
  • Aus dem oben Gesagten ergibt sich, dass Quadrieren, Multiplizieren und Invertieren in effektiver Weise unter Verwendung des für endliche Körper ausgelegten Multiplizierers 48 erfolgen können.
  • Addition des Punkts p auf sich selbst (p + p) unter Verwendung von Unterroutinen
  • Um den Wert von dP zum Erzeugen des öffentlichen Schlüssels zu berechnen, berechnet die zum Empfänger 12 gehörige arithmetische Einheit 20 zunächst die Addition P + P. Wie eingangs erwähnt, besitzt bei einer nicht-supersingulären Kurve der neue Punkt Q Koordinaten (X3, Y3) mit
    Figure 00130001
  • Um X3 zu berechnen, können gemäß 5 die folgenden Schritte implementiert werden.
  • Die m Bits, die X1 darstellen, werden aus dem Basispunktregister 28 in das Register 42 geladen und eine Zelle nach rechts verschoben, um X 2 / 1 zu erhalten. Dieser Wert wird im RAM 36 gespeichert, und es wird in der oben beschriebenen Weise die Inverse von X 2 / 1 berechnet.
  • Der Wert von X –2 / 1 wird in das Register 44 geladen, und der Parameter b wird aus dem Parameterregister 30 geholt und in das Register 42 geladen. Das Produkt bX –2 / 1 wird im Akkumulatorregister 46 berechnet durch Drehen der Bit-Vektoren, und der Ergebniswert wird in dem Addierer 52 mit dem Wert X 2 / 1, der in dem RAM 36 gespeichert ist, eine Exklusiv-Oder-Verknüpfung unterzogen, um die Normalbasisdarstellung von X3 zu erhalten. Das Ergebnis kann in dem RAM 36 gespeichert werden.
  • Eine ähnliche Prozedur kann dazu benutzt werden, Y3 zu generieren, indem zunächst X1 invertiert wird, das Ergebnis mit Y multipliziert wird und dann in dem Addierer 52 mit X1 einer Exklusiv-Oder-Verknüpfung unterzogen wird. Dies wird dann mit X3 multipliziert, welches im RAM 36 gespeichert ist, und das Ergebnis wird exklusiv-oder-verknüpft mit dem Wert von X3 und X 2 / 1, um Y3 zu erhalten.
  • Der Ergebniswert von (X3, Y3) bedeutet die Summe P + P und ist ein neuer Punkt Q auf der Kurve. Dieser Wert kann dann auf P addiert werden, um einen neuen Punkt Q' zu bilden. Dieser Prozess kann (d-2)-mal wiederholt werden, um dP zu generieren.
  • Die Addition von P + Q erfordert die Berechnung von (X3, Y3) mit
    Figure 00140001
    und
    Figure 00140002
  • Dies wird (d-2)-mal mit einem neuen Wert für Q bei jeder Iteration wiederholt, um dP zu berechnen.
  • Während dies im Prinzip mit Hilfe der Arithmetikeinheit 20 geschehen kann, machen in der Praxis die großen Zahlen eine derartige Prozedur undurchführbar. Eine elegantere Vorgehensweise ist mit Hilfe der Binärdarstellung der ganzen Zahl d verfügbar.
  • Berechnung von dP aus 2P
  • Um das Addieren nicht-ähnlicher Punkte P und Q zu vermeiden, dient die Binärdarstellung von d in Verbindung mit einem Verdopplungsverfahren zum Reduzieren der Anzahl von Additionen und deren Komplexität.
  • Die ganze Zahl d lässt sich ausdrücken in der Form
  • Figure 00140003
  • Die Werte von λ sind die binäre Darstellung von d.
  • Nach der Berechnung von 2P kann der gewonnene Wert mit sich selbst addiert werden, wie oben in Verbindung mit 5 beschrieben wurde, um 22P zu erhalten, welcher Wert wiederum auf sich selbst addiert werden kann, um 23P zu erhalten, etc. Dies wird solange wiederholt, bis 2iP erhalten ist.
  • Bei jeder Iteration wird der Wert von 2iP in dem RAM 36 gehalten für nachfolgende Additionen zwecks Gewinnung von dP.
  • Die arithmetische Einheit 20 führt eine weitere Menge von Additionen für nichtähnliche Punkte gleicher Terme durch, wobei λ den Wert 1 hat, so dass der Ergebniswert des Punkts (x3, y3) für dP erhalten wird.
  • Wenn beispielsweise k=5, so lässt sich dies berechnen in der Form 22P + p oder 2p + 2P + P oder Q + Q + P. Das Ergebnis lässt sich also durch drei Additionen erhalten. 2P = Q erfordert eine Addition, 2P + 2p = Q + Q = R bedeutet eine Addition, und R + P bedeutet eine Addition. Es sind höchstens t Verdopplungen und t anschließende Additionen erforderlich, abhängig davon, wie viele λ den Wert 1 haben.
  • Leistung der arithmetischen Einheit 20
  • Für Berechnungen in einem Galois-Feld F 155 / 2 hat sich gezeigt, dass das Berechnen der Inversen etwa 3800 Taktzyklen erfordert.
  • Das Verdoppeln eines Punkts, das ist die Addition eines Punkts auf sich selbst, nimmt größenordnungsmäßig 4500 Taktzyklen in Anspruch, und für eine praktische Implementierung eines privaten Schlüssels lässt sich die Berechnung des öffentlichen Schlüssels dP größenordnungsmäßig innerhalb von 1,5 × 105 Taktzyklen erhalten. Bei einer typischen Taktgeschwindigkeit von 40 MHz erfordert die Berechnung dP etwa 3 × 10–2 Sekunden. Dieser Durchsatz lässt sich steigern, wenn man den Seed-Schlüssel k mit einem Hamming-Gewicht, beispielsweise mit 20, begrenzt, um dadurch die Anzahl von Additionen nicht-ähnlicher Punkte einzugrenzen.
  • Berechnung eines öffentlichen Session-Schlüssels kP und des Chiffrierschlüssels kdP
  • Der öffentliche Session-Schlüssel kP lässt sich in ähnlicher Weise mit Hilfe der arithmetischen Einheit 20 des Senders 10 unter Verwendung des Basispunkts P aus dem Register 28 berechnen. Weil der öffentliche Schlüssel dP als ein Punkt (x3, y3) dargestellt wird, lässt sich in ähnlicher Weise auch der Chiffrierschlüssel kdP berechnen.
  • Jede dieser Operationen beansprucht ähnlich viel Zeit und kann vor dem Sendevorgang abgeschlossen werden.
  • Der Empfänger 12 muss in ähnlicher Weise dkP berechnen, wenn er den verschlüsselten Text C empfängt, was wiederum 3 × 10–2 Sekunden in Anspruch nimmt, also innerhalb der für eine praktische Implementierung einer Verschlüsselungseinheit erwarteten Zeit liegt.
  • Der öffentliche Schlüssel dP und der Session-Schlüssel kP werden jeweils dargestellt in Form einer 310 Bit langen Datenkette, und sie erfordern insoweit eine deutlich verringerte Bandbreite für die Übertragung. Gleichzeitig schaffen die Attribute von elliptischen Kurven eine sichere Verschlüsselungsstrategie mit praktischer Implementierung aufgrund der Effizienz der arithmetischen Einheit 20.
  • Kurvenauswahl
  • a) Auswahl des Körpers F m / q
  • Das obige Beispiel hat von einem Körper von 2155 Gebrauch gemacht sowie von einer nicht-supersingulären Kurve. Der Wert 155 wurde zum Teil deshalb gewählt, weil es eine optimale Normalbasis in F 155 / 2 über F2 gibt. Allerdings besteht eine Haupterwägung in der Sicherheit und der Effizienz des Verschlüsselungssystems. Der Wert 155 ist groß genug, um sicher zu sein, gleichzeitig aber auch klein genug, um einen effizienten Betrieb zu ermöglichen. Die Berücksichtigung üblicher Angriffe zum Knacken eines verschlüsselten Textes legt nahe, dass bei elliptischen Kurven über F m / 2 ein Wert von m von etwa 130 ein sehr sicheres System ergibt. Die Verwendung von 1000 parallel arbeitenden Geräten ermöglicht das Auffinden eines Logarithmus in einer Zeit von etwa 1,5 × 1011 Sekunden oder mindestens 1500 Jahren mit Hilfe des besten bekannten Verfahrens und des Körpers F 155 / 2. Andere Methoden führen zu noch längeren Laufzeiten.
  • b) Supersinguläre gegenüber nicht-supersingulären Kurven
  • Ein Vergleich von Angriffen auf mit Hilfe elliptischer Kurven verschlüsselte Daten legt nahe, dass nicht-supersinguläre Kurven robuster sind als supersinguläre Kurven. Für einen Körper F h / g zeigt ein Angriff basierend auf dem Verfahren, wie es von Menezes, Okamoto und Vanstone in dem Artikel "Reducing elliptic curve logarithms to logarithms in finite field", veröffentlicht in Proceeding 22 Annual ACM Symposium Theory Computing 1991, Seiten 80–89 (The MOV attack) offenbart ist, dass bei kleinen Werten von k der Angriff subexponenziell wird. Zu den meisten supersingulären Kurven gehören kleine Werte von k. Im Allgemeinen jedoch haben nicht-supersinguläre Kurven große Werte von k, und bei k>log2q wird der MOV-Angriff weniger wirksam als mehr herkömmliche allgemeine Angriffe.
  • Die Verwendung einer supersingulären Kurve ist deshalb attraktiv, weil die Verdopplung eines Punkts (d.h. P = Q) keine Echtzeit-Inversion des zugrunde liegenden Körpers erfordert. Bei einer supersingulären Kurve lauten die Koordinaten von 2P sind
    Figure 00170001
  • Weil a eine Konstante ist, sind a–1 und a–2 für eine gegebene Kurve fest und können vorab berechnet werden. Die Werte x 2 / 1 und x 4 / 1 lassen sich mit einer einfachen bzw. doppelten zyklischen Verschiebung im Multiplizierer 48 errechnen. Allerdings erfordert die anschließende Addition von nicht-ähnlichen Punkten zur Bildung des Werts von dP immer noch die Berechnung der Inversen in der Form
    Figure 00170002
    und
    Figure 00170003
  • Obwohl also supersinguläre Kurven zu effizienten Implementierungen führen, gibt es eine relativ kleine Menge von supersingulären Kurven, aus denen ausgewählt werden kann, insbesondere dann, wenn die Verschlüsselung robust sein soll. Bei einer supersingulären Kurve, bei der m ungerade ist, gibt es drei Klassen von Kurven, die weiter betrachtet werden können, nämlich y2 + y = x3 y2 + y = x3 + x y2 + y = x3 + x + 1
  • Allerdings zeigt eine Betrachtung dieser Kurven für den Fall m = 155, dass keine von ihnen die für Attacken notwendige Widerstandsfähigkeit besitzt.
  • Eine verbesserte Sicherheit für supersinguläre Kurven lässt sich dadurch erreichen, dass man quadratische Erweiterungen des zugrunde liegenden Körpers verwendet. Tatsächlich gibt es in Fq mit q = 2310, d.h. einer quadratischen Erweiterung von F 155 / 2 unter den supersingulären Kurven insgesamt vier, bei denen der MOV-Angriff die Berechnung diskreter log-Werte in F 930 / 2 erfordert. Diese Kurven, liefern die erforderliche hohe Sicherheit und ermöglichen auch einen hohen Durchsatz. In ähnlicher Weise existieren in anderen Erweiterungen von Unterkörpern von F 155 / 2 (z.B. F 31 / 2) weitere Kurven, die die erforderliche Robustheit besitzen. Allerdings erhöht ihre Verwendung die Anzahl der Ziffern, die einen Punkt definieren, mithin die Bandbreite bei ihrer Übertragung.
  • Im Gegensatz dazu beträgt die Anzahl nicht-supersingulärer Kurven von Fq mit q = 2155:2(2155 – 1). Durch Auswahl von q = 2, d.h. eines Körpers F M / 2, kann der Wert von a in der Darstellung der Kurve y2 + xy = x3 + ax2 + b so gewählt werden, dass er entweder 1 oder 0 lautet, ohne dass hierdurch ein Verlust von Allgemeingültigkeit entsteht. Diese umfangreiche Wahl von Kurven ermöglicht das Auffinden einer großen Anzahl von Kurven über diesem Körper, für die der Grad einer Kurve durch einen großen Primfaktor teilbar ist. Im Allgemeinen ist die Bestimmung des Grads einer beliebigen nicht-supersingulären Kurve über Fq nicht trivial, eine Möglichkeit ist ausgeführt in einem Papier mit dem Titel "Counting Points on Elliptic Curves" von Menezes, Vanstone und Zuccherato, Mathematics of Computation 1992.
  • Im Allgemeinen jedoch ist die Auswahl geeigneter Kurven im Stand der Technik bekannt. Als Beispiel wird verwiesen auf "Application of Finite Fields", Kapitel 7 und 8, von Menezes, Blake et al., Kluwer Academic Publishers (ISBN 0-7923- 9282-5). Wegen der großen Anzahl derartiger Kurven, die den Anforderungen entsprechen, wird ungeachtet der zusätzlichen Berechnungen die Verwendung von nicht-supersingulären Kurven bevorzugt.
  • Eine alternative Vorgehensweise, welche die Anzahl von Inversionen bei Verwendung nicht-supersingulärer Kurven reduziert, besteht in der Verwendung von homogenen Koordinaten. Ein Punkt P wird definiert durch die Koordinaten (x, y, z) und Q durch den Punkt (x2, y2, z2).
  • Der Punkt (0, 1, 0) bedeutet die Identität 0 in E.
  • Um die Additionsformen für die elliptische Kurve mit dieser Darstellung herzuleiten, nehmen wir die Punkte P = (x1, y2, z1) und Q = (x2, y2, z2), normieren jeweils auf (x1/z1, y1/z1, 1), (x2/z2, y2/z2, 1) und wenden die obigen Additionsformen an.
    Wenn
    P = (x1, y1, z1), Q = (x2, y2, z2), P, Q ≠ O, und P ≠ –Q, dann ist
    P + Q = (x3, y3, z3), wobei, falls P ≠ Q, dann
    x3 = AD
    y3 = CD + A2(Bx1 + Ay1)
    Z3 = A3Z1Z2
    wobei A = x2z1 + x1z2, B = y2z1 + y1z2, C = A + B und
    D = A2(A + az1z2) + z1z2BC.
  • Im Fall von P = Q gilt
    x3 = AB
    y3 = x 4 / 1A + B(x 2 / 1 + y1z1 + A)
    z3 = A3 wobei A = x1z1 und B = bz 4 / 1 + x 4 / 1
  • Man sieht, dass die Berechnung von x3, y3 und z3 keinerlei Inversion erfordert. Um allerdings die Koordinaten x * / 3, y * / 3 in einer nicht-homogenen Darstellung herzuleiten, ist es notwendig, die Darstellung so zu normieren, dass
    Figure 00190001
  • Dieser Vorgang erfordert eine Inversion, die die oben angesprochene Prozedur verwendet. Allerdings ist lediglich eine Inversion zum Berechnen von dP erforderlich.
  • Durch die Verwendung homogener Koordinaten ist es immer noch möglich, dP unter Verwendung der Version des Verdopplungs- und Additionsverfahrens zu berechnen, welches oben beschrieben wurde. Der Berechnungsvorgang von P + Q, P ≠ Q, erfordert 13 Körper-Multiplikationen, und 2P erfordert 7 Multiplikationen.
  • Alternativer Schlüsseltransfer
  • In dem obigen Beispiel werden die Koordinaten der Schlüssel kP transferiert als zwei 155 Bit lange Körperelemente für F 155 / 2. Um die Bandbreite noch weiter zu reduzieren, ist es möglich, nur eine der Koordinaten zu senden und die anderen Koordinaten im Empfänger zu berechnen. Eine Kennung, beispielsweise ein einzelnes Bit des korrekten Werts der anderen Koordinate, kann ebenfalls übertragen werden. Dies ermöglicht, die zweite Koordinate am Empfänger zu berechnen und die korrekte Koordinate anhand der Kennung zu identifizieren.
  • Bezugnehmend auf 1 holt also der Sender 10 zunächst den öffentlichen Schlüssel dP des Empfängers 12, ferner eine Bit-Kette für die Koordinate x0 und ein einzelnes Bit der Koordinate y0.
  • Der Sender 10 besitzt die Parameter der Kurve im Register 30 und kann daher die Koordinate x0 und die Kurven-Parameter dazu benutzen, mögliche Werte der anderen Koordinate y0 aus der arithmetischen Einheit 20 zu erhalten.
  • Für eine Kurve in der Form y2 + xy = x3 + ax2 + b und eine Koordinate x0 sind dann die möglichen Werte y1, y2 für y0 die Wurzeln der quadratischen Gleichung y2 + x0Y = x 3 / 0 + ax 2 / 0 + b.
  • Durch Auflösen nach y in der arithmetischen Einheit 20 erhält man zwei mögliche Wurzeln, und ein Vergleich mit dem gesendeten Informations-Bit gibt an, welcher der Werte der passende Wert für y ist.
  • Die beiden möglichen Werte der zweiten Koordinate (y0) unterscheiden sich um x0, d.h. y1 = y2 + x0.
  • Da die beiden Werte von y0 um x0 voneinander abweichen, unterscheiden sich y, und y2 stets, wobei "1" in der Darstellung von x0 auftritt. Folglich wird das zusätzlich gesendete Bit aus einer jener Positionen ausgewählt, und die Untersuchung des entsprechenden Bits der Werte von y0 gibt an, welche der beiden Wurzeln der passende Wert ist.
  • Auf diese Weise kann der Empfänger 10 die Koordinaten des öffentlichen Schlüssels dP auch dann generieren, wenn nur 156 Bits aufgefunden werden.
  • Ähnliche Wirkungsweisen lassen sich beim Senden des Session-Schlüssels kP zu dem Empfänger 12 realisieren, da der Sender 12 nur eine Koordinate übertragen muss, nämlich x0 und das ausgewählte Kennungsbit für y0. Der Empfänger 12 kann dann die möglichen Werte von y0 rekonstruieren und den passenden Wert wählen.
  • Im Körper F m / 2 ist es nicht möglich, mit Hilfe der quadratischen Formel bei 2a = 0 eine Lösung für y zu erhalten. Folglich werden andere Methoden benötigt, wobei die arithmetische Einheit 20 speziell ausgebildet ist, um dies effizient auszuführen.
  • Im Allgemeinen ist x0 von null verschieden, und wenn y = x0z, so gilt x 2 / 0z2 + x 2 / 0z = x 3 / 0 + ax 2 / 0 + b
  • Dies lässt sich umschreiben in der Form
    Figure 00210001
  • Das heißt: z2 + z = c.
  • Wenn m ungerade ist, so gilt entweder
    Figure 00210002
    oder
    Figure 00210003
    um zwei mögliche Werte für y0 zu schaffen.
  • Eine ähnliche Lösung existiert für den Fall, dass m gerade ist, so dass ebenfalls die Terme in der Form c20 benutzt werden.
  • Dies eignet sich besonders zur Verwendung bei einer Normalbasisdarstellung in F m / 2
  • Wie oben angemerkt, lässt sich das Erheben eines Köperelements in F m / 2 in die Potenz von g erreichen durch eine g-fache zyklische Verschiebung, bei der das Körperelement als eine Normalbasis dargestellt wird.
  • Folglich lässt sich jeder Wert von z berechnen, indem man Verschiebungen und Additionen durchführt, um die Wert für y0 zu erhalten. Der korrekte Wert bestimmt sich durch das zusätzlich übertragene Bit.
  • Die Verwendung einer Normalbasisdarstellung in F m / 2 vereinfacht mithin das Protokoll zum Wiedergewinnen der Koordinate y0.
  • Wenn P = (x0y0) ein Punkt auf der elliptischen Kurve E : y2 + xy = x3 + ax2 + b ist, definiert über einem Körper F m / 2, dann ist y ^0 definiert zu 0, falls x0 = 0, und bei x0 ≠ 0 ist y ^0 definiert durch das niedrigstwertige Bit in dem Körperelement y0·x 1 / 0.
  • Die x-Koordinate x0 von P und das Bit y ^0 werden zwischen dem Sender 10 und dem Empfänger 12 übertragen. Die y-Koordinate y0 lässt sich dann folgendermaßen gewinnen.
    • 1. Wenn x0 = 0, so wird y0 durch zyklisches Verschieben der Vektordarstellung des Körperelements b, die in dem Parameterregister 30 um eine Position nach links gespeichert ist, erhalten. Das heißt, wenn b = bm–1bm–2 .... b1b0 dann y0 = bm–2 .... b1b0bm–1
    • 2. Wenn x0 ≠ 0, dann geschieht Folgendes: 2.1 Berechne das Körperelement c = x0 + a + bx –2 / 0 in F m / 2 2.2 Sei die Vektordarstellung von c C = Cm–1 Cm–2 ....C1C0. 2.3 Konstruiere ein Körperelement z = Zm–1Zm–2 ....Z1Z0, indem gesetzt wird: Z0 = y0, Z1 = C0 ⊕ Z0, Z2 = C1 ⊕ Z1, Zm–2 = Cm–3 ⊕ Zm–3, 2.4 Schließlich berechne man y0 = x0·z.
  • Man sieht, dass die Berechnung x –1 / 0 in einfacher Weise in der arithmetischen Einheit 20 in oben beschriebener Weise vorgenommen werden kann, und dass die Berechnung von y0 mit Hilfe des Multiplizierers 48 vorgenommen werden kann.
  • In den obigen Beispielen wurde die Identifizierung des richtigen Werts von y0 erreicht durch Übertragen eines einzelnen Bits und durch einen Vergleich des Werts der gewonnenen Wurzel. Allerdings können auch andere Indikatoren zum Identifizieren des passenden Werts verwendet werden, wobei der Vorgang nicht beschränkt ist auf die Verschlüsselung mit Hilfe elliptischer Kurven auf dem Körper GF(2m). Wenn beispielsweise der Körper ausgewählt ist zu Zp p = 3 (mod 4), so könnte das Legendre-Symbol in Verbindung mit dem passenden Wert gesendet werden, um den richtigen Wert zu kennzeichnen. Alternativ könnte die Menge der Elemente in Zp aufgeteilt werden in ein Paar Untermengen mit der Eigenschaft, dass, wenn y in der einen Untermenge liegt, -y in der anderen liegt, vorausgesetzt, dass y≠0. Dann lässt sich den einzelnen Untermengen ein beliebiger Wert zuordnen und mit der Koordinate x0 übertragen, um anzugeben, in welcher Untermenge sich der passende Wert für y0 befindet. Folglich lässt sich der passende Wert für y0 bestimmen. In geeigneter Weise ist es möglich, eine passende Darstellung zu verwenden, bei der die Untermengen angeordnet sind als Intervalle, um so die Kennzeichnung des passenden Werts von y0 zu erleichtern.
  • Diese Methoden eignen sich besonders gut für die Verschlüsselung unter Verwendung elliptischer Kurven, lassen sich aber auch einsetzen bei beliebigen algebraischen Kurven und finden Anwendung auf anderen Gebieten, so z.B. bei einer Fehlerkorrekturkodierung, bei der Koordinaten von Punkten auf Kurven zu transferieren sind.
  • Man erkennt daher, dass durch Verwenden einer elliptischen Kurve, die in dem endlichen Körper GF m / 2 liegt, und durch Verwenden einer Normalbasisdarstellung die zum Verschlüsseln mit elliptischen Kurven notwendigen Berechnungen effizient ausgeführt werden können. Derartige Berechnungen lassen sich entweder in Software oder in Hardware implementieren, und die Strukturierung der Berechnungen macht Gebrauch von einem Multiplizierer für endliche Körper, was insbesondere bei Implementierung als Hardware effizient ist.

Claims (20)

  1. Verfahren zum Transferieren von Koordinaten eines Punkts auf einer nicht supersingulären elliptischen Kurve von einem ersten Korrespondenten (10) zu einem zweiten Korrespondenten (12), welcher mit dem ersten Korrespondenten durch eine Datenübertragungsverbindung (12) verbunden ist und die Parameter der Kurve enthält, wobei die Koordinaten eine erste Koordinate beinhalten, die zwei mögliche Punkte auf der Kurve bestimmen, die jeweils beide eine zugehörige zweite Koordinate besitzen, umfassen folgende Schritte: a) der erste Korrespondent wird entsprechend der ersten Koordinate des Punkts zu dem zweiten Korrespondenten vorgerückt; b) der erste Korrespondent identifiziert für den zweiten Korrespondenten eine Untermenge, die eine der zweiten Koordinaten entsprechend dem genannten Punkt beinhaltet und die andere der zweiten Koordinaten ausschließt; c) der zweite Korrespondent berechnet die zweite Koordinate aus der ersten Koordinate und der Kurve; d) der zweite Korrespondent bestimmt, welche der zweiten Koordinaten in der identifizierten Untermenge enthalten ist, um dadurch den Wert der einen der zweiten Koordinaten entsprechend dem genannten Punkt zu bestimmen.
  2. Verfahren nach Anspruch 1, bei dem für jedes in einer der Untermengen enthaltenen, von null verschiedenen Element, eine Negation des Elements nicht in der Untermenge enthalten ist.
  3. Verfahren nach Anspruch 1 oder 2, bei dem die Untermenge ein Intervall ist.
  4. Verfahren nach einem der Ansprüche 1 und 3, bei dem der Schritt (b) die Übertragung eines der identifizierten Untermenge zugewiesenen Werts beinhaltet.
  5. Verfahren nach einem vorhergehenden Anspruch, bei dem die algebraische Kurve über dem Feld Zp definiert ist.
  6. Verfahren zum Transferieren von Koordinaten eines Punkts auf einer nichtsupersingulären elliptischen Kurve von einem ersten Korrespondenten (10) zu einem zweiten Korrespondenten (12), welcher mit dem ersten Korrespondenten durch eine Datenübertragungsverbindung (14) verbunden ist und die Parameter der Kurve enthält, wobei die Koordinaten eine erste Koordinate beinhalten, die zwei mögliche Punkte auf der Kurve bestimmen, die jeweils beide eine zugehörige zweite Koordinate besitzen, umfassen folgende Schritte: a) der erste Korrespondent wird entsprechend der ersten Koordinate des Punkts zu dem zweiten Korrespondenten vorgerückt; und b) der erste Korrespondent identifiziert für den zweiten Korrespondenten eine Untermenge, die eine der zweiten Koordinaten entsprechend dem genannten Punkt enthält, schließt die andere der zweiten Koordinaten aus; wobei der zweite Korrespondent die zweiten Koordinaten berechnen kann aus der ersten Koordinate und der Kurve, und bestimmen kann, welche der zweiten Koordinaten in der identifizierten Untermenge enthalten ist, um dadurch den Wert der einen der zweiten Koordinaten entsprechend dem genannten Punkt zu bestimmen.
  7. Verfahren nach Anspruch 6, bei dem für jedes in der Untermenge enthaltene, von null verschiedene Element eine Negation des Elements nicht in der Untermenge enthalten ist.
  8. Verfahren nach Anspruch 6 oder 7, bei dem die Untermenge ein Intervall ist.
  9. Verfahren nach einem der Ansprüche 6 bis 8, bei dem der Schritt (b) das Übertragen eines der identifizierten Untermenge zugeordneten Werts beinhaltet.
  10. Verfahren nach Anspruch 6 bis 9, bei dem die algebraische Kurve über dem Feld Zp definiert ist.
  11. Verfahren zum Transferieren von Koordinaten eines Punkts auf einer nichtsupersingulären elliptischen Kurve von einem ersten Korrespondenten (10) zu einem zweiten Korrespondenten (12), welcher mit dem ersten Korrespondenten durch eine Datenübertragungsverbindung (14) verbunden ist und die Parameter der Kurve enthält, wobei die Koordinaten eine erste Koordinate beinhalten, die zwei mögliche Punkte auf der Kurve bestimmen, die jeweils beide eine zugehörige zweite Koordinate besitzen, umfassen folgende Schritte: a) der zweite Korrespondent empfängt von dem ersten Korrespondenten die erste Koordinate des genannten Punkts; b) der zweite Korrespondent empfängt von dem ersten Korrespondenten eine Identifizierung einer Untermenge einer von den zweiten Koordinaten entsprechend im genannten Punkt und schließt die andere der zweiten Koordinaten aus; c) der zweite Korrespondent berechnet die zweiten Koordinaten aus der ersten Koordinate und der Kurve; d) der zweite Korrespondent bestimmt, welche der zweiten Koordinaten in der identifizierten Untermenge enthalten ist, um dadurch den Wert der einen der zweiten Koordinaten entsprechend dem genannten Punkt zu bestimmen.
  12. Verfahren nach Anspruch 11, bei dem für jedes in der Untermenge enthaltene, von null verschiedene Element eine Negation des Elements nicht in der Untermenge enthalten ist.
  13. Verfahren nach Anspruch 11 oder 12, bei dem die Untermenge ein Intervall ist.
  14. Verfahren nach einem der Ansprüche 11 bis 13, bei dem der Schritt (b) das Empfangen eines der identifizierten Untermenge zugeordneten Werts beinhaltet.
  15. Verfahren nach einem der Ansprüche 11 bis 14, bei dem die algebraische Kurve über dem Feld Zp definiert ist.
  16. System (10, 12, 14), umfassend einen Sender (10) und einen Empfänger (12) sowie eine Übertragungsverbindung (14), die Sender und Empfänger zum Übertragen von Koordinaten eines Punkts auf einer nicht-supersingulären elliptischen Kurve von einem ersten Korrespondenten (10) in dem Sender zu einem zweiten Korrespondenten (12) in dem Empfänger und mit den Parametern der Kurve verbindet, wobei die Koordinaten eine erste Koordinate beinhalten die zwei mögliche Punkte auf der Kurve bestimmen, wobei jeder der möglichen Punkte eine zugehörige zweite Koordinate besitzt, und der Sender aufweist: a) eine Liefereinrichtung zum Liefern der ersten Koordinate des Punkts zu dem zweiten Korrespondenten; b) eine Identifiziereinrichtung zum Identifizieren einer die eine der zweiten Koordinaten entsprechend dem genannten Punkt enthaltende Untermenge für den zweiten Korrespondenten unter Ausschluss der anderen der zweiten Koordinaten; wobei der Empfänger aufweist: c) eine Berechnungseinrichtung zum Berechnen der zweiten Koordinate aus der ersten Koordinate und der Kurve; und d) eine Bestimmungseinrichtung zum Bestimmen, welche der zweiten Koordinaten in der identifizierten Untermenge enthalten ist, um dadurch den Wert der einen der zweiten Koordinaten entsprechend dem genannten Punkt zu bestimmen.
  17. System nach Anspruch 16, bei dem der Sender eine Einrichtung aufweist zum Senden eines der identifizierten Untermenge zugeordneten Werts.
  18. Sender zur Verwendung bei dem Transferieren von Koordinaten eines Punkts auf einer nicht-supersingulären elliptischen Kurve von einem ersten Korrespondenten (10) zu einem zweiten Korrespondenten (12), der mit dem ersten Korrespondenten über eine Datenübertragungsverbindung (14) verbunden ist und die Parameter der Kurve enthält, wobei die Koordinaten eine erste Koordinate enthalten, welche zwei mögliche Punkte auf der Kurve bestimmen, und jeder der möglichen Punkte eine zugehörige zweite Koordinate besitzt, wobei der Sender aufweist: a) eine Liefereinrichtung zum Liefern der ersten Koordinate des genannten Punkts zu dem zweiten Korrespondenten; b) eine Identifiziereinrichtung zum Identifizieren einer eine der zweiten Koordinaten entsprechend dem genannten Punkt enthaltende Untermenge für den zweiten Korrespondenten unter Ausschluss der anderen der zweiten Koordinaten; wobei der zweite Korrespondent die zweiten Koordinaten berechnen kann aus der ersten Koordinate und der Kurve, und bestimmen kann, welche der zweiten Koordinaten in der identifizierten Untermenge enthalten ist, um dadurch den Wert der einen der zweiten Koordinaten entsprechend dem genannten Punkt zu bestimmen.
  19. Empfänger zur Verwendung bei dem Transferieren von Koordinaten eines Punkts auf einer nicht-supersingulären elliptischen Kurve von einem ersten Korrespondenten (10) zu einem zweiten Korrespondenten (12) über eine Datenübertragungsverbindung (14) verbunden ist und die Parameter der Kurve enthält, wobei die Koordinaten eine erste Koordinate enthalten, welche zwei mögliche Punkte auf der Kurve bestimmen, und jeder der möglichen Punkte eine zugehörige zweite Koordinate besitzt, wobei der Empfänger aufweist: a) eine Einrichtung zum Empfangen der ersten Koordinate des genannten Punkts von dem ersten Korrespondenten; b) eine Einrichtung zum Empfangen einer Identifizierung einer Untermenge einer der zweiten Koordinaten entsprechend dem genannten Punkt unter Ausschluss der anderen der zweiten Koordinaten von dem ersten Korrespondenten; c) eine Berechnungseinrichtung zum Berechnen der zweiten Koordinaten aus der ersten Koordinate und der Kurve; d) eine Bestimmungseinrichtung zum Bestimmen, welche der zweiten Koordinaten in der identifizierten Untermenge enthalten ist, um dadurch den Wert der einen der zweiten Koordinaten entsprechend dem genannten Punkt zu bestimmen.
  20. Computerprogramm mit durch einen Prozessor implementierbaren Schritten, ausgebildet zum Durchführen eines Verfahrens nach einem der Ansprüche 1 bis 15.
DE69534603T 1994-07-29 1995-07-31 Verschlüsselungssystem für elliptische kurve Expired - Lifetime DE69534603T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28226394A 1994-07-29 1994-07-29
US282263 1994-07-29
PCT/CA1995/000452 WO1996004602A1 (en) 1994-07-29 1995-07-31 Elliptic curve encryption systems

Publications (2)

Publication Number Publication Date
DE69534603D1 DE69534603D1 (de) 2005-12-15
DE69534603T2 true DE69534603T2 (de) 2006-08-03

Family

ID=23080732

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69534603T Expired - Lifetime DE69534603T2 (de) 1994-07-29 1995-07-31 Verschlüsselungssystem für elliptische kurve

Country Status (5)

Country Link
US (2) US6141420A (de)
EP (1) EP0804758B1 (de)
AU (1) AU3073595A (de)
DE (1) DE69534603T2 (de)
WO (1) WO1996004602A1 (de)

Families Citing this family (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999626A (en) 1996-04-16 1999-12-07 Certicom Corp. Digital signatures on a smartcard
US7567669B2 (en) 1996-05-17 2009-07-28 Certicom Corp. Strengthened public key protocol
GB9627069D0 (en) * 1996-12-30 1997-02-19 Certicom Corp A method and apparatus for finite field multiplication
WO1998033159A1 (fr) * 1997-01-28 1998-07-30 Matsushita Electric Industrial Co., Ltd. Dispositif d'identification du type a reproduction de message
US6782100B1 (en) 1997-01-29 2004-08-24 Certicom Corp. Accelerated finite field operations on an elliptic curve
US6038581A (en) * 1997-01-29 2000-03-14 Nippon Telegraph And Telephone Corporation Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
EP0874307B2 (de) 1997-03-25 2016-12-28 Certicom Corp. Beschleunigte Finite-Feld-Operationen auf einer elliptischen Kurve
DE69826963T2 (de) 1997-11-04 2005-11-17 Nippon Telegraph And Telephone Corp. Gerät für die modulare Inversion zur Sicherung von Information
DE69930334T2 (de) 1998-01-28 2006-11-09 Hitachi, Ltd. IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung
EP1066558B1 (de) * 1998-03-25 2003-01-29 Certicom Corp. Beschleunigte begrenztes-feld-operationen auf einer elliptischen kurve
CA2239372A1 (en) * 1998-06-01 1999-12-01 Certicom Corp. Accelerated cryptographic operations
US6199087B1 (en) * 1998-06-25 2001-03-06 Hewlett-Packard Company Apparatus and method for efficient arithmetic in finite fields through alternative representation
US6252960B1 (en) * 1998-08-04 2001-06-26 Hewlett-Packard Company Compression and decompression of elliptic curve data points
US6430588B1 (en) * 1998-09-03 2002-08-06 Nippon Telegraph And Telephone Corporation Apparatus and method for elliptic-curve multiplication and recording medium having recorded thereon a program for implementing the method
US7215773B1 (en) * 1998-10-14 2007-05-08 Certicom.Corp. Key validation scheme
US7277540B1 (en) * 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US6611597B1 (en) 1999-01-25 2003-08-26 Matsushita Electric Industrial Co., Ltd. Method and device for constructing elliptic curves
CA2263056C (en) * 1999-02-26 2009-04-28 Certicom Corp. Method and apparatus for finite field basis conversion
US6490352B1 (en) * 1999-03-05 2002-12-03 Richard Schroeppel Cryptographic elliptic curve apparatus and method
FR2791497B1 (fr) * 1999-03-26 2001-05-18 Gemplus Card Int Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique
FR2796177B1 (fr) * 1999-07-09 2001-10-12 Oberthur Card Systems Sas Procede de cryptographie mis en oeuvre entre deux entites echangeant des informations
US20020055962A1 (en) * 1999-11-12 2002-05-09 Richard Schroeppel Automatically solving equations in finite fields
US7200225B1 (en) 1999-11-12 2007-04-03 Richard Schroeppel Elliptic curve point ambiguity resolution apparatus and method
US6701336B1 (en) * 1999-11-12 2004-03-02 Maxtor Corporation Shared galois field multiplier
US6603445B1 (en) * 1999-12-30 2003-08-05 Yeda Research And Development Co. Ltd. Method and apparatus for factoring large numbers with optoelectronic devices
US7308096B2 (en) * 2000-05-30 2007-12-11 Hitachi, Ltd. Elliptic scalar multiplication system
US7885336B2 (en) * 2001-02-05 2011-02-08 Ati Technologies Ulc Programmable shader-based motion compensation apparatus and method
US7035470B2 (en) * 2001-02-05 2006-04-25 Ati Technologies, Inc. System for handling errors related to IDCT data and method thereof
KR20020086005A (ko) * 2001-05-10 2002-11-18 학교법인 정석학원 타원곡선 암호 시스템을 위한 역원 연산기
FR2824653B1 (fr) * 2001-05-11 2003-08-08 Gemplus Card Int Dispositif destine a realiser des calculs d'exponentiation appliques a des points d'une courbe elliptique
US7308469B2 (en) * 2001-06-15 2007-12-11 Robert Joseph Harley Method for generating secure elliptic curves using an arithmetic-geometric mean iteration
KR100399048B1 (ko) * 2001-06-18 2003-09-26 한국전자통신연구원 타원곡선 암호화 장치
US7206410B2 (en) * 2001-10-10 2007-04-17 Stmicroelectronics S.R.L. Circuit for the inner or scalar product computation in Galois fields
DE10161138B4 (de) * 2001-12-12 2008-02-14 Siemens Ag Verfahren und Vorrichtung zum Ermitteln einer elliptischen Kurve, Verfahren und Vorrichtung zum Multiplizieren eines Punktes mit einem Skalar
DE10161137B4 (de) * 2001-12-12 2008-02-14 Siemens Ag Verfahren und System zum kryptographischen Bearbeiten von Daten
US7372960B2 (en) * 2001-12-31 2008-05-13 Certicom Corp. Method and apparatus for performing finite field calculations
US7349538B2 (en) * 2002-03-21 2008-03-25 Ntt Docomo Inc. Hierarchical identity-based encryption and signature schemes
US6708893B2 (en) * 2002-04-12 2004-03-23 Lucent Technologies Inc. Multiple-use smart card with security features and method
US7533270B2 (en) * 2002-04-15 2009-05-12 Ntt Docomo, Inc. Signature schemes using bilinear mappings
US20040001590A1 (en) * 2002-06-27 2004-01-01 Eisentraeger Anne Kirsten Efficient elliptic curve double-and-add calculator
US7062043B1 (en) * 2002-06-28 2006-06-13 The United States Of America As Represented By The National Security Agency Method of elliptic curve digital signature using coefficient splitting
US7062044B1 (en) * 2002-06-28 2006-06-13 The United States Of America As Represented By The National Security Agency Method of elliptic curve cryptographic key agreement using coefficient splitting
JP2004126514A (ja) * 2002-08-06 2004-04-22 Hitachi Ltd 公開鍵暗号通信方法
CN1679271A (zh) * 2002-08-28 2005-10-05 美国多科摩通讯研究所股份有限公司 基于认证的加密和公共密钥基础结构
US7724898B2 (en) * 2002-10-17 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Cryptography using finite fields of odd characteristic on binary hardware
US20040098435A1 (en) * 2002-11-20 2004-05-20 Moore Stephen F. Modular reduction of multi-precision numbers
US20040096057A1 (en) * 2002-11-20 2004-05-20 Moore Stephen F. Modular multiplication of multi-precision numbers
US20040117601A1 (en) * 2002-12-12 2004-06-17 Spracklen Lawrence A General-purpose processor that can rapidly perform binary polynomial arithmetic operations
JP4611305B2 (ja) * 2003-10-03 2011-01-12 パナソニック株式会社 情報伝達システム、暗号装置及び復号装置
US20050135605A1 (en) * 2003-12-17 2005-06-23 Dimitrov Vassil S. Cryptographic exponentiation methods
US7483534B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi y-coordinates embedding
US7483533B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi x-coordinates embedding
US7742596B2 (en) * 2004-08-24 2010-06-22 General Dynamics C4 Systems, Inc. Reliable elliptic curve cryptography computation
US20060078790A1 (en) * 2004-10-05 2006-04-13 Polyplus Battery Company Solid electrolytes based on lithium hafnium phosphate for active metal anode protection
US7490239B2 (en) * 2005-01-07 2009-02-10 First Data Corporation Facilitating digital signature based on ephemeral private key
US20060153367A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Digital signature system based on shared knowledge
US20060153369A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Providing cryptographic key based on user input data
US7593527B2 (en) * 2005-01-07 2009-09-22 First Data Corporation Providing digital signature and public key based on shared knowledge
US7936869B2 (en) * 2005-01-07 2011-05-03 First Data Corporation Verifying digital signature based on shared knowledge
US20060153364A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Asymmetric key cryptosystem based on shared knowledge
US20060156013A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Digital signature software using ephemeral private key and system
US7869593B2 (en) * 2005-01-07 2011-01-11 First Data Corporation Software for providing based on shared knowledge public keys having same private key
US7693277B2 (en) * 2005-01-07 2010-04-06 First Data Corporation Generating digital signatures using ephemeral cryptographic key
US20060153370A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Generating public-private key pair based on user input data
US8467535B2 (en) * 2005-01-18 2013-06-18 Certicom Corp. Accelerated verification of digital signatures and public keys
ATE533103T1 (de) 2005-01-18 2011-11-15 Certicom Corp Beschleunigte verifikation digitaler signaturen und öffentlicher schlüssel
FR2881300B1 (fr) * 2005-01-21 2007-03-16 Gemplus Sa Procede de generation d'une courbe elliptique, application a un procede cryptographique, et procede cryptographique une telle courbe
KR100817048B1 (ko) * 2005-03-05 2008-03-26 삼성전자주식회사 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치
KR100699836B1 (ko) * 2005-03-19 2007-03-27 삼성전자주식회사 스칼라 곱에서 dfa 대책을 위한 장치 및 방법
DE602005020702D1 (de) 2005-10-18 2010-05-27 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über primkörpern für nebenkanal-attacken-beständige kryptosysteme
DE602005020991D1 (de) * 2005-10-28 2010-06-10 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen ellir nebenkanalattacken-beständige kryptosysteme
US7664258B2 (en) * 2005-12-28 2010-02-16 Microsoft Corporation Randomized sparse formats for efficient and secure computation on elliptic curves
US7912216B2 (en) * 2006-03-03 2011-03-22 Safenet, Inc. Elliptic curve cryptosystem optimization using two phase key generation
US7664259B2 (en) * 2006-03-09 2010-02-16 Motorola, Inc. Encryption and verification using partial public key
US8036379B2 (en) * 2006-03-15 2011-10-11 Microsoft Corporation Cryptographic processing
US8311214B2 (en) * 2006-04-24 2012-11-13 Motorola Mobility Llc Method for elliptic curve public key cryptographic validation
US7992203B2 (en) 2006-05-24 2011-08-02 Red Hat, Inc. Methods and systems for secure shared smartcard access
US8180741B2 (en) 2006-06-06 2012-05-15 Red Hat, Inc. Methods and systems for providing data objects on a token
US8098829B2 (en) * 2006-06-06 2012-01-17 Red Hat, Inc. Methods and systems for secure key delivery
US8495380B2 (en) 2006-06-06 2013-07-23 Red Hat, Inc. Methods and systems for server-side key generation
US8332637B2 (en) 2006-06-06 2012-12-11 Red Hat, Inc. Methods and systems for nonce generation in a token
US8364952B2 (en) 2006-06-06 2013-01-29 Red Hat, Inc. Methods and system for a key recovery plan
US7822209B2 (en) 2006-06-06 2010-10-26 Red Hat, Inc. Methods and systems for key recovery for a token
US9769158B2 (en) 2006-06-07 2017-09-19 Red Hat, Inc. Guided enrollment and login for token users
US8589695B2 (en) 2006-06-07 2013-11-19 Red Hat, Inc. Methods and systems for entropy collection for server-side key generation
US8707024B2 (en) 2006-06-07 2014-04-22 Red Hat, Inc. Methods and systems for managing identity management security domains
US8099765B2 (en) 2006-06-07 2012-01-17 Red Hat, Inc. Methods and systems for remote password reset using an authentication credential managed by a third party
US8412927B2 (en) 2006-06-07 2013-04-02 Red Hat, Inc. Profile framework for token processing system
US8787566B2 (en) 2006-08-23 2014-07-22 Red Hat, Inc. Strong encryption
US8806219B2 (en) 2006-08-23 2014-08-12 Red Hat, Inc. Time-based function back-off
US8074265B2 (en) 2006-08-31 2011-12-06 Red Hat, Inc. Methods and systems for verifying a location factor associated with a token
US8356342B2 (en) 2006-08-31 2013-01-15 Red Hat, Inc. Method and system for issuing a kill sequence for a token
US9038154B2 (en) 2006-08-31 2015-05-19 Red Hat, Inc. Token Registration
US8977844B2 (en) 2006-08-31 2015-03-10 Red Hat, Inc. Smartcard formation with authentication keys
US8693690B2 (en) 2006-12-04 2014-04-08 Red Hat, Inc. Organizing an extensible table for storing cryptographic objects
US8813243B2 (en) 2007-02-02 2014-08-19 Red Hat, Inc. Reducing a size of a security-related data object stored on a token
US7856101B2 (en) * 2007-02-07 2010-12-21 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication
US8639940B2 (en) 2007-02-28 2014-01-28 Red Hat, Inc. Methods and systems for assigning roles on a token
US8832453B2 (en) 2007-02-28 2014-09-09 Red Hat, Inc. Token recycling
US9081948B2 (en) 2007-03-13 2015-07-14 Red Hat, Inc. Configurable smartcard
US8073139B2 (en) * 2007-07-17 2011-12-06 Certicom Corp. Method of compressing a cryptographic value
US8117447B2 (en) * 2008-01-10 2012-02-14 Industrial Technology Research Institute Authentication method employing elliptic curve cryptography
DE102008046291B4 (de) * 2008-09-08 2012-02-23 Siemens Aktiengesellschaft Effiziente Speicherung kryptographischer Parameter
KR101006358B1 (ko) 2008-11-13 2011-01-10 단국대학교 산학협력단 실수체 기반의 타원 곡선 암호 시스템 및 그 방법
CN101515853B (zh) * 2009-03-09 2011-05-04 深圳同方电子设备有限公司 信息终端及其信息安全装置
US8553878B2 (en) * 2010-04-14 2013-10-08 Apple Inc. Data transformation system using cyclic groups
US8560856B2 (en) 2010-10-01 2013-10-15 Futurewei Technologies, Inc. Lightweight secure neighbor discovery protocol for low-power and lossy networks
FR2975799B1 (fr) * 2011-05-27 2013-06-21 Oberthur Technologies Procede d'encodage cryptographique sur une courbe elliptique
EP2718844B1 (de) 2011-06-06 2019-08-07 Certicom Corp. Quadrierung von finiten binärfeldelementen
US20130091353A1 (en) * 2011-08-01 2013-04-11 General Instrument Corporation Apparatus and method for secure communication
US8745376B2 (en) 2011-10-14 2014-06-03 Certicom Corp. Verifying implicit certificates and digital signatures
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
FR3001315B1 (fr) * 2013-01-18 2016-05-06 Inside Secure Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
CN106664202B (zh) 2014-06-13 2020-04-03 百可德罗德公司 提供多个设备上的加密的方法、系统和计算机可读介质
US9703979B1 (en) * 2014-06-13 2017-07-11 BicDroid Inc. Methods and computer program products for encryption key generation and management
US9553723B2 (en) * 2014-11-14 2017-01-24 Unsene, ehf. Multi-dimensional encryption
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US9635003B1 (en) * 2015-04-21 2017-04-25 The United States Of America As Represented By The Director, National Security Agency Method of validating a private-public key pair
AU2017223133B2 (en) 2016-02-23 2022-09-08 nChain Holdings Limited Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys
EA201891829A1 (ru) 2016-02-23 2019-02-28 Нчейн Холдингс Лимитед Способ и система для эффективного перевода криптовалюты, связанной с заработной платой, в блокчейне для создания способа и системы автоматизированной выплаты заработной платы на основе смарт-контрактов
AU2017222421B2 (en) 2016-02-23 2022-09-01 nChain Holdings Limited Personal device security using elliptic curve cryptography for secret sharing
BR112018016821A2 (pt) 2016-02-23 2018-12-26 Nchain Holdings Ltd sistema e métodos implementados por computador
WO2017145004A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
SG10202007904SA (en) 2016-02-23 2020-10-29 Nchain Holdings Ltd A method and system for securing computer software using a distributed hash table and a blockchain
KR20180115768A (ko) 2016-02-23 2018-10-23 엔체인 홀딩스 리미티드 블록체인으로부터 데이터의 안전한 추출을 위한 암호화 방법 및 시스템
JP6833861B2 (ja) 2016-02-23 2021-02-24 エヌチェーン ホールディングス リミテッドNchain Holdings Limited ブロックチェーンシステム内におけるフィードバックを統合したエージェントベースチューリング完全なトランザクション
US11606219B2 (en) 2016-02-23 2023-03-14 Nchain Licensing Ag System and method for controlling asset-related actions via a block chain
CN115641131A (zh) 2016-02-23 2023-01-24 区块链控股有限公司 在区块链上安全转移实体的方法和系统
ES2680851T3 (es) 2016-02-23 2018-09-11 nChain Holdings Limited Registro y método de gestión automática para contratos inteligentes ejecutados por cadena de bloques
CN117611331A (zh) 2016-02-23 2024-02-27 区块链控股有限公司 用于使用区块链在点对点分布式账簿上有效转移实体的方法及系统
JP6925346B2 (ja) 2016-02-23 2021-08-25 エヌチェーン ホールディングス リミテッドNchain Holdings Limited ブロックチェーンベースのトークナイゼーションを用いた交換
US11182782B2 (en) 2016-02-23 2021-11-23 nChain Holdings Limited Tokenisation method and system for implementing exchanges on a blockchain
GB2561729A (en) 2016-02-23 2018-10-24 Nchain Holdings Ltd Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
US10129026B2 (en) * 2016-05-03 2018-11-13 Certicom Corp. Method and system for cheon resistant static diffie-hellman security
US10484173B2 (en) * 2017-01-03 2019-11-19 Nxp B.V. X-only generic mapping function for PACE protocol
US11146397B2 (en) * 2017-10-31 2021-10-12 Micro Focus Llc Encoding abelian variety-based ciphertext with metadata
CN107797790B (zh) * 2017-11-03 2021-07-09 深圳职业技术学院 一种基于全一不可约多项式的有限域求逆器
US11431477B2 (en) 2018-05-14 2022-08-30 nChain Holdings Limited Computer-implemented systems and methods for using a blockchain to perform an atomic swap
GB201815396D0 (en) 2018-09-21 2018-11-07 Nchain Holdings Ltd Computer implemented system and method
TWI672932B (zh) 2018-09-27 2019-09-21 國立交通大學 基於質數陣列的後量子非對稱密鑰產生方法及系統、加密方法、解密方法及加密通訊系統
GB201909960D0 (en) 2019-07-11 2019-08-28 Nchain Holdings Ltd Computer-implemented system and method
CN118659886A (zh) * 2024-08-14 2024-09-17 北京信安世纪科技股份有限公司 数据加密方法、数据解密方法、装置、设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2536928B1 (fr) * 1982-11-30 1989-10-06 France Etat Systeme pour chiffrer et dechiffrer des informations, du type utilisant un systeme de dechiffrement a cle publique
US4745568A (en) * 1986-12-16 1988-05-17 Onyszchuk Ivan M Computational method and apparatus for finite field multiplication
EP0246823A3 (en) * 1986-05-22 1989-10-04 Racal-Guardata Limited Data communication systems and methods
US4748668A (en) * 1986-07-09 1988-05-31 Yeda Research And Development Company Limited Method, apparatus and article for identification and signature
US5218637A (en) * 1987-09-07 1993-06-08 L'etat Francais Represente Par Le Ministre Des Postes, Des Telecommunications Et De L'espace Method of transferring a secret, by the exchange of two certificates between two microcomputers which establish reciprocal authorization
DE3855497T2 (de) * 1988-10-18 1997-03-13 Philips Electronics Nv Datenverarbeitungsgerät zur Berechnung eines multiplikativ invertierten Elements eines endigen Körpers
GB9008362D0 (en) * 1990-04-12 1990-06-13 Hackremco No 574 Limited Banking computer system
ATE119726T1 (de) * 1990-10-24 1995-03-15 Omnisec Ag Geheimübertragungssystem mit möglichkeit zur verschlüsselten kommunikation zwischen benutzern mit gesichertem schlüssel, welcher ohne benutzereinwirkung bestimmt wird.
DE69113245D1 (de) * 1991-03-14 1995-10-26 Omnisec Ag Regensdorf Verschlüsselungssystem mit öffentlichem Schlüssel unter Verwendung elliptischer Kurven über Ringe.
US5272755A (en) * 1991-06-28 1993-12-21 Matsushita Electric Industrial Co., Ltd. Public key cryptosystem with an elliptic curve
US5351297A (en) * 1991-06-28 1994-09-27 Matsushita Electric Industrial Co., Ltd. Method of privacy communication using elliptic curves
US5271061A (en) * 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5159632A (en) * 1991-09-17 1992-10-27 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5396558A (en) * 1992-09-18 1995-03-07 Nippon Telegraph And Telephone Corporation Method and apparatus for settlement of accounts by IC cards
US5442707A (en) * 1992-09-28 1995-08-15 Matsushita Electric Industrial Co., Ltd. Method for generating and verifying electronic signatures and privacy communication using elliptic curves
JPH08504962A (ja) * 1992-12-22 1996-05-28 テルストラ・コーポレイション・リミテッド 暗号化方法
US5497423A (en) * 1993-06-18 1996-03-05 Matsushita Electric Industrial Co., Ltd. Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication

Also Published As

Publication number Publication date
WO1996004602A1 (en) 1996-02-15
DE69534603D1 (de) 2005-12-15
EP0804758A1 (de) 1997-11-05
US6618483B1 (en) 2003-09-09
US6141420A (en) 2000-10-31
AU3073595A (en) 1996-03-04
EP0804758B1 (de) 2005-11-09

Similar Documents

Publication Publication Date Title
DE69534603T2 (de) Verschlüsselungssystem für elliptische kurve
DE69903854T2 (de) Verfahren zur beschleunigung kryptographischer operationen auf elliptischen kurven
DE69917592T2 (de) Gegen stromverbrauchsignaturanfall beständige kryptographie
DE60005284T2 (de) Berechnungsverfahren für kryptographie mittels elliptischer kurven
DE2843583C2 (de) Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal
DE69829967T2 (de) Verfahren und vorrichtung zur schnellen elliptischen verschlüsselung mit unmittelbarer einbettung
EP0472714B1 (de) Verfahren zur authentifizierung eines eine datenstation benutzenden anwenders
DE60125710T2 (de) Manipulationssichere Methode zur modularen Multiplikation
DE60119620T2 (de) Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung
DE69935469T2 (de) Verfahren zur schnellen Ausführung einer Entschlüsselung oder einer Authentifizierung
DE69633590T2 (de) Verfahren zur Unterschrift und zur Sitzungsschlüsselerzeugung
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
DE69920875T2 (de) Vorrichtung und Verfahren zum Berechnen einer digitalen Unterschrift
DE69838258T2 (de) Public-Key-Datenübertragungssysteme
DE102010002241B4 (de) Vorrichtung und Verfahren zur effizienten einseitigen Authentifizierung
DE60026868T2 (de) Ein einfaches implementierungsverfahren für kryptographische primitiva mittels elementar-register-operationen
DE60223775T2 (de) Vorrichtung zum Konvertieren einer elliptischen Kurve
CH694603A5 (de) Identifizierungsverfahren.
CH708239B1 (de) Schlüsseleinigungsprotokoll.
EP1922837B1 (de) Verfahren zum sicheren ver- oder entschlüsseln einer nachricht
EP1298834A1 (de) Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
EP1346509B1 (de) Verfahren und Vorrichtung zum Ermitteln eines Schlüsselpaars und zum Erzeugen von RSA-Sclüsseln
DE69735290T2 (de) Verfahren zur unsymmetrischen kryptographischen kommunikation und zugehöriger tragbarer gegenstand
CH711134A2 (de) Schlüsselzustimmungsprotokoll.
DE60117813T2 (de) Verfahren und Vorrichtung zur Speicherung und wiedergewinnung eones Privaten Kryptoschlüssels

Legal Events

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

Representative=s name: MERH-IP MATIAS ERNY REICHL HOFFMANN, 80336 MUENCHE