本申请要求2014年1月31日提交的美国临时申请no.61/934,341、2014年8月18日提交的美国临时申请no.62/038,589和2014年12月11日提交的美国临时申请no.62/090,632的优先权,以引证方式将其全部内容组合于此。
背景技术:
随着越来越多的数据在基于网络的系统中收集和维护,因此数据安全及其重要。安全的一个重要方面是设备间的安全通信。具体而言,每分钟在网络连接的设备之间交换大量的数据。这种交换采取设备间传递的消息、文档和其他数据的形式,包括电子邮件、附件、即时消息、文件和其他形式。
当今,包括电子邮件和文档的大量数据是以极低的安全性进行通信,这意味着,这种通信极易被恶意第三方设备截取(intercepted)和盗用(misappropriated)。虽然存在确保这种通信安全的机制,但这些机制通常难以使用并且相对容易失败。例如,用于安全通信的大多数现有系统依赖于非对称加密方法,其中使用公共可用密钥来加密,并使用私钥来解密。非对称加密方法的问题在于,它们不能提供与对称加密一样强的保护。此外,由于公钥/私钥对保持不变,因此一旦一个密钥对被攻破,就可用对大量的通信进行破译。
对称加密方法还用于确保提供比非对称方法强的保护的通信的安全。然而,这些方法使用较为繁琐。例如,这些方法通常涉及带外密钥交换,从而使得设置或更新密钥较为繁琐,因此不频繁执行。因而,需要用于提供强保护且易用的安全通信的系统和方法。
技术实现要素:
本发明的目的在于提供消除或减少现有技术的上述缺点的至少一个的用于安全通信的新颖的服务器和方法。
本发明的多个方面和优点将在下面变得更加清楚,在充分描述和声明的构造和操作的细节中进行了说明,参照作为本发明一部分的附图,其中通篇用相似的附图标记指代相似的部件。
附图说明
图1示出了根据实施方式的用于安全通信的系统的实施方式的框图;
图2示出了根据实施方式的提供用于图1的系统的安全通信的增强公钥的方法;
图3示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图4示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图5示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图6示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图7示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图8示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图9示出了根据实施方式的在归一化过程中增强的公钥的框图;
图10示出了根据实施方式的在执行图2的方法的过程中图1的系统的框图;
图11示出了根据实施方式的图1的系统的公钥添加方法;
图12示出了根据实施方式的在执行图11的方法的过程中图1的系统的框图;
图13示出了根据实施方式的在执行图11的方法的过程中图1的系统的框图;
图14示出了根据实施方式的在执行图11的方法的过程中图1的系统的框图;
图15示出了根据实施方式的在执行图11的方法的过程中图1的系统的框图;
图16示出了根据实施方式的在执行图11的方法的过程中图1的系统的框图;
图17示出了根据实施方式的在执行图11的方法的过程中图1的系统的框图;
图18示出了根据实施方式的包含示例性消息的图1的系统的框图;
图19示出了根据实施方式的图1的系统接收安全通信的方法;
图20示出了根据实施方式的在执行图19的方法的过程中图1的系统的框图;
图21示出了根据实施方式的在执行图19的方法的过程中图1的系统的框图;
图22示出了根据实施方式的在执行图19的方法的过程中图1的系统的框图;
图23示出了根据实施方式的在执行图19的方法的过程中图1的系统的框图;
图24示出了根据实施方式的在执行图19的方法的过程中图1的系统的框图;
图25示出了根据实施方式的图1的系统发送安全通信的方法;
图26示出了根据实施方式的在执行图25的方法的过程中图1的系统的框图;
图27示出了根据实施方式的在执行图25的方法的过程中图1的系统的框图;
图28示出了根据实施方式的在执行图25的方法的过程中图1的系统的框图;以及
图29示出了根据实施方式的在执行图25的方法的过程中图1的系统的框图。
具体实施方式
图1示出了用于安全通信的系统100的框图。至少一个安全通信终端(安全通信终端104-1和104-2)可以经由网络108连接至公钥服务器112。安全通信终端104-1和104-2称为安全通信终端104,并且统称为安全通信终端104。在说明书的其他地方也使用该命名方法。安全通信终端104可以基于任何适当的计算环境,并且不对类型特别加以限制,只要每个安全通信终端104能够接收、处理和发送安全通信。在本实施方式中,安全通信终端104被构造成至少执行能够与公钥服务器112所提供(host)的网络服务进行交互以建立安全通信的指令。虽然在图1的示例性示例中,仅示出了两个安全通信终端,但应当理解的是,在其他实施方式中,可以存在更多或更少的安全通信终端104。
每个安全通信终端104包括连接至例如存储器的非瞬时计算机可读存储介质的至少一个处理器。该处理器允许或执行存储在存储器中的操作指令或应用,以执行用于安全通信终端104的多种功能。处理器包括一个或更多个微处理器、微控制器、数字信号处理器(DSP)、状态机、逻辑电路、或者基于存储在存储器中的操作或编程指令而对信息进行处理的任何一个设备或多个设备。根据这些实施方式,处理器对与执行数据加密、解密和安全通信相关联的多种功能和数据进行处理。
存储器可以是易失(例如随机存取存储器(“RAM”))和非易失(例如,只读存储器(“ROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存、磁计算机存储设备或光盘)存储器的任意适当组合。在一个实施方式中,存储器包括用于持久存储计算机可读指令和其他数据的非易失存储器、以及用于短时存储在执行计算机可读指令期间的这种计算机可读指令和其他数据的非易失存储器。在一些实施方式中还可以想到可以去除或者外置于安全通信终端104的其他类型计算机可读存储介质,例如安全数字(SD)卡及其变型。外置或可去除计算机可读存储介质的其他示例包括压缩盘(CD-ROM、CD-RW)和数字视频盘(DVD)。
每个安全通信终端104还可以包括可操作连接至处理器的通信接口。通信接口能够使安全通信终端104例如经由网络108与其他计算设备进行通信。因此,可以将通信接口选择为与网络108适配。在系统100的其他实施方式中,安全通信终端104可以在没有介于期间的网络108的情况下连接至公钥服务器112和/或直接彼此连接,例如安全通信终端104通过有线通用串行总线(USB)连接或者无线蓝牙连接而连接至公钥服务器112和/或另一个安全通信终端104。这些连接可以在通过网络108的连接以外或者代替通过网络108的连接而建立。
网络108可以包括能够将公钥服务器112与安全通信终端104链接在一起的任何网络,并且可以包括有线和/或无线网络的任何适当组合,包括但不限于例如互联网的广域网(WAN)、局域网(LAN)、蜂窝电话网、Wi-FiTM网络、WiMAXTM网络等。
一般而言,公钥服务器112可以包括能够辅助安全通信性能的任何平台。在本实施方式中,公钥服务器112是被构造成用于接收、维持和提供公钥的服务器。公钥服务器112可以基于包括一个或更多个中央处理单元(CPU)的适当构造的服务器型计算环境,该一个或更多个中央处理单元构造成控制并与计算机存储器或存储设备形式的非短时计算机可读介质交互。计算机存储器或存储设备可以包括例如随机存取存储器(RAM)之类的易失存储器,以及例如硬盘驱动器或闪速驱动器之类的非易失存储器,或者廉价磁盘冗余阵列(RAID)或基于云的存储。公钥服务器112还可以包括一个或更多个网络或通信接口,用于连接至网络108或安全通信终端104。公钥服务器112还可以构造成包括例如键盘或指点设备的输入设备或者例如监视器或显示器或者它们之中任意一个或全部的输出设备,以允许本地交互。
还可以想到用于公钥服务器的其他类型硬件构造。例如,公钥服务器112可以实现为基于云的计算解决方案的一部分,由此公钥112的功能实现为在单一数据中心或者在多个数据中心之间执行的一个或更多个虚拟机。公钥服务器112还可以实现为在可操作地在例如网络108的网络上连接的多个计算设备之间分布的分布式服务器。公钥服务器112的计算环境的软件方面还可以包括代替或除了任何本地输入设备或本地输出设备以外的远程访问能力。
在公钥服务器112的计算环境中可以使用任何期望的或适当的操作环境。因而可以利用适当的操作系统和应用来构造该计算环境以实现此处讨论的功能。本领域技术人员将认识到,公钥服务器112不一定要实现为单机设备,而是可以实现为多目的服务器的一部分或者实现为虚拟机。
公钥服务器112可操作用于接收、存储和发送与一个或更多个客户账户相关联的公钥。公钥服务器112可以进一步操作用于确定所上传的密钥不是先前上传密钥的副本。此外,公钥服务器112可以操作用于确认提供密钥的客户账户,并验证所上传的密钥确实是由客户账户生成。在变型例中,可以存在超过一个公钥服务器112。
在一些实施方式中,安全通信终端104被构造成与客户账户相关联。例如,如图1所示,安全通信终端104-1与客户账户A相关联,而安全通信终端104-2与客户账户B相关联。通常基于所提供的例如用户姓名、电子邮件地址、密码之类的凭证和/或其本领域技术人员能够想到的其他凭证来获得对客户账户的访问。在一些变型例中,超过一个账户可以与安全通信终端104相关联。在另外的变型例中,一个账户可以与超过一个安全通信终端104相关联。在其他变型例中,可以不使用账户,而是,凭证可以是与不被其他人所知的安全通信终端104相关联的唯一凭证,例如与设备相关联的唯一序列号。在这些变型例中,与安全通信终端104相关联的客户账户凭证相反,基于设备凭证执行下面描述的安全通信。
基于所维持的客户账户,安全通信终端可以构造成与客户账户相关联地生成对称和非对称密钥、生成消息,对所生成的消息和其他数据进行加密,将生成的消息发送到其他安全通信终端104、从其他安全通信终端104接收消息,并且对所接收的消息进行解密。与客户账户相关联的由安全通信终端104执行的加密可以基于该客户账户先前生成并传送到另一个客户账户作为先前发送消息的一部分的密钥或密钥标识符。例如,在一些实施方式中,共享对称密钥SSK和共享密钥标识符SSKID可以由客户账户生成并被包含作为发送到另一个客户账户的消息的一部分。可以基于任何期望的密钥生成方法来生成共享对称密钥SSK。因而,当客户账户接收包含该共享对称密钥标识符SSKID的后续消息时,该客户账户能够基于包含该SSKID而确定该消息至少部分是由谱写该消息的其他客户账户使用共享对称密钥SSK加密的。因此,为了对所接收消息的至少一部分进行解密,客户账户可以基于该共享对称密钥标识符SSKID而识别共享对称密钥SSK,并使用识别出的共享对称密钥SSK对所接收消息的部分进行解密。由此,在两个客户账户之间发送的每个消息可以由在对消息进行交换的该两个客户账户之间共享的不同的对称密钥进行加密。在变型例中,可以使用SSK和SSKID来加密一组消息。因此,即使共享对称密钥被第三方攻破,也只能解密一个或一组消息。
在变型例中,客户账户可以使用不与其他客户账户共享的对于该客户账户而言唯一的另一个对称密钥(唯一客户密钥UCK)来减少共享对称密钥标识符SSKID被不是消息发送方或接收方的第三方客户截取并解密的可能性。在一些变型例中,可以使用随机数发生器利用客户账户凭证来生成唯一客户密钥UCK,诸如密码作为种子。由此,可以在客户账户所在的多种设备上统一生成唯一客户密钥UCK。虽然唯一客户密钥UCK对于客户账户而言是唯一的,但在变型例中,其可以例如随时间或者基于对客户账户凭证的改变而变化。
为了能够对不同的消息或不同组消息使用不同的共享对称密钥,提供了生成并在两个客户账户之间对共享密钥进行共享的方法。因而,客户账户生成的共享对称密钥SSK只与一个其他客户账户共享,并用于加密从该其他账户发送到生成该对称共享密钥SSK的客户账户的消息密钥。在变型例中,共享对称密钥可以与一组其他客户账户共享。
在一些实施方式中,除了使用共享对称密钥以外,与接收方客户账户相关联的公钥PuK还可以由另一个客户账户使用,来对目的地为该接收方客户账户的消息的至少部分进行加密。此外,在将消息发送到接收方客户账户之前,公钥PuK可以由该另一个客户账户包含来作为该消息的一部分。在这些实施方式中,该另一个客户账户可以从公钥服务器112接收公钥PuK,下面对此进行更详细说明。公钥PuK在包含到消息中之前,可以由另一个客户账户例如使用先前接收的共享对称密钥SSK进行加密。因而,当接收方客户账户接收该消息时,其可以使用共享对称密钥SSK对公钥PuK进行解密,并识别与公钥PuK相对应的私钥PrK。在一些变型例中,可以使用增强公钥,使得可以以加密形式包括与公钥PuK相对应的私钥PrK作为增强公钥的一部分,下面将对此进行更详细说明。随后,可以使用相应的私钥PrK对利用公钥PuK加密的消息的部分进行解密。在变型例中,可以使用共享对此密钥SSK和公钥PuK两者对消息的至少一部分进行加密。在变型例中,可以获得不同的公钥PuK对基于使用增强公钥而创建的每个新消息或一组新消息进行加密。将公钥PuK的使用限定在对一个或一组消息进行加密,限制了由于针对由破解的公钥加密的一个或一组消息的公/私密钥对的破解而导致的任何攻破。此外,使用变化的共享对称密钥和变化的非对称密钥二者也可以增大消息交换的安全性,并解决例如中间人问题之类的问题。
为了能够对不同的消息使用不同的公钥,提供了生成和共享与每个客户账户相关联的多个增强公钥的方法。因而,在变型例中,每个客户账户能够生成超过一个公/私非对称密钥对。客户账户生成的增强公钥可以上传到公钥服务器112并与该客户账户相关联地存储。随后,在交换新消息时,任何客户账户都可以请求与客户账户相关联的增强公钥。在变型例中,所生成的增强公钥可以包括数据的一部分,使得公钥服务器能够验证提供给它并与客户账户相关联的增强公钥确实是该客户账户生成的。此外,增强公钥还可以包括第二数据部分,使得将新的增强公钥上传到公钥服务器112的客户账户能够验证公钥服务器112是可信的(与例如拦截者试图攻破该公钥相反)。
在一些进一步的实施方式中,消息的至少一部分可以由对称消息密钥MK来加密。由MK加密的部分例如可以是消息内容或其他消息数据。MK可以由发送消息的客户账户生成,并包含在该消息中。MK可以由消息所发送到的客户账户的SSK和/或PuK加密。
现在参照图2,在200处指示了提供用于安全系统通信的增强公钥的方法。为了辅助解释该方法,假设使用如图1中所示的系统100操作该方法200。此外,下面的对方法200的讨论可以进一步理解系统100。然而,应当理解的是,系统100和方法200是可以改变的,并且不一定需要彼此结合完全如此处所述地工作,并且这种变化处在保护范围内。
在205处开始,客户账户在安全通信终端104生成一组公/私钥对。在图1的本示例中,客户账户A根据已有的非对称密钥生成方法而生成如图3所示分别包含非对称公钥PK1和非对称私钥PKR1的一个公/私钥对。此外,安全通信终端104-1维持对于客户A而言唯一的先前生成的唯一客户密钥UCKA。可以使用客户终端A的凭证(例如其密码)基于随机数发生器而生成该唯一客户密钥UCKA。
在210处继续方法200,同样如图3所示,还生成并加密账户确认码。例如,可以使用随机数发生器生成账户确认码ACC1。公钥服务器112可以使用账户确认码ACC1来验证发送新公钥的客户账户确实是该公钥要关联的客户账户。账户确认码ACC1可以由其自身加密,从而得到账户确认码ACC1的第一加密形式(EACC1)。此外,如图4所示,还可以用我唯一客户密钥UCKA对账户确认码ACC1进行加密,从而得到账户认证码ACC1的第二加密形式(EACC2)。随后,第一加密账户认证码EACC1和第二加密账户认证码EACC2可以与非对称公钥PK1组合在一起作为形成公钥的增强版本的一部分,即增强公钥PuK1。组合过程可以采取多种形式,例如级联(concatenation)。
再参照图2,在215处,例如使用随机数发生器生成服务器认证码(SAC1)并对其进行加密。例如,客户账户A可以使用服务器认证码SAC1来确认公钥服务器是可信的。服务器认证码SAC1可以由账户认证码ACC1进行加密,从而得到服务器认证码SAC1的第一加密形式(ESAC1)。此外,还可以使用唯一客户密钥UCKA对SAC1进行加密,从而得到SAC1的第二加密形式(ESAC2)。随后,SAC1的第一加密形式ESAC1和SAC1的第二加密形式ESAC2可以与增强公钥PuK1的内容的其余部分组合,如图5所示。组合过程可以采取多种形式,例如级联(concatenation)。
继续方法200,在220处,客户账户凭证被添加到增强公钥。例如,可以将用于创建客户账户A的电子邮件地址(emailA)添加到增强公钥PuK1,如图6所示。在一些变型例中,可以对凭证进行加密。
继续方法200,在225处,使用唯一客户码UCKA对在205处生成的与公钥PK1相对应的私钥PKR1进行加密,以生成私钥的加密形式(EPKR1)。随后将私钥的加密形式EPKR1添加到增强公钥PuK1,如图7所示。通过包含使用PKR1的加密版本,可以使得客户账户不必在安全通信针对104上维持使用。
再参照图2,可以将附加信息添加到增强公钥PuK1。例如,可以将用于生成增强公钥的公钥发生器的版本号附接至增强公钥PuK1。另选地,或者另外地,还可以附接增强公钥PuK1的生成日期以及增强公钥PuK1的失效日期。此外,在增强公钥PuK1中还可以包括非对称公钥PK1的例如以比特为单位的大小SizeP,如图8中所示,在该情况下为512比特。
继续方法200,在235处,对增强公钥进行归一化。归一化使得能够根据现有的非对称公钥标准来使用增强公钥。为了执行归一化,将组合以形成增强公钥PuK1的数据划分为具有等于PuK1中的sizeP字段的比特长度的行,例如在该示例中为512比特。在该示例中,增强的公钥被划分为三行,R1、R2和R4。行R1包括非对称公钥的大小SizeP、与非对称公钥PK1相对应的加密私钥EPKR1以及客户账户的电子邮件地址emailA。另一方面,行R2包括第二加密服务器认证码ESAC2、第一加密服务器认证码ESAC1、第二加密账户确认码EACC2和第一加密账户确认码EACC1。行R4包括非对称公钥PK1。行一被保留以用于下面将要讨论的归一化处理。应当主要的是,虽然在本例中,目前为主包含在PuK1中的信息正好形成了512比特的三行,但在变型例中,它们可以形成比两行多或少。此外,在其他变型例中,至少存在一行小于512比特。在这种情况下,使用零将少于512比特的行填充到512比特。应当理解的是,包含在增强公钥PuK1中的信息以及这些行并不重要,并且在不同的实施方式中,顺序可能发生变化。
为了执行归一化,三行R1、R2和R4与调节行R3组合以形成矩阵900。行3包含调整值AdjustP。调整值AdjustP基于包含在增强公钥PuK1中的信息来确定,包括非对称公钥PK1。例如,在该示例中,可以通过确定行R1和R2的异或(其结果是与行R4的异或)来计算调整值AdjustP。随后,将所确定的调整值AdjustP添加到增强公钥PuK1,如图10所示。在一些变型例中,增强公钥的散列值(hash)可以被生成并包含在提供附加错误校验机制的增强公钥中。
在后续使用增强公钥PuK1时,为了基于此对任何数据进行加密,可以基于包含在增强公钥PuK1中的调整值AdjustP和信息的其余部分来确定非对称公钥PK1。例如,在该情况下,参照图9,为了利用增强公钥PuK1对数据进行加密,可以根据增强公钥PuK1再次构建矩阵900,对行R1和R2进行异或操作,其结果进一步与调整值AdjustP进行异或操作以得到随后用来对数据进行加密的非对称公钥PK1。此外,为了解密利用从增强公钥PuK1得到的非对称公钥PK1加密的数据,只要增强公钥PuK1与加密数据一起被传送到客户账户A,相应的私钥PKR1就不必存储在客户账户A处。这是因为增强公钥PuK1包括相应的私钥PKR1。
增强公钥PuK1一旦在安全通信终端104生成,就被传送到公钥服务器112,使得其能够被例如客户账户B的其他客户账户使用。现在参照图11,在1100示出了公钥添加方法。为了帮助解释该方法,假设使用如图1中所示的系统100操作该方法1100。此外,下面的对方法1100的讨论可以进一步理解系统100。然而,应当理解的是,系统100和方法1100是可以改变的,并且不一定需要彼此结合完全如此处所述地工作,并且这种变化处在保护范围内。
在1105处开始,客户账户A通过安全通信终端104-2使用安全通信终端104-2的通信接口访问公钥服务器112,并请求与客户账户A相关联的当前增强公钥。在接收到先前与方法200相关联生成并通过先前执行方法1100而上传到公钥服务器112的当前增强公钥PuK2时,从该当前增强公钥PuK2得到服务器认证码SAC2和账户确认码ACC2。具体来说,如图12所示,第二加密服务器认证码ESAC22和第二加密账户确认码EAC22从增强公钥PuK2中提取出来并解密以使用客户账户A的唯一客户密钥UCKA分别获得服务器认证码SAC2和账户确认码ACC2。本领域技术人员将理解的是,由于客户账户A的唯一客户密钥UCKA不与任何其他客户账户共享,因此仅客户账户A能够执行该解密。
一旦从增强公钥PuK2获得了服务器认证码SAC2和账户确认码ACC2,就将他们存储在安全通信终端104-1中,如图13所示。继续方法1100,在1120处,账户确认码ACC2与新的增强公钥PuK1一起发送到公钥服务器112,如图14所示。在1125,公钥分期112对客户账户进行验证。例如,如图15所示,公钥服务器112从当前增强公钥PuK2中提取包含第一加密账户确认码EACC2的信息,并使用接收的账户确认码ACC2对提取的信息进行解密。本领域技术人员将会想到,由于所接收的账户确认码ACC2最初是使用账户确认码ACC2本身作为密钥加密的,因此仅当在1120提供对比密钥的客户账户与提供当前增强公钥的客户账户相同时,第一加密账户确认码EACC2的解密才会成功。因而,当通过解密EACC2获得的账户确认码与所接收的账户确认码ACC2相匹配时,客户账户被认证并且新的公钥被接受。因此,方法1100进行到1130。另一方面,当通过解密EACC1获得的账户确认码与所接收的账户确认码ACC1不匹配时,则方法1100进行到1135,并拒绝新的增强公钥PuK2。
继续参照图11,在1135,通过从提供给安全通信中的104-1的增强公钥获得服务器认证码,在公钥服务器112处,安全通信中的104发起公钥服务器112的认证。具体来说,如图16所示,公钥服务器112通过从当前增强公钥PuK2提取出第一加密服务器认证码ESAC2并使用账户确认码ACC2对第一加密服务器认证码ESAC2进行解密而获得服务器认证码SAC2。
在1140,通过公钥服务器112的通信接口将从当前增强公钥PuK2提取的服务器认证码SAC2发送到安全通信终端104-1,如图17所示。在1145,基于所接收的服务器认证码对公钥服务器112的真实性进行验证。具体来说,将所接收的服务器认证码SAC2与在1110获得的服务器认证码SAC2进行比较。当比较的码匹配时,服务器的真实性被认证,并且不采取进一步的行动。另一方面,当比较的码不匹配时,则确定公钥服务器112不是可信的,并在1150生成警告。在变型例中,可以在该点而非在1110处从当前增强公钥PuK2获得服务器认证码SAC2。
在变型例中,公钥添加方法可以根据需要重复多次,并且添加到公钥服务器112的多个增强公钥可以缓存在服务器112。缓存器的大小可以是不同的。此外,公钥服务器112在删除增强公钥或使其对公开提供不可用之前,可以提供每个增强公钥一次,或者有限次数。在一些变型例中,增强公钥如果在经过预定时段未使用则过期。过期日期或时段可以包含在每个增强公钥中,或者可以确定为公钥服务器的策略。在其他变型例中,例如,公钥服务器112仅维持一个增强公钥的情况下,可以使用方法1100来改变增强公钥而不是向其添加。
一旦通过公钥服务器112生成了用于客户账户的增强公钥并使其可用,则客户账户可以参与与其他客户账户的安全通信。例如,可以从安全通信终端104发出和接收安全通信。在一些变型例中,通信可以是发送和接收消息的形式。消息可以包括多个不同的组成。图18示出了包括多种组成的非限制性示例性消息的示例。客户账户B在安全通信终端104-2处将消息(消息MSG1)的成分组合在一起。
图18的示例性消息MSG1包含ESSKID1,即作为共享对称密钥SSKA1的标识符的对称共享密钥标识符SSKIDA1的加密形式。对称共享密钥标识符SSKIDA1与共享对称密钥SSKA1是由与客户账户A相关联的安全通信终端104先前生成作为密钥对,对称共享密钥标识符SSKIDA1是使用客户账户A的唯一客户密钥UCKA加密。可以基于任何期望的对称密钥生成方法来生成对称共享密钥。随后,按照以下结合方法2500描述的方式,作为对称共享密钥标识符SSKIDA2和共享对称密钥SSKA2的加密形式,密钥对(SSKA1和ESSKIDA1)发送到客户账户B作为发送到客户账户B的先前消息的一部分。通过向客户账户B提供密钥对,客户账户A使得客户账户B能够使用所提供的密钥对随后加密到达客户账户A的消息。因而,在图18的示例性消息MSG1中,已接收到密钥对的安全通信终端104-2使用共享对称密钥SSKA1对消息MSG1的一部分进行加密,并包括所加密的对称共享密钥标识符ESSKIDA1以验证确实是用来对消息MSG1的一部分进行加密的共享对称密钥SSKA1。应当注意的是,密钥对SSKIDA1和SSKA1不一定在安全通信终端104-1处生成,因此可以在与客户账户相关联的任何安全通信终端104处生成。进一步应当注意的是,由于对称共享密钥标识符SSKIDA1是使用唯一客户密钥UCKA加密的,因此仅客户账户A能够访问其未加密形式,因此使得消息MSG1的任何第三方拦截者都不能访问共享对称密钥SSKA1。此外,由于仅客户账户A具有解密所加密的对称共享密钥标识符ESSKIDA1的能力,进一步地,由于共享对称密钥SSKA1未包含在利用共享对称密钥SSKA1加密的消息MSG1中,因此仅能够使用密钥对ESSKIDA1和SSKIDA1对发送到客户账户A的消息(例如消息MSG1)进行加密。
图18的示例性消息MSG1进一步包括密钥对ESSKB2和ESSKIDB2,其是共享对称密钥SSKB1和共享对称密钥SSKB1的对称共享密钥标识符SSKIDB1的加密形式。该密钥对由安全通信终端104-2生成并被客户账户A用来对在接收到消息MSG1后将要从客户账户A发送到客户账户B的消息的至少一部分进行加密。安全通信终端104-2通过使用客户账户A的对称密钥SSKA1和公钥PuK1对共享对称密钥SSKB1进行加密而生成加密共享对称密钥ESSKB1。安全通信终端104-2使用客户账户B的唯一客户密钥UCKB来加密对称共享密钥标识符SSKIDB1,以生成加密的对称共享密钥标识符ESSKIDB1。在变型例中,可以进一步利用公钥PuKA1和共享对称密钥SSKIDA1密钥来对加密的对称共享密钥标识符ESSKIDB1进行加密。
图18的示例性消息MSG1附加地包括加密的消息密钥EMK1。安全通信终端104-2使用消息密钥MK1对消息数据(例如消息内容)进行加密以生成加密数据EData。安全通信终端104-2使用客户账户A的共享对称密钥SSKA1和公钥PuKA1对消息密钥MK1进行加密。
图18的示例性消息MSG1还包括客户账户A的加密公钥EPuKA1。在该示例中,客户账户B从公钥服务器112获得如上所述客户账户A在安全通信终端104处生成的增强公钥PuKA1。增强公钥PuKA1用来对消息MSG1的多个部分进行加密,如上所述。使用共享对称密钥SSKA1对增强公钥PuKA1进行加密。在变型例中,针对要发送到客户账户A的每个消息或每组消息获得不同的增强公钥(对该消息是唯一的)。在这种变型例中,公钥服务器112可以删除或者将所提供的公钥PuKA1标记成不可用,从而防止将相同的公钥提供多次。在进一步的变型例中,可以完全不使用公钥对消息进行加密,而是依赖于共享对称密钥、唯一客户密钥和消息密钥。在其他另选方式中,所使用的公钥可以不是增强的(例如对于每个消息或每组消息是变化的),而可以对于目的地为客户账户的所有消息使用相同的公钥,直到该公钥过期。在这种变型例中,公钥可以不包含在消息MSG1中。
参照图19,在1900处总体指示了接收安全通信的方法。为了辅助解释该方法,假设使用如图1中所示的系统100操作该方法1900。此外,下面的对方法1900的讨论可以进一步理解系统100。然而,应当理解的是,系统100和方法1800是可以改变的,并且不一定需要彼此结合完全如此处所述地工作,并且这种变化处在保护范围内。
开始于1905,如图20所示,在与客户账户A相关联的终端104-1处从客户账户B接收消息MSG1。一旦接收到消息,就进行解密。因而,在1910,使用对于客户账户A而言唯一的客户密钥UCKA对加密的对称共享密钥标识符ESSKIDA1进行解密,如图21所示。在1915,使用对称共享密钥标识符SSKIDA1对用于加密消息MSG1的共享对称密钥SSKA1进行验证。应当理解的是,可以用多种方式对SSKIDA1进行验证。例如,先前生成的所有密钥对可以存储在表中,基于针对相应标识符的查找而获得的特定对称共享密钥。另选地,可以基于该标识符而生成特定的对称共享密钥。本领域技术人员容易想到和设想其他方法。
再参照图19,在1920处继续方法1900,对包含在所接收的消息中的公钥进行解密。具体来说,如图22所示,使用共享对称密钥SSKA1对加密的公钥EPuKA1进行解密以获得公钥PuKA1。在1925处,基于相应的公钥PuKA1识别出私钥PKRA1。在一些变型例中,私钥可以存储在与客户账户A相关联的安全通信终端114中。在变型例中,所接收的公钥可以是如上所述增强的公钥,而私钥PKRA1可以实际存储在所接收的增强公钥中。
继续参照图19,在1930处,对包含在所接收的消息中的附加密钥进行解密。在该示例中,如图23所示,使用客户账户A的共享对称密钥SSKA1和公钥PuKA1对共享对称密钥SSKB1和消息密钥EMK1的加密形式进行解密。加密的对称共享密钥标识符SSKIDB1是由客户B使用客户B的唯一客户密钥UCKB加密,因此在不进行解密的情况下从消息MSG1中提取出来。该密钥对是由客户账户B在安全通信终端104-2如上所述地生成,并被客户账户A用来加密在未来时间点将从客户账户A发送到客户账户B的消息的至少一部分。
再参照图19,在1935,对所接收的消息的加密数据部分进行解密。在该示例中,如图24所示,使用对于消息MSG1而言唯一的先前解密的消息密钥MK1对加密数据EData进行解密,因为其仅被用来对消息MSG1的数据(Data)进行加密。
参照图25,在2500总体指示了发送安全通信的方法。为了辅助解释该方法,假设使用如图1中所示的系统100操作该方法2500。此外,下面的对方法2500的讨论可以进一步理解系统100。然而,应当理解的是,系统100和方法2500是可以改变的,并且不一定需要彼此结合完全如此处所述地工作,并且这种变化处在保护范围内。
在方法2500的开始,作为执行方法1800以接收消息MSG1形式安全通信的结果,安全通信终端104-1维持若干个加密和未加密密钥,在图26中示出了其相关部分。为了准备要发送到账户B的新的安全消息MSG2,在2505生成对于消息MSG2而言唯一的新消息密钥MK2。在变型例中,该密钥可以用于多个消息。可以基于例如随机数发生器使用已有方法生成该消息密钥。要作为通信的一部分发送的数据(Data)被获得并使用消息密钥MK2加密,并被置于消息MSG2中作为Edata2,如图26所示。
继续方法2500,在2510,通信终端104-1请求并接收与客户账户B相关联的新公钥PuKB1,并使用先前接收的客户账户B的共享对称密钥SSKB1对其进行加密,如图27所示,将加密的公钥EPuKB1添加到消息MSG2中。
在2515,安全通信终端104-2生成要由客户账户B使用的下一个密钥对,用于对要发送到客户账户A的后续消息的至少一部分进行加密。该密钥对包括与相应的共享对称密钥SSKA2一起的对称共享标识符SSKIDA2。在2520,使用唯一客户密钥UCKA加密对称共享密钥标识符SSKIDA2以生成ESSKIDA2,其被进一步包含在消息MSG2中,如图28所示。
再参照图25,在2525,使用共享对称密钥SSKB1和公钥PuKB1对共享对称密钥SSKA2和消息密钥MK2加密并添加到消息MSG2中,如图29所示。在2530,还将先前加密的ESSKIDB1添加到消息MSG2,以指示用于对消息MSG2的部分进行加密的共享对称密钥。在2535,消息MSG2被发送到安全通信终端104-2。
在一些变型例中,在执行任意上述方法之前,创建客户账户。因而,当创建客户账户时,安全通信终端104获得与该客户账户相关联的用户凭证,基于此生成新创建账户的唯一客户密钥。例如,可以基于密码而生成唯一客户密钥。此外,当新创建的账户试图将第一增强公钥上传到公钥服务器112时,公钥服务器112可以通过将确认请求发送到可以包含在增强公钥中的账户凭证而请求账户的确认。当接收到该请求的答复时,满足确认。
上述实施方式仅作为示例,并且在不脱离主要由所附权利要求限定的范围的情况下,本领域技术人员可以左侧另选和修改。例如,所讨论的方法和系统可以全部或部分地改变或组合。
权利要求书(按照条约第19条的修改)
1.一种用于确保系统通信安全而由安全通信终端提供新的增强公钥的方法,该安全通信终端具有可操作地连接至存储器和通信接口的处理器,该方法包括以下步骤:
由所述处理器生成用于对客户账户进行验证的第一部分;
由所述处理器生成用于对公钥服务器进行认证的第二部分;
由所述处理器生成非对称公钥和相应的非对称私钥;
由所述处理器将所述第一部分、所述第二部分和所述非对称公钥组合以形成新的增强公钥;
由所述处理器基于所述非对称公钥的大小对所述新的增强公钥进行归一化。
2.根据权利要求1所述的方法,其中
生成所述第一部分的步骤进一步包括:
由所述处理器基于随机数发生器生成账户确认码;
由所述处理器基于由该处理器使用所述账户确认码对该账户确认码的加密而生成第一加密账户确认码;以及
由所述处理器基于由该处理器使用唯一客户密钥对所述账户确认码的加密而生成第二加密账户确认码;并且其中
将所述第一部分组合的步骤进一步包括:
由所述处理器将所述第一加密账户确认码和所述第二加密账户确认码组合。
3.根据权利要求1至2中任一项所述的方法,其中
生成所述第二部分的步骤进一步包括:
由所述处理器基于随机数发生器生成服务器认证码;
由所述处理器基于由该处理器使用所述账户确认码对所述服务器认证码的加密而生成第一加密服务器认证码;以及
由所述处理器基于由该处理器使用唯一客户密钥对所述服务器认证码的加密而生成第二加密服务器认证码;并且其中
将所述第二部分组合的步骤进一步包括:
由所述处理器将所述第一加密服务器认证码和所述第二服务器认证码组合。
4.根据权利要求1至3中任一项所述的方法,所述方法进一步包括:
由所述处理器将与客户账户相关联的账户凭证添加到所述新的增强公钥。
5.根据权利要求4所述的方法,所述方法进一步包括:
在所述存储器中维持与所述账户凭证相关联的唯一客户密钥;
由所述处理器通过使用所述唯一客户密钥对所述非对称私钥进行加密而生成加密非对称私钥;
由所述处理器将所述加密非对称私钥添加到所述新的增强公钥。
6.根据权利要求1至5中任一项所述的方法,其中,所述非对称公钥具有密钥大小的大小,并且其中,归一化的步骤进一步包括:
由所述处理器将所述新的增强公钥划分为具有等于所述密钥大小的长度的多个行,所述多个行中的一行包括所述非对称公钥;
由所述处理器基于所述多个行确定调整行,该调整行具有等于所述密钥大小的大小;并且
由所述处理器将所述调整行添加到所述新的增强公钥。
7.根据权利要求6所述的方法,所述方法进一步包括:
通过所述通信接口从公钥服务器接收当前增强公钥;
由所述处理器从所述当前增强公钥中提取所述当前增强公钥的用于对所述客户账户进行验证的第一部分并使用所述唯一客户密钥对所述第一部分进行解密;以及
通过所述通信接口将所述当前增强公钥的用于对所述客户账户进行验证的经解密的所述第一部分连同所述新的增强公钥一起发送到所述公钥服务器。
8.根据权利要求7所述的方法,所述方法进一步包括:
通过所述通信接口从所述公钥服务器接收用于对所述公钥服务器进行认证的码;
从所述当前增强公钥中提取所述当前增强公钥的用于对所述公钥服务器进行认证的第二部分并使用所述唯一客户密钥对所述第二部分进行解密;以及
当用于对公钥服务器进行认证的码与所述当前增强公钥的用于对公钥服务器进行认证的经解密的部分不匹配时,确定所述公钥服务器是不可信的。
9.一种用于确保系统通信安全而由公钥服务器接收增强公钥的方法,该公钥服务器具有可操作地连接至存储器和通信接口的处理器,该方法包括以下步骤:
在存储器中维持当前增强公钥;
通过所述通信接口将与客户账户相关联的该当前增强公钥发送到所述客户账户;
通过所述通信接口和与所述客户账户相关联的新的增强公钥一起接收所述当前增强公钥的用于对所述客户账户进行验证的经解密的第一部分;
由所述处理器从所述当前增强公钥中提取所述当前增强公钥的用于对所述客户账户进行验证的第二部分并使用所接收的所述当前增强公钥的用于对所述客户账户进行验证的经解密的第一部分对所述第二部分进行解密;以及
当所接收的所述当前增强公钥的用于对客户账户进行验证的经解密的第一部分与所述当前增强公钥的用于对客户账户进行验证的经解密的第二部分相匹配时,在所述存储器中缓存所述新的增强公钥。
10.根据权利要求9所述的方法,所述方法进一步包括:
由所述处理器从所述当前增强公钥中提取所述当前增强公钥的用于对所述公钥服务器进行认证的第三部分并使用所接收的所述当前增强公钥的用于对所述客户账户进行验证的经解密的第一部分对所述第三部分进行解密;以及
通过所述通信接口发送所述当前增强公钥的用于对所述公钥服务器进行认证的经解密的第三部分。
11.根据权利要求9至10中任一项所述的方法,所述方法进一步包括:
通过所述通信接口从第二客户账户接收针对与所述客户账户相关联的一个增强公钥的请求;以及
响应于所述请求通过所述通信接口提供所述新的增强公钥;以及
使得所述新的增强公钥不可用于公共提供。
12.一种在具有处理器和可操作地连接到该处理器的存储器的第一安全通信终端接收安全通信的方法,该方法包括以下步骤:
维持与第一客户账户的关联;
从第二安全通信终端从第二客户账户接收消息,所述消息的至少一部分经共享对称密钥加密;
从所述消息中提取密钥标识符;
基于包含在所述消息中的所述密钥标识符获得所述共享对称密钥,所述共享对称密钥和所述密钥标识符先前由所述第一客户账户生成并被包含作为发送到所述第二客户账户的先前消息的一部分;
使用所述共享对称密钥对所述消息的第一部分进行解密以获得消息密钥;以及
使用所述消息密钥对所述消息的至少一部分进行解密。
13.根据权利要求12所述的方法,其中,对所述消息的所述第一部分进行解密的步骤进一步包括:
使用所述第一客户账户的私钥对所述消息的所述第一部分进行解密。
14.根据权利要求13所述的方法,所述方法进一步包括:
从所述消息中提取加密增强公钥;
使用共享对称密钥对所述加密增强公钥进行解密以获得增强公钥;以及
基于所述增强公钥获得所述私钥。
15.根据权利要求14所述的方法,其中,获得所述私钥的步骤进一步包括:
从所述增强公钥中提取所述私钥。
16.根据权利要求14至15中任一项所述的方法,其中,所述增强公钥对于所述消息是唯一的。
17.根据权利要求12至16中任一项所述的方法,所述方法进一步包括:
在所述存储器中维持针对所述第一客户账户的唯一客户密钥;以及
使用所述唯一客户密钥对所述密钥标识符进行解密。
18.根据权利要求12至17中任一项所述的方法,其中,所述消息密钥对于所述消息是唯一的。
19.根据权利要求12至18中任一项所述的方法,其中,所述消息进一步包括加密密钥对,该加密密钥对包括第二客户账户共享密钥和相应的第二客户账户密钥标识符,所述加密密钥对由所述第二客户账户生成以用于由所述第一客户账户来加密要发送到所述第二客户账户的后续消息。
20.一种在具有处理器和可操作地连接到该处理器的存储器的第一安全通信终端发送安全通信的方法,该方法包括以下步骤:
维持与第一客户账户的关联;
从第二客户账户接收先前消息;
从所述先前消息中提取先前由所述第二客户账户生成的先前共享密钥和先前共享密钥标识符;
生成消息密钥并使用所述消息密钥对消息内容进行加密;
使用所述先前共享密钥对所述消息密钥进行加密;
将经加密的消息密钥、经加密的消息内容和所述先前共享密钥标识符组合以形成新消息;以及
将所述新消息发送到与所述第二客户账户相关联的第二安全通信终端。
21.根据权利要求20所述的方法,所述方法进一步包括:
除了使用所述先前共享密钥对所述消息密钥加密外,还使用所述第二客户账户的公钥对所述消息密钥进行加密。
22.根据权利要求21所述的方法,其中,所述公钥是增强公钥,所述方法进一步包括:
从公钥服务器接收所述增强公钥;
使用所述先前共享密钥加密所接收的增强公钥;以及
将经加密的增强公钥服务器添加到所述新消息。
23.根据权利要求22所述的方法,其中,所接收的增强公钥对于所述新消息是唯一的。
24.根据权利要求20至23中任一项所述的方法,其中,所述消息密钥对于所述新消息是唯一的。
25.根据权利要求20至24中任一项所述的方法,所述方法进一步包括:
生成包含下一共享密钥和相应的下一密钥标识符的加密密钥对,该加密密钥对用于对要由所述第二客户账户发送到所述第一客户账户的后续消息进行加密;以及
将所述加密密钥对添加到所述新消息。
26.根据权利要求25所述的方法,所述方法进一步包括:
在所述存储器中维持所述第一客户账户的唯一客户密钥;以及
使用所述唯一客户密钥对所述下一密钥标识符进行加密。
27.一种被构造成执行根据权利要求1至8和13至26中任一项所述的方法的安全通信设备。
28.一种被构造成执行权利要求9至11中任一项所述的方法的公钥服务器。