セキュリティ保護された ASP.NET アプリケーションの構築 : 認証、認定、および通信のセキュリティ保護 用語集

patterns and practices home

J.D. Meier, Alex Mackman, Michael Dunner, and Srinath Vasireddy
Microsoft Corporation

November 2002
日本語版最終更新日 2003 年 3 月 17 日

全体の概要については、「セキュリティ保護された ASP.NET アプリケーションの構築」の開始ページを参照してください。

A-M

Active Directory

Active Directory は、Windows 2000 オペレーティング システムで使用される LDAP ディレクトリ サービスです。

Base 64 エンコード

Base 64 エンコードは、バイナリ データを印刷可能な ASCII テキストとしてレンダリングできるように明確に定義されたエンコード方式です。HTTP などのテキスト ベースのプロトコルでの使用に適しています。暗号化とは異なります。

DES (Data Encryption Standard)

DES は、データを 64 ビット ブロックで暗号化するブロック (暗号化アルゴリズム) です。DES は、暗号化と解読に同じアルゴリズムとキーを使用する対称アルゴリズムです。DES に代わって、Triple DES が採用されつつあります。

DPAPI (Data Protection API)

DPAPI は、Windows 2000 以降のオペレーティング システムに用意されているデータ暗号化および解読用の Win32 API です。DPAPI は、Windows アカウント パスワードを使って暗号化キーを生成し、暗号化技術に関するキー管理の問題をオペレーティング システムに渡します。

EFS (暗号化ファイル システム)

Windows 2000 以降のオペレーティング システムには、NTFS ボリューム上でのファイル暗号化を実現する暗号化ファイル システム (EFS) が用意されています。

GenericIdentity

GenericIdentity は、IIdentity インターフェイスを実装したものです。ASP.NET では、フォーム認証および Passport 認証のメカニズムと組み合わせて、GenericIdentity を使用します (カスタム認証との組み合わせで使用することもあります)。GenericIdentity オブジェクトは、GenericPrincipal オブジェクトに格納されます。

GenericPrincipal

GenericPrincipal は、IPrincipal インターフェイスを実装したものです。ASP.NET では、フォーム認証および Passport 認証のメカニズムと組み合わせて、GenericPrincipal を使用します (カスタム認証との組み合わせで使用することもあります)。このオブジェクトには、ユーザーが所属しているロールの一覧が格納されます。この一覧は、カスタム データ ストアからアプリケーションによって取得されたものです。

GenericPrincipal オブジェクトは、Web 要求のコンテキストに関連付けられて、認定に使用されます。このオブジェクトは、GenericIdentity オブジェクトを格納します。

HTTP コンテキスト

HTTP コンテキストとは、現在の Web 要求に関連付けられ、その要求を記述するコンテキストまたはプロパティのコレクションです。

HTTP ハンドラ

ASP.NET では、HTTP 要求を HTTP ハンドラにマップします。個々の URL や URL のグループが特定の HTTP ハンドラにマップされます。HTTP ハンドラは、ISAPI 拡張機能と同等の機能ですが、プログラミング モデルが大幅に簡略化されています。HTTP ハンドラは、IHttpHandler インターフェイスおよび IHttpAsyncHandler インターフェイスを実装したアセンブリです。

HTTP モジュール

HTTP モジュールは、ASP.NET が Web 要求を処理するときに使用されるモジュールです。HTTP モジュールは、IhttpModule インターフェイスを実装したアセンブリです。このモジュールは、イベントを処理します。ASP.NET では、認証モジュール、セッション状態モジュール、グローバル キャッシュ モジュールなどの一連の組み込みモジュールを使用します。カスタム HTTP モジュールを開発して、ASP.NET HTTP 処理パイプラインにプラグインすることもできます。

IPSec (インターネット プロトコル セキュリティ)

IPSec は、トランスポート レベル セキュリティの形態の 1 つです。IPSec は、2 つのコンピュータの間で転送されるデータを暗号化するように設計されており、データを改ざんや傍受から保護します。

Kerberos

Kerberos は、Windows 2000 以降のオペレーティング システムでサポートされている認証プロトコルです。Kerberos は、偽装の概念を拡張した委任をサポートしています。委任を使うと、呼び出し元のセキュリティ コンテキストから、サーバーのオペレーティング システムのローカルなリソースだけでなく、ネットワーク リソースにもアクセスできます。

LDAP (Lightweight Directory Access Protocol)

LDAP は、Active Directory などのディレクトリ サービスにアクセスするためのプロトコルです。

LogonUser

LogonUser は、指定された Windows アカウントに対応するログオン セッション (およびアクセス トークン) を作成する Win32 API です。LogonUser を呼び出すコードは、コンピュータの TCB に含まれている必要があります。つまり、"オペレーティング システムの一部として機能" 特権が付与されている Windows アカウントに属するプロセスの中で、コードが実行されることが必要です。

LSA (ローカル セキュリティ機関)

ローカル セキュリティ機関 (LSA) は、認証サービスを提供するローカル Windows サブシステムです。

N-Z

NTLM

NTLM (Windows NT LAN Manager) は、Windows 2000 以前の Microsoft Windows NT オペレーティング システムやスタンド アロン システムが含まれているネットワークで使用されるチャレンジ/レスポンス認証プロトコルです。

PKCS (Public Key Cryptography Standards)

PKCS は、セキュリティ機能をカバーする公開キー暗号化用の構文標準のセットです。データの署名、キーの交換、証明書の要求、公開キーの暗号化と解読の方法や、その他のセキュリティ機能がカバーされています。

RC2

CryptoAPI では、RC2 アルゴリズムを単に RC2 と呼びます。

RC4

CryptoAPI では、RC4 アルゴリズムを単に RC4 と呼びます。

RSA

RSA Data Security, Inc. は、公開キー暗号化標準の開発と発行で知られる企業です。社名の RSA は、同社のオーナーである Rivest、Shamir、Adleman の 3 名の開発者の名前の頭文字に由来します。

SACL (システム アクセス制御リスト)

SACL は、セキュリティ記述子を通じて保証可能なオブジェクトに関連付けられ、特定のユーザーがどの種類の操作を実行したときに監査メッセージを生成するのかを指定します。

salt 値

salt 値は、ディクショナリ攻撃への対策として、暗号化データまたはハッシュ データと組み合わせて使用されるランダム データです。通常、salt 値は、暗号化データまたはハッシュ データの前に置かれます。

SAM データベース

SAM データベースは、Windows NT 環境または Active Directory を使用していない Windows 2000 環境でユーザー アカウントとグループ アカウントを管理するために使用されるデータベースです。

SHA (Secure Hash Algorithm)

SHA は、メッセージのダイジェスト (ハッシュ) を生成するためのアルゴリズムです。現在は、オリジナルの SHA アルゴリズムに代わって、改良された SHA1 アルゴリズムが使用されています。

SOAP

SOAP は、分散型環境内での情報交換に使用される XML ベースの軽量プロトコルです。Web サービスに使用されます。

SOAP 拡張機能

SOAP 拡張機能は、ASP.NET でサポートされている、SOAP メッセージ処理を拡張するための拡張性メカニズムです。SOAP 拡張機能を使うと、クライアントとサーバーのどちら側においても処理ライフサイクル中の特定の段階でメッセージを検査または修正することができます。

SSL (Secure Sockets Layer)

SSL は、公開キーとシークレット キーを組み合わせて、セキュリティ保護されたネットワーク通信を実現するプロトコルです。

SSPI (Security Support Provider Interface)

SSPI は、Microsoft Remote Procedure Call (RPC) などのトランスポート レベル アプリケーションと統合 Windows 認証プロバイダなどのセキュリティ プロバイダとの間の共通インターフェイスです。トランスポート アプリケーションは、SSPI を通じて、複数のセキュリティ プロバイダのいずれかを呼び出し、統一された方法で認証済み接続を取得することができます。

TCB (Trusted Computing Base)

TCB は、システムのうち、セキュリティ ポリシーの適用において信頼されている部分を定義する境界線です。TCB の内側で実行されている実行可能コードは、通常のセキュリティ チェックを受けることなく操作を実行できます。デバイス ドライバは、TCB の内側で実行されます。ユーザー コードについても、関連付けられているプロセス アカウントに "オペレーティング システムの一部として機能" 特権が付与されている場合は、TCB の内側で実行されます。また、SYSTEM アカウントで実行されるユーザー コードも、TCB の内側で実行されます。

Triple DES

Triple DES (3DES) 暗号化アルゴリズムは、DES ブロック暗号化アルゴリズムの一種です。このアルゴリズムでは、プレーン テキストを 1 番目のキーで暗号化し、その結果得られた暗号化テキストを 2 番目のキーで暗号化した後、2 番目の暗号化の結果を 3 番目のキーでさらに暗号化します。Triple DES は、暗号化と解読に同じアルゴリズムとキーを使用する対称アルゴリズムです。

WindowsIdentity

WindowsIdentity は、IIdentity インターフェイスを実装したものです。ASP.NET では、Windows 認証と組み合わせて、WindowsIdentity を使用します。WindowsIdentity オブジェクトは、ユーザーの Windows アクセス トークンをユーザー名情報と共に公開します。WindowsIdentity オブジェクトは、WindowsPrincipal オブジェクトに格納されます。

WindowsPrincipal

WindowsPrincipal は、IPrincipal インターフェイスを実装したものです。ASP.NET では、Windows 認証と組み合わせて、WindowsPrincipal を使用します。ASP.NET では、現在の Web 要求のコンテキストに WindowsPrincipal オブジェクトを関連付けて、認証の呼び出し元を表します。これは認証に使用されます。

WindowsPrincipal オブジェクトには、ユーザーが所属している 1 式のロール (Windows グループ) が格納されます。さらに、呼び出し元の身元情報を提供する WindowsIdentity オブジェクトも、このオブジェクトに格納されます。

XML デジタル署名

XML デジタル署名とは、XML ドキュメントに適用されるデジタル署名です。

アカウント

アカウントは、個々のプリンシパルの属性を維持するセキュリティ データベース内のエントリです。SAM データベース、Active Directory のいずれかをセキュリティ データベースとして使用します。

アカウントには、ドメイン アカウントとローカル アカウントの 2 種類があります。

アクセス トークン

アクセス トークンは、各 Windows プロセスに関連付けられるデータ構造です。プロセスのセキュリティ コンテキスト情報を維持します。セキュリティ コンテキスト情報には、ログオン セッションが表すプリンシパルを識別するユーザー SID のほか、ユーザーのグループ SID や特権などの認定属性が含まれます。

各アクセス トークンに関連付けられるログオン セッションは常に 1 つだけですが、各ログオン セッションには 1 つまたは複数のアクセス トークンが含まれます。ログオン セッション内でプロセスが開始されるたびに、そのログオン セッションに含まれるアクセス トークンが 1 つずつ増えます。また、必要に応じて、個々のスレッドに関連付けられたスレッド トークンをログオン セッションに含めることができます。

アクセス権

アクセス権は、アクセス トークンの属性の 1 つです。セキュリティ保護されているオブジェクトに対して特定の Windows グループまたは Windows ユーザーが実行できる操作の種類を決定します。アクセス権には、読み取り、書き込み、削除、実行などがあります。

アクセス制御エントリ (ACE)

アクセス制御エントリ (ACE) は、アクセス制御リスト (ACL) 内の特定のユーザーまたはユーザー グループを識別し、そのユーザーまたはユーザー グループのアクセス権を指定します。ACE ごとにアクセスを拒否または許可することができます。

アクセス制御リスト (ACL)

アクセス制御リスト (ACL) は、保証可能なオブジェクトに関連付けられているアクセス制御エントリ (ACE) の順序付きリストです。Windows オペレーティング システムでは、随意アクセス制御リスト (DACL) とシステム アクセス制御リスト (SACL) の 2 種類の ACL を使用します。DACL では、ユーザーまたはユーザー グループのアクセス権を指定します。SACL では、どの種類の操作がオブジェクトに対して実行されたときに監査メッセージを生成するのかを定義します

アプリケーション サーバー

アプリケーション サーバーは、フロントエンド Web サーバーとは別に用意される専用サーバー コンピュータです。アプリケーション サーバーは、主に、Web サービスやリモート コンポーネントのほか、アプリケーションのビジネス ロジックの大部分を格納する Enterprise Services アプリケーションなどをホストします。

暗号

暗号は、情報セキュリティの中核となる技術です。機密性の維持、整合性の維持、および認証を目的として使用されます。

暗号化

暗号化とは、データ (プレーン テキスト) を暗号化テキストに変換するプロセスです。暗号化テキストは、ランダムで意味を持たないテキストにしか見えず、シークレット キーがなければ解読するのは困難です。暗号化は、メッセージの機密性を維持する目的で使用されます。

暗号化アルゴリズム

暗号化アルゴリズムとは、データの暗号化に使用されるアルゴリズムです。

暗号化テキスト

暗号化テキストとは、暗号化されたデータを意味します。

一時トークン

スレッド トークン」を参照。

委任

委任では、クライアントに代わって操作を実行するサーバー プロセスに対し、リモート コンピュータ上のリソースへのアクセスを許可します。これは、偽装の概念を拡張したものです。Windows 2000 以降のオペレーティング システムでは、Kerberos によって、この機能がネイティブに提供されています。従来型の偽装 (NTLM によって提供されるものなど) は、1 つのネットワーク ホップだけに制限されています。NTLM の偽装機能では、クライアント コンピュータとサーバー コンピュータの間で 1 ホップが使用され、偽装中はサーバーがローカル リソース アクセスだけに制限されます。

エントロピ

エントロピとは、不確定性の尺度です。一部の暗号化技術では、エントロピを組み入れることにより、ある程度のランダムさを暗号化プロセスに付加しています。データを解読するときには、データの暗号化時に使用したのと同じエントロピ値とキーを使用する必要があります。

キー

キーとは、データの暗号化および解読に使用される暗号化および解読アルゴリズムに渡される値です。データの暗号化と解読に同じキーを使用するアルゴリズムは対称暗号化アルゴリズムと呼ばれ、公開キーと秘密キーのペアを使用するアルゴリズムは非対称暗号化アルゴリズムと呼ばれます。

キー ストア

キー ストアとは、Microsoft Cryptography API (CryptoAPI) によってキーのペアが保存される場所です (通常は、ファイルまたはレジストリ キー)。キー ストアは、ユーザー、またはキーの生成元のコンピュータに固有のストアとなります。

キー ペア

キー ペアとは、エンティティに所属し、データの暗号化および解読に使用される公開キーと秘密キーのペアを指します。

機関

機関とは、認証サービスの提供に使用される、信頼されたエンティティ (組織またはコンピュータ) です。

偽装および委任モデル

偽装および委任モデルは、連続したアプリケーション層を通じて、バックエンド リソース マネージャに至るまでの元の呼び出し元のセキュリティ コンテキストのフローを定義したリソース アクセス モデルです。これにより、リソース マネージャは、元の呼び出し元の身元に基づいて認定の決定を実装できます。

これと対照的なモデルとして、固定の "信頼された" 身元をリソース アクセスに使用する信頼済みサブシステム モデルがあります。

偽装

偽装とは、サーバー アプリケーションがクライアントに代わってリソースにアクセスするときに使用される技術です。クライアントのアクセス トークンのコピーが使用されます。クライアントのアクセス トークンをサーバー コンピュータ上で生成できるように、クライアントは自分の身元情報をネットワーク経由でサーバーに送信する必要があります。

固定プリンシパル偽装」も参照。

偽装トークン

スレッド トークン」を参照。

基本認証

基本認証は、HTTP 1.0 プロトコルの一部であり、ほとんどすべての Web サーバーと Web ブラウザに実装されていることから、幅広く使用されています。基本認証は、暗号化やチャレンジ/レスポンス ハンドシェイクを伴わない単純な認証メカニズムです。プリンシパルの資格情報 (ユーザー名とパスワード) をクライアントからサーバーに直接送信します。基本認証では、パスワードを暗号化せずにネットワーク経由で送信します。このため、SSL と併用するのでない限り、基本認証は安全な認証方法ではありません。Base 64 エンコードがパスワードの送信に使用されるので、クリア テキスト パスワードは盗用される危険があります。

機密性

プライバシー」を参照してください。

強制的な認定

強制的な認定は、メソッド コード内で適用される認定形式の 1 つです。たとえば、.NET には、以下のコードに示すように強制的な認定の実行に使用できる PrincipalPermissionAttribute クラスが用意されています。このコードでは、呼び出し元が Teller のロールに所属していることを要求しています。呼び出し元がこのロールに所属していない場合は、セキュリティ例外が生成され、特権コード (Demand メソッド呼び出しの後のコード) は実行されません。

public UsePrivilege()
{
  PrincipalPermission permCheck = new PrincipalPermission(null,"Teller");
  permCheck.Demand();
  // privileged code
}

クライアント証明書

クライアント証明書とは、クライアントの身元を証明するためにクライアントからサーバー アプリケーションに送信される証明書です。

クリア テキスト

クリア テキストとは、暗号化されていないデータを意味します。

ゲートキーパー

ゲートキーパーとは、アクセス制御用の技術またはサブシステムの一種です。ゲートキーパーの例としては、IIS、ASP.NET UrlAuthorizationModule、ASP.NET FileAuthorizationModule などがあります。

公開キー

公開キーは、公開/秘密キー ペアの公開側のキーです。主に、セッション キーまたはデジタル署名の解読に使用されます。公開キーは、メッセージの暗号化にも使用されます。この場合は、対応する秘密キーを持っているユーザーだけがメッセージを解読できます。

公開/秘密キー暗号化

公開/秘密キー暗号化は、暗号化技術で生成された公開/秘密キー ペアに基づく非対称暗号化です。秘密キー (または公開キー) で暗号化されたデータは、対応する公開キー (または対応する秘密キー) でのみ解読できます。

コード アクセス セキュリティ

コード アクセス セキュリティは、.NET セキュリティの形態の 1 つであり、コードから保護対象リソースへのアクセスを制御します。

固定プリンシパル偽装

固定プリンシパル偽装は、ASP.NET で使用される偽装形式の 1 つであり、認証された呼び出し元の身元に関係なく、偽装される身元を常に一定に維持します。通常、偽装される身元は、呼び出し元の身元によって決まります。固定プリンシパル偽装で使用する身元は、web.config の <identity> 要素の userName 属性と password 属性を使って指定されます。次に例を示します。

<identity userName="Bob" password="password" />

サービス アカウント

サービス アカウントは、分散型多層アプリケーションで下位リソース (多くの場合、データベース) にアクセスすることだけを目的として特別に構成されたアカウントです (プロキシ アカウントとも呼ばれます)。中間層コンポーネントでは、しばしば特定数以内のサービス アカウントを使用してデータベースに接続し、接続プールをサポートします。サービス アカウントとしては、Active Directory または SAM データベース内に維持されている Windows アカウントか、SQL Server 内で維持されている SQL アカウントを使用できます。

最低限の特権の原則

最低限の特権の原則とは、可能な限り弱いプロセス ID を使って実行可能コードを実行することを意味します。これは、プロセスのセキュリティが侵害されたときに発生する損害をできるだけ小さく抑えることを目的としています。

悪意のあるユーザーがなんらかの方法でサーバー プロセスにコードを注入した場合、そのユーザーが実行できる操作の種類は、そのプロセスに付与されている特権に大きく左右されます。

資格情報

資格情報とは、プリンシパルの身元証明に使用される項目の集合です。ユーザー名とパスワードの組み合わせが資格情報として最もよく使用されます。

証明機関 (CA)

CA とは、証明書を発行する、信頼された組織またはエンティティです。

証明書

証明書とは、対象 (ユーザーまたはアプリケーション) に関する情報と対象の公開キーを格納したデジタル署名付きデータ構造です。証明書は、証明機関 (CA) と呼ばれる、信頼された組織によって発行されます。証明書の発行前に、対象の身元が CA によって確認される必要があります。

証明書失効リスト (CRL)

CRL は、証明機関 (CA) によって維持および公開されるドキュメントです。CA から発行された証明書のうち、失効した証明書のリストが記載されます。

証明書ストア

証明書ストアとは、証明書、証明書失効リスト (CRL)、および証明書信頼リストの保存場所です。

証明書認証

証明書認証は、IIS の認証方法の 1 つです。この認証方法では、IIS がクライアントの身元証明となるクライアント証明書を受け付けます。証明書認証を行う場合は、内部マッピング テーブルまたは Active Directory を使用してクライアント証明書を Windows ユーザー アカウントにマッピングするように IIS を構成することができます。

信頼

セキュリティ保護されたシステムでは、信頼の概念が重要な意味を持ちます。たとえば、管理特権を持っているユーザー (つまり、管理者) がシステムを正しく管理するには、そのユーザーが信頼されている必要があり、悪意ある行為を故意に行うようなことがあってはなりません。同様に、デバイス ドライバや LocalSystem で実行されるコードのように、拡張特権で実行されるコードは、信頼されていることが必要です。このように、暗黙的な信頼が必要なコードは、コンピュータの TCB (Trusted Computing Base) 内で実行されます。完全に信頼できないコードに対しては、TCB の内側での実行を禁止しなければなりません。

アプリケーションまたはサービスに信頼を置く信頼済みサブシステム モデルにおいても、信頼の概念が重要な意味を持ちます。

信頼されたサブシステム モデル

信頼されたサブシステム モデルは、Web アプリケーションで採用されているリソース アクセス モデルです。このモデルでは、アプリケーションが固定の "信頼された" 身元を使用してデータベースなどの下位リソース マネージャにアクセスします。

データベース管理者は、データベース内の特定の"信頼された" 身元に対してセキュリティ上のロールとアクセス許可を定義します。このモデルでは、アプリケーションのスケーラビリティ向上に大きく寄与するデータベース接続プールがサポートされています。これと対照的なモデルとして、偽装および委任モデルがあります。

推移的な信頼関係

推移的な信頼関係は、コンピュータ間またはドメイン間で双方向に確立される信頼関係です。ここで言う "推移" とは、機関 A が機関 B を信頼し、機関 B が機関 C を信頼している場合、機関 A が暗黙的に機関 C を信頼することを意味します。この場合、機関 A と機関 C の間に明示的な信頼関係が存在している必要はありません。推移的な信頼関係は、Windows 2000 の Active Directory でサポートされています。

随意アクセス制御リスト (DACL)

DACL は、セキュリティ記述子を通じて保証可能なオブジェクトに関連付けられ、ユーザーおよびユーザー グループに対して付与するアクセス権のセットを指定します。DACL は、オブジェクトの所有者によって制御され、ユーザーまたはユーザー グループがオブジェクトに対して実行できる操作の種類を決定するアクセス制御エントリ (ACE) の順序付きリストを格納します。

スレッド トークン

スレッド トークンは、特定のスレッドに関連付けられる一時アクセス トークンです。作成された直後のスレッドには、アクセス トークンがありません。スレッドがなんらかのセキュリティ保護された操作を実行するときには、プロセス トークンから取得した情報が使用されます。一般的な状況としては、サーバー プロセス内のスレッドがクライアントに代わって操作を実行するときに、アクセス トークンを取得することがあります。この状況では、クライアントを表すアクセス トークンを取得することによって、スレッドがクライアントを偽装することになります。

スレッド トークンは、一時トークンまたは偽装トークンとも呼ばれます。

整合性

セキュリティ保護された通信チャネルでは、転送中のデータを過失または故意 (悪意) による変更から保護することも必要です。整合性の確保には、通常、メッセージ認証コード (MAC) が使用されます。

セキュリティ コンテキスト

セキュリティ コンテキストとは、プロセスまたはスレッドのセキュリティ関連の動作に影響するセキュリティ設定値の集合を指す総称的な用語です。プロセスのログオン セッションとアクセス トークンの属性の組み合わせにより、プロセスのセキュリティ コンテキストが形成されます。

セキュリティ記述子 (SD)

セキュリティ記述子 (SD) には、ファイルやプロセスなどの保証可能なオブジェクトに関連付けられたセキュリティ情報が格納されます。セキュリティ記述子には、オブジェクトの所有者の ID および所属先セキュリティ グループなどの属性と、随意アクセス制御リスト (DACL) およびシステムアクセス制御リスト (SACL) の 2 つのアクセス制御リスト (ACL) が格納されます。DACL は、個々のユーザーとユーザー グループのアクセス権を定義し、SACL は、どの種類の操作がオブジェクトに対して実行されたときに監査メッセージを生成するのかを定義します。

セキュリティ識別子 (SID)

セキュリティ識別子 (SID) は、ドメイン内のユーザーまたはユーザー グループを一意に識別します。SID は、リビジョン レベル、認証機関の値 (SID 発行元、通常は Windows)、1 式の下位機関の値 (通常は、ネットワーク ドメインを表すもの)、および認証機関/下位機関の組み合わせの中で一意となる相対 ID (RID) から成る可変長の値です。

ユーザー アカウントを削除した後、同じ名前とパスワードの組み合わせでユーザー アカウントを再作成した場合でも、SID が再使用されることは絶対にありません。

セキュリティ保護された通信

セキュリティ保護された通信とは、メッセージの整合性プライバシーを維持しながらネットワーク上でデータ通信を行うことを意味します。セキュリティ保護された通信を実現する技術として、SSL および IPSec があります。

セッション キー

セッション キーとは、2 者間で転送されるデータを暗号化する目的で使用される、ランダム生成の対称キーです。セッション キーは、一度だけ使用され (単一のセッションにのみ使用され)、その後は破棄されます。

宣言的な認定

宣言的な認定は、属性の使用を通じて適用される認定形式の 1 つです。たとえば、.NET には、メソッドに宣言的な認定用の注釈を付けるときに使用できる PrincipalPermissionAttribute クラスが用意されています。

宣言的な認定のサンプルを下に示します。この例では、Manager または Teller のロールのメンバだけが DoPrivMethod を実行できるように制限しています。

[PrincipalPermissionAttribute(SecurityAction.Demand, Role="Teller"),
 PrincipalPermissionAttribute(SecurityAction.Demand, Role="Manager")]
public void DoPrivMethod()
{
}

相互認証

相互認証では、サーバーがクライアントを認証し、クライアントもサーバーを認証します。NTLM は相互認証をサポートしていませんが、Kerberos は相互認証をサポートしています。また、サーバーがクライアント証明書を要求または受理する場合は、SSL で相互認証を行うことも可能です。

ダイジェスト

ハッシュ」を参照。

ダイジェスト認証

ダイジェスト認証は、HTTP 1.1 プロトコルで定義されている認証方法ですが、実際にはあまり使用されていません。この認証方法では、ネットワーク上でクリア テキスト パスワードを転送するのではなく、パスワードのハッシュ (ダイジェスト) を転送します。基本認証よりも高いセキュリティが得られますが、クライアントに Internet Explorer 5.0 以上がインストールされている必要があり、サーバーは、Active Directory と組み合わせて IIS 5.0 を実行している Windows 2000 コンピュータである必要があります。

対称暗号化

対称暗号化では、データの暗号化と解読に同じキー (単一のキー) を使用します。暗号化データの送信元と受信先が共に同じキーを持っている必要があります。

ディクショナリ攻撃

ディクショナリ攻撃は、ハッカーが可能なシークレット キーをすべて試行することで暗号化されたデータを解読しようとする力任せの攻撃方法です。この種の攻撃への対策としては、暗号化されたデータ (またはハッシュされたデータ) と salt 値の併用が有効です。

デジタル署名

デジタル署名は、メッセージの認証とメッセージの整合性維持に使用されます。つまり、メッセージの送信者の有効性を保証すると共に、データが転送中に改ざんされていないことを保証します。データに署名しても、データと共に転送されるデジタル署名文字列が生成されるだけで、データの内容が変更されるわけではありません。

デジタル署名の作成には、公開キー署名アルゴリズム (RSA 公開キー暗号化アルゴリズムなど) を使用します。

トークン

アクセス トークン」を参照。

匿名認証

匿名認証は、IIS の認証方法の 1 つです。この認証方法では、IIS がクライアントの身元の証明を行いません。匿名認証は、認証なしと実質的に同じですが、HTML フォームからクライアントの資格情報を取得する ASP.NET Forms 認証との組み合わせで使用されることがよくあります。

特権

特権とは、システムのシャットダウン、デバイス ドライバのロード、システム時刻の変更など、さまざまなシステム関連の操作をユーザーが実行する権限です。ユーザーのアクセス トークンには、そのユーザー、またはそのユーザーの所属しているグループに付与されている特権の一覧が格納されます。

ドメイン アカウント

ドメイン アカウントは、ドメイン コントローラの SAM データベース、あるいは Active Directory で集中管理される Windows アカウントまたはグループ アカウントです。

認証

認証とは、身元を証明するプロセスです。たとえば、ユーザーが Windows にログオンするときには、Windows がユーザーに資格情報 (ユーザー名とパスワード) を要求してユーザーを認証します。プロセス (プリンシパルの一種) がユーザーに代わってリモート コンピュータに接続するときには、そのプロセスがキャッシュされた資格情報を使ってネットワーク認証要求に応答します。

認定

認定とは、認証されたプリンシパルに対し、そのプリンシパルが要求したリソースへのアクセスまたは要求した操作の実行を許可するかどうかを決定するプロセスです。

ハッシュ

ハッシュとは、データを一意に識別する固定長の数値です。ハッシュ値は、セキュリティ保護されていないチャネルを通じて送信されたデータの整合性確認に役立ちます。受信したデータのハッシュ値を送信時のハッシュ値と比較することで、データが変更されていないかどうかを確認できます。

ハッシュ値は、デジタル署名と共に使用されます。大量のデータを小さいハッシュ値で表すことができるので、メッセージ全体に署名する必要はなく、メッセージのハッシュだけに署名します。

否認不能性

否認不能性とは、特定の操作を実行したユーザーを識別し、自分がその操作を行ったことをユーザーがどのような手段でも否認できないようにすることを意味します。たとえば、ファイルが削除されたときに、その都度、削除を行ったユーザーの ID をシステムが記録する場合などがこれに該当します。

秘密キー

秘密キーは、公開キー アルゴリズムで使用されるキー ペアのシークレット側のキーです。秘密キーは、対称セッション キーの暗号化、メッセージのデジタル署名、または、対応する公開キーで暗号化されたメッセージの解読に使用されるのが典型的な例です。

フォーム認証

フォーム認証は、ASP.NET でサポートされている認証の一種であり、ログオンするユーザーに対して、HTML フォームからログオン資格情報を入力するように要求します。

プライバシー

プライバシーとは、データの秘密と機密性を維持し、ネットワーク監視ソフトウェアを使用している第三者が盗聴できないように保護することを意味します。プライバシーは、通常、暗号化によって実現されます。

プリンシパル

プリンシパルとは、セキュリティ保護されているリソースまたはアプリケーションにアクセスしようとしているエンティティ (ユーザー、コンピュータ、アプリケーション、サービスなど) を指します。プリンシパルは、一意な名前を持っており、なんらかの方法で自分の身元をシステム内の他のプリンシパルに対して証明します。

プレーン テキスト

クリア テキスト」を参照。

プロキシ アカウント

サービス アカウント」を参照。

プロセス ID

プロセス ID は、実行可能プロセスの実行に使用している Windows アカウントによって決まります。たとえば、ASP.NET ワーカー プロセス (aspnet_wp.exe) の既定のプロセス ID は、ASPNET (最低限の特権を持つローカル Windows アカウント) です。

プロセス内のコードがローカル リソースまたはリモート リソースにアクセスするときのセキュリティ コンテキストは、プロセス ID によって決まります。コードが偽装を行う場合は、スレッド トークンによって決定されるスレッドID がリソース アクセスのセキュリティ コンテキストを決定します。

身元 (識別情報、ID)

身元とは、ユーザーまたはサービスを一意に識別できるユーザーまたはサービスの特性を指します。たとえば、ユーザーは、多くの場合、"組織/ユーザー名" の形式の表示名で識別されます。

メッセージ認証コード (MAC)

メッセージ認証コード (MAC) は、整合性を確保するためにメッセージに付加されるハッシュ値です。MAC アルゴリズムでハッシュを生成する場合は、メッセージ データが変更されていないことを受信側で確認できるように、ハッシュ値を再計算するためのセッション キーが受信側のアプリケーションにも必要です。

ユーザー プロファイル

ユーザー プロファイルは、ユーザーの構成情報を維持します。デスクトップの配置、個人用のプログラム グループ、プログラム項目、画面色、スクリーン セーバー、ネットワーク接続などが含まれます。ユーザーが対話形式でログオンすると、そのユーザーのプロファイルがシステムに読み込まれ、プロファイル内の情報に従って環境が構成されます。

プログラムからユーザー プロファイルを読み込むには、LoadUserProfile API を使用します。ASP.NET Web アプリケーションの実行に使用されるローカル ASPNET アカウントなどの非対話形式のアカウントには、ユーザー プロファイルがありません。

ローカル アカウント

ローカル アカウントとは、特定のコンピュータに対してローカルな SAM データベース内に維持、保存される Windows アカウントです。ドメイン アカウントとは異なり、ローカル アカウントはネットワーク リソースへのアクセスに使用できません。ただし、リモート コンピュータ上に (名前とパスワードが同じ) ローカル アカウントを複製した場合は例外です。

ロール

ロールとは、アプリケーション内で同じセキュリティ特権を共有する複数のユーザーをグループ化するために使用される論理識別子 ("Manager" や "Employee" など) です。ロールの種類の例としては、.NET ロール、Enterprise Services (COM+) ロール、SQL Server のデータベース ロールなどがあります。

ログオン セッション

ログオン セッションでは、すべてのプロセスが実行されるセキュリティ コンテキストを定義します。コンピュータに対話形式でログオンすると、対話型ログオン セッションが作成されます。このセッションは、Windows シェルをホストすると共に、対話形式で開始されたすべてのプロセスをホストします。プロセスがユーザーに代わってリモート コンピュータに接続するときには、ユーザーのローカル ログオン セッションにキャッシュされているユーザーの資格情報を使用して、リモート コンピュータからの認証要求が処理されます。認証プロセスが成功すれば、プロセスがリモート コンピュータ上でユーザーに代わって実行する操作を表すネットワーク ログオン セッションがリモート コンピュータ上に確立されます。

patterns and practices home