C#动态加密和解密DLL

C#动态加密和解密DLL,c#,dll,encryption,C#,Dll,Encryption,我们正在开发一个基于客户端/服务器的应用程序,该应用程序应该在服务器端加密DLL,然后在客户端安装阶段,服务器将这些DLL发送到客户端 当客户端运行时,它将远程连接到服务器以获取解密密钥。然后它将解密DLL并使用它们启动和使用该程序 我的问题不是加密DLL,而是如何动态解密它们以使其可用 谢谢你抽出时间。 卡米尔。你似乎在发明一种新型的安全方案,而不是使用久经考验的技术。除非您是安全专业人员,否则最终可能会遇到无法保护您的软件的复杂系统 你的问题只会引出更多的问题: 如果您使用解密密钥发送DLL

我们正在开发一个基于客户端/服务器的应用程序,该应用程序应该在服务器端加密DLL,然后在客户端安装阶段,服务器将这些DLL发送到客户端

当客户端运行时,它将远程连接到服务器以获取解密密钥。然后它将解密DLL并使用它们启动和使用该程序

我的问题不是加密DLL,而是如何动态解密它们以使其可用

谢谢你抽出时间。
卡米尔。

你似乎在发明一种新型的安全方案,而不是使用久经考验的技术。除非您是安全专业人员,否则最终可能会遇到无法保护您的软件的复杂系统

你的问题只会引出更多的问题:

如果您使用解密密钥发送DLL,为什么还要首先对它们进行加密

“在飞”的定义和提议的好处是什么


您是否计划使用某种过期机制?一旦客户机拥有解密密钥,您就必须假设他们永远拥有它。

似乎您正在发明一种新型的安全方案,而不是使用久经考验的技术。除非您是安全专业人员,否则最终可能会遇到无法保护您的软件的复杂系统

你的问题只会引出更多的问题:

如果您使用解密密钥发送DLL,为什么还要首先对它们进行加密

“在飞”的定义和提议的好处是什么


您是否计划使用某种过期机制?一旦客户端拥有解密密钥,您就必须假设他们永远拥有它。

您想要的是下载并解密DLL文件,然后在运行时使用
系统.Reflection
命名空间(如
Assembly.load
CreateInstance
加载DLL


然而,我不认为这是所有的安全。请始终记住,您不控制客户端。

您想要的是下载并解密DLL文件,然后在运行时使用
系统.Reflection
命名空间(如
Assembly.load
CreateInstance
加载DLL


然而,我不认为这是所有的安全。始终记住,您无法控制客户。

您尝试过什么?这是一个相当广泛的问题;请尝试询问更具体的问题。我们不想将所有DLL与安装程序放在一起。我们希望在服务器检查客户端是否有效后,在激活期间提供这些加密的DLL。所以基本上,我不知道如何用AES对这些DLL进行动态解密,以便在我们的软件中使用。我们将无法添加这些引用,因为文件将被加密,并且仅在程序启动期间解密……您尝试了什么?这是一个相当广泛的问题;请尝试询问更具体的问题。我们不想将所有DLL与安装程序放在一起。我们希望在服务器检查客户端是否有效后,在激活期间提供这些加密的DLL。所以基本上,我不知道如何用AES对这些DLL进行动态解密,以便在我们的软件中使用。我们将无法添加这些引用,因为这些文件将被加密,并且仅在程序启动期间解密……您能给我介绍一下久经考验的技术方案吗?实际上,我们希望客户端程序使用SSL连接我们的服务器以进行身份验证。这没问题。问题是,客户端程序可能很容易被修补以跳过此阶段。我们希望保护我们的代码,不要让它被修补。@Camille,解决方案不是很简单。使用SSL仅为外部观察者保护数据,这意味着通过导线发送的数据将被加密。但是,访问合法客户端的恶意用户可能会捕获加密种子并自行解密DLL。@Bruno,程序是否可以轻松修补?我所说的补丁是指任何攻击者都可以编辑源代码,跳过认证代码,在没有认证的情况下重新编译程序?@camile,这是最肯定的。任何类型的客户端身份验证都很容易导致漏洞。即使是最模糊的代码也会被破解。@Camille,关于安全性的事情就像在你的房子里放锁一样。这并不能真正把小偷挡在外面,但是如果你的锁比邻居的强,他们可能会让你一个人呆一会儿。然而,提出的解决方案并不十分安全。如果您只是将密钥传输到客户端代码,并且您使用的是对称密钥,那么即使使用SSL,恶意用户也可以创建一个具有合法凭据的假客户端并截获该密钥。请您向我介绍久经考验的技术方案,好吗?实际上,我们希望客户端程序使用SSL连接我们的服务器以进行身份验证。这没问题。问题是,客户端程序可能很容易被修补以跳过此阶段。我们希望保护我们的代码,不要让它被修补。@Camille,解决方案不是很简单。使用SSL仅为外部观察者保护数据,这意味着通过导线发送的数据将被加密。但是,访问合法客户端的恶意用户可能会捕获加密种子并自行解密DLL。@Bruno,程序是否可以轻松修补?我所说的补丁是指任何攻击者都可以编辑源代码,跳过认证代码,在没有认证的情况下重新编译程序?@camile,这是最肯定的。任何类型的客户端身份验证都很容易导致漏洞。即使是最模糊的代码也会被破解。@Camille,关于安全性的事情就像在你的房子里放锁一样。这并不能真正把小偷挡在外面,但是如果你的锁比邻居的强,他们可能会让你一个人呆一会儿。但是,