【发布时间】:2015-05-28 15:54:32
【问题描述】:
出于某种原因,我想避免使用 SSL, 虽然,我希望使会话尽可能安全(所以我决定双重加密请求 - JS 端和 C# 端) 我想出了一个可能适合我的解决方案:
- 用特定的密钥和IV(AES)加密JS中的请求
- 将请求发送到服务器。
- 在服务器上 - 使用不同的密钥 (AES) 加密请求
- 将响应发送回客户端。
- 在客户端 - 使用第一个密钥解密响应。
- 将请求发送到服务器。
- 在服务器上 - 使用第二个密钥解密请求。
现在,我对加密不太熟悉。 当我在有效的服务器和客户端上使用相同的密钥时(可能是因为使用了相同的密钥) 当我使用不同的密钥时,我无法解密客户端上的双重加密消息。
如何用我当前的算法克服这个问题?这可以做到吗? 如果没有,有其他方法可以模拟吗?
谢谢你。 (需要时提供代码)
【问题讨论】:
-
您可能希望调查类似STS Protocol 的内容。您的场景将是相同的,
Alice代表JavaScript和Bob代表C#代码。它使用签名和加密来确保无法尝试中间人攻击。我敢肯定,您必须修改确切的实现细节,但总体思路是一样的。 -
EBrown,有什么可以让我们更容易理解STS的实现方式吗?任何准备好的代码? (无论是用哪种语言编写的)
-
很难说,我自己实现了它,但该代码是专有的(我反对分享样本/细节的合同。)This ARPN 期刊问题上有很好的信息据我所见,以易于理解的方式。它没有实际代码,但它有一个很好的概念概述。
-
我不完全确定我理解你想通过这个协议实现什么。您的协议可以在 CTR 模式下使用 AES 等流密码轻松实现,但您认为这会实现什么? 1. 您对两个预共享密钥的身份验证感兴趣吗?接收者可以解密密文这一事实是否已经意味着他们拥有第二个密钥? 2. 你真的需要通过网络发送 4 次可能很长的消息吗?或许您应该对用于加密实际数据的随机密钥执行此操作。
标签: javascript c# encryption cryptography aes