TCP/IP协议二十一:HTTPS/SSL协议详解(1)加密原理

TCP/IP协议二十二:HTTPS/SSL协议详解(2)HTTPS三次握手及其详解
https://blog.csdn.net/lqy971966/article/details/125391550

1. 加密历史–对称加密算法

1.1 加密

加密就是利用技术手段把重要的数据变为乱码(加密)传送

如:
123 二进制为:1111011
简单加密规则(奇数位取反)就变成加密数据: 0101110
对方收到数据之后解密得到 123

1.2 密钥

加密或解密使用的规则,就叫做密钥

例子:

1. 上面的奇数位取反的方法就是密钥
2. 对“Hani i love u”进行加密,密钥y=12345,其二进制:11 0000 0011 1001,假设生成:0xAkji893
	y这种加密算法/规则就叫做密钥

1.3 对称加密算法

1976年以前,所有的加密方法都是同一种模式

1.甲方选择某一种加密规则,对信息进行加密;

2.乙方使用同一种规则,对信息进行解密。

如上面的对123的二进制进行奇数位取反加密,加密和解密用的同样的密钥:就是奇数位取反。

对称加密算法:

由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"

缺点:

甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。

2. 非对称加密算法

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。
这个算法启发了其他科学家。

人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥

这种新的加密模式被称为"非对称加密算法"。

(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。

(2)甲方获取乙方的公钥,然后用它对信息加密。
  (3)乙方得到加密后的信息,用私钥解密。

如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。

2.1 RSA算法

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。

这种算法用他们三个人的名字命名,叫做RSA算法。

这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。
也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。
因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

2.1.1 RSA 非对称加密原理

RSA加密算法原理图:
在这里插入图片描述

参考: https://blog.csdn.net/jijianshuai/article/details/80582187

RSA详细推导参考:RSA算法原理(二)
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

2.1.2 RSA通信示例

在实际应用中我们以Https通信为例来分析RSA的使用过程,现在模拟https通信中client和server的常见对话:

client >>server:你好,我是clientA
server>>client:	你好,我是server。
client >>server:请证明你是Server,str [str 是随机字符串]
server>>client:str{"love u"-hash} //{}中是私钥RSA加密后内容,hash为str的hash
	[client 收到str原文,计算str的hash1,通过证书中RSA公钥解密XXX-hash,获得密文中的内容与hash2,
	比较解密内容与原内容的hash值是否一致,解密的hash和原文计算的hash是否一致,
	都一致说明服务器是真的,可以进行下一步]
client >>server:你确实是server,这是RSA加密算法的秘钥X={0xj8KJ344},以后就用X加密算法通信吧
server>>client:{可以,我做好通信准备了}	[内容经X算法加密]
client >>server:{查询一下我的账户余额}	[内容经X算法加密]

3. 公钥密码体制(public-key cryptography)

公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。
解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。

公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。
两者都可以加解密数据,公钥加密的内容只能私钥解密,私钥加密的内容只能公钥解密

4. 数据签名

签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过。

签名一般使用的方案:

是对信息做一个hash计算得到一个hash值,然后把这个hash值(加密后)作为一个签名和信息一起发出去。
Hash值需要进行加密是为了防止有人修改hash值。

接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过。

1. 这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。
2.不同的内容一定会得到不同的hash值,hash的加解密是为了防止传输过程中被更改,造成信息是否被篡改无法准确验证。

参考:
https://blog.csdn.net/luo_boke/article/details/106013674
RSA算法原理(一)
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
RSA算法原理(二)
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值