資料保護的防護設計之道
加密傳輸過程中的資料
當傳輸敏感性資料的時候, 系統的每一個環節或是網路都應該在傳遞的過程中加密. TLS是目前最普遍被網站使用來做資料傳遞加密的方式. 儘管已經有些已知的風險被發現(e.g. Heartbleed), TLS的加密方式還是建議在傳遞的過程中使用.
Encrypting data at Rest[edit]
密碼的儲存很難做到安全. 資料的分類也會影響資料加密的方式. 例如信用卡資料就必須符合PCI-DSS認證標準. 如果你希望要自己建立自己的密碼系統, 也必須確定有足夠的專業判斷該密碼的強度. 實務上建議使用業界已經經過驗證的加密演算法, 而非自行開發加密演算法. 可以使用Google KeyCzar的加密程式庫, Bouncy Castle等加密函數都包含在該程式庫SDK.另外對於密碼系統的處理也必須考量密鑰的管理與整體加密架構的設計, 對於較複雜的系統還要考量系統間相互的信任關係.
資料傳輸加密的弱點常發生在選用不適合的加密金鑰或是將加密金鑰與資料一起儲存. 金鑰應該被視為機密而且只能存在特別保護的儲存體中. 需要授權使用者才能夠存取該金鑰並且使用後要從記憶體中移除. 其它替代方案像是使用特殊的硬體來進行加密, 例如Hardware Security Module (HSM) 的金鑰管理, 加密相關的程序與模組必須獨立運作.
傳遞過程的防護
確保敏感性資訊不會在傳遞的過程中外洩. 敏感性資訊可能從記憶體被存取, 或是從臨時儲存的磁碟位置或是記錄檔等被駭客讀取.
手機應用程式:用戶端的儲存安全防護
對於手機裝置來說, 因為經常會有遺失或是被竊取的問題, 因為防護手機端的資料安全需要適當的防護措施. 應用程式如果建置不當, 很容易導致嚴重的資訊外洩(舉例來書:認證資訊, 存取驗證token等). 當管理重要敏感性資料時 最好的方式就是不要將資料儲存在手機端, 甚至透過 iOS keychain的方式儲存都不要.
安全防護
參考
- TLS安全設定: OWASP Transport Layer Protection Cheat Sheet
- 防護中間人與偽造TLS證書的攻擊威脅: OWASP Pinning Cheat Sheet
- OWASP Cryptographic Storage Cheat Sheet
- OWASP Password Storage Cheat Sheet
- OWASP Testing for TLS
- IOS Developer Cheat Sheet: OWASP iOS Secure Data Storage
- IOS Application Security Testing Cheat Sheet: OWASP Insecure data storage