加密算法理论知识概述
RSA公钥加密算法
原理:基于大数的因式分解十分困难
使用时生成一对RSA密钥,一个作为公开密钥,对外公开,一个是保密密钥由用户保存,加密时使用公钥对明文进行加密,解密时使用密钥进行解密
属于非对称加密算法
图解公钥和私钥的生成过程
欧拉数的计算公式如上
加密过程:
X^E mod N = Y
其中X为明文,E为公钥,N为大整数,Y为密文,mod取余运算
解密过程:
Y^D mod N = X
其中Y为密文,D为私钥,N为大整数,X为明文,mod取余运算。
AES高级加密标准
最常见的对称加密算法
一共涉及了四种操作:字节替代,行移位,列混淆,轮密钥加
下图是十轮加密的流程图:
由于是对称加密算法,所以加解密的速度非常快,适合频繁传输的数据进行加密
ECC椭圆加密算法
其优势是使用更小的密钥取得更好的安全性,在私钥的处理上比RSA,DSA速度更快,存储空间更小,带宽要求更低
Ed25519数字签名算法
是一种在扭曲爱德华兹曲线上使用Schnorr机制来实现的一种数字签名机制。
- 签名和验证的性能高,安全性好,签名过程不依赖随机数生成器,不依赖hash函数的防碰撞性,没有事件通道攻击的问题
- 在 ED25519 的算法设计中,通过使用密码学哈希函数来代替伪随机数发生器,避免了签名算法的使用者因为采用的随机数生成器不够随机化而产生的安全问题。ED25519 的实现除去私钥的生成之外,签名过程已经完全脱离对随机数发生器的依赖,避免了因为随机化问题而导致密钥的泄露与安全性问题。
X25519椭圆加密算法
X25519是进行蒙哥马利迪菲赫尔曼密钥交换的椭圆曲线算法
- Curve25519是Bernstein在2006年构建的蒙哥马利曲线。
- 其中25519表示椭圆曲线所依赖的底层素数域的特征为2^255-19。
- 基于曲线Curve25519, Bernstein构建了Diffie-Hellman密钥交换协议X25519.与传统的ECDH密钥交换协议相比, X25519协议最显著的特点是仅依赖椭圆曲线上点的x坐标。
CBC
密文分组链接加密模式
将明文分组与前一个密文进行异或运算后得到新的密文再与后一组进行异或运算,直到得到最后的密文
需要注意的是加密第一个明文分组时,不存在密文分组,因此需要准备一个bit序列(又称为初始化向量),每次加密都会随机产生一个不同的序列来作为初始化向量
CTR
计数器模式加密是对一系列输入数据块进行加密,产生一系列输出块,输出块与明文异或得到的密文
其最大的优势是可以并行执行,适合高速传输需求
但是CTR不能提供密文消息完整性检验功能即无法防止篡改
CCM
CTR加密 + CBC-MAC认证
可以同时生成认证信息并对数据进行加密
认证处理使用CBC-MAX
操作流程:
需要的信息:
k——密钥
N——nonce N 长度为15
m——明文信息
数据加密采用CTR模式