Java技术:java 对安全性的支持4074.docx

上传人:you****now 文档编号:48062553 上传时间:2022-10-05 格式:DOCX 页数:14 大小:129.67KB
返回 下载 相关 举报
Java技术:java 对安全性的支持4074.docx_第1页
第1页 / 共14页
Java技术:java 对安全性的支持4074.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《Java技术:java 对安全性的支持4074.docx》由会员分享,可在线阅读,更多相关《Java技术:java 对安全性的支持4074.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Javaa技术:javva对安安全性的的支持序言:在完成网网络安全全的算法法库是,我选择择了jaava语语言来开开发。由由于 jjavaa 没有有指针,使使我对数数据流的的控制感感到很是是头痛, 于是是对jaava 编程很很有意见见, 然而而在我使使用大数数类(BBigIInteegerr)时,无意中中发现jjavaa对RSAA封装的的很好,再仔细细看相关关的资料料,觉得得里面有有不少东东西,于于是决定定以此为为本学期期的论文文题目,希希望通过过这次学学习能够够从实用用的角度度更加深深入的了了解网络络安全的的一些概概念。本本着学以以至用的的观点,我自己己设计了了一个系系统,虽虽然比较较幼稚,但

2、我尽尽量用上上们所学学的算法法和应用用流程,相信着着对我今今后对网网络安全全的理解解会很有有帮助的的.javaa 中安安全性方方面的概概述系统结构构以 JDDK 11.2 为例.。首先先无论代代码来自自本地或或是远端端,都要要对应一一个安全全策略(seccuriity pollicyy)- 它定定义了不不同签名名者、不不同来源源的一套套权限控控制策略略(peermiissiionss), 在权限限控制中中说明了了对资源源( 如如文件、目目录、端端口。)的的访问的的权限。运行系统统将代码码组织到到单独的的域 (dommainns) 中- 每个个域封装装了一组组具有相相同控制制权限的的类的实实例。

3、域域相当于于 SaandBBox (沙箱箱),AAppllet 可以在在管理员员的授权权下运行行于一个个受到限限制的环环境中,而而应用程程序就不不用受到到这些限限制,当当然他也也受到安安全策略略的控制制。JDK 1.22 Seecurrityy Moodell:密码使用用的体系系结构 JDKK1.22 不但但保留了了以前的的 签名名算法、消消息摘要要算法、密密钥生成成算法, 还增增加了 密钥管管理、算算法参数数管理、算算法 参参数生成成、支持持不同密密钥转化化的代理理,认证证中心 、随机机数生成成算法。JJDK11.2 中还增增加了一一些加密密算法的的扩展包包(Jaava Cryyptoogr

4、aaphyy Exxtennsioon 即即 JCCE),提提供了全全面的平平台无关关的APPI 函函数 ,实实现了数数字签名名、mdd5、SSHA-1、基基于X.5099 的认认证代理理。;下图显示示了 JJCE 的模型型 :关于Apppellt 权权限控制制的简介介 :Javaa平台通通过安全全管理器器(seecurrityy maanagger)来防止止系统遭遭到攻击击。现在在的JDDK 系系统是通通过启动动安全管管理器来来进行资资源访问问控制的的。现在在的浏览览器中都都装有安安全管理理器,AAppllet 的一举举一动都都受到管管理器的的控制下下,与JJDK 1.22 平台台兼容的的系

5、统需需要通过过 pooliccy 文文件来授授权。在pollicyy 文件件中定义义了来自自某地(URLL)的某某人签名名的代码码的访问问权限控控制 ,在在JDKK 1.2 中中,可以以通过工工具 ppoliicyttooll 来生生成、编编辑 ppoliicy 文件.。关于应用用程序权权限控制制的简介介 :如果没有有安全管管理器控控制的话话,应用用程序是是完全自自由的(此此时安全全管理器器是不会会自动启启动的)。通通过用命命令行 -DDjavva.ssecuuritty.mmanaagerr 来运运行程序序,就和和下载的的Appplett 一样样受到了了安全管管理器的的控制。Windows:

6、的缺省的policy 控制文件是 java.homelibsecurityjava.policy 。几个重要要的概念念 为了保证证代码和和文挡的的安全性性,需要要签名、证证书、和和密钥管管理方面面有支持持;数字签名名数字签名名的思路路大致是是这样的的: 用Keyytoool 或或 APPI 生生成的私私钥给文文档或代代码签名名 将文档(代码) 和签签名,带带有公钥钥的证书书发给接接收者 接收者通通过公钥钥来确认认接收到到的文件件的完整整性 接收者通通过证书书或确定定情况来来确认发发送者身身份证书证书包括括了以下下几个部部分:: 公钥 实体标识识 ; 可能包包括实体体名、实实体公司司名、所所在城

7、市市、国家家等等 数字签名名 : 分发这这份证书书的实体体对证书书签名 分发这份份证书实实体的标标识要确认某某份证书书是可信信的,只只需确认认签发证证书的实实体是可可信的 其公公钥是可可信的 。实实际中可可能第一一次的出出的公钥钥存在于于另一个个人的签签名文档档中,这这样就需需要建立立一个信信任链,看看最终的的公钥是是否是可可信任的的。成功功地建立立了信任任链以后后,就可可以计算算出该证证书的指指纹(ffinggerpprinnt(ss) )- 一一般是证证书的一一个 HHashh 码 ;接受受者可以以打电话话给证书书发放者者比较两两处的指指纹是否否相同,以以确认自自己受到到的证书书是他发发的

8、,并并且中途途没有被被修改过过。接下下来需要要确认发发送者的的身份,如如果发送送者是自自己信任任的( 已确认认并保存存了其共共钥) ,确认认完成。否否则就需需要第三三方( CA )来得得到证书书。首先先发一个个自签的的证书给给 CAA ,CCA 通通过检查查证书信信息(比比如身份份证编码码什么的的)来确确证,然然后生成成一个自自签名的的证明发发送者身身份的证证书。任任何信任任这个 CA 的人都都相信这这份证书书上公钥钥和实体体的对应应。系统将将所有信信任的证证书存储储起来( Keeysttoree ), 以后后收到了了带签名名的代码码或文档档,就可可以通过过jarrsiggnerr ,系系统

9、AAPI 来确认认;如果果在安全全策略文文件中说说明了信信任某实实体签名名的代码码,在下下载后系系统会自自动确认认。如果是是将签名名后的代代码或文文档发送送给其他他人,需需要将自自己的证证书捎带带上去以以便对方方确认。kkeyttooll exxporrt 或 AAPI 函数可可以从 KeyyStoore 中将证证书附加加在被签签名的文文档中。如如果是用用 jaarsiigneer ,他他自动将将证书带带上。密钥管理理通过一个个带密码码的数据据库来存存储自己己的私钥钥及信任任的公钥钥( 称称为 KKeysstorre );它包包括了两两类入口口 : 信任证证书和证证书密钥钥对(自自己的私私钥和

10、证证书) 与与 PGGP 类类似 ,他们们都可以以通过别别名来标标识。一一个 KKeySStorre 的的所有者者可以通通过不同同的别名名来标记记不同的的 证书书- 私私钥对而而用于不不同的场场合。 通过 javva 工工具来实实现基本本流程工具介绍绍:密钥和证证书管理理工具( Keeytooolss ) 它主要要是负责责 公 私钥钥对 、向向C AA 发证证书申请请、接受受 CAA 的回回复、记记录信任任的公钥钥实体 对应表表, 维维护密钥钥库 ( keeysttoree ) , 命命令基本本形式是是:keyttooll coommaand opttionns主要有如如下几种种命令: -ce

11、rrtreeq 产生生一个证证书签名名请求(Genneraate a CCerttifiicatte SSignningg Reequeest ,CSRR)给 CA , 由由它来认认证自己己的证书书。 -deelette 删除除对应的的密钥库库的记录录 -expportt 将公公钥证书书输出到到某个文文件 -gennkeyy. 在密密钥库中中存入私私钥- 公钥对对, 后后者保存存在一个个自签的的证书中中。 -immporrt 将将一个信信任的证证书导入入,或者者是接到到了CAA 的回回复,将将该证书书取代原原来密钥钥库中自自签的证证书。 keyppassswd 为为某私钥钥分配密密码 -lis

12、st - 列列出密钥钥库中所所有入口口 -stooreppassswd 给密钥钥库分配配密码.Javaa文档处处理工具具(jaar)如果要对对代码签签名,需需要先用用 jaar 将将其打包包,然后后用jaarsiigneer 来来签名, 命令的的基本格格式是jjar cf jarr-fiile inpput-fille(ss)Javaa 文档档签名及及验证工工具 (jarrsiggnerr)jarssignner 工具通通过密钥钥库中的的数据来来对 jjar 文件进进行签名名和认证证;策略编辑辑器 (pooliccytoool)编辑系统统的策略略文件使用代码码签名1签名名方大致致流程如如下所示

13、示 :各个步骤骤通过前前面的工工具使用用介绍,具具体实现现细节就就不再描描述了, 现在在列出自自己尝试试时使用用的几个个命令: 生成成私钥keyytoool -gennkeyy -aaliaas ssignnFilles -keeypaass 12334566 -kkeysstorre stoore -sttoreepasss 11234456 打包包 jjar cvvf alggrimm.jaar *.cllasss 签名名 jjarssignner -keeysttoree sttoree -ssignnedjjar sAllgriim.jjar Alggrimm.jaar ssignnF

14、illes 生成证证书 keyytoool -expportt -kkeysstorre sstorre -aliias siggnFiiless -ffilee ceer.ccer 2接收收方大致致流程如如下所示示 :直接运行行代码是是不允许许的,只只有先将将证书引引入本地地的 kkeysstorre , 作为为信任的的证书插插入;通通过使用用 Pooliccy TTooll 来配配置相应应的策略略文件,通通过两种种方式来来运行他他:1. 用 jaava -Djjavaa.seecurrityy.maanagger -Djjavaa.seecurrityy.pooliccy=rrayppol

15、iicy-cp sCoountt.jaar ApppNamme 的的形式2. 通过配置置浏览器器使用的的javaa.hoomelibbseecurrityyjaava.seccuriity 文件件,就可可以带安安全检查查地运行行该程序序。文件交换换在发送文文件时,可以通通过数字字签名来来保证文文件的一一致性和和发送者者的身份份。步骤骤如下 : 发送者基本流流程同代代码签名名是一样样的接收者 与代码签签名的不不同之处处在于是是通过 jarrsiggnerr 来验验证的。使用 JJDK 1.22 的AAPI 来构造造自己的的例程 基础 APII 产生公钥钥和密钥钥对 得到到密钥产产生器KeyyPa

16、iirGeenerratoor kkeyGGen = KKeyPPairrGenneraatorr.geetInnstaancee(DDSA, SUNN); 初始始化密钥钥产生器器 SeecurreRaandoom rranddom = SSecuureRRanddom.gettInsstannce(SHHA1PPRNGG, SUUN);keeyGeen.iinittiallizee(10024, raandoom); 产生公公钥和密密钥 KeyyPaiir ppairr = keyyGenn.geenerrateeKeyyPaiir();PrrivaateKKey priiv = paair

17、.gettPriivatte();PuubliicKeey ppub = ppairr.geetPuubliic();对数据签签名 得到到一个签签名对象象 Siignaaturre ddsa = SSignnatuure.gettInsstannce(SHHA1wwithhDSAA, SUUN); 初始化化签名对对象 dssa.iinittSiggn(pprivv); 对数据据签名 ddsa.upddatee(buuffeer, 0, lenn); 得到签签名的数数据 bytte reealSSig = ddsa.siggn();存储签名名和公钥钥 签名结果果直接按按字节流流存储 公钥通过过p

18、ubb.geetEnncodded(); 先转换换为字节节流来处处理 从文件中中取得公公钥 先从文件件中读到到字节流流中 enncKeey 构造一一个密钥钥说明类类 X5009EnncoddedKKeySSpecc puubKeeySppec = nnew X5009EnncoddedKKeySSpecc(enncKeey); 构造一一个密钥钥管理器器 KeyyFacctorry kkeyFFacttoryy = KeyyFacctorry.ggetIInsttancce(DSAA, SUUN); 取得公公钥 PuubliicKeey ppubKKey = kkeyFFacttoryy.gee

19、nerrateePubblicc(puubKeeySppec);验证签名名 同生生成签名名一样先先取得签签名对象象 用公钥钥初始化化签名对对象 siig.iinittVerrifyy(puubKeey); 取得被被签名的的数据 siig.uupdaate(buffferr, 00, llen); 验证 boooleean verrifiies = ssig.verrifyy(siigTooVerrifyy);关于访问问控制支支持Poliicy 在SUNN 的jjavaa 包中中的对安安全的支支持的接接口( Intterffacee )javaa.seecurrityy.Ceertiificca

20、teejavaa.seecurrityy.Keeyjavaa.seecurrityy.Prrinccipaal可以以提供 ideentiify 的任何何实体javaa.seecurrityy.PrrivaateKKeyjavaa.seecurrityy.PuubliicKeey在 jaava.seccuriity.acll 还提提供了支支持访问问控制的的接口javaa.seecurrityy.accl.AAcl多多个 aacl 的入口口的集合合javaa.seecurrityy.accl.AAclEEntrryaccl 的的入口javaa.seecurrityy.accl.GGrouup一组组

21、 Prrinccipaal javaa.seecurrityy.accl.OOwneer Acll 的管管理者javaa.seecurrityy.accl.PPermmisssionn控制信信息运用自己己的算法法类和 Javva JJDK 支持完完成网络络银行原原型 前段段时间我我用 jjavaa 实现现了课程程中几个个重要的的算法 : 加加密的 dess 算法法, 通通过大数数类的支支持实现现了 RRSA 算法 , MMD5 函数及及带密码码的签名名算法, 但由由于我还还没有找找到比较较好的 Javva 处处理字节节流的方方法,所所以接口口不是很很清晰,特特别是用用了大数数类,使使得网上上的

22、数据据传输比比较麻烦烦, 而而目前我我又没办办法找到到 jaava 对 RRSA 和 加加密算法法的支持持代码 可可以从网网上的 JCEE 部分分找到 , 这部分分就使用用了我编编的算法法, 加加上时间间关系我我不能实实现用xx.5009 标标准来表表示公钥钥等,所所以系统统的设计计不是很很流畅,权权当是课课后的一一次练习习。系统设计计大致的示示意图:客户端界面客户端界面Server代理Client代理Client代理 TCCP/IIP Webb Server代理 事务处理中心Clieent代代理 向向客户端端提供的的接口有有:0. Loggin ( in Uiid , iin passswo

23、ord ) 1. UpdaateBBalaancee( in AAccoounttNummberr , iint AAccoounttHollderr , inn AcccounntBaalannce ,oout errrInnfo)存/取操操作。BBankkSerrverr 确认认用户帐帐号和用用户后更更改用户户的存款款数目。2. ClosseAcccouunt( iin AcccouuntNNumbber , innt AcccouuntHHoldder , in AAccoounttBallancce )消户。BBankkSerrverr 确认认用户帐帐号和用用户后将将户头取取消。 安全

24、性性方面的的测略 由于要求求在流览览器中实实现,在在本地存存取证书书的方式式是不可可行的,对对于用户户身份认认证还是是采取了了传统的的 uiid + PWWD 的的形式,但但为了保保密,在在上传时时先用银银行的公公钥用 RSAA 算法法加密 该该信息直直接放在在 Apppleet 的的参数中中 由于没有有证书管管理措施施,不妨妨认为用用户是先先执有效效证件到到银行开开户以后后取得帐帐号,设设置了密密码。用用户在每每次连接接前先生生成自己己的一份份证书,在在Logg inn 时将将公钥用用x.5509的的格式 jaava 类支持持上传传给银行行, 由由于我自自己的算算法没法法和jaava 类兼容容,所以以会话密密钥用我我自己的的方式再再上传给给银行 银行每次次确认连连接后保保留收到到的用户户的公钥钥证书。 用户形成成命令后后,先签签名然后后用约定定的会话话密钥对对数据进进行加密密。 银行收到到数据后后,先用用会话密密钥解密密,然后后检查数数据签名名,对返返回结果果用会话话密钥加加密。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理制度

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁