Share via


방법: CNG 예제 빌드 및 실행

업데이트: 2008년 7월

이 항목에서는 CNG(Cryptography Next Generation) 보안 통신 예제의 파일 아키텍처 및 예제를 빌드하고 실행하는 방법에 대해 설명합니다.

CNG 예제를 빌드하려면 세 개의 콘솔 실행 파일을 만듭니다. 이러한 실행 파일을 동시에 실행하면 복합적인 대화형 예제를 볼 수 있습니다.

CNG 예제는 C#으로 작성되었으며 Visual Studio 2008 이상 버전이 필요합니다.

예제 빌드

CNG 예제는 세 개의 Visual Studio 프로젝트로 구성되어 있습니다.

  • Alice

  • Bob

  • Mallory

이 예제에는 다음 항목에서 살펴보고 복사할 수 있는 여섯 개의 파일이 들어 있습니다.

각 프로젝트에는 프로젝트별 코드가 들어 있는 자체 .cs 파일(Alice.cs, Bob.cs 및 Mallory.cs)이 있습니다. 세 프로젝트는 Utilities.cs, ChannelManager.cs 및 Communicator.cs 파일을 공유합니다. 이러한 세 파일은 Alice 프로젝트에 직접 추가되고 Bob 및 Mallory 프로젝트에는 파일 링크를 통해 간접적으로 추가됩니다.

Alice, Bob 및 Mallory 프로젝트를 빌드하려면

  1. Visual Studio를 시작합니다.

  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

    새 프로젝트 대화 상자가 나타납니다.

  3. 프로젝트 형식 창에서 Visual C#을 클릭합니다.

  4. 템플릿 창에서 콘솔 응용 프로그램을 클릭합니다.

  5. 이름 상자에 Alice를 입력합니다.

  6. 위치 상자에 Alice 프로젝트를 저장할 위치를 입력합니다.

  7. 확인을 클릭합니다.

  8. Alice 소스 코드를 Alice.cs라는 파일에 복사하고 Alice 프로젝트 디렉터리에 저장합니다. 메시지가 나타나면 기본 Alice.cs 파일을 바꾸도록 확인합니다.

  9. ChannelManager, CommunicatorUtilities 소스 코드를 ChannelManager.cs, Communicator.cs 및 Utilities.cs라는 별도의 파일에 복사하고 Alice 프로젝트 디렉터리에 저장합니다. 다음과 같이 이러한 세 파일을 Alice 프로젝트에 추가합니다.

    1. 보기 메뉴에서 솔루션 탐색기를 클릭합니다.

    2. 솔루션 탐색기 창에서 Alice 폴더를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기존 항목을 클릭합니다.

      기존 항목 추가 대화 상자가 나타나고 Alice 프로젝트 디렉터리가 표시됩니다.

    3. ChannelManager.cs, Communicator.cs 및 Utilities.cs 파일을 선택한 다음 추가를 클릭합니다.

  10. Bob 및 Mallory 프로젝트에 대해 2-8단계를 반복합니다. Bob 소스 코드를 Bob 프로젝트 디렉터리에, Mallory 소스 코드를 Mallory 프로젝트 디렉터리에 저장해야 합니다.

  11. Bob 및 Mallory 프로젝트에 대해 9단계를 반복합니다. 그러나 9단계에서 추가를 클릭하는 대신 추가 단추 옆에 있는 화살표를 클릭하고 링크로 추가를 클릭합니다.

  12. 다음과 같이 Bob 및 Mallory 프로젝트의 출력 디렉터리를 설정합니다.

    1. 프로젝트 메뉴에서 속성을 클릭한 다음 빌드 탭을 클릭합니다.

    2. 출력 경로를 Alice 프로젝트에서 사용하는 빌드 위치로 설정합니다. 이 위치는 6단계에서 선택한 Alice 프로젝트 디렉터리에서 \bin\Debug\입니다.

  13. 각 프로젝트를 빌드하려면 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  14. 모든 프로젝트가 오류 없이 빌드되고 Alice.exe, Bob.exe 및 Mallory.exe 실행 파일이 Alice 프로젝트 디렉터리에 있는지 확인합니다.

예제 실행

예제를 Visual Studio에서 실행할 수도 있고 독립 실행형 응용 프로그램으로 실행할 수도 있습니다. 두 가지 방법의 출력은 동일합니다.

CNG 예제를 실행하려면

  1. Visual Studio에서 예제를 실행하려면 세 프로젝트의 .sln 파일인 Alice.sln, Bob.sln 및 Mallory.sln을 두 번 클릭하여 Visual Studio의 인스턴스를 세 개 엽니다. Alice 프로젝트의 디버그 메뉴에서 디버깅 시작을 클릭합니다. Bob 및 Mallory 프로젝트에 대해서도 이 과정을 반복합니다.

    -또는-

    예제를 독립 실행형 응용 프로그램으로 실행하려면 세 프로젝트의 실행 파일(.exe)을 모두 디렉터리 하나로 복사합니다. Windows 탐색기에서 Alice.exe를 두 번 클릭하면 Alice에서 내장된 자동 로더를 통해 Bob 및 Mallory 실행 파일을 호출합니다.

    참고:

    콘솔 창에서 세 실행 파일이 들어 있는 디렉터리로 이동하고 명령줄에 alice.exe를 입력하여 Alice 실행 파일을 실행할 수도 있습니다.

    세 실행 파일을 실행하면 콘솔 창 세 개가 나타납니다. 프로젝트 이름이 창 제목에 반영되고, 1280 x 1024 모니터에서 메시지 흐름을 쉽게 볼 수 있도록 창의 크기와 위치가 조정됩니다. 콘솔 창을 더 보기 쉽게 이동하고 크기를 조정할 수 있습니다.

  2. Alice 창에서 보안 버전을 입력하라는 메시지가 나타나면 1에서 5 사이의 숫자를 입력합니다. 첫 번째 테스트에서는 1을 입력합니다.

    이 숫자는 CNG 예제 개요에서 설명한 다섯 가지 소프트웨어 버전에 해당합니다.

  3. 버전 2-5를 선택한 경우 자세한 정보 출력 여부를 입력해야 합니다. 일반 모드를 사용하려면 n을, 자세한 정보 출력 모드를 사용하려면 y를 입력합니다.

    • 일반 모드에서는 일반 텍스트 메시지만 표시됩니다.

    • 자세한 정보 출력 모드에서는 일반 텍스트 메시지, 디지털 서명 키, 암호화 키, 초기화 벡터, 암호화 텍스트 및 디지털 서명이 표시됩니다.

  4. Mallory를 비활성화할지 여부를 묻는 메시지가 나타나면 n(아니요) 또는 y(예)를 입력합니다.

    Mallory를 비활성화하면 Mallory는 아무 메시지도 받지 않으며 유휴 상태로 유지됩니다. Alice와 Bob은 Mallory의 개입 없이 통신하게 됩니다.

  5. Alice와 Bob 간의 스크립트 대화를 따라갑니다.

    자세한 대화 내용은 2단계에서 선택한 버전 번호에 따라 다릅니다. 각 창에서는 전송 모드와 수신 모드를 교대로 반복하는 메시지 루프를 만듭니다. 전송 모드는 :> 프롬프트로 나타내고 수신 모드는 빈 줄로 나타냅니다. Alice가 전송 모드인 경우 Bob은 수신 모드입니다. Bob은 메시지를 수신한 후 전송 모드로 전환하고 Alice는 수신 모드로 전환합니다.

    Alice와 Bob의 메시지를 자세히 살펴봅니다. Alice가 Bob에게 보내는 두 번째 메시지와 Alice에게 보내는 Bob의 회신이 Mallory에 의해 변경되었습니다.

    스크립트 대화가 끝나면 Alice가 사용자에게 Bob과 직접 대화할지 여부를 묻습니다.

  6. 메시지를 직접 전송하려면 프롬프트에서 다음을 수행합니다.

    1. 메시지를 입력하고 Enter 키를 누릅니다. Alice가 Bob에게 메시지를 전송합니다.

    2. 포커스를 Bob 창으로 설정하고 메시지를 입력한 다음 Enter 키를 누릅니다. Bob이 Alice에게 메시지를 전송합니다.

    3. 이전 두 단계를 반복하여 메시지를 추가로 전송합니다.

  7. 작업을 끝내려면 Alice 또는 Bob의 창이 전송 모드(:> 프롬프트 표시)일 때 Enter 키를 누릅니다.

    세 창이 2단계의 상태로 다시 설정됩니다.

    참고:

    닫기 단추를 클릭하여 창을 닫으면 창이 응답을 멈출 수 있습니다. 이러한 경우 열려 있는 창을 모두 닫고 예제를 다시 시작해야 합니다.

  8. 다른 옵션을 사용하여 예제를 실행합니다. 자세한 정보 표시 모드를 선택하고 버전 2, 3, 4 또는 5를 사용하면 Alice가 전송하는 암호화된 문자열과 Bob이 수신하는 암호화된 문자열을 비교할 수 있습니다. Mallory가 활성화되지 않은 경우 두 문자열이 완벽하게 일치해야 합니다. 그러나 ASCII 문자 집합에서 128보다 큰 문자는 표시될 수 없으므로 물음표(?)로 표시됩니다.

참고 항목

개념

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

암호화 개요

변경 기록

날짜

변경 내용

이유

2008년 7월

항목이 추가되었습니다.

향상된 기능 관련 정보