Secure Sockets Layer(安全套接层)

SSL

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

Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL
当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

提供服务

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器
  2. 加密数据以防止数据中途被窃取
  3. 维护数据的完整性,确保数据在传输过程中不被改变

工作流程

服务器认证阶段:

  • 1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
  • 2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
  • 3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
  • 4)服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

SSL协议提供的安全通道有以下三个特性:

  • 机密性:SSL协议使用密钥加密通信数据。
  • 可靠性:服务器和客户都会被认证,客户的认证是可选的。
  • 完整性:SSL协议会对传送的数据进行完整性检查。

从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。

SSL体系结构

SSL的体系结构中包含两个协议子层,其中底层是SSL纪录协议层(SSL Record Protocol Layer);高层是SSL握手协议层(SSL HandShake Protocol Layer)。SSL的协议栈如图所示,其中阴影部分即SSL协议。[2]
SSL纪录协议层的作用是为高层协议提供基本的安全服务。SSL纪录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行。纪录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。
SSL握手协议层包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)、应用数据协议(Application Data Protocol)和SSL告警协议(SSL Alert Protocol)。握手层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之间相互验证,协商加密算法和生成密钥等。SSL握手协议的作用是协调客户和服务器的状态,使双方能够达到状态的同步。

SSL记录协议

SSL纪录协议(Record Protocol)为SSL连提供两种服务。[2]

  • (1)保密性:利用握手协议所定义的共享密钥对SSL净荷(Payload)加密。
  • (2)完整性:利用握手协议所定义的共享的MAC密钥来生成报文的鉴别码(MAC)。

SSL的工作过程如下。

  • (1)发送方的工作过程为:

    • 从上次接受要发送的数据(包括各种消息和数据);
    • 对信息进行分段,分成若干纪录;
    • 使用指定的压缩算法进行数据压缩(可选);
    • 使用指定的MAC算法生成MAC;
    • 使用指定的加密算法进行数据加密;
    • 添加SSL纪录协议的头,发送数据。
  • (2)接收方的工作过程为:
    • 接收数据,从SSL纪录协议的头中获取相关信息;
    • 使用指定的解密算法解密数据;
    • 使用指定的MAC算法校验MAC;
    • 使用压缩算法对数据解压缩(在需要进行);
    • 将纪录进行数据重组;
    • 将数据发送给高层。
    • SSL纪录协议处理的最后一个步骤是附加一个SSL纪录协议的头,以便构成一个SSL纪录。SSL纪录协议头中包含了SSL纪录协议的若干控制信息。

SSL的会话状态

会话(Session)和连接(Connection)是SSL中两个重要的概念,在规范中定义如下。[3]

  • (1)SSL连接:用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。
  • (2)SSL会话:是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。

一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站的访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数。这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,提高了效率。

每一个会话(或连接)都存在一组与之想对应的状态,会话(或连接)的状态表现为一组与其相关的参数集合,最主要的内容是与会话(或连接)相关的安全参数的集合,用会话(或连接)中的加密解密、认证等安全功能的实现。在SSL通信过程中,通信算法的状态通过SSL握手协议实现同步。

根据SSL协议的约定,会话状态由以下参数来定义:

  • (1)会话标识符:是由服务器选择的任意字节序列,用于标识活动的会话或可恢复的会话状态。
  • (2)对方的证书:会话对方的X.509v3证书。该参数可为空。
  • (3)压缩算法:在加密之前用来压缩数据的算法。
  • (4)加密规约(Cipher Spec):用于说明对大块数据进行加密采用的算法,以及计算MAC所采用的散列算法。
  • (5)主密值:一个48字节长的秘密值,由客户和服务器共享。
  • (6)可重新开始的标识:用于指示会话是否可以用于初始化新的连接。

连接状态可以一下参数来定义:

  • (1)服务器和客户器的随机数:是服务器和客户为每个连接选择的用于标识连接的字节序列。
  • (2)服务器写MAC密值:服务器发送数据时,生成MAC
  • (3)使用的密钥,长度为128 bit。
  • (4)客户写MAC密值,服务器发送数据时,用于数据加密的密钥,长度为128 bit 。
  • (5)客户写密钥:客户发送数据时,用于数据加密的密钥,长度为128 bit。
  • (6)初始化向量:当使用CBC模式的分组密文算法是=时,需要为每个密钥维护初始化向量。
  • (7)序列号:通信的每一端都为每个连接中的发送和接收报文维持着一个序列号。

Https协议介绍

HTTPS(Hypertext Transfer Protocol Secure)安全超文本传输协议
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。
https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
限制
它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持.
一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分,只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者尝试窃听数据于传输中。
商业网站被人们期望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户攻击和损害。[4]

时间: 2024-10-13 09:15:58

Secure Sockets Layer(安全套接层)的相关文章

SSL/TLS(Secure Sockets Layer / Transport Layer Security)

# 协议概述 缩写 名称 默认端口 安全策略 描述 HTTP Hyper Text Transfer Protocol(超文本传输协议) TCP80 HTTP 协议是明文的,传输内容会被嗅探和篡改. 客户端浏览器或其他程序与Web服务器之间的应用层通信协议 SSL/TLS Secure Sockets Layer(安全套接层)Transport Layer Security(传输层安全) TCP443 1)认证用户和服务器,确保数据发送到正确的客户机和服务器: 2)加密数据以防止数据中途被窃取:

connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "java.lang.RuntimeException: Could not generate DH keypair

1 下载   bcprov-ext-jdk15on-1.54.jar      bcprov-jdk15on-1.54.jar    ssl-provider-jvm16    mchange-commons-java.0.2.3.4 .jar     拷贝到 to jdk1.6.0_XX\jre\lib\ext ssl-provider-jvm16    下载地址  https://github.com/tobszarny/ssl-provider-jvm16/releases 2 修改如下配

Telnet协议,SSH协议(安全外壳协议),SSL协议(安全套接层协议),HTTPS(Hypertext Transfer Protocol Secure)安全超文本传输协议

2.Telnet协议 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序(如putty),用它连接到服务器.终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样.可以在本地就能控制服务器.要开始一个telnet会话,必须输入用户名和密码来登录服务器.Telnet是常用的远程控制Web服务器的方法. 3.SS

SSL安全套接层

SSL安全套接层: 是一种在两台机器之间提供安全通道的协议,它具有保护传输数据识别通信机器的功能. SSL协议由两层组成: SSL记录协议(它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装.压缩.加密等基本功能的支持) SSL握手协议(它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证.协商加密算法.交换加密密钥等) ssl握手主要是为了得到会话密钥,握手本身属于非对称加密,当得到会话密钥后,以后的数据传输都会使用对称算法进行 SSL握手过程: 1.客户端

关闭layer弹出层,刷新父窗口 - 官方没有说这个, 但是很有用。

关闭layer弹出层,刷新父窗口,火狐提示:NS_ERROR_XPC_SECURITY_MANAGER_V错误 原代码如 下: window.parent.location.reload(); //window.parent.location.href="/file/list" var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); 解决方案: 利用end函数 layer.open(

asp.net中获取Layer弹出层返回值

1.MainPage.aspx中点击按钮利用Layer弹出层,代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainPage.aspx.cs" Inherits="demo.MainPage" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh

layer弹出层设置相对父级元素定位

layer弹出层默认是相对body固定定位的,可是项目中一般需要相对某个盒子相对定位,下面是个加载弹层例子: var loadIndex = layer.open({ type: 3, //3 表示加载 fixed: false, //取消固定定位,因为固定定位是相对body的 offset: ['60px', '132px'], //相对定位 time: 5000, //定时关闭弹层 icon: 2, //加载的icon类型 shade: 'background-color: rgba(0,0

常用的layer弹出层

本文来自 松耦合 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/dunegao/article/details/78978448?utm_source=copy 常用的layer弹出层 1.提示信息 layer.msg("格式不正确") 2.loading加载层 var loading_img = layer.load(1, { shade: [0.1,'#fff'] //0.1透明度的白色背景 }); //数据调取完毕时使用 layer.close(

layer弹出层中H5播放器全屏出错解决 &amp; 属性poster底图占满video的方法

1. 在layer弹窗组件中 如果使用了flash播放器,全屏是正常的 但若使用了HTML5的播放器,全屏失效 举个栗子 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-