信息安全基础
文章目录
本文主要介绍信息安全的基础知识。
Hash算法
Hash算法可以将任意长度的数据转换为固定长度的数据。
Hash算法是一种不可逆的运算,也就是不能从Hash结果反推输入的数据(有很多可能)。
常用的Hash算法有MD5,SHA等,不过MD5和SHA1已经被破解,建议使用SHA256。
Hash算法可以用来做文件完整性校验、数字签名、密码校验。
一般来说我们并不直接明文存储用户的密码,这样不安全。
简单一点会把用户ID和密码Hash后存储,至少用户实际密码不会泄露。
复杂一点会把密码Hash再加上额外信息(俗称加盐)二次Hash后存储。
对称加密算法
对称加密,是指加密、解密都使用相同的密钥。
对称加密算法很多,包括RC4、DES、3DES、AES、TEA等等。
对称加密除了RC4和DES不是那么安全之外,其他安全性还比较高,不容易暴力破解,加密速度快。
对称加密主要需要考虑的问题是如何安全的协商密码,不被中间人窃取。
非对称加密算法
非对称加密,是指加密、解密使用的是不同的密钥。
这两个密钥,一个是公开的密钥(简称公钥),一个是私有的密钥(简称私钥)。
公钥加密的信息只有私钥才能解开,私钥加密的信息也只有公钥才能解开。
公钥加密主要用于加密通信,而私钥加密可以用于个人身份的证明(签名)。
比较常见的就是RSA和ECC加密算法,其中RSA是基于两大素数乘积难以快速因式分解的原理设计。
非对称加密算法的主要缺点是加密速度比较慢。
DH密钥交换算法
DH是Diffie-Hellman两个人的缩写,该算法可以通过共享信息结合自己私有信息算出共享的密钥。
从上图可以看出Alice通过共享信息 p, g, B
以及私有信息 a
即可算出密钥 K
。
同理,Bob可以通过共享信息 p, g, A
以及私有信息 b
即可算出 相同的 密钥 K
。
Alice和Bob通过共享信息协商出了共享的密钥,而窃听者无法根据 p, g, A, B
算出密钥 K
。
DH密钥交换算法巧妙之处在于利用了不可逆的运算操作(mod
),不可以由 A
反推 a
,由 B
反推 b
。
不过DH密钥交换算法只是解决了部分密钥交换问题,还是可能受到 中间人攻击 。
具体就是C冒充Bob与Alice完成密钥交换,同时冒充Alice与Bob完成密钥交换,通信将被C窃听甚至篡改。
解决方法就是身份证明,这样中间人C就不能冒充别人。
签名与证书
前面提到非对称加密用私钥加密可以证明个人身份(签名),这是因为只有对应公钥才能解开。
但是自己开的证明(签名)没有用,说到底还是需要权威机构认证才行。
权威机构需要验证个人信息,验证通过才颁发证书,包括申请人的公钥和签名。
证书一般是跟域名绑定的(域名与IP有映射关系,不能随便冒充),也可以绑定公网IP。
通过证书和签名,信任链才能建立起来,避免中间人攻击。
这样我们才能通过非对称加密算法交换密钥,再通过共享的密钥和对称加密算法进行加密通信。