AES加密密钥存储在X509Certificate中?

时间:2014-03-18 00:23:09

标签: .net encryption aes x509 x509certificate2

有一项服务可将用户数据存储在远程文件共享上。用户数据需要加密,以便远程文件存储使得任何直接访问它的人都无法访问它。执行存储和检索的前端计算机确实需要私钥来加密和解密。

使用存储在每台前端机器上的证书库中的自签名X509Certificate来保存私钥是否有意义?

我认为这是有道理的,但是,查看AesCryptoServiceProvider的API,我没有看到将X509Certificate2私钥作为私钥加载到AES中的简单方法。

2 个答案:

答案 0 :(得分:1)

  

我认为这是有道理的,但是,查看AesCryptoServiceProvider的API,我没有看到将X509Certificate2私钥作为私钥加载到AES中的简单方法。

X509Certificate2代表不对称加密。 AES代表对称密码术。

加密大数据时,不对称加密不是一个好的选择(性能原因)。然而,使用不对称加密(即证书)有利于验证用户并授权对该用户进行加密和解密等操作。设计用户数据的加密和解密可以通过多种方式完成。

  • 每个用户都可以拥有自己的AES密钥,该密钥将使用用户的证书进行加密。在加密或解密用户数据之前,必须首先解密用户AES密钥。加密形式的AES密钥将保留在后端。必须有一些机制,以便在旧证书过期时重新加密密钥。您应该考虑撤销用户证书的选项,如果您允许或不允许解密用户的AES密钥,则由您决定。
  • 在后端拥有一个主AES密钥,用于所有用户数据加密和解密。这个主AES密钥应该保存在一个非常安全的地方,因为如果所有用户的被利用数据也被利用(这取决于数据存储是否被破坏)。

答案 1 :(得分:0)

  

使用存储在每台前端机器上的证书库中的自签名X509Certificate来保存私钥是否有意义?

不是真的。不要使用X509证书;而是使用PKCS#12。

X509证书将实体(用户,组织等)绑定到公钥。这是工作的错误工具。 PKCS#12是个人信息交换语法标准。它定义了一种文件格式,用于存储具有公钥证书的私钥,并使用密码保护。

因此用户获取PKCS#12文件来解密他/她的数据。前端服务器从PFX文件获取X509证书以加密用户的数据。


  

我没有看到将X509Certificate2私钥加载到AES作为私钥的简单方法

这是一个不同的问题。但由于AES密钥的范围超出范围,因此不会存储在X509证书中。你以后会做其他的旋转。