掌桥专利:专业的专利平台
掌桥专利
首页

强空间证明中有空间限制的连续不可延展代码

文献发布时间:2023-06-19 11:06:50


强空间证明中有空间限制的连续不可延展代码

相关申请交叉引用

本申请是2018年10月2日提交的第62/740,301号美国临时申请和2019年5月22日提交的第62/851,565号美国临时申请的非临时申请并要求所述美国临时申请的申请日的权益,所述美国临时申请以全文引用的方式并入本文中。

背景技术

当秘密数据(例如用于加密的秘密密钥)存储在装置的“安全”存储器中时,攻击者仍然可以使用故障攻击对所述“安全”存储器进行篡改。在故障攻击中,存储器单元中的值被改变,并且使用秘密数据的安全函数的输出(例如,在包括安全存储器的安全元件中)可用于推导原始秘密数据。一旦攻击者知道秘密数据,她就可以使用所述秘密数据,例如通过对用秘密密钥加密的密文进行解密来破坏相关系统的安全性,所述密文是恢复的秘密数据的一部分。作为其它实例,攻击者可以使用某一认证协议中的秘密数据不当地访问资源。此类认证可能涉及使用不恰当获得的秘密数据的数字签名。当电话被盗或恶意软件被引入时,可能会发生这种攻击。

作为硬件篡改和存储器泄漏的方法,故障攻击的整体有效性使得故障攻击成为访问存储在消费者装置上的私人数据的广泛使用的技术。例如,故障攻击可能对RSA或椭圆曲线迪菲-赫尔曼(elliptic curve Diffie-Helman)技术有效,这些技术可以用于输送层安全(TLS)。正因如此,越来越多的研究人员尝试找到译码方案来保护数据免于存储器针对故障攻击和类似形式的硬件篡改的漏洞。

这种攻击可以通过使用不可延展(non-malleable)代码来部分地解决,使得秘密数据通过用不可延展代码进行编码来存储。这种编码不需要密钥,并因此与加密不同。使用不可延展代码可以允许安全元件检测是否已完成篡改,或产生相同的输出。但是,不可延展代码要求在安全元件中使用解码函数。攻击者恶意软件可能包括解码函数或获得对解码函数之访问,并且包括编码函数。这种恶意软件可以使用篡改来恢复秘密数据。现有的保护技术未能解决这种恶意软件,并因此会留下开放漏洞。

本文描述的实施例个别地且共同地解决了这些和其它问题。

发明内容

本发明的实施例包括一种用于保护具有有限存储器的装置上的秘密同时仍然提供防篡改的系统、方法和设备。具体地,实施例可以保护秘密免受有空间限制的连续篡改,其中篡改是由具有有限可用计算空间和存储器的小型攻击者重复进行的。为了实现安全性,编码计算机可以将存储器依赖函数(memory-hard function)MHF应用于要保护的秘密S,并且确定结果Y。然后,所述编码计算机可确定针对所述结果Y的证明π,以稍后证明结果Y是用秘密S计算的。证明π可以是空间的非交互式证明,具有证明-可提取性的额外特性。应用存储器依赖函数并且确定证明π可能占用大量空间(例如,约千兆字节或万亿字节)。然后,编码计算机可以将包括秘密S和证明π的码字C发送到解码计算机。然后,解码计算机可以将码字C存储在持久存储器中。

当解码计算机想要使用秘密S时,例如,将密码函数应用于秘密S时,解码计算机可以检取码字C并解析秘密S和证明π。通过验证证明π是利用秘密S和结果Y生成的,解码装置可以使用瞬态存储器对码字C进行解码。解码可以用远少于编码的少量存储器来执行。当验证结果Y的正确性时,解码装置可以使用秘密S将密码函数应用于输入数据(例如,对消息进行数字签名)。如果结果Y的正确性,这可以向解码计算机指示码字C已经被篡改。然后解码计算机可以自毁以防止进一步的篡改尝试。在对码字C进行解码之后,解码计算机可以重置瞬态存储器以清除关于秘密S的信息。少量数据可以存留于持久存储器中的额外持久空间中。

根据一个实施例,一种方法对解码计算机上的秘密进行解码。码字C可以存储在解码计算机的持久存储器中。码字C包括证明值π和秘密S,并且使用c个字节的存储器。持久存储器包括P个字节的存储器。证明值π是使用秘密S和结果Y来确定的,结果Y是通过将存储器依赖函数MHF应用于秘密S或秘密S的函数而获得的。将存储器依赖函数MHF应用于秘密S需要至少N个字节的存储器。不止一个证明值可以与秘密S组合以提供有效码字。解码计算机的P-c存储器形成额外持久空间。然后,所述方法包括接收输入数据,从持久存储器中检取码字C,并且解析码字C以标识证明值π和秘密S。可以使用解码计算机的瞬态存储器来执行码字C的解码。码字C的解码可以通过使用证明值π来进行,以验证使用秘密S从存储器依赖函数MHF获得的结果Y的正确性。解码函数可用以使用K个字节的存储器,并且K小于N。当正确性为真时,使用秘密S将密码函数应用于输入数据以获得输出数据。当正确性为假时,提供错误消息并且使解码计算机不可用以执行后续解码操作。然后刷新解码计算机的瞬态存储器。将解码的E个字节的存储器存留于额外持久空间。E小于N并且小于结果Y的大小。

下文更详细地描述本发明的这些和其它实施例。例如,其它实施例涉及与本文所描述的方法相关联的系统、装置和计算机可读介质。

关于本发明的实施例的另外细节可以参见本文中所描述的具体实施方式和图式。

附图说明

图1示出了将秘密sk存储在安全元件中的移动装置。

图2示出了可以位于移动装置内部的被篡改的安全元件。

图3A示出了如果是不可延展代码的正确属性。图3B示出了不可延展代码的不可延展属性。

图4示出了根据实施例的不可延展代码用于保护存储在移动装置的安全元件中的秘密的用途。

图5示出了根据实施例的在将秘密存储在安全元件中的情况下使用不可延展代码来执行密码函数的益处。

图6示出了根据实施例的由于编码函数的证明-可提取性而不能够成功地对存储在装置中的编码的秘密执行攻击的攻击者的实例。

图7示出了根据实施例的图形标记的实例。

图8示出了根据实施例的空间证明的示例构造。

图9A示出了根据实施例的装置。图9B示出了根据实施例的装置的存储器。

图10是示出根据实施例的用于对秘密进行编码的方法的流程图。

图11是示出根据实施例的用于对秘密进行解码的方法的流程图。

图12示出了根据实施例的预配装置的框图。

图13示出了根据实施例的移动装置的框图。

图14示出了可与根据实施例的系统和方法一起使用的示例计算机系统的框图。

术语

“不可延展代码”可以指一种译码方案,其中对已经(例如,由篡改对手)改变的码字进行解码产生原始(未改变)消息或无法用于推断知识的完全无关值。

“有空间限制”、“有存储器限制”或“存储器依赖函数”(MHF)可描述完成任务所需的时间主要由所需的可用存储器量确定的函数或任务。例如,对于有空间限制的计算问题,特定计算过程的效率可能受可读取数据和将数据存储到存储器中的速率(即存储器带宽)的影响最大,而不是受处理器的时钟速度的影响最大。存储器依赖函数需要执行某一数量的存储位。严格的存储器依赖散列函数是存储器依赖函数的实例。存储器依赖函数需要时间T和空间S来进行普通计算,但如果可用空间量小于S,则时间量会大大增加。

“可验证计算”可以指在不执行计算本身的情况下有效地检查计算正确性的程序。目标可以是开发资源(空间/时间)效率比目标计算本身高得多的验证程序。例如,可以考虑通过云服务器在巨大数据库上进行存储器密集型计算。客户端希望服务器在数据库上执行一些计算(例如聚合),并且可以使用可验证计算来检查结果是否正确,而不对数据执行实际操作。

“证明函数”可以指产生可用于验证计算的“证明值”的函数。证明值可以是简洁的,因为其可以使用相对较低的存储器(空间)计算,从而允许在低空间中产生解码。在编码期间使用MHF可确保需要高存储器,即使可在低存储器中执行证明函数本身时也是如此。

“验证函数”可以指使用证明值来确认代码C由指定编码函数从秘密S生成的程序。

“安全参数”可以指根据所需安全级别指定的基本系统参数。方案的所有其它度量(例如,运行时间、所需存储器等)可以根据安全参数来测量。

“随机算法”可以指使用从受信任的随机性来源提取的随机位的计算。在特定输入上,这种算法的输出可以遵循概率分布。

“确定性算法”可以指不使用任何随机性的计算,并且在特定输入上,这种算法的输出是固定的,因为所述输出仅由输入确定。

“安全元件”可以是防篡改平台(例如,单芯片安全微控制器),其能够根据一组很好标识的受信任机构所阐述的规则和安全要求来安全地托管应用程序以及其机密和密码数据(例如,密钥管理)。示例外形规格包括通用集成电路卡(UICC)、嵌入式SE和microSD。

具体实施方式

存储在装置安全元件上的例如秘密密钥之类的敏感数据仍然容易被篡改。具体地,攻击者可以修改安全元件上的秘密密钥,使得在稍后使用秘密密钥时向攻击者透露信息。例如,用户可以使用篡改的秘密密钥对消息进行加密,其中加密的输出可用于确定关于原始秘密密钥的信息。

通过使用有空间限制的不可延展代码来保护秘密数据,可以防止一些攻击。用编码函数将秘密编码成码字需要大量的空间来计算,且因此必须在装置外部完成。码字可以在装置上以少量空间(例如,比编码空间小的数量级)进行解码。然而,此类解决方案仅针对有限数目的篡改攻击是安全的。泄漏与攻击次数成比例,因此随着时间的推移,可以发现整个秘密。攻击者可以为已知解码器生成所有可能的组合,且因此可以在充分泄漏之后确定使用了哪个秘密。

一些实施例可以通过使用不可延展代码来保护数据免受篡改攻击,其中泄漏与篡改攻击次数的对数成比例。因此,即使受到大量攻击,也会有少量信息泄露。为此,可以使用是证明-可提取性的非交互式空间证明(NIPoS)对秘密进行编码。秘密与证明之间可能不存在一对一的对应关系,因此更难完全探索秘密证明对的空间,因为可能的组合要大得多,而每个秘密仍然只有相对较少的实际有效的证明。否则,攻击者可以使用外部装置来确定所有可能的码字,且然后标识哪个码字为给定的输入提供相同的密文输出。

此类证明可以用多种方法构造,包括使用图形标记和质询依赖图形。由于使用了证明-可提取性的NIPoS,试图伪造证明的攻击者可能需要计算装置上可用于篡改(篡改空间)的存储器之外的许多秘密-证明对(代码),并且使用故障攻击来尝试可能的代码,之后才可能获得秘密的访问权限。可以泄漏的秘密-证明对的数目受可用篡改空间和篡改病毒的描述大小的限制。实施例还可包括“自毁”机制。例如,一旦检测到篡改,“自毁”机制可以使小空间装置(例如,安全元件)擦除其整个状态(或使其不起作用)。

一些实施例可以阻止攻击者在装置外部部分地计算证明,然后使用可以访问秘密S的篡改病毒在装置内部完成计算证明。例如,可以存在存储代码(秘密S和证明π)的一些持久空间和定期刷新(例如,在每次有效解码之后)的用于解码的一些瞬态空间。如果解码器检测到篡改,则安全元件可能变得不可用。少量的持久空间(“额外持久空间”)不会被代码占用,且因此可以用来保留一些关于先前秘密和证明的信息。例如,持久空间可用于存储已经验证的先前代码。然后,攻击者可以分析已经验证的先前代码(秘密-证明对),以确定关系,使得可以随意生成新的有效代码。一旦解码器验证了代码,然后就可以使用各种代码的秘密来加密已知的输入数据,其中可以使用加密输出探索码字空间。然而,额外持久空间可以比得出证明π的结果小得多,从而防止可用于确定秘密S的信息的充分泄漏。

下面首先描述了安全元件和不可延展代码的篡改,然后描述NIPoS。

I.利用安全元件篡改

出于各种原因,移动装置可以预配有秘密sk。例如,秘密sk可以用作秘密密钥以对通信进行加密。作为另一实例,秘密sk可以用于认证目的,使得移动装置可以获得资源(例如,建筑、计算机或账户)的条目。取决于需要,移动装置可以使用秘密sk对输入数据(例如,质询)进行操作,以在请求认证计算机时产生认证响应。

A.使用安全元件进行加密

图1示出了在安全元件110中存储秘密(sk)115的移动装置100。安全元件110可以将秘密115存储在安全元件110的安全存储器中。安全元件110还可以包括执行函数112的电路系统,所述函数被标识为F

这一操作可以在要使用秘密115作为加密密钥对输入105进行加密并将所述输入作为输出120发送时进行。接收方装置150可以先前预配有同一秘密,可能最初已经将秘密提供到移动装置100。作为另一实例,接收方装置150可以将输入105作为质询提供到移动装置100。接收方装置150然后可以将输出120与预期结果进行比较,以便认证移动装置100。

B.篡改用于确定秘密密钥

遗憾的是,攻击者可能例如使用篡改函数作为故障攻击而损害安全元件。因此,攻击者可以是安装到移动装置上的篡改函数。篡改函数可进一步渗透安全元件,使得秘密数据被操纵,从而产生可显示秘密数据的内容的输出数据。因此,在这种情况下,可以分析在篡改之后安全元件的重复输出以显示秘密数据。

图2示出了可以位于移动装置内部的被篡改的安全元件。安全元件210可以使用秘密215执行函数212。如图所示,秘密215已被篡改,示出为sk′,其产生于原始秘密sk。篡改函数A可由sk′:=A(sk)定义。作为实例,篡改函数A可能由于恶意软件感染安全元件210或可以在物理存储器上使用激光器进行的物理篡改而产生。

例如,攻击者可以通过(例如,使用激光)选择性改变存储器的电容器的电荷状态而将故障引入所述存储器(例如,闪存或动态随机存取存储器(DRAM)),并且因此执行“位反转(bit flip)”,其使得存储器单元中的位的目标行在读取操作与写入操作之间泄漏(即,Rowhammer攻击)。这些类型的攻击在较小的装置中尤为普遍,这些装置具有专为最低功耗而设计的存储器单元,例如智能手机、平板计算机和其它移动个人装置。

在此实例中,输出220是使用函数212和存储的秘密从输入205生成的,所述秘密是被篡改的秘密215(示出为sk')。由于输出220取决于存储的秘密的值,因此修改存储的秘密会影响输出220。因此,关于原始秘密sk的信息通过输出220泄漏。在多轮篡改后,对于不同的输入和输出,足够的数据集指出,攻击者可以根据所述输入和输出重建原始秘密sk。阻止此类攻击是有利的。

攻击者的目标是恢复秘密。如果移动装置被盗,那么某人可以使用它,但某人无法恢复秘密密钥,因为其存储在安全元件中。但是,一旦他们已经篡改了装置,然后尝试使用,他们就会从装置获得不同的响应。

可以通过物理方式执行篡改,例如使用激光改变秘密。这种篡改使存储器实际存储不同的值,并因此以稍微不同的方式操作。响应的微小变化可以与原始响应进行比较,并用于作出关于秘密的结论。如果你在装置发出密码或发出另一种类型的数据消息时引起所述装置的某种变化,那么这可能有所不同,其方式为使得人们能够探测秘密是什么。例如,如果秘密的第一位为零,那么它将以不同于秘密的第一位为一时的响应方式进行响应。

在一种特定情况下,移动装置可以存储移动支付应用程序,并且随后可以在应用程序中的某处存储秘密。然后,攻击者可依赖非物理篡改方式,例如通过向应用程序引入恶意软件来篡改存储在所述应用程序中的秘密。例如,恶意软件可能会盲目地改变发送到受信任执行环境或硬件模块的值。

II.不可延展代码及其应用程序

不可延展代码可以实现一定程度的防篡改攻击。例如,可对秘密消息m进行编码以提供存储的代码c。即使所述代码被篡改,解码函数仍然可以提供秘密消息m。或者,解码函数可以提供指示已执行篡改的错误。如果这两种情况均未发生,那么解码的消息可以是与最初编码的消息无关的消息。

图3A示出了不可延展代码的正确性。秘密消息m由编码函数310编码以获得代码c。解码函数320对代码c进行解码以在不存在篡改时获得原始秘密消息m。

图3B示出了不可延展代码的不可延展性。同样,安全消息m由编码函数310编码以获得代码c。但这一次,攻击者315将代码c改为代码c'。因此,解码函数320对代码c'进行解码时以获得m'。解码过程可使得代码c和代码c'两者解码为m,并且因此m'等于m。理论上,解码函数320还可以包括可以检测m何时不等于m'的验证函数,即检测。值⊥指示错误。但是,并不清楚如何确定此类验证函数,尤其是在需要在移动装置上执行解码函数320时。错误检测不需要完全准确,只要m'与m无关,并因此无法从使用m'生成的输出获得信息。

因此,对于不可延展代码,编码的消息将在被更改时完全改变或者完全不变,或者将检测到错误。使用计算验证的错误检测代码的实例是代数运算检测(AMD)代码(www.iacr.org/archive/eurocrypt2008/49650468/49650468.pdf)或篡改检测代码。

A.秘密密钥的保护

现在描述在秘密存储在移动装置(例如,如图1中)上的情况下的不可延展代码的实施方案。

图4示出了不可延展代码用于保护存储在移动装置400的安全元件中的秘密的用途。秘密(sk)415可以由编码函数403编码以获得代码c。编码函数403可以由移动装置400外部的预配装置实施。预配装置的实例包括经由网络或本地装置,例如通过直接有线或无线连接(例如,蓝牙或Wifi)预配的服务器。在各种实施方案中,预配可以由制造商、服务提供商(例如,蜂窝载体)或技术员在用户已经获取移动装置之后执行。

代码c可提供到移动装置400,并且存储在安全元件410中。安全元件410可以包括用于执行函数412(例如,加密)以及用于执行解码函数407的电路(例如,硬接线或可编程电路)。

作为执行应用程序(例如,认证或加密通信)的一部分,移动装置400的处理器(未示出)可以将输入405提供到安全元件410以获得输出420,例如,以供发送到外部装置。为了生成输出420,解码函数47从安全存储器检取代码417,并对代码417进行解码以获得原始秘密415。函数412使用秘密415对输入405进行用以获得输出420。

B.抗篡改

篡改类别涵盖在不暴露基础数据的情况下装置可以容许的篡改函数/算法。通常,编码/解码函数无法容许所有类别的篡改算法。

流行的篡改类别是粒度篡改。可对秘密进行编码以获得具有c1、c2两个部分的码字。这两个部分可以存储在同一个装置或两个物理上分开的装置上。攻击必须独立地在码字的两个不同部分上进行,其中两个不同的解码函数无法看到彼此。攻击者知道有两个部分,但是篡改算法无法相互联系,因为它们是分离的。攻击者可能会对一个部分进行操作,但实际上需要对两个部分进行操作才能暴露信息。

另一个类别是全局篡改,这意味着攻击者能访问整个码字。这种篡改类别假设攻击者无法解码或编码。在这种情况下,攻击者只能略微改变码字,并希望对原始秘密解密,这是非常困难的。不提供攻击者无法解码或编码的实例。

图5示出了在将秘密存储在安全元件中的情况下使用不可延展代码来执行密码函数的益处。图5并排示出了来自图2和图4的示例实施方案。

安全元件510存储秘密sk以对输入505执行函数F

安全元件550存储使用编码函数从秘密sk生成的代码c。安全元件550对代码c进行解码以获得秘密sk,所述秘密然后用于对输入555执行函数F

如图所示,代码c已被篡改以获得c'。因此,解码函数示出为输出sk'。假设攻击者只能修改代码c,那么sk'的值应为输出提供三个可能性。

对于可能性1,sk'=sk,例如,由于c与c'之间的变化量很小,因此解码函数输出相同的值。例如,解码函数可以将多于一个输入映射到同一个输出。这种程序可以与“错误校正”机制类似,其中一种实现方法是将冗余添加到码字中。

对于可能性2,解码函数可检测到解码的值不对应于代码c',并且因此检测到篡改。如果检测到篡改,则解码函数可以输出预定错误字符⊥。稍后将描述如何确定代码c'与解码值之间的这种不一致性。

对于可能性3,解码函数确定c'和解码的值相互一致,但是,只有当sk与sk'无关而且sk'未显示关于sk的任何有意义信息时,这种结果才应该是可能的。这可能会在攻击者用已知sk'的编码覆盖sk的编码时发生;在此情况下,sk'显然独立于sk,因为攻击者已经知道sk'。对于不可延展代码,如果在使用编码算法时单个位被改变,那么响应与原始消息完全无关,并且因此,引入故障无法用于推导秘密。“无关”涵盖利用无关sk'的错误检测和正确解码。由于代码的不可延展属性,因此攻击者将无法隔离与单个位反转相关的改变。在恶意程序被引入应用程序的情况下,即使恶意程序要用它自己的秘密覆盖存储在应用程序中的秘密,也无法推断关于原始秘密的任何信息。

例如,如果攻击者可以执行编码和解码,那么安全元件550仍然易受篡改攻击。特定编码和解码技术可以是公开的,例如作为标准的一部分。因此,攻击者可能会生成执行这些函数的恶意软件。

C.攻击类型

直观地,相对于一类篡改对手(建模为函数或算法)

在一种类型的攻击中,对手可以分成两个部分:一部分是作为没有空间限制的概率多项式时间(PPT)对手的“大对手”,另一部分是作为有空间限制的多时间对手的“小对手”(例如,恶意软件)。大对手可以开始与质询者(例如,解码装置)交互,然后输出小对手,所述小对手然后可以访问目标码字(或证明),并以有空间限制的方式执行篡改。如果小对手有大量描述,则它甚至可能不适合小空间装置(例如移动装置),更不用说执行篡改了。因此,可以合理地假设此类对手具有大小有限的描述。具体地,一类有空间限制的对手可以被定义为包含所有多时间对手的

一个有趣的篡改类别是有空间限制的篡改,因为对

此外,即使

在一些实施例中,可以假设篡改算法是确定性的、顺序的和有(s,f)总空间限制的,其中

在一些实施例中,如果参数f使得来自

III.非交互式空间证明

A.NIPoS的定义

在交互式空间证明(PoS)协议中,证明器P交互式地证明了对于有空间限制的验证器V,它们具有“足够数量的空间/存储器”。整个证明可以表示为单个字符串,例如,相对于标识id的π

给定NIPoS,Faust等人(Faust等人,2017a)的编码方案如下。在输入消息x时,空间密集型编码算法在标识x上运行NIPoS的证明器,以生成证明π

更正式一点,为了表明此编码方案对有空间限制的攻击者是不可延展的,需要在x上模拟具有“小泄漏”的篡改实验。在给定可提取性的情况下,模拟器可以如下构造:使用“小提示”获得泄漏。正如NIPoS的可提取性所保证的那样,由于“小提示”(例如,长度为η)足以提取id′,因此可以通过首先获得作为泄漏的暗示,然后运行NIPoS-提取器以获得id′来模拟每次篡改。很明显,这种策略在无限制的连续篡改时会遇到问题,因为总泄漏l与θ·η成比例(其中θ表示篡改查询的数目)。

在高层次,NIPoS方案设计如下。令M是存储器依赖函数和(Gen,Prove,Ver)可公开验证方案。输入id上的NIPoS证明器首先查询随机预言以获得

直观地,NIPoS允许证明器说服验证器她拥有大量空间/存储器。重要的是,在验证器的一侧进行的验证是空间有效的。

NMC构造的主要组成块是非交互式空间证明(简称NIPoS)。直观地,NIPoS允许证明器说服验证器她拥有大量空间/存储器。重要的是,在验证器的一侧进行的验证是空间有效的。

我们首先回顾Faust等人(Faust等人,2017a)对NIPoS的定义,即将其调整为有(s,f,t)限制的算法。我们在此处划分了完整性和可提取性的定义。然后,定义了称为证明-可提取性的属性。我们对可提取性的定义进行了一些语法更改,使其与证明-可提取性定义保持一致。最后,定义了新的NIPoS定量度量,称为唯一性,并且表明当与可提取性结合时,唯一性给出证明-可提取性。

定义9(非交互式空间证明(NIPoS)):对于参数s

NIPoS可能具有完整性条件:

对于所有

其中概率由算法Setup和P的内部随机硬币和随机预言的选择决定。

我们分别定义了NIPoS的可提取性,如下所示。

定义10(NIPoS的可提取性):令

对于游戏

游戏

1.样本

2.令

3.令

4.令

5.令

6.在且仅在以下情况下输出1:(i)

其中集

请注意,我们对Faust等人(Faust等人,2017a)使用的方法进行了两项更改:首先,引入了新的提示生成函数,所述函数可以返回“小字符串”(例如,RO表

B.证明-可提取性和唯一性

上述讨论表明,我们可能需要来自基础的NIPoS的更强有力的保证来形成CSNMC。为此,可以引入NIPoS的更强大的属性,称为证明-可提取性(PExt-NIPoS)。它保证在给定“小提示”(例如,长度η′)的情况下,可以构造更强大的提取器,所述提取器不仅提取更改的标识,而且还提取更改的证明:(id′,πid′)。直观地,这意味着如果小对手计算有效对(id′,π

可提取性保证,如果有空间限制的对手A成功篡改了新的对

定义11(NIPos的可提取性):令

对于游戏

游戏

1.样本

2.令

3.令

4.令

5.令

6.在且仅在以下情况下输出1:(i)

其中集

在上述定义中,提示生成函数采用对

如上所述,当存在与每个标识相对应的唯一有效证明时,证明-可提取性就简化为简单的可提取性。然而,也有可能唯一地确定证明的一部分。我们通过以下定义对此进行形式化。

定义12(NIPoS的唯一性):令

直观地,定义可以声明,对于有效证明π,在给定id和公共参数pp的情况下,π的一部分(在这种情况下为第一u

在下面的论点中,我们正式表明,唯一性和可提取性共同暗示了证明-可提取性。要了解这一点,观察到,例如,最大唯一性意味着给定

论点1:令

η′=η+n

证明。给定提示生成函数F

F

K′:它采用

很明显,每当标准提取器K能够提取正确的

如果NIPoS具有特殊属性,称为唯一性,则它满足证明-可提取性。直观地,唯一性意味着对于固定标识id,正好存在字符串π

实施例表明,如果任何NIPoS具有唯一性,则可以将其升级为PExt-NIPoS,我们将其定义为NIPoS的定量度量。注意,所得PExt-NIPoS的参数(以及由此产生的CSNMC方案)与起始NIPoS的唯一性参数直接相关。例如,如果NIPoS具有“最大唯一性”,则所得CSNMC产生“最小泄漏”,其等于p-|c|位,其中p是可用(持久)空间。在实施例中,装置中的整个空间被分成两部分,即可重复使用的持久空间和在每次篡改之后刷新的瞬态空间。在Faust等人(Faust等人,2017a)示出的不可能性线限制了当θ不受限制时持久空间保持相对较小。事实上,Faust等人(Faust等人,2017a)使用的NIPoS具有较差的唯一性参数,因此,当适用于我们的证明-可提取性技术时,会产生CSNMC,其泄漏量高达≈p-|x|。

图6示出了根据实施例的由于编码函数的证明-可提取性而不能够成功地对存储在装置中的编码的秘密执行攻击的攻击者的实例。

在框610处,攻击者A可生成多个潜在秘密id

在框620处,可以存在码字c,其存储在装置的安全元件上,包括秘密密钥sk和证明π。秘密密钥sk可以是随机值(例如,由预配装置生成)并且证明π可以由预配装置基于秘密密钥sk生成。然后,有空间限制的攻击者可以尝试使用预计算码字c

在框630处,输出可以是基于秘密id

IV.根据质询依赖图形构造PEXT-NIPOS

A.图形标记和图形覆盖

存储器依赖函数可以基于图形标记或图形覆盖。可以使用定向非循环图形(DAG)进行图形标记或覆盖。

图7示出具有5个节点的图形的实例。每个节点可以具有数字。可能存在散列函数H。可以通过对具有秘密id的节点进行散列来标记底层中的节点。例如,节点702可以被编号为1,并且可以具有L

可以描述图形的标记。令

如果算法A计算label(W),则它会标记顶点的子集

此外,我们定义以m个故障为函数的图形G的H-标记为

对于每个v∈V\M,

论点2:假设H被建模为随机预言。令

直观地得出上述论点,因为一旦不需要存储初始标记,算法

现在可以描述覆盖游戏。DAGG=(V,E)的覆盖被定义为单一玩家游戏。游戏是由一系列的覆盖配置P=(P

覆盖游戏P的时间复杂性被定义为移动次数t(P):=T。P的空间复杂性被定义为在任何覆盖步骤中所需的最大覆盖块数目;形式为,s(P):=max

现在可以(在随机预言模型中)描述DAG的事后覆盖。令

在副本中的一些点处,初始配置p

对于一些i≥0,假设当前配置为P

(a)将覆盖块放置在顶点v上。

(b)移除所有不必要的覆盖块。如果label(v)没有用于任何将来的限制查询,或者如果在label(v)用于后面一些其它查询的论据之前,查询q

论点3(标记论点(在ROM中)):令

证明。根据事后覆盖的定义,可以直接观察到,如果

B.质询依赖图形

我们定义新的“存储器依赖图形”系列,称为质询依赖图形(CHG),并由此为一类有空间限制的对手

我们回顾,特殊类型的DAG用于存储器依赖和经由图形标记游戏构造空间证明。通常,标记不可“压缩”。在基于图形的空间构造证明(例如,Ling Ren和Srinivas Devadas(Ren和Devadas,2016))中,诚实的证明器计算整个图形的标记,以确保大量空间的使用。小空间验证是通过检查图形的几个随机选择节点(或质询节点)的标记来完成的——这保证了“小对手”在不存储假标记的情况下不会放置太多的假标记(即故障),并且因此使用更少的存储器。

然而,此类验证为计算小空间装置内部的证明的一小部分留下了空间—例如,考虑多层DAG(例如,二分图的堆栈),对于所述多层DAG,“大对手”计算除最后一层中的单个节点以外的整个图形的标记,并且“小对手”容易计算小空间装置内部的节点的标记。因此,不能仅从B的RO查询中提取整个证明,这使得证明-可提取性变得不可能。

为了解决此问题,我们将传统的存储器依赖图形替换为CHG,所述CHG包含另一组精心选择的质询,并保证即使“大对手”计算除少数节点以外的整个图形的标记,并且向“小对手”发送限制的提示,用小空间装置计算新质询节点的标记仍然不可行。让我们注意到,只有当小对手具有小的描述大小(即,来自“大对手”的提示较小)时,才有可能实现这种保证,否则小对手例如可以硬编码整个图形的整个标记,包括所有可能的质询,使得质询依赖变得不可能。

非正式的质询依赖图形满足以下关于图形覆盖的属性:当可用覆盖块的数量预算很小(例如,如果算法有空间限制)时,任何覆盖策略都无法在合理的时间量内将覆盖块放在图形的多个随机执行顶点上。因此,对于包括多个质询节点的质询依赖图形,除了其它图形节点之外,确定多个质询节点的图形标记可能需要至少N个字节的存储器。N个字节的存储器可能对于编码计算机是可用的,但对于小空间攻击者不可用。多个质询节点可以随机地从包括质询依赖图形的一组节点中选择。成功确定多个质询节点的图形标记可以随着指数时间发生。换句话说,具有小的可用空间(例如,有空间限制)的装置可能无法在合理时间内成功完成质询依赖图形的多个质询顶点。即使游戏开始时,玩家在任意顶点上得到几个(但不是太多)覆盖块,属性也应该保持不变。

质询依赖图形可能是整个标记需要大量空间的图形。可以用整个标记产生基于质询依赖图形的证明。在一些实施例中,在不存储整个标记的情况下不能产生相关联的证明,并且标记可以是存储器依赖函数的结果。这可以与基于其它存储器依赖图形的图形标记形成对比,其中在仅存储图形标记的一部分的情况下可以产生证明。这可以更好地执行编码过程的空间限制。

质询依赖图形由以下变量参数化:N

质询依赖图形(NIPoS)可以定义如下。一系列定向非循环图形

具有N

对于任何覆盖策略B=(B

其中覆盖游戏

游戏

(a)令P

(b)令

上的均匀分布。

(c)令P=(P

(d)对于一下情况输出1

*P遵循顺序覆盖策略的规则。

*对于每个i∈{0,...,t(P)},认为|P

*t(P)≤t。

我们定义N

直观地,质询稀疏度定义了将要质询的目标节点的哪些部分。图形紧凑度决定图形中所有节点的部分在目标集中。CHG的这两个度量可以影响NIPoS的参数和编码方案。

一些实施例也使用局部扩展器图形。

对于0<γ

论点4:令

然后P的时间复杂性具有以下下限:

论点5:令

C.从CHG构造PExt-NIPoS

现在可以描述基于质询依赖图形的PExt-NIPoS构造。构造可以满足证明-可提取性。

方案由三个算法

具有N=|V|个顶点和最大项次deg∈O(1)的DAG G=(V,E),所述DAG具有τ

并且V

随机预言集

为了简单解释,我们假设

构造在图8中详细介绍。我们在此提供高层次概述。证明器首先计算图形G=(V,E)的标记,然后使用默克尔树(Merkle tree)进行标记。根据默克尔根值

在我们的PExt-NIPoS构造中,诚实的证明器必须存储图形G的完整标记加上整个默克尔树,因此,证明器的空间大小是

其中n

不难看出,我们的PExt-NIPoS方案满足完整性。通过证明下一个定理,我们正式表明了我们的NIPoS方案满足证明可提取性。

定理1:令λ是安全参数。假设G:=G

v:=(τ·(deg+1)+τ

对于任何s,

认为Π

其中κ=τ·N

为了保证验证器空间

如果大对手B自己计算图标记和默克尔承诺,即由B查询

否则,我们可以用覆盖质询游戏的优点限制证明可提取性游戏的优点。通过图形的质询依赖,有空间限制的对手A在时间限制t内生成新的空间证明的概率可忽略不计。

我们考虑了限制型存储模型,其中对手总是在使用图标记之前完整地存储图形标记,也就是说,对手从不压缩图形标记。我们把定理1的证明留在一般存储模型中(对手可以存储图形标记的任意函数)作为一个有趣的开放问题。

为了限制证明-可提取性游戏的优点,我们首先限制一些不良事件的概率。在不发生不良事件的条件下,只有当有空间限制的对手A输出

D.实例化CHG

首先注意,如果质询节点的数目(即,τ

图8示出根据实施例的基于质询依赖图形的标记的NIPoS的示例构造和验证。构造可以由编码装置(例如,预配装置)进行,并且验证可以由解码装置(例如,移动装置)进行。

在框810处,证明可以由编码装置使用算法

在框820处,证明可以由编码装置使用验证算法

在框821处,图形的标记l可由编码装置来计算。

在框822处,给定图形G的标记l,编码装置可以计算默克尔承诺。默克尔承诺可能是标记l的散列。在计算默克尔承诺时,编码装置可以计算默克尔根。

在框823处,编码装置可以使用秘密id和默克尔根φ

在框824处,编码装置可以计算并输出证明π。证明π可以包括默克尔根(即,标记l的散列)和两个质询集(检查集check和质询集chal)。证明π的第二部分可以包括检查集的并集、检查集的前任者和质询集中节点的默克尔树打开路径。

在框830处,给定公共参数pp

在框831处,解码装置可以解析证明π。在解析证明π时,解码装置可以标识证明π的一部分,例如默克尔根φ

在框832处,解码装置可以检查质询检查集。(check,chal)可能包含要检查的节点索引集。可以通过将散列函数应用于φ

在框833处,解码装置可以对照其父节点的散列检查检查集中的每个节点的散列。解码装置可以通过确定每个节点的散列是否等于其父节点的散列来检查散列。

在框834处,解码装置可以检查检查集中的所有节点、检查集的父节点和质询集,以验证标记已被正确计算。

在框835处,当且仅当所有检查都通过时,解码装置可以输出‘1’,指示正确性被验证,否则它可以输出‘0’。

1.基于SoLEG的构造

一些实施例使用基于SoLEG的构造。给定N

对于每个i(1≤i≤τ

我们看到目标集的并集

包含N

除了SoLEG和小工具图形的边缘之外,还有从SoLEG的接收器顶点到小工具图形的边缘。尤其是,对于每个i(1≤i≤τ

很容易发现,对于上述构造,质询稀疏度为N

论点6:令

证明。修复任何对手B=(B

通过重写第二不等式,我们得出

对于每个i(1≤i≤τ

注意Pr[X

接下来,我们表明如果

权利要求1用ε:=1-β-γ

则对手B

证明。首先,我们表明对手B

证明。修复任何对手B=(B

通过重写第二不等式,我们得出

对于每个i(1≤i≤τ

注意Pr[X

接下来,我们表明如果

权利要求2用ε:=1-β-γ

则对手B

证明。首先,我们表明对手B

结合上述论点,在概率至少为1-exp(-2·ε

2.根据PTC的图形构造CHG

正如Stefan Dziembowski等人(Dziembowski等人,2015)所观察到的,由Paul、Tarjan和Celoni(Paul等人,1976)引入的图形,简言之,PTC的图形,确实满足质询依赖。使Stefan Dziembowski等人(Dziembowski等人,2015)的定理1适应于多次质询设置,我们得到以下论点。

论点7:令

E.CHG构造的比较

可以将基于SoLEG与基于PTC的图形的两个质询依赖图形构造进行比较。通过设置ε=2

推论1(基于SoLEGs的CHG(具体))。对于SoLEG扩展,获取覆盖游戏中的80位安全性(即,

推论2(基于~PTC的图形的CHG(具体))。对于PTC的图形,对于典型的覆盖游戏的80位安全性(即,

可以讨论CHG中PExt-NIPoS的一些实例。

推论3(来自SoLEG-ext.的PExt-NIPoS(具体))。我们确定[我们将ε

并考虑根据基于SoLEG的CHG构建的NIPoS。为了保证s

k

k

推论4(来自PTC的PExt-NIPoS(具体))我们确定:

并考虑了WolfgangJPaul等人(Paul等人,1976)的根据CHG构建的NIPoS。为了保证s

k

k

让我们先给出一些客观事实。由于没有(s,f,t)限制的对手可以对随机输入

V.根据存储器依赖函数构建PEXT-NIPOS

为了实现合理的安全性,在一些实施例中,这些构造的具体参数可能变得不切实际。例如,对于大小为1MB的消息,对于基于CHG的NMC构造,码字的大小几乎为800MB(参见表3)。为补充这一点,我们提出简单实用的基于启发式假设的NIPoS实例。构造使用存储器依赖函数(MHF)的具体实例,并且在验证需要小空间的情况下应用(非交互式的)可公开验证计算。当用基于SoLEG的Ren和Devadas(Ren和Devadas,2016)构造实例化MHF时,得到的NIPoS具有可提取性和“良好的唯一性度量”。这产生了具有非常好参数的PExt-NIPoS,并且因此将其插入到Faust等人(Faust等人,2017a)的编码方案中,我们获得了具有非常小的证明大小(以千字节为单位)的CSNMC,在某些设置中也允许泄漏,小到p-0.99|c|。

虽然上述方案是切实可行的,但它是不安全的。相反,我们依靠启发式假设,即当用标准散列函数,例如SHA3。

实例化随机预言时,MHF仍然是存储器依赖的。在本节中,我们提出了简单的具有可提取性的NIPoS构造。我们的构造基于存储器依赖函数(简称(MHF)和可验证的计算。直观地,MHF要求任何有时间限制的算法都需要使用大量存储器来计算随机选择的输入上的此类函数。我们注意到,我们将MHF中的散列函数视为具体的散列函数,而不是建模为随机预言。特别是,我们要求MHF被具体描述,并且可以表示为电路。这对于我们的上下文是至关重要的,因为我们使用可验证的计算,这需要对要验证的函数(即MHF)进行非黑盒访问。事实上,我们为此付出了代价。我们对存储器依赖没有可证明的保证,因为唯一已知的保证方法是使用ROM(基于覆盖游戏提供可证明的保证),它与我们的设置不兼容。相反,我们启发式地假设,当使用标准散列函数(例如,SHA3)实例化随机预言时,在ROM中具有可证明的存储器依赖性保证的基于散列的MHF构造是存储器依赖的。

定义15(存储器依赖函数(MHF)):令

可通过有(s

对于任何有(s,f,t)-限制的确定算法

A.来自MHF和VC的部分唯一的Ext-NIPoS。

在本节中,我们基于通过有空间限制的验证的MHF和VC构造了具有可提取性的部分唯一的NIPoS。在高层次,NIPoS方案设计如下。令M是存储器依赖函数和(Gen,Prove,Ver)可公开验证方案。对输入id的NIPoS证明器首先查询随机预言以获得

对于根据实施例的构造,令M为(k,n,s

Setup(1

(a)通过查询

(b)计算

(c)返回π:=(y,π

(a)通过查询

(b)解析(y,π

(c)返回

B.实例化MHF

输入x∈{0,1}k时,定义MHFM

对于散列函数

n

N

然后,对于任何δ∈(0,β),任何ε>0以及任何

k=O(λ

此外,为了使ε

k≥80n≈670KB s

C实例化VC

我们的NIPoS构造可以用任何VC实例化,对于这些VC,验证可以在很小的空间(与计算函数本身相比)内完成。一些实施例使用称为皮诺曹(Pinocchio)的方案(Parno等人,2013)。

在没有给出有空间限制的形式化参数的情况下,我们依赖于以下关于皮诺曹验证算法的假设。请注意,这些限制与要验证的函数的空间限制(在本例中,是M

假设3(有空间限制的验证)。令

首先注意,证明的大小等于8个因素的群组的

椭圆曲线上的一个点可以通过不断地使用许多场元素来存储。两个曲线点的相加只需要比在需要O(log(p))空间的字段中执行算术运算所需的空间更多。计算双线性映射比添加两个曲线点需要更多的空间。因此,渐近地,验证器的空间复杂性可以假设为k+n+O(log(p))=k+n+O(λ)。对验证器的具体空间复杂性进行合理测量更具挑战性,因为它不仅取决于验证算法本身的具体实施,而且还取决于其所有子协议的具体实施方案,包括有限场

证明器算法

推论5。令

此外,具体而言,要获得ε

D.实例化部分唯一的NIPoS和PExt-NIPoS

将MHF和VC的实例放在一起,我们可以得到(部分)唯一的可提取的NIPoS。

推论6(具有唯一性的基于MHF的NIPoS)。对于任何ε>0和δ∈(0,1)存在(k

k

s

以λ=2300来实例化此构造,得到ε

k

s

VI.存储器限制

图9A描绘包括存储器910和自毁模块920的装置900。装置900可以是(例如)移动装置。存储器910可以是安全元件(未图示)的存储器,且可因此被称作安全存储器。可以限制存储器910的大小,例如,约数兆字节。在一些实施例中,存储器910可能较大并且存储较大码字。码字可以存储在安全存储器中。在实施例中,码字的大小可以约是存储器910的大小。一旦在装置上检测到篡改,自毁模块920可以进行“自毁”机制。作为实例,自毁机制可使装置900(例如,安全元件)擦除其整个状态(或使其不起作用)。具体地,当检测到篡改时,安全元件可以将控制位从0反转到1。当控制位设置为1时,安全元件可能变得不可操作,从而阻止安全元件执行进一步的解码或密码函数。

图9B进一步描绘存储器910。存储器910可以包括随时间保留的持久空间912和周期性地(例如,在每次解码之后)刷新的瞬态空间916。持久空间912可以存储包括秘密sk(例如,密码密钥)和基于秘密sk的证明πsk的码字c。码字c可使用大部分持久空间912,但可能存在一些未使用的空间构成额外持久空间914。在实施例中,可将额外持久空间914的大小设置成64位。

VII.方法

A.编码

图10示出了根据实施例的对码字进行编码的方法1000。编码过程可由编码计算机执行。编码计算机还可以是预配计算机。编码计算机可以具有无限制空间。

在框1010,存储器依赖函数MHF可应用于秘密S。秘密S可以是加密方案的私钥。存储器依赖函数MHF可以是用于空间证明的证明-可提取性的编码函数。在一些实施例中,存储器依赖函数MHF可以是依赖质询图形的图形标记或图形覆盖函数。将存储器依赖函数MHF应用于秘密S产生结果Y。在一些实施例中,编码装置可以计算结果Y的函数,例如散列函数。计算函数Y可使用N个字节的存储器。在计算结果Y之前,公开参数pp可被检取。然后,编码计算机可使用公共参数pp来计算结果Y。

在框1020处,证明函数可用于基于秘密S和结果Y来确定证明值π。在一些实施例中,证明值π可以用结果Y的函数来确定。

在框1030处,码字C可以根据证明值π和秘密S组合。例如,证明值π和秘密S可以连接起来形成码字C。

在框1040处,可以将码字C发送到解码装置。编码装置还可以发送结果Y。编码装置还可以发送公共参数pp。

现在可以描述Sebastian Faust等人(Faust等人,2017a)的编码方案。令

对于初始化,给定安全参数λ作为输入,

对于编码,给定公共参数pp:=pp

对于解码,给定码字c,

上述构造是针对任何θ∈poly(λ)的连续不可延展代码。

B.解码

图11示出了根据本发明的实施例的示出使用码字以在密码函数中使用的解码过程的方法1100。方法1100可以由移动装置或其它验证装置执行,尤其是存储器有限的装置。例如,装置的安全元件可以是存储器有限的。

在框1110处,码字C可以从编码计算机接收。码字C可以包括证明值π和秘密S。秘密S可以是密码密钥,例如私钥。在一些实施例中,码字C还可以包括将存储器依赖函数MHF应用于秘密S以获得结果Y。将存储器依赖函数MHF应用于秘密S或秘密S的函数可能需要至少N个字节的存储器。解码装置还可以接收公共参数pp。然后,解码装置可以存储安全元件的安全存储器中的码字C。码字C可以存储在解码装置的持久存储器中。

在框1120处,可以接收输入数据。可以在安全元件处接收输入数据。作为实例,输入数据可以包括要在发送给接收方之前加密的消息。

在框1130处,码字C可以从安全存储器检取。在一些实施例中,解码装置还可以检取结果Y。

在框1140处,码字C可被解析以标识证明值π和秘密S。另外,可以检取由存储器依赖函数MHF使用以获得结果Y的一个或多个公共参数。

在框1150处,证明值π可用于验证通过对秘密S应用存储器依赖函数MHF而获得的结果Y的正确性。解码可以在小空间中完成。解码可用以使用K个字节的存储器。K可以比N小至少100倍。

在框1160处,当正确性为真(T)时,可以使用秘密S将密码函数应用于输入数据。然后可以从安全元件输出来自密码函数的输出数据。例如,解码装置可以对输入数据进行签名。密码函数可以是散列函数。

在框1170处,当正确性为假(F)时,可以提供错误消息,例如,可以输出值⊥。当正确性为假时,安全元件也可以自毁。例如,当正确性为假并且检测到篡改时,安全元件可以将控制位从0反转到1。当控制位设置为1时,安全元件可能变得不可操作,从而阻止安全元件执行进一步的解码或密码函数。

在框1180处,可以刷新瞬态存储器。可以删除瞬态存储器中的信息。

在框1190处,E个字节的存储器可以存留于额外持久空间。存留于额外持久空间的存储器可以存储关于解码的信息。

C.构造比较

实施例可以包括支持无限制篡改的有空间限制(泄漏)的不可延展代码的四种构造。所有这些都是基于NIPoS。两种构造需要证明-可提取性,而另外两种是基于标准可提取性的。在这部分中,我们为每种构造的参数提供渐进界。此外,我们还将所有构造与具体值进行比较。让我们先简要总结一下我们的所有构造:

构造-1(基于SoLEG-扩展):此编码方案由证明-可提取的NIPoS构造。证明-可提取的NIPoS通过在本文中经由SoLEG-扩展所构建的质询依赖图形实例化。

构造-2(基于PTC的图形):此编码方案也由证明-可提取的NIPoS构造。证明-可提取的NIPoS通过Wolfgang J Paul等人(Paul等人,1976)提议的PTC的质询依赖图形实例化。

构造-3(基于Faust等人(Faust等人,2017a)的NIPOS):此编码方案由可提取的NIPoS构造。基础NIPoS根据Faust等人(Faust等人2017a)实例化,其又是Ling Ren和Srinivas Devadas的(Ren和Devadas,2016)证明空间构造的变型。NIPoS的参数可见于Faust等人(Faust等人,2017b)。

构造-4(基于MHF):此编码方案再次由可提取的NIPoS构造,其具有部分唯一性。基础NIPoS由(启发式)存储器依赖函数和可验证计算方案实例化。推论6总结了此NIPoS构造的参数。

由于我们的构造来自不同的技术并实现不同的限制,因此确定一个比较合理的通用度量是很重要的。我们选择修复标准的安全措施。其它参数(即k,n,l,s,f,p,d)可选择以获得80-位安全性。篡改查询的数目也可以确定为θ=2

使用PExt-NIPoS(对应Ext--NIPoS)的具体实例,可以确定所得CSNMC的以下具体参数。在此表中,k可以是消息的大小,n可以是证明的大小,p可以是持久空间的大小,l可以是泄漏的大小,d可以是解码函数的大小,s可以是可用于执行函数的空间,并且f可以是描述的大小。在实施例中,额外持久空间的大小可为64位。

表3:此表示出了当p≈n时设置的近似具体参数。注意,对于基于PExt-NIPoS的构造,最后一列限制在s+f上,而对于基于Ext-NIPoS的构造,仅限制在s上,因为f可以设置为任意大的值。

注意,在实施例中,每种证明的大小可以是100MB或更大。持久空间的大小可以比证明的大小小100倍。

VIII.装置

现在描述预配装置和移动装置。

A.预配装置

图12示出了根据实施例的预配装置1200的框图。预配装置1200的模块可以在硬件或软件中实施,例如,存储在计算机可读介质中,并由处理器执行。预配装置1200包括数据存储装置1205、参数生成模块1210、存储器依赖模块1212、证明生成模块1214、编码模块1216、通信模块1218以及网络接口1230。预配装置1200可以实施方法1000。

数据存储装置1205可以存储要编码的秘密S以及安全参数λ。数据存储装置可以按各种方式实施,例如,在处理器、RAM、闪存存储器或硬盘驱动器的缓存中实施。

参数生成模块1210可以接收安全参数λ和关于要使用的函数F(包括存储器依赖函数MHF)的信息(例如,指示使用哪个存储器依赖函数的标识符或F的一些参数)。参数生成模块1210可以基于存储器依赖函数F和安全参数λ生成一个或多个公共参数PP。其它模块也可以使用安全参数λ。在一些实施例中,函数F的各个方面可以硬编码成参数生成模块1210,并因此不需要从数据1205发送信息。一个或多个公共参数PP可以包括密钥。因此,参数生成模块1210可以是可验证计算的密钥生成模块。一旦生成了一个或多个公共参数pp,它们就可以被存储以供其它模块以及其它装置访问,例如,用于公开访问。

存储器依赖模块1212可实施要求存储器1220具有足够大小的存储器依赖函数F。数据存储装置1205可以是存储器1220的一部分,因此可以是相同的存储器结构。存储器依赖模块1212可以接收一个或多个公共参数PP和秘密S,并提供结果Y,这可以用来生成证明。存储器依赖模块可以包括除存储器依赖函数F以外的其它函数,例如本文所述的初始散列函数。

证明生成模块1214可以接收秘密S和结果Y,其中Y由存储器依赖模块对秘密S的操作而产生。证明生成模块1214提供证明π,证明π可以用来有效地验证Y是否的确是将存储器依赖函数F应用于秘密S的结果。对应的解码函数可以执行此类验证。

编码模块1216可以接收证明π和结果Y以及用于形成代码C的秘密S。代码C可以提供到通信模块1218,所述通信模块可将代码C放入由网络接口1230发送到移动装置1240的消息(例如,加密的消息)。通信模块1218可以使用有线连接中可能出现的任何合适的网络协议,例如TCP/IP或以太网。一旦经过预配,移动装置1240就可以将代码C存储在安全元件中,并且对C进行解码以实施密码功能性。使用证明π的解码函数可以足够简洁,使得解码可以在移动装置上执行,例如,在可能仅具有1kB、50kB、100kB、500kB或1kB存储器的安全元件中执行。

B.移动装置

图13示出了根据实施例的移动装置1300的框图。移动装置1300可以发送对编码秘密的请求,例如作为代码C。预配计算机可以将具有代码C的响应发送到移动装置1300,所述移动装置可以将代码C存储在安全存储器1350中。移动装置1300是解码计算机的实例。

移动装置1300包括处理器1310、计算机可读介质1320(例如,用于存储软件以在处理器1310上执行)、输入/输出组件1330(例如,触摸屏、麦克风和扩音器)、通信模块1340、安全存储器1350以及安全元件1360,其中的每个都可连接到通信总线以用于相互通信。在一些实施方案中,安全元件1360可以包括安全存储器1350。

通信模块1340可以经由天线1370接收码字C。安全存储器1350可以存储码字C,所述码字包括证明值π、秘密S、通过将存储器依赖函数F应用于秘密S而获得的结果Y,以及由存储器依赖函数F用于获得结果Y的一个或多个公共参数。存储器依赖函数F可以由预配计算机实施,其中将存储器依赖函数F应用于秘密S可能需要至少N个字节的存储器。作为实例,N可以是至少一千兆字节。

如图所示,安全元件1360包括解析模块1361、解码模块1362、决策模块1363和密码模块1364。安全元件1360可以接收输入数据,对所述输入数据执行密码函数。解析模块1361可以从安全存储器1350检取码字C,并解析码字C以标识证明值π、秘密S、结果Y和一个或多个公共参数。

解码模块1362可以使用证明值对码字C进行解码,以验证通过将存储器依赖函数F应用于秘密S而获得的存储的结果Y的正确性。解码模块1362可用以使用K个字节的存储器。作为实例,K可以比N小至少100倍。解码模块1362可以输出正确性是否已被验证(为真)或未被验证(为假)。

决策模块1363可以使用来自解码模块1362的输出来确定是输出错误消息还是参与密码模块1364。当正确性为真时,可以使用秘密S将密码模块1364应用于输入数据,以获得从安全元件输出的输出数据。当正确性为假时,可以从安全元件1360输出错误消息。另外,可以实施自毁机制以使解码模块1362不可操作。

IX.示例计算机系统

本文中提及的任何计算机系统都可利用任何合适数目个子系统。在图14中示出计算机系统10中的此类子系统的实例。在一些实施例中,计算机系统包括单一计算机设备,其中子系统可以是计算机设备的组件。在其它实施例中,计算机系统可以包括具有内部组件的多个计算机设备,每个计算机设备是子系统。计算机系统可以包括台式计算机和笔记本电脑、平板计算机、移动电话和其它移动装置。

图14中示出的子系统经由系统总线75互连。示出了额外子系统,例如打印机74、键盘78、存储装置79、耦合到显示适配器82的监视器76等。耦合到输入/输出(I/O)控制器71的外围装置和I/O装置可以通过本领域中已知的各种构件连接到计算机系统,所述构件例如是输入/输出(I/O)端口77(例如USB、

计算机系统可以包括多个相同组件或子系统,所述组件或子系统例如通过外部接口81、通过内部接口或经由可装卸式存储装置连接在一起,所述可装卸式存储装置可以从一个组件连接和移除到另一组件。在一些实施例中,计算机系统、子系统或设备可通过网络通信。在此类情况下,一个计算机可以被视为客户端且另一个计算机被视为服务器,其中每台计算机都可以是同一计算机系统的一部分。客户端和服务器可各自包括多个系统、子系统或组件。

实施例的各个方面可以使用硬件电路(例如,专用集成电路或现场可编程门阵列)和/或以模块化或集成方式借助大体上可编程处理器使用计算机软件以控制逻辑的形式实施。如本文所使用,处理器可以包括单核处理器、在同一集成芯片上的多核处理器,或在单个电路板上或联网的多个处理单元,以及专用硬件。基于本文中提供的公开内容和教示,本领域普通技术人员将知道并了解到使用硬件及硬件和软件的组合实施本发明的实施例的其它方式和/或方法。

本申请中描述的任何软件组件或功能可实施为使用例如Java、C、C++、C#、Objective-C、Swift的任何合适的计算机语言或例如Perl或Python的脚本语言使用例如常规的或面向对象的技术由处理器执行的软件代码。软件代码可以作为一系列指令或命令存储在计算机可读介质上以进行存储和/或传输。合适的非瞬态计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、例如硬盘驱动的磁性介质或例如光盘(CD)或DVD(数字通用光盘)的光学介质、闪存存储器等。计算机可读介质可以是此类存储或传送装置的任何组合。

此类程序也可以使用载波信号来编码和传输,所述载波信号适合于经由符合多种协议的有线、光学和/或无线网络来传输,包括因特网。因此,可以使用以此类程序编码的数据信号来创建计算机可读介质。以程序代码编码的计算机可读介质可与兼容装置一起封装或与其它装置分开提供(例如,通过因特网下载)。任何此类计算机可读介质可以驻存在单个计算机产品(例如,硬盘驱动器,CD或整个计算机系统)之上或其内部,并且可以存在于系统或网络内的不同计算机产品上或其内部。计算机系统可以包括用于向用户提供本文中提及的任何结果的监视器、打印机或其它合适显示器。

本文所描述的任何方法可完全或部分地通过计算机系统执行,所述计算机系统包括可被配置以执行所述步骤的一个或多个处理器。因此,实施例可以涉及配置成执行本文中所描述的任何方法的步骤、可能具有执行相应步骤或相应步骤群组的不同组件的计算机系统。虽然呈现为带编号的步骤,但本文的方法的步骤可以同时或在不同时间或以不同次序执行。另外,这些步骤的部分可与其它方法的其它步骤的部分一起使用。另外,步骤的全部或部分可以是任选的。另外,任何方法的任一个步骤可以利用用于执行这些步骤的模块、单元、电路或系统的其它构件来执行。

特定实施例的具体细节可按任何合适的方式组合而不脱离本发明实施例的精神和范围。然而,本发明的其它实施例可以涉及与每个个别方面或这些个别方面的特定组合相关的特定实施例。

上文对本发明的示例实施例的描述已经出于图示和描述的目的呈现。不旨在是详尽的,或将本发明局限为所描述的精确形式,并且根据上文的教示许多修改和变化是可能的。

除非具体地相反指示,否则“一(a/an)”或“所述(the)”的叙述打算意指“一个或多个”。除非明确指示为相反情况,否则“或”的使用旨在表示“包括性的或”,而不是“排除性的或”。提到“第一”组件并不一定要求提供第二组件。而且,除非明确指出,否则提到“第一”或“第二”组件并不将提到的组件限制到特定位置。术语“基于”旨在表示“至少部分地基于”。

本文中所提及的所有专利、专利申请、公开案和描述都出于所有目的以全文引用的方式并入。并非承认它们是现有技术。

X.参考文献

Divesh Aggarwal、Shamank Agrawal、Divya Gupta、Hemanta K.Maji、OmkantPandey和Manoj Prabhakaran,最佳计算分割状态不可延展代码(Optimal computationalsplit-state non-malleable codes),第393-417页,2016年。

Divesh Aggarwal、Yevgeniy Dodis和Shachar Lovett,相加组合学中的不可延展代码(Non-malleable codes from additive combinatorics),第774-783页,2014年。

Divesh Aggarwal、Nico Dottling、Jesper Buus Nielsen、Maciej Obremski和Erick Purwanto,8分裂态模型中的连续不可延展代码(Continuous non-malleable codesin the 8-split-state model),密码电子打印归档(Cryptology ePrint Archive),报告2017/357,2017年,https://eprint.iacr.org/2017/357。

Divesh Aggarwal、Tomasz Kazana和Maciej Obremski,初始阶段使不可延展代码变得更强(Inception makes nonmalleable codes stronger),第319-343页,2017年。

Shashank Agrawal、Divya Gupta、Hemanta K.Maji、Omkant Pandey和ManojPrabhakaran,针对按位篡改和排列的明确不可延展代码(Explicit non-malleable codesagainst bit-wise tampering and permutations),第538-557页,2015年。

Giuseppe Ateniese、Ilario Bonacina、Antonio Faonio和Nicola Galesi,空间证明:当空间是本源时(Proofs of space:When space is of the essence),第538-557页,2014年。

Marshall、Dana Dachman-Soled、Mukul Kulkarni和Tal Malkin,限制深度、限制扇入电路的不可延展代码(Nonmalleable codes for bounded depth,bounded fan-incircuits),第881-908页,2016年。

Marshall、Dana Dachman-Soled、Mukul Kulkarni和Tal Malkin,来自平均大小依赖的不可延展代码:AC0、决策树和有流空间限制的篡改(Nonmalleable codes fromaverage-case hardness:AC0,decision trees,and streaming space-boundedtampering),第618-650页,2018年。

Rishiraj Bhattateraryya和Pratyay Mukherjee,随机预言的非适应性可编程性(Non-adaptive programmability of random oracle),理论,计算机,科学,592:97-114,2015年。

Dan Boneh、Henry Corrigan-Gibbs和Stuart Schechter,气球散列:提供防止连续攻击的可靠保护的存储器依赖函数(Balloon hashing:A memory-hard functionproviding provable protection against sequential attacks),密码电子打印归档,报告2016/027,2016年。http://eprint.iacr.org/2016/027。

Dan Boneh、Richard A.DeMillo和Richard J.Lipton,密码计算中消除错误的重要性(On the importance of eliminating errors in cryptographic computations),J.密码,14(2):第101-119页,2001年。

Dan Boneh和Matthew K.Franklin,韦伊配对中基于标识的加密(Identity-basedencryption from the weil pairing),《第21届国际密码学年会密码学进展会议论文集》,CRYPTO'01,第213-229页,伦敦,英国,英国,2001年,Springer-Verlag。

Nishanth Chandran、Vipul Goyal、Pratyay Mukherjee、Omkant Pandey和JalajUpadhyay,分块式不可延展代码(Block-wise non-malleable codes),第31:1-31:14页,2016a。

Melissa Chase、Chaya Ganesh和Payman Mohassel,代数和非代数语句的有效零知识证明及其在隐私保护凭证中的应用(Efficient zero-knowledge proof ofalgebraic and non-algebraic statements with applications to privacypreserving credentials),第499-530页,2016b。

Mahdi Cheraghchi和Venkatesan Guruswami,针对按位和分裂状态篡改的不可延展编码(Non-malleable coding against bitwise and split-state tampering),第440-464页,2014年。

Dana Dachman-Soled、Feng-Hao Liu、Elaine Shi和Hong-Sheng Zhou,本地可解码和可更新的不可延展代码及其应用(Locally decodable and updatable non-malleable codes and their applications),第427-450页,2015年。

Antoine Delignat-Lavaud、Cédric Fournet、Markulf Kohlweiss和BryanParno,灰姑娘:用可验证计算的魔力把破旧的X.509证明变成优雅的匿名凭证(Cinderella:Turning shabby X.509certificates into elegant anonymouscredentials with the magic of verifiable computation),第235-254页,2016年。

Cynthia Dwork、Moni Naor和Hoeteck Wee,工作覆盖和证明(Pebbling andproofs of work),第37-54页,2005年。

Stefan Dziembowski、Sebastian Faust、Vladimir Kolmogorov和KrzysztofPietrzak,空间证明,585-605页,2015年。

Stefan Dziembowski、Tomasz Kazana和Daniel Wichs,密钥演变方案可抵抗有空间限制的泄漏(Key-evolution schemes resilient to space-bounded leakage),第335-353页,2011a。

Stefan Dziembowski、Tomasz Kazana和Daniel Wichs,一次性可计算的自擦除功能(One-time computable self-erasing functions),第125-143页,2011b。

Stefan Dziembowski、Krzysztof Pietrzak和Daniel Wichs,不可延展代码,第434-452页,2010年。

Antonio Faonio、Jesper Buus Nielsen、Mark Simkin和Daniele Venturi,具有分裂状态刷新的连续不可延展代码(Continuously non-malleable codes with split-state refresh),第121-139页,2018年。

Sebastian Faust、Kristina Hostáková、Pratyay Mukherjee和DanieleVenturi,有空间限制的篡改的不可延展代码(Non-malleable codes for space-boundedtampering),第95-126页,2017a。

Sebastian Faust、Kristina Hostakova、Pratyay Mukherjee和DanieleVenturi,有空间限制的篡改的不可延展代码(Non-malleable codes for space-boundedtampering),密码电子打印归档,报告2017/530,2017b,http://eprint.iacr.org/2017/530。

Sebastian Faust、Pratyay Mukherjee、Jesper Buus Nielsen和DanieleVenturi,连续不可延展代码(Continuous non-malleable codes),第465-488页,2014年。

Sebastian Faust、Pratyay Mukherjee、Jesper Buus Nielsen和DanieleVenturi,具有防篡改和防泄漏功能的冯·诺伊曼架构(A tamper and leakage resilientvon neumann architecture),第579-603页,2015年。

Sebastian Faust、Pratyay Mukherjee、Danielle Venturi和Daniel Wichs,多种篡改电路的有效不可延展代码和密钥导出(Efficient non-malleable codes and key-derivation for poly-size tampering circuits),第111-128页,2014年。

Amos Fiat和Adi Shamir,如何自证:标识和签名问题的实用解决方案(How toprove yourself:Practical solutions to identification and signature problems),第186-194页,1987年。

Marc Fischlin、Anja Lehmann、Thomas Ristenpart、Thomas Shrimpton、MartijnStam和Stefano Tessaro,具有(输出)可编程性的随机预言(Random oracles with(out)programmability),第303-320页,2010年。

Vipul Goyal、Omkant Pandey和Silas Richelson,教科书上的不可延展的承诺(Textbook non-malleable commitments),第1128-1141页,2016年。

Aurore Guillevic和

Zahra Jafargholi和Daniel Wichs,篡改检测和连续不可延展代码(Tamperdetection and continuous nonmalleable codes),第451-480页,2015年。

Bhavana Kanukurthi、Sai Lakshmi Bhavana Obbattu和Sruthi Sekar,具有明确恒定速率的四态不可延展代码(Four-state non-malleable codes with explicitconstant rate),第344-375页,2017年。

Bhavana Kanukurthi、Sai Lakshmi Bhavana Obbattu和Sruthi Sekar,不可延展随机性编码器及其应用(Nonmalleable randomness encoders and theirapplications),第589-617页,2018年。

Feng-Hao Liu和Anna Lysyanskaya,分裂状态模型中的防篡改和防泄漏(Tamperand leakage resilience in the splitstate model),第517-532页,2012年。

Mohammad Mahmoody、Tal Moran和Salil P.Vadhan,可公开验证的顺序工作证明(Publicly verifiable proofs of sequential work),第373-388页,2013年。

Ralph C.Merkle,基于传统加密函数的数字签名(A digital signature basedon a conventional encryption function),第369-378页,1988年。

Victor Miller,用于曲线上的函数的短程序(Short programs for functionson curves)。未发表的手稿,1986年。

Rafail Ostrovsky、Giuseppe Persiano、Danielle Venturi和Ivan Visconti,根据最小假设的分裂状态模型中的连续不可延展代码(Continuously non-malleable codesin the split-state model from minimal assumptions),第608-639页,2018年。

Bryan Parno、Jon Howell、Craig Gentry和Mariana Raykova,皮诺曹:几乎切实可行的可验证计算(Pinocchio:Nearly practical verifiable computation),第238-252页,2013年。

Krzysztof Pietzak,催化空间的证明(Proofs of catalytic space),IACR密码电子打印归档,2018:194,2018年。

Wolfgang J Paul、Robert Endre Tarjan和James R Celoni。空间限制图形上的游戏(Space bounds for a game on graphs),数学系统理论,10(1):239-251,1976年。

Ling Ren和Srinivas Devadas,堆叠式扩展器的空间证明(Proof of space fromstacked expanders),第262-285页,2016年。

相关技术
  • 强空间证明中有空间限制的连续不可延展代码
  • 任务不可知连续学习场景的元空间聚类学习方法及装置
技术分类

06120112803436