Week 4 - Cryptography and Compliance Pitfalls
Cryptography Vulnerabilities in the News
略
Cryptography Terminology
- Basics
加密是對資料進行編碼使得未授權的實體無法存取資料原貌的一個過程,隨著近幾年科技與資料量的成長,商業與個人資訊應隨時(儲存、使用中與傳輸中)保持加密狀態。 - Encryption Type
- Symmetric Key
發送者與接收者利用同一把金鑰對資料進行加解密;此類方法有AES、DES、IDEA等。 - Public(Assymetric) Key
發送者使用接收者的公鑰加密資料,接收者使用自有的私鑰解密,避免發送者可攔截其他人傳送給接收者的訊息並自行解密;此類方法有RSA、Elliptic、Curve、DH等。 - Hash
透過雜湊函式,任意大小的資料得以映射至固定大小,可以做為校驗和(checksum)使用,常見算法如MD5、SHA-1、SHA-2、SHA-3等。 - 僅能提供Integrity,非Confidentiality。
- 難以還原出原始資料。
- 可用來儲存機敏資料,如密碼。
- Digital Signature
數位簽章可用來驗證文件的真實性,此方法利用了前述的不對稱加密與雜湊的概念。 - 文件擁有者將檔案進行雜湊後利用私鑰加密,製作數位簽章。
- 文件擁有者將數位簽章附在檔案後進行傳送。
- 接收者將檔案進行雜湊後,獲得雜湊值A。
- 接收者將數位簽章利用文件擁有者的公鑰進行解密,獲得雜湊值B。
- 若A=B,則可確定該文件的完整性與不可否認性。
Common Cryptography Pitfalls
- 存取控制不可與儲存加密劃上等號:
軟體漏洞、硬體的遺失與遭竊是有可能的。
- 不要嘗試自製加密算法:
使用經過科學共同體驗證與測試的加密算法,好的加密算法只要私鑰未被揭露,即使算法內容開源也不應被破解。
- 不應寫死、使用低強度密碼及使用單純統計學意義上的偽亂數產生金鑰或鹽值:
密碼寫死可經過逆向工程輕易還原出內容,低強度密碼會被暴力破解,而單純的偽亂數可經由一部份的亂數序列與算法內容推敲下一個亂數,必須使用CSPRNG(Cryptographically Secure Pseudo-random Number Generator) 或 TRNG (True Random Number Generator)
- 加密技術是有出口管制的:
任何包含加密算法的程式碼,調用加密算法或直接進行加密功能的所有產品在出口前皆需經過審查。
Data Encryption
軟體漏洞、硬體的遺失與遭竊是有可能的。
使用經過科學共同體驗證與測試的加密算法,好的加密算法只要私鑰未被揭露,即使算法內容開源也不應被破解。
密碼寫死可經過逆向工程輕易還原出內容,低強度密碼會被暴力破解,而單純的偽亂數可經由一部份的亂數序列與算法內容推敲下一個亂數,必須使用CSPRNG(Cryptographically Secure Pseudo-random Number Generator) 或 TRNG (True Random Number Generator)
任何包含加密算法的程式碼,調用加密算法或直接進行加密功能的所有產品在出口前皆需經過審查。
- 注意事項
- 儲存中的資料(靜態)
- 淘汰過時的加密算法。
- 針對不同用途使用不同的金鑰。
- 不以明文儲存金鑰。
- 金鑰應先考量使用最大可用長度。
- 使用中的資料
使用中的資料很少被加密,處理不當可能導致記憶體中的資料洩漏。
- 從硬體讀取資料時也應保持資料為加密狀態,僅在使用前解密並立即清除記憶體內的明文。
- 同態加密透過複雜的代數運算,讓使用者無需解密即可對資料進行處理。
- 傳輸中的資料
- 自簽憑證僅能用於內部通訊,對外通訊務必使用由第三方頒發的憑證,搭配憑證綁定(Certificate Pinning),降低有心人士利用假憑證發動中間人攻擊的風險。
- 淘汰舊版本的 SSL/TLS 協定與HTTP連線,可使用Nessus、Qualys等工具進行掃描。
- 禁用 Compression with TLS (在TLS1.2預設為關閉),以防範特定攻擊。
- 啟用HTTP強制安全傳輸技術 (HTTP Strict Transport Security, HSTS),強制客戶端如瀏覽器使用HTTPS與伺服器建立連接。
- 注意近期資安新聞。
- 儲存中的資料(靜態)
- 淘汰過時的加密算法。
- 針對不同用途使用不同的金鑰。
- 不以明文儲存金鑰。
- 金鑰應先考量使用最大可用長度。
- 使用中的資料
使用中的資料很少被加密,處理不當可能導致記憶體中的資料洩漏。 - 從硬體讀取資料時也應保持資料為加密狀態,僅在使用前解密並立即清除記憶體內的明文。
- 同態加密透過複雜的代數運算,讓使用者無需解密即可對資料進行處理。
- 傳輸中的資料
- 自簽憑證僅能用於內部通訊,對外通訊務必使用由第三方頒發的憑證,搭配憑證綁定(Certificate Pinning),降低有心人士利用假憑證發動中間人攻擊的風險。
- 淘汰舊版本的 SSL/TLS 協定與HTTP連線,可使用Nessus、Qualys等工具進行掃描。
- 禁用 Compression with TLS (在TLS1.2預設為關閉),以防範特定攻擊。
- 啟用HTTP強制安全傳輸技術 (HTTP Strict Transport Security, HSTS),強制客戶端如瀏覽器使用HTTPS與伺服器建立連接。
- 注意近期資安新聞。
Hashing Considerations
雜湊有很多種用途,像是驗證密碼、驗證資料/檔案的完整性與真實性。目前安全且常用的算法有SHA-2, SHA-3…等等
- Pitfalls and considerations
- 避免使用已被證實為不安全的雜湊算法,如MD5、SHA-1...等。
- 用於驗證密碼時應加鹽(salted)進行雜湊,以防禦彩虹表攻擊。
- 適時採用密鑰延伸(key stretching),增加暴力破解的難度。
- Message Authentication Codes (MACs)
在許多情況下,若能將密鑰與訊息混合,再經過雜湊演算法處理,亦可同時達到加密與訊息確認的功能,此種技術稱之為雜湊訊息確認碼(HMAC) - 訊息確認碼及數位簽章都是被設計來驗證資料完整性與真實性的技術,但訊息確認碼是以雙方共享的密鑰來確認發送者的身份;數位簽章大多是以發送者的公鑰來確定身份。而兩者的應用範圍也有很大的區隔,前者較著重於訊息傳輸的驗證,後者大多使用於身份識別。(如 PKI 系統)
- 即使是加密數據,也應考慮使用HMAC進行保護,以避免bit-flipping攻擊。
Digital Signatures and Encryption Keys
略
Impact of Quantum Computing
量子計算將在10~25年後開始影響現有的加密生態
- 考量與影響
- 對稱加密的強度會隨著算力大幅提高而弱化,需增加密鑰的長度因應。
- 建構於質因數分解的非對稱加密算法將逐漸失去作用,如SSL/TLS協定使用的RSA、區塊鍊與數位簽章…等,可考慮實施Lattice-based加密算法、具同態加密性質…等的Quantum-resistant 算法。
- 軟硬體或產品中,加密的設定應設計為可置換的,以在加密演算法被證實為不安全的當下迅速更換。
Investigate Cryptography Further
略
沒有留言:
張貼留言