machineKey 要素 (ASP.NET 設定スキーマ)

フォーム認証データとビューステート データの暗号化と復号化、およびアウトプロセス セッション ステート ID の検証に使用するアルゴリズムとキーを構成します。

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
    HMACSHA384 | HMACSHA512 | alg:algorithm_name]
  decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性

説明

decryption

省略可能な String 型の属性です。

フォーム認証データの暗号化と復号化に使用されるアルゴリズムを指定します。

この属性には、次のいずれかの値を指定できます。

  • Auto  使用する復号化アルゴリズムを自動的に決定するように指定します。 これは、この属性の既定値です。

  • AES  ASP.NET で、AES (Rijndael) アルゴリズムを使用してデータを暗号化および復号化するように指定します。 AES は、既定のアルゴリズムであり、この属性の値が Auto の場合に使用されるアルゴリズムです。 このアルゴリズムは、米国連邦情報処理規格 (FIPS: Federal Information Processing Standard) に準拠しています。

  • DES  ASP.NET で、DES (Data Encryption Standard) アルゴリズムを使用してデータを暗号化および復号化するように指定します。 このアルゴリズムは、レガシ用としてのみ用意されており、以前のバージョンの ASP.NET との互換性が必要な場合にのみ使用する必要があります。

  • 3DES  ASP.NET で、TripleDES アルゴリズム (3DES) を使用してデータを暗号化および復号化するように指定します。 このアルゴリズムは、レガシ用としてのみ用意されており、以前のバージョンの ASP.NET との互換性が必要な場合にのみ使用する必要があります。

  • alg:アルゴリズム名  ASP.NET で、カスタム アルゴリズムを使用してデータを暗号化および復号化するように指定します。 暗号化アルゴリズムは、SymmetricAlgorithm から派生したクラスで定義する必要があります。 ASP.NET は、SymmetricAlgorithm.Create メソッドを呼び出し、ここで指定したアルゴリズムの名前を渡します。

decryptionKey

必須の String 属性です。

データの暗号化および復号に使用されるキー、またはキーを生成するプロセスを指定します。 この属性は、フォーム認証の暗号化と復号化、およびビューステートを暗号化する場合のビューステートの暗号化と復号化に使用されます。

この属性には、次のいずれかの値を指定できます。

  • AutoGenerate, IsolateApps  キーが自動的に生成されるように指定します。 これが既定値です。 AutoGenerate 修飾子は、ASP.NET で乱数キーを生成し、ローカル セキュリティ機関 (LSA) を格納するように指定します。 IsolateApps 修飾子は、ASP.NET で各アプリケーションのアプリケーション ID を使用し、アプリケーションごと一意の暗号化キーを生成するように指定します。

  • キー値  手動で割り当てられたキーを指定します。 decryptionKey の値は、Web ファームのすべてのサーバーでの設定に一貫性を持たせるために、16 進文字の文字列に手動で設定する必要があります。 キーは、DES 暗号化の場合は 64 ビット (16 進の 16 文字) の長さ、3DES の場合は 192 ビット (16 進の 48 文字) の長さにする必要があります。 AES の場合は、キーを 128 ビット (32 文字)、192 ビット (48 文字)、または 256 ビット (64 文字) の長さにすることができます。 最も長いキーを使用すると、セキュリティが最も高くなります。RNGCryptoServiceProvider クラスを使用して、乱数キーを手動で生成できます。 詳細については、「How To: ASP.NET 2.0 で MachineKey を構成する方法」を参照してください。

詳細については、「DecryptionKey」を参照してください。

validation

必須の MachineKeyValidation 属性です。

データの検証に使用するハッシュ アルゴリズムを指定します。

既定では、ビューステートは Base 64 エンコード文字列として送信されます。 エンコードされたデータは一見しただけでは理解不能ですが、Base 64 エンコーディングは簡単にデコードできるため、セキュリティは確保されません。 ビューステートに機密データを格納する場合は、ASP.NET がビューステート データの検証に加えて暗号化を実行するように指定できます。 ビューステート データの暗号化は、Web アプリケーションのすべてのページまたは選択したページに対して指定できます。 このオプションの詳細については、「ViewStateEncryptionMode」および「RegisterRequiresViewStateEncryption()」を参照してください。

ビューステートの暗号化を使用する場合は、この属性を AES に設定します。 その場合、decryptionKey の値を使用してビューステート データが暗号化されます。また、ASP.NET は HMACSHA1 ハッシュ アルゴリズムを使用してデータを検証します。

この属性には、次のいずれかの値を指定できます。

  • AES  ビューステートを暗号化する場合に、ASP.NET で、AES (Rijndael) 暗号化アルゴリズムを使用してデータを暗号化および復号化するように指定します。 validation 属性にこのオプションを指定した場合、HMACSHA1 アルゴリズムが検証に使用されます。

  • MD5  ASP.NET で、MD5 (Message Digest 5) ハッシュ アルゴリズムを使用してデータを検証するように指定します。 このアルゴリズムは、レガシ用としてのみ用意されており、以前のバージョンの ASP.NET との互換性が必要な場合にのみ使用する必要があります。

  • SHA1  ASP.NET で、HMACSHA1 ハッシュ アルゴリズムを使用してデータを検証するように指定します。 このアルゴリズムは、この属性を AES に設定してビューステートの暗号化をサポートする必要がある場合にだけ使用する必要があります。 それ以外の場合は、HMACSHA256、HMACSHA384、または HMACSHA512 を使用します。

  • 3DES  ビューステートを暗号化する場合に、ASP.NET で TripleDES (3DES) アルゴリズムを使用してデータを暗号化および復号化するように指定します。 validation 属性にこのオプションを指定した場合、HMACSHA1 アルゴリズムが検証に使用されます。 このアルゴリズムは、レガシ用としてのみ用意されており、以前のバージョンの ASP.NET との互換性が必要な場合にのみ使用する必要があります。

  • HMACSHA256  ASP.NET で、HMACSHA256 ハッシュ アルゴリズムを使用してデータを検証するように指定します。 これが既定値です。 このアルゴリズムは、米国連邦情報処理規格 (FIPS: Federal Information Processing Standard) に準拠しています。

  • HMACSHA384  ASP.NET で、HMACSHA384 ハッシュ アルゴリズムを使用してデータを検証するように指定します。 このオプションは、HMACSHA256 アルゴリズムで提供されるよりも高いセキュリティが必要なアプリケーションで使用できます。 このアルゴリズムは、米国連邦情報処理規格 (FIPS: Federal Information Processing Standard) に準拠しています。

  • HMACSHA512  ASP.NET で、HMACSHA512 ハッシュ アルゴリズムを使用してデータを検証するように指定します。 このオプションは、HMACSHA384 アルゴリズムで提供されるよりも高いセキュリティが必要なアプリケーションで使用できます。 このアルゴリズムは、米国連邦情報処理規格 (FIPS: Federal Information Processing Standard) に準拠しています。

  • alg:アルゴリズム名  ASP.NET で、カスタム アルゴリズムを使用するように指定します。 プレフィックス "alg:" の後には、KeyedHashAlgorithm クラスから派生したクラスの名前が続きます。 ASP.NET は、Create() メソッドを呼び出し、ここで指定したアルゴリズムの名前を渡します。

validationKey

必須の String 属性です。

データの検証に使用されるキー、またはキーを生成するプロセスを指定します。 validationKey の値は、アウトプロセスでアプリケーション固有のセッション ID を生成し、セッション状態変数をセッション間で切り離すためにも使用されます。

この属性には、次のいずれかの値を指定できます。

  • AutoGenerate, IsolateApps  キーが自動的に生成されるように指定します。 これが既定値です。 AutoGenerate 修飾子は、ASP.NET で乱数キーを生成し、ローカル セキュリティ機関 (LSA: Local Security Authority) を格納するように指定します。 IsolateApps 修飾子は、ASP.NET で各アプリケーションのアプリケーション ID を使用し、アプリケーションごと一意の暗号化キーを生成するように指定します。

  • キー値  手動で割り当てられたキーを指定します。 validationKey の値は、Web ファームのすべてのサーバーでの設定に一貫性を持たせるために、16 進文字の文字列に手動で設定する必要があります。 キーの長さは、使用されるハッシュ アルゴリズムに応じて異なります。

    • AES では 256 ビット キー (16 進の 64 文字) が必要です。

    • MD5 では 128 ビット キー (16 進の 32 文字) が必要です。

    • SHA1 では 160 ビット キー (16 進の 40 文字) が必要です。

    • 3DES では 192 ビット キー (16 進の 48 文字) が必要です。

    • HMACSHA256 では 256 ビット キー (16 進の 64 文字) が必要です。

    • HMACSHA384 では 384 ビット キー (16 進の 96 文字) が必要です。

    • HMACSHA512 では 512 ビット キー (16 進の 128 文字) が必要です。

    RNGCryptoServiceProvider クラスを使用して、乱数キーを手動で生成できます。 詳細については、「How To: ASP.NET 2.0 で MachineKey を構成する方法」を参照してください。 このトピックでは、HMACSHA256、HMACSHA384、または HMACSHA512 の各アルゴリズムを示していません。 ただし、キーの長さを正しく指定すると、プロセスはこれらのアルゴリズムでも機能します。

詳細については、「ValidationKey」を参照してください。

子要素

なし。

親要素

要素

説明

configuration

共通言語ランタイムおよび .NET Framework ベースのアプリケーションで使用されるすべての構成ファイルで必要なルート要素です。

system.web

構成ファイルの ASP.NET 構成設定のルート要素を指定します。ASP.NET Web アプリケーションを構成する構成要素やアプリケーションの動作を制御する構成要素が含まれます。

解説

validationKey 属性と decryptionKey 属性を両方とも AutoGenerate に設定する方法を次のコード例に示します。 サーバー上の各アプリケーションに一意のキーを生成するために、isolateApps 値が指定されています。

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
/>

validationKey 属性と decryptionKey 属性を、手動で生成した乱数値に設定する方法を次のコード例に示します。 validationKey 属性を HMACSHA256 ハッシュ アルゴリズムに対応する 256 ビットの長さのキーに設定し、decryptionKey 属性も 256 ビットの長さのキーに設定します。これは、AES 暗号化アルゴリズムで設定できる最も長いキーです。 これらは例としてのみ提供されているため、アプリケーションでは使用しないでください。

<machineKey 
    validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F" 
    decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4" 
/>

参照

処理手順

チュートリアル : 保護された構成を使用した構成情報の暗号化

方法 : Location の設定を使用して特定のディレクトリを構成する

方法 : ASP.NET 構成設定をロックする

参照

system.web 要素 (ASP.NET 設定スキーマ)

configuration 要素 (全般設定スキーマ)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

概念

アプリケーション間のフォーム認証

ロールのセキュリティ保護

メンバーシップのセキュリティ保護

プロファイル プロパティの保護

セッション状態の保護

ASP.NET 構成ファイルの階層と継承

ASP.NET 構成の保護

ASP.NET の構成のシナリオ

その他の技術情報

全般構成設定 (ASP.NET)

ASP.NET 構成設定

ASP.NET Web サイト管理

ASP.NET 構成 API