数据的加密和解密


加密是让数据从明文变成密文,传输过程中是密文,传送过去之后对方接收到的也是密文。

可以理解为密文就是乱码,看不出内在的任何意义,通常也都是逐位对应的。

在接收方接收到密文之后只有把它还原为原来的样子才可以理解对方说的具体是什么,此过程就叫做解密。


1.不同主机之间的进程间通信:Socket-pair,套接字对

 套接字Socket的三种类型:

   流套接字(Socket_Stream):基于TCP协议通信的套接字

   数据报套接字(Socket_Dgram):基于UDP协议通信的套接字

   裸套接字,原始套接字(Socket_Ram):基于底层协议通信的套接字


2.威胁安全的行为:

威胁机密性的***行为:

 窃听、嗅探、扫描、通信量分析

威胁完整性的***:

 更改、伪装、重放、否认

威胁可用性的***:

 拒绝服务(DoS)


3.安全实现的目标:

  机密性:confidentiality,保证信息不泄露

  完整性:integrity,保证信息不被篡改

  可用性:availability,保证信息内在价值


4.安全解决方案:

  技术:加密和解密

    传统的加密方法:替代加密算法

    现代的加密方法:块加密方法:

  服务:安全服务

    身份认证、访问控制机制


5.加密方案:

  加密算法和密钥


  加密算法


  四种加密算法:

    对称加密算法

    公钥加密算法(非对称加密)

    单向加密算法

    密钥交换算法


    1)对称加密算法:

   加密和解密使用同一密钥

   特性:

     1.每对通信主机都需要保有一个相同的密钥,用于加密和解密

     2.将原始的数据分隔成固定大小的块,逐个加密

     3.加密和解密的速度比较快    

   缺陷:

     1.加密解密所需要保有的密钥数量过多

     2.密钥分发过于困难 


   主流加密算法:

     DES:Data Encryption Standard,数据加密标准

       56bit密钥,64bit块

       3DES:triple DES

     AES:Advanced Encryption Standard高级加密标准

       AES128bit,AES192bit,AES256bit

     Blowfish

     Twofish

     IDEA

     RC

     RC4,RC6


 2)公钥加密算法:

   密钥分为私钥和私钥抽取生成的公钥组成

   私钥:512bit,1024bit,2048bit,4096bit,8192bit,16384bit

   特点:

     1.使用密钥对来加密和解密,使用私钥加密的数据必须用从中抽取出的公钥解密,同样如果使用公钥加密必须使用与之相对的私钥进行解密

       私钥:通过特定的工具创建生成,由使用者自己留存,务必保证其私密性,secret key,或者private key

       公钥:从私钥中提取产生,公钥可以公开给所有人使用public key

     2.密钥长度比较长,加密后的数据安全等级较高

   缺陷:

     加密数据的时候,消耗的系统资源和时间都较多,很少用来加密大批量数据

   用途:

     数字签名:主要用于让接收方确认发送方的身份,使用发送方的私钥发送数据,到了接收方之后,使用发送方的公钥解密数据

     密钥交换:发送数据的一方使用接受方的公钥加密对称密钥,将加密后的对称密钥发送给对方 

     数据加密:通常用于加密小数据


   常用的公钥加密算法:

     RSA:加密,数字签名

     DSA:数字签名算法,Digital signature Algorithm,数字签名算法,只能实现数字签名的功能,有时候该算法被称为DSS,Digital Signature Standard

     Elgamal:


 3)单项加密:

   只能进行加密,不能进行解密,从已知数据中提取密码指纹

   特性:

     1.定长输出

     2.雪崩效应

   功能:

     保证数据的完整性

   常用的算法:

     md5:massage digest version 5 ,信息摘要算法的第五版

       128bit定长输出

     sha系列:

       sha-1:secure hash algorithm,安全哈希算法,160bit定长输出

       sha224

       ssh256

       ssh384

       ssh512


 4)密钥交换算法:IKE(Internet key exchange)

   公钥加密

   DH算法:deffie-hellman


  密钥


国际标准化组织(ISO)定义了证书的结构和认证标准:X.509协议标准

证书里面包括的:

 拥有者的名称

 拥有者所提交的公钥信息

 有效期

 证书的版本号

 证书的序列号

 签发算法ID

 签发CA的名称

 主体名称

 签发机构的唯一标识

 签发机构的数字签名

 扩展信息


PKI:public key infrastructure,公钥基础设施

 证书的签证机构:CA

 注册机构:RA

 证书吊销列表:CRL,certification Revoke List

 证书存取库:CAB,certification Access Base


CA如何发挥其作用:

 1.通信双方互相交换证书,

 2.双方协商加密算法

 3.双方验证证书的真伪

 4.CA的公钥解密证书的CA的签名,能解密说明证书来源可靠

 5.同样的加密算法加密证书,取得特征值,与解密出来的特征值比较,如果相同说明证书完整性可靠

 6.检查证书的有效期是否在合法范围内,如果过期则证书不被认可

 7.检查证书的主体名称和此次通信的目标是否能够对应


 SSL:Secure Socket Layer,安全的套接字层


TLS:Transport Layer Security,传输层安全

 IETF:Internet Engineering Task Force,互联网工程项目小组

 分层设计:

   1.最底层:实现基础算法的原语的实现,AES,md5,sha...

   2.向上一层:各种算法的基本实现

   3.再向上一层:各种算法组合实现的半成品

   4.最高层:各种组件拼装而成的各种成品密码学协议软件


SSL/TLS的handshake(握手)的四个阶段:

 1.客户端向服务器索要证书,并验证证书是否合法

   Client Hello发送的信息内容

     支持的协议版本,如:TLS V1.2

     客户端生成一个随机数,稍后用户生成会话密钥

     支持的加密算法,如:AES,DES,RSA等

     支持的压缩算法


 2.双方协商生成会话密钥

   Server Hello发送的信息内容

     确认使用的加密协议的版本号,如 TLS V1.2

     服务器生成一个随机数,稍后用于生成会话密钥

     确认加密算法及压缩算法


 3.双方采用已经生成的会话密钥进行安全加密的通信

   客户端验证服务器证书,在确认无误后取出其公钥


   验证服务器证书需要验证下述内容:

     验证发证机构(CA)

     验证证书的完整性

     验证证书的持有者信息

     验证证书的有效期

     验证证书的吊销列表


   客户端发送信息给服务器端

     一个随机数,用于服务器上的公钥加密

     编码格式变更的通知,表示随后的信息都将用双方已经协商好的加密算法和秘钥进行加密发送 


   客户端握手结束


 4.双方互相通告握手结束的信息

   服务器收到客户端发送来的此次握手阶段的第三个随机数Pre-Master-key,计算生成本次会话所用到的会话密钥,向客户端发送相关信息

     编码变更通知,表示随后的信息都将用双方已经协商好的加密算法和密钥进行加密发送,


   服务器端握手结束