2

回答:我正在使用相互 SSL 身份验证。现在没有任何问题:)

我正在做一个服务器项目。我尝试使用 XOR encrypt-decypt 方法对客户端进行身份验证,但这还不够安全。我决定在我的套接字上使用 SSL,但我做不到。我有一个基于 System.Net.Sockets.Socket 的连接。即我想要这个:如果传入 Tcp 连接,则验证它是我们客户端的套接字连接。(每个套接字都无法从我们的端口连接我们的服务器套接字)。谁能给我一个起点或一些例子?(这是我服务器的死角,做不到就取消!)

EDIT1:我的系统目前是这样工作的:

  • 客户端连接到服务器。

  • 服务器创建 16 字节长的随机密钥并使用 serverKey (XOR) 对其进行加密,并将其发送给客户端

  • 客户端使用 serverKey 解密数据并使用 clientKey 加密并发送回

  • 服务器解密数据和检查是否相同

    (当客户端连接时,为验证超时启动一个计时器)

EDIT2:现在我正在使用其他密码学。当客户端连接时,它将被发送,客户端将解密并发回。密码学是这样工作的:

用特殊方法(不专业)加密 byte[]。之后,得到一个 byte[] 的哈希码。这个散列算法是我写的,如果有人不知道,永远不要理解我们的加密字节[]。(已经哈希输出不能回来)。最后,它结合了散列和加密(如 XOR,一种特殊方法)。

使用这种方法,没有人会得到解密/破解的数据。否则有一个非对称加密/解密方法(http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)。我可以稍后使用(硬)非对称密码学升级我的身份验证系统(如果还不够的话)。

4

3 回答 3

1

我认为对您来说一个好方法是使用 SSL 和客户端证书进行身份验证。

您将运营一个证书颁发机构并为您的服务器颁发一个服务器证书。您还将为每个客户端颁发客户端证书。然后在服务器中,您将连接限​​制为仅由您的 CA 签名的连接。

这是一种标准方法,基本上适用于任何 SSL 实现。是否有理由不适合您的情况?

于 2013-04-07T08:30:21.233 回答
0

您的问题的答案是将 SSL 与相互身份验证一起使用。您已将您的问题标记为“SSL”,因此大概这是一个可接受的解决方案。

您将不得不解释“我做不到”的意思。

于 2013-04-07T00:56:18.740 回答
0

我正在使用相互 SSL 身份验证。这是最好的方法。(对于“SSL 不适用于我的系统”等其他问题,我们深表歉意)

于 2013-04-15T13:52:07.083 回答