开发者在互联网上重建信任的 9 个方法
在认知上来看,互联网十分嘈杂不堪。如同 Peter Steiner 在他著名的讽刺画中所设想的这样一种场面:我们无法知道与我们进行数据交换的是在一条狗还是一个宣称保护我们 money 的银行,数百万的同行都嘲笑这个设想。为了使人们意识到事实情况比这更糟,Edward Snowden(大黑客斯诺登)揭示了NSA(美国国家安全局)可能正在偷窥我们一部分甚至全部的隐私数据的行为,并想尽办法来缓解我们的愤怒,其他的国家和一帮流氓黑客可能十分乐意接受 NSA 的领导。
然而,我们一直不停的将我们大量的数据资料发送到路由器中,乐观的猜想这些数据将全部被处理掉。甚至,当这种乐观遭受打击时,麻烦也是很容易处理的。黑客们可能入侵联邦电脑,偷取我们税务数据的复件,直到他们也开始收取你的税前,这可能都不会有太大的影响。当某个人偷了我的信用卡在办公用品店买了一部 iPad,信用卡公司掩盖掉了这些损失。这使人很容易被像这种虚假的安全感所哄骗。
虽然我们大多数人到目前为止未受到过互联网的混乱和缺乏信任而引起的问题,但是这并不意味着我们可以继续把这个问题抛到脑后。这不仅仅让骗子更大胆,其中更深层次的社会成本高的惊人。最终,我们都必须通过更高的价格承担欺诈的成本。并逐渐侵蚀伤害我们所有人的信任。
我们可能无法挥动魔杖让互联网完美,但我们可以添加特性来改善在互联网上的信任。为此,我们提供以下九个想法来更强的支持保证我们的数据,隐私,通讯安全。完全解决互联网可能是一个崇高的(不可能达到的)目标。但是,要是我们每个人都考虑我们当前的工程中添加安全(措施),我们将会慢慢开始让互联网变得更值得信赖。
向主要服务加入公共密钥
非死book 努力去确保其用户是使用了真实姓名的人。鉴于其努力尝试的力度和规模,以及人的天性,我们不能假定 非死book 已经取得了完全的成功,但是它这样长期的努力去推动在用户账户的姓名中建立信任,这对于互联网的助益是巨大的。
今年最好的消息可能就是 非死book 准备允许其用户通过 非死book 的系统分发他们自己的 PGP 公共密钥。任何想要通过 PGP 向一个人发送电子邮件的人很快就能够去 非死book,下载这个人的公共密钥,并立即开始进行安全的通信了。
还有诸多原因导致这一过程并不能完美的确保安全性,但它比使用更少被防护起来的公共密钥资源库更加安全,在分发正确的公共密钥时也可能比随意选择的一个 Web 页面更加安全。最近我检查过,网上有一些在公共 PG P服务器上冒用我名字的密钥,其实跟我一点关系都没有。相比运行在随机服务器上的志愿者服务,非死book 绝对是一大进步了。
我们扔还是要去担忧虚假账户,以及 非死book 与我们之间连接的安全。不过毫无疑问的是,你所了解的能够持续更新其状态的人,会让建立对密钥的信任变得更加容易起来。
其它的服务将会分发公共密钥吗?他们会开始去构建一个信任的 web 吗?银行和信用联盟可能将会是好的开始。出纳以及联盟分支已经对他们的常客有所了解,而他们可以向公共密钥资源库添加信任。学校和大学了解他们的学生,有时候可能会是另外一个选择。任何事物,如果可以让我们更接近 PGP 的创始人 Phil Zimmerman 所设想的受到信任的 web,对每个人而言都是有益的。
建立更好的随机数字生成器
如果攻击者能够猜想你的密码,这个世界上所有的所有的加密手段都无法帮助你保证密码安全。传统的方法之一是,运用被一个随机数生成器生成的随机密码来阻止这种攻击。但是,我们能相信这个随机数生成器吗?
这不仅仅是一种理论上的攻击。2007年,微软的研究人员们发现了 Dual_EC_DRBG 一个潜在的后门,之后业内便不再像过去那样频繁的使用随机数生成器了。在经过一年的的问题探寻之后,最终在2014年,美国国家标准技术局放弃了支持随机数生成器算法。
发现后门仍然是很困难的,同时,假定优秀的研究员会去研究后门的想法是很危险的。如何能够确定我们的随机数字生成器是安全的呢?例如,可以使用加密安全哈希函数来进一步打乱生成器产生的随机值,用来增加复杂性。
任何加扰过程也会加入额外的数据,这样攻击者就更难控制了--例如,精确的时间,或从Web下载的一些全局数据,如比特币块链顶端的当前哈希值。这可以阻止攻击者控制来自数字生成器的输入。
由于越来越多的算法使用加密,我们需要比以往更多的随机key。确保一种稳定的,无法猜测的技术来生成随机key,将会是构建稳定基石的长久之计。
扩展授信硬件
就硬件层和现代电脑的复杂性而言,假定它们的安全性是不合理的。由于许多潜在的后门,我们的桌面电脑,手机,甚至是打印机,都不能说完全处于我们的掌控之中。
研究团体已经通过创建特别的,只做单一事情的小型电脑进行了长期实验。一些电脑计算一次特别的登录,其它的则计算数字签名。用户的私钥锁定在一个芯片内,这样就很难取出私密数据。由于无法证明数据仍然是安全的,设备可以具备一些合理的防御措施来限制攻击。它可以,例如,具备一种手动开关,这样它就无法暗地里启用了。同时,当开关开启的时候,它也会拒绝进行多个值的签名。
如果每个人都拿着这样小巧的授信设备,人们就可以创建更容易信任的数字签名。尽管存在损耗和妥协的问题,但是它确实增强了互联网上的可信性。
将Merkle树加入到文件系统
数字文件,众所周知,是容易修改的。篡改纸质记录通常会暴露意图,而数字文件则可以随心所欲的修改。更糟糕的是,大多数文件系统并不太关注保护文件记录的修改。高明的黑客不仅仅能修改文件,同时也能修正记录时间,就像文件没有做任何变动一样。
最简单的探测修改的方式是使用加密安全哈希函数,哈希值就像校验和一样很难伪造。任何数据的改动都会在哈希值中体现出来,同时,实际上不可能存在某人修改了文件,但是哈希值却没有变化的情况。
当文件改动后,哈希值序列就会使用Merkle树以哈希的方式组织起来。这样,我们就可以知道文件的历史记录,包括文件是何时修改的。像这样计算哈希值,已经是Git协议的一部分了。我们越是将这些想法更多的融入到通用的文件系统,就越是能保证文件的准确性。系统可能只需要检测变动,而不需要实时修正,但这已经比一无所知要好得多了。
建立更多的块链并向他人推广
对许多政治和社会团体来说,比特币生态系统令人难以琢磨 ,原因是其核心部分的块链(由块区组成,块区是比特币中一种数据的存储形式)经常被覆盖掉。人们热衷探究比特币主要是按照俩个方面来推测,一、比特币是否会推翻中央银行系统,二、比特币是否会创造一个邪恶的,毫无约束的世界。无论上面的答案是什么,很重要的一点是:不能让上面的猜测远离这个事实,即块链能增加网络的稳定性和信任感。
在比特币系统的核心部分,比特币是一个集中的总账单,这个账单以一种十分难以理解的方式记录着交易记录,如果实际上这种记录不可行,就会改变记录方式。总的来看,这个总账单记录了一个人向一个人转移比特币,但是,我们不知道为什么不去将块链用于将他人的资料具体的保存在虚拟世界中。例如,如果一个学生上交一篇文章,他也可以在块链上记录一个文件的哈希算法。如果这篇文章被垃圾邮件回收机制过滤掉了,或是其他什么原因阻拦了,这个学生依然能证明这篇文章在某个特定的时间上交过。
如果有人怀疑这些文章在某个特定的时间存在过,我们有一百万种像这样不同的方法给互联网添加信任,同时一些比特币创业公司正在探索如何将这些方法商业化。尽管比特币集中化存在的无数问题正在暗中破坏我们的世界,同时运营块链需要高额的花费,但是,块链的核心技术对如此多并不单一的货币交易是稳固又十分有用的。
为互联网交互添加链锁
基本的HTTP响应,是互联网上最简单的部分之一,所做的并不仅仅是发送一些字节。HTTPS增加了一个安全层,这个安全层可以阻挡偶然偷听的人,同时还可以阻挡标记变动,但是为所有的交互都添加一个安全层花费是十分巨大的。
一个简单的解决方案是计算所有相互作用间的 Merkle 树。虽然不是所有的 HTTP 流量都能落在一个简单的、容易散列成树形图的命令列表中,但它们的大多数是可以做到的。这个困惑来自于对一些页面的一连串的 Ajax 调用,这些页面可以被简化为对树形结构的微小变化。
建立交联认证的网站群
基本的 Git 仓库都提供了不止一个区域来存储文档。这个可以保存文档并将它们推送到其他库的协议,同时也在监视那些已经被提交的、并经过 SHA-1 哈希计算的所有文档,以免被篡改。
然而为什么要止步于就一个资源库呢?为什么不同其他的资源库互相交换数字签名或者散列值,以此来拓展收到信任的网络呢?
星际文件系统(The Inter Planetary File System)就是对将 Web 转换成一个大型互联文件系统的一个试验。我们需要探索出更多将站点间信息链接起来的方式。网站的策划者们可以一同来尝试构建一个站点间受到信任的 web。
加入同态加密
服务器可以使用进行了加密的同时仍然可用的方式来存储信息。换言之,服务器可以在不损害用户隐私的前提下继续存储用户的数据。在我的《半透明数据库(Translucent Databases)》中,对此有一些简单版本的详细介绍。
在过去几年,出现了一系列针对以加密形式处理数据的理论方法,热闹非凡。数据库可以对大量的个人信息进行整理和查询,而不用实际保有这些信息的非加密版本。它们可以不用去理解底层信息到底是什么就能进行计算。
对数据进行计算而不必看到或读到,这听起来有点像魔术,但我们已经有几个很好的实用解决方案。做的最好的可能是 UNIX 口令文件,它存储一个加密的安全散列密码而不是密码本身。当有人登录时,系统会将输入的字符串进行哈希计算,并将其与数据库中的值进行比较。但获取密码文件的人不会得到真正的密码,因为文件只存储的哈希版本。
这些新方法是都有很大的野心,但还远远不能用于实际。一些数学问题可能要花费数年时间去解决,但这个进程正变得更快。更多的研究是必要的,但将加密方法变得更容易处理仍然是一个令人兴奋的解决方案,它可以让公司使用数据库做智能的事情,而不用担心人们的隐私。
添加加密措施
这看起来有点愚蠢,最终结果是一个最大最简单的解决方案,不过添加更多的加密措施确实能使窃听更加的困难。许多知名网站,像 Google,非死book 以及 Apple 都默认开启了 SSL 加密,其它的站点都也跟随了这些网站的脚步。向整个网络流量添加 SSL 的开销则更加具有可管理性。
有一些其他的加入加密算法的标准。IPSec和TLS都可以很好的加密客户端与服务端数据包。这些算法即使只相信服务器,但是某些使用这种解决方案的服务运行在作为中转的服务器上的时候,这种解决方案就是不那么理想了。
email与聊天工具中加入端对端加密工具是对我们日常通讯安全的最基本保障。跃然这可以在服务器端和操作系统底层被破坏,但这依然是让人们相信他们在Internet上发送和接收的数据是由自己掌控并且是安全的最好方式了。