cae*_*say 4 c# security obfuscation networking
我知道我不能阻止人们对我的协议进行逆向工程,但是我想采取一种安全透明的方法来尽可能地使其变得更加困难.
我有一个服务器/客户端系统,通过网络与http样式数据包通信.
例:
Header
Attribute: Value
Attribute2: Other Value
Payload
Run Code Online (Sandbox Code Playgroud)
我想尽可能地让除了我的客户以外的任何东西都能访问网络.推动他们的问题反编译我的程序集 - 我可以对这个网络规范做些什么好事,这将使得理解并在没有源的情况下进行另一个实现非常困难?
我在想某种奇怪的哈希方法或某种加密算法很难.
编辑我不是想保护我的程序集或源代码.我试图阻止某人,例如,使用WireShark或类似方法观看我的协议,然后根据该信息制作自己的实现.
好吧,有三种情况:
用户无法访问服务器代码而无法访问客户端代码:最简单的方法是使用存储在二进制文件中的预生成的共享密钥,然后加密/解密.
用户可以访问客户端或服务器代码,但不能同时访问两者:使用公钥/私钥方法.您可以使用公钥进行加密,但需要私有密钥才能解密.
用户可以访问客户端和服务器代码:你搞砸了.
如果要提高安全性,则只应在会话启动期间使用此静态密钥,以生成新的共享密钥,然后将其用于通信.
编辑:实际上,一个更简单和安全的解决方案是使用ssl和证书(这是一个你不应该实现自己的加密的口头禅)每个证书都附带一个秘密私钥.只要用户没有访问权限,如果您验证对等方具有完全正确的证书,那么您就是安全的.
为了颠倒一些网络协议(来自MMO),我可以告诉你,你永远不会保护你的协议很长时间,对不起.
你能做的最好的事情是:
但这些只是减缓攻击者速度的方法.这肯定不会阻止他们.
| 归档时间: |
|
| 查看次数: |
700 次 |
| 最近记录: |