JP2009015434A - 携帯可能情報処理装置及び情報処理プログラム - Google Patents

携帯可能情報処理装置及び情報処理プログラム Download PDF

Info

Publication number
JP2009015434A
JP2009015434A JP2007174116A JP2007174116A JP2009015434A JP 2009015434 A JP2009015434 A JP 2009015434A JP 2007174116 A JP2007174116 A JP 2007174116A JP 2007174116 A JP2007174116 A JP 2007174116A JP 2009015434 A JP2009015434 A JP 2009015434A
Authority
JP
Japan
Prior art keywords
authentication code
code
value
function
finally output
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.)
Pending
Application number
JP2007174116A
Other languages
English (en)
Inventor
Takashi Okazaki
隆志 岡崎
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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2007174116A priority Critical patent/JP2009015434A/ja
Publication of JP2009015434A publication Critical patent/JP2009015434A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】複数のプログラムを組み合わせなくてもセキュリティ対策を施すことができ、プログラムのコードサイズを肥大化させない携帯可能情報処理装置及び情報処理プログラムを提供する。
【解決手段】ICカード10は、引数データ、呼び出し元の関数に関する情報、呼び出し先の関数に関する情報、乱数値、コードが実行されたことを示す値等を含むデータを用いて第1の認証コード(code)を生成し、生成した第1の認証コードを用いて第2の認証コード(code)を生成する認証コード生成部16と、認証コード生成部16によって最終的に出力されるべき値である正当値を記憶しているEEPROM15と、EEPROM15が記憶している正当値と認証コード生成部16が最終的に出力した認証コードとを比較して、認証コード生成部16が最終的に出力した第2の認証コードが正しいか否かを検証する検証部17などとを備える。
【選択図】図1

Description

本発明は、携帯可能情報処理装置及び情報処理プログラムに関するものである。
近年、動作中のICカードのICチップに対してレーザ照射などを行い、ICカード内のソフトウェアを誤動作させ、機密情報を読み出したりする不正行為が知られている。
このような不正行為の対策として、レスポンスタイムを可変化したICカード(例えば、特許文献1)を採用することが考えられ、また、以下のような対策方法も考えられる。
(1)条件分岐命令などで使用するメモリ上のデータを改ざんすることで本来と異なる分岐をさせる攻撃を防ぐため、データを二重化する方法。これは、データの保護につながる。
(2)条件分岐命令などのコードの読み出し時に命令バイトを改ざんすることで本来と異なる動作をさせる攻撃を防ぐため、条件分岐処理を二重化する方法。これは、コードの保護につながる。
(3)コードをスキップさせることでセキュリティ機能を実行させない攻撃を防ぐため、コードの要所に通過チェックを行う方法。これは、処理手順の保護につながる。
(4)攻撃のタイミングや場所を少しずつ変化させて解析する攻撃を回避するため、乱数やカウンタを用いて同じデータを使わないようにする方法。これは、セッション性の確保につながる。
しかし、上述した従来の技術では、以下のような問題があった。
上記(1)〜(4)や、その他の技術を実装するためには、複数のプログラムを組み合わせて総合的なセキュリティ対策を施す必要があるため、プログラムのコードサイズが大きくなり、小容量の安価なICチップが利用できなくなる。
特開2006−201900号公報
本発明の課題は、複数のプログラムを組み合わせなくてもセキュリティ対策を施すことができ、しかも、プログラムのコードサイズを肥大化させない携帯可能情報処理装置及び情報処理プログラムを提供することである。
本発明は、以下のような解決手段により、前記課題を解決する。なお、理解を容易にするために、本発明の実施例に対応する符号を付して説明するが、これに限定されるものではない。
請求項1の発明は、所定のデータを用いて第n(nは1以上の整数)の認証コードを生成し、生成した前記第nの認証コードを用いて第n+1の認証コードを生成する認証コード生成手段(16)と、前記認証コード生成手段(16)によって最終的に出力されるべき値である正当値を記憶している記憶手段(15)と、前記記憶手段(15)が記憶している正当値と、前記認証コード生成手段(16)が最終的に出力した認証コードとを比較して、前記認証コード生成手段(16)が最終的に出力した認証コードが正しいか否かを検証する検証手段(17)と、を備える携帯可能情報処理装置(10)である。
請求項2の発明は、請求項1に記載の携帯可能情報処理装置(10)において、前記所定のデータは、引数データ、呼び出し元の関数に関する情報、呼び出し先の関数に関する情報、乱数値、コードが実行されたことを示す値のうち少なくとも2つを含むデータであること、を特徴とする携帯可能情報処理装置(10)である。
請求項3の発明は、コンピュータに、所定のデータを用いて第n(nは1以上の整数)の認証コードを生成させ、生成した前記第nの認証コードを用いて第n+1の認証コードを生成させる認証コード生成手順(#5)と、前記認証コード生成手順(#5)によって最終的に出力されるべき値である正当値と、前記認証コード生成手順(#5)が最終的に出力した認証コードとを比較させて、前記認証コード生成手順(#5)が最終的に出力した認証コードが正しいか否かを検証させる検証手順(#8,#9)と、を実行させるための情報処理プログラム。
本発明によれば、以下のような効果がある。
(1)所定のデータを用いて第nの認証コードを生成し、第nの認証コードを用いて第n+1の認証コードを生成するので、前の認証コードの値が次の認証コードの値に反映され、セキュリティを高めることができる。
(2)最終的に出力されるべき値である正当値を記憶しておき、その正当値と最終的に出力された認証コードとを比較して、認証コードが正しいか否かを検証するので、携帯可能情報処理装置の内部で簡単に検証を行うことができる。
(3)引数データ、呼び出し元の関数に関する情報、呼び出し先の関数に関する情報、乱数値、コードが実行されたことを示す値のうち少なくとも2つを含むデータを用いて認証コードを生成するので、各データをまとめて処理することができる。これにより、複数のプログラムを組み合わせなくても、セキュリティ対策を施すことができ、しかも、データやコード、処理手順に関連する情報を別々に検証せずに、1つのコードで統合的に検証することで、プログラムのサイズを最小化することができる。また、動作中のICカードのICチップに対してレーザ照射などを行い、ICカード内のソフトウェアを誤動作させ、機密情報を読み出したりする攻撃を防ぐことが可能になり、セキュリティの向上に貢献できる。
以下、図面等を参照して、本発明の実施例について、さらに詳しく説明する。
図1は、本発明による携帯可能情報処理装置の実施例を示す図である。
本実施例のICカード(携帯可能情報処理装置)10は、通信部11と、CPU12と、ROM13と、RAM14と、EEPROM15と、認証コード生成部16と、検証部17などとを備え、ICカード10に搭載されたOSのセキュリティ機能を強化したものである。
通信部11は、外部装置としてのリーダライタ20とコマンドやデータを送受信するための入出力インターフェースであり、例えば、接触式の接触端子や、非接触式のアンテナなどを備える。
CPU12は、通信部11を介してリーダライタ20と交信し、ROM13に記憶されているプログラム(制御プログラム,情報処理プログラムなど)に基づいてICカード10を統括制御する部分である。
ROM13は、不揮発性のメモリであり、CPU12によって実行されるプログラムが記憶されている。
RAM14は、揮発性のメモリであり、CPU12が制御を行う上で作業領域として使用される。
EEPROM15は、書き換え可能な不揮発性のメモリであり、ICカード10に記録されるデータを格納する。また、EEPROM15は、後述する認証コード生成部16によって最終的に出力されるべき値である正当値を記憶している。
認証コード生成部16は、CPU12の指示により、所定のデータを用いて第n(nは1以上の整数)の認証コードを生成し、生成した第nの認証コードを用いて第n+1の認証コードを生成する。
ここで、所定のデータとは、引数データ、呼び出し元の関数に関する情報、呼び出し先の関数に関する情報、乱数値、コードが実行されたことを示す値等を含むデータである。
検証部17は、EEPROM15が記憶している正当値と、認証コード生成部16が最終的に出力した認証コードとを比較して、認証コード生成部16が最終的に出力した認証コードが正しいか否かを検証する部分である。
図2は、ICカード10の動作を説明するフローチャートであり、図3は、ICカード10のプログラムの一例を示す図であり、本実施例では、以下の手順で処理が行われる。
ここでは、呼び出し元関数と、呼び出し先関数との2つの関数のやり取りを例にして説明する。
(#1)呼び出し元関数では、(a)パスワードなどの引数データ、(b)呼び出し元関数アドレス、(c)呼び出し先関数アドレス、(d)乱数値、(e)呼び出し先の関数識別子などの情報から、ハッシュ関数などを使って認証コードAを生成する。
(#2)そして、呼び出し元関数は、「(a)引数データ、(b)呼び出し元関数アドレス、(d)乱数値、(f)認証コードA」を引数として呼び出し先関数を呼び出す。
(#3)呼び出し先関数では、引数に、「(c)呼び出し先関数アドレス、(e)呼び出し先の関数識別子」を付加して、検証用の認証コードA’を生成する。(c)呼び出し先関数アドレス、(e)呼び出し先の関数識別子を引数で受け渡さずに、呼び出し先関数で付加する理由は、呼び出し先関数が、(c)呼び出し先関数アドレス、(e)呼び出し先の関数識別子を把握しているからである。
(#4)呼び出し先関数では、引数で受け取った認証コードAと、生成した検証用の認証コードA’とを比較して、一致しない場合は、何らかの攻撃(意図しない箇所からの関数呼び出しや、データの改ざん)があったものと判断して異常終了する。異常終了時には、無応答又はエラー応答などの処理を行う。
(#5;認証コード生成手順)呼び出し先関数では、処理の要所で、条件判定命令の結果レジスタなどのコードが実行されたことを示す値Xnと、ここまでの認証コードAから、この時点での新たな認証コードを生成する。
具体的に説明すると、処理の要所では、図3に示すように、関数func1と関数func2との2つの関数が用意されている。ここで、code=識別コードAとする。
関数func1の処理が開始されると、関数func1のコードが実行されたことを示す値Xnと識別コードとしてのcodeとが、ハッシュ関数によって処理され、その演算結果がcode(第1の認証コード)に代入される。
次に、そのcodeを引数として関数func2が呼び出される。
別の関数func2では、関数func2のコードが実行されたことを示す値Ynとcodeとが、再びハッシュ関数によって処理され、演算結果がcode(第2の認証コード)に代入され、関数func1にリターンする。
このように、識別コードとしてのcodeは、行く先々で主要なデータと混ぜ合わせながら、次々に更新されていく。
codeの最終的に出力されるべき値である正当値は、予め計算されてEEPROM15に記憶されている。図の例では、正当値は、53であり、演算結果として得られたcodeが53である場合には、正常フラグとしてのflgにTRUE(1)がセットされ、codeが53以外の場合には、正常フラグとしてのflgにFALSE(0)がセットされる。flg=1であれば、正常に処理が行われたものとし、flg=0であれば、不正行為が介在したものとする。
なお、このような処理は、任意の個所に適用し、その都度、codeを更新していく。
(#6)呼び出し先関数は、関数が終了する段階で、ここまでのcodeと処理結果などの戻り値から、ハッシュ関数などによって最終的な認証コードBを生成する。
(#7)呼び出し先関数は、認証コードBと処理結果などとを戻り値として呼び出し元関数に返し、処理の流れは呼び出し元に復帰する。
(#8)呼び出し元関数では、認証コードAと、関数内で正しく処理された場合のコードが実行された場合に想定される一連の値Znと、受け取った処理結果などから検証用の認証コードB’を生成する。
(#9)呼び出し元関数は、引数で受け取った認証コードBと、生成した検証用の認証コードB’を比較して、一致しない場合は、何らかの攻撃(実行コードの改ざんや、データの改ざん)があったものと判断して異常終了する。異常終了時には、無応答又はエラー応答などの処理を行う。
(#10)不正が行われず、改ざんもないことが検証された場合には、「処理結果」をそのまま使って以降の処理を継続して行うことができる。
このように、本実施例によれば、以下のような効果がある。
(1)コードが実行されたことを示す値Xnを用いて認証コード(code)を生成し、生成した認証コードとコードが実行されたことを示す値Ynとを用いて新たな認証コードを生成するので、前の認証コードの値が次の認証コードの値に反映され、セキュリティを高めることができる。
(2)最終的に出力されるべき値である正当値を記憶しておき、その正当値と最終的に出力された認証コードとを比較して、認証コードが正しいか否かを検証するので、ICカード10の内部で簡単に検証を行うことができる。
(3)引数データ、呼び出し元関数アドレス、呼び出し先関数アドレス、乱数値、呼び出し先の関数識別子を用いて認証コードAを生成するので、各データをまとめて処理することができる。これにより、複数のプログラムを組み合わせなくてもセキュリティ対策を施すことができ、しかも、データやコード、処理手順に関連する情報を別々に検証せずに統合的に検証することで、プログラムのサイズを最小化することができる。
従って、動作中のICカード10のICチップに対してレーザ照射などを行い、ICカード10内のソフトウェアを誤動作させ、機密情報を読み出したりする攻撃を防ぐことが可能になり、セキュリティの向上に貢献できる。
また、データやコード、処理手順に対する攻撃を少ないコードで検知することができ、関数の呼び出し処理や復帰処理に対する攻撃を検知することもできる。
(4)関数呼び出し時に「呼び出し先関数アドレス」が改ざんされると認証コードAが一致しないので、不正に呼び出し先を操作する攻撃を防ぐことができる。
(5)意図しない箇所から、関数が呼び出されると「呼び出し元関数アドレス」が異なるため認証コードAが一致しなくなり、不正に呼び出し先を操作する攻撃を防ぐことができる。
(6)関数呼び出し時に「引数データ」が改ざんされると認証コードAが一致しないので、不正なデータを使った処理を行わせる攻撃を防ぐことができる。
(7)処理の要所で、条件判定命令や処理分岐命令が改ざんされると認証コードBが一致しないので、本来とは異なる動作をさせる攻撃を防ぐことができる。
(8)呼び出し先関数から呼び出し元関数に戻る時に、「処理結果」が改ざんされると認証コードAが一致しないので、不正に処理結果を操作する攻撃を防ぐことができる。
(変形例)
以上説明した実施例に限定されることなく、種々の変形や変更が可能であって、それらも本発明の範囲内である。
(1)携帯可能情報処理装置は、ICカードの例で説明したが、携帯電話機やPDA(personal digital assistant)などであってもよい。
(2)認証コードは、ハッシュ関数を用いて生成する例で説明したが、加算,減算などの任意の関数を用いて生成してもよい。また、認証コードは、更新する例で説明したが、更新せずに順に記憶させていってもいい。
(3)識別コードとしてのcodeは、第1の認証コードと第2の認証コードの例で説明したが、第3,第4,第5・・といったように処理を継続させてもよい。
(4)上述したような制御を行う情報処理プログラムを携帯電話機やPDAなどに配信するようにしてもよい。なお、本発明でいうコンピュータとは、記憶手段、制御手段などを備えた情報処理装置をいい、パーソナルコンピュータも、携帯電話機も、本発明のコンピュータの概念に含まれる。
本発明による携帯可能情報処理装置の実施例を示す図である。 ICカード10の動作を説明するフローチャートである。 ICカード10のプログラムの一例を示す図である。
符号の説明
10 ICカード(携帯可能情報処理装置)
11 通信部
12 CPU
13 ROM
14 RAM
15 EEPROM
16 認証コード生成部(認証コード生成手段)
17 検証部(検証手段)
20 リーダライタ

Claims (3)

  1. 所定のデータを用いて第n(nは1以上の整数)の認証コードを生成し、生成した前記第nの認証コードを用いて第n+1の認証コードを生成する認証コード生成手段と、
    前記認証コード生成手段によって最終的に出力されるべき値である正当値を記憶している記憶手段と、
    前記記憶手段が記憶している正当値と、前記認証コード生成手段が最終的に出力した認証コードとを比較して、前記認証コード生成手段が最終的に出力した認証コードが正しいか否かを検証する検証手段と、
    を備える携帯可能情報処理装置。
  2. 請求項1に記載の携帯可能情報処理装置において、
    前記所定のデータは、引数データ、呼び出し元の関数に関する情報、呼び出し先の関数に関する情報、乱数値、コードが実行されたことを示す値のうち少なくとも2つを含むデータであること、
    を特徴とする携帯可能情報処理装置。
  3. コンピュータに、
    所定のデータを用いて第n(nは1以上の整数)の認証コードを生成させ、生成した前記第nの認証コードを用いて第n+1の認証コードを生成させる認証コード生成手順と、
    前記認証コード生成手順によって最終的に出力されるべき値である正当値と、前記認証コード生成手順が最終的に出力した認証コードとを比較させて、前記認証コード生成手順が最終的に出力した認証コードが正しいか否かを検証させる検証手順と、
    を実行させるための情報処理プログラム。
JP2007174116A 2007-07-02 2007-07-02 携帯可能情報処理装置及び情報処理プログラム Pending JP2009015434A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007174116A JP2009015434A (ja) 2007-07-02 2007-07-02 携帯可能情報処理装置及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007174116A JP2009015434A (ja) 2007-07-02 2007-07-02 携帯可能情報処理装置及び情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2009015434A true JP2009015434A (ja) 2009-01-22

Family

ID=40356293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007174116A Pending JP2009015434A (ja) 2007-07-02 2007-07-02 携帯可能情報処理装置及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP2009015434A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023127314A1 (ja) * 2021-12-28 2023-07-06 ソニーセミコンダクタソリューションズ株式会社 情報処理装置および情報処理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002198956A (ja) * 2000-12-27 2002-07-12 Toshiba Corp 通信装置、及びその認証方法
JP2002261751A (ja) * 2001-03-02 2002-09-13 Hitachi Ltd 暗号処理方法
JP2002334317A (ja) * 2001-05-09 2002-11-22 Hitachi Ltd 情報処理装置
JP2007513422A (ja) * 2003-12-04 2007-05-24 アクサルト・エス・アー 放射またはそれ以外による攻撃に対抗したプログラムの実行を保証するための方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002198956A (ja) * 2000-12-27 2002-07-12 Toshiba Corp 通信装置、及びその認証方法
JP2002261751A (ja) * 2001-03-02 2002-09-13 Hitachi Ltd 暗号処理方法
JP2002334317A (ja) * 2001-05-09 2002-11-22 Hitachi Ltd 情報処理装置
JP2007513422A (ja) * 2003-12-04 2007-05-24 アクサルト・エス・アー 放射またはそれ以外による攻撃に対抗したプログラムの実行を保証するための方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023127314A1 (ja) * 2021-12-28 2023-07-06 ソニーセミコンダクタソリューションズ株式会社 情報処理装置および情報処理方法

Similar Documents

Publication Publication Date Title
US10503931B2 (en) Method and apparatus for dynamic executable verification
US9117070B2 (en) Method for adapting and executing a computer program and computer architecture therefore
US8127144B2 (en) Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
US20160055331A1 (en) Detecting exploits against software applications
CN110210211B (zh) 一种数据保护的方法和计算设备
US11232194B2 (en) Method for executing a binary code of a secure function with a microprocessor
JP5945313B2 (ja) 構造体を生成する方法および対応する構造体
JP6922329B2 (ja) 故障利用攻撃に対しての耐タンパー性を持たせたセキュリティデバイス
US20080232582A1 (en) Method for Dynamically Authenticating Programmes with an Electronic Portable Object
US20060289656A1 (en) Portable electronic apparatus and data output method therefor
KR20180015723A (ko) 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법
US11256786B2 (en) Method to secure a software code
CN111104662A (zh) 用于对程序进行认证的方法和对应的集成电路
JP2009015434A (ja) 携帯可能情報処理装置及び情報処理プログラム
EP4002165A1 (en) Code flow protection with error propagation
JP2007183931A (ja) セキュアデバイス、情報処理端末、サーバ、および認証方法
WO2022135686A1 (en) Method for securing a computing device from memory corruption and computing device
CN113094708A (zh) 电子文件处理方法及装置、存储介质和处理器
JP2008204085A (ja) 半導体記憶装置
WO2001037067A1 (en) A method of providing secure linkage of program modules
US10242183B2 (en) Method of executing a program by a processor and electronic entity comprising such a processor
US10552602B2 (en) System and method for protecting a device against attacks on processing flow using a code pointer complement
JP5200686B2 (ja) 情報処理装置、正常処理判別方法、及び情報処理プログラム
US20220156365A1 (en) Method to Secure a Software Code

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130305