密碼編譯演算法毀損或有風險

OWASP 類別: MASVS-CRYPTO:加密編譯

總覽

雖然密碼編譯技術廣泛用於保護資料機密性和完整性,但開發人員若不慎實作較弱或過時的密碼編譯演算法,就會產生重大風險。這類演算法的固有弱點是造成這項安全漏洞的原因,只要惡意行為人具備必要的運算能力或知識,就能加以利用。這類攻擊的後果可能十分嚴重,可能導致未經授權的存取、資料外洩,以及機密資訊遭竄改。

影響

機密資料可能會外洩、遭到修改或偽造。如果加密演算法有瑕疵或風險,可能會導致安全漏洞,並遭到濫用,進而解密機密資訊、竄改資料或冒用合法實體身分。這類安全漏洞遭到利用的影響,包括資料侵害、財務損失、聲譽受損和使用者信任度降低。

風險:密碼雜湊函數強度不足或損毀

使用安全性較弱或已遭破解的加密雜湊函式 (例如 MD5SHA1),會對資料安全和完整性造成重大風險。雜湊函式的設計目的是為輸入資料建立獨一無二的固定長度指紋 (雜湊),因此可用於各種用途,包括驗證資料完整性、儲存密碼和數位簽章。不過,如果使用不安全或遭入侵的雜湊函式,可能會出現下列幾項安全漏洞:

  • 碰撞攻擊:如果雜湊函式不夠嚴密,攻擊者就能找到兩個產生相同雜湊值的不同輸入內容,這會讓他們能夠以惡意資料取代合法資料,且不會遭到偵測,進而破壞資料完整性。
  • 資料侵害事件:如果密碼是使用低強度演算法雜湊處理,系統遭到入侵時,使用者憑證可能會外洩。攻擊者隨後就能使用彩虹表或其他技術破解密碼,未經授權存取帳戶。
  • 否認數位簽章:數位簽章中使用的雜湊函式若不夠嚴謹,就可能遭到有心人士利用來偽造簽章,導致難以判斷文件或訊息的真實性和完整性。

因應措施

為降低這些風險,請務必使用經過嚴格審查的強效加密雜湊函式,例如 SHA-2SHA-3,並在發現新安全漏洞時及時更新。此外,採用密碼加鹽和使用 bcryptArgon2 等密碼專屬雜湊演算法等安全做法,可進一步提升資料保護力。


風險:加密編譯加密函式防護力薄弱或損毀

使用安全性較弱或已遭破解的加密函式 (例如 DESRC4),會對機密資料的私密性造成嚴重威脅。加密技術的設計目的是將資訊轉換為無法解讀的格式,藉此保護資訊,但如果加密演算法有瑕疵,這些保護措施就會遭到規避:

  • 資料侵害:加密演算法強度不足,容易受到各種攻擊,包括暴力破解攻擊、已知明文攻擊和密碼分析技術。如果攻擊成功,加密資料可能會外洩,導致個人詳細資料、財務記錄或機密業務資料等敏感資訊遭到未經授權的存取。
  • 資料操縱和竄改:即使攻擊者無法完全解密資料,如果加密演算法不夠嚴密,他們仍可能操縱資料而不被偵測到。這可能導致資料遭到未經授權的修改,進而造成詐欺、不實陳述或其他惡意活動。

因應措施

在加密函式中使用強大的加密演算法

為降低這些風險,請務必使用經過嚴格審查的高強度密碼編譯演算法,並遵循金鑰管理和加密實作的最佳做法。定期更新加密演算法並掌握新興威脅的相關資訊,也是維持資料安全的重要做法。

建議使用的預設演算法:

  • 對稱式加密:
    • AES-128/AES-256 (GCM 模式)
    • Chacha20
  • 非對稱式加密:
    • RSA-2048/RSA-4096,並加上 OAEP 邊框間距

使用加密編譯程式庫中的安全基本類型,減少常見的陷阱

選取適當的加密演算法至關重要,但如要真正減少安全漏洞,請考慮使用提供簡化 API 並強調安全預設設定的密碼編譯程式庫。這種做法不僅能強化應用程式的安全性,還能大幅降低因程式碼錯誤而產生安全漏洞的機率。舉例來說,Tink 提供 AEADHybrid 兩種不同的加密選項,簡化加密選擇,方便開發人員做出明智的安全決策。


風險:密碼編譯簽章函式防護力薄弱或損毀

使用不安全或損毀的加密簽章函式 (例如 RSA-PKCS#1 v1.5,或以不安全的雜湊函式為基礎的函式),會對資料和通訊的完整性造成嚴重風險。數位簽章的設計目的是提供驗證、不可否認性和資料完整性,確保訊息或文件來自特定傳送者,且未遭到竄改。不過,如果底層簽章演算法有瑕疵,這些保證就會受到影響:

  • 偽造簽章:如果簽章演算法不夠嚴謹,惡意行為人就可能發動攻擊,偽造簽章。也就是說,他們可以冒充合法實體、偽造文件或竄改訊息,而不會遭到偵測。
  • 否認簽名:如果簽名演算法遭到破解,簽署者可能會謊稱自己未簽署文件,這會破壞不可否認原則,並造成法律和後勤方面的問題。
  • 資料操縱和竄改:在簽章用於保護資料完整性的情況下,如果演算法不夠嚴密,攻擊者可能會修改資料,但簽章不會失效,導致系統無法偵測到竄改行為,重要資訊也可能因此外洩。

因應措施

使用強大的密碼簽章演算法

為降低這些風險,請務必使用經過嚴格審查的強大加密簽章演算法:

  • RSA-2048/RSA-4096,並加上 PSS 邊框間距
  • 採用安全曲線的橢圓曲線數位簽章演算法 (ECDSA)

使用加密編譯程式庫中的安全基本類型,減少常見的陷阱

選擇正確的簽章演算法至關重要,但如要真正減少安全漏洞,請考慮使用預設提供強大安全保障的密碼編譯程式庫。以 Tink 為例,這項工具提供簡單易懂且功能齊全的 API,並預設採用安全曲線,簡化簽章選擇。ECDSA這種做法不僅能提升安全性,還能省去複雜的設定或決策程序,簡化開發作業。


資源