安全加密演演算法體系—注重思想,不關注具體演演算法
在網際網路上,我們通過網路互相傳遞資訊,那麼在傳遞資訊的過程中,我們的資料真的是安全的嗎?我們在通過網路傳遞訊息時,我們的訊息是否會被人監聽,是否會被人攔截並篡改,我們都不得而知,那麼我們是否能夠某種加密方式能夠保障我們的資料可以安全的傳遞給對方
相傳古羅馬皇帝凱撒在打仗時曾經使用過以下方法加密軍事情報
倘若我的軍事情報內容是「attack」,那麼我為了安全起見將內容加密,加密過後變成了「dwwdfn」,敵軍就算得到了這個情報,也不知道這個是什麼意思,因為他們不知道如何將這串字串解密,但是自己人很快就可以將已經加密的情報還原成「attack」,具體過程如下:
上述例子我們 很容易肉眼可以觀察出key=3,func1的作用是將原文每個字元都向後移動3位,func2的作用是將輸入的字串每個字元都向前移動3位,這樣就實現了簡單的加密和解密。在加密和解密的過程中,我們使用的key都等於3,,在這種情況下,加密的金鑰和解密的金鑰相同,我們稱其為對稱加密。很好理解地,如果加密使用的key=3,解密使用的key=4,相信是不能將密文還原回去的。我們這邊暫且將{func1,func2}叫為「凱撒演演算法」,傳送方和接受方事先商定好使用該演演算法進行通訊,即加密使用func1,解密使用func2。
那麼對稱加密有什麼缺點嗎?放在現在網際網路的環境來講,缺點主要有兩個。第一:在網際網路上面金鑰如何傳給對方,傳送方總不可能大老遠坐車把金鑰給接受方送過去吧。如果在網路上傳輸金鑰,很有可能會被人截獲,那麼我們發的資訊被別人也可以閱讀。第二:如何確保傳送方的身份呢,萬一是別人冒充傳送方給你傳送的訊息,你也無法辨認這個傳送方地真實身份。
非對稱加密特點:傳送方和接受方都有自己的公鑰和私鑰,同一個人的公鑰只能是自己的私鑰解開,同一個人的私鑰只能是自己的公鑰解開
考慮以下兩種情況:
1.傳送方使用自己的私鑰加密明文,接著傳送給接受方。
該情況下:資訊所有人都可以接受,因為所有人都可以拿著傳送方的公鑰來進行解密。這樣操作,是不能保證資料安全性的,但是非常重要的一點是,這樣可以驗證傳送方的身份。理由:傳送方的私鑰只能由傳送方的公鑰解,如果解密成功,就說明資訊是傳送方的私鑰加密的,並且傳送方的私鑰在理論上只有傳送方擁有,那就說明這個資訊的的確確是是傳送方送來的。這起到了身份驗證的作用(數位簽章)
2。明文使用接受方的公鑰加密,接受方使用自己的私鑰解密。
該情況下:只有接受方可以解密密文,這起到了資料加密的效果
現在模擬A和B通訊,設A的公私鑰分別為public_A,private_A,B的公私鑰分別為public_B,private_B,待傳送的內容為message
非對稱演演算法雖然安全,但是演演算法時間成本太大 ,特別針對大檔案解密,解密非常吃力,上述的例子中還使用了兩次的公私鑰加解密,實為不妥當;另外網路中可能由於傳輸不穩定,導致檔案部分損壞也是有可能的,那麼資料又是有問題的。
單向雜湊特點:
1.任意長度輸入,固定長度輸出
2.雪崩效應(修改一點點,輸出的結果【叫做摘要】會發生巨大的改變);資料一樣,hash結果一樣
3.只能加密,不能解密