1. 程式人生 > >安全科普:理解SSL(https)中的對稱加密與非對稱加密

安全科普:理解SSL(https)中的對稱加密與非對稱加密

轉:http://www.freebuf.com/articles/system/37624.html

今天剛好為站點的後臺弄了下https,就來分享我瞭解的吧。

密碼學最早可以追溯到古希臘羅馬時代,那時的加密方法很簡單:替換字母。

早期的密碼學:

古希臘人用一種叫  的工具加密。更快的工具是 —:只是把羊皮紙卷在一根圓木上,寫下資訊,羊皮紙展開後,這些資訊就加密完成了。

雖然很容易被解密,但它確實是第一個在現實中應用加密的例子

Julius Caesar 用了另外一個類似的加密方法:把字母往右或往左移動幾位;此法稱為. 比如“GEEK” 加密後就是“JHHN”.

Plain:  ABCDEFGHIJKLMNOPQRSTUVWXYZ

Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC

因為只有資訊接受者知道如何解密,對其他人來說,那就是一段無意義的資訊了。還有像如下圖的加密方法:每個字母放在座標系裡


這樣 “G”就是 “23”,  “GEEK”就是 “23 31 31 43”.

Enigma Machine

加密演算法

加密演算法有很多種,區別和衡量他們的方法就是看他們是否容易被破解的程度和加密的速度如下圖可見AES 是最快的強加密演算法


當然有更快或比較慢的演算法了,他們都有用處。如果你只是加密一段資訊,也不是經常需要,那你可以用最強的加密演算法,甚至也可以用不同的演算法加密兩次。如果想要加密速度快點,那就用AES.

加密型別

之前說過的加密演算法絕大部分都屬於以下兩種加密型別之一:

  • 對稱加密:加密解密用的是同樣的“鑰匙”

  • 非對稱加密:加密解密用的是不同的“鑰匙”

對稱加密

用郵局的例子來解釋下對稱加密
Alice 在盒子裡放有資訊,盒子上有掛鎖,她有鑰匙。通過郵局她把這個盒子寄給Bob。Bob收到盒子後,用相同的鑰匙開啟盒子(鑰匙之前就得到了,可能是Alice面對面給他的)。然後Bob可以用同樣的方法回覆。


對稱加密可以分為兩種:一種是一個一個加密資訊,另一種是分塊加密資訊,通常分為64位加密為一塊。塊, , AES (), , CAST5RC4TDES, and IDEA.
非對稱加密
Bob和Alice各有自己的盒子。Alice要跟Bob祕密通訊,她先讓Bob把開著的盒子通過郵局發給她。Alice拿到盒子後放入資訊鎖上,然後發給Bob。Bob就可以用他自己的鑰匙打開了。回覆的話就用同樣的方法。

此法最大的好處是你不必得到對方的“鑰匙”,以防別人在鑰匙傳送過程中偷偷複製鑰匙,進而竊取資訊。而且就算Bob的鑰匙被竊取複製了,Alice跟別人的通訊也是安全的,因為Alice用的是別人的鑰匙。
非對稱演算法在加密和解密時用的是不同的鑰匙。資訊接受者有兩把鑰匙:一把“公匙”,一把“私匙”。公匙是給資訊傳送者用來加密的,私匙是自己用來解密的這樣最大的好處是:不必通過不安全的渠道傳送私密的東西。公匙本來就是給別人用的,不用藏好。你的私匙在你產生私匙的電腦裡儲存著。

網站如何通過加密和使用者安全通訊
SSL () 是用來保障你的瀏覽器和網站伺服器之間安全通訊,免受網路“中間人”竊取資訊。SSL原理很簡單。當你的瀏覽器向伺服器請求一個安全的網頁(通常是 https://)

伺服器就把它的證書和公匙發回來

瀏覽器檢查證書是不是由可以信賴的機構頒發的,確認證書有效和此證書是此網站的。

使用公鑰加密了一個隨機對稱金鑰,包括加密的URL一起傳送到伺服器

伺服器用自己的私匙解密了你傳送的鑰匙。然後用這把對稱加密的鑰匙給你請求的URL連結解密。

伺服器用你發的對稱鑰匙給你請求的網頁加密。你也有相同的鑰匙就可以解密發回來的網頁了