logo资料库

MDCC 2014 乐元素CTO凌聪——移动游戏防作弊攻防战.pdf

第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
资料共33页,剩余部分请下载后查看
移动游戏防作弊攻防战 其他元素&凌聪
Agenda • 为什么要防作弊 • 作弊方式 • 总结 2
经济损失 3
作弊的其他影响 • 弱联网的休闲游戏 • 排行榜:全局排行/好友排行 • 需要本地运算的重度游戏 • 广告!!! 4
弱联网游戏可能存在的安全问题 • 存档被篡改/复制 • 本地配置被篡改 • 账号被盗或恶意修改 • 内存被修改 • 网络协议被破解/重放攻击 • 工程被逆向破译 • 二进制程序可能被修改 • 函数被外挂Hook
防止存档篡改 • 方法:加密存档!AES 256 CBC PKCS#7 • 必须使用安全的对称加密算法 – 建议使用AES加密算法,密钥256位或以上(工业级,速度快) • 密钥的存储 – 不要将密钥直接存储在代码、配置或内存中 – 密钥不要存储在存档中 – 密钥每次加密当场现算 – 使用固定密钥,密钥的产生需要有随机度
存档协议设计 00 01 46 44 SourceHash 幻数 版本号 初始向量 源数据哈希 IV RawData 源数据 • Magic number:标记存档类型 • 版本号:标记加密方法类型 • 源数据哈希:用于验证解密的正确性 • 初始向量:块加密算法的初始向量IV
密钥的产生 • 密钥必须有一定的随机性 – 可以随机数产生(但需要一些技巧) – 也可以哈希产生 • 产生随机密钥的技巧: – 应使用工业级加密库的产生函数,这样更随机 – 自己产生的随机数,如以下算法,实际上最多 只有231种密钥,而加密算法要求2256 char key[32]; srand(time(NULL)); for (int i = 0; i < 32; ++i) { key[i] = rand() % 256; }
分享到:
收藏