JP5704951B2 - 情報処理装置、情報処理方法及びコンピュータプログラム - Google Patents

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

Info

Publication number
JP5704951B2
JP5704951B2 JP2011027652A JP2011027652A JP5704951B2 JP 5704951 B2 JP5704951 B2 JP 5704951B2 JP 2011027652 A JP2011027652 A JP 2011027652A JP 2011027652 A JP2011027652 A JP 2011027652A JP 5704951 B2 JP5704951 B2 JP 5704951B2
Authority
JP
Japan
Prior art keywords
function
information processing
processing apparatus
variables
authentication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011027652A
Other languages
English (en)
Other versions
JP2012168645A (ja
JP2012168645A5 (ja
Inventor
直 森田
直 森田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2011027652A priority Critical patent/JP5704951B2/ja
Priority to CN201210020096.9A priority patent/CN102682244B/zh
Priority to US13/360,933 priority patent/US8819458B2/en
Publication of JP2012168645A publication Critical patent/JP2012168645A/ja
Publication of JP2012168645A5 publication Critical patent/JP2012168645A5/ja
Application granted granted Critical
Publication of JP5704951B2 publication Critical patent/JP5704951B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Description

本発明は、情報処理装置、情報処理方法及びコンピュータプログラムに関する。
近年、IC(integrated circuit)を備え、非接触で通信を行える非接触アンテナモジュールを備えるカードが普及している。そのようなカードは、例えば、非接触ICカードなどと称され、非接触で他の装置と通信を行うことが可能とされている。非接触ICカードを用いた非接触通信は、例えば、交通乗車券、電子マネー、IDカード、入退室管理などに用いられ、その用途は広がりつつある。
ICチップ上でプログラムの実行が可能な非接触ICカードには、それぞれの用途に適したOS(operating system)を備える構成となっている。かかる非接触ICカードに組み込まれているOSとして、例えばMULTOS(Mel言語)やJava OS(Java(商標)言語)等がある。これらのOSは、仮想マシン(VM:Virtual Machine)をROM上に格納し、実行コードを不揮発性メモリに書き込むことで実現される。
特開2001−184472号公報
しかし、これらのICカードに組み込まれるOSは、ファイルシステムに操作可能なAPIを呼ぶプログラムをダウンロードして定義しているものであり、自らはコンパイルやデバッグを行う機能を有しておらず、また、OSの利用中に動的に機能の再定義は行えない。
MULTOSやJava OSは、セキュリティファイアーウォールとしてコンテナを定義し、そのコンテナの中に各サービス用のプログラムをダウンロードでき、そのコンテナを認証することでプログラムの実行が可能になるが、そのプログラム中の個々の変数や関数の保護は、そのプログラムの書き方に依存してしまう。
そして、ICカード用のアプリケーションのプログラムを開発する際には、複数の開発ツールが用いられるため、そのツールの理解が必要となり、そのセットアップなどに時間がかかっていた。また、ICカード用のアプリケーションのプログラムの開発プロセスにおいては、上記開発ツールを用いてコードの作成及びデバッグを行い、最終的にICカードにプログラムをダウンロードして、ICカード上で最終デバッグを行うことが必須である。従って、開発プロセスが複雑となり、かつ、ICカード上での最終デバッグで手戻りが発生すると、プログラムの修正に時間がかかるという問題が生じていた。
また、アプリケーションプログラムをICカードにダウンロードした後は、セキュリティ機能を利用するため、暗号化したバイナリデータをやり取りする必要が生じ、専用の解釈ツールを用いることが必須となっていた。
ICカードへアプリケーションプログラムを供給する方法として、例えば特許文献1が開示されているが、特許文献1に開示されている技術は、汎用性を増してアプリケーションプログラム(ゲーム)を入れ替え可能にする点は記載されているが、セキュリティ機能の利用については言及が無い。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、緻密なセキュリティを要するアプリケーションプログラムの開発及び実装を容易に行えることが可能な、新規かつ改良された情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
上記課題を解決するために、本発明のある観点によれば、耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行部を備え、前記プログラム実行部で実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行部は、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能とし、前記コンピュータプログラムに定義された関数にセキュリティ属性が付加されている場合は、前記関数に対して指定された認証鍵で認証することにより、該関数の内部で利用されている他の関数や変数のセキュリティ属性設定に基づく認証を経ずに該関数を実行できる、情報処理装置が提供される。
前記セキュリティ属性には、前記変数または関数が規定されるデータ構造へのアクセス属性、認証鍵バージョン及び認証鍵テーブルへのポインタが設定されるようにしてもよい。
前記プログラム実行部で実行される前記コンピュータプログラムで定義された関数及び変数はシステム鍵で認証することにより定義の変更が可能であるようにしてもよい。
前記関数を定義する関数式をデータ構造に規定する場合は、該データ構造及び該関数内で利用する関数、変数の全ての認証鍵で認証されていることを要していてもよい。
外部装置との間で伝送されるバイナリデータを所定の形式にエンコードするバイナリデータ変換部を備えていてもよい。
前記バイナリデータ変換部は、前記認証処理のために伝送されるバイナリデータを変換した後のデータの先頭に前記所定の形式で用いられない符号を付加するようにしてもよい。
不揮発性を有し、前記プログラム実行部で実行されるプログラムで使用される変数定義及び関数定義を保存する記憶部を備えていてもよい。
前記プログラム実行部が実行するコンピュータプログラムは任意のタイミングで変数及び関数単位でのセキュリティ属性及び認証鍵の設定が可能であってもよい。
前記セキュリティ属性の設定により、関数を定義する情報の読み出し、変更がさらに制限されるようにしてもよい。
少なくとも、前記プログラム実行部が耐タンパ性能を有していてもよい。
前記情報処理装置はICチップを内蔵したICカードであってもよい。
また、上記課題を解決するために、本発明の別の観点によれば、耐タンパ性能を有する環境において、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップを含み、前記プログラム実行ステップで実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行ステップは、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能とし、前記コンピュータプログラムに定義された関数にセキュリティ属性が付加されている場合は、前記関数に対して指定された認証鍵で認証することにより、該関数の内部で利用されている他の関数や変数のセキュリティ属性設定に基づく認証を経ずに該関数を実行できる、情報処理方法が提供される。
また、上記課題を解決するために、本発明の別の観点によれば、耐タンパ性能を有する環境において、コンピュータに、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップを実行させ、前記プログラム実行ステップで実行されるコンピュータプログラムには関数単位でセキュリティ属性及び認証鍵が設けられており、さらに変数単位でセキュリティ属性及び認証鍵が設けられており、前記プログラム実行ステップは、前記変数の参照及び前記関数の実行に際して、前記認証鍵による認証処理を実行し、前記セキュリティ属性に基づいて前記変数の参照及び前記関数の実行を可能とし、前記コンピュータプログラムに定義された関数にセキュリティ属性が付加されている場合は、前記関数に対して指定された認証鍵で認証することにより、該関数の内部で利用されている他の関数や変数のセキュリティ属性設定に基づく認証を経ずに該関数を実行できる、コンピュータプログラムが提供される。
以上説明したように本発明によれば、緻密なセキュリティを要するアプリケーションプログラムの開発及び実装を容易に行え、また、ネットワークを介したクライアントPCより新たなアプリケーションを安全に組み込むことが可能な、新規かつ改良された情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
本発明の一実施形態にかかる情報処理システム1の構成例を示す説明図である。 本発明の一実施形態にかかる情報処理装置100のハードウェア構成を示す説明図である。 リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。 リスト構造を構成するためのコンスセル410の構成例を示す説明図である。 シンボル400の名前領域401に格納される名前を格納するための名前格納テーブル420の構造例を示す説明図である。 認証鍵を格納する認証鍵テーブル430の構造例を示す説明図である。 図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとの対応関係を示す説明図である。 CPU120が実行するリスト処理モジュールの起動時の処理について示す流れ図である。 CPU120が実行するリスト処理モジュールのモード遷移について示す説明図である。 シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて示す流れ図である。 シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて示す流れ図である。 セキュリティ設定された変数のリスト構造例を示す説明図である。 セキュリティ設定された関数のリスト構造例を示す説明図である。 情報処理装置の変形例である情報処理装置1100のハードウェア構成を示す説明図である。 従来のアプリケーション開発モデルについて示す説明図である。 本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルについて示す説明図である。 本発明の一実施形態に係る開発装置300のハードウェア構成を説明するためのブロック図である。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
<1.本発明の一実施形態>
[1−1.システム構成例]
[1−2.ハードウェア構成例]
[1−3.プログラム構造例]
[1−4.情報処理装置の変形例]
[1−5.アプリケーション開発モデルの比較]
[1−6.開発装置のハードウェア構成]
<2.まとめ>
<1.本発明の一実施形態>
[1−1.システム構成例]
まず、本発明の一実施形態にかかるシステム構成例について説明する。図1は、本発明の一実施形態にかかる情報処理システム1の構成例を示す説明図である。以下、図1を用いて本発明の一実施形態にかかる情報処理システム1の構成例について説明する。
図1に示したように、本発明の一実施形態にかかる情報処理システム1は、情報処理装置100と、リーダライタ(R/W)200と、開発装置300と、を含んで構成される。
情報処理装置100は、内部に耐タンパ性を有し、近接非接触通信機能を備えるICチップが内蔵されている。情報処理装置100は、例えば、かかるICチップが内蔵されたICカードや、携帯電話、携帯端末等の形態をとることができる。そして、かかるICチップは、リーダライタ200との間で近接非接触通信を実行することで、リーダライタ200との間で情報の授受を実行することができる。
リーダライタ200は、主に駅の自動改札機やキャッシュレジスター等に接続して設けられるものであり、ICチップが内蔵された情報処理装置100との間で近接非接触通信を実行するものである。リーダライタ200が、情報処理装置100との間で近接非接触通信を実行することで、例えばリーダライタ200と接続されている自動改札機がゲートを開いたり、リーダライタ200と接続されているキャッシュレジスターが商品代金の支払い処理を行ったりすることができる。
開発装置300は、情報処理装置100に内蔵されるICチップに組み込まれるコンピュータプログラムの開発に用いられる装置である。ICチップに組み込むためのコンピュータプログラムを作成するユーザは、開発装置300を用いて、ICチップに組み込んで実行させるためのコンピュータプログラムのソースコードの作成を行うことができる。開発装置300で作成されたコンピュータプログラムのソースコードは、開発装置300に接続したリーダライタ200を介して情報処理装置100に転送し、情報処理装置100に内蔵されたICチップに組み込まれる。情報処理装置100は、ICチップに組み込まれたコンピュータプログラムのソースコードを解釈して、当該コンピュータプログラムを実行することができる。
本実施形態にかかる情報処理装置100に内蔵されるICチップは、ソースコードで定義されている変数及び関数にそれぞれ独立してセキュリティが設定されるプログラムを実行することが出来るように構成される。これにより、本実施形態にかかる情報処理装置100に内蔵されるICチップは、組み込まれているプログラムの実行権限のないアプリケーション等による当該プログラムの実行を防ぐことができるので、プログラムのセキュアな実行が可能になる。
なお、図1では、開発装置300で作成されたコンピュータプログラムのソースコードは、開発装置300に接続したリーダライタ200を介して情報処理装置100に転送する構成が図示されているが、本発明においては、開発装置から情報処理装置にコンピュータプログラムを組み込むには必ずしもリーダライタを介する必要は無く、開発装置から直接情報処理装置にコンピュータプログラムを転送してもよい。
以上、図1を用いて本発明の一実施形態にかかる情報処理システム1の構成例について説明した。次に、本発明の一実施形態にかかる情報処理装置100のハードウェア構成例について説明する。
[1−2.ハードウェア構成例]
図2は、本発明の一実施形態にかかる情報処理装置100のハードウェア構成を示す説明図である。以下、図2を用いて、本発明の一実施形態にかかる情報処理装置100のハードウェア構成について説明する。
図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と、を含んで構成される。
NVM110は、情報処理装置100の初期化時に、ROM130に予め書きこまれている組み込み関数が、シンボルとして記録されるものである。また、NVM110は、ユーザが定義した変数(ユーザ定義変数)や関数(ユーザ定義関数)も記憶されるものである。NVM110は、電源がオフになっても記憶された情報を保持しておくことができるので、情報処理装置100の電源が再投入されても再初期化は行われず、登録されているシンボルがそのまま保持される。
CPU120は、情報処理装置100の動作を制御するものであり、ROM130に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。CPU120は、オペレーティングシステムの実行に際しては、RAM140をワークエリアとして用いることができる。ここで、ROM130に記録されているオペレーティングシステムソフトとしては、例えば、手続き型プログラミング言語を解釈して実行できるものであり、そのようなプログラミング言語として、例えばLISPやRuby、Python等がある。
本実施形態にかかる情報処理装置100のROM130は、インタプリタとして上記手続き型プログラミング言語の基本機能に加え、セキュリティ機能が付加されたものが格納される。これにより、情報処理装置100にアプリケーションプログラムを組み込む際に、事前にコンパイルする必要がなく、またセキュリティ機能が付加されているので、アプリケーションが利用される情報処理装置100そのものでデバッグが可能となる。従って、開発ステップの短縮に繋がって、短期間でのアプリケーションプログラムの開発が可能となる。
BASE64モジュール150は、情報処理装置100の外部に設けられた装置(以下単に「外部装置」とも称する)との通信のために、バイナリデータに対してBASE64変換を施したり、またその逆の変換を施したりするモジュールである。本実施形態にかかる情報処理装置100は、外部装置との通信は、シリアルI/Oインタフェース180を介したシリアルデータ通信を実行する。本実施形態では、情報処理装置100の外部からリスト処理モジュールと通信する場合、入力されるデータは全てASCII文字列で行えるよう、バイナリデータはBASE64モジュール150でBASE64コードに変換される。
情報処理装置100と外部装置(例えばリーダライタ200)とで相互認証及びその後の通信を行う場合、やり取りされるバイナリ形式の暗号化データはBASE64モジュール150でBASE64変換されるが、その先頭にはBASE64では用いない符号(例えば‘:’や’〜’等)を付けることで、一般のリスト処理式とは識別してやり取りするようにしてもよい。
シリアルI/Oインタフェース180を介したシリアルデータ通信は、キャリッジリターン符号が入力の区切りとなる。情報処理装置100は、外部装置との通信に用いるコードとしてASCIIコードを用いて外部装置との間で情報の授受を実行する。しかし、情報処理装置100は、暗号化データなどのバイナリデータのやり取りに際しては、バイナリデータをBASE64モジュール150でBASE64変換する。そして、BASE64モジュール150は、バイナリデータをBASE64変換する際には、上述したように、先頭にBASE64では使用しない文字(符号)を識別文字として付加することができる。BASE64では使用しない文字(符号)を識別文字として先頭に付加することにより、CPU120でプログラムを実行する際に、BASE64モジュール150で変換されたデータがバイナリデータであることをCPU120が認識することができる。
また、CPU120で実行されるプログラムにロックを掛ける際に、そのロックに用いる鍵の設定等のシンボル式とバイナリデータとが混在するような場合には、シンボル式とバイナリデータとで異なる文字(符号)を割り当てることで、CPU120でプログラムを実行する際にCPU120がそのシンボル式とバイナリデータとの違いを認識することができる。
暗号処理モジュール160は、入力されてくるデータに対して、指定された鍵を用いて暗号化処理を施して出力したり、入力されてくる暗号化データに対して、指定された鍵を用いて復号処理を施して出力したりするものである。
乱数発生モジュール170は、外部からの(例えばCPU120からの)乱数発生指示に基づいて、適当な乱数を発生させてその乱数を出力するものである。乱数発生モジュール170が発生する乱数は、例えば、情報処理装置100から認証したい相手(例えばリーダライタ200)に送信して暗号文を生成してもらい、相手(例えばリーダライタ200)から返信された暗号文を復号した結果が情報処理装置100から送った乱数と一致するか否かを判定することで相手の鍵が正しいか否かを判断するために用いられる。
シリアルI/Oインタフェース180は、外部装置からのシリアルデータをパケットとして認識して、適切なデータを抽出したり、また、情報処理装置100の内部から外部装置へ出力されるデータをパケットデータとして構成し、シリアルデータとして出力したりする機能を有するものである。
図2に示すような構成を有する情報処理装置100が、全体として耐タンパ性を有することにより、機器や回路の中身が外部からは分析しにくくなる。そして、CPU120が実行するコンピュータプログラムには、変数・関数それぞれに対して独立してセキュリティが設定される。
なお、図2には図示しないが、情報処理装置100は、リーダライタ200との間で近接非接触通信を実行するためのアンテナや変調・復調回路等が備えられる。
以上、図2を用いて、本発明の一実施形態にかかる情報処理装置100のハードウェア構成について説明した。次に、図2に示した情報処理装置100で実行される、コンピュータプログラムの構造について説明する。
[1−3.プログラム構造例]
図3〜図6は、本発明の一実施形態にかかる情報処理装置100で実行される、コンピュータプログラムの構造例を示す説明図である。以下、図3〜図6を用いて、本発明の一実施形態にかかる情報処理装置100で実行される、コンピュータプログラムの構造例について説明する。
なお、以下においては、情報処理装置100で実行されるコンピュータプログラムの言語としてLISPを前提として説明するが、本発明においては、プログラミング言語として使用可能である言語はかかる例に限定されず、拡張機能または標準機能において、変数毎及び関数毎にそれぞれ独立してセキュリティが設定できるように構成することが可能な、手続き型のプログラミング言語であればいかなるものであっても良い。
CPU120は、コンピュータプログラムの実行に際しては、開発装置300で開発され、情報処理装置100に組み込まれたプログラムのソースコードを解釈して実行するためのリスト処理モジュールをロードする。図3は、リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。
図3に示したように、リスト処理モジュールが定義できるシンボル400は、名前領域401と、変数定義領域402と、関数定義領域403と、セキュリティ属性領域404と、で構成される。
名前領域401は、印刷可能な文字デーブルを指し示すものである。名前領域401には、そのシンボルが変数を規定するものであればその変数名が格納され、関数を規定するものであればその関数名が格納されるものである。図3では、名前領域401を「pname」で指し示している。
変数定義領域402は、そのシンボルが単純変数を規定するものであればその値を格納し、リスト変数を規定するものであればそのリストを指し示す値が格納されるものである。図3では、変数定義領域402を「value」で指し示している。
関数定義領域403は、そのシンボルが関数を規定するものであれば、その関数実態が格納されるものである。図3では、関数定義領域403を「function」で指し示している。
セキュリティ属性領域404は、そのシンボルについてのセキュリティ属性に関する情報が格納されるものである。セキュリティ属性としては、例えば変数の読み出し属性、変数の変更属性、関数の実行属性がある。セキュリティ属性領域404には、そのシンボルへのアクセス権限を示すアクセスフラグと、そのシンボルへアクセスするための認証鍵を格納するテーブルを指し示す値とが格納される。
図3に示したシンボル400に加えて、リスト構造を構成するためのコンスセルと呼ぶセルが連続的に定義されている。図4は、リスト構造を構成するためのコンスセル410の構成例を示す説明図である。コンスセル410は、図4に示したように、CARスロット411およびCDRスロット412と呼ばれる2つのポインタからなるオブジェクトである。図4では、CARスロット411としてcar0〜car9、CDRスロット412としてcdr0〜cdr9を示している。もちろん、それぞれのスロットの数はかかる例に限定されないことは言うまでもない。
シンボル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に電子マネー機能を組み込む際にその電子マネーの残高を表す変数であるとする。
そして、シンボル400のセキュリティ属性領域404に格納される、認証鍵を格納するテーブルを指し示す値に対応するテーブルも設けられる。図6は、認証鍵を格納する認証鍵テーブル430の構造例を示す説明図である。図6は、認証鍵テーブル430において、認証鍵がバージョン番号(kv1〜kv5)で管理されている状態を示すものである。符号431は鍵「key1」が格納される領域であり、符号432は鍵「key2」が格納される領域であり、符号433は鍵「key3」が格納される領域であり、符号434は鍵「key4」が格納される領域であり、符号435は鍵「key5」が格納される領域である。
図3から図6に示したこれらのテーブルは、開発装置300で開発されたコンピュータプログラムの、情報処理装置100での実行に先立って、NVM110に生成されて記憶される。これにより、情報処理装置100の電源がオフになっても、これらのテーブルの内容は保持されたままの状態を維持することができる。
図7は、図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとの対応関係を示す説明図である。上述したように、シンボルは、印刷可能な名前のテーブルを指し示す領域と、値若しくは値のリストを指し示す領域と、関数属性と、セキュリティ属性とを持つ。関数属性は、関数のタイプ及びその関数の実態を指し示すポインタを持ち、セキュリティ属性は、セキュリティフラグと、鍵バージョンと、鍵を指し示すポインタとを持つ。なお、図7では、図6に示した認証鍵テーブル430において、符号431で示した鍵「key1」及び符号432で示した鍵「key2」が使用される様子が図示されている。
図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとは、いずれも図2に示した情報処理装置100のような、耐タンパ機能を持ったハードウェアで守られることで、値の不正な取得や改ざんから守られることになる。
このように、リスト処理モジュールの一般的構造はシンボルと呼ばれ、数値若しくは数値を保持したリストへのポインタと、関数定義であれば関数へのポインタと、印刷可能な文字列を格納したテーブルを指し示すポインタと、で構成されている
そして本実施形態では、これに加えて、セキュリティ属性と2種類の暗号化鍵情報を保持するテーブルへのポインタをシンボルに付加している。一方の鍵へのポインタはマスター鍵を指し、もう一方の鍵へのポインタは、当該シンボルのアクセス鍵(認証鍵)を指している。マスター鍵は当該シンボルのセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵を指している。シンボルに保持した情報の内容評価、内容変更、関数実行においてそのシンボルに設定されたセキュリティフラグが立っている場合は、シンボルに付加された一方の鍵で認証してあることがそのシンボル利用の条件となる。もう一方の鍵は、当該シンボルの鍵を変更する場合に、その権限を確認する権限認証鍵を示している。アクセス情報の変更には、その権限認証鍵で認証された状態でなければならない。
また、図4に示したような、コンスセルと呼ばれる、シンボルとシンボルの関係を表す2組のポインタがあり。それぞれのポインタは、シンボル又は他のシンボルを指すコンスセルを指し示す構造となっている。
組み込み関数はROM130に書き込まれており、情報処理装置100の最初の電源投入で、ROM130に書き込まれている組み込み関数を、NVM110に作成したシンボルに定義する。その後の電源投入では、既に登録済みのシンボルは初期化されない。
上記の構成は、ユーザにより新たな関数が登録される場合においても、同様に機能する構造となっている。
CPU120が実行するリスト処理モジュールは、シンボルを自由に登録し、そのシンボルに数値やリスト、関数を自由に登録できる構成となっている。そして、登録されるシンボルにセキュリティ機能を生かすために、そのシンボルに暗号鍵とアクセスフラグを登録しておく。CPU120が実行するリスト処理モジュールには、システム鍵と呼ぶ暗号化鍵が最初に設定されている。そのシステム鍵で相互認証されたモードになっている状態(以下の説明のモード2に該当する状態)でのみ、新たに登録されたシンボルは、そのシンボル独自の鍵とアクセスフラグが設定されることができる。また、CPU120が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。
CPU120が実行するリスト処理モジュールは、関数シンボルの登録に際しては、その関数で利用するシンボルの全ての鍵で認証済みであることが登録条件となっている。そしてその後、リスト処理モジュールは、その登録された関数を利用する場合は、単にその関数実行鍵で認証されていれば良い構造になっている。
次に、CPU120が実行するリスト処理モジュールの起動時の処理、及びリスト処理モジュールのモード遷移について説明する。図8は、CPU120が実行するリスト処理モジュールの起動時の処理について示す流れ図である。また図9は、CPU120が実行するリスト処理モジュールのモード遷移について示す説明図である。
まず、CPU120がリスト処理モジュールを起動する時の処理について図8を参照しながら説明する。まず情報処理装置100の電源がオンされると、リスト処理モジュールがCPU120にロードされる。そしてCPU120で実行されるリスト処理モジュールは、まず初期完了フラグがオンになっているかどうかを判断する(ステップS101)。
上記ステップS101の判断の結果、初期完了フラグがオンになっていなかった場合には、リスト処理モジュールは、ROM130からNVM110へ関数及び変数を組み込み、シンボルを定義する。シンボルの定義が完了すると、リスト処理モジュールは初期化フラグをオンにする(ステップS102)。
上記ステップS102の処理が完了すると、または、上記ステップS101の判断の結果、初期完了フラグがオンになっていた場合には、続いてリスト処理モジュールは、情報処理装置100の外部から入力される文字の読み込みと、シンボル生成と、リスト構造への翻訳とを実行する(ステップS103)。
上記ステップS103の処理が完了すると、続いてリスト処理モジュールは、リスト式を評価し、その結果をリスト構造とする(ステップS104)。そしてリスト処理モジュールは、リスト式の評価結果がエラーでなく、シンボル定義ならば、そのシンボル定義をNVM110に書き込む(ステップS105)。そしてリスト処理モジュールは、リスト構造結果のリスト式化と出力を行う(ステップS106)。
上記ステップS106で、リスト構造結果のリスト式化と出力を行うと、リスト処理モジュールは、上記ステップS103に戻って、情報処理装置100の外部から入力される文字の読み込みと、シンボル生成と、リスト構造への翻訳とを実行する。この一連の流れによって、CPU120が実行するリスト処理モジュールは、NVM110に組み込まれた関数や変数を用いて、開発装置300で作成されたコンピュータプログラムを実行することができる。
続いて、CPU120が実行するリスト処理モジュールのモード遷移について、図9を参照しながら説明する。図9に示すように、CPU120が実行するリスト処理モジュールは、モード0、モード1、モード2を遷移しながら動作する。
モード0は、ロックされていないシンボルを利用した変数の参照及び変更、並びに関数の実行が可能なモードであり、通信は平文で行われる。
モード1は、モード0から下記モード2へ移行する途中の段階、すなわち認証途中の段階であり、リスト処理モジュールが通信相手に認証された状態である。このモードでは、リスト処理モジュールと通信相手とが未だ相互認証状態までは至っておらず、相互認証状態となるには、リスト処理モジュールが通信相手を認証する必要がある。なお、リスト処理モジュールを通信相手に認証してもらうための式として図9では「auth1」式を用いている。
そしてモード2は、システム鍵と呼ぶ予め設定された暗号化鍵でリスト処理モジュールと通信相手とが相互認証された状態を示すモードであり、認証され、ロックが解除されたシンボルの認証フラグに応じて、変数の参照と関数の実行が可能であり、かつ、モード0の機能も動作可能である。また、CPU120が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。通信はセッション鍵を用いた暗号文となるが、モード0の平文も受け付けることができる。なお、リスト処理モジュールが通信相手を認証するための式として図9では「auth2」式を用いている。
モード2の状態で、リスト処理モジュールはリセット動作を実行すると、モード0に戻り、ロックされていないシンボルを利用した変数の参照及び変更、並びに関数の実行が可能な状態に戻る。なお、モード2からモード0へ遷移するための式として図9では「reset」式を用いている。
このように、モード0、モード1、モード2の3つのモードを遷移しながら動作することで、CPU120がリスト処理モジュールは、ロックされていないシンボルの実行及びロックされているシンボルを解除した実行ができる。
以上、CPU120が実行するリスト処理モジュールのモード遷移について、図9を参照しながら説明した。次に、本発明の一実施形態にかかる情報処理装置100における、シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて説明する。図10及び図11は、本発明の一実施形態にかかる情報処理装置100における、シンボルの登録シーケンスとセキュリティ機能の活性化シーケンスについて示す流れ図である。
まず、図10を用いて、アプリケーションの開発時におけるシンボルの登録シーケンスについて説明する。最初に、開発装置300を用いたアプリケーションの開発が行われ、その開発の際に、当該アプリケーションで用いられる変数及び関数の登録が行われる(ステップS111)。アプリケーションで用いられる変数及び関数の登録が行われると、開発装置300は、登録された変数及び関数が正常に機能するかどうかデバッグ処理を実行する(ステップS112)。
上記ステップS112におけるデバッグ処理によって、アプリケーションに問題が無くなれば、そのアプリケーションは開発装置300から情報処理装置100に組み込まれる。アプリケーションが情報処理装置100に組み込まれる際には、まず、リスト処理モジュールにシステム鍵で相互認証を実行させる(ステップS113)。上述したように、システム鍵で相互認証され、モード2の状態になっている場合のみ、シンボルに対してシンボル独自の鍵及びアクセスフラグを設定することができる。
システム鍵による相互認証が完了すると、開発装置300から情報処理装置100へアプリケーションを組み込み、関数及び変数のシンボルに対して、必要なセキュリティ属性を設定する(ステップS114)。これにより、アプリケーションで用いられる関数や変数のシンボルに対して鍵をかけることができ、関数の実行権限や変数の参照権限の有る者に対してのみ、その関数の実行や変数の参照、値の変更を行わせることが可能になる。
次に、開発装置300で開発したアプリケーションを情報処理装置100に組み込んで、情報処理装置100を発行する場合の流れについて、図11を用いて説明する。
開発装置300で開発したアプリケーションを情報処理装置100に組み込んで、情報処理装置100を発行する場合は、まずリスト処理モジュールに、システム鍵による相互認証を実行させる(ステップS121)。システム鍵による相互認証が完了すると、次に、リスト処理モジュールに、開発装置300で開発されたプログラムを読み込ませて、シンボルの定義、変数の登録、関数の登録を実行させる(ステップS122)。リスト処理モジュールは、上記ステップS121による相互認証を行わずにプログラムを読み込むことはできない。上記ステップS121による相互認証を行うことで、リスト処理モジュールはセキュリティが設定されたシンボルを定義し、変数の登録、関数の登録を実行することができ、その関数の実行や変数の参照、値の変更を実行することが出来る。
次に、本発明の一実施形態にかかる情報処理装置100で実行されるリスト処理モジュールが参照できる、セキュリティ設定された変数のリスト構造例について説明する。図12は、セキュリティ設定された変数のリスト構造例を示す説明図である。
システム鍵で認証した後にシンボルを生成し、セキュリティフラグ、鍵バージョン及び鍵を設定する。セキュリティ属性(S−flag)は3種類指定することができる。図12では、Xが関数実行ロックを、Mが内容更新ロックを、Eが内容読み出しロックを、それぞれ示している。関数実行ロックは、認証鍵で認証が取れていなければ関数が実行できないことを現し、内容更新ロックは、認証鍵で認証が取れていなければ変数の値を更新できないことを現し、内容読み出しロックは、認証鍵で認証が取れていなければ変数の値を参照できないことを現す。図12は、2つの変数「osaifu」「log」のリスト構造例を示したものである。以下では、この2つの変数「osaifu」「log」のリスト構造について説明する。
図12に示した変数「osaifu」は、電子マネー残高を格納するための変数である。変数「osaifu」は、変数名(pname)として「osaifu」が指定され、電子マネー残高が格納される値(value)には初期値として0が指定されている。そして変数「osaifu」は、セキュリティ属性として内容更新ロック(M)及び内容読み出しロック(E)が指定されている。これにより、変数「osaifu」の値は、認証鍵で認証が取れていなければ内容の参照及び変更が出来なくなる。
そして、変数「osaifu」には、マスター鍵へのポインタ及び変数「osaifu」にアクセスするためのアクセス鍵のバージョン並びにアクセス鍵へのポインタの情報が格納される。上述したように、マスター鍵は、当該シンボル(ここでは変数「osaifu」)のセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵のことである。図12では、変数「osaifu」にアクセスするためのアクセス鍵のバージョンが1であり、そのアクセス鍵へのポインタの情報が格納されている状態が示されている。
図12に示した変数「log」は、関数の実行結果を格納するための変数である。変数「log」は、変数名(pname)として「log」が指定されている。そして、関数の実行結果を格納するための値(value)はサイクリックな構成となっている。図12に示した構成では、変数「log」は、関数の実行結果が5回分格納される。なお、サイクリックファイルの生成はリスト処理機能に組み込みこまれた関数を利用して設定する。
そして変数「log」は、セキュリティ属性として内容更新ロック(M)及び内容読み出しロック(E)が指定されている。これにより、変数「log」の値は、認証鍵で認証が取れていなければ内容の参照及び変更が出来なくなる。図12では、変数「log」にアクセスするためのアクセス鍵のバージョンが2であり、そのアクセス鍵へのポインタの情報が格納されている状態が示されている。
また、図12に示した「System」は、モジュールの元権限を持つものである。っこの「System」に鍵が設定されていれば、各関数や変数オブジェクトを生成するに当たって、前もって認証されていることが条件となる。一方、「System」に鍵が設定されていなければ、前もって認証されている必要はなく、例えば非接触型ICカードの技術方式の一つであるFelica(登録商標)における、システムコードおよびモジュール情報を保持する変数となる。
次に、本発明の一実施形態にかかる情報処理装置100で実行されるリスト処理モジュールが参照できる、セキュリティ設定された関数のリスト構造例について説明する。図13は、セキュリティ設定された関数のリスト構造例を示す説明図である。
図13は、関数「charge」のリスト構造例を示したものである。以下では、この関数「charge」のリスト構造について説明する。
関数「charge」を定義するためのS式は図13に示した通りである。ここで、S式はLISPで用いられる論理記述方式であり、シンボルを定義するために用いられる。このS式により、関数「charge」は、図12に示した変数「osaifu」の値に、引数xで指定された値を加算する処理を実行するものである。また、このS式は、図12に示した、セキュリティロックがかかっている2つの変数「osaifu」「log」を使用している。
図13に示した「charge」「osaifu」「log」は、セキュリティロックがかかっている関数及び変数であることを示している。従って、関数「charge」を実行するには、セキュリティロックがかかっている関数及び変数の全てにおいて、認証済みであることが要求される。
このように、関数「charge」の実行にはセキュリティロックがかかっている2つの変数「osaifu」「log」についても認証されている必要がある。しかし、関数「charge」を実行する権限を有するものは、権限の移譲により、変数「osaifu」「log」についても値の参照や変更を実行する権限を有しているものと考え、関数「charge」に設定された鍵で認証することで、関数「charge」の実行が可能であり、改めて変数「osaifu」「log」について認証することを要しないものとする。
以上、セキュリティ設定された関数のリスト構造例について説明した。このように、本実施形態にかかる情報処理装置100のCPU120が実行するリスト処理モジュールは、セキュリティロックがかけられている変数の参照及び関数の実行を可能とする。また、情報処理装置100で実行されるリスト処理モジュールに参照される変数や実行される関数は、それぞれ独自にセキュリティ属性を設定して、セキュリティロックをかけることができる。
これにより、情報処理装置100で実行されるリスト処理モジュールが実行するプログラムで使用される変数や関数は、それぞれ独自にセキュリティ設定が可能となり、これにより緻密なセキュリティ実装が可能となる。また、情報処理装置100で実行されるリスト処理モジュールは、インタプリタの基本機能に加えてセキュリティ機能を付加していることで、事前にコンパイルする必要がなく、また、実際に利用される情報処理装置100でデバッグを行うことが可能になる。また、NVM110に動的に変数や関数を直接定義することが可能になり、NVM110に動的に変数や関数を直接定義することで柔軟なプログラム開発が可能になる。また、セキュリティ属性のセットにより、関数実行制限のみならず、関数定義情報の読み出し、変更も制限され、外部からの攻撃による関数定義情報の漏洩や改ざんからプログラムを保護することができる。
セキュリティロックがかかった変数や関数は、それぞれ、対応する認証鍵で認証することで初めて利用することが出来る。そして、関数においては、その関数が内部で利用している引数として使用する、セキュリティロックがかかった変数や関数は、その関数を定義する際に認証されている必要がある。しかし、関数定義後の当該関数の利用においては、内部で利用している引数として用いる変数や関数は無条件で利用可能としているので、関数実行の際に毎回全ての認証鍵を用意して認証する必要がなくなり、運用が容易になる。
具体例を挙げて説明すれば、上記の変数「osaifu」にセキュリティを設定すると、当該変数「osaifu」については、変数「osaifu」に指定された鍵を用いて相互認証された状態でなければ、当該変数「osaifu」に格納された値の読み出し及び変更が行えない。
一方、例えば、変数「osaifu」に格納された値の変更を実行する関数「charge」にセキュリティを設定すると、関数「charge」に指定された鍵を用いて相互認証された状態でなければ、当該関数「charge」を実行することは出来ない。この場合において、関数「charge」の実行について認証されているが、変数「osaifu」に格納された値の読み出し及び変更について認証されていなければ、変数「osaifu」に格納された値の読み出し及び変更を直接実行することは出来ない。このように、変数や関数にそれぞれ独立してセキュリティを設定することで柔軟な運用を可能にするとともに、関数実行の際に、内部で使用されている全ての変数等についての認証鍵を用意して毎回認証する必要が無くなるので、運用が容易になる。
また、情報処理装置100で実行されるリスト処理モジュールが実行するプログラムで使用される変数や関数のセキュリティ機能は、任意の時点で行われるようにしてもよい。従って、開発装置300を用いて開発されたプログラムに対する十分なデバッグが行われた後で、開発装置300において変数や関数に対してセキュリティ機能を実装し、セキュリティ機能が実装された状態でさらなるデバッグが可能になる。
暗号処理モジュール160で暗号化されたバイナリデータは、送信前に印刷可能な文字に変換してやり取りされる。これにより、暗号処理モジュール160で暗号化されたバイナリデータは、他のアプリケーション、例えばウェブアプリケーションなどから操作することが可能になる。
[1−4.情報処理装置の変形例]
次に、本発明の一実施形態にかかる情報処理装置の変形例について説明する。図14は、本発明の一実施形態にかかる情報処理装置の変形例である、情報処理装置1100のハードウェア構成を示す説明図である。以下、図14を用いて、情報処理装置1100のハードウェア構成について説明する。
図2に示した情報処理装置100は、装置全体が耐タンパ性を有していた。図14に示したように、情報処理装置1100は、NVM1110と、セキュアCPU1120と、ROM1130と、RAM1140と、シリアルI/O1180と、を含んで構成される。情報処理装置1100は、装置全体が耐タンパ性を有するのではなく、セキュアCPU1120のみが耐タンパ性を有している点で図2に示した情報処理装置100と異なっている。このように、CPUを含む一部を耐タンパ機能で保護し、その他の機能との通信及び送受信データを暗号化技術で保護する構成を採ることもできる。また例えば、図2に示した情報処理装置100を、耐タンパ環境を有する場所に設けて、変数の参照や関数の属性を実行させるような構成を採ることもできる。
NVM1110は、情報処理装置400の初期化時に、ROM1130に予め書きこまれている組み込み関数が、シンボルとして記録されるものである。また、NVM1110は、ユーザが定義した変数(ユーザ定義変数)や関数(ユーザ定義関数)も記憶されるものである。NVM1110は、電源がオフになっても記憶された情報を保持しておくことができるので、情報処理装置1100の電源が再投入されても再初期化は行われず、登録されているシンボルがそのまま保持される。
セキュアCPU1120は、情報処理装置1100の動作を制御するものであり、ROM1130に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。CPU1120は、オペレーティングシステムの実行に際しては、RAM1140をワークエリアとして用いることができる。ここで、ROM1130に記録されているオペレーティングシステムソフトとしては、例えば、手続き型プログラミング言語を解釈して実行できるものであり、そのようなプログラミング言語として、上述したように例えばLISPやRuby、Python等がある。
そしてセキュアCPU1120は、図2に示した暗号処理モジュール160の機能も有している。セキュアCPU1120は、内部に暗号化鍵を保持しており、ROM1130に書きこまれるプログラムのコードや、NVM1110及びRAM1140に記録されるデータを暗号化したり、上記コードやデータを読み込む際に暗号化されているコードやデータを復号して処理したりする機能を有する。またセキュアCPU1120は、図2に示した乱数発生モジュール170の機能も有しており、乱数発生指示に基づいて、適当な乱数を発生させることができる。
シリアルI/Oインタフェース1180は、外部装置からのシリアルデータをパケットとして認識して、適切なデータを抽出したり、また、情報処理装置1100の内部から外部装置へ出力されるデータをパケットデータとして構成し、シリアルデータとして出力したりする機能を有するものである。
以上、図14を用いて、情報処理装置400のハードウェア構成について説明した。この情報処理装置1100のように、装置全体ではなく、装置の一部分のみが耐タンパ性を有していれば、上述のリスト処理モジュールを、当該耐タンパ性を有する部分に実行させることで、かかる装置は、変数・関数それぞれに対して独立してセキュリティが担保されたプログラムの実行が可能となる。
以上、リスト処理モジュールにセキュリティ属性を付加し、さらに耐タンパ機能で保護することで、セキュアなアプリケーション開発及び実行が容易に実現できる情報処理装置について説明した。ここで、従来のアプリケーション開発モデルと、本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルとの違いについて説明する。
[1−5.アプリケーション開発モデルの比較]
図15は、従来のアプリケーション開発モデルについて示す説明図である。図15を用いて従来のアプリケーション開発モデルについて説明すれば、以下の通りである。まず、ICカードに実行させるプログラムを作成すると、そのプログラムをコンパイラに通してクラスファイルを生成する必要がある。その後、シミュレータを用いて当該クラスファイルのデバッグを行い、バグが存在していれば、作成したプログラムの修正を行う必要がある。
デバッグが完了したクラスファイルは、ライブラリファイルと共にコンバータに通され、ICカード等のICチップが内蔵されたデバイスに実行させるためのアプリケーションファイルが生成される。そして、ICカードの動作環境をエミュレートするカードエミュレータに生成されたアプリケーションファイルを組み込み、カードエミュレータ上でデバッグを行う。この段階でバグが存在していればプログラムの修正、クラスファイルへのコンパイル及びアプリケーションファイルへのコンバートを行う必要がある。
カードエミュレータでのデバッグが完了すると、ようやくICカードにアプリケーションファイルを組み込むことになる。そして、ICカードでのデバッグを行って、この段階でバグが存在していればプログラムの修正、クラスファイルへのコンパイル、アプリケーションファイルへのコンバート及びカードエミュレータでのデバッグを行う必要がある。
このように、従来のアプリケーション開発モデルにおいては、プログラムの作成とデバッグを、複数の段階で繰り返す必要があり、完成したプログラムをICチップ等の耐タンパ環境に実装するまでの工数が多くかかっていた。
図16は、本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルについて示す説明図である。図16を用いて本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルについて説明すれば、以下の通りである。まず、情報処理装置100に実行させるためのプログラムを開発装置300で開発し、そのまま情報処理装置100に組み込む。開発装置300での開発の際には、プログラムで使用する変数や関数にセキュリティを予め設定することもでき、プログラムで使用する変数や関数に対するセキュリティ機能は後から設定することもできる。
プログラムが組み込まれた情報処理装置100は、開発装置300で開発されたプログラムを、耐タンパ環境で実行されるリスト処理モジュールで実行する。その際に、従来のアプリケーション開発モデルで必要であったプログラムのコードの事前コンパイルは必要なく、プログラムを情報処理装置100で直接実行することができる。これにより情報処理装置100は、外部からプログラムのコードやプログラムで使用されるデータを覗き見られることなくセキュアに実行することができる。
そして、情報処理装置100でプログラムを実行させてバグが存在することが明らかになった場合には、開発装置300でプログラムのデバッグを行うが、デバッグに伴う工数の増加は、図15に示した従来のアプリケーション開発モデルに比べると格段に少なく済むのは明らかである。従って、本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルは、従来のアプリケーション開発モデルに比べて、完成したプログラムをICチップ等の耐タンパ環境に実装するまでの開発工数を大幅に削減でき、セキュアなアプリケーション開発を容易に行うことができる。
そして本発明の一実施形態にかかる情報処理システムによるアプリケーション開発モデルには、プログラムを作成する時点であらかじめ変数や関数に対するセキュリティを設定して、情報処理装置100にプログラムを実行させることもできるが、変数や関数に対するセキュリティを設定しない状態で情報処理装置100にプログラムを実行させて、動作に問題が無ければ情報処理装置100にプログラムを組み込み、組み込んだプログラムにセキュリティを設定するような運用にしてもよい。
[1−6.開発装置のハードウェア構成]
次に、図17を参照しながら、本発明の一実施形態に係る開発装置300のハードウェア構成について、詳細に説明する。図17は、本発明の一実施形態に係る開発装置300のハードウェア構成を説明するためのブロック図である。
開発装置300は、主に、CPU901と、ROM903と、RAM905と、ホストバス907と、ブリッジ909と、外部バス911と、インタフェース913と、入力装置915と、出力装置917と、撮像装置918と、ストレージ装置919と、ドライブ921と、接続ポート923と、通信装置925とを備える。
CPU901は、演算処理装置および制御装置として機能し、ROM903、RAM905、ストレージ装置919、またはリムーバブル記録媒体927に記録された各種プログラムに従って、開発装置300内の動作全般またはその一部を制御する。ROM903は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM905は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。これらはCPUバス等の内部バスにより構成されるホストバス907により相互に接続されている。
ホストバス907は、ブリッジ909を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス911に接続されている。
入力装置915は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置915は、例えば、赤外線やその他の電波を利用したリモートコントロール手段(いわゆる、リモコン)であってもよいし、開発装置300の操作に対応した携帯電話やPDA等の外部接続機器929であってもよい。さらに、入力装置915は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU901に出力する入力制御回路などから構成されている。開発装置300のユーザは、この入力装置915を操作することにより、開発装置300に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置917は、例えば、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなど、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置917は、例えば、開発装置300が行った各種処理により得られた結果を出力する。具体的には、表示装置は、開発装置300が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
撮像装置918は、例えばディスプレイ装置の上部に設けられており、開発装置300のユーザの静止画像または動画像を撮影することが出来る。撮像装置918は、例えばCCD(Charge Coupled Device)イメージセンサまたはCMOS(Complementary Metal Oxide Semiconductor)イメージセンサを備えており、レンズで集光した光を電気信号に変換することで静止画像または動画像を撮影することができる。
ストレージ装置919は、開発装置300の記憶部の一例として構成されたデータ格納用の装置であり、例えば、HDD(Hard Disk Drive)等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置919は、CPU901が実行するプログラムや各種データ、および外部から取得した音響信号データや画像信号データなどを格納する。
ドライブ921は、記録媒体用リーダライタであり、開発装置300に内蔵、あるいは外付けされる。ドライブ921は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体927に記録されている情報を読み出して、RAM905に出力する。また、ドライブ921は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体927に記録を書き込むことも可能である。リムーバブル記録媒体927は、例えば、DVDメディア、Blu−rayメディア、コンパクトフラッシュ(登録商標)(CompactFlash:CF)、メモリースティック、または、SDメモリカード(Secure Digital memory card)等である。また、リムーバブル記録媒体927は、例えば、非接触型ICチップを搭載したICカード(Integrated Circuit card)または電子機器等であってもよい。
接続ポート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に音響信号データや画像信号データを提供したりする。
通信装置925は、例えば、通信網931に接続するための通信デバイス等で構成された通信インタフェースである。通信装置925は、例えば、有線または無線LAN(Local Area Network)、Bluetooth、またはWUSB(Wireless USB)用の通信カード、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ、または、各種通信用のモデム等である。この通信装置925は、例えば、インターネットや他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置925に接続される通信網931は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内LAN、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
ユーザは、かかる開発装置300を用いて、情報処理装置100で実行させるコンピュータプログラムを開発することができる。開発装置300を用いて作成されたコンピュータプログラムは、例えば、開発装置300に接続したリーダライタ200を介して情報処理装置100に組み込むことができる。
<2.まとめ>
以上説明したように本発明の一実施形態によれば、情報処理装置100で実行されるリスト処理モジュールを、変数・関数それぞれ独立してセキュリティを設定できるよう構成し、当該リスト処理モジュールを耐タンパ機能で保護することにより、セキュアなアプリケーション開発が容易となる、プログラミングオペレーティングシステムを実現することができる。また、プログラムで使用する変数や関数はそれぞれ独自にセキュリティ設定が可能であるので、緻密なセキュリティの実装を容易に実現することができる。
上記リスト処理モジュールは、インタプリタの基本機能を備え、さらにセキュリティ機能を付加することで、情報処理装置100にプログラムを実行させる際には、事前のコンパイルの必要がなく、プログラムの実行に利用するICチップそのものデバッグを実行することが可能である。従って、従来のアプリケーション開発モデルに比べて、開発ステップが少なく、短期間でのアプリケーション開発が可能となる。また、情報処理装置100の内部に設けられる不揮発性メモリに、動的に変数や関数を直接定義することが可能であり、柔軟なアプリケーション開発も可能となる。
本発明の一実施形態にかかる情報処理装置100で実行するアプリケーションで使用される、セキュリティロックのかかった変数や関数は、それぞれ設定された認証鍵で認証して初めて利用可能となる。そのため、関数定義においてその関数が引数として利用するセキュリティロックのかかった変数、関数は、関数定義時に認証されている必要がある。しかし、関数定義後のその関数の利用においては、定義した関数のセキュリティ認証のみを行うことで、内部で利用している引数として用いる変数、関数は無条件に利用可能とすることができる。これにより、毎回全ての認証鍵を用意して認証する必要が無くなり、アプリケーションの運用を容易にすることができる。
スクリプト言語はアプリケーションをダウンロードした後で、容易にプログラムの書き換えが出来ることが特徴となっているが、これがオープンプラットフォームでは改ざんの脅威になっている。本発明の一実施形態にかかる情報処理装置100の構成は、そのプログラムの改ざんも防ぐことが可能となる。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
100 情報処理装置
110 NVM
120 CPU
130 ROM
140 RAM
150 BASE64モジュール
160 暗号処理モジュール
170 乱数発生モジュール
180 シリアルI/Oインタフェース
200 リーダライタ
300 開発装置

Claims (13)

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

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011027652A JP5704951B2 (ja) 2011-02-10 2011-02-10 情報処理装置、情報処理方法及びコンピュータプログラム
CN201210020096.9A CN102682244B (zh) 2011-02-10 2012-01-21 信息处理设备和程序执行方法
US13/360,933 US8819458B2 (en) 2011-02-10 2012-01-30 Information processing apparatus, program execution method, and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011027652A JP5704951B2 (ja) 2011-02-10 2011-02-10 情報処理装置、情報処理方法及びコンピュータプログラム

Publications (3)

Publication Number Publication Date
JP2012168645A JP2012168645A (ja) 2012-09-06
JP2012168645A5 JP2012168645A5 (ja) 2014-03-06
JP5704951B2 true JP5704951B2 (ja) 2015-04-22

Family

ID=46637829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011027652A Expired - Fee Related JP5704951B2 (ja) 2011-02-10 2011-02-10 情報処理装置、情報処理方法及びコンピュータプログラム

Country Status (3)

Country Link
US (1) US8819458B2 (ja)
JP (1) JP5704951B2 (ja)
CN (1) CN102682244B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5772316B2 (ja) * 2011-07-08 2015-09-02 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
WO2013150872A1 (ja) * 2012-04-06 2013-10-10 ソニー株式会社 情報処理装置、情報処理方法およびコンピュータプログラム
JP2015115634A (ja) * 2013-12-09 2015-06-22 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
EP3082034A1 (en) * 2015-04-17 2016-10-19 Gemalto Sa Method for modifying the execution of a platform-independent method of an integrated circuit card
US11546347B2 (en) * 2017-09-25 2023-01-03 Sony Corporation Verification apparatus, information processing method, and program
AU2019270715B2 (en) * 2018-05-17 2021-08-26 Nippon Telegraph And Telephone Corporation Secure cross tabulation system, secure computation apparatus, secure cross tabulation method, and program

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH087709B2 (ja) * 1989-05-15 1996-01-29 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン アクセス特権制御方法及びシステム
JPH05210498A (ja) * 1991-12-13 1993-08-20 Nec Corp プログラム変更通知によるプログラム管理方式
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6282652B1 (en) * 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
JP2001184472A (ja) 1999-12-27 2001-07-06 Hitachi Ltd アプリケーションプログラムの供給方法、スマートカード、スクリプト供給方法、端末装置およびアプリケーションプログラムを有する記憶媒体
JP2002117381A (ja) * 2000-10-05 2002-04-19 Dainippon Printing Co Ltd Icカード
DE10314189B4 (de) * 2003-03-28 2006-05-11 Infineon Technologies Ag Verfahren und Vorrichtung zur Kalibrierung eines gewichteten Netzwerks
US7827223B2 (en) * 2004-04-22 2010-11-02 Fortress Gb Ltd. Accelerated throughput synchronized word stream cipher, message authenticator and zero-knowledge output random number generator
JP4802539B2 (ja) * 2005-04-11 2011-10-26 ソニー株式会社 通信システム、通信装置、および通信方法
JP4372061B2 (ja) * 2005-07-01 2009-11-25 パナソニック株式会社 機密情報実装システム及びlsi
JP4524656B2 (ja) * 2005-08-04 2010-08-18 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP4582411B2 (ja) * 2005-08-04 2010-11-17 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP4687424B2 (ja) * 2005-11-25 2011-05-25 ソニー株式会社 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
JP4607747B2 (ja) * 2005-11-30 2011-01-05 株式会社エヌ・ティ・ティ・ドコモ 個別通信システム、個別通信方法
AU2006324920B2 (en) * 2005-12-14 2010-08-12 Nds Limited Method and system for usage of block cipher encryption
US7668608B2 (en) * 2006-09-01 2010-02-23 Fisher-Rosemount Systems, Inc. Graphical programming language object editing and reporting tool
JP4959425B2 (ja) * 2007-06-04 2012-06-20 株式会社リコー 情報処理装置、プログラムおよび情報処理方法
DE102007052656B4 (de) * 2007-11-05 2010-03-25 Texas Instruments Deutschland Gmbh Digital-Verschlüsselungs-Hardware-Beschleuniger
JP4631935B2 (ja) * 2008-06-06 2011-02-16 ソニー株式会社 情報処理装置、情報処理方法、プログラム及び通信システム
JP5120207B2 (ja) * 2008-10-29 2013-01-16 富士通株式会社 ロールベースアクセス制御方法、プログラム及びコンピュータ
US8867747B2 (en) * 2009-03-31 2014-10-21 Cisco Technology, Inc. Key generation for networks
EP2460310B1 (en) * 2009-07-28 2014-06-25 Telecom Italia S.p.A. Symmetric-key encryption method and cryptographic system employing the method
KR101012872B1 (ko) * 2009-09-16 2011-02-08 주식회사 팬택 플랫폼 보안 장치 및 방법
CA2795512A1 (en) * 2010-04-02 2011-10-06 Digimarc Corporation Video methods and arrangements
WO2011144961A1 (en) * 2010-05-20 2011-11-24 Hewlett - Packard Development Company, L.P. Systems and methods for activation of applications using client- specific data.
US9378008B2 (en) * 2010-12-20 2016-06-28 Oracle International Corporation Method and system for creating, applying, and removing a software fix

Also Published As

Publication number Publication date
JP2012168645A (ja) 2012-09-06
CN102682244A (zh) 2012-09-19
CN102682244B (zh) 2016-12-07
US20120210141A1 (en) 2012-08-16
US8819458B2 (en) 2014-08-26

Similar Documents

Publication Publication Date Title
JP5704951B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
US10009173B2 (en) System, device, and method of secure entry and handling of passwords
CN105408912B (zh) 处理认证和资源许可
Bortolozzo et al. Attacking and fixing PKCS# 11 security tokens
CN105706048A (zh) 使用硬件信任根的媒体客户端装置鉴权
JP5171907B2 (ja) 情報処理装置、情報処理プログラム
CN104156677B (zh) 一种基于fpga的硬盘加密、解密***
CN109977702A (zh) 一种基于ds2432芯片的fpga设备加密认证***和方法
CN107832589A (zh) 软件版权保护方法及其***
Prada-Delgado et al. Physical unclonable keys for smart lock systems using Bluetooth Low Energy
Ozkan et al. Security analysis of mobile authenticator applications
Wang et al. {ProFactory}: Improving {IoT} Security via Formalized Protocol Customization
JP5962671B2 (ja) 情報処理装置、情報処理方法およびコンピュータプログラム
JP5772316B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP6024743B2 (ja) 情報処理装置、情報処理方法およびコンピュータプログラム
Raj et al. SSEL: An Extensible Specification Language for SoC Security
Yoo et al. Software architecture of JTAG security system
Ganapathy et al. Automatic discovery of API-level vulnerabilities
Zheng A Case Study on the Security of Wearable Fitness Trackers
Brunner Formal Verification and Modelling of the Gen-Z Specification
Ribeiro HCE Mobile Ticketing
Rubiolo A security service provider for applications based on the SEcube™ Platform
Moustafa Remote Attestation for Constrained Relying Parties
CHEBOR A SERIAL NUMBER BASED AUTHENTICATION MODEL FOR A COMPUTER IN A WIRELESS LOCAL AREA NETWORK
Zamfir et al. Extending Linux controllability of Bluetooth Low Energy devices in the IoT

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140122

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150224

R150 Certificate of patent or registration of utility model

Ref document number: 5704951

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees