|
||||||||||||||||||||||||||||||||||||||||||||
Notes/Domino 7.0 のセキュリティ API |
||||||||||||||||||||||||||||||||||||||||||||
Phillipe Loher , Software Engineer, IBM レベル:中級 原文の掲載:2005年7月26日 更 新 日:2005年12月2日更新 Lotus Notes/Domino 7.0 では、新しい暗号化/復号 API が導入されています。 この記事では、Notes/Domino 7 の新しい Notes 暗号化/復号 API に関連するさまざまな機能を取り上げます。ビジネスパートナーや他の Notes 開発者向けに、Notes と S/MIME 暗号化メッセージの読み込みおよび作成機能をどのようにプログラムに組み込むのかを解説します。暗号化されたノート (note) を表示または作成する機能をアプリケーションに実装しなければならない状況は増え続けています。この記事では、これらの機能や他の Notes/Domino 7 セキュリティ機能を実装するために必要な情報を技術面および管理面から明らかにします。 さまざまなケースで、Notes アプリケーションから暗号化された文書へのアクセスが必要です。この記事は、新しい API がどのように機能するのかを理解するために役立ちます。この記事に書かれている実装方法は、実際のアプリケーションのアーキテクチャに合わせて自由にカスタマイズできます。 この記事は、Notes/Domino セキュリティを十分に理解し、Notes/Domino アプリケーション開発者としての経験がある読者を対象としています。Domino のセキュリティ認証モデルに関する知識も役に立ちます。Notes/Domino 7 のセキュリティおよび他の機能の詳細については、developerWorks: Lotus 記事『Lotus Domino 7.0 の新機能』と『Lotus Notes と Domino Designer 7.0 の新機能』を参照してください。
Notes/Domino 7 セキュリティ API の概要新規のセキュリティ API メソッドは、Notes/Domino 7 ランタイム C ライブラリの一部です。NRPC コールを使用できるアプリケーションは、Notes/Domino 7 ランタイムライブラリを使用してこの API にアクセスできます。Notes/Domino 7 に新しい API (Notes/Domino 6.5x で導入されたもののサブセット) が導入される前は、Notes アプリケーションは API の NSFNoteCopyAndEncrypt と NSFNoteDecrypt を使用することにより、Notes 暗号化文書および S/MIME 暗号化文書をそれぞれ読み込み/作成することができました。これらのメソッドは、いくつかの理由により、Notes アプリケーションで使用するには不十分でした。まず、アプリケーションは、SECKFMSwitchToIDFile コールを発行することにより、暗号化または復号を行うユーザーのコンテキストに切り替える必要があります。ユーザー間で (たとえば、管理ユーザーから他のユーザーへ、そして元のユーザーへ) コンテキストを何度も切り替えることは、パフォーマンスに影響します。また、SECKFMSwitchToIDFile を使用するには、ユーザーの ID ファイルが存在し、この ID ファイルが最新の状態でなければなりません。これは、Notes アプリケーションがユーザー ID ファイルを追跡し、ID ファイルに反映される変更 (名前の変更とパブリックキーの変更) を検出する必要があることを意味します。新しい API はこれらの変更を自動的に検出するので、ID ファイルの管理が容易になります。新しいセキュリティ API を使用することは必須ではありませんが、上記のような制限に対して役立ちます。 既存の API である PKCS12_ExportIDFileToFile と PKCS12_ImportFileToIDFile を使用すると、インターネット証明書とキーを ID ファイルにインポートしたり、エクスポートすることができます。インターネット証明書とプライベートキーが ID ファイルに格納されている場合は、S/MIME 暗号化メールの読み込みと S/MIME 署名済みメールの送信が可能です。このメソッドを使用すると S/MIME メッセージを読むことができますが (適切な暗号化エンジンを持っている場合)、これはあまり便利な方法ではなく、S/MIME のデコードのみに使用され、Notes の暗号化メールには使用されません。しかし、新しい API を使用することにより、簡単な方法で Notes 暗号化メッセージと S/MIME 暗号化メッセージの両方にアクセスしたり、これらの暗号化メッセージを作成することができます。
新しい Notes/Domino APIAPI に関するより詳細で正確な説明は、『Lotus C API Notes/Domino 7.0 Reference and User Guide』(英語版) に記載されています。ここでは、この記事で取り上げる API について簡単に説明します。 SECKFMOpen正しい ID ファイル名とパスワードを渡すと、このメソッドは ID ファイルのクリデンシャル (認証情報) へのハンドルを返します。クリデンシャルハンドルは、このリスト内の他の関数に渡すことができるので、SECKFMSwitchToIDFile によるユーザーコンテキストの切り替えが不要になります。適切なクリデンシャルがないと、暗号化/復号は実行できません。 SECKFMClose これは、使用後の SECKFMOpen ハンドルを閉じます。 SECAttachIdFileToDB このメソッドは、ID ファイルをデータベース (例: ユーザーのメールファイル) に安全に添付するために使用します。これによって、ユーザー ID ファイルの管理が容易になるので、ID ファイルを一括して保管するリポジトリを維持する必要がなくなります。添付を行うには、ID ファイルとパスワードを渡す必要があります。ID ファイルは、データベースのプロフィールノートに保管されます (ノートの名前は、関数を呼び出すときに指定します)。 SECExtractIdFileFromDB この関数は、SECAttachIdFileToDB 関数によって添付された ID ファイルを取り出します。適切な ID パスを SECKFMOpen に渡すために、ID ファイルを取り出すことが必要です。 SECRefreshIdFile この関数は、ディレクトリで指定されたユーザーの Notes 証明書の変更、インターネット証明書の変更、およびユーザー名の変更をチェックします。このメソッドには、ID ファイル、パスワード、変更をチェックするサーバー名を渡します。変更が検出された場合は、ID ファイルが更新されます。通常、変更が検出された場合は、SECAttachIdFileToDB を使用して ID ファイルを再添付しなければなりません。ID ファイルを最新の状態に保つために、ID を抽出した後で SECRefreshIdFile を発行する必要があります。 NSFNoteDecrpytExt2 これは、NSFNoteDecryptExt の拡張です。このメソッドに KFM クリデンシャルハンドルを渡すことにより、メッセージを正しく復号できます。 NSFNoteCopyAndEncryptExt2 これは、NSFNoteCopyAndEncrypt の拡張です。このメソッドに KFM クリデンシャルハンドルを渡すことにより、メッセージを正しく暗号化できます。
新しいセキュリティ API の使用暗号化/復号を行うときは、適切な認証情報を使用するために、セキュアな文書への認証情報を持つ Notes ID にアクセスする必要があります。ユーザーの ID ファイルとパスワードを持っている場合は、新しい SECAttachIdFileToDB 関数を使用することで、その ID ファイルをユーザーのメールファイルに添付できます。たとえば、Notes アプリケーションは各ユーザーの ID ファイルを $MyId プロフィール文書 (または他の固有の名前を持つプロフィール文書) に保存できます。一般的に、ユーザー ID とパスワードをユーザーに要求し、これを保存するインターフェースとして、さまざまなものが考えられます。アプリケーションでユーザー ID を要求する場合は、エンドユーザーと製品のアーキテクチャに沿った適切なインターフェースを提供しなければなりません。Domino Web Access を例に取ると、Notes ID は $shimmerid プロフィールとして添付されます。ID のリスト (図 1 参照) を示す Notespeek ツールを使用することにより、$shimmerid 文書が存在することを確認できます。 図 1. Notespeek ID リスト ![]() Domino Web Access には、ユーザーが Notes ID ファイルを添付できるユーザーインターフェースのよいサンプルがあります。図 2 の [セキュリティ] プリファレンスタブに示されているように、ユーザーは Notes ID ファイルを選択し、パスワードを入力することができます。 図 2. [セキュリティ] プリファレンスタブ ![]() 開発するアプリケーションに、ユーザーからのアクセスが可能な同様の GUI を組み込むことができます。ユーザーが ID とパスワードを提供すると、Notes アプリケーションは SECAttachIdFileToDB を呼び出し、ID ファイルをメールファイルに添付します。Notes アプリケーションは、メッセージを暗号化または復号するときに、この ID ファイルとパスワードにアクセスできなければなりません。また、ユーザーのデータ (ID ファイルとパスワード) はセキュリティ上の機密情報なので、Notes アプリケーションはこれらのデータをセキュアに扱う必要があります。 さらに、このメソッドにより、必要な場合に新しい ID を再添付する機能がアプリケーションのユーザーに与えられます。たとえば、ユーザーが新しいパブリックキー/プライベートキーを要求したときは、新たに暗号化されたメッセージにアクセスするために、新しい ID ファイルを添付する必要があります。 添付された ID を使用して暗号化されたメッセージを読む アプリケーションは、文書が暗号化されているかどうかを判断する必要があります。これを行うには、Notes API メソッドの NSFNoteIsSignedOrSealed を使用します。文書が暗号化されていると判断された場合、アプリケーションは新しいセキュリティ API を利用できます。この API を使用するときは、次の手順を参考にしてください。
添付された ID を使用して、暗号化したメッセージを作成する アプリケーションでメッセージの暗号化が必要なときは、新しいセキュリティ API を使用できます。この API を使用するときは、次の手順を参考にしてください。
Notes ID 管理の他の概念アプリケーションでは、さまざまなユーザーに対しメッセージの暗号化または復号を可能にするケースも考えられます。このような場合、それぞれの ID ファイルを個別に添付するのは不便です。このプロセスを簡単にするために、複数の ID ファイルを一括して添付するツールを Notes アプリケーションで作成することができます。 ![]() ユーザーの既存のパスワードと新しいパスワードを収集するインターフェースを提供するケースもあります。このインターフェースからデータをアプリケーションに転送します。これを行う手順は、次のようになります。
まとめこの記事では、Notes/Domino 7 に導入された新しいセキュリティ API について紹介しました。また、これらの API の使い方を説明し、実践的なアプリケーションのサンプルも示しました。この記事がお役に立つことを願っています。この他にも、記事で取り上げてほしい Notes/Domino セキュリティ関連のトピックがありましたら、お気軽にご提案ください。
リソース
|
||||||||||||||||||||||||||||||||||||||||||||