標籤:

白話解釋 對稱加密演算法 VS 非對稱加密演算法

對稱加密演算法(Symmetric-keynalgorithm)和非對稱加密演算法(asymmetric key encryption algorithm)只不過就是密碼學(encryption)中的兩種解密演算法罷了,什麼是演算法,你就可以理解成為是一種規則吧,這種規則可以將信息從一種形式轉變成另一種形式,不懂沒關係,繼續往下看。

對稱加密

首先,讓我們先從一個情景開始講起,想當初我們在初中,高中,甚至於大學,每次考試都有人在試圖如何更加隱蔽的作弊!那大家都想了什麼方法呢?比如張三學習比李四好,李四就想在考試的時候讓張三「幫助」一下自己,當然,他們倆不可能像我們平常對話一樣說,第一題選A,第二題選B等等,為什麼?因為監考老師明白他倆在談論什麼,也就是說這種溝通交流方式屬於「明文」,所以李四就想:「我需要發明一種,只有我和張三明白的交流方式」,那李四做了什麼呢?恩,李四去找張三說:「當我連續咳嗽三聲的時候你看我,然後如果我摸了下左耳朵,說明你可以開始給我傳答案了,如果沒反應,那說明我真的是在咳嗽。。。。」,n然後,怎麼傳答案呢?很簡單,「你摸左耳朵代表A, 摸右耳朵代表B,左手放下代表C,右手放下代表D」,好了,這就是他們的「演算法(規則)」,將信息的一種形式(A,B,C,D),這裡我們稱為「明文」,轉換成了另一種形式(摸左耳朵,摸右耳朵,放左手,放右手),這裡稱為「密文」,經過這種轉換,很顯然監考老師不會明白這些「密文」,這樣,張三和李四就通過「密文」的形式實現了信息的交換。

其實,密碼學不就是為了人們更好的加密傳輸么?有很多學者,科學家成年累月的工作,為的就是改進或者發明更好的加密演算法,讓這些加密演算法加密的文本難以破解,達到數據安全傳輸的目的。

OK,回歸正題,上面這個「作弊」的例子,其實就是一種對稱加密演算法!好了,我們來看一下對稱加密演算法的定義(來源:wikipedia):

對稱密鑰加密(英語:Symmetric-keynalgorithm)又稱為對稱加密、私鑰加密、共享密鑰加密,是密碼學中的一類加密演算法。這類演算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單地相互推算的密鑰。實務上,這組密鑰成為在兩個或多個成員間的共同秘密,以便維持專屬的通訊聯繫。與公開密鑰加密相比,要求雙方取得相同的密鑰是對稱密鑰加密的主要缺點之一

這裡我想說一點的是,wikipedia的把Symmetric-keynalgorithm中文翻譯是n對稱密鑰加密,我不想把這個key翻譯成密鑰,因為key僅僅是一個「鑰」,這裡翻譯成密鑰會讓大家對後面所說的「公鑰」,「密鑰」,「私鑰」等等的概念弄混,好了,所以我還是比較喜歡稱之為「對稱加密演算法」,而後面說又稱「私鑰」加密,共享「密鑰」,這裡,「私鑰」就等於「密鑰」,沒有任何區別,英文是「private key」。

ok,我們將定義結合我們前面的例子對應一下,「這類演算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單地相互推算的密鑰」,其實在我們例子中,密鑰就是「將(A,B,C,D)轉換成(摸左耳朵,摸右耳朵,放左手,放右手)」這麼一個規則。「實務上,這組密鑰成為在兩個或多個成員間的共同秘密,以便維持專屬的通訊聯繫。」n這句話很好理解了吧,密鑰是張三和李四間共同的秘密!只有他倆事先知道。

所以,為什麼叫對稱加密呢,你可以這麼理解,一方通過密鑰將信息加密後,把密文傳給另一方,另一方通過這個相同的密鑰將密文解密,轉換成可以理解的明文。他們之間的關係如下:

明文 <-> 密鑰 <-> 密文

這樣看,是不是感覺對稱比較好理解了。ok,那麼我們現在有哪些現成的對稱加密演算法可以用么?當然有:

常見的對稱加密演算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

想深入了解的同學,可以自行查閱資料了。

非對稱加密

我們再來說說非對稱加密,非對稱加密是一種比對稱加密更加優秀的加密演算法,當然演算法有利有弊,對稱加密速度快但是安全性相對於非對稱加密來說低,為什麼呢,你想啊,要想使用對稱加密,那麼分享信息的各個個體之間都需要分享這個密鑰,比如你們1000個人之間都使用同一個密鑰進行密文傳輸,只要其中一個人密鑰被盜竊了,那麼整體加密的信息將都被破解了。好了,那麼我們開始說說非對稱加密。

就從上面提到的這個對稱加密的缺點開始,怎麼做到即時一個人的密鑰被盜竊了,最起碼保證你給其他人發送密文不被破解。於是,人們就想出了這麼個辦法,首先,我們停止分享共同的密鑰,因為上面的bug就是來源於共享一個密鑰,那麼怎麼辦呢?每個人生成一個「私鑰-公鑰」對,這個私鑰需要每個人自行進行保護!公鑰可以隨便分享,後面詳細說,同時,生成的這個「私鑰-公鑰」對還有個強大的功能就是,使用私鑰加密的信息,只能由該私鑰對應的公鑰才能解密,使用公鑰加密的信息,只能由該公鑰對應的私鑰才能解密!

好了,比如說張三生成了他自己的一個「私鑰-公鑰」對,叫做「張三私鑰-張三公鑰」,李四生成了他自己的一個「私鑰-公鑰」對,叫做「李四私鑰-李四公鑰」,之前我們說過私鑰要每個個體自己進行保存,公鑰可以隨便分享,目的是為什麼呢?是為了加密信息!

比如,李四想給張三發送密文。

於是李四開始給張三發QQ

李四:

「hi哥們,我想給你發個密文,把你的公鑰給我發過來用用。」

張三:

「沒問題的,這是我的公鑰:nd#8yHE8eU#hb*!neb,用這個公鑰加密你的信息後給我發過來吧」

李四:

「這是我想對你說的話:n*&#@uehuu(**#eehu&$##bfeu&&」

恩?你是不是有點疑問呢?咳咳,李四這是作死的節奏?為什麼公開問公鑰?不怕被網警查水表?哈哈,非對稱解密演算法的威力就在這裡!無所謂!隨便誰截取!我們上面說了,公鑰可以隨意分發,所以即使別人截取了,也只是知道該公鑰而已,但是要是想解密使用該公鑰加密的密文!只有一個人可以辦得到!就是張三!n為什麼?李四使用張三的公鑰加密的信息,只有張三的公鑰所對應的私鑰,這裡就是「張三私鑰」,該私鑰才可以解密!所以,沒有張三私鑰的第三方即時截取了這些密文,也破解不了!或者更嚴格的說在有限時間內比如說幾千年內是暴力破解不出的!

懂了吧?所以網警們哭了,本以為想監視他們的對話,可惜一無所獲!

我們來看看非對稱加密的官方定義:

公開密鑰加密(英語:public-keyncryptography,又譯為公開密鑰加密),也稱為非對稱加密(asymmetric cryptography),一種密碼學演算法類型,在這種密碼學方法中,需要一對密鑰(其實這裡密鑰說法不好,就是「鑰」),一個是私人密鑰,另一個則是公開密鑰。這兩個密鑰是數學相關,用某用戶密鑰加密後所得的信息,只能用該用戶的解密密鑰才能解密。如果知道了其中一個,並不能計算出另外一個。因此如果公開了一對密鑰中的一個,並不會危害到另外一個的秘密性質。稱公開的密鑰為公鑰;不公開的密鑰為私鑰。

hmm。。這個定義有點繞,不過就是說,要想使用非對稱加密演算法,首先要有一對key,一個被稱為private key私鑰,一個成為public key公鑰,然後可以把你的public key分發給想給你傳密文的用戶,然後用戶使用該public key加密過得密文,只有使用你的private key才能解密,也就是說,只要你自己保存好你的private key,就能確保,別人想給你發的密文不被破解,所以你不用擔心別人的密鑰被盜,沒關係。

正因為,這種加密是單向的,所以被稱為非對稱加密演算法。

這種加密演算法應用非常廣泛,SSH,nHTTPS, TLS,電子證書,電子簽名,電子身份證等等。

這篇文章先寫到這裡,接下來我將像大家挨個介紹這些加密演算法的應用,不過我在這裡先埋個伏筆,上面我提到的李四和張三發qq,即時使用非對稱加密演算法,大家有沒有發現仍然有哪些隱患呢?

給點提示,比如說,某個網警想知道到底李四要給張三發什麼信息?網警想破解李四的密文,那麼網警有什麼辦法可以獲得李四要發的信息呢?很顯然獲得密文直接暴力破解是不可能的!

小提示,網警可以冒充張三!!!!發送給李四「網警的公鑰」,而不是「張三的公鑰」,那麼當李四收到該公鑰的時候,就不假思索的使用該公鑰加密了他的信息,然後毫不猶豫的將加密的密文發了過去,然後網警得意的笑了。

出品人:亞洲誠信


推薦閱讀:

Heartbleed漏洞是怎麼來的?
TLS完全指南(二):OpenSSL操作指南
酷站推薦 - ssllabs.com/ssl-pulse - SSL/TLS Security Scan Summary
TLS完全指南(零)
為什麼SSL證書那麼貴?

TAG:SSL |