一、SSL&TLS

1.SSL:Secure Sockets Layer ,加密套接字协议层

1)SSL是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密

Secure Socket Layer为Netscape网景公司1994年所研发,用以保障在Internet上数据传输之安全,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取及窃听。

2)SSL协议可分为两层:记录协议、握手协议

SSL Record Protocol:建立在可靠的传输协议如TCP之上为高层协议提供数据封装、压缩、加密等基本功能

SSL Handshake Protocol:建立在SSL记录协议之上用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

3)SSL版本:1.0v  2.0v  3.0v

1.0版本未公布,2.0版本才发出就被暴出大量漏洞

主流版为3.0。广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输,但近期被爆出安全漏洞

2.TLS:Transport Layer Security,安全传输层协议

1999年,IETF在仿照SSL发布,为防止SSL一家独大,基本和SSL协议兼容

(1)版本:V1.0, V1.1, V1.2, V1.3

V1.3现在为草案支持椭圆曲线算法,现在主流是V1.2

(2)分层设计:

1)最底层:基础算法原语的实现,aes, rsa, md5

2)向上一层:各种算法的实现;

3)再向上一层:组合算法实现的半成品;

4)用各种组件拼装而成的各种成品密码学协议软件;

3.SSL和TLS实现网络安全性:http  -->  SSL/TLS --> https

传输层协议有TCP,UDP,SCTP,不同主机上的进程间通信通过socket(ip:port)

client ip:port <-- --> serverip:port

port:进程地址,进程向内核注册使用某端口(独占)

套接字一般处于监听模式:LISTEN(ip:port),占用端口,发起请求是启用服务

二、传输安全性实现:密钥算法协议

1.网络传输安全性

(1)安全的目标

保密性:confidentiality

完整性:integrity

可用性:availability

(2)攻击类型

威胁保密性的攻击:窃听、通信量分析;

威胁完整性的攻击:更改、伪装、重放、否认

威胁可用性的攻击:拒绝服务(DoS)

(3)解决方案

技术层面:加密和解密

服务层面:用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务

2.密钥算法

(1)对称加密:加密和解密使用同一个密钥;

1)特性:加密、解密使用同一个密钥;将原始数据分割成为固定大小的块,逐个进行加密;

2)缺陷:密钥过多;密钥分发困难;

3)种类:

DES:Data Encryption Standard,数据加密标准;算法的入口参数有三个:Key、Data、Mode。

Key为7个字节共56位,是DES算法的工作密钥;

Data为8个字节64位,是要被加密或被解密的数据;

Mode为DES的工作方式,有两种:加密或解密

3DES:三轮加密的DES

AES:Advanced Encryption Standard;  (128bits, 192bits, 256bits, 384bits)

Blowfish、Twofish、IDEA、RC6、CAST5

(2)公钥加密:密钥分为公钥与私钥

1)公钥:从私钥中提取产生;可公开给所有人;pubkey

2)私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key;

3)特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;

4)用途:身份认证,数字签名:主要在于让接收方确认发送方的身份;

密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;

数据(特征码)加密:其加密速度比对称加密慢三个数量级,所以不能做全数据加密

5)算法:RSA, DSA, ELGamal

DSS: Digital Signature Standard

DSA:Digital Signature Algorithm

(3)单向加密:即提出数据指纹;只能加密,不能解密

1)特性:定长输出、雪崩效应;

2)功能:完整性校验;

3)算法:md5:Message Digest 5, 128bits,消息摘要算法,版本号为五

sha1:Secure Hash Algorithm 1, 160bits ,安全的Hash算法

sha224, sha256, sha384, sha512

3.密钥交换协议:IKE(Internet Key Exchange)

(1)公钥加密

(2)DH(Deffie-Hellman)算法:密码本身无需在互联网上传输,但双方能得到一致的密码

扩展:ECDH(椭圆曲线DH)、ECDH(临时椭圆曲线DH)

实现方案简介:

1)A和B生成两个数字:p, g。p大素数和g,可以明文可以传输

2)A和B各自自定义一个数字x、y,进行阶乘取模操作,将其结果传递给对方

A私下生成x     --> p^x%g ==> B

B私下生成y    --> p^y%g ==> A

3)A和B进行解密操作

A: (p^y%g)^x=p^yx%g  ; B: (p^x%g)^y=p^xy%g

4.PKI:Public Key Infrastructure公钥基础设施

(1)PKI组成

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:CB,公共存储证书位置

(2)X.509v3:定义了证书的结构以及认证协议标准

版本号、序列号、签名算法ID、发行者名称、有效期限、主体名称、主体公钥、发行者的惟一标识

主体的惟一标识、扩展、发行者的签名

三、SSL实现工作流程

1.SSL会话实现主要步骤(三步):

(1)客户端向服务器端索要并验正证书;

(2)双方协商生成“会话密钥”;

(3)双方采用“会话密钥”进行加密通信;

2.SSLHandshake Protocol:SSL握手协议

第一阶段:ClientHello:客户端

支持的协议版本,比如tls1.2;

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

支持的加密算法,比如AES、3DES、RSA;

支持的压缩算法;

第二阶段:ServerHello服务器端

确认使用的加密通信协议版本,比如tls1.2;

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

确认使用的加密方法;

服务器证书;

第三阶段:

验正服务器证书,在确认无误后取出公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)

发送以下信息给服务器端:

一个随机数;

编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

客户端握手结束通知;

第四阶段:

收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有到的“会话密钥”;

向客户端发送如下信息:

编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

服务端握手结束通知;

Google图示:public key client 和private key client---SSL握手协议

注释:左侧client;右侧server。蓝色虚线分割开各个阶段

SSL协议实现步骤总结:

1.客户端生成随机数,建立会话前商定(如约定的加密算法),服务器端将自己生成的随机数返回

2.服务器端将自己的证书发给客户端,并且请求客户端证书;

3. 客户端检查服务器端的证书(签发者CA、证书有效期、证书内容、证书中名称和通信名称一致、是否吊销),若检查没问题,客户端将会将自己的证书发给服务端

4.服务器端收到客户端证书,检查客户端证书

5.服务端将前面所有信息用hash计算,用自己的公钥签名发给客户端

6.客户端机密数据用对方公钥加密后发送给对方

7.双方可以开始进行基于对称加密方式通信

8.客户端请求断开会话,服务器端断开会话

注意:

1)客户端验证是为了防止钓鱼网站等,确认访问的网站为自己所需确认站点

2)公钥是私钥的其中一部分,私钥是私密的、个人的,公钥是公开的部分;私钥的长度长于公钥

3)服务器证书的主体名称要和浏览器上的访问的名称一致,否则验证无法通过;所以在互联网上当做服务器证书名称必须与通过互联网访问服务器时候的名称完全一致,否则客户端提醒操作有风险

4)数据加密过程

-->单向加密算法算出数据包的特征码

--->用自己的私钥再次加密上述的特征码

--->使用双方协定算法对称加密整个数据包(数据+二次加密的特征码)

--->最后再封装一层对方公钥加密的特征码

其中,最后一步也可以单独进行一次特性进行发送确认

经过四次加密能保证数据的完整性,数据的完整性,以及所有者的身份认证

http://blog.51cto.com/xuding/1732275

SSL&TLS传输层加密协议实现图解--(重要)的更多相关文章

  1. EXCHANGE 2013 TLS传输层安全

    默认情况下,SMTP流量是不被加密的,这就导致在公网上进行邮件沟通就像是在广播一样,任何人拦截到该邮件都可以轻而易举的读取其内容.但是现实场景中有许多敏感信息是通过邮件来进行发送的,所以其中一种保护邮 ...

  2. 转: https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

    转自: http://www.cnblogs.com/mailingfeng/archive/2012/07/18/2597392.html 因为项目中要用到TLS + SASL 来做安全认证层. 所 ...

  3. 数字证书, 数字签名, SSL(TLS) , SASL .

    因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/ar ...

  4. https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL_转

    转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首 ...

  5. (转)数字证书, 数字签名, SSL(TLS) , SASL

    转:http://blog.csdn.net/xueshanfeihu0/article/details/9154219 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料 ...

  6. SSL/TLS 协议详解

    SSL(Secure Sockets Layer,安全套接层),及其继任者 TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议.TLS ...

  7. SSL/TLS 原理详解

    本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1 ...

  8. [No0000126]SSL/TLS原理详解与WCF中的WS-Security

    SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...

  9. 公钥、私钥、SSL/TLS、会话密钥、DES【转载】

    原文链接:https://www.cnblogs.com/thbCode/p/5829719.html 一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据 ...

随机推荐

  1. Android SnackBar:你值得拥有的信息提示控件

    概述: Snackbar提供了一个介于Toast和AlertDialog之间轻量级控件,它能够非常方便的提供消息的提示和动作反馈. 有时我们想这样一种控件.我们想他能够想Toast一样显示完毕便能够消 ...

  2. LeetCode 160. Intersection of Two Linked Lists (两个链表的交点)

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  3. 更改App.config里的值并保存

    using System; using System.Collections.Generic; using System.Configuration; using System.IO; using S ...

  4. 全然卸载oracle11g步骤

    iLife's 博客http://blog.csdn.net/fei1502816 全然卸载oracle11g步骤: 1. 開始->设置->控制面板->管理工具->服务 停止全 ...

  5. Android应用资源

    Java刚開始学习的人直接在Java源代码使用"hello" 和123 类型的字符串和整型.但时间长了就会忘记当初定义的原因,有经验的或许会定义字符串常量ResultSet.TYP ...

  6. Robert 的军队

    题目描述 Winter is coming. Robert 是个昏庸的君主,整日沉迷于吃喝玩乐,终于,当寒冬降临,他不得不组 织军队来对抗敌人. 尽管如此,他仍然是个喜欢玩耍的人,还有点强迫症,他希望 ...

  7. hdu 1512 Monkey King —— 左偏树

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1512 很简单的左偏树: 但突然对 rt 的关系感到混乱,改了半天才弄对: 注意是多组数据! #includ ...

  8. Linux学习大纲

  9. 洛谷P1330 封锁阳光大学(二分图染色)

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  10. codevs3304水果姐逛街(线段数)

    3304 水果姐逛水果街Ⅰ  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond   题目描述 Description 水果姐今天心情不错,来到了水果街. 水果 ...