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

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

Info

Publication number
JP5772316B2
JP5772316B2 JP2011152105A JP2011152105A JP5772316B2 JP 5772316 B2 JP5772316 B2 JP 5772316B2 JP 2011152105 A JP2011152105 A JP 2011152105A JP 2011152105 A JP2011152105 A JP 2011152105A JP 5772316 B2 JP5772316 B2 JP 5772316B2
Authority
JP
Japan
Prior art keywords
backup
program
information processing
unit
program execution
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
JP2011152105A
Other languages
English (en)
Other versions
JP2013020373A (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 JP2011152105A priority Critical patent/JP5772316B2/ja
Priority to PCT/JP2012/066721 priority patent/WO2013008650A1/ja
Priority to CN201280032541.1A priority patent/CN103635879B/zh
Priority to US14/130,023 priority patent/US9262128B2/en
Priority to EP12811876.7A priority patent/EP2731007A4/en
Publication of JP2013020373A publication Critical patent/JP2013020373A/ja
Application granted granted Critical
Publication of JP5772316B2 publication Critical patent/JP5772316B2/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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本開示は、情報処理装置、情報処理方法及びコンピュータプログラムに関する。
LISPやRuby、Python等の手続き型プログラミング言語では、変数や関数の定義情報がプログラムの実行時に読み込まれて、読み込まれた関数定義や変数の値に基づいてプログラムが実行される。このような手続き型プログラミング言語を解釈して実行するソフトウェアは、起動時に、毎回手続き型プログラミング言語で記述されたアプリケーションプログラムを読み込み、その後は読み込んだアプリケーションプログラムに従って、入力データを処理し、また処理結果を出力する。
手続き型プログラミング言語を解釈して実行するソフトウェアの特徴としては、定義した変数名を入力すると、その変数の内容を読み出すことができ、また定義した関数を読み出す関数を入力すると、その関数コードを出力することができる。
特表2011−513824号公報 国際公開第2005/121976号公報
手続き型プログラミング言語を解釈して実行するソフトウェアの特徴として、定義した変数名を入力すると、その変数の内容が読み出せて、また、定義した関数を読み出す関数を入力すると、その関数コードを出力する手段を持っている。しかし、その出力された情報をそのまま入力しても、当該ソフトウェアは、元の定義式と同様な解釈は出来なかった。
また、プログラムを作成するには、通常、プログラムを編集するための編集プログラムを起動してプログラムのソースコードを記述し、プログラムのソースコードが記述されたファイルを作成する。その後、ソースコードを解釈するための処理プログラムを起動してプログラムを実行し、プログラムを修正する必要があれば、また編集プログラムを利用した編集を繰り返す。このように、プログラムを実際に利用することができるまでには、編集と修正を繰り返すという複数のステップが必要である。
そこで、本開示は、上記問題に鑑みてなされたものであり、本開示の目的とするところは、手続き型プログラミング言語の開発を容易に実施することが可能な、新規かつ改良された情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
本開示によれば、手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部と、前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップ部と、を備える、情報処理装置が提供される。
本開示によれば、プログラム実行部は、手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行する。そして、バックアップ部は、前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成する。これにより、コードに基づいてプログラム実行部によりプログラムが実行されている際に、直接変数定義及び関数定義を修正し、これらの定義のバックアップの作成が可能となり、コードの再読み込みも迅速となることから、手続き型プログラミング言語の開発を容易に実施することが可能となる。
また、本開示によれば、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、を備える、情報処理方法が提供される。
また、本開示によれば、コンピュータに、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、を実行させる、コンピュータプログラムが提供される。
以上説明したように本開示によれば、手続き型プログラミング言語の開発を容易に実施することが可能な、新規かつ改良された情報処理装置、情報処理方法及びコンピュータプログラムを提供することができる。
従来のプログラム開発モデルの流れについて示す説明図である。 本開示の一実施形態にかかる情報処理システム10の機能構成を示す説明図である。 リスト処理モジュールが定義できる、シンボルと呼ぶデータ構造を示す説明図である。 リスト構造を構成するためのコンスセル410の構成例を示す説明図である。 シンボル400の名前領域401に格納される名前を格納するための名前格納テーブル420の構造例を示す説明図である。 認証鍵を格納する認証鍵テーブル430の構造例を示す説明図である。 図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとの対応関係を示す説明図である。 本開示の一実施形態にかかるCPU110の機能構成を示す説明図である。 本開示の一実施形態にかかる情報処理装置100の動作を示す流れ図である。 内部表現の一例を示す説明図である。 内部表現の一例を示す説明図である。 内部表現の一例を示す説明図である。 本開示の一実施形態にかかる情報処理装置100によるプログラム開発モデルを示す説明図である。 本開示の一実施形態にかかる情報処理システム10’の機能構成を示す説明図である。 本開示の一実施形態にかかる情報処理装置100のハードウェア構成を示す説明図である。
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
<1.従来のプログラム開発モデル>
<2.本開示の一実施形態>
[2−1.情報処理システムの機能構成]
[2−2.プログラム構造例]
[2−3.情報処理装置の動作]
[2−4.変形例]
[2−5.情報処理装置のハードウェア構成]
<3.まとめ>
<1.従来のプログラム開発モデル>
まず、本開示の好適な実施の形態について詳細に説明する前に、従来のプログラム開発モデルとその問題点について説明する。図1は、本開示者が特願2011−027625において開示した技術に基づいて行われる、従来のプログラム開発モデルの流れについて示す説明図である。以下、図1を用いて従来のプログラム開発モデルの流れについて説明する。
まず、プログラムのソースコードを作成するためには、ソースコードの作成者が、ソースコードを編集するためのエディタを起動し(ステップS11)、起動したエディタを用いてソースコードが記述されるプログラムファイル1を編集する(ステップS12)。エディタを用いた、ソースコードの作成者によるプログラムファイル1の編集が完了すると、ソースコードの作成者によってエディタが終了される(ステップS13)。
ソースコードの作成者により、ソースコードが記述されたプログラムファイル1が作成されると、プログラムファイル1に記述されたソースコードは、ソースコードを解釈するプログラム(スクリプト)によって解釈されて、当該ソースコードに基づいた処理が実行される。スクリプトが起動されると(ステップS21)、当該スクリプトは、プログラムファイル1を読み込み(ステップS22)、プログラムファイル1に記述されている変数を設定するとともに、変数を使用するための鍵の設定を行う(ステップS23)。この変数の設定や鍵の設定は、本開示者が特願2011−027625において開示した技術に基づくものである。
スクリプトによってプログラムが読み込まれ、変数の設定や鍵の設定がなされると、プログラムはデバッグされる(ステップS24)。デバッグの結果、プログラムの変更が必要かどうか判断され(ステップS25)、プログラムの変更が必要であると判断されれば、再びソースコードの作成者による、ソースコードが記述されるプログラムファイル1の編集に戻る。一方、プログラムの変更は必要ないと判断されれば、プログラムはそのまま利用される(ステップS26)。そして、プログラムの利用を終了するために、スクリプトは終了される(ステップS27)。
従来は、このようにソースコードの編集と、プログラムのデバッグとを繰り返すことでプログラムの開発が行われてきた。しかし、このようなプログラム開発モデルでは、プログラムファイル1がスクリプトに読み込まれた状態でのデバッグを行うことができず、ソースコードを修正するにはまたエディタを起動して、そのエディタによるソースコードの編集に戻らなければいけない。従って、従来のプログラム開発モデルでは、迅速なデバッグが行えなかった。また、プログラムに機能を追加しようとしても、同様にソースコードの編集に戻らなければならず、逐次追記型のプログラム開発は不可能であった。
また、一度ソースコードをスクリプトに読み込ませると、元の定義に戻すことが出来ないという問題もあった。例えば、Lisp系統のスクリプト言語であるSchemeの場合、変数の値を定義する「define」を用いて(define a 123)と変数aの値を定義する場合を考える。この場合、上記ソースコード「(define a 123)」を読み込ませた後に、変数aの値を参照するために「a」が入力されると、変数aに格納された値「123」が返される。しかし、一度ソースコードを読み込ませた後は、変数aとその値とから変数aの定義式に戻そうとしても、元の定義式である(define a 123)に戻すことが出来ない。
同様に関数の場合は、例えば、(define (add3 x)(+ x 3))として関数「add3」を定義することができるが、コード読み出し関数を入力しても、元の定義式にはならない。例えば関数の場合、Schemeのデータとしてプログラムコードを取得できる「get−closure−code」という命令があるが、この命令を実行しても、上記関数「add3」は、(get−closure−code add3)=>(lambda (x) (+ x 3))となり、上述した元の定義式とは異なる定義式が取得されてしまう。
また、本開示者が特願2011−027625において開示した技術によるシステムでは、プログラムはいつでも部分的に修正が可能であり、またプログラムのソースコードや内部変数の値も自由に読み出すことが可能である。本開示者が特願2011−027625において開示した技術では、耐タンパ性を有するICチップ内に、セキュリティフラグ、暗号化通信手段、及び不揮発性メモリでセキュリティ対策を講じている。しかし、大規模システムでは、大容量の不揮発性メモリは高価であり、よりコストをかけずにセキュリティ対策を講じる必要性が求められる。
しかし、上記技術において、スクリプトを解釈して実行するソフトウェアは、起動の度に毎回スクリプトプログラムを読み込み、スクリプトの内容を解釈して内部表現に置き換え、その後、秘密鍵を含む多くのセキュリティ設定を行うステップが必要となる。そのため、起動後の手順が複雑となり、また読み込ませるスクリプトプログラムや秘密鍵を厳重に管理する必要があるといった懸念がある。
例えば特許文献2に開示されているように、装置の内部情報を暗号化して保存する技術が開発されている。しかし、この技術では、プログラムデータは不揮発性メモリを用いて装置内部に保存しているが、プログラム動作による結果データの保存に限定されていて、動的にプログラムが変わることを想定していない。従ってこの技術では、不揮発性メモリにプログラムを保存する構造を持たない構成における上述した問題を解決できない。
そこで、以下で説明する本開示の一実施形態では、一度ソースコードをスクリプトに読み込ませ、さらにソースコードに変更を加えた後であっても、最新のソースコードを書き戻すことが出来る技術について説明する。さらに、起動後の手順を簡素化することで、本開示者が特願2011−027625において開示した技術に比べ、プログラムの再起動を高速にすることができる技術についても説明する。
<2.本開示の一実施形態>
[2−1.情報処理システムの機能構成]
まず、本開示の一実施形態にかかる情報処理システムの機能構成について説明する。図2は、本開示の一実施形態にかかる情報処理システム10の機能構成を示す説明図である。以下、図2を用いて本開示の一実施形態にかかる情報処理システム10の機能構成について説明する。
図2に示したように、本開示の一実施形態にかかる情報処理システム10は、プログラムを実行する情報処理装置100と、NVRAM(Non Volatile Rondom Access Memory)150と、入力部160と、表示部170と、外部記憶装置180と、を含んで構成される。
情報処理装置100は、手続き型プログラミング言語を解釈して実行することができるよう構成されているものであり、そのようなプログラミング言語として、例えばLISP、Scheme、Ruby、Python等がある。
図2に示したように、情報処理装置100は、CPU(Central Prosessing Unit)110と、暗号化/復号部120と、ROM130と、RAM140と、を含んで構成される。
CPU110は、情報処理装置100の動作を制御するものであり、ROM130に予め記録されているオペレーティングシステムソフトの読み出し命令を実行することで、当該オペレーティングシステムを実行することができる。CPU110は、オペレーティングシステムの実行に際しては、RAM140をワークエリアとして用いることができる。ここで、ROM130に記録されているオペレーティングシステムソフトとしては、例えば、上述したような手続き型プログラミング言語を解釈して実行できるものである。なお本開示においては、外部記憶装置180から手続き型プログラムを読み込み実行する形でも良い。
本実施形態にかかる情報処理装置100のROM130から読み込まれるプログラムは、インタプリタとして処理する上記手続き型プログラミング言語の基本機能に加え、セキュリティ機能が付加されたものが格納される。これにより、情報処理装置100にアプリケーションプログラムを組み込む際に、事前にコンパイルする必要がなく、またセキュリティ機能が付加されているので、アプリケーションが利用される情報処理装置100そのものでデバッグが可能となる。従って、開発ステップの短縮に繋がって、短期間でのアプリケーションプログラムの開発が可能となる。
暗号化/復号部120は、入力されてくるデータに対して、指定された鍵を用いて暗号化処理を施して出力したり、入力されてくる暗号化データに対して、指定された鍵を用いて復号処理を施して出力したりするものである。本実施形態では、ソースコードを外部記憶装置180に保存する際にソースコードを暗号化したり、暗号化された状態で外部記憶装置180に記憶されているソースコードを復号したりするものである。暗号化/復号部120がソースコードの暗号化及び復号に用いる鍵は、NVRAM150に格納される。
入力部160は、情報処理装置100に接続され、情報処理装置100に対するユーザの入力操作を受け付けるものである。入力部160は、例えばキーボードやマウス、タッチパネル等で構成されていてもよい。また表示部170は、情報処理装置100に接続され、情報処理装置100のCPU110における情報処理結果を、CPU110の処理に基づいて表示するものである。表示部170は、例えば液晶ディスプレイ、有機ELディスプレイその他の平板表示装置で構成されていてもよい。
外部記憶装置180は、情報処理装置100に接続され、情報処理装置100に用いられる各種データは格納するものである。表示部170は、例えばハードディスクで構成されていてもよい。
本実施形態では、外部記憶装置180には、手続き型プログラミング言語を解釈して実行することができるスクリプト解釈実行モジュール(「リスト処理モジュール」とも称する)と、そのスクリプト解釈実行モジュールが読み込んで実行するソースコードが格納される。このソースコードは、暗号化/復号部120で暗号化された状態で格納される。暗号化/復号部120で暗号化された状態でソースコードが外部記憶装置180に記憶されることで、ソースコードの機密性を高めることが可能になる。
なお、図2では、NVRAM150と、入力部160と、表示部170とは、情報処理装置100の外部に設けられているように図示されているが、本開示はかかる例に限定されるものではない。すなわち、NVRAM150、入力部160、表示部170の少なくともいずれかは情報処理装置100の内部に設けられる構成を有していてもよい。以上、図2を用いて、本発明の一実施形態にかかる情報処理装置100のハードウェア構成について説明した。次に、図2に示した情報処理装置100で実行される、コンピュータプログラムの構造について説明する。
[2−2.プログラム構造例]
図3〜図6は、本発明の一実施形態にかかる情報処理装置100で実行される、コンピュータプログラムの構造例を示す説明図である。以下、図3〜図6を用いて、本発明の一実施形態にかかる情報処理装置100で実行される、コンピュータプログラムの構造例について説明する。
なお、以下においては、情報処理装置100で実行されるコンピュータプログラムの言語として、特に断りが無ければLISPを前提として説明するが、本開示においては、プログラミング言語として使用可能である言語はかかる例に限定されず、拡張機能または標準機能において、変数毎及び関数毎にそれぞれ独立してセキュリティが設定できるように構成することが可能な、手続き型のプログラミング言語であればいかなるものであっても良い。
CPU120は、コンピュータプログラムの実行に際しては、情報処理装置100で開発され、情報処理装置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」が格納される領域である。
図7は、図3に示したシンボルと、図4に示したコンスセルと、図5に示した名前格納テーブルと、図6に示した認証鍵テーブルとの対応関係を示す説明図である。上述したように、シンボルは、印刷可能な名前のテーブルを指し示す領域と、値若しくは値のリストを指し示す領域と、関数属性と、セキュリティ属性とを持つ。関数属性は、関数のタイプ及びその関数の実態を指し示すポインタを持ち、セキュリティ属性は、セキュリティフラグと、鍵バージョンと、鍵を指し示すポインタとを持つ。なお、図7では、図6に示した認証鍵テーブル430において、符号431で示した鍵「key1」及び符号432で示した鍵「key2」が使用される様子が図示されている。
このように、リスト処理モジュールの一般的構造はシンボルと呼ばれ、数値若しくは数値を保持したリストへのポインタと、関数定義であれば関数へのポインタと、印刷可能な文字列を格納したテーブルを指し示すポインタと、で構成されている
そして本実施形態では、これに加えて、セキュリティ属性と2種類の暗号化鍵情報を保持するテーブルへのポインタをシンボルに付加している。一方の鍵へのポインタはマスター鍵を指し、もう一方の鍵へのポインタは、当該シンボルのアクセス鍵(認証鍵)を指している。マスター鍵は当該シンボルのセキュリティ属性やアクセス鍵を変更する場合に、前もって相互認証機能により認証されているべき鍵を指している。シンボルに保持した情報の内容評価、内容変更、関数実行においてそのシンボルに設定されたセキュリティフラグが立っている場合は、シンボルに付加された一方の鍵で認証してあることがそのシンボル利用の条件となる。もう一方の鍵は、当該シンボルの鍵を変更する場合に、その権限を確認する権限認証鍵を示している。アクセス情報の変更には、その権限認証鍵で認証された状態でなければならない。
また、図4に示したような、コンスセルと呼ばれる、シンボルとシンボルの関係を表す2組のポインタがあり。それぞれのポインタは、シンボル又は他のシンボルを指すコンスセルを指し示す構造となっている。
組み込み関数はROM130に書き込まれており、情報処理装置100の最初の電源投入で、ROM130に書き込まれている組み込み関数を、RAM140に作成したシンボルに定義する。その後の電源投入では、既に登録済みのシンボルは初期化されない。
上記の構成は、ユーザにより新たな関数が登録される場合においても、同様に機能する構造となっている。
CPU110が実行するリスト処理モジュールは、シンボルを自由に登録し、そのシンボルに数値やリスト、関数を自由に登録できる構成となっている。そして、登録されるシンボルにセキュリティ機能を生かすために、そのシンボルに暗号鍵とアクセスフラグを登録しておく。CPU110が実行するリスト処理モジュールには、システム鍵と呼ぶ暗号化鍵が最初に設定されている。そのシステム鍵で相互認証されたモードになっている状態(以下の説明のモード2に該当する状態)でのみ、新たに登録されたシンボルは、そのシンボル独自の鍵とアクセスフラグが設定されることができる。また、CPU110が実行するリスト処理モジュールで実行されるコンピュータプログラムは、システム鍵で相互認証されたモードになっている状態に限り、使用される変数や関数の定義を変更可能な構成となっている。
CPU110が実行するリスト処理モジュールは、関数シンボルの登録に際しては、その関数で利用するシンボルの全ての鍵で認証済みであることが登録条件となっている。そしてその後、リスト処理モジュールは、その登録された関数を利用する場合は、単にその関数実行鍵で認証されていれば良い構造になっている。
以上、図2に示した情報処理装置100で実行される、コンピュータプログラムの構造について説明した。次に、情報処理装置100のCPU110の機能構成について説明する。
図8は、情報処理装置100に含まれるCPU110の機能構成を示す説明図である。以下、図8を用いてCPU110の機能構成について説明する。
図8に示したように、CPU110は、プログラム実行部112と、バックアップ部114と、リストア部116と、を含んで構成される。本開示の一実施形態にかかるCPU110は、例えば、CPU110は、ROM130に格納されているコンピュータプログラムを読みだして実行することで、図8に示したような機能構成を有することができる。
プログラム実行部112は、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行する。本実施形態では、プログラム実行部112は、上述したリスト処理モジュールの機能を備えており、外部記憶装置180に記憶されたソースコードを読み込んで、そのソースコードを解釈することで、ソースコードに記述された内容を実行することができる。
バックアップ部114は、プログラム実行部112が実行中のコンピュータプログラムの変数定義及び関数定義を、上記手続き型言語によるコードとして解釈可能な形式で外部記憶装置180にバックアップする。Lisp系統のスクリプト言語であるSchemeにおいて、例えば、変数の値を定義する「define」を用いて(define a 123)というS式で変数aの値を定義した場合、バックアップ部114は、この変数aの変数定義を(define a 123)というS式でバックアップする。また例えば、(define (add3 x)(+ x 3))いうS式で関数「add3」を定義した場合、バックアップ部114は、この関数「add3」の関数定義を、(define (add3 x)(+ x 3))というS式でバックアップする。なお、バックアップ部114は、コンピュータプログラムの変数定義及び関数定義のバックアップに際し、暗号化/復号部120を用いて暗号化してもよい。
リストア部116は、バックアップ部114がバックアップしたデータを読み込んでリストアする。バックアップ部114が、コンピュータプログラムの変数定義及び関数定義のバックアップに際し、暗号化/復号部120を用いて暗号化していた場合は、リストア部116は、暗号化/復号部120を用いて、読み込んだデータを復号してリストアしてもよい。
このような構成を有することで、CPU110は、手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するとともに、実行中のコードの変数定義及び関数定義を、その手続き型言語がそのまま解釈できる形式でバックアップすることができる。かかる構成を有することにより、従来のコンピュータプログラムの開発ステップと比較して、情報処理装置100における手続き型言語によるコンピュータプログラムの開発ステップを削減することができる。以上、情報処理装置100のCPU110の機能構成について説明した。次に、図2に示した情報処理装置100の動作について説明する。
[2−3.情報処理装置の動作]
図10は、本開示の一実施形態にかかる情報処理装置100の動作を示す流れ図である。図10に示した流れ図は、情報処理装置100の電源が投入され、情報処理装置100でリスト処理モジュールが実行される場合の情報処理装置100の動作について示したものである。以下、図10を用いて本開示の一実施形態にかかる情報処理装置100の動作について説明する。
情報処理装置100の電源が投入されると、CPU110のプログラム実行部112が、スクリプト解釈実行モジュールを、ROM130から読み込む(ステップS101)。ステップS101において、スクリプト解釈実行モジュールがCPU110のプログラム実行部112によってROM130から読み込まれると、続いてCPU110のプログラム実行部112は、ソースコードのバックアップデータが外部記憶装置180に存在するかどうかを確認する(ステップS102)。
上記ステップS102の判断の結果、ソースコードのバックアップデータが外部記憶装置180に存在していれば、スクリプト解釈実行モジュールを読み込んだCPU110のプログラム実行部112は、ソースコードのバックアップデータを外部記憶装置180から読み込む(ステップS103)。ソースコードのバックアップデータが、NVRAM150に格納されている鍵で暗号化されている場合は、スクリプト解釈実行モジュールを読み込んだCPU110は、バックアップデータを、そのNVRAM150に格納されている鍵を用いてリストア部116で復号して、プログラム実行部112でスクリプト言語として読み込む(ステップS103)。バックアップデータをスクリプト言語として読み込んだスクリプト解釈実行モジュールは、表示部170に入力待ち記号を出力し、ソースコードの編集者からの入力待ち状態となる。
スクリプト解釈実行モジュールは、外部記憶装置180から読み込んだソースコードを読み込むことで、ソースコードに記述された変数や関数の定義、及び変数や関数に規定された鍵の情報を読み込んで、プログラムを実行することが出来る。
上記ステップS103でソースコードのバックアップデータが外部記憶装置180から読み込まれた後は、ソースコードの編集者によってソースコードの変更が行われてもよい(ステップS104)。ソースコードの編集者によって、入力部160から入力されたスクリプト言語は、インタプリタがそのまま解釈できる外部記述形式から、インタプリタで解釈された後にスクリプト解釈実行モジュールが解釈できる内部記述形式に解釈されてRAM140に記録される。なお、上記ステップS102の判断の結果、ソースコードのバックアップデータが外部記憶装置180に存在していなければ、ソースコードの編集者によってソースコードが新規に作成される(ステップS104)。
その後は、ソースコードの編集者によって、READ−EVAL−PRINTループによるプログラムの実行が、情報処理装置100を用いて行われる(ステップS105)。
ソースコードの編集者によるプログラム作成が行われている際に、スクリプト解釈実行モジュールを読み込んだCPU110のプログラム実行部112は、ソースコードの編集者からバックアップ指示があるかどうかを常に判断する(ステップS106)。このバックアップ指示は、例えば、ソースコードの編集者が入力部160を操作してバックアップ用のコマンドを入力することによってなされるようにしてもよい。
ソースコードの編集者からバックアップ指示があれば、スクリプト解釈実行モジュールを読み込んだCPU110のバックアップ部114は、図3から図6に示した、Symbolテーブル、Codeテーブル、名前テーブル、鍵テーブルの内容を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述形式に逆変換する。バックアップ部114は、逆変換したデータを、NVRAM150に格納されている鍵で暗号化して暗号化されたバックアップデータとして出力し、外部記憶装置180に格納する(ステップS107)。
ここで、本実施形態のバックアップ部114によるソースコードのバックアップの一例を示す。Lisp系統のスクリプト言語であるSchemeにおいて、例えば関数定義のためのS式を、(define (add3 x)(+ x 3))とした場合、内部表現は図10Aに示したような構造となる。従って、バックアップ部114は、この関数「add3」をバックアップする際には、図10Aに示した内部表現に基づいて、関数定義が上記のS式(define (add3 x)(+ x 3))と一致するようバックアップする。
また例えば、変数定義のためのS式を、(define a 123)とした場合、内部表現は図10Bに示したような構造となる。ここで、この変数「a」の変数値を変更する場合を考える。例えば、変数「a」の変数値を変更するためのS式が(set! a 234)と情報処理装置100に入力されると、変数「a」の値は「234」に変更され、また内部表現は図10Cに示したような構造となる。
ここで、バックアップ部114が変数「a」の定義に逆変換すると、図10Cに示した内部表現に基づいて、(define a 234)というS式が得られることになる。このように、バックアップ部114は、バックアップの際に、バックアップ時点での変数の値から変数定義のためのS式を取得することができる。これは、上述した関数定義のバックアップについても同様であり、スクリプト解釈実行モジュールに関数定義が読み込まれた後、編集者によって関数定義が変更されると、バックアップ部114は、その変更された状態での、関数定義のためのS式を取得することができる。
このように、ソースコードの編集者からバックアップ指示を受けて、指示を受けた状態をバックアップすることで、例えばシステムを一旦停止させて、その後システムを再起動する場合に、システムの起動回復が用意となる。また、プログラムのソースコードを知りたければ、Scheme等に組み込まれた関数(read−closure−code)またはバックアップのための関数で読み出すことが可能なため、情報処理装置100の内部にソースコードを保持する必要も無く、またソースコードの管理も不要となる。
図11は、本開示の一実施形態にかかる情報処理装置100によるプログラム開発モデルを示す説明図である。本開示の一実施形態にかかる情報処理装置100では、CPU110のプログラム実行部112によって読み込まれて実行されるスクリプト解釈実行モジュールが、外部記憶装置180に記憶されているソースコードのバックアップデータを、起動時に読み込み、そのバックアップデータが暗号化されていれば所定の鍵を用いて復号する。ソースコードの編集者は、プログラムのソースコードや関数の実行指令を、入力部160を用いて入力し、スクリプト解釈実行モジュールは、その結果を表示部170に出力する。
そして、ソースコードの編集者が、入力部160を用いてバックアップ指示を入力すると、スクリプト解釈実行モジュールは、バックアップ指示があった時点の状態を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述に逆変換することでバックアップする。バックアップに際しては、CPU110のバックアップ部114は、所定の鍵を用いて暗号化してもよい。
このように、プログラムのバックアップ機能をスクリプト解釈実行モジュールに用意することで、逐次追記型のプログラム開発が可能となる。これにより、たとえシステムの規模が大きくなったとしても、安全に、かつ、プログラムを成長させ利用できるスクリプト実行処理環境を提供できる。このような逐次追記型のプログラム開発モデルは、図1に示した従来のプログラム開発モデルに比べて作業工程が大きく削減されていることが分かる。
バックアップされたデータはそのままスクリプト解釈実行モジュールが通常のスクリプトを受け付けるのと同様なフォーマットで記述されている。従って、バックアップデータの読み込みに新たなインタフェースを要しない。また、一度読み込んだスクリプト言語プログラムは、暗号化され署名付きで出力されるので、改ざんを検出でき、さらに内部テータの暴露から保護できる。
本開示者が特願2011−027625において開示した技術では、変数や関数にセキュリティフラグが設定された状態まで設定する場合は、それぞれの鍵で認証することが必要となり、単純にスクリプトプログラムを読み込ませるだけでは元の状態にはならない。一方、本開示の一実施形態で示されたリストア方法では、暗号鍵設定に毎回認証を必要としないので、システムの再立ち上げが容易となる。
スクリプト言語のプログラムは、ファイルから読み込まれた後、入力部160を用いての変更や、動作中のプログラムによりに変数値や関数コードが変化することがある。本開示では、バックアップ指示により、その変化した内容を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述形式でバックアップして、最終形態のソースコードが入手可能となる。
暗号化されバックアップデータとして保存されたデータはスクリプト解釈実行モジュールと暗号化部により復号され関数と変数値や秘密鍵がリストアされるので、初めからスクリプト言語を読み込み、更に変数値の再設定、暗号鍵の再設定が必要なく、システムの再起動が高速となる。
[2−4.変形例]
上述してきた説明では、情報処理装置100で実行されるスクリプト解釈実行モジュールが読み込むスクリプトのバックアップデータが、情報処理装置100に接続された外部記憶装置180に格納されるものとして説明してきた。しかし、スクリプトのバックアップデータの格納はかかる例に限定されない。
図12は、本開示の一実施形態の変形例にかかる情報処理システム10’の構成を示す説明図である。図12に示した情報処理システム10’は、図2に示した情報処理システム10とは異なり、スクリプトのバックアップデータを格納する外部記憶装置200が、情報処理装置100と、ネットワーク190を介して接続されている。このように、スクリプトのバックアップデータを格納する外部記憶装置200を、ネットワーク190を介して情報処理装置100に接続した状態であっても、同様に、スクリプトのバックアップデータの外部記憶装置200への格納、及びスクリプトのバックアップデータの外部記憶装置200からの読み込みが可能である。
他の変形例について説明する。手続き型言語で作成されたスクリプトによるプログラムを、情報処理装置100に一旦読み込ませると、その後はCPU110により、情報処理装置100に接続されたハードディスクなどの外部記憶装置180に保存することで、バックアップデータを自動的に読み込むことができるから、キーボードまたはネットワークからのプログラムの再読み込みが必要無いという特徴を持っている。
一方で、一度組み込んだ関数や変数を、情報処理装置100または外部記憶装置180に保存したバックアップファイルをから削除するには、そのファイルを入手し編集する等の手段を用いないと削除が出来なくなる。特に、情報処理装置100が有する独自の秘密鍵でバックアップファイルが暗号化されてしまうと、その秘密鍵で復号しない限り、ファイルを入手し編集する等の手段による削除もできなくなってしまう。
スクリプトプログラムを変更し続けると使わなくなった変数や関数名が出てくるが、使わなくなった変数や関数は内部リソースを消費するだけでなく、まだ使っているのか、もう使われなくなっているのかが分かりづらくなってしまう。
そこで、情報処理装置100で実行されるスクリプト解釈実行モジュールに削除コマンドを組み込み、ユーザは、その削除コマンドを実行することで、不要になった変数や関数は削除できるようにしてもよい。これによりスクリプトプログラムの編集がより容易になる。
[2−5.情報処理装置のハードウェア構成]
次に、図13を参照しながら、本開示の一実施形態に係る情報処理装置100のハードウェア構成について、詳細に説明する。図13は、本開示の一実施形態に係る情報処理装置100のハードウェア構成を説明するためのブロック図である。
情報処理装置100は、主に、CPU901と、ROM903と、RAM905と、ホストバス907と、ブリッジ909と、外部バス911と、インタフェース913と、入力装置915と、出力装置917と、撮像装置918と、ストレージ装置919と、ドライブ921と、接続ポート923と、通信装置925とを備える。
CPU901は、演算処理装置および制御装置として機能し、ROM903、RAM905、ストレージ装置919、またはリムーバブル記録媒体927に記録された各種プログラムに従って、情報処理装置100内の動作全般またはその一部を制御する。ROM903は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM905は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。これらはCPUバス等の内部バスにより構成されるホストバス907により相互に接続されている。
ホストバス907は、ブリッジ909を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス911に接続されている。
入力装置915は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置915は、例えば、赤外線やその他の電波を利用したリモートコントロール手段(いわゆる、リモコン)であってもよいし、情報処理装置100の操作に対応した携帯電話やPDA等の外部接続機器929であってもよい。さらに、入力装置915は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU901に出力する入力制御回路などから構成されている。情報処理装置100のユーザは、この入力装置915を操作することにより、情報処理装置100に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置917は、例えば、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなど、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置917は、例えば、情報処理装置100が行った各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理装置100が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
撮像装置918は、例えばディスプレイ装置の上部に設けられており、情報処理装置100のユーザの静止画像または動画像を撮影することが出来る。撮像装置918は、例えばCCD(Charge Coupled Device)イメージセンサまたはCMOS(Complementary Metal Oxide Semiconductor)イメージセンサを備えており、レンズで集光した光を電気信号に変換することで静止画像または動画像を撮影することができる。
ストレージ装置919は、情報処理装置100の記憶部の一例として構成されたデータ格納用の装置であり、例えば、HDD(Hard Disk Drive)等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置919は、CPU901が実行するプログラムや各種データ、および外部から取得した音響信号データや画像信号データなどを格納する。
ドライブ921は、記録媒体用リーダライタであり、情報処理装置100に内蔵、あるいは外付けされる。ドライブ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)ポート等の、機器を情報処理装置100に直接接続するためのポートである。この接続ポート923に外部接続機器929を接続することで、情報処理装置100は、外部接続機器929から直接音響信号データや画像信号データを取得したり、外部接続機器929に音響信号データや画像信号データを提供したりする。
通信装置925は、例えば、通信網931に接続するための通信デバイス等で構成された通信インタフェースである。通信装置925は、例えば、有線または無線LAN(Local Area Network)、Bluetooth、またはWUSB(Wireless USB)用の通信カード、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ、または、各種通信用のモデム等である。この通信装置925は、例えば、インターネットや他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置925に接続される通信網931は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内LAN、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
<3.まとめ>
以上説明したように本開示の一実施形態によれば、手続き型プログラミング言語を解釈して実行することができる情報処理装置100は、ユーザ(ソースコードの編集者)によるバックアップ指示に基づいて、バックアップ指示があった時点の状態を、スクリプト解釈実行モジュールに読み込ませた時と同様の記述に逆変換することで、情報処理装置100に接続された外部記憶装置180(または情報処理装置100とネットワーク190を介して接続された外部記憶装置200)にバックアップする。バックアップ指示があった時点の状態をバックアップするに際しては、NVRAM150に格納された鍵を用いて暗号化することができる。
また、情報処理装置100に接続された外部記憶装置180(または情報処理装置100とネットワーク190を介して接続された外部記憶装置200)にバックアップしたデータは、情報処理装置100の起動時に、スクリプト解釈実行モジュールが読み込んでリストアする。リストアに際しては、本開示者が特願2011−027625において開示した技術のような、変数や関数にセキュリティフラグが設定された状態での鍵による認証が不要なので、単純にスクリプトプログラムを読み込ませるだけで、元の状態に戻すことが出来る。
また、上記の実施形態のフローチャートに示されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
また、明細書中において説明した一連の処理は、ハードウェア、またはソフトウェア、あるいはハードウェアとソフトウェアとの複合構成によって実行するようにしてもよい。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータのメモリにインストールして実行させるか、または、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させるようにしてもよい。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
なお、本技術は以下のような構成も取ることができる。
(1)
手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部と、
前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップ部と、
を備える、情報処理装置。
(2)
耐タンパ機構で保護された鍵を保持する鍵保持部と、
前記鍵を用いて暗号化及び復号を行う暗号復号部と、
を備え、
前記バックアップ部は、前記プログラム実行部が、バックアップの時点で定義された変数及びプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行部に設定され該前記プログラム実行部が保持している情報を前記暗号復号部で暗号化してバックアップを作成する、前記(1)に記載の情報処理装置。
(3)
前記バックアップ部が作成したバックアップを読み込み、前記暗号復号部を用いて読み込んだバックアップを復号してリストアするリストア部を備える、前記(2)に記載の情報処理装置。
(4)
前記プログラム実行部は、前記バックアップ部が前記バックアップの存在を確認し、存在していれば該バックアップを読み込む、前記(3)に記載の情報処理装置。
(5)
前記プログラム実行部は、読み込んだ前記コードの変数定義または関数定義を削除する、前記(1)から(4)のいずれかに記載の情報処理装置。
(6)
手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、
を備える、情報処理方法。
(7)
コンピュータに、
手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップを作成するバックアップステップと、
を実行させる、コンピュータプログラム。
10 情報処理システム
100 情報処理装置
110 CPU
112 プログラム実行部
114 バックアップ部
116 リストア部
120 暗号化/復号部
130 ROM
140 RAM
150 NVRAM
160 入力部
170 表示部
180、200 外部記憶装置

Claims (6)

  1. 手続き型言語により作成されたコンピュータプログラムのコードを読み込み、解釈して実行するプログラム実行部と、
    前記プログラム実行部が実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップするバックアップ部と、
    耐タンパ機構で保護された鍵を保持する鍵保持部と、
    前記鍵を用いて暗号化及び復号を行う暗号復号部と、
    を備え
    前記バックアップ部は、バックアップの時点で定義された変数及び前記プログラム実行部が実行するプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行部に設定され該前記プログラム実行部が保持している情報を前記暗号復号部で暗号化してバックアップを作成する、情報処理装置。
  2. 前記バックアップ部が作成したバックアップを読み込み、前記暗号復号部を用いて読み込んだバックアップを復号してリストアするリストア部を備える、請求項に記載の情報処理装置。
  3. 前記プログラム実行部は、前記バックアップ部が前記バックアップの存在を確認し、存在していれば該バックアップを読み込む、請求項に記載の情報処理装置。
  4. 前記プログラム実行部は、読み込んだ前記コードの変数定義または関数定義を削除する、請求項1に記載の情報処理装置。
  5. 手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
    前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップするバックアップステップと、
    耐タンパ機構で保護された鍵を用いて暗号化及び復号を行う暗号復号ステップと、
    を備え
    前記暗号復号ステップは、前記バックアップステップの時点で定義された変数及び前記プログラム実行ステップで実行されるプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行ステップにおいて予め設定され該前記プログラム実行ステップにおいて保持されている情報を暗号化し、
    前記バックアップステップは、前記暗号復号ステップで暗号化された情報をバックアップする、情報処理方法。
  6. コンピュータに、
    手続き型言語により作成されたコンピュータプログラムのコードを解釈して実行するプログラム実行ステップと、
    前記プログラム実行ステップが実行中の前記コードにおける変数定義及び関数定義を、前記手続き型言語によるコードとして解釈可能な形式でバックアップするバックアップステップと、
    耐タンパ機構で保護された鍵を用いて暗号化及び復号を行う暗号復号ステップと、
    を実行させ
    前記暗号復号ステップは、前記バックアップステップの時点で定義された変数及び前記プログラム実行ステップで実行されるプログラムにより変更された該変数が持つ値、関数定義、及び前記プログラム実行ステップにおいて予め設定され該前記プログラム実行ステップにおいて保持されている情報を暗号化し、
    前記バックアップステップは、前記暗号復号ステップで暗号化された情報をバックアップする、コンピュータプログラム。
JP2011152105A 2011-07-08 2011-07-08 情報処理装置、情報処理方法及びコンピュータプログラム Expired - Fee Related JP5772316B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011152105A JP5772316B2 (ja) 2011-07-08 2011-07-08 情報処理装置、情報処理方法及びコンピュータプログラム
PCT/JP2012/066721 WO2013008650A1 (ja) 2011-07-08 2012-06-29 情報処理装置、情報処理方法及びコンピュータプログラム
CN201280032541.1A CN103635879B (zh) 2011-07-08 2012-06-29 信息处理设备、信息处理方法
US14/130,023 US9262128B2 (en) 2011-07-08 2012-06-29 Information processing apparatus, information processing method and computer program
EP12811876.7A EP2731007A4 (en) 2011-07-08 2012-06-29 INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD, AND COMPUTER PROGRAM

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2013020373A JP2013020373A (ja) 2013-01-31
JP5772316B2 true JP5772316B2 (ja) 2015-09-02

Family

ID=47505946

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US9262128B2 (ja)
EP (1) EP2731007A4 (ja)
JP (1) JP5772316B2 (ja)
CN (1) CN103635879B (ja)
WO (1) WO2013008650A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102192479B1 (ko) * 2014-04-23 2020-12-17 삼성전자주식회사 전자 장치의 프로그램 코드 분석 방법 및 전자 장치
EP3182134A1 (en) 2015-12-18 2017-06-21 Roche Diagnostics GmbH Method for restoring settings of an instrument for processing a sample or a reagent, and system comprising an instrument for processing a sample or reagent
JP7067286B2 (ja) * 2018-06-06 2022-05-16 オムロン株式会社 制御システム、制御システムの制御方法、および制御システムのプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0392931A (ja) * 1989-09-06 1991-04-18 Nec Corp プログラム言語処理装置
EP1764699A4 (en) 2004-06-14 2010-07-28 Sony Corp INFORMATION MANAGEMENT DEVICE AND INFORMATION MANAGEMENT PROCESS
US8516458B2 (en) 2008-02-29 2013-08-20 Iti Scotland Limited System representation and handling techniques
JP5600301B2 (ja) 2008-02-29 2014-10-01 アイティーアイ スコットランド リミテッド システム表現およびハンドリング技術
CN101446898B (zh) * 2008-12-02 2011-06-15 南京大学 一种通过函数编程模型支持大规模分布式并行计算的方法
JP5240524B2 (ja) 2009-07-28 2013-07-17 株式会社デンソー スイッチング素子の温度検出装置
CN101833498B (zh) * 2009-07-31 2012-06-06 北京伟晨豪嘉科技有限责任公司 一种基于测试脚本技术的嵌入式系统自动化检测系统
CN102971722B (zh) * 2010-05-09 2015-01-07 思杰系统有限公司 用于创建和传送加密的虚拟盘的系统和方法
JP5704951B2 (ja) * 2011-02-10 2015-04-22 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US8726039B2 (en) * 2012-06-14 2014-05-13 International Business Machines Corporation Reducing decryption latency for encryption processing

Also Published As

Publication number Publication date
JP2013020373A (ja) 2013-01-31
US20140136854A1 (en) 2014-05-15
EP2731007A4 (en) 2015-03-11
EP2731007A1 (en) 2014-05-14
US9262128B2 (en) 2016-02-16
CN103635879A (zh) 2014-03-12
CN103635879B (zh) 2017-09-08
WO2013008650A1 (ja) 2013-01-17

Similar Documents

Publication Publication Date Title
JP4578119B2 (ja) 情報処理装置および情報処理装置におけるセキュリティ確保方法
JP2007048216A (ja) 文書管理装置、文書管理方法、文書管理プログラム、記憶媒体
JP5772316B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP5704951B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
US11501016B1 (en) Digital password protection
CN106100851A (zh) 密码管理系统、智能腕表及其密码管理方法
CN105453104B (zh) 系统保护用文件安全管理装置和管理方法
KR101748627B1 (ko) 문서 편집에 대한 인증이 가능한 웹 기반의 전자 문서 서비스 장치 및 그 동작 방법
JP5111974B2 (ja) 通信システム及び通信装置
JP2003044361A (ja) データ保存再生システム、データ保存装置、データ再生装置、データ保存再生方法、プログラム、および媒体
JP2017060154A (ja) デジタル証拠作成装置、デジタル証拠作成プログラム及びデジタル証拠作成方法
JP2017069940A (ja) 画像処理装置及び画像処理プログラム
Blankesteijn et al. Assessing data remnants in modern smartphones after factory reset
JP6044775B2 (ja) 情報記録システム及び記録メディア
JPH10301856A (ja) ファイルアクセスシステムおよび記録媒体
CN110430060B (zh) 一种基于puf密钥的专用压缩系统
JP2007207174A (ja) ドキュメント処理装置及び画像形成装置
CN110516468B (zh) 一种虚拟机内存快照加密的方法和装置
KR101196748B1 (ko) 이동통신 단말기의 데이터 백업 방법
JP2006227707A (ja) 画像のサムネイルを表示・非表示制御する画像処理装置及び方法
JP4128982B2 (ja) 情報処理装置及びその情報処理方法、コンピュータプログラム及び記憶媒体
JP5372051B2 (ja) ファイル管理装置、ファイル管理方法及びプログラム
KR100980733B1 (ko) 이동식 저장장치의 보안방법 및 그에 따른 이동식 저장장치
JP2004348565A (ja) 環境復元方法、クライアント、環境復元プログラム、および記録媒体
CN116010986A (zh) 一种虚幻引擎下的资源文件保护方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150511

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: 20150602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150615

R151 Written notification of patent or utility model registration

Ref document number: 5772316

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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