共用方式為


Windows 機密文件 編碼並非加密

Raymond Chen

編碼開始功能表使用 資訊 — 小心選取一個字,不以誤導 — 在登錄中。 關於變更的資料格式的編碼方式時,加密建議復原純文字要困難:它不是。 加密也建議編碼演算法要攻擊有彈性:它不是。

使用資訊,以便它不會設定期間透過登錄 F3 搜尋 SomeAppName.exe 的編碼。 這類搜尋發生在當使用者執行解除手寫入"安裝驗證 」scour 硬碟機和登錄的工具。 如果使用資訊以純文字記錄,這些工具會尋找項目在使用資料庫,然後報表是正確的解除安裝為不完整。 但是,解除安裝程式不希望刪除的登錄機碼。 他們沒有建立 ;它們不需要將它刪除。 在就實際上應該使用方式資訊 outlive 解除安裝。 這樣的一來如果使用者解除安裝,然後再重新安裝一的程式 [開始] 功能表可以說出,「 歡迎回! 這裡是您獎賞的特別色在 [檔案] 功能表。

編碼也作為程式設計人員訊號:"您不應該更動這"。如果程式設計人員想要與其影響,他們必須套用 (非常簡單但仍然非 Null) 之前解碼演算法。 這使得更新]、 [刪除] 和 [其他類型的周圍 messing 可能不小心執行這些登錄值。 當您啟動重創出的未記載的登錄機碼中的資料是解碼演算法時,您很明顯地設定有關刻意執行這項作業。 希望有些時候您在語音告訴您,"也許我不應該要能執行這項操作。"

亦即編碼方式做為一個 「 停止侵入"簽署。 它不防止使用者輸入您的屬性,但會清除它們的存在是不受歡迎,並移除其 「 但我不知道!"防禦。

編碼方式會有與安全性無關。 資訊儲存在的使用者登錄區中,所以存取已經是限制使用者 (和系統管理員)。 取得那里儲存像是密碼的不敏感資訊。 編碼方式是只在速度碰撞,讓應用程式開發人員嘗試竄改的登錄值是否超出忽略或 carelessness,瞭解資訊真的不,另一個機會。

就說 [速度] 碰撞不要停止程式設計人員撰寫函式来編碼及解碼資料還是。 使用其中一個範例我發現,是否使用者重新設定程式,然後程式會依序處理使用資料,這不是部份解除安裝,並它在執行階段期間發生時。 亦即,程式設計人員刻意設出操作使用資料,並藉此變更程式的位置,在 [檔案] 功能表。

找出解碼的演算法不會造成的 bragging 是 — 不是要執行這項操作的硬碟。 因此而且,解碼的演算法可能不是的一個您進行反向工程還是,因為也使用中可能變更編碼演算法的另一個 (同樣未記載的) 登錄機碼。 我在範例中提到的程式沒有這個額外 wrinkle 列入考量。 如果編碼方式並不設定為其預設值,工具找到它認為損毀的使用狀況資料。 幸好程式碼沒有嘗試 「 修復 」!

條件的編碼方式是它必須位於非常快速,因此為未決定哪個 [開始] 功能表變慢。 您不想開始] 功能表啟動時間花在一些密碼編譯函式內部的 80%。

編碼的演算法有不變引進在 Windows 2000 中,因為使資訊可以執行向前升級至 Windows XP 和 Windows Vista 時。

但是,Windows 7 的 [開始] 功能表的開發人員沒有暫時變更編碼演算法。 這 coincided 與變更應用程式的使用方式資訊的格式,不以舊的使用資訊,從較早的 Windows 版本上執行的決策。 變更編碼演算法進行區分舊從簡單的新資料。 此暫時變更觸發 misinterpretations Windows watchers,假設時看到新的編碼方式之間的一個短暫的開始功能表開發人員的動作 「 修正 」安全性不足的 「 加密 」使用一個不同的弱式 「 加密 」 — 但這是從未加密的。 以最終發行版本結束原始編碼演算法會就地回。 之後就所有原來的編碼方式是什麼執行隱含的社會合約。

Raymond Chen 的 的網站]、 [舊的新 Thing 和 [標題相同活頁簿 (Addison Wesley 2007) 處理 Windows 歷程記錄] 和 [Win32 程式設計。 他有時候會編碼資訊的 (不佳) 將它轉譯成德文。