- 資訊首頁(yè) > 網(wǎng)絡(luò )安全 >
- 手上只有一把鑰匙,怎么解開(kāi)全世界的鎖?揭秘
關(guān)于非對稱(chēng)加密,小蔚已經(jīng)聊過(guò)很多次,這一次我們繼續更深入的探討一下。
近現代,密碼學(xué)已經(jīng)成為一個(gè)重要的學(xué)科,無(wú)論是軍事還是生活,處處都有密碼學(xué)的身影。
從密碼學(xué)誕生之日起,一個(gè)難題始終困擾著(zhù)人們。為了讓接收信息的一方獲得原始信息,必須事先將解密的方法告訴對方。但這樣一來(lái),解密的方法就存在泄露的風(fēng)險,一旦泄露,所加密的信息就會(huì )在陽(yáng)光下裸奔。
有沒(méi)有一種方法,不需要事先告訴對方解密的方法,就可以讓對方輕易獲取被加密的信息呢?
如果甲寫(xiě)了一封機密信件,打算發(fā)送給乙。甲所在的地區只有一個(gè)郵差,而且甲已經(jīng)知道這名郵差是個(gè)間諜,會(huì )千方百計找機會(huì )竊取機密信件。
于是甲將這封機密信鎖在一個(gè)無(wú)法被暴力破壞的鐵箱子里,打開(kāi)箱子的唯一方法是獲得鑰匙,將機密信件鎖在鐵箱子里后,再讓郵差將箱子送給乙。
問(wèn)題是,乙沒(méi)有鑰匙,也打不開(kāi)這個(gè)鐵箱子。
先郵寄鐵箱子,再郵寄鑰匙?這樣也不行,郵差可以輕易獲得鑰匙,打開(kāi)鐵箱子。
先讓乙郵寄一把鎖過(guò)來(lái),然后再用乙的鎖鎖鐵箱子?還是不行。只要鎖或者鑰匙經(jīng)過(guò)郵差的手,機密信就不安全。
在很久很久以前,人們只能通過(guò)“線(xiàn)下”的方式來(lái)解決這個(gè)問(wèn)題。兩個(gè)人線(xiàn)下見(jiàn)面商量一個(gè)“密鑰”,再在通信時(shí)使用這個(gè)密鑰進(jìn)行加密。
但這樣做還是存在泄密的風(fēng)險,不懷好意的人總能找到破綻竊取秘密。
后來(lái),聰明的人想到了一個(gè)辦法:
甲先將上鎖的箱子郵寄給乙,乙雖然打不開(kāi),但可以在箱子上再加一把鎖,再郵寄回給甲。甲使用自己的鑰匙打開(kāi)鎖后,又郵寄給乙,最終乙用自己的鑰匙打開(kāi)箱子,拿到這封機密信件。
這個(gè)方法看起來(lái)行得通,整個(gè)過(guò)程郵差接觸不到鑰匙,打不開(kāi)箱子。
不過(guò)這個(gè)方法有一個(gè)很大的問(wèn)題——效率。以前只需要一趟,現在卻需要三趟。要知道,信息的時(shí)效性是非常重要的,李云龍在攻打平安縣城時(shí)說(shuō)過(guò):“你少來(lái)那一套!你我都知道一分鐘就能決定戰斗的勝負!”
要是傳遞信息的時(shí)間增加了兩倍,后果不堪設想。
兼具安全和效率的方法,一直沒(méi)有被找到,直到1977年,一種設計巧妙的方法被發(fā)明了出來(lái)。
它就是大名鼎鼎的“非對稱(chēng)加密。”
非對稱(chēng)加密算法需要兩把密鑰來(lái)進(jìn)行加密的解密,一把公開(kāi)密鑰,只能用于加密,一把私有密鑰,只能用于解密。公鑰和密鑰合在一起形成“密鑰對。”
公鑰是公開(kāi)的,任何人都可以用公鑰加密數據,持有這一公鑰對應私鑰的人,才能解密,這樣一來(lái),就不存在要傳遞“鑰匙”的情況,同時(shí)也兼顧了效率。
只要用我的公鑰加密數據,全世界的鎖我都能解開(kāi),而且只有我行!
按照上面的例子進(jìn)行解釋?zhuān)菍ΨQ(chēng)加密大致是這樣的過(guò)程:
整個(gè)過(guò)程,甲、乙既不需要對方的密鑰,郵差只能拿到公鑰,公鑰只能加密不能解密,從而保證了信件的安全性。
接下來(lái)我們來(lái)真實(shí)地感受一下非對稱(chēng)加密的藝術(shù)。
這種算法跟質(zhì)數分不開(kāi)。
現在給你13和17兩個(gè)質(zhì)數,讓你算出它們的乘積,我們很容易算出是221。
如果告訴你221這個(gè)數字,要求你算出這是哪兩個(gè)質(zhì)數的乘積,就比較難了。你得翻一翻質(zhì)數表,才能知道原來(lái)這個(gè)數是13和17。
這只是兩位數質(zhì)數的乘積,如果是幾十位、上百位甚至上千位的質(zhì)數乘積呢?逆向推理就變得十分困難。
舉個(gè)五位數的例子,請問(wèn)9936899831是哪兩個(gè)質(zhì)數的乘積?
雖然有困難,但通過(guò)計算機,還是可以得出這兩個(gè)數是99679和99689。但如果是上千位數,就十分困難了。
以現在計算機的算力,要對一個(gè)2048位的數字進(jìn)行暴力破解,可能要用上幾百年的時(shí)間,可以被認為是無(wú)法破解的。
為了方便計算和理解,我們還是使用13和17這兩個(gè)質(zhì)數。
假如甲要發(fā)送“15”給乙,為了數據傳輸安全,乙首先要生成一個(gè)密鑰對,即一個(gè)公鑰和一個(gè)私鑰。
首先13*17=221。
然后我們把13和17各減去1,再乘起來(lái),也就是12 X 16 = 192。接下來(lái)我們要隨機選擇一個(gè)小于192且與192互質(zhì)的數。兩個(gè)數互質(zhì)的意思是他們沒(méi)有除了1以外的公約數。我們把192分解成因數相乘的形式:
192 = 2* 22222*3
選擇一個(gè)不能被2和3整除的數,我們就選擇5這個(gè)數字。
(221,5)就是公鑰。
這個(gè)公鑰可以讓任何人知道,完全沒(méi)有關(guān)系,所有人都可以使用這個(gè)公鑰加密數據,然后發(fā)送給你。
還記得我們之前算出來(lái)的192和我們隨機選擇的5嗎?我們要找到這樣一個(gè)數:它是5的倍數,然后除以192剛好余1。這個(gè)數很好找,它就是385。然后385除以5等于77。
于是我們得出了私鑰:(221,77)。
私鑰只能自己知道,一旦泄露,傳輸的數據就等于是在陽(yáng)光下裸奔。
好了,有了密鑰對,我們終于可以進(jìn)行加密和解密了。
甲先將想要發(fā)送的信息,也就是“15”這個(gè)數字,使用乙的公鑰進(jìn)行加密。乙的公鑰是(221,5)。
首先甲算出15的5次方,得出759375這個(gè)數字。接著(zhù)再用759375除以221,得出余數是19。
最后一步,甲將“19”發(fā)送給乙。
乙拿到“19”后,使用私鑰進(jìn)行解密。私鑰是(221,77)。
首先乙會(huì )先計算19的77次方,然后再用得到的數字除以221,求出該數的余數,得出最終的答案就是“15!”
非對稱(chēng)加密大體上就是這么一個(gè)過(guò)程,非常具有藝術(shù)感!
那么,非對稱(chēng)加密有沒(méi)有缺點(diǎn)呢?
有!還是效率問(wèn)題。
如果甲和乙商量好一個(gè)密鑰,假定這個(gè)密鑰是數字“5”,甲想發(fā)給乙“15”這個(gè)數字,甲首先會(huì )用15*5得到75,再將“75”這個(gè)數字發(fā)給乙,乙拿到數字后,再除以5,就能得到“15”這個(gè)數字。
上面這種方法就是對稱(chēng)加密。它的缺點(diǎn)是安全性很差,加密和解密都使用同一個(gè)密鑰,一旦密鑰泄露,傳輸的數據就無(wú)安全性可言。
但它有一個(gè)好處,就是效率高。甲乙傳遞的信息,只需要乘以5和除以5即可,沒(méi)有非對稱(chēng)加密這么復雜。
于是,有一個(gè)聰明的家伙,結合非對稱(chēng)加密和對稱(chēng)加密,使其具備效率和安全性的優(yōu)勢。
具體是怎么做的呢?
思路如下:
首先利用非對稱(chēng)加密傳遞“密鑰”,對方擁有密鑰后,再使用密鑰傳輸數據即可,這樣一來(lái),既保證了安全性,又有效率。
還是上面的例子。數字“5”是密鑰,甲首先使用乙的公鑰(221,5)進(jìn)行加密。
5的5次方,除以221的余數是31,甲將31發(fā)送給乙,乙拿到這個(gè)數字后,再利用私鑰(221,77)解密,算出31的77次方除以221的余數是5。
此時(shí)乙已經(jīng)知道了“5”這個(gè)密鑰。
以后,甲和乙就用“5”這個(gè)密鑰進(jìn)行對稱(chēng)加密的數據傳輸。
第二次通訊時(shí),甲要傳遞“6”,只要5*6=30,傳給乙30這個(gè)數字,乙再用30/5得到6即可。
第一次用非對稱(chēng)加密傳遞密鑰,第二次之后用對稱(chēng)加密進(jìn)行通訊加密,安全性有了,效率也有了。
可能熟悉的同學(xué)已經(jīng)知道了,對,SSLssl/' target='_blank'>證書(shū)就是這么干的!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站