CN1969501B - 安全地产生共享密钥的系统和方法 - Google Patents
安全地产生共享密钥的系统和方法 Download PDFInfo
- Publication number
- CN1969501B CN1969501B CN2005800196800A CN200580019680A CN1969501B CN 1969501 B CN1969501 B CN 1969501B CN 2005800196800 A CN2005800196800 A CN 2005800196800A CN 200580019680 A CN200580019680 A CN 200580019680A CN 1969501 B CN1969501 B CN 1969501B
- Authority
- CN
- China
- Prior art keywords
- key
- public keys
- user
- new
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
- H04L9/0844—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
-
- 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/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
Abstract
描述了一种用于在两个系统之间进行安全双向通信的方法。产生第一密钥对和第二密钥对,后者包括根据共享秘密产生的第二公共密钥。向第二系统发送第一和第二公共密钥,并从第二系统中接收第三和第四公共密钥。根据共享秘密生成第四公共密钥。根据第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥,计算用于加密消息的主密钥。为了密钥重置,产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对,以及接收新的第四公共密钥。利用椭圆曲线计算,使用新的第二私用密钥和新的第四公共密钥来计算新的主密钥。
Description
技术领域
本申请涉及在两个消息收发系统之间建立可信和安全的关系以交换数据的装置和方法。更具体地,本申请描述了使用基于口令的认证方法、在无线手持设备(“移动设备”)与消息中心或主机系统之间建立可信关系的装置和方法。这里描述的装置和方法可应用于陆地线路环境以及无线环境。
背景技术
在计算机工业中,有多种当前已知的强大的基于口令的加密机制。这些实现方式中的一些包括加密密钥交换(EKE)、口令推导模(Password Derived Moduli,PDM)、以及简单认证口令指数密钥交换(SPEKE)。这些机制在实现方式方面受限,没有处理对移动设备的需求。另外,这些机制没有处理对实现完备前向(forward)保密的需求,使得在破坏安全性确实发生时,所有先前交换的消息保持安全。协议提供了即使泄露了长期密钥,过去的会话密钥也不会泄露的完备前向保密。(例如,见Menezes et al.,Handbook of AppliedCryptography,1996,p.496)。完备前向保密也称为后向阻断保护,表示不论未来发生任何事情,所有先前安全交换的消息应当保持安全。
发明内容
根据在此公开的示教,提供了针对两个系统之间的安全通信的系统和方法。例如,方法可以包括产生的第一密钥对和第二密钥对,后者包括根据共享秘密产生的第二公共密钥。向第二系统发送第一和第二公共密钥,并从第二系统接收第三和第四公共密钥。根据共享秘密,产生第四公共密钥。根据第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥,计算用于加密消息的主密钥。为了重置密钥,产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对,以及接收新的第四公共密钥。使用新的第二私用密钥和新的第四公共密钥,利用椭圆曲线计算来计算新的主密钥。
作为另一示例,第一系统用于建立至第二系统的安全双向通信路径,以交换一个或多个消息。第一系统包括存储器和与存储器相连的处理单元。处理单元配置来执行以下步骤:产生具有第一公共密钥和第一私用密钥的第一密钥对;产生具有第二公共密钥和第二私用密钥的第二密钥对,第二公共密钥是根据第一系统和第二系统已知的共享秘密产生的;向第二系统发送第二公共密钥和第一公共密钥;接收由第二系统产生的第三公共密钥和第四公共密钥,第四公共密钥是根据共享秘密产生的;根据第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥,计算第一主密钥,其中,第一主密钥配置来用在对一个或多个消息的加密中;产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对;从第二系统接收新的第四公共密钥,以及使用椭圆曲线计算,根据第一私用密钥、新的第二私用密钥、第三公共密钥和第四公共密钥,计算新的主密钥。
附图说明
图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 2Micro Edition(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的用户进行的带外通信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是一种用于基于知识的认证的加密方法,其中基于知识的认证利用并保护易于记忆的口令,即,共享秘密。SPEKE是已知强口令方法中最简单的方法,它是认证口令的Diffie-Hellman交换,其中,口令形成交换的基础或“产生器”。(在标准Diffie-Hellman中,基础通常是固定公共数字。)一旦使通过WAN26和无线网络28的通信路径安全,则可以发起重置密钥序列。重置密钥序列允许在预定数量的周或月之后, 产生新的密钥集。在该重置密钥序列期间,长期加密密钥的高级使用允许完备前向保密的实现。一旦认证秘密(共享秘密)用于创建安全路径,则可以在之后的日期再用于创建新的密钥。通过使用本发明,密钥重置操作不泄露先前的密钥,以及所有先前的会话在未来都是保密的。
转向图2,图2示出了根据本发明的实施例,两个无线系统之间的示例通信系统的方框图。在本实施例中,可以在两个移动设备之间创建安全路径。在本实施例中,移动设备1 46和移动设备2 48交换秘密,并能够使用该共享秘密,建立共用密钥。可以通过双方之间的电话呼叫、面对面会议,或者使用上述其它方法之一或任何其它合适方法,进行带外会话50。一旦共享了秘密,则可以将其手动键入移动设备46和48,并且一个站可以发起消息的交换,以创建共用主安全密钥。这种实施例可以普遍用于专用点对点电子邮件会话,还可以用于点对点安全即时消息收发数据交换。在高级使用中,提供服务的移动设备1 46可以在移动设备46上运行网络服务器,并提供特定形式的移动的安全服务提供。
转向图3,图3示出了根据本发明的实施例,在两个固定系统之间的示例通信系统的方框图。在本实施例中,在两个主机系统60和62之间进行通信。在本示例中,服务提供60和服务消费者62进行带外会话66,并交换秘密密钥。如已描述的,该带外通信可以是:电话呼叫;通过带有安全SSL连接的浏览器、以产生和获取密钥的通信;或者如之前提供的一些其它适合的通信。一旦交换了密钥,则可以使用类似于SPEKE的强基于口令的密钥产生方法来产生加密密钥。在本示例中,交换密钥的通信路径可以通过类似互联网26的WAN网络、通过内部内联网64、或者诸如或类似于802.11或蓝牙链接之类的其它适合的通信路径。在这些后面的示例中,服务消费者62可以运行膝上电脑或掌上电脑,并已可以有限地访问内联网,但是还需要或要求更强的安全性。在本领域众所周知的是,802.11b缺乏大多数公司内部大型计算机部门所需的鲁棒的安全要求。本实施例示出了,可以在使用基于口令的认证机制时,使用本发明来提供完备前向保密的选项。一旦交换合适消息以创建主密钥,数据通信路径68可以用于高度安全地秘密交换所有格式的数据。
转向图4,图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)的步骤。具体地,用户100在步骤108产生长期加密密钥对,即加密密钥的公共和私用部分。用户100还在步骤108产生短期认证密钥对。由于短期密钥对是使用如下进一步论述的共享秘密产生的,所以在本示例中,将短期密钥对称为认证密钥对。
一旦产生了用户的短期和长期密钥对,则在步骤110,将公共密钥传输至服务提供商102,以进一步产生最终的主密钥(也称为主秘密)。由于只有发布共享秘密的主机系统102可以理解并使用短期认证密钥来产生主密钥,所以该传输在不安全链接上进行。一旦服务提供商接收到用户的公共密钥(步骤112),则验证用户,并重新调用(recall)针对该用户的共享秘密112。一旦验证了用户,并重新调用了用户的共享秘密,服务提供商102使用共享秘密,产生自己的短期认证密钥对(步骤114)。服务提供商102还产生自己的长期加密密钥对(步骤114)。如步骤116所示,服务提供商102使用由用户100产生的公共密钥,并使用共享秘密,产生主加密密钥(或主秘密)。共享秘密提供要信任交换的信息所必需的认证。向用户发送服务提供商的短期公共认证密钥、服务提供商的长期公共长期加密密钥、由服务提供商使用最新产生的主加密密钥而计算的密钥确认值、以及一些已知串(步骤116)。
用户接收从服务提供商102处发送的、包括服务提供商的短期和长期公共密钥的信息(步骤118),产生用户自己的主密钥(步骤120)。用户使用该主密钥,验证密钥确认值(步骤120)。在本示例中,密钥确认值可以是由用户和服务提供商一致同意的主密钥和服务名称、或一些其它已知串的散列(hash)。如果密钥确认值未得到验证,则用户100创建的主密钥不可信,并假设有人试图泄露该连接。如果由用户100产生的主加密密钥看上去有效,则用户将最终的密钥确认值发送回服务提供商(步骤122)。服务提供商接收该消息,验证该密钥确认值,将该用户标记为就绪(步骤124)。从服务提供商看来,这允许进行完全数据交换(步骤128)。在用户方,一旦发送了验证消息,传输会稍微暂停,然后可以开始完全数据交换(步骤126)。
传输可以包括电子邮件消息,诸如XML(可扩展标记语言)、WML(无线标记语言)之类的基于HTTP(超文本传输协议)的通信业务,或者其它类型的通信业务。
在一些实施例中,在将最终确认值从移动设备发送至主机系统之前,该主机系统能够在发送给移动设备的消息中,发送数据有效载荷。该消息中的有效载荷可以是定义主机系统处的主机服务的服务预定(book)条目。在一些实施例中,服务预定条目可以是定义所访问的主机系统处的主机服务属性的UDDI服务条目。
要理解,这里描述的由第一方(例如,用户)产生的长期加密密钥对更一般地是第一密钥对的示例,其中,公共密钥部分和私用密钥部分可以称为第一公共密钥和第一私用密钥。类似地,这里描述的由第一方(例如,用户)产生的短期认证密钥对(也称为短期加密密钥对)更一般地是第二密钥对的示例,其中,公共密钥部分和私用密钥部分可以称为第二公共密钥和第二私用密钥。此外,这里描述的由第二方(例如,服务提供商)产生的长期加密密钥对更一般地是第三密钥对的示例,其中,公共密钥部分和私用密钥部分可以称为第三公共密钥和第三私用密钥。类似地,这里描述的由第二方(例如,服务提供商)产生的短期加密密钥对更一般地是第四密钥对的示例,其中,公共密钥部分和私用密钥部分可以称为第四公共密钥和第四私用密钥。产生第一和第二密钥对的第一方可以是如在以上示例中描述的用户,或者是如在以下示例中描述的服务提供商。
转向图5,图5示出了消息交换图,该图示出了用于产生和验证主密钥的示例数据交换集,其中,服务提供商是数据交换的发起者。除了服务提供商进行第一步骤之外,图5内的步骤实质上与图4内的步骤相对应。本示例突出,用户或服务提供商均可以是数据交换的发起者。在本示例中,连接的一端看作用户100,标记为系统A-服务消费者。连接的另一端看作服务102,标记为系统B-服务提供商。在系统A 100和系统B 102之间,是在诸如图1、2和3所示的一个或多个数据通信网络26、28和64上的消息交换。类似地,如图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)。如步骤212所示,用户100使用由服务提供商102产生和发送的公共密钥,并使用共享秘密,产生主加密密钥(或主秘密)。在产生主密钥之后,用户100还通过将已知串(即,对自身和服务提供是已知的)与主密钥组合,来产生密钥确认值(步骤212)。将用户的短期公共认证密钥、长期公共加密密钥和密钥确认值发送至服务提供商(步骤212)。
服务提供商接收用户的公共密钥和密钥确认值,验证信息的发送方(步骤214),还重新调用针对该用户的共享秘密。服务提供商使用接收到的用户公共密钥值,重新调用自己保存的针对该用户的私用密钥值(步骤214)。使用接收的用户公共密钥和服务提供商保存的私用密钥,服务提供商现在可以产生主密钥(步骤216)。在产生主密钥之后,服务提供商102通过使用已知串和最新创建的主密钥来计算自身的密钥确认值、并将其与接收的密钥确认值进行比较,来验证密钥确认值(步骤216)。如果密钥确认值未得到验证,则创建的主密钥不可信,并且假设有人试图泄露该连接。如果的确验证了密钥确认值,则认为主加密密钥有效,以及服务提供商102将最终的密钥确认值发送回用户(步骤218)。用户接收该消息(步骤220),验证该密钥确认值,并将该用户标记为就绪(步骤220)。从用户看来,这允许进行完全数据交换(步骤222)。在服务提供方,一旦发送了验证消息,则传输会暂停,然后可以开始完全数据交换(步骤224)。在大多数情况下,将会是用户发起首次数据交换;所以向用户发送确认确实具有一些优点。
传输可以包括电子邮件消息,诸如XML(可扩展标记语言)、WML(无线标记语言)之类的基于HTTP(超文本传输协议)的通信业务,或者其它类型的通信业务。
图6是在用户是密钥交换的发起者时,由用户(例如,在用户软件中)执行的用于实现图4所示示例方式的示例步骤的数据流图。当用户发现新服务并想进行访问(步骤300)时,第一步骤发生。这可以通过类似于UDDI的服务、通过公司内联网服务、通过浏览万维网、通过与朋友的会话或者通过电话呼叫进行。一旦服务和用户已经连接,则交换仅是二者知道的共享秘密(步骤302)。已详细描述了用于该交换的示例方法。稍后,将像PIN(个人标识号码)一样使用该共享秘密,进行用户和服务的相互认证。当用户准备访问服务时,用户(例如,以软件形式)产生针对所请求的服务的长期密钥对(步骤304)。该长期密钥对是未来密钥重置操作期间所用的密钥值之一。对于在本申请剩余部分(remainder)中的所有数学计算,假设该事务涉及的所有成员方都事先就群G、大小order(G)、以及G的元素g达成一致,使得q=order(g)是较大的素数。G和g可以是公知的,即,不需要保密。创建密钥值的示例数学计算如下(使用SPEKE方法),尽管以下示出的示例计算利用了乘法群,但是很明显,可以使用加法群执行适合的计算:
选取长期密钥对(例如,由用户进行)
选取随机数a,1<a<q-1;
计算A=gn;
如果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’是共享秘密。
本示例中,在1与素数q-1之间选择‘x’。然后,如步骤308所示,用户软件将公共密钥值‘A’和‘X’发送至服务提供(服务提供商)。如图7所示,该步骤前进至(A),其中,服务提供接收值并执行附加计算。如以下结合图7进一步的讨论,一旦服务提供完成了这些计算,则将类似的自身公共密钥值‘B’和‘Y’对与密钥确认值一起返回给用户,用于验证(步骤312)。在图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;否则,表示有人试图进行安全攻击。如果密钥被强制到全部可能密钥的小子集,则会导致攻击发生。如果攻击者发送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 Publication 197,2001年11月26日,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’是服务提供的私用短期认证密钥(或者,更一般地,第四私用密钥)。
在本示例中,在1与素数q-1之间选择‘y’。公共密钥值‘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)作为步骤416中服务提供的输入在图7中示出。如果根据‘A’计算密钥确认值,并将其发送至服务提供(步骤416),则这正是测试所寻找的(步骤418)。如果密钥确认值与预期值不匹配,则中止操作(步骤420)。如果密钥确认值匹配,则假设完全双向加密和安全的数据通信路径存在(步骤422)。
重置密钥数据流序列
图8是示出了在图1、2和3所示环境中重新产生另一密钥时,针对重置密钥序列的用户内(例如,在软件内)的示例步骤的数据流图。该过程示出了使用长期加密密钥来实现完备前向保密。当用户或服务提供确定需要或要求新密钥时,该过程开始。对于本示例,假设主机在运行加密密钥期满计时器。然而,还有可以重新产生加密密钥的许多其它方式。用户可以确定到了新密钥的时间,用户或服务可能担心有人正试图攻击并确定当前密钥值。无论情况怎样,都需要或要求新密钥,并可以使用不基于原始共享秘密的唯一的方法,产生新密钥。
如图8的示例中示出的,用户接收重置密钥请求,或者用户决定剪裁新密钥(步骤430)。当然,可以由服务提供商替代用户,执行步骤430。用户软件产生新的短期加密密钥(步骤432)。示例数学计算是基于SPEKE的,并使用如前所示的相同序列:
选取短期加密密钥对(例如,由用户进行)
选取随机数x,1<x<q-1;
计算X=gx;
如果X=1,则继续选择x,直至X◇1。
这里,值‘x’是针对用户的短期私用加密密钥而产生的“新”值。由于值‘x’引起了这两方面,所以可以将值‘x’称为“加密”密钥或者“认证”密钥(如先前所称)。在该示例中,在1与素数q-1之间选择‘x’。然后,用户软件将最新产生的公共密钥值‘X’发送至服务提供商434。该步骤前进至(D),在这里,服务提供商接收值并执行附加计算。步骤(D)作为连接的服务提供商侧的输入进入图9。
一旦服务提供商使用图9所示的(D)完成了这些计算,则返回具有密钥确认值的类似的新公共加密密钥值‘Y’(以下进一步讨论)用于用户验证(E)。这以图8中的输入(E)示出。在该点,例如,在高级SPEKE计算之后,用户能够使用服务提供商的新的‘Y’密钥,与服务提供商较旧的长期公共‘B’密钥一起来创建主密钥。加密方法通过共同使用现有的‘B’和新的‘Y’,可以实现完备前向保密。由于现有的‘B’或新的‘Y’均不是基于原始共享秘密,并且将现有的‘B’与新的‘Y’进行组合,创建不直接基于先前密钥的新密钥,所以可以实现完备前向保密。另外,现有的‘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)。
如果未检测到子集攻击,则如步骤446所示,新的主密钥‘k’可以用于测试由服务提供(服务提供商)发送的密钥确认值。产生密钥确认值的一种方法是,使用诸如公共密钥‘A’的字节之类的已知串对密钥进行散列计算。计算密钥确认值的方式可以与先前描述的相同。如果计算的密钥确认值与接收的不匹配(步骤448),则假设密钥错误(步骤450)。不正确的密钥确认值表示正在尝试中间人攻击,或者一些其它攻击。否则,用户使用主密钥‘k’产生最终的密钥确认值(步骤452)。将密钥确认值作为最终的确认发送至服务提供商(步骤454);如在图8的点(F)所示。然后,在短暂的暂停之后,将新的加密密钥用于用户软件内(步骤456)。在短时间段内,还有先前传输的消息可能到达的窗口。在这个几分钟的时间段内,如果发生解密错误,则保持并尝试旧密钥(步骤456)。
现在转向图9,图9表示在图1、2和3所示的环境中重新产生另一密钥时,在用于重置密钥序列的服务提供商内的示例步骤的数据流图。该过程示出了结合短期加密密钥来使用长期加密密钥,以实现完备前向保密。在本实施例中,假设如图8所示,用户已经开始该过程,并已经创建了新的短期加密(或者认证)密钥对。以输入(D)示出了短期公共加密密钥‘X’的到达。接收公共密钥,重新调用并检查用户的配置信息(步骤406)。然后,服务提供产生新的短期加密密钥对,用于在下一时间段上使用(步骤462)。除了未使用共享秘密之外,创建新短期加密密钥的示例数学计算与之前示出的相似。
选取新的短期加密密钥对(例如,由服务提供商进行)
选取随机数y,1<y<q-1;
计算Y=gy;
如果Y=1,则继续选择随机数y,直至Y◇1。
在本示例中,在1与素数q-1之间选择‘y’。值‘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’,但是值‘A’和‘b’会携带一些最初由‘s’提供的认证。可以对中间密钥值k1和k2进行检查(步骤466),以验证这两个值不是0,1或order(G)-1;否则,表示有人正试图进行安全攻击。如果k1或k2的值落入这些小子集群之一内,则可以中止密钥的协商(步骤468)。
如果未检测到子集攻击,则主密钥‘k’可以用于测试由服务提供发送的密钥确认值(步骤470)。产生密钥确认值的一种方法是,使用类似于公共密钥‘B’的字节之类的已知串来对密钥进行散列计算(步骤470)。该计算可以与先前描述的相同。然后,服务提供将会把新的短期公共加密密钥‘Y’和密钥确认值hB传输至用户(步骤472)。在图9中的传输方框(E)处示出了密钥值和密钥确认值的传输。
如在(F)处示出的,一旦用户已经产生了自己的主密钥‘k’,则发送回最终的密钥确认值,以确保服务提供知道一切工作正常(图8的步骤454)。该最终步骤(F)作为服务提供的输入(步骤474)在图9中示出。如果针对‘A’计算密钥确认值,并将其发送至服务提供(步骤474),则这正是测试所寻找的(步骤476)。如果密钥确认值与预期值不匹配,则中止操作(步骤478)。如果密钥确认值得到验证,则假设完全的双向加密和安全的数据通信路径存在(步骤480)。服务器将先前的密钥保持几分钟,以防止在该新密钥的产生阶段,分组正在路由中(步骤480)。
可以修改上述方法,以利用其它安全密钥的示例的产生计算方法(例如,空中下载(over-the-air))。例如,用户(例如,诸如移动台30或32的移动台)和服务提供商(例如,诸如主机系统20或22之类的主机系统)可以首先共享通过诸如那些先前描述的带外方法获得的小秘密密钥(例如,在加密方面较弱的秘密密钥),然后,自举为更大的在加密方面较强的密钥。以这样的方式进行自举,防止了在线和离线词典(dictionary)攻击。
例如,以下描述的示例协议可以允许用户(例如,移动台)和服务提供商(例如,主机系统)通过假设为不安全的信道的空中下载,协商密码密钥。在本示例中,第一协议用于初始密钥交换,第二协议用于密钥的重新产生(密钥重置)。
根据一个示例,第一协议并行地运行SPEKE和Diffie-Hellman(DH)密钥交换协议。产生的主密钥是由SPEKE和DH协议产生的密钥的组合。SPEKE将小共享秘密与DH密钥协定协议组合,来协商共享密钥,以这样的方式,排除了离线词典攻击。具体地,SPEKE使用小共享秘密来替换DH密钥协定的基点(base point)。
第二协议是本领域已知的MQV技术(Menezez-Qu-Vanstone密钥协定方案)。在D.Hankerson,A.Menezes和S.Vanstone(纽约:Springer-Verlag,2004)的Guide to Elliptic Curve Cryptography中,描述了该技术的示例版本;为了说明该技术领域的一般公知状态,将该参考的MQV论述在此一并引入,作为参考。
在示例实现方式中,用户100(例如,移动台)和服务提供商(或主机系统)可以共享以下加密系统参数:
Fq-素数阶(order)q的有限域;
E(Fq)-Fq上的椭圆曲线,如NIST(国家标准技术研究所)认可的Fq上的512比特随机椭圆曲线,其中的曲线具有辅助因子1(见Federal Information Processing Standards Publication,“DigitalSignature Standard(DSS)”,2000年1月27日,附录6,位于http://csrc.nist.gov/publications/fips/fip186-2/fips186-2-changel.pdf);
P-产生素数阶r的子群E(Fq)的E的任何点;
xR-代表椭圆曲线标量乘法,其中,x是标量,R是E(Fq)上的点;以及
用户100和主机系统102同意使用上述参数、或者其它适合的参数,这些参数可以是公知的或者专用的参数。除了可以在Zr(其中,Zr表示以r为模的整数)中进行一些MQV操作之外,所有数学操作可以在群E(Fq)中进行。
初始密钥交换
如上所述,第一示例协议共同利用了SPEKE和DH,进行初始密钥交换。在以下对该示例的描述中,将参照先前描述的图4的流程图,该流程图示出了示例处理步骤,其中,用户100(例如,移动台)是数据交换的发起者。当然,图5同样是可应用的,其中,图5示出了服务提供商(即,主机系统)是数据交换的发起者的示例处理步骤。此外,示例步骤不需要按照已述顺序进行。
为了产生和交换共享秘密(步骤104),用户100和主机系统102可以使用如先前描述的任何适合的方法。任何一方都可以产生秘密,并通过带外通信与另一方共享。
用户100(例如,移动台30或32)可以通过选取随机数a,以及通过计算A=aP(椭圆曲线标量乘积),来产生长期密钥对(步骤108),其中,1<a<r-1,a是用户的长期私用密钥(或第一私用密钥),A是用户的长期公共密钥(或第一公共密钥),P和r如上所述。因此,在本示例中,使用椭圆曲线计算,产生用户的长期公共密钥。然后,用户100(例如,移动台)可以安全地存储a和A。
为了产生短期密钥对(步骤108),用户100可以首先将共享秘密s转换为E(Fq)上的点,该点可以标记为S。然后,用户可以选择随机数x(其中,1<x<r-1),计算X=xS(椭圆曲线标量乘积)。数量x是用户的短期密钥对(也称为短期认证密钥对)的短期私用密钥(或第二私用密钥),以及X是用户的短期公共密钥(或第二公共密钥)。
然后,用户100将第二公共密钥X和第一公共密钥A同第一辅助数据(‘Aux DataD’)一起发送至主机系统102。如以下进一步讨论的,第一辅助数据将用于产生密钥确认值。实质上,第一辅助数据可以是诸如随机数据串之类的任何数据串,或者可以是其它有用数据,例如可由主机系统用于配置主机系统端的一个或多个设备的设备配置信息。通信方预先对第一辅助数据的大小达成一致。
主机系统102接收用户100的长期和短期公共密钥,并重新调用共享秘密s(步骤112)。主机系统可以通过选取随机数b,并通过计算B=bP(椭圆曲线标量乘法),来产生长期密钥对(步骤114),其中,1<b<r-1,b是主机系统的长期私用密钥(或第三私用密钥),B是主机系统的长期公共密钥(或第三公共密钥),P和r如上所述。因此,在本示例中,还使用椭圆曲线计算,产生主机系统的长期公共密钥。然后,主机系统102可以安全地存储b和B。当然,各种步骤可以按照任何适合的顺序进行,例如,主机系统可以在从用户100处接收任何公共密钥信息之前,计算长期公共和私用密钥。
为了产生短期密钥对(步骤114),主机系统可以首先将共享秘密s转换为E(Fq)上的点,以及该点可以标记为S。然后,用户100和主机系统102在共享参数的框架内进行操作,所以用户100和主机系统102都针对S,产生相同值。然后,主机系统可以选择随机数y,其中,1<y<r-1,以及可以计算Y=yS(椭圆曲线标量乘积)。数值y是主机系统的短期密钥对(也称为短期认证密钥对)的短期私用密钥(或第四私用密钥),Y是主机系统的短期公共密钥(或第四公共密钥)。
然后,主机系统102可以使用用户的长期和短期公共密钥(第一和第二公共密钥),利用以下示例计算来计算(步骤116)主密钥(或主秘密):
计算主密钥(例如,由主机系统进行):
k1=yX;
k2=bA;
如果k1=0,1,-1,则设置k1=随机数;
如果k2=0,1,-1,则设置k2=随机数;以及
(k,kconf)=SHA-512(k1‖k2)。
在上述步骤的最后,SHA-512表示本领域普通技术人员已知的512比特“安全散列算法”,‘‖’是达成一致的级联函数(见FederalInformation Processing Standards Publication 180-2,“Secure HashStandard ”,2002年8月1日,位于http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice .pdf)。当然,还可以使用诸如那些使用不同比特数之类的本领域已知的其它安全散列算法。参照(k,kconf)表示来自SHA-512计算的结果的前半部分(前256比特)是所计算的主秘密密钥k,以及结果的后半部分(后256比特)是如以下所讨论的将会用于计算主机系统的密钥确认值hB(或测试串)的数值kconf。测试k1和k2以检查二者中的任何一个是否等于0、1或-1的步骤,与先前讨论的在图6的步骤314处作出的用于测试是否存在可能的攻击的检查相类似。如果满足条件,则将k1和k2之一或全部都设置为随机数,则计算的主密钥k将与用户的主密钥不匹配,基于共享主(秘密)密钥的双向安全通信将不会发生。当然,如果满足条件,则可以在该阶段简单地中止该过程。
主机系统102可以使用以下计算来计算密钥确认值hB(步骤116):
hB=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1)。在该计算中,HMAC-256表示本领域普通技术人员已知的256比特“散列消息认证码”算法(见“HMAC:Keyed-Hashing for MessageAuthentication”,H.Krawczyk et al.,Network Working Group Request firComments:2104,1997年2月,第11页,可从互联网中的http://www.faqs/org/rfcs/rfc2104.html处进行访问)。当然,还可以使用诸如那些使用不同比特数之类的其它版本的散列消息认证码。数量kconf(先前参照的)是作为HMAC-256算法的输入提供的比特串。如上所述,Aux DataB是由用户100提供的第一辅助数据。Aux DataB表示由主机系统产生的第二辅助数据。实质上,第二辅助数据可以是诸如随机数据串之类的任何数据串,或者可以是诸如可由用户用于配置用户端的一个或多个设备的设备配置信息之类的其它有用数据。第二辅助数据的大小由通信方预先达成一致,并与第一辅助数据大小相同。符号‘‖’是达成一致的级联函数。A、X、B和Y是第一至第四公共密钥,以及ASCII1是编程为HMAC算法的自变量的任何预定的ASCII码(例如,针对字母“B”)。
然后,主机系统102可以将短期公共密钥(第四公共密钥)Y、长期公共密钥(第三公共密钥)B和密钥确认值(测试字符串)hB发送至用户100(步骤116)。在该阶段,主机系统102还可以将第二辅助数据(Aux DataB)发送至用户100。在接收该信息(步骤118)之后,用户可以执行主密钥的计算。
用户100可以根据主机系统的长期和短期公共密钥(第三和第四公共密钥),使用以下示例计算,执行主密钥(或者主秘密)的计算(步骤120):
计算主密钥(例如,由用户进行):
k1=xY;
k2=aB;
如果k1=0,1,-1,则设置k1=随机数;
如果k2=0,1,-1,则设置k2=随机数;以及
(k,kconf)=SHA-512(k1‖k2)。
在上述步骤的最后,SHA-512表示本领域普通技术人员已知的512比特“安全散列算法”,‘‖’是达成一致的级联函数。参照(k,kconf)表示来自SHA-512计算的结果的前半部分(前256比特)是计算的主秘密密钥k,以及结果的后半部分(后256比特)是如以下所讨论的将会用于计算用户密钥确认值hA(或测试串)的数量kconf。基于以上所述,很明显,用户的计算意在产生与由主机系统的计算产生的值相同的k和kconf值。
然后,用户100可以根据以下测试,检查(步骤120)主机系统的密钥确认值(测试串):
如果
hB!=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1),则中止。
如上所述,数值ASCII1是预定的ASCII码。数值ASCII1不仅编程为主机系统端用于生成hB的HMAC算法的自变量,而且编程为用户端用于检查hB的HMAC算法的自变量。如本领域普通技术人员所知的,符号“!=”表示“不等于”。
然后,用户100可以根据以下示例计算,产生不同于主机系统的密钥确认值hB的自己的密钥确认值(测试串)hA(步骤122):
hA=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2)
在该计算中,各种数量如上所述,ASCII2是编程为用于产生hA的HMAC算法的自变量的预定ASCII码(例如,用于字母“A”)。ASCII2可以设置为不同于ASCII1的值,以确保hA与hB不同。然后,用户100可以将hA发送至主机系统102(步骤122)。
然后,主机系统102可以根据以下测试来检查(步骤124)用户的密钥确认值(测试串):
如果
hA!=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2),则中止。
为了执行该计算,很明显,预定ASCII码ASCII2编程为在主机系统端用于检查hA的HMAC算法的自变量。如果用户100(例如,移动台)进行了多于预定数量(例如,10)的失败尝试,则主机系统102可以拒绝对该用户的服务。
最后,用户100可以将数量s、x、k1、k2和kconf置零(zero out),并且可以安全地存储B(主机系统的长期公共密钥)和k(共享主密钥)。同样,主机系统102可以将s、y、k1、k2和kconf置零,并且可以安全地存储A(用户的长期公共密钥)和k(共享主密钥)。
现在提供对于以上方法的多种安全性考虑的讨论。
窃听攻击
共享秘密是分量k1=yX=xY=xyS。攻击者面对的是仅知道X和Y而计算xyS。这是个Diffie-Hellman问题,并且较难。
中间人攻击
传统上,Diffie-Hellman密钥协定易遭受中间人攻击。然而,用于该协议的基点是共享秘密密钥。为了发起中间人攻击,所有通信方必须正在使用相同的基点。由于攻击者不知道共享秘密,所以他将不能够成功地计算k1,因而不能计算k。
假扮(impersonate)移动台
由于攻击者不知道秘密s,所以他或她必须将X=xP发送至主机系统,而不是xS。主机系统将会计算k1=yX=yxP。为了计算相同的密钥,攻击者需要根据Y来确定y。这是个离散对数问题,并且较难。
假扮主机系统
由于攻击者不知道秘密s,所以他或她必须将Y=yP发送至用户(例如,移动台),而不是yS。用户设备将会计算k1=xY=xyP。为了计算相同的密钥,攻击者需要从X中确定x。这是个离散对数问题,并且较难。
防止离线词典攻击
由于主机系统发送第一密钥确认值,所以攻击口令的最佳位置是假扮移动台。这允许攻击者尝试不同的口令,并且检查他或她是否已经作出了正确的选择。
假设攻击者将将X=xP发送至主机系统,而不是xS。主机系统将使用Y=xS来进行应答,并计算k1 HOST=yX=yxP。同时,攻击者将针对特定z,计算k1 attacker=xY=yxS=yxzP,使得S=zP。攻击者使用密钥确认值hB,需要找到值w,使得wk1 attacker=wxY=wyxzP=xyP=k1 HOST。然而,注意w=z-1mod r。因此,找到w等于找到z,这与解决针对S的离散对数问题相对应。这比较困难。
防止在线词典攻击
由于主机系统发送第一密钥确认值,所以攻击口令的最佳位置是假扮移动台。在每次运行中,移动台尝试不同的口令,并检查他或她是否已经相对于hB作出了正确的选择。这通过限制移动台确定正确的秘密s的尝试的预定次数(例如,10),得以避免。
小子群攻击
小子群攻击是一种攻击者试图强迫密钥协定结果来自小值集的攻击。例如,如果攻击者选择X作为无穷远处的点,则无论主机系统针对Y作出什么选择,k1都将是无穷远处的点。因此,通过检查X不是无穷远处的点、1或负1,可以避免这种威胁。
新主密钥的重新产生(使用MQV的密钥重置)
如上所述,在本示例框架中,可以使用本领域技术人员已知的MQV算法,进行新主密钥的重新产生(密钥重置)。在以下示例中,将参照先前描述的图8和9的特定一般处理步骤对其进行修改。
如图8所示,由用户100接收密钥重置请求,或者用户100决定剪裁新密钥(步骤430)。当然,可以由服务提供商替代用户来执行步骤430。
用户产生新的短期加密密钥对(步骤432)。根据示例数学计算,用户100选择新的随机数x,作为新的私用短期认证密钥(新的第二私用密钥),并计算X=xP,其中,1<x<r-1,P如先前所述,以及X是用户的新公共短期认证密钥,也称为新公共短期加密密钥(新第二公共密钥)。用户100将X发送至主机系统102(步骤434),以及还与X一起发送第一辅助数据(Aux DataD),其中,第一辅助数据如先前所述。
主机系统102接收用户的新公共短期认证密钥(步骤460),并产生自己的新短期认证(或加密)密钥对(步骤462)。根据示例计算,主机系统选择新的随机数y,作为新的私用短期认证密钥(新的第四私用密钥),其中,1<y<r-1,并计算Y=yP,其中,Y是主机系统的新公共短期认证密钥(新第四密钥)。
然后,主机系统102可以使用以下示例计算来计算(步骤464)新的主密钥:
计算新主密钥(例如,由主机系统进行):
sB=(y+Yb)modr;
Z=sB(X+XA);
如果Z是无穷远处的点,则选择新的y并重新计算sB和Z;
(k,kconf)=SHA-512(xZ),其中,xZ是Z的x坐标。
在以上中,分别使用MQV协议中的已知方法,根据X和Y,计算X和Y。即,为了计算X,获取X的横坐标(x坐标)值(注意,X是具有x坐标值和y坐标值的椭圆曲线点),舍弃横坐标比特值的前半部分(左半部分),并在舍弃的比特的位置处插入首位(leading)“1”。以同样的方式,根据Y计算Y。如先前所述,SHA计算结果的比特的前半部分是主密钥k,以及比特的后半是kconf的值。在本示例中,在密钥重置期间不产生独立的k1和k2值,以及不执行类似于步骤466的步骤。
主机系统可以按照先前所述的方式,使用以下计算来计算(步骤470)密钥确认值hB(测试串):
hB=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1)。
然后,主机系统102将Y和hB同第二辅助数据(Aux DataB)一起发送至用户100(步骤472)。在接收该信息之后,用户可以执行新主密钥的计算。
用户100可以使用以下示例计算来执行新主密钥(或者主秘密)的计算(步骤440):
计算新主密钥(例如,由用户进行):
sA=(x+Xa)modr;
Z=sA(Y+YB);
如果Z是无穷处的点,则将Z设置为E(Fq)的随机点;
(k,kconf)=SHA-512(xZ),其中,xZ是Z的x坐标。在以上描述中,如前所述,根据X和Y,计算X和Y。计算的其它方面类似于先前所描述的。此外,在本示例中,在密钥重置期间不产生独立的k1和k2值,以及不执行类似于步骤466的步骤。在这段时间内,如果不能使用当前的主密钥或先前的主密钥(如果仍然可用)来解密接收的消息,则可以尝试待定的主密钥(即,将成为新主密钥的最新计算的数量k)。
然后,如前所述,用户100可以根据以下测试来检查(步骤466)主机系统的密钥确认值(测试串):
如果
hB!=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1),
则中止。
如果数量hB与预期值匹配,则用户100将最新计算值k设置为新的主密钥。
然后,如前所述,用户100可以以下示例计算,产生不同于主机系统的密钥确认值hB(步骤452)的自己的确认密钥值(测试串)hA:
hA=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2)。然后,用户100可以将hA发送至主机系统102(步骤454)。
然后,主机系统102可以根据以下测试来检查(步骤474)用户的密钥确认值(测试串):
如果
hA!=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2),
则中止。
如果数量hA与预期值匹配,则主机系统102将最新计算值k设置为新的主密钥。
最后,用户100可以将数值sA、x和kconf置零,以及能够安全地存储k(共享主密钥)。通常,主机系统102可以将数值sB、y和kconf置零,以及能够安全地存储k(共享主密钥)。
现在提供对于以上方法的多种安全性考虑的讨论。
中间人攻击
根据国家标准技术研究所(NIST),该攻击对抗MQV密钥产生方案,将不会成功。只要长期私用密钥a和b保持秘密,则不可能有中间人攻击(见NIST Special Publication 800-56:Recommendation onKey Establishment schemes,Draft 2.0,2003年1月,国家标准技术研究所,见http://csrc.nist.gov/CryptoToolkit/tkkeymgmt.html)。
完备前向保密
注意,从一个密钥建立事务到下一个,共享秘密发生变化。如果丢失了来自特定事务的静态(长期)和瞬息(短期)的私用密钥,则由于不同的瞬息私用密钥用于每一个处理,所以不会泄露来自其它合法事务的共享秘密。
伪装攻击
NIST指示,如果攻击者泄露受害人的长期私用密钥在MQV中,攻击者不能伪装为针对受害人的第三方(见NIST Special Publication800-56:Recommendation on Key Establishment schemes,Draft 2.0,2003年1月,国家标准技术研究所,可见http://csrc.nist.gov/CryptoToolkit/tkkeymgmt.html)。防止伪装攻击的能力是在用于空中下载密钥产生的密钥重置过程中利用MQV的上述方式的优点,这是由于如果缺少该特征,以及如果泄露了主机系统的长期私用密钥,则持有密钥的攻击者可以潜在地伪装成为针对主机系统的任何移动台。
已经描述了分别用于密钥产生和密钥重置的上述其它示例第一和第二协议,现在将描述其它示例方案。例如,可以使用在两个系统之间安全双向通信的方法。产生第一密钥对和第二密钥对,后者包括根据共享密钥产生的第二公共密钥。将第一和第二公共密钥发送至第二系统,以及从第二系统中接收第三和第四公共密钥。根据共享密钥产生第四公共密钥。根据第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥,计算用于加密消息的主密钥。为了重置密钥,产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对,并接收新的第四公共密钥。使用新的第二私用密钥和新的第四公共密钥,利用椭圆曲线计算来计算新的主密钥。
作为另一示例,第一系统用于建立与第二系统的安全双向通信路径,以交换一个或多个消息。第一系统包括存储器和与存储器相连的处理单元。处理单元配置以执行以下步骤:产生具有第一公共密钥和第一私用密钥的第一密钥对;产生具有第二公共密钥和第二私用密钥的第二密钥对,第二公共密钥是根据第一系统和第二系统已知的共享密钥产生的;将第二公共密钥和第一公共密钥发送至第二系统;接收由第二系统产生的第三公共密钥和第四公共密钥,第四公共密钥是根据共享秘密产生的;根据第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥来计算第一主密钥,其中,第一主密钥配置以用于一个或多个消息的加密;产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对;从第二系统中接收新的第四公共密钥,以及根据第一私用密钥、新的第二私用密钥、第三公共密钥和新的第四公共密钥,使用椭圆曲线计算,计算新的主密钥。
根据另一方案,任何形式的计算机可读载体可以包含适用于使处理单元执行在此所述的方法的处理指令。计算机可读载体可以是任何适合类型的载体,如,固态存储器(例如,只读存储器(ROM)、随机存取存储器(RAM)等)、磁存储器、光存储器、其它类型的存储器、或者包含使处理单元执行在此所述的技术的适合计算机指令集的调制波/信号(如,射频、音频、或光频调制波/信号)。
根据另一方案,计算机可读载体包含适用于使处理单元执行上述步骤的处理指令。
已经描述了在无线或有线环境中,并且在需要时具有完备前向保密的示例的基于口令的加密通信系统。该系统包括与使用共享秘密产生的短期认证密钥对相组合地使用长期密钥对,以允许实现完备前向保密。用认证公共密钥捎带长期公共密钥,以实现可信的长期密钥的交换。这使得拥有共享秘密的对应方能够接收并能够使用长期公共密钥。
已经具体地描述了本发明的示例实施例,包括操作的示例操作方法,要理解,可以使用不同的要素和步骤来执行这里描述的操作。示例实施例仅作为示例提出,并不是旨在限制本发明的范围,本发明的范围由所附权利要求限定。
Claims (17)
1.一种由第一系统执行、以在第一系统与第二系统之间建立用于交换一个或多个消息的安全双向通信路径的方法,所述方法包括:
产生具有第一公共密钥和第一私用密钥的第一密钥对;
产生具有第二公共密钥和第二私用密钥的第二密钥对,所述第二公共密钥是根据所述第一系统和所述第二系统已知的共享秘密产生的;
将所述第二公共密钥和所述第一公共密钥发送至所述第二系统;
接收由所述第二系统产生的第三公共密钥和第四公共密钥,所述第四公共密钥是根据所述共享秘密产生的;
根据所述第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥,计算第一主密钥,其中,所述第一主密钥配置以用于一个或多个消息的加密;
产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对;
从所述第二系统接收新的第四公共密钥,以及
根据所述第一私用密钥、新的第二私用密钥、第三公共密钥和新的第四公共密钥,使用椭圆曲线计算,计算新的主密钥。
2.如权利要求1所述的方法,还包括:
产生第一测试串;
将所述第一测试串发送至所述第二系统;
接收由所述第二系统产生的第二测试串;以及
使用所述第二测试串和所述第一主密钥或所述新主密钥,认证所述第二系统。
3.如权利要求2所述的方法,还包括步骤:在接收由所述第二系统产生的第二测试串的步骤之前,接收具有通用描述、发现和集成(UDDI)服务条目的数据有效载荷。
4.如权利要求1所述的方法,其中,所述第一系统是无线移动设备。
5.如权利要求4所述的方法,其中,所述第二系统是提供服务的主机系统。
6.如权利要求4所述的方法,其中,所述共享秘密是在安全带外信道上通信的。
7.如权利要求5所述的方法,其中,所述共享秘密是由所述主机系统自动产生的个人标识号码(PIN)。
8.如权利要求6所述的方法,其中,在所述第一系统的请求之后,通过网络接口从所述第二系统接收所述共享秘密。
9.如权利要求5所述的方法,其中,一个或多个消息的交换包括电子邮件消息、基于http的XML消息、或者基于http的WML消息的交换。
10.如权利要求5所述的方法,其中,使用电子邮件地址或IP地址,对所述无线移动设备和所述主机系统进行寻址。
11.如权利要求5所述的方法,其中,椭圆曲线计算用于计算所述第一主密钥。
12.如权利要求1所述的方法,其中,所述第一系统是提供服务的主机系统,以及所述第二系统是移动无线设备。
13.如权利要求1所述的方法,其中,计算所述第一主密钥利用安全散列算法(SHA)。
14.如权利要求1所述的方法,其中,计算新的主密钥利用Menezez-Qu-Vanstone(MQV)算法。
15.如权利要求2所述的方法,其中,产生所述第一测试串利用散列消息认证码(HAMC)。
16.如权利要求1所述的方法,还包括使用所述第一主密钥或新主密钥来加密一个或多个消息。
17.一种第一系统,用于建立与第二系统的安全双向通信路径,来交换一个或多个消息,所述第一系统包括:
用于产生具有第一公共密钥和第一私用密钥的第一密钥对的装置;
用于产生具有第二公共密钥和第二私用密钥的第二密钥对的装置,所述第二公共密钥是根据所述第一系统和所述第二系统已知的共享秘密产生的;
用于将所述第二公共密钥和所述第一公共密钥发送至所述第二系统的装置;
用于接收由所述第二系统产生的第三公共密钥和第四公共密钥的装置,所述第四公共密钥是根据所述共享秘密产生的;
用于根据所述第一私用密钥、第二私用密钥、第三公共密钥和第四公共密钥来计算第一主密钥的装置,其中,所述第一主密钥配置以用于一个或多个消息的加密;
用于产生具有新的第二公共密钥和新的第二私用密钥的新的第二密钥对的装置;
用于从所述第二系统接收新的第四公共密钥的装置,以及
用于根据所述第一私用密钥、新的第二私用密钥、第三公共密钥和新的第四公共密钥、使用椭圆曲线计算来计算新的主密钥的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US56679004P | 2004-04-30 | 2004-04-30 | |
US60/566,790 | 2004-04-30 | ||
PCT/CA2005/000676 WO2005107141A1 (en) | 2004-04-30 | 2005-05-02 | Systems and methods to securely generate shared keys |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1969501A CN1969501A (zh) | 2007-05-23 |
CN1969501B true CN1969501B (zh) | 2010-08-04 |
Family
ID=35242004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800196800A Active CN1969501B (zh) | 2004-04-30 | 2005-05-02 | 安全地产生共享密钥的系统和方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1747638B1 (zh) |
CN (1) | CN1969501B (zh) |
CA (1) | CA2564909C (zh) |
WO (1) | WO2005107141A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7646872B2 (en) | 2004-04-02 | 2010-01-12 | Research In Motion Limited | Systems and methods to securely generate shared keys |
DE102006019466B4 (de) | 2006-04-26 | 2009-07-30 | Siemens Ag | Verfahren und System zum manipulationssicheren Einrichten eines kryptographischen Schlüssels |
US8127135B2 (en) | 2006-09-28 | 2012-02-28 | Hewlett-Packard Development Company, L.P. | Changing of shared encryption key |
US8495375B2 (en) | 2007-12-21 | 2013-07-23 | Research In Motion Limited | Methods and systems for secure channel initialization |
US8452017B2 (en) | 2007-12-21 | 2013-05-28 | Research In Motion Limited | Methods and systems for secure channel initialization transaction security based on a low entropy shared secret |
EP2073430B1 (en) | 2007-12-21 | 2013-07-24 | Research In Motion Limited | Methods and systems for secure channel initialization transaction security based on a low entropy shared secret |
CN102130891B (zh) * | 2010-01-18 | 2015-09-16 | 中兴通讯股份有限公司 | 一种基于tcp的密钥协调方法和系统 |
EP2634993B1 (en) * | 2012-03-01 | 2017-01-11 | Certicom Corp. | Devices and methods for connecting client devices to a network |
KR102314917B1 (ko) * | 2015-03-19 | 2021-10-21 | 삼성전자주식회사 | 통신 시스템에서 디바이스들 간의 연결 설정 방법 및 장치 |
US9801055B2 (en) * | 2015-03-30 | 2017-10-24 | Qualcomm Incorporated | Authentication and key agreement with perfect forward secrecy |
EA201891830A1 (ru) | 2016-02-23 | 2019-02-28 | Нчейн Холдингс Лимитед | Система и способ управления действиями, связанными с активами, посредством блокчейна |
US11625694B2 (en) | 2016-02-23 | 2023-04-11 | Nchain Licensing Ag | Blockchain-based exchange with tokenisation |
CA3014737A1 (en) | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Blockchain-implemented method for control and distribution of digital content |
CA3014748C (en) | 2016-02-23 | 2024-03-12 | nChain Holdings Limited | Personal device security using elliptic curve cryptography for secret sharing |
EP4369273A2 (en) | 2016-02-23 | 2024-05-15 | nChain Licensing AG | A method and system for securing computer software using a distributed hash table and a blockchain |
GB2558484A (en) | 2016-02-23 | 2018-07-11 | Nchain Holdings Ltd | A method and system for the secure transfer of entities on a blockchain |
EA201891829A1 (ru) | 2016-02-23 | 2019-02-28 | Нчейн Холдингс Лимитед | Способ и система для эффективного перевода криптовалюты, связанной с заработной платой, в блокчейне для создания способа и системы автоматизированной выплаты заработной платы на основе смарт-контрактов |
MX2018010054A (es) | 2016-02-23 | 2019-01-21 | Nchain Holdings Ltd | Metodo y sistema de tokenizacion para la implementacion de cambios de moneda en una cadena de bloques. |
GB2561729A (en) | 2016-02-23 | 2018-10-24 | Nchain Holdings Ltd | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
WO2017145019A1 (en) | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Registry and automated management method for blockchain-enforced smart contracts |
CN108885748A (zh) | 2016-02-23 | 2018-11-23 | 区块链控股有限公司 | 用于区块链的加密货币的通用令牌化系统 |
CN115549887A (zh) | 2016-02-23 | 2022-12-30 | 恩链控股有限公司 | 用于信息的安全交换的公共秘密的确定和层级确定性密钥 |
KR20180115727A (ko) | 2016-02-23 | 2018-10-23 | 엔체인 홀딩스 리미티드 | 보안 투표 및 분배에서 사용을 위한 블록체인 구현 카운팅 시스템 및 방법 |
EP3420669B1 (en) | 2016-02-23 | 2021-03-24 | Nchain Holdings Limited | Cryptographic method and system for secure extraction of data from a blockchain |
US11249970B2 (en) * | 2016-05-05 | 2022-02-15 | Mastercard International Incorporated | Method and system for distributed data storage with eternal integrity guarantees |
EP3367608A1 (en) * | 2017-02-28 | 2018-08-29 | Koninklijke Philips N.V. | Elliptic curve isogeny based key agreement protocol |
US10797868B2 (en) * | 2018-05-31 | 2020-10-06 | Irdeto B.V. | Shared secret establishment |
US10943196B2 (en) * | 2018-07-09 | 2021-03-09 | Accenture Global Solutions Limited | Data reconciliation |
CN109495260B (zh) * | 2018-12-28 | 2021-06-08 | 飞天诚信科技股份有限公司 | 一种终端设备及其管理密钥的方法 |
CN112602289B (zh) * | 2020-02-24 | 2021-12-21 | 华为技术有限公司 | 数据加密处理方法、数据解密处理方法、装置、电子设备及可读存储介质 |
CN112468291A (zh) * | 2020-11-02 | 2021-03-09 | 深圳依时货拉拉科技有限公司 | 一种同步敏感数据的方法、装置、系统、计算机设备及计算机可读存储介质 |
CN113300834B (zh) * | 2020-11-05 | 2023-06-23 | 阿里巴巴集团控股有限公司 | 密钥交换方法、通信方法及装置,存储介质和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953420A (en) * | 1996-10-25 | 1999-09-14 | International Business Machines Corporation | Method and apparatus for establishing an authenticated shared secret value between a pair of users |
US6445797B1 (en) * | 1998-12-16 | 2002-09-03 | Secure Choice Llc | Method and system for performing secure electronic digital streaming |
CN1425231A (zh) * | 2000-04-18 | 2003-06-18 | 格姆普拉斯公司 | 椭圆曲线上的密码学方法 |
US6718467B1 (en) * | 1999-10-28 | 2004-04-06 | Cisco Technology, Inc. | Password based protocol for secure communications |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515441A (en) * | 1994-05-12 | 1996-05-07 | At&T Corp. | Secure communication method and apparatus |
US6058189A (en) * | 1997-06-20 | 2000-05-02 | Secure Choice Llc | Method and system for performing secure electronic monetary transactions |
US20030072059A1 (en) * | 2001-07-05 | 2003-04-17 | Wave7 Optics, Inc. | System and method for securing a communication channel over an optical network |
-
2005
- 2005-05-02 CA CA2564909A patent/CA2564909C/en active Active
- 2005-05-02 CN CN2005800196800A patent/CN1969501B/zh active Active
- 2005-05-02 EP EP05742539.9A patent/EP1747638B1/en active Active
- 2005-05-02 WO PCT/CA2005/000676 patent/WO2005107141A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953420A (en) * | 1996-10-25 | 1999-09-14 | International Business Machines Corporation | Method and apparatus for establishing an authenticated shared secret value between a pair of users |
US6445797B1 (en) * | 1998-12-16 | 2002-09-03 | Secure Choice Llc | Method and system for performing secure electronic digital streaming |
US6718467B1 (en) * | 1999-10-28 | 2004-04-06 | Cisco Technology, Inc. | Password based protocol for secure communications |
CN1425231A (zh) * | 2000-04-18 | 2003-06-18 | 格姆普拉斯公司 | 椭圆曲线上的密码学方法 |
Also Published As
Publication number | Publication date |
---|---|
CA2564909A1 (en) | 2005-11-10 |
EP1747638A1 (en) | 2007-01-31 |
EP1747638B1 (en) | 2016-08-31 |
WO2005107141A1 (en) | 2005-11-10 |
EP1747638A4 (en) | 2010-11-03 |
CN1969501A (zh) | 2007-05-23 |
CA2564909C (en) | 2011-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1969501B (zh) | 安全地产生共享密钥的系统和方法 | |
CA2561796C (en) | Key agreement and re-keying over a bidirectional communication path | |
US8693695B2 (en) | Systems and methods to securely generate shared keys | |
JP4331848B2 (ja) | 通信ネットワーク用セキュリティ方法及び安全なデータ転送方法 | |
AU2003225327B2 (en) | Method for authenticating and verifying SMS communications | |
US20050257057A1 (en) | System, method and computer product for sending encrypted messages to recipients where the sender does not possess the credentials of the recipient | |
CN1234662A (zh) | 密码点火处理方法及其装置 | |
Di Pietro et al. | A two-factor mobile authentication scheme for secure financial transactions | |
KR101014849B1 (ko) | 제 3의 신뢰기관의 도움 없이 공개키에 대한 상호 인증 및키 교환 방법 및 그 장치 | |
CN113472731B (zh) | 一种针对数据库用户身份验证的双因素认证方法 | |
AU2012202300B2 (en) | Re-keying over a bidirectional communication path | |
Raina et al. | Survey of Security Techniques and Architectures for Mobile Commerce Environment | |
NO327337B1 (no) | En anordning og en metode for sterk brukerautentisering og kryptering av brukerdata i private virtuelle nettverk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |