----------------------------------主要內容的學習**為課堂所學&書籍《現代密碼學》(原書第四版,清華大學出版社,楊波編著)---------------------------------------------
密碼學的發展大致經過了三個時代。即古典密碼時期(19世紀末期之前)、近代密碼時期(20世紀初~2023年)和現代密碼時期(2023年至今),其中現代密碼學又可以由公鑰密碼學的出現分為前後兩個時期。
1.古典密碼時期:加密主要通過手工作業的方式完成,如典型的「紙條纏繞」加密,凱撒密碼等。
2.近代密碼時期:隨著兩次工業革命的進行和發展,在加密方法中,人們開始逐步使用機電技術,如轉輪機(rotor)等,使得加密、解密的過程相對於手工加密來說更加快速,同時加密方式也可以變得很複雜,如二戰中德軍使用的enigma密碼等。
3.現代密碼時期:密碼學真正成為一門科學,在加密的研究過程中,逐步發展出嚴密而又科學的準則,如kerckhoffs準則(演算法本身無需保密,關鍵只在於金鑰),shannon提出的明文密文長度一致準則等。
由於計算機技術的發展,在設計現代密碼方案時,必須要考慮到金鑰的變化量的大小,以防止計算機的算力對於密碼的窮舉攻擊,例如:
假設金鑰變化量為2128≈10128×0.301=1038.5
考查該密碼演算法的抗窮舉攻擊能力:假想為計算機速度為10億次/秒
10億=109 1年=365×24×3600=3.15×107秒
1年可以窮舉的金鑰量為: 3.15×107× 109= 3.15×1016個金鑰
所以2128個金鑰需要1038.5/ 3.15×1016≈2023年(一萬億億年)才能窮舉完,因此該密碼方案是健壯的,能夠抗窮舉攻擊。
另外還有一點,我們現在更常見的大多數密碼方案都屬於開放式密碼學,即基於kerckhoffs準則,相對於傳統將加密方法也保密的方法,這樣做的優勢在於:
(1)公開的設計承受公開的鑽研和分析,因此可能更加健壯。
(2)安全缺陷(若存在的話),廣泛的提前發現比被敵方默默發現會更好。
(3)基於演算法保密性的系統安全,會因為**逆向工程而導致嚴重威脅。相比之下,金鑰不是**的一部分,不存在逆向工程的弱點。
(4)公開設計使標準的建立成為可能。
密碼學基礎篇 密碼學的加解密
密碼簡單來說就是用不是我們所熟悉的,不能馬上識別的符號來代替的資訊。大概過程就是這樣 古典密碼學 1949年之前 主要特點 資料的安全基於演算法的保密。密碼編碼方式簡單,置換和代換。置換 把明文中的字母重新排列,字母本身不變,只是改變其位置,最簡單的置換就是把字母順序按倒敘排列。代換 就是將明文中的...
區塊鏈的密碼學基礎
1 雜湊函式的三個重要的性質 a.collision resistance 什麼是collision?當x y但h x h y 這時就稱為乙個collision。什麼是collision resistance?比方說有個x1,他的雜湊值是h x1 但我們很難找出乙個x2來,使他的h x2 h x1 ...
區塊鏈 位元幣的密碼學基礎
位元幣主要用到的密碼學基礎就是cryptographic hash function,程式設計師應該都很熟悉hash函式,這裡還是簡單介紹一下。hash函式是把任意長度的輸入通過雜湊函式或者說是hash函式轉化為固定長度的輸出的一種演算法。這個輸入區間可以無窮大,但輸出區間是固定的。比如輸入可以是 ...