DE112018006405T5 - Verfahren und Vorrichtung zur Berechnung der Hashfunktion - Google Patents

Verfahren und Vorrichtung zur Berechnung der Hashfunktion Download PDF

Info

Publication number
DE112018006405T5
DE112018006405T5 DE112018006405.0T DE112018006405T DE112018006405T5 DE 112018006405 T5 DE112018006405 T5 DE 112018006405T5 DE 112018006405 T DE112018006405 T DE 112018006405T DE 112018006405 T5 DE112018006405 T5 DE 112018006405T5
Authority
DE
Germany
Prior art keywords
input
unit
output
data
pipeline
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.)
Pending
Application number
DE112018006405.0T
Other languages
English (en)
Inventor
Ilia Ivanovich Kalistru
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.)
JOINT STOCK Co "INFOTECS"
Original Assignee
JOINT STOCK Co "INFOTECS"
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 JOINT STOCK Co "INFOTECS" filed Critical JOINT STOCK Co "INFOTECS"
Publication of DE112018006405T5 publication Critical patent/DE112018006405T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Power Engineering (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Die Gruppe der Erfindungen betrifft Rechentechniken und kann zur Berechnung einer Hash-Funktion verwendet werden. Der technische Effekt betrifft die erhöhte Geschwindigkeit der Berechnungen und die verbesserte Fähigkeit, eine Konfiguration einer Vorrichtung auszuwählen. Die Vorrichtung umfasst: eine vorläufige Vorbereitungseinheit mit M Eingängen mit einer Größe von k Bits, wobei M>1; M Pipeline-Berechnungseinheiten, die parallel laufen und jeweils umfassen: ein Speichermodul, ein Rückkopplungssperrmodul, einen Addierer, einen Pipeline-Multiplikator mit L Stufen, eine Rückkopplungseinheit und eine Akkumulationseinheit; und eine Kombinationseinheit.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Rechentechniken und insbesondere Vorrichtungen und Verfahren zur Berechnung einer Hashfunktion.
  • Stand der Technik
  • Aktuelle digitale Geräte verwenden verschiedene Schlüssel-Hash-Funktionen, um die Authentizität der Informationen zu gewährleisten. Eine der Hash-Funktionen ist die in der Norm ISO/IEC 19772: 2009 A.8 beschriebene GHASH-Funktion.
  • Diese Funktion ist definiert als: GHASH ( S , H ) = X l ,
    Figure DE112018006405T5_0001
    wobei
    • S sind Daten eines Datenframes,
    • H ist das Hashfunktionspolynom, das ein Schlüssel der Hashfunktion ist,
    • 1 ist die Menge der Dateneinheiten in S,
    X i = { 0, if  i = 0 ( X i 1 S i ) H , if  i l
    Figure DE112018006405T5_0002
  • Beschleunigung der Funktionsberechnung reduziert die Verarbeitungszeit jedes Datenframes und verringert dadurch die Datenlatenz in einem Datenverarbeitungsgerät und verbessert dessen Leistung.
  • Beispielsweise enthüllt US7,970,130 (Priorität vom 21.09.2007) ein Verfahren und eine Vorrichtung zur Berechnung einer Hash-Funktion für den Galois-Zählermodus (GCM), wobei das Verfahren Folgendes umfasst: für Eingangsdaten, die zugehörige Daten A, einen Chiffretext C, ein Polynom H enthalten, wird zunächst ein Zwischenwert X A = A 1 H m + 1 A 2 H m ( A m * | S k v ) H ,
    Figure DE112018006405T5_0003
    dann ein Zwischenwert X C = C 1 H n + 1 C 2 H n ( C n * S k u ) H 2 ( l e n ( A ) l e n ( C ) ) H ,
    Figure DE112018006405T5_0004
    und Werte Hn+1 und danach ein Wert X A H n + 1 X C ,
    Figure DE112018006405T5_0005
    der ein gewünschter GHASH-Funktionswert ist, berechnet. Eine Vorrichtung, die die Berechnungen durchführt, umfasst ein erstes, zweites und drittes Rechenmodul zur Berechnung der Werte XA, XC, bzw. Hn+1, und ein viertes Rechenmodul zur Berechnung des Wertes XA Hn+1 ⊕ XC. Diese Vorrichtung ermöglicht es, den GHASH (A, C, H) -Wert in max (m,n) + 1 Zyklen zu berechnen, wobei m die Menge der Datenblöcke in A und n die Menge der Datenblöcke in C ist, l = m + n + 1 die Menge der an einen Eingang der GHASH-Funktion gelieferten Blöcke ist.
  • Diese Verfahren und Geräte werden als der nächstliegende Stand der Technik angesehen.
  • Die Nachteile der bekannten Vorrichtung und des bekannten Verfahrens sind die geringe Geschwindigkeit und die Unfähigkeit, vor der Herstellung eine Konfiguration der Vorrichtung zu wählen. Zum Beispiel kann die beste Geschwindigkeit in dem bekannten Apparat und Verfahren erreicht werden, wenn m = n. In diesem Fall kann eine zweifache Beschleunigung im Vergleich zur sequentiellen Berechnung erreicht werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Der technische Effekt der Erfindung beinhaltet:
    1. 1) Erhöhen der Geschwindigkeit der Berechnungen,
    2. 2) Erweitern der Möglichkeit, die Vorrichtungskonfiguration auszuwählen.
  • Zu diesem Zweck ist eine Vorrichtung zur Berechnung einer Hash-Funktion für einen digitalen Datenframe vorgesehen, wobei der Datenframe aus Datenblöcken von k Bits Länge besteht und die Vorrichtung umfasst:
    • ◯ eine vorläufige Vorbereitungseinheit mit M Eingängen mit einer Größe von k Bits, wobei M>1;
    • M Pipeline-Berechnungseinheiten, deren Eingänge jeweils Ausgänge der vorläufigen Vorbereitungseinheit sind und die Pipeline-Multiplikatoren mit L Stufen verwenden;
    • ◯ eine Kombinationseinheit mit M Eingängen, wobei jeder Eingang mit einem jeweiligen Ausgang der Pipeline-Berechnungseinheit verbunden ist und ein
  • Ausgang der Kombinationseinheit ein Ausgang der Vorrichtung als Ganzes ist; wobei die vorläufige Vorbereitungseinheit ferner M FIFO-Pufferregister umfasst und konfiguriert ist:
    • • Datenblöcke, die gleichzeitig an den M Eingängen ankommen, an die Enden der jeweiligen FIFO-Pufferregister zu schreiben;
    • • eine Menge der Datenblöcke zu bestimmen, die in die FIFO-Pufferregister der vorläufigen Vorbereitungseinheit geschrieben werden;
    • • das Vorhandensein eines letzten Datenblocks des Datenframes in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit zu bestimmen;
    • • Lesen von Datenblöcken aus den jeweiligen FIFO-Pufferregistern zu allen M Ausgängen der vorläufigen Vorbereitungseinheit, wenn L×M Datenblöcke in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit vorhanden sind oder wenn der letzte Block des Datenframes in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit vorhanden ist;
    • • Ausgänge der Einheit als keine Daten aufweisend markieren, wenn die L×M Datenblöcke in den FIFO-Pufferregistern der Vorlauf-Vorbereitungseinheit fehlen und der letzte Datenframe des Datenblocks in den FIFO-Pufferregistern der Vorlauf-Vorbereitungseinheit fehlt;
    • • Datenblöcke aufzuzählen, die aus den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit gelesen werden, wobei
      • wenn der letzte Datenblock in den FIFO-Pufferregistern der vorläufigen Aufbereitungseinheit vorhanden ist, werden die Datenblöcke vom Ende des Datenframes an aufgezählt und beginnen bei Null,
      • wenn der letzte Datenblock in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit fehlt, wird jedem Leseblock eine Nummer L×M zugewiesen;
    jede der M parallel betriebenen Pipeline-Berechnungseinheiten umfasst:
    • ein Speichermodul,
    • ein Rückkopplungssperrmodul,
    • ein Addierer,
    • einen Pipeline-Multiplikator mit L-Stufen,
    • eine Rückkopplungseinheit,
    • eine Akkumulationseinheit;
    wobei das Speichermodul konfiguriert ist:
    • darauf geschriebene Daten zu speichern;
    • an einen Ausgang des Speichermoduls Daten zu liefern, die in Speicherplätzen des Speichermoduls gespeichert sind, deren Anzahl gleich der Anzahl von Datenblöcken ist, die an einem Eingang des Speichermoduls ankommen;
    • der Addierer umfasst einen ersten und einen zweiten Eingang und einen Ausgang und ist konfiguriert, in einem Feld GF (2k), Datenblöcke, die an einem ersten und einem zweiten Eingang ankommen, zu summieren und ein Ergebnis an einen Ausgang des Addierers zu übertragen;
    • das Rückkopplungssperrmodul umfasst einen ersten und einen zweiten Eingang, einen Zähler und einen Ausgang und ist konfiguriert:
      • einen Wert des Zählers zu inkrementieren, wenn ein Datenblock am zweiten Eingang empfangen wird;
      • einen Datenblock vom ersten Eingang zum Ausgang zu übertragen, wenn der Zählerwert größer oder gleich M ist;
      • einen Datenblock mit Nullen in allen Bits zum Ausgang zu übertragen, wenn der Zählerwert kleiner als Mist;
      • den Zählerwert auf Null zurücksetzen, wenn eine Zahl des am zweiten Eingang empfangenen Datenblocks kleiner als Mist;
    • der Pipeline-Multiplikator umfasst:
      • einen ersten und einen zweiten Eingang,
      • L Multiplikations-Pipeline-Stufen, die hintereinander geschaltet sind, wobei die Stufen gleichzeitig arbeiten und jeweils einen eigenen Teil der Berechnungen der Multiplikation von zwei Blöcken durchführen, wobei Eingänge einer ersten Multiplikations-Pipeline-Stufe mit den Eingängen des Pipeline-Multiplikators verbunden sind,
      • ein Ausgang, der ein Ausgang einer letzten Multiplikationspipeline-Stufe ist;
    • wobei der Pipeline-Multiplikator konfiguriert ist, Ausgangsblöcke derart aufzuzählen, dass einem Ausgangsdatenblock eine Nummer eines entsprechenden Datenblocks zugewiesen wird, die von dem ersten Eingang genommen wird;
    • die Rückkopplungseinheit umfasst:
      • einen ersten und einen zweiten Eingang und einen Ausgang,
      • ein FIFO-Pufferregister, in das am ersten Eingang der Rückkopplungseinheit empfangene Datenblöcke geschrieben werden;
    • die Rückkopplungseinheit ist konfiguriert, Datenblöcke aus einem FIFO-Pufferregister nur dann auf den Ausgang zu lesen, wenn Datenblöcke am zweiten Eingang ankommen;
    • die Akkumulationseinheit umfasst eine Akkumulationsspeicherstelle und ist konfiguriert:
      • an einem Eingang Datenblöcke und ihre Nummern zu empfangen;
      • eine Nummer eines ankommenden Datenblocks mit L×M zu vergleichen;
      • wenn die Nummer des ankommenden Datenblocks größer oder gleich L×M ist, die Akkumulationsspeicherstelle auf Null zurückzusetzen;
      • wenn die Nummer des ankommenden Datenblocks kleiner als L×M ist, den ankommenden Datenblock in dem Feld GF(2k) mit einem in der Akkumulationsspeicherstelle enthaltenen Wert zu summieren und ein Ergebnis in die Akkumulationsspeicherstelle zurückzuschreiben;
    • wobei ein Eingang jeder Pipeline-Berechnungseinheit mit dem ersten Eingang des Addierers, dem Eingang des Speichermoduls, dem zweiten Eingang des Rückkopplungssperrmoduls und dem zweiten Eingang der Rückkopplungseinheit verbunden ist;
    • wobei der erste Eingang des Pipeline-Multiplikators mit dem Ausgang des Speichermoduls verbunden ist und der zweite Eingang des Pipeline-Multiplikators mit dem Ausgang des Addierers verbunden ist;
    • wobei der Ausgang des Pipeline-Multiplikators mit dem Eingang der Akkumulationseinheit und mit dem ersten Eingang der Rückkopplungseinheit verbunden ist, und der Ausgang der Rückkopplungseinheit mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden ist;
    • der Ausgang des Rückkopplungssperrmoduls mit dem zweiten Eingang des Addierers verbunden ist;
    • der Ausgang der Akkumulationseinheit ist der Ausgang der Pipeline-Berechnungseinheit; die Kombinationseinheit M Eingänge umfasst und konfiguriert ist, Datenblöcke im Feld GF(2k) von allen M Eingängen zu summieren und ein Ergebnis dieser Summierung auszugeben.
    • Außerdem ist ein Verfahren zum Betrieb dieser Vorrichtung vorgesehen, das folgendes umfasst:
      • Bestimmen eines Polynoms H einer Hash-Funktion;
      • Zurücksetzen des Inhalts aller FIFO-Pufferregister der vorläufigen Vorbereitungseinheit auf Null;
      • Zurücksetzen einer Speicherstelle der Akkumulationseinheiten aller Pipeline-Berechnungseinheiten;
      • Berechnen von Werten von Potenzen des in einem Feld GF(2k) berechneten Polynoms H;
      • Schreiben der berechneten Werte der Potenzen des Polynoms H in die Speichermodule aller Pipeline-Berechnungseinheiten, wobei Hi+1 n eine Speicherstelle mit der Zahl i, 0≤i<L×M, und HLM in eine Speicherstelle mit der Zahl L×M geschrieben wird;
      • Schreiben von L Datenblöcken mit Nullen in allen Bits in die Rückkopplungseinheiten aller Pipeline-Berechnungseinheiten,
      • Zurücksetzen der Zählerwerte in den Rückkopplungssperrmodulen aller Pipeline-Berechnungseinheiten auf Null;
      • Bereitstellen von aufeinanderfolgenden M Datenblöcken des Datenframes gleichzeitig an den M Eingängen der vorläufigen Vorbereitungseinheit;
      • wenn es eingehende Datenblöcke gibt, Schreiben aufeinanderfolgender Datenblöcke in entsprechende M FIFO-Pufferregister in der vorläufigen Vorbereitungseinheit;
      • wenn eines der FIFO-Pufferregister einen letzten Datenblock des Datenframes enthält, dann
        • Lesen aufeinanderfolgender Datenblöcke aus jedem FIFO-Pufferregister;
        • Übertragen dieser Datenblöcke an den Ausgang der vorläufigen Vorbereitungseinheit;
        • jedem Datenblock eine von Null an beginnende und ab dem letzten Datenblock des in den FIFO-Pufferregistern befindlichen Frames zählende laufende Nummer zuweisen;
    • andernfalls, wenn Warteschlangen die Länge L haben und nicht den letzten Datenblock des Datenframes enthalten, dann
      • Lesen aufeinanderfolgender Datenblöcke aus jedem FIFO-Pufferregister;
      • Übertragen dieser Datenblöcke an den Ausgang der vorläufigen Vorbereitungseinheit; Zuweisen einer Nummer L×M zu jedem Datenblock;
    • Übertragen von Datenblöcken von den Ausgängen der vorläufigen Vorbereitungseinheit zu den Eingängen der jeweiligen Pipeline-Berechnungseinheiten;
    • Übertragen eingehender Datenblöcke an den Eingang des Speichermoduls, den ersten Eingang des Addierers, den zweiten Eingang des Rückkopplungssperrmoduls, den zweiten Eingang der Rückkopplungseinheit in jeder Pipeline-Berechnungseinheit;
    • Verwenden einer Nummer eines eingehenden Datenblocks als Speichermoduladresse im Speichermodul, Extrahieren eines Wertes einer Potenz von H, der im Speichermodul voraufgezeichnet ist, in das Feld GF(2k);
    • Bereitstellen des extrahierten Wertes an den Ausgang des Speichermoduls;
    • Ausführen, im Addierer, der Schritte von:
      • Summieren von Datenblöcken, die von den ersten und zweiten Eingängen eingehen, im Feld GF(2k);
      • Zuweisen einer Nummer eines Datenblocks von dem ersten Eingang zu einem Ergebnis der Summierung;
      • Übertragen dieses Ergebnisses an den Ausgang des Addierers;
    • Übertragen des Datenblocks vom Ausgang des Speichermoduls zum ersten Eingang des Pipeline-Multiplikators;
    • Übertragen eines sequentiellen Datenblocks vom Ausgang des Addierers zum zweiten Eingang des Pipeline-Multiplikators;
    • Berechnen eines Produkts von Datenblöcken in dem Feld GF(2k) in dem Pipeline-Multiplikator, Übertragen dieses Produkts an den Ausgang des Pipeline-Multiplikators und Zuweisen einer Zahl, die gleich einer Zahl eines entsprechenden eingehenden Datenblocks ist, der von dem zweiten Eingang des Pipeline-Multiplikators genommen wurde, zu einem resultierenden Block;
    • Übertragen des Datenblocks vom Ausgang des Pipeline-Multiplikators zum Eingang der Akkumulationseinheit und zum ersten Eingang der Rückkopplungseinheit;
    • wenn ein ankommender Datenblock am ersten Eingang der Rückkopplungseinheit vorhanden ist, Schreiben des Datenblocks in die FIFO-Pufferregister der Rückkopplungseinheit; wenn es einen eingehenden Datenblock am zweiten Eingang der Rückkopplungseinheit gibt, dann
      • Lesen eines sequentiellen Datenblocks aus einem FIFO-Pufferregister der Rückkopplungseinheit;
      • Übertragen auf den Ausgang der Rückkopplungseinheit;
    • Übertragen des Datenblocks vom Ausgang der Rückkopplungseinheit zum ersten Eingang des Rückkopplungssperrmoduls;
    • Ausführen der folgenden Schritte im Rückkopplungssperrmodul:
      • wenn ein Datenblock am zweiten Eingang ankommt, Erhöhen eines Wertes des Zählers;
      • wenn der Zählerwert größer oder gleich M ist, Übertragen eines Datenblocks vom ersten Eingang zum Ausgang;
      • wenn der Zählerwert kleiner als M ist, Übertragen eines Datenblocks, der Nullen in allen Bits enthält, an den Ausgang;
      • wenn eine Nummer des Datenblocks, der am zweiten Eingang angekommen ist,
      • kleiner als M ist, Zurücksetzen des Zählerwerts auf Null;
    • Übertragen der Datenblöcke vom Ausgang des Rückkopplungssperrmoduls zum zweiten Eingang des Addierers;
    • Prüfen des Vorhandenseins von Daten am Eingang der Akkumulationseinheit,
      • wenn es einen Datenblock am Eingang gibt, dann
        • wenn seine Anzahl kleiner als L×M, aber größer oder gleich M ist, dann
          • Summieren, im Feld GF(2k), eines eingehenden Datenblocks und des Inhalts einer Speicherstelle der Akkumulationseinheit;
          • Schreiben eines Ergebnisses zurück in die Speicherstelle der Akkumulationseinheit;
        • andernfalls, wenn die Nummer des ankommenden Datenblocks kleiner als M ist, dann
          • Summieren, im Feld GF(2k), des eingehenden Datenblocks und des Inhalts der Speicherstelle der Akkumulationseinheit;
          • Schreiben des Ergebnisses auf den Ausgang der Akkumulationseinheit;
          • Zurücksetzen des Inhalts der Speicherstelle der Akkumulationseinheit auf Null;
    • wenn am Eingang der Akkumulationseinheit kein Datenblock vorhanden ist oder wenn dort ein Datenblock vorhanden ist, dessen Nummer jedoch gleich L×M ist, dann werden die Daten nicht zum Ausgang der Akkumulationseinheit übertragen;
    • Übertragen des Datenblocks vom Ausgang der Akkumulationseinheit zum Ausgang der Pipeline-Berechnungseinheit;
    • Übertragen der Datenblöcke vom Ausgang der Pipeline-Berechnungseinheit zu den Eingängen der Kombinationseinheit;
    • Prüfen des Vorhandenseins von eingehenden Datenblöcken in der Kombinationseinheit,
      • wenn am Eingang keine Datenblöcke vorhanden sind, dann Markieren des Ausgangs der Kombinationseinheit als ohne Daten;
      • andernfalls, wenn es Datenblöcke am Eingang gibt, dann
        • Summieren von Datenblöcken aller Eingänge im Feld GF(2k);
        • Übertragung eines Ergebnisses der Summierung, das ein Wert der Hash-Funktion ist, an den Ausgang der Kombinationseinheit.
      • Es ist zu beachten, dass der Ausdruck für GHASH(S, H) = Xl umgeschrieben werden kann als Xl = ((...(S0·H ⊕ S1)·H ⊕ ...)·H ⊕ Sl)·H
  • Unter Berücksichtigung der Linearität der durchgeführten Operationen kann man Klammern erweitern und M Gruppen von Begriffen zusammenfassen, indem man über j alle Begriffe gruppiert, einschließlich SiM+j, wobei 0≤j<M enthalten ist. Außerdem kann M eine beliebige positive natürliche Zahl sein. Die Anwendung der Horner'schen Regel auf jede der Gruppen einzeln ergibt X l = ( ( ( ( ) H M S l 2 M ) H M S l M ) H M S l ) H 1 ( ( ( ( ) H M S l 2 M 1 ) H M S l M 1 ) H M S l 1 ) H 2 ( ( ( ( ) H M S l 2 M ( M 1 ) ) H M S l M ( M 1 ) ) H M S l ( M 1 ) ) H M
    Figure DE112018006405T5_0006
  • Wenn die eingehenden Daten korrekt gruppiert sind, können M Summanden (Teilsummen) dieses Ausdrucks unabhängig voneinander berechnet werden; in diesem Fall ist es notwendig, eher mit HM als mit H zu multiplizieren, und das letzte Mal in jedem Ausdruck ist es notwendig, mit Werten verschiedener Potenzen von H zu multiplizieren, je nach der Nummer des Datenblocks, der vor der Multiplikation hinzugefügt wurde - nach der Addition des letzten Datenblocks ist es notwendig, mit H1 zu multiplizieren, nach der Addition des vorletzten Datenblocks ist es notwendig, mit H2 zu multiplizieren, und so weiter.
  • Verschiedene Summanden dieses Ausdrucks können in verschiedenen parallel arbeitenden Berechnungseinheiten berechnet werden, wodurch die Geschwindigkeit um das M-fache erhöht wird, da die Anzahl der Vorrichtungen um das M-fache zunimmt.
  • Es ist auch zu beachten, dass verschiedene Summanden dieses Ausdrucks nicht nur in verschiedenen Berechnungseinheiten berechnet werden können, sondern auch in einer einzigen Pipeline-Berechnungseinheit, in der verschiedene Teilsummen gleichzeitig in derselben Berechnungseinheit verarbeitet werden, sich aber zu jedem Zeitpunkt in verschiedenen Pipelinestufen befinden.
  • Die Verwendung von M parallel arbeitenden Pipeline-Verarbeitungseinheiten kann die Geschwindigkeit der erfinderischen Vorrichtung um das M-fache erhöhen.
  • Ein weiteres Verfahren zur Erhöhung der Geschwindigkeit des vorliegenden Apparates ist die Erhöhung der Taktfrequenz des Apparates um das L-fache durch die Verwendung eines Pipeline-Multiplikators, der L Multiplikationsstufen umfasst.
  • Da die Addition im Galois-Feld das einfachste bitweise XOR ist, wenig Ressourcen erfordert und schnell durchgeführt wird, ist der Multiplikator die Hauptbegrenzung für die Erhöhung der Taktfrequenz. Wenn daher die Berechnung des Produkts in mehrere Pipeline-Stufen aufgeteilt wird, wodurch die Länge der kritischen Signalwege verringert wird, kann die Betriebsfrequenz der Vorrichtung erheblich erhöht werden.
  • Die Aufteilung des Multiplikationsverfahrens in mehrere Teile ist von geringer Komplexität - bei der Grundschulmultiplikation kann die Summierung der Ergebnisse der bitweisen Multiplikation in mehrere Teile aufgeteilt werden, und mit dem rekursiven Karatsuba-Multiplikationsalgorithmus kann eine nachfolgende Pipeline-Stufe abgeschlossen werden, z.B. nach der Durchführung von Additionen des Algorithmus für kleinere Algorithmusblöcke und vor dem Beginn der Addition größerer Blöcke. Es können auch andere Partitionen und Algorithmen angewendet werden.
  • Wenn die Aufteilung erfolgreich ist, werden die kritischen Pfade der elektrischen Signale in der Schaltung in L ungefähr gleiche Teile geteilt, und es ist möglich, die Erhöhung der Taktfrequenz um das L-fache zu erreichen. Nach der Teilung wird jeder geladene Datenblock L Taktzyklen benötigen, um die gesamte Schaltung zu durchlaufen; diese Tatsache wird jedoch durch die Fähigkeit ausgeglichen, L Datenblöcke gleichzeitig in das Gerät zu laden.
  • Eine Kombination der beschriebenen Schritte erhöht die Geschwindigkeit des Geräts im Vergleich zur sequentiellen Berechnung um das L×M-fache. Auf diese Weise berechnet die erfinderische Vorrichtung einen Wert der gewünschten Funktion in l M
    Figure DE112018006405T5_0007
  • Taktzyklen (Aufrunden auf einen nächsten ganzzahligen Wert), wobei jeder der Taktzyklen L-mal kürzer ist.
  • Die vorliegende Vorrichtung ermöglicht es, eine geeignete Konfiguration zu wählen; daher können beim Entwurf einer Vorrichtung für spezifische Anwendungsbedingungen die vorteilhaftesten Werte von M und L für die gegebenen spezifischen Bedingungen gewählt werden. Zum Beispiel kann die Anzahl der L-Stufen des Pipeline-Multiplikators erhöht werden, um eine gegebene Drehzahl zu erreichen, wodurch die maximal mögliche Betriebsfrequenz der Vorrichtung erhöht wird, bis andere Prozessfaktoren eine weitere Erhöhung der Frequenz begrenzen. Dann kann die Anzahl der Pipeline-Berechnungseinheiten M erhöht werden, bis die erforderliche Leistung erreicht ist.
  • Eine besondere Ausführungsform der Vorrichtung umfasst Zuführen von Datenblöcken, die zusätzlich eine Markierung K enthalten, an den Eingang, wobei für Datenblöcke, die zu dem ersten verarbeiteten Datenframe gehören, die Markierung K gleich Null ist, und für Datenblöcke aller nachfolgenden Datenframes die Markierung K gemäß der folgenden Regel gesetzt wird:
    • wenn die Hash-Funktion für einen nächsten Datenframe auf dem gleichen Wert des Polynoms H wie die Hash-Funktion für einen vorhergehenden Datenframe berechnet werden soll, dann wird ein Wert der Markierung K für alle Datenblöcke des nächsten Datenframes auf den gleichen Wert wie ein Wert der Markierung K von Datenblöcken des vorhergehenden Datenframes gesetzt;
    • andernfalls wird der Wert der Markierung K für alle Datenblöcke des nächsten Datenframes auf einen Wert gesetzt, der dem Wert der Markierung K für die Datenblöcke des vorhergehenden Datenframes entgegengesetzt ist;
    wobei die Vorrichtung
    • • ein zusätzliches unabhängiges Speichermodul in jeder Pipeline-Berechnungseinheit umfasst, das parallel zu dem vorhandenen Speichermodul angeschlossen ist;
    • • in jeder Pipeline-Berechnungseinheit werden Datenblöcke an das Speichermodul geliefert, wenn die Markierung K gleich Null ist, oder an das zusätzliche Speichermodul, wenn die Markierung K gleich Eins ist.
  • Das Vorhandensein des zusätzlichen Speichermoduls in der jeweiligen Ausführungsform des Geräts ermöglicht es, verschiedene Datenframes zu verarbeiten, indem verschiedene Werte des Polynoms H der Hash-Funktion verwendet werden, ohne den Betrieb der Vorrichtung anzuhalten, um ein neues Polynom H der Hash-Funktion in Speichermodule der Pipeline-Berechnungseinheit zu laden, aufgrund der Tatsache, dass während das Speichermodul der Pipeline-Berechnungseinheit zur Verarbeitung von Datenblöcken des Datenframes verwendet wird, Werte des neuen Polynoms H der Hash-Funktion in das zusätzliche Speichermodul der Pipeline-Berechnungseinheit geladen werden können und umgekehrt.
  • Dies ermöglicht es, die Geschwindigkeit der Vorrichtung zu erhöhen, wenn von der Vorrichtung verlangt wird, Datenframes unter Verwendung verschiedener Polynome H der Hash-Funktion zu verarbeiten.
  • Ein Entwickler, der die vorliegende Vorrichtung entwirft, kann eine Entscheidung über die Zweckmäßigkeit der Einbeziehung eines zusätzlichen Speichermoduls auf der Grundlage von Informationen über die erhöhten Kosten der Vorrichtung aufgrund des Vorhandenseins des zusätzlichen Speichermoduls sowie auf der Grundlage der Analyse einer erforderlichen Änderungsrate des Polynoms H der Hash-Funktion und der Analyse, wie die Leerlaufperiode der Vorrichtung während der Änderung des Polynoms H der Hash-Funktion die Leistung der Vorrichtung beeinträchtigt, treffen.
  • Wo zusätzliche Speichermodule in jeder Pipeline-Berechnungseinheit vorhanden sind, wird eine bestimmte Ausführungsform des Verfahrens implementiert, wobei der Schritt der Übertragung eingehender Datenblöcke an den Eingang des Speichermoduls die folgenden Schritte umfasst:
    • • wenn ein eingehender Datenblock mit der Markierung K gleich Null markiert ist, dann
      • ◯ Übertragen des eingehenden Datenblocks an den Eingang des Speichermoduls,
      • ◯ Berechnen der Werte der Potenzen eines nächsten Polynoms H im Feld GF(2k) für einen nächsten Datenframe,
      • ◯ Schreiben der berechneten Werte der Potenzen des Polynoms H für den nächsten Datenframe in ein zusätzliches Speichermodul der Pipeline-Berechnungseinheit, wobei Hi+1 in eine Speicherstelle mit der Nummer i, 0≤i<L×M, und HLM ¬ in eine Speicherstelle mit der Nummer L×M geschrieben wird;
    • • wenn der ankommende Datenblock mit der Markierung K gleich eins markiert ist, dann
      • ◯ Übertragen des eingehenden Datenblocks an den Eingang des zusätzlichen Speichermoduls,
      • ◯ Berechnen der Werte der Potenzen des nächsten Polynoms H im Feld GF(2k) für den nächsten Datenframe,
      • ◯ Schreiben der berechneten Werte der Potenzen des Polynoms H für den nächsten Datenframe in eine Speicherstelle der Pipeline-Berechnungseinheit, wobei Hi+1 in eine Speicherstelle mit der Nummer i, 0≤i<L×M, und HLM ¬ in eine Speicherstelle mit der Nummer L×M geschrieben wird.
  • Die beschriebene besondere Ausführungsform eines Verfahrens kann die Geschwindigkeit der Vorrichtung erhöhen, wenn es von der Vorrichtung zur Verarbeitung von Datenframes benötigt wird, indem verschiedene Polynome H der Hash-Funktion verwendet werden. Datenblöcke von Datenframes werden am Eingang der Vorrichtung empfangen und enthalten die Markierung K, die entsprechend dem Polynom H der Hash-Funktion voreingestellt ist, für welches Polynom der Frame verarbeitet werden soll. Wenn Datenframes mit einem Polynom H der Hash-Funktion verarbeitet werden, wird eines der Speichermodule verwendet, während die Werte der Potenzen des Polynoms H für den nächsten Datenframe in das andere Speichermodul geladen werden. Dadurch ist es möglich, die Vorrichtung nicht anzuhalten, um das Polynom H der Hash-Funktion zu ändern.
  • In einer anderen besonderen Ausführungsform der Vorrichtung ist der Ausgang der Pipeline-Multiplikatoreinheit direkt mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden, wobei die Rückkopplungseinheit umgangen wird.
  • Diese besondere Ausführungsform kann vorteilhaft verwendet werden, wenn im Voraus bekannt ist, dass Datenblöcke von Datenframes bei jedem Taktzyklus der Taktfrequenz ohne Abstände in der vorliegenden Vorrichtung ankommen. In diesem Fall ist es auch möglich, den Strom von der unbenutzten Rückkopplungseinheit abzuschalten und dadurch den Stromverbrauch der Vorrichtung zu reduzieren.
  • Wenn bereits in der Entwurfsphase der Vorrichtung bekannt ist, dass Datenblöcke von Datenframes immer in jedem Taktzyklus ohne Abstände in der Vorrichtung ankommen, kann die Rückkopplungseinheit weggelassen werden, was Hardware-Ressourcen spart und die Kosten der Vorrichtung reduziert.
  • Eine besondere Ausführungsform des Verfahrens ist für die Implementierung dieser besonderen Ausführungsform der Vorrichtung vorgesehen, die Folgendes umfasst: Übertragen eines Datenblocks vom Ausgang des Pipeline-Multiplikators zum Eingang der Akkumulationseinheit und zum ersten Eingang des Rückkopplungssperrmoduls anstelle des ersten Eingangs der Rückkopplungseinheit.
  • Die Übertragung des Datenblocks vom Ausgang des Pipeline-Multiplikators zum Eingang der Akkumulationseinheit und zum ersten Eingang des Rückkopplungssperrmoduls anstelle des ersten Eingangs der Rückkopplungseinheit verringert die Anzahl der ausgeführten Operationen, was auch den Stromverbrauch verringern und die Leistung der Vorrichtung verbessern kann.
  • Figurenliste
    • BILD 1 zeigt ein Strukturdiagramm der Vorrichtung.
    • BILD 2 zeigt ein Strukturdiagramm der Pipeline-Berechnungseinheit.
  • Beschreibung der Erfindung
  • Um die erfinderische Vorrichtung herzustellen, ist es erforderlich, Anfangsdaten zu definieren: die Anzahl k der Bits in jedem Datenblock, die Anzahl L der Stufen in Pipeline-Multiplikatoren, die Anzahl M der Pipeline-Berechnungseinheiten.
  • Die Anzahl k von Bits in jedem Datenblock wird auf der Grundlage einer Datenblockgröße in einem zur Authentifizierung verwendeten Algorithmus gewählt.
  • Die Anzahl L der Stufen in den Pipeline-Multiplikatorn wird so gewählt, dass die Betriebsfrequenz des Pipeline-Multiplikators ausreicht, um die maximale Taktfrequenz Fmax für andere Schaltungskomponenten zu erreichen.
  • Die Anzahl M der Pipeline-Berechnungseinheiten wird so gewählt, dass sie ausreicht, um die erforderliche Geschwindigkeit auf der Grundlage der folgenden Formel zu erreichen P = F max k M , Bits/s
    Figure DE112018006405T5_0008
  • Wenn M-1 Pipeline-Berechnungseinheiten nicht ausreichen, um die erforderliche Geschwindigkeit zu erreichen, und M Pipeline-Berechnungseinheiten eine Geschwindigkeit liefern, die über die erforderliche hinausgeht, dann wird, um den Stromverbrauch zu reduzieren, die Betriebsfrequenz der Vorrichtung nach der Formel F = P / ( k M )
    Figure DE112018006405T5_0009
    gewählt. Dann wird die Vorrichtung entsprechend der Beschreibung so ausgelegt, dass sie alle Komponenten unter Berücksichtigung der Verbindungen zwischen ihnen und entsprechend ihrer vorgesehenen Funktion umfasst.
  • Die Vorrichtung wird vorzugsweise als integrale Einheit eines Computersystems hergestellt, das die Funktion hat, die Authentizität der Daten zu gewährleisten, die Daten für die Verarbeitung durch die vorliegende Vorrichtung vorzubereiten und die von der Vorrichtung berechneten Werte der GHASH-Hashfunktion zu verwenden, um die Authentizität der Daten zu bestätigen.
  • Zum Beispiel kann die vorliegende Vorrichtung in Form einer speziellen integrierten Schaltungseinheit hergestellt werden, die die Funktionen zur Sicherstellung der Authentizität von Daten ausführt und eine Schnittstelle zum Empfangen und Senden von Daten, eine Einheit zur Vorbereitung von Daten für den Betrieb der vorliegenden Vorrichtung, die vorliegende Vorrichtung zur Berechnung der Hash-Funktion und die Einheit, die die berechnete Hash-Funktion zur Sicherstellung der Authentizität der Daten verwendet, umfasst. Die vorliegende Vorrichtung kann auch in anderen Rechensystemen enthalten sein, in denen sie zur Berechnung der Hash-Funktion benötigt wird.
  • Die vorliegende Vorrichtung kann in Form einer integrierten Schaltungseinheit oder einer Einheit einer Vorrichtung zur Sicherstellung der Authentizität von Daten implementiert werden, die auf der Grundlage eines FPGA (Field-Programmable Gate Array) oder eines Master-Chips von einer Person hergestellt wird, die mit dem Entwurf digitaler integrierter Schaltungen vertraut ist.
  • Die Vorrichtung gemäß der Beschreibung wird zur Implementierung eines Verfahrens hergestellt. Dann wird eine Bitdarstellung für einen Wert des Polynoms H bestimmt, das ein Schlüssel der Hash-Funktion ist und dessen Wert geheim gehalten werden muss. Zum Beispiel kann eine 128-Bit-Darstellung des Wertes des Polynoms H von einem Zufallszahlengenerator erhalten werden. Je nach dem verwendeten Algorithmus kann der H-Wert auf andere Weise bestimmt werden.
  • Dann werden die Inhalte aller FIFO-Pufferregister der vorbereitenden Vorbereitungseinheit auf Null zurückgesetzt, die Werte der Potenzen des Polynoms H bis zu HLM werden im Feld GF(2k) berechnet, ihre Bit-Darstellungen werden in die Speichermodule aller Pipeline-Berechnungseinheiten geschrieben, wobei Hi+1 in eine Speicherstelle mit der Zahl i geschrieben wird, 0≤i<L×M, und HLM ¬ wird in eine Speicherstelle mit der Nummer L×M geschrieben, L Datenblöcke, die Nullen in allen Bits umfassen, werden in die Rückkopplungseinheiten aller Pipeline-Berechnungseinheiten geschrieben, Zählerwerte in den Rückkopplungssperrmodulen aller Pipeline-Berechnungseinheiten werden auf Null zurückgesetzt.
  • Danach beginnt die Verarbeitung von Datenframes. Zu diesem Zweck werden die Datenframes in Blöcke von k Bits unterteilt, wobei der letzte Block mit Metadaten versehen wird, die anzeigen, dass es sich um den letzten Block eines Datenframes handelt. M aufeinanderfolgende Datenblöcke werden gleichzeitig an die M Eingänge der vorläufigen Vorbereitungseinheit geliefert. Die vorläufige Vorbereitungseinheit zählt die Datenblöcke auf (versieht sie mit Metadaten). Dann werden die Datenblöcke von den Ausgängen der vorläufigen Vorbereitungseinheit an die Eingänge der jeweiligen M Pipeline-Berechnungseinheiten übertragen. Jede Pipeline-Berechnungseinheit berechnet unter Verwendung der in den Speichermodulen gespeicherten H-Leistungswerte L Teilsummen und summiert sie in der Akkumulationseinheit der Pipeline-Berechnungseinheit.
  • Dann werden die Datenblöcke von den Ausgängen der Pipeline-Berechnungseinheiten an die M Eingänge der Kombinationseinheit übertragen, die an den Eingängen der Kombinationseinheit empfangenen Datenblöcke werden summiert, und das Ergebnis, das der gewünschte Wert ist, wird an den Ausgang der Vorrichtung übertragen.
  • Die Implementierung der besonderen Ausführungsform der Vorrichtung, bei der in jeder Pipeline-Berechnungseinheit ein zusätzliches unabhängiges Speichermodul vorhanden ist, das parallel zu dem vorhandenen Speichermodul geschaltet ist, ermöglicht die Beschleunigung der Datenverarbeitung durch Beseitigung von Leerlaufperioden der Vorrichtung beim Laden von Werten der Potenzen des Polynoms H während der Änderung der Hash-Funktionstaste.
  • Das Vorhandensein der beiden Speichermodule in jeder Pipeline-Berechnungseinheit ermöglicht das Laden von Werten der Potenzen des Polynoms H für einen neuen Schlüssel in eines der Speichermodule, ohne den Betrieb der Vorrichtung zu stoppen, während Daten unter Verwendung von Potenzen des Polynoms H für den im anderen Speichermodul gespeicherten alten Schlüssel verarbeitet werden. In diesem Fall werden Datenblöcke, die zusätzlich eine Markierung K enthalten, an die Eingänge der Vorrichtung angelegt, wobei die Markierung K für Datenblöcke, die zu dem ersten verarbeiteten Datenframe gehören, einen Wert gleich Null hat und für Datenblöcke aller nachfolgenden Datenframes die Markierung K gemäß der folgenden Regel gesetzt wird:
    • • wenn die Hash-Funktion für einen nächsten Datenframe auf dem gleichen Wert des Polynoms H wie die Hash-Funktion für einen vorhergehenden Datenframe berechnet werden soll, dann wird ein Wert der Markierung K für alle Datenblöcke des nächsten Datenframes auf den gleichen Wert wie ein Wert der Markierung K für Datenblöcke des vorhergehenden Datenframes gesetzt;
    • • andernfalls wird der Wert der Markierung K für alle Datenblöcke des nächsten Datenframes auf einen Wert gesetzt, der dem Wert der Markierung K für die Datenblöcke des vorhergehenden Datenframes entgegengesetzt ist;
    wobei in der Vorrichtung in jeder Pipeline-Berechnungseinheit Datenblöcke an das Speichermodul geliefert werden, wenn die Markierung K gleich Null ist, oder an das zusätzliche Speichermodul, wenn die Markierung K gleich Eins ist.
  • Um die spezielle Ausführungsform der Vorrichtung zu implementieren, werden Datenblöcke des aktuellen Datenframes zusätzlich mit der Markierung K versehen, und der Wert der Markierung K wird in Übereinstimmung mit der oben beschriebenen Regel voreingestellt. Darüber hinaus umfasst in jeder Pipeline-Berechnungseinheit der Schritt der Übertragung eingehender Datenblöcke an den Eingang des Speichermoduls:
    • • wenn ein ankommender Datenblock mit der Markierung K gleich Null markiert wird, dann
      • ◯ Übertragen des eingehenden Datenblocks an den Eingang des Speichermoduls,
      • ◯ Berechnung der Werte der Potenzen des nächsten Polynoms H im Feld GF(2k) für den nächsten Datenframe,
        • ◯ Schreiben der berechneten Werte der Potenz des Polynoms H für den nächsten Datenframe in das zusätzliche Speichermodul der Pipeline-Berechnungseinheit, wobei Ii+1 in die Speicherstelle mit der Nummer i, 0≤i<L×M, und HLM in die Speicherstelle mit der Nummer L×M geschrieben wird;
    • • wenn der ankommende Datenblock mit der Markierung K gleich eins markiert ist, dann
      • ◯ Übertragen des eingehenden Datenblocks an den Eingang des zusätzlichen Speichermoduls,
      • ◯ Berechnen der Werte der Potenzen des nächsten Polynoms H im Feld GF(2k) für den nächsten Datenframe,
        • ◯ Schreiben der berechneten Werte der Potenzen des Polynoms H für den nächsten Datenframe in das Speichermodul der Pipeline-Berechnungseinheit, wobei Hi+1 in die Speicherstelle mit der Nummer i, 0≤i<L×M, und HLM ¬ in die Speicherstelle mit der Nummer L×M geschrieben wird.
  • Eine weitere besondere Ausführungsform der Vorrichtung ist möglich, bei der der Ausgang des Pipeline-Multiplikators in der Vorrichtung unter Umgehung der Rückkopplungseinheit direkt mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden werden kann. In diesem Fall kann die Vorrichtung nur dann korrekt arbeiten, wenn Datenblöcke eines Datenframes für jeden Taktzyklus ohne Abstände bis zum Ende jedes Frames an den Eingang der Vorrichtung geführt werden.
  • Diese spezielle Ausführungsform kann z.B. durch die Verwendung elektronischer Schalter realisiert werden, die den Ausgang des Pipeline-Multiplikators von der Rückkopplungseinheit trennen und ihn mit dem ersten Eingang des Rückkopplungssperrmoduls verbinden. In diesem Fall kann die Rückkopplungseinheit ausgeschaltet werden, um Strom zu sparen, wenn der Ausgang des Pipeline-Multiplikators direkt mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden ist.
  • Wenn im Voraus bekannt ist, dass Datenblöcke des Datenframes für jeden Taktzyklus ohne Abstände bis zum Ende jedes Frames dem Vorrichtungseingang zugeführt werden, dann kann diese spezielle Ausführungsform der Vorrichtung ohne die Rückkopplungseinheit überhaupt implementiert werden. In diesem Fall wird der Ausgang des Pipeline-Multiplikators direkt mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden. Dieser Entwurf kann elektrische Energie und Hardware-Ressourcen sparen, z.B. Platz auf einem integrierten Schaltkreis-Chip, auf dem die Vorrichtung implementiert ist.
  • In diesem Fall umfasst ein Verfahren die Lieferung von M Datenblöcken pro Taktzyklus bis zum Ende des aktuellen Datenframes an den Eingang des Geräts. Zusätzlich wird in jeder Pipeline-Berechnungseinheit ein Datenblock vom Ausgang des Pipeline-Multiplikators zum Eingang der Akkumulationseinheit und zum ersten Eingang des Rückkopplungssperrmoduls anstelle des ersten Eingangs der Rückkopplungseinheit übertragen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 7970130 [0005]
  • Zitierte Nicht-Patentliteratur
    • ISO/IEC 19772: 2009 A.8 [0002]

Claims (6)

  1. Eine Vorrichtung zum Berechnen einer Hash-Funktion für einen digitalen Datenframe, wobei der Datenframe aus Datenblöcken mit einer Länge von k Bits besteht, umfassend: eine vorläufige Vorbereitungseinheit mit M Eingängen mit einer Größe von k Bits, wobei M>1; M Pipeline-Berechnungseinheiten, deren Eingänge jeweils Ausgänge der vorläufigen Vorbereitungseinheit sind und die Pipeline-Multiplikatoren verwenden, die L Stufen enthalten; eine Kombinationseinheit mit M Eingängen, wobei jeder Eingang mit einem entsprechenden Ausgang der Pipeline-Berechnungseinheit verbunden ist und ein Ausgang der Kombinationseinheit ein Ausgang der Vorrichtung als Ganzes ist; wobei die vorläufige Vorbereitungseinheit ferner M FIFO-Pufferregister umfasst und konfiguriert ist: Datenblöcke, die gleichzeitig an den M Eingängen ankommen, an die Enden der jeweiligen FIFO-Pufferregister zu schreiben; eine Menge von Datenblöcken zu bestimmen, die in die FIFO-Pufferregister der vorläufigen Vorbereitungseinheit geschrieben werden; das Vorhandensein eines letzten Datenblocks des Datenframes in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit zu bestimmen; Datenblöcke aus den jeweiligen FIFO-Pufferregistern zu allen M Ausgängen der Vorlauf-Vorbereitungseinheit zu lesen, wenn L×M Datenblöcke in den FIFO-Pufferregistern der Vorlauf-Vorbereitungseinheit vorhanden sind oder wenn der letzte Block des Datenframes in den FIFO-Pufferregistern der Vorlauf-Vorbereitungseinheit vorhanden ist; Ausgänge der Einheit als keine Daten aufweisend zu markieren, wenn in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit L×M Datenblöcke fehlen und wenn in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit der letzte Datenframe des Datenblocks fehlt; Datenblöcke aufzuzählen, die aus den FIFO-Pufferregistern der Vorlaufvorbereitungseinheit gelesen werden, wobei wenn der letzte Datenblock in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit vorhanden ist, die Datenblöcke ab dem Ende des Datenframes und beginnend mit Null aufgezählt werden, wenn der letzte Datenblock in den FIFO-Pufferregistern der vorläufigen Vorbereitungseinheit fehlt, jedem Leseblock eine Nummer L×M zugewiesen wird; jede der M parallel arbeitenden Pipeline-Berechnungseinheiten umfasst: ein Speichermodul, ein Rückkopplungssperrmodul, einen Addierer, einen Pipeline-Multiplikator mit L-Stufen, eine Rückkopplungseinheit, eine Akkumulationseinheit; wobei das Speichermodul konfiguriert ist: darauf geschriebene Daten zu speichern; an einen Ausgang des Speichermoduls Daten zu liefern, die in Speicherplätzen des Speichermoduls gespeichert sind, die eine Anzahl aufweisen, die gleich der Anzahl von Datenblöcken ist, die an einem Eingang des Speichermoduls ankommen; der Addierer einen ersten und einen zweiten Eingang und einen Ausgang umfasst und konfiguriert ist, in einem Feld GF(2k) Datenblöcke zu summieren, die an dem ersten und dem zweiten Eingang ankommen, und ein Ergebnis an den Ausgang des Addierers zu übertragen; das Rückkopplungssperrmodul einen ersten und einen zweiten Eingang, einen Zähler und einen Ausgang umfasst und konfiguriert ist: einen Wert des Zählers zu inkrementieren, wenn ein Datenblock am zweiten Eingang empfangen wird; einen Datenblock vom ersten Eingang zum Ausgang zu übertragen, wenn der Zählerwert größer oder gleich M ist; einen Datenblock mit Nullen in allen Bits zum Ausgang zu übertragen, wenn der Zählerwert kleiner als Mist; den Zählerwert auf Null zurückzusetzen, wenn eine Nummer des am zweiten Eingang empfangenen Datenblocks kleiner als Mist; der Pipeline-Multiplikator umfasst: einen ersten und einen zweiten Eingang, L Multiplikationspipeline-Stufen, die hintereinander geschaltet sind und gleichzeitig arbeiten, wobei jede ihren eigenen Teil der Berechnungen eines Produkts aus zwei Blöcken durchführt, wobei Eingänge einer ersten Stufe der Multiplikationspipeline mit den Eingängen des Pipeline-Multiplikators verbunden sind, einen Ausgang, bei dem es sich um den Ausgang einer letzten Stufe der Multiplikationspipeline handelt; wobei der Pipeline-Multiplikator konfiguriert ist, Ausgangsblöcke derart aufzuzählen, dass einem Ausgangsdatenblock eine Anzahl von jeweiligen Datenblöcken zugeordnet wird, die von dem ersten Eingang genommen werden; die Rückkopplungseinheit umfasst: einen ersten und einen zweiten Eingang und einen Ausgang, ein FIFO-Pufferregister, in das am ersten Eingang der Rückkopplungseinheit empfangene Datenblöcke geschrieben werden; die Rückkopplungseinheit konfiguriert ist, Datenblöcke aus dem FIFO-Pufferregister nur dann auf den Ausgang zu lesen, wenn Datenblöcke am zweiten Eingang ankommen; die Akkumulationseinheit einen Akkumulationsspeicherplatz umfasst und konfiguriert ist: am Eingang Datenblöcke und ihre Nummern zu empfangen; eine Nummer eines ankommenden Datenblocks mit L×M zu vergleichen; wenn die Nummer des ankommenden Datenblocks größer oder gleich L×M ist, die Akkumulationsspeicherstelle auf Null zurückzusetzen; wenn die Nummer des ankommenden Datenblocks kleiner als L×M ist, den ankommenden Datenblock in dem Feld GF(2k) mit einem in der Akkumulationsspeicherstelle enthaltenen Wert zu summieren und ein Ergebnis in die Akkumulationsspeicherstelle zurückzuschreiben; wobei ein Eingang jeder Pipeline-Berechnungseinheit mit dem ersten Eingang des Addierers, dem Eingang des Speichermoduls, dem zweiten Eingang des Rückkopplungssperrmoduls und dem zweiten Eingang der Rückkopplungseinheit verbunden ist; wobei der erste Eingang des Pipeline-Multiplikators mit dem Ausgang des Speichermoduls verbunden ist und der zweite Eingang des Pipeline-Multiplikators mit dem Ausgang des Addierers verbunden ist; wobei der Ausgang des Pipeline-Multiplikators mit dem Eingang der Akkumulationseinheit und dem ersten Eingang der Rückkopplungseinheit verbunden ist, und der Ausgang der Rückkopplungseinheit mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden ist; der Ausgang des Rückkopplungssperrmoduls mit dem zweiten Eingang des Addierers verbunden ist; der Ausgang der Akkumulationseinheit der Ausgang der Pipeline-Berechnungseinheit ist; die Kombinationseinheit M Eingänge umfasst und konfiguriert ist, Datenblöcke im Feld GF(2k) von allen M Eingängen zu summieren und ein Ergebnis dieser Summierung an den Ausgang zu liefern.
  2. Die Vorrichtung nach Anspruch 1, bei der Datenblöcke, die zusätzlich eine Markierung K enthalten, am Eingang der Vorrichtung bereitgestellt werden, wobei für Datenblöcke, die zu einem ersten Datenframe gehören, der verarbeitet wird, die Markierung K einen Nullwert hat und für Datenblöcke aller nachfolgenden Datenframes die Markierung K gemäß der folgenden Regel gesetzt wird: wenn die Hash-Funktion für einen nächsten Datenframe auf dem gleichen Wert des Polynoms H wie die Hash-Funktion für einen vorhergehenden Datenframe berechnet werden soll, dann ein Wert der Markierung K für alle Datenblöcke des nächsten Datenframes auf den gleichen Wert wie ein Wert der Markierung K für Datenblöcke des vorhergehenden Datenframes gesetzt wird; andernfalls der Wert der Markierung K für alle Datenblöcke des nächsten Datenframes auf einen Wert gesetzt wird, der dem Wert der Markierung K für die Datenblöcke des vorhergehenden Datenframes entgegengesetzt ist; wobei die Vorrichtung ein zusätzliches unabhängiges Speichermodul in jeder Pipeline-Berechnungseinheit umfasst, wobei das zusätzliche Modul parallel zu dem vorhandenen Speichermodul geschaltet ist; in der Vorrichtung in jeder Pipeline-Berechnungseinheit Datenblöcke in dem Speichermodul ankommen, wenn die Markierung K Null ist, oder in dem zusätzlichen Speichermodul, wenn die Markierung K Eins ist.
  3. Die Vorrichtung nach Anspruch 1 oder 2, wobei der Ausgang der Pipeline-Multiplikationseinheit konfiguriert ist, unter Umgehung der Rückkopplungseinheit direkt mit dem ersten Eingang des Rückkopplungssperrmoduls verbunden zu werden.
  4. Ein Verfahren zum Berechnen einer Hash-Funktion für einen digitalen Datenframe, wobei der Datenframe einen Datenblock mit einer Länge von k Bits umfasst, wobei das Verfahren umfasst: Bestimmen eines Polynoms H der Hash-Funktion; Zurücksetzen des Inhalts aller FIFO-Pufferregister einer vorläufigen Vorbereitungseinheit auf Null; Zurücksetzen einer Speicherstelle von Akkumulationseinheiten aller Pipeline-Berechnungseinheiten auf Null; Berechnen von Werten von Potenzen des in einem Feld GF(2k) berechneten Polynoms H; Schreiben der berechneten Werte der Potenzen des Polynoms H in Speichermodule aller Pipeline-Berechnungseinheiten, wobei Hi+1 in eine Speicherstelle mit der Zahl i, 0≤i<L×M, und HLM in eine Speicherstelle mit der Zahl L×M geschrieben wird; Schreiben von L Datenblöcken, die Nullen in allen Bits umfassen, in Rückkopplungseinheiten aller Pipeline-Berechnungseinheiten; Zurücksetzen eines Wertes eines Zählers in Rückkopplungssperrmodulen aller Pipeline-Berechnungseinheiten auf Null; gleichzeitiges Zuführen von aufeinanderfolgenden M Datenblöcken des Datenframes an M Eingänge der vorläufigen Vorbereitungseinheit; wenn es eingehende Datenblöcke gibt, Schreiben der sequentiellen Datenblöcke in entsprechende M FIFO-Pufferregister in der vorläufigen Vorbereitungseinheit; wenn ein FIFO-Pufferregister einen letzten Datenblock des Datenframes enthält, dann Lesen aufeinanderfolgender Datenblöcke aus jedem FIFO-Pufferregister; Übertragen dieser Datenblöcke an den Ausgang der vorläufigen Vorbereitungseinheit; jedem Datenblock eine von Null an beginnende und ab dem letzten Datenblock des in den FIFO-Pufferregistern befindlichen Frames zählende laufende Nummer zuweisen; andernfalls, wenn Warteschlangen die Länge L haben und nicht den letzten Datenblock des Datenframes enthalten, dann Lesen aufeinanderfolgender Datenblöcke aus jedem FIFO-Pufferregister; Übertragen dieser Datenblöcke an den Ausgang der vorläufigen Vorbereitungseinheit; Zuweisen einer Nummer L×M zu jedem Datenblock; Übertragen von Datenblöcken von den Ausgängen der vorläufigen Vorbereitungseinheit zu den Eingängen der jeweiligen Pipeline-Berechnungseinheiten; Übertragen eingehender Datenblöcke zu einem Eingang des Speichermoduls, einem ersten Eingang eines Addierers, einem zweiten Eingang des Rückkopplungssperrmoduls, einem zweiten Eingang der Rückkopplungseinheit in jeder Pipeline-Berechnungseinheit; Verwenden einer Nummer eines eingehenden Datenblocks als Speichermoduladresse im Speichermodul, Extrahieren eines Wertes einer Potenz von H, der im Speichermodul vorgespeichert ist, in das Feld GF(2k); Liefern des extrahierten Wertes an den Ausgang des Speichermoduls; Ausführen der folgenden Schritte im Addierer: Summieren von Datenblöcken, die von den ersten und zweiten Eingängen eingehen, im Feld GF(2k); Zuweisen einer Nummer eines Datenblocks von dem ersten Eingang zu einem Ergebnis der Summierung; Übertragen dieses Ergebnisses an den Ausgang des Addierers; Übertragen des Datenblocks vom Ausgang des Speichermoduls zum ersten Eingang des Pipeline-Multiplikators; Übertragen eines sequentiellen Blocks vom Ausgang des Addierers zum zweiten Eingang des Pipeline-Multiplikators; Berechnen eines Produkts von Datenblöcken in dem Feld GF(2k) in dem Pipeline-Multiplikator, Übertragen dieses Produkts an den Ausgang des Pipeline-Multiplikators und Zuweisen einer Zahl, die gleich einer Zahl eines entsprechenden eingehenden Datenblocks ist, der von dem zweiten Eingang des Pipeline-Multiplikators genommen wurde, zu einem resultierenden Block; Übertragen des Datenblocks vom Ausgang des Pipeline-Multiplikators zum Eingang der Akkumulationseinheit und zum ersten Eingang der Rückkopplungseinheit; wenn ein ankommender Datenblock am ersten Eingang der Rückkopplungseinheit vorhanden ist, Schreiben des Datenblocks in die FIFO-Pufferregister der Rückkopplungseinheit; wenn es einen eingehenden Datenblock am zweiten Eingang der Rückkopplungseinheit gibt, dann Lesen eines sequentiellen Datenblocks aus einem FIFO-Pufferregister der Rückkopplungseinheit; Übertragen auf den Ausgang der Rückkopplungseinheit; Übertragen des Datenblocks vom Ausgang der Rückkopplungseinheit zum ersten Eingang des Rückkopplungssperrmoduls; Ausführen der folgenden Schritte im Rückkopplungssperrmodul: wenn ein Datenblock am zweiten Eingang ankommt, Inkrementieren des Wertes eines Zählers; wenn der Zählerwert größer oder gleich M ist, Übertragen eines Datenblocks vom ersten Eingang zum Ausgang; wenn der Zählerwert kleiner als M ist, Übertragen eines Datenblocks, der Nullen in allen Bits enthält, an den Ausgang; wenn eine Zahl des am zweiten Eingang empfangenen Datenblocks kleiner als M ist, wird der Zählerwert auf Null zurückgesetzt; Übertragen von Datenblöcken vom Ausgang des Rückkopplungssperrmoduls zum zweiten Eingang des Addierers; Prüfen, ob am Eingang der Akkumulationseinheit Daten vorhanden sind, wenn es einen Datenblock am Eingang gibt, dann wenn seine Anzahl kleiner als L×M, aber größer oder gleich M ist, dann Summieren, im Feld GF(2k), eines eingehenden Datenblocks und des Inhalts einer Speicherstelle der Akkumulationseinheit; Schreiben eines Ergebnisses zurück in die Speicherstelle der Akkumulationseinheit; andernfalls, wenn die Nummer des ankommenden Datenblocks kleiner als M ist, dann Summieren, im Feld GF(2k), des eingehenden Datenblocks und des Inhalts der Speicherstelle der Akkumulationseinheit; Schreiben des Ergebnisses auf den Ausgang der Akkumulationseinheit; Zurücksetzen des Inhalts der Speicherstelle der Akkumulationseinheit auf Null; wenn am Eingang der Akkumulationseinheit kein Datenblock vorhanden ist oder wenn dort ein Datenblock vorhanden ist, dessen Nummer jedoch gleich L×M ist, dann werden die Daten nicht zum Ausgang der Akkumulationseinheit übertragen; Übertragen des Datenblocks vom Ausgang der Akkumulationseinheit zum Ausgang der Pipeline-Berechnungseinheit; Übertragen von Datenblöcken vom Ausgang der Pipeline-Berechnungseinheit zu den Eingängen der Kombinationseinheit; Prüfen, ob in der Kombinationseinheit eingehende Datenblöcke vorhanden sind, wenn am Eingang keine Datenblöcke vorhanden sind, dann Markieren des Ausgangs der Kombinationseinheit als ohne Daten; andernfalls, wenn es Datenblöcke am Eingang gibt, dann Summieren von Datenblöcken aller Eingänge im Feld GF(2k); Übertragen eines Ergebnisses der Summierung, das ein Wert der Hash-Funktion ist, an den Ausgang der Kombinationseinheit.
  5. Das Verfahren nach Anspruch 4, bei dem, wenn zusätzliche Speichermodule in jeder Pipeline-Berechnungseinheit vorhanden sind, der Schritt des Übertragens eingehender Datenblöcke an den Eingang des Speichermoduls umfasst: wenn ein eingehender Datenblock mit einer Markierung K gleich Null markiert ist, dann Übertragen des eingehenden Datenblocks an den Eingang des Speichermoduls; Berechnen von Werten der Leistungen eines nächsten Polynoms H im Feld GF(2k) für einen nächsten Datenframe, Schreiben der berechneten Werte der Leistungen des Polynoms H für den nächsten Datenframe in ein zusätzliches Speichermodul der Pipeline-Berechnungseinheit, wobei Hi+1 in eine Speicherstelle mit der Nummer i, 0≤i<L×M, und HLM in eine Speicherstelle mit der Nummer L×M geschrieben wird; wenn der ankommende Datenblock mit der Markierung K gleich eins markiert ist, dann Übertragen des eingehenden Datenblocks an den Eingang des zusätzlichen Speichermoduls; Berechnen der Werte der Potenzen des nächsten Polynoms H im Feld GF(2k) für den nächsten Datenframe, Schreiben der berechneten Werte der Potenzen des Polynoms H für den nächsten Datenframe in das Speichermodul der Pipeline-Berechnungseinheit, wobei Hi+1 in eine Speicherstelle mit der Nummer i, 0≤i<L×M, und HLM in eine Speicherstelle mit der Nummer L×M geschrieben wird.
  6. Das Verfahren nach Anspruch 4 oder 5, wobei ein Datenblock vom Ausgang des Pipeline-Multiplikators zum Eingang der Akkumulationseinheit und zum ersten Eingang des Rückkopplungssperrmoduls anstelle des ersten Eingangs der Rückkopplungseinheit übertragen wird.
DE112018006405.0T 2017-12-14 2018-10-23 Verfahren und Vorrichtung zur Berechnung der Hashfunktion Pending DE112018006405T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
RU2017143805 2017-12-14
RU2017143805A RU2666303C1 (ru) 2017-12-14 2017-12-14 Способ и устройство для вычисления хэш-функции
PCT/RU2018/050130 WO2019117758A1 (ru) 2017-12-14 2018-10-23 Способ и устройство для вычисления хэш-функции

Publications (1)

Publication Number Publication Date
DE112018006405T5 true DE112018006405T5 (de) 2020-09-03

Family

ID=63460165

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018006405.0T Pending DE112018006405T5 (de) 2017-12-14 2018-10-23 Verfahren und Vorrichtung zur Berechnung der Hashfunktion

Country Status (5)

Country Link
US (1) US11522680B2 (de)
BR (1) BR112020011520A2 (de)
DE (1) DE112018006405T5 (de)
RU (1) RU2666303C1 (de)
WO (1) WO2019117758A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301418B2 (en) * 2019-05-02 2022-04-12 EMC IP Holding Company LLC Method and system for provenance-based data backups
CN110245756B (zh) * 2019-06-14 2021-10-26 第四范式(北京)技术有限公司 用于处理数据组的可编程器件及处理数据组的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085988B1 (en) * 2002-04-08 2006-08-01 Maxtor Corporation Hashing system utilizing error correction coding techniques
US7418100B2 (en) * 2004-10-20 2008-08-26 Cisco Technology, Inc. Enciphering method
TWI342703B (en) * 2007-05-10 2011-05-21 Ind Tech Res Inst Low-latency method and apparatus of ghash operation for authenticated encryption galois counter mode
US7827384B2 (en) * 2007-07-16 2010-11-02 Cisco Technology, Inc. Galois-based incremental hash module
US20090080646A1 (en) * 2007-09-21 2009-03-26 Chih-Hsu Yen Method And Architecture For Parallel Calculating Ghash Of Galois Counter Mode
TWI370388B (en) * 2008-10-30 2012-08-11 Ind Tech Res Inst Semi-sequential galois field multiplier and the method for performing the same
US9519807B1 (en) * 2014-10-14 2016-12-13 Altera Corporation Hash generation circuitry and methods for multi-channel, multi-lane encryption and authentication
RU2598781C1 (ru) * 2015-07-31 2016-09-27 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ линейного преобразования (варианты)
US10110376B1 (en) * 2016-03-28 2018-10-23 Secturion Systems, Inc. Systolic parallel Galois hash computing device
US10855443B2 (en) * 2016-07-29 2020-12-01 Cryptography Research Inc. Protecting polynomial hash functions from external monitoring attacks
US10915667B2 (en) * 2016-12-21 2021-02-09 Cryptography Research, Inc. Protecting parallel multiplication operations from external monitoring attacks

Also Published As

Publication number Publication date
US11522680B2 (en) 2022-12-06
BR112020011520A2 (pt) 2020-11-17
US20210167944A1 (en) 2021-06-03
RU2666303C1 (ru) 2018-09-06
WO2019117758A1 (ru) 2019-06-20

Similar Documents

Publication Publication Date Title
DE69435034T2 (de) Verfahren ind vorrichtung zur durchfuehrung einer schnellen hadamard transform
DE19839627A1 (de) Digitaler Signalprozessor
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE2311220A1 (de) Digital-informations-verarbeitungsvorrichtung zur zeichenerkennung
DE102017209014A1 (de) Verfahren und Vorrichtung zum Anfügen von Transaktionen an eine Blockkette
DE1549476B2 (de) Anordnung zur ausfuehrung von divisionen
DE1549477B1 (de) Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden
DE2658248A1 (de) Mit hoher geschwindigkeit arbeitendes multiplikationssystem sowie verfahren zur durchfuehrung einer multiplikationsoperation
DE19826252C2 (de) Verfahren zur digitalen Signalverarbeitung
DE102005038518A1 (de) Modularer Multiplizierschaltkreis und Kryptographiesystem
DE112018006405T5 (de) Verfahren und Vorrichtung zur Berechnung der Hashfunktion
EP1543408A1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE3138698C2 (de)
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
EP1499954A2 (de) Berechnung eines ergebnisses einer modularen multiplikation
DE202014011350U1 (de) FFT- Beschleuniger
DE3447634C2 (de)
DE19635118A1 (de) Multiplizierer
DE69830971T2 (de) Pipelineprozessor für die schnelle Fourier-Transformation
DE10200133B4 (de) Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen
DE3422287C2 (de)
DE19635113A1 (de) Multiplizierer
DE10219161A1 (de) Vorrichtung und Verfahren zum Umrechnen eines Terms
DE3933172A1 (de) Akkumulator fuer komplexe zahlen
DE102013208836A1 (de) Verfahren und Vorrichtung zur Erzeugung eines Hash-Werts

Legal Events

Date Code Title Description
R012 Request for examination validly filed