logo资料库

基于RSA的数字签名身份认证技术及其JAVA实现.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
学术研究 Academic稳镱誊氇a鬈露b_ 基于RSA的数字签名 身份认证技术及其JAVA实现 张瑜’ 费文晓1 余波2 (1西南科技大学计算机学院,四川绵阳,62 1 002 2西南科技大学财经学院,四川绵阳,62 1 002) 【摘 要】本文在探讨了基于公钥密码RsA的数字签名的工作原理基础上,利用数字签名的认证特性和JAVA的跨平 台、易移植及高安全等特性,设计了一种在网络系统中实现身份认证的方法,保证了敏感数据的保密性、完整性以及抗 否认性,从而防止了非法用户的入侵,且在windows 2000、JDK 5.O中通过了程序测试。 【关键词】RsA 数字签名 身份认证 JAVA The JAVA Implementation of ID Authentication with Digital Signature Based on RSA Zhang Yul Fei W色nxia01Ⅵl B02 (‘Coi|ege可CompHfeL Southwest Universt姆硝Science&41电chnology MiaH Yang Si ChHnn,62 j002 2Cotlege嘶FinnHce&EcoHo"lics,SoMthwest UHiverstly研Science&‘11echHology Minn Ydng St ChHnn.62 i002) 【Abstract】In order to keep illegal users from inVading network resources and protect sensitiVe data,we discuss about digital signature principle which is based on RSA,and design a memod to authenticate users’ID in network system implemented using digital signature and JaVa technology.This pmgram was tested on Windows 2000 with JDK 5.0. 【Keywords】RSA digital signature ID authentication JAvA 1 引言 位极其重要,是最基本的安全服务,其它的安全服务都要 依赖于它。一旦身份认证系统被攻破,那么系统的所有安 Intemet技术和密码技术的飞速发展,极大地促进了 全措施将形同虚设,而黑客攻击的目标往往就是身份认证 电子商务、网上银行、电子政务等信息工程的广泛应用。 系统。因此,要加快对我国信息安全的建设,加强身份认 然而,通过网络进行交流和商业活动,面临的最大问题是 证理论及其应用的研究。 如何建立相互之间的信任关系以及如何保证信息的真实 在研究信息安全领域的公开密钥体系、数字签名原理 性、完整性、机密性和不可否认性。认证技术是信息安全 以及身份认证机制的基础上,提出一种使用JAVA进行数 理论与技术的一个重要方面。身份认证是安全系统中的第 字签名来实现身份认证的方法。本系统采用基于公开密钥 一道关卡。用户在访问安全系统之前,首先经过身份认证 的认证机制,使用JAVA安全技术对客户端和服务端进行 系统识别身份,然后根据用户的身份和授权数据库决定用 双向身份认证来实现的。另外,用JAVA来实现数字签名 户是否能够访问某资源。可见身份认证在安全系统中的地 身份认证,克服了C或C++语言的开发效率问题。所以, 程序可在windows或Linux等多种平台下运行而无需改 动,从而提高了编程工作的效率。 2 RsA公开密钥系统 RsA是在1 9 7 8年由美国麻省理工学院(MIT)的 Rivest、Shamir和Adleman提出的一个基于数论的非对 万方数据 信息安全与通信保密·200,.II 99
学术研究 熬蒸溱缀霸瓣鹣辩}蠢i Research 称密码体制,是一种分组密码体制。RSA算法是第一个 名的算法。在RsA公开密钥体系中,当用于加密时,是 既能用于数据加密也能用于数字签名的算法,因此它为网 用公开密钥KU加密,私有密钥KR解密。如果用RSA进 络信息的加密和认证提供了一种基本的方法。它是当前最 行数字签名则刚好相反,是用私有密钥KR加密,而用公 著名、应用最广泛的公开密钥系统。 开密钥KU解密。这对隐藏数据没有用处,因为任何人都 RsA的工作原理如下: 可访问公开密钥来解密数据。但是,它却可以用来证明签 (1)任意选取两个不同的大质数p和q,计算乘积 名者的身份,即身份认证,因为只有私有密钥持有者才能 n=p+q。 对待解密的数据进行加密。 (2)任意选取一个大整数e,e与(p一1)}(q一1)互质, 整数e用做加密密钥。 4 身份认证的JAVA实现 (3)计算解密密钥d:d+e=1 mod(p一1)+(q一1),根 前面已经讨论了利用RSA进行数字签名以执行身份认 据e、p和q可以容易地计算出d。 证。身份认证应当满足:在用户A向身份鉴别者B证明自 (4)公开密钥Ku={e,n},私有密钥KR={d,n}。 己身份的过程中,“正在监听”的人以后将不能冒充用户A (5)将明文P加密为密文C,计算方法为:c=Pe mod取 此外,在用户A完成向身份鉴别者B证明自己的身份后,B 将密文c解密为明文P,计算方法为:P=cd mod n。然 而只根据n和e要计算出d是不可能的。因此,任何人都可 依然无法冒充A,即用户A在“没有”泄露自己身份信息 的前提下,能够以电子的方式来证明自己的身份。 对明文进行加密,但只有授权用户(知道d)才可对密文解密。 现在我们将提出一个具体方案并利用JAVA来实现 RSA算法将生成一对RsA密钥,其一是私有密钥 它。本方案是基于客户机/服务器模式的,图1描述了如 KR,由用户保存;另一个为公开密钥KU,对外公开,甚 何进行身份认证。 至可在网络服务器中注册。发送方用接收方的公开密钥 我们让每台客户机产生自己的RSA公私密钥对,并 KU加密文件发送,接收方用私有密钥KR解 密接受。RSA的安全性是基于大整数素因子 分解困难性的,而大整数因子分解问题是数 学上的著名难题,至今没有有效的方法予以 解决,因此可以确保RsA算法的安全性。 5 数字签名原理 数字签名是公开密钥加密技术的一种应 用,其使用方式是:首先,报文的发送方利 用Hash函数从报文文本中生成一个128位 的单向散列值(也叫报文摘要),发送方用自 己的私有密钥KR对这个散列值进行加密来 形成发送方的数字签名。然后,这个数字签 图1利用JAVA实现的身份认证 名将作为报文的附件和报文一起发送给报文的接收方。首 将其公开密钥KU拷贝给服务器。如果客户机想访问服务 先,报文的接收方从接收到的原始报文中计算出128位的 器,就执行如下的认证操作步骤: 散列值(或报文摘要),然后再用发送方的公开密钥KU来 (1)服务器产生一个时间戳和一个大的随机数,并将 对报文附加的数字签名进行解密。如果两个散列值相同, 它们传送给客户机。 那么接收方就能确认该数字签名是发送方的。通过数字签 (2)客户机用自己的私有密钥KR对接收到的时间戳 名能够实现对原始报文的可鉴别性、不可重用性、不可更 和随机数进行数字签名,并将签名的结果传回给服务器。 改性和不可抵赖性。 (3)服务器收到签名后用客户机的公开密钥Ku进行 数字签名主要有两个用途保证数据的完整性和认证 验证。因为只有客户机自己的私有密钥KR才能进行签 性。这里着重于研究数字签名的认证功能。我们已经知道 名,所以服务器便知道与哪台客户机进行通信,从而实现 了RSA算法是第一个既能用于数据加密也能用于数字签 身份认证。 1 oo 凹叩凹,,cismag。@④口0D。@圃 万方数据
学术研究 AcademIc i隧瓣鬻鞭灏f《鞭瓣垂薹霎 4.1密钥对发生器 dos.writeLong(timestamp); 密钥对发生器主要用来产生身份认证所需的公开密钥 byte【】randomValue=new byte(1 6】} KU和私有密钥KR。公私密钥对存储在不同的文件中,并 SecureRandom random—new SecureRandom()l 对私有密钥的存储提供口令保护。其简化核心代码如下: random。nextBytes(randomValue); //密钥对的生成 //验证签名 KeyPairGeneratOr kpg=KeyPairGenerator. Signatu re sign=Signatu re.getInstance getInstance(“RSA”)} kpg.initialize(1 024); (“MD5withRSA”); sign.initVerify(mPublicKey)l KeyPair kp=kpg.genKeyPair()l sign.update(dataToBesigned)i //存储公开密钥 b001ean authorized=false l byte【】pubncKeyBytes=keyPair.getPublic(). try { authorized=sign.verify(signatureBytes)I getEncoded(); } FileoutputStream fos=new FileoutputStream catch(SignatureException se) { } (publicKeyFilename)l //将验证结果返回客户机 fos.write(publicKeyBytes), outputToClient.writeBoolean(authorized)l fos.cloSe()l if(authorized){system.out.println(“客户机通 //存储私有密钥,并提供口令保护 过身份认证。\n”), byte¨privateKeyBytes=keyPair.getPrivate(). } getEncoded(), else{System.out.Drintln(“拒绝访问。 byte¨ encryptedPrivateKeyBytes=password \n”)l Encrypt(password.tocharArray(),privateKeyBytes); } fos=new FileOutputStream(priVateKeyFilename){ 4.3签名认证客户机 fos。wrne(encryptedPrivateKeyBytes)} 签名认证客户机需完成的工作如下: fos.close()I 4.2签名认证服务器 签名认证服务器需完成如下工作: (1)从文件系统中读入公开密钥。 (1)读入私有密钥,并对它解密。 (2)打开与服务器的连接。 (3)从服务器取得待签名的数据。 (4)对获得的字节数组进行签名。 (2)初始化secureRandom,以便在初始化网络连接 (5)将签名结果返回给服务器。 时无须等待。 (3)监听端口的连接。 (4)当监听到的连接到来时,产生时间戳和一些随机 (6)从服务器读取表示是否授权的布尔值。 其简化核心代码如下: //对数据进行签名 数,并发送给客户机。 Signature sign=Signature.getInstance (5)接收客户机的数字签名。 (6)验证签名。 (7)将签名验证结果返回给客户机。 其简化核心代码如下: //产生时间戳和随机数 (“MD5WithRSA”)} sign.initSign(privateKey); sign.update(dataToBesigned)l byte[】signatureBytes=sign.sign(){ //将签名结果返回给服务器 long timestamp=system.currentTimeMillis(); outputToServer.writeInt(signatureBytes.1ength)} ByteA r rayoutputSt re am b a o s=new outputToServer.write(signatureBytes); ByteArrayoutputStream(); outputToServer.flush(); DataoutputStream dOs=new DataoutputStream (baos); 万方数据 (下转第105页) 信息安全与通信保密.:。。,.--l 101
学术研究 AcadefTllc Research 应的安全体系架构、安全策略以及一个比较洋细的安全解 Salz DataPower Tccllll()1()gy July 2003 决方案。k* 参考文献 [6]XMI.signatLlrcs:Bchirld thc cu rtajll,Larry I.()cb Autllor. Securc Electronic’r1^a11sacti()1]s [7]0nt()109y Rcsearch sullullcrlzanc)n,w3C on [1] A ScInalltic Web PriIuer cooI)erativc 111for— tol()gy research grou r), Jella I)rograllⅥ1¨119 grf)ulj nlatioll Systcllls, M1chael Papaz091()L】, J()achilnW. [8]JADF sccurity A(1(1 On GUIDE ,JAI)E SchI¨i(1t, a11(1 J L)1111 Myl()poulos, Grigoris A11t011i()u BOar(1 26 Jul v一20()4 a11(1 17ra J1k van HarmclcTl, 2004 [9]SemallLlc Access c()ntrol, MarieIⅢna Yag L1 c, 【2]l一、II’A Abstr÷Ic L A rchnecture specification, AntoI“o Mana J()11athⅢ1 I)alc, 17()u11(1a Lion for 11nelligeI儿Physjcal [1()] Building Privacy i11to t11c SelllaIltic Wcl): A《e¨Ls Stal】(1il r(1 r)atc 20(}2/12/03 An ontology Nee(ied \ow, AIlya Kj T11 Lance J. [3]A(1(“119 Sccurjty 17catures to 17IPA Agellt H【)fflnall C. Dianne Martin f’1atfurllls. Mill Zl j ANG, Ahlne(1 KAI之MoU CIj, [1 l】Appljcatioll一Dcfule(i coll Lcllt 1.anguagcs a11(1 lt()ger IM I’IiY 011t()109ies,Giovannj Cai rc (TII.A B,r()rInc rly [4] II】tcnlct x.509 I’ublic Key Infrastructure: CSELT)30 June一2002 Ccrtjficati()11 I’ath Hu¨(1¨19, M. Coopcr Y. [1 2]FIPA DoInains a11(1 P()1icies s1)ccincatioll, Dza【111)as()w A&N Aso()ciatcs P. IIessc Jalluary 2005 FIPA TC Architecture PreliI¨i11ary,Datc 20()l/()8/ [5】U11(】crsta T1(“119 xML Digita】signature,Rich 1(1 (上接第101页) 证明整套方案是有效的、曩j.行的,实现了电子商务系统 客户端和服务器端的双向认证,保证了敏感数据的保密 //读取服务器返回的布尔值 性、完整性以及抗否认性。kx boolean verified=i11putFromSe!ver.readBoolean (); 参考文献 if(verified){System.out.prilltln(“客户机通过身 [1j Jess Garms,Daniel Somerfield. Professional 份认证。\n”); } else{System.out.println(“拒绝访问。\n”); } 5 结柬语 由于互联网的开放性和骚名性,以及许多网上业务 JAVA security[ML北京:电子工业出版社,2002 【2}William Staliings。 Cryptography and Net— work Securit矿:Prineiples and Practice.【M】北京: 电予王业出藏社,200l 翻Ro揽一黟撒憾e。Cryptography for encrytion, digital s塘natures 8nd authentication. http:// membler§.oze嫩am com。au/”f打stpr,/crypto/#update 都采用用户名和口令的识别方式进行交易,不可避免的 19 Deeember 1996 存在许多安全隐患。网上交易中,各种黑客攻击严重威 【4】张世永,网络安金原理与应用.[Ml北京:科 胁着交易安全,一旦截获用户的交易身份认证口令,便 学出版社,2∞3 可为所欲为,给商家和用户造成许多麻烦。RsA作为唯 【5】刘泉,吴涛.基于JAVA的数字签名研究与实 一的既可用作加密,又可用作数字签名的公开密钥体系 现.吲武汉理工大学学报,2004,(2) 算法,已经得到了广泛的应用,并经受了安全性的考验。 【6】王创,李增智等.JAVA安全认证在电子政务 基于RsA公开密钥体系的数字签名身份认证技术,隧提 系统申的应用研究+胴微电予学与计算机,2004,(5) 供密码学保护且比用户名稚口令更安金。实际系统运行 万方数据 信息安全与通信保密·2005.-I 1 05
基于RSA的数字签名身份认证技术及其JAVA实现 作者: 张瑜, 费文晓, 余波, Zhang Yu, Fei Wenxiao, Yu Bo 作者单位: 张瑜,费文晓,Zhang Yu,Fei Wenxiao(西南科技大学计算机学院,四川,绵阳,621002), 余波,Yu Bo(西 南科技大学财经学院,四川,绵阳,621002) 刊名: 英文刊名: 年,卷(期): 信息安全与通信保密 CHINA INFORMATION SECURITY 2005,(11) 2次 被引用次数: 参考文献(6条) 1.Jess Garms.Daniel Somerfield Professional JAVA Security 2002 2.William Stallings Cryptography and Net work Security:Principles and Practice 2001 3.Robin Whittle Cryptography for encrytion,digital signatures and authentication 1996 4.张世永 网络安全原理与应用 2003 5.刘泉.吴涛 基于JAVA的数字签名研究与实现[期刊论文]-武汉理工大学学报 2004(02) 6.王创.李增智 JAVA安全认证在电子政务系统中的应用研究[期刊论文]-微电子学与计算机 2004(05) 相似文献(10条) 1.期刊论文 顾婷婷.李涛.尹鹏.王伍戎.王先旺.冷丽琴.王耀.Gu Tingting.Li Tao.Yin Peng.Wang Wurong.Wang Xianwang. Leng Liqin.Wang Yao RSA和RSA数字签名的实现 -网络安全技术与应用2001(7) RSA算法是一种公钥密码算法.实现RSA算法包括生成RSA密钥,加密和解密数据.RSA数字签名算法利用RSA算法实现数字签名.本文详述了RSA算法的基本原理、RSA算法 的实现以及如何利用RSA实现数字签名. 2.学位论文 吴李瀚 RSA模安全性及随机填充概率数字签名研究 2006 RSA是一种公钥密码算法,其加密密钥和算法本身都可以公开,解密密钥则归用户私人拥有。从诞生那天起,RSA就因为安全强度高、使用方便等卓越性能受到关注 ,并得到广泛应用。目前,许多密码系统中都嵌有RSA密码算法。但是,教科书式的RSA算法安全性差,相反,只要RSA的大数核心猜想成立,那么随机填充的RSA算法在当 前技术条件下将获得较好的安全性。本文针对RSA模的安全性,利用算术级数的素数定理对大素数进行分类,来分析分类后的素数对RSA模安全性的影响和作用,并将安全 的RSA模用于随机化填充的概率数字签名,实验结果证明随机化填充的RSA概率数字签名是安全的。 本论文完成的主要工作如下: RSA密码算法有关基础理论的学习和研究。本文学习和研究了RSA模与Blum数的有关性质,并分析了这些性质对RSA算法安全性的影响;提出了算术级数的素数定理的 一种证明方法,并介绍了一种结合伪随机数生成算法产生大素数的算法。 给予RSA的随机数字化签名以及形式化证明。RSA函数是单向陷门函数,从而保证了RSA公钥密码系统的安全性。本文给出了RSA概率数字签名的形式化证明。 设计了一种随机化填充的RSA数字签名的具体实现方法。本文的实验过程中验证了RSA算法参数选取,包括如何产生大素数和构造RSA算法参数;实现了具体的数字签 名的生成,包括模的幂运算,以及数字签名的验证过程,包括随机化填充的RSA概率数字签名算法及其具体实现。 本文的研究表明:为了保证RSA算法的安全性,RSA模的选择既要满足Blum数的六个性质外,还需要满足本文对素数的分类及素数定理中给出的相关性质;通过形式化 证明安全性所涉及的一个量化关系,该关系把RSA系统的安全性和计算复杂性理论中的Factor数论问题转换成著名难题的解-大数分解;实验表明,利用本文提出的方法 和算法进行基于随机化填充的RSA概率数字签名是可行的,可有效地保证数字签名过程的安全性。 3.期刊论文 鞠宏伟.李凤银.禹继国.曹宝香.JU Hongwei.LI Fengyin.YU Jiguo.CAO Baoxiang 基于RSA的证实数字签名方案 - 计算机工程2006,32(7) 验证者要知道一个证实数字签名的有效性,必须得到一个称为证实者的第3方的帮助与合作.签名者的安全性和证实签名的"不可见性"是一个证实数字签名方案必须具 备的两个重要特性.考虑到RSA是应用最广泛的公钥密码体制之一,该文提出了一种完全基于RSA的证实数字签名方案,分析表明,该方案是一种安全高效的证实数字签名实现 方案. 4.学位论文 王克苑 基于XML平台RSA数字签名体制的研究与应用 2004 该文详细讨论了数字签名技术及其实现方法.数字签名是指使用加密算法对待发的数据进行加密处理,生成一段信息,附在原文上一起发送,这段信息的作用类似现实中 的签名或印章,接收方可通过对其进行验证,判断原文真伪,其目的是为了提供数据完整性保护和抗否认功能.数字签名技术是实现网络交易安全的核心技术之一.该论文采 用RSA数据加密算法为数字签名的实现基础,对RSA算法做了全面的讨论,对其中某些环节做了适当的改进.论文在对数字签名算法分析改进的基础上,提出了以JAVA编写 SOAP客户机的方法,将RSA数字签名在XML平台中加以实现.XML平台是新兴的电子商务开发平台,文中以SOAP客户机为工具,产生SOAP消息形式的数字签名文件,以封装原始文 件和数字签名,并对数字签名文件进行发送和接收解析.该文第一章梗概论文的全貌;第二章综述了网络安全问题:第三章介绍了数据加密和数字签名技术;第四章描述了 RSA数据加密算法和基于RSA的数字签名体制:第五章详细分析了RSA加密算法的实现,并对算法的某些环节做了改进;第六章结合XML旅游商务平台,将RSA数字签名体制在该 平台上得以实现;第七章对论文做了总结. 5.期刊论文 鞠宏伟.李凤银.禹继国.曹宝香.JU Hong-wei.LI Feng-yin.YU Ji-guo.CAO Bao-xiang 基于RSA的证实数字签名方 案 -计算机应用研究2006,23(1) 验证者要知道一个证实数字签名的有效性,必须得到一个称为证实者的第三方的帮助与合作,签名者的安全性和证实签名的不可见性是一个证实数字签名方案必须具备 的两个重要特性.提出了一种完全基于RSA的证实数字签名方案,分析表明,该方案是一种安全而高效的证实数字签名实现方案. 6.期刊论文 詹永杰.陈国成.Zhan Yongjie.Chen Guocheng 基于RSA算法实现的网络办公系统数字签名技术 -北京教育学院学报 (自然科学版)2010,05(2) RSA公共密钥数字签名技术具有保证身份认证和访问控制、信息加密、信息抗抵赖等特点,本文主要阐述数字签名的原理及相关技术,并应用C#语言实现RSA数字签名代 替网络办公系统中的手工签名,实现网络办公系统数字签名技术的成熟应用. 7.期刊论文 王尚平.王育民.张亚玲 基于DSA及RSA的证实数字签名方案 -软件学报2003,14(3) 提出了一种证实数字签名方案.该方案采用了Camenisch-Michels给出的证实数字签名的模型,首次将数字签名专用算法DSA和著名的RSA公钥加密方案用于证实数字签 名方案中,并首次使用了否认零知识证明的新方法.该方案可应用于电子合同的公平签署. 8.期刊论文 刘学清.李梅.宋超.朱艳琴 基于RSA的数字签名算法及其快速实现 -电脑知识与技术2009,5(31) 在基于RSA的数字签名算法中,直接决定实现效率的是大数模幂运算.对基于二进制的Montgomery算法进行了改进,并将其应用于大数的模幂运算中.改进后的算法在保
证算法快速实现的同时,又节省了算法运算空间. 9.期刊论文 王莉.WANG Li 基于RSA的门限证实数字签名方案 -杭州师范学院学报(自然科学版)2006,5(1) 1994年Chaum首次引进证实数字签名的概念,不同于传统的数字签名,只有在半可信指定证实者的帮助下,证实签名的有效性才能得到验证.在此对一个门限证实签名方 案进行了分析,指出其安全缺陷的同时,提出了新的(t,n)门限证实数字签名方案. 10.学位论文 宋树军 RSA算法在数字签名中的应用 2007 RSA是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,不仅可以进行加密,还可以用来进行数字签名和身份验证,是公钥密码体制的代表。数 字签名是指使用加密算法对待发的数据进行加密处理,生成一段信息,附在原文上一起发送,这段信息的作用类似现实中的签名或印章,接收方可通过对其进行验证,判 断原文真伪,其目的是为了提供数据完整性保护和抗否认功能。数字签名技术是实现网络交易安全的核心技术之一。 本论文对RSA数据加密算法在数字签名中的应用作了详细的分析,对RSA算法做了全面的讨论,大数模幂乘运算是实现RSA等公钥密码的基本运算,其运行效率决定了 RSA公钥密码的性能,文章主要研究了各种模幂算法的快速实现方法,对其中某些环节做了适当的改进。 RSA算法的快速实现是现代密码学研究的方向之一,本文研究表明通过改进公钥密码体制中的模幂乘算法,可以进步提高RSA的效率,具有一定的实用价值。 引证文献(2条) 1.胡志波 校园“一卡通”系统的设计与实现[学位论文]硕士 2006 2.郑媛 数字化校园的框架体系及认证技术研究[学位论文]硕士 2006 本文链接:http://d.wanfangdata.com.cn/Periodical_xxaqytxbm200511041.aspx 授权使用:南京理工大学图书馆(wfnjlg),授权号:9880fb9f-7246-4bee-b0aa-9ea6013a8670 下载时间:2011年3月14日
分享到:
收藏