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

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

三个安全问题

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

解决上述三个问题能够经过加密算法的混合使用,常见加密算法有以下网络

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

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

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

三个问题的解决

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

若是其余人得到了转换规则(算法)怎么办?一般更换的是秘钥而不是算法,设计思想是靠秘钥保证机密性而非算法,换秘钥更简单spa

加密算法--对称加密:用于加密任意大小的数据块数据内容,加密方和解密方使用的是同一个密码,加密速度快。如: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 制定),包含
image
主体名称:证书的合法拥有者
附加在最后是经过CA私钥签名的证书特征码

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

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

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

相关文章
相关标签/搜索