一,对称加密

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

对称加解密的步骤例如以下:

发送端和接收端首先要共享同样的密钥k(即通信前两方都须要知道相应的密钥)才干进行通信。

发送端用共享密钥k对明文p进行加密。得到密文c。并将得到的密文发送给接收端,接收端收到密文后,并用其同样的共享密钥k对密文进行解密,得出明文p。

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

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

1,  发送方和接收方首先须要共享同样的密钥,即存在密钥k的分发问题。怎样安全的把共享密钥在两方进行分享,这本身也是一个怎样安全通信的问题,一种方法是提前两方约定好。不通过详细的通信进行协商。避免被监听和截获。第二种方式,将是以下我们介绍的通过非对称加密信道进行对称password的分发和共享,即混合加密系统。

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

对称加密的优点是:

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

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

二,非对称加密

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

非对称加解密的步骤例如以下:

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

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

非对称加密的长处是:

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

2。  攻克了密钥管理的复杂度问题,多个加密方都能够使用一个已知的公钥进行加密,但仅仅有拥有私钥的一方才干解密。

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

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

三,数字签名

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

因为私钥仅仅有相应一方才知道。因此若通过相应的公钥能够验证对方是用相应的私钥进行加密的,则能够说明对方的身份,这就是数字签名。

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

1。  谁编写的报文;

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

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

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

2,  A对摘要应用了一个签名函数,而且用A自己的私钥作为參数。由于仅仅有A才知道私钥,所以正确的签名会说明签名者就是其全部者。

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

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

四。数字证书

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

主要的数字证书包含了一些常见的信息:

1。 对象的名称(人,server,组织等)

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证书有非常多种,如server端证书。个人证书等。

浏览器中的证书:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVuZnlndW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

注意:每一个证书均有相应于证书公钥的私钥,私钥不能被导出,訪问一般须要password等。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVuZnlndW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVuZnlndW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

在支付站点中,用户须要确认他们输入支付password的站点是真正的经过认证的站点,而不是被钓鱼的站点,因此用户有必要认证相应的server。而这样的方式是通过server证书来进行的。

过程大概例如以下:

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

当中server证书包含了:

   Web网站名称和主机名

        Web网站的公钥。

        颁发机构的名称;

        颁发机构给证书的签名;

2。  若server没有证书。则安全连接失败。

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

4,  浏览器查看server证书相应的CA,若该CA是非常权威的机构,则浏览器可能已经知道了相应的公钥了(浏览器会预先安装非常多签名颁发机构的证书并觉得是受信任的),这时,浏览器用CA的数字证书里面的公钥来验证该CA颁发的server证书的有效性。

类似去公安局验证某人的身份证是否是真的。

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

5,  一旦完毕了对server证书的验证,接下来就能够使用server证书里面的公钥进行server身份的验证;

6。  client生成一个随机数给到server,要求相应的服务用相应server证书是私钥进行签名。

7。  server对随机数进行签名。并回传给到client。

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

六,用client证书对client进行认证

client证书和server证书类似,仅仅是server证书添加一些对server网站名称和主机名等内容的签注,client证书通常是某个机构针对个人颁发的,用于标识个人的身份。如財付通提示用户安装相应的数字证书。就是一个client证书,在安装client证书的时候,实际上会把用户相应该证书的私钥要保存起来。

client用私钥进行签名。然后第三方用client证书的公钥进行验签实现对client身份的认证。

七,HTTPS的双向认证,则须要client和server交换证书。

在发送已加密的HTTP报文前,client和server要进行一次SSL握手。在这个握手的过程中,它们要完毕下面工作:

1。  交换协议版本。

2。  选择一个两端都了解的password。

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

4,  生成暂时的会话密钥,兴许便用该密钥进行加密信道。

【上】安全HTTPS-全面具体解释对称加密,非对称加密,数字签名,数字证书和HTTPS的更多相关文章

  1. HTTPS加密那点事-对称、非对称加密、数字证书

    转自:[漫画]https 加密那点事 首先,HTTP协议的缺点:没有对数据进行加密,都是明文传输的.如果要改进这种明文传输的协议,该如何做呢? 对称加密: 在每次发送真实数据之前,服务器先生成一把密钥 ...

  2. 几个例子理解对称加密与非对称加密、公钥与私钥、签名与验签、数字证书、HTTPS加密方式

    # 原创,转载请留言联系 为什么会出现这么多加密啊,公钥私钥啊,签名啊这些东西呢?说到底还是保证双方通信的安全性与完整性.例如小明发一封表白邮件给小红,他总不希望给别人看见吧.而各种各样的技术就是为了 ...

  3. 转!!通俗理解数字加密,数字签名,数字证书和https

    原博文地址:https://www.jianshu.com/p/4932cb1499bf 前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应. ...

  4. 第十四章 调试及安全性(In .net4.5) 之 对称及非对称加密

    1. 概述 本章内容包括:对称及非对称加密算法..net中的加密类.使用哈希操作.创建和管理签名认证.代码访问权限 和 加密字符串. 2. 主要内容 2.1 使用对称和非对称加密 ① 对称加密:使用同 ...

  5. Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法

    对称加密 非对称加密 不可逆加密算法 根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系). 1 对称加密算法 原理 对称加密算法中,数据加密和解密 ...

  6. C#.NET中对称和非对称加密、解密方法汇总--亲测可用

    C#.NET中对称和非对称加密.解密方法汇总--亲测可用   在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...

  7. 通俗理解数字签名,数字证书和https

    最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应.签章有法律效应必须满足两个条件: 能够证明签名,盖章者是谁,无法抵赖 PDF合同在签章后不能被更 ...

  8. 通俗理解数字签名,ssl数字证书和https

    前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应.签章有法律效应必须满足两个条件: 能够证明签名,盖章者是谁,无法抵赖 PDF合同在签章后不 ...

  9. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】

    1.  HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...

随机推荐

  1. Java面试之JVM原理总结

    1.什么是JVM? 答:JVM是Java Virual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,他是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现 ...

  2. mfc对话框嵌入Flash的交互(转)

    原文转自 http://blog.csdn.net/yacper/article/details/5021081 研究Flash嵌入游戏中的可行性....... 渲染问题已解决 事件响应已解决 下面是 ...

  3. 13深入理解C指针之---内存管理

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 内存管理对所有程序都很重要,主要包括显式内存管理和隐式内存管理.其中隐式内存管理主要是 ...

  4. Vbat 1.8V,接充電器,GPIO_CHG_EN pin 竟然是 high!

    Schematic : Precondition : Vbat 1.8V Plugin adapter Preloader doesn't enable GPIO_CHG_EN Origin : 做個 ...

  5. fork()函数的执行过程、孤儿进程和僵尸进程

    说起fork就不得不提COW(Copy On Write),就是“写时拷贝”.也就是当fork发生时,子进程根本不会去拷贝父进程的内存页面,而是与父进程共享.当子进程或父进程需要修改一个内存页面时,L ...

  6. PE 512 Sums of totients of powers

    可以很简单的发现,当n是奇数的时候,f(n)=φ(n),否则f(n)=0. 所以我们就是求n<=5*10^8且n为奇数的φ的和. 首先我们可以做到用杜教筛算出φ的前缀和,但是如何把偶数的减去? ...

  7. java常用IO

    字节流:FileInputStream.FileOutputStream 字符流:FileWriter.FileReader 转换流:InputStreamReader.OutputStreamRea ...

  8. Go语言:变参函数

    变参函数: 函数中形式参数的数目通常是确定的,在调用的时候要依次传入与形式参数对应的所有实际参数,但是在某些函数的参数个数可以根据实际需要来确定,这就是变参函数. Go语言支持不定长变参,但是要注意不 ...

  9. SVG动画实践篇-无中生有的线条动画

    git: https://github.com/rainnaZR/svg-animations/tree/master/src/pages/step2/path 说明 这个动画实现的是线条动画,主要用 ...

  10. U-net图像分割

    [Keras]基于SegNet和U-Net的遥感图像语义分割 2014 年,加州大学伯克利分校的 Long 等人提出全卷积网络(FCN),这使得卷积神经网络无需全连接层即可进行密集的像素预测,CNN ...