(57)【要約】【課題】秘密情報を安全に保管し、かつ、秘密情報を用いた処理を高速度で実行することができる制御装置等を提供する。【解決手段】制御装置２は、入出力インターフェイス２３と、該入出力インターフェイス２３を介して情報の入出力が可能な第１実行領域２０１と、該第１実行領域２０１からのアクセスが制限された仮想領域であって、ハイパーバイザ２０３を介して前記第１実行領域２０１との間で情報の入出力を行う第２実行領域２０２とを備える制御装置であって、前記第２実行領域２０２は、前記入出力インターフェイス２３を介した情報の入出力が不可能に構成され、所定の秘密情報を保持し、前記第１実行領域２０１からの要求に応じて、前記秘密情報を用いた処理を実行することを特徴とする。【選択図】図７
2019125147.tif 000002
【特許請求の範囲】
【請求項１】
入出力インターフェイスと、
該入出力インターフェイスを介して情報の入出力が可能な第１実行領域と、
該第１実行領域からのアクセスが制限された仮想領域であって、ハイパーバイザを介して前記第１実行領域との間で情報の入出力を行う第２実行領域と
を備える制御装置であって、
前記第２実行領域は、
前記入出力インターフェイスを介した情報の入出力が不可能に構成され、
所定の秘密情報を保持し、
前記第１実行領域からの要求に応じて、前記秘密情報を用いた処理を実行する
ことを特徴とする制御装置。
【請求項２】
前記第２実行領域は、前記秘密情報の書き換えを禁止する禁止設定を受け付ける
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第１実行領域は、前記入出力インターフェイスを介して、前記第１又は第２実行領域に書き込むデータを取得し、
前記第２実行領域は、
前記第１実行領域が前記データを取得した場合、前記秘密情報に基づき、前記データの入力元の正当性を認証する認証処理を実行し、
認証に成功した場合、前記データの書き込みを許可する
ことを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記入出力インターフェイスはネットワークに接続され、
前記第１実行領域は、前記ネットワークを介して送信された前記データを取得する
ことを特徴とする請求項３に記載の制御装置。
【請求項５】
前記第２実行領域は、データコードの変換規則を規定する変換テーブルを保持し、
第１実行領域は、
前記変換テーブルに従って変換された前記データを取得し、
取得した前記データを前記第２実行領域に入力し、
前記第２実行領域は、入力された前記データを前記変換テーブルに従って変換する
ことを特徴とする請求項４に記載の制御装置。
【請求項６】
前記第２実行領域は、前記入力元との間で、前記データの送受信を行う際に用いるコマンドコードを共有してあり、
前記第１実行領域は、前記データと共に、前記変換テーブルに従って変換された前記コマンドコードを取得して前記第２実行領域に入力し、
前記第２実行領域は前記変換テーブルを参照して、前記コマンドコードの真正性を認証する前記認証処理を実行する
ことを特徴とする請求項５に記載の制御装置。
【請求項７】
制御装置が有する記憶領域にデータを書き込むデータ書き込み方法であって、
前記制御装置は、ハイパーバイザを介して互いに情報の入出力を行う複数の実行領域を有し、
前記複数の実行領域のうち、第１実行領域からのアクセスが制限された第２実行領域に対し、所定の秘密情報を書き込む
処理をコンピュータに実行させることを特徴とするデータ書き込み方法。
【請求項８】
前記制御装置は、入出力インターフェイスを備え、
前記入出力インターフェイスを介した情報の入出力が不可能に構成された前記第２実行領域に対し、前記秘密情報を書き込む
ことを特徴とする請求項７に記載のデータ書き込み方法。
【請求項９】
前記第２実行領域は、前記制御装置に固有の固有情報を予め保持してあり、
前記固有情報を所定の値に書き換える
ことを特徴とする請求項７又は８に記載のデータ書き込み方法。
【請求項１０】
ネットワークを介して、前記第２実行領域に新たに書き込むデータを該制御装置に送信する
ことを特徴とする請求項９に記載のデータ書き込み方法。
【請求項１１】
前記第２実行領域に対し、データコードの変換規則を規定する変換テーブルを書き込んでおき、
前記変換テーブルに従って変換した前記データを前記制御装置に送信する
ことを特徴とする請求項１０に記載のデータ書き込み方法。
【請求項１２】
入出力インターフェイスを備えた制御装置に、
前記入出力インターフェイスを介して情報の入出力が可能な第１実行領域と、該第１実行領域からのアクセスが制限された仮想領域であって、ハイパーバイザを介して前記第１実行領域との間で情報の入出力を行う第２実行領域とを構築し、
前記第２実行領域において、
前記入出力インターフェイスを介した情報の入出力を不可能に構成し、
所定の秘密情報を保持し、
前記第１実行領域からの要求に応じて、前記秘密情報を用いた処理を実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、データ書き込み方法及びプログラムに関する。
【背景技術】
【０００２】
ＳＩＭ（Subscriber Identity Module又はSubscriber Identification Module）等のＩＣ（Integrated Circuit）チップに暗号鍵、ＰＩＮ（Personal Identification Number）等の秘密情報を記憶させ、当該秘密情報を用いて、ＩＣチップ内でデジタル署名、相互認証等に関わる演算処理を行わせる技術がある。例えば特許文献１では、ＩＣチップを搭載したＩＣカードであって、記憶されている公開鍵暗号方式の暗号鍵を自ら検証するＩＣカードが開示されている。
【０００３】
ＳＩＭ等のＩＣチップでは、暗号鍵等の秘密情報を外部に出力せず、当該秘密情報を用いた演算をチップ内で行う。これにより、ＩＣチップに記憶されている秘密情報の安全性を担保することとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１３３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、例えばＩＣチップのような物理的モジュールで秘密情報を管理する場合、当該モジュールはＩＳＯ７８１６等の規約に基づいて動作する必要があり、上記の演算、及び演算に必要なデータ交換の処理速度が、ＳｏＣ（System on Chip）、システムＬＳＩ等と呼ばれる汎用的な演算モジュールと比較して低い。また、ＩＣチップ等の物理的モジュールにデータを入力、又は当該モジュールからデータを出力するバスをハッキングされ、データの搾取、改竄等が行われる虞がある。
【０００６】
一つの側面では、秘密情報を安全に保管し、かつ、秘密情報を用いた処理を高速度で実行することができる制御装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの側面に係る制御装置は、入出力インターフェイスと、該入出力インターフェイスを介して情報の入出力が可能な第１実行領域と、該第１実行領域からのアクセスが制限された仮想領域であって、ハイパーバイザを介して前記第１実行領域との間で情報の入出力を行う第２実行領域とを備える制御装置であって、前記第２実行領域は、前記入出力インターフェイスを介した情報の入出力が不可能に構成され、所定の秘密情報を保持し、前記第１実行領域からの要求に応じて、前記秘密情報を用いた処理を実行することを特徴とする。
【発明の効果】
【０００８】
一つの側面では、秘密情報を安全に保管し、かつ、秘密情報を用いた処理を高速度で実行することができる。
【図面の簡単な説明】
【０００９】
【図１】チップ発行システムの構成例を示す模式図である。
【図２】サーバの構成例を示すブロック図である。
【図３】チップの構成例を示すブロック図である。
【図４】製品ＤＢのレコードレイアウトの一例を示す説明図である。
【図５】コマンドテーブルのレコードレイアウトの一例を示す説明図である。
【図６】変換テーブルのレコードレイアウトの一例を示す説明図である。
【図７】チップの構成例を示す機能ブロック図である。
【図８】チップに対するデータの書き込み工程を示す説明図である。
【図９】チップ発行後のデータの書き込み処理を説明するための説明図である。
【図１０】チップ発行段階におけるデータ書き込み処理の処理手順の一例を示すフローチャートである。
【図１１】チップ発行後のデータ書き込み処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
（実施の形態）
図１は、チップ発行システムの構成例を示す模式図である。本実施の形態では、種々のデバイスに搭載されるチップ２に対し、秘密情報を書き込むデータ書き込み方法について説明する。本システムは、チップ（制御装置）２へのデータ書き込みを指示する情報処理装置１を含む。
【００１１】
情報処理装置１は、種々の情報処理、情報の送受信が可能な情報処理装置であり、例えばサーバ装置、パーソナルコンピュータ等である。本実施の形態で情報処理装置１はサーバ装置であるものとし、以下では簡潔のためサーバ１と読み替える。サーバ１は、不図示の発行装置に対してチップ２に書き込むべきデータを指示し、各チップ２にデータを書き込ませる。また、サーバ１はインターネット等のネットワークＮに通信接続されており、チップ２が搭載されるデバイス（製品）を製造する製品メーカ、あるいはデバイスを使用するエンドユーザからの要求を受けて、ネットワークＮを介してチップ２に対しデータを配信して書き込ませる遠隔操作を行う。
【００１２】
チップ２は、種々のデバイスに搭載される制御装置であって、例えばＳｏＣ（System on Chip）のように、ＣＰＵ（Central Processing Unit）等の演算処理装置、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等の記憶領域などをワンチップで搭載した集積回路である。なお、チップ２はＳｏＣといった称呼のものに限定されず、ＳＩＭ等のセキュリティチップとは異なり、デバイスの汎用的な処理を実行可能な制御装置であればよい。また、本実施の形態では、秘密情報を保持する制御装置がチップであるものとして説明するが、制御装置は集積回路である必要はなく、デバイス内に分散配置された半導体回路であってもよい。
【００１３】
チップ２の記憶領域にはＯＳ（オペレーティングシステム）、アプリケーションプログラム等のデータが記憶されており、当該ＯＳ、アプリケーションプログラムに従ってチップ２は動作する。また、チップ２の記憶領域には、所定の秘密情報が記憶されている。秘密情報は、例えば各チップ２に固有の固有情報（例えばチップ２の製造番号）、暗号演算に用いられる鍵情報（例えば公開鍵暗号方式の公開鍵又は秘密鍵、共通鍵暗号方式の共通鍵等）、個人認証等に用いられる認証情報（例えばＰＩＮコード）などである。チップ２には、サーバ１からの指示に従って各種の秘密情報が書き込まれる。
【００１４】
本システムの詳細について説明する前に、図１で例示するデバイスの製造工程の概略について説明する。本実施の形態では、デバイス、及び該デバイスに搭載されるチップ２の製造を、チップ２を製造するチップ製造者と、チップ２にデータを書き込むチップ発行者と、チップ２をデバイスに搭載してユーザに出荷する製品メーカとの三者が担うものとして説明する。
【００１５】
チップ製造者は、半導体部品の製造業者であり、チップ２を製造して最低限必要な初期設定を行う。当該初期設定は、例えばチップ２を起動するために必要な基本ＯＳのインストール、各チップ２を一意に識別可能な固有情報（例えば製造番号）の書き込み等である。製造元では、最低限必要な当該データをチップ２に書き込み、チップ発行者に出荷する。
【００１６】
チップ発行者は、製品メーカからの受注を受けてチップ２に種々のデータを書き込んで発行する発行業者である。製品メーカから受注を受ける際、例えばチップ２にインストールするアプリケーションプログラム、チップ２に書き込む秘密情報等の指定を受ける。例えばサーバ１は、各製品メーカから指定された各種データをデータベース上に格納し、当該データベースから、各チップ２に書き込むべきデータを読み出して書き込みを指示する。チップ発行者にて各種データが書き込まれたチップ２は、各製品メーカに出荷される。
【００１７】
また、サーバ１はチップ２の出荷後（発行後）であっても、製品メーカ、又はエンドユーザから依頼を受けて、ネットワークＮを介して遠隔でチップ２にデータを書き込む処理を行う。当該処理について詳しくは後述する。
【００１８】
製品メーカは、チップ発行者から納品されたチップ２をデバイスに搭載してユーザに出荷する製造業者である。製品メーカが製造するデバイスは、種々の電子機器であり得る。例えば図１に示すスマートフォン、車両内のＥＣＵ（Electronic Control Unit）、家電機器等のほか、パーソナルコンピュータ、インフラ設備装置、ウェアラブルデバイス等であり得る。製品メーカが製造するデバイスは、チップ２を搭載した電子機器であればよく、その内容は特に限定されない。
【００１９】
なお、例えば図１に示すように、各デバイスはネットワークＮに接続され、所謂ＩｏＴ（Internet of Things）に係るモノとして機能させてよい。
【００２０】
図２は、サーバ１の構成例を示すブロック図である。サーバ１は、制御部１１、主記憶部１２、通信部１３、及び補助記憶部１４を備える。
制御部１１は、一又は複数のＣＰＵ、ＭＰＵ（Micro-Processing Unit）、ＧＰＵ（Graphics Processing Unit）等の演算処理装置を有し、補助記憶部１４に記憶されたプログラムＰを読み出して実行することにより、サーバ１に係る種々の情報処理、制御処理等を行う。主記憶部１２は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等の一時記憶領域であり、制御部１１が演算処理を実行するために必要なデータを一時的に記憶する。通信部１３は、通信に関する処理を行うための処理回路等を含み、他の装置と情報の送受信を行う。
【００２１】
補助記憶部１４は大容量メモリ、ハードディスク等であり、制御部１１が処理を実行するために必要なプログラムＰ、その他のデータを記憶している。また、補助記憶部１４は、製品ＤＢ１４１、コマンドテーブル１４２、及び変換テーブル１４３を記憶している。製品ＤＢ１４１は、製品メーカから受注した各製品（チップ２）の受注データを記憶するデータベースである。コマンドテーブル１４２は、サーバ１とチップ２との間でデータの送受信を行う際に用いるコマンドを格納したテーブルである。変換テーブル１４３は、サーバ１とチップ２との間でデータの送受信を行う際に、送受信するデータを変換する変換規則を格納したテーブルである。
【００２２】
なお、補助記憶部１４はサーバ１に接続された外部記憶装置であってもよい。また、サーバ１は複数のコンピュータからなるマルチコンピュータであってもよく、ソフトウェアによって仮想的に構築された仮想マシンであってもよい。
【００２３】
また、本実施の形態においてサーバ１は上記の構成に限られず、例えば可搬型記憶媒体に記憶された情報を読み取る読取部等を含んでもよい。
【００２４】
図３は、チップ２の構成例を示すブロック図である。チップ２は、ＣＰＵ２１、ＲＡＭ２２、入出力Ｉ／Ｆ２３、不揮発性メモリ２４を含む。
ＣＰＵ２１は、種々の演算処理を実行する演算処理装置であり、不揮発性メモリ２４に記憶されている各種プログラム又はデータを読み出して演算処理を実行する。ＲＡＭ２２は一時記憶領域であり、ＣＰＵ２１が演算処理を実行するために必要なデータを一時的に記憶する。入出力Ｉ／Ｆ２３は、チップ２外部との間で情報の入出力を行うためのインターフェイスである。
【００２５】
不揮発性メモリ２４は、例えばＲＯＭ、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等を含み、種々のデータを記憶している。具体的には、不揮発性メモリ２４は、リッチＯＳ２４１、当該リッチＯＳ２４１の環境下で動作するアプリケーション２４２、セキュアＯＳ２４３、当該セキュアＯＳ２４３の環境下で動作するアプリケーション２４４、固有情報２４５、鍵情報２４６、認証情報２４７、コマンドテーブル１４２、及び変換テーブル１４３を記憶している。
【００２６】
リッチＯＳ２４１、アプリケーション２４２、セキュアＯＳ２４３、アプリケーション２４４はそれぞれ、チップ２内部に構築される別々の仮想領域において動作するプログラムである。具体的には、ＣＰＵ２１はチップ２内部に、通常実行処理を実行するリッチ領域（第１実行領域）と、当該リッチ領域よりもセキュアな仮想領域であるセキュア領域（第２実行領域）とを構築し、各仮想領域において各種プログラムを実行する。ＣＰＵ２１は、リッチ領域においてリッチＯＳ２４１及びアプリケーション２４２を実行し、セキュア領域においてセキュアＯＳ２４３及びアプリケーション２４４を実行する。各仮想領域について、詳しくは後述する。
【００２７】
固有情報２４５は、チップ２に固有の情報であり、上述の如く、例えばチップ２の製造番号等である。なお、後述するように、サーバ１は製品メーカ等からの要望に応じて固有情報２４５を書き換え、所望の情報を固有情報２４５として不揮発性メモリ２４に書き込む。当該処理については後述する。
【００２８】
鍵情報２４６は、ＣＰＵ２１が実行する暗号演算に用いられる暗号鍵であり、例えば公開鍵暗号方式の公開鍵又は秘密鍵、共通鍵暗号方式の共通鍵等の鍵値である。
【００２９】
認証情報２４７は、例えばユーザ認証等に用いられる認証用のデータであり、個々のユーザ向けにパーソナライズされた情報である。認証情報２４７は、例えばパスワード等のＰＩＮコード、生体認証を行うための生体情報などである。
【００３０】
コマンドテーブル１４２、変換テーブル１４３は、サーバ１が保持するコマンドテーブル１４２、変換テーブル１４３と共通のテーブルであり、サーバ１との間でデータの送受信を行う際に用いるテーブルである。
【００３１】
図４は、製品ＤＢ１４１のレコードレイアウトの一例を示す説明図である。製品ＤＢ１４１は、チップＩＤ列、発注元列、製品列、書き込みデータ列を含む。チップＩＤ列は、各チップ２を識別するためのＩＤを記憶している。発注元列は、チップＩＤと対応付けて、各チップ２へのデータ書き込みを発注した製品メーカの情報が記憶されている。製品列は、チップＩＤと対応付けて、チップ２が搭載される製品（デバイス）に関する情報を記憶している。書き込みデータ列は、チップＩＤと対応付けて、チップ２に書き込むデータを記憶している。チップ２に書き込むデータは、上述の如く、例えばアプリケーション２４２、２４４、固有情報２４５、鍵情報２４６等であるが、これらに限定されるものではない。
【００３２】
図５は、コマンドテーブル１４２のレコードレイアウトの一例を示す説明図である。コマンドテーブル１４２は、コマンドコード列、コマンド内容列を含む。コマンドコード列は、サーバ１とチップ２との間でデータの送受信を行う際の各コマンドを表すコードが記憶されている。コマンド内容列は、コマンドコードと対応付けて、各コマンドの内容を記憶している。
【００３３】
図６は、変換テーブル１４３のレコードレイアウトの一例を示す説明図である。変換テーブル１４３は複数のコードを羅列したコード表である。例えば図６に示すように、変換テーブル１４３では、「００」から「ＦＦ」までの、十六進数表記の二桁のコード（文字列）が羅列されている。変換テーブル１４３において、奇数行のコードと偶数列のコードとが対応しており、対応するコードを相互に変換するよう規定する。例えば第１行目の第１列目のコード「００」と、第２行目の第１列目のコード「５Ｂ」とが対応しており、コード「００」が変換テーブル１４３に入力された場合、コード「５Ｂ」に変換して出力する。
【００３４】
図７は、チップ２の構成例を示す機能ブロック図である。図７に基づき、チップ２内部に構築されるリッチ領域２０１と、セキュア領域２０２とについて説明する。
チップ２は、ＣＰＵ２１、ＲＡＭ２２等のハードウェアリソースを仮想化基盤として、当該基盤上に２つの仮想領域を構築する。一の仮想領域はリッチ領域２０１であり、一の仮想領域はセキュア領域２０２である。
【００３５】
リッチ領域２０１は、チップ２が搭載されるデバイスの基本的、汎用的な処理を実行する通常実行環境であり、セキュア領域２０２へのアクセスが制限される以外に、特段の機能制約がない実行領域である。例えばチップ２がスマートフォンに搭載される場合、ＣＰＵ２１はリッチ領域２０１において、通話、画像表示等に係る制御処理を実行する。リッチ領域２０１にはリッチＯＳ２４１、アプリケーション２４２が格納され、ＣＰＵ２１は各プログラムを実行することで汎用的な処理を行う。
【００３６】
図７に示すように、リッチ領域２０１は入出力Ｉ／Ｆ２３を介して外部と情報の入出力可能に構成されている。例えばＣＰＵ２１は、ユーザによる操作入力内容を入出力Ｉ／Ｆ２３を介して取得し、操作入力に対する応答（例えば画面操作に対する応答）を返す。
【００３７】
セキュア領域２０２は、リッチ領域２０１よりもセキュアな実行環境であり、リッチ領域２０１からのアクセスが制限された仮想領域である。例えば図７に示すように、リッチ領域２０１からセキュア領域２０２への直接的なアクセスは禁止されており、リッチ領域２０１からセキュア領域２０２にアクセスするためには、ソフトウェア上実現されるハイパーバイザ２０３を経由してアクセスしなければならない。
【００３８】
なお、本実施の形態ではチップ２が２つの仮想領域を有するものとして説明するが、チップ２は複数の仮想領域を有していればよく、当該仮想領域は３つ以上であってもよい。
【００３９】
セキュア領域２０２はリッチ領域２０１からのアクセスが制限されると共に、実行可能な処理も制限されている。具体的には、ＣＰＵ２１はセキュア領域２０２において、セキュリティ上重要な処理を実行する。例えば図７に示すように、セキュア領域２０２にはセキュアＯＳ２４３、アプリケーション２４４等のほか、秘密情報である固有情報２４５、鍵情報２４６、認証情報２４７等を格納してある。ＣＰＵ２１はセキュア領域２０２において、当該秘密情報を用いた処理を行う。例えばＣＰＵ２１は、セキュア領域２０２において鍵情報２４６を用いた暗号演算を行い、暗号化したデータをリッチ領域２０１に出力する。また、例えばＣＰＵ２１は、リッチ領域２０１からの要求に応じ、セキュア領域２０２において認証情報２４７を用いた個人認証を行う。
【００４０】
また、セキュア領域２０２にはコマンドテーブル１４２及び変換テーブル１４３が格納されている。チップ２がサーバ１との間でデータの送受信を行う場合、ＣＰＵ２１はセキュア領域２０２において、各テーブルを用いて送信データの生成、及び受信データの解析を行う。
【００４１】
本実施の形態においてセキュア領域２０２は、入出力Ｉ／Ｆ２３を介したチップ２外部との間の直接的な通信（情報の入出力）が不可能に構成されている。例えば図７に示すように、ハイパーバイザ２０３がセキュア領域２０２と入出力Ｉ／Ｆ２３との間の接続を遮断し、セキュア領域２０２とチップ２外部との間の通信を禁止するよう設定してある。チップ２外部からセキュア領域２０２に情報を入力し、セキュア領域２０２から情報を取得するためには、リッチ領域２０１、ハイパーバイザ２０３を経由しなければならない。
【００４２】
セキュア領域２０２は、暗号演算等のセキュリティ上の処理を、ハイパーバイザ２０３を介してリッチ領域２０１から要求を受け付けた場合のみ実行する。セキュア領域２０２は、当該セキュリティ処理の処理結果（例えば認証結果、暗号化したデータ等）をリッチ領域２０１に出力し、リッチ領域２０１を介してチップ２外部へと出力する。
【００４３】
上述の如く、チップ２はリッチ領域２０１とセキュア領域２０２とを有し、セキュア領域２０２に秘密情報を保持する。セキュア領域２０２は入出力Ｉ／Ｆ２３を介したチップ２外部との間の通信が不可能に構成され、ハイパーバイザ２０３を介してリッチ領域２０１から要求を受けた場合のみ、秘密情報を用いた種々の処理を実行する。これにより、チップ２は秘密情報を安全に保管することができる。
【００４４】
また、チップ２は、ＩＣカードに搭載されるＩＣチップのような物理的モジュールではなく、チップ内のセキュアなソフトウェアモジュールに秘密情報を保持し、演算を行う。これにより、秘密情報に基づく演算、及び当該演算に関連するデータ交換がＣＰＵのバスレベルで実行可能となり、物理的モジュールを実装する場合と比較して、処理速度を高めることができる。また、ＩＣチップ等の物理的モジュールでは、当該モジュールに繋がるバスをハッキングされ、データを搾取、又は悪意ある情報を入力される虞がある。しかし、上記のようにソフトウェアモジュールとして実装した場合、ハッキングに対する耐性を高めることができる。これにより、物理的モジュールを実装する場合と比較して安全性を高めることができる。
【００４５】
図８は、チップ２に対するデータの書き込み工程を示す説明図である。図８では、チップ２にＯＳ、アプリケーション、秘密情報等の各種データが書き込まれる工程を、概念的に図示している。
図８では、チップ製造者、チップ発行者、及び製品メーカそれぞれの下にチップ２がある状況で、どのデータが書き込まれるかを概念的に図示している。
【００４６】
まずチップ製造者は、チップ２を動作させるために最低限必要なＯＳ（リッチＯＳ２４１及びセキュアＯＳ２４３）と、チップ２の製造番号等である固有情報２４５とを書き込む。
【００４７】
次にチップ発行者は、製品メーカからの受注に従い、製品に応じてカスタマイズされた動作を行うよう、チップ２に各種データを書き込む。例えばサーバ１は製品ＤＢ１４１を参照して、各製品メーカから指定されたデータを、製造ラインに載せられた各チップ２に順次書き込んでいく。例えばサーバ１は、アプリケーション２４２、２４４を書き込むと共に、暗号演算に用いる鍵情報２４６を書き込む。
【００４８】
この場合にサーバ１は、製品メーカから要望があった場合、チップ２の製造元で付された固有情報２４５を書き換える。
【００４９】
製造元で書き込まれた固有情報２４５は、例えばチップ２の製造番号であり、チップ製造者が各チップ２を一意に識別可能なよう付したデータである。しかしながら、当該データ（番号）はチップ２の製造元で決めた値であり、必ずしも製品メーカ、又はエンドユーザにとって使い勝手の良い値ではない。例えばチップ２が搭載される製品がスマートフォン等の可搬型媒体と仮定した場合、当該製品を、チップ２に記憶されたデータに基づき認証を行う社員証として機能させ、ＩＣカードのように用いたい場合がある。この場合、ユーザ（企業等）は社員番号と製造番号とを紐付けて管理し、チップ２から製造番号を読み取って社員番号を呼び出し、照合を行うという二段階の処理が必要となる。これにより、管理コストが増大する。
【００５０】
そこで、製品メーカ、又はエンドユーザによっては、固有情報２４５自体を所望の値に書き換えたいというニーズがある。そこでサーバ１は、製品メーカから書き換えるべき固有情報２４５の値（例えば社員番号）を受け付け、当該値に固有情報２４５を書き換える。これにより、製品メーカやエンドユーザの利便性を高めることができる。
【００５１】
また、サーバ１は必要に応じて、秘密情報の一部又は全部を書き換え禁止に設定する。例えばサーバ１は、固有情報２４５を書き換え禁止に設定する場合、固有情報２４５の書き換えを禁止する旨のフラグをチップ２に書き込み、セキュア領域２０２に保持させる。セキュア領域２０２はリッチ領域２０１から固有情報２４５の書き換えを要求された場合、書き換えを拒否する。これにより、悪意ある第三者による秘密情報の書き換えを防止することができる。
【００５２】
なお、どの秘密情報を書き換え禁止に設定するかは設計事項であり、例えば鍵情報２４６を書き換え禁止に設定してもよい。また、どの秘密情報を書き換え禁止に設定するか、サーバ１は製品メーカ等から指定を受け付けるようにしてもよい。
【００５３】
上述のように、チップ発行者において各種データが書き込まれたチップ２は、製品メーカに出荷される。製品メーカではリーダ／ライタ機能を持つ所定の端末装置４を用いて、認証情報がチップ２に書き込まれる。製品メーカで書き込まれる認証情報は、例えば製品に初期設定されるパスワード等である。パスワードの初期設定が行われたチップ２は各種製品に組み込まれ、各製品がユーザの下に出荷される。ユーザは自らパスワードの変更等を行って認証情報を書き換え、個々に使用する。
【００５４】
本実施の形態でサーバ１は、チップ発行者の製造ラインでのデータ書き込みを指示するだけでなく、ネットワークＮを介して通信を行い、製品メーカ等からの要望を受けて、チップ２の発行後もデータの書き込みを遠隔で行う。
【００５５】
ここでは一例として、チップ発行者からチップ２が発行され、製品メーカの工場へ納品されたチップ２に対し、遠隔でデータを書き込む場合を想定して説明を行う。例えば製品メーカによっては、チップ２内のアプリケーション２４２、２４４を自社向けによりカスタマイズして更新したいという要望がある。また、図８では簡潔のため一の製品メーカしか図示していないが、チップ２を搭載した部品（例えば車両ＥＣＵ）を製造する部品メーカと、各機器を搭載した全体製品（例えば車両）を製造するメーカとが存在する場合がある。この場合に、全体製品を製造するメーカは、各部品に搭載されたチップ２の固有情報２４５を自社の識別番号に統一したい場合などがあり得る。
【００５６】
このような場合にサーバ１は、製品メーカから要望されたデータをチップ２に配信し、不揮発性メモリ２４に書き込ませる。例えば図９に示す端末装置４がネットワークＮに接続され、端末装置４を介してチップ２はサーバ１と通信を行い、所望のデータを取得する。
【００５７】
しかし、チップ２へのデータ書き込みを無条件に可能とした場合、第三者によって不正にデータが書き込まれる虞がある。そこで本実施の形態では、サーバ１とチップ２との間で認証が成功したことを条件に、データの書き込みを許可する。
【００５８】
また、サーバ１からチップ２にネットワークＮを介してデータを配信するため、通信路上で第三者にデータを盗聴、搾取される虞がある。そこで本実施の形態では、サーバ１がデータを暗号化した上で配信すると共に、暗号化されたデータをチップ２が元に復元し、復元後のデータをセキュア領域２０２に格納して書き込みを行う。
【００５９】
具体的には、サーバ１及びチップ２はコマンドテーブル１４２及び変換テーブル１４３を用いたデータ交換を行い、上記の認証及び暗号化を行う。
【００６０】
図９は、チップ２発行後のデータの書き込み処理を説明するための説明図である。図９に基づき、上述の遠隔制御によるデータ書き込みについて説明する。
例えば製品メーカの作業者が端末装置４を操作し、チップ２に対して、秘密情報の書き換えを命令する所定の情報を入力する。当該情報は、リッチ領域２０１を介してセキュア領域２０２に入力される。チップ２はセキュア領域２０２において、入力された情報に従い、図９右上に示す送信コードを生成してリッチ領域２０１に出力する。
【００６１】
当該送信コードは、命令内容に対応するコマンドコードと、書き込むべきデータ（以下、「書き込みデータ」と呼ぶ）を指定するコードとを含むデータコードである。図９では、先頭の「００」で示すコマンドコードに、書き込みデータを指定するコードが連結されている。上述の如く、コマンドコードはコマンドテーブル１４２において規定されている。チップ２はコマンドテーブル１４２から、サーバ１に対してデータの配信を要求するコマンドコードを読み出して図９の送信コードを生成する。生成した送信コードはセキュア領域２０２からリッチ領域２０１に出力され、サーバ１に送信される。
【００６２】
なお、書き込みデータは固有情報２４５、鍵情報２４６等の秘密情報であってもよく、リッチＯＳ２４１の下で動作するアプリケーション２４２のように、秘密であることが要求されないデータであってもよい。また、書き込みデータの書き込み先はセキュア領域２０２であってもよく、リッチ領域２０１であってもよい。
【００６３】
チップ２はセキュア領域２０２において、上記のコマンドコードを変換テーブル１４３に従って変換しておく。例えば図９に示すように、チップ２はコマンドコード「００」を「５Ｂ」に変換する。チップ２は、変換後のコマンドコード「５Ｂ」を認証に用いるため、当該コマンドコードを保持する。
【００６４】
チップ２から送信コードを取得した場合、サーバ１は、送信コードに含まれるコマンドコード「００」に基づき、チップ２から書き込みデータの配信要求があったことを判別する。この場合にサーバ１は、チップ２と同様に、変換テーブル１４３に従って当該コマンドコード「００」を「５Ｂ」に変換する。
【００６５】
サーバ１は、変換後のコマンドコード「５Ｂ」と、チップ２から要求された書き込みデータとを含む送信コードを生成する。この場合にサーバ１は、変換テーブル１４３に基づいて書き込みデータを変換し、変換後のデータを送信コードに用いる。例えばチップ２から固有情報２４５の配信要求を受け付けた場合、サーバ１は、指定された固有情報２４５を変換テーブル１４３に従って変換したデータコードを生成する。これにより、チップ２に書き込むデータは暗号化され、第三者によって通信路上で盗聴、搾取された場合にも対応することができる。サーバ１は、生成した送信コードをチップ２に送信する。
【００６６】
チップ２はサーバ１から、変換後のコマンドコードと、変換後の書き込みデータとを含む送信コードを取得する。サーバ１から取得した送信コードは、リッチ領域２０１を介してセキュア領域２０２に入力される。
【００６７】
チップ２はセキュア領域２０２において、送信コードに含まれるコマンドコードに基づき、送信コードの送信元（入力元）であるサーバ１の正当性を認証する認証処理を実行する。具体的には、チップ２は自身が変換しておいたコマンドコード「５Ｂ」と、サーバ１が変換したコマンドコード「５Ｂ」とを照合し、両者が一致するか否かを判定する。このように、サーバ１及びチップ２がコマンドテーブル１４２及び変換テーブル１４３を共有しておき、変換テーブル１４３に従って各々が同一のコマンドコードを変換したデータを照合することで、書き込みデータの送信元の認証を行う。チップ２が変換したコマンドコードとサーバ１が変換したコマンドコードとが一致しない場合、チップ２は認証が失敗したものと判定し、サーバ１から配信されたデータを破棄する。
【００６８】
コマンドコードが一致したと判定した場合、チップ２は認証が成功したものと判定する。この場合、チップ２は、送信コードに含まれる書き込みデータを変換テーブル１４３に従って変換し、元のデータに復元する。チップ２は、復元後のデータをリッチ領域２０１又はセキュア領域２０２に格納することで、データの書き込みを行う。
【００６９】
上述の如く、サーバ１は、チップ２に対して遠隔でデータの書き込みを行う。この場合にチップ２は、発行段階でセキュア領域２０２に書き込まれたコマンドテーブル１４２、変換テーブル１４３等のデータを利用し、セキュア領域２０２において認証を行う。これにより、遠隔であっても安全にデータの書き込みを行うことができる。
【００７０】
なお、上記ではコマンドテーブル１４２で規定されたコマンドコードを認証に用いることにしたが、例えば固有情報２４５の照合、鍵情報２４６に基づく鍵交換等の手段で認証を行ってもよい。つまりチップ２は、セキュア領域２０２で保持する秘密情報を用いて書き込みデータの送信元の正当性を認証可能であればよく、用いる秘密情報はコマンドコードに限定されない。
【００７１】
また、上記ではサーバ１がチップ２に書き込みデータを配信し、遠隔でデータの書き込みを行うことにしたが、当該データの書き込みはローカルで行ってもよい。例えば端末装置４が可搬型記憶媒体から上述の送信コードに相当するデータを読み取ってチップ２に入力するようにしてもよい。つまり、チップ２は書き込みデータの入力元の正当性を認証可能であればよく、インターネット等のネットワークＮを介さずに書き込みデータを取得するようにしてもよい。
【００７２】
また、上記では説明の便宜上、製品メーカの工場に在るチップ２に書き込みデータを配信する場合を説明したが、例えばエンドユーザが使用中のデバイスに対して書き込みデータを配信し、チップ２に認証を行わせてデータを書き込ませる場合もあり得る。これにより、例えば有効期限切れのリッチＯＳ２４１やアプリケーション２４２、鍵情報２４６等の更新をおこなうことができる。このように、本実施の形態には種々の変形態様が想定される。
【００７３】
図１０は、チップ２発行段階におけるデータ書き込み処理の処理手順の一例を示すフローチャートである。図１０に基づき、チップ発行者の製造ラインにおけるデータの書き込み処理について説明する。
サーバ１の制御部１１は、チップ２に書き込むよう製品メーカから指定された各種データを製品ＤＢ１４１から読み出す（ステップＳ１１）。チップ２に書き込むデータは、例えばリッチ領域２０１、セキュア領域２０２それぞれで動作するアプリケーション２４２、２４４、セキュア領域２０２に書き込む秘密情報などである。秘密情報は、チップ２のＣＰＵ２１がセキュア領域２０２で実行する処理で用いるデータであり、例えば暗号演算に用いる鍵情報２４６等である。また、製品メーカから要望がある場合、チップ２に書き込む秘密情報には、チップ２の製造元で書き込まれた固有情報２４５の書き換えデータが含まれる。
【００７４】
制御部１１は、ステップＳ１１で読み出したデータのチップ２への書き込みを指示する（ステップＳ１２）。例えば制御部１１は、チップ２の不揮発性メモリ２４に対してデータの書き込みを行う発行装置に対し、アプリケーション２４２、２４４、鍵情報２４６等のデータを送信し、当該データを書き込むよう要求する。また、ＣＰＵ２１は、チップ２に遠隔でデータの書き込みを行うためのコマンドテーブル１４２、変換テーブル１４３の書き込みを併せて行う。
【００７５】
また、制御部１１は、チップ２に書き込まれている秘密情報の書き換えを指示する（ステップＳ１３）。例えば制御部１１は、上述の如く、チップ２に固有の固有情報２４５の書き換えを指示する。
【００７６】
制御部１１は、ステップＳ１２、Ｓ１３で書き込んだ秘密情報のうち、一部又は全部の書き換え禁止をチップ２に設定する（ステップＳ１４）。例えば制御部１１は、任意の秘密情報の書き換えを禁止する旨のフラグを不揮発性メモリ２４に書き込み、セキュア領域２０２に保持させる。制御部１１は、一連の処理を終了する。
【００７７】
図１１は、チップ２発行後のデータ書き込み処理の処理手順の一例を示すフローチャートである。図１１に基づき、遠隔でチップ２にデータを書き込む処理の処理内容について説明する。
例えばチップ２は、ネットワークＮを介してサーバ１と通信可能な所定の端末装置４に接続されており、端末装置４を介してサーバ１と通信を行う。チップ２のＣＰＵ２１は、サーバ１に対し、書き込みデータの配信を要求する（ステップＳ３１）。例えばＣＰＵ２１はセキュア領域２０２において、コマンドテーブル１４２で規定するコマンドコードと、書き込むべきデータを指定するデータコードとを含む送信コードを生成する。ＣＰＵ２１は、生成した送信コードをセキュア領域２０２からリッチ領域２０１に入力し、ネットワークＮを介してサーバ１へ送信する。また、ＣＰＵ２１はセキュア領域２０２において、送信コードに含まれるコマンドコードを、変換テーブル１４３を用いて変換し、保持する（ステップＳ３２）。
【００７８】
チップ２から送信コードを取得し、書き込みデータの配信要求を受け付けた場合、サーバ１の制御部１１は、チップ２から受信した送信コードを参照して、チップ２から要求された書き込みデータを製品ＤＢ１４１から読み出す（ステップＳ３３）。例えば制御部１１は、送信コードに含まれるコマンドコードに基づいて配信要求があったことを判別し、同じく送信コードに含まれるコードから、チップ２が指定した書き込みデータを判別する。制御部１１は、当該書き込みデータを製品ＤＢ１４１から読み出す。
【００７９】
制御部１１は、チップ２から取得したコマンドコードと、製品ＤＢ１４１から読み出した書き込みデータとを、変換テーブル１４３に従って変換する（ステップＳ３４）。変換テーブル１４３は、データコードを変換する変換規則を定めたテーブルであり、入力コードと出力コードとを対応付けたテーブルである。制御部１１は変換テーブル１４３に従い、チップ２から取得したコマンドコードを変換する。また、制御部１１は、製品ＤＢ１４１から読み出した書き込みデータを変換する。制御部１１は、変換後のコマンドコードと、変換後の書き込みデータとを含む送信コードを生成し、チップ２に送信する（ステップＳ３５）。
【００８０】
サーバ１からコマンドコード、書き込みデータを含む送信コードを取得した場合、チップ２のＣＰＵ２１は、サーバ１から取得したコマンドコードと、ステップＳ３２で変換済みのコマンドコードとを照合する（ステップＳ３６）。すなわちＣＰＵ２１は、自身で変換したコマンドコードと、サーバ１で変換されたコマンドコードとを比較することで、コマンドコードの真正性を確認（認証）する。これにより、ＣＰＵ２１は、サーバ１の正当性を認証する認証処理を行う。ＣＰＵ２１は、コマンドコードが一致したか否かを判定する（ステップＳ３７）。コマンドコードが一致しないと判定した場合（Ｓ３７：ＮＯ）、ＣＰＵ２１は取得したデータを破棄し、一連の処理を終了する。
【００８１】
コマンドコードが一致したと判定した場合、ＣＰＵ２１は、サーバ１から取得した送信コードに含まれる書き込みデータを変換テーブル１４３に従い変換する（ステップＳ３８）。すなわちＣＰＵ２１は、サーバ１によって変換された書き込みデータを復元する。ＣＰＵ２１は、変換した書き込みデータをリッチ領域２０１又はセキュア領域２０２に格納し（ステップＳ３９）、一連の処理を終了する。
【００８２】
なお、上記ではチップ製造者、チップ発行者、及び製品メーカに分けて一連の製造工程を説明したが、この作業主体の区別は便宜上のものであって、本実施の形態はこれに限定されるものではない。例えばチップ製造者とチップ発行者とを同一の事業者として、チップ２の製造から発行に至るまでを一の事業者が行ってもよい。また、デバイスの組み立てに至るまで、全ての製造作業を一の事業者が行ってもよい。
【００８３】
以上より、本実施の形態によれば、チップ２内のソフトウェアモジュールであるセキュア領域２０２に秘密情報を保持し、当該セキュア領域２０２にて秘密情報を用いた演算処理を行うようにすることで、秘密情報の安全性を確保することができる。特に本実施の形態では、セキュア領域２０２とチップ２外部との直接的な通信（情報の入出力）が不可能に構成され、セキュア領域２０２に情報を入力、又はセキュア領域２０２から情報を取得するためにはリッチ領域２０１を経由しなければならず、安全性をより強固にすることができる。また、セキュア領域２０２はソフトウェアモジュールであるため、ＩＣチップ等の物理的モジュールよりも、演算処理能力を高めることができる。さらに、ＳＩＭのような専用の物理的モジュールをデバイスに搭載する必要がないため、省スペース化、省電力化に資する。
【００８４】
また、本実施の形態によれば、発行段階でチップ２に書き込んだ秘密情報に対し、書き換え禁止を設定可能としてあり、発行後の秘密情報の改竄を防止することができる。
【００８５】
また、本実施の形態によれば、発行後にデータの追加書き込み、書き換え等を行う場合、発行段階で書き込んである秘密情報（例えばコマンドテーブル１４２、変換テーブル１４３等）を用いて認証を行うことで、安全にデータの書き込みを行うことができる。
【００８６】
また、本実施の形態によれば、ネットワークＮを介して、遠隔でデータの書き込みを行うことができる。
【００８７】
また、本実施の形態によれば、遠隔でデータを書き込む際に、変換テーブル１４３に従い書き込みデータを変換した上で配信することで、通信路上でのデータの盗聴、搾取等に対応することができる。
【００８８】
また、本実施の形態によれば、サーバ１及びチップ２でコマンドコードを共有しておき、当該コマンドコードと変換テーブル１４３とを組み合わせた真正性の検証（認証）を行うことで、より安全性を高めることができる。
【００８９】
また、本実施の形態によれば、製品メーカ等の要望に従い固有情報２４５を書き換えることで、製品メーカ等におけるチップ２の管理を容易にすることができる。
【００９０】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９１】
１  サーバ（情報処理装置）
１１  制御部
１２  主記憶部
１３  通信部
１４  補助記憶部
Ｐ１  プログラム
１４１  製品ＤＢ
１４２  コマンドテーブル
１４３  変換テーブル
２  チップ（制御装置）
２１  ＣＰＵ
２２  ＲＡＭ
２３  入出力Ｉ／Ｆ
２４  不揮発性メモリ
２４１  リッチＯＳ
２４２  アプリケーション
２４３  セキュアＯＳ
２４４  アプリケーション
２４５  固有情報
２４６  鍵情報
２４７  認証情報
【図１】
2019125147.tif 000003
【図２】
2019125147.tif 000004
【図３】
2019125147.tif 000005
【図４】
2019125147.tif 000006
【図５】
2019125147.tif 000007
【図６】
2019125147.tif 000008
【図７】
2019125147.tif 000009
【図８】
2019125147.tif 000010
【図９】
2019125147.tif 000011
【図１０】
2019125147.tif 000012
【図１１】
2019125147.tif 000013