DE112005000776T5 - Verfahren zum Verbessern der Arbeitsgeschwindigkeit einer Verschlüsselungsmaschine - Google Patents

Verfahren zum Verbessern der Arbeitsgeschwindigkeit einer Verschlüsselungsmaschine Download PDF

Info

Publication number
DE112005000776T5
DE112005000776T5 DE112005000776T DE112005000776T DE112005000776T5 DE 112005000776 T5 DE112005000776 T5 DE 112005000776T5 DE 112005000776 T DE112005000776 T DE 112005000776T DE 112005000776 T DE112005000776 T DE 112005000776T DE 112005000776 T5 DE112005000776 T5 DE 112005000776T5
Authority
DE
Germany
Prior art keywords
value
variable
actual
function
input
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.)
Withdrawn
Application number
DE112005000776T
Other languages
English (en)
Inventor
Atul Sunnyvale Garg
Siaw-Kang Lai
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112005000776T5 publication Critical patent/DE112005000776T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04KSECRET COMMUNICATION; JAMMING OF COMMUNICATION
    • H04K1/00Secret communication
    • 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
    • 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
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Logic Circuits (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Combined Controls Of Internal Combustion Engines (AREA)

Abstract

Verfahren zum Einrichten einer Funktion, deren Ausführung auf einem Eingangswert einer ersten Variable (B) beruht, die einen ersten Wert oder einen zweiten Wert annehmen kann, und auf einem Eingangswert einer zweiten Variablen (C) beruht, die einen ersten Wert oder einen zweiten Wert annehmen kann, mit:
Bereitstellen eines tatsächlichen Wertes der zweiten Variablen (C);
Ausführen der Funktion auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren ersten Wert festgelegt ist, und auf der Grundlage eines Eingangswertes der zweiten Variablen (C), die deren tatsächlichen Wert aufweist, um einen ersten Ausgangswert bereitzustellen;
Ausführen der Funktion auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren zweiten Wert festgelegt ist, und auf der Grundlage eines Eingangswertes der zweiten Variablen (C), die deren tatsächlichen Wert besitzt, um einen zweiten Ausgangswert bereitzustellen.

Description

  • 1. Gebiet der Erfindung
  • Diese Erfindung betrifft im Allgemeinen das Erhöhen der Arbeitsgeschwindigkeit auf dem Gebiet der Verschlüsselung.
  • 2. Beschreibung des Stands der Technik
  • Das Dokument „RFC 1321-Der MD5 – Nachrichtenverarbeitunsalgorithmus", von R. Rivest, MIT-Labor für Computerwissenschaften und RSA-Datensicherheit, Inc., April 1992, Seiten 1 bis 18, der hiermit durch Bezugnahme mit eingeschlossen ist, offenbart eine Vorgehensweise, die durch die Struktur der 1 dargestellt ist. In einer derartigen Betriebsweise wird das Register A mit Daten bis zu 32 Bits (A31, A30, ..., A0) gefüllt, das Register B wird mit Daten bis zu 32 Bits (B31, B30, ..., B0) gefüllt, das Register C wird mit Daten bis zu 32 Bits (C31, C30, ..., C0) gefüllt und das Register D wird mit Daten bis zu 32 Bits (D31, D30, ..., D0) gefüllt. Des weiteren wird das Register 5 mit 512 Datenbits gefüllt und das Register 6 wird mit 512 Datenbits gefüllt. Jedes Bit in dem Register A, B, C, D, 5 und 6 kann einen Wert von 0 oder 1 aufweisen.
  • Entsprechend diesem Dokument werden vier Hilfsfunktionen definiert:
    F(B, C, D) = BC v nicht(B)D
    G(B, C, D) = DD v C nicht(D)
    H(B, C, D) = B xor (exklusiv oder) C xor
    I(B, C, D) = C xor (B v nicht(D))
  • Des weiteren werden die 512 Bits in dem Register 5 in 16 separate Gruppen (k = 0–15) aus 32 Bits unterteilt, und die Funktion X(k) bewirkt, dass eine Gruppe daraus ausgewählt wird, die durch den Wert von k bestimmt ist. Die 512 Bits in dem Register 6 werden in 16 separate Gruppen (i = 1–16) aus jeweils 32 Bits unterteilt, und die Funktion T(i) wirkt so, dass eine Gruppe daraus ausgewählt, die durch den Wert von i bestimmt ist. Die Funktion CLS(s) Rotator 11 bewirkt, dass der entsprechende Inhalt um eine Anzahl an Bits rotiert bzw. zyklisch vertauscht wird, wie dies durch den Wert s gegeben ist (s = 1–64).
  • [ABCD k s i] bezeichnet die Operation für jede der folgenden Durchgänge:

    /* Durchgang 1 */
    Ergebnis = b + a ((a + F(b, c, d) + X[k] + T[i] <<<ss).*/

    */ Die folgenden 16 Operationen werden durchgeführt. */

    [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
    [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
    [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
    [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

    /* Durchgang 2 */
    Ergebnis = b + a((a + G(b, c, d) + X[K] + T[i] <<<s). */

    /* Die folgenden 16 Operationen werden durchgeführt. */

    [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
    [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
    [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
    [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

    /* Durchgang 3 */
    Ergebnis = b + a((a + H(b, c, d) + X[k] + T[i]) <<<s) */
    /* Die folgenden 16 Operationen werden durchgeführt.*/

    [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
    [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
    [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
    [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

    /* Durchgang 4 */
    Ergebnis = b + ((a + I(b, c, d) + X[k] + T[i]) <<<s) */
    /* Die folgenden 16 Operationden werden durchgeführt. */

    [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
    [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
    [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
    [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
  • Mit Bezug zu den 1 und 2 wird die erste Operation des ersten Durchgangs, d. h. [ABCD 0 7 1] beschrieben.
  • Zunächst wird der 32-Bit Datensatz in dem Register A dem Addierer 7 zugeführt. Die erste Variable des Datensatzes des Registers B, d. h. das Bit B31, die erste Variable des Datensatzes im Register C, d. h. das Bit C31, und die erste Variable des Datensatzes im Register D, d. h. das D31 (erster Satz aus Variablen B31, C31, D31) werden als Eingangssignale für den Logikblock 8 verwendet, der entweder die Funktion F, G, H oder I an diesen Variablen ausführen kann. Gleichzeitig werden die zweite Variable des Datensatzes des Registers B, d. h. das Bit B30, die zweite Variable des Datensatzes des Registers C, d. h. das Bit C30, und die zweite Variable des Datensatzes des Registers D, d. h. das Bit D30 (der zweite Satz aus Variablen D30, C30, D30) ebenso als Eingangssignale dem Logikblock 8, und in gleicher Weise für jeden Satz der Variablen zugeführt. In diesem speziellen Falle wird die Funktion F auf diese Variablen angewendet (2). Der Prozess wird parallel an jedem der 32 Sätze aus 3 Bits ausgeführt, wodurch ein 32-Bit-Ausgangssignal erzeugt wird, das dem Addierer 7 zugeführt wird. Mit dem Zuführen des 32-Bit-Ausgangssignals von dem Logikblock 8 zu dem Addierer 7 wird der Inhalt des Registers B dem Register C und dem Addierer 12 zugeführt, der Inhalt des Registers C wird dem Register D zugeführt und der Inhalt des Registers D wird dem Register A zugeführt. Das Eingangssignals aus dem Logikblock 8 und der Datensatz des Registers A, der dem Addierer 7 zugeführt wird, werden von dem Addierer 7 addiert, der eine 32-Bit-Ausgangszahl dem Addierer 9 zuführt. Der Wert k = 0 zeigt an, dass die 32-Bit-Gruppe 0 des Registers 5 als Eingangssignal dem Addierer 9 zugeführt wird, und das Eingangssignal aus dem Addierer 7 und die 32-Bit-Gruppe 0 des Registers 5 werden von dem Addierer 9 addiert. Das Ausgangssignal des Addierers 9 wird dem Addierer 10 zugeführt, und der Wert i = 1 zeigt an, dass die 32-Bit-Gruppe 1 des Registers 6 als Eingangssignal dem Addierer 10 zugeführt wird, und das Eingangssignal aus dem Addierer 9 und die 32-Bit-Gruppe 1 des Registers 6 werden von dem Addierer 10 summiert. Der 32-Bit-Ausgang aus dem Addierer 10 wird von dem Rotator CLS(s) 11 zyklisch vertauscht, wie dies durch die Zahl s vorgegebenen ist, wobei s in diesem Falle s = 7 ist. Der zyklisch vertauschte Inhalt wird dem Addierer 12 zugeführt und dem Inhalt des Registers B hinzugefügt, der dem Addierer 12 zugeführt wurde. Der Ausgang des Addierers 12 wird dem Register B zugeführt.
  • Für die zweite Operation des ersten Durchlaufs, d. h. [DABC 1 12 2] wird der Vorgang wiederholt, wobei wiederum die Funktion F angewendet wird, und dieser Vorgang wird für alle 16 Operationen des ersten Durchgangs wiederholt, wobei jedes mal die Funktion F angewendet wird. Für die erste Operation der zweiten Runde [ABCD 1 5 17], wird die obige Prozedur jedoch mit dem Logikblock 8 angewendet, wobei die Funktion G auf die zugeleiteten Eingangssignale angewendet wird (4). In ähnlicher Weise werden die 16 Operationen des 2 Durchlaufs gemäß der obigen Abfolge durchgeführt.
  • Der dritte und der vierte Durchgang werden in ähnlicher Weise unternommen, wobei die Funktion H (5) und die Funktion I (Funktion 6) wiederum in der zuvor dargestellten Weise verwendet werden.
  • Wie man erkennen kann, ist die Anwendung einer Funktion durch den Logikblock 8 von den Eingangssignalen aus den Registern B, C und D abhängig. Während in jeder Operation der Inhalt der Register C und D direkt für den Logikblock 8 verfügbar ist, gelangt man nach der ersten Operation des ersten Durchlaufs zu dem Inhalt des Registers B, der dem Logikblock 8 zugeführt wird, durch eine Reihe von Berechnungen, die den Addierer 7, das Register 5, den Addierer 9, den Addierer 10, das Registers 6, den Rotator 11 und den Addierer 12 beinhalten. Diese zeitaufwendige Prozess verursacht, dass das Gesamtsystem langsamer arbeitet als dies gewünscht ist, da der Logikblock 8 auf die Eingangssignale von allen drei Registern B, C und D warten muss, bevor dessen Funktion angewendet wird.
  • Daher besteht ein Bedarf für ein Verfahren zur Beschleunigung der zuvor beschriebenen Arbeitsweise.
  • Überblick über die Erfindung
  • In dem erfindungsgemäßen Verfahren zum Einrichten einer Funktion einer Verschlüsselungsmaschine werden ein erster und ein zweiter Logikblock bereitgestellt, die jeweils eine Funktion abarbeiten, wobei das Ausführen der Funktion des ersten Logikblocks auf der Grundlage eines Eingangswertes einer ersten Variable beruht, die einen ersten und einen zweiten Wert aufweist, und auf einem Eingangswert einer zweiten Variable beruht, die einen ersten oder einen zweiten Wert aufweist, wobei das Ausführen der Funktion des zweiten Logikblocks auf einem Eingangswert der ersten Variable, die den ersten oder den zweiten Wert aufweist, und auf einem Eingangswert einer dritten Variable, die einen ersten Wert und einen zweiten Wert aufweisen kann, beruht. Ein tatsächlicher Wert der zweiten Variable wird bereitgestellt. Die Funktion des ersten Logikblocks wird auf der Grundlage des Eingangswerts der ersten Variablen, der auf den ersten Wert festgelegt ist, und auf der Grundlage eines Eingangswerts der zweiten Variablen, der auf den tatsächlichen Wert festgelegt ist, um das erste Ausgangssignal bereitzustellen. Die Funktion des ersten Logikblocks wird auf der Grundlage eines Eingangswerts der ersten Variablen, die auf den zweiten Wert festgelegt ist, und einem Eingangswert der zweiten Variablen, der dem tatsächlichen Wert davon entspricht, durchgeführt, um eine zweite Ausgabe bereitzustellen. Es wird ein tatsächlicher Wert der dritten Variable bereitgestellt; die Funktion des zweiten Logikblocks wird auf Grundlage eines Eingangswerts der ersten Variablen, die auf den ersten Wert festgelegt ist, und eines Eingangswerts der dritten Variablen mit dem tatsächlichen Wert davon durchgeführt, um eine dritte Ausgabe bereitzustellen. Die Funktion des zweiten Logikblocks wird auf der Grundlage eines Eingangswerts der ersten Variablen, die auf den zweiten Wert festgelegt ist, und eines Eingangswerts der dritten Variablen mit ihrem tatsächlichen Wert ausgeführt, um eine vierte Ausgabe bereitzustellen.
  • Die vorliegende Aufgabe kann durch Studium der folgenden detaillierten Beschreibung in Verbindung mit den begleitenden Zeichnungen besser verstanden werden. Wie der Fachmann aus dem folgenden erkennt, ist eine Ausführungsform dieser Erfindung einfach durch die Darstellung der besten Art zum Ausführen der Erfindung gezeigt und beschrieben. Man erkennt, dass die Erfindung andere Ausführungsformen annehmen kann und dass diverse Details Modifizierungen in diversen offensichtlichen Aspekten unterliegen kann, ohne von dem Schutzbereich der Erfindung abzuweichen. Daher sind die Beschreibung und die detaillierte Beschreibung als lediglich anschaulich und nicht als einschränkend zu erachten.
  • Kurze Beschreibung der Zeichnungen
  • Die neuen Merkmale, die als charakteristisch für die Erfindung betrachtet werden, sind in den angefügten Patentansprüchen dargelegt. Die Erfindung selbst sowie eine bevorzugte Anwendung davon sowie weitere Aufgaben und Vorteile davon können durch Bezugnahme auf die folgende detaillierte Beschreibung einer anschaulichen Ausführungsform besser verstanden werden, wenn diese in Verbindung mit den begleitenden Zeichnungen studiert wird, in denen:
  • 1 bis 6 die Funktionsweise eines konventionellen bekannten Verfahrens darstellen; und
  • 7 bis 14 die Funktionsweise des erfindungsgemäßen Verfahrens zeigen.
  • Detaillierte Beschreibung
  • Es wird nun detailliert auf eine spezielle Ausführungsform der vorliegenden Erfindung Bezug genommen, die von den Erfindern gegenwärtig als die beste Art zum Ausführen der Erfindung betrachtet wird.
  • 7 zeigt diese Ausführungsform der vorliegenden Erfindung. Wie darin gezeigt ist, sind 32 einzelne Logikblöcke LB1, LB2, LB3–LB32 vorgesehen, wobei diese Logikblöcke LB1 bis LB32 den einzelnen Logikblock aus 8 ersetzen. Es soll daran erinnert werden, dass in der Ausführungsform aus 1 jedes der Register B, C, D 32 Verbindungen parallel zu dem einzelnen Logikblock 8 aufweist. In der vorliegenden Ausführungsform besitzt, wie in 7 gezeigt ist, das Register B individuelle Verbindungen zu jedem der Logikblöcke LB1 bis LB32, das Register C besitzt individuelle Verbindungen zu jedem der Logikblöcke LB1 bis LB32 und das Register D besitzt individuelle Verbindungen zu jeweils den Logikblöcken LB1 bis LB32. Die Logikblöcke LB1 bis LB32 sind im Aufbau identisch, und die Details davon, etwa die Logikblöcke LB1, LB2 und LB32, sind in 8 bis 11 gezeigt. Jeder Logikblock enthält zwei Funktionsblöcke, um die Funktionen F, G, H, I nach Auswahl auszuführen, d. h. der Logikblock LB1 enthält Funktionsblöcke LB1FB1, LB1FB2, der Logikblock LB2 enthält Funktionsblöcke LB2FB1, LB2FB2, etc. Gleichzeitig werden die tatsächlichen Bits C31, D31 als Eingangswerte den Funktionsblöcken LB1FB1, LB1FB2 des Logikblocks LB1 (8) zugeführt, die tatsächlichen Werte der Bits C30, D30 werden als Eingangswerte den Funktionsblöcken LB2FB1, LB2FB2 des Logikblocks LB2 (9) zugeführt, die tatsächlichen Werte der Bits C29, D29 werden als Eingangswerte den Funktionsblöcken LB3FB1, LB3FB2 des Logikblocks LB3 (10), etc. zugeführt, bis alle Logikblöcke durchlaufen sind, bis die tatsächlichen Werte der Bits C0, D0 als Eingabewerte den Funktionsblöcken LB32FB1, LB32FB2 des Logikblocks LB32 (11) zugeführt werden.
  • In jedem Logikblock wird ein zusätzlicher Eingangswert für jeden Funktionsblock bereitgestellt, wobei der Eingangswert auf Null gesetzt ist für einen Funktionsblock und auf 1 gesetzt ist für den anderen Funktionsblock. Wie beispielsweise in 8 gezeigt ist, wird der zusätzliche Eingangswert des Funktionsblocks LB1FB1 auf Null gesetzt, und der zusätzliche Eingangswert für den Funktionsblock LBFB2 wird auf 1 gesetzt. Dies repräsentiert beide möglichen Werte für ein einzelnes Bit in dem Register B.
  • Während des Betriebs führt der Funktionsblock LB1FB1 des Logikblocks LB1 die Funktion F mit den Eingangswerten C31, D31, B = 0 aus, während der Funktionsblock LBFB2 des Logikblocks LB1 die Funktion F mit den Eingabewerten C31, D31, B = 1 (8) ausführt. Gleichzeitig führt der Funktionsblock LBFB1 des Logikblocks LB2 die Funktion F mit den Eingangswerten C30, D30 B = 0 aus, der Funktionsblock LB2FB2 des Logikblocks LB2 führt die Funktion F mit den Eingangswerten C30, D30, B = 1 (9) aus, der Funktionsblock LB3FB1 des Logikblocks LB3 führt die Funktion F mit den Eingangswerten C29, D29, B = 0 aus, der Funktionsblock LB3FB2 des Logikblocks LB3 führt die Funktion F mit Eingangswerten C29, D29, B = 1 (10) aus, usw. für alle Logikblöcke, wobei der Funktionsblock LB32FB2 des Logikblocks LB32 die Funktion F mit den Eingangswerten C0, D0, B = 1 ausführt (11). Innerhalb jedes Logikblocks werden die Ausgabewerte des Paares aus Funktionsblöcken einem Multiplexer zugeleitet (beispielsweise in dem Logikblock LB1 werden die Ausgangswerte von den Funktionsblöcken LB1FB1, LB1FB2 dem Multiplexer M1 zugeführt, in dem Logikblock LB2 werden die Ausgangswerten aus den Funktionsblöcken LB2FB1, LB2FB2 dem Multiplexer M2 zugeführt). Alle diese Operationen werden vor dem Zuführen dieser Daten zu dem Register B ausgeführt, dessen Daten, wie zuvor dargelegt ist, beim Erreichen des Registers B verzögert werden können. Jedoch können bei Erwartung des Eintreffens derartiger Daten im Register B die Berechnungen auf der Grundlage beider Werte jedes einzelnen Bits aus Daten, die dem Register B zugeführt werden, durchgeführt werden. Wenn dann derartige Daten (32 Bit) tatsächlich das Register B erreichen und darin gespeichert sind, wird der tatsächliche Wert des Bits 31 in dem Register B als Eingangswert dem Multiplexer M1 zugeführt, der auf der Grundlage dieses Eingangswertes einen Ausgabewert als einen tatsächlichen Ausgabewerte eines Funktionsblockes auswählt (der Funktionsblock LB1FB1 oder der Funktionsblock LB2FB2), wobei der Ausgabewert auf dem tatsächlichen Wert des Bits B31 in dem Register B beruht, d. h., wenn der tatsächliche Wert des Bits B31 gleich Null ist, dann wird der Ausgang aus dem Funktionsblock LB1FB1 als der Ausgangswert des Logikblocks LB1 ausgewählt, wohingegen, wenn der tatsächliche Wert des Bits B31 gleich eins ist, der Ausgangswert aus dem Funktionsblock LB1FB2 als der Ausgangswert des Logikblocks LB1 ausgewählt wird. In ähnlicher Weise beruht der Ausgangswert für den zweiten Logikblock LB2 auf dem tatsächlichen Wert des Bits B30 in dem Register B, der tatsächliche Ausgangswert des dritten Logikblocks LB3 beruht auf dem tatsächlichen Wert des Bits B29 in dem Register B, usw.
  • Die einzelnen Ausgabewerte der Logikblöcke LB1 bis LB32 bilden die einzelnen Bits der 32-Bit-Daten, die den Addierer 7 aus 1 zugeführt werden, die zuvor von dem Logikblock 8 geliefert wurden. Alle 16 Operationen des Durchlaufs 1 werden wie zuvor beschrieben durchgeführt (siehe Ablauf von oben), wobei dies sich auf die Funktion F bezieht. Ähnlich wie zuvor werden die 16 Operationen des zweiten Durchlaufs entsprechend dem obigen Ablauf auf der Grundlage der Funktion G (12) durchgeführt. Der dritte und der vierte Durchlauf werden in gleicher Weise unternommen, wobei die Funktion H (13) bzw. die Funktion I (14) wiederum gemäß dem obigen Ablauf verwendet werden.
  • Man erkennt, dass für jeden Logikblock eine Funktion auf der Grundlage des tatsächlichen Wertes des Eingangswertes C auf der Grundlage des tatsächlichen Wertes des Eingangswertes aus dem Register D und beider möglicher Werte des Eingangswertes aus dem Register B durchgeführt werden, wobei der Ausgangswert eines Logikblocks auf der Grundlage des tatsächlichen Wertes eines speziellen Bits des Registers B beim Anlegen an einen Multiplexer bestimmt wird. Somit wurden Berechnungen, die alle Möglichkeiten für die Werte B31 bis B0, die an dem Register B eintreffen können, ausgeführt sind, ohne dass auf die eigentlichen Werte dieser Bits gewartet wird, so dass diese dann in dem Register B vorhanden sind. Sobald die tatsächlichen Bits in dem Register B eintreffen, wird der Wert jedes Bits über einen direkten Weg einem Multiplexer zugeführt. Dies gilt es mit einem konventionellen System zu vergleichen, wobei das Ausführen einer Funktion lediglich dann ausgeführt wurde, nachdem die drei tatsächlichen Werte der Eingangswerte aus den Register B, C und D dem Logikblock 8 zugeführt sind. In der vorliegenden Situation wird die Ausführung einer Funktion parallel mit den zuvor beschriebenen Schritten ausgeführt, um Daten dem Register B zuzuführen und es wird lediglich ein einzelner Schritt des Auswählens des Ausgangs auf der Grundlage des tatsächlichen Wertes eines Bits in dem Register B ausgeführt, und es muss lediglich ein einzelner Schritts des Auswählens des Ausgangs auf der Grundlage des tatsächlichen Wertes des Bits in dem Register B ausgeführt werden, wobei ein direkter Weg von dem Register B zu einem Multiplexer verwendet wird.
  • Die vorhergehende Beschreibung der Ausführungsform der Erfindung ist zum Zwecke der Darstellung und der Beschreibung angegeben. Es ist nicht beabsichtigt, die Erfindung auf die genaue offenbarte Form einzuschränken. Andere Modifizierungen und Variationen sind im Lichte der obigen Lehre möglich.
  • Die Ausführungsform wurde ausgewählt und beschrieben, um die beste Darstellung der Prinzipien der Erfindung und ihrer praktischen Anwendung zu ermöglichen, wodurch der Fachmann in die Lage versetzt wird, die Erfindung in diversen Ausführungsformen und mit diversen Modifizierungen einzusetzen, wie sie für die spezielle betrachtete Anwendung geeignet sind. Es sollen alle derartigen Modifizierungen und Variationen innerhalb des Schutzbereichs der Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist, wenn diese entsprechend ihrer berechtigten Breite interpretiert werden.
  • Zusammenfassung
  • In dem vorliegenden Verfahren zum Einrichten von Funktionen einer Verschlüsselungsmaschine werden mehrere Logikblöcke (LB1 bis LB32) vorgesehen, wobei jeder eine Funktion (F, G, H, I) ausführt. Jede Funktion wird auf Grundlage von drei Variablen (B, C, D) ausgeführt, wovon jede einen ersten Wert oder einen zweiten Wert aufweisen kann. Die Funktion wird so ausgeführt, dass der erste Variablenwert (B) mit seinem ersten Wert ausgewählt wird, und wobei die zweite und die dritte Variable (C, D) ihre tatsächlichen Werte besitzen. Die Funktion wird erneut ausgeführt, wobei die erste Variable (B) ausgewählt wird, so dass diese ihren zweiten Wert aufweist, und wiederum besitzen die zweite und die dritte Variable (C, D) ihre tatsächlichen Werte. Ein tatsächlicher Wert der ersten Variable (B) wird bestimmt und der Ausgangswert des Logikblocks wird durch den tatsächlichen Wert der ersten Variablen (B) festgelegt.

Claims (10)

  1. Verfahren zum Einrichten einer Funktion, deren Ausführung auf einem Eingangswert einer ersten Variable (B) beruht, die einen ersten Wert oder einen zweiten Wert annehmen kann, und auf einem Eingangswert einer zweiten Variablen (C) beruht, die einen ersten Wert oder einen zweiten Wert annehmen kann, mit: Bereitstellen eines tatsächlichen Wertes der zweiten Variablen (C); Ausführen der Funktion auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren ersten Wert festgelegt ist, und auf der Grundlage eines Eingangswertes der zweiten Variablen (C), die deren tatsächlichen Wert aufweist, um einen ersten Ausgangswert bereitzustellen; Ausführen der Funktion auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren zweiten Wert festgelegt ist, und auf der Grundlage eines Eingangswertes der zweiten Variablen (C), die deren tatsächlichen Wert besitzt, um einen zweiten Ausgangswert bereitzustellen.
  2. Verfahren nach Anspruch 1, das ferner den Schritt Bereitstellen eines tatsächlichen Wertes der ersten Variablen (B) umfasst.
  3. Verfahren nach Anspruch 2, das ferner umfasst: Auswählen des ersten oder des zweiten Ausgangswertes, wobei der erste Ausgangswert gewählt wird, wenn die erste Variable (B) ihren tatsächlichen ersten Wert besitzt, und wobei der zweite Ausgangswert ausgewählt wird, wenn die erste Variable (B) ihren tatsächlichen zweiten Wert besitzt.
  4. Verfahren zum Einrichten einer Funktion, deren Ausführung auf einem Eingangswert einer ersten Variablen (B) beruht, die einen ersten Wert oder einen zweiten Wert aufweisen kann, und einem Eingangswert einer dritten Variablen (D), die einen ersten oder einen zweiten Wert aufweisen kann, beruht, wobei das Verfahren umfasst: Bereitstellen tatsächlicher Werte für die zweite und die dritte Variable (C, D); Ausführen der Funktion auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren ersten Wert festgelegt ist, eines Eingangswertes der zweiten Variablen (C) mit deren tatsächlichen Wert und einem Eingangswert der dritten Variablen (D) mit deren tatsächlichen Wert, um einen ersten Ausgangswert bereitzustellen; Ausführen der Funktion auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren zweiten Wert festgelegt ist, einem Eingangswert der zweiten Variablen (C) mit deren tatsächlichen Wert und einem Eingangswert der dritten Variablen (D) mit deren tatsächlichen Wert, um einen zweiten Ausgangswert bereitzustellen.
  5. Verfahren nach Anspruch 4, das ferner den Schritt des Bereitstellens eines tatsächlichen Wertes der ersten Variablen (B) umfasst.
  6. Verfahren nach Anspruch 5, das ferner umfasst: Auswählen des ersten oder des zweiten Ausgangswertes, wobei der erste Ausgangswert ausgewählt wird, wenn der tatsächliche Wert der ersten Variable (B) deren erster Wert ist, und wobei der zweite Ausgangswert ausgewählt wird, wenn der tatsächliche Wert der ersten Variable (B) deren zweiter Wert ist.
  7. Verfahren zum Einrichten von Funktionen einer Verschlüsselungsmaschine mit: Bereitstellen eines ersten und eines zweiten Logikblocks, wobei jeder eine Funktion ausführt; wobei das Ausführen der Funktion des ersten Logikblocks auf einem Eingangswert einer ersten Variablen (B), die einen ersten oder einen zweiten Wert aufweisen kann, und auf einem Eingangswert einer zweiten Variablen (C), die einen ersten oder einen zweiten Wert aufweisen kann, beruht, wobei das Ausführen der Funktion des zweiten Logikblocks auf einem Eingangswert der ersten Variablen (B), die den ersten oder den zweiten Wert aufweisen kann, und auf einem Eingangswert der dritten Variablen (C), die einen ersten oder einen zweiten Wert aufweisen kann, beruht; Bereitstellen eines tatsächlichen Wertes der zweiten Variablen (C); Ausführen der Funktion des ersten Logikblocks auf der Grundlage eines ersten Eingangswertes der ersten Variablen (B), die auf deren ersten Wert festgelegt ist, und auf der Grundlage eines Eingangswertes der zweiten Variablen (C) basierend auf deren tatsächlichen Wert, um einen ersten Ausgangswert bereitzustellen; Ausführen der Funktion des ersten Logikblocks auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf ihren zweiten Wert festgelegt ist, und auf einem Eingangswert der zweiten Variablen (C) basierend auf deren tatsächlichen Wert, um einen zweiten Ausgangswert bereitzustellen; Bereitstellen eines tatsächlichen Wertes der dritten Variablen (D); Ausführen der Funktion des zweiten Logikblocks auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf deren ersten Wert festgelegt ist, und einem Eingangswert der dritten Variablen (D) basierend auf deren tatsächlichen Wert, um einen dritten Ausgangswert bereitzustellen; Ausführen der Funktion des zweiten Logikblocks auf der Grundlage eines Eingangswertes der ersten Variablen (B), die auf ihren zweiten Wert festgelegt ist, und auf einem Eingangswert der dritten Variablen (C) basierend auf deren tatsächlichen Wert, um einen vierten Ausgangswert bereitzustellen.
  8. Verfahren nach Anspruch 7, das ferner den Schritt des Bereitstellens eines tatsächlichen Wertes der ersten Variablen (B) umfasst.
  9. Verfahren nach Anspruch 8, das ferner umfasst: Auswählen des ersten oder des zweiten Ausgangswertes, wobei der erste Ausgangswert ausgewählt wird, wenn die erste Variable (B) deren tatsächlichen ersten Wert aufweist, und wobei der zweite Ausgangswert ausgewählt wird, wenn die erste Variable (B) ihren tatsächlichen zweiten Wert aufweist.
  10. Verfahren nach Anspruch 9, das ferner Auswählen des dritten oder des vierten Ausgangswertes umfasst, wobei der vierte Ausgangswert ausgewählt wird, wenn die erste Variable (B) ihren tatsächlichen ersten Wert aufweist, und wobei der zweite Ausgangswert ausgewählt wird, wenn die erste Variable (B) ihren tatsächlichen zweiten Wert aufweist.
DE112005000776T 2004-04-05 2005-03-28 Verfahren zum Verbessern der Arbeitsgeschwindigkeit einer Verschlüsselungsmaschine Withdrawn DE112005000776T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/818,017 US8526601B2 (en) 2004-04-05 2004-04-05 Method of improving operational speed of encryption engine
US10/818,017 2004-04-05
PCT/US2005/010576 WO2005101728A1 (en) 2004-04-05 2005-03-28 Method of improving operational speed of encryption engine

Publications (1)

Publication Number Publication Date
DE112005000776T5 true DE112005000776T5 (de) 2007-02-22

Family

ID=34964859

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005000776T Withdrawn DE112005000776T5 (de) 2004-04-05 2005-03-28 Verfahren zum Verbessern der Arbeitsgeschwindigkeit einer Verschlüsselungsmaschine

Country Status (8)

Country Link
US (1) US8526601B2 (de)
JP (1) JP4754555B2 (de)
KR (1) KR101147520B1 (de)
CN (1) CN1965524B (de)
DE (1) DE112005000776T5 (de)
GB (1) GB2429615B (de)
TW (1) TWI401936B (de)
WO (1) WO2005101728A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105700932B (zh) * 2014-11-25 2019-02-05 财团法人资讯工业策进会 针对软件程序的变量推论系统及方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3634658A (en) * 1970-03-19 1972-01-11 Sperry Rand Corp Parallel bit counter
US3902056A (en) * 1974-05-15 1975-08-26 Julian Borisovich Aizenberg Interior lighting fixture
GB1552128A (en) * 1975-06-28 1979-09-05 Square D Co Computer based control systems including a protection circuit
US4584640A (en) * 1984-06-27 1986-04-22 Motorola, Inc. Method and apparatus for a compare and swap instruction
JPS6292029A (ja) * 1985-10-18 1987-04-27 Hitachi Ltd マイクロプログラム制御回路
US5008935A (en) * 1989-06-30 1991-04-16 At&T Bell Laboratories Efficient method for encrypting superblocks of data
CN1106187A (zh) * 1994-01-31 1995-08-02 陈寿峦 由白炽灯、电子线路和特种荧光灯组成的一体化电光源
FR2741973B1 (fr) * 1995-12-04 1998-01-02 Sgs Thomson Microelectronics Procede de production d'un parametre jo associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
US6317769B1 (en) * 1996-09-18 2001-11-13 International Business Machines Corporation Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value
US5946369A (en) * 1997-07-30 1999-08-31 Lucent Technologies Inc. High-speed binary synchronous counter with precomputation of carry-independent terms
US6961846B1 (en) * 1997-09-12 2005-11-01 Infineon Technologies North America Corp. Data processing unit, microprocessor, and method for performing an instruction
US6182216B1 (en) * 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
US6691143B2 (en) * 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
US6536016B1 (en) * 2000-07-27 2003-03-18 Lsi Logic Corporation Method and apparatus for locating constants in combinational circuits
US6580296B1 (en) * 2000-09-22 2003-06-17 Rn2R, L.L.C. Low power differential conductance-based logic gate and method of operation thereof
JP3732450B2 (ja) * 2002-03-19 2006-01-05 沖電気工業株式会社 剰余演算器
US7197527B2 (en) * 2002-10-17 2007-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Efficient arithmetic in finite fields of odd characteristic on binary hardware
US6888372B1 (en) * 2002-12-20 2005-05-03 Altera Corporation Programmable logic device with soft multiplier

Also Published As

Publication number Publication date
JP2007532082A (ja) 2007-11-08
CN1965524B (zh) 2014-10-29
KR20060133072A (ko) 2006-12-22
US20050226409A1 (en) 2005-10-13
TWI401936B (zh) 2013-07-11
GB2429615B (en) 2008-08-20
KR101147520B1 (ko) 2012-05-21
US8526601B2 (en) 2013-09-03
WO2005101728A1 (en) 2005-10-27
GB0620264D0 (en) 2006-11-22
CN1965524A (zh) 2007-05-16
TW200541287A (en) 2005-12-16
GB2429615A (en) 2007-02-28
JP4754555B2 (ja) 2011-08-24

Similar Documents

Publication Publication Date Title
EP0123921B1 (de) Parallelverknüpfungsschaltung mit verkürztem Übertragsdurchlauf
DE69703085T2 (de) Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen
DE1942005B2 (de) Datenverarbeitungsanlage zur aufnahme und abgabe von digitalen daten und zur ausfuehrung von operationen an den daten
DE2457312A1 (de) Datenbehandlungseinrichtung mit einem feldwaehler
DE2758830A1 (de) Rechenvorrichtung
DE1269393B (de) Mikroprogramm-Steuerwerk
DE4143180A1 (de) Verfahren und anordnung zur einblendung eines hintergrundsignals in durch eine vorgegebene stanzfarbe festgelegte teile eines vordergrundsignals
DE19524862A1 (de) SIMD-Prozessor, welcher mit einer Mehrzahl von Parallelverarbeitungselementen in Synchronisation in Betrieb ist
DE2063199A1 (de) Einrichtung zur Ausfuhrung logischer Funktionen
DE4101004A1 (de) Paralleler multiplizierer mit sprungfeld und modifiziertem wallac-baum
DE1262641B (de) Mikroprogrammsteuerwerk
DE2358593A1 (de) Datenverarbeitungsanordnung und bei dieser verwendbare steuerschaltung
DE2221693B2 (de) Schaltungsanordnung zur Ausführung einer Multiplikation zwischen zwei Binärzahlen
DE4444304A1 (de) Verfahren zum Erzeugen eines zusammengesetzten Videobildes
DE69026414T2 (de) Binäres Addiergerät
DE3447634C2 (de)
DE2165730A1 (de) Rechensystem
EP0257362A1 (de) Addierer
DE3828290C2 (de)
DE112005000776T5 (de) Verfahren zum Verbessern der Arbeitsgeschwindigkeit einer Verschlüsselungsmaschine
DE2335661A1 (de) Arithmetische und logische schaltung
DE19635114A1 (de) Multiplizierer
DE1948387A1 (de) Arithmetische und logische Einheit
DE1774771A1 (de) Anordnung,um wechselweise eine Addition oder eine aus einer Anzahl logischer Funktionen zwischen den Inhalten einer Stelle zweier Binaerworte durchzufuehren
DE2233164B2 (de) Schaltungsanordnung zur uebertragung von aufeinanderfolgenden bitstellen zwischen zwei registern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: H04L 9/00 AFI20061129BHDE

R016 Response to examination communication
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee