前言:
此时小伙伴们对“简单的异或加密算法”都比较注重,你们都需要剖析一些“简单的异或加密算法”的相关文章。那么小编也在网络上搜集了一些有关“简单的异或加密算法””的相关文章,希望咱们能喜欢,看官们一起来了解一下吧!密码学简介
是一门通信安全的科学,现已成为了我们日常生活的一部分
安全核心需求
•保持秘密(机密性)
•验证身份(真实性)
•保证传输安全(完整性)
构建基块
最底层,使用密码加密依赖于各种加密基元
各个基元为特定功能设计,如基元加密、完整性检查等
将它们组合成方案和协议,从而提供可靠的安全性
对称加密算法
对称加密算法应用较早、种类繁多、效率较高、技术成熟,是一类混淆算法,能够让数据在非安全信道上进行安全通信
分类
序列密码
RC4、RC5算法,ChaCha20-Poly1305算法
分组密码
AES算法,DES算法,3DES算法,Blowfish算法,IDEA算法
加解密使用相同的密钥
对称加密算法 - 序列密码
将一字节的明文输入加密算法得到一字节的密文输出,
在对端进行相反操作
序列密码核心是生成一串称为密钥序列的无穷序列
加密将密钥序列一字节和明文序列一字节进行异或操作
异或操作可逆,解密就是密文序列一字节和密钥序列
相同字节进行异或操作
对称加密算法 - 序列密码
对称加密算法 -分组密码
每次加密一整块数据,现代分组密码倾向使用128位16字节
大小的块
分组密码模式
ECB,CBC,CFB,OFB,CTR,GCM
TLS_RSA_WITH_AES_256_CBC_SHA256
对称加密算法 - aes
散列函数(消息摘要)算法
加密无需密钥,加密不可逆
将任意长度的输入转换为固定长度的输出算法
输入变化敏感
MDx,Sha-x
消息验证代码(MAC)
散列函数缺点
用于验证数据完整性,仅在数据的散列和数据本身分开传输的条件下才有效
MAC以身份验证扩展了散列函数的密码学函数
任何散列函数都可以用作MAC的基础,另一基础是基于散列的消息验证代码HMAC,其本质是将散列密钥和消息以一种安全的方式交织在一起
非对称加密算法
非对称加密算法需要两个密钥(公钥私钥对)
用公钥对数据进行加密,只有对应的私钥才能解密
用私钥对数据进行加密,只有对应的公钥才能解密
常见算法
RSA、DSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法)
非对称加密算法
算法强度复杂、安全性依赖于算法与密钥
加解密速度相对较慢
非对称密钥体制有两种密钥,其中一个是公开的,不需要像对称密码那样传输对方的密钥,安全性好些
ECC(椭圆曲线加密算法)
无穷远点P∞
射影平面坐标系
坐标转换 A点(x,y)令x=X/Z , y=Y/Z (Z≠0) A点可表示为(X:Y:Z)
椭圆曲线方程Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3
Abel群 y2+a1xy+a3y = x3+a2x2+a4x+a6 O∞ (0:1:0)
椭圆曲线坐标点的加法运算 P + Q = R
阶:P,存在正整数n,使得nP=O∞,则n为P的阶
ECC(椭圆曲线加密算法)
加解密过程:
ECDH(椭圆曲线密钥交换)
密钥协商过程
密钥交换双方有共享曲线参数(E、N、G)
各自生成随机整数a、b,计算A=a*G, B=b*G
将A、B发给对方
分别计算Q=b*A Q`=a*B
Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q'
密钥交换算法
密钥交换是客户端和服务端通过协商方式得到主密钥的算法
在TLS中,会话安全性取决于称为主密钥(master secret)的48字节共享密钥
密钥交换的目的是计算另一个值,即预主密钥(premaster secret)
TLS支持许多密钥交换算法,能够支持各种证书类型、公钥算法和密钥生成协议
RSA这种算法体系中,密钥交换使用的RSA密钥也用于解密过去所有会话,即不支持前向保密
X.509v3证书
•tbsCertificate (to be signed certificate),待签名证书
•SignatureAlgorithm,签名算法
•SignatureValue,签名值
Diffie-Hellman
使用一种正向计算简单,逆向计算困难的数学函数,比如混色
dh密钥交换由6个参数组成,dh_p,dh_g,服务端、客户端各生成两个参数,相互发送其中一个参数dh_Ys、dh_Yc到对方,再经过计算,最终得到的共享密钥
Dh不足
•没有提供通信双方的身份信息,所以不能鉴别双方身份,容易遭受中间人攻击
•是密集型计算,容易遭受拒绝服务攻击,即攻击者请求大量密钥,被攻击者花费大量计算资源求解无用的幂系数
•无法防止重放攻击
SSL/TLS协议的握手过程
预共享密钥、共享密钥、会话密钥
标签: #简单的异或加密算法