南京邮电大学2011届本科生毕业设计(论文)
2.3.4 SHA-1算法
安全散列算法(Secure Hash Algorithm)能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)。且若输入的消息不同,它们对应到不同字符串的机率很高;而SHA是FIPS所认证的五种安全散列算法。 这些算法之所以称作“安全”是基于以下两点(根据官方标准的描述):“1)由消息摘要反推原输入消息,从计算理论上来说是很困难的。2)想要找到两组不同 的消息对应到相同的消息摘要,从计算理论上来说也是很困难的。任何对输入消息的变动,都有很高的机率导致其产生的消息摘要迥异。”
SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的散列算法。缘于最近对SHA-1的种种攻击发表,“美国国家标准与技术研究院(NIST)开始设法经由公开竞争管道(类似高级加密标准AES的发展经过),发展一个或多个新的散列算法。”
2.4 C#和.NET
C#是一个语言,.net是一个平台,上面支持用C#或者VBdotNet写代码。
另外,C#不但可以开发基于.net的应用程序,也可以开发基于WinForm的程序,这就是区别。
若是单纯以概念来说,你可以把.net当做一个工作平台一般,它是一个开发环境的基底,提供你 开发Windows、Web、Mobile、XML...等应用程式一个共通的平台,若是要了解深一点,则再去了解其运作的相关机制那是有助于你利用它来 开发.C#和.NET主要是应用在网际网路.。
C#(读做C-sharp)编程语言是由微软公司的Anders Hejlsberg和 Scott Willamette领导的开发小组专门为.NET平台设计的语言,它可以使程序员移植到.NET上。这种移植对于广大的程序员来说是比较容易的,因为 C#从C,C++和Java发展而来,它采用了这三种语言最优秀的特点,并加入了它自己的特性。C#是事件的驱动的,完全面向对象的可视化编程语言,我们可以使用集成开发环境来编写C#程序。使用IDE,程序员可以方便的建立,运行,测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的一小部分。使用IDE迅速建立一个应用程序的过程称为快速反映开发。
.NET 是 Microsoft 的 XML Web 服务平台。不论操作系统或编程语言有何差别,XML Web 服务能使应用程序在 Internet 上传输和共享数据。
Microsoft? .NET 平台包含广泛的产品系列,它们都是基于 XML 和 Internet 行业标
11
南京邮电大学2011届本科生毕业设计(论文)
准构建,提供从开发、管理、使用到体验 XML Web 服务的每一方面。XML Web 服务将成为您今天正在使用的 Microsoft 的应用程序、工具和服务器的一部分 — 并且将要打造出全新的产品以满足您所有业务需求。
更具体地说,Microsoft 正在五个方面创建 .NET 平台,即工具、服务器、XML Web 服务、客户端和 .NET 体验。
12
南京邮电大学2011届本科生毕业设计(论文)
第三章 系统的分析与设计
本章首先提出对该数字签名系统具有什么样的需求,然后通过系统分析,得出需要实现的功能,并设计整个系统的结构。最后按照不同的功能将系统划分为三个子系统:加密子
系统,解密子系统,验证子系统。
3.1需求分析
对于使用电子商务的人们来说,网络信息安全越来越被他们的关注。网络信息安全包括两个方面:一是信息的完整性,数据不能被任何第三方破坏和修改。二是要保证信息的同一性,接受方要确认信息的来源。对于数字签名系统的的具体要求表现在:
1.功能的全面性:对文件所生成的签名进行认证,即提供身份认证;防止签名方的抵赖,保证签名的不可否认性;防止签名文件的篡改,即保证数据的完整性。
2. 运行的健壮性:软件在运行中不能出现程序崩溃、死循环的状况,对于用户在界面所作的任何操作都要实时、准确的反应出来,对于一些错误应该有完善的诊断机制,入时停止出错的操作,并且尽量避免程序出现BUG。
3.操作性强:软件的使用者多是普通用户,他们应用计算机的能力不是很强,因此一定要简便好用,图形界面通俗易懂,操作方便简单。
4.安全性:保证程序在运行过程中不会对用户的计算机资源造成破坏,不应有恶意的代码。由于此程序的特殊性,还因考虑到算法的设计,防止信息被他人轻易窃取。 按照以上对系统的需求分析,系统设计将实现以下几方面的功能:
1.加密解密过程中所采集到的所有数据要及时有效的在界面中表现出来。如RSA算法中公私密钥的生成及保存,文件的摘要过程与结果,加密的过程与结果,解密的过程与结果,以及解密后的对比验证。
2.运行过程中响应客户在界面所做的任何动作,并作出相应的回应,对一些错误的操作能够及时的判断,并采取相应的措施或给出正确操作的提示。
3.在界面的分布上,做到简单明了,各个按键的说明与其所对应的功能一致,界面位置合理,用户能一目了然,并且便于操作。 4.采用的RSA算法保证了数据的安全性。
3.2 总体设计
为了实现完整的数字签名过程,下面是我们为系统设计的实际应用模型视图,分两个模块,一个是生成公私钥阶段,一个是数字签名及验证阶段。
13
南京邮电大学2011届本科生毕业设计(论文)
A. 生成公私钥阶段:
此阶段的任务是,由Boss向此文件系统提出申请,要求分配一个高强度的RSA算法的配套公钥和私钥,并保存至主机。私钥由Boss自己保存,不得外露给任何人。而公钥则对外公开,可通过各种广播途径传播给单位的每个员工。模型如图3-1所示。
传输公钥
公钥
申请密钥
Boss
员工
公钥+私钥
DDS
图3-1 传输公钥阶段模型图
B. 数字签名及验证阶段
此阶段的任务是Boss向该系统提出签名申请,并将需要进行签名的文件和用于加密的公钥(由A这一步完成)一起添加至系统,由系统先对文件作MD5摘要之后完成对摘要的RSA加密,并将加密后的签名部分储存至Boss的文件所在的文件夹,完成数字签名。
Boss可对签名文件进行传输,传给需要的员工。
员工收到传来的文件后,需要确定是否就是Boss传来的,以及文件在传输过程中是否被篡改了。这时,就需要用到该软件提供的验证模块。验证时,员工将收到的文件和签名以及从Boss那获得的公钥一并添加至软件系统,由软件自动完成对摘要的解密、对原文件的摘要,以及两者的比对,最后得出验证结果。模型如图3-2所示。
14
南京邮电大学2011届本科生毕业设计(论文)
LAN
数字签
数字签名文件
名文件
BossBoss客户端
请求数字签名
A
B ………… Z 员工客户端
请求验证
数字签名文件
验证结果
DDS
图3-2 传输进行了数字签名的文件阶段模型图
我决定将此系统定位成单机版本。至于网络传输方面,可借助使用一些常见的传输工具,例如飞鸽传书、腾讯QQ等。
3.3 功能模块的划分
经过初步分析,我们将软件系统分成两个个子系统:加密签名系统,解密认证系统。我们在对系统进行需求分析时,采用UML的用例图、类图和使用序列图,结合数据流SD的分析方法;并采用原型法初步设计出了一个包括系统的界面以及所提供的各项功能提示的原型模型。我们整理出的系统与外界的联系如下的顶层数据流图(DFD) 图3-3所示:
15