TCP/IP数据加密传输及CA简述

TCP/IP跨主机之间的通信数据封装发送的都是明文数据,现代通讯中会有安全问题。

三个安全问题

如:A发送消息给B的三个安全问题
机密性:明文传输如:ftp,http,smtp,telnet等
完整性:数据可能被篡改(举例:电商下单生产数量或者传输过程信号错乱)
身份验证:A和B从未见过(举例:钓鱼网站冒名顶替,保证对方即是其所声称的身份)

解决上述三个问题可以通过加密算法的混合使用,常见加密算法有如下

对称加密
DES:数据加密标准,早期使用的56bit密钥
3DES:Triple DES 对每个数据块应用三次DES加密
AES:高级加密标准128bit默认,还有AES192、AES256、AES512

单向加密
MD5
SHA1 输出长度为160
SHA192/SHA256/SHA384 输出长度

公钥加密核心功能是数据加密和签名
RSA:实现加密和签名,部分公开使用
DSA:只实现签名,公开使用

三个问题的解决

机密性假如传输数据abc,为了不让互联网上的其他人获取,就要加密,那么如何加密呢?加密就是转换规则,把明文转换成密文,plaintext-->转换规则-->ciphertext。

如果其他人获得了转换规则(算法)怎么办?通常更换的是秘钥而不是算法,设计思想是靠秘钥保证机密性而非算法,换秘钥更简单

加密算法--对称加密:用于加密任意大小的数据块数据内容,加密方和解密方使用的是同一个密码,加密速度快。如:A要与BCDEF…通信,各方不同密钥,密钥管理复杂。缺点:通信对象多的时候,无法有效对密钥管理。

↓↓

完整性如何保证数据不被篡改?加密算法—单向加密:抽取数据的特征码。把特征码附加在原文之后一并发送。

单向加密特性:
输入一样,输出必然一样;
雪崩效应,输入的微小改变,将会引起结果的巨大改变;
无论原始数据是多少,结果大小都是相同的;
不可逆,无法根据特征码还原原来的数据

中间人攻击:修改数据和特征码重新发送。所以数据完整性的手段无法保证完整性本身,要借助其他机制——加密特征码。特征码能够使用对称加密,可是在两个人第一次通信时,由于互相都不知道对方的密钥,在网络上传输密钥时是明文传输的,密钥安全性不能得到保证。

如何实现双方协商密钥,但是却不让第三方得到密钥?——密钥交换
最早的Diffie-Hellman IKE(Internet Key Exchange)互联网密钥交换
①A、B各自选择两个数字p,g(大素数,生成数)
②A、B各自生成自己的随机数x,y
③A:g^x%p—>B    B:g^y%—>A   把计算结果发给对方
④A:(g^y%p)^x=g^yx%p(结果就是密钥) B:(g^x%p)^y=g^xy%p
通过这种方式,双方只知道自己的x,y,但是经过计算可以在未知对方x或y的情况下得到相同的一个数值(g^xy%p)

↓↓

密钥交换后可以加密特征码,可是还是没有解决问题,仍然无法验证对方身份

如何验证对方身份?催生第三种加密算法产生--公钥加密算法

公钥加密(非对称加密)加密和解密使用的是不同的密码,有公钥和私钥,密钥是成对出现的,公钥是从私钥中提前出来的,私钥是很长的,私钥加密速度比较慢。公钥是公开的,公钥加密需要用私钥解密,用私钥加密得用公钥解密。

用对方公钥加密数据,可以保证机密性。发送方用自己私钥加密,可以实现身份验证

公钥加密算法速度太慢,不适用于加密数据,慢于对称加密三个数量级,用于身份验证

结合两种加密(保证完整性+身份验证)

使用私钥加密特征码,中间人能解密可以修改数据,但是接收方可以发觉。这一切的保证就是公钥,那么从哪里获得公钥?

↓↓

如何保证不是中间人的公钥,只能借助于第三方机构。

这里最重要的一步就是公钥的获取,如何得到对方的公钥,又如何得知一定是对方的公钥?

此时就需要依赖于CA,每个人所发的公钥对方无法验证其真假,就像你说自己是xx,那怎么证明你就是xx呢?生活中我们都是通过身份证来验证的,但是身份证不能你自己做一张印上一个名字,就说自己叫xx,需要提供一张由公安部门所颁发的权威的身份证才能得到认可,因为大家是信任公安部门的权威性的。这里把公安部门称为第三方机构也即是这里的CA。AA和BB通信之前要向CA去注册认证自己的身份。

AA向CA申请给自己发一个证(里面包含公钥、名字、有效期等CA会使用单向加密计算这些数据特征码,CA再用自己的私钥加密这段特征码并附加在证书的后面,即数字签名,保证了证书的信息没有被更改),AA就把自己的证给BB,那此时BB如何去验证AA发来的证书不是伪证书?则BB需要信任CA,才能信任CA所颁发的证书,BB使用CA的公钥解密这段特征码,再用相同的单向加密计算这些数据特征码,比较两个特征码是否一致。

获取到CA的证书就包含了CA的公钥,此时CA的证书(公钥)从何而来呢?CA是自己给自己给发证书的。用自身的私钥给包含公钥的证书签名。如何判断获得的CA的证书就是发证机关的?无法保证。你可以到颁发机构本地复制证书,还有一些电子商务网站,你信任这些网站,你访问时就安装它的证书。且需要提供有公信力CA是需要向根CA注册申请,都是需要收费的。

虽然私钥把特征码加密附到源数据一起发送可以解决完整性和身份验证问题,但是数据仍然未加密,此时通过秘钥交换形成的对称秘钥把有附加信息的源数据整体再次加密就能解决机密性问题。

秘钥交换除了上述的DH算法,也可以通过对称秘钥来实现
以随机生成一个数当加密密钥,用接收方的公钥加密后加在数据后面发送出去,接收方用私钥解密获得对称密钥,用对称密钥解密数据,最后用私钥解密特征码。

证书

证书颁发机构和彼此间的信任关系述组成了PKI(public key infrastructure公钥基础设施),基本组成如下:

签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:

证书颁发机构(根证书颁发机构)派发出子机构 ,称为RA,用于接受证书申请,最后发给CA签名。

还有一种特殊情况,如果说证书(私钥)丢失了,该如何处理呢?私钥丢了,必须让获得公钥的主机知道公钥被废了,因此CA机构需要维持一张列表(证书吊销列表),一旦私钥丢弃,则向CA申请自己的证书作废。CA机构就把丢失私钥的主机放到证书吊销列表中。

crl:证书吊销列表,Certificate Revocation List;保存此前发出的仍未过期但被撤销的证书。则通信时,还需要增加一步就是通信的对方收到数据后,需要到CA机构查看发送方是否在证书吊销列表中。(注意互联网上绝大部分通信者都没有这样做,因此互联网上通信还是存在安全隐患的)

一个证书中应该包含什么?
不同标准下的证书格式是不同的,主流的标准格式如x509(国际电信联盟ITU-T 制定),包含

主体名称:证书的合法拥有者
附加在最后是通过CA私钥签名的证书特征码

获取证书就是为了获得对方公钥,如何验证证书
1、利用本地预存的公钥信息,解密颁发机构的签名
2、解密获得证书的特征码,验证此证书内容没有被篡改
3、联系证书颁发机构确认证书有效可用

有两种PKI:TLS/SSL使用的是x509的证书;OpenGPG是另一种证书管理机制(或者叫PKI的实现架构)

另外为了验证证书不是由伪装的CA颁发的,必须通过可靠的途径来获取可信任CA的公钥(如厂商之间互相信任内置公钥)

时间: 2024-10-13 21:00:42

TCP/IP数据加密传输及CA简述的相关文章

网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结

引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信. 使用TCP还是UDP,那要看你的程序注重哪一个方面,可靠(tcp)还是快速(udp). TCP/IP 建立连接的过程 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.   

【精】TCP/IP协议简介(四) 之 传输层UDP&TCP

传输层:UDP 协议 一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在于 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信. 两个主机的传

Socket编程实践(1) --TCP/IP简述

ISO的OSI OSI(open system interconnection)开放系统互联模型是由ISO国际标准化组织定义的网络分层模型,共七层, 从下往上为: OSI七层参考模型 物理层(Physical Layer) 物理层定义了所有电子及物理设备的规范,为上层的传输提供了一个物理介质,本层中数据传输的单位为比特(bit/二进制位).属于本层定义的规范有EIA/TIA RS-232.RJ-45等,实际使用中的设备如网卡属于本层. 数据链路层(Data Link Layer) 对物理层收到的

TCP/IP,Http,Socket,XMPP的区别

大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用(程序员层面上).也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍: “我们在传输数据时

TCP/IP 网路基础

一.引子 ????????TCP/IP是"Transmission Control Protocol/Internet Protocol"的简写,翻译成中文为传输控制协议/互联网网络协议.TCP/IP是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据来往格式及传送方式.TCP/IP是Interent的基础协议,也是一种计算机数据打包和寻址的标准方法. 二.计算机网络概述 ????????计算机网络是指将地理位置不同的,具有独立功能的多台计算机及其他外

TCP/IP、Http、Https、Socket的区别

网络由下往上分为物理层.数据链路层.网络层( IP协议).传输层( TCP协议).会话层.表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IP.Http.Socket的区别 TCP/IP连接:手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接,TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上.建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SY

http、TCP/IP协议与socket之间的区别

网络由下往上分为:  www.2cto.com 物理层-- 数据链路层-- 网络层--                       IP协议 传输层--                       TCP协议 会话层-- 表示层和应用层--           HTTP协议 1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. 建立起一个TCP连

TCP/IP、HTTP的区别

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:"我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP.FTP.TELNET等,也可以自己定义应用层协议.WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做

TCP/IP、Http、Socket的区别

网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket则是对TCP/IP协议的封装和应用(程序员层面上). 也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输, 而HTTP是应用层协议,主要解决如何包装数据. 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍: “我们在传输数据时,可以只使用(传输