属性暗号化機能を実装するときは、次の点を考慮してください。
一般に、属性暗号化の設定を変更するときは、データをエクスポートし、変更を加えた上で、新たに設定されたデータをインポートする必要があります。
これにより、機能が喪失することなく、すべての設定変更が全体として適用されます。このような方法で行わなかった場合、一部の機能が喪失し、データのセキュリティーが危険にさらされる可能性があります。
既存のデータベースに対する属性暗号化の設定を変更すると、システムのパフォーマンスに大きく影響することがあります。
たとえば、既存のデータが格納されたデータベースインスタンスについて考えてみましょう。このデータベースには、mySensitiveAttribute という属性を持つエントリが格納されています。その属性の値は、データベースとインデックスファイルにクリアテキストで格納されているものとします。この状態で、あとから、mySensitiveAttribute 属性を暗号化しようとすると、属性暗号化の設定を適用するためにサーバーがデータベースとインデックスファイルを更新する必要があり、データベースインスタンス内のすべてのデータはエクスポートされ、データベースに再びインポートされます。これにより、パフォーマンスに大きな影響が生じます。この結果生じるパフォーマンスの問題は、もし、この属性を最初から暗号化していれば回避できるはずです。
復号化された形式でデータをエクスポートするときに、誤ったパスワードを使用するとエクスポートが拒否されます。
データを復号化された形式でエクスポートしようとすると、セキュリティー保護のために、ユーザーにパスワードの入力を求めるプロンプトが表示されます。ユーザーが誤ったパスワードを入力すると、サーバーにより復号化されたデータのエクスポート操作が拒否されます。パスワードは、直接入力するか、パスワードが含まれているファイルへのパスを指定することで入力できます。このファイルには、SSL パスワードファイルと同じ構文があります。「証明書データベースパスワードの設定」を参照してください。
dsconf コマンドで -–decrypt-attr オプションを使用するには、set password prompt を on に設定し、「証明書データベースパスワードの設定」で説明するように、証明書データベースパスワードを選択している必要があります。
アルゴリズムの変更はサポートされていますが、正しく作成されていない場合、インデックス付け機能は失われる可能性があります。
データの暗号化に使用するアルゴリズムを変更するには、データをエクスポートし、属性の暗号化設定を変更してから、データをインポートします。この手順どおりに行わない場合、内部暗号化アルゴリズムに基づいて作成されたインデックスは機能しなくなります。
暗号化された属性は使用する暗号化アルゴリズムを指定する暗号化方式タグの前に置かれるため、データのインポートは内部サーバー操作が処理します。このため、Directory Server では、アルゴリズムを変更する前に、データを暗号化された形式でエクスポートできます。
サーバーの SSL 証明書を変更すると、暗号化されたデータを復号化できなくなります。
サーバーの SSL 証明書は、属性暗号化機能で独自の鍵の生成に使用され、そのあと暗号化および復号化操作の実行に使用されます。このため、SSL 証明書は暗号化されたデータの復号化に必要です。前もってデータを復号化しないで証明書を変更すると、データは復号化できません。これを回避するには、復号化された形式でデータをエクスポートし、証明書を変更してからデータをインポートしてください。
暗号化されたデータを伝送する、つまり、サーバーインスタンス間でエクスポートとインポートを行うには、両方のサーバーインスタンスが同じ証明書を使用する必要があります。
詳細は、『Sun Java System Directory Server Enterprise Edition 6.3 管理ガイド』の「属性値の暗号化」を参照してください。