怎樣學習密碼學?
如何從零精通?
題主你真的要學密碼學么??我現在碩博連讀的方向就是密碼學,想想都是淚啊。精通密碼學是不可能,因為是學不完的。密碼學總體上可以分為密碼編碼學和密碼分析學(也就是破解)。這兩門需要的基礎都一樣,主要是數論和近世代數。但我不建議題主一開始就學這兩門課。題主可以先弄本,密碼學的書,搞懂裡面各種演算法。接下來就可以邊看演算法邊看數論近世代數,這是探討它們的數學原理。然後是學一門編程語言,嘗試實現每一種演算法,以及更有效率的實現方法。實際上就是密碼學的理論方向和工程方向,理論方向主要就是數學,數論近世代數還有很多世界難題呢,工程方向也要學數學,不過不要以為懂算了你就能寫出來,就像你知道S盒的設計是為了擴散和混沌,但是你知道S盒為什麼要設計成那幾個數據呢,沒幾個人懂的。密碼破解也不是所謂的網上的破解,這裡的破解是原理上的破解,主要是數學上的破解,比如王小雲教授用比特追蹤法破解了SHA,這不是暴力破解能做到的。所以學密碼學最重要的堅持和興趣,而且密碼學有可能你研究一輩子也破解不了一個演算法,所以你做好準備了么?
看「精通」的標準是什麼……另外看「零」到什麼程度……
以下回答僅針對密碼學本身,不針對信息安全這個大方向。
如果是高中基礎,先學高數、概率論數理統計、離散數學(最好啃掉形式語言與自動機和計算複雜性理論,否則後面肯定得補),最好會寫點代碼(Matlab也行,SAGE也行),然後啃密碼學入門書籍,到能看懂會議文章的程度怎麼地也得2年(每天6-8小時學習)。能做出點自己的東西,呃,通常得積累到等同於信息安全相關專業的碩士畢業的程度,時間因個人才能而定。從工科大三的基礎開始算的話,半年啃完Introduction to Cryptography, 再花半年到一年啃完諸如Zero-Knowledge-Proof, BR-Model,IBE的東西的話,就能看懂不少新的成果和經典的文章了。接下來得接觸Cryptanalysis的東西,這時候,就必須補初等數論(包括橢圓曲線)、群論,否則針對加密演算法的數學攻擊那看得是一頭霧水。推薦公開課:
- Cryptography I Stanford, 偏理論,https://www.coursera.org/course/crypto
- Cryptography Maryland, https://www.coursera.org/course/cryptography推薦書籍:
- Understanding Cryptography,Christof Paar大作,極力推薦- Lecture Notes on Cryptography個人覺得能踏踏實實看完一個公開課系列和一本書,應該就有入門基礎了。加油。
近世代數和數論的基本功先打好, 尤其是有限域,
Introduction to modern Cryptography, 再根據相關密碼體系自己寫下演算法,再試著攻擊
作為一個密碼學碩士生,我簡單的談一談吧。
現代密碼學所涉及的學科包括:資訊理論、概率論、數論、計算複雜性理論、近世代數、離散數學、代數幾何學和數字邏輯等。額,有點廢話。
大學還是要先掌握好數學分析,線性代數,概率論的知識,尤其是概率論;其次,需要掌握一門編程語言,還是推薦C語言,對數據結構也要掌握,寫代碼說不定哪天就用上了;然後,掌握一些電路、模電、數電的知識,HDL語言也要掌握,在實現硬體流密碼時,還有真隨機數的設計這些東西會用的著。最後,推薦掌握資訊理論和通信理論的一些知識,尤其是資訊理論,這玩意兒在進行熵值分析的時候很有用。
研究生階段,密碼學的基礎還是三大塊:數學、計算機、密碼學。
數學:數論,近世代數(抽象代數、有限域、代數學。。。。為啥這麼多名字,因為內容多、抽象)
計算機:離散數學,可計算性和計算複雜性
密碼學:古典密碼和現代密碼、密碼編碼學和密碼分析學(也就是破解)、私鑰密碼和公鑰密碼。。。。(流密碼,分組密碼,公鑰密碼,密鑰分配與管理,消息認證和哈希函數,數字簽名和認證協議,密碼協議、可證明安全與安全多方計算,網路認證與加密。。。。。媽呀,太多了)
密碼學,覺得最重要的還是數學基礎,比較適合數學專業的學生來學習。密碼學研究公鑰的要多一些,研究的東西應用也相應的較多,現在火的區塊鏈和比特幣都是公鑰密碼的應用罷了,當然,遠遠不止這些。。。
密碼學,一群天才玩的玩意!!!!!渣渣玩不轉!
推薦閱讀:
※為什麼看了很多書,但是真正得到的不多?
※「數學思想」到底有哪幾大塊?怎麼去自學學到這種思想呢?
※如何在iPad mini2和筆記本電腦中選擇?
※學霸們有拖延症嗎?
※應屆生剛入職擔保公司,如何學習去拉業務?