連載
Enterprise Library概説

暗号化機能を簡単に実装しよう

アバナード株式会社 市川 龍太(patterns & practices Champion
2006/08/10
Page1 Page2

ConfigurationコンソールでCryptoABの構成を設定する

 CryptoABをアプリケーションで利用するためには、「The Enterprise Library Configuration Console」(以下Configurationコンソール)でCryptoABの構成管理設定を行っておく必要がある。

■ConfigurationコンソールでのCryptoABの追加

 今回は「アプリケーション」ノードに「Cryptography Application Block」ノードを追加する。

ConfigurationコンソールでのCryptoABの追加
Configurationコンソールを起動するには、[スタート]メニューの[プログラム]−[Microsoft patterns & practices]−[Enterprise Library - January 2006]−[Enterprise Library Configuration]をクリックすればよい。ここでは事前に、新規のアプリケーションを追加しておく必要がある。これを行うには、ツールバーの[New Application]をクリックするか、メニューバーから[File]−[New Application]を選択すればよい。これにより「Application Configuration」ノードがTreeViewコントロールのルートにある「Enterprise Library Configuration」ノードの直下に作成されるはずだ。
  CryptoABを追加する。これを行うには、事前に新規追加しておいた「Application Configuration」ノードの上で右クリックしてコンテキスト・メニューを表示し、そこから[New]−[Cryptography Application Block]を選択すればよい。これにより「Cryptography Application Block」ノードが「Application Configuration」ノードの下に追加される。

■Symmetric Algorithm Providerで利用する共有キーの構成設定

 次に対称暗号方式(共有キー暗号方式)用のプロバイダであるSymmetric Algorithm Providerを追加する。これを行うには上記手順にて追加した「Symmetric Provider」ノード上を右クリックしてコンテキスト・メニューを表示し、そこから「New」−[Symmetric Algorithm Provider]を選択して[Type Selector]ダイアログを表示する。

[Type Selector]ダイアログ
上記手順にて追加した「Symmetric Provider」ノード上を右クリックしてコンテキスト・メニューを表示し、そこから「New」−[Symmetric Algorithm Provider]を選択して表示する。

 この[Type Selector]ダイアログの中からRijndaelアルゴリズム用の「RijndaelManaged」プロバイダを選択すると、[Cryptographic Key Wizard]ダイアログが表示されるので、「Create a new key」を選択し、[Next]ボタンを押下する。

[Cryptographic Key Wizard]ダイアログ
[Type Selector]ダイアログの中からRijndaelアルゴリズム用の「RijndaelManaged」プロバイダを選択すると表示される。ここでは「Create a new key」を選択し、[Next]ボタンを押下する。

 続いて共有キーの生成画面に切り替わるため、[Generate]ボタンを押下し、共有キーを自動生成後、[Next]ボタンを押下する。

[Cryptographic Key Wizard]ダイアログ - 共有キーの自動生成
[Generate]ボタンを押下し、共有キーを自動生成後、[Next]ボタンを押下する。

 続いて、共有キーを格納するストア・ファイルを配置するパス(本稿の例では「C:\Sample.key」)を指定し、[Next]ボタンを押下する。

[Cryptographic Key Wizard]ダイアログ - ストア・ファイルの配置パスの設定
共有キーを格納するストア・ファイルを配置するパスを指定し、[Next]ボタンを押下する。

 最後に、data protection mode(データ保護モード)を「User mode」か「Machine mode」から選択し、[Finish]ボタンを押下すれば、すべての設定は終了である。

[Cryptographic Key Wizard]ダイアログ - data protection modeの設定
data protection mode(データ保護モード)を「User mode」か「Machine mode」から選択し、[Finish]ボタンを押下すれば、すべての設定は終了である。

 User modeは暗号化対象データをサーバ上のほかのアプリケーションと共有する必要がない場合に選択し、共有する必要がある場合はMachine modeを選択するとよいだろう。

■「Cryptography Application Block」配下の各ノードにおけるプロパティ設定

 以下の表は、上記の各ノードの各プロパティの設定例である。

プロパティ
設定値
Cryptography Application Block DefaultHashProvider なし
DefaultSymmetricCryptoProvider RijndaelManaged
Name Cryptography Application Block
Hash Providers Name Hash Providers
Symmetric Providers Name Symmetric Providers
RijndaelManaged AlgorithmType System.Security.Cryptography.RijndaelManaged
Key <Hidden>
Name RijndaelManaged
CryptoAB配下の各ノードのプロパティ設定例
表中の太字の個所がデフォルト設定から変更した設定値である。

暗号化処理を実行する

 CryptoABの暗号化機能を利用するサンプル・プログラムとして「CryptoABを使った場合のサンプル・プログラム」を示したが、今度はそのコードにさらに、暗号化されたデータを復号するコードを追加してみよう。

using System;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;

namespace CryptoABSample
{
  class Program
  {
    static void Main(string[] args)
    {
      string encryptedString = Cryptographer.EncryptSymmetric(
        "SymmManaged", "暗号化したい任意の文字列");

      string decryptedString = Cryptographer.DecryptSymmetric(
        "SymmManaged", encryptedString);
    }
  }
}
CryptoABの復号機能のサンプル・プログラム(C#)
太字の個所が追加された復号コードである。
このサンプル・プログラムを実行するには、以下のアセンブリを参照設定に追加する必要がある。
 ・Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll

 このサンプル・プログラムを実行すれば、先述したサンプル・プログラムで暗号化されたデータを復号することができる。CryptoABは任意のデータの暗号化・復号以外にも、ハッシュ値を生成するためのメソッド(CreateHash)も併せて提供している。

 以上、今回はCryptoABの概要説明と導入手順について解説した。.NET Frameworkのクラス・ライブラリだけでは煩雑になりがちな暗号化/復号処理が、CryptoABを利用することにより非常に簡潔になることがご理解いただけただろう。

 次回はCaching Application Blockについて、ASP.NETのキャッシュ機能も踏まえて解説する予定である。End of Article


 INDEX
  連載:Enterprise Library概説
  暗号化機能を簡単に実装しよう
    1.暗号化とは
  2.ConfigurationコンソールでCryptoABの構成を設定する
 
インデックス・ページヘ  「Enterprise Library概説」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間