具体实施方式
这里描述的***和方法的一些实施例涉及移动设备。移动设备可以是具有先进数据通信能力的双向通信设备,具有与其他计算机***通信的能力。移动设备也可以包括允许语音通信的能力。根据移动设备提供的功能,可以将其称为例如数据消息收发设备、双向寻呼机、具有数据消息收发能力的蜂窝电话、无线因特网设备、或数据通信设备(具有或不具有电话能力)。移动设备可以通过收发机站的网络来与其他设备通信。
为了帮助读者理解移动设备的结构及其如何与其他设备通信,参照图1至3。
首先参照图1,将一个示例实现中的移动设备的框图总体示意为100。移动设备100包括多个组件,控制组件是微处理器102。微处理器102控制移动设备100的总体操作。可以通过通信子***104来执行通信功能,包括数据和语音通信。通信子***104可以被配置为从无线网络200接收消息并向其发送消息。在移动设备100的一个示例实现中,可以根据全球移动通信***(GSM)和通用分组无线业务(GPRS)标准来配置通信子***104。GSM/GPRS无线网络是世界范围使用的网络,预期这些标准将最终被增强型数据GSM演进(EDGE)和通用移动通信服务(UMTS)和超移动宽带(UMB)等等来补充或取代。新的标准仍在制定中,但是被认为与这里描述的网络性态具有相似性,本领域技术人员也可以理解,本公开描述的实施例预期使用未来开发的任何其他合适的标准。将通信子***104与无线网络200连接的无线链路可以表示一个或多个不同的射频(RF)信道,这些信道根据针对GSM/GPRS通信而规定的已定义协议来操作。使用较新的网络协议,这些信道能够支持电路交换的语音通信和分组交换的数据通信。
尽管在移动设备100的一个示例实现中,与移动设备100相关联的无线网络是GSM/GPRS无线网络,但是在变型实现中,其他无线网络也可以与移动设备100相关联。可以采用不同类型的无线网络,包括例如以数据为中心的无线网络、以语音为中心的无线网络以及可以在相同的物理基站上支持语音和数据通信的双模网络。组合的双模网络包括但不限于:码分多址接入(CDMA)或CDMA2000网络、GSM/GPRS网络(如上所述)、以及未来的第三代(3G)网络,如EDGE和UMTS。以数据为中心的网络的一些较早示例包括MobitexTM无线网络和DataTACTM无线网络。较早的以语音为中心的数据网络的示例包括个人通信***(PCS)网络,如GSM,以及时分多址接入(TDMA)***。可以采用的其他网络通信技术包括例如:综合数字增强网络(iDENTM)、演进数据优化(EV-DO)和高速分组接入(HSPA)等。
微处理器102还可以与其他子***交互,如随机存取存储器(RAM)106、闪存存储器108、显示器110、辅助输入/输出(I/O)子***112、串行端口114、键盘116、扬声器118、麦克风120、摄像单元148、短距离通信子***122和其他设备子***124。
移动设备100的一些子***执行与通信相关的功能,而其他子***可以提供“驻留”或设备上的功能。例如,显示器110和键盘116可以用于与通信相关的功能(如输入文本消息以在网络200上发送)和设备驻留功能(如计算器或任务列表)。微处理器102使用的操作***软件典型地存储在永久存储器中,如闪存存储器108,或者可以备选地存储在只读存储器(ROM)或类似存储元件(未示出)中。本领域技术人员可以认识到,操作***、专用设备应用或其部分可以临时加载入易失性存储器(如RAM 106)中。
在完成网络注册或激活过程之后,移动设备100可以在网络200上发送和接收通信信号。网络接入可以与移动设备100的订户或用户相关联。为了识别订户,移动设备100可以使用订户识别模块(“SIM”)卡126(或例如用于UMTS的USIM或用于CDMA的CSIM或RUIM)***SIM接口128以与网络通信。SIM126是一种示例的传统“智能卡”,用于识别移动设备100的订户并将移动设备100个人化等等。在没有SIM126的情况下,移动设备100无法完全操作用于与网络200通信。通过将SIM 126***SIM接口128,订户可以访问所有订阅的服务。服务可以包括:web浏览和消息收发,如电子邮件、语音邮件、短消息服务(SMS)、多媒体消息收发服务(MMS)。更高级的服务可以包括但不限于:销售点、现场服务和销售人员自动化。SIM 126可以包括处理器和用于存储信息的存储器。一旦将SIM 126***SIM接口128,SIM126可以耦合至微处理器102。为了识别订户,SIM 126可以包括一些用户参数,如国际移动订户标识(IMSI)。使用SIM 126,订户不需要被任何单一物理移动设备所绑定。SIM126也可以存储移动设备的额外订户信息,包括记事本(或日历)信息和最近通话信息。
移动设备100可以是由电池供电的设备,可以包括用于容纳一个或多个可再充电电池130的电池接口132。电池接口132可以耦合至调节器(未示出),调节器辅助电池130向移动设备100提供电源V+。尽管当前技术使用电池,但是未来的技术,如微型燃料电池,可以向移动设备100提供电源。在一些实施例中,移动设备100可以由太阳能供电。
除了其操作***功能以外,微处理器102实现了在移动设备100上的软件应用的执行。控制基本设备操作的应用集合(包括数据和语音通信应用)可以在制造期间安装在移动设备100上。可以加载至移动设备100的其他应用是个人信息管理器(PIM)。PIM具有组织和管理与订户相关的数据项的功能,数据项例如但不限于:电子邮件、日历事件、语音邮件、约会和任务项。PIM应用可以具有经由无线网络200发送和接收数据项的能力。经由无线网络200,可以将PIM数据项与移动设备订户的相应数据项(存储在主机***中和/或与主机***相关联)无缝集成、同步和更新。对于这些项,该功能可以在移动设备100上创建镜像主机。当主机***是移动设备订户的办公室计算机***时,这可以是特别有利的。
附加应用可以通过无线网络200、辅助I/O子***112、串行端口114、短距离通信子***122或任何其他合适的子***124加载至移动设备100。这种应用安装方面的灵活性增加了移动设备100的功能,并且可以提供增强的设备上功能、与通信相关的功能、或两种兼有。例如,安全通信应用可以实现电子商务功能和要使用移动设备100来执行的其他这种金融交易。
串行端口114使订户能够通过外部设备或软件应用来设置偏好,并通过以不同于无线通信网络的方式向移动设备100提供信息或软件下载来扩展移动设备100的能力。可选的下载路径可以用于例如通过直接并从而可靠且可信的连接将加密密钥加载至移动设备100,以提供安全设备通信。
短距离通信子***122可以在不使用网络200的情况下提供移动设备100与不同***或设备之间的通信。例如,子***122可以包括红外设备和用于短距离通信的相关联电路和组件。短距离通信的示例包括由红外数据协会(IrDA)开发的标准、
和IEEE开发的802.11标准族
在使用中,通信子***104对接收信号(如文本消息、电子邮件消息或web页面下载)进行处理,并输入至微处理器102。然后,微处理器102处理接收信号以输出至显示器110或备选地输出至辅助I/O子***112。订户也可以例如使用键盘116与显示器110并可能使用辅助I/O子***112来编辑数据项,如电子邮件消息。辅助I/O子***112可以包括如下设备:触摸屏、鼠标、轨迹球、红外指纹检测器或具有动态按钮按压能力的滚轮。键盘116可以包括例如字母数字键盘和/或电话类型的小键盘。所编辑的项目可以通过通信子***104在网络200上传输。
对于语音通信,移动设备100的总体操作可以实质上类似,除了接收信号可以被处理并输出至扬声器118,并且用于发送的信号由麦克风120产生。备选的语音或音频I/O子***(如语音消息记录子***)也可以在移动设备100上实现。尽管语音或音频信号输出可以主要通过扬声器118来完成,但是显示器110也可以用于提供附加信息,如主叫方的标识、语音通话的持续时间或其他与语音通话相关的信息。
现在参照图2,示出了图1的通信子***组件104的框图。通信子***104可以包括接收机150、发射机152,一个或多个嵌入式或内部天线元件154、156、本地振荡器(LO)158以及如数字信号处理器(DSP)160之类的处理模块。
通信子***104的具体设计可以取决于移动设备100预期在其中操作的网络200;因此应当理解,图2中示意的设计仅用作一个示例。天线154通过网络200接收的信号输入至接收机150,接收机150可以执行常见接收机功能,如信号放大、频率下转换、滤波、信道选择和模数(A/D)转换。接收信号的A/D转换允许更复杂的通信功能,如要在DSP 160中执行的解调和解码。按照类似方式,对要发送的信号进行处理,包括DSP 160的调制和编码。这些DSP处理的信号输入至发射机152进行数模(D/A)转换、频率上转换、滤波、放大并经由天线156在网络200上发送。DSP 160不仅处理通信信号,还提供接收机和发射机控制。例如,通过DSP 160中实现的自动增益控制算法,可以自适应地控制接收机150和发射机152中应用至通信信号的增益。
移动设备100和网络200之间的无线链路可以包含一个或多个不同信道(典型地为不同的RF信道)以及在移动设备100和网络200之间使用的相关联协议。RF信道一般是受限资源,典型地由于移动设备100的总带宽和受限电池功率的限制。
当移动设备100完全可操作时,发射机152可以典型地仅在向网络200进行发送时打开或开启,否则可以被关闭以节约资源。类似地,接收机150可以周期性地关闭以节约功率,直至其需要在指定时间段期间接收信号或信息(如果有的话)。
现在参照图3,将无线网络的节点的框图示为202。实际上,网络200包括一个或多个节点202。移动设备100与无线网络200内的节点202通信。在图3的示例实现中,节点202根据GPRS和GSM技术来配置;然而,在其他实施例中,可以如以上更消息讨论的那样来实现不同标准。节点202包括:具有相关联塔台206的基站控制器(BSC)204、针对GSM中的GPRS支持而添加的分组控制单元(PCU)208、移动交换中心(MSC)210、归属位置寄存器(HLR)212、访问位置寄存器(VLR)214、服务GPRS支持节点(SGSN)216、网关GPRS支持节点(GGSN)218、以及动态主机配置协议(DHCP)服务器220。这一组件列表不应是GSM/GPRS网络内每个节点202的组件的穷尽列表,而是在通过网络200进行的通信中常用的组件的列表。
在GSM网络中,MSC 210耦合至BSC 204,并耦合至陆地线路网络,如公共交换电话网(PSTN)222,以满足电路交换要求。通过PCU208、SGSN 216和GGSN 218至公共或私有网络(因特网)224的连接(这里也称为共享网络设施)表示针对具有GPRS能力的移动设备的数据路径。在利用GPRS能力扩展的GSM网络中,BSC 204还可以包含分组控制单元(PCU)208,PCU 208连接至SGSN 216以控制分段、无线信道分配并满足分组交换要求。为了针对电路交换和分组交换管理来跟踪无线设备的位置和可用性,可以在MSC 210和SGSN 216之间共享HLR 212。对VLR 214的访问可以由MSC 210来控制。
站台206可以是固定收发站台。站台206和BSC 204一起可以形成固定收发机设备。固定收发机设备向通常称为“小区”的特定覆盖区域提供无线网络覆盖。固定收发机设备经由站台206向其小区内的移动设备发送通信信号并从其小区内的移动设备接收通信信号。固定收发机设备通常在其控制器的控制之下执行以下功能,如根据特定(通常为预定)的通信协议和参数,对要发送至移动设备的信号调制、可能的编码和/或加密。类似地,固定收发机设备对从其小区内的移动设备100接收的任何通信信号进行解调和可能的解码和解密(如果需要)。通信协议和参数可以在不同节点之间变化。例如,一个节点可以采用不同调制方案,并且在与其他节点不同的频率处操作。
对于向指定网络注册的所有移动设备100,永久配置数据(如用户简档)可以存储在HLR 212中。HLR 212还可以包含针对每个注册移动设备的位置信息,并且可以查询HLR 212以确定移动设备的当前位置。MSC 210可以负责一组位置区域,可以将当前在其负责区域中的移动设备的数据存储在VLR 214中。此外,VLR 214还可以包含正在访问其他网络的移动设备的信息。VLR 214中的信息可以包括从HLR 212发送至VLR 214的永久移动设备数据的一部分,以便于快速访问。通过将附加信息从远程HLR 212节点移至VLR 214,可以减小这些节点之间的业务量,使得可以在需要较少使用计算资源的情况下可以以较快的响应时间来提供语音和数据服务。
SGSN 216和GGSN 218是可以针对GPRS支持(即GSM内的分组交换数据支持)而添加的单元。通过跟踪每个移动设备100的位置,SGSN216和MSC 210可以具有无线网络200内的相似职责。SGSN 216还执行安全功能和对网络200上的数据业务的访问控制。GGSN 218可以提供与外部分组交换网络的联网连接,并经由在网络200内操作的因特网协议(IP)骨干网连接至一个或多个SGSN216。在正常操作期间,给定移动设备100可以执行“GPRS附着”,以获取IP地址并访问数据服务。这通常不出现于电路交换的语音信道中,因为综合业务数字网(ISDN)地址通常可以用于路由输入和输出呼叫。目前,使用连接至GGSN 218的DHCP服务器220,具有GPRS能力的网络可以使用私有、动态分配的IP地址。存在用于动态IP分配的许多机制,包括使用例如远程认证拨入用户服务(RADIUS)服务器和DHCP服务器。一旦完成GPRS附着,则可以通过PCU 208从移动设备100和SGSN 216向例如GGSN 218内的接入点节点(APN)建立逻辑连接。APN可以表示可以访问直接因特网兼容服务或私有网络连接的IP隧道的逻辑端点。APN还可以表示网络200的安全机制,因为目前每个移动设备100被分配给一个或多个APN,移动设备100一般不能在不首先执行对已经授权其使用的APN的GPRS附着的情况下交换数据。APN可以被认为类似于如“myconnection.wireless.com”之类的因特网域名。
一旦GPRS附着完成,可以创建隧道并且使用IP分组中可以支持的任何协议来在标准IP分组内交换所有业务。这可以包括隧道方法,如在与虚拟专用网(VPN)一起使用的一些IP安全(IPsec)连接情况下的基于IP的IP。这些隧道也被称为分组数据协议(PDP)上下文,并且可以存在有限数目的这些PDP上下文可用于网络200。为了最大化PDP上下文的使用,网络200将针对每个PDP上下文运行空闲定时器,以确定是否存在不活动情况。当移动设备100不使用其PDP上下文时,可以取消对PDP上下文的分配,并将IP地址返回由DHCP服务器220管理的IP地址池。
在如移动设备之类的计算设备中可能出现以下情形:通过不安全信道互相通信,然而期望其通信的实质内容是秘密或私密的。例如,设备可以通过公共因特网、
个域网(PAN)或某种其他通信信道来进行通信,对于这些通信,在没有对所传送数据进行加密的情况下,典型地无法确保其私密性。本领域技术人员可以认识到,例如,为了加密数据,可以采用对称或非对称密码。
在期望数据加密的特定应用中,例如,相对于使用非对称密码,使用对称密码(如高级加密标准(AES)和Blowfish)可以是优选的,这是因为采用对称密码的应用往往较不资源密集。当通信设备由于电池限制或处理功率而具有受限的处理能力时(如在移动设备100中),这可能是尤为重要的。
然而,对称密码需要使用对称加密密钥。典型地,在建立设备之间的安全通信之前,以要在预期使用该密钥对数据进行加密的所有设备当中共享的某种方式来分发对称加密密钥。
存在允许两方联合地建立共享加密密钥的已知协议,如Diffie-Hellman密钥交换(DH)和简单口令指数密钥交换(SPEKE)。
Diffie-Hellman密钥交换协议允许两方通过不安全的通信信道来联合地建立共享密钥。尽管Diffie-Hellman密钥交换协议被认为对于对抗被动偷听者来说是安全的,但是它容易受到执行中间人(man-in-the-middle)攻击的主动敌人的攻击,这是因为它不提供对各方的认证。实际上,例如,可以通过依赖于公开密钥基础设施(PKI)来认证在密钥交换协议中使用的密钥,以提供这种认证。
SPEKE协议将Diffie-Hellman密钥交换协议扩展为包括口令认证,从而提供了对抗中间人攻击的安全性。可以使用可采用带外方式(例如经由电话或当面)在各方之间交换的简单口令来实现口令认证。口令认证密钥交换协议通常需要双方在密钥建立过程期间互相证明对口令的知晓。本质上,在该协议下,口令用作产生更复杂加密密钥的基础。口令本身是“简单”的,这是因为它可以较短,因此,与例如交换更复杂加密密钥相比,更便于在两方之间进行初始交换。
相应地,当采用口令认证密钥交换协议时,不需要依赖于其他认证方法,如设备证书和公开密钥基础设施。然而,与Diffie-Hellman密钥交换协议类似,SPEKE是具体用于在两方之间建立共享加密密钥的协议。
在特定应用中,可能期望在三方或更多方之间建立共享加密密钥。在这种情形中,单独使用Diffie-Hellman密钥交换或SPEKE可能是效率较低的或不实际的,这是因为这将典型地需要每一方分别与每个另一方协商共享加密密钥。
然而,存在其他已知协议,具体涉及在一组三方或更多方(例如设备)之间建立共享加密密钥。
例如,Burmester-Desmedt协议是对于对抗被动偷听者来说安全的组密钥建立协议。然而,与Diffie-Hellman密钥交换协议类似,Burmester和Desmedt协议未提供对组成员的认证。
相应地,为了抵御主动敌人进行的“中间人”攻击,对组成员的认证一般需要采用例如依赖于PKI的附加方法。
然而,在一些应用中,依赖于PKI可能并不实际。例如,对公共PKI的访问可能不可用,或者,获取证书的负担可能施加针对一些组的不必要成本。作为另一示例,移动设备组中的每个移动设备可能具有有限的带宽和处理能力。对于甚至相对较小的设备组,针对设备组的每个成员获得和验证证书和密钥所需的带宽和处理可能施加组密钥建立协议的应用中不期望的时间和功率约束。
本发明的发明人认识到,通过将口令认证的密钥交换协议(例如SPEKE)的认证能力与组密钥建立协议(例如Burmester和Desmedt)的密钥建立能力相结合,可以提供针对3个或更多个设备的组产生共享加密密钥的高度安全的方法。
这里描述的实施例总体上涉及其中计算设备(具体为移动设备)建立以高效方式并入口令认证的组密钥的方法和设备。
特定实施例涉及一种计算n个移动设备构成的组的共享加密密钥(k)的方法,所述n个移动设备构成的组至少包括3个移动设备。针对所述n个移动设备构成的组中的第i个移动设备,所述方法可以包括:计算所述移动设备的公开密钥(Xi),以发送至所述n个移动设备构成的组中的至少一个第一其他移动设备,其中,所述移动设备的公开密钥(Xi)至少是与所述移动设备相关联的私有密钥(xi)和对所述n个移动设备构成的组中的所有移动设备来说已知的共享口令(π)的函数;计算所述移动设备的公开值(Ki),以发送至所述n个移动设备构成的组中的所有其他移动设备中的每一个,其中,所述移动设备的公开值(Ki)至少是与所述移动设备相关联的私有密钥(xi)和所述n个移动设备构成的组中的至少一个第二其他移动设备中的每一个的公开密钥的函数;以及使用所述n个移动设备构成的组中的所有其他移动设备中的每一个的公开值(K1,...Ki-1,Ki+1,...Kn),根据组密钥建立协议来计算共享加密密钥(k)。
在一些实施例中,计算公开值和使用公开值是根据组密钥建立协议来执行的,组密钥建立协议包括Burmester和Desmedt协议。
在一个实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述方法还可以包括:将所述移动设备的公开密钥(Xi)发送至所述n个移动设备构成的组中的所述至少一个第一其他移动设备;以及接收所述n个移动设备构成的组中的至少一个第二其他移动设备中的每一个的公开密钥。在变型实施例中,所述n个移动设备构成的组中的第i个移动设备耦合至集线器设备,所述发送公开密钥或接收公开密钥的步骤中的至少一个是经由所述集线器设备来执行的。
在一个实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述方法还可以包括:将所述移动设备的公开值(Ki)发送至所述n个移动设备构成的组中的所有其他移动设备中的每一个;以及接收所述n个移动设备构成的组中的所有其他移动设备中的每一个的公开值(K1,...Ki-1,Ki+1,...Kn)。在变型实施例中,所述n个移动设备构成的组中的第i个移动设备耦合至集线器设备,所述发送公开值或接收公开值的步骤中的至少一个是经由所述集线器设备来执行的。
在一个实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述方法还可以包括:计算所述移动设备的密钥确认值(Vi),其中,所述移动设备的密钥确认值(Vi)至少是共享口令(π)的函数;将所述移动设备的密钥确认值(Vi)发送至所述n个移动设备构成的组中的所有其他移动设备中的每一个;从所述n个移动设备构成的组中的所有其他移动设备中的每一个接收密钥确认值(V1,...Vi-1,Vi+1,...Vn);计算所述n个移动设备构成的组中的所有其他移动设备中的每一个的验证值,其中,所述验证值至少是共享口令(π)的函数;以及针对所述n个移动设备构成的组中的至少一个其他移动设备,将从所述至少一个其他移动设备接收的密钥确认值(Vi)与针对所述至少一个其他移动设备计算的验证值进行比较,以确定是否存在失配。在变型实施例中,所述n个移动设备构成的组中的第i个移动设备耦合至集线器设备,所述发送密钥确认值或接收密钥确认值的步骤中的至少一个是经由所述集线器设备来执行的。
在至少一个变型实施例中,第i个移动设备的公开密钥(Xi)被计算为与所述移动设备相关联的私有密钥(xi)同共享口令的散列(h1(π))的乘积;所述n个移动设备构成的组被定义为使得针对所述n个移动设备构成的组中的第i个移动设备来定义左邻居(i-1)和右邻居(i+1);以及针对所述n个移动设备构成的组中的第i个移动设备,所述方法还包括:应用Diffie-Hellman计算来至少导出所述移动设备的第一Diffie-Hellman结果(Li)和第二Diffie-Hellman结果(Ri),其中,所述移动设备的第一Diffie-Hellman结果(Li)至少是与所述移动设备相关联的私有密钥(xi)和所述移动设备的左邻居的公开密钥(Xi-1)的函数,以及,所述移动设备的第二Diffie-Hellman结果(Ri)至少是与所述移动设备相关联的私有密钥(xi)和所述移动设备的右邻居的公开密钥(Xi+1)的函数;其中,针对所述移动设备计算的公开值(Ki)至少是所述移动设备的第一Diffie-Hellman结果(Li)和第二Diffie-Hellman结果(Ri)的函数;以及其中,所述移动设备的密钥确认值(Vi)至少是共享口令的散列(h1(π))以及所述移动设备的第一Diffie-Hellman结果(Li)或第二Diffie-Hellman结果(Ri)中的至少一个的函数。
在一些实施例中,针对所述n个移动设备构成的组中的第i个移动设备:所述移动设备的第一Diffie-Hellman结果(Li)被计算为与所述移动设备相关联的私有密钥同所述移动设备的左邻居的公开密钥的乘积的散列(h2(xi*Xi-1));所述移动设备的第二Diffie-Hellman结果(Ri)被计算为与所述移动设备相关联的私有密钥同所述移动设备的右邻居的公开密钥的乘积的散列(h2(xi*Xi+1))。
在一个实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述方法还可以包括:应用Diffie-Hellman计算来导出所述n个移动设备构成的组中的所有其他移动设备中的每一个的第一Diffie-Hellman结果(Lj)或第二Diffie-Hellman结果(Ri)中的至少一个,从而使用所述n个移动设备构成的组中的所有其他移动设备中的每一个的公开值(K1,...Ki-1,Ki+1,...Kn);其中,针对所述n个移动设备构成的组中的给定的其他第j个移动设备而计算的验证值至少是共享口令的散列(h1(π))以及针对所述给定的其他第j个移动设备而导出的第一Diffie-Hellman结果(Lj)或第二Diffie-Hellman结果(Rj)中的至少一个的函数。
在一些实施例中,针对所述n个移动设备构成的组中的第i个移动设备:针对所述移动设备而计算的密钥确认值(Vi)被计算为至少基于共享口令的散列(h1(π))和基于所述移动设备的第一Diffie-Hellman结果(Li)或第二Diffie-Hellman结果(Ri)中的至少一个的、带有密钥的散列消息认证码;以及针对所述n个移动设备构成的组中的给定的其他第j个移动设备而计算的验证值被计算为至少基于共享口令的散列(h1(π))和针对所述给定的其他第j个移动设备导出的第一Diffie-Hellman结果(Lj)或第二Diffie-Hellman结果(Rj)中的至少一个的、带有密钥的散列消息认证码。
在一些实施例中,共享加密密钥(k)被计算为多个Diffie-Hellman结果的乘积,所述多个Diffie-Hellman结果包括所述n个移动设备构成的组中的所有移动设备中的每一个的第一Diffie-Hellman结果(L1,...Ln)或所述n个移动设备构成的组中的所有移动设备的每一个的第二Diffie-Hellman结果(R1,...Rn)中的至少一个。共享加密密钥(k)可以包括对称密钥。
在至少一个实施例中,在计算所述n个移动设备构成的组中的第i个移动设备的公开密钥(Xi)之前,所述方法还可以包括:将共享口令(π)分发至所述n个移动设备构成的组中的所有移动设备。
在一些实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述移动设备的公开密钥(Xi)被计算为与所述移动设备相关联的私有密钥(xi)同共享口令的散列(h1(π))的乘积。共享口令的散列(h1(π))可以被定义为椭圆曲线上的点。
在一个实施例中,所述n个移动设备构成的组可以被定义为使得针对所述n个移动设备构成的组中的第i个移动设备来定义左邻居(i-1)和右邻居(i+1);以及针对所述n个移动设备构成的组中的第i个移动设备,所述方法还可以包括:应用Diffie-Hellman计算来至少导出所述移动设备的第一Diffie-Hellman结果(Li)和第二Diffie-Hellman结果(Ri),其中,所述移动设备的第一Diffie-Hellman结果(Li)至少是与所述移动设备相关联的私有密钥(xi)和所述移动设备的左邻居的公开密钥(Xi-1)的函数,以及,所述移动设备的第二Diffie-Hellman结果(Ri)至少是与所述移动设备相关联的私有密钥(xi)和所述移动设备的右邻居的公开密钥(Xi+1)的函数;其中,针对所述移动设备计算的公开值(Ki)至少是所述移动设备的第一Diffie-Hellman结果(Li)和第二Diffie-Hellman结果(Ri)的函数。
在一些实施例中,针对所述n个移动设备构成的组中的第i个移动设备:所述移动设备的第一Diffie-Hellman结果(Li)被计算为与所述移动设备相关联的私有密钥同所述移动设备的左邻居的公开密钥的乘积的散列(h2(xi*Xi-1)),以及,所述移动设备的第二Diffie-Hellman结果(Ri)被计算为与所述移动设备相关联的私有密钥和所述移动设备的右邻居的公开密钥的乘积的散列(h2(xi*Xi+1))。
在一个实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述方法还可以包括:应用Diffie-Hellman计算来导出所述n个移动设备构成的组中的所有其他移动设备中的每一个的第一Diffie-Hellman结果(Lj)或第二Diffie-Hellman结果(Rj)中的至少一个,从而使用所述n个移动设备构成的组中的所有其他移动设备中的每一个的公开值(K1,...Ki-1,Ki+1,...Kn);以及共享加密密钥(k)可以被计算为多个Diffie-Hellman结果的乘积,所述多个Diffie-Hellman结果包括所述n个移动设备构成的组中的所有移动设备中的每一个的第一Diffie-Hellman结果(L1,...Ln)或所述n个移动设备构成的组中的所有移动设备中的每一个的第二Diffie-Hellman结果(R1,...Rn)中的至少一个。
另外的实施例涉及一种用于计算n个移动设备构成的组中的共享加密密钥(k)的移动设备,所述n个移动设备构成的组至少包括3个移动设备。在一个实施例中,所述移动设备可以包括:处理器;以及存储器;其中,所述处理器被配置为:计算所述移动设备的公开密钥(Xi),以发送至所述n个移动设备构成的组中的至少一个第一其他移动设备,其中,所述移动设备的公开密钥(Xi)至少是与所述移动设备相关联的私有密钥(xi)和对所述n个移动设备构成的组中的所有移动设备来说已知的共享口令(π)的函数;计算所述移动设备的公开值(Ki),以发送至所述n个移动设备构成的组中的所有其他移动设备中的每一个,其中,所述移动设备的公开值(Ki)至少是与移动设备相关联的私有密钥(xi)和所述n个移动设备构成的组中的至少一个第二其他移动设备中的每一个的公开密钥的函数;以及使用所述n个移动设备构成的组中的所有其他移动设备中的每一个的公开值(K1,...Ki-1,Ki+1,...Kn),根据组密钥建立协议来计算共享加密密钥(k)。
另外的实施例涉及一种其中存储有计算机程序的计算机可读存储介质,当由移动设备的处理器执行时,所述计算机程序使处理器执行计算n个移动设备构成的组的共享加密密钥(k)的方法,所述n个移动设备构成的组至少包括3个移动设备。在一个实施例中,针对所述n个移动设备构成的组中的第i个移动设备,所述方法可以包括:计算所述移动设备的公开密钥(Xi),以发送至所述n个移动设备构成的组中的至少一个第一其他移动设备,其中,所述移动设备的公开密钥(Xi)至少是与所述移动设备相关联的私有密钥(xi)和对所述n个移动设备构成的组中的所有移动设备来说已知的共享口令(π)的函数;计算所述移动设备的公开值(Ki),以发送至所述n个移动设备构成的组中的所有其他移动设备中的每一个,其中,所述移动设备的公开值(Ki)至少是与所述移动设备相关联的私有密钥(xi)和所述n个移动设备构成的组中的至少一个第二其他移动设备中的每一个的公开密钥的函数;以及使用所述n个移动设备构成的组中的所有其他移动设备中的每一个的公开值(K1,...Ki-1,Ki+1,...Kn),根据组密钥建立协议来计算共享加密密钥(k)。
以下将更详细描述各个实施例的这些和其他方面和特征。
首先参照图4A,其中,在一个示例实现中,将示意设备组的框图总体上示为400A。
设备组400A将典型地包括一组计算设备,如计算设备410、420、430、440和450。可以认识到,尽管图4A中仅示出了5个设备,但是设备组可以包括更大数目的设备,或者少至3个设备。
在至少一个实施例中,计算设备410、420、430、440和450中的每一个包括移动设备,如移动设备100。在其他实施例中,设备组400A可以包括计算设备的任何组合,可以包括例如移动设备、台式计算机、膝上型计算机、个人数字助理等等。
在一个实施例中,设备组400A中的计算设备被配置为使用如UMTS、
等数据通信协议来互相通信。在其他实施例中,可以使用异构通信装置(例如以太网和IEEE 802.11无线网络的组合)来实现计算设备之间的通信。
使用广播(或多播)方案是有利的,尽管不是必需的,这是因为可以与设备组的所有成员共享特定值。
例如,设备组的构成可以由管理员来定义。管理员可以确定设备的数目,并标识哪些特定设备要共享根据这里描述的计算共享加密密钥的方法实施例而产生的加密密钥。
一旦标识了设备组400A中的设备,就可以根据某种预定方法来确定逻辑顺序。例如,可以根据与每个设备相关联的个人标识号码(其中,“个人”是指相应设备或以某种方式与相应设备相关联)来对设备进行排序,或者可以采用某种其他排序技术。
备选地,根据合适的预定方法,可以向每个设备随机分配顺序中的位置。例如,可以方便地使用一种形式的网络地址(例如IP地址、无线MAC地址、以太网MAC地址等等)或另一唯一标识号码(例如PIN)来分配顺序中的位置,这是因为这些对于设备组中的每一个设备来说将是唯一和已知的。每个设备在顺序中的位置还可以由管理员分配。相应地,排序对设备组的所有成员来说是已知的,或者使其对设备组的所有成员来说是已知的,并且对设备组的每个成员来说是一致的。
一旦建立设备组400A中设备的排序,就可以将索引i与第i个设备相关联,其中,设备是基于所确定的顺序从1至n排序的。
如图4A所示,设备组400A中的计算设备可以被认为根据所确定的顺序来定义逻辑环拓扑。相应地,将针对设备组400A中的每个设备,定义右邻居和左邻居。例如,对于第i个设备430,右邻居是第i+1个设备440,而左邻居是第i-1个设备420。根据环拓扑,如设备410和450所示,逻辑顺序的开始和结尾处的设备分别彼此作为左和右邻居。
在环拓扑中示出设备组400A中的设备,以总体上示意可将索引与每一个设备相关联,以及针对每个设备定义左和右邻居,以辅助理解以下更详细描述的实施例。然而,图4A中示意的连接线不意味着特定设备仅能够与其左或右邻居通信。在至少一个实施例中,每个设备可以被配置为经由所建立的通信信道(未显式示出)与设备组400A中的每个其他设备(或其他设备的子集)直接通信。
在一些实施例中,设备组中的每个设备还可以耦合至集线器,集线器被配置为在执行这里所描述的方法的至少一个实施例时,辅助向和从设备组中的各个设备的数据传输。现在参照图4B,图4B中示意了设备组400B,设备组400B还包括集线器设备460。集线器设备460可以是网络中继器,如交换机或路由器、网络服务器、个人计算机、或适于中继设备之间的数据传输的任何通信设备。在一些实施例中,计算设备410至450中的一个或多个可以用作集线器设备460。集线器设备460被配置为:中继设备组400B中的设备之间的数据传输,还可以被配置为对正在传输的数据执行进一步处理。
现在参照图5,图5示出了示意根据至少一个实施例用于计算组加密密钥的方法的动作的流程图。设备组(分别见例如图4A和4B的设备组400A和400B)中的每个设备可以被配置为执行所示方法的动作。在至少一个实施例中,方法500的动作由执行驻留于移动设备(如移动设备100)上的应用(例如包括一个或多个应用模块)的处理器执行。
作为示例,将所示方法描述为可以在图4A和4B的给定的(第i个)设备430上执行。然而,可以理解,在至少一个实施例中,该方法的动作可以由设备组中的每个设备并行地同时执行。
相对于设备430,设备420被定义为设备430的左邻居,设备440被定义为设备430的右邻居。在图4A和4B的示例中,如果在设备组中存在5个设备(n=5),则设备450将被定义为设备410的左邻居,设备420将被定义为设备410的右邻居。
可以理解,根据设备组中设备的数目和设备的排序,设备组中的每个特定设备将定义不同的左和右邻居。
在执行方法500之前,确定设备组中的设备。例如,作为设备组的一部分的设备可以最初由管理员来标识。
在502,通过对设备组中的设备数目进行计数来确定设备组的大小n。然后,例如通过向每个设备分配从1至n的索引i,对设备组中的设备进行排序。可以如上所述确定设备的排序。
在执行计算组加密密钥的方法中的其他动作之前,设备410至450的用户在其间分发共享口令(π)。在一个实施例中,共享口令是带外分发的,例如通过将其印制在纸上、语音通信或用于私密地分发口令的任何其他合适手段。
在一些实施例中,在本阶段,还可以使每个设备知道设备组大小(n)以及其在设备组顺序中的位置。在变型实施例中,可以在514之前的任何时刻确定顺序和位置,使得每个设备知道要预期多少响应。在一个实施例中,组管理员维护设备组大小和定位的记录,并在新成员被添加至设备组时向设备组发送更新的成员列表。在变型实施例中,通过以一次一个设备组成员的方式进行构建,可以对设备组进行“自持(bootstrap)”。相应地,可以向新成员通知现有设备组成员是谁,并向现有成员通知新成员已经加入设备组。
在一些实施例中,在本阶段还可以建立组加密参数。例如,在使用椭圆曲线实现的实施例中,可以(例如由管理员)标识适于在密码中使用的椭圆曲线以由组设备使用。可以从适于在密码中使用的椭圆曲线的列表中选择椭圆曲线和组加密参数,如由国家标准和技术学会(NIST)或高效密码组标准(SECG)所标识的参数。在其他实施例中,例如,可以使用其他密码算法,如依赖于离散算法或整数因数分解的算法,在这种情况下,组加密参数可以包括适于应用所选算法的参数。
在一个实施例中,在设备组中的每个设备处执行动作504至534。为了便于说明,在以下描述中将总体上参照第i个设备430。
一般地,可以使用Burmester和Desmedt协议来建立组密钥。在使用椭圆曲线的实现中,Burmester和Desmedt协议将需要计算公开密钥,该公开密钥是椭圆曲线组的产生器G的函数。然而,在这里描述的实施例的方法中,如在SPEKE中利用的,通过并入共享口令的使用来修改Burmester和Desmedt协议。具体地,不使用G,而是在计算公开密钥时采用作为共享口令的函数而计算的结果P。
在504,设备430标识共享口令(π)。
例如,设备430的用户可以使用键盘或其他输入装置来输入口令,或者,可以从存储器中检索口令。
在506,设备430利用共享口令(π)作为输入,计算密码散列函数h1(如SHA-512)的结果(P)。
在一个实施例中,在计算散列函数之前,可以首先将预定的固定串预先挂至口令。预定的固定串可以是在选择组加密参数时已选择的。可以认识到,散列函数可以是对数值进行运算的数学函数。相应地,在作为输入而提供之前,可以将口令文本首先转换为数值等效物,例如通过将口令的每个字符的十六进制ASCII字符码进行连接。在一些实施例中,可以使用如Unicode之类的备选字符编码方案。
在使用椭圆曲线密码的实施例中,可以使用散列函数h1的结果来标识预先选择的椭圆曲线上的点(P)。
按照传统,可以将散列函数h1的结果映射至曲线上的点的x坐标。然而,可以认识到,还可以以某种其他方式将结果映射至椭圆曲线上的点。
如果散列函数的结果未能标识预先选择的椭圆曲线上的点,则可以改变与口令相对应的数值(例如通过将与口令相对应的数值递增1或者某个其他预定量),并且重新应用散列函数。可以在必要时重复该过程,直至获得预先选择的椭圆曲线上的有效点。实际上,由于密码散列函数的随机化特性,通常可以在几次尝试之内找到有效坐标。一旦获得有效坐标,则设备430计算满足椭圆曲线函数的对应坐标,以标识曲线上的点(P)。
在508,针对设备430标识私有密钥(xi)。在使用椭圆曲线密码的实施例中,私有密钥可以是适于所选安全等级的、随机或伪随机选择的整数。所使用的大小可以依赖于所期望的安全等级和可用的计算资源。安全等级可以被选择为如上所述的组加密参数的一部分。通常,所期望的安全等级规定了要使用哪个椭圆曲线,这规定了要使用的私有密钥的大小。
在510,计算设备430的公开密钥(Xi)。具体地,已知两方SPEKE将Diffie-Hellman密钥交换协议与秘密产生器的方面进行组合。在本实施例中,除了验证动作之外,将在方法500中应用秘密产生器的使用,以提供对设备组中的设备的认证。
在一个实施例中,仅在协议的生存期内需要私有密钥(xi),并且可以在此后丢弃私有密钥(xi)(即,私有密钥(xi)和公开密钥(Xi)包括短寿命的密钥对)。在变型实施例中,可以保持公开密钥,以免设备需要执行另一密钥建立序列。在一些变型实施例中,稍后,密钥对可以用于其他认证目的(例如对数据进行数字签名和/或验证)。然而,一般地,如果将密钥对重用于不同目的,则可能降低安全性。相应地,更保守的设计规定在需要对其他数据进行附加认证时,发送利用所建立的共享加密密钥而加密的单独的认证公开密钥。
一般地,设备430的公开密钥(Xi)是在508标识的与设备430相关联的私有密钥(xi)以及在504标识的共享口令(π)的函数。更具体地,在一个实施例中,设备430的公开密钥(Xi)被计算为与设备430相关联的私有密钥(xi)同P的乘积,P是在506计算的共享口令(π)的散列的函数。在使用椭圆曲线密码的实施例中,在计算乘积时执行椭圆曲线标量(点)乘法,这是因为P将是椭圆曲线上的点。相应地,在使用椭圆曲线的实施例中,公开密钥(Xi)也将是所选椭圆曲线上的点。
在计算公开密钥(Xi)之后,在512,设备430向设备组中的至少一个其他设备发送公开密钥(Xi)。在一个实施例中,仅向设备430的左和右邻居发送设备430的公开密钥(Xi)。在一些实施例中,设备430在广播通信中向设备组中的每个其他设备发送公开密钥(Xi)。相应地,在514,设备430接收设备组中的其他设备的公开密钥(例如X1,...Xi-1,Xi+1,...Xn),在一个实施例中,至少接收设备430的左邻居和右邻居的公开密钥(例如Xi-1,Xi+1)。
关于动作512和514,可以在设备组中的设备之间直接发送公开密钥。在变型实施例中,可以提供中间集线器设备(见例如图4B的集线器设备460),并将其配置为将公开密钥和可能的其他数据路由至设备组中的各个设备。相应地,在具有集线器设备的实施例中,每个个体设备不需要跟踪设备组中的每个其他设备的位置,这是因为位置信息仅需要维持在集线器设备460处。在具有集线器设备的实施例中,集线器设备不需要被设备组成员所信任。
在516,设备430应用Diffie-Hellman计算,以使用在514接收的针对相邻设备的相应公开密钥(Xi-1,Xi+1),导出设备430的第一Diffie-Hellman结果(Li)和第二Diffie-Hellman结果(Ri)。在一个实施例中,计算与设备430相关联的私有密钥(xi)同左邻居的公开密钥(Xi-1)的乘积,还计算与设备430相关联的私有密钥(xi)同右邻居的公开密钥(Xi+1)的乘积。在一个实施例中,使用密码散列函数h2,设备430的第一Diffie-Hellman结果(Li)被计算为与设备430相关联的私有密钥(xi)同左邻居的公开密钥(Xi-1)的乘积的散列,而第二Diffie-Hellman结果(Ri)被计算为与设备430相关联的私有密钥(xi)同右邻居的公开密钥(Xi+1)的乘积的散列。
例如,散列函数h2可以是SHA-512。在一个实施例中,散列函数h2不同于在506采用的散列函数h1。与散列函数h1相同,可以通过将固定串预先挂至对散列函数的输入来填充对散列函数的输入。如果在应用h1和h2之前使用固定串来填充输入,则针对每个散列函数,所使用的固定串可以不同。
在使用椭圆曲线密码的实施例中,Diffie-Hellman计算涉及使用左和右邻居(其为所选椭圆曲线上的点)的相应公开密钥以及与设备430相关联的私有密钥(xi)(其为整数)而执行椭圆曲线标量(点)乘法。然后,可以将得到的点的坐标(例如x坐标)提供给散列函数h2以产生针对Li和Ri的整数结果。
在一个实施例中,为了验证设备组中的所有设备都知道正确的共享口令(π),在每个设备处,通过组合秘密来产生公开值,以计算密钥确认值。
例如,在518,设备430通过基于共享口令(π)的散列(例如在506计算出的P),并使用在516针对设备430导出的Li作为密钥,来计算带有密钥的散列消息认证码(HMAC),以计算设备430的密钥确认值(Vi)。在变型实施例中,可以使用在516针对设备430导出的Ri作为密钥来计算密钥确认值。在其他实施例中,可以基于Li或Ri,利用P作为密钥来计算带有密钥的散列消息认证码。此外,带有密钥的散列消息认证码还可以采用其他密钥或值(包括一个或多个秘密值)作为输入,以产生公开值。
在520,设备430将设备430的密钥确认值(Vi)发送至设备组中的所有其他设备中的每一个。在一个示例实施例中,在广播通信中来发送密钥确认值。相应地,在522,设备430将从设备组中的所有其他设备中的每一个接收密钥确认值(即V1,...Vi-1,Vi+1,...Vn)。
关于动作520和522,可以在设备组中的设备之间直接发送密钥确认值。在变型实施例中,可以提供中间集线器设备(见例如图4B的集线器设备460),并将其配置为将密钥确认值和可能的其他数据路由至设备组中的各个设备。相应地,在具有集线器设备的实施例中,每个个体设备不需要跟踪设备组中的每个其他设备的位置,这是因为位置信息仅需要维持在集线器设备460处。
在524,设备430根据组密钥建立协议(例如Burmester和Desmedt协议)来计算设备430的公开值(Ki),其中,设备430的公开值(Ki)被计算为与设备430相关联的私有密钥(xi)和设备组中的至少一个其他设备中的每一个的公开密钥(例如Xi-1和/或Xi+1)的函数。
在一个实施例中,通过将在516导出的设备430的第二Diffie-Hellman结果(Ri)与在516导出的设备430的第一Diffie-Hellman结果(Li)进行除法,以合适的素数为模,来计算设备430的公开值Ki。Ri和Li均被视为整数。相应地,设备430的公开值(Ki)是与设备430相关联的私有密钥(xi)所关联的私有密钥和设备组中的至少一个其他设备中的每一个的公开密钥的函数,这是因为如516所示,设备430的第一Diffie-Hellman结果(Li)是作为与设备430相关联的私有密钥(xi)和设备430的左邻居的公开密钥(Xi-1)的函数导出的,设备430的第二Diffie-Hellman结果(Ri)是作为与设备430相关联的私有密钥(xi)和设备430的右邻居的公开密钥(Xi+1)的函数导出的。
在526,设备430将在524计算出的设备430的公开值(Ki)发送至设备组中的所有其他设备中的每一个。在一个示例实施例中,在广播通信中发送公开值(Ki)。在528,设备430接收设备组中的所有其他设备中的每一个的公开值(即K1,...Ki-1,Ki+1,...Kn)。
关于动作526和528,可以在设备组中的设备之间直接发送公开值(K1,...,Kn)。在变型实施例中,可以提供中间集线器设备(见例如图4B的集线器设备460),并将其配置为将公开值和可能的其他数据路由至设备组中的各个设备。相应地,在具有集线器设备的实施例中,每个个体设备不需要跟踪设备组中的每个其他设备的位置,这是因为位置信息仅需要维持在集线器设备460处。
在530,设备430应用Diffie-Hellman计算,使用在528从设备组中的其他设备接收的公开值(K1,...Ki-1,Ki+1,...Kn),针对设备组中的所有其他设备中的每一个,导出第一Diffie-Hellman结果(Lj)和第二Diffie-Hellman结果(Rj)中的至少一个。为了针对每个j,j=1...i-1,i+1...n,计算Lj和Rj,可以使用以下标识:
Kj=Rj/Lj以及 (见例如图5的524)
Rj=Lj+1 (见以下)
假定已经使用相同的P(例如使用相同的散列函数h1和共享口令)类似地计算了每个设备的公开密钥(X1,..Xn),则遵循:
由于 Xi=xi*P (例如见图5的510)
以及 Xi+1=xi+1*P
那么 xi*Xi+1=xi*(xi+1*P)
=(xi*xi+1)*P
=(xi+1*xi)*P
=xi+1*(xi*P)
=xi+1*Xi
或, xi*Xi+1=xi+1*Xi (1)。
相应地,由于:
Li=h2(xi*Xi-1) (2)
以及 Ri=h2(xi*Xi+1) (3)
(例如见图5的516),
遵循:
Ri=h2(xi*Xi+1) (根据(3))
=h2(xi+1*Xi) (应用(1))
=Li+1 (应用(2))。
因此,Ri=Li+1。类似地,可以示出Li=Ri-1。更一般地,对于第j个设备,Rj=Lj+1,Lj=Rj-1。
由于对于每个设备Kj=Rj/Lj,因此,通过设置j=i+1,第i个设备430可以计算Ri+1=Ki+1*Li+1=Ki+1*Ri(由于Ri=Li+1)。第i个设备430知道其自身的Ri(见图5的516)。相应地,设备组中的每个设备将能够恢复Ri+1,并且,在进一步迭代中,也可以在第i个设备处恢复设备组中每个其他设备的第二Diffie-Hellman结果(Rj)。可以理解,如果需要,也可以使用上述标识来恢复每个其他设备的第一Diffie-Hellman结果(Lj)。
在一个实施例中,然后,设备组中的每个设备可以验证设备组中的每个其他设备已知道正确的共享口令(π)。在532,第i个设备430计算所有其他设备j=1...i-1,i+1...n中的每一个的验证值,其中,验证值是对第i个设备430来说已知的共享口令(π)的函数。例如,第j个设备的验证值可以被计算为基于共享口令的散列(P=h1(π))和在530针对第j个设备导出的第一Diffie-Hellman结果(Lj)的HMAC(按照与518相同的方式)。在变型实施例中,第j个设备的验证值可以被计算为基于共享口令的散列(P=h1(π))和在530针对第j个设备导出的第二Diffie-Hellman结果(Rj)的HMAC。在变型实施例中,可以采用验证值的其他公式。
一旦在设备430处针对设备组中的所有其他设备中的每一个计算了验证值,则可以将每个验证值与先前在522从其他设备接收的相应密钥确认值(即V1,...Vi-1,Vi+1,...Vn)进行比较,以确定是否存在失配。该验证动作使得设备组中的每个设备能够独立验证设备组中的每个其他设备已知道正确的共享口令(π)。如果针对特定设备,在接收到的密钥确认值和所计算出的验证值之间存在失配,则可以将该特定设备确认为差错来源(例如,该特定设备的用户可能不知道口令,或者未正确输入口令)。可以给予未能提供有效密钥确认值的设备一个或多个机会来重新提交另一密钥确认值。在一些实施例中,可以将未能提供有效密钥确认值的设备从设备组中排除,并且重新发起协议。可以认识到,在失配情况下,可以采用其他差错处理机制。
在变型实施例中,设备430可以在532仅针对设备组中的设备子集执行验证。
在534,设备430计算共享加密密钥(k)。在一个实施例中,共享加密密钥(k)是Diffie-Hellman结果的乘积。例如,共享加密密钥可以是设备组中的所有设备的第二Diffie-Hellman结果(R)的乘积(即k=R1*R2*...*Rn)。在另一实施例中,共享加密密钥可以是设备组中的所有设备的第一Diffie-Hellman结果(L)的乘积(即k=L1*L2*...*Ln)。在其他实施例中,可以使用Diffie-Hellman结果的其他组合来计算共享加密密钥(k)。
在计算共享加密密钥之后,设备430可以使用该密钥作为对称密钥,与对称密码(如AES、Blowfish等等)相结合,以对与设备组中的至少一个其他设备的后续通信进行加密和解密(图5中未显式示出的动作)。
本领域技术人员可以理解,可以以与图5中作为示意而示出的顺序不同的顺序来执行方法500的一些动作。例如,可以在方法500中稍后执行对密钥确认值进行计算、发送和接收的动作518至522中的一个或多个,但是在532的验证动作之前执行。
根据这里描述的至少一个实施例的计算共享加密密钥的方法的工作中的至少一些可以作为在非暂时计算机可读存储介质上存储的软件指令来提供,所述指令可以由计算设备(例如移动设备)的处理器来执行。计算机可读存储介质的示例可以包括硬盘、软盘、光盘(例如致密盘、数字视频盘)、闪存驱动器或闪存存储器、磁带和存储器。其他配置也是可能的。在变型实施例中,可以将软件指令存储在传输类型的媒体上。
这里已经描述的多个实施例。然而,本领域技术人员可以理解,在不背离所附权利要求中定义的实施例的范围的前提下,可以做出其他变型和修改。