密碼學如何入門,從什麼方向開始,能推薦書?

我是大學生,應用數學系,基礎不太好。密碼學主要運用的是什麼方面的知識呢,什麼樣的思維。我想嘗試參加中國大學生密碼學競賽。應該從哪裡入門,求推薦書。


謝邀。

我不了解競賽的內容,無法準確回答。如果是對密碼學科感興趣,那麼我可以提一點建議。

我個人認為,即便將來是想做更偏安全的應用密碼學方向,對於現代密碼學的理論基礎有一個透徹的了解都是不無裨益甚至是不可或缺的。這裡有一本好書和一門非常好的MOOC課程。

1.Introduction to Modern Cryptography (2nd edition) by Jonathan Katz and Yehuda Lindell (Introduction to Modern Cryptography)。第一版好像有中文翻譯本 現代密碼學 (豆瓣)。

2. Dan Boneh 的在線課程 Cryptography I | Coursera。他自己網頁上也有一個備份(Online Cryptography Course)。可能需要些手段來收看you tu be 視頻。

至於數學基礎或者先修課,我覺得組合、代數等內容一般國內大學離散數學的課程應該就足夠了。相對可能需要額外下點功夫的地方是概率論和計算理論,尤其是概率論的思維。

- 概率論的書比較多。這裡給一個非常精鍊的課件(https://people.eecs.berkeley.edu/~luca/cs276/notesprob.pdf )。歡迎大家補充推薦。

- 計算理論的經典教材自然是來自Sipser(Introduction to the Theory of Computation)。我在網上隨便找了個課程的視頻,應該還不錯(Theory of Computation)。


認識一下Bob和Alice

(此答案為抖機靈


樓主目標就是參加全國密碼技術競賽的話,那這個問題就比較好回答。

大一的話,幾本書,第一個是信息安全和密碼學入門的書籍,包括但不限於:

1. 密碼編碼學與網路安全-原理與實踐 (William Stallings)

2. 信息安全數學基礎(陳恭亮)

3. 現代密碼學(第三版)(楊波)

4. 現代密碼理論與實踐 (Wenbo Mao)

5. Introduction to Modern Cryptography (Jonathan Katz and Yehuda Lindell)

6. 編程語言的相關書籍(C, JAVA等任意一門即可)

7. 拿C或C++舉例,還需要支持密碼演算法的第三方庫。

以上七個材料,不需要每本都非常非常精讀,但是需要

1. 入門密碼學,這是能夠通過初賽的基礎。

2. 把與你準備參賽的題目相關的核心內容搞明白,這是後面做成品的基礎。

參加中國密碼學會組織的全國密碼技術競賽的話,比賽分初賽、複賽和決賽,初賽是答題,基礎題。複賽為參賽作品評選,決賽是講自己的參賽作品評委現場打分。參賽作品有兩種,一種是組委會指定題目,另一種是自選題目。下面分別詳細說這兩類:

組委會指定題目:拿我參加的16年的競賽來說,組委會指定題目主要特點有兩個,第一個是使用國家的密碼演算法標準(如SMS4等,國家商用密碼管理局處規定的)來開發一個安全的系統,核心是要用國產的密碼演算法;第二個是這個比賽一部分是由工業界資助支持的,企業會根據實際需求指定一些系統作為題目,要求參賽者開發,便於後續產業化。我個人感覺實現組委會指定題目是很佔便宜的,但是相對難一些,主要是因為組委會指定的題目多數是沒有現成開發好的原型系統,從很實用的角度出發,需要考慮的東西相對較多,其實某種意義上我覺得這種系統更像是在為需要的企業做工作。不過相應地,這類題目實現好,最後評比的得分會相對高。

自選題目:自選題目主要是團隊自己找一個題目,然後開發出來一個原型系統,有點類似於做個應用開發的本科畢業設計。這類題目我的經驗是找當前較為前沿的研究方向,然後照這個方向近3年頂級會議或期刊的文章,實現這個文章中所提的方案。

我覺得自選題目的靈活性較大,我自己參賽時,開發的是我自己已經發表的文章中所提的一個方案,但是有一部分參賽團隊用的是他人文章中提的方案,這個對評分來說沒有影響。

我參賽的主要目的還是支持學會工作,並且自己的工作重心也不在這個比賽,但是這個比賽對本科生來說,是個很好的鍛煉機會,尤其是你這樣學數學的同學,可以培養「工科思維」。我認為的「工科思維」是以解決問題為導向的一種實用主義思維,和「理科思維」 有較大差距。

因為時間和精力投入的都不夠,所以得了優勝獎,不過除了這點以外,還有些小的教訓。因為這個比賽的名稱是「全國密碼技術競賽」,我的理解是「密碼技術」為重點,而可證明安全技術是「密碼技術」的核心,是密碼學從技術或藝術變成科學的根基,同時,我認為一個密碼協議或方案只要能設計出來,實現它比證明它的安全性要容易的多。

基於此,決賽現場只有15分鐘的時間,我著重講了我們工作的motivation,方案的構建和安全性證明,因為實現都是使用現有的密碼庫(MIRACL),我感覺這方面沒什麼技術難度,所以沒有講怎麼實現的,直接演示了一遍系統。但是有兩個評委給了很negative的意見:

第一個評委說,本次比賽不接受論文投稿,那麼你的motivation、安全證明就不算參賽的工作。這樣一來,我們的決賽工作相當於就只演示了一下我們的系統...

第二個評委很有意思,問了我們一個問題,說你們做的這個東西國內也有很多人在做,到底能不能真正用上?這個問題其實很難回答,因為一個系統能不能用,是要看這個應用場景到底適不適用這個系統,舉個很簡單的例子,用數字簽名去保證數據機密性,明顯就不能用。但是我在跟這個評委解釋我們系統的應用場景時,評委將我打斷了,就問我能還是不能,我當然要說能,這個評委說:「啊,我問過國內很多高校的老師和同學,你是第一個說能用的。」這個表態就很有意思了,「Proofs of Retrievability (PoR)」和「Provable Data Possession (PDP)」這倆技術我倒也是第一次聽說不能用的。

有這倆意見打底,優勝獎倒也不意外了。所以我建議你在參賽時,不要講理論比較深的東西,評委們不care,公司的人不一定懂,里外不討好。也是通過這次參賽,我才感覺到這個競賽只是「使用密碼演算法開發系統」競賽,跟「密碼技術」這塊,有關係,但是關係多大,自己體會啊~~~~~~~~~~

密碼、安全是個很有意思的方向,對於學數學的同學來說,做這個方向優勢非常明顯,劣勢也很明顯,一點點希望,以後你如果做應用,千萬別覺得理論的東西高高在上不接地氣,所以不實用;如果你以後做理論,也千萬別覺得開發系統,做應用的沒有理論深度太簡單。其實做理論的和做應用是相輔相成的,沒有高低貴賤之分!

祝你好運~~~~~


先來個小科普看著

https://www.crypto101.io


先看看 Bruce Schneier的《應用密碼學:協議、演算法與C源程序》。


Coursera

  • Cryptography I | Coursera
  • Cryptography II | Coursera
  • Applied Cryptography | Coursera
  • Introduction to Applied Cryptography | Coursera
  • Cybersecurity | Coursera

我的知乎文章會不定期更新

  • leon的文章


推薦個課程給你 《密碼學海外公開課集錦 》 通過這一系列的視頻,你會發現密碼學不再枯燥,你可以像《模仿遊戲》里一樣用密碼錶白,也可以用密碼學理論捍衛自己的郵箱免收偷窺。


推薦本小日本寫的入門書《圖解密碼技術(日)結城浩(著)》


Introduction to Modern Cryptography


歡迎報考西安電子科技大學的研究生的密碼學專業


推薦閱讀:

有什麼優秀的有關密碼學的書籍?
為什麼不能計算兩次哈希,以及在什麼情況下不能計算兩次哈希?
參加CCBC 併到達終點是什麼感受?
為什麼CTR模式不是CCA安全的?
十二宮殺手的密碼為何至今無人破譯,難在哪?

TAG:應用數學 | 數學建模 | 密碼學 | 信息安全和密碼學 |