摘要 |
系统、方法和软件采用零知识密码(ZKP)协议来使用用户容易记住的低级密码提供强验证。我们描述的协议允许多服务器校验密码而不提供任何单一服务器、客户机或具有能力的网络攻击者脱机确认对密码的猜测。另外的改进包括消除对现有安全信道和客户机存储的密码或证书的依赖性,增加性能而不引入新的密码假定,以及更好地管理密码输入中的错误。为了注册,用户选择密码并处理由多个共享部分组成的主密钥K。主密钥可用于多种目的,如解密用户的私钥或其他敏感数据。选择一组随机值{y<SUB>1</SUB>,y<SUB>2</SUB>,…y<SUB>n</SUB>},在适当的有限群中按K<SUB>i</SUB>=P<SUP>yi</SUP>计算每个共享部分。将每个y<SUB>i</SUB>值分配到N个服务器中的第i<SUP>th</SUP>个。为了验证,客户机选择随机安全x,以及用每个服务器,发送P<SUP>x</SUP>,检索m<SUB>i</SUB>=(P<SUP>x</SUP>)<SUP>yi</SUP>并计算K<SUB>i</SUB>=m<SUB>i</SUB><SUP>1/x</SUP>。客户机重新构造K,在K上执行确认测试,并使用K解密私有数字签名密钥U。当确认测试成功时,基于在验证尝试中由相同用户误输入的错误密码,客户机用包含Px和由客户机发送的任何其他值的U签名消息。每个服务器核验签名消息以验证用户以及原谅用户某些合理计数的错误。通过有效消息、错误等等的知识,服务器微调无效访问尝试的统计。没有单一服务器知道K、P或任何一个K<SUB>i</SUB>共享部分,以及没有服务器接收足够的信息来发动对K或P的字典攻击。用非常简单的模型保持密码安全性,不要求客户机或任一服务器间的现有安全或服务器验证信道。该模型进一步防止人们必须验证服务器的系统中固有的风险,但该模型不用验证服务器。受小密码保护的数据以及没有其他密钥仍然安全即使面对危及两个或多个协作验证服务器的任何一个,但不是全部的对手。 |