WinRT 存储 RSA 私钥的位置

Posted

技术标签:

【中文标题】WinRT 存储 RSA 私钥的位置【英文标题】:WinRT where store RSA private key 【发布时间】:2014-05-27 08:42:43 【问题描述】:

在我的 WinRT 应用程序中,我必须存储私钥以供以后解密。 在另一个应用程序中,我使用了 RSACryptoServiceProvider:

 CspParameters cspParams = new CspParameters();

 cspParams.KeyContainerName = ContainerName;

 RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams);

 RSAalg.PersistKeyInCsp = true;

但在 WinRT 中是另一个命名空间中的另一个类。我正在寻找如何将私钥存储在容器(或另一个安全的地方)中的替代方法。

我花了很多时间寻找最安全的解决方案,但我发现只有少数网站可能有用,例如:

http://www.rahulsingla.com/blog/2011/04/serializing-deserializing-rsa-public-private-keys-generated-using-bouncy-castle-library

建议在哪里保留解密的私钥(可能在文件中)。安全吗?

我也在 Windows.Security.Cryptography.Certificates 中找到了 CertificateEnrollmentManager 类。但我不明白如何使用这个类将证书保存在 KSP 中并通过证书加密/解密数据。

【问题讨论】:

这可能会有所帮助:code.msdn.microsoft.com/windowsapps/Cryptography-and-3305467b 【参考方案1】:

Windows 将私钥存储在 \Documents and Settings\\Application Data\Microsoft\Crypto\RSA 中,并要求使用密码对其进行保护。

底线是您希望您的私钥是安全的。在某些情况下,这意味着它们可以存储在您的硬盘上。在其他情况下,这意味着它们应该存放在前面有武装警卫的两人访问控制保险箱中。这只是取决于任何可能的曝光率。

【讨论】:

以上是关于WinRT 存储 RSA 私钥的位置的主要内容,如果未能解决你的问题,请参考以下文章

关于RSA中公钥和私钥的具体使用情况区分

RSA公钥私钥的作用

如何暴力破解 RSA 私钥的密码?

Openssl 将仅包含 RSA 私钥的 .PEM 转换为 .PKCS12

生成 RSA 公钥和私钥的方法

RSA公钥和私钥的生成以及PKCS#1与PKCE#8格式的转换