在浏览器端,安全控件跟 JS 加密的密码我认为还是有很大区别的。但我觉得安全控件,它自身的安全性和自我保护能力都比JS强多了。
(一)对安全控件的认识: 1.由于安全控件的保护,客户的帐号及密码还是相对安全的。安全控件实质是一种小程序。由各网站依据需要自行编写,当该网站的注册会员登录该网站时,安全控件发挥作用,然后通过对关键数据进行SSL加密,防止账号密码被木马程序或病毒窃取,可以有效防止木马截取键盘记录。安全控件工作时,从客户的登录一直到注销,实时做到对网站及客户终端数据流的监控。安全控件是很多网银使用前必须安装的小程序。安全控件安装可以减少账户的不必要丢失和操作方面的失误。所以网站,大多都会使用安全控件对客户的帐号密码等信息加以保护,对优化网络环境起着至关重要的作用。
2.在选择控件方面需注意事项:一、确定所用的网站或是平台是否必须使用此控件;
二、检查控件的发行商;
三、安装控件时最好让一些杀毒或是一些保护电脑安全的软件处于开启状态,发现异常马上处理;
四、安全控件最好是从官方网站下载。
(二)对常用的 JS 加密(RSA)的认识:1. JS 加密(RSA)步骤:
服务端生成公钥私钥,下发公钥给客户端 客户端使用公钥(还有盐)对密码加密 把加密后的密码发送到服务端,服务端使用私钥解密拿到密码 对于攻击者来说,只要能够拿到 HTTP 明文,就可以在公钥下发时进行公钥或者加密方式的替换,拿到密码后解密,再使用服务器公钥加密密码明文,返回给服务端。
2.加密注意事项:
通常情况下,在提交注册表单时,最好对密码之类的敏感字段进行加密,保证内容的安全。
(三)两者区别:1.如果从安全角度上来看,js加密也好,安全控件也好,都是可被逆向破解的,其两者的唯一区别,可能就是破解安全会更复杂麻烦点,但是因为每个客户端它的安全控件程序都是一样的,所以在算法上是可以通过分析破解得到的。
2.如果考虑到安装时被攻击的情况,控件是要相对安全些,因为你不用每次都要传输安装控件,而js代码在传输过程中是存在被更改的的可能性的。
总之,从安全角度,js也好,控件也好,都是可以被逆向分析的,控件要相对安全些,因为你不需要每次传输安装控件,但是js代码在传输过程中存在被篡改的可能性。因为每个客户端控件程序是一样的,所以其实算法也是可以分析得到的如果考虑到中间人攻击的情况,安全控件比较安全。
这个最近也在研究,我对js登录密码加密的思路是这样的:前端用js自编函数加密,后台传随机值session为盐值,后台用session校验,解密或不需解密,session在登录成功验证完成后销毁,这样中间人即使复制了加密后的密文也没用,因为session已经无法校验成功了。另外因为js是可见的,所以js加密函数文件自身也要经过 “函数变量名加密”而且看起来要足够复杂,(这个工具在站长工具网站上有)让人非常难以阅读,原文件留备用但不公开。
用户注册时的密码js加密我还没想好,暂不评论。安全控件的话我的理解就是把本地的加密算法封闭了,再加上一些本地的木马检测这些啰。这么高要求的一般都只用在银行网站上。