Windows 机密 编码不等于加密

Raymond Chen

开始菜单使用 信息进行编码,仔细选择一个词因此不以误导 — 在注册表中。 有关更改数据的形式编码时,加密建议的恢复纯文本用于很困难:不是这样的。 加密还建议的编码的算法是应该复原攻击:不是这样的。

使用信息进行编码,以便它不会打开通过注册表 F3 搜索期间为 SomeAppName.exe。 这类搜索发生时的用户运行手动编写"卸载验证"‖ 鐩橀 ┍ 鍔 ㄥ 櫒注册表搜索的工具。 如果使用信息以纯文本格式记录,杩欎簺宸 ュ 叿会找到项使用数据库,然后一个预期卸载的报表中为不完整。 但是,卸载程序不希望删除该注册表项。 它们不能创建 ;它们不需要将其删除。 实际上,使用率信息无误 outlive 卸载。 这样,如果用户卸载,然后重新安装程序,开始菜单可以说,"欢迎使用备份! 这里位于您 high-ranking 专色开始菜单上。

编码还用作程序员信号:"您不应为此影响"。程序员想要与影响,如果它们需要应用 (非常简单但仍不能为空) 解码算法之前。 这样更新、 删除和其他类型的 messing 周围具有可能会无意中执行这些注册表值。 褰撴偍鍚  姩 pounding 解码算法的未记录的注册表项中的数据出您显然设置有关有意执行此操作。 希望在某一时刻一个声音在您的头中告诉您,"可能我时不应该这样。"

换而言编码作为"无 Trespassing"签名。 它不会防止用户输入您的属性,但可以清除其状态是不受欢迎,并删除其"但我不知道 !"防御措施。

编码有与安全无关。 该信息都存储在用户配置单元中,因此访问已被限制为用户和管理员。 没有敏感的信息,如密码,获取那里存储中。 编码是只是一个为应用程序开发人员试图篡改的注册表值是否超出忽视或 carelessness,认识到信息确实不为它们的另一个机会速度凸块。

当然,该速度凸块不要停止程序员编码和解码数据仍从编写该函数。 一个示例与我发现,是否一个用户重新配置程序,然后程序会反过来操作使用率数据),这不是部分卸载 ;它发生在运行时。 换而言,程序员有意设出操作使用率数据和从而改变该程序的位置在开始菜单上。

找出解码的算法是几乎无法导致 bragging — 不难执行操作。 而且,解码的算法可能不在反向工程仍,因为一个也在使用可能另一个 (同样未记录) 的注册表项更改编码的算法。 我在示例中提到的程序未考虑此额外的技巧。 如果编码不设置为其默认值,该工具找到它察觉到损坏的使用情况数据。 谢天谢地代码未尝试"修复"!

编码条件之一是它非常快,因此不以降低决定什么转入开始菜单。 您不希望的开始菜单启动时间花费在加密函数中某些 80%。

编码的算法已保持不变鍦? Windows 2000 引入它是因为,这样信息就能向前升级到 Windows XP 和 Windows Vista 时。

但是,Windows 7 的开始菜单开发人员暂时更改编码的算法。 这 coincided 的决定来更改应用程序使用信息的格式并不执行旧的使用率信息从早期的 Windows 版本上。 更改编码算法进行区分旧从新的数据更容易。 此临时更改触发 misinterpretations 假定时看到一个新的编码人员 Windows 观察程序之间的一个 flurry 的开发人员开始菜单的"修复"在弱"加密"与一个不同弱"加密",但这不是加密在第一个位置。 以最后的发布的原始编码算法将返回位置。 毕竟,初始编码是什么执行隐式的社会合同。

Raymond Chen 网站、 的旧的新内容 和具有相同标题的简介册 (Addison-Wesley 2007) Windows 历史记录和 Win32 编程处理。 他有时信息通过对进行编码 (差) 将其翻译成德语。