使用。
[0042]所述非对称加密方法能够例如基于RSA或椭圆曲线。
[0043]如上文指出的,第一服务器S1在它的安全数据库中存储第一密文Η。因而,在验证期间,第一服务器在接收到来自第二服务器的第二密文Η'之后,将扫描它的数据库以便于确定第一密文Η是否具有与第二密文Η'相同的值,并且因而确定认证是否成功。
[0044]在这个实施例中,在接受用户所选择的数据之前添加验证是可能的,即,验证数据库中还不存在这个用户的第一密文Η是可能的。例如在该情况下,让用户选择另一个密码。
[0045]根据本发明的变型,为每个第一密文Η存储参考识别符U或这个参考识别符的派生结果U"是可能的。具体为参考密码P的其他信息在注册阶段结束时被删除。
[0046]当前识别符U的派生结果U"是从对当前识别符U的加密操作得到的值。这能够是加密函数F或哈希函数H1。在这个第二种情况下,由于第二服务器执行的哈希操作不为第一服务器所知晓,所以,它将是不同的哈希类型的函数。
[0047]认证
[0048]这个步骤在图2中示出。在第二时间,用户连接到第一服务器S1以访问期望的服务。第一服务器S1接收当前识别符U'和当前密码P'。第一服务器S1将该信息以安全的方式发送给第二服务器S2。一旦被第二服务器接收到,第二服务器对当前识别符U'和密码P以及安全参数R执行Hash单向函数以获得第二密文屮。它将这个密文屮返回给第一服务器S1。后者在它的数据库中查找是否存在与第二密文相同的第一密文,并且如果并仅是如果未发现这个密文H',则生成错误消息。在其他情况下,第一服务器S1能够认证对所期望的服务的访问。
[0049]如果在第一服务器S1中存储有仅仅通过注册阶段的密文Η用户,则在向第二服务器发送数据之前,在它的数据库中存在条目的这一验证步骤不能被完成。事实上,第一服务器S1不能确定当前识别符是否已经在系统中注册。相同的操作是为注册的识别符实现而非为非注册的识别符实现,使用系统作为预言(oracle)来确定识别符是否已经被注册是不可能的。
[0050]如果第一服务器连接到若干执行该服务的计算机,则第一服务器将向所述计算机发送当前识别符U'(由于比较结果是肯定的,当前识别符U'与参考识别符U相同)和肯定的认证信息。如果计算机池使用唯一系统识别符ID操作,则第一服务器S1具有组织为记录集合的数据库,每个用户表现为一条记录。记录包括第一密文Η和对应的系统识别符ID。在肯定验证的情况下,第一服务器以验证当前识别符(U")的肯定验证的消息向业务服务器发送系统识别符(ID)。
[0051]在变型中,其中,第一服务器保持第一参考密文H、参考识别符U(或参考识别符U"的派生结果),由于参考密文Η能够被直接找到,第一服务器的数据库扫描是不必要的。如果第一服务器的安全数据库包含参考识别符U的派生结果U",则第一服务器将对当前识别符U'执行加密操作以获得当前识别符的派生结果并且使用该数据来找到参考密文Ho因而能够获得第一参考密文Η和从第二服务器S2接收的第二当前密文屮之间的比较。
[0052]如果未发现这个识别符,则它生成错误消息。应当注意的是,在向第二服务器发送数据之前,在它的数据库中存在条目的这一验证步骤能够被执行。事实上,如果第一服务器不知晓当前识别符,将没必要验证已经由用户输入的密码。
[0053]密码更新
[0054]系统的特征是在不修改密码值的情况下使能安全方式(mean)更新。例如期望改变安全参数R或单向函数Hash。
[0055]为此目的,第二服务器S2具有加密形式的参考识别符U和密码P。与用于加密的非对称密钥对应的私钥从存储它的受保护的地方提取并且使得对于第二服务器S2而言可利用。
[0056]过程如下:
[0057]-在注册阶段期间,第二服务器解密识别符/密码对并计算第一密文。而且,它基于安全参数R'的新值计算新参考密文Η"或使用新单向函数或甚至二者的组合。这个新密文Η"与第一密文Η —起被发送给第一服务器S1。如果安全参数R被包括在识别符/密码对中,则它也被解密。
[0058]-同样,服务器S2还使用非对称加密方法采用所述服务器S2存储的公钥作为变量根据新参数(单向函数和/或安全参数)对参考识别符U和密码Ρ加密,对应的私钥以受保护的方式被存储在网络外部(例如,在物理的保险柜内)。可选地,加密单元能够包括安全参数R,因而允许知晓哪个参数已经为这个用户使用。这些新编码的数据存储在第二服务器S2的数据库中。
[0059]-收到这两个密文之后,第一服务器S1查找在它的数据库中存储的参考密文Η并且用新密文Η"替代它。因而,在不请求用户重新输入密码的情况下,安全方法能够推进。
[0060]安全参数
[0061 ] 在本发明的范围内能够提供用于安全参数R的若干版本。如上文指出的,这可以是第二服务器S2的参数并且因而被存储在它的安全存储器中。它被用于密文Η、Η'的全部计算。
[0062]安全参数R的主要目的是适应Hash函数对于破解者的技术和服务器的技术的计算开销。例如,并且分别地,在新的字典破解方法被发现时,或在服务器S2材料用更强大的处理器更新时。计算开销涉及例如函数评价所必要的数学操作的量或存储器的容量(存贮器)。
[0063]根据变型,这个参数能够根据用户请求的服务类型变化,并且指示服务类型Sn的信息是与第一服务器发送给第二服务器的识别符/密码相关联的。这允许找到用于加密计算的第二服务器的安全存储器中的这一服务的安全参数(Rl,R2...Rn)。
[0064]根据另一个实施例,安全参数R特定于参考识别符Un并且因而特定于用户。在注册阶段,在接收到识别符/密码对之后,第二服务器S2用随机函数生成参数Rn。因此,在认证阶段,第二服务器S2能够找到安全参数Rn是必要的。为此目的,第二服务器将在它的数据库中存储特定于识别符Un的安全参数Rn。当然,它能够在安全存储器中简单存储Un、Rn对。然而,更好的是识别符Un不以明文的形式存储并且因而对识别符Un执行单向函数Hr以获得密文屮(Un)。第二服务器的安全存储器将存储屮(Un)、Rn对。
[0065]即使这些数据不得不被破解者从存储器中提取,找到识别符Un的值将是不可能的。
[0066]在认证阶段,第二服务器一旦已经接收来自第一服务器的当前识别符/密码对,就对当前识别符U'执行单向函数H'。因而,它将能够在它的数据库中找到关于这个识别符的安全参数Rn并且计算密文C
[0067]单向函数
[0068]存在若干类型的单向函数。具体的函数称为哈希函数(hashing funct1n),它根据被提供的输入数据计算用于尽管不完整、但是快速识别原始数据的图案。哈希函数通常用于实现加密数据和协议的结构。
[0069]出于安全原因,密码不应该以明文的形式存储在机器中。因而仅存储密码哈希的结果。为识别用户,计算机比较原始密码(存储的)的图案和请求的密码的图案。然而,这种工作方式并不完全令人满意。如果两个用户决定使用相同的密码,则哈希结果将会相同。这一错误对于三种方法而言潜在地可用:
[0070]字典破解
[0071]强力破解
[0072]彩虹表破解
[0073]在字典破解期间,一方能够理性地推断两个用户选择的密码相对易于记忆。
[0074]为对抗这类破解,在初始生成图案期间添加随机分量(安全参数R)。这个分量也称为《sel》,其通常不以明文存储。然后密码与安全参数R混合,这一步骤取决于系统而变化。简单的方法是把密码与安全参数R连接起来。如果安全参数R对于两个用户来说不同,则使用相同的密码将获得两个不同的签名。这强有力地降低了通过彩虹表破解的范围,但并未免遭字典或强力破解。
[0075]算法SHA-1 (安全算法哈希(hash) 1: 160比特)和MD5 (更老并且更不可靠的消息摘要算法5,128比特)是频繁使用的哈希函数。标准SHA-2和SHA-3 (224、256、384或512比特)可用于替代SHA-1。
[0076]还存在取决于密钥的哈希函数。这例如是算法HMAC-SHA-1的情况,它在架构HMAC中使用S