马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 OOOO 于 2020-9-15 10:01 编辑
大家一起谈谈软件安全
最近正在打算做一个加密的平台,就是双向动态加密,具体用到RSA和AES加密技术
脚本从服务器拿数据的时候请求参数是动态加密的,服务器返回的数据也是动态加密的
原理是每次请求接口的时候客户端先随机生成一串AES秘钥,用这串秘钥加密待发送的业务数据,再通过RSA公钥加密AES秘钥
最后发送AES加密后的业务数据和RSA加密AES秘钥后的密文
数据到服务器端之后,服务器拿RSA私钥解密RSA加密AES秘钥后的密文,得到AES明文密码
拿AES明文密码解密客户端AES加密后的业务数据,得到客户端业务明文数据
服务器处理之后的结果不能以明文返回给客户端
拿AES明文密码加密服务器处理之后的结果以密文的方式返回给客户端
客户端收到密文数据,用之前生成的AES秘钥解密
由于客户端每次请求的AES秘钥都是随机的,所以从服务器得到的数据只要能解密成功数据则可信,解密失败数据则不可信,既能防止改包亦能防止被替包
大概是这个原理,不过还有一些细节问题,比如一模一样的请求内容请求超过一次,是会驳回的,彻底杜绝被抓包反复请求接口窥探数据等非法行为
可与银行安全级别媲美
那么现在,你要真正担心的是反编译,但是反编译的成本较高,可用加壳等手段保护
首先确定一下自己的软件价值是否值得别人反编译,否则这种担心完全就是多余的
反编译不是谁想做就能做的,尤其是加了各种防护,况且反编译想得到原始源码几乎不可能
据说.net、C#开发的程序可以被反编译得到源码,大概是因为它编译机制问题被找到空子钻了,当然也有防范措施
至于TC被反编译倒没听说过,也许是因为TC本身考虑了这一点做了处理,也许是因为用户量少被反编译的可能相对的低
就算TC写的程序被Po.Jie也大多也是作者本身没有考虑到验证的安全性,所以不管是TC也好C也好,商业软件要有强烈的安全意识 |