JP2021006973A - 半導体装置、icカード、制御方法およびプログラム - Google Patents

半導体装置、icカード、制御方法およびプログラム Download PDF

Info

Publication number
JP2021006973A
JP2021006973A JP2019121185A JP2019121185A JP2021006973A JP 2021006973 A JP2021006973 A JP 2021006973A JP 2019121185 A JP2019121185 A JP 2019121185A JP 2019121185 A JP2019121185 A JP 2019121185A JP 2021006973 A JP2021006973 A JP 2021006973A
Authority
JP
Japan
Prior art keywords
patch
function
entry point
module
program
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.)
Granted
Application number
JP2019121185A
Other languages
English (en)
Other versions
JP7284003B2 (ja
Inventor
和重 荒井
Kazue Arai
和重 荒井
祐樹 岩井
Yuki Iwai
祐樹 岩井
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.)
Toppan Inc
NTT Data Group Corp
Original Assignee
NTT Data Corp
Toppan 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 NTT Data Corp, Toppan Printing Co Ltd filed Critical NTT Data Corp
Priority to JP2019121185A priority Critical patent/JP7284003B2/ja
Publication of JP2021006973A publication Critical patent/JP2021006973A/ja
Application granted granted Critical
Publication of JP7284003B2 publication Critical patent/JP7284003B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】プログラムにおけるエントリポイントの数の増加による、プログラムに記憶されたROMコードの実行時間の増加を抑制し、かつパッチ処理に必要な情報を記憶させる記憶領域の増加を抑制し、EEPROM等の書き換え可能なメモリからなる記憶部における利用可能領域を圧縮することがない半導体装置を提供する。【解決手段】半導体装置1は、プログラムが記憶された、データ書き換え不可能な第1記憶部131と、プログラムを実行する制御部11と、データ書き換え可能であり、プログラムにおける関数モジュールと置き換えるモジュールであるパッチが記憶される第2記憶部132と、第2記憶部132に設けられた、プログラムの関数モジュールに付加されたエントリポイントの全てにおいて、パッチが用意されたエントリポイントが一つ以上存在するか否かを示すパッチ有無フラグを含むパッチデータを記憶するパッチパラメータ領域350とを備える。【選択図】図1

Description

本発明は、半導体装置、ICカード、制御方法およびプログラムに関する。
近年、IC(integrated circuit)カードが多くの業種で用いられており、ICカードに組み込まれるオペレーティングシステム・プログラムやアプリケーション・プログラムも用途に応じて多種多様である。
これらのプログラムは、ICカードの作成時において、書き換えできないプログラムコード(以下、ROM(read only memory)コードと示す)として、マスクROMやフラッシュメモリなどに書き込まれている。
上述したように、出荷時に書き込まれたプログラムの書き換えができないことにより、ROMコードとして書き込まれているプログラムに不具合が見つかった場合、このICカードの不具合を修正したプログラムが書き込まれたICカードと交換する必要がある。
近年、一枚のICカードに対して多くの機能を持たせる場合が多く、プログラムのコード数が多くなり、プログラムの動作に不具合を生じる割合が高くなっている。
このため、ROMコードの修正が発生する可能性が高いと推定される箇所に、修正プログラム(以下、パッチと示す)の適用をチェックする入り口(以下、エントリポイント)を設ける。
そして、パッチプログラムを書き換え可能なフラッシュメモリやEEPROM(electrically erasable programmable read only memory)にロードしておき、ROMコードの置き換えが必要であるか否かを、上記エントリポイントにおいて判定して、不具合のあったROMコードをパッチプログラムで置き換えて、プログラムのROMコードの修正を行っている(例えば、特許文献1参照)。
特許第5017868号公報
上述したように、不具合などにより修正する必要のあるプログラムのROMコードに代え、パッチプログラムが実行される(以下、パッチ処理と示す)場合、プログラムのROMコードに設けられたエントリポイントから、外部装置からロードしてフラッシュメモリやEEPROMに書き込まれたパッチプログラムが呼び出される。
このとき、プログラムのROMコードに対してパッチ処理を行う際、エントリポイントに対応したパッチプログラムが用意されているか否かの検索を行う。
ここで、特許文献1においては、エントリポイントの各々にパッチが用意されているか否かを示すエントリポイントテーブルを設けておき、エントリポイント毎に付番した番号によりこのエントリポイントテーブルを検索する。
そして、検索の結果において抽出したエントリポイントの番号に対応して、このエントリポイントのROMコードに対するパッチがあるか否かにより、エントリポイントにおけるパッチ処理が必要か否かの判定が行われる。
パッチ処理が必要である場合、エントリポイントテーブルにおいてエントリポイントに対応して記載されたパッチプログラムのアドレスを読出し、対象となるエントリポイントにおけるパッチ処理が行われる。
しかしながら、エントリポイントの数が増加するに従い、プログラムのROMコードにおけるエントリポイント毎に、エントリポイントテーブルを参照してパッチ処理を実行するための時間も増加して、プログラムの実行速度を低下させる原因となる。
また、引用文献1のように、エントリポイントテーブルにおいて、エントリポイント毎にパッチプログラムのアドレスを記載する場合、少なくともエントリポイントの数分、エントリポイントのID、エントリポイントに対応するパッチの有無、パッチのROMコードのアドレスを記載するための記憶領域が必要となり、フラッシュメモリやEEPROMにおける利用可能領域を低減させる。
本発明は、このような状況に鑑みてなされたもので、プログラムに付加されているエントリポイント毎にエントリポイントテーブルを用意することなくパッチプログラムを実行することにより、プログラムに記憶されたROMコードの実行時間の増加を抑制し、かつパッチ処理に必要な情報を記憶させるための記憶領域の増加を抑制し、フラッシュメモリやEEPROMなどの書き換え可能なメモリからなる記憶部における利用可能領域を低減させることがない半導体装置、ICカード、制御方法およびプログラムを提供する。
上述した課題を解決するために、本発明の一態様は、プログラムが記憶され、記憶されたデータの書き換えが不可能な第1記憶部と、前記プログラムを実行する制御部と、記憶されたデータの書き換えが可能であり、前記プログラムにおける前記関数モジュールと置き換えるモジュールであるパッチが記憶される第2記憶部と、前記第2記憶部に設けられており、前記プログラムにおける関数モジュールに付加されたエントリポイントの全てにおいて、前記パッチが用意されたエントリポイントが、少なくとも一つ以上存在するか否かを示すパッチ有無フラグを含むパッチデータを記憶するパッチパラメータ領域とを備えることを特徴とする半導体装置である。
また、本発明の一態様は、上記半導体装置であって、関数モジュールに配置された前記エントリポイントの各々を、当該関数モジュールの機能の種類に対応した機能グループそれぞれに分類しており、前記パッチデータが、前記機能グループに含まれる前記エントリポイントにおいて、前記パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグを含む。
また、本発明の一態様は、上記半導体装置であって、前記エントリポイントを識別するエントリポイント識別情報が、前記機能グループを示すグループ情報と、当該機能グループにおける前記エントリポイントに対応するパッチを示すパッチ情報とが組み合わされて生成されている。
また、本発明の一態様は、上記半導体装置であって、前記第2記憶部に対して自身の製造後に書き込まれた、前記関数モジュールと置き換えるパッチを含むパッチモジュールをさらに備え、前記制御部が、前記関数モジュールを実行する際、当該関数モジュールが前記エントリポイントを有する場合、前記パッチ有無フラグが前記パッチの用意されたエントリポイントがあることを示し、かつ当該関数モジュールのグループ情報が示す前記機能グループの前記パッチ機能フラグが当該機能グループに前記パッチが用意されたエントリポイントがあることを示す場合、前記パッチモジュールを実行する。
また、本発明の一態様は、上記半導体装置であって、前記パッチモジュールにおいて、前記エントリポイントのパッチ情報に対応した前記パッチの各々が、前記機能グループ単位に分類されている。
また、本発明の一態様は、上記半導体装置であって、前記制御部が、前記パッチモジュールに記載された機能グループにおける前記パッチのなかから前記パッチ情報に対応するパッチを、前記関数モジュールに代えて実行する。
また、本発明の一態様は、少なくとも、上記半導体装置が搭載されているICカードである。
また、本発明の一態様は、記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイントが付加された関数モジュールを含むプログラムを制御部が実行する際、前記エントリポイントを識別するエントリポイント識別情報が、前記関数モジュールの機能の種類に対応した機能グループを示すグループ情報と、当該機能グループにおける前記関数モジュールに対応するパッチを示すパッチ情報とが含まれており、前記制御部が、第2記憶部に記憶されている前記プログラムにおけるエントリポイントの全てにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ有無フラグと、前記機能グループに含まれる前記エントリポイントにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグとを参照する過程と、前記制御部が、前記パッチ有無フラグが前記パッチが有ることを示し、かつ前記エントリポイントが含まれるパッチ機能フラグがパッチが有ることを示した場合、記憶されたデータの書き換えが可能な第2記憶部から、エントリポイントのパッチのプログラムを有するパッチモジュールを読出す過程と、前記制御部が、前記パッチモジュールにおいて前記機能グループに前記パッチが用意された前記エントリポイントがある場合、当該機能グループにおける前記パッチのなかから前記パッチ情報に対応するパッチを、前記関数モジュールに代えて実行する過程とを含む制御方法である。
また、本発明の一態様は、記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイント識別情報に識別されるエントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、前記コンピュータを、第2記憶部に記憶されている前記プログラムにおけるエントリポイントの全てにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ有無フラグと、前記関数モジュールを機能別に分類した機能グループに含まれる前記エントリポイントにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグとを参照する手段、前記パッチ有無フラグが前記パッチが有ることを示し、かつ前記エントリポイントが含まれるパッチ機能フラグがパッチが有ることを示した場合、記憶されたデータの書き換えが可能な第2記憶部から、エントリポイントのパッチのプログラムを有するパッチモジュールを実行する手段として機能させるプログラムである。
また、本発明の一態様は、記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイント識別情報に識別されるエントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、前記コンピュータを、前記エントリポイントのパッチのプログラムを有するパッチモジュールにおいて、前記関数モジュールを機能別に分類した機能グループに前記パッチが用意された前記エントリポイントがある場合、当該機能グループにおける前記パッチのなかから、前記エントリポイントに対応するパッチを示すパッチ情報に対応するパッチを、前記関数モジュールに代えて実行する手段、として機能させ、前記エントリポイント識別情報が、前記関数モジュールの機能の種類に対応した機能グループを示すグループ情報と、当該機能グループにおける前記関数モジュールに対応するパッチを示す前記パッチ情報とが含まれているプログラムである。
以上説明したように、本発明によれば、プログラムに付加されているエントリポイント毎にエントリポイントテーブルを用意することなくパッチプログラムを実行することにより、プログラムに記憶されたROMコードの実行時間の増加を抑制し、かつパッチ処理に必要な情報を記憶させるための記憶領域の増加を抑制し、EEPROMなどの書き換え可能なメモリからなる記憶部における利用可能領域を低減させることがない半導体装置、制御方法およびプログラムを提供する。
本発明の一実施形態による半導体装置1の構成例を示すブロック図である。 EEPROM132のパッチパラメータ領域に書き込まれるパッチパラメータ350の構成例を示す図である。 プログラム150におけるエントリポイントの付加された関数モジュールの記述例を示す図である。 エントリポイントモジュールにおけるパッチ関数により実行されるパッチモジュールの記述例を示す図である。 プログラム150における第1分岐処理及び第2分岐処理の動作例を説明するフローチャートである。 関数モジュールにおけるエントリポイントに対応したパッチが存在しない場合の第1分岐処理及び第2分岐処理の動作を説明する概念図である。 関数モジュールにおけるエントリポイントに対応したパッチが存在する場合の第1分岐処理及び第2分岐処理の動作を説明する概念図である。 エントリポイントモジュール700から読み出されるパッチモジュールにおける第3分岐処理の動作例を説明するフローチャートである。
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本発明の一実施形態による半導体装置1の構成例を示すブロック図である。
図1において、半導体装置1は、CPU(central processing unit)、メモリなどを構成する半導体素子を用いたIC(integrated circuit)を備え、情報を処理および記憶する装置である。
半導体装置1は、ICカード、SIM(subscriber identity module)カードなどである。図1に示す半導体装置1は、制御部11とデータ入出力部12と記憶部13とを備える。
制御部11は、CPU111を備え、記憶部13に記憶されているプログラム(例えば、アプリケーションプログラムや後述するモジュールなどのプログラム)を実行することで、所定の処理を行う。
データ入出力部12は、所定のプロトコルに従って外部装置(不図示)とのデータの送受信を行う。
記憶部13は、ROM131、EEPROM132及びRAM(random access memory)133を有する。
ROM131には、半導体装置1の製造の際に書き込まれる、ROMコードの形態のプログラム150が記憶されている。このプログラム150は、例えば、公共系、金融系及び交通系などの業界あるいはグループの提供するICカードで利用するサービスの処理を行うアプリケーションプログラムなどである。ROM131において、プログラム150はROMコードで書き込まれているため、不具合を有する関数モジュールが含まれていても書き換えることができない。本実施形態において、ROMコードでプログラムが記載された書き換え不能のROMとしてマスクROM131を用いているが、マスクROMに換えてフラッシュメモリを用いてもよい。
このため、上記プログラム150には、不具合が発生して修正することが予想される、あるいはアプリケーションの関係で書き換えることを前提とする関数モジュールに対してエントリポイントを付加させてある。
本実施形態においては、上記エントリポイントを識別するエントリポイント識別情報が、機能番号及び個別番号との組合せで形成されている。
機能番号は、プログラム150における関数モジュールの各々を機能(例えば、暗号機能、通信機能、数値計算機能などの各種機能)別に分類した機能グループを識別するグループ情報である。
個別番号は、機能番号が示す各々の機能グループにおいて、この機能グループに含まれるパッチのそれぞれを個別に識別するパッチ情報である。
本実施形態において、エントリポイント識別情報は2バイト(xxyyh)で記述されており、機能番号がxxhの1バイト、個別番号がyyhの1バイトである。
例えば、暗号機能の機能番号が01hであり、暗号機能の機能グループにおける個別番号が02hである場合、エントリポイント識別情報は、0102hで表される。
また、本実施形態においては、1バイトの機能番号と1バイトの個別番号とで、エントリポイント識別情報が2バイトとして説明している。しかしながら、プログラムに含まれる関数モジュール(エントリポイントが付加される関数モジュール)の機能の種類の数と、機能グループにおけるパッチの数とにより、エントリポイント識別情報のバイト数を任意に設定する。
EEPROM132には、パッチモジュール250とパッチパラメータ350とが記憶されている。EEPROM132は、書き換え可能な不揮発性メモリであれば何れでもよく、例えばフラッシュメモリを用いた構成としてもよい。
ここで、制御部11は、データ入出力部12を介して、外部装置からパッチモジュール250が供給された場合、パッチモジュール250と、このパッチモジュール250に対応したパッチパラメータ350をEEPROM132に書き込んで記憶させる。
パッチモジュール250(後述する800)は、プログラム150において、不具合などで修正を必要とする関数モジュール、言い換えると、関数モジュールに付加されたエントリポイントに対応するパッチプログラムが、その関数モジュールの機能の種類で分類されてそれぞれの機能グループ単位に記述されている(詳細は後述)。
パッチパラメータ350は、少なくとも、パッチ有無フラグと、パッチ機能フラグと、パッチ領域先頭アドレスとである。パッチパラメータ350は、EEPROM132における予め設定されたアドレスが既知のパッチパラメータ領域に書き込まれている。
図2は、EEPROM132のパッチパラメータ領域に書き込まれるパッチパラメータ350の構成例を示す図である。
パッチ有無フラグ301は、エントリポイントが付加された関数モジュールの各々において、置き換えるパッチが存在する関数モジュールが少なくとも1個以上あるか否かを示すフラグである。パッチ有無フラグは、例えば、置き換えるパッチが存在する関数モジュールが少なくとも1個以上ある場合「ON」であり、一方、置き換えるパッチが存在する関数モジュールが無い場合「OFF」である。
パッチ機能フラグ302、303及び304の各々は、関数モジュールの機能の種類毎に分類した機能グループにおいて、置き換えるパッチが存在する関数モジュールが少なくとも1個以上あるか否かを示すフラグである。パッチ機能フラグ302、303及び304の各々は、例えば、それぞれに対応する機能グループ毎に置き換えるパッチが存在する関数モジュールが少なくとも1個以上ある場合「ON」であり、一方、置き換えるパッチが存在する関数モジュールが全く無い場合「OFF」である。例えば、パッチ機能フラグ302は、機能番号00hの示す、例えばメイン機能の機能グループに対応したフラグである。パッチ機能フラグ303は、機能番号01hの示す、例えば通信機能の機能グループに対応したフラグである。パッチ機能フラグ304は、機能番号02hの示す、例えば暗号機能の機能グループに対応したフラグである。
パッチ領域先頭アドレス305は、EEPROM132におけるパッチモジュール250が書き込まれた記憶領域の先頭アドレスを示している。
RAM133は、制御部11がプログラム150を実行する際のメインメモリとして用いられる。
図3は、プログラム150におけるエントリポイントの付加された関数モジュールの記述例を示す図である。
図3において、プログラム150は、例えば、メイン関数モジュール500、関数モジュール600、エントリポイントモジュール700などを備えている。
メイン関数モジュール500には、所定のアプリケーションの機能を実行するために必要な関数501や502などの複数の関数が記述されている。
関数モジュール600は、制御部11が実際に実行する関数501の機能に対応した処理を示す実体のコードが記述されている。
関数501にエントリポイントが設定されている場合、メイン関数モジュール600には、エントリポイント関数601のコードが付加されている。
エントリポイント関数601は、エントリポイントモジュール700を呼び出して実行させる関数である。
エントリポイントモジュール700には、制御部11が実際に実行するエントリポイント関数601の機能に対応した処理を示す実体のコードが記述されている。エントリポイントモジュール700には、第1分岐処理701、機能番号抽出処理702、第2分岐処理703が記述されている。ここで、第1分岐処理701は、パッチ有無フラグがONか否かを判定する処理である。機能番号抽出処理702は、エントリポイント識別情報から機能番号を抽出する処理である。第2分岐処理703は、パッチ機能フラグがONか否かを判定する処理である。
第2分岐処理703には、パッチ機能フラグがONの場合に、パッチモジュール800(図4参照)を実行させるパッチ関数704が記述されている。
図1に戻り、制御部11は、関数501を実行する際、関数501に記述されている関数501の実体である関数モジュール600の記憶されたアドレス(マスクROM131におけるアドレス)を読み込み、関数モジュール600を実行する。ここで、実体とは、制御部11が実際に実行する関数501の機能が記述されたROMコードを示している。
そして、制御部11は、関数モジュール600がエントリポイント関数601を含む場合、エントリポイント関数601に記述されたエントリポイントモジュール700を呼び出すアドレスを読み込み、エントリポイントモジュール700のROMコードの処理を実行する。
このとき、制御部11は、エントリポイントモジュール700に記述された第1分岐処理701の記述の処理により、EEPROM132のパッチパラメータ領域におけるパッチパラメータ350のパッチ有無フラグを参照する。
そして、制御部11は、パッチ有無フラグがONであるか否かの判定を行い、ONであれば機能番号抽出処理702の記述の処理を実行し、一方、パッチ有無フラグがOFFであれば、関数モジュール600に戻る処理(リターン処理)を行い、関数モジュール600に記述された処理を実行する。
また、制御部11は、パッチ有無フラグがONである場合、エントリポイントモジュール700に記述された機能番号抽出処理702の処理により、エントリポイント識別情報から機能番号を抽出する。
そして、制御部11は、EEPROM132におけるパッチパラメータ領域に記憶されているパッチパラメータ350において、抽出した機能番号に対応するパッチ機能フラグを参照する。
制御部11は、参照したパッチ機能フラグがONであるか否かの判定を行い、ONであればパッチ関数704に対応してパッチモジュール800の処理を実行し、一方、パッチ機能フラグがOFFであれば、関数モジュール600に戻り、関数モジュール600に記述された処理を実行する。
制御部11は、EEPROM132において、パッチモジュール800が記憶された記憶領域の先頭アドレスであるパッチ領域先頭アドレス305を、パッチパラメータ350から読み出す。
そして、制御部11は、パッチ領域先頭アドレス305の領域に記憶されているパッチモジュール800に記述された処理を実行する。
図4は、エントリポイントモジュールにおけるパッチ関数により実行されるパッチモジュールの記述例を示す図である。パッチモジュールは、プログラム150の不具合を修正する必要が生じた際、制御部11が外部装置からパッチモジュール800(パッチモジュール250)のコードをロードして、EEPROM132に、パッチパラメータ350とともに書き込んで記憶させる。
図4において、パッチモジュール800には、制御部11が実際に実行するパッチ関数704の入れ替えるべき関数モジュールに対するパッチ処理を示す実体のコードが記述されている。すなわち、パッチモジュール800には、機能番号及び個別番号抽出処理801、パッチ機能フラグ確認処理802、第3分岐処理803、エントリポイント修正処理804、第3分岐処理805、エントリポイント修正処理806、パッチ機能フラグ確認処理807などが記述されている。
機能番号及び個別番号抽出処理801は、エントリポイント識別情報から、エントリポイントに付与されている機能番号及び個別番号の各々を抽出する処理である。
パッチ機能フラグ確認処理802及び807の各々は、それぞれ機能番号02h、06hのパッチ機能フラグがONであるか否かの判定を行う。このパッチ機能フラグ確認処理は、関数モジュールを置き換えるパッチが少なくとも1個が存在する機能グループに対応して設けられている。
第3分岐処理803及び805の各々は、それぞれエントリー識別情報から抽出された個別番号が01h、03hであるか否かを判定している。この第3分岐処理は、機能ブロックにおける関数モジュールと置き換えるパッチに対応した個数が設けられている。
エントリポイント修正処理804及び806の各々は、それぞれエントリー識別情報から抽出された個別番号が01h、03hであった場合に、関数モジュールとパッチとを置き換えるパッチ処理として記述されている。
図1に戻り、制御部11は、機能番号及び個別番号抽出処理801の記述に対応して、引数として得られたエントリポイント識別情報から、対応するエントリポイントの機能番号及び個別番号の各々を抽出する。
次に、制御部11は、EEPROM132のパッチパラメータ領域におけるパッチパラメータ350において、抽出した機能番号に対応するパッチ機能フラグを参照する。
そして、制御部11は、抽出した機能番号に対応したパッチ機能フラグ確認処理、例えば、機能番号が02hである場合、パッチ機能フラグ確認処理802を実行する。一方、制御部11は、抽出し機能番号が06hである場合にパッチ機能フラグ確認処理807を実行する。
制御部11は、抽出した機能番号に対応するパッチ機能フラグ確認処理を実行し、抽出した機能番号の示すパッチ機能フラグがONであるか否かの判定を行う。
そして、制御部11は、抽出した機能番号の示すパッチ機能フラグがONである場合、第3分岐処理803、805、…などを順次実行し、抽出した個別番号に対応する第3分岐処理の有無を判定する。例えば、抽出した機能番号が02hであり、機能番号02hのパッチ機能フラグがONである場合、制御部11は、順次、第3分岐処理803、805、…において、抽出した個別番号と一致する第3分岐処理があるか否かの判定を行う。
このとき、制御部11は、個別番号が01hか否かの判定を行う第3分岐処理803において、抽出した個別番号が01hである場合、第3分岐処理803に記述されたエントリポイント修正処理804を実行する。
また、制御部11は、個別番号が03hか否かの判定を行う第3分岐処理805において、抽出した個別番号が03hである場合、第3分岐処理805に記述されたエントリポイント修正処理806を実行する。
一方、制御部11は、抽出した個別番号に対応する第3分岐処理が存在しない場合、関数モジュール600に戻り、当該関数モジュール600の機能処理をコード記述に対応して実行する。
上記構成により、本実施形態によれば、第1分岐処理により、メイン関数モジュール500においてエントリポイントが付加された関数の関数モジュールの中に、パッチと置き換える関数モジュールが少なくとも1個以上あるか否かをパッチ有無フラグで確認するため、置き換えを行う関数モジュールが無い場合、従来のようにテーブルを参照してエントリポイントに対応するパッチの有無を、テーブルのエントリポイント毎に確認する必要が無く、プログラムの処理速度を向上させることができる。
また、本実施形態によれば、関数モジュールの機能の種類毎の機能グループに分類する機能番号と、機能グループ内におけるパッチを識別する個別番号とを組み合わせ、各エントリポイントを識別するエントリポイント識別情報を構成しているため、エントリポイント毎にそれぞれの属する機能グループに対応するパッチ機能フラグにより、パッチと置き換える関数モジュールが少なくとも1個以上あるか否かを判定するため、エントリポイントの属する機能ブロックの機能番号に対応したパッチ機能フラグがOFFである場合、従来のようにテーブルを参照してエントリポイントに対応するパッチの有無を、テーブルのエントリポイント毎に確認する必要が無く、プログラムの処理速度を向上させることができる。一方、エントリポイントの属する機能ブロックの機能番号に対応したパッチ機能フラグがONである場合、機能ブロックに属するパッチと置き換える関数モジュールに対応した個数の第3分岐処理により、エントリポイントの個別番号に対応するパッチ処理を検索する。
上述したように、本実施形態によれば、上記第1分岐処理、第2分岐処理及び第3分岐処理により、従来のようにエントリポイントに対するパッチの有無を、エントリポイントが存在する毎に、このエントリポイントと、テーブルにおける全てのエントリポイントの各々とを比較し、関数モジュールと置き換えるパッチを検索する処理を行わないため、プログラムにおける関数モジュールにおいてエントリポイントが付加された全ての関数モジュールと、当該関数モジュールと置き換えるパッチとの対応を示すテーブルを設ける必要がなくなり、エントリポイントが増加しても、従来のようにパッチのコード以外のパッチ処理に必要な記憶領域の増加が抑制することが可能となり、EEPROMなどの書き換え可能なメモリからなる記憶部における利用可能領域の圧迫を防止することができる。
以下、図5、図6及び図7を用いて、本実施形態における第1分岐処理及び第2分岐処理の動作を説明する、図5は、プログラム150における第1分岐処理及び第2分岐処理の動作例を説明するフローチャートである。図6は、関数モジュールにおけるエントリポイントに対応したパッチが存在しない場合の第1分岐処理及び第2分岐処理の動作を説明する概念図である。図6(a)は、パッチパラメータにおけるパッチ有無フラグ、パッチ先頭アドレス及びパッチ機能フラグの設定を示している。図6(b)は、メイン関数モジュール500、関数モジュール600及びエントリポイントモジュール700のコードの記述例を示している。図7は、関数モジュールにおけるエントリポイントに対応したパッチが存在する場合の第1分岐処理及び第2分岐処理の動作を説明する概念図である。図7(a)は、パッチパラメータにおけるパッチ有無フラグ、パッチ先頭アドレス及びパッチ機能フラグの設定を示している。図7(b)は、メイン関数モジュール500、関数モジュール600、エントリポイントモジュール700及びパッチモジュール800のコードの記述例を示している。
制御部11は、プログラム150を実行し、メイン関数モジュール500における関数501の実体である関数モジュール600を呼び出して処理を行う。このとき、制御部11は、エントリポイント関数601(エントリポイント)の検出を行う(ステップS1)。
制御部11は、エントリポイント関数601の処理において、エントリポイントモジュール700を呼び出す。制御部11は、EEPROM132におけるパッチパラメータ350を参照し、パッチ有無フラグを読み込む(ステップS2)。
制御部11は、読み込んだパッチ有無フラグがONであるか否かの判定を行う(ステップS3)。このとき、制御部11は、読み込んだパッチ有無フラグがONである(図7(a)の記載、パッチ領域先頭アドレスとして、例えば、012345hが記述されている)場合、処理をステップS4へ進める。
一方、制御部11は、読み込んだパッチ有無フラグがOFFである(図6(a)の記載、パッチ領域先頭アドレスが記述されていない)場合、処理を終了する。すなわち、制御部11は、関数モジュール600に戻り、関数モジュール600における関数501の処理を行う。
上述したステップS2及びステップS3が第1分岐処理である。
制御部11は、エントリポイント関数601から引数として与えられるエントリポイント識別情報、例えばエントリポイント識別情報0201hから、2バイトにおける上位1バイトの機能番号02hを抽出する(ステップS4)。
制御部11は、EEPROM132におけるパッチパラメータ350を参照し、機能番号に対応する、すなわち機能番号02hに対応するパッチ機能フラグを読み込み、機能グループにパッチがある(関数モジュールに対してパッチが適用されている)ことを確認する(ステップS5)。
制御部11は、パッチ機能フラグがONか否かにより、処理中の関数モジュールの属する機能グループ内にパッチが適用されている関数モジュールが有るか否かの判定を行う(ステップS6)。このとき、制御部11は、パッチ機能フラグがONである(機能番号の示す機能グループ内の関数モジュールにパッチが適用されている)場合、処理をステップS7へ進める。一方、制御部11は、パッチ機能フラグがOFFである(機能番号の示す機能グループ内の関数モジュールにパッチが適用されていない)場合、処理を終了する。すなわち、制御部11は、エントリポイントモジュール700から関数モジュール600に戻り、関数モジュール600における関数501の処理を行う。
上述したステップS5及びステップS6が第2分岐処理である。
制御部11は、パッチ関数704を実行し、EEPROM132におけるパッチパラメータ350を参照し、パッチ領域先頭アドレス(012345h)を読み込み、このパッチ先頭アドレスによりパッチモジュール800を呼び出して、パッチ処理(第3分岐処理を含む)を行う(ステップS7)。
以下、図8及び図7を用いて、本実施形態における第3分岐処理の動作を説明する、図8は、エントリポイントモジュール700から読み出されるパッチモジュール800における第3分岐処理の動作例を説明するフローチャートである。
制御部11は、エントリポイントモジュール700において、機能番号及び個別番号抽出処理801により、エントリポイントモジュール700から引数として与えられるエントリポイント識別情報0201hから、上位1バイトの02hを機能番号として、下位1バイトの01hを個別番号として抽出する(ステップS11)。
制御部11は、EEPROM132におけるパッチパラメータ350を参照し、抽出した機能番号02hに対応するパッチ機能フラグを読み込む。制御部11は、抽出した機能フ番号02hに対応するパッチ機能フラグ確認処理802を行う(ステップS12)。
制御部11は、機能番号02hに対応するパッチ機能フラグがONであるか否かにより、分岐がある(機能番号02hに対応する機能グループにおいて関数モジュールと置き換えるパッチがあり、個別番号を検索するという分岐がある)か否かの判定を行う(ステップS13)。このとき、制御部11は、機能番号02hに対応するパッチ機能フラグがONである(個別番号を検索するという分岐がある)場合、処理をステップS13へ進める。一方、制御部11は、パッチ機能フラグがOFFである(個別番号を検索するという分岐がない)場合、処理を終了する。すなわち、制御部11は、パッチモジュール800から、エントリポイントモジュール700を介して関数モジュール600に戻り、関数モジュール600における関数501の処理を行う。
制御部11は、パッチ機能フラグ確認処理802における第3分岐処理を順次行い、抽出した個別番号01hの第3分岐処理803の有無、すなわちパッチを適用するという分岐が有るかを確認する(ステップS14及びステップS15)。このとき、制御部11は、パッチを適用するという分岐としての第3分岐処理803が有る場合、処理をステップS16へ進める。一方、制御部11は、パッチを適用するという分岐としての第3分岐処理803が有る場合、処理を終了する。すなわち、制御部11は、パッチモジュール800から、エントリポイントモジュール700を介して関数モジュール600に戻り、関数モジュール600における関数501の処理を行う。
制御部11は、エントリポイント識別情報0201hの関数モジュールに対する修正処理(エントリポイント修正処理804)を行う(ステップS16)。
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
1…半導体装置
11…制御部
12…データ入出力部
13…記憶部
111…CPU
131…マスクROM
132…EEPROM
133…RAM
150…プログラム
250,800…パッチモジュール
350…パッチパラメータ
600…関数モジュール
700…エントリポイントモジュール

Claims (10)

  1. プログラムが記憶された、記憶されたデータの書き換えが不可能な第1記憶部と、
    前記プログラムを実行する制御部と、
    記憶されたデータの書き換えが可能であり、前記プログラムにおける前記関数モジュールと置き換えるモジュールであるパッチが記憶される第2記憶部と、
    前記第2記憶部に設けられており、前記プログラムにおける関数モジュールに付加されたエントリポイントの全てにおいて、前記パッチが用意されたエントリポイントが、少なくとも一つ以上存在するか否かを示すパッチ有無フラグを含むパッチデータを記憶するパッチパラメータ領域と
    を備えることを特徴とする半導体装置。
  2. 関数モジュールに配置された前記エントリポイントの各々を、当該関数モジュールの機能の種類に対応した機能グループそれぞれに分類しており、
    前記パッチデータが、前記機能グループに含まれる前記エントリポイントにおいて、前記パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグを含む
    ことを特徴とする請求項1に記載の半導体装置。
  3. 前記エントリポイントを識別するエントリポイント識別情報が、前記機能グループを示すグループ情報と、当該機能グループにおける前記エントリポイントに対応するパッチを示すパッチ情報とが組み合わされて生成されている
    ことを特徴とする請求項2に記載の半導体装置。
  4. 前記第2記憶部に対して自身の製造後に書き込まれた、前記関数モジュールと置き換えるパッチを含むパッチモジュールをさらに備え、
    前記制御部が、前記関数モジュールを実行する際、当該関数モジュールが前記エントリポイントを有する場合、前記パッチ有無フラグが前記パッチが用意されたエントリポイントがあることを示し、かつ当該関数モジュールのグループ情報が示す前記機能グループの前記パッチ機能フラグが当該機能グループに前記パッチが用意されたエントリポイントがあることを示す場合、前記パッチモジュールを実行する
    ことを特徴とする請求項3に記載の半導体装置。
  5. 前記パッチモジュールにおいて、
    前記エントリポイントのパッチ情報に対応した前記パッチの各々が、前記機能グループ単位に分類されている
    ことを特徴とする請求項4に記載の半導体装置。
  6. 前記制御部が、
    前記パッチモジュールに記載された機能グループにおける前記パッチのなかから前記パッチ情報に対応するパッチを、前記関数モジュールに代えて実行する
    ことを特徴とする請求項5に記載の半導体装置。
  7. 少なくとも、請求項1から請求項6のいずれか一項に記載の半導体装置が搭載されている
    ことを特徴とするICカード。
  8. 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイントが付加された関数モジュールを含むプログラムを制御部が実行する際、
    前記エントリポイントを識別するエントリポイント識別情報が、前記関数モジュールの機能の種類に対応した機能グループを示すグループ情報と、当該機能グループにおける前記関数モジュールに対応するパッチを示すパッチ情報とが含まれており、
    前記制御部が、第2記憶部に記憶されている前記プログラムにおけるエントリポイントの全てにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ有無フラグと、前記関数モジュールの機能の種類に対応した機能グループに含まれる前記エントリポイントにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグとを参照する過程と、
    前記制御部が、前記パッチ有無フラグが前記パッチが有ることを示し、かつ前記エントリポイントが含まれるパッチ機能フラグがパッチが有ることを示した場合、記憶されたデータの書き換えが可能な第2記憶部から、エントリポイントのパッチのプログラムを有するパッチモジュールを読出す過程と、
    前記制御部が、前記パッチモジュールにおいて前記機能グループに前記パッチが用意された前記エントリポイントがある場合、当該機能グループにおける前記パッチのなかから前記パッチ情報に対応するパッチを、前記関数モジュールに代えて実行する過程と
    を含むことを特徴とする制御方法。
  9. 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイント識別情報に識別されるエントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、
    前記コンピュータを、
    第2記憶部に記憶されている前記プログラムにおけるエントリポイントの全てにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ有無フラグと、前記関数モジュールを機能別に分類した機能グループに含まれる前記エントリポイントにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグとを参照する手段、
    前記パッチ有無フラグが前記パッチが有ることを示し、かつ前記エントリポイントが含まれるパッチ機能フラグがパッチが有ることを示した場合、記憶されたデータの書き換えが可能な第2記憶部から、エントリポイントのパッチのプログラムを有するパッチモジュールを実行する手段
    として機能させるプログラム。
  10. 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイント識別情報に識別されるエントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、
    前記コンピュータを、
    前記エントリポイントのパッチのプログラムを有するパッチモジュールにおいて、前記関数モジュールを機能別に分類した機能グループに前記パッチが用意された前記エントリポイントがある場合、当該機能グループにおける前記パッチのなかから、前記エントリポイントに対応するパッチを示すパッチ情報に対応するパッチを、前記関数モジュールに代えて実行する手段、
    として機能させ、前記エントリポイント識別情報が、前記関数モジュールの機能の種類に対応した機能グループを示すグループ情報と、当該機能グループにおける前記関数モジュールに対応するパッチを示す前記パッチ情報とが含まれている
    プログラム。
JP2019121185A 2019-06-28 2019-06-28 半導体装置、icカード、制御方法およびプログラム Active JP7284003B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019121185A JP7284003B2 (ja) 2019-06-28 2019-06-28 半導体装置、icカード、制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019121185A JP7284003B2 (ja) 2019-06-28 2019-06-28 半導体装置、icカード、制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2021006973A true JP2021006973A (ja) 2021-01-21
JP7284003B2 JP7284003B2 (ja) 2023-05-30

Family

ID=74174482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019121185A Active JP7284003B2 (ja) 2019-06-28 2019-06-28 半導体装置、icカード、制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JP7284003B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6355631A (ja) * 1986-08-27 1988-03-10 Fujitsu Ltd プログラムのパツチ管理方法
JPH03269726A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd Romプログラムのパッチ方式
JPH0452834A (ja) * 1990-06-15 1992-02-20 Mitsubishi Electric Corp 電子計算機
US20040107416A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Patching of in-use functions on a running computer system
JP2010113549A (ja) * 2008-11-06 2010-05-20 Dainippon Printing Co Ltd Icカードおよびパッチコードの実行方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6355631A (ja) * 1986-08-27 1988-03-10 Fujitsu Ltd プログラムのパツチ管理方法
JPH03269726A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd Romプログラムのパッチ方式
JPH0452834A (ja) * 1990-06-15 1992-02-20 Mitsubishi Electric Corp 電子計算機
US20040107416A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Patching of in-use functions on a running computer system
JP2010113549A (ja) * 2008-11-06 2010-05-20 Dainippon Printing Co Ltd Icカードおよびパッチコードの実行方法

Also Published As

Publication number Publication date
JP7284003B2 (ja) 2023-05-30

Similar Documents

Publication Publication Date Title
US7424570B2 (en) Method for patching ROM instructions in an electronic embedded system including at least a further memory portion
US9348597B2 (en) Device and method for bypassing a first program code portion with a replacement program code portion
CN108170456B (zh) 电子设备的固件升级方法及装置
CN106709386B (zh) 智能卡数据写入方法及装置
JP7284002B2 (ja) 半導体装置、制御方法およびプログラム
JP2021006973A (ja) 半導体装置、icカード、制御方法およびプログラム
JP2010113549A (ja) Icカードおよびパッチコードの実行方法
US7353348B2 (en) Nonvolatile memory and card reader provided with the same
KR20230019032A (ko) 사전 개인화된 보안 요소 및 내장된 개인화
US7684992B2 (en) Remote application correction
JP2017228222A (ja) 電子情報記憶媒体、異常検知方法、及び異常検知プログラム
JP2008146343A (ja) Icカード、および、更新プログラムの呼出し方法
EP3023925B1 (en) Secure element with applications
CN104657185A (zh) 一种Java卡的Java代码补丁方法
CN111090542A (zh) 基于异常掉电的异常块识别方法、装置及计算机设备
JP5708228B2 (ja) Icカード及びicカードのリフレッシュ方法
JP2006293706A (ja) アプリケーションの更新機能を有するマルチアプリケーションicカード
US7346730B2 (en) Mobile electronic device
JP2007034434A (ja) Icカード、icカードへのデータ書込み方法、および、icカードプログラム
JP5903945B2 (ja) Icカード及びコンピュータプログラム
EP4024254A1 (en) Method and device for updating data
US20230084048A1 (en) Methods and terminal for updating converted applet file, and Java Card device
JP6915338B2 (ja) Icカード
JP7010084B2 (ja) Ic決済で用いるトークンデバイス
CN115291930A (zh) 组件版本管理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190726

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230412

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230518

R150 Certificate of patent or registration of utility model

Ref document number: 7284003

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350