Share via


CA5358: 안전하지 않은 암호화 모드를 사용하지 마세요.

속성
규칙 ID CA5358
타이틀 안전하지 않은 암호화 모드를 사용하지 마세요.
범주 보안
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

다음의 승인되지 않고 안전하지 않은 암호화 모드 중 하나를 사용합니다.

규칙 설명

이러한 모드는 공격에 취약하며 중요한 정보를 노출할 수 있습니다. 예를 들어 ECB를 사용하여 일반 텍스트 블록을 암호화하는 것은 항상 동일한 암호화 텍스트를 생성하므로 암호화된 두 메시지가 같은지를 쉽게 알 수 있습니다. 승인된 모드를 사용하면 이렇게 불필요한 위험을 피할 수 있습니다.

위반 문제를 해결하는 방법

경고를 표시하지 않는 경우

다음 경우에는 이 규칙의 경고를 표시하지 않아도 됩니다.

  • 암호화 전문가는 암호화 모드의 사용 현황을 검토하고 승인했습니다.
  • 참조된 CipherMode는 암호화 작업에 사용되지 않습니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA5358
// The code that's violating the rule is on this line.
#pragma warning restore CA5358

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA5358.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

의사 코드 예제

모드 속성에 ECB 할당

using System.Security.Cryptography;

class ExampleClass {
    private static void ExampleMethod () {
        RijndaelManaged rijn = new RijndaelManaged
        {
            Mode = CipherMode.ECB
        };
    }
}

값 ECB 사용

using System;
using System.Security.Cryptography;

class ExampleClass
{
    private static void ExampleMethod()
    {
        Console.WriteLine(CipherMode.ECB);
    }
}

해결 방법

using System.Security.Cryptography;

class ExampleClass {
    private static void ExampleMethod () {
        RijndaelManaged rijn = new RijndaelManaged
        {
            Mode = CipherMode.CBC
        };
    }
}