# 3.4 HTTPS ECDHE æ¡æè§£æ HTTPS 常ç¨çå¯é¥äº¤æ¢ç®æ³æä¸¤ç§ï¼å嫿¯ RSA å ECDHE ç®æ³ã å ¶ä¸ï¼RSA æ¯æ¯è¾ä¼ ç»çå¯é¥äº¤æ¢ç®æ³ï¼å®ä¸å ·å¤ååå®å ¨çæ§è´¨ï¼å æ¤ç°å¨å¾å°æå¡å¨ä½¿ç¨çãè ECDHE ç®æ³å ·æååå®å ¨ï¼æä»¥è¢«å¹¿æ³ä½¿ç¨ã æå¨ä¸ä¸ç¯å·²ç»ä»ç»äº [RSA æ¡æçè¿ç¨](https://mp.weixin.qq.com/s/U9SRLE7jZTB6lUZ6c8gTKg)ï¼ä»å¤©è¿ä¸ç¯å°±ãä»ç论åå°å®ææå ãä»ç» **ECDHE ç®æ³**ã  --- ## 离æ£å¯¹æ° ECDHE å¯é¥ååç®æ³æ¯ DH ç®æ³æ¼è¿è¿æ¥çï¼æä»¥æä»¬å ä» DH ç®æ³è¯´èµ·ã DH ç®æ³æ¯é对称å å¯ç®æ³ï¼ å æ¤å®å¯ä»¥ç¨äºå¯é¥äº¤æ¢ï¼è¯¥ç®æ³çæ ¸å¿æ°å¦ææ³æ¯**离æ£å¯¹æ°**ã æ¯ä¸æ¯å¬å°è¿ä¸ªæ°å¦æ¦å¿µå°±æäºï¼ä¸æï¼è¿æ¬¡ä¸ä¼è¯´ç¦»æ£å¯¹æ°æ¨å¯¼çè¿ç¨ï¼åªç®åæä¸ä¸å®çæ°å¦å ¬å¼ã 离æ£å¯¹æ°æ¯ãç¦»æ£ + 对æ°ãç两个æ°å¦æ¦å¿µçç»åï¼æä»¥æä»¬å æ¥å¤ä¹ ä¸é对æ°ã è¦è¯´èµ·å¯¹æ°ï¼å¿ ç¶è¦è¯´ææ°ï¼å 为å®ä»¬æ¯äºä¸ºå彿°ï¼ææ°å°±æ¯å¹è¿ç®ï¼å¯¹æ°æ¯ææ°çéè¿ç®ã 举个æ åï¼å¦æä»¥ 2 ä½ä¸ºåºæ°ï¼é£ä¹ææ°å对æ°è¿ç®å ¬å¼ï¼å¦ä¸å¾æç¤ºï¼  é£ä¹å¯¹äºåºæ°ä¸º 2 çæ¶åï¼ 32 çå¯¹æ°æ¯ 5ï¼64 çå¯¹æ°æ¯ 6ï¼è®¡ç®è¿ç¨å¦ä¸ï¼  对æ°è¿ç®çå弿¯å¯ä»¥è¿ç»çï¼è离æ£å¯¹æ°çå弿¯ä¸è½è¿ç»çï¼å æ¤ä¹ä»¥ã离æ£ãå¾åï¼ ç¦»æ£å¯¹æ°æ¯å¨å¯¹æ°è¿ç®çåºç¡ä¸å äºã模è¿ç®ãï¼ä¹å°±è¯´å使°ï¼å¯¹åºç¼ç¨è¯è¨çæä½ç¬¦æ¯ã%ãï¼ä¹å¯ä»¥ç¨ mod 表示ã离æ£å¯¹æ°çæ¦å¿µå¦ä¸å¾ï¼  ä¸å¾çï¼åºæ° a 忍¡æ° p æ¯ç¦»æ£å¯¹æ°çå ¬å ±åæ°ï¼ä¹å°±è¯´æ¯å ¬å¼çï¼b æ¯çæ°ï¼i æ¯å¯¹æ°ãç¥éäºå¯¹æ°ï¼å°±å¯ä»¥ç¨ä¸é¢çå ¬å¼è®¡ç®åºçæ°ãä½åè¿æ¥ï¼ç¥éçæ°å´å¾é¾æ¨ç®åºå¯¹æ°ã **ç¹å«æ¯å½æ¨¡æ° p æ¯ä¸ä¸ªå¾å¤§çè´¨æ°ï¼å³ä½¿ç¥éåºæ° a åçæ° b ï¼å¨ç°æçè®¡ç®æºçè®¡ç®æ°´å¹³æ¯å 乿 æ³ç®åºç¦»æ£å¯¹æ°çï¼è¿å°±æ¯ DH ç®æ³çæ°å¦åºç¡ã** --- ## DH ç®æ³ 认è¯äºç¦»æ£å¯¹æ°ï¼æä»¬æ¥çç DH ç®æ³æ¯å¦ä½å¯é¥äº¤æ¢çã ç°å设å°çº¢åå°æçº¦å®ä½¿ç¨ DH ç®æ³æ¥äº¤æ¢å¯é¥ï¼é£ä¹åºäºç¦»æ£å¯¹æ°ï¼å°çº¢åå°æéè¦å ç¡®å®æ¨¡æ°ååºæ°ä½ä¸ºç®æ³çåæ°ï¼è¿ä¸¤ä¸ªåæ°æ¯å ¬å¼çï¼ç¨ P å G æ¥ä»£ç§°ã ç¶åå°çº¢åå°æåèªçæä¸ä¸ªéæºæ´æ°ä½ä¸º**ç§é¥**ï¼åæ¹çç§é¥è¦åèªä¸¥æ ¼ä¿ç®¡ï¼ä¸è½æ³æ¼ï¼å°çº¢çç§é¥ç¨ a 代称ï¼å°æçç§é¥ç¨ b 代称ã ç°å¨å°çº¢åå°æåæ¹é½æäº P å G 以ååèªçç§é¥ï¼äºæ¯å°±å¯ä»¥è®¡ç®åº**å ¬é¥**ï¼ - å°çº¢çå ¬é¥è®°ä½ Aï¼A = G ^ a ( mod P )ï¼ - å°æçå ¬é¥è®°ä½ Bï¼B = G ^ b ( mod P )ï¼ A å B 乿¯å ¬å¼çï¼å ä¸ºæ ¹æ®ç¦»æ£å¯¹æ°çåçï¼ä»çæ°ï¼A å Bï¼åå计ç®å¯¹æ° a å b æ¯é常å°é¾çï¼è³å°å¨ç°æè®¡ç®æºç计ç®è½åæ¯æ æ³ç ´è§£çï¼å¦æéåè®¡ç®æºåºæ¥äºï¼é£å°±æå¯è½è¢«ç ´è§£ï¼å½ç¶å¦æéåè®¡ç®æºççåºæ¥äºï¼é£ä¹å¯é¥ååç®æ³å°±è¦å大çå级äºã åæ¹äº¤æ¢åèª DH å ¬é¥åï¼å°çº¢æä¸å ±æ 5 个æ°ï¼PãGãaãAãBï¼å°ææä¸ä¹åæ ·å ±æ 5 个æ°ï¼PãGãbãBãAã ç¶åå°çº¢æ§è¡è¿ç®ï¼B ^ a ( mod P )ï¼å ¶ç»æä¸º Kï¼å 为离æ£å¯¹æ°çå¹è¿ç®æäº¤æ¢å¾ï¼æä»¥å°ææ§è¡è¿ç®ï¼A ^ b ( mod P )ï¼å¾å°çç»æä¹æ¯ Kã  è¿ä¸ª K å°±æ¯å°çº¢åå°æä¹é´ç¨ç**对称å å¯å¯é¥**ï¼å¯ä»¥ä½ä¸ºä¼è¯å¯é¥ä½¿ç¨ã å¯ä»¥çå°ï¼æ´ä¸ªå¯é¥ååè¿ç¨ä¸ï¼å°çº¢åå°æå ¬å¼äº 4 个信æ¯ï¼PãGãAãBï¼å ¶ä¸ PãG æ¯ç®æ³çåæ°ï¼A å B æ¯å ¬é¥ï¼è aãb æ¯åæ¹åèªä¿ç®¡çç§é¥ï¼é»å®¢æ æ³è·åè¿ 2 个ç§é¥ï¼å æ¤é»å®¢åªè½ä»å ¬å¼ç PãGãAãB å ¥æï¼è®¡ç®åºç¦»æ£å¯¹æ°ï¼ç§é¥ï¼ã åé¢ä¹å¤æ¬¡å¼ºè°ï¼ æ ¹æ®ç¦»æ£å¯¹æ°çåçï¼å¦æ P æ¯ä¸ä¸ªå¤§æ°ï¼å¨ç°æçè®¡ç®æºç计ç®è½åæ¯å¾é¾ç ´è§£åº ç§é¥ aãb çï¼ç ´è§£ä¸åºç§é¥ï¼ä¹å°±æ æ³è®¡ç®åºä¼è¯å¯é¥ï¼å æ¤ DH å¯é¥äº¤æ¢æ¯å®å ¨çã --- ## DHE ç®æ³ æ ¹æ®ç§é¥çæçæ¹å¼ï¼DH ç®æ³å为两ç§å®ç°ï¼ - static DH ç®æ³ï¼è¿ä¸ªæ¯å·²ç»è¢«åºå¼äºï¼ - DHE ç®æ³ï¼ç°å¨å¸¸ç¨çï¼ static DH ç®æ³éæä¸æ¹çç§é¥æ¯éæçï¼ä¹å°±è¯´æ¯æ¬¡å¯é¥ååçæ¶åæä¸æ¹çç§é¥é½æ¯ä¸æ ·çï¼ä¸è¬æ¯æå¡å¨æ¹åºå®ï¼å³ a ä¸åï¼å®¢æ·ç«¯çç§é¥åæ¯éæºçæçã äºæ¯ï¼DH 交æ¢å¯é¥æ¶å°±åªæå®¢æ·ç«¯çå ¬é¥æ¯ååï¼èæå¡ç«¯å ¬é¥æ¯ä¸åçï¼é£ä¹éçæ¶é´å»¶é¿ï¼é»å®¢å°±ä¼æªè·æµ·éçå¯é¥ååè¿ç¨çæ°æ®ï¼å 为å¯é¥ååçè¿ç¨æäºæ°æ®æ¯å ¬å¼çï¼é»å®¢å°±å¯ä»¥ä¾æ®è¿äºæ°æ®æ´åç ´è§£åºæå¡å¨çç§é¥ï¼ç¶åå°±å¯ä»¥è®¡ç®åºä¼è¯å¯é¥äºï¼äºæ¯ä¹åæªè·çå 坿°æ®ä¼è¢«ç ´è§£ï¼æä»¥ **static DH ç®æ³ä¸å ·å¤ååå®å ¨æ§**ã æ¢ç¶åºå®ä¸æ¹çç§é¥æè¢«ç ´è§£çé£é©ï¼é£ä¹å¹²èå°±è®©åæ¹çç§é¥å¨æ¯æ¬¡å¯é¥äº¤æ¢éä¿¡æ¶ï¼é½æ¯éæºçæçã临æ¶çï¼è¿ä¸ªæ¹å¼ä¹å°±æ¯ DHE ç®æ³ï¼E å ¨ç§°æ¯ ephemeralï¼ä¸´æ¶æ§çï¼ã æä»¥ï¼å³ä½¿æä¸ªçé¼çé»å®¢ç ´è§£äºæä¸æ¬¡éä¿¡è¿ç¨çç§é¥ï¼å ¶ä»éä¿¡è¿ç¨çç§é¥ä»ç¶æ¯å®å ¨çï¼å 为**æ¯ä¸ªéä¿¡è¿ç¨çç§é¥é½æ¯æ²¡æä»»ä½å ³ç³»çï¼é½æ¯ç¬ç«çï¼è¿æ ·å°±ä¿è¯äºãååå®å ¨ã**ã ---- ## ECDHE ç®æ³ DHE ç®æ³ç±äºè®¡ç®æ§è½ä¸ä½³ï¼å 为éè¦å大éç乿³ï¼ä¸ºäºæå DHE ç®æ³çæ§è½ï¼æä»¥å°±åºç°äºç°å¨å¹¿æ³ç¨äºå¯é¥äº¤æ¢ç®æ³ ââ **ECDHE ç®æ³**ã ECDHE ç®æ³æ¯å¨ DHE ç®æ³çåºç¡ä¸å©ç¨äº ECC æ¤åæ²çº¿ç¹æ§ï¼å¯ä»¥ç¨æ´å°ç计ç®é计ç®åºå ¬é¥ï¼ä»¥åæç»çä¼è¯å¯é¥ã å°çº¢åå°æä½¿ç¨ ECDHE å¯é¥äº¤æ¢ç®æ³çè¿ç¨ï¼ - åæ¹äºå ç¡®å®å¥½ä½¿ç¨åªç§æ¤åæ²çº¿ï¼åæ²çº¿ä¸çåºç¹ Gï¼è¿ä¸¤ä¸ªåæ°é½æ¯å ¬å¼çï¼ - åæ¹åèªéæºçæä¸ä¸ªéæºæ°ä½ä¸º**ç§é¥d**ï¼å¹¶ä¸åºç¹ Gç¸ä¹å¾å°**å ¬é¥Q**ï¼Q = dGï¼ï¼æ¤æ¶å°çº¢çå ¬ç§é¥ä¸º Q1 å d1ï¼å°æçå ¬ç§é¥ä¸º Q2 å d2ï¼ - åæ¹äº¤æ¢åèªçå ¬é¥ï¼æåå°çº¢è®¡ç®ç¹ï¼x1ï¼y1ï¼ = d1Q2ï¼å°æè®¡ç®ç¹ï¼x2ï¼y2ï¼ = d2Q1ï¼ç±äºæ¤åæ²çº¿ä¸æ¯å¯ä»¥æ»¡è¶³ä¹æ³äº¤æ¢åç»åå¾ï¼æä»¥ d1Q2 = d1d2G = d2d1G = d2Q1 ï¼å æ¤**åæ¹ç x åæ æ¯ä¸æ ·çï¼æä»¥å®æ¯å ±äº«å¯é¥ï¼ä¹å°±æ¯ä¼è¯å¯é¥**ã è¿ä¸ªè¿ç¨ä¸ï¼åæ¹çç§é¥é½æ¯éæºã临æ¶çæçï¼é½æ¯ä¸å ¬å¼çï¼å³ä½¿æ ¹æ®å ¬å¼çä¿¡æ¯ï¼æ¤åæ²çº¿ãå ¬é¥ãåºç¹ Gï¼ä¹æ¯å¾é¾è®¡ç®åºæ¤åæ²çº¿ä¸ç离æ£å¯¹æ°ï¼ç§é¥ï¼ã --- ## ECDHE æ¡æè¿ç¨ ç¥éäº ECDHE ç®æ³åºæ¬åçåï¼æä»¬å°±ç»åå®é çæ åµæ¥ççã æç¨ Wireshark å·¥å ·æäºç¨ ECDHE å¯é¥ååç®æ³ç TSL æ¡æè¿ç¨ï¼å¯ä»¥çå°æ¯åæ¬¡æ¡æï¼  ç»å¿çå°ä¼ä¼´åºè¯¥åç°äºï¼**使ç¨äº ECDHEï¼å¨ TLS ç¬¬åæ¬¡æ¡æåï¼å®¢æ·ç«¯å°±å·²ç»åéäºå å¯ç HTTP æ°æ®**ï¼èå¯¹äº RSA æ¡æè¿ç¨ï¼å¿ é¡»è¦å®æ TLS 忬¡æ¡æï¼æè½ä¼ è¾åºç¨æ°æ®ã æä»¥ï¼**ECDHE ç¸æ¯ RSA æ¡æè¿ç¨çå»äºä¸ä¸ªæ¶æ¯å¾è¿çæ¶é´**ï¼è¿ä¸ªæç¹ãæ¢è·ãçææï¼å®è¢«ç§°ä¸ºæ¯ã*TLS False Start*ãï¼è·ã*TCP Fast Open*ãæç¹åï¼é½æ¯å¨è¿æ²¡è¿æ¥å®å ¨å»ºç«åï¼å°±åéäºåºç¨æ°æ®ï¼è¿æ ·ä¾¿æé«äºä¼ è¾çæçã æ¥ä¸æ¥ï¼åææ¯ä¸ä¸ª ECDHE æ¡æè¿ç¨ã ### TLS ç¬¬ä¸æ¬¡æ¡æ 客æ·ç«¯é¦å ä¼åä¸ä¸ªã**Client Hello**ãæ¶æ¯ï¼æ¶æ¯é颿客æ·ç«¯ä½¿ç¨ç TLS çæ¬å·ãæ¯æçå¯ç å¥ä»¶å表ï¼ä»¥åçæç**éæºæ°ï¼*Client Random*ï¼**ã  ### TLS ç¬¬äºæ¬¡æ¡æ æå¡ç«¯æ¶å°å®¢æ·ç«¯çãææå¼ãï¼åæ ·ä¹è¦å礼ï¼ä¼è¿åã**Server Hello**ãæ¶æ¯ï¼æ¶æ¯é¢ææå¡å¨ç¡®è®¤ç TLS çæ¬å·ï¼ä¹ç»åºäºä¸ä¸ª**éæºæ°ï¼*Server Random*ï¼**ï¼ç¶åä»å®¢æ·ç«¯çå¯ç å¥ä»¶åè¡¨éæ©äºä¸ä¸ªåéçå¯ç å¥ä»¶ã  ä¸è¿ï¼è¿æ¬¡éæ©çå¯ç å¥ä»¶å°±å RSA ä¸ä¸æ ·äºï¼æä»¬æ¥åæä¸ä¸è¿æ¬¡çå¯ç å¥ä»¶çææã ã TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384ã - å¯é¥ååç®æ³ä½¿ç¨ ECDHEï¼ - ç¾åç®æ³ä½¿ç¨ RSAï¼ - æ¡æåçéä¿¡ä½¿ç¨ AES å¯¹ç§°ç®æ³ï¼å¯é¥é¿åº¦ 256 ä½ï¼åç»æ¨¡å¼æ¯ GCMï¼ - æè¦ç®æ³ä½¿ç¨ SHA384ï¼ æ¥çï¼æå¡ç«¯ä¸ºäºè¯æèªå·±ç身份ï¼åéã**Certificate**ãæ¶æ¯ï¼ä¼æè¯ä¹¦ä¹åç»å®¢æ·ç«¯ã  è¿ä¸æ¥å°±å RSA æ¡æè¿ç¨æå¾å¤§å°åºå«äºï¼å 为æå¡ç«¯éæ©äº ECDHE å¯é¥ååç®æ³ï¼æä»¥ä¼å¨åéå®è¯ä¹¦åï¼åéã**Server Key Exchange**ãæ¶æ¯ã  è¿ä¸ªè¿ç¨æå¡å¨åäºä¸ä»¶äºï¼ - éæ©äº**å为 x25519 çæ¤åæ²çº¿**ï¼éå¥½äºæ¤åæ²çº¿ç¸å½äºæ¤åæ²çº¿åºç¹ G ä¹å®å¥½äºï¼è¿äºé½ä¼å ¬å¼ç»å®¢æ·ç«¯ï¼ - çæéæºæ°ä½ä¸ºæå¡ç«¯æ¤åæ²çº¿çç§é¥ï¼ä¿çå°æ¬å°ï¼ - æ ¹æ®åºç¹ G åç§é¥è®¡ç®åº**æå¡ç«¯çæ¤åæ²çº¿å ¬é¥**ï¼è¿ä¸ªä¼å ¬å¼ç»å®¢æ·ç«¯ã 为äºä¿è¯è¿ä¸ªæ¤åæ²çº¿çå ¬é¥ä¸è¢«ç¬¬ä¸æ¹ç¯¡æ¹ï¼æå¡ç«¯ä¼ç¨ RSA ç¾åç®æ³ç»æå¡ç«¯çæ¤åæ²çº¿å ¬é¥å个ç¾åã éåï¼å°±æ¯ã**Server Hello Done**ãæ¶æ¯ï¼æå¡ç«¯è·å®¢æ·ç«¯è¡¨æï¼âè¿äºå°±æ¯ææä¾çä¿¡æ¯ï¼ææå¼å®æ¯âã  è³æ¤ï¼TLS ä¸¤æ¬¡æ¡æå°±å·²ç»å®æäºï¼ç®å客æ·ç«¯åæå¡ç«¯éè¿ææå ±äº«äºè¿å 个信æ¯ï¼**Client RandomãServer Random ã使ç¨çæ¤åæ²çº¿ãæ¤åæ²çº¿åºç¹ Gãæå¡ç«¯æ¤åæ²çº¿çå ¬é¥**ï¼è¿å 个信æ¯å¾éè¦ï¼æ¯åç»çæä¼è¯å¯é¥çææã ### TLS ç¬¬ä¸æ¬¡æ¡æ 客æ·ç«¯æ¶å°äºæå¡ç«¯çè¯ä¹¦åï¼èªç¶è¦æ ¡éªè¯ä¹¦æ¯å¦åæ³ï¼å¦æè¯ä¹¦åæ³ï¼é£ä¹æå¡ç«¯å°èº«ä»½å°±æ¯æ²¡é®é¢çãæ ¡éªè¯ä¹¦çè¿ç¨ä¼èµ°è¯ä¹¦é¾é级éªè¯ï¼ç¡®è®¤è¯ä¹¦çç宿§ï¼åç¨è¯ä¹¦çå ¬é¥éªè¯ç¾åï¼è¿æ ·å°±è½ç¡®è®¤æå¡ç«¯ç身份äºï¼ç¡®è®¤æ 误åï¼å°±å¯ä»¥ç»§ç»å¾ä¸èµ°ã 客æ·ç«¯ä¼çæä¸ä¸ªéæºæ°ä½ä¸ºå®¢æ·ç«¯æ¤åæ²çº¿çç§é¥ï¼ç¶ååæ ¹æ®æå¡ç«¯åé¢ç»çä¿¡æ¯ï¼çæ**客æ·ç«¯çæ¤åæ²çº¿å ¬é¥**ï¼ç¶åç¨ã**Client Key Exchange**ãæ¶æ¯åç»æå¡ç«¯ã  è³æ¤ï¼åæ¹é½æå¯¹æ¹çæ¤åæ²çº¿å ¬é¥ãèªå·±çæ¤åæ²çº¿ç§é¥ãæ¤åæ²çº¿åºç¹ Gãäºæ¯ï¼åæ¹é½å°±è®¡ç®åºç¹ï¼xï¼yï¼ï¼å ¶ä¸ x åæ å¼åæ¹é½æ¯ä¸æ ·çï¼åé¢è¯´ ECDHE ç®æ³æ¶åï¼è¯´ x æ¯ä¼è¯å¯é¥ï¼**ä½å®é åºç¨ä¸ï¼x è¿ä¸æ¯æç»çä¼è¯å¯é¥**ã è¿è®°å¾ TLS æ¡æé¶æ®µï¼å®¢æ·ç«¯åæå¡ç«¯é½ä¼çæäºä¸ä¸ªéæºæ°ä¼ éç»å¯¹æ¹åï¼ **æç»çä¼è¯å¯é¥ï¼å°±æ¯ç¨ã客æ·ç«¯éæºæ° + æå¡ç«¯éæºæ° + xï¼ECDHE ç®æ³ç®åºçå ±äº«å¯é¥ï¼ ãä¸ä¸ªææçæç**ã 乿以è¿ä¹éº»ç¦ï¼æ¯å 为 TLS 设计è ä¸ä¿¡ä»»å®¢æ·ç«¯ææå¡å¨ãä¼ªéæºæ°ãçå¯é æ§ï¼ä¸ºäºä¿è¯çæ£çå®å ¨éæºï¼æä¸ä¸ªä¸å¯é çéæºæ°æ··åèµ·æ¥ï¼é£ä¹ãéæºãçç¨åº¦å°±é常é«äºï¼è¶³å¤è®©é»å®¢è®¡ç®ä¸åºæç»çä¼è¯å¯é¥ï¼å®å ¨æ§æ´é«ã ç®å¥½ä¼è¯å¯é¥åï¼å®¢æ·ç«¯ä¼åä¸ä¸ªã**Change Cipher Spec**ãæ¶æ¯ï¼åè¯æå¡ç«¯åç»æ¹ç¨å¯¹ç§°ç®æ³å å¯éä¿¡ã  æ¥çï¼å®¢æ·ç«¯ä¼åã**Encrypted Handshake Message**ãæ¶æ¯ï¼æä¹ååéçæ°æ®åä¸ä¸ªæè¦ï¼åç¨å¯¹ç§°å¯é¥å å¯ä¸ä¸ï¼è®©æå¡ç«¯å个éªè¯ï¼éªè¯ä¸æ¬æ¬¡çæç对称å¯é¥æ¯å¦å¯ä»¥æ£å¸¸ä½¿ç¨ã  ### TLS ç¬¬åæ¬¡æ¡æ æåï¼æå¡ç«¯ä¹ä¼æä¸ä¸ªåæ ·çæä½ï¼åã**Change Cipher Spec**ãåã**Encrypted Handshake Message**ãæ¶æ¯ï¼å¦æåæ¹é½éªè¯å å¯åè§£å¯æ²¡é®é¢ï¼é£ä¹æ¡ææ£å¼å®æãäºæ¯ï¼å°±å¯ä»¥æ£å¸¸æ¶åå å¯ç HTTP 请æ±åååºäºã ---- ## æ»ç» RSA å ECDHE æ¡æè¿ç¨çåºå«ï¼ - RSA å¯é¥ååç®æ³ã䏿¯æãååä¿å¯ï¼ECDHE å¯é¥ååç®æ³ãæ¯æãååä¿å¯ï¼ - 使ç¨äº RSA å¯é¥ååç®æ³ï¼TLS 宿忬¡æ¡æåï¼æè½è¿è¡åºç¨æ°æ®ä¼ è¾ï¼èå¯¹äº ECDHE ç®æ³ï¼å®¢æ·ç«¯å¯ä»¥ä¸ç¨çæå¡ç«¯çæå䏿¬¡ TLS æ¡æï¼å°±å¯ä»¥æåååºå å¯ç HTTP æ°æ®ï¼èçäºä¸ä¸ªæ¶æ¯çå¾è¿æ¶é´ï¼è¿ä¸ªæ¯ RFC ææ¡£è§å®çï¼å ·ä½åå ææ¡£æ²¡æè¯´æï¼æä»¥è¿ç¹æä¹ä¸å¤ªæç½ï¼ï¼ - ä½¿ç¨ ECDHEï¼ å¨ TLS 第 2 æ¬¡æ¡æä¸ï¼ä¼åºç°æå¡å¨ç«¯ååºçãServer Key Exchangeãæ¶æ¯ï¼è RSA æ¡æè¿ç¨æ²¡æè¯¥æ¶æ¯ï¼ --- åèèµæï¼ 1. https://zh.wikipedia.org/wiki/æ©¢åæ²ç·è¿ªè²-èµ«ç¾æ¼éé°äº¤æ 2. https://zh.wikipedia.org/wiki/æ¤åæ²çº¿ 3. https://zh.wikipedia.org/wiki/迪è²-èµ«ç¾æ¼å¯é°äº¤æ 4. https://time.geekbang.org/column/article/148188 5. https://zhuanlan.zhihu.com/p/106967180 --- åå½ï¼ææ¯å°æï¼å°±ç±å¾è§£è®¡ç®æºåºç¡ï¼å¦ææç« å¯¹ä½ æå¸®å©ï¼å«å¿è®°å ³æ³¨å¦ï¼ 