CNG(Cryptography Next Generation) 보안 통신 예제

CNG(Cryptography Next Generation) 보안 통신 예제에서는 중간자 개입 공격에 대한 암호화 솔루션을 모델링합니다.여기에서는 가상의 광고 회사에 근무하는 세 사람인 Alice, Bob 및 Mallory 사이의 통신을 시뮬레이션합니다.이 예제에서는 CNG 클래스, 명명된 파이프 전송 및 대화형 콘솔 창을 사용하여 중간자 개입 공격에 대한 보안 솔루션을 보여 줍니다.

이 예제는 고급 수준이며 암호화, 프로세스 간 통신 및 네트워크 보안에 대해 익숙하다고 가정합니다.

참고

CNG 클래스는 Windows Vista 및 이후 Windows 운영 체제에서만 사용할 수 있습니다.

이 항목에서는 CNG 예제의 개요와 함께다음과 같은 사항을 설명합니다.

  • 예제 시나리오

  • IM 도구의 보안 취약성

  • 버전 1: 명명된 파이프

  • 버전 2-5: 점진적 보안 강화

  • 테스트 결과

  • 예제 코드

  • 명명 규칙

  • 자세한 정보

예제 시나리오

광고 회사가 데스크톱에서 실행되는 IM(인스턴트 메시징) 도구를 개발했습니다.도구에 입력한 메시지를 모든 직원이 볼 수 있습니다.

Alice와 Bob은 판매 부서에서 근무하며,IM 도구를 사용하여 판매 고객 정보를 주고받습니다.Mallory는 시스템 작업을 담당하는 네트워크 엔지니어이며Alice와 Bob의 메시지를 비밀리에 모니터링하고 있습니다.Mallory는 한 달에 한 번 귀중한 판매 고객 정보를 복사하여 경쟁사에 팔아 이득을 취합니다.

몇 개월 후 회사에서는 판매 고객 정보가 도난되고 있으며 부서 간 통신에 누군가가 침입했음을 알아냈습니다.따라서 우선 현재 도구의 보안을 분석한 후 새 IM 도구를 만들기로 결정했습니다.

IM 도구의 보안 취약성

회사에서는 현재 IM 도구에 다음과 같은 보안 취약성이 있음을 발견했습니다.

  • 암호화되지 않은 일반 텍스트 메시지를 전송합니다.

  • 이러한 메시지를 회사 네트워크를 통해 전파합니다.

  • 누구든지 메시지를 보고 기록할 수 있습니다.

회사에서는 회사 네트워크를 통한 지점 간 통신을 구현하는 새 IM 도구를 통해 이러한 문제를 해결하기로 결정했습니다.

버전 1: 명명된 파이프

회사에서는 IPC(프로세스 간 통신)를 위해 명명된 파이프 또는 채널을 사용하는 새 IM 도구를 만들었습니다.이 버전에서는 암호화 또는 디지털 서명을 사용하지 않습니다.

Alice와 Bob에게 다음과 같은 지침이 내려졌습니다.

  1. 처음에는 PublicChannel이라는 채널을 통해 연결합니다.

  2. 서로에게 개인 채널의 이름을 전송한 다음 즉시 PublicChannel에서 연결을 끊습니다.

  3. 개인 채널을 사용하여 연결하고 판매 고객 정보를 주고받습니다.

회사에서는 지점 간 통신 채널을 사용하면 회사 네트워크의 나머지 부분과 충분히 격리될 것으로 기대하고 있습니다.그러나 이 솔루션으로는 충분하지 않습니다.Mallory는 새 시스템을 무력화할 방법을 강구하여판매 고객 정보를 계속 알아내고 판매 고객의 주소를 교묘하게 변경하여 자신의 행위를 은폐합니다.

회사에서는 정보 도난을 막기 위해 IM 도구에 보안 장치를 추가하기로 결정했습니다.

버전 2-5: 점진적 보안 강화

몇 개월 동안 새 소프트웨어를 테스트하고 개선했습니다.테스트가 끝날 때까지 IM 도구의 네 가지 버전을 추가로 만들었습니다.각 버전은 이전 버전을 기반으로 개발되었습니다.

  • 버전 2에는 공개/개인 키 쌍을 사용하는 CNG 기반 암호화가 통합되었습니다.

  • 버전 3에서는 디지털 서명을 사용하여 암호화 키와 메시지에 서명합니다.

  • 버전 4에는 암호화 키와 메시지에 서명하는 데 사용할 디지털 서명을 전송하는 개인 채널이 추가되었습니다.

  • 버전 5에서는 서명이 잘못된 키가 수신된 모든 IM 세션을 종료하여 침입을 막습니다.

테스트 결과

버전 2에서는 보안 수준이 높은 암호화 알고리즘을 사용합니다.이 암호 체계를 무력화하려면 엄청난 노력과 시간이 소요됩니다.따라서 이 솔루션이 무력화되자 회사에서는 경악을 금치 못했습니다.

디지털 서명을 사용하는 버전 3도 정보 도난을 막을 수 없습니다.그러나 회사에서는 이 버전을 통해 중요한 사실을 발견했습니다. 즉, 누군가가 암호화 키와 디지털 서명을 가로채서 바꿔쳤으므로 키와 서명을 전송하는 데 사용된 채널이 바로 문제의 근원인 것입니다.

버전 4에 디지털 서명을 전송하는 개인 채널을 추가하여 이 가설을 테스트했습니다.또한 버전 4에서는 키 또는 메시지의 서명이 잘못된 경우 경고를 표시합니다.버전 4는 회사에서 Alice와 Bob에게만 제공되었습니다.Alice와 Bob이 첫 번째 메시지를 보내는 즉시 보안 경고가 표시되기 시작합니다.이제 회사 네트워크가 중간자 개입 공격을 받고 있다는 사실이 확증되었습니다.

버전 5는 버전 4와 동일하지만 보안 위반이 처음 발생할 때 세션을 종료한다는 점이 다릅니다.이 버전을 설치하자 판매 고객 정보 도난이 즉시 중지되었습니다.

예제 코드

이 예제에서 제공하는 코드는 이러한 다섯 가지 보안 버전을 모델링합니다.코드에 대한 개요는 소스 코드 개요(CNG 예제)를 참조하십시오.

참고

이 예제는 포괄적인 보안 솔루션을 제공하지 않으며가상적인 보안 시나리오에서 CNG API를 보여 줄 목적으로만 제공됩니다.완벽한 보안 응용 프로그램은 이 예제의 범위를 벗어납니다.

명명 규칙

이 예제에 대해 설명할 때는 다섯 가지 소프트웨어 버전과 해당 보안 수준을 "버전 1", "버전 2" 등의 숫자로 나타냅니다.

"Alice", "Bob" 및 "Mallory"라는 이름은 문맥에 따라 예제 시나리오에 관련된 세 명의 사람을 나타낼 수도 있고 세 개의 Visual Studio 응용 프로그램을 나타낼 수도 있습니다.이 설명서에서는 편의상 같은 이름을 사용하여 사람과 응용 프로그램을 모두 나타냅니다.예를 들어 "Alice에서 Bob 및 Mallory를 자동으로 로드합니다."는 Alice 응용 프로그램이 Bob 및 Mallory 응용 프로그램을 자동으로 로드한다는 뜻입니다.

자세한 정보

다음 항목에서는 예제 시나리오 및 코드에 대해 자세히 설명합니다.

참고 항목

개념

암호화 서비스

.NET Framework 암호화 모델

암호화 서비스

기타 리소스

암호화 작업