引入:
最近專案組用到了一些密碼學相關的知識,雖然這些話題我幾年前就很熟悉了,並且還經歷過很多經典演算法破解的新聞,背景,細節,但是這裡我還是希望炒下冷飯,方便以後直接拿來用。其實密碼學這個話題非常重要,如果大家經常看諜戰劇,尤其是牛小峰主演的諸多諜戰劇,就不難發現密碼學其實很重要,而且密碼/密碼本/發報機經常是諜報人員嘴上說最多的東西,也是敵我雙方爭奪的重點。本文主要講密碼學中的經典概念,我自己用visio畫了一些圖,以方便讀者理解
1.現代密碼學設計的基本原則-科克霍夫原則(資料的安全基於金鑰而不是演算法的保密)
這個原則是有道理的,因為演算法是乙個活的東西,它總是在不斷的進步中,如果演算法保密了,那麼就缺少了對於演算法的研究,從而沒辦法去更新或者設計更好的演算法了。從歷史上來看,以前紅極一時的許多演算法都被破解,然後被更可靠的演算法所替代。所以,開放演算法,對於整個密碼學的發展是有好處的。對於密碼的使用者來說,如果演算法公開了,還可以讓專家去評審演算法,從而杜絕演算法設計者故意在其演算法中「開後門」。
2.從密碼學的加密方式上看,密碼學分為兩大類,單向加密和雙向加密。雙向加密又分為兩種:一種是對稱加密,一種是非對稱加密。如何去理解呢?
單向表示只有明文的加密過程,不用去處理密文。雙向表示不僅有明文的加密過程,而且在適當時候還會對密文解密從而還原明文。
對稱和非對稱,其研究的過程都是加密和解密。如果加密金鑰和解密金鑰是同乙個,那麼這算對稱,如果加密金鑰和解密金鑰不是同乙個,那麼算非對稱。
3.單向加密,對稱加密,非對稱加密的典型的演算法。
加密方式
主要使用場合
典型演算法
單向加密
校驗訊息的完整性
md5,sha,mac
對稱加密
用於資料儲存的加密
des,aes
非對稱加密
用於資料傳輸的加密
rsa,dsa,dh
4.加密方式的理解示意圖(為了方便區分和理解,我所有訊息傳送者以及動作都用藍色表示,接收者和動作都用黃色表示):
對於單向加密:
對於對稱加密:
對於非對稱加密:
特別注意:公鑰加密的內容必須私鑰解密,私鑰加密的內容必須公鑰解密。
密碼學知識
一 非對稱加解密 如果用公鑰加密資料就必須用私鑰解密,如果用私鑰加密則必須用公鑰解密,否則解密將不會成功。公鑰 私鑰對是唯一的,但是我們可以建立無陣列公鑰 私鑰對。對稱加密使用同乙個金鑰,不同的演算法 非對稱 加密使用不同的金鑰,同一套演算法。所以我們可以理解為所謂對稱,是針對金鑰而言的。私鑰與公鑰...
密碼學 密碼學基礎
密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...
密碼學基礎知識
對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密 數字摘要 數字簽名 數字證書 ssl https等這些安全領域內的技術進行一番簡要的介紹,解釋他們之間的...