节点多方加密

阅读:873发布:2020-05-11

专利汇可以提供节点多方加密专利检索,专利查询,专利分析的服务。并且一种包括多个 软件 模 块 的计算机 节点 可从 硬件 安全模块接收密码密钥。所述计算机节点可使用所述密码密钥来产生分布到两个 软件模块 的两个密钥部分。这些软件模块和任选额外软件模块可使用所述密钥部分以便加密初始消息。所述密钥部分和其在 存储器 中的 位置 被周期性地更新以便提供改进的密码安全性。,下面是节点多方加密专利的具体信息内容。

1.一种方法,包括:
a)由包括第一软件、第二软件模块、第三软件模块和任选第四软件模块的计算机节点接收密码密钥;
b)由所述第一软件模块生成第一随机数;
c)由所述第一软件模块将包括所述第一随机数的第一密钥部分和要加密或解密的初始消息提供到所述第二软件模块;
d)由所述第一软件模块将第二密钥部分提供到所述第三软件模块,所述第二密钥部分包括从所述第一随机数和所述密码密钥导出的值;
e)由所述第二软件模块将混淆电路提供到所述第三软件模块或所述任选第四软件模块;
f)由所述第二软件模块将对应于所述第一密钥部分的第一混淆值提供到所述第三软件模块或所述任选第四软件模块;
g)由所述第二软件模块将对应于所述初始消息的混淆消息提供到所述第三软件模块或所述任选第四软件模块;以及
h)由所述第三软件模块或所述任选第四软件模块将所述第一混淆值、对应于所述第二密钥部分的第二混淆值和所述混淆消息作为输入应用于所述混淆电路以产生对应于所述初始消息的后续消息。
2.根据权利要求1所述的方法,其中所述任选第四软件模块并不存在于所述计算机节点中,并且其中所述方法还包括:
在步骤h)之前,由所述第二软件模块使用不经意传输过程将对应于所述第二密钥部分的所述第二混淆值发送到所述第三软件模块。
3.根据权利要求1所述的方法,其中所述计算机节点包括所述任选第四软件模块,并且其中:
在步骤e)中,将所述混淆电路提供到所述任选第四软件模块,
在步骤f)中,将对应于所述第一密钥部分的所述第一混淆值提供到所述任选第四软件模块,以及
在步骤g)中,将所述混淆消息提供到所述任选第四软件模块,并且其中所述方法还包括:
由所述第三软件模块将对应于所述第二密钥部分的所述第二混淆值提供到所述任选第四软件模块。
4.根据权利要求3所述的方法,其中所述方法还包括:
由所述第三软件模块将所述混淆电路提供到所述任选第四软件模块。
5.根据权利要求1所述的方法,其中由所述计算机节点接收所述密码密钥包括由所述计算机节点从硬件安全模块接收所述密码密钥。
6.根据权利要求1所述的方法,其中从所述第一随机数和所述密码密钥导出的所述值是所述密码密钥和所述第一随机数的异或结果。
7.根据权利要求1所述的方法,还包括:
在执行步骤a)至d)之后,由所述第一软件模块从本地存储器清除所述密码密钥、所述第一密钥部分和所述第二密钥部分。
8.根据权利要求1所述的方法,其中所述初始消息是明文消息,并且所述后续消息是呈加密形式的所述明文消息。
9.根据权利要求1所述的方法,所述方法还包括:
由所述第三软件模块将所述后续消息提供到所述第一软件模块。
10.根据权利要求1所述的方法,其中所述方法还包括:
由所述第一软件模块生成后续随机数;
由所述第一软件模块将所述后续随机数发送到所述第二软件模块和所述第三软件模块;
由所述第二软件模块生成包括从所述后续随机数和所述第一密钥部分导出的值的已更新第一密钥部分;以及
由所述第三软件模块生成包括从所述后续随机数和所述第二密钥部分导出的值的已更新第二密钥部分。
11.一种计算机节点,包括:
一个或多个数据处理器;以及
一个或多个非瞬态计算机可读介质,其包括第一软件模块、第二软件模块、第三软件模块和任选第四软件模块,所述一个或多个非瞬态计算机可读介质包括用于执行方法的代码,所述方法包括:
a)由所述计算机节点接收密码密钥;
b)由所述第一软件模块生成第一随机数;
c)由所述第一软件模块将包括所述第一随机数的第一密钥部分和要加密或解密的初始消息提供到所述第二软件模块;
d)由所述第一软件模块将第二密钥部分提供到所述第三软件模块,所述第二密钥部分包括从所述第一随机数和所述密码密钥导出的值;
e)由所述第二软件模块将混淆电路提供到所述第三软件模块或所述任选第四软件模块;
f)由所述第二软件模块将对应于所述第一密钥部分的第一混淆值提供到所述第三软件模块或所述任选第四软件模块;
g)由所述第二软件模块将对应于所述初始消息的混淆消息提供到所述第三软件模块或所述任选第四软件模块;以及
h)由所述第三软件模块或所述任选第四软件模块将所述第一混淆值、对应于所述第二密钥部分的第二混淆值和所述混淆消息作为输入应用于所述混淆电路以产生对应于所述初始消息的后续消息。
12.根据权利要求11所述的计算机节点,其中所述任选第四软件模块并不存在于所述计算机节点中,并且其中所述方法还包括:
在步骤h)之前,由所述第二软件模块使用不经意传输过程将对应于所述第二密钥部分的所述第二混淆值发送到所述第三软件模块。
13.根据权利要求11所述的计算机节点,其中所述计算机节点包括所述任选第四软件模块,并且其中所述方法还包括:
在步骤e)中,将所述混淆电路提供到所述任选第四软件模块,
在步骤f)中,将对应于所述第一密钥部分的所述第一混淆值提供到所述任选第四软件模块,以及
在步骤g)中,将所述混淆消息提供到所述任选第四软件模块,并且其中所述方法还包括:
由所述第三软件模块将对应于所述第二密钥部分的所述第二混淆值提供到所述任选第四软件模块。
14.根据权利要求11所述的计算机节点,其中所述方法还包括:
由所述第三软件模块将所述混淆电路提供到所述任选第四软件模块。
15.根据权利要求11所述的计算机节点,其中由所述计算机节点接收所述密码密钥包括由所述计算机节点从硬件安全模块接收所述密码密钥。
16.根据权利要求11所述的计算机节点,其中从所述第一随机数和所述密码密钥导出的所述值是所述密码密钥和所述第一随机数的异或结果。
17.根据权利要求11所述的计算机节点,其中所述方法还包括:
在执行步骤a)至d)之后,由所述第一软件模块清除含有所述密码密钥、所述第一随机数以及从所述第一随机数和所述密码密钥导出的所述值的本地存储器。
18.根据权利要求11所述的计算机节点,其中所述初始消息是明文消息,并且所述后续消息是呈加密形式的所述明文消息。
19.根据权利要求11所述的计算机节点,其中所述方法还包括:
由所述第三软件模块将所述后续消息提供到所述第一软件模块。
20.根据权利要求11所述的计算机节点,其中所述方法还包括:
由所述第一软件模块生成后续随机数;
由所述第一软件模块将所述后续随机数发送到所述第二软件模块和所述第三软件模块;
由所述第二软件模块生成包括从所述后续随机数和所述第一密钥部分导出的值的已更新第一密钥部分;以及
由所述第三软件模块生成包括从所述后续随机数和所述第二密钥部分导出的值的已更新第二密钥部分。

说明书全文

节点多方加密

背景技术

[0001] 在连接越来越多的世界中,密码术在维护隐私和安全方面越来越重要。AES等密码算法允许人们安全可靠地传送敏感信息。人们认为理所当然的许多活动,例如在线行业务、通过互联网与他们的医生通信或电子商务,都只能通过密码术实现。
[0002] 然而,即使最稳健的密码方法仍存在安全险。近年来,黑客开发出新的复杂密码攻击。此外,例如多方加密等许多最安全的密码方法为了安全会牺牲速度和效率。虽然黑客可能更难攻破此类方法,但此类方法太慢而不适用于现实世界的应用——尤其是在互联网等网络上,其中时延是个经常存在的问题。
[0003] 本发明实施例单独地以及共同地解决这些问题和其它问题。

发明内容

[0004] 本发明的实施例涉及用于单个计算节点上的多方加密的方法和系统。
[0005] 本发明的一个实施例涉及一种方法。所述方法包括:由包括第一软件、第二软件模块、第三软件模块和任选第四软件模块的计算机节点接收密码密钥;由所述第一软件模块生成第一随机数;由所述第一软件模块将包括所述第一随机数的第一密钥部分和要加密或解密的初始消息提供到所述第二软件模块;由所述第一软件模块将第二密钥部分提供到所述第三软件模块,所述第二密钥部分包括从所述第一随机数和所述密码密钥导出的值;由所述第二软件模块将混淆电路提供到所述第三软件模块或所述任选第四软件模块;由所述第二软件模块将对应于所述第一密钥部分的第一混淆值提供到所述第三软件模块或所述任选第四软件模块;由所述第二软件模块将对应于所述初始消息的混淆消息提供到所述第三软件模块或所述任选第四软件模块;以及由所述第三软件模块或所述任选第四软件模块将所述第一混淆值、对应于所述第二密钥部分的第二混淆值和所述混淆消息作为输入应用于所述混淆电路以产生对应于所述初始消息的后续消息。
[0006] 本发明的另一实施例涉及一种计算机节点,其包括一个或多个数据处理器以及一个或多个非瞬态计算机可读介质,所述一个或多个非瞬态计算机可读介质包括第一软件模块、第二软件模块、第三软件模块和任选第四软件模块,所述一个或多个非瞬态计算机可读介质包括用于执行上文方法的代码。
[0007] 关于本发明的实施例的其它细节可参见具体实施方式和附图

附图说明

[0008] 图1示出根据本发明的一些实施例的描绘包括具有三个软件模块的计算机节点的系统的框图
[0009] 图2A、2B和2C示出根据本发明的一些实施例的描绘双方计算方法的流程图
[0010] 图3示出根据本发明的一些实施例的描绘包括具有四个软件模块的计算机节点的系统的框图。
[0011] 图4A、4B和4C示出根据本发明的一些实施例的描绘三方计算方法的流程图。
[0012] 图5示出根据本发明的一些实施例的计算机节点。
[0013] 图6示出根据本发明的一些实施例的详述密钥部分重新播种的过程的流程图。
[0014] 图7示出根据本发明的一些实施例的密钥部分重新播种的示例。
[0015] 图8示出用于解释混淆电路的简单布尔(Boolean gate)。

具体实施方式

[0016] 在论述本发明的具体实施例之前,可详细描述一些术语。
[0017] 术语“密码密钥”可指用于加密或解密的事物。密码密钥可例如指两个大的质数的乘积。密码密钥可充当RSA或AES等密码过程中的输入,并且可用于加密明文且产生密文输出,或解密密文且产生明文输出。
[0018] 术语“明文”可指呈普通形式的文本。例如,这可指在无需任何处理的情况下可由人类或计算机读取的文本,例如短语“你好,近来如何?”其还可指呈未加密形式的文本。数字或其它符号也可适合作为明文。
[0019] 术语“密文”可指呈加密形式的文本。例如,这可指必须解密之后才可供人类或计算机读取的文本。密文可由RSA或AES等任何数目的密码算法生成。
[0020] 术语“多方计算”可指由多方执行的计算。举例来说,多方计算可在多方各自具有一些必要的计算输入时发生。例如,一方可能知道矩形一边的长度,并且另一方可能知道另一边的长度。双方可执行多方计算以确定矩形的面积。
[0021] 术语“安全多方计算”可指安全的多方计算。在许多情况下,这指其中各方彼此并不共享信息或其它输入的多方计算。举例来说,双方可能希望在不向彼此透露其财富的情况下知道其中哪一方更富有。双方可使用安全多方计算技术,例如混淆电路,以便实现这一点。
[0022] 术语“噪声阵列”可指填充有“噪声”或随机化的值的存储器块。噪声阵列可用于使存储的数据难以被外部观察者检测到。可利用随机值初始化噪声阵列,然后可在某一点或偏移处将数据写入到阵列。在不知道偏移的情况下,可能难以检测存储在噪声阵列内的非随机数据。
[0023] 布尔代数或布尔逻辑可指其中变量值是真值真和假的代数分支。主要运算是:AND,其仅在两个自变量为真时才返回真;OR,其仅在两个自变量为假时才返回假;以及NOT,其在自变量为真时返回假并且在自变量为假时返回真。通常,在布尔逻辑中将真和假表示为1和0。布尔逻辑是计算的根本,并且支持布尔门和电路。
[0024] 布尔门可指执行布尔逻辑函数的装置或软件。布尔逻辑函数的示例是“AND”、“OR”、“NAND”等。布尔门可具有输入线或端子以及输出线或端子。布尔门可由CMOS晶体管的集合构造,或作为软件存在。
[0025] 布尔电路可以是执行更复杂的布尔逻辑函数的布尔门的连接。举例来说,三个布尔门可连接以计算(AAND B)OR(C AND D)。大多数函数可在一定程度上通过布尔电路表示或计算。
[0026] 混淆“门”可以是带有隐藏或“混淆”含义的过程或计算。混淆门可执行布尔函数,例如AND函数或OR函数。混淆门可采取混淆值以便执行其函数。此外,混淆门可表示为加密表,由此,混淆值充当“解密”门的输出值的密码密钥。
[0027] 混淆电路可以是带有隐藏或“混淆”含义的过程或计算。例如,执行某个函数的数学方程式或程序,而观察者无法确定如何执行所述函数。混淆电路可用于安全多方计算以在不透露函数的输入的情况下计算函数的输出。混淆电路可将混淆值接受为输入。
[0028] 混淆电路可表示为混淆门的集合,并且可执行复杂函数,例如AES加密。混淆电路可表示为一系列解密事件,其中混淆电路中的每个混淆门使用输入到该门的混淆值作为密码密钥来解密。解密的结果可以是混淆门的输出,并且可用作解密另一混淆门的密码密钥。此过程可重复,直到整个电路解密,从而产生到混淆电路的输出。
[0029] 混淆值可以是带有隐藏或“混淆”含义的值。虽具有隐藏含义,但混淆值仍可用作混淆电路的输入,并且产生对应于混淆值的真实含义的正确输出。混淆值可以例如是字母或数字的随机序列,例如“ALG”。
[0030] I.概述
[0031] 本发明的实施例涉及用于在单个计算机节点上执行多方加密等安全多方计算的系统和方法。本发明的实施例提供一种密码系统,其对于某些类型的密码攻击(例如“冷启动”攻击)更具弹性,同时相比于通常遭受网络时延问题的典型多方加密方法能更快执行加密或解密。
[0032] 在标准多方计算方法中,多个计算机或服务器彼此呈操作性通信。每个计算机充当“一方”,它们共同在一起执行某一运算,例如数据的加密或解密。多方方案的优势在于,其在使用密码上通常比执行密码运算的单个计算机或服务器更安全。然而,多方计算方案会遭受显著的时延问题,因为网络中的计算机之间的延迟在计算过程中大规模累加。
[0033] 本发明的实施例提供单个计算机节点上的多方计算。本发明的实施例在单个计算机节点上提供彼此之间通信的多个软件模块,而非通过网络通信的计算机或服务器。这解决了网络时延问题。
[0034] 此外,本发明的实施例提供了保护密码密钥的创新方式。本发明的实施例所用的密码密钥几乎不可存取。优选的是,其仅可在起动或启动阶段期间存取。此时,可从硬件安全模块获得密码密钥。此密码密钥可用于产生两个密钥部分,所述两个密钥部分可分布在软件模块当中。这些密钥部分可供软件模块用于在仍保持密钥部分彼此隔离时对初始消息执行密码运算。此外,实施例提供额外创新,例如“重新播种”密钥部分并将其存储在噪声阵列内,从而使系统对黑客的尝试甚至更稳健且更具弹性。
[0035] II.密码术、混淆电路和不经意传输
[0036] 以下三个小节简要论述密码术、多方计算和不经意传输的概念。
[0037] A.密码术原理和攻击
[0038] 密码术是使用算法将明文(未加密文本)转换成密文(加密文本)、通常用以保护或限制对明文的存取的过程。简单示例是“儿童黑话(Pig Latin)”,一种小孩所用的系统,其中将主辅音移到每个单词的后面,并且每个单词都带有后缀“ay”:
[0039] “pig latin”→“igpay atinlay”
[0040] 密码术在计算机科学和计算机通信领域中很重要。密码术使隐私消息能够通过公共网络发送而无需担心消息被窃听方拦截和读取。这在消费者需要将信用卡号等敏感财务信息传送给商家的电子商务中尤为重要。消费者的信用卡号可被加密、传送到商家,然后由商家解密。窃听方或“中间人”无法确定信用卡号,因为信用卡号已通过加密模糊化。
[0041] 密码术方法依赖密码密钥。密码密钥是用于加密消息的数字或数字集。对称密码术方法涉及将相同的密码密钥用于加密和解密。非对称密码术,包括“公共-专用密钥”,涉及将不同密码密钥用于加密和解密。
[0042] 作为简单示例,设想使用RSA加密方法加密和解密消息“OK”。
[0043] 首先,将消息转换成数字。为简单起见,每个字母将转换为其在字母表中的对应位置(A→01、B→02、…Z→26),因此:
[0044] “OK”→1511
[0045] 在此示例中,公共密码密钥将是(n=3233,e=17),专用密钥将是(n=3233,d=413)。
[0046] 为了加密消息,计算:
[0047] 消息e mod n
[0048] 151117mod 3233=2880
[0049] 加密消息因此为“2880”。在无适当解密密钥的情况下,黑客或其它恶意用户将无法理解消息。
[0050] 为了解密消息,仅使用相同的公式但利用专用密钥:
[0051] 消息d mod n
[0052] 2880413mod 3233=1511
[0053] 接着,反向(01→A、02→B、…、26→Z)使用所述转换方法。
[0054] 1511→“OK”
[0055] 这些方法有作用,因为即使已知公共密钥,但确定密码密钥也是“在计算上不可行的”。这是因为密码密钥利用了科学家尚未找到良好解决方案的数学问题。例如,不存在已知的高效方法来确定大的复合数的质因数。虽然人和计算机将毫无障碍地快速确定100的质因数(2、2、5、5),但确定大数的质因数困难得多。因此,将RSA模数(以上示例中为3233)选为61和53这两个质数的乘积。
[0056] 通常,黑客并不尝试通过蛮计算或确定密码密钥。有时,黑客会尝试估测计算机系统的存储器以便弄清密钥。举例来说,黑客可在一段时间内读取整个计算机或系统的存储器状态。黑客可在统计上分析处理器的存储器状态或操作以标识加密事件。例如,黑客知道在执行RSA或其它加密算法之前的某一点,计算机或服务器需要访问存储器以便检取密码密钥。由于密钥通常是数百位或在一些情况下数百个数字长的数,因此黑客可寻找在某一时间中被重复存取的大数。(例如,处理交易的商家可能在一小时的过程中加密或解密数千各信用卡号)黑客则可使用标识的或可能的密码密钥进行“猜测和校验”,尝试对加密消息解密,直到他们找到起作用的密钥为止。
[0057] 另一示例是“冷启动攻击”。在冷启动攻击中,黑客断开计算机的供电,然后恢复电力。计算机存储器,例如DRAM或SRAM,在发生冷启动之后会保持存储器中存储的值达数秒或数分钟。黑客可将计算机存储器转储到另一驱动器或计算机系统,黑客可稍后分析所述驱动器或计算机系统以确定密码密钥。
[0058] 存在若干方法来减小密码攻击的效力,但几乎不存在一体适用解决方案。常见方法是轮循密码密钥,使用一个密钥一段时间后切换到新的密钥。
[0059] 本发明的实施例通过将密码密钥拆分成多个密钥部分来提供更大的密码安全性。这些密钥部分可各自与软件模块相关联,并且隐藏在存储器中不同的不断改变的位置。此外,可通过生成随机数并使用那些随机数对密钥部分进行运算来周期性地修改这些密钥部分。因此,黑客几乎不可能通过蛮力或通过存储器转储和分析来重建密码密钥。
[0060] B.多方计算和混淆电路
[0061] 多方计算是多方一起工作以计算结果的方法。例如,设想两个人试图确定矩形露台的面积。第一个人可沿着一边测量,而第二个人可沿着另一边测量。第一个人可将其测量值告诉第二个人,而第二个人可将其测量值告诉第一个人。他们各自可根据两个测量值计算露台的面积,并共享结果。在此情况下,多方计算是一种节约时间的技术,无须测量两个尺寸,每个人仅需要测量单个尺寸。
[0062] 在密码背景下,多方计算包括保密的各方面。双方可能希望协作以执行某一函数或算法;然而,他们可能不希望与彼此共享其输入。举例来说,两个人可各自具有银行库的密码,其中银行库仅在使用两个密码的情况下才可打开。如果一个人向另一个人透露其密码,则此人自己可以打开银行库。因为这存在安全问题,每个人希望能够在不透露其密码给其它人员的情况下打开银行库。
[0063] 经典多方计算问题是“姚氏百万富翁问题”,其中两个虚拟的百万富翁希望在不透露其财富给彼此的情况下确定他们中哪个更富有。此类“安全多方计算”问题可通过使用混淆电路解决。
[0064] 在计算机科学中,“电路”通常是指可通过物理电路——在许多情况下为布尔电路——建模的计算。布尔电路是包括输入线和输出线的一系列“逻辑门”,在给电路馈以输入时会产生对应于布尔函数的输出。布尔门的示例是AND门,其采用两个逻辑输入(真或假)并在输入均为真时返回真,否则返回假。可表示为由三个门构成的电路的布尔函数的示例是F(A,B,C,D)=(AAND B)OR(C AND D)。图8中示出所述电路。
[0065] 示出在每个线上馈入两个AND门的变量A、B、C和D。两个AND门的输出馈入OR门,最终输出线具有等于上文所列函数的逻辑值。
[0066] 布尔门可互连成电路以便执行几乎任何函数,包括密码函数。具有大约32,000个门的布尔电路可用于根据高级加密标准(AES)加密或解密消息,所述AES是美国国家标准与技术研究所确立的电子数据加密规范。
[0067] 混淆电路很像传统布尔电路,不同之处在于,每个布尔门替换成了“混淆门”。混淆门执行与布尔门相同的函数,但输入和输出被“混淆”以使得函数无法被标识。
[0068] 举例来说,设想AND门。下文产生“真值表”,其为描述门的函数的表。A和B是输入线,而F是输出线。值1对应于真,并且值0对应于假:
[0069]A B F
0 0 0
0 1 0
1 0 0
1 1 1
[0070] 值得注意的是,当两个输入的值为1时,输出的值仅为1或真。
[0071] 为了对门进行混淆,每个值可替换为随机数。举例来说,A=0可替换为A=23,A=1可替换为A=17,B=0可替换为B=98,B=1可替换为B=2,F=0可替换为F=77,并且F=1可替换为F=100:
[0072] A B F23 98 77
23 2 77
17 98 77
17 2 100
[0073] 观察者能够通过观察各行中的模式来确定此门执行的AND函数。还可通过打乱各行来混淆所述门:
[0074]A B F
17 2 100
17 98 77
23 2 77
23 98 77
[0075] 混淆电路中的每个混淆门,甚至是执行相同函数的那些门,可使用对应于其输入和输出线的不同随机数集。因此,混淆电路将执行正确的函数,但混淆电路的每个级处的线上的值无法被观察者理解。
[0076] 此外,混淆门的混淆输出线通常通过双重加密而与输入线相关,其中该门的输入线是加密密钥:
[0077]输出线
加密17,2(100)
加密17,98(77)
加密23,2(77)
加密23,98(77)
[0078] 其中加密A,B(F)表示值F(在此情况下,100或77)使用A和B作为加密密钥进行了加密。
[0079] 这意味着,混淆门可作为一系列(在这种情况下,4个)数字(加密17,2(100)、加密17,98(77)、加密23,2(77)、加密23,98(77))在各方之间传送。为了估测所述门,接收方尝试使用其输入作为加密密钥来解密四个数字中的每个数字。在一些情况下,用零填充输出以便使正确的解密更可标识。
[0080] 举例来说,接收方可接收对应于混淆门的数字“12492143”、“77843491”、“64637872”和“41121099”。接收方可具有对应于A=1和B=1的混淆值17和2。接收方尝试解密四个数字,并且下表汇总了结果:
[0081]
[0082] 接收方可看到第一结果已用零填充。此外,其余所有结果呈现为随机数。因此,接收方可确定到混淆门的正确输出是“100”。此值可用作电路中的后续混淆门的输入,诸如此类,直到完成电路的函数为止。
[0083] 混淆电路在安全多方计算中的有用性在于以下实情:可对每一方的输入进行混淆,使得另一方不理解输入的含义。以此方式,双方均可在无须向另一方透露其输入的情况下接收计算的输出。
[0084] 总之,最适用的函数可表示为由例如AND或OR或XOR等布尔逻辑门构成的布尔电路。每个门采取一个或多个逻辑值并输出逻辑值。充分复杂的布尔电路可实施加密等适用函数。混淆电路可由混淆门构成,并且可实施与对应的布尔电路相同的功能。混淆门将对应于真和假的逻辑值替换为任意或随机数。此外每个混淆门的输出可使用混淆门的对应输入进行加密。为了估测混淆电路,一方使用混淆输入值解密每个门的输出,然后使用那些输出作为混淆输入值来解密电路中的下一层门的输出。最终,可解密最终层的门,从而产生混淆电路的输出。
[0085] 混淆电路还可由转译或解释表组成。此表可采用混淆电路的输出并将其转换成更可解释的形式。举例来说,混淆电路可输出对应于最终层混淆门的输出的一系列位。这些位可通过转译表解释,以便表示为一系列字母或数字。例如,位串“1011 1100 1110”可通过转译表转换成十进制数“11、12、13”或字母,例如“KLM”。
[0086] 本发明的实施例使用混淆电路,使得密码密钥可拆分为多个密钥部分以使对密码密钥的危害变得更难。胜于具有黑客可能能够在存储器中找到的单个密码密钥,密钥可拆分成两个密钥部分。可将每个密钥部分发送到不同软件模块。当消息需要被加密或解密时,胜于使用密码密钥,软件模块可使用设计成加密或解密消息的混淆电路来执行安全多方计算。因为使用了混淆电路,所以软件模块无法得知另一密钥部分。这使得黑客明显更难以在存储器中找到整个密钥以及危害系统安全。
[0087] C.不经意传输
[0088] 不经意传输是第一方可在完全不知道传送的是什么消息的情况下将消息传送给第二方的程序。不经意传输用于一些多方计算应用。在安全多方计算中,若干方将具有计算输入。例如,如果安全多方计算涉及确定两个百万富翁(两方)中的哪一个更富有(即,具有更多资金),则每一方的输入可以是该百万富翁具有的资金量。这是用混淆值取代输入的目的。从输入值(即,百万富翁示例中的资金量)转变为混淆值时,会产生固有问题。例如,如果第一百万富翁生成混淆电路,他或她会知道对应于他的或她的多方计算输入(其财富)的混淆值。然而,第二方不知道对应于其输入的混淆值,因为第二百万富翁不知道如何生成混淆电路。此外,第二方不能仅仅要求对应于其输入的混淆值,因为这将需要第二方将其输入透露给第一方。基本上,第二百万富翁将向第一百万富翁透露其具有多少资金,而第一百万富翁不会保护第二百万富翁的私人信息。
[0089] 不经意传输是此问题的解决方案,其允许第二方从第一方接收其混淆值而不会将其输入透露给第一方。在第III部分中更详细地论述的本发明的实施例中,多方计算的输入是两个密钥共享。如果任一方收集到两个密钥共享,则可重建密码密钥。这是应避免的安全危险。不经意传输允许对应于每个密钥共享的混淆值传送到每一方,而任一方不会接收到另一方的输入。因此,任一方都不能重建密码密钥,从而使系统总体更安全。
[0090] 存在不经意传输的许多变体,1-2不经意传输是指其中接收方从发送方接收到两个消息中的一个消息而发送方不知道接收方接收到哪个消息的不经意传输。1-n不经意传输是指其中接收方从发送方接收到n个消息中的一个消息而发送方不知道哪个消息被接收到的不经意传输过程。k-n不经意传输是指其中接收方从发送方接收到n个消息中的k个的不经意传输过程。
[0091] 在1-2不经意传输中,发送方具有两个消息m0和m1。发送方想要接收方接收消息中的一个,但不想知道接收方接收到哪个消息。举例来说,消息m0可对应于可用于多方计算的一个混淆值,并且消息m1可对应于可用于多方计算的另一混淆值。为了执行1-2不经意传输,发送方想要加密两个消息以使得仅一个消息可被接收方有意义地解密。接着,发送方可将两个加密消息发送给接收方。接收方尝试解密两个消息,但将仅能够解密消息中的一个:
[0092]   原始 由第一方加密 由第二方解密消息1 “你好” 12380120 “你好”
消息2 “再见” 84938382 “FJSLDSL”
[0093] 因为发送方不知道接收方可解密哪个消息,以及因为接收方无法解密另一消息,所以仅一个消息传送到接收方,使得第一方不知道传送了哪个消息。
[0094] 重复的1-2不经意传输适用于传送对应于表示为二进制序列的数据的混淆值。在二进制中,单个位表示为1或0。如果接收方想要接收对应于二进制序列“01011”的混淆值,则接收方希望接收到五个混淆值,第一个对应于序列中的第一位置中的“0”,第二个对应于“1”,诸如此类。发送方将依序发送对应于“0”的混淆值而不知道其发送的是对应于“0”还是“1”的混淆值,然后发送对应于“1”的混淆值而不知道其发送的是对应于“0”还是“1”的混淆值,诸如此类,直到发送了所有混淆值。由于大多数消息可按二进制编码,因此只要进行足够的重复,就可将1-2不经意传输用于不经意地传输任何长度的消息。
[0095] 以下是可如何使用RSA加密实现这一点的详细示例。不经意传输并不局限于RSA加密,许多其它加密算法可用于不经意传输。
[0096] 第一方具有两个消息:m0=“NO”和m1=“OK”。这些消息可被认为是分别对应于“0”或假以及“1”或真的混淆值。使用上文介绍的转换方案(A=01、B=02、...Z=26)将这两个消息转换成数字:
[0097] m0=1415
[0098] m1=1511
[0099] 第一方通过生成公共-专用密钥对开始。对于此示例,公共密钥将是(n=3233,e=17),专用密钥将是(n=3233,d=413)。
[0100] 第一方生成两个随机消息:x0和x1:
[0101] x0=“AA”=“0101”
[0102] x1=“EE”=“0505”
[0103] 生成这些随机数以使得第二方可“盲化(blind)”后续加密。通过盲化加密,第二方可创造允许不经意传输的不明确性。第一方将不知道x0和x1中的哪个用于盲化加密,并且不能够弄清两个后续值中的哪个是“正确”值。
[0104] 随机数x0和x1以及公共密钥由第一方发送给第二方。
[0105] 现在,第二方生成随机数k,此随机数将通过随机数中的一个进行盲化、使用公共密钥进行加密并被发送回到第一方。出于此示例的目的,k=1234。
[0106] 第二方选择对应于第二方想要接收的消息的随机数。例如,如果第二方想要对应于“1”或真的混淆值,则第二方想要消息m1。为进一步阐明,第二方的多方计算输入可以是以二进制表示为“1100”的数字“12”。第二方想要的第一混淆值是对应于“1”的混淆值,并且因此想要消息m1。这意味着第二方选择随机数x1。如果第二方想要对应于假的混淆值,则第二方将选择对应于消息m0的随机数x0。在此示例中,第二方选择x1=0505。
[0107] 现在,第二方通过添加x1到k而将k盲化,然后使用公共加密密钥加密所得值:
[0108] v=(0505+123417)mod 3233=2688
[0109] 由第二方将此加密值v发送回到第一方。
[0110] 接着,第一方尝试使用随机数x0和x1两者解除盲化加密值并使用专用密钥(n=3233,d=413)对其进行解密:
[0111] k0=(v-x0)d mod n
[0112] k0=(2688-0101)413mod 3233=727
[0113] k1=(v-x1)d mod n
[0114] k1=(2688-0505)413mod 3233=1234
[0115] 值k1等于k的原始值,值k0并不如此,但第一方不知道这一点,因为第二方从未将k的值告诉第一方。
[0116] 接着,第一方通过添加k的对应值而盲化每个消息,然后将两个消息均发送给第二方:
[0117] m0'=m0+k0=1415+727=2142
[0118] m1'=m1+k1=1511+1234=2745
[0119] 第二方从两个消息减去其用于k的值:
[0120] m0=m0'-1234=2142-1234=0908→“IH”
[0121] m1=m1'-1234=2745-1234=1511→“OK”
[0122] 现在,第二方具有两个消息,一个有意义(“OK”),而一个无意义。因此,不经意传输过程成功,因为第二方接收到一个消息,而第一方不知道第二方接收到哪个消息。
[0123] 总之,使用不经意传输以使得可在任一方不知晓另一方的混淆值的情况下估测混淆电路。在1-2不经意传输使用RSA的情况下,这通过利用两个其它随机值x0和x1中的一个盲化随机值k来实现。发送方无法确定k,但可确定k的两个可能值:k0和k1。通过将k的每个值添加到对应消息中的每个消息,第一方可发送两个消息到第二方,使得第二方仅可通过从两个消息减去其已知的k值而确定消息中的一个消息的含义。由于第二方不知道k的另一可能值,因此其仅可确定消息中的一个消息的含义。
[0124] 本发明的实施例利用混淆电路以便更有效地保护对称密码术中所用的密钥。胜于仅实施对称密码术,本发明的实施例通过使用混淆电路来实施对称密码术,使得两个密钥部分可分开,从而使黑客或恶意用户更难以找出它们。一些实施例中使用不经意传输,使得软件模块可接收对应于其密钥部分的混淆值以便加密消息而不会将其密钥部分泄漏给其它软件模块。以下部分更详细地论述根据本发明的实施例的系统和方法。
[0125] III.系统和方法
[0126] 根据本发明的实施例的系统和方法允许单个计算机节点上的多方计算。虽然存在单个计算机节点上的多方计算的许多实际应用,但下文的论述将主要聚焦于其在对称密码术中的应用。
[0127] 所述方法使单各计算机节点能够从位于受限区域上、受限区域中或可操作地联接到受限区域的硬件安全模块接收密码密钥。三个或四个软件模块中的第一软件模块可从密码密钥产生两个密钥部分,每个密钥部分被发送到并隐藏于其余两个或三个软件模块中的一个软件模块内。以此方式,黑客或恶意用户不能够发现或重建密码密钥并危害系统。
[0128] 此外,三个或四个软件模块中的第一软件模块可将初始消息传送给其余两个或三个软件模块中的一个软件模块。所述两个或三个软件模块可在它们之间执行多方计算,以便从初始消息产生后续消息。举例来说,多方计算可以是加密过程,其中初始消息是明文消息,并且多方计算涉及使用密钥部分作为对称密钥来产生加密消息。另外,多方计算可以是解密过程,其中初始消息是加密消息或密文消息,并且多方计算涉及使用密钥部分作为对称密钥来产生解密消息或明文消息。
[0129] 以下论述主要聚焦于本发明的两个实施例,第一实施例利用双方计算,而第二实施例利用三方计算。两个实施例均利用混淆电路。双方计算在图1、2A和2B中示出,并在下文小节A中论述。三方计算在图3、4A和4B中示出,并在下文小节B中论述。
[0130] 根据双方实施例的方法与根据三方实施例的方法存在许多实质性的相似之处。一个差别在于,在双方实施例的情况下,计算机节点可拥有三个软件模块。在三方实施例的情况下,计算机节点可拥有四个软件模块。另外,双方实施例可利用不经意传输。
[0131] A.双方
[0132] 以下部分详述根据本发明的实施例的用于实施例如对称密码术的安全双方计算的方法和系统。
[0133] 图1示出包括第一软件模块106、第二软件模块108和第三软件模块110的计算机节点100。图1还示出包括硬件安全模块104的受限区域102。
[0134] 计算机节点100可包括单个处理器或处理器的集合以及一个或多个接口,所述接口使计算机节点100能够与硬件安全模块104通信或通过其它计算机或服务器在网络上通信。另外,计算机节点100可包括含有软件或其它代码的计算机可读介质。此计算机可读介质可含有体现第一软件模块106、第二软件模块108和第三软件模块110的软件例程和子例程。其还可包括实现随机或伪随机数的生成的代码,以及可供模块或计算机节点100本身使用的额外存储器。下文在小节C中论述并在图5中示出关于计算机节点的部件和结构的更多细节。图1中的步骤S102到S132在下文参考图2A和2B详细论述。
[0135] 受限区域102可以是设计成限制对受保护资源的存取的计算机、服务器或其它专用硬件。在一些实施例中,这种受保护资源可以是密码密钥。受限区域102可设计成使得其仅可在特定条件集下存取或仅通过特定方式存取。例如,受限区域102可能未连接到互联网或其它网络。因此,受限区域上的任何受保护信息必须通过直接连接或通过用户终端进行存取。
[0136] 受限区域102还可包括硬件安全模块102。硬件安全模块104可以是位于受限区域102中或可操作地联接到所述受限区域的专用软件。硬件安全模块104可以是受限区域102与计算机节点100之间的接触点。硬件安全模块104可设计成使得对存储在硬件安全模块
104上的存储器中或受限区域102内其它处的受保护资源的存取可受到很大限制。例如,硬件安全模块可仅在输入口令时或针对首次起动、冷启动或硬复位或软复位后的受限时间段而在某一时间窗内(例如上午12:00与1:00之间)释放受保护资源。在本发明的一些实施例中,硬件安全模块104含有可通过安全连接传送到第一软件模块106的密码密钥。
[0137] 第一软件模块106包括能实现各种功能的软件例程和子例程。值得注意的是,第一软件模块106能够生成随机或伪随机数、执行算术和逻辑函数、管理存储器以及传送和接收数据,包括进出其它软件模块的密码密钥或密钥部分。具体地说,第一软件模块106可从硬件安全模块104接收密码密钥、生成第一随机数并且生成两个密钥部分。第一密钥部分包括第一随机数,并且第二密钥部分包括第一随机数和密码密钥的异或(XOR)结果。第一软件模块可将第一密钥部分传送到第二软件模块108,并将第二密钥部分传送到第三软件模块110。
[0138] 另外,第一软件模块106能够从用户或通过网络接口从另一计算机或实体接收初始消息,例如明文消息。第一软件模块还能够将初始消息传送到第二软件模块108。第一软件模块106还能够生成后续随机数并将后续随机数传送到第二软件模块108和第三软件模块110两者。另外,第一软件模块106能够管理存储器,例如删除、清除或重新分配可能含有密码密钥、第一随机数或任何后续随机数的本地存储器。
[0139] 在一些实施例中,第一软件模块106能够通过用户接口与用户介接或通过互联网等网络与其它计算机或服务器介接。
[0140] 就如第一软件模块106,第二软件模块108包括允许各种功能的软件例程和子例程。第二软件模块108能够从第一软件模块106接收随机数和消息。第二软件模块108还能够生成混淆电路。在本发明的一些实施例中,此混淆电路可进行加密算法,例如高级加密标准(AES)。另外,第二软件模块108可生成对应于混淆电路的输入的混淆值。这些混淆值可包括对应于第一密钥部分的混淆值以及对应于初始消息的混淆值。第二软件模块108还可含有或包括允许将混淆值、混淆消息以及混淆电路传送到第三软件模块110的代码。另外,第二软件模块可具有执行不经意传输过程或算法的能力,所述不经意传输过程或算法实现将对应于第二密钥部分的混淆值不经意地传输到第三软件模块。
[0141] 此外,第二软件模块108可将第一密钥部分存储在本地存储器中的可变位置,并根据需要检取第一密钥部分。第二软件模块108还可含有或包括使第二软件模块108能够使用从第一软件模块106接收的后续随机数更新第一密钥部分的值、使本地存储器随机化、然后将新的第一密钥部分写入本地存储器中的新位置处的代码。下文在小节D中更详细地论述此程序。
[0142] 第三软件模块110可含有或包括使其能够从第二软件模块108接收混淆电路、混淆消息和混淆值的代码。此外,第三软件模块110可包括能实现在第二软件模块108与第三软件模块110之间进行不经意传输以便接收对应于第二密钥部分的混淆值的代码。另外,第三软件模块可含有或包括允许第三软件模块110使用混淆消息、对应于第一密钥部分的混淆值以及对应于第二密钥部分的混淆值估测混淆电路的代码。
[0143] 如同第二软件模块108,第三软件模块110可将第二密钥部分存储在本地存储器中的可变位置,并根据需要检取第二密钥部分。第三软件模块110还可含有或包括使第三软件模块110能够使用从第一软件模块106接收的后续随机数更新第二密钥部分的值、使本地存储器随机化、然后将新的第二密钥部分写入本地存储器中的新位置处的代码。
[0144] 图2A和2B示出用于使用双方计算从初始消息产生后续消息的方法200。所述方法将在下文参考图1、2A和2B进行描述。
[0145] 参考图1和图2A,在步骤S102,第一软件模块106从硬件安全模块104接收密码密钥。这可通过有线或无线连接发生,并且密码密钥可以任何合适格式或通过任何合适通信协议进行传送。举例来说,密码密钥可作为单个位的流或作为八位位组或字节的流串行地传送。密码密钥可另外以加密格式传送并由计算机节点100或第一软件模块106解密。密码密钥通常可呈数的形式,例如两个大质数的乘积,或其可呈多个数的形式。
[0146] 此外,密码密钥可在受限时间段或在受限时间段期间传送,或需要某个授权或口令。这可减小密码密钥在传送期间失窃、泄漏或拦截的风险。
[0147] 在步骤S104,第一软件模块106生成第一随机数。在一些实施例中,这可以是由许多伪随机数生成算法中的一个算法生成的伪随机数。
[0148] 在步骤S106,第一软件模块106将包括第一随机数的第一密钥部分提供到第二软件模块108。所述提供过程可取决于计算机节点100或其模块的软件或硬件架构。举例来说,可将共享存储器池中某一范围的存储器地址分配给每个软件节点。因此,将包括第一随机数的第一密钥部分提供到第二软件模块108可涉及第一软件模块106从第一存储器范围复制随机数并将随机数写入到对应于分配给第二软件模块108的存储器的第二存储器范围。
[0149] 在步骤S108,第一软件模块106将初始消息提供到第二软件模块108。此初始消息可以是明文消息,并且出于生成加密消息的目的,可将所述初始消息提供到第二软件模块108。如同第一密钥部分,初始消息可取决于计算机节点100或硬件或软件架构的实施细节而以多种方式传送到第二软件模块108。
[0150] 在步骤S110,第一软件模块106将包括第一随机数和密码密钥或从第一随机数和密码密钥导出的第二密钥部分提供到第二软件模块108。这可涉及执行数学或逻辑运算以便组合第一随机数和密码密钥。作为单个非限制性示例,第一随机数可与密码密钥进行XOR运算以便产生第二密钥部分。将第二密钥部分提供或传送到第三软件模块110基本上与将第一密钥部分提供到第二软件模块108或将初始消息提供到第二软件模块108相仿。
[0151] 在步骤S112,第二软件模块108将混淆电路提供到第三软件模块110。混淆电路可采用许多不同形式。举例来说,混淆电路可呈一系列混淆表的形式,每个混淆表对应于混淆门,其中混淆表中的每一行包括使用混淆门的输入作为加密密钥双重加密的混淆门输出。将混淆电路从第二软件模块108提供到第三软件模块110可涉及复制存储在与第二软件模块108相关联的一系列存储器地址中的值并将那些值写入到对应于第三软件模块110的一系列存储器地址。
[0152] 在步骤S114,第二软件模块108将对应于第一密钥部分的第一混淆值提供到第三软件模块110。此第一混淆值可稍后由第三软件模块110用作混淆电路的输入以便执行混淆电路的功能。混淆值通常可呈数值序列形式。
[0153] 在步骤S116,第二软件模块108将对应于初始消息的混淆消息提供到第三软件模块110。就如第一混淆值,此混淆消息将用作混淆电路的输入以便执行其函数并估测结果。在一些实施例中,混淆电路的输出可以是明文初始消息的密文或加密版本。在一些实施例中,混淆电路的输出可以是密文初始消息的明文或未加密版本。
[0154] 现参考图1和2B,在步骤S118,第二软件模块108通过不经意传输将对应于第二密钥部分的第二混淆值提供到第三软件模块110。作为回顾,不经意传输的过程涉及以使得仅一个值可由接收方有意义地解释的方式传送多个值。以此方式,接收者仅接收到一个有意义的值,而发送方不知道接收方可理解哪个值。
[0155] 在步骤S120,第三软件模块110将第一混淆值、第二混淆值和混淆消息用作混淆电路的输入以产生对应于初始消息的后续消息。在初始消息包括明文的情况下,后续消息可包括加密消息或密文消息。在初始消息包括密文的情况下,后续消息可包括明文消息。
[0156] 上文已论述混淆电路的估测。一般来说,混淆电路的估测涉及重复解密。混淆消息、第一和第二混淆值用作解密第一“层”混淆门的密钥,从而产生新的混淆值集。这些混淆值继而用以解密第二层混淆门。这重复到最终混淆门被解密为止,所得输出值对应于后续消息。
[0157] 在一些情况下,转译表可用于将最终混淆门的输出转换成不同数据格式。举例来说,混淆门的最终输出可以是混淆序列或二进制序列,所述混淆序列或二进制序列可接着转换成非混淆序列或非二进制序列。
[0158] 在本发明的一些实施例中,混淆电路实施加密函数或算法,例如AES,因此混淆电路的所得输出值对应于初始消息的加密版本。
[0159] 在步骤S122,第三软件模块110将后续消息提供到第一软件模块106。第一软件模块106现拥有初始消息的加密副本。加密消息可发送到网络上的其它计算机、存储以供将来使用或由用户存取。
[0160] 现参考图1和2C,以下步骤描述密钥部分重新播种的过程。在小节D中参考图6到7更详细地论述了密钥部分重新播种。密钥部分重新播种未必紧跟着上文所描述的步骤。在一些实施例中,密钥部分重新播种的过程以预定的配置时间间隔发生。举例来说,密钥部分重新播种可每两小时、每天、每几周或任何其它时间单位发生。另外,密钥部分重新播种可在例如每个加密事件、每三个加密事件等基于加密的进度上发生。此外,密钥部分重新播种可手动地发生。在一些实施例中,人类或机器操作者可提示系统使用下文在小节D中描述的程序重新播种密钥部分。因此,以下段落描述其中可重新播种密钥部分的示例方法,并且所述示例方法旨在作为非限制性示例。
[0161] 在步骤S124,第一软件模块106生成后续随机数。这可紧接在第三软件110模块将后续消息提供到第一软件模块106之后发生。在一些实施例中,可以例如每三小时一次的规律速率生成后续随机数。在其它实施例中,可根据已知进度或在用户请求生成后续随机数等事件发生时生成后续随机数。
[0162] 在步骤S126,第一软件模块106将后续随机数提供到第二软件模块108。提供后续随机数的过程可基本上类似于将第一密钥部分提供到第二软件模块108。
[0163] 在步骤S128,第一软件模块106将后续随机数提供到第三软件模块110。
[0164] 在步骤S130,第二软件模块108生成包括从后续随机数和第一密钥部分导出的值的已更新第一密钥部分。这可涉及第二软件模块108从存储器检取第一密钥部分、使用后续随机数对第一密钥部分执行运算以及将结果作为已更新密钥部分存储在存储器中。在一些实施例中,已更新第一密钥部分可等于第一密钥部分XOR后续随机数。
[0165] 在步骤S132,第三软件模块110生成包括从后续随机数和第二密钥部分导出的值的已更新第二密钥部分。这可涉及第三软件模块110从存储器检取第二密钥部分、使用后续随机数对第二密钥部分执行运算以及将结果作为已更新密钥部分存储在存储器中。就如在步骤S130,在一些实施例中,已更新第二密钥部分可等于第二密钥部分XOR后续随机数。
[0166] 步骤S124到S132中描述的过程是称作密钥部分重新播种的过程的部分,并且在下文部分D中参考图6到7进一步详细论述。
[0167] B.三方
[0168] 以下部分详述根据本发明的实施例的用于实施例如对称密码术的安全三方计算的方法和系统。
[0169] 三方实施例与双方实施例之间的一个差别是:包括了第四软件模块。胜于第三软件模块估测混淆电路,第三软件模块改为承担与第二软件模块的作用类似的作用,生成混淆值以及任选地混淆电路,并将混淆值和混淆电路提供到第四软件模块。第四软件模块估测混淆电路并将结果返回到第一软件模块。三方实施例的一个优势在于,密钥部分被进一步隔离。估测混淆电路的软件模块在任何时间无权存取任何非混淆密钥部分。
[0170] 图3示出包括第一软件模块306、第二软件模块308、第三软件模块310和第四软件模块312的计算机节点300。图3还示出包括硬件安全模块304的受限区域302。图3和计算机节点300基本上类似于图1和计算机节点100。由此,共享或类似的部件,例如硬件安全模块304、第一软件模块306、第二软件模块308和第三软件模块310可参考图1进行理解。以下段落将主要论述显著的差别,包括第四软件模块312。
[0171] 在图3中,计算机节点300可基本上类似于图1中的计算机节点100。其可包括含有软件或其它代码的计算机可读介质。此计算机可读介质可含有体现第一软件模块306、第二软件模块308、第三软件模块310和第四软件模块312的软件例程和子例程。
[0172] 图3中的受限区域302可基本上类似于图1中的受限区域102,并且可以是设计成限制对密码密钥等受保护资源的存取的计算机、服务器或其它专用硬件。
[0173] 图3中的硬件安全模块304可基本上类似于图1中的硬件安全模块104。硬件安全模块304可以是位于受限区域302中或可操作地联接到所述受限区域的专用软件或硬件。
[0174] 图3中的第一软件模块306可基本上类似于图1中的第一软件模块106。除了其它功能,第一软件模块还能够生成随机或伪随机数、执行算术和逻辑函数、管理存储器以及传送和接收数据,包括进出其它软件模块的密码密钥或密钥部分。
[0175] 在图3中,第二软件模块308能够将混淆值、混淆消息和混淆电路提供到第四软件模块312而非第三软件模块310。这不同于来自图1的可将这些混淆消息、值和电路提供到第三软件模块110的第二软件模块108。在许多其它方面,第二软件模块308类似于图1中的第二软件模块108。
[0176] 在图3中,第三软件模块310不使用混淆值和混淆消息估测混淆电路。替代地,第三软件模块310可将对应于其混淆输入的混淆值连同混淆电路一起提供到第四软件模块312。在这方面,第三软件模块310类似于图1中的第二软件模块108,因为所述第三软件模块执行许多相同或类似的功能,包括将混淆值和混淆电路提供到另一软件模块。
[0177] 第四软件模块312可包括允许第四软件模块312从第二软件模块308和第三软件模块310接收混淆值、混淆消息和混淆电路的代码。第四软件模块312可另外含有代码或软件,所述代码或软件使第四软件模块能够使用混淆值和混淆消息作为输入估测混淆电路以便产生后续消息。此外,第四软件模块312能够将后续消息提供或传送到第一软件模块306。
[0178] 图4A和4B示出用于使用三方计算从初始消息产生后续消息的方法400。此方法将在下文参考图3、4A和4B进行描述。如同图1和3,图4A和4B与图2A和2B存在实质性的相似之处,因此图4A和4B总体上可参考图2A和2B以及小节A进行理解。以下段落将主要聚焦于图4A和4B中示出的与图2A和2B中的步骤不同的步骤。此外,将省去一些细节,例如数据可在软件模块之间传送或存储在存储器中的方法,因为在图2A和2B的描述中给出的示例在此处同样适用。
[0179] 参考图3和4A,在步骤S302,第一软件模块306从硬件安全模块接收密码密钥。
[0180] 在步骤S304,第一软件模块306生成第一随机数。
[0181] 在步骤S306,第一软件模块306将包括第一随机数的第一密钥部分提供到第二软件模块308。
[0182] 在步骤S308,第一软件模块306将初始消息提供到第二软件模块308。
[0183] 在步骤310,第一软件模块306将包括第一随机数和密码密钥的第二密钥部分提供到第三软件模块S310。
[0184] 在步骤S312,第二软件模块308将混淆电路提供到第四软件模块312而非如图2A中所描述的第三软件模块310。
[0185] 在步骤S314,第二软件模块308将对应于第一密钥部分的第一混淆值提供到第四软件模块312而非如图2A中所描述的第三软件模块310。
[0186] 在步骤S316,第二软件模块308将对应于初始消息的混淆消息提供到第四软件模块312而非如图2A中所描述的第三软件模块310。
[0187] 现参考图3和4B,在步骤S318,第三软件模块310将对应于第二密钥部分的第二混淆值提供到第四软件模块312。
[0188] 在步骤S319,第三软件模块310可任选地将混淆电路提供到第四软件模块312。此步骤提供额外安全益处。从第三软件模块310接收到的混淆电路可与从第二软件模块308接收到的混淆电路相比较。如果混淆电路不匹配,这可暗示第二软件模块308或第三软件模块310受损。可终止程序以便维持程序的密码安全。
[0189] 在步骤S320,第四软件模块312将第一混淆值、第二混淆值和混淆消息用作混淆电路的输入以产生对应于初始消息的后续消息。这包括双方实施例与三方实施例之间最显著的差别:第四软件模块312而非第三软件模块310估测混淆电路。
[0190] 在步骤S322,第四软件模块312将后续消息提供到第一软件模块306。
[0191] 现参考图1和4C,以下步骤描述密钥部分重新播种的过程。在小节D中参考图6到7更详细地论述了密钥部分重新播种。密钥部分重新播种未必紧跟着上文所描述的步骤。在一些实施例中,密钥部分重新播种的过程以预定的配置时间间隔发生。举例来说,密钥部分重新播种可每两小时、每天、每几周或任何其它时间单位发生。另外,密钥部分重新播种可在例如每个加密事件、每三个加密事件等基于加密的进度上发生。此外,密钥部分重新播种可手动地发生。在一些实施例中,人类或机器操作者可提示系统使用下文在小节D中描述的程序重新播种密钥部分。因此,以下段落描述其中可重新播种密钥部分的示例方法,并且所述示例方法旨在作为非限制性示例。
[0192] 在步骤S324,第一软件模块306生成后续随机数。
[0193] 在步骤S326,第一软件模块306将后续随机数提供到第二软件模块308。
[0194] 在步骤S328,第一软件模块306将后续随机数提供到第三软件模块310。
[0195] 在步骤S330,第二软件模块308生成包括从后续随机数和第一密钥部分导出的值的已更新第一密钥部分。
[0196] 在步骤S332,第三软件模块310生成包括从后续随机数和第二密钥部分导出的值的已更新第二密钥部分。
[0197] 就如图2B中的步骤S124到S132,步骤S324到S332中描述的过程是称作密钥部分重新播种的过程的部分,并且在下文小节D中参考图6到7进一步详细论述。
[0198] C.计算机节点
[0199] 将在下文参考图5更详细地论述计算机节点以及其硬件和软件部件。
[0200] 图5示出计算机节点500,其包括处理器502、硬件安全模块接口504、网络接口506和计算机可读介质508。计算机可读介质含有软件模块,包括第一软件模块510、第二软件模块512、第三软件模块514以及任选地第四软件模块516。
[0201] 处理器502可以是对来自计算机可读介质508等某个数据源的数据执行运算的电子电路。处理器502可以是单核处理器、多核处理器,或单核或多核处理器的集合。处理器可利用各种指令集架构,例如精简指令集计算(RISC)架构。
[0202] 硬件安全模块接口504可以是物理部件、指令集或这两者的混合,其实现计算机节点500与硬件安全模块之间的通信。硬件安全模块接口504可允许与硬件安全模块的安全、受保护和/或加密的通信。这可包括从硬件安全模块接收加密通信,例如加密的密码密钥,以及对那些通信进行解密。其还可涉及响应于从硬件安全模块发送的质询消息(例如对口令的请求)。
[0203] 网络接口506可以是通过网络实现计算机节点500与其它计算机或服务器之间的通信的物理部件和指令集。这可例如是通过网络实现与其它计算机的以太网通信的以太网接口。其还可以是允许两个装置彼此通信的任何其它合适的接口,例如用于蓝牙、Wi-Fi、火线(Firewire)、USB、HDMI、PS/2等的接口。
[0204] 计算机可读介质508可以是计算机可读取和解释的硬件元件。示例包括磁盘、RAM、SRAM、DDRAM、HDD、SSD等等。其上可存储有可被解释为计算机代码或软件的数据,所述数据可由处理器502解释以执行某个功能或操作。
[0205] 第一软件模块510可包括执行与第一软件模块510相关联的功能所必要的代码、软件和数据。这可包括通过硬件安全模块接口504从硬件安全模块接收密码密钥。其还可包括生成随机或伪随机数、基于密码密钥和那些随机数生成第一和第二密钥部分,以及将第一密钥部分连同初始消息一起提供到第二软件模块512并将第二密钥部分提供到第三软件模块514。此外,第一软件模块510能够从第三软件模块514或第四软件模块516接收后续消息。另外,第一软件模块510能够通过网络接口与其它计算机通信,包括接收和发送初始消息或后续消息。
[0206] 举例来说,包括第一软件模块510的代码可使计算机节点500能够通过网络接口506从计算机接收初始消息,例如未加密账号,执行根据本发明的实施例的方法以产生后续消息,例如加密账号,然后通过网络接口506将加密账号传送回到计算机。作为另一示例,初始消息可以是加密账号,并且接收到的消息可以是解密账号。
[0207] 另外,第一软件模块510能够生成后续随机数并将那些后续随机数提供到第二软件模块512和第三软件模块514。
[0208] 第二软件模块512可包括执行与第二软件模块512相关联的功能所必要的代码、软件、存储器和数据。这可包括:从第一软件模块510接收第一密钥部分,生成或以其它方式产生混淆电路、对应于第一密钥部分的混淆值和混淆消息,以及将这些内容提供到第三软件模块514或第四软件模块516。另外,第二软件模块512可含有实现第二软件模块512与第三软件模块514之间的数据的不经意传输的代码。这可包括使第二软件模块512能够执行密码函数的代码或其它软件,所述密码函数例如根据RSA、AES等任何数目的加密标准对消息进行加密或解密。
[0209] 此外,第二软件模块512可包括执行与密钥部分重新播种相关联的功能所必要的代码、软件存储器和数据,所述功能例如从存储器检取第一密钥部分、从第一软件模块510接收后续随机数、使用后续随机数对第一密钥部分执行运算以产生新的第一密钥部分、然后将新的第二密钥部分存储在存储器中的新存储器地址处。在小节D中更详细地论述了密钥部分重新播种。
[0210] 第三软件模块514可包括执行与第三软件模块514相关联的功能所必要的代码、软件和数据。这可包括:从第一软件模块510接收第二密钥部分,生成或以其它方式产生混淆电路和对应于第二密钥部分的混淆值,以及在一些实施例中,将这些内容提供到第四软件模块516。另外,第三软件模块514可含有实现第三软件模块514与第二软件模块512之间的数据的不经意传输的代码。这可包括使第二软件模块能够执行密码功能的代码或其它软件,所述密码功能例如根据RSA、AES等任何数目的加密标准对消息进行加密或解密。
[0211] 此外,第三软件模块514可含有使用对应于第一密钥部分的混淆值、对应于第二密钥部分的混淆值和混淆消息实现对混淆电路进行估测的代码或软件。此估测可用于从上述输入产生后续消息,例如加密消息。
[0212] 第三软件模块514另外能够将后续消息提供或传送到第一软件模块510。
[0213] 此外,第三软件模块514可包括执行与密钥部分重新播种相关联的功能所必要的代码、软件存储器和数据,所述功能例如从存储器检取第二密钥部分、从第一软件模块510接收后续随机数、使用后续随机数对第二密钥部分执行运算以产生新的第二密钥部分、然后将新的第二密钥部分存储在存储器中的新存储器地址处。
[0214] 第四软件模块516可包括执行与第四软件模块516相关联的功能所必要的代码、软件和数据。这可包括从第二软件模块512接收混淆消息,以及从第二软件模块512和第三软件模块516中的任一个或两个接收混淆电路或混淆值。
[0215] 此外,第四软件模块516可含有使用对应于第一密钥部分的混淆值、对应于第二密钥部分的混淆值和混淆消息实现对混淆电路进行估测的代码或软件。此估测可用于从上述输入产生后续消息,例如加密消息。另外,第四软件模块516可将后续消息提供到第一软件模块510。
[0216] D.密钥部分重新播种
[0217] 密钥部分重新播种是存储在与第二软件模块相关联的噪声阵列中的某处的第一密钥部分以及存储在与第三软件模块相关联的噪声阵列中的某处的第二密钥部分被更新并存储在其对应噪声阵列中的新地址中的过程。这通过第一软件模块生成新随机数并将其传送到第二和第三软件模块来实现。第二和第三软件模块从噪声阵列检取其对应的密钥部分,然后例如通过计算密钥部分和后续随机数的异或结果来使用后续随机数对密钥部分执行函数。计算出的值成为新的密钥部分。将噪声阵列随机化,并将新的密钥部分写入到噪声阵列中与后续随机数成比例或从后续随机数导出的偏移。
[0218] 如上文所陈述,在本发明的一些实施例中,密钥部分重新播种可以预定的可配置时间间隔发生。此类时间间隔的示例包括每30分钟、每小时、每天、每周等。在其它实施例中,在人类操作者等用户提示时,可重新播种密钥部分。此外,可在每三十个加密或解密事件等基于加密事件的进度上重新播种密钥部分。另外,可基于某一其它形式的逻辑重新播种密钥部分。举例来说,系统可确定威胁或安全级别,一旦威胁或安全级别超过某一阈值就重新播种密钥部分。
[0219] 图6示出根据本发明的实施例的用于重新播种密钥部分的方法600。步骤S604B到S616B基本上类似于步骤S604A到S616A,但仅关于第三软件模块和第二密钥部分而非第二软件模块和第一密钥部分。将在下文论述步骤S604A到S616A,并且可参考下文论述以及图式来理解步骤S604B到S616B。
[0220] 在步骤S602,第一软件模块生成后续随机数。这可通过任何数目的随机或伪随机数生成算法来实现。
[0221] 在步骤S604A,第一软件模块将后续随机数传送到第二软件模块。
[0222] 在步骤S606A,第二软件模块从第一噪声阵列检取第一密钥部分。这可涉及第二软件模块使对应于偏移的地址存储在存储器中并从偏移地址读取,直到已访问某一数目的地址为止。对于512位长的第一密钥部分,此数目可以是512个位。在一些情况下,单个的位可能不可寻址,而最小可寻址单位可以是字节。在此情况下,对于512位长的第一密钥部分,从偏移处开始,第二软件模块可读取64个连续字节地址以便检取密钥。
[0223] 在步骤S608A,第二软件模块采用第一密钥部分并计算第一密钥部分和后续随机数的异或结果。
[0224] 在步骤S610A,第二软件模块将第一密钥部分的值设置成等于在步骤S608A中计算出的数。
[0225] 在步骤S612A,第二软件模块将第一噪声阵列随机化。这可涉及使用某一形式的随机数生成来依序生成随机位或字节,继而将其写入到噪声阵列中的每个地址。
[0226] 在步骤S614A,第二软件模块计算噪声偏移。此偏移是噪声阵列中第一密钥部分将被写入到的存储器地址。在一些实施例中,噪声偏移等于随机数的值取模噪声阵列的长度,其中如果噪声偏移加上密钥部分的长度大于噪声阵列的长度,则噪声偏移等于噪声阵列的长度减去密钥部分的长度:
[0227] 偏移=(后续随机数)mod(阵列长度)
[0228] 如果偏移+(密钥部分长度)>(阵列长度)
[0229] 则偏移=(阵列长度)–(密钥部分长度)
[0230] 详细来说,第二软件模块将不能够写入位于其分配的范围外部的存储器。如果第二软件模块具有100个连续存储器地址可用,则其将不能够写入101存储器地址。如果密钥部分是80个存储器地址长,则噪声偏移在噪声阵列的前20个存储器地址内。如果噪声偏移是第21个存储器地址,则密钥部分的最后一个可寻址单元将被写入到第101个存储器地址,而这是不可能的。通过计算模数,第二软件模块确保噪声偏移将处于分配给阵列的噪声的存储器内。通过确定偏移加上密钥部分长度是否大于阵列长度并且在大于阵列长度的情况下减小偏移,第二软件模块确保密钥部分将处于存储器阵列内。
[0231] 在步骤S616A,第二软件模块将第一密钥部分写入到在噪声偏移处开始的噪声阵列。
[0232] 可参考以上段落理解步骤S604B到S616B,将对第一密钥部分的引用改为第二密钥部分并将对第二软件模块的提及改为第三软件模块。
[0233] 图7通过三个图形指示符示出密钥部分重新播种的示例。
[0234] 第一图形指示符示出如何确定新的密钥部分。其示出16个存储器地址00到15的序列。第五存储器地址04被标记为旧的偏移。在此示例中,每个存储器地址对应于单个位,其中存储器地址04到07的值对应于四位序列“1011”。此序列对应于旧的密钥部分,例如重新播种之前的第一密钥部分。所有其它存储器地址对应于随机位值,因此有术语“噪声”,其可指存在于存储器中的随机或不可预测信号或值。略微靠下的是可能从第一软件模块接收的新的随机数“1101”。此新的随机数与旧的密钥部分进行异或运算以产生新的密钥部分“0110”。
[0235] 第二图形指示符示出如何选择新的偏移。首先,计算出新的随机数mod存储器阵列的长度。由于存储器阵列具有16个元素(00到15),因此长度为16。“1101”在十进制中对应于值13。由于13mod 16为13,因此将偏移初始设置为13。
[0236] 然而,如果软件模块开始将新的密钥部分写入到该偏移,则第四数字将必须写入到不存在的存储器地址16。由于密钥的长度加上偏移大于存储器阵列的总长度,因此所述偏移需要向后移位以使得密钥可被写入存储器阵列内。因此,将偏移设置为存储器地址12。
[0237] 第三图形指示符示出新随机化的存储器阵列,其中新的密钥部分插入于新的偏移处。以此方式,密钥部分和其在存储器中的位置均改变。这使得密钥部分明显更难以被黑客或恶意用户标识。
[0238] 本发明的实施例具有优于常规多方计算和加密方案的数个优势。值得注意的是,本发明的实施例以单节点计算速度提供多方计算的安全性。
[0239] 通过将密钥部分存储在噪声阵列中不同的变化的存储器地址中并将密钥部分隔离于特定软件模块内,黑客或恶意用户明显更难以确定密钥部分、再创建密码密钥和解码消息。此外,通过使用新随机数重新播种密钥,密钥会不受控地且不可预测地改变。黑客几乎不可能确定密钥部分的构成内容。
[0240] 虽然常规方法可使用其它技术保护密码密钥抵御黑客,但这些方法通常具有缺点或弱点。轮循密钥是常见方法,其在一段时间内使用一个密钥,然后切换到另一密钥。然而,只要时间足够,轮循有限数目的密钥仍给予黑客确定所有密钥的机会。所述方法的实施例提供存在极其大量的密钥的方法和系统。例如,如果密钥长度是512位,则存在大约1.34*154 81
10 对可能的密钥部分。作为一个比较点,在可观测的范围中仅存在估计4*10 个原子。即使在数万个唯一密钥之间轮循的常规系统也比本发明的实施例的安全性低150个数量级。
本发明的实施例还对冷启动攻击等许多常见攻击方法具有弹性。因此,本发明的实施例提供了计算机安全问题的解决方案。
[0241] 另外,本发明的实施例极大地减轻时延对多方计算的影响。在典型多方计算方案中,多个计算机通过互联网或另一网络而非在单个计算机节点上执行多方计算。多方计算中涉及的许多过程,例如不经意传输,需要来回于两个实体之间的大量通信。不经意传输需要在第一方与第二方之间发送的至少四个消息,其中的一些涉及适度大量数据,例如冗长密码密钥。
[0242] 即使在极好网络条件下,在大约10ms的时延延迟的情况下,时延会给总体计算增加大量时间。设想1024位混淆输入,其对应于密钥部分。每1-2不经意传输必须每位发送四个消息,这意味着在第一方与第二方之间传达4096个消息。以每消息10ms,仅执行单个混淆电路的不经意传输就需要40960毫秒或几近41秒。这使得多方计算在许多应用中几乎无用,因为它过于耗时。时常,在线银行业务或电子商务等应用中,每分钟需要加密数千个消息。因此,常规密码术应用无法利用安全多方加密。通过将多方组合到单个计算机节点中,本发明的实施例实现多方加密的安全益处而无时延所致的损害性速度损失。
[0243] 现将描述可用于实施本文所描述的任一实体或部件的计算机系统。计算机系统中的子系统经由系统总线互连。额外子系统包括打印机键盘、固定磁盘和监视器,监视器可联接到显示适配器。外围设备和可联接到输入/输出(I/O)控制器的I/O装置可通过所属领域中已知的任何数目的构件--例如串行端口--连接到计算机系统。例如,串行端口或外部接口可用于将计算机设备连接到例如互联网的广域网、鼠标输入装置或扫描仪。通过系统总线的互连允许中央处理器与每个子系统通信,并且控制来自系统存储器或固定磁盘的指令的执行以及子系统之间的信息交换。系统存储器和/或固定磁盘可体现计算机可读介质。
[0244] 如所描述,本发明的服务可涉及实施一个或多个功能、过程、操作或方法步骤。在一些实施例中,所述功能、过程、操作或方法步骤可实施为由适当地被编程的计算装置、微处理器、数据处理器等执行指令集或软件代码的结果。指令集或软件代码可存储在由计算装置、微处理器等存取的存储器或其它形式的数据存储元件中。在其它实施例中,所述功能、过程、操作或方法步骤可由固件或专用处理器、集成电路等实施。
[0245] 本申请中描述的任何软件部件或功能可使用任何合适的计算机语言实施为由处理器执行的软件代码,所述计算机语言例如使用常规的或面向对象的技术的Java、C++或Perl。软件代码可作为一系列指令或命令存储在计算机可读介质上,例如随机存取存储器(RAM)、只读存储器(ROM)、例如硬盘驱动器的磁介质或软盘、或例如CD-ROM的光学介质。任何此类计算机可读介质可驻存在单个计算设备上或内部,并且可存在于系统或网络内的不同计算设备上或内部。
[0246] 虽然已详细描述并在附图中示出某些示范性实施例,但应理解,此类实施例仅仅是对本发明的说明而非限制,并且本发明不限于所示和描述的具体布置和构造,因为所属领域的一般技术人员可想到各种其它修改。
[0247] 如本文所使用,除非明确指示为相反情况,否则“一”或“所述”的使用旨在意指“至少一个”。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈