密码学辅助教学系统的设计与实现*
2014-09-06滕明英王玉斌段桂华
滕明英,王玉斌,杨 雪,段桂华
(1.中南大学信息科学与工程学院,湖南 长沙 410083;2.长沙矿山研究院有限责任公司设计中心,湖南 长沙 410012)
密码学辅助教学系统的设计与实现*
滕明英1,王玉斌1,杨 雪2,段桂华1
(1.中南大学信息科学与工程学院,湖南 长沙 410083;2.长沙矿山研究院有限责任公司设计中心,湖南 长沙 410012)
针对目前密码学教学过程中存在的一些问题,设计并实现了一个密码学辅助教学系统.该系统可以依据用户输入的参数,将密码算法分步骤向用户动态展示算法执行过程中数据的变化情况,并利用Canvas软件以图形方式向用户动态展示密码算法的工作流程.与同类软件对比及并发性能测试结果表明,该系统不仅能帮助学生直观深入地理解抽象的密码算法原理及工作流程,还在结构、应用大小及实验数量上具有较好的竞争优势,在高并发环境下依旧能够保持优良的性能.
密码学;辅助教学;动态展示;Canvas
密码学课程作为国内信息安全专业的基础必修课,其教学效果直接影响后续专业课程的教学质量和学生对信息安全专业的整体把握.然而,在传统的密码学教学过程中教师多以板书及PPT演示辅助教学,多数是使用静态图示展示密码算法的流程,而无法形象地将算法的执行过程及数据的变化情况动态展示给学生,使得学生难以直观地认识、深入地理解密码算法原理及其流程[1].文献[2]指出密码学课程通常要求学生对代数及数论等知识有较为出色的理解能力,如果没有一些详细的示例很难使学生真正理解密码算法是如何工作的.因此,一些相关的加解密软件被引入到教学过程中以辅助密码学的课堂和实践教学,提供更多的示例,如开源软件CAS辅助教学[3]、第三方工具包CrypTool辅助教学[4]等.但是这些工具集成度不够高,且对运行环境有配置要求.
为了解决传统的密码学教学过程中存在的问题,国内外许多高校和研究机构开始研究和开发一些密码学辅助教学系统.文献[5]设计并实现了一个交互式可视化的DES算法演示系统,以图形化的方式展示DES算法的工作流程及其内部数据的变化过程.文献[6]使用虚拟机和Ubuntu系统搭建了一个密码学实验平台,文献[7]设计并实现了一个用于辅助密码学教学的集成开发环境SUNSET.但这些系统局限于展示密码算法的代数运算过程及中间结果,并不能以图形化方式直观、形象地演示密码算法的工作流程.
在国内的研究中,文献[8-9]采用组件的方式设计并实现了密码学虚拟实验平台,避免了密码算法中相同原理小算法的重复编程,但对于组件较多的密码算法,其实验过程将变得十分繁琐且耗时,因此并不实用.文献[10]开发的基于ASP.NET的密码学实验教学网站,注重对关键过程的验证和呈现,但密码算法涉及的计算工作主要在服务器完成,在高并发或恶意提交计算请求的情况下服务器性能及安全问题存在隐患.文献[11]设计并实现了密码学课程交互式算法演示系统,能较好地呈现交互操作和动态过程演示,但由于该系统为Windows应用程序,每台教学主机都装有该应用程序,其更新和升级时工作量较大.
针对现有的密码学辅助教学软件和实践平台存在的一些问题,笔者采用HTML5技术,设计和开发了密码学辅助教学系统(Cryptography Aided Instruction System,CAIS).系统采用B/S结构设计,密码算法涉及的计算工作全部由客户端完成,有效地避免了服务器的性能及安全问题.该系统可以依据用户输入的参数,将密码算法分步骤向用户动态展示算法执行过程中数据的变化情况,并利用Canvas软件以图形方式向用户动态展示密码算法工作流程.
1 系统结构
(1)采用B/S结构设计.
目前已有的同类软件从系统结构的角度主要分为3类:B/S结构应用程序、C/S结构应用程序和桌面应用程序.其中C/S结构应用程序和桌面应用程序都需要预先在用户主机上安装,而且一旦应用程序进行了更新,每台用户主机上的应用程序都需要进行相应的更新,整体所需的时间和开销较大.而B/S结构的应用程序则无需预先在用户主机上进行安装,每次只需要通过特定的网址访问服务器,就可以在用户主机的浏览器上运行相应的Web应用程序.B/S结构的应用程序在进行更新时只需要将服务器端的文件进行更新即可,之后用户主机再次访问服务器时就会运行更新后的Web应用程序了.此外,由于目前浏览器的缓存技术较为成熟,使得再次访问服务器时不会重复下载相同的文件,很大程度上减少了流量的浪费.因此,该系统采用具有无需安装、易更新和维护等优势的B/S结构设计.
(2)所有的计算工作均由客户端完成.
在确定使用B/S结构设计密码学辅助教学系统后,就会面临是由服务端来完成计算工作还是由客户端来完成计算工作这一问题.如果由服务端完成计算工作,就需要由Web前端向服务器提交请求并从服务器返回的信息中获取计算结果;如果由客户端完成计算工作,可以选用客户端脚本语言(如JavaScript)编写相应的计算模块,并从调用计算模块得到的返回值中获取计算结果.虽然这2种方式在技术上都是可行的,但如果由服务端完成计算工作,就势必需要考虑服务器的安全问题.由于密码学实验中涉及大量数学计算,有些计算过程如果所需的参数值设置不当,因此可能需要很长时间才能够计算出结果.这样,如果人为恶意提交附带不当的参数值的请求或并发请求数过多时,就可能导致服务器CPU满负荷工作,致使服务器运行缓慢、无法响应甚至死机,严重影响其他客户端对服务器的访问.因此,为了保证服务器的安全,势必要引入一些安全机制,如对提交的请求中参数逐一仔细地验证其是否在合理的范围内,但由于密码算法实验的数量较多,这样做会增加不少的工作量.如果由客户端完成计算工作,就不需要考虑上述服务器的安全问题,只需要在客户端对用户输入的实验所需的参数进行验证.即便人为恶意地迫使应用程序使用不当的参数值进行计算,至多会使自己的客户机上的浏览器无法响应,而不会影响到服务器的安全.考虑到密码学辅助教学系统的主要作用是进行演示实验,可以将参数范围限定得较为窄小,达到演示的目的即可,这样在现有的硬件条件下客户端完全有能力完成所需的计算工作.同时,这样还可以避免了网络传输中的延时,使应用程序能够更快地响应用户的操作.
综上所述,相比于由服务端完成计算工作,由客户端完成计算工作更易解决服务器安全问题,且在与用户交互的过程中响应速度更快,因此笔者提出的密码学辅助教学系统的所有计算工作均在客户端完成.
2 系统主要模块设计与实现
2.1系统功能模块
图1 密码学辅助教学系统功能模块间的关系
为了实现系统的可拓展性和可维护性,易于添加某个算法实验或维护某个算法实验的代码,密码学辅助教学系统各个密码算法实验间是相互独立的.从单个实验的角度来看,系统以Web页面为显示平台,通过由客户端脚本语言JavaScript编写而成的数值计算模块、图形计算模块及流程控制模块,控制完成对算法的执行过程中内部数据变化及算法工作流程的示意图的动态展示.各个功能模块间的关系如图1所示.
系统和用户完成一次完整的交互大致可以分为以下几个步骤:
(1)用户在Web页面上输入计算所需的参数并点击相应的按钮.
(2)流程控制模块获取用户输入的计算所需的参数,调用数值计算模块并传递相应的计算所需的参数.
(3)数值计算模块将计算结果返回给流程控制模块,并由流程控制模块将其显示到Web页面相应的位置上.
(4)流程控制模块获取Web页面上的画布及用户输出的计算所需的参数,调用图形计算模块,并传递画布及相应的计算所需的参数.
(5)图形计算模块依据传递的参数在画布上绘制相应的图形.
(6)用户看到变化后的Web页面.
2.2数值计算模块
数值计算模块的主要功能是根据传入的用户输入的参数,计算并返回需要在Web页面显示的类似如图2所示的数据信息.
图2 ElGamal算法公钥加密实验截图
在各个密码算法中,有些数值计算过程需要频繁被调用,如快速指数算法,而有些数值计算过程则只会在少数密码算法实验中才会被调用,如根据明文整数、随机数及公钥计算ElGamal算法加密后的密文整数对.将频繁调用的计算过程封装成一个基本的数值计算模块,既可以提高代码的复用性,也便于代码的维护.因此,数值计算模块分为基础数值计算模块和定制数值计算模块.
图3快速指数算法
(1)基础数值计算模块.基础数值计算模块只有一个,将频繁调用的数值计算功能以成员函数的形式封装到一个名为Mathematics的JavaScript对象中,供其他模块调用.以快速指数算法为例,在Mathematics对象中编写一个名为powmod的函数并实现图3所示的算法,当系统的其他模块需要进行快速指数运算时,就可以直接调用Mathematic对象中的powmod函数了.
(2)定制数值计算模块.每个密码算法实验都对应着一个定制数值计算模块,通过调用基础数值计算模块,结合自身特有的数值计算过程计算并返回需要在Web页面上显示的数据信息.
以ElGamal算法公钥加密实验为例.当用户在进行公钥加密的实验时,输入明文整数m并点击确定后,Web页面应当如图2所示的那样向用户展示计算得到的密文对a和b的值,这样就需要定制数值计算模块具有依据明文整数m、随机数k以及公钥计算密文对a和b的功能.编写一个名为ElGamal的JavaScript对象,并将该对象作为ElGamal算法实验的定制数值计算模块,并封装一个名为encrypt的函数去实现如图4所示的算法.在计算a和b的过程中还需要用到快速指数算法,但无需重新编写实现快速指数算法的函数,直接调用之前编写好的基础数值计算模块Mathematics对象中的powmod函数即可.这样当需要显示密文对a和b时就可以直接调用ElGamal对象中的encrypt函数来获取a和b的值.
图4ElGamal加密算法
2.3图形计算模块
图5 MD5算法流程截图
该模块根据传入的Canvas画布以及与绘制图形有关的一些参数,在Canvas画布上绘制类似如图5所示的密码算法流程图.
图5中,直线、文本框等都会频繁地在各类密码算法实验的算法流程示意图中出现,将绘制这些基本图形的方法封装成一个基本的图形计算模块,既可以提高代码的复用性,又便于代码的维护.因此,图形计算模块分为基础图形计算模块和定制图形计算模块.
(1)基础图形计算模块.基础图形计算模块只有1个,将绘制频繁出现的基础图形的功能以成员函数的形式封装到一个名为Graphics的JavaScript对象中.虽然在Canvas API中提供的绘图函数只能绘制一些如直线、圆、矩形等简单的图形,但是可将Canvas API中提供的这些简单的绘图函数组合成为能够绘制一些频繁出现的基础图形计算模块.
(2)定制图形计算模块.每个密码算法实验都对应着一个定制图形计算模块,通过组合调用基础图形计算模块中的绘图函数来绘制复杂的密码算法流程图.
2.3流程控制模块
流程控制模块的主要功能为获取Web页面上的Canvas对象和用户在Web页面上输入的参数,调用数值计算模块并将返回的结果显示在Web页面的指定位置上,调用图形计算模块绘制密码算法实验演示图,以及根据用户的操作完成对实验流程的控制.上述功能可通过基本的JavaScript语句实现,流程控制模块实现控制实验流程如下:
(1)在用户进行密码算法实验时,系统会依据用户的实验进度逐一向用户展示密码算法的各个步骤,这就要求系统能够实现对实验流程的控制,即根据用户的操作情况控制向用户展示的内容.在Web页面的设计中采用DIV+CSS框架,通过CSS的display属性可以控制DIV是否显示,因此可以利用这一特点达到根据用户的操作控制向用户展示内容的目的.
(2)将一个实验分解成离散的若干个步骤,每个步骤都对应一张流程控制表,用于标明实验过程中涉及到的Web页面上的各个DIV的ID属性值以及相应的CSS的display属性值.当实验进行到一个步骤后,按照流程控制表中记录信息逐一修改各个DIV相应的CSS的display属性值,从而控制每个DIV是显示还是隐藏,达到根据用户的操作情况控制向用户展示内容的目的.
3 系统测试
3.1与同类软件的对比
文中选取系统结构、应用大小及实验数量3个对比项,将设计开发的密码学辅助教学系统CAIS与国外的同类软件CrypTool1和CrypTool2[12]以及国内的同类软件SimpleCTS[13]进行了对比实验,实验结果如表1所示.
表1 与同类软件的对比
从表1可知:
(1)就系统结构而言,CAIS采用的B/S结构应用程序相对于桌面应用程序,具有无需安装、便于更新和维护等优势.
(2)就应用大小而言,CAIS的系统大小只有CrypTool1和CrypTool2的大小的1/30左右,能够更加节省客户机的磁盘空间,同时也便于在网络上进行传输.由于SimpleCTS为商用付费使用软件,只能从开发SimpleCTS的公司提供的白皮书中查阅其相关参数和功能,因此没能获取该应用的实际大小.
(3)就实验数量而言,CAIS提供的实验数量目前相比CrypTool1还有一定差距,但多于SimpleCTS.由于CrypTool2是基于组件思想设计的,理论上可以用已有的密码算法组件组合出无穷多的实验,但在进行实验时需要人工组合各个组件,因此当进行所需组件较多的密码算法实验时,实验过程将变得十分繁琐且耗时.
总之,相比于CrypTool1,CrypTool2及SimpleCTS,文中提出的密码学辅助教学系统在结构、应用大小及实验数量方面均具有一定的竞争力.
3.2性能测试.
由于CAIS采用B/S结构设计且应用场景可能是学生或老师同时使用,因此需要系统在高并发环境下依旧能够保持优良的性能.
图6 并发环境下系统性能测试结果
为了测试密码学辅助系统在高并发环境下的性能,笔者将CAIS部署到了IIS服务器上,并使用Apache Benchmark[14]对其并发性能进行了测试.在局域网环境下模拟了并发用户数量为20,50,100,200,500,1 000等若干个测试用例且设定每个用户连续请求100次,测试服务器对每个请求的平均响应时间,其测试结果如图6所示.
测试结果表明,服务器平均响应时间基本与并发用户数成正比,并没有因为并发用户的增加导致服务器平均响应时间骤增.
4 结语
为了使学生直观地认识、深入地理解密码算法的原理及其工作流程,笔者设计并实现了一个密码学辅助教学系统.该系统可以依据用户输入的参数,将密码算法分步骤向用户动态展示算法执行过程中数据的变化情况,并利用Canvas以图形方式向用户动态展示密码算法工作流程.该系统相比于现有的同类软件主要具有以下几个特点:
(1)在教学方面,克服了传统PPT演示辅助教学存在的演示示例固定、不能灵活动态展示算法中间过程的缺点;能够将密码算法流程进行准确、详细地分解,向用户逐一展示密码算法执行过程中内部数据的变化情况,有利于学生对算法原理的分析和理解.
(2)在实验方面,克服了已有的实验软件只能进行输入数据输出结果的算法验证性实验的局限性,能够根据实验进度动态绘制算法流程的示意图,并在图上标明关键计算过程的数据变化情况,为用户提供算法分析.
(3)在性能方面,无需预先在客户机安装系统,节省客户机硬盘空间,且在用户访问系统的过程中各个实验的内容会按需加载,节省流量且响应较快;系统各个密码算法相互独立、没有依赖,在添加新的密码算法实验时,无需更改其他已有系统模块的代码,可维护性和可拓展性强.
[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] 郭 璠,杨路明,段桂华.基于组件的密码学虚拟实验室的设计与实现[J].计算机工程与设计,2009,29(24):6 353-6 357.
[9] 张京良,刘珑龙.组件式密码学课堂演示实验设计[C].2011年全国密码学与信息安全教学研讨会.北京:《信息安全与通信保密》杂志社,2011:1-3.
[10] 段旭良.基于ASP.NET的密码学实验教学网站的实现与应用[J].计算机与现代化,2010(6):80-83.
[11] 黄新平.密码学课程交互式算法演示系统的开发与应用[J].软件,2013,34(6):8-12.
[12] CRYPTOOL PORTAL [EB/OL].[2014-05-12].http://www.cryptool.org/en,.
[13] SimpleCTS:密码学辅助教学系统[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—),女,湖南新化人,中南大学信息科学与工程学院副教授,主要从事网络安全、密码学研究;E-mail duangh@csu.edu.cn.
G642
A
10.3969/j.issn.1007-2985.2014.06.008