padlocks

課程資料

密碼學概論

開課:陳榮傑老師

修課年度:100資工系

探討加密背後的數學原理,如何在第三方可以攔截或假造訊息的情況下,加密訊息以保證僅有信任的人可以得知真正的內容。也會討論延伸的議題如 digital signature, secret sharing 等等。一些相關議題也可參考:〈密碼學概論〉

上課方式

老師會用自己的投影片,配合 Windows 筆記本的手寫講解,再加上課本頁面。平常不點名,只有一次要簽名,不過有事先提醒。由於要實做加密演算法,可能要稍微寫過 C/C++ 程式會較好。另外,若有學過離散數學的話,對 RSA中國餘式定理等等原理也會較熟悉。據說網路安全和電腦安全概論也和此課程有些重疊。老師也常向我們推薦下學期開的橢圓曲線密碼學,是這堂課中部份課題的延伸。這幾門課都是資安學程的課程。

評分方式

評分方式為:

  • Homeworks 25%
  • Midterm 35%
  • Final Exam 40%

作業主要分兩種,一種是紙筆作業,主要是一些計算題,考試大部分的題型都是作業習題,只有改動數字,所以作業值得反覆練習。另一種作業則是程式作業,實做各種加密演算法,透過 E3 繳交之後,助教會逕行批改,不過要一直到期末考結束後才知道自己的分數。似乎有不少人的程式作業分數因不明的原因偏低,不過向助教反應後都有提昇。

據稱每年的程式作業都會選擇不一樣的加密法,不過加密法的演算法老師都會給,這學期實做了 RC4 以及 SHA-1。筆者也把自己的程式碼釋出於 github,可以當作參考:100-crypto

考試方面,有一個期中考和一個期末考。總分都會超過 100 分,題目主要出自習題及考古題,不過也會有新的題目。期末考提前一個星期考完,所以最後一個星期都沒有課。

結語

老師說他本來沒有要教橢圓曲線密碼學,不過後來和助教討論之後,發現這學期同學的成績似乎比較好,所以最後就教了(笑)。筆者比較過兩個學期的期末成績,這學期的高分群真的比較多。

我也研究了一下老師使用的教科書,在上學期使用的是《An Introduction to Mathematical Cryptography》,這學期使用的則是《Cryptography, An Introduction》。後者省略了許多細節,而且完全沒有練習題。前者對數學背景寫得比較詳細,筆者多以那本配合老師的講義使用。不過其實兩本書的內容有些是沒有重疊的。

在課程大綱上特別標記了前者在圖書館有電子書下載,後者則是可自由下載的開放電子書。老師似乎是希望同學可以不用花那麼多錢買教科書。筆者剛開始為了能在上課時參考課本,到影印店影印了課本,不過到後半學期就幾乎沒看,而且整本書有教的部份其實也不多,現在覺得其實沒有影印的必要性。

作業習題和考古題得多做,考試題型大多數都從裡頭出來。

筆者一開始先是閱讀《An Introduction to Mathematical Cryptography》來打底,在上課時一開始是配合影印本,邊聽課、邊查閱資料。期中之後的數個星期,看完了《Intro. to Math Cryptography》,就比較少在課後複習,尤其老師恰巧一直沒派手寫作業,又覺期中這樣有很多考古題的考試型態尚可臨時抱佛腳,或許因此稍微懈怠。課程進入橢圓曲線後,上課便以老師的投影片為主,不再閱讀課本。到了期末時,其實讀起來覺得有點趕,現在想來應該要提前複習投影片才是。