【摘要】密码学是信息安全专业的一门专业基础课,密码学课程设计是密码学的重要组成部分。本文以密码学课程设计的题目设计为出发点,分析了目前信息安全本科专业实验课程的现状,阐述了密码学课程设计中题目设计应充分地考虑密码学学科的最新研究成果和计算机技术的发展现状,并以此为原则,从实验内容上提出了密码学课程设计的内容安排,为密码学实践教学提出了可行的方案。
【关键词】密码学课程设计教学改革创新
【基金项目】本文系南京邮电大学通达学院教改项目(TD00411JG28)支持。
【中图分类号】G64【文献标识码】A【文章编号】2095-3089(2013)01-0015-02
1.前言
随着信息化时代的到来,信息安全已成为信息化社会最重要与最关键的问题之一。同时。信息安全是一门国家重点发展的新兴学科,是计算机科学与技术、通信工程、信息与计算科学等学科的交叉学科。南京邮电大学通达学院于2007年设立信息安全方向,隶属于计算机科学与技术专业,并于2012年设立独立的信息安全专业。
密码学作为信息与计算科学、信息安全等专业的专业基础课,是信息安全的理论核心。作为信息安全专业的一门很重要的专业基础课,密码学对学生有非常高的要求。密码学在具有宽广深厚的理论基础的同时,也具有深刻的实践应用背景,具有很强的可操作性。
密码学是一门理论性和实用性都很强的课程,具有很强的实践性。实践环节对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。密码学课程设计是密码学课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是教学计划中综合性较强的实践教学环节。
2.密码学课程设计中存在的问题
密码学课程设计在密码学课程中占有重要的地位。通过对各高校密码学课程教学的了解,我们发现密码学课程设计存在一些普遍的问题。以南京邮电大学通达学院为例,归纳如下:
(1)课程设计时间安排滞后。南京邮电大学通达学院密码学课程的理论教学安排在大二的下半学期,而相应的课程设计安排在大四上半学期,为期两周。课程设计的时间严重滞后,众多学生对于密码学课程的基本概念、基本原理、基本方法都已经比较模糊,需要花费大量的时间和精力重新温习教材的内容。能够从事具体编程实践的时间大打折扣。
(2)课程设计内容比较单薄。密码学课程设计的实践内容通常是教材中的验证性实验。如DES(AES,IDEA等)算法、RSA(Elgamal)算法、Hash函数、各种签名算法的实现等。不可否认验证性实践可以使学生对密码学的原理、算法有清晰、深入的理解,并能更好地掌握密码算法设计的机理和方法。但是固定陈旧的课程设计内容,使得网络中存在着大量的现成的、已有的源代码,学生基本都可以通过Baidu、Google搜索到上述问题的解答,从而,根本无法取得密码学课程设计原有的教学目标。
(3)课程设计内容陈旧,与实践脱节。目前,密码学课程设计的内容还是仅局限教材的内容,并没有充分考虑具体的实践背景。以RSA算法为例,教材中介绍的是基本的RSA算法,但是由于RSA算法的同态性,在实际的应用中都是运用的基于RSA的变型算法,如OAEP。内容的陈旧不能很好的扩宽学生的知识面和视野,并且也出现了教材的理论知识和具体的实践应用之间无法紧密衔接的问题,直接影响学生的积极性和学习兴趣。
3.密码学课程设计实验内容探索
密码学课程是一门理论和实践课程相结合的课程。密码学实践教学包括密码算法的验证实验和密码算法的应用实验,这种实践教学是集继承和创新于一体的。我们在密码学课程设计课程中,将把学生分成几个小组,课程设计的题目公布,各个小组不重复的选择可以完成的设计题目。学生在两周的时间内利用课堂和课外时间在查阅大量文献的情况下完成该题目。题目完成后要求各个小组负责人答辩,同时抽查询问小组其他成员在设计中的具体分工和完成效果,要求学生写出高质量的课程设计报告,最后给出评定结果。
密码学课程实践从实验类型上可分为验证性和综合性实验,验证性实验主要是对对称加密算法、公钥算法和哈希函数等算法的验证,综合性实验主要是数字签名、保密性与认证性和应用安全等综合实验。密码学课程设计实验内容的选择设计至关重要。我们认为密码学课程设计的题目设计应在依据密码学理论教学内容的基础上,充分考虑密码学学科的最新研究成果和计算机技术的发展现状。我们在具体的密码学课程设计中,以综合性实验为主,尽量避免单纯的验证性实验,以防止学生能够在网络上找到现成的代码,主要设计如下的5大类实验题目:
(1)对于分组密码算法,我们不单纯的让学生实现DES算法、IDEA算法或者AES算法。而是以三个作为基础,让学生采用不同的实现模式,如采用密码分组链接模式和密码反馈模式,对大的数据块进行加密与解密操作,并考察两种模式的加密效率,和对明文、密文的错误传播进行比较。通过该题目,可以使得学生熟练分组密码的设计方法和实际的工作模式。
(2)对于公钥密码算法,我们不单纯让学生实现RSA算法或者Elgamal算法。因为由于基本的RSA算法由于同态性,所以在实际的应用中,并不采用基本的RSA算法进行加密。我们要求学生利用RSA-OAEP算法对给定的消息进行加密。通过该题目,学生可以综合的掌握大数库的相关函数、RSA算法的相关算法(如欧几里德算法、素判定算法等)和Hash函数的原理与实践等。
(3)设计一个小型的公钥密码系统。公钥密码系统PKI的关键是对证书的管理,其中主要设计到数字签名算法。该题目要求学生模拟一个公钥密码系统的证书管理过程,包括证书的生成、分发、取消等。其中签名算法利用Schnorr算法。通过该题目,学生可以熟悉实际中PKI系统的运行流程、并熟悉大数库相关函数的操作,以及hash函数的相关编程等。
(4)密码破解方面。主要对Windows操作系统的开机认证的hash码采用暴力破解和字典攻击的方式破解。破解的优化可以在两个方面进行考虑:一是利用时空折衷彩虹表的方式;在一个利用云计算下的MapReduce编程的方式。密码口令的破解具有天然的可并行化处理的优点,而云计算对于并行化处理具有天然的优势。通过该题目,让学生了解计算机科学最新的应用现状,理解掌握最新的应用技术,并熟悉hash函数的编程。
(5)密钥协商算法的实现。它的安全性基于有限域上的离散对数难题,我们不要求学生实现基本的Diffie-Hellman算法,而是模拟实现端到端的密钥协商协议生成相同的密钥K。其中的验证算法利用HMAC算法。通过该题目,学生可综合的熟悉大数库相关函数,以及基于Hash函数的MAC码的设计等知识点。
4.结束语
密码学课程设计是信息安全本科专业的一门重要的实践课。但是,目前各高校的密码学实验课普遍存在着开课滞后,课程设计题目单薄、局限性大,与实际的应用相脱节等问题。因此综合我校的实际情况,并充分结合密码学学科的最新研究成果和计算机技术的发展现状,提出了一系列具体的综合性的密码学课程设计题目。在帮助学生加深对密码学具体算法设计方法、设计原理理解的基础上,体会密码学工具在具体安全问题上的综合应用,培养了学生的动手能力,提高了学生的创新意识。
密码学课程的教学改革不是一朝一夕就能完美地完成的,需要在教学实践中不断总结教学的特点和规律。教师如何在有限的学时数里,确定好合适的课程设计题目,提高学生学习和探索的兴趣,培养学生的实践能力,是一个值得不断深入探讨和实践的问题。
参考文献:
[1] 陈逢林. 密码学实验课程的建设[J]. 安庆师范学院学报( 自然科学版),18(1),2012:108-111.
[2] 李曦. 密码学课程实践教学存在的问题及改进措施[J]. 高等教育研究, 28(2), 2011:23-24.
[3] 吕秋云,赵泽茂,刘顺兰. 信息安全本科专业密码学实验课程的教学研究[J]. 计算机教育,2009(15): 133-135.
[4] 李树栋, 吴晓波. 密码学课程教学设计与实验研究[J]. 甘肃科技, 25(1), 2009:153-155.
作者简介: 王少辉(1977.7-),男,山东潍坊人,南京邮电大学计算机学院,讲师。研究方向:信息安全,密码学。
王志伟(1977.10-),男,江苏扬州人,南京邮电大学计算机学院,讲师。研究方向:信息安全,密码学。