CA5351 不要使用中斷的密碼編譯演算法
屬性 | 值 |
---|---|
規則識別碼 | CA5351 |
標題 | 請勿使用損壞的密碼編譯演算法 |
類別 | 安全性 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 8 中啟用 | No |
注意
上次於 2015 年 11 月更新此警告。
原因
雜湊函式 (例如 MD5 ) 和加密演算法 (例如 DES 和 RC2 ) 可以公開重大風險,而且可能會透過一般攻擊技巧 (例如暴力攻擊和雜湊衝突) 而導致公開機密資訊。
下列密碼編譯演算法清單是針對已知的密碼編譯攻擊。 密碼編譯雜湊演算法 MD5 是針對雜湊衝突攻擊。 根據使用方式,雜湊衝突可能會導致系統上的模擬、竄改或其他類型的攻擊,而系統依賴雜湊函式的唯一密碼編譯輸出。 加密演算法 DES 和 RC2 是針對可能會導致非預期加密資料外洩的密碼編譯攻擊。
檔案描述
中斷的密碼編譯演算法較不安全,建議您不要使用它們。 MD5 雜湊演算法容易受到已知的衝突攻擊,但是特定的弱點會因使用的內容而不同。 用來確保數據完整性的哈希演算法(例如檔案簽章或數位證書)特別容易受到攻擊。 在這種情況下,攻擊者可能會產生兩個不同的資料部分,讓良性資料可以取代為惡意資料,而不會變更雜湊值,或讓相關聯的數位簽章失效。
針對加密演算法:
如果在原始程式碼中找到任何上述的密碼編譯函式,並將警告擲回給使用者,則會觸發這個規則。
如何修正違規
使用密碼編譯較強的選項:
隱藏警告的時機
請不要隱藏這個規則的警告,除非密碼編譯專家已檢閱過它。
隱藏警告
如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。
#pragma warning disable CA5351
// The code that's violating the rule is on this line.
#pragma warning restore CA5351
若要停用檔案、資料夾或項目的規則,請在組態檔中將其嚴重性設定為 。none
[*.{cs,vb}]
dotnet_diagnostic.CA5351.severity = none
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。
虛擬程式代碼範例
下列虛擬程式代碼範例說明此規則偵測到的模式和可能的替代方案。
MD5 雜湊違規
using System.Security.Cryptography;
...
var hashAlg = MD5.Create();
解決方案:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RC2 加密違規
using System.Security.Cryptography;
...
RC2 encAlg = RC2.Create();
解決方案:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
DES 加密違規
using System.Security.Cryptography;
...
DES encAlg = DES.Create();
解決方案:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}