(57)【要約】【課題】  SIPメッセージの機密性や完全性を保護するために，通信に先立ってセキュリティパラメータのネゴシエーションが必要であったり，あるいはSIPメッセージを送受する毎に，暗号化処理，復号処理，電子署名処理，電子署名検証のために公開鍵暗号を使用する必要があったりするため，時間がかかる。【解決手段】  SIPサーバやSIPクライアントといった２つのエンティティの間でメッセージを送受する際に，当該エンティティ間で暗号化のための共有情報を共有している場合には当該共有情報で暗号化し，一方，暗号化のための共有情報が共有できていない場合には送信先エンティティの公開鍵によって通信メッセージを暗号化する。  また，暗号化したメッセージは，当該暗号化データ以降の通信において当該暗号化データの送信先エンティティがメッセージを暗号化したり復号したりする場合に使用する共有情報を含んでいる。【選択図】図１
2006276093.tif 000002
【特許請求の範囲】
【請求項１】
暗号化データを作成する暗号化データ作成機能と，通信相手側装置から受信した暗号化データを復号する暗号化データ復号機能と，ネットワークを介して他の装置と暗号化データを送受する通信を行う通信機能と，を備えた，少なくとも二つの装置がネットワークを介して接続されている暗号化データを送受する暗号化データ通信システムであって，
前記装置は，他の装置との間で共有している暗号化処理のための暗号化用共有情報と復号処理のための復号用共有情報を格納する共有情報管理機能をさらに備え，
前記暗号化データ作成機能は，受信側装置との間で共有している復号用共有情報を前記共有情報管理機能から取得して，当該暗号化用共有情報を含んだ暗号化データを作成するものであり，
さらに，前記暗号化データ復号機能は受信した暗号化データから前記暗号化用共有情報を取り出して，当該暗号化用共有情報を復号用共有情報として格納するように前記共有情報管理機能に依頼する
ことを特徴とする暗号化データ通信システム。
【請求項２】
請求項１記載の暗号化データ通信システムであって，
前記暗号化データ作成機能が作成する暗号化データは，前記共有情報管理機能から取得した，受信側装置との間で共有している暗号化用共有情報を使用して暗号化した共通鍵暗号化データであり，
かつ，前記暗号化データ復号機能は，前記共有情報管理機能から取得した，送信元装置との間で共有している復号用共有情報を使用して前記共通鍵暗号化データを復号する
ことを特徴とする暗号化データ通信システム。
【請求項３】
請求項２記載の暗号化データ通信システムであって，
前記装置は，他の装置の公開鍵を管理する公開鍵管理機能と，自装置の秘密鍵を管理する秘密鍵管理機能と，をさらに備え，
前記暗号化データ作成機能は，前記共有情報管理機能から受信側装置との間で共有している暗号化用共有情報を取得できない場合に，前記公開鍵管理機能から受信側装置の公開鍵を取得し，当該公開鍵を使用して暗号化した，公開鍵暗号化データを作成するものであり，
前記暗号化データ復号機能は，前記秘密鍵管理機能から取得した秘密鍵を使用して前記公開鍵暗号化データを復号する
ことを特徴とする暗号化データ通信システム。
【請求項４】
請求項３記載の暗号化データ通信システムであって，
前記暗号化データ作成機能は，前記公開鍵暗号化データには前記秘密鍵管理機能から取得した秘密鍵を使用して電子署名が付与されており，
前記暗号化データ復号機能は，前記公開鍵管理機能から取得した，送信元装置の公開鍵を使用して前記公開鍵暗号化データに付与されている電子署名の検証処理を行う
ことを特徴とする暗号化データ通信システム。
【請求項５】
請求項３記載の暗号化データ通信システムであって，
前記装置は，SIPメッセージの作成や処理を行うSIP通信機能を更に備えたSIPクライアント装置やSIPサーバ装置であって，
前記暗号化データ作成機能が暗号化したり，前記暗号化データ復号機能が復号したりするメッセージはSIPメッセージであって，
かつ，前記SIPクライアント装置上のSIP通信機能がREGISTERメッセージを作成した場合には，当該SIPクライアント装置上の前記暗号化データ作成機能は当該REGISTERメッセージを含む前記公開鍵暗号化データを作成する
ことを特徴とする暗号化SIP通信システム。
【請求項６】
請求項５記載の暗号化SIP通信システムであって，
前記暗号化用共有情報および前記復号用共有情報には有効期限が設定されているものであり，
前記SIPクライアント装置上の前記SIP通信機能は，前記SIPサーバ装置との間で共有している，前記暗号化用共有情報あるいは前記復号用共有鍵情報のいずれかの有効期限が超過した場合には，REGISTERメッセージを作成する
ことを特徴とする暗号化SIP通信システム。
【請求項７】
請求項４記載の暗号化データ通信システムであって，
前記装置は，SIPメッセージ処理を行うSIP通信機能を更に備え，
前記暗号化データ作成機能が暗号化するメッセージと，前記暗号化データ復号機能が復号するメッセージはSIPメッセージであって，
前記公開鍵管理機能はSIP識別子と公開鍵との対応付けを管理する機能を備え，
前記暗号化データ復号機能は，前記暗号化データを復号して得られたSIPメッセージと，当該SIPメッセージを復号するために使用した公開鍵に対応するSIP識別子と，を前記SIP通信機能に渡し，
前記SIP通信機能は，前記SIP識別子が前記SIPメッセージに含まれる送信相手のSIP識別子と一致する場合に，前記SIPメッセージを処理する
ことを特徴とする暗号化SIP通信システム。
【請求項８】
２つの装置の間でメッセージを送受する際にメッセージを暗号化した暗号化データを作成する暗号化データの作成方法であって，
前記暗号化データには，当該暗号化データ以降に送受されるメッセージを処理するために使用する共有情報を含んでいる
ことを特徴とする暗号化データの作成方法。
【請求項９】
請求項８記載の暗号化データの作成方法であって，
前記共有情報とは，前記暗号化データの受信側装置が当該暗号化データ以降に送信するメッセージを暗号化するために使用する暗号化用共有情報である
ことを特徴とする暗号化データの作成方法。
【請求項１０】
請求項９記載の暗号化データの作成方法であって，
前記暗号化用共有情報が既に受信側装置から通知済みである場合に作成される前記暗号化データは，当該共有情報によって暗号化した共通鍵暗号化データである
ことを特徴とする暗号化データの作成方法。
【請求項１１】
請求項９記載の暗号化データの作成方法であって，
前記暗号化用共有情報が未だ受信側装置から通知されていない場合に作成される前記暗号化データは，当該受信側装置の公開鍵によって暗号化した公開鍵暗号化データである
ことを特徴とする暗号化データの作成方法。
【請求項１２】
請求項１０記載の暗号化データの作成方法であって，
前記公開鍵暗号化データは，送信元装置の秘密鍵で電子署名が行われている
ことを特徴とする暗号化データの作成方法。
【請求項１３】
請求項１１記載の暗号化データの作成方法であって，
２つの装置間で送受されるメッセージとはSIPメッセージであり，かつ，REGISTERメッセージを送信する場合には，前記公開鍵暗号化データを作成する
ことを特徴とする，暗号化SIPメッセージの作成方法。
【請求項１４】
請求項８記載の暗号化データの作成方法であって，
前記共有情報とは，前記暗号化データの受信側装置が当該暗号化データ以降に受信するメッセージを復号するために使用する復号用共有情報である
ことを特徴とする暗号化データの作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，サーバおよびクライアントといった，複数のエンティティ間で通信されるSIPメッセージの暗号化方法，および暗号化通信システムに関するものである。
【背景技術】
【０００２】
２つのエンティティ(例えば，装置，または装置上でソフトウェアが実行させることにより具現化されるプロセス)間の通信（IP電話など）を確立するために，SIP (Session Initiation Protocol)というプロトコルが広く利用されてきている（SIPの詳細は，例えば，非特許文献１参照）。
【０００３】
SIPでは，エンティティ（以下，SIPクライアントとも呼ぶ）同士の通信確立処理をSIPサーバと呼ばれるサーバが仲介する仕組みがある。
【０００４】
このとき，SIPクライアントとSIPサーバの間で交換される通信メッセージ（以下，SIPメッセージとも呼ぶ）が盗聴されることにより，SIPメッセージの内容を知られたり，改ざんされたりすることがあり得る。
【０００５】
そこで，SIPメッセージを処理するSIP機能部と，SIPクライアントやSIPサーバの間での通信を行う通信機能部との間に暗号化通信プロトコルであるTLS (Transport Layer Security)や，メッセージ暗号方法であるS/MIME (Secure Multipurpose Internet Mail Extensions) によってSIPメッセージを保護する暗号化機能部を設けることによってSIPメッセージの機密性や完全性を保護する方法が存在する。
【０００６】
TLSは，WWW (World Wide Web）システムにおいて，伝送するアプリケーションデータの機密性や完全性を保護するために広く利用されている暗号化通信プロトコルである（TLSの詳細は，例えば，非特許文献２を参照）。
【０００７】
TLSでは，アプリケーションデータの送信を開始するに先立って，Handshake Protocolと呼ばれるプロトコルを実行し，公開鍵証明書による通信相手の認証を行ったり，暗号化通信に利用する暗号アルゴリズムやハッシュ関数の種類やパラメータをネゴシエーションしたり，ネゴシエーションを行った結果からアプリケーションデータの暗号化に使用する暗号鍵を計算したりする。
【０００８】
一方，S/MIMEは，主に電子メールに対して電子署名を行ったり，暗号化を行ったりするために使用されている暗号化方法である（S/MIMEの詳細は，例えば，非特許文献３を参照）。
【０００９】
S/MIMEでは，アプリケーションデータを送信元の秘密鍵によって電子署名を行った上で，当該電子署名を行ったアプリケーションデータを乱数によって暗号化する。そして，上記暗号化したアプリケーションデータと，送信相手の公開鍵によって暗号化した上記乱数とを一つのメッセージとして送信する（暗号化や電子署名を行ったデータフォーマットの詳細は，例えば，非特許文献４を参照）。
【００１０】
【非特許文献１】IETF,RFC3261“SIP: Session Initiation Protocol”，IETF，2002年6月,[2004年12月20日検索]，インターネット＜URL：http://www.ietf.org/rfc/rfc3261.txt＞
【非特許文献２】IETF,RFC2246“The TLS Protocol Version 1.0”，IETF，1999年1月,[2004年12月20日検索]，インターネット＜URL：http://www.ietf.org/rfc/rfc2246.txt＞
【非特許文献３】IETF,RFC1847“Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted”，IETF，1995年10月,[2004年12月20日検索]，インターネット＜URL：http://www.ietf.org/rfc/rfc1847.txt＞
【非特許文献４】IETF,RFC3369“Cryptographic Message Syntax (CMS)”，IETF，2002年8月,[2004年12月20日検索]，インターネット＜URL：http://www.ietf.org/rfc/rfc3369.txt＞
【発明の開示】
【発明が解決しようとする課題】
【００１１】
TLSは，コネクション型のプロトコルであるTCPで動作することを前提として設計されているため，コネクションレス型のプロトコルであるUDPでは正しく動作しない可能性がある。また，通信を開始するためのネゴシエーションが必要である。  S/MIMEは，通信を開始するためのネゴシエーションが不要であり，さらに，コネクションレス型のプロトコルであるUDPで動作する。その一方で，S/MIMEによって通信メッセージの機密性と完全性を保護する場合，通信メッセージの暗号化処理，復号処理，電子署名処理，電子署名検証のそれぞれで公開鍵暗号を使用しなければならない。
【００１２】
すなわち，従来技術には，SIPメッセージの機密性や完全性を保護するために，通信に先立ってセキュリティパラメータのネゴシエーションが必要であったり，あるいはSIPメッセージの送受信処理毎に，公開鍵暗号を使用する必要があったりするため，時間がかかる，という課題がある。
【００１３】
また，SIPにおいては，SIPメッセージに記載されている，SIP-URIと呼ばれるSIP識別子によってSIPメッセージの発信者や受信者を特定しており，また，TLSやS/MIMEでは公開鍵証明書を用いて通信相手を特定している。
【００１４】
そのため，TLSやS/MIMEによってSIPメッセージを保護する場合には，公開鍵証明書によって特定される通信相手が，SIP識別子によって特定されたSIPメッセージの送信者と一致することを保証するため，公開鍵証明書にはSIP識別子が記載されていなければならない。すなわち，通常，公開鍵証明書にSIP識別子は記載されていないので，SIP通信システムのためにSIP識別子が記載された特別な公開鍵証明書を使用しなければならない，という課題がある。
【課題を解決するための手段】
【００１５】
本発明は，２つのエンティティの間でメッセージを送受する際に，当該エンティティ間で暗号化のための共有情報を共有している場合には，当該共有情報で通信メッセージを暗号化した暗号化データを送信し，一方，暗号化のための共有情報が共有できていない場合には，送信先エンティティの公開鍵によって通信メッセージを暗号化し，さらに送信元エンティティの秘密鍵で電子署名した暗号化データを送信することを主要な特徴とする。
【００１６】
また，本発明は，上記暗号化データには，当該暗号化データ以降の通信において，当該暗号化データの送信先エンティティがメッセージを暗号化したり，復号したりする場合に使用する共有情報を含んでいることを主要な特徴とする。
【００１７】
さらに，本発明は，送信元エンティティの公開鍵証明書とSIP識別子の対応を管理し，上記暗号化データに付加されている公開鍵証明書に対応するSIP識別子と，SIPメッセージ中の送信者のSIP識別子とを比較して，送信者が一致するかどうかを確認することを主要な特徴とする。
【発明の効果】
【００１８】
暗号化のための共有情報を共有していない場合でも，共有情報を共有するためのネゴシエーションが不要であり，メッセージの送信開始にかかる時間を短縮することができる，という効果がある。
【００１９】
また，暗号化のための共有情報を共有している場合には，通信メッセージの暗号化処理・復号処理を高速に実施できる，という効果がある。
【００２０】
さらに，SIP通信のための特別な公開鍵証明書（SIP識別子が記載されている公開鍵証明書）を必要としない，という効果がある。
【発明を実施するための最良の形態】
【００２１】
以下，図面を用いて本発明の実施の形態について説明する。なお，これによって本発明が限定されるものではない。
【００２２】
また，以下，SIPへの適用例を説明するが，SIP以外にも，メッセージの到達を保証する必要のない通信プロトコルや，メッセージの再送を行うような通信プロトコルに対してデータの機密性や完全性を保護する用途にも，本発明は適用できる。
【実施例１】
【００２３】
まず，本発明を適用した第一の暗号化SIP通信システムについて説明する。
【００２４】
図６は，本発明が適用された，第一の暗号化ＳＩＰ通信システムのシステム構成を示した図である。
【００２５】
実施例１のシステムは，ユーザ１が使用するユーザ端末装置１０と，サービス２を提供するアプリケーションサーバ装置２０と，ユーザ端末装置１０とアプリケーションサーバ装置２０との間の通信をＳＩＰ通信によって確立・制御するセッション管理装置３０と，がネットワーク0を介して接続されることにより，構成されている。
【００２６】
ユーザ端末装置１０，アプリケーションサーバ装置２０，セッション管理装置３０の各々は，SIP機能部３０１と，暗号化機能部３０２と，通信機能部３０３と，公開鍵証明書ＤＢ３０４と，セッションＤＢ３０５と，を備えている。
（なお，以降では，ユーザ端末装置１０で動作しているSIP機能部３０１を特に示す場合にはSIP機能部３０１１，アプリケーションサーバ装置２０で動作しているSIP機能部３０１を示す場合にはSIP機能部３０１２，セッション管理装置３０で動作しているSIP機能部３０１を示す場合にはSIP機能部３０１３，などのように表記する。）
SIP機能部３０１は，クライアントアプリケーション１０１やサービス２からの指示に従ってSIPメッセージを作成したり，他の装置で動作しているSIP機能部３０１から暗号化機能部３０２を介して受け取ったSIPメッセージを処理したりする機能を持つ。
【００２７】
暗号化機能部３０２は，SIP機能部３０１からSIPメッセージを受け取ると，暗号化データ５０に加工した上で，通信機能部３０３を介して送信先の暗号化機能部３０２に当該暗号化データ５０を送信したり，あるいは，通信機能部３０３を介して他の暗号化機能部３０２から暗号化データ５０を受け取ると，当該暗号化データ５０からSIPメッセージを取り出してSIP機能部３０１に受け渡したりする機能を持つ。
【００２８】
通信機能部３０３は，クライアントアプリケーション１０１やサービス２や暗号化機能部３０２などから受け取ったデータを他の装置上で動作している通信機能部３０３にネットワーク０を介して送信したり，あるいは，他の装置上で動作している通信機能部３０３から受信したデータをクライアントアプリケーション１０１やサービス２や暗号化機能部３０２に受け渡したりする機能を持つ。
【００２９】
公開鍵証明書DB３０４は， SIP識別子６１と，暗号化機能部３０２が暗号化データ５０を処理するために使用する公開鍵証明書とを関連付けた，通信相手情報６０を格納しているDBであり，暗号化機能部３０２が管理する。
【００３０】
なお，通信相手情報６０は，ある通信相手に対して一つ存在する。例えば，本実施例ではセッション管理装置３０の暗号化機能部３０２３は，ユーザ端末装置１０の暗号化機能部３０２１と，アプリケーションサーバ装置２０の暗号化機能部３０２３と，の２つの暗号化機能部３０２と通信を行うため，セッション管理装置３０の公開鍵証明書DB３０４３にはユーザ１およびサービス２の，２つの通信相手情報６０が格納されている。
【００３１】
図５は，通信相手情報６０の一例を示した図であり，USER1@SIPDOMAIN.JPというSIP識別子６１を持った通信相手に対して発行された公開鍵証明書６２が格納されている。
【００３２】
セッションDB３０５は，セッション情報７０を格納しているDBであり，暗号化機能部３０２が管理する。
【００３３】
なお，本実施例のシステムでは，ある特定の通信相手との通信を一つのセッションとして管理する。セッション情報７０は，当該セッションにおいて現時点で暗号化データ５０の暗号化処理や復号処理のために使用する暗号化鍵情報等を格納したものである。そのため，セッションDB３０５に格納されているセッション情報７０は，ある通信相手に対して一つ存在する。例えば，本実施例ではセッション管理装置３０の暗号化機能部３０２３は，ユーザ端末装置１０の暗号化機能部３０２１と，アプリケーションサーバ装置２０の暗号化機能部３０２３と，の２つの暗号化通信機能部３０２と通信を行うため，セッション管理装置３０のセッションDB３０５３には２つのセッション情報７０が格納されている。
【００３４】
図４は，セッション情報７０の一例を示した図である。
【００３５】
セッション情報７０は，通信相手を特定するために暗号化データ５０に付加されるセッションID７０１と，当該通信相手に送信した暗号化データ５０が過去に送信した暗号化データ５０よりも新しいことを保証するために暗号化データ５０に付加される送信シーケンス番号７０２と，当該通信相手から受信した暗号化データ５０が過去に受信した暗号化データ５０よりも新しいことを確認するために暗号化データ５０に付加されるシーケンス番号を記録した受信シーケンス番号７０３と，受信した暗号化データ５０に付加されていたタイムスタンプを記録した受信タイムスタンプ７０４と，当該通信相手のSIP識別子６１と，暗号化データ５０の作成に使用する暗号化用共有鍵情報７１０と，当該通信相手から受信した暗号化データ５０の処理に使用する復号用共有鍵情報７２０と，から構成される。
【００３６】
ここで，暗号化用共有鍵情報７１０は，当該セッション情報７０において暗号化用共有鍵情報７１０を一意に識別するための暗号化用共有鍵ID７１１と，当該暗号化用共有鍵情報７１０で使用する暗号化アルゴリズムを指定するための暗号化アルゴリズム名７１２と，当該暗号化用共有鍵情報７１０で暗号化に使用する暗号化鍵値７１３と，当該暗号化用共有鍵情報７１０で使用するメッセージ認証アルゴリズムを指定するためのHMAC(Keyed-Hashing for Message Authentication)などのメッセージ認証アルゴリズム名７１４と，当該暗号化用共有鍵情報７１０においてメッセージ認証情報を計算するために使用するシークレット値７１５と，当該暗号化用共有鍵情報７１０の有効期間７１６と，当該暗号化用共有鍵情報７１０を使用して暗号化してよいデータ数の累計をオクテット単位で指定する最大暗号化サイズ７１７と，当該暗号化用共有鍵情報７１０を使用して現在までに暗号化したデータの累計（単位はオクテット）を示す現在暗号化サイズ７１８と，から構成される。
【００３７】
また，復号用共有鍵情報７２０は，当該セッション情報７０において復号用共有鍵情報７２０を一意に識別するための復号用共有鍵ID７２１と，当該復号用共有鍵情報７２０で使用する暗号化アルゴリズムを指定するための暗号化アルゴリズム名７２２と，当該復号用共有鍵情報７２０で復号処理に使用する復号鍵値７２３と，当該復号用共有鍵情報７２０で使用するメッセージ認証アルゴリズムを指定するためのメッセージ認証アルゴリズム名７２４と，当該復号用共有鍵情報７２０においてメッセージ認証情報を計算するために使用するシークレット値７２５と，当該復号用共有鍵情報７２０の有効期間７２６と，当該復号用共有鍵情報７２０を使用して復号してよいデータ数の累計をオクテット単位で指定する最大復号サイズ７２７と，当該復号用共有鍵情報７２０を使用して現在までに復号したデータの累計（単位はオクテット）を示す現在復号サイズ７２８と，から構成される。
【００３８】
セッション情報７０の各情報は，当該セッション情報７０を管理する暗号化機能部３０２によって更新されたり，あるいは送信相手である暗号化機能部３０２によって通知されることによって内容が更新されたりする。
【００３９】
ユーザ端末装置１０は，上記の機能やDB以外に，サービス２を利用するためのクライアントアプリケーション１０１と，公開鍵ペアDB３０７１と，を備えている。
【００４０】
公開鍵鍵ペアDB３０７１は，秘密鍵８１１と，公開鍵８２１と，ユーザ１に対して発行された公開鍵証明書８３１と，を格納したDBであり，暗号化機能部３０２１が管理する。
【００４１】
同様に，アプリケーションサーバ装置２０は，ユーザ１に提供するサービス２と，公開鍵ペアDB３０７２と，を備えている。
【００４２】
公開鍵鍵ペアDB３０７２は，秘密鍵８１２と，公開鍵８２２と，サービス２に対して発行された公開鍵証明書８３２と，を格納したDBであり，暗号化機能部３０２２が管理する。
【００４３】
さらに，セッション管理装置３０は，レジストリDB３０６と，公開鍵ペアDB３０７３と，を備えている。
【００４４】
公開鍵鍵ペアDB３０７３は，秘密鍵８１３と，公開鍵８２３と，セッション管理装置３０に対して発行された公開鍵証明書８３３と，を格納したDBであり，暗号化機能部３０２３が管理する。
【００４５】
レジストリDB３０６は，SIP識別子６１と，当該SIP識別子６１を持つSIP機能部３０１が動作している装置のIPアドレスとの関連付けと，当該関連付けの有効期間とが含まれている，IPアドレス情報８０を格納したDBであり，SIP機能部３０１が管理する。
【００４６】
以上が，本実施例における暗号化SIP通信システムのシステム構成である。
【００４７】
なお，図６に示すユーザ端末装置１０，アプリケーションサーバ装置２０，セッション管理装置３０，の各装置は，例えば，図２に示すような，ＣＰＵ９１と，メモリ９２と，ハードディスク等の外部記憶装置９３と，ＣＤ-ＲＯＭ等の可搬性を有する記憶媒体９９から情報を読み取る読取装置９４と，ネットワークやＬＡＮを介して他装置と通信を行うための通信装置９５と，キーボードやマウス等の入力装置９６と，モニタやプリンタ等の出力装置９７と，これらの各装置間のデータ送受を行うインタフェース９８と，を備えた電子計算機においてＣＰＵ９１がメモリ９２上にロードされた所定のプログラムを実行することにより実現できる。
【００４８】
すなわち，サービス２，クライアントアプリケーション１０１，SIP機能部３０１，暗号化機能部３０２，通信機能部３０３はＣＰＵ９１が所定のプログラムを実行することによるプロセスとして実現できる。
【００４９】
また，公開鍵証明書ＤＢ３０４，セッションＤＢ３０５，レジストリDB３０６は，ＣＰＵ９１がメモリ９２や外部記憶装置９３を利用することにより実現できる。
【００５０】
このような電子計算機上に，上記各装置を実現するための所定のプログラムは，電子計算機が利用可能な記憶媒体９９から読取装置９４を介して導入されてもよいし，あるいは，通信装置９６を介してネットワーク０またはネットワーク０を伝搬する搬送波やデジタル信号といった，電子計算機が利用可能な通信媒体を介して他のサーバから導入されてもよい。
【００５１】
導入に際しては，一旦，外部記憶装置９３に格納された後，そこからメモリ９２上にロードされてＣＰＵ９１に実行されてもよいし，あるいは，外部記憶装置９３に格納されることなく，直接メモリ９２上にロードされて，ＣＰＵ９１に実行されてもよい。
【００５２】
次に，本実施例の暗号化SIPシステムにおいて，通信機能部３０３を介して暗号化機能部３０２の間で送受される暗号化データ５０のフォーマットについて説明する。
【００５３】
本実施例の暗号化データ５０のフォーマットは，公開鍵暗号化メッセージ形式と，共通鍵暗号化メッセージ形式と，エラー通知メッセージ形式，の３種類が存在する。
【００５４】
まず，公開鍵暗号化メッセージ形式の暗号化データ５０のフォーマットについて説明する。
【００５５】
図１は，公開鍵暗号化メッセージ形式の暗号化データ５０のフォーマットについて示した図である。
【００５６】
公開鍵暗号化メッセージ形式の暗号化データ５０は，ヘッダ部５００と，ボディ部５１０と，から構成されている。
【００５７】
ヘッダ部５００は，コンテンツタイプヘッダフィールド５００１と，Content-Lengthヘッダフィールド５００２と，セッションIDヘッダフィールド５００３と，鍵IDヘッダフィールド５００４と，ダイジェスト値フィールド５００５と，から構成されている。
【００５８】
ボディ部５１０は，公開鍵暗号化メッセージボディ５１１に従ったデータが格納される。
【００５９】
公開鍵暗号化メッセージボディ５１１は，受信者情報５１００と，暗号化コンテンツ情報５１１０と，から構成される。
【００６０】
受信者情報５１００は，証明書識別情報フィールド５１０１と，保護対象暗号化鍵フィールド５１０２と，から構成される。
【００６１】
暗号化コンテンツ情報５１１０は，暗号化アルゴリズム名フィールド５１１１と，上位プロトコルデータフィールド５１１２と，署名者情報フィールド５１１３と，ダイジェストアルゴリズム名フィールド５１１４と，ダイジェスト値フィールド５１１５と，シーケンス番号フィールド５１１６と，署名時刻フィールド５１１７と，セッションIDフィールド５１１８と，送信用共有鍵情報フィールド５１２０と，受信用共有鍵情報フィールド５１３０と，署名用ダイジェストアルゴリズム名フィールド５１４１と，署名用暗号アルゴリズム名フィールド５１４２と，署名値フィールド５１４３と，から構成される。
【００６２】
送信用共有鍵情報フィールド５１２０は，送信用共有鍵IDフィールド５１２１と，有効期間フィールド５１２２と，最大暗号化サイズフィールド５１２３と，から構成される。
【００６３】
受信用共有鍵情報フィールド５１３０は，受信用共有鍵IDフィールド５１３１と，暗号アルゴリズム名フィールド５１３２と，鍵値フィールド５１３３と， メッセージ認証アルゴリズム名フィールド５１３４と，メッセージ認証用シークレット値フィールド５１３５と，有効期間フィールド５１３６と，最大復号サイズフィールド５１３７と，から構成される。
【００６４】
以上が，公開鍵暗号化メッセージ形式の暗号化データ５０のフォーマットである。
【００６５】
なお，公開鍵暗号化メッセージボディ５１１には，非特許文献４で定義されたEnvelopedDataオブジェクトを使用してもよい。
【００６６】
また，上位プロトコルデータフィールド５１１２から署名値フィールド５１４３までは，非特許文献４で定義されたSignedDataオブジェクトを使用してもよい。
【００６７】
次に，共通鍵暗号化メッセージ形式の暗号化データ５０のフォーマットについて説明する。
【００６８】
図７に示すとおり，共通鍵暗号化メッセージ形式の暗号化データ５０のフォーマットも，ヘッダ部５００と，ボディ部５１０から構成されている。
【００６９】
ヘッダ部５００は，公開鍵暗号化メッセージ形式のヘッダ部５００と同一である。一方，ボディ部５１０は，公開鍵暗号化メッセージボディ５１１の代わりに共通鍵暗号化メッセージボディ５１２が格納される。
【００７０】
共通鍵暗号化メッセージボディ５１２は，暗号化アルゴリズム名フィールド５２０１と，メッセージ認証アルゴリズム名フィールド５２０２と，上位プロトコルデータフィールド５２０３と，シーケンス番号フィールド５２０４と，セッションIDフィールド５２０５と，送信用共有鍵フィールド５２０６と，受信用共有鍵フィールド５２０７と，メッセージ認証値フィールド５２０８と，から構成されている。
【００７１】
なお，送信用共有鍵フィールド５２０６の詳細は送信用共有鍵フィールド５１２０と同一であり，同様に，受信用共有鍵フィールド５２０７の詳細は受信用共有鍵フィールド５１３０と同一である。
【００７２】
なお，公開鍵暗号化メッセージボディ５１１は，非特許文献４で定義されたEncryptedDataオブジェクトのフォーマットを使用してもよい。さらに，メッセージ認証アルゴリズム名フィールド５２０２からメッセージ認証値フィールド５２０８までは，非特許文献４で定義されたAuthenticatedDataオブジェクトのフォーマットを使用してもよい。
【００７３】
次に，エラー通知メッセージ形式の暗号化データ５０のフォーマットについて説明する。
【００７４】
図１４に示すとおり，エラー通知メッセージ形式の暗号化データ５０のフォーマットも，ヘッダ部５００と，ボディ部５１０から構成されている。ヘッダ部５００は，公開鍵暗号化メッセージ形式のヘッダ部５００と同一である。一方，ボディ部５１０は，公開鍵暗号化メッセージボディ５１１の代わりにエラー通知メッセージボディ５１３が格納される。
【００７５】
エラー通知メッセージボディ５１３は，NOTIFYメッセージフィールド５３０１と，署名者情報フィールド５３０２と，ダイジェストアルゴリズム名フィールド５３０３と，ダイジェスト値フィールド５３０４と，シーケンス番号フィールド５３０５と，署名時刻フィールド５３０６と，セッションIDフィールド５３０７と，鍵IDフィールド５３０８と，署名用ダイジェストアルゴリズム名フィールド５３０９と，署名用暗号アルゴリズム名フィールド５３１０と，署名値フィールド５３１１と，から構成されている。
【００７６】
なお，エラー通知メッセージボディ５１３は，非特許文献４で定義されたSignedDataオブジェクトのフォーマットを使用してもよい
次に，本実施例の暗号化SIP通信システムの動作について説明する。
【００７７】
実施例１のシステムは，登録処理，通信確立処理，通信終了処理，登録消去処理，の４つの処理からなる。
【００７８】
図３は，実施例１のシステムでの４つの処理のクライアントアプリケーション１０１，サービス２，SIP機能部３０１，の各機能間の動作シーケンスの概略を示した図である。
【００７９】
まず，実施例１のシステムでの登録処理において，ユーザ端末装置１０がユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスの関連付けをセッション管理装置３０に登録する場合の，SIP機能部３０１の動作について説明する。
【００８０】
上記の登録処理は，SIP機能部３０１１が，ユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスと，それらの関連付けの有効期間に関する情報が含まれたSIPメッセージ（REGISTERメッセージ４１）を作成し(S1)，暗号化機能部３０２１と暗号化機能部３０２３を介してSIP機能部３０１３に送信する(S2)ことによって行われる。
【００８１】
REGISTERメッセージ４１を受信したSIP機能部３０１３は，暗号化機能部３０２３から通知されたセッション情報７０に記載されているSIP識別子６１が，REGISTERメッセージ４１の送信者のSIP識別子６１と一致するかを確認する(S3)。
【００８２】
ここで，SIP識別子６１が一致した場合には，当該 REGISTERメッセージ４１を処理し，REGISTERメッセージ４１に含まれているユーザ１のSIP識別子６１と，ユーザ端末装置１０のIPアドレスと，有効期間とを一つのエントリとしてレジストリDB３０６に登録する(S3)。
【００８３】
このとき，SIP機能部３０１３は，REGISTERメッセージ４１に含まれている有効期間とは異なる有効期間を設定し，レジストリDB３０６に登録してもよい。
【００８４】
一方，S3でSIP識別子６１が一致しなかった場合，SIP機能部３０１３は当該REGISGERメッセージ４１を不正なメッセージであると判断し，処理を中止する。
【００８５】
次に，SIP機能部３０１３は，REGISTERメッセージ４１に対する応答を含んだSIPメッセージ（応答メッセージ４２）を作成し(S3)，暗号化機能部３０２３と暗号化機能部３０２１とを介してSIP機能部３０１１に送信する(S4)。
【００８６】
なお，レジストリDB３０６への登録に成功した場合には，応答メッセージ４２にはREGISTERメッセージ４１に対する処理が成功したことを通知する状態コードと，レジストリDB３０６に登録した有効期間の情報と，が含まれている。レジストリDB３０６への登録に失敗した場合には，応答メッセージ４２にはREGISTERメッセージ４１に対する処理が失敗したことを通知する状態コードが含まれている。
【００８７】
暗号化機能部３０２３と暗号化機能部３０２１とを介して応答メッセージ４２を受信したSIP機能部３０１１は，応答メッセージ４２の状態コードを確認し，当該状態コードが処理成功を通知する状態コードの場合には，応答メッセージ４２の中に含まれている有効期間の情報を保存する(S5)。
【００８８】
以上が，ユーザ端末装置１０とセッション管理装置３０における，SIP機能部３０１の動作である。
【００８９】
なお，SIP機能部３０１３は，繰り返し(例えば，定期的に)レジストリDB３０６の内容を確認し，レジストリDB３０６の中に有効期間を経過したエントリが存在した場合には，そのエントリを削除する。
【００９０】
一方，SIP機能部３０１１は，保存した有効期間を繰り返し(例えば，定期的に)確認し，有効期間を経過した場合には，再度，上記の登録動作を行うことにより，レジストリDB３０６の中にユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスとの関連付けを記録したエントリが保持されるようにする。
【００９１】
また，同様の動作によって，アプリケーションサーバ装置２０はセッション管理装置３０にサービス２のSIP識別子６１とアプリケーションサーバ装置２０のIPアドレスの関連付けをレジストリDB３０６に登録する。
【００９２】
次に，実施例１のシステムで，アプリケーションクライアント１０１とサービス２との間での通信確立処理の，アプリケーションクライアント１０１，サービス２，およびSIP機能部３０１の動作について説明する。
【００９３】
上記の通信確立処理は，アプリケーションクライアント１０１が，サービス２への通信確立をSIP機能部３０１１に要求することにより，開始される(S6)。
【００９４】
通信確立を要求された，SIP機能部３０１１は，送信元としてユーザ１のSIP識別子６１を含み，かつ，送信先としてサービス２のSIP識別子６１を含むSIPメッセージ（INVITEメッセージ４３）を作成し(S7)，暗号化機能部３０２１を介してSIP機能部３０１３に送信する(S8)。
【００９５】
暗号化機能部３０２１と暗号化機能部３０２３とを介してINVITEメッセージ４３を受信したSIP機能部３０１３は，暗号化機能部３０２３から通知されたセッション情報７０に記載されているSIP識別子６１が，INVITEメッセージ４３の送信者のSIP識別子６１と一致するかを確認する(S9)。SIP識別子６１が一致した場合には，当該INVITEメッセージ４３を処理し，INVITEメッセージ４３の送信先を確認する。
【００９６】
一方，S9でSIP識別子６１が一致しなかった場合，SIP機能部３０１３は当該INVITEメッセージ４３を不正なメッセージであると判断し，処理を中止する。
【００９７】
次に，SIP機能部３０１３は，INVITEメッセージ４３の送信先であるサービス２が動作しているアプリケーションサーバ装置２０のIPアドレスをレジストリDB３０６から検索する(S9)と，暗号化機能部３０２３と暗号化機能部３０２２とを介してINVITEメッセージ４３をSIP機能部３０１２に送信する(S10)。
【００９８】
INVITEメッセージ４３を受信したSIP機能部３０１２は，通信確立要求があったことをサービス２に通知する(S11)とともに，INVITEメッセージ４３に対する応答を含んだSIPメッセージ（応答メッセージ４４）を作成し(S13)，暗号化機能部３０２２を介してSIP機能部３０１３に送信する(S14)。
【００９９】
なお，サービス２は，SIP機能部３０１２から通信確立要求があった旨の通知を受けると通信を開始するための準備を行う(S12)。
【０１００】
また，SIP機能部３０１２が通信を許可する場合には，応答メッセージ４４にはINVITEメッセージ４３に対する処理が成功したことを示す状態コードが含まれている。SIP機能部３０１２が通信を許可しない場合には，応答メッセージ４４にはINVITEメッセージ４３に対する処理が失敗したことを示す状態コードが含まれている。
【０１０１】
暗号化機能部３０２２と暗号化機能部３０２３を介して応答メッセージ４４を受信したSIP機能部３０１３は，暗号化機能部３０２３と暗号化機能部３０２１とを介して応答メッセージ４４をSIP機能部３０１１に送信する(S15)。
【０１０２】
応答メッセージ４４を受信したSIP機能部３０１１は，応答メッセージ４４の状態コードを確認し，当該状態コードがINVITEメッセージ４３に対する処理が成功したことを示す状態コードである場合には，サービス２が通信を許可したことをクライアントアプリケーション１０１に通知する(S16)。
【０１０３】
SIP機能部３０１１から通信許可の通知を受けたクライアントアプリケーション１０１は，サービス２との接続を確立し，通信を開始する(S17)。
【０１０４】
以上が，アプリケーションクライアント１０１とサービス２との間で通信を確立する場合の動作である。
【０１０５】
なお，通信を確立する場合には，上記とは逆に，サービス２がSIP機能部３０１２に通信確立を要求してもよい。この場合には，SIP機能部３０１２が送信元としてサービス２のSIP識別子６１を含み，かつ，送信先としてユーザ１のSIP識別子６１を含むINVITEメッセージ４３を作成し，セッション管理装置３０に送信する。
【０１０６】
次に，実施例１のシステムで，クライアントアプリケーション１０１とサービス２とのでの通信終了処理の，アプリケーションクライアント１０１，サービス２，およびSIP機能部３０１の動作について説明する。
【０１０７】
上記の通信終了の処理は，クライアントアプリケーション１０１が，まず，SIP機能部３０１１に通信切断を要求する(S18)ことによって開始する。
【０１０８】
通信切断を要求された，SIP機能部３０１１は，送信元としてユーザ１のSIP識別子６１を含み，かつ，送信先としてサービス２のSIP識別子６１を含むSIPメッセージ（BYEメッセージ４５）を作成し(S19)，暗号化機能部３０２１と暗号化機能部３０２３とを介してSIP機能部３０１３に送信する(S20)。
【０１０９】
暗号化機能部３０２１と暗号化機能部３０２３とを介してBYEメッセージ４５を受信した SIP機能部３０１３は，暗号化機能部３０２３から通知されたセッション情報７０に記載されているSIP識別子６１が，BYEメッセージ４５の送信者のSIP識別子６１と一致するかを確認する(S21)。SIP識別子６１が一致した場合には，当該BYEメッセージ４５の送信先を確認する(S21)。
【０１１０】
一方，S21でSIP識別子６１が一致しなかった場合，SIP機能部３０１３は当該BYE
メッセージ４５を不正なメッセージであると判断し，処理を中止する。
【０１１１】
次に，SIP機能部３０１３は，BYEメッセージ４５の送信先であるサービス２が動作しているアプリケーションサーバ装置２０のIPアドレスをレジストリDB３０６から検索する(S21)。
【０１１２】
さらに，SIP機能部３０１３は，暗号化機能部３０２３と暗号化機能部３０２２とを介してBYEメッセージ４５をSIP機能部３０１２に送信する(S22)。
【０１１３】
BYEメッセージ４５を受信したSIP機能部３０１２がサービス２に通信切断要求があったことを通知する(S23)と，サービス２は通信を切断するための準備を行う(S24)。
【０１１４】
次に，SIP機能部３０１２は，BYEメッセージ４５に対する応答を含んだSIPメッセージ（応答メッセージ４６）を作成し(S25)，暗号化機能部３０２２と暗号化機能部３０２３とを介してSIP機能部３０１３に送信する(S26)。
【０１１５】
なお，SIP機能部３０１２が切断を許可する場合には，応答メッセージ４６にはBYEメッセージ４５に対する処理が成功したことを示す状態コードが含まれている。SIP機能部３０１２が切断を許可しない場合には，応答メッセージ４６にはBYEメッセージ４３に対する処理が失敗したことを示す状態コードが含まれている。
【０１１６】
応答メッセージ４６を受信したSIP機能部３０１３は，暗号化機能部３０２３と暗号化機能部３０２１とを介して応答メッセージ４６をSIP機能部３０１１に送信する(S27)。
【０１１７】
応答メッセージ４６を受信したSIP機能部３０１１は，応答メッセージ４６の状態コードを確認し，当該状態コードがBYEメッセージ４５に対する処理が成功したことを示す状態コードである場合には，サービス２が通信終了を許可したことをクライアントアプリケーション１０１に通知する(S28)。
【０１１８】
SIP機能部３０１１から通信許可の通知を受けたクライアントアプリケーション１０１は，サービス２との接続を切断し，通信を終了する(S29)。
【０１１９】
以上が，クライアントアプリケーション１０１とサービス２との通信を終了する場合の動作である。
【０１２０】
なお，通信を終了する場合には，上記とは逆に，サービス２がSIP機能部３０１２に通信終了を要求してもよい。この場合には，SIP機能部３０１２が送信元としてサービス２のSIP識別子６１を含み，かつ，送信先としてユーザ１のSIP識別子６１を含むBYEメッセージ４５を作成し，セッション管理装置３０に送信する。
【０１２１】
次に，実施例１のシステムでの登録消去処理のSIP機能部３０１の動作について説明する。
【０１２２】
ここでは，ユーザ端末装置１０が，セッション管理装置３０に登録したユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスの関連付けを消去する場合について説明する。
【０１２３】
上記の消去の処理は，SIP機能部３０１１が有効期間を０に設定したREGISTERメッセージ４１を作成することによって開始される(S30)。
【０１２４】
SIP機能部３０１１は，上記REGISTERメッセージ４１を暗号化機能部３０２１と暗号化機能部３０２３とを介してSIP機能部３０１３に送信する(S31)。
【０１２５】
REGISTERメッセージ４１を受信したSIP機能部３０１３は，暗号化機能部３０２３から通知されたセッション情報７０に記載されているSIP識別子６１が，REGISTERメッセージ４１の送信者のSIP識別子６１と一致するかを確認する(S32)。
【０１２６】
SIP識別子６１が一致した場合には，当該 REGISTERメッセージ４１を処理し，REGISTERメッセージ４１に含まれているユーザ１のSIP識別子６１が記載されたエントリをレジストリDB３０６から消去する。
【０１２７】
一方，S32でSIP識別子６１が一致しなかった場合，SIP機能部３０１３は当該REGISTERメッセージ４１を不正なメッセージであると判断し，処理を中止する。
【０１２８】
次に，SIP機能部３０１３は，REGISTERメッセージ４１に対する応答メッセージ４２を作成し(S32)，暗号化機能部３０２３と暗号化機能部３０２１とを介してSIP機能部３０１１に送信するとともに，暗号化機能部３０２３に上記セッション情報７０を初期化するように指示する(S33)。
【０１２９】
応答メッセージ４２を受信したSIP機能部３０１１は，保存していた有効期間情報を消去するとともに，暗号化機能部３０２１に上記セッション情報７０を初期化するように指示する(S34)。
【０１３０】
以上が，セッション管理装置３０とユーザ端末装置１０でのSIP機能部３０１の動作である。
【０１３１】
同様の動作によって，アプリケーションサーバ装置２０はサービス２のSIP識別子６１とアプリケーションサーバ装置２０のIPアドレスの関連付けを消去する。
【０１３２】
次に，実施例１のシステムにおける暗号化機能部３０２の動作について説明する。
【０１３３】
まず，本実施例のシステムが起動したとき，暗号化機能部３０２はセッションDB３０５の中に存在しているすべてのセッション情報７０を以下のように初期化する。
【０１３４】
まず，セッションID７０１には「NO_SESSION」という文字列を，送信シーケンス番号７０２に０を，受信シーケンス番号７０３に０を，受信タイムスタンプ７０４には「NOT_RECEIVED」という文字列を，SIP識別子６１には当該セッション情報７０が対象としている通信相手のSIP識別子６１を，それぞれ設定する。
【０１３５】
次に，暗号化用共有鍵情報７１０を初期化する。すなわち，暗号化用共有鍵ID７１１には「NO_KEY」という文字列を，暗号アルゴリズム名７１２には「NULL」という文字列を，暗号鍵値７１３には０を，メッセージ認証アルゴリズム名７１４には「NULL」という文字列を，シークレット値７１５には０を，有効期間７１６には現在の時刻の文字列表現を，最大暗号化サイズ７１７には０を，現在暗号化サイズ７１８には０を，それぞれ設定する。
【０１３６】
次に，復号用共有鍵情報７２０を初期化する。すなわち，復号用共有鍵ID７２１には「NO_KEY」という文字列を，暗号アルゴリズム名７２２には「NULL」という文字列を，復号鍵値７２３には０を，メッセージ認証アルゴリズム名７２４には「NULL」という文字列を，シークレット値７２５には０を，有効期間７２６には現在の時刻の文字列表現を，最大復号サイズ７２７には０を，現在復号サイズ７２８には０を，それぞれ設定する。
【０１３７】
次に，すべてのセッション情報７０の初期化が終了すると，暗号化機能部３０２はSIP機能部３０１および通信機能部３０３に初期化動作が終了したことを通知する。
【０１３８】
以上が，本実施例のシステムが起動した時の暗号化機能部３０２の動作である。
【０１３９】
次に，図３においてSIP機能部３０１間でSIPメッセージを送受する場合にSIP機能部３０１が暗号化機能部３０２にSIPメッセージを受け渡した場合の暗号化機能部３０２の動作について説明する。
【０１４０】
図８は，SIP機能部３０１からSIPメッセージを受け取り，当該SIPメッセージを暗号化する場合の暗号化機能部３０２の動作フローを示した図である。
【０１４１】
暗号化機能部３０２は，SIP機能部３０１からSIPメッセージを受け取ると，当該SIPメッセージの送信先を確認し，送信先のSIP識別子６１を含むようなセッション情報７０をセッションDB３０５から取得する（ステップ３０００）。
【０１４２】
次に，当該セッション情報７０の送信シーケンス番号７０２を１つカウントアップする（ステップ３００１）。
【０１４３】
次に，当該セッション情報７０の復号用共有鍵情報７２０が有効であるかどうかを確認する（ステップ３００２）。なお，復号用共有鍵情報７２０が有効であるとは，有効期限７２６が現在の時刻よりも未来で，かつ，現在復号サイズ７２８が最大復号サイズ７２７よりも小さい場合である。
【０１４４】
当該復号用共有鍵情報７２０は有効であると判断した場合（ステップ３００２でYes）には，ステップ３００４に進む。
【０１４５】
当該復号用共有鍵情報７２０は有効でないと判断した場合（ステップ３００２でNo）には，復号用共有鍵情報７２０を更新する（ステップ３００３）。すなわち，復号用共有鍵ID７２１と，復号用共有鍵値７２３と，シークレット値７２５と，にそれぞれに乱数を設定する。同時に，最大復号サイズ７２８に０を，かつ，有効期間７２６に空文字列を，それぞれ設定する。また，暗号アルゴリズム名７２２には使用可能な共通鍵暗号アルゴリズムの名称を設定し，メッセージ認証アルゴリズム名７２４には使用可能なメッセージ認証アルゴリズムの名称を設定する。
【０１４６】
次に，暗号化機能部３０２は，有効な暗号化用共有鍵情報７１０が存在しているかどうかを確認する（ステップ３００４）。暗号化用共有鍵情報７１０が有効であるとは，有効期限７１６が現在の時刻よりも未来で，かつ，現在暗号化サイズ７１８が最大暗号化サイズ７１７よりも小さい場合である。本実施例では，暗号化用共有鍵情報７１０は送信相手から通知されるようにしているため，暗号化用共有鍵情報７１０が有効であれば，有効なセッション情報７０の暗号化用共有鍵情報７１０を送信相手と共有できていると判断する。
【０１４７】
有効な暗号化用共有鍵情報７１０が存在していると判断した場合（ステップ３００４でYes）には，ステップ３０２１に進む。
【０１４８】
暗号化用共有鍵情報７１０が有効でないと判断した場合（ステップ３００４でNo）には，暗号化機能部３０２は，送信先のSIP識別子６１を含むような通信相手情報６０を公開鍵証明書DB３０４から取得し（ステップ３０１１），ステップ３０１２に進む。
【０１４９】
送信先のSIP識別子６１を含むような通信相手情報６０が存在しなかった場合（ステップ３０１２でNo），暗号化機能部３０２はSIP機能部３０１にエラーを通知し，処理を終了する（ステップ３０３１）。
【０１５０】
通信相手情報６０が存在した場合（ステップ３０１２でYes）には，当該通信相手情報６０から送信先の公開鍵証明書６２を取得し，公開鍵暗号化メッセージ形式の暗号化データ５０を作成する（ステップ３０１３）。
【０１５１】
以下，ステップ３０１３において，暗号化機能部３０２が，公開鍵暗号化メッセージ形式の暗号化データ５０を作成する場合の動作について説明する。
【０１５２】
まず，暗号化機能部３０２は，上位プロトコルデータフィールド５１１２にSIP機能部３０１から受け取ったSIPメッセージを設定する。
【０１５３】
次に，暗号化機能部３０２は，署名者情報フィールド５１１３に公開鍵証明書８３を設定する。
【０１５４】
次に，上記SIPメッセージのダイジェスト値をダイジェスト値フィールド５１１５に設定するとともに，当該ダイジェスト値の計算に使用したアルゴリズム名をダイジェストアルゴリズム名フィールド５１１４に設定する。
【０１５５】
次に，送信シーケンス番号７０２をシーケンス番号フィールド５１１６に設定する。
【０１５６】
次に，署名時刻フィールド５１４１に現在の時刻を設定し，セッションIDフィールド５１１８にセッションID７０１を設定する。
【０１５７】
次に，送信用共有鍵IDフィールド５１２１に暗号化用共有鍵ID７１１を，有効期間フィールド５１１に有効期間７１６を，最大暗号化サイズフィールド５１２３に最大暗号化サイズ７１７を，それぞれ設定する。
【０１５８】
次に，受信用共有鍵IDフィールド５１３１に復号用共有鍵ID７２１を，暗号アルゴリズム名フィールド５１３２に暗号アルゴリズム名７２２を，鍵値フィールド５１３３に復号鍵値７２３を，メッセージ認証アルゴリズム名フィールド５１３４にメッセージ認証アルゴリズム名７２４を，メッセージ認証用シークレット値フィールド５１３５にシークレット値７２５を，有効期間フィールド５１３６に有効期間７２６を，最大復号サイズフィールド５１３７に最大復号サイズ７２７を，それぞれ設定する。
【０１５９】
次に，暗号化機能部３０２は，ダイジェスト値フィールド５１１５から受信用共有鍵情報フィールド５１３０までを一連のシーケンスデータとして署名用ダイジェスト値を計算し，計算に使用したダイジェストアルゴリズムの名前を署名用ダイジェストアルゴリズム名フィールド５１４１に設定する。
【０１６０】
さらに，当該署名用ダイジェスト値を秘密鍵８１で暗号化した署名値を作成し，署名値フィールド５１４３に設定するとともに，暗号化に使用した公開鍵アルゴリズムの名前を署名用暗号アルゴリズム名フィールド５１４２に設定する。
【０１６１】
次に，暗号化機能部３０２は，乱数を作成し，上位プロトコルデータフィールド５１１２から署名値フィールド５１４３までを当該乱数によって暗号化するとともに，暗号化に使用した暗号アルゴリズムの名前を暗号化アルゴリズム名フィールド５１１１に記録する。
【０１６２】
次に，暗号化機能部３０２は，送信先の公開鍵証明書６２を証明書識別情報フィールド５１０１に設定するとともに，上記乱数を上記公開鍵証明書６２に含まれている公開鍵で暗号化した値を保護対象暗号化鍵フィールド５１０２に設定する。
【０１６３】
さらに，暗号化機能部３０２は，コンテンツタイプヘッダフィールド５００１に当該暗号化データ５０が公開鍵暗号化メッセージ形式であることを示すため「START」という文字列を格納する。Content-Lengthヘッダフィールド５００２にはボディ部５１０の長さを格納する。セッションIDヘッダフィールド５００３にはセッション情報７０のセッションID７０１を設定する。鍵IDヘッダフィールド５００４には何も設定しない。ダイジェスト値フィールド５００５はボディ部５１０のダイジェスト値と，当該ダイジェスト値を計算するために使用したダイジェストアルゴリズムの識別情報を設定する。
【０１６４】
以上が，暗号化機能部３０２が，公開鍵暗号化メッセージ形式の暗号化データ５０を作成する場合の動作である。
【０１６５】
上記のようにして暗号化データ５０を作成した暗号化機能部３０２は，通信機能部３０３に当該暗号化データ５０の送信を依頼する（ステップ３０１４）して，処理を終了する。
【０１６６】
一方，ステップ３００４で，暗号化用共有鍵情報７１０が有効であると判断した場合，暗号化機能部３０２はステップ３０２１で，共通鍵暗号化メッセージフォーマット５２に従って，SIPメッセージを暗号化した暗号化データ５０を作成する。
【０１６７】
以下，暗号化機能部３０２が共通鍵暗号化メッセージ形式の暗号化データ５０を作成する場合の動作について説明する。
【０１６８】
まず，暗号化機能部３０２は，暗号化アルゴリズム名フィールド５２０１に暗号化アルゴリズム名７１２を，メッセージ認証アルゴリズム名フィールド５２０２にメッセージ認証アルゴリズム名７１４を，上位プロトコルデータフィールド５２０３にSIP機能部３０１から受け取ったSIPメッセージを，セッションIDフィールド５２０５にセッションID７０１を，それぞれ設定する。
【０１６９】
次に，送信用共有鍵フィールド５２０６は送信用共有鍵フィールド５１２０の場合と同様に値を設定する。
【０１７０】
次に，受信用共有鍵フィールド５２０７は受信用共有鍵フィールド５１３０の場合と同様に値を設定する。
【０１７１】
次に，メッセージ認証アルゴリズム名７１４のアルゴリズムとシークレット値７１５を使用して，上位プロトコルデータフィールド５２０３からから受信用共有鍵情報フィールド５２０７までを一連のシーケンスデータを対象としてメッセージ認証値を計算し，メッセージ認証値フィールド５２０８に格納する。
【０１７２】
さらに，暗号化機能部３０２は，コンテンツタイプヘッダフィールド５００１に当該暗号化データ５０が共通鍵暗号化メッセージ形式であることを示すため「CONTINUE」という文字列を格納する。Content-Lengthヘッダフィールド５００２にはボディ部５１０の長さを格納する。セッションIDヘッダフィールド５００３にはセッションID７０１を設定する。鍵IDヘッダフィールド５００４には暗号化用共有鍵ID７１１を設定する。ダイジェスト値フィールド５００５はボディ部５１０のダイジェスト値と，当該ダイジェスト値を計算するために使用したダイジェストアルゴリズムの識別情報を設定する。
【０１７３】
以上が，暗号化機能部３０２が共通鍵暗号化メッセージ形式の暗号化データ５０を作成する場合の動作である。
【０１７４】
上記のようにして暗号化データ５０を作成した暗号化機能部３０２は，現在暗号化サイズ７１８に，メッセージ認証アルゴリズム名フィールド５２０２からメッセージ認証値フィールド５２０９までを一連のシーケンスデータとみなした場合のサイズを加える（ステップ３０２２）と，ステップ３０１４以降の処理を実行する。
【０１７５】
以上が，SIP機能部３０１からSIPメッセージを受け取った場合の暗号化機能部３０２の動作である。
【０１７６】
次に，図３においてSIP機能部３０１間でSIPメッセージを送受する場合に，通信機能部３０３を介して暗号化データ５０を受信した場合の暗号化機能部３０２の動作について説明する。
【０１７７】
図９および図１０は，通信機能部３０３を介して暗号化データ５０を受信した場合の暗号化機能部３０２の動作フローを示した図である。
【０１７８】
まず，暗号化機能部３０２は，通信機能部３０３から暗号化データ５０を受信すると，ボディ部５１０のダイジェスト値を計算し，ダイジェスト値フィールド５００５に格納されている値と一致するかどうかを確認する（ステップ４００１）。
【０１７９】
ここで，ダイジェスト値が一致しなければ（ステップ４００１でNo），伝送エラーが発生したと判断して，処理を終了する。
【０１８０】
一方，ダイジェスト値が一致した場合（ステップ４００１でYes）には，ステップ４００２で，当該暗号化データ５０のコンテンツヘッダフィールド５００１を確認する。コンテンツヘッダフィールド５００１の値が「START」であった場合，暗号化機能部３０２は当該暗号化データ５０が公開鍵暗号化メッセージ形式であると判断し，図１０に示す以下の処理を実行する。
【０１８１】
まず，暗号化機能部３０２は，保護対象暗号化鍵フィールド５１０２の値を公開鍵８２で復号し，保護対象暗号化鍵を取得する（ステップ４１００）。
【０１８２】
次に，ステップ４１０１で，当該保護対象暗号化鍵を使用して，上位プロトコルデータフィールド５１１２から署名値フィールド５１４３までを復号する。
【０１８３】
暗号化機能部３０２は，ダイジェスト値フィールド５１１５から受信用共有鍵情報フィールド５１３０までを一連のシーケンスデータとして署名検証用ダイジェスト値を計算する（ステップ４１０２）。
【０１８４】
署名者情報フィールド５１１３に格納されている公開鍵証明書６２の公開鍵を使用して署名値フィールド５１１４の値を復号した値と，上記署名検証用ダイジェスト値が一致すること，および，ダイジェスト値フィールド５１１５の値と，上位プロトコルデータフィールド５１１２の値をダイジェストアルゴリズム名フィールド５１１４で指定されたアルゴリズムで計算したダイジェスト値と，が一致すること，を確認する（ステップ４１０３）。
【０１８５】
ステップ４１０３でNo，すなわち，どちらか一方でも一致しなければ，署名検証に失敗した，すなわち，当該暗号化データ５０は改ざんされたデータであると判断し，SIP機能部３０１にエラーが発生したことを通知して処理を終了する（ステップ４２０６）。
【０１８６】
一方，ステップ４１０３でYes，すなわち，両方ともに一致した場合には，署名者情報フィールド５１１３に格納されている公開鍵証明書６２が有効であるかどうかを検証する（ステップ４１０４）。
【０１８７】
ここで，公開鍵証明書６２が有効でないと判断した場合（ステップ４１０４でNo）には，送信元に証明書検証失敗を通知するためにエラー通知メッセージ形式の暗号化データ５０を作成する（ステップ４１３１）。
【０１８８】
以下，証明書検証失敗を通知するためにエラー通知メッセージ形式の暗号化データ５０を作成する場合の暗号化機能部３０２のより詳細な動作について説明する。
【０１８９】
まず，暗号化機能部３０２は，NOTIFYメッセージフィールド５３０１に公開鍵証明書６２の検証，すなわち，送信相手の認証に失敗したことを示すために，「AUTH_FAILURE」という文字列と公開鍵証明書６２の組を設定する。
【０１９０】
次に，暗号化機能部３０２は，署名者情報フィールド５３０２に自らの公開鍵証明書を設定する。
【０１９１】
次に，上記NOTIFYメッセージフィールド５３０１のダイジェスト値をダイジェスト値フィールド５３０４に設定するとともに，当該ダイジェスト値の計算に使用したアルゴリズム名をダイジェストアルゴリズム名フィールド５３０３に設定する。
【０１９２】
次に，送信シーケンス番号７０２をシーケンス番号フィールド５３０５に設定する。
【０１９３】
次に，署名時刻フィールド５３０６に現在の時刻を，セッションIDフィールド５３０７にセッションID７０１を，それぞれ設定する。
【０１９４】
次に，暗号化機能部３０２は，鍵IDフィールド５３０８には空の文字列を設定する。
【０１９５】
次に，暗号化機能部３０２は，ダイジェスト値フィールド５３０４から鍵IDフィールド５３０８までを一連のシーケンスデータとして署名用ダイジェスト値を計算し，計算に使用したダイジェストアルゴリズムの名前を署名用ダイジェストアルゴリズム名フィールド５３０９に設定する。
【０１９６】
さらに，当該署名用ダイジェスト値を自らの秘密鍵で暗号化した署名値を作成し，署名値フィールド５３１１に設定するとともに，暗号化に使用した公開鍵アルゴリズムの名前を署名用暗号アルゴリズム名フィールド５３１０に設定する。
【０１９７】
さらに，暗号化機能部３０２は，コンテンツタイプヘッダフィールド５００１に当該暗号化データ５０がエラー通知メッセージ形式であることを示すため「NOTIFY」という文字列を格納する。Content-Lengthヘッダフィールド５００２にはボディ部５１０の長さを格納する。セッションIDヘッダフィールド５００３にはセッション情報７０のセッションID７０１を設定する。鍵IDヘッダフィールド５００４には何も設定しない。ダイジェスト値フィールド５００５はボディ部５１０のダイジェスト値と，当該ダイジェスト値を計算するために使用したダイジェストアルゴリズムの識別情報を設定する。
【０１９８】
以上が，証明書検証失敗を通知するためにエラー通知メッセージ形式の暗号化データ５０を作成する場合の暗号化機能部３０２のより詳細な動作である。
【０１９９】
上記のエラー通知メッセージ形式の暗号化データ５０を作成した暗号化機能部３０２は，通信機能部３０３を介して当該暗号化データ５０を送信相手に返信する（ステップ４１３２）と処理を終了する。
【０２００】
一方，ステップ４１０４で公開鍵証明書６２が有効であると判断した場合（ステップ４１０４でYes）には，公開鍵証明書DB３０４から署名者情報フィールド５１１３に格納された公開鍵証明書６２に対応するSIP識別子６１が存在するかを検索する（ステップ４１０５）。
【０２０１】
ここで，公開鍵証明書DB３０４にSIP識別子６１が存在しなかった場合（ステップ４１０５でNo），処理を終了する。
【０２０２】
一方，公開鍵証明書DB３０４にSIP識別子６１が存在した場合（ステップ４１０５でYes）には，当該SIP識別子６１に対応するセッション情報７０をセッションDB３０５から検索する（ステップ４１０６）。
【０２０３】
次に，暗号化機能部３０２は，セッションIDフィールド５１１８の値を確認する（ステップ４１０７）。
【０２０４】
ステップ４１０７で，セッションIDフィールドの値が「NO_SESSION」であった場合には， 暗号化機能部３０２は，署名時刻フィールド５３０６の値が現在の時刻から予め定められた範囲の時刻であるかを確認する（ステップ４１０８）。
【０２０５】
ステップ４１０８で，署名時刻が現在の時刻から予め定められた範囲よりも過去の場合には，古いメッセージを受信したと判断して処理を終了する。
【０２０６】
一方，ステップ４１０８で署名時刻が現在の時刻から予め定められた範囲よりも未来の場合には，暗号化機能部３０２は通信相手の時刻との間で同期が必要であると判断し，ステップ４１３１で時刻同期を要求するためにエラー通知メッセージ形式の暗号化データ５０を作成して，通信機能部３０３を介して通信相手に返信する（ステップ４１３２）と，処理を終了する。
【０２０７】
なお，時刻同期を要求するためのエラー通知メッセージ形式の暗号化データ５０は，NOTIFYメッセージフィールド５３０１に「TIME_ALIGNMENT_REQUIRED」という文字列が格納されている以外は，証明書検証失敗を通知するためのエラー通知メッセージ形式の暗号化データ５０と同一である。
【０２０８】
一方，ステップ４１０８で署名時刻が現在の時刻から予め定められた範囲に含まれている場合には，暗号化機能部３０２は署名時刻フィールド５３０６の値が受信タイムスタンプ７０４よりも新しいことを確認する（ステップ４１０９）。
【０２０９】
ここで，署名時刻フィールド５３０６の値が受信タイムスタンプ７０４よりも新しくない場合(ステップ４１０９でNo)には，古いメッセージを受信したと判断して処理を終了する。
【０２１０】
一方，署名時刻フィールド５３０６の値が受信タイムスタンプ７０４よりも新しい場合(ステップ４１０９でYes)には，暗号化機能部３０２はセッションDB３０５に格納されているすべてのセッション情報７０と異なる，新規セッションIDを作成する（ステップ４１１０）。
【０２１１】
次に，暗号化機能部３０２は，受信シーケンス番号７０３をシーケンス番号フィールド５１１６の値に，受信タイムスタンプ７０４を署名時刻フィールド５３０６の値に，有効期間７２６を有効期間フィールド５１２２の値に，最大復号サイズ７２７を最大暗号化サイズフィールド５１２３の値に，それぞれ更新する（ステップ４１１２）。
【０２１２】
また，暗号化機能部３０２は，ステップ４１１０で新規セッションIDを作成した場合には，セッションID７０１を当該新規セッションIDに，それ以外の場合にはセッションID７０１をセッションIDフィールド５１１８の値に更新する。
【０２１３】
次に，暗号化機能部３０２は，受信用共有鍵IDフィールド５１３１の値と暗号用共有鍵ID７１１とを比較し，一致するかどうかを確認する（ステップ４１１３）。
【０２１４】
ここで，値が一致した場合(ステップ４１１３でNo)には，共有鍵の更新が不要なので，ステップ４１１５の処理を行う。
【０２１５】
一方，値が一致しなかった場合(ステップ４１１３でYes)には，共有鍵の更新が必要なので，ステップ４１１４で，暗号アルゴリズム７１２を暗号アルゴリズム名フィールド５１３２の値に，暗号鍵値７１３を鍵値フィールド５１３３の値に，メッセージ認証アルゴリズム名フィールド７１４をメッセージ認証アルゴリズム名フィールド５１３４の値に，シークレット値７１５をメッセージ認証用シークレット値フィールド５１３５の値に，それぞれ更新する。また，現在の時刻に予め定められた期間を加算して失効時刻を計算して有効期間７１６に設定し，最大暗号化サイズ７１７に予め定められたサイズを設定する。
【０２１６】
次に，暗号化機能部３０２は，SIP機能部３０１に上位プロトコルデータフィールド５１１２の値をSIPメッセージとして通知する（ステップ４１１５）と処理を終了する。
【０２１７】
なお，このとき，暗号化機能部３０２は上記SIPメッセージとともに上記セッション情報７０をSIP機能部３０１に通知する。  一方，ステップ４１０７で，セッションIDフィールド５１１８の値が「NO_SESSION」以外であった場合には，暗号化機能部３０２は，当該セッションIDフィールド５１１８の値と，ステップ４１０６で検索したセッション情報７０のセッションID７０１と，が同じであるかを検索する（ステップ４１２１）。
【０２１８】
ここで，値が同じであれば，暗号化機能部３０２はステップ４１２２以降を実行する。
【０２１９】
すなわち，暗号化機能部３０２はシーケンス番号フィールド５１１６の値が，正常であること（たとえば，受信シーケンス番号７０３よりも大きいこと）を確認する(ステップ４１２２)。
【０２２０】
ここで，シーケンス番号フィールド５１１６の値が正常でなかった（たとえば，受信シーケンス番号７０３よりも大きくなかった）場合(ステップ４１２２でNo)には古いメッセージを受信したと判断して処理を終了する。
【０２２１】
一方，ステップ４１２２でシーケンス番号フィールド５１１６の値が正常であった（たとえば，受信シーケンス番号７０３よりも大きい）場合(ステップ４１２２でYes)には，暗号化機能部３０２は，送信用共有鍵IDフィールド５２３１と復号用共有鍵ID７２２とを比較し，一致するかどうかを確認する（ステップ４１２３）。
ここで，値が一致しなかった場合(ステップ４１２３でNo)には，処理を終了する。ステップ４１２３でYesの場合，ステップ４１１２以降の処理を実行する。
【０２２２】
一方，ステップ４１２１で，値が同じでなかった場合には，暗号化機能部３０２は，セッションDB３０７を検索し，同じ値のセッションID７０１を持つセッション情報７０が他に存在するかどうかを確認する（ステップ４１３０）。
【０２２３】
ステップ４１３０で，セッション情報７０が存在した場合には，暗号化機能部３０２は署名時刻の確認と新規セッションIDの作成が必要であると判断し，ステップ４１０８以降を実行する。
【０２２４】
一方，ステップ４１３０でセッション情報７０が存在しなかった場合，暗号化機能部３０２はステップ４１１２以降を実行する。
【０２２５】
以上が，ステップ４００２で当該暗号化データ５０が公開鍵暗号化メッセージ形式であると判断した場合の動作である。
【０２２６】
一方，図９のステップ４００２で，コンテンツヘッダフィールド５００１の値が「CONTINUE」であった場合，暗号化機能部３０２は当該暗号化データ５０が共通鍵暗号化メッセージ形式であると判断し，以下の処理を実行する。
【０２２７】
まず，暗号化機能部３０２は，セッションDB３０５からセッションIDヘッダフィールド５００３の値と同じセッションID７０１を持つセッション情報７０を検索する（ステップ４００３）。
【０２２８】
ここで，セッション情報７０が存在しなければ，暗号化機能部３０２は，通信相手の再認証が必要であると判断し，図１０のステップ４１３１で認証を要求するエラー通知フォーマット形式の暗号化データ５０を作成し，通信機能部３０３を介して通信相手に返信する（ステップ４１３２）と，処理を終了する。
【０２２９】
なお，認証を要求するエラー通知メッセージ形式の暗号化データ５０は，NOTIFYメッセージフィールド５３０１に「AUTH_REQUIRED」という文字列が格納され，かつ，セッションIDヘッダフィールド５００３とセッションIDフィールド５３０７には，上記公開鍵暗号化メッセージ形式のセッションIDヘッダフィールド５００３の値が設定され，さらに，鍵IDヘッダフィールド５００４と鍵IDフィールド５３０８には上記公開鍵暗号化メッセージ形式の鍵IDフィールド５００４の値が設定されている以外は，証明書検証失敗を通知するためのエラー通知メッセージ形式の暗号化データ５０と同一である。
【０２３０】
一方，ステップ４００３でセッション情報７０が存在した場合には，鍵IDヘッダフィールド５００４の値と，当該セッション情報に格納されている復号用共有鍵ID７２１と，が一致することを確認する（ステップ４００４）。
【０２３１】
ここで，値が一致しなければ，暗号化機能部３０２は，通信相手の再認証が必要であると判断し，図１０のステップ４１３１で認証を要求するエラー通知フォーマット形式の暗号化データ５０を作成し，通信機能部３０３を介して通信相手に返信する（ステップ４１３２）と，処理を終了する。
【０２３２】
一方，ステップ４００４で値が一致した場合には，復号鍵値７２３を使用してボディ部を復号し，正しく復号できたことを確認する（ステップ４００５）。
【０２３３】
ここで，正しく復号できなければ，暗号化機能部３０２は，通信相手の再認証が必要であると判断し，ステップ４１３１で認証を要求するエラー通知フォーマット形式の暗号化データ５０を作成し，通信機能部３０３を介して通信相手に返信する（ステップ４１３２）と，処理を終了する。
【０２３４】
一方，ステップ４００５で正しく復号できた場合には，受信シーケンス番号７０３よりもシーケンス番号フィールド５２０４の値の方が大きいことを確認する（ステップ４００６）。
【０２３５】
ここで，シーケンス番号フィールド５２０４の値の方が大きくなければ，古いメッセージを受信したと判断し，処理を終了する。
【０２３６】
一方，ステップ４００６でシーケンス番号フィールド５２０４の値の方が大きい場合には，ステップ４００７でセッション情報７０を更新する。
【０２３７】
すなわち，受信シーケンス番号７０３にシーケンス番号フィールド５２０４の値を，復号用共有鍵情報７２０の有効期間７２６に有効期限フィールド５１２２の値を，最大復号サイズ７２７に最大暗号化サイズフィールド５１２３の値を，それぞれ設定するとともに，現在復号サイズ７２８にメッセージ認証アルゴリズム名フィールド５２０２からメッセージ認証値フィールド５２０９までを一連のシーケンスデータとみなした場合のサイズを加える。
【０２３８】
次に，暗号化機能部３０２は，受信用共有鍵IDフィールド５１３１の値と，暗号化用共有鍵ID７１１とが同じであるかを確認する（ステップ４００８）。
【０２３９】
ここで，暗号化用共有鍵ID７１１と同じであった場合には，暗号化用共有鍵ID情報７１０の更新は不要であると判断し，ステップ４０１０を実行する。
【０２４０】
一方，ステップ４００８で暗号化用共有鍵ID７１１と異なる値であった場合には，暗号化用共有鍵ID情報７１０の更新が必要であると判断し，セッション情報７０を更新する。
【０２４１】
すなわち，暗号アルゴリズム７１２を暗号アルゴリズム名フィールド５１３２の値に，暗号鍵値７１３を鍵値フィールド５１３３の値に，メッセージ認証アルゴリズム名フィールド７１４をメッセージ認証アルゴリズム名フィールド５１３４の値に，シークレット値７１５をメッセージ認証用シークレット値フィールド５１３５の値に，それぞれ更新する。同時に，また，有効期間７１６を現在の時刻に予め定められた期間を加算して失効時刻を計算して有効期間７１６に設定し，最大暗号化サイズ７１７を予め定められたサイズを設定する。
【０２４２】
次に，暗号化機能部３０２は，ステップ４０１０で，SIP機能部３０１に上位プロトコルデータフィールド５１１２の値をSIPメッセージとして通知すると処理を終了する。
【０２４３】
なお，このとき，暗号化機能部３０２は上記SIPメッセージとともに上記セッション情報７０をSIP機能部３０１に通知する。  以上が，ステップ４００２で当該暗号化データ５０が共通鍵暗号化メッセージ形式であると判断した場合の動作である。
【０２４４】
一方，ステップ４００２で，コンテンツヘッダフィールド５００１の値が「NOTIFY」であった場合，暗号化機能部３０２は当該暗号化データ５０がエラー通知メッセージ形式であると判断し，以下の処理を実行する。
【０２４５】
まず，暗号化機能部３０２は，ダイジェスト値フィールド５３０４から鍵IDフィールド５３０８までを一連のシーケンスデータとして署名検証用ダイジェスト値を計算する（ステップ４２００）。
【０２４６】
次に，当該署名検証用ダイジェスト値と，署名者情報フィールド５３０２に格納されている公開鍵証明書６２の公開鍵で署名値フィールド５３１１の値を復号して得られたデータと，が一致すること，および，ダイジェスト値フィールド５３０４の値と，NOTIFYメッセージフィールド５３０１の値をダイジェストアルゴリズム名フィールド５３０３で指定されたアルゴリズムで計算したダイジェスト値と，が一致すること，を確認する（ステップ４２０１）。
【０２４７】
ここで，いずれか一方でも一致しなかった場合には，署名検証に失敗した，すなわち改ざんされたメッセージであると判断し，SIP機能部３０１にエラーが発生したことを通知して処理を終了する（ステップ４２０６）。
【０２４８】
一方，両方が一致した場合には，上記公開鍵証明書６２が有効であるかどうかを検証する（ステップ４２０２）。
【０２４９】
ここで，上記公開鍵証明書６２が有効でなかった場合には，改ざんされたメッセージの可能性があると判断し，SIP機能部３０１にエラーが発生したことを通知して処理を終了する（ステップ４２０６）。
【０２５０】
一方，上記公開鍵証明書６２が有効であった場合には，署名時刻フィールド５３０６の値が現在時刻から一定の範囲内の時刻であることを確認する（ステップ４２０３）。
【０２５１】
ここで，署名時刻フィールド５３０６の値が範囲外の時刻であった場合には， NOTIFYメッセージフィールド５３０１の値が「TIME_ALIGNMENT_REQUIRED」であるかを確認する（ステップ４２１１）。
【０２５２】
ここで，NOTIFYメッセージフィールド５３０１の値が「TIME_ALIGNMENT_REQUIRED」以外であった場合には古いメッセージを受信したと判断して処理を終了する。
【０２５３】
一方，ステップ４２１１で，NOTIFYメッセージフィールド５３０１の値が「TIME_ALIGNMENT_REQUIRED」であった場合には，SIP機能部３０１に時刻が同期されていないというエラーが発生したことを通知する（ステップ４２０６）と処理を終了する。
【０２５４】
一方，ステップ４２０３で，署名時刻フィールド５３０６の値が現在の時刻から一定の範囲内の時刻であった場合には，公開鍵証明書DB３０４から署名者情報フィールド５１１３に格納された公開鍵証明書６２に対応するSIP識別子６１を検索し，当該SIP識別子６１に対応するセッション情報７０に含まれる暗号化用共有情報７１０および復号用共有情報７２０を初期状態に更新する（ステップ４２０４）。
【０２５５】
次に，暗号化機能部３０２は，ステップ４２０５で，NOTIFYメッセージフィールド５３０１の値を確認する。
【０２５６】
ここで，NOTIFYメッセージフィールド５３０１の値が「AUTH_REQUIRED」であった場合には，そのまま処理を終了する。
【０２５７】
一方，NOTIFYメッセージフィールド５３０１の値が「AUTH_REQUIRED」以外であった場合には，エラーが発生したことを通知して処理を終了する（ステップ４２０６）。
【０２５８】
以上が，ステップ４００２で当該暗号化データ５０がエラー通知メッセージ形式であると判断した場合の動作である。
【０２５９】
以上が，通信機能部３０３を介して暗号化データ５０を受信した場合の暗号化機能部３０２の動作である。
【０２６０】
本実施例のシステムでは，各装置間で送受されるデータは，暗号化のための共有情報が共有できている場合には，共通鍵暗号化メッセージ形式の暗号化データ５０を使用するため，電子署名の検証や証明書の検証が不要であり，高速に処理が行える。
【０２６１】
一方で，暗号化のための共有情報が共有できていない場合には，公開鍵暗号化メッセージ形式の暗号化データ５０を使用するため，事前のネゴシエーションを行うことなく，通信を開始できる。
【０２６２】
さらに，本実施例のシステムでは，共通鍵暗号化メッセージ形式の暗号化データ５０を作成するための共有情報（暗号化用共有情報７１０）は，当該暗号化データ５０を受信する側が事前に作成して通知するようにしている。このため，セッション情報７０に有効な暗号化用共有情報７１０が存在していることを確認することで，暗号化のための共有情報が共有できていると判断することができる。
【０２６３】
さらに，本実施例のシステムでは，暗号化用共有情報７１０は当該暗号化データ５０を受信する側が作成し，当該暗号化用共有鍵情報７１０の有効期間７１６や最大暗号化サイズ７１８は，当該暗号化データ５０を作成する側が決定して通知するようにしている。このため，相手がセキュリティ強度の弱い暗号アルゴリズムや鍵を含むような暗号化用共有情報７１０を通知してきたとしても有効期限を短くすることや暗号化可能なサイズを小さくすることで，セキュリティ強度を上げることが可能になる。
【０２６４】
なお，本実施例ではSIP識別子６１や公開鍵証明書６２や公開鍵証明書８３はユーザ１やサービス２やセッション管理装置３０に対して発行されるものとしているが，本発明はそれに限定されるものではない。例えば，ユーザ端末装置１０やアプリケーションサーバ装置２０に対して発行されても良いし，さらにはサービス２の提供者に対して発行されていてもよい。
【０２６５】
また，本実施例では公開鍵証明書DB３０４は，暗号化機能部３０２の中に存在しているが，本発明はそれに限定されるものではない。例えば，データベース装置の中に公開鍵証明書DB３０４を配置し，LANあるいはネットワーク０を介してアクセスするようにしてもよい。
【０２６６】
さらに，本実施例では，暗号化アルゴリズム名７１２やメッセージ認証アルゴリズム名７１４や暗号化アルゴリズム名７２２やメッセージ認証アルゴリズム名７２４にはアルゴリズムの名称を文字列で保持しているが，本発明はそれに限定されるものではない。例えば，OIDのように一意に識別可能な情報で保持していてもよい。
【０２６７】
同様に，有効期間７１６（あるいは有効期間７２６）には，当該暗号化用共有鍵情報７１０（当該復号用共有鍵情報７２０）が失効する時刻を文字列で保持しているが，本発明はそれに限定されるものではない。例えば，ある時刻からの経過時間を数値で保持するようにしてもよい。
【０２６８】
また，有効期間フィールド５１２２や有効期間フィールド５１３６も対応する暗号化用共有鍵情報７１０や復号用共有鍵情報７２０が失効する時刻を文字列で保持しているが，本発明はそれに限定されるものではない。例えば，有効期間フィールド５１２２や有効期間フィールド５１３６を設定する際に，失効時刻と現在時刻の差分を計算し，その値を設定するようにしてもよい。
【０２６９】
このとき，受信側の暗号化機能部３０２は，現在時刻に有効期間フィールド５１２２や有効期間フィールド５１３６の値を加えて，失効時刻を計算するようにする。
【０２７０】
また，セッションDB３０５は，暗号化機能部３０２の中に存在しているが，本発明はそれに限定されるものではない。例えば，データベース装置の中にセッションDB３０５を配置し，LANあるいはネットワーク０を介してアクセスするようにしてもよい。
【０２７１】
また，本実施例では，レジストリDB３０６はSIP機能部３０１の中に存在しているが，本発明はそれに限定さるものではない。例えば，レジストリDB３０６をデータベース装置の中に格納し，LANあるいはネットワーク０を介してアクセスするようにしてもよい。
【０２７２】
また，本発明では，公開鍵証明書の検証に失敗したことを通知するためのエラー通知メッセージ形式の暗号化データ５０ではNOTIFYメッセージフィールド５３０１に「AUTH_FAILURE」という文字列と公開鍵証明書６２の組を設定しているが，本発明はそれに限定されるものではない。例えば，公開鍵証明書６２の代わりに，当該公開鍵証明書のダイジェスト値を設定してもよい。
【０２７３】
また，本実施例では，時刻同期を要求するエラー通知メッセージ形式の暗号化データデータ５０
の署名時刻フィールド５３０６には，当該暗号化データ５０を作成した時刻が設定されているが，本発明はそれに限定されるものではない。例えば，署名時刻フィールド５３０６には，当該暗号化データ５０を作成する原因となった，公開鍵暗号化データ形式の暗号化データ５０における署名時刻フィールド５３０６の値を設定してもよい。
【０２７４】
また，本実施例では，セッション情報７０は唯一つの暗号化用共有鍵情報７１０を持っているが，本発明はそれに限定されるものではない。複数の暗号化用共有鍵情報７１０をリストとして管理していてもよい。
【０２７５】
また，本実施例では，セッション情報７０は唯一つの暗号化用共有鍵情報７２０を持っているが，本発明はそれに限定されるものではない。複数の暗号化用共有鍵情報７２０をリストとして管理していてもよい。
【実施例２】
【０２７６】
まず，本発明を適用した第二の暗号化SIP通信システムの実施例について説明する。
【０２７７】
実施例２のシステム構成は，実施例１と似ている。
【０２７８】
だだし，実施例２では，SIP機能部３０１がREGISTERメッセージ４１を送信する場合には必ず公開鍵暗号化メッセージ形式の暗号化データ５０を作成し，かつ，REGISTERメッセージ４１以外のSIPメッセージ（例えば，INVITEメッセージ４３）を送信する場合には必ず共通鍵暗号化メッセージ形式の暗号化データ５０が作成するようにする。
【０２７９】
このため，暗号化機能部３０２はセッションDB３０５に格納されているセッション情報７０を更新する機能を新たに備えており，かつ，SIP機能部３０１は暗号化機能部３０２にセッション情報７０の更新を指示する機能を備えている。
【０２８０】
また，セッション管理装置３０の暗号化機能部３０２３は復号用共有情報７２０だけでなく，暗号化用共有情報７１０も作成する機能を備えている。
【０２８１】
一方，ユーザ端末装置１０の暗号化機能部３０２１やアプリケーションサーバ２０の暗号化機能部３０２２は復号用共有情報７２０を作成する機能が削除されている。
【０２８２】
次に，実施例２における各機能部の動作について説明する。
【０２８３】
図１１は，実施例２において，ユーザ端末装置１０がユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスの関連付けをセッション管理装置３０に登録する場合，および，セッションDB３０５１で管理している，セッション管理装置３０のセッション情報７０において暗号化用共有鍵情報７１０または復号用共有鍵情報７２０が失効した場合のSIP機能部３０１，および暗号化機能部３０２の動作シーケンスを示した図である。
【０２８４】
まず，実施例２で，ユーザ端末装置１０がユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスの関連付けをセッション管理装置３０に登録する場合の動作について説明する。
【０２８５】
本実施例では，まず，SIP機能部３０１１は暗号化機能部３０２１にセッション管理装置３０に対応するセッション情報７０の初期化を指示する(S51)。
【０２８６】
SIP機能部３０１１から指示を受けた暗号化機能部３０２１は，上記セッション管理装置３０に対応するセッション情報７０をセッションDB３０５１から検索し，当該セッション情報７０の暗号化用共有鍵情報７１０と，復号用共有鍵情報７２０と，を初期化する(S52)。
【０２８７】
次に，SIP機能部３０１１はREGISTERメッセージ４１を作成し(S53)，暗号化機能部３０２１および暗号化機能部３０２３を介して，SIP機能部３０１３に当該REGISTERメッセージ４１を伝送する(S54)。
【０２８８】
次に， SIP機能部３０１１からREGISTERメッセージ４１を受信した暗号化機能部３０２１は，図１３の動作に従って，REGISTERメッセージ４１を含む公開鍵暗号化メッセージ形式の暗号化データ５０を作成し(S55)，通信機能部３０３を介して暗号化機能部３０２３に送信する(S56)。
【０２８９】
以下，図１３の動作について説明する。
【０２９０】
図１３は，本実施例における暗号化機能部３０２がSIP機能部３０１からSIPメッセージを受信した場合の動作を示した図である。
【０２９１】
SIP機能部３０１からSIPメッセージを受信した暗号化機能部３０２は，まず，送信先のセッション情報７０を検索する（ステップ６０００）。
【０２９２】
次に，暗号化機能部３０２は，送信シーケンス番号を１増加する（ステップ６００１）。
【０２９３】
次に，暗号化機能部３０２は，セッション情報７０の暗号化用共有鍵情報７１０が有効であるかを確認する（ステップ６００１）。
【０２９４】
ここで，暗号化用共有鍵情報７１０が有効であった場合には，ステップ６０２１以降を実行する。これは，図８におけるステップ３０２１以降の動作と同じであるので，説明を省略する。
【０２９５】
一方，暗号化用共有鍵情報７１０が有効でなかった場合には，ステップ６０１１で，送信相手の公開鍵証明書６２を検索する。
【０２９６】
ここで，公開鍵証明書６２が存在しなかった場合には，SIP機能部３０１にエラーを通知して，処理を終了する（ステップ６０３１）。
【０２９７】
一方，公開鍵証明書６２が存在した場合には，次に，当該暗号化機能部３０２が共有情報の作成機能を持つかどうかを確認する。
【０２９８】
ここで，共有情報の作成機能を持たない場合には，ステップ６０１６以降の処理を実行する。
【０２９９】
一方，共有情報の作成能力を持つ場合には，ステップ６０１４で，暗号化用共有情報７１０を更新する。すなわち，暗号化用共有鍵ID７１１と，暗号鍵値７１３と，シークレット値７１５と，にそれぞれ新規に生成した乱数を設定し，かつ，最大暗号化サイズ７１８に０を，有効期間７１６に空文字列を，それぞれ設定する。同時に，暗号アルゴリズム名７１２には使用可能な共通鍵暗号アルゴリズムの名称を設定し，メッセージ認証アルゴリズム名７１４には使用可能なメッセージ認証アルゴリズムの名称を設定する。また，現在の時刻に予め定められた期間を加算して失効時刻を計算して有効期間７１６に設定し，最大暗号化サイズ７１７に予め定められたサイズを設定する。
【０３００】
さらに，ステップ６０１５で，復号用共有情報７２０を更新する。すなわち，復号用共有鍵ID７２１と，復号鍵値７２３と，シークレット値７２５と，にそれぞれ新規に生成した乱数を設定し，かつ，最大復号サイズ７２８に０を，有効期間７２６に空文字列を，それぞれ設定する。同時に，暗号アルゴリズム名７２２には使用可能な共通鍵暗号アルゴリズムの名称を設定し，メッセージ認証アルゴリズム名７２４には使用可能なメッセージ認証アルゴリズムの名称を設定する。さらには，現在の時刻に予め定められた期間を加算して失効時刻を計算して有効期間７２６に設定し，最大暗号化サイズ７２７に予め定められたサイズを設定する。
【０３０１】
次に，暗号化機能部３０２は，ステップ６０１６を実行する。
【０３０２】
なお，ステップ６０１６以降の処理は，図８のステップ３０１３以降の処理と同じであるので説明を省略する。
【０３０３】
以上が，本実施例における暗号化機能部３０２がSIP機能部３０１からSIPメッセージを受信した場合の動作である。
【０３０４】
なお，本実施例で作成される公開鍵暗号化メッセージ形式の暗号化データ５０には，送信用共有鍵フィールド５１２０の代わりに，拡張送信用共有鍵フィールド５１４０が含まれている。
【０３０５】
図１２は，拡張送信用共有鍵フィールド５１４０の構成を示した図である。
【０３０６】
拡張送信用共有鍵フィールド５１４０は，暗号用共有鍵ID７１１を設定した送信用共有鍵IDフィールド５１４１と，暗号アルゴリズム名７１２を設定した暗号アルゴリズム名フィールド５１４２と，暗号鍵値７１３を設定した鍵値フィールド５１４３と， メッセージ認証アルゴリズム名７１４を設定したメッセージ認証アルゴリズム名フィールド５１４４と，シークレット値７１５を設定したメッセージ認証用シークレット値フィールド５１４５と，有効期間７１６を設定した有効期間フィールド５１４６と，最大暗号化サイズ７１７最大暗号化サイズフィールド５１４７と，から構成される。
【０３０７】
図１１において，暗号化データ５０を受信した暗号化機能部３０２３は，図９および図１０の動作に従って，暗号化データ５０を復号する(S57)と，暗号化データ５０を復号した暗号化機能部３０２３は，REGISTERメッセージ４１に取り出してSIP機能部３０１３に受け渡す(S58)。
【０３０８】
次に，暗号化機能部３０２３は，上記ユーザ１のセッション情報７０に含まれている暗号化用共有鍵情報７１０を初期化する(S59)。
【０３０９】
一方，REGISTERメッセージ４１を受信したSIP機能部３０１３は，当該REGISTERメッセージ４１を処理してIPアドレスを登録すると，応答メッセージ４２を作成する(S60)。
【０３１０】
次に，SIP機能部３０１３は，当該応答メッセージ４２をSIP機能部３０１１に送信するように暗号化機能部３０２３に依頼する(S61)。
【０３１１】
SIP機能部３０１３から応答メッセージ４２を受け取った暗号化機能部３０２３は，図１３の動作に従って，応答メッセージ４２を暗号化する(S63)。
【０３１２】
なお，このとき，上記ユーザ１のセッション情報７０に含まれている暗号化用共有鍵情報７１０は，S59で初期化されているため，暗号化用共有情報７１０と復号用共有情報７２０とは必ず新規に作成される(S62)。
【０３１３】
また，上記セッション情報７０に含まれている復号用共有鍵情報７２０を，S57で復号した上記暗号化データ５０に含まれていた拡張送信用共有鍵フィールド５１４０の値に更新する。
【０３１４】
次に，暗号化機能部３０２３は，上記応答メッセージ４２と，上記暗号化用共有鍵情報７１０と，上記復号用共有鍵情報７２０と，を含んだ公開鍵暗号化メッセージ形式の暗号化データ５０を作成し，通信機能部３０３を介して暗号化機能部３０２１に送信する(S64)。
【０３１５】
暗号化データ５０を受信した暗号化機能部３０２１は，当該暗号化データ５０を復号して，暗号化用共有鍵情報７１０と，復号用共有鍵情報７２０と，を取り出し，上記セッション管理サーバ３０のセッション情報７０を更新する(S65)。
【０３１６】
また，暗号化機能部３０２１は，上記暗号化データ５０を復号して，上記応答メッセージ４２を取り出すと，SIP機能部３０１１に受け渡す(S66)。
【０３１７】
以上が，実施例２における，ユーザ端末装置１０とセッション管理装置３０の動作である。なお，実施例２で，アプリケーションサーバ装置２０がサービス２のSIP識別子６１とアプリケーションサーバ装置２０のIPアドレスの関連付けをセッション管理装置３０に登録する場合の，SIP機能部３０１，暗号化機能部３０２の動作も，上記と同様であるので，説明を省略する。
【０３１８】
次に，セッション管理装置３０のセッション情報７０において暗号化用共有鍵情報７１０または復号用共有鍵情報７２０が失効した場合のSIP機能部３０１，および暗号化機能部３０２の動作について説明する。
【０３１９】
セッション管理装置３０のセッション情報７０において暗号化用共有鍵情報７１０または復号用共有鍵情報７２０が失効した場合(S67)，暗号化機能部３０２１はSIP機能部３０１１に共有情報が失効したことを通知する，失効通知を送信する(S68)。
【０３２０】
失効通知を受信したSIP機能部３０１１は，暗号化機能部３０２１にセッション管理装置３０に対応するセッション情報７０の初期化を指示する(S69)。
【０３２１】
以降のSIP機能部３０１および暗号化機能部３０２の動作(S70〜S84)は，ユーザ端末装置１０がユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスの関連付けをセッション管理装置３０に登録する場合の，SIP機能部３０１，暗号化機能部３０２の動作と同様である。
【０３２２】
実施例２において，上記以外の場合に，各機能部の動作は実施例１の動作と同じである。
【０３２３】
実施例２では，ユーザ端末装置１０やアプリケーションサーバ装置３０の暗号化機能部３０２は，暗号化用共有情報７１０を作成せず，セッション管理装置３０の暗号化機能部３０２で暗号化用共有情報７１０も作成し，通知するようにしている。このため，処理能力が低いユーザ端末装置１０やアプリケーションサーバ装置３０でも安全な共有情報を高速に作成することができる。
【０３２４】
また，実施例２では，暗号化用共有情報７１０や復号用共有情報７２０が有効でなくなった場合に，暗号化機能部３０２はSIP機能部３０１に共有情報が失効したことを通知し，かつ，通知を受けたSIP機能部３０１はREGISTERメッセージ４１を作成するようにし，SIP機能部３０１がREGISTERメッセージ４１以外のSIPメッセージ（例えば，INVITEメッセージ４３）を送信する場合には，常に，共通鍵暗号化メッセージ形式の暗号化データ５０が作成されるようにしている。このため，アプリケーションクライアント１０１とサービス２の接続を高速に実施することができる。
【０３２５】
さらに，実施例２では，SIP機能部３０１がREGISTERメッセージ４１を作成する前には，暗号化機能部３０２の暗号化用共有情報７１０および復号用共有情報７２０を初期化するようにし，REGISTERメッセージ４１は必ず公開鍵暗号化メッセージ形式で暗号化されるようにしている。このため，セッション管理装置３０では，REGISTERメッセージ４１を処理する場合には，同時に，送信元の再認証を行うことができる。
【図面の簡単な説明】
【０３２６】
【図１】実施例における，公開鍵暗号化メッセージ形式の暗号化データ５０のフォーマットを例示した図である。
【図２】図６に示す，ユーザ端末装置１０，アプリケーションサーバ装置２０，セッション管理装置３０の各々のハードウェア構成例を例示する図である。
【図３】実施例における，クライアントアプリケーション１０１，サービス２，SIP機能部３０１，の各機能間の動作シーケンスを例示する図である。
【図４】セッション情報７０の一例を例示した図である。
【図５】通信相手情報６０の一例を例示した図である。
【図６】実施例における，暗号化ＳＩＰ通信システムのシステム構成を例示した図である。
【図７】共通鍵暗号化メッセージの暗号化データ５０のフォーマットを例示した図である。
【図８】SIPメッセージを暗号化する場合の暗号化機能部３０２の動作フローを例示した図である。
【図９】通信機能部３０３を介して暗号化データ５０を受信した場合の暗号化機能部３０２の動作フローを例示した第一の図である。
【図１０】通信機能部３０３を介して暗号化データ５０を受信した場合の暗号化機能部３０２の動作フローを例示した第二の図である。
【図１１】実施例２において，ユーザ１のSIP識別子６１とユーザ端末装置１０のIPアドレスの関連付けをセッション管理装置３０に登録する場合，および，暗号化用共有鍵情報７１０または復号用共有鍵情報７２０が失効した場合の動作シーケンスを例示した図である。
【図１２】拡張送信用共有鍵フィールド５１４０の構成を例示した図である。
【図１３】実施例２における暗号化機能部３０２が，SIP機能部３０１からSIPメッセージを受信した場合の動作を例示した図である。
【図１４】エラー通知メッセージ形式の暗号化データ５０のフォーマットを例示した図である。
【符号の説明】
【０３２７】
１：ユーザ，２：サービス，１０：ユーザ端末装置，２０：アプリケーションサーバ装置，３０：セッション管理装置，４１：REGISTERメッセージ，４２，４４，４６：応答メッセージ，４３：INVITEメッセージ，４５：BYEメッセージ，５０：暗号化データ，６０：通信相手情報，７０：セッション情報，８１：秘密鍵，８２：公開鍵，８３：公開鍵証明書，９１：CPU，９２：メモリ，９３：外部記憶装置，９４：読取装置，９５：通信装置，９６：入力装置，９７：出力装置，９８：インタフェース，９９：記録媒体，１０１：クライアントアプリケーション，３０１：SIP機能，３０２：暗号化機能，３０３：通信機能。
【図１】
2006276093.tif 000003
【図２】
2006276093.tif 000004
【図３】
2006276093.tif 000005
【図４】
2006276093.tif 000006
【図５】
2006276093.tif 000007
【図６】
2006276093.tif 000008
【図７】
2006276093.tif 000009
【図８】
2006276093.tif 000010
【図９】
2006276093.tif 000011
【図１０】
2006276093.tif 000012
【図１１】
2006276093.tif 000013
【図１２】
2006276093.tif 000014
【図１３】
2006276093.tif 000015
【図１４】
2006276093.tif 000016