【问题标题】:Server and Client Secure Identification without SSL无需 SSL 的服务器和客户端安全标识
【发布时间】:2015-03-14 23:17:05
【问题描述】:

我目前正在开发一个使用 TCP/IP 在客户端和服务器之间进行通信的 C# 应用程序。连接后,我正在交换基于会话的 RSA 公钥,然后传递基于会话的 AES 对称密钥。这一切都很好,意味着我有一个安全的沟通渠道。

现在的麻烦是我需要确保服务器和客户端都是我希望与之通信的。在有人建议 SSL/TLS 之前:我没有连接到 Internet 以允许使用根 CA。

在客户端和服务器之间建立安全通道后,我提供一个简单的质询-响应方法是否有效?例如,如果客户端发送一个标识符(GUID?),服务器会将此值与已知客户端进行比较并接受或拒绝它,并且在相反的方向上重复相同的操作。由于数据是加密的并且加密是基于会话的,这是一种有效的验证方法吗?

我知道这些标识符的存储是弱点。

【问题讨论】:

    标签: c# authentication ssl encryption


    【解决方案1】:

    在任何人建议 SSL/TLS 之前:我没有连接到 Internet 以允许使用根 CA。

    在重新发明轮子之前:您不需要带有 SSL/TLS 的根 CA,而可以简单地使用带有 key pinning 的自签名证书。通常只使用公共根 CA,因为它可以更好地扩展以仅提供少数公共 CA,而不是将所有自签名证书(或其指纹)交换给通信的所有对等方。

    除此之外,您的提案似乎已经假设安全连接已用于检查凭据,然后您将使用该凭据来验证连接是否确实安全。或者简而言之:要提供安全连接,您首先需要安全连接。

    【讨论】:

    • 我避免使用整个 SSL,因为我认为使用自签名证书会很麻烦。关键固定完全解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多