执行文件完整性
问题描述:
我一直在使用OpenGL在C++中处理项目,并且希望将当前场景保存为文本文件。沿x,y,z和它的颜色等立方体简单的东西。执行文件完整性
我的问题是关于如何确保该文件未被用户更改。我想过计算字符串的校验和并将其包含在文件中。
例如校验和,字符串
但是这又对用户修改值是开放的。
任何建议,或者这只是一个写一个好的解析器的情况?
干杯
答
理论上:你不行。
实际:它加密和模糊处理程序中的关键(这是多少DRM作品)
虽然你将永远无法停止确定的用户。为什么用户无法修改它如此重要?
如果您希望用户能够读取但不能修改该文件的最后一行HMAC和密钥。
答
要求文件不能被用户修改的要求有多严格?也就是说,你愿意付出多少努力来确保用户无法修补该文件?该文件是否需要用户可读?如果你真的不希望用户更改文件,也许某种类型的加密是答案(只要用户不需要能够读取文件)。像这样的trivial XOR encryption scheme可能就足够了。
答
而不是阻止用户更改文件是更好的在使用它之前验证文件的内容。创建一个能够检测(并修复?)错误的好解析器。
让用户做他想做的事情,因为一些错误可能是可以修复的。发出警告。使用哈希函数可以防止用户执行任何操作。
这个想法是为了确保加载的文件格式正确,并且在加载过程中不会导致问题。毕竟,我认为这确实是写一个体面的解析器的情况。无论如何感谢您的输入。 – Ljdawson 2010-01-09 21:16:46
如果您只想确保格式正确,那么一定要使用“正确的解析器”路线。 – 2010-01-09 21:27:38