DE102017117907B4 - Durchführen einer kryptografischen Operation - Google Patents
Durchführen einer kryptografischen Operation Download PDFInfo
- Publication number
- DE102017117907B4 DE102017117907B4 DE102017117907.0A DE102017117907A DE102017117907B4 DE 102017117907 B4 DE102017117907 B4 DE 102017117907B4 DE 102017117907 A DE102017117907 A DE 102017117907A DE 102017117907 B4 DE102017117907 B4 DE 102017117907B4
- Authority
- DE
- Germany
- Prior art keywords
- modulo
- lifted
- value
- coefficients
- modulus
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000004364 calculation method Methods 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 33
- 239000013598 vector Substances 0.000 claims description 17
- 239000011159 matrix material Substances 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 230000009467 reduction Effects 0.000 description 14
- 238000013459 approach Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000007792 addition Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000005672 electromagnetic field Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- RNAMYOYQYRYFQY-UHFFFAOYSA-N 2-(4,4-difluoropiperidin-1-yl)-6-methoxy-n-(1-propan-2-ylpiperidin-4-yl)-7-(3-pyrrolidin-1-ylpropoxy)quinazolin-4-amine Chemical compound N1=C(N2CCC(F)(F)CC2)N=C2C=C(OCCCN3CCCC3)C(OC)=CC2=C1NC1CCN(C(C)C)CC1 RNAMYOYQYRYFQY-UHFFFAOYSA-N 0.000 description 1
- 239000008000 CHES buffer Substances 0.000 description 1
- 241001295925 Gegenes Species 0.000 description 1
- MKWKNSIESPFAQN-UHFFFAOYSA-N N-cyclohexyl-2-aminoethanesulfonic acid Chemical compound OS(=O)(=O)CCNC1CCCCC1 MKWKNSIESPFAQN-UHFFFAOYSA-N 0.000 description 1
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3026—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
Abstract
Verfahren zum Durchführen einer kryptografischen gitterbasierten Operation in einer Sicherheitsvorrichtung, wobei sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um zumindest einen teilweisen Schutz gegen Seitenkanalangriffe zu erzielen, wobei die Sicherheitsvorrichtung eine integrierte Schaltung, ein Hardware-Sicherheitsmodul oder ein Trusted Platform-Modul ist oder umfasst, wobei das Verfahren die folgenden Schritte umfasst:(a) Liften von Koeffizienten einer Datenstruktur von einer Repräsentation modulo q in eine Repräsentation modulo q', wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind;(b) Randomisieren der Koeffizienten in modulo q', wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird;(c) Durchführen einer Operation auf den gelifteten und randomisierten Koeffizienten;(d) Reduzieren der gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q.
Description
- Ausführungsformen der vorliegenden Erfindung betreffen einen Ansatz zur effizienten Durchführung einer kryptografischen Operation, insbesondere zur Verbesserung der Robustheit solcher Operationen gegen Seitenkanalangriffe.
- In [D. Catalano u.a.: The Hardness ofHensel Lifting: The Case of RSA and Discrete Logarithm, Intl. Conference on the Theory and Application of Cryptology and Information Security, Springer 2002, Seiten 299 bis 310] wird ein verbesserter Beweis bezüglicher der Einweg-Eigenschaft von RSAPs vorgeschlagen, der auf niederdimensionalen Gittern basiert.
- Aus [S. Srinivasan: Modulo Transforms - an Alternative to Lifting, Microsoft Digital Media Division, 2005] ist ein neues Paradigma bekannt für reversible Transformationen bekannt, um Integer auf Integer zu mappen.
-
EP 0 920 753 B1 betrifft ein Public-Key Kryptosystem und zeigt die Durchführung einer Operation mittels einer Sicherheitsvorrichtung. -
WO 2014 / 037 657 A1 -
WO 2017 / 008 043 A1 -
US 2017 / 0 134 157 A1 -
US 2013 / 0 216 044 A1 - Die Aufgabe der hier beschriebenen Lösung zielt darauf, die Chancen erfolgreicher Seitenkanalangriffe zu reduzieren.
- Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
- Die hier vorgeschlagenen Beispiele können insbesondere auf mindestens einer der folgenden Lösungen basieren. In bestimmten Kombinationen könnten die folgenden Merkmale verwendet werden, um ein gewünschtes Ergebnis zu erzielen. Die Merkmale des Verfahrens könnten mit einem oder mehreren beliebigen Merkmalen der Vorrichtung, der Einrichtung oder des Systems kombiniert werden, oder umgekehrt.
- Ein Verfahren zum Durchführen einer kryptografischen gitterbasierten Operation in einer Sicherheitsvorrichtung wird vorgeschlagen, wobei sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um zumindest einen teilweisen Schutz gegen Seitenkanalangriffe zu erzielen, wobei die Sicherheitsvorrichtung eine integrierte Schaltung, ein Hardware-Sicherheitsmodul oder ein Trusted Platform-Modul ist oder umfasst, wobei das Verfahren umfasst:
- (a) Liften von Koeffizienten einer Datenstruktur von einer Repräsentation modulo q zu einer Repräsentation modulo q', wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind;
- (b) Randomisieren der Koeffizienten in modulo q', wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird;
- (c) Durchführen einer Operation an den gelifteten und randomisierten Koeffizienten;
- (d) Reduzieren der gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q.
- Die Operation unterliegt insbesondere der Geheimhaltung. Es kann insbesondere eine kryptografische Operation oder eine Operation sein, die ein Teil einer kryptografischen Operation ist.
- Es wird angemerkt, dass (a) und (b) in einem einzelnen Lifting- und Randomisierungsschritt kombiniert werden können, d.h. Bestimmung der randomisierten Koeffizienten im gelifteten Raum q'.
- Es wird auch angemerkt, dass die ganzen Zahlen q und q' voneinander verschieden sind, und dass q'>q.
- Ferner wird angemerkt, dass in Schritt (b) das Ergebnis der Multiplikation zu dem Koeffizienten addiert wird, und das Ergebnis dieser Operation wird modulo q' bestimmt, was der Tatsache entspricht, dass die gelifteten Koeffizienten auf die Repräsentation modulo q' „geliftet“ werden.
- In einer Ausführungsform ist der Wert von q' größer als der Wert von q.
- Es ist insbesondere eine Option, dass q, multipliziert mit einer ganzen Zahl k, q' ergibt, d.h. q' = k - q.
- In einer Ausführungsform umfasst die Datenstruktur mindestens eines der Folgenden: ein Polynom, eine Matrix oder einen Vektor.
- Die Datenstruktur kann insbesondere ein Polynom f im Ring Zq [x]/(f) sein. Das Polynom f kann als Beispiel definiert werden als f = xn + 1 oder als f = xn - 1.
- In einer Ausführungsform ist die Operation eine arithmetische Operation.
- Die gitterbasierte Kryptografie ist ein kryptografisches System, dessen Sicherheit auf der Härte bestimmter mathematisch harter Probleme in Gittern basiert. Ein Gitter ist eine Struktur, die durch ganzzahlige lineare Kombinationen von Basisvektoren geschaffen wird. Somit kann ein Gitter als regelmäßige Struktur in einem n-dimensionalen Raum beschrieben werden. In diesem n-dimensionalen Raum sind bestimmte fundamentale Problem, wie das Finden einer kurzen Basis oder eines kurzen Vektors, mathematisch hart. Üblicherweise kann die Härte des Aufbrechens eines gitterbasierten Krypto-Systems reduziert werden oder mit der Härte des Lösens eines solchen fundamentalen Problems verbunden sein.
- In einer Ausführungsform umfasst das Verfahren ferner nach Schritt (c):
- (c1) Wiederholen der Schritte (b) und (c) mindestens einmal, bevor zu Schritt (d) abgezweigt wird.
- Daher kann eine weitere Randomisierung gemäß Schritt (b) durchgeführt werden, wobei ein weiterer randomisierter Wert verwendet wird, um mit dem Wert von q multipliziert zu werden, und das Ergebnis dieser Multiplikation wird mit jedem der Koeffizienten addiert, die das Ergebnis der in Schritt (c) durchgeführten Operation sind; dann wird eine weitere Operation gemäß Schritt (c) durchgeführt, was zu noch einem weiteren Satz von Koeffizienten führt. Danach führt die Reduktion gemäß Schritt (d) zu (ungelifteten) Koeffizienten in der Repräsentation modulo q.
- In einer Ausführungsform ist die Datenstruktur eine geheime Datenstruktur.
- In einer Ausführungsform ist der Wert von q und/oder der Wert von q' eine Primzahl oder eine Zweierpotenz.
- In einer Ausführungsform wird der Wert von q' so ausgewählt, dass er einer Breite einer integrierten Verarbeitungseinheit entspricht.
- Die Breite der Verarbeitungseinheit kann eine Breite eines Busses sein. Die Breite kann insbesondere eine Anzahl von Bits definieren, die einer einzelnen Operation der integrierten Verarbeitungseinheit unterworfen werden.
- Die integrierte Verarbeitungseinheit kann ein Prozessor, eine Steuereinheit, eine FPGA, ein digitaler Signalprozessor oder ein eingebetteter Addierer und/oder Multiplizierer sein.
- In einer Ausführungsform variiert der Wert von q'.
- Der Wert von q' kann aus mindestens zwei Werten in Abhängigkeit z.B. vom Sicherheitsgrad ausgewählt werden.
- In einer Ausführungsform wird das Verfahren zum Betreiben einer Verarbeitungsvorrichtung verwendet, insbesondere einer der Folgenden:
- - einer FPGA,
- - einer Verarbeitungseinheit,
- - einer Steuereinheit,
- - einer Smartcard.
- Ebenso wird eine Vorrichtung bereitgestellt, wobei die Vorrichtung umfasst:
- - eine Verarbeitungseinheit,
- - eine Krypto-Einheit,
- - einen Bus, der die Verarbeitungseinheit mit der Krypto-Einheit koppelt,
- - wobei die Krypto-Einheit eingerichtet ist:
- (a) Koeffizienten einer Datenstruktur von einer Repräsentation modulo q zu einer Repräsentation modulo q' zu liften, wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind;
- (b) die Koeffizienten in modulo q' zu randomisieren, wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird;
- - wobei die Verarbeitungseinheit eingerichtet ist:
- (c) eine Operation an den gelifteten und randomisierten Koeffizienten durchzuführen;
- - und wobei die Krypto-Einheit eingerichtet ist:
- (d) die gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q zu reduzieren.
- Es wird angemerkt, dass die Vorrichtung eine Sicherheitsvorrichtung sein kann, die insbesondere eine integrierte Schaltung (IC), ein Hardware-Sicherheitsmodul (HSM), ein Trusted Platform-Modul (TPM) sein oder umfassen kann.
- Die Krypto-Einheit kann eines der Folgenden sein oder umfassen: ein Krypto-Prozessor, ein Krypto-Teil einer Sicherheitssteuereinheit oder eine Sicherheitssteuereinheit. Die Krypto-Einheit kann auch ein Krypto-Kern oder ein Krypto-Modul sein oder diese umfassen.
- Die Vorrichtung kann eine Sicherheitssteuereinheit oder ein Dongle sein.
- Die Vorrichtung kann insbesondere Hardware- und Software-Teile umfassen. Sie kann insbesondere eine Hardware-Vertrauenskette umfassen.
- Ferner wird angemerkt, dass die Krypto-Einheit ein HSM oder ein TPM sein oder umfassen kann. Es ist auch eine Option, dass das TPM eine CPU, ein Krypto-Modul und einen Krypto-Kern umfasst.
- In einer Ausführungsform ist die Vorrichtung eine FPGA, eine Verarbeitungseinheit, eine Steuereinheit, eine Smartcard-Integrationsschaltung (Smartcard-IC) oder eine Smartcard.
- Ebenso wird ein Computerprogrammprodukt vorgeschlagen, welches direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung geladen werden kann, umfassend Software-Codeabschnitte als Anweisung an eine Datenverarbeitungsanlage zum Vornehmen der Schritte des Verfahrens, wie hier beschrieben.
- Zusätzlich wird das oben angeführte Problem durch ein computerlesbares Medium gelöst, z.B. einen Speicher einer beliebigen Art, mit computerausführbaren Instruktionen, die geeignet sind zu bewirken, dass ein Computersystem das Verfahren vornimmt, wie hier beschrieben.
- Ferner wird das oben angeführte Problem durch ein Kommunikationssystem gelöst, das mindestens eine Vorrichtung umfasst, wie hier beschrieben.
- Ausführungsformen werden mit Bezugnahme auf die Zeichnungen gezeigt und veranschaulicht. Die Zeichnungen dienen der Veranschaulichung des Grundprinzips, so dass nur Aspekte veranschaulicht werden, die für das Verständnis des Grundprinzips notwendig sind. Die Zeichnungen sind nicht maßstabgetreu. In den Zeichnungen bezeichnen dieselben Bezugszahlen ähnliche Merkmale.
-
1 zeigt ein Beispiel eines Diagramms, umfassend Schritte zum Erzielen eines Schutzes gegen Seitenkanalangriffe; -
2 zeigt ein Beispiel einer Anordnung einer Verarbeitungsvorrichtung, umfassend eine CPU, einen RAM, einen nicht-flüchtigen Speicher, ein Krypto-Modul, ein analoges Modul, eine Eingabe/Ausgabe-Schnittstelle und einen Hardware-Zufallszahlengenerator. - Es besteht ein allgemeiner Trend, sich von klassischen asymmetrischen Krypto-Systemen (RSA/ECC) zu Schemata zu bewegen, die von Quantencomputern nicht erfolgreich angegriffen werden können. Auch wenn derzeit Quantencomputer aufgrund der technischen Komplexität und technischer Herausforderungen nicht verfügbar sind, könnten sie in der Lage sein, RSA und ECC in polynominaler Zeit aufzubrechen. Beispielsweise untersuchen Standardisierungsgremien, wie NIST (National Institute of Standards and Technology), alternative Krypto-Systeme.
- Eine Klasse von Schemata, von denen angenommen wird, dass sie Angriffen von Quantencomputern standhalten, sind gitterbasierte öffentliche Schlüsselverschlüsselungs-, Schlüsselaustausch- oder Signaturschemata. Sie könnten die Nachfolger von RSA und ECC werden und arbeiten entweder an großen Matrizen (Standardgitter) oder an Polynom-Ringen (Idealgitter). Für die gitterbasierte Kryptografie wird z.B. auf https://en.wikipedia.org/wiki/Lattice-based_cryptography verwiesen.
- Es ist jedoch nicht viel hinsichtlich des Schutzes solcher Signaturschemata gegen Implementierungsangriffe bekannt. Insbesondere Gegenmaßnahmen gegen Seitenkanalangriffe sind erforderlich, wenn diese Signaturschemata auf einer sicheren Chipkarten-Steuereinheit oder in irgendeiner feindlichen Umgebung ausgeführt werden.
- Die gitterbasierte (Lattice-based) Kryptografie ist ein kryptografisches System, dessen Sicherheit auf der Härte bestimmter mathematisch harter Probleme in Gittern basiert oder mit der Härte dieser verbunden ist. Ein Gitter ist eine Struktur, die durch ganzzahlige lineare Kombinationen von Basisvektoren geschaffen wird. Somit kann ein Gitter als regelmäßige Struktur in einem n-dimensionalen Raum beschrieben werden. In diesem n- dimensionalen Raum sind bestimmte fundamentale Probleme, wie das Finden einer kurzen Basis oder eines kurzen Vektors, mathematisch hart. Üblicherweise kann die Härte des Aufbrechens eines gitterbasierten Krypto-Systems reduziert werden oder mit der Härte des Lösens eines solchen fundamentalen Problems verbunden sein.
- Hier werden die folgenden Abkürzungen und Referenzen verwendet:
- q
- ist eine ganze Zahl,
- q'
- ist eine ganze Zahl,
- k
- ist eine ganze Zahl,
- r
- ist eine ganze Zahl (zufällig ausgewählt),
- vi
- ist ein Koeffizient eines Vektors oder Polynoms in einer Position i,
- ri
- ist ein zufälliger Wert für den Koeffizienten vi,
- Zq
- ist der Ring von ganzen Zahlen modulo q, welcher der Quotientenring Z/qZ von Äquivalenzklassen von ganzen Zahlen modulo q ist,
- Zq,
- ist ein Ring von ganzen Zahlen modulo q',
- Z[x]/(f)
- ist ein Ring von ganzzahligen Polynomen modulo f; Elemente v ∈ Z[x]/(f) können durch ganzzahlige Polynome mit einem Grad kleiner als die ganze Zahl n oder alternativ dazu als Vektor von Koeffizienten v ∈ Zn repräsentiert werden,
- Zq[x]/(f)
- ist ein Ring von ganzzahligen Polynomen modulo sowohl das Polynom f als auch die ganze Zahl q; die Elemente v ∈ Zq[x]/(f) können durch ganzzahlige Polynome mit einem Grad kleiner als n mit Koeffizienten reduziert modulo q oder alternativ dazu als Koeffizientenvektor
- x
- ist die Unbestimmte,
- f
- ist ein Polynom mit einem maximalen Grad der ganzen Zahl n,
- n
- ist eine ganze Zahl, die eine Dimension (Anzahl von Koeffizienten) anzeigt,
- a
- ist ein öffentliches Polynom,
- s
- ist ein geheimes Polynom,
- FFT
- schnelle Fourier-Transformation,
- NTT
- zahlentheoretische Transformation,
- DPA
- differentielle Leistungsanalyse,
- SPA
- einfache Leistungsanalyse,
- ALU
- arithmetische Logikeinheit.
- Der Quotientenring ist eine Konstruktion in abstrakter Algebra; für Details wird z.B. auf https://en.wikipedia.org/wiki/Quotient_ring verwiesen.
- Hier beschriebene Beispiele schlagen vor, dass sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um insbesondere einen Schutz gegen Seitenkanalangriffe zu erzielen.
- Alle Hauptberechnungen in der gitterbasierten Kryptografie können modulo q vorgenommen werden. In einigen Fällen kann die ganze Zahl q ausgewählt werden, um eine bestimmte Primzahl zu sein (z.B. um die NTT zu ermöglichen, da die NTT nur effizient arbeitet, falls Parameter als bestimmte Primzahlen ausgewählt werden), oder die ganze Zahl q kann als Zweierpotenz ausgewählt werden.
-
- Wenn beispielsweise q=5 und k=3, q'=15. In einem solchen Fall ergibt x mod q' für x=10 0, auch x mod q' für x=15 ergibt 0. Daher existieren einige Werte x mod q', die zu demselben Wert modulo q führen, und als Folge kann der Wert x in redundanten Operationen existieren oder verarbeitet werden.
- Auf diese Weise können Konstanten oder Zwischenwerte (Koeffizienten von Polynomen, Matrizen oder Vektoren) effizient randomisiert werden, indem zufällig eine ganze Zahl r ausgewählt wird, und indem r · q mit einem Wert im Ring Zq, addiert wird. Dann können (insbesondere sicherheitsrelevante) Berechnungen durchgeführt werden, die zu Zwischenwerten im Ring Zq, führen. In einem abschließenden Schritt wird eine Reduktion modulo q an den Zwischenwerten vorgenommen, um das Ergebnis zu erhalten und die Randomisierung zu entfernen.
- Es wird angemerkt, dass „zufällig“ bzw. „randomisiert“ in dieser Hinsicht (z.B. zufällig auswählen oder irgendein zufälliger Wert) ein echt zufälliger, ein pseudo-zufälliger oder ein deterministischer Ansatz sein kann, um einen Wert zu erhalten. Daher kann die Eigenschaft einer solchen „Zufälligkeit“ oder irgendein zufälliger Effekt gemäß dem hiermit gemachten Vorschlag sein, dass ein Angreifer sich des Werts nicht bewusst ist, und dass Werte für mindestens einen Teil von Operationen verschieden sind. Die Zufälligkeit fügt insbesondere ein bestimmtes Ausmaß einer Entropie zwischen Werten ein, die „zufällig“ bestimmt werden, d.h. generiert oder ausgewählt werden.
- Wenn eine Berechnung an randomisierten Werten ausgeführt wird, werden invasive und nicht-invasive Angriffe mit dem Ziel der Extraktion eines geheimen Schlüssels oder eines Zwischenwerts aus einer Vorrichtung schwieriger. Mögliche Angriffe werden auf die Überwachung des Energieverbrauchs (DPA/SPA) oder die elektromagnetische Strahlung einer Vorrichtung gerichtet.
- Beispiel einer Implementierung:
- Derzeit gibt es zwei Arten von gitterbasierter Kryptographie, d.h. die idealgitterbasierte Kryptographie und die standardgitterbasierte Kryptographie. Der hier präsentierte Ansatz ist auf alle Arten von gitterbasierter Kryptographie anwendbar, solange Werte modulo q verwendet werden.
-
-
- Operationen in der standardgitterbasierten Kryptographie umfassen Matrix-Matrix-Multiplikationen, Matrix-Vektor-Multiplikationen oder Vektoradditionen und -subtraktionen, wobei Koeffizienten Werte im Ring von ganzen Zahlen modulo q sind.
- Wenn der hier beschriebene Ansatz verwendet wird, hat jeder Koeffizient einer Matrix oder eines Polynoms im Ring Zq, einige Repräsentationen, die jeweils einer Repräsentation im Ring Zq entsprechen. Die Repräsentation im Ring Zq, sind von einem Angreifer schwer zu unterscheiden, falls eine geeignete Randomisierung angewendet wird.
-
1 zeigt ein Beispiel eines Diagramms, das Schritte umfasst, um einen Schutz gegen Seitenkanalangriffe zu erzielen. Ein Modulus q wird angegeben. Die ganze Zahl k wird in Abhängigkeit vom erforderlichen Schutzgrad ausgewählt. - Ein Schritt 101 liefert ein geheimes Polynom s im Ring Zq[x]/(f), wobei das Polynom f als Beispiel definiert wird als f = xn + 1.
- Ein Schritt 102 umfasst eine Lifting-Operation, die Koeffizienten eines Polynoms, einer Matrix oder eines Vektors von ihrer Repräsentation modulo q zu einer Repräsentation modulo q' bewegt. In diesem Beispiel wird das Lifting für das geheime Polynom s durchgeführt. Diese Lifting-Operation kann eine Zuordnung von Speicherraum für Koeffizienten aufgrund der Tatsache erfordern, dass die Repräsentation modulo q' mehr Speicher verglichen mit der Repräsentation modulo q erfordert.
- Ein Schritt 103 umfasst eine Randomisierungsoperation: Für jeden Koeffizienten vi wird ein zufälliger Wert ri bestimmt. Der zufällige Wert ri wird mit der ganzen Zahl q multipliziert, und das Ergebnis ri · q wird zu dem Koeffizienten vi addiert. Der Koeffizient vi kann ein Koeffizient einer Matrix, eines Vektors oder eines Polynoms sein. Die Ausgabe dieses Schritts 103 ist ein randomisiertes geheimes Polynom.
- Ein Schritt 104 umfasst eine Berechnung, die unter Verwendung von bekannter algebraischer, polynominaler, Matrix- und/oder Vektorarithmetik unter Verwendung von Modulus q' durchgeführt werden kann. Dieser Ansatz kann insbesondere für FFT- und NTT-Operationen anwendbar sein.
- Vorteilhaft ist ein Angreifer, der die Berechnung beobachtet (Analyse, z.B. Energie, Zeit, elektromagnetische Emissionen), aufgrund der Randomisierungsoperation nicht in der Lage, ein Muster zu bestimmen.
- Ein optionaler Schritt 105 umfasst eine Rerandomisierungsoperation, bei der die Randomisierungsoperation auf ein bereits randomisiertes Zwischenergebnis angewendet wird. Dies ermöglicht das Einführen einer zusätzlichen Randomisierungsschicht.
- Ein optionaler Schritt 106 kann eine weitere Berechnung ähnlich dem oder verschieden von Schritt 104 durchführen.
- Ein Schritt 107 umfasst einen Reduktionsschritt, der alle Werte im Ring Zq, zurück in den Ring Zq bewegt, indem eine Berechnung modulo q vorgenommen wird.
- Im Gegensatz zu dem geheimen Polynom s könnte es ein öffentliches Polynom a im Ring Zq[x]/(f) geben, wobei f = xn + 1 (siehe Schritt 108). In einem Schritt 109 (ähnlich Schritt 102) kann eine Lifting-Operation an den Koeffizienten des öffentlichen Polynoms a durchgeführt werden. Die Ausgabe dieses Schritts 109 liefert ein geliftetes öffentliches Polynom im Ring Zq,. In einem Schritt 110 kann eine Berechnung durchgeführt werden, die ähnlich der oder verschieden von der Berechnung 104 ist. Anschließend an Schritt 110 werden der Schritt 106 und somit der Schritt 107 für (optionale) weitere Berechnungen und zum Rückführen der Werte des gelifteten öffentlichen Polynoms vom Ring Zq, zurück zum Ring Zq durchgeführt.
- In diesem Beispiel zeigt der Weg, der die Schritte 108 bis 110 umfasst, an, dass öffentliche Informationen (hier das öffentlichen Polynom a) nicht geschützt worden sein können, indem die Randomisierung und die optionale Rerandomisierung durchgeführt werden. Dies ist wegen des reduzierten Verarbeitungsaufwands für Informationen, die nicht geheim gehalten werden müssen, vorteilhaft.
- Weitere Aspekte:
- Die Effizienz dieses Ansatzes kann durch die Wahl des Modulus q beeinflusst werden. Die Größe des Modulus in der gitterbasierten Kryptografie beeinflusst die Leistung, Sicherheit und Richtigkeit von Schemata, es kann jedoch auch ein gewisser Spielraum für den Designer bleiben (z.B. durch Ausgleichen der Größe des Modulus mit der Größe des Rauschens). Ein mögliches Auswahlkriterium ist, moduli q so auszuwählen, dass sie keine geringe Dichte aufweisen, d.h. ein großes Hamming-Gewicht oder eine unregelmäßige binäre Struktur aufweisen. Als Beispiel ist für
- Somit ist die Verwendung einer redundanten Repräsentation signifikant effizienter für keine Potenz von zwei Moduli oder für Moduli mit hoher Dichte in einer binären Repräsentation.
-
- Ein weiteres Kriterium für die Auswahl des Modulus q' ist, dass der Modulus q' kleiner ist, jedoch sehr nahe bei einer spezifischen Grenze liegt, die von einer Architektur oder einem Prozessor vorgegeben wird, z.B. 8, 16, 32 oder 64 Bits für Mikrosteuereinheiten/Mikroprozessoren, oder 18 oder 36 Bits für FPGAs (z.B. Xilinx). Der Modulus q' kann insbesondere so ausgewählt werden, dass er mit der Breite eines Prozessors (z.B. digitaler Signalprozessor, DSP) und/oder eingebetteter Multiplikatoren übereinstimmt.
- Die ganze Zahl k und daher die ganze Zahl q' kann so ausgewählt werden, dass ungenutzte und ansonsten vergeudete Bits in einem Register für Randomisierungszwecke verwendet werden. In der gitterbasierten Kryptografie ist die ganze Zahl q (mit einem Betrag von z.B. 14 Bits) üblicherweise kleiner als die Größe eines Registers, das z.B. 32 Bits umfassen kann. In Hardware können die ALU (Multiplizierer, modulare Reduktion) und Register skaliert werden, ansonsten ist der Einfluss auf das Design jedoch gering. Durch das Wählen einer ausreichenden Größe für k kann die Stärke einer hinzugefügten Zufälligkeit mit dem erforderlichen Ressourcenverbrauch ausgeglichen werden.
- In diesem Fall sind zusätzliche Kosten der redundanten Repräsentationstechnik niedrig.
- Ferner kann der Modulus q' in einer solchen Weise gewählt werden (oder durch Brute Force gefunden werden), dass eine effiziente modulare Reduktion möglich ist, z.B. wenn der Modulus q' zu günstigen Konstanten bei der Barrett-Reduktion oder modularen Montgomery-Multiplikation führt.
- Es ist auch möglich, zwischen verschiedenen Werten des Modulus q' auf der Basis des erforderlichen Schutzes zu wechseln, wobei große Werte des Modulus q' für heiklere Berechnungen verwendet werden können.
- Aus Gründen der Effizienz kann es vorteilhaft sein, den Faktor k (in q' = kq) in einer solchen Weise zu wählen, dass zufällige Werte einfach zu bestimmen sind, z.B. die zufälligen Werte r zwischen 0 und k-1 zu wählen. Beispiel: Wenn der Faktor k auf 20 gesetzt wird, können die zufälligen Werte ri zwischen 0 und 19 gewählt werden.
- Dies könnte jedoch eine kostspielige Ablehnungsabtastung oder andere Schritte erfordern, so dass die Wahl einer Zweierpotenz für k zweckmäßig ist. Als Alternative können zufällige Werte ri zwischen Null und einem Zweierpotenzwert kleiner als k abgetastet werden. Beispiel: für k = 64, kann das Abtasten von zufälligen Werten ri zwischen 0 und 63 einfach sein, da dies nur die Entfernung unerwünschter Bits höherer Ordnung aus einem Strom von zufälligen Bits, jedoch keine Ablehnungsabtastung erfordert.
- Es wird angemerkt, dass die zufälligen Werte r aus einer Verteilung abgetastet werden können, die nahe bei der gleichmäßigen Verteilung liegt. In anderen Varianten könnten die Abtastwerte jedoch auch anderen Verteilungen entnommen werden, z.B. einer (kleinen) Gaußschen Verteilung oder einer geringfügig verzerrten Verteilung.
- In einigen Instanziierungen gitterbasierter Kryptografie können Koeffizienten von geheimen Polynomen, Matrizen oder Vektoren klein sein (z.B. -1, 0,1) und eine geringe Dichte aufweisen (viele Null-Koeffizienten), und diese geringe Dichte könnte von einem Angreifer detektiert werden (z.B. da Multiplikationen mit 0 weniger Energie verbrauchen als Multiplikationen mit 1). Durch die Vornahme der Lifting-Operation und der Randomisierungsoperation an Polynomen, Matrizen oder Vektoren mit geringer Dichte wird diese geringe Dichte entfernt, und Angriffe, welche die spezifische Form ausnützen, werden schwieriger.
- Die Lifting-Operation und die Randomisierungsoperation können auch in die Abtastung eines zufälligen Werts integriert werden und müssen nicht verschiedene oder getrennte Operationen sein. Als Beispiel könnte ein üblicher diskreter Gaußscher Rauschabtaster direkt in die redundante Repräsentation abtasten. Dies bedeutet im Allgemeinen, dass der Abtaster das Rauschen modulo die ganze Zahl q nicht ausgeben kann, jedoch modulo die ganze Zahl q', wobei die Randomisierung vom Abtaster bereits während des Abtastprozesses angewendet wurde. Als Beispiel einer Implementierung kann der Abtaster zuerst das Register randomisieren, das einen Rauschabtastwert enthalten wird, indem ein zufälliger Wert r ausgewählt wird, der mit der ganzen Zahl q multipliziert wird, und dann r · q im Register speichern. Der abgetastete Koeffizient kann dann direkt zu dem bereits randomisierten Register hinzugefügt werden. So wird der abgetastete Wert nicht in einer klaren oder nicht-randomisierten Weise gespeichert.
- Der präsentierte Ansatz kann an ASICs, Mikrosteuereinheiten und/oder Mikroprozessoren implementiert werden. Er kann verwendet werden, um öffentliche Schlüsselverschlüsselungs- oder Signaturschemata auf der Basis von Gitterannahmen zu schützen. In [Tim Güneysu, Vadim Lyubashevsky, Thomas Pöppelmann: Practical Lattice-Based Cryptography: A Signature Scheme for Embedded Systems. CHES 2012: 530-547] wird ein Signaturschema beschrieben, das q = 838349 und n = 512 verwendet. Die am meisten kritische geheime Schlüsseloperation ist die Berechnung der Polynome
- Ein Polynom c ist ein kleines Polynom mit geringer Dichte, das aus der Ausgabe einer Hash-Funktion generiert wird (nur 32 Bits werden auf Eins gesetzt, der Rest wird auf Null gesetzt). Diese Hash-Funktion nimmt als Eingabe eine Nachricht und eine Kombination eines Polynoms a mit den Polynomen y1 and y2. Auf diese Weise ist die Nachricht an die Polynome y1 and y2 sowie a gebunden. Das Polynom c wird zum Benutzer als Teil der Signatur zusammen mit den Polynomen z1 and z2 zurückgeführt. Für Sicherheitszwecke werden die Polynome z1 and z2 jedoch verarbeitet, bevor sie ausgegeben werden, so dass der Wert von den geheimen Schlüsselpolynomen s1 and s2 unabhängig ist.
- Die geheimen Schlüsselpolynome s1 and s2 können klein sein und können Koeffizienten umfassen, die insbesondere zufällig aus -1 oder 0 oder 1 ausgewählt werden. Um den geheimen Schlüssel zu schützen, könnten die Lifting-Operation und die Randomisierungsoperation vor jeder Operation, die geheime Schlüsselpolynome s1 and s2 oder geheime temporäre Polynome y1, y2 involviert, angewendet werden, so dass die „·“-Operation und „+“-Operation im Ring Zq,[x]/(f) angewendet werden. Ein Beispiel einer Wahl ist k = 29, so dass q' = 4292346368, d.h. q' < 232. Auf diese Weise passen Elemente, die modulo q' bestimmt werden, weiterhin in ein 32-Bit-Register.
-
- Für eine zusätzliche Sicherheit ist es auch möglich, die geheimen Schlüsselpolynome s1 and s2 (oder allgemein beliebige Werte) bereits in einer redundanten Repräsentation zu speichern (d.h. geliftet und randomisiert), und die Rerandomisierungsoperation vor jeder geheimen Schlüsseloperation vorzunehmen.
- Der hier beschriebene Ansatz kann auch in Kombination mit maskierten Implementierungen verwendet werden, wo ein geheimer Schlüssel in zwei (vorzugsweise randomisierte) Teile geteilt wird (wie z.B. in [Oscar Reparaz, Sujoy Sinha Roy, Ruan de Clercq, Frederik Vercauteren, Ingrid Verbauwhede: Masking ring-LWE. J. Cryptographic Engineering 6(2): 139-153 (2016)] vorgeschlagen). Auf diese Weise kann die Sicherheit der Maskierung mit dem verstärkten Schutz erweitert werden, wie hier beschrieben.
- Beispiel einer Ausführungsform:
- Das Folgende beschreibt Details eines Beispiels einer Ausführungsform des hier präsentierten Ansatzes:
- ganze Zahl Modulus q = 12289
- ganze Zahl k = 100
- ganze Zahl Modulus q' = k * q = 1228900
- ganze Zahl n = 8
- polynominaler Modulus f = xn-1
- Eingabe v1 = [32, 4332, 41, 232, 4343, 5343, 3131, 222]
- Eingabe v2 = [323, 121, 534, 532, 4343, 132, 332, 32]
- Eingabe v3 = [0, 1, 2, 3, 1, 4, 1, 3]
- Als Beispiel wird eine Berechnung v1·v3+v2 durchgeführt. Die „-“-Operation wird als polynominale Multiplikation im Ring Zq[x]/(f) interpretiert, umfassend die Reduktion q. Die „+“-Operation wird als polynominale Addition im Ring Zq[x]/(f) interpretiert, umfassend die Reduktion modulo q. Das Ergebnis dieser Berechnung ist [4277, 8482, 10560, 3584, 866, 6848, 8546, 7124], das geprüft werden muss (siehe unten).
- Beispiele von Schritten des hier beschriebenen Ansatzes:
- - Berechnung von v1·v3+v2 unter Verwendung von LIFTING und RANDOMIZATION in die andere Domäne,
- - COMPUTATION in dieser Domäne,
- - RE-RANDOMIZATION nach einer Berechnung, und
- - REDUCTION, um das Endergebnis zu erhalten (gleich dem erwarteten).
- LIFTING & RANDOMIZATION:
-
- v1_lifted= [786528, 28910, 331844, 270590, 913729, 840995, 1109141, 98534]
- Unter Berücksichtigung der ersten Komponente von v1_lifted und v1 führt das Lifting (und die Randomisierung) zu dem Wert 786528 auf der Basis des Werts 32. Dies wird erzielt, indem 32 + 64*12289 angewendet wird, wobei 64 der zufällige Wert r und 12289 der Modulus q ist.
- In diesem Beispiel sind die zufälligen Werte ri, die der Operation vi+ri*q unterzogen werden, um v1 auf v1_lifted zu liften, [64, 2, 27, 22, 74, 68, 90, 8]. Die folgende Tabelle fasst diese Operation für die Komponenten von v1_lifted und v1 zusammen:
i vi ri q vi + ri*q 0 32 64 12289 786528 1 4332 2 12289 28910 2 41 27 12289 331844 3 232 22 12289 270590 4 4343 74 12289 913729 5 5343 68 12289 840995 6 3131 90 12289 1109141 7 222 8 12289 98534 - v2_lifted = [516461, 36988, 270892, 627271, 28921, 245912, 799117, 675927]
- v3_lifted = [270358, 725052, 995411, 3, 995410, 860234, 417827, 184338]
-
- Dies ergibt:
- e1_lifted = [348046, 1114371, 1128325, 728103, 660129, 842368, 1101935, 818166]
- Die optionale RE-RANDOMIZATION des Zwischenergebnisses e1_lifted ergibt:
- [298890, 291008, 10026, 838704, 475794, 350808, 868444, 486363]
- Als Nächstes erfolgt die COMPUTATION eines zusätzlichen Zwischenwerts e2_lifted wie folgt:
- e2_lifted = e1_lifted + v2_lifted
- e2_lifted = [815351, 327996, 280918, 237075, 504715, 596720, 438661, 1162290]
- Bei der REDUCTION wird die redundante Repräsentation aus e2_lifted entfernt, was ergibt:
- res_final = [4277, 8482, 10560, 3584, 866, 6848, 8546, 7124].
- Dies entspricht dem Ergebnis der Initialoperation v1·v3+v2, wie oben gezeigt.
- Für Zwecke der Erläuterung: der erste Wert von res_final wird wie folgt erhalten:
- 815351 modulo 12289 = 4277.
- Die übrigen Werte von res_final werden entsprechend bestimmt.
- Hier im Nachstehenden wird der Algorithmus gezeigt, der die obigen Ergebnisse liefert. Als Beispiel wird die Programmiersprache Python verwendet:
import random #Common functions def mul(a,b,modulus): res = [0] * (n) for o1,i1 in enumerate(a): for o2, i2 in enumerate(b): res[(o1+o2) % n] = (res[(o1+o2) % n] + i1*i2) % modulus return res def add(res,a, modulus): for i in range(len(res)): res[i] = int ((res [i] + a [i]) % modulus) def to_mod(s1, modulus): res = [0]* (n) for i in range(len(res)): res[i] = s1[i] % modulus return res *Lifting def lifting(a, modulus q, modulus q prime, k): #The polynomial a has modulus modulus_q #We randomize and lift to modulus_q_prime #We add r*q for r<k to every coefficient of a res = [0]*(n) for i in ränge(len(res)): r = random.randint(0, k) res[i] = (a[i] + r*modulus_q) % modulus_qprime return res #Example #Rng is seeded with fixed value for reproducability random.seed(42) modulus q = 12289 k = 100 modulus q_prime = k * modulus_q n = 8 print "integer modulus", modulus_q print "k = ", k print "integer modulus q' = k * q = ", k * modulus_q print "integer n =", n print "polynomial modulus f = x^n-1" v1 = [32, 4332, 41, 232 ,4343, 5343, 3131, 222] v2 = [323, 121, 534, 532 ,4343, 132, 332, 32] v3 = [0, 1, 2, 3, 1, 4, 1, 3] print "v1 =", v1 print "v2 =", v2 print "v3 =", v3 print "Compute v1*v3+v2" e = mul(v1, v3, modulus q) add(e, v2, modulus q) print "Expected result (to check)" print e print "" #Perfom the lifting. Thus randomization of the signals of v1,v2,v3 v1_lifted = lifting(v1, modulus_q, modulus_q_prime, k) print "LIFTING & RANDOMIZATION: v1_lifted =", v1_lifted v2_lifted = lifting(v2, modulus_q, modulus_q_prime, k) print "LIFTING & RANDOMIZATION: v2_lifted =", v2_lifted v3_lifted = lifting(v3, modulus q, modulus q prime, k) print "LIFTING & RANDOMIZATION: v3_lifted =", v3_lifted #Nor perform computation on randomized signals print "COMPUTATION of intermediate value e1_lifted=v1_lifted*v3_lifted:" e_lifted = mul(v1_lifted, v3_lifted, modulus_q_prime) print e_lifted print "Optional: RE-RANDOMIZATION of intermediate result e1_lifted:" e_lifted = lifting(e_lifted, modulus_q, modulus_q_prime, k) print "Re-Randomized representation of e" print e_lifted print "COMPUTATION of additional intermediate value e2_lifted=e1_lifted+v2_lifted" add(e_lifted, v2_lifted, modulus_q_prime) print "e2_lifted =", e_lifted print "REDUCTION: remove redundant representation" print "The result of the computation (e2_lifted) with randomization removed" print "res_final =",to_mod(e_lifted,modulus_q)
Die hier beschriebenen Beispiele können als Instruktionen realisiert werden, die von einer Datenverarbeitungsvorrichtung, wie einem Personalcomputer, einer Mikrosteuereinheit oder einer Smartcard, verarbeitet werden.
In diesem Beispiel hat die CPU 201 Zugriff auf mindestens ein Krypto-Modul 204 über einen gemeinsam genutzten Bus 205, mit dem jedes Krypto-Modul 204 gekoppelt ist. Jedes Krypto-Modul 204 kann insbesondere einen oder mehrere Krypto-Kerne umfassen, um bestimmte kryptografische Operationen vorzunehmen. Beispiele von Krypto-Kernen sind:
- - ein AES-Kern 209,
- - ein SHA-Kern 210,
- - ein ECC-Kern 211, und
- - ein gitterbasierter Krypto- (LBC-) Kern 208.
Der gitterbasierte Krypto-Kern 208 kann vorgesehen sein, um die gitterbasierte Kryptographie zu beschleunigen.
Die CPU 201, der Hardware-Zufallszahlengenerator 212, der NVM 203, das Krypto-Modul 204, der RAM 202 und die Eingabe/Ausgabe-Schnittstelle 207 sind mit dem Bus 205 verbunden. Die Eingabe/Ausgabe-Schnittstelle 207 kann eine Verbindung 214 mit anderen Vorrichtungen aufweisen, die ähnlich der Verarbeitungsvorrichtung 200 sein können.
Das Krypto-Modul 204 kann oder kann nicht mit Hardware-basierten Sicherheitsmerkmalen ausgestattet sein.
Das analoge Modul 206 wird mit elektrischer Energie 213 über einen elektrischen Kontakt und/oder über ein elektromagnetisches Feld versorgt. Diese Energie wird zugeführt, um die Schaltungen der Verarbeitungsvorrichtung 200 anzusteuern, und kann insbesondere gestatten, dass die Eingabe/Ausgabe-Schnittstelle Verbindungen mit anderen Vorrichtungen über die Verbindung 214 initiiert und/oder aufrechterhält.
Der Bus 205 selbst kann maskiert oder nicht-maskiert sein. Instruktionen zur Verarbeitung der hier beschriebenen Schritte können insbesondere in dem NVM 203 gespeichert und von der CPU 205 verarbeitet werden. Die verarbeiteten Daten können in dem NVM 203 oder in dem RAM 202 gespeichert werden. Unterstützende Funktionen können von den Krypto-Modulen 204 vorgesehen werden (z.B. Expansion von pseudo-zufälligen Daten). Zufallszahlen werden von dem Hardware-Zufallszahlengenerator 212 geliefert.
Schritte des hier beschriebenen Verfahrens können ausschließlich oder mindestens teilweise auf dem Krypto-Modul 204 durchgeführt werden, z.B. auf dem gitterbasierten Krypto-Kern 208. Beispielsweise können Instruktionen in dem gitterbasierten Krypo-Kern 208 gespeichert werden, oder sie können von der CPU 201 über den Bus 205 geliefert werden. Daten können lokal mit dem gitterbasierten Krypto-Kern 208 gespeichert werden. Es ist auch eine Option, dass die Daten temporär in dem RAM 202 oder dem NVM 203 gespeichert werden. Der gitterbasierte Krypto-Kern 208 kann auch andere Krypto-Module verwenden, um unterstützende Funktionen vorzusehen (z.B. Expansion von pseudo-zufälligen Daten). Der gitterbasierte Krypto-Kern 208 kann auch einen Hardware-Zufallszahlengenerator 212 oder ein Mittel umfassen, um physikalische und/oder Software-Zufallszahlen zu generieren.
Die Verarbeitungsvorrichtung 200 kann eine Chipkarte sein, die von einem direkten elektrischen Kontakt oder durch ein elektromagnetisches Feld mit Energie versorgt wird. Die Verarbeitungsvorrichtung 200 kann eine feste Schaltung sein oder auf rekonfigurierbarer Hardware (z.B. feldprogrammierbare Gate-Anordnung, FPGA) basieren. Die Verarbeitungsvorrichtung 200 kann mit einem Personalcomputer, einer Mikrosteuereinheit, einer FPGA oder einem SmartPhone gekoppelt sein.
In einem oder mehreren Beispielen können die hier beschriebenen Funktionen mindestens teilweise in Hardware implementiert werden, wie spezifischen Hardware-Komponenten oder einem Prozessor. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination davon implementiert werden. Bei einer Implementierung in Software können die Funktionen gespeichert werden oder als eine oder mehrere Instruktionen oder Code auf einem computerlesbaren Medium übertragen und von einer Hardware-basierten Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien umfassen, die einem greifbaren Medium entsprechen, wie einem Datenspeichermedium, oder Kommunikationsmedien, die ein beliebiges Medium umfassen, das den Transfer eines Computerprogramms von einem Ort zu einem anderen erleichtert, z.B. gemäß einem Kommunikationsprotokoll. Auf diese Weise können computerlesbare Medien allgemein entsprechen: (1) greifbaren computerlesbaren Speichermedien, die nicht-transitorisch sind, oder (2) einem Kommunikationsmedium, wie einem Signal oder einer Trägerwelle. Datenspeichermedien können beliebige verfügbare Medien sein, auf die durch einen oder mehrere Computer oder einen oder mehrere Prozessoren zugegriffen werden kann, um Instruktionen, Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium umfassen.
Als Beispiel und nicht als Einschränkung können solche computerlesbaren Speichermedien umfassen: RAM, ROM, EEPROM, CD-ROM oder einen anderen optischen Plattenspeicher, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen, Flash-Speicher oder irgendein anderes Medium, das verwendet werden kann, um einen gewünschten Programmcode in der Form von Instruktionen oder Datenstrukturen zu speichern, und auf das von einem Computer zugegriffen werden kann. Auch wird eine beliebige Verbindung geeignet als computerlesbares Medium bezeichnet, d.h. ein computerlesbares Übertragungsmedium. Wenn beispielsweise Instruktionen von einer Website, einem Server oder einer anderen entfernen Quelle unter Verwendung eines Koaxialkabels, eines Faseroptikkabels, eines verdrillten Paars, einer Digital Subscriber Line (DSL) oder drahtloser Technologien, wie Infrarot, Funk und Mikrowellen, übertragen werden, sind dann das Koaxialkabel, das Faseroptikkabel, das verdrillte Paar, die DSL oder die drahtlosen Technologien, wie Infrarot, Funk und Mikrowellen, in der Definition des Mediums eingeschlossen. Es ist jedoch klar, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere transiente Medien umfassen, sondern stattdessen auf nicht-transiente, greifbare Speichermedien gerichtet sind. Disk und Disc, wie hier verwendet, umfassen Compact Disc (CD), Laser Disc, Optical Disc, Digital Versatile Disc (DVD), Disketten und Blueray Disc, wobei Disks üblicherweise Daten magnetisch reproduzieren, während Discs Daten optisch mit Lasern reproduzieren. Kombinationen der obigen sollen auch im Umfang von computerlesbaren Medien eingeschlossen sein.
Instruktionen können durch einen oder mehrere Prozessoren ausgeführt werden, wie eine oder mehrere Zentraleinheiten (CPU), digitale Signalprozessoren (DSPs), Universal-Mikroprozessoren, anwendungsspezifische Integrationsschaltungen (ASICs), feldprogrammierbare Logikanordnungen (FPGAs) oder andere äquivalente integrierte oder diskrete Logikschaltungen. Demgemäß kann sich der Ausdruck „Prozessor“, wie hier verwendet, auf eine beliebige der vorhergehenden Strukturen oder irgendeine andere Struktur beziehen, die für die Implementierung der hier beschriebenen Techniken geeignet ist. Zusätzlich kann in einigen Aspekten die hier beschriebene Funktionalität innerhalb dedizierter Hardware und/oder Software-Module geliefert werden, die zum Codieren und Decodieren ausgelegt sind, oder in einem kombinierten Codec eingeschlossen sein. Die Techniken könnten auch vollständig in einer oder mehreren Schaltungen oder Logikelementen implementiert werden.
Die Techniken dieser Offenbarung können in verschiedensten Vorrichtungen oder Einrichtungen implementiert werden, umfassend ein drahtloses Handgerät, eine integrierte Schaltung (IC) oder einen Satz von ICs (z.B. einen Chipsatz). Verschiedene Komponenten, Module oder Einheiten werden in dieser Offenbarung beschrieben, um funktionelle Aspekte von Vorrichtungen hervorzuheben, die ausgelegt sind, die geoffenbarten Techniken vorzunehmen, erfordern jedoch nicht unbedingt die Realisierung durch verschiedene Hardware-Einheiten. Stattdessen können, wie oben beschrieben, verschiedene Einheiten in einer einzelnen Hardware-Einheit kombiniert werden oder durch eine Ansammlung von interoperativen Hardware-Einheiten vorgesehen werden, umfassend einen oder mehrere Prozessoren, wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware.
Claims (13)
- Verfahren zum Durchführen einer kryptografischen gitterbasierten Operation in einer Sicherheitsvorrichtung, wobei sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um zumindest einen teilweisen Schutz gegen Seitenkanalangriffe zu erzielen, wobei die Sicherheitsvorrichtung eine integrierte Schaltung, ein Hardware-Sicherheitsmodul oder ein Trusted Platform-Modul ist oder umfasst, wobei das Verfahren die folgenden Schritte umfasst: (a) Liften von Koeffizienten einer Datenstruktur von einer Repräsentation modulo q in eine Repräsentation modulo q', wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind; (b) Randomisieren der Koeffizienten in modulo q', wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird; (c) Durchführen einer Operation auf den gelifteten und randomisierten Koeffizienten; (d) Reduzieren der gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q.
- Verfahren nach
Anspruch 1 , bei dem der Wert von q' größer ist als der Wert von q. - Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Datenstruktur mindestens eines der Folgenden umfasst: ein Polynom, eine Matrix oder einen Vektor.
- Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Operation eine arithmetische Operation ist.
- Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend nach Schritt (c): (c1) Wiederholen der Schritte (b) und (c) mindestens einmal, bevor zu Schritt (d) verzweigt wird.
- Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Datenstruktur eine geheime Datenstruktur ist.
- Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Wert von q und/oder der Wert von q' eine Primzahl oder eine Zweierpotenz ist/sind.
- Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Wert von q' derart ausgewählt wird, dass er einer Breite einer integrierten Verarbeitungseinheit entspricht.
- Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Wert von q' variiert.
- Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren zum Betreiben einer Verarbeitungsvorrichtung verwendet wird, insbesondere einer der Folgenden: - eines FPGA, - einer Verarbeitungseinheit, - einer Steuereinheit, - einer Smartcard.
- Vorrichtung, umfassend: - eine Verarbeitungseinheit, - eine Krypto-Einheit, - einen Bus, der die Verarbeitungseinheit mit der Krypto-Einheit koppelt, - wobei die Krypto-Einheit eingerichtet ist: (a) Koeffizienten einer Datenstruktur von einer Repräsentation modulo q in eine Repräsentation modulo q' zu liften, wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind; (b) die Koeffizienten in modulo q' zu randomisieren, wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird; - wobei die Verarbeitungseinheit eingerichtet ist: (c) eine Operation an den gelifteten und randomisierten Koeffizienten durchzuführen; - und wobei die Krypto-Einheit eingerichtet ist: (d) die gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q zu reduzieren.
- Vorrichtung nach
Anspruch 11 , wobei die Vorrichtung ein FPGA, eine Verarbeitungseinheit, eine Steuereinheit oder eine Smartcard ist. - Computerprogrammprodukt, welches direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung geladen werden kann, umfassend Software-Codeabschnitte als Anweisung an eine Datenverarbeitungsanlage zum Vornehmen der Schritte des Verfahrens nach einem der
Ansprüche 1 bis10 .
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102017117907.0A DE102017117907B4 (de) | 2017-08-07 | 2017-08-07 | Durchführen einer kryptografischen Operation |
US16/040,971 US10965462B2 (en) | 2017-08-07 | 2018-07-20 | Conducting a cryptographic operation |
CN201810891557.7A CN109388955B (zh) | 2017-08-07 | 2018-08-07 | 用于实施加密运算的方法和设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102017117907.0A DE102017117907B4 (de) | 2017-08-07 | 2017-08-07 | Durchführen einer kryptografischen Operation |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102017117907A1 DE102017117907A1 (de) | 2019-02-07 |
DE102017117907B4 true DE102017117907B4 (de) | 2023-04-27 |
Family
ID=65019813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102017117907.0A Active DE102017117907B4 (de) | 2017-08-07 | 2017-08-07 | Durchführen einer kryptografischen Operation |
Country Status (3)
Country | Link |
---|---|
US (1) | US10965462B2 (de) |
CN (1) | CN109388955B (de) |
DE (1) | DE102017117907B4 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102017117899A1 (de) * | 2017-08-07 | 2019-02-07 | Infineon Technologies Ag | Durchführen einer kryptografischen Operation |
US10778407B2 (en) * | 2018-03-25 | 2020-09-15 | Nuvoton Technology Corporation | Multiplier protected against power analysis attacks |
DE102018108313A1 (de) | 2018-04-09 | 2019-10-10 | Infineon Technologies Ag | Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis |
US11032061B2 (en) * | 2018-04-27 | 2021-06-08 | Microsoft Technology Licensing, Llc | Enabling constant plaintext space in bootstrapping in fully homomorphic encryption |
EP3959840A4 (de) * | 2019-04-23 | 2023-01-11 | Quantropi Inc. | Verbesserte zuverlässigkeit für digitale systeme |
KR20210081471A (ko) | 2019-12-23 | 2021-07-02 | 삼성전자주식회사 | 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템 |
JP7273753B2 (ja) * | 2020-03-06 | 2023-05-15 | 株式会社東芝 | 数論変換処理装置、数論変換処理方法及びプログラム |
US20230254115A1 (en) * | 2020-06-08 | 2023-08-10 | Cryptography Research, Inc. | Protection of transformations by intermediate randomization in cryptographic operations |
DE102020121229B3 (de) * | 2020-08-12 | 2022-01-27 | Infineon Technologies Ag | Verfahren zum Überprüfen einer GDFT-Operation und Sicherheitseinrichtung zur Durchführung des Verfahrens |
CN113253972A (zh) * | 2021-05-13 | 2021-08-13 | 南京航空航天大学 | 一种lac中稀疏多项式乘法加速器的fpga实现方法 |
EP4199410A1 (de) * | 2021-12-17 | 2023-06-21 | Thales Dis France SAS | Gegen seitenkanalangriffe gesichertes verfahren zur durchführung eines kryptographischen algorithmus mit polynombetrieb |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0920753B1 (de) | 1996-08-19 | 2006-12-13 | NTRU Cryptosystems, Inc. | Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel |
US20130216044A1 (en) | 2012-02-17 | 2013-08-22 | International Business Machines Corporation | Homomorphic evaluation including key switching, modulus switching, and dynamic noise management |
WO2014037657A1 (fr) | 2012-09-04 | 2014-03-13 | Morpho | Protection contre canaux auxiliaires |
WO2017008043A1 (en) | 2015-07-08 | 2017-01-12 | Brown University | Homomorphic encryption |
US20170134157A1 (en) | 2015-11-05 | 2017-05-11 | Microsoft Technology Licensing, Llc | Homomorphic Encryption with Optimized Encoding |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2824209B1 (fr) * | 2001-04-30 | 2003-08-29 | St Microelectronics Sa | Brouillage d'un calcul mettant en oeuvre une fonction modulaire |
US8024391B2 (en) * | 2006-11-06 | 2011-09-20 | Atmel Rousset S.A.S. | Modular multiplication method with precomputation using one known operand |
US8280041B2 (en) * | 2007-03-12 | 2012-10-02 | Inside Secure | Chinese remainder theorem-based computation method for cryptosystems |
US7995765B2 (en) * | 2008-08-28 | 2011-08-09 | Red Hat, Inc. | Sharing a secret using hyperplanes over GF(q) |
EP2667539A1 (de) * | 2012-05-21 | 2013-11-27 | Koninklijke Philips N.V. | Verfahren und Vorrichtung zur gemeinsamen Schlüsselnutzung und System zu deren Konfiguration |
US9350543B2 (en) * | 2012-07-26 | 2016-05-24 | Cisco Technology, Inc. | Method and system for homomorphicly randomizing an input |
JP6016948B2 (ja) * | 2013-01-17 | 2016-10-26 | 日本電信電話株式会社 | 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム |
-
2017
- 2017-08-07 DE DE102017117907.0A patent/DE102017117907B4/de active Active
-
2018
- 2018-07-20 US US16/040,971 patent/US10965462B2/en active Active
- 2018-08-07 CN CN201810891557.7A patent/CN109388955B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0920753B1 (de) | 1996-08-19 | 2006-12-13 | NTRU Cryptosystems, Inc. | Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel |
US20130216044A1 (en) | 2012-02-17 | 2013-08-22 | International Business Machines Corporation | Homomorphic evaluation including key switching, modulus switching, and dynamic noise management |
WO2014037657A1 (fr) | 2012-09-04 | 2014-03-13 | Morpho | Protection contre canaux auxiliaires |
WO2017008043A1 (en) | 2015-07-08 | 2017-01-12 | Brown University | Homomorphic encryption |
US20170134157A1 (en) | 2015-11-05 | 2017-05-11 | Microsoft Technology Licensing, Llc | Homomorphic Encryption with Optimized Encoding |
Non-Patent Citations (3)
Title |
---|
CATALANO, Dario; NGUYEN, Phong Q.; STERN, Jacques: The hardness of Hensel lifting: The case of RSA and discrete logarithm. In: International Conference on the Theory and Application of Cryptology and Information Security. Berlin, Heidelberg : Springer, 2002. S. 299–310. DOI: 10.1007/3-540-36178-2_19 |
Oscar Reparaz, Sujoy Sinha Roy, Ruan de Clercq, Frederik Vercauteren, Ingrid Verbauwhede: Masking ring-LWE. J. Cryptographic Engineering 6(2): 139-153 (2016) |
SRINIVASAN, Sridhar: Modulo Transforms – an Alternative to Lifting. Microsoft Digital Media Division, 2005. URL: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2004-130.pdf [abgerufen am 1. März 2018] |
Also Published As
Publication number | Publication date |
---|---|
DE102017117907A1 (de) | 2019-02-07 |
US20190044720A1 (en) | 2019-02-07 |
US10965462B2 (en) | 2021-03-30 |
CN109388955A (zh) | 2019-02-26 |
CN109388955B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102017117907B4 (de) | Durchführen einer kryptografischen Operation | |
DE102018108313A1 (de) | Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis | |
DE102017117899A1 (de) | Durchführen einer kryptografischen Operation | |
DE60217260T2 (de) | Datenverarbeitungs- und Verschlüsselungseinheit | |
DE102019108095A1 (de) | Ausführen einer kryptografischen Operation | |
EP2771782B1 (de) | Effiziente primzahlprüfung | |
DE102018115439A1 (de) | Technologien zur fehlertoleranten Berechnung von Elliptische-Kurven-Digitalsignaturen | |
DE102020119569B3 (de) | Bereitstellen einer kryptografischen Information | |
DE112009000154T5 (de) | Änderung der Darstellung eines Punktes auf einer elliptischen Kurve | |
DE112015006865T5 (de) | Vorrichtung zum Erzeugen eines Nachrichten-Authenticators, Verfahren zum Erzeugen eines Nachrichten-Authenticators und Programm zum Erzeugen eines Nachrichten-Authenticators | |
DE112009000152B4 (de) | Verfahren zur Datenübertragung über einen Datenkanal mit einem Elliptische-Kurven-Kryptographieverfahren und Vorrichtung hierfür | |
DE102020113198A1 (de) | Kryptografische Operation | |
DE112018002723B4 (de) | System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen | |
EP2641241B1 (de) | Verfahren zur langzahldivision oder modulare reduktion | |
DE102021106883A1 (de) | Komprimierung in der gitterbasierten Kryptografie | |
DE102021120010B3 (de) | Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation | |
EP1596527B1 (de) | Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung | |
DE102021003275B3 (de) | Verfahren zur Berechnung eines Übergangs von einer booleschen zu einer arithmetischen Maskierung | |
DE102021213560A1 (de) | Vorrichtung und Verfahren zum Entschlüsseln einer verschlüsselten Bitfolge | |
DE10042234C2 (de) | Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor | |
DE102020134618A1 (de) | Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes | |
DE102021118435A1 (de) | Verfahren und Vorrichtung zur kodebasierten Erzeugung eines Schlüsselpaares für die asymmetrische Kryptographie | |
DE112020006160T5 (de) | Kryptografische verschleierungsparameter, die bei der elliptische-kurven-kryptografie verwendet werden, und zugehörige systeme und vorrichtungen | |
DE102020102796A1 (de) | Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten | |
DE102022115195A1 (de) | Verarbeitung von kryptografischen Daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final | ||
R082 | Change of representative |