提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

之前一次课程的作业,我想存着还不如贴出来供大家拍砖。当然很多是一些个人想法,可能叙述得比较乱,不当之处还望批评指正。

现有的简单的在线交易场景如下图所示:

简单在线交易流程示意图

其中涉及到的数据安全和个人隐私主要有:客户账户和密码,信用卡及相关个人信息。

主要防范的攻击类型有:通信截取、通信窃听以及通信伪造(包括中间人攻击)等形式。

1、保障在线交易系统的安全。确保该交易系统只能运行在指定的服务器上,避免整个系统被克隆导致下一步中间人伪造成为可能。具体实现可以在服务器上读取授权服务器的网卡号、主板号及硬盘序列号等唯一硬件身份信息进行哈西(HASH),算法可以采取MD5、SHA-1等,这里不累述,然后使用椭圆曲线加密算法生成序列号并应用于实际系统,曾经有一段时间我研究过Windows的序列号生成方式,其中就有椭圆曲线加密。这样即使系统被恶意复制,攻击人也无法在非授权服务器上运行系统,当然最重要的是要做好被授权服务器自身的安全。

2、保障服务器及域名系统的安全。这里主要涉及到安全的注册商、DNS系统、DNSSEC反投毒技术)之前有一次“百度被黑”事件,就是由于百度域名的托管商Register安全措施不到位导致WHOIS里的权威DNS解析服务器地址被篡改,当然保障权威DNS服务器的安全也很重要,否则不怀好意之人会将合法域名解析到恶意服务器上。现在DNS投毒也成为了常见的攻击方式,比如之前的全国网络故障就是由于DNS投毒导致大部分域名被解析到了 65.49.2.178 ,这个是由于TCP/IP协议和域名查询机制导致的,所以使得这类攻击成为可能,对于这类攻击的防范是采取DNSSEC对域名信息进行签名,保障信息的完整性,同时采取SSL安全套接字对连接进行加密,最后还要合理保护好各类凭证,包括域名密码、数字签名(证书)私钥等。

3、保障客户计算机的安全。尽到告知义务,提醒客户及时为他们的计算机打好补丁,更新杀毒软件,要求客户养成良好的安全使用习惯。

4、传输过程中的安全保障。

一是客户端防止键盘钩子程序(反键盘按键拦截),避免用户密码在输入时被木马程序窃取,目前大多数银行及淘宝等交易平台均采用此类技术来保障用户的密码输入,此类技术多是使用了微软的OLE ActiveX插件技术,再结合底层驱动,实现系统级的底层拦截窃取技术,同时对用户输入的密码进行加密处理。

采用OLE ActiveX保障用户输入密码安全

这类技术处理的瓶颈就是用户体验不好,支持的平台和浏览器有限。

二是保障传输过程中不泄密,通过WinPcap等工具可以嗅探局域网内传输的数据,如果这些数据不加以保护将会导致重要情报的泄漏,运用密码学的知识很容易想到的解决方案是:RSA公私钥加密方式保护敏感信息,服务器端发送公钥,客户端运用公钥加密敏感数据再传送给服务器端,客户端加密可以采取ActiveX技术或者是JavaScript来实现,以前腾讯QQ邮箱在不使用SSL的情况下采取了JS加密的方式,JQuery的插件JCrypto可以实现类似的功能,实际操作下来最大的问题是要获取强加密必定会导致JS运算量变大而出现浏览器假死现象。

简单RSA加密保护用户密码安全

当然通常情况下,RSA对大量数据加密解密处理将会消耗大量计算机运算资源,上面的场景只是简单的对用户密码进行了RSA加密,更高要求的信息保护是对整体的传输数据进行加密,比如用户其他敏感信息包括信用卡资料、个人照片等,对于这些数据的处理我们采取AES Rjindael加密处理,因为AES是对称加密,所以计算机处理起来会比较快,然后我们把AES密钥进行RSA加密传输。

RSA配合AES加密保障数据传输安全

这种做法类似于现在主流的SSL数字证书加密的做法,数字证书按颁发机构可以分为自签名和权威机构颁发,典型的例子是12306.cn采用的是自签名数字证书,但是为了便于用户及体现专业性建议有条件的向权威机构申请数字证书吧,加密方式选用TLS 2.0,加密强度至少2048bit。

现在也有一种数字证书叫做EV SSL(典型的效果是IE浏览器地址栏全绿),此类数字证书除了加密数据外也对网站拥有者身份进行核实,结合DNSSEC,有效防止伪造及钓鱼网站。

综上,SSL安全套接字的使用可以帮助我们应付大部分的网络安全问题,但是过度的依赖,一旦证书密钥失窃,后果将是灾难性的。

5、保障在线交易系统与第三方业务系统的安全,现在在线交易在支付环节时均自动跳转到银行自己的业务系统以保障安全。一般称为Payment Gateway(支付网关),在支付成功后将转回交易系统进行确认,在这之间我们也要做好安全保障工作。