openssl 详解
来源:互联网 发布:mac samba 客户端 编辑:程序博客网 时间:2024/05/13 16:50
SSL记录协议中的MAC(摘要算法)
总之,MAC的安全性在于引入了保密的私钥来计算摘要,理论上只要对私钥的穷举攻击是可能的,那么对mac的攻击就是可能的,只是更慢些罢了,这种办法一般采用离线的方式进行,因此最好的保护措施就是不断的更新密码,在离线攻击成功之前把密码改掉,不给攻击者任何机会。另外,没有另外了...
SSL协议的概述
提供网络安全服务可以在不同层次提供。通用的解决方法是在网络层使用IPSec,IPSec对于最终用户和应用程序是透明的。另一个比较通用的解决方法是在TCP上实现安全性,在这一级,有两种实现选择,一是SSL(或TLS)可以作为基本协议族的一个部分提供,因此对应用程序透明,二是将SSL嵌入到软件中,如嵌入到Web浏览器与Web服务器。与应用有关的安全服务也可以被嵌入到特定的应用程序中,如安全电子交易(SET)。
HTTP
FTP
SMTP
S/MIME
PGP
SET
HTTP
FTP
SMTP
SSL or TLS
Kerberos
SMTP
HTTP
TCP
TCP
UDP
TCP
IP/IPSec
IP
IP
图13.1 TCP/IP协议栈中安全机制的位置
Netscape公司推出Web浏览器时,提出了SSL(Secure Socket Layer)安全通信协议, SSL协议目前已成为Internet上保密通讯的工业标准。现行Web浏览器普遍将HTTP和SSL相结合,来实现安全通信。
IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。
在WAP的环境下,由于手机及手持设备的处理和存储能力有限,wap论坛(www.wapforum.org)在TLS的基础上做了简化,提出了WTLS协议(Wireless Transport Layer Security),以适应无线的特殊环境。
SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器和客户机两端同时实现支持。它能使客户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对客户进行认证。SSL协议要求建立在可靠的传输层协议(例如:TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,Telnet)能透明的建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。
如果利用SSL协议来访问网页,其步骤如下:
(1)用户:在浏览器的地址栏里输入https://www.sslserver.com
(2)HTTP层:将用户需求翻译成HTTP请求,如
GET /index.htm HTTP/1.1
Host http://www.sslserver.com
(3)SSL层: 借助下层协议的的信道,安全的协商出一份加密密钥,并用此密钥来加密HTTP请求。
(4)TCP层:与web server的443端口建立连接,传递SSL处理后的数据。
接收端与此过程相反。
SSL协议允许支持SSL协议的服务器与一个支持SSL协议的客户机相互认证,还允许这两个机器间建立加密连接,提供连接可靠性。
SSL服务器认证允许用户确认服务器身份。支持SSL协议的客户机软件能使用公钥密码标准技术(如用RSA和DSS等)检查服务器证书、公用ID是否有效和是否由在客户信任的认证机构CA列表内的认证机构发放。
SSL客户机认证允许服务器确认用户身份。使用应用于服务器认证同样的技术,支持SSL协议的服务器软件能检查客户证书、公用ID是否有效和是否由在服务器信任的认证机构列表内的认证机构发放。
一个加密的SSL连接要求所有在客户机与服务器之间发送的信息由发送方软件加密和由接受方软件解密,对称加密法用于数据加密(如用DES和RC4等),从而连接是保密的。所有通过加密SSL连接发送的数据都被一种检测篡改的机制所保护,使用消息认证码(MAC)的消息完整性检查、安全散列函数(如SHA和MD5等)用于消息认证码计算,这种机制自动地决定传输中的数据是否已经被更改,从而连接是可靠的。
带SHA-1消息认证、支持168位加密的Triple-DES,速度不如RC4快。由于密码长度较大,大约有3.7 * 1050个密码可用。
带MD5消息认证、支持128位加密的RC4,RC4和RC2都有128位的密码,它们的加密强度仅次于Triple-DES。RC4和RC2大约有3.4 * 1038 个密码可用,这使得它们很难被破解。RC4密码是SSL支持的密码中最快的。
带MD5消息认证、支持128位加密的RC2,RC2比RC4速度慢(SSL3.0支持而SSL2.0不支持)。
带SHA-1消息认证、支持56位加密的DES,大约有7.2 * 1016 个可用的密码(在SSL2.0中该密码使用的是MD5 消息认证)。
根据美国政府的规定,以上四种加密仅能在美国境内使用,以下加密技术是可以出口的。
带MD5消息认证、支持40位加密的RC4,大约有个1.1 * 1012可用的密码。
注:对RC2和RC4支持40位加密,其中密钥仍是128位的,但只有40位有加密意义。
不加密,只带MD5消息认证。这种方法使用MD5消息认证检测篡改(SSL3.0支持而SSL2.0不支持)。
SSL主要工作流程包括:网络连接建立;与该连接相关的加密方式和压缩方式选择;双方的身份识别;本次传输密钥的确定;加密的数据传输;网络连接的关闭。
应用数据的传输过程为:
(1)应用程序把应用数据提交给本地的SSL;
(2)发送端根据需要,使用指定的压缩算法,压缩应用数据;
(3)发送端使用散列算法对压缩后的数据进行散列,得到数据的散列值;
(4)发送端把散列值和压缩后的应用数据一起用加密算法加密;
(5)密文通过网络传给对方;
(6)接收方用相同的加密算法对密文解密,得到明文;
(7)接收方用相同的散列算法对明文中的应用数据散列;
(8)计算得到的散列值与明文中的散列值比较;
如果一致,则明文有效,接收方的SSL把明文解压后得到应用数据上交给接收方的应用。否则就丢弃数据,并向发方发出告警信息。严重的错误有可能引起再次的协商或连接中断。
SSL协议建立在传输层和应用层之间,包括两个子协议:SSL记录协议和SSL握手协议,其中记录协议在握手协议下端。
SSL握手协议
SSL改变密码格式协议
SSL警告协议
HTTP,FTP,…
SSL 记录协议
TCP
IP
图13.2 SSL记录协议和SSL握手协议
二、SSL记录协议
SSL记录协议为SSL连接提供两种服务:机密性和报文完整性。
在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和长度不为0的记录数据组成的。所有的SSL通信都使用SSL记录层,记录协议封装上层的握手协议、警告协议、改变密码格式协议和应用数据协议。SSL记录协议包括了记录头和记录数据格式的规定。
SSL记录协议定义了要传输数据的格式,它位于一些可靠的的传输协议之上(如TCP),用于各种更高层协议的封装,记录协议主要完成分组和组合,压缩和解压缩,以及消息认证和加密等功能。
主要的操作见图13.3。
(1)分段
每个上层应用数据被分成214字节或更小的数据块。记录中包含类型、版本号、长度和数据字段。
(2)压缩
压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。
(3)在压缩数据上计算消息认证MAC。
(4)对压缩数据及MAC进行加密。
(5)增加SSL记录头。
内容类型(8位):封装的高层协议。
主要版本(8位):使用的SSL主要版本。对于SSLv3.0,值为3。
次要版本(8位):使用的SSL次要版本。对于SSLv3.0,值为0。
压缩长度(16位):明文数据(如果选用压缩则是压缩数据)以字节为单位的长度。
内容类型
主要版本
次要版本
压缩长度
明文(压缩可选)
MAC(0,16 或20位)
已经定义的内容类型是握手协议、警告协议、改变密码格式协议和应用数据协议。其中改变密码格式协议是最简单的协议,这个协议由值为1的单字节报文组成,用于改变连接使用的密文族。警告协议用来将SSL有关的警告传送给对方。警告协议的每个报文由两个字节组成,第一字节指明级别(1警告或2致命),第二字节指明特定警告的代码。
三、SSL握手协议
SSL握手协议被封装在记录协议中,该协议允许服务器与客户机在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。在初次建立SSL连接时服务器与客户机交换一系列消息。
(1)客户机认证服务器;
(2)允许客户机与服务器选择双方都支持的密码算法;
(3)可选择的服务器认证客户;
(4)使用公钥加密技术生成共享密钥;
(5)建立加密SSL连接。
SSL握手协议报文头包括三个字段:
类型(1字节):该字段指明使用的SSL握手协议报文类型。SSL握手协议报文包括10种类型。报文类型见图13.5。
长度(3字节):以字节为单位的报文长度。
内容(≥1字节):使用的报文的有关参数。
报文类型
参数
hello_request
client_hello
server_hello
certificate
server_key_exchange
certificate_request
server_done
certificate_verify
client_key_exchange
finished
空
版本、随机数、会话ID、密文族、压缩方法
版本、随机数、会话ID、密文族、压缩方法
X.509v3证书链
参数、签名
类型、授权
空
签名
参数、签名
Hash值
图13.5 SSL握手协议报文
SSL握手协议的过程如下:
注:带*的传输是可选的,或者与站点相关的,并不总是发送的报文。
图13.6 握手协议的过程
- openssl 详解
- openssl详解
- openssl详解
- openssl使用详解
- openssl程序设计详解
- OpenSSL命令详解
- OpenSSL详解【精华】
- OpenSSL 的使用详解
- OpenSSL 的使用详解
- openssl命令详解
- OpenSSL命令详解
- OpenSSL命令详解
- OpenSSL命令详解
- OpenSSL编程-RSA编程详解
- OpenSSL编程-RSA编程详解
- OpenSSL EVP_EncryptInit 函数官方详解
- OpenSSL编程-RSA编程详解
- openssl生成证书命令详解
- duilib : VT_TAB被屏蔽的折中解决方法
- poj1182 Food Chain
- 数据结构的C实现_循环队列
- Spring管理Filter和Servlet
- :第五周项目一三角形类12
- openssl 详解
- linux查看cpu和core数量
- win8笔记本建立wifi热点
- Git 的origin和master分析 .
- 将自己的笔记本作为wifi路由器(构建win 7/8 虚拟wifi)
- java.lang.OutOfMemoryError: Java heap space
- 【js学习笔记-100】--------跨域HTTP请求
- DOCUMENT.GETELEMENTBYID使用
- HTML标签 闭合还是不闭合?