2010-02-01 133 views
3

我已经被赋予了寻找替代一段旧代码的任务。我假设它测试了浏览器是否支持128位加密。这里是旧代码:(我故意将链接分成4行)

http://www.verisign.com/update-cgi/outPage.exe
?good=../docs/html/good.html
&nsbad=../docs/html/upgradeNSonly.html
&ie2=../docs/html/upgradeIEonly.html

你有没有看过这个代码?
如何在php页面中复制此功能?

如何测试浏览器以查看它是否支持128位加密?

澄清
老站长发现了一个链接,威瑞信,即这浏览器检查。 Verisign自此停止支持此链接。就个人而言,我认为我们应该简单地告诉我们的客户点击帮助>关于有浏览器中,并查找CYPHER强度。如果它不是至少128,那么我们只是告诉他们升级浏览器。

回答

1

所有现代浏览器都支持128位加密的开箱。你是否需要支持比IE 5.5更早的浏览器?

您可以检查浏览器的用户代理字符串并进行假设,也可以将它们引导至使用128位SSL证书的页面,如果它们继续存在,那么它们必须支持它。

+0

@CalebD - 感谢您指点我“保持简单愚蠢”。我决定保持简单,并告诉客户如何自行检查浏览器的密码强度。 – 2010-02-02 20:23:28

0

所有现代浏览器都支持128位。但是,您应该以管理方式强制执行此服务器端,因为有人可能会使用较旧的浏览器或伪造使用较低位级别加密(例如40或56)的请求。

我建议你问如何去执行根据你的平台上设置在Web服务器了:

http://serverfault.com

1

您在这里粘贴的东西是不是代码 - 它的URL。

如果你不理解的差异那么我希望你不会真正了解任何答案的隐含问题“你如何衡量在PHP加密质量?”但在这里不用反正....

首先,有没有办法测试,如果浏览器支持特定的加密算法或其他比测试使用加密方式连接密钥大小 - 因此,这意味着配置多个不同级别的加密在你的服务器上并在每一个中创建网页,然后测试浏览器可以连接到什么。这不是一项微不足道的任务,也不是大多数人在正常生活中会遇到的问题。

如果您在apache上使用mod_ssl,并结合mod_php(您没有说PHP运行的是OS/webserver),那么您将能够看到各种附加的$ _SERVER变量,包括“SSL_CIPHER” “SSL_CIPHER_USEKEYSIZE”,“SSL_CIPHER_ALGKEYSIZE”和“SSL_SERVER_A_KEY”

又见

http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#envvars

所以我真的怀疑你是问错了问题,但我不能告诉正确的问题是什么,直到你可以回答这个问题:

通过了解浏览器是否支持128位加密,你期望达到什么目的?

C.

+0

我们的网站只支持具有128位或更高级别加密的浏览器。如果我们客户的浏览器不支持这种级别的加密,我需要发布一条消息,告诉他们升级浏览器。我认为最简单的做法是让客户点击帮助并查找密码强度。 – 2010-02-01 22:30:14

+0

您可能想尝试将https iframe放入http页面并尝试检测它是否加载(可能通过在iframe中呈现一些javascript) - 但我怀疑大多数浏览器可能会将这些视为不同的来源,因此会隔离这两个框架。当然,从http页面到https页面的Ajax调用将不起作用。Cookie将在http和https之间传输,因此您可以尝试从http中删除cookie,尝试在https iframe中检测它,然后使用会话在后续页面上处理结果。 – symcbean 2010-02-02 09:40:10

1

在SSL中,客户端连接并发送它所支持的密码列表;那么服务器会选择其中一个也支持的密码,并且该密码用于连接。只有当连接建立时(“握手”完成)HTTP才会起作用。

在您的设置中,这意味着您应该配置您的SSL服务器以接受各种密码,但要优先使用128位以上的私钥而不是其他密钥。因此,只有当客户端和服务器都不支持128位或更多的密码时,才会选择小于128位的密码。然后,根据实际协商的密码,在该连接内发送的页面将被更改。

对于这样的设置,你必须能够做到以下几点:

  • 用来配置SSL服务器支持的密码列表;
  • 在客户端和服务器都支持的密码列表中强制执行客户端首选项的服务器首选项;
  • 访问您的页面生成引擎中实际使用的密码,例如PHP。

在Apache的mod_ssl,看来1点很容易(“的SSLCipherSuite”指令)和“环境变量”一节似乎表明SSL服务器愿意给上选择什么密码的一些信息页面生成引擎;尤其是SSL_CIPHER_USEKEYSIZE变量看起来相当不错。因此第3点看起来也很容易。但我不确定这是如何转化为PHP世界的。

对于第2点,这有点困难。 “SSLCipherSuite”的文档似乎告诉服务器,默认情况下,它使用自己的首选顺序,因此第二点也很容易,但这需要一些测试。

现在只剩下一个小点,这就是3DES的状态。名义上,它使用一个192位密钥。任何体面的密码编程者或程序员都会指出,在这192位中,只有168位被使用(额外的位应该用作奇偶校验位,但没有人会证实这些位,他们只是被忽略)。现在,一些学者还表示,实际的算法强度较低,至少在适当的学术光线下看来,与112位密钥相当。因此,NIST(美国联邦机构处理此类标准)因此发布了一项建议,即3DES应被视为提供“仅112位安全性”,并且112低于128.

当然,112位在技​​术上不可行的领域还有很长的路要走(即使技术进步一直保持其繁忙的步伐,至少应该保持30年),所以这对于任何实际情况都不是问题,但如果您处于一个标准疯狂的思维框架,并希望执行“真正的”128位,那么这是一个需要考虑的问题。

相关问题