您的位置:首页 > 其它

要仔细深入研究的东西还真多……

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

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

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

今天先写到这里,有时间继续汇报。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: