DE102013102722A1 - Verfahren zum Erzeugen einer zufälligen Permutation, Zufallspermutations-Erzeugungsvorrichtung und Verschlüsselungs-/Entschlüsselungsvorrichtung mit derselben - Google Patents

Verfahren zum Erzeugen einer zufälligen Permutation, Zufallspermutations-Erzeugungsvorrichtung und Verschlüsselungs-/Entschlüsselungsvorrichtung mit derselben Download PDF

Info

Publication number
DE102013102722A1
DE102013102722A1 DE102013102722A DE102013102722A DE102013102722A1 DE 102013102722 A1 DE102013102722 A1 DE 102013102722A1 DE 102013102722 A DE102013102722 A DE 102013102722A DE 102013102722 A DE102013102722 A DE 102013102722A DE 102013102722 A1 DE102013102722 A1 DE 102013102722A1
Authority
DE
Germany
Prior art keywords
matrix
row
column
numbers
changed
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
DE102013102722A
Other languages
English (en)
Inventor
Yong-Ki Lee
Hong-Mook Choi
Jong-Hoon Shin
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 DE102013102722A1 publication Critical patent/DE102013102722A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/766Generation of all possible permutations
    • 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
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Erzeugen einer zufälligen Permutation durch ein Anordnen einer Sequenz von N Zahlen in einer Matrix, Durchführen von Zufalls-Anordnungsoperationen auf den Zeilen der Matrix, um eine Zwischenmatrix zu erzeugen, Durchführen von Zufalls-Anordnungsoperationen auf den Spalten der Zwischenmatrix, um eine zweite Zwischenmatrix zu erzeugen, und Anordnen der N Zahlen der zweiten Zwischenmatrix als eine neu angeordnete Sequenz der N Zahlen.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG(EN)
  • Diese Anmeldung beansprucht die Priorität der koreanischen Patentanmeldung Nr. 10-2012-0033797 , welche am 2. April 2012 beim Koreanischen Amt für Gewerblichen Rechtsschutz (KIKO = Korean Intellectual Property Office) eingereicht wurde, deren Inhalte hierin durch Bezugnahme in ihrer Gesamtheit eingebunden sind.
  • HINTERGRUND
  • 1. Gebiet
  • Verfahren und Vorrichtungen, welche mit den beispielhaften Ausführungsformen konsistent sind, beziehen sich auf Erzeugungstechniken für eine zufällige Permutation und genauer auf ein Verfahren zum Erzeugen einer zufälligen Permutation basierend auf einer binären Zufallsquelle, einer Zufallspermuations-Erzeugungsvorrichtung und eine Verschlüsselungs-/Entschlüsselungsvorrichtung, welche die Zufallspermutations-Erzeugungsvorrichtung hat.
  • 2. Beschreibung des Standes der Technik
  • In letzter Zeit wird aufgrund einer zunehmenden Wichtigkeit der Datensicherheit ein Sicherheitsalgorithmus auf Daten angewandt, welche durch eine elektronische Vorrichtung verwendet werden. Im Allgemeinen muss, da eine Ausführung des Sicherheitsalgorithmus eine zufällige Permutation benötigt, eine Verschlüsselungs-/Entschlüsselungsvorrichtung eine Zufallspermutations-Erzeugungsvorrichtung aufweisen, welche die zufällige Permutation basierend auf einer binären Zufallsquelle (d. h. einer Quelle, welche eine binäre Form hat) erzeugt, wobei die Zufallspermutations-Erzeugungsvorrichtung durch Hardware oder Software implementiert ist.
  • Herkömmliche Zufallspermutations-Erzeugungsvorrichtungen können die zufällige Permutation basierend auf einem herkömmlichen Zufallspermutations-Erzeugungsverfahren wie beispielsweise einem Fisher und Yates-Verfahren etc. erzeugen. Es ist jedoch schwierig, das herkömmliche Zufallspermutations-Erzeugungsverfahren in Hardware zu implementieren. Zusätzlich kann, wenn das herkömmliche Zufallspermutations-Erzeugungsverfahren durch Hardware implementiert wird, die Hardware-Komplexität hoch sein.
  • KURZFASSUNG
  • Aspekte der beispielhaften Ausführungsformen sehen ein Verfahren zum Erzeugen einer zufälligen Permutation vor, welches in der Lage ist, eine geringe Hardware-Komplexität zu haben, und welches in der Lage ist, eine binäre Zufallsquelle effizient zu verwenden, wenn es eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt.
  • Aspekte der beispielhaften Ausführungsformen sehen auch eine Zufallspermutations-Erzeugungsvorrichtung vor, welche in der Lage ist, eine binäre Zufallsquelle effizient zu verwenden, welche eine geringe Hardware-Komplexität hat.
  • Aspekte der beispielhaften Ausführungsformen sehen weiterhin eine Verschlüsselungs-/Entschlüsselungsvorrichtung vor, welche die Zufallspermutations-Erzeugungsvorrichtung hat.
  • Gemäß einem Aspekt einer beispielhaften Ausführungsform ist ein Verfahren zum Erzeugen einer zufälligen Permutation vorgesehen, welches einen Schritt des Anordnens einer Sequenz von N Zahlen in einer Matrix, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, einen Schritt des Erzeugens einer ersten geänderten Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der Matrix, wobei die erste Zufalls-Anordnungsoperation basierend auf einer Zeilen-Zufallsnummer durchgeführt wird, einen Schritt des Erzeugens einer zweiten geänderten Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Spalte der ersten geänderten Matrix, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer Spalten-Zufallszahl durchgeführt wird, und einen Schritt des Ausgebens der N Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der zweiten geänderten Matrix, als eine neu angeordnete Sequenz der Sequenz von N Zahlen aufweist.
  • Die N Zahlen können eine binäre Form haben.
  • Die Matrix kann eine quadratische Matrix oder eine rechteckige Matrix sein.
  • Der Schritt des Erzeugens der ersten geänderten Matrix kann einen Schritt des Rotierens bzw. Drehens der N Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um eine Zeilen-Zufallszahl in einer Zeilenrichtung in der Matrix aufweisen.
  • Der Schritt des Erzeugens der zweiten geänderten Matrix kann ein Schritt des des Rotierens bzw. Drehens der N Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, um eine Spalten-Zufallszahl in einer Spaltenrichtung in der ersten geänderten Matrix aufweisen.
  • Die Zeilen-Zufallszahl kann unabhängig für jede Zeile der Matrix ausgewählt werden.
  • Ein Bereich der Zeilen-Zufallszahl kann zwischen 0 und 2[logj] – 1 sein, wobei j eine Anzahl der N Zahlen ist, welche in jeder Zeile der Matrix angeordnet sind.
  • Die Spalten-Zufallszahl kann für jede Spalte der ersten geänderten Matrix unabhängig ausgewählt werden.
  • Ein Bereich der Spalten-Zufallszahl kann zwischen 0 und 2[logk] – 1 sein, wobei k eine Anzahl der N Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind.
  • Der Schritt des Erzeugens der ersten geänderten Matrix kann einen Schritt des Erzeugens einer Mehrzahl von Zeilen-Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Zeilen-Untermatrizen, einen Schritt des Erzeugens einer Mehrzahl von geänderten Zeilen-Untermatrizen durch ein Durchführen einer Rotations- bzw. Drehoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von Zeilen-Untermatrizen und einen Schritt des Ausgebens der N Zahlen, welche in jeder Mehrzahl von geänderten Zeilen-Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix aufweisen.
  • Der Schritt des Erzeugens der zweiten geänderten Matrix kann einen Schritt des Erzeugens einer Mehrzahl von Spalten-Untermatrizen durch ein Anordnen der N Zahlen jeder Spalte der ersten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Spalten-Untermatrizen, einen Schritt des Erzeugens einer Mehrzahl von geänderten Spalten-Untermatrizen durch ein Durchführen einer Rotations- bzw. Drehoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von Spalten-Untermatrizen und einen Schritt des Ausgebens der N Zahlen, welche in jeder Mehrzahl von geänderten Spalten-Untermatrizen angeordnet sind, als jede Spalte der zweiten geänderten Matrix aufweisen.
  • Gemäß einem Aspekt einer beispielhaften Ausführungsform ist ein Verfahren zum Erzeugen einer zufälligen Permutation vorgesehen, welches einen Schritt eines Anordnens einer Sequenz von N Zahlen in einer Matrix, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, einen Schritt des Erzeugens einer ersten geänderten Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der Matrix, wobei die erste Zufalls-Anordnungsoperation basierend auf einer ersten Zeilen-Zufallszahl durchgeführt wird, einen Schritt des Erzeugens einer zweiten geänderten Matrix, welche einer transponierten Matrix der ersten geänderten Matrix entspricht, einen Schritt des Erzeugens einer dritten geänderten Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der zweiten geänderten Matrix, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer zweiten Zeilen-Zufallszahl durchgeführt wird, einen Schritt des Erzeugens einer vierten geänderten Matrix, welche einer transponierten Matrix der dritten geänderten Matrix entspricht, und einen Schritt des Ausgebens der N Zahlen, welche in der vierten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der vierten geänderten Matrix als eine neu angeordnete Sequenz der Sequenz von N Zahlen aufweist.
  • Die Matrix kann eine quadratische Matrix oder eine rechteckige Matrix sein.
  • Der Schritt des Erzeugens der ersten geänderten Matrix kann einen Schritt des Rotierens bzw. Drehens der N Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um die erste Zeilen-Zufallszahl in einer Zeilenrichtung in der Matrix aufweisen.
  • Der Schritt des Erzeugens der dritten geänderten Matrix kann einen Schritt des Rotierens der N Zahlen, welche in jeder Zeile der zweiten geänderten Matrix angeordnet sind, um die zweite Zeilen-Zufallszahl in der Zeilenrichtung der zweiten geänderten Matrix aufweisen.
  • Die erste Zeilen-Zufallszahl kann für jede Zeile der Matrix unabhängig ausgewählt werden.
  • Die zweite Zeilen-Zufallszahl kann für jede Zeile der zweiten geänderten Matrix unabhängig ausgewählt werden.
  • Der Schritt des Erzeugens der ersten geänderten Matrix kann einen Schritt des Erzeugens einer Mehrzahl von ersten Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von ersten Untermatrizen, einen Schritt des Erzeugens einer Mehrzahl von ersten geänderten Untermatrizen durch ein Durchführen einer Rotations- bzw. Drehoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von ersten Untermatrizen und einen Schritt des Ausgebens der N Zahlen, welche in jeder Mehrzahl von ersten geänderten Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix aufweisen.
  • Der Schritt des Erzeugens der dritten geänderten Matrix kann einen Schritt des Erzeugens einer Mehrzahl von zweiten Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der zweiten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von zweiten Untermatrizen, einen Schritt des Erzeugens einer Mehrzahl von zweiten geänderten Untermatrizen durch ein Durchführen einer Rotations- bzw. Drehoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von zweiten Untermatrizen und einen Schritt des Ausgebens der N Zahlen, welche in jeder Mehrzahl von zweiten geänderten Untermatrizen angeordnet sind, als jede Zeile der dritten geänderten Matrix aufweisen.
  • Gemäß einem Aspekt einer beispielhaften Ausführungsform ist eine Zufallspermutations-Erzeugungsvorrichtung vorgesehen, welche eine Permutations-Eingabeeinheit, welche konfiguriert ist, um eine anfängliche Permutationssequenz von N Zahlen zu empfangen, wobei N eine ganze Zahl gleich zu oder größer gleich 2 ist, und konfiguriert ist, um die N Zahlen der anfänglichen Permutationssequenz in einer Matrix anzuordnen; eine erste Matrix-Änderungseinheit, welche konfiguriert ist, um eine erste geänderte Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der Matrix zu erzeugen, wobei die erste Zufalls-Anordnungsoperation basierend auf einer Zeilen-Zufallsnummer durchgeführt wird; eine zweite Matrix-Änderungseinheit, welche konfiguriert ist, um eine zweite geänderte Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Spalte der ersten geänderten Matrix zu erzeugen, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer Spalten-Zufallszahl durchgeführt wird, und eine Permutations-Ausgabeeinheit aufweist, welche konfiguriert ist, um eine letztendliche bzw. finale Permutationssequenz der N Zahlen durch ein Ausgeben der N Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der zweiten geänderten Matrix als die finale bzw. letztendliche Permutationssequenz, welche eine neu angeordnete Sequenz der anfänglichen Permutationssequenz ist, zu erzeugen.
  • Die erste Matrix-Änderungseinheit kann die N Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um die Zeilen-Zufallszahl in einer Zeilenrichtung der Matrix rotieren, wobei die Zeilen-Zufallszahl unabhängig für jeder Zeile der Matrix ausgewählt wird.
  • Die zweite Matrix-Änderungseinheit kann die N Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, um die Spalten-Zufallszahl in einer Spaltenrichtung der ersten geänderten Matrix rotieren, wobei die Spalten-Zufallszahl unabhängig für jede Spalte der ersten geänderten Matrix ausgewählt wird.
  • Die erste Matrix-Änderungseinheit kann eine Mehrzahl von Zeilen-Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Zeilen-Untermatrizen erzeugen, sie kann eine Mehrzahl von geänderten Zeilen-Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte der Mehrzahl von Zeilen-Untermatrizen erzeugen, und sie kann die N Zahlen, welche in jeder der Mehrzahl von geänderten Zeilen-Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix ausgeben.
  • Die zweite Matrix-Änderungseinheit kann eine Mehrzahl von Spalten-Untermatrizen durch ein Anordnen der N Zahlen jeder Spalte der ersten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Spalten-Untermatrizen erzeugen, sie kann eine Mehrzahl von geänderten Spalten-Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte der Mehrzahl von Spalten-Untermatrizen erzeugen, und sie kann die N Zahlen, welche in jeder der Mehrzahl von geänderten Spalten-Untermatrizen angeordnet sind, als jede Spalte der zweiten geänderten Matrix ausgeben.
  • Gemäß einem Aspekt einer beispielhaften Ausführungsform ist eine Zufallspermutations-Erzeugungsvorrichtung vorgesehen, welche eine Permutations-Eingabeeinheit, welche konfiguriert ist, um eine anfängliche Permutationssequenz von N Zahlen zu empfangen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, und konfiguriert ist, um die N Zahlen der anfänglichen Permutationssequenz in einer Matrix anzuordnen, eine erste Matrix-Änderungseinheit, welche konfiguriert ist, um eine erste geänderte Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der Matrix zu erzeugen, wobei die erste Zufalls-Anordnungsoperation basierend auf einer ersten Zeilen-Zufallszahl durchgeführt wird, eine erste Matrix-Transponiereinheit, welche eine zweite geänderte Matrix, die einer transponierten Matrix der ersten geänderten Matrix entspricht, erzeugt, eine zweite Matrix-Änderungseinheit, welche konfiguriert ist, um eine dritte geänderte Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der zweiten geänderten Matrix zu erzeugen, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer zweiten Zeilen-Zufallszahl durchgeführt wird, eine zweite Matrix-Transponiereinheit, welche eine vierte geänderte Matrix erzeugt, welche einer transponierten Matrix der dritten geänderten Matrix entspricht, und eine Permutations-Ausgabeeinheit aufweist, welche konfiguriert ist, um eine letztendliche Permutationssequenz der N Zahlen durch ein Ausgeben der N Zahlen zu erzeugen, welche in der vierten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der vierten geänderten Matrix als die letztendliche Permutationssequenz, welche eine neu angeordnete Sequenz der anfänglichen Permutationssequenz ist.
  • Die erste Matrix-Änderungseinheit kann die N Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um die erste Zeilen-Zufallszahl in einer Zeilenrichtung der Matrix rotieren, wobei die erste Zeilen-Zufallsanzahl unabhängig für jede Zeile der Matrix ausgewählt wird.
  • Die zweite Matrix-Änderungseinheit kann die N Zahlen, welche in jeder Zeile der zweiten geänderten Matrix angeordnet sind, um die zweite Zeilen-Zufallszahl in einer Zeilenrichtung der zweiten geänderten Matrix rotieren, wobei die zweite Zeilen-Zufallsanzahl unabhängig für jede Zeile der zweiten geänderten Matrix ausgewählt wird.
  • Die erste Matrix-Änderungseinheit kann eine Mehrzahl von ersten Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Untermatrizen erzeugen, sie kann eine Mehrzahl von ersten geänderten Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von ersten Untermatrizen erzeugen, und sie kann die N Zahlen, welche in jeder der Mehrzahl von ersten geänderten Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix ausgeben.
  • Die zweite Matrix-Änderungseinheit kann eine Mehrzahl von zweiten Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der zweiten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von zweiten Untermatrizen erzeugen, sie kann eine Mehrzahl von zweiten geänderten Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von zweiten Untermatrizen erzeugen, und sie kann die N Zahlen, welche in jeder der Mehrzahl von zweiten geänderten Untermatrizen angeordnet sind, als jede Zeile der dritten geänderten Matrix ausgeben.
  • Gemäß einem Aspekt einer beispielhaften Ausführungsform ist eine Verschlüsselungs-/Entschlüsselungsvorrichtung vorgesehen, welche eine Schlüssel-Ablaufkoordinationseinheit, welche konfiguriert ist, um eine Mehrzahl von Rundenschlüsseln basierend auf einem Eingabeschlüssel zu erzeugen, wobei die Rundenschlüssel zum Durchführen jeder einer Mehrzahl von Verschlüsselungs-/Entschlüsselungsrunden sind, eine Blockrundeneinheit, welche konfiguriert ist, um durch ein Durchführen der Mehrzahl von Verschlüsselungs-/Entschlüsselungsrunden basierend auf der Mehrzahl von Rundenschlüsseln einen Klartext zu verschlüsseln oder einen verschlüsselten Text zu entschlüsseln, eine Zufallspermutations-Erzeugungseinheit, welche konfiguriert ist, um eine Verarbeitung von Schlüssel-S-Boxen in der Schlüssel-Ablaufkoordinationseinheit oder eine Verarbeitung von Daten-S-Boxen in der Blockrundeneinheit räumlich zufällig anzuordnen durch ein Durchführen einer Zufalls-Anordnungsoperation auf einer anfänglichen Permutationssequenz von N Zahlen unter Verwendung einer Matrix, um eine letztendliche Permutationssequenz der N Zahlen zu erzeugen, welche eine neu angeordnete Sequenz der ursprünglichen Permutationssequenz ist, und eine fortgeschrittene bzw. hoch entwickelte Verschlüsselungsstandard(AES = Advanced Encryption Standard)-Controllereinheit, welche konfiguriert ist, um die Schlüssel-Ablaufkoordinationseinheit, die Blockrundeneinheit und die Zufallspermutations-Erzeugungseinheit basierend auf einem AES-Algorithmus zu steuern, aufweisen kann.
  • Die Zufallspermutations-Erzeugungseinheit kann das Verarbeiten der Schlüssel-S-Boxen in der Schlüssel-Ablaufkoordinationseinheit oder die Verarbeitung der Daten-S-Boxen in der Blockrundeneinheit zeitlich zufällig anordnen.
  • Die Zufallspermutations-Erzeugungseinheit kann eine Permutations-Eingabeeinheit, welche konfiguriert ist, um die anfängliche Permutation, welche die N Zahlen hat, zu empfangen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, welche konfiguriert ist, um die N Zahlen der anfänglichen Permutationssequenz in der Matrix anzuordnen; eine erste Matrix-Änderungseinheit, welche konfiguriert ist, um eine erste geänderte Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der vorbestimmten Matrix zu erzeugen, wobei die erste Zufalls-Anordnungsoperation basierend auf einer Zeilen-Zufallszahl durchgeführt wird, eine zweite Matrix-Änderungseinheit, welche konfiguriert ist, um eine zweite geänderte Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Spalte der ersten geänderten Matrix zu erzeugen, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer Spalten-Zufallszahl durchgeführt wird, und eine Permutations-Ausgabeeinheit aufweisen, welche konfiguriert ist, um die letztendliche Permutationssequenz der N Zahlen durch ein Ausgeben der N Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der zweiten geänderten Matrix als die letztendliche Permutationssequenz zu erzeugen.
  • Die Zufallspermutations-Erzeugungseinheit kann eine Permutations-Eingabeeinheit, welche konfiguriert ist, um die anfängliche Permutationssequenz, welche die N Zahlen hat, zu empfangen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, und welche konfiguriert ist, um die N Zahlen der anfänglichen Permutationssequenz in der Matrix anzuordnen, eine erste Matrix-Änderungseinheit, welche konfiguriert ist, um eine erste geänderte Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der vorbestimmten Matrix zu erzeugen, wobei die erste Zufalls-Anordnungsoperation basierend auf einer ersten Zeilen-Zufallszahl durchgeführt wird, eine erste Matrix-Transponiereinheit, welche eine zweite geänderte Matrix erzeugt, welche einer transponierten Matrix der ersten geänderten Matrix entspricht, eine zweite Matrix-Änderungseinheit, welche konfiguriert ist, um eine dritte geänderte Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der zweiten geänderten Matrix zu erzeugen, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer zweiten Zeilen-Zufallszahl durchgeführt wird, eine zweite Matrix-Transponiereinheit, welche eine vierte geänderte Matrix erzeugt, welche einer transponierten Matrix der dritten geänderten Matrix entspricht, und eine Permutations-Ausgabeeinheit aufweisen, welche konfiguriert ist, um die letztendliche Permutationssequenz der N Zahlen durch ein Ausgeben der N Zahlen, welche in der vierten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der vierten geänderten Matrix als die letztendlichen Permutationssequenz zu erzeugen.
  • Demnach kann ein Verfahren zum Erzeugen einer zufälligen Permutation gemäß den beispielhaften Ausführungsformen eine zufällige Permutation durch ein Durchführen einer Zufallspermutationsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) in jeder Zeile und eine Zufalls-Anordnungsoperation in jeder Spalte auf einer Matrix, welche einer anfänglichen Permutation entspricht, erzeugen. Als ein Ergebnis kann das Verfahren zum Erzeugen einer zufälligen Permutation durch eine einfache Struktur von Multiplexer implementiert werden, wenn es durch Hardware implementiert wird, und es kann eine binäre Zufallsquelle effizient nutzen bzw. verwenden, welche auf jede Zeile und jede Spalte der Matrix angewandt wird.
  • Zusätzlich kann eine Zufallspermutations-Erzeugungsvorrichtung gemäß den beispielhaften Ausführungsformen eine zufällige Permutation erzeugen durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile und eine Zufalls-Anordnungsoperation in jeder Spalte auf einer Matrix, welche einer anfänglichen Permutation entspricht. Als ein Ergebnis kann die Zufallspermutations-Erzeugungsvorrichtung durch eine einfache Struktur von Multiplexer implementiert werden und kann effizient eine binäre Zufallsquelle verwenden, welche auf jede Zeile und jede Spalte der Matrix angewandt wird.
  • Weiterhin kann eine Verschlüsselungs-/Entschlüsselungsvorrichtung gemäß den beispielhaften Ausführungsformen eine Verarbeitung von Daten-S-Boxen, welche durch eine Blockrundeneinheit in jeder Runde durchgeführt wird und/oder eine Verarbeitung von Schlüssel-S-Boxen, welche durch eine Schlüssel-Ablaufkoordinationseinheit in jeder Runde durchgeführt wird, räumlich und/oder zeitlich zufällig anordnen. Als ein Ergebnis kann eine hohe Datensicherheit gegen eine Attacke von außen, wie beispielsweise Side-Channel-Analysis (SCA), etc. erhalten bzw. erreicht werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Veranschaulichende, nicht beschränkende beispielhafte Ausführungsformen werden deutlicher aus der folgenden detaillierten Beschreibung, zusammengenommen in Verbindung mit den beigefügten Zeichnungen verstanden werden, in welchen:
  • 1 ein Flussdiagramm ist, welches ein Verfahren zum Erzeugen einer zufälligen Permutation gemäß einer beispielhaften Ausführungsform veranschaulicht.
  • 2 ein Diagramm ist, welches eine quadratische Matrix veranschaulicht, welche für ein Verfahren der 1 verwendet wird.
  • 3 ein Diagramm ist, welches eine rechteckige Matrix veranschaulicht, welche für ein Verfahren der 1 verwendet wird.
  • 4 ein Flussdiagramm ist, welches ein Beispiel veranschaulicht, in welchem eine Rotationsoperation durch ein Verfahren der 1 durchgeführt wird.
  • 5 bis 9 Diagramme sind, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch eine Rotationsoperation basierend auf einer quadratischen Matrix in 4 erzeugt wird.
  • 10 ein Schaltbild ist, welches ein Beispiel veranschaulicht, in welchem eine zufällige Permutation durch eine Rotationsoperation basierend auf einer quadratischen Matrix in 4 erzeugt wird.
  • 11 bis 15 Diagramme sind, welche ein Beispiel veranschaulichen, in welchen eine zufällige Permutation durch eine Rotationsoperation basierend auf einer rechteckigen Matrix in 4 erzeugt wird.
  • 16 ein Schaltbild ist, welches ein Beispiel veranschaulicht, in welchem eine Zufallspermutation durch eine Rotationsoperation basierend auf einer rechteckigen Matrix in 4 erzeugt wird.
  • 17 ein Flussdiagramm ist, welches ein Beispiel veranschaulicht, in welchem eine Mischoperation durch ein Verfahren der 1 durchgeführt wird.
  • 18 bis 23 Diagramme sind, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch eine Mischoperation in 17 erzeugt wird.
  • 24 ein Schaltbild ist, welches ein Beispiel veranschaulicht, in welchem eine zufällige Permutation durch eine Mischoperation in 17 erzeugt wird.
  • 25 eine Darstellung ist, welche eine Hardware-Komplexität veranschaulicht, wenn ein Verfahren der 1 durch Hardware implementiert ist.
  • 26 ein Flussdiagramm ist, welches ein Verfahren zum Erzeugen einer zufälligen Permutation gemäß einer beispielhaften Ausführungsform veranschaulicht.
  • 27 bis 32 Diagramme sind, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch ein Verfahren der 26 erzeugt wird.
  • 33 ein Blockdiagramm ist, welches eine Zufallspermutations-Erzeugungsvorrichtung gemäß beispielhaften Ausführungsformen veranschaulicht.
  • 34 ein Blockdiagramm ist, welches eine Zufallspermutations-Erzeugungsvorrichtung gemäß einer beispielhaften Ausführungsform veranschaulicht.
  • 35 ein Blockdiagramm ist, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung gemäß einer beispielhaften Ausführungsform veranschaulicht;
  • 36 ein Blockdiagramm ist, welches ein Beispiel veranschaulicht, in welchem eine Verschlüsselungsoperation durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 durchgeführt wird.
  • 37 ein Blockdiagramm ist, welches ein Beispiel veranschaulicht, in welchem eine Entschlüsselungsoperation durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 durchgeführt wird.
  • 38 ein Blockdiagramm ist, welches ein Beispiel eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 verwendet wird.
  • 39 ein Diagramm ist, welches ein Beispiel veranschaulicht, in welchem eine Verarbeitung von Daten-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • 40 ein Diagramm ist, welches ein anderes Beispiel veranschaulicht, in welchem eine Verarbeitung von Daten-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • 41 ein Diagramm ist, welches noch ein anderes Beispiel veranschaulicht, in welchem eine Verarbeitung von Daten-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • 42 ein Diagramm ist, welches ein Beispiel veranschaulicht, in welchem eine Verarbeitung von Schlüssel-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • 43 ein Blockdiagramm ist, welches ein anderes Beispiel eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 verwendet wird.
  • 44 ein Blockdiagramm ist, welches noch ein anderes Beispiels eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 eingesetzt bzw. verwendet wird.
  • 45 ein Blockdiagramm ist, welches noch ein anderes Beispiels eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 verwendet wird.
  • 46 ein Blockdiagramm ist, welches ein Beispiel eines Computersystems bzw. Berechnungssystems veranschaulicht, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 hat.
  • 47 ein Blockdiagramm ist, welches ein anderes Beispiel eines Berechnungssystems veranschaulicht, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 hat.
  • 48 ein Diagramm ist, welches ein Beispiel eines Smart-Phones veranschaulicht, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 hat.
  • 49 ein Diagramm ist, welches ein Beispiel einer Smart-Card veranschaulicht, welche eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 hat.
  • DETAILLIERTE BESCHREIBUNG DER BEISPIELHAFTEN AUSFÜHRUNGSFORMEN
  • Verschiedene beispielhafte Ausführungsformen werden hierin nachstehend vollständiger unter Bezugnahme auf die beigefügten Zeichnungen beschrieben werden, in welchen einige beispielhafte Ausführungsformen gezeigt sind. Die Ausführungsformen können jedoch in vielen verschiedenen Formen ausgeführt werden und sollten nicht als auf die hierin erläuterten beispielhaften Ausführungsformen beschränkt angesehen werden. Vielmehr sind diese beispielhaften Ausführungsformen vorgesehen, so dass diese Offenbarung gründlich bzw. sorgfältig und vollständig sein wird, und Fachleuten den Umfang der Offenbarung vollständig vermitteln wird. In den Zeichnungen können die Größen und relativen Größen von Schichten und Bereichen zur Klarheit überhöht sein. Gleiche Bezugszeichen beziehen sich durchgehend auf gleiche Elemente.
  • Es wird verstanden werden, dass, obwohl die Wortlaute erster/erste/erstes, zweiter/zweite/zweites, dritter/dritte/drittes etc. hierin verwendet werden können, um verschiedene Elemente zu beschreiben, diese Elemente durch diese Wortlaute nicht beschränkt werden sollten. Diese Wortlaute werden lediglich verwendet, um ein Element von einem anderen zu unterscheiden. Demnach könnte ein erstes Element, welches untenstehend diskutiert wird, als ein zweites Element bezeichnet werden, ohne von den Lehren von beispielhaften Ausführungsformen abzuweichen. Wie hierin verwendet, schließt der Wortlaut „und/oder” irgendeine und alle Kombination(en) von einem oder mehreren der zugeordneten aufgelisteten Gegenstände ein.
  • Es wird verstanden werden, dass wenn auf ein Element Bezug genommen wird als „verbunden” oder „gekoppelt” mit einem anderen Element, es direkt mit dem anderen Element verbunden oder gekoppelt sein kann, oder dass dazwischenliegende Elemente gegenwärtig sein können. Im Gegensatz dazu sind, wenn auf ein Element Bezug genommen wird als „direkt verbunden” oder „direkt gekoppelt” mit einem anderen Element, keine dazwischenliegenden Elemente vorhanden. Andere Worte, die verwendet werden, um die Beziehung zwischen Elementen oder Schichten zu beschreiben, sollten auf eine ähnliche Weise interpretiert werden (beispielsweise „zwischen” gegenüber „direkt zwischen”, „benachbart” gegenüber „direkt benachbart” etc.).
  • Die Terminologie, welche hierin verwendet wird, ist nur zum Zwecke des Beschreibens bestimmter Ausführungsformen und ist nicht vorgesehen, um für beispielhafte Ausführungsformen beschränkend zu sein. Wie hierin verwendet, sind die Singularformen „einer/eine/eines” und „der/die/das” vorgesehen, um ebenso die Pluralformen zu umfassen, sofern der Kontext bzw. Zusammenhang nicht deutlich Anderes anzeigt. Es wird weiterhin verstanden werden, dass die Wortlaute „weist auf” und/oder „aufweisend”, wenn sie in dieser Beschreibung verwendet werden, die Anwesenheit von genannten Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bzw. Bestandteilen spezifizieren, jedoch die Anwesenheit oder Hinzufügung von einem oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten bzw. Bestandteilen und/oder Gruppen davon nicht ausschließen.
  • Solange nicht anderweitig definiert, haben alle Begriffe (einschließlich technischer und wissenschaftlicher Begriffe), welche hierin verwendet werden, dieselbe Bedeutung wie sie allgemein durch einen Fachmann in dem Gebiet, zu welchem diese Offenbarung gehört, verstanden wird. Es wird weiter verstanden werden, dass Begriffe wie diejenigen, die in gemeinhin verwendeten Wörterbüchern definiert sind, als die Bedeutung habend interpretiert werden sollen, welche konsistent ist mit ihrer Bedeutung in dem Kontext des relevanten bzw. maßgeblichen Bereiches, und sie werden nicht in einem idealisierten oder übermäßig formalen Sinne interpretiert werden, soweit nicht ausdrücklich hierin definiert.
  • 1 ist ein Flussdiagramm, welches ein Verfahren zum Erzeugen einer zufälligen Permutation gemäß einer beispielhaften Ausführungsform veranschaulicht. 2 ist ein Diagramm, welches eine quadratische Matrix veranschaulicht, welche für ein Verfahren der 1 verwendet wird. 3 ist ein Diagramm, welches eine rechteckige Matrix veranschaulicht, welche für ein Verfahren der 1 verwendet wird.
  • Bezug nehmend auf die 1 bis 3 kann das Verfahren der 1 eine Matrix durch ein Anordnen von N Zahlen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, in wenigstens einer Zeile und wenigstens einer Spalte erzeugen (Schritt S120), es kann eine erste geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation basierend auf wenigstens einer Zufallszahl in jeder Zeile der Matrix erzeugen (Schritt S140), es kann eine zweite geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation basierend auf wenigstens einer Zufallszahl in jeder Spalte der ersten geänderten Matrix erzeugen (Schritt S160) und es kann N Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten ausgeben (Schritt S180). In der beispielhaften Ausführungsform können eine quadratische Matrix 100 oder eine rechteckige Matrix 200 als die Matrix ausgewählt werden.
  • Das Verfahren der 1 kann die Matrix (beispielsweise die quadratische Matrix 100 oder die rechteckige Matrix 200) durch ein Anordnen von N Zahlen in wenigstens einer Zeile und wenigstens einer Spalte erzeugen (Schritt S120). Hier können N Zahlen eine anfängliche Permutation konstituieren. Wenn N Zahlen in der quadratischen Matrix 100 oder der rechteckigen Matrix 200 angeordnet werden, können N Zahlen in der quadratischen Matrix 100 oder der rechteckigen Matrix 200 basierend auf einer Sequenz der anfänglichen Permutation angeordnet werden, oder N Zahlen können in der quadratischen Matrix 100 oder der rechteckigen Matrix 200 unabhängig von einer Sequenz der anfänglichen Permutation angeordnet werden. Beispielsweise ist es in 2 veranschaulicht, dass 16 Zahlen der anfänglichen Permutation {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} in der quadratischen Matrix 100 basierend auf einer Sequenz der anfänglichen Permutation {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} angeordnet werden. Zusätzlich ist in 3 veranschaulicht, dass 15 Zahlen der anfänglichen Permutation {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E} in der rechteckigen Matrix basierend auf einer Sequenz der anfänglichen Permutation {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E} angeordnet werden. Wie obenstehend jedoch beschrieben ist, kann eine Anordnungsreihenfolge von N Zahlen unabhängig von einer Sequenz einer anfänglichen Permutation verschieden geändert werden. In der beispielhaften Ausführungsform können N Zahlen jeweils eine binäre Form haben. Beispielsweise können unter der Annahme, dass die anfängliche Permutation {00, 01, 10, 11} ist, N Zahlen „00”, „01”, „10”, und „11” aufweisen. In diesem Fall kann die anfängliche Permutation {00, 01, 10, 11} durch eine binäre Zufallsquelle {0, 1} zufällig angeordnet werden.
  • Nachdem die Matrix durch ein Anordnen von N Zahlen in wenigstens einer Zeile und wenigstens einer Spalte erzeugt ist (Schritt S120), kann das Verfahren der 1 die erste geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der quadratischen Matrix 100 oder der rechteckigen Matrix 200 (d. h. RA_1, RA_2, RA_3, RA_4, ...) erzeugen (Schritt S140). In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation einer Rotationsoperation entsprechen. Das heißt, das Verfahren der 1 kann die erste geänderte Matrix durch ein Rotieren von Zahlen jeder Zeile der quadratischen Matrix 100 oder der rechteckigen Matrix 200 um eine Zeilen-Zufallszahl in einer Zeilenrichtung erzeugen. Hier kann die Zeilen-Zufallszahl unabhängig für jede Zeile der Matrix ausgewählt werden (d. h. der quadratischen Matrix 100 oder der rechteckigen Matrix 200). Beispielsweise können im Fall der quadratischen Matrix 100 Zahlen, welche in einer ersten Zeile angeordnet sind, um 1 rotiert werden, Zahlen, welche in einer zweiten Zeile angeordnet sind, können um 2 rotiert werden, Zahlen, welche in einer dritten Zeile angeordnet sind, können um 3 rotiert werden, und Zahlen, welche in einer vierten Reihe angeordnet sind, können um 0 rotiert werden (d. h. 4). In einer beispielhaften Ausführungsform kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[logj] – 1 sein, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der Matrix angeordnet sind. Beispielsweise kann, wenn die Anzahl von Zahlen, welche in jeder Zeile der Matrix angeordnet sind, 4 ist, ein Bereich der Zeilen-Zufallszahl zwischen 0 und 3 sein. Zusätzlich kann, wenn die Anzahl von Zahlen, welche in jeder Zeile der Matrix angeordnet sind, 10 ist, ein Bereich der Zeilen-Zufallszahl zwischen 0 und 7 sein. Demnach kann ein Bereich der Zeilen-Zufallszahl ohne irgendeinen Entropieverlust oder irgendeine Zufälligkeitsverringerung optimiert werden, wenn die Anzahl von Zahlen, welche in jeder Zeile der Matrix angeordnet sind, eine ganze Zahl mit Potenzen von 2 ist.
  • In einer anderen beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation einer Mischoperation entsprechen. Das heißt, das Verfahren der 1 kann Zeilen-Untermatrizen durch ein Anordnen von Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, es kann geänderte Zeilen-Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der Untermatrizen erzeugen, und es kann Zahlen, welche in jeder der geänderten Zeilen-Untermatrizen angeordnet sind, jeweils als Zeile der ersten geänderten Matrix ausgeben. Beispielsweise kann unter der Annahme, dass die Matrix die quadratische Matrix 100 ist, das Verfahren der 1 eine 2×2 Zeilen-Untermatrix durch ein Anordnen von Zahlen (d. h. 0, 1, 2, 3) einer ersten Zeile der Matrix erzeugen, es kann eine 2×2 geänderte Zeilen-Untermatrix durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte der 2×2 Zeilen-Untermatrix erzeugen und es kann Zahlen, welche in der 2×2 geänderten Zeilen-Untermatrix angeordnet sind, als eine erste Zeile der ersten geänderten Matrix ausgeben. Auf dieselbe Art und Weise kann eine zweite Zeile der ersten geänderten Matrix durch ein Durchführen einer Mischoperation für Zahlen, welche in einer zweiten Zeile (d. h. 4, 5, 6, 7) der Matrix angeordnet sind erzeugt werden, eine dritte Zeile der ersten geänderten Matrix kann durch ein Durchführen einer Mischoperation für Zahlen erzeugt werden, welche in einer dritten Zeile (d. h. 8, 9, A, B) der Matrix angeordnet sind, und eine vierte Zeile der ersten geänderten Matrix kann erzeugt werden durch ein Durchführen einer Mischoperation für Zahlen, welche in einer vierten Zeile (d. h. C, D, E, F) der Matrix angeordnet sind. Als ein Ergebnis kann das Verfahren der 1 Verwendungen von Entropie durch ein Hinzufügen von mehr Zufälligkeit maximieren, wenn eine zufällige Permutation erzeugt wird.
  • Nachdem die erste geänderte Matrix erzeugt ist, kann das Verfahren der 1 eine zweite geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der ersten geänderten Matrix (d. h. CA_1, CA_2, CA_3, CA_4, ...) erzeugen (Schritt S160). In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation einer Rotationsoperation entsprechen. Das heißt, das Verfahren der 1 kann die zweite geänderte Matrix durch ein Rotieren von Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, um eine Spalten-Zufallszahl in einer Spaltenrichtung erzeugen. Hier kann die Spalten-Zufallszahl unabhängig für jede Spalte der ersten geänderten Matrix ausgewählt werden. Beispielsweise können im Fall der quadratischen Matrix 100 Zahlen, welche in einer ersten Spalte angeordnet sind, um 1 rotiert werden, Zahlen, welche in einer zweiten Spalte angeordnet sind, können um 2 rotiert werden, Zahlen, welche in einer dritten Spalte angeordnet sind, können um 3 rotiert werden, und Zahlen, welche in einer vierten Spalte angeordnet sind, können um 0 (d. h. 4) rotiert werden. In einer beispielhaften Ausführungsform kann ein Bereich der Spalten-Zufallszahlen zwischen 0 und 2[logk] – 1 sein, wobei k die Anzahl von Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind. Beispielsweise kann, wenn die Anzahl von Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, 4 ist, ein Bereich der Spalten-Zufallszahl zwischen 0 und 3 sein. Zusätzlich kann, wenn die Anzahl von Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, 10 ist, ein Bereich der Spalten-Zufallszahl zwischen 0 und 7 sein. Demnach kann ein Bereich der Spalten-Zufallszahl ohne irgendeine Entropie-Verschwendung oder eine Zufalls-Verringerung optimiert werden, wenn die Anzahl von Zahlen, welche in jeder Spalte der geänderten Matrix angeordnet sind, eine ganze Zahl mit Potenzen von 2 ist.
  • In einer anderen beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation einer Mischoperation entsprechen. Das heißt, das Verfahren der 1 kann Spalten-Untermatrizen durch ein Anordnen von Zahlen jeder Spalte der ersten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, es kann geänderte Spalten-Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der Spalten-Untermatrizen erzeugen und es kann Zahlen, welche in jeder der geänderten Spalten-Untermatrizen angeordnet sind, als jede Spalte einer zweiten geänderten Matrix ausgeben. Beispielsweise kann, unter der Annahme, dass die erste geänderte Matrix die quadratische Matix 100 ist, das Verfahren der 1 eine 2×2 Spalten-Untermatrix durch ein Anordnen von Zahlen (0, 4, 8, C) einer ersten Spalte der ersten geänderten Matrix erzeugen, es kann eine 2×2 geänderte Spalten-Untermatrix durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte der 2×2 Spalten-Untermatrix erzeugen, und es kann Zahlen, welche in der 2×2 geänderten Spalten-Untermatrix angeordnet sind, als eine erste Spalte der zweiten geänderten Matrix ausgeben. Auf dieselbe Art und Weise kann eine zweite Spalte der zweiten geänderten Matrix durch ein Durchführen einer Mischoperation für Zahlen erzeugt werden, welche in einer zweiten Spalte (d. h. 1, 5, 9, D) der ersten geänderten Matrix angeordnet sind, eine dritte Spalte der zweiten geänderten Matrix kann durch ein Durchführen einer Mischoperation für Zahlen erzeugt werden, welche in einer dritten Spalte der ersten geänderten Matrix angeordnet sind (d. h. 2, 6, A, E) und eine vierte Spalte der zweiten geänderten Matrix kann durch ein Durchführen einer Mischoperation für Zahlen erzeugt werden, welche in einer vierten Spalte der ersten geänderten Matrix angeordnet sind (d. h. 3, 7, B, F). Als ein Ergebnis kann das Verfahren der 1 die Verwendungen von Entropie durch ein Hinzufügen von mehr Zufälligkeit maximieren, wenn eine zufällige Permutation erzeugt wird.
  • Nachdem die zweite geänderte Matrix erzeugt ist, kann das Verfahren der 1 N Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten (Schritt S180) ausgeben. Beispielsweise kann unter der Annahme, dass die zweite geänderte Matrix die quadratische Matrix 100 ist, eine letztendliche Permutation (d. h. eine zufällige Permutation) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} sein, wenn Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen ausgegeben werden. Alternativ kann eine letztendliche Permutation (d. h. eine zufällige Permutation) {0, 4, 8, C, 1, 5, 9, D, 2, 6, A, E, 3, 7, B, F} sein, wenn Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Spalten ausgegeben werden. Ähnlich kann, unter der Annahme, dass die zweite geänderte Matrix die rechteckige Matrix 200 ist, eine letztendliche Permutation (d. h. eine zufällige Permutation) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E} sein, wenn Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen ausgegeben werden. Alternativ kann eine letztendliche Permutation (d. h. eine zufällige Permutation) {0, 3, 6, 9, C, 1, 4, 7, A, D, 2, 5, 8, B, E} sein, wenn Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Spalten ausgegeben werden. Wie obenstehend beschrieben ist, kann das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) in jeder Zeile und jeder Spalte einer Matrix, welche einer anfänglichen Permutation entspricht, erzeugen. Demnach kann das Verfahren der 1 durch eine einfache Struktur (d. h. Hardware) implementiert werden, in welcher eine Mehrzahl von Multiplexer unter Verwendung einer Mehrzahl von Drähten gekoppelt ist. Zusätzlich kann das Verfahren der 1 effizient eine binäre Zufallsquelle verwenden, wobei die binäre Zufallsquelle auf jede Zeile und jede Spalte der Matrix angewandt wird, wenn das Verfahren der 1 eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt.
  • Obwohl es obenstehend beschrieben ist, dass die erste geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der Matrix erzeugt wird und dann die zweite geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der ersten geänderten Matrix erzeugt wird, ist die beispielhafte Ausführungsform nicht darauf beschränkt. Demnach kann die erste geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der Matrix erzeugt werden und dann kann die zweite geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der ersten geänderten Matrix erzeugt werden. Zusätzlich kann das Verfahren der 1 eine Größe der binären Zufallsquelle durch ein wiederholtes Verwenden der binären Zufallsquelle verringern. Beispielsweise kann unter der Annahme, dass die Matrix die quadratische Matrix 100 ist, das Verfahren der 1 eine Größe der binären Zufallsquelle, welche auf jede Zeile der Matrix angewendet wird, durch ein Anwenden derselben Zeilen-Zufallszahl auf gerade Zeilen der Matrix und durch ein Anwenden derselben Zeilen-Zufallszahl auf ungerade Zeilen der Matrix verringern. Ähnlich kann unter der Annahme, dass die Matrix die quadratische Matrix 100 ist, das Verfahren der 1 eine Größe der binären Zufallsquelle, welche auf jede Spalte der Matrix angewandt wird, durch ein Anwenden der gleichen Spalten-Zufallszahl auf gerade Spalten der Matrix und durch ein Anwenden der gleichen Spalten-Zufallszahl auf ungerade Spalten der Matrix verringern. Als ein Ergebnis kann das Verfahren der 1 eine Zufälligkeit und Entropie-Effizienz gemäß benötigten Bedingungen zum Erzeugen einer Zufallspermutation ermöglichen.
  • 4 ist ein Flussdiagramm, welches ein Beispiel veranschaulicht, in welchem eine Rotationsoperation durch ein Verfahren der 1 durchgeführt wird.
  • Bezug nehmend auf 4 kann das Verfahren der 1 eine Zeilen-Zufallszahl für jede Zeile einer Matrix auswählen (Schritt S220), wobei die Matrix durch ein Anordnen von N Zahlen in wenigstens einer Zeile und wenigstens einer Spalte erzeugt ist, und es kann eine erste geänderte Matrix durch ein Rotieren von Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um die Zeilen-Zufallszahl in einer Zeilenrichtung erzeugen (Schritt S240). Nachfolgend kann das Verfahren der 1 eine Spalten-Zufallszahl für jede Spalte der ersten geänderten Matrix auswählen (Schritt S260), und es kann eine zweite geänderte Matrix durch ein Rotieren von Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, um die Spalten-Zufallszahl in einer Spaltenrichtung erzeugen (Schritt S280). Wie obenstehend beschrieben ist, kann die Zeilen-Zufallszahl für jede Zeile der Matrix unabhängig ausgewählt werden und die Spalten-Zufallszahl kann für jede Spalte der ersten geänderten Matrix unabhängig ausgewählt werden. Hier kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[logj] – 1 sein, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der Matrix angeordnet sind. Zusätzlich kann ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[logk] – 1 sein, wobei k die Anzahl von Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix angeordnet ist.
  • Beispielsweise muss, unter der Annahme, dass die Anzahl von Zahlen, welche in jeder Zeile einer Matrix angeordnet sind, keine ganze Zahl mit Potenzen von 2 ist (beispielsweise 10) ein Bereich einer Zeilen-Zufallszahl zwischen 0 und 9 sein, da ein Rotationsergebnis, welches erzeugt wird, wenn die Zeilen-Zufallszahl 0 ist, dasselbe ist wie ein Rotationsergebnis, welches erzeugt wird, wenn die Zeilen-Zufallszahl 10 ist. Ähnlich muss unter der Annahme, dass die Anzahl von Zeilen, welche in jeder Spalte der Matrix angeordnet sind, keine ganze Zahl mit Potenzen von 2 ist (beispielsweise 10) ein Bereich einer Spalten-Zufallszahl zwischen 0 und 9 sein, da ein Rotationsergebnis, welches erzeugt wird, wenn die Spalten-Zufallszahl 0 ist, dasselbe ist wie ein Rotationsergebnis, welches erzeugt wird, wenn die Spalten-Zufallszahl 10 ist. Im Fall jedoch eines Implementiertseins durch die Hardware, welche eine binäre Zufallsquelle verwendet, kann eine Entropie-Verschwendung der binären Zufallsquelle verursacht werden. Das heißt, dass, obwohl die binäre Zufallsquelle 4 Bit hat (d. h. zwischen 0 und 15), ein Teil der binären Zufallsquelle (d. h. zwischen 0 und 9) verwendet werden kann. Demnach kann das Verfahren der 1 einen Bereich der Zeilen-Zufallszahl bestimmen, so dass er zwischen 0 und 2[ logj ] – 1 ist, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der Matrix angeordnet sind, und es kann einen Bereich der Spalten-Zufallszahl bestimmen, so dass er zwischen 0 und 2[ logk ] – 1 ist, wobei k die Anzahl von Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind. Das heißt, das Verfahren der 1 kann eine binäre Zufallsquelle verwenden, welche 3 Bit hat (d. h. zwischen 0 und 7), aber eine binäre Zufallsquelle, welche 4 Bit hat (d. h. zwischen 0 und 15). Als ein Ergebnis kann eine Entropie-Verschwendung der binären Zufallsquelle verhindert werden.
  • Demnach mag das Verfahren der 1 8 und 9 nicht als die Zeilen-Zufallszahl und die Spalten-Zufallszahl auswählen. Als ein Ergebnis kann eine Zufälligkeitsverringerung verursacht werden, wenn eine Rotationsoperation in jeder Zeile und jeder Spalte der Matrix durchgeführt wird. Da jedoch das Verfahren der 1 ausreichend Zufälligkeit durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte der Matrix erreicht, kann die Zufälligkeitsverringerung vernachlässigbar sein. Wie obenstehend beschrieben ist, existiert im Fall des Implementierens der Hardware, welche eine binäre Zufallsquelle verwendet, eine Austauschbeziehung zwischen einer Zufälligkeitsverringerung und einer Verschwendung bzw. Vergeudung der binären Zufallsquelle. Hier kann das Verfahren der 1 die Zeilen-Zufallszahl und die Spalten-Zufallszahl auswählen, während es sich auf ein Verhindern einer Verschwendung bzw. Vergeudung der binären Zufallsquelle fokussiert. Demnach können gemäß dem Verfahren der 1 eine Zufälligkeitsverringerung und eine Vergeudung der binären Zufallsquelle zu derselben Zeit verhindert werden, wenn die Anzahl von Zahlen, welche in jeder Zeile der Matrix angeordnet sind, eine ganze Zahl mit Potenzen von 2 ist, und die Anzahl von Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, eine ganze Zahl mit Potenzen von 2 ist. In anderen Worten gesagt, kann ein Bereich der Zeilen-Zufallszahl optimiert werden, wenn die Anzahl von Zahlen, welche in jeder Zeile der Matrix angeordnet ist, eine ganze Zahl mit Potenzen von 2 ist, und ein Bereich der Spalten-Zufallszahl kann ebenso optimiert werden, wie die Anzahl von Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet ist, eine ganze Zahl mit Potenzen von 2 ist.
  • Die 5 bis 9 sind Diagramme bzw. Darstellungen, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch eine Rotationsoperation basierend auf einer rechteckigen Matrix in 4 erzeugt wird.
  • Bezug nehmend auf 5 kann das Verfahren der 1 eine letztendliche Permutation FPU (beispielsweise {C, A, 4, 2, 3, D, B, 5, 6, 0, E, 8, 9, 7, 1, F}) durch ein Durchführen einer Zufalls-Anordnungsoperation auf einer anfänglichen Permutation IPU (beispielsweise {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}) ausgeben.
  • Bezug nehmend auf die 6 und 7 kann das Verfahren der 1 eine Matrix 120a durch ein Anordnen der Zahlen (d. h. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) der anfänglichen Permutation IPU in vier Zeilen und vier Spalten erzeugen. Obwohl in 6 veranschaulicht ist, dass die Matrix 120a eine erste bis eine vierte Zeile (d. h. {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, A, B}, {C, E, F}) durch ein Anordnen von Zahlen der anfänglichen Permutation IPU basierend auf einer Sequenz der anfänglichen Permutation IPU aufweist, ist eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU nicht darauf beschränkt. Das heißt, eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU kann verschieden bestimmt werden, unabhängig von einer Sequenz der anfänglichen Permutation IPU. Dann kann das Verfahren der 1 eine erste geänderte Matrix 120b durch ein Durchführen einer Rotationsoperation (d. h. ROT_1, ROT_2, ROT_3, ROT_4) in jeder Zeile der Matrix erzeugen. Das heißt, eine erste Rotationsoperation ROT_1 kann in der ersten Zeile (d. h. {0, 1, 2, 3}) der Matrix 120a durchgeführt werden, eine zweite Rotationsoperation ROT_2 kann in der zweiten Zeile (d. h. {4, 5, 6, 7}) der Matrix 120a durchgeführt werden, eine dritte Rotationsoperation ROT_3 kann in der dritten Zeilen (d. h. {8, 9, A, B}) der Matrix 120a durchgeführt werden, und eine vierte Rotationsoperation ROT_4 kann in der vierten Zeilen (d. h. {C, D, E, F}) der Matrix 120a durchgeführt werden.
  • Nachdem eine Rotationsoperation (d. h. ROT_1, ROT_2, ROT_3, ROT_4) in jeder Zeile der Matrix 120a durchgeführt ist, kann die erste geänderte Matrix 120b erste bis vierte Zeilen (d. h. {3, 0, 1, 2}, {6, 7, 4, 5}, {9, A, B, 8}, {C, D, E, F}) aufweisen. 7 zeigt ein Beispiel der ersten geänderten Matrix 120b, wenn die Zeilen-Zufallszahl für die erste Zeile der Matrix 120a 1 ist, die Zeilen-Zufallszahl für die zweite Zeile der Matrix 120a 2 ist, die Zeilen-Zufallszahl für die dritte Zeile der Matrix 120a 3 ist, und die Zeilen-Zufallszahl für die vierte Zeile der Matrix 120a 0 ist. Das heißt, die erste geänderte Matrix 120b kann durch ein Rotieren von Zahlen, welche in der ersten Spalte der Matrix 120a enthalten sind, um 1, durch ein Rotieren der Zahlen, welche in der zweiten Zeile der Matrix 120a angeordnet sind, um 2, durch ein Rotieren von Zahlen, welche in der dritten Zeile der Matrix 120a angeordnet sind, um 3 und durch ein Drehen von Zahlen, welche in der vierten Zeile der Matrix 120a angeordnet sind, um 0 erzeugt werden. Wie obenstehend beschrieben ist, kann die Zeilen-Zufallszahl unabhängig für jede Zeile der Matrix 120 ausgewählt werden. Hier kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[logj ] – 1 sein, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der Matrix 120a angeordnet sind. Wie in 7 veranschaulicht ist, kann, da die Anzahl von Zahlen, welche in jeder Zeile der Matrix 120a angeordnet ist, 4 ist, ein Bereich der Zeilen-Zufallszahl zwischen 0 und 3 sein.
  • Bezug nehmend auf die 8 und 9 kann das Verfahren der 1 eine zweite geänderte Matrix 120c durch ein Durchführen einer Rotationsoperation (d. h. ROT_1, ROT_2, ROT_3, ROT_4) in jeder Spalte der ersten geänderten Matrix 120b erzeugen. Das heißt, eine erste Rotationsoperation ROT_1 kann in einer ersten Spalte (d. h. {3, 6, 9, C}) der ersten geänderten Matrix 120b durchgeführt werden, eine zweite Rotationsoperation ROT_2 kann in einer zweiten Spalte (d. h. {0, 7, A, D}) der ersten geänderten Matrix 120b durchgeführt werden, eine dritte Rotationsoperation ROT_3 kann in einer dritten Spalte (d. h. {1, 4, B, E}) der ersten geänderten Matrix 120b durchgeführt werden, und eine vierte Rotationsoperation ROT_4 kann in einer vierten Spalte (d. h. {2, 5, 8, F}) der ersten geänderten Matrix 120b durchgeführt werden. Als ein Ergebnis kann die zweite geänderte Matrix 120c erste bis vierte Spalten (d. h. {C, 3, 6, 9}, {A, D, 0, 7}, {4, B, E, 1}, {2, 5, 8, F}) aufweisen. 9 zeigt ein Beispiel der zweiten geänderten Matrix 120c, wenn die Spalten-Zufallszahl für die erste Spalte der ersten geänderten Matrix 120b 1 ist, die Spalten-Zufallszahl für die zweite Spalte der ersten geänderten Matrix 120b 2 ist, die Spalten-Zufallszahl für die dritte Spalte der ersten geänderten Matrix 120b 3 ist, und die Spalten-Zufallszahl für die vierte Spalte der ersten geänderten Matrix 120b 0 ist. Das heißt, die zweite geänderte Matrix 120c kann durch ein Rotieren von Zahlen, welche in der ersten Spalte der ersten geänderten Matrix 120b angeordnet sind, um 1, durch ein Rotieren der Zahlen, welche in der zweiten Spalte der ersten geänderten Matrix 120b angeordnet sind, um 2, durch ein Rotieren der Zahlen, welche in der dritten Spalte der ersten geänderten Matrix 120b angeordnet sind, um 3 und durch ein Rotieren der Zahlen, welche in der vierten Spalte der ersten geänderten Matrix 120b angeordnet sind, um 0 erzeugt werden. Wie obenstehend beschrieben ist, kann die Spalten-Zufallszahl für jede Spalte der ersten geänderten Matrix 120b unabhängig ausgewählt werden. Hier kann ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[logk] – 1 sein, wobei k die Anzahl von Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix 120b angeordnet sind. Wie in 9 veranschaulicht ist, kann, da die Anzahl von Zahlen, welche in jeder Spalte der ersten geänderten Matrix 120b angeordnet sind, 4 ist, ein Bereich der Spalten-Zufallszahl zwischen 0 und 3 sein.
  • Nachfolgend kann das Verfahren der 1 Zahlen, welche in der zweiten geänderten Matrix 120 angeordnet sind, gemäß Zeilen oder Spalten ausgeben. Es ist in 5 veranschaulicht, dass Zahlen, welche in der zweiten geänderten Matrix 120c angeordnet sind, sequentiell gemäß Zeilen ausgegeben werden. Das heißt, dass die letztendliche Permutation FPU (d. h. {C, A, 4, 2, 3, D, B, 5, 6, 0, E, 8, 9, 7, 1, F}) durch ein nacheinanderfolgendes Ausgeben der ersten Zeile (d. h. {C, A, 4, 2}) der zweiten geänderten Matrix 120c, der zweiten Zeile (d. h. {3, D, B, 5}) der zweiten geänderten Matrix 120c, der dritten Zeile (d. h. {6, 0, E, 8}) der zweiten geänderten Matrix 120c und der vierten Zeile (d. h. {9, 7, 1, F}) der zweiten geänderten Matrix 120c erzeugt werden kann. Die beispielhafte Ausführungsform ist jedoch nicht darauf beschränkt. Beispielsweise können Zahlen, welche in der zweiten geänderten Matrix 120c angeordnet sind, sequentiell gemäß Spalten ausgegeben werden. Wie obenstehend beschrieben ist, kann das Verfahren der 1 durch eine einfache Struktur (d. h. Hardware) implementiert werden, in welcher eine Mehrzahl von Multiplexer unter Verwendung einer Mehrzahl von Drähten gekoppelt ist, da das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte der Matrix 120a, welche der anfänglichen Permutation IPU entspricht, erzeugt. Zusätzlich kann das Verfahren der 1 eine binäre Zufallsquelle effizient verwenden, wobei die binäre Zufallsquelle auf jede Zeile und jede Spalte der Matrix 120a angewandt wird, wenn das Verfahren der 1 eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt. Hierin nachstehend wird ein Beispiel für Hardware, durch welche das Verfahren der 1 implementiert ist, im Detail beschrieben werden.
  • 10 ist ein Schaltbild, welches ein Beispiel veranschaulicht, in welchem eine zufällige Permutation durch eine Rotationsoperation basierend auf einer quadratischen Matrix in 4 erzeugt wird.
  • Bezug nehmend auf 10 kann eine einfache Struktur durch Hardware zum Anwenden des Verfahrens der 1 implementiert werden, um eine zufällige Permutation durch ein Durchführen einer Rotationsoperation basierend auf einer quadratischen Matrix zu erzeugen. Im Detail kann die Hardware eine erste Puffereinheit FB, eine erste Verdrahtungseinheit FW, eine erste Multiplexereinheit FM, eine erste Transponier-Verdrahtungseinheit FT, eine zweite Puffereinheit SB, eine zweite Verdrahtungseinheit SW, eine zweite Multiplexer-Einheit SM, eine zweite Transponier-Verdrahtungseinheit ST und eine dritte Puffereinheit TB aufweisen.
  • Die erste Puffereinheit FB kann einer 4×4-Matrix entsprechen. Die erste Puffereinheit FB kann eine anfängliche Permutation, welche 16 Zahlen aufweist, von außerhalb empfangen und kann 16 Zahlen der anfänglichen Permutation in vier Zeilen und vier Spalten anordnen. Beispielsweise kann die erste Puffereinheit FB unter Verwendung einer Speichervorrichtung zum vorübergehenden Speichern von 16 Zahlen der anfänglichen Permutation, einer Puffervorrichtung, einer Verzögerungsvorrichtung etc. implementiert sein. In einer beispielhaften Ausführungsform kann die erste Puffereinheit FB 16 Zahlen der anfänglichen Permutation basierend auf einer Sequenz der anfänglichen Permutation anordnen. In einer anderen beispielhaften Ausführungsform kann die erste Puffereinheit FB 16 Zahlen der anfänglichen Permutation zufällig anordnen (d. h. unabhängig von einer Sequenz der anfänglichen Permutation). Wie in 10 veranschaulicht ist, kann die erste Puffereinheit FB eine erste bis vierte Zeile ROW1 bis ROW4 haben, wobei jede der ersten bis vierten Zeile ROW1 bis ROW4 vier Zahlen aufweist. Demnach können erste Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 eine erste Spalte der 4×4-Matrix konstituieren, zweite Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 können eine zweite Spalte der 4×4-Matrix konstituieren, dritte Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 können eine dritte Spalte der 4×4-Matrix konstituieren und vierte Zahlen der ersten bis vierten Reihe ROW1 bis ROW4 können eine vierte Spalte der 4×4-Matrix konstituieren. Die erste Verdrahtungseinheit FW kann die erste Puffereinheit FB mit der ersten Multiplexer-Einheit FM koppeln. Hier kann die erste Verdrahtungseinheit FW die erste Puffereinheit FB mit der ersten Multiplexer-Einheit FM gemäß Zeilen (d. h. ROW1, ROW2, ROW3, ROW4) der 4×4-Matrix koppeln.
  • Die erste Multiplexer-Einheit FM kann 16 Multiplexer aufweisen. Hier kann eine Gruppe der ersten Multiplexer-Einheit FM vier Multiplexer aufweisen. Das heißt, die erste Zeile ROW1 der ersten Puffereinheit FB kann mit einer ersten Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, die zweite Zeile ROW2 der ersten Puffereinheit FB kann mit einer zweiten Gruppe der zweiten Multiplexer-Einheit FM gekoppelt sein, die dritte Zeile ROW3 der ersten Puffereinheit FB kann mit einer dritten Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein und die vierte Zeile ROW4 der ersten Puffereinheit FB kann mit einer vierten Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein. Hier kann eine Zeilen-Zufallszahl, welche auf die erste Puffereinheit FB angewandt wird, unabhängig für jede Zeile der ersten Puffereinheit FB (d. h. ROW1, ROW2, ROW3, ROW4) ausgewählt werden. Zusätzlich können, da vier Zahlen jeder Zeile (d. h. ROW1, ROW2, RWO3, ROW4) der ersten Puffereinheit FB um dieselbe Zeilen-Zufallszahl rotiert werden, vier Multiplexer jeder Gruppe der ersten Multiplexer-Einheit FM dasselbe Auswahlsignal (d. h. eine binäre Zufallsquelle) empfangen. Die erste Transponier-Verdrahtungseinheit FT kann die erste Multiplexer-Einheit FM mit der zweiten Puffereinheit SB koppeln. Hier kann die erste Transponier-Verdrahtungseinheit FT vier Multiplexer jeder Gruppe der ersten Multiplexer-Einheit FM an erste bis vierte Spalten COL1 bis COL4 der zweiten Puffereinheit SB verteilen. Das heißt, die erste Transponier-Verdrahtungseinheit FT kann eine Rotationsoperation für jede Spalte (d. h. COL1, COL2, COL3, COL4) der 4×4-Matrix bereitstellen. Demnach kann eine Rotationsoperation ROW_R in jeder Zeile (d. h. ROW1, ROW2, ROW3, ROW4) der 4×4-Matrix durch die erste Puffereinheit FB, die erste Verdrahtungseinheit FW, die erste Multiplexer-Einheit FM und die erste Transponier-Verdrahtungseinheit FT durchgeführt werden.
  • Die zweite Puffereinheit SB kann ebenso unter Verwendung einer Speichervorrichtung zum vorübergehenden Speichern von 16 Zahlen, einer Puffervorrichtung, einer Verzögerungsvorrichtung etc. implementiert werden. Wie in 10 veranschaulicht ist, kann die zweite Puffereinheit SB die erste bis vierte Spalte COL1 bis COL4 haben, wobei jede der ersten bis vierten Spalte COL1 bis COL4 vier Zahlen aufweist. Demnach können die ersten Zahlen der ersten bis vierten Spalten COL1 bis COL4 eine erste Zeile der 4×4-Matrix konstituieren, zweite Zahlen der ersten bis vierten Spalte COL1 bis COL4 können eine zweite Zeile der 4×4-Matrix konstituieren, dritte Zahlen der ersten bis vierten Spalten COL1 bis COL4 können eine dritte Zeile der 4×4-Matrix konstituieren und vierte Zahlen der ersten bis vierten Spalte COL1 bis COL4 können eine vierte Zeile der 4×4-Matrix konstituieren. Die zweite Verdrahtungseinheit SW kann die zweite Puffereinheit SB an die zweite Multiplexer-Einheit SM koppeln. Hier kann die zweite Verdrahtungseinheit SW die zweite Puffereinheit SB an die zweite Multiplexer-Einheit SM gemäß Spalten (d. h. COL1, COL2, COL3, COL4) der 4×4-Matrix koppeln.
  • Die zweite Multiplexer-Einheit SM kann 16 Multiplexer aufweisen. Hier kann eine Gruppe der zweiten Multiplexer-Einheit SM vier Multiplexer aufweisen. Das heißt, die erste Spalte COL1 der zweiten Puffereinheit SB kann an eine erste Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, die zweite Spalte COL2 der zweiten Puffereinheit SB kann an eine zweite Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, die dritte Spalte COL3 der zweiten Puffereinheit SB kann an eine dritte Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, und die vierte Spalte COL4 der zweiten Puffereinheit SB kann an eine vierte Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein. Hier kann eine Spalten-Zufallszahl, welche auf die zweite Puffereinheit SB angewandt wird, unabhängig für jede Spalte der zweiten Puffereinheit SB (d. h. COL1, COL2, COL3, COL4) ausgewählt werden. Zusätzlich können, da vier Zahlen jeder Spalte (d. h. COL1, COL2, COL3, COL4) der zweiten Puffereinheit SB um dieselbe Spalten-Zufallszahl rotiert werden, vier Multiplexer jeder Gruppe der zweiten Multiplexer-Einheit SM dasselbe Auswahlsignal (d. h. eine binäre Zufallsquelle) empfangen. Die zweite Transponier-Verdrahtungseinheit ST kann die zweite Multiplexer-Einheit SM an die dritte Puffereinheit TB koppeln. Hier kann die zweite Transponier-Verdrahtungseinheit ST vier Multiplexer jeder Gruppe der zweiten Multiplexer-Einheit SM an erste bis vierte Zeilen ROW1 bis ROW4 der dritten Puffereinheit TB verteilen. Demnach kann eine Rotationsoperation COL_R in jeder Spalte (d. h. COL1, COL2, COL3, COL4) der 4×4-Matrix durch die zweite Puffereinheit SB, die zweite Verdrahtungseinheit SW, die zweite Multiplexer-Einheit SM und die zweite Transponier-Verdrahtungseinheit ST durchgeführt werden.
  • Nachfolgend kann die Hardware Zahlen, welche in der dritten Puffereinheit TB angeordnet sind, gemäß Zeilen ausgeben. Beispielsweise kann die Hardware eine letztendliche Permutation (d. h. eine zufällige Permutation) durch ein sequentielles Ausgeben der ersten bis vierten Zeile ROW1 bis ROW4 der dritten Puffereinheit TB ausgeben. Alternativ kann die Hardware die letztendliche Permutation durch ein zufälliges Ausgeben der ersten bis vierten Zeile ROW1 bis ROW4 der dritten Puffereinheit TB ausgeben. Zusätzlich kann die Hardware Zahlen, welche in der dritten Puffereinheit TB angeordnet sind, gemäß Spalten ausgeben. Demnach kann das Verfahren der 1 durch eine einfache Struktur implementiert werden, welche Multiplexer und Drähte bzw. Verdrahtungen hat, wenn es durch eine Hardware implementiert wird. Obwohl es obenstehend beschrieben ist, dass eine zufällige Permutation durch ein Durchführen einer Rotationsoperation in jeder Zeile der 4×4-Matrix erzeugt wird und dann durch ein Durchführen einer Rotationsoperation in jeder Spalte der 4×4-Matrix, ist das vorliegende erfinderische Konzept nicht hierauf beschränkt. Demnach sollte verstanden werden, dass eine zufällige Permutation durch ein Durchführen einer Rotationsoperation in jeder Spalte der 4×4-Matrix und dann durch ein Durchführen einer Rotationsoperation in jeder Zeile der 4×4-Matrix erzeugt werden kann.
  • Die 11 bis 15 sind Diagramme, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch eine Rotationsoperation basierend auf einer rechteckigen Matrix in 4 erzeugt wird.
  • Bezug nehmend auf 11 kann das Verfahren der 1 eine letztendliche Permutation FPU (beispielsweise {E, 9, 8, 2, C, A, 5, 0, D, 6, 3, 1, B, 7, 4}) durch ein Durchführen einer Zufalls-Anordnungsoperation auf einer anfänglichen Permutation IPU (beispielsweise {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E}) ausgeben.
  • Bezug nehmend auf die 12 und 13 kann das Verfahren der 1 eine Matrix 220a durch ein Anordnen von Zahlen (d. h. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E}) der anfänglichen Permutation IPU in fünf Zeilen und drei Spalten erzeugen. Obwohl es in 12 veranschaulicht ist, dass die Matrix 220a erste bis fünfte Zeilen (d. h. {0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {9, A, B}, {C, D, E}) durch ein Anordnen von Zahlen der anfänglichen Permutation IPU basierend auf einer Sequenz der anfänglichen Permutation IPU aufweist, ist eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU nicht darauf beschränkt. Das heißt, eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU kann verschieden bestimmt werden, unabhängig von einer Sequenz der anfänglichen Permutation IPU. Dann kann das Verfahren der 1 eine erste geänderte Matrix 220b durch ein Durchführen einer Rotationsoperation (d. h. ROT_1, ROT_2, ROT_3, ROT_4, ROT_5) in jeder Zeile der Matrix 220a erzeugen. Das heißt, eine erste Rotationsoperation ROT_1 kann in der ersten Zeile (d. h. {0, 1, 2}) der Matrix 220a durchgeführt werden, eine zweite Rotationsoperation ROT_2 kann in der zweiten Zeile (d. h. {3, 4, 5}) der Matrix 220a durchgeführt werden, eine dritte Rotationsoperation ROT_3 kann in der dritten Zeile (d. h. {6, 7, 8}) der Matrix 220a durchgeführt werden, eine vierte Rotationsoperation ROT_4 kann in der vierten Zeile (d. h. {9, A, B}) der Matrix 220a durchgeführt werden und eine fünfte Rotationsoperation ROT_5 kann in der fünften Zeile (d. h. {C, D, E}) der Matrix 220a durchgeführt werden.
  • Nachdem eine Rotationsoperation (d. h. ROT_1, ROT_2, ROT_3, ROT_4, ROT_5) in jeder Zeile der Matrix 220a durchgeführt ist, kann die erste geänderte Matrix 220b erste bis fünfte Zeilen (d. h. {2, 0, 1}, {5, 3, 4}, {6, 7, 8}, {B, 9, A}, {E, C, D}) aufweisen. 13 zeigt ein Beispiel der ersten geänderten Matrix 220b, wenn die Zeilen-Zufallszahl für die erste Zeile der Matrix 220a 1 ist, die Zeilen-Zufallszahl für die zweite Zeile der Matrix 220a 1 ist, die Zeilen-Zufallszahl für die dritte Zeile der Matrix 220a 0 ist, die Zeilen-Zufallszahl für die vierte Zeile der Matrix 220a 1 ist und die Zeilen-Zufallszahl für die fünfte Zeile der Matrix 220a 1 ist. Das heißt, die erste geänderte Matrix 220b kann durch ein Rotieren von Zahlen, welche in der ersten Zeile der Matrix 220a angeordnet sind, um 1, durch ein Rotieren von Zahlen, welche in der zweiten Zeile der Matrix 220a angeordnet sind, um 1, durch ein Rotieren von Zahlen, welche in der dritten Zeile der Matrix 220a angeordnet sind, um 0, durch ein Rotieren von Zahlen, welche in der vierten Zeile der Matrix 220a angeordnet sind, um 1, und durch ein Rotieren von Zahlen, welche in der fünften Zeile der Matrix 220a angeordnet sind, um 1 erzeugt werden. Wie obenstehend beschrieben ist, kann die Zeilen-Zufallsziffer unabhängig für jede Zeile der Matrix 220a ausgewählt werden. Hier kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[logj] – 1 sein, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der Matrix 220a angeordnet sind. Wie in 13 veranschaulicht ist, kann, da die Anzahl von Zahlen, welche in jeder Zeile der Matrix 220a angeordnet sind, 3 ist, ein Bereich der Zeilen-Zufallsziffer zwischen 0 und 1 sein.
  • Bezug nehmend auf die 14 und 15 kann das Verfahren der 1 eine zweite geänderte Matrix 220c durch ein Durchführen einer Rotationsoperation (d. h. ROT_1, ROT_2, ROT_3) in jeder Spalte der ersten geänderten Matrix 220b erzeugen. Das heißt, eine erste Rotationsoperation ROT_1 kann in einer Spalte (d. h. {2, 5, 6, B, E}) der ersten geänderten Matrix 220b durchgeführt werden, eine zweite Rotationsoperation ROT_2 kann in einer zweiten Spalte (d. h. {0, 3, 7, 9, C}) der ersten geänderten Matrix 220b durchgeführt werden, und eine dritte Rotationsoperation ROT_3 kann in einer dritten Spalte (d. h. {1, 4, 8, A, D}) der ersten geänderten Matrix 220b durchgeführt werden. Als ein Ergebnis kann die zweite geänderte Matrix 220c erste bis dritte Spalten (d. h. {E, 2, 5, 6, B}, {9, C, 0, 3, 7}, {8, A, D, 1, 4}) aufweisen. 15 zeigt ein Beispiel der zweiten geänderten Matrix 220c, wenn die Spalten-Zufallszahl für die erste Spalte der ersten geänderten Matrix 220b 1 ist, die Spalten-Zufallszahl für die zweite Spalte der ersten geänderten Matrix 220b 2 ist, und die Spalten-Zufallszahl für die dritte Spalte der geänderten Matrix 220b 3 ist. Das heißt, die zweite geänderte Matrix 220c kann durch ein Rotieren von Zahlen, welche in der ersten Spalte der ersten geänderten Matrix 220b angeordnet sind, um 1, durch ein Rotieren, von Zahlen, welche in der zweiten Spalte der ersten geänderten Matrix 220b angeordnet sind, um 2 und durch ein Rotieren von Zahlen, welche in der dritten Spalte von ersten geänderten Matrix 220b angeordnet sind, um 3 erzeugt werden. Wie obenstehend beschrieben ist, kann die Spalten-Zufallszahl für jede Spalte der ersten geänderten Matrix 220b unabhängig ausgewählt werden. Hier kann ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[logk] – 1 sein, wobei k die Anzahl von Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix 220b angeordnet sind. Wie in 15 veranschaulicht ist, kann, da eine Anzahl von Zahlen, welche in jeder Spalte der ersten geänderten Matrix 220b angeordnet sind 5 ist, ein Bereich der Spalten-Zufallszahl zwischen 0 und 3 sein.
  • Nachfolgend kann das Verfahren der 1 Zahlen, welche in der zweiten geänderten Matrix 220c angeordnet sind, gemäß Zeilen oder Spalten ausgeben. Es ist in 11 veranschaulicht, dass Zahlen, welche in der zweiten geänderten Matrix 220c angeordnet sind, nacheinanderfolgend gemäß Zeilen ausgegeben werden. Das heißt, die letztendliche Permutation FPU (d. h. {E, 9, 8, 2, C, A, 5, 0, D, 6, 3, 1, B, 7, 4}) kann durch ein nacheinanderfolgendes Ausgeben der ersten Zeile (d. h. {E, 9, 8}) der zweiten geänderten Matrix 220c, der zweiten Zeile (d. h. {2, C, A}) der zweiten geänderten Matrix 220c, der dritten Zeile (d. h. {5, 0, D}) der zweiten geänderten Matrix 220c, der vierten Zeile (d. h. {6, 3, 1}) der zweiten geänderten Matrix 220c und der fünften Zeile (d. h. {B, 7, 4}) der zweiten geänderten Matrix 220c erzeugt werden. Die vorliegende beispielhafte Ausführungsform ist jedoch nicht darauf beschränkt. Beispielsweise können Zahlen, welche in der zweiten geänderten Matrix 220c angeordnet sind, nacheinanderfolgend gemäß Spalten ausgegeben werden. Demnach kann das Verfahren der 1 durch eine einfache Struktur (d. h. Hardware) implementiert werden, in welcher eine Mehrzahl von Multiplexer unter Verwendung einer Mehrzahl von Drähten bzw. Verdrahtungen gekoppelt sind, da das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte der Matrix 220a, welche der anfänglichen Permutation IPU entspricht, erzeugt. Zusätzlich kann das Verfahren der 1 effizient eine binäre Zufallsquelle nutzen, wobei die binäre Zufallsquelle auf jede Zeile und jede Spalte der Matrix 220a angewandt wird, wenn das Verfahren der 1 eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt. Hierin nachstehend wird ein Beispiel von Hardware im Detail beschrieben werden, durch welche das Verfahren der 1 implementiert ist.
  • 16 ist ein Schaltbild, welches ein Beispiel veranschaulicht, in welchem eine zufällige Permutation durch eine Rotationsoperation basierend auf einer rechteckigen Matrix in 4 erzeugt wird.
  • Bezug nehmend auf 16 kann es durch Hardware (d. h. eine einfache Struktur) implementiert sein, dass das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Rotationsoperation basierend auf einer rechtwinkligen Matrix erzeugt. Im Detail kann die Hardware eine erste Puffereinheit FB, eine erste Verdrahtungseinheit FW, eine erste Multiplexer-Einheit FM, eine erste Transponier-Verdrahtungseinheit FT, eine zweite Puffereinheit SB, eine zweite Verdrahtungseinheit SW, eine zweite Multiplexer-Einheit SM, eine zweite Transponier-Verdrahtungseinheit ST und eine dritte Puffereinheit TB aufweisen.
  • Die erste Puffereinheit FB kann einer 5×3-Matrix entsprechen. Die erste Puffereinheit FB kann eine anfängliche Permutation empfangen, welche 15 Zahlen aufweist, und kann 15 Zahlen der anfänglichen Permutation in fünf Zeilen und drei Spalten anordnen. Beispielsweise kann die erste Puffereinheit FB unter Verwendung einer Speichervorrichtung zum vorübergehenden Speichern von 15 Zahlen der anfänglichen Permutation, eine Puffervorrichtung, eine Verzögerungsvorrichtung etc. implementiert sein. In einer beispielhaften Ausführungsform kann die erste Puffereinheit FB 15 Zahlen der anfänglichen Permutation basierend auf einer Sequenz der anfänglichen Permutation anordnen. In einer anderen beispielhaften Ausführungsform kann die erste Puffereinheit FB 15 Zahlen der anfänglichen Permutation zufällig anordnen (d. h. unabhängig von einer Sequenz der anfänglichen Permutation). Wie in 16 veranschaulicht ist, kann die erste Puffereinheit FB erste bis fünfte Zeilen ROW1 bis ROW5 haben, wobei jede der ersten bis fünften Zeilen ROW1 bis ROW5 drei Zahlen aufweist. Demnach können erste Zahlen der ersten bis fünften Zeile ROW1 bis ROW5 eine erste Spalte der 5×3-Matrix konstituieren, zweite Zahlen der ersten bis fünften Zeile ROW1 bis ROW5 können eine zweite Spalte der 5×3-Matrix konstituieren und dritte Zahlen der ersten bis fünften Zeile ROW1 bis ROW5 können eine dritte Spalte der 5×3-Matrix konstituieren. Die erste Verdrahtungseinheit FW kann die erste Puffereinheit FB an die erste Multiplexer-Einheit FM koppeln. Hier kann die erste Verdrahtungseinheit FW die erste Puffereinheit FB an die erste Multiplexer-Einheit FM gemäß Zeilen (d. h. ROW1, ROW2, ROW3, ROW4, ROW5) der 5×3-Matrix koppeln.
  • Die erste Multiplexer-Einheit FM kann 15 Multiplexer aufweisen. Hier kann eine Gruppe der ersten Multiplexer-Einheit FM drei Multiplexer aufweisen. Das heißt, die erste Zeile ROW1 der ersten Puffereinheit FB kann an eine erste Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, die zweite Zeile ROW2 der ersten Puffereinheit FB kann an eine zweite Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, die dritte Zeile ROW3 der ersten Puffereinheit FB kann an eine dritte Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, die vierte Zeile ROW4 der ersten Puffereinheit FB kann an eine vierte Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, und die fünfte Zeile ROW5 der ersten Puffereinheit FB kann an eine fünfte Gruppe der ersten Multiplexereinheit FM gekoppelt sein. Hier kann eine Zeilen-Zufallszahl, welche auf die erste Puffereinheit FB angewandt wird, unabhängig für jede Zeile der ersten Puffereinheit FB (ROW1, ROW2, ROW3, ROW4, ROW5) ausgewählt werden. Zusätzlich können, da drei Zahlen jeder Zeile (d. h. ROW1, ROW2, ROW3, ROW4, ROW5) der ersten Puffereinheit FB um dieselbe Zufallszahl rotiert werden, drei Multiplexer jeder Gruppe der ersten Multiplexer-Einheit FM dasselbe Auswahlsignal (d. h. eine binäre Zufallsquelle) empfangen. Die erste Transponier-Verdrahtungseinheit FT kann die erste Multiplexer-Einheit FM an die zweite Puffereinheit SB koppeln. Hier kann die erste Transponier-Verdrahtungseinheit FT drei Multiplexer jeder Gruppe der ersten Multiplexer-Einheit FM an eine erste bis dritte Spalte COL1 bis COL3 der zweiten Puffereinheit SB verteilen. Das heißt, die erste Transponier-Verdrahtungseinheit FT kann eine Rotationsoperation für jede Spalte (d. h. COL1, COL2, COL3) der 5×3-Matrix bereitstellen. Demnach kann eine Rotationsoperation ROW_R in jeder Zeile (d. h. ROW1, ROW2, ROW3, ROW4, ROW5) der 5×3-Matrix durch die erste Puffereinheit FB, die erste Verdrahtungseinheit FW, die erste Multiplexer-Einheit FM und die erste Transponier-Verdrahtungseinheit FT durchgeführt werden.
  • Die zweite Puffereinheit SB kann ebenso unter Verwendung einer Speichervorrichtung zum vorübergehenden Speichern von 15 Zahlen, einer Puffervorrichtung, einer Verzögerungsvorrichtung etc. implementiert sein. Wie in 16 veranschaulicht ist, kann die zweite Puffereinheit SB die erste bis dritte Spalte COL1 bis COL3 haben, wovon jede der ersten bis dritten Spalte COL1 bis COL3 fünf Zahlen aufweist. Demnach können erste Zahlen der ersten bis dritten Spalte COL1 bis COL3 eine erste Zeile der 5×3-Matrix konstituieren, zweite Zahlen der ersten bis dritten Spalte COL1 bis COL3 können eine zweite Zeile der 5×3-Matrix konstituieren, dritte Zahlen der ersten bis dritten Spalte COL1 bis COL3 können eine dritte Zeile der 5×3-Matrix konstituieren, vierte Zahlen der ersten bis dritten Spalte COL1 bis COL3 können eine vierte Zeile der 5×3-Matrix konstituieren und fünfte Zahlen der ersten bis dritten Spalte COL1 bis COL3 können eine fünfte Zeile der 5×3-Matrix konstituieren. Die zweite Verdrahtungseinheit SW kann die zweite Puffereinheit SB an die zweite Multiplexer-Einheit SM koppeln. Hier kann die zweite Verdrahtungseinheit SW die zweite Puffereinheit SB an die zweite Multiplexer-Einheit SM gemäß Spalten (d. h. COL1, COL2, COL3) der 5×3-Matrix koppeln.
  • Die zweite Multiplexer-Einheit SM kann 15 Multiplexer aufweisen. Hier kann eine Gruppe der zweiten Multiplexer-Einheit SM fünf Multiplexer aufweisen. Das heißt, die erste Spalte COL1 der zweiten Puffereinheit SB kann an eine erste Gruppe der zweiten Multiplexereinheit SM gekoppelt sein, die zweite Spalte COL2 der zweiten Puffereinheit SB kann an eine zweite Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, und die dritte Spalte COL3 der zweiten Puffereinheit SB kann an eine dritte Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein. Hier kann eine Spalten-Zufallszahl, welche auf die zweite Puffereinheit SB angewandt wird, unabhängig für jede Spalte der zweiten Puffereinheit SB (d. h. COL1, COL2, COL3) gewählt werden. Zusätzlich können, da fünf Zahlen jeder Spalte (d. h. COL1, COL2, COL3) der zweiten Puffereinheit SB um dieselben Spalten-Zufallszahl rotiert werden, fünf Multiplexer jeder Gruppe der zweiten Multiplexer-Einheit SM dasselbe Auswahlsignal (d. h. eine binäre Zufallsquelle) empfangen. Die zweite Transponier-Verdrahtungseinheit ST kann die zweite Multiplexer-Einheit SM an die dritte Puffereinheit TB koppeln. Hier kann die zweite Transponier-Verdrahtungseinheit ST fünf Multiplexer jeder Gruppe der zweiten Multiplexer-Einheit SM an eine erste bis fünfte Zeile ROW1 bis ROW5 der dritten Puffereinheit TB verteilen. Demnach kann eine Rotationsoperation COL_R in jeder Spalte (d. h. COL1, COL2, COL3) der 5×3-Matrix durch die zweite Puffereinheit SB, die zweite Verdrahtungseinheit SW, die zweite Multiplexer-Einheit SM und die zweite Transponier-Verdrahtungseinheit ST durchgeführt werden.
  • Nachfolgend kann die Hardware Zahlen, welche in der dritten Puffereinheit TB angeordnet sind, gemäß Zeilen ausgeben. Beispielsweise kann die Hardware eine letztendliche Permutation (d. h. eine zufällige Permutation) durch ein nacheinanderfolgendes Ausgeben der ersten bis fünften Zeilen ROW1 bis ROW5 der dritten Puffereinheit TB ausgeben. Alternativ kann die Hardware die letztendliche Permutation durch ein zufälliges Ausgaben der ersten bis fünften Zeile ROW1 bis ROW5 der dritten Puffereinheit TB ausgeben. Zusätzlich kann die Hardware Zeilen, welche in der dritten Puffereinheit TB angeordnet sind, gemäß Spalten ausgeben. Demnach kann das Verfahren der 1 durch eine einfache Struktur implementiert werden, welche Multiplexer und Verdrahtungen hat, wenn es durch Hardware implementiert wird. Obwohl es obenstehend beschrieben ist, dass eine zufällige Permutation durch ein Durchführen einer Rotationsoperation in jeder Zeile der 5×3-Matrix und dann ein Durchführen einer Rotationsoperation in jeder Spalte der 5×3-Matrix erzeugt wird, ist die vorliegende Ausführungsform nicht darauf beschränkt. Demnach sollte es verstanden werden, dass eine zufällige Permutation durch ein Durchführen einer Rotationsoperation in jeder Spalte der 5×3-Matrix und dann ein Durchführen einer Rotationsoperation in jeder Zeile der 5×3-Matrix erzeugt werden kann.
  • 17 ist ein Flussdiagramm, welches ein Beispiel veranschaulicht, in welchem eine Mischoperation durch ein Verfahren der 1 durchgeführt wird.
  • Bezug nehmend auf 17 kann das Verfahren der 1 Zeilen-Untermatrizen durch ein Anordnen von Zahlen jeder Zeile einer Matrix in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, wobei die Matrix durch ein Anordnen von N Zahlen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, in wenigstens einer Zeile und wenigstens einer Spalte (Schritt S310) erzeugt wird. Dann kann das Verfahren der 1 geänderte Zeilen-Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der Zeilen-Untermatrizen (Schritt S320) erzeugen und es kann Zahlen, welche in jeder der geänderten Zeilen-Untermatrizen angeordnet sind, als jede Zeile einer ersten geänderten Matrix ausgeben (Schritt S330). Nachfolgend kann das Verfahren der 1 Spalten-Untermatrizen durch ein Anordnen von Zahlen jeder Spalte der ersten geänderten Matrix in wenigstens einer Reihe und wenigstens einer Spalte erzeugen (Schritt S340), es kann geänderte Spalten-Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der Spalten-Untermatrizen erzeugen (Schritt S350) und es kann dann Zahlen, welche in jeder der geänderten Spalten-Untermatrizen angeordnet sind, als jede Spalte einer zweiten geänderten Matrix ausgeben (Schritt S360). In dem Verfahren der 1 kann eine Mischoperation in jeder Zeile der Matrix einer Operation entsprechen, durch welche eine geänderte Zeilen-Untermatrix durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte einer Zeilen-Untermatrix erzeugt wird, wobei die Zeilen-Untermatrix durch ein Anordnen von Zahlen einer Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte erzeugt wird, und dann werden die Zahlen der geänderten Zeilen-Untermatrix gemäß Zeilen oder Spalten ausgegeben. Ähnlich kann eine Mischoperation in jeder Spalte der geänderten Matrix einer Operation entsprechen, durch welche eine geänderte Spalten-Untermatrix durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte einer Spalten-Untermatrix erzeugt wird, wobei die Spalten-Untermatrix durch ein Anordnen von Zahlen einer Spalte der ersten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte erzeugt wird, und dann werden Zahlen der geänderten Spalten-Untermatrix gemäß Zeilen oder Spalten ausgegeben. Hierin nachstehend wird ein Beispiel, in welchem das Verfahren der 1 eine Mischoperation durchführt, im Detail beschrieben werden.
  • Die 18 bis 23 sind Diagramme, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch eine Mischoperation in 17 erzeugt wird.
  • Bezug nehmend auf 18 kann das Verfahren der 1 eine letztendliche Permutation FPU (beispielsweise {B, 0, 5, 3, 2, D, 9, 7, 6, A, E, 8, C, 4, 1, F}) durch ein Durchführen einer Zufalls-Anordnungsoperation auf einer anfänglichen Permutation IPU (beispielsweise {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}) ausgeben.
  • Bezug nehmend auf die 19 bis 21 kann das Verfahren der 1 eine Matrix 140a durch ein Anordnen der Zahlen (d. h. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) der anfänglichen Permutation IPU in vier Zeilen und vier Spalten erzeugen. Obwohl es in 19 veranschaulicht ist, dass die Matrix 140a eine erste bis vierte Zeile (d. h. {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, A, B}, {C, D, E, F}) durch ein Anordnen von Zahlen der anfänglichen Permutation IPU basierend auf einer Sequenz der anfänglichen Permutation IPU aufweist, ist eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU nicht darauf beschränkt. Das heißt, eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU kann verschieden bestimmt werden, unabhängig von einer Sequenz der anfänglichen Permutation IPU. Dann kann das Verfahren der 1 eine erste geänderte Matrix 140b durch ein Durchführen einer Mischoperation (d. h. SUFF_1, SUFF_2, SUFF_3, SUFF_4) in jeder Zeile der Matrix 140a erzeugen. Das heißt, eine erste Mischoperation SUFF_1 kann in der ersten Zeile (d. h. {0, 1, 2, 3}) der Matrix 140a durchgeführt werden, eine zweite Mischoperation SUFF_2 kann in der zweiten Zeile (d. h. {[4, 5, 6, 7}) der Matrix 140a durchgeführt werden, eine dritte Mischoperation SUFF_3 kann in der dritten Zeile (d. h. {8, 9, A, B}) der Matrix 140a durchgeführt werden, und eine vierte Mischoperation SUFF_4 kann in der vierten Zeile (d. h. {C, D, E, F}) der Matrix 140a durchgeführt werden.
  • 20 zeigt ein Beispiel, in welchem eine erste Zeile (d. h. {2, 0, 1, 3}) der ersten geänderten Matrix 140b durch ein Durchführen der ersten Mischoperation SUFF_1 in der ersten Zeile (d. h. {0, 1, 2, 3}) der Matrix 140a erzeugt wird. In anderen Worten gesagt kann das Verfahren der 1 eine Zeilen-Untermatrix SUB_MATRIX1 durch ein Anordnen von Zahlen (d. h. 0, 1, 2, 3) der ersten Zeile der Matrix 140a in wenigstens einer Zeile und wenigstens einer Spalte erzeugen. In einer beispielhaften Ausführungsform können Zahlen (d. h. 0, 1, 2, 3) der ersten Zeile der Matrix 140a nacheinanderfolgend in der Zeilen-Untermatrix SUB_MATRIX1 angeordnet werden. In einer anderen beispielhaften Ausführungsform können Zahlen (d. h. 0, 1, 2, 3) der ersten Zeile der Matrix 140a zufällig in der Zeilen-Untermatrix SUB_MATRIX1 angeordnet werden. Dann kann das Verfahren der 1 eine geänderte Zeilen-Untermatrix SUB_MATRIX2 durch ein Durchführen einer Rotationsoperation (d. h. ROTATE1, ROTATE2) in jeder Zeile und jeder Spalte der Zeilen-Untermatrix SUB_MATRIX1 erzeugen. Hier kann eine Zeilen-Zufallszahl unabhängig für jede Zeile der Zeilen-Untermatrix SUB_MATRIX1 ausgewählt werden, und eine Spalten-Zufallszahl kann unabhängig für jede Spalte der Zeilen-Untermatrix SUB_MATRIX1 ausgewählt werden. Zusätzlich kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[log₂w] – 1 sein, wobei w die Anzahl von Zahlen ist, welche in jeder Zeile der Zeilen-Untermatrix SUB_MATRIX1 angeordnet sind. Weiterhin kann ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[log₂w] – 1 sein, wobei w die Anzahl von Zahlen ist, welche in jeder Spalte der Zeilen-Untermatrix SUB_MATRIX1 angeordnet sind. Nachfolgend kann das Verfahren der 1 Zahlen (d. h. 2, 0, 1, 3), welche in der geänderten Zeilen-Untermatrix SUB_MATRIX2 angeordnet sind, gemäß Zeilen oder Spalten als eine erste Zeile der ersten geänderten Matrix 140b ausgeben. Auf diese Art und Weise kann eine zweite bis vierte Zeile der ersten geänderten Matrix 140b jeweils durch ein Durchführen einer zweiten bis vierten Mischoperation SUFF_2, SUFF_3, SUFF_4 in der zweiten bis vierten Zeile der Matrix 140a erzeugt werden.
  • Bezug nehmend auf die 21 bis 23 kann das Verfahren der 1 eine zweite geänderte Matrix 140c durch ein Durchführen einer Mischoperation (d. h. SUFF_1, SUFF_2, SUFF_3, SUFF_4) in jeder Spalte der ersten geänderten Matrix 140b erzeugen. Das heißt, eine erste Mischoperation SUFF_1 kann in der ersten Spalte (d. h. {2, 6, B, C}) der ersten geänderten Matrix 140b durchgeführt werden, eine zweite Mischoperation SUFF_2 kann in der zweiten Spalte (d. h. {0, 4, A, D}) der ersten geänderten Matrix 140b durchgeführt werden, eine dritte Mischoperation SUFF_3 kann in der dritten Spalte (d. h. {1, 5, 9, E}) der ersten geänderten Matrix 140b durchgeführt werden, und eine vierte Mischoperation SUFF_4 kann in der vierten Spalte (d. h. {3, 7, 8, F}) der ersten geänderten Matrix 140b durchgeführt werden.
  • 22 zeigt ein Beispiel, in welchem eine erste Spalte (d. h. {B, 2, 6, C}) der zweiten geänderten Matrix 140c durch ein Durchführen der ersten Mischoperation SUFF_1 in der ersten Spalte (d. h. {2, 6, B, C}) der ersten geänderten Matrix 140b erzeugt wird. In anderen Worten gesagt kann das Verfahren der 1 eine Spalten-Untermatrix SUB_MATRIX3 durch ein Anordnen von Zahlen (d. h. 2, 6, B, C) der ersten Spalte der ersten geänderten Matrix 140b in wenigstens einer Zeile und wenigstens einer Spalte erzeugen. In einer beispielhaften Ausführungsform können Zahlen (d. h. 2, 6, B, C) der ersten Spalte der ersten geänderten Matrix 140b sequentiell bzw. nacheinanderfolgend in der Spalten-Untermatrix SUB_MATRIX3 angeordnet werden. In einer anderen beispielhaften Ausführungsform können Zahlen (d. h. 2, 6, B, C) der ersten Spalte der ersten geänderten Matrix 140b zufällig in der Spalten-Untermatrix SUB_MATRIX3 angeordnet werden. Dann kann das Verfahren der 1 eine geänderte Spalten-Untermatrix SUB_MATRIX4 durch ein Durchführen einer Rotationsoperation (d. h. ROTATE1, ROTATE2) in jeder Zeile und jeder Spalte der Spalten-Untermatrix SUB_MATRIX3 erzeugen. Hier kann eine Zeilen-Zufallszahl unabhängig für jede Zeile der Spalten-Untermatrix SUB_MATRIX3 ausgewählt werden, und eine Spalten-Zufallszahl kann unabhängig für jede Spalte der Spalten-Untermatrix SUB_MATRIX3 ausgewählt werden. Zusätzlich kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[log₂w] – 1 sein, wobei w die Anzahl von Zahlen ist, welche in jeder Zeile der Spalten-Untermatrix SUB_MATRIX3 angeordnet sind. Weiterhin kann ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[log₂w] – 1 sein, wobei w die Anzahl von Zahlen ist, welche in jeder Spalte der Spalten-Untermatrix SUB_MATRIX3 angeordnet sind. Nachfolgend kann das Verfahren der 1 Zahlen (d. h. B, 2, 6, C), welche in der geänderten Spalten-Untermatrix SUB_MATRIX4 angeordnet sind, gemäß Zeilen oder Spalten als eine erste Spalte der zweiten geänderten Matrix 140c ausgeben. Auf diese Art und Weise können eine zweite bis vierte Spalte der zweiten geänderten Matrix 140c durch jeweils ein Durchführen einer zweiten bis vierten Mischoperation SUFF_2, SUFF_3, SUFF_4 in der zweiten bis vierten Spalte der ersten geänderten Matrix 140b erzeugt werden.
  • Wie in 23 veranschaulicht ist, kann das Verfahren der 1 Zahlen, welche in der zweiten geänderten Matrix 140c angeordnet sind, gemäß Zeilen oder Spalten ausgeben. Es ist in 18 veranschaulicht, dass Zahlen, welche in der zweiten geänderten Matrix 140c angeordnet sind, sequentiell gemäß Zeilen ausgegeben werden. Das heißt, die letztendliche Permutation FPU (d. h. {B, 0, 5, 3, 2, D, 9, 7, 6, A, E, 8, C, 4, 1, F}) kann durch ein sequentielles Ausgeben der ersten Zeile (d. h. {B, 0, 5, 3}) der zweiten geänderten Matrix 140c, der zweiten Zeile (d. h. {2, D, 9, 7}) der zweiten geänderten Matrix 140c, der dritten Zeile (d. h. {6, A, E, 8}) der zweiten geänderten Matrix 140c und der vierten Zeile (d. h. {C, 4, 1, F}) der zweiten geänderten Matrix 140c erzeugt werden. Die vorliegende beispielhafte Ausführungsform ist jedoch nicht darauf beschränkt. Beispielsweise können Zahlen, welche in der zweiten geänderten Matrix 140c angeordnet sind, sequentiell gemäß Spalten ausgegeben werden. Wie obenstehend beschrieben ist, kann das Verfahren der 1 durch eine einfache Struktur (d. h. Hardware) implementiert werden, in welcher eine Mehrzahl von Multiplexern unter Verwendung einer Mehrzahl von Verdrahtungen gekoppelt sind, da das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Mischoperation in jeder Zeile und jeder Spalte der Matrix 140a, welche der anfänglichen Permutation IPU entspricht, erzeugt. Zusätzlich kann das Verfahren der 1 effizient eine binäre Zufallsquelle verwenden, wobei die binäre Zufallsquelle auf jede Zeile und jede Spalte der Matrix 140a angewandt wird, wenn das Verfahren der 1 eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt. Hierin nachstehend wird ein Beispiel von Hardware, durch welche das Verfahren der 1 implementiert wird, im Detail beschrieben werden.
  • 24 ist ein Schaltbild, welches ein Beispiel veranschaulicht, in welchem eine zufällige Permutation durch eine Mischoperation in 17 erzeugt wird.
  • Bezug nehmend auf 24 können die Operationen der zufälligen Permutation durch Hardware (d. h. eine einfache Struktur) implementiert sein, so dass das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Mischoperation basierend auf einer Matrix erzeugt. Im Detail kann die Hardware eine erste Puffereinheit FB, eine erste Verdrahtungseinheit FW, eine erste Multiplexer-Einheit FM, eine erste Transponier-Verdrahtungseinheit FT, eine zweite Puffereinheit SB, eine zweite Verdrahtungseinheit SW, eine zweite Multiplexer-Einheit SM, eine zweite Transponier-Verdrahtungseinheit ST und eine dritte Puffereinheit TB aufweisen.
  • Die erste Puffereinheit FB kann einer 4×4-Matrix entsprechen. Die erste Puffereinheit FB kann eine anfängliche Permutation, welche 16 Zahlen aufweist, empfangen, und sie kann 16 Zahlen der anfänglichen Permutation in vier Zeilen und vier Spalten anordnen. Beispielsweise kann die erste Puffereinheit FB unter Verwendung einer Speichervorrichtung zum vorübergehenden Speichern von 16 Zahlen der anfänglichen Permutation, einer Puffervorrichtung, einer Verzögerungsvorrichtung etc. implementiert sein. In einer beispielhaften Ausführungsform kann die erste Puffereinheit FB 16 Zahlen der anfänglichen Permutation basierend auf einer Sequenz der anfänglichen Permutation anordnen. In einer anderen beispielhaften Ausführungsform kann die erste Puffereinheit FB 16 Zahlen der anfänglichen Permutation zufällig anordnen (d. h. unabhängig von einer Sequenz der anfänglichen Permutation). Wie in 24 veranschaulicht ist, kann die erste Puffereinheit FB eine erste bis vierte Zeile ROW1 bis ROW4 haben, wobei jede der ersten bis vierten Zeilen ROW1 bis ROW4 vier Zahlen aufweist. Demnach können die ersten Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 eine erste Spalte der 4×4-Matrix konstituieren, zweite Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 können eine zweite Spalte der 4×4-Matrix konstituieren, dritte Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 können eine dritte Spalte der 4×4-Matrix konstituieren und vierte Zahlen der ersten bis vierten Zeile ROW1 bis ROW4 können eine vierte Spalte der 4×4-Matrix konstituieren. Die erste Verdrahtungseinheit FW kann die erste Puffereinheit FB an die erste Multiplexer-Einheit FM koppeln. Hier kann die erste Verdrahtungseinheit FW die erste Puffereinheit FB an die erste Multiplexer-Einheit FM gemäß Zeilen (d. h. ROW1, ROW2, ROW3, ROW4) der 4×4-Matrix koppeln.
  • Die erste Multiplexer-Einheit FM kann 16 Multiplexer aufweisen. Hier kann eine Gruppe der ersten Multiplexer-Einheit FM vier Multiplexer aufweisen. Das heißt, die erste Zeile ROW1 der ersten Puffereinheit FB kann an eine erste Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, die zweite Zeile ROW2 der ersten Puffereinheit FB kann an eine zweite Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein, die dritte Zeile ROW3 der ersten Puffereinheit FB kann an eine dritte Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein und die vierte Zeile ROW4 der ersten Puffereinheit FB kann an eine vierte Gruppe der ersten Multiplexer-Einheit FM gekoppelt sein. Hier wird ein Auswahlsignal (d. h. eine binäre Zufallsquelle), welches vier Multiplexer jeder Gruppe der ersten Multiplexer-Einheit FM eingegeben bzw. zugeführt wird, durch eine Mischoperation erzeugt. Die erste Transponier-Verdrahtungseinheit FT kann die erste Multiplexer-Einheit FM an die zweite Puffereinheit SB koppeln. Hier kann die erste Transponier-Verdrahtungseinheit FT vier Multiplexer jeder Gruppe der ersten Multiplexer-Einheit FM an eine erste bis vierte Spalte COL1 bis COL4 der zweiten Puffereinheit SB verteilen. Das heißt, die erste Transponier-Verdrahtungseinheit FT kann eine Mischoperation für jede Spalte (d. h. COL1, COL2, COL3, COL4) der 4×4-Matrix bereitstellen. Demnach kann eine Mischoperation ROW_S in jeder Zeile (d. h. ROW1, ROW2, ROW3, ROW4) der 4×4-Matrix durch die erste Puffereinheit FB, die erste Verdrahtungseinheit FW, die erste Multiplexer-Einheit FM und die erste Transponier-Verdrahtungseinheit FT durchgeführt werden.
  • Die zweite Puffereinheit SB kann ebenso unter Verwendung einer Speichervorrichtung zum vorübergehenden Speichern von 16 Zahlen, einer Puffervorrichtung, einer Verzögerungsvorrichtung etc. implementiert sein. Wie in 24 veranschaulicht ist, kann die zweite Puffereinheit SB die erste bis vierte Spalte COL1 bis COL4 haben, wobei jede der ersten bis vierten Spalte COL1 bis COL4 vier Zahlen aufweist. Demnach können erste Zahlen der ersten bis vierten Spalte COL1 bis COL4 eine erste Zeile der 4×4-Matrix konstituieren, zweite Zahlen der ersten bis vierten Spalte COL1 bis COL4 können eine zweite Zeile der 4×4-Matrix konstituieren, dritte Zahlen der ersten bis vierten Spalte COL1 bis COL4 können eine dritte Zeile der 4×4-Matrix konstituieren und vierte Zahlen der ersten bis vierten Spalte COL1 bis COL4 können eine vierte Zeile der 4×4-Matrix konstituieren. Die zweite Verdrahtungseinheit SW kann die zweite Puffereinheit SB an die zweite Multiplexer-Einheit SM koppeln. Hier kann die zweite Verdrahtungseinheit SW die zweite Puffereinheit SB an die zweite Multiplexer-Einheit SM gemäß Spalten (d. h. COL1, COL2, COL3, COL4) der 4×4-Matrix koppeln.
  • Die zweite Multiplexer-Einheit SM kann 16 Multiplexer aufweisen. Hier kann eine Gruppe der zweiten Multiplexer-Einheit SM vier Multiplexer aufweisen. Das heißt, die erste Spalte COL1 der zweiten Puffereinheit SB kann an eine erste Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, die zweite Spalte COL2 der zweiten Puffereinheit SB kann an eine zweite Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, die dritte Spalte COL3 der zweiten Puffereinheit SB kann an eine dritte Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein, und die vierte Spalte COL4 der zweiten Puffereinheit SB kann an eine vierte Gruppe der zweiten Multiplexer-Einheit SM gekoppelt sein. Hier wird ein Auswahlsignal (d. h. eine binäre Zufallsquelle), welche vier Multiplexer jeder Gruppe der zweiten Multiplexereinheit SM zugeführt wird, durch eine Mischoperation erzeugt. Die zweite Transponier-Verdrahtungseinheit ST kann die zweite Multiplexer-Einheit SM an die dritte Puffereinheit TB koppeln. Hier kann die zweite Transponier-Verdrahtungseinheit ST vier Multiplexer jeder Gruppe der zweiten Multiplexer-Einheit SM an eine erste bis vierte Zeile ROW1 bis ROW4 der dritten Puffereinheit TB verteilen. Demnach kann eine Mischoperation COL_S in jeder Spalte (d. h. COL1, COL2, COL3, COL4) der 4×4-Matrix durch die zweite Puffereinheit SB, die zweite Verdrahtungseinheit SW, die zweite Multiplexer-Einheit SM und die zweite Transponier-Verdrahtungseinheit ST durchgeführt werden.
  • Nachfolgend kann die Hardware Zahlen, welche in der dritten Puffereinheit TB angeordnet sind, gemäß Zeilen ausgeben. Beispielsweise kann die Hardware eine letztendliche Permutation (d. h. eine zufällige Permutation) durch ein sequentielles Ausgeben der ersten bis vierten Zeilen ROW1 bis ROW4 der dritten Puffereinheit TB ausgeben. Alternativ kann die Hardware die letztendliche Permutation durch ein zufälliges Ausgeben der ersten bis vierten Zeile ROW1 bis ROW4 der dritten Puffereinheit TB ausgeben. Zusätzlich kann die Hardware Zahlen, welche in der dritten Puffereinheit TB angeordnet sind, gemäß Spalten ausgeben. Demnach kann das Verfahren der 1 durch eine einfache Struktur implementiert werden, welche Multiplexer und Verdrahtungen hat, wenn es durch Hardware implementiert wird. Obwohl es obenstehend beschrieben ist, dass eine zufällige Permutation durch ein Durchführen einer Mischoperation in jeder Zeile der 4×4-Matrix und dann durch ein Durchführen einer Mischoperation in jeder Spalte der 4×4-Matrix erzeugt wird, ist die vorliegende Ausführungsform nicht darauf beschränkt. Demnach sollte es verstanden werden, dass eine zufällige Permutation durch ein Durchführen einer Mischoperation in jeder Spalte der 4×4-Matrix und dann durch ein Durchführen einer Mischoperation in jeder Zeile der 4×4-Matrix erzeugt werden kann.
  • 25 ist eine Darstellung, welche eine Hardware-Komplexität veranschaulicht, wenn ein Verfahren der 1 durch Hardware implementiert wird.
  • Bezug nehmend auf 25 ist eine Hardware-Komplexität O(N) gemäß einer Größe N einer zufälligen Permutation veranschaulicht. Hier zeigt ein erster Graph A eine gesamte Hardware-Komplexität O(N^2) in Bezug auf ein herkömmliches Zufallspermutations-Erzeugungsverfahren, wie beispielsweise ein Fisher und Yates-Verfahren etc. an. Andererseits zeigt ein zweiter Graph B eine gesamte Hardware-Komplexität O(N^1,5) bezogen auf ein Verfahren der 1 an.
  • Wie in 10 veranschaulicht ist, kann, wenn das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Rotationsoperation erzeugt, das Verfahren der 1 durch Hardware implementiert sein, welche 32 vier-Eingabe und einen Ausgabe-Multiplexer (hierin nachstehend 4-1-Multiplexer) und eine Mehrzahl von Drähten aufweist. Beispielsweise kann, da die Anzahl der 4-1-Multiplexer zum zufälligen Anordnen von 16 Zahlen (d. h. N = 16) 32 ist (d. h. 2·N = 32), eine Hardware-Komplexität basierend auf der Anzahl der 4-1-Multiplexer O (2·N) sein. Zusätzlich kann, da jeder der 4-1-Multiplexer vier Eingänge und einen Ausgang hat (d. h. N^0,5 = 4) eine Hardware-Komplexität basierend auf vier Eingängen und einem Ausgang O (N^0,5) sein. Demnach kann eine gesamte Hardware-Komplexität O (2·N^1,5) (d. h. O (2·N)·O (N^0,5) = O (2·N^1,5)) sein. Da jedoch ein Koeffizient vernachlässigbar ist, kann eine gesamte Hardware-Komplexität O(N^1,5) sein. Ähnlich kann, wie in 24 veranschaulicht ist, wenn das Verfahren der 1 eine zufällige Permutation durch ein Durchführen einer Mischoperation erzeugt, das Verfahren der 1 durch Hardware implementiert sein, welche 32 4-1-Multiplexer und eine Mehrzahl von Verdrahtungen aufweist. Hier ist eine Art und Weise, in welcher die Hardware der 10 ein Auswahlsignal erzeugt, welches an die 4-1-Multiplexer angelegt wird, unterschiedlich von einer Art und Weise, in welcher die Hardware der 24 ein Auswahlsignal erzeugt, welches an die 4-1-Multiplexer angelegt wird. Im Detail kann die Hardware der 10 eine binäre Zufallsquelle als ein Auswahlsignal die 4-1-Multiplexer anlegen. Andererseits kann die Hardware der 24 eine binäre Zufallsquelle unter Verwendung von Untermatrizen verarbeiten und dann kann sie die binäre Zufallsquelle als ein Auswahlsignal an die 4-1-Multiplexer anlegen. Hier ist eine Hardware-Komplexität zum Bearbeiten einer binären Zufallsquelle von 2 Bit in der Hardware von 24 O(N^1,25). Demnach kann, wenn eine Hardware-Komplexität O(N^1,25) zu einer Hardware-Komplexität O(N^1,5) hinzugefügt wird, eine gesamte Hardware-Komplexität O(N^1,5) sein, da die Hardware-Komplexität O(N^1,25) vernachlässigbar ist, verglichen zu der Hardware-Komplexität O(N^1,5). Wie obenstehend beschrieben ist, kann das Verfahren der 1 durch eine einfache Struktur implementiert sein, welche Multiplexer und Verdrahtungen hat, wenn sie durch Hardware implementiert ist. Zusätzlich kann das Verfahren der 1 effizient eine binäre Zufallsquelle verwenden.
  • 26 ist ein Flussdiagramm, welches ein Verfahren zum Erzeugen einer zufälligen Permutation gemäß einer beispielhaften Ausführungsform veranschaulicht.
  • Bezug nehmend auf 26 kann das Verfahren der 26 eine Matrix durch ein Anordnen von N Zahlen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, in wenigstens einer Zeile und wenigstens einer Spalte erzeugen (Schritt S410), es kann eine erste geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation basierend auf wenigstens einer Zufallszahl in jeder Zeile der Matrix erzeugen (Schritt S420) und es kann eine zweite geänderte Matrix, welche einer transponierte Matrix der ersten geänderten Matrix entspricht, erzeugen (Schritt S430). Zusätzlich kann das Verfahren der 26 eine dritte geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation basierend auf wenigstens einer Zufallszahl in jeder Zeile der zweiten geänderten Matrix erzeugen (Schritt S440), es kann eine vierte geänderte Matrix, welche einer transponierten Matrix der dritten geänderten Matrix entspricht, erzeugen (Schritt S450) und es kann N Zahlen, welche in der vierten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten ausgeben (Schritt S460). In beispielhaften Ausführungsformen können eine quadratische Matrix oder eine rechteckige Matrix als die Matrix ausgewählt werden.
  • Das Verfahren der 26 kann die Matrix (beispielsweise die quadratische Matrix oder die rechteckige Matrix) durch ein Anordnen von N Zahlen in wenigstens einer Zeile und wenigstens einer Spalte erzeugen (Schritt S410). Hier können die N Zahlen eine anfängliche Permutation konstituieren. Wenn N Zahlen in der Matrix angeordnet werden, können N Zahlen in der Matrix basierend auf einer Sequenz der anfänglichen Permutation angeordnet werden, oder N Zahlen können in der Matrix unabhängig von einer Sequenz der anfänglichen Permutation angeordnet werden. In beispielhaften Ausführungsformen können N Zahlen jeweils eine binäre Form haben. Beispielsweise können unter der Annahme, dass die anfängliche Permutation {00, 01, 10, 11} ist, N Zahlen „00”, „01”, „10” und „11” aufweisen. In diesem Fall kann die anfängliche Permutation {00, 01, 10, 11} durch eine binäre Zufallsquelle {0, 1} zufällig angeordnet werden.
  • Nachdem die Matrix durch ein Anordnen von N Zahlen in wenigstens einer Zeile und wenigstens einer Spalte erzeugt ist (Schritt S410), kann das Verfahren der 1 die erste geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der quadratischen Matrix oder der rechteckigen Matrix erzeugen (Schritt S420). In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation einer Rotationsoperation der einer Mischoperation entsprechen. Dann kann das Verfahren der 26 die zweite geänderte Matrix erzeugen, welche der transponierten Matrix der ersten geänderten Matrix entspricht (S430). Demnach kann das Verfahren der 26 nicht eine Zufalls-Anordnungsoperation in jeder Spalte der ersten geänderten Matrix durchführen. Anstelle dessen kann das Verfahren der 26 eine Zufalls-Anordnungsoperation in jeder Zeile der zweiten geänderten Matrix durchführen, welche der transponierten Matrix der ersten geänderten Matrix entspricht. Nachdem die zweite geänderte Matrix erzeugt ist (Schritt S430) kann das Verfahren der 26 die dritte geänderte Matrix durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der zweiten geänderten Matrix erzeugen (Schritt S440). Hier kann die Zufalls-Anordnungsoperation einer Rotationsoperation oder einer Mischoperation entsprechen.
  • Nachfolgend kann das Verfahren der 26 die vierte geänderte Matrix, welche der transponierten Matrix der dritten geänderten Matrix entspricht, erzeugen (Schritt S450) und es kann dann N Zahlen, welche in der vierten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten ausgeben (Schritt S460). Wie obenstehend beschrieben ist, kann das Verfahren der 26 eine zufällige Permutation durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) in jeder Zeile und jeder Spalte einer Matrix, die einer anfänglichen Permutation entspricht, erzeugen. Demnach kann das Verfahren der 26 durch eine einfache Struktur (d. h. Hardware) implementiert werden, in welcher eine Mehrzahl von Multiplexer unter Verwendung einer Mehrzahl von Verdrahtungen gekoppelt sind. Zusätzlich kann das Verfahren der 26 effizient eine binäre Zufallsquelle verwenden, wobei die binäre Zufallsquelle auf jede Zeile und jede Spalte der Matrix angewandt wird, wenn das Verfahren der 26 eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt. Weiterhin kann das Verfahren der 26 leicht durch Hardware implementiert werden, verglichen zu dem Verfahren der 1, da das Verfahren der 26 keine Zufalls-Anordnungsoperation in jeder Zeile und jeder Spalte einer Matrix durchführt (d. h. das Verfahren der 26 führt eine Zufalls-Anordnungsoperation in nur jeder Zeile einer Matrix unter Verwendung einer transponierten Matrix durch). Obwohl es obenstehend beschrieben ist, dass eine zufällige Permutation durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der Matrix und der zweiten geänderten Matrix erzeugt wird, ist die vorliegende Ausführungsform nicht darauf beschränkt. Demnach sollte es verstanden werden, dass eine zufällige Permutation durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der Matrix und der zweiten geänderten Matrix erzeugt werden kann.
  • Die 27 bis 32 sind Diagramme, welche ein Beispiel veranschaulichen, in welchem eine zufällige Permutation durch ein Verfahren der 26 erzeugt wird.
  • Bezug nehmend auf 27 kann das Verfahren der 26 eine letztendliche Permutation FPU (beispielsweise {C, A, 4, 2, 3, D, B, 5, 6, 0, E, 8, 9, 7, 1, F}) durch ein Durchführen einer Zufalls-Anordnungsoperation auf einer anfänglichen Permutation IPU (beispielsweise {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}) ausgeben.
  • Bezug nehmend auf die 28 und 29 kann das Verfahren der 26 eine Matrix 220a durch ein Anordnen von Zahlen (d. h. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) der anfänglichen Permutation IPU in vier Zeilen und vier Spalten erzeugen. Obwohl es in 28 veranschaulicht ist, dass die Matrix 220a eine erste bis vierte Zeile (d. h. {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, A, B}, {C, D, E, F}) durch ein Anordnen von Zahlen der anfänglichen Permutation IPU basierend auf einer Sequenz der anfänglichen Permutation IPU aufweist, ist eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU nicht darauf beschränkt. Das heißt, eine Sequenz zum Anordnen von Zahlen der anfänglichen Permutation IPU kann verschieden bestimmt werden, unabhängig von einer Sequenz der anfänglichen Permutation IPU. Dann kann das Verfahren der 26 eine erste geänderte Matrix 220b durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. RA_1, RA_2, RA_3, RA_4) in jeder Zeile der Matrix 220b erzeugen. Hier kann die Zufalls-Anordnungsoperation (d. h. RA_1, RA_2, RA_3, RA_4) eine Rotationsoperation oder eine Mischoperation sein. Das heißt, eine erste Zufalls-Anordnungsoperation RA_1 kann in der ersten Zeile (d. h. {0, 1, 2, 3}) der Matrix 220a durchgeführt werden, eine zweite Zufalls-Anordnungsoperation RA_2 kann in der zweiten Zeile (d. h. {4, 5, 6, 7}) der Matrix 220a durchgeführt werden, eine dritte Zufalls-Anordnungsoperation RA_3 kann in der dritten Zeile (d. h. {8, 9, A, B}) der Matrix 220a durchgeführt werden und eine vierte Zufalls-Anordnungsoperation RA_4 kann in der vierten Zeile (d. h. {C, D, E, F}) der Matrix 220a durchgeführt werden.
  • Nachdem eine Zufalls-Anordnungsoperation (d. h. RA_1, RA_2, RA_3, RA_4) in jeder Zeile der Matrix 220a durchgeführt ist, kann die erste geänderte Matrix 220b eine erste bis vierte Zeile (d. h. {3, 0, 1, 2}, {6, 7, 4, 5}, {9, A, B, 8}, {C, D, E, F}) aufweisen. 29 zeigt ein Beispiel der ersten geänderten Matrix 220b, wenn eine Rotationsoperation als die Zufalls-Anordnungsoperation in jeder Zeile der Matrix 220a durchgeführt wird. Dann kann das Verfahren der 26 die zweite geänderte Matrix 220c, welche der transponierten Matrix der ersten geänderten Matrix 220b entspricht, erzeugen. Demnach kann die zweite geänderte Matrix 220c eine erste bis vierte Zeile (d. h. {3, 6, 9, C}, {0, 7, A, D}, {1, 4, B, E}, {2, 5, 8, F}) aufweisen. Nachfolgend kann das Verfahren der 26 die dritte geänderte Matrix 220d durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. RA_1, RA_2, RA_3, RA_4) in jeder Zeile der zweiten geänderten Matrix 220c erzeugen. Hier kann die Zufalls-Anordnungsoperation (d. h. RA_1, RA_2, RA_3, RA_4) eine Rotationsoperation oder eine Mischoperation sein. Das heißt, eine erste Zufalls-Anordnungsoperation RA_1 kann in der ersten Zeile (d. h. {3, 6, 9, C}) der zweiten geänderten Matrix 220c durchgeführt werden, eine zweite Zufalls-Anordnungsoperation RA_2 kann in der zweiten Zeile (d. h. {0, 7, A, D}) der zweiten geänderten Matrix 220c durchgeführt werden, eine dritte Zufalls-Anordnungsoperation RA_3 kann in der dritten Zeile (d. h. {1, 4, B, E}) der zweiten geänderten Matrix 220c durchgeführt werden, und eine vierte Zufalls-Anordnungsoperation RA_4 kann in der vierten Zeile (d. h. {2, 5, 8, F}) der zweiten geänderten Matrix 220c durchgeführt werden.
  • Nachdem eine Zufalls-Anordnungsoperation (d. h. RA_1, RA_2, RA_3, RA_4) in jeder Zeile der zweiten geänderten Matrix 220c durchgeführt ist, kann die dritte geänderte Matrix 220d eine erste bis vierte Zeile (d. h. {C, 3, 6, 9}, {A, D, 0, 7}, {4, B, E, 1}, {2, 5, 8, F}) aufweisen. 31 zeigt ein Beispiel der dritten geänderten Matrix 220d wenn eine Rotationsoperation als die Zufalls-Anordnungsoperation in jeder Zeile der zweiten geänderten Matrix 220c durchgeführt wird. Wie in 32 veranschaulicht ist, kann das Verfahren der 26 die vierte geänderte Matrix 220e, welche der transponierten Matrix der dritten geänderten Matrix 220d entspricht, erzeugen. Demnach kann die vierte geänderte Matrix 220e eine erste bis vierte Zeile (d. h. {C, A, 4, 2}, {3, D, B, 5}, {6, 0, E, 8}, {9, 7, 1, F}) aufweisen. Nachfolgend kann das Verfahren der 26 Zahlen, welche in der vierten geänderten Matrix 220e angeordnet sind, gemäß Zeilen oder Spalten ausgeben. Es ist in 27 veranschaulicht, dass Zahlen, welche in der vierten geänderten Matrix 220e angeordnet sind, sequentiell gemäß Zeilen ausgegeben werden. Das heißt, die letztendliche Permutation FPU (d. h. {C, A, 4, 2, 3, D, B, 5, 6, 0, E, 8, 9, 7, 1, F}) kann durch ein sequentielles Ausgeben der ersten Zeile (d. h. {C, A, 4, 2}) der vierten geänderten Matrix 220e, der zweiten Zeile (d. h. {3, D, B, 5}) der vierten geänderten Matrix 220e, der dritten Zeile (d. h. {6, 0, E, 8}) der vierten geänderten Matrix 220e und der vierten Zeile (d. h. {9, 7, 1, F}) der vierten geänderten Matrix 220e erzeugt werden. Die vorliegende beispielhafte Ausführungsform ist jedoch nicht darauf beschränkt. Beispielsweise können Zahlen, welche in der vierten geänderten Matrix 220e angeordnet sind, sequentiell gemäß Spalten ausgegeben werden. Wie obenstehend beschrieben ist, kann das Verfahren der 26 durch eine einfache Struktur (d. h. Hardware) implementiert werden, in welcher eine Mehrzahl von Multiplexer unter Verwendung einer Mehrzahl von Verdrahtungen gekoppelt sind, da das Verfahren der 26 eine zufällige Permutation durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile und jeder Spalte der Matrix 220a, welche der anfänglichen Permutation IPU entspricht, erzeugt. Zusätzlich kann das Verfahren der 26 effizient eine binäre Zufallsquelle verwenden, wobei die binäre Zufallsquelle auf jede Zeile und jede Spalte der Matrix 220a angewandt wird, wenn das Verfahren der 26 eine zufällige Permutation basierend auf der binären Zufallsquelle erzeugt.
  • 33 ist eine Blockdarstellung, welche eine Zufallspermutations-Erzeugungsvorrichtung gemäß einer beispielhaften Ausführungsform veranschaulicht.
  • Bezug nehmend auf 33 kann die Zufallspermutations-Erzeugungsvorrichtung 300 eine Permutations-Eingabeeinheit bzw. Permutations-Eingangseinheit 320, eine erste Matrix-Änderungseinheit 340, eine zweite Matrix-Änderungseinheit 360 und eine Permutations-Ausgabeeinheit 380 aufweisen.
  • Die Permutations-Eingabeeinheit 320 kann eine anfängliche Permutation IPU, welche N Zahlen hat, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, empfangen, und sie kann N Zahlen der anfänglichen Permutation IPU in einer vorbestimmten Matrix MAT anordnen. In einer beispielhaften Ausführungsform kann die vorbestimmte Matrix MAT eine quadratische Matrix sein. In einer anderen beispielhaften Ausführungsform kann die vorbestimmte Matrix MAT eine rechteckige Matrix sein. Hier können N Zahlen der anfänglichen Permutation IPU in der vorbestimmten Matrix MAT basierend auf einer Sequenz der anfänglichen Permutation IPU angeordnet werden. Alternativ können N Zahlen der anfänglichen Permutation IPU in der vorbestimmten Matrix MAT unabhängig von einer Sequenz der anfänglichen Permutation IPU angeordnet werden. In beispielhaften Ausführungsformen können N Zahlen der anfänglichen Permutation IPU jeweils eine binäre Form haben. Beispielsweise können unter der Annahme, dass die anfängliche Permutation IPU {00, 01, 10, 11} ist, N Zahlen „00”, „01”, „10” und „11” aufweisen. In diesem Fall kann die anfängliche Permutation IPU durch eine binäre Zufallsquelle {0, 1} zufällig angeordnet werden.
  • Die erste Matrix-Änderungseinheit 340 kann eine erste geänderte Matrix FMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der vorbestimmten Matrix MAT basierend auf wenigstens einer Zufallszahl erzeugen. In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Rotationsoperation sein. Das heißt, die erste Matrix-Änderungseinheit 340 kann die erste geänderte Matrix FMAT durch ein Rotieren von Zahlen jeder Zeile der vorbestimmten Matrix MAT um eine Zeilen-Zufallszahl in einer Zeilenrichtung erzeugen. In diesem Fall kann die Zeilen-Zufallszahl unabhängig für jede Zeile der vorbestimmten Matrix MAT ausgewählt werden. Zusätzlich kann ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[logj] – 1 sein, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der vorbestimmten Matrix MAT angeordnet sind. In einer anderen beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Mischoperation sein. Das heißt, die erste Matrix-Änderungseinheit 340 kann Zeilen-Untermatrizen durch ein Anordnen von Zahlen jeder Zeile der vorbestimmten Matrix MAT in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, sie kann geänderte Zeilen-Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der Zeilen-Untermatrizen erzeugen und sie kann Zahlen, welche in jeder der geänderten Zeilen-Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix FMAT ausgeben.
  • Die zweite Matrix-Änderungseinheit 360 kann eine zweite geänderte Matrix SMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der ersten geänderten Matrix FMAT basierend auf wenigstens einer Zufallszahl erzeugen. In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Rotationsoperation sein. Das heißt, die zweite Matrix-Änderungseinheit 360 kann die zweite geänderte Matrix SMAT durch ein Rotieren von Zahlen jeder Spalte der ersten geänderten Matrix FMAT um eine Spalten-Zufallszahl in einer Spaltenrichtung erzeugen. In diesem Fall kann die Spalten-Zufallszahl unabhängig für jede Spalte der ersten geänderten Matrix FMAT ausgewählt werden. Zusätzlich kann ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[logk] – 1 sein, wobei k die Anzahl von Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix FMAT angeordnet sind. In einer anderen beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Mischoperation sein. Das heißt, die zweite Matrix-Änderungseinheit 360 kann Spalten-Untermatrizen durch ein Anordnen von Zahlen jeder Spalte der ersten geänderten Matrix FMAT in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, sie kann geänderte Spalten-Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der Spalten-Untermatrizen erzeugen und sie kann Zahlen, welche in jeder der geänderten Spalten-Untermatrizen angeordnet sind, als jede Spalte der zweiten geänderten Matrix SMAT ausgeben. Dann kann die Permutations-Ausgabeeinheit 380 eine letztendliche Permutation FPU durch ein Ausgeben von N Zahlen, welche in der zweiten geänderten Matrix SMAT angeordnet sind, gemäß Zeilen oder Spalten ausgeben.
  • Obwohl obenstehend beschrieben ist, dass die erste Matrix-Änderungseinheit 340 die erste geänderte Matrix FMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der vorbestimmten Matrix MAT erzeugt und dann die zweite Matrix-Änderungseinheit 360 die zweite geänderte Matrix SMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der ersten geänderten Matrix FMAT erzeugt, ist die vorliegende beispielhafte Ausführungsform nicht darauf beschränkt. Demnach kann die erste Matrix-Änderungseinheit 340 die erste geänderte Matrix FMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der vorbestimmten Matrix MAT erzeugen und dann kann die zweite Matrix-Änderungseinheit 360 die zweite geänderte Matrix SMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der ersten geänderten Matrix FMAT erzeugen.
  • 34 ist ein Blockbild, welches eine Zufallspermutations-Erzeugungsvorrichtung gemäß beispielhaften Ausführungsformen zeigt.
  • Bezug nehmend auf 34 kann die Zufallspermutations-Erzeugungsvorrichtung 400 eine Permutations-Eingabeeinheit 410, eine erste Matrix-Änderungseinheit 420, eine erste Matrix-Transponier-Einheit 430, eine zweite Matrix-Änderungseinheit 440, eine zweite Matrix-Transponier-Einheit 450 und eine Permutations-Ausgabeeinheit 460 aufweisen.
  • Die Permutations-Eingabeeinheit 410 kann eine anfängliche Permutation IPU, welche N Zahlen hat, empfangen, wobei N eine ganze Zahl gleich zu oder größer als 2 ist, und sie kann N Zahlen der anfänglichen Permutation IPU in einer vorbestimmten Matrix MAT anordnen. In einer beispielhaften Ausführungsform kann die vorbestimmte Matrix MAT eine quadratische Matrix sein. In einer anderen beispielhaften Ausführungsform kann die vorbestimmte Matrix MAT eine rechteckige Matrix sein. Hier können N Zahlen der anfänglichen Permutation IPU in der vorbestimmten Matrix MAT basierend auf einer Sequenz der anfänglichen Permutation IPU angeordnet werden. Alternativ können N Zahlen der anfänglichen Permutation IPU in der vorbestimmten Matrix MAT unabhängig von einer Sequenz der anfänglichen Permutation IPU angeordnet werden. In beispielhaften Ausführungsformen können N Zahlen der anfänglichen Permutation IPU jeweils eine binäre Form haben. Beispielsweise können unter der Annahme, dass die anfängliche Permutation IPU {00, 01, 10, 11} ist, N Zahlen „00”, „01”, „10” und „11” aufweisen. In diesem Fall kann die anfängliche Permutation IPU durch eine binäre Zufallsquelle {0, 1} zufällig angeordnet werden.
  • Die erste Matrix-Änderungseinheit 420 kann eine erste geänderte Matrix FMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der vorbestimmten Matrix MAT basierend auf wenigstens einer Zufallszahl erzeugen. In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation einer Rotationsoperation sein. Das heißt, die erste Matrix-Änderungseinheit 420 kann die erste geänderte Matrix FMAT durch ein Rotieren von Zahlen jeder Zeile der vorbestimmten Matrix MAT um eine erste Zeilen-Zufallszahl in einer Zeilenrichtung erzeugen. In diesem Fall kann die erste Zeilennummer unabhängig für jede Zeile der vorbestimmten Matrix MAT ausgewählt werden. Zusätzlich kann ein Bereich der ersten Zeilen-Zufallszahl zwischen 0 und 2[logj] – 1 sein, wobei j die Anzahl von Zahlen ist, welche in jeder Zeile der vorbestimmten Matrix MAT angeordnet sind. In einer anderen beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Mischoperation sein. Das heißt, die erste Matrix-Änderungseinheit 420 kann erste Untermatrizen durch ein Anordnen von Zahlen jeder Zeile der vorbestimmten Matrix MAT in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, sie kann erste geänderte Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der ersten Untermatrizen erzeugen und sie kann Zahlen, welche in jeder der ersten geänderten Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix FMAT ausgeben.
  • Die erste Matrix-Transponiereinheit 430 kann eine zweite geänderte Matrix SMAT, welche einer transponierten Matrix der ersten geänderten Matrix FMAT entspricht, erzeugen. Demnach mag bzw. kann eine Zufalls-Anordnungsoperation nicht in jeder Spalte der ersten geänderten Matrix FMAT durchgeführt werden. Anstelle dessen kann eine Zufalls-Anordnungsoperation in jeder Zeile der zweiten geänderten Matrix FMAT, welche einer transponierten Matrix der ersten geänderten Matrix FMAT entspricht, durchgeführt werden. Die zweite Matrix-Änderungseinheit 440 kann eine dritte geänderte Matrix TMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der zweiten geänderten Matrix SMAT basierend auf wenigstens einer Zufallszahl erzeugen. In einer beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Rotationsoperation sein. Das heißt, die zweite Matrix-Änderungseinheit 440 kann die dritte geänderte Matrix TMAT durch ein Rotieren von Zahlen jeder Zeile der zweiten geänderten Matrix SMAT um eine zweite Zeilen-Zufallszahl in einer Zeilenrichtung erzeugen. In diesem Fall kann die zweite Zeilen-Zufallszahl unabhängig für jede Zeile der zweiten geänderten Matrix SMAT ausgewählt werden. Zusätzlich kann ein Bereich der zweiten Zeilen-Zufallszahl zwischen 0 und 2[logk] – 1 sein, wobei k die Anzahl von Zahlen ist, welche in jeder Zeile der zweiten geänderten Matrix SMAT angeordnet sind. In einer anderen beispielhaften Ausführungsform kann die Zufalls-Anordnungsoperation eine Mischoperation sein. Das heißt, die zweite Matrix-Änderungseinheit 440 kann zweite Untermatrizen durch ein Anordnen von Zahlen jeder Zeile der zweiten geänderten Matrix SMAT in wenigstens einer Zeile und wenigstens einer Spalte erzeugen, sie kann zweite geänderte Untermatrizen durch ein Durchführen einer Rotationsoperation in jeder Zeile und jeder Spalte jeder der zweiten Untermatrizen erzeugen und sie kann Zahlen, welche in jeder der zweiten geänderten Untermatrizen angeordnet sind, als jede Zeile der dritten geänderten Matrix TMAT ausgeben.
  • Nachfolgend kann die zweite Matrix-Transponiereinheit 450 eine veränderte Matrix FOMAT, welche einer transponierten Matrix der dritten geänderten Matrix TMAT entspricht, erzeugen. Die Permutations-Ausgabeeinheit 460 kann eine letztendliche Permutation FPU durch ein Ausgeben von Zahlen, welche in der vierten geänderten Matrix FOMAT angeordnet sind, gemäß Zeilen oder Spalten ausgeben. Obwohl obenstehend beschrieben ist, dass die erste Matrix-Änderungseinheit 420 die erste geänderte Matrix FMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der vorbestimmten Matrix MAT erzeugt und dann die zweite Matrix-Änderungseinheit 440 die dritte geänderte Matrix TMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Zeile der zweiten geänderten Matrix SMAT erzeugt, ist die beispielhafte Ausführungsform nicht hierauf beschränkt. Demnach kann die erste Matrix-Änderungseinheit 420 die erste geänderte Matrix FMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der vorbestimmten Matrix MAT erzeugen, und dann kann die zweite Matrix-Änderungseinheit 440 die dritte geänderte Matrix TMAT durch ein Durchführen einer Zufalls-Anordnungsoperation in jeder Spalte der geänderten Matrix SMAT erzeugen.
  • 35 ist ein Blockbild, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung gemäß einer beispielhaften Ausführungsform veranschaulicht.
  • Bezug nehmend auf 35 kann die Verschlüsselungs-/Entschlüsselungseinheit 500 eine Schlüssel-Ablaufkoordinationseinheit 510, eine Blockrundeneinheit 520, eine Zufallspermutations-Erzeugungseinheit 530 und eine Advanced Encryption Standard(AES = Advanced Encryption Standard)-Controllereinheit 540 aufweisen. Hier kann die Zufallspermutations-Erzeugungseinheit 530 der Zufallspermutations-Erzeugungsvorrichtung 300 der 33 oder der Zufallspermutations-Erzeugungsvorrichtung 400 der 34 entsprechen.
  • Die Schlüssel-Ablaufkoordinationseinheit 510 kann eine Mehrzahl von Rundenschlüsseln basierend auf einem Eingabeschlüssel bzw. Eingangsschlüssel erzeugen, um jede Runde durchzuführen. Gemäß einigen beispielhaften Ausführungsformen kann die Schlüssel-Ablaufkoordinationseinheit 510 eine Mehrzahl von Rundenschlüsseln von 128 Bit, eine Mehrzahl von Rundenschlüsseln von 192 Bit oder eine Mehrzahl von Rundenschlüsseln von 256 Bit erzeugen. Beispielsweise kann, wenn ein AES-Algorithmus, welcher auf die Verschlüsselungs-/Entschlüsselungsvorrichtung 500 angewandt wird, einen Rundenschlüssel von 128 Bit verwendet, der Rundenschlüssel von 128 Bit vier Teilrundenschlüssel von 32 Bit für die Schlüssel-Ablaufkoordinationseinheit 510 aufweisen. In einer beispielhaften Ausführungsform kann die Schlüssel-Ablaufkoordinationseinheit 510 eine Speichereinheit zum vorübergehenden Speichern einer Mehrzahl von Rundenschlüsseln aufweisen. Die Blockrundeneinheit 520 kann einen Klartext verschlüsseln oder kann einen verschlüsselten Text durch ein Durchführen einer Mehrzahl von Runden basierend auf den Rundenschlüsseln entschlüsseln. Beispielsweise kann die Blockrundeneinheit 520 einen Klartext als Eingabedaten DATA_IN empfangen und sie kann dann einen verschlüsselten Text als Ausgabedaten DATA_OUT ausgeben. Andererseits kann die Blockrundeneinheit 520 einen verschlüsselten Text als Eingabedaten DATA_IN empfangen und entschlüsseln und sie kann dann einen Klartext als Ausgabedaten DATA_OUT ausgeben. Die Zufallspermutations-Erzeugungseinheit 530 kann eine Zufallspermutation (d. h. eine letztendliche Permutation) durch ein Durchführen einer Zufalls-Anordnungsoperation auf einer anfänglichen Permutation basierend auf einer vorbestimmten Matrix erzeugen. Demnach kann die Zufallspermutations-Erzeugungseinheit 530 zeitlich und/oder räumlich das Verarbeiten von Daten-S-Boxen, welches durch eine Blockrundeneinheit 520 durchgeführt wird, und/oder ein Verarbeiten von Schlüssel-S-Boxen, welches durch eine Schlüssel-Ablaufkoordinationseinheit durchgeführt wird, in jeder Runde zufällig anordnen. Hier kann die Zufalls-Anordnungsoperation eine Rotationsoperation oder eine Mischoperation sein.
  • Allgemein kann jede Runde durch ein Durchführen einer Byte-Substituieroperation, einer Zeilenverschiebeoperation, einer Spaltenmischoperation und einer Rundenschlüsselhinzufüge-Operation durchgeführt werden. In jeder Runde kann eine Verarbeitung von Schlüssel-S-Boxen in der Schlüssel-Ablaufkoordinationseinheit 510 durchgeführt werden und ein Verarbeiten von Daten-S-Boxen kann in der Blockrundeneinheit 520 durchgeführt werden. Hier kann die Zufallspermutations-Erzeugungseinheit 530 zeitlich und/oder räumlich eine Verarbeitung von Schlüssel-S-Boxen, welche in der Schlüssel-Ablaufkoordinationseinheit 510 durchgeführt wird, und/oder ein Verarbeiten von Daten-S-Boxen, welches in der Blockrundeneinheit 520 durchgeführt wird, zufällig anordnen. Als ein Ergebnis kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 500 eine hohe Datensicherheit gegen eine externe Attacke, wie beispielsweise eine Side-Channel-Analysis (SCA) erreichen. Im Detail kann die Zufallspermutations-Erzeugungseinheit 530 eine anfänglich Permutation empfangen, welche Zahlen aufweist, welche eine binäre Form haben, und sie kann eine zufällige Permutation (d. h. eine letztendliche Permutation), welche Zahlen aufweist, welche eine binäre Form haben, durch ein Durchführen einer Zufalls-Anordnungsoperation auf der anfänglichen Permutation ausgeben. Für diese Operation kann die Zufallspermutations-Erzeugungseinheit 530 eine Permutations-Eingabeeinheit, eine erste Matrix-Änderungseinheit, eine zweite Matrix-Änderungseinheit und eine Permutations-Ausgabeeinheit aufweisen. Alternativ kann die Zufallspermutations-Erzeugungseinheit 530 eine Permutations-Eingabeeinheit, eine erste Matrix-Änderungseinheit, eine erste Matrix-Transponiereinheit, eine zweite Matrix-Änderungseinheit, eine zweite Matrix-Transponiereinheit und eine Permutations-Ausgabeeinheit aufweisen. Da die Zufallspermutations-Erzeugungseinheit 530 obenstehend beschrieben ist, werden duplizierte Beschreibungen untenstehend ausgelassen werden. Die AES-Controllereinheit 540 kann die Schlüssel-Ablaufkoordinationseinheit 510, die Blockrundeneinheit 520 und die Zufallspermutations-Erzeugungseinheit 530 basierend auf einem AES-Verfahren (d. h. einem AES-Algorithmus) steuern.
  • 36 ist eine Blockdarstellung, welche ein Beispiel veranschaulicht, in welchem eine Verschlüsselungsoperation durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 durchgeführt wird. 37 ist eine Blockdarstellung, welche ein Beispiel veranschaulicht, in welchem eine Entschlüsselungsoperation durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 durchgeführt wird.
  • Bezug nehmend auf die 36 und 37 kann, wenn die Blockrundeneinheit 520 einen Klartext verschlüsselt, jede Runde 600a durch ein Durchführen einer einer Byte-Substituieroperation 610a, einer Zeilenverschiebeoperation 620a, einer Spaltenmischoperation 630a und einer Rundenschlüsselhinzufüge-Operation 640a in der genannten Reihenfolge durchgeführt werden (d. h. vollendet werden). Demnach können in Klartext vorliegende Daten bzw. klare Daten (plain data) PTT durch die Runde 600a in verschlüsselte Daten CTT verschlüsselt werden. Hier kann eine exklusive ODER(XOR)-Operation auf einem Rundenschlüssel KIN durchgeführt werden, welcher von der Schlüssel-Ablaufkoordinationseinheit 510 in der Rundenschlüsselhinzufüge-Operation 640a zugeführt bzw. eingegeben wird. Die Verschlüsselungs-/Entschlüsselungsvorrichtung 500 der 35 kann eine Verschlüsselungsoperation durch ein wiederholtes Durchführen der Runde 600a eine vorbestimmte Anzahl von Malen vervollständigen. Andererseits kann, wenn die Blockrundeneinheit 520 verschlüsselte Daten entschlüsselt, jede Runde 600b durch ein Durchführen einer Rundenschlüsselhinzufüge-Operation 640b, einer Spaltenmischoperation 630b, einer Zeilenverschiebeoperation 620b und einer Byte-Substituieroperation 610b in der genannten Reihenfolge durchgeführt (d. h. vollendet) werden. Demnach können verschlüsselte Daten CTT in klare Daten bzw. Daten in Klartext PTT durch die Runde 600b entschlüsselt werden. Hier kann eine XOR-Operation auf einem Rundenschlüssel KIN, welcher von der Schlüssel-Ablaufkoordinationseinheit 510 in der Rundenschlüssel-Hinzufügeoperation 640b zugeführt bzw. eingegeben wird, durchgeführt werden. Ähnlich kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 500 der 35 eine Verschlüsselungsoperation durch ein wiederholtes Durchführen der Runde 600b eine vorbestimmte Anzahl von Malen vollenden. Wie obenstehend beschrieben ist, kann eine Reihenfolge der internen Operation der Runde 600a, durch welche ein Klartext verschlüsselt wird, im Gegensatz zu einer Reihenfolge von internen Operationen der Runde 600b stehen, durch welche ein verschlüsselter Text entschlüsselt wird. Die vorliegende beispielhafte Ausführungsform ist jedoch nicht darauf beschränkt. Beispielsweise kann die Runde 600a, durch welche ein Klartext verschlüsselt wird, zusätzlich interne Operationen gemäß benötigten Bedingungen aufweisen, und die Runde 600b, durch welche ein verschlüsselter Text entschlüsselt wird, kann auch zusätzliche interne Operationen gemäß benötigten Bedingungen aufweisen. Weiterhin kann eine Reihenfolge von internen Operationen der Runde 600a und eine Reihenfolge von internen Operationen der Runde 600b verschieden gemäß benötigten Bedingungen geändert werden.
  • 38 ist eine Blockdarstellung, welche ein Beispiel eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 eingesetzt wird.
  • Bezug nehmend auf 38 kann der AES-Kern 700 Komponenten der Schlüssel-Ablaufkoordinationseinheit 510 (d. h. einen Schlüssel-Ablaufkoordinator 730 und Schlüssel-S-Boxen 740), Komponenten bzw. Bestandteile der Blockrundeneinheit 520 (d. h. einen Datencontroller 710 und Daten-S-Boxen 720) und Daten der Zufallspermutations-Erzeugungseinheit 530 (d. h. Zufallspermutations-Erzeuger 750 und 760) aufweisen. Allgemein müssen 16 Daten-S-Boxen 720 und/oder vier Schlüssel-S-Boxen 740 in jeder Runde verarbeitet werden. Zusätzlich muss diese Verarbeitung in einer vorbestimmten Anzahl von Zyklen (beispielsweise ein Zyklus bis 16 Zyklen) vollendet sein. Wie in 38 veranschaulicht ist, kann der Zufallspermutations-Generator 750 zwischen dem Datencontroller 710 und den Daten-S-Boxen 720 platziert sein und der Zufallspermutations-Erzeuger 760 kann zwischen dem Schlüssel-Ablaufkoordinator 730 und den Schlüssel-S-Boxen 740 platziert sein. Der Zufallspermutations-Erzeuger 750 kann die Verarbeitung der Daten-S-Boxen 720 zeitlich und/oder räumlich zufällig anordnen. Der Zufallspermutations-Erzeuger 760 kann die Verarbeitung der Schlüssel-S-Boxen 740 zeitlich und/oder räumlich zufällig anordnen. Demnach kann der Schlüssel-Ablaufkoordinator 730 einen Rundenschlüssel für den Datencontroller 710 vorsehen, wobei der Rundenschlüssel durch ein Verarbeiten der Schlüssel-S-Boxen 740 erzeugt wird. Zusätzlich kann der Datencontroller 710 eine XOR-Operation auf dem Rundenschlüssel und Daten durchführen, wo die Daten durch ein Verarbeiten der Daten-S-Boxen 720 erzeugt werden.
  • 39 ist eine Darstellung, welche ein Beispiel veranschaulicht, in welchem eine Verarbeitung von Daten-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • Bezug nehmend auf 39 ist veranschaulicht, dass der AES-Kern 700 der 38 gleichzeitig 16 Daten-S-Boxen 720 verarbeitet. Das heißt, der AES-Kern 700 der 38 kann 16 Daten-S-Boxen 720 aufweisen. Im Detail können, wenn der Datencontroller 710 Blockdaten von 128 Bit ausgibt, 16 Multiplexer 725 jeweils die Blockdaten von 128 Bit empfangen. Hier kann ein Zufallspermutations-Erzeuger 750 eine anfängliche Permutation IPU und eine binäre Zufallsquelle BRS empfangen und kann eine letztendliche Permutation FPU (d. h. eine zufällige Permutation) an die 16 Multiplexer 725 durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation und einer Mischoperation) auf der anfänglichen Permutation IPU basierend auf einer vorbestimmten Matrix unter Verwendung der binären Zufallsquelle BRS ausgeben. Wenn die letztendliche Permutation FPU den 16 Multiplexern 725 zugeführt ist bzw. wird, können die 16 Multiplexer 725 die Blockdaten von 128 Bit jeweils an 16 Daten-S-Boxen 720 mit einem Byte (d. h. mit 8 Bit) ausgeben. Hier können die 16 Daten-S-Boxen 720 gleichzeitig durch den AES-Kern 700 der 38 verarbeitet werden. Da das Verarbeiten der 16 Daten-S-Boxen 720 jedoch räumlich durch die letztendliche Permutation FPU zufällig angeordnet ist, kann eine hohe Datensicherheit gegen eine externe Attacke wie beispielsweise eine Side-Channel-Analysis (SCA) erreicht werden. Nachfolgend können die räumlich zufällig angeordneten Blockdaten von 128 Bit durch einen Invers-Zufallspermutations-Erzeuger 790 und 16 Multiplexer 795 räumlich umgekehrt zufällig angeordnet werden (d. h. wiederhergestellt werden) und können dann an den Datencontroller 710 ausgegeben werden.
  • 40 ist eine Darstellung, welche ein anderes Beispiel veranschaulicht, in welchem eine Verarbeitung von Daten-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • Bezug nehmend auf 40 ist veranschaulicht, dass der AES-Kern 700 der 38 gleichzeitig vier Daten-S-Boxen 720 verarbeitet. Das heißt, der AES-Kern 700 der 38 kann vier Daten-S-Boxen 720 aufweisen. Im Detail kann, wenn der Datencontroller 710 Blockdaten von 128 Bit ausgibt, ein Multiplexer 723 die Blockdaten von 128 Bit empfangen. Hier kann ein erster Zufallspermutations-Erzeuger 750_1 eine erste anfängliche Permutation IPU_1 und eine erste binäre Zufallsquelle BRS_1 empfangen und kann eine erste letztendliche Permutation FPU_1 (d. h. eine erste zufällige Permutation) an den Multiplexer 723 durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) auf der ersten anfänglichen Permutation IPU_1 basierend auf einer vorbestimmten Matrix unter Verwendung der ersten binären Zufallsquelle BRS_1 ausgeben. Da die erste letztendliche Permutation FPU_1 sequentiell dem Multiplexer 723 durch einen Puffer 721 zugeführt wird, kann der Multiplexer 723 die Blockdaten von 128 Bit an vier Multiplexer 725 mit vier Byte (d. h. mit 32 Bit) basierend auf der ersten letztendlichen Permutation FPU_4 ausgeben. Das heißt, das Verarbeiten der vier Daten-S-Boxen 720 kann durch die erste letztendliche Permutation FPU_1 zeitlich zufällig angeordnet werden. Ein zweiter Zufallspermutations-Erzeuger 750_2 kann eine zweite anfängliche Permutation IPU_2 und eine zweite binäre Zufallsquelle BRS_2 empfangen und kann eine zweite letztendliche Permutation FPU_2 (d. h. eine zweite zufällige Permutation) an vier Multiplexer 725 durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) auf der zweiten anfänglichen Permutation IPU_2 basierend auf einer vorbestimmten Matrix unter Verwendung der zweiten binären Zufallsquelle BRS_2 ausgeben. Demnach können, wenn die zweite zufällige Permutation FPU_2 den vier Multiplexern 725 zugeführt ist, die vier Multiplexer 725 die Blockdaten von 32 Bit an vier Daten-S-Boxen 720 jeweils mit einem Byte (d. h. 8 Bit) ausgeben. Hier können die vier Daten-S-Boxen 720 gleichzeitig durch den AES-Kern 700 der 38 verarbeitet werden. Da jedoch die Verarbeitung der vier Daten-S-Boxen 720 durch die zweite letztendliche Permutation FPU_2 räumlich zufällig angeordnet ist, kann eine hohe Datensicherheit gegen einen externen Angriff wie beispielsweise eine Side-Channel-Analysis (SCA) erreicht werden. Nachfolgend können die räumlich zufällig angeordneten Blockdaten von 32 Bit durch einen Invers-Zufallspermutations-Erzeuger 790 und vier Multiplexer 795 räumlich invers zufällig angeordnet werden (d. h. wiederhergestellt werden) und können dann an den Datencontroller 710 ausgegeben werden. Hier kann, da eine Ausgabe des Puffers 721 auch an den Datencontroller 710 ausgegeben wird, eine Invers-Zufalls-Anordnung (d. h. Wiederherstellung) zeitlich in dem Datencontroller 710 durchgeführt werden.
  • 41 ist eine Darstellung, welche noch ein anderes Beispiel veranschaulicht, in welchem eine Verarbeitung von Daten-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • Bezug nehmend auf 41 ist veranschaulicht, dass der AES-Kern 700 der 38 eine Daten-S-Box 720 verarbeitet. Das heißt, der AES-Kern 700 der 38 kann eine Daten-S-Box 720 aufweisen. Im Detail kann, wenn der Datencontroller 710 Blockdaten von 128 Bit ausgibt, ein Multiplexer 723 die Blockdaten von 128 Bit empfangen. Hier kann ein Zufallspermutations-Erzeuger 750 eine anfängliche Permutation IPU und eine binäre Zufallsquelle BRS empfangen und kann eine letztendliche Permutation FPU (d. h. eine zufällige Permutation) an den Multiplexer 723 durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) auf der anfänglichen Permutation IPU basierend auf einer vorbestimmten Matrix unter Verwendung der binären Zufallsquelle BRS ausgeben. Da die letztendliche Permutation FPU dem Multiplexer 723 durch einen Puffer 721 sequentiell zugeführt wird, kann der Multiplexer 723 die Blockdaten von 128 Bit an die Daten-S-Box 720 mit einem Byte (d. h. mit 8 Bit) basierend auf der letztendlichen Permutation FPU ausgeben. Wie obenstehend beschrieben ist, kann, obwohl eine Daten-S-Box 720 durch den AES-Kern 700 der 38 verarbeitet wird, eine hohe Datensicherheit gegen einen externen Angriff wie beispielsweise eine Side-Channel-Analysis (SCA) erreicht werden, da die Verarbeitung der Daten-S-Box 720 durch die letztendliche Permutation FPU zeitlich zufällig angeordnet wird. Zusätzlich kann, da eine Ausgabe des Puffers 721 an den Datencontroller 710 ausgeben wird, eine Invers-Zufalls-Anordnung (d. h. Wiederherstellung) zeitlich in dem Datencontroller 710 durchgeführt werden.
  • 42 ist eine Darstellung, welche ein Beispiel veranschaulicht, in welchem eine Verarbeitung von Schlüssel-S-Boxen in einem AES-Kern der 38 durchgeführt wird.
  • Bezug nehmend auf 42 ist veranschaulicht, dass der AES-Kern 700 der 38 gleichzeitig vier Schlüssel-S-Boxen 740 verarbeitet. Das heißt, der AES-Kern 700 der 38 kann vier Schlüssel-S-Boxen 740 aufweisen. Im Detail können, wenn der Schlüssel-Ablaufkoordinator 730 einen Rundenschlüssel von 32 Bit ausgibt, jeweils vier Multiplexer 745 den Rundenschlüssel von 32 Bit empfangen. Hier kann ein Zufallspermutations-Erzeuger 760 eine anfängliche Permutation IPU und eine binäre Zufallsquelle BRS empfangen und kann eine letztendliche Permutation FPU (d. h. eine zufällige Permutation) an die vier Multiplexer 745 durch ein Durchführen einer Zufalls-Anordnungsoperation (d. h. einer Rotationsoperation oder einer Mischoperation) auf der anfänglichen Permutation IPU basierend auf einer vorbestimmten Matrix unter Verwendung der binären Zufallsquelle BRS ausgeben. Wenn die letztendliche Permutation FPU den vier Multiplexern 745 zugeführt wird, können die vier Multiplexer 745 den Rundenschlüssel von 32 Bit an vier Schlüssel-S-Boxen 740 jeweils mit einem Byte (d. h. mit 8 Bit) ausgeben. Hier können die vier Schlüssel-S-Boxen 740 gleichzeitig durch den AES-Kern 700 der 38 verarbeitet werden. Da jedoch die Verarbeitung der vier Schlüssel-S-Boxen 740 durch die letztendliche Permutation FPU räumlich zufällig angeordnet ist, kann eine hohe Datensicherheit gegen einen externen Angriff wie beispielsweise eine Side-Channel-Analysis (SCA) erreicht werden. Nachfolgend kann der räumlich zufällig angeordnete Rundenschlüssel von 32 Bit durch einen Invers-Zufallspermutations-Erzeuger 790 und vier Multiplexer 795 räumlich invers zufällig angeordnet werden (d. h. wiederhergestellt werden) und kann dann an den Schlüssel-Ablaufkoordinator 730 ausgegeben werden.
  • 43 ist eine Blockdarstellung, welche ein anderes Beispiel eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 eingesetzt wird. 44 ist eine Blockdarstellung, welche noch ein anderes Beispiel eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 eingesetzt wird. 45 ist eine Blockdarstellung, welche noch ein anderes Beispiel eines AES-Kerns veranschaulicht, welcher durch eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 eingesetzt wird.
  • Bezug nehmend auf 43 kann der AES-Kern 800 Komponenten bzw. Bestandteile der Schlüssel-Ablaufkoordinationseinheit 510 (d. h. Schlüssel-Ablaufkoordinator 830), Bestandteile der Blockrundeneinheit 520 (d. h. Datencontroller 810) und Bestandteile der Zufallspermutations-Erzeugungseinheit 530 (d. h. Zufallspermutations-Erzeuger 850) aufweisen. Hier kann der AES-Kern 800 Daten und Schlüssel-S-Boxen 820 aufweisen, welche den Daten-S-Boxen und den Schlüssel-S-Boxen entsprechen, und er kann eine Verarbeitung der Daten-S-Boxen und ein Verarbeiten der Schlüssel-S-Boxen zeitlich und/oder räumlich zufällig anordnen. Bezug nehmend auf 44 kann der AES-Kern 900 Bestandteile der Schlüssel-Ablaufkoordinationseinheit 510 (d. h. Schlüssel-Ablaufkoordinator 930 und Schlüssel-S-Boxen 940), Bestandteile der Blockrundeneinheit 520 (d. h. Datencontroller 910 und Daten-S-Boxen 920) und Bestandteile der Zufallspermutations-Erzeugungseinheit 530 (d. h. Zufallspermutations-Erzeuger 950) aufweisen. Hier kann der AES-Kern 900 eine Verarbeitung der Daten-S-Boxen 920 zeitlich und/oder räumlich zufällig anordnen. Bezug nehmend auf 45 kann der AES-Kern 1000 Bestandteile der Schlüssel-Ablaufkoordinationseinheit 510 (d. h. Schlüssel-Ablaufkoordinator 1030 und Schlüssel-S-Boxen 1040), Bestandteile der Blockrundeneinheit 520 (d. h. Datencontroller 1010 und Daten-S-Boxen 1020) und Komponenten der Zufallspermutations-Erzeugungseinheit 530 (d. h. Zufallspermutations-Erzeuger 1050) aufweisen. Hier kann der AES-Kern 1000 eine Verarbeitung der Schlüssel-S-Boxen 1040 zeitlich und/oder räumlich zufällig anordnen. Wie obenstehend beschrieben ist, können die AES-Kerne 800, 900 und 1000, welche auf die Verschlüsselungs-/Entschlüsselungsvorrichtung 500 der 35 angewandt werden, jeweils die Zufallspermutations-Erzeuger 850, 950 und 1010 aufweisen. Zusätzlich können die Zufallspermutations-Erzeuger 850, 950 und 1010 eine Verarbeitung von Daten-S-Boxen und/oder eine Verarbeitung von Schlüssel-S-Boxen zufällig anordnen.
  • 46 ist eine Blockdarstellung, welche ein Beispiel eines Berechnungssystems bzw. Computersystems veranschaulicht, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 hat.
  • Bezug nehmend auf 46 kann das Berechnungssystem 1200 einen Prozessor 1210, einen Speichercontroller-Hub 1220, eine Speichervorrichtung 1230, eine Verschlüsselungs-/Entschlüsselungsvorrichtung 1240, einen Eingabe-/Ausgabe(I/O = Input/Output)-Controller-Hub 1250 und eine Speichervorrichtung 1260 aufweisen. Hier kann der Speichercontroller-Hub 1220 einen Speichercontroller 1222 aufweisen und der I/O-Controller-Hub 1250 kann einen I/O-Controller 1252 aufweisen. In einer beispielhaften Ausführungsform kann das Computersystem 1200 als ein Smartphone 1500 der 48 implementiert sein. In einer anderen beispielhaften Ausführungsform kann das Computersystem bzw. Berechnungssystem 1200 als eine Smartcard 1550 der 49 implementiert sein. Das Berechnungssystem 1200 ist jedoch nicht darauf beschränkt. Beispielsweise kann das Berechnungssystem 1200 eine mobile Vorrichtung wie beispielsweise ein Mobiltelefon, eine elektrische Vorrichtung wie einen Fernseher etc. aufweisen.
  • Der Prozessor 1210 kann verschiedene Berechnungsfunktionen durchführen. Der Prozessor 1210 kann ein Mikroprozessor, eine zentrale Verarbeitungseinheit (CPU = Central Processing Unit) etc. sein. Der Prozessor 1210 kann mit dem Speichercontroller-Hub 1220 über einen Systembus wie beispielsweise einen Adressbus, einen Steuerbus, einen Datenbus etc. gekoppelt sein. Weiterhin kann der Prozessor 1210 an einen erweiterten Bus wie beispielsweise einen Peripheral Component Interconnection(PCI)-Bus gekoppelt sein. Der Speichercontroller-Hub 1220 kann Kommunikationen zwischen dem Prozessor 1210 und der Speichervorrichtung 1230 unter Verwendung des Speichercontrollers 1222 steuern. Die Speichervorrichtung 1230 kann Daten für Operationen des Berechnungssystems 1200 speichern. Beispielsweise kann die Speichervorrichtung 1230 wenigstens eine nichtflüchtige Speichervorrichtung wie beispielsweise eine Erasable Programmable Read-only-Memory(EPROM)-Vorrichtung, eine Electrically Erasable Programmable Read-only-Memory(EEPROM)-Vorrichtung, eine Flashspeichervorrichtung, eine Phasenänderungs-Schreib-Lese-Speicher(PRAM = Phase Change Random Access Memory)-Vorrichtung, eine Widerstands-Schreib-Lese-Speicher(RRAM = Resistance Random Access Memory)-Vorrichtung, eine Nano Floating Gate-Speicher(NFGN = Nano Floating Gate Memory)-Vorrichtung, eine Polymer-Schreib-Lese-Speicher(PoRAM = Polymer Random Access Memory)-Vorrichtung, eine magnetische Schreib-Lese-Speicher(MRAM = Magnetic Random Access Memory)-Vorrichtung, eine ferroelektrische Schreib-Lese-Speicher(FRAM = Ferroelectric Random Access Memory)-Vorrichtung etc. und/oder wenigstens eine flüchtige Speichervorrichtung wie beispielsweise eine dynamische Schreib-Lese-Speicher(DRAM = Dynamic Random Access Memory)-Vorrichtung, eine statische Schreib-Lese-Speicher(SRAM = Static Random Access Memory)-Vorrichtung, eine mobile dynamische Schreib-Lese-Speicher(Mobile DRAM)-Vorrichtung etc. aufweisen.
  • Die Verschlüsselungs-/Entschlüsselungsvorrichtung 1240 kann Daten für Operationen bzw. den Betrieb des Berechnungssystems 1200 verschlüsseln oder entschlüsseln. Für diese Operation kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 1240 eine Schlüssel-Ablaufkoordinationseinheit, eine Blockrundeneinheit, eine Zufallspermutations-Erzeugungseinheit und eine AES-Controller-Einheit aufweisen. Da die Verschlüsselungs-/Entschlüsselungsvorrichtung 1240 obenstehend beschrieben ist, werden duplizierte Beschreibungen untenstehend ausgelassen werden. In einer beispielhaften Ausführungsform kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 1240 durch Hardware implementiert sein. In einer anderen beispielhaften Ausführungsform kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 1240 durch Software implementiert sein. In diesem Fall kann der Prozessor 1210 Befehle der Software ausführen. Der I/O-Controller-Hub 1250 kann I/O-Vorrichtungen unter Verwendung des I/O-Controllers 1252 steuern. Beispielsweise kann, wie in 46 veranschaulicht ist, der I/O-Controller-Hub 1250 Kommunikationen zwischen dem Speichercontroller-Hub 1220 und der Speichervorrichtung 1260 steuern. Hier kann der I/O-Controller-Hub 1250 mit dem Speichercontroller-Hub 1220 unter Verwendung einer Hochgeschwindigkeits-Chip-zu-Chip-Verbindung wie beispielsweise einem Direct-Media-Interface (DMI) verbunden sein. Die Speichervorrichtung 1260 kann eine Festkörperlaufwerk(SSD = Solid State Drive)-Vorrichtung, eine Festplatten(HDD = Harddisk Drive)-Vorrichtung, eine redundante Anordnung von unabhängigen Disks (RAID = Redundant Array of Independent Disk) etc. sein. Hier kann die Speichervorrichtung 1260 mit dem I/O-Controller-Hub 1250 unter Verwendung eines seriellen Speicherprotokolls wie beispielsweise einem Serial Attach SCSI (SAS), einem Serial Advanced Technology Attachment (SATA) etc. kommunizieren.
  • Wenn das Berechnungssystem 1200 als eine mobile Vorrichtung hergestellt wird, kann das Berechnungssystem 1200 durch verschiedene Packages bzw. Gehäuse wie beispielsweise Package an Package (PoP), Ball grid arrays (BGAs), Chip scale packages (CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-Line Package (PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flat-Pack (TQFP), Small Outline Integrated Circuit (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline Package (TSOP), Thin Quad Flat-Pack (TQFP), System In Package (SIP), Multi Chip Package (MCP), Wafer-level Fabricated Package (WFP), Wafer-Level Processed Stack Package (WSP) implementiert werden.
  • 47 ist eine Blockdarstellung, welche ein anderes Beispiel eines Berechnungssystems, welches eine Verschlüsselungs-/Entschlüsselungsvorrichtung der 35 hat, veranschaulicht.
  • Bezug nehmend auf 47 kann das Berechnungssystem 1400 einen Prozessor 1410, einen Speichercontroller-Hub 1420, eine Speichervorrichtung 1430, einen I/O-Controller-Hub 1450 und eine Speichervorrichtung 1460 aufweisen. Hier kann der Prozessor 1410 eine Verschlüsselungs-/Entschlüsselungsvorrichtung 1412 aufweisen, der Speichercontroller-Hub 1420 kann einen Speichercontroller 1422 aufweisen und der I/O-Controller-Hub 1450 kann einen I/O-Controller 1452 aufweisen. In einer beispielhaften Ausführungsform kann das Berechnungssystem 1400 als ein Smartphone 1500 der 48 implementiert sein. In einer anderen beispielhaften Ausführungsform kann das Berechnungssystem 1400 als eine Smartcard 1550 der 49 implementiert sein. Das Berechnungssystem 1400 ist jedoch nicht hierauf beschränkt. Beispielsweise kann das Berechnungssystem 1400 eine mobile Vorrichtung wie beispielsweise ein Mobiltelefon, eine elektrische Vorrichtung wie beispielsweise einen Fernseher etc. aufweisen. Die Verschlüsselungs-/Entschlüsselungsvorrichtung 1412 kann Daten für einen Betrieb des Berechnungssystems 1400 verschlüsseln oder entschlüsseln. Für diese Operation kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 1412 eine Schlüssel-Ablaufkoordinationseinheit, eine Blockrundeneinheit, eine Zufallspermutations-Erzeugungseinheit und eine AES-Controller-Einheit aufweisen. Da die Verschlüsselungs-/Entschlüsselungsvorrichtung 1412 obenstehend beschrieben ist, werden duplizierte Beschreibungen untenstehend ausgelassen werden. In einer beispielhaften Ausführungsform kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 1412 durch Hardware implementiert sein. In einer anderen beispielhaften Ausführungsform kann die Verschlüsselungs-/Entschlüsselungsvorrichtung 1412 durch Software implementiert sein. In diesem Fall kann der Prozessor 1410 Befehle der Software ausführen.
  • Die vorliegenden beispielhaften Ausführungsformen können auf eine Vorrichtung (beispielsweise eine Verschlüsselungs-/Entschlüsselungsvorrichtung etc.) angewandt werden, welche eine zufällige Permutation verwendet, und ein Berechnungssystem (beispielsweise eine elektrische Vorrichtung, eine mobile Vorrichtung etc.), welche die Vorrichtung hat. Beispielsweise kann das Konzept der beispielhaften Ausführungsformen auf einen Computer, ein Laptop, ein Mobiltelefon, ein Smartphone, ein Smartpad, ein Sicherheitssystem etc. angewandt werden.
  • Das Voranstehende ist für beispielhafte Ausführungsformen veranschaulichend und ist nicht als hierfür beschränkend anzusehen. Obwohl einige beispielhafte Ausführungsformen beschrieben worden sind, werden Fachleute bereitwillig anerkennen, dass viele Abwandlungen in den beispielhaften Ausführungsformen möglich sind, ohne materiell von der neuen Lehre und den Vorteilen der vorliegenden Offenbarung abzuweichen. Demzufolge ist beabsichtigt, dass alle solche Abwandlungen im Umfang des Offenbarungskonzepts, wie es in den Ansprüchen definiert ist, enthalten sind. Demnach ist zu verstehen, dass das Vorangehende für verschiedene beispielhafte Ausführungsformen veranschaulichend ist und nicht als beschränkt auf die spezifischen beispielhaften Ausführungsformen, welche offenbart sind, angesehen werden darf, und dass Abwandlungen an den offenbarten beispielhaften Ausführungsformen sowie andere beispielhafte Ausführungsformen als im Umfang der beigefügten Ansprüche enthalten beabsichtigt sind.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • KR 10-2012-0033797 [0001]

Claims (10)

  1. Verfahren zum Erzeugen einer zufälligen Permutation, wobei das Verfahren Folgendes aufweist: ein Anordnen einer Sequenz von N Zahlen in einer Matrix, wobei N eine ganze Zahl gleich zu oder größer als 2 ist; ein Erzeugen einer ersten geänderten Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der Matrix, wobei die erste Zufalls-Anordnungsoperation basierend auf einer Zeilen-Zufallszahl durchgeführt wird; ein Erzeugen einer zweiten geänderten Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation der N Zahlen in jeder Spalte der ersten geänderten Matrix, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer Spalten-Zufallszahl durchgeführt wird; und ein Ausgeben der N Zahlen, welche in der zweiten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der zweiten geänderten Matrix als eine neu angeordnete Sequenz der Sequenz von N Zahlen, wobei die Matrix eine einer quadratischen Matrix und einer rechteckigen Matrix ist.
  2. Verfahren nach Anspruch 1, wobei das Erzeugen der ersten geänderten Matrix Folgendes aufweist: ein Rotieren der N Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um die Zeilen-Zufallszahl in einer Zeilenrichtung der Matrix, und wobei das Erzeugen der zweiten geänderten Matrix Folgendes aufweist: ein Rotieren der N Zahlen, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind, um die Spalten-Zufallszahl in einer Spaltenrichtung der ersten geänderten Matrix.
  3. Verfahren nach Anspruch 2, wobei die Zeilen-Zufallszahl für jede Zeile der Matrix unabhängig ausgewählt wird.
  4. Verfahren nach Anspruch 3, wobei ein Bereich der Zeilen-Zufallszahl zwischen 0 und 2[logj] – 1 ist, wobei j eine Anzahl der N Zahlen ist, welche in jeder Zeile der Matrix angeordnet sind.
  5. Verfahren nach Anspruch 2, wobei die Spalten-Zufallszahl für jede Spalte der ersten geänderten Matrix unabhängig ausgewählt wird.
  6. Verfahren nach Anspruch 5, wobei ein Bereich der Spalten-Zufallszahl zwischen 0 und 2[logk] – 1 ist, wobei k eine Anzahl der N Zahlen ist, welche in jeder Spalte der ersten geänderten Matrix angeordnet sind.
  7. Verfahren nach Anspruch 1, wobei N eine ganze Zahl größer als oder gleich zu 4 ist, wobei das Erzeugen der ersten geänderten Matrix Folgendes aufweist: ein Erzeugen einer Mehrzahl von Zeilen-Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Zeilen-Untermatrizen; ein Erzeugen einer Mehrzahl von geänderten Zeilen-Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von Zeilen-Untermatrizen; und ein Ausgeben der N Zahlen, welche in jeder der Mehrzahl von geänderten Zeilen-Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix, und wobei das Erzeugen der zweiten geänderten Matrix Folgendes aufweist: ein Erzeugen einer Mehrzahl von Spalten-Untermatrizen durch ein Anordnen der N Zahlen jeder Spalte der ersten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von Spalten-Untermatrizen; ein Erzeugen einer Mehrzahl von Spalten-Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von Spalten-Untermatrizen; und ein Ausgeben der N Zahlen, welche in jeder der Mehrzahl von geänderten Spalten-Untermatrizen angeordnet sind, als jede Spalte der zweiten geänderten Matrix.
  8. Verfahren zum Erzeugen einer zufälligen Permutation, wobei das Verfahren Folgendes aufweist: ein Anordnen einer Sequenz von N Zahlen in einer Matrix, wobei N eine ganze Zahl gleich zu oder größer als 2 ist; ein Erzeugen einer ersten geänderten Matrix durch ein Durchführen einer ersten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der Matrix, wobei die erste Zufalls-Anordnungsoperation basierend auf einer ersten Zeilen-Zufallszahl durchgeführt wird; ein Erzeugen einer zweiten geänderten Matrix, welche einer transponierten Matrix der ersten geänderten Matrix entspricht; ein Erzeugen einer dritten geänderten Matrix durch ein Durchführen einer zweiten Zufalls-Anordnungsoperation auf den N Zahlen in jeder Zeile der zweiten geänderten Matrix, wobei die zweite Zufalls-Anordnungsoperation basierend auf einer zweiten Zeilen-Zufallszahl durchgeführt wird; ein Erzeugen einer vierten geänderten Matrix, welche einer transponierten Matrix der dritten geänderten Matrix entspricht; und ein Ausgeben der N Zahlen, welche in der vierten geänderten Matrix angeordnet sind, gemäß Zeilen oder Spalten der vierten geänderten Matrix als eine neu angeordnete Sequenz der Sequenz von N Zahlen, wobei die Matrix entweder eine quadratische Matrix oder eine rechteckige Matrix ist.
  9. Verfahren nach Anspruch 8, wobei das Erzeugen der ersten geänderten Matrix Folgendes aufweist: ein Rotieren der N Zahlen, welche in jeder Zeile der Matrix angeordnet sind, um die erste Zeilen-Zufallszahl in einer Zeilenrichtung der Matrix, und wobei ein Erzeugen der dritten geänderten Matrix Folgendes aufweist: ein Rotieren der N Zahlen, welche in jeder Zeile der zweiten geänderten Matrix angeordnet sind, um die zweite Zeilen-Zufallszahl in der Zeilenrichtung der zweiten geänderten Matrix, wobei die erste Zeilen-Zufallszahl für jede Zeile der Matrix unabhängig ausgewählt wird, und wobei die zweite Zeilen-Zufallszahl für jede Zeile der zweiten geänderten Matrix unabhängig ausgewählt wird.
  10. Verfahren nach Anspruch 8, wobei N eine ganze Zahl größer als oder gleich zu 4 ist, wobei das Erzeugen der ersten geänderten Matrix Folgendes aufweist: ein Erzeugen einer Mehrzahl von ersten Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von ersten Untermatrizen; ein Erzeugen einer Mehrzahl von ersten geänderten Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von ersten Untermatrizen; und ein Ausgeben der N Zahlen, welche in jeder der Mehrzahl von ersten geänderten Untermatrizen angeordnet sind, als jede Zeile der ersten geänderten Matrix, und wobei das Erzeugen der dritten geänderten Matrix Folgendes aufweist: ein Erzeugen einer Mehrzahl von zweiten Untermatrizen durch ein Anordnen der N Zahlen jeder Zeile der zweiten geänderten Matrix in wenigstens einer Zeile und wenigstens einer Spalte der Mehrzahl von zweiten Untermatrizen; ein Erzeugen einer Mehrzahl von zweiten geänderten Untermatrizen durch ein Durchführen einer Rotationsoperation auf den N Zahlen in jeder Zeile und jeder Spalte jeder der Mehrzahl von zweiten Untermatrizen; und ein Ausgeben der N Zahlen, welche in jeder der Mehrzahl von zweiten geänderten Untermatrizen angeordnet sind, als jede Zeile der dritten geänderten Matrix.
DE102013102722A 2012-04-02 2013-03-18 Verfahren zum Erzeugen einer zufälligen Permutation, Zufallspermutations-Erzeugungsvorrichtung und Verschlüsselungs-/Entschlüsselungsvorrichtung mit derselben Pending DE102013102722A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0033797 2012-04-02
KR1020120033797A KR101977823B1 (ko) 2012-04-02 2012-04-02 랜덤 순열 생성 방법, 랜덤 순열 생성 장치 및 이를 구비하는 암복호화 장치

Publications (1)

Publication Number Publication Date
DE102013102722A1 true DE102013102722A1 (de) 2013-10-02

Family

ID=49154857

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013102722A Pending DE102013102722A1 (de) 2012-04-02 2013-03-18 Verfahren zum Erzeugen einer zufälligen Permutation, Zufallspermutations-Erzeugungsvorrichtung und Verschlüsselungs-/Entschlüsselungsvorrichtung mit derselben

Country Status (4)

Country Link
US (1) US8861719B2 (de)
KR (1) KR101977823B1 (de)
CN (1) CN103368729B (de)
DE (1) DE102013102722A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143317B2 (en) * 2013-05-24 2015-09-22 Apple Inc. Protecting against white box attacks using column rotation
US20150222421A1 (en) * 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms
US10608814B2 (en) * 2015-05-17 2020-03-31 Gideon Samid Equivoe-T: Transposition equivocation cryptography
KR101920142B1 (ko) 2017-02-15 2018-11-19 국방과학연구소 의사 잡음 코드 생성기를 활용한 랜덤 순열 생성 시스템 및 방법
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
KR102602696B1 (ko) * 2017-10-13 2023-11-16 삼성전자주식회사 암호화 장치 및 복호화 장치, 이들의 동작방법
EP3702007A4 (de) * 2017-10-21 2021-10-06 Angel Playing Cards Co., Ltd. Verfahren zum mischen von spielkarten
CN111193446A (zh) * 2020-01-13 2020-05-22 珠海格力电器股份有限公司 调制参数的生成方法及装置、逆变器
US11599679B2 (en) * 2020-06-23 2023-03-07 Arm Limited Electromagnetic and power noise injection for hardware operation concealment
EP4227927A1 (de) * 2020-10-10 2023-08-16 Gutiérrez Salazar, Jaime Ricardo Verfahren zur verschlüsselung von daten mittels matrixoperationen
CN112910630B (zh) * 2021-02-02 2022-12-06 浙江大华技术股份有限公司 扩展密钥的置换方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120033797A (ko) 2010-09-30 2012-04-09 주식회사 포스코 회전각 조정형 구동장치 및 이를 포함하는 주편 잔류물 제거장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9509988D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
US7305085B2 (en) * 2000-06-30 2007-12-04 Kabushiki Kaisha Toshiba Encryption apparatus and method, and decryption apparatus and method based on block encryption
US7242726B2 (en) * 2000-09-12 2007-07-10 Broadcom Corporation Parallel concatenated code with soft-in soft-out interactive turbo decoder
DE10148415C2 (de) * 2001-09-29 2003-07-31 Univ Braunschweig Tech Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
EP1576735B1 (de) * 2002-12-16 2016-04-06 Telecom Italia S.p.A. Adressberechnung für interleaver in turbo encodern und decodern
US8290162B2 (en) 2006-12-15 2012-10-16 Qualcomm Incorporated Combinational combiner cryptographic method and apparatus
KR20070085244A (ko) 2007-04-02 2007-08-27 미쓰비시덴키 가부시키가이샤 검사 행렬 생성 방법 및 통신 방법
US7995749B2 (en) 2007-10-30 2011-08-09 Harris Corporation Cryptographic system configured for extending a repetition period of a random sequence
CN101159435B (zh) * 2007-11-14 2010-06-16 中国人民解放军理工大学 基于移位矩阵分级扩展的低密度校验码校验矩阵构造方法
KR100922734B1 (ko) 2007-12-17 2009-10-22 한국전자통신연구원 무선 센서네트워크 보안을 위한 송수신 방법 및 송수신장치
CN101710828B (zh) * 2009-08-24 2013-07-24 清华大学 一种正交随机相位编码技术及其在体全息存储器中的应用
CN102355271A (zh) * 2011-10-31 2012-02-15 南京邮电大学 一种随机行列循环移位交织器的编解码方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120033797A (ko) 2010-09-30 2012-04-09 주식회사 포스코 회전각 조정형 구동장치 및 이를 포함하는 주편 잔류물 제거장치

Also Published As

Publication number Publication date
CN103368729B (zh) 2019-05-10
US20130259224A1 (en) 2013-10-03
CN103368729A (zh) 2013-10-23
KR101977823B1 (ko) 2019-05-13
US8861719B2 (en) 2014-10-14
KR20130111715A (ko) 2013-10-11

Similar Documents

Publication Publication Date Title
DE102013102722A1 (de) Verfahren zum Erzeugen einer zufälligen Permutation, Zufallspermutations-Erzeugungsvorrichtung und Verschlüsselungs-/Entschlüsselungsvorrichtung mit derselben
DE60001927T2 (de) Verfahren und vorrichtung zum schutz von konfigurationsdateneigentum für programmierbare logische vorrichtungen
DE102005028221B4 (de) Vorrichtung und Verfahren zum Schutz der Integrität von Daten
DE102012111793B4 (de) Speichervorrichtung zum Schützen von sicheren Daten und Verfahren zum Authentifizieren einer Speichervorrichtung unter Verwendung von sicheren Daten
Prosen et al. Macroscopic diffusive transport in a microscopically integrable Hamiltonian system
DE102014113300A1 (de) Datenspeicherung im persistenten Speicher
DE102014213539A1 (de) Einrichtung und Verfahren zur Speicheradressenverschlüsselung
DE102018123493A1 (de) Halbleiterspeichervorrichtung und Speichermodul mit derselben
DE102010029735A1 (de) Verfahren zum Generieren eines Bitvektors
DE102012103577A1 (de) Datenspeichervorrichtung, Kodierungseinheit, Systeme selbige umfassend und Verfahren zum Auslesen von Daten
CN110784307B (zh) 轻量级密码算法scenery实现方法、装置及存储介质
DE102013104735A1 (de) Verfahren zum kopiergeschützten Hinterlegen von Informationen auf einem Datenträger
DE102020123398A1 (de) Sicherheitsarchitektur für eine Teilrekonfiguration eines konfigurierbaren Integrierte-Schaltungs-Dies
EP3603013A1 (de) Verfahren und vorrichtung zum austauschen von nachrichten
DE602004001732T2 (de) Datenverschlüsselung in einem elektronischen Gerät mit mehreren symmetrischen Prozessoren
DE102004013480B4 (de) Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
CN109698812A (zh) 信息加密方法和装置、信息解密方法和装置及安全系统
DE3138698A1 (de) Verfahren zur potenzierung grosser binaerzahlen in einer restklasse modulo n, insbesondere zur verschluesselung und entschluesselung digital dargestellter nachrichten
CN113726975B (zh) 基于混沌系统的图像加密方法、装置、介质及电子设备
DE102022110380A1 (de) Kodierter host-zu-dla-verkehr
EP1930834A1 (de) Kryptographisch gesichertes Prozessorsystem
Hsue et al. Multiple-parameter real discrete fractional Fourier and Hartley transforms
EP3617928B1 (de) Verfahren zum speichern von schlüsseldaten in einem elektronischen bauteil
DE60023934T2 (de) Verfahren und vorrichtung zur erzeugung einer schlüsselsequenz
DE10338435B4 (de) Schaltung zur Durchführung eines Algorithmus

Legal Events

Date Code Title Description
R012 Request for examination validly filed