要对隐私的数据进行加密并不是那么难:iPhone手机已经能加密大量个人信息,Mac和Windows 8.1的电脑硬盘已经能自动锁定,甚至连Facebook也靠开放共享发了一笔财。但是如果你不知道怎么想出一个安全度高的密码,这些技术还是不能提供足够的保护。
口令和密码一样,但是它比密码更长、更安全。从本质上看,它是个你能记住的加密密钥。一旦你开始关心起自己的隐私想要养成提高电脑安全性的习惯,你会碰到的第一个问题就是创建密码,虽然有密码不一定等于完全安全,但是没有密码你的信息就一定不会安全。
比如,当你给一个硬盘驱动器、U盘或是计算机加密的时候,磁盘加密和口令一样重要。一旦你使用网页浏览器的密码数据库或密码保护功能,你会想要弄一个更强大的主密码来保护这些密码。而如果你想用PGP加密电子邮件,你要用口令来保护私钥。Edward Snowden给Laura Poitras写的第一封邮件里写道:“请确认没有别人复制过你的私人密钥,它的功能可以相当于口令。哪怕你的对手可以在一秒钟里猜一万亿组密码。”
在这片文章中,我将列出一个简单的方法来记住一些容易记住但是非常安全的口令。事实证明,一个人想一个好密码是非常困难的,如果你的对手真的能够在一秒内猜一万亿种,你很有可能在密码上让他钻空子。如果使用完全随机的字符序列可能是非常安全的,但记起来却非常麻烦。而且,说实话很浪费脑力。
但幸运的是,易用性与安全性之间的平衡关系并不是越容易越不安全。有一个办法可以生成既利于人们记忆又几乎不可能被强大的敌人猜到的密码。这个方法被称为Diceware随机密码,这串密码由很简单的数字组成。 你取密码的方式也能不很明智
人们经常从流行文化(一首歌、一部电影或者一本书)中间稍微拆开重组或改变一点点、添加标点符号或是一句话每个字的第一个字母来做密码,这些口令似乎安全度很高、很难猜到,但是不要顾及那些致力于猜口令的人的能力。
加入你的对手找来了所有歌曲的歌词,每个电影、电视剧的脚本,每本有电子书的书籍txt,维基百科每一页的文本,每一种语言版本,试想一下,如果他们把这些作为数据库组合密码,你的密码还能有用吗?
如果你只是想选一个好密码,那你很有可能想出不足以对抗你的敌人的密码,例如“To be or not to be/ THAT is the Question?”我敢保证你不是第一个改动莎士比亚名句做密码的人,攻击你的黑客应该也知道这一点。
原因是莎士比亚的名句缺少“熵值”,你可以把熵值理解为随机性,是密码学的重要概念。事实证明,人是模式化物种,没办法在真正随机的情况下做任何事。即使你不用隐喻而是直接在脑袋里构造一个短语,你的短语还是离随机很远因为语言是可预测的。曾经有个研究做过这方面调查,发现用户无法从真正随机的字词里面选出短句,而会受自然语言中一个可能出现过的词组影响。所以不管用户如何自行选择,这个搭配出来的口令都没你想像的熵值高。你的大脑倾向于继续使用常用成语和语法,尽量地减少随意性。比如,参加调查的人中有非常大的比例会选择用副词和动词搭配,或是把“聚会/节日”和“灌肠”这样会日常生活中会联系在一起的词放在一起。来源于流行文化、你的真实生活或是任何从你脑海中直接蹦出来的口令,比你想象的随机性要弱得多。
# 这有个很有创意的信息加密方式,用0和1传递信息
用Diceware设置一个安全口令
现在你如果意识到自己的旧口令没想象的安全,就来准备学习Diceware技术。
第一步,搞一本Diceware字词表[PDF]的复印本,包含7776个英语单词。拿到以后你会发现每个字符都是五位数字,每一个数字都在1~6之间。下面是截取的一小部分:
24456 eo
24461 ep
24462 epa
24463 epic
24464 epoch
接下来,拿一个六面的骰子,实体的一般骰子,然后随便丢几次,记下数字。你需要连丢五次才能得出你的密码的第一个字。接下来你要做的就是生成信息熵再提取真正随机的、来自自然的东西变成数字。比如你第一次掷骰子出来的第一个数字是2,然后是4、4、6、3,那你看看Diceware字表里对应的短语是“epic”,那就是你的口令开头。然后又重复掷骰子,如果你害怕国家安全局有一天可能要破解你的密码调取你的私人信息,你可以掷出7个字的骰子。
通过Diceware你完成了你的口令设计(比如cap liz donna demon self、bang vivo thread duct knob train)等等毫无逻辑关系的单词组合,想要让自己的密码越强可以多丢几次多设置几个单词。 Diceware口令的安全性又多强?
Diceware密码强度取决于长度如果你在7776个词里面只随机丢出了一个,那么黑客第一次尝试破解就猜出的概率是1/7776,猜出你的密码所需尝试次数最少1次最多7776次,平均3888次。
但是如果你的密码有两个词,相应的口令字表词数也要成倍增加。猜对第一个词的概率还是1/7776,但第二个词的猜测还需要从7776个中间一个个试,并且黑客在猜出完整密码之前不能确定自己猜的第一个词是不是正确的。这意味着,他尝试的次数最少是77762次,最多达到60466176。平均下来,一个2个词的口令有可能在3千万次尝试后被破解。而相应的,如果掷骰子25次,得出5位词的口令,那么就有77765种待选口令,平均需要尝试14(后面18个0)次才能破解出来。
一个密码(或是加密密钥等等保护信息的密码)的不确定性由熵值衡量,你的密码强度可以由熵值包含多少位数来确定,Diceware字表里每一个词都含12.92位熵值,所以如果你选择7个词,那你的口令安全性就是90.5熵值。换句话说,如果黑客知道你用的是7个词的Diceware随机密码,他们会从Diceware字表里随机挑选7个词出来组合尝试破解密码,他们一次性成功的几率是1/1,719,070,799,748,422,591,028,658,176。就算每秒能试一万亿个密码,平均下来也需要花两千七百万年破解这个密码。
看起来这个密码一定要很难记才会这么难猜,但实际上一个类似“bolt vat frisky fob land hazy rigid”的密码组合并不南极,大多数人都能记住。比起“d07;oj7MgLz’%v”这样的随机密码,7位词的Diceware密码不仅安全性高,而且明显也更好记。
相对的,一个5位词口令可能平均只需要6个月就能被破解,而6位需要3505年,尝的频率为每秒一万亿个。请牢记摩尔定律,计算机正变得越来越强大,可能不久以后每秒一万次的速度就会变成龟速,所以还是需要给你的安全口令多留许多空间。
有了这样一个系统,你完全不用担心选出来这个密码是不是很大众化,甚至字表中词的位数也没有多少影响,2个字母的单词和6个字母组成的单词安全性是一样的。唯一有影响的就是单词的多少,在这个字表里的每个单词都是独一无二的。用Diceware字表设的密码被猜中的概率比你用一些现存事实设的密码要小得多,有些甚至永远都不会被人猜中。 我是不是非用真实的骰子不可?
这个说来话长,但长话短说的答案是:使用实质存在的骰子可以保证不会有一丝差错,但是这个过程又费时间又无聊,一般来说用电脑生成的随机5位数字已经够用了。
不过遗憾的是,没有很贴心的帮助生成Diceware口令的软件,只有GitHub上有各种Diceware的命令行指令供高级用户查看。 怎样记住你的口令
你生成了密码的下一步就是把它记住。
我(原作者)建议你把新密码写在纸上,随身带着它,直到你不再需要为止。每次输入密码的时候都先试试能不能靠记忆把它打出来,不过如果记不住可以看看纸条。如果你一天打它几次,那你应该不到两三天就能把它记住不再需要纸条,这时你就要把它销毁掉。输入密码时要间隔重复的办法巩固记忆。 现在你知道了口令,接下来是不需要用的情况
Diceware密码在给电脑某些磁盘、硬盘驱动器、PGP秘钥或密码库解密方面很有用,但你在登陆网站或是其他网上的东西时没有必要用这么高端的加密方式。因为你的高熵值密码获得的利益很少,黑客不会在服务器与网络通信时还以每秒1万亿次的速度猜密码。在某些情况下,黑客会通过远程服务器直接在你输入密码并发送的同时获取你的密码,不管你的密码是强还是弱。
在登录到网站或其他服务器的时候用密码数据库登,我个人比较喜欢KeePassX,因为免费、开源、多平台而且信息也不储存在云端。然后把所有密码放在里面,再用Diceware的方法生成密码锁住。每次登录网站时都用密码生成器随机生成并储存不同的密码。 我们如何用Diceware保护资源
The Intercept运行的是SecureDrop服务器,它是一个开源的匿名信息提交系统,在获取、提交匿名资源时更简单、安全。
一旦有新资源访问SecureDrop网站,他们都会拥有7个随机单词组成的代名,提交完信息和文件之后,还能用这个代名重新登录进来查看资源反馈。
在这种模式下,代名扮演着资源的加密口令角色,并且是以Diceware随机生成的,而且还有随机数字加密生成器,不需要骰子。SecureDrop的字典里只有6800字词(开发者从原字表中删除了一些粗俗无礼的短语),于是每个词包含的熵值大概变成了12.73。不过这个强度也足以让任何人轻而易举地猜中哪个资源对应的代名,除非他们有大量计算资源和几百万年的时间。
这些简单、随机的口令能像保护间谍一样地保护好你的笔记本电脑。不过很遗憾,我们生活在一个普通市民的信息都需要保护的世界里,幸好有Diceware系统能够让我们免受CIA的烦扰。