SUMTEC -- There's a thing in my bloglet.

But it's not only one. It's many. It's the same as other things but it exactly likes nothing else...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  263 随笔 :: 19 文章 :: 3009 评论 :: 74万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

为了弄.Game Framework,为了在里面实现分布式计算,就需要实现一些数据安全方面的东西,比如说加密,验证,签名,密钥交换等等。这个问题真不是一般的简单……

本来想先弄出个基于Udp的协议来,结果却没有办法好好的继续下去。原因很简单:你得选择一套数据安全策略。比如签名的方法决定了签名的长度,签名太长了就会影响数据传输效率。如果不采用那些安全的签名方法,自己弄一套,确实是有可能让签名数据变得小一点,但是安全方面我敢打赌我不可能做出更加安全的算法出来。(还要考虑效率问题……真是不是一般的头痛。)最后通过降低密钥的长度,采用RSA加密算法,签名的长度最低可以达到48bytes,这个长度还算是我能够接受的心理极限。如果一个数据包大概有56个字节的话,光是签名就让数据包增大将近一倍,但是更小的签名方式我想不出来。事实上我正在考虑把这个协议弄得比较复杂一点,发送数据的时候尽量减少签名的次数,一次过签名1k的数据。也许有其他的简单方式(受到自己的启发了)……

就如我在ourgame里面汇报的一样,加密数据方面准备采用类似一次一密乱码本的方式进行加密。这种加密方式公认是最强大的,但是如果数据包放生了丢失呢?确实是一个问题。另外一个问题我想得更多:这个乱码本不可能太大,否则两个客户端之间头一次接触就需要交换一个大数据量的乱码本,肯定会影响性能。于是我希望交换的是乱码本生成随机数种子,可是这样的话又需要一个随机数序列发生器,很可喜的是,这个随机数序列发生器在.NET里面就没有提供——有一个随机数发生器,但是这个东西部能够设置种子,因此无法产生双方都一样的随机数序列。(MSDN的文档在这个随机数发生器类及其派生类上面写得很简单,简单到我不知道是否有理解错误,但愿这个东西能够设置随机数种子吧……不过我猜测可能是不行的,因为这个东西是用来进行密钥交换的。)也许我要找时间仔细翻翻《应用密码学》看看自己怎么实现一个随机序列发生器了,而且还要比较强的才行……目前我觉得最后很可能选择使用M算法。

今天先写到这里,有时间继续汇报。

posted on   Sumtec  阅读(1079)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示