安全性:防止未经授权加载/调用C++DLL

Security: Preventing Unauthorized Loading/Calls into C++ DLL

本文关键字:加载 调用 C++DLL 授权 安全性      更新时间:2023-10-16

我有一个C++DLL,foo.DLL,它提供API方法,为加密数据提供明文答案。我想想出一个强大的解决方案,只允许友友(例如user.dll)加载这个dll并使用它的功能。

这不是DLL欺骗的问题,而是如何阻碍DLL仅在特定上下文中工作的问题。我在多个平台上处于潜在的非网络环境中,所以给家里打电话或依靠系统调用不是一个可能的解决方案。

我考虑过的是一个自制的初始化步骤,它共享一个用于初始化的"神奇钥匙"。在安全方面,"自己滚"通常是不好的。

对于这种DLL级别的安全性,有什么公认的做法建议吗?

保护加密数据的唯一方法是确保它需要一个非常长的、不可预测的秘密密钥来解密。安全性不是来自于掩盖解密方法,而是来自于密钥本身。你不能阻止某人调用你的DLL,但DLL中的函数可能要求调用者提供解密密钥作为参数。这样,只有知道密钥的客户端才能解密内容。您可以尝试通过在DLL中的某个位置嵌入解密密钥来作弊,但只需将DLL加载到调试器中即可找到解密密钥。所以不要那样做。