粟栗:业务安全粟论(七)——第三步:实施加固

标签:
业务安全杂谈 |
独家供稿:移动Labs
双节临近,祝粟论的各位读者双节快乐!
上一期通过实例的方式,说明了在进行安全工作的第二步是制定安全解决方案。在安全解决方案制定后,还有一个非常重要的环节,就是解决方案的实施。简单来说,解决方案做得再好,如果在实施的时候存在失误,不仅不能达到效果,而且可能产生新的安全问题。
举个例子,在某业务中,为了保护用户登录机制的安全性,拟采用一个浏览器插件的方式增强安全性,通过浏览器插件实施用户传输的信息(用户名、口令)进行加密保护。但是,在浏览器插件中存在漏洞,攻击者反而能够通过浏览器插件的漏洞控制用户的主机。这样的一个加固措施,虽然解决了传输中的小危害,但反而给用户埋下了一个大隐患。这里依据我的经验,需要提2个要求:
(1)严格实施安全解决方案,确保既定的安全方案能正确实施,弥补上已发现的漏洞;
(2)在实施解决方案的时候,应该通过选用成熟技术、实施难度等方面来规避实施过程中产生的风险。
当然,在实施中面临的困难同样也会影响方案的设计,这也是必须要考虑的一个方面。
在这里还是通过一个例子来说明,由于不方便举出太具体的实例,还是通过一个虚拟的例子进行说明。
假定需要通过主机A(例如客户端)向主机B(例如服务器端)传输一些机密数据(如账单信息),需要通过一些安全的机制进行防护。从目前的主流方向来考虑有两种模式:(1)先加密形成密文,然后在通过普通方式传输密文;(2)在传输时进行加密(从微观上看也是先加密后传输,但一体了)。
我们不妨结合设计与实现来综合考虑如何进行实施这个简单的过程。
模式 |
技术方案 |
带来的新风险 |
实施难度/限制 |
先加密后传输 |
1.
2.
3. |
1.密钥可能泄露或遗失;
2. |
1.需要建立密钥管理机制;
2.
3. |
1.使用Openssl提供的加密库(openssl enc)进行加密; 2.通过http方式传输加密数据; 3.收到数据后进行完整性校验并解密。 |
客户端或插件存在安全问题(不考虑Openssl库可能存在的缺陷) |
1.
2. |
|
传输时加密 |
1.配置证书,并通过https传输。 |
无(不考虑协议缺陷) |
1.
2. |
1.通过SFTP方式进行传输。 |
无(不考虑协议缺陷) |
1.适合客户端非实时方式,如果在批上送可以考虑。 |
通过上面的分析,如果我们在B/S模式下,而且信息量不大的情况下,应该采用https是比较好的方式,虽然可能需要花一些钱购买证书,但实施比较方便和安全。如果不具备购买证书的条件,那么用包含openssl库(或部分功能)的插件也可以实现。具体如何应用,需要依据业务需求确定,在银行业一般采用https;qq等客户端则采用自己编码实现加密功能。
通过上面的分析,我们很容易看到在实施安全加固措施时,一般会新引入一些安全风险,这些风险一般都因为实现与设计不一致或编码引起。应用成熟技术时,能避免一些简单的错误,因此应尽量使用成熟的技术。
但无论如何,安全问题可能都不可避免,要发现这些安全问题,就必须通过一个全新的课题——安全测评来解决。只有系统化的测试才能尽量发现安全问题,并进而解决这些问题。这个课题的讨论将是后面几期的重点。
好了,今天就先到这里,下期再见。
祝各位中秋、国庆双节快乐!
粟栗