对称加密
- 所谓对称加密就是:加密和解密用的是同一个规则。这个算法是人们能想到的最简单的结构,就好比购物:卖家给包装了,买家再拆掉一样。
在代码中举个例子:
1. 要传输'{age:18}',字符串对应有asiii或者unicode,假如这个字符串对应100000,
2. 我们设定密码等于5,密文就等于500000,
3. 收到数据的人知道了密码,直接500000/5=100000,在通过解码就知道传输的内容。
因为密码也是通过http传输的,所以密码就容易泄露,尽管人们加了很多其他防护逻辑用来保证不泄密,但是从理论上会泄密,实现上就一定可能会泄密。
非对称加密,RSA应运而生
- 故事背景:1976年美国两个计算机科学家提出了非对称加密的构思:加密和解密用不同的密码。两年之后,一个叫Rxxxx,一个叫Sxxxxx,一个叫Axxxx,三个麻绳的教授搞出来了这个非对称加密的实现,起名:RSA算法。
- 大概原理
1. A要和B通讯,B来生成公钥和私钥,公钥给A用来加密传输的内容,私钥自己留着用来解密传来的内容
- 这是一个纯数学的原理
下边看B的一顿骚操作:
1. 找两个不想等的质数p和q,
2. 得到n=q*p,其中n转化为二进制的长度决定解密的难度。
3. 欧拉函数: φ(n)=(p-1)*(q-1)
4. 找公钥e:1<e<φ(n),其中e和φ(n)互为质数
5. 找密钥d:e*d/φ(n)....1 e乘以d除以φ(n)余1
- 加密
设传输内容为m,m的e次幂再除以n,求余数c,c就是加密之后的内容
- 解密
c的d次幂除以n,求余数m,得到的就是m,这个已经在数学上证明过的。
- 反推
1. 传输过程中暴露的有:n、e、c
2. 要想解密需要知道的:n、d、c
3. 所以需要求d,因为e乘以d除以φ(n)余1
4. 所以需要求φ(n),因为φ(n)=(p-1)*(q-1)
5. 所以需要求p和q,现在有n,且n=p*q
6. 所以问题就变成了把n分解为p和q
7. 极大数分解质因数,是一个很难的过程
- 上面的是一个基本原理,在真正的https请求上,还加了很多其他逻辑,比如把传入内容分段切割加密,部分环节加上对称加密,再引来大名鼎鼎的hash
- 量子计算机做极大数质因数分解,给RSA带来了威胁,因为这玩意算得太快了,
量子计算机是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置
- 下一代加密,可能是量子加密。
- 下下一代,我也不知道……
网友评论