1.加密概念算法
加密要解决三个问题:
安全
机密性(不可破解)服务器
完整性(不可篡改)网络
肯定性(不可冒充)
ide
1.1.加密技术函数
网络传输给生活和工做带来极大的方便,同时这个方便又不能让咱们不得不防止别有企图者的网站
别有用心,因而加密成为关键。这里暂不谈加密算法的问题,就聊聊一个实现的过程原理。
加密
加密技术简介:
spa
对称加密 ------ 加密速度快,能更好的迎合实时沟通,缺点是密钥的传输须要秘密完3d
成。因而生成了一个递归困局。
非对称加密 ------ 加密速度相对较慢,优点在于甲方须要接受密文时,乙方只须要发布公钥
公开传输。
单向加密 ------ 加密过程不可逆,密文具备惟一性,并且密文格式固定。能够用来惟一认证被加密对象。
举例子来讲明:
场景介绍,某机构在西安跟芝加哥有两个独立运营的机构。由于业务缘由,西安方面须要
跟芝加哥那边沟通一些机密事宜。
这是,芝加哥那边可使用非对称加密技术把公钥发送给西安方面,因而西安方面使用公
钥对“对称加密”的密钥进行加密发送。这样双方可使用对称加密的方式进行比较安全的沟
通。
1.2.数据完整性
单向加密就能够很好地保证传输文件的完整性。
1.3.加密模型
通信方式
通信双方A B。私钥S,公钥G。
一、双方使用对称加密相互通信;
骑个“自行车”把密钥给送过去,完成密钥交换。(Diffie-Hellman密钥交换)
二、双方使用非对称加密相互通信;
这个过程叫作公共密钥交换,而后各自发送信息时使用对方公钥加密后传送;接受的信息使用自
己的私钥解密。
密钥交换
Diffie-Hellman密钥交换
经过该方法,协议双方在必定程度上能够获取一个安全的对称密钥。
经过非对称加密交换一把对称加密的密钥
双方使用任意一方的公钥交换一把私钥,而后使用对称私钥加密交换信息;继而能够更换对称密钥,达到与多个通信对象的安全传输。
1.4.身份惟一性
通信的双方,使用非对称加密的私钥加密文件,传输给对方。对方使用其公钥能够解密时,那么表明其身份是能够惟一肯定的。
用公钥解密,就没法保证数据的机密性。再加上,其加密效率问题(速度太慢),非对称加密就用来作身份验证。
1.5.认证机制
认证的必要性
* 请思考一个问题,Diffie-Hellman密钥交换时,怎么肯定对方就是本身要通信的真实对象呢。
就用非对称加密的特性完成身份验证。从而确保,通信方的身份是惟1、肯定的。
* 请思考一个问题,若是我是那个别有用心之人,我该作什么呢?
那么就是冒充甲方,由于人人都能取得非对称加密的公钥,我不就能够冒充了,……
一、C冒充A,给B发布本身的公钥
二、C一样冒充任意一方,与之交换对称密钥;同时窃取双方的加密信息。
“身份验证”……
通信双方,须要互相验证对方的身份。
认证过程
基于公钥冒充的问题,那就请第三方机构认证公钥。经过提交本身的公钥交给认证机构,通过认证后,肯定下私钥拥有者的合法身份信息。
这个时候,通信双方就能互相信任对方身份的真实存在。拿着本身获取对方的证书,去第三方机构验证公钥的合法性。相互验证身份结束。
身份验证时,经过了第三方的认证,能够解决身份验证问题是个好事情。问题是该项服务是个付费项目。客户端访问服务器,网站能够花费一笔费用去验证自身的身份,客户呢,费用巨大……。在网络交易时,站点提供有偿服务时,怎么肯定能在提供服务后,获取客户端用户的报酬呢?
1.6.安全通道
经过一个可信任的第三方认证机构,实现身份认证。认证后也能够经过加密手段实现通信的机密性,使用单向加密把传输的信息再次确认,排除掉由于可能存在的传输质量等问题引发的数据缺失、恶意修改。假如存在恶意修改,虽然修改者不必定能解密得到数据信息,可是却能起到必定破坏做用,即便破环在数据完整性检测下会丢弃。但是不堪其扰也毫不是一件该忍受的事情。
加密方法:
对称加密,加密和解密使用同一个密钥。
公钥加密,一对密钥(私钥、公钥)。
单向加密、散列加密,计算数据特征码。
单向加密的特征: ①雪崩效应 ②定长输出 MD5: 128位 SHA1: 160位 |
2.加密算法
Hash算法
又称单向散列算法,是一个将任意长度的消息通过各类处理返回必定长度的消息摘要算法;
Hash算法是不可逆的。因为不可逆特色,不能用于加密;只能用于数字签名、数据的完成性校验。
对称算法
又称传统算法(或是单密钥算法),就是加密密钥能从解密密钥中推算出来;反之也成立,
其实也就是加密密钥和解密密钥是同一个密钥。
公开密钥算法
公开密钥算法是非对称的,而且它使用两个密钥;基于数学函数,而非基于替换和置换。
Hash算法
CRC32 循环冗余校验
MD5 消息摘要算法
SHA 安全散列算法
对称算法
DES 数据加密标准(分组算法)
(双重DES、三重DES)
AES 高级加密标准
(DES的替代算法)
公开密钥算法
RSA
EIGamal
RSA:是一个比较完善的公开密钥算法,既能用于加密,也能用于数字签名。
RSA的安全性基于整数因子分解问题的困难性,公钥和私钥是一对大素书的函数。
从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。
公钥:加密 认证 (做用)
私钥:解密 签名
3.SSL/TLS
SSL 安全套接字层/在TCP和使用TCP的应用之间提供安全服务
TLS 传输层安全协议
DSA 数字签名算法
SSL的主要目标是为两个通讯主体提供保密、可靠的信道。创建在可靠的传输层之上,与应用层
的具体协议无关;加密算法、通讯密钥的协商以及服务器的认证都是由SSL自动地完成的。在 SSL
的链接创建以后,应用层不须要进行任何干预,通讯中的全部数据都会被SSL自动加密。
什么是SSL?
是一种用于确保应用程序间数据传输的机密性和可靠的internet传输层协议;
使各应用程序能够经过公钥和私钥相互验证身份;
使用密钥加密和数字签名为应用程序间交换的数字加密;
多是单向的,即服务器向客户端验证身份;也多是双向的……
在初次创建链接时须要握手。
4.数字签名
基于安全的考虑,须要对信息进行加密。因而出现了加密算法。因为信息是须要传递的,为了可以解密,须要交换密钥。因而,又出现了非对称加密,用来交换对称加密的密钥。到了这里,仅仅解决了“机密性”,仍然存在风险可能会面对“完整性”(被篡改)。终于,解决“完整性”出现了单向加密技术,如今只须要发送单向加密的特征码既能够验证信息的完整性。信息是安全的,完整的,就剩下最后一个问题,就是“肯定性”。最后,为了实现信息传递“肯定性”出现了数字签名技术。到此为止,加密模型创建完毕,信息是安全的,具备了机密、完整、肯定的特性。
数字签名,用私钥把信息的特征码进行加密后获得就是签名。
这么个加密模型已经很完善了,是否就必定是安全的?答案是否认的,中间人***。***者发送本身取得的两个公钥分别发送给信息的双方……
因此,数字签名实现了肯定的身份,这个身份还须要进一步获得公信机构的确认。你们都信任一个公信机构,该机构给数字签名作公正。这么一来,信息发送的双方就真实的确认了双方的身份。
5.CA证书
加密模型中公信机构,又叫“证书颁发机构”,该机构颁发的证书用来完成身份验证。
SSL证书
证书包括:
组织的名称和ip地址;
组织的公钥;
证书颁发机构名称,及机构的数字签名。
用途:
加密全部使用SSL协议传输的数据。
SSL证书链 (一些列的证书)
每一个证书都包含该证书的签发者的名称,即链中下一个证书的请求者名称;
每一个证书都使用其颁发者的私钥来签名,该签名可使用证书链中下一个证书颁发者的公钥
进行验证;
根证书颁发机构的证书是自签名证书。
* 首先须要生成一个主证书(顶级CA),而后使用这个主证书来签发服务器证书和客户端证
书。
CA(证书颁布机构)
受信任的第三方;
对被颁发者的真实性负责;
向申请机构签发 数字证书(公钥);该证书使用CA的私钥签署;
CA的公钥普遍发布。
SSL握手
SSL握手顺序
●肯定加密算法、密钥交换方式
●创建、互换会话密钥
●验证服务端证书
●验证客户端证书