首页 > 解决方案 > 如何实现简单的安全套接字连接

问题描述

我正在用 C# 编写一个简单的客户端-服务器游戏。我的原型适用于套接字编程。我使用socketSocketAsyncEventArgs来异步我的代码。现在对于我喜欢的 alpha 版本(必须)创建一个安全连接。但我没有任何关于安全性和 SSL 和 TLS 的背景知识。

我为此目的找到了一个类:sslstream. 但是对于初学者来说,.Net 文档对我来说是不可理解的。另一个问题是像ClassSocketAsyncEventArgs这样的流不起作用。TCPClient

那么谁能指导我如何实现与套接字的简单安全连接?有两个要求:
1-它应该是快的和低延迟的,我很欣赏它支持非阻塞(异步)模式。
2-它应该支持非常小的消息。我的游戏命令平均为 10 个字节。我不喜欢加密命令变成 128 字节!

因为我的服务器不是公开的,只有我的客户连接到它,我不喜欢注册和购买证书。

请提供一步一步的答案。首先如何创建一些密钥(公共-私人......我不知道)其次如何验证客户端和第三如何安全通信。

衷心感谢您阅读此问题直到结束,并感谢您之前的回答。此致!

标签: c#socketsssltls1.2

解决方案


对于像我这样不熟悉密码学的人来说,在 Microsoft 文档中创建安全方案有一个很好的起点。 .NET 框架加密模型

创建加密方案并非易事!(来源

但本教程是关于实现基本安全系统的基本材料。

编辑:微软已经删除了关于创建加密方案的页面,所以我为你粘贴了一个 google chached 版本:

创建加密方案

.NET Framework 的加密组件可以组合起来创建不同的方案来加密和解密数据。

用于加密和解密数据的简单加密方案可能指定以下步骤:

  • 每一方都生成一个公钥/私钥对。

  • 各方交换他们的公钥。

  • 例如,每一方为 TripleDES 加密生成一个密钥,并使用对方的公钥对新创建的密钥进行加密。

  • 每一方将数据发送给另一方,并以特定顺序将另一方的密钥与自己的密钥组合,以创建一个新的密钥。

  • 然后各方使用对称加密发起对话。

创建加密方案并非易事。


推荐阅读