一、安全的要素

信息安全的核心问题是要保障数据的合法使用者能够在任何需要该数据时获得保密的,没有被非法更改过的数据。主要有以下几要素:

机密性

  • 保证数据内容不能泄露。
  • 用户的密码用明文保存,就破坏了机密性。

完整性

  • 保证数据内容不被篡改。
  • 使用HTTP提交数据时,数据在传输过程中被篡改后再发往服务器,就破坏了完整性。

可用性

  • 保证数据可被正常访问和使用。
  • 像拒绝服务攻击(DoS)就是破坏了可用性。

最基本的安全要素就上面三个,下面还有一些其他的。

可审计性

  • 记录对数据产生的操作,用于日后的分析、审查。

不可抵赖性

  • 首先要保证数据完整性,然后,在传输的数据中必须携带用于身份识别的信息,且这部分信息在不同主体间不能发生碰撞。

加密技术的使用

上一篇《Web安全技术(1)-对加密机制的理解》中提到了三类加密算法,可以应用于某些要素的安全保障。如下面的说明:

对称加密

  • 可保障机密性,对数据加密后存储,可以使没有密钥的人员无法获取数据内容。

非对称加密

  • 可以对数据进行加密解密操作,所以也能像对称加密一样保障机密性;
  • 因为非对称加密可以实现数字签名,所以可以保证数据完整性。另外,由于是使用私钥签名,而私钥只有数据发送方才有,所以如果公钥可以验签成功,则发送方不可抵赖。

摘要加密

  • 摘要算法可保障数据完整性。

  • 在某些网站的软件下载页面里,有时除了下载地址,旁边还会有一个MD5码。这个MD5就是对下载的软件做的摘要加密。在下载完成后,在本机对下载的软件做MD5,然后和网站上显示的MD5做比较,如果相同就表示软件被成功下载,而且下载过程中软件内容没有被篡改。
  • 在做系统时,我们也经常会对密码做摘要加密后再保存,因为摘要加密的一个特性是不可逆,这样通过数据库中保存的加密后的密码不可能还原成用户的真实密码。而用户登录时,只需将用户提交的密码再做摘要加密,然后与数据库中保存的密码比较,就能判断用户有没有输入正确的密码。

二、风险分析

对于数据可能会遇到什么威胁,一般是拍脑袋想一想,也可以使用模型帮忙,下面是一个叫STRIDE的威胁模型:

如何评估风险?

数据受到威胁就可能造成损失,但损失有大有小,威胁发生的概率也有高有低,我们要结合具体情况来对风险做出判断。有一个叫DREAD的模型,可以指导我们如何判断威胁的风险程度。

每一个因素都分高、中、低三个等级,权重值分别为3、2、1。

当有一个威胁时,我们将它在每一个因素中的权重值相加,即可得出风险系数。

假如我们对风险系数范围的定义如下:

高危:12~15分,中危:8~11分,低危:5~7分。

那如果以使用明文保存密码为例,风险系数可能像下面这样计算:

风险 = D(3) + R(1) + E(1) + A(3) + D(1) = 9分,这就是一个中危风险。

后续对威胁的处理,应当根据风险的大小和修复的难易程度做出平衡。