我正在读这个:
http://msdn.microsoft.com/en-us/library/tswxhw92(VS.80).aspx
第一句话说:“不应该在本地计算机上逐字或以纯文本形式存储非对称私钥。”
这有什么问题?密钥容器如何解决它。
我问的原因是我想要生成非对称密钥对。我正在编写的应用程序将使用公钥加密它发回给我的信息。我想在我们的源代码管理系统中存储公钥/私钥对,以便备份它。我不应该这样做吗?如果没有,我应该如何存储私钥以便可靠地备份?
感谢。 斯科特
更新:引用句中的'never'真的意味着永远不会。或者它是否意味着我不应该将密钥存储到源代码控制中,除非我不准备承担黑客可能从我们的源代码管理系统或从其获取的备份中检索密钥的风险。
答案 0 :(得分:4)
是的,引用句中的“never”确实意味着从不。
如果密钥以明文形式存储,那么任何有权访问该文件的人都可以读取或复制您的密钥,然后使用它来冒充您。如果你出于某种原因在屏幕上显示该文件(查找密钥,打开错误的文件,编辑文件中的其他信息等),那么任何走过的人都可以看到它,可能记住它,并用它来模仿你。
私人加密密钥是非共享密钥。如果你不保持非共享和秘密,它就无法正常工作。
答案 1 :(得分:3)
一种常见的解决方案是加密钥匙串中的私钥,例如通过使用一些基于密码的加密方案。
需要私钥才能解密使用公钥加密的位,反之亦然。由于公钥是公开的,因此您希望保密其私密对象。
特别是当公钥加密用于数字签名时,保密私钥很重要。能够生成可以使用您的公钥验证的数字签名基本上证明了签名者可以访问您的私钥。
如果您可以保证除您或您信任的软件之外的任何人都无法访问您计算机上的文件,则无需加密您的私钥。但这些都是艰难的假设。
答案 2 :(得分:2)
因为恶意用户可以读取您的密钥,如果他/她获取了您的文件。不确定,密钥容器做了什么,但我猜它会在将密钥写入文件之前加密密钥。