CN112514321A - 共享秘密建立 - Google Patents

共享秘密建立 Download PDF

Info

Publication number
CN112514321A
CN112514321A CN201980050742.6A CN201980050742A CN112514321A CN 112514321 A CN112514321 A CN 112514321A CN 201980050742 A CN201980050742 A CN 201980050742A CN 112514321 A CN112514321 A CN 112514321A
Authority
CN
China
Prior art keywords
entity
key
software
message
protected item
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
CN201980050742.6A
Other languages
English (en)
Inventor
S·里克斯
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.)
Irdeto Technology Co ltd
Irdeto BV
Original Assignee
Irdeto Technology Co ltd
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 Irdeto Technology Co ltd filed Critical Irdeto Technology Co ltd
Publication of CN112514321A publication Critical patent/CN112514321A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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
    • 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/3247Cryptographic 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 involving digital signatures
    • 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/3263Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

一种用于第一实体和第二实体建立共享秘密的方法,其中第一实体和第二实体每个具有相应的非对称密钥对,所述相应的非对称密钥对包括公钥和对应的私钥,其中所述方法包括:第一实体生成受保护的软件项目,该受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;第一实体向第二实体提供受保护的软件项目;第二实体执行受保护的软件项目,所述执行包括消息生成器生成表示第二实体的公钥的消息,并且该消息包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;第一实体从第二实体获得消息;响应于满足一个或多个条件的集合,第一实体和第二实体一起执行共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,并且第二实体使用如在受保护的软件项目中表示的第一实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。

Description

共享秘密建立
技术领域
本发明涉及用于使得第一实体和第二实体能够建立共享秘密的方法、***和计算机程序。
背景技术
在密码学领域中,存在用于两个实体的许多方法或协议来建立共享秘密。下面给出两个示例,尽管应当领会,用于执行共享秘密建立的许多其他方法是可能的。
共享秘密建立协议的第一个示例是所谓的Diffie-Hellman共享秘密建立协议(其细节可以在https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange处找到,其全部公开内容通过引用并入本文中)。特别地,假设存在两个实体A和B,则A和B可以如下建立共享秘密s
1.A和B可以商定素数p和整数g,该整数g是以p为模的原根。这可以以明文完成,即,pg不需要保密;
2.A选择A保密并且生成
Figure 701056DEST_PATH_IMAGE001
的正整数
Figure 172357DEST_PATH_IMAGE002
。A将X发送到B。X不需要被保密;
3.B选择B保密并且生成
Figure 584884DEST_PATH_IMAGE003
的正整数
Figure 737517DEST_PATH_IMAGE004
。B将Y发送到A。Y不需要被保密;
4.A计算
Figure 919099DEST_PATH_IMAGE005
5.B计算
Figure 46455DEST_PATH_IMAGE006
6.因此,A和B现在共享秘密
Figure 946278DEST_PATH_IMAGE007
共享秘密建立协议的第二个示例是所谓的椭圆曲线Diffie-Hellman共享秘密建立协议(其细节可以在https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman处找到,其全部公开内容通过引用并入本文中)。特别地,假设存在两个实体A和B,则A和B可以如下建立共享秘密s
1.A和B可以商定为椭圆曲线密码学定义椭圆曲线的域参数(通常表示为值(
Figure 512389DEST_PATH_IMAGE008
)或(
Figure 1008DEST_PATH_IMAGE009
)。这可以以明文完成。这样的域参数是公知的(例如,参见https://en.wikipedia.org/wiki/Elliptic-curve_cryptography,其全部公开内容通过引用并入本文中)。这里,G是椭圆曲线上的一点,并且n是使得
Figure 361582DEST_PATH_IMAGE010
的最小正整数;
2.A在范围[1,n-1]中选择A保密并且生成
Figure 748701DEST_PATH_IMAGE011
的整数
Figure 56185DEST_PATH_IMAGE002
。A将X发送到B。X不需要被保密;
3.B在范围[1,n-1]中选择B保密并且生成
Figure 946781DEST_PATH_IMAGE012
的整数
Figure 743836DEST_PATH_IMAGE004
。B将Y发送到A。Y不需要被保密;
4.A计算点
Figure 87092DEST_PATH_IMAGE013
5.B计算点
Figure 260585DEST_PATH_IMAGE014
6.因此,A和B现在共享秘密
Figure 271266DEST_PATH_IMAGE015
共享秘密s经常用作对称密钥(或用于生成对称密钥),例如用作用于A和B之间通信的数据的后续加密和解密的密钥,或者用作用于消息认证(例如,对于键控散列函数)的密钥。因此,这样的共享秘密建立协议经常被称为密钥建立协议。
非对称密钥的使用(即,具有对应私钥的公钥)在密码学领域中是众所周知的(例如,参见https://en.wikipedia.org/wiki/Public-key_cryptography,其全部公开内容通过引用并入本文中)。例如,用于执行加密和解密或者用于生成和认证数字签名的算法是公知的。事实上,在以上共享秘密建立协议中,实体A可以被视为具有公钥X和私钥
Figure 632365DEST_PATH_IMAGE002
,而实体B可以被视为具有公钥Y和私钥
Figure 728497DEST_PATH_IMAGE004
如果每次密钥用于诸如共享秘密建立之类的特定目的时都重新生成该密码密钥的值(参见https://en.wikipedia.org/wiki/Ephemeral_key,其全部公开内容通过引用并入本文中),则该密码密钥被称为“临时的”,即,该密钥针对单个事务/处理仅使用一次。因此,临时密钥对于该密钥的每次使用(即,对于每个事务/处理)通常将假定不同的值。以上共享秘密建立处理中的公钥XY以及私钥
Figure 440101DEST_PATH_IMAGE002
Figure 305289DEST_PATH_IMAGE004
通常是临时密钥。
与临时密钥相反,如果密码密钥打算使用更长的时间段或被重复使用,则称其为“静态的”(参见https://en.wikipedia.org/wiki/Static_key,其全部公开内容通过引用并入本文中)。
在共享秘密建立协议中,在其中交换临时密钥(诸如在以上示例中,在步骤2处A向B提供公钥X,并且在步骤3处B向A提供公钥Y),重要的是临时密钥的接收者知道接收到的密钥是可信的(即,它源自正确的源,并且没有被修改)。例如,在上述示例中的步骤2处,B需要确信B接收的临时密钥X确实源自A,并且假定A生成的原始值(即,自从A处被传送后未被破坏或修改)。典型地,这是通过使用具有X.509证书的静态非对称密钥对来对临时密钥进行数字签名而实现的(关于X.509证书和公钥基础设施的更多细节可以在https://en.wikipedia.org/wiki/X.509处找到,其全部公开内容通过引用并入本文中)。经常,数字签名处理使用从一方发送给另一方的随机数(nonce)来证明即时性。例如,对于以上示例中的步骤2:B可以向A发送随机数(随机生成的值);然后,A可以使用A的静态私钥对随机数与临时密钥X一起进行数字签名;A可以向B发送已签名的随机数和临时密钥X;B可以使用与A的静态私钥相对应(并且B可以从X.509证书获得并经由X.509证书进行认证)的A的静态公钥来认证接收的数据,包括检查从A接收的随机数值是否是B提供的随机数值。
因此,在共享秘密建立中使用临时密钥提供了一种在A和B之间建立瞬时信任的方法,即,他们可以使用瞬时共享秘密s作为临时秘密来实行所期望的活动(例如,执行事务,如在后续通信中的会话密钥等)。
X.509证书模式依赖于持有非对称私钥的设备在长时间段内(例如至少在签名密钥有效时段内)对非对称私钥保密的能力。对于某些设备来说,经常不是该情况,或者该情况是不可能的。
进一步地,使用诸如X.509证书之类的数字证书需要支持基础设施来存储、维护、撤销和提供数字证书。这也经常牵涉到复杂的信任层次。这可能给利用数字证书的***施加很大的开销(从计算、通信和管理的角度来看)。
发明内容
总之,本发明的实施例使得两个实体能够实行共享秘密建立,而不需要使用静态密码密钥和数字证书来认证公钥。这可以以在两个实体之一的控制下的方式完成。
根据本发明的第一方面,提供了一种用于第一实体和第二实体建立共享秘密的方法,其中第一实体和第二实体每个具有相应的非对称密钥对,所述非对称密钥对包括公钥和对应的私钥,其中该方法包括:第一实体生成受保护的软件项目,该受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;第一实体向第二实体提供受保护的软件项目;第二实体执行受保护的软件项目,所述执行包括消息生成器生成一消息,该消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证该消息的完整性;第一实体从第二实体获得消息;响应于满足一个或多个条件的集合,第一实体和第二实体一起执行共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,并且第二实体使用如在受保护的软件项目中表示的第一实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
以该方式使用受保护的软件项目使得能够以第一实体控制下的方式并且以不需要使用静态密码密钥和数字证书来认证公钥的方式进行共享秘密建立。
本发明的实施例在其中难以或不合期望地使用数字证书(由于数字证书所需的相关联基础设施的复杂性以及在使用数字证书中牵涉的计算和资源开销,并且在一些场景中,由于持有非对称私钥的设备不能在长时间段内对非对称私钥保密)的场景中找到了特定的用途。经常的情况是第一实体可以是具有大量计算资源的服务器端***,但是第二实体可能是能力远不如数字证书的处理要求的设备——本发明的实施例在这样的场景中发现了使得第一和第二实体能够建立共享秘密的巨大效用。例如,部署在车辆(诸如汽车)中的设备可能仅具有相对有限的资源和安全性,而汽车制造商可能希望与那些车载设备建立共享秘密(例如,当执行软件或固件更新时或当检索诊断信息时)——本发明的实施例可以对此有帮助,其中汽车制造商的后端***充当第一实体,并且车载设备充当第二实体。同样,银行可能希望与客户的移动设备(例如电话)建立共享秘密,使得事务可以在银行的控制下并且以非计算密集型的方式进行——本发明的实施例可以对此有帮助,其中银行的后端***充当第一实体,并且客户的移动设备充当第二实体。应当领会,对于本发明的实施例,许多其他部署场景是可能的。
根据本发明的第二方面,提供了一种用于第一实体建立与第二实体共享的秘密的方法,其中第一实体和第二实体每个具有包括公钥和对应私钥的相应非对称密钥对,其中该方法包括第一实体:生成受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示,以及被配置为使用认证密钥的消息生成器;向第二实体提供受保护的软件项目;从第二实体获得一消息,该消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证该消息的完整性;以及响应于满足一个或多个条件的集合,执行与第二实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如在消息中表示的第二实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
在以上提及的方面的一些实施例中,所述条件之一是第一实体在从第一实体向第二实体提供受保护的软件项目的开始的阈值时间段内获得消息。以该方式,第一实体可以被满足攻击者没有成功地对受保护的软件项目发起攻击,因为攻击者能够成功地分析受保护的软件项目以实行攻击并将消息提供回到第一实体将花费比阈值时间段更长的时间。因此,依赖于足够级别的软件保护与用于接收消息的计时器一起有助于确保共享秘密建立的完整性。如果第一实体在从第一实体向第二实体提供受保护的软件项目的阈值时间段内没有获得该消息,则共享秘密建立可以被认为已经失败——然后可以采取适当的措施(例如,第一实体停止与第二实体的通信)。
在以上提及的方面的一些实施例中,该方法包括第一实体生成第一实体的非对称密钥对。
在以上提及的方面的一些实施例中,该方法包括第一实体生成认证密钥。
根据本发明的第三方面,提供了一种用于第二实体建立与第一实体共享的秘密的方法,其中第一实体和第二实体每个具有包括公钥和对应私钥的相应非对称密钥对,其中该方法包括第二实体:从第一实体获得受保护的软件项目,该受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;执行受保护的软件项目,所述执行包括消息生成器生成一消息,该消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;向第一实体提供消息;执行与第一实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第二实体使用如在受保护的软件项目中表示的第一实体的公钥。
在以上提及的方面的一些实施例中,该方法包括第二实体生成第二实体的非对称密钥对。
在以上提及的方面的一些实施例中,受保护的软件项目被布置成使得当被执行时,受保护的软件项目对受保护的软件项目执行完整性验证,并且消息生成器仅在对受保护的软件项目成功进行完整性验证时生成消息。
在以上提及的方面的一些实施例中,认证密钥是对称密钥,并且认证数据包括消息认证码。可替代地,在以上提及的方面的一些实施例中,认证密钥和验证密钥形成非对称密钥对,并且认证数据包括数字签名。
在以上提及的方面的一些实施例中,第一实体的公钥和第一实体的私钥是临时密钥。
在以上提及的方面的一些实施例中,第二实体的公钥和第二实体的私钥是临时密钥。
在以上提及的方面的一些实施例中,认证密钥和验证密钥是临时密钥。
在以上提及的方面的一些实施例中,执行共享秘密建立包括执行以下各项之一:(a)密码密钥交换协议;(b)Diffie-Hellman共享秘密建立协议;(3)椭圆曲线Diffie-Hellman共享秘密建立协议。
在以上提及的方面的一些实施例中,生成受保护的软件项目,使得从受保护的软件项目确定认证密钥在计算上是不可行的。在以上提及的方面的一些实施例中,生成受保护的软件项目,使得在阈值时间段内从受保护的软件项目确定认证密钥在计算上是不可行的。
在以上提及的方面的一些实施例中,该方法不利用X.509证书或静态密钥来建立共享秘密。
根据本发明的第四方面,提供了一种包括第一实体和第二实体的***,其中第一实体和第二实体每个具有包括公钥和对应私钥的相应非对称密钥对,其中该***被布置用于使第一实体和第二实体通过以下各项建立共享秘密:第一实体生成受保护的软件项目,所述受保护项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;第一实体向第二实体提供受保护的软件项目;第二实体执行受保护的软件项目,所述执行包括消息生成器生成一消息,该消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;第一实体从第二实体获得消息;响应于满足一个或多个条件的集合,第一实体和第二实体一起执行共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,并且第二实体使用如在受保护的软件项目中表示的第一实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
根据本发明的第五方面,提供了一种包括第一实体的***,其中该***被布置用于使第一实体建立与第二实体共享的秘密,其中第一实体和第二实体每个具有相应的非对称密钥对,该非对称密钥对包括公钥和对应的私钥,其中第一实体被布置用于:生成受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;向第二实体提供受保护的软件项目;从第二实体获得一消息,该消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证该消息的完整性;以及响应于满足一个或多个条件的集合,执行与第二实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
在第四或第五方面的一些实施例中,条件之一是第一实体在从第一实体向第二实体提供受保护的软件项目的阈值时间段内获得消息。
在第四或第五方面的一些实施例中,第一实体被布置成生成第一实体的非对称密钥对。
在第四或第五方面的一些实施例中,第一实体被布置成生成认证密钥。
根据本发明的第六方面,提供了一种包括第二实体的***,其中该***被布置用于使第二实体建立与第一实体共享的秘密,其中第一实体和第二实体每个具有相应的非对称密钥对,所述相应的非对称密钥对包括公钥和对应的私钥,其中第二实体被布置成:从第一实体获得受保护的软件项目,该受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;执行受保护的软件项目,所述执行包括消息生成器生成一消息,该消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证该消息的完整性;向第一实体提供消息;执行与第一实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第二实体使用如在受保护的软件项目中表示的第一实体的公钥。
在第四、第五或第六方面的一些实施例中,第二实体被布置成生成第二实体的非对称密钥对。
在第四、第五或第六方面的一些实施例中,受保护的软件项目被布置成使得当被执行时,受保护的软件项目对受保护的软件项目执行完整性验证,并且消息生成器仅在对受保护的软件项目成功进行完整性验证时生成消息。
在第四、第五或第六方面的一些实施例中,认证密钥是对称密钥,并且认证数据包括消息认证码。可替代地,在第四、第五或第六方面的一些实施例中,认证密钥和验证密钥形成非对称密钥对,并且认证数据包括数字签名。
在第四、第五或第六方面的一些实施例中,第一实体的公钥和第一实体的私钥是临时密钥。
在第四、第五或第六方面的一些实施例中,第二实体的公钥和第二实体的私钥是临时密钥。
在第四、第五或第六方面的一些实施例中,认证密钥和验证密钥是临时密钥。
在第四、第五或第六方面的一些实施例中,执行共享秘密建立包括执行以下各项之一:(a)密码密钥交换协议;(b)Diffie-Hellman共享秘密建立协议;(3)椭圆曲线Diffie-Hellman共享秘密建立协议。
在第四、第五或第六方面的一些实施例中,从受保护的软件项目确定认证密钥在计算上是不可行的。在第四、第五或第六方面的一些实施例中,在阈值时间段内从受保护的软件项目确定认证密钥在计算上是不可行的。
在第四、第五或第六方面的一些实施例中,***不利用X.509证书或静态密钥来建立共享秘密。
根据本发明的第七方面,提供了一种计算机程序,所述计算机程序当由一个或多个处理器执行时,使得一个或多个处理器实行第一至第三方面中任一方面的方法。计算机程序可以被存储在计算机可读介质上。
附图说明
现在将参考随附附图,仅以示例的方式描述本发明的实施例,其中:
图1示意性地图示了计算机***的示例;
图2a和图2b示意性地图示了根据本发明各种实施例的***;
图3a和图3b示意性地图示了根据本发明一些实施例的受保护的软件项目的示例;
图4a和图4b是图示根据本发明的一些实施例的用于使第一实体和第二实体建立共享秘密的方法的流程图;和
图5示意性地图示了根据本发明一些实施例的消息。
具体实施方式
在下面的描述中以及在各图中,描述了本发明的某些实施例。然而,应当领会,本发明不限于所描述的实施例,并且一些实施例可以不包括下面描述的全部特征。然而,应当显而易见的是,在不脱离如所附权利要求中阐述的本发明的更宽的精神和范围的情况下,可以在本文中做出各种修改和改变。
1–计算机***概述
图1示意性地图示了计算机***100的示例。***100包括计算机102。计算机102包括:存储介质104、存储器106、处理器108、接口110、用户输出接口112、用户输入接口114和网络接口116,它们可以通过一个或多个通信总线118链接在一起。
存储介质104可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、固态存储设备、光盘、ROM等中的一个或多个。存储介质104可以存储供处理器108执行以便计算机102运转的操作***。存储介质104还可以存储一个或多个计算机程序(或软件或指令或代码)。
存储器106可以是适合于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
处理器108可以是适合于执行一个或多个计算机程序(诸如存储在存储介质104上和/或存储器106中的计算机程序)的任何数据处理单元,其中的一些可以是根据本发明实施例的计算机程序,或者是当由处理器108执行时使得处理器108根据本发明实施例的方法并将***100配置为根据本发明实施例的***的计算机程序。处理器108可以包括单个数据处理单元或多个数据处理单元,所述数据处理单元并行、单独或彼此协作地操作。处理器108在实行本发明实施例的数据处理操作中,可以将数据存储到存储介质104和/或存储器106和/或从存储介质104和/或存储器106读取数据。
接口110可以是用于向计算机102外部或可从计算机102移除的设备122提供接口的任何单元。设备122可以是数据存储设备,例如,光盘、磁盘、固态存储设备等中的一个或多个。设备122可以具有处理能力——例如,该设备可以是智能卡。接口110因此可以根据它从处理器108接收的一个或多个命令从设备122访问数据,或者向设备122提供数据,或者与设备122对接。
用户输入接口114被布置成接收来自***100的用户或操作员的输入。用户可以经由***100的一个或多个输入设备——诸如连接到用户输入接口114或与之通信的鼠标(或其他定点设备)126和/或键盘124——来提供该输入。然而,应当领会,用户可以经由一个或多个附加或替代输入设备(诸如触摸屏)向计算机102提供输入。计算机102可以将经由用户输入接口114从输入设备接收的输入存储在存储器106中,以供处理器108随后访问和处理,或者可以将其直接传递给处理器108,使得处理器108可以相应地响应用户输入。
用户输出接口112被布置成向***100的用户或操作员提供图形/视觉和/或音频输出。照此,处理器108可以被布置成指示用户输出接口112形成表示期望的图形输出的图像/视频信号,并将该信号提供给连接到用户输出接口112的***100的监视器(或屏幕或显示单元)120。附加地或可替代地,处理器108可以被布置成指示用户输出接口112形成表示期望的音频输出的音频信号,并且将该信号提供给连接到用户输出接口112的***100的一个或多个扬声器121。
最后,网络接口116为计算机102提供从一个或多个数据通信网络下载数据和/或将数据上传到一个或多个数据通信网络的功能。
应当领会,图1中图示并在上面描述的***100的架构仅仅是示例性的,并且具有不同架构(例如具有与图1中所示相比更少的组件或者具有与图1中所示相比附加和/或替代的组件)的其他计算机***100可以用于本发明的实施例中。作为示例,计算机***100可以包括以下各项中的一个或多个:个人计算机;服务器计算机;移动电话;平板设备;膝上型计算机;电视机;机顶盒;游戏机;其他移动设备或消费电子设备;等等。附加地,计算机***100的一些组件也可能不位于个人计算机、服务器***或膝上型计算机中,而是经由网络接口116连接到个人计算机、服务器***或膝上型计算机的计算机网络的一部分,并且位于计算机网络的云中,或者位于诸如移动电话、智能电话和智能手表的小型计算机设备中。
2–***概述
图2a示意性地图示了根据本发明各种实施例的***200。***200包括第一实体210、第二实体260和网络280。总之,本发明的实施例涉及第一实体210和第二实体260建立共享秘密,以及用于以安全方式实行该共享秘密建立的方法。
第一实体210和第二实体260可以被布置成通过或经由网络280彼此通信。网络280可以是适合于从第一实体210和第二实体260中的任何一个向第一实体210和第二实体260中的另一个传输或传送数据的任何种类的网络。例如,网络280可以包括局域网、广域网、城域网、互联网、无线通信网络、线缆网络、数字广播网络、卫星通信网络、电话网络等中的一个或多个。第一实体210和第二实体260可以经由任何合适的通信机制/协议通过网络280进行通信,以便彼此传送数据。然而,应当领会,其他通信场景是可能的。
第一实体210和第二实体260可以每个是或者可以每个包括如以上参照图1描述的一个或多个计算机***100。例如,第一实体210和/或第二实体260可以是个人计算机、服务器计算机、膝上型计算机、移动电话、平板计算机、电视机等。
还应当领会,第一实体210和第二实体260可以每个包括相应的软件和/或硬件模块或组件,其中第一实体210和第二实体260形成相同计算机***100的部分。在该情况下,可以省略网络280,其中第一实体210和第二实体260被布置成经由计算机***100的内部通信机构(例如,经由总线118中的一个或多个、存储器106的使用等)中的一个或多个来彼此通信。因此,尽管可以参考网络280来描述本发明的实施例,但是应当领会,在一些实施例中,网络280是可选的。
第一实体210包括:临时密钥对生成模块211;完整性密钥生成模块212;包括一个或多个保护器模块215的保护***214;认证模块216;和共享秘密建立模块219。这些模块中的每一个可以分别使用第一实体210的一个或多个硬件组件或者作为由第一实体210的处理器执行的一个或多个软件模块来实现。
第二实体260包括临时密钥对生成模块261,其可以使用第二实体260的一个或多个硬件组件或者作为由第二实体260的处理器执行的一个或多个软件模块来实现。
临时密钥对生成模块211被布置成为第一实体210生成临时非对称密钥对,即,公钥Kpu,1和相关联的私钥Kpr,1。这是适合于共享秘密建立协议的密钥对。例如,在使用如上所述的Diffie-Hellman共享秘密建立协议的实施例中,临时密钥对生成模块211可以(使用任何合适的手段和/或任何熵源)生成被第一实体210用作其私钥Kpr,1的随机正整数
Figure 631097DEST_PATH_IMAGE002
,并且生成被第一实体210用作其公钥Kpu,1
Figure 214525DEST_PATH_IMAGE016
。同样,在使用如上所述的椭圆曲线Diffie-Hellman共享秘密建立协议的实施例中,临时密钥对生成模块211可以(使用任何合适的手段和/或任何熵源)生成被第一实体210用作其私钥Kpr,1的在范围[1,n-1]中的随机整数
Figure 464241DEST_PATH_IMAGE002
,并且生成被第一实体210用作其公钥Kpu,1
Figure 387197DEST_PATH_IMAGE017
。当然,应当领会,可以代替地生成用于替代的共享秘密建立协议的替代非对称密钥对。
完整性密钥生成模块212被布置成生成认证密钥Ka和对应的验证密钥Kv。如稍后将描述的,认证密钥Ka将用于生成认证数据,该认证数据使得能够验证消息的完整性,其中使用对应的验证密钥Kv来实行所述验证。例如,认证数据可以包括消息认证码。消息认证码在密码学领域中是公知的(例如,参见https://en.wikipedia.org/wiki/Message_authentication_code,其全部公开内容通过引用并入本文中)。如公知的,消息认证码利用密码密钥。例如,HMAC是公知的(参见https://en.wikipedia.org/wiki/Hash-based_message_authentication_code,其全部公开内容通过引用并入本文中),其中密码密钥用于键控散列函数。其他类型的消息认证码是已知的,并且可以代替地使用。用于生成消息认证码的密钥是对称密钥,因为用于验证/认证消息认证码的密钥是与用于生成消息认证码的密钥相同的密钥。因此,在其中认证数据包括消息认证码的实施例中,验证密钥Kv与认证密钥Ka相同。在一些这样的实施例中,密钥Ka(并且因此密钥Kv)是作为随机数(使用任何合适的手段和/或任何熵源)生成的。同样,数字签名是公知的(参见https://en.wikipedia.org/wiki/Digital_signature,其全部公开内容通过引用并入本文中)。如公知的,数字签名利用非对称密钥对,其中非对称密钥对的私钥用于生成数字签名,并且非对称密钥对的公钥用于验证或认证数字签名。因此,在其中认证数据包括数字签名的实施例中,完整性密钥生成模块212可以被布置成生成认证密钥Ka作为用于在生成数字签名中使用的私钥,并且还可以生成验证密钥Kv作为对应的公钥,以供第一实体210稍后用于验证或认证数字签名。在该情况下,Ka与Kv不同。
临时密钥对生成模块261被布置成为第二实体260生成临时非对称密钥对,即,公钥Kpu,2和相关联的私钥Kpr,2。这是适合于共享秘密建立协议的密钥对。例如,在使用如上所述的Diffie-Hellman共享秘密建立协议的实施例中,临时密钥对生成模块261可以(使用任何合适的手段和/或任何熵源)生成被第二实体260用作其私钥Kpr,2的随机正整数
Figure 696956DEST_PATH_IMAGE004
,并且生成被第二实体260用作其公钥Kpu,2
Figure 767680DEST_PATH_IMAGE018
Figure 821087DEST_PATH_IMAGE019
。同样,在使用如上所述的椭圆曲线Diffie-Hellman共享秘密建立协议的实施例中,临时密钥对生成模块261可以(使用任何合适的手段和/或任何熵源)生成被第二实体260用作其私钥Kpr,2的在范围[1,n-1]中的随机整数
Figure 847817DEST_PATH_IMAGE004
,并且生成被第二实体260用作其公钥Kpu,2
Figure 328477DEST_PATH_IMAGE020
。当然,应当领会,可以代替地生成用于替代的共享秘密建立协议的替代非对称密钥对。然而,自然地,由临时密钥对生成模块261生成的非对称密钥对用于在与由临时密钥对生成模块211生成的非对称密钥对相同的共享秘密建立协议中使用(例如,两个密钥对都用于在椭圆曲线Diffie-Hellman共享秘密建立中使用)。
如上面讨论的,一旦第一实体210知道第二实体260的公钥Kpu,2,并且一旦第二实体260知道第一实体210的公钥Kpu,1,第一实体210和第二实体260就可以实行共享秘密建立。本发明的实施例使得这能够发生,而不需要使用静态密码密钥和X.509证书来认证公钥Kpu,1和Kpu,2,并且是以在第一实体210的控制下的方式。总之,这是通过如下实现的。保护***214生成受保护的软件项目240。该受保护的软件项目240基于初始软件项目230,该初始项目包括代码(以及可能的数据)以实行特定功能F(如稍后将更详细地讨论的)。保护***214将公钥Kpu,1嵌入到初始软件项目230中,使得公钥Kpu,1在受保护的软件项目240内被表示(即,受保护的软件项目240在其中嵌入或存储了公钥Kpu,1)。附加地,保护***214配置受保护的软件项目240,使得以上提及的功能F被布置成使用认证密钥Ka。如稍后将讨论的,当从初始软件项目230和密钥Kpu,1和Ka生成受保护的软件项目240时,保护***214应用一个或多个软件保护,以确保密钥Ka被隐藏,即,通过分析受保护的软件项目240来确定密钥Ka是艰难的或计算上不可行的或困难的。优选地,当从初始软件项目230生成受保护的软件项目240时,保护***214应用一个或多个软件保护,以使得对于攻击者而言从受保护的软件项目240确定密钥Ka足够困难,使得攻击者将需要大于一时间段t来确定密钥Ka(即,受保护的软件项目240可以被视为在该时间段t内抵抗攻击)——这里,时间段t可以至少是完成共享秘密建立所预期的时间量(在没有攻击的情况下),诸如60秒。公钥Kpu,1不需要以隐藏或掩盖的形式在受保护的软件项目240中被表示——它毕竟是公钥。然而,优选地,当从初始软件项目230和密钥Kpu,1和Ka生成受保护的软件项目240时,保护***214应用一个或多个软件保护,以确保密钥Kpu,1也被隐藏,即,通过分析受保护的软件项目240来确定密钥Kpu,1是艰难的或计算上不可行的或困难的。优选地,当从初始软件项目230生成受保护的软件项目240时,保护***214应用一个或多个软件保护,以使得攻击者从受保护的软件项目240确定密钥Kpu,1足够困难,使得攻击者将需要大于一时间段t来确定密钥Kpu,1(即,受保护的软件项目240可以被视为在该时间段t内抵抗攻击)——这里,时间段t可以至少是完成共享秘密建立所预期的时间量(在没有攻击的情况下),诸如60秒。优选地,当从初始软件项目230和密钥Kpu,1和Ka生成受保护的软件项目240时,保护***214还应用一个或多个软件保护,使得受保护的软件项目240当被执行时实行验证过程,以检查受保护的软件项目240中的一些或全部的完整性。第一实体210向第二实体260提供受保护的软件项目240(例如经由网络280)。第二实体260然后可以执行受保护的软件项目240。如以上讨论的,受保护的软件项目240的执行可以使得受保护的软件项目240实行验证过程,以检查接收到的受保护的软件项目240中的一些或全部的完整性——共享秘密建立然后可以仅在完整性检查成功的情况下继续(即,如果接收到的受保护的软件项目240没有被修改)。如所提及的,受保护的软件项目240当被执行时实行某些功能F。该功能F包括生成消息M和(例如经由网络280)向第一实体210发送消息M,在消息M中表示了第二实体260的公钥Kpu,2。该消息M是使用密钥Ka生成的,使得第一实体210在接收到消息M时,可以使用验证密钥Kv来验证消息M中的一些或全部的完整性。因此,消息M包括由受保护的软件项目240基于或使用认证密钥Ka生成的认证数据。如以上讨论的,该认证数据可以是例如消息认证码或数字签名。第一实体210然后可以使用验证密钥Kv对消息M执行完整性检查。如果该完整性检查成功(即,接收到的消息M没有被修改),则第一实体210和第二实体260可以参与共享秘密建立协议,其中第一实体210使用第二实体260的公钥Kpu,2(如接收到的消息M中所表示的),并且其中第二实体260使用第一实体210的公钥Kpu,1(如接收到的受保护的软件项目240中所表示的)。这将在下面更详细地描述。
第二实体260在接收受保护的软件项目240时,可以假设受保护的软件项目240是可信的(即,源自第一实体210并且没有被修改)。可替代地,如以上所提及的,受保护的软件项目240当由第二实体260执行时,可以被布置成对其自身实行完整性验证检查,其中共享秘密建立仅在完整性验证检查成功的情况下进行(即,该检查指示如由第二实体260接收的受保护的软件项目240没有被修改或篡改)。无论哪种方式,第二实体260以第二实体260对公钥Kpu,1的完整性和出处确信的方式接收第一实体210的公钥Kpu,1。同样地,假定认证密钥Ka被安全地隐藏在受保护的软件项目240内,则第一实体210可以响应于使用对应的验证密钥Kv对消息M的成功验证,确信仅受保护的软件项目240被提供给其的实体可以生成消息M,并且因此,确信包含在消息M中的公钥Kpu,2源自(或对应于)第二实体260。对另一个实体的公钥确信的实体210和260这二者可以参与共享秘密建立协议。
图2b示意性地图示了根据本发明的各种实施例的用于***200的替代配置。图2b的***200与图2a的***200相同,除了代替包括临时密钥对生成模块261的第二实体260,临时密钥对生成模块261形成受保护的软件项目240的一部分。在该情况下,受保护的软件项目240的执行可以使得临时密钥对生成模块261生成公钥Kpu,2和私钥Kpr,2
3–软件保护技术
所谓的“白盒”攻击环境是用于执行软件项目的攻击模型,其中该模型标识攻击者具有各种能力,如下面更详细描述的(即,攻击者可以实行特定的动作/操作并访问特定的数据)。因此,如果攻击者将具有当软件项目实际上正在特定的执行环境中被执行时(例如,使用特定的计算机/处理器等)的那些能力,则可以说软件项目正在“白盒”环境中执行。在白盒攻击环境中,软件项目的攻击者被假定可以完全访问并查看正在操作的数据(包括中间值)、存储器内容和软件项目的执行/处理/控制流。此外,在白盒攻击环境中,假定攻击者能够例如通过使用调试器修改正在操作的数据、存储器内容和软件项目的执行/处理/控制流程——以该方式,攻击者可以试验并试图操纵软件项目的操作,其目的是规避最初预期的功能和/或标识秘密信息和/或用于其他目的。
然而,软件项目可能需要使用或存储或生成秘密信息(例如,一个或多个密码密钥或标识符),其中该信息需要对攻击者保持隐藏或不可用/不可访问(除非作为软件项目的正确/预期功能的一部分);软件项目可能需要基于特定的决策逻辑执行不同的代码部分,其中重要的是确保攻击者不能迫使软件执行一部分代码而不是另一部分代码来与决策逻辑相矛盾;等等。要在其上执行软件项目的计算机***的设置、配置和能力对于软件项目的提供者来说不一定是已知的(或完全已知的),和/或不可控制的(或完全可控制的),并且因此可以假定软件项目可能最终在白盒攻击环境中执行。当软件项目以脚本语言或解释性语言(诸如JavaScript)编写时,由于脚本语言或解释性语言的人类可读性质(相对于例如编译的二进制可执行文件),这尤其相关——执行软件项目的计算机***的用户可以查看、监视和修改这样的软件项目的执行(例如,在解释期间或在即时编译之后),这使得对于攻击者而言容易复制和修改软件项目和/或其数据或控制流,以尝试对软件项目/使用软件项目发起攻击。
如稍后将描述的,初始软件项目230具有由保护***214应用于其的一个或多个软件保护技术,从而导致受保护的软件项目240。第一实体210向第二实体260提供该受保护的软件项目240。为了生成受保护的软件项目240而应用的保护技术旨在使对于攻击者而言难以对受保护的软件项目240实行成功的攻击,和/或旨在减少/减轻攻击者的这样的攻击的后果——即,保护技术旨在保护初始软件项目230免受白盒攻击环境。
保护***214包括一个或多个保护器模块或组件215——在图2a和图2b中,示出了三个保护器模块215,但是应当领会到,保护***214可以包括更少或更多的保护器模块215。(多个)保护器模块215被布置成将一个或多个“保护”应用于初始软件项目230,或者应用于已经由保护器模块215中的一个或多个应用了这些保护中的一个或多个的软件项目230版本。
初始软件项目230和受保护的软件项目240可以每个包括可以被存储为一个或多个文件的一个或多个计算机程序(或软件或模块)。每个文件可以包含或实现一个或多个函数。初始软件项目230和受保护的软件项目240可以每个是或实现一个或多个完整的软件应用,或者用于软件应用的一个或多个组件(例如库文件)或更小的组件(例如代码片段)。初始软件项目230和受保护的软件项目240至少实现以上提及的功能F(尽管它们也可以实现附加功能)。初始软件项目230可以包括以一种或多种语言编写的源代码,其中的一种或多种语言可以与受保护的软件项目240的(多种)语言相同,尽管这不是必需的。初始软件项目230和受保护的软件项目240可以每个包括编译/可执行代码和/或源代码(或解释性代码)。初始软件项目230和受保护的软件项目240可以包括编译的代码,用于作为在第二实体260处的本机应用(的一部分)来执行。初始软件项目230和受保护的软件项目240可以包括用于在第二实体260上执行的虚拟机内执行的代码。初始软件项目230和受保护的软件项目240可以包括在第二实体260上执行的浏览器内执行的代码(例如,作为网络app或网页代码)。
如本文中使用的与软件项目相关的术语“代码”指代软件项目的指令/命令。除了代码之外,软件项目(例如,初始软件项目230和受保护的软件项目240)可以包括数据和/或其他资源,使得“代码”的执行(或软件项目的执行)包括执行这些指令/命令中的一些或全部,其中该执行可能潜在地涉及所述数据和/或其他资源中的一些,如果存在于软件项目中的话。如本文中使用的与软件项目相关的术语“软件元素”指代软件项目的代码和/或其他组件(例如,数据和/或其他资源/资产)。因此,软件项目的(或用于软件项目的)软件元素可以包括(a)软件项目的(或用于软件项目的)一个或多个代码段(例如,一个或多个指令/命令),和/或(b)软件项目的(或用于软件项目的)一个或多个数据段或其他资源。
图3a示意性地图示了根据本发明的一些实施例与图2a的***200一起使用的受保护的软件项目240的示例(即,在保护***214已经应用一个或多个保护以更改初始软件项目230之后)。初始软件项目230包括初始软件元素。受保护的软件项目240可以包括来自初始软件项目230的未改变的初始软件元素310中的一些(尽管应当领会,受保护的软件项目240可以不包括初始软件项目230的未改变的初始软件元素310)。保护***214在将一个或多个保护应用于初始软件项目230时,可以从初始软件项目230修改初始软件元素的一个或多个部分,和/或可以引入一个或多个附加软件元素——这些修改和/或引入的软件元素在本文中将被称为更新软件元素300。更新软件元素300中的至少一些包括(或实现)共享秘密建立代码350。更新软件元素300可以附加地包括用于由共享秘密建立代码350使用的数据352。共享秘密建立代码350(以及数据352,如果存在的话)的目的将在稍后更详细地描述。在一些实施例中,更新软件元素300仅从共享秘密建立代码350(以及数据352,如果存在的话)形成;在其他实施例中,更新软件元素300包括除共享秘密建立代码350(以及数据352,如果存在的话)之外的软件元素,例如,实行受保护的软件项目240的完整性验证的软件元件。共享秘密建立代码350包括消息生成器模块356,并且还可以包括接口/通信模块354、共享秘密协议模块358和验证模块360中的一个或多个(如稍后更详细讨论的)。
图3b示意性地图示了根据本发明的一些实施例的用于与图2b的***200一起使用的受保护的软件项目240的示例。该受保护的软件项目240与图3a中图示的受保护的软件项目240相同,除了共享秘密建立代码350还包括临时密钥对生成模块261。
如以上提及的,(多个)保护器模块215的目的是保护(或保障)受保护的软件项目240的功能或数据处理,和/或保护(或保障)由受保护的软件项目240使用或处理或生成或存储的数据。这可以通过应用各种各样的软件保护技术(在本文中称为“保护”)来实现,诸如伪装技术、同态数据变换、控制流变换、白盒密码术、密钥隐藏、程序联锁和边界混合中的一个或多个。
特别地,受保护的软件项目240(即,在被(多个)保护器模块215处理之后,初始软件项目230将提供至少与初始软件项目230相同的功能或数据处理。然而,该功能或数据处理典型地以如下的方式在受保护的软件项目240中实现:使得执行受保护的软件项目240的计算机***的操作者不能(或至少发现难以)以非预期或未授权的方式从受保护的软件项目240访问或使用该功能或数据处理,而如果该计算机***要代替地执行初始软件项目230(即,以未受保护的形式),则该计算机***的操作者可能已经能够发起成功的攻击,并且从而以非预期的或未授权的方式访问或使用该功能或数据处理。类似地,受保护的软件项目240可以由于(多个)保护模块215的处理而使用受保护或混淆(obfuscated)的操作,来生成或使用或访问或操作以编码(或受保护/混淆)的形式表示的秘密信息(诸如密码密钥或标识符)——这使得对于攻击者而言更加难以(如果不是不可能的话)推论或访问该秘密信息(而这样的信息在没有应用保护的情况下可以从初始软件项目230可推论或可访问)。
例如:
●初始软件项目230可以包括至少部分基于要由初始软件项目230处理的一个或多个数据项目的决策(或决策块或分支点)。如果初始软件项目230是以其未受保护的形式执行的,则攻击者可能能够迫使初始软件项目230执行,使得在处理所述决策之后遵循一执行路径,即使该执行路径并非打算遵循的路径。例如,所述决策可以包括测试程序变量B是真(TRUE)还是假(FALSE),并且初始软件项目230可以被布置成使得,如果所述决策标识出B是真,则执行路径PT被遵循/执行,而如果该决策标识出B是假,则执行路径PF被遵循/执行。在该情况下,攻击者可以(例如,通过使用调试器或通过重写初始软件项目230):如果所述决策标识出B为真,则迫使初始软件项目230遵循路径PF,和/或如果所述决策标识出B为假,则迫使初始软件项目230遵循路径PT。因此,在一些实施例中,(多个)保护器模块215中的一个或多个旨在通过将一个或多个软件保护技术应用于初始软件项目230内的决策来防止攻击者(或至少使攻击者更加难以)做到这一点。
●初始软件项目230可以包括以下各项中的一个或多个:安全相关函数;访问控制函数;密码函数;和权限管理函数;等等。这样的函数经常涉及诸如一个或多个密码密钥之类的秘密数据的使用或生成。处理可以涉及使用和/或操作一个或多个密码密钥。如果攻击者能够标识或确定秘密数据,则已经出现了安全漏洞,并且受秘密数据保护的数据(诸如音频和/或视频内容)的控制或管理可能被规避。因此,在一些实施例中,(多个)保护器模块215中的一个或多个旨在通过将一个或多个软件保护技术应用于初始软件项目230内的这样的函数来防止攻击者(或至少使攻击者更加难以)标识或确定一个或多个秘密数据段。这可以涉及布置受保护的软件项目240,使得它在受保护的软件项目240本身内以混淆的方式表示秘密数据。附加地或可替代地,这可以涉及将受保护的软件项目240布置成具有能够以混淆或加密的形式向存储器动态写入/从存储器动态读取秘密数据的功能。
●受保护的软件项目240可以包括附加功能(即,最初不在初始软件项目230中的功能)。该附加功能可以被包括到初始软件项目230中,以帮助通过(多个)保护器模块215形成受保护的软件项目240。该附加功能可以包括例如共享秘密建立代码350中的一些或全部。
存在在本文中称为“白盒混淆技术”的许多技术,用于变换初始软件项目230,使得它抵抗白盒攻击(即,在白盒攻击环境下可能发起或可用的攻击)。这样的白盒混淆技术的示例可以在以下文献中找到:S. Chow等人的“White-Box Cryptography and an AES Implementation”(Selected Areas in Cryptography, 9th Annual InternationalWorkshop, SAC 2002, Lecture Notes in Computer Science 2595 (2003), p230-270)和S. Chow等人的“A White-box DES Implementation for DRM Applications”(DigitalRights Management, ACM CCS-9 Workshop, DRM 2002, Lecture Notes in ComputerScience 2696 (2003), p1-15),其全部公开内容通过引用并入本文中。附加示例可以在US61/055,694和WO2009/140774中找到,US61/055,694和WO2009/140774的全部公开内容通过引用并入本文中。一些白盒混淆技术(诸如上面描述的那些技术和下面陈述的其他技术)使得能够以攻击者很难/不可能据其访问或导出底层秘密/敏感数据的变换/安全的方式来存储和/或使用秘密/敏感数据(诸如密码密钥),并且可能地操纵秘密/敏感数据(诸如密码密钥)。一些白盒混淆技术实现数据流混淆——参见例如US7,350,085、US7,397,916、US6,594,761和US6,842,862,其全部公开内容通过引用并入本文中。一些白盒混淆技术实现控制流混淆——参见例如US6,779,114、US6,594,761和US6,842,862,其全部公开内容通过引用并入本文中。然而,应当领会,存在其他白盒混淆技术,并且本发明的实施例可以使用任何白盒混淆技术。
作为另一个示例,可能的是初始软件项目230可以旨在被提供(或分发)给特定的第二实体260(或特定的第二实体260集合)并由其使用,并且因此合期望的是将初始软件项目230“锁定”到(多个)特定的第二实体260,即,以防止初始软件项目230(一旦被保护)被除了(多个)第二实体260之外的实体正确执行。因此,存在在本文中称为“节点锁定”保护技术的许多技术,用于变换初始软件项目230,使得受保护的软件项目240可以在一个或多个预定/特定计算机***上执行(或由一个或多个预定/特定计算机***执行),但是将不在其他计算机***上执行。这样的节点锁定技术的示例可以在WO2012/126077中找到,WO2012/126077的全部公开内容通过引用并入本文中。然而,应当领会,存在其他节点锁定技术,并且本发明的实施例可以使用任何节点锁定技术。
数字水印是公知的技术。特别地,数字水印涉及修改初始数字对象以产生带水印的数字对象。进行修改是为了将特定数据(称为有效载荷数据)嵌入或隐藏到初始数字对象中。有效载荷数据可以例如包括标识数字对象的所有权或其他权利信息的数据。有效载荷数据可以标识带水印的数字对象的(预期)接收者,在该情况下,有效载荷数据被称为数字指纹——这样的数字水印可以用来帮助追踪数字对象的未授权副本的来源。数字水印可以应用于软件项目。这样的软件水印技术的示例可以在US7,395,433中找到,US7,395,433的全部公开内容通过引用并入本文中。然而,应当领会,存在其他软件水印技术,并且本发明的实施例可以使用任何软件水印技术。
可能合期望的是向不同的第二实体260(或第二实体260的不同用户)提供初始软件项目230的不同版本或实例。初始软件项目230的不同版本提供相同的功能——然而,初始软件项目230的不同版本被不同地编程或实现。这可以帮助限制攻击者成功地攻击受保护的软件项目240的影响。特别地,如果攻击者成功地攻击了他的受保护的软件项目240的版本,则该攻击(或通过该攻击发现或访问的数据,诸如密码密钥)可能不适合与受保护的软件项目240的不同版本一起使用。类似地,具有初始软件项目230的不同受保护实例240有助于标识受保护的软件项目240的特定用户(例如,特定的第二实体260)。因此,存在在本文中被称为“分集(diversity)”技术的许多技术,用于变换初始软件项目230,使得生成初始软件项目230的不同受保护版本(即,使得引入“分集”)。这样的分集技术的示例可以在WO2011/120123中找到,WO2011/120123的全部公开内容通过引用并入本文中。然而,应当领会,存在其他分集技术,并且本发明的实施例可以使用任何分集技术。
经常合期望的是查明软件项目的操作正确性。这经常被称为“完整性验证”或“IV”(参见例如https://en.wikipedia.org/wiki/File_verification,其全部公开内容通过引用并入本文中)。IV旨在确保运行时执行的软件项目是软件项目供应商发布的版本。如果软件正在执行,则这有助于终端用户或服务提供商信任项目的原件/可信副本而不是修改版本(例如包含恶意软件的版本)。
IV的一种传统方法是基于软件项目的原始软件元素中的一些或全部来计算值——例如,该值可以作为那些软件元素的校验和或者散列或者加密的强散列来计算。使用加密的强散列使得对于攻击者而言在维持原始散列值的同时修改那些软件元素是不可行的——因此,可以通过检测不正确或非预期的散列值来标识对软件元素的修改。这样的IV可以通过IV模块来实行,该IV模块已经被并入到例如软件项目中或者作为单独的处理来执行。
例如,在WO2015/149828中公开了用于IV的其他方法(WO2015/149828的全部公开内容通过引用并入本文中)。利用该方法,安全的软件应用包括验证预定不变条件是否成立的断言测试。这些对不变条件的检查提高了软件应用的完整性,因为攻击者的修改很可能引发不变属性失败。例如,在WO2017/102880和PCT/EP2016/081164中公开了用于IV的进一步的方法(WO2017/102880和PCT/EP2016/081164的全部公开内容通过引用并入本文中)。应当领会,可以代替地使用其他技术来执行IV。
一些IV技术可以由IV模块独立实行,该IV模块形成其完整性正在被验证的受保护的软件项目的一部分。其他IV技术可以通过参考单独的实体(例如,验证服务器/***)来实行——例如,验证数据可以由受保护的软件项目的IV模块发送到验证服务器/***,并且验证服务器/***检查该验证数据是否对应于受保护的软件项目的正确版本/实现。
经常,利用IV技术,如果完整性检查标识出已经对软件项目进行了修改,则软件项目的某些功能(例如,“正常”操作)可能被禁用或阻止(使得攻击者不能访问该功能)和/或可能实行其他功能(例如,报告攻击已经发生)。
以上提及的白盒混淆技术、节点锁定技术、软件水印技术、分集技术和IV技术是软件保护技术的示例。应当领会,存在对初始软件项目230应用保护的其他方法。因此,如本文中使用的术语“软件保护技术”或“保护”应理解为对初始软件项目230应用保护的任何方法(其目的是遏制攻击者的攻击,或者至少使对于攻击者而言更加难以成功地进行他的攻击),诸如以上提及的白盒混淆技术中的任何一个或多个(其目的是抵御白盒攻击环境)和/或以上提及的节点锁定技术中的任何一个或多个和/或以上提及的软件水印技术中的任何一个或多个和/或以上提及的分集技术中的任何一个或多个和/或以上提及的IV技术中的任何一个或多个。因此,(多个)保护器模块215可以被布置成将以上提及的软件保护技术或保护中的任何一个或多个应用于初始软件项目230,以生成受保护的软件项目240——这可以涉及第一保护器模块215将软件保护技术应用于初始软件项目230中的一些或全部,并且然后可能地,一个或多个保护器模块215将软件保护技术应用于在前保护器模块215的输出中的一些或全部(例如,保护的顺序应用/分层)。因此,最终的受保护软件项目240可以被称为“受保护软件”。
存在其中(多个)保护器模块215可以以其在初始软件项目230内实现以上提及的软件保护技术的多种方式。例如,为了保护初始软件项目230,(多个)保护器模块215可以修改初始软件项目230内的一个或多个软件元素和/或可以将一个或多个新的软件元素添加或引入到初始软件项目230中。当然,进行这些修改所用的实际方式或编写新软件元素所用的实际方式可以有所不同——毕竟,存在无数种编写软件的方式来实现相同的功能。
例如,在WO2015/150391和WO2015/150376中可以找到用于实现(多个)保护器模块215以便从初始软件项目230生成受保护的软件项目240的许多示例和方法,WO2015/150391和WO2015/150376的全部公开内容通过引用并入本文中。(多个)保护器模块215可以被布置以进行应用的保护技术的进一步的示例可以在WO2013/142981、WO2013/142979、WO2013/142983和WO2013/142980中找到,WO2013/142981、WO2013/142979、WO2013/142983和WO2013/142980的全部公开内容通过引用并入本文中。
保护***214可以包括或实现库数据库/商店(图2a和图2b中未示出)。库数据库可以包括一个或多个预生成的受保护软件模块(或函数或过程或软件片段),以及用于相同底层功能/软件的潜在多个被不同地实现/受保护的实例。到目前为止这些模块是“预生成的”,因为它们是独立于初始软件项目230生成的,并且潜在地是在接收到初始软件项目230之前生成的。因此,该库数据库可以被视为保护***214可用的储存库,使得保护***214(或保护器模块215中的一个或多个)可以使用存储在库数据库内的一个或多个模块,或者在受保护的软件项目240内包括存储在库数据库内的一个或多个模块。为此,保护***214可以被布置成执行库应用,该库应用生成被存储在库数据库中的软件模块。WO2015/150376中描述了用于生成受保护模块的这样的库应用的示例,WO2015/150376的全部公开内容通过引用并入本文中。保护***214可以被布置成直接从库数据库获得软件模块,或者可以被布置成经由库应用从库数据库获得软件模块。应当领会,库应用可以是除保护***214之外的实体的一部分,并且可以由除保护***214之外的实体执行。类似地,应当领会,库数据库可以是除保护***214之外的实体的一部分,并且可以由除保护***214之外的实体提供。
4–共享秘密建立
图4a是图示根据本发明一些实施例的用于第一实体210和第二实体260建立共享秘密的方法400的流程图。
在步骤402处,第一实体210使用其临时密钥对生成模块211来生成公钥Kpu,1和私钥Kpr,1,如已经在上面描述的。
在步骤406处,第一实体210使用其完整性密钥生成模块212来生成认证密钥Ka,如已经在上面描述的。在其中认证密钥Ka是对称密钥的实施例中,则第一实体210也使用认证密钥Ka作为验证密钥Kv。如已经在上面描述的,在其中认证密钥Ka是非对称密钥的实施例中,则第一实体210使用其完整性密钥生成模块212来生成对应于认证密钥Ka的验证密钥Kv
在步骤408处,第一实体210生成受保护的软件项目240。
如以上提及的,受保护的软件项目240包括所生成的公钥Kpu,1的表示(即,公钥Kpu,1被嵌入或存储在受保护的软件项目240内)。在一些实施例中,保护***214使用一个或多个软件保护技术(诸如上述白盒软件保护技术)来隐藏或混淆受保护的软件项目240内的公钥Kpu,1)。然而,这不是必需的,因为出于密钥建立协议(诸如Diffie-Hellman协议和椭圆曲线Diffie-Hellman协议)的目的,公钥的保密性不是必需的(公钥毕竟是公共的)。例如,公钥Kpu,1可以作为数据352的一部分被存储。
如以上提及的,受保护的软件项目240包括消息生成器模块356。消息生成器模块356被布置成(当由第二实体260执行时)生成表示第二实体260的公钥Kpu,2的消息M,其中消息M的完整性可使用验证密钥Kv来验证。因此,消息M已经在其中嵌入或编码了公钥Kpu,2。消息M还包括认证数据,该认证数据可以与验证密钥Kv一起用于检查消息M中的一些或全部的完整性(即,以查明自从最初生成认证数据和消息M以来,是否已经对消息M的那些部分进行了修改)。生成认证数据,使得至少可以使用验证密钥Kv来验证消息M内公钥Kpu,2的表示的完整性。图5示意性地图示了根据本发明的一些实施例的消息M。如所示出的,消息M包括公钥Kpu,2的表示502和以上提及的认证数据504,并且可以包括其他数据500(诸如元数据、地址数据、标识第二实体260的信息、使得第一实体210能够标识用于验证消息M的相关验证密钥Kv的信息等)。如以上讨论的,认证数据504可以包括使用认证密钥Ka生成的消息M的消息认证码。可替代地,认证数据504可以包括使用认证密钥Ka作为签名密钥为消息M生成的数字签名。
因此,保护***214可以配置消息生成器模块356来使用认证密钥Ka。例如,初始软件项目230可以包括用以实行消息M的生成,但是没有针对任何特定的密码密钥进行配置的软件元素,并且保护***214可以配置那些软件元素以使用认证密钥Ka。保护***214执行一个或多个软件保护技术来将认证密钥Ka隐藏在受保护的软件项目240内(即,以使从受保护的软件项目240或基于对受保护的软件项目240的检查/分析来确定认证密钥Ka在计算上很困难或在计算上不可行)。例如,消息生成器模块356可以由一个或多个查找表来实现,所述一个或多个查找表固有地使用认证密钥Ka,但是从所述一个或多个查找表提取或标识认证密钥Ka在计算上是困难的或在计算上是不可行的——保护***214可以在初始软件项目230中配置消息生成器模块,以便使用实现或基于认证密钥Ka的一个或多个查找表,从而为受保护的软件项目240生成消息生成器模块356。以上提及的白盒密码技术是实现认证密钥Ka的这样的掩盖的一种方式,同时使得认证密钥Ka能够在受保护的软件项目240的执行期间被使用。然而,应当领会,可以使用用于生成受保护的软件项目240的其他方法,以便包括以隐藏嵌入方式使用认证密钥Ka的消息生成器模块356。
因此,在步骤408处,第一实体210生成受保护的软件项目240,其中受保护的软件项目240包括第一实体210的公钥Kpu,1的表示和被配置为使用认证密钥Ka的消息生成器356,其中这被(由保护***214)实行,使得从受保护的软件项目240确定认证密钥Ka在计算上是不可行的。
步骤408可以附加地包括保护***214,该保护***214包括作为共享秘密建立代码350的一部分的验证模块360,当受保护的软件项目240被执行时,该验证模块360被布置成对受保护的软件项目240中的一些或全部实行完整性验证。优选地,这包括验证受保护的软件项目240内的公钥Kpu,1和消息生成器模块356的完整性。验证模块360可以使用任何合适的完整性验证处理来实现此,诸如以上提及的IV技术中的任何一个。
步骤408可以附加地包括保护***214配置受保护的软件项目240,使得它仅在第二实体260上正确地执行(即,实行共享秘密建立)——即,保护***214可以实行节点锁定技术来将受保护的软件项目240绑定或锁定到第二实体260。通过该方式,第一实体210将更加确信将从第二实体260接收消息M。
初始软件项目230可以包括消息生成器模块356(尽管尚未针对特定的认证密钥Ka进行配置)以及接口/通信模块354、共享秘密协议模块358和验证模块360中的一个或多个(这将稍后更详细地讨论),并且保护***214然后可以被布置成将一个或多个软件保护技术应用于这些模块(包括配置消息生成器模块356以使用认证密钥Ka)。
在步骤410处,第一实体210向第二实体260提供受保护的软件项目240或使受保护的软件项目240对第二实体260可用。
在步骤404处,第二实体260使用其临时密钥对生成模块261来生成公钥Kpu,2和私钥Kpr,2,如已经在上面描述的。
在步骤412处,第二实体260从第一实体210接收或获得受保护的软件项目240,并开始执行受保护的软件项目240。
注意到,密钥Kpu,1、Kpu,2、Kpr,1和Kpr,2的生成可能需要在第一实体210和第二实体260之间预先商定某些参数。例如,在Diffie-Hellman共享秘密建立协议的情况下,以上提及的参数pg需要已经被预先商定;在椭圆曲线Diffie-Hellman共享秘密建立协议的情况下,以上提及的域参数(
Figure 620918DEST_PATH_IMAGE021
)或(
Figure 212437DEST_PATH_IMAGE022
)需要已经被预先商定。在一些实施例中,第一实体210和第二实体260可能已经提前商定了这样的参数(例如,它们可能是两个实体都使用的长期建立的参数)。在该情况下,可以在第二实体260在步骤412处接收到受保护的软件项目240之前实行步骤404。在其他实施例中,参数由第一实体210提供给第二实体260,作为受保护的软件项目240的一部分,例如作为数据352的一部分。在该情况下,当生成受保护的软件项目240时,保护***214可以被布置成在步骤408处生成这些参数并(潜在地以混淆的方式)存储它们作为数据352的一部分。因此,图4b是图示图4a的方法400的变型的流程图,其中步骤412和步骤404被颠倒,使得临时密钥对生成模块261生成密钥对Kpu,2和Kpr,2发生在第二实体260接收到受保护的软件项目240之后。当使用图4b的方法400时,在图2a中图示的***200的情况下,临时密钥对生成模块261可以从受保护的软件项目240获得参数;在图2b中图示的***200的情况下,临时密钥对生成模块261形成受保护的软件项目240的一部分,并且因此可以访问作为受保护的软件项目240的一部分的这些参数——事实上,临时密钥对生成模块261可以由保护***214应用的一个或多个软件保护技术来保护,使得所述参数被隐藏在受保护的软件项目240内。
如果受保护的软件项目240包括验证模块360,则处理在可选步骤414处继续。验证模块360被配置成对在第二实体260处接收的受保护的软件项目240中的一些或全部实行完整性验证。如果验证模块360检测到已经对它已检查的受保护的软件项目240的那些部分进行了修改,则方法400可以在步骤416处终止;否则,处理在步骤418处继续。如果受保护的软件项目240不包括验证模块360,则处理在步骤418处继续。
在步骤418处,作为执行受保护的软件项目240的一部分,消息生成器模块356生成以上提及的消息M。因此,消息生成器模块356可以接收或获得(如由临时密钥对生成模块261生成的)公钥Kpu,2,并且生成表示该公钥的消息M,其中消息M包括已经使用或基于认证密钥Ka生成的认证数据504,使得消息M的完整性是使用对应于认证密钥Ka的验证密钥Kv可验证的。消息生成器模块356可以被布置成生成具有合适的寻址/标识信息的消息M,以使得消息M能够被发送回到第一实体210并被第一实体210标识——所述合适的寻址/标识信息可以例如形成消息M的数据500的一部分。
第二实体260然后可以向第一实体210发送消息M——这可以例如由受保护的软件项目240的接口/通信模块354来实行。
在步骤420处,第一实体210接收或获得消息M。
在步骤422处,第一实体210使用其认证模块216来认证(或验证)消息M。为此,认证模块216使用验证密钥Kv。如上面所讨论的,消息M可以包括使得第一实体210(或认证模块216)能够标识使用哪个验证密钥Kv的信息500(因为第一实体210可能涉及与多个第二实体260的多个共享秘密建立过程)。例如,消息M可以包括第二实体260的索引或标识符,并且第一实体210可以被布置成在最初生成验证密钥Kv时将验证密钥Kv与该索引或标识符相关联地存储,使得稍后在接收到消息M时可以访问验证密钥Kv。如果认证数据504包括消息认证码,则认证模块216使用验证密钥Kv来检查消息认证码是否对应于消息M(或者至少是消息M的要被认证的部分)。如果认证数据504包括数字签名,则认证模块216使用验证密钥Kv作为验证密钥来检查数字签名是否对应于消息M(或者至少是消息M的要被认证的部分)。
在一些实施例中,认证模块216包括定时器模块218,该定时器模块218被布置成检查消息M是否已经在第一实体210处被足够快地接收。特别地,定时器模块218可以被配置为将从在步骤410处向第二实体260提供受保护的软件项目240(或者从执行步骤402、406或408中的任何一个)到从第二实体260接收回消息M所花费的时间T与阈值时间段或持续时间H进行比较。如果T<H(或T≤H),则可以认为消息M已经被足够快地接收到;否则,认证模块216可能认为消息M被接收得太慢(这可能指示第三方已经截取并可能已经处理或干扰了消息M或受保护的软件项目240)。因此,在一些实施例中,当第一实体210在步骤410处向第二实体260提供受保护的软件项目240时(或者当执行步骤402、406或408中的任何一个时),第一实体210可以被布置用于定时器模块218启动定时器,该定时器测量直到从第二实体260接收到消息M为止的时间。可替代地,在一些实施例中,保护***214可以被布置为配置数据352,使得数据352存储表示第一实体210在步骤410处在其处向第二实体260提供受保护的软件项目240(或执行步骤402、406或408中的任何一个)的时间的时间值,并且消息生成器模块356可以被布置成包括该时间值作为返回到第一实体210的消息M的数据500的一部分——通过该方式,定时器模块218被提供有时间值,并且可以查明消息M是否被认为已经被足够快地接收。
因此,认证模块216可以被布置成检查一个或多个条件的集合是否被满足。所述条件之一是由第一实体210(或由认证模块216)执行使用如上讨论的验证密钥Kv对消息M的完整性的成功检查/验证。在一些实施例中,进一步的条件是,在步骤420处,由第一实体210在从第一实体210在步骤410处向第二实体260提供受保护的软件项目240(或者从步骤402、406或408中的任何一个的执行)的阈值时间段H内获得消息M。应当领会,认证模块216可以施加其他条件,以便认证模块216考虑验证/核实消息M。
如果认证模块216确定不满足一个或多个条件的集合,则处理在步骤424处结束。
如果认证模块216确定满足一个或多个条件的集合,则在步骤426处,第一实体210和第二实体260一起执行共享秘密建立以建立秘密。对于该共享秘密建立,第一实体210使用其共享秘密建立模块219。共享秘密建立模块219可以从认证模块216接收第二实体260的公钥Kpu,2(如消息M中所表示的),并且将该公钥Kpu,2用于共享秘密建立。共享秘密建立模块219还可以使用第一实体210的私钥Kpr,1,并且取决于所使用的共享秘密建立协议,还可以使用第一实体210的公钥Kpu,1。同样,对于该共享秘密建立,第二实体260可以使用共享秘密协议模块358,其形成受保护的软件项目240的一部分。共享秘密协议模块358使用嵌入在受保护的软件项目240中的第一实体210的公钥Kpu,1。共享秘密协议模块358还可以使用第二实体260的私钥Kpr,2,并且取决于所使用的共享秘密建立协议,还可以使用第二实体260的公钥Kpu,2
因此,共享秘密建立模块219和共享秘密协议模块358一起实行共享秘密建立协议(诸如上述的Diffie-Hellman或椭圆曲线Diffie-Hellman协议),以便建立共享秘密s
在一些实施例中,共享秘密协议模块358不形成受保护的软件项目240的部分,而是第二实体260的单独模块。
最后,在步骤428处,第一实体210和第二实体260使用共享秘密s彼此交互。例如,第一实体210和第二实体260可以使用共享秘密s作为密码密钥(或用于导出一个或多个密码密钥),其可以用于例如第一实体210和第二实体260之间传送的数据的加密/解密和/或认证/验证。该交互可以至少部分地使用受保护的软件项目240来实行(即,受保护的软件项目240的一些功能是使用共享秘密s与第一实体210交互的功能)。
在一些实施例中,方法400是响应于第一实体210和第二实体260中的一个或这两个希望与这两个实体中的另一个进行事务或处理而进行的。
本发明的实施例在其中使用X.509证书是困难的或不合期望的场景中(由于X.509证书所需的相关联的基础设施的复杂性以及在使用X.509证书中所涉及的计算和资源开销,并且在一些场景中,由于持有非对称私钥的设备不能在长时间段内对非对称私钥保密)找到了特定的用途。经常的情况是,第一实体可以是具有大量计算资源的服务器端***,但是第二实体可能是能力远不如X.509证书的处理要求的设备——本发明的实施例在这样的场景中发现了使得第一和第二实体能够建立共享秘密的巨大效用。例如,部署在车辆(诸如汽车)中的设备可能仅有相对有限的资源,而汽车制造商可能希望与那些车载设备建立共享秘密(例如,当执行软件或固件更新时或当检索诊断信息时)——本发明的实施例可以对此有所帮助,其中汽车制造商的后端***充当第一实体,并且车载设备充当第二实体。同样,银行可能希望与客户的移动设备(例如,电话)建立共享秘密,使得事务可以在银行的控制下并且以非计算密集型的方式进行——本发明的实施例可以对此有所帮助,其中银行的后端***充当第一实体,并且客户的移动设备充当第二实体。应当领会,对于本发明的实施例,许多其他部署场景是可能的。
5–修改
应当领会,所描述的方法已经被示为以特定次序实行的各个步骤。然而,本领域技术人员应当领会,这些步骤可以以不同的次序组合或实行,同时仍然实现期望的结果。
应当领会,本发明的实施例可以使用多种不同的信息处理***来实现。特别地,尽管各图及其讨论提供了示例性的计算***和方法,但是这些仅仅是为了在讨论本发明的各个方面中提供有用的参考而呈现的。本发明的实施例可以在任何合适的数据处理设备上实行,所述数据处理设备诸如是个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视机、服务器计算机等。当然,出于讨论的目的,已经简化了***和方法的描述,并且它们只是可以用于本发明的实施例的许多不同类型的***和方法中的一种。应当领会,逻辑块之间的边界仅仅是说明性的,并且替代的实施例可以合并逻辑块或元件,或者可以在各种逻辑块或元件上施加功能的替代分解。
应当领会,以上提及的功能可以实现为作为硬件和/或软件的一个或多个对应模块。例如,以上提及的功能可以被实现为用于由***的处理器执行的一个或多个软件组件。可替代地,以上提及的功能可以实现为硬件,诸如一个或多个现场可编程门阵列(FPGA),和/或一个或多个专用集成电路(ASIC),和/或一个或多个数字信号处理器(DSP),和/或一个或多个图形处理单元(GPU),和/或其他硬件配置。在本文中包含的流程图中实现的、或者如上所述的方法步骤,每个都可以由对应的相应模块实现;在本文中包含的流程图中实现的或者如上所述的多个方法步骤可以由单个模块一起实现。
应当领会,在本发明的实施例由计算机程序实现的范围内,存储或携带计算机程序的一个或多个存储介质和/或一个或多个传输介质形成本发明的各方面。计算机程序可以具有一个或多个程序指令或程序代码,其在由一个或多个处理器(或一个或多个计算机)执行时,实行本发明的实施例。如本文中使用的术语“程序”可以是设计用于在计算机***上执行的指令序列,并且可以包括子例程、函数、过程、模块、目标方法、目标实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、字节代码、共享库、动态链接库和/或设计用于在计算机***上执行的其他指令序列。存储介质可以是磁盘(诸如硬盘驱动器或软盘)、光盘(诸如CD-ROM、DVD-ROM或蓝光光盘)或存储器(诸如ROM、RAM、EEPROM、EPROM、闪速存储器或便携式/可移动存储器设备)等。传输介质可以是通信信号、数据广播、两台或更多台计算机之间的通信链路等。

Claims (36)

1.一种用于第一实体和第二实体建立共享秘密的方法,其中第一实体和第二实体每个具有相应的非对称密钥对,所述非对称密钥对包括公钥和对应的私钥,其中所述方法包括:
第一实体生成受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;
第一实体向第二实体提供受保护的软件项目;
第二实体执行受保护的软件项目,所述执行包括消息生成器生成一消息,所述消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;
第一实体从第二实体获得所述消息;
响应于满足一个或多个条件的集合,第一实体和第二实体一起执行共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,并且第二实体使用如在受保护的软件项目中表示的第一实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
2.一种用于第一实体建立与第二实体共享的秘密的方法,其中第一实体和第二实体每个具有包括公钥和对应私钥的相应非对称密钥对,其中所述方法包括第一实体:
生成受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示,以及被配置为使用认证密钥的消息生成器;
向第二实体提供受保护的软件项目;
从第二实体获得一消息,所述消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证所述消息的完整性;和
响应于满足一个或多个条件的集合,执行与第二实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用作为在消息中表示的第二实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
3.根据权利要求1或2所述的方法,其中所述条件之一是所述消息由第一实体在从第一实体向第二实体提供所述受保护的软件项目的阈值时间段内获得。
4.根据前述权利要求中任一项所述的方法,包括第一实体生成第一实体的非对称密钥对。
5.根据前述权利要求中任一项所述的方法,包括第一实体生成认证密钥。
6.一种用于第二实体建立与第一实体共享的秘密的方法,其中第一实体和第二实体每个具有包括公钥和对应私钥的相应非对称密钥对,其中所述方法包括第二实体:
从第一实体获得受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;
执行受保护的软件项目,所述执行包括消息生成器生成一消息,所述消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;
向第一实体提供所述消息;
执行与第一实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第二实体使用如在受保护的软件项目中表示的第一实体的公钥。
7.根据权利要求1或6所述的方法,包括第二实体生成第二实体的非对称密钥对。
8.根据前述权利要求中任一项所述的方法,其中受保护的软件项目被布置成使得当被执行时,受保护的软件项目对受保护的软件项目执行完整性验证,并且其中所述消息生成器仅在对受保护的软件项目成功进行完整性验证时生成所述消息。
9.根据前述权利要求中任一项所述的方法,其中认证密钥是对称密钥,并且认证数据包括消息认证码。
10.根据权利要求1至8中任一项所述的方法,其中认证密钥和验证密钥形成非对称密钥对,并且认证数据包括数字签名。
11.根据前述权利要求中任一项所述的方法,其中第一实体的公钥和第一实体的私钥是临时密钥。
12.根据前述权利要求中任一项所述的方法,其中第二实体的公钥和第二实体的私钥是临时密钥。
13.根据前述权利要求中任一项所述的方法,其中认证密钥和验证密钥是临时密钥。
14.根据前述权利要求中任一项所述的方法,其中执行共享秘密建立包括执行以下各项之一:
(a)加密密钥交换协议;
(b)Diffie-Hellman共享秘密建立协议;
(3)椭圆曲线Diffie-Hellman共享秘密建立协议。
15.根据前述权利要求中任一项所述的方法,其中从受保护的软件项目中确定认证密钥在计算上是不可行的。
16.根据权利要求1至14中任一项所述的方法,其中在阈值时间段内从受保护的软件项目确定认证密钥在计算上是不可行的。
17.根据前述权利要求中任一项所述的方法,其中所述方法不利用X.509证书或静态密钥来建立共享秘密。
18.一种包括第一实体和第二实体的***,其中第一实体和第二实体每个具有包括公钥和对应私钥的相应非对称密钥对,其中所述***被布置用于第一实体和第二实体通过以下各项建立共享秘密:
第一实体生成受保护的软件项目,所述受保护项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;
第一实体向第二实体提供受保护的软件项目;
第二实体执行受保护的软件项目,所述执行包括消息生成器生成一消息,所述消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;
第一实体从第二实体获得所述消息;
响应于满足一个或多个条件的集合,第一实体和第二实体一起执行共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,并且第二实体使用如在受保护的软件项目中表示的第一实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
19.一种包括第一实体的***,其中所述***被布置用于第一实体建立与第二实体共享的秘密,其中第一实体和第二实体每个具有相应的非对称密钥对,所述相应的非对称密钥对包括公钥和对应的私钥,其中第一实体被布置用于:
生成受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;
向第二实体提供受保护的软件项目;
从第二实体获得一消息,所述消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证所述消息的完整性;和
响应于满足一个或多个条件的集合,执行与第二实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第一实体使用如消息中表示的第二实体的公钥,其中所述条件之一是由第一实体执行使用验证密钥对消息完整性的成功验证。
20.根据权利要求18或19所述的***,其中所述条件之一是第一实体在从第一实体向第二实体提供受保护的软件项目的阈值时间段内获得消息。
21.根据权利要求18至20中任一项所述的***,其中第一实体被布置成生成第一实体的非对称密钥对。
22.根据权利要求18至21中任一项所述的***,其中第一实体被布置成生成认证密钥。
23.一种包括第二实体的***,其中所述***被布置用于第二实体建立与第一实体共享的秘密,其中第一实体和第二实体每个具有相应的非对称密钥对,所述相应的非对称密钥对包括公钥和对应的私钥,其中第二实体被布置用于:
从第一实体获得受保护的软件项目,所述受保护的软件项目包括第一实体的公钥的表示和被配置为使用认证密钥的消息生成器;
执行受保护的软件项目,所述执行包括消息生成器生成一消息,所述消息表示第二实体的公钥,并且包括使用认证密钥生成的认证数据,使得使用对应于认证密钥的验证密钥可验证消息的完整性;
向第一实体提供所述消息;
执行与第一实体的共享秘密建立以建立秘密,其中执行共享秘密建立包括第二实体使用如在受保护的软件项目中表示的第一实体的公钥。
24.根据权利要求18至23中任一项所述的***,其中第二实体被布置成生成第二实体的非对称密钥对。
25.根据权利要求18至24中任一项所述的***,其中受保护的软件项目被布置成使得当被执行时,受保护的软件项目对受保护的软件项目执行完整性验证,并且其中所述消息生成器仅在对受保护的软件项目成功进行完整性验证时生成所述消息。
26.根据权利要求18至25中任一项所述的***,其中认证密钥是对称密钥,并且认证数据包括消息认证码。
27.根据权利要求18至25中任一项所述的***,其中认证密钥和验证密钥形成非对称密钥对,并且认证数据包括数字签名。
28.根据权利要求18至27中任一项所述的***,其中第一实体的公钥和第一实体的私钥是临时密钥。
29.根据权利要求18至28中任一项所述的***,其中第二实体的公钥和第二实体的私钥是临时密钥。
30.根据权利要求18至29中任一项所述的***,其中认证密钥和验证密钥是临时密钥。
31.根据权利要求18至30中任一项所述的***,其中执行共享秘密建立包括执行以下各项之一:
(a)密码密钥交换协议;
(b)Diffie-Hellman共享秘密建立协议;
(3)椭圆曲线Diffie-Hellman共享秘密建立协议。
32.根据权利要求18至31中任一项所述的***,其中从受保护的软件项目确定认证密钥在计算上是不可行的。
33.根据权利要求18至31中任一项所述的***,其中在阈值时间段内从受保护的软件项目确定认证密钥在计算上是不可行的。
34.根据权利要求18至33中任一项所述的***,其中所述***不利用X.509证书或静态密钥来建立共享秘密。
35.一种计算机程序,所述计算机程序当由一个或多个处理器执行时,使得一个或多个处理器实行权利要求1至17中任一项的方法。
36.一种计算机可读介质,存储根据权利要求35的计算机程序。
CN201980050742.6A 2018-05-31 2019-05-31 共享秘密建立 Pending CN112514321A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/994182 2018-05-31
US15/994,182 US10797868B2 (en) 2018-05-31 2018-05-31 Shared secret establishment
PCT/EP2019/064178 WO2019229234A1 (en) 2018-05-31 2019-05-31 Shared secret establishment

Publications (1)

Publication Number Publication Date
CN112514321A true CN112514321A (zh) 2021-03-16

Family

ID=66752094

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980050742.6A Pending CN112514321A (zh) 2018-05-31 2019-05-31 共享秘密建立

Country Status (4)

Country Link
US (1) US10797868B2 (zh)
EP (1) EP3804213A1 (zh)
CN (1) CN112514321A (zh)
WO (1) WO2019229234A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301432A (zh) * 2021-05-14 2021-08-24 海信视像科技股份有限公司 显示设备、终端设备及通信连接方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI566564B (zh) * 2012-04-25 2017-01-11 Samton International Development Technology Co Ltd Virtual reality authentication circuit, system and electronic consumption method
WO2019046651A2 (en) 2017-08-30 2019-03-07 Inpher, Inc. EVALUATION OF REAL-VALUE FUNCTION PRESERVING HIGH PRECISION CONFIDENTIALITY
US11316672B2 (en) * 2018-06-28 2022-04-26 lOT AND M2M TECHNOLOGIES, LLC ECDHE key exchange for mutual authentication using a key server
FR3085815B1 (fr) * 2018-07-11 2022-07-15 Ledger Gouvernance de securite du traitement d'une requete numerique
US11206130B2 (en) * 2018-07-31 2021-12-21 Nxp B.V. Customizing cryptographic keys between multiple hosts
US10966086B2 (en) * 2018-11-08 2021-03-30 Palo Alto Research Center Incorporated System and method for securely enabling a user with a mobile device to access the capabilities of a standalone computing device
JP2022523182A (ja) * 2019-02-22 2022-04-21 インファー,インク. モジュラー整数を使用したセキュアなマルチパーティ計算のための算術
US11025421B2 (en) * 2019-04-26 2021-06-01 Nxp B.V. Advanced modular handshake for key agreement and optional authentication
US11469887B1 (en) * 2020-06-29 2022-10-11 Amazon Technologies, Inc. Remote hardware execution service with customer consented debugging
US11880472B2 (en) * 2021-01-14 2024-01-23 Bank Of America Corporation Generating and disseminating mock data for circumventing data security breaches

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2236495A1 (en) * 1998-05-01 1999-11-01 Certicom Corp. Authenticated key agreement protocol
US20010016908A1 (en) * 1998-05-01 2001-08-23 Certicom Corp. Authenticated key agreement protocol
CN1330820A (zh) * 1998-11-03 2002-01-09 西门子公司 用于鉴别第一实体和第二实体的方法和装置
US20050232428A1 (en) * 2004-04-02 2005-10-20 Little Herbert A Deploying and provisioning wireless handheld devices
WO2005107141A1 (en) * 2004-04-30 2005-11-10 Research In Motion Limited Systems and methods to securely generate shared keys
US20060153368A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Software for providing based on shared knowledge public keys having same private key
CN1832397A (zh) * 2005-11-28 2006-09-13 北京浦奥得数码技术有限公司 电子设备接口间基于公钥证书的认证密钥协商和更新方法
EP1926278A1 (en) * 2006-11-22 2008-05-28 Research In Motion Limited System and method for secure record protocol using shared knowledge of mobile user credentials
US20090019282A1 (en) * 2004-08-03 2009-01-15 David Arditti Anonymous authentication method based on an asymmetic cryptographic algorithm
US20100023771A1 (en) * 2006-11-15 2010-01-28 Marinus Struik Implicit certificate verification
CN102077213A (zh) * 2008-06-26 2011-05-25 微软公司 用于确保通信的认证和完整性的技术
US20120284518A1 (en) * 2011-05-03 2012-11-08 Jesse Walker Method of anonymous entity authentication using group-based anonymous signatures
EP2538606A1 (en) * 2011-06-21 2012-12-26 Research In Motion Limited Provisioning a shared secret to a portable electronic device and to a service entity
CN106534050A (zh) * 2015-09-11 2017-03-22 中移(杭州)信息技术有限公司 一种实现虚拟专用网络密钥协商的方法和装置
US20170109525A1 (en) * 2014-03-31 2017-04-20 Irdeto B.V. Protecting an item of software
CN106797311A (zh) * 2014-08-29 2017-05-31 维萨国际服务协会 用于安全密码生成的方法
CN107766724A (zh) * 2017-10-17 2018-03-06 华北电力大学 一种可信计算机平台软件栈功能架构的构建方法
CN107852404A (zh) * 2015-06-30 2018-03-27 维萨国际服务协会 保密通信的相互认证

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4113889C2 (de) 1991-04-27 1994-05-11 Stockhausen Chem Fab Gmbh Neue wasserlösliche biologisch abbaubare Kohlensäurepolyester und ihre Verwendung als Präparations- und Gleitmittel für Synthesegarne
US6594761B1 (en) 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
US6779114B1 (en) 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
CA2305078A1 (en) 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
CA2350029A1 (en) 2001-06-08 2002-12-08 Cloakware Corporation Sustainable digital watermarking via tamper-resistant software
JP5460699B2 (ja) 2008-05-23 2014-04-02 イルデト カナダ コーポレーション ソフトウェアアプリケーションのホワイトボックス実装を生成するためのシステムおよび方法
US9892272B2 (en) 2010-03-31 2018-02-13 Irdeto B.V. System and method for encapsulating and enabling protection through diverse variations in software libraries
CA2830846C (en) 2011-03-21 2018-08-28 Irdeto B.V. System and method for securely binding and node-locking program execution to a trusted signature authority
WO2013142983A1 (en) 2012-03-30 2013-10-03 Irdeto Canada Corporation Securing accessible systems using cross-linking
GB201405755D0 (en) 2014-03-31 2014-05-14 Irdeto Bv Optimizing and protecting software
GB201405706D0 (en) 2014-03-31 2014-05-14 Irdeto Bv Software protection
GB201522315D0 (en) 2015-12-17 2016-02-03 Irdeto Bv Securing webpages, webapps and applications
US11281769B2 (en) 2016-12-15 2022-03-22 Irdeto B.V. Software integrity verification

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010016908A1 (en) * 1998-05-01 2001-08-23 Certicom Corp. Authenticated key agreement protocol
CA2236495A1 (en) * 1998-05-01 1999-11-01 Certicom Corp. Authenticated key agreement protocol
CN1330820A (zh) * 1998-11-03 2002-01-09 西门子公司 用于鉴别第一实体和第二实体的方法和装置
US7007164B1 (en) * 1998-11-03 2006-02-28 Infineon Technologies Ag Method and array for authenticating a first instance and a second instance
US20050232428A1 (en) * 2004-04-02 2005-10-20 Little Herbert A Deploying and provisioning wireless handheld devices
WO2005107141A1 (en) * 2004-04-30 2005-11-10 Research In Motion Limited Systems and methods to securely generate shared keys
US20090019282A1 (en) * 2004-08-03 2009-01-15 David Arditti Anonymous authentication method based on an asymmetic cryptographic algorithm
US20060153368A1 (en) * 2005-01-07 2006-07-13 Beeson Curtis L Software for providing based on shared knowledge public keys having same private key
CN1832397A (zh) * 2005-11-28 2006-09-13 北京浦奥得数码技术有限公司 电子设备接口间基于公钥证书的认证密钥协商和更新方法
US20100023771A1 (en) * 2006-11-15 2010-01-28 Marinus Struik Implicit certificate verification
EP1926278A1 (en) * 2006-11-22 2008-05-28 Research In Motion Limited System and method for secure record protocol using shared knowledge of mobile user credentials
CN102077213A (zh) * 2008-06-26 2011-05-25 微软公司 用于确保通信的认证和完整性的技术
US20120284518A1 (en) * 2011-05-03 2012-11-08 Jesse Walker Method of anonymous entity authentication using group-based anonymous signatures
EP2538606A1 (en) * 2011-06-21 2012-12-26 Research In Motion Limited Provisioning a shared secret to a portable electronic device and to a service entity
US20170109525A1 (en) * 2014-03-31 2017-04-20 Irdeto B.V. Protecting an item of software
CN106797311A (zh) * 2014-08-29 2017-05-31 维萨国际服务协会 用于安全密码生成的方法
CN107852404A (zh) * 2015-06-30 2018-03-27 维萨国际服务协会 保密通信的相互认证
CN106534050A (zh) * 2015-09-11 2017-03-22 中移(杭州)信息技术有限公司 一种实现虚拟专用网络密钥协商的方法和装置
CN107766724A (zh) * 2017-10-17 2018-03-06 华北电力大学 一种可信计算机平台软件栈功能架构的构建方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张悦;郑东;张应辉;: "一种基于Diffie-Hellman协议的秘密共享算法", 计算机技术与发展, no. 12, 10 December 2015 (2015-12-10) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301432A (zh) * 2021-05-14 2021-08-24 海信视像科技股份有限公司 显示设备、终端设备及通信连接方法

Also Published As

Publication number Publication date
EP3804213A1 (en) 2021-04-14
WO2019229234A1 (en) 2019-12-05
US10797868B2 (en) 2020-10-06
US20190372759A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US10797868B2 (en) Shared secret establishment
US11675880B2 (en) Securing webpages, webapps and applications
EP2659373B1 (en) System and method for secure software update
US11281769B2 (en) Software integrity verification
Bertholon et al. Certicloud: a novel tpm-based approach to ensure cloud iaas security
EP3198498B1 (en) A challenge-response method and associated computing device
CN110414248B (zh) 一种调试微处理器的方法及微处理器
JP7256862B2 (ja) 保護されたコンテナ間のセキュア通信方法およびそのシステム
Almeida et al. A machine-checked proof of security for AWS key management service
CN112241527A (zh) 密钥生成方法、***及电子设备
CN112784249B (zh) 实现无标识情形下进行移动终端认证处理的方法、***、处理器及其计算机可读存储介质
EP3278259B1 (en) Data protection
CN110210189B (zh) 软件验证方法、软硬件绑定方法及其可编程器件
KR20190046724A (ko) 어플리케이션의 무결성 검증 방법 및 장치
Costea et al. Secure software licensing: Models, constructions, and proofs
Κασαγιάννης Security evaluation of Android Keystore
CN112559979A (zh) 一种pos机上通过硬件安全芯片保护软件库授权使用的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination