算法概述
第零节:算法概述
在这里,先概要的讲一讲几种通用算法的分类。
- 恺撒加密
- Hash/摘要算法(Digest)
- 对称加密算法
- 非对称加密算法
- PBE
- Rabbit
- TEA
- Elgamal算法
- 椭圆曲线算法 (Elliptic Curves)
- 圆锥曲线算法
对称算法与非对称加密算法
对称算法
- 密钥管理:比较难,不适合互联网,一般用于内部系统
- 安全性:中
- 加密速度:快好几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特数据),适合大数据量的加解密处理
非对称算法
- 密钥管理:密钥容易管理
- 安全性:高
- 加密速度:比较慢,适合小数据量加解密或数据签名
单纯的使用对称加密(如:AES) 的来加密两者传输中的数据的时候首先要让双方要知道秘钥是什么,可问题就是这个秘钥的传输是一个问题,直接通过网络传输是极其不安全的。
因为网络一旦被监听,这个秘钥就没有存在的意义了,而监听一个网络,难度并不是很大,所以我们不能直接使用 AES。
再看非对称加密算法(如:RSA),由于RSA是非对称的加密算法,私钥用来解密,公钥用来加密,公钥之所以带“公”,也是因为其本身就是就需要对外公开的,并不需要保密。
这样对于通信双方来说,建立链接之后的第一件事就是双方分发自己的公钥给对方,一端数据传输给对方的时候,先使用接收方发过来的公钥对数据进行加密后再发送,之后接收方会使用自己的私钥解密数据得到明文,然后再使用对方的公钥加密敏感的响应数据,之后再发送给对方,对方拿自己的私钥解密。
这样就完成了数据的加密传输通信。我们分析这个过程可以知道,整个传输过程中,只是对外暴露了公钥,这时即使黑客拿到了公钥,但是也无法解密传输过程中的数据,因为只有私钥才能解密数据。这样看起来就完美的解决了双方的加密通信问题。
但是这种非对称加密算法(如RSA)相比 AES 比较耗资源,对于一个访问量比较大的web服务来说,是不推荐的。
通过上面的分析,我们结合两者的优点,创建新的使用模式。就形成了证书的逻辑。
当客户端要与服务器端通信的时候,客户端先使用 RSA 算法生成自己的公钥和私钥,然后把公钥以明文的方式发送给服务器,服务器拿到公钥,并使用从客户端接收到的公钥对 AES 的秘钥进行加密然后返回给客户端。
客户端接收到加密后的 AES 秘钥后就可以直接使用自己的私钥解密 AES 的秘钥,从而得到 AES 秘钥明文。
之后两者的通信就可以使用 AES来实现敏感信息的加密了。
这个操作就即解决了 AES 秘钥的传输问题,又解决了 RSA 算法效率不高的问题。
BASE64加密/解密
Base64 编码是我们程序开发中经常使用到的编码方法,它用 64 个可打印字符来表示二进制数据。
这 64 个字符是:小写字母 a-z、大写字母 A-Z、数字 0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是 65 个字符),其他所有符号都转换成这个字符集中的字符。
Base64 编码通常用作存储、传输一些二进制数据编码方法,所以说它本质上是一种将二进制数据转成文本数据的方案。
MD5(Message Digest Algorithm)加密
MD5是一种广泛使用的散列函数。
是将任意长度的数据字符串转化成短小的固定长度的值的单向操作,任意两个字符串不应有相同的散列值。
它被用于各种安全应用,也通常用于校验文件的完整性。但MD5不耐碰撞攻击,因此不适用于SSL证书或数字签名。
DES(Data Encryption Standard)对称加密/解密
DES 是一种对称加密算法,所谓对称加密算法就是:加密和解密使用相同密钥的算法。DES 加密算法出自 IBM 的研究,后来被美国政府正式采用,之后开始广泛流传。
但近些年使用越来越少,因为 DES 使用 56 位密钥,以现代的计算能力,24 小时内即可被破解。
使用 Java 实现 DES 加密解密,注意密码长度要是 8 的倍数。加密和解密的 Cipher 构造参数一定要相同,不然会报错。
3DES
它是 DES 向 AES 过渡的加密算法,使用 3 条 56 位的密钥对数据进行三次加密。是 DES 的一个更安全的变形。
它以 DES 为基本模块,通过组合分组方法设计出分组加密算法。比起最初的 DES,3DES 更为安全。
AES(Advanced Encryption Standard) 加密/解密
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),
在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密标准。
这个标准用来替代原先的 DES,已经被多方分析且广为全世界所使用。
简单说就是 DES 的增强版,比 DES 的加密强度更高。
HMAC(Hash Message Authentication Code,散列消息鉴别码)
HMAC是一种使用加密散列函数进行消息认证的机制,可以与任何迭代密码散列函数结合使用。
使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。
接收方利用与发送方共享的密钥进行鉴别认证。
恺撒加密
它是一种替换加密的技术,明文中的所欲字母都在字母表上向后(或向前)按照一个固定的数目进行偏移后被替换成密文。
SHA(Secure Hash Algorithm,安全散列算法)
SHA全名叫做安全散列算法,是FIPS所认证的安全散列算法。SHA 散列函数由美国国家安全局 (NSA) 设计。
能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。
且若输入的消息不同,它们对应到不同字符串的机率很高。
SHA-1
SHA-1 是现有 SHA 散列函数中最成熟的,它用于各种安全应用程序和协议。
但随着新攻击的发现或改进,SHA-1 的抗攻击能力一直在减弱。
SHA-2
SHA-224、SHA-256、SHA-384,和SHA-512合称为SHA-2。 SHA-256是SHA-2集合中的四个变体之一。
虽然它提供了更好的安全性,但是它的应用不如SHA-1广泛。
SHA-512在很大程度上与SHA-256相同,但在64位计算机上SHA-512比SHA-256更快(因为它们在内部使用64位算术);在8位,16位和32位计算机上,SHA-256比SHA-512更快。
SHA-3
SHA-3是第三代安全散列算法(Secure Hash Algorithm 3)。
SHA-3可以配置输出散列长度为224,256,384或512位,默认为512位。
RSA 加密/解密
RSA算法是一种非对称加密算法,所谓非对称就是该算法需要一对密钥,若使用其中一个加密,
则需要用另一个才能解密。
目前它是最有影响力和最常用的公钥加密算法,能够抵抗已知的绝大多数密码攻击。
从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
该算法基于一个的数论事实:
将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
由于进行的都是大数计算,RSA 最快的情况也比 DES 慢上好几倍,
比对应同样安全级别的对称密码算法要慢 1000 倍左右。
所以 RSA 一般只用于少量数据加密,比如说交换对称加密的密钥。
PBE 加密/解密
PBE是一种基于口令的加密算法,使用口令代替其他对称加密算法中的密钥,
其特点在于口令由用户自己掌管,不借助任何物理媒体;
采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。
PBE算法是对称加密算法的综合算法,常见算法PBEWithMD5AndDES,使用MD5和DES算法构建了PBE算法。
将盐附加在口令上,通过消息摘要算法经过迭代获得构建密钥的基本材料,
构建密钥后使用对称加密算法进行加密解密。
算法/密钥长度/默认密钥长度:
- 1.PBEWithMD5AndDES/56/56
- 2.PBEWithMD5AndTripleDES/112,168/168
- 3.PBEWithSHA1AndDESede/112,168/168
- 4.PBEWithSHA1AndRC2_40/40 to 1024/128
工作模式:CBC
填充方式:PKCS5Padding
SM4 国密算法
SM4国密算法是一种对称密码算法,也称为SM4分组密码算法,
它在中国国家密码管理局发布的国家密码算法标准中被广泛采用。
SM4分组密码算法各个分组长度一般为128bit,密钥长度也为128bit。
加密算法和密码扩展算法都采用32轮非线性迭代机制。
PBKDF2
PBKDF2是一个用来对用户口令(password)进行加密的函数。
在密码学的许多应用中,用户安全性最终取决于用户口令,由于用户口令通常不能直接用作密钥,因此需要进行一些处理。
它的基本原理是通过一个伪随机函数(例如HMAC函数),把明文和一个盐值作为输入参数,生成一个散列值,
然后将这个散列值作为一个加密key,应用到后续的加密过程中,以此类推,将这个过程重复很多次,
从而增加了密码破解的难度,这个过程也被称为是密码加强。
如果重复的次数足够大,破解的成本就会变得很高。
- Salt 表示盐值,一个随机数
- iterations 操作次数
SM
国密算法也分为对称算法和非对称算法,对称算法包括了SM1、SM4、SM7、祖冲之密码(zuc),非对称算法包括SM2、SM9,而SM3是属于哈希算法。
其中SM1和SM7对外是不公开的,想要调用就必须通过特殊的加密芯片接口才能使用。
数据库加密系统
通过系统中加密、DBMS内核层(服务器端)加密和DBMS外层(客户端)加密。
且能够实现对数据库中的敏感数据加密存储、访问控制增强、应用访问安全、安全审计以及三权分立等功能。