2015-12-15 121 views
5

我在我的C++應用程序中使用AWS S3上傳和下載文件。我在代碼中包含了訪問密鑰和祕密,但我擔心有人可以從二進制文件中讀取它們。是否有任何標準技術來混淆它們?如何在C++中隱藏我的AWS S3訪問密鑰和密鑰?

更新:我沒有在PC上運行這個應用程序,它實際上是嵌入式設備,所以我不擔心用戶從文件或RAM中讀取密鑰和密鑰(訪問設備要困難得多) 。我擔心的是有人正在瀏覽我們的更新文件,並從二進制文件中提取密鑰和祕密。

+0

如果我正確處理了這個問題(迄今爲止給出的問題),那麼問題的關鍵在於可以以某種方式讀取代碼中的密鑰。這並不意味着人們可以知道實際密鑰的位置,但可以知道靜態數據的位置,並將此數據用作暴力攻擊的基礎(例如嘗試所有4個字符的序列,然後是5個等等)在靜態數據中)。 – marom

+0

這是一個很難回答的問題。我認爲你並不完全清楚你想要達到什麼目的,答案(就像通常與安全一樣)可能是「你做錯了」。作爲一個經驗法則,你不能在用戶自己的電腦上保留任何祕密。你有沒有想過在http://security.stackexchange.com/上提問? – BoBTFish

回答

0

最好不要將密鑰保存在代碼中。需要時輸入。

如果保存在代碼中,請勿將密鑰保存爲簡單字符串。保持它的某種模式,並在需要時通過一些算法生成密鑰。

+0

但是,我不得不將AWS密鑰和祕密提供給客戶,因爲這會破壞隱藏它的點。 – parsley72

1

在計算機中存儲祕密不是一件容易的事。您可以做的一件事是使用密碼加密密鑰並將加密的數據存儲在文件中。然後,當用戶輸入密碼時,您可以使用密碼解密加密數據並檢索密鑰 - 您可以使用該密鑰。

但是,這種方法不適用於軟件需要在沒有用戶干預的情況下運行的情況。

+0

會不會更好地在代碼中嵌入加密數據? – marom

+0

@marom:我很難說,我認爲這取決於情況。如果密鑰被加密存儲,加密數據的存儲位置不應太重要。 –

相關問題