JP2010134644A - Icカードおよびパッチ実行方法 - Google Patents
Icカードおよびパッチ実行方法 Download PDFInfo
- 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
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
【解決手段】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に記憶されたプログラムの容量が大きくなってしまう問題がある。
そこで,本発明は,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を呼出した時に割り込みを発生させることができるようになる。
数式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の実行を管理できるようになる。
1 ICカード
12 ROM
14 EEPROM
2 オペレーティングシステム(OS)
21 関数
22 パッチ実行プログラム
23 割り込みベクタテーブル
24 パッチテーブル
25 パッチ
12 ROM
14 EEPROM
2 オペレーティングシステム(OS)
21 関数
22 パッチ実行プログラム
23 割り込みベクタテーブル
24 パッチテーブル
25 パッチ
Claims (4)
- 不揮発性メモリである第1のメモリと電気的に書換え可能な不揮発性メモリである第2のメモリを有するICカードであって,前記第1のメモリに実装された関数を変更するためのパッチが実装されたとき,該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルが前記第2のメモリに実装され,前記第1のメモリに実装された関数を呼び出すとき所定の割り込みを発生させる割り込み手段と,前記割り込みが発生したとき,呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索し,該関数の呼出アドレスが検索できた場合,該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して,該関数のパッチを呼び出すコンピュータプログラムを備えていることを特徴とするICカード。
- 請求項1に記載のICカードであって,前記コンピュータプログラムは,前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合,該関数の呼出アドレスを利用して,前記第1のメモリに記憶されている前記関数を実行することを特徴とするICカード。
- 不揮発性メモリである第1のメモリと電気的に書換え可能な不揮発性メモリである第2のメモリを有するICカードにおいて,前記第1のメモリに実装された関数を変更するためのパッチを実行させる方法であって,前記ICカードが,前記第1のメモリに実装された関数を呼び出すとき所定の割り込みを発生させるステップaと,前記第1のメモリに実装された関数を変更するためのパッチが実装されたとき,該関数の呼出アドレスに関連付けて前記パッチの呼出アドレスが記憶されるパッチテーブルから,前記ICカードが,前記ステップaで呼び出された前記関数の呼出アドレスを検索するステップb,前記ICカードが,該関数の呼出アドレスが検索できた場合,該関数の呼出アドレスに関連付けられた前記パッチの呼出アドレスを利用して,該関数のパッチを呼び出すステップcが実行されることを特徴とするパッチ実行方法。
- 請求項3に記載のパッチ実行方法であって,前記ステップbにおいて,前記割り込みが発生したときに呼び出された前記関数の呼出アドレスを前記パッチテーブルから検索できない場合,前記ステップcの代わりに,該関数の呼出アドレスを利用して,前記第1のメモリに記憶されている前記関数を実行するステップdが実行されることを特徴とするパッチ実行方法。
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)
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 | 大日本印刷株式会社 | 電子情報記憶媒体、パッチプログラムの書き込み方法、及びプログラム |
-
2008
- 2008-12-03 JP JP2008308950A patent/JP2010134644A/ja not_active Withdrawn
Cited By (8)
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 |