System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于信息安全,涉及口令安全认证领域,具体是一种可验证的口令泄露查询方法。
技术介绍
1、身份认证是确保信息系统安全的第一道防线,口令是应用最为广泛的身份认证方法。在基于口令的身份认证中,服务器需要存储所有注册用户的口令。按照标准组织的最新建议,口令以加盐哈希的形式存储在口令文件中。但是,近年来基于机器学习的破解算法和gpu、fpga等硬件的设计都取得了巨大进展,这导致一旦服务器存储的口令文件被泄露,攻击者有能力破解出其中绝大多数口令,并利用破解出的口令来猜测用户其他账户的口令,称为凭据填充攻击(credential stuffing attacks)。2023年dbir报告显示,在1287起数据泄露事件中,86%可归因于口令凭据被泄露。
2、为了抵抗凭据填充攻击,研究人员提出了一种口令泄露检测-泄露凭据检测(compromised credential checking,c3)服务,如have i been pwned(hibp)。以hibp服务为例,hibp服务器从公开渠道收集泄露的口令,对这些泄露口令进行sha1哈希,并按照哈希值的前20比特将所有泄露口令划分成一个个的小桶。每一个桶中存储的是前20比特哈希值相同的哈希口令。当用户想要检查自己的口令是否泄露时,对自己的口令进行sha1哈希,并将哈希值的前20比特发送给hibp服务器。hibp服务器根据这20比特找到对应的那个桶,并将这个桶发送给用户。最后,用户检查自己的口令的完整sha1哈希是否出现在这个桶中。如果桶中某一个条目恰好等于自己口令的哈希值,
3、但是,这些c3服务总是假设c3服务器是完全可信的。它们忽视了一个重要的安全属性,即查询结果的可验证性。c3服务器有动机返回不可靠的结果,比如:替利益关联服务商掩盖其遭攻击泄露数据的事实。此外,如果c3服务器对那些自己已经搜集/破解出的泄露口令所对应的查询请求返回错误的查询结果,则用户很可能会继续使用与此泄漏口令相关联的帐户。这导致c3服务器能够继续使用泄露的口令登录受害者的帐户。
4、因此,现有c3服务的查询结果不可靠,在这种情况下,为了确保查询结果是可靠的,应该研发一种口令泄露查询方法,使得用户能够验证查询结果的正确性。
技术实现思路
1、针对现有技术的不足,本专利技术拟解决的技术问题是,提供一种可验证的口令泄露查询方法。
2、本专利技术解决所述技术问题的技术方案是,提供一种可验证的口令泄露查询方法,其特征在于,该方法包括以下步骤:
3、步骤1、初始化阶段:初始化一组公共参数以及oprf函数、签名算法、验签算法和nizk算法;
4、群的元素为1,2,…,p-1,其中p为素数;循环群g是群的阶为素数q的子群,q的长度为λ≥512比特且q能整除p-1;g是循环群g的一个生成元;
5、四个哈希函数:hi:{0,1}*→{0,1}λ(i=0,2,3)和h1:{0,1}*→g;
6、l表示桶标识符的比特长度,本实施例中l=20;
7、使用的oprf函数为fk(x)=h1(x)k,oprf函数中使用的密钥为
8、使用的签名算法为σ←sign(sk,m),签名算法中使用的密钥为使用的验签算法为1/0←vrf(pk,m,σ),验签算法中使用的密钥为pk←gsk;m是被签名的消息;
9、使用的nizk算法为π←nizk(a,b,c,d),用于证明存在某个指数k,使得b←ak且d←ck;
10、数据拥有者、在线服务器和用户均能够获取初始化后的公共参数并知晓oprf函数、签名算法、验签算法以及nizk算法;数据拥有者存储密钥k、sk和pk;在线服务器存储密钥k和pk,用户存储密钥k=gk和pk;
11、步骤2、上传阶段:数据拥有者和在线服务器交互,数据拥有者收集泄露的口令条目d并对其进行加密、签名;然后上传至在线服务器,在线服务器对每一个桶的签名进行验签,验证失败则丢弃该桶,验证成功则存储该桶及其签名;
12、步骤3、查询阶段:用户与在线服务器交互,用户针对自己的用户名-口令(u,pw)向在线服务器发送查询请求,并根据在线服务器返回的消息判断自己的用户名-口令出现在已收集的泄露的口令条目d中,进而得到自己的用户名-口令是否泄露。
13、与现有技术相比,本专利技术的有益效果在于:
14、(1)本专利技术在双服务器设置下,实现了查询结果的可验证性,保证了查询结果的可靠性。现有的c3服务都假设c3服务器是完全可信的,而本专利技术能抵抗不完全可信的服务器。本专利技术通过在双服务器设置中使用数字签名和零知识证明(non-interactive zero-knowledge,nizk)算法来实现查询结果的可验证性。即使攻击者能窃听、篡改信道中传输的消息,能腐化数据拥有者或者在线服务器,也无法修改查询结果。用户能够验证在线服务器发送的桶的正确性与验证性,能够验证在线服务器在对用户的响应中使用的密钥和泄露口令的加密中使用的密钥是否一致,通过与服务器的交互,知道查询的口令是否泄露。
15、(2)本专利技术将原来的单个服务器改成了两个服务器,即数据拥有者和在线服务器。通过双服务器设置,准确判断c3服务器是否诚实地响应了用户的查询请求并忠实地更新了泄露的口令条目。
16、在单服务器场景下,用户无论如何也无法获取到可靠的查询结果,因为用户不能判断服务器是否诚实,也就不能判断查询结果是否可靠。
17、在双服务器场景下,假设一个服务器诚实,另一个服务器不诚实,用户能在诚实的那个服务器的帮助下判断查询结果是否可靠。这里有两点需要注意:第一,用户不需要知道两个服务器中哪个是诚实的。第二,如果这两个服务器都不诚实,那双服务器方案等价于单服务器方案。因为查询结果的可靠性有一个隐含假设,即攻击者不能同时腐化这两个服务器。这个隐含假设是现实的。因为可以通过在两个服务器上部署不同的操作系统、堆栈、安全机制等来保证分布式安全。
18、在小型企业环境,双服务器设置比单服务器设置更合适。通常,小型企业没有自己的专用服务器,将其收集的泄露凭据外包给云。在双服务器设置下,企业作为数据拥有者,云作为在线服务器,两者协同合作、相互监督,向用户提供泄露凭据检测服务。
19、(3)本专利技术可以与tls结合,在tls失效时仍然安全。当公钥基础设施(public keyinfrastructure,pki)发生故障,即tls失效时,攻击者有能力窃听、篡改信道中传输的消息。在这种情况下,本专利技术仍然具有安全性:用户要么获得一个正确的查询结果,要么检测到篡改并安全地终止协议。
20、(4)本专利技术降低了对oprf(oblivious pseudo-random function,不经意伪随机函数)的依赖性。在现有的基于oprf的c3服务中,oprf密钥是口令安全性的唯一保证。换言之,获得oprf密钥的攻击者本文档来自技高网...
【技术保护点】
1.一种可验证的口令泄露查询方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤1中,循环群G为有限域群或椭圆曲线群。
3.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤2的具体步骤如下:
4.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤2中,数据拥有者将目前收集到的所有的泄露的口令条目D均上传至在线服务器后,继续进行泄露的口令条目的收集;当数据拥有者收集到新的泄露的口令条目Dnew时,先按照步骤S2.1对Dnew中的每一个元素计算桶标识符和OPRF值,再将OPRF值加入对应的桶中;然后对具有新加入口令条目的桶按照步骤S2.2计算哈希值和签名,对没有新加入口令条目的桶无需重新计算;最后按步骤S2.3把具有新加入口令条目的桶及其签名发送给在线服务器,在线服务器对每一个桶的签名进行验签,验证失败则丢弃该桶,验证成功则更新该桶及其签名。
5.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤3的具体步骤如下:
【技术特征摘要】
1.一种可验证的口令泄露查询方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤1中,循环群g为有限域群或椭圆曲线群。
3.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤2的具体步骤如下:
4.根据权利要求1所述的可验证的口令泄露查询方法,其特征在于,步骤2中,数据拥有者将目前收集到的所有的泄露的口令条目d均上传至在线服务器后,继续进行泄露的口令条目的收集;当数据拥有者收集...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。