一,对称加密

所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k。

对称加解密的过程如下:

发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密钥)才能进行通信。发送端用共享密钥k对明文p进行加密,得到密文c,并将得到的密文发送给接收端,接收端收到密文后,并用其相同的共享密钥k对密文进行解密,得出明文p。

一般加密和解密的算法是公开的,需要保持隐秘的是密钥k,流行的对称加密算法有:DES,Triple-DES,RC2和RC4

对称加密的不足主要有两点:

1,  发送方和接收方首先需要共享相同的密钥,即存在密钥k的分发问题,如何安全的把共享密钥在双方进行分享,这本身也是一个如何安全通信的问题,一种方法是提前双方约定好,不通过具体的通信进行协商,避免被监听和截获。另外一种方式,将是下面我们介绍的通过非对称加密信道进行对称密码的分发和共享,即混合加密系统。

2,  密钥管理的复杂度问题。由于对称加密的密钥是一对一的使用方式,若一方要跟n方通信,则需要维护n对密钥

对称加密的好处是:

加密和解密的速度要比非对称加密快很多,因此常用非对称加密建立的安全信道进行共享密钥的分享,完成后,具体的加解密则使用对称加密。即混合加密系统。

另外一个点需要重点说明的是,密钥k的长度对解密破解的难度有很重大的影响,k的长度越长,对应的密码空间就越大,遭到暴力破解或者词典破解的难度就更大,就更加安全。

二,非对称加密

所谓非对称加密技术是指加密的密钥e和解密的密钥d是不同的(e!=d),并且加密的密钥e是公开的,叫做公钥,而解密的密钥d是保密的,叫私钥。

非对称加解密的过程如下:

加密一方找到接收方的公钥e (如何找到呢?大部分的公钥查找工作实际上都是通过数字证书来实现的),然后用公钥e对明文p进行加密后得到密文c,并将得到的密文发送给接收方,接收方收到密文后,用自己保留的私钥d进行解密,得到明文p,需要注意的是:用公钥加密的密文,只有拥有私钥的一方才能解密,这样就可以解决加密的各方可以统一使用一个公钥即可。

常用的非对称加密算法有:RSA

非对称加密的优点是:

1,  不存在密钥分发的问题,解码方可以自己生成密钥对,一个做私钥存起来,另外一个作为公钥进行发布。

2,  解决了密钥管理的复杂度问题,多个加密方都可以使用一个已知的公钥进行加密,但只有拥有私钥的一方才能解密。

非对称加密不足的地方是加解密的速度没有对称加密快。

综上,分析了对称加密和非对称加密各自的优缺点后,有没有一种办法是可以利用两者的优点但避开对应的缺点呢?答应是有的,实际上用得最多的是混合加密系统,比如在两个节点间通过便捷的公开密码加密技术建立起安全通信,然后再用安全的通信产生并发送临时的随机对称密钥,通过更快的对称加密技术对剩余的数据进行加密。

三,数字签名

上面讨论了非对称加密技术在编码中的使用,解决的是传送数据的私密性,一般是用公钥作为加密key,而私钥作为解密key,那假如是用私钥作为加密key,而公钥作为解密key呢?

由于私钥只有对应一方才知道,因此若通过对应的公钥可以验证对方是用对应的私钥进行加密的,则可以说明对方的身份,这就是数字签名。

数字签名需要解决的两个任务是:

1,  谁编写的报文;

2,  报文的内容是否被篡改过;

数字签名的过程一般如下:

1,  发送方A首先对变长的报文提取成一个定长的摘要,一般是md5等

2,  A对摘要应用了一个签名函数,并且用A自己的私钥作为参数,因为只有A才知道私钥,所以正确的签名会说明签名者就是其所有者。

3,  一旦计算出签名,节点A就将其附加到报文的末尾,并将报文和签名一起都发送给B

4,  在接收端B,首先会按照同样的算法计算出报文的摘要,然后对签名用A的公钥进行解码,得出解码后的摘要,两个摘要进行比较,则可以判断是否是A发送的且内容没被篡改过。

四,数字证书

实际上,好多的公钥都是通过数字证书进行发布的,数字证书类似一个人的身份证一样,由对应的官方的颁发结构颁发的,类似一个人的身份证有姓名,身份证ID,有效期,颁发机构-一般是某某派出所等,数字证书也有类似的形式。

基本的数字证书包括了一些常见的信息:

1,  对象的名称(人,服务器,组织等)

2,  过期时间

3,  对象的公钥

4,  证书发布者(由谁为证书担保)

5,  来自证书发布者的数字签名。

需要注意的是,任何人都可以创建一个证书,但不是所有人都能够获得受人尊敬的签发权从而为证书信息提供担保,并用其私人密钥签发证书。

不幸的是,数字证书没有单一的全球标准,但现在使用的大多数证书是以一种标准格式– X.509 v3,来存储它们的信息。

x.509证书格式:

字段

描述

版本号

这个证书的X.509证书版本号,现在通常是版本3

序列号

证书颁发机构CA生成的唯一整数,CA生成的每个证书都要有一个唯一的系列号,类似身份证号码

签名算法ID

签名使用是算法,如用RSA加密的MD2摘要

证书颁发者

以X.500格式说明的CA的组织名称

有效期

证书的有效期,由一个起始日期和一个结束日期来表示

对象名称

证书中描述的实体,比如一个人或者一个组织,对象名称以x.500格式表示

对象的公开密钥信息

证书对象的公钥,公钥使用的算法,以及所有附加的参数

发布者唯一的ID(可选)

可选的证书发布者唯一ID,这样可以重用相同的发布者名称了

对象唯一的ID(可选)

可选的证书对象唯一ID,这样就可以重用相同的对象名称了

扩展

一些扩展信息

证书的颁发机构签名

CA用指定的签名算法对上述所有字段的数字签名

x.509证书有很多种,如服务器端证书,个人证书等。

浏览器中的证书:

注意:每个证书均有对应于证书公钥的私钥,私钥不能被导出,访问一般需要密码等,实际上,在CA给某个对象颁发一个证书的时候,同时会分配一个对应证书中公钥的私钥。

浏览器会默认存储一些受信任的根证书颁发机构的证书,从图中可以看,这些证书都是颁发者颁发给自己的。

五,用服务器证书对服务进行认证

在支付网站中,用户需要确认他们输入支付密码的站点是真正的经过认证的站点,而不是被钓鱼的网站,因此用户有必要认证对应的服务器,而这种方式是通过服务器证书来进行的。过程大概如下:

1,  通过https建立一个安全web事务之后,浏览器会自动获取所连服务器的数字证书;

其中服务器证书包括了:

Web站点名称和主机名

Web站点的公钥;

颁发机构的名称;

颁发机构给证书的签名;

2,  若服务器没有证书,则安全连接失败。

3,  浏览器首先检查服务器证书是否还在有效期内,若过期,则提示失效;

4,  浏览器查看服务器证书对应的CA,若该CA是很权威的机构,则浏览器可能已经知道了对应的公钥了(浏览器会预先安装很多签名颁发机构的证书并认为是受信任的),这时,浏览器用CA的数字证书里面的公钥来验证该CA颁发的服务器证书的有效性。类似去公安局验证某人的身份证是否是真的。

5,则浏览器对签名颁发机构CA一无所知,浏览器无法确定是否该信任这个签名颁发机构,它通常会向用户提示一个对话框,看看他是否相信这个签名发布者。

5,  一旦完成了对服务器证书的验证,接下来就可以使用服务器证书里面的公钥进行服务器身份的验证;

6,  客户端生成一个随机数给到服务器,要求对应的服务用对应服务器证书是私钥进行签名。

7,  服务器对随机数进行签名,并回传给到客户端。

8,  客户端用服务器证书的公钥对随机数的签名进行验证,若验证通过,则说明对应的服务器确实拥有对应服务器证书的私钥,因此判断服务器的身份正常。否则,则任务服务器身份被伪造。

六,用客户端证书对客户端进行认证

客户端证书和服务器证书类似,只是服务器证书增加一些对服务器站点名称和主机名等内容的签注,客户端证书一般是某个机构针对个人颁发的,用于标识个人的身份。如财付通提示用户安装对应的数字证书,就是一个客户端证书,在安装客户端证书的时候,实际上会把用户对应该证书的私钥要保存起来。客户端用私钥进行签名,然后第三方用客户端证书的公钥进行验签实现对客户端身份的认证。

七,HTTPS的双向认证,则需要客户端和服务器交换证书。

在发送已加密的HTTP报文前,客户端和服务器要进行一次SSL握手,在这个握手的过程中,它们要完成以下工作:

1,  交换协议版本号;

2,  选择一个两端都了解的密码;

3,  对两端的身份进行验证;

4,  生成临时的会话密钥,后续便用该密钥进行加密信道。

加解密和数字证书详解相关推荐

  1. [crypto]-02-非对称加解密RSA原理概念详解

    说明:本文使用的数据来自网络,重复的太多了,也不知道哪篇是原创. 算法原理介绍 step 说明 描述 备注 1 找出质数 P .Q - 2 计算公共模数 N = P * Q - 3 欧拉函数 φ(N) ...

  2. [crypto]-01-对称加解密AES原理概念详解

    1.对称加解密 术语:P是明文,C是密文,K是密钥,E是加密算法,D是解密算 (1).常用的对称加解密有哪些? (2).加解密的模式 [ecb]这种模式是将整个明文分成若干段相同的小段,然后对每一小段 ...

  3. http\https的连接过程及数字证书详解

    http\https的连接过程及数字证书详解 内推军p185 http连接过程(相当于输入url会发生什么) 1.域名解析 2.发起TCP的三次握手 3.Web浏览器向服务器发送http请求命令 4. ...

  4. Java加密与解密的艺术~数字证书详解

    数字证书具备常规加密/解密必要的信息,包含签名算法,可用于网络数据加密/解密交互,标识网络用户(计算机)身份.数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体.依靠数字证 ...

  5. 区块链之加解密算法数字证书

    目录 一.加解密算法 数字签名 对称加密 DES(Data EncryptionStandard) 3DES(Triple DES) AES(Advanced EncryptionStandard) ...

  6. 数字指纹,数字信封,数字签名,数字证书详解

    思维导图 ·前言 ·对称机密 ·非对称加密 ·数字指纹 ·数字信封 ·数字签名 ·数字证书及PKI体系 前言 为保证数据在通信过程中可以被安全的传输,通常采取一系列加密的措施来对数据进行保护.常见的加 ...

  7. 数字签名和数字证书详解

    原文件地址:http://www.tuicool.com/articles/7buueeQ 密钥分为两种:对称密钥和非对象密钥 对称密钥算法:DES 3DES AES,加密算法快 非对称密钥算法:RA ...

  8. x509数字证书详解

    数字证书 小明和小花进行通信,小花要在网络中验证发来消息的人到底是不是小明,是不是被其他人篡改,就需要数字证书来验证.CA机构先核实小明身份,再给小明颁发一个数字证书,证书中包含了小明的身份信息和公钥 ...

  9. Ubuntu使用OpenSSL生成数字证书详解

    在安全通信编程中有时我们会用到数字证书进行通信加密,那么如何生成自己的数字证书进行测试呢?下面是使用OpenSSL在Ubuntu环境生成数字证书的步骤: 一.安装openssl a)    略 二.生 ...

最新文章

  1. 上海交大提出多模态框架「EmotionMeter」,更精准地识别人类情绪
  2. mysql get one_Ecshop 数据库操作方法getRow、getAll、getOne区别
  3. curl_exec() 执行的时候发送不出去_为什么端口明明开着,nmap却扫描不出来,看老司机怎么指点迷津...
  4. python3纵向输出字符串_Python 3.x 格式化输出字符串 % format 笔记
  5. 计算机二级mysql工具_2020年全国计算机二级MySQL复习知识点:优化工具
  6. php 解压zip到目录下,php 解压zip压缩包内容到指定目录的实例
  7. jQuery实现手风琴效果
  8. 【渝粤教育】国家开放大学2018年春季 7138-21T人际交流与沟通 参考试题
  9. linux系统常用命令-1--lsblk
  10. 【MySQL】MySQL的安装(免费社区版)
  11. 服务器之IP地址与域名之间的绑定
  12. 苹果官方付费升级内存_苹果6 Plus升级内存后遇到刷机报错40维修过程【详解】...
  13. HTML5期末大作业:抗疫主题网站设计(14页) HTML+CSS+JavaScript web课程设计网页规划与设计...
  14. 骚操作——Word批量修改图片大小
  15. Python3快速入门—5.函数
  16. 硬件设计分享-⑧天线设计
  17. 解决tuple index out of range
  18. iOS - 接入 Live2D
  19. 测试普通话水平的软件,求测试普通话标准的软件?6款普通话软件推荐
  20. 欢迎访问我的个人博客:www.zou8944.com

热门文章

  1. C掉布尔后只保留一个对象,生成器C掉后只保留一个对象,快速链接对象+删除
  2. LWN: 使用TuxMake来确保kernel编译结果可重现!
  3. 软件测试之【单元测试、系统测试、集成测试】
  4. angular使用crypto.js加密
  5. 西部数码域名注册Python版本
  6. cmd命令操作MySQL数据库
  7. 他山之石——VBA中选取Excel单元格的方法(Range selection in Excel VBA)
  8. 微信H5分享到朋友圈,转发朋友功能随记
  9. 字体模糊是怎么回事css,CSS3 translate导致字体模糊怎么办 CSS3 translate导致字体模糊解决方法...
  10. 文件共享同步5种方式-NFS、NAS、rsync、scp、ftp