如上图所示,我怎么能确定我手里的公钥就是我心中的接收方的公钥呢?怎么防止被钓鱼呢?

解决的办法就是引入一个第三方,一个权威机构,一个我们都相信的机构。

验证公钥,Digital Certificate

显然,这不是一个用技术所能解决的问题,很好的解决办法就是建立一个中介,我们所有的人都相信这个中介,中介对接收方的公钥的合法性进行认证,在接收方的公钥上签名,这样发送方在相信中介的基础上就能安全的给接收方发送信息了。

具体的做法就是:中介要求接收方在他这里注册,验证其公钥,然后中介对接收方的公钥进行签名,也就是中介用自己的私钥对接收方的公钥进行加密。然而中介的公钥是众所周知,任何人都知道,不会被任何人假冒的,发送方如果能用中介的公钥认证这份证书,就证明里面的接收方的公钥是注册过的,是合法的。就能安全的给接收方发送信息了。

也即是说如果我们想给某个人发送信息,必须得到他的公钥,但是为了防止钓鱼,这个公钥必须得被我们相信的中介签名后才是安全的。

注意:这个证书仍是通信双方通信时,接收者给出的,不同的是这个证书已经被我们相信的中介签过名。

这里面用到了哈希函数的知识,因为非对称加密对大的数据加密速度很慢,所以通常的做法是把接收方的公钥和DN这个字符串组合成同一个文件,生成其相应的哈希值,然后中介只需要对这个哈希值进行签名,发送方在给接收方发送数据时,只对哈希值进行认证,就能核对公钥和DN的值是否合法。一张数字证书包含接收方的公钥、DN信息、签过名的哈希值。

一张数字证书的前两部分是我们需要的接收方的信息,DN是distinguished name,就是接收方的ID。那么我们怎么确信这个ID和这把公钥是真的对应关系呢?那么就要看下面的签过名的哈希值(特征码)。

CA的签名过程:首先接收方要在CA那里主存,当然这不是免费的,然后CA把接收方的DN和他的公钥打包。然后对打包后的文件Hash一下,产生其特征码。CA用自己的私钥对特征码加密(签名)。然后把这三个东西给接收方,注册完成。

发送方的验证过程:在通信开始的阶段,发送方为了加密传输问接收方要其公钥,同时为了防止钓鱼,还应给出DN信息和CA签过名的哈希值。发送方把公钥和DN信息打包,然后用和CA同样的算法得到其Hash值,然后用CA的公钥解密接收方给的Hash值,对比两个Hash值,如果相同,那么就是合法的。

加密理论告一段落,下面介绍SSL相关的知识。

加密传输SSL协议6_验证公钥的更多相关文章

  1. 加密传输SSL协议7_SSL协议概述

    SSL(Secure Sockets Layer) SSL的功能,可以在通信的双方中建立一个加密的通信通道 同时还可以确认通信的双方是不是就是其声称的人,防止被钓鱼. SSL在网络协议栈中的位置:可以 ...

  2. 加密传输SSL协议8_Apache服务器的安装

    学习了那么多的理论的知识,下面通过在Apache服务器中安装和使用SSL协议,实现安全传输,但是首先要安装好Apache服务器. Apache服务器的安装 Linux下所有的软件的原码的安装都是三部曲 ...

  3. 加密传输SSL协议5_Hash Function

    怎么对一个大的文件进行签名,因为文件比较大,非对称签名很慢.那么想,我能把这个大的文件通过一种函数变换,变成一个和源文件唯一对应的的小的文件吗?答案是可以的. Hash Function 这里任何的文 ...

  4. 加密传输SSL协议4_综合方案

    隔了那么多天终于有时间继续把这个专题做完了,这次一定连续写完这方面的笔记. 上篇博文说明了非对称加密和对称加密各自的优缺点,那么就很自然的衍生出了一种综合的方案. 两种方案的结合--扬长避短 首先发送 ...

  5. 加密传输SSL协议1_OpenSSL的安装

    终于在自己不断的奋斗之后,来到科大的一波考试过去了,但是为了不使自己过于放松,回顾一下之前的东西,做一下笔记.所以新开一个专题笔记: Using Apache with SSL 引入:首先我们在平时的 ...

  6. 加密传输SSL协议2_传统加密

    原本到了睡觉的时间,但是做完了SSL的笔记还有GCC和Oracle等的好多的笔记,所以刻苦一点. The Priciple of Encryption/Decryption --conventiona ...

  7. 加密传输SSL协议3_非对称加密

    困死了,这里对非对称加密体系开个头,具体的实验明天写 非对称加密体系 为了解决对称加密中密钥的传输的问题,一些天才的数学家就提出了非对称式的加密体系,也称为公钥加密体系. 加密和解密的密钥是不同的.一 ...

  8. 学习笔记: MD5/DES/RSA三类加密,SSL协议解析

    1. 不对称可逆加密的 的2种用法 (1)保证信息不被篡改 (2) 保证信息只能被我看到 2. CA证书的基本原理 流程如下:  百度公司 向CA机构报备 持有者姓名, 有效期, 要发布的公钥 , 扩 ...

  9. HTTPS(身披SSL协议的HTTP)

    参考链接: HTTP 与 HTTPS 的区别 HTTPS科普扫盲帖 HTTPS小结 HTTP 和 HTTPS 区别 HTTP是明文传输未加密,安全性差,HTTPS(HTTP + SSL)数据传输是加密 ...

随机推荐

  1. 【并查集+拓扑排序】【HDU1811】【Rank of Tetris】

    题意:给你3种关系 A=B,A>B,A<B 问是否排名方式唯一,或者存在矛盾 解 1.读入数据先处理 =号 用并查集的祖先作为代表元素,其他儿子节点都等于跟这个点重叠. 再读入 '< ...

  2. java 命令行制定logback参数

    -Dlogback.configurationFile=file:///export/Workspace/apache-cassandra/apache-cassandra-main/target/b ...

  3. Cassandra - Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

    In cassandra 2.1.4, if you run "nodetool status" without any keyspace specified, you will ...

  4. js callback函数

    A callback is a function that is passed as an argument to another function and is executed after its ...

  5. easyui combo自动高度(下拉框空白问题)

    设置.combo-panel {max-height:200px;} 在用到easyui-combobox时,设置panelHeight:'auto'

  6. L10 数据入站、转发、出站流程

    二 写出防火墙规则链之间的顺序也就是入站数据流向.转发数据流向.出站数据流向的过程 入站:PREROUTING→INPUT 数据包到达防火墙,由prerouting处理,判断是否修改地址 路由选择:判 ...

  7. C语言中的数据类型

    基本数据类型: int float double char void 派生数据类型: 数据类型修饰符 + 基本数据类型 = 派生数据类型 signed  和 unsigned 类型 unsigned ...

  8. Three.js学习笔记 – “我和小伙伴都惊呆了”的特效和Three.js初探

    什么是Three.js three.js是JavaScript编写的WebGL第三方库.提供了非常多的3D显示功能.Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包 ...

  9. javac编译原理(一)

    我们都知道,计算机只能识别二进制语言,是不能直接识别java c c++等高级语言的.将高级语言转化成计算机可以是别的二进制语言,这个过程就叫编译. 有次面试,面试官问了一道“java的编译原理是什么 ...

  10. Android 抓包,监控流量工具之 mitmproxy

    转:http://greenrobot.me/devpost/how-to-debug-android-http-get-started/ mitmproxy实践教程之调试 Android 上 HTT ...