牛淑芬 王伯彬 劉文科
[摘 要] 密碼學實驗課程是密碼學原理的重要補充和不可缺少的組成部分,也是密碼學算法從理論到實際應用的基礎。以本科生密碼學實驗課程的教學為出發(fā)點,分析目前網(wǎng)絡安全本科專業(yè)實驗課程的教學現(xiàn)狀,從本科生現(xiàn)有的知識結構出發(fā),通過案例詳細探討了密碼學實驗課程的教學內(nèi)容設計及教學方法,為本科生密碼學課程的教學提出了可行的方案。
[關鍵詞] 密碼學實驗課程;教學內(nèi)容;教學方法
[基金項目] 2016年西北師范大學國家自然科學基金項目“大數(shù)據(jù)環(huán)境下數(shù)據(jù)層隱私保護性多方密碼算法研究”(61562077)
[作者簡介] 牛淑芬(1976—),女,博士,副教授,碩士生導師,主要研究方向為云計算、區(qū)塊鏈、大數(shù)據(jù)安全;王伯彬(1992—),男,碩士研究生,研究方向為密碼學;劉文科(1996—),男,碩士研究生,研究方向為密碼學。
[中圖分類號] G423? ? [文獻標識碼] A? ? [文章編號] 1674-9324(2020)31-0284-03? ? [收稿日期] 2020-01-13
一、引言
密碼學不管是作為信息安全專業(yè)的專業(yè)基礎課程,還是計算機科學與技術專業(yè)的重要選修課程,都有著十分重要的學科地位。因此,除需在本科院校的計算機、通信等相關專業(yè)開設密碼學的理論教學以外,開展其相應的實踐課程教學更是十分必要。密碼學實驗課程首先應該幫助學生理解密碼學理論知識,尤其是算法;其次,密碼學實驗課程要培養(yǎng)學生將理論知識轉換為實際成果的能力,主要是將算法編程實現(xiàn)成為可以實際使用的程序;再次,密碼學實驗課程還應該拓展學生的視野,讓學生接觸使用常用的密碼應用,為將來的工作打下基礎。
二、密碼學實踐課程教學中存在的問題
現(xiàn)有密碼學課程的教學內(nèi)容重點是對各種古典密碼和流行密碼算法進行介紹,因此,在教學中理論課程安排較多。由于課程本身內(nèi)容的綜合性,僅靠課堂的理論教學內(nèi)容,學生難以將理論知識應用于實際。
(一)學時少,教學內(nèi)容難以深入,與實際應用嚴重偏離
現(xiàn)有的實驗教學學時數(shù)大多是24學時,針對這個學時量,實驗內(nèi)容只能覆蓋古典密碼、DES密碼和RSA等公鑰算法實驗,不能適時安排一些新型的密碼算法,內(nèi)容上無法與時俱進,且學生很難把算法應用到現(xiàn)實的生活環(huán)境中,以致學生的所學的理論知識與應用嚴重偏離。
(二)學生已有的知識結構和基礎知識欠缺,致使算法編程難度大
對簡單的RSA算法,學生用C語言編程比較容易實現(xiàn);但對古典算法和DES算法而言,涉及眾多的矩陣表的運算,整個算法流程對于初學者來說就已經(jīng)很龐大了,將其編程實現(xiàn)更是難上加難,直接導致很多學生放棄轉而求之網(wǎng)絡拷貝。在基于配對的密碼學算法中,需要用到雙線性對運算,對于此類算法的編程,用簡單的C語言編程,已經(jīng)不能實現(xiàn),需要用更高一級的編程語言Java或者在Linux操作系統(tǒng)下實現(xiàn),這對于本科生來說有一定的難度。
(三)缺少密碼應用系統(tǒng)實驗
由于課時所限,大部分密碼學實驗缺乏密碼應用系統(tǒng)實驗,因此出現(xiàn)了所學理論知識和實際應用之間無法緊密銜接的問題,直接影響學生的積極性和學習興趣。
三、密碼學實驗課程內(nèi)容設計和教學方法
本文結合本校的教學培養(yǎng)要求,在吸取6年來密碼學實驗教學經(jīng)驗的基礎上,根據(jù)大學本科生現(xiàn)有的知識結構和編程語言基礎,提出了新的密碼學實驗課程設計和教學方法。在整體的教學設計中,我們一貫堅持的原則是復雜算法與熟悉的編程語言結合,簡單的算法與復雜的編程相結合,充分調(diào)動學生的學習興趣和積極性。在具體的教學實踐中,在不同類型的程序設計語言中,實現(xiàn)某種功能的函數(shù),因為語言本身的一些特性,往往會有一定的區(qū)別,教學實踐中應由學生較為熟悉的程序設計語言過渡到其他語言中,并重點講解、演示相關函數(shù)在使用中的不同之處,學生可靈活采取不同的編程實驗方式。
(一)不含配對密碼算法
對于我們熟知的DES、3DES、AES、IDEA、RSA等算法,此類算法流程冗長,算法理解困難,初學密碼學的學生面對這樣的算法,往往不知如何下手。針對此類問題,要求老師在課堂上引導學生重點理解和分析此類算法,并提出編程要求。為了使學生對各類算法本質有深入理解,要求學生用自己熟悉的高級程序設計語言C編程實現(xiàn)經(jīng)典密碼學算法,其中部分關鍵程序代碼可布置作業(yè),讓學生編程實現(xiàn)。網(wǎng)絡上有很多經(jīng)典密碼學算法的代碼資源,在講解算法的過程中,可以提醒學生注意對這些資源的理解和借鑒。
在本部分的教學方法中,通過利用學生熟知的編程語言和復雜的程序相結合,實現(xiàn)不含對運算的密碼算法的編程。
(二)含有配對運算的密碼算法
含有對運算的密碼算法往往在算法的結構設計上比較簡單,但在這類算法中,雙線性對的編程實現(xiàn)是難點?;谂鋵Φ拿艽a算法,我們將利用PBC庫實現(xiàn)算法的數(shù)值分析。在這部分的實驗課程設計上,將根據(jù)學生的知識結構,分別采用Windows系統(tǒng)下用Java編程語言實現(xiàn)和Linux操作系統(tǒng)下用C語言編程實現(xiàn)。以下以短簽名算法(BLS)為例進行說明。
1.在Windows系統(tǒng)下用Java編程語言實現(xiàn)。對于本科生來說,已經(jīng)掌握了一定基礎的Java編程語言,可以在Java中調(diào)用JPBC庫實現(xiàn)BLS算法。本教學設計的難點是學生對Java編程語言的掌握不太熟練,且學生對知識的掌握較為死板,沒有養(yǎng)成發(fā)現(xiàn)問題解決問題的能力。在實際的教學實踐中教師應以引導為主,讓學生通過搜索引擎等解決實際安裝配置中的一些問題,并對學生出現(xiàn)的一些的常見問題進行講解、分析。JPBC是PBC的Java封裝,在學生已經(jīng)了解Java基礎特性的基礎上,教師應就具體函數(shù)的使用細節(jié)進行講解,并現(xiàn)場布置經(jīng)典算法的具體實現(xiàn)。在學生的實際操作過程中,觀察學生對知識的掌握情況,根據(jù)現(xiàn)場的反饋及時調(diào)整教學策略。如在以下的教學環(huán)境中,在學生完成了JPBC的安裝配置后,教師布置了短簽名(BLS)算法的實現(xiàn),首先教師對具體簽名算法的邏輯進行講解,并對其中一些具體過程涉及的函數(shù)進行演示,如系統(tǒng)建立生成系統(tǒng)參數(shù)、初始化相關參數(shù)、計算哈希值、對運算等關鍵函數(shù),講解完畢后讓學生進行具體實踐。通過實踐我們發(fā)現(xiàn),學生往往對算法的具體邏輯都能理解,但一旦進入到實現(xiàn)過程時,經(jīng)常不知道該從何下手。教師觀察到一部分學生已經(jīng)處于上述狀態(tài)時,就應及時調(diào)整教學策略。上述情況主要是由于學生對此類知識的不熟悉造成的,我們應思考如何去除這種對知識的陌生感,此時我們應該給學生提供一個較為簡單但結構完整的實例,通過讓學生對實例進行理解,進而通過模仿、遷移,完成教學目標。同時教師要對學生出現(xiàn)的常見問題進行總結且同時一定要強調(diào)實驗報告的書寫。知識的學習中,學習知識只是第一步,更重要的是知識的內(nèi)化。實驗報告的書寫是學生自己對知識的思考,是知識真正內(nèi)化的過程,教師應引導學生養(yǎng)成良好的學習習慣。
2.Linux操作系統(tǒng)下用C語言編程。對于大部分本科生來說,對Linux操作系統(tǒng)不太熟練,但對于C語言的掌握較為熟練。我們采用化難為簡的教學方式,在Windows系統(tǒng)下安裝Linux系統(tǒng)虛擬機,從而調(diào)用PBC庫實現(xiàn)編程。本教學設計的難點是學生對Linux系統(tǒng)操作命令的不熟練。在教學情境中考慮到學生對Linux較為陌生,為了降低實驗難度,保證學生學習的積極性,我們可以通過拷貝的形式將Linux虛擬機遷移到學生的虛擬機環(huán)境中,這樣學生就能獲得一個已經(jīng)配置完成的實驗環(huán)境。
(三)多種學習形式結合,激發(fā)學生學習興趣
由于密碼學這門課程本身具有理論較多,學習過程較為枯燥的特性,在實際的教學工作中教師應注重理論與實踐的結合,充分激發(fā)學生的學習興趣。
1.直觀的實驗。以Arp欺騙為例,在以往的教學中,學生僅僅知道Arp欺騙能獲取通信過程中的數(shù)據(jù)包,但對其危害并沒有一個直觀的認識。教師通過利用虛擬機和相關軟件,設計一個仿真的實驗環(huán)境,攻擊者通過相關工具進行Arp欺騙,將網(wǎng)關的MAC地址修改為自己的MAC地址,此時局域網(wǎng)內(nèi)所有的主機發(fā)送給網(wǎng)關的數(shù)據(jù)包,都將先發(fā)送給攻擊者,攻擊者作為一個中間人再對數(shù)據(jù)包發(fā)送給網(wǎng)關。那么在此過程中,如果受害者發(fā)送的數(shù)據(jù)包未經(jīng)加密且包含一些敏感信息,如受害者的個人身分信息,用戶口令信息就被攻擊者所獲取。學生通過實踐,不僅能加深對知識的理解,且能真正感受到其所造成的危害,此時教師可引導學生思考如何解決此類問題,充分調(diào)動學生的學習興趣,引導學生進行自主學習。
2.密碼學相關競賽。CTF是當前流行的安全類競賽,密碼學作為其中的一類,重點考察各種加解密技術,包括古典密碼學與現(xiàn)代密碼學,通過解題的形式,讓學生去掌握密碼算法的具體邏輯,同時通過一些現(xiàn)有工具去實現(xiàn)對具體密碼算法分析、譯碼,通過以賽促學的形式,激發(fā)學生的學習興趣,且完善了相關知識的結構體系。如關于MD5的題目,題目給出了某一用戶的密碼,已知現(xiàn)有的短位數(shù)密碼的MD5值可通過彩虹表快速破解,添加了salt后可增強密碼的安全性,觀察密碼形式,猜測使用了MD5進行了散列,使用在線工具,解碼出密碼明文后,去掉所加的salt,即獲得題目的Flag。
3.建立密碼學團隊。組織課題組或興趣小組,吸引更多的學生參加,最大化激發(fā)學生的興趣,并大力支持學生創(chuàng)新活動。選擇優(yōu)秀本科生進入課題組,是研究型大學培養(yǎng)學生的一種重要方式。同時要求教師在授課過程中,將前沿技術問題適時融入授課內(nèi)容之中,鼓勵學生進行創(chuàng)新思維,并為其提供必要的經(jīng)費、實驗環(huán)境,如建立創(chuàng)新實驗室、實訓大本營等。
4.深入性學習。結合課程內(nèi)容,由學生參加制作密碼算法教學演示系統(tǒng),并可延伸到畢業(yè)設計。在編寫完成密碼算法后,利用演示系統(tǒng)分步實現(xiàn)密碼算法的過程,使學生更深入、更細致地理解和掌握密碼算法的本質。
四、結束語
密碼學是信息安全的核心課程,但目前在教學實踐中普遍存在著理論較多,實踐較少,知識結構體系不完善,且對學生的專業(yè)知識要求較高,學生不易上手的問題。針對上述問題并結合實際教學經(jīng)驗,提出了多種實驗形式結合、多種學習方式結合,讓學生從生澀的理論知識中走出來。此外,現(xiàn)有的基礎理論課程體系仍不完善,目前還沒有與密碼學相適配的標準化實驗教材,因此,要積極開展標準化實驗教材的編寫工作,同時加強與國內(nèi)外的高校、研究機構的交流,也是值得努力的方向。
參考文獻
[1]呂秋云,趙澤茂,劉順蘭.信息安全本科專業(yè)密碼學實驗課程的教學研究[J].計算機教育,2009(15):135-137.
[2]張瑞霞,唐成華,唐麟.密碼學實驗教學改革應用實踐[J].計算機教育,2013(05):72-75.