我已經繼承了一個移動應用程序,它在明文中發送授權憑證(用戶標識/密碼)。正在尋找一種安全的方式來通過移動應用程序進行身份驗證
我想象我有2個選擇: a)使用TLS。 b)編寫我自己的認證協議。
如果我選擇(b)爲確保安全,我必須遵循哪些關鍵指導原則。 例如如何避免重播攻擊,加密策略。
我已經繼承了一個移動應用程序,它在明文中發送授權憑證(用戶標識/密碼)。正在尋找一種安全的方式來通過移動應用程序進行身份驗證
我想象我有2個選擇: a)使用TLS。 b)編寫我自己的認證協議。
如果我選擇(b)爲確保安全,我必須遵循哪些關鍵指導原則。 例如如何避免重播攻擊,加密策略。
對於這兩個「你不能得到起訴爲」和「合理保護」「安全」的定義爲移動應用程序,你可以假設該行是安全的VS人在這方面的中級攻擊和廣泛的竊聽。 SSL/TLS聽起來是最簡單的方法,但這可能取決於您的運營商和目標手機。
如果你不能讓TLS的工作,你需要推出自己的,使用Diffie-Hellman密鑰交換和建立密碼庫(Legion of the Bouncy Castle有jightweight實現,它是J2ME標準。)
如果您使用b),關鍵指導原則是:不要。如果你想要它是安全的,那就是。
儘量堅持a)。
我還沒有看過新手機,但之前安裝的SSL證書有問題。 – 2008-10-13 07:04:06
對於(b)我想你做了一個挑戰性的迴應。
服務器生成一個隨機字符串,並將其發送給客戶端。客戶端將其附加到密碼並散列整個事情,將散列發送回服務器。服務器執行相同的計算,將結果與從客戶端獲得的結果進行比較。如果它們匹配,則客戶端發送正確的密碼。
最明顯的漏洞是,如果有人窺探交換雙方,他們可以對密碼運行離線字典攻擊。
編寫自己的安全協議是沒有必要,也是一個壞主意。它幾乎肯定會有可利用的缺陷。如果您只需要保護登錄憑據的機密性,那麼您應該使用SSL/TLS。它還使您可以在將來更輕鬆地升級到基於客戶端證書的身份驗證。
是的我的手機應用程序是J2ME。是的,我之前遇到過SSL問題。謝謝。 – 2008-10-13 08:56:48