説明

情報処理装置、プログラム実行方法及びコンピュータプログラム

【課題】緻密なセキュリティを要するアプリケーションプログラムの実装を容易に行えることが可能な情報処理装置を提供する。
【解決手段】耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行部を備え、前記プログラム実行部で実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行部は、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、情報処理装置が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、プログラム実行方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
近年、IC(integrated circuit)を備え、非接触で通信を行える非接触アンテナモジュールを備えるカードが普及している。そのようなカードは、例えば、非接触ICカードなどと称され、非接触で他の装置と通信を行うことが可能とされている。非接触ICカードを用いた非接触通信は、例えば、交通乗車券、電子マネー、IDカード、入退室管理などに用いられ、その用途は広がりつつある。
【0003】
ICチップ上でプログラムの実行が可能な非接触ICカードには、それぞれの用途に適したOS(operating system)を備える構成となっている。かかる非接触ICカードに組み込まれているOSとして、例えばMULTOS(Mel言語)やJava OS(Java(商標)言語)等がある。これらのOSは、仮想マシン(VM:Virtual Machine)をROM上に格納し、実行コードを不揮発性メモリに書き込むことで実現される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2001−184472号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、これらのICカードに組み込まれるOSは、ファイルシステムに操作可能なAPIを呼ぶプログラムをダウンロードして定義しているものであり、自らはコンパイルやデバッグを行う機能を有しておらず、また、OSの利用中に動的に機能の再定義は行えない。
【0006】
MULTOSやJava OSは、セキュリティファイアーウォールとしてコンテナを定義し、そのコンテナの中に各サービス用のプログラムをダウンロードでき、そのコンテナを認証することでプログラムの実行が可能になるが、そのプログラム中の個々の変数や関数の保護は、そのプログラムの書き方に依存してしまう。
【0007】
そして、ICカード用のアプリケーションのプログラムを開発する際には、複数の開発ツールが用いられるため、そのツールの理解が必要となり、そのセットアップなどに時間がかかっていた。また、ICカード用のアプリケーションのプログラムの開発プロセスにおいては、上記開発ツールを用いてコードの作成及びデバッグを行い、最終的にICカードにプログラムをダウンロードして、ICカード上で最終デバッグを行うことが必須である。従って、開発プロセスが複雑となり、かつ、ICカード上での最終デバッグで手戻りが発生すると、プログラムの修正に時間がかかるという問題が生じていた。
【0008】
また、アプリケーションプログラムをICカードにダウンロードした後は、セキュリティ機能を利用するため、暗号化したバイナリデータをやり取りする必要が生じ、専用の解釈ツールを用いることが必須となっていた。
【0009】
ICカードへアプリケーションプログラムを供給する方法として、例えば特許文献1が開示されているが、特許文献1に開示されている技術は、汎用性を増してアプリケーションプログラム(ゲーム)を入れ替え可能にする点は記載されているが、セキュリティ機能の利用については言及が無い。
【0010】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、緻密なセキュリティを要するアプリケーションプログラムの開発及び実装を容易に行えることが可能な、新規かつ改良された情報処理装置、プログラム実行方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明のある観点によれば、耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行部を備え、前記プログラム実行部で実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行部は、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、情報処理装置が提供される。
【0012】
前記プログラム実行部で実行されるコンピュータプログラムには、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行部は、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能としてもよい。
【0013】
前記プログラム実行部は、前記コンピュータプログラムに定義された関数にセキュリティ属性が付加されている場合は、前記関数に対して指定された前記認証鍵で認証することにより、該関数の内部で利用されている他の関数や変数のセキュリティ属性設定に基づく認証を経ずに該関数を実行できるようにしてもよい。
【0014】
前記セキュリティ属性には、前記変数または関数が規定されるシンボルへのアクセス属性、認証鍵バージョン及び認証鍵テーブルへのポインタが設定されるようにしてもよい。
【0015】
前記プログラム実行部で実行される前記コンピュータプログラムで定義された関数及び変数はシステム鍵で認証することにより定義の変更が可能であるようにしてもよい。
【0016】
前記関数を定義する関数式をシンボルに規定する場合は、該シンボル及び該関数内で利用する関数、変数の全ての認証鍵で認証されていることを要していてもよい。
【0017】
外部装置との間で伝送されるバイナリデータを所定の形式にエンコードするバイナリデータ変換部を備えていてもよい。
【0018】
前記バイナリデータ変換部は、前記認証処理のために伝送されるバイナリデータを変換した後のデータの先頭に前記所定の形式で用いられない符号を付加するようにしてもよい。
【0019】
不揮発性を有し、前記プログラム実行部で実行されるプログラムで使用される変数定義及び関数定義を保存する記憶部を備えていてもよい。
【0020】
前記プログラム実行部が実行するコンピュータプログラムは任意のタイミングで変数及び関数単位でのセキュリティ属性及び認証鍵の設定が可能であってもよい。
【0021】
前記セキュリティ属性の設定は、変数または関数を定義するコマンドにおいてシンボル定義特殊コマンドで設定されていてもよい。
【0022】
前記セキュリティ属性の設定は、変数または関数を定義するコマンドで変数または関数の定義を行った後にシンボル定義特殊コマンドで設定されていてもよい。
【0023】
前記セキュリティ属性の設定により、関数を定義する情報の読み出し、変更がさらに制限されるようにしてもよい。
【0024】
少なくとも、前記プログラム実行部が耐タンパ性能を有していてもよい。
【0025】
前記情報処理装置はICチップを内蔵したICカードであってもよい。
【0026】
また、上記課題を解決するために、本発明の別の観点によれば、耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップを含み、前記プログラム実行ステップで実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行ステップは、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、プログラム実行方法が提供される。
【0027】
前記プログラム実行ステップで実行されるコンピュータプログラムには、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行ステップは、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能としてもよい。
【0028】
また、上記課題を解決するために、本発明の別の観点によれば、耐タンパ性能を有する環境において、コンピュータに、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップを実行させ、前記プログラム実行ステップで実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行ステップは、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、コンピュータプログラムが提供される。
【0029】
前記プログラム実行ステップで実行されるコンピュータプログラムには、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行ステップは、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能としてもよい。
【発明の効果】
【0030】
以上説明したように本発明によれば、緻密なセキュリティを要するアプリケーションプログラムの開発及び実装を容易に行え、また、ネットワークを介したクライアントPCより新たなアプリケーションを安全に組み込むことが可能な、新規かつ改良された情報処理装置、プログラム実行方法及びコンピュータプログラムを提供することにある。
【図面の簡単な説明】
【0031】
【図1】本発明の一実施形態にかかる情報処理システム1の構成例を示す説明図である。
【図2】本発明の一実施形態にかかる情報処理装置100のハードウェア構成を示す説明図である。
【図3】リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。
【図4】リスト構造を構成するためのコンスセル410の構成例を示す説明図である。
【図5】シンボル400の名前領域401に格納される名前を格納するための名前格納テーブル420の構造例を示す説明図である。
【図6】認証鍵を格納する認証鍵テーブル430の構造例を示す説明図である。
【図7】図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとの対応関係を示す説明図である。
【図8】CPU120が実行するリスト処理モジュールの起動時の処理について示す流れ図である。
【図9】CPU120が実行するリスト処理モジュールのモード遷移について示す説明図である。
【図10】シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて示す流れ図である。
【図11】シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて示す流れ図である。
【図12】セキュリティ設定された変数のリスト構造例を示す説明図である。
【図13】セキュリティ設定された関数のリスト構造例を示す説明図である。
【図14】情報処理装置の変形例である情報処理装置1100のハードウェア構成を示す説明図である。
【図15】従来のアプリケーション開発モデルについて示す説明図である。
【図16】本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルについて示す説明図である。
【図17】本発明の一実施形態に係る開発装置300のハードウェア構成を説明するためのブロック図である。
【発明を実施するための形態】
【0032】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0033】
なお、説明は以下の順序で行うものとする。
<1.本発明の一実施形態>
[1−1.システム構成例]
[1−2.ハードウェア構成例]
[1−3.プログラム構造例]
[1−4.情報処理装置の変形例]
[1−5.アプリケーション開発モデルの比較]
[1−6.開発装置のハードウェア構成]
<2.まとめ>
【0034】
<1.本発明の一実施形態>
[1−1.システム構成例]
まず、本発明の一実施形態にかかるシステム構成例について説明する。図1は、本発明の一実施形態にかかる情報処理システム1の構成例を示す説明図である。以下、図1を用いて本発明の一実施形態にかかる情報処理システム1の構成例について説明する。
【0035】
図1に示したように、本発明の一実施形態にかかる情報処理システム1は、情報処理装置100と、リーダライタ(R/W)200と、開発装置300と、を含んで構成される。
【0036】
情報処理装置100は、内部に耐タンパ性を有し、近接非接触通信機能を備えるICチップが内蔵されている。情報処理装置100は、例えば、かかるICチップが内蔵されたICカードや、携帯電話、携帯端末等の形態をとることができる。そして、かかるICチップは、リーダライタ200との間で近接非接触通信を実行することで、リーダライタ200との間で情報の授受を実行することができる。
【0037】
リーダライタ200は、主に駅の自動改札機やキャッシュレジスター等に接続して設けられるものであり、ICチップが内蔵された情報処理装置100との間で近接非接触通信を実行するものである。リーダライタ200が、情報処理装置100との間で近接非接触通信を実行することで、例えばリーダライタ200と接続されている自動改札機がゲートを開いたり、リーダライタ200と接続されているキャッシュレジスターが商品代金の支払い処理を行ったりすることができる。
【0038】
開発装置300は、情報処理装置100に内蔵されるICチップに組み込まれるコンピュータプログラムの開発に用いられる装置である。ICチップに組み込むためのコンピュータプログラムを作成するユーザは、開発装置300を用いて、ICチップに組み込んで実行させるためのコンピュータプログラムのソースコードの作成を行うことができる。開発装置300で作成されたコンピュータプログラムのソースコードは、開発装置300に接続したリーダライタ200を介して情報処理装置100に転送し、情報処理装置100に内蔵されたICチップに組み込まれる。情報処理装置100は、ICチップに組み込まれたコンピュータプログラムのソースコードを解釈して、当該コンピュータプログラムを実行することができる。
【0039】
本実施形態にかかる情報処理装置100に内蔵されるICチップは、ソースコードで定義されている変数及び関数にそれぞれ独立してセキュリティが設定されるプログラムを実行することが出来るように構成される。これにより、本実施形態にかかる情報処理装置100に内蔵されるICチップは、組み込まれているプログラムの実行権限のないアプリケーション等による当該プログラムの実行を防ぐことができるので、プログラムのセキュアな実行が可能になる。
【0040】
なお、図1では、開発装置300で作成されたコンピュータプログラムのソースコードは、開発装置300に接続したリーダライタ200を介して情報処理装置100に転送する構成が図示されているが、本発明においては、開発装置から情報処理装置にコンピュータプログラムを組み込むには必ずしもリーダライタを介する必要は無く、開発装置から直接情報処理装置にコンピュータプログラムを転送してもよい。
【0041】
以上、図1を用いて本発明の一実施形態にかかる情報処理システム1の構成例について説明した。次に、本発明の一実施形態にかかる情報処理装置100のハードウェア構成例について説明する。
【0042】
[1−2.ハードウェア構成例]
図2は、本発明の一実施形態にかかる情報処理装置100のハードウェア構成を示す説明図である。以下、図2を用いて、本発明の一実施形態にかかる情報処理装置100のハードウェア構成について説明する。
【0043】
図2に示した情報処理装置100は、例えばICカードに内蔵されるチップのように全体が耐タンパ性を有するハードウェア構造となっているものである。図1に示したように、本発明の一実施形態にかかる情報処理装置100は、NVM(不揮発性メモリ、Non Volatile Memory)110と、CPU(Central Processing Unit)120と、ROM(Read Only Memory)130と、RAM(Random Access Memory)140と、BASE64モジュール150と、暗号処理モジュール160と、乱数発生モジュール170と、シリアルI/Oインタフェース180と、を含んで構成される。
【0044】
NVM110は、情報処理装置100の初期化時に、ROM130に予め書きこまれている組み込み関数が、シンボルとして記録されるものである。また、NVM110は、ユーザが定義した変数(ユーザ定義変数)や関数(ユーザ定義関数)も記憶されるものである。NVM110は、電源がオフになっても記憶された情報を保持しておくことができるので、情報処理装置100の電源が再投入されても再初期化は行われず、登録されているシンボルがそのまま保持される。
【0045】
CPU120は、情報処理装置100の動作を制御するものであり、ROM130に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。CPU120は、オペレーティングシステムの実行に際しては、RAM140をワークエリアとして用いることができる。ここで、ROM130に記録されているオペレーティングシステムソフトとしては、例えば、手続き型プログラミング言語を解釈して実行できるものであり、そのようなプログラミング言語として、例えばLISPやRuby、Python等がある。
【0046】
本実施形態にかかる情報処理装置100のROM130は、インタプリタとして上記手続き型プログラミング言語の基本機能に加え、セキュリティ機能が付加されたものが格納される。これにより、情報処理装置100にアプリケーションプログラムを組み込む際に、事前にコンパイルする必要がなく、またセキュリティ機能が付加されているので、アプリケーションが利用される情報処理装置100そのものでデバッグが可能となる。従って、開発ステップの短縮に繋がって、短期間でのアプリケーションプログラムの開発が可能となる。
【0047】
BASE64モジュール150は、情報処理装置100の外部に設けられた装置(以下単に「外部装置」とも称する)との通信のために、バイナリデータに対してBASE64変換を施したり、またその逆の変換を施したりするモジュールである。本実施形態にかかる情報処理装置100は、外部装置との通信は、シリアルI/Oインタフェース180を介したシリアルデータ通信を実行する。本実施形態では、情報処理装置100の外部からリスト処理モジュールと通信する場合、入力されるデータは全てASCII文字列で行えるよう、バイナリデータはBASE64モジュール150でBASE64コードに変換される。
【0048】
情報処理装置100と外部装置(例えばリーダライタ200)とで相互認証及びその後の通信を行う場合、やり取りされるバイナリ形式の暗号化データはBASE64モジュール150でBASE64変換されるが、その先頭にはBASE64では用いない符号(例えば‘:’や’〜’等)を付けることで、一般のリスト処理式とは識別してやり取りするようにしてもよい。
【0049】
シリアルI/Oインタフェース180を介したシリアルデータ通信は、キャリッジリターン符号が入力の区切りとなる。情報処理装置100は、外部装置との通信に用いるコードとしてASCIIコードを用いて外部装置との間で情報の授受を実行する。しかし、情報処理装置100は、暗号化データなどのバイナリデータのやり取りに際しては、バイナリデータをBASE64モジュール150でBASE64変換する。そして、BASE64モジュール150は、バイナリデータをBASE64変換する際には、上述したように、先頭にBASE64では使用しない文字(符号)を識別文字として付加することができる。BASE64では使用しない文字(符号)を識別文字として先頭に付加することにより、CPU120でプログラムを実行する際に、BASE64モジュール150で変換されたデータがバイナリデータであることをCPU120が認識することができる。
【0050】
また、CPU120で実行されるプログラムにロックを掛ける際に、そのロックに用いる鍵の設定等のシンボル式とバイナリデータとが混在するような場合には、シンボル式とバイナリデータとで異なる文字(符号)を割り当てることで、CPU120でプログラムを実行する際にCPU120がそのシンボル式とバイナリデータとの違いを認識することができる。
【0051】
暗号処理モジュール160は、入力されてくるデータに対して、指定された鍵を用いて暗号化処理を施して出力したり、入力されてくる暗号化データに対して、指定された鍵を用いて復号処理を施して出力したりするものである。
【0052】
乱数発生モジュール170は、外部からの(例えばCPU120からの)乱数発生指示に基づいて、適当な乱数を発生させてその乱数を出力するものである。乱数発生モジュール170が発生する乱数は、例えば、情報処理装置100から認証したい相手(例えばリーダライタ200)に送信して暗号文を生成してもらい、相手(例えばリーダライタ200)から返信された暗号文を復号した結果が情報処理装置100から送った乱数と一致するか否かを判定することで相手の鍵が正しいか否かを判断するために用いられる。
【0053】
シリアルI/Oインタフェース180は、外部装置からのシリアルデータをパケットとして認識して、適切なデータを抽出したり、また、情報処理装置100の内部から外部装置へ出力されるデータをパケットデータとして構成し、シリアルデータとして出力したりする機能を有するものである。
【0054】
図2に示すような構成を有する情報処理装置100が、全体として耐タンパ性を有することにより、機器や回路の中身が外部からは分析しにくくなる。そして、CPU120が実行するコンピュータプログラムには、変数・関数それぞれに対して独立してセキュリティが設定される。
【0055】
なお、図2には図示しないが、情報処理装置100は、リーダライタ200との間で近接非接触通信を実行するためのアンテナや変調・復調回路等が備えられる。
【0056】
以上、図2を用いて、本発明の一実施形態にかかる情報処理装置100のハードウェア構成について説明した。次に、図2に示した情報処理装置100で実行される、コンピュータプログラムの構造について説明する。
【0057】
[1−3.プログラム構造例]
図3〜図6は、本発明の一実施形態にかかる情報処理装置100で実行される、コンピュータプログラムの構造例を示す説明図である。以下、図3〜図6を用いて、本発明の一実施形態にかかる情報処理装置100で実行される、コンピュータプログラムの構造例について説明する。
【0058】
なお、以下においては、情報処理装置100で実行されるコンピュータプログラムの言語としてLISPを前提として説明するが、本発明においては、プログラミング言語として使用可能である言語はかかる例に限定されず、拡張機能または標準機能において、変数毎及び関数毎にそれぞれ独立してセキュリティが設定できるように構成することが可能な、手続き型のプログラミング言語であればいかなるものであっても良い。
【0059】
CPU120は、コンピュータプログラムの実行に際しては、開発装置300で開発され、情報処理装置100に組み込まれたプログラムのソースコードを解釈して実行するためのリスト処理モジュールをロードする。図3は、リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。
【0060】
図3に示したように、リスト処理モジュールが定義できるシンボル400は、名前領域401と、変数定義領域402と、関数定義領域403と、セキュリティ属性領域404と、で構成される。
【0061】
名前領域401は、印刷可能な文字デーブルを指し示すものである。名前領域401には、そのシンボルが変数を規定するものであればその変数名が格納され、関数を規定するものであればその関数名が格納されるものである。図3では、名前領域401を「pname」で指し示している。
【0062】
変数定義領域402は、そのシンボルが単純変数を規定するものであればその値を格納し、リスト変数を規定するものであればそのリストを指し示す値が格納されるものである。図3では、変数定義領域402を「value」で指し示している。
【0063】
関数定義領域403は、そのシンボルが関数を規定するものであれば、その関数実態が格納されるものである。図3では、関数定義領域403を「function」で指し示している。
【0064】
セキュリティ属性領域404は、そのシンボルについてのセキュリティ属性に関する情報が格納されるものである。セキュリティ属性としては、例えば変数の読み出し属性、変数の変更属性、関数の実行属性がある。セキュリティ属性領域404には、そのシンボルへのアクセス権限を示すアクセスフラグと、そのシンボルへアクセスするための認証鍵を格納するテーブルを指し示す値とが格納される。
【0065】
図3に示したシンボル400に加えて、リスト構造を構成するためのコンスセルと呼ぶセルが連続的に定義されている。図4は、リスト構造を構成するためのコンスセル410の構成例を示す説明図である。コンスセル410は、図4に示したように、CARスロット411およびCDRスロット412と呼ばれる2つのポインタからなるオブジェクトである。図4では、CARスロット411としてcar0〜car9、CDRスロット412としてcdr0〜cdr9を示している。もちろん、それぞれのスロットの数はかかる例に限定されないことは言うまでもない。
【0066】
シンボル400の名前領域401に格納される名前を格納するためのテーブルも設けられる。図5はシンボル400の名前領域401に格納される名前を格納するための名前格納テーブル420の構造例を示す説明図である。図5に示した名前格納テーブル420には、「eval」、「setq」、「cons」、「defun」、「osaifu」といった名称が格納されており、その実態であるシンボルと1対1に対応している。符号421は名称「eval」が格納される領域であり、符号422は名称「setq」が格納される領域であり、符号423は名称「cons」が格納される領域であり、符号424は名称「defun」が格納される領域であり、符号425は名称「osaifu」が格納される領域である。名前格納テーブル420の外部からシンボル名が名前格納テーブル420に対して入力されると、名前格納テーブル420に格納されているその入力されたシンボル名に対するシンボルが指し示されて評価される。なお、「osaifu」は、情報処理装置100に電子マネー機能を組み込む際にその電子マネーの残高を表す変数であるとする。
【0067】
そして、シンボル400のセキュリティ属性領域404に格納される、認証鍵を格納するテーブルを指し示す値に対応するテーブルも設けられる。図6は、認証鍵を格納する認証鍵テーブル430の構造例を示す説明図である。図6は、認証鍵テーブル430において、認証鍵がバージョン番号(kv1〜kv5)で管理されている状態を示すものである。符号431は鍵「key1」が格納される領域であり、符号432は鍵「key2」が格納される領域であり、符号433は鍵「key3」が格納される領域であり、符号434は鍵「key4」が格納される領域であり、符号435は鍵「key5」が格納される領域である。
【0068】
図3から図6に示したこれらのテーブルは、開発装置300で開発されたコンピュータプログラムの、情報処理装置100での実行に先立って、NVM110に生成されて記憶される。これにより、情報処理装置100の電源がオフになっても、これらのテーブルの内容は保持されたままの状態を維持することができる。
【0069】
図7は、図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとの対応関係を示す説明図である。上述したように、シンボルは、印刷可能な名前のテーブルを指し示す領域と、値若しくは値のリストを指し示す領域と、関数属性と、セキュリティ属性とを持つ。関数属性は、関数のタイプ及びその関数の実態を指し示すポインタを持ち、セキュリティ属性は、セキュリティフラグと、鍵バージョンと、鍵を指し示すポインタとを持つ。なお、図7では、図6に示した認証鍵テーブル430において、符号431で示した鍵「key1」及び符号432で示した鍵「key2」が使用される様子が図示されている。
【0070】
図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとは、いずれも図2に示した情報処理装置100のような、耐タンパ機能を持ったハードウェアで守られることで、値の不正な取得や改ざんから守られることになる。
【0071】
このように、リスト処理モジュールの一般的構造はシンボルと呼ばれ、数値若しくは数値を保持したリストへのポインタと、関数定義であれば関数へのポインタと、印刷可能な文字列を格納したテーブルを指し示すポインタと、で構成されている
【0072】
そして本実施形態では、これに加えて、セキュリティ属性と2種類の暗号化鍵情報を保持するテーブルへのポインタをシンボルに付加している。一方の鍵へのポインタはマスター鍵を指し、もう一方の鍵へのポインタは、当該シンボルのアクセス鍵(認証鍵)を指している。マスター鍵は当該シンボルのセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵を指している。シンボルに保持した情報の内容評価、内容変更、関数実行においてそのシンボルに設定されたセキュリティフラグが立っている場合は、シンボルに付加された一方の鍵で認証してあることがそのシンボル利用の条件となる。もう一方の鍵は、当該シンボルの鍵を変更する場合に、その権限を確認する権限認証鍵を示している。アクセス情報の変更には、その権限認証鍵で認証された状態でなければならない。
【0073】
また、図4に示したような、コンスセルと呼ばれる、シンボルとシンボルの関係を表す2組のポインタがあり。それぞれのポインタは、シンボル又は他のシンボルを指すコンスセルを指し示す構造となっている。
【0074】
組み込み関数はROM130に書き込まれており、情報処理装置100の最初の電源投入で、ROM130に書き込まれている組み込み関数を、NVM110に作成したシンボルに定義する。その後の電源投入では、既に登録済みのシンボルは初期化されない。
【0075】
上記の構成は、ユーザにより新たな関数が登録される場合においても、同様に機能する構造となっている。
【0076】
CPU120が実行するリスト処理モジュールは、シンボルを自由に登録し、そのシンボルに数値やリスト、関数を自由に登録できる構成となっている。そして、登録されるシンボルにセキュリティ機能を生かすために、そのシンボルに暗号鍵とアクセスフラグを登録しておく。CPU120が実行するリスト処理モジュールには、システム鍵と呼ぶ暗号化鍵が最初に設定されている。そのシステム鍵で相互認証されたモードになっている状態(以下の説明のモード2に該当する状態)でのみ、新たに登録されたシンボルは、そのシンボル独自の鍵とアクセスフラグが設定されることができる。また、CPU120が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。
【0077】
CPU120が実行するリスト処理モジュールは、関数シンボルの登録に際しては、その関数で利用するシンボルの全ての鍵で認証済みであることが登録条件となっている。そしてその後、リスト処理モジュールは、その登録された関数を利用する場合は、単にその関数実行鍵で認証されていれば良い構造になっている。
【0078】
次に、CPU120が実行するリスト処理モジュールの起動時の処理、及びリスト処理モジュールのモード遷移について説明する。図8は、CPU120が実行するリスト処理モジュールの起動時の処理について示す流れ図である。また図9は、CPU120が実行するリスト処理モジュールのモード遷移について示す説明図である。
【0079】
まず、CPU120がリスト処理モジュールを起動する時の処理について図8を参照しながら説明する。まず情報処理装置100の電源がオンされると、リスト処理モジュールがCPU120にロードされる。そしてCPU120で実行されるリスト処理モジュールは、まず初期完了フラグがオンになっているかどうかを判断する(ステップS101)。
【0080】
上記ステップS101の判断の結果、初期完了フラグがオンになっていなかった場合には、リスト処理モジュールは、ROM130からNVM110へ関数及び変数を組み込み、シンボルを定義する。シンボルの定義が完了すると、リスト処理モジュールは初期化フラグをオンにする(ステップS102)。
【0081】
上記ステップS102の処理が完了すると、または、上記ステップS101の判断の結果、初期完了フラグがオンになっていた場合には、続いてリスト処理モジュールは、情報処理装置100の外部から入力される文字の読み込みと、シンボル生成と、リスト構造への翻訳とを実行する(ステップS103)。
【0082】
上記ステップS103の処理が完了すると、続いてリスト処理モジュールは、リスト式を評価し、その結果をリスト構造とする(ステップS104)。そしてリスト処理モジュールは、リスト式の評価結果がエラーでなく、シンボル定義ならば、そのシンボル定義をNVM110に書き込む(ステップS105)。そしてリスト処理モジュールは、リスト構造結果のリスト式化と出力を行う(ステップS106)。
【0083】
上記ステップS106で、リスト構造結果のリスト式化と出力を行うと、リスト処理モジュールは、上記ステップS103に戻って、情報処理装置100の外部から入力される文字の読み込みと、シンボル生成と、リスト構造への翻訳とを実行する。この一連の流れによって、CPU120が実行するリスト処理モジュールは、NVM110に組み込まれた関数や変数を用いて、開発装置300で作成されたコンピュータプログラムを実行することができる。
【0084】
続いて、CPU120が実行するリスト処理モジュールのモード遷移について、図9を参照しながら説明する。図9に示すように、CPU120が実行するリスト処理モジュールは、モード0、モード1、モード2を遷移しながら動作する。
【0085】
モード0は、ロックされていないシンボルを利用した変数の参照及び変更、並びに関数の実行が可能なモードであり、通信は平文で行われる。
【0086】
モード1は、モード0から下記モード2へ移行する途中の段階、すなわち認証途中の段階であり、リスト処理モジュールが通信相手に認証された状態である。このモードでは、リスト処理モジュールと通信相手とが未だ相互認証状態までは至っておらず、相互認証状態となるには、リスト処理モジュールが通信相手を認証する必要がある。なお、リスト処理モジュールを通信相手に認証してもらうための式として図9では「auth1」式を用いている。
【0087】
そしてモード2は、システム鍵と呼ぶ予め設定された暗号化鍵でリスト処理モジュールと通信相手とが相互認証された状態を示すモードであり、認証され、ロックが解除されたシンボルの認証フラグに応じて、変数の参照と関数の実行が可能であり、かつ、モード0の機能も動作可能である。また、CPU120が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。通信はセッション鍵を用いた暗号文となるが、モード0の平文も受け付けることができる。なお、リスト処理モジュールが通信相手を認証するための式として図9では「auth2」式を用いている。
【0088】
モード2の状態で、リスト処理モジュールはリセット動作を実行すると、モード0に戻り、ロックされていないシンボルを利用した変数の参照及び変更、並びに関数の実行が可能な状態に戻る。なお、モード2からモード0へ遷移するための式として図9では「reset」式を用いている。
【0089】
このように、モード0、モード1、モード2の3つのモードを遷移しながら動作することで、CPU120がリスト処理モジュールは、ロックされていないシンボルの実行及びロックされているシンボルを解除した実行ができる。
【0090】
以上、CPU120が実行するリスト処理モジュールのモード遷移について、図9を参照しながら説明した。次に、本発明の一実施形態にかかる情報処理装置100における、シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて説明する。図10及び図11は、本発明の一実施形態にかかる情報処理装置100における、シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて示す流れ図である。
【0091】
まず、図10を用いて、アプリケーションの開発時におけるシンボルの登録シーケンスについて説明する。最初に、開発装置300を用いたアプリケーションの開発が行われ、その開発の際に、当該アプリケーションで用いられる変数及び関数の登録が行われる(ステップS111)。アプリケーションで用いられる変数及び関数の登録が行われると、開発装置300は、登録された変数及び関数が正常に機能するかどうかデバッグ処理を実行する(ステップS112)。
【0092】
上記ステップS112におけるデバッグ処理によって、アプリケーションに問題が無くなれば、そのアプリケーションは開発装置300から情報処理装置100に組み込まれる。アプリケーションが情報処理装置100に組み込まれる際には、まず、リスト処理モジュールにシステム鍵で相互認証を実行させる(ステップS113)。上述したように、システム鍵で相互認証され、モード2の状態になっている場合のみ、シンボルに対してシンボル独自の鍵及びアクセスフラグを設定することができる。
【0093】
システム鍵による相互認証が完了すると、開発装置300から情報処理装置100へアプリケーションを組み込み、関数及び変数のシンボルに対して、必要なセキュリティ属性を設定する(ステップS114)。これにより、アプリケーションで用いられる関数や変数のシンボルに対して鍵をかけることができ、関数の実行権限や変数の参照権限の有る者に対してのみ、その関数の実行や変数の参照、値の変更を行わせることが可能になる。
【0094】
次に、開発装置300で開発したアプリケーションを情報処理装置100に組み込んで、情報処理装置100を発行する場合の流れについて、図11を用いて説明する。
【0095】
開発装置300で開発したアプリケーションを情報処理装置100に組み込んで、情報処理装置100を発行する場合は、まずリスト処理モジュールに、システム鍵による相互認証を実行させる(ステップS121)。システム鍵による相互認証が完了すると、次に、リスト処理モジュールに、開発装置300で開発されたプログラムを読み込ませて、シンボルの定義、変数の登録、関数の登録を実行させる(ステップS122)。リスト処理モジュールは、上記ステップS121による相互認証を行わずにプログラムを読み込むことはできない。上記ステップS121による相互認証を行うことで、リスト処理モジュールはセキュリティが設定されたシンボルを定義し、変数の登録、関数の登録を実行することができ、その関数の実行や変数の参照、値の変更を実行することが出来る。
【0096】
次に、本発明の一実施形態にかかる情報処理装置100で実行されるリスト処理モジュールが参照できる、セキュリティ設定された変数のリスト構造例について説明する。図12は、セキュリティ設定された変数のリスト構造例を示す説明図である。
【0097】
システム鍵で認証した後にシンボルを生成し、セキュリティフラグ、鍵バージョン及び鍵を設定する。セキュリティ属性(S−flag)は3種類指定することができる。図12では、Xが関数実行ロックを、Mが内容更新ロックを、Eが内容読み出しロックを、それぞれ示している。関数実行ロックは、認証鍵で認証が取れていなければ関数が実行できないことを現し、内容更新ロックは、認証鍵で認証が取れていなければ変数の値を更新できないことを現し、内容読み出しロックは、認証鍵で認証が取れていなければ変数の値を参照できないことを現す。図12は、2つの変数「osaifu」「log」のリスト構造例を示したものである。以下では、この2つの変数「osaifu」「log」のリスト構造について説明する。
【0098】
図12に示した変数「osaifu」は、電子マネー残高を格納するための変数である。変数「osaifu」は、変数名(pname)として「osaifu」が指定され、電子マネー残高が格納される値(value)には初期値として0が指定されている。そして変数「osaifu」は、セキュリティ属性として内容更新ロック(M)及び内容読み出しロック(E)が指定されている。これにより、変数「osaifu」の値は、認証鍵で認証が取れていなければ内容の参照及び変更が出来なくなる。
【0099】
そして、変数「osaifu」には、マスター鍵へのポインタ及び変数「osaifu」にアクセスするためのアクセス鍵のバージョン並びにアクセス鍵へのポインタの情報が格納される。上述したように、マスター鍵は、当該シンボル(ここでは変数「osaifu」)のセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵のことである。図12では、変数「osaifu」にアクセスするためのアクセス鍵のバージョンが1であり、そのアクセス鍵へのポインタの情報が格納されている状態が示されている。
【0100】
図12に示した変数「log」は、関数の実行結果を格納するための変数である。変数「log」は、変数名(pname)として「log」が指定されている。そして、関数の実行結果を格納するための値(value)はサイクリックな構成となっている。図12に示した構成では、変数「log」は、関数の実行結果が5回分格納される。なお、サイクリックファイルの生成はリスト処理機能に組み込みこまれた関数を利用して設定する。
【0101】
そして変数「log」は、セキュリティ属性として内容更新ロック(M)及び内容読み出しロック(E)が指定されている。これにより、変数「log」の値は、認証鍵で認証が取れていなければ内容の参照及び変更が出来なくなる。図12では、変数「log」にアクセスするためのアクセス鍵のバージョンが2であり、そのアクセス鍵へのポインタの情報が格納されている状態が示されている。
【0102】
また、図12に示した「System」は、モジュールの元権限を持つものである。っこの「System」に鍵が設定されていれば、各関数や変数オブジェクトを生成するに当たって、前もって認証されていることが条件となる。一方、「System」に鍵が設定されていなければ、前もって認証されている必要はなく、例えば非接触型ICカードの技術方式の一つであるFelica(登録商標)における、システムコードおよびモジュール情報を保持する変数となる。
【0103】
次に、本発明の一実施形態にかかる情報処理装置100で実行されるリスト処理モジュールが参照できる、セキュリティ設定された関数のリスト構造例について説明する。図13は、セキュリティ設定された関数のリスト構造例を示す説明図である。
【0104】
図13は、関数「charge」のリスト構造例を示したものである。以下では、この関数「charge」のリスト構造について説明する。
【0105】
関数「charge」を定義するためのS式は図13に示した通りである。ここで、S式はLISPで用いられる論理記述方式であり、シンボルを定義するために用いられる。このS式により、関数「charge」は、図12に示した変数「osaifu」の値に、引数xで指定された値を加算する処理を実行するものである。また、このS式は、図12に示した、セキュリティロックがかかっている2つの変数「osaifu」「log」を使用している。
【0106】
図13に示した「charge」「osaifu」「log」は、セキュリティロックがかかっている関数及び変数であることを示している。従って、関数「charge」を実行するには、セキュリティロックがかかっている関数及び変数の全てにおいて、認証済みであることが要求される。
【0107】
このように、関数「charge」の実行にはセキュリティロックがかかっている2つの変数「osaifu」「log」についても認証されている必要がある。しかし、関数「charge」を実行する権限を有するものは、権限の移譲により、変数「osaifu」「log」についても値の参照や変更を実行する権限を有しているものと考え、関数「charge」に設定された鍵で認証することで、関数「charge」の実行が可能であり、改めて変数「osaifu」「log」について認証することを要しないものとする。
【0108】
以上、セキュリティ設定された関数のリスト構造例について説明した。このように、本実施形態にかかる情報処理装置100のCPU120が実行するリスト処理モジュールは、セキュリティロックがかけられている変数の参照及び関数の実行を可能とする。また、情報処理装置100で実行されるリスト処理モジュールに参照される変数や実行される関数は、それぞれ独自にセキュリティ属性を設定して、セキュリティロックをかけることができる。
【0109】
これにより、情報処理装置100で実行されるリスト処理モジュールが実行するプログラムで使用される変数や関数は、それぞれ独自にセキュリティ設定が可能となり、これにより緻密なセキュリティ実装が可能となる。また、情報処理装置100で実行されるリスト処理モジュールは、インタプリタの基本機能に加えてセキュリティ機能を付加していることで、事前にコンパイルする必要がなく、また、実際に利用される情報処理装置100でデバッグを行うことが可能になる。また、NVM110に動的に変数や関数を直接定義することが可能になり、NVM110に動的に変数や関数を直接定義することで柔軟なプログラム開発が可能になる。また、セキュリティ属性のセットにより、関数実行制限のみならず、関数定義情報の読み出し、変更も制限され、外部からの攻撃による関数定義情報の漏洩や改ざんからプログラムを保護することができる。
【0110】
セキュリティロックがかかった変数や関数は、それぞれ、対応する認証鍵で認証することで初めて利用することが出来る。そして、関数においては、その関数が内部で利用している引数として使用する、セキュリティロックがかかった変数や関数は、その関数を定義する際に認証されている必要がある。しかし、関数定義後の当該関数の利用においては、内部で利用している引数として用いる変数や関数は無条件で利用可能としているので、関数実行の際に毎回全ての認証鍵を用意して認証する必要がなくなり、運用が容易になる。
【0111】
具体例を挙げて説明すれば、上記の変数「osaifu」にセキュリティを設定すると、当該変数「osaifu」については、変数「osaifu」に指定された鍵を用いて相互認証された状態でなければ、当該変数「osaifu」に格納された値の読み出し及び変更が行えない。
【0112】
一方、例えば、変数「osaifu」に格納された値の変更を実行する関数「charge」にセキュリティを設定すると、関数「charge」に指定された鍵を用いて相互認証された状態でなければ、当該関数「charge」を実行することは出来ない。この場合において、関数「charge」の実行について認証されているが、変数「osaifu」に格納された値の読み出し及び変更について認証されていなければ、変数「osaifu」に格納された値の読み出し及び変更を直接実行することは出来ない。このように、変数や関数にそれぞれ独立してセキュリティを設定することで柔軟な運用を可能にするとともに、関数実行の際に、内部で使用されている全ての変数等についての認証鍵を用意して毎回認証する必要が無くなるので、運用が容易になる。
【0113】
また、情報処理装置100で実行されるリスト処理モジュールが実行するプログラムで使用される変数や関数のセキュリティ機能は、任意の時点で行われるようにしてもよい。従って、開発装置300を用いて開発されたプログラムに対する十分なデバッグが行われた後で、開発装置300において変数や関数に対してセキュリティ機能を実装し、セキュリティ機能が実装された状態でさらなるデバッグが可能になる。
【0114】
暗号処理モジュール160で暗号化されたバイナリデータは、送信前に印刷可能な文字に変換してやり取りされる。これにより、暗号処理モジュール160で暗号化されたバイナリデータは、他のアプリケーション、例えばウェブアプリケーションなどから操作することが可能になる。
【0115】
[1−4.情報処理装置の変形例]
次に、本発明の一実施形態にかかる情報処理装置の変形例について説明する。図14は、本発明の一実施形態にかかる情報処理装置の変形例である、情報処理装置1100のハードウェア構成を示す説明図である。以下、図14を用いて、情報処理装置1100のハードウェア構成について説明する。
【0116】
図2に示した情報処理装置100は、装置全体が耐タンパ性を有していた。図14に示したように、情報処理装置1100は、NVM1110と、セキュアCPU1120と、ROM1130と、RAM1140と、シリアルI/O1180と、を含んで構成される。情報処理装置1100は、装置全体が耐タンパ性を有するのではなく、セキュアCPU420のみが耐タンパ性を有している点で図2に示した情報処理装置100と異なっている。このように、CPUを含む一部を耐タンパ機能で保護し、その他の機能との通信及び送受信データを暗号化技術で保護する構成を採ることもできる。また例えば、図2に示した情報処理装置100を、耐タンパ環境を有する場所に設けて、変数の参照や関数の属性を実行させるような構成を採ることもできる。
【0117】
NVM1110は、情報処理装置400の初期化時に、ROM1130に予め書きこまれている組み込み関数が、シンボルとして記録されるものである。また、NVM1110は、ユーザが定義した変数(ユーザ定義変数)や関数(ユーザ定義関数)も記憶されるものである。NVM1110は、電源がオフになっても記憶された情報を保持しておくことができるので、情報処理装置1100の電源が再投入されても再初期化は行われず、登録されているシンボルがそのまま保持される。
【0118】
セキュアCPU1120は、情報処理装置1100の動作を制御するものであり、ROM1130に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。CPU1120は、オペレーティングシステムの実行に際しては、RAM1140をワークエリアとして用いることができる。ここで、ROM1130に記録されているオペレーティングシステムソフトとしては、例えば、手続き型プログラミング言語を解釈して実行できるものであり、そのようなプログラミング言語として、上述したように例えばLISPやRuby、Python等がある。
【0119】
そしてセキュアCPU1120は、図2に示した暗号処理モジュール160の機能も有している。セキュアCPU1120は、内部に暗号化鍵を保持しており、ROM1130に書きこまれるプログラムのコードや、NVM1110及びRAM1140に記録されるデータを暗号化したり、上記コードやデータを読み込む際に暗号化されているコードやデータを復号して処理したりする機能を有する。またセキュアCPU1120は、図2に示した乱数発生モジュール170の機能も有しており、乱数発生指示に基づいて、適当な乱数を発生させることができる。
【0120】
シリアルI/Oインタフェース1180は、外部装置からのシリアルデータをパケットとして認識して、適切なデータを抽出したり、また、情報処理装置1100の内部から外部装置へ出力されるデータをパケットデータとして構成し、シリアルデータとして出力したりする機能を有するものである。
【0121】
以上、図14を用いて、情報処理装置400のハードウェア構成について説明した。この情報処理装置1100のように、装置全体ではなく、装置の一部分のみが耐タンパ性を有していれば、上述のリスト処理モジュールを、当該耐タンパ性を有する部分に実行させることで、かかる装置は、変数・関数それぞれに対して独立してセキュリティが担保されたプログラムの実行が可能となる。
【0122】
以上、リスト処理モジュールにセキュリティ属性を付加し、さらに耐タンパ機能で保護することで、セキュアなアプリケーション開発及び実行が容易に実現できる情報処理装置について説明した。ここで、従来のアプリケーション開発モデルと、本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルとの違いについて説明する。
【0123】
[1−5.アプリケーション開発モデルの比較]
図15は、従来のアプリケーション開発モデルについて示す説明図である。図15を用いて従来のアプリケーション開発モデルについて説明すれば、以下の通りである。まず、ICカードに実行させるプログラムを作成すると、そのプログラムをコンパイラに通してクラスファイルを生成する必要がある。その後、シミュレータを用いて当該クラスファイルのデバッグを行い、バグが存在していれば、作成したプログラムの修正を行う必要がある。
【0124】
デバッグが完了したクラスファイルは、ライブラリファイルと共にコンバータに通され、ICカード等のICチップが内蔵されたデバイスに実行させるためのアプリケーションファイルが生成される。そして、ICカードの動作環境をエミュレートするカードエミュレータに生成されたアプリケーションファイルを組み込み、カードエミュレータ上でデバッグを行う。この段階でバグが存在していればプログラムの修正、クラスファイルへのコンパイル及びアプリケーションファイルへのコンバートを行う必要がある。
【0125】
カードエミュレータでのデバッグが完了すると、ようやくICカードにアプリケーションファイルを組み込むことになる。そして、ICカードでのデバッグを行って、この段階でバグが存在していればプログラムの修正、クラスファイルへのコンパイル、アプリケーションファイルへのコンバート及びカードエミュレータでのデバッグを行う必要がある。
【0126】
このように、従来のアプリケーション開発モデルにおいては、プログラムの作成とデバッグを、複数の段階で繰り返す必要があり、完成したプログラムをICチップ等の耐タンパ環境に実装するまでの工数が多くかかっていた。
【0127】
図16は、本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルについて示す説明図である。図16を用いて本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルについて説明すれば、以下の通りである。まず、情報処理装置100に実行させるためのプログラムを開発装置300で開発し、そのまま情報処理装置100に組み込む。開発装置300での開発の際には、プログラムで使用する変数や関数にセキュリティを予め設定することもでき、プログラムで使用する変数や関数に対するセキュリティ機能は後から設定することもできる。
【0128】
プログラムが組み込まれた情報処理装置100は、開発装置300で開発されたプログラムを、耐タンパ環境で実行されるリスト処理モジュールで実行する。その際に、従来のアプリケーション開発モデルで必要であったプログラムのコードの事前コンパイルは必要なく、プログラムを情報処理装置100で直接実行することができる。これにより情報処理装置100は、外部からプログラムのコードやプログラムで使用されるデータを覗き見られることなくセキュアに実行することができる。
【0129】
そして、情報処理装置100でプログラムを実行させてバグが存在することが明らかになった場合には、開発装置300でプログラムのデバッグを行うが、デバッグに伴う工数の増加は、図15に示した従来のアプリケーション開発モデルに比べると格段に少なく済むのは明らかである。従って、本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルは、従来のアプリケーション開発モデルに比べて、完成したプログラムをICチップ等の耐タンパ環境に実装するまでの開発工数を大幅に削減でき、セキュアなアプリケーション開発を容易に行うことができる。
【0130】
そして本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルには、プログラムを作成する時点であらかじめ変数や関数に対するセキュリティを設定して、情報処理装置100にプログラムを実行させることもできるが、変数や関数に対するセキュリティを設定しない状態で情報処理装置100にプログラムを実行させて、動作に問題が無ければ情報処理装置100にプログラムを組み込み、組み込んだプログラムにセキュリティを設定するような運用にしてもよい。
【0131】
[1−6.開発装置のハードウェア構成]
次に、図17を参照しながら、本発明の一実施形態に係る開発装置300のハードウェア構成について、詳細に説明する。図17は、本発明の一実施形態に係る開発装置300のハードウェア構成を説明するためのブロック図である。
【0132】
開発装置300は、主に、CPU901と、ROM903と、RAM905と、ホストバス907と、ブリッジ909と、外部バス911と、インタフェース913と、入力装置915と、出力装置917と、撮像装置918と、ストレージ装置919と、ドライブ921と、接続ポート923と、通信装置925とを備える。
【0133】
CPU901は、演算処理装置および制御装置として機能し、ROM903、RAM905、ストレージ装置919、またはリムーバブル記録媒体927に記録された各種プログラムに従って、開発装置300内の動作全般またはその一部を制御する。ROM903は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM905は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。これらはCPUバス等の内部バスにより構成されるホストバス907により相互に接続されている。
【0134】
ホストバス907は、ブリッジ909を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス911に接続されている。
【0135】
入力装置915は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置915は、例えば、赤外線やその他の電波を利用したリモートコントロール手段(いわゆる、リモコン)であってもよいし、開発装置300の操作に対応した携帯電話やPDA等の外部接続機器929であってもよい。さらに、入力装置915は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU901に出力する入力制御回路などから構成されている。開発装置300のユーザは、この入力装置915を操作することにより、開発装置300に対して各種のデータを入力したり処理動作を指示したりすることができる。
【0136】
出力装置917は、例えば、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなど、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置917は、例えば、開発装置300が行った各種処理により得られた結果を出力する。具体的には、表示装置は、開発装置300が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
【0137】
撮像装置918は、例えばディスプレイ装置の上部に設けられており、開発装置300のユーザの静止画像または動画像を撮影することが出来る。撮像装置918は、例えばCCD(Charge Coupled Device)イメージセンサまたはCMOS(Complementary Metal Oxide Semiconductor)イメージセンサを備えており、レンズで集光した光を電気信号に変換することで静止画像または動画像を撮影することができる。
【0138】
ストレージ装置919は、開発装置300の記憶部の一例として構成されたデータ格納用の装置であり、例えば、HDD(Hard Disk Drive)等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置919は、CPU901が実行するプログラムや各種データ、および外部から取得した音響信号データや画像信号データなどを格納する。
【0139】
ドライブ921は、記録媒体用リーダライタであり、開発装置300に内蔵、あるいは外付けされる。ドライブ921は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体927に記録されている情報を読み出して、RAM905に出力する。また、ドライブ921は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体927に記録を書き込むことも可能である。リムーバブル記録媒体927は、例えば、DVDメディア、Blu−rayメディア、コンパクトフラッシュ(登録商標)(CompactFlash:CF)、メモリースティック、または、SDメモリカード(Secure Digital memory card)等である。また、リムーバブル記録媒体927は、例えば、非接触型ICチップを搭載したICカード(Integrated Circuit card)または電子機器等であってもよい。
【0140】
接続ポート923は、例えば、USB(Universal Serial Bus)ポート、i.Link等のIEEE1394ポート、SCSI(Small Computer System Interface)ポート、RS−232Cポート、光オーディオ端子、HDMI(High−Definition Multimedia Interface)ポート等の、機器を開発装置300に直接接続するためのポートである。この接続ポート923に外部接続機器929を接続することで、開発装置300は、外部接続機器929から直接音響信号データや画像信号データを取得したり、外部接続機器929に音響信号データや画像信号データを提供したりする。
【0141】
通信装置925は、例えば、通信網931に接続するための通信デバイス等で構成された通信インタフェースである。通信装置925は、例えば、有線または無線LAN(Local Area Network)、Bluetooth、またはWUSB(Wireless USB)用の通信カード、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ、または、各種通信用のモデム等である。この通信装置925は、例えば、インターネットや他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置925に接続される通信網931は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内LAN、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
【0142】
ユーザは、かかる開発装置300を用いて、情報処理装置100で実行させるコンピュータプログラムを開発することができる。開発装置300を用いて作成されたコンピュータプログラムは、例えば、開発装置300に接続したリーダライタ200を介して情報処理装置100に組み込むことができる。
【0143】
<2.まとめ>
以上説明したように本発明の一実施形態によれば、情報処理装置100で実行されるリスト処理モジュールを、変数・関数それぞれ独立してセキュリティを設定できるよう構成し、当該リスト処理モジュールを耐タンパ機能で保護することにより、セキュアなアプリケーション開発が容易となる、プログラミングオペレーティングシステムを実現することができる。また、プログラムで使用する変数や関数はそれぞれ独自にセキュリティ設定が可能であるので、緻密なセキュリティの実装を容易に実現することができる。
【0144】
上記リスト処理モジュールは、インタプリタの基本機能を備え、さらにセキュリティ機能を付加することで、情報処理装置100にプログラムを実行させる際には、事前のコンパイルの必要がなく、プログラムの実行に利用するICチップそのものデバッグを実行することが可能である。従って、従来のアプリケーション開発モデルに比べて、開発ステップが少なく、短期間でのアプリケーション開発が可能となる。また、情報処理装置100の内部に設けられる不揮発性メモリに、動的に変数や関数を直接定義することが可能であり、柔軟なアプリケーション開発も可能となる。
【0145】
本発明の一実施形態にかかる情報処理装置100で実行するアプリケーションで使用される、セキュリティロックのかかった変数や関数は、それぞれ設定された認証鍵で認証して初めて利用可能となる。そのため、関数定義においてその関数が引数として利用するセキュリティロックのかかった変数、関数は、関数定義時に認証されている必要がある。しかし、関数定義後のその関数の利用においては、定義した関数のセキュリティ認証のみを行うことで、内部で利用している引数として用いる変数、関数は無条件に利用可能とすることができる。これにより、毎回全ての認証鍵を用意して認証する必要が無くなり、アプリケーションの運用を容易にすることができる。
【0146】
スクリプト言語はアプリケーションをダウンロードした後で、容易にプログラムの書き換えが出来ることが特徴となっているが、これがオープンプラットフォームでは改ざんの脅威になっている。本発明の一実施形態にかかる情報処理装置100の構成は、そのプログラムの改ざんも防ぐことが可能となる。
【0147】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0148】
100 情報処理装置
110 NVM
120 CPU
130 ROM
140 RAM
150 BASE64モジュール
160 暗号処理モジュール
170 乱数発生モジュール
180 シリアルI/Oインタフェース
200 リーダライタ
300 開発装置


【特許請求の範囲】
【請求項1】
耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行部を備え、
前記プログラム実行部で実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、
前記プログラム実行部は、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、情報処理装置。
【請求項2】
前記プログラム実行部で実行されるコンピュータプログラムには、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、
前記プログラム実行部は、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能とする、請求項1に記載の情報処理装置。
【請求項3】
前記プログラム実行部は、前記コンピュータプログラムに定義された関数にセキュリティ属性が付加されている場合は、前記関数に対して指定された認証鍵で認証することにより、該関数の内部で利用されている他の関数や変数のセキュリティ属性設定に基づく認証を経ずに該関数を実行できる、請求項2に記載の情報処理装置。
【請求項4】
前記セキュリティ属性には、前記変数または関数が規定されるシンボルへのアクセス属性、認証鍵バージョン及び認証鍵テーブルへのポインタが設定される、請求項2に記載の情報処理装置。
【請求項5】
前記プログラム実行部で実行される前記コンピュータプログラムで定義された関数及び変数はシステム鍵で認証することにより定義の変更が可能である、請求項2に記載の情報処理装置。
【請求項6】
前記関数を定義する関数式をシンボルに規定する場合は、該シンボル及び該関数内で利用する関数、変数の全ての認証鍵で認証されていることを要する、請求項2に記載の情報処理装置。
【請求項7】
外部装置との間で伝送されるバイナリデータを所定の形式にエンコードするバイナリデータ変換部を備える、請求項2に記載の情報処理装置。
【請求項8】
前記バイナリデータ変換部は、前記認証処理のために伝送されるバイナリデータを変換した後のデータの先頭に前記所定の形式で用いられない符号を付加する、請求項7に記載の情報処理装置。
【請求項9】
不揮発性を有し、前記プログラム実行部で実行されるプログラムで使用される変数定義及び関数定義を保存する記憶部を備える、請求項2に記載の情報処理装置。
【請求項10】
前記プログラム実行部が実行するコンピュータプログラムは任意のタイミングで変数及び関数単位でのセキュリティ属性及び認証鍵の設定が可能である、請求項2に記載の情報処理装置。
【請求項11】
前記セキュリティ属性の設定は、変数または関数を定義するコマンドにおいてシンボル定義特殊コマンドで設定される、請求項10に記載の情報処理装置。
【請求項12】
前記セキュリティ属性の設定は、変数または関数を定義するコマンドで変数または関数の定義を行った後にシンボル定義特殊コマンドで設定される、請求項10に記載の情報処理装置。
【請求項13】
前記セキュリティ属性の設定により、関数を定義する情報の読み出し、変更がさらに制限される、請求項2に記載の情報処理装置。
【請求項14】
少なくとも、前記プログラム実行部が耐タンパ性能を有する、請求項2に記載の情報処理装置。
【請求項15】
前記情報処理装置はICチップを内蔵したICカードである、請求項2に記載の情報処理装置。
【請求項16】
耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップを含み、
前記プログラム実行ステップで実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、
前記プログラム実行ステップは、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、プログラム実行方法。
【請求項17】
前記プログラム実行ステップで実行されるコンピュータプログラムには、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、
前記プログラム実行ステップは、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能とする、請求項16に記載のプログラム実行方法。
【請求項18】
耐タンパ性能を有する環境において、コンピュータに、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップを実行させ、
前記プログラム実行ステップで実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、
前記プログラム実行ステップは、前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記関数の実行を可能とする、コンピュータプログラム。
【請求項19】
前記プログラム実行ステップで実行されるコンピュータプログラムには、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、
前記プログラム実行ステップは、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能とする、請求項18に記載のコンピュータプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2012−168645(P2012−168645A)
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2011−27652(P2011−27652)
【出願日】平成23年2月10日(2011.2.10)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】