HTTPS通信原理簡(jiǎn)介

去年有個(gè)財(cái)大氣粗的甲方爸爸給我們一堆非對(duì)稱加密的通信數(shù)據(jù)叫我們給他解開(kāi),不止一次給他做了解釋說(shuō)解不了,奈何對(duì)方非要不可,沒(méi)辦法,甲方就是爸爸,逼急了我把算法和通信過(guò)程以及數(shù)學(xué)證明全給他做了一次免費(fèi)科普,事后把資料整理了下。

一,RSA算法基礎(chǔ)

RSA算法是典型的非對(duì)稱算法,

原理

求兩個(gè)大素?cái)?shù)的乘積是非常容易的;而通過(guò)乘積求這兩個(gè)大素?cái)?shù)是非常困難的。
例如一個(gè)2048bit的數(shù),如下

0x890e23101a542913da8a4350672c9ef8e7b34c2687ce8cd8db3fb34244a791d60c9dc0a53172a56dcc8a66f553c0ae51e9e2e2ce9486fa6b00a6c556bfed139001133cdfe5921c425eb8823b1bd0a4c00920d24bee2633256328502eadbfac1420f9a5f47139de6f14d8eb7c2b7c0cec42530c0a71dadb80c7214f5cd19a3f2f 

他可以分解成一個(gè)155位和154位的因數(shù),如果要暴力破解的話基本是不可能的。
12026655772210679470465581609002525329245773732132014742758935511187863487919026457076252932048619706498126046597130520643092209728783224795661331197604583
8002511426596424351829267099531651390448054153452321185350746845306277585856673898048740413439442356860630765545600353049345324913056448174487017235828857

密鑰對(duì)生成

舉例,為了計(jì)算方便,用67和71兩個(gè)素?cái)?shù)代替上面兩個(gè)大素?cái)?shù)。
P=67,Q=71

  1. 求乘積,n = P * Q = 4757
  2. 計(jì)算n的歐拉函數(shù)(<=n的與n互質(zhì)的正整數(shù)的個(gè)數(shù)),m = φ (n) = (P-1)(Q-1) = 4620
  3. 在1~m之間選一個(gè)隨機(jī)的m的互質(zhì)數(shù)e,e=101
  4. 求d,滿足 (e*d)% m = 1
    化簡(jiǎn)得 e * d - m * y = 1 (y is an integer)
    101 * d - 4620 * y = 1
    最后得到4中的二元一次方程,對(duì)于二元一次方程可以使用擴(kuò)展歐幾里得算法
    得到一組(d,y) = (1601,35)
    ∴ d取值1601
    那么就得到了我們需要的密鑰對(duì),
公鑰對(duì):(n,e) = (4757,101)
私鑰對(duì):(n,d) = (4757,1601)
密鑰對(duì)的使用
加解密公式

舉個(gè)栗子:
明文: ILOVEU
ASCII:73 76 79 86 69 85


公鑰加密,私鑰解密

同時(shí)也可以私鑰加密,公鑰解密,通常用在數(shù)字簽名驗(yàn)證過(guò)程:


私鑰加密,公鑰解密
公式證明

加密:??^?? ?????? ??=??
解密:??^?? ?????? ??=??
由加密公式得:


將c帶入解密公式得:

二項(xiàng)式展開(kāi):

已知 *???? ?????? (??(??)) = 1 *(密鑰對(duì)生成時(shí)的第四步)
所以

那么問(wèn)題就變成了證明上式。
分情況處理:
一,假設(shè)mn互質(zhì),通過(guò)歐拉定理,??^(??(??)) ?????? ??=1

得證;
二,mn不互質(zhì),
因?yàn)閙n不互質(zhì),且n=pq,則必有 m=kp 或者 m=kq,
假設(shè)m=kp,因?yàn)閝是質(zhì)數(shù),所以k和q互質(zhì)(q不可能是k的質(zhì)因數(shù),因?yàn)槿鬹=lq,則 m = kp = lpq = ln > n)
根據(jù)歐拉定理


同情景一的原理:


代入ed的公式 ????= ???(??)+1


這時(shí)t必然能被p整除,即 t=t′??

將m=kp ,n=pq代入得


得證。

二,SSL/TLS協(xié)議

  • 加密數(shù)據(jù)是通過(guò)對(duì)稱算法傳輸?shù)?/li>
  • 密鑰的生成是隨機(jī)的
  • 密鑰是通過(guò)非對(duì)稱算法傳輸?shù)?/li>
Client Hello

Server Hello

Server Hello Done

Server Finished

send encrypted data
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 學(xué)一點(diǎn)有趣的數(shù)論知識(shí) 在探究RSA算法的原理之前,我們先來(lái)學(xué)習(xí)一點(diǎn)有趣的數(shù)論知識(shí)(數(shù)學(xué)分支之一,主要研究整數(shù)的性質(zhì)...
    24f464006eaf閱讀 2,290評(píng)論 0 5
  • 原文鏈接:http://blog.jobbole.com/86660/ 1 前言 百度已經(jīng)于近日上線了全站 HTT...
    xlhzj閱讀 1,180評(píng)論 0 2
  • 網(wǎng)上寫(xiě) RSA 算法原理的文章不少,但是基本上要么忽略了數(shù)學(xué)原理的說(shuō)明,要么缺少實(shí)際的可運(yùn)行的例子,為此特寫(xiě)了此文...
    __七把刀__閱讀 21,333評(píng)論 14 29
  • iOS app開(kāi)發(fā)過(guò)程中,真機(jī)調(diào)試,測(cè)試分發(fā),以及正式發(fā)布到appStore上,以上所說(shuō)都離不開(kāi)證書(shū),開(kāi)發(fā)證書(shū),發(fā)...
    huxinwen閱讀 2,347評(píng)論 0 6
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,809評(píng)論 16 22

友情鏈接更多精彩內(nèi)容