摘要:分析目前信息安全本科專業密碼學實驗教學中存在的主要矛盾,總結實踐教學經驗,提出模塊化的實驗教學方法,將密碼學實驗分為算法驗證模塊、算法實現模塊及綜合設計模塊3個實驗模塊,并闡明各個模塊的實際功能、實驗手段、實驗內容、學時安排及考核規范,確立密碼學實驗課程教學的基本思路和總體框架。
關鍵詞:密碼學;模塊化;密碼學實驗
0 引言
密碼學課程是信息安全本科專業學生的一門必修課和主干課,課程主要內容包括密碼學基本概念、古典密碼、分組密碼、序列密碼、對稱密碼、公開密鑰密碼、認證、數字簽名、密鑰管理等。密碼學課程具有很強的實踐性,僅靠理論講授難以達到課程設置的目標,教師必須在教學過程中對密碼學的實驗教學環節予以高度重視。實驗教學不僅是理論教學的輔助手段,而且是理論教學的延伸和發展,使學生在實際操作和編程設計中培養獨立思考和動手能力,激發學生將理論知識轉化為實際成果的興趣和熱情。
1 密碼學實驗教學中存在的主要矛盾
目前,各學校的密碼學課程基本上都安排了實驗環節,但我們通過調研發現,實驗課的實驗內容設置、課時安排及考核方式等缺乏統一的規,范和要求。教師在實驗課的實施過程中通常會遇到以下較難解決的矛盾。
1)算法復雜與編程實現之間的矛盾。密碼學算法本身的復雜度和難度致使密碼學實驗中算法編寫難度較大。
2)學時少與綜合設計耗時多的矛盾。目前,一般本科院校開設的密碼學課程中,實驗課學時多為6~14學時,學時較少,但卻要求學生結合實際背景,完成一個相對完整的密碼應用系統的綜合設計,其設計將耗費大量時間,并且大幅度增加密碼學實驗教學課時也很難實現。
3)實驗形式多樣與考核規范化之間的矛盾。目前各高校密碼學實驗大都采用了多種實驗形式,但不同的實驗并不都適合用傳統的實驗報告形式進行考核。由于缺乏統一、細致的考核規范,各院校教師對密碼學實驗的考核手段迥異,這將不利于密碼學課程的后續發展。
針對以上矛盾,我們對密碼學課程的實驗教學進行深入研究,結合海軍工程大學多年來的實踐教學經驗,提出模塊化的密碼學實驗教學設計方案,將密碼學實驗教學分為3個模塊,并明確各模塊的實際功能、實驗手段、實驗內容、學時安排及考核規范,希望給各位教師在實際教學過程中帶來一些啟發和幫助。
2 模塊化密碼學實驗教學設計
2.1實際功能
在實際教學過程中,密碼學實驗教學3個模塊的具體功能各有不同。
1)算法驗證模塊主要提供各類密碼算法的驗證軟件,使學生通過驗證性實驗,更加熟練地掌握在課堂上所學的密碼算法原理及流程,并通過實驗操作明確密碼算法的設計細節、參數選擇、工作模式等。
2)算法實現模塊在學生熟練掌握密碼算法原理的基礎上,考查學生利用程序設計語言實現相關算法的能力。算法實現模塊是較高層次的實驗模塊,該模塊主要幫助學生學會逐步分析算法的結構,提高密碼算法編程能力,更好地掌握密碼算法設計的機理和方法。
3)綜合設計模塊則在前2個模塊的基礎上,訓練學生綜合運用所學密碼算法原理設計一個針對某類信息安全問題的密碼應用系統或方案。綜合設計實驗有助于鍛煉學生的思維能力、操作能力和團結合作能力,為學生參加實際工作和今后開展進一步的科學研究打下良好基礎。
綜上所述,3個實驗模塊層層遞進,相互促進,共同實現密碼學實驗教學設置的總體目標。
2.2實驗手段
由于密碼學實驗教學3個模塊實現的功能不同,其采取的實驗手段也不盡相同。
2.2.1算法驗證模塊的實驗手段
算法驗證模塊的實驗手段主要是各類密碼算法的加、解密驗證軟件或實驗系統。此模塊的實驗操作較為簡單,由學生利用已有軟件在計算機上完成具體密碼算法的加、解密,但要求教師選擇合適的軟件或實驗系統,避免選取“黑盒子”式的實驗驗證軟件。此類軟件僅提供算法加、解密界面,學生除了輸入明文(密文)得到密文(明文)外,不能了解算法的總體流程和各個運算部件的具體功能。
好的密碼算法驗證軟件不僅能提供加、解密界面,而且能清晰地展現整個算法流程,對算法每個運算部件的功能都能用動畫等直觀生動的形式進行表示。DES算法驗證軟件單輪流程如圖1所示,該軟件是由北京城市學院計算中心提供的,清晰地展現每一輪的加密流程和密鑰產生過程,學生可以通過雙擊陰影部分的運算部件進一步了解“擴展”、“壓縮”、“移位”等運算部件的具體功能。DES算法驗證軟件數據擴展運算如圖2所示。
在實際教學過程中,教師可以根據需要制作方便學生使用的算法驗證軟件或實驗演示系統,以達到既定教學目的。
2.2.2算法實現模塊的實驗手段
算法實現模塊的主要實驗手段為算法編程。目前密碼學課程中介紹的部分古典密碼算法較為簡單,如仿射密碼和Vigenre密碼等。大部分學生可以順利完成編程實現,但課程中現代密碼算法的編程實現往往超出初學者的能力范圍,如傳統密碼體制中的DES、AES、IDEA等算法,具有整體流程設計繁復、運算部件眾多、計算機語言描述困難等特點;公鑰密碼體制中的RSA、Elgamal、ECC等雖然算法描述較為簡單,但參數選擇、篩選困難,且數學運算復雜。初學密碼學的學生,面對這樣的算法,往往不知道該如何下手。因此,算法實現模塊要解決的主要矛盾是如何適當降低算法編程的難度,提高學生在有限時間內完成編程實驗的能力。我們在實踐中通常采取以下2種手段。
1)讓學生對簡化密碼算法進行編程實現。為了教學方便,我們可以將簡化算法提供給學生,讓其進行編程實現。部分密碼算法有相應的簡化版本,如S-DES的總體流程及結構與DES類似,但分組長度及密鑰長度都要小很多。再如RSA等公鑰密碼算法,可以引導學生完成小參數系統的程序編寫,不涉及安全素數選取、大數模冪的快速運算等實現難點,也降低了算法編程難度。
2)讓學生對密碼算法進行組合式編程。在算法復雜度沒有降低的情況下,我們可以對算法進行“分解”,向學生提供算法中主要運算部件的源代碼,讓其自主拼接成一個完整的程序。這類似于“機器組裝”的工作模式,將機器零件或部分半成品提供給工人,工人只要對機器的整體結構有足夠的熟悉度,即可在圖紙的指導下完成整臺機器的組裝。
這種組合式編程可以在一定程度上降低實驗難度,激發學生的編程積極性,從而提高教學效果。如對于AES算法的編程,我們可以將AES算法拆分為字節代換、行移位、列混合、密鑰加4個主要功能模塊,提供學生上述幾個功能模塊的詳細完整的代碼,并要求學生詳細閱讀該代碼,然后將代碼添加至自己建立的工程文檔中,在需要實現各種變換時調用這些函數。這種積極參考和閱讀源代碼的方式使學生的編程工作量明顯下降。
在實際的算法實現模塊中,我們可以結合使用上述2種手段,促進學生密碼算法編程能力的提高。
2.2.3綜合設計模塊的實驗手段
綜合設計模塊要求學生結合實際設計一個較為完整的密碼應用系統,耗時較多,學生難以在規定學時內完成。我們通常采取以下方式進行:教師選出難易適中的設計題目并向學生公布,3~4名學生自由組成設計小組并推選負責人,各小組自愿選擇可以完成的設計組,或由學生自己確定感興趣的設計題目,經教師審核符合要求后,各小組即可開始進行設計實驗。小組成員團結協作,明確分工,共同完成設計任務。綜合設計模塊主要在課外進行,為提高學生的參與積極l生,教師可將本模塊的教學工作與每年一度的全國大學生信息安全競賽或學生的畢業設計結合起來。
2.3實驗內容及學時安排
各個實驗模塊的具體內容及課時安排如表1所示。
2.4考核規范
3個不同實驗模塊的功能及實驗手段都存在較大差別,因此教師在實驗考核上也應采取不同的方式和規范。
算法驗證性實驗的每個設計題目有統一格式的實驗報告,如實驗目的、實驗環境、實驗預備知識點、實驗步驟、實驗思考題等。教師可根據算法軟件設計實驗步驟,注意除了提供算法細節的驗證步驟外,還應給學生提供自主思考的空間。例如,提示學生通過實驗找到DES的弱密鑰;讓學生考慮在選擇參數不符合要求的情況下,RSA加、解密能否正常進行。對于實驗思考題,教師也應結合所選驗證軟件精心設計,最好是設置一些學生能在實驗過程中找到正確答案的問題。教師在學生完成實驗后統一檢查、批改實驗報告,并給出考核分數。
對于算法實現模塊的每個題目,為防止學生只是簡單地進行網絡拷貝,教師可要求學生在實驗規定的課時內,將算法編程實現成為可以實際使用的程序(包括對簡化算法的編程及對復雜算法的組合式編程),并能對所編程序進行詳細說明。最后,教師根據程序編寫的完整性和可用性給出考核評分。
對于綜合設計模塊中的題目,教師要求學生以小組為單位預先提交開題設計書,對所選題目的研究目的、擬采取的研究方案、研究進度、分工安排等進行匯報,最終形成綜合設計實驗報告,包括所設計系統的功能介紹、實現方案、性能測試、創新性、總結等。教師組織小組進行統一答辯,根據答辯情況給出考核評定結果,對具有一定創新理念的設計作品可給予較高評價,并推薦小組參加年度大學生信息安全競賽。
實驗教學的總成績可通過對上述3個模塊的考核成績加權求和來確定,模塊權重系數分別為:算法驗證模塊0.2,算法實現模塊0.4,綜合設計模塊0.4。該系數可根據教學對象的具體情況進行調整。
3 結語
密碼學實驗是密碼學課程教學中的重要環節,對實現密碼學課程設置的總體目標具有特殊意義。我們僅對近年來教學的研究和實踐經驗進行初步總結,今后還需加強實驗室教學環境建設,在仿真實驗教學等環節上加倍努力,為學生提供真實、完整的網絡安全對抗環境。