CN110912684B - 用于加密和解密的方法、系统和计算机可读介质 - Google Patents

用于加密和解密的方法、系统和计算机可读介质 Download PDF

Info

Publication number
CN110912684B
CN110912684B CN201910869920.XA CN201910869920A CN110912684B CN 110912684 B CN110912684 B CN 110912684B CN 201910869920 A CN201910869920 A CN 201910869920A CN 110912684 B CN110912684 B CN 110912684B
Authority
CN
China
Prior art keywords
key
server
root secret
user computing
root
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.)
Active
Application number
CN201910869920.XA
Other languages
English (en)
Other versions
CN110912684A (zh
Inventor
林岳勋
高威
苏志刚
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.)
Beijing Jingdong Shangke Information Technology Co Ltd
JD com American Technologies Corp
Original Assignee
Beijing Jingdong Shangke Information Technology Co Ltd
JD com American Technologies Corp
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 Beijing Jingdong Shangke Information Technology Co Ltd, JD com American Technologies Corp filed Critical Beijing Jingdong Shangke Information Technology Co Ltd
Publication of CN110912684A publication Critical patent/CN110912684A/zh
Application granted granted Critical
Publication of CN110912684B publication Critical patent/CN110912684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • 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
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/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/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
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic 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 time stamps, e.g. generation of time stamps

Landscapes

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

Abstract

一种用于加密和解密的方法和系统。该系统包括用户计算设备、根秘密服务器和后端服务器。根秘密服务器具有根秘密代码,并且当接收到用户计算设备的指纹时,使用指纹计算针对该设备的设备秘密代码。当需要对敏感数据进行加密时,用户计算设备基于设备秘密代码和数据信息来计算针对数据的数据密钥,并对数据进行加密。后端服务器从根秘密服务器获取根秘密代码,并且响应于接收到加密数据,获取数据信息并计算数据密钥以对数据进行解密。类似地,后端服务器可以对数据进行加密,并且用户计算设备可以对数据进行解密。根秘密代码、设备代码和数据密钥形成三级加密机制。

Description

用于加密和解密的方法、系统和计算机可读介质
相关申请的交叉引用
在本发明的描述中引用和讨论了一些参考文献,可以包括专利、专利申请和各种公开。提供对这些参考文献的引用和/或讨论仅仅是为了阐明本公开的描述,而不是承认任何这样的参考文献是针对本文所述的公开内容的“现有技术”。本说明书中引用和讨论的所有参考文献整体均以引用的方式并入本文中,其程度如同每篇参考文献单独以引用方式并入。
技术领域
本公开总体涉及基于设备指纹的认证加密,并且更具体地涉及用于基于移动设备的指纹的认证应用层加密方法的系统和方法。
背景技术
本文提供的背景技术描述是为了总体上呈现本公开的上下文。在此背景技术部分描述的程度上当前指定的发明人的工作以及描述中的在提交时可以不被描述为现有技术的方面既不明确也不暗示地被认为是针对现有技术的现有技术。。
如安全套接字层(SSL)/传输层安全性(TLS)或超文本传输协议安全(HTTPS)之类的当前传输层或应用层加密标准允许客户端(即移动应用(应用程序))用使用预安装的信任证书授权机构(CA)签署的嵌入式服务器证书对服务器侧进行认证。在相反侧处,服务器仅能基于一些昂贵的机制(例如,帐户和密码验证、安全令牌、甚至是难以管理和部署的客户端证书)来对客户端进行认证。在可以支持数十亿设备的电子商务平台下,密钥存储要求将对服务器侧产生巨大影响。
另一方面,通过HTTP连接传送的明码文本数据未受保护(除非我们采用安全超文本传输协议(HTTPS)),在发生一些极端情况下,这会暴露巨大的数据安全风险,例如,负载平衡会使得业务从HTTPS降低为HTTP。传统上,HTTPS是作为HTTP扩展以通过网络提供安全通信的方式。然而,HTTPS增加了开销并增加了网络上的额外负载,因为 (1)它需要对所有传输层业务进行加密,包括需要保护的敏感数据和不需要保护的不敏感数据;以及(2)在执行握手之前它需要客户端侧凭证 (例如,具有私钥对或预安装密钥的证书)、登录帐户/密码就绪。
因此,本领域中存在未解决的需求,即在客户端和服务器之间提供轻量且易于使用的密钥管理。
发明内容
在某些方面,本发明涉及一种用于加密和解密的方法。在某些实施方案中,该方法包括:
由用户计算设备将用户计算设备的设备指纹发送到根秘密服务器,其中根秘密服务器具有根秘密代码,并且根秘密服务器被配置为响应于接收到设备指纹,使用设备指纹和根秘密代码计算设备秘密代码,并且将设备秘密代码发送到用户计算设备;
由用户计算设备使用设备秘密代码、设备指纹、产生数据的应用的名称以及产生数据的时间戳来计算数据密钥;
由用户计算设备使用数据密钥对数据进行加密以形成加密数据;
由用户计算设备用设备指纹、应用的名称和时间戳对加密数据进行编码以形成编码数据分组,并将编码数据分组发送到后端服务器,
其中后端服务器被配置为:
从根秘密服务器获得根秘密代码;
响应于接收到编码数据分组,对编码数据分组进行解码以获得加密数据分组;
使用从根秘密服务器获得的根秘密代码以及来自编码数据分组的设备指纹、应用的名称以及时间戳来计算数据密钥;以及
使用数据密钥对加密数据分组进行解密。
在某些实施例中,后端服务器被配置为通过以下方式计算数据密钥:使用根秘密代码和设备指纹计算设备秘密代码,并且使用设备秘密代码、设备指纹、应用的名称和时间戳来计算数据密钥。
在某些实施例中,上述指纹是指纹的哈希值。
在某些实施例中,该方法还包括:在发送设备指纹的步骤之前,由用户计算设备使用从根秘密服务器获取的公钥对设备指纹进行加密,其中根秘密服务器还被配置为由根秘密服务器使用与公钥相关联的私钥对指纹进行解密,并且公钥和私钥形成非对称密钥对。
在某些实施例中,根秘密服务器还被配置为在计算设备秘密代码之前,使用指纹验证服务来对设备指纹进行验证。
在某些实施例中,根秘密服务器还被配置为:在将设备秘密代码发送到用户计算设备之前,使用由用户计算设备提供的随机产生的密钥来对设备秘密代码进行加密,并且该方法还包括:在由用户计算设备计算数据密钥的步骤之前执行以下操作:由用户计算设备使用随机产生的密钥对从根秘密服务器接收的加密的设备秘密代码进行解密,并将所获得的设备秘密代码存储在用户计算设备上,其中随机产生的密钥是对称密钥。
在某些实施例中,根秘密服务器还被配置为从密钥管理服务获得管理密钥;
后端服务器还被配置为在从根秘密服务器获得根秘密代码之前执行以下操作:从密钥管理服务获得管理密钥;向根秘密服务器发送用于请求根秘密代码的请求,该请求通过管理密钥而被加密,其中根秘密服务器还被配置为使用管理密钥对该请求进行解密,准备具有根秘密代码并通过管理密钥而被加密的响应,并将响应发送到后端服务器;以及,接收响应并使用管理密钥对响应进行解密以获得根秘密代码;并且
管理密钥是对称密钥。
在某些实施例中,数据密钥是对称密钥,并且通过JavaScript对象表示法(JSON)对加密数据分组进行编码。
在某些方面,本发明涉及一种存储计算机可执行代码的非暂时性计算机可读介质。当在用户计算设备的处理器处执行计算机可执行代码时,计算机可执行代码被配置为执行上述方法。
在某些方面,本发明涉及一种用于加密和解密的方法。该方法包括:
由后端服务器从根秘密服务器获得根秘密代码;
响应于从用户计算设备接收到编码数据分组,由后端服务器对编码数据分组进行解码以从编码数据分组获得加密数据分组、设备指纹、应用的名称和时间戳;
使用从根秘密服务器获得的根秘密代码以及来自编码数据分组的设备指纹、应用的名称和时间戳来计算数据密钥;以及
由后端服务器使用所计算的数据密钥对加密数据分组进行解密,
其中,用户计算设备被配置为将用户计算设备的设备指纹发送到根秘密服务器,使用从根秘密服务器接收的设备秘密代码、设备指纹、产生数据的应用的名称以及产生数据的时间戳来计算数据密钥,使用数据密钥对数据进行加密以形成加密数据,用设备指纹、应用的名称、时间戳对加密数据进行编码以形成编码数据分组,并将编码数据分组发送到后端服务器;并且
其中根秘密服务器被配置为响应于接收到设备指纹,使用设备指纹和根秘密代码来计算设备秘密代码,并将设备秘密代码发送到用户计算设备。
在某些实施例中,上述设备指纹是设备指纹的哈希值。
在某些实施例中,用户计算设备还被配置为使用从根秘密服务器获取的公钥来设备指纹进行加密,根秘密服务器还被配置为由根秘密服务器使用与公钥相关联的私钥对设备指纹进行解密,并且公钥和私钥形成非对称密钥对。
在某些实施例中,根秘密服务器还被配置为在计算设备秘密代码之前,使用指纹验证服务来对设备指纹进行验证。
在某些实施例中,从用户计算设备发送到根秘密服务器的设备秘密代码请求包括随机产生的密钥,根秘密服务器在对设备秘密代码请求进行解密时获得密钥,并且根秘密服务器还被配置为在将设备秘密代码发送到用户计算设备之前,使用由用户计算设备提供的密钥对设备秘密代码进行加密,并且该方法还包括:
由用户计算设备使用随机产生的密钥对从根秘密服务器接收的加密的设备秘密代码进行解密,并将所获得的设备秘密代码存储在用户计算设备上,其中随机产生的密钥是对称密钥。
在某些实施例中,该方法还包括:
由后端服务器从密钥管理服务获得管理密钥;
由后端服务器向根秘密服务器发送后端服务器用于请求根秘密代码的请求,该请求通过管理密钥而被加密,其中根秘密服务器被配置为从密钥管理服务获得管理密钥,使用管理密钥对请求进行解密,准备具有根秘密代码并通过管理密钥而被加密的响应,并将响应发送到后端服务器;
由后端服务器接收响应;以及
由后端服务器使用管理密钥对响应进行解密以获得根秘密代码,
其中管理密钥是对称密钥。
在某些实施例中,数据密钥是对称密钥,并且其中通过JavaScript 对象表示法(JSON)对加密数据分组进行编码。
在某些方面,本公开涉及一种存储计算机可执行代码的非暂时性计算机可读介质,其中当在后端服务器的处理器处执行计算机可执行代码时,计算机可执行代码被配置为执行上述方法。
在某些方面,本公开涉及一种用于加密和解密的系统。在某些实施例中,该系统包括用户计算设备、具有根秘密代码的根秘密服务器、以及后端服务器。用户计算设备、根秘密服务器和后端服务器被配置为如上所述的那样执行它们的功能。
通过结合以下附图及其说明文字对优选实施例的以下描述,本发明的这些和其他方面将显而易见,但是在不脱离本公开的新颖构思的精神和范围的情况下,可以在本文中进行变化和修改。
附图说明
附图示出了本公开的一个或多个实施例,并与书面描述一起用于说明本公开的原理。在任何可能的情况下,贯穿附图,相同的附图标记用于指代相同或类似的实施例的元件。
图1示意性地示出了根据本公开的某些实施例的密钥层次结构。
图2示意性地示出了根据本公开的某些实施例的基于设备指纹的认证加密系统。
图3示意性地描绘了根据本公开的某些实施例的用户计算设备。
图4示意性地描绘了根据本公开的某些实施例的根秘密服务器。
图5示意性地描绘了根据本公开的某些实施例的后端服务器。
图6示意性地示出了根据本公开的某些实施例的通过与根秘密服务通信的用户计算设备的部署。
图7示意性地示出了根据本公开的某些实施例的通过与根秘密服务通信的后端服务的部署。
图8示意性地示出了在图6和图7的部署之后的用户计算设备和后端服务之间的数据传输。
图9A示意性地示出了根据本公开的某些实施例的设备秘密代码 (secret code)请求(DSecretEnvRequest)分组的格式、以及 DSecretEnvRequest的示例。
图9B示意性地示出了根据本公开的某些实施例的设备秘密代码请求的实际明码文本(DSecretRequest_plain)的格式、以及 DSecretRequest_plain的示例。
图10示意性地示出了根据本公开的某些实施例的响应于接收到针对设备秘密代码的请求而来自根秘密服务的响应(DSecretResponse)的格式及其示例。
图11A示意性地示出了根据本公开的某些实施例的加密根秘密代码请求(RSecretEnvRequest)分组的格式、以及RSecretEnvRequest的示例。
图11b示意性地示出了根据本公开的某些实施例的根秘密代码请求(RSecretRequest)分组的格式、以及RSecretRequest的示例。
图12A示意性地示出了根据本公开的某些实施例的响应于根秘密代码请求的加密响应分组(RSecretEnvRespose)的格式、以及 RSecretEnvRespose的示例。
图12B示意性地示出了根据本公开的某些实施例的根秘密代码响应(RSecretResponse)分组的格式、以及RSecretResponse的示例。
图13示意性地示出了根据本公开的某些实施例的编码数据分组(EncodedDataPacket)的格式、以及EncodedDataPacket的示例。
具体实施方式
在以下示例中更具体地描述了本公开,这些示例仅用于说明,因为其中的许多修改和变化对于本领域技术人员来说是显而易见的。现在,详细描述本公开的各种实施例。参考附图,在所有视图中相同的附图标记指示相同的组件。如本文的描述和随后的权利要求中所使用的,“一”、“一个”和“该”的含义包括复数引用,除非上下文另有明确说明。此外,如本文的描述和随后的权利要求中所使用的,“在...中”的含义包括“在...中”和“在...上”,除非上下文另有明确说明。此外,为了方便读者,可以在说明书中使用标题或副标题,这不会影响本公开的范围。附加地,本说明书中使用的一些术语在下面更具体地定义。
本说明书中使用的术语通常在本领域、在本公开的上下文中、以及在使用每个术语的特定上下文中具有其普通含义。用于描述本公开的某些术语在下文或说明书中的其他地方讨论,以向从业者提供关于本公开的描述的附加指导。应当理解,可以以多于一种方式描述相同的事情。因此,备选语言和同义词可以用于本文所讨论的任何一个或多个术语,并且对于术语是否在本文中详细阐述或讨论也没有任何特殊意义。提供了某些术语的同义词。一个或多个同义词的叙述不排除其他同义词的使用。本说明书中任何地方的示例(包括本文中讨论的任何术语的示例) 的使用仅是说明性的,并且决不限制本公开或任何示例性术语的范围和含义。同样地,本公开不限于本说明书中给出的各种实施例。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语) 具有与本公开所属领域的普通技术人员通常所理解的含义相同的含义。还将理解的是,诸如在常用词典中定义的术语应被解释为其含义与在相关技术和本申请的上下文中的含义相同,而不应将其解释为理想的或过于正式的含义,除非本文明确如此定义。
如本文所用,“大约”、“约”、“实质上”或“近似地”通常应表示在给定值或范围的20%(优选10%,更优选5%)的范围内。本文给出的数值是近似的,这意味着如果没有明确说明,可以推断术语“大约”、“约”、“实质上”或“近似地”。
如本文所使用的,“多个”意味着两个或更多个。
如本文所使用的,术语“包含”、“包括”、“携带”、“具有”、“含有”、“涉及”等应理解为开放式的,即,意味着包括但不限于如此。
如本文所使用的,短语“A、B和C中的至少一个”应该被解释为使用非排他逻辑“或(OR)”表示逻辑(A或B或C)。应当理解,方法内的一个或多个步骤可以以不同的顺序(或同时)执行,而不会改变本公开的原理。如本文所使用的,术语“和/或”包括关联列出的项目中的一个或多个项目的任意和所有组合。
如本文所使用的,术语“模块”可以指代如下项、可以是如下项的一部分、或者可以包括如下项:专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享、专用或组);提供所述功能的其他合适的硬件组件;或者上述各项中的一些或全部的组合(例如,在片上系统中)。术语“模块”可以包括存储由处理器执行的代码的存储器(共享、专用或组)。
如本文所使用的,术语“代码”可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类和/或对象。如上所使用的,术语“共享”意味着可以使用单个(共享)处理器来执行来自多个模块的一些或所有代码。此外,来自多个模块的一些或所有代码可以由单个(共享) 存储器存储。如上所使用的,术语“组”意味着可以使用一组处理器来执行来自单个模块的一些或所有代码。此外,可以使用一组存储器来存储来自单个模块的一些或所有代码。
如本文所使用的,术语“接口”通常指代在组件之间交互点处的用于在组件之间执行数据通信的通信工具或装置。通常,接口可以适用于硬件和软件这两个级别,并且可以是单向或双向接口。物理硬件接口的示例可以包括电连接器、总线、端口、电缆、终端和其他I/O设备或组件。与接口通信的组件可以是例如计算机系统的多个组件或外围设备。
术语“HMAC”是基于哈希的消息认证码的缩写。它是由加密哈希函数和秘密加密密钥计算的代码。术语“KDF”是密钥导出函数的缩写。它是用于利用一些参数作为输入(例如,时间戳数字、字节数组和字符串)来计算加密密钥的公式。术语“RSA”是称为非对称加密的公钥和私钥加密算法。术语“指纹”指代设备指纹,其是关于设备收集的一条信息,例如移动设备的网络媒体访问控制(MAC)地址或国际移动设备标识(IMEI)。它可以用于标识从其收集指纹的设备。
本公开涉及计算机系统。如附图中所示,计算机组件可以包括被示为实线框的物理硬件组件、以及被示为虚线框的虚拟软件组件。除非另有说明,否则本领域普通技术人员将理解,这些计算机组件可以以以但不限于软件、固件或硬件组件或其组合的形式来实现。
本文描述的装置、系统和方法可以通过由一个或多个处理器执行的一个或多个计算机程序实现。计算机程序包括存储在非暂时性有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括存储的数据。非暂时性有形计算机可读介质的非限制性示例是非易失性存储器、磁存储设备和光存储设备。
现在将在下文中参考附图更全面地描述本公开,附图中示出了本公开的实施例。然而,本公开可以以许多不同的形式体现,并且不应该被解释为限于本文阐述的实施例;相反,提供这些实施例是为了使本公开全面和完整,并且将本公开的范围完全传达给本领域技术人员。
在某些方面中,本公开提供了一种用于移动设备的综合解决方案,尤其是用于移动应用以基于其设备指纹建立敏感数据保护而不涉及服务器侧和移动侧两者上的大量密钥管理的解决方案。图1示意性地示出了根据本发明的某些实施例的密钥层次结构。密钥层次结构用于对数据进行加密,并且通过加密保证安全性。如图1中所示,层次结构包括高级根秘密或根秘密代码(RSecret)102、中间级设备秘密或设备秘密代码 (DSecret)104、以及低级数据密钥(D_u)106。RSecret 102存储在具有最高安全性的硬件安全模块(HSM)中。它是导出所有其他密钥的发祥地(oracle)。存在从RSecret 102导出的N个DSecret D_1(104-1)、 D_2(104-2)、…、D_N(104-N)。DSecret D_1至D_N中的每一个对于对应设备(例如,移动设备)是唯一的。每个DSecret 104都是根据 RSecret 102和对应设备的指纹而导出的,该指纹唯一地标识移动设备。对于具有DSecret的每个设备,用于对敏感数据进行加密的所有数据密钥都是从该DSecret导出的。D_u是用于对通过例如HTTP传输的数据进行加密的密钥。当产生数据密钥时,每个D_u都是根据对应的DSecret 和时间戳值而导出的。当移动设备或后端服务在发送数据之前需要对该数据进行加密或者在接收到加密的数据之后对该加密的数据进行解密时,按需产生D_u。因此,每个D_u对于每个传输的数据分组是唯一的,这保证了最高的安全级别。如图1中所示,DSecret D_1用于导出数据密钥D_1{1}(106-1)、D_1{2}(106-2)、…、D_1{k}(106-k);DSecret D_2用于导出数据密钥D_2{1}(108-1)、D_2{2}(108-2)、…、D_2{p} (108-p);……;DSecret D_N用于导出数据密钥D_N{1}(110-1)、D_N{2}(110-2)、…、D_N{q}(110-q)。
图2示意性地示出了根据本公开的某些实施例的基于设备指纹的认证加密系统。如图2中所示,系统200包括用户计算设备210、根秘密服务器230、后端服务器250、以及可选的支持服务器270。支持服务器 270可以包括指纹验证服务器272和密钥管理服务器274。根秘密服务器 230提供根秘密服务(或RSecret服务),后端服务器250提供后端服务,指纹验证服务器272提供指纹验证服务,并且密钥管理服务器274提供密钥管理服务。为了便于描述,根秘密服务器和根秘密服务、后端服务器和后端服务、指纹验证服务器和指纹验证服务、以及密钥管理服务器和密钥管理服务可以在本公开中分别交替使用。
用户计算设备210、根秘密服务器230和后端服务器250例如通过网络或其他类型的接口彼此通信。根秘密服务器230和后端服务器250 经由网络或其他类型的接口与支持服务器270通信。在某些实施例中,上述网络中的每一个可以是有线或无线网络,并且可以是各种形式的(例如,公共网络和专用网络)。网络的示例可以包括但不限于局域网(LAN)或包括互联网的广域网(WAN)。在某些实施例中,可以应用两个或更多个不同的网络和/或接口来连接设备210、230、250和270。在某些实施例中,网络还可以是系统接口或通用串行总线(USB)接口。
用户计算设备210可以是移动设备,其被配置为在其上执行客户端应用(应用程序)(
Figure BDA0002200692090000101
Figure BDA0002200692090000102
)。应用程序被配置为在操作时向由根秘密服务器230提供的RSecret服务请求DSecret。所操作的应用程序还被配置为在将数据传送到由后端服务器250提供的后端服务时对敏感数据进行加密。
根秘密服务器230提供RSecret服务,该服务是用于存储RSecret 的web服务。RSecret位于密钥层次结构的顶端。根秘密服务230被配置为当用户计算设备210请求其DSecret时产生DSecret并将DSecret提供给该用户计算设备210。根秘密服务230还被配置为向后端服务250提供RSecret。
后端服务器250被配置为提供后端服务。后端服务器服务250被配置为与在用户计算设备210上操作的应用程序交换数据。在应用程序和后端服务250之间传送的敏感数据需要被加密。
指纹验证服务器272被配置为提供指纹验证服务。指纹验证服务272 被配置为接收来自RSecret服务的请求,并验证存储在请求中的用户计算设备210的指纹是否有效,以便认证用户计算设备210的合法性。在某些实施例中,指纹是从设备信息本身提取的,设备信息例如为国际移动设备标识(IMEI)、预部署的硬件序列号、媒体访问控制(MAC)地址或来自用户计算设备210的应该是每个设备唯一的其他只读信息。
密钥管理服务器274被配置为提供密钥管理服务。在某些实施例中,密钥管理服务可以仅在RSecret服务和包括后端服务的所有服务器侧 (web服务)之间提供对称密钥管理。
在某些实施例中,根秘密服务器230和后端服务器250是单独的服务器。在某些实施例中,根秘密服务器230和后端服务器250可以是相同的服务器。在某些实施例中,根秘密服务器230和后端服务器位于云中。
图3示意性地描绘了根据本公开的某些实施例的用户计算设备。在某些实施例中,用户计算设备210可以是移动设备、平板电脑、云计算机、通用计算机、无头计算机、可穿戴设备或专用计算机,其提供在用户计算设备210上运行的应用程序。如图3中所示,用户计算设备210 可以包括但不限于处理器212、存储器214和存储设备216。在某些实施例中,用户计算设备210可以包括其他硬件组件和软件组件(未示出) 以执行对应的任务。这些硬件和软件组件的示例可以包括但不限于其他所需的存储器、接口、总线、输入/输出(I/O)模块或设备、网络接口和外围设备。
处理器212可以是被配置为控制用户计算设备210的操作的中央处理单元(CPU)。处理器212可以执行操作系统(OS)或用户计算设备 210的其他应用。在一些实施例中,用户计算设备210可以具有多于一个CPU作为处理器,诸如两个CPU、四个CPU、八个CPU或任何合适数量的CPU。存储器214可以是用于在用户计算设备210的操作期间存储数据和信息的易失性存储器(例如,随机存取存储器(RAM))。在某些实施例中,存储器214可以是易失性存储器阵列。在某些实施例中,用户计算设备210可以在多于一个的存储器214上运行。存储设备216 是用于存储OS(未示出)和用户计算设备210的其他应用的非易失性数据存储介质。存储设备216的示例可以包括非易失性存储器(例如,闪存、存储卡、USB驱动器、硬盘驱动器、软盘、光盘驱动器、固态驱动器(SSD))或任何其他类型的数据存储设备。在某些实施例中,存储没备216可以是本地存储设备、远程存储设备或云存储设备。在某些实施例中,用户计算设备210可以具有多个存储设备216,其可以是相同的存储设备或不同类型的存储设备,并且用户计算设备210的应用可以存储在用户计算设备210的一个或多个存储设备216中。
如图3中所示,存储设备216包括应用218。应用218被配置为从 RSecret服务230获得DSecret,并使用数据密钥与后端服务250传递加密数据。应用218包括启动模块220、DSecret请求模块222、DSecret 接收模块224、数据加密模块226和数据解密模块228等。
启动模块220被配置为启动并初始化应用218。
DSecret请求模块222被配置为在部署用户计算设备210期间并且在启动之后准备设备秘密请求DSecretEnvRequest分组,并且将 DSecretEnvRequest发送到RSecret服务230。在某些实施例中,DSecret 请求模块222被配置为读取设备指纹(Devinfo{u}),随机产生密钥X,获得RSecret服务230的公钥,使用从RSecret服务230获得的公钥对 Devinfo{u}和密钥X进行加密,并且对加密数据进行编码以形成DSecretEnvRequest。在某些实施例中,DSecretEnvRequest和明码 DSecretRequest分别具有图9A和图9B中所示的格式。在某些实施例中,加密后的DSecretEnvRequest的密文是C,并且C=Enc_{PubK} (Devinfo{u},X),其中PubK是由根秘密服务230提供的公钥,Devinfo{u} 是用户计算设备210的指纹,X是由用户计算设备提供的密钥(其可以是对称密钥),并且指纹Devinfo{u}和密钥X是明码DSecretRequest的主要组成部分。公钥可以是经认证的公钥,因为它可以由用户计算设备210 上的预定义/预加载的证书授权机构(CA)验证。公钥连同与公钥相关联地存储在根秘密服务230中的私钥一起形成非对称密钥对。在某些实施例中,公钥和私钥是预先分发的。在某些实施例中,密钥X是对称密钥。
DSecret接收模块224被配置为在从RSecret服务230接收到 DSecretResponse时,从DsecretResponse获取DSecret{u},并存储 DSecret{u}。DSecret{u}可以存储在DSecret接收模块224或存储设备216 中的专用存储模块中。在某些实施例中,DSecretResponse包括DSecret{u} 并且使用密钥X加密,并且DSecret接收模块224首先对DSecretResponse 进行解码和解密,然后获取DSecret{u}。在某些实施例中, DSecretResponse具有图10中所示的形式。在某些实施例中, DSecretResponse的密文是C′,并且DSecret接收模块224通过Dec_{X} (C′)=error,DSecret{u}对密文C′进行解密,以便获得DSecret{u}。在某些实施例中,当error值为0时,这指示用户计算设备210的指纹已经通过指纹验证服务272的验证,并且所计算的DSecret{u}是良好的,因此DSecret接收模块224可以将DSecret{u}存储在本地存储器中以供将来使用。否则,如果error值不是0,则用户计算设备210使用备份DSecret,其可以是在所有客户端计算机设备上普遍相同的硬编码值。
数据加密模块226被配置为在部署之后并且在操作期间,产生针对敏感数据的数据密钥,使用数据密钥对敏感数据进行加密,并利用相关信息对加密后的数据进行编码以形成编码数据分组 (EncodedDataPacket),并将EncodedDataPacket发送到后端设备250。在某些实施例中,数据加密模块226被配置为基于从RSecret服务230 接收并存储在用户计算设备210中的DSecret{u}来产生数据密钥。在某些实施例中,数据加密模块226使用产生分组时的时间戳值、设备信息的哈希值hdid(其中,hdid=H(Devinfo{u}))、应用218的名称以及 DSecret{u}构造数据密钥。在某些实施例中,EncodedDataPacket具有图 13中所示的格式,其中使用所构造的数据密钥对敏感数据进行加密,并将加密后的敏感数据作为字符串存储在“密码”字段中。
数据解密模块228被配置为在部署之后并且在操作期间从后端服务 250接收EncodedDataPacket,对EncodedDataPacket进行解码以获得加密数据、H(Devinfo{u})、时间戳、应用名称等,产生针对加密数据的数据密钥,并使用所产生的数据密钥对加密数据进行解密,以便获得嵌入在EncodedDataPacket中的敏感数据。在某些实施例中,数据解密模块 228被配置为基于DSecret{u}、设备信息的哈希值、在上述解码期间提取的或存储在用户计算设备210中的应用的名称来产生数据密钥。在某些实施例中,由后端服务250准备的EncodedDataPacket和由用户计算设备210准备的EncodedDataPacket具有相同的格式,如图13中所示。
图4示意性地描绘了根据本公开的某些实施例的根秘密服务器。在某些实施例中,根秘密服务器230可以是云计算机、服务器计算机、通用计算机或专用计算机,其分别将设备秘密代码(或设备秘密或DSecret) 和根秘密代码(或根秘密或RSecret)提供到用户计算设备210和服务器计算服务250。如图4中所示,根秘密服务器230包括但不限于处理器 232、存储器234和存储设备236。处理器232、存储器234和存储设备 236的描述类似于处理器212、存储器214和存储设备216的描述。但是用户计算设备210的硬件要求可以与根秘密服务器230的硬件要求不同,因为用户计算设备210通常针对一个或几个用户提供应用,而根秘密服务230通常针对大量用户计算设备提供服务。存储设备236包括根秘密管理器238。根秘密管理器238具有公钥模块240、DSecret模块242、指纹验证模块244、密钥取得模块246和根秘密模块248。
公钥模块240被配置为在从用户计算设备210接收到对公钥的请求时,向用户计算设备210提供公钥,使得用户计算设备210可以使用公钥来对设备秘密请求(即DsecretRequest)进行加密。在某些实施例中,公钥模块240是根秘密服务器230的证书。公钥模块240还被配置为在从用户计算设备210接收到加密的DSecretEnvRequest之后,对DSecretEnvRequest进行解码以获得解码的密文C(即 DSecretRequest_plain),使用与公钥相关联的私钥对DSecretRequest_plain 进行解密,并将解密后的请求提供给DSecret模块242。在某些实施例中,公钥模块240通过Dec{PrvK}(C)=Devinfo{u},X对DSecretRequest_plain 的密文C进行解密。即,通过使用私钥对密文C进行解密,获得用户计算设备210的指纹Devinfo{u}和由用户计算设备210产生的密钥X。然后,公钥模块240将Devinfo{u}和X发送到DSecret模块242。
DSecret模块242被配置为在从公钥模块240接收到解码和解密的DSecretRequest(特别是指纹Devinfo{u}和密钥X)以及从根秘密模块248 获取根秘密时,使用指纹验证模块244对指纹进行验证,计算用户计算设备210专用的DSecret{u},准备对DSecretRequest的响应,并将响应发送到用户计算设备210。为了对指纹进行验证,DSecret模块242被配置为将指纹Devinfo{u}发送到指纹验证模块244。在某些实施例中,公钥模块240可以将指纹Devinfo{u}直接发送到指纹验证模块244以进行验证。在从指纹验证模块244接收到指纹Devinfo{u}有效的验证结果之后, DSecret模块242被配置为使用公式DSecret{u}= KDF(Rsecret,H(Devinfo{u}))来产生DSecret{u},其中DSecret{u}是专用于发送对应的DsecretRequest的用户计算设备210的设备秘密代码;KDF 是密钥导出函数,它是用于利用一些参数(例如,时间戳数字、字节数组和字符串)作为输入来计算加密密钥的公式;RSecret是存储在根秘密服务中的根秘密代码;并且H(Devinfo{u})是用户计算设备210的指纹的哈希值。在某些实施例中,DSecret模块242还被配置为准备对DSecretRequest的响应,即DSecretResponse。在某些实施例中, DSecretResponse具有图10中所示的形式。加密后的DSecretResponse的密文是C′,并且C′=Enc{X}(error,DSecret{u}),其中X是用户计算设备 210提供的密钥,error是验证是否通过的状态,并且DSecret{u}是由根秘密服务230计算的专用于用户计算设备210的设备秘密代码。
指纹验证模块244被配置为在从DSecret模块242(或从公钥模块240)接收到用户计算设备210的指纹时,向指纹验证服务272发送验证请求以验证用户计算设备210的合法性,其中验证请求包括指纹;从指纹验证服务器272接收验证响应;并将验证结果发送到DSecret模块242。
密钥取得模块246被配置为从密钥管理服务274取得密钥。具体地,密钥取得模块246被配置为向密钥管理服务274发送密钥请求,使得密钥管理服务274将密钥发送回根秘密模块248。在某些实施例中,密钥管理服务274还可以将密钥发送回密钥取得模块246,并且密钥取得模块246中的密钥可由根秘密模块248访问。
根秘密模块248被配置为管理根秘密服务230的根秘密。在某些实施例中,管理可以包括存储一个或多个根秘密代码,并且可选地以预定时间间隔更新根秘密代码。在某些实施例中,管理还包括从后端服务250 接收针对根秘密代码的编码和加密的请求(RSecretEnvRequest),对 RSecretEnvRequest进行解码以获得加密的密文,使用所取得的密钥对加密的密文进行解密以获得请求,准备对解密的RSecretRequest的响应,使用所取得的密钥对响应进行加密,对加密后的响应进行编码以形成 RSecretEnvResponse,并将RSecretEnvResponse发送到后端服务250。在某些实施例中,管理还包括向DSecret模块242提供根秘密代码,使得 DSecret模块242可以计算专用于用户计算设备210的设备秘密代码。
图5示意性地描绘了根据本公开的某些实施例的后端服务器。在某些实施例中,后端服务器250可以是云计算机、服务器计算机、通用计算机或专用计算机,其向一个或多个用户计算设备210提供后端服务。如图5中所示,后端服务器250包括但不限于处理器252、存储器254 和存储设备256。处理器252、存储器254和存储设备256的描述类似于根秘密服务器230的处理器232、存储器234和存储设备236的描述。存储设备256包括密钥取得模块260、RSecret请求模块262、RSecret 接收模块264、数据加密模块266和数据解密模块268。
密钥取得模块260被配置为在后端服务250的初始化期间或者在操作期间以预定时间间隔利用密钥管理服务274对令牌进行验证或/和从密钥管理服务274取得密钥,使得密钥管理服务274将密钥发送到RSecret 请求模块262和RSecret接收模块264。在某些实施例中,密钥管理服务274还可以将密钥发送到密钥取得模块260,并且密钥取得模块260中的密钥可由RSecret请求模块262和RSecret接收模块264访问。
RSecret请求模块262被配置为在从密钥取得模块260接收到所取得的密钥时,准备根秘密请求,使用所取得的密钥对请求进行加密并对加密后的数据进行编码以形成编码和加密的根秘密请求 (RSecretEnvRequest),并将RSecretEnvRequest发送到根秘密服务器230。图11A和图11B分别示出了RSecretEnvRequest的示例和RSecretRequest 的示例。
RSecret接收模块264被配置为在从根秘密服务230接收到 RSecretEnvResponse时,对RSecretEnvResponse进行解码以获得加密文本,使用所取得的密钥对加密文本进行解密以获得解密的响应 (RSecretResponse),从RSecretResponse提取根秘密代码(RSecret),并将RSecret发送到数据加密模块266和数据解密模块268。在某些实施例中,RSecret存储在RSecret模块264中并且可由数据加密模块266和数据解密模块268访问。
数据加密模块266被配置为在从数据解密模块268接收到解码和解密的数据分组以及对应的响应(其包括设备指纹的哈希值、客户端应用程序的名称、对敏感数据的响应,并且可选地包括分组的时间戳),计算针对响应的数据密钥,对敏感响应进行加密,并对加密的响应进行编码以形成编码和加密的数据分组(EncodedDataPacket),并将EncodedDataPacket发送到用户计算设备210。在某些实施例中,由后端服务250准备的EncodedDataPacket具有图13中所示的格式。
当数据加密模块266准备响应的EncodedDataPacket时,它需要数据密钥(D_u{t})以用于加密。在某些实施例中,数据加密模块266被配置为以两个步骤计算D_u{t}。首先,数据加密模块266使用从数据解密模块268获得的设备指纹的哈希值和从RSecret接收模块264接收的根秘密代码来计算设备秘密代码:DSecret{u}= KDF(Rsecret,H(Devinfo{u}))。其次,数据加密模块266使用DSecret{u}、设备指纹的哈希值、客户端应用(应用218)名称和产生该数据分组的时间戳(当前时间)来计算数据密钥:D_u{t}=KDF(DSecret{u},H(Devinfo{u},appName,t)。数据加密模块266使用数据密钥D_u{t}来对响应进行加密,并且对加密的响应进行编码以形成编码和加密的数据分组,即EncodedDataPacket。在某些实施例中,敏感数据可能不是响应,而是用于与用户计算设备210的应用218通信的其他类型的数据,并且数据加密模块266仍然可以类似地对EncodedDataPacket进行加密和编码,只要数据加密模块266通过先前与用户计算设备210的通信获得了设备指纹的哈希值和应用程序的名称。
数据解密模块268被配置为在从用户计算设备210接收到编码和加密的数据分组(EncodedDataPacket)时,对EncodedDataPacket进行解码以获得用户计算设备210的指纹的哈希值、产生敏感数据的应用程序 (应用218)的名称、EncodedDataPacket的时间戳和加密的敏感数据,对加密的敏感数据进行解密,准备响应,并将这些信息发送到数据加密模块266。在某些实施例中,由数据解密模块268接收的 EncodedDataPacket具有图13中所示的格式。
当数据解密模块268从用户计算设备210接收到EncodedDataPacket 时,它需要与该数据分组相对应的数据密钥(D_u{t})以用于加密。在某些实施例中,数据解密模块268被配置为以两个步骤计算D_u{t}。首先,数据解密模块268对EncodedDataPacket进行解码以获得设备指纹的哈希值、客户端应用(应用218)的名称、用户计算设备何时产生数据分组的时间戳、以及加密的敏感数据,并且使用所获得的设备指纹的哈希值和从RSecret接收模块264接收的根秘密代码来计算设备秘密代码:DSecret{u}=KDF(RSecret,H(Devinfo{u})。其次,数据解密模块268 使用所计算的DSecret{u}以及从上述解码获得的设备指纹的哈希值、客户端应用的名称以及时间戳来计算数据密钥:D_u{t}= KDF(DSecret{u},H(Devinfo{u}),appName,t),并使用所计算的数据密钥对加密的敏感数据进行解密。
图6至图8示意性地示出了操作系统以用于对数据分组进行加密的方法。具体地,图6示出了通过与根秘密服务器230通信的用户计算设备210的部署;图7示出了通过与根秘密服务器230通信的后端服务器 250的部署;并且图8示出了在图6和图7中所示的部署之后,使用基于用户计算设备210的指纹的加密和解密在用户计算设备210和后端服务器250之间进行的数据传输。
图6示意性地示出了用户计算设备210的部署,即,用户计算设备 210如何从根秘密服务器230获得设备秘密(DSecrete{u})。
如图6中所示,在过程602处,应用218安装在用户计算设备210 上,并且启动模块220启动应用218。当应用218被初始化时,在初始化期间,启动模块220获取设备指纹Devinfo{u}并随机产生密钥X。在某些实施例中,用户计算设备210的指纹采用媒体访问控制(MAC)地址或IMEI或其他形式的格式,并且被硬编码在应用218中,并且可以唯一地标识用户计算设备210。在某些实施例中,随机产生的密钥X是对称密钥。
在过程604处,启动模块220向公钥模块240发送请求,以从根秘密服务230的证书获取公钥(例如,Rivest-Shamir-Adleman(RSA)公钥PubK),并从公钥模块240接收PubK。
在过程606处,启动模块将指纹Devinfo{u}、密钥X和公钥PubK 发送到DSecret请求模块222。
在过程608处,DSecret请求模块222准备对设备秘密代码的请求(DSecretEnvRequest)。具体地,DSecret请求模块222组织(organize) 包括指纹Devinfo{u}和密钥X的明码DSecretrequest分组(如图9B中所示),然后使用公钥PubK对明码DSecretrequest分组进行加密,并对加密后的分组进行编码以形成编码消息DSecretEnvRequest:C= Enc_{PubK}(Devinfo{u},X),诸如图9A中所示的消息。
在过程610处,DSecret请求模块222将DSecretEnvRequest发送到 DSecret模块242。
在过程612处,在接收到DSecretEnvRequest时,DSecret模块242 对DSecretEnvRequest进行解码以获得密文C,并从公钥模块240获取对应于公钥PubK的RSA私钥PrvK。
在过程614处,DSecret模块242使用私钥PrvK对密文C进行解密以获得设备指纹Devinfo{u}、密钥X和其他相关信息:Dec_{PrvK}(C)= Devinfo{u},X。
在过程616处,DSecret模块242将Devinfo{u}发送到指纹验证模块 244。
在过程618处,指纹验证模块244准备到指纹验证服务272的指纹验证请求,其中该请求包括设备指纹Devinfo{u}。
在过程620处,指纹验证服务272在接收到具有Devinfo{u}的请求时,对用户计算设备的指纹Devinfo{u}进行验证,其中指纹验证服务272 可以确定指纹Devinfo{u}是否合法;然后将验证结果发送到DSecret模块 242(或者经由指纹验证模块244将结果发送到DSecret模块242)。
在过程622处,DSecret模块242从根秘密模块248获取根秘密代码RSecret。
在过程624处,在从指纹验证服务272接收到指纹Devinfo{u}的验证结果并且从根秘密模块248接收到根秘密代码RSecret时,DSecret模块242计算专用于用户计算设备210的设备秘密DSecret{u}:DSecret{u} =KDF(RSecret,H(Devinfo{u}))。H(Devinfo{u})是Devinfo{u}的哈希值。然后DSecret模块242使用数据密钥X对DSecret{u}和状态码error进行加密以获取加密的C′:C′=Enc_{X}(error,DSecret{u})。该error指示验证结果。当Devinfo{u}是无效指纹时,error的值表示该无效。然后DSecret 模块242对加密的密文C′和其他相关信息进行编码以形成包含DSecret{u} 的响应(DSecretResponse)。在某些实施例中,DSecretResponse具有如图10中所示的格式。
在过程626处,在准备好DSecretResponse之后,DSecret模块242 将DSecretResponse发送到用户计算设备210的DSecret接收模块224。
在过程628处,响应于接收到DSecretResponse,DSecret接收模块 224从启动模块220获取密钥X。
在过程630处,DSecret接收模块224对DSecretResponse进行解码,使用从启动模块220获取的密钥X对加密的密文C′进行解密,获得 DSecret{u}:Dec_{X}(C′)=error,DSecret{u},并将DSecret{u}存储在存储器214中以供将来使用。如果指纹是有效的,则error为0,DSecret{u} 被保存在本地存储器中。否则,如果指纹是无效的,则error不为0,并且DSecret模块224使用备份DSecret,其是在所有客户端中普遍相同的硬编码值。
上述某些过程的实施例可以进一步定义如下:
(1)用户计算设备210从根秘密服务器230的证书读取PubK,对包括指纹和数据密钥X在内的请求进行加密,并将其发送到根秘密服务 230。
用户计算设备→根秘密服务:用PubK加密。
C=Enc_{PubK}(Devinfo{u},X)
C是加密后的密文。
(2)根秘密服务230对C进行解密。
Dec_{PrvK}(C)=Devinfo{u},X
(3)计算DSecret的公式:
DSecret{u}=KDF(RSecret,H(Devinfo{u}))
H(Devinfo{u})是用户计算设备210的Devinfb{u}的哈希值。
(4)根秘密服务230发送回由密钥X加密的C′,其包含DSecret{u} 和状态码error。
C′=Enc_{X}(error,DSecret{u})
(5)用户计算设备210接收C′,通过以下公式用密钥X对其进行解密以得到DSecret{u}:
Dec_{X}(C′)=error,DSecret{u}
如果成功(error为0),将DSecret{u}保存在本地存储器中以供将来使用。否则(error不为0),使用备份DSecret,其是所有客户端上普遍相同的硬编码值。
在过程602至630之后,用户计算设备210的部署完成,并且用户计算设备210具有设备专用的DSecret{u}。同时,DSecret{u}由根秘密服务230根据请求计算,并且根秘密服务230不需要存储所计算的 DSecret{u}。
图7示意性地示出了后端服务器250的部署,即,后端服务如何从根秘密服务230获得根秘密(RSecret)。每当后端服务250开始时,它首先从根秘密服务230获取根秘密(一个或多个)并将其保存在存储器 254中。出于安全原因,后端服务250不将RSecret存储在存储设备256 中。
如图7中所示,在过程702处,当根秘密服务230开始时,密钥取得模块246准备请求,并将该请求发送到密钥管理服务274以取得密钥。该管理密钥是与后端服务250和RSecret服务器230共享的对称密钥,并且用于保护根秘密的传输。
在过程704处,响应于接收到请求,密钥管理服务274提供密钥。
在过程706处,密钥管理服务274将密钥发送到根秘密模块248,并且根秘密模块248保存密钥并且密钥就绪以供进一步使用。在某些实施例中,密钥管理服务274还可以将密钥发送到密钥取得模块246,并且根秘密模块248与密钥取得模块246通信以在密钥取得模块246接收到密钥之后或者当根秘密模块248需要密钥时立即接收或获取密钥。
在过程708处,当后端服务250开始时,密钥取得模块260准备请求,并将该请求发送到密钥管理服务274以取得密钥。根秘密服务器230 请求的密钥和后端服务250请求的密钥是相同的密钥。
在过程710处,响应于接收到请求,密钥管理服务274提供密钥。
在过程712处,密钥管理服务274分别将密钥发送到RSecret请求模块262和RSecret接收模块264,并且RSecret请求模块262和RSecret 接收模块264保存密钥以供将来使用。在某些实施例中,密钥管理服务 274可以将密钥发送到密钥取得模块260,并且RSecret请求模块262和 RSecret接收模块264与密钥取得模块260通信以在密钥取得模块260接收到密钥之后或者当RSecret请求模块262和RSecret接收模块264需要密钥时立即接收或获取密钥。
在过程714处,在接收到密钥时,RSecret请求模块262准备针对根秘密代码的请求,使用所取得的密钥对该请求进行加密以形成加密的请求RSecretRequest,并对RSecretRequest进行编码以形成编码和加密的请求,即,RSecretEnvRequest。分别在图11A和图11B中示出了 RSecretEnvRequest和RSecretRequest的示例。请求的格式可以有所不同,只要它包含针对根秘密代码的请求即可。
在过程716处,RSecret请求模块262将请求RSecretEnvRequest发送到根秘密模块248。
在过程718处,响应于接收到请求RSecretEnvRequest,根秘密模块 248对RSecretEnvRequest进行解码以获取加密的请求,使用密钥对加密的请求进行解密以获取解密的请求,并且响应于解密的请求,准备包含根秘密代码的响应(RSecretResponse),使用所取得的密钥对 RsecretResponse进行加密,并对加密的响应进行编码以形成编码和加密的响应,即RSecretEnvResponse。分别在图12A和图12B中示出了 RSecretEnvResponse和RSecretResponse的示例。请求的格式可以有所不同,只要它包含根秘密代码即可。
在过程720处,在准备好响应RSecretEnvResponse之后,根秘密模块248将RSecretEnvResponse发送到RSecret接收模块264。
在过程722处,响应于接收到响应RSecretEnvResponse,RSecret接收模块264对RSecretEnvResponse进行解码并使用密钥对其解密,并根据解码和解密的响应获得根秘密代码。现在后端服务250准备好进行安全数据传输。
在过程702至722之后,后端服务器250的部署完成,并且服务器计算设备250具有根秘密代码,其可以用于计算设备秘密代码和数据密钥。然后,数据密钥用于敏感数据的安全传输。
图8示意性地示出了在计算设备210和后端服务250的部署之后在用户计算设备210和后端服务250之间安全进行的数据分组的传输。
如图8中所示,敏感数据在用户计算设备210和后端服务250这两侧之间传送。一侧产生数据密钥D_u{t},其是对称密钥并且在将数据发送出去之前使用它来对数据进行加密。另一侧需要产生相同的数据密钥 D_u{t},以便在接收到密文后可以使用该密钥对密文进行解密。产生数据密钥D_u{t}的公式再次列出如下:
D_u{t}=KDF(DSecret{u},H(Devinfo{u}),app_name,t)
用于计算数据密钥的密钥元数据包括应用程序名称app_name、时间戳值t和设备信息(即指纹H(Devinfo{u}))的哈希值。数据密钥是按需产生的,并且是它加密的那条数据所专用的。用于产生专用于作为密文的该加密数据的数据密钥的所有元数据应当在HTTP传输期间一起携带,以便接收侧可以得到它们并恢复相同的数据密钥D_u{t}以对其进行解密。结果,密文、密钥元数据与其他信息放在一起并以特殊格式编码为EncodedDataPacket。
从用户计算设备210侧来看,在过程802处,在从根秘密服务230 接收到DSecretResponse并对DSecretResponse进行解码和解密以获得设备秘密代码DSecret{u}之后,DSecret接收模块224将DSecret{u}发送到数据加密模块226。在某些实施例中,数据加密模块226还可以在需要对数据进行加密时获取DSecret{u}。
此外,在过程804处,DSecret接收模块224还将DSecret{u}发送到数据解密模块228。在某些实施例中,替代发送DSecret{u},数据解密模块228还可以是当数据解密模块228需要对数据进行解密时从DSecret 接收模块224获得DSecret{u}。
从后端服务250侧来看,在过程806处,在从根秘密服务230接收到RSecretEnvResponse并对RSecretEnvResponse进行解码和解密以获得根秘密代码RSecret之后,RSecret接收模块264将RSecret发送到数据加密模块266。在某些实施例中,数据加密模块266还可以在需要对数据进行加密时获取RSecret。
此外,在过程808处,RSecret接收模块264还将RSecret发送到数据解密模块268。在某些实施例中,替代通过RSecret接收模块264发送 Rsecret,当数据解密模块268需要解密数据时,数据解密模块268可以从RSecret接收模块264获取RSecret。
当用户计算设备210的应用218需要安全地向后端服务250发送敏感数据时,在过程808处,数据加密模块226使用对应的数据密钥对敏感数据进行加密,并且对加密数据进行编码以获得编码和加密的数据分组(即,EncodedDataPacket)。使用数据密钥D_u{t}执行加密,数据密钥D_u{t}由下式计算:D_u{t}=KDF(DSecret{u},H(Devinfo{u}), app_name,t)。使用D_u{t}对敏感数据进行加密以形成密文。 EncodedDataPacket包括时间戳t、应用的名称app_name、设备指纹的哈希值H(Devinfo{u})以及加密的密文。EncodedDataPacket的所有字段都是明码文本(plain text)格式,诸如JSON格式。在一个示例中,EncodedDataPacket具有如图13中所示的格式。
在过程810处,用户计算设备210的数据加密模块226将 EncodedDataPacket发送到后端服务250的数据解密模块268。
在过程812处,在接收到EncodedDataPacket时,数据解密模块268 对EncodedDataPacket进行解码,并使用从根秘密服务器230获得的 RSecret和从解码的EncodedDataPacket中提取的H(Devinfo{u})通过下式计算设备秘密代码DSecret{u}:DSecret{u}=KDF(RSecret, H(Devinfo{u})),并使用所计算的DSecret{u}和从解码的EncodedDataPacket中提取的H(Devinfo{u})、app_name、t通过下式计算数据密钥D_u{t}:D_u{t}=KDF(DSecret{u},H(Devinfo{u}),app_name,t)。在密钥D_u{t}可用的情况下,后端服务250然后使用数据密钥D_u{t}对根据EncodedDataPacket解码出的加密的数据进行解密。用于产生 DSecret{u}和D_u{t}的KDF由不可逆伪随机函数(PRF)(例如,哈希消息认证码(HMAC)/Bcrypt/基于密码的密钥导出函数)(PBKDF2)) 构成。
在过程814处,响应于从EncodedDataPacket解密的数据,数据解密模块268或后端服务250的其他模块提供响应。
在产生响应之后,在过程816处,数据解密模块268将响应与上面获得的DSecret{u}、H(Devinfo{u})、app_name以及可选的时间戳t一起发送到数据加密模块266。
在过程818处,数据加密模块266对响应进行加密并进行编码以形成新的编码和加密的数据分组EncodedDataPacket,其也具有如图13中所示的形式。使用上面获得的DSecret{u}、H(Devinfo{u})、app_name以及与该新的EncodedDataPacket的产生时间相对应的当前时间戳t来计算加密密钥。
在加密和编码之后,在过程820处,数据解密模块266将 EncodedDataPacket发送到用户计算设备210的数据解密模块228。
在过程825处,响应于从后端服务250接收到EncodedDataPacket,数据解密模块228对EncodedDataPacket进行解码,使用存储的 DSecret{u}、存储或计算或提取的H(Devinfo{u}),以及从解码的 EncodedDataPacket中提取的app_name和t使用公式D_u{t}=KDF (DSecret{u},H(Devinfo{u}),app_name,t)来计算密钥D_u{t},并使用数据密钥D_u{t}对来自解码的EncodedDataPacket的加密的敏感数据进行解密。应用218可以本身使用解密数据,或者将解密数据发送到其他应用或模块以执行对应的功能。
图9A示意性地示出了根据公开的某些实施例的设备秘密代码请求数据分组(DSecretEnvRequest)的格式和DSecretEnvRequest的示例。在该实施例中,分组是JSON格式。在某些实施例中,用户计算设备210 将DSecretEnvRequest发送到根秘密服务230以向根秘密服务230请求根秘密代码。DSecretEnvRequest包括ciphertype和dsecret_req_cipher的字段。ciphertype是指示非对称加密的密码算法的整数(integer)。 dsecret_req_cipher是包括已经通过根秘密服务230的公钥加密的设备秘密代码请求的实际明码文本(DSecretRequest_plain)的字符串。
图9B示意性地示出了根据本公开的某些实施例的设备秘密代码请求的实际明码文本(即,DSecretRequest_plain)和实例。在某些实施例中,DSecretRequest_plain是JSON格式,并且包括did、skey、ciphertype、 version和ts的字段。字段did是设备指纹的字符串。字段skey是由应用 218随机产生的对称密钥的字符串。skey用于对从根秘密服务230发送回的设备秘密代码(DSecret)进行加密。ciphertype是指示对称加密的密码算法的整数。
图10示意性地示出了根据本公开的某些实施例的响应于接收到针对设备秘密代码的请求而来自根秘密服务的响应的格式、以及其示例。该请求是DSecretRequest,并且响应名为DSecretResponse。图10中所示的DSecretResponse分组包括status_code、status_message、ciphertype、 rids和dsecret_resp_cipher的字段。status_code是指示DSecretResponse 分组是否包括正确的设备秘密代码的整数。当status_code为0时,请求/响应过程成功,并且正确的设备秘密代码从根秘密服务230返回到用户计算设备210。如果status_code不为0,则请求/响应过程失败,不提供设备秘密代码,并且status_code的值可以指示故障的原因。ciphertype 是指示与DSecretRequest中的密码算法相同的密码算法的整数。ridx是作为根秘密服务230的索引的整数。根秘密服务230可以在产生设备秘密代码(即Dsecret)时从多个根秘密中选择一个。在某些实施例中,根秘密服务230可以定期更新其根秘密代码,并且用户计算设备210通过以预定间隔向根秘密服务230发送请求来对应地更新其设备秘密代码。
图11A示意性地示出了根据本公开的某些实施例的编码和加密的根秘密代码请求(RSecretEnvRequest)分组的格式、以及RSecretEnvRequest的示例。在该实施例中,分组是JSON格式。在某些实施例中,后端服务250将RSecretEnvRequest发送到根秘密服务230以向其请求根秘密代码。RSecretEnvRequest包括rsecret_req_cipher和 ciphertype的字段。rsecret_req_cipher是包括以Base64格式编码的 RSecretRequest的字符串。ciphertype是指示加密时使用的密码类型的整数。从密钥管理服务器274取得用于加密的密钥。
图11B示意性地示出了根据本公开的某些实施例的根秘密代码请求(RSecretRequest)分组的格式、以及RSecretEnvRequest的示例。在某些实施例中,RSecretRequest是JSON格式,并且包括service_name、ts和 ridx的字段。字段service_name是后端服务的名称的字符串。ts是何时产生分组的时间戳值的整数。ridx是从0开始的当前使用的根秘密的索引的整数。RSecretRequest被编码并形成图11A中所示的上述RSecretEnvRequest的一部分。
图12A示意性地示出了根据本公开的某些实施例的响应于根秘密代码请求的加密响应分组的格式、以及RSecretEnvRespose的示例。在该实施例中,(RSecretEnvResponse)分组是JSON格式。在某些实施例中,根秘密服务30将RSecretEnvResponse发送到后端服务250以将根秘密代码提供给后端服务250。如图12A中所示,RSecretEnvResponse包括ciphertype和rsecret_res_cipher的字段。ciphertype是指示加密时使用的密码类型的整数,并且从密钥管理服务274取得用于加密的密钥。 rserse_req_cipher是包括以Base64格式编码的RSecretResponse的字符串。
图12B示意性地示出了根据本公开的某些实施例的根秘密代码响应(RSecretResponse)分组的格式、以及RSecretResponse的示例。在某些实施例中,RSecretResponse是JSON格式并且包括status_code、 status_message、ts、ridx、rsecret_string和rsecret_digest的字段。字段status_code是指示RSecretResponse分组是否包括正确的根秘密代码的整数。当status_code为0时,请求/响应过程成功,并且正确的根秘密代码从根秘密服务230返回到后端服务250。如果status_code不是0,则请求/响应过程失败,并且不提供根秘密代码,并且status_code的值可以指示故障的原因。字段status_message是提供与status_code相对应的状态消息的字符串。字段ts是记录何时产生分组的时间戳值的整数。ridx是作为从0开始的当前使用的根秘密的索引的整数。例如,根秘密被索引,因此索引从0开始。如果系统中使用了3个根秘密,则这些秘密被索引为0、1和2。字段rsecret_string是加密的根秘密代码(一个或多个)的字符串。字段rsecret_digest是表示加密的并以Base64格式编码的根秘密的摘要的字符串。如果返回多个根秘密,则每个根秘密都有其自己的对应摘要。
图13示意性地示出了根据本公开的某些实施例的编码和加密的数据分组(EncodedDataPacket)的格式、以及EncodedDataPacket的示例。在某些实施例中,EncodedDataPacket是JSON格式。如图13中所示, EncodedDataPacket包括version、ts、hdid、appname、ciphertype、ridx 和cipher的字段。字段version是指示应用218的版本号的字符串。字段 ts是表示何时产生分组的时间戳值的长整数。字段hdid是表示设备指纹的哈希值的字符串。哈希值基于hdid=H(Devinfo{u})导出。字段appname 是包含应用218的名称的字符串。字段ciphertype是表示从0开始的当前使用的根秘密的索引的整数。字段cipher是具有加密的明码文本有效载荷的字符串。
在某些实施例中,图9A、图9B、图10、图11A、图11B、图12A、图12B和图13中所示的请求、响应和数据分组都是JSON格式。在某些实施例中,那些分组也可以是其他文本格式。
总之,本公开的某些实施例尤其具有以下优点:
a)本公开提供了一种用于移动应用程序的轻量级密钥管理,而无需预先部署的秘密;
b)本公开针对可选字段提供端到端(移动应用程序和服务器侧) 数据保护,而不是整个传输层保护;
c)本公开基于设备指纹提供对移动应用程序的认证;
d)本公开使用综合密钥导出函数来确保可以用每个设备、每个应用程序和每个请求的单个密钥来加密数据字段;
e)本公开在服务器侧按需提供设备秘密计算,以消除用于部署的移动设备的巨大密钥存储量。
根据本公开的某些实施例的密钥技术提供了基于移动设备指纹的轻量级密钥管理。从移动指纹导出的部署的设备秘密与根秘密混合确保: (1)设备被认证;(2)所有设备秘密都可以根据服务器侧上的根秘密计算,无需任何额外存储;(3)设备秘密是唯一的,并且每个数据密钥是每个设备、每个应用和每个请求唯一地导出的;并且(4)支持对所选字段的定制加密,而不对整个分组或整个信道加密。
在某些实施例中,TLS/HTTPS可以用作备选解决方案。但是部署设备凭证并不容易,因为:(1)如果我们在每个设备上采用对称密钥,则服务器无法承受本地的大量密钥存储或通过从分布式密钥存储查询设备密钥而引起的长延时;并且(2)如果我们在每个设备上采用非对称密钥,则由于不能预先进行设备验证而应预先安装非对称密钥,这使得部署不切实际。
本公开的示例性实施例的前述描述是仅出于说明和描述的目的而呈现的,并且不旨在穷举或将本公开限制于所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。
选择和描述实施例是为了解释本公开的原理及其实际应用,以使得本领域其他技术人员能够利用本公开和各种实施例以及适合于预期的特定用途的各种修改。在不脱离本公开的精神和范围的情况下,备选实施例对于本公开所属领域的技术人员将变得显而易见。因此,本公开的范围由所附权利要求限定,而不是由前面的描述和其中描述的示例性实施例限定。
参考文献:
1.中国专利申请No.CN102664898A,基于指纹识别的加密传输方法、基于指纹识别的加密传输设备以及基于指纹识别的加密传输系统 (Fingerprint identification-based encrypted transmission method, fingerprint identification-basedencrypted transmission device and fingerprint identification-based encryptedtransmission system)。
2.U.S.公开的专利申请No.2010/0211787A1,用于安全通信的混沌密码系统和方法(Chaotic cipher system and method for secure communication)。
3.GB2434724A,基于从设备的物理参数导出的设备“指纹”使用认证令牌进行安全交易(Secure transactions using authentication tokens based on a device″fingerprint″derived from its physical parameters)。
4.U.S.专利No.8,667,265B1,硬件设备绑定和相互认证(Hardware devicebinding and mutual authentication)。

Claims (20)

1.一种用于加密和解密的方法,所述方法包括:
由用户计算设备将所述用户计算设备的设备指纹发送到根秘密服务器,其中所述根秘密服务器具有根秘密代码,并且所述根秘密服务器被配置为响应于接收到所述设备指纹而使用所述设备指纹和所述根秘密代码计算设备秘密代码,并将所述设备秘密代码发送到所述用户计算设备;
由所述用户计算设备使用所述设备秘密代码、所述设备指纹、产生数据的应用的名称以及产生所述数据的时间戳来计算数据密钥;
由所述用户计算设备使用所述数据密钥对所述数据进行加密以形成加密数据分组;
由所述用户计算设备用所述设备指纹、所述应用的名称和所述时间戳对所述加密数据分组进行编码以形成编码数据分组,并将所述编码数据分组发送到后端服务器,
其中所述后端服务器被配置为:
从所述根秘密服务器获得所述根秘密代码;
响应于接收到所述编码数据分组,对所述编码数据分组进行解码以获得所述加密数据分组;
使用从所述根秘密服务器获得的所述根秘密代码以及来自所述编码数据分组的所述设备指纹、所述应用的名称以及所述时间戳来计算所述数据密钥;以及
使用所述数据密钥对所述加密数据分组进行解密。
2.根据权利要求1所述的方法,还包括:在发送所述设备指纹的步骤之前,
由所述用户计算设备使用从所述根秘密服务器获取的公钥对所述设备指纹进行加密,其中所述根秘密服务器还被配置为由所述根秘密服务器使用与所述公钥相关联的私钥对所述设备指纹进行解密,并且所述公钥和所述私钥形成非对称密钥对。
3.根据权利要求1所述的方法,其中,所述根秘密服务器还被配置为在计算所述设备秘密代码之前,使用指纹验证服务来对所述设备指纹进行验证。
4.根据权利要求1所述的方法,其中,所述根秘密服务器还被配置为:在将所述设备秘密代码发送到所述用户计算设备之前,使用由所述用户计算设备提供的随机产生的密钥对所述设备秘密代码进行加密,并且所述方法还包括:在由所述用户计算设备计算所述数据密钥的步骤之前,
由所述用户计算设备使用所述随机产生的密钥对从所述根秘密服务器接收的加密的设备秘密代码进行解密,并将所获得的设备秘密代码存储在所述用户计算设备上,其中所述随机产生的密钥是对称密钥。
5.根据权利要求1所述的方法,
其中,所述根秘密服务器还被配置为从密钥管理服务获得管理密钥;
其中,所述后端服务器还被配置为在从所述根秘密服务器获得所述根秘密代码之前执行以下操作:
从所述密钥管理服务获得所述管理密钥;
向所述根秘密服务器发送用于请求所述根秘密代码的请求,所述请求通过所述管理密钥而被加密,其中所述根秘密服务器还被配置为使用所述管理密钥对所述请求进行解密,准备具有所述根秘密代码并通过所述管理密钥而被加密的响应,并将所述响应发送到所述后端服务器;以及
接收所述响应并使用所述管理密钥对所述响应进行解密以获得所述根秘密代码;以及
其中所述管理密钥是对称密钥。
6.根据权利要求1所述的方法,其中,所述数据密钥是对称密钥,并且通过JavaScript对象表示法JSON对所述加密数据分组进行编码。
7.一种存储计算机可执行代码的非暂时性计算机可读介质,其中当在用户计算设备的处理器处执行所述计算机可执行代码时,所述计算机可执行代码被配置为执行根据权利要求1所述的方法。
8.一种用于加密和解密的方法,所述方法包括:
由后端服务器从根秘密服务器获得根秘密代码;
响应于从用户计算设备接收到编码数据分组,由所述后端服务器对所述编码数据分组进行解码以获得加密数据分组;
由所述后端服务器使用从所述根秘密服务器获得的所述根秘密代码以及来自所述编码数据分组的设备指纹、应用的名称和时间戳来计算数据密钥;以及
由所述后端服务器使用所计算的数据密钥对所述加密数据分组进行解密,
其中,所述用户计算设备被配置为:将所述用户计算设备的所述设备指纹发送到所述根秘密服务器,使用从所述根秘密服务器接收的设备秘密代码、所述设备指纹、产生所述数据的所述应用的名称以及产生所述数据的时间戳来计算所述数据密钥,使用所述数据密钥对所述数据进行加密以形成所述加密数据分组,用所述设备指纹、所述应用的名称、所述时间戳对所述加密数据分组进行编码以形成所述编码数据分组,并将所述编码数据分组发送到所述后端服务器;并且
其中,所述根秘密服务器被配置为响应于接收到所述设备指纹,使用所述设备指纹和所述根秘密代码来计算所述设备秘密代码,并将所述设备秘密代码发送到所述用户计算设备。
9.根据权利要求8所述的方法,其中,所述用户计算设备还被配置为使用从所述根秘密服务器获取的公钥对所述设备指纹进行加密,所述根秘密服务器还被配置为由所述根秘密服务器使用与所述公钥相关联的私钥对所述设备指纹进行解密,并且所述公钥和所述私钥形成非对称密钥对。
10.根据权利要求8所述的方法,其中,所述根秘密服务器还被配置为在计算所述设备秘密代码之前,使用指纹验证服务来对所述设备指纹进行验证。
11.根据权利要求8所述的方法,其中,所述根秘密服务器还被配置为:在将所述设备秘密代码发送到所述用户计算设备之前,使用由所述用户计算设备提供的随机产生的密钥对所述设备秘密代码进行加密,并且所述方法还包括:
由所述用户计算设备使用所述随机产生的密钥对从所述根秘密服务器接收的加密的设备秘密代码进行解密,并将所获得的设备秘密代码存储在所述用户计算设备上,其中所述随机产生的密钥是对称密钥。
12.根据权利要求8所述的方法,还包括:
由所述后端服务器从密钥管理服务获得管理密钥;
由所述后端服务器向所述根秘密服务器发送所述后端服务器用于请求所述根秘密代码的请求,所述请求通过所述管理密钥而被加密,其中所述根秘密服务器被配置为从所述密钥管理服务获得所述管理密钥,使用所述管理密钥对所述请求进行解密,准备具有所述根秘密代码并通过所述管理密钥而被加密的响应,并将所述响应发送到所述后端服务器;
由所述后端服务器接收所述响应;以及
由所述后端服务器使用所述管理密钥对所述响应进行解密以获得所述根秘密代码,
其中所述管理密钥是对称密钥。
13.根据权利要求8所述的方法,其中,所述数据密钥是对称密钥,并且其中通过JavaScript对象表示法JSON对所述加密数据分组进行编码。
14.一种存储计算机可执行代码的非暂时性计算机可读介质,其中当在后端服务器的处理器处执行所述计算机可执行代码时,所述计算机可执行代码被配置为执行根据权利要求8所述的方法。
15.一种用于加密和解密的系统,所述系统包括:用户计算设备、具有根秘密代码的根秘密服务器、以及后端服务器,其中:
所述根秘密服务器被配置为:
使用由所述用户计算设备发送的设备指纹和所述根秘密代码来计算设备秘密代码;以及
将所述设备秘密代码发送到所述用户计算设备;
所述用户计算设备被配置为:
将所述设备指纹发送到所述根秘密服务器;
使用从所述根秘密服务器接收的所述设备秘密代码、所述设备指纹、产生数据的应用的名称以及产生数据的时间戳来计算数据密钥;
使用所述数据密钥对所述数据进行加密以形成加密数据分组;
用所述设备指纹、所述应用的名称、所述时间戳对所述加密数据分组进行编码以形成编码数据分组;以及
将所述编码数据分组发送到所述后端服务器;
所述后端服务器被配置为:
从所述根秘密服务器获得所述根秘密代码;
响应于接收到所述编码数据分组,对所述编码数据分组进行解码以获得所述加密数据分组,使用从所述根秘密服务器获得的所述根秘密代码以及来自所述编码数据分组的所述设备指纹、所述应用的名称和所述时间戳来计算所述数据密钥;以及
使用所计算的数据密钥对所述加密数据分组进行解密。
16.根据权利要求15所述的系统,其中,所述用户计算设备还被配置为使用从所述根秘密服务器获取的公钥对所述设备指纹进行加密;所述根秘密服务器被配置为使用与所述公钥相关联的私钥对加密的设备指纹进行解密;并且所述公钥和所述私钥形成非对称密钥对。
17.根据权利要求15所述的系统,其中,所述根秘密服务器还被配置为使用指纹验证服务对所述设备指纹进行验证。
18.根据权利要求15所述的系统,其中,所述根秘密服务器被配置为在将所述设备秘密代码发送到所述用户计算设备之前,使用由所述用户计算设备提供的随机产生的密钥对所述设备秘密代码进行加密;所述用户计算设备被配置为使用所述随机产生的密钥对加密的设备秘密代码进行解密;并且所述随机产生的密钥是对称密钥。
19.根据权利要求15所述的系统,其中:
所述后端服务器还被配置为:从密钥管理服务获得管理密钥,使用所述管理密钥对用于请求所述根秘密代码的请求进行加密,将所述请求发送到所述根秘密服务器,并且使用所述管理密钥对从所述根秘密服务器接收的响应进行解密以获得所述根秘密代码;
所述根秘密服务器还被配置为:从所述密钥管理服务获得所述管理密钥,使用所述管理密钥对所述请求进行解密,准备具有所述根秘密代码并通过所述管理密钥而被加密的所述响应,并将所述响应发送到所述后端服务器;并且
所述管理密钥是对称密钥。
20.根据权利要求15所述的系统,其中,所述数据密钥是对称密钥,并且通过JavaScript对象表示法JSON对所述加密数据分组进行编码。
CN201910869920.XA 2018-09-14 2019-09-12 用于加密和解密的方法、系统和计算机可读介质 Active CN110912684B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/131,426 US10965453B2 (en) 2018-09-14 2018-09-14 System and method for authenticated encryption based on device fingerprint
US16/131,426 2018-09-14

Publications (2)

Publication Number Publication Date
CN110912684A CN110912684A (zh) 2020-03-24
CN110912684B true CN110912684B (zh) 2023-04-07

Family

ID=69773409

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910869920.XA Active CN110912684B (zh) 2018-09-14 2019-09-12 用于加密和解密的方法、系统和计算机可读介质

Country Status (2)

Country Link
US (1) US10965453B2 (zh)
CN (1) CN110912684B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11777744B2 (en) 2018-06-25 2023-10-03 Auth9, Inc. Method, computer program product and apparatus for creating, registering, and verifying digitally sealed assets
US11611539B2 (en) * 2018-12-16 2023-03-21 Auth9, Inc. Method, computer program product and apparatus for encrypting and decrypting data using multiple authority keys
CN112738004B (zh) * 2019-10-14 2021-11-16 上海哔哩哔哩科技有限公司 基于quic传输协议的通信方法和系统
CN111598573B (zh) * 2020-04-10 2023-10-31 维沃移动通信有限公司 一种设备指纹验证方法及装置
CN111611567B (zh) * 2020-05-20 2024-04-05 京东方科技集团股份有限公司 鉴权方法及装置、电子白板、计算机可读存储介质
US11849043B2 (en) * 2020-11-13 2023-12-19 Sony Group Corporation Zero-knowledge authentication based on device information
CN112751668B (zh) * 2020-12-29 2022-10-21 杭州永谐科技有限公司 一种低成本物联网数据加密通信系统
CN113179161B (zh) * 2021-04-22 2022-11-08 平安消费金融有限公司 一种秘钥更换的方法、装置、计算机设备及存储介质
CN114189337A (zh) * 2021-11-18 2022-03-15 山东云海国创云计算装备产业创新中心有限公司 一种固件烧录方法、装置、设备以及存储介质
CN114422800B (zh) * 2021-12-14 2023-06-06 统信软件技术有限公司 一种数据加密方法、装置与计算设备
CN114039800A (zh) * 2022-01-10 2022-02-11 中建电子商务有限责任公司 基于设备指纹的访问控制方法、装置、服务器及存储介质
CN114531236B (zh) * 2022-03-02 2023-10-31 杭州华澜微电子股份有限公司 一种密钥的处理方法、装置及电子设备
CN116668203B (zh) * 2023-08-02 2023-10-20 浙江大华技术股份有限公司 设备认证方法、物联网设备、认证平台以及可读存储介质
CN116702218B (zh) * 2023-08-07 2023-12-05 腾讯科技(深圳)有限公司 小程序中三维模型的渲染方法、装置、终端及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1679271A (zh) * 2002-08-28 2005-10-05 美国多科摩通讯研究所股份有限公司 基于认证的加密和公共密钥基础结构
CN103580872A (zh) * 2013-11-11 2014-02-12 北京华大智宝电子系统有限公司 一种用于密钥生成与管理的系统及方法
CN106330868A (zh) * 2016-08-14 2017-01-11 北京数盾信息科技有限公司 一种高速网络加密存贮密钥管理系统及方法
CN107786328A (zh) * 2017-09-01 2018-03-09 深圳市金立通信设备有限公司 一种生成密钥的方法、服务节点设备及计算机可读介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2434724A (en) 2006-01-13 2007-08-01 Deepnet Technologies Ltd Secure transactions using authentication tokens based on a device "fingerprint" derived from its physical parameters
US8194858B2 (en) 2009-02-19 2012-06-05 Physical Optics Corporation Chaotic cipher system and method for secure communication
US8667265B1 (en) 2010-07-28 2014-03-04 Sandia Corporation Hardware device binding and mutual authentication
CN102664898A (zh) 2012-04-28 2012-09-12 鹤山世达光电科技有限公司 一种基于指纹识别的加密传输方法、装置及系统
US9832024B2 (en) * 2015-11-13 2017-11-28 Visa International Service Association Methods and systems for PKI-based authentication
US20170230184A1 (en) * 2016-02-08 2017-08-10 Ebay Inc. Granting access through app instance-specific cryptography
US10142100B2 (en) * 2016-07-06 2018-11-27 Sap Se Managing user-controlled security keys in cloud-based scenarios

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1679271A (zh) * 2002-08-28 2005-10-05 美国多科摩通讯研究所股份有限公司 基于认证的加密和公共密钥基础结构
CN103580872A (zh) * 2013-11-11 2014-02-12 北京华大智宝电子系统有限公司 一种用于密钥生成与管理的系统及方法
CN106330868A (zh) * 2016-08-14 2017-01-11 北京数盾信息科技有限公司 一种高速网络加密存贮密钥管理系统及方法
CN107786328A (zh) * 2017-09-01 2018-03-09 深圳市金立通信设备有限公司 一种生成密钥的方法、服务节点设备及计算机可读介质

Also Published As

Publication number Publication date
CN110912684A (zh) 2020-03-24
US10965453B2 (en) 2021-03-30
US20200092090A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
CN110912684B (zh) 用于加密和解密的方法、系统和计算机可读介质
US11323276B2 (en) Mutual authentication of confidential communication
US11368445B2 (en) Local encryption for single sign-on
EP3518458B1 (en) Method and device for secure communications over a network using a hardware security engine
US11196722B2 (en) Method for mutual symmetric authentication between a first application and a second application
CN111435913B (zh) 一种物联网终端的身份认证方法、装置和存储介质
US10291567B2 (en) System and method for resetting passwords on electronic devices
CN108809633B (zh) 一种身份认证的方法、装置及系统
CN110362984B (zh) 多设备运行业务系统的方法及装置
US11070537B2 (en) Stateless method for securing and authenticating a telecommunication
CN114244508B (zh) 数据加密方法、装置、设备及存储介质
KR102026375B1 (ko) 웨어러블 디바이스 통신 지원 장치 및 방법
JP4794970B2 (ja) 秘密情報の保護方法及び通信装置
WO2015094114A1 (en) Entity authentication in network
KR20200043855A (ko) Dim을 이용한 드론 인증 방법 및 장치
CN107171784B (zh) 突发环境事件应急指挥调度方法及系统
US11153087B1 (en) Hub-based token generation and endpoint selection for secure channel establishment
CA3210990C (en) End to end encryption with roaming capabilities
KR20030083857A (ko) 키 로밍 방법 및 그를 위한 시스템
JP2013179473A (ja) アカウント生成管理システム、アカウント生成管理サーバ、アカウント生成管理方法及びアカウント生成管理プログラム
US11616789B2 (en) Communication system, communication method, and computer program product
KR101737925B1 (ko) 도전-응답 기반의 사용자 인증 방법 및 시스템
CA3225987A1 (en) End to end encryption with roaming capabilities
KR20190067316A (ko) 가드온솔루션의 정보보호를 위한 비밀번호 일방향 암호화 저장방법
CN114221774A (zh) 鉴权方法、服务器、终端设备及存储介质

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
GR01 Patent grant
GR01 Patent grant