`
geeksun
  • 浏览: 965120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSL/TLS 协议详解

 
阅读更多

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

为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃~听。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: 
      SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 
      SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务主要有:
  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2)加密数据以防止数据中途被窃取;
  3)维护数据的完整性,确保数据在传输过程中不被改变。

 

一、什么是SSL?

      SSL或者Secure Socket Layer,是一种允许web浏览器和web服务器通过一个安全的连接进行交流的技术。这意味着将被发送的数据在一端被翻译成密码,传送出去,然后在另一端解开密码,再进行处理。这是一个双向的过程,也就是浏览器和服务器都需要在发送数据之前对它们进行加密。

      SSL协定的另一个重要方面是认证(Authentication)。这就是说,在你开始试图通过一个安全连接与一个Web服务器交流的时候,这个服务器会要求你的浏览器出示一组证件,通过“鉴定”的方式来证明这就是你所声明的网站。在某些情况下,服务器还会要求你的web浏览器的认证书,证明你就是你所说的那个人。这就是所知的“客户认证”,尽管实际情况中,更多地用在商务-对-商务(B2B)交易,而不是对个人用户。大多数有SSL功能的web服务器不要求客户认证(Client Authentication)。

 

 二、证书:Certificate

     为了能实施SSL,一个web服务器对每个接受安全连接的外部接口(IP地址)必须要有相应的认证书(Certificate)。关于这个设计的理论是一个服务器必须提供某种合理的保证以证明这个服务器的主人就是你所认为的那个人,特别是在接收任何敏感信息之前要这样做。关于Certificates的更广泛的解释超过了这个文档资料的范围,就把一个认证书当作一个英特网地址的“数码驾驶执照”。这个认证书要陈述与这个网站相关联的公司,以及这个网站的所有者或系统管理员的一些基本联系信息。

     这个"驾驶执照"由所有人以密码方式签字,其他人非常难伪造。对于进行电子商务 (e-commerce)的网站,或其他身份认证至关重要的任何商业交易,认证书要向大家所熟知的认证权威 (Certificate Authority (CA))如VeriSign或Thawte来购买。这样的认证书可用电子技术证明属实——实际上,认证权威单位会担保它发出的认证书的真实性,如果你信任发出认证书的认证权威单位的话,你就可以相信这个认证书是有效的。

     从技术上说,SSL 证书(也称为数字证书)将身份与一对可用于加密和签名数字信息的电子密钥绑定。SSL 证书能够实现对某人自称有权使用特定密钥的声明的验证,有助于防止有人使用欺骗性密钥来模拟其他用户。当与加密配合使用时,SSL 证书可提供完整的安全解决方案,可以保证参与事务的一方或各方的身份。

     SSL 证书是由受信任的第三方(称为证书颁发机构 (CA))发放的。CA 的作用有些像护照办理处。CA 必须采取一些措施来确定要向其发放 ID 的人或组织的身份。一旦 CA 建立某个组织的身份后,就可以发出一个包含该组织的公钥的证书,并用 CA 的私钥对其签名。

     通过使用 SSL 证书,您就能在自己的站点上开展验证身份的、加密的在线商务活动。访问您站点的用户将可以向站点提交信用卡号或其他个人信息,从而保证他们真心实意与您进行业务交易(并非是骗子),并且他们发送给您的信息不会被目标接收者以外的任何人截取或解密。您的 SSL 证书将包含下列信息:

     您的组织的公用名称(如 www.bea.com)

  •     其它标识性信息(如 IP 和物理地址)
  •     您的公钥
  •     公钥的到期日期
  •     发出此 ID 的 CA 的名称(如 VeriSign)
  •     一个唯一的序列号
  •     VeriSign 的数字签名

 

 三、证书格式

主要的证书类型有:
    PEM
    DER
    PKCS#12

PEM
    可以包括所有私钥(RSA 和 DSA)、公钥(RSA 和 DSA)和 (x509) 证书。它存储用 Base64 编码的 DER 格式数据,用 ascii 报头包围,因此适合系统之间的文本模式传输。

-----BEGIN CERTIFICATE-----
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
EzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xFTAT
BgNVBAoTDEJFQSBXZWJMb2dpYzERMA8GA1UECxMIU2VjdXJpdHkxIzAhBgNVBAMT
GkRlbW8gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9zdXBw
b3J0QGJlYS5jb20wHhcNMDAwNTMwMjEzODAxWhcNMDQwNTEzMjEzODAxWjCBjDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFTATBgNVBAoTDEJFQSBXZWJMb2dpYzEZMBcGA1UEAxMQd2VibG9n
aWMuYmVhLmNvbTEeMBwGCSqGSIb3DQEJARYPc3VwcG9ydEBiZWEuY29tMFwwDQYJ
KoZIhvcNAQEBBQADSwAwSAJBALdsXEHqKHgs6zj0hU5sXMAUHzoT8kgWXmNkKHXH
79qbPh6EfdlriW9G/AbRF/pKrCQu7hhllAxREbqTuSlf2EMCAwEAATANBgkqhkiG
9w0BAQQFAANBACgmqflL5m5LNeJGpWx9aIoABCiuDcpw1fFyegsqGX7CBhffcruS
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
-----END CERTIFICATE-----

DER
    辨别编码规则 (DER) 可包含所有私钥、公钥和证书。它是大多数浏览器的缺省格式,并按 ASN1 DER 格式存储。它是无报头的 - PEM 是用文本报头包围的 DER。

PKCS#12
    公钥加密标准 #12 (PKCS#12) 可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件。

 

四、加密算法

加密算法有俩大类,第一种是不基于KEY的,另一种是不基于KEY的。

    基于KEY的,举个简单的例子,我要加密"fordesign"这么一串字符,就把每个字符都变成它的后一个字符,那么就是"gpseftjhm"了,这样的东西人家当然看不明白,接收方用相反的方法就可以得到原文。当然这只是个例子,现在应该没人用这么搞笑的加密算法了吧。

    不基于KEY,好象一直用到了计算机出现。我记得古中国军事机密都是用这种方式加密的。打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式加密的。这种算法的安全性以保持算法的保密为前提。
    这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。日本中途岛惨败好象就是密码给老米破了。设计一种算法是很麻烦的,一旦给人破了就没用了,这也忑浪费。

    我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用这个key来对明文进行加密。这样的算法即使一次被破,下次改个key,还可以继续用。key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,只要你用的算法认为你选来做key的那玩意合法就行。

    这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。也就是说应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。其实现在常用的基于KEY的加密算法在网络上都可以找到。

基于key的加密算法又包括俩类:对称加密和不对称加密。

    对称加密指的是双方使用完全相同的key, 最常见的是DES. DES3, RC4等。对称加密算法的原理很容易理解,通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。

    不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和私有密钥。 
    举个例子比较容易理解, 我们们假设通信双方分别是A、B。
    A 拥有 KEY_A1、KEY_A2, 其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。
    B 拥有 KEY_B1、KEY_B2, 其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。
    公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开。也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。


通信过程如下:

    A-------->KEY_A2------------>B
    A<--------KEY_B2<------------A
    
    这个过程叫做公共密钥交换,老外管这叫key exchange。
    之后A和B就分别用对方的公共密钥加密,用自己的私有密钥解密。
    一般公共密钥是要发布出去的,然后你通过自己的私有密钥加密明文,人家用你的公共密钥解密,如果能解开,那么说明你是加密人,这就是SSL使用的验证机制。

我如果要发给你,我就用你的公钥加密,这让只有你能用自己的私钥解密。如果我用自己的私钥加密,然后发布出去,这就不属于保密,而是属于认证,证明这条信息是我发的,而且我不能赖帐,因为私钥只有我自己知道。

常用的不对称加密一般有RSA、 DSA、 DH等。我们一般使用RSA。

 

五、数字签名

     数字签名也是不对称加密算法的一个重要应用,理解它对于理解SSL很重要的,放在这里一起介绍一下。

     签名是什么大家都很熟悉吧?证明该东西是你写的,是你发布的,你就用签名搞定。看看那些重要文件都要头头签名。数字签名就是数字化的签名了。记得公用密钥和私有密钥的特征吗?只有你一个人有你自己的私有密钥。而你的公用密钥是其他人都知道的 了。那么你在写完一封邮件之后,用自己的私有密钥加密自己的名字,接收人用你的公共密钥解开一看,哦,是你发的。这就是你的数字签名过程了。

     上面的解释是很简化的了,其实数字签名比这个复杂多了,但我们没有了解的必要,知道数字签名是这么一回事就可以了。

      还有一种我们需要知道的加密算法,其实我不觉得那是加密算法 ,应该叫哈希算法,英文是message digest, 是用来把任何长度的一串明文以一定规则变成固定长度的一串字符串。它在SSL中的作用也很重要,以后会慢慢提及的。一般使用的是MD5、SHA、base64, 不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。

     具体的加密解密过程我们不需要了解,因为SSL根本不关心。但了解加密算法的一些基本原理是必要的,否则很难理解SSL。

Quote : http://www.cnblogs.com/adforce/archive/2012/11/27/2790937.html

分享到:
评论

相关推荐

    SSL&TLS 协议详解

    SSL/TLS协议详解 SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议是互联网上广泛采用的安全协议,主要用于在网络通信中确保数据的安全性和完整性。它们主要在TCP/IP协议之上,为上层应用提供...

    IISCrypto 解决SSL/TLS协议信息泄露漏洞的工具

    **SSL/TLS协议详解** SSL/TLS是互联网上广泛使用的安全协议,负责在客户端(如浏览器)和服务器之间建立加密的通信信道,确保数据传输的隐私和完整性。TLS是在SSL基础上发展起来的,但两者在实际应用中通常一起被...

    ESP8266 MQTT SSL/TLS 阿里物联网套件 百度天工 Onenet等MQTT服务器(注意:是固件)

    ESP8266 MQTT SSL/TLS 阿里物联网套件 百度天工 Onenet等MQTT服务器固件详解 ESP8266是一款低功耗、高性能的Wi-Fi微控制器,常用于IoT(物联网)应用。在这个场景中,我们关注的是ESP8266如何通过MQTT协议安全地...

    SSL&TLS认证原理详解

    SSL/TLS(Secure Socket Layer/Transport Layer Security)协议是网络安全领域中的重要组成部分,主要用于保障互联网通信的安全性。本文将深入探讨SSL/TLS的认证原理,包括加密方式、SSL/TLS的作用以及历史发展。 ...

    计算机网络实验-SSL1

    【SSL/TLS协议详解】 SSL(Secure Sockets Layer)协议,现已被TLS(Transport Layer Security)协议取代,是网络通信中保障数据安全的重要机制。它主要用于保护应用层的数据,如HTTP(HTTPS)协议,确保用户的隐私...

    SSL+socket 详解-概念

    随着技术的发展,SSL已经经历了多个版本的迭代,并逐渐被TLS(Transport Layer Security,传输层安全协议)所取代,TLS实质上是SSL的更新版本,但人们仍然习惯使用SSL这个词。 JSSE(Java Secure Socket Extension...

    TLSSSL协议详解

    ### TLSSSL协议详解 #### 一、SSL与HTTPS的关系 许多人经常将SSL与HTTPS混淆,认为两者等同。实际上,SSL(Secure Socket Layer,安全套接层)是一种通用的安全协议,其主要职责在于保障数据传输的安全性,而不...

    计算机网络 TCP/IP 协议详解及练习题

    涉及的内容包括TCP与UDP的区别、TCP连接建立过程、IP地址分类、NAT作用、ARP协议、子网划分、TCP流量控制、ICMP协议、DHCP工作原理、DNS解析过程...虚拟专用网络(VPN)、SSL/TLS协议、QoS概念以及IPv4与IPv6的转换方法...

    EMQX开启SSL/TSL及生成证书流程

    SSL/TLS(Secure Sockets Layer/Transport Layer Security)则是用于在互联网上提供安全通信的协议,能够确保数据传输的机密性和完整性。 开启EMQX的SSL/TLS模式对于保障物联网设备之间的通信安全至关重要。以下是...

    IISCrypto _服务器SSL.TLS管理工具.zip

    《IISCrypto:服务器SSL/TLS管理工具的详解与应用》 在网络安全日益重要的今天,SSL/TLS协议作为保障网络通信安全的重要手段,其配置和管理对于任何服务器来说都至关重要。"IISCrypto _服务器SSL.TLS管理工具.zip...

    SSL and TLS Theory and Practice.pdf

    《SSL与TLS理论与实践》是一本关于安全套接层(Secure Sockets Layer, SSL)和传输层安全(Transport Layer Security, TLS)协议的专业书籍。本书第二版由Rolf Oppliger撰写,详细介绍了SSL与TLS的发展历程、技术...

    TCP/IP 协议详解三卷

    除了上述内容,这套书籍可能还会涵盖网络编址(如IPv4和IPv6)、网络安全(如SSL/TLS加密)、QoS(Quality of Service,服务质量)以及网络性能优化等相关主题。通过深入学习TCP/IP协议,读者可以理解互联网的工作...

    TCP/IP协议详解

    10. **HTTPS(安全超文本传输协议)**:HTTPS在HTTP的基础上加入了SSL/TLS协议,提供加密传输和身份验证,保护用户的隐私和数据安全。 11. **TCP滑动窗口机制**:TCP通过滑动窗口机制来控制发送方的数据速率,防止...

    Tcp/Ip协议详解配套课件

    对于网络通信的安全性,可能会讨论到SSL/TLS协议,以及加密、数字证书和握手过程。同时,可能会介绍网络抓包工具如Wireshark的使用,帮助你实际操作分析网络通信数据。 最后,了解TCP/IP协议的实际应用,比如在...

    9-2019051092-古昌权-HTTPS协议分析1

    服务器收到Client Hello后,回应Server Hello报文,选择双方都支持的最高版本的SSL/TLS协议和加密套件,同时还会发送服务器证书,证书中包含服务器的公钥、证书颁发机构信息以及服务器的身份标识。 客户端接收到...

    openssl握手过程

    ### 三、SSL/TLS握手过程详解 #### 1. 客户端Hello 客户端首先发送一个包含其支持的SSL/TLS版本、加密套件列表、随机数以及其他可选扩展字段的消息给服务器。随机数在此后的密钥交换中起到重要作用。 #### 2. ...

    MQTT+SSL资料整理.rar

    SSL(Secure Socket Layer)和其升级版TLS(Transport Layer Security)则是网络通信中广泛使用的安全协议,用于在互联网上建立加密连接,确保数据传输的安全性。当MQTT结合SSL/TLS,可以为IoT设备提供安全的数据...

    TCP/IP协议详解全3卷

    此外,卷3还可能涵盖TLS/SSL协议,用于加密网络通信,保障数据安全。 压缩包中的“TCP-IP协议详解”文件很可能是这三卷书的电子版,包含了详细的理论分析、实例解析和实战指导,对于学习和理解TCP/IP协议至关重要。...

    MIE311_Lecture06_SSL_网络安全_ssl_

    **网络安全与SSL协议详解** 在当今的互联网世界中,数据安全是至关重要的。尤其是在进行诸如网上购物、银行交易等涉及个人隐私和财务信息的操作时,确保数据在传输过程中的安全显得尤为关键。SSL(Secure Sockets ...

Global site tag (gtag.js) - Google Analytics