摘要:針對當(dāng)前應(yīng)用密碼學(xué)實(shí)驗(yàn)課程的實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)存在的內(nèi)容單薄、難度失衡等問題,介紹基于開源軟件CrypTool設(shè)計(jì)的一套應(yīng)用密碼學(xué)實(shí)驗(yàn),其中涵蓋古典密碼學(xué)、現(xiàn)代密碼學(xué)、身份認(rèn)證與數(shù)字簽名三大部分的實(shí)驗(yàn)項(xiàng)目。
關(guān)鍵詞:CrypTool;密碼學(xué);實(shí)驗(yàn)
1 密碼學(xué)實(shí)驗(yàn)存在的問題
密碼學(xué)是信息安全專業(yè)的核心課程和主干課程,理論性深入,實(shí)踐性也很強(qiáng)。一方面,它在理論上需要較多的數(shù)學(xué)知識(shí)作為學(xué)習(xí)基礎(chǔ);另一方面,它在密碼算法實(shí)現(xiàn)和應(yīng)用方面都具有很強(qiáng)的實(shí)踐性。
密碼學(xué)實(shí)驗(yàn)課程是密碼學(xué)理論課程的配套實(shí)驗(yàn)課程,更強(qiáng)調(diào)密碼技術(shù)的實(shí)現(xiàn)應(yīng)用。然而,正如羅芳等撰文指出的那樣,當(dāng)前各大高校信息安全專業(yè)的密碼學(xué)實(shí)驗(yàn)課程存在著一些普遍問題:①學(xué)時(shí)較少,局限于古典密碼和DES密碼的算法體驗(yàn)等基礎(chǔ)性實(shí)驗(yàn),內(nèi)容相對單?。虎贒ES、RSA等算法編程難度大,直接影響學(xué)生的編程實(shí)驗(yàn)興趣;③缺少密文分析和密碼破譯實(shí)驗(yàn),但是現(xiàn)實(shí)網(wǎng)絡(luò)應(yīng)用當(dāng)中,密文分析及密碼破澤是黑客們很重要的一個(gè)攻擊手段,同時(shí)也是算法編寫者驗(yàn)證算法安全性的手段;④鑒于課時(shí)所限,大部分的密碼學(xué)實(shí)驗(yàn)課題之間完全獨(dú)立,缺乏密碼應(yīng)用系統(tǒng)實(shí)驗(yàn),直接影響學(xué)生的積極性和學(xué)習(xí)興趣。
針對以上問題,在信息安全專業(yè)的應(yīng)用密碼學(xué)課程建設(shè)中,我們提出基于開源軟件CrypTool設(shè)計(jì)一套應(yīng)用密碼學(xué)實(shí)驗(yàn)項(xiàng)目,以達(dá)到既能幫助學(xué)生通過實(shí)驗(yàn)驗(yàn)證和加深理解密碼學(xué)原理的目的,又能激發(fā)學(xué)生學(xué)習(xí)和應(yīng)用密碼學(xué)技術(shù)的興趣,還能進(jìn)一步提高學(xué)生的密碼應(yīng)用創(chuàng)新的能力。
2 實(shí)驗(yàn)平臺(tái)CrypTool
CrypTool是一個(gè)專門為密碼學(xué)教學(xué)而設(shè)計(jì)的免費(fèi)、開源Windows圖形化軟件。CrypTool的研發(fā)始于1988年,最初目的是提高德意志銀行員工的計(jì)算機(jī)安全意識(shí)。目前,CrypTool已成為開源軟件,全球60多位志愿者為其提供了200多個(gè)密碼學(xué)的算法實(shí)現(xiàn)功能,被全球許多著名大學(xué)所采用。CrypTool不僅包含了豐富的密碼學(xué)算法和密碼分析工具,還提供了詳細(xì)的文檔來解釋算法以及可能的攻擊,并通過封裝對外提供可視化的圖形界面。因此,CrypTool既可以作為密碼學(xué)基本概念的可視化工具(包括數(shù)字簽名、對稱非對稱、混合加密、協(xié)議等),又可以被IT專家用于評估算法。
CrypTool目前主要有3個(gè)版本:CrypTool-I、CrypTool-2和JCryptool。
CrypTool-l是使用C++實(shí)現(xiàn)的Windows應(yīng)用程序,可用于算法可視化展示和加密一解密一破譯實(shí)驗(yàn)。主要功能不但涵蓋古典密碼學(xué)和現(xiàn)代密碼學(xué)的所有算法及部分算法的動(dòng)態(tài)演示過程,還包括了消息認(rèn)證、數(shù)字簽名等其他信息安全功能的實(shí)現(xiàn),以及安全協(xié)議如密鑰交換協(xié)議Diffie-Hellman的分步實(shí)現(xiàn)過程。
CrypTool-2是基于可視化編程概念在Visual Studio平臺(tái)上使用C#實(shí)現(xiàn)的Windows應(yīng)用程序,支持基于圖形化密碼學(xué)算法組件來創(chuàng)建項(xiàng)目描述密碼在機(jī)密性、完整性等方面的應(yīng)用,用戶可以將最初始的各種算法進(jìn)行組合和變換得到可視化的結(jié)果。CrypTool-2靈活性還體現(xiàn)在開發(fā)人員可以通過插件在.net框架下增加新功能。
JcrypTool是在Eclipse開發(fā)環(huán)境中使用Java語言實(shí)現(xiàn)的應(yīng)用程序,在CrypTo011.4的基礎(chǔ)上豐富了內(nèi)容,既包含一些算法體驗(yàn),也為開發(fā)人員提供實(shí)現(xiàn)插件程序的環(huán)境。Jcryptool支持Windows、Linux等多種操作系統(tǒng),也支持插件程序,使得新的加密算法和協(xié)議可以很容易地被添加到環(huán)境中。
這3個(gè)版本都需要下載和安裝后才能得以運(yùn)行,在線運(yùn)行的CrypTool-Online則無需下載安裝,只要訪問www.cryptool-online.org
3 實(shí)驗(yàn)設(shè)計(jì)思路
高等教育發(fā)展的核心任務(wù)是提高質(zhì)量。高等教育中,實(shí)踐教學(xué)是學(xué)生理解并運(yùn)用理論知識(shí)、接受科學(xué)思維方法、培養(yǎng)創(chuàng)新意識(shí)和能力的重要手段。要提高實(shí)踐教學(xué)的質(zhì)量,就需要面向不同實(shí)踐能力學(xué)員、把創(chuàng)新教學(xué)的理念貫穿于實(shí)踐環(huán)節(jié)始終,引領(lǐng)學(xué)生以濃厚的興趣完成實(shí)踐教學(xué)的每個(gè)環(huán)節(jié)。
密碼技術(shù)是信息安全的關(guān)鍵技術(shù)之一,幾乎所有的信息安全技術(shù)都應(yīng)用到密碼技術(shù)。密碼設(shè)計(jì)與分析具有深入的理論性,但是密碼算法只有實(shí)際實(shí)現(xiàn)才能應(yīng)用,才能發(fā)揮密碼算法的作用。因此,密碼學(xué)實(shí)踐能力成為信息安全專業(yè)學(xué)生應(yīng)當(dāng)具備的實(shí)踐能力的重要組成部分。
作為密碼學(xué)理論課程的配套實(shí)驗(yàn)課程,密碼學(xué)實(shí)驗(yàn)課程的人才培養(yǎng)目標(biāo)更加強(qiáng)調(diào)密碼技術(shù)的實(shí)現(xiàn)應(yīng)用。通過密碼學(xué)實(shí)踐能力的培養(yǎng),學(xué)生應(yīng)掌握密碼標(biāo)準(zhǔn)算法的實(shí)現(xiàn)與應(yīng)用能力,能夠使用常用密碼軟件工具,進(jìn)而具有一定的密碼應(yīng)用能力。
實(shí)驗(yàn)任務(wù)應(yīng)包括3個(gè)層次:①幫助學(xué)生理解密碼學(xué)理論知識(shí),尤其是理解加密算法和密碼分析方法;②培養(yǎng)提高學(xué)生將理論知識(shí)轉(zhuǎn)換為實(shí)際成果的能力,主要是將算法編程實(shí)現(xiàn)成為可以實(shí)際應(yīng)用的程序;③拓展學(xué)生的視野,設(shè)置常用密碼應(yīng)用的模擬情景,為學(xué)生將來的實(shí)際工作打下基礎(chǔ)。
密碼學(xué)主要包括古典密碼體制、現(xiàn)代密碼體制、消息認(rèn)證、身份認(rèn)證與數(shù)字簽名等內(nèi)容,它們各自具有不同的特點(diǎn),實(shí)踐內(nèi)容選取的方向也就各不相同。
古典密碼學(xué)的算法通常都比較簡單易于理解,而且算法的編程實(shí)現(xiàn)和應(yīng)用編程難度不大,所以這部分的實(shí)驗(yàn)項(xiàng)目多偏向于密碼分析的應(yīng)用;現(xiàn)代密碼學(xué)特點(diǎn)通常算法都比較難,不容易理解,獨(dú)立編程實(shí)現(xiàn)難度較大,加解密過程復(fù)雜,所以這部分的實(shí)驗(yàn)項(xiàng)目多偏向于對算法和編碼過程的理解、算法的分析比較、算法的應(yīng)用編程;身份認(rèn)證與數(shù)字簽名的實(shí)際應(yīng)用較廣泛,所以這部分的實(shí)驗(yàn)項(xiàng)目多偏向于以模擬應(yīng)用加強(qiáng)對相關(guān)原理的理解。
4 實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)
(1)代換密碼的手工破譯實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖亲寣W(xué)生掌握基于Cryptool工具進(jìn)行手工密碼破譯的方法,加深學(xué)生對密碼學(xué)英文術(shù)語的印象。實(shí)驗(yàn)內(nèi)容是已知給定的一段密文中第一個(gè)密文詞Ivxzoo對應(yīng)的明文是“Recall”,使用CrypTool進(jìn)行密碼分析,并恢復(fù)加密密鑰和明文。實(shí)驗(yàn)結(jié)果要求提交以上代換密碼使用的密鑰即字母映射表以及恢復(fù)出的明文。
(2)愷撒密碼破譯實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生掌握在Cryptool軟件環(huán)境中使用頻率分析破譯愷撒密碼的方法,學(xué)會(huì)使用熵值、字母頻率等工具進(jìn)行明文和密文的比較,理解唯密文分析的過程和結(jié)果。實(shí)驗(yàn)內(nèi)容為已知給定的一段密文是基于愷撒密碼加密的,利用CrypTool工具對其進(jìn)行破譯;計(jì)算明文和密文的字母頻率分布并比較,總結(jié)明密文字母頻率滿足的規(guī)律并給出解釋;計(jì)算明文和密文的熵值,比較明密文熵值的規(guī)律并給出解釋;思考愷撒密碼成功破譯條件:當(dāng)文檔少于20個(gè)字符時(shí)破譯成功概率。實(shí)驗(yàn)結(jié)果要求提交實(shí)驗(yàn)中得到的密鑰、熵值、明密文字母頻率分布圖、愷撒密碼成功破譯的條件。
(3)維吉尼亞密碼破譯實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生掌握在Cryptool軟件環(huán)境中進(jìn)行多表加密算法唯密文分析的方法,理解字母頻率、自相關(guān)等密碼分析工具的使用原理。實(shí)驗(yàn)內(nèi)容為已知給定的密文是使用維吉尼亞密碼加密的,破譯并解釋破譯原理;比較明文和密文的字母統(tǒng)計(jì)頻率并給出解釋;計(jì)算明文和密文熵值并給出解釋。實(shí)驗(yàn)結(jié)果要求提交密鑰、明密文字母頻率分布圖、熵值。
(4) Hill密碼破譯實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生掌握在Cryptool軟件環(huán)境中對Hill密碼進(jìn)行已知明文分析的過程,理解破譯原理。實(shí)驗(yàn)內(nèi)容是根據(jù)已知的利用HILL密碼加密的明文和對應(yīng)密文,破譯該密碼使用的密鑰,并解釋破譯原理。實(shí)驗(yàn)結(jié)果要求提交密鑰和體現(xiàn)密碼分析過程的重要截圖。
(5) DES算法的加密和破譯實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生掌握在Cryptool軟件環(huán)境中使用DES算法進(jìn)行加密的方法,理解窮舉破譯的過程和結(jié)果。實(shí)驗(yàn)內(nèi)容是分別采用DES-ECB和DES-CBC算法加密同一個(gè)字符串,比較得到的兩組密文之間的差異,并給出解釋;分別加密兩個(gè)有部分差異的字符串,比較兩組密文的差異并給出解釋;使用DES-CBC和Triple-DES( CBC)分別加密一段相同的明文,比較窮舉破解所需要的時(shí)間。實(shí)驗(yàn)結(jié)果要求提交對DES算法的各種情況分析結(jié)果。
(6) RSA破譯和與AES的性能對比實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生掌握在Cryptool軟件環(huán)境中使用RSA進(jìn)行加密的方法,體驗(yàn)大因子分解得到大素?cái)?shù)的過程及其安全性。實(shí)驗(yàn)內(nèi)容是根據(jù)給定的RSA模數(shù)N、公鑰e和密文,恢復(fù)出明文;新建一個(gè)25MB大小的文件,分別利用AES和RSA算法對其進(jìn)行加解密,并對比AES和RSA加密和解密性能,分析它們性能差異的原因。實(shí)驗(yàn)結(jié)果要求提交分析出的私鑰和明文,AES和RSA性能分析結(jié)果。
(7) AES-RSA混合加密實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生通過實(shí)驗(yàn)加深理解對稱密碼體制和公鑰密碼體制作用,理解會(huì)話密鑰的作用和基于公鑰加密進(jìn)行會(huì)話密鑰分發(fā)的流程。實(shí)驗(yàn)內(nèi)容是按照指定的流程完成原理體驗(yàn),包括體驗(yàn)混合加密流程,解釋此過程中涉及的session key、asymmetric key各自發(fā)揮的作用,體驗(yàn)解密流程并解密原理以及解密過程中遇到的PIN的作用、私鑰作用。
(8)散列函數(shù)的性質(zhì)驗(yàn)證實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)康氖菫榱俗寣W(xué)生掌握在Cryptool軟件環(huán)境中使用散列函數(shù)生成散列值的方法,并驗(yàn)證散列函數(shù)的一些基本性質(zhì)。實(shí)驗(yàn)內(nèi)容是分別使用MD5、SHA-1、SHA-256等算法生成散列值,觀察輸入長度與輸出長度之間的關(guān)系,不同散列算法產(chǎn)生的輸出長度的區(qū)別;觀察改變輸入1個(gè)字符時(shí),輸出發(fā)生的改變,并結(jié)合散列函數(shù)實(shí)現(xiàn)給出解釋;對散列函數(shù)的基本性質(zhì)進(jìn)行驗(yàn)證;對散列函數(shù)存在沖突/碰撞給出理論解釋。實(shí)驗(yàn)結(jié)果要求提交各種分析驗(yàn)證的結(jié)果截圖及說明。
5 結(jié)語
從新的信息安全專業(yè)人才培養(yǎng)目標(biāo)、實(shí)驗(yàn)課程標(biāo)準(zhǔn)出發(fā)設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目,并利用CrypTool T具驗(yàn)證實(shí)驗(yàn)結(jié)果,在教學(xué)中取得了較好的教學(xué)效果。下一步應(yīng)充分利用CrypTool工具的3個(gè)不同版本,根據(jù)它們各自的特點(diǎn),進(jìn)一步完善和豐富各類實(shí)驗(yàn)內(nèi)容,特別是建設(shè)密碼應(yīng)用系統(tǒng)類綜合實(shí)驗(yàn)項(xiàng)目。實(shí)驗(yàn)項(xiàng)目內(nèi)容更加貼近當(dāng)代商務(wù)、公務(wù)、軍事等與生活工作密切相關(guān)的應(yīng)用情景,使這些基于CrypTool的實(shí)驗(yàn)更好地為應(yīng)用密碼學(xué)的教學(xué)和實(shí)踐服務(wù)。在激發(fā)學(xué)生對密碼技術(shù)產(chǎn)生興趣之后,能培養(yǎng)提高學(xué)生將理論知識(shí)轉(zhuǎn)換為實(shí)際成果的能力,同時(shí)又能拓展學(xué)生的視野,使其興趣長久、能力持續(xù)。