龙空技术网

优秀程序员必须掌握的密码学基础知识

furuhata 227

前言:

此时小伙伴们对“简单的异或加密算法”都比较注重,你们都需要剖析一些“简单的异或加密算法”的相关文章。那么小编也在网络上搜集了一些有关“简单的异或加密算法””的相关文章,希望咱们能喜欢,看官们一起来了解一下吧!

密码学简介

是一门通信安全的科学,现已成为了我们日常生活的一部分

安全核心需求

保持秘密(机密性)

验证身份(真实性)

保证传输安全(完整性)

构建基块

最底层,使用密码加密依赖于各种加密基元

各个基元为特定功能设计,如基元加密、完整性检查等

将它们组合成方案和协议,从而提供可靠的安全性

对称加密算法

对称加密算法应用较早、种类繁多、效率较高、技术成熟,是一类混淆算法,能够让数据在非安全信道上进行安全通信

分类

序列密码

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协议的握手过程

预共享密钥、共享密钥、会话密钥

标签: #简单的异或加密算法