理解SSL(https)中的對(duì)稱(chēng)加密與非對(duì)稱(chēng)加密
今天剛好為站點(diǎn)的后臺(tái)弄了下https,就來(lái)分享我了解的吧。
密碼學(xué)最早可以追溯到古希臘羅馬時(shí)代,那時(shí)的加密方法很簡(jiǎn)單:替換字母。
早期的密碼學(xué):
古希臘人用一種叫 Scytale 的工具加密。更快的工具是 transposition cipher—:只是把羊皮紙卷在一根圓木上,寫(xiě)下信息,羊皮紙展開(kāi)后,這些信息就加密完成了。
雖然很容易被解密,但它確實(shí)是第一個(gè)在現(xiàn)實(shí)中應(yīng)用加密的例子
Julius Caesar 用了另外一個(gè)類(lèi)似的加密方法:把字母往右或往左移動(dòng)幾位;此法稱(chēng)為Caesar’s cipher. 比如“GEEK” 加密后就是“JHHN”.
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC
因?yàn)橹挥行畔⒔邮苷咧廊绾谓饷埽瑢?duì)其他人來(lái)說(shuō),那就是一段無(wú)意義的信息了。還有像如下圖的加密方法:每個(gè)字母放在坐標(biāo)系里
這樣 “G”就是 “23”, “GEEK”就是 “23 31 31 43”.
Enigma Machine
加密算法
加密算法有很多種,區(qū)別和衡量他們的方法就是看他們是否容易被破解的程度和加密的速度如下圖可見(jiàn)AES 是最快的強(qiáng)加密算法
當(dāng)然有更快或比較慢的算法了,他們都有用處。如果你只是加密一段信息,也不是經(jīng)常需要,那你可以用最強(qiáng)的加密算法,甚至也可以用不同的算法加密兩次。如果想要加密速度快點(diǎn),那就用AES.
加密類(lèi)型
之前說(shuō)過(guò)的加密算法絕大部分都屬于以下兩種加密類(lèi)型之一:
對(duì)稱(chēng)加密:加密解密用的是同樣的“鑰匙”
非對(duì)稱(chēng)加密:加密解密用的是不同的“鑰匙”
對(duì)稱(chēng)加密
用郵局的例子來(lái)解釋下對(duì)稱(chēng)加密
Alice 在盒子里放有信息,盒子上有掛鎖,她有鑰匙。通過(guò)郵局她把這個(gè)盒子寄給Bob。Bob收到盒子后,用相同的鑰匙打開(kāi)盒子(鑰匙之前就得到了,可能是Alice面對(duì)面給他的)。然后Bob可以用同樣的方法回復(fù)。
對(duì)稱(chēng)加密可以分為兩種:一種是一個(gè)一個(gè)加密信息,另一種是分塊加密信息,通常分為64位加密為一塊。塊Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, TDES, and IDEA.
非對(duì)稱(chēng)加密
Bob和Alice各有自己的盒子。Alice要跟Bob秘密通信,她先讓Bob把開(kāi)著的盒子通過(guò)郵局發(fā)給她。Alice拿到盒子后放入信息鎖上,然后發(fā)給Bob。Bob就可以用他自己的鑰匙打開(kāi)了。回復(fù)的話(huà)就用同樣的方法。
此法最大的好處是你不必得到對(duì)方的“鑰匙”,以防別人在鑰匙發(fā)送過(guò)程中偷偷復(fù)制鑰匙,進(jìn)而竊取信息。而且就算Bob的鑰匙被竊取復(fù)制了,Alice跟別人的通信也是安全的,因?yàn)锳lice用的是別人的鑰匙。
非對(duì)稱(chēng)算法在加密和解密時(shí)用的是不同的鑰匙。信息接受者有兩把鑰匙:一把“公匙”,一把“私匙”。公匙是給信息發(fā)送者用來(lái)加密的,私匙是自己用來(lái)解密的這樣最大的好處是:不必通過(guò)不安全的渠道發(fā)送私密的東西。公匙本來(lái)就是給別人用的,不用藏好。你的私匙在你產(chǎn)生私匙的電腦里保存著。
網(wǎng)站如何通過(guò)加密和用戶(hù)安全通信
SSL (Secure Sockets Layer) 是用來(lái)保障你的瀏覽器和網(wǎng)站服務(wù)器之間安全通信,免受網(wǎng)絡(luò)“中間人”竊取信息。SSL原理很簡(jiǎn)單。當(dāng)你的瀏覽器向服務(wù)器請(qǐng)求一個(gè)安全的網(wǎng)頁(yè)(通常是 https://)
服務(wù)器就把它的證書(shū)和公匙發(fā)回來(lái)
瀏覽器檢查證書(shū)是不是由可以信賴(lài)的機(jī)構(gòu)頒發(fā)的,確認(rèn)證書(shū)有效和此證書(shū)是此網(wǎng)站的。
使用公鑰加密了一個(gè)隨機(jī)對(duì)稱(chēng)密鑰,包括加密的URL一起發(fā)送到服務(wù)器
服務(wù)器用自己的私匙解密了你發(fā)送的鑰匙。然后用這把對(duì)稱(chēng)加密的鑰匙給你請(qǐng)求的URL鏈接解密。
服務(wù)器用你發(fā)的對(duì)稱(chēng)鑰匙給你請(qǐng)求的網(wǎng)頁(yè)加密。你也有相同的鑰匙就可以解密發(fā)回來(lái)的網(wǎng)頁(yè)了
大概就這樣,翻譯不完整,原文可以看下:http://article.yeeyan.org/view/90729/174903