基于密码的秘密加密密钥的生成和管理的制作方法

文档序号:11162058阅读:407来源:国知局
本发明一般涉及基于密码的秘密加密密钥的生成。提供了一种用于基于用户密码的输入在用户计算机处生成秘密加密密钥的方法,以及采用这种方法的相应装置和计算机程序以及密钥管理应用。
背景技术
::加密密钥用于诸如个人计算机、智能电话、平板电脑和其他计算机设备的个人用户设备上的各种目的。这样得密钥例如可以用于签名消息、用于向其他设备认证用户计算机或用于存储在计算机上的敏感数据的加密/解密。通常,加密密钥必须对用户计算机是秘密的,使得密钥不与与用户计算机通信的任何其他计算机共享。这样的秘密密钥的安全管理是有问题的。该密钥应当容易地用于所需的使用,但同时防止未经授权的访问,例如,用户计算机的丢失或被盗。由于不能期望用户记住加密密钥,因此使用存储在用户计算机上的秘密密钥可以受制于用户输入有效的用户密码。然而,典型的用户密码在加密上较弱,并且容易由窃贼使用有效的离线强力攻击猜到。此外,用户通常对其他目的(例如企业电子邮件)使用相同或相似的密码,因此在其他环境中对其密码的妥协可能损害秘密密钥的安全性。已经提出使用可信硬件设备(诸如智能卡或TPM(可信平台模块)芯片)用于秘密密钥的安全管理。然而,这样的设备并不总是可用的,并且它们的使用增加了费用和系统复杂性。其它方法涉及通过经由网络与一个或多个服务器的通信在用户计算机处动态生成密钥。在一个或多个服务器的帮助下从(弱)密码导出(强)加密密钥的问题是密码学中的一个深入研究的问题,例如在密钥交换方案的环境中。在Katz等人在EUROCRYPT2001中的“EfficientPassword-AuthenticatedKeyExchangeUsingHuman-MemorablePasswords(使用人可记忆的密码进行高效的密码认证密钥交换)”以及Canetti等人在EUROCRYPT2005中的“UniversallyComposablePassword-BasedKeyExchange(基于可普遍组合密码的密钥交换)”中讨论了涉及基于弱密码向服务器认证用户并随后导出共享加密密钥的密钥交换方案。在这些方案中,所得到的密钥由用户计算机和服务器共享,并且如果服务器受损,则用户的密码易受到离线暴力攻击。进一步的工作通过使用多个服务器来解决上述问题,所有这些服务器在攻击者可以对服务器安装离线暴力攻击之前必须被攻破。示例描述于:Katz等人在AppliedCryptographyandNetworkSecurity2005中的“Two-ServerPassword-OnlyAuthenticatedKeyExchange(双服务器密码唯一认证密钥交换)”,,;和Camenisch等人在ACMCCS2012中的“Practicalyetuniversallycomposabletwo-serverpassword-authenticatedsecretsharing(实用但可普遍组合的双服务器密码认证的秘密共享)”,,,其中用户自己选择强加密密钥,他可以在他的密码的帮助下从两个服务器检索加密密钥。在暴露用户的密码之前,两个服务器都需要被攻破。此外,美国专利No.6,829,356B1公开了一种客户端-服务器系统,用于通过客户端和多个服务器的交互从用户密码和短暂的客户端秘密生成诸如加密密钥的强秘密。这些服务器包括保存用于生成密钥的各个秘密的秘密保存服务器,以及客户端随后证明成功生成密钥的验证服务器。美国专利No.7,359,507B2描述了使用昂贵的整数运算的前述方案的进一步的变型。非常需要改进的基于密码的密钥生成方案。技术实现要素:本发明的一个方面的一个实施例提供了一种用于在可经由网络连接到服务器的用户计算机处生成用户计算机的秘密加密密钥的方法。该方法包括:在所述用户计算机处提供秘密用户值;在所述服务器处提供秘密服务器值和对所述秘密用户值和用户密码进行编码的校验值;在所述用户计算机处,响应于输入密码的输入,对所述秘密用户值和所述输入密码进行编码以产生对应于所述校验值的第一值,以及经由所述网络将所述第一值通信到所述服务器;在所述服务器处,响应于第一值的通信,比较所述第一值和所述校验值以校验输入密码是否等于用户密码,并且如果是,则对第一值和所述秘密服务器值进行编码以产生第二值,以及经由所述网络将所述第二值通信到所述用户计算机;和在所述用户计算机处,响应于所述第二值的通信,通过对所述第二值、所述输入密码和所述秘密用户值进行编码来生成所述秘密加密密钥。体现本发明的一种方法可以经由与单个服务器的交互来提供用户计算机的秘密密钥的安全的基于密码的生成。只要输入有效的密码,就可以生成密钥。服务器可以校验输入密码是否正确,然后才向用户计算机发送密钥生成所需的信息。服务器从不了解用户密码或密钥。通过使用协议操作中的各种值,可以以在服务器或用户计算机被攻破的情况下以安全的方式有效地生成密钥以防止离线密码猜测攻击。此外,可以使用简单的、廉价的算术运算来实现体现本发明的方法。因此,本发明的实施例提供了用于秘密密钥的安全生成的简练和特别实用的系统。秘密用户值和秘密服务器值可以包括随机值或分别仅分别对于用户计算机和服务器已知的任何(优选地,加密强)秘密。这些秘密值可以作为预先存储在其相应设备的存储器中的结果来提供,或者可以经由体现本发明的优选方法中执行的步骤(例如在设置过程中)来主动提供。特别地,优选的方法包括设置过程并且在所述密钥的生成之前:在所述用户计算机处,响应于所述用户密码的输入,对所述秘密用户值和所述用户密码进行编码以产生所述校验值,以及经由所述网络将所述校验值通信到所述服务器;以及在所述服务器处存储所接收的校验值。设置过程可以方便地包括在用户计算机处生成和存储秘密用户值,并且在服务器处生成和存储秘密服务器值。这种设置过程可以包括用于服务器和用户计算机的独立设置操作。设置过程还可以包括第一次密钥的生成。具体地,设置过程可以包括:在所述服务器处,对所述接收的校验值和所述秘密服务器值进行编码以产生所述第二值,并且经由所述网络将所述第二值通信到所述用户计算机;以及在用户计算机处,响应于第二值的通信,通过在加密操作中使用密钥对第二值、用户密码和秘密用户值进行编码来第一次生成秘密加密密钥,以及在使用后删除用户密码、校验值、第二值和密钥。在设置过程中密钥的第一次使用然后可以定义在后续密码操作中使用所需的密钥,例如,用于解密使用在设置过程中生成的密钥加密的盘。当需要时,用户可以重新生成密钥,而不需要存储可被攻击者用来通过用户计算机的未授权使用来获得密钥或密码的信息。优选的方法可以进一步包括:在所述用户计算机处向所述服务器提供用于唯一地标识所述用户计算机的用户标识符;在所述服务器处,向所述用户标识符提供用于所述用户计算机的校验值;以及在所述用户计算机处,用所述第一值将所述用户标识符通信到所述服务器。这样的用户标识符通常可以包括一个或多个元素。为了易于实现和增强的安全性,用户标识符还可以用在密钥生成操作中执行的编码处理中。因此,优选的方法可以包括:在用户计算机处,在第一值和加密密钥中的至少一个并且优选地两个中对用户标识符进行编码;和/或在服务器处,在第二值中对用户标识符进行编码。特别优选的方法还包括:在所述服务器处,向所述用户计算机提供用于唯一地标识所述服务器的服务器标识符;在所述用户计算机处,检索所述服务器标识符并且在所述第一值中编码所述服务器标识符;在所述服务器处,在所述第二值中编码所述服务器标识符;以及在所述用户计算机处,在所述加密密钥中编码所述服务器标识符。因此,在优选实施例中,为实现协议通信的各种值包含唯一地标识计算机-服务器对的信息。用户计算机可以通过从任何方便的位置获得该标识符来检索服务器标识符。根据实现,服务器标识符可以例如从服务器动态地获得或者预先存储在用户计算机处。对于典型应用中的安全密钥管理,可以在使用后删除密钥和敏感协议数据,因为只要被授权用户需要就可以重新生成密钥。因此,本发明的第二方面的实施例提供了一种用于在经由网络可连接到服务器的用户计算机处管理用户计算机的秘密加密密钥的方法。该方法可以包括:通过根据本发明的第一方面的方法生成秘密加密密钥;以及在所述用户计算机处,在密码操作中使用所述秘密加密密钥,以及在使用之后删除所述输入密码、所述第一值、所述第二值和所述密钥。密钥可以例如用于对在用户计算机处使用密钥先前加密的数据进行解密。本发明的第三方面的实施例提供了一种用于在可经由网络连接到服务器的用户计算机处使用用户计算机的秘密加密密钥来加密和解密数据的方法。该方法可以包括:通过根据本发明的第一方面的方法生成所述秘密密钥,其中在如上所述的设置过程期间第一次生成所述密钥;在所述用户计算机处首次生成所述密钥时,使用所述密钥来加密存储在所述用户计算机上的数据;以及在所述第一次之后在所述用户计算机处生成所述密钥时,使用所述密钥来解密存储在所述用户计算机上的所述数据。本发明的第四方面的实施例提供了一种用于经由网络与服务器通信以生成用户计算机的秘密加密密钥的用户计算机,所述服务器存储秘密服务器值和对用户计算机的秘密用户值和用户密码进行编码的校验值。用户计算机可以包括用于存储所述秘密用户值的存储器,用户接口、用于经由网络与服务器通信的通信接口、以及控制逻辑适于:响应于经由所述用户界面的输入密码的输入,对所述秘密用户值和所述输入密码进行编码以产生对应于所述校验值的第一值,并且经由所述通信接口将所述第一值通信到所述服务器;以及响应于服务器对通过对第一值和所述秘密服务器值进行编码而产生的第二值的通信,通过对第二值、输入密码和秘密用户值进行编码来生成秘密密钥。本发明的第五方面的实施例提供了一种用于生成存储秘密用户值的用户计算机的秘密加密密钥的服务器,用户计算机可经由网络连接到服务器。服务器可以包括:存储器,用于存储秘密服务器值和对所述秘密用户值和用户密码进行编码的校验值;用于经由所述网络与所述用户计算机通信的通信接口;以及控制逻辑,其适于响应于来自用户计算机的对应于所述校验值并对所述秘密用户值和输入密码进行编码的第一值的接收,比较所述第一值和所述校验值,以校验所述输入密码是否等于所述用户密码,如果是,则对所述第一值和所述秘密服务器值以产生第二值,以及经由所述通信接口将所述第二值通信到所述用户计算机。本发明还提供一种系统,包括根据本发明第四方面的实施例的用户计算机和根据本发明第五方面的实施例的服务器。本发明的其他方面提供了一种计算机程序和计算机程序产品。在本文中参考本发明的一个方面的实施例描述特征的情况下,可以在本发明的另一方面的实施例中适当地提供对应的特征。附图说明现在将参考附图通过示例来描述本发明的优选实施例,其中:图1是用于实现体现本发明的密钥生成方法的数据处理系统的示意图;图2和图3表示在密钥生成方法的操作中执行的步骤;图4a和4b表示在密钥生成方法的优选实施例中图1系统的服务器和用户计算机的相应设置操作;和图5指示利用优选方法的密钥生成操作。具体实施方式图1示出了用于实现体现本发明的密钥生成方案的示例性数据处理系统1。系统1包括适于在数据通信网络4上通信的服务器2和用户计算机3。网络4通常可以包括一个或多个组件网络或互联网络,包括因特网。在该示例中,用户计算机3由通用PC(个人计算机)实现,并且服务器2体现为实现用于通过网络4与远程计算机通信的服务器功能的通用计算机。用户PC3在这里简单地示出为包括用于与在网络4上与服务器2通信的通信接口5、提供用于在将要描述的密钥生成方案中使用的功能的密钥生成器逻辑6、用于与PC用户进行数据输入/输出交互的用户接口7和存储器8。存储器8存储由密钥生成器逻辑6在密钥生成方案的操作中使用的数据。这包括由用户秘密S表示的秘密用户值,其对用户PC3是秘密的。服务器2被示为包括通信接口9、提供用于在下面详细描述的密钥生成方案中使用的功能的服务器逻辑10、以及存储在操作中由逻辑10使用的数据的存储器11。这包括由服务器秘密SK表示的秘密服务器值,其对服务器2是秘密的,以及下面进一步描述的校验值VC。通常,密钥生成逻辑6和服务器逻辑10可以以硬件或软件或其组合来实现。在该示例中,密钥生成逻辑6通过在用户计算机3上运行的软件方便地实现,用于使计算机执行下面详细描述的功能。类似地,服务器逻辑10由用于控制计算机2以实现所描述的功能的软件方便地实现。由系统1实现的密钥生成方法允许用户PC3在服务器2的协作下生成对用户PC秘密的(强的)加密密钥K。密钥K的成功生成要求由用户在用户计算机3处输入的(弱)用户密码P。只有在服务器2已经验证用户密码正确时才能生成密钥。图2和图3以相应流程图的形式给出了密钥生成方案的概述,其指示在该方案的操作中执行的主要步骤。图2指示在设置过程中执行的步骤,图3指示随后的密钥生成方法的步骤。首先参考图2,在如步骤20所示的设置过程开始之后,用户秘密S和服务器秘密SK并分别由用户PC和服务器生成和存储。由步骤21表示的这个过程可以通过在逻辑6、10中分别随机产生加密强的值来执行,即具有足够熵(足够的加密随机比特)的值,以使得攻击者不可能猜到这些值。接下来,如步骤22所示,用户通过PC3的用户I/F7输入用户密码P,并由密钥生成器逻辑6接收用户密码P。作为响应,逻辑6对(至少)用户密钥S和用户密码P进行编码,以产生校验值VC。可以使用任何期望的算法来生成校验值,并且将给出特定的示例。在步骤24中,经由接口5通过网络4将校验值VC通信到服务器2。(通常,其中,任何值在此被描述为通信到设备,该值可以这样发送(优选地在用于在传输期间的安全性的加密之后),或者可以嵌入在某些其他功能中,使得该值可以由接收设备推断)。校验值VC由服务器逻辑10通过接口9接收,并且在步骤25中,用户PC3的校验值存储在服务器存储器11中。这完成了随后密钥生成所需的设置步骤。然而,在一些应用中,设置过程可以包括生成并且首次使用密钥K。下面将描述特定的示例。此外,如该示例所示,图2的设置过程可以在实践中通过服务器2和用户PC3的独立设置操作来实现。现在参考图3,在步骤30所示的密钥生成操作开始时,用户在步骤31中在用户PC3处输入密码尝试P'。响应于输入密码P',在步骤32中,逻辑6从存储器8对输入密码P'和用户密钥S进行编码,以产生对应于校验值VC的第一值V1。第一值V1在此以类似于校验值VC的方式使用相同的编码算法产生,但是使用输入密码P'代替用于设置过程的用户密码P输入。在步骤33中,然后通过网络4将第一值V1通信到服务器2。在接收到V1时,在步骤34中,服务器逻辑10比较第一值V1和存储在存储器11中的校验值VC,以校验输入的口令P'等于用户密码P。特别地,如果在此输入密码正确,则两个值V1和VC将是相同的。如果输入密码P'不正确(在判定框35由“否”(N)表示),则服务器逻辑中止密钥生成协议,如步骤36所示,并且该过程终止。然而,如果输入密码正确(在判定框35处为“是”(Y)),则服务器逻辑10(至少)对第一值V1(其与VC相同)和服务器秘密SK进行编码存储在存储器11中以在步骤37中产生第二值V2。如前所述,可以采用任何期望的编码算法,并且给出优选的示例。在步骤38中,然后将第二值V2经由网络4通信到用户PC3。在接收V2时,在步骤39中,密钥生成器逻辑通过编码(至少)第二值V2、输入密码P'和存储在存储器8中的用户秘密S来生成秘密加密密钥K。再次,下面给出了优选算法的示例。然后密钥生成过程完成。密钥K可以根据需要在用户PC3处使用,然后在使用之后删除,以保护密钥免受PC3的盗窃或其他未授权使用。控制逻辑8还删除输入密码P'、第一值和第二值V2,使得只有由密码保持器的授权密钥生成所需的信息存储在PC3上。现在将详细描述上述方案的优选实施方式。在该示例中,密钥生成方案用于盘加密/解密应用,其中密钥K是加密密钥。该协议包括通常如上所述的设置过程和密钥生成过程,尽管在此通过用于设置服务器和用户PC的独立子协议来实现设置过程。图4a中示意性地示出了服务器设置子协议,其中服务器2生成其加密材料。在图4b中示意性地示出了设备设置子协议,其中用户PC3向服务器注册自身并且首先生成密钥K。图5是随后的密钥生成或“检索”子协议的示意性表示,其中密钥K由用户计算机在服务器的帮助下重新生成。为了在该实施例中增强安全性,用户PC3和服务器2之间的所有协议通信都通过具有以下属性的前向安全信道C进行:-所述信道在通信链路上操作;-该信道允许第一方向第二方发送任意长度的比特串,并且第二方用任意长度的比特串回复;-第二方被认证给第一方;-以保密的方式发送位字符串,并防止被第三方修改;-如果在信道被拆除之后一方或双方都被攻破,则所发送的位串的可信性不会受到损害。通道C的这些性质可以以公知的方式实现,例如,使用SSL(安全套接字层)或TLS(传输层安全)协议。作为另一个示例,双方可以具有秘密共享密钥,它们用于认证Diffie-Hellman密钥交换。然后,从密钥交换协议产生的密钥可以用作信道的会话密钥。然而,在下面的示例中,第二方(服务器2)持有由可信认证机构(CA)签名的证书,并且使用TLS协议在因特网上实现信道C。服务器设置图4a示出了服务器2在服务器和认证中心CA之间的交互的设置操作,其操作分别在图的左手和右手列中指示。服务器运行该子协议一次。在步骤(a)中,服务器逻辑10选择唯一的服务器标识符SID,用于唯一地标识服务器2给它将用于密钥生成的用户计算机。另外,服务器逻辑选择包含至少η比特熵的随机服务器密钥(服务器秘密SK),其中η是可以根据需要设置的安全参数。在该特定示例中,η=128。在步骤(b)中,服务器逻辑10生成可用于建立前向安全信道的密钥材料。这里,这包括公共部分SC和私有部分(私有密钥)SP,其中公共部分SC通过与证明认证CA的交互生成,并且包括对应于私钥SP的公钥上的证书。在步骤(c)中,服务器在其内部存储器11中存储SK、SID、SC和SP。在步骤(d)中,服务器与服务器标识符SID一起发布证书SC,由此使得(SID、SC)对于连接到网络4的计算机可用。设备设置图4b示出了用户PC3在用户、用户PC3和服务器2之间的交互的设置操作,其操作分别在图的左侧、中间和右侧列中指示。在服务器2完成上述服务器设置之后,用户PC3运行该子协议一次。在步骤(a)中,密钥生成器逻辑6选择包含至少η比特的熵的随机秘密值(用户秘密S)。逻辑6还产生身份数据,其包括用于向服务器2唯一地标识用户PC的唯一用户标识符UID。这里,身份数据还包括认证器UA。值UA优选地是加密强的值,并且可以是具有至少η比特的熵的随机选择的值。作为另一示例,UA可以通过用防冲突散列函数对用户秘密S进行散列来生成。在该示例中提供UID和UA允许选择UID作为方便的(弱)值,例如用户名或电子邮件地址,而UA提供用于在后续协议步骤向服务器安全地识别用户PC时使用的密码强的值。在图4b的步骤(b)中,用户PC3检索服务器2的服务器标识符SID和服务器证书SC。例如,可以从服务器2获得该数据,或者可以在服务器2设置期间在发布之后预先存储在用户PC3上。作为该过程的部分,公共证书SC由逻辑6以已知方式(通常使用认证机构CA的公钥)认证。接下来,在步骤(c)中,逻辑6提示用户输入密码,作为响应,用户输入用户密码P。在步骤(d)中,逻辑6然后通过散列包括用户秘密S、密码P和唯一标识PC服务器对的信息(在这种情况下是三元组(UID、SID、SC))的位串生成校验值VC。在该示例中,校验值VC生成如下:VC←H(0x01,S,P,UID,SID,SC)其中:H是诸如SHA-256哈希函数的抗冲突散列函数;和包括十六进制值0x01(以及下面给出的函数中的对应值),以确保关于要散列的比特串对应于协议的哪个步骤没有歧义。在图4b的步骤(e)中,设备和服务器设置从服务器证书SC获得的前向安全信道C,服务器在该过程期间从存储器11检索其存储的值SK、SID、SC和SP。在步骤(f)中,用户PC通过信道C将身份数据UID、UA与校验值VC一起发送到服务器2。在步骤(g)中接收到时,服务器逻辑10检查用户标识符UID是唯一的,它之前从来没有见过UID。如果UID不是唯一的,则服务器逻辑擦除未明确要求存储在上述存储器11中的所有数据(即除了SK、SID、SC和SP之外的所有数据),并中止协议。在这种情况下,可以向PC3发送合适的错误消息。假设UID是唯一的,服务器将三元组(UID,UA,VC)存储在存储器11中。接下来,在步骤(h)中,服务器逻辑通过散列包括校验值VC、服务器秘密SK和唯一标识PC服务器对的信息(这里是三元组(UID,SID,SC))的位串,计算第二值V2。在该示例中,第二值V2如下生成:V2←H(0x02,VC,SK,UID,SID,SC)在步骤(i)中,服务器通过信道C向用户PC2发送V2,并且擦除上述没有明确要求存储在存储器11中的所有数据。在步骤(j)中接收到第二值V2时,用户PC3的逻辑6在其内部存储器8中存储S、UID、UA、SID和SC。在步骤(k)中,逻辑6然后通过散列包括用户密码P、第二值V2和用户密钥S的位串第一次计算强加密密钥K,这里与唯一地标识PC服务器对的三元组(UID,SID,SC)一起。在该示例中,密钥K如下生成:K←H(0x03,P,S,V2,UID,SID,SC)在这种情况下,逻辑6然后在步骤(1)中使用密钥来加密PC3的硬盘。在使用密钥之后,在步骤(m)中,逻辑6擦除没有明确地要求存储在上面的存储器8中的所有数据(包括密钥K、密码P、校验值VC和第二值V2)。该操作在PC3关闭时方便地执行。检索密钥图5示出了用于在用户PC3处重新生成密钥的检索子协议。该子协议可以在用户PC和服务器已经完成上述设置子协议之后运行多次。在该操作的步骤(a)中,逻辑6提示用户输入密码,作为响应,用户输入密码尝试P'。在步骤(b)中,逻辑6从存储器8检索S、UID、UA、SID和SC。在步骤(c)中,逻辑6然后计算对应于校验值VC的第一值V1,V1←H(0x01,S,P',UID,SID,SC)接下来,在步骤(d)中,设备和服务器建立从服务器证书SC获得的前向安全信道C,服务器在该过程期间从存储器11检索其存储的值SK、SID、SC和SP。在步骤(e)中,用户PC通过信道C向服务器2发送具有第一值V1的身份数据UID、UA。在步骤(f)中接收到时,服务器逻辑10检查它先前已经存储了三元组,其前两个项是UID、UA。如果没有找到这样的三元组,则服务器将擦除未明确需要存储在上述存储器11中的所有数据并中止协议。服务器逻辑还检查由服务器对于UID维护的节流机制是否已被激活。节流机制在密码学中是众所周知的,其提供了用于由系统用户监视登录的过程,并且基于登录行为来确定是否应阻止任何特定用户帐户。如果登录行为满足指示潜在恶意动作的预定义准则,则节流机制通常阻止用户帐户。在该示例中,如果在给定时间和/或具有不正确的密码的针对UID的进行多于阈值数量的检索请求,则可以针对UID激活节流机制。如果针对UID激活节流机制,则服务器逻辑将拒绝服务该检索请求,并向用户PC2发送诸如“连接被节制”的错误消息。服务器可以擦除上面没有明确存储在存储器11中的所有数据,并中止协议。在接收到这样的错误消息时,PC3的逻辑6可以擦除上面未明确存储在存储器8中的所有数据,并中止协议。假设在步骤(f)中通过所有校验,则在步骤(g)中,服务器校验所存储的三元组中用于UID、UA的第三元素VC等于接收到的第一值V1。如果不是,则服务器可以向通道C上的PC发送“不正确的密码”消息。然后,服务器和PC可以如前所述擦除所有非必要协议数据,并中止协议。服务器逻辑10的节流机制还将记录这个不正确的密码事件以确定是否应该对于上述步骤(f)的后续实施节流帐户。假设密码P'在步骤(g)中被认为有效,则下一步骤通常对应于上述设备设置操作的等效步骤。因此,在步骤(h)中,服务器逻辑计算第二值V2为:V2←H(0x02,V1,SK,UID,SID,SC)在步骤(i)中,服务器通过信道C向用户PC2发送V2,然后如前所述擦除所有非必要数据。在步骤(i)中接收到第二值V2时,逻辑6将密钥K计算为:K←H(0x03,P',S,V2,UID,SID,SC)逻辑6然后在步骤(j)中使用密钥来解密PC3的硬盘。当设备不再需要密钥时,在步骤(1)中,逻辑6擦除所有的非关键数据,如前所述。同样,该动作在PC3关闭时方便地执行。从前面可以看出,当用户输入有效密码时,PC2可以随时产生秘密加密密钥K。只有在(1)用户输入正确的密码,以及(2)服务器校验了密码的有效性时,用户PC才能获得生成密钥所必需的信息。此外,上述方案保证了如果用户PC被盗或服务器被盗用,密码和加密密钥都保持安全。特别地,存储在用户PC上的信息与协议消息一起不允许离线密码猜测攻击。类似地,由服务器存储的信息连同协议消息不允许离线密码猜测攻击。为了提取关于密钥的信息,需要知道用户PC存储的信息,知道密码,并且(1)知道服务器存储的信息,或者(2)确保服务器的合作。避免了如在现有系统中使用多个服务器或可信硬件的费用和复杂性,并且系统可以利用诸如散列函数的廉价算术运算来实现。此外,服务器2处的节流可以基于不正确的密码输入,提供对于在线攻击的高效的保护。因此,该方案提供了用于通过仅与一个服务器交互来生成用户计算机的秘密密钥的安全且实用的系统。尽管上面已经描述了示例性实施例,但是可以设想许多替代和修改。例如,其他实施例可以使用不同的编码算法来生成在协议中使用的值。其他方便的示例包括基于密码的密钥导出功能,诸如PBKDF2(由互联网工程任务组织的RFC2898发布)或bcrypt(在“AFuture-AdaptablePasswordScheme”,NielsProvos和DavidMazières,USENIX1999)中描述的算法。一般来说,被指示为编码指定元素的值可以另外编码其他元素,并且通信可以传达除了那些具体列出的元素之外的元素。在其他实施例中生成的密钥K可以用于任何存储的数据的加密/解密或用于除了加密/解密之外的密码操作。例如,秘密用户计算机密钥可以用于向某个第三方认证用户计算机或用于签署消息。虽然为了上面的说明性目的描述了简单的数据处理系统1,但是可以设想各种其他形式的数据处理系统。本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1