首页> 中国专利> 产生随机排列的方法及随机排列产生装置

产生随机排列的方法及随机排列产生装置

摘要

本发明公开了一种产生随机排列的方法及随机排列产生装置。通过以下步骤产生随机排列:将N个数的序列布置在矩阵中;对矩阵的行执行随机布置操作以产生中间矩阵;对中间矩阵的列执行随机布置操作以产生第二中间矩阵;以及将第二中间矩阵的N个数布置为所述N个数的重排序列。

著录项

  • 公开/公告号CN103368729A

    专利类型发明专利

  • 公开/公告日2013-10-23

    原文格式PDF

  • 申请/专利权人 三星电子株式会社;

    申请/专利号CN201310104983.9

  • 发明设计人 李容基;崔弘默;申钟勋;

    申请日2013-03-28

  • 分类号H04L9/22;

  • 代理机构北京铭硕知识产权代理有限公司;

  • 代理人鲁恭诚

  • 地址 韩国京畿道水原市

  • 入库时间 2024-02-19 21:36:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-10

    授权

    授权

  • 2015-03-11

    实质审查的生效 IPC(主分类):H04L9/22 申请日:20130328

    实质审查的生效

  • 2013-10-23

    公开

    公开

说明书

本申请要求于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)、裸片格栅封装(die in waffle pack)、裸片级晶片形式(die in wafer 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)、安全系统等。

前述内容是说明性的示例性实施例,并且不被解读为限制示例性实施例。 尽管已描述了一些示例性实施例,但是本领域的技术人员将容易意识到,在 实质上不脱离本公开内容的新颖教导和优点的情况下,可在示例性实施例中 进行许多修改。因此,所有这样的修改都意图包括在如权利要求中限定的本 公开构思的范围内。因此,要理解,前述内容是说明性的各种示例性实施例, 并且不被解读为限于所公开的特定示例性实施例,并且对所公开的示例实施 例以及其他示例实施例的修改意图包括在权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号