| 속성 | 값 |
|---|---|
| 규칙 ID | CA5350 |
| 제목 | 취약한 암호화 알고리즘을 사용하지 마세요. |
| 범주 | 보안 |
| 수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
| .NET 10에서 기본적으로 사용하도록 설정 | 아니요 |
참고 항목
이 경고는 2015년 11월에 마지막으로 업데이트되었습니다.
원인
TripleDES 등의 암호화 알고리즘과 SHA1 및 RIPEMD160 등의 해시 알고리즘은 취약한 것으로 간주됩니다.
이러한 암호화 알고리즘은 최신 알고리즘만큼 강력하게 보안을 보장하지 않습니다. 암호화 해시 알고리즘 SHA1 및 RIPEMD160 은 최신 해시 알고리즘보다 충돌 방지 기능이 약합니다. 암호화 알고리즘 TripleDES 는 최신 암호화 알고리즘보다 더 적은 보안 비트를 제공합니다.
규칙 설명
오늘날 여러 가지 이유로 약한 암호화 알고리즘 및 해시 함수가 사용되지만 데이터의 기밀성을 보장하기 위해서는 이 방법을 사용하지 않아야 합니다.
이 규칙은 코드에 3DES, SHA1 또는 RIPEMD160 알고리즘이 있을 때 트리거되며 사용자에게 경고를 throw합니다.
위반 문제를 해결하는 방법
보다 강력한 암호화 옵션을 사용합니다.
TripleDES 암호화의 경우 Aes 암호화를 사용합니다.
경고를 표시하지 않는 경우
데이터에 필요한 보호 수준이 보안 보장을 요구하지 않는 경우 이 규칙에서 실행되는 경고를 표시하지 않도록 설정합니다.
경고 표시 안 함
단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.
#pragma warning disable CA5350
// The code that's violating the rule is on this line.
#pragma warning restore CA5350
파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 none에서 심각도를 으로 설정합니다.
[*.{cs,vb}]
dotnet_diagnostic.CA5350.severity = none
자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.
의사 코드 예제
다음 의사 코드 샘플에서는 이 문서를 작성할 당시 이 규칙에 의해 검색되는 패턴을 보여 줍니다.
SHA-1 해시 위반
using System.Security.Cryptography;
...
var hashAlg = SHA1.Create();
해결 방법:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
RIPEMD160 해시 위반
using System.Security.Cryptography;
...
var hashAlg = RIPEMD160Managed.Create();
해결 방법:
using System.Security.Cryptography;
...
var hashAlg = SHA256.Create();
TripleDES 암호화 위반
using System.Security.Cryptography;
...
using (TripleDES encAlg = TripleDES.Create())
{
...
}
해결 방법:
using System.Security.Cryptography;
...
using (AesManaged encAlg = new AesManaged())
{
...
}
.NET