本科生密码学实验课程的教学探讨
2020-08-10牛淑芬王伯彬刘文科
牛淑芬 王伯彬 刘文科
[摘 要] 密码学实验课程是密码学原理的重要补充和不可缺少的组成部分,也是密码学算法从理论到实际应用的基础。以本科生密码学实验课程的教学为出发点,分析目前网络安全本科专业实验课程的教学现状,从本科生现有的知识结构出发,通过案例详细探讨了密码学实验课程的教学内容设计及教学方法,为本科生密码学课程的教学提出了可行的方案。
[关键词] 密码学实验课程;教学内容;教学方法
[基金项目] 2016年西北师范大学国家自然科学基金项目“大数据环境下数据层隐私保护性多方密码算法研究”(61562077)
[作者简介] 牛淑芬(1976—),女,博士,副教授,硕士生导师,主要研究方向为云计算、区块链、大数据安全;王伯彬(1992—),男,硕士研究生,研究方向为密码学;刘文科(1996—),男,硕士研究生,研究方向为密码学。
[中图分类号] G423 [文献标识码] A [文章编号] 1674-9324(2020)31-0284-03 [收稿日期] 2020-01-13
一、引言
密码学不管是作为信息安全专业的专业基础课程,还是计算机科学与技术专业的重要选修课程,都有着十分重要的学科地位。因此,除需在本科院校的计算机、通信等相关专业开设密码学的理论教学以外,开展其相应的实践课程教学更是十分必要。密码学实验课程首先应该帮助学生理解密码学理论知识,尤其是算法;其次,密码学实验课程要培养学生将理论知识转换为实际成果的能力,主要是将算法编程实现成为可以实际使用的程序;再次,密码学实验课程还应该拓展学生的视野,让学生接触使用常用的密码应用,为将来的工作打下基础。
二、密码学实践课程教学中存在的问题
现有密码学课程的教学内容重点是对各种古典密码和流行密码算法进行介绍,因此,在教学中理论课程安排较多。由于课程本身内容的综合性,仅靠课堂的理论教学内容,学生难以将理论知识应用于实际。
(一)学时少,教学内容难以深入,与实际应用严重偏离
现有的实验教学学时数大多是24学时,针对这个学时量,实验内容只能覆盖古典密码、DES密码和RSA等公钥算法实验,不能适时安排一些新型的密码算法,内容上无法与时俱进,且学生很难把算法应用到现实的生活环境中,以致学生的所学的理论知识与应用严重偏离。
(二)学生已有的知识结构和基础知识欠缺,致使算法编程难度大
对简单的RSA算法,学生用C语言编程比较容易实现;但对古典算法和DES算法而言,涉及众多的矩阵表的运算,整个算法流程对于初学者来说就已经很庞大了,将其编程实现更是难上加难,直接导致很多学生放弃转而求之网络拷贝。在基于配对的密码学算法中,需要用到双线性对运算,对于此类算法的编程,用简单的C语言编程,已经不能实现,需要用更高一级的编程语言Java或者在Linux操作系统下实现,这对于本科生来说有一定的难度。
(三)缺少密码应用系统实验
由于课时所限,大部分密码学实验缺乏密码应用系统实验,因此出现了所学理论知识和实际应用之间无法紧密衔接的问题,直接影响学生的积极性和学习兴趣。
三、密码学实验课程内容设计和教学方法
本文结合本校的教学培养要求,在吸取6年来密码学实验教学经验的基础上,根据大学本科生现有的知识结构和编程语言基础,提出了新的密码学实验课程设计和教学方法。在整体的教学设计中,我们一贯坚持的原则是复杂算法与熟悉的编程语言结合,简单的算法与复杂的编程相结合,充分调动学生的学习兴趣和积极性。在具体的教学实践中,在不同类型的程序设计语言中,实现某种功能的函数,因为语言本身的一些特性,往往会有一定的区别,教学实践中应由学生较为熟悉的程序设计语言过渡到其他语言中,并重点讲解、演示相关函数在使用中的不同之处,学生可灵活采取不同的编程实验方式。
(一)不含配对密码算法
对于我们熟知的DES、3DES、AES、IDEA、RSA等算法,此类算法流程冗长,算法理解困难,初学密码学的学生面对这样的算法,往往不知如何下手。针对此类问题,要求老师在课堂上引导学生重点理解和分析此类算法,并提出编程要求。为了使学生对各类算法本质有深入理解,要求学生用自己熟悉的高级程序设计语言C编程实现经典密码学算法,其中部分关键程序代码可布置作业,让学生编程实现。网络上有很多经典密码学算法的代码资源,在讲解算法的过程中,可以提醒学生注意对这些资源的理解和借鉴。
在本部分的教学方法中,通过利用学生熟知的编程语言和复杂的程序相结合,实现不含对运算的密码算法的编程。
(二)含有配对运算的密码算法
含有对运算的密码算法往往在算法的结构设计上比较简单,但在这类算法中,双线性对的编程实现是难点。基于配对的密码算法,我们将利用PBC库实现算法的数值分析。在这部分的实验课程设计上,将根据学生的知识结构,分别采用Windows系统下用Java编程语言实现和Linux操作系统下用C语言编程实现。以下以短签名算法(BLS)为例进行说明。
1.在Windows系统下用Java编程语言实现。对于本科生来说,已经掌握了一定基础的Java编程语言,可以在Java中调用JPBC库实现BLS算法。本教学设计的难点是学生对Java编程语言的掌握不太熟练,且学生对知识的掌握较为死板,没有养成发现问题解决问题的能力。在实际的教学实践中教师应以引导为主,让学生通过搜索引擎等解决实际安装配置中的一些问题,并对学生出现的一些的常见问题进行讲解、分析。JPBC是PBC的Java封装,在学生已经了解Java基础特性的基础上,教师应就具体函数的使用细节进行讲解,并现场布置经典算法的具体实现。在学生的实际操作过程中,观察学生对知识的掌握情况,根据现场的反馈及时调整教学策略。如在以下的教学环境中,在学生完成了JPBC的安装配置后,教师布置了短签名(BLS)算法的实现,首先教师对具体签名算法的逻辑进行讲解,并对其中一些具体过程涉及的函数进行演示,如系统建立生成系统参数、初始化相关参数、计算哈希值、对运算等关键函数,讲解完毕后让学生进行具体实践。通过实践我们发现,学生往往对算法的具体逻辑都能理解,但一旦进入到实现过程时,经常不知道该从何下手。教师观察到一部分学生已经处于上述状态时,就应及时调整教学策略。上述情况主要是由于学生对此类知识的不熟悉造成的,我们应思考如何去除这种对知识的陌生感,此时我们应该给学生提供一个较为简单但结构完整的实例,通过让学生对实例进行理解,进而通过模仿、迁移,完成教学目标。同时教师要对学生出现的常见问题进行总结且同时一定要强调实验报告的书写。知识的学习中,学习知識只是第一步,更重要的是知识的内化。实验报告的书写是学生自己对知识的思考,是知识真正内化的过程,教师应引导学生养成良好的学习习惯。
2.Linux操作系统下用C语言编程。对于大部分本科生来说,对Linux操作系统不太熟练,但对于C语言的掌握较为熟练。我们采用化难为简的教学方式,在Windows系统下安装Linux系统虚拟机,从而调用PBC库实现编程。本教学设计的难点是学生对Linux系统操作命令的不熟练。在教学情境中考虑到学生对Linux较为陌生,为了降低实验难度,保证学生学习的积极性,我们可以通过拷贝的形式将Linux虚拟机迁移到学生的虚拟机环境中,这样学生就能获得一個已经配置完成的实验环境。
(三)多种学习形式结合,激发学生学习兴趣
由于密码学这门课程本身具有理论较多,学习过程较为枯燥的特性,在实际的教学工作中教师应注重理论与实践的结合,充分激发学生的学习兴趣。
1.直观的实验。以Arp欺骗为例,在以往的教学中,学生仅仅知道Arp欺骗能获取通信过程中的数据包,但对其危害并没有一个直观的认识。教师通过利用虚拟机和相关软件,设计一个仿真的实验环境,攻击者通过相关工具进行Arp欺骗,将网关的MAC地址修改为自己的MAC地址,此时局域网内所有的主机发送给网关的数据包,都将先发送给攻击者,攻击者作为一个中间人再对数据包发送给网关。那么在此过程中,如果受害者发送的数据包未经加密且包含一些敏感信息,如受害者的个人身分信息,用户口令信息就被攻击者所获取。学生通过实践,不仅能加深对知识的理解,且能真正感受到其所造成的危害,此时教师可引导学生思考如何解决此类问题,充分调动学生的学习兴趣,引导学生进行自主学习。
2.密码学相关竞赛。CTF是当前流行的安全类竞赛,密码学作为其中的一类,重点考察各种加解密技术,包括古典密码学与现代密码学,通过解题的形式,让学生去掌握密码算法的具体逻辑,同时通过一些现有工具去实现对具体密码算法分析、译码,通过以赛促学的形式,激发学生的学习兴趣,且完善了相关知识的结构体系。如关于MD5的题目,题目给出了某一用户的密码,已知现有的短位数密码的MD5值可通过彩虹表快速破解,添加了salt后可增强密码的安全性,观察密码形式,猜测使用了MD5进行了散列,使用在线工具,解码出密码明文后,去掉所加的salt,即获得题目的Flag。
3.建立密码学团队。组织课题组或兴趣小组,吸引更多的学生参加,最大化激发学生的兴趣,并大力支持学生创新活动。选择优秀本科生进入课题组,是研究型大学培养学生的一种重要方式。同时要求教师在授课过程中,将前沿技术问题适时融入授课内容之中,鼓励学生进行创新思维,并为其提供必要的经费、实验环境,如建立创新实验室、实训大本营等。
4.深入性学习。结合课程内容,由学生参加制作密码算法教学演示系统,并可延伸到毕业设计。在编写完成密码算法后,利用演示系统分步实现密码算法的过程,使学生更深入、更细致地理解和掌握密码算法的本质。
四、结束语
密码学是信息安全的核心课程,但目前在教学实践中普遍存在着理论较多,实践较少,知识结构体系不完善,且对学生的专业知识要求较高,学生不易上手的问题。针对上述问题并结合实际教学经验,提出了多种实验形式结合、多种学习方式结合,让学生从生涩的理论知识中走出来。此外,现有的基础理论课程体系仍不完善,目前还没有与密码学相适配的标准化实验教材,因此,要积极开展标准化实验教材的编写工作,同时加强与国内外的高校、研究机构的交流,也是值得努力的方向。
参考文献
[1]吕秋云,赵泽茂,刘顺兰.信息安全本科专业密码学实验课程的教学研究[J].计算机教育,2009(15):135-137.
[2]张瑞霞,唐成华,唐麟.密码学实验教学改革应用实践[J].计算机教育,2013(05):72-75.