0


基于Java的两个通用安全模块的设计与实现

链接:https://pan.baidu.com/s/1Xwd0U_KktL0hRFPaggIOGQ?pwd=6688
提取码:6688

1 需求分析

1.1 口令安全模块部分功能需求

  1. 用户登录模块

用户安全登录模块为用户提供身份验证的入口。用户可以根据自己使用口令的类型选择相应的登录模式登录,用户的登录类型根据口令的处理方法不同分为默认类型和一次性类型。

  1. 口令处理模块

为了使口令保存的安全性更高,要求用户口令在数据库中不能以明文的方式保存在口令表中。对口令的保存及处理有两种方法,一种是默认处理方法,即口令经处理后以另外一种方式存在口令表中,另一种是一次性口令的处理方法,使口令表中的口每进行一次成功的登录,口令表中的口令信息都进行相应的变化,根据口令的类型调用相应的处理方法来处理口令的。

  1. 口令注册模块

口令注册模块为用户提供口令注册信息。为了增强口令注册的灵活度,方便用户使用自己的口令,用户可以根据自己的喜好选择注册口令的模式,其中口令注册有两种类型,一种为默认型,一种为一次性口令。用户在一次性口令中可以选择口令的长度、个数等,在一次性口令注册成功后,生成的一系列口令可以生成一个口令文件,为用户查看口令提供了便利。

  1. 口令更改模块

口令更改模块可以为用户提供口令的更改,尤其是对使用一次性口令的用户,如果他用完了限定的口令,可以不用重新注册,而再次获得有效的一次性口令。用户可以根据口令的类型按要求输入相关的信息更改自己的口令。

1.2 文件安全传输部分功能需求

  1. 客户端文件安全传输模块

客户端文件安全传输模块可以进行文件的选择及上传。用户身份验证成功后可以选择要上传的文件,经相应用户的口令加密后再经SSL协议的安全通信密道传递给服务器使文件在传输过程中进行双重保护。

  1. 服务器端文件接收模块

服务器端文件接收模块可以接收客户端发过来的秘密文件。服务器与客户端建立SSL连接成功后接收客户端发送过来的秘密文件,并将之保存在服务器端选定的目录里。

  1. 服务器秘密文件解密模块

服务器秘密文件解密模块可以打开秘密文件读取密文中的解密参数并生成相应的解密密钥将密文解密,解密后的明文显示在文本框里,同时将明文保存在系统自定义的目录里,方便接收端对明文进行处理。

1.3 系统实现的环境和开发工具

本系统是在Windows XP环境下,采用J2SDK1.4开发工具,使用Java语言开发的,并采用SQL Server 2000作为数据提供者。

Java语言是一种很优秀的语言,是目前软件设计中极为壮健的编程语言,只要提供了Java解释器,Java编写的软件在执行码上兼容。Java作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、并且提供了并发的机制,具有很高的性能。其次, Java还提供了丰富的类库涉及加解密、消息摘要等,使程序设计者可以很方便地调用这些方法进行二次开发。另外,在JDBC诞生之后,Java在数据库应用领域获得了成功的应用,大大降低了Java语言操作数据库的复杂程度,可以将重心放在功能实现上。

SQL Server 2000是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言。T-SQL是结构化查询语言SQL的一种,支持ANSI SQL-92标准。它上手容易,由于SQLServer与Windows界面风格完全一致,且有许多"向导(Wizard)"帮助,因此易于安装和学习。而且兼容性良好,由于今天Windows操作系统占领着主导地的位,选择SQLServer一定会在兼容性方面取得一些优势。可以通过ODBC数据库访问技术,用于Java技术制作的页面与数据库之间的连接。

2 系统方案设计

2.1 功能模块流程图

为了方便系统方案的设计与功能的开发,在方案设计前,根据前面的需求分析,将系统的功能划分为口令部分功能模块和文件安全传输部分功能模块,这两个模块又各自细分为各个小模块,各小模块的功能流程图如下:

(一) 口令部分功能模块流程图

  1. 登录模块流程图

在登录模块中根据需求分析设计了两种登录系统的口令模式,一个是默认口令模式,一个是一次性口令模式,当用户输入用户名及口令后,系统首先判断用户选的是默认口令类型还是一次性口令类型,如果是默认口令类型,则调用系统的默认口令处理方法将用户输入的口令经处理后,系统与数据库建立连接,连接不成功系统提示出错信息,如果连接成功,系统将口令处理后的结果跟数据库中口令表里的相应口令信息比较,经核对,口令信息一致则该用户可进入文件安全传输模块进行操作,否则提示出错信息,要求用户重新验证口令。登录模块流程图如图1所示。

添加图片注释,不超过 140 字(可选)

  1. 默认注册模块流程图

在默认注册模块中,用户输入用户名及口令。系统调用口令处理方法,接着连接数据库,连接成功则将口令信息与数据库里的记录比较,如无重复,则将口令及用户名写入数据库,并提示注册成功,如果写入数据库失败,则报失败提示。默认注册模块流程图如图2。

添加图片注释,不超过 140 字(可选)

  1. 一次性口令的注册模块流程图

在一次性口令注册模块中,用户输入用户名、口令长度、口令个数及口令。系统调用口令处理方法,接着连接数据库,连接成功则将口令信息与数据库里的记录比较,如无重复,则将最后生成的一个口令及用户名写入数据库,并显示用户要求的口令个数,失败,则报告失败提示。一次性口令的注册模块流程如图3。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

(一) 文件安全传输部分功能模块流程图

  1. 文件传输流程图

在文件传输模块中,用户首先选择一个要发送给服务器的文件。接着系统发送与服务器建立SSL连接的请求,成功后,系统调用文件加密方法给文件加密后,发送出去,发送成功失败都提示相应的消息。文件传输流程图如图6所示。

添加图片注释,不超过 140 字(可选)

  1. 服务器接收文件及处理流程图

在服务器接收文件及处理模块中,服务器响应客户端发来的SSL连接的请求,成功后,服务器选一个目录保存密文,接收完毕后,发送接收成功提示。服务器可以随时解密密文传输流程图如图7。

添加图片注释,不超过 140 字(可选)

1.1 口令安全模块部分方案设计

根据口令部分功能模块流程图,口令模块的方案设计主要涉及到两种方式用于口令的认证及处理。

两种方式用于口令设计:

(1)基于单向函数

基于单向函数的方法是计算机存储口令的单向函数值而不是存储口令,当用户将口令传给计算机时,计算机使用单向函数计算,然后把单向函数的运算结果和它以前存储的单向函数值进行比较。由于计算机不再存储口令表,所以敌手侵入计算机偷取口令的威胁就减少了。

(2)基于SKEY原理

SKEY是进行口令认证方式之一,体现了一次性特性,它的实现过程如下:当用户输入初始口令pass,系统计算pass1=f(pass),pass2=f(pass1),……,pass(n+1)=f(passn)。其中n+1为用户要求生成的口令个数,系统将pass,pass1, pass2,……passn 这些口令给用户保管,而将pass(n+1)存在数据库里该用户的名字后面,当用户第一次登录时,输入用户名和口令passn,系统计算f(passn),并把它和数据库里pass(n+1)比较,如果匹配,就证明该用户身份是真的。然后系统将passn 代替pass(n+1)。用户将passn作废,下次登录时用pass(n-1),以此类推。当用完后重新再获取。

以上这两种处理口令的过程中,消息摘要的生成是利用MD5算法求得。MD (Message Digest)消息摘要算法是一种单向散列函数,是当前最为普遍的哈希算法,MD5是第5个版本。对任意长的输入,MD5算法都将产生一个128位的输出。MD5算法是按512位进行处理的,首先它对输入的数据进行补位,使得数据位长度对512求余的结果是448。具体补位操作:先补一个1,然后补0直至满足上述要求,再用一个64位的数字表示数据的原始长度,这样数据就被填补成长度为512位的倍数。接着对数据依次按每次处理512位,每次进行4轮,每轮16步总共64步的数据变换处理,每次输出的结果为128位,然后把前一次的输出作为下一次数据变换的输入初始值,这样最后输出一个128位的杂凑结果。

1.2 文件安全传输部分方案设计

根据文件安全传输部分功能模块流程图,文件安全传输的方案设计主要涉及到在文件传输前用DES加密算法给要传输的文件加密得到一个加密后的密文,再将密文通过系统建立SSL协议文件安全传输的安全通道传给密文的接收端。在接收端密文接收成功后,接收端可以根据需要,将密文解密成明文,并自动保存在系统默认目录下。

1.2.1 DES加密算法

DES是一个分组加密算法,它将明文以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。DES是个对称算法:加密和解密用的是同一算法(除密钥编排不同以外)。密钥通常表示为64位的数,但每个第8位都用作奇偶校验,因此密钥真正的长度是56位。整个算法是先经过初始置换IP的处理扰乱数据的原来顺序,然后进行16轮迭代运算,最后经过初始置换IP的逆置换IP-1得出64位的加密结果。整个算法如图8,其中一轮DES如图9所示。


本文转载自: https://blog.csdn.net/m0_60139146/article/details/137098319
版权归原作者 m0_60139146 所有, 如有侵权,请联系我们删除。

“基于Java的两个通用安全模块的设计与实现”的评论:

还没有评论