HTTPS 原理与证书实践

 
分类: Web应用
 

1.1 网络安全知识

1.1.1 网结安全出现背景

网络就是实现不同主机之间的通讯,网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通汛的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机之间的稳定可靠通讯,其实是一件非常困难的事情了,如果还要再通讯的基础上保证数据传输的安全性,可想而知,绝对是难上加难,因此,网络发明之初,并没有太关注TCP/IP互联协议中的安全问题。

对于默认的两台主机而言,早期传输数据信息并没有通过加密方式传输数据,设备两端传输的数据本身实际是明文的,只要能截取到传输的数据包,就可以直接看到传输的数据信息,所以根本没有安全性可言。

1.1.2 网络安全涉及问题

早期网络设备间进行通讯时,是采用明文逬行数据传输的,并没有网络安全技术可言。我们可以提出一种假设,如果在网络上的两台主机之间传输数据,就是采用明文的方式;并且对于网络传输而言,并没有相关的网络安全技术保驾护航,这样在互联网上进行数据传输,都有哪些网络风险需要进行面对。

Ø 网络安全问题--数据机密性

在网络传输数据信息时,对数据的加密是至关重要的,否则所有传输的数据都是可以随时被第三方看到,完全没有机密性可言。

Ø 网络安全问题--数据完整性

网络传输数据的完整性,也是安全领域中斋要考虑的里要环节,如果不能保证传输数据的完整性,那传输过程中的数据就有可能被任何人所篡改,而传输数琚双方又不能及早的进行发现,将会造成互连通汛双方所表达信息的意义完全不一致。因此,对于不芫整的数据信息,接收方应该进行相应判断,如果完整性验证错误,就拒绝接收相应的数据。

Ø 网络安全问题--身份验证问题

网络中传输数据时,很有可能传输的双方是第一次建立连接,进行相互通讯,既然是第一次见面沟通,如何确认对方的身份信悤,的确是我要进行通讯的对象呢?如果不是正确的通讯对象,在经过通讯后,岂不是将所有数据信息发送给了一个陌生人。

1.2 网络安全问题的解决

1.2.1 网络安全解决问题--如何保证数据的机密性

Ø 数据机密性解决思路--利用普通算法解决机密性

为了保证数据的机密性,首先可以采用的方法就是将数据通过相应算法,转换为其它的数据信息,然后再通过相应算法反推出真正的数据是什么,这样一来就保证了数据在网络传输过程中安全性,不会被其它人轻易的看到传输过程中的数据信息.数据加密前的信息称为明文数据(plaintext),经过加密算法转换后进行传输的信息称为密文数据(ciphertext);反之经过解密算法转换后,会将密文数据恢复为明文数据进行显示接收。

图 - 数据机密性处理示意图

l 优点:

实现了数据机密传输,避免了明文传输数据的危险性。

l 缺点:

利用加密算法,将明文改密文,如果第三方获得加密算法,即可将传输密文再次变为明文

Ø 数据机密性解决思路--利用对称加密算法解决机密性

普通算法虽然已经解决了明文数据的机密性,可以在网络传输过程中不被直接看到明文数据。但是新的问题又产生了,既然明文数据是通过算法改变成了新的数据信息,如果第三方获得了算法,利用算法也是可以将密文数据信息,再次转换为明文数据信息,因此出现了对称加密算法,形象比喻来说:数据加密算法就好比是一本密码规则手册,而对称加密算法就是将手册放在了一个保险柜中进行了上锁传输,只有传递数据信息的双方知道打开保险柜的密码。

图 - 数据机密性处理示意图

1.2.2 网络安全解决问题-如何保证数据的完整

Ø 数据完整性解决思路--利用单项加密算法

利用数据的单项加密算法(提取数据指纹),进行提取数据特征码的方式,从而完成数据传输的完整性验证.实际的算法实现过程为:在一段明文数据信息后加上数据信息的特征码,这个特征码是通过结合数据信息进行相应算法获得的数据特征码,接收方当收到数据信息后,会利用相同的加密算法对获取的数据进行加密,确认加密后得到的特征码是否与传送过来数据后面描述的特征码一致;如果一致,可以表示数据没有被篡改过,如果不一致表示数据完整性遭到了破坏,数据一概不予以接收处理。

Ø 数据完整性解决思路--利用单项加密算法(加密特征码)

由于可能存在中间人攻击的可能性,因此可以对传输过程中数据特征码进行加密,发送方利用对称密钥方式对手中的特征码进行加密,接收方会利用相同的密钥对手中的特征码进行解密,从而确认特征码是否一致.如果中间人将新的特征码也进行了加密,发送给接收方,但接收方无法利用和发送方协商好的解密密钥对特征码进行解密,最终无法识别中间人发送过来的数据特征码信息。

在此需要了解一下加密算法的原理 ↓

通讯双方需要进行数据密钥信息约定(密钥协商过程),在密钥相互可以获悉的过程中,需要借助密钥交换机制(Internet key exchange IKE),进而实现密钥的交互。为了满足网络中,两台主机间密钥交换统一的过程,需要引入一种新的协议diffie-hellman协议。

diffie-hellman协议算法实现的过程:

1) 首先发送方选取一个大素数P(只能被1和自己整除的数),再选取一个生产数g ,并且发送方将P与g经过互联网传输到接收方。

2) 数据传输的两端,发送方选取一个随机数x,接收方选取一个随机数y;发送方只知道随机数x ,接收方只知道随机数y , x和y不在互联网上进行传输。

3) 接收数据双方开始进行计算,对于发送方进行计算g的x次方对P取模的结果,传输给接收者;而接收方进行计算g的y次方对P取模的结果,传输给发送者。

4) 此时对于接收方获取到了发送方的g的x次方对P取模的结果,在取模结果的基础上进行y次方的运算,y就是接收方自身产生的随机数y;而对于发送方获取到了接收方的g的y次方对P取模的结果,在取模结果的基础上进行x次方的运算。x就是发送方自身产生的随机数x#此次,双方的加密运算密钥就实现了交换,并且是统一一致的,最终的密钥为g的xy次方对P取模的结果。

图 - diffie-hellman协议算法示意图

通过diffie-hellman协议算法最终可以实现了网络传输双方的密钥交换,并且通讯的双方也从此不用再对密钥进行管理记忆,只需要在进行传输数据前,逬行一次密钥的交换过程;即完成了对称密钥的生成过程。

并且如果网络中有攻击者在尝试破解出交换密钥时,就算通过比较复杂的数学运算,获悉了密钥,但也只是了解了上一次的数据交换密钥信息;下一次数据传输双方通讯时,还会交换新的密钥用于新的数据传输。

1.2.3 网络安全解决问题-如何进行传输双方身份验证

Ø 网络安全身份验证解决方案

以上信息只是解决密钥的交换获取问题,但是网络的身份验证问题依旧没有逬行解决,换句话说,通讯双方的确可以获取统一的密钥信息了,并且是通过相对安全的方式获取得知的,但是通讯双方在交换获取密钥前,又怎么确认得知,交换密钥的对方的确是要逬行通讯的发送方或接收方呢?

Ø 安全身份验证解决思路-利用非对称密钥加密箅法(公钥加密算法)

利用非对称加密算法(公钥加密算法),可以从根本上有效解决网络中,数据传输双方的安全身份验证问题。非对称加密算法中,存在密钥对的概念,即拥有公钥(public key)与私钥(pnvate key),其中公钥不是自行创建出来的而是从私钥中提取出来一部分作为公钥,因此可以说公钥是来自于私钥的,而私钥才决定了密钥加密的安全性,于是私钥的长度可能会非常长,从最初的1024,2048,到4096一直到更多的位数,将私钥密钥位增加的很长,从而提升了密钥安全性。

利用非对称加密算法,需要遵循一个基本原则:公钥加密的只能利用与之配对的私钥进行解密,反之也是一祥的.但是非对称加密算法并不能用于对数据完整性进行验证,因为私钥只有一份,但公钥可以有很多份。尽管非对称加密算法不能满足数据 完整性验证,但完全可以满足对传输者身份验证的需求,因为接收者可以拥有相应的公钥,只有与之对应的发送者用相应的私钥进行加密信息,用对应的公钥自然即可解密,否则可以确认发送者身份已经发生了变化。

1.3 证书的由来

1.3.1 如何获取公钥信息

默认公钥在网络中进行传递时,默认情况下也是会出现问题的如下图所示:

对发送方的公钥信息进行公正步骤:(借助第三方安全机构)

a) A和B端首先生成自己的公钥和私钥的密钥对,为了使对方能相佶自己的公钥信息,将自己的公钥信息告知给第三方发证机构,利用第三方机构对自己的公钥进行公证,第三方机构会制作一个数字证书(机构编号以及发证机构的联),并且第三方机构也要给自己设置一个合法的公钥和私钥,并且公钥设为第三方机构的公钥证书。

b) 发证机关计箅出数字证书数据的特征码,并用自己的私钥进行加密,并将加密的信息附加到 特征码后成为数字签名。

c) A和B两锭获得公正过的证书信息,并通过证书信息传递.得到对方的公钥。

d) A和B两端与第三方机构建立连接,获得第三方证书,通过第三方证书获得第三方公钥,利用第三方公钥只要能解密数字签名即可。

1.3.2 证书信息所包含什么内容

目前标准的证书存储格式是x509,还有其他的证书格式,需要包含的内容为:

ü 公钥信息,以及证书过期时间

ü 证书的合法拥有人信息

ü 证书该如何被使用

ü CA颁发机构信息

ü CA签名的校验码

互联网上使用的SSL和TLS证书管理机制均使用x509的格式。

1.4 加密算法的简介

1.4.1 对称加密算法

对称加密算法特性是加密和解密使用同一个密钥,利用对称算法可以将明文改为密文(加密),密文还原为明文(解密)。

对称加密算法常见的有:

https原理与实践的更多相关文章

  1. https原理及实践

    转载请注明出处 安全知识 网络安全问题 数据机密性 在网络传输数据信息时,对数据的加密是至关重要的,否则所有传输的数据都是可以随时被第三方看到,完全没有机密性可言. 数据机密性解决问题思路 利用算法 ...

  2. Tengine HTTPS原理解析、实践与调试【转】

    本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验.内容主要有四个方面:HTTPS趋势.HTTPS基础.HTTPS实践.HTTPS调试. 一.HTTPS趋势 这一 ...

  3. 分布式开放消息系统(RocketMQ)的原理与实践(转)

    转自:http://www.jianshu.com/p/453c6e7ff81c 分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回 ...

  4. js原生的轮播,原理以及实践

    轮播,无论是文字轮播还是图片轮播,他们的原理是一样的,都是通过定时器执行循环展示和影藏. 一.手动轮播 (1)原理 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利 ...

  5. 《从Paxos到Zookeeper:分布式一致性原理与实践》【PDF】下载

    内容简介 Paxos到Zookeeper分布式一致性原理与实践从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议. ...

  6. 2018-2019-2 20165234 《网络对抗技术》 Exp3 免杀原理与实践

    实验三 免杀原理与实践 实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧:(1.5分) 2.通过 ...

  7. 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  8. 2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践 实验内容(概要): (1)使用netcat获取主机Shell,cron启动 首先两个电脑(虚拟机)都得有netcat, ...

  9. 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践

    - 2018-2019-2 网络对抗技术 20165206 Exp2 后门原理与实践 - 实验任务 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主 ...

随机推荐

  1. Android中选项卡功能的实现

    Android中选项卡功能的实现 Android中使用TabHost和TabWidget来实现选项卡功能.TabHost必须是布局的根节点,它包含两个子节点: TabWidget,显示选项卡: Fra ...

  2. 上手 Webpack ? 这篇就够了!

    JavaSript 模块化打包已混迹江湖许久.2009年,RequireJS 就提交了它的第一个版本,Browserify 接踵而至,随后其他打包工具也开始大行其道.最终,Webpack 从其中脱颖而 ...

  3. xargs: How To Control and Use Command Line Arguments

    参考: http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/ http://linux ...

  4. iOS开发笔记_5.线程,HTTP请求,定时器

    说起线程,不会陌生了,操作系统课程里已经详细介绍了这个东东,这里就不解释了,想要了解的问问百度或者翻翻书. 线程的创建 总结了昨天的学习,有下面几种创建的方式. //第一种 NSThread *t = ...

  5. Android ViewStub的使用方法

    大家写项目的时候肯定会有一些东西提前写好,可是不到一定条件是不想让它显示出来的.我们可能的做法就是让它View.GONE 或View.INVISIBLE等到一定条件了在代码里面这设置View.VISI ...

  6. ubuntu14.04 server 安装docker

    安装docker服务 $ curl -sSL https://get.docker.com/ | sh   $ ocker run hello-world 测试docker是否安装成功 ubuntu ...

  7. 转:ios学习指南

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Franz Fang链接:https://www.zhihu.com/question/20264108/answer/302 ...

  8. Elasticsearch 理解

    概述 Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的. 特性 安装方便:没有其他依赖,下载 ...

  9. Java Executor框架

    java.util.concurrent 包中包含灵活的线程池实现,但是更重要的是,它包含用于管理实现 Runnable 的任务的执行的整个框架,该框架称为 Executor 框架.该框架基于生产者- ...

  10. 【微信转载】Google是如何做测试的

    就 目前的软件公司而言,Google无疑是在开放和创新力方面做得最好的.而如何支撑Google这种快速地扩张的研发能力以及迭代速度,并且产品质量总是 一如以往的能给人们很棒的用户体验?这是一个值得我们 ...