2011-08-04 30 views
0

以前已回答此問題,但主要區別可能是我希望稍後能夠解密密碼,部署的應用程序,其中有人可以在代碼程序集上獲得處理(而不是防火牆後面的網站)如何讓我的已部署的應用程序安全地加密密碼,然後稍後將其解密以供自動化使用

基本上,我希望我的應用程序在部署時接受用戶密碼。我想將該用戶密碼存儲在某個地方(加密),然後稍後解密以用於自動化例程。

我會做一些假設來簡化事情。你可以假設內存中的密碼是安全的(當它在內存中)並且一個強大的算法(隨意命名最好的選項)就足夠了。即使如此,什麼會阻止某人反映我的代碼並找到我用來解密密碼的散列密鑰或技術(我甚至會將hashkey存儲在代碼中?)。我可以混淆,但我的理解是,它仍然可以閱讀。另外請注意,單向加密在這裏是不夠的。我需要稍後解密並使用密碼。有任何想法嗎?

+0

想法?當然,很多。但是,你真正的問題是什麼? – Oded

+0

我的問題是,如何安全地使用給出的假設來做到這一點。就像你如何保護密碼以便你可以再次使用密碼而不需要有人通過你的代碼進行反射並找出如何解密密碼本身 – Mark

+0

一個人比CPU更聰明。如果CPU可以取出鑰匙,一個人也可以這樣做。 –

回答

0

要直接回答這個問題,如果您想要加密然後解密您的數據,您正在尋找非對稱加密(而不是散列,這是一個單向過程)。 OWASP Top 10 on Insecure Cryptographic Storage是瞭解更多信息的好起點。

現在要間接回答你的問題,不要這樣做!密碼應該存儲在一個強大的加密哈希函數中,包括一個隨機鹽(你會在OWASP鏈接中看到這一點)。如果您試圖將密碼密文返回到純文本文本,然後在模仿其他人的同時驗證其他服務,那麼您錯過了問題的根源。您沒有提供太多的信息,但您應該問的問題是您如何(安全地)將身份模擬和身份驗證轉到下游服務。

+0

我感覺有人會說「不要這樣做!」。關於保存密碼然後重新輸入密碼的工具有什麼用處 - 比如可能是密碼恢復工具,您可以在其中保存密碼。現在瀏覽器也是這樣做的。他們如何解決這個問題。 – Mark

+0

有許多客戶端工具可以使用強大的非對稱加密(如瀏覽器和密碼管理器)來保存密碼。他們這樣做是因爲這是他們自動將客戶端登錄到另一個系統的唯一方式,對於密碼管理員,您還需要能夠檢索您的實際明文密碼。我從你的問題中得到了一個印象,那就是你正在談論在你開發的兩個系統之間進行身份驗證的自動化,在這種情況下,還有其他的模擬策略,或許你可以澄清問題是不是這種情況。 –

+0

我想要做的事情幾乎是瀏覽器或密碼管理器所做的一樣。非對稱加密聽起來很正確。我只是不知道如何做到這一點很難反映加密密鑰。 – Mark

相關問題