秦 斌 王艷會
摘要:本文根據(jù)計算機專業(yè)的培養(yǎng)目標和該專業(yè)學(xué)生的知識基礎(chǔ),并結(jié)合筆者自身的教學(xué)實踐,針對計算機專業(yè)開設(shè)“密碼學(xué)”課程的教學(xué)內(nèi)容和教學(xué)方法做了探討。
關(guān)鍵詞:計算機;密碼學(xué);教學(xué)內(nèi)容;教學(xué)方法
中圖分類號:G642 文獻標識碼:B
密碼學(xué)是一門由數(shù)學(xué)與計算機科學(xué)兩門學(xué)科交叉產(chǎn)生、主要研究信息從發(fā)送到接收的安全通信和安全存儲的學(xué)科。本學(xué)科自產(chǎn)生以來,便隨著互聯(lián)網(wǎng)的普及而迅速發(fā)展,又因現(xiàn)代社會人們隱私觀念的增強而蘊含了巨大的市場需求。在國外很多高校的計算機專業(yè),“密碼學(xué)”是一門重要的課程。而在我國,長期以來,該課程很少被安排在計算機科學(xué)與技術(shù)專業(yè)的教學(xué)計劃中。近年來,隨著中外合作辦學(xué)與學(xué)術(shù)交流的不斷繁榮,一些高校的計算機專業(yè)已開始將“密碼學(xué)”列為必修課。然而,由于密碼學(xué)所包含的知識涉及很深的數(shù)學(xué)背景,而且截至目前為止已經(jīng)出版發(fā)行的密碼學(xué)教材多適用于數(shù)學(xué)專業(yè)和通信專業(yè),所以很難找到適合計算機專業(yè)的教材。此外,國內(nèi)高校計算機專業(yè)開設(shè)該門課程時間不長,尚無權(quán)威的教學(xué)大綱和授課范圍,也為本門課的講授增加了難度。筆者根據(jù)自身的教學(xué)實踐和計算機科學(xué)與技術(shù)專業(yè)學(xué)生的知識基礎(chǔ),對教學(xué)內(nèi)容和教學(xué)方法進行了一些探索,使學(xué)生在能對密碼學(xué)知識有系統(tǒng)的理解的前提下,充分發(fā)揮計算機專業(yè)學(xué)生的專業(yè)技能,令學(xué)生達到能夠?qū)⒃撻T課中的方法應(yīng)用到實際的能力。
1教學(xué)內(nèi)容的選取
密碼學(xué)學(xué)科所涉及的知識面較廣,且涉及較深的數(shù)論知識。在很多高校的數(shù)學(xué)院系的密碼學(xué)教學(xué)中,密碼學(xué)的理論基礎(chǔ)往往是講授的重點,而這并不適宜計算機專業(yè)的學(xué)生學(xué)習(xí)。與數(shù)學(xué)專業(yè)的學(xué)生相比,計算機專業(yè)學(xué)生的長處在于較強的程序設(shè)計能力??紤]到計算機專業(yè)學(xué)生的知識基礎(chǔ),筆者在教學(xué)內(nèi)容的選擇中注重以下幾個方面。
1.1密碼學(xué)的發(fā)展背景和密碼學(xué)研究的基本問題
介紹密碼學(xué)的發(fā)展背景和密碼學(xué)研究的基本問題,尤其是密碼體制、單向函數(shù)以及偽隨機序列生成器的闡述,既讓學(xué)生對密碼學(xué)有一個大致的了解,又為以后即將學(xué)習(xí)的各種加密方案以及密碼安全性做好鋪墊。另外還需著重介紹一下密碼學(xué)的主要用途,讓學(xué)生認識到密碼學(xué)不止存在于戰(zhàn)爭中,也存在于我們身邊,從而激發(fā)學(xué)生的學(xué)習(xí)興趣。
1.2古典密碼體制
麻雀雖小,五臟俱全。古典密碼學(xué)雖然是較為簡單的密碼學(xué)內(nèi)容,但對現(xiàn)代密碼學(xué)的產(chǎn)生和發(fā)展有著深遠的影響。各種古典密碼體制在其設(shè)計方案、安全性分析等各方面都是各種現(xiàn)代密碼體制的雛形,可以看作是各種現(xiàn)代密碼體制的簡易版本。通過講授古典密碼體制及其安全性的相關(guān)知識,可以進一步加深學(xué)生對密碼學(xué)加密方法的理解,讓學(xué)生了解加密、解密以及密碼破譯的具體含義,為下面介紹各種現(xiàn)代密碼體制做好準備。在介紹這些內(nèi)容的過程中,可以讓學(xué)生編寫一些基于古典密碼體制的加密軟件,激發(fā)學(xué)生對本門課的興趣。在講解過程中,對這部分內(nèi)容涉及到的數(shù)論知識做穿插性的通俗的介紹,這樣也可以避免學(xué)生對數(shù)學(xué)理論基礎(chǔ)的畏懼。
1.3密碼體制的安全性
簡單介紹衡量密碼體制安全性能的兩個方面,讓學(xué)生能夠?qū)γ艽a體制安全性做簡單的分析。密碼體制的安全性是密碼學(xué)的重要組成部分,但是這部分內(nèi)容過程較為繁瑣。在講授過程中,著重從信息論與計算量兩個角度介紹設(shè)計密碼安全性的基本知識。講授這部分內(nèi)容的目的是讓學(xué)生了解常用的密碼體制的設(shè)計思想。
1.4各種常用的現(xiàn)代密碼體制
較詳細的講解序列密碼、分組密碼、公鑰密碼等常用的現(xiàn)代密碼體制;簡單介紹各種密碼體制的安全性和破譯方法;簡單介紹數(shù)字簽名相關(guān)知識;同時將該部分涉及的數(shù)論知識作簡單的穿插性介紹。這部分是本門課程的重點,也是前面各部分工作的目的所在。在這部分課程中,通過編程實現(xiàn)所學(xué)的加密算法是本門課的重中之重,也是計算機專業(yè)“密碼學(xué)”課程的特色。在理論內(nèi)容講解完畢后,需要簡單介紹編程過程中需要注意的技巧和事項,如C++中指針的應(yīng)用和函數(shù)的應(yīng)用,必要時可以帶領(lǐng)學(xué)生編寫部分函數(shù)代碼作為示范。
2教學(xué)方法
根據(jù)學(xué)生的情況和教學(xué)內(nèi)容的特點,為了取得盡可能好的教學(xué)效果,筆者在授課內(nèi)容的組織、授課方法的取舍、實踐教學(xué)效果的強化以及考核方式等方面做了一些探究。
2.1提出問題——解決問題——提出課下思考問題
由于本門課程的內(nèi)容較多且較為繁瑣,理論基礎(chǔ)較深,將所有內(nèi)容都向?qū)W生傳授是不可能的。因此在講授的方式上,可以采用“提出問題——解決問題——提出課下思考問題”的方法。首先,提出一個現(xiàn)實中要解決的問題,如在講授古典密碼學(xué)前提出問題“甲和乙通信,信件公開,采用什么辦法可使第三者丙對信件的內(nèi)容一無所知?”這時學(xué)生會積極思考,踴躍回答,提出很多方法,而學(xué)生所提出的眾多方法往往就是本節(jié)課所要講的方法,然后對學(xué)生提出的方法分類,并采用嚴格的專業(yè)語言加以表述,引出所要講授的內(nèi)容,而“如何客服古典密碼學(xué)的缺陷——密鑰空間太小?”則是“課下思考問題”,而后續(xù)課程對這個問題的解決也就引進了現(xiàn)代密碼學(xué)中的一些密碼體制。這樣以來,學(xué)生對原本陌生枯燥難懂的新知識產(chǎn)生了親切感,不僅促使學(xué)生積極思考,也降低了學(xué)習(xí)難度,激發(fā)學(xué)生對密碼學(xué)的學(xué)習(xí)興趣。
2.2鼓勵學(xué)生改進學(xué)習(xí)方法,一切為教學(xué)效果服務(wù)
在具體教學(xué)過程中,不鼓勵學(xué)生上課記筆記,但要求學(xué)生全神貫注于課堂;不鼓勵學(xué)生預(yù)習(xí),但督促學(xué)生課下及時地、充分地復(fù)習(xí)。筆者在教學(xué)實踐中發(fā)現(xiàn),記筆記往往使學(xué)生分心,影響聽課效果,而且將課上的內(nèi)容拿到課后再學(xué)習(xí),將花費更多的時間和精力,學(xué)習(xí)效果也難以保證;而課前預(yù)習(xí)往往導(dǎo)致兩個不好的結(jié)果:或者使學(xué)生對即將講授的課堂內(nèi)容掉以輕心;或者使學(xué)生感到學(xué)習(xí)內(nèi)容太難,打擊其學(xué)習(xí)的積極性,另外,預(yù)習(xí)時由于沒有老師指導(dǎo),學(xué)生花費的時間較多而收獲較少,因此與其讓學(xué)生將時間花在預(yù)習(xí)上,不如讓其將時間花在課后的復(fù)習(xí)上。
2.3著重培養(yǎng)學(xué)生對所學(xué)知識的應(yīng)用能力
與其他專業(yè)的學(xué)生相比,計算機專業(yè)的學(xué)生具有較強的程序設(shè)計能力,而密碼學(xué)也是一門以電子計算機為實現(xiàn)工具的學(xué)科。因此計算機專業(yè)的“現(xiàn)代密碼學(xué)”課程教學(xué)應(yīng)該重視培養(yǎng)學(xué)生運用自己的編程技能將所學(xué)到的加密算法編制為應(yīng)用軟件的能力。在這個環(huán)節(jié)上,有一些重要的編程技巧需要強調(diào),比如模塊化的軟件設(shè)計思想,C++函數(shù)與指針的使用。使用編程工具將所學(xué)的加密算法編寫成應(yīng)用軟件是計算機專業(yè)“現(xiàn)代密碼學(xué)”課程教學(xué)相對于其他專業(yè)密碼學(xué)教學(xué)的一個特點。圖1是學(xué)生使用C++編寫的基于DES分組密碼體制的界面。
2.4注意拓寬學(xué)生在本課程方面的知識面
課堂上的時間是有限的,難以對每種方法都加以詳細介紹,因此在每次詳細講解過具有代表性的經(jīng)典算法后,便將其他同類別的加密方法做一個簡要的介紹,讓學(xué)生對這一大類方法有一個總體的了解,比如在講完DES分組密碼后,可對美國國家標準技術(shù)研究所于2001年推出的AES分組密碼做簡要介紹,并帶領(lǐng)學(xué)生分析它與具有代表性的分組密碼DES的不同,如此有利于拓寬學(xué)生的知識范圍;再者,不同的教材往往采用不同的組織思路和表述方法,比如在計算復(fù)雜性理論部分,不同教材描述計算復(fù)雜度所用到的表述方式相差較大,筆者采用的是較為直觀的、涉及理論基礎(chǔ)較淺的表述方法,在講解完該種方法后,再向?qū)W生簡要介紹一些基于圖靈機等較復(fù)雜的描述途徑,這樣使學(xué)生對所講述的內(nèi)容理解更加深刻。另外,由于科學(xué)總是在實踐中不斷地發(fā)展,密碼學(xué)新方法、新技術(shù)、新進展不斷涌現(xiàn),在課堂上對這部分內(nèi)容加以介紹,并將其與課上所學(xué)的理論基礎(chǔ)聯(lián)系起來,對于加深學(xué)生對所學(xué)內(nèi)容理解是很有好處的,比如若選講雜湊函數(shù)部分,可以簡要介紹一下我國女科學(xué)家王小云教授分別于2004年和2005年破譯MD5和SHA-1的事情,這樣學(xué)生不止了解了該門學(xué)科的前沿進展,而且能夠認識到目前所學(xué)的基礎(chǔ)知識的重要作用。
2.5重視實驗環(huán)節(jié),改革考核方法
實驗是本門課程的重要環(huán)節(jié)。本課程中可以設(shè)置實驗的內(nèi)容有古典密碼體制、序列密碼體制、分組密碼體制、公鑰密碼體制以及數(shù)字簽名等。其中古典密碼體制由于原理簡單,易于完成,而且將該實驗中的一些函數(shù)和類進行相應(yīng)的替換和擴充,可以得出其他現(xiàn)代密碼體制的實驗結(jié)果,并且使學(xué)生在該實驗過程中熟練可視化編程工具的組件使用,引導(dǎo)學(xué)生逐漸適應(yīng)實驗的難度,避免學(xué)生直接面對后面較難的現(xiàn)代密碼體制實驗而無從下手、望而卻步;對于后面幾個現(xiàn)代密碼體制的實驗,難度漸增,可以根據(jù)學(xué)生自身的能力和時間選做1~3個。
期終的考核是對學(xué)生平時學(xué)習(xí)的督促,也是對學(xué)生學(xué)習(xí)側(cè)重方向的指引。筆者根據(jù)本文所提出的教學(xué)理念,采取了側(cè)重應(yīng)用能力的考核方法,即在平時表現(xiàn)、實驗成績和考試成績?nèi)椫?實驗成績所占的比重不低于其他兩項。
3結(jié)論
“密碼學(xué)”是部分高校計算機專業(yè)近幾年新開設(shè)的課程。計算機專業(yè)的培養(yǎng)目標和該專業(yè)學(xué)生的知識基礎(chǔ)決定了該專業(yè)的“密碼學(xué)”授課方式和重心不同于其他專業(yè)的同種課程。教師要從學(xué)生的實際情況出發(fā),充分發(fā)揮學(xué)生的專業(yè)優(yōu)勢,盡力激發(fā)并維持學(xué)生的學(xué)習(xí)興趣,才能取得好的教學(xué)效果。另外,計算機專業(yè)的各門課程都不是孤立的,尋找各門課程中的各種機會鍛煉學(xué)生諸如程序設(shè)計能力等專業(yè)技能,無論對與學(xué)生本門課程的學(xué)習(xí),還是對學(xué)生整體專業(yè)素質(zhì)的培養(yǎng),都是大有裨益的。
參考文獻:
[1] 章照止. 現(xiàn)代密碼學(xué)基礎(chǔ)[M]. 北京:北京郵電大學(xué)出版社,2004.
[2] 范九倫. 密碼學(xué)基礎(chǔ)[M]. 西安:西安電子科技大學(xué)出版社,2008.
[3] 蔡樂才. 應(yīng)用密碼學(xué)[M]. 北京:中國電力出版社,2005.