您的位置:jsp学习站首页 >> 其它 >> JS相关 >> 论Java加密技术与Windows的结合

论Java加密技术与Windows的结合 (3)

[ 来源:互网络 | 更新日期:2007-09-25 02:42:02 | 浏览次数:13220]
简介:4
广泛用来分配密钥。密钥,或对称加密算法,如DES和RC4,通常用于大量的加密,但是密钥加密算法需要一些保密的方法来交换用于大量加密的钥匙。一种技术是生成一个随机数,用公共钥匙加密算法来加密那个随机数,然后将加密了的随机数发送给远端的同伴。发送者用远端同伴的公钥来加密随机数。接收者用它自己的私钥来解密这个随机数。任何截取了加密的随机数的第三方都不能解密那个随机数,因为他没有私钥。

  在数字签名中,用私钥来完成签名,用公钥来完成确认。被签名了的文件通常是经过哈希算法处理过的。哈希算法是一个单向算法,它可以减小文件的大小。运用MD5哈希算法,文件被简小到16字节。运用SHA1哈希算法,文件被简小到20字节。然后,就用签名人的私钥对经哈希算法处理过的文件进行加密。任何人都可以用签名人的公钥来解密哈希文件。

  你必须非常小心地保护私钥。Windows将私钥以有些令人迷惑的形式存储在文件系统中。一个恶意的侵犯者可以进入到你的计算机并找到你的私钥。任何得到了你的私钥的人都可以化装成你,在你不知道的情况下做出签署文件等行为。一种保护私钥的方法就是用一个加密的智能卡,该卡上存储了私钥。运用一个加密的智能卡,用户仍然可以进行公钥加密和签名活动,但没有人——甚至用户——可以读取私钥。智能卡有一个RSA加密和签名处理器,只有这个RSA处理器有权使用私钥。

  当一个SSL服务器向一个SSL客户端确认身份时,客户端必须根据下面这些标准来确定服务器的证书是否有效:
  · 证书必须有一个信任链,其根CA必须是客户端信任的。
  · 服务器证书,和信任链中所有的CA证书必须有有效的签名。每个证书都是由下面更高级的CA来签署的,除了根CA外,它签名自己的证书。
  · 当前的日期和时间必须在服务器证书的有效期内,而且也在信任链中所有证书的有效期内。每个证书都有一个有效期(证书可以有效使用的一个开始日期和时间以及结束日期和时间)。
  · 每个CA应该管理和公布一个CRL。客户端必须可以从信任链中的每个CA得到CRLs,来查看服务器证书或下属CA的一个证书是否已被其下面更高级的CA撤消了。
  · 证书必须可以有效用于其目的。钥匙的用途定义在证书中。例如,CA批准的仅用于数字签名的一个钥匙就不能用于SSL钥匙交换。

  Java安全实现环境中不进行证书撤消确认,就是说,它不进行CRL处理。我将向你展示如何运用Microsoft Windows的本地加密函数来检查证书信任链中的CRLs,从而为Java实现一个TrustManager和KeyManager。

  TrustManager

  javax.net.ssl.X509TrustManager有三个方法,你可以在MSTrustManagerlmpl.java中找到: · getAcceptedIssuers()为Microsoft证书库中的所有CAs返回一组证书。
  · checkClientTrusted()执行服务器的安全策略。
  · checkServerTrusted()执行客户端的安全策略。

  一个典型的TCP网络安全策略是:

  · 客户端开始连接。假设客户端只连接到“安全的”服务器。客户端应该要求

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Tags:关键字:论Java加密技术与Windows的结合
责任编辑:glen