我正在用c#编写一个简单的客户端-服务器游戏。我的原型可以与套接字编程一起很好地工作。我使用socket
类和SocketAsyncEventArgs
来异步编写代码。现在,对于Alpha版本,我喜欢(必须)创建一个安全连接。但我对安全性和SSL和TLS没有任何背景。
我为此找到了一个班:sslstream
。但是.Net文档对于初学者来说我是无法理解的。另一个问题是SocketAsyncEventArgs
在TCPClient
类之类的流中不起作用。
那么有人可以指导我如何使用套接字实现简单的安全连接吗?有两个要求:
1-低延迟应该很快,我感谢它支持非阻塞(异步)模式。
2-它应该支持很小的消息。我的游戏命令平均为10个字节。我不喜欢加密命令变成128个字节!
因为我的服务器不是公开的,只有我的客户连接到它,所以我不希望注册和购买证书。
请提供分步解答。首先是如何创建一些密钥(公共-私有...我不知道),其次是如何认证客户端,其次是如何安全地通信。
衷心感谢您阅读本问题至结尾,并感谢您的回答。最好的问候!
答案 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加密的秘密密钥,并使用对方的公共密钥对新创建的密钥进行加密。
每一方将数据发送给对方,并按照特定顺序将对方的秘密密钥与自己的秘密密钥组合在一起,以创建新的秘密密钥。
然后双方使用对称加密发起对话。
创建加密方案并非易事。