要理解ssl先要知道一些加密演算法的常識.
加密演算法很容易理解啦,就是把明文變**家看不懂的東西,然後送給自己想要的送到的地方,接收方用配套的解密演算法又把密文解開成明文,這樣就不怕在路世上如果密文給人家截獲而洩密。
加 密演算法有倆大類,第一種是不基於key的,舉個簡單的例子,我要加密"fordesign"這麼一串字元,就把每個字元都變成它的後乙個字元,那麼就 是"gpseftjhm"了,這樣的東西人家當然看不明白,接收方用相反的方法就可以得到原文。當然這只是個例子,現在應該沒人用這麼搞笑的加密演算法了 吧。
不基於key的加密演算法好象一直用到了計算機出現。我記得古中**事機密都是用這種方式加密的。打戰的時候好象軍隊那些電報員也要帶著密碼本,也應該是用這種方式加密的。這種演算法的安全性以保持演算法的保密為前提。
這種加密演算法的缺點太明顯了,就是一旦你的加密演算法給人家知道,就肯定掛。日本中途島慘敗好象就是密碼給老公尺破了。設計一種演算法是很麻煩的,一旦給人破了就沒用了,這也忑浪費。
我 們現在使用的加密演算法一般是基於key的,也就是說在加密過程中需要乙個key,用這個key來對明文進行加密。這樣的演算法即使一次被破,下次改個 key,還可以繼續用。key是乙個什麼東西呢?隨便你,可以是乙個隨機產生的數字,或者乙個單詞,啥都行,只要你用的演算法認為你選來做key的那玩意合 法就行。
這樣的演算法最重要的是:其安全性取決於key,一般來說取決於key的長度。也就是說應該保證人家在知道這個演算法而不知道 key的情況下,破解也相當困難。其實現在常用的基於key的加密演算法在網路上都可以找到,很多革命同志(都是老外)都在想辦法破解基於key的加密演算法 又包括倆類:對稱加密和不對稱加密。對稱加密指的是雙方使用完全相同的key, 最常見的是des. des3, rc4等。對稱加密演算法的原理很容易理解,通訊一方用kek加密明文,另一方收到之後用同樣的key來解密就可以得到明文。
不對稱加密指雙方用不同的key加密和解密明文,通訊雙方都要有自己的公共金鑰和私有金鑰。 舉個例子比較容易理解, 我們們假設通訊雙方分別是a, b.
a, 擁有 key_a1, key_a2, 其中key_a1是a的私有金鑰,key_a2是a的公共金鑰。
b, 擁有key_b1, key_b2, 其中key_b1是b的私有金鑰,key_b2是b的公共金鑰。
公共金鑰和私有金鑰的特點是,經過其中任何一把加密過的明文,只能用另外一把才能夠解開。也就是說經過key_a1加密過的明文,只有key_a2才能夠解密,反之亦然。
通訊過程如下:
a-------->key_a2------------>b
a<--------key_b2<------------a
這個過程叫做公共金鑰交換,老外管這叫key exchange.
之後a和b就分別用對方的公共金鑰加密,用自己的私有金鑰解密。
一般公共金鑰是要發布出去的,然後你通過自己的私有金鑰加密明文,人家用你的公共金鑰解密,如果能解開,那麼說明你是加密人,這就是ssl使用的驗證機制。
常用的不對稱加密一般有rsa, dsa, dh等。我們一般使用rsa.
數字簽名也是不對稱加密演算法的乙個重要應用,理解它對於理解ssl很重要的,放在這裡一起介紹一下。
籤 名是什麼大家都很熟悉吧?證明該東西是你寫的,是你發布的,你就用簽名搞定。看看那些重要檔案都要頭頭簽名。數字簽名就是數位化的簽名了。記得公用金鑰和 私有金鑰的特徵嗎?只有你乙個人有你自己的私有金鑰。而你的公用金鑰是其他人都知道的 了。那麼你在寫完一封郵件之後,用自己的私有金鑰加密自己的名字, 接收人用你的公共金鑰解開一看,哦,是你發的。這就是你的數字簽名過程了。
上面的解釋是很簡化的了,其實數字簽名比這個複雜多了,但我們沒有了解的必要,知道數字簽名是這麼一回事就可以了。
還 有一種我們需要知道的加密演算法,其實我不覺得那是加密演算法 ,應該叫雜湊演算法,英文是message digest, 是用來把任何長度的一串明文以一定規則變成固定長度的一串字串。它在ssl中的作用也很重要,以後會慢慢提及的。一般使用的是md5, sha. base64不是加密演算法,但也是ssl經常使用的一種演算法,它是編碼方式,用來把asc碼 和二進位製碼轉來轉去的。
具體的加密解密過程我們不需要了解,因為ssl根本不關心。但了解加密演算法的一些基本原理是必要的,否則很難理解ssl。
對加密演算法的細節有興趣的同志,可以去網路上找這些加密演算法的原理的文章和實現的程式來研究,不過先學數論吧。不懂數論看那玩意還是一頭霧水。
SSL證書加密演算法
ssl證書是對http協議進行加密的,現代密碼技術分為兩類 對稱加密演算法 秘密鑰匙加密 非對稱加密演算法 公開金鑰加密 ssl證書的加密技術是橢圓曲線密碼編碼學 用來加密敏感資料等資訊,常用演算法有des 3des,aes des3des aesdata encryption standard t...
加密演算法簡介
3 des data encryption standard 對稱加密 解密 資料加密標準演算法,和base64最明顯的區別就是有乙個工作金鑰,該金鑰即用於加密 也用於解密,並且要求金鑰是乙個長度至少大於8位的字串。二 非對稱加密 1 rsa rsa加密演算法是一種典型的非對稱加密演算法,它基於大數...
RSA加密演算法簡介
rsa加密演算法簡介 如果你問我,哪一種演算法最重要?我可能會回答 公鑰加密演算法 因為它是計算機通訊安全的基石,保證了加密資料不會被破解。你可以想象一下,信用卡交易被破解的後果。進入正題之前,我先簡單介紹一下,什麼是 公鑰加密演算法 一 一點歷史 1976年以前,所有的加密方法都是同一種模式 1 ...