浅谈加密基础设施
0x00 前言
讲加密基础设施前,会介绍一下密码学基础,不过需要先声明一下的是我仅仅是能理解并应用。所以如果文中笔误,还请读者及时指出。如果只需要关注加密基础设施建设的一些经验,可直接跳至第二节——0x02.
0x01 密码学基础
以下章节中的密码学基础部分的知识主要总结自《图解密码技术》读书笔记,本节图片系原文所载。有个朋友说这个是神书,我觉得大可不必,不过确切是本好书,因为能够帮助数学基础不是很好的读者快速了解密码学基础。
1. 受到的部分威胁和对应的密码技术
2. 基本的密码技术与常识
基本密码技术分为六部分:对称密码(Symmetric Cryptography),非对称密码(Asymmetric Cryptography),单向散列函数,消息认证码,数字签名,伪随机数生成器。
大部分密钥技术中都需要密钥,这里面有个值得参考的观点是————密钥与明文是等价的 (即如果明文价值 100w,那密钥也就值 100w。)
以下是各种不同的密钥:
对称密码的密钥与公钥密码的密钥
消息认证码的密钥与数字签名的密钥
用于确保机密性的密钥与用于认证的密钥
会话密钥与主密钥
用于加密内容的密钥与用于加密密钥的密钥
基于口令的密码(Password Based Encryption)
3. 对称密码
对称密码可以分为两类:序列密码和分组密码。如其名,序列密码单独加密每个位,分组密码加密明文分组。 分组密码(Block Cipher)每次只能处理特定长度的一块(Block),下面主要介绍分组密码。
对称密码的加解密主要依赖是比特的异或计算, 假设明文是 010101,密钥是 111111, 那么异或得到的密文就是 101010, 翻过来密文进行解密时候同密钥进行异或就可以得到 010101
3.1 DES 与 3DES
DES 全称是 Data Encryption Standard, 1977 年被 FIPS 采用,基本结构为 Feistel 网络/结构。目前不应被用于现有或新的加密用途。
Feistel 网络中,加密和解密可以用完全相同的结构实现,加密的各个步骤被称为轮,轮数可以任意增加。
DES 就是一种 16 轮循环的 Feistel 网络。 即每次输入输出后左右侧对调,然后使用新的子密钥通过轮函数进行异或。下面是一个三轮的 Feistel 网络。记住 DES 是 16 轮的。
而 3DES 就是将 DES 重复 3 次得到的。
不过可以发现 3DES 加密过程是加密-解密(这一步是为了能够向下兼容)-加密,如果 DES 密钥 1,2,3 相同那么其实 3DES 就和 DES 是一样的。 如果 1,2,3 完全使用不同的密钥就叫 DES-3DES,如果 1,3 相同,2 不同就是 DES-EDE2。
3DES 目前暂时允许使用,但不应用于新用途。
3.2 AES
全称是 Advanced Encryption Standard,由 NIST 选拔作为 FIPS 标准。我最开始的时候以为 AES 是一种,其实 AES 是由一系列算法选拔得到的。1997 年开始募集(15 个算法中 5 个入围),2000 年选定分组密码 Rijndael(by 比利时密码学家 Joan Daemen & Vincent Rijmen)。
Rijndael 也是由多个轮构成,不过用的是 SPN 结构,不再是 Feistel 网络。主要分为 SubBytes(16 字节分组进行处理,获得一张拥有 256 个值的替换表 S-Box), ShiftRows(以 4 字节为单位的行进行某种规则向左平移,每一行平移的字节数不同), MixColumns(对 1 个 4 字节值进行比特运算), AddRoundKey(将 MixColumns 的输出与轮密钥进行异或)。完成从 SubBytes->AddRoundKey 算是 1 轮,Rijndael 结构需要重复 10-14 轮,解密时顺序相反,方向相反即可。AddRoundKey -> InvMixColumns -> InvShiftRows -> InvSubBytes
3.3 填充模式的优劣对比
分组意味着能处理特定长度的,针对任意长度的就要对分组密码进行迭代,迭代的方式成为模式。
OFB 模式与 CTR 模式的对比
CFB 模式与 OFB 模式的对比
4. 非对称密码
又称为公钥密码(Public-Key Cryptography), 主要是依托于人类目前尚无法快速求解离散对数的原理。
4.1 RSA
4.1.1 RSA 的加密和解密
4.1.2 签名与验签
一般有两种形式,一种是直接对消息签名,另一种是对消息的散列值进行签名。
4.2 ECC
全称为 Elliptic Curve Cryptography 椭圆曲线密码。
主要包含三个方面:
基于椭圆曲线的公钥密码
基于椭圆曲线的数字签名
基于椭圆曲线的密钥交换
4.2.1 DH 交换
4.3 应用与攻击方式:
应用:
公钥证书
SSL/TLS
攻击方式:
中间人攻击
对单向散列函数的攻击
利用数字签名攻击公钥密码
潜在伪造
4.4 混合密码系统
简单来说就是用非对称密码保护对称密钥,用对称密钥进行对数据的加解密。
加密
解密
5. 单向散列函数
英文名 One-way hash function,又称作消息摘要函数(Message digest function)、哈希函数、杂凑函数。输入成为消息(message)也成为原像(Message digest), 输出为散列值(hash value)也成为消息摘要(Message digest)或者指纹(fingerprint)
能够辨别出是否被篡改,但无法识别伪装。
特性:
根据任意长度的消息计算出固定长度的散列值
能够快速计算出固定长度的散列值
消息不同散列值不同(抗碰撞性)
具备单向性
应用:
检测软件是否篡改
基于口令的加密
消息认证码
数字签名
伪随机数生成器
一次性口令
常见的单向散列函数:
MD4、 MD5
SHA-1、SHA-256、SHA-384、SHA-512
RIPEMD-160
SHA-3
6. 消息验证码
英文名 Message Authentication Code, 输入为任意长度的消息和一个发送者与接收者之间共享的密钥,输出为固定长度的数据,即 MAC 值。
能够辨别篡改和伪装,但无法解决对第三方证明,以及防止否认
6.1 实现方法
使用单向散列函数实现使用 SHA1、SHA-224、SHA-256、SHA-384、SHA-512 所构造的 HMAC 分别称为 HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512
使用分组密码实现
其他方法(流密码,公钥密码)
6.2 应用与攻击方式
应用:
SWIFT (参考电子支付基础的一些分享资料)
IPsec
SSL/TLS
攻击方式:
重放攻击
密钥推测攻击
7. 伪随机数生成
很多地方都会用到随机数,生成密钥,密钥对,初始化向量,Nonce,盐。但是软件是没有办法生成真正的随机数的,软件生成的都是伪随机数。
生成伪随机数有以下几种方法:
杂乱的方法
线性同余法
单向散列函数法
密码法
ANSI X9.17
8. PGP
略,可参考,PGP: Pretty Good Privacy - Garfinkel Simson
9. 关于密码系统的信息安全常识
不要使用保密的密码算法
使用低强度的密码比不进行任何加密更危险
任何密码总有一天都会被破解
一次性密码本理论上是无法破译的,但实际过程因为面临密钥配送问题,保存问题,重用问题,同步问题,生成问题而没有得到使用。
盐主要是防御字典攻击的
0x02 加密基础设施
这里先介绍常规做基础设施需要的特性有哪些,然后针对每一种不同的不同的设施稍作补充。 图是临时画的,包含了去做一套加密基础设施涉及到的不同方面。下面我会简单介绍图中的几块。
(绘制 by 作者)
Integration(Application/System)
Logging Management
Monitoring Management
Identify Management
Access Management
etc...
Optimization (Tech/Operation/...)
Workflow & Pipeline
Support Template
HW/SW Performance
Scenario
etc ...
Customer Service (Application/User/...)
Support Service
Self Service
在知道在做某些 Solution 时需要考虑到的点后,我们看下加密基础设施的大概 Scope 是什么样的(绘制 by 作者):
以 PKI 进行举例(之前曾经总结过一篇关于CA/RA文章, 以及另一篇关于HSM的), 在确定了建设 PKI 的方案后,对逻辑架构和物理架构进行设计,同时包含了与其他系统/服务(日志,监控,权限,加密机等)的整合,在系统进行部署并提供服务后。继续建设整合服务,例如提供 Support template, Customer Service,以及提供一定的 SDK 让其他系统/应用进行调用。不同功能的 CA 产生的不同证书提供给不同的应用或用户,其中提供给员工用于访问内部系统的证书是不是可以通过 MDM 工具推送到员工的 Laptop,以及 LB 上的用于提供 TLS 服务的证书,以及所有需要根证书的地方等等。尽量优化日常运营中繁复的工作。
同样的针对 HSM,KMS 或者说 Secret Management 之类的也是类似的做法。
0x03 总结
纸上得来终觉浅,绝知此事要躬行。
0x04 参考资料
图解密码技术
应用密码学
深入浅出密码学
商用密码应用安全性评估白皮书
PGP: Pretty Good Privacy - Garfinkel Simson
版权声明: 本文为 InfoQ 作者【I】的原创文章。
原文链接:【http://xie.infoq.cn/article/279ac02157fc36085f7b60138】。文章转载请联系作者。
评论