基于密码的认证的制作方法

文档序号:11142853阅读:922来源:国知局
基于密码的认证的制造方法与工艺

本发明一般涉及数据处理系统中基于密码的认证,由此根据用户密码的认证来控制对资源的访问。提供用于认证用户密码的多服务器系统,以及用于配置服务器的相应方法,组件服务器和计算机程序。



背景技术:

密码是用于数据处理系统中的用户认证的最流行的机制。长期以来,用户计算机上的网络钓鱼攻击和按键记录恶意软件是黑客捕获大量用户密码的首选方法。然而,最近,密码安全性的主要风险似乎来源于服务器泄漏。仅在2012年,以该方式报告了数千万个密码丢失,主要的数据泄露发生在各种流行的网站。

在常规的基于密码的认证系统中,用户连接到服务器,所述服务器控制对受保护资源的访问并且维护用户ID(例如,用户名)的数据库,它们的关联用户密码以散列形式存储。在接收到用户ID和输入密码时,访问控制服务器散列输入密码并检查结果是否等于该用户的存储密码散列。然而,可以通过黑客访问控制服务器(或关联的密码散列数据库)窃取所有密码散列。由于使用字典或蛮力离线攻击消息空间的效率,以散列形式存储密码提供很少的保护。美国国家标准与技术研究所估计,甚至十六个字符长度的人类可记忆密码只有30位熵,对应于大约十亿种可能的组合。使用可以每秒测试超过八十亿种组合的当前的图形处理器,一旦对密码数据进行离线攻击,就应当认为失去安全性。

为了减少通过服务器泄漏暴露于离线攻击,可以由多个服务器执行基于密码的认证。其中基于密码的认证数据在多个服务器之间分割的认证协议是已知的,例如作为认证密钥交换或认证秘密共享协议的一部分。现有的多服务器密码认证系统要求用户计算机与认证协议中的所有服务器交互,原因是认证需要所有服务器的信息。基于双服务器密码的认证系统也是已知的。“RSA Distributed Credential Protection”,RSA Security,Whiteepaper 2012,http://www.emc.com/collateral/software/white-papers/h11013-rsa-dcp-0812-wp.pdf,描述了这样的系统的例子。这里,基于密码的认证数据在两个服务器之间拆分。用户以随机和拆分形式将其密码发送到两个服务器,然后所述两个服务器交互以验证密码,如果密码正确,则授权访问。

多服务器密码认证系统的改进将是非常期望的。



技术实现要素:

本发明的第一方面的实施例提供一种系统,其包括:

访问控制服务器,用于经由网络与用户计算机通信并且根据与相应用户ID相关联的用户密码的认证来控制用户计算机对资源的访问;以及

存储相应秘密值的多个n个认证服务器,用于经由所述网络与所述访问控制服务器通信;

其中所述访问控制服务器针对每个所述用户ID存储通过使用取决于所述秘密值(secret value)的预定算法对与所述ID相关联的用户密码进行加密而产生的第一密文;

并且其中所述访问控制服务器和认证服务器适配使得响应于从用户计算机接收到所述用户ID和输入密码,所述访问控制服务器与多个k≤n个认证服务器通信以实现密码认证协议,要求k个认证服务器使用它们的相应秘密值,其中通过使用所述预定算法加密输入密码来产生第二密文,并且所述访问控制服务器使用所述第一和第二密文来确定输入密码是否等于用于被接收用户ID的用户密码,如果是,则允许由用户计算机访问资源。

在体现本发明的系统中,访问控制服务器提供到资源的访问点并且也提供用于连接用户的基于多服务器密码的认证协议的集中控制。该协议的实现需要k≤n个认证服务器与访问控制服务器协作,并且这些认证服务器在该过程中必须使用它们的相应秘密值。然而,输入密码的有效性由访问控制服务器基于与k个服务器的通信集中确定。该协议不要求访问控制服务器(或任何其他服务器)重建用户密码。认证基于尝试使用取决于认证服务器的秘密值的预定加密算法分别从真实用户密码和输入密码产生的第一和第二密文的使用。体现本发明的系统可以提供安全和有效的基于密码的认证。用户计算机仅仅需要与访问控制服务器通信,并且不以其他方式参与认证协议的实现。本发明的实施例提供抵抗离线攻击的安全性,并且也允许实现有效的更新机制,由此可以更新秘密值以加强安全性,例如定期或响应已知的安全漏洞。将结合下面描述的具体实施例来说明体现本发明的系统的附加优点。

服务器的秘密值可以包括密码密钥,或密钥共享,或仅为系统中的相应服务器所知的任何其他强秘密。用于生成密文的加密算法可以以各种方式直接地或间接地取决于这些秘密值。例如,秘密值可以在算法中使用,或者算法可以使用密码密钥对的公开密钥,并且秘密值可以包括密钥对的秘密密钥的相应密钥共享。可以通过使用加密算法直接地或在进一步处理输入密码以产生其某个功能之后加密输入密码而产生第二密文。

在第一优选实施例中,认证协议由访问控制服务器和k=n个认证服务器实现。第一密文包括从以下导出的伪随机值:认证服务器的n个秘密值;用户ID的用户密码;和优选地由访问控制服务器存储的另外的秘密值。为了在用户登录时实现密码验证协议,访问控制服务器以类似于第一密文的方式安排从秘密值和输入密码产生第二密文。访问控制服务器然后简单地比较第一和第二密文以确定输入密码是否等于用于用户ID的用户密码。

在第二优选实施例中,使用用于在密码密钥对的公开密钥下加密用户密码的同态加密算法来产生第一密文。认证服务器的秘密值包括密钥对的秘密密钥的相应密钥共享。为了在用户登录时实现密码认证协议,访问控制服务器使用所述同态加密算法从输入密码产生第二密文。访问控制服务器然后通过经由操作⊙组合第二密文和用于被接收用户ID的第一密文来产生测试值,操作⊙使得由于所述加密算法的同态性,如果输入密码等于用户密码,则测试值解密到预定值。将测试值发送到k个认证服务器,所述认证服务器使用它们的秘密密钥共享以取决于测试值产生相应的解密共享。然后,访问控制服务器从k个解密共享确定测试值是否解密到所述预定值,并且因此输入密码等于用户密码。如果同态加密算法是需要小于n个解密共享用于解密的阈值加密算法,则可以使用k<n个认证服务器来实现密码认证协议。

为了防止离线攻击的最大安全性,访问控制服务器在优选实施例的密码认证协议中将被接收用户ID发送到每个认证服务器,并且每个认证服务器为每个用户ID实现节流机制。节流机制在密码学中是众所周知的,其提供用于由系统用户监视登录的过程,并且基于登录行为来确定是否应当阻止任何特定用户帐户。如果登录行为满足指示潜在恶意动作的预定标准,例如,如果在给定时间内进行多于阈值数量的登录请求和/或使用错误密码,则节流机制通常阻止用户帐户。下面详细描述的第一优选实施例基于用户登录频率实现节流机制。第二优选实施例可以基于登录频率和错误密码输入的组合来实现节流。

在优选实施例中,访问控制服务器和认证服务器还适配为实现用于用户帐户的密码设置协议。特别地,访问控制服务器和认证服务器可以适配使得响应于在设置操作中的所述用户密码和关联的用户ID的初始输入,访问控制服务器与n个认证服务器通信以实现密码设置协议,包括生成用于所述用户ID的所述第一密文和在所述访问控制服务器处存储所述第一密文,从而允许用于所述用户ID的所述验证协议的后续实现。优选实施例也提供允许根据需要更新秘密值的有效更新操作。

本发明的第二方面的实施例提供一种服务器,包括存储器、通信接口和控制逻辑,所述控制逻辑适配配置服务器以实现根据本发明第一方面的系统的访问控制服务器,其中所述存储器在使用中存储用于每个用户ID的所述第一密文。

本发明的第三方面的实施例提供一种服务器,其包括存储器、通信接口和控制逻辑,所述控制逻辑适配为配置服务器以实现根据本发明的第一方面的系统的认证服务器,其中所述存储器在使用中存储认证服务器的所述秘密值。

本发明的另外方面提供包括程序代码装置的计算机程序,所述程序代码装置用于使计算机相应地实现根据本发明的第二或第三方面的服务器的控制逻辑。术语“计算机”在最一般的意义上使用,并且包括具有用于执行计算机程序的数据处理能力的任何设备、组件或系统。而且,体现本发明的计算机程序可以构成独立的程序或程序集,或者可以是更大的程序或程序集的元素,并且可以在诸如用于装载在计算机中的磁盘或电子传输装置的计算机可读介质中被提供(例如,体现)。计算机程序的程序代码装置可以包括旨在使计算机直接地或在以下之一或两者之后执行所述方法的指令的任何语言、代码或符号的任何表达:(a)转换成另一种语言、代码或符号,以及(b)以不同的材料形式再现。

本发明的另一方面的实施例提供一种方法,用于在被布置为经由网络与用户计算机和多个n个认证服务器通信的访问控制服务器处根据与相应用户ID相关联的用户密码的认证来控制用户计算机对资源的访问。所述方法包括:

在所述n个认证服务器处存储相应的秘密值;

对于每个所述用户ID,在所述访问控制服务器处存储通过使用取决于所述秘密值的预定算法对与所述ID相关联的用户密码进行加密而产生的第一密文;

在所述访问控制服务器处,响应于从用户计算机接收到所述用户ID和输入密码,与多个k≤n个认证服务器通信以实现密码认证协议,要求所述k个认证服务器使用它们的相应秘密值,其中通过使用所述预定算法加密输入密码来产生第二密文,并且所述访问控制服务器使用所述第一和第二密文来确定输入密码是否等于用于被接收用户ID的用户密码;以及

在所述访问控制服务器处,如果输入密码等于用户密码,则允许由用户计算机访问资源。

在本文中参考本发明的一方面的实施例描述特征的情况下,可以视情况在本发明的另一方面的实施例中提供对应的特征。

附图说明

现在将参考附图通过例子来描述本发明的优选实施例,其中:

图1是包括体现本发明的密码认证系统的数据处理系统的示意图;

图2指示密码认证系统的操作中的设置过程的特征;

图3指示密码认证系统的操作中的登录过程的特征;

图4示出用于实现第一密码认证协议的密码认证系统的第一实施例的配置;

图5a和5b指示第一实施例中的设置协议的步骤;

图6a和6b指示第一实施例中的密码认证协议的步骤;

图7指示第一实施例中的更新协议的步骤;

图8示出用于实现第二密码认证协议的密码认证系统的第二实施例的配置;

图9指示第二实施例中的设置协议的步骤;

图10a和10b指示第二实施例中的密码认证协议的简单实现的步骤;

图11a至11c指示第二实施例中的密码认证协议的更复杂实现的步骤;和

图12指示第二实施例中解锁协议的步骤。

具体实施方式

图1示出了包含体现本发明的认证系统的数据处理系统的简单例子。大体上用1指示的认证系统包括被布置为经由网络4与多个用户计算机3通信的访问控制服务器2。网络4通常可以包括一个或多个组件网络或互联网络,包括因特网。用户计算机3在该例子中是通用个人计算机(PC),但是同样可以由诸如移动电话、平板计算机、个人音乐播放器、掌上型设备等的其他计算机设备实现。访问控制服务器2控制由用户计算机3访问资源,在该例子中是数据库5。根据与相应用户ID(例如用户名,其由在操作中由用户经由PC 3输入)相关联的用户密码的认证允许访问。

认证系统1也包括标记为S1,S2,...,Sn的多个认证服务器6,其被布置为经由网络4与访问控制服务器2通信。n个认证服务器6适配为与访问控制服务器2协作以实现下面详述的多服务器密码认证协议。认证服务器的数量n可以针对不同的实施例而变化,但是典型的系统可以取决于特定的密码认证协议和所需的安全级别使用两个到十个之间的认证服务器。一般而言,认证服务器6可以位于与访问控制服务器2相同的位置处,或者位于一个或多个不同的位置处,并且可以由与访问控制服务器相同的实体或由一个或多个不同的实体控制。因此可以根据给定系统的特定安全要求来选择服务器2、6的分布和控制。

访问控制和认证服务器2、6的每一个可以体现为配置成实现相应服务器功能性的通用计算机。访问控制服务器2在这里简单地显示为包括用于在网络4上通信的通信接口(I/F)7,控制逻辑8,和存储器9。控制逻辑8一般控制服务器2的操作,并且提供用于实现下面详述的密码认证和相关协议的步骤的功能性。存储器9存储在操作中由控制逻辑使用的各种数据。这包括用于系统的每个授权用户的用户ID(Uid)的第一密文CT1。每个认证服务器6类似地显示为包括通信接口11,提供用于在下面详述的协议中使用的功能性的认证逻辑12,以及存储在操作中由逻辑12使用的数据的存储器13。这包括仅为系统中的特定服务器Si所知的秘密值vi。一般而言,控制逻辑8和认证逻辑12可以以硬件或软件或其组合来实现。在该例子中,逻辑8、12方便地通过在相应计算机2、6上运行以便使计算机执行所述功能的软件来实现。

图2是指示用于在密码认证系统1的操作中设置用户帐户的设置过程的关键特征的一般化框图。在如步骤20所示的设置操作开始时,将用于用户的后续认证的用户ID Uid和关联的用户密码pwd在步骤21中被输入到访问控制(AC)服务器2。在典型的应用中,用户ID和密码在这里经由用户计算机3输入,并且经由网络4发送到AC服务器2。AC服务器在步骤22中通过激发密码设置协议来响应。该协议经由AC服务器2和n个认证服务器Si至Sn的通信来实现。设置协议包括生成用于输入用户ID的第一密文CT1,如步骤23所示。通过使用取决于n个认证服务器的秘密值v1至vn的预定算法对用户密码pwd进行加密来产生密文CT1。这将在下面进一步说明。第一密文CT1由具有用于授权用户的用户ID Uid的AC服务器2存储,如步骤24所示。n个认证服务器6存储用户ID Uid(典型地具有由下面进一步讨论的节流机制控制的一个或多个其它项,例如“帐户封锁”标志),如步骤25所示。应当注意,步骤24和25的顺序可以在不同实现方式中变化,如下所示。然后密码设置协议完成,并且用户帐户准备好在随后的登录过程中使用。

图3是给出密码认证系统1的操作中的登录过程的概述的一般化框图。当操作用户计算机3的用户输入密码pwd'(即,尝试用户密码pwd)和用户ID Uid时,登录过程在步骤30开始。在步骤31中输入Uid、pwd'在网络4上被发送并且由AC服务器2接收。在步骤32中AC服务器通过激发用于认证输入密码pwd'的验证协议来响应。该密码认证协议经由AC服务器2与多个k≤n个认证服务器S1至Sn的通信来实现,其中k的值取决于特定协议实现。协议的成功操作要求k个认证服务器使用它们的相应秘密值vi,如图中的框33所示。协议包括生成第二密文CT2,如框34所示。通过使用在设置协议中用于产生第一密文CT1的算法对输入密码pwd'进行加密在系统1中产生第二密文CT2。AC服务器2然后使用第一和第二密文CT1、CT2在步骤35中确定输入密码pwd'是否等于在步骤31中接收的用于用户ID的用户密码pwd。如果是(在决策框36处为“是”),则AC服务器2允许用户访问数据库5,如步骤37所示,并且登录过程完成。如果输入密码pwd'无效(在决策框36处为“N”),则AC服务器2在步骤38拒绝访问并且可以相应地通知用户。再次应当注意,由图3的框指示的步骤的该顺序可以在不同实现方式中变化,如下面的例子所示。

现在将参考图4至7详细描述适配实现第一密码认证协议的认证系统1的第一实施例。第一密码认证协议基于使用伪随机函数和XOR(即模2加法)运算的对称密码术。图4示出该实施例中的系统服务器的初始配置。n个认证服务器S1至Sn的每一个存储由k1i和k2i表示的两个对称密钥。(这里的密钥k2i对应于上面讨论的秘密服务器值,这里使用的密钥k1i可以由任何唯一服务器ID替换,如下面进一步讨论)。在该实施例中,AC服务器存储另外的秘密值,这里由kAC表示的另外的对称密钥。该系统通过服务器2、6之间的安全通信,即经由具有前向保密的认证和保密信道来操作。这些性质可以以已知的方式实现,例如使用SSL(安全套接层)或TLS(传输层安全)协议。

设置协议实施例#1

图5a和5b指示该实施例中的设置协议的连续阶段。如图5a中的(a)所示,当用户经由用户PC 3向AC服务器2提供用户ID Uid和用户密码pwd时,操作开始。在步骤(b)中,AC服务器2的控制逻辑8产生初始伪随机值tin,其经由伪随机函数PRF加密用户密码pwd。初始伪随机值tin也加密AC服务器的秘密密钥kAC和(为了避免在不同用户选择相同密码时的冲突)用户ID Uid。具体地在该例子中,将初始伪随机值tin计算为

tin←PRF(PRF(kAC,Uid),pwd)。

在步骤(c)中,AC服务器经由通信接口7和网络4将用户ID Uid和初始伪随机值tin发送到n个认证服务器S1至Sn。值(Uid,pwd)由每个认证服务器6的认证逻辑12经由通信接口11接收。

在图5a中的(d)所示的下一步骤中,每个服务器Si的认证逻辑12使用初始伪随机值tin来产生相应的第一伪随机值t1i。该第一伪随机值包括相应的第二和第三伪随机值t2i和t3i的模2和。第二伪随机值t2i经由伪随机函数PRF加密初始伪随机值tin。第二伪随机值t2i还经由伪随机函数PRF对相应认证服务器的服务器ID进行加密,其中服务器密钥k1i在这里构成服务器ID。第三伪随机值经由伪随机函数PRF加密认证服务器Si的秘密值vi=k2i和被接收用户ID Uid(其与在初始伪随机值tin中加密的用户密码相关联)。具体地:

t1i←t2i⊕t3i

←PRF(k1i,tin)⊕PRF(k2i,Uid)。

其中⊕表示模2加法(modulo-2)(XOR)运算。该公式中的第二项t3i为下面进一步讨论的主动更新过程提供基础。

在如图5b中的(e)所示的设置操作的下一阶段中,每个认证服务器Si将其相应的第一伪随机值t1i发送到AC服务器2。然后,AC服务器2的控制逻辑8从n个第一伪随机值t1i产生第一密文CT1。在该实施例中由tpwd表示的第一密文CT1由下式给出:

tpwd=t11⊕t12⊕t13…⊕t1n

因此将看到,该实施例中的第一密文包括n个第一伪随机值t1i的模2和,每个第一伪随机值经由伪随机函数加密相应认证服务器的秘密值k2i和初始伪随机值tin,其又对用户密码pwd和AC服务器2的秘密值kAC进行加密。

如图5b中所示,在用于该用户的设置协议结束时,AC服务器2将用于用户ID Uid的第一密文tpwd存储在其存储器9中。每个认证服务器6的存储器13存储Uid和指示用户帐户是被封锁(b=1)还是打开(b=0)的“帐户封锁”位b={0,1}。最初,该位设置为b=0。单个伪随机值tin、t1i未被任何服务器2、6存储,并且在用于设置用户帐户之后被删除。

密码认证协议实施例#1

在用户帐户的后续登录中,AC服务器2与k=n个认证服务器6通信以实现密码认证协议。图6a和6b指示该实施例中的密码认证协议的连续阶段。如图6a中的(a)所示,当用户提供用户ID Uid并经由用户PC 3输入用户密码pwd'时,操作开始。在接收到值(Uid,pwd')时,AC服务器2检查用户记录(Uid,tpwd)是否存在于存储器9中。如果否,则登录失败。如果是,则后续操作大体上对应于以上的设置协议,但是使用输入密码pwd'。因此,在步骤(b)中,AC服务器逻辑使用输入密码pwd'来产生对应于初始伪随机值tin的测试伪随机值ttest。因此,以类似于初始伪随机值tin的方式产生测试伪随机值ttest,但是使用输入密码pwd'而不是用户密码pwd。在步骤(c)中,AC服务器将测试伪随机值ttest发送到具有被接收用户ID Uid的每个认证服务器S1至Sn。此时,如步骤(d)所示,每个认证服务器6检查用户帐户是否由于节流机制的操作已被封锁(即,用于Uid的标志b设置为b=1)。特别地,每个服务器6的认证逻辑12适配为基于用户登录请求的频率实现用于每个用户ID Uid的节流机制。各种这样的节流措施在本领域中是已知的,并且在这里可以采用任何适宜的技术。例如,如果超过阈值数量的登录请求被接收或在给定时间限制内被接收,则可以封锁账户。替代地或附加地,例如,如果识别出可疑登录行为,例如如果超过请求的特定数量或频率,则对于服务用户请求可以应用逐渐增加的时间限制。因此,节流机制可以临时地或永久地封锁用户帐户,后者需要取决于特定实现方式由授权方或用户帐户的更新解锁。在任何情况下,如果用户帐户在任何认证服务器6处被封锁,则登录操作失败。如果没有服务器封锁用户帐户,则登录操作可以继续。

在如图6b中的(e)所示的认证协议的下一阶段中,每个认证服务器Si使用测试伪随机值ttest来产生对应于以上的第一伪随机值t1i的相应服务器伪随机值tsi。也就是说,服务器伪随机值tsi以类似于第一伪随机值t1i的方式产生,但是使用测试伪随机值ttest代替初始伪随机值tin。因此:

tsi←PRF(k1i,ttest)⊕PRF(k2i,Uid)。

在步骤(f)中,每个认证服务器Si将其服务器伪随机值tsi发送到AC服务器2。在步骤(g)中,AC服务器从n个服务器伪随机值tsi产生第二密文CT2。在该实施例中由tpwd'表示的第二密文CT2因此由下式给出:

tpwd'=ts1⊕ts2⊕ts3…⊕tsn

为了确定输入密码是否有效(pwd'=pwd),AC服务器逻辑简单地比较步骤(h)中的第一和第二密文以确定是否tpwd'=tpwd。如果是,则登录成功并且AC服务器授权用户访问资源5。如果否,则登录失败并且拒绝访问。

以上密码认证协议在AC服务器的所有n个认证服务器之间执行。其中攻击者可以在短时间内获得对服务器的完全控制并且夺取由损坏的服务器维护的所有信息(包括秘密密钥)的“强行夺取”攻击将不会破坏安全性,原因是所有服务器的秘密密钥需要认证过程。只要至少一个服务器2、6仍然诚实,密码就是安全的。例如,只要不超过n-1个认证服务器和AC服务器被攻击者损坏,攻击者就不能重建密码或对积累的认证数据运行脱机攻击。攻击者将需要来自剩余的诚实服务器的支持来测试所有密码组合,并且这将由于节流机制而被诚实服务器识别和阻止。在该实施例中仅仅经由对称密码法实现安全性,其快速和简单并且在实现效率方面提供显著的优点。而且,系统不需要用户计算机3处的任何专用客户端软件,并且用户计算机仅仅需要与AC服务器通信以用于系统的操作。该系统也允许实现用于更新服务器密钥的有效的主动安全机制。该更新机制不需要与用户进行任何交互。现在将参考图7说明更新协议。

更新协议实施例#1

AC服务器2和每个认证服务器6适配为实现更新协议,其中认证服务器将其相应的秘密值vi=k2i更新为新的秘密值k2'i。该协议可以由AC服务器对所有认证服务器定期地运行以进一步增强对连续服务器损害的安全性。另外,该协议可以用于在已知的破坏之后重新建立完整的安全性。如果AC服务器2受到损害,则更新协议将包括所有服务器。单个认证服务器上的安全漏洞仅仅需要由AC服务器和受影响的认证服务器实现协议。以下集中于单个认证服务器的操作,其可以根据需要扩展到所有n个服务器。

AC服务器将记录应当被更新的所有Uid值发送到认证服务器6。认证服务器6将其相应的秘密值vi=k2i更新为新的秘密值k2'i,并且对于每个用户ID Uid使用新的秘密值k2'i来产生对应于以上的第三伪随机值t3i的更新的伪随机值tui。也就是说,如图7中的步骤(a)所示,认证服务器6选择新的密钥k2'i,并且然后将更新的伪随机值tui计算为:

tui←PRF(k2'i,Uid)。

认证服务器然后产生更新值ui,其包括更新的伪随机值tui和第三伪随机值t3i的模2和:

ui←PRF(k2'i,Uid)⊕PRF(k2i,Uid)。

在步骤(b)中,认证服务器将用于每个Uid的更新值ui发送到AC服务器2。在步骤(c)中,AC服务器2通过产生第一密文tpwd和更新值ui的模2和来更新为每个Uid存储的第一密文tpwd。因此新的第一密文由下式给出:

t'pwd=tpwd⊕ui

(如果所有服务器密钥被更新,则新的第一密文将因此由t'pwd=tpwd⊕u1⊕u2...⊕un给出。按照要求,然后新的第一密文是值的模2和:

t'pwd←PRF(k1i,tin)⊕PRF(k2'i,Uid)。

由于模2加法而抵消旧随机PRF(k2i,Uid),由此丢失的k2i变得无用。新的第一密文然后由AC服务器存储用于用户ID。

现在将参考图8至12详细描述适配为实现第二密码认证协议的认证系统1的第二实施例。第二密码认证协议基于同态阈值加密方案。图8示出该实施例中的系统服务器的初始配置。AC服务器2存储密码(公开/秘密)密钥对的公开密钥tpk。由认证服务器Si存储的秘密值包括该密钥对的秘密密钥的相应密钥共享tski。如前所述,该系统通过服务器2、6之间的安全通信操作。

设置协议实施例#2

图9指示在该实施例中创建用户帐户的设置协议的步骤。操作开始于步骤(a),其中将用户ID Uid和用户密码pwd输入到AC服务器2。在步骤(b)中,AC服务器使用在公开密钥tpk下对密码pwd进行加密的同态阈值加密算法TEnctpk产生第一密文CT1。阈值加密算法TEnctpk需要p<n个解密共享用于解密,如下面更详细地说明。在该实施例中由Cpwd表示的第一密文CT1因此由下式给出:

Cpwd=TEnctpk(pwd)。

加密算法TEnc是同态的,即存在对密文C的有效操作⊙,使得如果C1∈TEnctpk(m1)并且C2∈TEnctpk(m2),则C1⊙C2∈TEnctpk(m1.m2)。(我们也将使用指数来表示⊙的重复应用,例如用C2表示C⊙C。AC服务器存储用于用户ID Uid的第一密文Cpwd,并且在步骤(c)中,将Cpwd与Uid发送到n个认证服务器S1至Sn。每个认证服务器Si将Uid与该例子中的Cpwd和如上所述用于节流机制的帐户封锁位b(初始设置为b=0)一起存储。

密码认证协议实施例#2

在用户帐户的后续登录中,AC服务器2与k=p个认证服务器6通信以实现密码认证协议。首先将参考图10a和10b描述该协议的简单实现。这些指示密码认证协议的操作的连续阶段。如图10a中的(a)所示,该过程开始于向AC服务器2提供用户ID Uid和输入密码pwd'。如果用于Uid的用户记录存在于存储器9中,则在步骤(b)中AC服务器使用同态加密算法从输入密码产生第二密文CT2=Cpwd'。在该初始例子中,由Cpwd'表示的第二密文由下式给出:

Cpwd'=TEnctpk(pwd')。

在步骤(c)中,AC服务器然后通过经由操作⊙组合第二密文Cpwd'和为被接收Uid存储的第一密文Cpwd产生测试值Ctest。在该初始例子中,操作⊙表示除法,由此:

Ctest=Cpwd/Cpwd'

由于如上所述的加密算法的同态性,如果输入密码pwd'等于与被接收Uid相关联的用户密码pwd,则测试值解密到预定统一值。接下来,在步骤(d)中AC服务器将测试值Ctest与Uid发送到k=p个认证服务器6。p个认证服务器可以在这里以任何适宜的方式被选择作为响应或执行n个认证服务器6之间的负载平衡方案的第一p个服务器。

在如图6b中的(e)所示的该认证协议的下一阶段中,每个认证服务器Si通过由如上所述的服务器逻辑实现的节流机制(throttling mechanism)来检查用户帐户是否已被封锁(对于Uid,b=1)。如果用户帐户在任何认证服务器6处被封锁,则登录操作失败。如果p个服务器都没有封锁用户帐户,则登录操作可以继续。在该情况下,如步骤(f)所示,每个认证服务器Si使用其相应的密钥共享tski以取决于测试值Ctest产生解密共享di。在该简单例子中,在步骤(g)中服务器简单地使用其密钥共享tski解密Ctest并且将用于Uid的所得到的解密共享di发送到AC服务器。在步骤(h)中,访问控制服务器通过从k个解密共享d1…dk确定测试值是否解密到统一,即是否:

TDec(Ctest,d1…dk)=1

确定输入密码是否等于用户密码,其中TDec是如下面进一步讨论的用于阈值加密方案的解密算法。如果是,则允许访问。如果pwd'≠pwd,则解密结果将是随机数,并且将拒绝访问。

现在将参考图11a至11c描述第二密码认证协议的更详细实现方式。该例子包含对以上简单例子的各种改进,并且允许节流考虑较早的用户登录尝试是否成功。首先给出阈值描述方案的简要描述以帮助理解所遵循的协议。

阈值加密:阈值加密方案由四个算法(EKGen;TEnc;PDec;TDec)组成。密钥生成算法EKGen取输入(1λ,t,n),其中t表示容忍的恶意服务器的最大值,并且输出主公开密钥tpk和n个部分密钥对(tpk1,tsk1),…,(tpkn,tskn)。加密算法TEnc在输入公开密钥tpk和消息m时输出密文C。部分解密算法PDec在输入秘密密钥共享tski、公开密钥共享tpki和密文C时输出解密共享di。阈值解密算法TDec在输入C、tpk和k≥t+1个解密共享d1…dk时输出明文m或⊥(错误)。各种这样的阈值加密方案是已知的,示例性结构在以下文献中描述:Y.Desmedt,Y.Frankel,“Threshold Cryptosystems”,Desmedt&Y.Frankel,CRYPTO 1989。

在上述设置协议之前,AC服务器2为所有n个认证服务器6创建阈值密钥。也就是说,它创建密钥

(tpk,(tpk1,tsk1),…,(tpkn,tskn))←EKGen(1λ,t,n)。

秘密密钥共享tski被加密发送到每个服务器Si。主公开密钥tpk和公开密钥共享tpki在系统中是公知的。另外,每个认证服务器6也创建用于消息认证方案(MAC)的密钥ki,其将在用于节流帐户的解锁测试中被使用,如下所述。

用于用户帐户的设置协议如参考图9所述。在密码认证协议中,AC服务器2与p=t+1个认证服务器6通信,其中t由以上的阈值加密方案限定。在图11a至11c中在其操作在图的左侧指示的AC服务器2与其操作在右侧指示的每个认证服务器6之间的交互方面指示密码认证协议。

当用户向AC服务器2发送Uid和输入密码pwd'时,操作在图11a中的步骤(a)开始。如果对于Uid存在用户记录,则AC服务器继续使用同态加密算法从输入密码计算第二密文CT2=Cpwd'。在该例子中,通过将同态加密算法应用于输入密码的函数F来产生第二密文Cpwd',其中F(x)=1/x。因此:

Cpwd'=TEnctpk(1/pwd')。

这确保恶意AC服务器不能在认证协议中再次简单地使用第一密文Cpwd作为第二密文Cpwd'。然后通过经由操作⊙组合Cpwd'和Cpwd产生测试值Ctest,其中在该情况下⊙表示乘法:

Ctest=Cpwd⊙Cpwd'=Cpwd⊙TEnctpk(1/pwd')。

由于如上所述的加密算法的同态性,如果pwd'=pwd,则测试值再次解密到统一。接下来,在步骤(c)中AC服务器2生成用于证明测试值Ctest包括第二密文Cpwd'以及用于用户ID的第一密文Cpwd的密码证明Π:

Π←NIZK{(pwd'):Ctest=(Cpwd⊙TEnctpk(1/pwd'))}(Ctest)。

(这里“NIZK”表示“非交互零知识”,其中“零知识”指示证明者仅仅显示需要证明的东西,“非交互”意味着证明的认证不需要证明者和认证者之间的交互。这样的证明可以以已知的方式实现,并且用于实现证明的合适的协议对于本领域技术人员将是显而易见的。特别地,证明Π允许认证测试值Ctest包括用于Uid的正确的第一密文Cpwd和从输入密码的函数F正确计算的第二密文Cpwd'。在步骤(d)中,AC服务器然后将用户ID和证明Π发送到具有测试值Ctest的k=t+1个认证服务器6。

参考图11b,每个认证服务器Si在步骤(e)中接收(Uid,Π,Ctest),并且然后在步骤(f)中检查用于Uid的帐户未被封锁,即b=0。在步骤(g)中,服务器Si认证证明Π以(Uid,Π,Ctest)相对于其本地存储值(Uid,Cpwd)是正确的。如果测试步骤(f)或(g)失败,则用户登录失败(受到下面讨论的解锁协议的操作)。假设两个测试都通过,则服务器Si在步骤(h)中继续以计算随机化值Ci,对于随机选择的ri,所述随机化值包括测试值的相应随机指数ri次幂:

Ci=(Ctest)ri

然后每个服务器存储Ci并且在步骤(i)中通过将散列值hi发送到AC服务器提交该值,其中:

hi←H(Ci,Uid)

并且H表示密码散列函数。当AC服务器已接收到所有k=t+1个散列值时,它在步骤(j)中将它们作为(h1,h2,…,ht+1)转发到所有服务器S1至Sk。k个服务器现在通过在步骤(k)中将它们发送到AC服务器来显示它们的随机化值Ci。当AC服务器已接收到所有k=t+1个随机化值Ci时,它在步骤(l)中将它们作为(C1,C2,…,Ct+1)转发到所有服务器S1至Sk

参考图11c,每个认证服务器Si在步骤(m)中接收(C1,C2,…,Ct+1),并且在步骤(n)中检查是hi=H(Ci,Uid)。如果是,则在步骤(o)中服务器Si经由操作⊙(这里是乘法)组合k=t+1个随机化值Ci的集合,以产生随机化密文CR,并且使用其相应的密钥共享tski从随机化密文CR产生解密共享di

CR←⊙i=1,…t+1Ci

di←PDectski(tpki,CR)

在步骤(p)中,服务器Si将(di,si)发送到AC服务器2,其中si=MACki(Uid,CR)使用其密钥ki用于消息认证方案。当AC服务器已接收到所有k=t+1个服务器的解密共享和MACs(di,si)时,它使用阈值解密算法TDec从解密共享确定随机化密文CR是否解密到统一,并且因此pwd'=pwd。这是由于如果测试值Ctest=1,则随机化值Ci=1,由此由于同态性,如果pwd'=pwd,则随机化密文CR解密到与测试值相同的值,即统一。因此,在步骤(q)中,AC服务器2计算:

CR←⊙i=1,…t+1Ci并且

x←TDectpk(CR,{di}i=1,…t+1)

如果x=1,则密码匹配并且授权访问,否则登录失败。

在以上过程中,AC服务器保持所有解密共享和MAC值(di,si)一段时间,以允许随后向认证服务器证明登录成功。特别地,以上协议中的步骤(h)至(p)允许认证服务器在封锁用户帐户之前检查在最后登录尝试中的输入密码的正确性。在用于Uid的后续登录中由于节流机制而封锁帐户之前,认证服务器与访问控制服务器通信以实现“解锁协议”。现在将参考图12描述解锁协议。

解锁协议

在图12的左侧和右侧分别指示在解锁协议中由AC服务器2和认证服务器6执行的操作。如果服务器Si注意到太多的登录尝试并且将要封锁用于Uid的用户帐户,则服务器将证明请求发送到AC服务器,请求证明最后登录成功,即随机化密文CR解密到统一。当在图12的步骤(a)中发送这样的请求时,如果最后登录成功,则AC服务器检索值(Uid,CR,si,{di}i=1,…t+1)并且将在步骤(b)中将这些值发送到认证服务器。如果最后登录失败,则AC服务器改为发送值(Uid,fail)。在步骤(c)中,服务器Si认证si=MACki(Uid,CR)和TDectpk(CR,{di}i=1,…t+1)。只有当两个测试都成功时服务器才保持用于Uid的帐户打开。因此,在步骤(d)中适当地设置帐户封锁位b,并且协议完成。

可以看出,以上系统允许基于密码检查以及登录频率的节流。另外,该实施例的n个认证服务器还适配为实现用于更新n个密钥共享tski的共享更新协议。这可以使用主动秘密共享技术以已知方式实现,其例子在以下文献中描述:“Proactive Secret Sharing Or:How to Cope With Perpetual Leakage”,Herzberg等人,CPYPTO 1995。使用这样的技术,服务器6将定期地和/或每当攻击者可能已得知秘密密钥共享时为其秘密密钥共享运行共享更新协议。每次更新后,旧共享将被删除。主动安全性由此确保在一方面新的秘密密钥共享tski仍然与主公开密钥tpk“兼容”,而在另一方面它们与攻击者可能已获取的旧秘密共享“不兼容”。

在以上实施例中,只要至多t个服务器(和DS)被破坏,控制那些服务器的攻击者就不能检索密码,例如通过对Cpwd进行脱机攻击。这来自阈值加密方案的安全性,其保证如果攻击者保持最多t个阈值秘密密钥的共享,则Cpwd不能被解密。提供对DS内部攻击的安全性,原因是在登录协议期间服务器仅仅解密(值统一的)密码商而不是原始密码pwd或密码尝试pwd'。因此,恶意DS不能简单地触发加密密码的解密,而是必须针对每个密码猜测运行完全登录协议。由于诚实服务器中的节流机制,这样的攻击将在几次尝试之后被识别和封锁。该基于阈值的方案甚至可以容忍多达t台服务器的长期损坏,从而可以将服务器外包到不同的信任域。登录特别有效,原因是只需要n个认证服务器中的t+1个进行密码认证。如前所述,系统的操作对于仅需要在所有协议中与AC服务器2通信的用户是完全透明的。

尽管已描述了示例性实施例,但是可以设想许多替代和修改。例如,在以上第一实施例的其他实现方式中,用于t2i的以上公式中的密钥k1i可以由PRF(k1i,Uid)代替。而且,由于系统安全性不取决于该特定值,因此密钥k1i可以由任何唯一服务器ID替换,并且不需要是加密强的秘密。而且,需要时第二实施例中的阈值加密方案可以要求t+1=n个共享用于解密,由此所有n个服务器6将用于密码认证。

应当理解,由访问控制服务器2保护的资源一般可以包括用户访问被限制的任何资源,例如,应用、服务、数据、设备、网络或任何其他设施或设施的组合。而且,以上实施例中的服务器的功能性一般可以在单个机器中实现或分布在多个机器上。也可以设想实施例,其中由以上设置协议生成的用户账户数据预加载在各种服务器中。

在不脱离本发明的范围的情况下可以对所描述的示例性实施例进行许多其它变化和修改。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1