AES
AES取代DES,是一种对称加密技术,分为AES-128/192/256, 其分组长度固定为128b,若最后一个分组长度不够,需要补全至128b长度。
所支持的秘钥长度分别为128b/192b/256b.
分组密码模式
AES是对明文进行分组之后逐块进行加密,分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密,而这个迭代方法就是称为分组密码的模式:
ECB模式:Electronic CodeBook mode 电子密码本模式
CBC模式:Cipher Block Chaining mode 密码分组链接模式
CFB模式:Cipher FeedBack mode 密文反馈模式
OFB模式:OutputFeedBack mode 输出反馈模式
CTR模式:CounTeR Mode 计数器模式
ECB模式
ECB模式中,明文分组加密直接变密文,若存在相同的明文,则生成相同的密文,存在被破译的风险。
CBC模式
先将明文分组与前一个密文分组进行XOR操作,再进行加密。密文分组像链条一样相互连接在一起。(因此无法对单独一个中间明文进行加密)
由于第一个明文分组不存在前一个密文分组,使得需要准备一个长度为一个分组长度的初始化向量IV.
CFB模式
该模式中,前一个密文分组会送回到密码算法的输入端,所谓反馈,这里是指返回输入端的意思。
明文没有通过加密生成密文,而是通过XOR生成密文:
OFB模式
该模式中,密码算法的输出会反馈到密码算法的输入中。
CTR模式
该模式通过逐次累加的计数器进行加密来生成秘钥流的流密码。
每个分组对应一个逐次累加的计数器,并通过计数器进行加密来生成秘钥流。
可以以任意顺序对分组进行加密解密。
计数器结构:
8字节的nonce在每次加密时不同,类似于IV.
序号会逐次累加。
RSA
RSA是一种公钥算法,用于公钥密码和数字签名。
在公钥密码应用中,公钥进行加密,私钥进行解密;
数字签名应用中,私钥进行加密,公钥进行解密。(私钥唯一,可以证明身份,并不是为了加密)
单向散列
单向散列函数有一个输入一个输出,输入为消息,输出为散列值Hash。单向在于输出不能反推出输入。其只能识别篡改,不能识别伪装。
散列值的长度和消息长度无关,为固定值。
SHA-1: 产生160b散列值的单向散列函数;
SHA-2: 支持SHA-256/384/512散列值长度。
消息认证码
MAC(Message Authentication Code)消息认证码是一种确认完整性并进行认证的技术,
输入为消息以及发送和接收者之间的共享秘钥key,输出为固定长度的数据。
和单向散列函数的区别在于需要输入一个key.
GCM是一种既认证,又加密的技术,其中C为CTR模式。
HMAC是一种使用单向散列函数来构造消息认证码的方法,其中H为Hash.
D-H秘钥交换
双方交换一些公开的信息就能生成出共享秘钥,秘钥并不会在网络上进行传递。