CA5351 끊어진 암호화 알고리즘 사용 안 함
속성 | 값 |
---|---|
규칙 ID | CA5351 |
타이틀 | 손상된 암호화 알고리즘을 사용하지 마세요. |
범주 | 보안 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 8에서 기본적으로 사용 | 아니요 |
참고 항목
이 경고는 2015년 11월에 마지막으로 업데이트되었습니다.
원인
MD5 등의 해시 함수와 DES 및 RC2 등의 암호화 알고리즘은 상당한 위험을 노출시킬 수 있으며 무차별 암호 대입 공격 및 해시 충돌과 같은 간단한 공격 기법을 통해 중요한 정보가 노출될 수 있습니다.
아래 암호화 알고리즘 목록은 알려진 암호화 공격을 받습니다. 암호화 해시 알고리즘 MD5 는 해시 충돌 공격을 받습니다. 사용법에 따라 해시 충돌로 인해 해시 함수의 고유한 암호화 출력을 사용하는 시스템이 가장, 변조 또는 다른 종류의 공격을 받을 수 있습니다. 암호화 알고리즘 DES 및 RC2 에는 의도하지 않게 암호화된 데이터가 노출될 수 있는 암호화 공격을 받습니다.
규칙 설명
끊어진 암호화 알고리즘은 안전하지 않은 것으로 간주되므로 사용해서는 안 됩니다. 사용 컨텍스트에 따라 구체적인 취약성이 달라지지만 MD5 해시 알고리즘은 알려진 충돌 공격에 취약합니다. 데이터 무결성(예: 파일 시그니처 또는 디지털 인증서)을 보장하는 데 사용되는 해시 알고리즘이 특히 취약합니다. 이 컨텍스트에서 공격자는 해시 값을 변경하거나 연결된 디지털 서명을 무효화하지 않고 정상적인 데이터가 악성 데이터로 대체될 수 있도록 두 가지 데이터를 생성할 수 있습니다.
암호화 알고리즘의 경우:
DES 암호화는 하루 미만의 무차별 암호 대입 공격일 수 있는 작은 키 크기를 포함합니다.
RC2 암호화는 공격자가 모든 키 값 간의 수학적 관계를 찾는 관련 키 공격에 취약합니다.
이 규칙은 소스 코드에서 위의 암호화 기능을 발견할 때 트리거되며 사용자에게 경고를 throw합니다.
위반 문제를 해결하는 방법
보다 강력한 암호화 옵션을 사용합니다.
경고를 표시하지 않는 경우
암호화 전문가가 검토하지 않은 경우 이 규칙의 경고가 표시되지 않도록 하지 마세요.
경고 표시 안 함
단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.
#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())
{
...
}
.NET