




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSL通信过程分析、SSL建立握手连接目的身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现。client与server交换sessionkey,用于连接后数据的传输加密和hash校验。二、简单的SSL握手连接过程(仅Server端交换证书给client):client发送ClientHello,指定版本,随机数(RN),所有支持的密码套件(CipherSuites)server回应ServerHello,指定版本,RN,选择CipherSuites,会话ID(SessionID)server发送Certificate4.Server发送ServerHelloDoneClient发送ClientKeyExchange,用于与server交换sessionkeyClient发送ChangeCipherSpec,指示Server从现在开始发送的消息都是加密过的Client发送Finishd,包含了前面所有握手消息的hash,可以让server验证握手过程是否被第三方篡改8.Server发送ChangeCipherSpec,指示Client从现在开始发送的消息都是加密过的9.Server发送Finishd,包含了前面所有握手消息的hash,可以让client验证握手过程是否被第三方篡改,并且证明自己是Certificate密钥的拥有者,即证明自己的身份三、抓包实际分析连接过程下面从抓包数据来具体分析这一过程并说明各部分数据的作用以及如实现前面列出的握手的目标,当然了,最重要的还是说明为何这一过程是安全可靠的,第三方无法截获,篡改或者假冒。1.client发送ClientHelloT_SF.SAMFTH24128MD5f0x00041T_S_F.S,V_?/ITH_=.匚■!_128_EHA〔0?<□005)T_3_F.3A_fiTTll_3DE3_EDE_CDC_3IIA:;OxCOOa)T_S_F.5A_ft/ITH_3ES_CHALUXUU09JT_S_F.SA_Z>:PORT1024_WITH_R'T_SF.SAMFTH24128MD5f0x00041T_S_F.S,V_?/ITH_=.匚■!_128_EHA〔0?<□005)T_3_F.3A_fiTTll_3DE3_EDE_CDC_3IIA:;OxCOOa)T_S_F.5A_ft/ITH_3ES_CHALUXUU09JT_S_F.SA_Z>:PORT1024_WITH_R':4_16_SHAi'0<C064)T.^_F^A_-->:pnpTl0;4_WTTH_rir^_rRr_^FnCjvOOA?)T_3_F.3A_E>-PORT_^ITIl_^C4_45Q>0003)I_b_kbA_->FOKI_^lIH_<(_^_LziL_iU_M」tl;U<LUUOJT_S_[iHE_35S_WITH_3DE5_EDE_CBC_SHO.(OxXl?)T.U_「iHF_ruq_WTTH_nFJ-RJWHdJT_S_DIIE_3ZS_匚:VrO「.T二OIW—VQTIl_D匚二匚C_SP(0:<0J(z3jSuite:ELIlt£:suite:suite:suite:suite:bUlHE:Suite:suite:UlUOCUunoCUUL^ULd0C3urrOC40Cl4,.OC50C338OCGOla00OC70co037-esIfaG63cl-It1871o3p--daddGGp-4□D7-r-oo8o1047.-.Uo24□DQ-4o.-.'JrI-obo7343q二—1_LJc「XIIti-c126f3o1522o3o9rI-o1Qf_dE-.z-7GGo7-d3aEooofs3aD2o-d10_.o565_dodfbo4G5-3srJGod4—D_.o44Drd2DFl-_!..u-h-8810330oo6Da3orfb1ed_M-o3-d_yoe8ood_df155o1TG7'4aaGGc45D_.o7-a□_■_H-d1od.yo6r]1Ji13a.-oocI-85o-yooo(&■7-Ac・N・$nM.;rmrdFhL・Jd+TransirrissionCantrcilPrDtocol,SrcPcirt:hpstgmgr(26Q0),DstPort:https(443),Ssq:1,AcU::1-5ecurgSockEtLayer-ilw丄wecordLayEr:HindshakEHro二ciccil:_11enzMel1ocontentType:Handshake〔22)nn:Tlq1.C.rOr-0^01')Lcncth:65-Haicsha<eprotzdco':cleni:re'13Handsnake-yoe:clientHmllo〔1)pngr-i:fl/crs-iDn:TLS1.0〔OxtjHOl)<driduingnt_un1x_tirre:Jul2,20L015:04:5^.00^000000rAn-innhytY:越心加昭开酊匚"和时吋匸加春了十匚"g口刑甘「冇…ScssiDnIDL2rgth:0Ziplif5litbLeiijlli:22zlphe-"SLi^es(.-1suites;CJpier匚」pnercJpher匸」piercJpierf~-pqprCJpnerLpnerCJpier「na广cJpner.Lrnpr-iiiuii^ltlfiuJiL已iiglJ:1二匚mpresslon^1EtholsclrriEthod^rnmnmMPT-inrJ:nul1[0、每一条消息都会包含有ContentType,Version,HandshakeType等信息。ContentType指示SSL通信处于哪个阶段,是握手(Handshake),开始加密传输(ChangeCipherSpec)还是正常通信(Application)等,见下表HexDecType0x1420ChangeCipherSpec0x1521Alert0x1622Handshake0x1723ApplicationVersion是TLS的版本,见下表MajorVersionMinorVersionVersionType30SSLv3
31TLS1.032TLS1.133TLS1.2HandshakeType是在handshanke阶段中的具体哪一步,见下表CodeDescription0HelloRequest1ClientHello2ServerHello11Certificate12ServerKeyExchange13CertificateRequest14ServerHelloDone15CertificateVerify16ClientKeyExchange20FinishedClientHello附带的数据随机数据RN,会在生成sessionkey时使用,Ciphersuite列出了client支持的所有加密算法组合,可以看出每一组包含3种算法,一个是非对称算法,如RSA,一个是对称算法如DES,3DES,RC4等,一个是Hash算法,如MD5,SHA等,server会从这些算法组合中选取一组,作为本次SSL连接中使用。2・server回应ServerHello3TransmissionCantrolPrdtocol?SrcPort:https(443)?DstPart:hpstgmgr(2600^)tSeq:丄,Ack:713securesocketLayer曰TLEvlRecordLayprHandshakeProtoco-!:MuitipieHandshakeContent丁”卩已:Handshak已(2£]Version:TLSlB0t0x0301?iLength:1261HHandshakeProtocol:EmrvErheIIollcndshakcType:S-2rvcr112'Io(2)Lenqth:70vcri:Jon:T_51.C〔0x02Cl)-R;ndomgnt_Lin-ix_fine:JliI1,101015:05:CO.OOOOCO^OOrandon_b/ies:Myj(_ubu(_z-i^bLey丄titsz:卜卜丄丄llj.-...uuuu'nriIn1pngrh:^7ifcii'uriJU;A2_1ujuOF844-L<L?L'3UI-t5-rooi'45bE9J斗53卜.工1了-£丄43...ripqpr^i.irp:-i^_F^n_^TTH_pr4_|;Rjir^(OyOCOJ;CLiiurtiL.iu1Me'.Iu」;1iul1(0)+hanr=;-irkpFr-iTnrnl:Cpr-ificatp1-llanesickeFrjtocol:ServerIlei1匚DoneDDDDODDDDDD0304050607黑oaobocod62bo一2s3.5o9100013906oo13_d3oo9o■o5of_y
II」II:J4!■:-■o97-■o■o■93011_y801CJad12if4In■33C19_y-t-lu1_rOLobr.lLLDDDDODDDDDD0304050607黑oaobocod62bo一2s3.5o9100013906oo13_d3oo9o■o5of_y
II」II:J4!■:-■o97-■o■o■93011_y801CJad12if4In■33C19_y-t-lu1_rOLobr.lLL02O274dcc979829o34_yo0366沁90b7d3bbod4fbGc6dc]46dG6_y174JItl-J-1■9■■U.»■■■■«)・,・・"・・0・■"対・H・■■aaa■LjIL]■0■■■■・(&・・・,d・ornl.Iak-3*■■■q)—1■■■■cl.y64..1■■32257co7A-_u65b5fp-p-这里多了个sessionid,如果SSL连接断开,再次连接时,可以使用该属性重新建立连接,在双方都有缓存的情况下可以省略握手的步骤。server端也会生成随机的RN,用于生成sessionkey使用。server会从client发送的Ciphersuite列表中跳出一个,这里挑选的是RSA+RC4+MD5这次server共发送的3个handshake消息:Serverhello,Certificate和ServerHelloDone,共用一个ContentType:Handshake3・server发送Certificate
-secu2socketLayer-TLSvlReccirciLayer:HancishmkEProtocol:MultipleHandshakeMessagescontentType:Handshake(22)version:TLS1.0COxO3Ol)Length:1261+HandshakeProtocol:del1□HandshakeProtocol:cmrtif1cmtmHandshakeType:tificazetil)Length:1179timrtif1catesLength:1176-certif1cates(1176bytes)cmrtificateLength:1173-certificate(1d-at-comm3nName=EPEKW-Q1100085)-signedcecatEvtliluli:vB〔2)serialNumber:0x4ZL了29亡了000000000009signaturm(shawlthRSAEncryptron)Algorithmid:1.2.840.1135(shawlthRSAEncryption)issuer:rdnSequence(0)+rdnsequence:5items(1d-at-commonName=PYY-wi-2K3,cc=1s,dc=ad,dc=1gt,dc=com)val1dity+notBefcirm:utcTimeCO)+notAfter:utcTime(0)subject:rdnsequenceCO)subjectPublicKeylnf3+algorrthm(rsaEnc-'ypfion)Padding:0-+++++-+++++++7Cid-ce-<eyUsage)Cid-smime-capabiTitles)Cid-ce-subjectKeyldentif1mr)Cid-ce-extKeyusage)Cid-ce-iuthorityKeyldenfifimr)Cid-ce-:RLDistributionPoints)Cid-pe-iuthoritylnfoAccessSyntax)ExtensionExtensionExtensionExtensionExtensionExtensionExtension-algor'ithmiclEnt'if'iErCihawithRSAEncrypt^cin)Algorithmid:1.2.840.1135(shawithRSAEncryption)Padding:0encryptmck1748664F0631FB15B4A5DA4E6D51A735B41671FA973F1F6F...+HandshakeProtocol:del1□Done015080~曲前000400BOpIMiE—軽mMacf…01server的证书信息,只包含publickey,server将该publickey对应的privatekey保存好,用于证明server是该证书的实际拥有者,那么如何验证呢?原理很简单:client随机生成一串数,用server这里的publickey加密(显然是RSA算法),发给server,server用privatekey解密后返回给client,client与原文比较,如果一致,则说明server拥有privatekey,也就说明与client通信的正是证书的拥有者,因为publickey加密的数据,只有privatekey才能解密,目前的技术还没发破解。利用这个原理,也能实现sessionkey的交换,加密前的那串随机数就可用作sessionkey,因为除了client和server,没有第三方能获得该数据了。原理很简单,实际使用时会复杂很多,数据经过多次hash,伪随机等的运算,前面提到的client和server端得RN都会参与计算。4・Server发送ServerHelloDoneTransmi551an匚oritrolProtoco"l,SrcPort:https(443),DsTPort:hpstgmgr〔260COsecure5ocketLayerTL5V1RecordLayer:HandshakeProtoco"I:MultipleHandshakeMessages匚ontentType;Handshake(22)version:tls1.0COxOSOl^Length:1251HandshakeProtocol:ServerHe!1oHandshakeProt口col:CertiFicateHandshakeProtocol:ServerHe!1oDoneHandshakeType:serverHal1oDone〔14)Lanqth:004aO04bo04cO04do04eO04f00500051004aO04bo04cO04do04eO04f0050005100520_y_dQ41BOBb4p-dc42c_T-3ff9c7cd@a_y2s_yd_do61Ifb4fb7557s59Q3c5b6o2oEd5bf4Gd716bb62d30J6Odsf584Ea_y7as46bb9d46efdc-T2-0542533s3cbo66bfl2bo8bd42fo8o5ooooAuoe&日984-5crT2e71o7?■4?3Id28bb6od93s6o6b_y4d3E_d4dQ47bFd445c5b3b4224-8了q-h-h-drr_d34o2dio3ds93dsbIdc0006匚26b4111a435b眄叮o3f1960c9rTo79767feo8cq■工・・?・・■f■■O■■■・・・F・;J・h]..A;.芷p…IM....E..咒门.m[c…“・・・DF1・"a..S..yI・■■洱・・・・:・久EA・|..m...k.B5・Client发送ClientKeyExchange-securesocketLayer-tlsvIRecordLayer:HandshakeProtocol:cllentKey匚xchanqecontentType:Handshake〔22)version:TL51.0(0工0阮1)Length:134HandshakePr口t口col:匚lientKeyExchangeHandshakeType:c"lientKey匚xchange(16^)Length:130十TLSwlRecordLayer:changecipherspecProtocol:changecipherspec■+TLSwlRecordLayer:HandshakeProtocol:EncryptedHandshakeMessage000000100020003000400050Q06Q007000300090OOaOOObOOOCQOOdOOOeOoodb
ooofoQ-61964〔已已QPH匚7964.eddd4o207p-31693bo4644-^1473070Te85Bf4fQ3fcll7f314s1Q.-o_yop-o6斗0346Qlfb日015Q-1-7doe28&000000100020003000400050Q06Q007000300090OOaOOObOOOCQOOdOOOeOoodb
ooofoQ-61964〔已已QPH匚7964.eddd4o207p-31693bo4644-^1473070Te85Bf4fQ3fcll7f314s1Q.-o_yop-o6斗0346Qlfb日015Q-1-7doe28&d_y45Ob9Ob005_y1o3334_y5ell辽C8ofA
o7d5141
_LJ・_-LI-oc3b6500daffo7od
oar_J_d4o50ooafc@・7-c■N■■r-■p-f?■--匚匚u■T“・7-4If114f6o1b127e6_T53_十55714
elf7cf-d4
ds9f2ld719_oa
u751_y
clb6
Qad62E
ld4OLeo99oca。巧1o3c25db
_y42-d42O71dd4・0・...a.9or・WI!1.7a.gmv!..RG©-..Y&F匚-ni&..・・・rL「・■■I—・■■■TVK...F.tLXg..4H.Q..V.V+■■11.■h・・--M?:::client拿到server的certificate后,就可以开始利用certificate里的publickey进行sessionkey的交换了。从图中可以看出,client发送的是130字节的字节流,显然是加过密的。client随机生成48字节的Pre-mastersecret,padding后用publickey加密就得到这130字节的数据发送给server,server解密也能得到Pre-mastersecret。双方使
用pre-mastersecret,"mastersecret"常量字节流,前期交换的server端RN和client的RN作为参数,使用一个伪随机函数PRF,其实就是hash之后再hash,最后得到48字节的mastersecret。mastersecret再与"keyexpansion"常量,双方RN经过伪随机函数运算得到key_block,PRF伪随机函数可以可以仿佛循环输出数据,因此我们想得到多少字节都可以,就如Random伪随机函数,给它一个种子,后续用hash计算能得到无数个随机数,如果每次种子相同,得到的序列是一样的,但是这里的输入时48字节的mastersecret,2个28字节的RN和一个字符串常量,碰撞的可能性是很小的。得到keyblock后,算法,就从中取出sessionkey,IV(对称算法中使用的初始化向量)等。client和server使用的sessionkey是不一样的,但只要双方都知道对方使用的是什么就行了。这里会取出4个:client/server加密正文的key,client/server计算handshake数据hash的key。6・Client发送ChangeCipherSpec-SecureSocketLayer+TLSvlRecordLayer:HandshakeProtocol:匚1彳已门1KeyEx匚hangetlsvIRecordLayer:changecipherspecProrocol:changecipherspec匚onrenrTyp已:changeclpherspec〔20)Version:TLS1.0(0x0301)Length:1changecipherspecMessage+TLSvlRecordLayer:HandshakePrQtQGQl:Encrypt已日HandshakeMessageclient指示Server从现在开始发送的消息都是加密过的。00000010002000300040005000600070QQSQ0090OOaOOObOOOcOOQdQOOeOOodbo961-96463dOOQf8dQ3c7900000010002000300040005000600070QQSQ0090OOaOOObOOOcOOQdQOOeOOodbo961-96463dOOQf8dQ3c794274p-dd2Q7'p-3165KI7」d4Q-y--..I-_Qo4・l:-l・44nss_d54_r斗7-3-n-7-QHp-4oo3p-858f4_tfflIL7-_t8o4p-19o-yop-n5zsLo64o346@BoL240of591odQe209245bal26f3bl2766f62p_2o3Q6^r5s^rs21-1-d451416557464且223585QO@1-r7434o65ofsQa6b7o6e36boalo72bo4bbf725ao2a42_a42_y7234_u5scO71dd54bood1Qd6匚5_y7sb6c03200匚4b56c9foS86o2_y2bsb542Oo6old71_y5o且bef尸bo2M6LJb匚1do3c3a_ylblf4_y45f25ddafs8匚fa44o1ocafo7sbde_yf7cboslC3bo66o675sblo9£650CO267S48Oe9..4...Dk・・・a・9orl.WI!1.7.c....va.!・.PG©..Y&FE.ni&..N:..c.■■■■■TE-.f!P.7■■・rLr・-f.L....TW...Y.@F・tLXg・・4H.Q..Y.J..■..1J.■■■.■.wb.ls...+U・■人.E.7・Client发送Finished
-securesocketLayer+tlsvIRecordLayer:HandshakeProtocol:clientKeyExchange+TLSvlRecordLayer:匚hangs匚ipherSpe匚Prot口qqI:匚hange匚IpherSpecTLSvlRecordLayer:HandshakeProtocol:EncryptedHandshakeMessagecontentType:Handshake〔22)vereion:TL51.0〔0艾OEOl)Length:32HandshakeProtocol:EncryptHandshakeMessage.$.7(.■"U.,.E...N..M.C-■■?T[..f!P...4...Dk2.0....&・・・a・5or・,・rLr・l.WI!1.7.f.L.....c...tW...Y.©■va・5mY!・F・TLXg・・.FG@..Y&4H.Q,..Y.FE.mA..JG.$.7(.■"U.,.E...N..M.C-■■?T[..f!P...4...Dk2.0....&・・・a・5or・,・rLr・l.WI!1.7.f.L.....c...tW...Y.©■va・5mY!・F・TLXg・・.FG@..Y&4H.Q,..Y.FE.mA..JG・#■■■i■■■V}b.15...+N:...ooafqj36b7ordo77o6b2bso4bbFJnJ402-d8c42-a42Q-7o71dd5403od
oaod
ooc-5C4b97sbcl-・.r・-IB.-9esb5
QJ-rjo且ffbo23^cbCid3_d^lblrT4945^Tdafscfa44o1fo7sbde_yf7cbC3bo6sos75sb□650CO26784S01509951416557454且5s5ooeIf7434_d326f3bl272o3o6f53f8215obo7691092619obQO33345b2oal_y
c8olQf5917d_y9o24oodoe2s6d4Q2d7fSO4619090e13528106403460_d
d8G且54^14730703□4003es5sf4fQ114p-dd2o7p-31-654
2d4Q-y3bo4644^0odbo_y6L
ooofSdo39400000010002000300040005000600070OOSO0090OOaOOObOQOgOOOdOOOeOclient发送的加密数据,这个消息非常关键,一是能证明握手数据没有被篡改过,二也能证明自己确实是密钥的拥有者(这里是单边验证,只有server有certificate,server发送的Finished能证明自己含有privatekey,原理是一样的)。client将之前发送的所有握手消息存入handshakemessages缓存,进行MD5和SHA-1两种hash运算,再与前面的mastersecret和一串常量"clientfinished"进行PRF伪随机运算得到12字节的verifydata,还要经过改进的MD5计算得到加密信息。为什么能证明上述两点呢,前面说了只有密钥的拥有者才能解密得到pre-masterkey,masterkey,最后得到keyblock后,进行hash运算得到的结果才与发送方的一致。8・Server发送ChangeCipherSpecI-secures□cketLayerTLSvlRecordLayer:匚hangeciph
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理电动车合同范例
- 借名买房合同范本
- 租赁合同通知函
- 农村收购单车合同范例
- 农村果园承包合同范本
- 云平台建设合同范本
- 云南租房合同范本
- 供应电水气合同范本
- 水电站隧道排水孔施工方案
- 乙方装修合同范本
- 2024-2025学年新教材高中化学 第三章 铁 金属材料 2.1 合金说课稿 新人教版必修1
- 《篮球防守脚步移动技术 滑步》教案
- 完整版项目部组织机构图
- 浙江省杭州市2023-2024学年七年级上学期期末考试数学试题(含答案)
- 人工智能客服机器人使用手册
- 品牌全球化体育营销趋势洞察报告 2024
- 安徽省芜湖市普通高中2025届高考全国统考预测密卷物理试卷含解析
- (新版)拖拉机驾驶证科目一知识考试题库500题(含答案)
- (人卫版第九版传染病学总论(一))课件
- 工业机器人仿真与离线编程项目-8-KUKA-Sim-Pro-软件的介绍及基本操作
- 第2课++生涯规划+筑梦未来(课时2)【中职专用】中职思想政治《心理健康与职业生涯》高效课堂 (高教版基础模块)
评论
0/150
提交评论