信息安全本科专业密码学实验课程的教学研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息安全本科专业密码学实验课程的教学研究
摘要:从密码学理论与实验课程的教学实践的经验来看,密码学实验课程是学生真正掌握密码学原理的重要补充和不可缺少的组成部分,二者相得益彰。本文以信息安全专业密码学实验课程的教学为出发点,分析了目前信息安全本科专业实验课程的教学现状,阐述了密码学实验课程教学中的课程教学内容设计及教学方法,确立了密码学实验课程教学的思路、内涵和总体框架。
关键词:密码学实验;降低算法编程难度;实验课程教学
1引言
随着计算机网络及应用的飞速发展,确保网络及各种应用系统正常有序运行是目前信息安全领域的主要任务。目前,密码学的理论和技术仍然是面对黑客攻击、病毒、系统本身缺陷等诸多安全问题的主要解决之道:密码学在网络社会当中发挥了保护信息机密性、验证完整性、真实性、抗否认性四大作用。现有的各网络应用系统的安全都离不开密码学的应用,因此,“密码学”是信息安全专业的重要专业基础课。
同时,密码学实验是密码学理论课程的配套实验课程。密码学实验课程首先应该是帮助学生理解密码学理论知识,尤其是算法;其次,密码学实验课程要培养提高学生将理论知识转换为实际成果的能力,主要是将算法编程实现成为可以实际使用的程序;再次,密码学实验课程还应该拓展学生的视野,让学生接触试用常用的密码应用,为将来的工作打下基础。由此,密码学实验课程是信息安全本科专业的一门重要实践课。
2现有实验课程教学的问题与不足
由于信息安全本科专业是一个刚刚创办的专业,密码学实验课也相对比较新,因此存在一些问题。通过对各高校密码学教学的初步了解,我们发现虽然各大高校信息安全专业的密码学实验课程的自身的特点有所不同,但是存在着一些普遍的问题,归纳起来有以下几个方面。
(1) 学时较少,内容相对单薄。有些高校将密码学实验内容直接合并至信息安全实验里,或者单独开设时只给出8学时的实验,实验内容只是包括古典密码和DES密码。大部分的学校实验内容除了上述2个实验以外增加RSA等公钥算法实验,学时也相应增加到17学时。但是就内容上看,依然显得比较单薄。
(2) 算法编程难度大。密码学算法本身的复杂度和难度致使密码学实验当中算法编写难度较大。目前就普遍讲授的DES算法来讲,DES算法针对二进制运算,而且涉及众多的矩阵表的运算,整个算法流程对于初学者来说就已经很庞大的了,将其编程实现难度更大,直接导致了很多同学放弃转而求之网络拷贝。针对RSA 算法,编写一个模拟的小素数的程序难度还是不大,但是如果想让学生和真正应用
的RSA算法有近距离的接触,直至实现真正应用中的RSA难度就更大了。因此这两个算法的难度大,直接影响绝大部分学生的编程实验兴趣。
(3) 缺少密文分析及密码破译实验。纵观各高校密码学实验内容,可以看到密文分析及密码破译的实验是空缺的。这可能跟目前本科密码学理论课的内容很少或者不涉及这块内容相关,但是现实网络应用当中,密文分析及密码破译是黑客们很重要的一个攻击手段,同时也是算法编写者验证算法安全性的手段,因此,该项内容应该加入到密码学实验中。
(4) 缺少密码应用系统实验。大部分的密码学实验鉴于课时所限,缺乏密码应用系统实验,由此出现了所学理论知识和实际应用之间无法紧密衔接的问题,直接影响学生的积极性和学习兴趣。
由上所述,目前各高校的信息安全本科专业的密码学实验尚处在探索和发展阶段,存在内容少、算法编程难度大,实验形式单一以及缺乏与应用联系等等问题。
3密码学实验课程内容设计和教学方法
分析密码学实验中各高校存在的诸多问题,结合本校的教学培养要求,我们在吸取6年的密码学实验教学经验的基础上,提出了新的密码学实验课程设计和教学方法。
3.1紧扣“学有所用”,提高学生学习兴趣
常言道:“兴趣是学习之母,兴趣是成功之母”。可见,兴趣是学生学习的最强有力的动力源泉。随着我国各大高校扩招,就业形势进一步严峻,一般高校的学生最为关注的就是毕业后的就业问题。绝大部分的学生对将来出去工作需要用到的知识表现出极大的兴趣;特别是作为其专业基础课配套的实验课,学生们往往会对该实验课寄予厚望,希望在该实验课里学到的是直接和社会应用挂钩的知识、技术和能力。
因此,在密码学实验内容的选取上不应局限在算法的理解和编程实现上,而应该拓展到渗透着众多的密码学理念、算法和技术的网络应用上,使学生了解密码学技术是如何应用而成为我们日常工作生活所不能缺少的部分。这里分为两个内容层次,第一,让学生使用现有的密码学应用系统,掌握原理;第二,如果学生学有余力,还可以编写完成一套独立的应用系统。
由此,在对密码学算法的编程实现基础上对当前应用的了解和掌握,学生基本上具备进入相关行业需要的基本技术和行业应用知识,对未来的工作将不再陌生、不再恐惧,达到了“学有所用”的目的,也将激发起学生的浓厚
的学习兴趣。
3.2改革教学方式,降低算法编程难度
在密码学的学习过程当中,算法是最重要的内容。然而,目前社会应用的密码学算法,如DES,3DES,AES,IDEA,RSA,ECC等,普遍存在算法流程冗长、算法理解困难、计算机表示复杂等等特点,初学密码学的学生,面对这样的算法,往往不知道该如何下手;即使个别学生编程能力较强,由于算法本身的工作量庞大而时间有限,编写出来的算法程序也是质量较低,出错很高,最后,学生得到的是完成一件冗长编程程序的“艰苦”感觉,收获不大。因此,如何降低算法编程难度,提高学生完成编程的能力是密码学实验首先要解决的问题。
算法编程实验主要是要让学生学会用计算机语言描述密码算法的能力。我们的学生往往缺乏编程经验,阅读参考别人的代码是提高其编程能力最有效的方法之一。因此,我们提出了一种提供关键代码及说明,让学生将其组装配合成完整的算法程序的一种积极阅读源代码的教学方式,下面以DES算法编程实验为例子说明。
在密码学理论教学当中,DES算法的流程是作为教学的重点,然而教师的详细阐述后,由于算法本身比较复杂,不易于掌握,在实验时先要回顾DES算法流程,如图1所示:
图1DES算法流程图
由图1可见,编写完成DES算法主要存在下面几个关键代码实现:矩阵运算、异或运算、字节与位的转换运算、位循环运算、S盒的选取运算等。因此我们提供给学生上述几个功能模块的详细完整的代码,并给出详细解释,例如矩阵运算代码和说明为:
void MatrixOperation(bool *OutMatrix, bool *InMatrix, const char *TableMatrix, int len)//矩阵运算,IP变换、E变换、P变换等矩阵运算都可以调用此函数,//只是将TableMatrix设为IP变换表、E变换表、P变换表即可。
{
for(int i=0; i Tmp[i] = InMatrix [ TableMatrix [i]-1 ]; //将矩阵运算的结果先存放在临//时矩阵当中,