簡體   English   中英

如何在移動應用程序中實現高安全性?

[英]How to achieve high security in mobile apps?

自從開始學習移動計算以來,我經常錯過有關安全性的討論。 但是,在我看來,這是移動計算的一個主要話題。 開發安全移動應用程序有某些方面:

  1. 如何在設備和服務器之間創建保存通信
  2. 如何識別設備以及如何在移動設備上驗證用戶?
  3. 如何處理設備被盜可能性以及隨后濫用設備上存儲的數據和授予設備的訪問權限?

可能還有更多,但我認為這些是關鍵問題。 到目前為止,我已經提出了這個解決方案:

  1. SSL。
  2. 使用OAuth授予對設備的訪問權限,然后存儲AES加密的訪問令牌。 在允許用戶通過請求解密密鑰(最可能是PIN,因為那些更容易在移動設備上輸入)訪問應用之前檢查用戶的身份。
  3. 如果數據存儲不可避免,請使用AES加密 要么使用2中提到的密鑰,要么將解密密鑰存儲在服務器上,並讓應用程序每次都從那里請求它。 如果被盜,則撤銷OAuth密鑰。 (這也可以防止小偷從服務器檢索解密密鑰。)

您是否看到這種方法存在任何缺陷,或者看到可以改進策略的任何一點? 我試圖在可用性和安全性之間找到平衡點,因為它們似乎是對立的概念。

注意:這是一般概念,不是專門為一個操作系統設計的。

這是開放式的,非常一般,所以SO可能不是最好的地方。 你真的認為你可以在3個要點中總結一下嗎? 如果不指定具體的指導方針,參數和實踐,您甚至無法嘗試承諾安全性。

  1. “使用SSL”本身並不意味着什么。 濫用SSL有一百種方法:信任每個證書,使用弱密碼,使用易受攻擊的協議版本(SSLv2等),不檢查撤銷等等。
  2. 使用AES並不能保證很多:如果你使用ECB模式,你可能會受到攻擊,或者在CBC模式下重復使用相同的IV,或者你的IV不是真正隨機的(真實的例子:TLS試圖用這個來偷工減料)一)等等
  3. 如果你在服務器上存儲加密密鑰,那只是另一個攻擊載體:你真的相信服務器(你如何確定它是你自己的?)來存儲/管理你的密鑰?

所以,是的,很多潛在的缺陷,答案很簡單:它並不那么簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM