配置和供应无线手持设备的制作方法

文档序号:7947144阅读:175来源:国知局
专利名称:配置和供应无线手持设备的制作方法
技术领域
本申请涉及一种在两个消息系统之间建立可靠和安全的关系以交换数据的装置和方法。更具体地,本申请说明了使用基于密码认证的方法在无线手持设备(“移动设备”)与消息中心或主机系统之间建立可靠关系的装置和方法。这里说明的装置和方法可以应用于陆地线路环境和无线环境。
背景技术
当前在计算机产业业中公知的基于密码的坚固加密机制有多种。这些实现中的一些包括加密密钥交换(EKE)、密码导出模数(PDM)和简单密码认证指数密钥交换(SPEKE)。这些机制限于其实现并且不能达到移动设备的需求。另外,这些机制不能达到实现理想前向保密的需求,在理想前向保密中如果发生了安全破坏,那么所有先前交换的消息将保持安全。提供理想前向保密的协议即使在长期密钥遭到泄密时,已进行的通话密钥也不会泄密(例如参见Menezes等著,Handbook of Applied Cryptography,1996,第496页)。理想前向保密,也被称为破坏后向保护,意味着不论之后出现了什么情况,所有先前交换的消息都应该保持安全。

发明内容
描述了一种在无线或有线环境中具有理想前向保密的、基于密码的加密通信系统。所述系统包括使用所产生的短期认证密钥对与使用共享秘密产生的而产生的长期密钥对相结合,来实现理想前向保密。长期公有密钥与认证公有密钥相关(piggy-back),以能够进行长期密钥的认证交换。这使拥有共享秘密的对应方能够接收并使用长期公有密钥。
根据一个方面,描述了一种由第一系统执行的方法,用于在第一系统与第二系统之间建立安全的双向通信路径以交换一个或多个消息。所述方法包括产生具有第一公有密钥和第一私有密钥的第一密钥对;产生具有第二公有密钥和第二私有密钥的第二密钥对。第二公有密钥基于第一系统和第二系统已知的共享秘密而产生。所述方法还包括向第二系统发送第二公有密钥和第一公有密钥,并接收由第二系统产生的第三公有密钥和第四公有密钥,其中第四公有密钥基于共享秘密而产生。所述方法还包括基于第一私有密钥、第二私有密钥、第三公有密钥和第四公有密钥来计算主密钥,其中主密钥被配置用于一个或多个消息的加密。
根据另一方面,系统包括存储器和与存储器相连的处理器,其中配置处理器以执行上述步骤。
根据另一方面,计算机可读载体包含适于使处理单元执行上述步骤的处理指令。


图1示出了位于固定系统和无线系统之间的第一典型通信系统的框图。
图2示出了位于两个无线系统之间的第二典型通信系统的框图。
图3示出了位于两个固定系统之间的第三典型通信系统的框图。
图4示出了用于实现图1中的通信系统的典型数据集交换的消息交换图,其中用户是数据交换的发起者。
图5示出了用于实现图1中的通信系统的典型数据集交换的消息交换图,其中服务提供商是数据交换的发起者。
图6示出了用于实现图4中的步骤的用户软件内的步骤的数据流图,其中用户是密钥交换的发起者。
图7示出了用于实现图4中的步骤的服务软件内的步骤的数据流图,其中用户是密钥交换的发起者。
图8示出了当在图1、2和3中示出的环境中再生另一个密钥时再生密钥序列的服务用户内的步骤的数据流图。
图9示出了当在图1、2和3中示出的环境中再生另一个密钥时为再生密钥序列提供的服务内所需步骤的数据流图。
具体实施例方式
参考图1,示出了位于固定系统和无线系统之间的第一典型通信系统的框图。这个概观图示出了使用本发明的网络环境。本图示出了本发明的典型实施例并集中于包括无线移动设备的网络拓扑。在图中,具有服务提供系统20和22,以及服务使用系统30和32。在服务提供(这里也称为服务提供商)与服务用户之间是一个或多个网络和一个或多个连接,用于使数据能够在两个系统之间流动。
转向图1,服务提供20和22能够是向用户提供服务的多种可能的计算机。对于本领域的技术人员来说,一些公知的服务提供商可以是因特网上的因特网服务提供商(ISP)或应用服务提供商(ASP)办公室内部的计算机。服务提供20和22还可以是一个或多个运行在私有或上市公司内部的计算机,例如银行、股票经纪人、保险经纪人或其它一些面向服务的公司。服务提供20和22还可以作为在世界范围内操作的组成通用描述、发现和集成群集(UDDI群集)的计算机群集的一部分而运行。所有这些服务提供20和22中的共同点是这些服务提供20和22需要与用户建立安全数据信道。对于UDDI来说,可能需要安全关系以交换私有服务清单或甚至允许UDDI代理服务提供。
可以以多种不同的方式来寻址移动设备和服务主机。在一些实施例中,可以利用IP(互联网协议)地址对移动设备和服务主机进行寻址。在其它实施例中,主机系统可以由电子邮件地址来寻址。在另一实施例中,目的地址可以是主机系统内部的移动设备的用户的电子邮件地址。
本领域的技术人员将会理解,服务30和32的用户可以是移动超文本传输协议(HTTP)浏览器、移动无线应用协议(WAP)浏览器、基于私有传输控制协议/互联网协议(TCP/IP)的应用或一些私有公司解决方案。在这个领域中,正在快速开发新的方法,与蜂窝电话和个人数字助理(PDA)相同,包括例如小型无线移动设备的新Java 2微型版(J2ME)解决方案。对于使用J2ME的设备,对通过服务提供来附加或下载软件的选择正在变得普通。相似地,服务提供20和22能够基于HTTP网络服务器解决方案、Java企业解决方案、基于无线标记语言(WML)服务提供或针对特定目的创建的一些私有服务解决方案。
可以理解的是,这里所指的移动系统和主机系统每一个都能包括一个或多个各自的存储器(例如包含处理指令)以及一个或多个各自的处理单元,例如那些通常公知的通用目的处理单元和/或特殊目的处理单元,例如专用集成电路(ASIC)和现场可编程门阵列(FPGA),其中处理单元能够被配置(例如利用适合的软件和/或固件指令进行编程,和/或利用专门的硬件电路制造)用于实现这里描述的方法。这种系统中的每一个还能够包括任意适合的接口,例如那些通常公知的、与各个处理单元相结合地操作以便与其它系统进行通信的接口。
通信路径中的端点通过允许交换数据、语音、视频、音乐、照片或能够通过数据通信信道进行交换的任意其它数字媒体的一个或多个数据网络相连。图中包括的两个主要网络是因特网上最常见的广域网(WAN)26和无线网络28。无线网络28可以是GSM/GPRS网络、CDMA/1XRTT网络、CDMA2000网络、例如EDGE或UMTS的第三代网络或即将可用的多种其它类型的公共无线网络。在典型系统中,这些网络使用例如ISDN、T1、以太网(陆地线路和802.11)帧中继、ATM、ADSL或一些其它高速因特网连接的链路24连接到主机服务10b。随着更多数量的数据被交换,可以明确的是需要改进安全性并且对于黑客和窃听者更加安全可靠。本发明对现有数据通信路径进行研究,以提供改进的基于密码的认证。这种等级的安全性提供了更好的可信度,任意被传送数据的接收方正是所期望的实体。在服务提供主机系统22与移动设备32上的服务用户之间示出了数据通信路径36的一个实施例。在UDDI服务提供20与移动设备30上的服务用户之间示出了数据通信路径40的另一实施例。
在一个实施例中,服务提供主机系统22具有与移动设备32的用户有关的带外(out-of-band)通信34(即,在任意适合的安全信道上的通信)。带外通信34用于交换共享秘密,以避免不安全路径被当做安全路径。由于UDDI服务云提供了一定等级的安全性,UDDI服务云可以用于定位服务并利用最终目的服务来接收带外共享秘密。下面是带外通信34和38的一些例子(a)移动设备用户30或32以及主机系统20或22处的操作员彼此之间建立电话呼叫以交换共享秘密。然后,将秘密输入入每一个系统并在建立加密密钥的过程中使用。
(b)移动设备用户30或32通过无线网络或有线网络中任意一种连接到安全网址20或22并请求密钥。接收密钥并手动地将密钥输入移动设备30或32。主机系统20或22可以自动地从网络服务器接收密钥,或者还可以手动地输入。在一些实施例中,在请求共享秘密后自动地产生记录。
(c)移动设备30或32的用户为服务做出请求,并且共享秘密由主机系统20或22通过电子邮件发送至它们的公司邮箱(已知处于安全区域中)。用户从他们的电子邮箱中检索共享秘密,并手动地将其输入到移动设备30或32。
(d)移动设备30或32的用户为服务做出请求,并且服务20或22处的操作员产生共享秘密并将其提供给已知是可信和安全的特定个人。这个人可以是特定群组的秘书或管理者;理想地,可以是能够确认做出请求的用户的身份的人。然后,这个可信的人将共享秘密提供给移动设备30或32的最终用户,并且共享秘密被手动地输入移动设备30或32。
这个短列表示出了有多种方式向移动设备20b用户可信地提供共享秘密。这些典型带外通信34和38的共同特性是其内置了一定等级的认证或假定了做出的选择。这种认证的通信路径不同于未认证的数据通信路径。
一旦交换了共享秘密,创建安全通信路径36和40的下一步骤能够进行。一种用于创建安全的和认证的链路的已知方法是使用例如SPEKE的基于密码的坚固加密方法。SPEKE是一种基于知识的认证的加密方法,用于支持(leverage)并保护易于记忆的密码(即共享秘密)。SPEKE是一种公知的最简单的坚固密码方法。它是认证密码Diffie-Hellman交换,其中密码形成了交换的基数或“生成因素”(在标准Diffie-Hellman中,基数通常是固定公有数)。一旦通过WAN26和无线网络28的通信路径是安全的,就可以发起再生密钥序列。再生密钥序列允许在预定数目的周或月之后产生新的密钥集。在这个再生密钥序列期间,对长期加密密钥的高级使用允许实现理想前向保密。一旦认证秘密(共享秘密)用于创建安全路径,它在以后可以再使用以创建新的密钥。通过使用本发明,再生密钥操作不再包括先前的密钥,并且所有先前的会话在将来会保持秘密。
转向图2,示出了根据本发明实施例的位于两个无线系统之间的典型通信系统的框图。在这个实施例中,能够在两个移动设备之间创建安全路径。在这个实施例中,移动设备146和移动设备248交换秘密,并且能够使用所述共享秘密来建立公共密钥。带外会话50可以通过两方之间的电话呼叫、或面对面会议、使用已经概述的其它方法之一或任意其它适合的方法来产生。一旦秘密被共享,它可以被手动地键入移动设备46和48,并且一个站可以发起消息交换以创建公共主安全密钥。这种类型的实施例通常可以用于私有的点对点电子邮件会话。它还可以用于点对点的安全即时消息数据交换。在移动设备146的高级使用中,提供服务的一方可以在移动设备46上运行网络服务器,并提供一些移动形式的安全服务提供。
转向图3,示出了根据本发明实施例的位于两个固定系统之间的典型通信系统的框图。在这个实施例中,在两个主机系统60和62之间发生通信。在图中,服务提供60和服务消费者62具有带外会话66并交换秘密密钥。如前所述,这个带外通信可以是电话呼叫、通过具有安全SSL连接的浏览器以产生和检索密钥的通信或其它一些适合的通信(例如上文提出的)。一旦交换了秘密,就能够使用例如SPEKE的基于密码的坚固密钥产生方法来产生加密密钥。图中用于交换密钥的通信路径可以基于例如因特网26的WAN网络、通过互联的内部网64、其它适合的通信路径(例如802.11或蓝牙链路或与之类似)。在后面的这些示例中,服务消费者62可以运行膝上电脑或掌上电脑并已经具有受限的内部网访问,但是需要更高的安全性。本领域中所公知的是,802.11b缺乏大多数公司内部的大型计算机部门所请求的健壮安全需求。本实施例示出了本发明能够在使用基于密码的认证机制时用于提供理想前向保密的选择。一旦交换了适合的消息以创建主密钥,数据通信路径68能够用于以较高的安全性秘密地交换所有形式的数据。
转向图4,示出了表示用于产生和验证主密钥的典型数据集交换的消息交换图,其中用户是数据交换的发起者。该图示出了服务消费者100(用户)与服务提供商102之间的典型步骤和消息交换。图中连接的一端被看作服务消费者或用户100,被标记为系统A。连接的另一端被看作服务提供商(也被称为服务提供)或主机系统102,被标记为系统B。在这个示例中,用户100发起数据交换以创建安全连接。系统A与系统B之间是通过一个或多个数据通信网络(例如图1中所示)的消息交换。与图1、2和3所示相似,用户可以是移动设备30、32或48,或是主机系统62。同样,服务提供商可以是移动设备46或主机系统20、22或60。
如步骤104所示,用户100通过针对带外通信已经描述的方法之一或通过另一适合的方法与已知服务提供商102联系以交换共享秘密。该服务提供商102希望利于该交换并发出秘密密码或简单并易于记忆的密码串(步骤106)。通过这种机制,产生共享秘密并在两方之间交换。用户100接收并保存秘密以助于加密密钥生成。可选择地,服务提供商102能够从用户100接收秘密密码(共享秘密)。在任一情况下,服务提供商存储与该用户有关的共享秘密。
在交换了共享秘密后,用户100发起(在本示例中)产生密钥对的步骤(步骤108),并且将密钥信息传送到服务提供商(步骤110)。具体地,在步骤108处,用户100产生长期加密密钥对(即加密密钥的公有和私有部分)。在步骤108处,用户100还产生短期认证密钥对。在本示例中,这个短期密钥对被称为认证密钥对,因为其使用下文进一步讨论的共享秘密而产生。
一旦产生了用户的短期和长期密钥对,在步骤110处将其公有密钥发送至服务提供商102以进一步产生最终主密钥(也被称为主秘密)。该传输可以在不安全的链路上发生,这是由于发出共享秘密的主机系统102能够理解并使用短期认证密钥以产生主密钥。一旦服务提供商接收到用户的公有密钥(步骤112),验证用户,并且再次调用该用户的共享秘密112。一旦验证了用户且再次调用了用户的共享秘密,服务提供商102使用共享秘密继续产生其自有的短期认证密钥对(步骤114)。服务提供商102还产生其自有的长期加密密钥对(步骤114)。使用由用户100产生的公有密钥并使用共享秘密,服务提供商102产生主加密密钥(或主秘密),如步骤116所示。共享秘密提供了必要的认证以信任所交换的信息。服务提供商的短期公有认证密钥、服务提供商的长期公有加密密钥以及由服务提供商使用最新产生的主加密密钥和一些已知串计算出的密钥确认值被发送到用户(步骤116)。
用户从服务提供商102接收包括服务提供商的短期和长期公有密钥的信息(步骤118),并产生用户自有的主密钥(步骤120)。用户利用这个主密钥验证密钥确认值(步骤120)。在这个示例中,密钥确认值可以是主密钥和服务名称或其它一些已知串的散列,由用户和服务提供商商议确定。如果密钥确认值没有得到验证,那么由用户100创建的主密钥是不可信的,这可能是某人试图泄密连接。如果由用户100产生的主控加密密钥看起来是有效的,那么用户返回向服务提供商发送最终密钥确认值(步骤122)。服务提供商接收消息,验证密钥确认值并将用户标记为准备好进行下一步(步骤124)。这允许从服务提供商的角度进行完全的数据交换(步骤128)。在用户端,一旦发送了验证消息,传输中将会出现轻微的暂停,但之后能够开始进行完全的数据交换(步骤126)。
传输可以包括电子邮件消息、基于HTTP(超文本传输协议)的业务(例如XML(扩展标记语言)、WML(无线标记语言)等)或其它类型的业务。
在一些实施例中,主机系统能够在最终确认值从移动设备发送至主机系统前,在发送至移动设备的消息中发送数据有效载荷。消息中的有效载荷可以是定义了主机系统处的主机服务的服务分录。在一些实施例中,服务分录可以是定义了被访问的主机系统处的主机服务的属性的UDDI服务条目。
可以理解的是,这里描述的由第一方(例如用户)产生的长期加密密钥对是第一密钥对的更一般示例,其中第一密钥对的公有密钥部分和私有密钥部分可以被称为第一公有密钥和第一私有密钥。相似地,这里描述的由第一方(例如用户)产生的短期加密密钥对是第二密钥对的更一般示例,其中第二密钥对的公有密钥部分和私有密钥部分可以被称为第二公有密钥和第二私有密钥。同样,这里描述的由第二方(例如服务提供商)产生的长期加密密钥对是第三密钥对的更一般示例,其中第三密钥对的公有密钥部分和私有密钥部分可以被称为第三公有密钥和第三私有密钥。相似地,这里描述的由第二方(例如服务提供商)产生的短期认证(或加密)密钥对是第四密钥对的更一般示例,其中第四密钥对的公有密钥部分和私有密钥部分可以被称为第四公有密钥和第四私有密钥。产生第一和第二密钥对的第一方可以是用户,如上文中的示例中所描述;或者是服务提供商,如下文中的示例中所描述。
转向图5,示出了表示用于产生和验证主密钥的典型数据集交换的消息交换图,其中服务提供商是数据交换的发起者。除了由服务提供商做出第一步,图5中的步骤实质上与图4中的步骤相对应。这个示例突出了用户或服务提供商中任意一方都可以是数据交换的发起者。图中连接的一端被看作用户100,并被标记为系统A-服务消费者。连接的另一端被看作服务102,并被标记为系统B-服务提供商。系统A100与系统B102之间是通过例如图1、2和3中所示的一个或多个数据通信网络的消息交换。相似地,如图1、2和3中所示,用户可以是移动设备30、32或48,或是主机系统20、22、46或60。
如步骤200/202所示,服务提供商102联系用户100(在本示例中)以交换共享秘密。可选择地,用户可以发起这个通信。可以设想,主机公司102内部的管理者可以联系用户100并向用户通知用户已经利用提供的共享秘密执行了一些动作。使用从已经提供的带外通信的扩展列表选择的任意适合方法或其它一些适合方法,共享秘密得以产生并交换(步骤200和202)。用户组件接收并保存共享秘密以帮助加密密钥生成。可选择地,服务提供商102能够从用户100接收共用密码(共享秘密)。在任一情况下,服务提供商保存与该用户有关的共享秘密。
在交换了共享秘密后,服务提供商102能够发起(在本示例中)产生密钥对的步骤(步骤204)并向用户100传输密钥信息(步骤206)。具体地,服务提供商102产生短期认证密钥对和长期加密密钥对(步骤204)。这对应于图4中的步骤108。
一旦产生了服务提供商的短期和长期密钥对,服务提供商的公有密钥被发送至用户(步骤206)以进一步产生最终主密钥(也被称为主秘密)。该传输可以在不安全的链路上发生,由于共享秘密的拥有者将能够理解并使用短期认证密钥以产生主密钥。用户接收服务提供商的公有密钥,并检查存储器以验证服务创建是期望的,并且具有保存在存储器中的共享秘密(步骤208)。用户再次调用服务提供商102的共享秘密并使用共享秘密产生短期认证密钥对(步骤210)。用户还产生长期加密密钥对(步骤210)。使用由服务提供商102产生并发送的公有密钥并使用共享秘密,用户100产生主加密密钥(或主秘密),如步骤212处所示。在产生主密钥后,用户100还通过将已知串(即对其自身和服务提供已知)与主密钥相结合来产生密钥确认值(步骤212)。用户的短期公有认证密钥、长期公有加密密钥和密钥确认值被发送至服务提供商(步骤212)。
服务提供商接收用户的公有密钥和密钥确认值并验证信息的发送方(步骤214),并且还再次调用该用户的共享秘密。利用接收到的用户的公有密钥值,服务提供商再次调用其自身保存的该用户的私有密钥值(步骤214)。使用接收到的用户的公有密钥和服务提供商保存的私有密钥,现在服务提供商能够产生主密钥(步骤216)。在产生主密钥后,服务提供商102通过计算其自有密钥确认值、使用已知串和最新创建的主密钥以及将其与接收到的密钥确认值相比较,来验证密钥确认值(步骤216)。如果密钥确认值没有得到验证,那么创建的主密钥是不可信的,这可能是某人试图泄密连接。如果密钥确认值得到了验证,那么主控加密密钥被看作是有效的,并且服务提供商102向用户发送返回最终密钥确认值(步骤218)。用户接收消息(步骤220),验证密钥确认值,并将服务提供商标记为准备好进行下一步(步骤220)。这允许从用户的角度进行完全的数据交换(步骤222)。在服务提供端,一旦发送了验证消息,传输中将会出现轻微的暂停,但之后能够开始进行完全的数据交换(步骤224)。在多数情况下将是用户发起第一数据交换;所以将确认发送至用户确实具有一些优势。
传输可以包括电子邮件消息、基于HTTP(超文本传输协议)的业务(例如XML(扩展标记语言)、WML(无线标记语言)等)或其它类型的业务。
图6是用于实现图4中所示典型方法的由用户执行(例如在用户软件中)的典型步骤的数据流图,其中用户是密钥交换的发起者。当用户发现新的服务并希望访问该服务时,开始第一步(步骤300)。这可以通过例如UDDI服务、通过公司内部网服务、通过浏览万维网、通过与朋友会话或通过电话呼叫而出现。一旦连接了服务和用户,它们交换只有它们两个知道的共享秘密‘s’(步骤302)。对用于这种交换的典型方法已经做了详细的描述。这个共享秘密‘s’将在后文用作例如PIN(个人标识号码)以对用户和服务彼此之间进行认证。当用户准备好访问服务时,用户(例如在软件中)产生所请求的服务的长期密钥对(步骤304)。这个长期密钥对是在将来再生密钥操作期间所使用的密钥值之一。对于本申请其余部分中的所有数学计算,假定参与交易的所有方已经事先在组G、组的大小order(G)和G中的元素g(q=order(G)是一个较大的素数)上达成一致。G和g可以是公知的,即,它们不需要保密。下文给出创建密钥值的典型数学计算(使用SPEKE方法),虽然下文示出的典型计算利用了乘法组,可以明显看出能够使用加法组来实现适合的计算选择长期密钥对(例如,由用户)
任选a,1<a<q-1;计算A=ga;如果A=1,继续选择不同的a直到A<>1。
数值‘A’是用户的长期公有密钥(或更一般地,是第一公有密钥),数值‘a’是用户的长期私有密钥(或更一般地,第一私有密钥)。
选择的数字‘a’大于1并且小于素数q-1。一旦选择了私有密钥(即‘a’)并产生了公有密钥(即‘A’),私有密钥‘a’被安全地存储,并且最终将公有密钥‘A’发送至服务提供商。
用户还基于共享秘密‘s’产生了短期认证密钥对(步骤306)。使用SPEKE密钥产生方法之后的类似计算,这一步的典型数学计算是(例如使用像上文那样对q和‘a’相同的假定(现在应用到x))选择短期认证密钥对(例如,由用户)任选x,1<x<q-1;计算X=sx;如果X=1,继续选择新的x直到X<>1。
数值‘X’是用户的短期公有密钥(或更一般地,是第二公有密钥),数值‘x’是用户的短期私有密钥(或更一般地,第二私有密钥)。数值‘s’是共享秘密。
对‘x’的选择在1和素数q-1之间。然后,用户软件将公有密钥值‘A’和‘X’发送至服务提供(服务提供商),如步骤308所示。这一步骤继续进行到(A),其中服务提供接收数值并执行附加计算,如图7所示。一旦服务提供完成了那些计算,它向用户返回服务提供自有的相似公有密钥数值对‘B’和‘Y’以及密钥确认值,用于进行验证(步骤312),这将在下文结合图7进一步讨论。这一步在图6中示出为来自图7的输入(B)。在此处,用户能够使用‘B’和‘Y’,以使用例如高级SPEKE计算来创建主密钥。通过同时使用‘B’和‘Y’以产生主密钥,加密方法能够实现理想前向保密。这一点可以在后文示出的再生密钥序列中更清楚地看到。典型的主密钥计算如下计算主密钥(例如,由用户)k1=Yx;k2=Ba;检查k1,k2!=0、1或order(G)-1;k=hash(k1||k2),其中||是concatentation函数。
这里,‘x’是用户的短期私有认证密钥(或更一般地,是第二私有密钥),‘Y’是接收到的服务提供的短期公有认证密钥(或更一般地,是第四公有密钥)。此外,‘a’是用户的长期私有加密密钥(或更一般地,是第一私有密钥),‘B’是接收到的服务提供的长期公有加密密钥(或更一般地,是第三公有密钥)。
数值‘k’表示能够用于在用户和服务之间加密数据的主密钥。数值‘k’是中间密钥‘k1’(基于短期认证密钥)和‘k2’(基于长期加密密钥)的组合。能够在步骤314处对中间密钥k1和k2的值进行重要检查,以验证这两个数值不是0、1或order(G)-1;否则意味着出现了正在尝试的安全攻击314。这个攻击将会造成密钥是否被迫成为所有可能的密钥中的小的子集。如果攻击者发送X=0或Y=0,通信方将得到值为0的结果密钥。这个快速的检查将确保攻击不会升级。如果k1或k2的数值没有落入这些小的子集组中之一,那么能够中止密钥的协商316。
如果没有检测到子集攻击,用户能够使用主密钥‘k’来测试由服务提供发送的密钥确认值(步骤318)。一种用于产生密钥确认值的方法是利用例如公有密钥‘A’中字节的已知串对密钥进行散列。测试密钥确认值的典型计算如下测试密钥确认值“接收到的hA” =hA=hash(k||公有密钥‘A’中的字节),其中“接收到的hA”来自服务提供,且‘k’为本地主密钥。
如果软件的已产生密钥确认值‘A’与接收到的密钥确认值不匹配(步骤320),那么它是不正确的(步骤322)。不正确的密钥确认值可能意味着中间位置的人发动攻击或尝试进行其它一些攻击。这种情况下操作将会中止(步骤322)。如果两个确认值相匹配,则假定已经建立了完全安全的链接(步骤324)。链接被标记为有效,并且在短的延迟后将用于通信(步骤324)。使用最新产生的认证密钥,用户发送这个值返回到服务(步骤326)。在标号(C)之后回到图6。在片刻的暂停后(即确保确认值被服务提供所接收),用户能够交换数据(步骤328)。
任意适合的加密和解密方法能够用于使用主密钥对消息进行加密和解密,例如像高级加密标准(AES)(Federal InformationProcessing Standards Publication197,November26,2001,NationalInstitute of Standards and Technology)的对称密钥加密/解密方法。
图7是由服务提供(例如在服务提供商软件内)执行的典型步骤的数据流图,用于实现图4中示出的典型方法,其中用户是图4中所示密钥交换的发起者。当用户联系服务提供商以“带外”的形式交换共享秘密时,该过程开始(步骤398)。这对应于图6中用户设备上的步骤302。这个带外交换已经被多次讨论,并且还提供了认证等级,即,用户和服务是它们自称的用户和服务。一旦这个交换完成,用户可以在任意时间联系服务以开始所述过程。一旦用户没有联系主机服务,由来自图6中的用户的流图的消息(A)所示,新用户得以验证(步骤400)。因为服务提供商可能具有上千个希望在任意时间开始使用其服务的用户,服务提供商是被动的,直到用户决定希望开始服务。即使已经交换了共享秘密,这可能意味着非常少且旧的共享秘密在用户不能在那个时间周期中连接的一定天数后被清除。消息的到达允许服务提供商查找新用户并验证存在共享秘密(步骤400)。消息中是基于共享秘密的、用户的公有短期认证密钥(步骤400)。消息还包含用户的公有长期加密密钥(步骤400),该密钥能够用于实施方式中,从而当再生密钥操作发生时创建理想前向保密,如图7和8。
服务提供以与用户创建的长期加密密钥对相似的方式产生用户的长期加密密钥对(步骤402)。创建服务提供的长期加密密钥对的典型数学计算如下(例如使用SPEKE方法)选择长期密钥对(例如,由服务提供商)任选b,1<b<q-1;计算B=gb如果B=1,继续选择不同的b直到B<>1。
数值‘B’是服务提供的(服务提供商的)长期公有密钥(或更一般地,是第三公有密钥),数值‘b’是服务提供的长期私有密钥(或更一般地,是第三私有密钥)。
选择的数字‘b’大于1并小于素数q-1。一旦选择了私有密钥‘b’且产生了公有密钥‘B’,那么私有密钥‘b’被安全地存储,并且最终公有密钥‘B’被发送返回到用户,从而用户能够在他的计算中使用公有密钥‘B’。
服务提供还基于共享秘密产生短期认证密钥对(步骤404)。使用符合SPEKE密钥产生方法的相似的计算,这一步的典型数学是(例如使用像上文那样的对q和x相同的假定(现在应用到y))选择短期认证密钥对(例如,由服务提供商)任选y,1<y<q-1;计算Y=sy;如果Y=1,继续选择y直到Y<>1。
数值‘Y’是服务提供的(服务提供商的)公有短期认证密钥(或更一般地,是第四公有密钥),数值‘y’是服务提供的私有短期认证密钥(或更一般地,是第四私有密钥)。
对‘y’的选择在1和素数q-1之间。公有密钥值‘B’和‘Y’最终被发送至用户以产生用户自有的主密钥。
然后,服务提供使用从用户接收的公有密钥‘A’和‘X’以及刚刚计算的私有密钥来产生主密钥(步骤406)。通过同时使用‘A’和‘X’以产生主密钥,加密方法提供了理想前向保密。为了提供理想前向保密,本实施方式还使用任意再生密钥序列期间中的后续密钥的再发生的私有密钥。典型的主密钥计算如下计算主密钥(例如,由服务提供商)k1=Xy;k2=Ab;检查k1,k2!=0、1或order(G)-1;k=hash(k1||k2)。
这里,‘y’是服务提供的短期私有加密密钥(或更一般地,是第四私有密钥),‘X’是接收到的用户的短期公有加密密钥(或更一般地,是第二公有密钥)。此外,‘b’是服务提供的长期私有密钥(或更一般地,是第三私有密钥),‘A’是接收到的用户的长期公有加密密钥(或更一般地,是第一公有密钥)。
数值‘k’表示了由服务提供产生的主密钥,它与由用户产生的主密钥相同。这个主密钥能够用于对服务和用户之间的数据进行加密。数值‘k’是中间密钥‘k1’(基于短期认证密钥)和‘k2’(基于长期加密密钥)的组合。在步骤408处能够对中间密钥k1和k2的数值进行重要检查,以验证这两个数值不是0、1或order(G)-1;否则意味着出现了正在尝试的安全攻击。这个攻击将会造成密钥是否被迫成为所有可能的密钥中的小的子集。如果攻击者发送X=0或Y=0,通信方将得到值为0的结果密钥。这个快速的检查将确保攻击不会升级。如果k1或k2的数值没有落入这些小的子集组中之一,那么能够中止密钥的协商(步骤410)。
如果没有检测到子集攻击,服务提供能够使用主密钥‘k’来测试由用户发送的密钥确认值(步骤416)。一种用于产生密钥确认值的方法是利用例如公有密钥‘B’中的字节的已知串对密钥进行散列。测试串(密钥确认值)的典型计算如下测试密钥确认值hB=hash(k||公有密钥“B”中的字节)。
然后,服务提供将向用户发送测试串,从而能够对用户产生的主密钥和服务提供创建的主密钥的匹配进行验证。然后,服务提供向用户发送长期公有加密密钥‘B’、短期公有认证密钥‘Y’(或第四公有密钥)和验证串hB(步骤414)。
一旦用户已经产生了其自有主密钥‘k’,用户发送返回最终密钥确认值,以确保服务提供知道一切工作正常(C)。这个最终步骤(C)在图7中示出,作为步骤416处的服务提供的输入。如果密钥确认值基于‘A’计算并被发送至服务提供(步骤416),则这正是测试所期待的(步骤418)。如果密钥确认值与期望值不匹配,那么操作中止(步骤420)。如果密钥确认值是匹配的,则假定存在完全的双向加密和安全的数据通信路径(步骤422)。
再生密钥数据流序列图8是示出了当在图1、2和3中示出的环境中再生另一个密钥时,再生密钥序列的用户(例如软件)内的典型步骤的数据流图。该过程示出了使用长期加密密钥以实现理想前向保密的实用程序。当用户或服务提供两者之一决定需要新密钥时,所述过程开始。对于这个示例,将假定主机(服务提供商)正在运行加密密钥期满定时器。然而,可以有多种其它方式来再生加密密钥。用户可以决定新密钥的时间,用户或服务可能担心某人已经尝试攻击并确定了当前密钥的值。不管怎样,期望新的密钥,并且能够使用不是基于初始共享秘密的唯一方法来产生新的密钥。
如图8中的示例所示,用户接收到再生密钥请求,或者用户决定删节(cut)新的密钥(步骤430)。当然,步骤430可以由服务提供商而不是用户来执行。用户软件产生新的短期加密密钥(步骤432)。基于SPEKE并使用相同序列的典型数学计算如下所示选择新的短期加密密钥对(例如,由用户)任选x,1<x<q-1;计算X=gx;如果X=1,继续选择x直到X<>1。
这里,‘x’是为用户的短期私有加密密钥而产生的“新的”数值。数值‘x’能够被称为“加密”密钥或“认证”密钥(如前所述),因为数值‘x’对两个方面都有所贡献。对‘x’的选择必须在1和素数q-1之间。然后,用户软件将最新产生的公有密钥值‘X’发送至服务提供商434。这一步继续执行到(D),服务提供商接收数值并执行附加计算。步骤(D)进入图9,作为连接中的服务提供商端的输入。
一旦服务提供商完成了图9中(D)所示的那些计算,它返回相似的新的公有加密密钥‘Y’(下文进一步讨论)和用于用户验证的密钥确认值(E)。这一步如图8中的输入(E)所示。这时,用户能够使用服务提供商的新的‘Y’密钥和服务提供商的旧的长期公有‘B’密钥,以利用例如高级SPEKE计算来创建主密钥。通过同时使用现有‘B’和新的‘Y’以产生密钥,加密方法能够提供理想前向保密的实施方式。因为现有‘B’或新的‘Y’都不基于初始共享秘密,而且现有‘B’与新的‘B’相结合以创建新的密钥不是直接基于先前的密钥,所以能够实现理想前向保密。另外,现有‘B’密钥携带了一些与初始共享秘密产生的认证。只有认证后的服务用户(即初始拥有共享秘密的用户)才能够将私有密钥‘b’保存到盘。可以在创建新的主密钥‘k’的典型再生密钥数学计算中更清楚地看出这一点计算主密钥(例如,由用户)k1=Yx;k2=Ba;
检查k1,k2!=0、1或order(G)-1;k=hash(k1||k2)。
这里,‘x’是用户的新的短期私有加密密钥,‘Y’是接收到的、由服务提供商产生的新的短期公有加密密钥。数值‘a’是用户的现有长期私有加密密钥,‘B’是服务提供商的现有长期公有加密密钥。
数值‘k’表示了能够用于对在用户和服务提供商之间的数据进行加密的新的主密钥。数值‘k’是中间密钥‘k1’(基于短期加密密钥)和‘k2’(基于长期加密密钥)的组合。能够对中间密钥k1和k2的值进行重要检查(步骤442)以验证这两个数值不是0、1或order(G)-1;否则意味着出现了正在尝试的安全攻击(步骤442)。如果k1或k2的数值没有落入这些小的子集组中之一,那么能够中止密钥的协商(步骤444)。
如果没有检测到子集攻击,新的主密钥‘k’能够用于测试由服务提供(服务提供商)发送的密钥确认值,如步骤446所示。一种用于产生密钥确认值的方法是对密钥与例如公有密钥‘A’中的字节的已知串进行散列。用于计算密钥确认值的方法可以与上述方法相同。如果计算的密钥确认值与接收到的值不匹配(步骤448),则假定密钥错误(步骤450)。不正确的密钥确认值可能意味着中间位置的人发动攻击或尝试进行其它一些攻击。否则用户使用主密钥‘k’来产生最终密钥确认值(步骤452)。密钥确认值被发送至服务提供商(步骤454)作为最终确认;如图8中(F)处所示。然后在片刻的暂停后,新的加密密钥在用户软件内部使用(步骤456)。在短暂时期内,还出现了先前发送的消息能够进入的窗口。在这个几分钟的时期内,旧的密钥得到保留并试验是否出现解密错误(步骤456)。
现在转向图9,图9示出了当在图1、2和3中示出的环境中再生另一个密钥时,为再生密钥序列提供的服务内的典型步骤的数据流图。这个过程示出了使用长期加密密钥来实现理想前向保密的实用程序。在本实施例中,假定用户已经发起了过程并且已经创建了图8中所示的新的短期加密(或认证)密钥对。短期公有加密密钥‘X’的到来被示为输入(D)。接收到公有密钥,且再次调用并检查了用户的配置信息(步骤460)。然后,服务提供产生新的短期加密密钥对,用于在下一个时间段使用(步骤462)。创建新的短期加密密钥的典型数学与上文已经示出的相似,除了不使用共享秘密‘s’。
选择新的短期加密密钥对(例如,由服务提供商)随机选择y,1<y<q-1;计算Y=gy;如果Y=1,继续随机选择y直到Y<>1。
对‘y’的选择在1和素数q-1之间。最终将数值‘Y’发送至用户以产生主密钥(步骤472)。
在选择了新的短期加密密钥对后,服务提供商使用刚刚从用户接收的数值‘X’和最新产生的数值‘y’产生了主密钥。通过同时使用‘A’和‘X’以产生密钥,加密方法提供了理想前向保密。典型主密钥计算如下计算主密钥(例如,由服务提供商)k1=Xy;k2=Ab;检查k1,k2!=0、1或order(G)-1;k=hash(k1||k2)。
这里,‘y’是服务提供商的新的短期私有加密密钥,‘X’是接收到的、由用户产生的新的短期公有加密密钥。数值‘b’是服务提供商的现有长期私有加密密钥,‘A’是用户的现有长期公有加密密钥。
数值‘k’表示了服务提供的主密钥(步骤464),将用于对在服务提供商和用户之间的所有数据进行加密。数值‘k’是中间密钥‘k1’(基于新的短期加密密钥)和‘k2’(基于长期加密密钥)的组合。对‘k’的计算不是直接取决于初始共享秘密‘s’,而是取决于携带一些‘s’所初始提供的认证的数值‘A’和‘b’。能够对中间密钥k1和k2的值进行重要检查(步骤466)以验证这两个数值不是0、1或order(G)-1;否则意味着出现了正在尝试的安全攻击。如果k1或k2没有落入这些小的子集组中之一,那么能够中止密钥的协商(步骤468)。
如果没有检测到子集攻击,主密钥‘k’能够用于测试由服务提供发送的密钥确认值(步骤470)。一种用于产生密钥确认值的方法是对密钥与例如公有密钥‘B’中的字节的已知串进行散列(步骤470)。该计算可以与已经描述的方法相似。然后服务提供将其新的短期公有加密密钥‘Y’和密钥确认值hB发送至用户(步骤472)。图9至的传输箱(E)示出了对密钥值和密钥确认值的传输。
一旦用户已经产生其自有的主密钥‘k’,用户就发送返回最终的密钥确认值以确保服务提供知道一切工作正常(图8中的步骤454),如(F)所示。图9中所示(F)处的最终步骤作为服务提供的输入(步骤474)。如果计算了‘A’的密钥确认值并将其发送至服务提供(步骤474),则这就是测试所期望的(步骤476)。如果密钥确认值与期望值不匹配,则中止操作(步骤478)。如果密钥确认值得到验证,则假定存在完全的双向加密的和安全的数据通信路径(步骤480)。服务器保持先前的密钥几分钟以防在这个新的密钥产生阶段路由上出现分组。
根据另一方面,任意形式的计算机可读载体能够包含适于使处理单元执行这里描述的方法的处理指令。计算机可读载体可以是任意适合类型的载体,例如固态存储器(例如只读存储器(ROM)、随机存取存储器(RAM)等)、磁性存储器、光存储器、其它类型的存储器或调制的波形/信号(例如射频、音频或光频调制的波形/信号),所述计算机可读载体包含能使处理单元执行这里描述的技术的合适的计算机指令集。
对包括典型操作方法的本发明的典型实施例进行了详细描述,可以理解的是,这里描述的操作可以利用不同的元件和步骤来执行。示出典型实施例仅为了示例的目的,不意味着限制了本发明的范围。本发明的范围由所附权利要求来限定。
权利要求
1.一种由第一系统执行的方法,用于在第一系统与第二系统之间建立安全的双向通信路径以交换一个或多个消息,所述方法包括产生具有第一公有密钥和第一私有密钥的第一密钥对;产生具有第二公有密钥和第二私有密钥的第二密钥对,第二公有密钥基于第一系统和第二系统已知的共享秘密而产生;向第二系统发送第二公有密钥和第一公有密钥;接收由第二系统产生的第三公有密钥和第四公有密钥,第四公有密钥基于所述共享秘密而产生;以及基于第一私有密钥、第二私有密钥、第三公有密钥和第四公有密钥来计算主密钥,其中主密钥被配置成用于一个或多个消息的加密。
2.根据权利要求1所述的方法,还包括产生测试串;向第二系统发送第一测试串;接收由第二系统产生的第二测试串;以及利用第二测试串和主密钥来认证第二系统。
3.根据权利要求2所述的方法,还包括步骤在接收由第二系统产生的第二测试串的步骤之前,接收具有通用描述、发现和集成(UDDI)服务条目的数据有效负荷。
4.根据权利要求1所述的方法,其中第一系统是无线移动设备。
5.根据权利要求4所述的方法,其中第二系统是服务提供主机系统。
6.根据权利要求4所述的方法,其中通过安全带外信道来传送共享秘密。
7.根据权利要求6所述的方法,其中共享秘密是由主机系统自动产生的个人标识号码(PIN)。
8.根据权利要求6所述的方法,其中通过网络接口在第一系统的请求之后从第二系统接收共享秘密。
9.根据权利要求5所述的方法,其中交换一个或多个消息包括交换电子邮件消息、基于http的XML消息或基于http的WML消息。
10.根据权利要求5所述的方法,其中利用电子邮件地址或IP地址来寻址无线移动设备和主机系统。
11.根据权利要求5所述的方法,其中使用修改的简单密码指数密钥交换(SPEKE)方法来计算主密钥。
12.根据权利要求1所述的方法,其中第一系统是服务提供主机系统,并且其中第二系统是移动无线设备。
13.根据权利要求1所述的方法,还包括使用主密钥来加密一个或多个消息。
14.一种数字信号,包含根据权利要求13所述的方法加密的一个或多个消息。
15.一种计算机可读载体,包含适于使处理单元执行权利要求1的所述方法的处理指令。
16.一种第一系统,用于建立与第二系统的安全的双向通信路径以交换一个或多个消息,所述第一系统包括产生具有第一公有密钥和第一私有密钥的第一密钥对的装置;产生具有第二公有密钥和第二私有密钥的第二密钥对的装置,基于第一系统和第二系统已知的共享秘密来产生第二公有密钥;向第二系统发送第二公有密钥和第一公有密钥的装置;接收由第二系统产生的第三公有密钥和第四公有密钥的装置,基于共享秘密来产生第四公有密钥;以及基于第一私有密钥、第二私有密钥、第三公有密钥和第四公有密钥来计算主密钥的装置,其中主密钥被配置成用于一个或多个消息的加密。
17.一种第一系统,用于建立与第二系统的安全的双向通信路径以交换一个或多个消息,所述第一系统包括存储器;以及与存储器相连的处理单元,其中处理单元被配置为执行以下步骤产生具有第一公有密钥和第一私有密钥的第一密钥对;产生具有第二公有密钥和第二私有密钥的第二密钥对,基于第一系统和第二系统已知的共享秘密来产生第二公有密钥;向第二系统发送第二公有密钥和第一公有密钥;接收由第二系统产生的第三公有密钥和第四公有密钥,基于共享秘密产生第四公有密钥;以及基于第一私有密钥、第二私有密钥、第三公有密钥和第四公有密钥计算主密钥,其中主密钥被配置成用于一个或多个消息的加密。
全文摘要
描述了一种由第一系统执行的方法,用于在第一系统与第二系统之间建立安全的双向通信路径以交换一个或多个消息。产生了具有第一公有密钥和第一私有密钥的第一密钥对,并产生了具有第二公有密钥和第二私有密钥的第二密钥对。基于第一系统和第二系统已知的共享秘密来产生第二公有密钥。第二公有密钥和第一公有密钥被发送至第二系统。接收由第二系统产生的第三公有密钥和第四公有密钥,其中基于共享秘密来产生第四公有密钥。基于第一私有密钥、第二私有密钥、第三公有密钥和第四公有密钥来计算主密钥,其中主密钥被配置成用于一个或多个消息的加密。
文档编号H04L9/08GK101023622SQ200580017552
公开日2007年8月22日 申请日期2005年3月30日 优先权日2004年4月2日
发明者赫伯特·A·利特尔, 迈克尔·K·布朗 申请人:捷讯研究有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1