所谓对数据的加密,即就是利用各种算法对数据进行封装,使通信双方能安全的进行数据通信,防止数据被篡改。
一.加密算法和协议
1.对称加密技术
对称加密技术是发送者和接收者采用相同的密钥进行对数据的封装和解封装
主流的对称加密算法有:
DES:此算法是将64位明文转变为64位密文,实际加密长度为56位,其余为校验位
3DES,DES3:是基于DES算法,使用三次56位密钥对数据进行加密
AES:
Blowfish:可参考https://baike.baidu.com/item/BLOWFISH/1677776?fr=aladdin
Twofish
IDEA
RC4,RC6
CAST5
特性:
(1.每对通讯主机都需要保有唯一的通信密钥,用于加密和解密数据
(2.将原始的数据分割成固定大小的块,逐个加密
(3.加密和解密的速度非常快
缺点:
(1.密钥分发困难
(2.在通信时必须要双方的密钥相同,则用户保存的密钥量大
2.非对称密钥
公钥加密算法:
密钥是由私钥和由私钥抽取生成的公钥组成;
私钥:512bits,1024bits,2048bits,4096bits,8192bits,16384
主流的公钥加密算法:
RSA:加密,数字签名;
DSA:Digital Signature Algorithm,数字签名算法;只能做数字签名;有时此算法也被称为
DSS,digital signature standard
Elgamal:
特性:
1.使用密钥进行加密和解密的时候,私钥加密的数据只能由与之对应的公钥才能解密
私钥:通过特定的工具随机创建生成,由使用者自己留存,务必保证其私密性;被称为“secret key”或“private key”
公钥:通过特定的工具从私钥中抽取生成,仅仅是私钥的一部分;公钥可以公开给所有人使用;被称为“public key”
2.私钥的长度都比较长,加密之后的数据安全等级较高;
缺陷:
加密数据的时候,消耗系统资源和时间都比较多,速度很慢;因此,极少用来加密大量数据
公钥加密算法的用途:
1.密钥交换:发送数据的一方使用接受数据一方的公钥加密对称加密算法的密钥,将加密后密钥发送给接收方
2.数字签名:确保数据传输过程中发送方的身份的正确性
单向加密算法(Hash加密算法,数据指纹算法):
只能加密不能解密,又称为“数据指纹提取”;数据指纹即数据的特征码;
主流的加密算法:
MD5,message digest version5,信息摘要算法第五版;
128bits定长输出
sha系列:security hash algorithm,安全的哈希算法
sha-1:160bits定长输出
sha224:224bits定长输出
sha256:256bits定长输出
sha384:384bits定长输出
sha512:512bits定长输出
认证协议:
密钥交换算法:
1.公钥加密
2.DH算法:Diffie-hellman
用于在通信双方生成一对用于公钥加密算法的密钥对
加密算法的应用:
1.通信双方互相交换各自的证书,并到信任的CA进行证书有效性认证
2.如果证书认证有效,发送方使用某种协商好的对称加密算法进行数据加密,对数据进行特征值抽取;再用自己的私钥加密抽取出来的特征值,以证明数据来源可靠性;发送方利用接收方的公钥加密对称加密算法的密钥
3.接收方在收到数据报文之后,先用自己的私钥解密对称加密算法的密钥;然后用发送方的公钥解密被加密的特征值,以证明数据来源可靠,再利用相同的单向加密算法计算数据的特征值,比较两个特征值是否相同以证明数据完整性;再用对称密钥解密加密的数据即可;
以CA为核心生成的一套安全架构体系:
PKI体系:Public Key Infrastructure,公钥基础设施;其包含的内容
1.签证机构:CA
2.注册机构:RA
3.证书吊销列表:CRL
4.证书存储库:CR
国际标准化组织(ISO)定义了证书的结构和认证标准:X.509协议标准
证书的组成包括:
证书的版本号:
证书的序列号:
有效期限:
签发算法的ID:
签发CA的名称:
主体的名称:
主体的公钥
主体的唯一标识符
发证者的唯一标识符
发证者的数字签名
扩展信息
CA如何发挥作用?
1.通信双方互相交换各自的证书
2.双方验证证书的真伪
3.双方协商加密算法
4.用CA颁发的公钥解密证书中的CA的签名,能解密说明证书来源可靠
5.用CA的加密算法加密证书,并取得特征值;与解密出来的特征值进行比较,如果相同,说明证书完整性由保证
6.检查证书的有效期是否合法,如果在有效期内,则证书可用
7.检查证书的主体名称和此次通信的目标是否能够对应
8.检查证书是否被吊销
能够实现上述安全加密功能的协议:
SSl:Security Socket Layer
1994年,Netscape(网景)公司最先声明并实施
SSL V1.0
SSL V2.0
SSL V3.0
TLS:Transport Layer Security,传输层安全协议
IETF:Internet Engineering Task Force,互联网工程项目小组
1999年提出TLS V1.0
2006年提出TLS V1.1
2008年提出TLS V1.2草案,添加了椭圆曲线加密算法
分层设计方案:
1.最底层,规定了基础算法的原语的实现:包括:AES,md5,sha,
2.向上一层:各种算法的基本实现
3.再向上一层:各种算法组合实现的半成品
4.最高层:用各种组件拼装而成的各种成品密码学协议软件
ssl/tls的handshake的四个阶段:
1.客户端向服务器索要证书并验证证书
发送Client Hello的消息,此消息主要内容
支持的协议的版本,如:SSl V3.0或TLS V1.2
客户端会生成一个随机数,稍后用于生成会话密钥
支持的加密算法,如:DES,3DES,AES,RSA
支持的压缩算法,如:gzip,bzip2,deflate
2.双方协商生成会话密钥
发送server hello消息,此消息主要内容
确认使用的协议的版本,如:TLS V1.2
服务器也生成一个随机数,稍后用于生成会话密钥
确认加密算法和压缩算法
服务器的证书
3.双方采用以及生成的会话密钥进行安全加密的数据通信
客户端验证服务器证书,在确认无误后,取出其中的服务器公钥
验证服务器证书的步骤
验证发证机构(CA)
验证证书的完整性
验证证书的持有者信息
验证证书的有效期
验证CA的吊销列表中是否有此证书
客户端发送信息给服务器端
客户端再次生成一个随机数,用于公钥加密
编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法
客户端握手结束
服务器收到的客户端发送来的第三个随机数(Pre_Master_key),计算生成此次会话用到的会话密钥,向客户端发送相关信息;
编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法
服务器端握手结束
4.双方互相结束通信
原文地址:http://blog.51cto.com/yigechenlin/2095144