信息安全专业的学生在学习过程中,都能感觉到密码学的教学过程比较抽象。针对这一问题,我们设计并实现了密钥加密实验平台。下面我就给大家简单的介绍一下。
一、密钥加密实验平台的总体框架
为了达到激发学习者兴趣的目的,密钥加密实验平台考虑以下几点:
1)密钥加密实验平台使用简洁明了的界面;
2)尽量简化操作,以原理为中心展开演示;
3)将密钥加密实验平台以常见网页的形式展现。
由于VisualStudio.NET2005(以下简称VS2005)自身强大的功能,使用起来较方便,所以本密钥加密实验平台就以其作为开发平台,使用C#作为编程语言。在该开发平台下制作.aspx动态网页实现该密钥加密实验平台的功能,后台程序实现以控件下直接编写代码为主。
整个密钥加密实验平台主要由以下四个部分构成。
第一部分是实验平台系统的主界面,它是整个密钥加密实验平台的入口。需要实现对加密体制系统的总体介绍,简要介绍加密体制和密钥加密实验平台系统的使用说明。能使用户对加密体制以及这个密钥加密实验平台有最基本的了解,在此基础上,列出比较经典的加密算法和解密算法的基本原理和密钥加密实验平台系统的帮助信息。
第二部分给出各加密体制的流程图,对流程图进行必要的简洁介绍,使用户能更好地理解各个算法的具体实现过程。
第三部分是构建基于加密算法的实验演示系统示例。用户自主选择相应参数,触发具体算法,用户通过系统提示自主操作完成演示,使得用户能够通过这些步骤更为深入地掌握算法的基本原理和实现流程。
第四部分给出算法可能的应用,在演示之后介绍各个算法的优缺点,通过分析密钥长度及加密过程,提出可能的破解方法,同时针对可能的攻击给出相应的防范措施。
上述每个部分都由相应的子模块构成,子模块的功能集合实现每个部分的功能。系统的总体框架结构如图1所示。
该密钥加密试验平台功能模块的总体架构总体来说功能层次比较清晰,且比较全面,它包括了对称密钥加密系统部分、非对称密钥加密系统部分和散列函数加密系统部分。整个密钥加密实验平台的框架结构呈现树形,由总到分,由算法体制的总体介绍到具体算法的实例演示,这对于初学者来说,较易入手,且容易引发学习的兴趣。
每个具体的算法部分又包括如图2所示的基本内容。图2中的X分别代表DES、IDEA、AES、RSA、DH、ECC、MD5、SHA、HMAC等算法。
二、密钥加密实验平台的主要实现方法
在实际实现过程中,通过网页的形式展示本实验平台,通过menu.aspx实现页面间的链接。进入主界面后链接到相应子系统形成整个实验平台系统。密钥加密实验平台中所有网页的结构都为左右结构,左边是整个实验平台树型结构的索引,右边是具体模块的内容,包括欢迎界面、平台介绍、算法演示和攻击分析等内容。
1、演示算法的过程展示
根据网站的构建过程,首先在VS2005环境下搭建起框架模块,主要包括页面和导航条。接下来的关键问题就是如何展现算法的流程,也即算法演示。
由于篇幅限制,这里不能一一介绍各个算法的演示生成过程,文中就以RSA演示系统为例简单介绍。图3给出了RSA算法的部分演示过程。图3中,用户通过实际操作,能够清晰地了解RSA加解密算法的流程。
RSA加密算法和解密算法总的来说分为三步,即:
1)密钥的生成过程(这一步也是最关键的一步);
2)加密过程;
3)解密过程。具体参见图3的演示结果显示。
通过此演示界面,用户很容易理解RSA加密的大体流程。
2、密钥的生成过程
下面结合RSA加密算法的原理具体分析此演示界面的实现过程。
对于RSA加密算法,关键问题是如何快速有效地生成加解密密钥。RSA算法的密钥生成是分步完成的。首先要选取两个大的互异的大素数p和q,参见图3,要生成大素数,点击名称为“生成大素数p”的按钮,此时,触发相应的Button1-Click事件,其结果是根据生产大素数的函数ulonggetpre(),生成大素数,并在TextBox1控件中显示输出。函数getpre()是直接加载在button后台代码中的。接下来,要生成与p互异的大素数q。同样地,用户点击按钮“生成大素数q”,则在TextBox2控件中生成大素数q,其后台操作与生成p的方法一致,都是后台直接加载代码的方式生成,结果见图3。接下来是生成n=p×q,n在加解密中都起到很重要的作用,因此其生成方法也是较关键的。用户根据演示界面可以很容易地理解该步骤,如图3所示。其生产过程很简单,把TextBox1和TextBox2中的数字相乘,得到的结果即是n值。
事实上,因为TextBox中的文本显示是以字符串的形式显示的,所以在VS2005中,技术方面的实现存在一个字符串到数字的转变过程和数字到字符串的转换过程。这一步的后台实现过程如下所示,在But2
ton3-Click事件中加载如下代码:
ulongp=ulong.Parse(TextBox1.Text.ToString());
ulongq=ulong.Parse(TextBox2.Text.ToString());
ulongn=p3q;
TextBox3.Text=n.ToString();
其中语句ulong.Parse(TextBox1.Text.ToString())用于把TextBox1中的数字字符串转换为与之对应的数字值,以便于数字计算。n.ToString()语句用于把数字转换为与之对应的数字字符串,以便于在
TextBox中显示输出。在整个的平台构建及所有的算法演示中,这种变换经常用到。
如图3所示,继续进行保密值F(n)=(p-1)×(q-1)的计算,因其实现方法同n的值的实现类似。
根据RSA加密算法的原理过程,接下来是取随机数e,取e的关键是要与(p-1)×(q-1)互素。e可由函数gete()实现,在函数中加入判断语句用于验证是否与(p-1)×(q-1)互素。下面给出其实现过程,也即在Button6-Click事件下加载如下代码:
RSAlf=newRSAl();
ulongp=ulong.Parse(TextBox5.Text.ToString());
ulongq=ulong.Parse(TextBox4.Text.ToString());
ulongs=f.inverse(p,q);
TextBox6.Text=s.ToString();
设计加密类RSA1(),其中包括函数inverse(p,q),inverse(p,q)用于计算F(n)值。在上述代码中,通过引用RSA1()的一个实例来调用函数inverse(p,q)功能。通过语句TextBox6.Text=s.ToString();把生成的值F(n)以值字符的形式显示在TextBox6中。
接下来点击“得到公钥”和“得到私钥”按钮,触发按钮事件,分别能在TextBox中显示得到的密钥对。通过以上分析,可以看出,此演示平台的演示过程能够把RSA加密算法的原理清晰地表现出来。
3、加密和解密过程解析
接下来简单介绍一下加密和解密的过程。在明文文本框中输入需要加密的文本,通过点击“加密”按钮,触发Button7-Click事件,在此事件中加载加密函数,同时把文本框中的文本引导进来作为加密软接口,实现对文本的实际加密。
加密理论函数为:c=Memodn,需要用具体的数据结构实现。
点击“解密”按钮,类似触发Button8-Click事件,此事件的功能代码把密文作为软件接口参数引导进来,用解密函数进行解密处理,得到解密后的明文,如图3所示。
4、其他问题
以上对密钥加密实验平台系统中的关键模块———算法演示部分以RSA算法演示为例进行了简单介绍。
其它典型加密算法演示生成界面都以其算法的原理为基础进行形象展现。
在密钥加密实验平台的构建中,为了能够给用户一个清晰简单的操作环境,有很多技术实现方面的细节都需要加以注意,如导航条的构建、模板页的设置、格式的一致和规范性的要求等。
三、密钥加密实验平台特点概述
1、平台展示清晰、全面
参见图1的总体架构。
打开此平台系统,首先进入的是登录页面,当用户输入正确的用户名、密码后,进入首页。首页中包括三个系统展现按钮,分别为:对称密钥加密系统、非对称密钥加密系统和散列函数加密系统。布局清晰简单,用户可以根据自己的需求进入不同的加密系统。进入某个具体加密系统后,便进入了学习页面,每个页面的布局都是一致的,左边是导航栏,右边是对应的学习内容。
用户可以由导航栏快捷地选择自己想要进入的学习阶段。所有这些部件,都是为了方便用户更好地学习密钥加密算法。
2、实验管理方便
本密钥加密实验平台首页有注册及登录页面,当用户登录后能显示用户之前的登录信息。这些信息用在教学过程中,指导老师就可以方便地查询各学生登录和使用本平台软件的基本情况,有利于老师了解同学们的实验细节,利于管理。
3、原理分析直观
在分步执行的过程中,密钥加密实验平台所包括的各个算法可以实时、直观地进行原理的分析。如:在算法的演示过程中,用户可以直观并清楚地知道“数”的流向及具体算法的执行过程。相比书本上的“枯燥”内容来说,此平台演示就相当于请了个老师,一步一步地演示出算法的基本原理和过程,直观地展现给用户,有效降低了学习的难度。
小知识之TextBox
TextBox组件(文本框组件)是一种常用的,也是比较容易掌握的组件。应用程序主要使用它来接收使用者于输入文字信息。