JP2021006973A - 半導体装置、icカード、制御方法およびプログラム - Google Patents
半導体装置、icカード、制御方法およびプログラム Download PDFInfo
- 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
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims description 61
- 125000000524 functional group Chemical group 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 277
- 230000015654 memory Effects 0.000 abstract description 17
- 238000012545 processing Methods 0.000 description 66
- 238000012790 confirmation Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 9
- 238000012937 correction Methods 0.000 description 7
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 5
- 230000007547 defect Effects 0.000 description 5
- 239000000284 extract Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
これらのプログラムは、ICカードの作成時において、書き換えできないプログラムコード(以下、ROM(read only memory)コードと示す)として、マスクROMやフラッシュメモリなどに書き込まれている。
近年、一枚のICカードに対して多くの機能を持たせる場合が多く、プログラムのコード数が多くなり、プログラムの動作に不具合を生じる割合が高くなっている。
そして、パッチプログラムを書き換え可能なフラッシュメモリやEEPROM(electrically erasable programmable read only memory)にロードしておき、ROMコードの置き換えが必要であるか否かを、上記エントリポイントにおいて判定して、不具合のあったROMコードをパッチプログラムで置き換えて、プログラムのROMコードの修正を行っている(例えば、特許文献1参照)。
ここで、特許文献1においては、エントリポイントの各々にパッチが用意されているか否かを示すエントリポイントテーブルを設けておき、エントリポイント毎に付番した番号によりこのエントリポイントテーブルを検索する。
パッチ処理が必要である場合、エントリポイントテーブルにおいてエントリポイントに対応して記載されたパッチプログラムのアドレスを読出し、対象となるエントリポイントにおけるパッチ処理が行われる。
また、引用文献1のように、エントリポイントテーブルにおいて、エントリポイント毎にパッチプログラムのアドレスを記載する場合、少なくともエントリポイントの数分、エントリポイントのID、エントリポイントに対応するパッチの有無、パッチのROMコードのアドレスを記載するための記憶領域が必要となり、フラッシュメモリやEEPROMにおける利用可能領域を低減させる。
図1は、本発明の一実施形態による半導体装置1の構成例を示すブロック図である。
図1において、半導体装置1は、CPU(central processing unit)、メモリなどを構成する半導体素子を用いたIC(integrated circuit)を備え、情報を処理および記憶する装置である。
半導体装置1は、ICカード、SIM(subscriber identity module)カードなどである。図1に示す半導体装置1は、制御部11とデータ入出力部12と記憶部13とを備える。
データ入出力部12は、所定のプロトコルに従って外部装置(不図示)とのデータの送受信を行う。
ROM131には、半導体装置1の製造の際に書き込まれる、ROMコードの形態のプログラム150が記憶されている。このプログラム150は、例えば、公共系、金融系及び交通系などの業界あるいはグループの提供するICカードで利用するサービスの処理を行うアプリケーションプログラムなどである。ROM131において、プログラム150はROMコードで書き込まれているため、不具合を有する関数モジュールが含まれていても書き換えることができない。本実施形態において、ROMコードでプログラムが記載された書き換え不能のROMとしてマスクROM131を用いているが、マスクROMに換えてフラッシュメモリを用いてもよい。
本実施形態においては、上記エントリポイントを識別するエントリポイント識別情報が、機能番号及び個別番号との組合せで形成されている。
機能番号は、プログラム150における関数モジュールの各々を機能(例えば、暗号機能、通信機能、数値計算機能などの各種機能)別に分類した機能グループを識別するグループ情報である。
個別番号は、機能番号が示す各々の機能グループにおいて、この機能グループに含まれるパッチのそれぞれを個別に識別するパッチ情報である。
例えば、暗号機能の機能番号が01hであり、暗号機能の機能グループにおける個別番号が02hである場合、エントリポイント識別情報は、0102hで表される。
また、本実施形態においては、1バイトの機能番号と1バイトの個別番号とで、エントリポイント識別情報が2バイトとして説明している。しかしながら、プログラムに含まれる関数モジュール(エントリポイントが付加される関数モジュール)の機能の種類の数と、機能グループにおけるパッチの数とにより、エントリポイント識別情報のバイト数を任意に設定する。
ここで、制御部11は、データ入出力部12を介して、外部装置からパッチモジュール250が供給された場合、パッチモジュール250と、このパッチモジュール250に対応したパッチパラメータ350をEEPROM132に書き込んで記憶させる。
図2は、EEPROM132のパッチパラメータ領域に書き込まれるパッチパラメータ350の構成例を示す図である。
図3において、プログラム150は、例えば、メイン関数モジュール500、関数モジュール600、エントリポイントモジュール700などを備えている。
メイン関数モジュール500には、所定のアプリケーションの機能を実行するために必要な関数501や502などの複数の関数が記述されている。
関数モジュール600は、制御部11が実際に実行する関数501の機能に対応した処理を示す実体のコードが記述されている。
エントリポイント関数601は、エントリポイントモジュール700を呼び出して実行させる関数である。
エントリポイントモジュール700には、制御部11が実際に実行するエントリポイント関数601の機能に対応した処理を示す実体のコードが記述されている。エントリポイントモジュール700には、第1分岐処理701、機能番号抽出処理702、第2分岐処理703が記述されている。ここで、第1分岐処理701は、パッチ有無フラグがONか否かを判定する処理である。機能番号抽出処理702は、エントリポイント識別情報から機能番号を抽出する処理である。第2分岐処理703は、パッチ機能フラグがONか否かを判定する処理である。
第2分岐処理703には、パッチ機能フラグがONの場合に、パッチモジュール800(図4参照)を実行させるパッチ関数704が記述されている。
そして、制御部11は、関数モジュール600がエントリポイント関数601を含む場合、エントリポイント関数601に記述されたエントリポイントモジュール700を呼び出すアドレスを読み込み、エントリポイントモジュール700のROMコードの処理を実行する。
そして、制御部11は、パッチ有無フラグがONであるか否かの判定を行い、ONであれば機能番号抽出処理702の記述の処理を実行し、一方、パッチ有無フラグがOFFであれば、関数モジュール600に戻る処理(リターン処理)を行い、関数モジュール600に記述された処理を実行する。
そして、制御部11は、EEPROM132におけるパッチパラメータ領域に記憶されているパッチパラメータ350において、抽出した機能番号に対応するパッチ機能フラグを参照する。
制御部11は、参照したパッチ機能フラグがONであるか否かの判定を行い、ONであればパッチ関数704に対応してパッチモジュール800の処理を実行し、一方、パッチ機能フラグがOFFであれば、関数モジュール600に戻り、関数モジュール600に記述された処理を実行する。
そして、制御部11は、パッチ領域先頭アドレス305の領域に記憶されているパッチモジュール800に記述された処理を実行する。
図4において、パッチモジュール800には、制御部11が実際に実行するパッチ関数704の入れ替えるべき関数モジュールに対するパッチ処理を示す実体のコードが記述されている。すなわち、パッチモジュール800には、機能番号及び個別番号抽出処理801、パッチ機能フラグ確認処理802、第3分岐処理803、エントリポイント修正処理804、第3分岐処理805、エントリポイント修正処理806、パッチ機能フラグ確認処理807などが記述されている。
パッチ機能フラグ確認処理802及び807の各々は、それぞれ機能番号02h、06hのパッチ機能フラグがONであるか否かの判定を行う。このパッチ機能フラグ確認処理は、関数モジュールを置き換えるパッチが少なくとも1個が存在する機能グループに対応して設けられている。
エントリポイント修正処理804及び806の各々は、それぞれエントリー識別情報から抽出された個別番号が01h、03hであった場合に、関数モジュールとパッチとを置き換えるパッチ処理として記述されている。
次に、制御部11は、EEPROM132のパッチパラメータ領域におけるパッチパラメータ350において、抽出した機能番号に対応するパッチ機能フラグを参照する。
そして、制御部11は、抽出した機能番号に対応したパッチ機能フラグ確認処理、例えば、機能番号が02hである場合、パッチ機能フラグ確認処理802を実行する。一方、制御部11は、抽出し機能番号が06hである場合にパッチ機能フラグ確認処理807を実行する。
そして、制御部11は、抽出した機能番号の示すパッチ機能フラグがONである場合、第3分岐処理803、805、…などを順次実行し、抽出した個別番号に対応する第3分岐処理の有無を判定する。例えば、抽出した機能番号が02hであり、機能番号02hのパッチ機能フラグがONである場合、制御部11は、順次、第3分岐処理803、805、…において、抽出した個別番号と一致する第3分岐処理があるか否かの判定を行う。
また、制御部11は、個別番号が03hか否かの判定を行う第3分岐処理805において、抽出した個別番号が03hである場合、第3分岐処理805に記述されたエントリポイント修正処理806を実行する。
一方、制御部11は、抽出した個別番号に対応する第3分岐処理が存在しない場合、関数モジュール600に戻り、当該関数モジュール600の機能処理をコード記述に対応して実行する。
制御部11は、エントリポイント関数601の処理において、エントリポイントモジュール700を呼び出す。制御部11は、EEPROM132におけるパッチパラメータ350を参照し、パッチ有無フラグを読み込む(ステップS2)。
一方、制御部11は、読み込んだパッチ有無フラグがOFFである(図6(a)の記載、パッチ領域先頭アドレスが記述されていない)場合、処理を終了する。すなわち、制御部11は、関数モジュール600に戻り、関数モジュール600における関数501の処理を行う。
上述したステップS2及びステップS3が第1分岐処理である。
制御部11は、EEPROM132におけるパッチパラメータ350を参照し、機能番号に対応する、すなわち機能番号02hに対応するパッチ機能フラグを読み込み、機能グループにパッチがある(関数モジュールに対してパッチが適用されている)ことを確認する(ステップS5)。
上述したステップS5及びステップS6が第2分岐処理である。
制御部11は、EEPROM132におけるパッチパラメータ350を参照し、抽出した機能番号02hに対応するパッチ機能フラグを読み込む。制御部11は、抽出した機能フ番号02hに対応するパッチ機能フラグ確認処理802を行う(ステップS12)。
制御部11は、エントリポイント識別情報0201hの関数モジュールに対する修正処理(エントリポイント修正処理804)を行う(ステップS16)。
11…制御部
12…データ入出力部
13…記憶部
111…CPU
131…マスクROM
132…EEPROM
133…RAM
150…プログラム
250,800…パッチモジュール
350…パッチパラメータ
600…関数モジュール
700…エントリポイントモジュール
Claims (10)
- プログラムが記憶された、記憶されたデータの書き換えが不可能な第1記憶部と、
前記プログラムを実行する制御部と、
記憶されたデータの書き換えが可能であり、前記プログラムにおける前記関数モジュールと置き換えるモジュールであるパッチが記憶される第2記憶部と、
前記第2記憶部に設けられており、前記プログラムにおける関数モジュールに付加されたエントリポイントの全てにおいて、前記パッチが用意されたエントリポイントが、少なくとも一つ以上存在するか否かを示すパッチ有無フラグを含むパッチデータを記憶するパッチパラメータ領域と
を備えることを特徴とする半導体装置。 - 関数モジュールに配置された前記エントリポイントの各々を、当該関数モジュールの機能の種類に対応した機能グループそれぞれに分類しており、
前記パッチデータが、前記機能グループに含まれる前記エントリポイントにおいて、前記パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグを含む
ことを特徴とする請求項1に記載の半導体装置。 - 前記エントリポイントを識別するエントリポイント識別情報が、前記機能グループを示すグループ情報と、当該機能グループにおける前記エントリポイントに対応するパッチを示すパッチ情報とが組み合わされて生成されている
ことを特徴とする請求項2に記載の半導体装置。 - 前記第2記憶部に対して自身の製造後に書き込まれた、前記関数モジュールと置き換えるパッチを含むパッチモジュールをさらに備え、
前記制御部が、前記関数モジュールを実行する際、当該関数モジュールが前記エントリポイントを有する場合、前記パッチ有無フラグが前記パッチが用意されたエントリポイントがあることを示し、かつ当該関数モジュールのグループ情報が示す前記機能グループの前記パッチ機能フラグが当該機能グループに前記パッチが用意されたエントリポイントがあることを示す場合、前記パッチモジュールを実行する
ことを特徴とする請求項3に記載の半導体装置。 - 前記パッチモジュールにおいて、
前記エントリポイントのパッチ情報に対応した前記パッチの各々が、前記機能グループ単位に分類されている
ことを特徴とする請求項4に記載の半導体装置。 - 前記制御部が、
前記パッチモジュールに記載された機能グループにおける前記パッチのなかから前記パッチ情報に対応するパッチを、前記関数モジュールに代えて実行する
ことを特徴とする請求項5に記載の半導体装置。 - 少なくとも、請求項1から請求項6のいずれか一項に記載の半導体装置が搭載されている
ことを特徴とするICカード。 - 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイントが付加された関数モジュールを含むプログラムを制御部が実行する際、
前記エントリポイントを識別するエントリポイント識別情報が、前記関数モジュールの機能の種類に対応した機能グループを示すグループ情報と、当該機能グループにおける前記関数モジュールに対応するパッチを示すパッチ情報とが含まれており、
前記制御部が、第2記憶部に記憶されている前記プログラムにおけるエントリポイントの全てにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ有無フラグと、前記関数モジュールの機能の種類に対応した機能グループに含まれる前記エントリポイントにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグとを参照する過程と、
前記制御部が、前記パッチ有無フラグが前記パッチが有ることを示し、かつ前記エントリポイントが含まれるパッチ機能フラグがパッチが有ることを示した場合、記憶されたデータの書き換えが可能な第2記憶部から、エントリポイントのパッチのプログラムを有するパッチモジュールを読出す過程と、
前記制御部が、前記パッチモジュールにおいて前記機能グループに前記パッチが用意された前記エントリポイントがある場合、当該機能グループにおける前記パッチのなかから前記パッチ情報に対応するパッチを、前記関数モジュールに代えて実行する過程と
を含むことを特徴とする制御方法。 - 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイント識別情報に識別されるエントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、
前記コンピュータを、
第2記憶部に記憶されている前記プログラムにおけるエントリポイントの全てにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ有無フラグと、前記関数モジュールを機能別に分類した機能グループに含まれる前記エントリポイントにおいて、パッチの用意されたエントリポイントが少なくとも一つ以上存在するか否かを示すパッチ機能フラグとを参照する手段、
前記パッチ有無フラグが前記パッチが有ることを示し、かつ前記エントリポイントが含まれるパッチ機能フラグがパッチが有ることを示した場合、記憶されたデータの書き換えが可能な第2記憶部から、エントリポイントのパッチのプログラムを有するパッチモジュールを実行する手段
として機能させるプログラム。 - 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイント識別情報に識別されるエントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、
前記コンピュータを、
前記エントリポイントのパッチのプログラムを有するパッチモジュールにおいて、前記関数モジュールを機能別に分類した機能グループに前記パッチが用意された前記エントリポイントがある場合、当該機能グループにおける前記パッチのなかから、前記エントリポイントに対応するパッチを示すパッチ情報に対応するパッチを、前記関数モジュールに代えて実行する手段、
として機能させ、前記エントリポイント識別情報が、前記関数モジュールの機能の種類に対応した機能グループを示すグループ情報と、当該機能グループにおける前記関数モジュールに対応するパッチを示す前記パッチ情報とが含まれている
プログラム。
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)
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カードおよびパッチコードの実行方法 |
-
2019
- 2019-06-28 JP JP2019121185A patent/JP7284003B2/ja active Active
Patent Citations (5)
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 |