CN103368729B - 产生随机排列的方法及随机排列产生装置 - Google Patents
产生随机排列的方法及随机排列产生装置 Download PDFInfo
- Publication number
- CN103368729B CN103368729B CN201310104983.9A CN201310104983A CN103368729B CN 103368729 B CN103368729 B CN 103368729B CN 201310104983 A CN201310104983 A CN 201310104983A CN 103368729 B CN103368729 B CN 103368729B
- Authority
- CN
- China
- Prior art keywords
- row
- column
- matrix
- transformation matrices
- random
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/766—Generation of all possible permutations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/12—Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key 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)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了一种产生随机排列的方法及随机排列产生装置。通过以下步骤产生随机排列:将N个数的序列布置在矩阵中;对矩阵的行执行随机布置操作以产生中间矩阵;对中间矩阵的列执行随机布置操作以产生第二中间矩阵;以及将第二中间矩阵的N个数布置为所述N个数的重排序列。
Description
本申请要求于2012年4月2日向韩国知识产权局(KIPO)提交的韩国专利申请No.10-2012-0033797的优先权,该申请的内容整个地通过引用并入本文。
技术领域
与示例性实施例一致的方法和设备涉及随机排列产生技术,更具体地讲,涉及一种基于二进制随机源产生随机排列的方法、随机排列产生装置和具有该随机排列产生装置的加密/解密装置。
背景技术
最近,由于数据安全的重要性增加,安全算法被应用于电子装置使用的数据。通常,因为安全算法的执行需要随机排列,所以加密/解密装置需要包括基于二进制随机源(即,具有二进制形式的源)产生随机排列的随机排列产生装置,其中,随机排列产生装置通过硬件或软件实现。
常规的随机排列产生装置可基于常规的随机排列产生方法(比如,Fisher和Yates方法等)产生随机排列。然而,难以通过硬件实现常规的随机排列产生方法。另外,如果常规的随机排列产生方法通过硬件实现,则硬件复杂度可能很高。
发明内容
示例性实施例的多个方面提供一种产生随机排列的方法,该方法能够具有低硬件复杂度,并且当基于二进制随机源产生随机排列时能够有效地使用二进制随机源。
示例性实施例的多个方面还提供一种能够有效地使用二进制随机源的、具有低硬件复杂度的随机排列产生装置。
示例性实施例的多个方面还提供一种具有所述随机排列产生装置的加密/解密装置。
根据示例性实施例的一方面,提供一种产生随机排列的方法,该方法包括:将N个数的序列布置在矩阵中的步骤,其中,N为等于或大于2的整数;通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵的步骤,其中,基于行随机数执行第一随机布置操作;通过对第一变化矩阵的每列中的数执行第二随机布置操作来产生第二变化矩阵的步骤,其中,基于列随机数执行第二随机布置操作;以及根据第二变化矩阵的行或列将布置在第二变化矩阵中的N个数作为所述N个数的序列的重排序列输出的步骤。
所述N个数可具有二进制形式。
所述矩阵可以是方阵或长方阵。
产生第一变化矩阵的步骤可包括将布置在所述矩阵的每行中的数在所述矩阵的行方向上旋转行随机数的步骤。
产生第二变化矩阵的步骤可包括将布置在第一变化矩阵的每列中的数在第一变化矩阵的列方向上旋转列随机数的步骤。
可针对所述矩阵的每行独立选择行随机数。
行随机数的范围可以在0与之间,其中,j是布置在所述矩阵的每行中的数的数量。
可针对第一变化矩阵的每列独立选择列随机数。
列随机数的范围可以在0与之间,其中,k是布置在第一变化矩阵的每列中的数的数量。
产生第一变化矩阵的步骤可包括:通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个行子矩阵的步骤;通过对所述多个行子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化行子矩阵的步骤;以及将布置在所述多个变化行子矩阵中的每个中的数作为第一变化矩阵的每行输出的步骤。
产生第二变化矩阵的步骤可包括:通过将第一变化矩阵的每列的数布置在至少一行和至少一列中来产生多个列子矩阵的步骤;通过对所述多个列子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化列子矩阵的步骤;以及将布置在所述多个变化列子矩阵中的每个中的数作为第二变化矩阵的每列输出的步骤。
根据示例性实施例的一方面,提供一种产生随机排列的方法,该方法包括:将N个数的序列布置在矩阵中的步骤,其中,N为等于或大于2的整数;通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵的步骤,其中,基于第一行随机数执行第一随机布置操作;产生与第一变化矩阵的转置矩阵对应的第二变化矩阵的步骤;通过对第二变化矩阵的每行中的数执行第二随机布置操作来产生第三变化矩阵的步骤,其中,基于第二行随机数执行第二随机布置操作;产生与第三变化矩阵的转置矩阵对应的第四变化矩阵的步骤;以及根据第四变化矩阵的行或列将布置在第四变化矩阵中的N个数作为所述N个数的序列的重排序列输出的步骤。
所述矩阵可以是方阵或长方阵。
产生第一变化矩阵的步骤可包括将布置在所述矩阵的每行中的数在所述矩阵的行方向上旋转第一行随机数的步骤。
产生第三变化矩阵的步骤可包括将布置在第二变化矩阵的每行中的数在第二变化矩阵的行方向上旋转第二行随机数的步骤。
可针对所述矩阵的每行独立选择第一行随机数。
可针对第二变化矩阵的每行独立选择第二行随机数。
产生第一变化矩阵的步骤可包括:通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个第一子矩阵的步骤;通过对所述多个第一子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第一变化子矩阵的步骤;以及将布置在所述多个第一变化子矩阵中的每个中的数作为第一变化矩阵的每行输出的步骤。
产生第三变化矩阵的步骤可包括:通过将第二变化矩阵的每行的数布置在至少一行和至少一列中来产生多个第二子矩阵的步骤;通过对所述多个第二子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第二变化子矩阵的步骤;以及将布置在所述多个第二变化子矩阵中的每个中的数作为第三变化矩阵的每行输出的步骤。
根据示例性实施例的一方面,提供一种随机排列产生装置,该随机排列产生装置包括:排列输入单元,被构造为接收N个数的初始排列序列,并且被构造为将所述初始排列序列的N个数布置在矩阵中,其中,N为等于或大于2的整数;第一矩阵变化单元,被构造为通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于行随机数执行第一随机布置操作;第二矩阵变化单元,被构造为通过对第一变化矩阵的每列中的数执行第二随机布置操作来产生第二变化矩阵,其中,基于列随机数执行第二随机布置操作;以及排列输出单元,被构造为通过以下步骤产生所述N个数的最终排列序列:根据第二变化矩阵的行或列将布置在第二变化矩阵中的N个数作为最终排列序列输出,所述最终排列序列是所述初始排列序列的重排序列。
第一矩阵变化单元可将布置在所述矩阵的每行中的数在所述矩阵的行方向上旋转行随机数,其中,针对所述矩阵的每行独立选择行随机数。
第二矩阵变化单元可将布置在第一变化矩阵的每列中的数在第一变化矩阵的列方向上旋转列随机数,其中,针对第一变化矩阵的每列独立选择列随机数。
第一矩阵变化单元可通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个行子矩阵,可通过对所述多个行子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化行子矩阵,并可将布置在所述多个变化行子矩阵中的每个中的数作为第一变化矩阵的每行输出。
第二矩阵变化单元可通过将第一变化矩阵的每列的数布置在至少一行和至少一列中来产生多个列子矩阵,可通过对所述多个列子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化列子矩阵,并可将布置在所述多个变化列子矩阵中的每个中的数作为第二变化矩阵的每列输出。
根据示例性实施例的一方面,提供一种随机排列产生装置,该随机排列产生装置包括:排列输入单元,被构造为接收N个数的初始排列序列,并且被构造为将所述初始排列序列的N个数布置在矩阵中,其中,N为等于或大于2的整数;第一矩阵变化单元,被构造为通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于第一行随机数执行第一随机布置操作;第一矩阵转置单元,产生与第一变化矩阵的转置矩阵对应的第二变化矩阵;第二矩阵变化单元,被构造为通过对第二变化矩阵的每行中的数执行第二随机布置操作来产生第三变化矩阵,其中,基于第二行随机数执行第二随机布置操作;第二矩阵转置单元,产生与第三变化矩阵的转置矩阵对应的第四变化矩阵;以及排列输出单元,被构造为通过以下步骤产生所述N个数的最终排列序列:根据第四变化矩阵的行或列将布置在第四变化矩阵中的N个数作为最终排列序列输出,所述最终排列序列是所述初始排列序列的重排序列。
第一矩阵变化单元可将布置在所述矩阵的每行中的数在所述矩阵的行方向上旋转第一行随机数,其中,针对所述矩阵的每行独立选择第一行随机数。
第二矩阵变化单元可将布置在第二变化矩阵的每行中的数在第二变化矩阵的行方向上旋转第二行随机数,其中,针对第二变化矩阵的每行独立选择第二行随机数。
第一矩阵变化单元可通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个第一子矩阵,可通过对所述多个第一子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第一变化子矩阵,并可将布置在所述多个第一变化子矩阵中的每个中的数作为第一变化矩阵的每行输出。
第二矩阵变化单元可通过将第二变化矩阵的每行的数布置在至少一行和至少一列中来产生多个第二子矩阵,可通过对所述多个第二子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第二变化子矩阵,并可将布置在所述多个第二变化子矩阵中的每个中的数作为第三变化矩阵的每行输出。
根据示例性实施例的一方面,提供一种加密/解密装置,该加密/解密装置可包括:密钥调度单元,被构造为基于输入密钥产生多个回次密钥,所述回次密钥用于执行多个加密/解密回次中的每个回次;块回次单元,被构造为通过基于所述多个回次密钥执行所述多个加密/解密回次来对明文进行加密或对密文进行解密;随机排列产生单元,被构造为通过以下步骤在空间上将密钥调度单元中的密钥置换盒(key-sbox)的处理或块回次单元中的数据置换盒(data-sbox)的处理随机化:使用矩阵对N个数的初始排列序列执行随机布置操作,以产生所述N个数的最终排列序列,其中,所述最终排列序列是所述初始排列序列的重排序列;以及高级加密标准(AES)控制器单元,被构造为基于AES算法来控制密钥调度单元、块回次单元和随机排列产生单元。
随机排列产生单元可在时间上将密钥调度单元中的密钥置换盒的处理或块回次单元中的数据置换盒的处理随机化。
随机排列产生单元可包括:排列输入单元,被构造为接收具有N个数的初始排列序列,并且被构造为将所述初始排列序列的N个数布置在所述矩阵中,其中,N为等于或大于2的整数;第一矩阵变化单元,被构造为通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于行随机数执行第一随机布置操作;第二矩阵变化单元,被构造为通过对第一变化矩阵的每列中的数执行第二随机布置操作来产生第二变化矩阵,其中,基于列随机数执行第二随机布置操作;以及排列输出单元,被构造为通过以下步骤产生所述N个数的最终排列序列:根据第二变化矩阵的行或列将布置在第二变化矩阵中的N个数作为所述最终排列序列输出。
随机排列产生单元可包括:排列输入单元,被构造为接收具有N个数的初始排列序列,并且被构造为将所述初始排列序列的N个数布置在所述矩阵中,其中,N为等于或大于2的整数;第一矩阵变化单元,被构造为通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于第一行随机数执行第一随机布置操作;第一矩阵转置单元,产生与第一变化矩阵的转置矩阵对应的第二变化矩阵;第二矩阵变化单元,被构造为通过对第二变化矩阵的每行中的数执行第二随机布置操作来产生第三变化矩阵,其中,基于第二行随机数执行第二随机布置操作;第二矩阵转置单元,产生与第三变化矩阵的转置矩阵对应的第四变化矩阵;以及排列输出单元,被构造为通过以下步骤产生所述N个数的最终排列序列:根据第四变化矩阵的行或列将布置在第四变化矩阵中的N个数作为所述最终排列序列输出。
因此,根据示例性实施例的产生随机排列的方法可通过对与初始排列对应的矩阵在每行中执行随机布置操作(即,旋转操作或混洗操作)并在每列中执行随机布置操作来产生随机排列。结果,产生随机排列的方法在通过硬件实现时可被实现为复用器的简单结构,并且可有效地使用被应用于矩阵的每行和每列的二进制随机源。
另外,根据示例性实施例的随机排列产生装置可通过对与初始排列对应的矩阵在每行中执行随机布置操作并在每列中执行随机布置操作来产生随机排列。结果,随机排列产生装置可通过复用器的简单结构来实现,并且可有效地使用被应用于矩阵的每行和每列的二进制随机源。
此外,根据示例性实施例的加密/解密装置可在空间上和/或在时间上将块回次单元在每个回次中执行的数据置换盒的处理和/或密钥调度单元在每个回次中执行的密钥置换盒的处理随机化。结果,可实现防范外部攻击(比如,侧信道分析(SCA)等)的高数据安全性。
附图说明
从以下结合附图进行的详细描述,将更清楚地理解说明性的、非限制性的示例性实施例,在附图中:
图1是示出根据示例性实施例的产生随机排列的方法的流程图;
图2是示出用于图1的方法的方阵的示图;
图3是示出用于图1的方法的长方阵的示图;
图4是示出通过图1的方法执行旋转操作的示例的流程图;
图5至图9是示出通过基于图4中的方阵的旋转操作来产生随机排列的示例的示图;
图10是示出通过基于图4中的方阵的旋转操作来产生随机排列的示例的电路图;
图11至图15是示出通过基于图4中的长方阵的旋转操作来产生随机排列的示例的示图;
图16是示出通过基于图4中的长方阵的旋转操作来产生随机排列的示例的电路图;
图17是示出通过图1的方法执行混洗(shuffle)操作的示例的流程图;
图18至图23是示出通过图17中的混洗操作产生随机排列的示例的示图;
图24是示出通过图17中的混洗操作产生随机排列的示例的电路图;
图25是示出当图1的方法通过硬件实现时的硬件复杂度的曲线图;
图26是示出根据示例性实施例的产生随机排列的方法的流程图;
图27至图32是示出通过图26的方法产生随机排列的示例的示图;
图33是示出根据示例性实施例的随机排列产生装置的框图;
图34是示出根据示例性实施例的随机排列产生装置的框图;
图35是示出根据示例性实施例的加密/解密装置的框图;
图36是示出由图35的加密/解密装置执行加密操作的示例的框图;
图37是示出由图35的加密/解密装置执行解密操作的示例的框图;
图38是示出由图35的加密/解密装置采用的AES核的示例的框图;
图39是示出在图38的AES核中执行数据置换盒的处理的示例的示图;
图40是示出在图38的AES核中执行数据置换盒的处理的另一示例的示图;
图41是示出在图38的AES核中执行数据置换盒的处理的又一示例的示图;
图42是示出在图38的AES核中执行密钥置换盒的处理的示例的示图;
图43是示出由图35的加密/解密装置采用的AES核的另一示例的框图;
图44是示出由图35的加密/解密装置采用的AES核的又一示例的框图;
图45是示出由图35的加密/解密装置采用的AES核的又一示例的框图;
图46是示出具有图35的加密/解密装置的计算系统的示例的框图;
图47是示出具有图35的加密/解密装置的计算系统的另一示例的框图;
图48是示出具有图35的加密/解密装置的智能电话的示例的示图;
图49是示出具有图35的加密/解密装置的智能卡的示例的示图。
具体实施方式
以下将参照附图更充分地描述各种示例性实施例,在附图中示出了一些示例性实施例。然而,示例性实施例可以以许多不同的形式被实施,并且不应被解读为限于本文所阐述的示例性实施例。相反,提供这些示例性实施例以使得本公开内容将是详尽的且完整的,并且将将本公开内容的范围全面传达给本领域的技术人员。在附图中,为了清楚起见,可夸大层和区域的大小与相对大小。相同的数字始终表示相同的元件。
将理解,尽管术语“第一”、“第二”、“第三”等可在本文中被用于描述各种元件,但是这些元件不应受这些术语限制。这些术语用于将一元件区分于另一元件。因此,在不脱离本公开内容的教导的情况下,以下讨论的第一元件可被称为第二元件。如本文所使用的,术语“和/或”包括相关列出项中的一个或多个的任意组合和所有组合。
将理解,当元件被称为与另一元件“连接”或“结合”时,该元件可与所述另一元件直接连接或结合,或者可以存在中间元件。相反,当元件被称为与另一元件“直接连接”或“直接结合”时,不存在中间元件。用于描述元件之间的关系的其他词语应以相似的方式被解释(例如,“之间”对“之间直接”、“相邻”对“直接相邻”等)。
本文所使用的术语是出于描述特定的示例性实施例的目的,并非意图限制本公开内容。如本文所使用的,单数形式“一”(“a”、“an”)和“所述”(“the”)还意图包括复数形式,除非上下文明确地另外指明。还将理解,术语“包括”(“comprises”和/或“comprising”)在本说明书中被使用时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他的特征、整数、步骤、操作、元件、组件和/或它们的组合的存在或添加。
除非另外定义,否则本文使用的所有术语(包括技术术语和科学术语)具有与本公开内容所涉及的领域的普通技术人员通常理解的意义相同的意义。还将理解,术语(比如,在常用字典中所定义的那些术语)应被解释为具有与它们在相关领域的上下文中的意义一致的意义,并且将不从理想化的或过于正式的意义上进行解释,除非本文如此明确定义。
图1是示出根据示例性实施例的产生随机排列的方法的流程图。图2是示出用于图1的方法的方阵的示图。图3是示出用于图1的方法的长方阵的示图。
参照图1至图3,图1的方法可通过将N个数(其中,N为等于或大于2的整数)布置在至少一行和至少一列中来产生矩阵(步骤S120),通过在所述矩阵的每行中基于至少一个随机数执行随机布置操作来产生第一变化矩阵(步骤S140),通过在第一变化矩阵的每列中基于至少一个随机数执行随机布置操作来产生第二变化矩阵(步骤S160),并根据行或列输出布置在第二变化矩阵中的N个数(步骤S180)。在示例性实施例中,方阵100或长方阵200可被选择作为所述矩阵。
图1的方法可通过将N个数布置在至少一行和至少一列中来产生矩阵(例如,方阵100或长方阵200)(步骤S120)。这里,N个数可构成初始排列。当将N个数布置在方阵100或长方阵200中时,可基于初始排列的顺序将N个数布置在方阵100或长方阵200中,或者可不管初始排列的顺序而将N个数布置在方阵100或长方阵200中。例如,图2中示出初始排列{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}的16个数基于初始排列{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}的顺序被布置在方阵100中。另外,图3中示出初始排列{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E}的15个数基于初始排列{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E}的顺序被布置在长方阵200中。然而,如上所述,N个数的布置次序可以以各种方式改变,而不管初始排列的顺序如何。在示例性实施例中,N个数可分别具有二进制形式。例如,假设初始排列为{00,01,10,11},则N个数可包括“00”、“01”、“10”和“11”。在这种情况下,初始排列{00,01,10,11}可通过二进制随机源{0,1}被随机化。
在通过将N个数布置在至少一行和至少一列中产生矩阵(步骤S120)之后,图1的方法可通过在方阵100或长方阵200的每行(即,RA_1、RA_2、RA_3、RA_4、......)中执行随机布置操作来产生第一变化矩阵(步骤S140)。在一个示例性实施例中,随机布置操作可对应于旋转操作。也就是说,图1的方法可通过将方阵100或长方阵200的每行的数在行方向上旋转行随机数来产生第一变化矩阵。这里,可针对矩阵(即,方阵100或长方阵200)的每行独立选择行随机数。例如,在方阵100的情况下,布置在第一行中的数可被旋转1,布置在第二行中的数可被旋转2,布置在第三行中的数可被旋转3,布置在第四行中的数可被旋转0(即,4)。在一个示例性实施例中,行随机数的范围可以在0与之间,其中,j是布置在矩阵的每行中的数的数量。例如,如果布置在矩阵的每行中的数的数量为4,则行随机数的范围可以在0与3之间。另外,如果布置在矩阵的每行中的数的数量为10,则行随机数的范围可以在0与7之间。因此,当布置在矩阵的每行中的数的数量为2的整数次幂时,可在没有任何熵浪费或任何随机性降低的情况下优化行随机数的范围。
在另一示例性实施例中,随机布置操作可对应于混洗(shuffle)操作。也就是说,图1的方法可通过将矩阵的每行的数布置在至少一行和至少一列中来产生行子矩阵,可通过在每个行子矩阵的每行和每列中执行旋转操作来产生变化行子矩阵,并可将布置在每个变化行子矩阵中的数作为第一变化矩阵的每行进行输出。例如,假设矩阵是方阵100,则图1的方法可通过布置矩阵的第一行的数(即,0、1、2、3)来产生2×2行子矩阵,可通过在2×2行子矩阵的每行和每列中执行旋转操作来产生2×2变化行子矩阵,并可将布置在2×2变化行子矩阵中的数作为第一变化矩阵的第一行进行输出。以相同的方式,可通过对布置在矩阵的第二行中的数(即,4、5、6、7)执行混洗操作来产生第一变化矩阵的第二行,可通过对布置在矩阵的第三行中的数(即,8、9、A、B)执行混洗操作来产生第一变化矩阵的第三行,并可通过对布置在矩阵的第四行中的数(即,C、D、E、F)执行混洗操作来产生第一变化矩阵的第四行。结果,图1的方法可通过当产生随机排列时增加更多随机性来使熵的使用最大化。
在产生第一变化矩阵之后,图1的方法可通过在第一变化矩阵的每列(即,CA_1、CA_2、CA_3、CA_4、......)中执行随机布置操作来产生第二变化矩阵(步骤S160)。在一个示例性实施例中,随机布置操作可对应于旋转操作。也就是说,图1的方法可通过将布置在第一变化矩阵的每列中的数在列方向上旋转列随机数来产生第二变化矩阵。这里,可针对第一变化矩阵的每列独立选择列随机数。例如,在方阵100的情况下,布置在第一列中的数可被旋转1,布置在第二列中的数可被旋转2,布置在第三列中的数可被旋转3,布置在第4列中的数可被旋转0(即,4)。在一个示例性实施例中,列随机数的范围可以在0与之间,其中,k是布置在第一变化矩阵的每列中的数的数量。例如,如果布置在第一变化矩阵的每列中的数的数量为4,则列随机数的范围可以在0与3之间。另外,如果布置在第一变化矩阵的每列中的数的数量为10,则列随机数的范围可以在0与7之间。因此,当布置在第一变化矩阵的每列中的数的数量为2的整数次幂时,可在没有任何熵浪费或任何随机性降低的情况下优化列随机数的范围。
在另一示例性实施例中,随机布置操作可对应于混洗操作。也就是说,图1的方法可通过将第一变化矩阵的每列的数布置在至少一行和至少一列中来产生列子矩阵,可通过在每个列子矩阵的每行和每列中执行旋转操作来产生变化列子矩阵,并可将布置在每个变化列子矩阵中的数作为第二变化矩阵的每列进行输出。例如,假设第一变化矩阵是方阵100,则图1的方法可通过布置第一变化矩阵的第一列的数(即,0、4、8、C)来产生2×2列子矩阵,可通过在2×2列子矩阵的每行和每列中执行旋转操作来产生2×2变化列子矩阵,并可将布置在2×2变化列子矩阵中的数作为第二变化矩阵的第一列进行输出。以相同的方式,可通过对布置在第一变化矩阵的第二列中的数(即,1、5、9、D)执行混洗操作来产生第二变化矩阵的第二列,可通过对布置在第一变化矩阵的第三列中的数(即,2、6、A、E)执行混洗操作来产生第二变化矩阵的第三列,并可通过对布置在第一变化矩阵的第四列中的数(即,3、7、B、F)执行混洗操作来产生第二变化矩阵的第四列。结果,图1的方法可通过当产生随机排列时增加更多随机性来使熵的使用最大化。
在产生第二变化矩阵之后,图1的方法可根据行或列输出布置在第二变化矩阵中的N个数(步骤S180)。例如,假设第二变化矩阵是方阵100,则当根据行输出布置在第二变化矩阵中的数时,最终排列(即,随机排列)可以是{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}。可选择地,当根据列输出布置在第二变化矩阵中的数时,最终排列(即,随机排列)可以是{0,4,8,C,1,5,9,D,2,6,A,E,3,7,B,F}。类似地,假设第二变化矩阵是长方阵200,则当根据行输出布置在第二变化矩阵中的数时,最终排列(即,随机排列)可以是{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E}。可选择地,当根据列输出布置在第二变化矩阵中的数时,最终排列(即,随机排列)可以是{0,3,6,9,C,1,4,7,A,D,2,5,8,B,E}。如上所述,图1的方法可通过在与初始排列对应的矩阵的每行和每列中执行随机布置操作(即,旋转操作或混洗操作)来产生随机排列。因此,可通过使用多根导线将多个复用器进行连接的简单结构(即,硬件)来实现图1的方法。另外,当图1的方法基于二进制随机源产生随机排列时,图1的方法可有效地使用二进制随机源,所述二进制随机源被应用于矩阵的每行和每列。
尽管以上描述了通过在矩阵的每行中执行随机布置操作来产生第一变化矩阵,然后通过在第一变化矩阵的每列中执行随机布置操作来产生第二变化矩阵,但是示例性实施例不限于此。因此,可通过在矩阵的每列中执行随机布置操作来产生第一变化矩阵,然后可通过在第一变化矩阵的每行中执行随机布置操作来产生第二变化矩阵。另外,图1的方法可通过重复地使用二进制随机源来减小二进制随机源的大小。例如,假设矩阵是方阵100,则图1的方法可通过将相同的行随机数应用于矩阵的偶数行并将相同的行随机数应用于矩阵的奇数行来减小应用于矩阵的每行的二进制随机源的大小。类似地,假设矩阵是方阵100,则图1的方法可通过将相同的列随机数应用于矩阵的偶数列并将相同的列随机数应用于矩阵的奇数列来减小应用于矩阵的每列的二进制随机源的大小。结果,图1的方法可根据产生随机排列所需的条件允许随机性和熵效率。
图4是示出通过图1的方法执行旋转操作的示例的流程图。
参照图4,图1的方法可选择用于矩阵(通过将N个数布置在至少一行和至少一列中来产生所述矩阵)的每行的行随机数(步骤S220),,并可通过将布置在该矩阵的每行中的数在行方向上旋转行随机数来产生第一变化矩阵(S240)。随后,图1的方法可选择用于第一变化矩阵的每列的列随机数(步骤S260),并可通过将布置在第一变化矩阵的每列中的数在列方向上旋转列随机数来产生第二变化矩阵(步骤S280)。如上所述,可针对矩阵的每行独立选择行随机数,并且可针对第一变化矩阵的每列独立选择列随机数。这里,行随机数的范围可以在0与之间,其中,j是布置在矩阵的每行中的数的数量。另外,列随机数的范围可以在0与之间,其中,k是布置在第一变化矩阵的每列中的数的数量。
例如,假设布置在矩阵的每行中的数的数量不是2的整数次幂(例如,10),则因为当行随机数为0时产生的旋转结果与当行随机数为10时产生的旋转结果相同,所以行随机数的范围需要在0与9之间。类似地,假设布置在矩阵的每列中的数的数量不是2的整数次幂(例如,10),则因为当列随机数为0时产生的旋转结果与当列随机数为10时产生的旋转结果相同,所以列随机数的范围需要在0与9之间。然而,在通过使用二进制随机源的硬件实现的情况下,可引起二机制随机源的熵浪费。也就是说,尽管二进制随机源具有4个比特(即,在0与15之间),但是可使用二进制随机源的一部分(即,0与9之间)。因此,图1的方法可确定行随机数的范围在0与之间(其中,j是布置在矩阵的每行中的数的数量),并且可确定列随机数的范围在0与之间(其中,k是布置在第一变化矩阵的每列中的数的数量)。也就是说,图1的方法可使用具有3个比特的二进制随机源(即,0与7之间),而不是具有4个比特的二进制随机源(即,0与15之间)。结果,可防止二进制随机源的熵浪费。
因此,图1的方法可不选择8和9作为行随机数和列随机数。结果,当在矩阵的每行和每列中执行旋转操作时,可引起随机性降低。然而,因为图1的方法通过在矩阵的每行和每列中执行旋转操作来实现足够的随机性,所以随机性降低可以是可忽略的。如上所述,在实现使用二进制随机源的硬件的情况下,在随机性降低与二进制随机源的浪费之间存在权衡关系。这里,图1的方法可侧重于防止二进制随机源的浪费来选择行随机数和列随机数。因此,根据图1的方法,当布置在矩阵的每行中的数的数量为2的整数次幂并且布置在第一变化矩阵的每列中的数的数量为2的整数次幂时,可同时防止随机性降低和二进制随机源的浪费。换句话讲,当布置在矩阵的每行中的数的数量为2的整数次幂时,可优化行随机数的范围,当布置在第一变化矩阵的每列中的数的数量为2的整数次幂时,还可优化列随机数的范围。
图5至图9是示出通过基于图4中的方阵的旋转操作产生随机排列的示例的示图。
参照图5,图1的方法可通过对初始排列IPU(例如,{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F})执行随机布置操作来输出最终排列FPU(例如,{C,A,4,2,3,D,B,5,6,0,E,8,9,7,1,F})。
参照图6和图7,图1的方法可通过将初始排列IPU的数(即,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)布置在4行和4列中来产生矩阵120a。尽管在图6中示出,通过基于初始排列IPU的顺序布置初始排列IPU的数,矩阵120a包括第一行至第四行(即,{0,1,2,3}、{4,5,6,7}、{8,9,A,B}、{C,D,E,F}),但是用于布置初始排列IPU的数的顺序不限于此。也就是说,可以以各种方式确定用于布置初始排列IPU的数的顺序,而不管初始排列IPU的顺序如何。然后,图1的方法可通过在矩阵120a的每行中执行旋转操作(即,ROT_1、ROT_2、ROT_3、ROT_4)来产生第一变化矩阵120b。也就是说,可在矩阵120a的第一行(即,{0,1,2,3})中执行第一旋转操作ROT_1,可在矩阵120a的第二行(即,{4,5,6,7})中执行第二旋转操作ROT_2,可在矩阵120a的第三行(即,{8,9,A,B})中执行第三旋转操作ROT_3,可在矩阵120a的第四行(即,{C,D,E,F})中执行第四旋转操作ROT_4。
在矩阵120a的每行中执行旋转操作(即,ROT_1、ROT_2、ROT_3、ROT_4)之后,第一变化矩阵120b可包括第一行至第四行(即,{3,0,1,2}、{6,7,4,5}、{9,A,B,8}、{C,D,E,F})。图7示出当用于矩阵120a的第一行的行随机数为1、用于矩阵120a的第二行的行随机数为2、用于矩阵120a的第三行的行随机数为3、用于矩阵120a的第四行的行随机数为0时的第一变化矩阵120b的示例。也就是说,第一变化矩阵120b可通过以下步骤来产生:将布置在矩阵120a的第一行中的数旋转1,将布置在矩阵120a的第二行中的数旋转2,将布置在矩阵120a的第三行中的数旋转3,并将布置在矩阵120a的第四行中的数旋转0。如上所述,可针对矩阵120a的每行独立选择行随机数。这里,行随机数的范围可以在0与之间,其中,j是布置在矩阵120a的每行中的数的数量。如图7所示,因为布置在矩阵120a的每行中的数的数量为4,所以行随机数的范围可以在0与3之间。
参照图8和图9,图1的方法可通过在第一变化矩阵120b的每列中执行旋转操作(即,ROT_1、ROT_2、ROT_3、ROT_4)来产生第二变化矩阵120c。也就是说,可在第一变化矩阵120b的第一列(即,{3,6,9,C})中执行第一旋转操作ROT_1,可在第一变化矩阵120b的第二列(即,{0,7,A,D})中执行第二旋转操作ROT_2,可在第一变化矩阵120b的第三列(即,{1,4,B,E})中执行第三旋转操作ROT_3,可在第一变化矩阵120b的第四列(即,{2,5,8,F})中执行第四旋转操作ROT_4。结果,第二变化矩阵120c可包括第一列至第四列(即,{C,3,6,9}、{A,D,0,7}、{4,B,E,1}、{2,5,8,F})。图9示出当用于第一变化矩阵120b的第一列的列随机数为1、用于第一变化矩阵120b的第二列的列随机数为2、用于第一变化矩阵120b的第三列的列随机数为3、用于第一变化矩阵120b的第四列的列随机数为0时的第二变化矩阵120c的示例。也就是说,第二变化矩阵120c可通过以下步骤来产生:将布置在第一变化矩阵120b的第一列中的数旋转1,将布置在第一变化矩阵120b的第二列中的数旋转2,将布置在第一变化矩阵120b的第三列中的数旋转3,并将布置在第一变化矩阵120b的第四列中的数旋转0。如上所述,可针对第一变化矩阵120b的每列独立选择列随机数。这里,列随机数的范围可以在0与之间,其中,k是布置在第一变化矩阵120b的每列中的数的数量。如图9所示,因为布置在第一变化矩阵120b的每列中的数的数量为4,所以列随机数的范围可以在0与3之间。
随后,图1的方法可根据行或列输出布置在第二变化矩阵120c中的数。图5中示出布置在第二变化矩阵120c中的数根据行被依次输出。也就是说,最终排列FPU(即,{C,A,4,2,3,D,B,5,6,0,E,8,9,7,1,F})可通过依次输出以下行来产生:第二变化矩阵120c的第一行(即,{C,A,4,2})、第二变化矩阵120c的第二行(即,{3,D,B,5})、第二变化矩阵120c的第三行(即,{6,0,E,8})以及第二变化矩阵120c的第四行(即,{9,7,1,F})。然而,本示例性实施例不限于此。例如,布置在第二变化矩阵120c中的数可根据列被依次输出。如上所述,因为图1的方法通过在与初始排列IPU对应的矩阵120a的每行和每列中执行旋转操作来产生随机排列,所以可通过使用多根导线将多个复用器进行连接的简单结构(即,硬件)来实现图1的方法。另外,当图1的方法基于二进制随机源产生随机排列时,图1的方法可有效地使用二进制随机源,所述二进制随机源被应用于矩阵120a的每行和每列。以下,将详细描述用其实现图1的方法的硬件的示例。
图10是示出通过基于图4中的方阵的旋转操作来产生随机排列的示例的电路图。
参照图10,简单结构可被实现为用于应用图1的通过基于方阵执行旋转操作来产生随机排列的方法的硬件。详细地讲,所述硬件可包括第一缓冲器单元FB、第一导线单元FW、第一复用器单元FM、第一转置导线单元FT、第二缓冲器单元SB、第二导线单元SW、第二复用器单元SM、第二转置导线单元ST和第三缓冲器单元TB。
第一缓冲器单元FB可对应于4×4矩阵。第一缓冲器单元FB可从外部接收包括16个数的初始排列,并可将初始排列的16个数布置在4行和4列中。例如,可使用用于临时存储初始排列的16个数的存储器装置、缓冲器装置、延迟装置等来实现第一缓冲器单元FB。在一个示例性实施例中,第一缓冲器单元FB可基于初始排列的顺序来布置初始排列的16个数。在另一示例性实施例中,第一缓冲器单元FB可随机地布置初始排列的16个数(即,不管初始排列的顺序如何)。如图10所示,第一缓冲器单元FB可具有第一行ROW1至第四行ROW4,第一行ROW1至第四行ROW4均包括4个数。因此,第一行ROW1至第四行ROW4的第一个数可构成4×4矩阵的第一列,第一行ROW1至第四行ROW4的第二个数可构成4×4矩阵的第二列,第一行ROW1至第四行ROW4的第三个数可构成4×4矩阵的第三列,第一行ROW1至第四行ROW4的第四个数可构成4×4矩阵的第四列。第一导线单元FW可将第一缓冲器单元FB与第一复用器单元FM连接。这里,第一导线单元FW可根据4×4矩阵的行(即,ROW1、ROW2、ROW3、ROW4)将第一缓冲器单元FB与第一复用器单元FM连接。
第一复用器单元FM可包括16个复用器。这里,第一复用器单元FM的一组可包括4个复用器。也就是说,第一缓冲器单元FB的第一行ROW1可与第一复用器单元FM的第一组连接,第一缓冲器单元FB的第二行ROW2可与第一复用器单元FM的第二组连接,第一缓冲器单元FB的第三行ROW3可与第一复用器单元FM的第三组连接,第一缓冲器单元FB的第四行ROW4可与第一复用器单元FM的第四组连接。这里,可针对第一缓冲器单元FB的每行(即,ROW1、ROW2、ROW3、ROW4)独立选择应用于第一缓冲器单元FB的行随机数。另外,因为第一缓冲器单元FB的每行(即,ROW1、ROW2、ROW3、ROW4)的4个数被旋转了相同的行随机数,所以第一复用器单元FM的每组的4个复用器可接收相同的选择信号(即,二进制随机源)。第一转置导线单元FT可将第一复用器单元FM与第二缓冲器单元SB连接。这里,第一转置导线单元FT可将第一复用器单元FM的每组的4个复用器分布给第二缓冲器单元SB的第一列COL1至第四列COL4。也就是说,第一转置导线单元FT可对4×4矩阵的每列(即,COL1、COL2、COL3、COL4)准备旋转操作。因此,可通过第一缓冲器单元FB、第一导线单元FW、第一复用器单元FM和第一转置导线单元FT在4×4矩阵的每行(即,ROW1、ROW2、ROW3、ROW4)中执行旋转操作ROW_R。
也可使用用于临时存储16个数的存储器装置、缓冲器装置、延迟装置等来实现第二缓冲器单元SB。如图10所示,第二缓冲器单元SB可具有第一列COL1至第四列COL4,第一列COL1至第四列COL4均包括4个数。因此,第一列COL1至第四列COL4的第一个数可构成4×4矩阵的第一行,第一列COL1至第四列COL4的第二个数可构成4×4矩阵的第二行,第一列COL1至第四列COL4的第三个数可构成4×4矩阵的第三行,第一列COL1至第四列COL4的第四个数可构成4×4矩阵的第四行。第二导线单元SW可将第二缓冲器单元SB与第二复用器单元SM连接。这里,第二导线单元SW可根据4×4矩阵的列(即,COL1、COL2、COL3、COL4)将第二缓冲器单元SB与第二复用器单元SM连接。
第二复用器单元SM可包括16个复用器。这里,第二复用器单元SM的一组可包括4个复用器。也就是说,第二缓冲器单元SB的第一列COL1可与第二复用器单元SM的第一组连接,第二缓冲器单元SB的第二列COL2可与第二复用器单元SM的第二组连接,第二缓冲器单元SB的第三列COL3可与第二复用器单元SM的第三组连接,第二缓冲器单元SB的第四列COL4可与第二复用器单元SM的第四组连接。这里,可针对第二缓冲器单元SB的每列(即,COL1、COL2、COL3、COL4)独立选择应用于第二缓冲器单元SB的列随机数。另外,因为第二缓冲器单元SB的每列(即,COL1、COL2、COL3、COL4)的4个数被旋转了相同的列随机数,所以第二复用器单元SM的每组的4个复用器可接收相同的选择信号(即,二进制随机源)。第二转置导线单元ST可将第二复用器单元SM与第三缓冲器单元TB连接。这里,第二转置导线单元ST可将第二复用器单元SM的每组的4个复用器分布给第三缓冲器单元TB的第一行ROW1至第四行ROW4。因此,可通过第二缓冲器单元SB、第二导线单元SW、第二复用器单元SM和第二转置导线单元ST在4×4矩阵的每列(即,COL1、COL2、COL3、COL4)中执行旋转操作COL_R。
随后,所述硬件可根据行输出布置在第三缓冲器单元TB中的数。例如,所述硬件可通过依次输出第三缓冲器单元TB的第一行ROW1至第四行ROW4来输出最终排列(即,随机排列)。可选择地,所述硬件可通过随机地输出第三缓冲器单元TB的第一行ROW1至第四行ROW4来输出最终排列。另外,所述硬件可根据列输出布置在第三缓冲器单元TB中的数。因此,图1的方法在通过硬件实现时可由具有复用器和导线的简单结构来实现。尽管以上描述了通过在4×4矩阵的每行中执行旋转操作,然后在4×4矩阵的每列中执行旋转操作来产生随机排列,但是本发明构思不限于此。因此,应理解,可通过在4×4矩阵的每列中执行旋转操作,然后在4×4矩阵的每行中执行旋转操作来产生随机排列。
图11至图15是示出通过基于图4中的长方阵的旋转操作来产生随机排列的示例的示图。
参照图11,图1的方法可通过对初始排列IPU(例如,{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E})执行随机布置操作来输出最终排列FPU(例如,{E,9,8,2,C,A,5,0,D,6,3,1,B,7,4})。
参照图12和图13,图1的方法可通过将初始排列IPU的数(即,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E)布置在5行和3列中来产生矩阵220a。尽管在图12中示出,通过基于初始排列IPU的顺序来布置初始排列IPU的数,矩阵220a包括第一行至第四行(即,{0,1,2}、{3,4,5}、{6,7,8}、{9,A,B}、{C,D,E}),但是用于布置初始排列IPU的数的顺序不限于此。也就是说,用于布置初始排列IPU的数的顺序可以以各种方式被确定,而不管初始排列IPU的顺序如何。然后,图1的方法可通过在矩阵220a的每行中执行旋转操作(即,ROT_1、ROT_2、ROT_3、ROT_4、ROT_5)来产生第一变化矩阵220b。也就是说,可在矩阵220a的第一行(即,{0,1,2})中执行第一旋转操作ROT_1,可在矩阵220a的第二行(即,{3,4,5})中执行第二旋转操作ROT_2,可在矩阵220a的第三行(即,{6,7,8})中执行第三旋转操作ROT_3,可在矩阵220a的第四行(即,{9,A,B})中执行第四旋转操作ROT_4,可在矩阵220a的第五行(即,{C,D,E})中执行第五旋转操作ROT_5。
在矩阵220a的每行中执行旋转操作(即,ROT_1、ROT_2、ROT_3、ROT_4、ROT_5)之后,第一变化矩阵220b可包括第一行至第五行(即,{2,0,1}、{5,3,4}、{6,7,8}、{B,9,A}、{E,C,D})。图13示出当用于矩阵220a的第一行的行随机数为1、用于矩阵220a的第二行的行随机数为1、用于矩阵220a的第三行的行随机数为0、用于矩阵220a的第四行的行随机数为1、用于矩阵220a的第五行的行随机数为1时的第一变化矩阵220b的示例。也就是说,第一变化矩阵220b可通过以下步骤来产生:将布置在矩阵220a的第一行中的数旋转1,将布置在矩阵220a的第二行中的数旋转1,将布置在矩阵220a的第三行中的数旋转0,将布置在矩阵220a的第四行中的数旋转1,并将布置在矩阵220a的第五行中的数旋转1。如上所述,可针对矩阵220a的每行独立选择行随机数。这里,行随机数的范围可以在0与之间,其中,j是布置在矩阵220a的每行中的数的数量。如图13所示,因为布置在矩阵220a的每行中的数的数量为3,所以行随机数的范围可以在0与1之间。
参照图14和图15,图1的方法可通过在第一变化矩阵220b的每列中执行旋转操作(即,ROT_1、ROT_2、ROT_3)来产生第二变化矩阵220c。也就是说,可在第一变化矩阵220b的第一列(即,{2,5,6,B,E})中执行第一旋转操作ROT_1,可在第一变化矩阵220b的第二列(即,{0,3,7,9,C})中执行第二旋转操作ROT_2,可在第一变化矩阵220b的第三列(即,{1,4,8,A,D})中执行第三旋转操作ROT_3。结果,第二变化矩阵220c可包括第一列至第三列(即,{E,2,5,6,B}、{9,C,0,3,7}、{8,A,D,1,4})。图15示出当用于第一变化矩阵220b的第一列的列随机数为1、用于第一变化矩阵220b的第二列的列随机数为2、用于第一变化矩阵220b的第三列的列随机数为3时的第二变化矩阵220c的示例。也就是说,第二变化矩阵220c可通过以下步骤来产生:将布置在第一变化矩阵220b的第一列中的数旋转1,将布置在第一变化矩阵220b的第二列中的数旋转2,并将布置在第一变化矩阵220b的第三列中的数旋转3。如上所述,可针对第一变化矩阵220b的每列独立选择列随机数。这里,列随机数的范围可以在0与之间,其中,k是布置在第一变化矩阵220b的每列中的数的数量。如图15所示,因为布置在第一变化矩阵220b的每列中的数的数量为5,所以列随机数的范围可以在0与3之间。
随后,图1的方法可根据行或列输出布置在第二变化矩阵220c中的数。图11中示出布置在第二变化矩阵220c中的数根据行被依次输出。也就是说,可通过依次输出以下行来产生最终排列FPU(即,{E,9,8,2,C,A,5,0,D,6,3,1,B,7,4}):第二变化矩阵220c的第一行(即,{E,9,8})、第二变化矩阵220c的第二行(即,{2,C,A})、第二变化矩阵220c的第三行(即,{5,0,D})、第二变化矩阵220c的第四行(即,{6,3,1})以及第二变化矩阵220c的第五行(即,{B,7,4})。然而,本示例性实施例不限于此。例如,布置在第二变化矩阵220c中的数可根据列被依次输出。因此,因为图1的方法通过在与初始排列IPU对应的矩阵220a的每行和每列中执行旋转操作来产生随机排列,所以图1的方法可通过使用多根导线将多个复用器进行连接的简单结构(即,硬件)来实现。另外,当图1的方法基于二进制随机源产生随机排列时,图1的方法可有效地使用二进制随机源,所述二进制随机源被应用于矩阵220a的每行和每列。以下,将详细描述用其实现图1的方法的硬件的示例。
图16是示出通过基于图4中的长方阵的旋转操作来产生随机排列的示例的电路图。
参照图16,可通过硬件(即,简单结构)来实现:图1的方法通过基于长方阵执行旋转操作来产生随机排列。详细地讲,所述硬件可包括第一缓冲器单元FB、第一导线单元FW、第一复用器单元FM、第一转置导线单元FT、第二缓冲器单元SB、第二导线单元SW、第二复用器单元SM、第二转置导线单元ST和第三缓冲器单元TB。
第一缓冲器单元FB可对应于5×3矩阵。第一缓冲器单元FB可接收包括15个数的初始排列,并可将初始排列的15个数布置在5行和3列中。例如,可使用用于临时存储初始排列的15个数的存储器装置、缓冲器装置、延迟装置等来实现第一缓冲器单元FB。在一个示例性实施例中,第一缓冲器单元FB可基于初始排列的顺序来布置初始排列的15个数。在另一示例性实施例中,第一缓冲器单元FB可随机地布置初始排列的15个数(即,不管初始排列的顺序如何)。如图16所示,第一缓冲器单元FB可具有第一行ROW1至第五行ROW5,第一行ROW1至第五行ROW5均包括3个数。因此,第一行ROW1至第五行ROW5的第一个数可构成5×3矩阵的第一列,第一行ROW1至第五行ROW5的第二个数可构成5×3矩阵的第二列,第一行ROW1至第五行ROW5的第三个数可构成5×3矩阵的第三列。第一导线单元FW可将第一缓冲器单元FB与第一复用器单元FM连接。这里,第一导线单元FW可根据5×3矩阵的行(即,ROW1、ROW2、ROW3、ROW4、ROW5)将第一缓冲器单元FB与第一复用器单元FM连接。
第一复用器单元FM可包括15个复用器。这里,第一复用器单元FM的一组可包括3个复用器。也就是说,第一缓冲器单元FB的第一行ROW1可与第一复用器单元FM的第一组连接,第一缓冲器单元FB的第二行ROW2可与第一复用器单元FM的第二组连接,第一缓冲器单元FB的第三行ROW3可与第一复用器单元FM的第三组连接,第一缓冲器单元FB的第四行ROW4可与第一复用器单元FM的第四组连接,第一缓冲器单元FB的第五行ROW5可与第一复用器单元FM的第五组连接。这里,可针对第一缓冲器单元的每行(即,ROW1、ROW2、ROW3、ROW4、ROW5)独立选择应用于第一缓冲器单元FB的行随机数。另外,因为第一缓冲器单元FB的每行(即,ROW1、ROW2、ROW3、ROW4、ROW5)的3个数被旋转了相同的行随机数,所以第一复用器单元FM的每组的3个复用器可接收相同的选择信号(即,二进制随机源)。第一转置导线单元FT可将第一复用器单元FM与第二缓冲器单元SB连接。这里,第一转置导线单元FT可将第一复用器单元FM的每组的3个复用器分布给第二缓冲器单元SB的第一列COL1至第三列COL3。也就是说,第一转置导线单元FT可对5×3矩阵的每列(即,COL1、COL2、COL3)准备旋转操作。因此,可通过第一缓冲器单元FB、第一导线单元FW、第一复用器单元FM和第一转置导线单元FT在5×3矩阵的每行(即,ROW1、ROW2、ROW3、ROW4、ROW5)中执行旋转操作ROW_R。
也可使用用于临时存储15个数的存储器装置、缓冲器装置、延迟装置等来实现第二缓冲器单元SB。如图16所示,第二缓冲器单元SB可具有第一列COL1至第三列COL3,第一列COL1至第三列COL3均包括5个数。因此,第一列COL1至第三列COL3的第一个数可构成5×3矩阵的第一行,第一列COL1至第三列COL3的第二个数可构成5×3矩阵的第二行,第一列COL1至第三列COL3的第三个数可构成5×3矩阵的第三行,第一列COL1至第三列COL3的第四个数可构成5×3矩阵的第四行,第一列COL1至第三列COL3的第五个数可构成5×3矩阵的第五行。第二导线单元SW可将第二缓冲器单元SB与第二复用器单元SM连接。这里,第二导线单元SW可根据5×3矩阵的列(即,COL1、COL2、COL3)将第二缓冲器单元SB与第二复用器单元SM连接。
第二复用器单元SM可包括15个复用器。这里,第二复用器单元SM的一组可包括5个复用器。也就是说,第二缓冲器单元SB的第一列COL1可与第二复用器单元SM的第一组连接,第二缓冲器单元SB的第二列COL2可与第二复用器单元SM的第二组连接,第二缓冲器单元SB的第三列COL3可与第二复用器单元SM的第三组连接。这里,可针对第二缓冲器单元SB的每列(即,COL1、COL2、COL3)独立选择应用于第二缓冲器单元SB的列随机数。另外,因为第二缓冲器单元SB的每列(即,COL1、COL2、COL3)的5个数被旋转了相同的列随机数,所以第二复用器单元SM的每组的5个复用器可接收相同的选择信号(即,二进制随机源)。第二转置导线单元ST可将第二复用器单元SM与第三缓冲器单元TB连接。这里,第二转置导线单元ST可将第二复用器单元SM的每组的5个复用器分布给第三缓冲器单元TB的第一行ROW1至第五行ROW5。因此,可通过第二缓冲器单元SB、第二导线单元SW、第二复用器单元SM和第二转置导线单元ST在5×3矩阵的每列(即,COL1、COL2、COL3)中执行旋转操作COL_R。
随后,所述硬件可根据行输出布置在第三缓冲器单元TB中的数。例如,所述硬件可通过依次输出第三缓冲器单元TB的第一行ROW1至第五行ROW5来输出最终排列(即,随机排列)。可选择地,所述硬件可通过随机地输出第三缓冲器单元TB的第一行ROW1至第五行ROW5来输出最终排列。另外,所述硬件可根据列输出布置在第三缓冲器单元TB中的数。因此,图1的方法在通过硬件实现时可由具有复用器和导线的简单结构实现。尽管以上描述了通过在5×3矩阵的每行中执行旋转操作,然后在5×3矩阵的每列中执行旋转操作来产生随机排列,但是本示例性实施例不限于此。因此,应理解,可通过在5×3矩阵的每列中执行旋转操作,然后在5×3矩阵的每行中执行旋转操作来产生随机排列。
图17是示出通过图1的方法执行混洗操作的示例的流程图。
参照图17,图1的方法可通过将矩阵的每行的数布置在至少一行和至少一列中来产生行子矩阵,所述矩阵通过将N个数(其中,N为等于或大于2的整数)布置在至少一行和至少一列中来产生(步骤S310)。然后,图1的方法可通过在每个行子矩阵的每行和每列中执行旋转操作来产生变化行子矩阵(步骤S320),并可将布置在每个变化行子矩阵中的数作为第一变化矩阵的每行进行输出(步骤S330)。随后,图1的方法可通过将第一变化矩阵的每列的数布置在至少一行和至少一列中来产生列子矩阵(步骤S340),可通过在每个列子矩阵的每行和每列中执行旋转操作来产生变化列子矩阵(步骤S350),然后可将布置在每个变化列子矩阵中的数作为第二变化矩阵的每列进行输出(步骤S360)。在图1的方法中,矩阵的每行中的混洗操作可对应这样的操作,即,通过在行子矩阵(通过将矩阵的一行的数布置在至少一行和至少一列中来产生所述行子矩阵)的每行和每列中执行旋转操作来产生变化行子矩阵,然后根据行或列输出变化行子矩阵的数。类似地,第一变化矩阵的每列中的混洗操作可对应这样的操作,即,通过在列子矩阵(通过将第一变化矩阵的一列的数布置在至少一行和至少一列中来产生所述列子矩阵)的每行和每列中执行旋转操作来产生变化列子矩阵,然后根据行或列输出变化列子矩阵的数。以下,将详细描述图1的方法执行混洗操作的示例。
图18至图23是示出通过图17中的混洗操作产生随机排列的示例的示图。
参照图18,图1的方法可通过对初始排列IPU(例如,{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F})执行随机布置操作来输出最终排列FPU(例如,{B,0,5,3,2,D,9,7,6,A,E,8,C,4,1,F})。
参照图19至图21,图1的方法可通过将初始排列IPU的数(即,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)布置在4行和4列中来产生矩阵140a。尽管在图19中示出,通过基于初始排列IPU的顺序来布置初始排列IPU的数,矩阵140a包括第一行至第四行(即,{0,1,2,3}、{4,5,6,7}、{8,9,A,B}、{C,D,E,F}),但是用于布置初始排列IPU的数的顺序不限于此。也就是说,用于布置初始排列IPU的数的顺序可以以各种方式被确定,而不管初始排列IPU的顺序如何。然后,图1的方法可通过在矩阵140a的每行中执行混洗操作(即,SUFF_1、SUFF_2、SUFF_3、SUFF_4)来产生第一变化矩阵140b。也就是说,可在矩阵140a的第一行(即,{0,1,2,3})中执行第一混洗操作SUFF_1,可在矩阵140a的第二行(即,{4,5,6,7})中执行第二混洗操作SUFF_2,可在矩阵140a的第三行(即,{8,9,A,B})中执行第三混洗操作SUFF_3,可在矩阵140a的第四行(即,{C,D,E,F})中执行第四混洗操作SUFF_4。
图20示出通过在矩阵140a的第一行(即,{0,1,2,3})中执行第一混洗操作SUFF_1来产生第一变化矩阵140b的第一行(即,{2,0,1,3})的示例。换句话讲,图1的方法可通过将矩阵140a的第一行的数(即,0、1、2、3)布置在至少一行和至少一列中来产生行子矩阵SUB_MATRIX1。在一个示例性实施例中,矩阵140a的第一行的数(即,0、1、2、3)可被依次布置在行子矩阵SUB_MATRIX1中。在另一示例性实施例中,矩阵140a的第一行的数(即,0、1、2、3)可被随机布置在行子矩阵SUB_MATRIX1中。然后,图1的方法可通过在行子矩阵SUB_MATRIX1的每行和每列中执行旋转操作(即,Rotate1、Rotate2)来产生变化行子矩阵SUB_MATRIX2。这里,可针对行子矩阵SUB_MATRIX1的每行独立选择行随机数,并且可针对行子矩阵SUB_MATRIX1的每列独立选择列随机数。另外,行随机数的范围可以在0与之间,其中,w是布置在行子矩阵SUB_MATRIX1的每行中的数的数量。此外,列随机数的范围可以在0与之间,其中,w是布置在行子矩阵SUB_MATRIX1的每列中的数的数量。随后,图1的方法可根据行或列输出布置在变化行子矩阵SUB_MATRIX2中的数(即,2、0、1、3)来作为第一变化矩阵140b的第一行。以这种方式,可通过分别在矩阵140a的第二行至第四行中执行第二混洗操作SUFF_2至第四混洗操作SUFF_4来产生第一变化矩阵140b的第二行至第四行。
参照图21至图23,图1的方法可通过在第一变化矩阵140b的每列中执行混洗操作(即,SUFF_1、SUFF_2、SUFF_3、SUFF_4)来产生第二变化矩阵140c。也就是说,可在第一变化矩阵140b的第一列(即,{2,6,B,C})中执行第一混洗操作SUFF_1,可在第一变化矩阵140b的第二列(即,{0,4,A,D})中执行第二混洗操作SUFF_2,可在第一变化矩阵140b的第三列(即,{1,5,9,E})中执行第三混洗操作SUFF_3,可在第一变化矩阵140b的第四列(即,{3,7,8,F})中执行第四混洗操作SUFF_4。
图22示出通过在第一变化矩阵140b的第一列(即,{2,6,B,C})中执行第一混洗操作SUFF_1来产生第二变化矩阵140c的第一列(即,{B,2,6,C})的示例。换句话讲,图1的方法可通过将第一变化矩阵140b的第一列的数(即,2、6、B、C)布置在至少一行和至少一列中来产生列子矩阵SUB_MATRIX3。在一个示例性实施例中,第一变化矩阵140b的第一列的数(即,2、6、B、C)可被依次布置在列子矩阵SUB_MATRIX3中。在另一示例性实施例中,第一变化矩阵140b的第一列的数(即,2、6、B、C)可被随机布置在列子矩阵SUB_MATRIX3中。然后,图1的方法可通过在列子矩阵SUB_MATRIX3的每行和每列中执行旋转操作(即,Rotate1、Rotate2)来产生变化列子矩阵SUB_MATRIX4。这里,可针对列子矩阵SUB_MATRIX3的每行独立选择行随机数,并且可针对列子矩阵SUB_MATRIX3的每列独立选择列随机数。另外,行随机数的范围可以在0与之间,其中,w是布置在列子矩阵SUB_MATRIX3的每行中的数的数量。此外,列随机数的范围可以在0与 之间,其中,w是布置在列子矩阵SUB_MATRIX3的每列中的数的数量。随后,图1的方法可根据行或列输出布置在变化列子矩阵SUB_MATRIX4中的数(即,B、2、6、C)来作为第二变化矩阵140c的第一列。以这种方式,可通过分别在第一变化矩阵140b的第二列至第四列中执行第二混洗操作SUFF_2至第四混洗操作SUFF_4来产生第二变化矩阵140c的第二列至第四列。
如图23所示,图1的方法可根据行或列输出布置在第二变化矩阵140c中的数。图18中示出布置在第二变化矩阵140c中的数根据行被依次输出。也就是说,可通过依次输出以下行来产生最终排列FPU(即,{B,0,5,3,2,D,9,7,6,A,E,8,C,4,1,F}):第二变化矩阵140c的第一行(即,{B,0,5,3})、第二变化矩阵140c的第二行(即,{2,D,9,7})、第二变化矩阵140c的第三行(即,{6,A,E,8})以及第二变化矩阵140c的第四行(即,{C,4,1,F})。然而,本示例性实施例不限于此。例如,布置在第二变化矩阵140c中的数可根据列被依次输出。如上所述,因为图1的方法通过在与初始排列IPU对应的矩阵140a的每行和每列中执行混洗操作来产生随机排列,所以图1的方法可通过使用多根导线将多个复用器进行连接的简单结构(即,硬件)来实现。另外,当图1的方法基于二进制随机源产生随机排列时,图1的方法可有效地使用二进制随机源,所述二进制随机源被应用于矩阵140a的每行和每列。以下,将详细描述用其实现图1的方法的硬件的示例。
图24是示出通过图17中的混洗操作产生随机排列的示例的电路图。
参照图24,随机排列的操作可通过硬件(即,简单结构)来实现,使得图1的方法通过基于矩阵执行混洗操作来产生随机排列。详细地讲,所述硬件可包括第一缓冲器单元FB、第一导线单元FW、第一复用器单元FM、第一转置导线单元FT、第二缓冲器单元SB、第二导线单元SW、第二复用器单元SM、第二转置导线单元ST和第三缓冲器单元TB。
第一缓冲器单元FB可对应于4×4矩阵。第一缓冲器单元FB可接收包括16个数的初始排列,并可将初始排列的16个数布置在4行和4列中。例如,可使用用于临时存储初始排列的16个数的存储器装置、缓冲器装置、延迟装置等来实现第一缓冲器单元FB。在一个示例性实施例中,第一缓冲器单元FB可基于初始排列的顺序来布置初始排列的16个数。在另一示例性实施例中,第一缓冲器单元FB可随机布置初始排列的16个数(即,不管初始排列的顺序)。如图24所示,第一缓冲器单元FB可具有第一行ROW1至第四行ROW4,第一行ROW1至第四行ROW4均包括4个数。因此,第一行ROW1至第四行ROW4的第一个数可构成4×4矩阵的第一列,第一行ROW1至第四行ROW4的第二个数可构成4×4矩阵的第二列,第一行ROW1至第四行ROW4的第三个数可构成4×4矩阵的第三列,第一行ROW1至第四行ROW4的第四个数可构成4×4矩阵的第四列。第一导线单元FW可将第一缓冲器单元FB与第一复用器单元FM连接。这里,第一导线单元FW可根据4×4矩阵的行(即,ROW1、ROW2、ROW3、ROW4)将第一缓冲器单元FB与第一复用器单元FM连接。
第一复用器单元FM可包括16个复用器。这里,第一复用器单元FM的一组可包括4个复用器。也就是说,第一缓冲器单元FB的第一行ROW1可与第一复用器单元FM的第一组连接,第一缓冲器单元FB的第二行ROW2可与第一复用器单元FM的第二组连接,第一缓冲器单元FB的第三行ROW3可与第一复用器单元FM的第三组连接,第一缓冲器单元FB的第四行ROW4可与第一复用器单元FM的第四组连接。这里,通过混洗操作产生输入到第一复用器单元FM的每组的4个复用器的选择信号(即,二进制随机源)。第一转置导线单元FT可将第一复用器单元FM与第二缓冲器单元SB连接。这里,第一转置导线单元FT可将第一复用器单元FM的每组的4个复用器分布给第二缓冲器单元SB的第一列COL1至第四列COL4。也就是说,第一转置导线单元FT可对4×4矩阵的每列(即,COL1、COL2、COL3、COL4)准备混洗操作。因此,可通过第一缓冲器单元FB、第一导线单元FW、第一复用器单元FM和第一转置导线单元FT在4×4矩阵的每行(即,ROW1、ROW2、ROW3、ROW4)中执行混洗操作ROW_S。
也可使用用于临时存储16个数的存储器装置、缓冲器装置、延迟装置等来实现第二缓冲器单元SB。如图24所示,第二缓冲器单元SB可具有第一列COL1至第四列COL4,第一列COL1至第四列COL4均包括4个数。因此,第一列COL1至第四列COL4的第一个数可构成4×4矩阵的第一行,第一列COL1至第四列COL4的第二个数可构成4×4矩阵的第二行,第一列COL1至第四列COL4的第三个数可构成4×4矩阵的第三行,第一列COL1至第四列COL4的第四个数可构成4×4矩阵的第四行。第二导线单元SW可将第二缓冲器单元SB与第二复用器单元SM连接。这里,第二导线单元SW可根据4×4矩阵的列(即,COL1、COL2、COL3、COL4)将第二缓冲器单元SB与第二复用器单元SM连接。
第二复用器单元SM可包括16个复用器。这里,第二复用器单元SM的一组可包括4个复用器。也就是说,第二缓冲器单元SB的第一列COL1可与第二复用器单元SM的第一组连接,第二缓冲器单元SB的第二列COL2可与第二复用器单元SM的第二组连接,第二缓冲器单元SB的第三列COL3可与第二复用器单元SM的第三组连接,第二缓冲器单元SB的第四列COL4可与第二复用器单元SM的第四组连接。这里,通过混洗操作产生输入到第二复用器单元SM的每组的4个复用器的选择信号(即,二进制随机源)。第二转置导线单元ST可将第二复用器单元SM与第三缓冲器单元TB连接。这里,第二转置导线单元ST可将第二复用器单元SM的每组的4个复用器分布给第三缓冲器单元TB的第一行ROW1至第四行ROW4。因此,可通过第二缓冲器单元SB、第二导线单元SW、第二复用器单元SM和第二转置导线单元ST在4×4矩阵的每列(即,COL1、COL2、COL3、COL4)中执行混洗操作COL_S。
随后,所述硬件可根据行输出布置在第三缓冲器单元TB中的数。例如,所述硬件可通过依次输出第三缓冲器单元TB的第一行ROW1至第四行ROW4来输出最终排列(即,随机排列)。可选择地,所述硬件可通过随机输出第三缓冲器单元TB的第一行ROW1至第四行ROW4来输出最终排列。另外,所述硬件可根据列输出布置在第三缓冲器单元TB中的数。因此,图1的方法在通过硬件实现时可由具有复用器和导线的简单结构来实现。尽管以上描述了通过在4×4矩阵的每行中执行混洗操作,然后在4×4矩阵的每列中执行混洗操作来产生随机排列,但是本示例性实施例不限于此。因此,应理解,可通过在4×4矩阵的每列中执行混洗操作,然后在4×4矩阵的每行中执行混洗操作来产生随机排列。
图25是示出当图1的方法通过硬件实现时的硬件复杂度的曲线图。
参照图25,示出了根据随机排列的大小N的硬件复杂度O(N)。这里,第一曲线A指示与常规的随机排列产生方法(比如,Fisher和Yates方法等)相关的整体硬件复杂度O(N^2)。另一方面,第二曲线B指示与图1的方法相关的整体硬件复杂度O(N^1.5)。
如图10所示,当图1的方法通过执行旋转操作产生随机排列时,图1的方法可被实现为包括32个四输入一输出复用器(以下,4-1复用器)和多根导线的硬件。例如,因为用于随机布置16个数(即,N=16)的4-1复用器的数量为32(即,2×N=32),所以基于4-1复用器的数量的硬件复杂度可以为O(2×N)。另外,因为每个4-1复用器具有四个输入和一个输出(即,N^0.5=4),所以基于四输入一输出的硬件复杂度可以为O(N^0.5)。因此,整体硬件复杂度可以为O(2×N^1.5)(即,O(2×N)×O(N^0.5)=O(2×N^1.5))。然而,因为系数是可忽略的,所以整体硬件复杂度可以为O(N^1.5)。类似地,如图24所示,当图1的方法通过执行混洗操作产生随机排列时,图1的方法可被实现为包括32个4-1复用器和多根导线的硬件。这里,图10的硬件产生施加于4-1复用器的选择信号的方式不同于图24的硬件产生施加于4-1复用器的选择信号的方式。详细地讲,图10的硬件可将二进制随机源作为选择信号施加于4-1复用器。另一方面,图24的硬件可使用子矩阵对二进制随机源进行处理,然后可将该二进制随机源作为选择信号施加于4-1复用器。这里,用于在图24的硬件中对2比特的二进制随机源进行处理的硬件复杂度为O(N^1.25)。因此,当硬件复杂度O(N^1.25)与硬件复杂度O(N^1.5)相加时,因为硬件复杂度O(N^1.25)与硬件复杂度O(N^1.5)相比是可忽略的,所以整体硬件复杂度可以为O(N^1.5)。如上所述,图1的方法在通过硬件实现时可被实现为具有复用器和导线的简单结构。另外,图1的方法可有效地使用二进制随机源。
图26是示出根据示例性实施例的产生随机排列的方法的流程图。
参照图26,图26的方法可通过将N个数(其中,N为等于或大于2的整数)布置在至少一行和至少一列中来产生矩阵(步骤S410),可通过在该矩阵的每行中基于至少一个随机数执行随机布置操作来产生第一变化矩阵(步骤S420),并可产生与第一变化矩阵的转置矩阵对应的第二变化矩阵(步骤S430)。另外,图26的方法可通过在第二变化矩阵的每行中基于至少一个随机数执行随机布置操作来产生第三变化矩阵(步骤S440),可产生与第三变化矩阵的转置矩阵对应的第四变化矩阵(步骤S450),并可根据行或列输出布置在第四变化矩阵中的N个数(步骤S460)。在示例性实施例中,方阵或长方阵可被选择作为所述矩阵。
图26的方法可通过将N个数布置在至少一行和至少一列中来产生矩阵(例如,方阵或长方阵)(步骤410)。这里,N个数可构成初始排列。当将N个数布置在矩阵中时,可基于初始排列的顺序将N个数布置在矩阵中,或者可不管初始排列的顺序如何而将N个数布置在矩阵中。在示例性实施例中,N个数可分别具有二进制形式。例如,假设初始排列为{00,01,10,11},则N个数可包括“00”、“01”、“10”和“11”。在这种情况下,初始排列{00,01,10,11}可通过二进制随机源{0,1}被随机化。
在通过将N个数布置在至少一行和至少一列中产生了矩阵(步骤S410)之后,图1的方法可通过在方阵或长方阵的每行中执行随机布置操作来产生第一变化矩阵(步骤S420)。在一个示例性实施例中,随机布置操作可对应于旋转操作或混洗操作。然后,图26的方法可产生与第一变化矩阵的转置矩阵对应的第二变化矩阵(步骤S430)。因此,图26的方法可以不在第一变化矩阵的每列中执行随机布置操作。作为替代,图26的方法可在与第一变化矩阵的转置矩阵对应的第二变化矩阵的每行中执行随机布置操作。在产生了第二变化矩阵(步骤S430)之后,图26的方法可通过在第二变化矩阵的每行中执行随机布置操作来产生第三变化矩阵(步骤S440)。这里,随机布置操作可对应于旋转操作或混洗操作。
随后,图26的方法可产生与第三变化矩阵的转置矩阵对应的第四变化矩阵(步骤S450),然后可根据行或列输出布置在第四变化矩阵中的N个数(步骤S460)。如上所述,图26的方法可通过在与初始排列对应的矩阵的每行和每列中执行随机布置操作(即,旋转操作或混洗操作)来产生随机排列。因此,图26的方法可被实现为使用多根导线将多个复用器进行连接的简单结构(即,硬件)。另外,当图26的方法基于二进制随机源产生随机排列时,图26的方法可有效地使用二进制随机源,所述二进制随机源被施加于矩阵的每行和每列。此外,因为图26的方法不在矩阵的每行和每列中执行随机布置操作(即,图26的方法通过使用转置矩阵仅在矩阵的每行中执行随机布置操作),所以图26的方法与图1的方法相比可容易地通过硬件实现。尽管以上描述了通过在矩阵和第二变化矩阵的每行中执行随机布置操作来产生随机排列,但是本示例性实施例不限于此。因此,应理解,可通过在矩阵和第二变化矩阵的每列中执行随机布置操作来产生随机排列。
图27至图32是示出通过图26的方法产生随机排列的示例的示图。
参照图27,图26的方法可通过对初始排列IPU(例如,{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F})执行随机布置操作来输出最终排列FPU(例如,{C,A,4,2,3,D,B,5,6,0,E,8,9,7,1,F})。
参照图28和图29,图26的方法可通过将初始排列IPU的数(即,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)布置在4行和4列中来产生矩阵220a。尽管在图28中示出,通过基于初始排列IPU的顺序来布置初始排列IPU的数,矩阵220a包括第一行至第四行(即,{0,1,2,3}、{4,5,6,7}、{8,9,A,B}、{C,D,E,F}),但是用于布置初始排列IPU的数的顺序不限于此。也就是说,用于布置初始排列IPU的数的顺序可以以各种方式被确定,而不管初始排列IPU的顺序如何。然后,图26的方法可通过在矩阵220a的每行中执行随机布置操作(即,RA_1、RA_2、RA_3、RA_4)来产生第一变化矩阵220b。这里,随机布置操作(即,RA_1、RA_2、RA_3、RA_4)可以是旋转操作或混洗操作。也就是说,可在矩阵220a的第一行(即,{0,1,2,3})中执行第一随机布置操作RA_1,可在矩阵220a的第二行(即,{4,5,6,7})中执行第二随机布置操作RA_2,可在矩阵220a的第三行(即,{8,9,A,B})中执行第三随机布置操作RA_3,可在矩阵220a的第四行(即,{C,D,E,F})中执行第四随机布置操作RA_4。
在矩阵220a的每行中执行随机布置操作(即,RA_1、RA_2、RA_3、RA_4)之后,第一变化矩阵220b可包括第一行至第四行(即,{3,0,1,2}、{6,7,4,5}、{9,A,B,8}、{C,D,E,F})。图29示出当旋转操作作为随机布置操作在矩阵220a的每行中被执行时的第一变化矩阵220b的示例。然后,图26的方法可产生与第一变化矩阵220b的转置矩阵对应的第二变化矩阵220c。因此,第二变化矩阵220c可包括第一行至第四行(即,{3,6,9,C}、{0,7,A,D}、{1,4,B,E}、{2,5,8,F})。随后,图26的方法可通过在第二变化矩阵220c的每行中执行随机布置操作(即,RA_1、RA_2、RA_3、RA_4)来产生第三变化矩阵220d。这里,随机布置操作(即,RA_1、RA_2、RA_3、RA_4)可以是旋转操作或混洗操作。也就是说,可在第二变化矩阵220c的第一行(即,{3,6,9,C})中执行第一随机布置操作RA_1,可在第二变化矩阵220c的第二行(即,{0,7,A,D})中执行第二随机布置操作RA_2,可在第二变化矩阵220c的第三行(即,{1,4,B,E})中执行第三随机布置操作RA_3,可在第二变化矩阵220c的第四行(即,{2,5,8,F})中执行第四随机布置操作RA_4。
在第二变化矩阵220c的每行中执行随机布置操作(即,RA_1、RA_2、RA_3、RA_4)之后,第三变化矩阵220d可包括第一行至第四行(即,{C,3,6,9}、{A,D,0,7}、{4,B,E,1}、{2,5,8,F})。图31示出当旋转操作作为随机布置操作在第二变化矩阵220c的每行中被执行时的第三变化矩阵220d的示例。如图32所示,图26的方法可产生与第三变化矩阵220d的转置矩阵对应的第四变化矩阵220e。因此,第四变化矩阵220e可包括第一行至第四行(即,{C,A,4,2}、{3,D,B,5}、{6,0,E,8}、{9,7,1,F})。随后,图26的方法可根据行或列输出布置在第四变化矩阵220e中的数。图27中示出布置在第四变化矩阵220e中的数根据行被依次输出。也就是说,可通过依次输出以下行来产生最终排列FPU(即,{C,A,4,2,3,D,B,5,6,0,E,8,9,7,1,F}):第四变化矩阵220e的第一行(即,{C,A,4,2})、第四变化矩阵220e的第二行(即,{3,D,B,5})、第四变化矩阵220e的第三行(即,{6,0,E,8})以及第四变化矩阵220e的第四行(即,{9,7,1,F})。然而,本示例性实施例不限于此。例如,布置在第四变化矩阵220e中的数可根据列被依次输出。如上所述,因为图26的方法通过在与初始排列IPU对应的矩阵220a的每行和每列中执行随机布置操作来产生随机排列,所以图26的方法可被实现为使用多根导线将多个复用器进行连接的简单结构(即,硬件)。另外,当图26的方法基于二进制随机源产生随机排列时,图26的方法可有效地使用二进制随机源,所述二进制随机源被施加于矩阵220a的每行和每列。
图33是示出根据示例性实施例的随机排列产生装置的框图。
参照图33,随机排列产生装置300可包括排列输入单元320、第一矩阵变化单元340、第二矩阵变化单元360和排列输出单元380。
排列输入单元320可接收具有N个数的初始排列IPU(其中,N为等于或大于2的整数),并可将初始排列IPU的N个数布置在预定矩阵MAT中。在一个示例性实施例中,预定矩阵MAT可以是方阵。在另一示例性实施例中,预定矩阵MAT可以是长方阵。这里,可基于初始排列IPU的顺序将初始排列IPU的N个数布置在预定矩阵MAT中。可选择地,可不管初始排列IPU的顺序如何而将初始排列IPU的N个数布置在预定矩阵MAT中。在示例性实施例中,初始排列IPU的N个数可分别具有二进制形式。例如,假设初始排列IPU为{00,01,10,11},则N个数可包括“00”、“01”、“10”和“11”。在这种情况下,初始排列IPU可通过二进制随机源{0,1}被随机化。
第一矩阵变化单元340可通过基于至少一个随机数在预定矩阵MAT的每行中执行随机布置操作来产生第一变化矩阵FMAT。在一个示例性实施例中,随机布置操作可以是旋转操作。也就是说,第一矩阵变化单元340可通过将预定矩阵MAT的每行的数在行方向上旋转行随机数来产生第一变化矩阵FMAT。在这种情况下,可针对预定矩阵MAT的每行独立选择行随机数。另外,行随机数的范围可以在0与之间,其中,j是布置在预定矩阵MAT的每行中的数的数量。在另一示例性实施例中,随机布置操作可以是混洗操作。也就是说,第一矩阵变化单元340可通过将预定矩阵MAT的每行的数布置在至少一行和至少一列中来产生行子矩阵,可通过在每个行子矩阵的每行和每列中执行旋转操作来产生变化行子矩阵,并可将布置在每个变化行子矩阵中的数作为第一变化矩阵FMAT的每行进行输出。
第二矩阵变化单元360可通过基于至少一个随机数在第一变化矩阵FMAT的每列中执行随机布置操作来产生第二变化矩阵SMAT。在一个示例性实施例中,随机布置操作可以是旋转操作。也就是说,第二矩阵变化单元360可通过将第一变化矩阵FMAT的每列的数在列方向上旋转列随机数来产生第二变化矩阵SMAT。在这种情况下,可针对第一变化矩阵FMAT的每列独立选择列随机数。另外,列随机数的范围可以在0与之间,其中,k是布置在第一变化矩阵FMAT的每列中的数的数量。在另一示例性实施例中,随机布置操作可以是混洗操作。也就是说,第二矩阵变化单元360可通过将第一变化矩阵FMAT的每列的数布置在至少一行和至少一列中来产生列子矩阵,可通过在每个列子矩阵的每行和每列中执行旋转操作来产生变化列子矩阵,并可将布置在每个变化列子矩阵中的数作为第二变化矩阵SMAT的每列进行输出。然后,排列输出单元380可通过根据行或列输出布置在第二变化矩阵SMAT中的N个数来产生最终排列FPU。
尽管以上描述了第一矩阵变化单元340通过在预定矩阵MAT的每行中执行随机布置操作来产生第一变化矩阵FMAT,然后第二矩阵变化单元360通过在第一变化矩阵FMAT的每列中执行随机布置操作来产生第二变化矩阵SMAT,但是本示例性实施例不限于此。因此,第一矩阵变化单元340可通过在预定矩阵MAT的每列中执行随机布置操作来产生第一变化矩阵FMAT,然后第二矩阵变化单元360可通过在第一变化矩阵FMAT的每行中执行随机布置操作来产生第二变化矩阵SMAT。
图34是示出根据示例性实施例的随机排列产生装置的框图。
参照图34,随机排列产生装置400可包括排列输入单元410、第一矩阵变化单元420、第一矩阵转置单元430、第二矩阵变化单元440、第二矩阵转置单元450和排列输出单元460。
排列输入单元410可接收具有N个数的初始排列IPU(其中,N为等于或大于2的整数),并可将初始排列IPU的N个数布置在预定矩阵MAT中。在一个示例性实施例中,预定矩阵MAT可以是方阵。在另一示例性实施例中,预定矩阵MAT可以是长方阵。这里,可基于初始排列IPU的顺序将初始排列IPU的N个数布置在预定矩阵MAT中。可选择地,可不管初始排列IPU的顺序如何而将初始排列IPU的N个数布置在预定矩阵MAT中。在示例性实施例中,初始排列IPU的N个数可分别具有二进制形式。例如,假设初始排列IPU为{00,01,10,11},则N个数可包括“00”、“01”、“10”和“11”。在这种情况下,初始排列IPU可通过二进制随机源{0,1}被随机化。
第一矩阵变化单元420可通过基于至少一个随机数在预定矩阵MAT的每行中执行随机布置操作来产生第一变化矩阵FMAT。在一个示例性实施例中,随机布置操作可以是旋转操作。也就是说,第一矩阵变化单元420可通过将预定矩阵MAT的每行的数在行方向上旋转第一行随机数来产生第一变化矩阵FMAT。在这种情况下,可针对预定矩阵MAT的每行独立选择第一行随机数。另外,第一行随机数的范围可以在0与之间,其中,j是布置在预定矩阵MAT的每行中的数的数量。在另一示例性实施例中,随机布置操作可以是混洗操作。也就是说,第一矩阵变化单元420可通过将预定矩阵MAT的每行的数布置在至少一行和至少一列中来产生第一子矩阵,可通过在每个第一子矩阵的每行和每列中执行旋转操作来产生第一变化子矩阵,并可将布置在每个第一变化子矩阵中的数作为第一变化矩阵FMAT的每行进行输出。
第一矩阵转置单元430可产生与第一变化矩阵FMAT的转置矩阵对应的第二变化矩阵SMAT。因此,可以不在第一变化矩阵FMAT的每列中执行随机布置操作。作为替代,可在与第一变化矩阵FMAT的转置矩阵对应的第二变化矩阵SMAT的每行中执行随机布置操作。第二矩阵变化单元440可通过基于至少一个随机数在第二变化矩阵SMAT的每行中执行随机布置操作来产生第三变化矩阵TMAT。在一个示例性实施例中,随机布置操作可以是旋转操作。也就是说,第二矩阵变化单元440可通过将第二变化矩阵SMAT的每行的数在行方向上旋转第二行随机数来产生第三变化矩阵TMAT。在这种情况下,可针对第二变化矩阵SMAT的每行独立选择第二行随机数。另外,第二行随机数的范围可以在0与之间,其中,k是布置在第二变化矩阵SMAT的每行中的数的数量。在另一示例性实施例中,随机布置操作可以是混洗操作。也就是说,第二矩阵变化单元440可通过将第二变化矩阵SMAT的每行的数布置在至少一行和至少一列中来产生第二子矩阵,可通过在每个第二子矩阵的每行和每列中执行旋转操作来产生第二变化子矩阵,并可将布置在每个第二变化子矩阵中的数作为第三变化矩阵TMAT的每行进行输出。
随后,第二矩阵转置单元450可产生与第三变化矩阵TMAT的转置矩阵对应的第四变化矩阵FOMAT。排列输出单元460可通过根据行或列输出布置在第四变化矩阵FOMAT中的数来产生最终排列FPU。尽管以上描述了第一矩阵变化单元420通过在预定矩阵MAT的每行中执行随机布置操作来产生第一变化矩阵FMAT,然后第二矩阵变化单元440通过在第二变化矩阵SMAT的每行中执行随机布置操作来产生第三变化矩阵TMAT,但是本示例性实施例不限于此。因此,第一矩阵变化单元420可通过在预定矩阵MAT的每列中执行随机布置操作来产生第一变化矩阵FMAT,然后第二矩阵变化单元440可通过在第二变化矩阵SMAT的每列中执行随机布置操作来产生第三变化矩阵TMAT。
图35是示出根据示例性实施例的加密/解密装置的框图。
参照图35,加密/解密装置500可包括密钥调度单元510、块回次单元520、随机排列产生单元530和高级加密标准(AES)控制器单元540。这里,随机排列产生单元530可对应于图33的随机排列产生装置300或图34的随机排列产生装置400。
密钥调度单元510可基于输入密钥来产生多个回次密钥,以执行每个回次。根据一些示例性实施例,密钥调度单元510可产生多个128比特的回次密钥、多个192比特的回次密钥或多个256比特的回次密钥。例如,当应用于加密/解密装置500的AES算法使用128比特的回次密钥时,128比特的回次密钥可包括用于密钥调度单元510的4个32比特的部分回次密钥。在一个示例性实施例中,密钥调度单元510可包括用于临时存储多个回次密钥的存储单元。块回次单元520通过基于回次密钥执行多个回次,可对明文进行加密或者可对密文进行解密。例如,块回次单元520可接收明文作为输入数据DATA_IN并对明文进行加密,然后可输出密文作为输出数据DATA_OUT。另一方面,块回次单元520可接收密文作为输入数据DATA_IN并对密文进行解密,然后可输出明文作为输出数据DATA_OUT。随机排列产生单元530可通过基于预定矩阵对初始排列执行随机布置操作来产生随机排列(即,最终排列)。因此,随机排列产生单元530可在时间上和/或在空间上将在每个回次中由块回次单元520执行的数据置换盒的处理和/或由密钥调度单元执行的密钥置换盒的处理进行随机化。这里,随机布置操作可以是旋转操作或混洗操作。
通常,可通过执行字节替换运算、移行运算、混合列运算和添加回次密钥运算来执行每个回次。在每个回次中,可在密钥调度单元510中执行密钥置换盒的处理,可在块回次单元520中执行数据置换盒的处理。这里,随机排列产生单元530可在时间上和/或在空间上将在密钥调度单元510中执行的密钥置换盒的处理和/或在块回次单元520中执行的数据置换盒的处理进行随机化。结果,加密/解密装置500可实现防范外部攻击(比如,侧信道分析(SCA))的高数据安全性。详细地讲,随机排列产生单元530可接收包括具有二进制形式的数的初始排列,并可通过对初始排列执行随机布置操作来输出包括具有二进制形式的数的随机排列(即,最终排列)。为此操作,随机排列产生单元530可包括排列输入单元、第一矩阵变化单元、第二矩阵变化单元和排列输出单元。可选择地,随机排列产生单元530可包括排列输入单元、第一矩阵变化单元、第一矩阵转置单元、第二矩阵变化单元、第二矩阵转置单元和排列输出单元。因为以上描述了随机排列产生单元530,所以以下将省略重复描述。AES控制器单元540可基于AES方法(即,AES算法)来控制密钥调度单元510、块回次单元520和随机排列产生单元530。
图36是示出通过图35的加密/解密装置执行加密操作的示例的框图。图37是示出通过图35的加密/解密装置执行解密操作的示例的框图。
参照图36和图37,当块回次单元520对明文加密时,可通过按以下命名顺序执行字节替换运算610a、移行运算620a、混合列运算630a和添加回次密钥运算640a来执行(即,完成)每个回次600a。因此,明文数据PTT可通过回次600a被加密为加密数据CTT。这里,可在添加回次密钥运算640a中对从密钥调度单元510输入的回次密钥KIN执行异或(XOR)运算。图35的加密/解密装置500可通过重复执行回次600a预定次数来完成加密操作。另一方面,当块回次单元520对加密数据进行解密时,可通过按以下命名顺序执行添加回次密钥运算640b、混合列运算630b、移行运算620b和字节替换运算610b来执行(即,完成)每个回次600b。因此,加密数据CTT可通过回次600b被解密为明文数据PTT。这里,可在添加回次密钥运算640b中对从密钥调度单元510输入的回次密钥KIN执行XOR运算。类似地,图35的加密/解密装置500可通过重复执行回次600b预定次数来完成解密操作。如上所述,对明文进行加密的回次600a的内部运算的顺序可以与对密文进行解密的回次600b的内部运算的顺序相反。然而,本示例性实施例不限于此。例如,对明文进行加密的回次600a可根据所需条件而包括附加的内部运算,对密文进行解密的回次600b也可根据所需条件而包括附加的内部运算。此外,回次600a的内部运算的顺序和回次600b的内部运算的顺序可根据所需条件以各种方式改变。
图38是示出由图35的加密/解密装置采用的AES核的示例的框图。
参照图38,AES核700可包括密钥调度单元510的组件(即,密钥调度器730和密钥置换盒740)、块回次单元520的组件(即,数据控制器710和数据置换盒720)以及随机排列产生单元530的组件(即,随机排列产生器750和760)。通常,16个数据置换盒720和/或4个密钥置换盒740需要在每个回次中被处理。另外,该处理需要在预定数量的循环(例如,1个循环至16个循环)内完成。如图38所示,随机排列产生器750可被置于数据控制器710与数据置换盒720之间,随机排列产生器760可被置于密钥调度器730与密钥置换盒740之间。随机排列产生器750可在时间上和/或在空间上将数据置换盒720的处理随机化。随机排列产生器760可在时间上和/或在空间上将密钥置换盒740的处理随机化。因此,密钥调度器730可将回次密钥提供给数据控制器710,其中,回次密钥通过对密钥置换盒740进行处理被产生。另外,数据控制器710可对回次密钥和数据执行XOR运算,其中,所述数据通过对数据置换盒720进行处理被产生。
图39是示出在图38的AES核中执行数据置换盒的处理的示例的示图。
参照图39,示出了图38的AES核700同时对16个数据置换盒720进行处理。也就是说,图38的AES核700可包括16个数据置换盒720。详细地讲,当数据控制器710输出128比特的块数据时,16个复用器725可分别接收128比特的块数据。这里,随机排列产生器750可接收初始排列IPU和二进制随机源BRS,并可通过使用二进制随机源BRS基于预定矩阵对初始排列IPU执行随机布置操作(即,旋转操作或混洗操作)来将最终排列FPU(即,随机排列)输出到所述16个复用器725。当最终排列FPU被输入到所述16个复用器725时,所述16个复用器725可分别1个字节地(即,8个比特地)将128比特的块数据输出到所述16个数据置换盒720。这里,所述16个数据置换盒720可同时被图38的AES核700处理。然而,因为所述16个数据置换盒720的处理通过最终排列FPU在空间上被随机化,所以可实现防范外部攻击(比如,侧信道分析(SCA))的高数据安全性。随后,在空间上随机化的128比特的块数据可被逆随机排列产生器790和16个复用器795在空间上逆随机化(即,恢复),然后可被输出到数据控制器710。
图40是示出在图38的AES核中执行数据置换盒的处理的另一示例的示图。
参照图40,示出了图38的AES核700同时对4个数据置换盒720进行处理。也就是说,图38的AES核700可包括4个数据置换盒720。详细地讲,当数据控制器710输出128比特的块数据时,一个复用器723可接收128比特的块数据。这里,第一随机排列产生器750_1可接收第一初始排列IPU_1和第一二进制随机源BRS_1,并可通过使用第一二进制随机源BRS_1基于预定矩阵对第一初始排列IPU_1执行随机布置操作(即,旋转操作或混洗操作)来将第一最终排列FPU_1(即,第一随机排列)输出到复用器723。因为第一最终排列FPU_1通过缓冲器721被依次输入到复用器723,所以复用器723可基于第一最终排列FPU_1来4个字节地(即,32个比特地)将128比特的块数据输出到4个复用器725。也就是说,所述4个数据置换盒720的处理可通过第一最终排列FPU_1在时间上被随机化。第二随机排列产生器750_2可接收第二初始排列IPU_2和第二二进制随机源BRS_2,并可通过使用第二二进制随机源BRS_2基于预定矩阵对第二初始排列IPU_2执行随机布置操作(即,旋转操作或混洗操作)来将第二最终排列FPU_2(即,第二随机排列)输出到4个复用器725。因此,当第二随机排列FPU_2被输入到所述4个复用器725时,所述4个复用器725可分别1个字节地(即,8个比特地)将32比特的块数据输出到4个数据置换盒720。这里,所述4个数据置换盒720可同时被图38的AES核700处理。然而,因为所述4个数据置换盒720的处理通过第二最终排列FPU_2在空间上被随机化,所以可实现防范外部攻击(比如,侧信道分析(SCA))的高数据安全性。随后,在空间上随机化的32比特的块数据可被逆随机排列产生器790和4个复用器795在空间上逆随机化(即,恢复),然后可被输出到数据控制器710。这里,因为缓冲器721的输出也被输出到数据控制器710,所以可在数据控制器710中在时间上执行逆随机化(即,恢复)。
图41是示出在图38的AES核中执行数据置换盒的处理的又一示例的示图。
参照图41,示出了图38的AES核700对一个数据置换盒720进行处理。也就是说,图38的AES核700可包括一个数据置换盒720。详细地讲,当数据控制器710输出128比特的块数据时,一个复用器723可接收128比特的块数据。这里,随机排列产生器750可接收初始排列IPU和二进制随机源BRS,并可通过使用二进制随机源BRS基于预定矩阵对初始排列IPU执行随机布置操作(即,旋转操作或混洗操作)来将最终排列FPU(即,随机排列)输出到复用器723。因为最终排列FPU通过缓冲器721被依次输入到复用器723,所以复用器723可基于最终排列FPU来1个字节地(即,8个比特地)将128比特的块数据依次输出到数据置换盒720。如上所述,尽管一个数据置换盒720被图38的AES核700处理,但是因为数据置换盒720的处理通过最终排列FPU在时间上被随机化,所以可实现防范外部攻击(比如,侧信道分析(SCA))的高数据安全性。另外,因为缓冲器721的输出被输出到数据控制器710,所以可在数据控制器710中在时间上执行逆随机化(即,恢复)。
图42是示出在图38的AES核中执行密钥置换盒的处理的示例的示图。
参照图42,示出了图38的AES核700同时对4个密钥置换盒740进行处理。也就是说,图38的AES核700可包括4个密钥置换盒740。详细地讲,当密钥调度器730输出32比特的回次密钥时,4个复用器745可分别接收32比特的回次密钥。这里,随机排列产生器760可接收初始排列IPU和二进制随机源BRS,并可通过使用二进制随机源BRS基于预定矩阵对初始排列IPU执行随机布置操作(即,旋转操作或混洗操作)来将最终排列FPU(即,随机排列)输出到所述4个复用器745。当最终排列FPU被输入到所述4个复用器745时,所述4个复用器745可分别1个字节地(即,8个比特地)将32比特的回次密钥输出到4个密钥置换盒740。这里,所述4个密钥置换盒740可同时被图38的AES核700处理。然而,因为所述4个密钥置换盒740的处理通过最终排列FPU在空间上被随机化,所以可实现防范外部攻击(比如,侧信道分析(SCA))的高数据安全性。随后,在空间上随机化的32比特的回次密钥可被逆随机排列产生器790和4个复用器795在空间上逆随机化(即,恢复),然后可被输出到密钥调度器730。
图43是示出由图35的加密/解密装置采用的AES核的另一示例的框图。图44是示出由图35的加密/解密装置采用的AES核的又一示例的框图。图45是示出由图35的加密/解密装置采用的AES核的又一示例的框图。
参照图43,AES核800可包括密钥调度单元510的组件(即,密钥调度器830)、块回次单元520的组件(即,数据控制器810)和随机排列产生单元530的组件(即,随机排列产生器850)。这里,AES核800可包括与数据置换盒和密钥置换盒对应的数据和密钥置换盒820,并可在时间上和/或在空间上将数据置换盒的处理和密钥置换盒的处理随机化。参照图44,AES核900可包括密钥调度单元510的组件(即,密钥调度器930和密钥置换盒940)、块回次单元520的组件(即,数据控制器910和数据置换盒920)和随机排列产生单元530的组件(即,随机排列产生器950)。这里,AES核900可在时间上和/或在空间上将数据置换盒920的处理随机化。参照图45,AES核1000可包括密钥调度单元510的组件(即,密钥调度器1030和密钥置换盒1040)、块回次单元520的组件(即,数据控制器1010和数据置换盒1020)和随机排列产生单元530的组件(即,随机排列产生器1050)。这里,AES核1000可在时间上和/或在空间上将密钥置换盒1040的处理随机化。如上所述,应用于图35的加密/解密装置500的AES核800、900和1000可分别包括随机排列产生器850、950和1010。另外,随机排列产生器850、950和1010可将数据置换盒的处理和/或密钥置换盒的处理随机化。
图46是示出具有图35的加密/解密装置的计算系统的示例的框图。
参照图46,计算系统1200可包括处理器1210、存储器控制器集线器1220、存储器装置1230、加密/解密装置1240、输入/输出(I/O)控制器集线器1250和存储装置1260。这里,存储器控制器集线器1220可包括存储器控制器1222,I/O控制器集线器1250可包括I/O控制器1252。在一个示例性实施例中,计算系统1200可被实现为图48的智能电话1500。在另一示例性实施例中,计算系统1200可被实现为图49的智能卡1550。然而,计算系统1200不限于此。例如,计算系统1200可包括移动装置(比如,蜂窝电话)、电装置(比如,电视)等。
处理器1210可执行各种计算功能。处理器1210可以是微处理器、中央处理单元(CPU)等。处理器1210可通过系统总线(比如,地址总线、控制总线、数据总线等)连接到存储器控制器集线器1220。此外,处理器1210可连接到扩展总线(比如,外围组件互连(PCI)总线)。存储器控制器集线器1220可使用存储器控制器1222来控制处理器1210与存储器装置1230之间的通信。存储器装置1230可存储用于计算系统1200的操作的数据。例如,存储器装置1230可包括至少一种非易失性存储器装置(比如,可擦除可编程只读存储器(EPROM)装置、电可擦除可编程只读存储器(EEPROM)装置、闪存装置、相变随机存取存储器(PRAM)装置、电阻随机存取存储器(RRAM)装置、纳米浮栅存储器(NFGM)装置、聚合物随机存取存储器(PoRAM)装置、磁性随机存取存储器(MRAM)装置、铁电随机存取存储器(FRAM)装置等)和/或至少一种易失性存储器装置(比如,动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、移动动态随机存取存储器(移动DRAM)装置等)。
加密/解密装置1240可对用于计算系统1200的操作的数据进行加密或解密。为此操作,加密/解密装置1240可包括密钥调度单元、块回次单元、随机排列产生单元和AES控制器单元。因为以上描述了加密/解密装置1240,所以以下将省略重复描述。在一个示例性实施例中,加密/解密装置1240可通过硬件实现。在另一示例性实施例中,加密/解密装置1240可通过软件实现。在这种情况下,处理器1210可执行软件的命令。I/O控制器集线器1250可使用I/O控制器1252来控制I/O装置。例如,如图46所示,I/O控制器集线器1250可控制存储器控制器集线器1220与存储装置1260之间的通信。这里,I/O控制器集线器1250可使用高速芯片间连接(比如,直接媒体接口(DMI))与存储器控制器集线器1220进行连接。存储装置1260可以是固态驱动器(SSD)装置、硬盘驱动器(HDD)装置、独立磁盘冗余阵列(RAID)等。这里,存储装置1260可使用串行存储协议(比如,串行连接SCSI(SAS)、串行高级技术附件(SATA)等)与I/O控制器集线器1250通信。
当计算系统1200被制造为移动装置时,计算系统1200可通过各种封装来实现,比如,层叠式封装(PoP)、球栅阵列(BGA)、芯片级封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、裸片格栅封装(diein waffle pack)、裸片级晶片形式(die inwafer form)、板上芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料方形扁平包装(公制)(MQFP)、薄型方形扁平封装(TQFP)、小外形集成电路(SOIC)、收缩型小外形封装(SSOP)、薄型小外形封装(TSOP)、薄型方形扁平封装(TQFP)、系统级封装(SIP)、多芯片封装(MCP)、晶片级制造封装(WFP)、晶片级加工的堆叠式封装(WSP)。
图47是示出具有图35的加密/解密装置的计算系统的另一示例的框图。
参照图47,计算系统1400可包括处理器1410、存储器控制器集线器1420、存储器装置1430、I/O控制器集线器1450和存储装置1460。这里,处理器1410可包括加密/解密装置1412,存储器控制器集线器1420可包括存储器控制器1422,I/O控制器集线器1450可包括I/O控制器1452。在一个示例性实施例中,计算系统1400可被实现为图48的智能电话1500。在另一示例性实施例中,计算系统1400可被实现为图49的智能卡1550。然而,计算系统1400不限于此。例如,计算系统1400可包括移动装置(比如,蜂窝电话)、电装置(比如,电视)等。加密/解密装置1412可对用于计算系统1400的操作的数据进行加密或解密。为此操作,加密/解密装置1412可包括密钥调度单元、块回次单元、随机排列产生单元和AES控制器单元。因为以上描述了加密/解密装置1412,所以以下将省略重复描述。在一个示例性实施例中,加密/解密装置1412可通过硬件实现。在另一示例性实施例中,加密/解密装置1412可通过软件实现。在这种情况下,处理器1410可执行软件的命令。
本示例性实施例可应用于使用随机排列的装置(例如,加密/解密装置等)和具有该装置的计算系统(例如,电装置、移动装置等)。例如,示例性实施例构思可应用于计算机、膝上型电脑、蜂窝电话、智能电话、智能垫(smart-pad)、安全系统等。
前述内容是说明性的示例性实施例,并且不被解读为限制示例性实施例。尽管已描述了一些示例性实施例,但是本领域的技术人员将容易意识到,在实质上不脱离本公开内容的新颖教导和优点的情况下,可在示例性实施例中进行许多修改。因此,所有这样的修改都意图包括在如权利要求中限定的本公开构思的范围内。因此,要理解,前述内容是说明性的各种示例性实施例,并且不被解读为限于所公开的特定示例性实施例,并且对所公开的示例实施例以及其他示例实施例的修改意图包括在权利要求的范围内。
Claims (11)
1.一种用于加密和解密装置的产生随机排列的方法,所述方法包括:
将N个数的序列布置在矩阵中,其中,N为等于或大于2的整数;
通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于行随机数执行第一随机布置操作;
通过对第一变化矩阵的每列中的数执行第二随机布置操作来产生第二变化矩阵,其中,基于列随机数执行第二随机布置操作;以及
根据第二变化矩阵的行或列将布置在第二变化矩阵中的N个数作为所述N个数的序列的重排序列进行输出,以用于加密和解密装置的加密和/或解密,
其中,产生第一变化矩阵的步骤包括:
通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个行子矩阵;
通过对所述多个行子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化行子矩阵;
将布置在所述多个变化行子矩阵中的每个中的数作为第一变化矩阵的每行进行输出,
其中,所述N个数为加密和解密装置的秘钥、明文、对明文进行加密的过程中产生的中间数据、密文和对密文进行解密的过程中产生的中间数据中的至少一项,
其中,行随机数和列随机数分别为加密和解密装置接收的作为二进制随机源的选择信号。
2.根据权利要求1所述的方法,其中,所述N个数具有二进制形式。
3.根据权利要求1所述的方法,其中,所述矩阵是方阵和长方阵之一。
4.根据权利要求3所述的方法,其中,N为大于或等于4的整数,
其中,产生第二变化矩阵的步骤包括:
通过将第一变化矩阵的每列的数布置在至少一行和至少一列中来产生多个列子矩阵;
通过对所述多个列子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化列子矩阵;
将布置在所述多个变化列子矩阵中的每个中的数作为第二变化矩阵的每列进行输出。
5.一种用于加密和解密装置的产生随机排列的方法,所述方法包括:
将N个数的序列布置在矩阵中,其中,N为等于或大于2的整数;
通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于第一行随机数执行第一随机布置操作;
产生与第一变化矩阵的转置矩阵对应的第二变化矩阵;
通过对第二变化矩阵的每行中的数执行第二随机布置操作来产生第三变化矩阵,其中,基于第二行随机数执行第二随机布置操作;
产生与第三变化矩阵的转置矩阵对应的第四变化矩阵;以及
根据第四变化矩阵的行或列将布置在第四变化矩阵中的N个数作为所述N个数的序列的重排序列进行输出,以用于加密和解密装置的加密和/或解密,
其中,产生第一变化矩阵的步骤包括:
通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个第一子矩阵;
通过对所述多个第一子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第一变化子矩阵;
将布置在所述多个第一变化子矩阵中的每个中的数作为第一变化矩阵的每行进行输出,
其中,所述N个数为加密和解密装置的秘钥、明文、对明文进行加密的过程中产生的中间数据、密文和对密文进行解密的过程中产生的中间数据中的至少一项,
其中,第一行随机数和第二行随机数分别为加密和解密装置接收的作为二进制随机源的选择信号。
6.根据权利要求5所述的方法,其中,所述矩阵是方阵和长方阵之一。
7.根据权利要求6所述的方法,其中,N为大于或等于4的整数,
其中,产生第三变化矩阵的步骤包括:
通过将第二变化矩阵的每行的数布置在至少一行和至少一列中来产生多个第二子矩阵;
通过对所述多个第二子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第二变化子矩阵;
将布置在所述多个第二变化子矩阵中的每个中的数作为第三变化矩阵的每行进行输出。
8.一种用于加密和解密装置的随机排列产生装置,包括:
排列输入单元,被构造为接收N个数的初始排列序列,并且被构造为将所述初始排列序列的N个数布置在矩阵中,其中,N为等于或大于2的整数;
第一矩阵变化单元,被构造为通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于行随机数执行第一随机布置操作;
第二矩阵变化单元,被构造为通过对第一变化矩阵的每列中的数执行第二随机布置操作来产生第二变化矩阵,其中,基于列随机数执行第二随机布置操作;以及
排列输出单元,被构造为通过以下步骤产生所述N个数的最终排列序列:根据第二变化矩阵的行或列将布置在第二变化矩阵中的N个数作为最终排列序列进行输出,以用于加密和解密装置的加密和/或解密,其中,所述最终排列序列是所述初始排列序列的重排序列,
其中,第一矩阵变化单元通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个行子矩阵,通过对所述多个行子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化行子矩阵,并将布置在所述多个变化行子矩阵中的每个中的数作为第一变化矩阵的每行进行输出,
其中,所述N个数为加密和解密装置的秘钥、明文、对明文进行加密的过程中产生的中间数据、密文和对密文进行解密的过程中产生的中间数据中的至少一项,
其中,行随机数和列随机数分别为加密和解密装置接收的作为二进制随机源的选择信号。
9.根据权利要求8所述的装置,其中,N为大于或等于4的整数,
其中,第二矩阵变化单元通过将第一变化矩阵的每列的数布置在至少一行和至少一列中来产生多个列子矩阵,通过对所述多个列子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个变化列子矩阵,并将布置在所述多个变化列子矩阵中的每个中的数作为第二变化矩阵的每列进行输出。
10.一种用于加密和解密装置的随机排列产生装置,包括:
排列输入单元,被构造为接收N个数的初始排列序列,并且被构造为将所述初始排列序列的N个数布置在矩阵中,其中,N为等于或大于2的整数;
第一矩阵变化单元,被构造为通过对所述矩阵的每行中的数执行第一随机布置操作来产生第一变化矩阵,其中,基于第一行随机数执行第一随机布置操作;
第一矩阵转置单元,被构造为产生与第一变化矩阵的转置矩阵对应的第二变化矩阵;
第二矩阵变化单元,被构造为通过对第二变化矩阵的每行中的数执行第二随机布置操作来产生第三变化矩阵,其中,基于第二行随机数执行第二随机布置操作;
第二矩阵转置单元,被构造为产生与第三变化矩阵的转置矩阵对应的第四变化矩阵;以及
排列输出单元,被构造为通过以下步骤产生所述N个数的最终排列序列:根据第四变化矩阵的行或列将布置在第四变化矩阵中的N个数作为最终排列序列进行输出,以用于加密和解密装置的加密和/或解密,其中,所述最终排列序列是所述初始排列序列的重排序列,
其中,第一矩阵变化单元通过将所述矩阵的每行的数布置在至少一行和至少一列中来产生多个第一子矩阵,通过对所述多个第一子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第一变化子矩阵,并将布置在所述多个第一变化子矩阵中的每个中的数作为第一变化矩阵的每行进行输出,
其中,所述N个数为加密和解密装置的秘钥、明文、对明文进行加密的过程中产生的中间数据、密文和对密文进行解密的过程中产生的中间数据中的至少一项,
其中,第一行随机数和第二行随机数分别为加密和解密装置接收的作为二进制随机源的选择信号。
11.根据权利要求10所述的装置,其中,第二矩阵变化单元通过将第二变化矩阵的每行的数布置在至少一行和至少一列中来产生多个第二子矩阵,通过对所述多个第二子矩阵中的每个的每行和每列中的数执行旋转操作来产生多个第二变化子矩阵,并将布置在所述多个第二变化子矩阵中的每个中的数作为第三变化矩阵的每行进行输出。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120033797A KR101977823B1 (ko) | 2012-04-02 | 2012-04-02 | 랜덤 순열 생성 방법, 랜덤 순열 생성 장치 및 이를 구비하는 암복호화 장치 |
KR10-2012-0033797 | 2012-04-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103368729A CN103368729A (zh) | 2013-10-23 |
CN103368729B true CN103368729B (zh) | 2019-05-10 |
Family
ID=49154857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310104983.9A Active CN103368729B (zh) | 2012-04-02 | 2013-03-28 | 产生随机排列的方法及随机排列产生装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8861719B2 (zh) |
KR (1) | KR101977823B1 (zh) |
CN (1) | CN103368729B (zh) |
DE (1) | DE102013102722A1 (zh) |
Families Citing this family (11)
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 | 삼성전자주식회사 | 암호화 장치 및 복호화 장치, 이들의 동작방법 |
US11865435B2 (en) | 2017-10-21 | 2024-01-09 | Angel Group Co., Ltd. | Method for shuffling playing cards |
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 |
WO2021174373A1 (es) * | 2020-10-10 | 2021-09-10 | Gutierrez Salazar Jaime Ricardo | Método para encriptar datos mediante operaciones en matrices |
CN112910630B (zh) * | 2021-02-02 | 2022-12-06 | 浙江大华技术股份有限公司 | 扩展密钥的置换方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159435A (zh) * | 2007-11-14 | 2008-04-09 | 中国人民解放军理工大学 | 基于移位矩阵分级扩展的低密度校验码校验矩阵构造方法 |
CN101710828A (zh) * | 2009-08-24 | 2010-05-19 | 清华大学 | 一种正交随机相位编码技术及其在体全息存储器中的应用 |
CN102355271A (zh) * | 2011-10-31 | 2012-02-15 | 南京邮电大学 | 一种随机行列循环移位交织器的编解码方法 |
Family Cites Families (11)
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 |
KR101121185B1 (ko) * | 2002-12-16 | 2012-03-22 | 텔레콤 이탈리아 소시에떼 퍼 아찌오니 | 터보 인코더 및 디코더에서 인터리버용 어드레스 발생장치 및 방법 |
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 |
KR100922734B1 (ko) | 2007-12-17 | 2009-10-22 | 한국전자통신연구원 | 무선 센서네트워크 보안을 위한 송수신 방법 및 송수신장치 |
KR101242792B1 (ko) | 2010-09-30 | 2013-03-12 | 주식회사 포스코 | 회전각 조정형 구동장치 및 이를 포함하는 주편 잔류물 제거장치 |
-
2012
- 2012-04-02 KR KR1020120033797A patent/KR101977823B1/ko active IP Right Grant
-
2013
- 2013-02-05 US US13/759,476 patent/US8861719B2/en active Active
- 2013-03-18 DE DE102013102722A patent/DE102013102722A1/de active Pending
- 2013-03-28 CN CN201310104983.9A patent/CN103368729B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159435A (zh) * | 2007-11-14 | 2008-04-09 | 中国人民解放军理工大学 | 基于移位矩阵分级扩展的低密度校验码校验矩阵构造方法 |
CN101710828A (zh) * | 2009-08-24 | 2010-05-19 | 清华大学 | 一种正交随机相位编码技术及其在体全息存储器中的应用 |
CN102355271A (zh) * | 2011-10-31 | 2012-02-15 | 南京邮电大学 | 一种随机行列循环移位交织器的编解码方法 |
Non-Patent Citations (1)
Title |
---|
一种新型的Turbo码交织器的设计;汪汉新,刘双凤;《中南民族大学学报(自然科学版)》;20100930;第29卷(第3期);58-60,83 |
Also Published As
Publication number | Publication date |
---|---|
US8861719B2 (en) | 2014-10-14 |
KR20130111715A (ko) | 2013-10-11 |
KR101977823B1 (ko) | 2019-05-13 |
CN103368729A (zh) | 2013-10-23 |
US20130259224A1 (en) | 2013-10-03 |
DE102013102722A1 (de) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103368729B (zh) | 产生随机排列的方法及随机排列产生装置 | |
TWI739090B (zh) | 具有物理不可複製功能的真亂數生成系統 | |
US8666064B2 (en) | Endecryptor capable of performing parallel processing and encryption/decryption method thereof | |
CN101925877B (zh) | 对数据执行排列运算的装置与方法 | |
CN101040306B (zh) | 伪随机数生成装置 | |
CN101882993A (zh) | 密码系统及密码方法 | |
JP2010509690A (ja) | 記憶装置のセキュリティを確保する方法とシステム | |
WO2009093601A1 (ja) | データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム | |
DE102012111793A1 (de) | Speichervorrichtung zum Schützen von sicheren Daten und Verfahren zum Authentifizieren einer Speichervorrichtung unter Verwendung von sicheren Daten | |
CN110784307B (zh) | 轻量级密码算法scenery实现方法、装置及存储介质 | |
CN102411694B (zh) | 加密装置及存储器系统 | |
US20190140851A1 (en) | Secure logic system with physically unclonable function | |
Wang et al. | Energy efficient in-memory AES encryption based on nonvolatile domain-wall nanowire | |
CN111914309A (zh) | 密码保护的数据储存装置以及非挥发式存储器控制方法 | |
CN116961958A (zh) | 一种数据加密方法、装置、电子设备和存储介质 | |
CN114221766A (zh) | 数据加密方法、解密方法及装置 | |
CN107967414A (zh) | 微控制芯片指令加密方法、解密方法及加/解密系统 | |
CN112287333B (zh) | 一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质 | |
JP5480828B2 (ja) | 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム | |
WO2004068784A1 (en) | Method and system of encryption | |
JP5383806B2 (ja) | 暗号化システム | |
CN109698812A (zh) | 信息加密方法和装置、信息解密方法和装置及安全系统 | |
TWI249666B (en) | Device using parity check bit to carry out data encryption protection and method thereof | |
CN101783924A (zh) | 基于fpga平台和演化硬件的图像加解密系统及其方法 | |
CN113779611A (zh) | 基于三维Arnold变换的矢量地理数据加密方法和解密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |