首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java与保险

2013-04-20 
java与安全都说java是安全的,它为什么是安全的, 有哪些保证安全的特性?java的语言特性(略)字节码校验,clas

java与安全

都说java是安全的,它为什么是安全的, 有哪些保证安全的特性?

  • java的语言特性(略)

    字节码校验,class loader, 数组越界, 等等.

    • 数字签名

      数字签名是用来解决传输之间的信任问题的. 设想一个applet, 通过网络加载了一个jar包,如何保证jar包是有效的,没有被篡改过的呢?这就需要数字签名. jar的发布方拥有两个用于加密和解密的key - private key和public key. public key人人皆知, private key只有发布方知道. 发布方使用private key对jar进行签名, 此签名只有使用public key才能解析. 而任何人都无法伪造private key所制造出来的数字签名. 这就是RSA算法.

      JDK中带有工具keytool. 使用keytool可以生成一对公钥秘钥.命令如下:

      keytool -genkey -alias mykeys -keystore mystore
      生成的一对key以别名myfile的形式存在名叫mystore的keystore中. 我们可以生成任意多的keystore.每个keystore也可以存储任意多的key pair.

      有了private key以后,我们可以使用private key来给我们要发布的jar来签名. 签名的方法为:

      jarsigner -keystore mystore -signedjar afterSign.jar beforeSign.jar mykeys
      发布方有了可以已经签名过的jar包, 但是还没有公开自己的public key. 公开public key的方式就发布自己的cer文件, cer文件中存储了public key.?123456789keystore "file:/Users/joey/Documents/job/workspace/j2se/test/fromjoeystore", "jks";?grant signedBy "joey" {??permission java.io.FilePermission "/Users/joey/Documents/job/workspace/j2se/testData/*", "read";};?grant codeBase "file:/abc" {??permission java.awt.AWTPermission "accessSystemTray";};grant可以有三种对象
      1. 借助keystore, 向signedBy的jar进行授权. 比如上面例子中的第一个grant,对被joey签名过的jar授权testData目录的读取权限.
      2. 向某一个codebase下的code进行授权. codebase为某个URL或者某个文件路径下的jar包或者classes.
      3. 借助JAAS,向某个principle进行授权.比如向登陆用户joey进行授权.

      最后是有关permission的一点知识. Java自带了许多的permission定义, 用户也可以自定义自己的permission, 可以书写自己的继承与java.security.Permission的类.

      原文:http://my.oschina.net/xpbug/blog/108537

热点排行