CN117157938A - 敏捷密码部署服务 - Google Patents
敏捷密码部署服务 Download PDFInfo
- Publication number
- CN117157938A CN117157938A CN202280025810.5A CN202280025810A CN117157938A CN 117157938 A CN117157938 A CN 117157938A CN 202280025810 A CN202280025810 A CN 202280025810A CN 117157938 A CN117157938 A CN 117157938A
- Authority
- CN
- China
- Prior art keywords
- cryptographic
- message
- computer system
- server
- additional
- 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 claims abstract description 99
- 238000012360 testing method Methods 0.000 claims description 99
- 230000008569 process Effects 0.000 claims description 48
- 238000009795 derivation Methods 0.000 claims description 37
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000003993 interaction Effects 0.000 claims description 2
- 238000004806 packaging method and process Methods 0.000 claims 1
- 230000008859 change Effects 0.000 abstract description 5
- 230000004044 response Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 108
- 230000006854 communication Effects 0.000 description 21
- 238000005538 encapsulation Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000015654 memory Effects 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000018109 developmental process Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000011900 installation process Methods 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 238000012502 risk assessment Methods 0.000 description 2
- FMFKNGWZEQOWNK-UHFFFAOYSA-N 1-butoxypropan-2-yl 2-(2,4,5-trichlorophenoxy)propanoate Chemical compound CCCCOCC(C)OC(=O)C(C)OC1=CC(Cl)=C(Cl)C=C1Cl FMFKNGWZEQOWNK-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 229910052724 xenon Inorganic materials 0.000 description 1
- FHNFHKCVQCLJFQ-UHFFFAOYSA-N xenon atom Chemical compound [Xe] FHNFHKCVQCLJFQ-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/0825—Key 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
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
实施例涉及用于密码敏捷的加密和解密的方法和系统。计算机系统可以拥有标识一个或多个密码软件模块的协议文件。使用这些密码软件模块,所述计算机系统可以生成多个共享秘密和会话密钥,然后使用所述会话密钥加密消息。可以将所述消息发送到服务器计算机,所述服务器计算机可以随后解密所述消息。稍后,可以更新所述协议文件以标识可用于加密消息的不同密码软件模块集合。另外,所述服务器计算机可以将附加密码软件模块发送到所述计算机系统,使得所述计算机系统能够使用这些密码软件模块来生成密码密钥。因此,可以响应于所述计算机系统的密码需求的变化而改变密码协议文件。
Description
相关申请交叉引用
本申请是要求2021年3月30日提交的第63/167,927号美国专利申请的提交日的权益的国际专利申请,所述美国专利申请出于所有目的以全文引用的方式并入本文中。
背景技术
密码术通常用于实施计算机之间的安全数字通信,特别是通过例如互联网等网络来实施所述通信。通常,计算机系统会拥有可用于加密消息、解密消息和对文档进行数字签名的密码密钥。这些密码密钥对应于底层密码系统,例如RSA、3DES、AES等。为了安全地传送消息,加密计算机(发送方)和解密计算机(接收方)都需要拥有相关密码密钥,并拥有根据对应于那些密钥的密码系统执行密码术的能力。
虽然当今使用的大多数密码系统是安全的或十分难以破解,但不能保证这些密码系统将来仍安全。计算机技术的新发展可能会使这些系统不安全。例如,已经存在可用于在多项式时间内分解整数的已知量子算法(例如,秀尔算法)。一旦创建了功能足够强大的量子计算机,这些算法就可以用于破解例如RSA等密码系统,使此类系统(以及基于系统的通信)不安全。
因此,有时期望定期更新或替换用于执行加密和解密的密码系统或密码密钥。然而,由于密码过程的协调性质,这可能是困难的。在密码安全通信网络中,每个参与者可能需要更新其相应的密码软件,以便继续通过网络通信。因此,计算机或其运营商修改用于安全通信的密码协议通常是困难或耗时的。在大型系统中,这种难度甚至更大,其中可能存在数千个或数百万个计算机系统需要更新其相应的密码通信协议。
实施例单独地以及共同地解决了这些和其它问题。
发明内容
本公开的一些实施例涉及使用敏捷密码协议安全地发送消息的方法。一些实施例另外涉及用于例如基于计算机系统或网络的安全或性能需求来修改和更新这些密码协议的高效且方便的方法。
作为示例,计算机系统(或“客户端计算机”)可以拥有打算用于服务器计算机的消息。此消息可以包括敏感信息,例如用于登录由服务器计算机提供的服务的登录信息、敏感医疗记录、支付账户信息等。计算机系统和服务器计算机可以就彼此安全地通信时使用的特定密码协议达成一致。此密码协议可以由计算机系统和服务器计算机存储的协议文件定义或标识。协议文件可以标识一个或多个密码软件模块以生成一个或多个共享秘密,所述共享秘密随后可以用于导出会话密钥。使用会话密钥,计算机系统可以加密消息。然后,计算机系统可以将消息发送到服务器计算机,所述服务器计算机可以使用类似的过程来导出会话密钥并解密消息。
稍后,计算机系统和服务器计算机可以更新用于加密和解密消息的密码协议。例如,如果发现密码协议不安全,或者如果计算机系统具有性能要求(例如,计算机系统可以具有高消息吞吐量,并且可能需要更快的加密协议),则可以执行此更新过程。作为此更新过程的一部分,服务器计算机可以将附加密码软件模块发送到计算机系统。这些附加密码软件模块可以被数字签名,使得计算机系统能够验证它们源自服务器计算机,而不是冒充者。另外,计算机系统和服务器计算机可以修改其相应的协议文件以标识可用于生成共享秘密和会话密钥的新的或不同的密码软件模块。例如,可以更新协议文件以标识从服务器计算机接收的附加软件模块,并且不包括已发现为不安全的密码软件模块。
一个实施例涉及一种由计算机系统执行的用于安全地传送消息的方法。计算机系统可以基于计算机系统协议文件标识一个或多个密码软件模块,其中所述一个或多个密码软件模块是存储在计算机系统上的密码软件模块库的子集。计算机系统可以生成对应于一个或多个密码软件模块的一个或多个共享秘密。计算机系统可以使用密钥导出函数和一个或多个共享秘密来生成会话密钥。计算机系统可以使用会话密钥加密消息以生成所加密的消息。计算机系统可以将包括所加密的消息和计算机系统标识符的消息包发送到服务器计算机。服务器计算机可以被配置成使用计算机系统标识符来标识服务器计算机协议文件、生成一个或多个共享秘密、生成会话密钥并解密所加密的消息。随后,计算机系统可以更新计算机系统协议文件以标识除了一个或多个密码软件模块之外的附加密码软件模块。计算机系统可以另外将协议更新消息发送到服务器计算机。协议更新消息可以指示计算机系统协议文件已更新。协议更新消息可以包括计算机系统标识符,以供服务器计算机用于标识待更新的服务器计算机协议文件。
另一实施例涉及一种由服务器计算机执行的用于安全地传送消息的方法。服务器计算机可以从计算机系统接收包括所加密的消息和计算机系统标识符的消息包。所加密的消息可以是使用会话密钥加密的,所述会话密钥由计算机系统使用密钥导出函数和使用一个或多个密码软件模块生成的一个或多个共享秘密生成。服务器计算机可以基于计算机系统标识符标识服务器计算机协议文件,并生成对应于服务器计算机协议文件的一个或多个共享秘密。服务器计算机可以使用密钥导出函数和一个或多个共享秘密生成会话密钥,并使用会话密钥解密所加密的消息以检取消息。随后,服务器计算机可以将附加密码软件模块发送到计算机系统。附加密码软件模块可以包括数字签名。计算机系统可以被配置成通过使用对应于服务器计算机、证书颁发机构或受信任执行环境装置制造商的公钥验证数字签名来验证附加密码软件模块。计算机系统还可以将附加密码软件模块添加到密码软件模块库。
以下详细描述本公开的这些和其它实施例。例如,其它实施例涉及与本文所描述的方法相关联的系统、装置和计算机可读介质。
术语
“服务器计算机”可包括功能强大的计算机或计算机集群。例如,服务器计算机可包括大型主机、小型计算机集群或作为一个单元运作的一组服务器。在一个示例中,服务器计算机可以包括耦合到网络服务器的数据库服务器。服务器计算机可以包括一个或多个计算设备,并且可使用多种计算结构、布置和编译中的任一种来服务来自一个或多个客户端计算机的请求。
“存储器”可以包括可存储电子数据的任何合适的一个或多个装置。合适的存储器可以包括非瞬态计算机可读介质,其存储可由处理器执行以实施所要方法的指令。存储器的示例包括一个或多个存储器芯片、磁盘驱动器等。此类存储器可使用任何合适的电气、光学和/或磁性操作模式来操作。
“处理器”可以包括任何合适的一个或多个数据计算装置。处理器可以包括一起工作以实现期望的功能的一个或多个微处理器。处理器可以包括CPU,所述CPU包括至少一个高速数据处理器,所述高速数据处理器足以执行用于执行用户和/或系统生成的请求的程序组件。CPU可以是微处理器,例如AMD的Athlon、Duron和/或Opteron;IBM和/或Motorola的PowerPC;IBM和Sony的Cell处理器;Intel的Celeron、Itanium、Pentium、Xenon和/或XScale;和/或类似的处理器。
“标识符”可以包括用于标识某物的数据。这可以包括用于标识对象、实体(例如,个人或企业实体)、计算机系统、交易、方法等的数据。
“密钥对”可以包括一对链接的密码密钥。例如,密钥对可以包括公钥和对应的私钥。在密钥对中,第一密钥(例如,公钥)可以用于加密消息,而第二密钥(例如,私钥)可以用于解密所加密的消息。另外,公钥可能够验证用对应的私钥创建的数字签名。公钥可以分布在整个网络中,以便能够验证使用对应私钥签名的消息。公钥和私钥可以呈任何合适的格式,包括基于RSA、椭圆曲线密码学(ECC)或任何可适用后量子密码方案(例如,NTRU)的格式。
“数字签名”可以包括用于消息的任何电子签名。数字签名可以是数字数据值、字母数字数据值或任何其它类型的数据。在一些实施例中,数字签名可以是使用密码算法从消息(或数据分组)和私钥生成的唯一数据值。在一些实施例中,可以使用使用公钥的验证算法来验证签名。数字签名可以用于证明发送方的真实性。
“用户”可以包括某个对象或服务的任何用户。这可以包括例如诸如智能手机的“移动装置”的用户,或者支付卡(例如,信用卡或借记卡)的用户。用户可以与一个或多个个人账户(例如,支付账户)或用户装置相关联。用户可被称为“持卡人”(当拥有或使用支付卡时)、账户持有人(当拥有或使用账户时)或消费者(当使用由信赖实体和资源提供方提供的商品或服务时)。
“资源提供方”可以包括向其他实体,例如用户提供资源(例如,商品、服务、对安全数据的访问、对位置的访问等)的任何合适的实体。例如,资源提供实体可以是商家、场所运营商、建筑物所有者、政府实体等。“商家”通常可以是参与交易且可以出售商品或服务或提供对商品或服务的取用的实体。
“用户装置”或“移动装置”可以包括用户可以运输和操作的任何合适的电子装置,所述装置还可以提供与网络远程通信的能力。移动通信装置可以使用移动电话(无线)网络、无线数据网络(例如,3G、4G或类似网络)、Wi-Fi、蓝牙、低功耗蓝牙(BLE)、Wi-Max或可以提供对(例如因特网或专用网络的)网络的访问的任何其它通信介质来进行通信。移动装置的示例包括移动电话(例如,蜂窝电话)、PDA、平板计算机、上网本、膝上型计算机、可穿戴装置(例如手表)、例如汽车和摩托车之类的车辆、个人音乐播放器、手持式专用阅读器等。移动装置可以包括用于执行此类功能的任何合适的硬件和软件,并且还可以包括多个装置或组件(例如,当装置通过与另一装置进行网络共享(即,使用所述另一装置作为调制解调器)而远程访问网络时,一起使用的两个装置可以被认为是单个移动装置)。
“软件模块”可以包括用于实行特定功能的任何指令或代码。软件模块可以是包括多个软件模块的软件应用程序的一部分。软件模块可以包括以解释语言或脚本语言编写的代码。此代码可以由软件应用程序执行或运行,以便实行所需的方法或功能。
“数据文件”可以包括存储在计算机系统上的数字数据或信息的任何有限元素。数据文件可以被组织成计算机提交系统或另一数据结构,例如数据库。
“库”可以包括软件应用程序使用的非易失性资源的集合。所述非易失性资源可以包括例如软件应用程序使用的软件模块。
“共享秘密”可以包括秘密值(例如,数字),所述秘密值由两方或更多方已知或导出并由这些方保密。共享秘密可以用于密码过程以便导出另一密码值,例如用于执行对各方之间发送的消息的加密和解密的对称密码密钥。
“密钥导出函数”可以包括用于导出密码密钥的任何函数。密钥导出函数可以采用一个或多个输入并产生对应于特定底层密码系统(例如,AES)的密码密钥。这些输入可以包括例如种子值和密码盐或随机数。密钥导出函数可以是一致的,即密钥导出函数在具有相同输入时将产生相同的密码密钥。
“密钥封装机制”可以包括加密技术,所述加密技术被设计成使用非对称密码算法来保护对称密码密钥用于发送。使用“封装函数”和公用密码密钥,计算机系统可以生成“封装”、包括封装的密码材料(例如,对称密码密钥)的数据元素。此封装可以发送到接收方计算机,所述接收方计算机随后可以使用专用密码密钥对封装进行解封装以恢复封装的密码材料。可以使用后量子技术生成封装,例如使得功能足够强大的量子计算机无法“破解”封装并获取封装的密码材料。
“凭证”可以包括证明实体的一些方面的任何数据。所述数据可以包括例如指示实体有权访问特定服务的密码。凭证的另一示例是实体用于授权来自实体支付账户的支付的支付账号(或PAN)。凭证可以由例如金融机构等第三方发到实体。
“证书颁发机构”可以包括发数字凭证的实体。数字证书可通过证书的指定主题来证明对数据(例如公钥)的所有权。这可以使得其他方可依赖于关于与经认证公钥相对应的私钥作出的签名或断言。证书颁发机构可以充当受信任第三方。
附图说明
图1示出了根据一些实施例的敏捷密码部署服务的示例性系统框图。
图2示出了对应于根据一些实施例的方法的概述的流程图。
图3示出了对应于根据一些实施例的注册过程的系统图。
图4示出了根据一些实施例的安全通信过程的序列图。
图5示出了根据一些实施例的安全通信过程的系统图。
图6示出了根据一些实施例的密码部署过程的序列图。
图7示出了根据一些实施例的密码部署过程的系统图。
图8示出了根据一些实施例的示例性计算机系统。
具体实施方式
如上所述,实施例涉及使用灵活、密码敏捷的协议安全地发送消息。实施例可以用于各种应用程序、计算机配置和网络架构,例如客户端-服务器架构,其中计算机系统(有时被称为“客户端计算机”)可以操作客户端应用程序并且可以与服务器计算机通信。服务器计算机可以提供客户端应用程序使用的计算资源。作为实施例的潜在应用程序的示例,在计算机系统上操作的客户端应用程序可以是用于执行销售点操作(特别是与处理支付有关的操作)的软件应用程序。作为这些销售点操作的一部分,计算机系统可以定期将消息发送到服务器计算机。这些消息可以包括例如支付信息,例如支付账号(PAN),或客户端应用程序用来访问存储在服务器计算机上的计算资源的登录信息。
因为所发送消息可以包括专用或其它敏感信息,所以计算机系统可能需要在将消息发送到服务器计算机之前加密消息。计算机系统可以根据已经在计算机系统与服务器计算机之间协商的密码协议加密消息。此密码协议可以由密码协议文件、标识(来自密码软件库中的密码软件模块之中的)密码软件模块的数据文件定义,所述数据文件可以用于加密消息,使得消息可以由服务器计算机安全地发送和解密。计算机系统可以使用由协议文件标识的一个或多个密码软件模块来生成一个或多个秘密份额,所述秘密份额又可以用于生成用于加密消息的会话密钥。这些秘密份额可以包括对应于其底层密码软件模块的密码密钥。例如,使用RSA软件模块产生的秘密份额可以包括RSA密码密钥。会话密钥可以使用混合密钥导出函数来导出,所述混合密钥导出函数将共享秘密作为输入并产生会话密钥作为输出。
在用会话密钥加密消息之后,计算机系统可以生成包括所加密的消息和计算机系统标识符的消息包。计算机系统可以将消息包发送到服务器计算机。使用计算机系统标识符,服务器计算机可以确定计算机系统用来加密消息的密码协议。服务器计算机可以使用类似于计算机系统使用的方法根据相关密码协议生成会话密钥。之后,服务器计算机可以使用会话密钥来解密所加密的消息。
在一些实施例中,计算机系统和服务器计算机可以使用密钥封装机制来使服务器计算机能够解密所加密的消息。广义上,计算机系统可以使用一个或多个公钥(对应于用于生成秘密份额的一个或多个密码软件模块),以便生成对应于用于生成会话密钥的一个或多个秘密份额的一个或多个封装。计算机系统可以在消息包中或任何后续消息或消息包中将这些封装发送到服务器计算机。服务器计算机可以使用解封装函数和一个或多个对应的密码密钥(例如,对应于一个或多个公钥的私钥)来解封装这些封装。以此方式,服务器计算机可以获取秘密份额并使用秘密份额来生成会话密钥,会话密钥之后可以用于解密所加密的消息。
服务器计算机可以拥有对应于与所接收的计算机系统标识符相关联的计算机系统的协议文件。此协议文件可以被称为“服务器计算机协议文件”,并且可以存储在数据库中。服务器计算机可以使用计算机系统标识符来使用计算机系统标识符在数据库中查找服务器计算机协议文件。然后,服务器计算机可以根据由服务器计算机协议文件定义的密码协议生成会话密钥,并解密所加密的消息。服务器计算机协议文件可以是许多服务器计算机协议文件中的一个,并且每个服务器计算机协议可以对应于不同的客户端计算机和客户端计算机协议文件。
有时,计算机系统和服务器计算机可以更新用于安全地发送消息的密码协议。作为示例,如果发现用于生成会话密钥的一个或多个密码软件模块不安全,则可以更新密码协议。如果计算机技术的进步导致新的密码攻击从而可能破解底层密码系统(例如可靠量子计算机的开发),则可能发生这种情况。作为另一示例,如果计算机系统具有特定性能要求,则可以更新密码协议。以高速率发送消息的计算机系统可能需要比当前密码协议更快地加密或解密消息的密码协议,因此,计算机系统和服务器计算机可以更新密码协议以适应这些要求。
总之,更新过程可以涉及服务器计算机向计算机系统预配一个或多个附加密码软件模块、计算机系统和服务器计算机更新其相应的协议文件,以及计算机系统和服务器计算机测试新的密码协议。
如上所述,作为更新过程的一部分,服务器计算机可以将附加密码软件模块发送到计算机系统。附加密码软件模块可以由服务器计算机、证书颁发机构或受信任执行环境装置制造商进行数字签名。计算机系统可以使用数字签名来验证附加密码软件模块是合法的。计算机系统可以包括密码软件模块库中的附加密码软件模块。值得注意的是,在一些情况下,密码协议可以被更新以使用计算机系统的密码软件模块库中已经可用的不同软件模块或软件模块组合。因此,将附加密码软件模块发送到计算机系统的步骤可以是任选的。
在计算机系统(任选地)从服务器计算机接收附加密码软件模块之后,计算机系统和服务器计算机可以更新其相应的协议文件。提醒一下,协议文件可以标识用于生成秘密份额的密码软件模块,所述秘密份额随后用于生成会话密钥。可以更新协议文件以改变协议文件标识的密码软件模块。例如,可以更新协议文件以标识从服务器计算机接收的附加密码软件模块。例如,如果这些一个或多个密码软件模块已被证明是不安全的,也可以更新协议文件以不再标识一个或多个密码软件模块。
在计算机系统接收到任何附加软件模块并且协议文件被更新之后,计算机系统和服务器计算机可以测试新的密码协议以验证计算机系统和服务器计算机可以使用新的协议文件来安全地传送消息。计算机系统可以生成测试消息,然后根据新的密码协议加密测试消息(例如,通过使用新标识的密码软件模块生成秘密份额,通过使用那些秘密份额生成会话密钥等)。计算机系统可以将所加密的测试消息发送到服务器计算机。服务器计算机可以根据新的密码协议解密消息,并生成可以发送回计算机系统的指示消息。计算机系统可以评估指示消息以确定测试是否成功。
作为示例,指示消息可以包括原始测试消息或测试消息的散列。计算机系统可以将指示消息与测试消息或测试消息的散列进行比较,以便确定测试是否成功。替代地,发送到服务器计算机的测试消息可以是预期或已知消息。在解密测试消息之后,服务器计算机可以将所解密的测试消息与预期测试消息进行比较。如果它们匹配,则服务器计算机可以将指示消息“真”发送回计算机系统。如果它们不匹配,则服务器计算机可以将消息“假”发送回计算机系统。如果测试不成功,则计算机系统和服务器计算机可以重新协商或以其它方式修改密码协议并再次尝试测试。如果测试成功,则计算机系统和服务器计算机可以使用更新的密码协议将计算机系统发送的任何其它消息安全地发送到服务器计算机。
本公开的实施例提供了若干个优点。具体地,计算机系统协议文件、服务器计算机协议文件和密码软件模块的使用使得计算机系统和服务器计算机的运营商可相对快速且容易地以自动化、密码敏捷的方式更新其密码通信协议。为了修改密码协议,计算机系统和服务器计算机都可以修改其相应的协议文件以反映密码协议的相同变化。这与常规系统形成对比,在常规系统中,密码协议通常被“硬编码”到特定应用程序或通信实施方案中,并且难以或不可能被修改。密码协议的敏捷和自动更新在大型系统中尤其有价值,所述大型系统例如支付处理网络,可以包括大量商家计算机系统,每个商家计算机系统有自己的相应密码协议。另外,本公开的实施例可以帮助保护所加密的消息免受将来设计的密码攻击或计算机系统类型(例如,量子攻击或其它未知形式的密码攻击)的影响,甚至是被设计成破坏或利用数学或密码假设的系统的影响。通过使得可修改密码协议,实施例实现安全、敏捷的移动目标防御。
本公开的其余部分组织如下:第I部分描述根据参考图1的实施例的示例性系统。第II部分描述根据实施例的一些方法的概述,包括注册、加密和解密以及更新密码协议(参考图2)。第III部分参考图3更详细地描述注册。第IV部分参考图4和5更详细地描述加密和解密。第V部分参考图6和7描述更新密码协议。第VI部分描述使用新的密码协议来加密和解密消息。最后,第VII部分参考图8描述根据一些实施例的计算机系统。
I.密码敏捷的系统的概述
图1示出了根据一些实施例的系统的框图。任何数量的计算机系统,例如计算机系统106和108,可以经由其相应的客户端应用程序(例如,客户端应用程序110和112)与应用程序服务器114通信。这些计算机系统可以由例如运营商102和104等运营商拥有或操作。应用程序服务器114可以是任何合适的服务器,因此术语“应用程序”不应被视为本身的限制。
应当理解,图1中所示的计算机和其它装置(例如,计算机系统106-108、应用程序服务器114、运营商数据库116、密码服务器118等)可以通过任何合适的通信信道或通信网络彼此进行操作性通信。合适的通信网络可以包括以下中的任一个和/或组合:直接互连;互联网;局域网(LAN);城域网(MAN);作为互联网上节点的运行任务(OMNI);安全定制连接;广域网(WAN);无线网络(例如,采用例如但不限于无线应用协议(WAP)、I-模式等的协议)等等。计算机、网络和装置之间的消息可以使用安全通信协议发送,所述安全通信协议是例如但不限于文件传输协议(FTP);超文本传输协议(HTTP);安全超文本传输协议等。
计算机系统106和108可以使用其相应的客户端应用程序110和112来执行与客户端应用程序的功能相关联的操作。例如,如果客户端应用程序对应于销售点应用程序,则计算机系统106和108可以使用客户端应用程序110和112来执行通常与销售点终端相关联的操作。客户端应用程序110和112可以主要利用存储、执行或包括在应用程序服务器114上而不是计算机系统106或计算机系统108上的计算资源(例如,数据、函数、代码、内存、处理等)。这种配置可能是有利的,因为它可以减少计算机系统106和108上的计算负担,并且使得计算较弱的系统(例如智能手机、平板计算机、PDA等)能够执行它们通常无法执行的操作。作为一个示例,计算机系统106和108可包括通用便携式计算装置(例如智能手机和平板计算机),其使用客户端应用程序110和112来执行与常规销售点终端相关联的操作,例如处理信用卡和借记卡支付。在此示例中,运营商102和104可以包括向客户提供商品或服务以换取支付的资源提供商(例如,商家)。
由客户端应用程序110和112执行的操作可以包括例如将消息安全发送到应用程序服务器114。作为示例,消息可以包括支付信息,例如用于授权资源提供商运营商与客户之间的交易的支付账号(PAN)。作为另一示例,消息可以包括登录信息,所述登录信息由应用程序服务器114用于在向计算机系统106和108提供服务(例如,与销售点系统相关联的服务、账户管理服务等)之前认证计算机系统106和108。
计算机系统106和108可以使用密码术,以便例如通过加密那些消息来安全地发送消息。每个计算机系统可以使用特定密码协议,以便加密发送到应用程序服务器114的消息。计算机系统106和108可以使用相同的密码协议,或者可以使用不同的密码协议。计算机系统106和108可以基于其对应运营商的特定密码需求或需要,或基于计算机系统的硬件属性或限制来使用不同的密码协议。例如,计算机系统106可以频繁地发送具有相对低的安全要求的消息(例如,在导航相关客户端应用程序110中使用的位置数据),而计算机系统108可以不频繁地发送具有高的安全要求的消息(例如,在医疗保健相关客户端应用程序112中使用的医疗记录)。因此,运营商102可能更喜欢快速的密码协议,即使其密码安全性有些欠缺,而运营商104可能更喜欢安全的密码协议,即使其处理速度有些欠缺。
计算机系统106和108可以各自存储相应的计算机系统协议文件(例如,协议文件120和122),所述计算机系统协议文件可以定义由对应的计算机系统使用的密码协议。协议文件120和122可以集成到客户端应用程序110和112中,或者可以单独存在。密码协议文件可以标识用于生成用于加密消息的会话密钥的一个或多个密码软件模块(例如,密码软件模块128和130)。协议文件120和122可以被修改以改变用于生成会话密钥的密码软件模块,如下文第V部分所述。如果例如已发现一个或多个密码软件模块128和130不安全,则可能发生这种情况。替代地,可以基于运营商需求修改密码协议。例如,如果计算机系统108的消息吞吐量增加,则运营商104可能需要更快的密码协议,以便适应增加的消息发送速率。
由协议文件120和122标识的密码软件模块128和130可以包括用于执行密码操作的代码,例如解释代码(例如,以JavaScript等语言编写)。密码软件模块128和130可能在注册阶段期间由应用程序服务器114发送到计算机系统106和108(例如,如下文第III部分所述)。另外,密码软件模块128和130可以由应用程序服务器114或证书颁发机构进行数字签名。数字签名可以证明签名的密码软件模块是合法的。计算机系统106和108可以包括或以其它方式存储密码软件模块库124和126以存储密码软件模块128和130。在一些实施例中,计算机系统106和108可以包括存储这些密码软件模块库124和126的受信任执行环境(TEE)。在一些实施例中,密码软件模块128和130可以由受信任执行环境制造商进行签名。
如上所述,应用程序服务器114可以提供由客户端应用程序110和112用来执行与计算机系统106和108的预期功能相关联的操作(例如,销售点操作)的计算资源。这些运营商可以包括从计算机系统(包括计算机系统106和108)接收所加密的消息,以及根据由这些计算机系统使用的密码协议(例如,由协议文件120和122定义的密码协议)解密这些消息。应用程序服务器114可以维护运营商数据库116,所述运营商数据库可以包含数据库条目,所述数据库条目包括与每个运营商或每个运营商的账户相对应的信息以及由应用程序服务器114提供的服务。运营商数据库116可以包括身份管理系统的一部分,所述身份管理系统创建、管理和删除用户(例如,运营商)对系统资源的访问。运营商数据库116中的数据库条目可以包括服务器计算机协议文件(例如,协议文件138和140)。这些服务器计算机协议文件138和140可以包括用于标识或定义由对应计算机系统使用的密码协议(例如,如由上述计算机系统的计算机系统协议文件所定义)的信息。
为了解密从计算机系统106和108接收的消息,应用程序服务器114可以与密码服务器118通信。密码服务器118可以包括专用硬件或执行与密码术相关联的专用代码。例如,密码服务器118可以包括一个或多个硬件安全模块(HSM),其用于存储密码密钥或执行密码函数,例如密钥生成、密码方式安全密码数字生成等。HSM可以包括经典硬件安全模块134,用于执行与经典密码术相关联的密码操作。除了任何数量的附加HSM 142之外,所述HSM还可以包括后量子硬件安全模块136,用于执行与后量子密码术相关联的密码操作。在标识用于加密从计算机系统中的一个接收的消息的特定密码协议之后,应用程序服务器114可以与密码服务器118通信,以根据对应的密码协议请求解密所述消息。在一些实施例中,应用程序服务器114和密码服务器118可以包括单个服务器计算机实体。
密码服务器118可以包括基于云的服务的一部分,所述基于云的服务向应用程序服务器114提供密码服务,包括例如安全地存储密码信息(例如密码密钥)、使用解封装函数执行解封装、生成共享秘密、根据密码协议文件生成会话密钥以及生成和验证数字签名。另外,密码服务器118可以执行与更新用于加密和解密消息的密码协议相关联的函数。密码服务器118可以存储可用于生成秘密份额的密码软件模块。这些密码软件模块可以存储在HSM中,例如经典HSM 134、后量子HSM 136、附加HSM 142或任何其它适当的存储元件。作为更新过程的一部分,密码服务器118可以将这些密码软件模块发送到计算机系统(例如计算机系统106和108),以便更新这些计算机系统使用的密码协议。此发送可以由应用程序服务器114介导(例如,密码服务器118可以将密码软件模块发送到应用程序服务器114,所述应用程序服务器随后可以将密码软件模块发送到计算机系统106和/或108)。
另外,密码服务器118可以包括接口132。此接口可以使应用程序服务器114能够与密码服务器118通信。接口132还可以使应用程序服务器114能够请求由密码服务器118提供的服务(例如,对所加密的消息的解密)。接口132可以包括支持抽象层的一个或多个应用程序编程接口(API),这可以使得应用程序(例如客户端应用程序110和112)能够以密码敏捷的方式构建。这可以通过使用通用的非特定API函数来实现。概括地说,由密码服务器118执行的函数可以设计成使得应用程序服务器114或客户端应用程序110和112不需要理解或说明这些函数的操作以便使用这些函数。这些函数的细节由密码服务器118执行,可以在不需要修改API函数的情况下被改变或以其它方式修改。因此,即使由密码服务器118执行的函数被修改,在计算机系统106、108或应用程序服务器114上运行的应用程序也不会被这些修改破坏或以其它方式变得无效,因此,可以更敏捷且更不容易出错的方式开发密码应用程序。
密码服务器118可以提供其它服务,例如漏洞管理、密钥管理、撤销、风险评估等。这可以通过维护与每个密码软件模块的安全性有关的策略或策略文件144来实现。如果发现漏洞、错误配置或数学弱点,则风险评估模块146可以确定是否应修改或丢弃特定密码软件模块。
II.对注册、加密和更新的概述
图2示出了对应于根据实施例的一些示例性方法的概述的流程图。图2的流程图广泛地示出了三个阶段。图2中描绘的第一阶段是注册阶段202,在此期间,计算机系统可以向服务器计算机提供的密码服务注册,接收初始密码软件模块集合,并与服务器计算机建立初始密码协议。图2中描绘的第二阶段是加密和解密阶段204,在此期间,计算机系统可以生成会话密钥并使用会话密钥加密消息。然后,计算机系统可以将所加密的消息发送到服务器计算机,服务器计算机随后可以解密消息。图2中描绘的第三阶段是密码协议更新阶段,其可以包括添加或删除密码软件模块、更新协议文件,以及通过加密和发送测试消息然后验证测试消息被成功解密来测试新的密码协议文件。图2仅旨在作为根据实施例的一些方法的简要概述,因此,一些实施例可以涉及图2中未描绘的步骤或阶段。
在注册阶段202期间,在步骤202-1处,计算机系统(例如,图1的计算机系统106)可以向服务器计算机(例如,密码服务器118)提供的密码服务发起注册。发起注册可以涉及例如计算机系统的运营商使用计算机系统导航到与服务器计算机相关联的网页。此网页可以包括运营商可以填写以便完成注册过程的表格。所述表格可以包括例如计算机标识符字段、所需的用户名和密码字段、电子邮件地址字段等字段。作为另一示例,计算机系统可以通过向服务器计算机发送请求消息来发起注册,所述请求消息包含计算机系统标识符或其它凭证(例如用户名和密码)以及指示计算机系统打算向密码服务注册的标志。在初始注册步骤之后,在步骤202-2处,计算机系统可以接收初始密码软件模块集合。作为示例,初始模块集合可以例如响应于由服务器计算机提供的链接从服务器计算机直接发送或由第三方提供商获得。之后,在步骤202-3处,计算机系统和服务器计算机可以通过在协商阶段期间交换一系列消息来建立初始密码协议。在下文第III部分中更详细地描述注册阶段202。
在加密和解密阶段204期间,在步骤204-1处,计算机系统可以使用初始密码协议来生成会话密钥。在步骤204-2处,可以使用此会话密钥来加密打算用于服务器计算机的消息。随后在步骤204-3处,计算机系统可以将所加密的消息发送到服务器计算机,另外在步骤204-3处,计算机系统可以将一个或多个封装发送到服务器计算机。在步骤204-4处,服务器计算机可以生成对应的会话密钥。在一些实施例中,服务器计算机可以对一个或多个封装进行解封装以生成一个或多个秘密份额,然后服务器计算机可以组合所述秘密份额以生成会话密钥。在步骤204-5处,服务器计算机可以使用会话密钥解密消息。在下文第IV部分中更详细地描述加密和解密阶段204。
在密码协议更新阶段06期间,计算机系统和服务器计算机可以执行与更新密码协议相关联的各种操作。例如,在步骤206-1处,计算机系统和服务器计算机可以从计算机系统上的密码软件模块库添加或删除密码软件模块。另外,在步骤206-2处,计算机系统和服务器计算机可以更新其相应协议文件以反映密码软件模块库的变化。在步骤206-3处,计算机系统和服务器计算机可以通过加密和发送测试消息然后验证测试消息被成功解密来测试新的密码协议。在下文第V部分中更详细地描述密码协议更新阶段。之后,计算机系统和服务器计算机可以返回到加密和解密阶段204。然后,计算机系统可以使用新的密码协议来加密发送到服务器计算机的消息。同样,服务器计算机可以使用新的密码协议来解密由计算机系统发送的消息。在下文第VI部分中更详细地描述使用更新的密码协议加密和发送消息。
III.注册
注册阶段可以涉及计算机系统接收用于与服务器计算机(例如,应用程序服务器)安全地通信的软件。这可以包括接收可由计算机系统操作的一个或多个客户端应用程序。还可以包括接收可用于生成会话密钥的一个或多个密码软件模块,所述会话密钥可用于加密发送到服务器计算机的消息(例如,包含例如医疗记录或支付信息等敏感信息的消息)。注册阶段可以进一步包括计算机系统和服务器计算机协商用于生成会话密钥以及加密和解密消息的初始密码协议。在协商密码协议之后,计算机系统可以修改或生成计算机系统协议文件以标识用于生成会话密钥的一个或多个软件模块。同样,服务器计算机可以修改或生成对应的服务器计算机协议文件以标识用于生成会话密钥的一个或多个软件模块。服务器计算机可以在加密和解密阶段期间使用此服务器计算机协议文件来解密由计算机系统发送的所加密的消息(例如,如下文第IV部分中所述)。
图3示出根据一些实施例的示例性系统图。图3包括(在计算机系统上操作的)客户端应用程序302、应用程序服务器304、密码服务器306和运营商数据库308。在一些实施例中,应用程序服务器304和密码服务器306可以包括单个服务器计算机。客户端应用程序302可以包括瘦应用程序,并且可以例如受到相对低的内存占用率和处理能力要求的限制。
在一些实施例中,注册过程涉及在计算机系统上安装客户端应用程序302。在其它情况下,假设客户端应用程序302在注册之前就已经安装在计算机系统上。例如,客户端应用程序302可能已经由计算机系统的运营商手动安装。应用程序服务器304可以通过将客户端应用程序302发送到计算机系统来促进安装过程。替代地,应用程序服务器304可以将软件开发工具包(SDK)发送到计算机系统,使得计算机系统的运营商能够使用SDK将密码函数包括到其自身的客户端应用程序302(例如,由计算机系统的运营商开发和产生的客户端应用程序)中。
客户端应用程序302或SDK可以包括密码软件模块库310,所述密码软件模块库包括一个或多个密码软件模块。图3示出了六个密码软件模块:ECDH模块312、RSA-OAEP模块314、Kyber模块316、NTRU模块318、DSA模块320和RSA-PSS模块322。这些密码软件模块可以各自对应于具有对应名称的密码系统。例如,ECDH模块312可以对应于椭圆曲线迪菲-赫尔曼密码系统,并且可以用于执行与所述密码系统相关联的密码操作。应理解,本公开的实施例可以用任何数目和组合的密码软件模块来实践,并且不限于图3所描述的那些密码软件模块。图3中的密码软件模块仅旨在提供示例。另外值得注意的是,客户端应用程序302在注册阶段之前可能不拥有密码软件模块312-322,并且可以在注册阶段期间被预配有密码软件模块312-322。
密码软件模块可以用由证书颁发机构发出的数字证书支持的数字签名进行签名。在图3中,此证书颁发机构被指定为CA1。(CA1在下文更详细地进行描述)。这些数字签名可以抵御经典伪造和后量子伪造。因此,如果客户端应用程序302或计算机系统的运营商信任CA1,则同样可以信任签名的密码软件模块源自服务器计算机和/或密码服务器306。作为安全措施,密码软件模块库310可以被编程或配置成使得库中仅可以包括具有有效签名的模块,否则,密码软件模块库310中的模块仅被读取和执行。
在步骤334处,在客户端应用程序302已安装之后,客户端应用程序302可以通过向应用程序服务器304发送注册消息来发起注册过程。除了指示客户端应用程序302打算向应用程序服务器注册之外,注册消息(或任何后续消息)可以包括注册过程所需的任何信息,例如计算机系统标识符或对应于计算机系统的运营商的标识信息(例如,姓名、电子邮件地址等)。应用程序服务器305可以在运营商数据库308中创建数据库条目,所述数据库条目包含注册消息中包括的任何信息或从客户端应用程序接收的任何后续消息。另外,在步骤334处,客户端应用程序302和应用程序服务器304可以经由证书颁发机构CA1建立信任。此过程可以涉及例如客户端应用程序302和应用程序服务器304(或其相应运营商)验证CA1是合法且可信的证书颁发机构。CA1可以返回密码软件模块中包括的数字签名,使得客户端应用程序302能够信任那些密码软件模块是合法的。在交换和评估注册消息中的信息并建立对CA1的信任之后,客户端应用程序302和应用程序服务器304可以开始载入用于加密和签名的密码软件模块的过程。
之后,在步骤336处,应用程序服务器304可以与密码服务器306对接以检取可由客户端应用程序302用来生成会话密钥并加密消息的密码软件模块。应用程序服务器304可以使用密码服务器接口324从密码服务器306检取这些密码软件模块。此接口324可以包括API,其向应用程序服务器304暴露函数,例如recommendModule()函数324-1、generateKeyPair()函数324-2、getSessionKey()函数324-3、encrypt()函数324-4、decrypt()函数324-5和sign()函数324-6。接口324可以暴露其它任何数量的其它函数(未示出),所述其它函数可以与密码操作有关,并且可以由应用程序服务器304在其操作期间使用。这些函数可以包括例如与例如风险管理相关联的函数,例如使得应用程序服务器能够评估与特定密码软件模块的用途相关联的风险的函数、用于执行密钥撤销的函数等。值得注意的是,并非所有所描述的函数都可以在注册阶段期间使用。这些函数中的一些或全部可用于稍后阶段,例如加密和解密阶段,如上文参考图2在第II部分中所描述的。例如,如getSessionKey()324-3等函数可以用于加密和解密阶段,但在注册阶段期间可能不需要。
recommendModule()函数324-1可以在注册阶段或密码协议更新阶段(如第V部分中所述)期间用于标识或以其它方式确定可用于实施密码通信协议的一个或多个密码软件模块,所述密码通信协议用于将消息从客户端应用程序302安全地发送到应用程序服务器304。这些密码软件模块可以部分地基于操作客户端应用程序302的计算机系统的性能能力和安全要求、基于运营商偏好等来确定。例如,如果客户端应用程序302在具有特定存储器限制(例如,小于1GB的RAM)的计算机系统上操作,则应用程序服务器304可以使用recommendModule()函数324-1将包括客户端应用程序302可用的存储器量的实际参数(argument)传递到密码服务器306。密码服务器306可以使用这些存储器限制来标识可由客户端应用程序302操作的密码软件模块。
generateKeyPair()函数324-2可以用于生成包括公钥和私钥的非对称密钥对。generateKeyPair()函数324-2可以将公钥返回到应用程序服务器304,所述应用程序服务器随后可以将公钥提供给客户端应用程序302。公钥和私钥可以在各种适用的密码上下文中使用,例如,这些公钥可以由密码软件模块库310中的密码软件模块使用,以便执行例如加密、解密、生成会话密钥等密码操作。
密码服务器306可以使用getSessionKey()函数324-3来生成会话密钥,所述会话密钥用于加密和解密在客户端应用程序302与应用程序服务器304之间发送的消息。getSessionKey()函数324-3可以使用密钥导出函数和一个或多个秘密份额来生成会话密钥。作为替代方案,getSessionKey()函数324-3可以使用一个或多个封装(例如,在加密和解密过程期间从计算机系统接收到,如下文参考图4在第IV.A部分所述)作为输入,使用解封装函数来生成一个或多个秘密份额,并使用密钥导出函数和解封装的秘密份额来生成会话密钥。会话密钥可以保存在存储器中或返回到应用程序服务器304以加密和解密消息。
应用程序服务器304可以使用encrypt()函数324-4来请求使用例如生成的会话密钥等指定密钥加密数据(例如,消息)。应用程序服务器304可以使用密钥标识符来标识指定密钥,所述密钥标识符可以标识由密码服务器306存储的特定公钥、私钥或会话密钥。密码服务器306可以将此密钥存储在任何适当的硬件安全模块中,例如硬件安全模块328或330。密码服务器306可以检取指定密钥,然后使用指定密钥加密所提供的数据。
同样,应用程序服务器304可以使用decrypt()函数324-5来请求使用指定密钥解密数据(例如,所加密的消息)。应用程序服务器304可以使用密钥标识符来标识指定密钥,所述密钥标识符可以标识由密码服务器306存储的特定公钥、私钥或会话密钥。密码服务器306可以将此密钥存储在任何适当的硬件安全模块中,例如硬件安全模块328或330。密码服务器306可以检取指定密钥,然后使用指定密钥解密所提供的数据。
应用程序服务器304可以使用sign()函数324-6来请求生成对应于数据(例如,消息)的数字签名。这可以多种方式实现。作为一个示例,应用程序服务器304可以使用sign()函数324-6将数据提供到密码服务器306。密码服务器306可以检取签名密钥(例如,来自硬件安全模块328或330),并使用签名密钥来生成数字签名。密码服务器306随后可以将数字签名返回到应用程序服务器304。
对应于由密码服务器306提供的密码软件模块(例如,密码软件模块312-322)的密码密钥可以存储在与密码服务器306相关联的一个或多个硬件安全模块(HSM)中。例如,与经典密码系统相关联的密码软件模块可以存储在用于经典密码术的硬件安全模块328中。同样,与后量子密码相关联的密码软件模块可以存储在用于后量子密码术的硬件安全模块330中。另外,密码服务器306可以包括任何数量的其它硬件安全模块,例如与理论“后-后量子”密码术相关联的硬件安全模块。
硬件安全模块可以存储密码密钥和密码服务器306使用的密码函数。这些密码函数可以包括密钥生成函数,例如用于生成经典密码密钥的经典密钥生成算法(KeyGenCC())306-3,以及后量子密钥生成算法(KeyGenPQC())306-4。密码服务器306可以在注册过程之前使用KeyGen预计算函数306-5预计算这些密码密钥。KeyGen预计算函数306-5可以调用KeyGenCC()306-3和KeyGenPQC()306-4,以便预计算密码密钥。KeyGen预计算函数306-5还可以使用KeyGenPQ()函数306-2访问量子密码RNG模块332,以便基于量子物理学的属性生成高熵随机数。这些随机数可以用作密钥生成函数的输入,例如用作种子值或随机数。密码服务器306可以包括任何数量的附加随机数生成器,例如以提供针对其它形式的攻击的安全性。密码服务器接口324可以调用GetKeys()函数306-1,以便从其相应的硬件安全模块检取任何数量的密码密钥或发起生成任何数量的密码密钥。
在步骤338处,密码服务器306可以决定使用哪些密码软件模块作为初始密码协议的一部分(使用例如recommendModule()函数324-1),并将这些密码软件模块返回到应用程序服务器304,使得应用程序服务器304能够将密码软件模块发送到客户端应用程序302。客户端应用程序320接着可以将密码软件模块存储在其密码软件模块库310中。
在图3的示例性系统中,存储在密码软件模块库310中的密码软件模块可以包括两个经典密码模块(ECDH模块312和RSA-OAEP模块314)以及两个后量子密码模块(Kyber模块316和NTRU模块318)。密码软件模块还可以包括两个签名模块:DSA模块320和RSA-PSS模块322。这些密码软件模块可以包括与其底层密码系统相关联的函数(例如,密钥生成算法)。所述密码软件模块可以存储或以其它方式包括对应于这些密码系统的密码密钥。
应用程序服务器304可以使用例如一个或多个客户端应用程序标识符、计算机系统标识符、HSM标识符和密码密钥标识符建立客户端应用程序302、硬件安全模块和密码密钥之间的映射关系。此映射关系可建立并存储在运营商数据库308中。应用程序服务器304还可以针对用于数字签名生成的密码软件模块建立密码密钥、客户端应用程序302和密码服务器306之间的映射关系,并将这些映射关系存储在运营商数据库308中。
在步骤340处,在将客户端应用程序302安装在计算机系统上并载入密码软件模块之后,客户端应用程序302和应用程序服务器304可以协商要使用的初始密码协议。在一些实施例中,可能存在于安装过程期间建立的默认密码协议。在其它情况下,客户端应用程序302可以与应用程序服务器304通信以建立密码协议。这些通信可以包括例如对应于计算机系统(例如,详述计算机系统的密码能力或限制)的系统信息或系统参数。在图3的示例中,如标签302-5所指示,客户端应用程序302和应用程序服务器304已建立密码协议,所述密码协议包括使用密钥导出函数KDF()、ECDH软件模块312和Kyber软件模块316导出密码会话密钥。密码协议可以由计算机系统协议文件(未示出)和对应的服务器计算机协议文件326定义。计算机系统协议文件可以本地存储在运行客户端应用程序302的计算机系统上。服务器计算机协议文件326可以存储在运营商数据库308中。
标签302-1至302-5汇总了客户端应用程序302在注册过程期间执行的一些步骤。在安装客户端应用程序302之后,如标签302-1所指示,客户端应用程序302和应用程序服务器304可以建立对证书颁发机构CA1的信任,所述证书颁发机构提供针对经典和后量子攻击的保护。接下来,在标签302-2处,客户端应用程序302可以从应用程序服务器304接收受信任密码软件模块,包括例如ECDH模块312、RSA-OAEP模块314、Kyber模块316和NTRU模块318。客户端应用程序302可以将这些模块存储在密码软件模块库310中。类似地,在标签302-3处,客户端应用程序302可以接收受信任签名模块,包括DSA模块320和RSA-PSS模块322。客户端应用程序302可以将这些模块存储在密码软件模块库310中。如标签302-4所指示,通向密码软件模块库中这些密码软件模块的文件路径受CA1保护。也就是说,只能利用有效的CA1支持的签名来添加或删除模块,否则这些模块仅被读取和执行。在标签302-5处,客户端应用程序302和应用程序服务器304可以建立用于加密和解密的初始密码协议。在图3中,此初始密码协议涉及使用ECDH模块312和Kyber模块316生成密码密钥。
标签304-1至304-5汇总了应用程序服务器304在注册过程期间执行的一些步骤。在安装客户端应用程序302之后,在标签304-1处,客户端应用程序302和应用程序服务器304可以建立对证书颁发机构CA1的信任,所述证书颁发机构提供针对经典和后量子攻击的保护。接下来,在标签304-2处,应用程序服务器304从密码服务器306检取受信任密码软件模块,并在载入安装过程中将这些模块推送到客户端应用程序302。应用程序服务器304还在运营商数据库308中创建条目(“应用程序配置”),其包括密码软件模块、客户端应用程序302与其存储在密码服务器306中的硬件安全模块中的对应密码密钥之间的映射关系。此映射关系可以使用对应于操作客户端应用程序302的计算机系统的装置或计算机系统标识符来建立。在图3中,这些受信任密码软件模块包括ECDH模块312、RSA-OAEP模块314、Kyber模块316和NTRU模块318。在标签304-3处,应用程序服务器304可以执行涉及客户端应用程序302使用的签名模块的一系列类似步骤,所述签名模块包括DSA模块320和RSA-PSS模块322。
在标签304-4处,应用程序服务器304和客户端应用程序302可以协商初始密码协议。应用程序服务器304可以访问运营商数据库308,以便将协议文件326与对应于客户端应用程序的运营商配置相关联。使用包含在运营商配置中的信息(例如,系统要求或能力),应用程序服务器304可以确定在初始密码协议中使用哪些密码软件模块。如标签304-5所指示,协商的密码协议包括使用ECDH模块312和Kyber模块316来生成用于加密和解密的密码密钥。
IV.加密和解密
在计算机系统和服务器计算机在注册过程期间建立初始密码协议之后,密码协议可用于加密和解密在计算机之间发送的消息。下文描述序列图(图4)和系统图(图5)以便说明此类加密和解密操作。
A.加密和解密序列图
图4示出根据一些实施例的示例性加密和解密过程的序列图。操作客户端应用程序404的计算机系统可以拥有客户端应用程序404打算安全地发送到服务器计算机(可以包括例如应用程序服务器406或应用程序服务器406和密码服务器410的组合)的消息。在一些实施例中,消息可以包括用于授权用户装置(例如,智能手机)的用户(例如,客户)与操作客户端应用程序404的计算机系统的资源提供商运营商(例如,商家)之间的交互(例如,支付交易)的凭证。计算机系统可以例如经由近场通信或另一适当的通信协议从用户装置接收此凭证。作为另一示例,消息可以包括客户端应用程序404用于登录到由应用程序服务器406提供的服务(例如,基于云的销售点服务、视频流媒体服务、数据托管服务等)中的登录信息。
在步骤412处,客户端应用程序404可以基于计算机系统协议文件标识一个或多个密码软件模块。此计算机系统协议文件可以定义客户端应用程序404用来加密消息的密码协议。计算机系统协议文件可以标识用于生成可用于加密消息的会话密钥的一个或多个密码软件模块。这些密码软件模块可以包括存储在密码模块库402中的密码软件模块的子集。这些密码软件模块可以各自对应于底层密码系统,例如,一个密码软件模块可以对应于RSA密码系统,而另一个密码软件模块可以对应于Kyber密码系统。这些密码软件模块可以包括密码数据(例如密码密钥)以及与密码术相关联的函数(例如密钥生成函数或秘密份额生成函数)。尽管图4示出了由密码模块库402执行的某些步骤和由客户端应用程序404执行的某些步骤,但这些步骤可以由这些软件实体中的一个和/或两个执行。
为了安全地传送可随后用于生成会话密钥的共享秘密,在步骤414和416中,操作客户端应用程序404的计算机系统可以使用密钥封装机制(KEM)或其它封装技术。在步骤414处,计算机系统可以使用客户端应用程序404和来自密码模块库402的密码软件模块来生成对应于一个或多个密码软件模块的一个或多个共享秘密。这些共享秘密可以使用由密码软件模块实施的函数生成,并且可以稍后由计算机系统用作密钥导出函数的输入,以便生成用于加密消息的会话密钥。
在步骤416,在一些实施例中,可以使用公钥加密每个共享秘密。应用程序服务器406或密码服务器410可以知晓对应的私钥,使得这些服务器中的一个或两个能够使用对应的私钥解密所加密的共享秘密。此密钥封装机制(包括步骤414和416)可以使得能够通过不安全的计算机网络安全地发送秘密份额,并且可以使应用程序服务器406或密码服务器410能够使用密钥导出函数和共享秘密生成会话密钥,进一步使应用程序服务器406或密码服务器410能够使用会话密钥解密消息。
随后,在步骤418处,操作客户端应用程序404的计算机系统可以将一个或多个封装发送到服务器计算机(例如,应用程序服务器406和密码服务器410)。稍后,在步骤432处,密码服务器410可以对封装进行解封装以产生共享秘密。如上所述,在步骤432处,可以使用这些共享秘密生成用于解密消息的会话密钥。
在步骤420处,可以将由密码模块库402中的密码软件模块生成的共享秘密提供给客户端应用程序404。随后,客户端应用程序404可以使用这些共享秘密来生成用于加密消息的会话密钥。替代地,在一些实施例中,密钥导出函数KDF()可以是密码模块库402的一部分。在这些实施例中,会话密钥可以在密码模块库402中生成,而不是由客户端应用程序404生成。因此,步骤420是任选的。
在步骤422,操作客户端应用程序404的计算机系统可以使用密钥导出函数和一个或多个共享秘密来生成会话密钥。密钥导出函数可以存储在密码模块库402中、客户端应用程序404中或计算机系统的存储器中的其它位置。此会话密钥可以用于加密消息。因此,会话密钥(扩展地说,所加密的消息)与用于生成秘密份额的底层密码系统一样安全,所述秘密份额用于生成会话密钥。例如,如果会话密钥是使用两个秘密份额生成的,一个秘密份额对应于经典密码软件模块,另一个秘密份额对应于后量子密码软件模块,则会话密钥(和所加密的消息)将抵御经典和后量子密码攻击两者。计算机系统还可以使用密钥导出函数和一个或多个共享秘密来生成会话签名密钥。此会话签名密钥可以用于对所加密的消息进行数字签名,使得应用程序服务器406能够验证消息源自客户端应用程序404。
在步骤424处,操作客户端应用程序404的计算机系统可以使用会话密钥加密消息,从而在所述过程中生成所加密的消息。操作客户端应用程序404的计算机系统可以生成包括所加密的消息、计算机系统标识符和任何其它相关信息(例如,时间戳、元数据、标头信息等)的消息包。计算机系统标识符可以由应用程序服务器406用来标识用于加密消息的密码协议。操作客户端应用程序404的计算机系统还可以通过使用会话签名密钥或使用对应于操作客户端应用程序404的计算机系统的私钥对消息包进行签名来生成数字签名。稍后,服务器计算机可以在接收到消息包之后验证数字签名。
在步骤426处,操作客户端应用程序404的计算机系统可以将包括所加密的消息和计算机系统标识符的消息包发送到服务器计算机(例如,应用程序服务器406),此发送可以通过例如互联网等不安全网络或通过任何其它适当网络或通过任何其它适当方式进行。
在步骤428处,应用程序服务器406可以基于在步骤426处在消息包中接收到的计算机系统标识符来标识并获得服务器计算机协议文件。服务器计算机协议文件可以标识用于加密消息的密码协议和对应密码软件模块。在一些实施例中,服务器计算机协议文件可以包括存储在协议文件数据库(例如,运营商数据库408)中的数据库条目。此数据库条目可以另外包括对应于操作客户端应用程序404的计算机系统的公钥。如果适用,应用程序服务器406就可以使用公钥来验证消息包中包括的数字签名,以便验证客户端应用程序404。另外,数据库条目可以包括密钥标识符。密钥标识符可以标识对应于用于执行密钥封装机制的公钥的秘密密钥(例如,在步骤416处)。此秘密密钥可以存储在密码服务器410上的硬件安全模块中。运营商数据库(有时称为协议文件数据库)408可以存储对应于一个或多个计算机系统的一个或多个协议文件,使得不同的计算机系统能够使用不同的密码协议。
在步骤430处,应用程序服务器406可以与密码服务器410通信,以便生成共享秘密和用于解密所加密的消息的会话密钥。在一些实施例中,应用程序服务器406可以使用API或由密码服务器提供的其它合适的接口来请求消息解密。来自应用程序服务器406的通信可以包括例如将封装和密钥标识符发送到密码服务器410。密码服务器410可以使用密钥标识符来标识和检取可用于对共享秘密进行解封装的密码密钥。
在步骤432处,密码服务器410可以生成或以其它方式检取对应于服务器计算机协议文件的一个或多个共享秘密。密码服务器可以稍后使用这些共享秘密来生成用于解密消息的会话密钥。在一些实施例中,密码服务器410可以通过对在步骤430处从应用程序服务器406接收到的封装进行解封装,例如通过使用其对应的私钥解密封装,来产生一个或多个共享秘密。
在一些其它实施例中,密码服务器410可以使用与客户端应用程序402使用的过程类似的过程本地生成共享秘密。密码服务器410可以本地存储一个或多个密码软件模块,使得密码服务器410能够生成一个或多个共享秘密。替代地,密码服务器410可能已经拥有一个或多个共享秘密并已经例如在硬件安全模块中存储了一个或多个共享秘密。作为另一替代方案,密码服务器410可能已经预计算并(例如,在硬件安全模块中)存储会话密钥。因此,步骤432和434可以是任选的。
在步骤434处,密码服务器410可以使用密钥导出函数和一个或多个共享秘密来生成会话密钥。密码服务器410还可以生成会话签名密钥(使用相同的密钥导出函数或类似的密钥导出函数),以便验证消息包中包括的数字签名。
在步骤436处,密码服务器410可以使用会话密钥解密所加密的消息以检取消息。另外,密码服务器410可以使用会话签名密钥来验证消息包中包括的数字签名。
在步骤438处,密码服务器410可以将所解密的消息发送回应用程序服务器406。然后,应用程序服务器406可以基于应用程序服务器406的特定用途或应用来使用所解密的消息。例如,如果应用程序服务器406用于控制对由应用程序服务器406提供的计算资源的访问,则应用程序服务器406可以使用所述消息来验证客户端应用程序404并使其能够访问这些计算资源。作为另一示例,如果应用程序服务器406用于处理支付交易,则应用程序服务器406可以从所解密的消息中提取支付信息,然后将所述支付信息转发到银行或其他实体,以便请求对交易的授权。
作为步骤438的替代方案,密码服务器410可以将会话密钥发送到应用程序服务器406。应用程序服务器406可以使用会话密钥解密所加密的消息以检取消息(而不是如上所述由密码服务器410解密消息)。
B.加密和解密系统图
图5示出详述可由客户端应用程序502和应用程序服务器504使用的加密和解密过程的示例性系统图。在图5的示例中,密码协议涉及基于经典密码(CC)软件模块512和后量子密码(PQC)软件模块514使用混合密钥导出函数来导出密码会话密钥。这些软件模块可以存储在密码软件模块库510中,所述密码软件模块库位于操作客户端应用程序502的计算机系统上。替代地,对应于这些模块的密码密钥可以存储在密钥库532(例如,安全元件或Android平台上的Android密钥库)中。此密码会话密钥可以用于加密随后发送到应用程序服务器504的登录令牌。使用密码服务器506和运营商数据库508,应用程序服务器504可以解密登录令牌并认证客户端应用程序502,从而使得客户端应用程序502可访问由应用程序服务器504提供的资源。
在步骤524处,作为密钥协商过程的一部分,客户端应用程序502可以调用keyEstablishmentManager()函数,所述函数可以用于执行与加密过程相关联的若干步骤,包括步骤502-1至502-7。在步骤502-1处,客户端应用程序502可以使用GetKey_CC()函数从密钥库532检取经典公钥534。经典公钥536可以与经典密码软件模块512一起用来生成用于加密登录令牌的会话密钥。在步骤502-2处,客户端应用程序502可以使用GetKeyPQC()函数从密钥库532检取后量子公钥536。后量子公钥536可以与后量子密码软件模块514一起用来生成用于加密登录令牌的会话密钥。
在步骤502-3处,客户端应用程序502可以使用例如getClassicalModule()函数从密码软件模块库510检取经典密码软件模块512。在步骤502-4处,客户端应用程序502可以使用例如getQuantumModule()函数从密码软件模块库510检取后量子密码软件模块514。应理解,尽管这些步骤具体参考经典和后量子密码密钥和软件模块,但实施例可以利用其它类型的密码密钥和软件模块来实践。
然后,客户端应用程序502可以使用经典公钥534、后量子公钥536、经典密码软件模块512和后量子密码软件模块514来导出用于加密登录令牌的会话密钥。客户端应用程序502可以根据密码协议使用例如上文参考图4所描述的方法,例如使用密钥导出函数,来执行此操作。此密码协议可以由存储在操作客户端应用程序502的计算机系统上的计算机系统协议文件定义。在步骤502-5处,客户端应用程序502可以加密、签名登录令牌并将登录令牌发送到应用程序服务器504。客户端应用程序502还可以发送计算机系统标识符,应用程序服务器504可以使用所述计算机系统标识符来标识客户端应用程序502用于加密消息的密码协议。应用程序服务器504可以开始解密登录令牌的过程,以便将客户端应用程序502登录到由应用程序服务器504提供的服务中。
在步骤526处,应用程序服务器504可以使用标识符(例如,与客户端应用程序502相关联的计算机系统标识符)调用getPrivateKeys_identifier函数,以便标识生成用于解密登录令牌的混合会话密钥所需的私钥,并且从运营商数据库508检取这些私钥。在步骤504-1处,应用程序服务器504可以经由接口516将私钥标识符提供到密码服务器506。此步骤可以使得密码服务器506能够从其相应的硬件安全模块(例如,经典密码硬件安全模块518和后量子密码硬件安全模块520)检取对应的私钥。
在步骤504-2处,应用程序服务器504可以验证签名的登录令牌中包括的签名,以便使用例如verifySignature()函数验证登录令牌源自客户端应用程序502。在步骤504-3处,应用程序服务器504可以(使用例如存储在运营商数据库508中的协议文件538)标识用于导出混合会话密钥的密码协议,所述混合会话密钥可以用于解密登录令牌。
在步骤528和504-3处,应用程序服务器504可以使用密码服务器接口516调用getSessionKey()516-3函数,以便请求会话密钥。在图5的示例性加密和解密过程中,应用程序服务器504可以向密码服务器506提供对应于经典公钥534和后量子公钥536的两个封装以及一个或多个密钥标识符。密码服务器506可以使用密钥标识符来标识对应的私有密码密钥并(从例如硬件安全模块518或520中的任一个)检取对应的私有密码密钥。密码服务器506可以使用对应的私钥来对封装进行解封装,然后使用密钥导出函数和解封装的秘密份额来导出会话密钥。然后,可以将会话密钥返回到应用程序服务器504。
在步骤504-4和530处,应用程序服务器504可以使用会话密钥来解密和验证登录令牌,在这样做时,应用程序服务器504可以验证客户端应用程序502和操作客户端应用程序502的计算机系统可访问由应用程序服务器504提供的计算资源。应用程序服务器504然后可将会话令牌返回到客户端应用程序502,所述会话令牌可用于客户端应用程序502与应用程序服务器504之间的另外通信。
在步骤502-6处,客户端应用程序502可以从服务器接收会话信息,包括会话令牌。在步骤506-7处,客户端应用程序502可以验证会话令牌以完成登录过程。
V.更新密码协议
在使用密码协议安全地发送消息之后,更新密码协议可能是合乎需要的或必需的。作为示例,计算机技术的新发展可能使密码协议中使用的一个或多个密码软件模块变得不安全。为了解决此安全问题,可以更新密码协议以删除不安全的密码软件模块并添加新的安全的密码软件模块。此更新过程可以包括三个步骤:添加或删除密码软件模块、更新密码协议文件以及测试新的密码协议。
A.更新序列图
图6示出详述可在密码协议更新阶段期间使用的方法的序列图。图6包括一系列步骤612-650。密码协议更新阶段可以在密码协议用于执行加密或解密之后发生(例如,如上文第IV部分中所述)。因此,图4所示的一些或全部步骤可以在图6所示的步骤之前,例如步骤418、426、428、432和434。图6所示的一些步骤可以是任选的。
1.添加或删除密码软件模块
在步骤612处,在计算机系统(未示出)上操作的客户端应用程序604或应用程序服务器606可以发起协议更新过程。协议更新过程可以涉及例如包括在密码协议中使用一个或多个密码软件模块、从密码协议中删除一个或多个密码软件模块、定义全新的密码协议(例如,不涉及先前使用的密码软件模块)等。密码协议更新过程可以由客户端应用程序604的运营商(例如商家运营商)或应用程序服务器606的运营商(例如系统管理员)响应于例如使一个或多个密码软件模块变得不安全的新密码术发现或发展来发起。替代地,客户端应用程序604或应用程序服务器606可以被配置成定期更新密码协议,例如每年、每半年、每月或根据任何其它更新计划更新密码协议。操作客户端应用程序604的计算机系统可以通过将请求消息发送到应用程序服务器606来发起更新过程。
请求消息可以请求发送客户端应用程序604打算包括在密码协议中的附加密码软件模块。在一些实施例中,客户端应用程序604可以具体地标识所需的附加密码软件模块,在其它情况下,客户端应用程序604可以请求附加密码软件模块而不需要具体地标识它。例如,请求消息可以基于标识符(例如,对应于后量子密码(PQC)软件模块“x1”的“PQC_x1”)来标识附加密码软件模块。替代地,请求消息可以提供可由应用程序服务器606用来标识附加密码软件模块的参数,例如安全要求(例如,“后量子安全”)。请求消息可另外包括对应于操作客户端应用程序604的计算机系统的计算机系统参数。这些计算机系统参数可以包括例如与操作系统、可用存储器、处理器速度等有关的信息。这些系统参数可以指示操作客户端应用程序604的计算机系统关于操作或执行与密码软件模块相关联的代码的局限性或能力。
代替客户端应用程序604用请求消息发起协议更新过程,应用程序服务器606可以通过向客户端应用程序604推送更新来发起更新过程。作为示例,如果应用程序服务器606、密码服务器610或任一和/或这两个服务器的运营商确定已发现密码协议或密码软件模块不安全,则应用程序服务器606可以向客户端应用程序604推送协议更新。
应用程序服务器606可以选择附加密码软件模块以在密码更新过程期间向客户端应用程序604发送。在一些实施例中,服务器计算机(例如,包括应用程序服务器606和/或密码服务器610的计算机系统或网络)可以基于计算机系统参数从多个附加密码软件模块(例如存储在密码服务器610上的HSM中)中确定附加密码软件模块。应用程序服务器606可以使用计算机系统参数来标识操作客户端应用程序604的计算机系统能够使用的密码软件模块。替代地,如果因安全漏洞(例如,对一个密码系统或一系列密码系统的新发现的可行密码攻击)而发起密码协议更新,则应用程序服务器606可以选择不易受攻击的附加密码软件模块。所选择的附加密码软件模块可以被签名,并且包括对应于服务器计算机(例如,应用程序服务器606)、证书颁发机构或受信任执行环境装置制造商的数字签名。
在步骤614处,应用程序服务器606可以将包括数字签名的附加密码软件模块发送到操作客户端应用程序604的计算机系统。发送可以例如在客户端应用程序604和应用程序服务器606已执行加密和解密操作之后执行,例如上文参考图4在第IV部分中所述。
在步骤616处,操作客户端应用程序604的计算机系统可以使用对应于服务器计算机(例如,应用程序服务器606、密码服务器610或其组合)或证书颁发机构或受信任执行环境装置制造商的公钥来验证密码软件模块。这可以通过验证附加密码软件模块中包括的数字签名来实现。操作客户端应用程序604的计算机系统可以使用公钥解密数字签名,然后评估所解密的内容。例如,数字签名可以包括密码软件模块的加密散列。客户端应用程序604可以生成其自身的密码软件模块的散列,然后将其与通过解密数字签名产生的散列进行比较。如果两个散列匹配,则客户端应用程序604可以确认密码软件模块是合法的。
在步骤618处,如果成功验证附加密码软件模块,则操作客户端应用程序604的计算机系统可以将附加密码软件模块包括在密码模块库602中。在一些实施例中,密码模块库602可以防止客户端应用程序604添加不拥有有效数字签名的附加软件模块。
任选地,在步骤620处,客户端应用程序604可以从密码模块库602中删除密码软件模块。例如,密码软件模块中的一者可能由于计算机技术的进步或漏洞的发现而变得不安全,并且将所述密码软件模块删除以释放空间来添加附加密码软件模块可能是有益的。
2.更新密码协议文件
在步骤622处,一旦附加密码软件模块已包括在密码模块库602中,操作客户端应用程序604的计算机系统就可以更新计算机系统协议文件。计算机系统协议文件可以包括标识用于生成会话密钥并加密消息的一个或多个密码软件模块的数据文件。例如,包括标识符“PQC_x1”的计算机系统协议文件可以指示计算机系统应使用密码软件模块“PQC_x1”来生成可用于导出会话密钥的秘密份额。操作客户端应用程序的计算机系统可以更新计算机系统协议文件以除了其先前标识的一个或多个密码软件模块之外还(例如,通过在计算机系统协议文件中包括附加标识符)标识附加密码软件模块。
任选地,在步骤624处,如果在步骤620处操作客户端应用程序604的计算机系统从密码模块库602中删除密码软件模块,则操作客户端应用程序604的计算机系统可以更新计算机系统协议文件,以例如通过删除对应于一个或多个密码软件模块中的至少一个的标识符而不再标识那些密码软件模块。
在步骤626处,操作客户端应用程序604的计算机系统可以将协议更新消息发送到应用程序服务器606。与图6所示的许多其它步骤类似,这一发送可以在加密和解密操作已经执行之后、在密码协议更新过程之前执行,例如上文参考图4在第IV部分中所述。协议更新消息可以包括计算机系统标识符,可以指示计算机系统协议文件已被更新以包括附加密码软件模块且(任选地)已经不包括一个或多个密码软件模块中的至少一个。协议更新消息可以向应用程序服务器606指示客户端应用程序604正处于更新其计算机系统协议文件的过程中,并且应用程序服务器606可以更新其服务器计算机协议文件以反映变化,从而使得两个系统能够使用新更新的协议进行通信。
在步骤628处,应用程序服务器606可以使用协议更新消息中包括的计算机系统标识符来标识服务器计算机协议文件。此服务器计算机协议文件可以对应于由操作客户端应用程序604的计算机系统存储的计算机系统协议文件。服务器计算机协议文件可以存储在运营商数据库608中,所述运营商数据库可以存储多个服务器计算机协议文件,每个服务器计算机协议文件对应于在应用程序服务器与多个计算机系统之间协商的密码协议,每个计算机系统操作其自身的相应客户端应用程序。
在步骤630处,应用程序服务器606可以更新服务器计算机协议文件以指示计算机系统协议文件标识附加密码软件模块(并且任选地不包括一个或多个密码软件模块中的至少一个)。应用程序服务器606可以使用任何适当的数据库管理工具、技术或软件更新存储在运营商数据库608中的服务器计算机协议文件。
3.测试新的密码协议
在更新计算机系统协议文件和服务器计算机协议文件之后,计算机系统和服务器计算机可以执行密码协议的测试,以验证所述密码协议可用于加密和解密在操作客户端应用程序604的计算机系统与应用程序服务器606之间发送的消息。
在步骤632处,操作客户端应用程序604的计算机系统可以生成测试消息。计算机系统可以稍后加密此测试消息,以便测试新的密码协议。此测试消息可以包括客户端应用程序604和应用程序服务器606两者已知的公共参考字符串,其使得客户端应用程序604和应用程序服务器606能够验证协议已成功更新。替代地,测试消息可以包括表示通常由客户端应用程序604加密和发送的消息的数据。例如,如果客户端应用程序604用于安全地传送支付信息,则测试消息可以包括“虚拟”支付信息,例如虚假支付账号和虚假交易信息。替代地,测试消息可以包括任意数或随机数。
在步骤634处,操作客户端应用程序604的计算机系统可以使用由计算机系统协议文件标识的密码软件模块和附加密码软件模块来生成多个测试共享秘密。测试秘密份额可以对应于密码软件模块和附加密码软件模块中的每一个,并且可以使用与这些密码软件模块相关联的函数来生成。例如,每个测试共享秘密可以包括使用对应于特定密码软件模块的密钥生成函数生成的密码密钥。
在步骤636处,操作客户端应用程序604的计算机系统可以使用密钥导出函数和多个测试共享秘密生成测试会话密钥,例如上文第IV部分中和整个本公开的其余部分中所述。
在步骤638处,操作客户端应用程序604的计算机系统可以使用测试会话密钥来加密测试消息,并将所加密的测试消息发送到应用程序服务器606。加密可以使用由当前计算机系统协议文件指定的任何合适的密码协议。
在接收到所加密的测试消息之后,在步骤640处,应用程序服务器606可以与密码服务器610通信以便解密测试消息。应用程序服务器606可以将一个或多个密钥标识符发送到密码服务器610,以便密码服务器610标识可用于生成多个秘密份额和会话密钥的多个密码软件模块。替代地,如果预计算会话密钥,则密码服务器可以标识并检取存储在其硬件安全模块中的会话密钥。在生成或检取会话密钥之后,密码服务器610可以使用所述会话密钥来解密所加密的测试消息。
在步骤642处,密码服务器610可以生成多个测试秘密份额,然后使用多个测试秘密份额来生成测试会话密钥,然后使用测试会话密钥来解密所加密的测试消息。如果会话密钥被预计算并存储在硬件安全模块中,则密码服务器610可能不需要生成多个测试秘密份额,因此步骤642是任选的。
在步骤644处,密码服务器610可以将所解密的测试消息发送回应用程序服务器606。
在步骤646处,应用程序服务器606可以基于测试消息生成指示消息。在一些实施例中,指示消息可以与测试消息相同。例如,如果测试消息包括例如“测试消息”等字符串,则指示消息可以包括相同的“测试消息”字符串。此指示消息可以发送回客户端应用程序604,并且使得客户端应用程序604能够通过将测试消息与指示消息进行比较来验证测试成功完成。在其它实施例中,指示消息可以包括测试消息的散列,其使用客户端应用程序604和应用程序服务器606两者已知的散列算法进行散列处理。在其它实施例中,指示消息可以是指示测试消息是否被成功解密的表述,例如“真”或“假”。这种配置可适用于测试消息包括客户端应用程序604和应用程序服务器606两者已知的数据(例如公共参考字符串)的实施例中。应用程序服务器606可以将所解密的测试消息与公共参考字符串进行比较,如果匹配则生成指示消息“真”,如果不匹配则生成指示消息“假”。
在步骤648处,应用程序服务器606可以将指示消息发送到操作客户端应用程序的计算机系统。
在步骤650处,操作客户端应用程序604的计算机系统可以通过评估指示消息来确认服务器计算机协议文件已成功更新。在一些实施例中,在指示消息包括测试消息的情况下,计算机系统可以通过确认指示消息与测试消息之间的匹配来确认服务器计算机协议文件已成功更新。在其它实施例中,在指示消息包括测试消息的散列的情况下,客户端应用程序可以生成测试消息的散列并将其与指示消息进行比较,以确认协议测试已成功进行。
B.更新密码协议系统图
图7示出对应于根据一些实施例的示例性协议更新过程的系统图。在图7的示例中,假设已经开发了某种使密码协议变得不安全的新计算机技术。例如,新计算机技术可以使得能够使用算法,所述算法可以在多项式时间中分解大量数字。因此,可以更新密码协议以使用对于此类攻击而言是安全的附加密码软件模块。在此示例中,此软件模块表示为McEliece 720。另外,由于这种新计算机技术可以使得能够伪造由CA1支持的数字签名,因此客户端应用程序702和应用程序服务器704可能需要建立对提供对新技术的保护的新证书颁发机构CA2的信任。
客户端应用程序702或应用程序服务器704可以发起密码协议更新过程。客户端应用程序702可以将指示客户端应用程序702的运营商想要更新密码协议的消息发送到应用程序服务器704。替代地,应用程序服务器704可以向客户端应用程序702推送更新。在一些实施例中,如标签702-1和704-1所指示,客户端应用程序702和应用程序服务器704可能需要在更新密码协议之前建立对新证书颁发机构CA2的信任。这一新证书颁发机构可以使用安全的数学假设来防止新技术的攻击或新形式的密码攻击。CA2可以经由CA1信任和装置根添加到受信任区。CA2添加之后,CA1和CA2可以用于建立进一步的信任。从这一点来说,对应于CA1和CA2的签名可用于验证密码软件模块,例如为了验证新的密码软件模块,客户端应用程序702可以验证其包含对应于CA1和CA2两者的有效签名。作为包括新证书颁发机构CA2的替代方案,可以替代地更新CA1以提供针对新技术的信任。
在步骤704-2处,应用程序服务器704或应用程序服务器704的运营商可以更新密码服务器706以包括新的密码软件模块McEliece 720。另外,应用程序服务器704或应用程序服务器704的运营商可以更新运营商数据库708以指定密码软件模块McEliece 720可以用于密码协议中。在步骤704-3处,应用程序服务器704或应用程序服务器704的运营商可以更新密码服务器706以包括新的量子安全签名模块Falcon 726。另外,应用程序服务器704或应用程序服务器704的运营商可以更新运营商数据库708以指定Falcon726可以用于对消息进行数字签名。
在步骤738处,应用程序服务器704可以从密码服务器706请求新的密码软件模块。应用程序服务器704可以经由其接口728与密码服务器706通信。应用程序服务器704可以在此请求中使用接口函数,例如recommendModule()函数。此接口函数可以使用例如系统和性能能力等信息以及所请求的功能来标识可由操作客户端应用程序702的计算机系统操作的密码软件模块。例如,应用程序服务器704可以请求密码服务器706推荐对于新计算机技术或新开发的密码攻击而言安全的软件模块。
在步骤740处,应用程序服务器704然后可以从密码服务器706接收推荐的模块。在一些实施例中,应用程序服务器704还可以接收签名模块Falcon726,其用于产生不能使用新计算机技术伪造的数字签名。对应于新的密码软件模块McEliece 720和新的签名模块Falcon 726的代码可以由两个证书颁发机构CA1和CA2签名或验证。
在步骤742处,应用程序服务器704可以将这些密码软件模块连同指示应更新密码协议以包括新的密码软件模块的消息一起发送到客户端应用程序702。
客户端应用程序702可以验证对应于CA1和CA2的签名,以便验证新的密码软件模块是合法的。在这样做之后,客户端应用程序702可以在其密码模块库710中包括密码软件模块。在图7所示的示例中,如标签702-2所指示,密码模块库710现在包含八个软件模块:两个经典密码模块ECDH 712和RSA-OAEP 714,两个后量子模块Kyber 716和NTRU 718,和新的量子安全模块McEliece 720,以及如标签702-3所指示,三个签名模块:DSA 722、RSA-PSS724和Falcon 726。如标签702-4所指示,密码软件模块路径受CA1和CA2保护。仅可以基于CA1、CA2和应用程序服务器704更新模块,否则这些模块仅被读取和执行。
在步骤744处,客户端应用程序702和应用程序服务器704然后可以协商新的密码协议。在此示例中,新的密码协议可以包括使用ECDH密码软件模块712、Kyber软件模块716和McEliece软件模块720导出混合密钥。客户端应用程序702和应用程序服务器704可以修改其相应的协议文件(例如,服务器计算机协议文件730)以反映协商的协议。应用程序服务器704可以将协议文件730存储在其运营商数据库708中。
在步骤744处,客户端应用程序和应用程序服务器704可以测试新协议以验证所述新协议将适用于后续加密和解密操作。客户端应用程序702可以使用根据新密码协议导出的会话密钥加密测试消息,并将所加密的测试消息发送到应用程序服务器704。应用程序服务器704可以在运营商数据库708中查找密码协议(有时称为“运营商配置”),然后解密所加密的测试消息。应用程序服务器704可以使用密码服务器706来解密所加密的测试消息。之后,应用程序服务器704可以基于测试消息创建指示消息并将其发送回客户端应用程序702。客户端应用程序702可以评估验证消息以确定测试是否成功完成。
VI.使用新密码协议加密消息
在协商新密码协议、更新计算机系统和服务器计算机协议文件以及测试新密码协议之后,计算机系统和服务器计算机可以使用新密码协议来安全地传送消息。这可以使用与上文在第IV.B部分中描述的步骤、方法或技术类似的步骤、方法或技术来实现。以下示例说明了计算机系统加密“附加消息”并向服务器计算机发送“附加消息”(以将其与更新密码协议之前发送的任何消息区分开来)的可能方式。在此示例中,在先前密码协议更新期间,计算机系统协议文件和服务器计算机协议文件已被更新来标识使用附加密码软件模块实施的附加密码算法(例如,抗量子密码算法)。除了附加密码软件模块之外,计算机系统协议文件和服务器计算机协议文件还标识一个或多个密码软件模块。一个或多个密码软件模块可以包括用于在密码协议更新之前实施密码协议的密码软件模块。
为了加密附加消息,计算机系统可以使用计算机系统协议文件来标识一个或多个密码软件模块和附加密码软件模块。使用这些密码软件模块,计算机系统可以生成对应于一个或多个密码软件模块和附加密码软件模块的多个附加秘密份额。这些秘密份额可以包括例如对应于每个密码系统的密码密钥,每个密码系统对应于每个软件模块。作为示例,对应于AES模块的秘密份额可以包括对称AES密钥。因此,可以使用例如由密码软件模块实施的密钥生成算法来生成这些秘密份额。多个附加共享秘密中的一个或多个可以对应于一个或多个密码软件模块,并且这些共享秘密中的一个可以对应于附加密码软件模块。
在生成多个附加共享秘密之后,计算机系统可以使用密钥导出函数和多个附加秘密份额来生成附加会话密钥。密钥导出函数可以包括在存储在计算机系统上的密码软件模块库中。然后,计算机系统可以使用附加会话密钥加密附加消息,以生成附加所加密的消息。计算机系统可以形成包括附加所加密的消息和计算机系统标识符的附加消息包。计算机系统可以(通过例如互联网等网络)将此附加消息包发送到服务器计算机,以便安全地传送存储在附加消息中的信息或数据(例如,登录信息、支付账号等)。
如果需要,计算机系统可以传送服务器计算机生成附加共享秘密所需的任何信息。例如,在使用封装的实施例中,计算机系统可以使用封装函数(或密钥封装机制)和一个或多个密码密钥来生成一个或多个封装,并将封装发送到服务器计算机。一个或多个密码密钥可以对应于用于生成相应秘密份额的密码软件模块,例如一个或多个密码软件模块和附加密码软件模块。稍后,服务器计算机可以使用解封装函数和一个或多个对应的密码密钥,以便生成一个或多个共享秘密。
服务器计算机可以接收附加消息包,然后使用计算机系统标识符来标识对应于计算机系统协议文件的服务器计算机协议文件。作为示例,服务器计算机可以通过查询存储数据库条目的数据库来标识服务器计算机协议文件,所述数据库条目涉及可使用计算机系统标识符来标识的服务器计算机协议文件及其对应的计算机系统和/或涉及服务器计算机协议文件和对应的运营商账户。此服务器计算机协议文件可以标识用于生成共享秘密的密码软件模块,或替代地,标识服务器计算机用于生成对应共享秘密的密码密钥。
然后,服务器计算机可以使用例如存储在服务器计算机上的多个密码软件模块或多个密码密钥来生成对应于服务器计算机协议文件的多个附加共享秘密。替代地,服务器计算机可以从密码服务器(例如图1中的密码服务器118)请求密码服务。如有必要,服务器计算机和/或密码服务器可以使用解封装函数来使用从计算机系统接收的封装生成多个附加秘密份额。
之后,服务器计算机(或密码服务器)可以使用密钥导出函数和多个附加共享秘密来生成附加会话密钥。使用附加会话密钥,服务器计算机可以解密附加所加密的消息以检取附加消息。然后,服务器计算机可以基于附加消息和服务器计算机的预期功能来执行任何附加操作。例如,如果服务器计算机用于控制对例如订阅流媒体服务、云计算服务等数字资源的访问,则服务器计算机可以评估附加消息中包含的登录信息以便认证计算机系统。作为另一示例,如果服务器计算机用于处理支付交易(例如,信用卡交易),则服务器计算机可以评估存储在附加消息中的支付信息,并将附加消息或支付信息转发到例如发行银行等授权实体。
VII.计算机系统
本文所提及的任何计算机系统都可以使用任何合适数量的子系统。图8中示出计算机系统800中的此类子系统的示例。在一些实施例中,计算机系统包括单一计算机设备,其中子系统可以是计算机设备的组件。在其它实施例中,计算机系统可以包括具有内部组件的多个计算机设备,每个计算机设备是子系统。计算机系统可以包括台式计算机和膝上型计算机、平板计算机、手机和其它移动装置。
图8中示出的子系统通过系统总线812互连。示出了例如打印机808、键盘818、存储装置820、耦合到显示适配器814的监视器824(例如,显示屏,例如LED)等等的附加子系统。耦合到输入/输出(I/O)控制器802的外围装置和I/O装置可以通过本领域中已知的各种构件连接到计算机系统,所述构件例如是输入/输出(I/O)端口816(例如USB、)。例如,I/O端口816或外部接口822(例如以太网、Wi-Fi等)可用于将计算机系统800连接到例如互联网的广域网、鼠标输入装置或扫描仪。经由系统总线812的互连允许中央处理器806与每个子系统连通且控制来自系统存储器804或存储装置820(例如固定磁盘,如硬盘驱动器或光盘)的多个指令的执行,以及子系统之间的信息交换。系统存储器804和/或存储装置820可体现计算机可读介质。另一子系统是数据收集装置810,例如照相机、麦克风、加速度计等等。在本文中提及的任何数据可从一个组件输出到另一组件并且可输出到用户。
计算机系统可以包括多个相同组件或子系统,所述组件或子系统例如通过外部接口822、通过内部接口或经由可装卸式存储装置连接在一起,所述可装卸式存储装置可以从一个组件连接和移除到另一组件。在一些实施例中,计算机系统、子系统或设备可通过网络通信。在此类情况下,一个计算机可以被视为客户端且另一个计算机被视为服务器,其中每台计算机都可以是同一计算机系统的一部分。客户端和服务器可各自包括多个系统、子系统或组件。
实施例的各个方面可以使用硬件电路(例如,专用集成电路或现场可编程门阵列)和/或以模块化或集成方式借助大体上可编程处理器使用计算机软件以控制逻辑的形式实施。如本文所使用,处理器可以包括单核处理器、在同一集成芯片上的多核处理器,或在单个电路板上或联网的多个处理单元,以及专用硬件。基于本文提供的公开内容和教导,本领域普通技术人员将知道并了解使用硬件以及硬件和软件的组合来实施本公开的实施例的其它方式和/或方法。
本申请中描述的任何软件组件或功能可实施为使用例如Java、C、C++、C#、Objective-C、Swift等任何合适的计算机语言或例如Perl或Python等脚本语言使用例如常规的或面向对象的技术的由处理器执行的软件代码。软件代码可作为一系列指令或命令存储在计算机可读介质上以供存储和/或发送,合适的介质包括随机存取存储器(RAM)、只读存储器(ROM)、磁性介质(例如硬盘驱动器或软盘),或光学介质(例如光盘(CD)或DVD(数字通用盘))、闪存存储器等。计算机可读介质可以是此类存储或发送装置的任何组合。
这类程序还可以使用适于经由包括互联网在内的符合多种协议的有线网络、光学网络和/或无线网络进行发送的载波信号来编码和发送。因此,根据本发明的实施例的计算机可读介质可以使用以此类程序编码的数据信号来创建。用程序代码编码的计算机可读介质可以与兼容装置一起封装或者(例如,经由因特网下载)与其它装置分开提供。任何此类计算机可读介质可以驻留于单个计算机产品(例如,硬盘驱动器、CD或整个计算机系统)上或内,并且可存在于系统或网络内的不同计算机产品上或内。计算机系统可包括用于将本文中所提及的任何结果提供给用户的监视器、打印机或其它合适的显示器。
本文所述的任何方法可完全地或部分地用包括可被配置为执行这些步骤的一个或多个处理器的计算机系统执行。因此,实施例可涉及被配置为执行本文描述的任何方法的步骤、可能具有执行相应步骤或相应步骤群组的不同组件的计算机系统。尽管以编号的步骤呈现,但是本文中的方法步骤也可以同时执行或以不同的次序执行。另外,这些步骤的部分可与来自其它方法的其它步骤的部分一起使用。同样,一个步骤的全部或部分可以是任选的。另外,任何方法的任何步骤可以用模块、电路或用于执行这些步骤的其它手段来执行。
在不偏离本发明的实施例的精神和范围的情况下,特定实施例的具体细节可以任何合适方式组合。然而,本发明的其它实施例可以涉及与每一个别方面或这些个别方面的特定组合相关的特定实施例。上文对本发明的示例性实施例的描述已经出于说明和描述的目的呈现。不旨在是详尽的,或将本发明局限到描述的精确形式,根据上文的教导许多修改和变形是可能的。选择和描述这些实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的技术人员能够在各种实施例中最好地利用本发明,并且进行适合于预期的特定用途的各种修改。
以上描述是说明性的而不是限制性的。在所属领域的技术人员阅读了本公开后,本发明的许多变化将变得显而易见。因此,本发明的范围不应参考以上描述来确定,而是应参考未决的权利要求以及其完整范围或等效物来确定。
在不偏离本发明范围的情况下,来自任何实施例的一个或多个特征可以与任何其它实施例的一个或多个特征组合。
除非明确指示有相反的意思,否则叙述“一”或“所述”旨在表示“一个或多个”。除非明确指示为相反情况,否则“或”的使用旨在表示“包括性的或”,而不是“排除性的或”。
本文中提及的所有专利、专利申请、公开和描述出于所有目的以引用方式全部并入本文。不承认它们是现有技术。
Claims (20)
1.一种用于安全地传送消息的方法,包括由计算机系统执行以下操作:
基于计算机系统协议文件标识一个或多个密码软件模块,其中所述一个或多个密码软件模块是存储在所述计算机系统上的密码软件模块库的子集;
生成对应于所述一个或多个密码软件模块的一个或多个共享秘密;
使用密钥导出函数和所述一个或多个共享秘密生成会话密钥;
使用所述会话密钥加密所述消息以生成加密消息;
将包括所述加密消息和计算机系统标识符的消息包发送到服务器计算机,其中所述服务器计算机被配置成使用所述计算机系统标识符来标识服务器计算机协议文件、生成所述一个或多个共享秘密、生成所述会话密钥并解密所述加密消息;
在发送所述消息包之后,更新所述计算机系统协议文件以除所述一个或多个密码软件模块之外还标识附加密码软件模块;以及
将协议更新消息发送到所述服务器计算机,所述协议更新消息指示所述计算机系统协议文件已被更新,其中所述协议更新消息包括所述计算机系统标识符以供所述服务器计算机用来标识待更新的所述服务器计算机协议文件。
2.根据权利要求1所述的方法,其中所述一个或多个共享秘密是使用封装函数和对应于所述一个或多个密码软件模块的一个或多个密码密钥生成的,并且其中所述方法进一步包括:
使用密钥封装机制和所述一个或多个密码密钥生成一个或多个封装;以及
将所述一个或多个封装发送到所述服务器计算机,其中所述服务器计算机被配置成使用解封装函数和一个或多个对应的密码密钥来生成所述一个或多个共享秘密。
3.根据权利要求1所述的方法,进一步包括:
使用所述密钥导出函数和所述一个或多个共享秘密生成会话签名密钥;以及
通过使用所述会话签名密钥对所述消息包进行签名来生成数字签名,其中所述服务器计算机被配置成在接收到所述消息包之后验证所述数字签名。
4.根据权利要求1所述的方法,其中所述消息包括用于授权用户装置的用户与所述计算机系统的资源提供商运营商之间的交互的凭证,并且其中所述方法进一步包括从所述用户装置接收所述凭证。
5.根据权利要求1所述的方法,进一步包括在标识所述一个或多个密码软件模块之前:
在注册过程期间从所述服务器计算机接收所述一个或多个密码软件模块;
将所述一个或多个密码软件模块存储在所述密码软件模块库中;以及
修改所述计算机系统协议文件以标识所述一个或多个密码软件模块。
6.根据权利要求1所述的方法,进一步包括在更新所述计算机系统协议文件之前:
从所述服务器计算机接收附加密码软件模块,其中所述附加密码软件模块包括数字签名;
使用对应于所述服务器计算机或证书颁发机构或受信任执行环境装置制造商的公钥来验证所述数字签名;以及
将所述附加密码软件模块包括在所述密码软件模块库中。
7.根据权利要求6所述的方法,进一步包括在接收到所述附加密码软件模块之前,将请求消息发送到所述服务器计算机,所述请求消息请求发送所述附加密码软件模块。
8.根据权利要求1所述的方法,进一步包括:
更新所述计算机系统协议文件以不再标识所述一个或多个密码软件模块中的至少一个;以及
将协议更新消息发送到所述服务器计算机,所述协议更新消息指示所述计算机系统协议文件已被更新,所述协议更新消息进一步包括所述计算机系统标识符,其中所述服务器计算机被配置成使用所述计算机系统标识符标识所述服务器计算机协议文件,并更新所述服务器计算机协议文件以不再标识所述一个或多个密码软件模块中的至少一个。
9.根据权利要求1所述的方法,进一步包括:
基于所述计算机系统协议文件标识所述一个或多个密码软件模块和所述附加密码软件模块;
生成对应于所述一个或多个密码软件模块和所述附加密码软件模块的多个附加共享秘密;
使用所述密钥导出函数和所述多个附加秘密份额生成附加会话密钥;
使用所述附加会话密钥加密附加消息以生成附加加密消息;以及
将包括所述附加加密消息和所述计算机系统标识符的附加消息包发送到所述服务器计算机,其中所述服务器计算机被配置成使用所述计算机系统标识符来标识所述服务器计算机协议文件、生成所述多个附加共享秘密、生成所述附加会话密钥并解密所述附加加密消息。
10.根据权利要求1所述的方法,进一步包括:
生成测试消息;
生成对应于所述一个或多个密码软件模块和所述附加密码软件模块的多个测试共享秘密;
使用所述密钥导出函数和所述多个测试共享秘密生成测试会话密钥;
使用所述测试会话密钥加密所述测试消息以生成加密测试消息;
将所述加密测试消息发送到所述服务器计算机,其中所述服务器计算机被配置成生成所述多个测试共享秘密、生成所述测试会话密钥、解密所述加密测试消息并基于所述测试消息生成指示消息;
从所述服务器计算机接收所述指示消息;以及
基于所述指示消息确认所述服务器计算机协议文件已成功更新。
11.根据权利要求10所述的方法,其中所述指示消息包括所述测试消息,其中所述计算机系统通过确认所述指示消息与所述测试消息之间的匹配来确认所述服务器计算机协议文件已成功更新。
12.一种用于安全地传送消息的方法,包括由服务器计算机执行以下操作:
从计算机系统接收包括加密消息和计算机系统标识符的消息包,其中所述加密消息是使用会话密钥加密的,所述会话密钥由所述计算机系统使用密钥导出函数和使用一个或多个密码软件模块生成的一个或多个共享秘密生成;
基于所述计算机系统标识符标识服务器计算机协议文件;
生成对应于所述服务器计算机协议文件的一个或多个共享秘密;
使用所述密钥导出函数和所述一个或多个共享秘密生成所述会话密钥;
使用所述会话密钥解密所述加密消息以获得所述消息;以及
在获得所述消息之后,向所述计算机系统发送附加密码软件模块,其中所述附加密码软件模块包括数字签名,并且其中所述计算机系统被配置成:
通过使用对应于所述服务器计算机、证书颁发机构或受信任执行环境装置制造商的公钥验证所述数字签名来验证所述附加密码软件模块,并且
将所述附加密码软件模块添加到密码软件模块库。
13.根据权利要求12所述的方法,进一步包括从所述计算机系统接收对应于所述一个或多个共享秘密的一个或多个封装,
其中生成对应于所述服务器计算机协议文件的一个或多个共享秘密以及使用所述密钥导出函数和所述一个或多个共享秘密生成所述会话密钥通过以下方式实现:
将所述一个或多个封装发送到密码服务器,其中所述密码服务器被配置成:
标识对应于所述一个或多个封装的一个或多个私钥,
通过使用所述一个或多个私钥解封装所述一个或多个封装来产生所述一个或多个共享秘密,
使用所述密钥导出函数和所述一个或多个共享秘密生成所述会话密钥,并且
将所述会话密钥发送到所述服务器计算机。
14.根据权利要求12所述的方法,进一步包括在发送所述附加密码软件模块之前:
从所述计算机系统接收请求消息,所述请求消息包括所述计算机系统标识符和计算机系统参数;以及
基于所述计算机系统参数,从多个附加密码软件模块中确定所述附加密码软件模块。
15.根据权利要求12所述的方法,进一步包括在接收到所述消息包之前:
在注册过程期间向所述计算机系统发送所述一个或多个密码软件模块,其中所述计算机系统被配置成将所述一个或多个密码软件模块存储在所述密码软件模块库中,并修改计算机系统协议文件以标识所述一个或多个密码软件模块。
16.根据权利要求12所述的方法,进一步包括:
从所述计算机系统接收协议更新消息,所述协议更新消息指示存储在所述计算机系统上的计算机系统协议文件已被更新以标识所述附加密码软件模块,所述协议更新消息另外包括所述计算机系统标识符;
使用所述计算机系统标识符标识所述服务器计算机协议文件;以及
更新所述服务器计算机协议文件以指示所述计算机系统协议文件标识所述附加密码软件模块。
17.根据权利要求16所述的方法,进一步包括:
从所述计算机系统接收附加消息包,所述附加消息包包括附加加密消息和所述计算机系统标识符;
使用所述计算机系统标识符标识所述服务器计算机协议文件;
生成对应于所述服务器计算机协议文件的多个附加共享秘密,所述多个附加共享秘密包括所述一个或多个共享秘密和对应于所述附加密码软件模块的附加共享秘密;
使用所述密钥导出函数和所述多个附加共享秘密生成附加会话密钥;以及
使用所述会话密钥解密所述附加加密消息以检取附加消息。
18.根据权利要求16所述的方法,进一步包括:
从所述计算机系统接收加密测试消息;
基于所述服务器计算机协议文件生成一个或多个测试秘密份额;
使用所述密钥导出函数和所述一个或多个测试秘密份额生成测试会话密钥;
使用所述测试会话密钥解密所述加密测试消息以产生测试消息;
基于所述测试消息生成指示消息;以及
将所述指示消息发送到所述服务器计算机。
19.根据权利要求18所述的方法,其中所述指示消息包括所述测试消息。
20.一种计算机系统,包括:
处理器;以及
耦合到所述处理器的非瞬态计算机可读介质,所述非瞬态计算机可读介质包括能由所述处理器执行以实施根据权利要求1至19中任一项所述的方法的代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163167927P | 2021-03-30 | 2021-03-30 | |
US63/167,927 | 2021-03-30 | ||
PCT/US2022/014994 WO2022211899A1 (en) | 2021-03-30 | 2022-02-02 | Agile cryptographic deployment service |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117157938A true CN117157938A (zh) | 2023-12-01 |
Family
ID=83456746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280025810.5A Pending CN117157938A (zh) | 2021-03-30 | 2022-02-02 | 敏捷密码部署服务 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4315739A1 (zh) |
CN (1) | CN117157938A (zh) |
WO (1) | WO2022211899A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582265B (zh) * | 2023-07-12 | 2023-10-20 | 北京信安世纪科技股份有限公司 | 密钥协商方法和密钥协商系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489496B2 (en) * | 2004-11-12 | 2016-11-08 | Apple Inc. | Secure software updates |
BR112017002747A2 (pt) * | 2014-08-29 | 2018-01-30 | Visa Int Service Ass | método implementado por computador, e, sistema de computador. |
US9781081B1 (en) * | 2015-10-02 | 2017-10-03 | Amazon Technologies, Inc. | Leveraging transport-layer cryptographic material |
US20210056053A1 (en) * | 2019-08-19 | 2021-02-25 | Cryptography Research, Inc. | Application authentication and data encryption without stored pre-shared keys |
US10862872B1 (en) * | 2020-04-30 | 2020-12-08 | Snowflake Inc. | Message-based database replication |
-
2022
- 2022-02-02 CN CN202280025810.5A patent/CN117157938A/zh active Pending
- 2022-02-02 WO PCT/US2022/014994 patent/WO2022211899A1/en active Application Filing
- 2022-02-02 EP EP22781804.4A patent/EP4315739A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4315739A1 (en) | 2024-02-07 |
WO2022211899A1 (en) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11729150B2 (en) | Key pair infrastructure for secure messaging | |
CN110708170B (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
US20220231857A1 (en) | Hash-based data verification system | |
US20230107243A1 (en) | Personal device security using cryptocurrency wallets | |
US11949791B2 (en) | Hash contract generation and verification system | |
JP4593533B2 (ja) | 公開鍵暗号方式に使用する鍵を更新するシステムおよび方法 | |
CN110692214A (zh) | 用于使用区块链的所有权验证的方法和系统 | |
EP2707991A1 (en) | Use of non-interactive identity based key agreement derived secret keys with authenticated encryption | |
US20230015925A1 (en) | Blockchain based Secure Software Updates for IoT Devices | |
CN112804217B (zh) | 一种基于区块链技术的存证方法和装置 | |
KR101253683B1 (ko) | 연쇄 해시에 의한 전자서명 시스템 및 방법 | |
US8613057B2 (en) | Identity management facilitating minimum disclosure of user data | |
CN117157938A (zh) | 敏捷密码部署服务 | |
CN116015846A (zh) | 身份认证方法、装置、计算机设备和存储介质 | |
US20230124498A1 (en) | Systems And Methods For Whitebox Device Binding | |
Oliveira | Dynamic QR codes for Ticketing Systems | |
CN116992470A (zh) | 合作授权协议书签署方法、装置、计算机设备及存储介质 | |
CN116132185A (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 |