CN111971677A - 用于移动装置的防篡改数据编码 - Google Patents

用于移动装置的防篡改数据编码 Download PDF

Info

Publication number
CN111971677A
CN111971677A CN201880092217.6A CN201880092217A CN111971677A CN 111971677 A CN111971677 A CN 111971677A CN 201880092217 A CN201880092217 A CN 201880092217A CN 111971677 A CN111971677 A CN 111971677A
Authority
CN
China
Prior art keywords
memory
secret
function
decoding
codeword
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
CN201880092217.6A
Other languages
English (en)
Inventor
P·穆克赫吉
K·霍什佳科娃
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.)
Visa International Service Association
Original Assignee
Visa International Service Association
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 Visa International Service Association filed Critical Visa International Service Association
Publication of CN111971677A publication Critical patent/CN111971677A/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/128Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

系统、方法和设备可以保护具有有限内存的装置上的秘密,同时仍提供防篡改性。为了实现较低的内存使用率,实施例可以将内存依赖函数MHF应用于秘密S以获得结果Y,这可以在编码过程中使用以获得代码C。在应用所述MHF之后,证明函数可以生成在所述代码C的解码(例如,计算验证过程)中使用的证明值。所述代码C可以包括所述证明值、所述秘密S和所述结果Y,并且可以被发送到验证所述代码C的解码装置作为解码过程的一部分。

Description

用于移动装置的防篡改数据编码
背景技术
当秘密数据(例如用于加密的秘密密钥)存储在装置的安全”存储器中时,攻击者仍然可以使用故障攻击对所述“安全”存储器进行篡改。在故障攻击中,存储器单元中的值被改变,并且安全函数的输出(例如,在包括安全存储器的安全元件中)可以用来推导原始秘密数据。一旦攻击者知道秘密数据,她就可以使用所述秘密数据,例如通过对用秘密密钥加密的密文进行解密来破坏相关系统的安全性,所述密文是恢复的秘密数据的一部分。作为其它实例,攻击者可以使用某一认证协议中的秘密数据不当地访问资源。当电话被盗或恶意软件被引入时,可能会发生这种攻击。
作为硬件窜改和内存泄漏的方法,故障攻击的整体有效性使得故障攻击成为访问存储在消费者装置上的私人数据的广泛使用的技术。例如,故障攻击可能对RSA或椭圆曲线迪菲-赫尔曼(elliptic curve Diffie-Helman)技术有效,这些技术可以用于输送层安全(TLS)。正因如此,越来越多的研究人员尝试找到译码方案来保护数据免于存储器针对故障攻击和类似形式的硬件篡改的漏洞。
这种攻击可以通过使用不可延展(non-malleable)代码来部分地解决,使得秘密数据通过用不可延展代码进行编码来存储。这种编码不需要密钥,并因此与加密不同。使用不可延展代码可以允许安全元件检测是否已完成篡改,或产生相同的输出。但是,不可延展代码要求在安全元件中使用解码函数。攻击者恶意软件可能包括解码函数或获得对解码函数之访问,并且包括编码函数。这种恶意软件可以使用篡改来恢复秘密数据。现有的保护技术未能解决这种恶意软件,并因此会留下开放漏洞。
本文描述的实施例个别地且共同地解决了这些和其它问题。
发明内容
本发明的实施例包括用于保护具有有限内存的装置上的秘密,同时仍提供防篡改性的系统、方法和设备。为了实现较低的内存使用率,实施例可以将内存依赖函数(memory-hard function)MHF应用于秘密S以获得结果Y,这可以用作编码过程的一部分,以获得代码C。编码可以由预配计算机(provisioning computer)完成。在应用MHF之后,证明函数可以生成在代码C的解码(例如,计算验证过程)中使用的证明值。代码C可以包括证明值、秘密S和结果Y,并且可以例如在密码函数中需要秘密S时发送到验证代码C的解码装置作为解码过程的一部分。MHF与证明函数的分离可允许解码使用更少的内存,同时仍然确保编码过程需要足够的内存。
根据一个实施例,一种方法对编码计算机上的秘密进行编码。可以检取一个或多个公共参数,其中可以基于内存依赖函数MHF和安全参数λ生成一个或多个公共参数。内存依赖函数MHF可应用于秘密S或应用于秘密S的函数(例如,哈希)以获得结果Y。将内存依赖函数MHF应用于秘密S可能需要编码计算机上至少N字节的内存,N为至少一千兆字节。证明函数可以使用秘密S、结果Y和一个或多个公共参数来确定证明值π。可以根据证明值π、秘密S和结果Y汇编码字C。码字C可以发送到被配置成存储码字C并且稍后对码字C进行解码的装置。证明值π可以被配置成由装置的解码函数用于验证使用秘密S从内存依赖函数MHF获得的结果Y的正确性。解码函数可操作以使用k字节的内存,其中k小于N,例如小100倍。
下文更详细地描述本发明的这些和其它实施例。例如,其它实施例涉及与本文所描述的方法相关联的系统、装置和计算机可读介质。
关于本发明的实施例的另外细节可以参见本文中所描述的具体实施方式和图式。
附图说明
图1示出了将秘密sk存储在安全元件中的移动装置。
图2示出了可以位于移动装置内部的被篡改的安全元件。
图3A示出了不可延展代码的正确性。图3B示出了不可延展代码的不可延展性。
图4示出了根据本发明的实施例的不可延展代码用于保护存储在移动装置400的安全元件中的秘密的用途。
图5示出了根据本发明的实施例的在将秘密存储在安全元件中以执行密码函数的情况下使用不可延展代码的益处。
图6示出了在篡改攻击者能够同时编码和解码时对编码的秘密进行的故障攻击的实例。
图7示出了根据本发明的实施例的由于装置上的内存资源有限而无法成功地对存储在装置中的编码的秘密执行攻击的攻击者的实例。
图8是说明根据本发明的实施例的用于对秘密进行编码的方法的流程图。
图9示出了根据本发明的实施例的使用哈希函数的示例编码/解码方案。
图10示出了根据本发明的实施例的使用可公开验证计算的示例编码/解码方案1000。
图11示出了来自图10的编码/解码方案的描绘。
图12示出了根据实施例的预配装置的框图。
图13示出了根据本发明的实施例的示出使用码字以在密码函数中使用的解码过程的方法1300。
图14示出了根据实施例的移动装置的框图。
图15示出了可与根据本发明的实施例的系统和方法一起使用的示例计算机系统的框图。
术语
“不可延展代码”可以指一种译码方案,其中对已经(例如,由篡改对手)改变的码字进行解码产生原始(未改变)消息或无法用于推断知识的完全无关值。
“受空间限制”、“受内存限制”或“内存依赖函数”(MHF)可描述完成任务所需的时间主要由所需的可用内存量确定的函数或任务。例如,对于受空间限制的计算问题,特定计算过程的效率可能受可读取数据和将数据存储到存储器中的速率(即存储器带宽)的影响最大,而不是受处理器的时钟速度的影响最大。内存依赖函数需要执行某一数量的存储位。严格的内存依赖哈希函数是内存依赖函数的实例。内存依赖函数需要时间T和空间S来进行普通计算,但如果可用空间量小于S,那么时间量会大大增加。
“可验证计算”可以指在不执行计算本身的情况下高效地检查计算正确性的程序。目标可以是开发资源(空间/时间)效率比目标计算本身高得多的验证程序。例如,可以考虑通过云服务器在巨大数据库上进行内存密集型计算。客户端希望服务器在数据库上执行一些计算(例如聚合),并且可以使用可验证计算来检查结果是否正确,而不对数据执行实际操作。
“证明函数”可以指产生可用于验证计算的“证明值”的函数。证明值可以是简洁的,因为其可以使用相对较低的内存(空间)计算,从而允许在低空间中产生解码。在编码期间使用MHF可确保需要高内存,即使可在低内存中执行证明函数本身时也是如此。
“验证函数”可以指使用证明值来确认代码C由指定编码函数从秘密S生成的程序。
“安全参数”可以指根据所需安全级别指定的基本系统参数。方案的所有其它度量(例如,运行时间、所需内存等)可以根据安全参数来测量。
“随机算法”可以指使用从受信任的随机性来源提取的随机位的计算。在特定输入上,这种算法的输出可以遵循概率分布。
“确定性算法”可以指不使用任何随机性的计算,并且在特定输入上,这种算法的输出是固定的,因为所述输出仅由输入确定。
“安全元件”可以是防篡改平台(例如,单芯片安全微控制器),其能够根据一组很好标识的受信任机构所阐述的规则和安全要求来安全地托管应用程序以及其机密和密码数据(例如,密钥管理)。示例外形规格包括通用集成电路卡(UICC)、嵌入式SE和microSD。
具体实施方式
实施例描述使用内存依赖函数和可验证计算来实现不可延展代码,例如,允许错误检测或在检测到不可延展代码时始终提供相同的输入数据。另外,在无法用当今的移动装置实施编码时,可以实际上实施解码,从而防止移动装置生成可用于不当地认证装置的代码。
为了实现这种不可延展代码,服务器可以对例如秘密密钥(sk)的消息(m)进行编码,以生成代码(y)(也称为‘c’),并生成对应于特定m/y对(也称为sk/c或m/c对)的证明值π。无论消息大小,证明值π的大小都可以是恒定的。然后,将代码和证明值两者发送到移动装置。为了解码消息,可能需要移动装置验证证明值。例如,解码函数可能需要在可访问解码功能性之前先进行验证。作为另一实例,例如当代码包括消息时,验证可以提供解码。因此,证明值的正确评估可以启动解码操作,从而允许装置对代码进行解码进而以明文获得消息。消息然后可以用于函数,例如由加密函数用于对输入数据进行加密,其中加密的输出可以发送到另一个装置。
在实施例中,与验证现有消息(m)/代码(y)对的证明值相比,生成新的输入数据的证明值可能耗费明显更多的内存。因此,考虑到移动装置上内存存储的有限可用性量,如果攻击者要将故障引入存储的代码或者在解码操作期间,那么添加的故障因为缺少内存资源而无法集成到重新编码操作中。因此,重新编码操作不会泄漏任何原始信息,并且攻击者将无法推导编码函数,例如,作为编码的输入与输出代码之间的关系。
作为要求编码使用大量内存的一部分,内存依赖函数(MHF)可以对秘密S或S的某一其它函数进行操作。例如,MHF可以对S的哈希进行操作。这种程序保证对于给定S,无法在低空间(内存)中计算MHF。由于MHF提供了高内存要求,所以可验证的计算方面可以使用较少的内存。例如,生成证明和验证可以使用少量的内存,使得所述证明和验证可以在移动装置上执行。生成证明的证明函数以及MHF可以包括编码函数。验证函数可以执行解码。因此,低空间对手只能用与S明显无关的预计算的S'的编码进行覆盖。
I.篡改安全元件
出于各种原因,可以使用预配有秘密sk的移动装置。例如,秘密sk可以用作秘密密钥以对通信进行加密。作为另一实例,秘密sk可以用于认证目的,使得移动装置可获得资源(例如,建筑、计算机或账户)的条目。取决于要求,移动装置可使用秘密sk对输入数据(例如,质询)进行操作以在向认证计算机进行请求时产生认证响应。
A.使用安全元件进行加密
图1示出了在安全元件110中存储秘密(sk)115的移动装置100。安全元件110可以将秘密115存储在安全元件110的安全存储器中。安全元件110还可以包括执行函数112的电路,所述函数被标识为Fsk(·)。函数112可以对输入105进行操作以提供输出120。移动装置100然后可以将输出120发送到接收方装置150,所述接收方装置可以对输出120进行解密以获得输入105。
这一操作可以在要使用安全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。但是,如果m和m'不同,那么解码函数320。理论上,解码函数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执行函数以获得输出520。安全元件510易受篡改攻击,如上所述。
安全元件550存储使用编码函数从秘密sk生成的代码c。安全元件550对代码c进行解码以获得秘密sk,秘密sk然后用于对输入555执行函数以获得输出570。
如图所示,代码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仍然易受篡改攻击。特定编码和解码技术可以是公开的,例如作为标准的一部分。因此,攻击者可能会生成执行这些函数的恶意软件。这种攻击在下一章节中得到解决。
III.更复杂的攻击
与使用额外秘密信息(例如,密钥)的加密不同,此类额外秘密信息不用于编码/解码。对于这些编码或解码程序,不存在私钥、映射或其它认证密钥。此外,编码/解码函数通常为公众所知,例如,作为标准的一部分。因此,存在存储在装置的存储器中的编码的秘密,其中任何人都可以对装置上的秘密进行解码、篡改和重新编码。如图所示的装置无法阻止这些操作。
图6示出了在篡改攻击者能够同时编码和解码时对编码的秘密进行的故障攻击的实例。图6中执行的某些动作可以在移动装置或其它基础装置的安全元件中执行,所述基础装置例如固定装置。为便于说明,未示出安全元件和移动装置。
秘密(sk)610由编码函数620编码以提供代码(c)630。如本文所述,此初始编码可由预配装置执行。对移动装置的预配可以使代码630存储在安全元件的安全存储器中。预配可以包括安装解码函数660,使得移动装置可以使用秘密610来例如加密消息或执行认证程序。
一旦存储代码c,攻击者模块640就可以执行攻击600。攻击者模块640可能是通过网络(例如,在用户不知情地选择安装恶意软件的链接时)安装到移动装置上的恶意软件。作为另一实例,可能有人窃取移动装置并安装攻击者模块640。
在攻击600中,攻击者模块640可以从安全存储器检取或拦截代码630,并执行三个列出的动作(1)-(3)。代码630的拦截可能会在解码函数660尝试检取代码630并对所述代码进行解码时发生。在动作(1)中,攻击者模块640可以对代码(c)630进行解码以获得秘密(sk)610。解码可以仅使用攻击者模块640的代码来执行,或也可以使用解码函数660。在动作(2)中,攻击者模块640通过向其中添加一个秘密来改变秘密,从而获得改变的秘密sk':=sk+1。以此方式,sk'与sk相关,并且由于这种关系,sk'的知识完全显示了sk的知识。在动作(3)中,攻击者模块640使用编码函数620对改变的秘密sk'进行编码以获得改变的代码(c')650。由于原始编码是由预配装置执行的,因此攻击者模块640将包括编码函数620。
在执行攻击600之后,解码函数660可以接收改变的代码650并对所述改变的代码进行解码以获得改变的秘密(sk')670。改变的秘密670然后可以用于应用于输入的函数(例如,加密)中,从而获得取决于改变的秘密670的输出,例如,如图4所述。因此,执行攻击的任何外部人员或软件(即,在安全元件外部)只能看到Fsk′(input)。但是,由于sk与sk'相关,因此外部实体可推导sk。攻击者意识到A(例如,哪些特定的位或位行被反转),并因此可以通过系统地进行改变并查看安全元件的输出,例如通过提供相同的输入并确定输出如何针对秘密610的不同变化而变化来推断秘密610。如图所示,无法在不施加进一步限制的情况下阻止此攻击。
IV.受空间限制的篡改模型
如上所述,黑客可以篡改装置的“安全”存储器。可以对存储器单元中的编码的值进行解码、改变和重新编码以推导原始值。此类攻击的一个解决方案是黑客受编码所需资源的限制的时间。这种情况下的复杂性可以是算法运行所需的位数(即算法中任意点处所需的最大内存)。因此,限制是可用于执行编码函数的内存量。因此,编码算法需要的内存比攻击者所允许的内存多。
理想情况下,通过使用需要大空间(大量内存)的编码程序以及可以在小空间(相对少量的内存)中执行解码过程来抵抗篡改。利用这种受限的编码函数,攻击者将无法对改变的秘密进行重新编码。如果攻击者无法重新编码,那么攻击者无法向解码函数提供改变的代码。编码的值具有某一格式,并且攻击者可能具有用于解码消息的某一函数,但攻击者无法制定符合格式的编码,所述格式例如可验证格式。因此,不会从安全存储器获得输出。但是,无法编码并不能阻止攻击者任意地将编码的状态篡改为被所允许内存所准许。不可延展代码应保证此类篡改会引起上述三种情况之一,从而保护秘密。
图6可以示出对重新编码的需要。可以将Fsk′(input)的操作设置为仅使用解码函数660的输出进行。因此,输出值(例如,输出=Fsk′(input))的唯一方法是首先向解码函数660提供代码。因此,攻击者无法仅在动作(2)处使用sk'以供在函数Fsk′(input)中使用。此外,攻击者可能会解码C以获得SK,但攻击者无法对SK重新编码。因此,攻击者无法将SK变为SK',然后重新编码以获得C'。
不可延展性的要求可能使得允许解码并且不允许编码的任务甚至更加困难。具体来说,解码函数也可能需要过多的内存,并且考虑到当前移动装置的内存和处理能力而可能效率低下。一个解决方案(https://eprint.iacr.org/2017/530.pdf)需要大约30-100MB的可用计算空间,以验证每个128位消息(例如,作为解码程序的一部分),这些消息的空间效率并不是非常高。此外,这些要求随着消息长度(或安全参数)以4次方增加。
如果解码所需的内存量过大而使得移动装置实际上无法使用编码/解码方案,那么解决方案不可行,即使移动装置可以预配有代码也是如此。例如,假设预配装置(例如,预配服务器)具有数太字节的空间以供编码,并因此可以编码秘密以获得码字并且预配移动装置。这种对数太字节的内存的要求确保移动装置无法执行编码,但如果移动装置没有足够的内存来执行解码,那么这种限制并非有益的。理想情况下,解码应该使用数千字节的内存来进行实际使用。
图7示出了根据本发明的实施例的由于装置上的内存资源有限而无法成功地对存储在装置中的编码的秘密执行攻击的攻击者的实例。在图7中执行的某些动作可以在可具有有限内存的移动装置或其它基础装置的安全元件中执行,所述基础装置例如固定装置。为便于说明,未示出安全元件和移动装置。图7是图6的镜像,但编码是不可能的。
秘密(sk)710由编码函数720编码以提供代码(c)730。对移动装置的预配可以使代码730存储在安全元件的安全存储器中。预配可以包括安装解码函数760,使得移动装置可以使用秘密710来例如加密消息或执行认证程序。
在攻击700中,攻击者模块740可以从安全存储器检取或拦截代码730,但只能执行操作(1)和(2),而不能执行动作(3)。因此,攻击者模块740无法使用编码函数720对改变的秘密sk'进行编码以获得改变的代码(c')750。因此,无法获得与原始秘密710相关的改变的秘密770。在最好的情况下,改变的秘密770与原始秘密710无关,并且可以只是错误消息。
V.解码使用验证的制定
作为确保无法使用移动装置的可用资源执行编码并同时允许移动装置执行译码功能性的一部分,实施例可以使用与空间证明(也称为PoS)相关的构造,如在[Ateniese等人,空间证明:当空间是关键时(Proofs of space:When space is of the essence)。在SCN中,第538-557页,2014年;Dziembowski等人,空间证明。在CRYPTO中,第585-605页,2015年]中所介绍。
在这种实例中,组件可以使用任何输入来构建证明,所述证明允许在不重新计算整个函数的情况下进行验证计算(即,可验证计算)。例如,如果对某些输入执行函数以获得特定输出,那么可以执行验证以确认计算正确的函数。此验证不需要与实际生成特定输出一样多的内存。验证可能替代地获取证明并验证以确认特定输出的计算。
因此,证明器P可以证明其有足够的空间可供用于受空间限制的验证器V。例如,可以针对某一秘密X例如使用Fiat-Shamir变换来呈现证明Px[Fiat和Shamir。如何证明自己:标识和签名问题的实用解决方案。(How to prove yourself:Practical solutions toidentification and signature problems.)在Crypto中,第186-194页,1986年]。验证器可以在受限空间内例如使用小于S位来验证对(X;px)。码字为c=(X;px)。仅通过运行px从X生成的检验程序来完成解码。
健全性(soundness)保证是作弊证明器有极大的可能无法产生正确的证明,除非它使用大量空间,即远多于S位。正确性保证是如果πS确实是从X生成的,那么验证将为1。受限制的验证的要求是验证需要执行至多S位内存。如果码字存储在受s限制的装置中,那么解码在可用空间内是可能的,而编码不可用,因为受健全性保证。因此,生成有效码字的唯一方法是让预配装置覆盖现有码字。
以上技术可实施为:
SETUP→pp:返回公共参数PP的随机算法。
PROVEpp(X)→(px):接收任何质询(秘密)X的输入并返回证明px的确定性算法。
VERIFYPP(X,px)→0/1:接收质询-证明对的输入并返回决策位0/1的确定性算法(px的‘0’并非从X生成,并且px的‘1’由X生成。
设置函数和证明函数由预配装置执行。设置函数可以在设置装置时针对所有证明执行一次。在执行证明函数后,可以将秘密X、证明px和公共参数PP发送到移动装置作为预配的一部分。验证函数可以由移动装置作为解码函数执行。码字c可以包括(X、px、PP),并存储在安全元件中,所述安全元件包括验证函数。为了执行使用秘密X对输入进行操作(例如,加密操作)的函数F,解码函数可以解析来自码字C的X、px和PP,并使用验证函数来确定质询-证明对是有效(输出=1)还是无效(输出=0)。如果质询-证明对有效,那么函数FX(input)提供输出。如果质询-证明对无效,那么安全元件可以提供错误消息,例如,⊥。
在一种技术中,设置函数使用局部扩展器图表堆栈(SoLEG)来生成公共参数作为图表,并且证明函数使用图表来计算图表的标签,并使用Merkle承诺(commitment)方案来提交所产生的字符串(证明)。然后随机选择图表的几个质询顶点。对于每个质询的顶点,证明器计算并输出对此顶点的开放,以及对所述顶点的所有前置任务(predecessor)的开放。验证器获得秘密(身份)和证明作为输入,所述秘密和证明包括承诺和开放。验证函数可以验证所有开放相对于承诺的一致性,并检查标签的局部正确性。SoLEG是内存依赖函数的实例,但是SoLEG在证明函数中的构造使得使用许多内存来解码。相比之下,实施例可以在证明函数之前应用内存依赖函数,从而允许使用较少量的内存进行解码。
根据使编码需要许多内存的所需目标,图表的标签需要大量内存(空间)。验证函数在检查仅几个随机质询顶点的开放时使用较少的内存。然而,上述技术可能需要过多的内存,使得验证函数无法在移动装置上正常运行,例如,需要30Mb或更多的内存以供安全元件使用。
作为针对解码使用较少内存的一部分,实施例可以使用计算验证,而不是大空间验证。PoS保证证明器使用足够的空间,但并不保证关于计算的任何内容。具体来说,如果证明器使用的编码方法不同于指定的编码方法,但仍使用相当大的空间,那么验证将有效。相反,在验证计算时,证明器必须使用指定的编码函数来使验证(解码)有效。具体来说,如果证明器使用不同的编码函数,那么即使使用大量计算空间,验证也会失败。
VI.内存依赖函数的使用
实施例提供编码/解码技术,其中解码函数可以用小于s位执行,并且编码函数需要多于s位(例如,10x、100x或1000x)。具体来说,实施例可以提供编码/解码技术,其中用于编码的内存量为数十或数百千兆字节(例如,太字节),而解码只需要几千字节。因此,实施例可以改进上述技术。此外,这种提出的构造可以使验证内存与消息大小(安全参数)呈线性关系并因此可扩展。
为了实现在保持对编码函数的大量内存的要求的同时用较少内存执行解码函数,可以使用秘密X作为输入来实施内存依赖函数,并在执行证明函数之前提供输出Y。在一个实施方案中,Y=MHF(Hash(X)),其中Hash为任何标准哈希函数,例如SHA-256,并且MHF是任何标准的内存依赖函数。
考虑到任何输入,内存依赖函数的执行可能需要至少给定量的空间。内存依赖函数将需要一定数量的位。示例内存依赖函数可以在例如en.wikipedia.org/wiki/Scrypt或Biryukov等人的可获自password-hashing.net/argon2-specs.pdf的“Argon2:用于密码哈希和其它应用程序的内存依赖函数(Argon2:the memory-hard function for passwordhashing and other applications)”中找到。内存依赖函数可以被证明为在随机预言机(oracle)模型中为内存依赖的,并且可以实施用于密码哈希的技术。
考虑到内存依赖函数已限制所需的最小内存量,证明函数可能不需要很复杂,从而产生并非内存密集型的解码函数。可以使用可验证的计算技术,例如,简短无交互知识证明(SNARK)技术。在一些实施例中,可以使用Pinnocchio(eprint.iacr.org/2013/279.pdf)来实施证明和验证函数,Pinnocchio使用比前一章节中提供的实例更少的内存。这种可验证的计算技术可以验证是否使用相同的编码函数,而不是验证所使用的计算的空间量。此外,验证程序可独立于计算的复杂性。因此,使用空间密集型计算不会改变验证的空间复杂性。
A.编码方法(预配服务器)
图8是示出根据本发明实施例的用于编码秘密的方法800的流程图。方法800可以在编码计算机上执行,编码计算机可以将码字预配到移动装置。方法800可以使用内存依赖函数作为编码的一部分,以确保在编码装置上需要的内存量最少,并使用允许内存有限的装置执行解码的可验证计算技术,同时仍提供用于标识篡改的机制。
在框810处,检取一个或多个公共参数,其中所述一个或多个公共参数是基于内存依赖函数F和安全参数λ生成的。一个或多个公共参数的生成可以由设置函数执行,例如,描绘为VC.SETUP(F)→pp,其中pp对应于一个或多个公共参数。在一些实施方案中,可以生成多个公共参数,包括第一参数和第二参数,它们是不同的参数。作为实例,公共参数可以包括证明器可以稍后使用的评估密钥(EK_F)。此评估密钥EK_F可依赖于F。用于验证的另一密钥VK_F也可以取决于F。计算可以取决于安全参数。可以使用约128位的安全设置。
在框820处,将内存依赖函数MHF应用于秘密S或S的函数(例如,哈希)以获得结果Y。将内存依赖函数F应用于秘密S可能需要编码计算机上至少N字节的内存。作为实例,N可为至少一千兆字节(例如,2GB、5GB、10GB、100GB等)。在一些实施例中,可通过调节安全参数和其它系统参数来设置N。在一些实施例中,内存依赖函数MHF可以应用于被应用于秘密S的哈希函数H(例如,输出Z),使得内存依赖函数(MHF)作用于“哈希函数”的输出Z上。MHF也可以包括哈希。哈希函数H可以使得对于任何X,H(x)为随机的。在一些实施方案中,使用一个或多个公共参数中的一个参数来确定F(S),例如,如下所述的评估密钥EK_F。还可以使用多于一个参数来确定F(S)。
在框830处,证明函数使用秘密S、结果Y和一个或多个公共参数中的一个来确定证明值π。证明值π是可验证的,并因此可用于验证S和Y(例如,验证它们尚未被篡改)。提供函数可以描绘为VC.PROVEpp(S,F)→π。
在框840处,根据证明值π、秘密S、结果Y和一个或多个公共参数中的至少一个汇编码字C。码字C可以描绘为C:=(S,Y,π)。在一些实施例中,公共参数中的第二参数可以在框840中使用,并且可以在框830中使用不同的第一参数。在其它实施例中,同一公共参数可以用于两个框中。证明值π可具有恒定大小。公共参数可以永久性地硬编码到装置中,例如,因为所述公共参数对于所有码字都是相同的并且是不可篡改的。公共参数可以位于装置之外,例如,存储在受信任的服务器中。证明函数和验证函数可在需要时访问公共参数。
在框850处,将码字C发送到被配置成存储码字C并且稍后对码字C进行解码的装置。证明值π被配置成由装置的解码函数用于验证使用秘密S从内存依赖函数F获得的存储的结果Y的正确性。解码函数可操作以使用K字节的内存。作为实例,K可以比N小至少100、200、500或1000倍。例如,K可以为数百(例如,500)或者数万或数十万(例如,10kB、50kB、100kB或500kB)。
因此,解码函数仍然可以由具有有限内存的装置执行,所述装置例如移动装置。并且,改进是使用相对少量的内存来解码(例如,验证)的能力,这使得在移动装置上可以进行解码,同时仍保持无法在移动装置上执行编码。此外,在安全元件中执行解码的实施例中,很难例如通过将移动装置连接到具有额外内存和处理功率的另一装置来添加更多内存。
在各种实施例中,解码函数可以是验证函数或包括验证函数,并因此可以包括除验证之外的其它功能性。验证可以描绘为VC.VERIFYpp(S,Y,π)→0/1。如果Y等于F(S),那么验证函数将输出1;如果它不等于F(S),那么将输出0。完整性要求可确保如果正确生成证明,那么它必须正确验证。健全性要求可以确保如果y≠F(x),那么证明不应该正确验证。如果VC.VERIFY需要s位的内存来执行,那么VC.VERIFY可以被视为受s限制。
B.编码/解码方案示例
图9示出了根据本发明的实施例的使用哈希函数的示例编码/解码方案900。在此实例中,函数F包括初始哈希函数H(其应用于秘密x)和内存依赖函数(MHF)。此实例对应于块。步骤920和930(包括子步骤931-934)可以由预配装置执行,并且步骤940可以由验证装置执行,所述验证装置例如可以移动的用户装置。步骤940可以在验证装置的安全元件中执行。
在910处,函数F被定义为包括内存依赖函数(MHF)和哈希函数H,其中首先应用哈希函数H。
在920处,设置函数确定一个或多个公共参数PP。设置函数可以使用函数F来确定PP。设置函数的详细信息可以在Pinnocchio(eprint.iacr.org/2013/279.pdf)中找到。
在930处,使用证明函数来生成码字C,包括与秘密X相对应的证明值。如图所示,证明函数实施如下。在931处,将哈希函数H应用于秘密X以获得哈希Z。可以使用各种技术执行哈希函数,所述技术例如哈希表、平凡哈希函数、完美哈希、最小完美哈希、哈希均匀分布数据或其它分布、滚动哈希、通用哈希、乘法哈希和密码哈希函数。哈希函数可以将秘密H映射到固定大小的哈希,并且可以是单向哈希函数。哈希函数H可能具有确定性的属性,因此相同的消息始终会产生相同的哈希,不可能从所述消息的哈希值生成消息,除了尝试所有可能的消息外,消息的小变化应该广泛地改变哈希值,使得新的哈希值变得与旧的哈希值无关,而且不可能找到具有相同哈希值的两个不同消息。哈希函数可以用作随机函数(俗称为随机预言机模型),并且可以用密码哈希函数实例化。示例哈希函数为SHA-256。
在932处,将内存依赖函数MHF应用于哈希Z以获得结果Y。在933处,将VC.Prove函数应用于秘密X和结果Y以使用至少一个公共参数来确定证明π。在934处,汇编码字C以包括秘密X、结果Y、证明π和至少一个公共参数PP。码字C可以发送到验证装置,例如,将秘密X用于密码目的的装置。
在940处,验证函数验证码字C。可以解析码字C,以单独确定秘密X、结果Y、证明π以及至少一个公共参数PP。然后,验证函数可以使用证明π来确认结果Y是通过将函数F应用于秘密X来确定的。如果X、Y、证明π或至少一个公共参数PP被改变,那么验证将为假的。
在一些实施例中,当验证为真时,可以使用秘密S将密码函数应用于输入数据以获得从验证装置的安全元件输出的输出数据。当正确性为假时,可以提供错误消息。因此,验证的结果可以指示验证装置的另外的功能性,例如,移动装置的安全元件是否要使用秘密X对输入数据进行加密。
图10示出了根据本发明的实施例的使用可公开验证计算的示例编码/解码方案1000。方案1000使用两个公共参数:公共评估密钥和公共验证密钥。密钥生成(KeyGen)执行为设置函数。计算函数执行编码。并且,验证函数是解码。图11示出了来自图10的编码/解码方案的描绘。
在1010处,密钥生成使用安全参数λ和函数F。在一些实施方案中,函数F可包括多个部分,例如,应用于哈希结果的初始哈希函数和内存依赖函数,如图9所示。使用安全参数λ和函数F生成公共评估密钥EKF和公共验证密钥VKF。这种密钥生成可以如同在Pinnocchio中一样执行。图11的设置函数1110对应于1010中的密钥生成。
在1020处,使用秘密X和公共评估密钥EKF作为输入。函数F使用秘密X来确定结果Y。然后,证明函数可以使用秘密X以及结果Y来获得正确性的证明πy。步骤1010和1020可以由具有足够内存来执行编码的预配装置执行。预配装置可以将包括X、Y、πy和VKF的码字发送到用户装置,所述用户装置可以将秘密X用于密码目的。
图11的编码函数1120对应于1020的计算函数。使用秘密X和公共评估密钥EKF计算F,以获得结果Y和证明πy。然后使用秘密X、结果Y和证明πy汇编代码C。
在1030处,验证函数可以使用码字来确认结果Y是否的确是使用πy和VKF从秘密X生成的。解码函数1130对应于1030。解码可以由预配的装置执行,所述装置例如电话。可以解析码字以获得秘密X、结果Y和证明πy。然后,验证函数可以使用公共验证密钥VKF和证明πy来验证函数F对秘密X的应用是否的确是Y。
VII.装置
现在描述预配装置和移动装置。
A.预配装置
图12示出根据实施例的预配装置1200的框图。预配装置1200的模块可以在硬件或软件中实施,例如,存储在计算机可读介质中,并由处理器执行。预配装置1200包括数据存储装置1205、参数生成模块1210、内存依赖模块1212、证明生成模块1214、编码模块1216、通信模块1218以及网络接口1230。预配装置1200可以实施方法800,包括图8-11中描述的方案。
数据存储装置1205可以存储要编码的秘密S以及安全参数λ。数据存储可以按各种方式实施,例如,在处理器、RAM、闪存或硬盘驱动器的缓存中实施。
参数生成模块1210可以接收安全参数λ和关于要使用的函数F(包括内存依赖函数MHF)的信息(例如,指示使用哪个内存依赖函数的标识符或F的一些参数)。参数生成模块1210可以基于内存依赖函数F和安全参数λ生成一个或多个公共参数PP。其它模块也可以使用安全参数λ。在一些实施例中,函数F的各个方面可以硬编码成参数生成模块1210,并因此不需要从数据1205发送信息。一个或多个公共参数PP可以包括密钥,例如,图10和11的密钥。因此,参数生成模块1210可以是可验证计算的密钥生成模块。一旦生成之前提供的一个或多个公共参数,它们就可以被存储以供其它模块以及其它装置访问,例如,用于公开访问。
内存依赖模块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可以由移动装置或其它验证装置执行,尤其是内存有限的装置。例如,装置的安全元件可以是内存有限的。
在框1310处,安全存储器存储码字C。码字C可以包括证明值π、秘密S和通过将内存依赖函数F应用于秘密S而获得的结果Y。将内存依赖函数MHF应用于秘密S或者秘密S的函数可能需要至少N字节的内存。N可以为至少一千兆字节。
在框1320处,可以例如在安全元件处接收输入数据。安全存储器可以是安全元件的一部分。安全元件可以执行方法1300。作为实例,输入数据可以包括要在发送给接收方之前加密的消息。
在框1330处,从安全存储器检取码字C。
在框1340处,解析码字C以标识证明值π、秘密S以及结果Y。可以检取由内存依赖函数MHF用于获得结果Y的额外的一个或多个公共参数。
在框1350处,通过使用证明值π来验证通过将内存依赖函数F应用于秘密S而获得的存储的结果Y的正确性,对码字C进行解码。解码可操作以使用K字节的内存。K可以比N小至少100倍。
在框1360处,当正确性为真时,可以使用秘密S将密码函数应用于输入数据以获得从安全元件输出的输出数据。
在框1370处,当正确性为假时,可以提供错误消息,例如,可以输出值。
图14示出了根据实施例的移动装置1400的框图。移动装置1400可以发送对编码的秘密的请求,例如作为代码C。预配计算机可以将具有代码C的响应发送到移动装置1400,所述移动装置可以将代码C存储在安全存储器1450中。移动装置1400是解码计算机的实例。
移动装置1400包括处理器1410、计算机可读介质1420(例如,用于存储软件以在处理器1410上执行)、输入/输出组件1430(例如,触摸屏、麦克风和扩音器)、通信模块1440、安全存储器1450以及安全元件1460,其中的每已个都可连接到通信总线以用于相互通信。在一些实施方案中,安全存储器1460可以包括安全元件1450。
通信模块1440可以通过天线1470接收码字C。安全存储器1450可以存储码字C,其包括证明值π、秘密S、通过将内存依赖函数F应用于秘密S而获得的结果Y,以及由内存依赖函数F用于获得结果Y的一个或多个公共参数。内存依赖函数F可以由预配计算机实施,其中将内存依赖函数F应用于秘密S可能需要至少N字节的内存。作为实例,N可以为至少一千兆字节。
如图所示,安全元件1460包括解析模块1461、解码模块1462、决策模块1463和密码模块1464。安全元件1460可以接收输入数据,对所述输入数据执行密码函数。解析模块1461可以从安全存储器1450检取码字C,并解析码字C以标识证明值π、秘密S、结果Y和一个或多个公共参数。
解码模块1462可以使用证明值对码字C进行解码,以验证通过将内存依赖函数F应用于秘密S而获得的存储的结果Y的正确性。解码模块1462可操作以使用K字节的内存。作为实例,K可以比N小至少100倍。解码模块1462可以输出正确性是否已被验证(为真)或未被验证(为假)。
决策模块1463可以使用来自解码模块1462的输出来确定是输出错误消息还是参与密码模块1464。当正确性为真时,可以使用秘密S将密码模块1464应用于输入数据,以获得从安全元件输出的输出数据。当正确性为假时,可以从安全元件1460输出错误消息。
VIII.示例计算机系统
本文中提及的任何计算机系统都可利用任何合适数目个子系统。在图15中示出计算机系统10中的此类子系统的实例。在一些实施例中,计算机系统包括单一计算机设备,其中子系统可以是计算机设备的组件。在其它实施例中,计算机系统可包括具有内部组件的多个计算机设备,每个计算机设备是子系统。计算机系统可包括台式计算机和膝上型计算机、平板计算机、移动电话和其它移动装置。
图15中所示的子系统经由系统总线75互连。示出了诸如打印机74、键盘78、一个或多个存储装置79、耦合到显示适配器82的监视器76等等的额外子系统。耦合到输入/输出(I/O)控制器71的外围装置和I/O装置可以通过本领域中已知的各种构件连接到计算机系统,所述构件例如是输入/输出(I/O)端口77(例如USB、
Figure BDA0002715439690000211
)。例如,I/O端口77或外部接口81(例如以太网、Wi-Fi等)可用于将计算机系统10连接到广域网(例如因特网)、鼠标输入装置或扫描仪。经由系统总线75的互连允许中央处理器73与每个子系统连通且控制来自系统内存72或一个或多个存储装置79(例如固定磁盘,如硬盘驱动器或光盘)的多个指令的执行,以及子系统之间的信息交换。系统内存72和/或一个或多个存储装置79可以体现计算机可读介质。另一子系统是数据收集装置85,例如照相机、麦克风、加速度计等等。在本文中提及的任何数据可从一个组件输出到另一组件并且可输出到用户。
计算机系统可以包括多个相同组件或子系统,所述组件或子系统例如通过外部接口81、通过内部接口或经由可装卸式存储装置连接在一起,所述可装卸式存储装置可以从一个组件连接和移除到另一组件。在一些实施例中,计算机系统、子系统或设备可通过网络通信。在此类情况下,一个计算机可视为客户端且另一个计算机视为服务器,其中每一者可以是同一计算机系统的一部分。客户端和服务器可各自包括多个系统、子系统或组件。
实施例的各个方面可以使用硬件电路(例如,专用集成电路或现场可编程门阵列)和/或以模块化或集成方式借助大体上可编程处理器使用计算机软件以控制逻辑的形式实施。如本文所使用,处理器可以包括单核处理器、在同一集成芯片上的多核处理器,或在单个电路板上或联网的多个处理单元,以及专用硬件。基于本文中提供的公开内容和教示,本领域普通技术人员将知道并了解到使用硬件及硬件和软件的组合实施本发明的实施例的其它方式及/或方法。
本申请中描述的任何软件组件或功能可实施为使用例如Java、C、C++、C#、Objective-C、Swift的任何合适的计算机语言或例如Perl或Python的脚本语言使用例如常规的或面向对象的技术由处理器执行的软件代码。软件代码可作为一系列指令或命令存储在计算机可读介质上以供存储及/或传输。合适的非暂时性计算机可读介质可包括随机存取存储器(RAM)、只读存储器(ROM)、例如硬盘驱动器或软盘的磁性介质或例如光盘(CD)或数字通用光盘(DVD)的光学介质、闪存等。计算机可读介质可以是此类存储装置或传输装置的任何组合。
此类程序也可以使用载波信号来编码和传输,所述载波信号适合于经由符合多种协议的有线、光学和/或无线网络来传输,包括因特网。因此,可以使用以此类程序编码的数据信号来创建计算机可读介质。以程序代码编码的计算机可读介质可与兼容装置一起封装或与其它装置分开提供(例如,通过因特网下载)。任何此类计算机可读介质都可驻存在单个计算机产品(例如硬盘驱动器、CD或整个计算机系统)上或其内部,并且可存在于系统或网络内的不同计算机产品上或其内部。计算机系统可以包括用于向用户提供本文中提及的任何结果的监视器、打印机或其它合适显示器。
本文所描述的任何方法可完全或部分地通过计算机系统执行,所述计算机系统包括可被配置以执行所述步骤的一个或多个处理器。因此,实施例可以涉及配置成执行本文中所描述的任何方法的步骤、可能具有执行相应步骤或相应步骤群组的不同组件的计算机系统。虽然呈现为带编号的步骤,但本文的方法的步骤可以同时或在不同时间或以不同次序执行。另外,这些步骤的部分可与其它方法的其它步骤的部分一起使用。另外,步骤的全部或部分可以是任选的。另外,任何方法的任一个步骤可以利用用于执行这些步骤的模块、单元、电路或系统的其它构件来执行。
特定实施例的具体细节可按任何合适的方式组合而不脱离本发明实施例的精神和范围。然而,本发明的其它实施例可针对与每个个别方面或这些个别方面的特定组合相关的具体实施例。
上文对本发明的实例实施例的描述已经出于图示和描述的目的呈现。不旨在是详尽的,或将本发明限制为所描述的精确形式,且根据上文的教示许多修改和变化是可能的。
除非具体地相反指示,否则“一(a/an)”或“所述(the)”的叙述打算意指“一个或多个”。除非特别地有相反指示,否则“或”的使用旨在表示“包括性的或”,而不是“排除性的或”。提到“第一”组件并不一定要求提供第二组件。而且,除非明确指出,否则提到“第一”或“第二”组件并不将提到的组件限制到特定位置。术语“基于”旨在表示“至少部分地基于”。
本文中所提及的所有专利、专利申请、公开案和描述都出于所有目的以全文引用的方式并入。并非承认它们是现有技术。

Claims (23)

1.一种用于对秘密进行编码的方法,所述方法包括在编码计算机上执行以下操作:
检取基于内存依赖函数MHF和安全参数λ生成的一个或多个公共参数;
将所述内存依赖函数MHF应用于秘密S或应用于所述秘密S的函数以获得结果Y,其中将所述内存依赖函数MHF应用于所述秘密S需要所述编码计算机上至少N字节的内存,N为至少一千兆字节;
使用证明函数,使用所述秘密S、所述结果Y和所述一个或多个公共参数来确定证明值π;
根据所述证明值π、所述秘密S和所述结果Y汇编码字C;以及
将所述码字C发送到被配置成存储所述码字C并且稍后对所述码字C进行解码的装置,其中所述证明值π被配置成由所述装置的解码函数用于验证使用所述秘密S从所述内存依赖函数MHF获得的所述结果Y的正确性,其中所述解码函数能操作以使用K字节的内存,K小于N。
2.根据权利要求1所述的方法,其中K比N小至少100倍。
3.根据权利要求1所述的方法,其中所述一个或多个公共参数包括公共评估密钥。
4.根据权利要求3所述的方法,其中所述公共评估密钥用于生成所述证明值π和所述结果Y。
5.根据权利要求1所述的方法,其中所述内存依赖函数MHF包括哈希函数。
6.根据权利要求所述的方法1,其中所述内存依赖函数MHF应用于所述秘密S的所述函数,并且其中所述秘密S的所述函数是哈希函数。
7.根据权利要求1所述的方法,其中N为至少一太字节。
8.根据权利要求1所述的方法,其中所述解码函数需要小于1MB的内存。
9.一种用于对秘密进行解码的方法,所述方法包括在解码计算机上执行以下操作:
存储码字C,其包括证明值π、秘密S和通过将内存依赖函数MHF应用于所述秘密S或应用于所述秘密S的函数而获得的结果Y,其中将所述内存依赖函数MHF应用于所述秘密S需要至少N字节的内存,N为至少一千兆字节;
接收输入数据;
检取所述码字C;
解析所述码字C以标识所述证明值π、所述秘密S、所述结果Y,以及由所述内存依赖函数MHF用于获得所述结果Y的一个或多个公共参数;
通过以下操作来执行所述码字C的解码:
使用所述证明值π来验证通过将所述内存依赖函数MHF应用于所述秘密S而获得的所述结果Y的正确性,其中所述解码能操作以使用K字节的内存,K小于N;
当所述正确性为真时,使用所述秘密S将密码函数应用于所述输入数据以获得输出数据;以及
当所述正确性为假时,提供错误消息。
10.根据权利要求9所述的方法,其中K比N小至少100倍。
11.根据权利要求9所述的方法,其中所述一个或多个公共参数包括公共验证密钥。
12.根据权利要求11所述的方法,其中所述解码使用所述公共验证密钥。
13.根据权利要求9所述的方法,其中所述解码需要小于1MB的内存。
14.根据权利要求9所述的方法,还包括:
从预配计算机接收所述码字C,所述预配计算机通过将所述内存依赖函数MHF应用于所述秘密S来生成所述证明值π和所述结果Y。
15.根据权利要求9所述的方法,其中所述码字C存储在安全存储器中,并且其中安全元件执行所述码字C的所述解码和所述密码函数的所述应用。
16.一种计算机产品,包括计算机可读介质,所述计算机可读介质存储用于控制计算机系统以执行根据权利要求1至15中任一项所述的方法的多个指令。
17.一种装置,包括:
安全存储器,其存储码字C,所述码字C包括证明值π、秘密S和通过将内存依赖函数MHF应用于所述秘密S或应用于所述秘密S的函数而获得的结果Y,其中将所述内存依赖函数MHF应用于所述秘密S需要至少N字节的内存,N为至少一千兆字节;以及
安全元件,其被配置成:
接收输入数据;
检取所述码字C;
解析所述码字C以标识所述证明值π、所述秘密S、所述结果Y,以及由所述内存依赖函数MHF用于获得所述结果Y的一个或多个公共参数;
通过以下操作来执行所述码字C的解码:
使用所述证明值π来验证通过将所述内存依赖函数MHF应用于所述秘密S而获得的所述结果Y的正确性,其中所述解码能操作以使用K字节的内存,K小于N;
当所述正确性为真时,使用所述秘密S将密码函数应用于所述输入数据以获得从所述安全元件输出的输出数据;以及
当所述正确性为假时,提供错误消息。
18.根据权利要求17所述的装置,其中所述装置是移动的。
19.根据权利要求17所述的装置,其中所述安全元件包括所述安全存储器。
20.根据权利要求17所述的装置,其中K比N小至少100倍。
21.根据权利要求17所述的装置,其中所述一个或多个公共参数包括公共验证密钥。
22.根据权利要求21所述的装置,其中所述解码使用所述公共验证密钥。
23.根据权利要求17所述的装置,其中所述解码需要小于1MB的内存。
CN201880092217.6A 2018-04-10 2018-04-10 用于移动装置的防篡改数据编码 Pending CN111971677A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/026904 WO2019199283A1 (en) 2018-04-10 2018-04-10 Tamper-resistant data encoding for mobile devices

Publications (1)

Publication Number Publication Date
CN111971677A true CN111971677A (zh) 2020-11-20

Family

ID=68164384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880092217.6A Pending CN111971677A (zh) 2018-04-10 2018-04-10 用于移动装置的防篡改数据编码

Country Status (5)

Country Link
US (1) US10984139B2 (zh)
EP (1) EP3776318B1 (zh)
KR (1) KR102575665B1 (zh)
CN (1) CN111971677A (zh)
WO (1) WO2019199283A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3861671A4 (en) 2018-10-02 2021-11-24 Visa International Service Association NON-MALLEABLE CODES DELIMITED BY CONTINUOUS SPACE FROM STRONGER SPACE EVIDENCE

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163718A1 (en) * 2000-04-12 2003-08-28 Johnson Harold J. Tamper resistant software-mass data encoding
CN101983375A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 将密码模块绑定到平台

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516331B2 (en) 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US8281131B2 (en) * 2008-08-28 2012-10-02 International Business Machines Corporation Attributes in cryptographic credentials
EP2290872B1 (en) 2009-08-27 2014-06-18 Nxp B.V. Device for generating a message authentication code for authenticating a message
US9154797B2 (en) * 2010-09-20 2015-10-06 Onecodec, Limited Systems and methods for encoding and decoding
KR20120068543A (ko) * 2010-12-17 2012-06-27 한국전자통신연구원 화이트박스 암호를 이용한 소프트웨어 설치 장치 및 방법
JP5606344B2 (ja) * 2011-01-25 2014-10-15 三菱電機株式会社 署名処理システム、鍵生成装置、署名装置、検証装置、署名処理方法及び署名処理プログラム
US9167207B1 (en) * 2013-12-31 2015-10-20 Google Inc. Processing and/or distributing media content associated with at least one parameter related to a memory operation
US10070310B2 (en) 2014-05-08 2018-09-04 Visa International Service Association Method and system for provisioning access data to mobile device
EP3099001A1 (en) 2015-05-29 2016-11-30 Gemalto Sa System and method for protecting a cryptographic device against fault attacks while performing cryptographic non-linear operations using linear error correcting codes
EP3304800B1 (en) * 2016-04-01 2020-05-06 Nec Corporation Method for providing a space puzzle

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163718A1 (en) * 2000-04-12 2003-08-28 Johnson Harold J. Tamper resistant software-mass data encoding
CN101983375A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 将密码模块绑定到平台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SEBASTIAN FAUST等: "Non-Malleable Codes for Space-Bounded Tampering", 《ANNUAL INTERNATIONAL CRYPTOLOGY CONFERENCE, 2017》, pages 1 - 34 *

Also Published As

Publication number Publication date
US20210049308A1 (en) 2021-02-18
EP3776318B1 (en) 2024-05-29
US10984139B2 (en) 2021-04-20
KR20200130866A (ko) 2020-11-20
EP3776318A4 (en) 2021-03-03
KR102575665B1 (ko) 2023-09-06
EP3776318A1 (en) 2021-02-17
WO2019199283A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
Dubey et al. Cloud-user security based on RSA and MD5 algorithm for resource attestation and sharing in java environment
Dey et al. Message digest as authentication entity for mobile cloud computing
CN117240625B (zh) 一种涉及防篡改的数据处理方法、装置及电子设备
Nimmy et al. A novel multi-factor authentication protocol for smart home environments
US20220086003A1 (en) Continuous space-bounded non-malleable codes from stronger proofs-of-space
Olakanmi et al. Faster and efficient cloud-server-aided data de-duplication scheme with an authenticated key agreement for Industrial Internet-of-Things
Lounis et al. D2D-MAP: A drone to drone authentication protocol using physical unclonable functions
US8954728B1 (en) Generation of exfiltration-resilient cryptographic keys
CN111585995A (zh) 安全风控信息传输、处理方法、装置、计算机设备及存储介质
Gomez Rivera et al. Resilient sensor authentication in SCADA by integrating physical unclonable function and blockchain
US8751819B1 (en) Systems and methods for encoding data
CN116827821B (zh) 基于区块链云应用程序性能监控方法
Chaudhary et al. Secure authentication and reliable cloud storage scheme for iot-edge-cloud integration
Kirkpatrick et al. Enforcing physically restricted access control for remote data
CN116866333A (zh) 一种加密文件传输方法、装置、电子设备及存储介质
US10984139B2 (en) Tamper-resistant data encoding for mobile devices
CN114553566B (zh) 数据加密方法、装置、设备及存储介质
CN114553557B (zh) 密钥调用方法、装置、计算机设备和存储介质
Zhao Improvement of cloud computing medical data protection technology based on symmetric encryption algorithm
Jonsson et al. RSA authentication in Internet of Things: Technical limitations and industry expectations
Liu et al. Risk‐Based Dynamic Identity Authentication Method Based on the UCON Model
Rivera et al. Achieving sensor identification and data flow integrity in critical cyber-physical infrastructures
Kumar et al. Hash based approach for providing privacy and integrity in cloud data storage using digital signatures
CN114153382A (zh) 云存储中支持数据可验证删除的高效数据迁移方法、系统
Li et al. Blockchain‐Assisted Distributed Fog Computing Control Flow Attestation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB03 Change of inventor or designer information

Inventor after: P.Mukherjee

Inventor after: K. Horstark

Inventor before: P.Mukherjee

Inventor before: K. Khoshigakova

CB03 Change of inventor or designer information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination