OpenSSL学习笔记二:理论

参考 https://blog.youkuaiyun.com/liao20081228/article/details/77159039

参考 《深入浅出HTTPS》

未完待续…

通信以明文传输有以下问题

  1. 数据被截取->加密
  2. 数据被篡改->信息校验码
  3. 数据被伪造->数字签名

对称加密

核心理论:同一密钥对明文异或后,再对得到的密文异或就可得到明文

显著特点

* 加解密使用同一个密钥  
* 加解密过程完全相同  

优点

* 加解密的高速度和使用长密钥的难破解性  

缺点

* 多用户需要多密钥,管理不便

分类

1. 分组加密  
	* DES
	https://blog.youkuaiyun.com/luckydog612/article/details/80547781
	DES使用的密钥长度为64比特, 但由于每隔7个比特设置一个奇偶校验位, 因此其密钥长度实际为56比特
	11111111和00000000效果一样
		+ 长度 56/8  
	* 3DES  
	3DES的加密过程为密钥1加密->密钥2解密->密钥3加密
	3DES的解密过程为密钥3解密->密钥2加密->密钥1解密
	    +长度 128/8(双倍长密钥,go加密需要填充前8byte到结尾) 192/8(三倍密钥长)  
	* AES<http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html>  
		+ 长度 128/8 192/8 256/8
	* 其他  
2. 流加密  
	* RC4  
	* 其他
3. 迭代模式
	- ECB, Electronic CodeBook mode, 电子密码模式, 不推荐使用  
		在ECB模式中,将明文分组加密之后的结果直接成为密文分组。
	- CBC, Cipher Block Chaining mode, 密码分组链接模式, 推荐使用  
		加入初始化向量IV, IV长度是分组长度, 加密过程如下
		IV2 = plainText1 XOR IV XOR KEY  
		IV3 = plainText2 XOR IV2 XOR KEY  
	- CFB, Cipher FeedBack mode, 密文反馈模式, 不推荐使用  
	- OFB, Output FeedBack mode, 输出反馈模式, 不推荐使用  
	- CTR, CounTeR mode, 计数器模式, 推荐使用  
		加入计数器Nonce, Nonce与IV等同理解, 加密过程如下
		Nonce XOR KEY XOR plainText1, (Nonce+1) XOR KEY XOR plainText2, ...
	- GCM, Galois/Counter Mode, G就是指GMAC, C就是指CTR, 推荐使用
	https://blog.youkuaiyun.com/andylau00j/article/details/79269303
		man 3 EVP_EncryptInit
		以下几个可以设置
		EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, taglen, tag);
		EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_TAG, taglen, tag);
4. 填充模式padding
	当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据进行填充  
	- PKCS#5
	- PKCS#7
		根据填充的字节数量进行对应的填充

非对称加密

特点

  1. 加密密钥和解密密钥不同
  2. 密钥对中的一个密钥(公钥)可以公开
  3. 根据公开密钥很难推算出私人密钥

常用算法

  1. RSA
    • 可用于数字签名和密钥交换
  2. DH
    • 用于密钥交换
  3. DSA
    • 用于数字签名

随机数

要求: 效率高, 随机性, 不可预测性, 不可重现性
/dev/urandom
/dev/random


Hash算法

  1. MD5 有点不安全
  2. SHA
    • SHA-1: SHA-1 不安全
    • SHA-2: SHA-256、SHA-512、SHA-224、SHA-384
    • SHA-3: SHA3-256、SHA3-512、SHA3-224、SHA3-384

消息验证码

  1. CBC-MAC
  2. HMAC(常用)

数字签名

签名算法建议对消息摘要进行签名,因为摘要值的长度是固定的,运算的时候速度会比较快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值