非对称加密算法理解

非对称加密算法 是什么自己搜索一下,这篇文章就不讲解了。

在游戏数据传输中,数据肯定是要加密的,否则如果被抓包工具抓取,模拟提交数据,这个工具就成了这个游戏的外挂了。

怎么来防范这种攻击呢?

简单的来说,发包的时候数据采取加密措施,服务器端再解密。

有点同学可能会说,如果反编译客户端的代码

1.可以看到密钥

2.可以看到原始数据加密前调用的方法

这样,就可以先调用密钥来解密,然后修改原始数据,再加密打包发送。

对于这种情况完全没有办法。只能给客户端程序加壳,让破解的人无法轻易脱壳破解。

但是这些加壳的工具也是人写出来的,可能也会有被破解的一天,这就是为啥在牛的软件都有可能会有外挂。

当然你不用自己去研究如果给软件加壳,花钱购买是最简洁的方法,起码不会那么轻易被破解。

言归正传

如果你使用的是常用的对称加密算法,如AES加密,如果破解者知道了密钥 只需要试试AES解密方式就可以看到你的原始数据。

看到原始数据就可以修改数据后再调用AES加密,然后发送给服务器端。→外挂产生O(∩_∩)O~

这么做很简单,所以在这里我们不能使用对称加密算法。

非对称加密算法的公钥和密钥是不同的

客户端使用的是公钥

服务器端使用的密钥

也就是说,在客户端抓包获取的是公钥加密后的数据,即使知道了公钥,但是你没有密钥是无法解密的(密钥在服务器上)。

从这点上来说还是相对安全的。

原始数据是安全的,后面就好办了。这意味着破解者无法看到原始数据的数据结构及提交的内容。


这篇文章里面提到了 时间戳为了防止“攻击者将游戏数据包拦截后对服务器进行延迟再发”的重放攻击,还应在封包内加入必要的时间戳TS(time starnp)

当破解者无法获取原始数据的时候,重复的提交当前数据包的请求也会提交成功。

因为数据格式完全正确,数据内容也正确。

所以我们要对当前数据包做时效性的处理,一个数据包只有在规定时间范围内有效,超时即为无效,自动丢弃。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值