一、安全是什么?就是三个基础原则
安全就是保护数据
1. 机密性
对未授权的主体不可见
开发人员不能拥有敏感数据的访问权限
密钥要复杂
显示器伤的数据被别有用心的人窥探
2. 完整性
没授权的人不可修改数据
3. 可用性
被授权的主体可读
二、如何解决安全问题
解决方案:先登录,再操作,最后留下记录
审计不仅是看日志,还有机器学习、异常检测的算法也能运用进来
三、How to make your password “invisible”?你懂加密嘛?
了解这些加密算法的概念和优缺点,就足够你选取合适的了
对称加密,一把钥匙
常见的对称加密算法
数据加密后,即使物理硬盘被盗,也不会导致信息外泄。
对称加密的密钥被盗就很麻烦。非对称密钥就解决了这个问题
非对称加密算法
除了加密功能,大部分非对称算法还提供签名功能。就是我用私钥加密,你用公钥解密,你就知道这段话是我说的。
大部分的认证和签名场景,其实使用的都是非对称加密算法。比如SSH,Git上传等,私钥留本地,公钥放服务端
散列算法
利用它可以对任意长度的输入,计算出一个定长的id。
其价值还体现在不可逆性。明文密码通过散列算法计算后,存储最终的散列值。后续登录过程中,计算出的散列值一样。登录成功
同样的消息生成同样的摘要;
不存在不同的输入,输出相同
使用散列算法的时候,记得加 盐(一串随机字符)。用户密码和盐拼接后,再进行散列计算。这样即使两个用户设置了相同的密码,也会有不同的散列值。此举还能对抗黑客
彩虹表通过预先计算和存储大量的密码及其对应的哈希值,在实际破解时通过查找表中的匹配项来减少计算时间。
黑客往往会提前计算一个彩虹表来提升暴力破解散列值的效率。
使用盐(salt)增加了破解难度。盐是一个随机值,与密码组合后再进行哈希,从而使彩虹表无效。
总结
对称加密具备较高的安全性和性能 (通常比非对称加密快,资源消耗低),要优先考虑; 首选 AES-CTR
一对多的场景(如多人登录服务器),存在密钥分发难题的时候,用非对称加密; ECC
不需要可逆计算的时候(如存储密码),使用散列算法。 SHA256 加盐
四、除了账号密码,对于身份认证还有什么选择?
强制用户设置强密码,定期修改密码