このマニュアルでは、Solaris オペレーティングシステム (Solaris OS) のセキュリティー機能に対する公開アプリケーションプログラミングインタフェース (API) と公開サービスプロバイダインタフェース (SPI) について説明します。
この章の内容は次のとおりです。
このマニュアルでは、Solaris オペレーティングシステムのセキュリティー機能に対する公開 API と公開 SPI について説明します。システム管理者の視点から見たこれらのセキュリティー機能の動作については、『Solaris のシステム管理 (セキュリティサービス)』の第 1 章「セキュリティーサービス (概要)」を参照してください。
Solaris OS は、業界標準のインタフェースに基づくネットワークセキュリティーアーキテクチャーを提供します。標準化されたインタフェースを使用すれば、暗号化サービスを使用または提供するアプリケーションを、セキュリティー技術の進歩に合わせて変更する必要がなくなります。
システムのセキュリティーに関して、Solaris OS はプロセス特権を提供します。「プロセス特権」は、特権付きアプリケーションへのアクセス許可を行う際に、スーパーユーザーベースの UNIX 標準モデルに対する代替技術として使用できます。システム管理者は、特権付きアプリケーションへのアクセスを許可する一連のプロセス特権をユーザーに付与します。そうしたユーザーは、スーパーユーザーにならなくても、特権付きアプリケーションを使用できます。
特権を使用すれば、システム管理者は、システムセキュリティーを無視する権限をユーザーに与える際に、完全なスーパーユーザー権限ではなく制限された権限を与えることができます。したがって、新しい特権付きアプリケーションを作成する開発者は、UID が 0 かどうかを検査するのではなく、特定の特権の有無を検査する必要があります。第 2 章特権付きアプリケーションの開発を参照してください。
きわめて強固なシステムセキュリティーが必要な場合には、Oracle Solaris の Trusted Extensions 機能の使用を検討してください。Trusted Extensions 機能を使用すれば、システム管理者は、特定のユーザーだけがアクセスできるアプリケーションやファイルを指定できます。Trusted Extensions 機能はこのマニュアルの対象外です。詳細については、http://www.sun.com/software/solaris/ds/trusted_extensions.jsp を参照してください。
ネットワークセキュリティーアーキテクチャーは、PAM、GSS-API、SASL、RSA Security Inc. PKCS#11 Cryptographic Token Interface (Cryptoki) といった業界標準のインタフェースに対応しています。標準化されたプロトコルやインタフェースを使用することで、開発者は、セキュリティー技術が進歩しても変更する必要のないコンシューマとプロバイダを記述できます。
セキュリティーサービスを使用するアプリケーション、ライブラリ、またはカーネルモジュールは「コンシューマ」と呼ばれます。コンシューマにセキュリティーサービスを提供するアプリケーションは、「プロバイダ」または「プラグイン」と呼ばれます。暗号化処理を実装するソフトウェアは「機構」と呼ばれます。機構は単なるアルゴリズムではなく、アルゴリズムの適用方法も含んだ概念です。たとえば、ある機構は DES アルゴリズムを認証に適用します。一方、別の機構は DES をデータ保護 (ブロック単位の暗号化) に適用します。
ネットワークセキュリティーアーキテクチャーを使えば、コンシューマ開発者が暗号化アルゴリズムを記述、保守、および最適化する必要がなくなります。最適化された暗号化機構が、アーキテクチャーの一部として提供されます。
Solaris OS が提供する公開 Solaris セキュリティーインタフェースは、次のとおりです。
PAM – プラグイン可能な認証モジュール (Pluggable Authentication Module)。PAM モジュールは主に、初期段階でシステムに対してユーザーを認証する際に使用されます。ユーザーはログイン時に、GUI、コマンド行、またはその他の方法を使用できます。PAM は、認証サービスのほかに、アカウント、セッション、およびパスワードを管理するためのサービスも提供します。login、rlogin、telnet などのアプリケーションは、PAM サービスの一般的なコンシューマです。PAM SPI は、Kerberos v5 やスマートカードといったセキュリティープロバイダからサービスを提供されます。第 3 章PAM アプリケーションおよび PAM サービスの記述を参照してください。
GSS-API – 汎用セキュリティーサービスアプリケーションプログラムインタフェース (Generic Security Service Application Program Interface)。GSS-API は、ピアとなるアプリケーション間のセキュリティー保護された通信を可能にします。また、GSS-API は認証、整合性、機密性の各保護サービスも提供します。GSS-API の Solaris 実装は、Kerberos v5、SPNEGO、および Diffie-Hellman 暗号化に対応しています。GSS-API は主に、セキュリティー保護されたアプリケーションプロトコルを設計または実装する際に使用されます。GSS-API は、SASL など、ほかの種類のプロトコルに対してサービスを提供できます。GSS-API は、SASL 経由で LDAP にサービスを提供します。
一般に、GSS-API は、初期の資格確立後にネットワーク上で通信している 2 つのピアとなるアプリケーションによって使用されます。特に GSS-API は、ログインアプリケーション、NFS
、および ftp
によって使用されます。
GSS-API の概要については、第 4 章GSS-API を使用するアプリケーションの記述を参照してください。第 5 章GSS-API クライアント例と第 6 章GSS-API サーバー例では、2 つの一般的な GSS-API アプリケーションのソースコードについて説明します。付録 A C ベース の GSS-API プログラム例では、GSS-API のソースコード例を提供します。付録 B GSS-API リファレンス では、GSS-API のリファレンス情報を提供します。付録 C OID の指定 では、デフォルト以外の機構を指定する方法を説明します。
SASL – 簡易認証セキュリティー層 (Simple Authentication and Security Layer)。SASL は主に、認証、機密性、データ整合性を必要とするプロトコルによって使用されます。SASL は、セキュリティー機構の動的折衝を使用してセッションを保護する、比較的高レベルのネットワークベースアプリケーション向けに設計されています。LDAP は著名な SASL コンシューマの 1 つです。SASL は GSS-API に似ていますが、SASL のほうが GSS-API よりもいくぶん高レベルです。SASL は GSS-API サービスを使用します。第 7 章SASL を使用するアプリケーションの記述を参照してください。
暗号化フレームワーク – 暗号化フレームワークは、Solaris OS の暗号化サービスの土台です。このフレームワークは、暗号化サービスのコンシューマとプロバイダに対し、標準の PKCS #11 インタフェースを提供します。このフレームワークは 2 つの部分から構成されています。 1 つはユーザーレベルアプリケーション用のユーザー暗号化フレームワーク、もう 1 つはカーネルレベルモジュール用のカーネル暗号化フレームワークです。フレームワークに接続するコンシューマは、インストールされている暗号化機構に関する特別な知識を要求されません。フレームワークにプラグインするプロバイダは、さまざまな種類のコンシューマが要求する特別なコードを用意する必要がありません。
暗号化フレームワークのコンシューマとしては、セキュリティープロトコル、特定の機構、暗号化を必要とするアプリケーションなどが挙げられます。このフレームワークのプロバイダとなるのは、ハードウェアプラグインやソフトウェアプラグイン内の暗号化機構やその他の機構です。暗号化フレームワークの概要については、第 8 章Oracle Solaris 暗号化フレームワークの紹介を参照してください。このフレームワークのサービスを使用するユーザーレベルアプリケーションの記述方法を学ぶには、第 9 章ユーザーレベルの暗号化アプリケーションとプロバイダの記述を参照してください。
暗号化フレームワークのライブラリは、RSA PKCS#11 v2.11 仕様を実装したものです。コンシューマとプロバイダはどちらも、標準 PKCS #11 呼び出しを使ってユーザーレベル暗号化フレームワークと通信します。
スマートカード – スマートカード端末用 IFD ハンドラの開発者は、スマートカードフレームワークの端末インタフェース経由で、コンシューマにサービスを提供できます。これらのインタフェースについては、第 10 章スマートカードフレームワークの使用を参照してください。
Java API – Java セキュリティーテクノロジには多数の API やツールのほか、一般的に使用されるセキュリティーアルゴリズム、機構、およびプロトコルの実装が含まれています。Java セキュリティー API は、暗号化や公開鍵インフラストラクチャー、セキュリティー保護された通信、認証、アクセス制御など、広範な領域をカバーします。Java セキュリティーテクノロジは、アプリケーションを記述するための包括的なセキュリティーフレームワークを開発者に提供するとともに、アプリケーションを安全に管理するためのツール群をユーザーや管理者に提供します。http://java.sun.com/javase/technologies/security/ を参照してください。