对称加密存在的问题

1、当通信对象很多时会面临众多秘钥的有效管理问题
2、对于一个新的数据通信对象,密钥怎样进行传输的问题

一、非对称加密介绍

非对称加密也叫公钥密码:使用公钥加密,使用密钥解密

在这里插入图片描述

二、常用使用场景

1、通信加密

私钥加密,公钥解密

2、https

验证服务器,数字证书,使用ca认证公钥

3、签名(防止篡改)

哈希+非对称加密

4、网银U盾

验证client,U盾相当于私钥,公钥在服务器

5、github ssh登录

ssh是一种网络协议,主要用于计算机之间的加密登陆与数据传输
ssh登录的时候没有CA认证,需要用户自己确认登录主机的指纹,点击yes后远程主机的指纹存放到本地的know_hosts中,后续登录会跳过警告
ssh-keygen -t rsa,演示

三、RSA算法

新建一个opens文档,在该文档中执行openssl,进入操作模式
在这里插入图片描述
生产私钥
执行
genrsa -out rsa_private_key.pem 1024

目前主流密钥长队至少都在1024bits以上,低于1024bit的密钥已经不建议使用(安全问题),可以不指定私钥长度,默认是2048位,长度建议1024以上

在这里插入图片描述
生成公钥

 rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

在这里插入图片描述
私钥:使用随机数按照一定规则生成的,只有自己持有,不可以向任何人传播
公钥:由私钥推导而来,任何人都可以持有,只能被配套的私钥解开

四、RSA加密解密规则

加密
在这里插入图片描述
1、加密的数据都是明文对应的数字值(会有一个字符对应表)
2、对数值依次进行E次方处理
3、对N取模
rsa的安全性基于:对于大数(素数乘积)进行因式分解(世界公认的难题)

公钥:{E,N},由E,N组成公钥
E:encrypt(根据特定规则,限定了一个区间,在这个区间内随意选择的)
N:一个大数(素数乘积,先有两个素数)
解密
在这里插入图片描述
1、对密文进行D次方处理
2、对N进行取模
3、根据字符表转换成原来的明文

私钥:{D,N},有D,N组成私钥
F(n) = (素数1 - 1)(素数2 - 1)
只有知道那两个大素数相乘,才能计算出D
(D * E)% F(n)= 1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章