java虚拟机学习之代码签名和认证

来源:互联网 发布:jmeter默认端口号 编辑:程序博客网 时间:2024/06/07 17:12

代码签名和认证

    java安全认证是为了保证class文件是值得信任的,并且class文件在到达用户虚拟机途中没有被改变,对一段代码作担保或者签名,必须首先生成一个公钥、私钥对。用户保管私钥,公钥公开。拥有公钥/私钥时,必须将要签名的class文件和其他文件放到一个jar文件中,然后使用工具对jar文件签名。

   签名步骤: 一、将jar文件进行单向散列计算,产生一个散列。二、将私钥对这个散列进行签名,签名后添加到jar文件的末尾  (持有私钥并需要将数据发出)

   认证步骤:一、对jar文件末尾的签名后的散列用公钥解密。二、用签名步骤方法对这个jar的未加密的class文件和数据文件计算出散列。三、判断两个散列是否相等。

                                                    

弊端:签名是为了让别人信任你,通过拿到你的公钥来认证你发的消息(私钥加密散列后),问题在于别人怎么拿到你的公钥,web下载的话可能会被恶意篡改。

     为了应对公钥可能的发布问题,建立了许多证书机构来为这些公钥做担保。通过证书结构的验证,证书机构用证书机构的私钥对将要发布的公钥进行签名,最终得到数字序列被称为证书。(还是存在隐患,证书机构的证书又怎么知道就是证书机构的呢)


阅读全文
0 0