JP2010134644A - Icカードおよびパッチ実行方法 - Google Patents

Icカードおよびパッチ実行方法 Download PDF

Info

Publication number
JP2010134644A
JP2010134644A JP2008308950A JP2008308950A JP2010134644A JP 2010134644 A JP2010134644 A JP 2010134644A JP 2008308950 A JP2008308950 A JP 2008308950A JP 2008308950 A JP2008308950 A JP 2008308950A JP 2010134644 A JP2010134644 A JP 2010134644A
Authority
JP
Japan
Prior art keywords
function
patch
card
call address
memory
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.)
Withdrawn
Application number
JP2008308950A
Other languages
English (en)
Inventor
Kosuke Nara
康介 奈良
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 JP2008308950A priority Critical patent/JP2010134644A/ja
Publication of JP2010134644A publication Critical patent/JP2010134644A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】任意の関数にパッチを適用可能で,かつ,ROMに記憶されたプログラムの容量が大きくなることのないICカードを提供する。
【解決手段】ICカード1のEEPROM14には,ROM12に実装された関数21を変更するためのパッチ25に加え,該関数21の呼出アドレスに関連付けて,パッチ25の呼出アドレスが記憶されるパッチテーブル24が記憶される。ROM12に実装された関数21が呼び出されると,関数呼出し時の割り込みが発生し,パッチ実行プログラム22が呼び出される。パッチ実行プログラム22は,呼び出された関数21の呼出アドレスをパッチテーブル24から検索し,該関数21の呼出アドレスが検索できた場合,該関数21の呼出アドレスに関連付けられたパッチ25の呼出アドレスを利用して,該関数21のパッチ25を呼び出す。
【選択図】図3

Description

本発明は,半導体集積回路(以下,ICチップ)が実装された任意のサイズのカードであるICカードに関し,更に詳しくは,ICカードの不揮発性メモリに記憶されたプログラムを変更するためのパッチを実行するための技術に関する。
ICカードとは,半導体集積回路(以下,ICチップ)が実装された任意のサイズのカードで,金融分野や交通分野などで幅広く利用され,生産コストやセキュリティの観点から,ICカードの読み出し可能な不揮発性メモリ(ROM: Read-Only Memory)にプログラムの一部或いは全てを実装するため,ICカードには,ROMに実装されたプログラムコードの一部を変更するためのパッチを実装する機能が備えられることが一般的である(例えば,特許文献1)。
しかしながら、従来の技術では,パッチが適用可能なROMのモジュール単位毎に,パッチを実行させるために必要なプログラムを含ませる必要があるため,該モジュールに含まれる関数毎に,パッチを当てることができない問題があった。
なぜなら,上述したように,従来の技術では,パッチを適用可能とする箇所に,パッチを実行させるためのプログラムを含ませる必要があるため,例えば,ICカードのROMに含まれる関数すべてにパッチを適用可能にすると,パッチを実行ためのプログラムを該関数すべてに含ませなければならず,ICカードのROMに記憶されたプログラムの容量が大きくなってしまう問題がある。
特許第3899223号公報
そこで,本発明は,ICカードのROMに記憶されたプログラムに含まれる任意の関数にパッチを適用可能で,かつ,ICカードのROMに記憶されたプログラムの容量が大きくなることのないICカード及びパッチの実行方法を提供することを目的とする。
上述した課題を解決する第1の発明は,不揮発性メモリである第1のメモリと電気的に書換え可能な不揮発性メモリである第2のメモリを有するICカードであって,前記第1のメモリに実装された関数を変更するためのパッチが実装されたとき,該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルが前記第2のメモリに実装され,前記第1のメモリに実装された関数を呼び出すとき所定の割り込みを発生させる割り込み手段と,前記割り込みが発生したとき,呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索し,該関数の呼出アドレスが検索できた場合,該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して,該関数のパッチを呼び出すコンピュータプログラムを備えていることを特徴とするICカードである。
更に,第2の発明は,第1の発明に記載のICカードであって,前記コンピュータプログラムは,前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合,該関数の呼出アドレスを利用して,前記第1のメモリに記憶されている前記関数を実行することを特徴とするICカードである。
更に,第3の発明は,不揮発性メモリである第1のメモリと電気的に書換え可能な不揮発性メモリである第2のメモリを有するICカードにおいて,前記第1のメモリに実装された関数を変更するためのパッチを実行させる方法であって,前記ICカードが,前記第1のメモリに実装された関数を呼び出すとき所定の割り込みを発生させるステップaと,前記第1のメモリに実装された関数を変更するためのパッチが実装されたとき,該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルから,前記ICカードが,前記ステップaで呼び出された前記関数の呼出アドレスを検索するステップb,前記ICカードが,該関数の呼出アドレスが検索できた場合,該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して,該関数のパッチを呼び出すステップcが実行されることを特徴とするパッチ実行方法である。
更に,第4の発明は,第3の発明に記載のパッチ実行方法であって,前記ステップbにおいて,前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合,前記ステップcの代わりに,該関数の呼出アドレスを利用して,前記第1のメモリに記憶されている前記関数を実行するステップdが実行されることを特徴とするパッチ実行方法である。
上述した本発明によれば,ICカードのROMに記憶されたプログラムに含まれる任意の関数にパッチを適用可能で,かつ,ICカードのROMに記憶されたプログラムの容量が大きくなることのないICカード及びパッチの実行方法を提供できる。
ここから,本発明に係わるICカードの最良の実施形態について,図を参照しながら詳細に説明する。
図1は,本実施形態に係わるICカード1の外観を説明する図である。図1で図示したICカード1は接触型ICカードで,ICカード1にはICモジュール1aがエンベットされ,ICモジュール1aの裏面には,ICチップ10が樹脂1bでモールドされている。
図2は,ICチップ10の回路ブロック図で,ICチップ10は,プログラムコードに含まれる命令を解釈実行する演算装置であるCPU11(Central Processing Unit),読み出し専用のメモリであるROM12(Read−Only Memory),CPU11が利用するメインメモリであるRAM13(Random Access Memory),電気的に書換え可能な不揮発性メモリであるEEPROM14(Erasable Programmable ROM),暗号処理などの特定の演算機能に特化した副演算装置であるCo−Processor15,図外のリーダライタとデータ通信するための回路であるUART16を備えている。
図3は,本実施形態におけるICチップ10のメモリの内容を説明する図で,図3(a)はROM12の内容を説明する図で,図3(b)はEEPROM14を説明する図である。
図3(a)に図示したように,ICカード1のROM12には,ファイル管理やデータ通信などICカード1が動作するための基本機能に加え,ICカード1が利用されるシステムに特化したアプリケーション機能を備えたオペレーティングシステム2(OS: Operating System)が実装され,本実施形態において,OS2には,メインルーチン20に加え,メインルーチン20で利用する合計n個の関数21,パッチ割り込みが発生したときに呼び出されるプログラムであるパッチ実行プログラム22,各種割り込みに対応するモジュールが記述された割り込みベクタテーブル23(Interrupt Vector table)が含まれる。
また,図3(b)に図示したように,ICカード1のEEPROM14には,ROM12に実装された関数21を更新するためのプログラムであるパッチ25が記憶され,図3(b)では,関数名がFunc_aとFunc_nの2つ関数21のパッチ25が記憶されている。
更に,ROM12に実装された関数21を変更するためのパッチ25が実装されたとき,該関数21の呼出アドレスに関連付けてパッチ25の呼出アドレスが記憶されるパッチテーブル24がEEPROM14に記憶されている。
図4は,ROM12に実装される割り込みベクタテーブル23を説明する図である。図4に図示したように,割り込みベクタテーブル23とは,ICカード1で発生する割り込みを識別するIDごとに,割り込み要因と,該割り込み要因によって割り込みが発生した受けたときにCPU11が実行するモジュールの呼出アドレスが記憶されたデータテーブルである。
この割り込みベクタテーブル23には,割り込み要因として,CPU11の暴走を監視するWDT(Watched Dog Timer)やTimer1の割り込み要因に加え,関数呼出し時の割り込み要因が記憶され,IDが「nnh」(hは16進数)に,関数呼出し時の割り込み要因と,関数呼出し時の割り込みが発生したときに呼び出すモジュール(ここでは,パッチ実行プログラム22)の呼出アドレスが記述されている。
関数呼出し時に割り込みを発生させる手段としては,ソフトウェア割り込みを利用して実現できるが,特殊なCPUを製造することが可能であるならば,関数呼出しの割り込みは,ハードウェア割り込みでも実現できる。
例えば,ソフトウェア割り込みを利用して該手段を実現するとき,関数21を呼び出すコードを数式1のように記述すれば,関数21を呼出した時に割り込みを発生させることができるようになる。
Figure 2010134644
数式1において,axはレジスタ名,addressは関数の呼出アドレス,intは割り込みを発生させるCPU11の命令,nnhは,関数呼出し時の割り込みの割り込みベクタテーブルの番号。
図5は,EEPROM14に実装されるパッチテーブル24を説明する図である。図5に図示したようにパッチテーブル24は,パッチが適用された関数21の呼出アドレスに関連付けて該関数21のパッチ25の呼出アドレスが記憶されるデータテーブルである。
図3(b)では,関数名がFunc#a及びFunc#nである関数21にパッチが適用されているため,図5においては,関数名がFunc#aである関数21の呼出アドレスに関連付けて,関数名がFunc#aである関数21のパッチ24の呼出アドレスがパッチテーブル24に記憶され,更に,関数名がFunc#nである関数21の呼出アドレスに関連付けて,関数名がFunc#nである関数21のパッチ24の呼出アドレスがパッチテーブル24に記憶されている。
ここから,本発明に係わる方法の説明も兼ねて,関数呼出し時の割り込みが発生したときの処理について説明する。図6は,関数呼出し時の割り込みが発生したときの処理の流れを示したフロー図である。
ICカード1のROM12に実装されたOS2のメインルーチン20がCPU11で解釈実行されることで,OS2に含まれる関数21の一つが呼び出される,ソフトウェア的に或いはハードウェア的に関数呼出し時の割り込みが発生する(S1)。
関数呼出し時の割り込みが発生すると,CPU11は,ROM12に実装されている割り込みベクタテーブル23を検索し(S2),発生した割り込み(ここでは,関数呼出し時の割り込み)の番号に関連付けられた呼出アドレスを利用し,関数呼出し時の割り込みに対応するモジュールとしてパッチ実行プログラム22を呼出す(S3)。
パッチ実行プログラム22は呼び出されると,EEPROM14に実装されたパッチテーブル24を検索し,関数呼出し時の割り込みが発生したとき呼び出された関数21の呼出アドレス,数式1で言えばレジスタaxに格納されたアドレスがパッチテーブル24に記憶されていないか確認する(S4)。
関数呼出し時の割り込みが発生したときに呼び出された関数21の呼出アドレスがパッチテーブル24に記憶されているか否かによって,パッチ実行プログラム22は処理を分岐させ(S5),該関数21の呼出アドレスがパッチテーブル24に記憶されている場合は,該関数21の呼出アドレスに関連付けられているパッチ25の呼出アドレスを利用して,EEPROM13に実装されている関数21のパッチ25を実行させ(S6),該関数21の呼出アドレスがパッチテーブル24に記憶されていない場合は,関数21の呼出アドレスを利用して,ROM12に実装されている関数21を実行させ(S7),図6で図示した手順は終了する。
このように,本発明に係わるICカード1によれば,ROM12に実装された関数21を呼出すときに割り込みを発生させ,該割り込み処理において,パッチ25を実行させる処理を実行させれば,パッチ25を適用可能とする関数21の数に関わらず,パッチ25を実行させるプログラムは一つで済むようになる。
また,ROM12に実装された関数21を変更するためのパッチ25が実装されたとき,該関数21の呼出アドレスに関連付けて該パッチ25の呼出アドレスが記憶されるパッチテーブル24をEEPROM14に実装しておき,パッチ25を実行させる処理において,パッチテーブル24を参照することで,パッチ25の有無を確認することで,関数呼出し時の割り込みが発生したときに呼び出された関数21と該関数21のパッチ25の実行を管理できるようになる。
本実施形態に係わるICカードの外観を説明する図。 ICカードに実装されるICチップの回路ブロック図。 ICチップのメモリの内容を説明する図。 割り込みベクタテーブルを説明する図。 パッチテーブルを説明する図。 関数呼出し時の割り込みが発生したときの処理の流れを示したフロー図。
符号の説明
1 ICカード
12 ROM
14 EEPROM
2 オペレーティングシステム(OS)
21 関数
22 パッチ実行プログラム
23 割り込みベクタテーブル
24 パッチテーブル
25 パッチ

Claims (4)

  1. 不揮発性メモリである第1のメモリと電気的に書換え可能な不揮発性メモリである第2のメモリを有するICカードであって,前記第1のメモリに実装された関数を変更するためのパッチが実装されたとき,該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルが前記第2のメモリに実装され,前記第1のメモリに実装された関数を呼び出すとき所定の割り込みを発生させる割り込み手段と,前記割り込みが発生したとき,呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索し,該関数の呼出アドレスが検索できた場合,該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して,該関数のパッチを呼び出すコンピュータプログラムを備えていることを特徴とするICカード。
  2. 請求項1に記載のICカードであって,前記コンピュータプログラムは,前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合,該関数の呼出アドレスを利用して,前記第1のメモリに記憶されている前記関数を実行することを特徴とするICカード。
  3. 不揮発性メモリである第1のメモリと電気的に書換え可能な不揮発性メモリである第2のメモリを有するICカードにおいて,前記第1のメモリに実装された関数を変更するためのパッチを実行させる方法であって,前記ICカードが,前記第1のメモリに実装された関数を呼び出すとき所定の割り込みを発生させるステップaと,前記第1のメモリに実装された関数を変更するためのパッチが実装されたとき,該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルから,前記ICカードが,前記ステップaで呼び出された前記関数の呼出アドレスを検索するステップb,前記ICカードが,該関数の呼出アドレスが検索できた場合,該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して,該関数のパッチを呼び出すステップcが実行されることを特徴とするパッチ実行方法。
  4. 請求項3に記載のパッチ実行方法であって,前記ステップbにおいて,前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合,前記ステップcの代わりに,該関数の呼出アドレスを利用して,前記第1のメモリに記憶されている前記関数を実行するステップdが実行されることを特徴とするパッチ実行方法。
JP2008308950A 2008-12-03 2008-12-03 Icカードおよびパッチ実行方法 Withdrawn JP2010134644A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008308950A JP2010134644A (ja) 2008-12-03 2008-12-03 Icカードおよびパッチ実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008308950A JP2010134644A (ja) 2008-12-03 2008-12-03 Icカードおよびパッチ実行方法

Publications (1)

Publication Number Publication Date
JP2010134644A true JP2010134644A (ja) 2010-06-17

Family

ID=42345894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008308950A Withdrawn JP2010134644A (ja) 2008-12-03 2008-12-03 Icカードおよびパッチ実行方法

Country Status (1)

Country Link
JP (1) JP2010134644A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105573788A (zh) * 2015-12-15 2016-05-11 华为技术有限公司 补丁处理的方法和设备以及生成补丁的方法和设备
CN105631505A (zh) * 2014-11-07 2016-06-01 北京同方微电子有限公司 一种支持java卡补丁函数的智能卡
CN106021089A (zh) * 2015-10-30 2016-10-12 北京中电华大电子设计有限责任公司 一种补丁接口的测试方法及装置
CN111868684A (zh) * 2020-01-17 2020-10-30 深圳市汇顶科技股份有限公司 为芯片打补丁的方法及芯片
JP7563181B2 (ja) 2021-01-07 2024-10-08 大日本印刷株式会社 電子情報記憶媒体、パッチプログラムの書き込み方法、及びプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631505A (zh) * 2014-11-07 2016-06-01 北京同方微电子有限公司 一种支持java卡补丁函数的智能卡
CN105631505B (zh) * 2014-11-07 2024-01-05 紫光同芯微电子有限公司 一种支持java卡补丁函数的智能卡
CN106021089A (zh) * 2015-10-30 2016-10-12 北京中电华大电子设计有限责任公司 一种补丁接口的测试方法及装置
CN106021089B (zh) * 2015-10-30 2018-09-18 北京中电华大电子设计有限责任公司 一种补丁接口的测试方法及装置
CN105573788A (zh) * 2015-12-15 2016-05-11 华为技术有限公司 补丁处理的方法和设备以及生成补丁的方法和设备
CN105573788B (zh) * 2015-12-15 2019-02-26 华为技术有限公司 补丁处理的方法和设备以及生成补丁的方法和设备
CN111868684A (zh) * 2020-01-17 2020-10-30 深圳市汇顶科技股份有限公司 为芯片打补丁的方法及芯片
JP7563181B2 (ja) 2021-01-07 2024-10-08 大日本印刷株式会社 電子情報記憶媒体、パッチプログラムの書き込み方法、及びプログラム

Similar Documents

Publication Publication Date Title
CN109643345B (zh) 用于确定性代码流完整性保护的技术
CN102236621B (zh) 计算机接口信息配置系统及方法
US20170289193A1 (en) Secure smart terminal and an information processing method
JP5945313B2 (ja) 構造体を生成する方法および対応する構造体
CN101276389B (zh) 单个物理可信平台模块内的多个逻辑可信平台模块的分离
EP2874091A1 (en) Partition-based apparatus and method for securing bios in a trusted computing system during execution
JP2010134644A (ja) Icカードおよびパッチ実行方法
CN110119601B (zh) 基于应用程序安装包的程序加固方法及装置
JP2006522968A (ja) 携帯型データ・キャリアのバーチャル・マシン向けプログラムの制御実行
CN108399319A (zh) 源代码保护方法、应用服务器及计算机可读存储介质
EP2996034B1 (en) Execution flow protection in microcontrollers
US20200074077A1 (en) Method for Providing a Security-Critical Software Application on a Computer Unit
CN114462044A (zh) 一种基于污点分析的uefi固件漏洞静态检测方法及装置
CN113342425A (zh) 一种Linux嵌入式系统的启动方法、装置和存储介质
US11461479B2 (en) Computing device and method for operating same
US20160232346A1 (en) Mechanism for tracking tainted data
CN108182358B (zh) 文件保护方法、装置、计算设备及计算机存储介质
JP2010113549A (ja) Icカードおよびパッチコードの実行方法
CN111209572B (zh) 一种基于加解密的Linux系统安全启动方法及系统
CN106295327B (zh) 可执行文件的加固方法和装置
CN108021790B (zh) 文件保护方法、装置、计算设备及计算机存储介质
JP2009104589A (ja) 情報処理装置及びその方法、プログラム、記録媒体
TWI415001B (zh) 具有鑑別功能之嵌入式系統及嵌入式系統之鑑別方法
JP2006338311A (ja) 複数のアプリケーションを搭載したデバイスを処理するコンピュータシステム、デバイスおよびコンピュータプログラム
CN104077173A (zh) 智能卡内java程序指令的执行方法及智能卡

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120207