您的位置 首页 java

Java安全模型之——代码签名和认证

Java模型很重要的一点就是它能支持认证,这是Java1.1的 Java .security包及其子包中引入的特性。认证功能加强了用户的能力,使用户能通过实现一个 沙箱 来建立多种安全策略,这个沙箱可以依赖于为这个代码提供的对象来改变。

要对一段代码进行加密作担保或者签名,必须首先生成一个公钥/ 私钥 对。用户保管那把私钥,然后把公钥公开,拥有了公钥/私钥对就必须将要签名的 class文件 和其他文件放到一个 JAR 文件中,然后使用一个工具对整个JAR文件进行签名,这个签名工具将首先对JAR文件的内容进行单向散列计算,以产生一个散列。

第一步:一个单向散列的计算,他输入大量的数据,但产生少量的数据。

这个单向散列计算之被以称为“单向”,是因为在只给出散列(即那个少量的数据)的情况下,这个 散列值 不能包含足够的输入的信息,因此不能从散列重新生成原输入。这个计算是单向的,从大到小,从输入都输出。

散列同时也被称为消息文摘,它相当于一种输入“指纹”。所以就像用指纹代表人一样,一个散列也被被用于识别用单向散列算产生这个散列的输入。

任何用你私钥加密的东西都可以用你的公钥解密。

第二步:不同输入可能产生相同散列。

因为单向散算法是从大量数据(输入)中产生少量数据(消息摘要或者散列), 单向散列算法 倾向于充分随机地分布产生相同散列的输入,从而使产生相同散列值得概率主要依赖于散列的大小,既然不同输入可能产生相同的散列值,所以保存好你的私钥就显得非常重要,但是同样的,黑客想产生这个相同的散列值是需要花费大量的时间和资源才能找到,同时你的散列值得大小也取决了黑客得到散列值的难度,例如:如果使用一个长达8位的散列值,散列算法最多产生256个不同的散列值。

第三部:将这个加密后的散列值加到同一个JAR文件中,这个JAR文件还包含了你最初产生这个散列的文件。

这个经签名的JAR文件,就包含了输入—你要担保的class文件和数据文件—以及用你的私钥加密过的散列值(由输入产生)

第四部:要认证一个已签名的JAR文件,接受者必须用公钥对签名散列进行解密,得到的结果应该和从JAR文件计算得到的散列值相同。

文章来源:智云一二三科技

文章标题:Java安全模型之——代码签名和认证

文章地址:https://www.zhihuclub.com/173715.shtml

关于作者: 智云科技

热门文章

网站地图