我有一个需要在一台服务器上加密的大型XML(由一个c#应用程序加密),需要在另一台服务器上解密(由另一个c#应用程序解密)。 XML包含需要进行此加密的关键信息。
我真正需要的是,执行加密的服务器应仅知道公钥,并且只有正在进行解密的服务器才知道私钥。此外,此私钥应存储在服务器上的安全区域,例如证书。
可以帮助我实现这些目标的步骤是什么?
答案 0 :(得分:2)
非对称加密非常耗费处理器,因此非常慢。因此,它通常不用于加密大量数据。
通常所做的是对称加密用于加密大量数据,而非对称加密(公钥)用于加密对称加密中使用的密钥。
加密密钥与加密数据一起传输。密钥被解密(私钥),然后使用对称密钥解密批量数据。
答案 1 :(得分:2)
如何生成密钥对和证书取决于所使用的软件。
可以从证书中获取私钥。
一般方法是使用AES等对称加密算法加密数据,并使用非对称加密算法(如RSA或EC)和公钥加密对称密钥。这样做有两个原因:1。与对称加密相比,非对称加密非常慢。 2.非对称加密的数据长度受密钥大小的限制:典型密钥大小为2048位,将数据长度限制为245字节。
除了服务器具有HSM或访问TPM之外,通常无法在服务器上安全地存储私钥(或任何东西)。使服务器安全的主要步骤是双因素身份验证。但如果它在共享计算机上,请注意服务器的其他用户的root升级漏洞。
HSM - Hardware Encryption Module
TPM - Trusted Platform Module
答案 2 :(得分:1)
这就是我实现它的方式。 在我的服务器2上,我使用' makecert.exe'生成证书(.cer)和私钥(.pvk)。命令。然后,使用' pvk2pfx.exe',我正在生成.pfx文件。这是将存放证书和私钥的文件。 现在我只用公钥将证书导出到服务器1,在那里我加密数据,在服务器2上使用证书的私钥我解密数据。