Sun Java System Directory Server Enterprise Edition 6.3 配備計画ガイド

暗号化手法の決定

暗号化は、転送中のデータや格納されたデータを保護する際に役立ちます。この節では、次のデータ暗号化手法について説明します。

SSL による接続のセキュリティー保護

セキュリティー設計には、ユーザーを特定するための認証スキーマ方式や、情報を保護するためのアクセス制御方式以外の要素も含まれます。サーバーとクライアントアプリケーションとの間でネットワーク経由で送信される情報の完全性も保護する必要があります。

ネットワーク上で安全な通信を可能にするために、SSL (Secure Sockets Layer) 上で LDAP プロトコルと DSML プロトコルの両方を使用することができます。SSL が設定および有効化されると、クライアントはある専用のセキュアポートに接続します。そして、SSL 接続の確立後にすべての通信が暗号化されます。Directory Server と Directory Proxy Server は、Start Transport Layer Security (Start TLS) 制御もサポートします。Start TLS を使えば、クライアントは標準の LDAP ポート上で暗号化接続を開始できます。

Directory Server の SSL と TLS の概要については、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』の第 2 章「Directory Server Security」を参照してください。

格納された属性の暗号化

属性の暗号化は、格納されたデータの保護に関係します。この節では、属性の暗号化機能について説明し、次のトピックを取り上げます。

属性暗号化とは

Directory Server Enterprise Edition は、パスワード認証、証明書に基づく認証、SSL、プロキシ承認など、アクセスレベルでデータを保護するためのさまざまな機能を提供しています。ただし、データベースファイル、バックアップファイル、および LDIF ファイルに格納されたデータも保護する必要があります。属性を暗号化する機能を使用することで、格納されている機密情報にユーザーがアクセスできないように保護できます。

属性の暗号化を使えば、特定の属性を暗号化された形式で格納できます。属性の暗号化はデータベースレベルで設定されます。したがって、ある属性を暗号化すると、その属性がデータベース内のすべてのエントリで暗号化されます。属性の暗号化はエントリレベルではなく属性レベルで行われるため、エントリ全体を暗号化するには、すべての属性を暗号化する必要があります。

属性の暗号化を使えば、データを暗号化された形式で別のデータベースにエクスポートすることもできます。属性の暗号化の目的は、格納またはエクスポートされる機密データを保護することです。したがって、この暗号化は常に可逆です。検索要求の結果として返された場合は、暗号化された属性は復号化されます。

次の図は、データベースに追加されるユーザーエントリを示しています。ここで設定されている属性暗号化は、salary 属性を暗号化します。

図 7–1 属性暗号化のロジック

図では、データベース内で暗号化された属性が示されています。

属性暗号化の実装

属性の暗号化機能は、広範な暗号化アルゴリズムをサポートしています。異なるプラットフォーム間での移植性が保証されています。属性の暗号化は追加のセキュリティー手段として、サーバーの SSL 証明書の非公開鍵を使って自身の鍵を生成します。その後、この鍵は、暗号化および復号化処理を実行するために使用されます。属性を暗号化できるためには、サーバーが SSL 上で稼働している必要があります。SSL 証明書とその非公開鍵はデータベース内に安全に格納され、パスワードで保護されます。この鍵データベースのパスワードはサーバーへの認証時に必要になります。サーバーは、この鍵データベースのパスワードにアクセスできるユーザーであれば、だれもが復号化されたデータのエクスポートを承認されたものとみなします。

属性の暗号化が保護するのは格納された属性だけである点に注意してください。これらの属性をレプリケートする場合には、転送中の属性を保護できるよう、SSL 上でレプリケーションを設定する必要があります。

属性の暗号化を使用する場合、バイナリコピー機能を使ってあるサーバーから別のサーバーを初期化することはできません。

属性の暗号化とパフォーマンス

属性の暗号化を使えばデータのセキュリティーを高められますが、この機能はパフォーマンスに影響を与えます。属性の暗号化は、機密性の特に高い属性を暗号化するためだけに使用してください。

機密データには、インデックスファイル経由で直接アクセスできます。したがって、暗号化する属性に対応するインデックスキーを暗号化することで、それらの属性が完全に保護されるようにする必要があります。インデックスキーを暗号化することによる追加コストがないとしても、インデックスを作成すること自体がすでにパフォーマンスに影響を及ぼします。したがって、データベースにはじめてデータをインポートまたは追加する「前」に、属性の暗号化を設定してください。こうすることで、暗号化された属性には最初からインデックスが付けられます。