我認爲你還是應該考慮DPAPI;不用於加密數據文件,而是用於加密祕密字符串。
有沒有可能要問你的用戶只需一次輸入所述祕密串*如果你能,你會則:
- 使用DPAPI將其加密
- 然後存儲加密值某處(配置文件,設置文件,註冊表,無論你喜歡什麼,最好是保護用戶,而不是普通公衆)。
- 然後,當你需要它時,使用DPAPI檢索祕密字符串
- 使用其餘的代碼因爲你已經擁有了它。
由於您的數據文件仍然會被AES以相同的祕密字符串加密,所以它們仍然可以互換。 (在具有相同祕密字符串的人羣中...所以現在你已經創建了它,以便您的應用可以擁有多個安全羣組,每個羣組都設置自己的祕密......但這是一條切線。)
優勢即使有人得到你的代碼,也沒有任何逆向工程會回饋祕密字符串。因爲它不在那裏。
請注意,這比單獨使用混淆更好。通過模糊處理,如果攻擊者獲得了代碼並可以在自己的環境中運行代碼,則他們可以附加一個調試器,並在將該字符串傳遞給AES代碼時停止。他們不必關心你使用多少技巧來爭奪它。他們在解讀完之後纔會觀看它。使用DPAPI,除非他們在用戶的上下文中運行您的代碼,否則無法工作......在這種情況下,無論如何遊戲。
我不是說DPAPI是完美的,但在這種情況下,我會真正考慮它,然後再訴諸單獨的混淆。 (您仍然可以通過模糊處理工具運行您的代碼:這也是一件好事,僅僅是不夠)。
*如果不是,您可以在安裝/初始配置時提供嗎?我已經在文件中看到了一些以純文本形式安裝密鑰的地方,然後程序會在首次使用時對其進行加密。
來源
2012-08-17 02:55:26
eol