伴随这互联网技术的发展,数据安全成了头等大事。数据安全的范畴很大,包含:技术安全、服务安全、存储安全、传输安全等。本文主要是从传输安全的层面,如何开发安全的API。
目前规划的是几篇。
- 基础知识
- JOSE 简介,以及JWT、JWE 的实现。
- 证书
- https 如何保护 web
oauth2.0
本篇文章的主要内容是梳理了几种加密算法以及校验算法,比较学术,可以为后面的实践打下基础。 我们开始吧。
信息安全算法
加密相关算法
现代密码学中,把算法的加密技术主要分为:
- 单密钥形式
- 双密钥形式
- 无密钥模式
单密钥模式,也称为对称密钥模式,加密和解密方采用同一个密钥。采用这种模式的算法就叫做对称加密算法。
双密钥模式,也称作非对称密钥模式,加密和解密方采用不同的密钥。采用这种模式的算法就叫做非对称加密算法。
无密钥模式,也称作随机密钥模式,每次的密钥都是随机生成,使用一次之后失效。这是一种理想的加密模式,由于设计难度大,目前未得到广泛应用,这里不涉及讨论
对称加密算法 Symmetric-key algorithm
对称加密算法,又称私钥加密算法,顾名思义加密和解密过程中只用到一个密钥,该密钥也称作私钥。常见的对称加密算法有:DES、IDEA(基于DES)、3DES(基于DES)、RC4、RC5、RC6、AES等。
对称加密有以下特点。
- 速度较快,可适用于大数据加密;
- 算法公开,密钥安全决定该算法安全;应用过程中要严格管理密钥。
非对称加密算法 Asymmetric Encryption
非对称加密算法,又称公私钥加密算法,顾名思义加密和解密过程使用不同的密钥。公钥即为公开的密钥,一般用作加密;私钥即为私有的密钥,一般用作解密。 常见的非对称加密算法有:RSA、ECC、DSA等
非对称加密算法 的特点
- 速度慢,用于较小数据的加密;
- 安全系数高
信息校验相关算法
信息校验相关算法主要分为3类:信息摘要、信息认证、信息签名。
信息摘要(MD-Message Digest)
信息摘要又称数字摘要,采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
Hash算法又称散列函数,是一种单向的,从明文到密文的映射过程。
常见算法的Hash算法有:MD2、MD4、MD5、HAVAL、SHA-1、SHA256等。
特点
- 过程不可逆。
- 输出数据长度固定。
- 保证数据的完整性。
MA-Message Authentication
消息认证是指通过对消息或者消息有关的信息进行加密或签名变换进行的认证,目的是为了防止传输和存储的消息被有意无意的篡改,包括消息内容认证(即消息完整性认证)、消息的源和宿认证(即身份认证0)、及消息的序号和操作时间认证等。
消息认证通常在摘要算法基础上再做一个对称或非对称加密算法,用于防止信息被窃取,用于证明原文的完整性和准确性,也就是说,消息认证主要用于防止信息被篡改。
常用的消息认证算法是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥,通常也称为[HMAC](http://www.ietf.org/rfc/rfc2104.txt算法。
特点
- 保证数据完整性、准确性
- 过程不可逆
- 输出数据长度固定
数字签名(DS-Digital Signature)
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
常用的数字签名算法都是信息摘要的基础上用一个非对称加密算法进行加密处理。
常用的数字签名算法有:RSA、DSA、ECDSA等。
- 保证数据的完整性、正确性、不可抵赖性。
- 过程不可逆。
小结
算法类型 | 特点 | 算法举例 |
---|---|---|
对称加密 - Symmetric Encryption | 速度快、可用于处理大数据、文件 | DES、3DES、AES |
非对称加密 - Asymmetric Encryption | 速度慢、用户小数据 | RSA、ECC |
消息摘要(MD) - Message Digest | 完整性 | MD2、MD4、MD5、SHA1、SHA256 |
消息认证(MA) - Message Authentication | 完整性、真实性 | HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA384 |
数字签名(DS) - Digital Signature | 完整性、真实性、不可抵赖性 | RSA、DSA、ECDSA |
安全方案演变
1. 对称加密
互联网发展起来后,部分企业开始注重安全,基于对称加密算法,设计了此方案。
整个过程中只涉及到AES(对称)算法,仅且对传输中的数据进行加密。 如图所示:
安全性
安全项 | 描述 |
---|---|
数据安全 | 通过AES实现 |
数据完整性(防篡改) | 无 |
数据真实性(防伪造) | 无,密钥暴露之后,可以被任意伪造 |
这个方案有很多缺点。
- 密钥单一,无法实现动态密钥管理
- 无法验证数据完整性
- 密钥暴露之后,整套方案的安全性不攻自破
2. 对称加密+消息摘要
这个方案是在 第一个方案上添加 消息摘要,保证数据完整性,但是其他两个缺点一样存在。
安全性。
安全项 | 描述 |
---|---|
数据安全 | 通过AES实现 |
数据完整性(防篡改) | 通过信息摘要实现 |
数据真实性(防伪造) | 无,密钥暴露之后,可以被任意伪造 |
缺点:
- 密钥单一,无法实现动态密钥管理
- 密钥暴露之后,整套方案的安全性不攻自破
3. 对称加密+消息认证
对称加密+消息摘要的方式已经在一些对安全性要求不是特别高的场合下使用了,但是对于安全性要求特别高的行业比如金融、教育等行业,还有待提高。所以人们改进了摘要机制,把消息摘要用消息认证码替换,形成了HTTP+对称加密+消息认证的方案,这个方案 的特点是用消息认证码替换摘要,在普通的摘要基础上增加双向的校验,保证了数据的真实性。
安全性跟缺点跟第二种方案差不多。
4. 非对称加密
前面的方案都是基于非对称加密算法,统一的缺陷就是密钥单一,无法实现动态管理,密钥本身的安全性得到了很大的威胁。基于这个考虑,提出了此方案。
用非对称加密算法,整体替换对称加密算法。安全性都得到了保证,唯一的缺陷就是非对称加密算法的效率太慢,不适合大数据的加密。
安全性
数据安全 | 通过RSA实现 |
数据完整性(防篡改) | 通过RSA实现 |
数据真实性(防伪造) | RSA的公钥和私钥配对实现 |
- 性能低下,速度慢
- 不适用于大数据以及文件的加解密
5. 对称加密+消息认证+非对称加密
上述所有的方案都有缺陷,缺陷本身来源于加密算法,那么有没有一种办法把对称加密和非对称加密结合起来,互补对方的缺陷呢?答案是肯定,人类的智慧是无穷,于是想到这种方案:
报文用对称加密,对称算法的密钥用非对称加密,这样就兼顾了效率与安全。如下图所示,用AES+认证+RSA举例:
从安全的层面,该方案已经足够安全,能够达到绝大数的安全需求。现在市面上用此类方案的公司也很多。
1,AES加密原始报文,速度快
2,HMAC对AES结果认证码,确保数据真实性
3,每次AES和HMAC的密钥都是随机生成,达到动态密钥的效果
4,密钥的安全由RSA算法保证,数据小,发挥RSA的优点
5,RSA的密钥为2组,实现了双向认证。
总结
本文对加密算法的基础知识进行了梳理,探讨了对称加密、非对称加密、消息认证、数字签名等安全技术,及其在实际应用中的安全方案演进。结合对称加密的高效率与非对称加密的高安全性,现代传输安全方案在性能和安全性之间找到了平衡。这些理论为后续讨论如何在实际 API 开发中实现传输安全奠定了基础。