CN117063174A - 用于通过基于app的身份的app间相互信任的安全模块及方法 - Google Patents
用于通过基于app的身份的app间相互信任的安全模块及方法 Download PDFInfo
- Publication number
- CN117063174A CN117063174A CN202280014162.3A CN202280014162A CN117063174A CN 117063174 A CN117063174 A CN 117063174A CN 202280014162 A CN202280014162 A CN 202280014162A CN 117063174 A CN117063174 A CN 117063174A
- Authority
- CN
- China
- Prior art keywords
- application
- security module
- computing
- module
- cryptographic
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000009471 action Effects 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000004891 communication Methods 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims description 54
- 244000035744 Hura crepitans Species 0.000 claims description 16
- 238000010200 validation analysis Methods 0.000 claims description 14
- 238000012795 verification Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 16
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000001010 compromised effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3263—Cryptographic 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
- H04L9/3265—Cryptographic 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 using certificate chains, trees or paths; Hierarchical trust model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3271—Cryptographic 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 challenge-response
- H04L9/3273—Cryptographic 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 challenge-response for mutual authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2129—Authenticate client device independently of the user
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
- Prostheses (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本文公开了用于建立应用程序与应用程序(app与app)相互信任以使得这些应用程序之间的信息和数据的交换可以以安全的方式发生的模块和方法。具体地,本文公开了一种包括识别模块和可信存储模块的安全模块。所述识别模块被配置为在设置在计算设备的标准操作***内的应用程序和安全模块之间建立密码绑定。一旦完成这个,则可以在应用程序和安全模块之间建立安全通信。然后,应用程序随后可以利用安全模块中的密码密钥来建立与其它应用程序的安全通信。然后,基于密码绑定和包含在可信存储模块中的信息来认证应用程序的完整性。然后,应用程序可以作为具有由可信第三方发布的一组信任属性的经认证的应用程序继续处理动作。
Description
技术领域
本发明涉及用于建立应用程序与应用程序(app与app)相互信任以使得这些应用程序之间的信息和数据的交换可以安全方式发生的模块和方法。特别地,本发明涉及包括识别模块和可信存储模块的模块。识别模块被配置为在设置在计算设备的标准操作***内的应用程序和安全模块之间建立密码绑定。一旦完成这个,则可以在应用程序和安全模块之间建立安全通信。然后,应用程序随后可以利用安全模块中的密码密钥来建立与其它应用程序的安全通信。然后,基于密码绑定和包含在可信存储模块中的信息来认证应用程序的完整性。然后,应用程序可以作为具有由可信第三方发布的一组信任属性的经认证的应用程序继续处理动作。
背景技术
当前,安全元件或可信执行环境(TEE)通常用于计算设备中,以执行需要被保护以免受利用它们的应用程序(app)的正常操作环境影响的逻辑和操作(尤其是密码操作)。app通常将安全元件或TEE视为可帮助提供可信存储或密码服务的单独计算模块。因此,利用安全元件或TEE的大多数计算设备将其作为公共资源而提供,该公共资源是在运行于计算设备的正常操作***中的所有app之间共享的。在这样的***中,对安全元件或TEE的访问控制通常由操作***来实施。如果操作***被损害(compromised),或者如果app已经被篡改,则安全元件或TEE将不具有对其的任何了解,并且其可能被误用,导致所谓的“信任缺口”问题。
另外,随着app演进变得更加复杂和协作,日益需要app彼此安全地通信。特别地,在app之间可以建立安全通信信道之前,这些app需要一种方式在它们之间建立相互信任。这与依赖于其他app用于用户认证、支付和用于可信存储或处理的安全数据传送的app特别相关。这些app中的一些甚至可以在诸如终端用户的个人设备的不受信任的操作环境中运行。通常,当app需要信任另一app时,它将必须确定其他app是否是它应该与之对话的app,是否未被篡改(静态地和动态地),并且一旦这完成,app是否可以在app之间建立可信的通信信道。
这样的预防措施是重要的,因为恶意第三方可能试图修改在计算设备上运行的app,使得它不按其本应该的那样操作。例如,app可以仅允许一旦已经购买相关联的许可就由用户使用app的某些功能。恶意第三方可以修改app,使得app的所有功能可以由设备的用户访问,从而规避购买许可的需要。作为另一示例,app可以被配置为安全app,以在外部支付***请求时提供支付授权。恶意第三方可以修改该app,使得授权不被计算设备的用户看到,并且授权反而可能被直接发送到与不良行动者相关联的数据服务器。
由于上述原因,本领域技术人员一直在努力提出一种模块和方法,其能够确保app没有被篡改,并且一旦被认证,就使用认证的app来建立与其他app的安全通信。
发明内容
通过根据本发明的实施例所提供的***和方法,解决了上述和其它问题,并且在本领域中取得了进步。
根据本发明的模块和方法的实施例的第一优点在于,本发明的安全模块被密码地绑定到应用程序,使得安全模块能够静态地和/或动态地验证应用程序未被篡改。
根据本发明的模块和方法的实施例的第二优点在于,一旦安全模块静态地和/或动态地验证了应用程序的完整性,则安全模块被配置为处理与经认证的应用程序相关联的动作,使得经处理的动作能够证明应用程序的身份。
根据本发明的***和方法的实施例的第三个优点是,计算设备内或不同计算设备中的其它应用程序或安全模块/TEE然后可以利用经认证的应用程序来执行用户认证过程,或在安全模块/TEE和经认证的应用程序之间建立安全通信信道。
根据本发明的***和方法的实施例的第四个优点是,通过检查其它应用程序的信任属性满足预期动作的要求,并验证信任属性属于应用程序,可能彼此不知道的两个应用程序可以建立相互信任。
根据本发明的***和方法的实施例的第五优点是,在两个应用程序之间端到端地建立相互信任,并且这独立于底层操作***、硬件或通信信道。即使操作***、硬件或通信信道被损害,两个应用程序仍可直接信任彼此的完整性。
根据本发明的***和方法的实施例的第六优点在于,可以完全以软件实现***,而对底层操作***或硬件没有任何特殊要求。这使得其容易地适用于任何种类的应用程序端点。
上述优点由根据本发明的方法的实施例以如下方式操作来提供。
根据本发明的第一方面,公开了一种用于证明在计算设备的标准操作***内设置的应用程序的真实性的安全模块,所述模块包括:识别模块,其被配置为:当在所述应用程序和所述安全模块之间建立通信时,在所述应用程序和所述安全模块之间建立第一密码绑定,由此基于预加载在所述安全模块中的与所述应用程序相关联的信息以及基于从所述应用程序获得的信息,来生成所述第一密码绑定;基于所述第一密码绑定来认证所述应用程序的完整性;以及处理用于经认证的应用程序的动作。
关于本发明的第一方面,识别模块还被配置为基于第二密码绑定动态地重新认证所述经认证的应用程序的完整性,其中基于预加载在所述安全模块中的与所述应用程序相关联的所述信息以及基于从所述应用程序新获得的信息,来生成所述第二密码绑定。
关于本发明的第一方面,安全模块还包括:非暂时性介质,其由处理单元可读取以存储用于引导所述处理单元执行以下操作的指令:提供密码沙箱,所述密码沙箱包括虚拟密码机以及在所述密码沙箱内的防篡改虚拟层,所述虚拟密码机执行包括解密虚拟机代码的密码操作,所述防篡改虚拟层用于防止密码操作受到未授权观察者的影响。
关于本发明的第一方面,由所述识别模块在所述应用程序和所述安全模块之间建立所述第一密码绑定包括:所述识别模块被配置为:从所述应用程序接收应用程序校验和,其中,基于所述应用程序的源代码、所述应用程序的二进制和/或所述应用程序的编程流,从所述应用程序导出所述应用程序校验和;从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信校验和;以及基于从所述应用程序接收的所述应用程序校验和以及所述检索到的可信校验和,来生成所述第一密码绑定。
关于本发明的第一方面,由所述应用程序生成所述应用程序校验和包括:所述应用程序被配置为利用SHA-256散列函数来对所述应用程序的所述源代码进行散列操作,以生成所述应用程序校验和。
关于本发明的第一方面,由所述识别模块在所述应用程序和所述安全模块之间建立所述第一密码绑定包括:所述识别模块被配置为:从所述应用程序接收与所述应用程序相关联的数字签名,其中在每次编译所述应用程序的源代码时使用对所述应用程序唯一的私钥对所述应用程序的源代码进行签名时,生成所述数字签名;从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信公钥;以及基于从所述应用程序接收的所述数字签名和与所述应用程序相关联的所检索的可信公钥,来生成所述第一密码绑定。
关于本发明的第一方面,识别模块还被配置为:从所述应用程序接收应用程序校验和,其中基于所述应用程序的源代码从所述应用程序导出所述应用程序校验和;从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信校验和;以及基于从所述应用程序接收的所述应用程序校验和、所述检索到的可信校验和、所述接收到的数字签名和所述检索到的可信公钥,重新生成所述第一密码绑定。
关于本发明的第一方面,由所述识别节点基于所述第一密码绑定对所述应用程序的所述完整性的所述认证包括:所述识别节点被配置为当从所述密码绑定确定从所述应用程序获得的信息与预加载在所述安全模块中的与所述应用程序相关联的所述信息匹配时,认证所述应用程序的所述完整性。
关于本发明的第一方面,由所述识别模块对所述经认证的应用程序的动作的处理包括:所述识别模块被配置为:使用密码密钥签名算法,使用对所述应用程序唯一的私钥来签名所述动作;以及将所述经签名的动作和检索到的证书链传送到另一应用程序,由此在接收到所述经签名的动作和所述证书链后,所述另一应用程序被配置为基于接收到的证书链来验证所述经签名的动作。
关于本发明的第一方面,动作包括由另一应用程序签名的请求和证书链,由此所述识别模块处理用于所述经认证的应用程序的所述动作包括:所述识别模块被配置为:基于所述证书链来验证所述经签名的请求;当确定所述经签名的请求已被验证时,执行所述请求内包含的指令;基于所执行的指令的结果来构造响应;使用对于所述应用程序唯一的私钥来签名所述响应;对所述经签名的响应加密,并将加密的经签名的响应传送到所述另一应用程序。
关于本发明的第一方面,由所述识别模块处理用于所述经认证的应用程序的所述动作包括:所述识别模块被配置为:基于所述动作的要求,从所述安全模块内设置的可信存储模块检索信任属性,并且其中,由已证明所述应用程序有资格被给予所述属性的可信第三方签名所述信任属性;基于检索到的信任属性,生成响应;以及将所生成的响应发送到另一应用程序,其中,在接收到所生成的响应时,所述另一应用程序被配置为使用包含在所述响应内的所述信任属性来执行安全事务。
根据本发明的第二方面,公开了一种用于使用根据本发明的第一方面的安全模块在第一计算应用程序和第二计算应用程序之间建立相互信任的***,所述第一计算应用程序和所述第二计算应用程序设置在用户的计算设备的标准操作***内,其中,所述应用程序包括所述第一计算应用程序,并且由此所述安全模块通信地连接到所述第一计算应用程序,所述***包括:所述第二计算应用程序被配置为向所述第一计算应用程序发送认证请求;所述第一计算应用程序被配置为:当来自所述第二计算应用程序的所述认证请求被所述第一计算应用程序接收时,使用所述安全模块认证所述第一计算应用程序;当所述第一计算应用程序已被所述安全模块认证时,生成验证响应;以及将所述验证响应发送到所述第二计算应用程序,其中所述第二计算应用程序被配置为使用所述验证响应来建立所述第一计算应用程序和所述第二计算应用程序之间的所述相互信任。
关于本发明的第二方面,第二计算应用程序被配置为:当所述第二计算应用程序从接收到的验证响应确定所述第一计算应用程序已经被认证时,与所述第一计算应用程序共享安全数据。
根据本发明的第三方面,公开了一种用于使用根据本发明的第一方面的安全模块在第三计算应用程序和绑定到用户的计算设备的信任元件之间建立相互信任的***,所述第三计算应用程序设置在所述用户的计算设备的标准操作***内,其中所述应用程序包括所述第三计算应用程序,并且由此所述安全模块通信地连接到所述第三计算应用程序,所述***包括:所述信任元件被配置为向所述第三计算应用程序发送认证请求;所述第三计算应用程序被配置为:当来自所述信任元件的所述认证请求被所述第三计算应用程序接收时,使用所述安全模块认证所述第三计算应用程序;当所述第三计算应用程序已被所述安全模块认证时,生成验证响应;以及将所述验证响应发送到所述信任元件,其中所述信任元件被配置为使用所述验证响应来建立所述第三计算应用程序和所述信任元件之间的所述相互信任。
根据本发明的第四方面,公开了一种用于使用根据本发明的第一方面的安全模块在第四计算应用程序与第五计算应用程序之间建立相互信任的***,所述第四计算应用程序设置在所述用户的计算设备的标准操作***内,其中所述应用程序包括所述第四计算应用程序,并且由此所述安全模块通信地连接到所述第四计算应用程序,所述***包括:所述第五计算应用程序被配置为向所述第四计算应用程序发送认证请求;所述第四计算应用程序被配置为:当来自所述第五计算应用程序的所述认证请求被所述第四计算应用程序接收时,使用所述安全模块认证所述第四计算应用程序;当所述第四计算应用程序已被所述安全模块认证时,生成验证响应;以及将所述验证响应发送到所述第五计算应用程序,其中所述第五计算应用程序被配置为使用所述验证响应来建立所述第四计算应用程序和所述第五计算应用程序之间的所述相互信任。
根据本发明的第五方面,公开了一种用于证明在计算设备的标准操作***内设置的应用程序的真实性的方法,所述方法包括以下步骤:当在所述应用程序和安全模块之间建立通信时,使用所述安全模块在所述应用程序和所述安全模块之间建立第一密码绑定,由此基于预加载在所述安全模块中的与所述应用程序相关联的信息和基于从所述应用程序获得的信息,来生成所述第一密码绑定;使用所述安全模块,基于所述第一密码绑定,来认证所述应用程序的完整性;以及使用所述安全模块处理所述经认证的应用程序的动作。
关于本发明的第五方面,方法还包括以下步骤:使用所述安全模块,基于第二密码绑定,动态地重新认证所述经认证的应用程序的完整性,其中基于预加载在所述安全模块中的与所述应用程序相关联的所述信息和从所述应用程序新获得的信息,生成所述第二密码绑定。
关于本发明的第五方面,安全模块包括:非暂时性介质,其由处理单元可读取以存储用于引导所述处理单元执行以下操作的指令:提供密码沙箱,所述密码沙箱包括虚拟密码机以及在所述密码沙箱内的防篡改虚拟层,所述虚拟密码机执行包括解密虚拟机代码的密码操作,所述防篡改虚拟层用于防止密码操作受到未授权观察者的影响。
关于本发明的第五方面,在所述应用程序和所述安全模块之间建立所述第一密码绑定的步骤包括以下步骤:使用所述安全模块,从所述应用程序接收应用程序校验和,其中,基于所述应用程序的源代码、所述应用程序的二进制和/或所述应用程序的编程流,从所述应用程序导出所述应用程序校验和;使用所述安全模块,从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信校验和;以及使用所述安全模块,基于从所述应用程序接收的所述应用程序校验和以及所述检索到的可信校验和,来生成所述第一密码绑定。
关于本发明的第五方面,由所述应用程序生成所述应用程序校验和包括:所述应用程序被配置为利用SHA-256散列函数来对所述应用程序的所述源代码进行散列操作,以生成所述应用程序校验和。
附图说明
通过在详细描述中描述并在以下附图中示出的根据本发明的***和方法的特征和优点来解决上述和其它问题。
图1示出了框图,其示出如何通过使用根据本发明的实施例配置的安全模块在两个应用程序之间建立相互信任;
图2示出了根据本发明的实施例的通信地耦接到主机应用程序的虚拟安全模块的框图;
图3示出了表示根据本发明的实施例的图2所示的虚拟安全模块内设置的计算模块的框图;
图4示出了根据本发明的实施例的通信地耦接到主机应用程序的硬件安全模块的框图;
图5示出了表示根据本发明的实施例的被配置为图4所示的硬件安全模块的处理***的组件的框图;以及
图6示出了根据本发明的实施例的在安全模块中实现的用于证明安装在计算设备的标准操作***内的应用程序的真实性的过程。
具体实施方式
本发明涉及用于建立应用程序与应用程序(app与app)相互信任以使得这些应用程序之间的信息和数据的交换可以安全方式发生的模块和方法。特别地,本发明涉及包括识别模块和可信存储模块的安全模块。识别模块被配置为在设置在计算设备的标准操作***内的应用程序和安全模块之间建立密码绑定。一旦完成这个,则可以在应用程序和安全模块之间建立安全通信。然后,应用程序随后可以利用安全模块中的密码密钥来建立与其它应用程序的安全通信。然后,基于密码绑定和包含在可信存储模块中的信息来认证应用程序的完整性。然后,应用程序可以作为具有由可信第三方发布的一组信任属性的经认证的应用程序继续处理动作。
现在将参考如附图中所示的本发明的若干实施例来详细描述本发明。在以下描述中,阐述了许多具体特征以便提供对本发明的实施例的透彻理解。然而,对于本领域技术人员来说,显然可以在没有某些或全部特定特征的情况下实现实施例。这些实施例也应当落入本发明的范围内。此外,可能没有详细描述以下某些工艺步骤和/或结构,并且读者将参考相应的引用以免不必要地模糊本发明。
此外,本领域技术人员将认识到,在本说明书中的许多功能单元在整个说明书中都被标记为模块。本领域技术人员还将认识到,模块可以被实现为电路、逻辑芯片或任何种类的分立组件。此外,本领域技术人员还将认识到,模块可以用软件来实现,该软件然后可以由各种处理器来执行。在本发明的实施例中,模块还可以包括计算机指令或可执行代码,其可以指示计算机处理器基于所接收的指令来执行事件序列。模块的实现的选择留给本领域技术人员作为设计选择,并且不以任何方式限制本发明的范围。
更进一步,应当注意,以下描述将集中于根据本发明的实施例,其通常在提供在Apple或Google/>操作***下运行的应用程序软件的环境中操作。然而,根据本发明的实施例不限于任何一个特定应用或任何特定环境。实际上,本领域技术人员将发现,本发明的***和方法可以有利地应用于各种***和应用程序软件,包括安全令牌、软件密码术、网络加密和物联网(IoT)。此外,根据本发明的实施例可以在各种不同的平台中执行,平台包括诸如RIM/>Windows电话等的其他移动电话操作***,诸如Apple Mac/>Windows、Linux、UNIX、FreeRTOS的其他操作***,以及诸如web浏览器和嵌入式设备等的其他操作环境。因此,下面对根据本发明的所示实施例的描述是为了说明而不是限制的目的。用于提供根据本发明的方法和***的过程可以由诸如但不限于移动电话、平板电脑、上网本、膝上型计算机、服务器或其他处理***的设备执行。
图1示出了根据本发明的实施例的框图,该框图示出了如何通过使用安全模块112以及可选地通过附加使用安全模块114在应用程序102和应用程序104之间以及在信任元件106和应用程序102之间建立相互信任。本领域技术人员将认识到,应用程序102和104可以包括,但不限于,移动应用程序(移动app/app)、计算应用程序、被设计为在诸如智能电话、计算机平板电脑或任何其他类型的移动计算设备的计算设备的标准操作***101上运行的计算机程序或软件应用程序。在本发明的其它实施例中,应用程序102和104可在单独和/或不同类型的操作***上运行,和/或信任元件106可设置在独立计算设备内,或可驻存在另一类型的操作***中。
现在,这样的应用程序能够执行各种功能,诸如提供:基于位置的服务;支付或银行服务;游戏功能、订单跟踪等。不管应用程序执行的功能如何,大多数应用程序通常需要网络接入以正确地运行。通常,广泛接受的是,应用程序可以被广泛地分类为几个主要类型。第一类型包括通过web浏览器执行的基于web的应用程序,第二类型包括专门为特定类型的操作***设计的本地应用程序,第三类型包括使用诸如HTML和JavaScript的基于web的语言构建的但可由各种操作***执行的混合应用程序,并且第四类型包括IoT设备和远程安全元件,即在单独的计算设备上运行的应用程序。在不背离本发明的情况下,应用程序102和104可包括这些类型的应用程序中的任何一个。
根据本发明的实施例,安全模块112被密码地绑定到应用程序102。特别地,安全模块112被配置为当在它们之间建立通信时与应用程序102建立密码绑定。然后,安全模块112使用该密码绑定来认证应用程序102的完整性。
在本发明的实施例中,可以基于与应用程序102相关联的信息生成密码绑定,所述信息诸如但不限于与应用程序102相关联的独特密钥、基于源代码生成的校验和、应用程序的二进制(即,其编译的源代码)或应用程序102的编程流、源代码的散列、应用程序的二进制(即,其编译的源代码)或应用程序102的编程流(例如,使用诸如SHA-256散列函数的散列函数)、包括应用程序102的包名称、束身份等的应用程序102的应用身份、应用程序102的签名证书摘要(在签名的应用程序的情况下)或应用程序102的校验和(在可能未签名的app的情况下)、私有-公钥等。在初始设置阶段期间,可以提供与应用程序102相关联的所有该信息和/或数据,并且可以将其存储在安全模块112内的安全位置。
这在应用程序102和安全模块112之间产生了强的绑定。当应用程序102和安全模块112通信连接时,嵌入在安全模块112内的这些值将与从应用程序102检索的实际值一起使用,以生成密码绑定。然后,使用该绑定来确定应用程序102是否被篡改。
例如,恶意第三方可以对应用程序102进行解封装和反向工程,以修改其源代码或注入恶意代码。这种恶意动作将被安全模块102检测到,因为对应用程序102的源代码所做的任何修改将导致其校验和被更改。这样,当密码绑定由安全模块112基于由应用程序102生成的校验和以及嵌入在安全模块112内的信息生成时,模块112将能够确定应用程序102已经被篡改。
替代地,在经更改的源代码被编译时,可以检测到应用程序102中的恶意源代码。这是因为每次编译应用程序102时,应用程序102被配置为通过用对应用程序102唯一的私钥对应用程序102的经编译的源代码签名来生成数字签名。
在初始设置阶段期间,一旦应用程序102的开发者已经编译了应用程序102的源代码,则开发者将随后使用对应用程序102唯一的私钥来签名经编译的源代码。然后,将该数字签名作为对应用程序102唯一的可信数字签名附加到应用程序102。用于验证应用程序102的数字签名的可信公钥将存储在安全模块112内。为了完整性,应当注意,当使用私钥(其是私钥-公钥对的一部分)对数据进行签名时,创建数字签名。然后,必须使用对应的公钥来验证数字签名的真实性。签名和验证过程基于标准的私钥-公钥密码。还应当注意,每次使用特定的私钥对特定的数据进行签名时,即使执行相同的签名操作,所得到的数字签名也总是不同的。因此,可信公钥被存储在安全模块中,使得它可以被安全模块用来验证数字签名的真实性。
这样,当恶意第三方修改应用程序102的源代码时,由应用程序102基于更改的经编译的源代码生成的数字签名将不会被成功验证,因为恶意第三方将不能访问应用程序102的唯一私钥,并且将不得不使用其自己的私钥生成数字签名。因此,当通过安全模块112基于数字签名和存储在安全模块112中的可信公钥生成密码绑定时,模块112将能够确定应用程序102已经被篡改,其中所述数字签名是基于应用程序102的更改的经编译的源代码生成的。
在另一种场景中,当恶意第三方挂接(hook)应用程序102的功能时,它可能静态地或动态地修改应用程序102的代码段,或者恶意功能可能在运行时期间出现在呼叫跟踪中。通过检查校验和或验证数字签名,如前面部分所述,可以防止前者。可以通过与白名单或黑名单进行比较来检测后者。两个名单都被加密并与它们的对应的加密密钥一起存储在安全模块112中。
在本发明的另一个实施例中,应用程序102的开发者可以提供应用程序签名证书摘要或应用程序的校验和(其可以使用诸如SHA-256的摘要算法来计算),其作为值与其对应的加密密钥一起存储在安全模块112内的加密资产文件中。当在应用程序102和安全模块112之间初始建立通信时,模块112可以被配置为解密该预存储的资产文件,检索该值,并将该值与从应用程序102检索的值进行比较,以确定应用程序102是否已被篡改或更改。这可以通过如前面部分所述的密码绑定的生成来直接完成,或者在生成密码绑定的同时完成。
在本发明的另一实施例中,应用程序102的身份密钥、证书和信任列表可以由一个安全端点中的可信且物理上安全的***(其可以使用硬件安全模块来实现)生成并存储在其内部。这些资产也嵌入在使用安全构建过程构成另一安全端点的安全模块112中。在整个过程中严格实施了分割知识和双重控制。例如,需要来自不同部门的至少两个操作员能够访问硬件安全模块并执行构建过程。每个操作员保持一组分割口令,并且在每个生成过程之后将立即改变口令。然后,将每组分割口令安全地保存在每个不同的保险箱中。每个保险箱的密钥由不同的授权人员处理。
在本发明的其他实施例中,安全模块112可以在应用程序102的运行时间期间,动态地使另一个密码绑定在安全模块112和应用程序102之间生成。可以基于随机调度或固定调度来生成该另一绑定,并且将基于与预加载在安全模块中的应用程序相关联的信息以及基于从应用程序新获得的信息来生成该另一绑定。这是为了确保应用程序102的完整性被连续地认证,从而验证包含在应用程序102内的数据/信息的可靠性(soundness)。密码绑定可以包括如前面部分所述的应用程序的校验和或数字签名。然后,如前面部分所述,可以检查密码绑定。
在本发明的实施例中,每当应用程序102接收到共享私有数据/信息的请求时,应用程序102可以被配置为调用安全模块112,并且使得安全模块112执行一系列安全检查以确保应用程序102未被篡改。仅当应用程序102已由安全模块112验证时,应用程序102可接着与其它应用程序或可信第三方共享其私有数据/信息。
一旦安全模块112已确认应用程序102的完整性、身份和真实性,即,应用程序102尚未被篡改,安全模块112接着将允许存储在安全模块中的应用程序102的私有信息(例如,但不限于,应用程序的身份密钥、应用程序用户的身份、私有密钥、数字证书、信任属性(其为由可信第三方证明的在不同方面(例如,安全用户验证、数据隐私和规章符合)中指示应用程序的可信赖性的应用程序的属性)等)由应用程序102存取,和/或供应用程序102与通信地连接到应用程序102的其它应用程序共享此信息。例如,一旦被认证,应用程序102的身份密钥然后可以用于数据签名或安全密钥交换过程,并且其密钥的对应数字签名可以被提供给其他应用程序,例如应用程序104,以用于验证目的。
应当注意,应用程序102的私有信息允许应用程序102的身份独立于设备用户的身份或计算设备的身份。因此,一旦应用程序102的完整性已被认证,应用程序102就可使用其私有信息来进而单独地认证应用程序的用户,使得用户可安全地与独立的可信第三方或应用程序交换信息。
例如,应用程序104可向应用程序102发送认证请求,请求应用程序102使用安全模块112认证其自身,如上所述,使得与应用程序102相关联的用户也可以被认证。在另一示例中,诸如安全元件或信任执行环境(TEE)等绑定到计算设备的可信元件106可向应用程序102发送认证请求,请求应用程序102使用如上所述的安全模块112认证其自身。可信元件106必须这样做,因为可信元件106不能验证应用程序102是否已经被篡改。一旦已经认证了应用程序102的完整性,则可信元件106然后可以利用应用程序的私有信息,例如应用程序用户的身份或信任属性,来在可信元件与应用程序之间建立可信通信信道。在又一示例中,大多数服务器将包含私钥和证书,当使用这些私钥和证书时,使得客户端应用程序能够信任服务器的完整性。然而,服务器将不能检查客户端应用程序是否已经被篡改。这样,这些服务器可以向已经被配置为应用程序的应用程序102发送认证请求,请求应用程序102在应用程序102和服务器之间交换数据之前使用如上所述的安全模块112认证其自身。
在本发明的某些实施例中,需要应用程序102信任应用程序104的完整性,类似地,需要应用程序104信任应用程序102的完整性,由此仅当在这两个应用程序之间建立相互信任时才交换信息。在这种情况下,应用程序102将被配置为利用安全模块112来认证其完整性(如以上部分中所描述的),而应用程序104将被配置为利用安全模块114来证明其完整性。应注意,安全模块114可被配置为执行与安全模块112类似的功能。
根据本发明的实施例,安全模块112可以包括嵌入在应用程序内的虚拟或软件模块。然后,当加载应用程序时,并且当在虚拟安全模块和应用程序之间建立通信时,可以加载虚拟安全模块。图2示出了虚拟安全模块和应用程序之间的交互的示例性框图。具体地,图2示出了通过接口204嵌入在主机应用程序202内的虚拟安全模块206。虚拟安全模块206设置有识别模块208,其被配置为当在主机应用程序202和虚拟安全模块206之间建立通信时或者根据动态调度,在它们之间建立密码绑定。可基于预加载在可信存储模块210中的与应用程序相关联的信息和直接从应用程序获得的信息来生成密码绑定。
具体地,识别模块208可以被配置为在步骤252处发起篡改检测过程,以基于从应用程序202获得的信息和在步骤254处读取的存储在主机app完整性信息模块218中的信息来认证主机应用程序202的完整性。一旦被认证,应用程序202然后可以在步骤256处请求要在步骤258处由可信存储模块210处理和/或执行的某些动作。在可以执行/处理的动作中包括检索与主机应用程序202相关联的私钥212、证书214和/或信任属性216。一旦被处理,在步骤260,处理后的动作然后作为响应从模块206发送到应用程序202。
在本发明的实施例中,虚拟安全模块206可以被实现为如图3所示的密码虚拟机。在该实施例中,密码沙箱308提供了用于安全地存储和处理应用程序304的密码密钥和数据的方法,其中在沙箱内提供了防篡改虚拟层310以防止处理和数据受到未授权的观察者的影响。密码沙箱308可以包括密码虚拟机309,其被配置为安全虚拟处理器以及安全虚拟存储器319,以便允许应用程序304执行安全处理以及安全存储。密码密钥320和数据321可以安全地存储在存储器319中。
密码虚拟机可以包括安全密码模块315,以执行密码操作,包括存储、检索和处理密码密钥和数据。这些密码操作可以包括公开可用的密码例程,包括对称密钥密码术(例如AES)、非对称密钥密码术(例如RSA)、散列函数(例如SHA-1、SHA-2和HMAC)以及伪随机数生成和密钥生成函数。该虚拟机可以从应用程序接收请求306,以通过在虚拟机内安全地处理这些密码操作并将这些密码操作的结果作为响应307发送回应用程序来执行这些密码操作。该虚拟机也可以用于执行其他非密码的但安全性关键的处理功能。
虚拟机309可以包括虚拟机解释器311和一组虚拟机代码312。可以在计算机处理器324上执行虚拟机和底层操作***301。虚拟机解释器还可以包括模糊技术314,以使其操作对底层操作***和其中的任何未授权观察者模糊。虚拟机可以提供用于在虚拟机内安全加密存储319密码密钥和数据的装置。安全存储器可以另外用于存储其他非密码的但安全性关键的数据。可以通过向加密存储器写入317和从加密存储器读取318来提供这种装置。该加密文件可以存储在操作***的文件***内或由操作***提供的可信存储器内。
通过沙箱接口305,应用程序可以将请求发送到虚拟机,并且从虚拟机接收密码操作的结果。该接口可以包括诸如软件库的编程接口或诸如TCP/IP网络连接的网络接口。
虚拟机解释器还可以提供功能323以安全地更新来自可信方322的一组虚拟机代码。在允许更新过程替换虚拟机所使用的该组虚拟机代码之前,代码可由可信方签名并由虚拟机验证。虚拟机解释器可以提供对底层操作***中的功能302的安全访问303。
通过存储被实现为加密形式的一组虚拟机代码的(图2的)识别模块并在运行时对这些指令进行解密以允许虚拟机的正常操作,防篡改虚拟层310可以保护虚拟机免于反向工程。通过采用技术316来防止虚拟机的调试,防篡改虚拟层可以保护虚拟机不受运行时分析的影响。这些技术可以包括防止调试器被附接到虚拟机的技术。
替代地,安全模块可以包括与应用程序一起被递送给用户的硬件安全元件。在本发明的实施例中,应用程序可以被配置为例如作为小应用程序在硬件安全元件内提供的操作***内运行,或者可以被配置为仅当在应用程序和硬件安全元件之间建立通信时起作用。图4中示出了这样的实施例,其示出了硬件安全元件410和主机应用程序404之间的交互。
具体地,图4示出了通过接口406和驱动器408通信地连接到主机应用程序404的硬件安全元件410,该主机应用程序安装在计算设备的底层操作***402中。通信可以通过有线和/或无线方式进行,并且留给本领域技术人员作为设计选择。如图所示,硬件安全元件410设置有识别模块412,其被配置为当在主机应用程序404和硬件安全元件410之间建立通信时或根据动态调度,在它们之间建立密码绑定。可基于预加载在可信存储模块414中的与应用程序相关联的信息且基于直接从应用程序获得的信息而生成密码绑定。
具体地,识别模块412可以被配置为在步骤452处发起篡改检测过程,以基于从应用程序404获得的信息和在步骤454处读取的存储在可信存储器414中的信息来认证主机应用程序404的完整性。一旦被认证,应用程序404就可以在步骤456请求要在步骤460由可信存储模块414处理的某些动作。在可以处理的动作中包括检索与主机应用程序404相关联的私钥416、证书418和/或信任属性420。一旦被处理,在步骤458,处理后的动作作为响应从硬件安全元件410发送到应用程序404。
根据本发明的实施例,图5中示出了代表可以在硬件安全元件410内提供的用于实现根据本发明的实施例的实施例的处理***500的组件的框图。本领域技术人员将认识到,在这些模块内提供的每个处理***的确切配置可以不同,并且处理***500的确切配置可以变化,并且图5仅作为示例提供。
在本发明的实施例中,硬件安全元件410可以包括控制器501和用户接口502。用户接口502被布置为使得能够根据需要在用户和硬件安全元件410内提供的模块之间进行手动交互,并且为此目的,包括用户输入指令以向这些模块中的每个提供更新所需的输入/输出组件。本领域技术人员将认识到,用户接口502的组件可以随实施例而变化,但是通常将包括显示器540、键盘535和跟踪板536中的一个或多个。
控制器501通过总线515与用户接口502进行数据通信,并且包括存储器520、安装在电路板上用于处理指令和数据以执行本实施例的方法的处理器505、操作***506、用于与用户接口502进行通信的输入/输出(I/O)接口530以及通信接口,在本实施例中,通信接口是网卡550的形式。例如,网卡550可以用于通过有线或无线网络从这些模块向包含主机应用程序的其它处理设备发送数据,或者通过有线或无线网络接收数据。可由网卡550利用的无线网络包括,但不限于,无线保真(Wi-Fi)、蓝牙、近场通信(NFC)、蜂窝网络、卫星网络、电信网络、广域网(WAN)等。
存储器520和操作***506通过总线510与CPU 505进行数据通信。存储器组件包括易失性和非易失性存储器两者以及每种类型的存储器中的多于一个,存储器包括随机存取存储器(RAM)520、只读存储器(ROM)525和包括一个或多个固态驱动器(SSD)的大容量存储设备545。存储器520还包括用于安全地存储秘密密钥或私钥的安全存储器546。本领域技术人员将认识到,上述存储器组件包括非暂时性计算机可读介质,并且应当被认为包括除了暂时性传播信号之外的所有计算机可读介质。通常,指令作为程序代码存储在存储器组件中,但也可以是硬连线的。存储器520可以包括内核和/或编程模块,例如可以存储在易失性或非易失性存储器中的软件应用程序。
在此,术语“处理器”用于通常指代可以处理这样的指令的任何设备或组件,并且可以包括:微处理器、微控制器、可编程逻辑器件或其它计算器件。即,处理器505可由用于接收输入、根据存储在存储器中的指令处理输入并生成输出(例如,到存储器组件或在显示器540上)的任何合适的逻辑电路***提供。在该实施例中,处理器505可以是具有存储器可寻址空间的单核处理器或多核处理器。在一个示例中,处理器505可以是多核的,包括例如8核CPU。在另一示例中,它可以是并行操作以加速计算的CPU核的群集。
图6示出了根据本发明的实施例的在安全模块中实现的用于证明安装在计算设备的标准操作***内的应用程序的真实性的过程600。
过程600开始于步骤602,由此当在应用程序和安全模块之间建立通信时,过程600在应用程序和安全模块之间建立密码绑定。应注意,应用程序可用于从其它应用程序接收动作、数据和/或请求/将动作、数据和/或请求发送到其它应用程序,且然后,可将所接收/发送的信息提供到安全模块或从安全模块获得所接收/发送的信息。过程600可基于预加载在安全模块中的与应用程序相关联的信息和直接从应用程序获得的信息来生成密码绑定。过程600然后在步骤604基于包含在密码绑定中的信息确定应用程序是否已经被篡改。如果过程600确定应用程序已经被篡改,则过程600结束并终止应用程序与安全模块之间的通信,从而防止在它们之间交换任何数据。
相反,如果过程600根据密码绑定中包含的信息确定应用程序尚未被篡改,则过程600进行到步骤606。在步骤606,过程600将处理经认证的应用程序的动作。在本发明的实施例中,过程在606处可包括使用对经认证的应用程序唯一的私钥(使用密码密钥签名***)来签名动作;以及将经签名的动作和检索到的证书链发送到与经认证的应用程序通信的另一应用程序,借此在接收到经签名的动作和证书链后,另一应用程序被配置为基于接收到的证书链和与应用程序相关联的数字签名来验证经签名的动作。
在本发明的另一实施例中,过程可以包括验证从另一应用程序接收到的动作,其中动作包括经签名的请求(其包含指令和事务)和证书链,由此使用链接到该另一应用程序的另一安全模块来签名请求。在本发明的实施例中,一旦请求被验证,包含在经签名的请求中的指令可以指示安全模块使用对应用程序唯一的私钥对包含在请求中的事务进行签名。在本发明的其他实施例中,包含在经签名的请求中的指令可以指示安全模块提供存储在安全模块中的信息,例如,但不限于,身份密钥、应用程序用户的身份、私钥、数字证书和/或信任属性。为了验证动作,安全模块将使用与动作一起提供的证书链来验证经签名的请求的真实性。
一旦验证了经签名的请求的真实性,则将执行包含在请求内的指令。例如,如果指令是用于安全模块签名事务,则这将使用属于安全模块并且对于经认证的应用程序唯一的私钥来完成。类似地,在另一示例中,如果指令用于安全模块提供存储在安全模块内的信息,则一旦请求被验证,这将被完成。
基于所执行的指令的结果来构造对应的响应,然后使用对于该应用程序也是唯一的另一私钥来签名该响应。然后,在将加密的经签名的响应提供给链接到安全元件的经认证的应用之前,对经签名的响应进行加密,然后,安全元件继续将加密的经签名的响应提供给动作所源自的应用程序。
在本发明的进一步实施例中,过程可以包括基于动作的要求从可信存储模块检索信任属性。信任属性将由可信第三方(即,发布应用程序的公钥的证书的第三方)来签名。换句话说,这意味着可信第三方信任与可信存储模块链接的应用程序,并且可信第三方已经通过某种手段(例如,正式的证明过程)验证了应用程序出于特定目的(例如,用于安全用户认证)而应受到信任属性的认可印记。然后可以基于信任属性生成响应;并且将响应发送到另一应用程序。当应用程序接收到信任属性时,应用程序将认识到信任属性对于拥有对应私钥的应用程序是唯一的,并且可信第三方先前已经担保发送该信任属性的应用程序的完整性。
单边信任示例
参考图1,可能出现应用程序104可能需要信任应用程序102,但应用程序102不需要信任应用程序104的情况。当一个应用程序需要依赖于另一个应用程序来执行用户认证过程时,将出现这种情况。当客户端应用程序用需要被签名的数据调用服务器应用程序的API以便服务器应用程序信任客户端应用程序没有被篡改时,也可能出现这种情况。
在这些单边信任的情况下,要求仅一个应用程序绑定到安全模块。
在该实施方式中,仅应用程序102被绑定到安全模块112,并且应用程序104信任应用程序102的根证明机构。应用程序102和104之间建立单边信任的详细流程描述如下:
步骤1:应用程序104发起请求并将请求发送到应用程序102
步骤2:应用程序102处理该请求并构造对应的响应
步骤3:应用程序102使用安全模块签名响应
步骤4:应用程序102将经签名的响应与证书链一起发送给应用程序104
步骤5:应用程序104验证所接收的经签名的响应和证书链
相互信任示例
也可能出现两个应用程序需要相互信任的情况。一个示例是当一个应用程序需要向另一应用程序发送机密数据时。如果可以信任其他应用程序,则第一应用程序应当仅发送数据,而如果可以信任第一应用程序,则第二应用程序可以仅信任所接收的数据的完整性。
在这个实施方式中(参照图1),应用程序102和应用程序104都被绑定到它们各自的安全模块(即,分别是112和114),并且两个应用程序信任彼此的根证明机构。应用程序102和104之间建立相互信任的详细流程描述如下:
步骤1:应用程序102发起该请求
步骤2:应用程序102使用安全模块112签名请求
步骤3:应用程序102将经签名的请求与证书链一起发送到应用程序104
步骤4:应用程序104验证经签名的请求和证书链
步骤5:应用程序104处理该请求并构造对应的响应
步骤6:应用程序104使用安全模块114签名响应
步骤7:应用程序104使用来自应用程序102的公钥对经签名的响应进行加密
步骤8:应用程序104将加密的经签名的响应与证书链一起发送到应用程序102
步骤9:应用程序102使用安全模块112对加密的经签名的响应进行解密
步骤10:应用程序102验证经签名的响应和证书链
除了上述两个示例,安全模块112/114还可用于许多其它用例,诸如认证用例、可信API调用用例、可信数据传输用例、支付用例和数据处理委托用例。
具体地,在认证用例中,在智能电话中,应用程序A被设计为信任任何应用程序B以认证用户,只要应用程序B包含指示其能够在认证器保证级别3(AAL3)认证用户的信任属性。应用程序B可以使用其app绑定的安全模块来提供经签名的认证结果以及AAL3信任属性。
对于可信API调用用例,开放银行API需要确保客户端是可信的并且不被篡改,这样用户不会无意地向恶意软件泄露私有金融信息。如果每个客户端应用程序仅能够连接到开放银行API,如果客户端应用程序具有app绑定的安全模块,该模块可以提供经签名的请求以及证明其适合用作开放银行应用程序的信任属性,则可以实现这样的安全性。
在可信数据传输用例的示例性情况下,应用程序A需要将一些机密数据传输到应用程序B以供处理并安全地接收经处理的结果。两个应用程序都可以利用它们的app绑定的安全模块来建立用于安全信道的密钥并验证彼此的完整性。
在支付用例的示例性情况下,应用程序A是电子商务应用程序,而应用程序B可以是银行或支付钱包应用程序。当用户想要在应用程序A中对购物车结帐时,他选择某个应用程序B来支付。两个应用程序都将需要通过在它们各自的app绑定的安全模块中相互共享它们的信任属性来建立彼此的相互信任。还可以建立安全信道,并且每个应用程序可以确保其他应用程序没有被篡改,并且这些应用程序分别具有电子商务应用程序和支付应用程序的有效信任属性。
最后,在数据处理委托用例的示例性情况下,应用程序A被配置为包含用户的私有财务数据。当用户想要将该数据提供给可信金融顾问应用程序B以便获得一些金融见解时,在共享用户的数据之前,应用程序A经由应用程序B的app绑定的安全模块验证其包含用于金融数据隐私的信任属性并且其未被篡改。然后,应用程序A继续与应用程序B建立安全信道,以便相应地交换数据。
本领域技术人员可以确定许多其它的改变、替换、变化和修改,并且本发明旨在包括落入所附权利要求范围内的所有这些改变、替换、变化和修改。
Claims (20)
1.一种用于证明在计算设备的标准操作***内设置的应用程序的真实性的安全模块,所述模块包括:
识别模块,其通信地连接到所述应用程序,所述识别模块被配置为:
当在所述应用程序和所述安全模块之间建立通信时,在所述应用程序和所述安全模块之间建立第一密码绑定,由此基于预加载在所述安全模块中的与所述应用程序相关联的信息以及基于从所述应用程序获得的信息,来生成所述第一密码绑定;
基于所述第一密码绑定来认证所述应用程序的完整性;以及
处理用于经认证的应用程序的动作。
2.根据权利要求1所述的模块,其中所述识别模块还被配置为基于第二密码绑定动态地重新认证所述经认证的应用程序的完整性,其中基于预加载在所述安全模块中的与所述应用程序相关联的所述信息以及基于从所述应用程序新获得的信息,来生成所述第二密码绑定。
3.根据权利要求1所述的模块,其中所述安全模块还包括:
非暂时性介质,其由处理单元可读取以存储用于引导所述处理单元执行以下操作的指令:
提供密码沙箱,所述密码沙箱包括虚拟密码机以及在所述密码沙箱内的防篡改虚拟层,所述虚拟密码机执行包括解密虚拟机代码的密码操作,所述防篡改虚拟层用于防止密码操作受到未授权观察者的影响。
4.根据权利要求1或2所述的模块,其中,由所述识别模块在所述应用程序和所述安全模块之间建立所述第一密码绑定包括:
所述识别模块被配置为:
从所述应用程序接收应用程序校验和,其中,基于所述应用程序的源代码、所述应用程序的二进制和/或所述应用程序的编程流,从所述应用程序导出所述应用程序校验和;
从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信校验和;以及
基于从所述应用程序接收的所述应用程序校验和以及所述检索到的可信校验和,来生成所述第一密码绑定。
5.根据权利要求4所述的模块,其中,由所述应用程序生成所述应用程序校验和包括:所述应用程序被配置为利用SHA-256散列函数来对所述应用程序的所述源代码进行散列操作,以生成所述应用程序校验和。
6.根据权利要求1或2所述的模块,其中,由所述识别模块在所述应用程序和所述安全模块之间建立所述第一密码绑定包括:
所述识别模块被配置为:
从所述应用程序接收与所述应用程序相关联的数字签名,其中在每次编译所述应用程序的源代码时使用对所述应用程序唯一的私钥对所述应用程序的源代码进行签名时,生成所述数字签名;
从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信公钥;以及
基于从所述应用程序接收的所述数字签名和与所述应用程序相关联的所检索的可信公钥,来生成所述第一密码绑定。
7.根据权利要求6所述的模块,其中,所述识别模块还被配置为:
从所述应用程序接收应用程序校验和,其中基于所述应用程序的源代码从所述应用程序导出所述应用程序校验和;
从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信校验和;以及
基于从所述应用程序接收的所述应用程序校验和、所述检索到的可信校验和、所述接收到的数字签名和所述检索到的可信公钥,重新生成所述第一密码绑定。
8.根据权利要求4、5或6中任一项所述的模块,其中由所述识别节点基于所述第一密码绑定对所述应用程序的所述完整性的所述认证包括:所述识别节点被配置为当从所述密码绑定确定从所述应用程序获得的信息与预加载在所述安全模块中的与所述应用程序相关联的所述信息匹配时,认证所述应用程序的所述完整性。
9.根据权利要求6所述的模块,其中,由所述识别模块对所述经认证的应用程序的动作的处理包括:
所述识别模块被配置为:
使用密码密钥签名算法,使用对所述应用程序唯一的私钥来签名所述动作;以及
将所述经签名的动作和检索到的证书链传送到另一应用程序,由此在接收到所述经签名的动作和所述证书链后,所述另一应用程序被配置为基于接收到的证书链来验证所述经签名的动作。
10.根据权利要求6所述的模块,其中所述动作包括由另一应用程序签名的请求和证书链,由此所述识别模块处理用于所述经认证的应用程序的所述动作包括:
所述识别模块被配置为:
基于所述证书链来验证所述经签名的请求;
当确定所述经签名的请求已被验证时,执行所述请求内包含的指令;
基于所执行的指令的结果来构造响应;
使用对于所述应用程序唯一的私钥来签名所述响应;
对所述经签名的响应加密,并将加密的经签名的响应传送到所述另一应用程序。
11.根据权利要求1所述的模块,其中,由所述识别模块处理用于所述经认证的应用程序的所述动作包括:
所述识别模块被配置为:
基于所述动作的要求,从所述安全模块内设置的可信存储模块检索信任属性,并且其中,由已证明所述应用程序有资格被给予所述属性的可信第三方签名所述信任属性;
基于检索到的信任属性,生成响应;以及
将所生成的响应发送到另一应用程序,其中,在接收到所生成的响应时,所述另一应用程序被配置为使用包含在所述响应内的所述信任属性来执行安全事务。
12.一种用于使用根据权利要求1或2所述的安全模块在第一计算应用程序和第二计算应用程序之间建立相互信任的***,所述第一计算应用程序和所述第二计算应用程序设置在用户的计算设备的标准操作***内,其中,所述应用程序包括所述第一计算应用程序,并且由此所述安全模块通信地连接到所述第一计算应用程序,所述***包括:
所述第二计算应用程序被配置为向所述第一计算应用程序发送认证请求;
所述第一计算应用程序被配置为:
当来自所述第二计算应用程序的所述认证请求被所述第一计算应用程序接收时,使用所述安全模块认证所述第一计算应用程序;
当所述第一计算应用程序已被所述安全模块认证时,生成验证响应;以及
将所述验证响应发送到所述第二计算应用程序,其中所述第二计算应用程序被配置为使用所述验证响应来建立所述第一计算应用程序和所述第二计算应用程序之间的所述相互信任。
13.根据权利要求12所述的***,其中,所述第二计算应用程序被配置为:
当所述第二计算应用程序从接收到的验证响应确定所述第一计算应用程序已经被认证时,与所述第一计算应用程序共享安全数据。
14.一种用于使用根据权利要求1或2所述的安全模块在第三计算应用程序和绑定到用户的计算设备的信任元件之间建立相互信任的***,所述第三计算应用程序设置在所述用户的计算设备的标准操作***内,其中所述应用程序包括所述第三计算应用程序,并且由此所述安全模块通信地连接到所述第三计算应用程序,所述***包括:
所述信任元件被配置为向所述第三计算应用程序发送认证请求;
所述第三计算应用程序被配置为:
当来自所述信任元件的所述认证请求被所述第三计算应用程序接收时,使用所述安全模块认证所述第三计算应用程序;
当所述第三计算应用程序已被所述安全模块认证时,生成验证响应;以及
将所述验证响应发送到所述信任元件,其中所述信任元件被配置为使用所述验证响应来建立所述第三计算应用程序和所述信任元件之间的所述相互信任。
15.一种用于使用根据权利要求1或2所述的安全模块在第四计算应用程序与第五计算应用程序之间建立相互信任的***,所述第四计算应用程序设置在所述用户的计算设备的标准操作***内,其中所述应用程序包括所述第四计算应用程序,并且由此所述安全模块通信地连接到所述第四计算应用程序,所述***包括:
所述第五计算应用程序被配置为向所述第四计算应用程序发送认证请求;
所述第四计算应用程序被配置为:
当来自所述第五计算应用程序的所述认证请求被所述第四计算应用程序接收时,使用所述安全模块认证所述第四计算应用程序;
当所述第四计算应用程序已被所述安全模块认证时,生成验证响应;以及
将所述验证响应发送到所述第五计算应用程序,其中所述第五计算应用程序被配置为使用所述验证响应来建立所述第四计算应用程序和所述第五计算应用程序之间的所述相互信任。
16.一种用于证明在计算设备的标准操作***内设置的应用程序的真实性的方法,所述方法包括以下步骤:
当在所述应用程序和安全模块之间建立通信时,使用所述安全模块在所述应用程序和所述安全模块之间建立第一密码绑定,由此基于预加载在所述安全模块中的与所述应用程序相关联的信息和基于从所述应用程序获得的信息,来生成所述第一密码绑定;
使用所述安全模块,基于所述第一密码绑定,来认证所述应用程序的完整性;以及
使用所述安全模块处理所述经认证的应用程序的动作。
17.根据权利要求16所述的方法,其中所述方法还包括以下步骤:使用所述安全模块,基于第二密码绑定,动态地重新认证所述经认证的应用程序的完整性,其中基于预加载在所述安全模块中的与所述应用程序相关联的所述信息和从所述应用程序新获得的信息,生成所述第二密码绑定。
18.根据权利要求16所述的方法,其中,所述安全模块包括:
非暂时性介质,其由处理单元可读取以存储用于引导所述处理单元执行以下操作的指令:
提供密码沙箱,所述密码沙箱包括虚拟密码机以及在所述密码沙箱内的防篡改虚拟层,所述虚拟密码机执行包括解密虚拟机代码的密码操作,所述防篡改虚拟层用于防止密码操作受到未授权观察者的影响。
19.根据权利要求16或17所述的方法,其中在所述应用程序和所述安全模块之间建立所述第一密码绑定的步骤包括以下步骤:
使用所述安全模块,从所述应用程序接收应用程序校验和,其中,基于所述应用程序的源代码、所述应用程序的二进制和/或所述应用程序的编程流,从所述应用程序导出所述应用程序校验和;
使用所述安全模块,从所述安全模块中设置的可信存储模块检索与所述应用程序相关联的可信校验和;以及
使用所述安全模块,基于从所述应用程序接收的所述应用程序校验和以及所述检索到的可信校验和,来生成所述第一密码绑定。
20.根据权利要求19所述的方法,其中,由所述应用程序生成所述应用程序校验和包括:所述应用程序被配置为利用SHA-256散列函数来对所述应用程序的所述源代码进行散列操作,以生成所述应用程序校验和。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SG10202101434Y | 2021-02-10 | ||
SG10202101434Y | 2021-02-10 | ||
PCT/SG2022/050063 WO2022173373A1 (en) | 2021-02-10 | 2022-02-08 | Secure module and method for app-to-app mutual trust through app-based identity |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117063174A true CN117063174A (zh) | 2023-11-14 |
Family
ID=82838893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280014162.3A Pending CN117063174A (zh) | 2021-02-10 | 2022-02-08 | 用于通过基于app的身份的app间相互信任的安全模块及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240113898A1 (zh) |
EP (1) | EP4292000A1 (zh) |
CN (1) | CN117063174A (zh) |
AU (1) | AU2022218907A1 (zh) |
WO (1) | WO2022173373A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116436681B (zh) * | 2023-04-25 | 2024-01-02 | 上海物盾信息科技有限公司 | 一种基于TrustZone的安全隔离***、方法、终端及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10798077B1 (en) * | 2015-01-23 | 2020-10-06 | Hewlett-Packard Development Company, L.P. | Securely authenticating untrusted operating environments |
CN107247902B (zh) * | 2017-05-10 | 2021-07-06 | 深信服科技股份有限公司 | 恶意软件分类***及方法 |
US11170096B2 (en) * | 2017-10-23 | 2021-11-09 | L3 Technologies, Inc. | Configurable internet isolation and security for mobile devices |
CN107864139B (zh) * | 2017-11-09 | 2020-05-12 | 北京科技大学 | 一种基于动态规则的密码学属性基访问控制方法与*** |
CN112202710B (zh) * | 2020-08-25 | 2023-08-04 | 奇安信科技集团股份有限公司 | 一种防止数据泄露的方法、装置、电子设备和存储介质 |
-
2022
- 2022-02-08 AU AU2022218907A patent/AU2022218907A1/en active Pending
- 2022-02-08 WO PCT/SG2022/050063 patent/WO2022173373A1/en active Application Filing
- 2022-02-08 US US18/276,490 patent/US20240113898A1/en active Pending
- 2022-02-08 EP EP22753079.7A patent/EP4292000A1/en active Pending
- 2022-02-08 CN CN202280014162.3A patent/CN117063174A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022173373A1 (en) | 2022-08-18 |
US20240113898A1 (en) | 2024-04-04 |
EP4292000A1 (en) | 2023-12-20 |
AU2022218907A1 (en) | 2023-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8112787B2 (en) | System and method for securing a credential via user and server verification | |
EP3061027B1 (en) | Verifying the security of a remote server | |
US7526649B2 (en) | Session key exchange | |
US9325708B2 (en) | Secure access to data in a device | |
US20160080157A1 (en) | Network authentication method for secure electronic transactions | |
US20150310427A1 (en) | Method, apparatus, and system for generating transaction-signing one-time password | |
CN103051451A (zh) | 安全托管执行环境的加密认证 | |
JP2004265026A (ja) | アプリケーション認証システムと装置 | |
JP2004508619A (ja) | トラステッド・デバイス | |
WO2021062020A1 (en) | Non-custodial tool for building decentralized computer applications | |
CN108496323B (zh) | 一种证书导入方法及终端 | |
CN111639325B (zh) | 基于开放平台的商户认证方法、装置、设备和存储介质 | |
US20120233456A1 (en) | Method for securely interacting with a security element | |
KR102012262B1 (ko) | 키 관리 방법 및 fido 소프트웨어 인증장치 | |
CN116458117A (zh) | 安全数字签名 | |
CN112765637A (zh) | 数据处理方法、密码服务装置和电子设备 | |
EP3133791B1 (en) | Double authentication system for electronically signed documents | |
CN111062059B (zh) | 用于业务处理的方法和装置 | |
WO2011141579A2 (en) | System and method for providing security for cloud computing resources using portable security devices | |
Cooijmans et al. | Secure key storage and secure computation in Android | |
KR20070059891A (ko) | 어플리케이션 인증 보안 시스템 및 그 인증 보안 방법 | |
US20240113898A1 (en) | Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity | |
US7788483B1 (en) | Method and apparatus of identifying and enabling of functions of a trusted platform module device | |
KR102547682B1 (ko) | Puf기반 otp를 이용하여 사용자 인증을 지원하는 서버 및 그 동작 방법 | |
US12034851B2 (en) | Transaction security techniques |
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 |