信息安全本科专业密码学实验课程的教学研究

时间:2022-07-15 06:41:06

信息安全本科专业密码学实验课程的教学研究

摘要:从密码学理论与实验课程的教学实践的经验来看,密码学实验课程是学生真正掌握密码学原理的重要补充和不可缺少的组成部分,二者相得益彰。本文以信息安全专业密码学实验课程的教学为出发点,分析了目前信息安全本科专业实验课程的教学现状,阐述了密码学实验课程教学中的课程教学内容设计及教学方法,确立了密码学实验课程教学的思路、内涵和总体框架。

关键词:密码学实验;降低算法编程难度;实验课程教学

中图分类号:G642 文献标识码:B

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 ]; //将矩阵运算的结果先存放在临 //时矩阵当中,

memcpy(OutMatrix, Tmp, len);//最终的运算结果存在OutMatrix里

}

学生阅读该代码,然后将代码添加至自己新建的工程文档中,在需要实现各种变换时调用这个函数。其他的功能函数也是如此给出,因此,学生的工作就是读懂并使用这些函数。

通过这种方式,学生的自主编程工作量明显下降;同时,优秀的编程风格和优秀的代码成为学生提高程序编写能力的最有效的素材;最关键的是,通过这种方式,能够极大地提高学生自主完成算法程序编写的积极性,达到锻炼学生编程能力的目标。

3.3完善实验内容,确保知识体系的完整性

密码学包含密码编码学和密码译码学两部分。由于译码难度大,因此绝大部分的院校在密码学实验当中将译码的相关实验一概不予考虑。我们认为,从锻炼学生的思维和实际能力考虑,密码译码的思想应该在实验中体现。对于古典密码的破译实验相对简单,可以让学生针对特定的加密算法编写破解程序;对于当前的DES、RSA和ECC等复杂度较高的当代加密算法,可以使用现成的破译工具来演示破译实验。同时,为了让学生更加贴近社会应用,很有必要加入“了解当前网络应用系统中的安全措施的使用原理”这一环节,实现书本知识和实际应用的紧密联系。

3.4多种实验方式,提高实验的生动性

密码学本身是一门以数学为主的相对比较深奥和枯燥的课程,因此,密码学实验的目标除了帮助学生理解密码理论的同时,还有一个很重要的任务是尽量提起学生的学习兴趣。那么,密码学实验必须采取多种实验方式,提高实验的生动性,从而避免枯燥的机械式的学习,提高理论课和实验课教学效果。归纳起来,我们可以采用如下几种实验方式:

(1) 算法完整编程。是目前高校普遍采用的实验方式。这种方式旨在提高学生的密码学的理解能力和编程能力,要求学生具备较高的编程水平,花费较多的时间,而且还要具有一定的细心和耐心,是锻炼学生各项能力的方式,但是算法复杂度加大时,学生完成的难度较大,效果很不理想。因此,这种实验方式比较适合算法相对简单的古典密码算法的编程和破译程序编写的实验。

(2) 算法部分编程。如上所示,算法复杂度加大,学生完成的难度较大时,算法完整编程会迫使很多学生转而求之于网络下载,达不到实验的目标。因此,提供关键代码给学生让其拼接成完整的程序的实验方式可以降低实验难度,激发学生的编程积极性,从而提高教学效果。例如DES和RSA的算法部分编程能达到很好的效果。

(3) 密码学相关工具的使用。这种实验方式主要是选取诸如哈希摘要值生成工具、穷举法破译工具等密码学相关工具给学生使用,培养学生操作、使用该类工具的能力。

(4) 密码学相关应用系统的应用。这种实验方式主要是让学生试用诸如安全邮件系统、网络银行的安全登录、特定站点的安全VPN等等现实中的应用系统,并思考其中原理,达到拉近书本理论与实际的距离,强调“学以致用”的目的。

(5) 密码学前沿知识的网络搜索。这种实验方式是教师给定相关的命题或者方向,让学生到网络中搜索,完成一份综合报告,难度较低,学生易于接受。这种方式主要的目标是拓宽学生的知识面,为将来的研究学习打下基础。

4结束语

密码学实验课程是信息安全本科专业的一门重要实践课。但是,目前各高校的密码学实验课存在学时较少,内容单薄;算法编程难度大;缺少密文分析及密码破译实验;缺少密码应用系统实验等问题,因此结合我校的实际情况和以往的教学经验,提出了实验内容紧扣“学有所用”;降低算法编程难度;完善实验知识体系;采用多种实验方式的新的密码学实验课程设计和教学方法,以期提高培养学生的实践能力的教学效果。

参考文献:

[1] 李治军,廖明宏. 密码学课程的教学研究[J]. 计算机教育,2006(9):28-30.

上一篇:软件工程专业“操作系统”课程的教学探讨 下一篇:电子商务专业创新型应用人才培养模式研究