软件密码学基础---非对称加密
来源:互联网 发布:印度发展现状知乎 编辑:程序博客网 时间:2024/06/07 19:33
1、基础
密钥对:公钥和私钥;
特点:如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密;
一般:公钥用来加密信息,私钥用来数字签名;
2、通信过程分析
第一:
A和B通信;
首先,B利用非对称加密算法(比如RSA),生成一对密钥,包括公钥和私钥,该对密钥的特点:公钥加密的特点只能私钥解,私钥加密的数据只能公钥解;
其次,B将公钥传递给A,传递过程中公钥可能会被C窃取;
然后,A将要发送给B的数据利用A的公钥加密,然后将加密后的数据传递给A;此过程中,A发送的数据可能被C窃取,但由于C只有公钥,不能解密,所以C不能获取A发生的真正数据;(不排除C采取暴力破解—但是时间周期会很长);
上述过程存在的问题:
B向A传递B公钥的过程中,公钥被C拦截,C自己也生成一对密钥(C的公钥和私钥),C将自己的公钥传递给A,A接收到该公钥后,以为是A的公钥;此后A发送经该公钥加密的数据,会被C用公钥解密获取;并且B受到数据后无法解密;
存在的问题:A无法验证获得的公钥是否是B的;
第二:
A如何确保收到的公钥是B的?数字证书
数字证书,是对用户的公钥的认证,是可靠的第三方认证机构出示的,第三方机构CA;(网络没有绝对安全,都是基于一定的信任基础—CA);
B生成一对密钥后,通过CA认证,出示一份数字证书;数字证书的生成:CA利用自己的私钥,对B的公钥和B的一些相关信息一起加密,生成“数字证书”,之后发送信息时,可以在信息后附上数字证书即可;
A获取B的数字证书,用CA的公钥解密数字证书,得到B的真实公钥; C也可以获取B的数字证书,经CA的公钥解密,得到B的公钥,但无法冒充B的公钥,发给A;
该过程又存在问题:
A向B发送加密数据,被C拦截,C会重新生成新的数据,经B的数字证书中的公钥加密,然后再发给B;
存在的问题:B无法确保收到的数据是A发送的;
第三:
B如何确保数据没有被篡改?数字签名;
B发送数据之前,也会生成一对自己的密钥,并让CA认证出示一份自己的数字证书;
A将想要发送给B的数据,采用摘要算法(比如MD5)提取出摘要,使用自己的私钥加密摘要,即数字签名;同时使用B公钥加密要发送的数据;然后将加密后的数据和数字签名,一起发送给B;
B收到后,如果可以用A的公钥解密,则说明数据是A发送的;同时解密数据,并得出数字签名,将A发送的数字签名,进行对比,如果一致,说明数据没有被篡改;
参考
数字签名: http://www.youdzone.com/signature.html
- 软件密码学基础---非对称加密
- 软件密码学基础--对称加密
- 密码学入门之对称加密与非对称加密
- 密码学之可逆加密 杂谈(对称、非对称)
- net加密基础2-非对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- 密码学常见基本概念-对称加密
- 对称加密/非对称加密
- 对称加密、非对称加密
- 对称加密/非对称加密
- 对称加密 非对称加密
- MD5 加密
- mybatispse 插件 【 推荐eclipse 下 从mybatis 接口直接跳转到 xml 的插件】
- 判断并打印100~200间素数
- 【剑指offer】面试题 9:用两个栈实现队列
- intellij idea 隐藏文件/文件夹
- 软件密码学基础---非对称加密
- 保持一颗虔诚的心去学技术
- 浅谈JSP开发的MVC架构
- 判断闰年
- ComboBox 相似搜索
- vue中引入bootstrap
- Linux简单权限用法
- 第02课 01 JS中级课程-getElementsByClassName-1
- web前端图片懒加载实现原理