以下、本発明の実施の形態を図面に基づいて説明する。図1は本実施の形態の暗号通信システムの構成の一例を示すブロック図である。暗号通信システムは、鍵管理を行うサーバ10及びデバイス70を備える。デバイス70は、サーバ10による暗号化鍵管理対象となっているデバイスであり、「モノのインターネット」(IoT)でいうところの「モノ」に該当するデバイス(電子デバイスとも称する)を含む。デバイス70は、IoTデバイスとも称され、セキュアエレメント50、記憶部71を備える。すなわち、デバイス70は、セキュアエレメント50を搭載し、デバイス70のうち、セキュアエレメント50以外の部分をデバイス本体と称する。
セキュアエレメント50は、耐タンパ性を有し、デバイス70とは物理的に独立したものである。セキュアエレメント50は、サーバ10と対向通信するための鍵を格納しつつ、自身が生成した鍵をデバイス70に供給する。セキュアエレメント50は、ハードウェアエレメントであってもよく、あるいはソフトウェアエレメント(ソフトウェアコンポーネント)であってもよい。ソフトウェアコンポーネントの場合、TEE(Trusted Execution Environment)などの独立したセキュリティ環境と、当該環境で動作するアプリケーションが該当する。これにより、デバイスの種類などに応じて適切なセキュアエレメント50をデバイス70に搭載できる。
サーバ10は、セキュアエレメント50とともにデバイス70の鍵を管理するサーバである。サーバ10とデバイス70との間は、インタフェース1を経由して暗号通信を行うことができる。インタフェース1は、例えば、イーサネット(登録商標)やWifi(登録商標)などの物理インタフェースの上に、TCP/IP等のネットワークコネクションを開設して確立できる。
デバイス70とセキュアエレメント50とは、インタフェース2を介して接続される。セキュアエレメント50がICカードの場合には、インタフェース2は、例えば、ISO7816、セキュアエレメント50がICカード以外の場合には、インタフェース2は、SPI/I2C等の物理的な通信路となる。セキュアエレメント50がソフトウェアコンポーネントの場合には、インタフェース2はAPI(Application Programming Interface)等が想定される。セキュアエレメント50がサーバ10と通信する場合、デバイス70とサーバ10との間のインタフェース1を経由して行うことができる。
サーバ10は、インタフェース4を介して認証局サーバ100に接続することができる。デバイス70は、インタフェース3を介して認証局サーバ100に接続することができる。インタフェース3は、インタフェース1と同様の構成とすることができる。
認証局サーバ100は、他の主体(サーバやセキュアエレメント)が保有する公開鍵の正当性を裏付けるためのサーバであり、CA(Certificate Authority、Certification Authority)サーバとも称する。認証局サーバ100は、CSR(Certificate Signing Request:署名生成リクエスト)に対して署名を払い出し、公開鍵を提供する主体の正当性を証明する。また、認証局サーバ100は、公開鍵の失効について問い合わせを受け、失効有無を問い合わせ元に返す。
セキュアエレメント50は、記憶部51、サーバ公開鍵ストア52、鍵ペア生成部53、乱数生成部54、署名検証部55、共通鍵生成部56、共有秘密更新部57、及び鍵正当性確認部58を備える。共通鍵生成部56は、鍵生成を行うためのアルゴリズムが内包されており、SHA−1(59)、SHA−256(60)が搭載されている。
記憶部51は、SCID、共有秘密、SC秘密鍵、SC公開鍵、デバイス公開鍵などの値を記憶する。SCIDは、セキュアエレメント識別情報とも称し、セキュアエレメント毎に固有に割り振られているIDである。共有秘密は、共有情報とも称し、サーバ10及びセキュアエレメント50間で事前に共有されている秘密情報であり、サーバ10及びセキュアエレメント50以外の外部に公開されていない秘密情報とすることができる。SC秘密鍵は、セキュアエレメント秘密鍵とも称し、セキュアエレメント50が生成する非対称鍵ペアに含まれる秘密鍵である。SC公開鍵は、セキュアエレメント公開鍵とも称し、セキュアエレメント50が生成する非対称鍵ペアに含まれる公開鍵である。デバイス公開鍵は、デバイス70がデバイス証明書を提供した際に当該証明書の正当性を検証するための鍵である。
サーバ公開鍵ストア52は、セキュアエレメント登録部としての機能を有し、セキュアエレメント50内にサーバ公開鍵を登録するためのデータベースである。サーバ公開鍵を登録する場合、サーバID(サーバ識別情報)とサーバ公開鍵とが対応付けて格納される。
鍵ペア生成部53は、セキュアエレメント鍵生成部としての機能を有し、セキュアエレメント50内で非対称鍵暗号(RSA等)の鍵のペア(SC公開鍵及びSC秘密鍵)を生成する。
乱数生成部54は、セキュアエレメント50内で乱数を生成する。
共通鍵生成部56は、セキュアエレメント共通鍵生成部としての機能を有し、セキュアエレメント50内で、入力された情報と、所定のアルゴリズムに従って共有鍵を生成する。共通鍵生成部56は、例えば、入力されたデータ列に対して所定のハッシュ演算を行い、ハッシュ演算により得られたハッシュ値を出力することができる。共通鍵生成部56は、複数のハッシュ演算アルゴリズムを有し、いずれのハッシュ演算アルゴリズムを使用するかは事前に取り決められている。
共有秘密更新部57は、外部から共有秘密を更新する際に動作する。
鍵正当性確認部58は、サーバ10が生成した非対称鍵の正当性を確認する。鍵正当性確認部58は、認証局サーバ100に対して、非対称鍵の有効状態を問い合わせ、自身が保持しているサーバ10の鍵正当性を判断する。
デバイス本体の記憶部71は、デバイスID、デバイス証明書を記憶する。デバイスIDは、デバイス毎に固有で割り振られているIDである。デバイス証明書は、デバイス70が製造される再に、デバイス製造メーカによって書き込まれる証明書である。デバイス製造メーカが保有するデバイス秘密鍵によって、少なくともデバイスIDを含む情報に対してダイジェスト署名が行われ、当該署名が添付されている。
サーバ10は、記憶部11、SC公開鍵ストア12、鍵ペア生成部13、乱数生成部14、署名検証部15、共通鍵生成部16、共有秘密更新部17、及び鍵正当性確認部18を備える。共通鍵生成部16は、鍵生成を行うためのアルゴリズムが内包されており、SHA−1(19)、SHA−256(20)が搭載されている。
記憶部11は、サーバID、共有秘密、サーバ秘密鍵、サーバ公開鍵などの値を記憶する。サーバIDは、サーバ識別情報とも称し、サーバ毎に固有に割り振られているIDである。共有秘密は、共有情報とも称し、サーバ10及びセキュアエレメント50間で事前に共有されている秘密情報であり、サーバ10及びセキュアエレメント50以外の外部に公開されていない秘密情報とすることができる。サーバ秘密鍵は、サーバ10が生成する非対称鍵ペアに含まれる秘密鍵である。サーバ公開鍵は、サーバ10が生成する非対称鍵ペアに含まれる公開鍵である。
SC公開鍵ストア12は、サーバ登録部としての機能を有し、サーバ10内にSC公開鍵を登録するためのデータベースである。SC公開鍵を登録する場合、SCIDとSC公開鍵とが対応付けて格納される。
鍵ペア生成部13は、サーバ鍵生成部としての機能を有し、サーバ10内で非対称鍵暗号(RSA等)の鍵のペア(サーバ公開鍵及びサーバ秘密鍵)を生成する。
乱数生成部14は、サーバ10内で乱数を生成する。
共通鍵生成部16は、サーバ共通鍵生成部としての機能を有し、サーバ10内で、入力された情報と、所定のアルゴリズムに従って共有鍵を生成する。共通鍵生成部16は、例えば、入力されたデータ列に対して所定のハッシュ演算を行い、ハッシュ演算により得られたハッシュ値を出力することができる。共通鍵生成部16は、複数のハッシュ演算アルゴリズムを有し、いずれのハッシュ演算アルゴリズムを使用するかは事前に取り決められている。
共有秘密更新部17は、外部から共有秘密を更新する際に動作する。
鍵正当性確認部18は、セキュアエレメント50が生成した非対称鍵の正当性を確認する。鍵正当性確認部18は、認証局サーバ100に対して、非対称鍵の有効状態を問い合わせ、自身が保持しているセキュアエレメント50の鍵正当性を判断する。
認証局サーバ100は、公開鍵失効済みリスト101、署名生成済みリスト102、署名生成部103、CA公開鍵、CA秘密鍵を備える。
CA公開鍵は、認証局サーバ100が保持している公開鍵である。認証局サーバ100が生成した署名を検証する際に、検証を希望する主体がCA公開鍵を取得して用いる。
CA秘密鍵は、認証局サーバ100が保持している秘密鍵である。公開鍵生成主体がCSRによる署名生成をリクエストした際、認証局サーバ100は、CA秘密鍵を用いて署名を生成する。
署名生成部103は、公開鍵生成主体の要求に応じて、生成された公開鍵に対して、CA秘密鍵で署名生成を行う。
署名生成済みリスト102は、署名生成済みの公開鍵と署名対象IDのリストである。認証局サーバ100が公開鍵に対して署名を行った際に追記される。
公開鍵失効済みリスト101は、署名済みの公開鍵のうち、認証局サーバ100の判断により署名の効力を失効させた公開鍵のリストである。
次に、本実施の形態の暗号通信システムの動作、暗号通信方法について説明する。
図2は非対称鍵ペアの生成と公開鍵の交換の一例を示す説明図である。暗号通信を行うためには、まず、サーバ10とセキュアエレメント50との間で公開鍵の交換を行う必要がある。以下、符号P1〜P13で示す処理について説明する。
P1(SC側鍵ペア生成指示):デバイス70は、セキュアエレメント50との間のインタフェース2を介して、セキュアエレメント50に対し、非対称鍵ペアの生成と公開鍵交換を指示する。
P2(SC側非対称鍵ペア生成):セキュアエレメント50は、鍵ペア生成部53を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、SC秘密鍵1とSC公開鍵1が生成される。
P3(SCIDの暗号化):セキュアエレメント50は、セキュアエレメント第2暗号化部としての機能を有し、自身が有するSCIDの値を、生成したSC秘密鍵で暗号化する。
P4(SC公開鍵と暗号化SCIDの送信):セキュアエレメント50は、セキュアエレメント出力部としての機能を有し、サーバ10に対して、SC公開鍵と暗号化されたSCIDを、デバイス70経由で送信する。
P5(暗号化SCIDの復号):サーバ10は、サーバ第2復号部としての機能を有し、受信した暗号化SCIDを、受信したSC公開鍵(SC公開鍵1)により復号する。
P6(SCIDの検証):サーバ10は、復号したSCIDの値をチェックする。SCIDの検証は、例えば、SC公開ストア12内に同一のSCIDで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
P7(SC公開鍵ストアへの登録):復号したSCIDの値をチェックして問題がない場合、サーバ10は、SCIDとSC公開鍵を対応付けてSC公開鍵ストア12に格納する。ここでは、SCID:SC012345とSC公開鍵1が対応付けられて格納される。これにより、取得したSC公開鍵の正当性を判定した上で登録することができる。
P8(サーバ側鍵ペア生成指示):サーバ10は、鍵ペア生成部13を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、サーバ秘密鍵1とサーバ公開鍵1が生成される。
P9(サーバIDの暗号化):サーバ10は、サーバ第2暗号化部としての機能を有し、自身が有するサーバIDの値を、生成したサーバ秘密鍵で暗号化する。
P10(サーバ公開鍵と暗号化サーバIDの送信):サーバ10は、サーバ出力部としての機能を有し、セキュアエレメント50に対して、サーバ公開鍵と暗号化されたサーバIDを、デバイス70経由で送信する。
P11(暗号化サーバIDの復号):セキュアエレメント50は、セキュアエレメント第2復号部としての機能を有し、受信した暗号化サーバIDを、受信したサーバ公開鍵(サーバ公開鍵1)により復号する。
P12(サーバIDの検証):セキュアエレメント50は、復号したサーバIDの値をチェックする。サーバIDの検証は、例えば、サーバ公開鍵ストア52内に同一のサーバIDで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
P13(サーバ公開鍵ストアへの登録):復号したサーバIDの値をチェックして問題がない場合、セキュアエレメント50は、サーバIDとサーバ公開鍵を対応付けてサーバ公開鍵ストア52に格納する。ここでは、サーバID:KeyManagement.comとサーバ公開鍵1が対応付けられて格納される。これにより、取得したサーバ公開鍵の正当性を判定した上で登録することができる。
上述のように、サーバ10は、セキュアエレメント50から出力されたSC公開鍵を取得して登録することができる。これにより、サーバ10は、セキュアエレメント50との間で、SC公開鍵を共有することができる。すなわち、SC公開鍵を予め準備して固定鍵の如くサーバ10に記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、SC公開鍵は、セキュアエレメント50によって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
また、セキュアエレメント50は、サーバ10から出力されたサーバ公開鍵を取得して登録することができる。これにより、セキュアエレメント50は、サーバ10との間で、サーバ公開鍵を共有することができる。すなわち、サーバ公開鍵を予め準備して固定鍵の如くセキュアエレメント50に記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、サーバ公開鍵は、サーバ10によって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
そして、後述のように、サーバ10は、登録されたSC公開鍵に基づく暗号通信を行い、セキュアエレメント50は、セキュアエレメント50内に登録されたサーバ公開鍵に基づく暗号通信を行うことができる。これにより、サーバ10及びセキュアエレメント50それぞれは、鍵の事前共有を必要としない。また、サーバ10には、SC秘密鍵に対応するSC公開鍵が登録されているので、サーバ10からセキュアエレメント50への一方向暗号化が可能な通信路を、サーバ10とセキュアエレメント50との間で確保することができる。また、セキュアエレメント50には、サーバ秘密鍵に対応するサーバ公開鍵が登録されているので、セキュアエレメント50からサーバ10への一方向暗号化が可能な通信路を、サーバ10とセキュアエレメント50との間で確保することができる。
図2の例では、デバイス70経由でセキュアエレメント50に対する鍵生成指示が先に実行されているが、実行順序は逆でもよく、サーバ10が先に非対称鍵ペアを生成してセキュアエレメント50へ送信してもよい。
SC公開鍵の登録の際のSCIDの検証、及びサーバ公開鍵の登録の際のサーバIDの検証は、上述のように、登録対象の公開鍵(値そのもの)が登録済みかどうかをチェックしてもよく、あるいは当該SCID及びサーバIDの登録が禁止されていないかをチェックしてもよい。
図3はデバイス共通鍵の生成の一例を示す説明図である。図2に示す処理によって公開鍵ペアが共有できた後、サーバ10とデバイス70との間で暗号通信を行うためのデバイス共通鍵の生成を行う。以下、符号P31〜P42で示す処理について説明する。
P31(鍵生成指示):デバイス70は、セキュアエレメント50との間のインタフェース2を介して、セキュアエレメント50に対し、デバイス共通鍵生成を指示する。
P32(SC側乱数の生成):セキュアエレメント50は、乱数生成部54を利用して、所定のセキュアエレメント情報としてのSC側乱数を生成する。
P33(SC側乱数の暗号化):セキュアエレメント50は、セキュアエレメント第1暗号化部としての機能を有し、既に登録済みのサーバ公開鍵を用いて、生成したSC側乱数を暗号化する。
P34(暗号化SC側乱数の送信):セキュアエレメント50は、サーバ10に対し、デバイス70経由で暗号化SC側乱数を送信する。
P35(暗号化SC側乱数の復号):サーバ10は、サーバ第1復号部としての機能を有し、受信した暗号化SC側乱数を、自身が保有するサーバ秘密鍵で復号し、復号後のSC側乱数を保持する。これにより、サーバ10は、セキュアエレメント50が生成したSC側乱数を、セキュアエレメント50との間で共有できる。
P36(サーバ側乱数の生成):サーバ10は、乱数生成部14を利用して、所定のサーバ情報としてのサーバ側乱数を生成する。
P37(サーバ側乱数の暗号化):サーバ10は、サーバ第1暗号化部としての機能を有し、既に登録済みのSC公開鍵を用いて、生成したサーバ側乱数を暗号化する。
P38(暗号化サーバ側乱数の送信):サーバ10は、セキュアエレメント50に対し、デバイス70経由で暗号化サーバ側乱数を送信する。
P39(暗号化サーバ側乱数の復号):セキュアエレメント50は、セキュアエレメント第1復号部としての機能を有し、受信した暗号化サーバ側乱数を、自身が保有するSC秘密鍵で復号し、復号後のサーバ側乱数を保持する。これにより、セキュアエレメント50は、サーバ10が生成したサーバ側乱数を、サーバ10との間で共有できる。そして、サーバ10及びセキュアエレメント50それぞれは、SC側乱数及びサーバ側乱数を共有することができ、デバイス共有鍵を生成する際に使用する情報を共有することができる。
P40(デバイス共通鍵の生成):サーバ10及びセキュアエレメント50は、交換したSC側乱数、サーバ側乱数を入力として共通鍵生成部16、56により出力を得る。ここでは、鍵生成に使用するアルゴリズムとして、例えば、SHA−256を使用することを、サーバ10とセキュアエレメント50とが事前に取り決めているものとする。従って、同一のSC側乱数とサーバ側乱数を入力としてSHA−256演算が実行され、サーバ10とセキュアエレメント50とは、同一のデータ列を出力として得ることができる。このデータ列をデバイス共通鍵として使用する。
P41(デバイスへの共通鍵取り出し):デバイス70は、セキュアエレメント50に対してデバイス共通鍵の取り出しを指示し、セキュアエレメント50からデバイス共通鍵を取得する。
P42(デバイス共通鍵による暗号通信の確立):以降、サーバ10とデバイス70は、同一のデバイス共通鍵に基づき、対象鍵暗号通信路を確立し、暗号通信を行う。
上述のとおり、サーバ10とセキュアエレメント50との間では、デバイス対象鍵値そのものの授受を行っていない。すなわち、上述の構成により、サーバ10とデバイス70との間の通信路を介して共通鍵の授受をする必要がなく、共通鍵が通信路に載らないので、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。また、共通鍵を生成するために用いられるセキュアエレメント情報(例えば、SC側乱数)及びサーバ情報(例えば、サーバ側乱数)が仮に漏洩しても、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。これにより、サーバ10とデバイス70との間の暗号通信が危殆化しない。
上述の例では、セキュアエレメント情報及びサーバ情報として乱数を用いているが、これに限定されない。セキュアエレメント情報及びサーバ情報として乱数以外のデータを用いることもできる。
本実施例で乱数の暗号化に用いている、公開鍵の具体的な選択方法については、単に、直前に鍵交換を行ったSC公開鍵及びサーバ公開鍵を選択しているが、複数のSC公開鍵及びサーバ公開鍵の中から選択するようにしてもよい。
次に、非対称鍵の取り扱いに関するユースケースについて説明する。
図4は認証局を併用した公開鍵の交換の一例を示す説明図である。図2に例示した例では、サーバ10及びセキュアエレメント50がそれぞれ独自に鍵生成を行っているが、個別に鍵生成を行っただけでは、生成された鍵の正当性が保証されない。すなわち、公開鍵による情報交換に成功しても、情報交換を行った相手が正当なサーバ又はセキュアエレメントであるとは限らず、不正な相手と通信する可能性がある。図4の例では、不正な通信を防止するための方法として、公開鍵認証局(認証局サーバ100)と連携することにより、生成した公開鍵の正当性を高める。以下、符号P51〜P71で示す処理について説明する。
P51(SC側鍵ペア生成指示):デバイス70は、セキュアエレメント50との間のインタフェース2を介して、セキュアエレメント50に対し、非対称鍵ペアの生成と公開鍵交換を指示する。
P52(SC側非対称鍵ペア生成):セキュアエレメント50は、鍵ペア生成部53を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、SC秘密鍵1とSC公開鍵1が生成される。
P53(認証局への署名リクエスト):セキュアエレメント50は、セキュアエレメント認証要求部としての機能を有し、認証局サーバ100に対し、生成したSC公開鍵に対する認証局の署名を要求する。セキュアエレメント50から認証局サーバ100に対し、少なくともSC公開鍵がデバイス70経由で送信される。
P54(SC公開鍵への署名の返送):認証局サーバ100は、セキュアエレメント50からの署名リクエストを検査する。ここでは、認証局サーバ100は、自身が保持する署名生成済みリスト102に、署名を要求したセキュアエレメント50のSCIDがないかをチェックする。SCIDがない場合、問題がないとして、認証局サーバ100は、自身が保有するCA秘密鍵を使用して、SC公開鍵に対するCA署名を生成し、生成したCA署名をデバイス70経由でセキュアエレメント50に返送する。認証局サーバ100は、署名を要求したセキュアエレメント50が信頼できる主体であることを確認した上で、SC公開鍵に対してCA秘密鍵を用いて署名を行うことで、SC公開鍵が信頼できることを示す。セキュアエレメント50は、セキュアエレメント取得部としての機能を有し、SC公開鍵に対するCA署名を取得する。認証局サーバ100は、署名生成済みリスト102にSCIDを記録する。
P55(SCIDの暗号化):セキュアエレメント50は、自身が有するSCIDの値を、生成したSC秘密鍵で暗号化する。
P56(SC公開鍵と暗号化SCIDの送信):セキュアエレメント50は、サーバ10に対して、SC公開鍵、SC公開鍵に対するCA署名、暗号化されたSCIDを、デバイス70経由で送信する。これにより、セキュアエレメント50が生成したSC公開鍵の正当性を確立することができる。
P57(CA公開鍵要求):サーバ10は、認証局サーバ100に対し、CA公開鍵の送信を求める。
P58(SC公開鍵に対するCA署名の検証):認証局サーバ100は、サーバ10に対し、CA公開鍵を送付する。サーバ10は、受信したCA公開鍵を用いて、受信したSC公開鍵に対するCA署名を検証する。検証の結果、問題があれば、公開鍵登録処理を失敗として、ここで処理を中断する。検証の結果、問題がなければ、以降の処理を続ける。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
P59(暗号化SCIDの復号):サーバ10は、受信した暗号化SCIDを、受信したSC公開鍵(SC公開鍵1)により復号する。
P60(SCIDの検証):サーバ10は、復号したSCIDの値をチェックする。SCIDの検証は、例えば、SC公開ストア12内に同一のSCIDで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
P61(SC公開鍵ストアへの登録):復号したSCIDの値をチェックして問題がない場合、サーバ10は、SCIDとSC公開鍵を対応付けてSC公開鍵ストア12に格納する。
P62(サーバ側鍵ペア生成指示):サーバ10は、鍵ペア生成部13を利用して、非対称鍵暗号の鍵ペアを内部で生成する。ここでは、鍵値として、サーバ秘密鍵1とサーバ公開鍵1が生成される。
P63(認証局への署名リクエスト):サーバ10は、サーバ認証要求部としての機能を有し、認証局サーバ100に対し、生成したサーバ公開鍵に対する認証局の署名を要求する。サーバ10から認証局サーバ100に対し、少なくともサーバ公開鍵が送信される。
P64(サーバ公開鍵への署名の返送):認証局サーバ100は、サーバ10からの署名リクエストを検査する。ここでは、認証局サーバ100は、自身が保持する署名生成済みリスト102に、署名を要求したサーバ10のサーバIDがないかをチェックする。サーバIDがない場合、問題がないとして、認証局サーバ100は、自身が保有するCA秘密鍵を使用して、サーバ公開鍵に対するCA署名を生成し、生成したCA署名をサーバ10に返送する。認証局サーバ100は、署名を要求したセキュアエレメント50が信頼できる主体であることを確認して上で、サーバ公開鍵に対してCA秘密鍵を用いて署名を行うことで、サーバ公開鍵が信頼できることを示す。サーバ10は、サーバ取得部としての機能を有し、サーバ公開鍵に対するCA署名を取得する。認証局サーバ100は、署名生成済みリスト102にサーバIDを記録する。
P65(サーバIDの暗号化):サーバ10は、自身が有するサーバIDの値を、生成したサーバ秘密鍵で暗号化する。
P66(サーバ公開鍵と暗号化サーバIDの送信):サーバ10は、セキュアエレメント50に対して、サーバ公開鍵、サーバ公開鍵に対するCA署名、暗号化されたサーバIDを、デバイス70経由で送信する。これにより、サーバ10が生成したサーバ公開鍵の正当性を確立することができる。
P67(CA公開鍵要求):セキュアエレメント50は、デバイス70経由で認証局サーバ100に対し、CA公開鍵の送信を求める。
P68(サーバ公開鍵に対するCA署名の検証):認証局サーバ100は、デバイス70経由でセキュアエレメント50に対し、CA公開鍵を送付する。セキュアエレメント50は、受信したCA公開鍵を用いて、受信したサーバ公開鍵に対するCA署名を検証する。検証の結果、問題があれば、公開鍵登録処理を失敗として、ここで処理を中断する。検証の結果、問題がなければ、以降の処理を続ける。
P69(暗号化サーバIDの復号):セキュアエレメント50は、受信した暗号化サーバIDを、受信したサーバ公開鍵により復号する。
P70(サーバIDの検証):セキュアエレメント50は、復号したサーバIDの値をチェックする。サーバIDの検証は、例えば、サーバ公開鍵ストア52内に同一のサーバIDで公開鍵が登録済みでないかをチェックする。登録済みの場合、公開鍵登録処理を失敗として、ここで処理を中断する。
P71(サーバ公開鍵ストアへの登録):復号したサーバIDの値をチェックして問題がない場合、セキュアエレメント50は、サーバIDとサーバ公開鍵を対応付けてサーバ公開鍵ストア52に格納する。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
図4の例では、図2の例と比較して、(1)公開鍵生成直後、認証局に対して生成した公開鍵に対する署名を要求した上で、返送された署名を添付して相手方に送る、(2)公開鍵受信直後、認証局に対してCA公開鍵を要求した上で、受信したCA公開鍵を用いて署名検証を行っている。公開鍵基盤において、認証局は、署名を要求した主体が信頼できる主体であることを確認した上で、要求主体の公開鍵に対して自身の秘密鍵を用いて署名を行うことで、公開鍵は信頼に値することを表明している。このため、公開鍵受信側で署名検証に失敗した場合、当該公開鍵は認証局による信頼表明が有効でないことを示す。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
本実施例では、便宜上、認証局が署名生成済みリストに、署名要求主体のIDが存在するか否かを調べることで、署名要求の可否判断を簡易的に行っているが、実際に認証局が署名要求主体をどのように確認するかについては、認証局のセキュリティポリシーに従って適宜の手法を用いることができる。
図5は公開鍵署名の失効とデバイス共通鍵の破棄の一例を示す説明図である。秘密鍵の漏洩や、デバイス70又はサーバ10のライフサイクル管理上、一度共有した公開鍵を失効させ、デバイス共通鍵による暗号通信を遮断したいケースも考えられる。このような場合、例えば、認証局による公開鍵の失効処理をトリガとすることができる。以下、符号P81〜P87で示す処理について説明する。
P81(公開鍵失効済みリストへの追加):認証局サーバ100は、失効対象とする公開鍵のIDを公開鍵失効済みリスト101に書き込む。ここでは、SCID:SC012345のSC公開鍵1を失効させるべく、これらの情報が追記される。
P82(サーバ・デバイス間暗号通信):サーバ10とデバイス70とは、すでに生成済みのデバイス共通鍵を用いて暗号通信を行う。
P83(サーバ側鍵検証処理):サーバ10の暗号通信部21は、デバイス70側の暗号通信を復号する前に、公開鍵の有効状態を検証すべく、鍵正当性確認部18に検証を依頼する。
P84(失効済みリストの送信要求):鍵正当性確認部18は、認証局サーバ100に対し、公開鍵失効済みリスト101の送信を要求する。
P85(失効済みリストの入手と確認):認証局サーバ100は、鍵正当性確認部18に対し、公開鍵失効済みリスト101を返送する。鍵正当性確認部18は、返送された公開鍵失効済みリスト101を見て、現在通信相手となっているデバイス70側のSC公開鍵が失効していることを確認する。
P86(暗号通信の終了):鍵正当性確認部18は、現在通信しているデバイス70とセキュアエレメント50について、公開鍵による信頼関係が失われたと判断し、現在開設中の暗号通信セッションを終了させる。
P87(公開鍵及びデバイス共通鍵の破棄):鍵正当性確認部18は、SC公開鍵ストア12に登録されているSCID:SC012345の公開鍵と、デバイス共通鍵を破棄する。
上述のように、鍵正当性確認部18は、サーバ判定部としての機能を有し、所要のタイミングで登録済のSC公開鍵の失効の有無を判定することができる。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。SC公開鍵の失効は、例えば、認証局サーバ100による公開鍵の失効処理の結果(公開鍵失効済みリスト101)に基づいて判定できる。
鍵正当性確認部18は、サーバ無効処理部としての機能を有し、SC公開鍵が失効していると判定された場合、登録済のSC公開鍵を無効にすることができる。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
また、鍵正当性確認部18は、サーバ10が生成した共通鍵を無効にすることができる。これにより、共通鍵による暗号通信を遮断することができる。
図5の例では、公開鍵の失効状態をサーバ10から問い合わせているが、これに限定されるものではなく、同一の処理をデバイス70とセキュアエレメント50側から行ってもよい。この場合、セキュアエレメント50の鍵正当性確認部58は、セキュアエレメント判定部としての機能を有し、所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定することができる。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。サーバ公開鍵の失効は、例えば、認証局サーバ100による公開鍵の失効処理の結果(公開鍵失効済みリスト101)に基づいて判定できる。
鍵正当性確認部58は、セキュアエレメント無効処理部としての機能を有し、サーバ公開鍵が失効していると判定された場合、登録済のサーバ公開鍵を無効にすることができる。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
また、鍵正当性確認部58は、セキュアエレメント50が生成した共通鍵を無効にすることができる。これにより、共通鍵による暗号通信を遮断することができる。
本実施例では、失効情報の送受信手段として失効リスト(CRL:Certificate Revocation List)を使用しているが、失効情報確認プロトコル(OCSP:Online Certificate Status Protocol)等の別の手段により失効情報を確認してもよい。
次に、共通鍵の取り扱いに関するユースケースについて説明する。
図6はデバイス証明書によるデバイス認証の一例を示す説明図である。以下、符号P91〜P104で示す処理について説明する。
P91(鍵生成指示):デバイス70は、セキュアエレメント50との間のインタフェース2を介して、セキュアエレメント50に対し、デバイス共通鍵生成を指示する。
P92(SC側乱数の生成):セキュアエレメント50は、乱数生成部54を利用して、SC側乱数を生成する。
P93(SC側乱数の暗号化):セキュアエレメント50は、既に登録済みのサーバ公開鍵を用いて、生成したSC側乱数を暗号化する。
P94(暗号化SC側乱数の送信):セキュアエレメント50は、サーバ10に対し、デバイス70経由で暗号化SC側乱数を送信する。
P95(暗号化SC側乱数の復号):サーバ10は、受信した暗号化SC側乱数を、自身が保有するサーバ秘密鍵で復号し、復号後のSC側乱数を保持する。これにより、サーバ10は、セキュアエレメント50が生成したSC側乱数を、セキュアエレメント50との間で共有できる。
P96(サーバ側乱数の生成):サーバ10は、乱数生成部14を利用して、所定のサーバ情報としてのサーバ側乱数を生成する。
P97(サーバ側乱数の暗号化):サーバ10は、既に登録済みのSC公開鍵を用いて、生成したサーバ側乱数を暗号化する。
P98(暗号化サーバ側乱数の送信):サーバ10は、セキュアエレメント50に対し、デバイス70経由で暗号化サーバ側乱数を送信する。
P99(暗号化サーバ側乱数の復号):セキュアエレメント50は、受信した暗号化サーバ側乱数を、自身が保有するSC秘密鍵で復号し、復号後のサーバ側乱数を保持する。これにより、セキュアエレメント50は、サーバ10が生成したサーバ側乱数を、サーバ10との間で共有できる。そして、サーバ10及びセキュアエレメント50それぞれは、SC側乱数及びサーバ側乱数を共有することができ、デバイス共有鍵を生成する際に使用する情報を共有することができる。
P100(デバイス共通鍵の生成):サーバ10及びセキュアエレメント50は、交換したSC側乱数、サーバ側乱数を入力として共通鍵生成部16、56により出力を得る。ここでは、鍵生成に使用するアルゴリズムとして、例えば、SHA−256を使用することを、サーバ10とセキュアエレメント50とが事前に取り決めているものとする。従って、同一のSC側乱数とサーバ側乱数を入力としてSHA−256演算が実行され、サーバ10とセキュアエレメント50とは、同一のデータ列を出力として得ることができる。このデータ列をデバイス共通鍵として使用する。
P101(デバイス証明書とデバイスIDの入力):セキュアエレメント50は、デバイス共通鍵の出力の前提として、デバイス証明書とデバイスIDの入力を求める。デバイス70は、デバイス証明書とデバイスIDをセキュアエレメント50に送信する。
P102(デバイス証明書の検証):セキュアエレメント50は、デバイス認証部としての機能を有し、受信したデバイス証明書の内容について、内部に保持しているデバイス公開鍵を用いて検証する。具体的には、デバイス証明書内の暗号化されたデバイスIDを、デバイス公開鍵で復号し、別途受信した平文のデバイスIDと比較する。セキュアエレメント50は、検証に失敗した場合、ここで処理を中断し、デバイス共通鍵を外部に出力しない。検証に成功した場合には、以降の処理を行う。
P103(デバイスへの共通鍵取り出し):デバイス70は、セキュアエレメント50に対してデバイス共通鍵の取り出しを指示し、セキュアエレメント50からデバイス共通鍵を取得する。
P104(デバイス共通鍵による暗号通信の確立):以降、サーバ10とデバイス70は、同一のデバイス共通鍵に基づき、対象鍵暗号通信路を確立し、暗号通信を行う。
上述のように、セキュアエレメント50は、セキュアエレメント50(自身)が接続されたデバイス(デバイス本体)を認証するデバイス認証部を備える。なお、デバイスの認証は、デバイスIDを非対称鍵で暗号化した証明書を用いて行っているが、このアルゴリズムに限定されるものではなく、適宜の手法を用いることができる。
セキュアエレメント50は、デバイス本体が認証された場合、生成した共通鍵をデバイス本体に出力する。これにより、意図した(正規の)デバイスに適切なセキュアエレメントが接続されていることを確認することができる。
図7は鍵の動的再生成の一例を示す説明図である。本実施の形態では、サーバ10側は自身が制御可能なコンポーネント内で鍵を生成可能であるが、デバイス70側は鍵の生成をセキュアエレメント50に頼っており、鍵の取り扱い権限がサーバ10とデバイス70との間で非対称であるという特徴を持つ。この特徴により、デバイス70側のセキュリティをセキュアエレメント50に従属させ、デバイス70の鍵管理をより強力にすることができる。すなわち、サーバ10及びセキュアエレメント50の鍵を、一定の規則性に基づいて動的に更新した場合、デバイス70は、セキュアエレメント50から更新後の鍵供給を受けない限り、後続の暗号通信を正しく実行することができなくなる。これは、デバイス70が適切なセキュアエレメント50の管理下で動作していることの動的検証と同義であり、セキュアブート等の起動時や鍵生成時のみならず、継続的にデバイス70のセキュリティ検証を行うことができることを意味する。以下、符号P111〜P118で示す処理について説明する。
P111(デバイス共通鍵の準備):図3に例示した処理に基づき、サーバ10とデバイス70それぞれに、第一世代の鍵(デバイス共通鍵1)が提供される。
P112(暗号セッションの確立と暗号通信):サーバ10とデバイス70は、デバイス共通鍵1に基づく暗号通信を、鍵更新の契機が発生するまでの間行う。鍵更新の契機は、例えば、一定回数のデータ授受実行があった場合とすることができるが、これに限定されない。
P113(デバイス共通鍵更新):暗号通信中に鍵更新の契機が発生した場合、サーバ10とセキュアエレメント50は、デバイス共通鍵1を所定のアルゴリズムに従って更新する。更新時の鍵生成のアルゴリズムは、例えば、現在の鍵を共通鍵生成部16、56の入力とし、SHA−256ハッシュ出力で得られた値を新たな鍵とする。すなわち、デバイス共通鍵1に対するSHA−256ハッシュ値をデバイス共通鍵2とする。なお、更新時の鍵生成のアルゴリズムは、これに限定されるものではなく、適宜の方法を用いることができる。
P114(デバイスによる更新後の鍵取り出し):この状況でデバイス70が暗号通信を試行しても、サーバ10側の鍵が更新されているため、適切に通信を行うことができない。そこで、デバイス70は、再度セキュアエレメント50に対し、デバイス共通鍵の出力を要求する。セキュアエレメント50は、更新されたデバイス共通鍵2をデバイス70に供給する。
P115(暗号セッションの確立と暗号通信):サーバ10とデバイス70は、デバイス共通鍵2に基づく暗号通信を、鍵更新の契機が発生するまでの間行う。
P116(デバイス共通鍵更新):暗号通信中に鍵更新の契機が発生した場合、サーバ10とセキュアエレメント50は、デバイス共通鍵2を所定のアルゴリズムに従って更新する。すなわち、デバイス共通鍵2に対するSHA−256ハッシュ値をデバイス共通鍵3とする。
P117(デバイスによる更新後の鍵取り出し):この状況でデバイス70が暗号通信を試行しても、サーバ10側の鍵が更新されているため、適切に通信を行うことができない。そこで、デバイス70は、再度セキュアエレメント50に対し、デバイス共通鍵の出力を要求する。セキュアエレメント50は、更新されたデバイス共通鍵3をデバイス70に供給する。
P118(暗号セッションの確立と暗号通信):サーバ10とデバイス70は、デバイス共通鍵3に基づく暗号通信を、鍵更新の契機が発生するまでの間行う。
上述のように、共通鍵生成部16、56それぞれは、所定の契機で、生成した共通鍵を更新することができる。所定の契機は、例えば、同一の共通鍵を用いて行った暗号通信の回数が所定回数になった場合、サーバ又はセキュアエレメントに対する外部からの更新指示などとすることができるが、これに限定されない。
上述のように、デバイス70は、共通鍵の生成をセキュアエレメント50に依存しているので、デバイス70のセキュリティは、セキュアエレメント50に従属することになり、デバイス70の共通鍵管理を一層強力にすることができる。
すなわち、サーバ10及びセキュアエレメント50の共通鍵を、一定の規則性に基づいて動的に更新した場合、デバイス70は、セキュアエレメント50から更新後の共通鍵の供給を受けない限り、共通鍵の更新後の暗号通信を正しく実行することができない。これにより、継続的にデバイス70のセキュリティ検証を行うことができる。
鍵更新アルゴリズムは、前述したものに限定されない。セキュリティ強化のため、例えば、RFCで定義されているTOTP(Time-based One Time Password)やHOTP(HMAC-based One-Time Password)等、ワンタイムパスワード生成のアルゴリズムを適用することもできる。
図7の例で、デバイス70が、更新後のデバイス共通鍵を取り出さずに古いデバイス共通鍵で通信を試みた場合、サーバ10側では、受信したデータを正しく復号することができない。この場合、サーバ10側でセキュリティポリシーに応じた種々の適切な処理を行うことができる。
すなわち、サーバ10は、デバイス70との間で共通鍵が一致しない場合、デバイス70の異常に対応する処理を実行することができる。デバイス70の異常に対応する処理は、例えば、現在開設中の暗号通信を遮断する処理、交換済の公開鍵ペアを無効とする処理、当該セキュアエレメント50のSCIDによる公開鍵登録を拒否し不正なデバイスとして取り扱う処理などを含む。
図8は共有秘密を入力に加える場合の共通鍵生成の一例を示す説明図である。前述の例では、デバイス共通鍵の生成元となる入力全てが、サーバ10とセキュアエレメント50との間で交換した情報に依存している。この状態でも適切な鍵生成を行うことが可能であるが、セキュリティポリシーによっては、セキュアエレメント50が保持している秘密情報に依存した鍵生成を行いたいというニーズも存在する。以下、符号P121〜P132で示す処理について説明する。
P121(共有秘密の書き込みとサーバ共有):セキュアエレメント50の製造者は、事前に共有秘密をセキュアエレメント50に書き込むとともに、サーバ10の管理者に対し、当該共有秘密を事前共有しておく。
P122(鍵生成指示):デバイス70は、セキュアエレメント50との間のインタフェース2を介して、セキュアエレメント50に対し、デバイス共通鍵生成を指示する。
P123(SC側乱数の生成):セキュアエレメント50は、乱数生成部54を利用して、所定のセキュアエレメント情報としてのSC側乱数を生成する。
P124(SC側乱数の暗号化):セキュアエレメント50は、既に登録済みのサーバ公開鍵を用いて、生成したSC側乱数を暗号化する。
P125(暗号化SC側乱数の送信):セキュアエレメント50は、サーバ10に対し、デバイス70経由で暗号化SC側乱数を送信する。
P126(暗号化SC側乱数の復号):サーバ10は、受信した暗号化SC側乱数を、自身が保有するサーバ秘密鍵で復号し、復号後のSC側乱数を保持する。これにより、サーバ10は、セキュアエレメント50が生成したSC側乱数を、セキュアエレメント50との間で共有できる。
P127(サーバ側乱数の生成):サーバ10は、乱数生成部14を利用して、所定のサーバ情報としてのサーバ側乱数を生成する。
P128(サーバ側乱数の暗号化):サーバ10は、既に登録済みのSC公開鍵を用いて、生成したサーバ側乱数を暗号化する。
P129(暗号化サーバ側乱数の送信):サーバ10は、セキュアエレメント50に対し、デバイス70経由で暗号化サーバ側乱数を送信する。
P130(暗号化サーバ側乱数の復号):セキュアエレメント50は、受信した暗号化サーバ側乱数を、自身が保有するSC秘密鍵で復号し、復号後のサーバ側乱数を保持する。これにより、セキュアエレメント50は、サーバ10が生成したサーバ側乱数を、サーバ10との間で共有できる。そして、サーバ10及びセキュアエレメント50それぞれは、SC側乱数及びサーバ側乱数を共有することができ、デバイス共有鍵を生成する際に使用する情報を共有することができる。
P131(デバイス共通鍵の生成):サーバ10及びセキュアエレメント50は、交換したSC側乱数、サーバ側乱数及び共有秘密を入力として共通鍵生成部16、56により出力を得る。ここでは、鍵生成に使用するアルゴリズムとして、例えば、SHA−256を使用することを、サーバ10とセキュアエレメント50とが事前に取り決めているものとする。従って、同一のSC側乱数とサーバ側乱数を入力としてSHA−256演算が実行され、サーバ10とセキュアエレメント50とは、同一のデータ列を出力として得ることができる。このデータ列をデバイス共通鍵として使用する。
P132(デバイスへの共通鍵取り出し):デバイス70は、セキュアエレメント50に対してデバイス共通鍵の取り出しを指示し、セキュアエレメント50からデバイス共通鍵を取得する。
P133(デバイス共通鍵による暗号通信の確立):以降、サーバ10とデバイス70は、同一のデバイス共通鍵に基づき、対象鍵暗号通信路を確立し、暗号通信を行う。
上述のように、サーバ10及びセキュアエレメント50それぞれは、予め定められた共有秘密(共有情報)を保持する保持部としての記憶部11、51を備える。共有秘密は、例えば、サーバ10及びセキュアエレメント50以外の外部に公開されていない共有の秘密情報とすることができる。
共通鍵生成部16、56それぞれは、共有秘密をさらに用いてデバイス共通鍵を生成することができる。これにより、攻撃者が、仮にSC側乱数及びサーバ側乱数を不正に取得して把握したとしても、共有秘密を知らない限り、デバイス共通鍵を生成することができないので、サーバ10とデバイス70との間の暗号通信のセキュリティを一層高めることができる。
図9は共有秘密の更新の一例を示す説明図である。以下、符号P141〜P148で示す処理について説明する。
P141(デバイス共通鍵の生成):図3に例示した処理に基づき、サーバ10とデバイス70それぞれに、共有秘密更新前の値に基づいて生成されたデバイス共通鍵(旧)が提供される。
P142(暗号セッションの確立と暗号通信):サーバ10とデバイス70は、デバイス共通鍵(旧)に基づいて、暗号化通信路を開設する。
P143(サーバ側の共有秘密更新):サーバ10は、自身が保有する共有秘密を更新する。
P144(SC側共有秘密更新コマンドの実行):サーバ10は、デバイス70を経由して、セキュアエレメント50に対し、更新後の共有秘密を入力に含めて共有秘密更新部17の実行を指示する。一般的な実装としては、セキュアエレメント50に実装されている共有秘密更新コマンド/APIなどを用いることができる。
P145(SC側共有秘密の更新):セキュアエレメント50の共有秘密更新部57は、受信した更新後の共有秘密の値で、SC側の共有秘密を更新する。
P146(デバイス共有鍵の再生成):サーバ10及びセキュアエレメント50は、SC側乱数、サーバ側乱数及び更新後の共有秘密を入力として、新たなデバイス共通鍵(新)を生成する。
P147(デバイスによる更新後の鍵取り出し):デバイス70は、再度セキュアエレメント50に対し、デバイス共通鍵の出力を要求する。セキュアエレメント50は、更新されたデバイス共通鍵(新)をデバイス70に供給する。
P148(暗号セッションの確立と暗号通信):サーバ10とデバイス70は、デバイス共通鍵(新)に基づく暗号通信路を新たに確立する。
上述の例では、共有秘密更新後、その他の情報(乱数)を更新することなく再度デバイス共有鍵を生成しているが、セキュリティ強度を確保するため、乱数などのその他の情報を含めて更新した上で再度デバイス共通鍵を生成してもよい。
図10は鍵生成アルゴリズムの追加の一例を示す説明図である。本実施例では、鍵生成アルゴリズムとして、SHA−1、SHA−256等、所定のアルゴリズムが事前に格納されているが、セキュアエレメント50がJavaCard(登録商標)や、TEE等、トラスティッドアプリケーション(Trusted Application)をインストール可能な環境であれば、鍵生成アルゴリズムを動的に追加、削除することが可能である。以下では、共通鍵生成部16、56で用いるアルゴリズムとして、SHA−3を追加する例を説明する。以下、符号P151〜P159で示す処理について説明する。
P151(サーバ側共通鍵生成アルゴリズムの追加):サーバ10は、自身の共通鍵生成部16に新たに追加する共通鍵生成アルゴリズムSHA−3(22)の実装(プログラムコード)を追加する。
P152(実装の暗号化):サーバ10は、追加したいアルゴリズムの実装を、登録済みのSC公開鍵で暗号化する。
P153(サーバ側署名の作成):サーバ10は、追加したいアルゴリズムの実装に対して、自身が保有するサーバ秘密鍵で署名を行い、暗号化された実装に添付する。
P154(暗号化実装と署名の送信):サーバ10は、生成した暗号化実装と、生成した署名をまとめてデバイス70経由でセキュアエレメント50に送信する。
P155(暗号化実装の復号):セキュアエレメント50は、受信した暗号化実装を、自身が保有するSC秘密鍵で復号する。
P156(署名検証):セキュアエレメント50は、受信した署名を、登録済みのサーバ公開鍵を用いて検証する。サーバ公開鍵による復号結果が、P155で復号した実装と対応付いており、サーバ秘密鍵による正当な署名であることを確認する。正当な署名でない場合、ここで処理を中断し、サーバ10に対してエラー終了を通知する。
P157(SC側共通鍵生成アルゴリズムの追加):セキュアエレメント50は、署名の正当性を確認後、受信したアルゴリズムの実装を自身の共通鍵生成部56に追加する。
P158(SC側共通鍵生成アルゴリズムの変更):セキュアエレメント50は、現在共通鍵生成に使用しているアルゴリズムを切り替える。本実施例では、新たに追加されたアルゴリズムを即時に有効にするポリシーを適用することとして、新たに追加されたSHA−3(62)を即時に有効化し、従来使用していたSHA−256(60)の使用を行わないように設定変更する。当該処理が正常に終了した場合、セキュアエレメント50は、サーバ10にその旨をデバイス70経由で通知する。
P159(サーバ側共通鍵生成アルゴリズムの変更):サーバ10は、セキュアエレメント50からP158の処理が正常に終了したことを確認し、自身の共通鍵生成部16で使用しているアルゴリズムを変更する。ここでは、セキュアエレメント50と同様のポリシーを適用し、新たに追加されたSHA−3(22)を即時に有効化し、従来使用していたSHA−256(20)の使用を行わないように設定変更する。以降、サーバ10及びセキュアエレメント50は、新たに追加され、有効化されたSHA−3により、デバイス共通鍵を生成する。
上述のように、共通鍵生成部16、56それぞれは、所定のタイミングで、デバイス共通鍵を生成するためのアルゴリズムを変更することができる。所定のタイミングは、例えば、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。アルゴリズムの変更は、アルゴリズムの追加、削除、切替を含む。これにより、サーバ10とデバイス70との間の暗号通信のセキュリティを更に高めることができる。
上述の例では、新たに追加されたアルゴリズムを即時有効化しているが、これに限定されるものではなく、任意のタイミングで有効化してもよい。また、上述の例では、交換された公開鍵に基づいて、共通鍵生成アルゴリズムの追加を行っているが、これに限定されるものではなく、例えば、別途、GlobalPlatform仕様、JavaCard仕様等の技術を適用して共通鍵生成アルゴリズムの追加、削除を行ってもよい。
図11はサーバ10による公開鍵の交換処理の手順の一例を示すフローチャートである。サーバ10は、セキュアエレメント秘密鍵(SC秘密鍵)で暗号化されたSCID及びセキュアエレメント公開鍵(SC公開鍵)を受信し(S11)、暗号化されたSCIDをセキュアエレメント公開鍵により復号する(S12)。
サーバ10は、SCIDの検証を行い(S13)、セキュアエレメント公開鍵を登録する(S14)。サーバ10は、サーバ公開鍵及びサーバ秘密鍵を生成し(S15)、サーバIDをサーバ秘密鍵で暗号化する(S16)。
サーバ10は、サーバ公開鍵及び暗号化されたサーバIDをデバイス70経由でセキュアエレメント50に送信し(S17)、処理を終了する。
図12はセキュアエレメント50による公開鍵の交換処理の手順の一例を示すフローチャートである。セキュアエレメント50は、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成し(S21)、セキュアエレメントID(SCID)をセキュアエレメント秘密鍵で暗号化する(S22)。
セキュアエレメント50は、セキュアエレメント公開鍵及び暗号化されたセキュアエレメントIDをデバイス70経由でサーバ10に送信する(S23)。セキュアエレメント50は、サーバ秘密鍵で暗号化されたサーバID及びサーバ公開鍵を受信し(S24)、暗号化されたサーバIDをサーバ公開鍵により復号する(S25)。
セキュアエレメント50は、サーバIDの検証を行い(S26)、サーバ公開鍵を登録し(S27)、処理を終了する。
図13はサーバ10によるデバイス共通鍵の生成処理の手順の一例を示すフローチャートである。サーバ10は、サーバ側乱数を生成し(S41)、登録済みのセキュアエレメント公開鍵を用いてサーバ側乱数を暗号化する(S42)。
サーバ10は、暗号化したサーバ側乱数をデバイス70経由でセキュアエレメント50に送信する(S43)。サーバ10は、暗号化されたセキュアエレメント側乱数を受信し(S44)、受信したセキュアエレメント側乱数をサーバ秘密鍵で復号する(S45)。サーバ10は、復号したセキュアエレメント側乱数、サーバ側乱数を入力として所定の共通鍵生成アルゴリズムを用いてデバイス共通鍵を生成し(S46)、処理を終了する。
図14はセキュアエレメント50によるデバイス共通鍵の生成処理の手順の一例を示すフローチャートである。セキュアエレメント50は、セキュアエレメント側乱数を生成し(S51)、登録済みのサーバ公開鍵を用いてセキュアエレメント側乱数を暗号化する(S52)。
セキュアエレメント50は、暗号化したセキュアエレメント側乱数をデバイス70経由でサーバ10に送信する(S53)。セキュアエレメント50は、暗号化されたサーバ側乱数を受信し(S54)、受信したサーバ側乱数をサーバ秘密鍵で復号する(S555)。セキュアエレメント50は、復号したサーバ側乱数、セキュアエレメント側乱数を入力として所定の共通鍵生成アルゴリズムを用いてデバイス共通鍵を生成し(S56)、処理を終了する。
サーバ10を、CPU、RAM及びROMなどを含むコンピュータで構成し、図11及び図13に示すような処理手順を定めたコンピュータプログラムをRAMにロードし、CPU(プロセッサ)により当該コンピュータプログラムを実行させることにより、サーバ10の各処理をコンピュータプログラムによって実現することができる。
本実施の形態に係る暗号通信システムは、サーバと、セキュアエレメントを搭載するデバイスとを備える暗号通信システムであって、前記セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部とを備え、前記サーバは、前記セキュアエレメント出力部から出力されたセキュアエレメント公開鍵を取得して登録するサーバ登録部と、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部とを備え、前記セキュアエレメントは、さらに、前記サーバ出力部から出力されたサーバ公開鍵を取得して登録するセキュアエレメント登録部を備え、前記サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、前記セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。
本実施の形態に係るセキュアエレメントは、サーバと暗号通信を行うデバイスに搭載されるセキュアエレメントであって、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成するセキュアエレメント鍵生成部と、前記デバイスを経由して前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵を前記サーバへ出力するセキュアエレメント出力部と、前記サーバが出力するサーバ公開鍵を取得して登録するセキュアエレメント登録部とを備え、前記セキュアエレメントと前記サーバとの間の暗号通信に前記セキュアエレメント登録部で登録されたサーバ公開鍵を用いる。
本実施の形態に係るデバイスは、前述のセキュアエレメントを搭載し、所定のサーバと暗号通信を行うことができる。
本実施の形態に係るサーバは、セキュアエレメントが搭載されたデバイスと暗号通信を行うサーバであって、サーバ公開鍵及びサーバ秘密鍵を生成するサーバ鍵生成部と、前記デバイスを経由して前記サーバ鍵生成部で生成したサーバ公開鍵を前記セキュアエレメントへ出力するサーバ出力部と、前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録するサーバ登録部とを備え、前記セキュアエレメントとの間の暗号通信に前記サーバ登録部で登録されたセキュアエレメント公開鍵を用いる。
本実施の形態に係るコンピュータプログラムは、コンピュータに、サーバ公開鍵及びサーバ秘密鍵を生成する処理と、生成したサーバ公開鍵をデバイスに搭載されたセキュアエレメントへ出力する処理と、前記セキュアエレメントが出力するセキュアエレメント公開鍵を取得して登録する処理と、登録されたセキュアエレメント公開鍵を用いて、前記セキュアエレメントとの間で暗号通信を行う処理とを実行させる。
本実施の形態に係る暗号通信方法は、サーバと、セキュアエレメントを搭載するデバイスとの間の暗号通信方法であって、前記セキュアエレメントは、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成し、前記デバイスを経由して生成されたセキュアエレメント公開鍵を前記サーバへ出力し、前記サーバは、前記セキュアエレメントから出力されたセキュアエレメント公開鍵を取得して登録し、サーバ公開鍵及びサーバ秘密鍵を生成し、前記デバイスを経由して生成されたサーバ公開鍵を前記セキュアエレメントへ出力し、前記セキュアエレメントは、さらに、前記サーバから出力されたサーバ公開鍵を取得して登録し、前記サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、前記セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。
デバイスには、セキュアエレメントが搭載されている。セキュアエレメントは、耐タンパ性を有し、デバイスとは物理的に独立している。セキュアエレメントは、セキュアエレメント鍵生成部、セキュアエレメント出力部、セキュアエレメント登録部を備える。
セキュアエレメント鍵生成部は、セキュアエレメント公開鍵及びセキュアエレメント秘密鍵を生成する。セキュアエレメント公開鍵は、セキュアエレメント側の公開鍵という意味であり、セキュアエレメント秘密鍵は、セキュアエレメント側の秘密鍵という意味である。生成される公開鍵及び秘密鍵は、非対称鍵ペアということができ、例えば、RSA暗号では、公開鍵から秘密鍵を作ることは困難であり、秘密鍵から公開鍵を作ることは容易であるという特徴を有する。
セキュアエレメント出力部は、生成した非対称鍵ペアのうち、生成したセキュアエレメント公開鍵を、デバイスを経由してサーバへ出力する。
サーバは、サーバ登録部、サーバ鍵生成部、サーバ出力部を備える。
サーバ登録部は、セキュアエレメント出力部から出力されたセキュアエレメント公開鍵を取得して登録する。これにより、サーバは、セキュアエレメント公開鍵を共有することができる。すなわち、セキュアエレメント公開鍵を予め準備して固定鍵の如くサーバに記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、セキュアエレメント公開鍵は、セキュアエレメントによって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
サーバ鍵生成部は、サーバ公開鍵及びサーバ秘密鍵を生成する。サーバ公開鍵は、サーバ側の公開鍵という意味であり、サーバ秘密鍵は、サーバ側の秘密鍵という意味である。生成される公開鍵及び秘密鍵は、非対称鍵ペアということができ、例えば、RSA暗号では、公開鍵から秘密鍵を作ることは困難であり、秘密鍵から公開鍵を作ることは容易であるという特徴を有する。
サーバ出力部は、生成した非対称鍵ペアのうち、生成したサーバ公開鍵を、デバイスを経由してセキュアエレメントへ出力する。
セキュアエレメント登録部は、サーバ出力部から出力されたサーバ公開鍵を取得して登録する。これにより、セキュアエレメントは、サーバ公開鍵を共有することができる。すなわち、サーバ公開鍵を予め準備して固定鍵の如くセキュアエレメントに記憶する必要が無く、固定鍵の漏洩等により通信路の秘匿性が脆弱化するおそれがない。また、サーバ公開鍵は、サーバによって動的に生成されるので、特定の固定鍵という性質も有しないので、鍵設定の自由度を確保できる。
サーバは、登録されたセキュアエレメント公開鍵に基づく暗号通信を行い、セキュアエレメントは、登録されたサーバ公開鍵に基づく暗号通信を行う。これにより、サーバ及びセキュアエレメントそれぞれは、鍵の事前共有を必要としない。また、サーバには、セキュアエレメント秘密鍵に対応するセキュアエレメント公開鍵が登録されているので、サーバからセキュアエレメントへの一方向暗号化が可能な通信路をサーバとセキュアエレメントとの間で確保することができる。また、セキュアエレメントには、サーバ秘密鍵に対応するサーバ公開鍵が登録されているので、セキュアエレメントからサーバへの一方向暗号化が可能な通信路をサーバとセキュアエレメントとの間で確保することができる。
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、登録したサーバ公開鍵を用いて所定のセキュアエレメント情報を暗号化するセキュアエレメント第1暗号化部を備え、前記セキュアエレメント出力部は、前記セキュアエレメント第1暗号化部で暗号化されたセキュアエレメント情報を前記サーバへ出力し、前記サーバは、前記サーバ秘密鍵を用いて前記暗号化されたセキュアエレメント情報を復号するサーバ第1復号部と、登録したセキュアエレメント公開鍵を用いて所定のサーバ情報を暗号化するサーバ第1暗号化部を備え、前記サーバ出力部は、前記サーバ第1暗号化部で暗号化されたサーバ情報を前記セキュアエレメントへ出力し、前記セキュアエレメントは、さらに、前記セキュアエレメント秘密鍵を用いて前記暗号化されたサーバ情報を復号するセキュアエレメント第1復号部を備える。
セキュアエレメントは、セキュアエレメント第1暗号化部、セキュアエレメント第1復号部を備える。サーバは、サーバ第1暗号化部、サーバ第1復号部を備える。
セキュアエレメント第1暗号化部は、登録したサーバ公開鍵を用いて所定のセキュアエレメント情報を暗号化する。所定のセキュアエレメント情報は、セキュアエレメントが生成した乱数を用いてもよく、乱数以外の情報を用いてもよい。
セキュアエレメント出力部は、セキュアエレメント第1暗号化部で暗号化されたセキュアエレメント情報をサーバへ出力する。
サーバ第1復号部は、サーバ秘密鍵を用いて暗号化されたセキュアエレメント情報を復号する。これにより、サーバは、例えば、セキュアエレメントが生成した乱数などの情報を、セキュアエレメントとの間で共有できる。
サーバ第1暗号化部は、登録したセキュアエレメント公開鍵を用いて所定のサーバ情報を暗号化する。所定のサーバ情報は、サーバが生成した乱数を用いてもよく、乱数以外の情報を用いてもよい。
サーバ出力部は、サーバ第1暗号化部で暗号化されたサーバ情報をセキュアエレメントへ出力する。
セキュアエレメント第1復号部は、セキュアエレメント秘密鍵を用いて暗号化されたサーバ情報を復号する。これにより、セキュアエレメントは、例えば、サーバが生成した乱数などの情報を、サーバとの間で共有できる。これにより、サーバ及びセキュアエレメントそれぞれは、所定のセキュアエレメント情報及び所定のサーバ情報を共有することができ、サーバ及びセキュアエレメントの共有鍵を生成する際に使用する情報を共有することができる。
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記サーバ第1復号部で復号したセキュアエレメント情報及び前記サーバ情報を用いて共通鍵を生成するサーバ共通鍵生成部を備え、前記セキュアエレメントは、前記セキュアエレメント第1復号部で復号したサーバ情報及び前記セキュアエレメント情報を用いて共通鍵を生成するセキュアエレメント共通鍵生成部を備え、前記セキュアエレメント共通鍵生成部で生成した共通鍵を前記デバイスへ出力し、前記サーバ及びデバイスは、前記共通鍵に基づく暗号通信を行う。
サーバは、サーバ共通鍵生成部を備える。セキュアエレメントは、セキュアエレメント共通鍵生成部を備える。
サーバ共通鍵生成部は、サーバ第1復号部で復号したセキュアエレメント情報及びサーバ情報を用いて共通鍵を生成する。セキュアエレメント共通鍵生成部は、セキュアエレメント第1復号部で復号したサーバ情報及びセキュアエレメント情報を用いて共通鍵を生成する。すなわち、サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部は、共通のセキュアエレメント情報及びサーバ情報を用いて共通鍵を生成する。例えば、セキュアエレメント情報及びサーバ情報を入力データとして、共通鍵を生成するアルゴリズムとして、例えば、所定のハッシュ関数を用いることにより、同一のデータ列を出力として得ることができ、このデータ列を共通鍵とすることができる。セキュアエレメントは、セキュアエレメント共通鍵生成部で生成した共通鍵をデバイスへ出力する。
サーバ及びデバイスは、生成された共通鍵に基づく暗号通信を行う。上述の構成により、サーバとデバイスとの間の通信路を介して共通鍵の授受をする必要がなく、共通鍵が通信路に載らないので、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。また、共通鍵を生成するために用いられるセキュアエレメント情報及びサーバ情報が仮に漏洩しても、共通鍵の生成アルゴリズムの詳細を知らない限り、共通鍵を生成することができない。これにより、サーバとデバイスとの間の暗号通信が危殆化しない。
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記セキュアエレメント秘密鍵を用いてセキュアエレメント識別情報を暗号化するセキュアエレメント第2暗号化部を備え、前記セキュアエレメント出力部は、前記セキュアエレメント第2暗号化部で暗号化されたセキュアエレメント識別情報を前記サーバへ出力し、前記サーバは、取得したセキュアエレメント公開鍵を用いて前記暗号化されたセキュアエレメント識別情報を復号するサーバ第2復号部を備え、前記サーバ登録部は、前記サーバ第2復号部で復号したセキュアエレメント識別情報に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。
セキュアエレメントは、セキュアエレメント第2暗号化部を備える。サーバは、サーバ第2復号部を備える。
セキュアエレメント第2暗号化部は、セキュアエレメント秘密鍵を用いてセキュアエレメント識別情報を暗号化する。セキュアエレメント識別情報は、例えば、セキュアエレメントごとに固有に割り振られているID(SCID)とすることができる。
セキュアエレメント出力部は、セキュアエレメント第2暗号化部で暗号化されたセキュアエレメント識別情報をサーバへ出力する。
サーバ第2復号部は、取得したセキュアエレメント公開鍵を用いて、暗号化されたセキュアエレメント識別情報を復号する。
サーバ登録部は、サーバ第2復号部で復号したセキュアエレメント識別情報に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。セキュアエレメント公開鍵の登録可否は、例えば、復号したセキュアエレメント識別情報が正当なものであるか否かを検証することによって判定できる。例えば、復号したセキュアエレメント識別情報が、既に登録済のセキュアエレメント識別情報である場合、正当ではないとしてセキュアエレメント公開鍵の登録を実行しない。また、復号したセキュアエレメント識別情報が、登録済のセキュアエレメント識別情報でない場合、正当であるとしてセキュアエレメント公開鍵の登録を実行する。これにより、取得したセキュアエレメント公開鍵の正当性を判定した上で登録することができる。
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記サーバ秘密鍵を用いてサーバ識別情報を暗号化するサーバ第2暗号化部を備え、前記サーバ出力部は、前記サーバ第2暗号化部で暗号化されたサーバ識別情報を前記セキュアエレメントへ出力し、前記セキュアエレメントは、取得したサーバ公開鍵を用いて前記暗号化されたサーバ識別情報を復号するセキュアエレメント第2復号部を備え、前記セキュアエレメント登録部は、前記セキュアエレメント第2復号部で復号したサーバ識別情報に基づいて、取得したサーバ公開鍵の登録可否を判定する。
サーバは、サーバ第2暗号化部を備える。セキュアエレメントは、セキュアエレメント第2復号部を備える。
サーバ第2暗号化部は、サーバ秘密鍵を用いてサーバ識別情報を暗号化する。サーバ識別情報は、例えば、サーバごとに固有に割り振られているID(サーバID)とすることができ、例えば、サーバのURLを用いることができる。
サーバ出力部は、サーバ第2暗号化部で暗号化されたサーバ識別情報をセキュアエレメントへ出力する。
セキュアエレメント第2復号部は、取得したサーバ公開鍵を用いて、暗号化されたサーバ識別情報を復号する。
セキュアエレメント登録部は、セキュアエレメント第2復号部で復号したサーバ識別情報に基づいて、取得したサーバ公開鍵の登録可否を判定する。サーバ公開鍵の登録可否は、例えば、復号したサーバ識別情報が正当なものであるか否かを検証することによって判定できる。例えば、復号したサーバ識別情報が、既に登録済のサーバ識別情報である場合、正当ではないとしてサーバ公開鍵の登録を実行しない。また、復号したサーバ識別情報が、登録済のサーバ識別情報でない場合、正当であるとしてサーバ公開鍵の登録を実行する。これにより、取得したサーバ公開鍵の正当性を判定した上で登録することができる。
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵に関する認証を認証局サーバへ要求するセキュアエレメント認証要求部を備え、前記セキュアエレメント出力部は、前記認証局サーバによる認証が得られた場合、前記セキュアエレメント公開鍵を前記サーバへ出力する。
セキュアエレメントは、セキュアエレメント認証要求部を備える。セキュアエレメント認証要求部は、セキュアエレメント鍵生成部で生成したセキュアエレメント公開鍵に関する認証を認証局サーバへ要求する。認証局サーバは、他の主体(サーバやセキュアエレメント)が保有する公開鍵の正当性を裏付けるためのサーバである。認証局サーバの認証によって、公開鍵を提供する主体の正当性を証明できる。
セキュアエレメント出力部は、認証局サーバによる認証が得られた場合、セキュアエレメント公開鍵をサーバへ出力する。これにより、セキュアエレメントが生成したセキュアエレメント公開鍵の正当性を確立することができる。
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記認証局サーバによる認証が得られた場合、前記認証局サーバが生成した認証局署名を取得するセキュアエレメント取得部を備え、前記セキュアエレメント出力部は、前記セキュアエレメント取得部で取得した認証局署名を前記サーバへ出力し、前記サーバ登録部は、前記認証局署名の検証結果に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。
セキュアエレメントは、セキュアエレメント取得部を備える。セキュアエレメント取得部は、認証局サーバによる認証が得られた場合、認証局サーバが生成した認証局署名を取得する。認証局サーバは、自身が保有する秘密鍵(CA秘密鍵)を使用して、セキュアエレメント公開鍵に対する認証局署名(CA署名)を生成し、デバイスを経由して生成した認証局署名をセキュアエレメントへ送信することができる。認証局サーバは、署名を要求したセキュアエレメントが信頼できる主体であることを確認した上で、セキュアエレメント公開鍵に対してCA秘密鍵を用いて署名を行うことで、セキュアエレメント公開鍵が信頼できることを示す。セキュアエレメント出力部は、セキュアエレメント取得部で取得した認証局署名をサーバへ出力する。
サーバ登録部は、認証局署名の検証結果に基づいて、取得したセキュアエレメント公開鍵の登録可否を判定する。認証局署名の検証は、例えば、認証局サーバが保有する公開鍵(CA公開鍵)を取得し、取得したCA公開鍵を用いて、セキュアエレメント公開鍵に対するCA署名を検証することができる。検証結果に問題がなければ、取得したセキュアエレメント公開鍵を登録し、検証結果に問題があれば、取得したセキュアエレメント公開鍵の登録をしない。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記サーバ鍵生成部で生成したサーバ公開鍵に関する認証を認証局サーバへ要求するサーバ認証要求部を備え、前記サーバ出力部は、前記認証局サーバによる認証が得られた場合、前記サーバ公開鍵を前記セキュアエレメントへ出力する。
サーバは、サーバ認証要求部を備える。サーバ認証要求部は、サーバ鍵生成部で生成したサーバ公開鍵に関する認証を認証局サーバへ要求する。認証局サーバは、他の主体(サーバやセキュアエレメント)が保有する公開鍵の正当性を裏付けるためのサーバである。認証局サーバの認証によって、公開鍵を提供する主体の正当性を証明できる。
サーバ出力部は、認証局サーバによる認証が得られた場合、サーバ公開鍵をセキュアエレメントへ出力する。これにより、サーバが生成したサーバ公開鍵の正当性を確立することができる。
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記認証局サーバによる認証が得られた場合、前記認証局サーバが生成した認証局署名を取得するサーバ取得部を備え、前記サーバ出力部は、前記サーバ取得部で取得した認証局署名を前記セキュアエレメントへ出力し、前記セキュアエレメント登録部は、前記認証局署名の検証結果に基づいて、取得したサーバ公開鍵の登録可否を判定する。
サーバは、サーバ取得部を備える。サーバ取得部は、認証局サーバによる認証が得られた場合、認証局サーバが生成した認証局署名を取得する。認証局サーバは、自身が保有する秘密鍵(CA秘密鍵)を使用して、サーバ公開鍵に対する認証局署名(CA署名)を生成し、生成した認証局署名をサーバへ送信することができる。認証局サーバは、署名を要求したサーバが信頼できる主体であることを確認して上で、サーバ公開鍵に対してCA秘密鍵を用いて署名を行うことで、サーバ公開鍵が信頼できることを示す。サーバ出力部は、サーバ取得部で取得した認証局署名をセキュアエレメントへ出力する。
セキュアエレメント登録部は、認証局署名の検証結果に基づいて、取得したサーバ公開鍵の登録可否を判定する。認証局署名の検証は、例えば、認証局サーバが保有する公開鍵(CA公開鍵)を取得し、取得したCA公開鍵を用いて、サーバ公開鍵に対するCA署名を検証することができる。検証結果に問題がなければ、取得したサーバ公開鍵を登録し、検証結果に問題があれば、取得したサーバ公開鍵の登録をしない。これにより、信頼の伴わない不正な主体と鍵交換を行って通信するリスクを低減できる。
本実施の形態に係る暗号通信システムにおいて、前記サーバは、所要のタイミングで登録済のセキュアエレメント公開鍵の失効の有無を判定するサーバ判定部と、前記サーバ判定部で失効があると判定された場合、登録済の前記セキュアエレメント公開鍵を無効にするサーバ無効処理部とを備え、前記セキュアエレメントは、所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定するセキュアエレメント判定部と、前記セキュアエレメント判定部で失効があると判定された場合、登録済の前記サーバ公開鍵を無効にするセキュアエレメント無効処理部とを備える。
サーバは、サーバ判定部、サーバ無効処理部を備える。セキュアエレメントは、セキュアエレメント判定部、セキュアエレメント無効処理部を備える。
サーバ判定部は、所要のタイミングで登録済のセキュアエレメント公開鍵の失効の有無を判定する。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。セキュアエレメント公開鍵の失効は、例えば、認証局サーバによる公開鍵の失効処理の結果(公開鍵失効済みリスト)に基づいて判定できる。
サーバ無効処理部は、サーバ判定部で失効があると判定された場合、登録済のセキュアエレメント公開鍵を無効にする。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
セキュアエレメント判定部は、所要のタイミングで登録済のサーバ公開鍵の失効の有無を判定する。所要のタイミングは、例えば、暗号通信の開始時点、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。サーバ公開鍵の失効は、例えば、認証局サーバによる公開鍵の失効処理の結果(公開鍵失効済みリスト)に基づいて判定できる。
セキュアエレメント無効処理部は、セキュアエレメント判定部で失効があると判定された場合、登録済のサーバ公開鍵を無効にする。これにより、秘密鍵の漏洩や、デバイス又はサーバのライフサイクル管理上、一度共有した公開鍵を失効させたいという要求を実現できる。
本実施の形態に係る暗号通信システムにおいて、前記サーバ無効処理部は、さらに、前記サーバ共通鍵生成部で生成した共通鍵を無効にし、前記セキュアエレメント無効処理部は、さらに、前記セキュアエレメント共通鍵生成部で生成した共通鍵を無効にする。
サーバ無効処理部は、さらに、サーバ共通鍵生成部で生成した共通鍵を無効にし、セキュアエレメント無効処理部は、さらに、セキュアエレメント共通鍵生成部で生成した共通鍵を無効にする。これにより、共通鍵による暗号通信を遮断することができる。
本実施の形態に係る暗号通信システムにおいて、前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、所定の契機で、生成した共通鍵を更新する。
サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部それぞれは、所定の契機で、生成した共通鍵を更新する。所定の契機は、例えば、同一の共通鍵を用いて行った暗号通信の回数が所定回数になった場合、サーバ又はセキュアエレメントに対する外部からの更新指示などとすることができるが、これに限定されない。
上述のように、デバイス(デバイス本体)は、共通鍵の生成をセキュアエレメントに依存しているので、デバイスのセキュリティは、セキュアエレメントに従属することになり、デバイスの共通鍵管理を一層強力にすることができる。
すなわち、サーバ及びセキュアエレメントの共通鍵を、一定の規則性に基づいて動的に更新した場合、デバイスは、セキュアエレメントから更新後の共通鍵の供給を受けない限り、共通鍵の更新後の暗号通信を正しく実行することができない。このことは、デバイスが適切なセキュアエレメントの管理下で動作していることの動的検証と同義であり、セキュアブート等の起動時や鍵生成時のみならず、継続的にデバイスのセキュリティ検証を行うことができることを意味する。
本実施の形態に係る暗号通信システムにおいて、前記デバイスは、前記所定の契機に応じて、前記セキュアエレメントに対して共通鍵の取得要求を出力し、前記セキュアエレメントは、前記セキュアエレメント共通鍵生成部で更新した共通鍵を前記デバイスに供給する。
デバイスは、所定の契機に応じて、セキュアエレメントに対して共通鍵の取得要求を出力する。セキュアエレメントは、更新した共通鍵をデバイスに供給する。これにより、デバイスは、サーバ側の共通鍵が更新された場合でも、デバイスに搭載されたセキュアエレメントによって供給される更新後の共通鍵を用いてサーバとの間で暗号通信を行うことができる。
本実施の形態に係る暗号通信システムにおいて、前記サーバは、前記デバイスとの間で共通鍵が一致しない場合、前記デバイスの異常に対応する処理を実行する。
サーバは、デバイスとの間で共通鍵が一致しない場合、デバイスの異常に対応する処理を実行する。デバイスの異常に対応する処理は、サーバ側のセキュリティポリシーに応じた種々の適切な処理とすることができる。例えば、現在開設中の暗号通信を遮断する処理、交換済の公開鍵ペアを無効とする処理、当該セキュアエレメントのSCIDによる公開鍵登録を拒否し不正なデバイスとして取り扱う処理などを含む。
本実施の形態に係る暗号通信システムにおいて、前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、所定のタイミングで、共通鍵を生成するためのアルゴリズムを変更する。
サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部それぞれは、所定のタイミングで、共通鍵を生成するためのアルゴリズムを変更する。所定のタイミングは、例えば、所定回数の通信を行った都度、外部からの要求があった時点などとすることができるが、これらに限定されるものではない。アルゴリズムの変更は、アルゴリズムの追加、削除、切替を含む。これにより、サーバとデバイスとの間の暗号通信のセキュリティを更に高めることができる。
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、前記セキュアエレメントが接続されたデバイス本体を認証するデバイス認証部を備え、前記セキュアエレメント共通鍵生成部は、前記デバイス認証部でデバイス本体が認証された場合、生成した共通鍵を前記デバイス本体に出力し、前記サーバ及びデバイスは、前記共通鍵に基づく暗号通信を行う。
セキュアエレメントは、セキュアエレメント(自身)が接続されたデバイス本体を認証するデバイス認証部を備える。デバイス本体の認証は、適宜の手法を用いることができる。
セキュアエレメント共通鍵生成部は、デバイス認証部でデバイス本体が認証された場合、生成した共通鍵をデバイス本体に出力する。これにより、意図した(正規の)デバイスに適切なセキュアエレメントが接続されていることを確認することができる。
本実施の形態に係る暗号通信システムにおいて、前記サーバ及び前記セキュアエレメントそれぞれは、予め定められた共有情報を保持する保持部を備え、前記サーバ共通鍵生成部及び前記セキュアエレメント共通鍵生成部それぞれは、前記共有情報をさらに用いて共通鍵を生成する。
サーバ及びセキュアエレメントそれぞれは、予め定められた共有情報を保持する保持部を備える。共有情報は、例えば、サーバ及びセキュアエレメント以外の外部に公開されていない共有秘密情報とすることができる。
サーバ共通鍵生成部及びセキュアエレメント共通鍵生成部それぞれは、共有情報をさらに用いて共通鍵を生成する。すなわち、共通鍵の生成元となる情報として、セキュアエレメント情報及びサーバ情報の他に、さらに共有情報を用いる。これにより、攻撃者が、仮にセキュアエレメント情報及びサーバ情報を不正に取得して把握したとしても、共有情報を知らない限り、共通鍵を生成することができないので、サーバとデバイスとの間の暗号通信のセキュリティを一層高めることができる。
本実施の形態に係る暗号通信システムにおいて、前記保持部に保持された共有情報は、更新可能である。
例えば、セキュアエレメントの保持部に保持された共有情報は、外部であるサーバから更新することができる。これにより、共有情報が、固定された情報でなく、更新される情報であるため、サーバとデバイスとの間の暗号通信のセキュリティをさらに高めることができる。
本実施の形態に係る暗号通信システムにおいて、前記セキュアエレメントは、ハードウェアエレメント又はソフトウェアエレメントで構成されている。
セキュアエレメントは、ハードウェアエレメント又はソフトウェアエレメントで構成されている。これにより、デバイスの種類などに応じて適切なセキュアエレメントをデバイスに搭載できる。
上述のように、本実施の形態によれば、デバイス(例えば、IoTデバイス)の鍵共有の安全性及び自由度を飛躍的に高めるとともに、デバイスにおける暗号通信及びデバイス自身の信頼性を一層高めることができる。すなわち、共通鍵を事前に共有する必要がなく、通信路の秘匿性が特定の固定鍵に依存することがない。また、鍵の設定の自由度を確保することができ、ハッキングなどのリスクを低減できる。また、鍵値が通信路に載らないため、鍵生成の詳細を知らない限り、鍵生成の元となる情報を不正に入手できたとしても、攻撃者は鍵を生成することができない。これにより、サーバとデバイスとの間の暗号通信が危殆化しない。