(57)【要約】【課題】鍵の事前共有を必要としない暗号通信システム、セキュアエレメント、デバイス、サーバ、コンピュータプログラム及び暗号通信方法を提供する。【解決手段】セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、生成したセキュアエレメント公開鍵をサーバへ出力するセキュアエレメント出力部とを備え、サーバは、セキュアエレメント公開鍵を取得して登録するサーバ登録部と、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、生成したサーバ公開鍵をセキュアエレメントへ出力するサーバ出力部とを備え、セキュアエレメントは、さらに、サーバ公開鍵を取得して登録するセキュアエレメント登録部を備える。【選択図】図１
2020202505.tif 000002
【特許請求の範囲】
【請求項１】
サーバと、セキュアエレメントを搭載するデバイスとを備える暗号通信システムであって、
前記セキュアエレメントは、
セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、
前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部と
を備え、
前記サーバは、
前記セキュアエレメント出力部から出力されたセキュアエレメント公開鍵を取得して登録するサーバ登録部と、
サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、
前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部と
を備え、
前記セキュアエレメントは、さらに、
前記サーバ出力部から出力されたサーバ公開鍵を取得して登録するセキュアエレメント登録部を備え、
前記サーバは、
登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、
前記セキュアエレメントは、
登録されたサーバ公開鍵に基づく暗号通信を行う暗号通信システム。
【請求項２】
前記セキュアエレメントは、
登録したサーバ公開鍵を用いて所定のセキュアエレメント情報を暗号化するセキュアエレメント第１暗号化部を備え、
前記セキュアエレメント出力部は、
前記セキュアエレメント第１暗号化部で暗号化されたセキュアエレメント情報を前記サーバへ出力し、
前記サーバは、
前記サーバ秘密鍵を用いて前記暗号化されたセキュアエレメント情報を復号するサーバ第１復号部と、
登録したセキュアエレメント公開鍵を用いて所定のサーバ情報を暗号化するサーバ第１暗号化部を備え、
前記サーバ出力部は、
前記サーバ第１暗号化部で暗号化されたサーバ情報を前記セキュアエレメントへ出力し、
前記セキュアエレメントは、さらに、
前記セキュアエレメント秘密鍵を用いて前記暗号化されたサーバ情報を復号するセキュアエレメント第１復号部を備える請求項１に記載の暗号通信システム。
【請求項３】
前記サーバは、
前記サーバ第１復号部で復号したセキュアエレメント情報及び前記サーバ情報を用いて共通鍵を生成するサーバ共通鍵生成部を備え、
前記セキュアエレメントは、
前記セキュアエレメント第１復号部で復号したサーバ情報及び前記セキュアエレメント情報を用いて共通鍵を生成するセキュアエレメント共通鍵生成部を備え、
前記セキュアエレメント共通鍵生成部で生成した共通鍵を前記デバイスへ出力し、
前記サーバ及びデバイスは、
前記共通鍵に基づく暗号通信を行う請求項２に記載の暗号通信システム。
【請求項４】
前記セキュアエレメントは、
前記セキュアエレメント秘密鍵を用いてセキュアエレメント識別情報を暗号化するセキュアエレメント第２暗号化部を備え、
前記セキュアエレメント出力部は、
前記セキュアエレメント第２暗号化部で暗号化されたセキュアエレメント識別情報を前記サーバへ出力し、
前記サーバは、
取得したセキュアエレメント公開鍵を用いて前記暗号化されたセキュアエレメント識別情報を復号するサーバ第２復号部を備え、
前記サーバ登録部は、
前記サーバ第２復号部で復号したセキュアエレメント識別情報に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する請求項３に記載の暗号通信システム。
【請求項５】
前記サーバは、
前記サーバ秘密鍵を用いてサーバ識別情報を暗号化するサーバ第２暗号化部を備え、
前記サーバ出力部は、
前記サーバ第２暗号化部で暗号化されたサーバ識別情報を前記セキュアエレメントへ出力し、
前記セキュアエレメントは、
取得したサーバ公開鍵を用いて前記暗号化されたサーバ識別情報を復号するセキュアエレメント第２復号部を備え、
前記セキュアエレメント登録部は、
前記セキュアエレメント第２復号部で復号したサーバ識別情報に基づいて、取得したサーバ公開鍵の登録可否を判定する請求項３又は請求項４に記載の暗号通信システム。
【請求項６】
前記セキュアエレメントは、
前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵に関する認証を認証局サーバへ要求するセキュアエレメント認証要求部を備え、
前記セキュアエレメント出力部は、
前記認証局サーバによる認証が得られた場合、前記セキュアエレメント公開鍵を前記サーバへ出力する請求項３から請求項５のいずれか一項に記載の暗号通信システム。
【請求項７】
前記セキュアエレメントは、
前記認証局サーバによる認証が得られた場合、前記認証局サーバが生成した認証局署名を取得するセキュアエレメント取得部を備え、
前記セキュアエレメント出力部は、
前記セキュアエレメント取得部で取得した認証局署名を前記サーバへ出力し、
前記サーバ登録部は、
前記認証局署名の検証結果に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する請求項６に記載の暗号通信システム。
【請求項８】
前記サーバは、
前記サーバ鍵生成部で生成したサーバ公開鍵に関する認証を認証局サーバへ要求するサーバ認証要求部を備え、
前記サーバ出力部は、
前記認証局サーバによる認証が得られた場合、前記サーバ公開鍵を前記セキュアエレメントへ出力する請求項３から請求項７のいずれか一項に記載の暗号通信システム。
【請求項９】
前記サーバは、
前記認証局サーバによる認証が得られた場合、前記認証局サーバが生成した認証局署名を取得するサーバ取得部を備え、
前記サーバ出力部は、
前記サーバ取得部で取得した認証局署名を前記セキュアエレメントへ出力し、
前記セキュアエレメント登録部は、
前記認証局署名の検証結果に基づいて、取得したサーバ公開鍵の登録可否を判定する請求項８に記載の暗号通信システム。
【請求項１０】
前記サーバは、
所要のタイミングで登録済のセキュアエレメント公開鍵の失効の有無を判定するサーバ判定部と、
前記サーバ判定部で失効があると判定された場合、登録済の前記セキュアエレメント公開鍵を無効にするサーバ無効処理部と
を備え、
前記セキュアエレメントは、
所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定するセキュアエレメント判定部と、
前記セキュアエレメント判定部で失効があると判定された場合、登録済の前記サーバ公開鍵を無効にするセキュアエレメント無効処理部と
を備える請求項３から請求項９のいずれか一項に記載の暗号通信システム。
【請求項１１】
前記サーバ無効処理部は、
さらに、前記サーバ共通鍵生成部で生成した共通鍵を無効にし、
前記セキュアエレメント無効処理部は、
さらに、前記セキュアエレメント共通鍵生成部で生成した共通鍵を無効にする請求項１０に記載の暗号通信システム。
【請求項１２】
前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、
所定の契機で、生成した共通鍵を更新する請求項３から請求項１１のいずれか一項に記載の暗号通信システム。
【請求項１３】
前記デバイスは、
前記所定の契機に応じて、前記セキュアエレメントに対して共通鍵の取得要求を出力し、
前記セキュアエレメントは、
前記セキュアエレメント共通鍵生成部で更新した共通鍵を前記デバイスに供給する請求項１２に記載の暗号通信システム。
【請求項１４】
前記サーバは、
前記デバイスとの間で共通鍵が一致しない場合、前記デバイスの異常に対応する処理を実行する請求項１２又は請求項１３に記載の暗号通信システム。
【請求項１５】
前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、
所定のタイミングで、共通鍵を生成するためのアルゴリズムを変更する請求項３から請求項１４のいずれか一項に記載の暗号通信システム。
【請求項１６】
前記セキュアエレメントは、
前記セキュアエレメントが接続されたデバイス本体を認証するデバイス認証部を備え、
前記セキュアエレメント共通鍵生成部は、
前記デバイス認証部でデバイス本体が認証された場合、生成した共通鍵を前記デバイス本体に出力し、
前記サーバ及びデバイスは、
前記共通鍵に基づく暗号通信を行う請求項３から請求項１５のいずれか一項に記載の暗号通信システム。
【請求項１７】
前記サーバ及び前記セキュアエレメントそれぞれは、
予め定められた共有情報を保持する保持部を備え、
前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、
前記共有情報をさらに用いて共通鍵を生成する請求項３から請求項１６のいずれか一項に記載の暗号通信システム。
【請求項１８】
前記保持部に保持された共有情報は、更新可能である請求項１７に記載の暗号通信システム。
【請求項１９】
前記セキュアエレメントは、
ハードウェアエレメント又はソフトウェアエレメントで構成されている請求項１から請求項１８のいずれか一項に記載の暗号通信システム。
【請求項２０】
サーバと暗号通信を行うデバイスに搭載されるセキュアエレメントであって、
セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、
前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部と、
前記サーバが出力するサーバ公開鍵を取得して登録するセキュアエレメント登録部と
を備え、
前記セキュアエレメントと前記サーバとの間の暗号通信に前記セキュアエレメント登録部で登録されたサーバ公開鍵を用いるセキュアエレメント。
【請求項２１】
請求項２０に記載されたセキュアエレメントを搭載し、所定のサーバと暗号通信を行うことができるデバイス。
【請求項２２】
セキュアエレメントが搭載されたデバイスと暗号通信を行うサーバであって、
サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、
前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部と、
前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録するサーバ登録部と
を備え、
前記セキュアエレメントとの間の暗号通信に前記サーバ登録部で登録されたセキュアエレメント公開鍵を用いるサーバ。
【請求項２３】
コンピュータに、
サーバ公開鍵及びサーバ秘密鍵を生成する処理と、
生成したサーバ公開鍵をデバイスに搭載されたセキュアエレメントへ出力する処理と、
前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録する処理と、
登録されたセキュアエレメント公開鍵を用いて、前記セキュアエレメントとの間で暗号通信を行う処理と
を実行させるコンピュータプログラム。
【請求項２４】
サーバと、セキュアエレメントを搭載するデバイスとの間の暗号通信方法であって、
前記セキュアエレメントは、
セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成し、
前記デバイスを経由して生成されたセキュアエレメント公開鍵を前記サーバへ出力し、
前記サーバは、
前記セキュアエレメントから出力されたセキュアエレメント公開鍵を取得して登録し、
サーバ公開鍵及びサーバ秘密鍵を生成し、
前記デバイスを経由して生成されたサーバ公開鍵を前記セキュアエレメントへ出力し、
前記セキュアエレメントは、さらに、
前記サーバから出力されたサーバ公開鍵を取得して登録し、
前記サーバは、
登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、
前記セキュアエレメントは、
登録されたサーバ公開鍵に基づく暗号通信を行う暗号通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号通信システム、セキュアエレメント、デバイス、サーバ、コンピュータプログラム及び暗号通信方法に関する。
【背景技術】
【０００２】
ＩｏＴ（Internet of Things）では、多種多様なデバイスがネットワークに接続されることで新たな付加価値を生み出している。一方で、インターネットに接続される、このようなデバイスが増加することにより、セキュリティ上の問題が徐々に顕在化している。
【０００３】
特許文献１には、サーバ装置とＩｏＴデバイスとの間において、第１鍵を使用してサーバ装置との間の認証処理を行い、第２鍵を使用する暗号化通信により、サーバ装置との間で第３鍵の送受信を行って鍵共有を行う通信システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第６４０８５３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１の通信システムにあっては、サーバ装置とＩｏＴデバイスとの間で第３鍵を共有する前に、第１鍵及び第２鍵を予め記憶することにより事前共有が必要となる。このため、サーバ装置とＩｏＴデバイスとの間で予め特定の固定鍵を準備しておく必要があり、かかる固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがある。
【０００６】
本発明は、斯かる事情に鑑みてなされたものであり、鍵の事前共有を必要としない暗号通信システム、セキュアエレメント、デバイス、サーバ、コンピュータプログラム及び暗号通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の実施の形態に係る暗号通信システムは、サーバと、セキュアエレメントを搭載するデバイスとを備える暗号通信システムであって、前記セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部とを備え、前記サーバは、前記セキュアエレメント出力部から出力されたセキュアエレメント公開鍵を取得して登録するサーバ登録部と、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部とを備え、前記セキュアエレメントは、さらに、前記サーバ出力部から出力されたサーバ公開鍵を取得して登録するセキュアエレメント登録部を備え、前記サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、前記セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。
【０００８】
本発明の実施の形態に係るセキュアエレメントは、サーバと暗号通信を行うデバイスに搭載されるセキュアエレメントであって、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部と、前記サーバが出力するサーバ公開鍵を取得して登録するセキュアエレメント登録部とを備え、前記セキュアエレメントと前記サーバとの間の暗号通信に前記セキュアエレメント登録部で登録されたサーバ公開鍵を用いる。
【０００９】
本発明の実施の形態に係るデバイスは、前述のセキュアエレメントを搭載し、所定のサーバと暗号通信を行うことができる。
【００１０】
本発明の実施の形態に係るサーバは、セキュアエレメントが搭載されたデバイスと暗号通信を行うサーバであって、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部と、前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録するサーバ登録部とを備え、前記セキュアエレメントとの間の暗号通信に前記サーバ登録部で登録されたセキュアエレメント公開鍵を用いる。
【００１１】
本発明の実施の形態に係るコンピュータプログラムは、コンピュータに、サーバ公開鍵及びサーバ秘密鍵を生成する処理と、生成したサーバ公開鍵をデバイスに搭載されたセキュアエレメントへ出力する処理と、前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録する処理と、登録されたセキュアエレメント公開鍵を用いて、前記セキュアエレメントとの間で暗号通信を行う処理とを実行させる。
【００１２】
本発明の実施の形態に係る暗号通信方法は、サーバと、セキュアエレメントを搭載するデバイスとの間の暗号通信方法であって、前記セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成し、前記デバイスを経由して生成されたセキュアエレメント公開鍵を前記サーバへ出力し、前記サーバは、前記セキュアエレメントから出力されたセキュアエレメント公開鍵を取得して登録し、サーバ公開鍵及びサーバ秘密鍵を生成し、前記デバイスを経由して生成されたサーバ公開鍵を前記セキュアエレメントへ出力し、前記セキュアエレメントは、さらに、前記サーバから出力されたサーバ公開鍵を取得して登録し、前記サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、前記セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。
【発明の効果】
【００１３】
本発明によれば、鍵の事前共有を必要としない。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態の暗号通信システムの構成の一例を示すブロック図である。
【図２】非対称鍵ペアの生成と公開鍵の交換の一例を示す説明図である。
【図３】デバイス共通鍵の生成の一例を示す説明図である。
【図４】認証局を併用した公開鍵の交換の一例を示す説明図である。
【図５】公開鍵署名の失効とデバイス共通鍵の破棄の一例を示す説明図である。
【図６】デバイス証明書によるデバイス認証の一例を示す説明図である。
【図７】鍵の動的再生成の一例を示す説明図である。
【図８】共有秘密を入力に加える場合の共通鍵生成の一例を示す説明図である。
【図９】共有秘密の更新の一例を示す説明図である。
【図１０】鍵生成アルゴリズムの追加の一例を示す説明図である。
【図１１】サーバによる公開鍵の交換処理の手順の一例を示すフローチャートである。
【図１２】セキュアエレメントによる公開鍵の交換処理の手順の一例を示すフローチャートである。
【図１３】サーバによるデバイス共通鍵の生成処理の手順の一例を示すフローチャートである。
【図１４】セキュアエレメントによるデバイス共通鍵の生成処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて説明する。図１は本実施の形態の暗号通信システムの構成の一例を示すブロック図である。暗号通信システムは、鍵管理を行うサーバ１０及びデバイス７０を備える。デバイス７０は、サーバ１０による暗号化鍵管理対象となっているデバイスであり、「モノのインターネット」（ＩｏＴ）でいうところの「モノ」に該当するデバイス（電子デバイスとも称する）を含む。デバイス７０は、ＩｏＴデバイスとも称され、セキュアエレメント５０、記憶部７１を備える。すなわち、デバイス７０は、セキュアエレメント５０を搭載し、デバイス７０のうち、セキュアエレメント５０以外の部分をデバイス本体と称する。
【００１６】
セキュアエレメント５０は、耐タンパ性を有し、デバイス７０とは物理的に独立したものである。セキュアエレメント５０は、サーバ１０と対向通信するための鍵を格納しつつ、自身が生成した鍵をデバイス７０に供給する。セキュアエレメント５０は、ハードウェアエレメントであってもよく、あるいはソフトウェアエレメント（ソフトウェアコンポーネント）であってもよい。ソフトウェアコンポーネントの場合、ＴＥＥ（Trusted Execution Environment）などの独立したセキュリティ環境と、当該環境で動作するアプリケーションが該当する。これにより、デバイスの種類などに応じて適切なセキュアエレメント５０をデバイス７０に搭載できる。
【００１７】
サーバ１０は、セキュアエレメント５０とともにデバイス７０の鍵を管理するサーバである。サーバ１０とデバイス７０との間は、インタフェース１を経由して暗号通信を行うことができる。インタフェース１は、例えば、イーサネット（登録商標）やＷｉｆｉ（登録商標）などの物理インタフェースの上に、ＴＣＰ／ＩＰ等のネットワークコネクションを開設して確立できる。
【００１８】
デバイス７０とセキュアエレメント５０とは、インタフェース２を介して接続される。セキュアエレメント５０がＩＣカードの場合には、インタフェース２は、例えば、ＩＳＯ７８１６、セキュアエレメント５０がＩＣカード以外の場合には、インタフェース２は、ＳＰＩ／Ｉ２Ｃ等の物理的な通信路となる。セキュアエレメント５０がソフトウェアコンポーネントの場合には、インタフェース２はＡＰＩ（Application Programming Interface）等が想定される。セキュアエレメント５０がサーバ１０と通信する場合、デバイス７０とサーバ１０との間のインタフェース１を経由して行うことができる。
【００１９】
サーバ１０は、インタフェース４を介して認証局サーバ１００に接続することができる。デバイス７０は、インタフェース３を介して認証局サーバ１００に接続することができる。インタフェース３は、インタフェース１と同様の構成とすることができる。
【００２０】
認証局サーバ１００は、他の主体（サーバやセキュアエレメント）が保有する公開鍵の正当性を裏付けるためのサーバであり、ＣＡ（Certificate Authority、Certification Authority）サーバとも称する。認証局サーバ１００は、ＣＳＲ（Certificate Signing Request：署名生成リクエスト）に対して署名を払い出し、公開鍵を提供する主体の正当性を証明する。また、認証局サーバ１００は、公開鍵の失効について問い合わせを受け、失効有無を問い合わせ元に返す。
【００２１】
セキュアエレメント５０は、記憶部５１、サーバ公開鍵ストア５２、鍵ペア生成部５３、乱数生成部５４、署名検証部５５、共通鍵生成部５６、共有秘密更新部５７、及び鍵正当性確認部５８を備える。共通鍵生成部５６は、鍵生成を行うためのアルゴリズムが内包されており、ＳＨＡ−１（５９）、ＳＨＡ−２５６（６０）が搭載されている。
【００２２】
記憶部５１は、ＳＣＩＤ、共有秘密、ＳＣ秘密鍵、ＳＣ公開鍵、デバイス公開鍵などの値を記憶する。ＳＣＩＤは、セキュアエレメント識別情報とも称し、セキュアエレメント毎に固有に割り振られているＩＤである。共有秘密は、共有情報とも称し、サーバ１０及びセキュアエレメント５０間で事前に共有されている秘密情報であり、サーバ１０及びセキュアエレメント５０以外の外部に公開されていない秘密情報とすることができる。ＳＣ秘密鍵は、セキュアエレメント秘密鍵とも称し、セキュアエレメント５０が生成する非対称鍵ペアに含まれる秘密鍵である。ＳＣ公開鍵は、セキュアエレメント公開鍵とも称し、セキュアエレメント５０が生成する非対称鍵ペアに含まれる公開鍵である。デバイス公開鍵は、デバイス７０がデバイス証明書を提供した際に当該証明書の正当性を検証するための鍵である。
【００２３】
サーバ公開鍵ストア５２は、セキュアエレメント登録部としての機能を有し、セキュアエレメント５０内にサーバ公開鍵を登録するためのデータベースである。サーバ公開鍵を登録する場合、サーバＩＤ（サーバ識別情報）とサーバ公開鍵とが対応付けて格納される。
【００２４】
鍵ペア生成部５３は、セキュアエレメント鍵生成部としての機能を有し、セキュアエレメント５０内で非対称鍵暗号（ＲＳＡ等）の鍵のペア（ＳＣ公開鍵及びＳＣ秘密鍵）を生成する。
【００２５】
乱数生成部５４は、セキュアエレメント５０内で乱数を生成する。
【００２６】
共通鍵生成部５６は、セキュアエレメント共通鍵生成部としての機能を有し、セキュアエレメント５０内で、入力された情報と、所定のアルゴリズムに従って共有鍵を生成する。共通鍵生成部５６は、例えば、入力されたデータ列に対して所定のハッシュ演算を行い、ハッシュ演算により得られたハッシュ値を出力することができる。共通鍵生成部５６は、複数のハッシュ演算アルゴリズムを有し、いずれのハッシュ演算アルゴリズムを使用するかは事前に取り決められている。
【００２７】
共有秘密更新部５７は、外部から共有秘密を更新する際に動作する。
【００２８】
鍵正当性確認部５８は、サーバ１０が生成した非対称鍵の正当性を確認する。鍵正当性確認部５８は、認証局サーバ１００に対して、非対称鍵の有効状態を問い合わせ、自身が保持しているサーバ１０の鍵正当性を判断する。
【００２９】
デバイス本体の記憶部７１は、デバイスＩＤ、デバイス証明書を記憶する。デバイスＩＤは、デバイス毎に固有で割り振られているＩＤである。デバイス証明書は、デバイス７０が製造される再に、デバイス製造メーカによって書き込まれる証明書である。デバイス製造メーカが保有するデバイス秘密鍵によって、少なくともデバイスＩＤを含む情報に対してダイジェスト署名が行われ、当該署名が添付されている。
【００３０】
サーバ１０は、記憶部１１、ＳＣ公開鍵ストア１２、鍵ペア生成部１３、乱数生成部１４、署名検証部１５、共通鍵生成部１６、共有秘密更新部１７、及び鍵正当性確認部１８を備える。共通鍵生成部１６は、鍵生成を行うためのアルゴリズムが内包されており、ＳＨＡ−１（１９）、ＳＨＡ−２５６（２０）が搭載されている。
【００３１】
記憶部１１は、サーバＩＤ、共有秘密、サーバ秘密鍵、サーバ公開鍵などの値を記憶する。サーバＩＤは、サーバ識別情報とも称し、サーバ毎に固有に割り振られているＩＤである。共有秘密は、共有情報とも称し、サーバ１０及びセキュアエレメント５０間で事前に共有されている秘密情報であり、サーバ１０及びセキュアエレメント５０以外の外部に公開されていない秘密情報とすることができる。サーバ秘密鍵は、サーバ１０が生成する非対称鍵ペアに含まれる秘密鍵である。サーバ公開鍵は、サーバ１０が生成する非対称鍵ペアに含まれる公開鍵である。
【００３２】
ＳＣ公開鍵ストア１２は、サーバ登録部としての機能を有し、サーバ１０内にＳＣ公開鍵を登録するためのデータベースである。ＳＣ公開鍵を登録する場合、ＳＣＩＤとＳＣ公開鍵とが対応付けて格納される。
【００３３】
鍵ペア生成部１３は、サーバ鍵生成部としての機能を有し、サーバ１０内で非対称鍵暗号（ＲＳＡ等）の鍵のペア（サーバ公開鍵及びサーバ秘密鍵）を生成する。
【００３４】
乱数生成部１４は、サーバ１０内で乱数を生成する。
【００３５】
共通鍵生成部１６は、サーバ共通鍵生成部としての機能を有し、サーバ１０内で、入力された情報と、所定のアルゴリズムに従って共有鍵を生成する。共通鍵生成部１６は、例えば、入力されたデータ列に対して所定のハッシュ演算を行い、ハッシュ演算により得られたハッシュ値を出力することができる。共通鍵生成部１６は、複数のハッシュ演算アルゴリズムを有し、いずれのハッシュ演算アルゴリズムを使用するかは事前に取り決められている。
【００３６】
共有秘密更新部１７は、外部から共有秘密を更新する際に動作する。
【００３７】
鍵正当性確認部１８は、セキュアエレメント５０が生成した非対称鍵の正当性を確認する。鍵正当性確認部１８は、認証局サーバ１００に対して、非対称鍵の有効状態を問い合わせ、自身が保持しているセキュアエレメント５０の鍵正当性を判断する。
【００３８】
認証局サーバ１００は、公開鍵失効済みリスト１０１、署名生成済みリスト１０２、署名生成部１０３、ＣＡ公開鍵、ＣＡ秘密鍵を備える。
【００３９】
ＣＡ公開鍵は、認証局サーバ１００が保持している公開鍵である。認証局サーバ１００が生成した署名を検証する際に、検証を希望する主体がＣＡ公開鍵を取得して用いる。
【００４０】
ＣＡ秘密鍵は、認証局サーバ１００が保持している秘密鍵である。公開鍵生成主体がＣＳＲによる署名生成をリクエストした際、認証局サーバ１００は、ＣＡ秘密鍵を用いて署名を生成する。
【００４１】
署名生成部１０３は、公開鍵生成主体の要求に応じて、生成された公開鍵に対して、ＣＡ秘密鍵で署名生成を行う。
【００４２】
署名生成済みリスト１０２は、署名生成済みの公開鍵と署名対象ＩＤのリストである。認証局サーバ１００が公開鍵に対して署名を行った際に追記される。
【００４３】
公開鍵失効済みリスト１０１は、署名済みの公開鍵のうち、認証局サーバ１００の判断により署名の効力を失効させた公開鍵のリストである。
【００４４】
次に、本実施の形態の暗号通信システムの動作、暗号通信方法について説明する。
【００４５】
図２は非対称鍵ペアの生成と公開鍵の交換の一例を示す説明図である。暗号通信を行うためには、まず、サーバ１０とセキュアエレメント５０との間で公開鍵の交換を行う必要がある。以下、符号Ｐ１〜Ｐ１３で示す処理について説明する。
【００４６】
Ｐ１（ＳＣ側鍵ペア生成指示）：デバイス７０は、セキュアエレメント５０との間のインタフェース２を介して、セキュアエレメント５０に対し、非対称鍵ペアの生成と公開鍵交換を指示する。
【００４７】
Ｐ２（ＳＣ側非対称鍵ペア生成）：セキュアエレメント５０は、鍵ペア生成部５３を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、ＳＣ秘密鍵１とＳＣ公開鍵１が生成される。
【００４８】
Ｐ３（ＳＣＩＤの暗号化）：セキュアエレメント５０は、セキュアエレメント第２暗号化部としての機能を有し、自身が有するＳＣＩＤの値を、生成したＳＣ秘密鍵で暗号化する。
【００４９】
Ｐ４（ＳＣ公開鍵と暗号化ＳＣＩＤの送信）：セキュアエレメント５０は、セキュアエレメント出力部としての機能を有し、サーバ１０に対して、ＳＣ公開鍵と暗号化されたＳＣＩＤを、デバイス７０経由で送信する。
【００５０】
Ｐ５（暗号化ＳＣＩＤの復号）：サーバ１０は、サーバ第２復号部としての機能を有し、受信した暗号化ＳＣＩＤを、受信したＳＣ公開鍵（ＳＣ公開鍵１）により復号する。
【００５１】
Ｐ６（ＳＣＩＤの検証）：サーバ１０は、復号したＳＣＩＤの値をチェックする。ＳＣＩＤの検証は、例えば、ＳＣ公開ストア１２内に同一のＳＣＩＤで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
【００５２】
Ｐ７（ＳＣ公開鍵ストアへの登録）：復号したＳＣＩＤの値をチェックして問題がない場合、サーバ１０は、ＳＣＩＤとＳＣ公開鍵を対応付けてＳＣ公開鍵ストア１２に格納する。ここでは、ＳＣＩＤ：ＳＣ０１２３４５とＳＣ公開鍵１が対応付けられて格納される。これにより、取得したＳＣ公開鍵の正当性を判定した上で登録することができる。
【００５３】
Ｐ８（サーバ側鍵ペア生成指示）：サーバ１０は、鍵ペア生成部１３を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、サーバ秘密鍵１とサーバ公開鍵１が生成される。
【００５４】
Ｐ９（サーバＩＤの暗号化）：サーバ１０は、サーバ第２暗号化部としての機能を有し、自身が有するサーバＩＤの値を、生成したサーバ秘密鍵で暗号化する。
【００５５】
Ｐ１０（サーバ公開鍵と暗号化サーバＩＤの送信）：サーバ１０は、サーバ出力部としての機能を有し、セキュアエレメント５０に対して、サーバ公開鍵と暗号化されたサーバＩＤを、デバイス７０経由で送信する。
【００５６】
Ｐ１１（暗号化サーバＩＤの復号）：セキュアエレメント５０は、セキュアエレメント第２復号部としての機能を有し、受信した暗号化サーバＩＤを、受信したサーバ公開鍵（サーバ公開鍵１）により復号する。
【００５７】
Ｐ１２（サーバＩＤの検証）：セキュアエレメント５０は、復号したサーバＩＤの値をチェックする。サーバＩＤの検証は、例えば、サーバ公開鍵ストア５２内に同一のサーバＩＤで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
【００５８】
Ｐ１３（サーバ公開鍵ストアへの登録）：復号したサーバＩＤの値をチェックして問題がない場合、セキュアエレメント５０は、サーバＩＤとサーバ公開鍵を対応付けてサーバ公開鍵ストア５２に格納する。ここでは、サーバＩＤ：ＫｅｙＭａｎａｇｅｍｅｎｔ．ｃｏｍとサーバ公開鍵１が対応付けられて格納される。これにより、取得したサーバ公開鍵の正当性を判定した上で登録することができる。
【００５９】
上述のように、サーバ１０は、セキュアエレメント５０から出力されたＳＣ公開鍵を取得して登録することができる。これにより、サーバ１０は、セキュアエレメント５０との間で、ＳＣ公開鍵を共有することができる。すなわち、ＳＣ公開鍵を予め準備して固定鍵の如くサーバ１０に記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、ＳＣ公開鍵は、セキュアエレメント５０によって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
【００６０】
また、セキュアエレメント５０は、サーバ１０から出力されたサーバ公開鍵を取得して登録することができる。これにより、セキュアエレメント５０は、サーバ１０との間で、サーバ公開鍵を共有することができる。すなわち、サーバ公開鍵を予め準備して固定鍵の如くセキュアエレメント５０に記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、サーバ公開鍵は、サーバ１０によって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
【００６１】
そして、後述のように、サーバ１０は、登録されたＳＣ公開鍵に基づく暗号通信を行い、セキュアエレメント５０は、セキュアエレメント５０内に登録されたサーバ公開鍵に基づく暗号通信を行うことができる。これにより、サーバ１０及びセキュアエレメント５０それぞれは、鍵の事前共有を必要としない。また、サーバ１０には、ＳＣ秘密鍵に対応するＳＣ公開鍵が登録されているので、サーバ１０からセキュアエレメント５０への一方向暗号化が可能な通信路を、サーバ１０とセキュアエレメント５０との間で確保することができる。また、セキュアエレメント５０には、サーバ秘密鍵に対応するサーバ公開鍵が登録されているので、セキュアエレメント５０からサーバ１０への一方向暗号化が可能な通信路を、サーバ１０とセキュアエレメント５０との間で確保することができる。
【００６２】
図２の例では、デバイス７０経由でセキュアエレメント５０に対する鍵生成指示が先に実行されているが、実行順序は逆でもよく、サーバ１０が先に非対称鍵ペアを生成してセキュアエレメント５０へ送信してもよい。
【００６３】
ＳＣ公開鍵の登録の際のＳＣＩＤの検証、及びサーバ公開鍵の登録の際のサーバＩＤの検証は、上述のように、登録対象の公開鍵（値そのもの）が登録済みかどうかをチェックしてもよく、あるいは当該ＳＣＩＤ及びサーバＩＤの登録が禁止されていないかをチェックしてもよい。
【００６４】
図３はデバイス共通鍵の生成の一例を示す説明図である。図２に示す処理によって公開鍵ペアが共有できた後、サーバ１０とデバイス７０との間で暗号通信を行うためのデバイス共通鍵の生成を行う。以下、符号Ｐ３１〜Ｐ４２で示す処理について説明する。
【００６５】
Ｐ３１（鍵生成指示）：デバイス７０は、セキュアエレメント５０との間のインタフェース２を介して、セキュアエレメント５０に対し、デバイス共通鍵生成を指示する。
【００６６】
Ｐ３２（ＳＣ側乱数の生成）：セキュアエレメント５０は、乱数生成部５４を利用して、所定のセキュアエレメント情報としてのＳＣ側乱数を生成する。
【００６７】
Ｐ３３（ＳＣ側乱数の暗号化）：セキュアエレメント５０は、セキュアエレメント第１暗号化部としての機能を有し、既に登録済みのサーバ公開鍵を用いて、生成したＳＣ側乱数を暗号化する。
【００６８】
Ｐ３４（暗号化ＳＣ側乱数の送信）：セキュアエレメント５０は、サーバ１０に対し、デバイス７０経由で暗号化ＳＣ側乱数を送信する。
【００６９】
Ｐ３５（暗号化ＳＣ側乱数の復号）：サーバ１０は、サーバ第１復号部としての機能を有し、受信した暗号化ＳＣ側乱数を、自身が保有するサーバ秘密鍵で復号し、復号後のＳＣ側乱数を保持する。これにより、サーバ１０は、セキュアエレメント５０が生成したＳＣ側乱数を、セキュアエレメント５０との間で共有できる。
【００７０】
Ｐ３６（サーバ側乱数の生成）：サーバ１０は、乱数生成部１４を利用して、所定のサーバ情報としてのサーバ側乱数を生成する。
【００７１】
Ｐ３７（サーバ側乱数の暗号化）：サーバ１０は、サーバ第１暗号化部としての機能を有し、既に登録済みのＳＣ公開鍵を用いて、生成したサーバ側乱数を暗号化する。
【００７２】
Ｐ３８（暗号化サーバ側乱数の送信）：サーバ１０は、セキュアエレメント５０に対し、デバイス７０経由で暗号化サーバ側乱数を送信する。
【００７３】
Ｐ３９（暗号化サーバ側乱数の復号）：セキュアエレメント５０は、セキュアエレメント第１復号部としての機能を有し、受信した暗号化サーバ側乱数を、自身が保有するＳＣ秘密鍵で復号し、復号後のサーバ側乱数を保持する。これにより、セキュアエレメント５０は、サーバ１０が生成したサーバ側乱数を、サーバ１０との間で共有できる。そして、サーバ１０及びセキュアエレメント５０それぞれは、ＳＣ側乱数及びサーバ側乱数を共有することができ、デバイス共有鍵を生成する際に使用する情報を共有することができる。
【００７４】
Ｐ４０（デバイス共通鍵の生成）：サーバ１０及びセキュアエレメント５０は、交換したＳＣ側乱数、サーバ側乱数を入力として共通鍵生成部１６、５６により出力を得る。ここでは、鍵生成に使用するアルゴリズムとして、例えば、ＳＨＡ−２５６を使用することを、サーバ１０とセキュアエレメント５０とが事前に取り決めているものとする。従って、同一のＳＣ側乱数とサーバ側乱数を入力としてＳＨＡ−２５６演算が実行され、サーバ１０とセキュアエレメント５０とは、同一のデータ列を出力として得ることができる。このデータ列をデバイス共通鍵として使用する。
【００７５】
Ｐ４１（デバイスへの共通鍵取り出し）：デバイス７０は、セキュアエレメント５０に対してデバイス共通鍵の取り出しを指示し、セキュアエレメント５０からデバイス共通鍵を取得する。
【００７６】
Ｐ４２（デバイス共通鍵による暗号通信の確立）：以降、サーバ１０とデバイス７０は、同一のデバイス共通鍵に基づき、対象鍵暗号通信路を確立し、暗号通信を行う。
【００７７】
上述のとおり、サーバ１０とセキュアエレメント５０との間では、デバイス対象鍵値そのものの授受を行っていない。すなわち、上述の構成により、サーバ１０とデバイス７０との間の通信路を介して共通鍵の授受をする必要がなく、共通鍵が通信路に載らないので、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。また、共通鍵を生成するために用いられるセキュアエレメント情報（例えば、ＳＣ側乱数）及びサーバ情報（例えば、サーバ側乱数）が仮に漏洩しても、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。これにより、サーバ１０とデバイス７０との間の暗号通信が危殆化しない。
【００７８】
上述の例では、セキュアエレメント情報及びサーバ情報として乱数を用いているが、これに限定されない。セキュアエレメント情報及びサーバ情報として乱数以外のデータを用いることもできる。
【００７９】
本実施例で乱数の暗号化に用いている、公開鍵の具体的な選択方法については、単に、直前に鍵交換を行ったＳＣ公開鍵及びサーバ公開鍵を選択しているが、複数のＳＣ公開鍵及びサーバ公開鍵の中から選択するようにしてもよい。
【００８０】
次に、非対称鍵の取り扱いに関するユースケースについて説明する。
【００８１】
図４は認証局を併用した公開鍵の交換の一例を示す説明図である。図２に例示した例では、サーバ１０及びセキュアエレメント５０がそれぞれ独自に鍵生成を行っているが、個別に鍵生成を行っただけでは、生成された鍵の正当性が保証されない。すなわち、公開鍵による情報交換に成功しても、情報交換を行った相手が正当なサーバ又はセキュアエレメントであるとは限らず、不正な相手と通信する可能性がある。図４の例では、不正な通信を防止するための方法として、公開鍵認証局（認証局サーバ１００）と連携することにより、生成した公開鍵の正当性を高める。以下、符号Ｐ５１〜Ｐ７１で示す処理について説明する。
【００８２】
Ｐ５１（ＳＣ側鍵ペア生成指示）：デバイス７０は、セキュアエレメント５０との間のインタフェース２を介して、セキュアエレメント５０に対し、非対称鍵ペアの生成と公開鍵交換を指示する。
【００８３】
Ｐ５２（ＳＣ側非対称鍵ペア生成）：セキュアエレメント５０は、鍵ペア生成部５３を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、ＳＣ秘密鍵１とＳＣ公開鍵１が生成される。
【００８４】
Ｐ５３（認証局への署名リクエスト）：セキュアエレメント５０は、セキュアエレメント認証要求部としての機能を有し、認証局サーバ１００に対し、生成したＳＣ公開鍵に対する認証局の署名を要求する。セキュアエレメント５０から認証局サーバ１００に対し、少なくともＳＣ公開鍵がデバイス７０経由で送信される。
【００８５】
Ｐ５４（ＳＣ公開鍵への署名の返送）：認証局サーバ１００は、セキュアエレメント５０からの署名リクエストを検査する。ここでは、認証局サーバ１００は、自身が保持する署名生成済みリスト１０２に、署名を要求したセキュアエレメント５０のＳＣＩＤがないかをチェックする。ＳＣＩＤがない場合、問題がないとして、認証局サーバ１００は、自身が保有するＣＡ秘密鍵を使用して、ＳＣ公開鍵に対するＣＡ署名を生成し、生成したＣＡ署名をデバイス７０経由でセキュアエレメント５０に返送する。認証局サーバ１００は、署名を要求したセキュアエレメント５０が信頼できる主体であることを確認した上で、ＳＣ公開鍵に対してＣＡ秘密鍵を用いて署名を行うことで、ＳＣ公開鍵が信頼できることを示す。セキュアエレメント５０は、セキュアエレメント取得部としての機能を有し、ＳＣ公開鍵に対するＣＡ署名を取得する。認証局サーバ１００は、署名生成済みリスト１０２にＳＣＩＤを記録する。
【００８６】
Ｐ５５（ＳＣＩＤの暗号化）：セキュアエレメント５０は、自身が有するＳＣＩＤの値を、生成したＳＣ秘密鍵で暗号化する。
【００８７】
Ｐ５６（ＳＣ公開鍵と暗号化ＳＣＩＤの送信）：セキュアエレメント５０は、サーバ１０に対して、ＳＣ公開鍵、ＳＣ公開鍵に対するＣＡ署名、暗号化されたＳＣＩＤを、デバイス７０経由で送信する。これにより、セキュアエレメント５０が生成したＳＣ公開鍵の正当性を確立することができる。
【００８８】
Ｐ５７（ＣＡ公開鍵要求）：サーバ１０は、認証局サーバ１００に対し、ＣＡ公開鍵の送信を求める。
【００８９】
Ｐ５８（ＳＣ公開鍵に対するＣＡ署名の検証）：認証局サーバ１００は、サーバ１０に対し、ＣＡ公開鍵を送付する。サーバ１０は、受信したＣＡ公開鍵を用いて、受信したＳＣ公開鍵に対するＣＡ署名を検証する。検証の結果、問題があれば、公開鍵登録処理を失敗として、ここで処理を中断する。検証の結果、問題がなければ、以降の処理を続ける。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
【００９０】
Ｐ５９（暗号化ＳＣＩＤの復号）：サーバ１０は、受信した暗号化ＳＣＩＤを、受信したＳＣ公開鍵（ＳＣ公開鍵１）により復号する。
【００９１】
Ｐ６０（ＳＣＩＤの検証）：サーバ１０は、復号したＳＣＩＤの値をチェックする。ＳＣＩＤの検証は、例えば、ＳＣ公開ストア１２内に同一のＳＣＩＤで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
【００９２】
Ｐ６１（ＳＣ公開鍵ストアへの登録）：復号したＳＣＩＤの値をチェックして問題がない場合、サーバ１０は、ＳＣＩＤとＳＣ公開鍵を対応付けてＳＣ公開鍵ストア１２に格納する。
【００９３】
Ｐ６２（サーバ側鍵ペア生成指示）：サーバ１０は、鍵ペア生成部１３を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、サーバ秘密鍵１とサーバ公開鍵１が生成される。
【００９４】
Ｐ６３（認証局への署名リクエスト）：サーバ１０は、サーバ認証要求部としての機能を有し、認証局サーバ１００に対し、生成したサーバ公開鍵に対する認証局の署名を要求する。サーバ１０から認証局サーバ１００に対し、少なくともサーバ公開鍵が送信される。
【００９５】
Ｐ６４（サーバ公開鍵への署名の返送）：認証局サーバ１００は、サーバ１０からの署名リクエストを検査する。ここでは、認証局サーバ１００は、自身が保持する署名生成済みリスト１０２に、署名を要求したサーバ１０のサーバＩＤがないかをチェックする。サーバＩＤがない場合、問題がないとして、認証局サーバ１００は、自身が保有するＣＡ秘密鍵を使用して、サーバ公開鍵に対するＣＡ署名を生成し、生成したＣＡ署名をサーバ１０に返送する。認証局サーバ１００は、署名を要求したセキュアエレメント５０が信頼できる主体であることを確認して上で、サーバ公開鍵に対してＣＡ秘密鍵を用いて署名を行うことで、サーバ公開鍵が信頼できることを示す。サーバ１０は、サーバ取得部としての機能を有し、サーバ公開鍵に対するＣＡ署名を取得する。認証局サーバ１００は、署名生成済みリスト１０２にサーバＩＤを記録する。
【００９６】
Ｐ６５（サーバＩＤの暗号化）：サーバ１０は、自身が有するサーバＩＤの値を、生成したサーバ秘密鍵で暗号化する。
【００９７】
Ｐ６６（サーバ公開鍵と暗号化サーバＩＤの送信）：サーバ１０は、セキュアエレメント５０に対して、サーバ公開鍵、サーバ公開鍵に対するＣＡ署名、暗号化されたサーバＩＤを、デバイス７０経由で送信する。これにより、サーバ１０が生成したサーバ公開鍵の正当性を確立することができる。
【００９８】
Ｐ６７（ＣＡ公開鍵要求）：セキュアエレメント５０は、デバイス７０経由で認証局サーバ１００に対し、ＣＡ公開鍵の送信を求める。
【００９９】
Ｐ６８（サーバ公開鍵に対するＣＡ署名の検証）：認証局サーバ１００は、デバイス７０経由でセキュアエレメント５０に対し、ＣＡ公開鍵を送付する。セキュアエレメント５０は、受信したＣＡ公開鍵を用いて、受信したサーバ公開鍵に対するＣＡ署名を検証する。検証の結果、問題があれば、公開鍵登録処理を失敗として、ここで処理を中断する。検証の結果、問題がなければ、以降の処理を続ける。
【０１００】
Ｐ６９（暗号化サーバＩＤの復号）：セキュアエレメント５０は、受信した暗号化サーバＩＤを、受信したサーバ公開鍵により復号する。
【０１０１】
Ｐ７０（サーバＩＤの検証）：セキュアエレメント５０は、復号したサーバＩＤの値をチェックする。サーバＩＤの検証は、例えば、サーバ公開鍵ストア５２内に同一のサーバＩＤで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
【０１０２】
Ｐ７１（サーバ公開鍵ストアへの登録）：復号したサーバＩＤの値をチェックして問題がない場合、セキュアエレメント５０は、サーバＩＤとサーバ公開鍵を対応付けてサーバ公開鍵ストア５２に格納する。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
【０１０３】
図４の例では、図２の例と比較して、（１）公開鍵生成直後、認証局に対して生成した公開鍵に対する署名を要求した上で、返送された署名を添付して相手方に送る、（２）公開鍵受信直後、認証局に対してＣＡ公開鍵を要求した上で、受信したＣＡ公開鍵を用いて署名検証を行っている。公開鍵基盤において、認証局は、署名を要求した主体が信頼できる主体であることを確認した上で、要求主体の公開鍵に対して自身の秘密鍵を用いて署名を行うことで、公開鍵は信頼に値することを表明している。このため、公開鍵受信側で署名検証に失敗した場合、当該公開鍵は認証局による信頼表明が有効でないことを示す。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
【０１０４】
本実施例では、便宜上、認証局が署名生成済みリストに、署名要求主体のＩＤが存在するか否かを調べることで、署名要求の可否判断を簡易的に行っているが、実際に認証局が署名要求主体をどのように確認するかについては、認証局のセキュリティポリシーに従って適宜の手法を用いることができる。
【０１０５】
図５は公開鍵署名の失効とデバイス共通鍵の破棄の一例を示す説明図である。秘密鍵の漏洩や、デバイス７０又はサーバ１０のライフサイクル管理上、一度共有した公開鍵を失効させ、デバイス共通鍵による暗号通信を遮断したいケースも考えられる。このような場合、例えば、認証局による公開鍵の失効処理をトリガとすることができる。以下、符号Ｐ８１〜Ｐ８７で示す処理について説明する。
【０１０６】
Ｐ８１（公開鍵失効済みリストへの追加）：認証局サーバ１００は、失効対象とする公開鍵のＩＤを公開鍵失効済みリスト１０１に書き込む。ここでは、ＳＣＩＤ：ＳＣ０１２３４５のＳＣ公開鍵１を失効させるべく、これらの情報が追記される。
【０１０７】
Ｐ８２（サーバ・デバイス間暗号通信）：サーバ１０とデバイス７０とは、すでに生成済みのデバイス共通鍵を用いて暗号通信を行う。
【０１０８】
Ｐ８３（サーバ側鍵検証処理）：サーバ１０の暗号通信部２１は、デバイス７０側の暗号通信を復号する前に、公開鍵の有効状態を検証すべく、鍵正当性確認部１８に検証を依頼する。
【０１０９】
Ｐ８４（失効済みリストの送信要求）：鍵正当性確認部１８は、認証局サーバ１００に対し、公開鍵失効済みリスト１０１の送信を要求する。
【０１１０】
Ｐ８５（失効済みリストの入手と確認）：認証局サーバ１００は、鍵正当性確認部１８に対し、公開鍵失効済みリスト１０１を返送する。鍵正当性確認部１８は、返送された公開鍵失効済みリスト１０１を見て、現在通信相手となっているデバイス７０側のＳＣ公開鍵が失効していることを確認する。
【０１１１】
Ｐ８６（暗号通信の終了）：鍵正当性確認部１８は、現在通信しているデバイス７０とセキュアエレメント５０について、公開鍵による信頼関係が失われたと判断し、現在開設中の暗号通信セッションを終了させる。
【０１１２】
Ｐ８７（公開鍵及びデバイス共通鍵の破棄）：鍵正当性確認部１８は、ＳＣ公開鍵ストア１２に登録されているＳＣＩＤ：ＳＣ０１２３４５の公開鍵と、デバイス共通鍵を破棄する。
【０１１３】
上述のように、鍵正当性確認部１８は、サーバ判定部としての機能を有し、所要のタイミングで登録済のＳＣ公開鍵の失効の有無を判定することができる。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。ＳＣ公開鍵の失効は、例えば、認証局サーバ１００による公開鍵の失効処理の結果（公開鍵失効済みリスト１０１）に基づいて判定できる。
【０１１４】
鍵正当性確認部１８は、サーバ無効処理部としての機能を有し、ＳＣ公開鍵が失効していると判定された場合、登録済のＳＣ公開鍵を無効にすることができる。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
【０１１５】
また、鍵正当性確認部１８は、サーバ１０が生成した共通鍵を無効にすることができる。これにより、共通鍵による暗号通信を遮断することができる。
【０１１６】
図５の例では、公開鍵の失効状態をサーバ１０から問い合わせているが、これに限定されるものではなく、同一の処理をデバイス７０とセキュアエレメント５０側から行ってもよい。この場合、セキュアエレメント５０の鍵正当性確認部５８は、セキュアエレメント判定部としての機能を有し、所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定することができる。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。サーバ公開鍵の失効は、例えば、認証局サーバ１００による公開鍵の失効処理の結果（公開鍵失効済みリスト１０１）に基づいて判定できる。
【０１１７】
鍵正当性確認部５８は、セキュアエレメント無効処理部としての機能を有し、サーバ公開鍵が失効していると判定された場合、登録済のサーバ公開鍵を無効にすることができる。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
【０１１８】
また、鍵正当性確認部５８は、セキュアエレメント５０が生成した共通鍵を無効にすることができる。これにより、共通鍵による暗号通信を遮断することができる。
【０１１９】
本実施例では、失効情報の送受信手段として失効リスト（ＣＲＬ：Certificate Revocation List）を使用しているが、失効情報確認プロトコル（ＯＣＳＰ：Online Certificate Status Protocol）等の別の手段により失効情報を確認してもよい。
【０１２０】
次に、共通鍵の取り扱いに関するユースケースについて説明する。
【０１２１】
図６はデバイス証明書によるデバイス認証の一例を示す説明図である。以下、符号Ｐ９１〜Ｐ１０４で示す処理について説明する。
【０１２２】
Ｐ９１（鍵生成指示）：デバイス７０は、セキュアエレメント５０との間のインタフェース２を介して、セキュアエレメント５０に対し、デバイス共通鍵生成を指示する。
【０１２３】
Ｐ９２（ＳＣ側乱数の生成）：セキュアエレメント５０は、乱数生成部５４を利用して、ＳＣ側乱数を生成する。
【０１２４】
Ｐ９３（ＳＣ側乱数の暗号化）：セキュアエレメント５０は、既に登録済みのサーバ公開鍵を用いて、生成したＳＣ側乱数を暗号化する。
【０１２５】
Ｐ９４（暗号化ＳＣ側乱数の送信）：セキュアエレメント５０は、サーバ１０に対し、デバイス７０経由で暗号化ＳＣ側乱数を送信する。
【０１２６】
Ｐ９５（暗号化ＳＣ側乱数の復号）：サーバ１０は、受信した暗号化ＳＣ側乱数を、自身が保有するサーバ秘密鍵で復号し、復号後のＳＣ側乱数を保持する。これにより、サーバ１０は、セキュアエレメント５０が生成したＳＣ側乱数を、セキュアエレメント５０との間で共有できる。
【０１２７】
Ｐ９６（サーバ側乱数の生成）：サーバ１０は、乱数生成部１４を利用して、所定のサーバ情報としてのサーバ側乱数を生成する。
【０１２８】
Ｐ９７（サーバ側乱数の暗号化）：サーバ１０は、既に登録済みのＳＣ公開鍵を用いて、生成したサーバ側乱数を暗号化する。
【０１２９】
Ｐ９８（暗号化サーバ側乱数の送信）：サーバ１０は、セキュアエレメント５０に対し、デバイス７０経由で暗号化サーバ側乱数を送信する。
【０１３０】
Ｐ９９（暗号化サーバ側乱数の復号）：セキュアエレメント５０は、受信した暗号化サーバ側乱数を、自身が保有するＳＣ秘密鍵で復号し、復号後のサーバ側乱数を保持する。これにより、セキュアエレメント５０は、サーバ１０が生成したサーバ側乱数を、サーバ１０との間で共有できる。そして、サーバ１０及びセキュアエレメント５０それぞれは、ＳＣ側乱数及びサーバ側乱数を共有することができ、デバイス共有鍵を生成する際に使用する情報を共有することができる。
【０１３１】
Ｐ１００（デバイス共通鍵の生成）：サーバ１０及びセキュアエレメント５０は、交換したＳＣ側乱数、サーバ側乱数を入力として共通鍵生成部１６、５６により出力を得る。ここでは、鍵生成に使用するアルゴリズムとして、例えば、ＳＨＡ−２５６を使用することを、サーバ１０とセキュアエレメント５０とが事前に取り決めているものとする。従って、同一のＳＣ側乱数とサーバ側乱数を入力としてＳＨＡ−２５６演算が実行され、サーバ１０とセキュアエレメント５０とは、同一のデータ列を出力として得ることができる。このデータ列をデバイス共通鍵として使用する。
【０１３２】
Ｐ１０１（デバイス証明書とデバイスＩＤの入力）：セキュアエレメント５０は、デバイス共通鍵の出力の前提として、デバイス証明書とデバイスＩＤの入力を求める。デバイス７０は、デバイス証明書とデバイスＩＤをセキュアエレメント５０に送信する。
【０１３３】
Ｐ１０２（デバイス証明書の検証）：セキュアエレメント５０は、デバイス認証部としての機能を有し、受信したデバイス証明書の内容について、内部に保持しているデバイス公開鍵を用いて検証する。具体的には、デバイス証明書内の暗号化されたデバイスＩＤを、デバイス公開鍵で復号し、別途受信した平文のデバイスＩＤと比較する。セキュアエレメント５０は、検証に失敗した場合、ここで処理を中断し、デバイス共通鍵を外部に出力しない。検証に成功した場合には、以降の処理を行う。
【０１３４】
Ｐ１０３（デバイスへの共通鍵取り出し）：デバイス７０は、セキュアエレメント５０に対してデバイス共通鍵の取り出しを指示し、セキュアエレメント５０からデバイス共通鍵を取得する。
【０１３５】
Ｐ１０４（デバイス共通鍵による暗号通信の確立）：以降、サーバ１０とデバイス７０は、同一のデバイス共通鍵に基づき、対象鍵暗号通信路を確立し、暗号通信を行う。
【０１３６】
上述のように、セキュアエレメント５０は、セキュアエレメント５０（自身）が接続されたデバイス（デバイス本体）を認証するデバイス認証部を備える。なお、デバイスの認証は、デバイスＩＤを非対称鍵で暗号化した証明書を用いて行っているが、このアルゴリズムに限定されるものではなく、適宜の手法を用いることができる。
【０１３７】
セキュアエレメント５０は、デバイス本体が認証された場合、生成した共通鍵をデバイス本体に出力する。これにより、意図した（正規の）デバイスに適切なセキュアエレメントが接続されていることを確認することができる。
【０１３８】
図７は鍵の動的再生成の一例を示す説明図である。本実施の形態では、サーバ１０側は自身が制御可能なコンポーネント内で鍵を生成可能であるが、デバイス７０側は鍵の生成をセキュアエレメント５０に頼っており、鍵の取り扱い権限がサーバ１０とデバイス７０との間で非対称であるという特徴を持つ。この特徴により、デバイス７０側のセキュリティをセキュアエレメント５０に従属させ、デバイス７０の鍵管理をより強力にすることができる。すなわち、サーバ１０及びセキュアエレメント５０の鍵を、一定の規則性に基づいて動的に更新した場合、デバイス７０は、セキュアエレメント５０から更新後の鍵供給を受けない限り、後続の暗号通信を正しく実行することができなくなる。これは、デバイス７０が適切なセキュアエレメント５０の管理下で動作していることの動的検証と同義であり、セキュアブート等の起動時や鍵生成時のみならず、継続的にデバイス７０のセキュリティ検証を行うことができることを意味する。以下、符号Ｐ１１１〜Ｐ１１８で示す処理について説明する。
【０１３９】
Ｐ１１１（デバイス共通鍵の準備）：図３に例示した処理に基づき、サーバ１０とデバイス７０それぞれに、第一世代の鍵（デバイス共通鍵１）が提供される。
【０１４０】
Ｐ１１２（暗号セッションの確立と暗号通信）：サーバ１０とデバイス７０は、デバイス共通鍵１に基づく暗号通信を、鍵更新の契機が発生するまでの間行う。鍵更新の契機は、例えば、一定回数のデータ授受実行があった場合とすることができるが、これに限定されない。
【０１４１】
Ｐ１１３（デバイス共通鍵更新）：暗号通信中に鍵更新の契機が発生した場合、サーバ１０とセキュアエレメント５０は、デバイス共通鍵１を所定のアルゴリズムに従って更新する。更新時の鍵生成のアルゴリズムは、例えば、現在の鍵を共通鍵生成部１６、５６の入力とし、ＳＨＡ−２５６ハッシュ出力で得られた値を新たな鍵とする。すなわち、デバイス共通鍵１に対するＳＨＡ−２５６ハッシュ値をデバイス共通鍵２とする。なお、更新時の鍵生成のアルゴリズムは、これに限定されるものではなく、適宜の方法を用いることができる。
【０１４２】
Ｐ１１４（デバイスによる更新後の鍵取り出し）：この状況でデバイス７０が暗号通信を試行しても、サーバ１０側の鍵が更新されているため、適切に通信を行うことができない。そこで、デバイス７０は、再度セキュアエレメント５０に対し、デバイス共通鍵の出力を要求する。セキュアエレメント５０は、更新されたデバイス共通鍵２をデバイス７０に供給する。
【０１４３】
Ｐ１１５（暗号セッションの確立と暗号通信）：サーバ１０とデバイス７０は、デバイス共通鍵２に基づく暗号通信を、鍵更新の契機が発生するまでの間行う。
【０１４４】
Ｐ１１６（デバイス共通鍵更新）：暗号通信中に鍵更新の契機が発生した場合、サーバ１０とセキュアエレメント５０は、デバイス共通鍵２を所定のアルゴリズムに従って更新する。すなわち、デバイス共通鍵２に対するＳＨＡ−２５６ハッシュ値をデバイス共通鍵３とする。
【０１４５】
Ｐ１１７（デバイスによる更新後の鍵取り出し）：この状況でデバイス７０が暗号通信を試行しても、サーバ１０側の鍵が更新されているため、適切に通信を行うことができない。そこで、デバイス７０は、再度セキュアエレメント５０に対し、デバイス共通鍵の出力を要求する。セキュアエレメント５０は、更新されたデバイス共通鍵３をデバイス７０に供給する。
【０１４６】
Ｐ１１８（暗号セッションの確立と暗号通信）：サーバ１０とデバイス７０は、デバイス共通鍵３に基づく暗号通信を、鍵更新の契機が発生するまでの間行う。
【０１４７】
上述のように、共通鍵生成部１６、５６それぞれは、所定の契機で、生成した共通鍵を更新することができる。所定の契機は、例えば、同一の共通鍵を用いて行った暗号通信の回数が所定回数になった場合、サーバ又はセキュアエレメントに対する外部からの更新指示などとすることができるが、これに限定されない。
【０１４８】
上述のように、デバイス７０は、共通鍵の生成をセキュアエレメント５０に依存しているので、デバイス７０のセキュリティは、セキュアエレメント５０に従属することになり、デバイス７０の共通鍵管理を一層強力にすることができる。
【０１４９】
すなわち、サーバ１０及びセキュアエレメント５０の共通鍵を、一定の規則性に基づいて動的に更新した場合、デバイス７０は、セキュアエレメント５０から更新後の共通鍵の供給を受けない限り、共通鍵の更新後の暗号通信を正しく実行することができない。これにより、継続的にデバイス７０のセキュリティ検証を行うことができる。
【０１５０】
鍵更新アルゴリズムは、前述したものに限定されない。セキュリティ強化のため、例えば、ＲＦＣで定義されているＴＯＴＰ（Time-based One Time Password）やＨＯＴＰ(HMAC-based One-Time Password)等、ワンタイムパスワード生成のアルゴリズムを適用することもできる。
【０１５１】
図７の例で、デバイス７０が、更新後のデバイス共通鍵を取り出さずに古いデバイス共通鍵で通信を試みた場合、サーバ１０側では、受信したデータを正しく復号することができない。この場合、サーバ１０側でセキュリティポリシーに応じた種々の適切な処理を行うことができる。
【０１５２】
すなわち、サーバ１０は、デバイス７０との間で共通鍵が一致しない場合、デバイス７０の異常に対応する処理を実行することができる。デバイス７０の異常に対応する処理は、例えば、現在開設中の暗号通信を遮断する処理、交換済の公開鍵ペアを無効とする処理、当該セキュアエレメント５０のＳＣＩＤによる公開鍵登録を拒否し不正なデバイスとして取り扱う処理などを含む。
【０１５３】
図８は共有秘密を入力に加える場合の共通鍵生成の一例を示す説明図である。前述の例では、デバイス共通鍵の生成元となる入力全てが、サーバ１０とセキュアエレメント５０との間で交換した情報に依存している。この状態でも適切な鍵生成を行うことが可能であるが、セキュリティポリシーによっては、セキュアエレメント５０が保持している秘密情報に依存した鍵生成を行いたいというニーズも存在する。以下、符号Ｐ１２１〜Ｐ１３２で示す処理について説明する。
【０１５４】
Ｐ１２１（共有秘密の書き込みとサーバ共有）：セキュアエレメント５０の製造者は、事前に共有秘密をセキュアエレメント５０に書き込むとともに、サーバ１０の管理者に対し、当該共有秘密を事前共有しておく。
【０１５５】
Ｐ１２２（鍵生成指示）：デバイス７０は、セキュアエレメント５０との間のインタフェース２を介して、セキュアエレメント５０に対し、デバイス共通鍵生成を指示する。
【０１５６】
Ｐ１２３（ＳＣ側乱数の生成）：セキュアエレメント５０は、乱数生成部５４を利用して、所定のセキュアエレメント情報としてのＳＣ側乱数を生成する。
【０１５７】
Ｐ１２４（ＳＣ側乱数の暗号化）：セキュアエレメント５０は、既に登録済みのサーバ公開鍵を用いて、生成したＳＣ側乱数を暗号化する。
【０１５８】
Ｐ１２５（暗号化ＳＣ側乱数の送信）：セキュアエレメント５０は、サーバ１０に対し、デバイス７０経由で暗号化ＳＣ側乱数を送信する。
【０１５９】
Ｐ１２６（暗号化ＳＣ側乱数の復号）：サーバ１０は、受信した暗号化ＳＣ側乱数を、自身が保有するサーバ秘密鍵で復号し、復号後のＳＣ側乱数を保持する。これにより、サーバ１０は、セキュアエレメント５０が生成したＳＣ側乱数を、セキュアエレメント５０との間で共有できる。
【０１６０】
Ｐ１２７（サーバ側乱数の生成）：サーバ１０は、乱数生成部１４を利用して、所定のサーバ情報としてのサーバ側乱数を生成する。
【０１６１】
Ｐ１２８（サーバ側乱数の暗号化）：サーバ１０は、既に登録済みのＳＣ公開鍵を用いて、生成したサーバ側乱数を暗号化する。
【０１６２】
Ｐ１２９（暗号化サーバ側乱数の送信）：サーバ１０は、セキュアエレメント５０に対し、デバイス７０経由で暗号化サーバ側乱数を送信する。
【０１６３】
Ｐ１３０（暗号化サーバ側乱数の復号）：セキュアエレメント５０は、受信した暗号化サーバ側乱数を、自身が保有するＳＣ秘密鍵で復号し、復号後のサーバ側乱数を保持する。これにより、セキュアエレメント５０は、サーバ１０が生成したサーバ側乱数を、サーバ１０との間で共有できる。そして、サーバ１０及びセキュアエレメント５０それぞれは、ＳＣ側乱数及びサーバ側乱数を共有することができ、デバイス共有鍵を生成する際に使用する情報を共有することができる。
【０１６４】
Ｐ１３１（デバイス共通鍵の生成）：サーバ１０及びセキュアエレメント５０は、交換したＳＣ側乱数、サーバ側乱数及び共有秘密を入力として共通鍵生成部１６、５６により出力を得る。ここでは、鍵生成に使用するアルゴリズムとして、例えば、ＳＨＡ−２５６を使用することを、サーバ１０とセキュアエレメント５０とが事前に取り決めているものとする。従って、同一のＳＣ側乱数とサーバ側乱数を入力としてＳＨＡ−２５６演算が実行され、サーバ１０とセキュアエレメント５０とは、同一のデータ列を出力として得ることができる。このデータ列をデバイス共通鍵として使用する。
【０１６５】
Ｐ１３２（デバイスへの共通鍵取り出し）：デバイス７０は、セキュアエレメント５０に対してデバイス共通鍵の取り出しを指示し、セキュアエレメント５０からデバイス共通鍵を取得する。
【０１６６】
Ｐ１３３（デバイス共通鍵による暗号通信の確立）：以降、サーバ１０とデバイス７０は、同一のデバイス共通鍵に基づき、対象鍵暗号通信路を確立し、暗号通信を行う。
【０１６７】
上述のように、サーバ１０及びセキュアエレメント５０それぞれは、予め定められた共有秘密（共有情報）を保持する保持部としての記憶部１１、５１を備える。共有秘密は、例えば、サーバ１０及びセキュアエレメント５０以外の外部に公開されていない共有の秘密情報とすることができる。
【０１６８】
共通鍵生成部１６、５６それぞれは、共有秘密をさらに用いてデバイス共通鍵を生成することができる。これにより、攻撃者が、仮にＳＣ側乱数及びサーバ側乱数を不正に取得して把握したとしても、共有秘密を知らない限り、デバイス共通鍵を生成することができないので、サーバ１０とデバイス７０との間の暗号通信のセキュリティを一層高めることができる。
【０１６９】
図９は共有秘密の更新の一例を示す説明図である。以下、符号Ｐ１４１〜Ｐ１４８で示す処理について説明する。
【０１７０】
Ｐ１４１（デバイス共通鍵の生成）：図３に例示した処理に基づき、サーバ１０とデバイス７０それぞれに、共有秘密更新前の値に基づいて生成されたデバイス共通鍵（旧）が提供される。
【０１７１】
Ｐ１４２（暗号セッションの確立と暗号通信）：サーバ１０とデバイス７０は、デバイス共通鍵（旧）に基づいて、暗号化通信路を開設する。
【０１７２】
Ｐ１４３（サーバ側の共有秘密更新）：サーバ１０は、自身が保有する共有秘密を更新する。
【０１７３】
Ｐ１４４（ＳＣ側共有秘密更新コマンドの実行）：サーバ１０は、デバイス７０を経由して、セキュアエレメント５０に対し、更新後の共有秘密を入力に含めて共有秘密更新部１７の実行を指示する。一般的な実装としては、セキュアエレメント５０に実装されている共有秘密更新コマンド／ＡＰＩなどを用いることができる。
【０１７４】
Ｐ１４５（ＳＣ側共有秘密の更新）：セキュアエレメント５０の共有秘密更新部５７は、受信した更新後の共有秘密の値で、ＳＣ側の共有秘密を更新する。
【０１７５】
Ｐ１４６（デバイス共有鍵の再生成）：サーバ１０及びセキュアエレメント５０は、ＳＣ側乱数、サーバ側乱数及び更新後の共有秘密を入力として、新たなデバイス共通鍵（新）を生成する。
【０１７６】
Ｐ１４７（デバイスによる更新後の鍵取り出し）：デバイス７０は、再度セキュアエレメント５０に対し、デバイス共通鍵の出力を要求する。セキュアエレメント５０は、更新されたデバイス共通鍵（新）をデバイス７０に供給する。
【０１７７】
Ｐ１４８（暗号セッションの確立と暗号通信）：サーバ１０とデバイス７０は、デバイス共通鍵（新）に基づく暗号通信路を新たに確立する。
【０１７８】
上述の例では、共有秘密更新後、その他の情報（乱数）を更新することなく再度デバイス共有鍵を生成しているが、セキュリティ強度を確保するため、乱数などのその他の情報を含めて更新した上で再度デバイス共通鍵を生成してもよい。
【０１７９】
図１０は鍵生成アルゴリズムの追加の一例を示す説明図である。本実施例では、鍵生成アルゴリズムとして、ＳＨＡ−１、ＳＨＡ−２５６等、所定のアルゴリズムが事前に格納されているが、セキュアエレメント５０がＪａｖａＣａｒｄ（登録商標）や、ＴＥＥ等、トラスティッドアプリケーション（Trusted Application）をインストール可能な環境であれば、鍵生成アルゴリズムを動的に追加、削除することが可能である。以下では、共通鍵生成部１６、５６で用いるアルゴリズムとして、ＳＨＡ−３を追加する例を説明する。以下、符号Ｐ１５１〜Ｐ１５９で示す処理について説明する。
【０１８０】
Ｐ１５１（サーバ側共通鍵生成アルゴリズムの追加）：サーバ１０は、自身の共通鍵生成部１６に新たに追加する共通鍵生成アルゴリズムＳＨＡ−３（２２）の実装（プログラムコード）を追加する。
【０１８１】
Ｐ１５２（実装の暗号化）：サーバ１０は、追加したいアルゴリズムの実装を、登録済みのＳＣ公開鍵で暗号化する。
【０１８２】
Ｐ１５３（サーバ側署名の作成）：サーバ１０は、追加したいアルゴリズムの実装に対して、自身が保有するサーバ秘密鍵で署名を行い、暗号化された実装に添付する。
【０１８３】
Ｐ１５４（暗号化実装と署名の送信）：サーバ１０は、生成した暗号化実装と、生成した署名をまとめてデバイス７０経由でセキュアエレメント５０に送信する。
【０１８４】
Ｐ１５５（暗号化実装の復号）：セキュアエレメント５０は、受信した暗号化実装を、自身が保有するＳＣ秘密鍵で復号する。
【０１８５】
Ｐ１５６（署名検証）：セキュアエレメント５０は、受信した署名を、登録済みのサーバ公開鍵を用いて検証する。サーバ公開鍵による復号結果が、Ｐ１５５で復号した実装と対応付いており、サーバ秘密鍵による正当な署名であることを確認する。正当な署名でない場合、ここで処理を中断し、サーバ１０に対してエラー終了を通知する。
【０１８６】
Ｐ１５７（ＳＣ側共通鍵生成アルゴリズムの追加）：セキュアエレメント５０は、署名の正当性を確認後、受信したアルゴリズムの実装を自身の共通鍵生成部５６に追加する。
【０１８７】
Ｐ１５８（ＳＣ側共通鍵生成アルゴリズムの変更）：セキュアエレメント５０は、現在共通鍵生成に使用しているアルゴリズムを切り替える。本実施例では、新たに追加されたアルゴリズムを即時に有効にするポリシーを適用することとして、新たに追加されたＳＨＡ−３（６２）を即時に有効化し、従来使用していたＳＨＡ−２５６（６０）の使用を行わないように設定変更する。当該処理が正常に終了した場合、セキュアエレメント５０は、サーバ１０にその旨をデバイス７０経由で通知する。
【０１８８】
Ｐ１５９（サーバ側共通鍵生成アルゴリズムの変更）：サーバ１０は、セキュアエレメント５０からＰ１５８の処理が正常に終了したことを確認し、自身の共通鍵生成部１６で使用しているアルゴリズムを変更する。ここでは、セキュアエレメント５０と同様のポリシーを適用し、新たに追加されたＳＨＡ−３（２２）を即時に有効化し、従来使用していたＳＨＡ−２５６（２０）の使用を行わないように設定変更する。以降、サーバ１０及びセキュアエレメント５０は、新たに追加され、有効化されたＳＨＡ−３により、デバイス共通鍵を生成する。
【０１８９】
上述のように、共通鍵生成部１６、５６それぞれは、所定のタイミングで、デバイス共通鍵を生成するためのアルゴリズムを変更することができる。所定のタイミングは、例えば、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。アルゴリズムの変更は、アルゴリズムの追加、削除、切替を含む。これにより、サーバ１０とデバイス７０との間の暗号通信のセキュリティを更に高めることができる。
【０１９０】
上述の例では、新たに追加されたアルゴリズムを即時有効化しているが、これに限定されるものではなく、任意のタイミングで有効化してもよい。また、上述の例では、交換された公開鍵に基づいて、共通鍵生成アルゴリズムの追加を行っているが、これに限定されるものではなく、例えば、別途、GlobalPlatform仕様、JavaCard仕様等の技術を適用して共通鍵生成アルゴリズムの追加、削除を行ってもよい。
【０１９１】
図１１はサーバ１０による公開鍵の交換処理の手順の一例を示すフローチャートである。サーバ１０は、セキュアエレメント秘密鍵（ＳＣ秘密鍵）で暗号化されたＳＣＩＤ及びセキュアエレメント公開鍵（ＳＣ公開鍵）を受信し（Ｓ１１）、暗号化されたＳＣＩＤをセキュアエレメント公開鍵により復号する（Ｓ１２）。
【０１９２】
サーバ１０は、ＳＣＩＤの検証を行い（Ｓ１３）、セキュアエレメント公開鍵を登録する（Ｓ１４）。サーバ１０は、サーバ公開鍵及びサーバ秘密鍵を生成し（Ｓ１５）、サーバＩＤをサーバ秘密鍵で暗号化する（Ｓ１６）。
【０１９３】
サーバ１０は、サーバ公開鍵及び暗号化されたサーバＩＤをデバイス７０経由でセキュアエレメント５０に送信し（Ｓ１７）、処理を終了する。
【０１９４】
図１２はセキュアエレメント５０による公開鍵の交換処理の手順の一例を示すフローチャートである。セキュアエレメント５０は、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成し（Ｓ２１）、セキュアエレメントＩＤ（ＳＣＩＤ）をセキュアエレメント秘密鍵で暗号化する（Ｓ２２）。
【０１９５】
セキュアエレメント５０は、セキュアエレメント公開鍵及び暗号化されたセキュアエレメントＩＤをデバイス７０経由でサーバ１０に送信する（Ｓ２３）。セキュアエレメント５０は、サーバ秘密鍵で暗号化されたサーバＩＤ及びサーバ公開鍵を受信し（Ｓ２４）、暗号化されたサーバＩＤをサーバ公開鍵により復号する（Ｓ２５）。
【０１９６】
セキュアエレメント５０は、サーバＩＤの検証を行い（Ｓ２６）、サーバ公開鍵を登録し（Ｓ２７）、処理を終了する。
【０１９７】
図１３はサーバ１０によるデバイス共通鍵の生成処理の手順の一例を示すフローチャートである。サーバ１０は、サーバ側乱数を生成し（Ｓ４１）、登録済みのセキュアエレメント公開鍵を用いてサーバ側乱数を暗号化する（Ｓ４２）。
【０１９８】
サーバ１０は、暗号化したサーバ側乱数をデバイス７０経由でセキュアエレメント５０に送信する（Ｓ４３）。サーバ１０は、暗号化されたセキュアエレメント側乱数を受信し（Ｓ４４）、受信したセキュアエレメント側乱数をサーバ秘密鍵で復号する（Ｓ４５）。サーバ１０は、復号したセキュアエレメント側乱数、サーバ側乱数を入力として所定の共通鍵生成アルゴリズムを用いてデバイス共通鍵を生成し（Ｓ４６）、処理を終了する。
【０１９９】
図１４はセキュアエレメント５０によるデバイス共通鍵の生成処理の手順の一例を示すフローチャートである。セキュアエレメント５０は、セキュアエレメント側乱数を生成し（Ｓ５１）、登録済みのサーバ公開鍵を用いてセキュアエレメント側乱数を暗号化する（Ｓ５２）。
【０２００】
セキュアエレメント５０は、暗号化したセキュアエレメント側乱数をデバイス７０経由でサーバ１０に送信する（Ｓ５３）。セキュアエレメント５０は、暗号化されたサーバ側乱数を受信し（Ｓ５４）、受信したサーバ側乱数をサーバ秘密鍵で復号する（Ｓ５５５）。セキュアエレメント５０は、復号したサーバ側乱数、セキュアエレメント側乱数を入力として所定の共通鍵生成アルゴリズムを用いてデバイス共通鍵を生成し（Ｓ５６）、処理を終了する。
【０２０１】
サーバ１０を、ＣＰＵ、ＲＡＭ及びＲＯＭなどを含むコンピュータで構成し、図１１及び図１３に示すような処理手順を定めたコンピュータプログラムをＲＡＭにロードし、ＣＰＵ（プロセッサ）により当該コンピュータプログラムを実行させることにより、サーバ１０の各処理をコンピュータプログラムによって実現することができる。
【０２０２】
本実施の形態に係る暗号通信システムは、サーバと、セキュアエレメントを搭載するデバイスとを備える暗号通信システムであって、前記セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部とを備え、前記サーバは、前記セキュアエレメント出力部から出力されたセキュアエレメント公開鍵を取得して登録するサーバ登録部と、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部とを備え、前記セキュアエレメントは、さらに、前記サーバ出力部から出力されたサーバ公開鍵を取得して登録するセキュアエレメント登録部を備え、前記サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、前記セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。
【０２０３】
本実施の形態に係るセキュアエレメントは、サーバと暗号通信を行うデバイスに搭載されるセキュアエレメントであって、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部と、前記サーバが出力するサーバ公開鍵を取得して登録するセキュアエレメント登録部とを備え、前記セキュアエレメントと前記サーバとの間の暗号通信に前記セキュアエレメント登録部で登録されたサーバ公開鍵を用いる。
【０２０４】
本実施の形態に係るデバイスは、前述のセキュアエレメントを搭載し、所定のサーバと暗号通信を行うことができる。
【０２０５】
本実施の形態に係るサーバは、セキュアエレメントが搭載されたデバイスと暗号通信を行うサーバであって、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部と、前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録するサーバ登録部とを備え、前記セキュアエレメントとの間の暗号通信に前記サーバ登録部で登録されたセキュアエレメント公開鍵を用いる。
【０２０６】
本実施の形態に係るコンピュータプログラムは、コンピュータに、サーバ公開鍵及びサーバ秘密鍵を生成する処理と、生成したサーバ公開鍵をデバイスに搭載されたセキュアエレメントへ出力する処理と、前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録する処理と、登録されたセキュアエレメント公開鍵を用いて、前記セキュアエレメントとの間で暗号通信を行う処理とを実行させる。
【０２０７】
本実施の形態に係る暗号通信方法は、サーバと、セキュアエレメントを搭載するデバイスとの間の暗号通信方法であって、前記セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成し、前記デバイスを経由して生成されたセキュアエレメント公開鍵を前記サーバへ出力し、前記サーバは、前記セキュアエレメントから出力されたセキュアエレメント公開鍵を取得して登録し、サーバ公開鍵及びサーバ秘密鍵を生成し、前記デバイスを経由して生成されたサーバ公開鍵を前記セキュアエレメントへ出力し、前記セキュアエレメントは、さらに、前記サーバから出力されたサーバ公開鍵を取得して登録し、前記サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、前記セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。
【０２０８】
デバイスには、セキュアエレメントが搭載されている。セキュアエレメントは、耐タンパ性を有し、デバイスとは物理的に独立している。セキュアエレメントは、セキュアエレメント鍵生成部、セキュアエレメント出力部、セキュアエレメント登録部を備える。
【０２０９】
セキュアエレメント鍵生成部は、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成する。セキュアエレメント公開鍵は、セキュアエレメント側の公開鍵という意味であり、セキュアエレメント秘密鍵は、セキュアエレメント側の秘密鍵という意味である。生成される公開鍵及び秘密鍵は、非対称鍵ペアということができ、例えば、ＲＳＡ暗号では、公開鍵から秘密鍵を作ることは困難であり、秘密鍵から公開鍵を作ることは容易であるという特徴を有する。
【０２１０】
セキュアエレメント出力部は、生成した非対称鍵ペアのうち、生成したセキュアエレメント公開鍵を、デバイスを経由してサーバへ出力する。
【０２１１】
サーバは、サーバ登録部、サーバ鍵生成部、サーバ出力部を備える。
【０２１２】
サーバ登録部は、セキュアエレメント出力部から出力されたセキュアエレメント公開鍵を取得して登録する。これにより、サーバは、セキュアエレメント公開鍵を共有することができる。すなわち、セキュアエレメント公開鍵を予め準備して固定鍵の如くサーバに記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、セキュアエレメント公開鍵は、セキュアエレメントによって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
【０２１３】
サーバ鍵生成部は、サーバ公開鍵及びサーバ秘密鍵を生成する。サーバ公開鍵は、サーバ側の公開鍵という意味であり、サーバ秘密鍵は、サーバ側の秘密鍵という意味である。生成される公開鍵及び秘密鍵は、非対称鍵ペアということができ、例えば、ＲＳＡ暗号では、公開鍵から秘密鍵を作ることは困難であり、秘密鍵から公開鍵を作ることは容易であるという特徴を有する。
【０２１４】
サーバ出力部は、生成した非対称鍵ペアのうち、生成したサーバ公開鍵を、デバイスを経由してセキュアエレメントへ出力する。
【０２１５】
セキュアエレメント登録部は、サーバ出力部から出力されたサーバ公開鍵を取得して登録する。これにより、セキュアエレメントは、サーバ公開鍵を共有することができる。すなわち、サーバ公開鍵を予め準備して固定鍵の如くセキュアエレメントに記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、サーバ公開鍵は、サーバによって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
【０２１６】
サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。これにより、サーバ及びセキュアエレメントそれぞれは、鍵の事前共有を必要としない。また、サーバには、セキュアエレメント秘密鍵に対応するセキュアエレメント公開鍵が登録されているので、サーバからセキュアエレメントへの一方向暗号化が可能な通信路をサーバとセキュアエレメントとの間で確保することができる。また、セキュアエレメントには、サーバ秘密鍵に対応するサーバ公開鍵が登録されているので、セキュアエレメントからサーバへの一方向暗号化が可能な通信路をサーバとセキュアエレメントとの間で確保することができる。
【０２１７】
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、登録したサーバ公開鍵を用いて所定のセキュアエレメント情報を暗号化するセキュアエレメント第１暗号化部を備え、前記セキュアエレメント出力部は、前記セキュアエレメント第１暗号化部で暗号化されたセキュアエレメント情報を前記サーバへ出力し、前記サーバは、前記サーバ秘密鍵を用いて前記暗号化されたセキュアエレメント情報を復号するサーバ第１復号部と、登録したセキュアエレメント公開鍵を用いて所定のサーバ情報を暗号化するサーバ第１暗号化部を備え、前記サーバ出力部は、前記サーバ第１暗号化部で暗号化されたサーバ情報を前記セキュアエレメントへ出力し、前記セキュアエレメントは、さらに、前記セキュアエレメント秘密鍵を用いて前記暗号化されたサーバ情報を復号するセキュアエレメント第１復号部を備える。
【０２１８】
セキュアエレメントは、セキュアエレメント第１暗号化部、セキュアエレメント第１復号部を備える。サーバは、サーバ第１暗号化部、サーバ第１復号部を備える。
【０２１９】
セキュアエレメント第１暗号化部は、登録したサーバ公開鍵を用いて所定のセキュアエレメント情報を暗号化する。所定のセキュアエレメント情報は、セキュアエレメントが生成した乱数を用いてもよく、乱数以外の情報を用いてもよい。
【０２２０】
セキュアエレメント出力部は、セキュアエレメント第１暗号化部で暗号化されたセキュアエレメント情報をサーバへ出力する。
【０２２１】
サーバ第１復号部は、サーバ秘密鍵を用いて暗号化されたセキュアエレメント情報を復号する。これにより、サーバは、例えば、セキュアエレメントが生成した乱数などの情報を、セキュアエレメントとの間で共有できる。
【０２２２】
サーバ第１暗号化部は、登録したセキュアエレメント公開鍵を用いて所定のサーバ情報を暗号化する。所定のサーバ情報は、サーバが生成した乱数を用いてもよく、乱数以外の情報を用いてもよい。
【０２２３】
サーバ出力部は、サーバ第１暗号化部で暗号化されたサーバ情報をセキュアエレメントへ出力する。
【０２２４】
セキュアエレメント第１復号部は、セキュアエレメント秘密鍵を用いて暗号化されたサーバ情報を復号する。これにより、セキュアエレメントは、例えば、サーバが生成した乱数などの情報を、サーバとの間で共有できる。これにより、サーバ及びセキュアエレメントそれぞれは、所定のセキュアエレメント情報及び所定のサーバ情報を共有することができ、サーバ及びセキュアエレメントの共有鍵を生成する際に使用する情報を共有することができる。
【０２２５】
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記サーバ第１復号部で復号したセキュアエレメント情報及び前記サーバ情報を用いて共通鍵を生成するサーバ共通鍵生成部を備え、前記セキュアエレメントは、前記セキュアエレメント第１復号部で復号したサーバ情報及び前記セキュアエレメント情報を用いて共通鍵を生成するセキュアエレメント共通鍵生成部を備え、前記セキュアエレメント共通鍵生成部で生成した共通鍵を前記デバイスへ出力し、前記サーバ及びデバイスは、前記共通鍵に基づく暗号通信を行う。
【０２２６】
サーバは、サーバ共通鍵生成部を備える。セキュアエレメントは、セキュアエレメント共通鍵生成部を備える。
【０２２７】
サーバ共通鍵生成部は、サーバ第１復号部で復号したセキュアエレメント情報及びサーバ情報を用いて共通鍵を生成する。セキュアエレメント共通鍵生成部は、セキュアエレメント第１復号部で復号したサーバ情報及びセキュアエレメント情報を用いて共通鍵を生成する。すなわち、サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部は、共通のセキュアエレメント情報及びサーバ情報を用いて共通鍵を生成する。例えば、セキュアエレメント情報及びサーバ情報を入力データとして、共通鍵を生成するアルゴリズムとして、例えば、所定のハッシュ関数を用いることにより、同一のデータ列を出力として得ることができ、このデータ列を共通鍵とすることができる。セキュアエレメントは、セキュアエレメント共通鍵生成部で生成した共通鍵をデバイスへ出力する。
【０２２８】
サーバ及びデバイスは、生成された共通鍵に基づく暗号通信を行う。上述の構成により、サーバとデバイスとの間の通信路を介して共通鍵の授受をする必要がなく、共通鍵が通信路に載らないので、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。また、共通鍵を生成するために用いられるセキュアエレメント情報及びサーバ情報が仮に漏洩しても、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。これにより、サーバとデバイスとの間の暗号通信が危殆化しない。
【０２２９】
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記セキュアエレメント秘密鍵を用いてセキュアエレメント識別情報を暗号化するセキュアエレメント第２暗号化部を備え、前記セキュアエレメント出力部は、前記セキュアエレメント第２暗号化部で暗号化されたセキュアエレメント識別情報を前記サーバへ出力し、前記サーバは、取得したセキュアエレメント公開鍵を用いて前記暗号化されたセキュアエレメント識別情報を復号するサーバ第２復号部を備え、前記サーバ登録部は、前記サーバ第２復号部で復号したセキュアエレメント識別情報に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。
【０２３０】
セキュアエレメントは、セキュアエレメント第２暗号化部を備える。サーバは、サーバ第２復号部を備える。
【０２３１】
セキュアエレメント第２暗号化部は、セキュアエレメント秘密鍵を用いてセキュアエレメント識別情報を暗号化する。セキュアエレメント識別情報は、例えば、セキュアエレメントごとに固有に割り振られているＩＤ（ＳＣＩＤ）とすることができる。
【０２３２】
セキュアエレメント出力部は、セキュアエレメント第２暗号化部で暗号化されたセキュアエレメント識別情報をサーバへ出力する。
【０２３３】
サーバ第２復号部は、取得したセキュアエレメント公開鍵を用いて、暗号化されたセキュアエレメント識別情報を復号する。
【０２３４】
サーバ登録部は、サーバ第２復号部で復号したセキュアエレメント識別情報に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。セキュアエレメント公開鍵の登録可否は、例えば、復号したセキュアエレメント識別情報が正当なものであるか否かを検証することによって判定できる。例えば、復号したセキュアエレメント識別情報が、既に登録済のセキュアエレメント識別情報である場合、正当ではないとしてセキュアエレメント公開鍵の登録を実行しない。また、復号したセキュアエレメント識別情報が、登録済のセキュアエレメント識別情報でない場合、正当であるとしてセキュアエレメント公開鍵の登録を実行する。これにより、取得したセキュアエレメント公開鍵の正当性を判定した上で登録することができる。
【０２３５】
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記サーバ秘密鍵を用いてサーバ識別情報を暗号化するサーバ第２暗号化部を備え、前記サーバ出力部は、前記サーバ第２暗号化部で暗号化されたサーバ識別情報を前記セキュアエレメントへ出力し、前記セキュアエレメントは、取得したサーバ公開鍵を用いて前記暗号化されたサーバ識別情報を復号するセキュアエレメント第２復号部を備え、前記セキュアエレメント登録部は、前記セキュアエレメント第２復号部で復号したサーバ識別情報に基づいて、取得したサーバ公開鍵の登録可否を判定する。
【０２３６】
サーバは、サーバ第２暗号化部を備える。セキュアエレメントは、セキュアエレメント第２復号部を備える。
【０２３７】
サーバ第２暗号化部は、サーバ秘密鍵を用いてサーバ識別情報を暗号化する。サーバ識別情報は、例えば、サーバごとに固有に割り振られているＩＤ（サーバＩＤ）とすることができ、例えば、サーバのＵＲＬを用いることができる。
【０２３８】
サーバ出力部は、サーバ第２暗号化部で暗号化されたサーバ識別情報をセキュアエレメントへ出力する。
【０２３９】
セキュアエレメント第２復号部は、取得したサーバ公開鍵を用いて、暗号化されたサーバ識別情報を復号する。
【０２４０】
セキュアエレメント登録部は、セキュアエレメント第２復号部で復号したサーバ識別情報に基づいて、取得したサーバ公開鍵の登録可否を判定する。サーバ公開鍵の登録可否は、例えば、復号したサーバ識別情報が正当なものであるか否かを検証することによって判定できる。例えば、復号したサーバ識別情報が、既に登録済のサーバ識別情報である場合、正当ではないとしてサーバ公開鍵の登録を実行しない。また、復号したサーバ識別情報が、登録済のサーバ識別情報でない場合、正当であるとしてサーバ公開鍵の登録を実行する。これにより、取得したサーバ公開鍵の正当性を判定した上で登録することができる。
【０２４１】
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵に関する認証を認証局サーバへ要求するセキュアエレメント認証要求部を備え、前記セキュアエレメント出力部は、前記認証局サーバによる認証が得られた場合、前記セキュアエレメント公開鍵を前記サーバへ出力する。
【０２４２】
セキュアエレメントは、セキュアエレメント認証要求部を備える。セキュアエレメント認証要求部は、セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵に関する認証を認証局サーバへ要求する。認証局サーバは、他の主体（サーバやセキュアエレメント）が保有する公開鍵の正当性を裏付けるためのサーバである。認証局サーバの認証によって、公開鍵を提供する主体の正当性を証明できる。
【０２４３】
セキュアエレメント出力部は、認証局サーバによる認証が得られた場合、セキュアエレメント公開鍵をサーバへ出力する。これにより、セキュアエレメントが生成したセキュアエレメント公開鍵の正当性を確立することができる。
【０２４４】
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記認証局サーバによる認証が得られた場合、前記認証局サーバが生成した認証局署名を取得するセキュアエレメント取得部を備え、前記セキュアエレメント出力部は、前記セキュアエレメント取得部で取得した認証局署名を前記サーバへ出力し、前記サーバ登録部は、前記認証局署名の検証結果に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。
【０２４５】
セキュアエレメントは、セキュアエレメント取得部を備える。セキュアエレメント取得部は、認証局サーバによる認証が得られた場合、認証局サーバが生成した認証局署名を取得する。認証局サーバは、自身が保有する秘密鍵（ＣＡ秘密鍵）を使用して、セキュアエレメント公開鍵に対する認証局署名（ＣＡ署名）を生成し、デバイスを経由して生成した認証局署名をセキュアエレメントへ送信することができる。認証局サーバは、署名を要求したセキュアエレメントが信頼できる主体であることを確認した上で、セキュアエレメント公開鍵に対してＣＡ秘密鍵を用いて署名を行うことで、セキュアエレメント公開鍵が信頼できることを示す。セキュアエレメント出力部は、セキュアエレメント取得部で取得した認証局署名をサーバへ出力する。
【０２４６】
サーバ登録部は、認証局署名の検証結果に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。認証局署名の検証は、例えば、認証局サーバが保有する公開鍵（ＣＡ公開鍵）を取得し、取得したＣＡ公開鍵を用いて、セキュアエレメント公開鍵に対するＣＡ署名を検証することができる。検証結果に問題がなければ、取得したセキュアエレメント公開鍵を登録し、検証結果に問題があれば、取得したセキュアエレメント公開鍵の登録をしない。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
【０２４７】
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記サーバ鍵生成部で生成したサーバ公開鍵に関する認証を認証局サーバへ要求するサーバ認証要求部を備え、前記サーバ出力部は、前記認証局サーバによる認証が得られた場合、前記サーバ公開鍵を前記セキュアエレメントへ出力する。
【０２４８】
サーバは、サーバ認証要求部を備える。サーバ認証要求部は、サーバ鍵生成部で生成したサーバ公開鍵に関する認証を認証局サーバへ要求する。認証局サーバは、他の主体（サーバやセキュアエレメント）が保有する公開鍵の正当性を裏付けるためのサーバである。認証局サーバの認証によって、公開鍵を提供する主体の正当性を証明できる。
【０２４９】
サーバ出力部は、認証局サーバによる認証が得られた場合、サーバ公開鍵をセキュアエレメントへ出力する。これにより、サーバが生成したサーバ公開鍵の正当性を確立することができる。
【０２５０】
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記認証局サーバによる認証が得られた場合、前記認証局サーバが生成した認証局署名を取得するサーバ取得部を備え、前記サーバ出力部は、前記サーバ取得部で取得した認証局署名を前記セキュアエレメントへ出力し、前記セキュアエレメント登録部は、前記認証局署名の検証結果に基づいて、取得したサーバ公開鍵の登録可否を判定する。
【０２５１】
サーバは、サーバ取得部を備える。サーバ取得部は、認証局サーバによる認証が得られた場合、認証局サーバが生成した認証局署名を取得する。認証局サーバは、自身が保有する秘密鍵（ＣＡ秘密鍵）を使用して、サーバ公開鍵に対する認証局署名（ＣＡ署名）を生成し、生成した認証局署名をサーバへ送信することができる。認証局サーバは、署名を要求したサーバが信頼できる主体であることを確認して上で、サーバ公開鍵に対してＣＡ秘密鍵を用いて署名を行うことで、サーバ公開鍵が信頼できることを示す。サーバ出力部は、サーバ取得部で取得した認証局署名をセキュアエレメントへ出力する。
【０２５２】
セキュアエレメント登録部は、認証局署名の検証結果に基づいて、取得したサーバ公開鍵の登録可否を判定する。認証局署名の検証は、例えば、認証局サーバが保有する公開鍵（ＣＡ公開鍵）を取得し、取得したＣＡ公開鍵を用いて、サーバ公開鍵に対するＣＡ署名を検証することができる。検証結果に問題がなければ、取得したサーバ公開鍵を登録し、検証結果に問題があれば、取得したサーバ公開鍵の登録をしない。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
【０２５３】
本実施の形態に係る暗号通信システムにおいて、前記サーバは、所要のタイミングで登録済のセキュアエレメント公開鍵の失効の有無を判定するサーバ判定部と、前記サーバ判定部で失効があると判定された場合、登録済の前記セキュアエレメント公開鍵を無効にするサーバ無効処理部とを備え、前記セキュアエレメントは、所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定するセキュアエレメント判定部と、前記セキュアエレメント判定部で失効があると判定された場合、登録済の前記サーバ公開鍵を無効にするセキュアエレメント無効処理部とを備える。
【０２５４】
サーバは、サーバ判定部、サーバ無効処理部を備える。セキュアエレメントは、セキュアエレメント判定部、セキュアエレメント無効処理部を備える。
【０２５５】
サーバ判定部は、所要のタイミングで登録済のセキュアエレメント公開鍵の失効の有無を判定する。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。セキュアエレメント公開鍵の失効は、例えば、認証局サーバによる公開鍵の失効処理の結果（公開鍵失効済みリスト）に基づいて判定できる。
【０２５６】
サーバ無効処理部は、サーバ判定部で失効があると判定された場合、登録済のセキュアエレメント公開鍵を無効にする。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
【０２５７】
セキュアエレメント判定部は、所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定する。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。サーバ公開鍵の失効は、例えば、認証局サーバによる公開鍵の失効処理の結果（公開鍵失効済みリスト）に基づいて判定できる。
【０２５８】
セキュアエレメント無効処理部は、セキュアエレメント判定部で失効があると判定された場合、登録済のサーバ公開鍵を無効にする。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
【０２５９】
本実施の形態に係る暗号通信システムにおいて、前記サーバ無効処理部は、さらに、前記サーバ共通鍵生成部で生成した共通鍵を無効にし、前記セキュアエレメント無効処理部は、さらに、前記セキュアエレメント共通鍵生成部で生成した共通鍵を無効にする。
【０２６０】
サーバ無効処理部は、さらに、サーバ共通鍵生成部で生成した共通鍵を無効にし、セキュアエレメント無効処理部は、さらに、セキュアエレメント共通鍵生成部で生成した共通鍵を無効にする。これにより、共通鍵による暗号通信を遮断することができる。
【０２６１】
本実施の形態に係る暗号通信システムにおいて、前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、所定の契機で、生成した共通鍵を更新する。
【０２６２】
サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部それぞれは、所定の契機で、生成した共通鍵を更新する。所定の契機は、例えば、同一の共通鍵を用いて行った暗号通信の回数が所定回数になった場合、サーバ又はセキュアエレメントに対する外部からの更新指示などとすることができるが、これに限定されない。
【０２６３】
上述のように、デバイス（デバイス本体）は、共通鍵の生成をセキュアエレメントに依存しているので、デバイスのセキュリティは、セキュアエレメントに従属することになり、デバイスの共通鍵管理を一層強力にすることができる。
【０２６４】
すなわち、サーバ及びセキュアエレメントの共通鍵を、一定の規則性に基づいて動的に更新した場合、デバイスは、セキュアエレメントから更新後の共通鍵の供給を受けない限り、共通鍵の更新後の暗号通信を正しく実行することができない。このことは、デバイスが適切なセキュアエレメントの管理下で動作していることの動的検証と同義であり、セキュアブート等の起動時や鍵生成時のみならず、継続的にデバイスのセキュリティ検証を行うことができることを意味する。
【０２６５】
本実施の形態に係る暗号通信システムにおいて、前記デバイスは、前記所定の契機に応じて、前記セキュアエレメントに対して共通鍵の取得要求を出力し、前記セキュアエレメントは、前記セキュアエレメント共通鍵生成部で更新した共通鍵を前記デバイスに供給する。
【０２６６】
デバイスは、所定の契機に応じて、セキュアエレメントに対して共通鍵の取得要求を出力する。セキュアエレメントは、更新した共通鍵をデバイスに供給する。これにより、デバイスは、サーバ側の共通鍵が更新された場合でも、デバイスに搭載されたセキュアエレメントによって供給される更新後の共通鍵を用いてサーバとの間で暗号通信を行うことができる。
【０２６７】
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記デバイスとの間で共通鍵が一致しない場合、前記デバイスの異常に対応する処理を実行する。
【０２６８】
サーバは、デバイスとの間で共通鍵が一致しない場合、デバイスの異常に対応する処理を実行する。デバイスの異常に対応する処理は、サーバ側のセキュリティポリシーに応じた種々の適切な処理とすることができる。例えば、現在開設中の暗号通信を遮断する処理、交換済の公開鍵ペアを無効とする処理、当該セキュアエレメントのＳＣＩＤによる公開鍵登録を拒否し不正なデバイスとして取り扱う処理などを含む。
【０２６９】
本実施の形態に係る暗号通信システムにおいて、前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、所定のタイミングで、共通鍵を生成するためのアルゴリズムを変更する。
【０２７０】
サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部それぞれは、所定のタイミングで、共通鍵を生成するためのアルゴリズムを変更する。所定のタイミングは、例えば、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。アルゴリズムの変更は、アルゴリズムの追加、削除、切替を含む。これにより、サーバとデバイスとの間の暗号通信のセキュリティを更に高めることができる。
【０２７１】
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記セキュアエレメントが接続されたデバイス本体を認証するデバイス認証部を備え、前記セキュアエレメント共通鍵生成部は、前記デバイス認証部でデバイス本体が認証された場合、生成した共通鍵を前記デバイス本体に出力し、前記サーバ及びデバイスは、前記共通鍵に基づく暗号通信を行う。
【０２７２】
セキュアエレメントは、セキュアエレメント（自身）が接続されたデバイス本体を認証するデバイス認証部を備える。デバイス本体の認証は、適宜の手法を用いることができる。
【０２７３】
セキュアエレメント共通鍵生成部は、デバイス認証部でデバイス本体が認証された場合、生成した共通鍵をデバイス本体に出力する。これにより、意図した（正規の）デバイスに適切なセキュアエレメントが接続されていることを確認することができる。
【０２７４】
本実施の形態に係る暗号通信システムにおいて、前記サーバ及び前記セキュアエレメントそれぞれは、予め定められた共有情報を保持する保持部を備え、前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、前記共有情報をさらに用いて共通鍵を生成する。
【０２７５】
サーバ及びセキュアエレメントそれぞれは、予め定められた共有情報を保持する保持部を備える。共有情報は、例えば、サーバ及びセキュアエレメント以外の外部に公開されていない共有秘密情報とすることができる。
【０２７６】
サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部それぞれは、共有情報をさらに用いて共通鍵を生成する。すなわち、共通鍵の生成元となる情報として、セキュアエレメント情報及びサーバ情報の他に、さらに共有情報を用いる。これにより、攻撃者が、仮にセキュアエレメント情報及びサーバ情報を不正に取得して把握したとしても、共有情報を知らない限り、共通鍵を生成することができないので、サーバとデバイスとの間の暗号通信のセキュリティを一層高めることができる。
【０２７７】
本実施の形態に係る暗号通信システムにおいて、前記保持部に保持された共有情報は、更新可能である。
【０２７８】
例えば、セキュアエレメントの保持部に保持された共有情報は、外部であるサーバから更新することができる。これにより、共有情報が、固定された情報でなく、更新される情報であるため、サーバとデバイスとの間の暗号通信のセキュリティをさらに高めることができる。
【０２７９】
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、ハードウェアエレメント又はソフトウェアエレメントで構成されている。
【０２８０】
セキュアエレメントは、ハードウェアエレメント又はソフトウェアエレメントで構成されている。これにより、デバイスの種類などに応じて適切なセキュアエレメントをデバイスに搭載できる。
【０２８１】
上述のように、本実施の形態によれば、デバイス（例えば、ＩｏＴデバイス）の鍵共有の安全性及び自由度を飛躍的に高めるとともに、デバイスにおける暗号通信及びデバイス自身の信頼性を一層高めることができる。すなわち、共通鍵を事前に共有する必要がなく、通信路の秘匿性が特定の固定鍵に依存することがない。また、鍵の設定の自由度を確保することができ、ハッキングなどのリスクを低減できる。また、鍵値が通信路に載らないため、鍵生成の詳細を知らない限り、鍵生成の元となる情報を不正に入手できたとしても、攻撃者は鍵を生成することができない。これにより、サーバとデバイスとの間の暗号通信が危殆化しない。
【符号の説明】
【０２８２】
１０  サーバ
１１  記憶部
１２  ＳＣ公開鍵ストア
１３  鍵ペア生成部
１４  乱数生成部
１５  署名検証部
１６  共通鍵生成部
１７  共有秘密更新部
１８  鍵正当性確認部
２１  暗号通信部
５０  セキュアエレメント
５１、７１  記憶部
５２  サーバ公開鍵ストア
５３  鍵ペア生成部
５４  乱数生成部
５５  署名検証部
５６  共通鍵生成部
５７  共有秘密更新部
５８  鍵正当性確認部
６１  暗号通信部
７０  デバイス
１００  認証局サーバ
１０１  公開鍵失効済みリスト
１０２  署名生成済みリスト
【図１】
2020202505.tif 000003
【図２】
2020202505.tif 000004
【図３】
2020202505.tif 000005
【図４】
2020202505.tif 000006
【図５】
2020202505.tif 000007
【図６】
2020202505.tif 000008
【図７】
2020202505.tif 000009
【図８】
2020202505.tif 000010
【図９】
2020202505.tif 000011
【図１０】
2020202505.tif 000012
【図１１】
2020202505.tif 000013
【図１２】
2020202505.tif 000014
【図１３】
2020202505.tif 000015
【図１４】
2020202505.tif 000016