Share via


方法 : CNG 例をビルドおよび実行する

このトピックでは、CNG (Cryptography Next Generation) のセキュリティで保護された通信の例に使用するファイル アーキテクチャを解説し、この例をビルドおよび実行する方法を説明します。

CNG 例をビルドするには、3 つのコンソール実行可能ファイルを作成します。これらの実行可能ファイルを同時に実行し、複合的な対話形式の例を確認します。

CNG 例は C# で記述されています。その使用には、Visual Studio 2008 以降のバージョンが必要です。

例のビルド

CNG 例は、3 つの Visual Studio プロジェクトで構成されます。 

  • Alice

  • Bob

  • Mallory

例には、6 つのファイルが含まれています。それらのファイルを次のトピックから表示したり、コピーしたりできます。

各プロジェクトには、プロジェクト固有のコードを含む独自の .cs ファイル (Alice.cs、Bob.cs、および Mallory.cs) があります。3 つのプロジェクトで Utilities.cs、ChannelManager.cs、および Communicator.cs の各ファイルを共有します。これら 3 つのファイルは、Alice プロジェクトには直接的に、Bob プロジェクトおよび Mallory プロジェクトには間接的に (ファイル リンクにより) 追加されます。

Alice、Bob、および Mallory の各プロジェクトをビルドするには

  1. Visual Studio を起動します。

  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  3. [プロジェクトの種類] ペインの [Visual C#] をクリックします。

  4. [テンプレート] ペインの [コンソール アプリケーション] をクリックします。

  5. [名前] ボックスに「Alice」と入力します。

  6. [場所] ボックスに、Alice プロジェクトを格納する場所を入力します。

  7. [OK] をクリックします。

  8. Alice ソース コードを Alice.cs というファイルにコピーし、Alice プロジェクト ディレクトリに保存します。プロンプトが表示されたら、既定の Alice.cs ファイルの置き換えを確認します。

  9. ChannelManagerCommunicator、および Utilities の各ソース コードを、それぞれ ChannelManager.cs、Communicator.cs、および Utilities.cs というファイルにコピーし、Alice プロジェクト ディレクトリに保存します。これら 3 つのファイルを 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.c. では、[追加] をクリックする代わりに、[追加] ボタンの横にある矢印をクリックし、[リンクとして追加] をクリックします。

  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 から例を実行するには、3 つのプロジェクトの .sln ファイル (Alice.sln、Bob.sln、および Mallory.sln) をダブルクリックし、Visual Studio のインスタンスを 3 つ開きます。Alice プロジェクトで、[デバッグ] メニューの [デバッグ開始] をクリックします。Bob プロジェクトと Mallory プロジェクトについても同じ手順を繰り返します。

    または

    スタンドアロン アプリケーションとして例を実行するには、3 つすべてのプロジェクトの実行可能 (.exe) ファイルを 1 つのディレクトリにコピーします。Windows エクスプローラーで Alice.exe をダブルクリックします。Alice の組み込みのオートローダによって Bob と Mallory の実行可能ファイルが呼び出されます。

    注意

    3 つの実行可能ファイルが格納されているディレクトリに移動し、コマンド ラインに「alice.exe」と入力して、コンソール ウィンドウから Alice 実行可能ファイルを実行することもできます。

    3 つの実行可能ファイルを実行すると、コンソール ウィンドウが 3 つ表示されます。ウィンドウ タイトルにはプロジェクト名が反映され、1280 × 1024 のモニターでメッセージの流れが見やすいようにウィンドウのサイズと位置が調整されます。最適な表示になるようにコンソール ウィンドウの移動やサイズ変更を実行できます。

  2. Alice ウィンドウでセキュリティのバージョンを確認するメッセージが表示されたら、1 ~ 5 の数値を入力します。最初のテストの場合は、「1」と入力します。

    これらの数値は、CNG 例の概要で説明されている 5 つのソフトウェア バージョンに対応しています。

  3. バージョン 2 からバージョン 5 の場合は、詳細出力に関するプロンプトが表示されます。通常モードの場合は「n」を、詳細モードの場合は「y」を入力します。

    • 通常モードでは、プレーンテキスト メッセージのみを表示します。

    • 詳細モードでは、プレーンテキスト メッセージ、デジタル署名キー、暗号化キー、初期化ベクター、暗号文、およびデジタル署名を表示します。

  4. Mallory を無効にするかどうかを確認するメッセージが表示されたら、無効にしない場合は「n」を、無効にする場合は「y」を入力します。

    Mallory が無効になっている場合、Mallory はどのメッセージも受信せず、アイドル状態のままになります。Alice と Bob は Mallory に傍受されずに通信できるようになります。

  5. Alice と Bob の間のスクリプト化された対話に続いて操作します。

    対話の詳細は、手順 2. で選択したバージョン番号によって異なります。各ウィンドウで送信モードと受信モードを交互に切り替えるメッセージ ループが作成されます。送信モードは、:> プロンプトで示されます。受信モードは、空白行で示されます。Alice が送信モードの場合、Bob は受信モードになります。Bob がメッセージを受信すると、Bob は送信モードに切り替わり、Alice は受信モードに切り替わります。

    Alice と Bob のメッセージに注目してください。Alice から Bob への 2 回目のメッセージと、Bob から Alice への返信は、Mallory によって変更されています。

    スクリプト化された対話の終了後、Bob と対話するかどうか Alice からの確認が行われます。

  6. 独自のメッセージを送信する場合は、プロンプトで以下を実行します。

    1. メッセージを入力し、Enter キーを押します。Alice から Bob にメッセージが送信されます。

    2. Bob ウィンドウにフォーカスを移し、メッセージを入力して Enter キーを押します。Bob から Alice にメッセージが送信されます。

    3. 前の 2 つの手順を繰り返して、追加のメッセージを送信します。

  7. 終了する場合は、送信モードの状態にある (:> プロンプトが表示されている) Alice のウィンドウまたは Bob のウィンドウで Enter キーを押します。

    3 つのウィンドウは、手順 2. の時点の状態にリセットされます。

    注意

    閉じる ボタンをクリックしてウィンドウを閉じると、ウィンドウは応答を停止します。開いているウィンドウをすべて閉じて、例を再起動します。

  8. 異なるオプションで例を実行します。詳細モードで、バージョン 2、バージョン 3、バージョン 4、またはバージョン 5 を選択している場合、Alice の送信する暗号化文字列と Bob の受信する暗号化文字列を比較できます。Mallory が有効になっている場合を除き、それらは完全に一致する必要があります。ただし、ASCII 文字セットで 128 文字を超える文字は表示できないため、128 文字を超える部分は疑問符 (?) で表されることに注意してください。

参照

概念

CNG (Cryptography Next Generation) のセキュリティで保護された通信の例

暗号サービス