DE102019119831A1 - Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen - Google Patents

Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen Download PDF

Info

Publication number
DE102019119831A1
DE102019119831A1 DE102019119831.3A DE102019119831A DE102019119831A1 DE 102019119831 A1 DE102019119831 A1 DE 102019119831A1 DE 102019119831 A DE102019119831 A DE 102019119831A DE 102019119831 A1 DE102019119831 A1 DE 102019119831A1
Authority
DE
Germany
Prior art keywords
round
encryption
core
virtual
real
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
DE102019119831.3A
Other languages
English (en)
Inventor
Hongmook Choi
Jaehyeok KIM
Jisu Kang
Hyunil Kim
Jonghoon SHIN
Hyesoo LEE
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102019119831A1 publication Critical patent/DE102019119831A1/de
Pending legal-status Critical Current

Links

Images

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
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • 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
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)

Abstract

Eine Verschlüsselungsschaltung (100) weist einen mit Pipeline versehenen Verschlüsselungskern (120) auf, welcher eine Mehrzahl von Rundenkernen (121) darin hat. Der mit Pipeline versehene Verschlüsselungskern (120) ist konfiguriert, um eine reale Rundenoperation auf jedem einer Mehrzahl von Teilen von Eingabedaten, welche darin empfangen werden, durchzuführen, und um Verschlüsselungsdaten (CT1 bis CTk) aus den Eingabedaten unter Verwendung einer Verschlüsselungsoperation zu erzeugen, welche die reale Rundenoperation aufweist. Ein Verschlüsselungscontroller (110) ist vorgesehen, welcher mit dem mit Pipeline versehenen Verschlüsselungskern (120) gekoppelt ist. Der Verschlüsselungscontroller (110) ist konfiguriert, um den mit Pipeline versehenen Verschlüsselungskern (120) zu steuern, sodass wenigstens einer der Mehrzahl von Rundenkernen (121) eine virtuelle Rundenoperation als Teil der Verschlüsselungsoperation durchführt. Der mit Pipeline versehene Verschlüsselungskern (120) ist konfiguriert, um eine virtuelle Verschlüsselungsoperation durchzuführen unter Verwendung von wenigstens einem von: (i) Dummy-Daten (VPT), und (ii) einem Dummy-Verschlüsselungsschlüssel.

Description

  • BEZUGNAHME AUF EINE PRIORITÄTSANMELDUNG
  • Diese Anmeldung beansprucht den Vorzug der am 5. Oktober 2018 eingereichten koreanischen Patentmeldung Nummer 10-2018-0119306, deren Offenbarung hiermit durch Verweis mit eingebunden ist.
  • HINTERGRUND
  • Das erfinderische Konzept bezieht sich auf eine Verschlüsselungsschaltung zum Durchführen einer Verschlüsselungsoperation und ein Betriebsverfahren davon und genauer auf eine Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen und Verfahren zum Durchführen von virtueller Verschlüsselung.
  • Smartcards und integrierte Schaltungs(IC)-Karten weisen Sicherheitsinformation über einen Nutzer auf. Eine Verschlüsselungsschaltung, welche einen Chiffretext von Sicherheitsinformation, welcher durch einen Signatur- oder Authentifizierungsprozess übertragen wird, erzeugt und überträgt wird benötigt um zu verhindern, dass Sicherheitsinformation über einen Nutzer aufgrund Hacking oder dergleichen verloren wird.
  • Ein Angreifer kann einen Seitenkanalanalyse-Angriff anstelle eines direkten Manipulierens von Eingabe- oder Ausgabedaten durchführen. In dem Seitenkanalanalyse-Angriff kann der Angreifer Teile von subsidiärer Information wie beispielsweise die Leistungsmenge, welche durch eine Verschlüsselungsschaltung verbraucht wird und einen Kurvenverlauf einer elektromagnetischen Welle, welche durch die Verschlüsselungsschaltung erzeugt wird, sammeln. Der Angreifer kann die Verschlüsselungsschaltung angreifen, um einen Schlüssel, welcher in der Verschlüsselungsschaltung verwendet wird, basierend auf den gesammelten Teilen von subsidiärer Information zu erfassen. Demnach kann ein Seitenkanalanalyse-Angriffsverhinderungsverfahren ein Verfahren verwenden, welches zufällig oder einheitlich Leistung und eine elektromagnetische Welle, welche jeweils in Information, welche über einen Seitenkanal gesammelt wird, enthalten sind, zeigt.
  • KURZFASSUNG
  • Das erfinderische Konzept sieht eine Verschlüsselungsschaltung zum Durchführen einer realen Verschlüsselungsoperation und einer virtuellen Verschlüsselungsoperation auf Daten und ein Betriebsverfahren dafür vor.
  • Gemäß einem Aspekt des erfinderischen Konzepts ist eine Verschlüsselungsschaltung vorgesehen, welche einen mit Pipeline versehenen Verschlüsselungskern aufweist, welcher eine Mehrzahl von Rundenkernen enthält, welche konfiguriert sind, um eine reale Rundenoperation auf jeder einer Mehrzahl von Teilen von Eingabedaten, welche dazu sequenziell zugeführt werden, durchzuführen. Der mit Pipeline versehene Verschlüsselungskern gibt Verschlüsselungsdaten über eine Verschlüsselungsoperation unter Verwendung der realen Rundenoperation aus. Ein Verschlüsselungscontroller ist vorgesehen, welcher konfiguriert ist, um eine Steuerung durchzuführen, sodass wenigstens einer der Mehrzahl von Rundenkernen eine virtuelle Rundenoperation zusätzlich durchführt. Der Verschlüsselungscontroller kann konfiguriert sein, um eine Steuerung durchzuführen, sodass die virtuelle Rundenoperation des wenigstens einen Rundenkerns parallel mit der realen Rundenoperation des wenigstens einen anderen Rundenkerns der Mehrzahl von Rundenkernen durchgeführt wird.
  • Gemäß einem anderen Aspekt des erfinderischen Konzepts ist eine Verschlüsselungsschaltung vorgesehen, welche einen ersten Rundenkern aufweist, welcher konfiguriert ist, um eine erste reale Rundenoperation auf Eingabedaten durchzuführen, einen zweiten Rundenkern, welcher konfiguriert ist, um eine zweite reale Rundenoperation auf den Eingabedaten basierend auf einem Ergebnis der ersten realen Rundenoperation durchzuführen, und einen Schlüsselzeitplaner, welcher konfiguriert ist, um einen Rundenschlüssel (das heißt Verschlüsselungsschlüssel) für jeden des ersten Rundenkerns und des zweiten Rundenkerns vorzusehen. Der erste Rundenkern kann konfiguriert sein, um ferner eine erste virtuelle Rundenoperation basierend auf einem von Dummy-Daten und einem ersten virtuellen Rundenschlüssel, welcher von dem Schlüsselzeitplaner vorgesehen ist, durchzuführen, und die erste virtuelle Rundenoperation des ersten Rundenkerns kann parallel mit der zweiten realen Rundenoperation durchgeführt werden.
  • Gemäß einem anderen Aspekt des erfinderischen Konzepts ist eine Verschlüsselungsschaltung vorgesehen, welche einen ersten Rundenkern, welcher konfiguriert ist, um eine erste reale Rundenoperation auf Eingabedaten durchzuführen, einen zweiten Rundenkern, welcher konfiguriert ist, um eine zweite reale Rundenoperation auf den Eingabedaten basierend auf einem Ergebnis der ersten realen Rundenoperation durchzuführen und einen Schlüsselzeitplaner aufweist. Der Schlüsselzeitplaner ist konfiguriert, um einen Rundenschlüssel für jeden des ersten Rundenkerns und des zweiten Rundenkerns vorzusehen. Der zweite Rundenkern kann konfiguriert sein, um ferner eine virtuelle Rundenoperation basierend auf einem von Dummy-Daten und einem virtuellen Rundenschlüssel, welcher von dem Schlüsselzeitplaner vorgesehen ist, durchzuführen, und die erste reale Rundenoperation kann parallel mit der virtuellen Rundenoperation des zweiten Rundenkerns durchgeführt werden.
  • Gemäß einer anderen Ausführungsform des erfinderischen Konzepts ist eine Verschlüsselungsschaltung mit einem mit einer Pipeline versehenen Verschlüsselungskern vorgesehen, welcher eine Mehrzahl von Rundenkernen (das heißt Verschlüsselungskernen) darin hat. Der mit Pipeline versehene Verschlüsselungskern ist konfiguriert, um: (i) eine reale Rundenoperation auf jedem einer Mehrzahl von Teilen von Eingabedaten, welche darin empfangen werden, durchzuführen, und um (ii) Verschlüsselungsdaten aus den Eingabedaten unter Verwendung einer Verschlüsselungsoperation, welche die reale Rundenoperation aufweist, zu erzeugen. Ein Verschlüsselungscontroller ist ebenso vorgesehen, welcher mit dem mit Pipeline versehenen Verschlüsselungskern gekoppelt ist. Der Verschlüsselungscontroller ist konfiguriert, um den mit Pipeline versehenen Verschlüsselungskern zu steuern, sodass wenigstens einer der Mehrzahl von Rundenkernen eine virtuelle Rundenoperation als Teil der Verschlüsselungsoperation durchführt. In einigen dieser Ausführungsformen der Erfindung kann die virtuelle Rundenoperation in einem ersten der Mehrzahl von Rundenkernen durchgeführt werden, und eine reale Rundenoperation kann in einem zweiten einen der Mehrzahl von Rundenkernen gleichzeitig mit der virtuellen Rundenoperation durchgeführt werden. Der mit Pipeline versehene Verschlüsselungskern kann konfiguriert sein, um eine virtuelle Verschlüsselungsoperation durchzuführen unter Verwendung von wenigstens einem von: (i) Dummy-Daten, und (ii) einem Dummy-Verschlüsselungsschlüssel. In weiteren Ausführungsformen der Erfindung kann der mit Pipeline versehene Verschlüsselungskern eine mit Pipeline versehene Anordnung von Rundenkernen aufweisen, welche voneinander in der mit Pipeline versehenen Anordnung durch jeweilige Register getrennt sind. Der mit Pipeline versehene Verschlüsselungskern kann ebenso einen Schlüsselzeitplaner aufweisen, welcher konfiguriert ist, um reale und virtuelle Schlüssel zu erzeugen. Diese Schlüssel werden durch die Mehrzahl von Rundenkernen verwendet, wenn sie reale und virtuelle Verschlüsselungsoperationen durchführen.
  • Gemäß zusätzlichen Ausführungsformen der Erfindung ist eine Verschlüsselungsschaltung mit einem Verschlüsselungskern vorgesehen. Dieser Verschlüsselungskern ist konfiguriert, um eine reale Verschlüsselungsoperation auf wenigstens einem Abschnitt eines Stroms von Eingabedaten unter Verwendung von wenigstens einem realen Verschlüsselungsschlüssel durchzuführen. Diese reale Verschlüsselungsoperation wird gleichzeitig mit einem Erzeugen von virtuellem Verschlüsselungsrauschen durch ein Durchführen einer virtuellen Verschlüsselungsoperation auf virtuellen Daten unter Verwendung eines virtuellen Verschlüsselungsschlüssels durchgeführt. Der Verschlüsselungskern kann einen mit Pipeline versehenen Verschlüsselungskern aufweisen, welcher eine mit Pipeline versehene Anordnung von Rundenkernen (beispielsweise Verschlüsselungskernen) darin hat. Und während der realen Verschlüsselungsoperation kann ein erster der Rundenkerne in dem mit Pipeline versehenen Verschlüsselungskern erste Eingabedaten unter Verwendung eines ersten realen Verschlüsselungsschlüssels verschlüsseln. Zusätzlich kann während der virtuellen Verschlüsselungsoperation ein zweiter der Rundenkerne in dem mit Pipeline versehenen Verschlüsselungskern erste virtuelle Daten unter Verwendung eines ersten virtuellen Verschlüsselungsschlüssels verschlüsseln. Die Verschlüsselung der ersten Eingabedaten und die Verschlüsselung der ersten virtuellen Daten kann parallel innerhalb des mit Pipeline versehenen Verschlüsselungskerns auftreten, um dadurch die vorteilhafte Erzeugung von virtuellem Verschlüsselungsrauschen zu erleichtern. Dieses virtuelle Verschlüsselungsrauschen kann arbeiten, um erfolgreiche Seitenkanalanalyse-Angriffe zu verhindern. Ein Schlüsselzeitplaner kann ebenso vorgesehen werden, welcher konfiguriert ist, um den ersten realen Verschlüsselungsschlüssel und den ersten virtuellen Verschlüsselungsschlüssel an jeweiligen Ausgängen davon zu erzeugen, welche elektrisch mit dem ersten der Rundenkerne und dem zweiten der Rundenkerne gekoppelt sind.
  • Figurenliste
  • Ausführungsformen des erfinderischen Konzepts werden deutlicher aus der folgenden detaillierten Beschreibung zusammengenommen mit den beigefügten Zeichnungen verstanden werden, in welchen:
    • 1 ein Blockschaltbild ist, welches eine Berechnungsvorrichtung gemäß einer Ausführungsform veranschaulicht;
    • 2 ein Blockschaltbild ist, welches eine Verschlüsselungsschaltung gemäß einer Ausführungsform veranschaulicht;
    • 3 ein Blockschaltbild ist, welches einen mit Pipeline versehenen Verschlüsselungskern veranschaulicht, welcher in einer Verschlüsselungsschaltung gemäß einer Ausführungsform enthalten ist;
    • 4 ein Flussdiagramm einer Verschlüsselungsoperation ist, welche durch eine Verschlüsselungsschaltung gemäß einer Ausführungsform durchgeführt wird;
    • 5 ein Flussdiagramm zum Beschreiben einer Operation eines Verschlüsselungscontrollers einer Verschlüsselungsschaltung gemäß einer Ausführungsform ist;
    • 6 bis 8 Zeitdiagramme einer Operation einer Verschlüsselungsschaltung gemäß einer Ausführungsform sind;
    • 9 ein Flussdiagramm zum Beschreiben einer Operation eines Verschlüsselungscontrollers einer Verschlüsselungsschaltung gemäß einer Ausführungsform ist;
    • 10 bis 12 Zeitdiagramme zum Beschreiben einer Operation einer Verschlüsselungsschaltung gemäß einer Ausführungsform sind; und
    • 13 ein Zeitdiagramm zum Beschreiben einer Operation einer Verschlüsselungsschaltung gemäß einer Ausführungsform ist.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Hierin nachstehend werden Ausführungsformen im Detail unter Bezugnahme auf die beigefügten Zeichnungen beschrieben werden.
  • 1 ist ein Blockschaltbild, welches eine Berechnungsvorrichtung 1000 gemäß einer Ausführungsform veranschaulicht. 1 ist ein Blockschaltbild, welches die Berechnungsvorrichtung 1000 veranschaulicht, welche elektronische Vorrichtungen und Verschlüsselungsschaltungen gemäß einer Ausführungsform aufweist. In einer Ausführungsform kann die Berechnungsvorrichtung 1000 eine Prozessorvorrichtung 1100, einen Arbeitsspeicher 1200, einen Speicherspeicher (Storage Memory) 1300, eine Nutzerschnittstelle 1400 und einen Bus 1500 aufweisen.
  • Beispielsweise kann die Berechnungsvorrichtung 1000 eine von verschiedenen elektronischen Vorrichtungen wie beispielsweise ein Desktopcomputer, ein Laptopcomputer, ein Tabletcomputer, eine Workstations, ein Server, ein digitaler Fernseher (TV), eine Videospielekonsole, ein Smartphone, eine tragbare Vorrichtung sein, die vorliegende Ausführungsform ist aber nicht darauf beschränkt.
  • Die Prozessorvorrichtung 1100 kann den Gesamtbetrieb der Berechnungsvorrichtung 1000 steuern. Die Prozessorvorrichtung 1100 kann konfiguriert sein, um verschiedene Arten von arithmetischen Operationen und/oder logischen Operationen durchzuführen. Zu diesem Zweck kann die Prozessorvorrichtung 1100 mit einer Spezialzwecklogikschaltung wie beispielsweise einem Field Programmable Gate Array (FPGA), einer anwendungsspezifischen integrierten Schaltung (ASIC) oder einem ähnlichen Typ von Schaltung aufweisend ein oder mehrere Prozessorkerne 1110 implementiert sein. In einer Ausführungsform kann die Prozessorvorrichtung 1100 einen Allgemeinzweckprozessor, einen Spezialzweckprozessor und/oder einen Anwendungsprozessor aufweisen.
  • In einigen Ausführungsformen kann die Prozessorvorrichtung 1100 einen Instruktionssatz, welcher Programmcode aufweist, durch ein Verwenden der Prozessorkerne 1110 ausführen. Ein oder mehrere Caches 1130 können vorübergehend Daten speichem, welche zum Ausführen des Instruktionssatzes zu verwenden sind, oder Daten, welche durch ein Ausführen des Instruktionssatzes erzeugt werden.
  • Die Prozessorvorrichtung 1100 kann Daten, welche von jedem der Prozessorkerne 1110 und/oder den Caches 1130 ausgegeben werden, durch ein Verwenden einer Verschlüsselungsschaltung 1150 verschlüsseln. Ferner kann durch ein Verwenden der Verschlüsselungsschaltung 1150 die Prozessorvorrichtung 1100 Daten, welche den Prozessorkernen 1110 und/oder den Caches 1130 zuzuführen sind, entschlüsseln.
  • Der Arbeitsspeicher 1200 kann vorübergehend Daten, welche für einen Betrieb der Berechnungsvorrichtung 1000 verwendet werden, speichern. Beispielsweise kann der Arbeitsspeicher 1200 Daten, welche durch ein Verarbeiten durch die Prozessorvorrichtung 1100 erhalten werden oder durch die Prozessorvorrichtung 1100 zu verarbeiten sind, in einem oder mehreren Speichern 1210 speichern. In einigen Ausführungsformen können die Speicher 1210 einen flüchtigen Speicher wie beispielsweise einen statischen Direktzugriffspeicher (SRAM), einen dynamischen Direktzugriffsspeicher (DRAM) oder synchronen dynamischen Direktzugriffsspeicher (SDRAM) aufweisen. Der Speichercontroller 1230 kann die Speicher 1210 steuern, sodass die Speicher 1210 Daten speichern oder die gespeicherten Daten ausgeben.
  • Der Arbeitsspeicher 1200 kann durch ein Verwenden einer Verschlüsselungsschaltung 1250 Daten, welche in jedem der Speicher 1210 zu speichern sind, verschlüsseln. Ebenso kann durch ein Verwenden der Verschlüsselungsschaltung 1250 der Arbeitsspeicher 1200 Daten, welche von jedem der Speicher 1210 ausgegeben werden, entschlüsseln. Der Speicherspeicher 1300 kann Daten unabhängig von der Zufuhr von Leistung speichern. Der Speicherspeicher 1300 kann Systemdaten, welche zum Betreiben der Berechnungsvorrichtung 1000 verwendet werden und/oder Nutzerdaten, welche für einen Nutzer der Berechnungsvorrichtung 1000 verwendet werden, in einem oder mehreren nichtflüchtigen Speichern 1310 speichern. Beispielsweise können die nichtflüchtigen Speicher 1310 wenigstens einen von nichtflüchtigen Speichern wie beispielsweise einen Flashspeicher, einen Phasenübergangsdirektzugriffsspeicher (PRAM), einen magnetoresistiven Direktzugriffsspeicher (MRAM), einen resistiven Direktzugriffsspeicher (ReRAM) und einen ferroelektrischen Direktzugriffsspeicher (FRAM) aufweisen. Der Speichercontroller 1330 kann die nichtflüchtigen Speicher 1310 steuern, sodass die nichtflüchtigen Speicher 1310 Daten speichern oder die gespeicherten Daten ausgeben. Beispielsweise kann der Speicherspeicher 1300 ein Speichermedium wie beispielsweise ein Festkörperlaufwerk (SSD), ein Festplattenlaufwerk (HDD), eine Secure Digital (SD)-Karte oder Multimediakarte (MMC) aufweisen.
  • Der Speicherspeicher 1300 kann durch ein Verwenden einer Verschlüsselungsschaltung 1350 Daten, welche in jedem der nichtflüchtigen Speicher 1310 zu speichern sind, verschlüsseln. Ebenso kann der Speicherspeicher 1300 Daten, welche von jedem der nichtflüchtigen Speicher 1310 ausgegeben werden, durch ein Verwenden der Verschlüsselungsschaltung 1350 entschlüsseln.
  • Die Nutzerschnittstelle 1400 kann eine Kommunikation zwischen einem Nutzer und der Berechnungsvorrichtung 1000 gemäß der Steuerung durch die Prozessorvorrichtung 1100 koppeln. Beispielsweise kann die Nutzerschnittstelle 1400 eine Eingabe, welche durch eine Tastatur, eine Maus, ein Keypad, einen Knopf, ein Touchpanel, einen Touchscreen, ein Touchpad, einen Touchball oder ein Mikrofon empfangen werden, verarbeiten oder kann eine Eingabe von einer Kamera, einem Kreiselsensor oder einem Vibrationssensor verarbeiten. Ebenso kann die Nutzerschnittstelle 1400 eine Ausgabe, welche für eine Anzeigevorrichtung, einen Lautsprecher oder einen Monitor vorzusehen ist, verarbeiten.
  • Der Bus 1500 kann den Kommunikationspfad zwischen den Elementen der Berechnungsvorrichtung 1000 vorsehen. Die Elemente der Berechnungsvorrichtung 1000 können Daten basierend auf einem Busformat austauschen. Beispielsweise kann das Busformat ein oder mehrere von verschiedenen Kommunikationsprotokollen wie beispielsweise Peripheral Component Interconnection (PCI), PCI Express (PIC-E), Non-Volatile Memory Express (NVMe), Small Computer System Interface (SCSI), Advanced Technology Attachment (ATA), Serial-ATA (SATA), Parallel-ATA (PATA), Serial Attached SCSI (SAS), und Universal Serial Bus (USB) aufweisen.
  • Die Verschlüsselungsschaltungen 1150, 1250 und 1350 können Daten in Verschlüsselungsdaten durch eine Verschlüsselungsoperation umwandeln. In diesem Fall kann die Verschlüsselungsoperation einen Prozess zum sequenziellen Durchführen einer Mehrzahl von Rundenoperationen aufweisen. Beispielsweise kann die Verschlüsselungsoperation eine anfängliche Verschlüsselungsoperation und eine erste bis n-te Rundenoperation aufweisen, und eine nächste Rundenoperation kann basierend auf einem Ergebnis einer vorangehenden Rundenoperation durchgeführt werden.
  • Die Verschlüsselungsschaltungen 1150, 1250 und 1350 können jeweils konfiguriert sein, so dass durch ein zusätzliches Durchführen einer virtuellen Rundenoperation, welche einer realen Rundenoperation, welche auf Daten durchgeführt wird, vorangeht oder nachfolgt, es beträchtlich schwieriger ist, eine Zeit zu erfassen, wann die reale Rundenoperation durchgeführt wird. Ebenso können die Verschlüsselungsschaltungen 1150, 1250 und 1350 jeweils konfiguriert sein, sodass in einem Fall, in dem die reale Rundenoperation auf Daten durchgeführt wird, eine andere Schaltung (beispielsweise ein anderer Rundenkern) die virtuelle Rundenoperation gleichzeitig (beispielsweise simultan) durchführt und es demnach ein Rauschen in der Information, welche durch einen Seitenkanal durch einen potentiellen Angreifer gesammelt wird, gibt. Demzufolge kann ein Sicherheitsniveau jeder der Verschlüsselungsschaltungen 1150, 1250 und 1350 verbessert werden.
  • 1 veranschaulicht ein Beispiel, in dem die Verschlüsselungsschaltungen 1150, 1250 und 1350 jeweils in Dateneingabe-/-Ausgabe(I/O)-Vorrichtungen enthalten sind, das heißt der Prozessorvorrichtung 1100, dem Arbeitsspeicher 1200 und dem Speicherspeicher 1300. In einer Ausführungsform jedoch können die Verschlüsselungsschaltungen 1150, 1250 und 1350 als Verschlüsselungsvorrichtungen unabhängig von den Daten-I/O-Vorrichtungen implementiert sein, das heißt der Prozessorvorrichtung 1100, dem Arbeitsspeicher 1200 und dem Speicherspeicher 1300. Ebenso können der Bus 1500 und Vorrichtungen (beispielsweise die Nutzerschnittstelle 1400) anders als die Daten-I/O-Vorrichtungen, das heißt die Prozessorvorrichtung 1100, der Arbeitsspeicher 1200 und der Speicherspeicher 1300 jeweils eine Verschlüsselungsschaltung aufweisen. Die Verschlüsselungsschaltung kann auf einen beliebigen Pfad, über welchen Daten eingegeben oder ausgegeben werden, angewandt werden. Beispielhafte Konfigurationen und Operationen der Verschlüsselungsschaltungen 1150, 1250 und 1350 werden untenstehend unter Bezugnahme auf die folgenden Zeichnungen beschrieben werden.
  • 2 ist ein Blockschaltbild, welches eine Verschlüsselungsschaltung 100 gemäß einer Ausführungsform veranschaulicht. Das Blockschaltbild der Verschlüsselungsschaltung 100 der 2 kann beispielsweise ein detailliertes Blockschaltbild jeder der Verschlüsselungsschaltungen 1150, 1250 und 1350 der 1 sein. In der Zeichnung wird eine Verschlüsselungsoperation beschrieben werden und dieselbe Beschreibung kann auf eine Entschlüsselungsoperation angewandt werden.
  • Bezug nehmend auf 2 kann die Verschlüsselungsschaltung 100 einen Verschlüsselungscontroller 1110, einen mit Pipeline versehenen Verschlüsselungskern 120 und einen Puffer 130 aufweisen. Der Verschlüsselungscontroller 110 kann einen Gesamtbetrieb der Verschlüsselungsschaltung 100 in Antwort auf eine Anforderung REQ steuern. Ein Steuerwert, welcher eine Umgebung und ein Durchführen einer Verschlüsselungsoperation anzeigt, kann in dem Verschlüsselungscontroller 110 gespeichert sein. Der Verschlüsselungscontroller 110 kann jeweils Steuersignale CON_C und CON_B zu dem mit Pipeline versehenen Verschlüsselungskern 120 und dem Puffer 130 zum Steuern von Operationen des mit Pipeline versehenen Verschlüsselungskerns 120 und des Puffers 130 übertragen.
  • Der Verschlüsselungscontroller 110 kann eine Mehrzahl von Rundenkernen 121, welche in dem mit Pipeline versehenen Verschlüsselungskern 120 enthalten sind, steuern, um eine virtuelle Verschlüsselungsoperation basierend auf dem Steuersignal CON_C durchzuführen. In einer Ausführungsform kann der Verschlüsselungscontroller 110 die Anzahl von virtuellen Verschlüsselungsoperationen, welche durch jeden der Mehrzahl von Rundenkernen 121 durchzuführen sind, bevor eine reale Verschlüsselungsoperation durchgeführt wird, oder die Anzahl von virtuellen Verschlüsselungsoperationen, welche durch jeden der Mehrzahl von Rundenkernen 121 nach dem Durchführen einer realen Verschlüsselungsoperation durchzuführen sind, basierend auf Zufallsdaten D_RAN, welche von außerhalb zugeführt werden, bestimmen. Alternativ kann in einem Fall, in dem einer der Mehrzahl von Rundenkernen 121 eine reale Rundenoperation durchführt, der Verschlüsselungscontroller 110 den mit Pipeline versehenen Verschlüsselungskern 120 steuern, sodass ein anderer Rundenkern eine virtuelle Rundenoperation durchführt. Ein Beispiel, in dem der Verschlüsselungscontroller 110 die Zufallsdaten D_RAN von außerhalb empfängt, ist in der Zeichnung veranschaulicht, die vorliegende Ausführungsform ist jedoch nicht darauf beschränkt. In anderen Ausführungsformen kann der Verschlüsselungscontroller 110 die Zufallsdaten D_RAN intern erzeugen.
  • Der mit Pipeline versehene Verschlüsselungskern 120 kann sequenziell erste bis k-te reale Daten PT1 bis PTk, welche Einheiten entsprechen, durch welche eine arithmetische Operation durchgeführt wird, von dem Puffer 130 empfangen. Der mit Pipeline versehene Verschlüsselungskern 120 kann eine reale Verschlüsselungsoperation auf den ersten bis k-ten realen Daten PT1 bis PTk (unter Verwendung (eines) realen (realer) Verschlüsselungsschlüssel(s) (RK (beispielsweise RK0 bis RKn)) durchführen, um erste bis k-te Verschlüsselungsdaten CT1 bis CTk auszugeben. Der mit Pipeline versehene Verschlüsselungskern 120 kann den Puffer 130 mit dem ersten bis k-ten Verschlüsselungsdaten CT1 bis CTk, auf welchen die reale Verschlüsselungsoperation durchgeführt wurde, aktualisieren. In diesem Fall kann k eine natürliche Zahl gleich oder mehr als drei sein, ist aber nicht darauf beschränkt. In anderen Ausführungsformen kann der mit Pipeline versehene Verschlüsselungskern 120 sequenziell ein oder mehrere Teile von realen Daten empfangen.
  • Der mit Pipeline versehene Verschlüsselungskern 120 kann die reale Verschlüsselungsoperation durch eine Permutationsoperation des Mischens von Bitpositionen der ersten bis k-ten realen Daten PT1 bis PTk basierend auf einem realen Verschlüsselungsschlüssel durchführen. Alternativ kann der mit Pipeline versehene Verschlüsselungskern 120 eine Verschlüsselungsoperation durch eine Substitutionsoperation des Änderns jeder der ersten bis k-ten realen Daten PT1 bis PTk zu anderen Daten, welche darauf abgebildet beziehungsweise gemapped werden, basierend auf dem Verschlüsselungsschlüssel durchführen.
  • Der mit Pipeline versehene Verschlüsselungskern 120 kann Dummy-Daten VPT oder einen Dummy-Verschlüsselungsschlüssel VRK von dem Puffer 130 empfangen. Der mit Pipeline versehene Verschlüsselungskern 120 kann eine virtuelle Verschlüsselungsoperation unter Verwendung der Dummy-Daten VPT oder des Dummy-Verschlüsselungsschlüssels VRK durchführen. Beispielsweise kann der mit Pipeline versehene Verschlüsselungskern 120 eine virtuelle Verschlüsselungsoperation unter Verwendung der Dummy-Daten VPT und des Dummy-Verschlüsselungsschlüssels VRK, eine virtuelle Verschlüsselungsoperation unter Verwendung der Dummy-Daten VPT und des realen Verschlüsselungsschlüssels oder eine virtuelle Verschlüsselungsoperation unter Verwendung der ersten bis k-ten realen Daten PT1 bis PTk und des Dummy-Verschlüsselungsschlüssels VRK durchführen.
  • In einer Ausführungsform kann der mit Pipeline versehene Verschlüsselungskern 120 die Mehrzahl von Rundenkernen 121 für jedes Durchführen einer Rundenoperation aufweisen. Die reale Verschlüsselungsoperation, welche durch den mit Pipeline versehenen Verschlüsselungskern 120 durchgeführt wird, kann reale Rundenoperationen, welche jeweils durch die Rundenkerne 121 durchgeführt werden, aufweisen. Ebenso kann die virtuelle Verschlüsselungsoperation, welche durch den mit Pipeline versehenen Verschlüsselungskern 120 durchgeführt wird, virtuelle Rundenoperationen aufweisen, welche jeweils durch die Rundenkerne 121 durchgeführt werden. Die Rundenoperation, welche durch den mit Pipeline versehenen Verschlüsselungskern 120 durchgeführt wird, kann als eine einer realen Rundenoperation und einer virtuellen Rundenoperation basierend auf der Art eines Verschlüsselungsschlüssels und von Eingabedaten D_in klassifiziert werden.
  • Der mit Pipeline versehene Verschlüsselungskern 120 kann parallel Verschlüsselungsoperationen auf den ersten bis k-ten realen Daten PT1 bis PTk durchführen. Beispielsweise können wenigstens zwei der Mehrzahl von Rundenkernen 121 parallel eine von realen Rundenoperationen und virtuellen Rundenoperationen durchführen.
  • In einer Ausführungsform kann in Antwort auf das Steuersignal CON_C, welches von dem Verschlüsselungscontroller 110 vorgesehen ist, der mit Pipeline versehene Verschlüsselungskern 120 eine anfängliche virtuelle Rundenoperation wenigstens einmal durchführen bevor ein anfänglicher Rundenkern zum Durchführen einer anfänglichen Rundenoperation eine anfängliche reale Rundenoperation durchführt. Alternativ kann in Antwort auf das Steuersignal CON_C, welches von dem Verschlüsselungscontroller 110 vorgesehen ist, der mit Pipeline versehene Verschlüsselungskern 120 eine anfängliche virtuelle Rundenoperation wenigstens einmal durchführen, nachdem der anfängliche Rundenkern eine anfängliche reale Rundenoperation durchführt. Demzufolge kann in der Verschlüsselungsschaltung 100 gemäß der vorliegenden Ausführungsform ein potentieller Angreifer es schwierig finden, eine Zeit zu erfassen, wann eine reale Verschlüsselungsoperation durchgeführt wird, wodurch ein Sicherheitsniveau der Verschlüsselungsschaltung 100 erhöht wird. Eine Rundenoperation des mit Pipeline versehenen Verschlüsselungskerns 120 wird untenstehend im Detail unter Bezugnahme auf 6 beschrieben werden.
  • In einer Ausführungsform kann in Antwort auf das Steuersignal CON_C, welches von dem Verschlüsselungscontroller 110 vorgesehen wird, ein erster Rundenkern des mit Pipeline versehenen Verschlüsselungskerns 120 eine erste virtuelle Rundenoperation durchführen, während der anfängliche Rundenkern die anfängliche reale Rundenoperation durchführt. Demzufolge kann, da eine reale Verschlüsselungsoperation zusammen mit einer virtuellen Verschlüsselungsoperation durchgeführt wird, Rauschen auftreten, wodurch ein Sicherheitsniveau der Verschlüsselungsschaltung 100 verbessert wird. Eine Rundenoperation des mit Pipeline versehenen Verschlüsselungskerns 120 wird untenstehend im Detail unter Bezugnahme auf 10 beschrieben werden.
  • Der Puffer 130 kann die Eingabedaten D_in, welche von außerhalb vorgesehen sind, vorübergehend speichern. Das heißt, dass der Puffer 130 Daten, auf welchen eine reale Operation zum Verschlüsseln durchzuführen ist, speichern kann. Zu dieser Zeit kann in Antwort auf das Steuersignal CON_B, welches von dem Verschlüsselungscontroller 110 vorgesehen ist, der Puffer 130 die Eingabedaten D_in durch Einheiten von Verschlüsselungsoperationen, welche durchgeführt werden, unterteilen und kann unterteilte Eingabedaten für den mit Pipeline versehenen Verschlüsselungskern 120 vorsehen. Beispielsweise kann der Puffer 130 sequenziell die ersten bis k-ten realen Daten PT1 bis PTk für den mit Pipeline versehenen Verschlüsselungskern vorsehen.
  • Darüber hinaus kann der Puffer 130 vorübergehend die Zufallsdaten D_RAN, welche von außerhalb vorgesehen sind, speichern. In Antwort auf das Steuersignal CON_B, welches von dem Verschlüsselungscontroller 110 vorgesehen ist, kann wenigstens ein Abschnitt der Zufallsdaten D_RAN, welche in dem Puffer 130 gespeichert sind, für den mit Pipeline versehenen Verschlüsselungskern 120 vorgesehen werden. Beispielsweise kann der Puffer 130 den mit Pipeline versehenen Verschlüsselungskern 120 mit wenigstens einem Abschnitt der Zufallsdaten D_RAN als die Dummy-Daten VPT für eine virtuelle Rundenoperation vorsehen. Alternativ kann beispielsweise der Puffer 130 den mit Pipeline versehenen Verschlüsselungskern 120 mit wenigstens einem Abschnitt der Zufallsdaten D_RAN als dem Dummy-Verschlüsselungsschlüssel VRK für die virtuelle Rundenoperation vorsehen.
  • Der Puffer 130 kann die ersten bis k-ten Verschlüsselungsdaten CT1 bis CTk von dem mit Pipeline versehenen Verschlüsselungskern 120 empfangen. Der Puffer 130 kann jede der ersten bis k-ten Verschlüsselungsdaten CT1 bis CTk als Ausgabedaten D_out ausgeben. Demzufolge können die Ausgabedaten D_out durch ein Verschlüsseln der Eingabedaten D_in erzeugt werden.
  • 3 ist ein Blockschaltbild, welches einen mit Pipeline versehenen Verschlüsselungskern 120 veranschaulicht, welcher in einer Verschlüsselungsschaltung gemäß einer Ausführungsform enthalten ist. In der Zeichnung wird eine Verschlüsselungsoperation beschrieben werden und dieselbe Beschreibung kann auf eine Entschlüsselungsoperation angewandt werden. Bezug nehmend auf 3 kann der mit Pipeline versehene Verschlüsselungskern 120 einen anfänglichen Rundenkern 121_i, einen ersten bis n-ten Rundenkern 121_1 bis 121_n, ein anfängliches Register 123_i, ein erstes bis n-tes Register 123_1 bis 123_n und einen Schlüsselzeitplaner 125 aufweisen. Beispielsweise können der anfängliche Rundenkern 121_i und der erste bis n-te Rundenkern 121_1 bis 121_n die Mehrzahl von Rundenkernen 121 der 2 sein. In diesem Fall kann n eine natürliche Zahl gleich oder mehr als drei sein, die vorliegende Ausführungsform ist aber nicht darauf beschränkt. Die Anzahl von Rundenkernen, welche in dem mit Pipeline versehenen Verschlüsselungskern 120 enthalten ist, kann verschiedentlich auf eins oder mehr eingestellt werden. In einer Ausführungsform kann der mit Pipeline versehene Verschlüsselungskern 120 nur den ersten bis n-ten Rundenkern 121_1 bis 121_n aufweisen ohne ein Aufweisen des anfänglichen Rundenkerns 121_i.
  • Eine Verschlüsselungsoperation, welche durch den mit Pipeline versehenen Verschlüsselungskern 120 durchgeführt wird, kann eine Mehrzahl von Rundenoperationen zum Erhöhen eines Sicherheitsniveaus davon aufweisen, und die Rundenoperationen können durch unterschiedliche Rundenkerne durchgeführt werden. Beispielsweise kann der anfängliche Rundenkern 121_i eine anfängliche Rundenoperation durchführen, der erste Rundenkern 121_1 kann eine erste Rundenoperation durchführen, und der n-te Rundenkern 121_n kann eine n-te Rundenoperation durchführen.
  • Jede der Mehrzahl von Rundenoperationen kann eine reale Rundenoperation und eine virtuelle Rundenoperation aufweisen. Beispielsweise kann die anfängliche Rundenoperation eine anfängliche reale Rundenoperation und eine anfängliche virtuelle Rundenoperation aufweisen, die erste Rundenoperation kann eine erste reale Rundenoperation und eine erste virtuelle Rundenoperation aufweisen, und die n-te Rundenoperation kann eine n-te reale Rundenoperation und eine n-te virtuelle Rundenoperation aufweisen.
  • Der anfängliche Rundenkern 121_i und der erste bis n-te Rundenkern 121_1 bis 121_n können eine anfängliche Verschlüsselungsoperation und eine erste bis n-te reale Verschlüsselungsoperation unter Verwendung realer Daten (beispielsweise PT1 bis PTk) und eines realen Verschlüsselungsschlüssels (beispielsweise RK0 bis RKn) durchführen. Beispielsweise kann der anfängliche Rundenkern 121_i eine anfängliche reale Verschlüsselungsoperation unter Verwendung erster bis k-ter realer Daten PT1 bis PTk und eines anfänglichen realen Verschlüsselungsschlüssels RK0 durchführen. In diesem Fall können anfängliche reale Verschlüsselungsschlüssel RK0, welche jeweils den ersten bis k-ten realen Daten PT1 bis PTk entsprechen, sich unterscheiden, oder sie können dieselben sein. Eine Beschreibung der anfänglichen realen Verschlüsselungsoperation, welche durch den anfänglichen Rundenkern 121_i durchgeführt wird, kann jeweils auf die erste bis n-te reale Verschlüsselungsoperation angewandt werden, welche durch den ersten bis n-ten Rundenkern 121_1 bis 121_n durchgeführt wird.
  • Die ersten bis k-ten realen Daten PT1 bis PTk können dem anfänglichen Rundenkern 121_i zugeführt werden. Beispielsweise kann, wenn die ersten realen Daten PT1 dem anfänglichen Rundenkern 121_i zugeführt werden, der anfängliche Rundenkern 121_i eine anfängliche reale Rundenoperation auf den ersten realen Daten PT1 durchführen, und ein Durchführungsergebnis kann in dem anfänglichen Register 123_i gespeichert werden. Das Durchführungsergebnis kann wiederum für den ersten Rundenkern 121_1 vorgesehen werden, und der erste Rundenkern 121_1 kann eine erste reale Rundenoperation auf den ersten realen Daten PT1 durchführen. Ein Ergebnis, welches durch ein Durchführen der ersten realen Rundenoperation auf den ersten realen Daten PT1 erhalten wird, kann in dem ersten Register 123_1 gespeichert werden. Das heißt, dass die ersten realen Daten PT1 als erste Verschlüsselungsdaten CT1 durch eine reale Rundenoperation, welche eine Gesamtzahl von (n+1) Malen durchgeführt wird, verschlüsselt werden können und von dem mit Pipeline versehenen Verschlüsselungskern 120 ausgegeben werden können. Eine Beschreibung der realen Verschlüsselungsoperation, welche auf den ersten realen Daten PT1 durchgeführt wird, kann auf reale Verschlüsselungsoperationen angewandt werden, welche jeweils auf den zweiten bis k-ten realen Daten PT2 bis PTk durchgeführt werden.
  • Die ersten bis k-ten realen Daten PT1 bis PTk können dem anfänglichen Rundenkern 121_i sequenziell zugeführt werden. Der mit Pipeline versehene Verschlüsselungskern 120 kann parallel Verschlüsselungsoperationen auf den ersten bis k-ten realen Daten PT1 bis PTk, welche sequenziell dorthin zugeführt werden, durchführen. Das heißt, dass der mit Pipeline versehene Verschlüsselungskern 120 die Verschlüsselungsoperation auf den ersten bis k-ten realen Daten PT1 bis PTk unter Verwendung einer Pipeline-Art und Weise durchführen kann. Beispielsweise kann, während der erste Rundenkern 121_1 die erste Rundenoperation auf den ersten realen Daten PT1 durchführt, der anfängliche Rundenkern 121_i die anfängliche Rundenoperation auf den zweiten realen Daten PT2 durchführen. Während der zweite Rundenkern 121_2 die zweite Rundenoperation auf den ersten realen Daten PT1 durchführt, kann der erste Rundenkern 121_1 die erste Rundenoperation auf den zweiten realen Daten PT2 durchführen, und der anfängliche Rundenkern 121_1 kann eine Rundenoperation auf den dritten realen Daten PT3 durchführen.
  • Jeder des anfänglichen Rundenkerns 121_i und der ersten bis n-ten Rundenkerne 121_1 bis 121_n kann eine virtuelle Verschlüsselungsoperation unter Verwendung von Stücken von Dummy-Daten VPT0 bis VPTn oder virtuellen Verschlüsselungsschlüsseln VRK0 bis VRKn durchführen. Beispielsweise kann wenigstens eines von anfänglichen Dummy-Daten VPT0 und einem anfänglichen virtuellen Verschlüsselungsschlüssel VRK0 für den anfänglichen Rundenkern 121_i vorgesehen werden. Beispielsweise kann der anfängliche Rundenkern 121_i eine virtuelle Verschlüsselungsoperation unter Verwendung der anfänglichen Dummy-Daten VPT0 und des anfänglichen virtuellen Verschlüsselungsschlüssels VRK0 durchführen, eine virtuelle Verschlüsselungsoperation unter Verwendung der anfänglichen Dummy-Daten VPT0 und des anfänglichen realen Verschlüsselungsschlüssels RK0 durchführen, oder eine virtuelle Verschlüsselungsoperation unter Verwendung der ersten bis k-ten realen Daten PT1 bis PTk und des anfänglichen virtuellen Verschlüsselungsschlüssels VRK0 durchführen. Eine Beschreibung der anfänglichen virtuellen Verschlüsselungsoperation, welche durch den anfänglichen Rundenkern 121_i durchgeführt wird, kann auf die erste bis n-te virtuelle Verschlüsselungsoperation, welche jeweils durch den ersten bis n-ten Rundenkern 121_1 bis 121_n durchgeführt wird, angewandt werden.
  • In einer Ausführungsform kann das anfängliche Register 123_i ein anfängliches reales Register und ein anfängliches virtuelles Register aufweisen. Ein Ergebnis einer anfänglichen virtuellen Rundenoperation, welche durch den anfänglichen Rundenkern 121_i durchgeführt wird, kann in dem anfänglichen virtuellen Register gespeichert werden und kann für den ersten Rundenkern 121_1 vorgesehen werden, welcher ein nächster Rundenkern ist. Der erste Rundenkern 121_1 kann ebenso das Ergebnis empfangen, um die erste virtuelle Rundenoperation durchzuführen. Alternativ kann in einer Ausführungsform das Ergebnis der anfänglichen virtuellen Rundenoperation, welche durch den anfänglichen Rundenkern 121_i durchgeführt wird, in dem anfänglichen virtuellen Register gespeichert werden, kann aber nicht für den ersten Rundenkern 121_1 vorgesehen werden. Eine Beschreibung der anfänglichen virtuellen Verschlüsselungsoperation, welche durch den anfänglichen Rundenkern 121_i durchgeführt wird, kann auf die erste bis n-1-te virtuelle Verschlüsselungsoperation angewandt werden, welche jeweils durch den ersten bis n-1-ten Rundenkern 121_1 bis 121_n-1 durchgeführt wird.
  • Der Schlüsselzeitplaner 125 kann Verschlüsselungsschlüssel, welche für Verschlüsselungsoperationen verwendet werden, in Antwort auf eine Steuerung durch einen Verschlüsselungscontroller (beispielsweise 110 der 2) verwalten. Beispielsweise kann der Schlüsselzeitplaner 125 die realen Verschlüsselungsschlüssel RK0 bis RKn, welche für reale Verschlüsselungsoperationen verwendet werden, verwalten, um den anfänglichen Rundenkern 121_i und den ersten bis n-ten Rundenkern 121_1 bis 121_n mit den realen Verschlüsselungsschlüsseln RK0 bis RKn vorzusehen, welche für reale Rundenoperationen zu verwenden sind. Ebenso kann der Schlüsselzeitplaner 125 die virtuellen Verschlüsselungsschlüssel VRK0 bis VRKn, welche für virtuelle Verschlüsselungsoperationen verwendet werden, in Antwort auf die Steuerung durch den Verschlüsselungscontroller 110 verwalten. Der Schlüsselzeitplaner 125 kann einen Speicher zum Speichern der realen Verschlüsselungsschlüssel RK0 bis RKn und der virtuellen Verschlüsselungsschlüssel VRK0 bis VRKn aufweisen, oder kann auf Verschlüsselungsschlüssel zugreifen, welche in einem anderen Speicher gespeichert sind.
  • In der Zeichnung sind Dummy-Daten (beispielsweise VPT0 bis VPTn) als für jeden des anfänglichen Rundenkerns 121_i und des ersten bis n-ten Rundenkerns 121_1 bis 121_n vorgesehen veranschaulicht, die vorliegende Ausführungsform aber ist nicht darauf beschränkt. In dem mit Pipeline versehenen Verschlüsselungskern 120 gemäß der vorliegenden Ausführungsform können die Dummy-Daten für wenigstens einen des anfänglichen Rundenkerns 121_i und des ersten bis n-ten Rundenkerns 121_1 bis 121_n vorgesehen sein. Ebenso ist in der Zeichnung ein virtueller Verschlüsselungsschlüssel (beispielsweise VRK0 bis VRKn) als für jeden des anfänglichen Rundenkerns 121_i und des ersten bis n-ten Rundenkerns 121_1 bis 121_n vorgesehen veranschaulicht, die vorliegende Ausführungsform aber ist nicht darauf beschränkt. In anderen Ausführungsformen kann der virtuelle Verschlüsselungsschlüssel für wenigstens einen des anfänglichen Rundenkerns 121_i und des ersten bis n-ten Rundenkerns 121_1 bis 121_n vorgesehen sein. Demnach kann der mit Pipeline versehene Verschlüsselungskern 120 gemäß der vorliegenden Ausführungsform konfiguriert sein, sodass wenigstens einer des anfänglichen Rundenkerns 121_i und des ersten bis n-ten Rundenkerns 121_i bis 121 n eine virtuelle Rundenoperation gemäß der Steuerung durch den Verschlüsselungscontroller 110 durchführt.
  • 4 ist ein Flussdiagramm zum Beschreiben einer Verschlüsselungsoperation, welche durch eine Verschlüsselungsschaltung gemäß einer Ausführungsform durchgeführt wird, und ist ein Diagramm zum Beschreiben einer realen Verschlüsselungsoperation. Beispielsweise kann 4 ein Beispiel beschreiben, in dem der mit Pipeline versehene Verschlüsselungskern 120 der 3 eine Verschlüsselungsoperation gemäß dem Advanced Encryption Standard (AES) durchführt, welcher durch das U. S. National Institute of Standards & Technology (NIST) etabliert ist. 4 kann jedoch zur Erleichterung des Verständnisses vorgesehen sein und die vorliegende Ausführungsform ist nicht darauf beschränkt. Eine Verschlüsselungsoperation kann durch den mit Pipeline versehenen Verschlüsselungskern 120 gemäß der Steuerung durch einen Verschlüsselungscontroller (beispielsweise 110 der 2) durchgeführt werden.
  • Bezug nehmend auf die 3 und 4 kann in Operation S110 der anfängliche Rundenkern 121_i eine „AddRoundKey“-Operation durchführen. Die „AddRoundKey“-Operation kann eine Operation zum Durchführen einer bitweisen Kombinationslogikoperation (beispielsweise eine OR-Operation (ODER-Operation), eine AND-Operation (UND-Operation), eine XOR-Operation oder dergleichen) auf realen Daten (beispielsweise den ersten bis k-ten realen Daten PT1 bis PTk) und dem anfänglichen realen Rundenschlüssel RK0 aufweisen. Demzufolge können jede der ersten bis k-ten realen Daten PT1 bis PTk in andere Daten umgewandelt werden, basierend auf einem ausgewählten anfänglichen realen Rundenschlüssel RK0. In einer Ausführungsform kann die „AddRoundKey“-Operation als eine XOR-Operation implementiert sein.
  • In Operation S120 kann der erste Rundenkern 121_1 eine Substitutionsoperation auf Daten, welche durch eine Umwandlung durch den anfänglichen Rundenkern 121_i erhalten werden, durchführen. In Operation S122 kann der erste Rundenkern 121_1 eine „ShiftRows“-Operation auf einem Zustand von Daten durchführen, welcher durch die Substitutionsoperation erhalten wird, welche in Operation S120 durchgeführt wird. In der „ShiftRows“-Operation können Zeilen eines Datenzustands zyklisch verschoben werden. In Operation S124 kann der erste Rundenkern 121_1 eine „MixColumns“-Operation auf einem Datenzustand durchführen, welcher durch die „ShiftRows“-Operation erlangt wird, welche in Operation S122 durchgeführt wird. In der „MixColumns“-Operation können Spalten des Datenzustands gemischt werden.
  • Nachfolgend kann in Operation S126 der erste Rundenkern 121_1 eine „AddRoundKey“-Operation auf umgewandelten Daten durchführen, welche einen Zustand haben, welcher durch die „MixColumns“-Operation erhalten wird, welche in Operation S124 durchgeführt wird. Der erste Rundenkern 121_1 kann eine bitweise Kombinationslogikoperation auf den umgewandelten Daten und dem ersten realen Rundenschlüssel RK1 durchführen.
  • In Operation S130 kann ein Verschlüsselungscontroller (beispielsweise 110 der 2) bestimmen, ob eine nächste Rundenoperation eine letzte Rundenoperation ist. Der Verschlüsselungscontroller 110 kann die Anzahl von realen Rundenoperationen verwalten. Wenn bestimmt wird, dass die nächste Rundenoperation nicht die letzte Rundenoperation ist, kann Operation S120 wiederum durchgeführt werden. Beispielsweise kann in Operation S120 der zweite Rundenkern 121_2 eine Substitutionsoperation auf Daten durchführen, welche durch eine Umwandlung erhalten werden, welche in Operation S126 durchgeführt wird. Andererseits kann, wenn bestimmt wird, dass die nächste Rundenoperation die letzte Rundenoperation ist, Operation S140 durchgeführt werden.
  • Operationen S120 bis S126 können eine reale Rundenoperation (das heißt jede der ersten bis n-1-ten realen Rundenoperation) bilden. Der Schlüsselzeitplaner 125 kann unterschiedliche reale Rundenschlüssel RK1 bis RKn-1 aus inmitten der realen Verschlüsselungsschlüssel RK0 bis RKn für jeden der ersten bis n-1-ten Rundenkerne 121_1 bis 121_n-1 für die „AddRoundKey“-Operation, welche in Operation S126 durchgeführt wird, auswählen.
  • In Operation S140 kann der n-te Rundenkern 121_n eine Substitutionsoperation auf Daten durchführen, welche durch eine Umwandlung, welche in Operation S126 durchgeführt wird, erhalten werden. In Operation S142 kann der n-te Rundenkern 121_n eine „ShiftRows“-Operation auf einem Zustand von Daten durchführen, welcher durch die Substitutionsoperation erhalten wird, welche in Operation S140 durchgeführt wird. In Operation S144 kann der n-te Rundenkern 121_n eine „AddRoundKey“-Operation auf Daten durchführen, welche einen Zustand haben, welcher durch die „ShiftRows“-Operation erhalten wird, welche in Operation S142 durchgeführt wird. Beispielsweise kann eine letzte reale Rundenoperation (eine n-te reale Rundenoperation) vollendet werden, und dann können Verschlüsselungsdaten (beispielsweise die ersten bis k-ten Verschlüsselungsdaten CT1 bis CTk) ausgegeben werden.
  • Da die anfängliche reale Rundenoperation und die erste bis n-te reale Rundenoperation sequenziell durchgeführt werden, kann ein Wert von Daten progressiv variieren. Die letzte Rundenoperation, welche Operationen S140 bis S144 aufweist, kann vollendet werden, und dann können abschließend umgewandelte Daten als die Verschlüsselungsdaten CT1 bis CTk ausgegeben werden, und demnach kann es für einen Angreifer schwierig sein, die Verschlüsselungsdaten CT1 bis CTk willkürlich zu manipulieren oder beschädigen.
  • In der Zeichnung ist als ein Beispiel veranschaulicht, dass die anfängliche reale Rundenoperation und die erste bis n-te reale Rundenoperation jeweils durch den anfänglichen Rundenkern 121_i und den ersten bis n-ten Rundenkern 121_1 bis 121_n durchgeführt werden, es kann aber auf eine virtuelle Rundenoperation angewandt werden. Beispielsweise kann wenigstens eines der anfänglichen Dummy-Daten VPT0 und des anfänglichen virtuellen Verschlüsselungsschlüssels VRK0 für den anfänglichen Rundenkern 121_i vorgesehen sein, und Operation S110 kann durch ein Verwenden wenigstens eines der anfänglichen Dummy-Daten VPT0 und des anfänglichen virtuellen Verschlüsselungsschlüssels VRK0 durchgeführt werden, wodurch eine anfängliche virtuelle Rundenoperation durchgeführt wird. Ebenso kann wenigstens eines der ersten Dummy-Daten VPT1 und des ersten virtuellen Verschlüsselungsschlüssels VRK1 für den ersten Rundenkern 121_1 vorgesehen sein, und der erste Rundenkern 121_1 kann Operationen S120 bis S126 durch ein Verwenden wenigstens eines der ersten Dummy-Daten VPT1 und des ersten virtuellen Verschlüsselungsschlüssels VRK1 durchführen, um die erste virtuelle Rundenoperation durchzuführen. Ebenso kann wenigstens eines der n-ten Dummy-Daten VPTn und des n-ten virtuellen Verschlüsselungsschlüssels VRKn für den n-ten Rundenkern 121_n vorgesehen sein, und der n-te Rundenkern 121_n kann Operationen S140 bis S144 durch ein Verwenden wenigstens eines der n-ten Dummy-Daten VPTn und des n-ten virtuellen Verschlüsselungsschlüssels VRKn durchführen, um die n-te virtuelle Rundenoperation durchzuführen.
  • 5 ist ein Flussdiagramm zum Beschreiben einer Operation eines Verschlüsselungscontrollers einer Verschlüsselungsschaltung gemäß einer Ausführungsform. Eine Verschlüsselungsoperation wird untenstehend unter Bezugnahme auf 5 beschrieben werden und eine Beschreibung der Verschlüsselungsoperation kann auf eine Entschlüsselungsoperation angewandt werden.
  • Bezug nehmend auf die 2, 3 und 5 kann in Operation S210 der Verschlüsselungscontroller 120 einen Rundenkern, durch welchen eine virtuelle Rundenoperation durchzuführen ist, aus inmitten einer Mehrzahl von Rundenkernen bestimmen. In einer Ausführungsform kann der Verschlüsselungscontroller 110 einen Rundenkern, welcher für einen Angriff eines Angreifers verletzlich ist, als einen Rundenkern bestimmen, durch welchen die virtuelle Rundenoperation durchzuführen ist. Beispielsweise kann der Verschlüsselungscontroller 110 den anfänglichen Rundenkern 121_i, welchem reale Daten zugeführt werden, oder den n-ten Rundenkern 121_n, von welchem Verschlüsselungsdaten ausgegeben werden, aus inmitten des anfänglichen Rundenkerns 121_i und des ersten bis n-ten Rundenkerns 121_1 bis 121_n auswählen. Wenn die ersten realen Daten PT1 dem anfänglichen Rundenkern 121_1 zugeführt werden, können der erste bis n-te Rundenkern 121_1 bis 121_n anders als der anfängliche Rundenkern 121_i eine reale Rundenoperation nicht durchführen, und demnach können sie verletzlich für einen Seitenkanalanalyse-Angriff des Angreifers sein. Ebenso können Daten zuerst dem n-ten Rundenkern 121_n in einem Prozess des Durchführens einer Entschlüsselungsoperation zugeführt werden, und demnach kann aus demselben Grund wie der anfängliche Rundenkern 121_i der n-te Rundenkern 121_n verletzlich für den Seitenkanalanalyse-Angriff des Angreifers sein. In einer Ausführungsform kann der Rundenkern, welcher in Operation S210 bestimmt wird, aufeinander folgend eine reale Rundenoperation und eine virtuelle Rundenoperation durchführen.
  • In Operation S220 kann der Verschlüsselungscontroller 110 ein Verhältnis der virtuellen Rundenoperation zu der realen Rundenoperation, welche durch den bestimmten Rundenkern durchzuführen ist, bestimmen. In einer Ausführungsform kann eine Summe der Anzahl von realen Rundenoperationen und der Anzahl von virtuellen Rundenoperationen der Exponent von 2 sein. Das heißt, dass das Verhältnis der virtuellen Rundenoperation zu der realen Rundenoperation ein Wert sein kann, welcher durch ein Subtrahieren von 1 von dem Exponenten von 2 erhalten wird. Beispielsweise kann der Verschlüsselungscontroller 110 eine Operation bestimmen, welche es erlaubt, dass die virtuelle Rundenoperation drei Mal durchgeführt wird, wenn die reale Rundenoperation einmal durchgeführt wird.
  • In Operation S230 kann der Verschlüsselungscontroller 110 die Anzahl von virtuellen Rundenoperationen, welche durch den bestimmten Rundenkern vor oder nach der realen Rundenoperation durchzuführen sind, bestimmen. In einer Ausführungsform kann durch ein Verwenden der Zufallsdaten D_RAN, welche von außerhalb zugeführt werden, der Verschlüsselungscontroller 110 die Anzahl von virtuellen Rundenoperationen zufällig bestimmen, welche vor und nach dem Durchführen einer realen Rundenoperation auf jeden der ersten bis k-ten realen Daten PT1 bis PTk durchzuführen sind. Beispielsweise kann gemäß einigen Ausführungsformen der Verschlüsselungscontroller 110 die Anzahl von vorangehenden virtuellen Rundenoperationen auf null einstellen und die Anzahl von nachfolgenden virtuellen Rundenoperationen auf drei, oder kann die Anzahl von vorangehenden virtuellen Rundenoperationen auf eine und die Anzahl von nachfolgenden virtuellen Rundenoperationen auf zwei hinsichtlich einer realen Rundenoperation einstellen. Alternativ kann beispielsweise der Verschlüsselungscontroller 110 die Anzahl von vorangehenden virtuellen Rundenoperationen auf zwei und die Anzahl von nachfolgenden virtuellen Rundenoperationen auf eine einstellen, oder kann die Anzahl von vorangehenden virtuellen Rundenoperationen auf drei und die Anzahl von nachfolgenden virtuellen Rundenoperationen auf null hinsichtlich einer realen Rundenoperation einstellen.
  • Der Verschlüsselungscontroller 110 kann das Steuersignal CON_C zu dem mit Pipeline versehenen Verschlüsselungskern 120 basierend auf Ergebnissen der Bestimmungen, welche in den Operationen S210 bis S230 durchgeführt werden, ausgeben. Der mit Pipeline versehene Verschlüsselungskern 120 kann eine reale Rundenoperation und eine virtuelle Rundenoperation basierend auf dem Steuersignal CON_C durchführen.
  • Demnach kann in der Verschlüsselungsschaltung 100 gemäß der vorliegenden Ausführungsform eine virtuelle Rundenoperation wenigstens einmal vor oder nach einer realen Rundenoperation durchgeführt werden, und demnach kann es ein Angreifer schwierig finden, eine Zeit zu erfassen, wann die reale Rundenoperation durchgeführt wird, wodurch ein Sicherheitsniveau der Verschlüsselungsschaltung 100 erhöht wird.
  • Die 6 bis 8 sind Zeitdiagramme zum Beschreiben einer Operation einer Verschlüsselungsschaltung gemäß einer Ausführungsform. Die 6 bis 8 sind Diagramme zum Beschreiben einer Operation eines mit Pipeline versehenen Verschlüsselungskerns basierend auf einer Operation des Verschlüsselungscontrollers 110 der 5. Eine Verschlüsselungsoperation wird untenstehend unter Bezugnahme auf die 6 bis 8 beschrieben werden, und eine Beschreibung der Verschlüsselungsoperation kann auf eine Entschlüsselungsoperation angewandt werden.
  • Bezug nehmend auf 6 können einige einer Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n als Rundenkerne zum nacheinander folgenden Durchführen einer realen Rundenoperation und einer virtuellen Rundenoperation bestimmt werden. Hier kann der Rundenkern 121_i ein anfänglicher Rundenkern 121_i sein und die Rundenkerne 121_1 bis 121_n können einen ersten bis n-ten Rundenkern 121_1 bis 121_n aufweisen. Beispielsweise kann der anfängliche Rundenkern 121_i und der n-te Rundenkern 121_n bestimmt werden. Die vorliegende Ausführungsform ist jedoch nicht auf ein Beispiel beschränkt, in dem jeder des anfänglichen Rundenkerns 121_i und des n-ten Rundenkerns 121_n eine virtuelle Rundenoperation durchführt. In anderen Ausführungsformen kann ein anderer Rundenkern eine virtuelle Rundenoperation durchführen.
  • In einer Ausführungsform kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch den anfänglichen Rundenkern 121_i durchzuführen ist, dasselbe sein wie ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch den n-ten Rundenkern 121_n durchzuführen ist. In diesem Fall kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch jeden des anfänglichen Rundenkerns 121_i und des n-ten Rundenkerns 121_n durchzuführen ist, drei sein. Eine einmalige reale Rundenoperation und eine dreimalige virtuelle Rundenoperation können in einem Rundenoperationssatz OPS enthalten sein.
  • Wenn der eine Rundenoperationssatz OPS, welcher durch den anfänglichen Rundenkern 121_i auf realen Daten (beispielsweise einem von ersten bis k-ten realen Daten PT1 bis PTk) durchgeführt wird, endet, kann der erste Rundenkern 121_1, welcher ein nächster Rundenkern ist, eine erste reale Rundenoperation auf den realen Daten durchführen. Wenn der erste Rundenkern 121_1 die erste reale Rundenoperation unmittelbar durchführt, nachdem eine anfängliche reale Rundenoperation endet, ungeachtet dessen, dass der eine Rundenoperationssatz OPS durch den anfänglichen Rundenkern 121_i beendet ist, kann ein Angreifer leicht eine Zeit erfassen, wann der anfängliche Rundenkern 121_i die anfängliche reale Rundenoperation durchführt. Demnach kann der erste Rundenkern 121_1 konfiguriert sein, um die erste reale Rundenoperation auf den realen Daten durchzuführen, nachdem der eine Rundenoperationssatz OPS, welcher auf den realen Daten durchgeführt wird, endet.
  • In einem Fall, in dem der anfängliche Rundenkern 121_i eine anfängliche reale Rundenoperation auf jedem der ersten bis k-ten realen Daten PT1 bis PTk durchführt, kann die Anzahl von anfänglichen virtuellen Rundenoperationen, welche der anfänglichen realen Rundenoperation vorangehen/folgen zufällig eingestellt werden. Beispielsweise kann in dem einen Rundenoperationssatz OPS eine einmalige anfängliche reale Rundenoperation und eine dreimalige anfängliche virtuelle Rundenoperation zufällig durchgeführt werden. Ebenso kann in einem Fall, in dem der n-te Rundenkern 121_n eine n-te reale Rundenoperation auf jeden der ersten bis k-ten realen Daten PT1 bis PTk durchführt, die Anzahl von n-ten virtuellen Rundenoperationen, welche vor und nach der n-ten realen Rundenoperation durchgeführt werden, zufällig eingestellt werden. Demzufolge kann es ein Angreifer schwierig finden, eine Zeit zu erfassen, wann jede der anfänglichen realen Rundenoperation und der n-ten realen Rundenoperation durchgeführt wird.
  • Wenigstens zwei der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n können eine Periode aufweisen, in der die wenigstens zwei Rundenkerne eine virtuelle Rundenoperation oder eine reale Rundenoperation simultan durchführen. Beispielsweise kann eine Rundenoperationsatz-OPS-Operation, welche durch den anfänglichen Rundenkern 121_i auf den zweiten realen Daten PT2 durchgeführt wird, parallel mit der ersten realen Rundenoperation durchgeführt werden, welche durch den ersten Rundenkern 121_1 auf den ersten realen Daten PT1 durchgeführt wird. Ebenso kann eine Rundenoperationsatz-OPS-Operation, welche durch den n-ten Rundenkern 121_n auf den ersten realen Daten PT1 durchgeführt wird, parallel mit der n-1-ten realen Rundenoperation durchgeführt werden, welche durch den n-1-ten Rundenkern 121_n-1 auf den zweiten realen Daten PT2 durchgeführt wird. Demzufolge können in der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform Verschlüsselungsoperationen simultan auf unterschiedlichen Teilen von Daten durchgeführt werden, und demnach kann es ein Angreifer schwierig finden, einen Seitenkanalanalyse-Angriff durchzuführen.
  • Bezug nehmend auf 7 kann jeder einer Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n aufeinander folgend eine reale Rundenoperation und eine virtuelle Rundenoperation durchführen. Hier kann der Rundenkern 121_i ein anfänglicher Rundenkern 121_i sein und die Rundenkerne 121_1 bis 121_n können erste bis n-te Rundenkerne 121_1 bis 121_n aufweisen. In einer Ausführungsform können Verhältnisse von virtuellen Rundenoperationen zu realen Rundenoperationen, welche jeweils durch die Mehrzahl von Rundenkernen 121_i und 121_1 bis 121 n durchzuführen sind, dieselben sein. Beispielsweise kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation drei sein. Eine einmalige reale Rundenoperation und eine dreimalige virtuelle Rundenoperation können in einem Rundenoperationssatz OPS enthalten sein.
  • Wenigstens zwei der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n können eine Periode aufweisen, in der die wenigstens zwei Rundenkerne eine virtuelle Rundenoperation oder eine reale Rundenoperation simultan durchführen. Beispielsweise kann eine Rundenoperationssatz-OPS-Operation, welche durch den anfänglichen Rundenkern 121_i auf den zweiten realen Daten PT2 durchgeführt wird, parallel mit einer Rundenoperationssatz-OPS-Operation durchgeführt werden, welche durch den ersten Rundenkern 121_1 auf den ersten realen Daten PT1 durchgeführt wird. Ebenso kann eine Rundenoperationssatz-OPS-Operation, welche durch den n-ten Rundenkern 121_n auf den ersten realen Daten PT1 durchgeführt wird, parallel mit einer Rundenoperationssatz-OPS-Operation durchgeführt werden, welche durch den n-1-ten Rundenkern 121_n-1 auf den zweiten realen Daten PT2 durchgeführt wird.
  • Bezug nehmend auf 8 kann jeder wenigstens einiger einer Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n aufeinander folgend eine reale Rundenoperation und eine virtuelle Rundenoperation durchführen. Hier kann der Rundenkern 121_i ein anfänglicher Rundenkern 121_i sein und die Rundenkerne 121_1 bis 121_n können erste bis n-te Rundenkerne 121_1 bis 121_n aufweisen. Beispielsweise kann jeder des anfänglichen Rundenkerns 121_i, des ersten Rundenkerns 121_1, des n-1-ten Rundenkerns 121_n-1 und des n-ten Rundenkerns 121_n aufeinander folgend eine reale Rundenoperation und eine virtuelle Rundenoperation durchführen.
  • In einer Ausführungsform können Verhältnisse der virtuellen Rundenoperationen zu realen Rundenoperationen, welche jeweils durch den anfänglichen Rundenkern 121_i, den ersten Rundenkern 121_1, den n-1-ten Rundenkern 121_n-1 und den n-ten Rundenkern 121_n durchzuführen sind, nicht dieselben sein. Beispielsweise kann der Verschlüsselungscontroller 110 ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch einen Rundenkern durchzuführen ist, welcher erwartet wird, verletzlich für einen Angriff eines Angreifers zu sein, als ein hohes Verhältnis einstellen. Beispielsweise kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch jeden des anfänglichen Rundenkerns 121_i und des n-ten Rundenkerns 121_n durchzuführen ist, drei sein und eine einmalige reale Rundenoperation und eine dreimalige virtuelle Rundenoperation können in jedem von einem Rundenoperationssatz OPSi und einem Rundenoperationssatz OPSn enthalten sein. Andererseits kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch jeden des ersten Rundenkerns 121_1 und des n-1-ten Rundenkerns 121_n-1 durchzuführen ist, eins sein und eine einmalige reale Rundenoperation und eine einmalige virtuelle Rundenoperation können in jedem von einem Rundenoperationssatz OPS1 und einen Rundenoperationssatz OPSn-1 enthalten sein. In jedem des einen Rundenoperationssatzes OPSi, des einen Rundenoperationssatzes OPS1, des einen Rundenoperationssatzes OPSn-1 und des einen Rundenoperationssatzes OPSn können eine reale Rundenoperation und eine virtuelle Rundenoperation zufällig basierend auf einem vorbestimmten Verhältnis durchgeführt werden.
  • 9 ist ein Flussdiagramm zum Beschreiben einer Operation eines Verschlüsselungscontrollers einer Verschlüsselungsschaltung gemäß einer Ausführungsform. Eine Verschlüsselungsoperation wird untenstehend unter Bezugnahme auf 9 beschrieben werden und eine Beschreibung der Verschlüsselungsoperation kann auf eine Entschlüsselungsoperation angewandt werden.
  • Bezug nehmend auf die 2, 3 und 9 kann in Operation S310 der Verschlüsselungscontroller 110 einen Rundenkern bestimmen, um eine virtuelle Rundenoperation durchzuführen, wenn ein anderer Rundenkern eine reale Rundenoperation durchführt. Beispielsweise kann der Verschlüsselungscontroller 110 den ersten Rundenkern 121_1 als einen Rundenkern bestimmen, durch welchen eine virtuelle Rundenoperation durchzuführen ist.
  • In Operation S320 kann der Verschlüsselungscontroller 110 eine virtuelle Operationsperiode einstellen, in der der Rundenkern, welcher in Operation S310 bestimmt wird, eine virtuelle Rundenoperation durchführt. In einer Ausführungsform kann der Verschlüsselungscontroller 110 die virtuelle Operationsperiode einstellen, welche eine Periode von einer Zeit, wann eine Verschlüsselungsoperation, welche auf jeden der ersten bis k-ten realen Daten PT1 bis PTk durchgeführt wird, startet, zu einer Zeit, wann die Verschlüsselungsoperation endet, aufweist. In einer Ausführungsform kann der Verschlüsselungscontroller 110 eine Periode, welche verletzlich für einen Seitenkanalanalyse-Angriff eines Angreifers ist, als die virtuelle Operationsperiode einstellen. Beispielsweise kann der Verschlüsselungscontroller 110 eine Periode, in der nur eine reale Rundenoperation durchgeführt wird, oder zwei reale Rundenoperationen parallel durchgeführt werden, als die virtuelle Operationsperiode einstellen.
  • In Operation S330 kann der Verschlüsselungscontroller 110 überprüfen, ob eine reale Rundenoperation durch den Rundenkern, welcher in Operation S310 bestimmt wird, geplant ist. Beispielsweise kann der Verschlüsselungscontroller 110 überprüfen, ob eine reale Rundenoperation durch den ersten Rundenkern 121_1 in der virtuellen Operationsperiode, welche in Operation S320 eingestellt wird, geplant ist.
  • Wenn es bestimmt wird, dass die reale Rundenoperation durch den bestimmten Rundenkern nicht in der virtuellen Operationsperiode geplant ist, kann in Operation S340 der Verschlüsselungscontroller 110 eine Steuerung durchführen, sodass der bestimmte Rundenkern eine virtuelle Rundenoperation durchführt, wenn ein anderer Rundenkern eine reale Rundenoperation durchführt. Andererseits kann, wenn bestimmt wird, dass die reale Rundenoperation durch den bestimmten Rundenkern geplant ist, der Verschlüsselungscontroller 110 in Operation S350 eine Steuerung durchführen, sodass der bestimmte Rundenkern eine reale Rundenoperation durchführt.
  • In Operation S360 kann der Verschlüsselungscontroller 110 überprüfen, ob eine virtuelle Operationsperiode endet. Wenn bestimmt wird, dass die virtuelle Operationsperiode nicht endet, kann der Verschlüsselungscontroller 110 Operation S330 wiederum durchführen. Andererseits kann, wenn bestimmt wird, dass die virtuelle Operationsperiode geendet hat, der Verschlüsselungscontroller 110 eine virtuelle Rundenoperation beenden.
  • In der Verschlüsselungsschaltung 100 gemäß der vorliegenden Ausführungsform kann eine virtuelle Rundenoperation durch einen Rundenkern durchgeführt werden, welcher keine arithmetische Operation durchführt, anders als ein Rundenkern, welcher eine reale Rundenoperation durchführt, und demnach kann Rauschen auftreten. Demzufolge kann es ein Angreifer schwierig finden, einen Seitenkanalanalyse-Angriff durchzuführen, wodurch ein Sicherheitsniveau der Verschlüsselungsschaltung 100 erhöht wird.
  • Die 10 bis 12 sind Zeitdiagramme zum Beschreiben einer Operation einer Verschlüsselungsschaltung gemäß einer Ausführungsform. Die 10 bis 12 sind Diagramme zum Beschreiben einer Operation eines mit Pipeline versehenen Verschlüsselungskerns basierend auf einer Operation des Verschlüsselungscontrollers 110 der 9. Eine Verschlüsselungsoperation wird untenstehend unter Bezugnahme auf die 10 bis 12 beschrieben werden, und eine Beschreibung der Verschlüsselungsoperation kann auf eine Entschlüsselungsoperation angewandt werden.
  • Bezug nehmend auf 10 können einige einer Mehrzahl von Rundenkernen 121_i und 121_1 bis121_n als Rundenkerne zum Durchführen einer virtuellen Rundenoperation bestimmt werden, wenn ein anderer Rundenkern eine reale Rundenoperation durchführt. Hier kann der Rundenkern 121_i ein anfänglicher Rundenkern 121_i sein und die Rundenkerne 121_1 bis 121_n können erste bis n-te Rundenkerne 121_1 bis 121_n aufweisen. Beispielsweise können der erste Rundenkern 121_1 und der n-1-te Rundenkern 121_n-1 bestimmt werden. In diesem Fall kann eine virtuelle Operationsperiode VOP, in der eine virtuelle Rundenoperation durch jeden des ersten Rundenkerns 121_1 und des n-1-ten Rundenkerns 121_n-1 durchzuführen ist, als eine Periode von einer Zeit, wann eine Verschlüsselungsoperation, welche auf jeden von ersten bis k-ten realen Daten PT1 bis PTk startet, zu einer Zeit, wann die Verschlüsselungsoperation endet, eingestellt werden.
  • Der erste Rundenkern 121_1 und der n-1-te Rundenkern 121_n-1 der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n können jeweils eine erste virtuelle Rundenoperation und eine n-1-te virtuelle Rundenoperation durchführen, wenn eine erste reale Rundenoperation und eine n-1-te reale Rundenoperation nicht durchgeführt werden. In der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform können wenigstens zwei der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n eine Periode aufweisen, in der die wenigstens zwei Rundenkerne eine virtuelle Rundenoperation oder eine reale Rundenoperation simultan durchführen. Demnach kann in der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform, da eine reale Rundenoperation und eine virtuelle Rundenoperation simultan durchgeführt werden, nur eine anfängliche reale Rundenoperation auf den ersten realen Daten PT1 durchgeführt werden, nachdem eine Verschlüsselungsoperation startet, wodurch verhindert wird, dass ein Angreifer leicht einen Seitenkanalanalyse-Angriff durchführt. Ebenso kann in der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform nur eine n-te reale Rundenoperation auf den k-ten realen Daten PTk durchgeführt werden, wodurch verhindert wird, dass der Angreifer leicht einen Seitenkanalanalyse-Angriff durchführt.
  • Bezug nehmend auf 11 kann eine Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n als Rundenkerne zum Durchführen einer virtuellen Rundenoperation bestimmt werden, wenn ein anderer Rundenkern eine reale Rundenoperation durchführt. In diesem Fall kann eine virtuelle Operationsperiode VOP, in der eine virtuelle Rundenoperation durch jeden der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n durchzuführen ist, als eine Periode eingestellt werden von einer Zeit, wann eine Verschlüsselungsoperation, welche auf jeden von ersten bis k-ten realen Daten PT1 bis PTk durchgeführt wird, startet, zu einer Zeit, wann die Verschlüsselungsoperation endet.
  • Jeder der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n kann eine virtuelle Rundenoperation durchführen, wenn eine reale Rundenoperation nicht durchgeführt wird. Demnach kann in der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform, da eine reale Rundenoperation und eine virtuelle Rundenoperation simultan durchgeführt werden, nur eine anfängliche reale Rundenoperation auf den ersten realen Daten PT1 durchgeführt werden, nachdem eine Verschlüsselungsoperation startet, wodurch es verhindert wird, dass ein Angreifer leicht einen Seitenkanalanalyse-Angriff durchführt.
  • Bezug nehmend auf 12 können einige einer Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n als Rundenkerne zum Durchführen einer virtuellen Rundenoperation bestimmt werden, wenn ein anderer Rundenkern eine reale Rundenoperation durchführt. Hier kann der Rundenkern 121_i ein anfänglicher Rundenkern 121_i sein und die Rundenkerne 121_1 bis 121 n können erste bis n-te Rundenkerne 121_1 bis 121_n aufweisen. Beispielsweise können der erste Rundenkern 121_1 und der n-1-te Rundenkern 121 n-1 bestimmt werden.
  • In diesem Fall kann eine virtuelle Operationsperiode VOP1, in der eine virtuelle Rundenoperation durchgeführt wird, als eine Periode eingestellt werden, in der eine anfängliche reale Rundenoperation auf ersten realen Daten PT1 durchgeführt wird, eine erste reale Rundenoperation auf den ersten realen Daten PT1 durchgeführt wird, und eine anfängliche reale Rundenoperation auf zweiten realen Daten PT2 durchgeführt wird. Ebenso kann eine zweite virtuelle Operationsperiode VOP2, in der eine virtuelle Rundenoperation durchgeführt wird als eine Periode eingestellt werden, in der eine n-te reale Rundenoperation auf k-1-ten realen Daten PTk-1 durchgeführt wird, eine n-1-te reale Rundenoperation auf den k-ten realen Daten PTk durchgeführt wird, und eine n-te reale Rundenoperation auf den k-ten realen Daten PTk durchgeführt wird.
  • Wenn eine virtuelle Rundenoperation in der ersten virtuellen Operationsperiode VOP1 und der zweiten virtuellen Operationsperiode VOP2 nicht durchgeführt wird, kann nur eine oder zwei reale Rundenoperationen durchgeführt werden, und demnach können die erste virtuelle Operationsperiode VOP1 und die zweite virtuelle Operationsperiode VOP2 verletzlich für einen Angriff sein. Demnach kann eine Periode, welche relativ verletzlich für einen Angriff ist, als eine virtuelle Operationsperiode eingestellt werden, und eine virtuelle Rundenoperation kann zusätzlich durchgeführt werden, wodurch die virtuelle Operationsperiode gegen einen Angriff geschützt wird. Die erste virtuelle Operationsperiode VOP1 und die zweite virtuelle Operationsperiode VOP2 können als einige Perioden anstelle einer ganzen Periode eingestellt werden, in der eine Verschlüsselungsoperation auf ersten bis k-ten realen Daten PT1 bis PTk durchgeführt wird, und demnach kann in einer Periode, welche als verletzlich für einen Angriff eines Angreifers bestimmt wird, die Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform erlauben, dass Rauschen auftritt und kann den Leistungsverbrauch verringern.
  • 13 ist ein Zeitdiagramm zum Beschreiben einer Operation einer Verschlüsselungsschaltung gemäß einer Ausführungsform. 13 ist ein Diagramm zum Beschreiben einer Operation eines mit Pipeline versehenen Verschlüsselungskerns basierend auf einer Operation des Verschlüsselungscontrollers 110 der 5 und 9. Eine Verschlüsselungsoperation wird untenstehend unter Bezugnahme auf 13 beschrieben werden, und eine Beschreibung der Verschlüsselungsoperation kann auf eine Entschlüsselungsoperation angewandt werden.
  • Bezug nehmend auf 13 können einige einer Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n als Rundenkerne bestimmt werden, um aufeinander folgend eine reale Rundenoperation und eine virtuelle Rundenoperation durchzuführen. Hier kann der Rundenkern 121_i ein anfänglicher Rundenkern 121_i sein und die Rundenkerne 121_1 bis 121_n können erste bis n-te Rundenkerne 121_1 bis 121 n aufweisen. Beispielsweise können der anfängliche Rundenkern 121_i und der n-te Rundenkern 121_n bestimmt werden. Die vorliegende Ausführungsform ist jedoch nicht darauf beschränkt, und die Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n kann als Rundenkerne zum aufeinander folgenden Durchführen einer realen Rundenoperation und einer virtuellen Rundenoperation bestimmt werden.
  • In einer Ausführungsform kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch den anfänglichen Rundenkern 121_i durchzuführen ist, dasselbe sein wie ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch den n-ten Rundenkern 121_n durchzuführen ist. Beispielsweise kann ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch jeden des anfänglichen Rundenkerns 121_i und des n-ten Rundenkerns 121_n durchzuführen ist, drei sein. Eine einmalige reale Rundenoperation und eine dreimalige virtuelle Rundenoperation können in einem Rundenoperationssatz OPS enthalten sein. In anderen Ausführungsformen kann sich ein Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch den anfänglichen Rundenkern 121_i durchzuführen ist, von einem Verhältnis einer virtuellen Rundenoperation zu einer realen Rundenoperation, welches durch den n-ten Rundenkern 121_n durchzuführen ist, unterscheiden.
  • In einem Fall, in dem der anfängliche Rundenkern 121_i eine anfängliche reale Rundenoperation auf jeden von ersten bis k-ten realen Daten PT1 bis PTk durchführt, kann die Anzahl von anfänglichen virtuellen Rundenoperationen, welche vor und nach der anfänglichen realen Rundenoperation durchgeführt werden, zufällig eingestellt werden. Das heißt, dass in dem einen Rundenoperationssatz OPS eine einmalige anfängliche reale Rundenoperation und eine dreimalige anfängliche virtuelle Rundenoperation zufällig durchgeführt werden können. Ebenso kann in dem einen Rundenoperationssatz OPS eine einmalige n-te reale Rundenoperation und eine dreimalige n-te virtuelle Rundenoperation zufällig durchgeführt werden. Demzufolge kann es ein Angreifer schwierig finden, eine Zeit zu erfassen, wann jede der anfänglichen realen Rundenoperation und der n-ten realen Rundenoperation durchgeführt wird.
  • Wenigstens einige der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n können als Rundenkerne zum Durchführen einer virtuellen Rundenoperation bestimmt werden, wenn ein anderer Rundenkern eine reale Rundenoperation durchführt. Beispielsweise können der erste Rundenkern 121_1 und der n-1-te Rundenkern 121_n-1 bestimmt werden. In diesem Fall kann eine virtuelle Operationsperiode VOP, in der eine virtuelle Rundenoperation durch jeden des ersten Rundenkerns 121_1 und des n-1-ten Rundenkerns 121_n-1 durchzuführen ist, wenigstens einige von Perioden aufweisen von einer Zeit, wann eine Verschlüsselungsoperation, welche auf jeden der ersten bis k-ten realen Daten PT1 bis PTk durchgeführt wird, beginnt, zu einer Zeit, wann die Verschlüsselungsoperation endet. Beispielsweise kann die virtuelle Operationsperiode VOP eine gesamte Periode sein, in der die Verschlüsselungsoperation auf jeden der ersten bis k-ten realen Daten PT1 bis PTk durchgeführt wird.
  • Der erste Rundenkern 121_1 und der n-1-te Rundenkern 121_n-1 der Mehrzahl von Rundenkernen 121_i und 121_1 bis 121_n können jeweils eine erste virtuelle Rundenoperation und eine n-1-te virtuelle Rundenoperation durchführen, wenn eine erste reale Rundenoperation und eine n-1-te reale Rundenoperation nicht durchgeführt werden. Demnach kann in der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform, da eine reale Rundenoperation und eine virtuelle Rundenoperation simultan durchgeführt werden, nur eine anfängliche reale Rundenoperation auf den ersten realen Daten PT1 durchgeführt werden, nachdem eine Verschlüsselungsoperation startet, wodurch verhindert wird, dass ein Angreifer leicht einen Seitenkanalanalyse-Angriff durchführt. Ebenso kann in der Verschlüsselungsschaltung gemäß der vorliegenden Ausführungsform nur eine n-te reale Rundenoperation auf den k-ten realen Daten PTk durchgeführt werden, wodurch verhindert wird, dass der Angreifer den Seitenkanalanalyse-Angriff leicht durchführt.
  • Während das erfinderische Konzept insbesondere unter Bezugnahme auf Ausführungsformen davon gezeigt und beschrieben wurde, wird es verstanden werden, dass verschiedene Änderungen in der Form und den Details darin getätigt werden können, ohne von dem Gedanken und Umfang der folgenden Ansprüche abzuweichen.

Claims (23)

  1. Verschlüsselungsschaltung (100, 1150, 1250, 1350), die Folgendes aufweist: einen mit Pipeline versehenen Verschlüsselungskern (120), welcher eine Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) aufweist, welche konfiguriert sind, um eine reale Rundenoperation auf jedem von Teilen von Eingabedaten, welche sequenziell dorthin eingegeben werden, durchzuführen, wobei der mit Pipeline versehene Verschlüsselungskern (120) Verschlüsselungsdaten (CT1 bis CTk) durch eine Verschlüsselungsoperation unter Verwendung der realen Rundenoperation ausgibt; und einen Verschlüsselungscontroller (110), welcher konfiguriert ist, um eine Steuerung durchzuführen, sodass wenigstens einer der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121_n) zusätzlich eine virtuelle Rundenoperation durchführt, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um eine Steuerung durchzuführen, sodass die virtuelle Rundenoperation des wenigstens einen Rundenkerns (121, 121_i, 121_1 bis 121_n) parallel mit der realen Rundenoperation wenigstens eines anderen Rundenkerns (121, 121_i, 121_1 bis 121_n) der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121_n) durchgeführt wird.
  2. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 1, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um den wenigstens einen Rundenkern (121, 121_i, 121_1 bis 121_n) als einen Rundenkern (121, 121_i, 121_1 bis 121_n), durch welchen die virtuelle Rundenoperation durchzuführen ist, aus inmitten der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121_n), zu bestimmen ein Verhältnis der virtuellen Rundenoperation zu der realen Rundenoperation, welches durch den bestimmten Rundenkern (121, 121_i, 121_1 bis 121 n) durchzuführen ist, zu bestimmen, und eine Steuerung durchzuführen, sodass der bestimmte wenigstens eine Rundenkern (121, 121_i, 121_1 bis 121 n) die reale Rundenoperation und die virtuelle Rundenoperation basierend auf dem Verhältnis durchführt.
  3. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 2, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um eine Anzahl von virtuellen Rundenoperationen, welche vor der realen Rundenoperation durchzuführen ist, und eine Anzahl von virtuellen Rundenoperationen, welche nach der realen Rundenoperation durchzuführen ist, basierend auf dem Verhältnis zufällig zu bestimmen, und eine Steuerung durchzuführen, sodass der bestimmte Rundenkern (121, 121_i, 121_1 bis 121 n) die reale Rundenoperation und die virtuelle Rundenoperation basierend auf den bestimmten Anzahlen durchführt.
  4. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 2, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um einen anfänglichen Rundenkern (121, 121_i, 121_1 bis 121 n), welchem erste Eingabedaten der Teile von Eingabedaten zugeführt werden, als einen Rundenkern (121, 121_i, 121_1 bis 121_n) zum Durchführen des virtuellen Rundenkerns (121, 121_i, 121_1 bis 121_n) aus inmitten der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121_n) zu bestimmen.
  5. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 2, wobei der Verschlüsselungscontroller (110) einen letzten Rundenkern (121, 121_i, 121_1 bis 121_n), von welchem die Verschlüsselungsdaten (CT1 bis CTk) ausgegeben werden, als einen Rundenkern (121, 121_i, 121_1 bis 121 n) zum Durchführen des virtuellen Rundenkerns (121, 121_i, 121_1 bis 121 n) aus inmitten der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) bestimmt.
  6. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 2, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um die Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) als Rundenkerne zum Durchführen des virtuellen Rundenkerns (121, 121_i, 121_1 bis 121 n) zu bestimmen.
  7. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 2, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um verschiedene Rundenkerne (121, 121_i, 121_1 bis 121_n) als Rundenkerne (121, 121_i, 121_1 bis 121 n) zum Durchführen des virtuellen Rundenkerns (121, 121_i, 121_1 bis 121_n) zu bestimmen, und Verhältnisse der virtuellen Rundenoperation zu der realen Rundenoperation, welche jeweils durch die unterschiedlichen Rundenkerne (121, 121_i, 121_1 bis 121_n) durchgeführt werden, sich unterscheiden.
  8. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 1, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um einen Rundenkern (121, 121_i, 121_1 bis 121 n), durch welchen die virtuelle Rundenoperation durchzuführen ist, aus inmitten der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) zu bestimmen, wenn ein anderer Rundenkern (121, 121_i, 121_1 bis 121_n) die reale Rundenoperation durchführt, eine virtuelle Operationsperiode (VOP, VOP1, VOP2) zu bestimmen, in der die virtuelle Rundenoperation durch den bestimmten Rundenkern (121, 121_i, 121_1 bis 121 n) durchzuführen ist, und eine Steuerung durchzuführen, sodass der bestimmte Rundenkern (121, 121_i, 121_1 bis 121 n) zusätzlich die virtuelle Rundenoperation während der virtuellen Operationsperiode (VOP, VOP1, VOP2) durchführt.
  9. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 8, wobei der Verschlüsselungscontroller (110) überprüft, ob der bestimmte Rundenkern (121, 121_i, 121_1 bis 121_n) die reale Rundenoperation in der virtuellen Operationsperiode (VOP, VOP1, VOP2) durchführen wird, und wenn bestimmt wird, dass der bestimmte Rundenkern (121, 121_i, 121_1 bis 121_n) die reale Rundenoperation nicht durchführen wird, der Verschlüsselungscontroller (110) eine Steuerung durchführt, um die virtuelle Rundenoperation durchzuführen.
  10. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 8, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um eine Periode, in der der mit Pipeline versehene Verschlüsselungskern (120) die Verschlüsselungsoperation durchführt, als die virtuelle Operationsperiode (VOP, VOP1, VOP2) einzustellen.
  11. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 8, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um die virtuelle Operationsperiode (VOP, VOP1, VOP2) einzustellen, welche eine Periode aufweist, in der ein anfänglicher Rundenkern (121_i), welchem erste Eingabedaten der Teile von Eingabedaten zugeführt werden, der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121_n) eine Operation auf den ersten Eingabedaten der Teile von Eingabedaten durchführt.
  12. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 8, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um die virtuelle Operationsperiode (VOP, VOP1, VOP2) einzustellen, welche eine Periode aufweist, in der ein letzter Rundenkern (121_n), von welchem die Verschlüsselungsdaten (CT1 bis CTk) ausgegeben werden, der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) eine Operation auf letztlich zugeführten Daten der Teile von Eingabedaten durchführt.
  13. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 1, wobei der Verschlüsselungscontroller (110) konfiguriert ist, um einen ersten Rundenkern (121_1) zum aufeinander folgenden Durchführen der realen Rundenoperation und der virtuellen Rundenoperation aus inmitten der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) zu bestimmen, einen zweiten Rundenkern (121_2) zum Durchführen der virtuellen Rundenoperation aus inmitten der Mehrzahl von Rundenkernen (121, 121_i, 121_1 bis 121 n) zu bestimmen, wenn ein anderer Rundenkern (121, 121_i, 121_1 bis 121_n) die reale Rundenoperation durchführt, und eine Steuerung durchzuführen, sodass der erste Rundenkern (121_1) und der zweite Rundenkern (121_2) die reale Rundenoperation und die virtuelle Rundenoperation durchführen.
  14. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 1, wobei die virtuelle Rundenoperation eine Rundenoperation aufweist, welche auf Dummy-Daten (VPT) durchgeführt wird.
  15. Verschlüsselungsschaltung (100, 1150, 1250, 1350), die Folgendes aufweist: einen ersten Rundenkern (121_1), welcher konfiguriert ist, um eine erste reale Rundenoperation auf Eingabedaten (D_in) durchzuführen; einen zweiten Rundenkern (121_2), welcher konfiguriert ist, um eine zweite reale Rundenoperation auf den Eingabedaten (D_in) basierend auf einem Ergebnis der ersten realen Rundenoperation durchzuführen; und einen Schlüsselzeitplaner (125), welcher konfiguriert ist, um einen Rundenschlüssel für jeden des ersten Rundenkerns (121_1) und des zweiten Rundenkerns (121_2) vorzusehen; wobei der erste Rundenkern (121_1) konfiguriert ist, um ferner eine erste virtuelle Rundenoperation basierend auf einem von Dummy-Daten (VPT) und einem ersten virtuellen Rundenschlüssel, welcher von dem Schlüsselzeitplaner (125) vorgesehen ist, durchzuführen; und wobei die erste virtuelle Rundenoperation des ersten Rundenkerns (121_1) parallel mit der zweiten realen Rundenoperation durchgeführt wird.
  16. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 15, wobei der zweite Rundenkern (121_2) konfiguriert ist, um ferner eine zweite virtuelle Rundenoperation basierend auf einem der Dummy-Daten (VPT) und einem zweiten virtuellen Rundenschlüssel, welcher von dem Schlüsselzeitplaner (125) vorgesehen ist, durchzuführen.
  17. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 16, wobei ein Verhältnis der ersten virtuellen Rundenoperation zu der ersten realen Rundenoperation einen ersten Wert hat, ein Verhältnis der zweiten virtuellen Rundenoperation zu der zweiten realen Rundenoperation einen zweiten Wert hat, und der erste Wert äquivalent zu dem zweiten Wert ist.
  18. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 16, wobei ein Verhältnis der ersten virtuellen Rundenoperation zu der ersten realen Rundenoperation einen ersten Wert hat, ein Verhältnis der zweiten virtuellen Rundenoperation zu der zweiten realen Rundenoperation einen zweiten Wert hat, und der erste Wert sich von dem zweiten Wert unterscheidet.
  19. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 15, wobei der erste Rundenkern (121_1) konfiguriert ist, um eine erste virtuelle Rundenoperation durchzuführen, während die zweite reale Rundenoperation durchgeführt wird, nachdem die erste reale Rundenoperation vollendet ist.
  20. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 15, ferner aufweisend ein Register, welches konfiguriert ist, um das Ergebnis der ersten realen Rundenoperation und ein Ergebnis der ersten virtuellen Rundenoperation zu speichern.
  21. Verschlüsselungsschaltung (100, 1150, 1250, 1350), die Folgendes aufweist: einen ersten Rundenkern (121_1), welcher konfiguriert ist, um eine erste reale Rundenoperation auf Eingabedaten durchzuführen; einen zweiten Rundenkern (121_2), welcher konfiguriert ist, um eine zweite reale Rundenoperation auf den Eingabedaten basierend auf einem Ergebnis der ersten realen Rundenoperation durchzuführen; und einen Schlüsselzeitplaner (125), welcher konfiguriert ist, um einen Rundenschlüssel für jeden des ersten Rundenkerns (121_1) und des zweiten Rundenkerns (121_2) vorzusehen; wobei der zweite Rundenkern (121_2) konfiguriert ist, um weiterhin eine virtuelle Rundenoperation basierend auf einem von Dummy-Daten (VPT) und einem virtuellen Rundenschlüssel, welcher von dem Schlüsselzeitplaner (125) vorgesehen ist, durchzuführen; und wobei die erste reale Rundenoperation parallel mit der virtuellen Rundenoperation des zweiten Rundenkerns (121_2) durchgeführt wird.
  22. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 21, wobei der zweite Rundenkern (121_2) konfiguriert ist, um die virtuelle Rundenoperation in einer designierten virtuellen Operationsperiode (VOP, VOP1, VOP2) durchzuführen.
  23. Verschlüsselungsschaltung (100, 1150, 1250, 1350) nach Anspruch 21, wobei der zweite Rundenkern (121_2) konfiguriert ist, um die virtuelle Rundenoperation durchzuführen während die erste reale Rundenoperation durchgeführt wird, vor einem Durchführen der zweiten realen Rundenoperation.
DE102019119831.3A 2018-10-05 2019-07-23 Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen Pending DE102019119831A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0119306 2018-10-05
KR1020180119306A KR102628010B1 (ko) 2018-10-05 2018-10-05 가상 암호화 연산을 수행하는 암호화 회로

Publications (1)

Publication Number Publication Date
DE102019119831A1 true DE102019119831A1 (de) 2020-04-09

Family

ID=69886693

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019119831.3A Pending DE102019119831A1 (de) 2018-10-05 2019-07-23 Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen

Country Status (4)

Country Link
US (1) US11328097B2 (de)
KR (1) KR102628010B1 (de)
CN (1) CN111008407A (de)
DE (1) DE102019119831A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11177933B2 (en) * 2019-03-24 2021-11-16 Google Llc Side channel timing attack mitigation in securing data in transit
JP7486150B2 (ja) * 2020-01-29 2024-05-17 国立研究開発法人情報通信研究機構 秘密鍵共有システム及び秘密鍵共有方法
IT202000013390A1 (it) * 2020-06-05 2021-12-05 Milano Politecnico Una piattaforma informatica per prevenire attacchi ai canali laterali
US11599679B2 (en) * 2020-06-23 2023-03-07 Arm Limited Electromagnetic and power noise injection for hardware operation concealment
EP4315125A1 (de) * 2021-03-29 2024-02-07 Nvidia Corporation Umfassenden verschleierte kryptographische beschleuniger und operationen davon

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10000503A1 (de) * 2000-01-08 2001-07-12 Philips Corp Intellectual Pty Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
US7321910B2 (en) * 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US8060755B2 (en) * 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
JP2007195132A (ja) 2005-12-20 2007-08-02 Sony Corp 暗号処理装置
US7406407B2 (en) * 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
WO2009029842A1 (en) 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
US9317286B2 (en) 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
JP2010288233A (ja) * 2009-06-15 2010-12-24 Toshiba Corp 暗号処理装置
US9141831B2 (en) * 2010-07-08 2015-09-22 Texas Instruments Incorporated Scheduler, security context cache, packet processor, and authentication, encryption modules
US9294266B2 (en) 2013-06-27 2016-03-22 Qualcomm Incorporated Method and apparatus to encrypt plaintext data
US9485088B2 (en) * 2014-10-31 2016-11-01 Combined Conditional Access Development And Support, Llc Systems and methods for dynamic data masking
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US10234930B2 (en) * 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US10103873B2 (en) 2016-04-01 2018-10-16 Intel Corporation Power side-channel attack resistant advanced encryption standard accelerator processor
KR102401088B1 (ko) 2017-08-02 2022-05-24 삼성전자주식회사 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법
US20190116022A1 (en) 2017-10-16 2019-04-18 Samsung Electronics Co., Ltd. Encryption device and operation method thereof
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution

Also Published As

Publication number Publication date
US20200110906A1 (en) 2020-04-09
US11328097B2 (en) 2022-05-10
CN111008407A (zh) 2020-04-14
KR20200039405A (ko) 2020-04-16
KR102628010B1 (ko) 2024-01-22

Similar Documents

Publication Publication Date Title
DE102019119831A1 (de) Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE60117230T2 (de) Stromverschlüsselungsanwendungsbeschleuniger und zugehöriges Verfahren
DE102015008012A1 (de) SM4-Beschleunigungsprozessoren, Verfahren, Systeme und Anweisungen
DE112008003855B4 (de) System und Verfahren zum Bereitstellen von sicherem Zugriff auf einen Systemspeicher
DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
DE60302512T2 (de) Feistel-Verschlüsselungsverfahren und -vorrichtung mit Schutz gegen DPA-Angriffe
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE112014000329T5 (de) Anweisung zum Ausführen einer Operation zum Generieren einer pseudozufälligen Zahl
DE102014113300A1 (de) Datenspeicherung im persistenten Speicher
DE112014000845T5 (de) Anweisung zum Ausführen einer Seed-Operation für eine pseudozufällige Zahl
DE102018115439A1 (de) Technologien zur fehlertoleranten Berechnung von Elliptische-Kurven-Digitalsignaturen
DE112013000357T5 (de) System zum Authentifizieren einer Annahme einer Zeilenfolge durch einen Automaten
US20160062920A1 (en) Address-dependent key generation with a substitution-permutation network
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
DE112016004365T5 (de) Sichere modularpotenzierungsprozessoren, verfahren, systeme und instruktionen
DE102018125497A1 (de) Verschlüsselungsvorrichtung und Betriebsverfahren dafür
DE102019110440A1 (de) Replay-Schutz für Speicher auf der Basis eines Schlüsselauffrischens
DE102019110501A1 (de) Fehlerkorrekturcode-speichersicherheit
DE102018100280A1 (de) Technologien zur beschleunigung von elliptische-kurven-kryptographie-hardware
DE60125673T2 (de) Verfahren und Vorrichtung zur Ausführung einer kryptographischen Funktion
DE102009007246A1 (de) Pseudozufallszahlengenerator und Verfahren zum Erzeugen einer Pseudozufallszahlenbitsequenz
Liu et al. Cube-based cryptanalysis of Subterranean-SAE
DE112018002723T5 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed