0. 基本概念
加密包括两个元素:算法和密钥。一个加密算法是将消息与密钥(一串数字)结合,产生不可理解的密文的步骤。
密钥是结合密码算法一起使用的参数,拥有它的实体可以加密或恢复数据。
密钥可以分对称密钥和非对称密钥。
对称密钥: 加/解密使用相同密钥。 -- AES等算法
非对称密钥:需要两个密钥来进行加密和解密。(公钥和私钥) -- RSA等算法
1. 密钥分层管理结构
工作密钥 (WK/WorkKey)
↑
密钥加密密钥 (KEK或MK/MasterKey)
↑
根密钥(RK/RootKey)
-
密钥分层管理至少选择两层结构进行管理:根密钥和工作密钥。
2. 密钥生命周期安全管理
密钥生命周期 由于不良设计可能导致的安全问题
生成: 生成算法随机性差,导致密钥可被预测,或攻击者可以自己生成密钥。
分发: 密钥明文分发,导致密钥存在被攻击者截获的风险。
更新: 密钥从不更新,导致攻击者更容易获取密钥,从而能够轻易获取敏感数据的明文。
存储: 密钥明文存储在数据库中,导致攻击者容易读取出密钥,从而能够轻易获取敏感数据的明文。
备份: 如果重要密钥从不备份,一旦密钥丢失,将导致原有加密的数据不能解密,大大降低了系统可靠性。
销毁: 密钥仅被普通删除,导致攻击者有可能恢复出密钥。
密钥的建立包括密钥的生成和分发。
2.1 生成
- 基于安全的随机数发生器
- 基于密钥导出函数
PBKDF2是一个基于口令的密钥导出函数,导出密钥的计算公式:
DK = PBKDF2(HashAlg, Password, Salt, count, dkLen)
PBKDF2 :密钥导出函数名
输入:
HashAlg :哈希算法(推荐使用SHA256)
Password :用户输入的口令或者读取的一串字符串
Salt :盐值,为安全随机数,至少为8字节
count :迭代次数,正整数
dkLen :导出密钥的字节长度,正整数。
输出:
DK :导出的密钥,长度为dkLen个字节的字符串。
```
PBKDF2 (6.0 API Documentation)
3. 基于标准的密钥协商机制
4. 基于安全的密钥生成工具等
2.2 分发
密钥的分发是将密钥通过安全的方式传送到被授权的实体,一般通过安全传输协议或者使用数字信封等方式来完成。
数字信封是对称密码体制和非对称密码体制的一种混合应用,即解决了非对称密码体制加解密效率的问题,又妥善解决了密钥传送的安全问题。
-
在密钥的分发过程中,对于对称密钥和非对称密钥的私钥而言,应保证其完整性和机密性;
推荐产品开发人员使用安全的加密传输协议(如SSL、IPSec、SSH)来传输这些敏感数据。
当产品的应用场景中不具备建立安全传输协议的条件时,也可以使用数字信封来完成密钥的分发。
数字信封加解密接口
接口 | iPSI | OpenSSL |
---|---|---|
加密 | CRYPT_sealInit() | EVP_SealInit() |
加密 | CRYPT_sealUpdate() | EVP_SealUpdate() |
加密 | CRYPT_sealFinal() | EVP_SealFinal() |
解密 | CRYPT_openInit() | EVP_OpenInit() |
解密 | CRYPT_openUpdate() | EVP_OpenUpdate() |
解密 | CRYPT_openFinal() | EVP_OpenFinal() |
对于非对称密钥的公钥而言,应保证其完整性与真实性。
2.3 使用
-
一个密钥只用于一个用途(如:加密、认证、随机数生成和数字签名等)。
-
非对称加密算法私钥仅可被其拥有者掌握。
2.4 存储
-
用于数据加解密的工作密钥不可硬编码在代码中。
-
对称密钥、私钥、共享秘密等均属于敏感数据,在本地存储时均需提供机密性保护。
上层密钥的机密保护由下层密钥提供 --> 根密钥的安全管理。
-
密钥组件方式生成根密钥时,密钥组件需要分散存储,当密钥组件存储于文件中时,须对文件名做一般化处理。
2.5 更新
当密钥已经达到其使用期限或者密钥已经被破解时,密码系统需要有密钥更新机制来重新产生新的密钥
-
密钥须支持可更新,并明确更新周期。
2.6 备份
密钥丢失将导致密文数据无法解密,这样便造成了数据的丢失。
应依据具体场景,来评估是否需要对密钥提供备份与恢复机制
2.7 销毁
-
不再使用的密钥应当立即删除。
2.8 可审核
-
密钥管理操作需要记录详细日志。
密钥的生成、使用(作为管理用途,如加解密密钥、派生密钥必须记日志,作为业务用途,如加解密业务数据则不要求)、更新、销毁操作是重要的管理操作。
日志中需详细记录密钥的各项管理操作,包括但不限于记录操作的主体(人或设备)、时间、目的、结果等可用于事件追溯的信息。
网络安全学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
需要网络安全学习路线和视频教程的可以在评论区留言哦~
最后
- 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!
给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。
黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失