对JavaScript密码学的批判

来源:互联网 发布:300出装软件 编辑:程序博客网 时间:2024/05/22 06:06

原文地址:http://bren2010.github.io/jekyll/update/2014/06/17/javascript-crypto.html

介绍

如果更考究一点,对于这篇文章更好的标题应该是“浏览器内部密码学的批判”,因为浏览器是真的内部的一部分来获取人的信息--JavaScript只是另一种编程语言而已。
但是在其他更多的地方,关于浏览器内部加密的博客文章,评论以及实时的聊天,大多存在缺乏严密性的问题,并且通常是像在蚕食灵魂般的陈腐和无休无止。在这方面的典型是Matasano安全的文章:标题为: Javascript Cryptography Considered Harmful。对于那些认为它是包含一切的终极诅咒的人来说是令人沮丧的,很抱歉,它的效果很可能只是将初学者吓的不敢做他们想做的事情。(庆幸的是,它们在某些情形下是很有用的,但是却没做更正式的讨论)
在这篇文章中,我不会随便抛出密码学毫无意义,像是“有害”这样的词汇,我希望提供有关浏览器内部加密深入的、客观的分析。

首先,澄清一个事实

我的首要目标是让读者相信,浏览器内部加密的安全性可以跟软件套件库似的可以被分析出来。
毕竟,不考虑个人的安全机制的话,通常的流程是:
案例1:浏览器发一起一个对服务端指定资源的请求,服务端做出响应,浏览器端进行解释并执行;
案例2:一个软件更新程序从资源库请求指定资源,资源库做出响应,更新软件做出解释并存储(以做进一步执行)。
花几秒钟想一下--他们基本是一样的,对吗?
有一点除外,浏览器内部的加密,经常提出的论点是,密码必须每次都被请求,而软件资源库的密码只需要请求一次。这个论点完全忽略了HTTP缓存头(HTTP cache headers)以及网站操作离线资源的能力。这两个请求浏览器会以完全相反地方式执行。此外,还有一个明显的事实是,浏览器请求资源会更频繁,而软件更新程序则以一个固定的间隔来请求资源(通常在不知道用户的信息以及用户不知情的情况下进行)。
通常,对二者做出区分的另一个尝试是断言软件库会提供增量式的可审核性,或者其无法触及目标用户。老实说,我并不知道上述观点从何而来。我也不知道那是否是事实,考虑一个服务器被强迫和一个指定的用户成功发起一个LTS事务,那么一个存储库也会被强迫做相同的事情,或者签署一个病毒包,或者任何它们的安全模块需要的东西。

0 0
原创粉丝点击