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