【问题标题】:Secure communication using encrypted messages使用加密消息进行安全通信
【发布时间】:2015-12-25 02:41:44
【问题描述】:

我有一个关于如何加密用户之间的消息的问题。请注意,我将只讨论密码学理论,而不是像 C++ 和 Windows 密码学这样的平台相关代码。我说的是系统编程,而不是使用 TLS、SSL 等进行的 Web 编程加密......

另外,忽略消息的证书和签名,因此只需将公钥视为已被验证为非欺诈性的,并且消息来自正确的用户。

我认为,在用户之间实现快速且安全的加密通信的最佳方式是让两个用户都拥有一个会话密钥,因为对称加密比非对称更快,并使用非对称加密 (RSA) 来安全传输会话密钥。

我知道还有其他密钥协商算法,例如 Diffie-Hellmans,但我还是坚持使用我选择的 RSA。

如果您发现这可能是不安全的(中间人攻击)或执行加密通信的效率极低的方式,请告诉我。

理论步骤:

i.) 各方 = {服务器,客户端}

ii.) 服务器:生成会话密钥 (RC4)

iii.) 客户端:生成私钥/公钥对 (RSA)

iv.) 客户端:向服务器发送公钥

v.) 服务器:使用客户端的公钥加密会话密钥,然后发送加密的 客户端的会话密钥

vi.) 客户端:使用客户端的私钥解密会话密钥

vii.) 双方现在都持有用于快速加密通信的会话密钥

Server(Server's Session key) Session Key的加密包(通信媒介) Client(Server's Session key, Client's Public/Private key pair)

谢谢!

【问题讨论】:

    标签: security encryption rsa public-key-encryption private-key


    【解决方案1】:

    假设

    • 无法篡改公钥
      • 我认为您的意思是“忽略证书和消息签名”
    • 加密系统没有损坏
      • 对称密码未破解(例如,RC4 已破解)
      • 非对称密码未破解
      • 单向哈希函数没有坏
      • 随机数生成器未损坏

    在这些条件下,这是非常安全的。事实上,您在问题中描述的是 PGP 的工作原理。

    如果您愿意了解有关针对 PGP 的攻击的更多信息,请转至 here。 如果你愿意学习密码学基础知识,this 是一个很好的初学者教程。

    【讨论】:

    • 我从 RC4 更改为 DES,我相信这是通过 Windows Cryptography API 提供给我的最佳(最安全)对称算法。我认为我使用的 Windows Cryptography 库涵盖了大多数假设,例如不包括损坏的密码和使用正确的散列,所以感谢您确认我的理论!
    • DES 也坏了,要小心:) 此外,正如他/她的回答中提到的 symcbean,实施加密通常是一个非常糟糕的主意。你可能想看看这篇文章:security.stackexchange.com/questions/18197/…
    • 你说得对,哈哈 DES 很差。我再次更改为 AES-256。你能从这个列表中告诉我哪种对称算法最安全吗? msdn.microsoft.com/en-us/library/windows/desktop/…
    • @John Doe CALG_AES_256 是此列表中最强的对称密码。
    • 谢谢!我很感激。
    【解决方案2】:

    让我们坚持使用我选择的 RSA。

    这就是你最大的漏洞所在。

    诸如 TLS(可以使用 RSA)之类的协议 SSH 和 PGP 为协商加密提供了一个定义明确的机制,而诸如 openssl 之类的实现提供了一个文档化、经过测试、可移植、稳健且我们将测试的抽象层。

    滚动您自己的解决方案会带来注入漏洞的巨大风险。并且需要持续的维护痛苦。

    BTW RC4 被很多人认为是坏的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 2012-07-15
      • 2021-09-13
      • 2012-04-07
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多