0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何去系统地统计并发现哪些密码是出现频率很高的弱密码呢?

电子工程师 来源:lq 2019-01-22 16:13 次阅读

登入微信需要密码,打开邮箱需要密码,手机支付需要密码⋯,现代人生活离不开密码,但你的密码安全吗?你知道使用你知道使用和很多人一样的密码,不仅仅损害使用者个人的安全性,甚至还会被用于攻击其他用户吗?

即便一般网站会设计规则禁止用户设置诸如 123456 或 qwerty 之类非常容易识别的弱密码,但是对于更“时尚”的弱密码就无能为力了。比如随着《神奇女侠》的热映,流行的密码可能也随之从 superman 变成 wonderwoman。

一群以色列研究人员 ,近日在一场密码学大咖云集的研讨会RWC 2019 上,提出一种创新方案,使用一种增强了抗干扰能力的多方计算协议,可以在不损害用户密码隐私性的前提下,系统地发现并统计出现的频率很高的弱密码,且统计结果不会被攻击者轻易操纵和篡改。这种方案可用于帮助用户更好地选择自己的密码,降低受到攻击的风险。

如何统计哪些密码最常用?

在这篇论文How to (not) Share a Password: Privacy preserving protocols for finding heavy hitters with adversarial behavior中,Moni Naor、Benny Pinkas、Eyal Ronen 等人指出,自从1961年麻省理工学院( MIT )在 CTSS 共享操作系统中使用密码以来,现代意义上的密码已经有了半个多世纪的历史。如今随着移动互联网和物联网的蓬勃发展,密码已经渗透到了我们生活中的各个角落。但是很多现实中的例子反复向我们证明:密码并不意味着绝对安全,即使密码是由用户自己选取的。

一方面,密码保证安全的一个前提条件是密码本身必须是随机选取的,即密码含有比较高的信息熵。但是这样的强密码在提供很好的安全性也为记忆带来了很大负担,特别是在现代人需要记住很多个不同账户的密码的情况下。

于是对于那些隔几个月才登录一次的账号,常常会出现登录前必须先重置已经忘记的密码的情况。为了方便起见,很多人实际上会选择比较容易记忆、同时信息熵也较低的密码。

另一方面,由生日或者连续数字/字母构成的弱密码往往非常容易被猜到,并不能起到应有的保护作用。而且流行的弱密码不仅仅损害使用者个人的安全性,甚至还会被用于攻击其他用户。

比如某个网站泄露出明文存储的用户密码以后,黑客就可以选择里面出现频率比较高的密码组成字典,用于攻击其他网站的用户。因为不同网站用户选择密码的分布一般是大致相似的,于是一个网站的用户中流行的密码被另一个网站用户使用的概率也是显著高于随机选取的密码的,黑客便可借此极大地提高攻击的效率。

为了避免弱密码带来的安全性隐患,很多系统会选择禁止使用弱密码,为此需要维护一个常用弱密码的黑名单。这个黑名单包括一些常见的模式和通过以往的密码泄露事件已知的流行密码。

那么问题来了——流行密码往往是随着时代不断变化的,应该如何去系统地统计并发现哪些密码是出现频率很高的弱密码呢?直接统计密码明文显然不是一个好主意,在安全性上有很大的漏洞;即使是统计密码的(未加盐的)哈希值的频率也会带来很多安全上的隐患。Eyal Ronen 所做的报告中就提出了一个解决上述问题的方案。

一位信息泄漏与The Password Game

要统计常见密码必须满足的第一条要求,就是不要对用户造成伤害,或者尽可能减少对用户的伤害。

从攻击者的角度来看,一个公开的常用密码黑名单,实际上就是一个攻击者梦寐以求的字典,可以用来帮助其猜测用户的密码。此外公开的密码黑名单也可能成为系统被攻击的漏洞。

另一方面,从用户的角度来说,虽然统计用户的密码必然要求记录有关用户密码的信息,但是如果只泄漏密码中的一位的话,其实对于安全性的影响是微乎其微的——因为攻击者只需要多花一点时间就可以猜到这一位信息。

我们可以通过如下猜测密码的博弈游戏来说明:攻击者 A 希望攻击一个设备 D,为此 A 需要选定一个长度为 L 的猜测密码列表,若 D 的密码在列表 L 里,则 A 获得胜利。

在这个博弈中,如果A 在有一位信息泄漏的情况下可以用一个长度为 L 的列表以概率 delta获胜,则另一个攻击者 A’ 只需要选择一个长度为 2L的列表即可在没有泄漏的条件下实现以相同的概率 delta获胜。更进一步,如果使用了具有差分隐私保护的算法,则 A’ 不需将列表长度加倍也可以保持相似的胜率(对于实现了 eps-DP 的差分隐私方案,A’ 使用长度为 L 的列表即可达到不小于 的成功率)。

在计算理论中,寻找常见密码实际上就是解决一个寻找重元素(heavy hitter)的问题,即从一列输入元素中发现出现频率大于一定比例的元素。在这个过程中,我们希望每个用户的密码泄漏的信息不能超过一个比特,以保证用户的隐私性和安全性。另外我们还希望false negative 的概率是可忽略的,即几乎不可能错过任何一个弱密码;对于false positive可以适当放松,但是也希望其概率尽可能小,以减少正常的密码被错误拒绝的概率。

类似的问题之前已经被研究过,不过通常需要一个一定程度上可信的第三方,或者是若干个没有串通的第三方。但是在现实中这些假设都过于理想化了。现实中除了缺乏一个可信的第三方去进行统计以外,还可能出现攻击者试图阻止统计者找到一个弱密码黑名单的情况。为此我们也需要考虑如何避免统计结果被操纵或篡改。

使用传统的多方计算技术可以部分地解决上述问题,即实现对于用户的隐私的保护,但是抵抗恶意干扰的能力比较弱。所以 Eyal Ronen 等人在这个报告里讲到的方案,实际上使用了一种增强了抗干扰能力的两方计算协议。该协议实现的正确性如下:

一个半诚实的方案

这个方案源自于 【BNSTS17】 这篇论文的工作。实现的方式是选择一个输出长度为l 比特的哈希函数,可以把任意长度的密码给映射到长度为 l 的二进制串上,且出现碰撞的概率较低。

然后向每个用户发送一个随机数 r,要求用户返回 r 和 H(password)的内积 v(如下图所示)。收到 v 以后,统计者(服务器)再对所有可能的 x 依次更新 T[x] 的值(T是一个长度为 2^l 的向量)。

通过简单的计算可以验证,如果 x 作为密码的哈希值出现的频率高,则相应的T[x]的值也会很大。因为T[x] 本质上是所有的 x 加上一个随机的噪音。因此只需统计出现频率超过一定阈值的 T[x] 即可得到一个关于常见密码的哈希值的列表。如下图所示。

但是这种方案需要用户一侧比较诚实地配合才行。否则如果用户刻意选择相反的结果,则可以减少相应的密码被统计到的次数,即变相地实现了隐藏一个常见密码的目的。

一个基于平方剩余的方案

对于两个大素数的乘积 N=pq,很难判断 Jacobi Symbol 为 1 的那些数是否是关于 N 的平方剩余。利用这个性质,我们可以对于每个 v 计算如下的 e,并以此为依据更新 T[v]。 此后的步骤与上一个方案相似。

需要指出的是,上述方案在攻击者知道一个非平方剩余的时候并不安全。但是好在攻击者很难以比随机猜测更好的方法找到一个非平方剩余,且上述方案的安全性可以归约到这个难以找到 nQR 的假设。

作为一个完整的方案,我们还需要用户一方提供一个零知识证明,证明内积运算的结果是正确的。这个零知识证明可以通过 Fiat-Shamir heuristic 改造成非交互式的(参考 Bulletproof,zk-STARK 等)。

关于何时把一个密码识别为“常用密码”的阈值,可以参考下图。

基于平方剩余的方案在实现的性能方面:用户侧的计算需要15秒,且可以在后台运算;服务器侧需要为每个用户花 0.5 秒左右的时间进行验证。

同样的方案还可以用于统计其他场景中的 heavy hitter 问题,例如洋葱网络、设备的 PIN 和 pattern、大规模服务提供商的动态密码分布等。

总结

通过这篇研究可以思考的一个问题是,对于这个统计常用密码的问题,我们是否真的需要(基于计算复杂性的)密码学?

如果用户都是善意的,实际上密码学的构造并不是必须的。但是如果有恶意用户试图操纵统计结果,则不可避免地要用到一些密码学构造。

另外,关于攻击者是否可以利用以哈希值存储的密码黑名单列表,仍是一个有待研究的问题——尽管现在看来这似乎并不可行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 密码
    +关注

    关注

    8

    文章

    185

    浏览量

    30266
  • 计算
    +关注

    关注

    2

    文章

    431

    浏览量

    38481

原文标题:研究人员提出创新方案,可以算出你的密码是否容易被黑客攻破

文章出处:【微信号:deeptechchina,微信公众号:deeptechchina】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于密码登录系统的问题

    前几天看到论坛上有个关于用labview编写的密码登录系统,还是一篇毕业设计吧。于是下载下来看了看,无奈本人新手,触过labview才一个月,有些地方不是很明白。好吧,现在把问题抛出来,请论坛里面
    发表于 12-26 23:21

    关于labview的密码问题

    密码登录系统中,输入密码时,怎么设置成不出现明码,只出现“*****”的形状
    发表于 05-12 21:15

    win7系统无法关闭密码保护共享怎么办

    打开win7共享设置的时候却还是发现密码保护的共享依然是开启的,这是什么情况?为什么无法关闭密码保护共享?其实这是是由于Guest用户导
    发表于 05-26 16:03

    请问怎样设计电子密码锁?

    为什么要设计电子密码锁?基于Max+Plus II和VHDL的电子密码锁如何设计?
    发表于 04-28 06:12

    如何使用几种公开地国产密码算法

    国产密码算法主要有哪几种?如何使用几种公开地国产密码算法
    发表于 11-09 08:02

    怎样解决嵌入式arm开发板ssh提示密码过期无法登录的问题

    嵌入式arm开发板ssh提示密码过期无法登录的原因是什么?怎样解决嵌入式arm开发板ssh提示密码过期无法登录的问题
    发表于 12-27 07:54

    怎样利用矩阵键盘制作一种密码

    怎样利用矩阵键盘制作一种密码?利用矩阵键盘制作密码锁有何优势?
    发表于 01-20 06:31

    怎样设计一种基于单片机的四位密码

    怎样设计一种基于单片机的四位密码?其程序代码该怎样实现
    发表于 01-21 06:32

    电子密码锁设计原理及实验

    根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声
    发表于 01-08 09:00 273次下载

    基于FPGA的密码传输系统设计

    本文详细阐述了密码传输系统设计的方案及实现,它能较好的满足密码传输系统体积小,开发周期短的要求,而且具有抗干扰能力强的特点。本文对密码传输
    发表于 08-09 15:23 32次下载

    如何在忘记密码时怎么登录Windows XP系统

    如何在忘记密码时怎么登录Windows XP系统 在忘记密码密码过期时,如果不重设密码,将无法再登录到计算机中。本文包含几种可用于
    发表于 02-12 08:08 4676次阅读

    密码技术,密码技术原理是什么?

    密码技术,密码技术原理是什么? 密码技术是一个科学研究领域。在这个领域中,密码员致力于设计和开发加密系统,即能保护敏感数
    发表于 03-20 15:39 1172次阅读

    若忘记了Linux系统的root密码,该怎么办?

    很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?
    的头像 发表于 10-15 16:49 1.2w次阅读

    密码会在安防系统中消失吗?

    一是密码的使用仍将继续。一方面弱密码事件,让行业人士开始重视起更加严格的密码设置规则,确保账户的安全,密码的作用在当下并未改变;
    的头像 发表于 09-26 15:29 2009次阅读

    不知道嵌入式Linux系统下的root密码,修改新密码并进入系统

    今天一朋友问不知道root 密码怎么修改。他这个系统是海思平台的嵌入式Linux系统。然后尝试了修改并进入系统。嵌入式Linux中的root 密码
    发表于 11-01 17:59 14次下载
    不知道嵌入式Linux<b class='flag-5'>系统</b>下的root<b class='flag-5'>密码</b>,修改新<b class='flag-5'>密码</b>并进入<b class='flag-5'>系统</b>