论坛首页 Java企业应用论坛

非对称安全体系中的私钥安全存储问题

浏览 6890 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-16  
   最近希望利用JCE开发一个比较完整的安全体系,而体系主要想采用非对称算法,为各个节点建立证书,创建公私钥对,由于这个算法是非常成熟的算法,同时JCE也提供了较完善的实现,应该是很简单的事情。但是对于私钥在运行节点处的存储却成了大问题,多数解决方案都是把私钥以文件形式存在,任何人拿到文件都能够进行破坏,简单地通过密钥加密的方式存储私钥也不行,因为毕竟java的反编译一下就可以知道私钥解密取得的过程。
    想来想去都没有想到完美的解决方案,不知道各位大侠在这方面有没有做过尝试性的工作,或者有什么思路可以启发一下都非常谢谢。期待大侠的回复。
   发表时间:2006-11-16  
用你运行节点的mac地址cpu等物理属性生成一个密钥,加密你的私钥文件,启动服务的时候读取mac地址,cup等物理属性生成密钥,解密私钥文件。当然,别人有足够时间在你机器获取你的mac地址,cpu等物理属性或者你的机器被偷了也没法,最基本的安全应该是物理安全吧,如果别人有机会接触你的节点服务器,你再怎么折腾都没辙。除非每次你的节点服务启动时,动态输入解密私钥文件的密码,不过如果不小心被人看见也不行。
0 请登录后投票
   发表时间:2006-11-16  
非对称加密的私匙文件应该有一个自己的密码的,一定是弄错了什么,即使拿到了文件,没有密码也是无济于事.
0 请登录后投票
   发表时间:2006-11-16  
首先非常感谢balaschen、wolfsquare的回复。
确实如果可以接触机器会很郁闷的。但是在设计方案时,必须首先就从最严谨的角度去设计,也许这种严谨是没有办法实现,只有充分证明不可能的情况下才退而求其次。
对于balaschen所提到的动态输入解密密钥是一个办法,这个我也考虑过,但是总感觉这样有点问题,比如在某种情况下我节点上的应用需要自动重启,这样就会带来问题。当然如果实在不行这将会成为最终解决方案。
对于wolfsquare提到的加密私钥的密钥,请问这个密钥如何存储呢?呵呵
0 请登录后投票
   发表时间:2006-11-16  
原来是节点的密匙安全问题,这个除了物理保护方法似乎就只能靠混淆代码,增加破解复杂度来保障了.
0 请登录后投票
   发表时间:2006-11-16  
还可以通过硬件来配合,例如将密匙放在USB狗里.将java容易反编译的问题转移到JNI,本机代码的破解问题上.
0 请登录后投票
   发表时间:2006-11-16  
嘿嘿,知道我们一个系统的管理员口令是怎么管理的吗?客户说不能让一个管理员独自执行系统管理,必须有监督,后来想了个办法,让两个人各管一段密码,也就是登陆的时候,A先输入一段密码,然后B输入另一段密码,只有两人同时到场才可以使用管理员帐号。安全本来就是个权衡,就是被破解内容的价值和破解的代价,如果破解的代价高于被破解内容的价值,就可以称为安全了。理论上没有破解不了的系统,只要时间足够长。
0 请登录后投票
   发表时间:2006-11-16  
楼上公司是做电子支付的吧?
0 请登录后投票
   发表时间:2006-11-16  
USB需要考虑加入硬件,这个方法暂时不考虑。
JNI倒也是一个思路,可以作些尝试,但只是增加破解的难度而已。呵呵。
谢谢两位大侠,看来这个问题更多的将转化为从管理上去解决了。
似乎技术上也只能尽量是破解变得麻烦,而没有办法去避免被破解,加密和解密永远是相对的,google了一下也没有什么好的解决方案,也许这是一个普遍性的问题
0 请登录后投票
   发表时间:2006-11-16  
直接放在U盘里随身带着,再加一道密码防止U盘丢失被人冒用,和招商银行的USB KEY一样。
0 请登录后投票
论坛首页 Java企业应用版

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