时间:2024-05-04
杨建强 吴中博 李学锋 郑毅
摘 要: 密码学是“信息安全基础”课程的重要教学内容,但其对应的实验却比较难以设计。使用CrypTool设计了7个密码学类的实验,囊括密码学的重要知识点,每个实验难易适度、工作量适中,非常适合用作“信息安全基础”课程的密码类实验。使用结果表明,CrypTool明显促进了学生对密码学相关知识的理解和掌握。
关键词: CrypTool; 信息安全基础; 密码学; 实验
中图分类号:G642.0 文献标识码:A 文章编号:1006-8228(2021)09-88-04
Abstract: Cryptography is an important teaching content in the "Information Security Fundamentals" course, but its experiments are difficult to design. In this paper, seven cryptography experiments are designed by using CrypTool, which totally covers all the important cryptography knowledge points. Each experiment is moderately difficult, and its workload is moderate also, suitable for the cryptography experiments of the "Information Security Fundamentals" course. The results show that the use of CrypTool obviously promotes students' understanding and mastery of cryptography-related knowledge.
Key words: CrypTool; information security fundamentals; cryptography; experiment
0 引言
随着万物互联、5G、大数据时代的到来,网络信息安全正变得越来越重要,整个社会对信息安全人才的需求不断增长。很多高校的相关专业都开设了信息安全基础类的课程[1],特别是计算机类的专业。信息安全基础课程具有很强的专业性和综合性,教学内容比较多,其中最重要的教学内容是密码学,包括古典密码、现代对称密码、公钥密码、哈希函数和数字签名等内容。密码学也被视为其他网络信息安全技术的基础[2]。信息安全基础课程的实验中,通常有不少实验都与密码学有关。以我校计算机类专业开设的“信息安全基础”课程为例,8个实验中有3个都与密码学有关,分别是:对称密码DES算法实践、公钥密码RSA算法实践、哈希函数及数字签名。然而,因为密码学理论性强,概念呈现不够直观,同时在“信息安全基础”课程中并不需要深入到密码算法的具体细节,所以信息安全基础课程的密码学类实验是比较难设计的。本文基于CrypTool设计了7个密码学类实验,用于“信息安全基础”课程。
1 “信息安全基础”课程中密码学类实验面临的困境
对于“信息安全基础”这样的课程,在设计密码学类实验的内容时,通常有两种做法。一种是编写密码算法程序,另一种是利用实现了特定密码算法的软件工具进行简单的算法验证。
对于第一种做法,由于密码算法的原理都是比较复杂的,程序代码量也比较大,所以,一般都会向学生提供基本完备的密码算法程序源代码,学生只需添加少量的关键代码,完成程序的编译链接,生成的程序能够正常工作即可。但是,这样的实验设计往往并不能实现实验的目标,只是让学生熟悉相关密码算法的原理。因为,即使只需添加少量的代码,学生也需要熟悉算法的几乎所有细节、熟悉源代码所使用的编程语言、读懂算法的几乎所有代码才可以顺利完成。这会让学生花费大量的时间,通常两个学时的实验中无法有效、顺利地完成实验任务,而且,对于“信息安全基础”这门课程来说,也是不必要的。毕竟该课程不同于信息安全专业的“密码学”课程,后者会专门介绍各种密码算法,其实验通常会深入到密码算法的具体细节[3]。而“信息安全基础”课程的主要目的是让学生了解信息安全的基本知识、掌握常用的网络信息安全技术。密码学仅是其教学内容的一部分,所以熟悉特定密码算法的细节不应该成為该课程的教学任务。
第二种做法通常只要求完成算法的验证操作,也就是数据的加密、解密、指纹计算或签名验证等。有些工具可能会提供算法的关键步骤演示或互动操作,但通常比较粗糙。这种实验设计难度过低,学生通常只需按部就班地操作即可完成任务,对促进学生理解算法的原理几乎没有帮助。
2 CrypTool简介
CrypTool是一个专门为学习密码学而设计的免费的开源软件。目前有四个版本,CrypTool 1、CrypTool 2、JCrypTool和CrypTool-Online[4]。其中CrypTool 1是使用最广泛的版本,主要功能包括十多种古典密码算法和重要的现代密码算法的实现,各种密码算法分析方法,消息认证、数字签名等其他信息安全功能的实现,以及若干安全协议的分步实现过程,重要密码算法的交互式动态演示等。
CrypTool 2和JCrypTool是CrypTool 1的后继版本,提供了比CrypTool 1更加广泛的功能。比如CrypTool 2允许对各种密码算法进行组合变换并得到可视化的结果,JCrypTool可以同时在Linux、Mac和Windows平台上运行,并允许编程者以插件的形式将新的密码算法和协议添加到CrypTool中[5]。CrypTool-Online是在线版本(网址https://www.cryptool.org/en/cto/),无需安装软件,通过浏览器就能学习各种密码算法及密码分析技术等内容。
对于“信息安全基础”这门课程来说,CrypTool 1的功能已完全能够满足密码学的教学需求,而CrypTool 2和JCrypTool提供的功能则属于“超纲”内容。所以,本文给出的密码学类实验都是基于CrypTool 1而设计的。
3 密码学类实验的设计
3.1 实验设计原则
密码学并不是“信息安全基础”课程的全部,其在该课程中的教学目标是让学生熟悉密码算法的基本原理及应用,初步了解破解密码算法的一些方法。在设计基于CrypTool的密码类实验时,应该满足以下几个原则:①实验内容要有代表性且与密码学的某个重要知识点有关;②以能够促进学生理解密码学的某个重要知识点为目标;③实验内容不能太难,不能“超纲”,也不能太简单;④实验内容不能太繁重,也不能太少,最好在一个教学时段内(通常2个学时)完成;⑤CrypTool为完成实验任务提供了足够多的动手环节。
3.2 密码类实验项目及任务
⑴ 古典密码实践
本实验的目的是让学生了解古典密码的基本操作(置换和替代)及古典密码的弱点,同时也为学生理解现代对称密码算法的原理打下基础。实验任务包括:了解Caesar和Vigenère密码的原理,使用Caesar和Vigenère密码加密和解密文件。具体内容如下。
① 通过Caesar密码的演示动画,了解Caesar密码的原理。
② 选择一个密钥(代表移位数的字母),使用Caesar密码对一个至少大部分内容是英文字母的文本文件进行加密,观察加密后的文件内容。然后,使用同样的密钥解密文件,确认是否解密成功。使用Histogram分析工具分别计算明文和密文的字母频率分布并进行比较,找出明文和密文的字母频率之间的对应关系。
③ 通过Vigenère密码的演示动画,了解Vigenère密码的原理。
④ 选择一个密钥,使用Vigenère密码对一个至少大部分内容是英文字母的文本文件进行加密,观察加密后的文件内容。然后,使用同样的密钥解密文件,确认是否解密成功。使用Histogram分析工具分别计算明文和密文的字母频率分布并进行比较,确认明文和密文的字母频率之间是否有明确的对应关系。
⑵ 对称密码DES算法实践
本实验的目的是让学生了解DES算法基本原理,进而了解现代对称密码算法的基本思想;了解压缩和加密相结合时的正确做法,这种结合在后续的某些安全协议中会用到。实验任务包括:了解DES算法的流程,使用DES算法加密和解密文件,将压缩和加密结合起来使用。具体内容如下。
① 通过DES算法的流程可视化功能,了解DES算法的流程。
② 选择一个密钥,使用采用了某种工作模式(ECB或CBC)的DES算法加密一个包含有英文字符的文件(建议文本文件)并保存到磁盘上。使用同样的密钥和工作模式解密加密的文件,确认是否解密成功。使用其他密钥再解密一次并确认是否成功。
③ 在②的基础上,增加文件压缩环节,分别尝试“先压缩后加密文件”和“先加密后压缩文件”。比较两种操作结果文件的大小,确认哪种方式效果更佳。最后完成文件的解密,确认解密是否成功。
⑶ 对称密码AES算法实践
本实验的目的是让学生了解AES算法的基本原理,进而了解现代对称密码算法的基本思想;了解压缩和加密相结合时的正确做法,这种结合在后续的某些安全协议中会用到。实验任务包括:了解AES算法的流程,使用AES算法加密和解密文件,将压缩和加密结合起来使用。具体内容如下。
① 通过AES算法流程可视化功能,了解AES算法的流程。
提醒,CrypTool为AES提供了三种可视化功能,分别是算法流程演示动画(Animation)、算法探查(Inspector)和算法流程可视化(Flow Visualization)。后两种深入到算法的细枝末节,不适合作为实验内容,故此处选择Animation。
② 选择一种密钥长度和一个密钥,使用AES算法加密一个包含有英文字符的文件(建议文本文件)并保存到磁盘上。使用同样的密钥解密加密的文件,确认是否解密成功。使用其他密钥再解密一次并确认是否成功。
③ 在②的基础上,增加文件压缩环节,分别尝试“先压缩后加密文件”和“先加密后压缩文件”。比较两种操作结果的文件大小,确认哪种方式效果更佳。最后完成文件的解密,确认解密是否成功。
⑷ 公钥密码RSA算法實践
本实验的目的是让学生了解公钥密码RSA算法的原理,进而认识到公钥密码与现代对称密码在实现机制上的不同。实验任务包括:熟悉RSA算法的构造过程,破解RSA算法,使用RSA算法加密和解密文件。具体内容如下。
① 在RSA算法演示界面(RSA Demonstration),通过交互式操作熟悉RSA算法的构造过程;用构造的RSA算法参数对输入的文本进行加密;解密加密后的密文,确认解密是否成功。
为了加深对RSA算法原理的理解,应要求学生:指定选择素数p和q的范围,而不是使用默认的范围值;手工选择公钥e,禁止使用默认选择的值;至少实践两遍。
② 破解RSA算法:在RSA算法演示界面(RSA Demonstration),利用选择的因子分解方法对在①中构造的RSA模数进行因子分解,然后利用分解得到的p和q以及已知的公钥e破解私钥d。
为了加深对大整数进行因子分解的困难性的理解,在①的多次实践中,应要求至少有一次学生必须指定较大的p和q范围值,以便得到较大的素数,比如值超过2127的素数。
③ 使用RSA加密和解密文件:选择一个RSA密钥对,使用RSA算法加密一个包含有英文字符的文件(建议文本文件)并保存到磁盘上。使用同样的RSA密钥解密加密的文件,确认是否解密成功。确认RSA加密和解密中各使用了密钥对中的哪一个密钥。使用其他RSA密钥再解密一次并确认是否成功。
⑸ Diffie-Hellman密钥交换算法实践
本实验的目的是让学生了解公钥密码算法Diffie-Hellman的原理,进而认识到公钥密码未必用于加密,同时在一定程度上认识到公钥密码与现代对称密码在实现机制上的不同。实验任务包括:多次用Diffie-Hellman算法(或协议)完成通信双方会话密钥的交换,总结Diffie-Hellman算法的流程。
① 保持素数p的默认长度设置,自动生成较大的Diffie-Hellman算法参数p和g,自动选择通信双方的私钥,完成Diffie-Hellman算法流程。初步了解每一步的功能。
② 将素数p的位长度设置为较小的值(比如6位),自動生成Diffie-Hellman算法参数,自动选择通信双方的私钥,完成Diffie-Hellman算法流程。进一步了解每一步的功能。
③ 将素数p的位长度设置为较小的值(如6位),自动生成Diffie-Hellman算法参数,手动选择通信双方的私钥,完成Diffie-Hellman算法流程。进一步了解每一步的功能。
④ 手动设置Diffie-Hellman算法参数,手动选择通信双方的私钥,完成Diffie-Hellman算法流程。理解每一步的功能。
⑹ 哈希函数与数字签名实践
本实验的目的是让学生了解哈希函数的特点和作用,以及公钥密码的签名功能,熟悉RSA数字签名的原理。实验任务包括:了解哈希函数的特点及功能,创建用于数字签名的RSA密钥对,使用哈希函数和RSA算法对文档进行数字签名并验证签名是否正确。具体内容如下。
① 在哈希函数演示界面(Hash Demonstration)中,使用不同的哈希函数计算打开的文件(建议文本文件)的指纹(哈希值);对原始文件的内容做少量修改,观察其指纹的变化,以及原始文件的指纹和修改后文件的指纹的不同。
② 选择RSA算法和RSA模数长度,输入个人名称及保护密钥对的PIN,创建自己的RSA密钥对。记下所生成的RSA模数n和公钥e的十六进制值。建议在Key identifier字段输入PIN值,以方便密钥对的使用。
③ 选择某种哈希函数(比如SHA-1),选择RSA作为签名算法并选择在②中创建的RSA密钥对,对一个文件(建议文本文件)进行签名。观察签名文件的内容,保存签名文件。确认签名时使用了RSA密钥对中的哪一个密钥。确认②中PIN用于保护RSA密钥对中的哪一个密钥。
④ 验证文档签名:打开在③中创建的签名文件,分别使用在②中创建的RSA密钥对和其他密钥对验证签名,确认签名是否正确。确认验证签名时使用了RSA密钥对中的哪一个密钥。
⑺ RSA-AES混合加密实践
本实验的目的是让学生了解对称密码和公钥密码相结合时的典型做法。这种做法广泛应用在很多安全协议中。实验任务包括使用RSA-AES混合加密加密和解密文档,总结混合加密的流程及要点。具体内容如下。
① 在RSA-AES混合加密的交互式界面中,打开一个文件(建议文本文件),生成一个会话密钥,选择一个RSA密钥对。记录下打开的文件路径及名字、会话密钥、得到的RSA密钥参数。然后完成对文件的混合加密,观察原文件的内容和加密后的内容。确认得到的RSA密钥参数是公钥还是私钥。确认会话密钥和RSA密钥参数与AES算法或RSA算法的关系。最后把加密后的结果保存到文件中。
② 打开在①中生成加密文件,使用逐步解密功能(RSA-AES Decryption)对文件进行解密,并确认解密是否成功。确认解密时使用了RSA密钥对中的哪一个密钥,记下这个密钥。记下会话密钥。确认它们与在①中记录的RSA密钥参数值及会话密钥是否相同。
③ 总结并用文字描述RSA-AES混合加密的解密及解密流程。
4 密码类实验的使用
以上共设计了七个基于CrypTool的密码学类的实验,可用于“信息安全基础”之类的课程的实验中。除了第⑵、⑶个实验在实验目的和任务上有较大的重叠外,其他实验都是独一无二的,仅与密码学的某个重要的知识点有关。不同学校的“信息安全基础”课程,教学内容上会有或多或少的差异,对密码学的要求也有不同,实验学时的多少也有不同,可以根据实际情况从本文提供的七个密码类实验中选择相应的实验。建议按如下顺序进行选择:⑵(或⑶)、⑷、⑹、⑴、⑺、⑸。如果实验学时比较充裕,可以选择全部七个实验。
本人在我校计算机科学与技术专业2018级本科两个班级的“信息安全基础”课程中,选择⑵、⑷和⑹作为密码学类实验。实验中学生的积极性明显高于往届;实验后与学生交流,发现他们几乎都准确地理解了实验所涉及的重要密码学概念。这表明CrypTool工具确实能够促进学生对密码学知识的理解和掌握。
5 结束语
密码学是“信息安全基础”课程的重要教学内容,在该课程的实验中,密码学类的实验通常也占有较大的比例。然而,密码学类实验却又比较难以设计。本文根据密码学学习工具CrypTool提供的功能设计了七个密码学类的实验,涉及密码学中的古典密码、现代对称密码、公钥密码、哈希函数、数字签名、混合加密等知识点,给出了每个实验的目的和任务。每个实验都是按照两个学时的时间设计的,难易适度、工作量适中。这些实验项目较好地解决了“信息安全基础”课程的密码学类实验的设计问题,各个学校的“信息安全基础”课程可根据需要从中选择某些实验项目作为课程的实验。本文提供的实验仅用到CrypTool的第一个版本CrypTool 1,其后继版本CrypTool 2提供了更多的功能。后续我们将根据CrypTool 2的功能,设计一些高阶的密码学类实验,为对密码学有较高教学要求的信息安全类课程的实验教学提供参考。
参考文献(References):
[1] 黄达明,仲盛.本科信息安全教学研究最新进展综述[J].南京信息工程大学学报(自然科学版),2020.12(4):421-430
[2] William Stallings著.网络安全基础:应用于标准(第5版)[M].清华大学出版社,2015.
[3] 王后珍,张焕国.密码学课程建设及教学方法探讨[J].高教学刊,2016.7:78-79
[4] The CrypTool Portal[2021-2-3].https://www.cryptool.org/en/
[5] 申丽君,王金双,陈融,尤俊,袁志坚.CrypTool在密码学教学中的应用[J].计算机工程与科学,2014.36(S1):208-211
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!