论坛首页 Java企业应用论坛

SSH里非对称密钥(公钥,私钥)及认证中心原理

浏览 13256 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-21  
  要了解ssh则需要理解现代密码学当中的非对称密钥及认证中心处理机制等基础概念。这里阐述一下我的理解。
  首先说明一下处理机制:
  1.非对称密钥就是一对密钥-公钥和私钥。
  2.私钥由系统中没个人自己持有,一般保存在自己的电脑里或u盘里。
  3.公钥则在网络上传递,就是可以传递给通信中的对方,也就意味这可以被黑客截获。
  4.用某个人的私钥加密的数据只有用那个人的公钥解密,同样用公钥加密的数据也只有用私钥解密。

  这样我们在信息处理中的应用一般的流程可以是这样:
  假设我们有两个消息方a和b
  1.a要b发消息,首先得到或者由b传递给a一个b的公钥。
  2.然后a用b的公钥加密消息然后传递给b。
  3.b用自己的私钥解密消息得到明文。

  然而这个流程还是有一定的问题,首先对消息加密本身没有问题,但是会被另一种攻击,就是有一个人在中间截获了消息后,然后自己用b的公钥加密一个消息传给b。
  所以这样就需要对身份认证的一个机制了,CA认证服务器就是通过给系统内的用户发证书的形式来做身份认证。还要一种认证方式是通过消息摘要。一般流程如下:
  1.a要给b发消息,先对消息用不可逆加密算法(如md5算法)对消息生成一个消息摘要,对消息摘要用自己的私钥加密。
  2.然后用b的公钥对消息本身加密。然后连同消息摘要一起发给b。
  3.b可以用a的公钥解密消息摘要,可以确定这个消息摘要是a的,然后在通过自己的私钥去解密消息,然后通过md5算法生成消息摘要,如果和前面的消息摘要一样,则可证明这个消息是a发的。

  当然,在真正的现实应用中流程可以会更复杂(要不怎么那么长时间呢,呵呵)。但是基本原理这样。java对消息摘要和md5及私钥公钥都提供支持的。
   发表时间:2008-07-21  
这个是哪个API的?
0 请登录后投票
   发表时间:2008-07-21  
对于java,都在java.security包下面
0 请登录后投票
   发表时间:2008-07-21  
是ssl...
0 请登录后投票
   发表时间:2008-07-21  
ssl没那么变态,非对称的加解密计算消耗很大。一般都是第一次通信中就随机生成了一个临时密钥,用公钥加密送过去,然后之后的通信就用这个临时密钥进行对称加解密。
8 请登录后投票
   发表时间:2008-07-22  
4.用某个人的私钥加密的数据只有用那个人的公钥解密,同样用公钥加密的数据也只有用私钥解密

好像不是这么回事
私钥加密的数据只有用那个人的公钥解密 是不可能的事情

公钥是不能解密的  私钥加密生成一个 加密后的结果 ,公钥可以验证是否是私钥加的密。

安全传输里边有三个特性 完整性 不可抵赖性 加密性

私钥加密 公钥验证 确保完整性
公钥加密 私钥解密 加密性

私钥的不可复制和唯一性 来保证 不可抵赖性



0 请登录后投票
   发表时间:2008-07-22  
以我的理解,私钥加密数据公钥是可以解密的。私钥从某方面来讲可以确定身份。
至于验证,是要通过消息摘要来实现的。消息摘要是通过md5不可逆的加密算法实现的,可以用于验证。
0 请登录后投票
   发表时间:2008-09-04  
digithuman 写道
4.用某个人的私钥加密的数据只有用那个人的公钥解密,同样用公钥加密的数据也只有用私钥解密

好像不是这么回事
私钥加密的数据只有用那个人的公钥解密 是不可能的事情

公钥是不能解密的  私钥加密生成一个 加密后的结果 ,公钥可以验证是否是私钥加的密。

安全传输里边有三个特性 完整性 不可抵赖性 加密性

私钥加密 公钥验证 确保完整性
公钥加密 私钥解密 加密性

私钥的不可复制和唯一性 来保证 不可抵赖性





4.用某个人的私钥加密的数据只有用那个人的公钥解密,同样用公钥加密的数据也只有用私钥解密
这个是对的

在传输数据时  一般采用数字信封 

基本过程  随机生成一个密钥 对数据采用对称算法加密  用接收方的公钥加密随机密钥然后和加密过的数据打包发给接收方,接收方用自己的私钥把随机密钥解密,在用随机密钥解密数据
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics