楊建強 吳中博 李學鋒 鄭毅
摘? 要: 密碼學是“信息安全基礎(chǔ)”課程的重要教學內(nèi)容,但其對應(yīng)的實驗卻比較難以設(shè)計。使用CrypTool設(shè)計了7個密碼學類的實驗,囊括密碼學的重要知識點,每個實驗難易適度、工作量適中,非常適合用作“信息安全基礎(chǔ)”課程的密碼類實驗。使用結(jié)果表明,CrypTool明顯促進了學生對密碼學相關(guān)知識的理解和掌握。
關(guān)鍵詞: CrypTool; 信息安全基礎(chǔ); 密碼學; 實驗
中圖分類號:G642.0? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2021)09-88-04
Abstract: Cryptography is an important teaching content in the "Information Security Fundamentals" course, but its experiments are difficult to design. In this paper, seven cryptography experiments are designed by using CrypTool, which totally covers all the important cryptography knowledge points. Each experiment is moderately difficult, and its workload is moderate also, suitable for the cryptography experiments of the "Information Security Fundamentals" course. The results show that the use of CrypTool obviously promotes students' understanding and mastery of cryptography-related knowledge.
Key words: CrypTool; information security fundamentals; cryptography; experiment
0 引言
隨著萬物互聯(lián)、5G、大數(shù)據(jù)時代的到來,網(wǎng)絡(luò)信息安全正變得越來越重要,整個社會對信息安全人才的需求不斷增長。很多高校的相關(guān)專業(yè)都開設(shè)了信息安全基礎(chǔ)類的課程[1],特別是計算機類的專業(yè)。信息安全基礎(chǔ)課程具有很強的專業(yè)性和綜合性,教學內(nèi)容比較多,其中最重要的教學內(nèi)容是密碼學,包括古典密碼、現(xiàn)代對稱密碼、公鑰密碼、哈希函數(shù)和數(shù)字簽名等內(nèi)容。密碼學也被視為其他網(wǎng)絡(luò)信息安全技術(shù)的基礎(chǔ)[2]。信息安全基礎(chǔ)課程的實驗中,通常有不少實驗都與密碼學有關(guān)。以我校計算機類專業(yè)開設(shè)的“信息安全基礎(chǔ)”課程為例,8個實驗中有3個都與密碼學有關(guān),分別是:對稱密碼DES算法實踐、公鑰密碼RSA算法實踐、哈希函數(shù)及數(shù)字簽名。然而,因為密碼學理論性強,概念呈現(xiàn)不夠直觀,同時在“信息安全基礎(chǔ)”課程中并不需要深入到密碼算法的具體細節(jié),所以信息安全基礎(chǔ)課程的密碼學類實驗是比較難設(shè)計的。本文基于CrypTool設(shè)計了7個密碼學類實驗,用于“信息安全基礎(chǔ)”課程。
1 “信息安全基礎(chǔ)”課程中密碼學類實驗面臨的困境
對于“信息安全基礎(chǔ)”這樣的課程,在設(shè)計密碼學類實驗的內(nèi)容時,通常有兩種做法。一種是編寫密碼算法程序,另一種是利用實現(xiàn)了特定密碼算法的軟件工具進行簡單的算法驗證。
對于第一種做法,由于密碼算法的原理都是比較復(fù)雜的,程序代碼量也比較大,所以,一般都會向?qū)W生提供基本完備的密碼算法程序源代碼,學生只需添加少量的關(guān)鍵代碼,完成程序的編譯鏈接,生成的程序能夠正常工作即可。但是,這樣的實驗設(shè)計往往并不能實現(xiàn)實驗的目標,只是讓學生熟悉相關(guān)密碼算法的原理。因為,即使只需添加少量的代碼,學生也需要熟悉算法的幾乎所有細節(jié)、熟悉源代碼所使用的編程語言、讀懂算法的幾乎所有代碼才可以順利完成。這會讓學生花費大量的時間,通常兩個學時的實驗中無法有效、順利地完成實驗任務(wù),而且,對于“信息安全基礎(chǔ)”這門課程來說,也是不必要的。畢竟該課程不同于信息安全專業(yè)的“密碼學”課程,后者會專門介紹各種密碼算法,其實驗通常會深入到密碼算法的具體細節(jié)[3]。而“信息安全基礎(chǔ)”課程的主要目的是讓學生了解信息安全的基本知識、掌握常用的網(wǎng)絡(luò)信息安全技術(shù)。密碼學僅是其教學內(nèi)容的一部分,所以熟悉特定密碼算法的細節(jié)不應(yīng)該成為該課程的教學任務(wù)。
第二種做法通常只要求完成算法的驗證操作,也就是數(shù)據(jù)的加密、解密、指紋計算或簽名驗證等。有些工具可能會提供算法的關(guān)鍵步驟演示或互動操作,但通常比較粗糙。這種實驗設(shè)計難度過低,學生通常只需按部就班地操作即可完成任務(wù),對促進學生理解算法的原理幾乎沒有幫助。
2 CrypTool簡介
CrypTool是一個專門為學習密碼學而設(shè)計的免費的開源軟件。目前有四個版本,CrypTool 1、CrypTool 2、JCrypTool和CrypTool-Online[4]。其中CrypTool 1是使用最廣泛的版本,主要功能包括十多種古典密碼算法和重要的現(xiàn)代密碼算法的實現(xiàn),各種密碼算法分析方法,消息認證、數(shù)字簽名等其他信息安全功能的實現(xiàn),以及若干安全協(xié)議的分步實現(xiàn)過程,重要密碼算法的交互式動態(tài)演示等。
CrypTool 2和JCrypTool是CrypTool 1的后繼版本,提供了比CrypTool 1更加廣泛的功能。比如CrypTool 2允許對各種密碼算法進行組合變換并得到可視化的結(jié)果,JCrypTool可以同時在Linux、Mac和Windows平臺上運行,并允許編程者以插件的形式將新的密碼算法和協(xié)議添加到CrypTool中[5]。CrypTool-Online是在線版本(網(wǎng)址https://www.cryptool.org/en/cto/),無需安裝軟件,通過瀏覽器就能學習各種密碼算法及密碼分析技術(shù)等內(nèi)容。
對于“信息安全基礎(chǔ)”這門課程來說,CrypTool 1的功能已完全能夠滿足密碼學的教學需求,而CrypTool 2和JCrypTool提供的功能則屬于“超綱”內(nèi)容。所以,本文給出的密碼學類實驗都是基于CrypTool 1而設(shè)計的。
3 密碼學類實驗的設(shè)計
3.1 實驗設(shè)計原則
密碼學并不是“信息安全基礎(chǔ)”課程的全部,其在該課程中的教學目標是讓學生熟悉密碼算法的基本原理及應(yīng)用,初步了解破解密碼算法的一些方法。在設(shè)計基于CrypTool的密碼類實驗時,應(yīng)該滿足以下幾個原則:①實驗內(nèi)容要有代表性且與密碼學的某個重要知識點有關(guān);②以能夠促進學生理解密碼學的某個重要知識點為目標;③實驗內(nèi)容不能太難,不能“超綱”,也不能太簡單;④實驗內(nèi)容不能太繁重,也不能太少,最好在一個教學時段內(nèi)(通常2個學時)完成;⑤CrypTool為完成實驗任務(wù)提供了足夠多的動手環(huán)節(jié)。
3.2 密碼類實驗項目及任務(wù)
⑴ 古典密碼實踐
本實驗的目的是讓學生了解古典密碼的基本操作(置換和替代)及古典密碼的弱點,同時也為學生理解現(xiàn)代對稱密碼算法的原理打下基礎(chǔ)。實驗任務(wù)包括:了解Caesar和Vigenère密碼的原理,使用Caesar和Vigenère密碼加密和解密文件。具體內(nèi)容如下。
① 通過Caesar密碼的演示動畫,了解Caesar密碼的原理。
② 選擇一個密鑰(代表移位數(shù)的字母),使用Caesar密碼對一個至少大部分內(nèi)容是英文字母的文本文件進行加密,觀察加密后的文件內(nèi)容。然后,使用同樣的密鑰解密文件,確認是否解密成功。使用Histogram分析工具分別計算明文和密文的字母頻率分布并進行比較,找出明文和密文的字母頻率之間的對應(yīng)關(guān)系。
③ 通過Vigenère密碼的演示動畫,了解Vigenère密碼的原理。
④ 選擇一個密鑰,使用Vigenère密碼對一個至少大部分內(nèi)容是英文字母的文本文件進行加密,觀察加密后的文件內(nèi)容。然后,使用同樣的密鑰解密文件,確認是否解密成功。使用Histogram分析工具分別計算明文和密文的字母頻率分布并進行比較,確認明文和密文的字母頻率之間是否有明確的對應(yīng)關(guān)系。
⑵ 對稱密碼DES算法實踐
本實驗的目的是讓學生了解DES算法基本原理,進而了解現(xiàn)代對稱密碼算法的基本思想;了解壓縮和加密相結(jié)合時的正確做法,這種結(jié)合在后續(xù)的某些安全協(xié)議中會用到。實驗任務(wù)包括:了解DES算法的流程,使用DES算法加密和解密文件,將壓縮和加密結(jié)合起來使用。具體內(nèi)容如下。
① 通過DES算法的流程可視化功能,了解DES算法的流程。
② 選擇一個密鑰,使用采用了某種工作模式(ECB或CBC)的DES算法加密一個包含有英文字符的文件(建議文本文件)并保存到磁盤上。使用同樣的密鑰和工作模式解密加密的文件,確認是否解密成功。使用其他密鑰再解密一次并確認是否成功。
③ 在②的基礎(chǔ)上,增加文件壓縮環(huán)節(jié),分別嘗試“先壓縮后加密文件”和“先加密后壓縮文件”。比較兩種操作結(jié)果文件的大小,確認哪種方式效果更佳。最后完成文件的解密,確認解密是否成功。
⑶ 對稱密碼AES算法實踐
本實驗的目的是讓學生了解AES算法的基本原理,進而了解現(xiàn)代對稱密碼算法的基本思想;了解壓縮和加密相結(jié)合時的正確做法,這種結(jié)合在后續(xù)的某些安全協(xié)議中會用到。實驗任務(wù)包括:了解AES算法的流程,使用AES算法加密和解密文件,將壓縮和加密結(jié)合起來使用。具體內(nèi)容如下。
① 通過AES算法流程可視化功能,了解AES算法的流程。
提醒,CrypTool為AES提供了三種可視化功能,分別是算法流程演示動畫(Animation)、算法探查(Inspector)和算法流程可視化(Flow Visualization)。后兩種深入到算法的細枝末節(jié),不適合作為實驗內(nèi)容,故此處選擇Animation。
② 選擇一種密鑰長度和一個密鑰,使用AES算法加密一個包含有英文字符的文件(建議文本文件)并保存到磁盤上。使用同樣的密鑰解密加密的文件,確認是否解密成功。使用其他密鑰再解密一次并確認是否成功。
③ 在②的基礎(chǔ)上,增加文件壓縮環(huán)節(jié),分別嘗試“先壓縮后加密文件”和“先加密后壓縮文件”。比較兩種操作結(jié)果的文件大小,確認哪種方式效果更佳。最后完成文件的解密,確認解密是否成功。
⑷ 公鑰密碼RSA算法實踐
本實驗的目的是讓學生了解公鑰密碼RSA算法的原理,進而認識到公鑰密碼與現(xiàn)代對稱密碼在實現(xiàn)機制上的不同。實驗任務(wù)包括:熟悉RSA算法的構(gòu)造過程,破解RSA算法,使用RSA算法加密和解密文件。具體內(nèi)容如下。
① 在RSA算法演示界面(RSA Demonstration),通過交互式操作熟悉RSA算法的構(gòu)造過程;用構(gòu)造的RSA算法參數(shù)對輸入的文本進行加密;解密加密后的密文,確認解密是否成功。
為了加深對RSA算法原理的理解,應(yīng)要求學生:指定選擇素數(shù)p和q的范圍,而不是使用默認的范圍值;手工選擇公鑰e,禁止使用默認選擇的值;至少實踐兩遍。
② 破解RSA算法:在RSA算法演示界面(RSA Demonstration),利用選擇的因子分解方法對在①中構(gòu)造的RSA模數(shù)進行因子分解,然后利用分解得到的p和q以及已知的公鑰e破解私鑰d。
為了加深對大整數(shù)進行因子分解的困難性的理解,在①的多次實踐中,應(yīng)要求至少有一次學生必須指定較大的p和q范圍值,以便得到較大的素數(shù),比如值超過2127的素數(shù)。
③ 使用RSA加密和解密文件:選擇一個RSA密鑰對,使用RSA算法加密一個包含有英文字符的文件(建議文本文件)并保存到磁盤上。使用同樣的RSA密鑰解密加密的文件,確認是否解密成功。確認RSA加密和解密中各使用了密鑰對中的哪一個密鑰。使用其他RSA密鑰再解密一次并確認是否成功。
⑸ Diffie-Hellman密鑰交換算法實踐
本實驗的目的是讓學生了解公鑰密碼算法Diffie-Hellman的原理,進而認識到公鑰密碼未必用于加密,同時在一定程度上認識到公鑰密碼與現(xiàn)代對稱密碼在實現(xiàn)機制上的不同。實驗任務(wù)包括:多次用Diffie-Hellman算法(或協(xié)議)完成通信雙方會話密鑰的交換,總結(jié)Diffie-Hellman算法的流程。
① 保持素數(shù)p的默認長度設(shè)置,自動生成較大的Diffie-Hellman算法參數(shù)p和g,自動選擇通信雙方的私鑰,完成Diffie-Hellman算法流程。初步了解每一步的功能。
② 將素數(shù)p的位長度設(shè)置為較小的值(比如6位),自動生成Diffie-Hellman算法參數(shù),自動選擇通信雙方的私鑰,完成Diffie-Hellman算法流程。進一步了解每一步的功能。
③ 將素數(shù)p的位長度設(shè)置為較小的值(如6位),自動生成Diffie-Hellman算法參數(shù),手動選擇通信雙方的私鑰,完成Diffie-Hellman算法流程。進一步了解每一步的功能。
④ 手動設(shè)置Diffie-Hellman算法參數(shù),手動選擇通信雙方的私鑰,完成Diffie-Hellman算法流程。理解每一步的功能。
⑹ 哈希函數(shù)與數(shù)字簽名實踐
本實驗的目的是讓學生了解哈希函數(shù)的特點和作用,以及公鑰密碼的簽名功能,熟悉RSA數(shù)字簽名的原理。實驗任務(wù)包括:了解哈希函數(shù)的特點及功能,創(chuàng)建用于數(shù)字簽名的RSA密鑰對,使用哈希函數(shù)和RSA算法對文檔進行數(shù)字簽名并驗證簽名是否正確。具體內(nèi)容如下。
① 在哈希函數(shù)演示界面(Hash Demonstration)中,使用不同的哈希函數(shù)計算打開的文件(建議文本文件)的指紋(哈希值);對原始文件的內(nèi)容做少量修改,觀察其指紋的變化,以及原始文件的指紋和修改后文件的指紋的不同。
② 選擇RSA算法和RSA模數(shù)長度,輸入個人名稱及保護密鑰對的PIN,創(chuàng)建自己的RSA密鑰對。記下所生成的RSA模數(shù)n和公鑰e的十六進制值。建議在Key identifier字段輸入PIN值,以方便密鑰對的使用。
③ 選擇某種哈希函數(shù)(比如SHA-1),選擇RSA作為簽名算法并選擇在②中創(chuàng)建的RSA密鑰對,對一個文件(建議文本文件)進行簽名。觀察簽名文件的內(nèi)容,保存簽名文件。確認簽名時使用了RSA密鑰對中的哪一個密鑰。確認②中PIN用于保護RSA密鑰對中的哪一個密鑰。
④ 驗證文檔簽名:打開在③中創(chuàng)建的簽名文件,分別使用在②中創(chuàng)建的RSA密鑰對和其他密鑰對驗證簽名,確認簽名是否正確。確認驗證簽名時使用了RSA密鑰對中的哪一個密鑰。
⑺ RSA-AES混合加密實踐
本實驗的目的是讓學生了解對稱密碼和公鑰密碼相結(jié)合時的典型做法。這種做法廣泛應(yīng)用在很多安全協(xié)議中。實驗任務(wù)包括使用RSA-AES混合加密加密和解密文檔,總結(jié)混合加密的流程及要點。具體內(nèi)容如下。
① 在RSA-AES混合加密的交互式界面中,打開一個文件(建議文本文件),生成一個會話密鑰,選擇一個RSA密鑰對。記錄下打開的文件路徑及名字、會話密鑰、得到的RSA密鑰參數(shù)。然后完成對文件的混合加密,觀察原文件的內(nèi)容和加密后的內(nèi)容。確認得到的RSA密鑰參數(shù)是公鑰還是私鑰。確認會話密鑰和RSA密鑰參數(shù)與AES算法或RSA算法的關(guān)系。最后把加密后的結(jié)果保存到文件中。
② 打開在①中生成加密文件,使用逐步解密功能(RSA-AES Decryption)對文件進行解密,并確認解密是否成功。確認解密時使用了RSA密鑰對中的哪一個密鑰,記下這個密鑰。記下會話密鑰。確認它們與在①中記錄的RSA密鑰參數(shù)值及會話密鑰是否相同。
③ 總結(jié)并用文字描述RSA-AES混合加密的解密及解密流程。
4 密碼類實驗的使用
以上共設(shè)計了七個基于CrypTool的密碼學類的實驗,可用于“信息安全基礎(chǔ)”之類的課程的實驗中。除了第⑵、⑶個實驗在實驗?zāi)康暮腿蝿?wù)上有較大的重疊外,其他實驗都是獨一無二的,僅與密碼學的某個重要的知識點有關(guān)。不同學校的“信息安全基礎(chǔ)”課程,教學內(nèi)容上會有或多或少的差異,對密碼學的要求也有不同,實驗學時的多少也有不同,可以根據(jù)實際情況從本文提供的七個密碼類實驗中選擇相應(yīng)的實驗。建議按如下順序進行選擇:⑵(或⑶)、⑷、⑹、⑴、⑺、⑸。如果實驗學時比較充裕,可以選擇全部七個實驗。
本人在我校計算機科學與技術(shù)專業(yè)2018級本科兩個班級的“信息安全基礎(chǔ)”課程中,選擇⑵、⑷和⑹作為密碼學類實驗。實驗中學生的積極性明顯高于往屆;實驗后與學生交流,發(fā)現(xiàn)他們幾乎都準確地理解了實驗所涉及的重要密碼學概念。這表明CrypTool工具確實能夠促進學生對密碼學知識的理解和掌握。
5 結(jié)束語
密碼學是“信息安全基礎(chǔ)”課程的重要教學內(nèi)容,在該課程的實驗中,密碼學類的實驗通常也占有較大的比例。然而,密碼學類實驗卻又比較難以設(shè)計。本文根據(jù)密碼學學習工具CrypTool提供的功能設(shè)計了七個密碼學類的實驗,涉及密碼學中的古典密碼、現(xiàn)代對稱密碼、公鑰密碼、哈希函數(shù)、數(shù)字簽名、混合加密等知識點,給出了每個實驗的目的和任務(wù)。每個實驗都是按照兩個學時的時間設(shè)計的,難易適度、工作量適中。這些實驗項目較好地解決了“信息安全基礎(chǔ)”課程的密碼學類實驗的設(shè)計問題,各個學校的“信息安全基礎(chǔ)”課程可根據(jù)需要從中選擇某些實驗項目作為課程的實驗。本文提供的實驗僅用到CrypTool的第一個版本CrypTool 1,其后繼版本CrypTool 2提供了更多的功能。后續(xù)我們將根據(jù)CrypTool 2的功能,設(shè)計一些高階的密碼學類實驗,為對密碼學有較高教學要求的信息安全類課程的實驗教學提供參考。
參考文獻(References):
[1] 黃達明,仲盛.本科信息安全教學研究最新進展綜述[J].南京信息工程大學學報(自然科學版),2020.12(4):421-430
[2] William Stallings著.網(wǎng)絡(luò)安全基礎(chǔ):應(yīng)用于標準(第5版)[M].清華大學出版社,2015.
[3] 王后珍,張煥國.密碼學課程建設(shè)及教學方法探討[J].高教學刊,2016.7:78-79
[4] The CrypTool Portal[2021-2-3].https://www.cryptool.org/en/
[5] 申麗君,王金雙,陳融,尤俊,袁志堅.CrypTool在密碼學教學中的應(yīng)用[J].計算機工程與科學,2014.36(S1):208-211