【发布时间】:2011-07-04 18:12:00
【问题描述】:
我有一个使用 xml 配置的专有应用程序。目前我使用 boost::property_tree 来读取 xml 文件。
我想在更公共的系统上同时部署可执行文件和 xml 文件,并希望避免任何人(包括该系统的管理员)读取 xml。
理想情况下,我想在我的系统上维护明文 xml,以便我可以轻松地手动修改它。然后我会在文件上调用一些加密命令,将它部署在更公共的机器上,并让可执行文件即时解密它。我会使用相同的密钥并将其硬编码到可执行文件的源代码中。
这是一个合理的方法吗?实现这一点的最简单方法是什么?有没有更好的办法?
【问题讨论】:
-
那里有你需要保护的东西吗?或者您只是不希望人们在文件中胡闹并寻求支持?如果是后一种情况,那么二进制序列化呢?
-
这不是一个建设性的事情。一个足够坚定的系统管理员可以并且将会对您的应用程序进行逆向工程,找到密钥并解密配置文件。需要修改配置的不确定的人只会放弃您的应用程序。因此,你通过这些伎俩所做的一切,到头来都是在抢夺自己的市场份额。
-
只要您意识到,由于应用程序需要保存解密密钥才能读取配置文件,因此加密充其量只是阻止偶然窥探者的一种手段,而不是一种合法的安全形式。
-
@Zack:使用公钥系统,管理员可以解密文件,但不能更改参数(不能加密修改后的文件)。从这个意义上说,效果会更接近于“签署”文件,并结合一种简单的隐匿安全形式。
-
这只会让它更难一步(现在管理员必须修补二进制文件以接受不同的签名密钥)。
标签: c++ xml encryption configuration