c# - 如何实现简单的安全套接字连接
问题描述
我正在用 C# 编写一个简单的客户端-服务器游戏。我的原型适用于套接字编程。我使用socket
类SocketAsyncEventArgs
来异步我的代码。现在对于我喜欢的 alpha 版本(必须)创建一个安全连接。但我没有任何关于安全性和 SSL 和 TLS 的背景知识。
我为此目的找到了一个类:sslstream
. 但是对于初学者来说,.Net 文档对我来说是不可理解的。另一个问题是像ClassSocketAsyncEventArgs
这样的流不起作用。TCPClient
那么谁能指导我如何实现与套接字的简单安全连接?有两个要求:
1-它应该是快的和低延迟的,我很欣赏它支持非阻塞(异步)模式。
2-它应该支持非常小的消息。我的游戏命令平均为 10 个字节。我不喜欢加密命令变成 128 字节!
因为我的服务器不是公开的,只有我的客户连接到它,我不喜欢注册和购买证书。
请提供一步一步的答案。首先如何创建一些密钥(公共-私人......我不知道)其次如何验证客户端和第三如何安全通信。
衷心感谢您阅读此问题直到结束,并感谢您之前的回答。此致!
解决方案
对于像我这样不熟悉密码学的人来说,在 Microsoft 文档中创建安全方案有一个很好的起点。
.NET 框架加密模型
创建加密方案并非易事!(来源)
但本教程是关于实现基本安全系统的基本材料。
编辑:微软已经删除了关于创建加密方案的页面,所以我为你粘贴了一个 google chached 版本:
创建加密方案
.NET Framework 的加密组件可以组合起来创建不同的方案来加密和解密数据。
用于加密和解密数据的简单加密方案可能指定以下步骤:
每一方都生成一个公钥/私钥对。
各方交换他们的公钥。
例如,每一方为 TripleDES 加密生成一个密钥,并使用对方的公钥对新创建的密钥进行加密。
每一方将数据发送给另一方,并以特定顺序将另一方的密钥与自己的密钥组合,以创建一个新的密钥。
然后各方使用对称加密发起对话。
创建加密方案并非易事。
推荐阅读
- javascript - 自定义循环函数无限循环
- graphql-dotnet - GraphQL .Net 自定义扩展
- amazon-web-services - 调用 DescribeInstances 操作时出错 (RequestExpired):在 AWS cloud9 上运行推荐时请求已过期
- css - Tailwind CSS - 扩展颜色 - 命名颜色不同?
- javascript - 如何让页脚不出现在首页
- opencv - 如何在二进制分割图像中分割连接和重叠的对象?
- javascript - React Material Ui 对话框未显示正确的值
- angular - mat-tab-group 不是 Angular 9 中的已知元素
- google-tag-manager - Google Tag Manager:如何访问存储在数组中的购物篮内容?
- java - 如何将此过滤器从特定 AD 组更改为组织中的所有 AD 组?