2023年6月27日发(作者:)
SSL协议原理简介
1 引言
近几年来,越来越多的人开始使用网上银行,同时人们也会不禁担心,在使用网上银行时个人的非常重要而且私密的数据在极其不安全的互连网上传输会不会被别人窃取呢?答案是不会的。在你通过IE浏览器访问网上银行时,有没有注意右下角的那个小黄锁?这意味着你和网上银行之间传输数据已经使用SSL协议加密了,大可放心你的数据安全问题。那什么是SSL协议呢?SSL协议是怎么工作的呢?它为什么能确保数据安全的呢?
第1页
声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
2 SSL协议原理简介
Secure Socket Layer:安全套接层协议,是由网景(Netscape)公司开发的,基于Web应用的,用于加密数据并在互联网安全传输数据的协议。它工作在TCP协议与应用层协议之间,功能就是将HTTP,FTP等应用层数据进行加密然后依托可靠的TCP协议在互联网上传输到目的地。其中最典型的应用就是https协议。SSL协议目前最新的版本改名TLS1.0(Transport Layer Secure)。
Application
SSL(TLS)
TCP
2.1 从数据安全的三个方面入手理解SSL协议
让我们先仔细想想数据安全应该包含哪些方面。首先,数据发送方和接收方要确认彼此身份,而且要想办法确保各自的身份不会被冒充,这就是数据安全的第一方面-确保数据源和目的的正确性;其次,就是数据一定要进行加密,而且要保证即使数据被截获也无法破解,这就是数据安全的第二方面-数据加密确保数据不会被非法解密;最后,就是要确保收到的数据完整并且与数据源发出来原是数据一致,这就是数据安全第三方面-确保数据不会被恶意篡改。综上所述,数据安全最基本的三个方面就出来了,即确保数据源和目的的正确性;加密数据确保数据不会被非法解密;以及验证数据确保数据没有被篡改。接下来我们就来看看SSL协议的工作原理,以及它是如何实现数据安全这三个方面的。
2.2 SSL协议吸取了哪些成熟的安全技术
SSL协议之所以在数据安全领域得到广大运用,并被大家所认可,就是因为它吸取了很多当前先进的并且成熟的安全技术,下面先来简单介绍一下。
对称加密技术:
加密和解密使用同一个密钥算法。DES、RC4等都都是对称加密算法。对称加密技术的优点是加解密速度快,适用于大数据流的加密,但安全性稍差。
第2页
声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
非对称加密技术:
加密和解密使用不同的密钥算法,如RSA公钥加密。缺点是加解密速度慢,优点是安全性级别告,所以适用于小数据流的加密。
RSA公钥加密技术:
非对称加密技术的一种,公钥加密系统包括一对密钥即公钥和私钥,公钥向外公开,私钥则需要隐秘起来。用公钥加密的数据只能由私钥解密,反之亦然。
数字证书和CA:
数字证书由公钥加密技术衍生而来,它是把公钥和使用者的名称、地址等信息捆绑在一起进行身份验证。而CA(Certificate Authority)则是数字证书的管理机构。
PKI:
Public Key Infrastructure,翻译过来就是公钥基础设施。它是一种安全服务体系,前面提到的公钥加密系统,数字证书和CA都是其组成部分。
2.3 SSL协议如何确保数据源和目的的正确性
假设S是用SSL协议提供服务的Server,C是客户端Client。首先,S要想办法证明自己的身份并确保不会被别人冒充,于是S就向CA申请了自己的数字证书,一个公钥和一个私钥。通常公钥是和数字证书绑在一起的,而私钥是另外一个文件。公钥和证书可以对外公布,而私钥绝对不会。当C请求与S通讯时,S就会将自己的证书和公钥发送给C确认。随即,C就会产生一个随机信息发回给S,S收到这个随机信息后就会用D-H算法生成一个摘要,用自己私钥加密后发回给C,C收到摘要后用先前S的公钥解密,将解密得到信息和自己之前产生的随机信息比较异同,这样就认证S的真实身份,在这个过程中,只要S确保自己私钥不会被别人窃取就能保证不会被别人冒充。而这个过程就是数据安全领域一个很著名的技术—数字签名。在一般的应用中,确认S的身份已经足够了,不过在SSL协议的RFC中还描述了,在安全等级需要较高的情况下,S也会用同样的方法来验证C的身份,这样就可以保证数据源和目的正确可靠。
2.4 SSL协议如何加密数据并确保数据不会被非法解密
在C认证了S的身份后,C就会产生一个对称密钥并用S的公钥加密后发送给S,S 第3页
声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
得到后用自己的私钥解密从而知道了这个对称密钥。之后C和S才会用这个对称密钥加密数据进行传输。由于第三者不知道S的私钥也就无法得到正确的对称密钥,所以也就不能正确解密数据或冒充S的身份加密数据与C进行通讯。
2.5 SSL协议如何验证数据确保数据没有被篡改
在S和C进行数据交互的过程中,SSL协议会根据对称密钥和双方所传输数据计算出一个MAC(Message Authentication Code)值,用于对收到的数据进行校验。而MAC值的计算用到了MD5,SHA等算法,并且MAC的计算还涉及到了对称密钥,而这个密钥在私钥的保护下很难被第三方解获,冒充者想要对数据进行篡改又不被通讯双方察觉几乎是不可能的。
上面所说的整个过程中任何一方在任何一个环节出现问题SSL协议都会中断连接。从而非常出色的完成了保护数据安全的三个基本任务。
3 SSL协议数据交互过程
在了解了SSL协议确保数据安全的原理后,我们再来看看SSL协议的通讯流程是怎样的。
S和C第一次通讯时,先进行TCP三次握手建立连接,之后是SSL协议四次握手主要任务是进行数字签名认证和密钥协商,然后就是密文数据交互,数据交互结束则是TCP四次握手结束连结,整个过程大致如下:
C ---------------------------------------------------------------> S
TCP SYN
C <--------------------------------------------------------------- S
TCP ACK SYN
C ---------------------------------------------------------------> S
TCP ACK
C ---------------------------------------------------------------> S
Client Hello: C告诉S我要和你通讯以及我支持的所有加密算法和验证算法的组合。
报文大致内容:
第4页
声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
SSL - Secure Sockets Layer
Length: 76
Message Type: 1 Client hello
Version: 3.1
Cipher Spec Length: 51
Session ID Length: 0
Challenge Length: 16
Cipher Specs
Cipher Spec: 0x000004 SSL_RSA_WITH_RC4_128_MD5
Cipher Spec: 0x000005 SSL_RSA_WITH_RC4_128_SHA
Cipher Spec: 0x00000A SSL_RSA_WITH_3DES_EDE_CBC_SHA
Cipher Spec: 0x010080 SSL2_RC4_128_WITH_MD5
Cipher Spec: 0x0700C0 SSL2_DES_192_EDE3_CBC_WITH_MD5
Cipher Spec: 0x030080 SSL2_RC2_CBC_128_CBC_WITH_MD5
Cipher Spec: 0x000009 SSL_RSA_WITH_DES_CBC_SHA
Cipher Spec: 0x060040 SSL2_DES_64_CBC_WITH_MD5
Cipher Spec: 0x000064 TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
Cipher Spec: 0x000062 TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
Cipher Spec: 0x000003 SSL_RSA_EXPORT_WITH_RC4_40_MD5
Cipher Spec: 0x000006 SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
Cipher Spec: 0x020080 SSL2_RC4_128_EXPORT40_WITH_MD5
Cipher Spec: 0x040080 SSL2_RC2_CBC_128_CBC_EXPORT40_WITH_MD5
Cipher Spec: 0x000013 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Cipher Spec: 0x000012 SSL_DHE_DSS_WITH_DES_CBC_SHA
Cipher Spec: 0x000063 TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA
Challenge:
.%.~l E4 59 48 40 38 8A 1D 1E 25 7A DF 67 6A A7 7E 6C
C <--------------------------------------------------------------- S
Server Hello + Serve Hello Done: S接受连接并选择其中一种加密算法与验证算法的组合,然后将自己的证书和公钥发给C验证。同时会给C发送一个Session ID用于优化下次连接使用。Hello完成
报文大致内容:
SSL - Secure Sockets Layer
Content Type: 22 Handshake
Version: 3.1 TLS 1.0
Length: 74
Handshake
Handshake Type: 2 Server hello
Length: 0x000046 (70)
Server Hello
第5页
声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
Version: 3.1
Random Time: 0x44509C19 Thu Apr 27 18:25:29 2006
RandomBytes:
0x9B8FFDA8D815DD9E11363C6321A5F045F3D79F493FC223D2C73A008D
Session ID Length: 32
Session ID Data:
.E.x..*~6....~.. FE 45 9A 78 80 F1 2A 7E 36 C4 0D 14 E4 7E 8F 83
".FR. 63 66 44 6B 79 44 DF DB 10 1A 80 22 C8 46 52 EC
Cipher Suite: 4 SSL_RSA_WITH_RC4_128_MD5
Compression Method: 0
Content Type: 22 Handshake
Version: 3.1 TLS 1.0
Length: 1221
Handshake
Handshake Type: 11 Certificate
Length: 0x0004C1 (1217)
…(证书信息内容)
Subject Public Key Info
Algorithm:
OID: {1.2.840.113549.1.1.1}
Description: iso
Public Key:
.0........T.7%.[ 00 30 81 89 02 81 81 00 EA E6 54 04 37 25 0E 5B
..1.@..F. 04 91 67 68 C3 64 6B 4E 46 31 D7 40 AA E8 46 FA
04..>+..+u 30 34 DE 92 3E 2B BD FB 2B 74 4E 39 E9 15 74 75
..t...UxZb..{..h 08 07 74 B6 AB E3 55 78 5A 62 E1 81 7B 88 B1 68
....b.....,Y.#.k 2E C6 C9 E7 62 98 C7 EB 83 B3 2C 59 0E 23 0D 6B
..&..7.n.. F5 00 79 CE 58 07 AC 0C 26 D4 00 37 1B 6E AC DE
=.H0...Z...i?+@. 3D 8D 48 30 ED A8 DE 5A 9D 06 86 69 3F 2B 40 8C
..}..m.......... CA B6 7D 7F D8 6D C9 EB E0 92 B6 B9 EE 1C 18 DD
.[...V....... EF 5B E0 8F 82 56 AD E9 02 03 01 00 01
Content Type: 22 Handshake
Version: 3.1 TLS 1.0
Length: 4
Handshake
Handshake Type: 14 Server hello done
Server Hello Done
C ---------------------------------------------------------------> S
Client Key Exchange + Finished: C确认S的身份后,产生一个对称密钥然后用S的公钥加密发给S确认,之告诉S将要用密文通讯同时结束握手。
报文具体内容:
第6页
声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
SSL - Secure Sockets Layer
Version: 3.1 TLS 1.0
Length: 134
Handshake
Handshake Type: 16 Client key exhange
Length: 0x000082 (130)
Client Key Exchange
Client Key Data:
..J8....*....... 00 80 4A 38 14 EA 11 A7 2A 00 B0 DB A9 CA 0A 16
.D.."..A...m.M.z F0 44 0C 0C 22 FC C5 41 C3 1B E2 6D 09 4D A1 7A
.^......Q 2E 5E ED BC B6 C0 8F CA 53 29 72 F7 0A 1C 04 51
../.....Y$zk.;.. FE CB 2F 99 99 CD A9 83 59 24 7A 6B D0 3B A8 B5
Content Type: 22 Handshake
Ov.... .......5..1..... C3 08 B4 0E A2 B6 9E 35 C4 FB 31 BB 9E E4 C4 05 ..Gn..N.h. BC D4 38 21 66 1C EB 05 47 6E 8E F6 4E E1 68 9F ...)....w?...... AE ED 9F 29 BA A8 04 E8 77 3F AC 8D C5 AF B3 09 .? A3 3F Version: 3.1 TLS 1.0 Length: 1 Change Cipher Spec Change Cipher Spec Message: . 01 Version: 3.1 TLS 1.0 Length: 32 Handshake Handshake Type: 20 Finished Finished Encrypted Data: ........Z FF 9A 15 C9 BA 02 8B C9 62 0C 50 16 8F 88 03 5A ..7.P.#..H..|.-* BD A4 37 8B 50 1F 23 BC 9F 48 EB EB 7C 81 2D 2A Content Type: 20 Change Cipher Spec Content Type: 22 Handshake C <--------------------------------------------------------------- S Finished: S得到C的对称密钥,用私钥解密,然后确认将要用密文通讯,结束握手。 报文具体内容: SSL - Secure Sockets Layer Version: 3.1 TLS 1.0 Length: 1 Change Cipher Spec Change Cipher Spec Message: Content Type: 20 Change Cipher Spec 第7页 声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究 . 01 Version: 3.1 TLS 1.0 Length: 32 Handshake Handshake Type: 20 Finished Finished Encrypted Data: ..&6.........w,g 8F 09 26 36 A4 7F 05 16 94 EC 81 89 A3 77 2C 67 *b....pa....b|.. 2A 62 95 D7 F1 C3 70 61 A3 D9 FE 0A 62 7C F9 A6 Content Type: 22 Handshake C <--------------------------------------------------------------->S Application Data: S和C进行密文数据通讯。 报文具体内容: SSL - Secure Sockets Layer Content Type: 23 Application Data Version: 3.1 TLS 1.0 Length: 325 Application Data Application Data: %..-....t.../..x 25 D0 0A 2D C7 08 B7 D9 74 D6 C9 A9 2F 9A F2 78 j...7..f......1" 6A D8 DE 85 37 BB A8 66 02 9F C0 C2 0C F5 31 22 p...C."..$;..I.. 70 C8 D3 13 43 9C 22 C2 A2 24 3B 92 C7 49 A3 00 .0....2.!..`*])S E8 30 CF FE B2 D5 32 15 21 CF E8 60 2A 5D 29 53 ........l.'..O%6 0D C5 FB EF 91 D3 F6 EF 6C 85 27 F7 DB 4F 25 36 ....-_..# B4 E5 BC 16 2D 31 79 39 F8 A1 E9 E5 5F D9 B1 23 .........U~.LN.. B1 F3 FF 07 F7 C1 A1 B0 D7 55 7E 94 4C 4E FB A2 kQ...]...o...1. 6B 51 95 0A FF 5D 5C A8 03 CD 6F AB E9 A4 31 07 .a.?....2=...H.. 91 61 C7 3F FA DC A3 02 32 3D 1A 86 9F 48 CF D4 ........S....... 9E D6 94 A0 0C 9E AA 8F 53 9F 07 9D E2 F3 8B 1C ;=s...."B~.....J 3B 3D 73 B1 F2 9D A9 22 42 7E 1A D7 D1 06 D7 4A ..&^..#R.. ..rg.?...i!.qNX. 89 BD 72 67 10 3F D5 0D F1 69 21 0C 71 4E 58 DF ..^.g0.&bS..D... AE 0A 5E 04 67 30 C2 26 62 53 E0 B8 44 0A 84 C3 ...&.{...m...?.e 18 84 F3 26 EB 7B F0 04 A4 6D AC BC F1 3F 0D 65 .Is...@..9}!.... B0 49 73 A2 90 8A 40 F3 A3 39 7D 21 D4 2E D8 98 ....t.....I..$.. 12 A3 FA B1 74 CE 18 C1 01 BB 49 19 E1 24 0A E8 ..^.lJ....._._.. 93 A3 5E 04 6C 4A E0 B6 D5 F3 B0 5F 19 5F 19 82 .~.V..M.+ 91 38 71 84 69 C1 09 F2 7E ED 56 07 C7 4D F7 2B $....~Y. 53 7A AF 4D D3 9E BB 81 24 C3 9E 13 AE 7E 59 C8 t.... 74 FD A5 99 C7 C ---------------------------------------------------------------> S TCP FIN 第8页 声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究 C <--------------------------------------------------------------- S TCP ACK C <--------------------------------------------------------------- S TCP FIN C ---------------------------------------------------------------> S TCP ACK 以上是C和S第一次进行SSL协议通讯的大致过程,而接下来的通讯如果还像第一次通讯一样进行完整协商过程势必会降低效率而且没有必要。所以,在第一次通讯中建立了session ID后,C和S都会将这个session ID缓存起来并保存一段时间,如果下一次通讯时Session ID缓存没有超时,C会在Client Hello中告诉S这个Session ID值,而Session ID是由一个随机数唯一标明的,这是为了Session ID不会被轻易的伪造。当S发现自己也有相同的Session ID时,则在回应的Server Hello中确认加密算法后随即结束握手,之后C确认结束握手后就可以进行Application Data的通讯了。实际上这个过程省略了数字签名和密钥协商过程,是一个简化了的SSL三次握手过程: C ---------------------------------------------------------------> S Client Hello:C告诉S我要和你继续通讯,我支持的所有加密算法和验证算法组合,以及我缓存的Session ID。 报文具体内容: SSL - Secure Sockets Layer Content Type: 22 Handshake Version: 3.0 SSL 3.0 Length: 97 Handshake Handshake Type: 1 Client hello Length: 0x00005D (93) Client Hello Version: 3.0 Random Time: 0x43BC7F7C Thu Jan 05 10:07:56 2006 RandomBytes: 0x884C2B5DB068F9EDB5A655355AA4BBCCDBC57844BA9B6136C488BD59 Session ID Length: 32 Session ID: ]........<.[5... 5D 80 80 08 B1 D9 CE 07 83 3C B0 5B 35 C2 82 85 c..MH....?..|.d. 63 DE C7 4D 48 B9 11 81 2E 3F CD 05 7C A1 64 AC 第9页 声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究 Cipher Spec Length: 22 Cipher Specs Cipher Spec: 4 SSL_RSA_WITH_RC4_128_MD5 Cipher Spec: 5 SSL_RSA_WITH_RC4_128_SHA Cipher Spec: 10 SSL_RSA_WITH_3DES_EDE_CBC_SHA Cipher Spec: 9 SSL_RSA_WITH_DES_CBC_SHA Cipher Spec: 100 TLS_RSA_EXPORT1024_WITH_RC4_56_SHA Cipher Spec: 98 TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA Cipher Spec: 3 SSL_RSA_EXPORT_WITH_RC4_40_MD5 Cipher Spec: 6 SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 Cipher Spec: 19 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA Cipher Spec: 18 SSL_DHE_DSS_WITH_DES_CBC_SHA Cipher Spec: 99 TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA C <--------------------------------------------------------------- S Server Hello + Finished: 同意继续通讯并且确认Session ID存在,选择和上一次一样的加密算法和验证算法组合,之后告诉C将要用密文通讯,结束握手。 报文具体内容: SSL - Secure Sockets Layer Content Type: 22 Handshake Version: 3.0 SSL 3.0 Length: 74 Handshake Handshake Type: 2 Server hello Length: 0x000046 (70) Server Hello Version: 3.0 Random Time: 0x43BCF1A6 Thu Jan 05 18:15:02 2006 RandomBytes: 0xA8F1A5FA6AEDA6708F6DA9A03179DC3D8CCC336F1C3400CF6C95DE91 Session ID Length: 32 Session ID Data: ]........<.[5... 5D 80 80 08 B1 D9 CE 07 83 3C B0 5B 35 C2 82 85 c..MH....?..|.d. 63 DE C7 4D 48 B9 11 81 2E 3F CD 05 7C A1 64 AC Cipher Suite: 4 SSL_RSA_WITH_RC4_128_MD5 Compression Method: 0 Content Type: 20 Change Cipher Spec Version: 3.0 SSL 3.0 Length: 1 Change Cipher Spec Change Cipher Spec Message: . 01 第10页 声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究 Content Type: 22 Handshake Version: 3.0 SSL 3.0 Length: 56 Handshake Handshake Type: 20 Finished Finished Encrypted Data: .."..#...D...=J 81 0D 5C 22 CE 07 23 E9 09 E6 44 E2 FC EF 3D 4A .z6_.._*z...d... 81 7A 36 5F 82 C1 5F 2A 7A 1A 84 F3 64 E9 09 90 ....l. 8F CB E8 D8 63 73 6D 52 6D C6 C0 BD F5 16 6C 0E ./.. C2 35 03 6B 6B 2F BC 81 C ---------------------------------------------------------------> S Finished: C确认将要用密文通讯结束握手。 报文具体内容: SSL - Secure Sockets Layer Version: 3.0 SSL 3.0 Length: 1 Change Cipher Spec Change Cipher Spec Message: . 01 Version: 3.0 SSL 3.0 Length: 56 Handshake Handshake Type: 20 Finished Finished Encrypted Data: .;...m..@.....'j F5 3B 1A 88 82 6D 06 D5 40 90 82 C4 0A E2 27 6A .Lm..tf.). CD 4C 6D F6 B1 74 66 E9 34 C9 45 19 FD C2 29 F2 .A............u. BB 41 0D CD C0 80 F3 11 ED CF AF 94 CF 99 75 90 Content Type: 20 Change Cipher Spec Content Type: 22 Handshake 2,...H.. 32 2C 1D 86 18 48 AA CD C <--------------------------------------------------------------->S Application Data: S和C进行密文数据通讯。 第11页 声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究 4 结束语 正是由于SSL协议本身具有如此出色的安全特性,它在信息安全领域发挥的作用越来越大。近2年内,许多国内的网络安全厂商更是研发出来了基于SSL协议的新一代VPN产品即SSL VPN。由于其具有使用和维护成本低,功能简单友好,安全级别更高等优点,越来越被用户所认可,市场前景十分看好。 作者:何晨 第12页 声明:文档所包含文字和图片版权均属作者所有,任何单位或个人未经作者同意不得擅自出版或发行,违者必究
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687804264a46492.html
评论列表(0条)