欧庆于,罗 芳,叶 清,胡 卫
(海军工程大学 信息安全系,湖北 武汉 430033)
密码学是保障信息安全的底层核心技术,密码工程实践是运用密码学解决信息安全实际问题的关键环节。近年来,随着我国密码事业的快速发展,密码人才实践能力培养暴露出知识体系不够全面、学科交叉理解不深入、工程实践能力不过硬等方面的问题,难以满足社会对高素质密码人才的需求。因此,教育部高等学校信息安全专业教学指导委员会修订的《信息安全专业指导性专业规范》明确指出,密码学实践能力应是信息安全专业实践能力体系的重要组成部分[1]。
相较于密码学相对成熟的理论教学体系,密码学工程实践教学在教学内容及施训模式上可供借鉴的教学内容和经验较少。文献[2]结合实践应用场景,建立了包含基础实验平台、实训平台和创新应用平台的三层次密码实践环境。文献[3]引入游戏通关方式,提出了网络空间安全综合实践分级培养模式。文献[4]从教学目标模型构建、教学内容体系优化、教学实施规范创新等5个方面阐述了信息安全专业实践教学改革与创新的实施办法。文献[5]提出了采用启发式教学法开展密码学实践教学,教员设计应用需求,并启发学员根据需求按步骤完成设计任务。
为有效提升学员密码工程实践能力,我校在大三上学期为信息安全专业本科学员开设了“密码学课程综合设计”课程。课程既是对程序设计、信息安全数学基础、密码学等前导课程知识的综合运用,也是后续专业课程,例如网络安全原理、信息系统安全的重要基础,对于贯通学员密码理论到工程实践知识、能力体系链路,深化学员对密码理论的理解层次,强化其动手能力具有重要推动作用。但在教学过程中存在课时量少、内容体系不完善、考核机制不健全、实践难度与学员认知符合度低等问题,影响了课程教学效果。针对上述问题,结合实践教学课程的施训特点规律,开展了“以学员为中心”的课程教学改革,取得了一定的教学效果。
“密码学课程综合设计”是一门与“密码学”配套的综合性实践课程,与传统的密码学原理验证性实验不同,该门课程以提升学员密码系统综合设计和应用能力为目标,重点培养学员运用密码学知识解决信息安全实际问题的工程实践能力和团结协作精神。针对施训过程中存在的课程知识体系分散、学员实践能力参差不齐、课内学时有限等问题,课程组充分考虑学员学习的心理状态,遵循由易到难的原则,采用面向项目的实践教学方法,从信息安全典型问题出发,精心设计选题,帮助学员将密码理论知识运用到信息安全工程实践中,重点培养学员分析实际问题的思维能力、动手解决实际问题的实践能力和团结协作的合作精神。通过强化课程与密码学、程序设计等前导专业基础课程知识体系的连贯性,使学员有效掌握密码算法工程实现方法,熟悉简单密码系统的设计、实现,具备良好的密码素养。
“密码学课程综合设计”实践内容可分为以下三个部分:安装配置与熟悉开发环境、密码算法编程实现、密码算法综合应用。其中,安装配置与熟悉开发环境部分重点让学员了解C#等编程语言的特点,初步具备独立开发应用程序的能力。密码算法编程实现部分由对应的密码学理论模块驱动,并将国密算法工程实现融入这部分实践教学环节,具体包括:分组密码算法编程实现、伪随机数发生器实现、公钥密码算法编程实现、哈希函数实现及安全性测试。密码算法综合应用则针对本地文件保护系统以及安全信息传输系统这两个典型应用场景,要求学员分析系统需求,结合前导理论课程知识,进行系统设计、实现、部署、配置和测试,以实现数据存储安全及传输安全。具体教学内容设计如表1所示。
表1 “密码学课程综合设计”教学内容
在实践类型上,既避免实践内容与信息安全实际问题脱节,又注重提升各实践模块内容间的相关度。课程内容具体分为密码算法实现、密码系统设计开发以及研究创新型实践3类。这3类实践内容在设计上充分考虑了学员的认知规律,难度层次由易到难分为A~D共4个层次,区分度高,体现了由独立到综合的特点。学员经过密码算法实现实践已初步具备了单个密码算法的编程能力,在此基础上以密码学典型应用为牵引,循序渐进、逐步引导其将多个密码算法工程实现进行整合,开展密码系统综合设计开发,使其了解密码系统设计开发的一般过程、方法和技能,有效提升了其对密码学基础理论和密码算法设计原理的理解层次。针对学有余力的学员开展研究创新型实践,例如:选用15种国家密码管理局规定的检测规范之一,对生成的随机数质量进行检测;对于MD5算法,寻找一对消息碰撞等,引导学员从密码分析工程实践的角度学习密码编码。通过研究创新型实践,有效提升了学员独立解决问题的能力和密码工程实践素养,使其学会学习、思考、创造。
相较于“密码学”等前导理论课程,综合实践课程学习难度增大,学习方法也有较大区别。在教学中学员普遍存在前导理论知识遗忘多、工程实践能力弱、学习吃力的问题,容易产生畏难情绪,学习兴趣不高,主观能动性缺乏。针对学员的具体学情及学习心理状态,施训过程注意把握学员学习节奏,将“密码学”理论授课与实践教学进行统筹安排,延长课程窗口期,确保编程基础差的学员能有充足时间补齐短板。即在大三上学期初开课,采取集中授课方式为学员介绍开发环境安装配置,让学员充分熟悉开发环境。结合密码学理论授课,提前布置实践选题,在密码理论学习过程中穿插进行密码算法编程及综合应用实践,体现了理实一体的教学理念。学员通过工程实践及时巩固密码基础理论,同时,避免了理论与实践课程非同步开课导致学员前导理论知识遗忘多的问题。通过实践任务牵引、课上和课下实践相结合、非连续授课等方式进行弹性课时改革,突破了固定学时限制,拓展了实践教学的时间,实现了学员实践能力提升与课下编程投入精力的正相关。
课程教学从关注“教”向关注“学”转变。学员3~4人一组自由组队,采用个人实作和小组协作相结合的方式开展课程综合设计,组长根据组员特长进行人员分工,并以组为单位完成资料及代码查阅、环境部署、程序开发、系统集成与测试、设计报告撰写、系统演示、小组答辩等工作。
教员采取集中辅导、专题辅导、跟踪指导和分组讨论等多种形式施训,以充分激发学员学习的主观能动性。专题辅导环节重点使学员明确选题的基本原理,理顺实作思路,明确技术路线,完成选题设计、实现。同时,指导教员采用个别答疑、理论讲解、相关资料推荐等方式,对自己负责的小组进行阶段性引导和针对性指导。
课程考核对课程建设具有引导和约束的作用,它反映了一门课程的教学质量[6]。课程考核采取形成性考核与终结性考核相结合的方式展开,其中,形成性考核占比30%,终结性考核占比70%,体现了全程考核的思想。
形成性考核主要考查每名学员密码算法编程实现能力是否达到教学目标。考核在密码算法编程实践教学完成后进行,采取随机抽取选题的方式确定每名学员演示内容,既兼顾了考核效率又确保了考核内容范围的覆盖率。教员根据演示的正确性、完整度对每名学员给出形成性考核成绩评定。
终结性考核以组为单位进行,个人终结性考核成绩参考所在分组终结性考核成绩进行评定。评定对象包括作品设计报告、作品展示以及项目答辩三个部分。设计报告主要考查学员对密码技术原理理解的准确性、设计合理性,以及行文流畅度;作品展示考查本地文件保护系统设计与实现,以及安全信息传输系统设计与实现这两个综合性作品功能展示的完整性、正确性;项目答辩环节通过学员答辩的正确性、流畅度给出综合性评判。设计报告、作品展示成绩分别占总成绩的30%,项目答辩占总成绩的10%。成绩评定占比如表2所示。
表2 考核评定情况表
通过上述考核方法,科学、合理地评判了学员的学习效果,较好地锻炼了学员的思维及表达沟通能力,实现了以考促训。
通过“密码学课程综合设计”教学改革,有效提升了学员密码综合应用能力以及创新实践能力。近年来,我校学员在全国大学生信息安全大赛、全国大学生网络安全尖峰训练营等竞赛中取得了较好成绩。我校2018年全国大学生信息安全大赛总成绩位列全国第四,并获优秀组织奖。《安卓手机隐私保护系统》等作品获全国大学生信息安全竞赛一等奖。
近4年学员学科竞赛获奖情况统计如表3所示。“密码学课程综合设计”有效提升了教员的实践教学能力,实现了教学相长。
表3 近4年学员学科竞赛获奖情况统计
课程是人才培养的关键要素,高校深化教育改革最终要落实到课程建设上[7]。课程综合设计是《信息安全专业指导性专业规范》中明确的主要实践课程形式之一,是深化信息安全专业课程改革的重要切入点。针对密码学实践教学内容体系不完备等问题,结合实践教学的特点规律开展的以学员为中心的“密码学课程综合设计”实践教学改革,构建了难易区分度高的实践内容体系,围绕实践选题,创新弹性课时、分组协作等施训模式,改革考核机制,使学员由被动学习的客体转化为主动学习的主体,有效增强了其对密码理论的理解,提升了其密码工程实践能力,实现了实践赋能。