




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java技术:java对安全性的支持序言:在完成网络安全的算法库是,我选择了 java语言来开发。由于java没冇指针,使我对 数据流的控制感到很是头痛,于是对java编程很有意见,然而在我使用人数类(biginteger) 时,无意中发现java対rsa封装的很好,再仔细看相关的资料,觉得里面有不少东西,于是 决定以此为本学期的论文题冃,希望通过这次学习能够从实用的角度更加深入的了解网络安 全的一些概念。木着学以至用的观点,我自己设计了一个系统,虽然比较幼稚,但我尽量用上 们所学的算法和应用流程,相信着对我今后对网络安全的理解会很有帮助的.java中安全性方面的概述系统结构以jdk 1.2为
2、例,首先无论代码来自木地或是远端,都要对应一个安全策略(security policy)它定义了不同签名者、不同来源的一套权限控制策略(permissions),在权限控制 中说明了对资源(如文件、目录、端口。)的访问的权限。jdk 1.2 security model:domaindomainlocal or remote codesecurity policysandbox restricted access运行系统将代码组织到单独的域(domains)中 每个域封装了一组具有相同控制 权限的类的实例。域相当于sandbox (沙箱),applet可以在管理员的授权下运行于一个受 到限制的
3、环境屮,而应用程序就不用受到这些限制,当然他也受到安全策略的控制。jvm fullaccess to resources 匸domainsecurity managersystem resources (files,network connections, etc)密码使用的体系结构jdk1.2不但保留了以前的签名算法、消息摘要算法、密钥牛成算法,还增加了密钥管理、 算法参数管理、算法参数生成、支持不同密钥转化的代理,认证中心、随机数生成算法。 jdk1.2中还增加了一些加密算法的扩展包(java cryptography extension即jce),提供了 全面的平台无关的api函数,实现
4、了数字签名、md5、sha-l、基于x.509的认证代理; 下图显示了 jce的模型:cryptoservicesjdk/jceapplicationsapicsp #2certificatekeyman ageme nt关于appelt权限控制的简介:java平台通过安金管理器(security manager)来防止系统逍到攻击。现在的jdk系统是 通过启动女全管理器来进行资源访问控制的。现在的浏览器中都装冇安全管理器,applet的 一举一动都受到管理器的控制下,与jdk 1.2平台兼容的系统需要通过policy文件來授权。在policy文件屮定义了来白某地(url)的菜人签名的代码的访
5、问权限控制,在jdk 1.2 中,口j以通过工具policytool来生成、编辑policy文件,关于应用程序权限控制的简介:如果没有安全管理器控制的话,应用程序是完全白由的(此时安全管理器是不会白动启 动的)。通过用命令行-djava.security.manager來运行程序,就和下载的applet -样受至u 了安全管理器的控制。windows:的缺省的policy控制文件是java.homelibsecurityjava.policy 。几个重要的概念为了保证代码和文挡的安全性,需要签名、证书、和密钥管理方血有支持;数字签名数字签名的思路大致是这样的: 用keytool或api生成的私
6、钥给文档或代码签名将文档(代码)和签名,带有公钥的证书发给接收者接收者通过公钥來确认接收到的文件的完整性 接收者通过证书或确定情况来确认发送者身份证书证书包括了以下几个部分:公钥 实体标识;可能包括实体名、实体公司名、所在城市、国家等等数字签名:分发这份证书的实体对证书签名分发这份证书实体的标识要确认某份证书是可信的,只需确认签发证书的实体是可信的其公钥是可信的。实 际中可能第一次的出的公钥存在于另一个人的签名文档中,这样就需要建立一个信任链,看 最终的公钥是否是可信任的。成功地建立了信任链以后,就可以计算出该证书的指纹 (fingerprint(s)- 一般是证书的一个hash码;接受者可以
7、打电话给证书发放者比较两 处的指纹是否相同,以确认自己受到的证书是他发的,并且屮途没有被修改过。接f來需要 确认发送者的身份,如果发送者是自己信任的(已确认并保存了其共钥),确认完成。否则 就需要第三方(ca)来得到证书。首先发一个自签的证帖给ca,ca通过检查证书信息(比如 身份证编码什么的)来确证,然后生成一个自签名的证明发送者身份的证书。任何信任这个 ca的人都相信这份证书上公钥和实体的対应。系统将所有信任的证书存储起来(keystore),以后收到了带签名的代码或文档,就可以 通过jarsigner ,系统api来确认;如果在安全策略文件中说明了信任某实体签名的代码, 在下载后系统会自
8、动确认。如果是将签名后的代码或文档发送给其他人,需要将口己的证卩捎带上去以便对方确 认。keytool - export或api函数可以从keystore中将证书附加在被签名的文档中。如果 是用jarsigner ,他自动将证书带上。密钥管理通过一个带密码的数据库來存储自己的私钥及信任的公钥(称为keystore );它包括了 两类入口 :信任证书和证书密钥对(自己的私钥和证书)与pgp类似他们都可以通 过别名来标识。一个keystore的所有者可以通过不同的别名来标记不同的证书.私钥对 而用于不同的场合。通过java工具来实现基本流程工具介绍:密钥和证书管理工具(keytools )它主要是
9、负责公-私钥对、向ca发证书申请、接受ca的回复、记录信任的公钥一 实体对应表,维护密钥库(keystore),命令基木形式是:keytool command options主要有如下儿种命令: - certreq - 产生一*个证书签名请求(generate a certificate signing request ,csr)给 ca,由它來认证自己的证书。 -delete -删除对应的密钥脖的记录 - export将公钥证书输出到某个文件 - genkey.在密钥库屮存入私钥-公钥对,后者保存在一个白签的证书小。 - import将一个信任的证书导入,或者是接到了 ca的回复,将该证书取
10、代原来 密钥库中自签的证书。 keypasswd -为某私钥分配密码 -list -列出密钥库中所冇入口 -storepasswd 给密钥库分配密码java文档处理工具(jar)如果要对代码签名,需要先用jar将其打包,然后用jarsigner来签名,命令的基本格 式是 jar cf jar-file input-file(s)java文档签名及验证工具(jarsigner)jarsigner工具通过密钥库中的数据來对jar文件进行签名和认证;策略编辑器(policytool)编辑系统的策略文件使用代码签名1签名方大致流程如下所示:count.javajavac各个步骤通过前面的工具使用介绍,
11、具体实现细节就不再描述了,现在列出h己尝试时使用 的几个命令: i 生成私钥 jkeytool -genkey -alias signfiles -keypass 123456 -keystore store -storepass 123456 打包jar cvf algrim.jar *.class 签名 jjarsigner -keystore store -signedjar salgrim.jar algrim.jar signfiles 生成证书keytool -export -keystore store -alias signfiles -file cencer2接收方大致流程如
12、下所示:scount jar from susanjava security managerv data filejexce ption:count program doesn't havepermission to read the data file.keytool -importsusanjones. cer from susanpolicy toolpolicy file raypolicygranting code signedby "susart persmissionto read the data fileraystorealias susansusanbs
13、public key certificatejavascount jar from susansecurity manager data file总接运行代码是不允许的,只有先将证书引入本地的keystore ,作为信任的证书插入;通过使用policy tool来配置相应的策略文件,通过两种方式来运行他:1. jij java -djava.security.manager djava.security.policy= raypolicy -cp scount.jar appname的形式2. 通过配置浏览辭使用的j ava.homelibsecurityjava.security文件,就可以
14、带安全检 查地运行该程序。文件交换在发送文件时,可以通过数字签名來保证文件的一致性和发送者的身份。步骤如 下:发送者基本流程同代码签名是一样的keytool -importpublic key certificatejarsigner -verify接收者stansnith. cer from stanscontract. jar from stan*ar verified11与代码签名的不同z处在于是通过jarsigner來验证的。使用jdk 1.2的api来构造自己的例程基础api产生公钥和密钥对 得到密钥产生器keypairgenerator keygen = keypairgenera
15、tor.getinstance(hdsau, “sun”); 初始化密钥产生器securerandom random = securerandom.getinstance("sha 1prngh, "sun"); keygen.initialize( 1024, random); 产生公钥和密钥keypair pair = key gen. generate key pair(); private key priv = pair.getprivate(); publickey pub = pair.getpublic();对数据签名 得到个签名对象signatur
16、e dsa = signature.getinstance("shaiwithdsa", ” sun”);初始化签名对象dsa.initsign(priv); 对数据签名dsa.update(buffer, 0, len);得到签名的数据byte realsig = dsa.sign();存储签名和公钥签名结果直接按字节流存储 公钥通过pub.getencoded();先转换为字节流來处理从文件中取得公钥先从文件中读到字节流中-> enckey构造一个密钥说明类 x509encodedkeyspec pubkeyspec = new x509encodedkeyspe
17、c(enckey); 构造一个密钥管理器keyfactory keyfactory = keyfactory.getinstance("dsa*', ” sun”); 取得公钥publickey pubkey = keyfactory.generatepublic(pubkeyspec);验证签名 f同生成签名一样先取得签名对象用公钥初始化签名对象sig.initvcrify(pubkcy);取得被签名的数据sig.update(buffer, 0, len); 验证boolean verifies = sig.verify(sigtoverify);关于访问控制支持poli
18、cy在sun的java包中的对安全的支持的接口( interface )java.security. certificateja va. security. keyjava.security. principal可以提供 identify 的任何实体ja va. security. priva tekeyja va. security. publickey在java.security.acl还提供了支持访问控制的接口java.security.acl.acl 多个 acl 的入口的集合 java.security.acl.aclentry acl 的入 口 java.security.acl.
19、 group 一纟h principal java.security.acl.owner acl 的管理者 java.security.aclpermission 控制信息运用自己的算法类和java jdk支持完成网络银行原型前段吋间我用java实现了课程中儿个重要的算法:加密的des算法,通过大数类 的支持实现了 rsa算法,md5函数及带密码的签名算法,但由于我还没有找到比较好 的java处理字节流的方法,所以接口不是很清晰,特别是用了大数类,使得网上的数据传 输比较麻烦,而冃前我又没办法找到java对rsa和加密算法的支持代码可以从网上 的jce部分找到,这部分就使用了我编的算法,加上时间关系我不能实现用x.509标准 來表示公钥等,所以系统的设计不是很流畅,权当是课后的一次练习。系统设计大致的示意图:由于钱h前不能通过internet传输,这里认为客户端是一个管存取钱的代理客户端界面prclient代理客户端界面 zyc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国冶金行业发展分析及发展趋势预测报告
- 2025年计算机考试学习方法综述与建议试题及答案
- 2025-2030中国冰酒行业供需趋势及投资风险研究报告
- 2025年育婴师职场挑战考题及答案
- 2025年税务师考试知识点回顾试题及答案
- 2024年心理咨询师心理健康知识更新试题及答案
- 临床执业医师考试2025年强化基础知识的必要性试题及答案
- 2025年健康管理师考试信息认知分析试题及答案
- 2025-2030中国再保险行业市场发展分析及前景趋势与投资研究报告
- 2024年必考初级药师试题及答案
- 2024-2030年吸附树脂行业市场发展分析及发展趋势与投资前景研究报告
- 代炒股票分成协议
- 网课智慧树知道《老年医学概论(浙江大学)》章节测试答案
- (高清版)JTGT 6420-2024 公路交通应急装备物资储备中心技术规范
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- 2023北京朝阳区高一下学期期末语文试题及答案
- 湖南省张家界市慈利县2023-2024学年八年级下学期期中考试数学试题
- 江苏省南京市六合区多校2023-2024学年五年级下学期期中测试语文试题+
- 2024年广东广州海珠区新港街道雇员招聘笔试参考题库附带答案详解
- 住院规范化培训总结
- 2024宁波枢智交通科技有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论