模块化密码学实验教学方法研究
秦艳琳 吴晓平 胡 卫
(海军工程大学信息安全系,湖北武汉430033)
摘 要:密码学实验在密码学课程的教学过程中占据着不可或缺的重要地位。本文分析了目前信息安全本科专业密码学实验教学中存在的主要矛盾,总结实践教学经验,提出模块化的实验教学方法,将密码学实验分为算法验证模块、算法实现模块及综合设计模块三个实验模块,并阐明了各个模块的实际功能、实验手段、实验内容、学时安排及考核规范,确立了密码学实验课程教学的基本思路和总体框架。
关键词:密码学 模块化 密码学实验
1 引 言
密码学课程是信息安全本科专业学生的一门必修课、主干课,课程主要内容包括:密码学基本概念、古典密码、分组密码、序列密码、对称密码、公开密钥密码、认证、数字签名、密钥管理等。开设本门课程的目的是介绍密码学的基本理论、经典的密码体制以及部分密码学的实际应用,让学生掌握密码学的基本概念和理论,熟悉一些具体密码算法的加、解密过程及设计细则,同时在理论学习的基础上逐步掌握密码学的应用技术。由于密码技术是信息安全领域内的核心技术,所以密码学课程也是其他信息安全专业课程的先导课和基础课,学好密码学课程对于信息安全专业学生来讲具有重要意义。
密码学是一门融合了数学、计算机、通信技术及信息系统等多学科知识的交叉学科,具有很强的实践性,仅靠理论讲授难以达到课程设置的目标,必须在教学过程中对密码学的实验教学环节予以高度重视。实验教学不仅是理论教学的辅助手段,即通过实验使学生对密码学的原理、算法设计有更清晰、深入的理解和认识,逐步掌握密码系统设计的基本方法和步骤,而且是理论教学的延伸和发展,使学生在实际操作和编程设计中培养独立思考和动手能力,激发学生将理论知识转化为实际成果的兴趣和热情,让学生通过实践,自主学习和了解书本之外的相关领域的新进展、新应用,使学生在理解算法原理的基础上,结合实际应用背景进行综合的方案设计以解决具体的信息安全问题。
2 密码学实验教学中存在的主要矛盾
目前,各学校的密码学课程基本上都安排了实验环节,但通过调研发现,实验课的实验内容设置、课时安排及考核方式等缺乏统一的规范和要求,教师在实验课的实施过程中通常会遇到以下较难解决的矛盾。
(1)算法复杂与编程实现之间的矛盾。密码学算法本身的复杂度和难度致使密码学实验当中算法编写难度较大。如DES算法,涉及大量的置换运算及非线性代替(S盒),大部分学生对整个算法流程的掌握都感到困难,要求将其编程实现则难度更大。学生在尝试遇阻后,很容易丧失信心,转而选择下载网络上的源代码以应付考核。
(2)学时少与综合设计耗时多的矛盾。目前一般本科院校开设的密码学课程总学时在40~50学时之间,其中实验课学时多为6~14学时。由于学时较少,而要求学生结合实际背景,完成一个相对完整的密码应用系统的综合设计将耗费大量的时间,并且大幅度增加密码学实验教学课时也很难实现,因此部分教师直接将此部分内容排除在密码学实验教学安排之外,导致实验教学成为单纯的理论教学辅助手段,所学理论知识和实际应用之间无法紧密衔接,也使得学生希望将所学知识付诸实际的主观能动性难以发挥。
(3)实验形式多样与考核规范化之间的矛盾。纵观目前各高校密码学实验,大都采用了多种实验形式,如利用已有软件或实验系统对算法进行加、解密验证,对单个密码算法进行编程实现等。但是,不同的实验形式并不都适合用传统的实验报告形式进行考核,由于缺乏统一、细致的考核规范,导致各院校甚至各位教师对密码学实验的考核手段都差别迥异,这将不利于密码学课程的后续发展。
针对以上矛盾,我们对密码学课程的实验教学进行了深入研究,结合本校多年来的实践教学经验,提出了模块化的密码学实验教学设计方案,将密码学实验分为算法验证模块、算法实现模块及综合设计模块三个部分,并明确了各个模块的实际功能、实验手段、实验内容、学时安排及考核规范,希望给各位同行在实际教学中带来一点启发和帮助。
3 模块化密码学实验教学设计
3.1 实验教学三模块的实际功能
在实际教学过程中,密码学实验教学三个模块的具体功能各有不同。
(1)算法验证模块主要提供各类密码算法的验证软件,使学生通过验证性实验,更加清晰地掌握课堂上所学密码算法的原理及流程,并通过实验操作明确密码算法的设计细节、参数选择、工作模式等。算法验证模块是最初级的实验模块,主要帮助学生加深对理论课上所学密码算法的理解。
(2)算法实现模块在学生熟练掌握密码算法原理的基础上,考查学生利用程序语言设计实现相关算法的能力。算法实现模块是较高层次的实验模块,该模块主要帮助学生逐步学会分析算法的结构,提高密码算法编程能力,更好地掌握密码算法设计的机理和方法。
(3)综合设计模块则在前两个模块的基础上,训练学生综合运用所学密码算法原理、已实现的密码算法及密码算法库中的部分算法设计一个针对某类信息安全问题的密码应用系统或方案。综合设计实验有助于加强学生的动手能力,培养学生提出问题、分析问题和解决问题的独立工作能力,同时锻炼学生的思维能力、操作能力和团结合作能力,激发学生的学习兴趣,为学生参加实际工作和今后开展进一步的科学研究打下良好的基础。
综上所述,三个实验模块层层递进,相互促进,共同实现密码学实验教学设置的总体目标。
3.2 实验教学三模块的实验手段
由于密码学实验教学三个模块实现的功能不同,其采取的实验手段也不尽相同。
1.算法验证模块的实验手段
算法验证模块的实验手段主要是各类密码算法的加、解密验证软件或实验系统。此模块的实验操作较为简单,由单个学生利用已有软件在计算机上完成具体密码算法的加、解密,但要求教师选择合适的软件或实验系统。学生应避免选取“黑盒子”式的实验验证软件,因为此类软件仅提供算法加、解密界面,学生除了输入明文(密文)得到密文(明文)外,不能了解算法的总体流程和各个运算部件的具体功能,对加深理解算法的原理没有帮助。好的密码算法验证软件不仅能提供加、解密界面,还能清晰地展现整个算法流程,对算法的每个运算部件的功能都能用动画等直观生动的形式表示出来,学生在课堂讲授中没有完全理解的内容可以通过实验得到进一步理解和巩固。图1是北京城市学院计算中心提供的DES算法软件,该软件将每一轮的加密流程和密钥产生过程都清晰地展现出来,学生还可以通过双击彩色的运算部件进一步了解“扩展”、“压缩”、“移位”等运算部件的具体功能(用动画制作,图2)。
在实际教学过程中,教师可以根据需要自己制作方便学生使用的算法验证软件或实验演示系统,以达到既定的教学目的。
图1 DES算法验证软件单轮流程
图2 DES算法验证软件数据扩展运算
2.算法实现模块的实验手段
算法实现模块的主要实验手段即为算法编程,目前密码学课程中介绍的部分古典密码算法,如仿射密码、Vigenre密码等,算法较为简单,大部分学生可以顺利完成编程实现,但课程中的现代密码算法的编程实现往往超出初学者的能力范围,如传统密码体制中的DES,AES,IDEA等算法,具有整体流程设计繁复、运算部件众多、计算机语言描述困难等特点;公钥密码体制中的RSA、Elgamal、ECC等虽然算法描述较为简单,但参数选择、筛选困难,且数学运算复杂,对于具备一定密码算法编程基础的人员要完全实现这些算法都有相当的难度。初学密码学的学生,面对这样的算法,往往不知道该如何下手。即使个别学生编程能力较强,花费大量时间编写出来的算法程序也是质量较低,出错很高,可用性不强。这部分学生花费了大量精力,所编程序却没有得到肯定,其学习兴趣和积极性受挫,进而与其他同学一样选择网络拷贝。因此,算法实现模块要解决的主要矛盾是如何适当的降低算法编程难度,提高学生在有限时间内完成编程实验的能力。我们在实践中通常采取以下两种手段。
(1)对简化密码算法的编程实现。为了教学方便,部分密码算法有相应的简化版本,如S-DES,其总体流程及结构与DES类似,但分组长度及密钥长度都要小很多。我们可以将该简化算法提供给学生进行编程实现,由于算法本身的难度大大降低,学生编写程序的难度也随之降低。再如RSA等公钥密码算法,可以引导学生完成小参数系统的程序编写,不涉及安全素数选取、大数模幂的快速运算等实现难点,也将降低算法编程难度。这种将简化算法提供给学生进行编程的手段令初次接触密码算法编程的学生乐于接受,也能收到良好的教学效果,但也存在一定的问题,如算法本身难度的降低不利于学生对原始算法结构及安全强度的理解以及难以实际应用等。
(2)对密码算法的组合式编程。在算法本身的复杂度没有降低的情况下,要求学生完成整个密码算法的完整编程难度大、耗时多,使很多学生转而求之于网络下载,且此种编程模式与密码学实验设置的初衷也有所违背。密码学实验的目的主要是加深学生对算法原理的理解并能利用算法解决具体的安全问题,而并非单纯的编程能力训练。因此,我们可以对算法进行“分解”,提供算法中主要运算部件的源代码给学生让其自主拼接成一个完整的程序。这类似于“机器组装”的工作模式,将机器零件或部分半成品提供给工人,工人只要对机器的整体结构有足够的熟悉度即可在图纸的指导下完成整台机器的组装。这种组合式编程可以在一定程度上降低实验难度,激发学生的编程积极性,从而提高教学效果。如AES算法的编程,我们可以将AES算法拆分为字节代换、行移位、列混合、密钥加四个主要功能模块,提供给学生上述几个功能模块的详细完整的代码,并要求学生详细阅读该代码,然后将代码添加至自己建立的工程文档中,在需要实现各种变换时调用这些函数即可。又如DES与IDEA两种分组密码算法都有置换、循环移位、FEISTEL结构、异或等运算部件,学生在完成算法编程时只需调整输入参数,调用相应的算法单元来实现即可。这种积极参考阅读源代码的方式使学生的编程工作量明显下降;同时,优秀的编程风格和代码将成为初学者进入密码算法编程领域最有效的敲门砖。通过这种方式,能避免学生陷入完整程序编写的“困境”,极大地提高学生自主完成算法程序编写的积极性,真正达到密码学实验设置的总体目标。
在实际的算法实现模块中,我们可以将上述两种手段结合起来使用,共同促进学生密码算法编程能力的提高。
3.综合设计模块的实验手段
由于综合设计模块要求学生结合实际设计一个较为完整的密码应用系统,耗时较多,难以在规定学时内完成,我们通常采取以下方式进行:教师选择难易适中的设计题目并公布给学生,3~4名学生自由组合成设计小组,并推选负责人,各个小组自愿选择可以完成的设计题目,也可由学生自己确定感兴趣的设计题目,经教师审核符合要求后即可开始进行设计实验。小组成员团结协作,明确分工,借助网络或其他渠道查阅大量文献资料,共同完成设计任务。本实验模块主要在课外进行,为提高学生的参与积极性,可将本模块的工作与每年一度的全国大学生信息安全竞赛或学生的毕业设计结合起来。
3.3 实验内容及学时安排
表1给出了各个实验模块的具体内容及课时安排。
表1 实验内容及课时安排
3.4 模块化实验的考核规范
三个不同的实验模块功能及实验手段都存在较大差别,因此在实验考核上也应采取不同的方式和规范。
对于算法验证性实验的每个题目,设计具有统一格式的实验报告,如实验目的、实验环境、实验预备知识点、实验步骤、实验思考题等,其中实验预备知识点可要求学生在课前完成,实验步骤可根据算法软件进行设计,注意除了简单的加、解密验证步骤之外,应设计其他算法细节的验证,如DES算法中置换的功能验证等;还应给学生提供自主思考的空间,如提示学生通过实验找到DES的弱密钥,考虑在选择参数不符合要求的情况下RSA加、解密能否正常进行等。实验思考题也应结合所选验证软件精心设计,最好是设置一些学生能在实验过程中找到正确答案的问题。在实验完成后统一检查、批改实验报告,并给出考核分数。
对于算法实现模块的每个题目,为防止学生简单的进行网络拷贝,教师可要求学生在实验规定课时内自主将算法编程实现成为可以实际使用的程序(包括对简化算法编程及复杂算法的组合式编程),并能对所编程序进行详细说明,最后根据程序编写的完整性和可用性给出考核评分。
对于综合设计模块中的题目,教师可要求学生以小组为单位预先提交开题设计书,对所选题目的研究目的、拟采取的研究方案、研究进度、分工安排等进行汇报。最终形成的综合设计实验报告,包括所设计系统的功能介绍、实现方案、性能测试、创新性、总结等。教师可组织小组进行统一答辩,最后根据答辩情况给出考核评定结果,对具有一定创新理念的设计作品可给予较高评价,并推荐参加年度大学生信息安全竞赛。
实验教学的总成绩可通过对上述三个模块的考核成绩加权求和确定,模块权重系数分别为:算法验证模块0.2,算法实现模块0.4,综合设计模块0.4。该系数可根据教学对象的具体情况进行调整。
4 结束语
密码学实验是密码学课程教学中的重要环节,对实现密码学课程设置的总体目标具有特殊意义。本文结合我校的实际情况和多年的密码学教学经验,提出了集算法验证模块、算法实现模块、综合设计模块于一体的密码学实验课程设计方法,并明确了各模块的实际功能、实验手段、实验内容、课时分配及考核方式,以解决目前各高校密码学实验教学中存在的矛盾,促进密码学实验教学质量的不断提高。当然,这仅是对近年教学研究和实践经验的初步总结,今后还需在加强实验室教学环境建设,为学生提供真实、完整的网络安全对抗环境,进行仿真实验教学等环节上加倍努力。
参考文献
吴晓平,秦艳琳,罗芳.密码学[M].第2版.北京:国防工业出版社,2010.
张兴兰.信息安全专业的密码学教学[J].计算机教育,2008(8):85~86.
张瑞霞,姚罡,刘少兵,等.信息安全专业密码学教学改革与实践[J].中国现代教育装备,2011(1):159~160.
温凤桐.现代密码学课程教学方法与探索[J].计算机教育,2009(5):65~67.
孙菁,傅德胜.《密码学》课程教学方法的探索与实践[J].信息网络安全,2009(7):65~67.
何少芳.《密码学》课程教学探讨[J].读与写杂志,2010,7(11):67~68.
李树栋,吴晓波.密码学课程教学设计与实验研究[J].甘肃科技,2009,25(1):153~155.
吕秋云,赵泽茂,刘顺兰.信息安全本科专业密码学实验课程的教学研究[J].计算机教育,2009(15):133~135.
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。