2011-06-28 131 views
4

我正在創建Air(AS3)項目。它將擁有自己的保護系統。從服務器到應用程序和後面的所有數據都被加密。我使用在服務器端腳本和應用程序中註冊的密鑰。如果黑客反編譯應用程序,它可以找出祕密密鑰。密鑰是字符串(常量)。我不想爲我的應用程序混淆。祕密密鑰的隱藏值Air app

如何隱藏此密鑰?我只能混淆它嗎?我可以用祕密數據混淆單獨的AS3類,然後在需要時從主代碼訪問它嗎?

+0

你怎麼加密 - 與MD5/sha1或類似?你發送什麼樣的數據? – Chris

+0

BASE64。傳輸數據以驗證許可證密鑰。 – Astraport

回答

1

如果黑客完全反編譯你的應用程序,你的祕密可以很容易地被追蹤出來,不管它的存儲是如何混淆的。
如果您想保持最低限度的混淆,則需要混淆使用密鑰的每個區域。如果它從「不可編譯的」區域走出,它就消失了。

3

如果您不想讓某人反編譯應用程序並找到密鑰,那麼最好的辦法就是不要將密鑰放入應用程序中。而是強制他們通過TLS/SSL向服務器進行身份驗證,以獲取在每個客戶端基礎上運行時協商的密鑰。

一旦對稱密鑰被協商,那麼你可以使用它來加密/解密你的數據傳輸。當然,這就提出了一個問題,爲什麼不首先使用SSL?這使您可以在客戶端和服務器之間進行端到端的加密。

當然,當應用程序在系統上運行時,攻擊者仍然可以從RAM中獲取解密密鑰。因此,他們可以在他們運行的應用程序和服務器之間解密數據,但無法解密其他應用程序用戶傳輸的數據(因爲他們每個人都有不同的密鑰)。

您無法以任何方式將密鑰放入應用程序,攻擊者永遠無法找到該密鑰。你的應用需要找到並使用它;你的應用程序這樣做的過程將導致攻擊者。所以不要把它放在那裏。