加密:公钥加密,私钥解密
认证:私钥加密,公钥解密
如果A给B发送一个加密的有数字签名的文件,会怎么样呢?
首先A有自己的公钥和私钥:A_public_key, A_private_key
B也有自己的公钥和私钥: B_public_key, B_private_key
(1)A和B互换公钥
(2)A将文件用hash算法生成摘要,用A_private_key对摘要加密,得到的就叫数字签名
(3)A用B_public_key对文件加密
(4)将加密的文件和数字签名一起发给B
------B收到内容后
(5)用B_private_key解密文件,得到明文
(6)用A_public_key解密数字签名,得到内容摘要
(7)将明文的文件内容用同样hash算法得到摘要,与第六步的摘要对比。相同则证明内容和来源都正确。
解密数字签名时,需要事先知道发送方A的公钥,那怎么才知道自己得到的公钥是发送方A的呢?
例如:C知道B的公钥,然后偷偷把B手里A的公钥A_public_key换成自己的公钥C_public_key,那么以后C给B发送的东西,B还一直以为是A发送的。因为B不知道自己手里公钥就是A的。
怎么办呢?使用数字证书
A找证书中心(CA)申请自己的证书,CA把A的公钥和一些信息作为证书内容写入,然后用CA自己的私钥生成数字签名一并写入证书。A给B发数据时把用B的公钥加密的数据、A的数字签名、A的数字证书一起发过去。B的电脑安装有根证书(操作系统带的,知道CA的公钥),用CA的公钥验证A的数字证书里面签名的合法性,合法后从证书内容里读出A的公钥。再用A的公钥解密A的数字签名验证数据完成性。最后用B的私钥解密数据。
数字证书可以伪造吗?
不能。数字证书里有CA的数字签名,签名是由证书内容的哈希摘要用CA的私钥加密的。用CA的公钥验证签名的合法性就可以验证证书的真假。
https传输,访问google网站:
握手时用非对称加密传输对称加密的密码
数据传输时用对称加密的密码加密数据(对称加密解密速度比非对称加密快)
过程:
(1)浏览器发送自己支持的加密规则给google
(2)google选择一组加密算法和HASH算法,并将自己的数字证书发给浏览器
(3)浏览器验证数字证书的合法性(验证证书的数字签名),然后生成一个随机数,从google的数字证书里面获取google的公钥,用这个公钥加密随机数。用约定的hash算法生成握手消息的摘要,并用生成的随机数加密摘要。把握手消息、加密的摘要、加密的随机数发给google
(4)google用自己的私钥解密随机数,然后用随机数解密摘要,再用hash生成收到的握手消息的摘要与解密的摘要对比,验证正确性。
(5)google一样用hash算法生成握手消息的摘要,并用解密的随机数加密摘要。然后把握手消息、加密的摘要发给浏览器
(6)浏览器验证摘要成功后,握手完成。之后通信的数据用之前浏览器生成的随机密码加密后传输。
不能授信的https访问?
比如自己搭建的https服务器,证书没有得到CA的认证。浏览器收到服务器的证书后,会查看证书内容,根据证书里的颁发机构在本地电脑的根证书里查找颁发机构对应的公钥。当然查找不到或者解密证书的签名失败,会提示正在访问不授信的网站,但是你是可以继续安全浏览这个网站的。因为浏览器依然可以从不授信的证书里取出服务器的公钥然后加密生成的随机密码,进行后续的握手和数据传输过程。
对于不授信的https访问,只需要注意它是不是钓鱼网站就可以了。例如有可能自己的dns遭到劫持,访问支付宝网站时,被重定向到高度模仿支付宝网页的https网站。这时google浏览器肯定就会弹窗提示你正在访问不授信的https网站,如果你没有提高警惕,就会被蒙蔽,泄露了自己输入的账户和密码。
还有哪种情况会出现访问https网站而不安全呢?
电脑的根证书是假的。操作系统里有很多自带的根证书,存储了各个数字证书中心的公钥。如果根证书是假的,那么就有面临访问欺诈网站而不自察的问题。
当然一般而言根证书不会是假的,如果是假的,那么这家数字证书中心颁发的所有证书都会被提示为不授信,容易被看出来。如若根证书是真的,但证书中心的私钥被黑客获取到了,那么他就可以给自己颁发假证书而瞒过大家了。操作系统厂商知道这个情况后会更新补丁宣布该根证书失效,或者通过更新证书吊销列表CRL来宣布证书失效。此时你就会得到这句提示“该站点安全证书的吊销信息不可用,是否继续”。
还有一种情况就是你自己安装的根证书被窃取了。例如12306购票网站要求下载安装根证书,这个根证书说白了就是12306自己给自己颁发的,没有在CA获得认证,所以浏览器会提示你在访问不授信的网站之类的消息,12306首页就给个公告让大家安装他提供的根证书来消除大家购票的后顾之忧。12306这么挫,那么它的根证书被窃取到私钥就成为可能了,非法分子就可以通过12306的私钥来颁发假证书欺骗中国的广大网民。即便12306知道了自己证书被窃,也没有好的补救措施(操作系统厂商不会给你打补丁,不会把你的证书更新到CRL),只能发个公告让大家手动删除安装的证书。
参考:
数字签名是什么 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
https那些事 http://www.guokr.com/post/114121/
公钥私钥加密解密数字证书数字签名详解 http://codefine.co/1455.html
为什么12306买火车票要安装根证书
https://techyan.me/2013/05/07/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A812306%E4%B9%B0%E7%81%AB%E8%BD%A6%E7%A5%A8%E8%A6%81%E8%A3%85%E6%A0%B9%E8%AF%81%E4%B9%A6%EF%BC%9F/?variant=zh-cn
私钥、公钥、数字签名、数字证书、HTTPS相关推荐
- 公钥,私钥,数字签名,证书图解(转)
一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个 ...
- 网络安全--数字签名/数字证书
对称加密: 未加密的信息+秘钥 --> 加密的黑盒子 --> 加密后的信息 加密后的信息+秘钥 --> 解密的黑盒子 --> 未加密的信息 非对称加密: 未加密的信息+公钥 - ...
- 什么是 数字签名 数字证书 数字信封
1,数字签名 数字证书 数字信封 当A和B进行通信时,将A发送的消息的hash值先用A的私钥进行加密(数字签名),B存储A的公钥,B收到信息之后利用公钥进行解密,保证信息的完整性和保密性来自于A 存在 ...
- 生成CA根证书、公钥、私钥指令(数字证书)
一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...
- 【一】生成CA根证书、公钥、私钥指令(数字证书)
一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...
- 数字证书、数字签名的实现使用以及keytool工具生成私钥公钥
数字证书.数字签名的实现使用以及keytool工具生成私钥公钥 数字签名 数字证书 数字签名的实现 keytool工具 基本命令 生成私钥公钥 导出公钥 数字签名 数字签名(又称公钥数字签名)是只有信 ...
- 公钥、私钥、数字签名和数字证书的概念及解密
http协议的数据传递是明文的, 也就是从服务器传递给浏览器的内容是明文的, 这个信息如果被截取了,内容也就完全暴露了.所以大部分的互联网网站和应用使用的基本都是https协议,在申请和配置网站的ht ...
- 通俗理解数字签名,ssl数字证书和https
前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应.签章有法律效应必须满足两个条件: 能够证明签名,盖章者是谁,无法抵赖 PDF合同在签章后不 ...
- 对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与 HTTPS 简介
文章目录 1.加密算法简介 1.1 对称加密(Symmetric Key Algorithms) 1.2 非对称加密(Asymmetric Key Algorithms) 1.3 非对称加密 RSA ...
最新文章
- 求从第一列走到第n列的最短路径
- 《JAVA练习题目5》 请在类中定义计算阶乘的方法完成本题目的求解
- div img span 垂直居中问题
- iqueryable怎么进行操作_钢结构施工要点有哪些?怎么进行操作?
- 3D竞技比赛或成数字娱乐新里程碑
- 又又叒更新,Win 12要来了?
- ThinkPHP对Cookie的支持
- Apicloud——关于索引列表
- 第 4 章 MybatisPlus 条件构造器
- C#9 结构体 员工信息 学生成绩
- mac和win电脑在同一局域网下互传文件
- ie8 升级页面html,ie7浏览器怎么升级到ie8?
- HEVC—SAO技术
- activiti7(三):Activiti7简介与HelloWorld
- windows下mysql高可用_[@小川游鱼][¥20]Windows平台MySQL高可用方案-问答-阿里云开发者社区-阿里云...
- Ubuntu20.04无法连接wifi的解决方法
- 360全景倒车影像怎么看_最近淘了一个360度全景倒车影像-4路行车记录仪监控录像,和大家分享一下...
- windows搭建wordpress方法-windows搭建wordpress教程
- 正则表达式与 re 模块[转]
- 网络协议学习笔记 · 22
热门文章
- python 搭建web_webpy搭建一个简单的网站
- 向量范数证明例题_第八课:向量的范数
- Elasticsearch-日期类型
- PHP基础2--基本语法
- 浅入浅出数据结构(18)——希尔排序
- vue.js基础知识篇(4):过滤器、class与style的绑定2
- Jenkins:项目配置
- Android Studio优秀插件汇总
- 20135304刘世鹏——信息安全系统设计基础第九周总结
- JavaScript学习(四十一)—字面量形式创建对象的注意事项和不足