.net中公钥加密的最佳方法

时间:2011-01-25 22:19:40

标签: c# java security encryption

我有一个需要与另一个系统共享数据的系统。我想按照公钥/私钥方法加密文件,而不是AES。

另一个系统是Java,所以我想确保我的方法能够与其他平台一起工作。我将使用公钥进行加密,我们将为他们提供在其系统中具有的解密密钥

任何建议都会很棒。

我是否需要使用充气城堡之类的东西,还是可以使用原生代码?

2 个答案:

答案 0 :(得分:4)

您的提案奇怪。你是爱丽丝。您希望向系统“Bob”发送一条秘密消息,只有Bob可以解密。您的建议是 Alice 为Bob生成密钥对,然后以某种方式神奇地将Bob的私钥从Alice转移到Bob,然后Alice可能会保密公钥。如果你有一个Alice可以将私钥传递给Bob的机制,那么为什么你首先需要加密?你已经有了一个安全的通道!

对于大型文档使用安全通道可能太昂贵了。即使它是,您的方案与公钥加密应该如何工作完全相反。您希望 Bob 生成密钥对并传输< em> public 键明确 Alice

现在Bob必须解决的问题是 Alice如何知道公钥实际来自Bob ?攻击者可能会将他们的公钥发送给Alice并告诉Alice它来自Bob。 这是你应该解决的重要问题。整个方案的优势在于Bob能够成功获得Alice的公钥。

你真正需要做的工作是一个值得信赖的第三方,比如Verisign或其他一些认证机构,其公钥是众所周知的。 Alice和Bob都可以生成自己的密钥对,然后Verisign可以保证Alice的公钥和Bob的公钥分别来自Alice和Bob。这是系统安全性的基础。

此外:对于大型邮件,公钥加密是。通常,您要做的是使用公钥加密作为密钥协商的一部分。这是在特定“会话”的对称密码系统中生成密钥,使用公钥加密作为安全通道将会话密钥从Alice传送到Bob,然后使用快速对称算法加密其他所有密码。

答案 1 :(得分:1)

为两个系统配备密钥对。将System1中的公钥安装到System2中,将公钥从System2安装到System1中。

现在,两个系统都可以加密只有其他系统才能查看的数据。用它来交换随机的AES密钥。

使用该AES密钥加密其余流量

公钥只用于验证您正在与谁交谈以及签署内容,其余时间使用AES。