【通俗的小科普】密码安全


created: 2022-12-24 09:22:45
updated: 2022-12-24 09:22:45
tags:

  • Note/Article

这是一个许多人关注的问题,但也存在着太多的误区。本篇尝试从非常通俗的角度去讲述这个问题。

提醒:比喻都是蹩脚的,只是辅助理解,难免有所偏差。你杠就你对,你是大佬。

建立场景

你在某旅馆长租一间屋子,这个屋子你会视作私人区域,不希望别人进来,哪怕你不在这边的时候。而你自己过来和前台说一下约定好的暗号,他们就帮你把门打开。这个暗号就是密码。

你在世界各地都有这样长租的房间,就像你在很多网站都注册有账户一样。这就有了大量的密码,为了方便记忆,你都用了相同的密码。

这是不是很符合某些人的使用习惯?那接下来我们来研究这里面有哪些不安全。

安全隐患

自己

说梦话说出去了,自己写在小本本上被人看去了……很容易理解。

中途

跟前台说密码的时候被人偷听到了。

对方

前台并不在乎你的密码安全,就直接登记在 Excel 中,他离开的时候也不锁电脑。他在 U 盘里保存了一份,然后把 U 盘弄丢了。

简单

有个人知道你的名字,但不知道密码,于是猜猜看吧:123456,嘿,猜对了!或者一次没猜对,多试几次,比如生日啊,身份证号啊,电话号啊……

对策

  • 密码强度高:密码不能太简单,要是非常复杂,比如这样别人才不容易猜到。
  • 输入环境安全:和前台讲密码的时候要保证没人偷听,电脑上不乱装软件,不在不安全的环境下输入密码,比如别人的电脑。

你说,我看懂了前面的隐患,酒店方面不在意我的密码太可怕了,这完全不是我能控制的。这时候就得努力降低损失,不能别人知道了你的密码就可以打开你在各个酒店的房间,一下子所有隐私都没了,所以:

  • 一站一码:在每个酒店设定的暗号都不相同。

懂了懂了!但是做不到。你看啊,要求密码很复杂,还各不相同,我记不住啊!那我得拿个小本子写下来,然后输入的时候照着抄,呜呜呜,复杂的密码真的不好抄,每次面对酒店前台照着本子一个字一个字念暗号太痛苦了。而且万一本子丢了就……

  • 使用管理器:要是把密码放在保险柜里,就安全多了。如果这个保险柜还能快速找到需要的暗号并讲给前台,就更完美了。

一些解释

密码验证

直觉上,酒店保存好你们之间的暗号,然后你来了,讲暗号,他看看和保存的是否一样,一样就让你进去。但这样你会非常担心他没保管好密码,丢了之后后果很严重。

实际上,酒店应该加密存储。诶呀,这个怎么通俗解释呢。

明文存储

比如你的密码是一个苹果。酒店也保存一个苹果,见面都掏出苹果来一看,嘿,是同一种水果,行,密码验证通过,你进去吧。这叫做明文保存,是啥就是啥嘛。

加密存储

你的密码是一个苹果,酒店也保存一个苹果太危险了。所以规定了一个加工工序:不管你的密码是什么,一律捣碎做成酱,然后看味道一样不一样。所以酒店保存的是一罐苹果酱,你来了把你的密码也做成酱,前台用手指分别蘸了尝尝味道,一样!你进去吧。这叫加密存储。而且是不可逆加密,就是从苹果可以变成苹果酱,但是没法从苹果酱还原出苹果。

加盐

上面的方法虽然不可以还原,但还是可以从经验判断,毕竟苹果酱和橘子酱直接看看也能发现明显的不同。所以酒店决定改良工艺……不管你的密码是什么,一律捣碎做酱,同时加入大量没有味道的可食用黑色色素。诶,这就没法轻易区分了。这种掺入其他东西再加密的方法叫做“加盐”。

二次验证

诶呀,好复杂,好麻烦,但是酒店怎么保护和存储密码他也不公开,还是没法信任。酒店说,哎呀,我很努力了,但是用户有没有泄露密码我也不知道,用户的东西还挺贵重的,我得用心保管……这怎么办呢?

你报出来正确的暗号还不行,酒店前台还要给你手机上发一个随机的暗号,你再说出来才能证明你是你。

动态密码嘛,大家都熟悉的。

静态密码证明你确实知道密码(有权限进入),动态密码证明你确实是那个应该知道密码的人(你是你)。

这个方法虽然麻烦,但确实明显的提升了安全度,所以应该尽量开启。

你说有的不是发短信,他给了我一个 U 盘,插上就能验证了。诶,你理解成古代的把玉佩一摔两半,各执半边。

还有的是给了个可以显示数字的小东西,每次输入上面的数字。就是他掏出一块表,随便拧一个时间,然后给你一块和他那个相同时间的表。这两块表时间是一样的,但不是标准时间。回头你报出你手里的时间,他看看怀里的表,对的上。别人可不知道你们这表和标准时间偏差多少。

……

密码管理器

就是个保险柜。

密码很复杂,你自己记不住,写下来,放保险柜里。现在你不用担心自己说梦话说出去了。

你只要记住一个密码,就是保险柜的密码就好了。

诶,你说那我要是说梦话把保险柜的密码说出去怎么办呢?是个问题,密码和保险柜要分开,保证密码复杂速度,密码要经常更换。这已经是唯一的弱点了,还好还好。

而一个误区是:好多人在纠结,哎呀,这个保险柜放在银行啥的会不会不安全(密码管理器的数据放在云端、网盘会不会不安全)。

保险柜就是别人无法轻易打开的东东,你觉得对方会对一个不知道里面有多高价值的保险柜大费手脚么?

相对的安全

如果有一个非常厉害的品鉴师,可以通过加了大量黑色素的苹果酱猜出密码的本体是个苹果怎么办?

如果对方就是铁了心的要撬开你的保险柜怎么办?

这些可能都是有的,但都是小概率事件,因为显然投入产出比很不划算,花几十年培养一个品鉴师,就为了偷走你藏起来的三块六毛钱的私房钱?从青壮年开始用锤子铁钎敲打,一直坚持到白发斑斑,就为了打开你的保险柜,说不定你里面只放了一首年轻时青涩的诗?

相比之下,其他细节的危险更高,所以我们应该优先把那些问题解决好。而现在的加密手段,用现在的计算机进行破解,需要的时间都要到地老天荒。

当然,这些都是建立在培养一个品鉴师需要的时间足够长,打开一个保险柜需要的时间足够长,长到让这件事情变得没有意义的基础上。

如果未来造出了能快速品鉴的机器,或者快速打开保险柜的设备,那就是另外的问题了。所以安全是相对的。

那怎么办呀?再说一遍:这些危机还很远,而其他细节上的风险就在眼前,我们应该先担忧哪一个呢?

最有趣儿的是——好些担心这担心那的朋友,竟连保险柜都没用。

密码管理器的选择

大牌子,用的人多的。比如:

  • 1Password
  • Lastpass
  • Keepass
  • Enpass
  • Bitwarden

这样更安全一些,更稳定一些,遇到问题可以问的人更多一些。

要注意:

  • 数据支持导入导出,否则以后想更换很麻烦
  • 妥善保管好自己的主密码,这个丢了什么都白扯了,自己的保险柜自己都打不开了。

关于收费,看自己喜好,如果追求免费,用 Keepass 系列的工具就好,或者现在也有一些自搭建方案。但是别因为想要免费而用某些非常小众的工具。

关于云端存储,基本不用担心安全问题,但是要仔细研究自己能不能轻松拿回自己的数据(导出成通用格式),可别数据放在他那里他就不给你了。


如果你看懂了,那,请小老鼠喝杯咖啡好不好呢?老鼠爱发电

2 个赞

现在浏览器也提供「保险柜」功能,比如 edge,这类服务的安全性如何

有一些是本地明文存储,即:他帮你记在了本子上。

2 个赞

相对安全的解决方案:
keepass,
①双备份(1.本地备份 2.云端备份,坚果云,google drive还有其它可webdav访问的盘)
②然后密码设定相对复杂的15位大小写混数字符号(不建议除“”以外的任何符号,因为大多数网站允许“”但不允许"+““\”“、””。"等英文特殊符号及中文标点,[设置成英文逗号似乎也行])
③最后keepass的数据库双重加密,弄个仅存在于u盘上的密钥(当然还是要有备份)同时顺手给密钥改个名字如“data.part1”然后往u盘里面掺入一些奇怪文件(从某个程序如qq的安装目录里面随便拷点就好)
④最关键的就是自己不要忘记密码……

前段时间有个“科技”新闻说有脚本可以直接获取chromium浏览器内核的改版浏览器中储存的密码,原理也是因为明文储存在固定位置……连破解的功夫都省了。不过经此一事我记得好像改进了密码储存的方式?不是直接明文了似乎?(要么就是说来年再改

这问题从浏览器有密码管理器的时候就开始吐槽了吧,一点都不信任它。

其实密码安全大部分是脱库撞库的,真去搞破解的少之又少,一个密码管理器保证账户密码都不相同;你并不知道网站后台是不是明文保存你的密码,不同的密码防止被撞库之后你所有的账户一起被“破解”,保证密码库自己保存(不要使用密码管理器厂商提供的云服务)防止密码管理器的软件商被攻破泄露(最近的lastpass)
基本能保证密码安全了,针对个人的话大部分还是自己把密码给出去的,被破解的太少了 :rofl:

典型误区。如果一个保险柜被人搬走就能轻易打开就不叫保险柜了。

Lastpass 被攻击又不是一次两次了。

换个角度,网盘就更安全么?你的电脑上就确保没有病毒木马么?理论上这个密码保险柜就应该是不怕丢失的。因为一切内容都是加密的,并且是依据主密码加密的。通俗的讲:只要不是同时拿到密码保险柜和你的主密码,对方就没办法拿到里面的数据。

所以虽然 Lastpass 被攻击了那么多次,我依然认为他是安全的,并且一直都在我的推荐列表之中。

而且很多人所谓的自己保存也就是放在网盘上,或者用个自己不特别了解的软件搭建一个同步系统。毕竟不是人人都有 NAS,也不是 NAS 不会中毒。反正隐患处处都是,也并不比厂商少就是了。

但是这种老牌大厂可以确保真的加密,出现重大问题他真的会通知。要是用不知名的小工具,就……不好说吧。

对于密码这种东西,得不到你的密码在我看来,就算你把密码库文件(保险库)拿走我的账户也不会有风险,只要加密安全可靠就行。

至于软件云端提供的同步,单纯是个破解效费比的问题,如果说破解两个未知加密算法的数据库所需要的算力一致,软件商提供的一次破解能获取到足够多的被破解密码;你一个人的密码库只能获取你个人的密码,从效费比上来说,软件商的云端,更容易遭到破解,破解的可能性更大而已。

至于说云同步的安全性,这点我承认大厂会比自己组的同步更安全。但是就算自己的传输不安全,最终泄露的也仅是保险库而不是密码。最终归根到底都是:别人愿不愿意去开这个锁 :rofl: 和开这个锁值不值的问题。

自己保存是降低了别人开锁的欲望(前提是锁还安全)

对哒。

有误区。一个合格的加密算法是必然密码相关的,即每一个数据的细节都是通过密码参与的运算加密的。就好像密码是其中的一块拼图,没有密码就无法解出其中的内容。

每个人的数据都是用他自己的主密码去参与加密的,所以每个数据库都需要独立破解。所以不存在一次破解获得所有的可能性。

并且,理论破解时间都是巨长的,所以即便其中一个,如果不是很倒霉,也是不会被破解的。这里要强调主密码的复杂度和长度很重要,设置个 123456 一下子就被人猜到了,那就啥都没用了。

然后,一个可能是算法有漏洞。但是正常情况,这种软件都会采用非常成熟的加密算法,而不是自己拍脑袋搞一个新的。所以算法有漏洞的可能性非常微小。(但是见过一些个人软件自己搞加密算法……认真讲,这种场景下不鼓励盲目创新。

我们做的是努力提升开这个锁的成本,当成本足够大,自然没人会去开。但是随着技术的发展,这个成本也必然下降,比如如果量子计算机出现,可能很多现在的加密方法的强度就不够了。所以很多问题是相对的,相对于当前情况去讲。

这把锁就是加密的算法,而使用成熟的算法就是安全的保障。

一款密码管理器的加密算法基本都是一致的,根据密码反推,那么从破解算法的方向来说,越大的样本量,由于漏洞导致的算法破解(快速的反推等)几率也就越大,大量泄漏的样本会降低破解算法的难度吧?(不是指单独的密码库的密码)

没有足够的样本或者样本本身复杂度足够(见于自己保存的密码库)被打开的几率是很小的,可以这样理解吧?

不需要顾虑这些,相信这些简单问题基本上都被聪明人在各种反复的攻防中考虑到了。以及现在的破解难度对于普通人来说已经足够用了。

以及算法是公开的,就是让你知道我怎么加密的你也完全弄不开(我拿走一块拼图你还能把拼图拼完整么?大概这个意思,而且这块拼图参与了其中每一个细节)

MD5 (这不是加密算法,是摘要算法)变得不安全了,不是因为算法,而是因为有些人用了更暴力(聪明)的方法。我先算出来 123456 的 MD5,那我看到这个值,就知道对应的原始数据是 123456 了。那如果我把所有的弱密码都算出来,然后拿着去比对,总能得到一些人的密码。这个操作的成本不是很高。要是我建立一个需要人注册的网站,然后拿到他们的密码和对应的 MD5,嘿,成功地让别人为我打工。这样就获得了相当多常用密码的字典。(所以说使用随机高强度密码非常重要)。

但如果做好加盐就是相对安全的。依然是 123456,但是我会在它前面加上:SkrLMr8dBuYLvJSw 变成 SkrLMr8dBuYLvJSw123456 再取 MD5,显然这不再是一个常见密码了,只要“盐”不泄露,就很难反推,就算“盐”泄露,也无法用以前积累的字典来进行比对了。

我想提的其实就是这个,在泄漏的所有密码库中,你不能保证真的有人提供很简单的密码进行加密,类似于MD5加速破解的问题,所以我说到了

加盐本质上有足够多的样本都是有概率被猜或者计算出来的,当然这也是个很小的几率。

说到底提供云同步的密码库,相比于自行同步的,会多一个风险:

同时大规模的样本泄漏导致的加密算法破解难度的降低,所带来的风险 虽然这个风险不大。

还有个服务商停止服务的风险,这都是自有密码库不需要担心的,只要我有客户端,我就能打开 :rofl:

首先成熟的软件应该必然考虑到了这些简单的问题。比如:如果我们每个人的主密码就是自己密码加密时的盐呢?

当密码长度足够之后,需要的样本量是极其巨大的(天文数字),这点样本量根本不够用,甚至微不足道。

所以我一直强调大厂,主流,支持导入导出。这样可以导出,且必然有软件支持导入。

1 个赞

在线服务,服务持续性的预期都不行,腾讯最近砍了挺多在线存储类服务,你不能说它不是大厂,不是主流。Google也砍了照片备份,所有在线存储,无所谓大厂 无所谓主流。其服务持续性的期望都不如自己的硬盘。

所以四年前我把数据全部转为本地存储,自己花钱搞网络访问,服务持续性完全靠自己,不能说持续性就很好,至少可预见性是把握了。

大厂砍服务到底会通知你,给你备份的机会啊。

前阵子刚被大厂又坑一次 :joy:
微软的 Authenticator 可以绑定账号进行云备份
于是我把一堆二次验证都转移到里面去了
结果换新手机时找不到备份,还原失败……

幸好旧手机从碎屏到彻底坏掉之前第一时间开了USB调试
后来是旧手机投屏到电脑,通过开关同步更新了云备份,这才成功转移到新手机

同样也遇到过