感謝您在百忙之中閱讀本文時,我是一個年輕的開發人員,在web項目和服務器端編碼一些專業的經驗,但現在我建立我的第一個移動應用程序和在深入研究網絡之後,我無法澄清一些關於保護移動應用程序數據傳輸的問題。保護移動連接 - 存儲的祕密和密鑰
以下是我認爲我正確理解的內容: 通過實施SSL證書(以及可選的SSL固定在客戶端上),您可以在很大程度上防止在開放網絡上嗅探用戶信息,以及模擬其他用戶(中間人等)。任何進一步的安全層旨在保護服務器並防止某人獲得對交易結構和細節的見解。 安全的另外的層包括消息認證(HMAC例如)處理它之前認證的消息,以及加密「隱藏」的消息的內容。
我想實施一個加密然後HMAC過程來進一步確保交易,這是我關於這個過程的問題:你如何在客戶端存儲密鑰/祕密? 我意識到這將取決於應用程序的具體情況各不相同,和安全的程度也希望實現。出於這個原因,我包括一些細節:有存儲或傳輸(SSN,銀行等)對用戶沒有高度敏感的信息,但應用程序並處理付款,因此成本高,可以發生,如果有人開始與服務器搞亂和支付系統。因此,我希望實現客戶端和服務器之間的安全傳輸,而不是做一些不尋常或不相稱的工作。
我已經閱讀了很多關於該主題的內容,並且從我可以收集的內容中瞭解到,不管以哪種方式導出密鑰或祕密,在某些時候它將以明文形式呈現給加密/哈希邏輯,因此有人會能夠調試應用程序,斷點這一步,並妥協的關鍵/祕密。你如何解決這個問題(你可以)? 怎樣纔算「適當」(硬編碼?從表結構或其他要素獲得?其他?)。
這個問題實際上意味着高層次和概念性,所以我不認爲它關係到我討論的是哪個平臺,但無論如何,現在我編寫iOS應用程序,而後端是.NET
非常感謝您的寶貴時間,任何幫助或洞察力將不勝感激。如果我能澄清應用程序的任何方面,我會很樂意去做。 Best, Michel
如果您正在開發ios應用程序,請參閱此鏈接... https://developer.apple.com/library/ios/samplecode/CryptoExercise/Listings/Classes_SecKeyWrapper_m.html – jailani
非常感謝,非常有用。 – user3165053