〔実施形態1〕
以下、本実施形態に係る情報処理端末を多機能携帯電話端末(スマートフォン)にて実現した例について、図1〜9を用いて説明する。まず始めに、本実施形態に係るスマートフォン1の要部構成について図1を用いて説明する。
≪要部構成≫
図1は、本実施形態に係るスマートフォン1の要部構成を示す図である。なお、図1ではスマートフォン1と接続されたPC2も併せて記載している。パーソナルコンピュータ(PC)2は、スマートフォン1にキッティングデータ33(後述)を転送するための汎用コンピュータである。PC2は、スマートフォン1と通信可能に接続されている。なお、キッティングデータ33をスマートフォン1に送信可能であるならばPC2とスマートフォン1との通信方法は特に限定されない。上記通信方法としては、例えばMTP(Media Transfer Protocol)モードやadb(Android Debug Bridge)モードでの通信が挙げられる。MTPモードは、Windows(登録商標)コンピュータの標準機能である。したがってPC2はMTPモードで通信する場合、スマートフォン1と通信するための特別なドライバ等をインストールしなくても良いという利点がある。以降の説明では、PC2は、スマートフォン1とMTPモードの通信形式でデータ通信を行うこととする。
スマートフォン1は、少なくとも無線通信が可能な情報処理端末であり、工場出荷後にキッティングが可能な端末である。ここで、「キッティング」とは、スマートフォン1を使用する前に、スマートフォン1に予め設定しておきたい設定や、予め組み込んでおきたいアプリケーションのインストールなどを実行する処理を意味する。スマートフォン1は詳細には、通信部20と、記憶部30と、制御部10と、表示部40とを有する。
通信部20は、スマートフォン1とPCとの通信を行うものである。記憶部30は、スマートフォン1にて使用される各種データを記憶する記憶装置である。なお、本実施形態では、記憶部30はスマートフォン1に内蔵された記憶装置であるとして説明を行う。しかしながら、記憶部30は例えばSDカード(登録商標)などスマートフォン1に着脱可能な記録装置(記録媒体)であっても構わない。記憶部30の記憶領域は、システムエリアと、キッティングエリア(不揮発性記憶領域)と、ユーザエリア(揮発性記憶領域)とに分割されている。
(記憶部の記憶領域)
以下、記憶部30の記憶領域について図2を用いて説明する。図2は、記憶部30の記憶領域の種類を示す図である。システムエリアは、スマートフォン1をオールリセット(初期化)した場合でも、当該エリアに書き込まれたデータが消去されない不揮発性の領域である。ここで、「オールリセット」とは、スマートフォン1が、ユーザにより記憶部30に記憶させられたデータ(後述するユーザエリアに書き込まれたデータ)を全て消去することにより、スマートフォン1の状態を初回起動時の状態に戻す処理を示す。なお、「初回起動」とは、工場出荷以降に、スマートフォン1の電源が初めてONになり、OS(operation system)が起動することを意味する。システムエリアにはスマートフォン1の基幹プログラムおよびツールに係るデータ、ならびに、工場出荷時にスマートフォン1にプリインストールされたアプリおよび各種設定パラメータが記憶されている。
キッティングエリアもシステムエリアと同様、不揮発性の記憶領域である。すなわち、スマートフォン1がオールリセットされた場合でも、キッティングエリアに書き込まれたデータは消去されない。なお、キッティングエリアは、後述する複製部134によってのみデータの書き込みが可能な記憶領域であることが望ましい。一方、ユーザエリアは揮発性の記憶領域である。すなわち、スマートフォン1がオールリセットされた場合、ユーザエリアに書き込まれたデータは消去される。また、ユーザエリアはキッティングエリアと異なりデータの書き込みが制限されない記憶領域である。ユーザエリアには、スマートフォン1の初回起動後(またはオールリセット後)にユーザがインストールしたアプリケーションプログラムやユーザが設定したパラメータ、およびユーザが記憶部30に記憶させたデータファイルなどが書き込まれる。
(記憶部30に書き込まれるデータ)
次に、記憶部30に書き込まれるデータについて説明する。記憶部30には、キッティングアプリプログラム31と、キッティングサービスプログラム32と、キッティングデータ33(組込データ)とが書き込まれる。また、本実施形態において記憶部30には、キッティングアプリ(後述)の起動設定を示す情報(図示せず)が書込まれる。
キッティングアプリプログラム31は、キッティングアプリのプログラムである。ここで、「キッティングアプリ」とは、スマートフォン1が初回起動された、またはオールリセットされた場合に起動し、後述するキッティングサービスに当該サービスが行う処理を指示するアプリケーションである。また、キッティングサービスプログラム32は、キッティングアプリの指示に応じて所定の処理を行うキッティングサービスのプログラムである。キッティングアプリプログラム31およびキッティングサービスプログラム32は、スマートフォン1の工場出荷時に記憶部30のシステム領域に書き込まれる。換言すると、これらのプログラムはスマートフォン1の初回起動時にシステム領域にプリインストールされたプログラムである。
一方、キッティングデータ33は、キッティングによりスマートフォン1に組み込む設定またはプログラムを示すデータである。本実施形態において、キッティングデータ33は暗号化されたデータ(暗号化データ)としてPC2から転送される。キッティングデータ33は、ネットワーク設定の設定値(パラメータ)を含むことが望ましい。ここで、「ネットワーク設定」とは、スマートフォン1が他の装置と通話およびデータ通信の少なくともいずれかを行うことを可能にするための、パラメータの設定を意味する。なお、キッティングデータ33はネットワーク設定の設定値以外にも、キッティングによりインストールするアプリケーションプログラムや、キッティングによりユーザの使用前にスマートフォン1において行う設定(例えば画面表示に係る設定や、通常使用するアプリケーションの設定など)を示す情報を含んでいてもよい。具体的には、キッティングデータ33はWifi(登録商標)設定、ブラウザの設定、ホームページの設定、ブックマークの設定、メニュー画面などの背景画像(壁紙)の設定、メニュー画面のアイコン配置に係る設定などを含んでいてもよい。
作業用データ34は、キッティングデータ33のキッティングに係る処理に用いるデータである。本実施形態では、作業用データ34は具体的には、暗号化データのハッシュ値をさらに暗号化したデータ(暗号化ハッシュ値)と、キッティングデータ33に含まれるファイルの一覧を示すファイル一覧データとを含む。ファイル一覧データには、キッティングの際に利用するファイルのファイル名が記載されている。例えば、ファイル一覧データには、キッティングデータ33のバージョンおよびフォーマットを記載したファイル、APN情報記載ファイル、ブックマーク情報記載ファイル、壁紙情報記載ファイルなどの設定ファイル、アプリケーションプログラムのファイル、壁紙画像の実体データなどのファイル名が記載されている。
制御部10は、スマートフォン1を統括的に制御するものである。制御部10は更に詳しくは、データ書込部14と、アプリ実行部12と、サービス実行部13と、初期化実行部11とを含む。
データ書込部14は、PCなどの外部機器から通信部20を介して受信した、暗号化されたキッティングデータ(暗号化データ)および作業用データ34を、記憶部30のユーザエリアに書き込むものである。
アプリ実行部12は、記憶部30に書き込まれたキッティングアプリプログラム31を読み出して実行するものである。換言すると、アプリ実行部12はキッティングアプリを動作させるものである。アプリ実行部12は、キッティングアプリの機能を実現するために、起動無効化部121と、キッティングエリア書込判定部122とを含んでいる。
起動無効化部121は、起動設定を変更するものである。ここで、「起動設定」とは、スマートフォン1の電源がONになった場合にキッティングアプリを自動的に起動する(ON)か否か(OFF)を示す値である。起動設定の初期値(工場出荷時の設定値)はONである。起動無効化部121は、アプリ実行部12によりキッティングアプリが起動されると、起動設定をOFFに設定するとともに、当該設定を記憶部30のユーザエリアに書き込む。上述のように、ユーザエリアに書き込まれた情報はオールリセットにより消去されるので、結果的にキッティングアプリは、スマートフォン1の初回起動時と、オールリセット後のスマートフォン1の最初の起動時とに起動する。
キッティングエリア書込判定部122は、キッティングデータ33がキッティングエリアに書き込まれているか否かを判定するものである。キッティングアプリが起動すると、キッティングエリア書込判定部122はキッティングエリアにキッティングデータ33が書込まれているか否かを判定し、判定結果をサービス実行部13に通知する。なお、キッティングエリア書込判定部122はキッティングデータ33ではなく、キッティングデータ33とともに転送される作業用データ34がキッティングエリアに書き込まれているか否かを判定し、当該判定結果をサービス実行部13に送信してもよい。
サービス実行部13は、記憶部30に書き込まれたキッティングサービスプログラム32を読み出して実行するものである。換言すると、サービス実行部13はキッティングサービスを動作させるものである。サービス実行部13は、キッティングサービスの機能を実現するために、ユーザエリア監視部131と、復号部132(ハッシュ値算出部、復号部)と、データチェック部133と、複製部134と、設定部135とを含んでいる。
なお、サービス実行部13は、キッティングエリア書込判定部122の判定結果に応じて、キッティングサービスの各種機能のうち実行する機能を決定する。より具体的には、キッティングエリアにキッティングデータ33(または作業用データ34)が書込まれていない場合、サービス実行部13はユーザエリア監視部131における処理を開始する。一方、キッティングエリアにキッティングデータ33(または作業用データ34)が書込まれている場合、サービス実行部13は設定部135の処理を開始する。
ユーザエリア監視部131は、記憶部30のユーザエリアに対する暗号化データの書き込みを検知するものである。ユーザエリア監視部131は、キッティングサービスの動作中、所定の時間間隔または所定のタイミングで、ユーザエリアに暗号化データが書き込まれたか否かを確認する。ユーザエリアに暗号化データが書き込まれた場合、ユーザエリア監視部131は、復号部132に暗号化データを復号するように指示する。なお、ユーザエリア監視部131は暗号化データとともにユーザエリアに書き込まれる作業用データ34に基づいて、暗号化データがユーザエリアに存在するか否かを判定してもよい。具体的には、ユーザエリア監視部131は、作業用データ34がユーザエリアに書き込まれている場合は暗号化データがユーザエリアに書き込まれたと判定し、書き込まれていない場合には、暗号化データがユーザエリアに書き込まれていないと判定し、当該判定結果を復号部132に送信してもよい。
復号部132は、暗号化データを復号するものである。また、復号部132は、暗号化データおよび暗号化ハッシュ値を用いて、当該暗号化データを復号したデータ(復号データ)が正規のデータ(正規の供給者が生成したデータ)であるか否かを検証するものである。復号部132におけるデータの復号処理および正規データか否かの検証に係る処理については、後で詳述する。復号データが正規のデータである、すなわちキッティングデータ33である場合、復号部132は当該復号データ(キッティングデータ33)および作業用データ34をデータチェック部133に送る。
データチェック部133は、復号部132から取得したキッティングデータ33のバージョン情報およびフォーマット情報を参照することにより、キッティングデータ33がスマートフォン1の機種に対応したバージョンおよびフォーマットであるか否かを判定するものである。キッティングデータ33がスマートフォン1の機種に対応するバージョンおよびフォーマットである場合、データチェック部133は複製部134にキッティングデータ33および作業用データ34を送る。一方、キッティングデータ33がスマートフォン1の機種に対応しないバージョンまたはフォーマットである場合、データチェック部133は複製部134にキッティングデータ33および作業用データ34を送信せず処理を終了する。
なお、複製部134にキッティングデータ33および作業用データ34を送信しない場合、サービス実行部13はキッティングサービスプログラム32の実行を終了する。すなわち、キッティングサービスを終了させる。
複製部134は、データチェック部133から取得したキッティングデータ33を記憶部30のキッティング領域に複製するものである。また複製部134は、当該複製の終了後に、ユーザエリアに書き込まれている暗号化データおよび作業用データ34を削除する。複製部134はキッティングエリアへのキッティングデータ33および作業用データ34の複製と、ユーザエリアの暗号化データおよび作業用データ34の削除とが完了すると、設定部135に設定データの示す設定値の反映を指示する。
設定部135は、キッティングエリアに書き込まれたキッティングデータ33を読み出し、キッティングデータ33が示す設定(およびアプリケーション)をスマートフォン1に組込むものである。設定部135は、複製部134またはユーザエリア監視部131からの指示を受けて、上記組込みを行う。設定部135が具体的にどのような設定またはアプリケーションをスマートフォン1に組込むのかについては、後で詳述する。設定部135は、上記組込が完了した場合に、当該組込の完了を表示制御部15に通知する。
初期化実行部11は、スマートフォン1のオールリセットを実行するものである。初期化実行部11は、ユーザによりオールリセットを指示する操作が行われると、当該操作に応じて記憶部30のユーザエリアに書き込まれたデータを消去する。これにより、スマートフォン1における各種設定およびスマートフォン1に含まれるアプリケーションは、工場出荷時の状態に戻る。
表示制御部15は、キッティングデータ33の転送開始と、キッティングデータ33の組込完了とを示す表示を表示部40に行わせるものである。表示制御部15は、データ書込部14から、キッティングデータ33および作業用データのユーザエリアへの書き込みを開始した旨を通知されると、上記書込みの開始を示す画像を表示部40に表示させる。また、表示制御部15は、設定部135からキッティングデータ33の組込が完了した旨を通知されると、上記組込が完了したことを示す画像を表示部40に表示させる。もしくは、表示制御部15は、表示部40に、上記書込みの開始を示す画像の表示を停止させる。
表示部40(書込開始通知部、組込完了通知部)は、表示制御部15の制御にしたがって画像を表示するものである。
≪キッティング時の処理の流れ≫
次に、キッティング時のスマートフォン1の動作について、図3および図4を用いて説明する。図3は、スマートフォン1に対しキッティングを行う場合の、スマートフォン1における処理の流れを示すフローチャートである。なお、図6の点線で囲った処理は、キッティングサービスの機能として実行される処理を示す。
スマートフォン1が初回起動時にキッティングアプリを起動する(S100)。すなわち、アプリ実行部12はキッティングアプリプログラム31を読み出し、キッティングアプリとしての各種処理を開始する。具体的には、キッティングエリア書込判定部122は、キッティングエリアにキッティングデータ33が書き込まれているか否かを判定する。ここで、図3に示した例はスマートフォン1に対しこれからキッティングを行う例であるため、S100の時点ではキッティングデータ33はキッティングエリアに書き込まれていない。したがって、キッティングエリア書込判定部122はサービス実行部13に、キッティングエリアにキッティングデータ33が書き込まれていない旨を通知する。また、S100の時点で起動無効化部121は、キッティングアプリの起動設定をOFFとする。
サービス実行部13は、キッティングエリア書込判定部122の通知を受けてキッティングサービスを起動する(S102)。具体的には、ユーザエリア監視部131はキッティングサービスの一機能として、ユーザエリアの監視を開始する。スマートフォン1はこのように、キッティングサービスを起動した(ユーザエリアの監視を行っている)状態で、PC2との接続およびキッティングデータ33の転送が開始されるまで待機する。
このような状態で、PC2とスマートフォン1とが接続されると(S104)、スマートフォン1は通信部20を介し、PC2とのデータ通信(MTPモードでの通信)を開始する。具体的には、スマートフォン1のデータ書込部14は通信部20を介しPCからキッティングデータ33および作業データを受信する(S106)。そしてデータ書込部14は、受信したキッティングデータ33および作業用データの、ユーザエリアへの書き込みを開始する。また、データ書込部14は当該書き込みの開始時に、表示制御部15に対し、書き込み開始を通知する。そして、表示制御部15は表示部40に、キッティングを開始したことを示す画像を表示させる。例えばスマートフォン1は自端末の表示部に「設定中」と表示することにより、キッティングデータ33のユーザエリアへの書き込み(および当該書き込みに続く処理)を開始したことをユーザに通知する。
ユーザエリア監視部131は、ユーザエリアにファイル一覧データ(control.xml)が書き込まれるまで待機する(S108でNO)。ファイル一覧データが書込まれると、ユーザエリア監視部131は当該データを検知し(S108でYES)参照することにより、復号すべき(キッティング対象となる)暗号化データと、当該暗号化データに対応する暗号化ハッシュ値とを特定する。そして、ユーザエリア監視部131は、上記暗号化データおよび暗号化ハッシュ値を復号するように復号部132に指示する。なお、上記暗号化データおよび暗号化ハッシュ値がそれぞれ複数ある(暗号化データおよび暗号化ハッシュ値の組み合わせが複数ある)場合、ユーザエリア監視部131は各組み合わせについて、順次復号するよう復号部132に指示する。
復号部132はユーザエリア監視部131の上記指示を受けると、暗号化データおよび暗号化ハッシュ値を復号する(S112)。また、復号部132は復号したキッティングデータ33が正規のキッティングデータ(スマートフォン1のメーカーが作成したキッティングデータ33)であるか否かを確認する(S114)。ここで、復号したキッティングデータ33が正規のデータである場合、復号部132は復号したキッティングデータ33をデータチェック部133に送信する。一方、復号したキッティングデータ33が正規のキッティングデータでない場合、復号部132はデータチェック部133にキッティングデータ33を送信せず、次の暗号化データの復号を行う。
データチェック部133は、復号部132から復号されたキッティングデータ33を取得すると、キッティングデータ33のバージョンおよびフォーマットがスマートフォン1に対応したバージョンおよびフォーマットであるか否かを確認する(S116)。キッティングデータ33のバージョンおよびフォーマットがスマートフォン1に対応している場合(S118でYES)、データチェック部133は複製部134に対しキッティングデータ33を送信するとともに、キッティングデータ33および作業用データ34の複製を指示する。一方、キッティングデータ33のバージョンまたはフォーマットがスマートフォン1に対応していない場合(S118でNO)、データチェック部133は複製部134に上記指示を行わず、復号部132から次のキッティングデータ33が送られてくるまで待機する。
複製部134は、データチェック部133から指示を受けると、キッティングデータ33をキッティングエリアに書き込む。すなわち、キッティングデータ33をキッティングエリアに複製する(S120)。サービス実行部13は、全ての暗号化データについてS112〜S120の処理を繰り返す(S122でNO)。全ての暗号化データについてS112〜S120の処理が完了すると(S122でYES)、複製部134は設定部135にキッティングデータ33の組み込みを指示する。設定部135は複製部134の上記指示を受け、キッティングデータ33の組み込み処理(自動設定処理)を行う(S124)。なお、自動設定処理の詳細については後述する。最後に、設定部135は上記自動設定処理が完了すると、当該完了を表示制御部15に通知する。表示制御部15は上記通知を受けると、表示部40に、キッティングが完了したことを示す画像を表示させる。例えばスマートフォン1は表示部40の「設定中」という文字の表示を消す(表示させる画像を変更する)ことで、キッティングが完了したことを示す。
以上の処理により、スマートフォン1はPC2との通信において、特別なデバイスやツール等を使用せずとも(PC2にデバイスやツールを新たにインストールせずとも)、PC2に予め備わっている通信方式(MTPなど)で暗号化データおよび作業用データを取得(ユーザエリアに書き込み)することができる。さらに、スマートフォン1は当該暗号化データから復号したキッティングデータ33と作業用データとをキッティングエリアに複製することで、スマートフォン1がオールリセットされてもキッティングデータ33が消去されない状態にすることができる。
なお、スマートフォン1は本発明を実現するにあたり、図3に示すフローチャートにおける各ステップのうち、S106、S108、S120、およびS124を少なくとも行えばよい。換言すると、スマートフォン1においてS106、S108、S120、およびS124以外のステップは必須ではない。
また、図3の例ではS112〜S120の処理を、キッティングデータ33それぞれについて(1ファイルずつ)行うこととした。しかしながら、暗号化データが複数ある場合、ユーザエリア監視部131はこれら複数の暗号化データ(および対応する暗号化ハッシュ値)の復号をまとめて復号部132に指示してもよい。
≪キッティング時の記憶領域および画面表示≫
図4は、キッティングの前後における、スマートフォン1の記憶部30およびスマートフォン1の画面表示を示す図である。なお、同図にてPC2の画面上に表示されるウィンドウa1〜a5は、MTPモードで接続中のスマートフォン1の、記憶部30のユーザエリアをPC2側からファイル管理ツール(例えばWindows(登録商標)のエクスプローラ)にて閲覧した場合のウィンドウを示している。ウィンドウa1〜a4に表示されている「□kittingdata」は暗号化データをまとめたデータフォルダを示す。また、「□kitthinghash」は、暗号化ハッシュ値をまとめたデータフォルダを示す。また、「control.xml」は作業用データ34のファイル一覧データを示す。また、「A00102」〜「A00104」は、キッティングの進捗を示すファイルであり、キッティング開始時(PC2からのデータ転送開始時)にサービス実行部13にて自動生成されるファイルである。
図4の(a)は、データ書込部14が暗号化データの書き込みを完了した時点(図3のS108でYES)のスマートフォン1の表示画面と記憶部30とを示している。上述の通り、PC2から取得した暗号化データおよび作業用データは、データ書込部14によりユーザエリアに書き込まれるので、ウィンドウa1には図示の通り、kittingdataフォルダと、kittinghashフォルダおよびcontrol.xmlファイルとが表示される。また、スマートフォン1の表示部40は、データ書込部14によるデータの書き込みが開始されたときから「設定中」と文字の表示を開始する。
図4の(b)は、複製部134によりキッティングデータ33の複製が行われたとき(図3のS120)のスマートフォン1の表示画面と記憶部30とを示している。図4の(a)にてユーザエリアに書き込まれていた暗号化データは復号部132により復号されキッティングデータ33として、複製部134によって作業用データとともにキッティングエリアへと書き込まれる。この段階ではユーザエリアに書き込まれたデータは変化していないので、ウィンドウa2はウィンドウa1と同様のフォルダおよびファイルを表示する。
図4の(c)は、複製部134の処理が完了した時点でのスマートフォン1の表示画面と記憶部30とを示す。複製部134により、ユーザエリアに書き込まれた暗号化データおよび作業用データは消去されるため、ウィンドウa3にはキッティングの進捗を示すファイルのみが表示される。ここで、当該ファイルのファイル名は、キッティングの進捗に応じて変更される。すなわち、図4の(b)の時点でファイル名が「A00102」であったファイルが、複製部134の処理(ユーザエリアの暗号化データ消去)が完了したことを示す「A00103」へと変更される。
図4の(d)は、自動設定処理(図3のS124)が開始された時点でのスマートフォン1の表示画面および記憶部30を示す。自動設定処理が開始されると、設定部135は、スマートフォン1の各種設定へキッティングデータ33に含まれる設定値を反映させ始める。なお、反映される設定値は図示の通り、ユーザエリアに書き込まれる。図4の(e)は、自動設定処理が終了した後のスマートフォン1の表示画面および記憶部30を示す。自動設定処理が終了する、すなわち、上述した設定値の反映が終了すると、スマートフォン1の表示部40は、表示制御部15の指示に従い、図7の(d)の時点まで表示していた「設定中」との文字の表示を消す。また、キッティングの進捗を示すファイルのファイル名は、キッティングデータの仕向け、バージョン、キッティングが正常に終了したことが分かるファイル名「A00101」へと変更される。
(暗号化および復号化処理)
続いて、PC2から転送される暗号化データおよび暗号化ハッシュ値に施されている暗号化と、復号部132が行う復号(図3のS112)およびキッティングデータ33が正規データか否かの判定(図3のS114)について、図5を用いて説明する。図5は、キッティングデータ33の暗号化および復号の処理手順と、暗号化データのハッシュ値の比較判定とを示す図である。まず始めに、PC2から転送する暗号化データおよび暗号化ハッシュ値の作成方法について説明する。なお、図中の「a.apk」はアプリケーションファイルを示し、「aa.apk」は「a.apk」を暗号化したデータ(暗号化データ)である。
スマートフォン1のメーカー(またはメーカーにより承認を受けた企業など)は、コンピュータを用いてまずキッティングデータ33(a.apk)を暗号化する(同図の(1))。このときの暗号化の方式は特に限定されないが、暗号化の処理速度の速い共通鍵暗号化方式(AES128)が好ましい。次に、メーカー等は、暗号化データ(aa.apk)から暗号化データのハッシュ値(SHA−256等)を生成する(同図の(2))。そして、当該ハッシュ値を秘密鍵(RSA−2048)で暗号化することにより(同図の(3))、暗号化ハッシュ値を生成(算出)する。メーカー等が作成したデータのうち、暗号化データと暗号化ハッシュ値とが、メーカーからスマートフォン1の販売者などキッティングの実行者にわたる。そして、暗号化データおよび暗号化ハッシュ値は、キッティングの際にスマートフォン1に転送される。
スマートフォン1において図3に示したようにキッティングが開始されると、スマートフォン1はPC2を介して暗号化データおよび暗号化ハッシュ値を取得する。そして、図3のS(S112)において、復号部132が暗号化データおよび暗号化ハッシュ値の復号を行い、図3のS114にてハッシュ値の比較判定を行う。具体的には、復号部132は、aa.apkからaa.apkのハッシュ値(SHA−256等)を生成する(図5の(4))。また復号部132は、暗号化ハッシュ値を公開鍵で復号しaa.apkのハッシュ値(復号したハッシュ値)を特定する。そして復号部132は、両者のハッシュ値を比較する。換言すると、復号部132は、(4)の処理で生成したハッシュ値と、(5)の処理で復号したハッシュ値とが一致するか否か判定する(6)。
このように、本実施形態では、メーカーのPC等にて秘密鍵で暗号化された暗号化ハッシュ値をスマートフォン1に送信し、復号部132にて公開鍵で復号する。また、復号部132はさらに、公開鍵で復号したハッシュ(aa.apkのハッシュ値)と、スマートフォン1にて生成したハッシュ値との比較照合を行う。なお、復号部132は暗号化データ自体も共通鍵を用いてキッティングデータ33へと復号し、上述のように複製部134にキッティングエリアに格納させる。
キッティングデータ33は、PC2からスマートフォン1に転送した場合、スマートフォン1のオールリセットでも消去されない記憶領域(キッティングエリア)に書き込まれる。換言すると、キッティングデータ33に悪意のあるプログラムや設定が含まれていた場合、当該キッティングデータ33を一旦スマートフォン1に転送してしまうと、消去するのが困難になる。これに対し、上述のようにキッティングデータ33をメーカー側で暗号化しておき、スマートフォン1にて復号させることにより、キッティングデータ33が正規のデータ(メーカーなどの正規の作成者により作成されたキッティングデータ33)であることを確認することができキッティングの安全性が高まる。
また、一般的に秘密鍵から公開鍵を生成することは容易であるが、公開鍵から秘密鍵を生成することは困難である。したがって、例えばスマートフォン1のrootが奪取されるなどして復号部132が用いる鍵が流出した場合でも、秘密鍵を生成することはできない。そのため、秘密鍵を用いて生成する暗号化ハッシュ値を生成できず、よって非正規のキッティングデータ33が正規データであると改ざんされることを防ぐことができる。
≪オールリセット時の処理≫
続いて、スマートフォン1をオールリセットした場合の、当該スマートフォン1の処理動作について図6〜7を用いて説明する。図6は、スマートフォン1をオールリセットする場合の、スマートフォン1の処理の流れを示すフローチャートである。また図7は、オールリセットを行った場合の記憶部30を示す図である。なお、図6の二重線で囲った処理は、キッティングアプリの機能として実行される処理を示す。一方、図6の点線で囲った処理は、キッティングサービスの機能として実行される処理を示す。
オールリセットを指示する操作(例えば端末のメニュー画面からオールリセットを選択する操作)がスマートフォン1に対し行われると(S200)、初期化実行部11は当該操作に応じてオールリセットを実行する(S202)。図7の(a)は、オールリセットを行った際の記憶部30を示している。図示の通り、オールリセットが実行されると、記憶部30のユーザエリアに書き込まれたデータが消去される。またこのとき、ユーザエリアに書き込まれていた、キッティングアプリの起動設定の値(OFF)も消去され初期値(ON)に戻る。
そのため、オールリセットに伴ってスマートフォン1が再起動された場合、アプリ実行部12によりキッティングアプリが起動する(S204)。キッティングアプリが起動すると、キッティングエリア書込判定部122は、キッティングエリアにキッティングデータ33が書き込まれているか否かを判定する(S206)。ここで、図6に示す例では、スマートフォン1は初回起動後にオールリセットされているため、記憶部30のキッティングエリアにはキッティングデータ33が書き込まれている(図7の(a))。したがって、キッティングエリア書込判定部122はキッティングエリアにキッティングデータ33が書き込まれていると判定し(S206でYES)、当該判定結果をサービス実行部13に通知する。
サービス実行部13は、キッティングサービスを起動させると、自動設定処理を行う(S124)。図7の(b)は、自動設定処理を実行中の記憶部30を示している。図示の通り、サービス実行部13の設定部135は、キッティングエリアに書き込まれたキッティングデータ33を参照し、当該データの示す設定およびアプリケーションのインストールを行う。図7の(c)は、当該設定およびインストールが全て反映された時点の記憶部30を示す。図示の通り、記憶部30のユーザエリアには、キッティングデータ33に応じて設定値(またはアプリケーション)が反映される。自動設定処理が終了すると、サービス実行部13はキッティングサービスの起動を停止し、アプリ実行部12もキッティングアプリの起動を停止する。なお、キッティングアプリの終了前に、起動無効化部121はキッティングアプリの次回からの起動を無効化する(S210)。
一方、キッティングエリアにキッティングデータ33が書き込まれていない(S206でNO)場合、スマートフォン1に対しキッティングが行われていないと考えられる。このような場合、キッティングエリア書込判定部122は以降の処理を行わず、アプリ実行部12はキッティングアプリを終了する。なおこの場合も、起動無効化部121はキッティングアプリの終了前にキッティングアプリの次回からの起動を無効化する(S210)。
以上の処理により、スマートフォン1は、オールリセットを実行した際にも、キッティングエリアに書き込まれたキッティングデータ33から、当該キッティングデータ33が示す設定またはアプリケーションのインストールを自動的に行うことができる。すなわち、スマートフォン1はオールリセットを実行した際も、キッティングされた設定およびアプリケーションを復元することができる。
なお、スマートフォン1は本発明を実現するにあたり、図6に示すフローチャートにおける各ステップのうち、S202、S206、およびS124の処理を少なくとも行えばよい。換言すると、スマートフォン1においてS202、S206、およびS124以外のステップは必須ではない。
≪自動設定処理≫
最後に、設定部135が行う自動設定処理について、図8を用いて説明する。図8は、図3および図6に記載の自動設定処理(S124)の流れを示すフローチャートである。まず始めに、設定部135はキッティングデータ33に格納されたあらかじめ決められた名前の、設定または処理を規定したファイルを確認する(S300)。
次に、設定部135はキッティングデータ33にネットワーク設定に係るデータが含まれているか否かを確認する(S302)。ネットワーク設定に係るデータが含まれている場合(S302でYES)、設定部135はネットワーク設定のうち、任意または所定の設定値を規定する部分に、キッティングデータ33が示す設定値を反映させることによりネットワーク設定を行う(S304)。一方ネットワーク設定に係るデータが含まれていない場合(S302でNO)、設定部135は上記S304の処理を行わず、次のステップに進む。
以降、設定部135はキッティングデータ33が示す各種設定およびキッティング対象となるアプリケーションのインストールを順次行う。具体的には、設定部135はキッティングデータ33に無線LAN(例えばWifi(登録商標)など)設定の設定値が含まれているか否かを判定し(S306)、含まれている場合は当該キッティングデータ33が示す設定値を無線LAN設定に反映させることにより無線LAN設定を行う(S308)。また、設定部135はキッティングデータ33にアプリケーションプログラムのデータが含まれているか否かを判定し(S310)、含まれている場合は上記アプリケーションをスマートフォン1にインストールする(S312)。なお、設定部135はキッティングデータ33に、所定のアプリケーション(オールリセット時に組込まれている標準アプリケーションなど)のアンインストール指示を示すデータが含まれる場合、当該所定のアプリケーションをアンインストールしてもよい(S312)。
さらに、設定部135はスマートフォン1の通常使用のブラウザ(以降、標準ブラウザと称する)に係る設定を行ってもよい。例えば、設定部135はキッティングデータ33に標準ブラウザのホームページ設定に係るデータが含まれているか否かを判定し(S314)、含まれている場合はキッティングデータ33が示す設定値(ホームページのURLなど)を反映させることにより、ホームページ設定を行ってもよい(S316)。また、標準ブラウザにおけるブックマークページに係る設定値(URL等)がキッティングデータ33に含まれているか否かを判定し(S318)、含まれている場合は当該設定値を反映させることにより、ブックマーク設定を行っても良い(S320)。
さらに設定部135は、キッティングデータ33がメニュー画面のアプリケーションアイコンの配置順序および配置位置など、スマートフォン1におけるアプリケーションの配置に係る設定値を含むか否かを判定し(S322)、含む場合は当該設定値を反映させることにより、アプリケーションアイコンの初期配置を設定してもよい(S324)。
なお、スマートフォン1は本発明を実現するにあたり、図8に示すフローチャートにおける各ステップのうち、S302およびS304、もしくはS306およびS308の少なくともいずれかの処理を行えばよい。換言すると、スマートフォン1において、S302またはS306のようにキッティングデータ33から設定値を読み出す処理と、S304またはS308のように上記設定値を反映させるステップ以外のステップは必須ではない。また、設定部135が図8に示した判定処理を行う順序は特に限定されない。さらに、設定部135が図8に示した、キッティングデータ33に基づく設定(またはアプリケーションのインストール)処理の順序も特に限定されない。
〔実施形態2〕
なお、キッティングアプリプログラム31およびキッティングサービスプログラム32は工場出荷時にスマートフォン1にプリインストールされる代わりに、PC2からキッティングデータ33および作業用データ34とともに転送されてもよい。この場合、キッティングアプリプログラム31の実現するキッティングアプリは、起動時にキッティングアプリプログラム31およびキッティングサービスプログラム32を複製し、キッティングエリアにコピーする機能を有する。また、キッティングアプリプログラム31の実現するキッティングアプリは、キッティングエリアへのデータ書込みを許可する旨を示す、特別なデジタル署名が施されている。データ書込部14は取得したキッティングアプリプログラム31およびキッティングサービスプログラム32をユーザエリアに書き込む。アプリ実行部12はキッティングアプリプログラム31がユーザエリアに書き込まれるとキッティングアプリを起動し、当該アプリの機能として、キッティングアプリプログラム31およびキッティングサービスプログラム32をキッティングエリアに書込む。
これにより、工場出荷時にスマートフォン1にキッティングアプリプログラム31およびキッティングサービスプログラム32をプリインストールしていない場合でも、スマートフォン1はPC2からダウンロードしたキッティングアプリプログラム31およびキッティングサービスプログラム32を用いて、実施形態1にて説明したキッティング時の処理や、オールリセット時の処理を行うことができる。つまり、スマートフォン1は工場出荷時に、キッティングを行うためのデータをプリインストールしていない場合でも、上記キッティングおよびオールリセット時の処理を行うことができる。
〔実施形態3〕
なお、上記各実施形態で説明したキッティング方法は、Simフリーのスマートフォンにおいて特に有効である。以下、Simフリーのスマートフォンに本発明を適用した場合の利点について、Simロックされたスマートフォンとその特性を比較しながら説明する。Simロックされた(大手通信事業者向けモデルの)スマートフォンでは、工場出荷時に記憶部のシステムエリアに対し、スマートフォンの標準アプリケーションと、通信事業者固有の設定およびアプリケーション(例えば、Simカードとスマートフォンとの紐付けを行う機能など)がプリインストールされる。
また、Simロックされたスマートフォンを販売する場合、販売者はスマートフォンと、当該スマートフォンの通信契約の内容(通信事業者およびスマートフォンの利用者の情報)が記憶されたSimカードとをセットで販売する。そのため、ユーザは購入したスマートフォンに特段の設定を施さずとも、通信事業者固有の設定でスマートフォンの通信を使用することができる。そして、上述のように事業者固有の設定は工場出荷時にシステムエリアに書き込まれているので、スマートフォンを初期化した場合でも上記設定は復元される。
一方、通信事業者に依存しない(Simフリーの)スマートフォンの場合、当該スマートフォンを販売するMVNO(Mobile Virtual Network Operator:仮想移動体通信事業者)などは、Simカードとスマートフォンとを別個に販売する場合がある。もしくは、ユーザがSimカードをすでに所持しており、Simフリーの端末のみを購入する場合もある。このような場合、工場出荷時に通信事業者固有の設定およびアプリケーションをプリインストールすることは困難である。ゆえに、Simフリーのスマートフォンでは、工場出荷時に標準アプリケーションはプリインストールされるが、通信事業者固有のネットワーク設定などはプリインストールされない。そのため、一部のMVNOなどは、スマートフォンや通信事業者の仕様に合わせた設定のキッティングを行っている。しかしながら、従来のキッティング方法ではキッティングを行っても、スマートフォンのオールリセットにより設定が工場出荷時に戻ってしまうという問題があった。
これに対し、上記各実施形態に記載のスマートフォン1およびキッティング方法では、スマートフォン1がオールリセットされても復元される設定を、PC2で特別な設定や処理を行わずにキッティングすることができる。したがって、スマートフォン1がSimフリーのスマートフォンである場合でも、MVNOなどはスマートフォン1を購入したユーザのSimカードとスマートフォン1との紐付けや、スマートフォン1の通信に利用する通信事業者の固有設定などをネットワーク設定として、上記各実施形態にて説明した方法でキッティングすることにより、オールリセットされても復元されるようにネットワーク設定をキッティングすることができる。
〔ソフトウェアによる実現例〕
スマートフォン1の制御ブロック(特に制御部10)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、スマートフォン1は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の態様1に係る情報処理端末(スマートフォン1)は、外部機器(PC2)と通信する情報処理端末であって、自端末に組み込む設定またはプログラムを示すデータである組込データ(キッティングデータ33)が、自端末の初期化(オールリセット)後に書き込まれたデータが消去される記憶領域である揮発性記憶領域(ユーザエリア)に書き込まれた場合、上記初期化の後も書き込まれたデータが消去されない記憶領域である不揮発性記憶領域(キッティングエリア)に当該組込データを複製する複製部(複製部134)と、上記複製部が上記組込データを上記不揮発性記憶領域に複製した場合、または上記複製部が上記複製を行った後に上記初期化が実行された場合に、上記組込データを自端末に組込む設定部(設定部135)と、を備える。
上記構成によると、情報処理端末は、外部機器から取得した組込データを揮発性領域に書き込み、その後複製部により不揮発性領域へ複製する。これにより複製部は、情報処理端末が初期化されてもデータが消去されない記憶領域に、組込データを書き込むことができる。そして、設定部は、不揮発性記憶領域に書き込まれた組込データを情報処理端末に組込むことができる。また設定部は、情報処理端末の初期化の際にも同様に、不揮発性記憶領域に書き込まれた組込データを情報処理端末に組込むことができる。
これにより、情報処理端末に対し、初期化しても復元可能な設定をキッティングにより組み込むことができる。さらに、外部機器は、組込データの転送に係る特別なツールやデバイスを備えていなくても、当該記憶領域へのデータ書込み、すなわち外部機器からのデータ転送が可能である。
本発明の態様2に係る情報処理端末は、上記態様1において、上記組込データの代わりに上記組込データを暗号化した暗号化データと、上記暗号化データのハッシュ値をさらに暗号化した暗号化ハッシュ値とを上記外部機器から取得して上記揮発性記憶領域に書き込むデータ書込部(データ書込部14)と、上記暗号化データが上記揮発性記憶領域に書き込まれた場合、上記暗号化データのハッシュ値を算出するハッシュ値算出部(復号部132)と、上記暗号化データが上記揮発性記憶領域に書き込まれた場合、上記暗号化データを組込データに復号するとともに、上記暗号化ハッシュ値を上記暗号化データのハッシュ値に復号する復号部(復号部132)と、を備え、上記複製部は、上記ハッシュ値算出部が算出したハッシュ値と、上記復号部が復号したハッシュ値とが一致する場合に、上記組込データを複製し上記不揮発性記憶領域に書き込んでもよい。
組込データは、情報処理端末のオールリセットでもデータが消去されない不揮発性記憶領域に書き込まれる。換言すると、組込データに悪意のあるプログラムや設定が含まれていた場合、当該組込データを一旦情報処理端末に転送してしまうと、消去するのが困難になる虞がある。一方、上記構成によると、組込データは情報処理端末に送信する前に予め暗号化されており、情報処理端末の復号部は暗号化データおよび暗号化ハッシュ値を復号する。そして複製部は、暗号化データのハッシュ値と、暗号化ハッシュ値を復号したものとが一致する場合、組込データを複製する。したがって、複製部は、組込データが正規のデータ(メーカーなどの正規の作成者により作成されたデータ)である場合に組込データを複製することができる。
なお、本発明の情報処理端末は、上記態様2において、上記暗号化ハッシュ値は秘密鍵を用いて暗号化されたものであり、上記復号部は上記暗号化ハッシュ値を、公開鍵を用いて復号してもよい。
上記構成によると、復号部は、秘密鍵を用いて予め暗号化された組込データを、公開鍵を用いて復号する。
一般的に公開鍵から秘密鍵を生成することは困難である。したがって、例えば情報処理端末が保持する鍵が流出しても、流出した公開鍵から秘密鍵を生成することは困難である。したがって、上記構成によれば、暗号が第3者に解読されることを防ぐことができ、よって組込データの改ざんを防ぐことができる。
本発明の態様3に係る情報処理端末は、上記態様1から2のいずれか一態様において、上記揮発性記憶領域への上記組込データの書き込みが開始されたことを通知する書込開始通知部(表示部40)を備えていてもよい。
上記構成によると、書込開始通知部は、組込データを情報処理端末に送信した外部機器のユーザ、または情報処理端末のユーザに対し、情報処理端末における組込データの書き込み開始を示すことができる。
本発明の態様4に係る情報処理端末は、上記態様1から3のいずれか一態様において、上記設定部が上記組込データの組込みを完了したことを通知する組込完了通知部(表示部40)を備えていてもよい。
上記構成によると、組込完了通知部は、組込データを情報処理端末に送信した外部機器のユーザ、または情報処理端末のユーザに対し、情報処理端末における組込データの組込みが完了したことを示すことができる。
本発明の各態様に係る情報処理端末は、コンピュータによって実現してもよく、この場合には、コンピュータを上記情報処理端末が備える各部(ソフトウェア要素)として動作させることにより上記情報処理端末をコンピュータにて実現させる情報処理端末の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。