CN113728583A - 数字系统的增强的随机性 - Google Patents
数字系统的增强的随机性 Download PDFInfo
- Publication number
- CN113728583A CN113728583A CN202080030808.8A CN202080030808A CN113728583A CN 113728583 A CN113728583 A CN 113728583A CN 202080030808 A CN202080030808 A CN 202080030808A CN 113728583 A CN113728583 A CN 113728583A
- Authority
- CN
- China
- Prior art keywords
- bit
- permutation
- elements
- value
- data word
- 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.)
- Granted
Links
Images
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/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
-
- 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
-
- 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
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种数字处理方法,包括获得N位输入数据字的流;获得在0以上并且在M‑1以下的范围内的值k,其中M>1;至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个以产生对应的N位输出数据字;以及在网络上输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
Description
相关应用的交叉引用
本申请要求于2019年4月23日提交的美国临时申请序列No.62/837,370、于2019年10月11日提交的美国临时申请序列No.62/913,890的权益。上述两个申请均在此通过引用并入本文。
技术领域
本公开涉及数字通信中数据的加密和解密。
背景技术
一直以来都需要数字系统的安全性。在使用数据网络的数字通信系统中,使用加密方案将明文转换成密文,并且通过数据网络发送密文。接收方接收密文并使用与加密方案有某种关系的解密方案将其转换回原始明文。
许多现代加密方案依赖于通常称为“共享秘密”的内容,即期望与之通信的一方知道而其它方不知道的信息元素。共享秘密用于生成密钥,该密钥依次用于将明文加密成密文或用于将密文解密成明文。
一个共同的目标是使加密方案“强大”。加密方案的强度(或者换句话说,可以“破解”加密方案的难度)取决于外部观察者能够发现密钥或从中产生密钥的秘密的难度。在这方面,密文的随机性是一个因素,因为任意输入明文产生的密文的随机性越大,观察者就越难从密文中推断出明文,因此加密方案被认为更强。
因此,期望提供从具有高度随机性的明文产生密文的加密方案。
发明内容
根据各个方面,本公开涉及一种数字处理方法,该方法包括获得N位输入数据字的流、获得在0以上并且在M-1以下的范围内的值k,其中M>1、至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个,以产生对应的N位输出数据字,以及在网络上输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
根据另一方面,本公开涉及一种系统,该系统包括用户I/O、存储器、网络I/O和处理器,该处理器被配置为获得N位输入数据字的流,以获得在0以上并且在M-1以下的范围内的值k,其中M>1、至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个,以产生对应的N位输出数据字,以及在网络上输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
根据另一方面,本公开涉及一种包括计算机可读指令的计算机可读介质,所述计算机可读指令在由处理器执行时使处理器执行数字处理方法。该数字处理方法包括获得N位输入数据字的流、获得在0以上并且在M-1以下的范围内的值k,其中M>1、至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个,以产生对应的N位输出数据字,以及在网络上输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
根据另一方面,本公开寻求提供一种熵扩展器,其包括:包括M个置换元素的交换核心(switching core);调度器,被配置为接收在0以上并且在M-1以下的范围内的值k,其中M>1,该调度器还被配置为将N位输入数据字路由到M个置换元素中的第k个置换元素,交换核心被配置为至少基于M个置换元素中的第k个置换元素执行N位输入数据字中的每一个的处理,以产生对应的N位输出数据字;收集器,被配置为接收在0以上并且在M-1以下的范围内的值k,其中M>1,该收集器还被配置为从M个置换元素中的第k个置换元素提取N位输出数据字,以及在网络上输出N位输出数据字或将N位输出数据字存储在非暂态存储介质中。
本公开的另一方面寻求提供一种数字通信系统,包括:可连接到网络的发送方设备和接收方设备。发送方设备被配置用于:获得N位第一数据字;获得在0以上并且在M-1以下的范围内的值k,其中M>1;至少基于M个第一置换元素中的第k个置换元素处理N位第一数据字中的每一个,以产生对应的N位第二数据字;以及在网络上向接收方设备释放N位第二数据字。接收方设备被配置用于:接收N位第二数据字;获得在0以上并且在M-1以下的范围内的值j,其中M>1;至少基于M个第二置换元素中的第j个置换元素处理N位第二数据字中的每一个,以产生对应的N位第三数据字,j和k的值是同步的,使得当特定N位第二数据字由发送方设备的第k个置换元素和接收方设备的第j个置换元素处理时,k和j相同,第k个置换元素和第j个置换元素的特征在于彼此转置的置换矩阵;以及在网络上输出N位第三数据字或将N位第三数据字存储在存储器中。
本公开的另一方面寻求提供一种数字处理方法,包括:获得N位AES(高级加密标准)轮密钥的流;获得在0以上并且在M-1以下的范围内的值k,其中M>1;至少基于M个置换元素中的第k个置换元素处理N位输入AES轮密钥中的每一个,以产生对应的N位输出AES轮密钥;以及使用N位输出AES轮密钥对输入消息执行AES加密。
附图说明
以下仅作为示例,参考伴随本描述的附图提供实施例的详细描述,其中:
图1是概念性地图示通过数据网络进行通信的两个通信设备的框图。
图2是概念性地图示发送方设备和接收方设备的框图,发送方设备和接收方设备中的每一个被配置为在其各自的存储器中存储秘密S。
图3是概念性地图示根据非限制性实施例的熵扩展处理的操作的框图。
图4是概念性地图示根据非限制性实施例的随机化器的可能实现的框图。
图5A是概念性地图示根据非限制性实施例的熵扩展器的基于硬件的实现的示例的框图。
图5B是概念性地图示根据非限制性实施例的熵扩展器的基于硬件的实现的示例的框图。
图6是概念性地图示根据非限制性实施例的将秘密馈送到初始化模块的实现的框图。
图7是概念性地图示根据非限制性实施例的用于将输入数据字转换成稀疏输入阵列的软件扩展器的框图。
图8是概念性地图示根据非限制性实施例的在设备到设备通信系统的上下文中的商业应用的框图。
图9是概念性地图示图5A的通信系统中的接收方设备处的熵扩展器的组件的框图的框图。
图10是示出根据非限制性实施例的如由熵扩展器执行的熵扩展过程的操作步骤的流程图。
图11是示出根据非限制性实施例的用于扩展AES轮密钥的熵的系统的框图。
图12A是示出根据非限制性实施例的用于增强提供伪随机数的输入流的系统PRNG的熵的熵扩展器的框图,其中熵扩展器的调度器由随机化器的输出馈送。
图12B是根据非限制性实施例的图12A的变体,其中熵扩展器的调度器由伪随机数的输入流本身馈送。
图13是图示在AES加密算法中使用熵扩展器作为动态S-块的框图。
应当清楚地理解,描述和附图仅用于图示某些实施例的目的并且是帮助理解的。它们不旨在也不应该是限制性的。
具体实施方式
图1示出了通过数据网络11进行通信的两个通信设备10。通信设备10被称为“发送方设备”12和“接收方设备”13,但是这些术语并不旨在进行限制。也就是说,通信可以是双向的,使得接收方设备13可以向发送方设备12发送数据并且发送方设备12可以从接收方设备13接收数据。取决于实现,数据网络11可以是互联网、局域网、无线网络、这些网络的组合或还有的其它形式的数据网络。
发送方设备12包括处理器14(例如,微处理器、CPU、图形处理单元)、存储器15(例如,易失性存储器、非易失性存储器)、用于连接到数据网络11(例如,PHY发射器、网卡、天线)的网络I/O 16、可能的用户I/O 17(例如,触摸屏、键盘、扬声器)。存储器15存储数据15A和计算机可读指令15B,并且处理器14被配置为读取和执行这样的指令以及读取/写入这样的数据18。通过读取和执行计算机可读指令15B,处理器14执行控制发送方设备12的行为和操作的某些处理。
接收方设备13还包括处理器20(例如,微处理器、CPU、图形处理单元)、存储器21(例如,易失性存储器、非易失性存储器)、用于连接到数据网络11(例如,PHY发射器、网卡、天线)的网络I/O 22、可能的用户I/O 23(例如,触摸屏、键盘、扬声器)。存储器21存储数据21A和计算机可读指令21B,并且处理器20被配置为读取和执行这样的指令以及读取/写入这样的数据24。通过读取和执行计算机可读指令21B,处理器20执行控制接收方设备13的行为和操作的某些处理。
现在参考图2,发送方设备12和接收方设备13各自被配置为在其各自的存储器15、21中存储秘密S。秘密S可以是使用多个位28或其它数字符号(例如,十六进制字符)编码的数据元素27。发送方设备12和接收方设备13都知道相同的秘密S。在一些实施例中,秘密S可以由发送方设备12发起并且与接收方设备13共享。在其它实施例中,秘密S可以由接收方设备13发起并且与发送方设备12共享。在一些实施例中,秘密S可以通过数据网络11从发送方设备12发送到接收方设备13(或反之亦然)。在其它实施例中,发送方设备12和接收方设备13可以使用安全的带外通信信道29来共享秘密S。在还有的其它实施例中,秘密S可以由发送方设备12和接收方设备13两者从第三方获得。第三方可以是可经由数据网络11访问的服务器30(例如,web服务器)。
由发送方设备12的计算机可读指令15B编码并由发送方设备12的处理器14执行的处理的一个示例是熵扩展处理。之所以这么称呼是因为熵通过引入置换变换从N位(对于N位系统)扩展到log2(2N!)位,并进一步通过使用M个这样的变换扩展到M*log2(2N!)位。
图3是概念性地图示熵扩展处理的操作的框图。具体而言,假设发送方设备12被配置为产生N位输入数据字33,以通过数据网络11向接收方设备13传输N位输出数据字35。这些输入数据字33可以包含文本、语音、视频或发送方设备12可能希望发送到接收方设备13的任何其它数据。在被熵扩展处理处理之前,输入数据字33可能已经在网络层34或更高层进行了编码和/或加密。熵扩展处理从N位输入数据字33产生N位输出数据字35。N位输出数据字35然后经由网络I/O 16被发送到数据网络11上。换句话说,在这个实施例中,熵扩展处理在数据链路层36处进行干预并且在经由数据网络11发送到接收方设备13之前对N位输出数据字进行加密。在其它实施例中,熵扩展处理可以干预OSI模型的不同层,并且可以使得N位输出数据字35被存储在存储器15中或由其它网络系统处理。
熵扩展处理可以以熵扩展器37的形式在概念上描述,该熵扩展器37作用于N位输入数据字m0、m1、...的流,以产生N位输出数据字e0、e1、...的流。在实施例中,N可以采用大于1的任何整数值。N的可能值包括偶数和2的幂,但N也可以是奇数;即,对N的值没有特别限制。N位输出数据字e0、e1、...的流可以输出到数据网络11上、由更高层应用38转换或存储在存储器15或其它非暂态计算机可读介质中。
熵扩展器37还可以耦合到随机化器39,该随机化器39被配置为产生介于0和M1之间的随机化值k(其中M>1,例如,64、256、512、1024等;但是,M不必是2的幂)。参考图4,示出了随机化器39的可能实现,由此提供了伪随机数发生器(下文称为PRNG)41和映射器42。PRNG 41用种子43初始化并且将伪随机数X馈送到映射器42。映射器42将X转换成介于0和M-1之间的值k。映射器42可以执行模M函数或产生介于0和M-1之间的k的任何其它散列函数。在其它实施例中,PRNG 41的输出可以被限制在0和M-1之间,在这种情况下可能不需要映射器42。
PRNG 41可以是用任何初始向量(种子)43初始化的任何合适的PRNG 41。在不被认为是限制的一些实施例中,PRNG 41的种子43可以是秘密S或者它可以是秘密S的散列47。由此,秘密S可以被直接输入或间接输入到PRNG 41。产生介于0和M-1之间的值k的随机化器39的其它实现是可能的;这些实施例中的一些实施例直接或间接地接受秘密S作为种子43,而其它实施例不接受。
在还有的其它实施例中,k是从N位输入数据字m0、m1、...的位置确定地获得的,也就是说,对于输入数据字m0,k=0;对于输入数据字m1,k=1,以此类推。在这样的实施例中,不需要随机化器。
值k用于选择要用于生成N位输出数据字35的几个可用置换元素之一。取决于熵扩展器37的实现是主要基于硬件(图5A和5B)还是基于软件(图7),这些置换元素将被不同地实现,如下文将详细描述的。
首先参考图5A描述熵扩展器37的基于硬件的实现的示例。在这种情况下,熵扩展器37可以包括:调度器50、交换核心51和收集器52。交换核心51包括表示为p0,...pM-1的M个交换元素53。在基于硬件的实现中,交换元素53包括“置换元素”。M个交换元素53中的第k个置换元素是调度器50将N位输入数据字33引导到的并且收集器52从中提取N位输出数据字35的交换元素。为此,调度器50可以被实现为解复用器并且收集器52可以被实现为复用器,每个都具有从随机化器39接收值k的选择线541、542。
每个交换元素53具有将接收到的N位输入数据字33转换成2N-元素稀疏输入位阵列的能力。在这种情况下,术语“稀疏”是指在一个位置为1,在所有其它位置为0的阵列。每个交换元素53还被配置为将2N-元素稀疏输入位阵列转换成2N-元素稀疏输出位阵列。最后,每个交换元素53被配置为将2N-元素稀疏输出位阵列转换成N位输出数据字35。
为此,如图5B中所示,交换元素53p0、...pM-1中的每一个可以包括2Nx2N单输入、单输出阻塞交换架构57,其交换行为由交换映射58驱动。交换映射58对于交换元素53p0、...pM-1中的每一个都是唯一的。另外,交换元素53p0、...pM-1中的每一个包括位于对应交换架构57上游的扩展器59和位于对应交换架构57下游的压缩器60。扩展器59被配置为将N位输入数据字33转换成2N-元素稀疏输入位阵列。交换架构57基于对应的交换映射58从2N-元素稀疏输入位阵列产生2N-元素稀疏输出位阵列。压缩器60然后采用由交换架构57输出的2N-元素稀疏输出位阵列并从其产生N位输出数据字35。
M个交换元素53p0、...pM-1中的每一个的交换行为相对于其它是唯一的。由于稀疏输入阵列和稀疏输出阵列的可能组合的数量,唯一交换元素53的总可能数量是(2N)!,其即使对于N的小值也可能非常大。在本实现中,交换核心51包括M个交换元素53的子集,其中M可以是任何期望的数量。
在图5B的实施例中,交换元素53中的每一个包括扩展器59和压缩器60,并且调度器50充当解复用器以将N位输入数据字33路由到所选择的交换元素pk的扩展器59。但是,在替代实现或实施例中,不是包括用于每个交换元素53的扩展器59和压缩器60,而是调度器可以包括与由值k驱动的解复用器组合的单个扩展器,使得由单个扩展器产生的2N-元素稀疏输入字被发送到第k个交换架构。类似地,在该替代实施例中,收集器可以包括具有复用器的单个压缩器,并且可以连接到所有交换架构的输出端并提供选择值(即,k)使得正确的2N-元素稀疏输出字由收集器选择并转换成N位输出数据字。
交换元素53p0、...pM-1可以以任何合适的方式初始化。在一个实施例中,秘密S用于初始化交换元素53p0、...pM-1的交换映射58。参考图6,其示出了将秘密S(直接地或经由散列函数62)馈送到初始化模块61的实现。初始化模块61被配置为基于秘密S以确定性方式生成由交换元素53使用的各种唯一交换映射58。
对于具有单个置换元素的N位交换核心,预共享秘密S的长度可以高达log2(2N!)个随机位。在有M个交换元素53p0,...pM-1的情况下,预共享秘密的长度可以高达M*log2(2N!)个随机位。初始化处理的示例包括使用秘密S将混洗算法应用于状态表T[i][j](i=0,1,2,M-1;j=0,1,2,...,2N-1)67。因此,每个单独的交换元素pi可以被表示为“置换矩阵”pi[x,y],其中pi[x,y]=0,例外是从状态表T[i]j]的T[i][*]部分获得的pi[x,T[i][x]]=1。本质上,状态表T[i][j]是置换矩阵pi的第j行中非零列的位置的十进制值。混洗算法可以是任何众所周知的算法,诸如Fisher Yates或RC4密钥调度算法。对于每个原始混洗,它需要来自共享秘密S的N*2N位。
在熵扩展器37的一些实施例中,调度器、交换核心和收集器的某些功能用软件实现。例如,如图7中所示,软件熵扩展器63可以用于将N位输入数据字33转换成2N-元素稀疏输入阵列。软件交换核心64通过将输入列向量(2N-元素稀疏输入阵列)与M个置换矩阵p0,...pM-1(经由软件选择器65获得)的第k个置换元素相乘来执行矩阵乘法以产生输出列向量(2N-元素稀疏输出阵列)。软件压缩器67可以用于将2N-元素稀疏输出阵列转换成N位输出数据字35。在这种情况下,M个置换矩阵p0,...pM-1可以包括前述的“置换元素”,软件熵扩展器63只选择其中一个用于矩阵乘法。
软件交换核心64在执行上述处理中的作用可以看作是将稀疏输入阵列(或向量)与置换矩阵相乘,以便输出新的向量,该新的向量然后被转换成N位输出字。该处理可以用软件进行优化并表达如下。给定软件交换核心64的M个置换矩阵pi(i=0…M-1),并且给定每个置换矩阵pi具有2N个输入和输出(索引为0...2N-1),这可以折叠成具有总共M*2N个输入和M*2N个输出的单个矩阵。这被称为用于编码的状态表,表示为T(或T[i][j]),其是表示整个软件交换核心64的(二维)矩阵,其中i=0,1,2,...,M-1并且j=0,1,2,...,2N-1。对于每个置换矩阵pi,对于所有j和k,都有pi[j,k]=0,例外是那些k=T[i][j],其中pi[j,T[i][j]]=1。因此,如果i是调度索引,并且j是N位字的十进制值,那么输出N位字k=T[i][j]。输出字直接来自状态表的一步赋值。
还值得注意的是,表示为T*的用于解码的状态表可以从如用于构造用于编码的状态表T的相同的置换矩阵p0,...pM-1类似地构造。具体而言,对于每个置换矩阵pi,对于所有j和k,都有pT i[j,k]=0,例外是那些k=T*[i][j],其中pT i[j,T*[i][j]]=1。因此,如果i是调度索引,并且j是输入N位字的十进制值,那么输出N位字k=T*[i][j]。由此,编码和解码效率是相同的,与用于编码的查找表相反,这需要在解码侧更多的工作。
还有其它实现来实现输出N位字T*[i][j],其中i是调度索引,j是输入N位字的十进制值,包括阵列和链表,但它可能得出结论,阵列T*[i][j]在计算上是最高效的,回想一下,对于每个置换矩阵pi,对于所有j和k,pi[j,k]=0,例外是那些k=T[i][j],其中pi[j,T[i][j]]=1。T和T*之间唯一的转置关系使得解码的计算复杂度与编码相同。
通信系统
图8示出了本技术在设备到设备通信系统70的上下文中的商业应用。在本实施例中,发送方设备12和接收方设备13均为计算设备;例如,其中之一或两者可以是膝上型计算机、web服务器、移动电话等。图5A是示出在图8的通信系统70中的发送方设备12处的熵扩展器37的组件的框图。为了完整起见,图9是示出熵扩展器37A的组件的框图,但是在图8的通信系统70中的接收方设备13处。具体而言,接收方设备13处的熵扩展器37A包括调度器50A、交换核心51A和收集器52A。图9图示了置换元素的基于硬件的实现,但是应该理解的是,其它实现也是可能的,包括基于软件的实现。
还作为接收方设备13的一部分提供的是随机化器39A,其产生介于0和M-1之间的随机化值k。在一些实施例中,随机化器39A使用秘密S(其在典型的通信会话期间与发送方设备12共享,连同共享的会话信息,诸如会话ID)产生介于0和M-1之间的随机化值k,其中M>1。随机化器39A可以包括PRNG 41(带有或不带有映射器,如先前在发送方设备12的上下文中所描述的)。在一些实施例中,k的值以确定性方式产生并且不需要随机化器39A。
接收方设备13处的熵扩展器37A在这种情况下被配置为将从发送方设备12接收到的N位输入数据字(即,e0,e1,...)转换成2N-元素稀疏输入阵列并用M个交换元素53A中所选择的一个交换元素处理2N-元素稀疏输入阵列,表示为pT 0,...pT M-1,以产生2N-元素稀疏输出阵列。应该注意的是,对于给定的k值,如果表示为置换矩阵,那么交换元素pk和pT k的操作将是彼此的转置。交换核心51A还被配置为将N位稀疏输出阵列转换成N位输出数据字m0、m1、...,即这些是馈送到发送方设备12的熵扩展器37的原始N位输入数据字。M个交换元素53A中所选择的一个交换元素是pT k,回想一下,其中k是由随机化器39A计算的或者以某种确定性方式计算,就像它在发送方设备12处一样。由此,收集器52A确保它从交换核心51A中所选择的、正确的(即,第k个)置换元素读取/识别N位输出数据字。
因此应该注意的是,发送方设备12和接收方设备13两者都可以利用几乎相同的熵扩展器37、37A(唯一的区别在于定义置换元素的置换矩阵是彼此转置的)。在功能上,从发送方设备的12熵扩展器37的角度来看的输出数据字是从接收方设备12的熵扩展器37A的角度来看的输入数据字。由此,只要在索引之间存在协调,即,使得在发送方设备12处使用第k个置换元素加密的输出数据字e0、e1、...在接收方设备13处使用第k个置换元素解密,在接收方设备的熵扩展器37A的输出端产生的结果数据字m0、m1、...将与在发送方设备的熵扩展器37的输入端接收的输入数据字m0、m1、...相同。
换句话说,就像发送方设备12获得在0以上并且在M-1以下的范围内的值k一样,接收方设备13获得在0以上并且在M-1以下的范围内的值j。基于熵扩展器37A的M个接收方置换元素中的第j个置换元素处理从发送方设备12接收到的N位数据字中的每一个,以产生对应的N位数据字。j和k的值是同步/协调的,使得由发送方设备的熵扩展器37用于产生由接收方设备的熵扩展器37A处理的特定N位数据字的k值与由接收方的熵扩展器37A在处理该特定N位数据字时使用的j值相同。此外,当通过置换矩阵在发送方设备12和接收方设备13中表示置换元素中的对应置换元素时,这些需要被相互转置(即,pk和pT k)。换句话说,当特定的N位数据字由发送方设备的第k个置换元素通过(退出)处理并由接收方设备的第j个置换元素处理(例如,进入)时,k和j是相同的,第k个置换元素和第j个置换元素的特征在于置换矩阵是彼此转置的。
现在参考图10中的流程图描述由熵扩展器37、37A执行的熵扩展处理的操作中的某些步骤,即,该熵扩展器可以是由发送方设备12或接收方设备13实现的熵扩展器。在步骤1010处,接收N位输入数据字。在步骤1020处,例如基于秘密S生成k的值。替代地或附加地,k的值可以基于已知的会话ID或时间戳。替代地或附加地,k可以是确定性的(例如,循环通过某个顺序)。注意的是,k识别要选择的置换元素,并且k在整个熵扩展处理中可以是恒定的,或者它可以是可变的(例如,更改每个第Q个输入数据字,其中Q=1,2,...),在这种情况下,发送方设备12和接收方设备13都应该知道Q的这个值。
在步骤1030处,从一组M个置换元素中选择第k个置换元素。在基于硬件的置换元素的情况下,这可能导致从一组交换架构中选择第k个交换元素;在基于软件的置换元素的情况下,这可能导致使用M个置换矩阵中的第k个置换矩阵调用矩阵乘法。在任一情况下,参考步骤1040,结果是N位输出数据字。在一些实施例中,N位输出数据字是通过将N位输入数据字转换成2N-元素稀疏输入阵列、通过硬件交换将其变换成2N-元素稀疏输出阵列,并将结果转换成N位输出数据字的中间步骤获得的。其它实现使用软件矩阵乘法或优化的阵列访问。
在步骤1050处,N位输出数据字被释放到数据网络上(例如,在由发送方设备12实现的熵扩展器37的情况下)或由更高层网络、协议、层或应用使用(例如,在由接收方设备13实现的熵扩展器37A的情况下)。
AES
在本技术的另一个商业应用中,发送方设备12和接收方设备13都是实现高级加密标准(下文中称为AES)技术的计算设备。
为此,图11示出了发送方设备12处的AES加密块72。AES加密块72用于使用一组AES密钥(例如,AES轮密钥)将明文77(诸如发送方设备12希望传输的数据)加密成密文78。在实施例中,AES加密块72是已知块并且可以按照国际标准化组织作为“ISO/IEC 18033-3:2010—Information technology—Security techniques—Encryption algorithms—Part 3:Block ciphers”发布的规范进行操作,该规范在此通过引用并入。由此,AES加密块72使用AES密钥,不同之处在于这些AES密钥不是由AES密钥生成器76提供的常规AES密钥75,而是由熵扩展器37提供的修改后的AES密钥73。具体而言,熵扩展器37从常规的AES密钥生成器76接收常规的AES密钥75(例如,常规的AES轮密钥)并且增加它们的熵以产生修改后的AES密钥73(例如,修改后的AES轮密钥)。
现在描述熵扩展器37从常规的AES密钥75生成修改后的AES密钥73的方式。更具体而言,熵扩展器37将常规的AES密钥75(例如,AES轮密钥)作为其N位输入数据字。熵扩展器37以与前面已经描述的相同方式操作,从而基于在一组M个置换元素(例如,交换架构或置换矩阵)中选择第k个置换元素来产生N位输出数据字。因此,N位输出数据字是提供给AES加密块72的修改后的AES密钥73(例如,修改后的AES轮密钥)。
在一些实施例中,k是从秘密S导出的(例如,作为消耗秘密S并产生输出k的随机化器39的输出,如前面已经描述的);在那种情况下,秘密S与接收方设备13共享,使得它可以生成相同的k值。在其它实施例中,k还基于时间戳或会话ID。在还有的其它实施例中,k以接收方设备13将知道的确定性方式循环通过(例如,0到M-1)。
在一些实施例中,用于生成k的秘密S还用于初始化AES密钥生成器76。
在接收方设备13处实现互补体系架构,即,对应的AES加密块接收密文78(来自发送方设备12)并使用从与发送方设备12处的熵扩展器37相同的熵扩展器接收到的修改后的AES密钥(例如,修改后的AES轮密钥)将其解密为原始明文77。提供相同的AES密钥生成器76,因此发送方设备12和接收方设备13两者都知道AES密钥生成器76的输出。此外,接收方设备13处的AES密钥生成器76的输出被用作向接收方设备13处的熵扩展器馈送的输入数据。此外,接收方设备13实现如与在发送方设备12处使用的相同的生成k的方式(即,基于相同的秘密S,可能连同相同的时间戳和/或会话ID,或相同的循环通过的确定性方式)。由此,接收方设备13处的熵扩展器生成与由发送方设备12生成的修改后的AES密钥73完全相同的修改后的AES密钥。这些相同的修改后的AES密钥然后被AES加密块用于实现解密,因为AES是一种对称加密技术。
AES的三种变体基于不同的密钥大小(128、192和256位)。为简单起见,最初可以将重点放在AES密钥调度的128位版本上,它也为理解192位和256位变体提供了足够的背景知识。AES的加密阶段可以分为三个阶段:初始轮、主轮和最终轮。所有阶段在不同的组合中使用相同的子操作,如下:
初始轮
-AddRoundKey
主轮
-SubBytes
-ShiftRows
-MixColumns
-AddRoundKey
最终轮
-SubBytes
-ShiftRows
-AddRoundKey
对于AES的每个变体,AES的主轮被重复一定次数。AES-128使用主轮的9次迭代,AES-192使用11次,AES-256使用13次。
如上所述,AES的四个子操作是AddRoundKey、SubBytes、ShiftRows和MixColumns。
AddRoundKey:
AddRoundKey操作是AES加密中唯一直接对AES轮密钥进行操作的阶段。在此操作中,该轮的输入与轮密钥异或。
SubBytes:
AES的SubBytes阶段涉及将输入拆分为字节并将每个字节通过Substitution Box或S-Box。AES S-Box在Galois Field 28中实现逆乘法。
ShiftRows
在AES的ShiftRows阶段,密码的128位内部状态的每一行都被移位。此阶段中的行是指AES中内部状态的标准表示,它是4x4矩阵,其中每个单元格包含一个字节。内部状态的字节从左到右和下列跨行放置在矩阵中。
在ShiftRows操作中,这些行中的每一行都向左移动设定量:它们的行号从零开始。顶行根本不移位,下一行被移位一个,依此类推。
MixColumns
与AES的ShiftRows阶段一样,MixColumns阶段通过混合输入来提供扩散。与ShiftRows不同,MixColumns执行按列而不是行拆分矩阵的操作。与标准矩阵乘法不同,MixColumns按照Galois Field 28执行矩阵乘法。这种乘法具有在初始矩阵的每一列上独立操作的特性,即第一列与矩阵相乘时,产生结果矩阵的第一列。
AES密钥调度用于从初始密钥产生一定数量的轮密钥。在AES中,初始密钥在AES的初始轮中用作AddRoundKey操作的输入。从此密钥产生10、12或14个轮密钥,作为AES的128、192和256位版本中其它AddRoundKey操作的输入。先前轮密钥的每个字(32字节)与某个值进行异或运算,以产生当前轮密钥的对应字。在字1-3的情况下,异或中使用的值是先前轮密钥的先前字(字0-2)。对于轮密钥的第一个字,异或中使用的值是通过g函数传递先前轮密钥的最后一个字的结果。
g函数由三个阶段组成:S-Box变换、置换和异或。AES密钥调度中使用的S-Box操作与前面描述的加密阶段中使用的操作相同。在g函数的置换阶段中,字的每个字节都向左移动一个位置。最后,最左边的字节与轮常数进行异或运算。AES中的轮常数是2round_number模Galois Field 28的值。
密钥调度函数的输出用作AES加密中AddRoundKey操作的轮密钥输入。对轮密钥执行相同的变换以产生下一个轮密钥。
AES中的解密
为了解密AES加密的密文,必须按照与应用它们相反的顺序撤消加密操作的每个阶段。解密的三个阶段是:
逆最终轮
-AddRoundKey
-ShiftRows
-SubBytes
逆主轮
-AddRoundKey
-MixColumns
-ShiftRows
-SubBytes
逆初始轮
-AddRoundKey
在AES加密的四个操作中,只有AddRoundKey操作是它自己的逆操作(因为它是异或)。要撤销AddRoundKey,只需要扩展整个AES密钥调度(与加密相同),然后在异或中使用适当的密钥。
其它三个操作需要定义和使用逆操作。要撤消的第一个操作是ShiftRows。逆ShiftRows操作与ShiftRows操作相同,不同之处在于向右旋转而不是向左旋转。
下一个要撤消的操作是SubBytes操作。使用逆S-Box。
要定义的最后一个逆操作是MixColumns。与MixColumns一样,逆MixColumns可以被定义为Galois Field 28中的矩阵乘法。以这样的方式选择两个矩阵中的特定值,使得一次乘法是Galois Field 28中的另一个乘法的逆。
AES密文按照上述操作顺序进行解密,使用适当的逆操作并以相反的顺序使用轮密钥。
除了上述AES密钥调度的128位版本之外,还有两种基于不同密钥大小(192位和256位)的AES变体。AES的所有三种变体都使用128位块大小,只有密钥大小不同。AES加密阶段的整体结构对于所有三个变体都相同,但对于128、192和256位变体,轮数不同(分别为10、12和14轮)。密钥调度对于每个变体是不同的。
更多详细信息可以在例如2020年2月5日的Avi Kak,Lecture8:AES:The AdvancedEncryption Standard,Lecture Notes on“Computer and Network Security”,中找到,该文件可在https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture8.pdf获得,在此通过引用并入本文。
因此,本领域技术人员将认识到,在一些实施例中,AES算法接受位块(例如,128、256、...)并应用替换和置换的序列。替换采用“S-box”,一种可逆非线性变换,它一次作用于8位,即如果执行字节替换。
有256个可能的8位数字,因此S-box可以被表示为256x256的置换矩阵,其中基于GF 28中的可逆性对映射有某些约束。这使得S-box适合于如本公开所建议的熵增强。
具体而言,可以使用与上述用于选择置换元素相同的技术来动态渲染S-box(参见图13)。特别地,常规的AES算法不是使用固定的S-box基于给定的8位输入字产生8位输出字,而是取给定的8位输入字并将其馈送到熵增强器,从而产生熵增强的8位输出字。熵增强器动态地选择M个置换元素(每个对应于256x256的置换矩阵)中的第k个置换元素并执行交换或矩阵乘法等,如前所述。有256!个可能的这种置换元素,但是只使用了M个。可以基于通常已经用于初始化AES加密块72的秘密S和/或种子来初始化这些M个置换元素,不同之处是现在它不再是常规的AES加密块。先前关于图6和图9中的初始化模块61讨论了置换元素的初始化。需要注意的是,GF(28)中执行逆乘法的置换操作的条件可能适用,这可能会限制可供选择的可行S-box的数量。
这产生动态的S-box,它是从完整的一组置换元素中选择的。在一些实施例中,选择是随机化的,即,对于选择第k个置换元素的方式存在非确定性或随机方面,其可以是随机化器的输出等。应该认识到的是,相同的S-box可以用于输入字的每个块;例如,如果块是16个连续的8位输入字,那么k可能对于16个连续的8位输入字保持不变。下一组8位输入字使用用k的下一个值选择的另一个S-box,依此类推。
由此,在AES的上下文中,如本文所公开的熵扩展可以用于增加AES密钥(例如,AES轮密钥)的熵和/或增加由其它常规AES加密使用的S-box的熵。当然,可以使用两个熵扩展器,每个目的一个。第一个可以定制为AES轮密钥的大小(例如,10位、12位、14位),第二个可以定制为S-box的大小(例如,8位),并且可以例如每16个字节更改置换元素。第一和第二熵扩展器因此具有其自己的M值(例如,M1和M2)和其自己的k值(例如,k1和k2)。
随机数生成
在本技术的另一个商业应用中,目标是生成比伪随机数的输入流更随机(即,具有更高熵)的伪随机数的输出流。同样在这种情况下,不需要与接收方共享秘密S,并且不需要在发送方设备12和接收方设备13之间进行协调。
因此,参考图12A,其示出了用于增强系统PRNG 80的熵的熵扩展器37,该系统PRNG80提供N位伪随机数y0、y1、...的流,产生N位伪随机数z0、z1、...的流。系统的细节显示随机化器39,其产生介于0和M-1之间的随机化值k,其中M>1。如已经描述的,随机化器39可以包括PRNG 41并且可以包括映射器42。交换核心51可以被配置为将N位输入数据字y0、y1、...转换成2N-元素稀疏输入位阵列并使用M个置换元素中的第k个置换元素处理2N-元素稀疏输入位阵列,以产生2N-元素稀疏输出位阵列。交换核心51还可以被配置为将N位稀疏输出阵列转换成N位输出数据字z0、z1、...,其然后由收集器52输出。当然,也可以实现熵扩展器37的软件版本,由此熵扩展器37执行2N-元素稀疏输入位阵列与M个置换矩阵中的第k个置换矩阵的矩阵乘法。
图12B是图12A的变体,其中随机化值k取自N位输入数据字33而不是随机化器39。具体而言,N位输入数据字33被馈送到映射器1200,其产生介于0和M-1之间的值k,其中M>1。就N位输入数据字33不是确定性的而言,值k是随机化的。在其它实施例中,可以使用产生值k的还有的其它方式。
本领域技术人员将认识到的是,术语“熵扩展器”源自具有N位香农熵的N位输入数据字33的熵的扩展。N位交换核心51(2N个输入和2N个输出)的使用具有log2(2N!)的香农熵,当N大时,其大约等于(N-2)*2N。这明显大于N位输入数据字33的N位熵。当交换核心由M个置换矩阵组成时,它的香农熵变为M*log2(2N!),当N大时,它大约等于M*(N-2)*2N。
没有描述或图示某些实施例的操作可能需要的某些附加元素,因为它们被认为在本领域普通技术人员的范围内。此外,某些实施例可以没有、可以缺少和/或可以在没有本文未具体公开的任何元素的情况下起作用。
在描述实施例时,为了描述而借助于特定术语,但这并不旨在限于如此选择的特定术语,并且应该理解的是,每个特定术语包括所有等效形式。
本领域技术人员将认识到的是,在不脱离所附权利要求所限定的本发明范围的情况下,其它修改是可能的。
Claims (53)
1.一种数字处理方法,包括:
获得N位输入数据字的流;
获得在0以上并且在M-1以下的范围内的值k,其中M>1;
至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个,以产生对应的N位输出数据字;以及
在网络上输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
2.如权利要求1所述的方法,其中至少基于M个置换元素中的第k个置换元素处理每个N位输入数据字以产生对应的N位输出数据字包括:
将N位输入数据字中的每一个转换成对应的稀疏2N-元素输入阵列;
用M个置换元素中的所述第k个置换元素处理每个稀疏2N-元素输入阵列,以产生稀疏2N-元素输出阵列;以及
将每个稀疏2N-元素输出阵列转换成对应的N位输出数据字。
3.如权利要求1所述的数字处理方法,其中k的值是随机化的。
4.如权利要求1所述的数字处理方法,其中获得k的值包括处理伪随机数发生器的输出。
5.如权利要求4所述的数字处理方法,其中获得k的值还包括处理时间戳。
6.如权利要求4所述的数字处理方法,其中获得k的值还包括处理会话ID。
7.如权利要求1所述的数字处理方法,还包括按N位输入数据字在N位输入数据字的流中出现的顺序获得k的值。
8.如权利要求1所述的方法,还包括将秘密S存储在非暂态存储介质中,其中产生值k是至少部分地基于秘密S来执行的。
9.如权利要求8所述的方法,其中值k由其种子为秘密S的伪随机数发生器产生。
10.如权利要求8所述的方法,其中值k由其种子为秘密S的散列的伪随机数生成器产生。
11.如权利要求1所述的方法,其中值k是通过将具有大于0和M-1之间范围内的值的伪随机数发生器的输出转换成介于0和M-1之间的值k来产生的。
12.如权利要求2所述的方法,其中M个置换元素中的每个置换元素包括被配置为执行2Nx2N阻塞交换操作的交换架构。
13.如权利要求12所述的方法,还包括连接到M个交换架构并且被配置为将2N-元素输入阵列路由到M个交换架构的第k个交换架构的调度器。
14.如权利要求13所述的方法,还包括连接到M个交换架构并且被配置为选择性地从第k个交换架构接收2N-元素输出阵列的收集器。
15.如权利要求1所述的方法,其中置换元素中的每个置换元素执行以相应的2Nx2N置换矩阵为特征的操作,并且其中所述方法还包括初始化置换元素。
16.如权利要求15所述的方法,其中初始化置换元素包括为置换元素中的每个置换元素选择不同的2Nx2N置换矩阵。
17.如权利要求16所述的方法,还包括将秘密S存储在非暂态存储介质中,其中产生所述值至少部分地基于秘密S来执行,并且其中秘密S用于针对不同置换元素随机化2Nx2N置换矩阵。
18.如权利要求8所述的方法,还包括将N位输出数据字的流发送到识别出的接收方。
19.如权利要求18所述的方法,其中秘密S在处理步骤之前为接收方已知的。
20.如权利要求19所述的方法,还包括在处理步骤之前与接收方共享秘密S。
21.如权利要求8所述的方法,还包括将N位输出数据字的流发送到识别出的接收方,接收方使用一组置换元素来解码N位输出数据字,接收方设备的所述一组置换元素和M个置换元素中的对应置换元素的特征在于置换矩阵及其转置。
22.如权利要求8所述的方法,还包括从识别出的发送方接收N位输入数据字的流。
23.如权利要求22所述的方法,其中秘密S与发送方共享。
24.如权利要求8所述的方法,还包括从识别出的发送方接收N位输入数据字的流,识别出的发送方使用了一组置换元素来编码N位输入数据字,发送方设备的所述一组置换元素和M个置换元素中的对应置换元素的特征在于置换矩阵及其转置。
25.如权利要求1所述的方法,还包括使用伪随机数发生器来产生N位输入数据字。
26.如权利要求25所述的方法,其中N位输出数据字的流比N位输入数据字的流具有更大的随机性。
27.如权利要求1所述的方法,还包括改变k的值,使得后续的N位输入数据字用置换元素中的不同置换元素进行处理,以产生后续对应的N位输出数据字。
28.如权利要求1所述的方法,还包括每Q个输入数据字改变k的值,使得用M个置换元素中的第一个置换元素处理每组Q个N位输入数据字,以产生对应的N位输出数据字,然后用M个置换元素中与置换元素中的第一个置换元素不同的第二个置换元素处理后续的一组Q个N位输入数据字阵列,以产生对应的N位输出数据字。
29.如权利要求28所述的方法,其中Q>1。
30.如权利要求2所述的方法,还包括改变每个输入数据字的k的值,使得每个对应的2N-元素输入阵列用置换元素中与之前不同的一个置换元素来处理。
31.如权利要求2所述的方法,还包括改变每个输入数据字的k的值,使得每个2N-元素输出阵列是从置换元素中与之前不同的一个置换元素获得的。
32.如权利要求8所述的方法,还包括周期性地改变秘密S。
33.如权利要求1所述的方法,其中M是2的整数幂。
34.如权利要求1所述的方法,其中M至少与64一样大。
35.如权利要求1所述的方法,其中值k由第一伪随机数发生器产生,所述方法还包括使用第二伪随机数发生器产生N位输入数据字。
36.如权利要求2所述的方法,其中用第k个置换元素处理每个2N-元素输入阵列以产生2N-元素输出阵列是用软件通过矩阵乘法来执行的。
37.如权利要求2所述的方法,其中用第k个置换元素处理每个2N-元素输入阵列以产生2N-元素输出阵列是基于唯一的交换映射用硬件通过交换架构来执行的。
38.一种数字通信系统,包括:
发送方设备,连接到网络并且被配置用于:
-获得N位第一数据字;
-获得在0以上并且在M-1以下的范围内的值k,其中M>1;
-至少基于M个第一置换元素中的第k个第一置换元素处理N位第一数据字中的每一个,以产生对应的N位第二数据字;以及
-在网络上向接收方设备释放N位第二数据字;以及
接收方设备,连接到网络并且被配置用于:
-接收N位第二数据字;
-获得在0以上并且在M-1以下的范围内的值j,其中M>1;
-至少基于M个第二置换元素中的第j个置换元素处理N位第二数据字中的每一个,以产生对应的N位第三数据字,j和k的值是同步的,使得当特定N位第二数据字由发送方设备的第k个置换元素和接收方设备的第j个置换元素处理时,k和j相同,第k个置换元素和第j个置换元素的特征在于彼此转置的置换矩阵;以及
-在网络上输出N位第三数据字或将N位第三数据字存储在存储器中。
39.一种数字处理方法,包括:
获得N位AES轮密钥的流;
获得在0以上并且在M-1以下的范围内的值k,其中M>1;
至少基于M个置换元素中的第k个置换元素处理N位输入AES轮密钥中的每一个,以产生对应的N位输出AES轮密钥;以及
使用N位输出AES轮密钥对输入消息执行AES加密。
40.如权利要求39所述的数字处理方法,其中为了对输入消息执行AES加密,对输入消息的输入字节执行替代变换,其中为了执行替代变换,所述方法包括:
获得在0以上并且在M2-1以下的范围内的第二个值k2,其中M2>1;
至少基于M2个第二置换元素中的第k2个置换元素处理消息的输入字节中的每个输入字节,以在输出字节的流中产生对应的输出字节;
输出包含输出字节的流的输出消息。
41.如权利要求40所述的方法,其中M2个第二置换元素被初始化以定义可逆变换。
42.如权利要求39所述的方法,还包括每Q个输入数据字改变k的值,使得用M个置换元素中的第一个置换元素处理每组Q个N位输入数据字,以产生对应的N位输出数据字,然后用M个置换元素中与置换元素中的第一个置换元素不同的第二个置换元素处理后续的一组Q个N位输入数据字阵列,以产生对应的N位输出数据字。
43.如权利要求42所述的方法,其中N=8且Q=16。
44.一种系统,包括:
存储指令的存储器;
网络I/O;以及
处理器,所述处理器访问指令并且基于所述指令被配置为获得N位输入数据字的流、获得在0以上并且在M-1以下的范围内的值k,其中M>1、至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个,以产生对应的N位输出数据字,以及经由网络I/O输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
45.一种系统,包括:
存储指令的存储器;
网络I/O;以及
处理器,所述处理器访问所述指令并且基于所述指令被配置为执行如权利要求1至35中的任一项定义的数字处理方法。
46.一种包括计算机可读指令的计算机可读介质,所述指令在由处理器执行时,使所述处理器执行数字处理方法,其中所述数字处理方法包括:
获得N位输入数据字的流;
获得在0以上并且在M-1以下的范围内的值k,其中M>1;
至少基于M个置换元素中的第k个置换元素处理N位输入数据字中的每一个,以产生对应的N位输出数据字;
在网络上输出N位输出数据字的流或将N位输出数据字的流存储在非暂态存储介质中。
47.一种包括计算机可读指令的计算机可读介质,所述指令在由处理器执行时,使所述处理器执行根据权利要求1至35中的任一项所述的数字处理方法。
48.一种熵扩展器,包括:
-交换核心,包括M个置换元素;
-调度器,被配置为接收在0以上并且在M-1以下的范围内的值k,其中M>1,所述调度器还被配置为向M个置换元素中的第k个置换元素路由N位输入数据字;
-交换核心被配置为至少基于M个置换元素中的第k个置换元素对N位输入数据字中的每一个执行处理,以产生对应的N位输出数据字;
-收集器,被配置为接收在0以上并且在M-1以下的范围内的值k,其中M>1,所述收集器还被配置为从M个置换元素中的第k个置换元素提取N位输出数据字并在网络上输出N位输出数据字或将N位输出数据字存储在非暂态存储介质中。
49.如权利要求48所述的熵扩展器,还包括扩展器,被配置为将N位输入数据字中的每一个转换成对应的稀疏2N-元素输入阵列;其中交换核心包括M个交换架构,交换核心被配置为用M个交换架构中的所述第k个交换架构处理稀疏2N-元素输入阵列,以基于对应的交换映射产生稀疏2N-元素输出阵列;以及压缩器,被配置为将每个稀疏2N-元素输出阵列转换成N位输出数据字中的对应一个。
50.如权利要求49所述的熵扩展器,其中交换架构中的每个交换架构被配置为执行2Nx2N阻塞交换操作。
51.如权利要求49所述的熵扩展器,其中调度器连接到M个交换架构并且被配置为将2N-元素输入阵列路由到第k个交换架构。
52.如权利要求51所述的熵扩展器,其中收集器连接到M个交换架构并且被配置为选择性地从第k个交换架构接收2N-元素输出阵列。
53.如权利要求48所述的熵扩展器,还包括初始化模块,被配置为初始化M个置换元素,置换元素中的每个置换元素被配置为执行以相应的2Nx2N置换矩阵为特征的操作。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962837370P | 2019-04-23 | 2019-04-23 | |
US62/837,370 | 2019-04-23 | ||
US201962913890P | 2019-10-11 | 2019-10-11 | |
US62/913,890 | 2019-10-11 | ||
PCT/CA2020/050417 WO2020215146A1 (en) | 2019-04-23 | 2020-03-31 | Enhanced randomness for digital systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113728583A true CN113728583A (zh) | 2021-11-30 |
CN113728583B CN113728583B (zh) | 2022-12-02 |
Family
ID=72940584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080030808.8A Active CN113728583B (zh) | 2019-04-23 | 2020-03-31 | 数字系统的增强的随机性 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20220224509A1 (zh) |
EP (1) | EP3959840A4 (zh) |
CN (1) | CN113728583B (zh) |
CA (1) | CA3135046C (zh) |
WO (1) | WO2020215146A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11323247B2 (en) | 2017-10-27 | 2022-05-03 | Quantropi Inc. | Methods and systems for secure data communication |
WO2022174122A1 (en) * | 2021-02-11 | 2022-08-18 | Mingtai Chang | Securing secrets and their operation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2001154A1 (fr) * | 2007-06-05 | 2008-12-10 | Nicolas Reffe | Procédé et dispositif de chiffrement/déchiffrement d'une séquence de données d'entrée |
EP3336693A1 (en) * | 2016-12-19 | 2018-06-20 | Intel Corporation | Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication |
US10158485B2 (en) * | 2015-09-24 | 2018-12-18 | Intel Corporation | Double affine mapped S-box hardware accelerator |
CN109388955A (zh) * | 2017-08-07 | 2019-02-26 | 英飞凌科技股份有限公司 | 用于实施加密运算的方法和设备及存储介质 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7515733B2 (en) * | 1993-11-18 | 2009-04-07 | Digimarc Corporation | Methods and arrangements employing digital content items |
US5862260A (en) * | 1993-11-18 | 1999-01-19 | Digimarc Corporation | Methods for surveying dissemination of proprietary empirical data |
US7113596B2 (en) * | 1993-11-18 | 2006-09-26 | Digimarc Corporation | Embedding information related to a subject of an identification document in the identification document |
US6813366B1 (en) * | 1995-05-08 | 2004-11-02 | Digimarc Corporation | Steganographic decoding with transform to spatial domain |
US6760463B2 (en) * | 1995-05-08 | 2004-07-06 | Digimarc Corporation | Watermarking methods and media |
US6580808B2 (en) * | 1995-09-25 | 2003-06-17 | Digimarc Corporation | Method and apparatus for discerning image distortion by reference to encoded marker signals |
US5734721A (en) * | 1995-10-12 | 1998-03-31 | Itt Corporation | Anti-spoof without error extension (ANSWER) |
GB9929364D0 (en) * | 1999-12-10 | 2000-02-02 | Microbar Security Limited | Improvements in or relating to coding techniques |
CA2327911A1 (en) * | 2000-12-08 | 2002-06-08 | Cloakware Corporation | Obscuring functions in computer software |
US7609695B2 (en) * | 2001-06-15 | 2009-10-27 | Industrial Technology Research Institute | Optimizing switching element for minimal latency |
JP2003069547A (ja) * | 2001-08-29 | 2003-03-07 | Fujitsu Ltd | マルチキャスト通信システム |
US7334125B1 (en) * | 2001-11-27 | 2008-02-19 | Cisco Technology, Inc. | Facilitating secure communications among multicast nodes in a telecommunications network |
JP3818263B2 (ja) * | 2003-01-28 | 2006-09-06 | 日本電気株式会社 | Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法 |
US20060123363A1 (en) * | 2004-12-07 | 2006-06-08 | Williams Colin P | Method and apparatus for automated design of quantum circuits |
JP4823717B2 (ja) * | 2006-02-28 | 2011-11-24 | 株式会社日立製作所 | 暗号通信システム、端末状態管理サーバ、暗号通信方法、および端末状態管理方法 |
US9485254B2 (en) * | 2009-02-03 | 2016-11-01 | Inbay Technologies Inc. | Method and system for authenticating a security device |
US9736149B2 (en) * | 2009-02-03 | 2017-08-15 | Inbay Technologies Inc. | Method and system for establishing trusted communication using a security device |
US9521142B2 (en) * | 2009-02-03 | 2016-12-13 | Inbay Technologies Inc. | System and method for generating passwords using key inputs and contextual inputs |
US8194858B2 (en) * | 2009-02-19 | 2012-06-05 | Physical Optics Corporation | Chaotic cipher system and method for secure communication |
US8953784B2 (en) * | 2011-11-02 | 2015-02-10 | Guang Gong | Lightweight stream cipher cryptosystems |
US8861725B2 (en) * | 2012-07-10 | 2014-10-14 | Infineon Technologies Ag | Random bit stream generator with enhanced backward secrecy |
GB2527604A (en) * | 2014-06-27 | 2015-12-30 | Ibm | Data encoding in solid-state storage devices |
FR3029719B1 (fr) * | 2014-12-04 | 2017-12-22 | Commissariat Energie Atomique | Methode de chiffrement a couches de confusion et de diffusion dynamiques |
WO2016187432A1 (en) * | 2015-05-19 | 2016-11-24 | Michael Fiske | Hiding a public key exchange in noise |
US10511581B2 (en) * | 2015-11-17 | 2019-12-17 | International Business Machines Corporation | Parallelizable encryption using keyless random permutations and authentication using same |
WO2017214060A1 (en) * | 2016-06-06 | 2017-12-14 | Agilepq, Inc. | Data conversion systems and methods |
US20180054301A1 (en) * | 2016-08-19 | 2018-02-22 | King Fahd University Of Petroleum And Minerals | Method and device for data encryption |
CA3073549C (en) * | 2017-10-27 | 2021-06-08 | Quantropi Inc. | Methods and systems for secure data communication |
US10476664B2 (en) * | 2017-10-27 | 2019-11-12 | Quantropi Inc. | Methods and systems for data protection |
-
2020
- 2020-03-31 CN CN202080030808.8A patent/CN113728583B/zh active Active
- 2020-03-31 WO PCT/CA2020/050417 patent/WO2020215146A1/en unknown
- 2020-03-31 US US17/605,999 patent/US20220224509A1/en active Pending
- 2020-03-31 CA CA3135046A patent/CA3135046C/en active Active
- 2020-03-31 EP EP20796086.5A patent/EP3959840A4/en active Pending
- 2020-10-08 US US17/066,273 patent/US11057193B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2001154A1 (fr) * | 2007-06-05 | 2008-12-10 | Nicolas Reffe | Procédé et dispositif de chiffrement/déchiffrement d'une séquence de données d'entrée |
US10158485B2 (en) * | 2015-09-24 | 2018-12-18 | Intel Corporation | Double affine mapped S-box hardware accelerator |
EP3336693A1 (en) * | 2016-12-19 | 2018-06-20 | Intel Corporation | Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication |
CN109388955A (zh) * | 2017-08-07 | 2019-02-26 | 英飞凌科技股份有限公司 | 用于实施加密运算的方法和设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11057193B2 (en) | 2021-07-06 |
US20220224509A1 (en) | 2022-07-14 |
CN113728583B (zh) | 2022-12-02 |
EP3959840A4 (en) | 2023-01-11 |
CA3135046C (en) | 2022-10-04 |
WO2020215146A1 (en) | 2020-10-29 |
US20210036840A1 (en) | 2021-02-04 |
EP3959840A1 (en) | 2022-03-02 |
CA3135046A1 (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Verma et al. | Performance analysis of RC6, Twofish and Rijndael block cipher algorithms | |
Borkar et al. | FPGA implementation of AES algorithm | |
US20080304664A1 (en) | System and a method for securing information | |
KR101328618B1 (ko) | 보안성을 향상시키는 순열 데이터 변환 | |
US20120121083A1 (en) | Encryption apparatus and method | |
CN113728583B (zh) | 数字系统的增强的随机性 | |
Saarinen | The STRIBOBr1 authenticated encryption algorithm | |
Joshy et al. | Text to image encryption technique using RGB substitution and AES | |
Pal et al. | Design of strong cryptographic schemes based on Latin squares | |
CN116980194A (zh) | 一种基于云边端协同的安全高效数据传输方法及其系统 | |
KR100710455B1 (ko) | 라인달 블록 암호 장치와 그 암호화 및 복호화 방법 | |
RU2738321C1 (ru) | Способ криптографического преобразования и устройство для его осуществления | |
Hallappanavar et al. | Efficient implementation of AES by modifying S-Box | |
Srihith et al. | Locking down big data: a comprehensive survey of data encryption methods | |
Azzawi | Enhancing the encryption process of advanced encryption standard (AES) by using proposed algorithm to generate S-Box | |
Freyre et al. | Block ciphers with matrices operating alternately over columns and rows | |
Mani et al. | Modified DES using different keystreams based on primitive pythagorean triples | |
Ramya et al. | Implementation and Analysis of Feistel and SPN Structured Ciphers-CLEFIA and PRESENT | |
Kumar et al. | Implementation of AES algorithm using Verilog | |
CN116633529B (zh) | 采用派生密钥增强白盒sm4密码算法的方法及设备 | |
Nayana et al. | VLSI implementation of AES Encryption/Decryption Algorithm using FPGA | |
Rohiem et al. | FPGA implementation of reconfigurable parameters AES algorithm | |
Naik et al. | Comparison of Different Encryption Algorithm and Proposing an Encryption Algorithm | |
Mohan et al. | Improving the Diffusion power of AES Rijndael with key multiplication | |
JPH0918468A (ja) | 暗号通信装置及び暗号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40061261 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |