CN111801670A - 操作在公共计算机上加密数据的代码的安全执行技术 - Google Patents

操作在公共计算机上加密数据的代码的安全执行技术 Download PDF

Info

Publication number
CN111801670A
CN111801670A CN201880089671.6A CN201880089671A CN111801670A CN 111801670 A CN111801670 A CN 111801670A CN 201880089671 A CN201880089671 A CN 201880089671A CN 111801670 A CN111801670 A CN 111801670A
Authority
CN
China
Prior art keywords
bit
gates
data
gate
reversible
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201880089671.6A
Other languages
English (en)
Inventor
E·姆希奥罗
C·卡蒙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Boston University
University of Central Florida Research Foundation Inc UCFRF
Original Assignee
Boston University
University of Central Florida Research Foundation Inc UCFRF
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Boston University, University of Central Florida Research Foundation Inc UCFRF filed Critical Boston University
Publication of CN111801670A publication Critical patent/CN111801670A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

在公共资源上安全处理加密数据的技术,包括:接收第一数据,第一数据表示可逆q比特门的序列,包括用于解密的第一段,用于对解密数据进行操作的第二段,以及用于对结果解密数据进行加密的第三段。第二数据表示规则用于将对输入N比特字的至少一个共享比特进行操作的两个q比特门的第一序列,替换为产生相同的输出N比特字的一个或多个q比特门的第二序列。第二数据用于:将门从第一段传播一段距离进入第二段之中或之外;以及,将门从第三段传播一段距离进入第二段之中或之前。上述过程产生了可逆门的混淆序列。基于门的混淆序列的混淆指令被发送到公共资源。

Description

操作在公共计算机上加密数据的代码的安全执行技术
背景技术
通过对数据进行加密并利用强大的公共资源(例如云数据存储和云计算)来存储加密后的数据,通常可以使数据对公众保密。但是,当存储的数据量非常大时,例如以Terabits的顺序(Tb,1Tb=1012比特),如果必须将大部分加密数据返回本地安全处理器进行处理,则会损失一些效率。类似地,如果操作涉及巨大的计算资源,即使是相对较少的数据,则在强大的公共资源(例如云处理器)上运行,而不是在计算能力相对有限的安全计算机上运行也将是有利的。然而,为了解密数据,强大的公共资源上的处理器会公开加密方法并揭示底层数据。
发明内容
提供了在不安全但潜在地能力强大的公共资源上安全地处理加密数据的技术。
在第一组实施例中,一种在第一(例如,本地和安全)处理器上执行的方法包括:接收第一数据,该第一数据表示可逆的q比特门(q-bit gate)的序列,包括用于解密置换加密数据以产生解密数据的第一段,用于对解密数据进行操作以产生一个或多个结果解密数据的第二段,以及用于使用置换加密对结果解密数据进行加密以产生置换加密结果数据的第三段。该方法还包括存储第二数据在计算机可读介质上,第二数据表示的规则用于将对输入N比特字的至少一个共享比特进行操作的两个q比特门的第一序列,替换为产生相同的输出N比特字的一个或多个q比特门的不同第二序列。进一步地,该方法还包括利用所述第二数据,将至少一个q比特门从第一段传播J个门的距离到第二段的q比特门之内或之后,以及将至少一个q比特门从第三段中传播K个门的距离到第二段的q比特门之内或之前,从而产生可逆q比特门的混淆序列。进一步地,该方法还包括发送基于逆q比特门的混淆序列的混淆指令给第二处理器(例如,不安全或云处理器,或具有不同访问权限的处理器分区)以用于执行。
在第一组的一些实施例中,该方法还包括存储第三数据在计算机可读介质上,第三数据将第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联。在这些实施例中,该方法还包括利用第三数据,以将可逆q比特门的混淆序列转换为第二处理器可执行的混淆代码指令。然后,发送混淆指令包括发送第二处理器可执行的混淆代码指令。
在第一组的一些实施例中,该方法还包括存储第三数据在计算机可读介质上,第三数据将第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联。在这些实施例,接收第一数据包括:接收第二处理器可执行的代码指令,用于对加密数据进行操作以生成一个或多个结果解密数据;以及,利用第三数据,以将第二处理器可执行的、用于对加密数据进行操作以生成一个或多个结果解密数据的代码指令转换为用于对加密数据进行操作以生成一个或多个结果解密数据的可逆q比特门的序列。
在第一组的一些实施例中,该方法还包括存储合并数据在计算机可读介质上,合并数据表示的规则用于将对输入N比特字进行操作以产生输出N比特字的可逆q比特门的一个或多个序列中的每一个序列,替换为产生相同的输出N比特字的一个或多个可逆k比特门,其中,3<k≤N。在这些实施中,该方法还包括利用所述合并数据,将可逆q比特门的混淆序列中的一个或多个可逆q比特门的特定序列替换为可替换特定序列的k比特门。
在这些实施例的一些中,该方法还包括存储第三数据在计算机可读介质上,第三数据将所述不同第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联。在这些实施例中,该方法还包括存储合并代码数据在计算机可读介质上,合并代码数据将一个或多个k比特门中的每一个与执行于所述不同第二处理器的一个或多个代码指令进行关联。在一些实施例中,该方法还包括:利用所述合并代码数据,将所述k比特门转换为所述混淆代码指令的至少一部分;以及利用所述第三数据,将所述可逆q比特门的混淆序列中的剩余可逆q比特门转换为所述混淆代码指令的剩余部分。在这些实施例中,发送混淆指令还包括发送所述第二处理器可执行的混淆代码指令。
在第一组的一些实施例中,J大于N且K大于N。
在第一组的一些实施例中,每个可逆q比特门为包括单个目标比特和q-1个控制比特的控制门,用于基于q-1个控制比特的值以及输入到q-1个控制比特的值确定单个目标比特的值。
在第一组的一些实施例,q∈{1,2,3})。
在第一组的一些实施例中,第二处理器不同于第一处理器。在第一组的一些实施例中,对第二处理器的访问不同于对第一处理器的访问。
在其他组实施例中,计算机可读介质或系统被配置为执行上述方法的一个或多个步骤。
通过下面的详细描述,仅通过说明许多特定的实施例和实施方式,包括为实现本发明而设想的最佳模式,其他方面,特征和优点将显而易见。其他实施例也能够具有其他和不同的特征和优点,并且可以在各种明显的方面修改其几个细节,所有这些都不脱离本发明的精神和范围。因此,附图和描述本质上应被认为是说明性的,而不是限制性的。
附图说明
在附图中,通过示例而非限制地示出实施例,附图中相同的附图标记指代相似的元件,其中:
图1示出了使用存储在公共资源上的加密数据的示例系统的块图;
图2A示出了根据实施例对N比特字进行操作的示例3比特门的块图;
图2B示出了根据实施例对N比特字进行操作的一对示例性3比特门的块图;
图2C示出了根据实施例产生结果与图2B中的3比特门产生结果相同的示例性的一系列3比特门的块图;
图2D示出了根据实施例用于在公共资源上对存储在公共资源上的加密数据进行安全处理的示例系统的块图;
图3示出了根据实施例用于安全地在公共资源上处理存储在公共资源上的加密数据的示例方法的流程图;
图4A至图4C示出了根据实施例的示例性程序的块图,其中,所述示例性程序被混淆为对7比特字进行操作的一系列门,以根据给定的特定输入字x生成特定的输出字y;
图5示出了根据实施例将第一3比特门传播经过第二3比特门的示例方法的流程图,该方法例如应用在图3所示方法的一个步骤中;
图6示出了根据实施例在所有三个比特上碰撞的一对示例3比特门的块图;
图7示出了根据实施例在两个比特上碰撞的一对示例3比特门的块图;
图8示出了根据实施例在两个比特上碰撞的一对示例3比特门的块图;
图9示出了根据实施例用于当3比特门在两个比特上碰撞时产生碎片门的一组示例交织置换的块图;
图10示出了根据实施例当3比特门在两个比特上碰撞时产生的一组示例碎片门集合的块图;
图11示出了根据实施例用于当3比特门在两个比特上碰撞时产生碎片门的表格的示例性构建条件的块图;
图12示出了根据实施例当3比特门在两个比特上碰撞时,示例性4比特算子被分解以确定碎片门的块图;
图13A示出了根据实施例当3比特门在两个比特上碰撞时,几组示例性碎片门c、d、e和f的块图;
图13B示出了根据实施例当3比特门在两个比特上碰撞时,碎片门c、d、e和f的一组示例性真值表;
图14示出了根据实施例当3比特门在一个比特上碰撞时,引入交换门的八种示例方式的块图;
图15示出了根据实施例当3比特门在一个比特上碰撞时,产生重要碎片门的一组示例步骤的块图;
图16和图17示出了根据实施例引入中间加密和解密步骤以通过碰撞门进一步混淆程序的块图;
图18示出了根据实施例用于产生混淆程序的三组示例步骤的块图;
图19示出了根据实施例将3比特门合并为包括更多比特的多个门以进一步序淆程序的示例的块图;
图20示出了根据实施例用于2比特乘法函数f的3比特门的一组示例序列的块图;
图21示出了根据实施例将中间加密和解密块插入图20所示的函数f中的示例的块图;
图22示出了根据实施例利用图21所示的多个中间加密来混淆2比特乘法函数f的示例性步骤的块图;
图23A至图23C示出了根据实施例加密/解密门向功能代码移动的示例性距离的块图;
图24A至图24C示出了根据实施例用于替代3比特门的示例性控制门的块图;
图24D示出了根据实施例由合并或碰撞产生的示例性6比特控制门的块图;
图25示出了根据实施例用于替代3比特门的示例性控制门的简化示意的块图;
图26示出了根据实施例用于传播第一控制q比特门经过第二控制q比特门的示例方法的流程图,该方法例如应用在图3所示方法的步骤中;
图27A至图27D示出了根据实施例具有共享目标或控制比特的控制门的示例性碰撞的块图;
图28A和图28B示出了根据实施例具有不同的非重叠控制比特的控制门的示例性碰撞的块图;
图29A至图29D示出了根据实施例控制门的示例性碰撞的块图,其中一个门的首比特与另一个门的一个尾比特重叠;
图30A至图30D示出了根据实施例控制门的示例性碰撞的块图,其中两个门的首比特与其他门的一个尾比特重叠;
图31示出了根据实施例产生用于简单功能的混淆程序的一组示例性步骤的块图;
图32示出了可在其上运行基于本发明的实施例的示例性计算机系统的块图;和
图33示出了可在其上运行基于本发明的实施例的示例性芯片组的块图。
具体实施方式
本发明提出了一种用于安全地处理公共资源上的加密数据的方法和系统,例如,利用诸如云之类的公共资源上的优越的处理能力、效率或弹性或以上综合能力。在下面的描述中,出于解释的目的,阐述了许多具体细节以利于对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实施本发明。在其他情况下,以块图形式示出了公知的结构和设备,以避免本发明晦涩难懂。
尽管列出宽泛范围的数值范围和参数是近似值,但在特定的非限制性示例中列出的数值应尽可能精确地报告。但是,任何数值固有地包含一些误差,这些误差是由于在撰写本文时在各自的测试测量中发现的标准偏差而导致的。此外,除非从上下文中可以清楚地获知,否则本文中给出的数值具有由最低有效数字给出的隐含精度。因此,值1.1表示1.05至1.15之间的值。术语“约”用于指示以给定值为中心的更宽范围,并且除非从上下文中能清楚获知,否则隐含在最低有效数字附近的更宽范围,例如“约1.1”表示从1.0到1.2的范围。如果最小有效数字不清楚,则术语“约”表示两倍,例如,“约X”表示0.5X到2X之间的值;例如,约100表示50到200之间的值。此外,应理解本文公开的范围覆盖其包含的任何和所有子范围。例如,“小于10”的范围为包括最小值0和最大值10之间的任何和所有子范围,即,最小值等于或大于0,最大值等于或小于10,例如1到4。
下面结合示例性功能,示例性的3比特门和用于替代一对三比特门的示例性可选方案,对本发明的实施例进行描述。然而,本发明不限于该上下文。在其他实施例中,遵循本文描述的方法,还可实施其他功能、q比特门以及替代方案。
1、综述
图1是示出用于使用存储在公共资源上的加密数据的示例系统的块图。加密数据140存储在一个或多个不安全的存储设备188上。在所示实施例中,使用置换加密对加密数据140进行加密。在置换加密中,通过以置换密钥的方式将比特在明文中的位置和值转换为在密文中的位置和值,从而将明文的N比特字转换为密文的N比特字。密文是置换加密数据140。每个N比特明文字都指向一个N比特密文字。两个不同的N比特明文字不会转换为同一个N比特密文字。基于对置换密钥的理解,密文可以转换回明文并用于计算。可能的置换数量是2N!,因此,每个N比特密文包含的比特数N越大,加密数据140越安全。
一个或多个不安全的服务器182可以直接或通过不安全通信网络180访问不安全的存储设备188。如果不访问置换密钥,则网络180中的这些服务器182和设备无法访问明文。安全计算系统110还可以通过本领域中的各种已知方法,例如防火墙(未示出),来访问不安全的存储设备188。安全计算机系统110受到与加密数据140中密文相对应的明文的授权用户的物理和通信控制。安全计算机系统110的用户知道数据112中包括一个或多个置换加密参数的置换密钥。
尽管在一个或多个不安全的服务器182上使用加密数据进行处理更能提高计算能力或效率,但是,这样可能会将包括数据112的置换密钥公开给在不安全的服务器182或网络180上运行的进程。因此,加密数据140的用户通常被约束为通过网络180从不安全的存储设备188中检索加密数据140的部分或全部,以至少用于在安全系统110上的临时本地存储。该检索过程由检索/存储加密数据模块115执行,并负责标识要检索的加密数据。如果检索标准取决于以密文形式存储的信息,则将会在本地传输和存储大量数据,而这些数据对于功能的执行不是必须的。
明文功能程序模块113用于对明文执行操作。模块114执行以下过程:解密密文(使用模块116),操作明文(使用模块113),以及使用模块118对结果加密。模块116和模块118都取决于加密参数112。模块115用于将结果存储回不安全的存储设备188。如果存储位置取决于存储为密文的信息,则未被模块113的明文功能处理更改的大量数据将通过网络180传输并存储在不安全的设备188上。例如,想要检索社会保险号码(SSN)是以“123”开头的群众,则必须先解密SSN,然后才能确定是否要对数据进行操作。由于不能在不安全的设备上执行此操作,因此必须将所有数据先下载到本地设备,至少解密完所有的SSN,然后再对所需数据,即下载数据中的一小部分,进行操作。
由此看出:1)可以通过一个或多个q比特门(q∈{1,2,3})的序列来实现置换加密;2)也可以通过一个或多个q比特门的序列来将输入与输出进行一一映射(假设功能程序模块113具有这种双射功能);以及,3)因为相同输入会产生相同输出的q比特门不止一组,所以解密、明文功能和加密q比特门可以用与其三者操作不直接对应的一个不同的门的序列来替代,用于混淆这些操作。可以生成实现门的不同序列的混淆代码,但这些代码不会揭示所作的操作。因此,可以将混淆代码传送到不安全的服务器182上以用于执行。这种代码可以利用不安全的服务器182和不安全的设备188的计算能力、效率或弹性,却不会泄露置换密钥。在本发明中,一系列门也称为电路。因此,同在计算的电路模型中一样,将对数据执行预期功能的程序转换为对门的描述。逻辑门可用q比特可逆门表示,如3比特Tofolli门。
图2A示出了根据实施例,对N比特字进行操作的示例3比特门的块图。来自输入N比特字202a的三个比特位置,分别由X 203x、Y 203y和Z 203z表示,用椭圆表示的零个或多个比特位置将其分隔或在其之前或在其之后,被传递到可逆3比特门中201。将结果传递到输出N比特字202b中的三个相同比特位置。但是这三个比特位置的内容可能已被置换。例如,在N比特字202a的三个比特X、Y、Z处的8个值A、B、C(如000、001、010、011、100、101、110、111)被改变为N比特字202b中的8个值A'、B'、C'(如分别为110、111、100、101、000、001、011、010)的置换。在其他的3比特门中,将生成8个值的其他置换。对于任何三个位置(X,Y,Z),都有23!=40,320种可能的3比特门。在示例部分,与图2A类似,3比特门用对应于可操作比特位置的线上的实心点表示。
图2B示出了根据实施例,对N比特字进行操作的一对示例性3比特门(204a,204b)的块图。该图描绘了输入N比特字202c,3比特门204a,3比特门204b和输出N比特字202d。水平线段表示十二个连续的比特位置,若干椭圆表示之后没有比特位置或还有多个比特位置。将3比特门204a移过3比特门204b,例如,为了将与明文功能相关的3比特门混淆入与解密相关的3比特门,这种情况称为门的移动。如果两个门204a和204b至少共享一个比特,则移动会使门产生包括一组一个或多个不同门,称为“碎片”门,这些碎片门都不能被识别为原始门204a和204b。在这种情况下,称为门的“碰撞”。下面以一般术语在“示例”部分中更详细地描述了解决“碰撞”的规则。通常,解决碰撞的代价是增加3比特门的总数。这个广义的概念在图2C中示出。
图2C示出了根据实施例的一系列3比特门的块图,该系列3比特位门产生的结果与图2B中两个3比特门204a和204b产生的结果相同。这不是适用于特定3比特门204a和204b的实际解决结果,只是用来表示门204a和204b在求解中已被消耗,且被四个不同的“碎片”3比特门202c、204d、204e和204f替代。
这里,门Ga已经移动经过门Gb。例如在向前移动中,当左侧的门Ga要移动经过右侧的门Gb时,在门Ga和门Gb共享一条或两条比特线的情况下,两者都会发生碰撞。在不共享比特线的情况下,通过交换门Ga和Gb的顺序从而实现门的移动。在共享所有三条比特线的情况下,首先将门Ga和Gb合并为单门,然后该单门继续门Ga的移动。在碰撞中,原始门Ga和Gb被等效的碎片门序列取代;碎片门的数量取决于共享比特线的数量:当共享两条比特线时,最多四个碎片门;当共享一条比特线时,最多七个碎片门。将门Ga移过门Gb后,生成在最右边的门称为Ga的后代,包括碰撞产生的最右边的碎片门。如果最初是想将门Ga移过其他门后移至门Gb的右侧,则门Ga的后代门或碰撞后的其他碎片门将立即经过该门而移至原始门Gb的右侧,例如Gc。如果想要将门继续向右移动,则重复此过程,直到门Ga或至少其一个后代移过其右侧的预定数量的门为止。当右侧的门Gb向后移动以移过左侧的Ga门或更远时,遵循上述相同的步骤,只是移动相反。
在多个实施例中,移动门的概念在合并过程中用于通过将与解密或加密相关的门移过与明文功能相关的门来混淆代码。
图2D示出了根据实施例,用于在公共资源上对存储在公共资源上的加密数据进行安全处理的示例系统的块图。如图1所示,网络180,不安全的存储设备188;置换加密数据140,置换加密参数数据112,明文功能程序模块113,模块114,以及检索/恢复加密数据模块115。
安全计算机系统210与系统110不同,因为系统210包括表230,模块232,模块233,模块234,模块235,模块236和模块250。表230将不安全的服务器282可执行的每一个源代码或目标代码指令与一个或多个q比特门的序列相关联,这些q比特门输入作为源代码或目标代码指令的相同的一个或多个N比特字时,输出相同的一个或多个N比特字。
图4A至图4C示出了根据实施例的示例性程序的块图,其中,示例性程序被混淆为对7比特字进行操作的一系列门,以根据给定的特定输入字x生成特定的输出字y。在图4A中,包括解密模块E-1,功能模块f和加密模块E1的程序P作用于由多个比特(如7比特)组成的字。使用基于可逆逻辑门,例如3比特Toffoli门,构造的置换方案,对数据库中所有加密数据进行加密。可逆计算确保了整个电路的结果为采用n(此处n和N可交换使用)比特输入x并返n比特输出y=P(x)的置换,其中P(x)是作用于2n个可能的n比特输入x的空间上的置换。使用可逆q比特门从简单置换生成2n维比特空间上的置换。由于将明文数据x'加密为密文数据x的程序E(x)利用可逆门表示,因此可以通过逆运算得到用于解密数据的程序E-1,通过使用程序中各个门的逆,以及以相反方向读入。这种逆运算生成置换的逆,x’=E-1(x),用于解密数据。另外,将对明文数据x’执行预期功能的程序f转换为门,如在计算电路模型中一样,或由编译器为中央处理单元(CPU)生成或现场可编程门阵列。然后,以q比特可逆门表示逻辑门。在一些实施例中,将最终电路,如合并/混淆E-1·f·E,编程到FPGA中。由于电路是在硬件中实现的,因此电路对输入数据处理得更快。在其他实施例中,可以使用其他加密方案,例如高级加密标准(AES),来定义E和E-1,只要这些加密方案可以利用可逆门来实现。
如图4B所示,通过将程序的三个阶段组合来构造可逆程序P:用于解密数据的模块E-1,用于执行预期功能的模块f,以及用于加密数据的模块E1。由于每个模块都是用可逆q比特门表示,所以整体上来看,组合程序P也是由可逆q比特门组成。组合的可逆程序是一个置换,它输入n比特密文字x然后输出密文字y=P(x),其中,P(x)为作用在2n个可能的n比特输入x的空间上的置换,如图4B所示。
在一些实施例中,优选地,将各个目标代码指令与一个或多个q比特门进行关联,因为目标代码往往包含较少数量的命令,这样表中的条目总数可小于与高级复合源代码指令相关的表中的条目总数。而且,目标代码多在处理芯片级寄存器上运行,因此,N比特可以与寄存器中的比特数匹配,从而简化映射。源代码可用任意语言编写,然后利用适用于不安全的服务器的任意已知编译器进行编译,生成映射到q比特门序列的目标代码。
关于整个程序(或置换)P的3比特可逆门的描述不是唯一的。还有其他3比特门序列可对输入x生成相同的最终结果P(x),但机器中间态都不同。图4C示出了根据实施例,对于任何程序P(x)可以实现的示例性不同的中间态的块图。在所示实施例中,原始程序P生成m1个q比特门的序列Ga (1),每个门最多作用于指定的三个比特(x,x,x),其中α=1,...,m1,下标i、j、k分别表示对于相同α,每个字中的不同n比特,每个下标x表示所指比特的值。当给定相同输入x产生相同输出y的程序还包括mp个q比特门Gb (p)的程序P(P)(x),每个门最多作用于指定的三个比特(xi’β,xj’β,xk’β),其中β=1,...,mp,给定相同的输入x,每个生成相同的输出y。图4C示出了当p=2和3时的两个替代程序,但也不限于此。
给定任何一个程序P(P),都无法确定原始程序P(1)。选择与原始程序P(1)共享少量门序列的程序P(0)作为淆程序P(0),在其中无法确定与解密相关的步骤或加密数据。因此,混淆程序P(0)可以在共享的公用计算机上运行,而无需丢弃用于解密存储在公用存储器中密文的密钥。为了找到生成P(0)的门的新序列,可将三个部分E-1、f和E1合并,使得不能再区分它们。合并包括将门从一个分段移动到另一分段。但是仅仅移动门是不够的;因为这些门经过彼此,以深入到另一分段的主体中。
程序P(0)被传送到服务器上以用于执行。云服务提供商能够执行请求的计算,从加密的数据库中读取数据并输出加密后的数据。但是云服务器提供商无法识别整个计算过程中正在执行的操作,因为尽管最终输出是相同的,但是中间步骤在计算的大多数或所有步骤中都产生不同的结果。例如,客户希望在数据库中查询所有满足布尔表达式的条目。服务器运行混淆代码,从加密的数据库中查询并将查询结果写入加密的输出文件中,然后将结果返回给客户端。客户端在安全计算机上解密服务器返回的结果。
在一些实施例中,如下详细描述,多个q比特门合并成一个k比特门(3<k≤N)。在这些实施例中,表230包括将各个源代码或目标代码指令与一个或多个k比特门相关联的条目或指令,这些k比特门输入相同的一个或多个N比特字后输出相同的一个或多个N比特字。在这些实施例的部分实施例中,表230还包括将每个k比特门与一个或多个q比特门的序列相关联的条目。因此,可以根据需要将q比特门替代为相应的k比特门。例如,表230包括将一系列q比特门转换成一个k比特门的规则或指令,这对于本领域普通技术人员而言是简单过程,无需过多的实验。在一些实施例中,q比特门被连续组合直到产生一个k比特门。
模块232设置为将源代码或目标代码转换为q比特可逆门的序列。模块232使用表230中的至少一些数据并将每个q比特门标记为是属于解密或明文功能或加密。在一些实施例中,如下面更详细地描述的,模块232将明文功能分割成多个段,并且在每个段之后增加加密处理,以及在下一个段之前增加对应的解密处理。明文功能的这种分割可以在将源/目标代码转换q比特门的序列之前或之后进行。在这些分段的明文功能实施例中,每个q比特门被标记为与明文功能或加密/解密过程相关联。在一些实施例中,对加密q比特门进行标记以将其与解密q比特门区分开。模块232的输出是模块233,该模块233包括与模块114等效的一系列q比特可逆门。在一些实施例中,解密过程或加密过程或两者均由q比特门定义(例如,置换加密参数112包括执行解密操作的一系列q比特门或/和执行加密操作的一系列q比特门)。在这些实施例中,模块232不需要将任何源或对象解密代码或加密代码或两者转换为q比特门。在一些实施例中,只需通过将实现解密的q比特门的顺序进行反转来实现加密,并且参数112仅包括一个用于解密或加密的序列。
模块234设置为将q比特门从一个或多个加密或解密过程移动至明文功能段的q比特门之中的位置或之外的位置。在本文中称为合并过程。在一些实施例中,合并过程包括三个步骤。在第一步中,解密段中的门向前传播经过明文功能段中的门,从而生成第一阶段的合并段。在第二步中,加密段中的门向后传播经过第一步生成的门,从而生成第二步门的合并序列。在第三步中,将此序列的多个q比特门合并为一个k比特门(k>3)。门传播包括门经过位于其右侧或左侧门的运动,分别依赖于是向前传播还是向后传播。
在步骤一开始时,将解密段中最右边的门(例如,Gz)向前传播经过J个门到达明文功能段之中或之外。J称为传播距离。如前所述,运动经过J个门意味着Gz后代(“移动”门Gz或离其最远的碰撞碎片门)也移动经过原来Gz右边的J个门。此过程继续,将解密段中第二个最右边的门(例如,Gy)传播经过J'个门到达明文功能段之中或之外。在该传播中,第二个最右边的门(Gy)还移动经过由第一个最右边的门(Gz)的传播而遗留下的碎片门(如果有的话)。朝向目标J'的每个遗留下的门都计数为1,该目标J'可以小于、等于或大于J。J'等于或小于J的好处是可以用较少的计算有效地完成混淆。J'大于J的好处是可以实现更彻底的混淆。在一些实施例中,J'值是随机选择的,其围绕J的值变化,以增加反混淆的难度。重复上述过程,直到解密段中的所有门至少部分地传播到明文功能段中或外,从而完成解密段与明文功能段的合并。
在步骤二中,将加密段与先前解密和明文功能段合并所得到的门的序列进行合并。该过程与步骤一中过程类似,但为反向进行。开始时,将加密段中最左边的门(例如,Ga)向后传播经过解密-明文功能合并段中的K个门。如前所述,运动经过K个门意味着Ga后代(移动门Ga或其最远的碰撞碎片门)也移动经过原来Ga左边的K个门。此过程继续,将加密段中第二个最左边的门(如Gb)向左传播经过K’个门,包括经过由第一个最左边的门(Ga)的传播而遗留下的门。朝着目标K'的每个遗留下的门都计数为1,该目标K'可以小于、等于或大于K。类似于上述J和J',K'等于或小于K的好处是可以用较少的计算有效地完成混淆。K'大于K的优点是可以实现更彻底的混淆。在一些实施例中,K'值是随机选择的,其围绕K的值变化,以增加反混淆的难度。当加密段中所有门至少部分传播到左侧合并的解密/功能门中时,步骤二结束。
在一些实施例中,方法还可被修改为:在将右侧最左边的门移入左侧(R→L),或将左侧最右边的门移入右侧(L→R)。下面更详细地介绍了将多个q比特门合并为一个k比特门的可选步骤3。
结合图5和图26以及下述示例对自动传播和碰撞过程进行详细描述。模块234的输出是模块235,该模块235包括与模块114等效的q比特可逆门(以及零个或多个k比特门)的混淆序列,但是在其中不能推断出原始解密或最终加密过程,因此不能确定数据112中的加密参数值。
模块236设置为将q比特可逆门的混淆序列转换为混淆源代码或目标代码。模块236使用表230中的至少部分数据。在一些实施例中,如下面更详细描述的示例中,模块236首先基于直接计算或基于存储在表230中的关联将至少部分q比特门合并为一个k比特门。使用在表230中存储或编码的k比特门与源代码或目标代码指令之间的关联,将k比特门转换为源代码或目标代码。在一些实施例中,对于本领域普通技术人员而言,可直接将k比特门转换成一个或多个源代码或目标代码指令,无需基于规则、一个或多个指令的多次实验。模块236的输出是模块250,模块250包括等同于模块114的混淆源代码或目标代码。如图所示,模块250可以被安全地传送到具有模块115的不安全的服务器282上,以利用服务器282的能力、效率或弹性对加密数据140进行操作。
虽然在图1和图2D中将过程、设备和数据结构描绘为特定设置的整体图,但只是为了描述方便,因此,在其他实施例中,一个或多个过程或数据结构或其部分可以不同的方式设置在相同或不同的主机上,或在一个或多个数据库中,或被省略,或在相同或不同的主机上包括一个或多个不同进程或数据结构。
图3示出了根据实施例,用于安全地在公共资源上处理存储在公共资源上的加密数据的示例方法的流程图。虽然在图3以及后续图5和图26中描绘了以特定顺序执行的步骤,但只是为了描述方便,因此,在其他实施例中,一个或多个步骤或其部分以不同顺序执行,或者在时间上重叠,串行或并行地执行,或者被省略,或者添加一个或多个其他步骤,或者以某种方式的组合更改了方法。
在步骤301,生成表230。可通过手动地或自动生成,当生成完成时,作为表230的结果存储在计算机可读介质上。表230中的条目至少将各个源代码或目标代码指令与一个或多个q比特门进行关联。在一些实施例中,源代码或目标代码是用于现场可编程门阵列(FPGA)的指令。在一些实施例中,从源/目标代码到q比特门的序列使用的关联与从q比特门的序列到源/目标代码使用的关联不同。例如,在前向关联的情况下,精简指令集处理器(RISP)中的每个目标代码指令都转换为最少q比特门;而在后向关联的情况下,每个q比特门均转换为最有效的RISP指令,例如SHIFT函数,以执行单个q比特门。
在使用合并的一些实施例中,表230中包括的条目用于从一个或多个源代码或目标代码指令中的每一个转换为k比特门(3<k≤N)。对于本领域普通技术人员而言,无需过多实验就可以将q比特或k比特门转换为源/目标代码指令。以最不高效的方式,它需要分别传递(23)和(2k)个指令。在不使用合并的实施例中,表230中可以省略涉及k比特门的条目。
在步骤303中,为模块115生成指令以从加密数据结构140中检索输入密文并将结果密文存储在数据结构140中。此过程可以基于SQL查询通过手动或自动完成。
在步骤305中,生成用于模块114的指令以解密密文,应用明文功能并加密所得的明文以产生结果密文然后进行存储。在一些实施例中,步骤305包括将功能分成几个功能段,并在每个段之后添加新的加密指令,以及在下一个段之前添加对应的解密指令。在将目标代码来回转换为q比特门的一些实施例中,步骤305包括编译执行功能(段)的源代码,并且可选地编译前而解密段和随后的加密段,以生成目标代码,然后在步骤307中将其转换为q比特门。
在步骤307中,表230用于将在步骤305中产生的指令转换为q比特门的序列。在一些实施例中,不使用表,而是操作由熟练的程序员生成的门编译器将源/目标代码转换为q比特门。在一些实施例中,使用编译器和表230的组合。在一些实施例中,使用用于FPGA的编译器或在FPGA上实现门,或该两者方式。在一些实施例中,步骤307由模块232执行。步骤307的输出是q比特门的模块233。
在步骤309中,将与明文功能对应的q比特门分解成多个段,并且在段之间添加加密和解密门。在一些实施例中,如下所述,步骤309包括确定包括在每个段中的门的数量,并且与步骤311中确定的传播深度有关。穿透深度(例如,J,J',K或K',或组合)的确定需要综合考虑,因为深度越大,碰撞越多,而碰撞越多,产生的门也就越多。增加深度有利于增加混淆度,但是生成过多的门会导致代码过长且效率低下。为了确定段的数量,有利的是对功能进行足够好的混淆,但不会由碰撞而产生过多的门。单个段将实现最大混淆,但是如果解密和加密段中的所有门都移动经过功能段,则会导致门的数量成指数级增加。将功能分为太多段(例如,功能段中的每个门对应一个段)会导致混淆不清。一个较好的平衡是,段的数量大约是N比特字中的比特数(用符号
Figure BDA0002637632280000111
表示)。但是段的最佳数量取决于功能的类型。例如,功能通常包括很多门,比如
Figure BDA0002637632280000112
例如,乘法功能。但并非总是如此。一些功能可能包括较少的门,比如
Figure BDA0002637632280000113
如加法功能,在这种情况下,无需将F(x)细分为多个段即可完成较理想的合并也不会导致指数级增长。事实上,这就是为什么提议将F(x)分成多个段,每个段具有
Figure BDA0002637632280000114
个门的原因。然后,可以在不引起电路长度指数增长的情况下在本地进行合并。对于具有
Figure BDA0002637632280000115
个门的F(x)函数,使用约
Figure BDA0002637632280000116
段。在示例部分中介绍了确定每个段的门数的示例。为了进一步混淆反转混淆,在段长度和穿透深度之一或两者中添加随机元素是有利的。
如果在步骤305中已经在源/目标代码程度上完成了对明文功能的分段,则省略步骤309。例如,步骤307和309由图2D中的模块232执行。在一些实施例中,采用已被写为q比特门的序列的加密/解密段(而不是使用源/目标代码级的加密/解密段)。
在步骤311中,将解密所涉及的q比特门向前传播经过明文功能或其当前段所涉及的q比特门。可根据获得的穿透力与门碰撞增加的门数量来权衡移入明文功能的距离。定义距离J(例如,门的数量J)以将解密q比特门向前移入明文函数(段)之中或之外。确定该距离的示例方法在“示例”部分进行了描述。结合图5所示的通用的可逆3比特门,以及图26所示的控制门,利用下面描述的特定过程来介绍如何解决与现有的可逆q比特门的碰撞,并在“示例”部分中进行了详细说明。
在步骤313中,将加密所涉及的q比特门向后传播经过明文功能或其当前段所涉及的q比特门。可根据获得的穿透力与门碰撞增加的门数量来权衡移入明文功能的距离。定义距离K(例如,门的数量K)以将加密q比特门向后移动入明文函数(段)之中或之外。确定该距离的示例方法在“示例”部分进行了描述,K=J。结合图5所示的通用可逆3比特门以及图26所示的控制门,利用下面描述的特定过程来介绍如何解决与现有的可逆q比特门的碰撞,并在“示例”部分中进行了详细说明。
在一些实施例中,使用其他分组。例如,将解密和功能段集中到一个组(A组)中,然后将门从加密段(B组)移入A组中,从而得到C组。
在步骤315中,确定是否存在q比特门的另一个解密-明文功能段-加密序列。如果是,则已经生成模块235的混淆q比特序列;并返回到步骤311。如果否,则转到步骤317。例如,由步骤311、313和315描述的循环由图2D中的模块234执行。
在步骤317中,将混淆的q比特门模块235中的q比特门的序列替代为(组合成)一个或多个k比特门。将多个q比特门合并为一个k比特门相对简单,其中k>3。例如,程序根据给定q比特门的序列生成k比特门。在这些实施例中,表230将源/目标代码指令与q比特门(两种方式)进行关联,以及将k比特门与源/目标指令(一种方式)进行关联。在一些实施例中,不使用合并;步骤317被省略。
在步骤321中,使用表230将经混淆代码的q比特门和k比特门转换为源代码或目标代码,以产生混淆源/目标代码模块250。例如,步骤317和321由图2D中的模块236执行。在一些实施例中,如果合并发生在发送模块235中的门序列之前,则模块236可以在不安全的服务器上实现。这将利用云上可用的计算能力。
在步骤323中,将混淆代码250以及数据检索和结果存储模块115发送到不安全的服务器182。在步骤325中,使不安全的服务器执行检索/存储模块115和混淆代码250。例如,将执行这些模块的命令以消息形式发送给不安全的服务器。
2、示例性实施例
2.1通用3比特门
图5示出了根据实施例,将第一3比特门传播经过第二3比特门的示例方法的流程图,例如应用在图3所示方法的步骤311或步骤313中。本文中使用的表示法是,作用在3比特b1、b2和b3上的门g写为G,其作用在n比特字符串上,但仅对3比特b1、b2和b3有效。作用于n比特字x的三门程序P可以表示为P(x)=G3(G2(G3(x)))或P=G3·G2·G1。因此,更一般地,对于m个3比特门,P=Gm·Gm-1·Gm-2...G3·G2·G1。此外,程序P可被视为行的有序列表l:
Figure BDA0002637632280000121
这样,程序P成为一组指令,每条指令具有由行号l给定的序号以及由xil、xjl、xkl和在指定的3比特上的置换g1。每行都有n(n-1)(n-2)x8!种可能的指令,其中一些指令导致相同的结果生成(因为一个指令可以对3比特重新排序并选择相应的置换g)。消除这种精简性以获得不同指令数的一种方法是选择xil<xjl<xkl,从而给出
Figure BDA0002637632280000131
种非精简指令,其中符号
Figure BDA0002637632280000132
并读取a项在每次取b项的组合数。
碰撞规则。现以最简单的情况来说明门的运动,即两个连续的门作用于三比特的不同集合,因此,直接交换,即Gl·Gl-1=Gl-1·Gl。就程序行而言,如果两个连续的门不共享任何比特位,即,如果{xil,xjl,xkl}∩{xi(l+1),xj(l+1),xk(l+1)}=0,
则可以在指令列表中交换l行和l+1行。连续门的交换可以持续进行下去,直到交换的两个连续门发生碰撞,即当连续的门共享一个、两个或三个比特。
碰撞的概率可通过下式估算。对于随机分布的门,两个连续门共享0、1、2或3个比特的概率分别表示为p0、p1、p2和p3,由以下未编号的等给出。
Figure BDA0002637632280000133
Figure BDA0002637632280000134
Figure BDA0002637632280000135
Figure BDA0002637632280000141
需要注意的是,对于较大的n值,p1≈9/n,p2≈18/n2,p3≈6/n3,以及p0=1-p1-p2-p3≈1-9/n。一个门直接通过1个门的概率为p0 l=(1-9/n)l≈e-9l/n,或等效地,不借助碰撞的平均穿透深度约为l0=n/9。
为了充分地加密n比特字,需要n个门或更多阶门。因此,没有碰撞的穿透深度是程序加密段的一部分;通常不足以混淆解密或加密段。为了将门进一步推入相邻段中涉及碰撞的处理方法,例如,在碰撞之前将信息混合入经过一对碰撞门的多个门中。图5描述了一种将信息移动通过通用3比特门的碰撞门的方法。这里,两个相互碰撞的门称为第一3比特门和第二3比特门,或者门Ga和门Gb。
在步骤501中,确定第一3比特门和第二3比特门共享的比特位置的数量。如果没有共享的比特位置,则转到步骤503。在步骤503中,第一3比特门可以无碰撞地移动经过第二3比特门,并且不生成额外的门。然后转到步骤551。
在步骤551中,判断第一门是否已经传播得足够远,例如,经过由目标门数量(如J或K)指示的门数量。步骤551包括递增已传播距离(例如,对传播距离递增1)。如果传播距离小于目标门数量,则转到步骤553;否则,过程结束。
在步骤553,确定下一个第一门和下一个第二门。例如,在生成了门Gc至门Gf后,在2比特碰撞中使门Gb移动经过Ga,询问“Ga是否已经过J(或K)个门?”需要注意的是,在共享两比特的碰撞中,当Ga移动经过Gb时,Ga被后代门Gf取代,然后其移动经过电路中的下一个门。共享一比特的碰撞与此类似,除了碰撞存在7个碎片门(如Gc、Gd、Ge、Gf、Gg、Gh、Gi)。在这种情况下,后门Gi取代Ga以进一步移动。可以理解的是,如果穿透方向相反(Gb移动经过Ga),则后代门Gc将在两种类型的碰撞(共享两比特的碰撞和共享一比特的碰撞)中取代Gb。然后,返回步骤501,以查看下一个第一门和第二门共享的比特位置数量。
如果在步骤501中确定三个比特位置全被共享,则转到步骤511。在步骤511中,两个3比特门可以用(组合成)另一个能实现相同结果的3比特门替代。图6示出了根据实施例,在所有三个比特上碰撞的一对示例3比特门的块图。所得结果为单个3比特门。在这种情况下,碰撞后3比特门的数量减少了;但传播距离仍递增1。需要注意的是,有8!种方式将得到的3比特门分解为作用在相同比特上的两个3比特门。由于产生了可能性树,因此难以撤消由碰撞导致的合并。然后,转到步骤551,进行上述操作。
如果在步骤501中确定两个比特位置被共享,则转到步骤521。可以采用多种方法可以将门Ga和Gb转换为不混淆的Gc和Gd。其中之一是在两个门之间的两个比特中插入量规转换。图7示出了根据实施例,在两个比特上碰撞的一对示例3比特门Gg1和Gg2的块图。该过程不会产生任意效果,因为1)没有改变电路的拓扑结构;2)只影响两个门之间的阶跃,因为意先前门序列中的Ga、Ga-1对将被抵消(Ga出现倍增Ga-1)。而是,步骤521至步骤541中描绘的过程提供了更大的混淆。
在步骤521中,首先用四个3比特门(分别指定为Gc、Gd、Ge、Gf)和两个交织门Bk和Bl来替代两个3比特门(分别将第一和第二指定为Ga和Gb)。交织门是5比特门。一旦确定就可以转换为两个或更多个容易确定的3比特门。替代门的设置请参见等式1和图8。
Gb·Ga=Gf·Bl·Ge·Gd·Bk·Gc (1)
图8示出了根据实施例,在两个比特上碰撞的一对示例3比特门的块图。
在步骤523中,从图9所示的6种交织置换中选择B1和Bk。图9示出了根据实施例,用于当3比特门在两个比特上碰撞时产生碎片门的一组示例交织置换的块图。B0、B1和B2是它们自己的逆,但B3、B4和B5并非如此。Bk和Bl可以从这六个及其逆中任意选择。为方便起见,可以在图8中选择k和l,以确定碰撞碎片,使得Bl=Bk-1(上标-1表示沿相反方向穿过门),在这种情况下,将置换移动经过门Gd和Ge产生的门Gd’和Ge’仅有三种可能的配置。图10示出了根据实施例选择Bl=Bk-1,当3比特门在两个比特上碰撞时产生的一组示例碎片门集合的块图。
在步骤525中,从6个预设表中的一个特定表中随机选择两个边界3比特门Gc和Gf,其中,每个预设表包括840组门。当选择了交织门Bk,为了确定门Gc、Gd、Ge和Gf,首先从预先构建的表中随机选择门Gc和Gf。随机选择的优点是可防止对所得的门进行逆操作。六个表中的每一个包含8!/(2!4!)=840种不同类型的3比特可逆门。这些表用于将门的可能集合(Gc,Gd,Ge,Gf)限制为非等价的门,并简化对门Gd和Ge的搜索。下面列出了6个预设表中每个门必须满足的条件。图11示出了根据实施例,用于当3比特门在两个比特上碰撞时产生碎片门的表格的示例性构建条件的块图。
表1至表3包括对比特x2、x3、x4起作用的门{Gci},使得Gci≠Gcj·g,i、j=1,…,840。在表1中,g是比特x4上的置换与作用于比特x2和x3上的2比特门的乘积。在表2中,g是比特x3上的置换与作用在比特x2和x4上的2比特门的乘积。在表3中,g是比特x2上的置换与作用于比特x3和x4上的2比特门的乘积。表4至表6包括作用于比特x1、x2、x3的门{Gfi},使得Gfi≠g·Gfj,i、j=1,…,840。在表4中,g是比特x1上的置换与作用在比特x2和x3上的2比特门的乘积。在表5中,g是比特x2上的置换与作用于比特x1和x3上的2比特门的乘积。在表6中,g是x3上的置换与作用在比特x1和x2上的2比特门的乘积。这些表可以以任何方式生成。例如,在一些实施例中,通过反复试验,即通过遍历所有3比特门(8!门)来生成表,并对于每个门删除所有等同于2比特门(4!=24种可能性)和1比特门(2!=2种可能性)的乘积的门。因此,总的来说,每张表需要检查8!x 4!x 2!=1,935,360种情况。当前的处理器完全可以进行处理(例如,每张表花费的时间小于一个小时)。
交织门类型选择与选择的表格之间的对应关系如下。对于B0和B1,从表1中随机选择门Gc以及从表4中随机选择门Gf。对于B2和B3,从表2中随机选择门Gc以及从表5中随机选择门Gf。对于B4和B5,从表3中随机选择门Gc以及从表6中随机选择门Gf。
在步骤527中,其余两个3比特门Gd和Ge用于求解等式2。
Ge·Gd=O=Bk·Gf1·Gb·Ga·Gc-1·Bk-1 (2)
需要注意的是,只有两个比特重叠的乘积Ge·Gd对应于标为O的一个4比特操作门。图12示出了根据实施例,当3比特门在两个比特上碰撞时,示例性4比特算子O被分解以确定碎片门Gd和Ge的块图。在步骤527中,确定是否找到等式2的求解。如果否,则返回步骤525,以随机选择不同的两个边界门Gc和Gf,并重复步骤527中的尝试来求解其余门Gd和Ge。如果找到了求解结果,则转到步骤541。通常会找到许多门Gd和Ge对。根据经验,从2500个任意门Ga和Gb开始,1.25%具有一种(Gc、Gd、Ge、Gf)求解结果,31.80%具有2至10种求解结果,49.16%具有11至100种求解结果,11.76%具有101至1000种求解结果,而6.04%具有1000多种求解结果。由于规范对称性Gb·Ga=Gb·g·g-1·Ga,并非所有(8!)2对Ga和Gb门都需要测试,其中g为一个门,其包含作用于Ga和Gb共享比特上的两比特置换以及作用于Ga或Gb未共享比特上的一比特置换。
为了进一步说明步骤521至527,以图13A中的门Ga和Gb为例。图13A示出了根据实施例,当3比特门Ga和Gb在两个比特上碰撞时,几组示例性碎片门Gc、Gd、Ge和Gf。图13B中示出了门Ga至Gf对应的真值表,用其下标标记。图13B示出了根据实施例,当3比特门Ga和Gb在两个比特上碰撞时,碎片门Gc、Gd、Ge和Gf的一组示例性真值表。
在步骤541中,基于两个共享比特位置,判断步骤521是否由步骤501进入的。如果是,则求解碰撞,并且转到步骤551,以查看是否需要进一步的传播。否则,转到步骤542,如下所述。
如果在步骤501中确定仅共享一个比特位置,则转到步骤531,然后继续进行以利用上面针对具有2个共享比特比特置的门的解决方案。在步骤531中,在第一门(Ga)之前添加交换门S1,使得与第二门(Gb)共享两个比特。交换门是一种在不改变值的情况下交换两比特的位置的2比特门,其可以通过简化的3比特门来实现,该简化的3比特门不会改变一比特的值或位置。在门Ga之后以及门Gb之前添加反向交换门S1-1。需要注意的是,S1-1=S1。所得的门由等式3a给出:
Gb·Ga=Gb·S1-1·S1·Ga=Gb·S1-1·Ga'·S1=Gb·S2·Ga'·S1 (3a)
其中Ga’是基于Ga的门,但是由于交换门S1的作用而与Gb具有两个比特的重叠。通过移动门Ga之前的S1来形成Ga’。一个SWAP门位于电路内部,将其命名为S2;另一个移动到外部,将其命名为S1。但两者都用于交换相同的两个比特。可以通过交换门定义中的比特将Ga转变得到Ga’。对于选定的门,有四种插入SWAP的方式,具体取决于需要交换的比特以及如何交换。因此,总共有八种方式处理碰撞。
图14示出了根据实施例,当3比特门在一个比特上碰撞时,引入交换门的八种示例方式的块图。在所示实施例中,门Ga作用于比特x1、x2和x3,门Gb作用于比特x3、x4和x5,因此两者在比特x3上发生碰撞。(这些比特不需要彼此相邻)。在下文中,针对将门Ga的第一比特与门Gb的第二比特的交换,仅讨论第一种方式的实现过程;当然过程也适用于其他七种方式。图15示出了根据实施例,当3比特门在一个比特上碰撞时,产生重要碎片门的一组示例步骤的块图。对于使用S1=S2交换第一比特和第四比特的示例,图14中示出的第一种交换方式产生了图15中描绘的步骤1的结果。
在步骤533中,在Ga’和反向交换门S2之间增加另一对交换门S3和S4=S3-1。两个交换门交换和撤消交换两个碰撞比特。结果用等式3b表示。
Gb·Ga=Gb·S2·S4·S3·Ga'·S1 (3b)
该步骤描述中图15所示实施例的步骤2中。两者中的第一个S3与Ga'合并形成Ga”,第二个S4与反向交换门S2合并形成Gp。
Gb·Ga=Gb·Gp·Ga”·S1 (3c)
其中,Ga”=S3·Ga',且Gp=S2·S4。
结果包括三个门Ga”、Gp和Gb,每两个门共享两个比特位置。该步骤描述在图15所示实施例的步骤3中。
然后,转到步骤521,针对两个比特的碰撞,用四个门和两个交织门替代人为生成的门Gp和原始门Gb,参见等式4a和4b。
Figure BDA0002637632280000171
其中,A=Bl·Ge·Gd·Bk (4b)
该步骤描述在图15所示实施例的步骤4中。
但是,如果在步骤527中得到求解结果Gf·A·Gc·Gf,并且转到步骤541,则测试的答案为否,原始门Ga和Gb没有共享2个位置;然后,转到步骤542。
在步骤542中,确定两比特碰撞是否是由原始一比特碰撞产生的第一次碰撞,例如Gp和Gb。如果是,则转到步骤543。
在步骤543中,使由第一次求解的两比特碰撞产生的第一门Gc与将原始门Ga与交换门S3进行交换后剩下的门Ga”发生碰撞。如上所述的,针对两个比特碰撞,又增加了四个门和两个交织门,参见等式5a和5b。为方便起见,将外门称为Ga”’而不是Gf’,以反映门Ga引入的信息的最深渗透。
Figure BDA0002637632280000181
其中,B=Bl′·Ge′·Gd′·Bk′ (5b)
该步骤描述在图15所示实施例的步骤5中。
在步骤542中,如果确定两比特碰撞不是由原始一比特碰撞产生的第一次两比特碰撞,则转到步骤545,以处理步骤543中结果等式5a。
在步骤545中,剩余的交换门S1与门A′·Ga″·B′·Gc″碰撞,直到碰撞影响到步骤543中等式6所示碰撞产生的外门Gf。两比特交换门S1与三比特门Gc’的碰撞可被视为简化的、与Gc’有两比特重叠三比特门G1,因此可以使用两比特碰撞法。事实证明,对于这种碰撞,结果很清晰:交换门S1“穿过”3比特门,实际只是交换比特线。交换门S1移动通过各个门,对每个门进行修改,直到碰撞到门Gf。通过构造,门S1和Gf共享两条比特线。因此,S1可以被Gf吸收,将后者转换成Gf’,其与Gf作用在相同的比特线。
Gb·Ga=Gf’·A’·Ga””·B’·Gc” (6)
需要注意的是,对于置换A和B,以及A’和B’,它们的两个3比特门具有三种可能的配置(对于所示示例性实施例,在图15中被描述为插入),其取决于两比特碰撞期间的随机选择。该过程的最终结果是建立了一个包含七个3比特门的序列,该序列与原始门Ga和Gb等效。
然后,转到步骤551,如上所述,以查看是否需要进一步的传播。
在一些实施例中,对加密数据进行操作的混淆代码是不需要混淆的整个程序的一部分。在这些实施例的部分,混淆代码被嵌入在未混淆的指令之间。
多重加密。在上述步骤309中,在碰撞门之前,在代表函数f的所有门中间歇地或周期性地添加解密和加密门。此处以3比特门为例,介绍此步骤以及产生的混淆。如果使用n(表示为
Figure BDA0002637632280000182
个门(通常对门Ga的比特ia、ja、ka起作用)的顺序进行加密,那么以下方法是有利的。如图16所示,将函数f分解为乘积,f=fp·fp-1…f2·f。图16和图17示出了根据实施例,引入中间加密和解密步骤以通过碰撞门进一步混淆程序的块图。为了周期性加密,如果f包括ng个门,则每个子函数fr设置为包括ng/p个门,r=1,...,p-1,其中fp包含所有剩余的门。周期性加密用如下等式7表示。
E’·f·E-1=(E’·fp·Ep-1 -1)…(Er·fr·Er-1 -1)…(E2·f2·E1 -1)·(E1·f1·E-1) (7)
如图17所示,可以为每个r=1,...,p-1选择不同的加密/解密置换Er、Er -1
需要注意的是,每个块(Er·fr·Er-1 -1)本身就是对数据进行解密-计算-加密的计算示例。如果每一个都被混淆,那么它们的乘积也将被混淆。混淆每个块意味着根据每个块的输出不能推断出加密/解密片段或运算fr
可以采用多种方式来混淆块(Er·fr·Er-1 -1),其中Er-1 -1和Er均包含an个门。这里,a是常数
Figure BDA0002637632280000191
(出于安全目的,a设置为3或4足够),并且假定fr包含bn~ng/p个门。图18示出了根据实施例,用于产生混淆程序的三组示例步骤的块图。图18示出了将表达式Er·fr·Er-1 -1合并到混淆电路Cr的步骤:(i)将Er-1 -1和fr合并为块Ar,并将门从作为块Br的Er移动通过该块Ar(对应于图3中的步骤313);(ii)将fr和Er合并为块Ar,并将门从作为块Br的Er-1 -1移动通过该块Ar(对应于图3中的步骤311);或(iii)将门从作为块Br的Er移动通过作为Ar的fr,得到合并块Ar’,然后将门从作为块Br的Er移动通过块Ar(对应于图3中的步骤311和313)。
这里参照图23a至图23C详细说明方案(i)。图23A至图23C示出了根据实施例,加密/解密门向功能代码移动的示例性距离的块图。很容易将该解释扩展到其他方案。
按照方案(i),可以将系统重组为Er·(fr·Er-1 -1),在Er中具有an个门,以及在(fr·Er-1 -1)中具有(a+b)n个门。混淆是通过(fr·Er-1 -1)的合并来完成的,称其为Ar侧,称Er为Br侧。等式8a给出了门的数量或Ar的长度:
l(Ar)=(a+b)n. (8a)
在该示例中,如图23A所示,Br中的每个门,标记为Gbr,i=1,2,...,an,被以如下方式推入Ar侧中。取Br中最接近Ar和Br之间接口的门(在迭代的第一步中为门Gb1),将其推入Ar,一直到Ar电路的起点(Ar相对于接口的相反侧,如,直到移动影响到Ar中的第一个门)。结果(在所有碰撞之后)为在一侧的电路Ar (1)和在另一侧的电路Br (1),包括门Gb2,...,Gban。当门Gb1被推入Ar的远侧时,发生门碰撞,使得Ar的大小由l(Ar)增加到Ar (1)的大小l(Ar (1))。
增加的长度值l(Ar (1))-l(Ar)可根据下式估算。上面得到的无碰撞穿透深度为l0=n/9,因此将发生
Figure BDA0002637632280000201
次碰撞。每次碰撞都会给电路增加(δ-1)个门,其中δ=6表示一个比特碰撞,δ=3表示两个比特碰撞。(δ=0表示三个比特碰撞,因为两个碰撞的门合并为一个门)。如上所述,由于p1比p2大n倍,p2比p3大n倍,因此一个比特碰撞发生的概率更高。
因此,当n足够大时,Ar侧增加的长度如等式8B所示。
Figure BDA0002637632280000202
当K的预设值大于电路长度l(Ar)时,碰撞门将移动通过整个电路,使得电路的总长度增加到l(Ar (1))。对于其他门,重复此操作,直到第个m门的总长度l(Ar (m))等于或大于K。然后,其余未移动的门仅移动固定长度K。这样,可以确定电路的长度不会随寄存器N(=n)的大小呈指数增长。
在传播Gb1后,类似于对Gb1的操作,将Gb2推入Ar (1),但并不推到Ar (1)的端点。如图23B所示,距Ar (1)的端点距离为
Figure BDA0002637632280000203
时停止。这样,将门Gb2被推入Ar (1)中穿过的门数,与在第一步中将门Gb1推入Ar时穿过的门数相同。电路Ar (2)的长度满足等式8c:
Figure BDA0002637632280000204
该过程遍历B中的所有门。将门Gbi推入电路Ar (i-1),并在距其端点(i-1)Δl的位置停止,从而得到电路Ar (i),长度满足等式8d:
Figure BDA0002637632280000205
在步骤313的结束处,如图23C所示,已将Br内部的所有an个门推入Ar侧,实现了将两个电路合并成电路Cr。合并电路的最终长度根据等式8d的递归可获得,如等式8e所示:
l(Ar (an))=l(Ar)+anΔl (8e)
由于Br侧的门列表已排空到A侧,或等效地,l(Br (an))=0,因此合并电路Cr的总长度由等式8e给出。如上定义,用(a+b)n替代Ar的长度,根据等式8b或8c或8d中定义的Δ1,即可得出合并电路Cr的长度,以用于表示当前段,如等式8f所示:
l(Cr)=(a+b){1+9a(δ-1)}n (8f)
需要注意的是,由于被碰撞的Gb’的最终停止位置之间彼此间隔A1=K,因此Br中的门沿合并电路C均匀地布置。
在图3所示的循环311至315中,对所有段进行上述合并,r=1,...,p。通过表示
Figure BDA0002637632280000214
和Ep=E′,此表示法可扩展到第一次解密和最后一次加密。现在可以计算出等效于E′·f·E-1的完整混淆电路的长度。可以看到,(Er·fr·Er-1 -1)块中的每一个块都会产生由等式8f给出长度的混淆电路Cr。回想上面,f包括ng个门,并且假定每个fr都包括bn~ng/p个门。因此有
Figure BDA0002637632280000211
个块。因此,整个混淆电路的长度l(obfuscate)是等式8f给出的Cr的长度乘以因子
Figure BDA0002637632280000212
由于原始电路中加密和解密部分的长度为an,以及原始函数f的长度为ng,因此原始电路的总长为2an+ng。等式9a给出扩展因子Z,通过该扩展因子可以扩展电路长度。
Figure BDA0002637632280000213
假设ng>>2an,则在表达式(2an+ng)中可以忽略2an,从而将剩余项ng提出。因此,等式9a简化为等式9b。
Figure BDA0002637632280000221
对于a~3、b~1和δ-1~5的代表值,扩展因子为z~544。因此,在该示例性实施例中,将E'·f·E-1合并为3比特可逆门的不可区分的单个集合会产生约500的开销因子。但此开销远小于最近提出的其他同态方法的开销。对于许多重要的应用程序,开销因子500是合理且可以接受的。
合并。在步骤317中,如上所述,多个3比特门被组合成至少一个k比特门,k>3。在使用门碰撞规则后,可以将多个3比特门组合成一个或多个更大的k比特门中的每一个中,以进一步混淆电路。通过确定作用在k比特线上的多个3比特门的乘积,来对2k个可能的输入状态进行置换。但是,反向地,将2k个输入的置换分解为由作用在一组k条线上的多个3比特门产生的多个较小置换的乘积较为困难。在本发明中,将3比特门相乘以形成其内部成分难以确定的k比特门的过程称为“门合并”。
可以采用不同方式收集要合并在一起的多个3比特门的集合。一个例子是增生,其过程如下。首先选择电路中某处的一个3比特门,将其作为集群的第一个门;然后,在其左侧或右侧搜索与之共享至少一比特的第一个邻居,将其作为第二个门添加到集群中。集群中两个门使用的比特线数量最多为5条,其中3条是第一个门的3条比特线,另外最多2条是未被第一个门使用而被第二个门使用。通过在集群中各个门的左侧或右侧搜索与它们至少共享一比特的第三个门,来继续增长集群。当第三个门加入集群时,最多跨越7条比特线。重复上述过程,直到集群跨越k条比特线。图19中示了合并过程的一个示例。
图19示出了根据实施例,将3比特门合并为包括更多比特的多个门以进一步序淆程序的示例性的块图。图19示出了将十五个相邻的3比特门合并为三个相邻门A、B和C,其中,A是9比特门,B和C是8比特门。k比特门群集中的3比特门的最小数量为hmin=(k-1)/2。集群中所有基本3比特门的乘积是作用在k比特的2k个状态空间上的置换P。可以计算该乘积并存储为包括2k个数字P(z)的列表,其中z=0,…,2k-1。
将置换P恢复或分解为基本3比特置换的乘积是一个难题。通过穷尽搜索通过相乘生成的k比特置换P的3比特门的所有可能组合,至少需要等式10给出的步数S。
Figure BDA0002637632280000222
k为奇数。举例来说,当k=11bits时,可以将置换P与211个字的列表一起存储,其中每个字最多11比特,如存储在小于5KB的存储器中。(需注意的是,3比特门的合并可以将多个门的预处理操作传递给服务器,以将多个3比特门的乘积结果存储在内存中)。但是,将置换P分解为因子需要较大的计算量。要将置换完整地分解为原始的3比特成分,将需要1032个步骤。当k=21bits时,可以使用一个小于7MB的内存存储置换P,但是通过穷尽搜索以将P分解为基本的3比特门,将需要多达1071个步骤。
还需要注意的是,k比特门或2k个状态上的置换在分解为3比特运算的乘积时,具有不同的因式分解。即使找到因式分解,也并不代表能够恢复混淆。如果找到的置换与上述方案中使用的置换不完全相同,则实际上进一步混淆了运算。
乘法示例。一个将两个数字x和y相乘的函数f,其结果是x·y。利用可逆门实现此函数可能需要辅助比特位。图20示出了根据实施例,用于2比特乘法函数f的3比特门的一组示例序列的块图。2比特乘法电路基于受控纹波加法器,利用六个Toffoli T和四个R,
Figure BDA0002637632280000231
3比特可逆门。插图显示了R和
Figure BDA0002637632280000232
门分解为CNOT门和Toffoli门。图20使用了五个辅助比特。
当x和y作为输入时,辅助比特设置为零,电路输出x、x·y和一个设置为0的辅助比特。
为了加密数据和运算,加密函数E和E’各自包含约30个3比特可逆门。函数f被分解为三块部分函数f1、f2和f3,每块定义电路的一个子集,并在每对连续的部分函数之间插入一个加密和解密块,即在f1和f2之间插入E1和E1 -1,以及在f2和f3之间插入E2和E2 -1。图21示出了根据实施例,将中间加密和解密块插入图20所示的函数f中的示例的块图。
然后对块进行合并。图22。最后一步包括将相邻的3比特门的集合合并为k比特门,其中k大到足以使碰撞无法实现的程度。图22示出了根据实施例,利用图21所示的多个中间加密来混淆2比特乘法函数f的示例性步骤的块图。将块A1=f1·E-1与B1=E1合并在一起,生成电路C1。同样地,将块A2=f2·E1 -1与B2=E2合并,将块A3=f3·E2 -1与B3=E1合并,分别生成电路C2和C3。组合电路C3·C2·C1=P,生成混淆电路。
2.2控制门
在一些实施例中,使用如具有q-1个控制比特的CNOT控制门,其中q∈{1,2,3,…}。在本发明中,控制门是指单个目标比特(也称为首比特,或门的头部)的值是零个或多个控制比特(也称为尾比特,或门的尾部)的值的函数。尾比特指示基于控制比特的二进制输入而应用于首比特的逻辑。任何尾比特的二进制输入都不会改变,而只是传递到下一个门。q比特控制门的使用提供了一组更简单的碰撞规则。由一组可逆3比特门组成的任意表达式都可以重构为仅由控制门组成的一组门。因此,在图3所示方法300的步骤301中,在一些实施例中,每个源/目标代码指令在表中与一个或多个控制门相关。本领域技术人员理解如何根据控制门编写大部分基本功能。
图24A至图24C示出了根据实施例,用于替代3比特门的示例性控制门的示意块图。单个目标比特由内部带有垂直十字的圆圈表示。控制比特可以是“真”型逻辑(实心圆)或“假”型逻辑(空心圆)。假型逻辑表示仅当相应比特的值为0时才激活控制。最简单的控制门是“非”门(参见图24A),仅作用于一比特:x1→x1',即翻转目标比特的状态。(这里的撇号表示对比特值求反)。需要注意的是,“非”门中没有控制比特。如图24B所示,CNOT是具有一个控制比特和一个目标比特的控制门。对于真型逻辑,x1→x1(输出与输入相同,适用于所有尾比特)以及
Figure BDA0002637632280000241
而对于假型逻辑,对于所有尾比特都是x1→x1,以及
Figure BDA0002637632280000242
符号
Figure BDA0002637632280000243
表示异或(XOR)操作。当x1或x2中的任意一个为真且两个不同时为真时,表达式
Figure BDA0002637632280000244
为真。Toffoli门在尾部具有两个控制比特以及在头部具有一个目标比特,它包括图24C所示的四个变体。例如,在一种情况下,当两个控制比特均为真型逻辑时,则x1→x1和x2→x2(对于所有尾比特都一样),以及
Figure BDA0002637632280000245
即x3与x1和x2的乘积进行异或。如果任何控制比特属于假型逻辑,则该比特的值在XOR和乘法运算中取反。需要注意的是,可逆控制门使用XOR功能定义新的首比特值。所有其他逻辑运算都可以通过一组XOR控制门中的门的组合来获得。
图24D示出了根据实施例,由融合或碰撞产生的示例性6比特控制门的图。在示例中,6比特控制门具有五个尾比特(三个“真”和两个“假”)。在首比特处执行的逻辑为输入到首比特的值与尾比特的值的乘积的异或,如空心圆所示取反。在下面的2.2节中,除非能从上下文中清楚地看出,否则控制目标类型的门将仅称为门。图25示出了根据实施例,用于替代3比特门的示例性控制门的简化示意图。图25介绍了控制门的简化图形表示,尾部的所有控制比特都由一个方框替代。有时,为了区分门碰撞,方框中的一个或多个控制比特会被拉出来显示。
每个控制门g可以由包含头部(受控比特地址)和尾部的列表来标记,包括与真或假逻辑相关联的比特地址,为简单起见,在下文中称为小珠。每个小珠b对应于一对(i(b),σ(b)),包含控制比特地址i(b)以及该控制是否取反(σ(b)=1,对应于一个空心圆)或不取反(σ(b)=0,对应于一个实心圆)。例如,[3,[(1,0),(2,0)]]是一个Toffoli门,作用在由比特1和比特2控制的比特3上,不取反:x1→x1,x2→x2
Figure BDA0002637632280000246
再例如,[2,[(1,1)]]是一个CNOT门,如果比特1为false,则作用于比特2,因此取反比特1的值:x1→x1
Figure BDA0002637632280000247
比特1上的NOT门简单地标记为[1,[]],其尾部为空,即没有尾比特。采用h(g)和t(g)表示门g的头和尾,(再次)(i(b),σ(b))分别表示小珠b∈t(g)的比特地址和控制类型。可以将门g的逻辑功能写到受控比特上,如等式11所示。
Figure BDA0002637632280000251
碰撞。图26示出了根据实施例,用于传播第一控制q比特门经过第二控制q比特门的示例性方法的流程图,例如使用在图3所示方法的步骤中。与之前在优化量子电路时用于组合控制比特的规则不同,在方法2600中应用的规则不需要所有控制比特均为真型逻辑。在该方法中,首先将两个相邻门Ga和Gb移动通过彼此,如图3所示方法300的步骤311或/和步骤313。
图27A至图27D的块图示出了根据实施例,具有共享目标比特或控制比特的控制门的示例性碰撞。图28A和图28B示出了根据实施例,具有不同的非重叠控制比特的控制门的示例性碰撞。图29A至图29D的块图示出了根据实施例,两个控制门的示例性碰撞,其中一个门头部的一个比特与另个一门尾部的一个比特重叠。这些类型的碰撞称为单头碰撞。图30A至图30D的块图示出了根据实施例,多个控制门的示例性碰撞,其中两个门头部的一个比特与其他门尾部的一个比特重叠。这些类型的碰撞称为双头碰撞。图中的X和Y表示两个碰撞门Ga和Gb上不参与碰撞的控制比特上的布尔函数;这些控制比特不与另一门的任意受控比特重叠。如上所述,只有受控比特的值可以改变。
在步骤2601中,确定两个门Ga和Gb是否相同,即,是否具有作用在相同比特上的尾部和相同目标比特。参见附图27A。需要注意的是,两个尾部都标记为X,用于表示两者相同。这种情况可能发生在由其他碰撞产生的碎片门。逻辑上来讲,这种情况会使得第二门撤销第一门的作用;并且,组合的最终结果是完全不起任何作用。因此,如附图27A所示,如果在步骤2601中确定两个门是相同的,则在步骤2603中,将两个门都从电路中移除。这类碰撞会减少门的数量,称之为简化。然后转到步骤2651。
在一些实施例中,步骤2601包括确定是否存在一个或多个其他的简体条件,例如,除了一个尾比特不同,相邻门具有相同头比特和尾比特。图27B、图27C和图27D中示出了这些情况。图27B和图27D示出了第一门Ga和第二门Gb,除了第一门Ga多包括一个尾比特外,其他都相同,其中,第一门多包括的尾比特可为真逻辑型(图27B)或假逻辑型(图27D)。在任意一种情况下,碰撞(简化)规则都是两个门Ga和Gb被单个简化门Gs替代,该简化门具有相同的头比特和相同的公共尾比特(X),但是第一门Ga额外包括的比特的相反逻辑类型也包括在门Gs的尾部。图27C示出了两个门Ga和Gb,除了一个尾比特的逻辑类型不同之外,其他都相同。在这种情况下,碰撞(简化)规则是两个门Ga和Gb被具有相同的头比特和相同的公共尾比特(X)的单个简化门Gs替代,但简化门不包括其他尾比特。即从简化门Gs的尾部去掉了原始两个门中逻辑类型相冲突的尾比特。
在步骤2651中,判断所得的门是否穿过指令列表足够远,例如穿过J个或K个门,进入所有要移动的门的邻接部分,参见如下更详细地描述。如果否,则选择下一个第一门Ga和第二门Gb,并且返回步骤2601。如果穿过足够多的门,则转到步骤2653,在一些实施例中,该步骤扫过所得的门的序列(又名指令列表或“电路”),以进行其他简化。然后结束该过程,并返回图3所示方法300中的步骤313或315。
如果在步骤2601中确定两个门g1和g2(例如,Ga和Gb)不相同,则转到步骤2611。在步骤2611中,确定第二门Gb中的控制比特是否与第一门Ga的目标比特存在共享。这种情况在图29B和图29D中示出,表示为在尾部的至少一个单头碰撞,还在图30A、图30B、30C和图30中示出,表示为在尾部的一个双头部碰撞。如果是,则在步骤2613中,接下来确定第一门Ga中的控制比特是否与第二门的目标比特存在共享。如果否,如图29B和图29D所示,则仅在尾部上的一个单头碰撞,然后转到步骤2621。
在步骤2621中,使用尾部与第一门的头部发生的单头碰撞规则。对于图29B所示的碰撞尾部为真型逻辑(实心圆),或者图29D所示的碰撞尾部为假型逻辑的情况,都生成一个碎片门Gc。无论哪种情况,该碰撞规则表明,碎片门Gc具有一个组合尾部,但不包括碰撞比特和第二门Gb的头部,用于等式11表示的逻辑。在步骤2641中,利用以Gb、Gc、Ga顺序排列的三个门取代(替代)原始的两个门Ga和Gb。然后转到上述步骤2651及其之后的步骤;结果为Gb、Gc、Ga的三门顺序。
如果在步骤2613中确定第一门Ga中的控制比特与第二门Gb的目标比特存在共享,则在尾部上发生双头碰撞。这种两头碰撞包括图30A、30B、图30C和图30D所示例子。转到步骤2615,在该步骤中,使用双头碰撞的规则进行门碰撞。对于图30A所示的两个碰撞尾比特均为真型逻辑(实心圆),或图30B所示的碰撞尾比特中一个为真型逻辑而另一个为假型逻辑,或图30C所示的碰撞尾比特中一个为假型逻辑而另一个真型逻辑,或图30D所示的两个碰撞尾比特均为假型逻辑(空心圆)的情况,都产生两个碎片门Gc和Gd。在任意一种情况下,碰撞规则都显示了等式11表示的控制门逻辑,即:1)碎片门Gc具有第一门Ga的头比特和尾比特,其中,尾比特组合了第一门Ga的尾部与第二门Gb中未参与碰撞的尾比特;2)碎片门Gd具有第二门Gb的头比特和尾比特,其中,尾比特结合了第二门Gb的尾部和第一门Ga中未参与碰撞的尾比特。
在步骤2617中,利用以Gb、Gc、Gd、Ga顺序排列的四个门取代(替代)原始的两个门Ga和Gb。然后转到上述步骤2651及其之后的步骤。
如果在步骤2611中确定第二门Gb中没有控制比特与第一门Ga的目标比特存在共享,则转到步骤2631。这些情况在图28A和图28B中示出,表示头部不与尾部碰撞,以及在图29A和图29C中示出,表示最多与尾部发生单头碰撞。如果是,则转到步骤2631。
在步骤2631中,确定第一门Ga中的控制比特是否与第二门Gb的目标比特存在共享。如果否,则不存在头部与部尾的碰撞;门可以直接通过;并转到步骤2633。这些情况在图28A和28B中示出。在步骤2633中,因为两个门可以直接通过,所以第一门移动经过第二门。然后转到上述步骤2651及其之后的步骤。
如果在步骤2631中确定第一门Ga中的控制比特与第二门Gb的目标比特存在共享,则转到步骤2635。在这种情况下,第二门Gb与第一门Ga的尾部发生单头碰撞,如图29A和图29C所示。在步骤2635中,使用在尾部与第二门Gb的头部发生的单头碰撞规则,进行门的碰撞。对于碰撞尾比特为图29A所示的真型逻辑(实心圆),或图29C所示的假型逻辑的情况,该过程产生了一个碎片门Gc。无论哪种情况,碰撞规则表明,碎片门Gc具有一个组合的尾部,其不包括碰撞比特和第一门Ga的头,用于等式11表示的逻辑。
在步骤2641中,利用以Gb、Gc、Ga顺序排列的三个门取代(替代)原始的两个门Ga和Gb。然后转到上述步骤2651及其之后的步骤,结果为Gb、Gc、Ga的三门顺序。
上面描述的碰撞规则可以用如下的数学等式表示。将tX和tY定义为不参与门Ga和Gb碰撞的布尔函数X和Y的尾珠组。将它们用等式12a和12b表示。
Figure BDA0002637632280000271
Figure BDA0002637632280000272
二者乘积可以写为等式13。
Figure BDA0002637632280000273
如果包含冲突,则可以简化该表达式,即,如果存在小珠b1,b2∈tX∪tY,使得i(b1)=i(b2)(相同的比特线),但σ(b1)≠σ(b2)(相反的否定)。在这种情况下,类型x’x的冲突始终为0(False)。因此,可以根据等式14重写XY。
Figure BDA0002637632280000274
通过检查发生冲突的情况,可以在构造碰撞时移除尾部带有XY的门,因为在这些情况下,碎片门会消失。
另一种简化是将两个门组合成一个门。考虑两个门h(Ga)=h(Gb)(头部相同的比特线)和尾部t(Ga)和t(Gb)。让t(Ga,Gb)≡t(Ga)∩t(Gb)表示两个尾部的交点;然后让t(Ga,Gb)≡(t(Ga)∪t(Gb))\(t(Ga)∩t(Gb))代表两个尾部交点之外的剩余比特。以下简化是可行的。
如果|t(Ga,Gb)|=0,则两个门具有相同的小珠,因此它们为同一(具有相同控制线的所有受控门均为对合或自反)。在这种情况下,两个门可以从电路中移除。这种简化在图27A中示出,并在步骤2601和2603中实现。
如果|t(Ga,Gb)|=1,则两个门具有相同的一个小珠。因此,有一个小珠b*t(Ga,Gb)出现在一个门中,而没有出现在另一个门中。使用等式15至17可将两个门组合为一个。
Figure BDA0002637632280000275
Figure BDA0002637632280000281
Figure BDA0002637632280000282
换句话说,组合门的尾部包含共同的小珠,以及比特地址相同但对小珠b*的σ取反的小珠b$=(i(b*),σ(b*))。这种简化在图27B和27D中示出,并在步骤2653中实现;并且,在一些实施例中,在步骤2601和2603中实现。
如果|t(Ga,Gb)|=2且两个小珠b1,b2t(g1,g2)比特在不同的门中,且i(b1)=i(b2),则可以将两个门组合在一起。需要注意的是,由于差异集包含两个小珠,因此,如果这些小珠作用于同一比特线上,则它们必须具有σ(b1)≠σ(b2)(否则它们是同一小珠,且不在差异集)。使用等式18至20可将两个门组合为一个。
Figure BDA0002637632280000283
Figure BDA0002637632280000284
Figure BDA0002637632280000285
其中需要注意的是,由于i(b1)=i(b2),并且σ(b1)≠σ(b2),则
Figure BDA0002637632280000286
Figure BDA0002637632280000287
因此,通过移除两个珠子b1和b2,可以将两个门组合为一个门。单门具有较短的尾部t(Ga,Gb)。这种简化在图27C中示出。
一些碰撞会产生包括较长尾部的碎片门。可以理解的是,大小大于3的碎片门可被重构为几个大小为3比特或更小比特的控制q比特门。以两个门的碰撞为例,其中一个具有q1比特,另一个具有q2比特。当这两个门不可直接通过,它们的碰撞将留下碎片。可以找到构成碎片的门的比特数的上限。
首先考虑一个门(Ga)的头部或目标比特碰撞到另一个门(Gb)的控制比特,但不碰到另一方向的情况。在这种情况下,碎片将具有Ga的头部(1比特),加上布尔函数XY中的门,其中不包括与Ga的头部发生碰撞的Gb中的控制比特。XY中的最大比特数为q1-1+q2-2。因此,碎片中的最大比特数为qmax=q1+q2-2。这是发生在尾部上的一个单头碰撞,并在图29A至图29D中示出。
如果碰撞是一个门的头比特碰到另一个门的控制比特,反之亦然,则碎片中的比特数是布尔函数XY的比特数之和,即q1-2+q2-2(从每个门中减去了碰撞涉及的两个比特),再加上两个公共比特。这样再次得到qmax=q1+q2-2。
需要注意的是,如果电路仅具有1比特和2比特门(q1,q2≤2),则最多具有q1+q2-2≤2个比特门。因此,碰撞不会生成更大的门(尽管门的数量可以更改)。但是,当电路具有多个3比特门时,碰撞可能产生4比特门,依此类推。
使用以上的碰撞规则,可以混淆一组已转换为q比特控制门列表的指令。考虑由三部分组成的电路,左部分或L部分,中间部分或M部分,以及右部分或R部分。对于特定的应用,例如同态加密,可以很自然地将电路划分为这三个部分:L=E-1,解密二进制字符串的电路;M=f,实现预期功能的电路;R=E,重新加密状态的电路(如果使用相同的密钥)。另一个示例是,如果要用一个加密电路替代另一个加密电路(例如,更改密钥),在这种情况下,自然选择是L=E-1
Figure BDA0002637632280000291
(无中间电路,或门的空集),并且R=E’,新的加密方案。最后,对于没有像上面两个示例中那样的先验结构的给定电路,可以简单地选择用两个切口对电路进行划分,并将三个结果片段定义为L,M和R。
基于上述控制q比特门碰撞规则,下面描述了使电路混淆的示例过程。在下面的内容中,可以将L,M和R视为门的列表,并且将方括号[]用作列表的定界符(与Python编程语言一样)。1、取出L中最右边的门(称为gL),并将L'定义为没有该门的列表L。类似地,取出R中最左边的门(称为gR),并将R'定义为没有该门的列表R。2、随机选择(以50%/50%的概率)是(i)从左向右将gL推入M+[gR],或(ii)从右向左将gR推入[gL]+M。假设选择从右向左推动(另一种情况类似)。3、初始化列表sideA=[gL]+M和sideB=[gR]。4、当列表sideA不为空并且列表sideB的大小加上sideA的大小小于预设长度K时(例如,K个门),执行以下操作:弹出sideA中最右边的门和sideB中最左边的门;碰撞它们,除非将其消灭,否则将碎片放置在列表sideB中(将碎片添加到左侧)。重复此步骤,直到while循环的两个条件之一不满足。5、组装电路中新的中间部分M'=sideA+sideB。6、只要L和R都不为空,对更新的三元组L'→L,M'→M,R'→R重复上述步骤。如果是,则返回电路Cobf=L+M+R。
使用混淆电路Cobf生成混淆源代码或目标代码250。可以使用算法1的伪代码对其进行模糊处理,以及算法2的向右推送和算法3的向左推送,来实现这种混淆过程。
Figure BDA0002637632280000301
Figure BDA0002637632280000302
Figure BDA0002637632280000303
图31的块图示出了根据实施例,产生用于简单功能的混淆程序的示例性步骤集。在该示例电路中,L和R分别由三个门组成,而M仅由一个门组成。字长为5比特(n=N=5)。该简单示例可被理解为以下情况:L=E-1是解密电路,R=E是加密电路,函数f对应于M中的单门(在这种情况下为CNOT)。需要注意的是,加密电路和解密电路是彼此的反转图像。
在第一步中(图31中的3101),门“c”与门“d”碰撞(图29B所示的单头碰撞),移至门“d”的左侧,并在其后留下碎片门“c’”。门“c”与门“c-1”碰撞,彼此抵消,参见图27A。在第二步(3102)中,门“b-1”与门“c’”碰撞(图29B所示的单头碰撞),移至门“c’”的右侧,并在其后留下碎片门“b’”。门“b-1”经过门“d”没有留下碎片(参见图28A),移至门“d”的右侧。门“b-1”与门“b”碰撞,彼此抵消,参见27A。在第三步(3103)中,门“a“经过门“b’”没有留下碎片(参见图28A),移至门“b’”的右侧。同样地,门“a”经过门“c’”也没有留下碎片(参见图28A),移至门“c’”的右侧。门“a”与门“d”发生碰撞(图29D所示的单头碰撞),移至门“d”的左侧,并在其后留下碎片门“a’”。在第四步(3104)中,相邻门“c’”和“a’”简化为单门“e”(参见图27C)。在第五步(3105)中,相邻门“b’”和“e”简化为单门“f”(参见图27B)。
在一些实施例中,如针对通用可逆3比特门所提到的,对加密数据进行操作的混淆代码是不需要被混淆的整个程序的一部分。在这些实施例的一些中,被混淆的代码被嵌入在未被混淆的指令之间。
3.计算硬件概述
图32是示出了可以在其上执行本发明的实施例的计算机系统3200的块图。计算机系统3200包括通信机制,例如总线3210,用于在计算机系统3200的其他内部和外部组件之间传递信息。信息被表示为可测量现象的物理信号,通常是电压,但是在其他实施例中,包括诸如磁性、电磁、压力、化学、分子原子和量子相互作用的现象。例如,南北磁场或零和非零电压代表二进制数字(比特)的两个状态(0、1)。其他现象可以代表较高基数的数字。测量之前的多个同时量子状态的叠加表示一个量子比特(qubit)。一个或多个数字的序列构成了数字数据,用于表示数字或字符代码。在一些实施例中,被称为模拟数据的信息由特定范围内的近乎连续的可测量值表示。计算机系统3200或其一部分构成用于执行本文描述的一种或多种方法的一个或多个步骤的装置。
二进制数字序列构成数字数据,用于表示一个字符的数字或代码。总线3210包含许多并行的信息导体,使得信息可以在耦合到总线3210的设备之间快速传输。用于处理信息的一个或多个处理器3202与总线3210耦合。处理器3202对信息执行一组操作。该组操作包括从总线3210引入信息并将信息放置在总线3210上。该组操作通常还包括比较两个或多个信息单元,移动信息单元的位置以及例如通过加法或乘法来组合两个或多个信息单元。由处理器3202执行的一系列操作构成计算机指令。
计算机系统3200还包括耦合到总线3210的存储器3204。诸如随机存取存储器(RAM)或其他动态存储设备的存储器3204存储包括计算机指令的信息。动态存储器允许计算机系统3200改变存储在其中的信息。RAM允许存储在内存地址的信息单元独立于相邻地址的信息进行存储和检索。存储器3204还由处理器3202用来在计算机指令的执行期间存储临时值。计算机系统3200还包括耦合到总线3210的只读存储器(ROM)3206或其他静态存储设备,用于存储包括信息的静态信息,该信息未被计算机系统3200改变。非易失性(永久)存储设备3208(例如磁盘或光盘)也耦合到总线3210,用于存储包括指令在内的信息,即使计算机系统3200已关闭或断电,该信息仍然存在。
包括指令的信息从外部输入设备3212提供给总线3210以供处理器使用,该外部输入设备3212是诸如包含由人类用户操作的字母数字键的键盘或传感器。传感器检测其附近的状况,并将检测结果转换为与表示计算机系统3200中信息的信号相兼容的信号。主要用于与人交互的耦合到总线3210的其他外部设备包括用于呈现图像的显示设备3214,例如阴极射线管(CRT)或液晶显示器(LCD),以及指示设备3216,例如作为鼠标,轨迹球或光标方向键,用于控制在显示器3214上显示的小光标图像的位置并发出与在显示器3214上显示的图形像素相关的命令。
在所示实施例中,诸如专用集成电路(IC)3220之类的专用硬件耦合到总线3210。专用硬件被配置为足够快地执行处理器3202未执行的操作。专用IC的示例包括图形加速卡,用于生成用于显示的图像3214;加密板,用于对通过网络发送的消息进行加密和解密;语音识别;以及与特殊外部设备(如重复执行某些操作的机械臂和医疗扫描设备)的接口复杂的操作序列,可以在硬件中更有效地实现。
计算机系统3200还包括耦合到总线3210的通信接口3270的一个或多个实例。通信接口3270提供双向通信耦合,该双向通信耦合到使用它们自己的处理器进行操作的各种外部设备,例如打印机,扫描仪和外部磁盘。通常,耦合是通过连接到局域网3280的网络链路3278进行的,具有自己处理器的各种外部设备都连接到该局域网3280。例如,通信接口3270可以是个人计算机上的并行端口或串行端口或通用串行总线(USB)端口。在一些实施例中,通信接口3270是提供到相应类型的电话线的信息通信连接的集成服务数字网络(ISDN)卡或数字用户线(DSL)卡或电话调制解调器。在一些实施例中,通信接口3270是电缆调制解调器,其将总线3210上的信号转换成用于通过同轴电缆进行通信连接的信号或转换成用于通过光纤电缆进行通信连接的光信号。作为另一个示例,通信接口3270可以是局域网(LAN)卡,以提供到诸如以太网之类的兼容LAN的数据通信连接。无线链接也可以实现。诸如声波和电磁波(包括无线电波,光波和红外波)之类的载波在没有电线或电缆的情况下穿过空间传播。信号包括载波的幅度,频率,相比特,极化或其他物理属性的人为变化。对于无线链路,通信接口3270发送和接收电,声或电磁信号,包括红外和光信号,其携带信息流,例如数字数据。
本文使用术语计算机可读介质来指代任何参与向处理器3202提供信息的介质,包括用于执行的指令。这样的介质可以采取许多形式,包括但不限于非易失性介质,易失性介质和传输介质。非易失性介质包括例如光盘或磁盘,例如存储设备3208。易失性介质包括例如动态存储器3204。传输介质包括例如同轴电缆,铜线,光纤电缆以及在没有电线或电缆的情况下在空间中传播的波,例如声波和电磁波,包括无线电波,光波和红外波。这里使用术语计算机可读存储介质来指代除传输介质之外的任何参与向处理器3202提供信息的介质。
计算机可读介质的常见形式包括,例如,软盘,软盘,硬盘,磁带或任何其他磁介质,光盘ROM(CD-ROM),数字视频盘(DVD))或任何其他光学介质,打孔卡,纸带或任何其他具有孔眼图案的物理介质,RAM,可编程ROM(PROM),可擦除PROM(EPROM),FLASH-EPROM,浮动阵列闪存,SDRAM或任何其他可从计算机读取的存储芯片或盒式磁带,载波或任何其他介质。术语“非暂时性计算机可读存储介质”在本文中用于指代除载波和其他信号之外的参与向处理器3202提供信息的任何介质。
编码在一种或多种有形介质中的逻辑包括计算机可读存储介质上的处理器指令和专用硬件(例如ASIC 3220)中的一个或两个。
网络链路3278通常通过一个或多个网络向使用或处理信息的其他设备提供信息通信。例如,网络链路3278可以通过本地网络3280提供到主机3282或由互联网服务提供商(ISP)操作的设备3284的连接。ISP设备3284依次通过公共的全球数据包交换通信网络提供数据通信服务,该网络现在通常称为Internet 3290。连接到因特网的称为服务器3292的计算机响应于通过因特网接收的信息来提供服务。例如,服务器3292提供表示视频数据的信息以供在显示器3214上呈现。在某些情况下,由主机3282,本地网络3280,互联网服务提供商3284,互联网3290和服务器3292的某种组合表示的资源称为“云”。
本发明涉及计算机系统3200用于实现本文描述的技术的用途。根据本发明的一个实施例,那些技术由计算机系统3200响应于处理器3202执行包含在存储器3204中的一个或多个指令的一个或多个序列来执行。此类指令(也称为软件和程序代码)可以从另一种计算机可读介质(例如存储设备3208)读入存储器3204。存储器3204中包含的指令序列的执行使处理器3202执行本文所述的方法步骤。在替代实施例中,可以使用诸如专用集成电路3220之类的硬件来替代软件或与软件结合来实现本发明。因此,本发明的实施例不限于硬件和软件的任何特定组合。
通过通信接口3270在网络链路3278和其他网络上传输的信号将信息传送到计算机系统3200和从计算机系统3200接收信息。计算机系统3200可以通过网络3280、3290以及通过网络链路3278和通信接口3270来发送和接收包括程序代码的信息。在使用Internet3290的示例中,服务器3292通过Internet 3290,ISP设备3284,局域网3280和通信接口3270,发送从计算机3200发送的消息所请求的特定应用程序的程序代码。所接收的代码可以在接收到时由处理器3202执行,或者可以存储在存储设备3208或其他非易失性存储器中以供以后执行,或两者。以这种方式,计算机系统3200可以获得载波上的信号形式的应用程序代码。
各种形式的计算机可读介质可涉及将一个或多个指令或数据序列或两者携带到处理器3202以执行。例如,指令和数据最初可以承载在诸如主机3282的远程计算机的磁盘上。远程计算机将指令和数据加载到其动态内存中,并使用调制解调器通过电话线发送指令和数据。计算机系统3200本地的调制解调器在电话线上接收指令和数据,并使用红外线发送器将指令和数据转换为红外线的信号,并将其用作网络链路3278的载波。用作通信接口3270的红外检测器接收红外信号中携带的指令和数据,并将表示该指令和数据的信息放置到总线3210上。总线3210将信息传送到存储器3204,处理器3202使用与指令一起发送的一些数据从中检索并执行指令。存储器3204中接收的指令和数据可以可选地在处理器3202执行之前或之后存储在存储设备3208上。
图33示出了可以在其上实现本发明的实施例的芯片组3300。芯片组3300被编程为执行本文描述的方法的一个或多个步骤,并且包括例如关于图1描述的处理器和存储器组件。32个封装在一个或多个物理封装(例如,芯片)中。举例来说,物理包装包括一种或多种材料,部件和/或电线在结构组件(例如,底板)上的布置,以提供一种或多种特性,例如物理强度,尺寸节省和/或或电相互作用的限制。预期在某些实施例中,芯片组可以在单个芯片中实现。芯片组3300或其一部分构成用于执行本文描述的方法的一个或多个步骤的装置。
在一个实施例中,芯片组3300包括诸如总线3301之类的通信机制,用于在芯片组3300的组件之间传递信息。处理器3303具有到总线3301的连接性,以执行指令和处理存储在例如存储器3305中的信息。处理器3303可包括一个或多个处理核心,每个核心被配置为独立执行。多核处理器可在单个物理包内进行多处理。多核处理器的示例包括两个,四个,八个或更多数量的处理核心。可选可可替代地,处理器3303可包括经由总线3301串联配置的一个或多个微处理器,以使得能够独立执行指令,流水线化和多线程化。处理器3303还可随附有一个或多个专用组件以执行某些处理功能和任务,例如一个或多个数字信号处理器(DSP)3307或一个或多个专用集成电路(ASIC)3309。DSP 3307通常被配置为独立于处理器3303实时地实时处理现实世界的信号(例如,声音)。类似地,可以将ASIC 3309配置为执行通用处理器不容易执行的专用功能。有助于执行本文描述的发明功能的其他专用组件包括一个或多个现场可编程门阵列(FPGA)(未示出),一个或多个控制器(未示出)或一个或多个其他专用计算机芯片。
处理器3303和随附的组件通过总线3301具有到存储器3305的连接性。存储器3305包括动态存储器(例如,RAM、磁盘、可写光盘等)和静态存储器(例如,ROM、CD-ROM等),用于存储可执行指令,这些可执行指令在被执行时执行本文描述的方法中的一个或多个步骤。存储器3305还存储与执行本文描述方法的一个或多个步骤相关联或由其生成的数据。
4、变体、偏离和修改在前述说明书中,已参考本发明的特定实施例描述了本发明。然而,显然地,在不脱离本发明更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被认为是说明性的而非限制性的。在整个说明书和权利要求书中,除非上下文另外要求,否则词语“包括”及其变体,例如“包含”和“含有”,将被理解为暗示性地包括所述项目、要素或步骤或项目、元素或步骤的集合,但不排除其他任何项目、元素或步骤或项目、元素或步骤的集合。此外,不定冠词“一”旨在表示由该冠词修改的项目、元素或步骤中的一个或多个。
5.参考文献.
[1]R.L.Rivest,L.Adleman,and M.L.Dertouzos,On data bank and privacyhomomorphisms(1978).
[2]E.F.Brickell and Y.Yacobi,On privacy homomorphisms,Workshop onTheory and Applications of Cryptographic Techniques,117-25(1987).
[3]C.Gentry,Fully homomorphic encryption using ideal lattices.ACMSymposium on Theory of Computation(STOC),169-178(2009).
[4]K.Lauter,Can homomorphic encryption be practical.Proceedings ofthe 3rd ACM workshop on cloud computing security,113-124(2011).
[5]C.B.Gentry,Bootstrappable Homomorphic Encryption Method,ComputerProgram and Apparatus.US Patent 8,515,058 B1(August 20,2013).
[6]C.B.Gentry and S.Halevi,Efficient Implementation of FullyHomomorphic Encryption.US Patent 8,565,435 B2(October 22,2013).
[7]C.B.Gentry,Fully Homomorphic Encryption Method Based on aBootstrappable Encryption Scheme,Computer and Apparatus.US Patent 8,630,422B2(January 14,2014).
[8]C.B.Gentry,S.Halevi,N.P.Smart,Homomorphic Evaluation Including KeySwitching,Modulus Switching,and Dynamical Noise Management.US Patent 9,281,941 B2(March 8,2016).
[9]C.B.Gentry,S.Halevi,N.P.Smart,Homomorphic Evaluation Including KeySwitching,Modulus Switching,and Dynamical Noise Management.US Patent 9,608,817 B2(March 28,2017).
[10]C.B.Gentry,S.Halevi,N.P.Smart,Homomorphic Evaluation IncludingKey Switching,Modulus Switching,and Dynamical Noise Management.US Patent 9,621,346 B2(April 11,2017).
[11]J.J.Loftus,M.Naehrig,J.W.Bos,K.E.Lauter,Managed SecureComputations on Encrypted Data.US Patent 9,306,738 B2(April 5,2016).
[12]M.Tamayo-Rios,Method for Fully Homomorphic Encryption UsingMultivariate Cryptography.US Patent 9,313,028 B2(April 12,2016).
[13]A.Kipnis and E.Hibshoosh,Method and System for HomomorphiclyRamdomizing an Input.US Patent 9,350,543 B2(May 24,2016).
[14]G.Saldamli,Homomorphic Encryption in Computing Systems andEnvironments.US Patent 9,436,835 B1(September 16,2016).
[15]D.Coppersmith and E.Grossman,Generators for certain alternatinggroups with applications to cryptography.SIAM J.Appl.Math.29(4),624-627(1975).
[16]A.Parent,M.Roeteller,and M.Mosca,Improved Reversible and Circuitsfor Karatsuba-Based Integer Multiplication.arXiv:1706.03419(2017).
[17]S.Cuccaro,T.G.Drapper,S.A.Kutin,and D.P.Moulton,A New QuantumRipple-Carry Addition Circuit.arXiv:quant-ph/0410184(2004).
[18]K.Iwama,Y.Kambayashi,and S.Yamashita,Transformation Rules forDesigning CNOT-based Quantum Circuits,DAC2002,pp 419-424(New Orleans,Louisiana,USA,2002).

Claims (30)

1.一种在第一处理器上操作的方法,包括:
接收第一数据,所述第一数据表示可逆q比特门的序列,包括用于解密置换加密数据以产生解密数据的第一段,用于对所述解密数据进行操作以产生一个或多个结果解密数据的第二段,以及用于使用置换加密对所述结果解密数据进行加密以产生置换加密结果数据的第三段;
存储第二数据在计算机可读介质上,所述第二数据表示的规则用于将对输入N比特字的至少一个共享比特进行操作的两个q比特门的第一序列,替换为产生相同的输出N比特字的一个或多个q比特门的不同第二序列;
利用所述第二数据,将至少一个q比特门从所述第一段传播J个门的距离到所述第二段的q比特门之内或之后,以及将至少一个q比特门从所述第三段中传播K个门的距离到所述第二段的q比特门之内或之前,从而产生可逆q比特门的混淆序列;以及
发送基于所述可逆q比特门的混淆序列的混淆指令给第二处理器以用于执行。
2.根据权利要求1所述的方法,还包括:
存储第三数据在计算机可读介质上,所述第三数据将所述不同第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;以及
利用所述第三数据,将所述可逆q比特门的混淆序列转换为所述第二处理器可执行的混淆代码指令;
其中,发送所述混淆指令还包括发送所述第二处理器可执行的混淆代码指令。
3.根据权利要求1所述的方法,其中:
所述方法还包括存储第三数据在计算机可读介质上,所述第三数据将所述第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;以及,
所述接收第一数据还包括:
接收所述第二处理器可执行的代码指令,用于对所述加密数据进行操作以生成所述一个或多个结果解密数据;以及
利用所述第三数据,将所述第二处理器可执行的、用于对所述加密数据进行操作以生成所述一个或多个结果解密数据的所述代码指令转换为用于对所述加密数据进行操作以生成所述一个或多个结果解密数据的可逆q比特门的序列。
4.根据权利要求1所述的方法,还包括:
存储合并数据在计算机可读介质上,所述合并数据所表示的规则用于将对输入N比特字进行操作以产生输出N比特字的可逆q比特门的一个或多个序列中的每一个序列,替换为产生相同的输出N比特字的一个或多个可逆k比特门(其中,3<k≤N);以及
利用所述合并数据,将所述可逆q比特门的混淆序列中的一个或多个可逆q比特门的特定序列替换为可替换所述特定序列的k比特门。
5.根据权利要求4所述的方法,还包括:
存储第三数据在计算机可读介质上,所述第三数据将所述不同第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;
存储合并代码数据在计算机可读介质上,所述合并代码数据将一个或多个k比特门中的每一个与执行于所述不同第二处理器的一个或多个代码指令进行关联;
利用所述合并代码数据,将所述k比特门转换为所述混淆代码指令的至少一部分;以及
利用所述第三数据,将所述可逆q比特门的混淆序列中的剩余可逆q比特门转换为所述混淆代码指令的剩余部分;
其中,发送混淆指令还包括发送所述第二处理器可执行的混淆代码指令。
6.根据权利要求1所述的方法,其中,J>N且K>N。
7.根据权利要求1所述的方法,其中,每个可逆q比特门为包括单个目标比特和q-1个控制比特的控制门,用于基于所述q-1个控制比特的值以及输入到所述q-1个控制比特的值确定所述单个目标比特的值。
8.根据权利要求1所述的方法,其中,q∈{1,2,3})。
9.根据权利要求1所述的方法,其中,所述第二处理器与所述第一处理器不同。
10.根据权利要求1所述的方法,其中,对所述第二处理器的访问与对所述第一处理器的访问不同。
11.一种非暂时性计算机可读介质,承载一个或多个指令序列,其中,由一个或多个处理器的第一集合执行所述一个或多个指令序列使所述一个或多个处理器的第一集合执行以下步骤:
接收第一数据,所述第一数据表示可逆q比特门的序列,包括用于解密置换加密数据以产生解密数据的第一段,用于对所述解密数据进行操作以产生一个或多个结果解密数据的第二段,以及用于使用置换加密对所述结果解密数据进行加密以产生置换加密结果数据的第三段;
存储第二数据,所述第二数据表示的规则用于将对输入N比特字的至少一个共享比特进行操作的两个可逆q比特门的第一序列,替换为产生相同的输出N比特字的一个或多个可逆q比特门的不同第二序列;
利用所述第二数据,将至少一个q比特门从所述第一段传播J个门的距离到所述第二段的q比特门之内或之后,以及将至少一个q比特门从所述第三段中传播K个门的距离到所述第二段的q比特门之内或之前,从而产生可逆q比特门的混淆序列;以及
发送基于所述可逆q比特门的混淆序列的混淆指令给一个或多个处理器的第二集合以用于执行。
12.根据权利要求11所述的非暂时性计算机可读介质,还包括:
存储第三数据在计算机可读介质上,所述第三数据将所述不同第二处理器可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;以及
利用所述第三数据,将所述可逆q比特门的混淆序列转换为所述第二处理器可执行的混淆代码指令;
其中,发送混淆指令还包括发送所述一个或多个处理器的第二集合可执行的所述混淆代码指令。
13.根据权利要求11所述的非暂时性计算机可读介质,其中:
所述方法还包括存储第三数据在计算机可读介质上,所述第三数据将所述一个或多个处理器的第二集合可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;以及,
所述接收第一数据还包括:
接收所述一个或多个处理器的第二集合可执行的代码指令,用于对所述加密数据进行操作以生成所述一个或多个结果解密数据;以及
利用所述第三数据,将所述一个或多个处理器的第二集合可执行的、用于对所述加密数据进行操作以生成所述一个或多个结果解密数据的所述代码指令转换为用于对所述加密数据进行操作以生成所述一个或多个结果解密数据的可逆q比特门的序列。
14.根据权利要求11所述的非暂时性计算机可读介质,还包括:
存储合并数据在计算机可读介质上,所述合并数据表示的规则用于将对输入N比特字进行操作以产生输出N比特字的可逆q比特门的一个或多个序列中的每一个序列,替换为产生相同的输出N比特字的一个或多个k比特门(其中,3<k≤N);以及
利用所述合并数据,将所述可逆q比特门的混淆序列中的一个或多个可逆q比特门的特定序列替换为可替换所述特定序列的k比特门。
15.根据权利要求14所述的非暂时性计算机可读介质,还包括:
存储第三数据在计算机可读介质上,所述第三数据将所述一个或多个处理器的第二集合可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;
存储合并代码数据在计算机可读介质上,所述合并代码数据将一个或多个k比特门中的每一个与执行于所述一个或多个处理器的第二集合的一个或多个代码指令进行关联;
利用所述合并代码数据,将所述k比特门转换为所述混淆代码指令的至少一部分;以及
利用所述第三数据,将所述可逆q比特门的混淆序列中的剩余可逆q比特门转换为所述混淆代码指令的剩余部分;
其中,发送混淆指令还包括发送所述一个或多个处理器的第二集合可执行的混淆代码指令。
16.根据权利要求11所述的非暂时性计算机可读介质,其中,J>N且K>N。
17.根据权利要求11所述的非暂时性计算机可读介质,其中,每个可逆q比特门为包括单个目标比特和q-1个控制比特的控制门,用于基于所述q-1个控制比特的值以及输入到所述q-1个控制比特的值确定所述单个目标比特的值。
18.根据权利要求11所述的非暂时性计算机可读介质,其中,q∈{1,2,3})。
19.根据权利要求11所述的非暂时性计算机可读介质,其中,所述一个或多个处理器的第二集合与所述一个或多个处理器的第一集合不同。
20.根据权利要求11所述的非暂时性计算机可读介质,其中,对所述一个或多个处理器的第二集合的访问与对所述一个或多个处理器的第一集合的访问不同。
21.一种系统,包括:
至少一个处理器的第一集合;和
至少一个存储器,所述存储器包括一个或多个指令序列,
所述至少一个存储器和所述一个或多个指令序列被配置为,与所述至少一个处理器一起,使装置至少执行以下操作,
接收第一数据,所述第一数据表示可逆q比特门的序列,包括用于解密置换加密数据以产生解密数据的第一段,用于对所述解密数据进行操作以产生一个或多个结果解密数据的第二段,以及用于使用置换加密对所述结果解密数据进行加密以产生置换加密结果数据的第三段;
存储第二数据在所述计算机可读介质上,所述第二数据表示的规则用于将对输入N比特字的至少一个共享比特进行操作的两个q比特门的第一序列,替代为产生相同的输出N比特字的一个或多个q比特门的第二序列;
利用所述第二数据,将至少一个q比特门从所述第一段传播J个门的距离到所述第二段的q比特门之内或之后,以及将至少一个q比特门从所述第三段中传播K个门的距离到所述第二段的q比特门之内或之前,从而产生可逆q比特门的混淆序列;以及
发送基于所述可逆q比特门的混淆序列的混淆指令给至少一个处理器的第二集合以用于执行。
22.根据权利要求21所述的系统,还包括:
存储第三数据在计算机可读介质上,所述第三数据将所述至少一个处理器的第二集合可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;以及
利用所述第三数据,将所述可逆q比特门的混淆序列转换为所述至少一个处理器的第二集合可执行的混淆代码指令;
其中,发送所述混淆指令还包括发送所述至少一个处理器的第二集合可执行的所述混淆代码指令。
23.根据权利要求21所述的系统,其中:
所述方法还包括存储第三数据在计算机可读介质上,所述第三数据将所述至少一个处理器的第二集合可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;以及,
所述接收第一数据还包括:
接收所述至少一个处理器的第二集合可执行的代码指令,用于对所述加密数据进行操作以生成所述一个或多个结果解密数据;以及
利用所述第三数据,将所述至少一个处理器的第二集合可执行的、用于对所述加密数据进行操作以生成所述一个或多个结果解密数据的所述代码指令转换为用于对所述加密数据进行操作以生成一个或多个所述结果解密数据的可逆q比特门的序列。
24.根据权利要求21所述的系统,还包括:
存储合并数据在计算机可读介质上,所述合并数据表示的规则用于将对输入N比特字进行操作以产生输出N比特字的可逆q比特门的一个或多个序列中的每一个序列,替换为产生相同的输出N比特字的一个或多个k比特门(其中,3<k≤N);以及
利用所述合并数据,将所述q比特门的混淆序列中的一个或多个q比特门的特定序列替换为可替换所述特定序列的k比特门。
25.根据权利要求24所述的系统,还包括:
存储第三数据在计算机可读介质上,所述第三数据将所述至少一个处理器的第二集合可执行的每一个代码指令与对N比特字进行操作的一个或多个可逆q比特门进行关联;
存储合并代码数据在计算机可读介质上,所述合并代码数据将一个或多个k比特门中的每一个与执行于所述至少一个处理器的第二集合的一个或多个代码指令进行关联;
利用所述合并代码数据,将所述k比特门转换为所述混淆代码指令的至少一部分;以及
利用所述第三数据,将所述可逆q比特门的混淆序列中的剩余可逆q比特门转换为所述混淆代码指令的剩余部分;
其中,发送混淆指令还包括发送所述至少一个处理器的第二集合可执行的混淆代码指令。
26.根据权利要求21所述的系统,其中,J>N且K>N。
27.根据权利要求21所述的系统,其特征在于,每个可逆q比特门为包括单个目标比特和q-1个控制比特的控制门,用于基于所述q-1个控制比特的值以及输入到所述q-1个控制比特的值确定所述单个目标比特的值。
28.根据权利要求21所述的系统,其中,q∈{1,2,3})。
29.根据权利要求21所述的系统,其中,所述至少一个处理器的第二集合与所述至少一个处理器的第一集合不同。
30.根据权利要求21所述的系统,其中,对所述至少一个处理器的第二集合的访问与对所述至少一个处理器的第一集合的访问不同。
CN201880089671.6A 2017-12-18 2018-12-17 操作在公共计算机上加密数据的代码的安全执行技术 Pending CN111801670A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762607185P 2017-12-18 2017-12-18
US62/607,185 2017-12-18
PCT/US2018/066019 WO2019126044A1 (en) 2017-12-18 2018-12-17 Techniques for securely executing code that operates on encrypted data on a public computer

Publications (1)

Publication Number Publication Date
CN111801670A true CN111801670A (zh) 2020-10-20

Family

ID=66995109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880089671.6A Pending CN111801670A (zh) 2017-12-18 2018-12-17 操作在公共计算机上加密数据的代码的安全执行技术

Country Status (7)

Country Link
US (1) US11461435B2 (zh)
EP (1) EP3729304A4 (zh)
JP (1) JP7177849B2 (zh)
CN (1) CN111801670A (zh)
IL (1) IL275052B1 (zh)
SG (1) SG11202004674VA (zh)
WO (1) WO2019126044A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016200747A1 (en) * 2015-06-08 2016-12-15 Microsoft Technology Licensing, Llc System for reversible circuit compilation with space constraint, method and program
WO2022047055A1 (en) * 2020-08-27 2022-03-03 Ntt Research Inc. Obfuscation of executable instruction sets for enhanced security

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665796B1 (en) 1999-08-18 2003-12-16 Sun Microsystems, Inc. Microprocessor instruction result obfuscation
US6757831B1 (en) * 1999-08-18 2004-06-29 Sun Microsystems, Inc. Logic block used to check instruction buffer configuration
GB2453367A (en) 2007-10-04 2009-04-08 Univ Newcastle Cryptographic processing using isomorphic mappings of Galois fields
US8732468B2 (en) * 2009-03-09 2014-05-20 The Regents Of The University Of Michigan Protecting hardware circuit design by secret sharing
US8630422B2 (en) 2009-11-10 2014-01-14 International Business Machines Corporation Fully homomorphic encryption method based on a bootstrappable encryption scheme, computer program and apparatus
US8515058B1 (en) 2009-11-10 2013-08-20 The Board Of Trustees Of The Leland Stanford Junior University Bootstrappable homomorphic encryption method, computer program and apparatus
JP2011130120A (ja) * 2009-12-16 2011-06-30 Sony Corp 量子公開鍵暗号システム、鍵生成装置、暗号化装置、復号装置、鍵生成方法、暗号化方法、及び復号方法
US8565435B2 (en) 2010-08-16 2013-10-22 International Business Machines Corporation Efficient implementation of fully homomorphic encryption
US9436835B1 (en) 2012-01-05 2016-09-06 Gokay Saldamli Homomorphic encryption in computing systems and environments
US9281941B2 (en) 2012-02-17 2016-03-08 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
CN104335219B (zh) * 2012-03-30 2018-06-05 爱迪德技术有限公司 使用变量相关编码来保护可访问的系统
US9313028B2 (en) 2012-06-12 2016-04-12 Kryptnostic Method for fully homomorphic encryption using multivariate cryptography
EP2873186B1 (en) 2012-07-26 2018-03-07 NDS Limited Method and system for homomorphicly randomizing an input
US9306738B2 (en) 2012-12-21 2016-04-05 Microsoft Technology Licensing, Llc Managed secure computations on encrypted data
JP2016510913A (ja) * 2013-08-09 2016-04-11 トムソン ライセンシングThomson Licensing 行列因子分解とリッジ回帰に基づくプライバシー保護リコメンデーションの方法及びシステム
US9264048B2 (en) * 2013-12-18 2016-02-16 Intel Corporation Secret operations using reconfigurable logics
WO2016200747A1 (en) * 2015-06-08 2016-12-15 Microsoft Technology Licensing, Llc System for reversible circuit compilation with space constraint, method and program
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US10664249B2 (en) * 2015-11-20 2020-05-26 Microsoft Technology Licensing, Llc Verified compilation of reversible circuits

Also Published As

Publication number Publication date
EP3729304A4 (en) 2021-08-18
KR20200105481A (ko) 2020-09-07
JP7177849B2 (ja) 2022-11-24
SG11202004674VA (en) 2020-06-29
US20200394287A1 (en) 2020-12-17
US11461435B2 (en) 2022-10-04
IL275052A (en) 2020-07-30
JP2021507438A (ja) 2021-02-22
IL275052B1 (en) 2024-01-01
EP3729304A1 (en) 2020-10-28
WO2019126044A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
AU2021225173B2 (en) Quantum error correction
Choudhuri et al. Significantly improved multi-bit differentials for reduced round Salsa and ChaCha
Baksi et al. Quantum implementation and resource estimates for rectangle and knot
Zanin et al. Gray code permutation algorithm for high-dimensional data encryption
Feng et al. Cryptanalysis of the integrated chaotic systems based image encryption algorithm
CN103221917A (zh) 加密运算中模幂的保护
Grassi et al. Quantum Algorithms for the-xor Problem
CN111801670A (zh) 操作在公共计算机上加密数据的代码的安全执行技术
JP2020515093A (ja) 符号化加算のための計算デバイス
Dey et al. Proving the biases of salsa and chacha in differential attack
Jang et al. Improved quantum analysis of SPECK and lowmc
KR102664551B1 (ko) 퍼블릭 컴퓨터에서 암호화된 데이터로 작동하는 코드를 안전하게 실행하는 기술
Chen et al. Analysis of differential distribution of lightweight block cipher based on parallel processing on GPU
Flórez-Gutiérrez et al. Internal symmetries and linear properties: Full-permutation distinguishers and improved collisions on Gimli
Moldovyan On cipher design based on switchable controlled operations
Deepthi et al. Cryptanalysis for reduced round Salsa and ChaCha: revisited
RU2708439C1 (ru) Вычислительное устройство и способ
Mitra et al. Time-memory trade-off attacks on multiplications and T-functions
CN106683030A (zh) 基于量子多图像模型与三维变换的量子多图加密算法
WO2022020857A1 (en) Boolean function control gates for securely executing on a public computer code that operates on encrypted data
WO2023077167A1 (en) Encrypting data based on linear 3-bit gates and non-linear gates
Al-Muhammed An encryption technique based on bilateral chaotic systems and fuzzy symbol encoding
KR100308893B1 (ko) 엘.에프.에스.알을 이용한 확장 알.씨.4 암호화 방법
Dey et al. Enhancing the Key Recovery Attack on Round Reduced Salsa
Denisenko et al. Optimization of S-boxes GOST R 34.12-2015" Magma" quantum circuits without ancilla qubits

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