如何实现简单的安全套接字连接

时间:2019-09-12 15:37:54

标签: c# sockets ssl tls1.2

我正在用c#编写一个简单的客户端-服务器游戏。我的原型可以与套接字编程一起很好地工作。我使用socket类和SocketAsyncEventArgs来异步编写代码。现在,对于Alpha版本,我喜欢(必须)创建一个安全连接。但我对安全性和SSL和TLS没有任何背景。

我为此找到了一个班:sslstream。但是.Net文档对于初学者来说我是无法理解的。另一个问题是SocketAsyncEventArgsTCPClient类之类的流中不起作用。

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

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

请提供分步解答。首先是如何创建一些密钥(公共-私有...我不知道),其次是如何认证客户端,其次是如何安全地通信。

衷心感谢您阅读本问题至结尾,并感谢您的回答。最好的问候!

2 个答案:

答案 0 :(得分:0)

Google是您的朋友:
https://www.codeguru.com/columns/dotnet/using-secure-sockets-in-.net.html

(*)强烈建议不要使用自签名证书。请勿在生产中使用自签名证书。

答案 1 :(得分:0)

对于像我这样不熟悉加密技术的人来说,在Microsoft文档中创建安全方案是一个很好的起点。 .NET Framework Cryptography Model

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

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

编辑:微软删除了有关创建加密方案的页面,因此我为您粘贴了谷歌加密版本:

创建加密方案

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

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

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

  • 各方交换他们的公钥。

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

  • 每一方将数据发送给对方,并按照特定顺序将对方的秘密密钥与自己的秘密密钥组合在一起,以创建新的秘密密钥。

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

创建加密方案并非易事。