滕明英,王玉斌,楊 雪,段桂華
(1.中南大學信息科學與工程學院,湖南 長沙 410083;2.長沙礦山研究院有限責任公司設計中心,湖南 長沙 410012)
密碼學輔助教學系統(tǒng)的設計與實現(xiàn)*
滕明英1,王玉斌1,楊 雪2,段桂華1
(1.中南大學信息科學與工程學院,湖南 長沙 410083;2.長沙礦山研究院有限責任公司設計中心,湖南 長沙 410012)
針對目前密碼學教學過程中存在的一些問題,設計并實現(xiàn)了一個密碼學輔助教學系統(tǒng).該系統(tǒng)可以依據(jù)用戶輸入的參數(shù),將密碼算法分步驟向用戶動態(tài)展示算法執(zhí)行過程中數(shù)據(jù)的變化情況,并利用Canvas軟件以圖形方式向用戶動態(tài)展示密碼算法的工作流程.與同類軟件對比及并發(fā)性能測試結果表明,該系統(tǒng)不僅能幫助學生直觀深入地理解抽象的密碼算法原理及工作流程,還在結構、應用大小及實驗數(shù)量上具有較好的競爭優(yōu)勢,在高并發(fā)環(huán)境下依舊能夠保持優(yōu)良的性能.
密碼學;輔助教學;動態(tài)展示;Canvas
密碼學課程作為國內(nèi)信息安全專業(yè)的基礎必修課,其教學效果直接影響后續(xù)專業(yè)課程的教學質量和學生對信息安全專業(yè)的整體把握.然而,在傳統(tǒng)的密碼學教學過程中教師多以板書及PPT演示輔助教學,多數(shù)是使用靜態(tài)圖示展示密碼算法的流程,而無法形象地將算法的執(zhí)行過程及數(shù)據(jù)的變化情況動態(tài)展示給學生,使得學生難以直觀地認識、深入地理解密碼算法原理及其流程[1].文獻[2]指出密碼學課程通常要求學生對代數(shù)及數(shù)論等知識有較為出色的理解能力,如果沒有一些詳細的示例很難使學生真正理解密碼算法是如何工作的.因此,一些相關的加解密軟件被引入到教學過程中以輔助密碼學的課堂和實踐教學,提供更多的示例,如開源軟件CAS輔助教學[3]、第三方工具包CrypTool輔助教學[4]等.但是這些工具集成度不夠高,且對運行環(huán)境有配置要求.
為了解決傳統(tǒng)的密碼學教學過程中存在的問題,國內(nèi)外許多高校和研究機構開始研究和開發(fā)一些密碼學輔助教學系統(tǒng).文獻[5]設計并實現(xiàn)了一個交互式可視化的DES算法演示系統(tǒng),以圖形化的方式展示DES算法的工作流程及其內(nèi)部數(shù)據(jù)的變化過程.文獻[6]使用虛擬機和Ubuntu系統(tǒng)搭建了一個密碼學實驗平臺,文獻[7]設計并實現(xiàn)了一個用于輔助密碼學教學的集成開發(fā)環(huán)境SUNSET.但這些系統(tǒng)局限于展示密碼算法的代數(shù)運算過程及中間結果,并不能以圖形化方式直觀、形象地演示密碼算法的工作流程.
在國內(nèi)的研究中,文獻[8-9]采用組件的方式設計并實現(xiàn)了密碼學虛擬實驗平臺,避免了密碼算法中相同原理小算法的重復編程,但對于組件較多的密碼算法,其實驗過程將變得十分繁瑣且耗時,因此并不實用.文獻[10]開發(fā)的基于ASP.NET的密碼學實驗教學網(wǎng)站,注重對關鍵過程的驗證和呈現(xiàn),但密碼算法涉及的計算工作主要在服務器完成,在高并發(fā)或惡意提交計算請求的情況下服務器性能及安全問題存在隱患.文獻[11]設計并實現(xiàn)了密碼學課程交互式算法演示系統(tǒng),能較好地呈現(xiàn)交互操作和動態(tài)過程演示,但由于該系統(tǒng)為Windows應用程序,每臺教學主機都裝有該應用程序,其更新和升級時工作量較大.
針對現(xiàn)有的密碼學輔助教學軟件和實踐平臺存在的一些問題,筆者采用HTML5技術,設計和開發(fā)了密碼學輔助教學系統(tǒng)(Cryptography Aided Instruction System,CAIS).系統(tǒng)采用B/S結構設計,密碼算法涉及的計算工作全部由客戶端完成,有效地避免了服務器的性能及安全問題.該系統(tǒng)可以依據(jù)用戶輸入的參數(shù),將密碼算法分步驟向用戶動態(tài)展示算法執(zhí)行過程中數(shù)據(jù)的變化情況,并利用Canvas軟件以圖形方式向用戶動態(tài)展示密碼算法工作流程.
(1)采用B/S結構設計.
目前已有的同類軟件從系統(tǒng)結構的角度主要分為3類:B/S結構應用程序、C/S結構應用程序和桌面應用程序.其中C/S結構應用程序和桌面應用程序都需要預先在用戶主機上安裝,而且一旦應用程序進行了更新,每臺用戶主機上的應用程序都需要進行相應的更新,整體所需的時間和開銷較大.而B/S結構的應用程序則無需預先在用戶主機上進行安裝,每次只需要通過特定的網(wǎng)址訪問服務器,就可以在用戶主機的瀏覽器上運行相應的Web應用程序.B/S結構的應用程序在進行更新時只需要將服務器端的文件進行更新即可,之后用戶主機再次訪問服務器時就會運行更新后的Web應用程序了.此外,由于目前瀏覽器的緩存技術較為成熟,使得再次訪問服務器時不會重復下載相同的文件,很大程度上減少了流量的浪費.因此,該系統(tǒng)采用具有無需安裝、易更新和維護等優(yōu)勢的B/S結構設計.
(2)所有的計算工作均由客戶端完成.
在確定使用B/S結構設計密碼學輔助教學系統(tǒng)后,就會面臨是由服務端來完成計算工作還是由客戶端來完成計算工作這一問題.如果由服務端完成計算工作,就需要由Web前端向服務器提交請求并從服務器返回的信息中獲取計算結果;如果由客戶端完成計算工作,可以選用客戶端腳本語言(如JavaScript)編寫相應的計算模塊,并從調(diào)用計算模塊得到的返回值中獲取計算結果.雖然這2種方式在技術上都是可行的,但如果由服務端完成計算工作,就勢必需要考慮服務器的安全問題.由于密碼學實驗中涉及大量數(shù)學計算,有些計算過程如果所需的參數(shù)值設置不當,因此可能需要很長時間才能夠計算出結果.這樣,如果人為惡意提交附帶不當?shù)膮?shù)值的請求或并發(fā)請求數(shù)過多時,就可能導致服務器CPU滿負荷工作,致使服務器運行緩慢、無法響應甚至死機,嚴重影響其他客戶端對服務器的訪問.因此,為了保證服務器的安全,勢必要引入一些安全機制,如對提交的請求中參數(shù)逐一仔細地驗證其是否在合理的范圍內(nèi),但由于密碼算法實驗的數(shù)量較多,這樣做會增加不少的工作量.如果由客戶端完成計算工作,就不需要考慮上述服務器的安全問題,只需要在客戶端對用戶輸入的實驗所需的參數(shù)進行驗證.即便人為惡意地迫使應用程序使用不當?shù)膮?shù)值進行計算,至多會使自己的客戶機上的瀏覽器無法響應,而不會影響到服務器的安全.考慮到密碼學輔助教學系統(tǒng)的主要作用是進行演示實驗,可以將參數(shù)范圍限定得較為窄小,達到演示的目的即可,這樣在現(xiàn)有的硬件條件下客戶端完全有能力完成所需的計算工作.同時,這樣還可以避免了網(wǎng)絡傳輸中的延時,使應用程序能夠更快地響應用戶的操作.
綜上所述,相比于由服務端完成計算工作,由客戶端完成計算工作更易解決服務器安全問題,且在與用戶交互的過程中響應速度更快,因此筆者提出的密碼學輔助教學系統(tǒng)的所有計算工作均在客戶端完成.
2.1系統(tǒng)功能模塊
圖1 密碼學輔助教學系統(tǒng)功能模塊間的關系
為了實現(xiàn)系統(tǒng)的可拓展性和可維護性,易于添加某個算法實驗或維護某個算法實驗的代碼,密碼學輔助教學系統(tǒng)各個密碼算法實驗間是相互獨立的.從單個實驗的角度來看,系統(tǒng)以Web頁面為顯示平臺,通過由客戶端腳本語言JavaScript編寫而成的數(shù)值計算模塊、圖形計算模塊及流程控制模塊,控制完成對算法的執(zhí)行過程中內(nèi)部數(shù)據(jù)變化及算法工作流程的示意圖的動態(tài)展示.各個功能模塊間的關系如圖1所示.
系統(tǒng)和用戶完成一次完整的交互大致可以分為以下幾個步驟:
(1)用戶在Web頁面上輸入計算所需的參數(shù)并點擊相應的按鈕.
(2)流程控制模塊獲取用戶輸入的計算所需的參數(shù),調(diào)用數(shù)值計算模塊并傳遞相應的計算所需的參數(shù).
(3)數(shù)值計算模塊將計算結果返回給流程控制模塊,并由流程控制模塊將其顯示到Web頁面相應的位置上.
(4)流程控制模塊獲取Web頁面上的畫布及用戶輸出的計算所需的參數(shù),調(diào)用圖形計算模塊,并傳遞畫布及相應的計算所需的參數(shù).
(5)圖形計算模塊依據(jù)傳遞的參數(shù)在畫布上繪制相應的圖形.
(6)用戶看到變化后的Web頁面.
2.2數(shù)值計算模塊
數(shù)值計算模塊的主要功能是根據(jù)傳入的用戶輸入的參數(shù),計算并返回需要在Web頁面顯示的類似如圖2所示的數(shù)據(jù)信息.
圖2 ElGamal算法公鑰加密實驗截圖
在各個密碼算法中,有些數(shù)值計算過程需要頻繁被調(diào)用,如快速指數(shù)算法,而有些數(shù)值計算過程則只會在少數(shù)密碼算法實驗中才會被調(diào)用,如根據(jù)明文整數(shù)、隨機數(shù)及公鑰計算ElGamal算法加密后的密文整數(shù)對.將頻繁調(diào)用的計算過程封裝成一個基本的數(shù)值計算模塊,既可以提高代碼的復用性,也便于代碼的維護.因此,數(shù)值計算模塊分為基礎數(shù)值計算模塊和定制數(shù)值計算模塊.
圖3快速指數(shù)算法
(1)基礎數(shù)值計算模塊.基礎數(shù)值計算模塊只有一個,將頻繁調(diào)用的數(shù)值計算功能以成員函數(shù)的形式封裝到一個名為Mathematics的JavaScript對象中,供其他模塊調(diào)用.以快速指數(shù)算法為例,在Mathematics對象中編寫一個名為powmod的函數(shù)并實現(xiàn)圖3所示的算法,當系統(tǒng)的其他模塊需要進行快速指數(shù)運算時,就可以直接調(diào)用Mathematic對象中的powmod函數(shù)了.
(2)定制數(shù)值計算模塊.每個密碼算法實驗都對應著一個定制數(shù)值計算模塊,通過調(diào)用基礎數(shù)值計算模塊,結合自身特有的數(shù)值計算過程計算并返回需要在Web頁面上顯示的數(shù)據(jù)信息.
以ElGamal算法公鑰加密實驗為例.當用戶在進行公鑰加密的實驗時,輸入明文整數(shù)m并點擊確定后,Web頁面應當如圖2所示的那樣向用戶展示計算得到的密文對a和b的值,這樣就需要定制數(shù)值計算模塊具有依據(jù)明文整數(shù)m、隨機數(shù)k以及公鑰計算密文對a和b的功能.編寫一個名為ElGamal的JavaScript對象,并將該對象作為ElGamal算法實驗的定制數(shù)值計算模塊,并封裝一個名為encrypt的函數(shù)去實現(xiàn)如圖4所示的算法.在計算a和b的過程中還需要用到快速指數(shù)算法,但無需重新編寫實現(xiàn)快速指數(shù)算法的函數(shù),直接調(diào)用之前編寫好的基礎數(shù)值計算模塊Mathematics對象中的powmod函數(shù)即可.這樣當需要顯示密文對a和b時就可以直接調(diào)用ElGamal對象中的encrypt函數(shù)來獲取a和b的值.
圖4ElGamal加密算法
2.3圖形計算模塊
圖5 MD5算法流程截圖
該模塊根據(jù)傳入的Canvas畫布以及與繪制圖形有關的一些參數(shù),在Canvas畫布上繪制類似如圖5所示的密碼算法流程圖.
圖5中,直線、文本框等都會頻繁地在各類密碼算法實驗的算法流程示意圖中出現(xiàn),將繪制這些基本圖形的方法封裝成一個基本的圖形計算模塊,既可以提高代碼的復用性,又便于代碼的維護.因此,圖形計算模塊分為基礎圖形計算模塊和定制圖形計算模塊.
(1)基礎圖形計算模塊.基礎圖形計算模塊只有1個,將繪制頻繁出現(xiàn)的基礎圖形的功能以成員函數(shù)的形式封裝到一個名為Graphics的JavaScript對象中.雖然在Canvas API中提供的繪圖函數(shù)只能繪制一些如直線、圓、矩形等簡單的圖形,但是可將Canvas API中提供的這些簡單的繪圖函數(shù)組合成為能夠繪制一些頻繁出現(xiàn)的基礎圖形計算模塊.
(2)定制圖形計算模塊.每個密碼算法實驗都對應著一個定制圖形計算模塊,通過組合調(diào)用基礎圖形計算模塊中的繪圖函數(shù)來繪制復雜的密碼算法流程圖.
2.3流程控制模塊
流程控制模塊的主要功能為獲取Web頁面上的Canvas對象和用戶在Web頁面上輸入的參數(shù),調(diào)用數(shù)值計算模塊并將返回的結果顯示在Web頁面的指定位置上,調(diào)用圖形計算模塊繪制密碼算法實驗演示圖,以及根據(jù)用戶的操作完成對實驗流程的控制.上述功能可通過基本的JavaScript語句實現(xiàn),流程控制模塊實現(xiàn)控制實驗流程如下:
(1)在用戶進行密碼算法實驗時,系統(tǒng)會依據(jù)用戶的實驗進度逐一向用戶展示密碼算法的各個步驟,這就要求系統(tǒng)能夠實現(xiàn)對實驗流程的控制,即根據(jù)用戶的操作情況控制向用戶展示的內(nèi)容.在Web頁面的設計中采用DIV+CSS框架,通過CSS的display屬性可以控制DIV是否顯示,因此可以利用這一特點達到根據(jù)用戶的操作控制向用戶展示內(nèi)容的目的.
(2)將一個實驗分解成離散的若干個步驟,每個步驟都對應一張流程控制表,用于標明實驗過程中涉及到的Web頁面上的各個DIV的ID屬性值以及相應的CSS的display屬性值.當實驗進行到一個步驟后,按照流程控制表中記錄信息逐一修改各個DIV相應的CSS的display屬性值,從而控制每個DIV是顯示還是隱藏,達到根據(jù)用戶的操作情況控制向用戶展示內(nèi)容的目的.
3.1與同類軟件的對比
文中選取系統(tǒng)結構、應用大小及實驗數(shù)量3個對比項,將設計開發(fā)的密碼學輔助教學系統(tǒng)CAIS與國外的同類軟件CrypTool1和CrypTool2[12]以及國內(nèi)的同類軟件SimpleCTS[13]進行了對比實驗,實驗結果如表1所示.
表1 與同類軟件的對比
從表1可知:
(1)就系統(tǒng)結構而言,CAIS采用的B/S結構應用程序相對于桌面應用程序,具有無需安裝、便于更新和維護等優(yōu)勢.
(2)就應用大小而言,CAIS的系統(tǒng)大小只有CrypTool1和CrypTool2的大小的1/30左右,能夠更加節(jié)省客戶機的磁盤空間,同時也便于在網(wǎng)絡上進行傳輸.由于SimpleCTS為商用付費使用軟件,只能從開發(fā)SimpleCTS的公司提供的白皮書中查閱其相關參數(shù)和功能,因此沒能獲取該應用的實際大小.
(3)就實驗數(shù)量而言,CAIS提供的實驗數(shù)量目前相比CrypTool1還有一定差距,但多于SimpleCTS.由于CrypTool2是基于組件思想設計的,理論上可以用已有的密碼算法組件組合出無窮多的實驗,但在進行實驗時需要人工組合各個組件,因此當進行所需組件較多的密碼算法實驗時,實驗過程將變得十分繁瑣且耗時.
總之,相比于CrypTool1,CrypTool2及SimpleCTS,文中提出的密碼學輔助教學系統(tǒng)在結構、應用大小及實驗數(shù)量方面均具有一定的競爭力.
3.2性能測試.
由于CAIS采用B/S結構設計且應用場景可能是學生或老師同時使用,因此需要系統(tǒng)在高并發(fā)環(huán)境下依舊能夠保持優(yōu)良的性能.
圖6 并發(fā)環(huán)境下系統(tǒng)性能測試結果
為了測試密碼學輔助系統(tǒng)在高并發(fā)環(huán)境下的性能,筆者將CAIS部署到了IIS服務器上,并使用Apache Benchmark[14]對其并發(fā)性能進行了測試.在局域網(wǎng)環(huán)境下模擬了并發(fā)用戶數(shù)量為20,50,100,200,500,1 000等若干個測試用例且設定每個用戶連續(xù)請求100次,測試服務器對每個請求的平均響應時間,其測試結果如圖6所示.
測試結果表明,服務器平均響應時間基本與并發(fā)用戶數(shù)成正比,并沒有因為并發(fā)用戶的增加導致服務器平均響應時間驟增.
為了使學生直觀地認識、深入地理解密碼算法的原理及其工作流程,筆者設計并實現(xiàn)了一個密碼學輔助教學系統(tǒng).該系統(tǒng)可以依據(jù)用戶輸入的參數(shù),將密碼算法分步驟向用戶動態(tài)展示算法執(zhí)行過程中數(shù)據(jù)的變化情況,并利用Canvas以圖形方式向用戶動態(tài)展示密碼算法工作流程.該系統(tǒng)相比于現(xiàn)有的同類軟件主要具有以下幾個特點:
(1)在教學方面,克服了傳統(tǒng)PPT演示輔助教學存在的演示示例固定、不能靈活動態(tài)展示算法中間過程的缺點;能夠將密碼算法流程進行準確、詳細地分解,向用戶逐一展示密碼算法執(zhí)行過程中內(nèi)部數(shù)據(jù)的變化情況,有利于學生對算法原理的分析和理解.
(2)在實驗方面,克服了已有的實驗軟件只能進行輸入數(shù)據(jù)輸出結果的算法驗證性實驗的局限性,能夠根據(jù)實驗進度動態(tài)繪制算法流程的示意圖,并在圖上標明關鍵計算過程的數(shù)據(jù)變化情況,為用戶提供算法分析.
(3)在性能方面,無需預先在客戶機安裝系統(tǒng),節(jié)省客戶機硬盤空間,且在用戶訪問系統(tǒng)的過程中各個實驗的內(nèi)容會按需加載,節(jié)省流量且響應較快;系統(tǒng)各個密碼算法相互獨立、沒有依賴,在添加新的密碼算法實驗時,無需更改其他已有系統(tǒng)模塊的代碼,可維護性和可拓展性強.
[1] 李 曦.密碼學課程實踐教學存在的問題及改進措施[J].高等教育研究,2011,28(2):23-24.
[2] RASS S,ORTNER A O.SUNSET.FFapl-An Integrated Development Environment for Teaching Cryptography[C].IEEE 15th International Conference on Interactive Collaborative Learning (ICL).USA:IEEE Press,2012:1-8.
[3] MCANDREW A.Teaching Cryptography with Open-Source Software[C].Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education(SIGCSE'08).New York:ACM Press,2008:325-329.
[5] ASSEISAH M S,BAHIG H M,DAOUD S S.Interactive Visualization System for DES[M]//Active Media Technology,Germany:Springer Berlin Heidelberg,2010:18-25.
[6] GAFFER S M,ALGHAZZAWI D M.Using Virtual Security Lab in Teaching Cryptography[J].International Journal of Modern Education and Computer Science (IJMECS),2012,4(1):26-32.
[7] BOOCH G,MAKSIMCHUK R A,ENGEL M W,et al.Object-Oriented Analysis and Design with Applications[M].New Jersey:Addison-Wesley,2008.
[8] 郭 璠,楊路明,段桂華.基于組件的密碼學虛擬實驗室的設計與實現(xiàn)[J].計算機工程與設計,2009,29(24):6 353-6 357.
[9] 張京良,劉瓏龍.組件式密碼學課堂演示實驗設計[C].2011年全國密碼學與信息安全教學研討會.北京:《信息安全與通信保密》雜志社,2011:1-3.
[10] 段旭良.基于ASP.NET的密碼學實驗教學網(wǎng)站的實現(xiàn)與應用[J].計算機與現(xiàn)代化,2010(6):80-83.
[11] 黃新平.密碼學課程交互式算法演示系統(tǒng)的開發(fā)與應用[J].軟件,2013,34(6):8-12.
[12] CRYPTOOL PORTAL [EB/OL].[2014-05-12].http://www.cryptool.org/en,.
[13] SimpleCTS:密碼學輔助教學系統(tǒng)[EB/OL].[2014-05-12].http://www.simpleware.com.cn/SWProductContent.aspx?id=4.[14] Ab-The Apache Software Foundation[EB/OL].[2014-05-12].http://httpd.apache.org/docs/2.2/programs/ab.html.
(責任編輯 陳炳權)
DesignandImplementationofCryptographyAssistedTeachingSystem
TENG Mingying1,WANG Yubin1,YANG Xue2,DUAN Guihua1
(1.College of Information Science and Engineering,Central South University,Changsha 410083,Hunan China;2.Design Center,Changsha Institute of Mining Research,Changsha 4l0012,Hunan China)
According to some existent issues in the current teaching of cryptography,a cryptography aided teaching system is designed and implemented.The system uses Canvas to dynamically display the workflow diagram and the inner data changes during the execution of the algorithm.The comparison with the similar software and the concurrent performance tests show that the cryptography assisted teaching system can not only help students understand the abstract cryptography algorithm principles and the intuitive workflow,but also have a competitive edge in structure,application size and the number of experiments;furthermore,it can still perform well in the high-concurrency environment.
cryptography;aided instruction;dynamical display;Canvas
1007-2985(2014)06-0029-06
2014-09-01
國家自然科學基金資助項目(61202495);湖南省科技計劃重點資助項目(2011GK2008);金屬礦山安全技術國家重點實驗室開放基金資助項目(2012KFJJ02)
段桂華(1972—),女,湖南新化人,中南大學信息科學與工程學院副教授,主要從事網(wǎng)絡安全、密碼學研究;E-mail duangh@csu.edu.cn.
G642
A
10.3969/j.issn.1007-2985.2014.06.008