劉 悅,賈忠田,張 波
(濟南大學 信息科學與工程學院,山東 濟南 250022)
隨著網絡安全問題隱患日益增多,信息安全學科逐漸成為信息科學產業中一個非常重要的分支。密碼技術是信息安全的理論基礎和核心技術,并且是一個多學科交叉的技術,包含計算機、網絡、通信、電子、數論、概率統計等相關專業的內容[1]。因此,如何設計應用密碼學課程的教學內容,建設輔助性的實驗教學方案是今后需要持續研究的問題。
密碼學是一門需要有寬廣深厚的數學和電子通信理論基礎的綜合性交叉學科課程,內容包括初等數論、橢圓曲線、概率論、信息論、數理統計、隨機過程、編碼、計算復雜性等[2]。通過對國內外高校的密碼學課程教學內容設置進行調研發現,國內外高校密碼學教學核心內容的設置基本一致,包含密碼學基礎、古典密碼、分組密碼、序列密碼、公鑰密碼、哈希函數、數字簽名、密鑰管理、PKI、安全協議等知識。不同高校針對本科生開設的密碼學課程知識點略有不同,教學內容也存在部分不同,從課程名就能看出區別,如國內開設的密碼學課程名為現代密碼學、密碼學導論、現代密碼學理論與實踐、密碼學、密碼學基礎、計算機安全學等;國外開設的密碼學課程名稱為Fundamentals of Cryptography, Cryptography and Data Security,Advanced Applied Cryptography Principles of Cryptography, Cryptography and Network Security,Computer Network Security等。由于濟南大學網絡工程專業后續開設了網絡安全協議課程,因此密碼學課程中不包括安全協議內容。對于涉及應用領域多、實踐要求強的密碼學課程,合理設置其教學內容具有一定難度。
教材的合理選取是課程教學成功的關鍵之一,教材選取不當會帶來教師教學和學生學習的雙重困難。當前,課程教學不是缺少教材,而是教材太多。國內外與密碼學課程相關的教材版本很多,在眾多教材中選取適合網絡工程專業應用型培養目標,并能結合我國信息安全國情的教材,有一定難度。部分教材側重密碼算法的數學理論,對于非數學專業出身的網絡工程專業本科學生而言,由于缺少相應知識,他們很難理解和掌握這些教材的內容。國外教材側重講解國際密碼算法,有些教材講到的算法淺顯易懂,但是沒有涉及國內密碼算法;雖然國內教材有些講授了部分國內密碼算法,但是涉及較多數學知識。
對于應用型網絡工程專業學生而言,應用密碼學課程教學的主要目的是讓學生理解和掌握常用密碼算法的原理,側重密碼算法的應用性,而不是理論性,但是課程中不可避免要涉及數論知識、線性代數等與密碼學相關的數學知識,這些知識對于學生來說抽象而不易理解。此外,應用密碼學算法本身有些也比較難,對學生而言,算法的執行過程是透明的,僅僅通過教師的板書和演示文稿,無法直觀地看到算法的執行過程和數據的動態變化,由此會引發畏難情緒,影響學習積極性。

表1 課程教學內容的學時安排
密碼學課程一般都設有實驗學時,高校普遍也都有專門的安全實驗平臺,最大的問題是這些平臺都需要專門的實驗室軟硬件環境支撐,學生不能在學習過程中隨時進行實驗驗證,導致學生對密碼學不求甚解,無法真正體會密碼學算法的設計和學習用途。此外,國內現有的密碼學教學實驗平臺缺乏可視化過程,僅僅用于實現輸入、加密和解密過程,不利于學生對密碼算法的理解。
根據《中華人民共和國國家安全法》第24條、25條規定[3]“國家加強自主創新能力建設,加快發展自主可控的戰略高新技術和重要領域核心關鍵技術”“實現網絡和信息核心技術、關鍵基礎設施和重要領域信息系統及數據的安全可控”,國家密碼管理局批準了一系列國家密碼標準,包括祖沖之序列密碼算法、SM4分組密碼算法、SM2橢圓曲線公鑰密碼算法、SM3密碼雜湊算法、SM9標識密碼算法等。以往密碼學的教學以及課程教材,都是重點講述國際密碼算法,較少講授國產密碼算法,而國產密碼算法成為國際標準勢在必行。2016年10月,密碼算法標準草案SM2、SM9進入ISO 14888-3正式文本階段,開啟了我國自主設計的對稱密碼算法進入ISO的歷程。因此,讓學生熟悉并掌握具有自主知識產權的國產密碼算法是非常有必要的,有利于學生未來從事信息安全工作時能盡快使用上國產密碼算法。
濟南大學密碼學課程重點突出應用性,兼顧密碼學和數學理論基礎。隨著國產密碼算法逐步成為國際密碼標準,我們調整了授課內容,在不同章節增加相應的國產密碼算法的講解和分析,具體的教學內容分配見表1。
密碼學數學基礎是學習密碼學不可或缺的部分,主要以后續應用到的知識為主,要求學生掌握的理論知識包括整除、素數、模冪和模逆運算、歐幾里得算法和擴展歐幾里得算法、費馬定理、歐拉定理、中國剩余定理等[4]。綜合教學經驗和學生反饋可知,學生普遍對數學部分的理解有一定難度,希望增加練習來促進對知識的掌握,因此我們將密碼學課程用到的所有數學知識歸類合并后一起講解,將該部分內容設置為8個學時,結合數學開源軟件一邊授課一邊實驗,并增加大量練習題,主要以實用為主,忽略繁瑣的數學推導過程。
網絡工程專業的定位是培養應用型網絡人才,因此教材選擇遵循實用為主的方針,從學生角度出發,選擇學生更容易理解的教材。國內外都有很多密碼學課程經典教材,國外普遍使用William Stallings的《密碼編碼學與網絡安全》[5],如Tufts大學、Virginia大學、中國科學技術大學、大連理工大學等都采用此版教材;國內教材也有很多,如楊波的《現代密碼學(第3版)》、谷利澤的《現代密碼學教程(第2版)》、楊義先的《應用密碼學》、Jonathan Katz的《Introduction to Modern Cryptography》《現代密碼學——原理與協議》(中文版)等。通過對比分析,我們選擇采用國內外教材相結合的方式,指定了兩本教材作為課程主要教材,一本是《密碼編碼學與網絡安全(第6版)》,另一本是谷利澤的《現代密碼學教程(第2版)》。中外兩本教材互為補充,學生能更好地理解密碼算法。
濟南大學應用密碼學課程設有16學時的課內實驗。課內實驗部分采用基于多個開源免費軟件的交叉輔助實驗工具,之所以采用開源免費軟件作為實驗平臺,主要是因為現有安全實驗室配備的實驗平臺是由北京西普陽光教育科技股份有限公司(以下簡稱西普科技)提供的軟硬件結合的信息安全實驗平臺,一旦脫離相應的安全硬件環境,軟件就無法運行。2016年,西普科技推出一個線上實驗吧,但是此系統是基于虛擬機環境,學生遠程登錄模擬運行密碼算法時,運行速度相對較慢。采用開源免費密碼算法軟件,則可以實現在任何時間、任何地點、任何環境下,學生都能隨時進行實驗,既方便學生學習和練習,又使得學生不必考慮購買軟件的經濟問題。因此,我們借助搜索引擎,借鑒國外高校密碼實驗環境的選取,在國外高校及研究機構的網站中選擇了3個開源軟件,它們各有特長,互為補充,很好地實現了從驗證、測試、練習、可視化顯示到構建密碼學多種算法的實驗。學生通過交叉使用這3個軟件,能夠較好地理解各種密碼算法的原理和運行過程。3個開源密碼軟件的對比介紹如下。
一是密碼學軟件CrypTool[6]。CrypTool是一系列4個軟件,我們在課內實驗中讓學生練習使用其中3個系列的軟件。這套軟件的優點是功能強大,既可以進行普通密碼算法的加密、解密和分析實現,又提供眾多可視化的算法分步動態演示,還提供傳播廣泛的免費E-Learning程序。值得一提的是,CryTool2提供了一種無需學習太多密碼算法內部知識,就可以用組件方式把密碼算法的應用構建起來,圖形化實現使初級用戶更容易理解和學習密碼的方式。
二是SageMath軟件[7]。SageMath(改名前為Sage)是一個數學軟件系統,建立在眾多開源軟件包基礎上,包括代數、組合數學、計算數學和微積分。SageMath是由華盛頓大學William Stein主導下,多位數學家開發的,William Stallings在《密碼編碼學與網絡安全》一書中推薦使用該實驗軟件。這個軟件不是專門為密碼學設計的,但是可以用來進行密碼學實驗。SageMath軟件的優點在于其提供了各種數學運算,密碼學中用到的模運算、最大公因數、群環域等,在此系統中只要很簡單的命令就可以完成,是密碼學中進行數學知識教學的極好的輔助工具。另外,此軟件還提供在線和脫機兩種運行環境,學生可以根據需要選擇運行,尤其值得稱贊的是此軟件的在線云平臺運行速度快,適合應用。
三是Cryptography Visualization Software[8]。這是由6個獨立軟件構成的一個可視化、跨平臺的軟件序列,包含Vigenère、DES、AES、RSA、SHA和ECC的虛擬化實現。此系列軟件是美國自然科學基金資助開發的用于教學的密碼軟件,優點是每個軟件獨立運行,占用空間小,靈活使用,而且軟件中包含演示模式和練習模式,學生可以自行輸入數據,進行練習操作,達到更好理解算法的目的。
學生在實驗中,通過交叉使用多個開源密碼軟件,一方面,能更全面地理解密碼學算法的原理;另一方面,也可以比較不同軟件的優劣,進而在未來工作和學習中進行程序設計時,能考慮更全面,設計更完善。這3種開源軟件對于我國學生而言,主要問題是沒有國產密碼算法的實現。我們所培養的網絡安全方向的學生,應該在掌握國際通用密碼算法的基礎上,更好地掌握我國自主研發的密碼算法,雖然目前網上可以找到SM系列密碼算法的軟件源碼,但是至今還沒有一個可以方便學生學習的開源免費國產密碼算法實驗平臺,因此,開發出一個通用開源免費國產密碼算法實驗平臺是非常必要的。
2016年7—11月,筆者首次帶領濟南大學學生參加“2016年第二屆全國密碼技術競賽”,雖然沒有進入決賽,但是經過數月參賽準備,還是有很多感慨,結合密碼學教學經驗,我們也進行諸多反思。一是最新密碼理論的缺失,此前我們只采用《密碼編碼學與網絡安全(第六版)》一本教材,雖然這是一本不斷更新的教材,但是沒有后量子密碼、量子密碼、混沌密碼等密碼學新知識,學生在參加初賽時就曾遇到部分沒有見過的概念名詞;二是學生編程能力的欠缺,網絡工程專業的學生普遍認為程序設計是計算機專業學習的內容,網絡工程專業不需要太多編程,這種錯誤思想導致學生不重視編程能力的培養,等到進行程序設計算法時,設計和調試程序的能力偏低。通過參加密碼競賽,我們深刻認識到密碼學教學的內容和方法有待改進,實踐課程教學中的能力培養有待加強。
應用密碼學作為信息安全的核心,是網絡工程專業必修的專業基礎課。近5年來,我們對應用密碼學課程持續進行教學改進,綜合學生反饋和新技術發展,參加全國密碼競賽,滿足企業需求,不斷進行改革嘗試。隨著各方對信息安全領域重視度越來越高,密碼技術不斷推陳出新,密碼學的教學也需要與時俱進,以實現良好發展。
參考文獻:
[1]崔艷榮. 面向應用型人才培養的“密碼學”教學探討[J]. 長江大學學報, 2012(5): 173-175.
[2]張仕斌.“應用密碼學”課程教學方法研究與實踐[J]. 信息安全與通信保密, 2012(7): 77-80.
[3]中央政府門戶網站. 中華人民共和國國家安全法[EB/OL].(2015-07-01)[2017-06-10]. http://www.gov.cn/zhengce/2015-07/01/content_2893902.htm.
[4]胡小明, 楊寅春, 吳秀梅, 等. 信息安全專業密碼學課程教學改革[J]. 計算機教育, 2014(1): 49-52.
[5]Stallings W. 密碼編碼學與網絡安全: 原理與實踐[M]. 6版. 北京: 電子工業出版社, 2015.
[6]CrypTool Portal. The CrypTool portal[EB/OL]. [2017-06-10]. https://www.cryptool.org/en.
[7]Sage[EB/OL]. [2017-06-08]. http://www.sagemath.org/.
[8]NSF. Cryptography visualization software downloads[EB/OL]. (2015-04-06)[2017-06-10]. http://www.cs.mtu.edu/~shene/NSF-4/.