基于数字签名的选课系统设计与实现

2010-03-27 06:55梁玉英
电脑与电信 2010年9期
关键词:数字签名密钥算法

梁玉英

(肇庆市科技职业技术学院,广东肇庆526040)

1.引言

随着计算机技术和通信技术的日益成熟,网上选课系统使学校教务人员提高工作效率,为学生的选课带来方便。目前,很多大、中院校都采用了网上选课系统,传统的“用户名+口令”的控制方式安全性较弱,用户名、口令易被窃取而导致安全问题的发生[1]。没有签名的在线选课系统管理,这种方式虽然方便,但是一旦出现学生选课或成绩疑义,教师和管理人员都可以对仿造选课和成绩进行抵赖,由于没有鉴别手段,这样不利于管理。在生活中,人们通常用对某一文档进行签名来保证文档的真实有效性,防止其抵赖。在网络环境中可以采用数字签名,在提供数据完整性的同时保证数据的保密性、真实性、不可抵赖性等[2]。在选课系统引入数字签名,其主要目的是防止冒充,使系统能够核实发送者的身份,防止非法用户冒充合法用户对学生的成绩进行录入或修改;另外也防止学生对自已选择的课程进行否认,防止老师对自己已录入的成绩进行否认,这种做法具有良好的实用价值和应用推广价值。

2.数字签名技术

2.1 数字签名

数字签名是通信双方在网上交换信息用公钥密码防止仿造和欺骗的一种身份认证。它要符合以下4条基本规则:(1)接收者能够核实发送者对报文的签名,防止冒充;(2)发送者事后不能否认对报文的签名;(3)任何人不能伪造报文和签名;(4)保证数据的完整性,防止数据被篡改[3]。

数字签名作为信息安全的关键技术,在电子商务、电子银行、电子政务等应用领域是应用广泛的,在社会生活各个领域也有极其广阔的应用前景。随着网络的迅速发展,电子签名技术在政治、经济、文化生活中都得到了广泛应用。

2.2 数字签名体制

数字签名的算法有很多,如RSA数字签名算法、ELGamal数字签名算法、Fait-Shamir数字签名算法、美国的数字签名标准/算法(DSS/DSA)椭圆曲线数字签名算法等等。这里主要介绍DSS数字签名体制。

DSS数字签名是美国国家标准研究所(NIST)1994年5月公布的,标准采用的算法是DSA,密钥长度为512~1024bit。算法中应用了以下参数[4]:

DSS中选用SHA(Secure Hash Algorithm)。P、q、g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名过程如下:

图1简明地表示DSS数字签名体制。

2.3 用Java实现数字签名

Java安全API提供了加密、信息融合、密钥管理、认证、存取控制和数字签名等功能,允许开发者进行低层和高层的安全应用,Java安全API数字签名的方法集中在java.security软件包中,在程序开始部分要引入该软件包(import java.security)[5]。下面简单介绍密钥对的生成、数据签名和验证签名的方法。

2.3.1 生成密钥对

要实现信息签名,首先要做的是生成密钥对。密钥对是通过使用Key Pair Generator类来生成,首先创建一个密钥对生成器,获得一个密钥对生成器对象,

2.3.2 对数据签名

首先使用签名Signature类生成一个生成和验证签名的签名对象,再用DSA算法和SHA信息融合算法,并利用上一步中生成的秘密钥对签名对象进行初始化。

得到一个签名对象:Signature Dsa=Signature.getInstance(“SHA/withDSA”,“SUN”);

初始化签名对象:Dsa.initSign(priv);

对数据签名:dsa.update(buffer,0,len);通过调用Update方法提供要签名的信息给签名对象。向签名对象提供过信息以后,即可生成数字签名的签名。

得到签名的数据:byte[]realSig=Dsa.sign();

2.3.3 验证签名

验证签名需要签名和公开密钥,在验证之前,如同签名一样,必须创建一个验证签名对象,并用公开密钥初始化签名对象。

用公钥初始化签名对象:sig.initVerify(pubKey);

取得被签名的数据:sig.update(buffer,0,len);

通过调用Update方法提供要验证签名的信息给验证签名对象。向验证签名对象提供过密文签名信息以后,即可调用Verify函数证实签名是否正确,函数返回一个逻辑值,真值为正确,假值为错误。

验证:boolean verifies=sig.verify(sigToVerity);

3.选课系统的开发

3.1 系统功能需求

学生选课管理系统中,用户分为学生用户、教师用户和管理员用户3类。这3类用户对选课管理系统中的班级、课程、成绩和学分等资源进行不同的管理。各类用户的功能由其权限决定。主要功能模块如下:

(1)用户模块

1)学生用户可以修改自己的信息;2)管理员用户可以添加、修改学生信息;3)管理员用户可以添加、修改教师信息。

(2)课程模块

1)教师用户可以管理选择所开课程的学生;2)学生用户可以选课;3)学生用户可以查看自己选科目的学分;4)管理员用户可以添加、修改开课信息;5)教师用户可以对开此科目的学生打分。

(3)班级模块

1)管理员用户可以添加、修改班级信息;2)学生用户可以查看自己所在的班级;3)教师用户可以查看学生所在的班级。

3.2 系统的设计与实现

3.2.1 系统设计目标

(1)学生用户

1)学生可以对自己选的课程进行加密处理(用自己的密钥和接受者的公钥),然后上传;

2)管理人员接受了经过加密处理的课程(密文)后,可以方便对密文进行解密(用自己的密钥和发送方的公钥);

3)学生上传选课后,管理整理汇总后对选课进行公示;

4)学生对上报的选课进行了数字签名,一旦发现选课有疑问,学生不能否认对选课的签名,管理人员对伪造的选课也不能抵赖,使学生的选课具有较高的信度和安全性。

(2)教师用户

1)教师可以在客户端对学生成绩进行加密处理(用自己的秘密密钥和接受者的公开密钥),然后上传;

2)成绩管理人员接受了经过加密处理后的成绩(密文)后,可以方便对密文进行解密(用自己的秘密密钥和发送方的公开密钥);

3)教师上传成绩后,成绩管理人员对成绩进行公示;

4)教师对上报的成绩进行了数字签名,一旦发现成绩有疑义,教师不能否认对学生成绩的签名,成绩管理人员对伪造的成绩也不能抵赖,使学生成绩具有高的信度和安全性。

3.2.2 系统结构设计

采用B/S的架构,B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S进行改进的结构。采用服务器、数据库与客户端3者分开。系统结构图如图2所示。

3.2.3 系统功能模块划分

不同类别的用户在登录后使用不同的功能模块。根据系统的功能需求,学生、教师和管理员3类用户分别有各自的功能模块。学生用户可以进行修改用户信息、选课和查看学分等操作。教师用户可以管理选修课程的学生信息以及选修课程的成绩。管理员用户管理学生用户信息、教师用户信息、课程和班级信息。

4.结束语

基于数字签名的选课系统有利于学校对教务工作的管理,具有可使用性和可维护性,数字签名具有保密性、安全性和不可抵赖性,同时采用B/S结构方式设计系统更增加了系统的安全可靠性,从而提高了选课系统的可信度。本文介绍了基于DSA算法的数字签名,尽管数字签名技术还不够完善,如签字后的文件可能被接收者重复使用;公钥算法的效率相当低,不易用于长文件的加密等等。但是,随着Internet的普及与发展,数字签名技术的应用领域会日益广泛,有着广阔的发展前景。

[1] 冷晓艳,韩裕生,袁宏武.基于SSL协议的安全通信在选课系统中的应用[J].安徽电子信息职业技术学院学报,2004(5、6):121.

[2] 张勇.数字签名在我国应用的现状[J].政务办公/商务办公,2007-4(105):16.

[3] 刘涛,侯正风.基于B/S结构的教务管理系统中的数字签名[J].安徽机电学院学报,2002-12,17(4):45.

[4] 凌捷,谢赞福.信息完全概论[M].广州:华南理工大学出版社,2005.

[5] 秦殿英,焦庆争.基于数字签名技术的网络安全实现[J].安徽机电学院学报,2001-3,16(1):76.

猜你喜欢
数字签名密钥算法
密码系统中密钥的状态与保护*
浅析计算机安全防护中数字签名技术的应用
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
基于数字签名的QR码水印认证系统
一种改进的整周模糊度去相关算法
数字签名简述