내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

암호화 서비스

인터넷 같은 공용 네트워크에서는 엔터티 간의 보안 통신 수단을 제공하지 않습니다. 이러한 네트워크를 통한 통신은 권한이 없는 제3자가 읽거나 수정하기 쉽습니다. 암호화를 통해 데이터를 볼 수 없도록 보호하고, 데이터가 수정되었는지 여부를 감지하고, 보안상 위험할 수 있는 채널을 통해 안전하게 통신할 수 있습니다. 예를 들어, 데이터는 암호화 알고리즘을 사용하여 암호화되고 암호화 상태로 전송되며 나중에 의도한 사용자에 의해 해독될 수 있습니다. 제3자가 암호화된 데이터를 가로채는 경우 해당 데이터를 해독하기는 어렵습니다.

.NET Framework에서 System.Security.Cryptography 네임스페이스의 클래스는 암호화의 세부 사항 대부분을 관리해 줍니다. 이 중 일부 클래스는 관리되지 않는 Microsoft CryptoAPI(Cryptography API)에 대한 래퍼인 반면, 일부는 완전하게 관리되는 구현 클래스입니다. 암호화에 익숙하지 않은 사용자도 이러한 클래스를 사용할 수 있습니다. 암호화 알고리즘 클래스 중 하나의 새 인스턴스를 만들 때 키는 사용하기 쉽도록 자동으로 생성되며 기본 속성은 가능한 한 안전하고 보안이 유지되도록 설정됩니다.

이 개요에서는 .NET Framework에서 지원하는 암호화 메서드 및 구현 방법과 .NET Framework 3.5에서 지원하는 ClickOnce 매니페스트, Suite B 및 CNG(Cryptography Next Generation)에 대해 설명합니다.

이 개요는 다음과 같은 단원으로 구성됩니다.

암호화에 대한 자세한 내용 및 응용 프로그램에 암호화 보안을 추가할 수 있게 하는 Microsoft 서비스, 구성 요소 및 도구에 대한 자세한 내용은 이 설명서의 Win32 및 COM 개발, 보안 단원을 참조하십시오.

암호화가 사용되는 일반적인 경우를 가정합니다. Alice와 Bob이라는 두 명의 사용자가 안전하지 않은 채널을 통해 통신하고 있으며, Alice와 Bob은 그들의 통신이 다른 사용자에게 노출되는 경우에도 통신 내용을 이해할 수 없게 하려고 합니다. 또한 Alice와 Bob은 위치상 서로 떨어져 있기 때문에 Alice는 Bob으로부터 받은 정보가 전송 도중 다른 사람에 의해 수정되지 않았음을 확인해야 합니다. 또한 Alice는 Bob을 가장한 다른 사람이 아니라 실제로 Bob이 정보를 보냈음을 확인해야 합니다.

암호화는 다음 목적을 위해 사용됩니다.

  • 기밀성: 사용자의 ID 또는 데이터를 읽지 못하도록 보호합니다.

  • 데이터 무결성: 데이터가 변경되지 않도록 보호합니다.

  • 인증: 특정인이 실제로 데이터를 보냈음을 확인합니다.

  • 거부 방지: 특정인이 메시지를 보낸 사실을 부인할 수 없게 합니다.

이러한 목적을 위해 알고리즘과 암호화 기본 형식이라고 알려진 알고리즘과 방법을 결합하여 암호화 체계를 만듭니다. 다음 표에서는 여러 가지 암호화 기본 형식과 각각의 용도를 보여 줍니다.

암호화 기본 형식

기능

비밀 키 암호화(대칭 암호화)

제3자가 데이터를 읽을 수 없도록 데이터를 변환합니다. 이러한 종류의 암호화에서는 공유되는 하나의 비밀 키를 사용하여 데이터를 암호화하고 해독합니다.

공개 키 암호화(비대칭 암호화)

제3자가 데이터를 읽을 수 없도록 데이터를 변환합니다. 이러한 종류의 암호화에서는 공개/개인 키 쌍을 사용하여 데이터를 암호화하고 해독합니다.

암호화 서명

특정 사용자 고유의 디지털 서명을 만들어 데이터가 해당 사용자로부터 온 것임을 확인합니다. 이 프로세스에서는 해시 함수도 사용합니다.

암호화 해시

데이터를 임의 길이에서 고정 길이의 바이트 시퀀스로 매핑합니다. 해시는 통계적으로 고유하며 다른 2바이트 시퀀스가 동일한 값으로 해시되지 않습니다.

맨 위로 이동

비밀 키 암호화 알고리즘에서는 하나의 비밀 키를 사용하여 데이터를 암호화하고 해독합니다. 키를 가진 사람은 누구나 키를 사용하여 데이터를 해독하거나 자신의 데이터를 암호화한 다음 출처를 가장할 수 있으므로 권한이 없는 다른 사용자가 키에 액세스할 수 없도록 보호해야 합니다.

비밀 키 암호화는 암호화 및 해독에 동일한 키가 사용되므로 대칭 암호화라고도 합니다. 비밀 키 암호화 알고리즘은 공개 키 알고리즘에 비해 매우 빠르므로 대규모 데이터 스트림의 암호화 변환을 수행하는 데 적합합니다. RSA 등의 비대칭 암호화 알고리즘은 암호화할 수 있는 데이터의 양이 수학적으로 제한됩니다. 대칭 암호화 알고리즘에는 일반적으로 이러한 문제가 없습니다.

블록 암호화라고 하는 비밀 키 알고리즘 유형은 데이터 블록을 한 번에 하나씩 암호화하는 데 사용됩니다. DES(Data Encryption Standard), TripleDES 및 AES(Advanced Encryption Standard) 등의 블록 암호에서는 n 바이트의 입력 블록을 암호화된 바이트의 출력 블록으로 암호화 변환합니다. 바이트 시퀀스를 암호화하거나 해독하려는 경우에는 이 작업을 블록 단위로 수행해야 합니다. n 의 크기는 작으므로(DES 및 TripleDES의 경우 8바이트, AES의 경우 16[기본값], 24 또는 32바이트) n 보다 큰 데이터 값은 한 번에 한 블록씩 암호화되어야 합니다. n 보다 작은 데이터 값을 처리하려면 n 으로 확장해야 합니다.

블록 암호화의 단순한 형태 중 하나를 ECB(Electronic Codebook) 모드라고 합니다. ECB 모드는 초기화 벡터를 사용하여 첫 번째 일반 텍스트 블록을 초기화하지 않으므로 안전하지 않습니다. k 비밀 키가 주어진 경우, 초기화 벡터를 사용하지 않는 단순 블록 암호는 일반 텍스트의 동일한 입력 블록을 암호 텍스트의 출력 블록과 동일하게 암호화합니다. 따라서 입력 일반 텍스트 스트림에 중복되는 블록이 있으면 출력 암호화 텍스트 스트림에도 중복된 블록이 생성됩니다. 이러한 중복 출력 블록으로 인해 권한이 없는 사용자가 약한 암호화 알고리즘이 사용되었음을 알게 되고, 가능한 공격 방식이 노출됩니다. 따라서 ECB 암호화 모드는 상당히 쉽게 분석되어 키가 노출될 수 있습니다.

기본 클래스 라이브러리에 제공되는 블록 암호화 클래스에서는 CBC(Cipher Block Chaining)라는 기본 체인 모드를 사용하며, 필요에 따라 기본 모드를 변경할 수 있습니다.

CBC 암호화에서는 IV(Initialization Vector)를 사용하여 일반 텍스트의 첫 번째 블록을 암호화하는 방법으로 ECB 암호화와 관련된 문제를 해결합니다. 일반 텍스트의 각 후속 블록은 암호화되기 전에 이전 암호화 텍스트 블록과 비트 배타적 OR(XOR) 연산을 거치게 됩니다. 따라서 각 암호화 텍스트 블록은 모든 이전 블록에 종속됩니다. 이 시스템을 사용하면 권한이 없는 사용자에게 알려질 수 있는 일반적인 메시지 헤더를 사용하여 키를 리버스 엔지니어링할 수 없게 됩니다.

CBC 암호화로 암호화된 데이터를 해독하기 위해 가능한 모든 키에 대한 소진 검색을 수행할 수도 있습니다. 암호화하는 데 사용된 키의 크기에 따라서는 가장 빠른 컴퓨터를 사용해도 이러한 검색에 많은 시간이 걸리므로 이 방법은 실제로 불가능합니다. 키 크기가 클수록 해독이 더 어려워집니다. 암호화를 통해 암호화된 데이터를 이론적으로 해독 불가능하게 할 수는 없지만, 해독하는 데 따르는 비용을 높일 수는 있습니다. 며칠 동안만 유용한 데이터를 해독하기 위해 3개월에 걸쳐 소진 검색을 수행해야 한다면 소진 검색 방법은 실용적이지 않습니다.

비밀 키 암호화의 단점은 두 당사자가 키 및 IV에 대해 미리 동의하여 값을 교환해야 한다는 것입니다. IV는 비밀로 간주되지 않으며 메시지와 함께 일반 텍스트로 전송할 수 있습니다. 그러나 키는 권한이 없는 사용자에게 기밀로 유지되어야 합니다. 이러한 문제로 인해 비밀 키 암호화는 키와 IV의 값을 비밀리에 교환하는 공개 키 암호화와 함께 사용되는 경우가 많습니다.

두 당사자인 Alice와 Bob이 안전하지 않은 채널을 통해 통신하려는 경우 다음과 같은 방법으로 비밀 키 암호화를 사용할 수 있습니다. Alice와 Bob은 특정 키 및 IV와 함께 AES 같은 특정 알고리즘을 사용하기로 동의합니다. Alice는 메시지를 작성하고 해당 메시지를 보낼 네트워크 스트림(명명된 파이프 또는 네트워크 전자 메일)을 만듭니다. 그런 다음 키와 IV를 사용하여 텍스트를 암호화하고 인트라넷을 통해 Bob에게 암호화된 메시지와 IV를 전송합니다. Bob은 암호화된 텍스트를 받고 IV와 미리 동의한 키를 사용하여 텍스트를 해독합니다. 이러한 전송을 중간에 가로채도 키를 알 수 없으므로 원본 메시지를 복구할 수 없습니다. 이 시나리오에서는 키만 비밀로 유지하면 됩니다. 실제 시나리오에서는 Alice나 Bob 중 한 사람이 비밀 키를 생성하고 공개 키(비대칭) 암호화를 사용하여 비밀(대칭) 키를 다른 사용자에게 전송합니다. 공개 키 암호화에 대한 자세한 내용은 다음 단원을 참조하십시오.

.NET Framework에서는 비밀 키 암호화 알고리즘을 구현하는 다음 클래스를 제공합니다.

맨 위로 이동

공개 키 암호화에서는 권한이 없는 사용자에게 기밀로 유지되어야 하는 개인 키와 모든 사람에게 공개될 수 있는 공개 키를 사용합니다. 공개 키와 개인 키는 서로 수학적으로 연결되어 있습니다. 공개 키로 암호화된 데이터는 해당 개인 키로만 해독할 수 있으며, 개인 키로 서명된 데이터는 해당 공개 키로만 확인할 수 있습니다. 공개 키는 모든 사람이 사용할 수 있습니다. 즉, 공개 키는 개인 키의 보유자에게 보낼 데이터를 암호화하는 데 사용됩니다. 공개 키 암호화 알고리즘은 데이터를 암호화하는 데 필요한 키와 해독하는 데 필요한 키가 서로 다르므로 비대칭 알고리즘이라고도 합니다. 기본적인 암호화 규칙은 키를 다시 사용하지 않고 각 통신 세션마다 두 키를 고유하게 유지하는 것입니다. 그러나 실제 상황에서 비대칭 키는 일반적으로 수명이 깁니다.

두 당사자인 Alice와 Bob은 다음과 같이 공개 키 암호화를 사용할 수 있습니다. 우선 Alice가 공개/개인 키 쌍을 생성합니다. Bob은 Alice에게 암호화된 메시지를 보내려는 경우 Alice의 공개 키를 묻습니다. Alice는 안전하지 않은 네트워크를 통해 Bob에게 공개 키를 보내고 Bob은 이 키를 사용하여 메시지를 암호화합니다. Bob은 암호화된 메시지를 Alice에게 보내고 Alice는 자신의 개인 키를 사용하여 메시지를 해독합니다. Bob이 공용 네트워크 등의 안전하지 않은 채널을 통해 Alice의 키를 받은 경우 Bob은 중간자 개입 공격에 노출될 수 있습니다. 따라서 Bob은 자신이 공개 키의 정확한 복사본을 갖고 있는지 Alice에게 확인해야 합니다.

그러나 Alice의 공개 키를 전송하는 도중 권한이 없는 제3자가 키를 가로챌 수 있습니다. 또한 동일한 제3자가 Bob으로부터 암호화된 메시지를 가로챌 수도 있습니다. 그러나 제3자는 공개 키를 사용하여 메시지를 해독할 수 없습니다. 전송되지 않은 Alice의 개인 키가 있어야 메시지를 해독할 수 있습니다. Alice는 Bob에게 보내는 회신 메시지를 암호화할 때 자신의 개인 키를 사용하지 않습니다. 공개 키를 가진 사람이 해당 메시지를 해독할 수 있기 때문입니다. Alice는 Bob에게 메시지를 다시 보내려는 경우 Bob에게 그의 공개 키를 묻고 해당 공개 키를 사용하여 메시지를 암호화합니다. 그러면 Bob은 이 공개 키와 연관된 자신의 개인 키를 사용하여 메시지를 해독합니다.

이 시나리오에서 Alice와 Bob은 공개 키(비대칭) 암호화를 사용하여 비밀(대칭) 키를 전송하고 나머지 세션에서는 비밀 키 암호화를 사용합니다.

다음은 공개 키와 비밀 키 암호화 알고리즘을 비교한 목록입니다.

  • 공개 키 암호화 알고리즘에서는 고정 버퍼 크기를 사용하는 반면 비밀 키 암호화 알고리즘에서는 가변 길이 버퍼를 사용합니다.

  • 공개 키 알고리즘에서는 적은 양의 데이터만 암호화할 수 있으므로 비밀 키 알고리즘과 같이 데이터를 스트림으로 결합하는 데 사용할 수는 없습니다. 따라서 비대칭 작업에서는 대칭 작업에서와 동일한 스트리밍 모델을 사용하지 않습니다.

  • 공개 키 암호화는 비밀 키 암호화보다 키 공간(키에 사용할 수 있는 값 범위)이 훨씬 큽니다. 따라서 공개 키 암호화는 가능한 모든 키를 시도하는 소진 공격에 덜 취약합니다.

  • 공개 키는 보호할 필요가 없으므로 손쉽게 배포할 수 있지만 보낸 사람의 신원을 확인할 방법이 있어야 합니다.

  • Diffie-Hellman을 제외한 RSA 및 DSA 등의 일부 공개 키 알고리즘을 사용하여 디지털 서명을 만들면 데이터를 보낸 사람의 신원을 확인할 수 있습니다.

  • 공개 키 알고리즘은 비밀 키 알고리즘에 비해 매우 느리므로 대규모 데이터를 암호화할 때는 적합하지 않습니다. 공개 키 알고리즘은 매우 적은 양의 데이터를 전송하는 데만 유용합니다. 일반적으로 공개 키 암호화는 비밀 키 알고리즘에서 사용하는 키 및 IV를 암호화하는 데 사용됩니다. 키 및 IV가 전송되면 나머지 세션에서는 비밀 키 암호화가 사용됩니다.

.NET Framework에서는 공개 키 암호화 알고리즘을 구현하는 다음 클래스를 제공합니다.

RSA는 암호화 및 서명을 모두 지원하지만 DSA는 서명에만 사용할 수 있고 Diffie-Hellman은 키 생성에만 사용할 수 있습니다. 일반적으로 공개 키 알고리즘은 비밀 키 알고리즘보다 용도가 제한됩니다.

맨 위로 이동

공개 키 알고리즘은 디지털 서명을 만드는 데도 사용할 수 있습니다. 디지털 서명은 보낸 사람의 공개 키를 신뢰하는 경우 보낸 사람의 신분을 인증하고, 데이터 무결성을 보호하는 데 도움이 됩니다. Alice가 생성한 공개 키를 사용하는 경우 Alice의 데이터를 받는 사람은 해당 디지털 서명을 Alice의 데이터 및 공개 키와 비교하여 해당 데이터를 Alice가 보냈음을 확인할 수 있습니다.

공개 키 암호화를 사용하여 메시지에 디지털 서명을 추가하기 위해 Alice는 먼저 메시지에 해시 알고리즘을 적용하여 메시지 다이제스트를 만듭니다. 이 메시지 다이제스트는 데이터의 압축된 고유 표현입니다. 그런 다음 Alice는 자신의 개인 키를 사용하여 메시지 다이제스트를 암호화하고 자신의 개인 서명을 만듭니다. 메시지와 서명을 받으면 Bob은 Alice의 공개 키로 서명을 해독하여 메시지 다이제스트를 복구하고 Alice가 사용한 것과 동일한 해시 알고리즘을 사용하여 메시지를 해시합니다. Bob이 계산한 메시지 다이제스트가 Alice로부터 받은 메시지 다이제스트와 정확히 일치하면 Bob은 해당 메시지가 개인 키의 소유자로부터 왔으며 데이터가 수정되지 않았음을 확인할 수 있습니다. 개인 키의 소유자가 Alice인 것으로 확인되면 Alice가 해당 메시지를 보냈음을 알 수 있습니다.

참고 참고

보낸 사람의 공개 키는 공개된 정보이고 일반적으로 디지털 서명 형식에 포함되므로 누구나 서명을 확인할 수 있습니다. 이 방법이 메시지의 기밀성을 유지하지는 않으므로 메시지의 기밀을 위해서는 메시지에 대한 암호화도 수행해야 합니다.

.NET Framework에서는 디지털 서명 알고리즘을 구현하는 다음 클래스를 제공합니다.

맨 위로 이동

해시 알고리즘은 임의 길이의 이진 값을 해시 값이라는 길이가 고정된 보다 작은 이진 값에 매핑합니다. 해시 값은 특정 데이터를 숫자로 나타낸 값입니다. 일반 텍스트 단락을 해시한 다음 단락의 한 문자만 변경해도 이후 해시에서 다른 값이 생성됩니다. 해시가 암호학적으로 강력할수록 값이 크게 변경됩니다. 예를 들어 메시지 중 1비트만 변경되어도 강력한 해시 함수는 50%가 다른 출력을 생성할 수 있습니다. 여러 입력 값이 동일한 출력 값으로 해시될 수 있습니다. 그러나 동일한 값으로 해시되는 서로 다른 두 입력을 찾는 것은 계산상 불가능합니다.

Alice와 Bob은 해시 함수를 사용하여 데이터 무결성을 보장할 수 있습니다. 이를 위해 메시지에 서명할 해시 알고리즘을 선택합니다. Alice는 메시지를 작성한 다음 선택된 알고리즘을 사용하여 해당 메시지의 해시를 만듭니다. 그런 다음 아래 방법 중 하나를 사용합니다.

  • Alice는 일반 텍스트 메시지와 해시된 메시지(디지털 서명)를 Bob에게 전송합니다. Bob은 메시지를 받아 해시하여 자신의 해시 값과 Alice가 보낸 해시 값을 비교합니다. 해시 값이 서로 같으면 메시지가 변경되지 않은 것입니다. 값이 서로 다르면 Alice가 작성한 후 메시지가 변경된 것입니다.

    그러나 이 방법으로는 보낸 사람의 신뢰성을 보장할 수 없습니다. 다른 사람이 Alice를 가장하여 Bob에게 메시지를 보낼 수도 있습니다. 이때 동일한 해시 알고리즘을 사용하여 메시지에 서명하면 Bob은 메시지와 서명이 일치한다는 사실만 확인할 수 있습니다. 이는 중간자 개입 공격의 한 가지 형태입니다. 자세한 내용은 CNG Secure Communication Example를 참조하십시오.

  • Alice는 비보안 공개 채널을 통해 Bob에게 일반 텍스트 메시지를 전송합니다. 그런 다음 보안 개인 채널을 통해 Bob에게 해시된 메시지를 전송합니다. Bob은 일반 텍스트 메시지를 받아 해시하여 개인 채널로 교환된 해시와 비교합니다. 해시가 일치하면 다음 두 가지 사실이 확인됩니다.

    • 메시지가 변경되지 않았습니다.

    • 메시지를 보낸 사람(Alice)을 신뢰할 수 있습니다.

    이 시스템을 사용하려면 Alice는 Bob을 제외한 모든 사람에게 원본 해시 값을 숨겨야 합니다.

  • Alice는 비보안 공개 채널을 통해 Bob에게 일반 텍스트 메시지를 전송하고 자신의 공개된 웹 사이트에 해시된 메시지를 게시합니다.

    이 방법을 사용하면 아무도 해시 값을 수정할 수 없으므로 메시지 위조를 방지할 수 있습니다. 메시지와 해당 해시를 누구라도 읽을 수 있지만 해시 값은 Alice만 변경할 수 있습니다. Alice를 가장하려는 공격자는 Alice의 웹 사이트에 액세스할 수 있어야 합니다.

이러한 방법 중 어떠한 방법을 사용해도 일반 텍스트로 전송되는 Alice의 메시지를 다른 사람이 읽지 못하게 할 수는 없습니다. 일반적으로 완벽한 보안을 구현하려면 디지털 서명(메시지 서명)과 암호화가 필요합니다.

.NET Framework에서는 해시 알고리즘을 구현하는 다음 클래스를 제공합니다.

참고 참고

1996년에 MD5 디자인 결함이 발견되었으며 SHA-1을 대신 사용하는 것이 좋습니다. 2004년에 결함이 추가로 발견되어 MD5 알고리즘은 더 이상 안전한 것으로 간주되지 않습니다. SHA-1 알고리즘에서도 보안 결함이 발견되었으며 현재는 SHA-2를 대신 사용하는 것이 좋습니다.

맨 위로 이동

난수 생성은 대부분의 암호화 작업에 필수적입니다. 예를 들어, 암호화 키는 재현이 불가능하도록 가능한 한 무작위적이어야 합니다. 암호화 난수 생성기는 계산상 예측 가능할 확률이 1/2 이하인 출력을 생성해야 합니다. 즉, 어떠한 방법으로도 단순한 임의 추측 이상의 확률로 다음 출력 비트를 예측할 수 없어야 합니다. .NET Framework의 클래스에서는 난수 생성기를 사용하여 암호화 키를 생성합니다.

RNGCryptoServiceProvider 클래스는 난수 생성기 알고리즘을 구현한 것입니다.

맨 위로 이동

.NET Framework 3.5에서는 다음과 같은 암호화 클래스를 통해 ClickOnce 기술로 배포된 응용 프로그램의 매니페스트 서명에 대한 정보를 가져오고 확인할 수 있습니다.

또한 다음 클래스는 구체적인 서명 정보를 제공합니다.

맨 위로 이동

.NET Framework 3.5에서는 NSA(National Security Agency)에서 게시하는 암호화 알고리즘의 Suite B 집합을 지원합니다. Suite B에 대한 자세한 내용은 NSA Suite B 암호화 팩트 시트 을 참조하십시오.

다음과 같은 알고리즘이 포함되어 있습니다.

  • 암호화 - 키 크기가 128, 192 및 256비트인 AES(Advanced Encryption Standard) 알고리즘

  • 해시 - SHA(Secure Hash Algorithms)-1, SHA-256, SHA-384 및 SHA-512. 일반적으로 마지막 세 알고리즘을 함께 묶어 SHA-2라고 합니다.

  • 서명 - 256비트, 384비트 및 521비트 소수 모듈 곡선을 사용하는 ECDSA(Elliptic Curve Digital Signature Algorithm). NSA 문서에서는 이러한 곡선을 구체적으로 정의하여 P-256, P-384 및 P-521로 호칭합니다. 이 알고리즘은 ECDsaCng 클래스에서 제공합니다. 이를 통해 개인 키로 서명하고 공개 키로 서명을 확인할 수 있습니다.

  • 키 교환 및 비밀 계약 - 256비트, 384비트 및 521비트 소수 모듈 곡선을 사용하는 ECDH(Elliptic Curve Diffie-Hellman) 알고리즘. 이 알고리즘은 ECDiffieHellmanCng 클래스에서 제공합니다.

새로운 AesCryptoServiceProvider, SHA256CryptoServiceProvider, SHA384CryptoServiceProviderSHA512CryptoServiceProvider 클래스는 AES, SHA-256, SHA-384 및 SHA-512 구현에 대한 FIPS(Federal Information Processing Standard) 인증 구현의 관리 코드 래퍼를 제공합니다.

맨 위로 이동

CNG(Cryptography Next Generation) 클래스는 네이티브 CNG 함수에 대한 관리되는 래퍼를 제공합니다. CNG는 CryptoAPI를 대체합니다. 이러한 클래스의 이름에는 "Cng"가 포함되어 있습니다. CNG 래퍼 클래스의 핵심은 CNG 키의 저장 및 사용을 추상화하는 CngKey 키 컨테이너 클래스입니다. 이 클래스를 통해 키 쌍 또는 공개 키를 안전하게 저장하고 간단한 문자열 이름을 사용하여 참조할 수 있습니다. 타원 곡선 기반 ECDsaCng 서명 클래스 및 ECDiffieHellmanCng 암호화 클래스는 CngKey 개체를 사용할 수 있습니다.

CngKey 클래스는 키 열기, 만들기, 삭제 및 내보내기 등의 추가적인 다양한 작업에 사용됩니다. 또한 네이티브 함수를 직접 호출할 때 사용할 내부 키 핸들에 대한 액세스를 제공합니다.

.NET Framework 3.5에는 다음과 같은 다양한 지원 CNG 클래스도 포함되어 있습니다.

  • CngProvider 는 키 저장소 공급자를 유지 관리합니다.

  • CngAlgorithm 은 CNG 알고리즘을 유지 관리합니다.

  • CngProperty 는 자주 사용되는 키 속성을 유지 관리합니다.

맨 위로 이동

제목

설명

.NET Framework 암호화 모델

기본 클래스 라이브러리에서 암호화가 구현되는 방식에 대해 설명합니다.

암호화 작업

기본 클래스 라이브러리를 사용하여 특정 암호화 작업을 수행하는 방법에 대해 설명합니다.

연습: 암호화 응용 프로그램 만들기

기본 암호화 및 해독 작업을 보여 줍니다.

암호화 클래스 구성

암호화 클래스에 알고리즘 이름을 매핑하고 암호화 알고리즘에 개체 식별자를 매핑하는 방법에 대해 설명합니다.

맨 위로 이동

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft