主页 > 最新imtoken官方下载 > 密码学(图形密码学学习总结)

密码学(图形密码学学习总结)

最新imtoken官方下载 2023-05-14 07:23:49

1.对称密码

1.保密性(看不到明文)

2.算法:

DES(数据加密标准):已被暴力破解

三重DES(3DES、EDEA):过程加密(密钥1)-解密(密钥2)-加密(密钥3)

(1) DES-EDE2:Key 1和Key 3相同且

(2) DES-EDE3:密钥都不同

特点:安全性还可以,但是处理速度不高。

AES(Advanced Encryption Standard American Advanced Encryption Standard 组织的 AES 公选算法,免费供全世界使用):取代 DES 和三重 DES 的标准算法。

特点:安全、快捷

所选算法为Rijndael算法。

3、DES和AES是分组密码,只能加密固定长度的明文。 更多的密文需要分组迭代加密。

例如AES包长度为128位,则可以一次性加密128位的明文,生成128位的密文

4.分组密码模式

ECB模式:每组直接用同一个key加密。绝对不可用

CBC模式:推荐

点击率模式:推荐

循环流化床模式:推荐

OFB模式:推荐

ps:SSL/TLS协议使用CBC模式,使用三重DES 3DES_EDE_CBC和AES_256_CBC

缺点:密钥分发的问题。 --> 可以用公钥加密(非对称加密)来解决。

尝试解决运输问题:

(1) 提前分享秘钥

当然,通过会面、电话或邮件确认的方式分享秘钥是很自然的,这种场景下不会出现投递问题。

当密钥可以提前共享时,还有一个问题:每个人需要一把不同的密钥。 太多了。如果有N个人破解比特币私钥,那么就需要N*(N-1)/2个key

但是其他场景,比如浏览器和服务器,如何建立信任呢? 如何相信刚认识的朋友之间的消息?

(2) 密钥分发中心:每个人都通过中心进行分发。

缺点:数据库保存秘钥过多,秘钥分发中心责任重大

(3) Diffie-Hellman密钥交换方法

(4) 公钥密码学(非对称加密)

2.非对称密码学(公钥密码学)

1.保密性(看不到明文)

2.原理:消息接收者A生成一对密钥,包括公钥和私钥。 公钥发送给消息发送者 B。消息发送者 B 用 A 的公钥加密消息,以便 A 可以与私钥接口。

(窃听者可以看到接口的公钥和密文,但由于没有私钥,所以无法解密消息)

3.算法:

(1)RSA:应用最广泛

特点:明文、秘钥、密文都是数字。

(2)其他算法ElGamal法、Rabin法、椭圆曲线加密法。

椭圆曲线密码体制密钥短但强度高,应用也很广泛。

SSL/TLS使用椭圆曲线Diffie-Hellman密钥交换(ECDH、ECDHE)和椭圆曲线DSA(ECDSA);

比特币使用椭圆曲线 DSA 进行数字签名。

(3) Diffie-Hellman key exchange:无法从公众号中推导出密钥。 在 SSL/TLS 中使用。

1、通信方A生成随机数a,通信方B生成随机数b。

A发送Diffie-Hellman公开值:A的计算值(G^a / P), G, P

B发送Diffie-Hellman公开值:B的计算值(G^b / P)

2. A和B计算出的秘钥相等,都是G^(a * b) / p

A的计算密钥:(B的计算值)^a / P

B的计算密钥:(A的计算值)^b / P

说明:从公众号来看,是无法算出秘钥的(可以数学证明)。

Diffie-Hellman密钥交换计算出的密码为共享密码,无法避免中间人攻击。

4、缺点:

(1)加密大量文件时,速度慢(速度比对称密码低很多)

已解决:由混合密码系统解决。

(2) 中间人攻击

当A向B索取公钥时,B将公钥发送给A时,中间人C窃听、劫持并保存B的公钥,C将自己的公钥给A,从而使A通过C的加密信息C公钥可以读取。

C 也可以向 B 发送消息。

解决方案:需要公钥身份验证。

3、混合密码体制:对称密码+公钥密码(非对称密码)

1. 特点:会话密钥作为对称密码的秘钥,也是公钥密码的明文。

(1) 会话密钥(由伪随机生成器生成)

(2) 对称加密方式(消息、会话密钥)

(3) 公钥加密(session key, recipient public key)——会话密钥不会太长

长期考虑:公钥加密比对称加密更强大。

2. 应用:使用知名的加密软件PGP和SSL/TLS。

4.单向哈希函数(消息摘要,散列函数):不可逆,无法逆向明文

1.完整性(检测篡改)

2.特点:

(1)计算速度快,

(2) 无论消息有多长,计算出的哈希值也是固定长度的,比如SHA-256的长度总是236位(32字节)

(3) 消息不同,计算出的哈希值也不同

3. 应用:基于密码的加密(PBE)、消息认证码、数字签名、伪随机数发生器

4.算法:

MD5:已破解,不安全

RIPEMD-160:破碎,不安全

SHA-1:已破解,不安全

SHA-2包括SHA-224、SHA-256、SHA-384、SHA-512推荐

SHA-3:单向散列函数的新标准。 Keccak 被选为 SHA-3 算法。推荐

SHA3​​-224、SHA3-256、SHA3-384、SHA3-512

缺点:可以识别篡改,但不能识别伪装。

5. Message Authentication Code (MAC) 简称:单向哈希函数+共享密钥

1.完整性(检测篡改),验证对方身份(检测伪装)

2、实现方法:

(1) 单向哈希函数(消息+共享密钥)随消息一起发送

变体:单向哈希函数(对称加密(消息,共享秘密)+共享秘密)和对称加密(消息,共享秘密)一起发送

(2) 也可以使用AES等分组密码来实现:块密钥作为消息的共享密钥,采用CBC方式对消息进行加密。如AES-CMAC是消息认证码

(3) 也可以使用流密码和公钥密码。

GCM 是一种经过身份验证的加密方法,使用 AES_128_CTR 模式。 专用于消息认证码的GCM称为GMAC。

GCM 和 CCM(CBC 计数模式)均被列为推荐的身份验证加密方法。

3.算法:

HMAC:一种使用单向散列函数构造的消息认证码。 如HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512

4、应用:

(1) 银行间的报文传输是通过SWIFT(环球银行金融电信协会)完成的,SWIFT使用报文认证码。

(2) IPsec 通过使用消息认证码来增强IP 协议。

(3) SSL/TLS也使用消息认证码

(4) 公司系统调用接口:

案例一。 访问外部系统页面:A=xxx&B=xxx&time=xxx&sign=HMAC-SHA1(A=xxx&B=xxx&time=xxx , key)

模式:单向哈希函数(消息+共享秘密)+消息

情况 b. 支付地址:A=xxx&B=xxx&Sign=MD5(A=xxx&B=xxx&Key=xxx)

模式:单向哈希函数(消息+共享秘密)+消息

案例 C. 接口调用:MD5( URLEncoder.encode(content,'UTF-8') + signature Key) + URLEncoder.encode(content,'UTF-8')

模式:单向哈希函数(消息+共享秘密)+消息

在javascript中,encodeURIComponent函数一般用于对特殊字符进行编码。

Java 可以使用函数 URLEncoder.encode 对特殊字符进行编码。

百度地图开放平台也使用这个,但是使用的加密方式是公钥密码,签名密钥是公钥。

案例d。 接口调用:

对于 http:MD5(AES(content, SECRET_KEY) + SECRET_KEY) 和 AES(content, SECRET_KEY)

参数:accessKey=ACCESS_KEY&signature=MD5(AES(content, SECRET_KEY)+SECRET_KEY)

内容:AES(内容,SECRET_KEY)

对于 https:MD5(内容+ SECRET_KEY)和内容

参数:accessKey=ACCESS_KEY&signature=MD5(内容+SECRET_KEY)

内容:内容

5、缺点:

(1) 需要实现共享秘钥,所以也存在秘钥分发的问题。

解决方法:查看对称加密的几种方式。

(2) 无法防止拒绝。

例如:A给B发消息,B知道A发了消息,但是A可以否认。 这时候无法向第三方证明是A()发送的。

因为A和B都知道密码,所以有可能是B诽谤A破解比特币私钥,第三方无法判断谁对谁错。

解决方案:数字签名

(3)重放攻击:窃听者将A发送的消息原样发送一次给B。 如果是一次汇款,相当于多次汇款。

解决:

一种。 序号法:每次通信都在报文中加上一个序号,计算MAC时需要加上。 在下一次通信中,将序号加1。

难点:序列号需要由通信方维护和管理。

b. 时间戳 - 存在时间同步问题。 如果考虑到延迟,那么就会有重放攻击的机会。

C。 随机数:客户端保证每次请求的随机数是不同的——时间戳相关生成,服务端存储使用的随机数。

问题:服务器存储的随机数无穷大。

解决方案:时间戳与随机数一起使用。 比如服务器设置的时间戳误差为2分钟,那么随机数的存储只需要存储2分钟。

6、数字签名:单向哈希函数+公钥密码学

1.完整性(检测篡改)、认证对方身份(检测伪装)、不可否认性(对方无法否认)

2、原理:

(1) 发送方 A 生成公钥密码对。

(2) A发送的内容包括:A的私钥加密消息生成签名(签名中包含A的公钥——供对方或第三方认证机构验证签名)+消息

(3) B使用A的公钥验证A的签名

3、优化:第二部分有一个问题:A的私钥直接加密消息很慢,所以可以先用单向哈希函数处理,再用秘钥加密。 如下:

公钥密码学(单向哈希函数(消息),私钥)+消息(推荐)

四、说明

(1) 签名不保证机密性。 如果需要消息的机密性,可以结合对称加密。 见下文。

(2) 签名不能保证消息不被修改,但修改后可以识别。

(3) 数字签名的不可否认性:因为发送方有私钥

(4)数字签名代替纸质签名:存在风险,未来需完善

(5) 软件作者可以添加数字签名,下载者可以通过验证数字签名来识别软件是否被篡改。

(6) 数字签名只能检测是否被篡改。 如果软件作者有恶意行为,那就没办法了。

5.缺点:存在中间人攻击,需要证明公钥是否合法(公钥是否属于发送方)

解决方案:为了证明你的公钥是合法的,你需要一个数字证书。

7、公钥证书(certificate):个人信息(含公钥)+数字签名

1、工艺:

(1) A向认证机构注册自己的公钥。 证书颁发机构使用自己的私钥对 A 进行数字签名并生成证书。

(2) 发送消息时,不再直接发送自己的公钥,而是发送包含公钥的证书(包括认证机构对发送方公钥的数字签名和发送方公钥)。

(3) 接收方可以使用认证机构的公钥来验证数字签名,确认发送方公钥的合法性

解释:接收方收到证书并验证合法后,会将发送方的秘钥存储在电脑中,在下次通信中直接使用。

2. 注册公钥时,认证机构需要确认注册人的真实身份。 可能的方式:电话、邮件、查询第三方数据库、面对面认证和身份验证等,视认证级别而定。

3、证书标准:X.509规范

4.公钥基础设施(Public Key Infrastructure) PKI:公钥规范的总称。 X.509 也是 PKI 的标准。

(一)三要素:

用户:生成密钥对(也可以由证书颁发机构生成)、申请证书、申请吊销的证书

证书颁发机构:在用户注册时验证身份、颁发证书和作废证书。

存储库:存储证书

(2) 证书的级别由上级组织的公钥验证,迭代。 直到根CA(Root CA),根CA使用自己的公钥。

当然,这些过程都是通过邮件、浏览器等软件来完成的。

(3) 认证机构只需对公钥进行数字签名,任何个人或组织都可以成为PKI。 但是如果不使用权威的PKI,通信的双方就可能不信任对方。