2012-07-26 115 views
1

我一直在研究如何最好地在代碼中存儲加密密鑰。很多人給出的答案和建議是不要這樣做,因爲它可以從代碼中獲得。例如... http://bit.ly/16wpVU你有沒有從代碼中提取存儲的加密密鑰

所以我的問題是,你有沒有這樣做?或者至少你是否完成了這項工作,但可能用於其他目的?它究竟做了什麼,以至於如果決定在代碼中隱藏加密密鑰,人們可以更好地爲它做好準備?

感謝 何塞

+1

我向你保證,如果你把密鑰放在可執行文件的任何地方,它將**被找到。 – 2012-07-26 04:23:27

+0

如果你使用的是Linux或類似的操作系統,那麼'strings '通常已經可以解決問題了......更復雜的技術可以通過調試器來解決。永遠不要硬鍵編碼。 – emboss 2012-07-26 11:27:27

+0

@emboss,你知道這種情況嗎?我所承認的是,人們往往只是重複他們在互聯網上聽到的內容,而沒有真正的權威來源。你知道一篇好的文章,書籍,任何細節或者例子嗎? – 2012-07-26 14:11:12

回答

2

我曾經做兼容性測試,我們的套房-B鍵談判VS微軟的所得鍵只是不符合某些密碼套件。使用WinDBG,我能夠逐步完成反彙編,確定其DLL中的關鍵入口點,找出各種關鍵組件的來源,以及確定其代碼與rfc分離的確切位置。 (奇怪的是,事實證明rfc是錯誤的。)

你當然想避免把密碼放在明碼中。我會建議使用一些其他數據的散列作爲您的密鑰。

之後,我的擔心是一個調試人員。我確信還有其他人花時間思考如何使事物不可剝奪,但我個人發現難以調試的是在不同的上下文中發生的行爲:狀態機,每執行一次,每次執行一次進程,中斷處理程序等。當你無法在源代碼中插入調試中斷時,很難在其中獲得調試器。

+0

會通過適合這些行的異常拋出密鑰? – 2012-07-26 18:06:10

+0

......或者只是讓攻擊者可以在異常上設置一個斷點而變得更簡單?你的第一個問題,如何打破,我可以回答。如何保護它會陷入困惑,這是我沒有資格解決的領域。 – tbroberg 2012-07-27 03:29:48