原文:01 安全的本质 数据被窃取后,你能意识到问题来源吗
安全原则
- 机密性 Confidentiality
确保数据只被授权的主体访问,不被任何未授权的主体访问;
e.g. 未付费用户无法学习极客时间付费专栏 - 完整性 Intergrity
确保数据只被授权的主体进行授权的修改,可以理解为对主体设置增删改查的权限;
e.g. 专栏内容不会变成其他专栏的内容 - 可用性 Avaliability
确保用户可被授权的主体访问到.
e.g. 付费用户可随时学习
原文:02 安全原则 我们以供如何上手解决安全问题
安全解决方案思路
认证
即身份识别和认证。身份识别确认“你是谁”,身份认证确认“你是你”
- 身份识别
主体如何声明自己的身份。 - 认证
证明自己所声明的身份是合法的。
1) 你知道什么(密码,密保问题等)
2) 你拥有什么(门禁卡,安全令牌等)
3) 你是什么(生物特征,指纹,人脸,虹膜等)
授权
你能做什么?你能做多少?
审计和问责
- 审计
通过翻阅日志检查 你做了什么?是否违规? - 问责
通过日志完整性确保日志是可靠的,这样审计才是有意义的。
原文: 03 密码学基础 如何让你的密码变得“不可见”
加密算法
对称加密算法
- DES 数据加密标准
- 密钥长度为56位
- IDEA 国际数据加密算法
- 密钥长度为128位
- DES和AES都受美国征服控制。IDEA没有专利限制
- AES 高级加密标准
- 提供128位,192位,256位密钥长度
- AES是国际上最认可的密码学算法
- 国密SM1
- 中国政府
- 不公开,国家机密
- 国密SM4
- 中国政府
- 算法公开,可自行使用
非对称加密算法
- RSA
- 优势: 性能比较快
- 质数难题: 两个大质数p,q相乘的结果n很容易计算,但是根据n去做质因数分解得到p,q需要很大的计算量。
- ECC 椭圆加密算法
- ECC是目前国际上加密强度最高的非对称加密算法
- 国密 SM2
- 中国政府
散列算法
- 提供唯一的ID
- 鲁棒性(同样的消息生成同样的摘要)
- MD5 消息摘要算法
- 128位
- 不推荐使用,除非长度受限(32个字符)
- SHA 安全散列算法
- 分为SHA-1 ,SHA-2两个版本
- 推荐使用,SHA-256普遍认为是相对安全的散列算法
- 国密SM3
- 中国政府
注意: 在使用散列算法要注意加“盐”。
- 盐:随机字符串,拼接用户密码,这样即使两个用户设置相同密码散列值也不一样,“盐”值越长安全性越高。
原文: 04 身份认证 除了账号密码,我们还能怎么做身份认证
身份认证
对外认证:账号密码,验证码,人脸识别,指纹识别等;(你知道什么,你拥有什么,你是什么)
对内认证:服务器登录,数据库登录,git登录,内部管理后台登录等;
现存威胁
- 没有认证环节
- 弱密码
- 认证信息泄露
解决方案
- 密码强度限制
- 定期修改密码
- 关键操作设置第二密码
- 手机验证码代替验证
- 人脸指纹等生物特征
- https
单点登录
公司业务繁杂拥有多个系统,如何对这些账号进行统一管理? - 单点登录
单点登录如何解决身份认证问题? 在这里我推荐看以下两篇文章,对单点登录介绍较为清晰,能让读者有一个更为深刻的印象。
单点登录(SSO)看这一篇就够了
什么是单点登录(SSO)
- CAS流程
- JWT
JWT由 header+payload 经过Base64编码后,再次经过HS256算法进行(密钥)加密获得签名,完整的JWT为:header.payload.signature
- 对JWT有一个基础的印象: JSON Web Token - 在Web应用间安全地传递信息
缺点: 注销问题。 - JWT 在实际运用中的使用以及其优缺点,以及 JWT 和 Oauth 2.0 这两者到底有什么差别和联系: JWT超详细分析
- 了解JWT在登录功能的使用(PHP): JWT完整使用详解
- OAuth
- OpenID
安全攻防技能30讲系列文章
- 摘要:CIA三元组;安全解决方案;密码学;身份认证;单点登录;JWT;
- 摘要:访问控制;XSS攻击了解;CSRF攻击了解;
说明 : 文章基于个人理解进行再整理,每篇原文我都通读两遍以上。