我们如何决定密钥是什么?
如果只有发送方和接收方知道密钥,对称密钥密码术是很安全的。在凯撒密码中,密钥是一个偏移值,这个偏移值决定每个字母应该偏移多少。在我们的例子中,我们使用的偏移值是 3,但是也能是 4 或者 12。
不过这么设计会有个问题:在用信鸽传递信息之前,如果 Alice 和 Bob 之前从没见过,他们没有安全的方式创建一个密钥。如果他们将密钥包含在信息之中,Mallory 将拦截信息并且发现密钥。后果就是:无论 Alice 和 Bob 发送的信息是否加密,Mallory 都能读取或者改变拦截到的信息。
这是一个典型的中间人攻击例子。避免它的唯一方法是改变之前的密码系统。
那么有没有这种方式,Alice 和 Bob 之前从没见过,Alice 想要给 Bob 传递一条信息,一开始Alice 先写一封空的信给Bob ,Bob发一个密钥给Alice。这个密钥要一个特点只能用来加密,对自己加密的文件都没办法解密,只有Bob 才能够解开。也就是说在密钥在传输的过程中即使被Mallory 截获了信鸽,Mallory知道了这个密钥,拿到了这个密钥也只是用来加密,他即使接下里截获到了Alice 用大家都拿到的密钥加密信息发给 Bob的信件,他也没办法解开密文。
这是另外一套密码系统。
他跟之前的有不一样的地方,第一就是他需要两次通讯过程,第二就是给出去的密钥只能用来加密无法用来解密。
这种在网络中传输,可能被很多人截获的密钥,叫做公钥,Bob 用来解开密文的密码较为私钥。
RSA算法
上面的这套密码系统重要的一点是加密和解密能够分开,加密和解密能够分开,加密和解密不是简简单单互逆过程,即使是加密的人,自己都没办法解开。这样就安全多了。 用数学表达: 加密: $$Y=E(X)$$ 其中 X表示明文,Y表示经过函数E转换后的值即密文。 解密: $$X=E(Y)$$ 这里跟上面f(反函数)不同的是E,D不是互逆的。
现在就是来找E,D了,已经有人找好了,先看看:
加密公式:
$$X^e mod N = Y$$
解密公式:
$$X = Y^d mod N$$
这个公式是怎么工作的:
取N = 319 ,e = 17,d=33
现在要加密的数X = 40
密文$Y=40^{17} mod 319$计算得到Y=61。这样就完成了加密的过程,在这个过程中我们用到了两个数,N(319),e(17)。d(33)我们是没有给的,他没办法进行解密。
不信试试
$$61^{17} mod 319=118$$
而用d(33)进行解密
$$61^{33} mod 319=40$$
刚才加密的是40,结果是正确的。
这种加密方式为RSA加密算法。拥有公钥和密钥。
openssl中的RSA过程
理论的知识有了,我们不需要自己编写代码来实现这一个过程,强大的openssl可以很好的实现这一个过程,如果还没有安装openssl,可以自行安装。
使用openssl 建立这一个过程,首先,创建私钥:
显示创建成功:
Bob 拥有了这个私钥,当Alice 要过来跟他通讯的时候,第一次发送公钥给Alice ,公钥的生成如下:
Alice 拿到了public_key.pem 公钥,对需要的文件进行加密,假设信的名称为hellofile.txt
使用公钥对hellofile.txt 进行加密。
得到了hellofile_encrypt.dat,这时候公钥是无法解密的。
Alice 使用公共网络把hellofile_encrypt.dat文件发给Bob ,Bob 使用私钥解密该文件。
查看new_hellofile.txt 的内容。
openssl中的数字证书过程
加密公式:
$$X^e mod N = Y$$
解密公式:
$$X = Y^d mod N$$
这个过程是RSA的加密过程,逆过程是数字证书的签名过程。
生成数字证书:
$$X = Y^d mod N$$
得到X的签名证书,把证书X和源文件Y发个客户端,客户端进行验证。
验证签名:
$$X^e mod N = Y$$
如软件的签名证书,在打包软件的时候使用私钥生成数字签名软件,在客户端使用公钥进行签名的验证。这是一个很好地防止软件包被修改的方法。
把刚才生成公钥和私钥的过程构建为脚本:
generate_cert.sh
生成s2e.pem 公钥密钥。
创建ok.p7e
对文件进行签名:
参看签名后的文件 ok.p7e.p7m.pem。
验证文件签名文件:
如果签名完以后的文件被修改以后,验证无法通过。
Navicat Premium 12.1.23激活
更多教程:[大家来编程-go2coding.com]
今天的文章
Navicat Premium 12.1.23激活(navicat rsa公钥找不到_HTTPS简介(二):非对称加密RSA)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/112961.html