JP2020119328A - 半導体装置、制御方法、およびプログラム - Google Patents

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

Info

Publication number
JP2020119328A
JP2020119328A JP2019010463A JP2019010463A JP2020119328A JP 2020119328 A JP2020119328 A JP 2020119328A JP 2019010463 A JP2019010463 A JP 2019010463A JP 2019010463 A JP2019010463 A JP 2019010463A JP 2020119328 A JP2020119328 A JP 2020119328A
Authority
JP
Japan
Prior art keywords
program
unique number
error
control unit
semiconductor device
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
JP2019010463A
Other languages
English (en)
Other versions
JP7287789B2 (ja
Inventor
祐貴 武藤
Yuki Muto
祐貴 武藤
美廉 陳
Meilian Chen
美廉 陳
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 JP2019010463A priority Critical patent/JP7287789B2/ja
Publication of JP2020119328A publication Critical patent/JP2020119328A/ja
Application granted granted Critical
Publication of JP7287789B2 publication Critical patent/JP7287789B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Calculators And Similar Devices (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Abstract

【課題】エラー解析における手間を少なくする。【解決手段】本発明の一態様は、所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備え、前記プログラムはエラー処理への分岐部を備え、前記制御部は、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定されたユニークな番号を前記記憶部の所定領域に書き込む半導体装置である。【選択図】図1

Description

本発明は、半導体装置、制御方法、およびプログラムに関する。
特許文献1に記載されているシステムでは、ICカードのコマンドに対するレスポンスが無応答となる異常(以下、HALT)となる場合に、CPUレジスタ情報通知機能によって、CPUレジスタの値やプログラムカウンタのカウンタ値が、外部の端末(リーダライタなど)へ通知される。あるいは、特許文献1に記載されているシステムでは、CPUレジスタ情報保持機能によって、HALTの実行指示に応じてCPUレジスタの値やプログラムカウンタのカウンタ値が不揮発性メモリに記憶され、また、外部の端末からのコマンドに応じて記憶された情報が返送される。これらの構成によれば、HALT処理のモジュールがコールされたタイミング等について後から解析が可能となる。
従来のICカードでは、エラーを検知した際に、エラーステータスというレスポンスを応答するか、またはカードロックや無応答状態に遷移する(図10〜図12)。図10はエラーステータス応答の処理の流れの一例を示す図である。図11はカードロックの処理の流れの一例を示す図である。図12はカードHALT処理の流れの一例を示す図である。なお、図10〜図12において破線より左側の処理が、リーダライタ(R/W)が行う処理であり、破線より右側の処理が、ICカードが行う処理である。
図10に示すエラーステータス応答の処理では、リーダライタがコマンドを送信すると(ステップS101)、ICカードがコマンドを受信し(ステップS102)、受信したコマンドに応じた処理を実行する(ステップS103)。ICカードは、コマンドに応じた処理の実行時にエラーが発生した場合(ステップS104で「YES」の場合)、エラーステータスを送信する(ステップS105)。そして、リーダライラがエラーステータスを受信する(ステップS106)。リーダライタ側では、エラーステータスの意味よってエラー解析を行うことができる。なお、エラーステータスとは、コマンドが実行したエラーの種類によって、各コマンドで共通な意味を示す2バイトのレスポンスデータである。各エラーステータスが示す意味を調べることによって、問題が発生した原因を推測することができる。
また、図11に示すカードロックの処理では、リーダライタがコマンドを送信すると(ステップS111)、ICカードがコマンドを受信し(ステップS112)、受信したコマンドに応じた処理を実行する(ステップS113)。ICカードは、コマンドに応じた処理の実行時に悪意攻撃の可能性を検知した場合(ステップS114で「YES」の場合)、カードをロックし(ステップS115)、カード無応答に遷移する(ステップS116)。
また、図12に示すカードHALT処理では、リーダライタがコマンドを送信すると(ステップS121)、ICカードがコマンドを受信し(ステップS122)、受信したコマンドに応じた処理を実行する(ステップS123)。ICカードは、コマンドに応じた処理の実行時にエラーが発生した場合(ステップS124で「YES」の場合)、カード無応答に遷移する(ステップS125)。
特開2013−171394号公報
ICカードで動作するアプリケーションプログラム(カードアプリケーション)の開発は一般に高級言語を用いて行われる。この場合、エラーが発生した場合の解析は、高級言語のソースプログラム(ソースコード)に基づいて行われる。アセンブリ言語のようにソースプログラムの記述が機械語の命令に一対一で対応している場合、CPUレジスタの値やプログラムカウンタのカウンタ値を直接的に用いてソースプログラムに基づきエラーを解析することができる。しかしながら、高級言語では、ソースプログラムの記述と機械語の命令は一対一で対応していないため、CPUレジスタの値やプログラムカウンタのカウンタ値を直接的に用いてエラーを解析することはできない。そのため、CPUレジスタの値やプログラムカウンタのカウンタ値に基づくエラー解析ではソースプログラムとの対応づけに手間が掛かることがあるという課題があった。
本発明は、上記事情を考慮してなされたものであり、エラー解析における手間を少なくすることができる半導体装置、制御方法、およびプログラムを提供することを目的とする。
上記課題を解決するため、本発明の一態様は、所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備え、前記プログラムはエラー処理への分岐部を備え、前記制御部は、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定されたユニークな番号を前記記憶部の所定領域に書き込む半導体装置である。
また、本発明の一態様は、上記半導体装置であって、前記制御部が、前記所定領域からの前記ユニークな番号の読み出しを指示する専用のコマンドに応じて、前記所定領域から前記ユニークな番号を読み出して出力する。
また、本発明の一態様は、上記半導体装置であって、前記制御部が、所定の認証処理によって正当性が確認された場合に前記所定領域から前記ユニークな番号を読み出して出力する。
また、本発明の一態様は、上記半導体装置であって、前記半導体装置が、ICカードである。
また、本発明の一態様は、所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備える半導体装置において、前記プログラムがエラー処理への分岐部を備え、前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる制御方法である。
また、本発明の一態様は、所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備える半導体装置において、前記プログラムがエラー処理への分岐部を備え、前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる前記プログラムである。
本発明の各態様によれば、所定領域に記憶されているユニークな番号を読み出すことで、直接的に分岐部を特定することができるので、エラー解析における手間を少なくすることができる。
本発明の一実施形態に係るシステムの概略構成を示すブロック図である。 本発明の一実施形態に係るシステムのソースプログラムの記述例を示す図である。 本発明の一実施形態に係るシステムの動作例を示す図である。 図3に示すselectコマンド処理(ステップS13)の構成例を示すフローチャートである。 図4に示す処理A(ステップS14)の構成例を示すフローチャートである。 図4および図5に示すエラー処理関数funcError()(ステップS24、ステップS27、ステップS29、ステップS34、ステップS37、およびステップS39)の構成例を示すフローチャートである。 本発明の一実施形態に係るシステムにおいて特殊コマンドでユニークな番号を確認する際の動作例を示すフローチャートである。 図7に示す認証コマンド処理(ステップS63)の構成例を示すフローチャートである。 図7に示す特殊コマンド処理(ステップS68)の構成例を示すフローチャートである。 エラーステータス応答の処理の流れを示す図である。 カードロックの流れの処理の流れを示す図である。 カードHALT処理の流れの処理の流れを示す図である。
以下、図面を参照して本発明の一実施形態に係るシステムについて説明する。図1は、本発明の一実施形態に係るシステム10の概略構成例を示すブロック図である。図1に示すシステム10は、半導体装置1と、端末2を備える。
半導体装置1は、CPU(中央処理装置)、メモリ等を構成する半導体素子を用いたIC(集積回路)を備え、情報を処理および記憶する装置である。半導体装置1は、例えば、ICカード、SIMカード(Subscriber Identity Module Card)等である。図1に示す半導体装置1は、制御部11と、通信部12と、記憶部13を備える。
制御部11は、CPU111を備え、記憶部13に記憶されているプログラム3等のプログラムを実行することで所定の処理を行う。
通信部12は、所定のプロトコルに従って端末2との間で有線または無線の通信を行い、所定の情報を送受信する。
記憶部13は、ROM(リードオンリメモリ)131、RAM(ランダムアクセスメモリ)132、EEPROM(Electrically Erasable and Programmable Read Only Memory)133を有する。ROM131はCPU111が実行するプログラム3等のプログラム等を記憶する。プログラム3は、BIOS(Basic Input/Output System)、オペレーティングシステム、アプリケーションプログラム等のいずれのプログラムであってもよい。なお、プログラム3はEEPROM133に書き換えできるように記憶されていてもよい。本実施形態においてプログラム3は、エラー処理への複数の分岐部31と、分岐部31毎に設定された複数のユニークな番号32(以下、ユニーク番号32という)を備える。各分岐部31は、所定の条件の成否に基づきプログラム3の進行をエラー処理またはエラー処理以外の処理へ分岐させるプログラム(の一部)である。制御部11は、分岐部31を実行することでプログラム3の進行をエラー処理に分岐させた場合、当該分岐部31に設定されたユニーク番号32を記憶部13のユニーク番号記憶領域1331に書き込む。ユニーク番号32は分岐部31毎に異なる固有の番号(識別番号)である。このため、エラーを解析する際には、ユニーク番号記憶領域1331に書き込まれたユニーク番号32を調べることで、エラー処理へプログラム3の進行を分岐させた分岐部31を特定することができる。なお、ユニーク番号32は、数字、文字、記号、それらの組み合わせ等から構成することができるまた、RAM132はメインメモリとして動作する。EEPROM133は、不揮発性メモリであり、ユーザデータ等を書き換えできるように記憶する。また、EEPROM133は、分岐部31に設定されたユニーク番号32を記憶する領域として、ユニーク番号記憶領域1331を有している。
なお、半導体装置1の構成は、図1に示す構成に限定されない。例えば、制御部11と通信部12と記憶部13の一部または全部が統合されて構成されていてもよい。また、制御部11が暗号処理を行うコプロセッサ等を備えていてもよい。また、不揮発性メモリは、フラッシュメモリ等であってもよい。また、ユニーク番号記憶領域1331はRAM132内あるいはRAM132内とEEPROM133内に設けられていてもよい。
端末2は、制御部21と通信部22を備える。制御部21は、図示していない上位制御装置からの指示に基づき、通信部22を制御する。通信部22、所定のプロトコルに従って半導体装置1の通信部12との間で有線または無線の通信を行い、所定の情報を送受信する。端末2は、例えばICカードリーダライタ、スマートフォン等である。上位制御装置は、例えば、パーソナルコンピュータ、ホストサーバ等のコンピュータである。
上述したように、本実施形態の半導体装置1は、プログラム3が搭載された記憶部13と、プログラム3を実行する制御部11とを備える。このプログラム3はエラー処理への分岐部31を備える。そして、制御部11は、分岐部31によってプログラム3の進行をエラー処理に分岐させた場合に、当該分岐部31に設定されたユニーク番号32を記憶部13のユニーク番号記憶領域1331(所定領域)に書き込む。この構成によれば、ユニーク番号32を確認することで、エラー発生時にエラー処理へ移行させる分岐を行ったソースプログラム内の箇所を、ユニーク番号32に基づいて直接的に特定することができる。すなわち、本実施形態によれば、ユニーク番号記憶領域1331に記憶されているユニーク番号32を読み出すことで、直接的に分岐部31を特定することができ、したがって、エラー解析における手間を少なくすることができる。
次に、図2〜図9を参照して、図1に示すシステム10の動作例について説明する。なお、以下では、半導体装置1がICカードであり、端末2がリーダライタ(R/W)である場合を例として、システム10の動作例について説明する。この場合、半導体装置1(ICカード)は、基本的な動作として、端末2(リーダライタ)が送信したコマンドを受信して処理し、コマンド処理の結果をレスポンスとして端末2(リーダライタ)へ送信する。
まず、図2〜図6を参照して、図1に示す制御部11のエラー処理発生時の動作例について説明する。本動作例では、リーダライタ(R/W)から受信したコマンドに対する、エラーステータスの送信、カードロックや無応答(HALT)等のエラー処理の際に、エラー処理を実施するモジュール(関数)をコールする(実行する)箇所すべてにユニーク番号32が設定される。制御部11は、コマンドを処理する途中に、エラーが発生する場合、エラー処理関数funcError()を呼び、事前に決められたユニーク番号32をfuncError()の引数として渡す。この場合、例えば図2に示すように、ソースプログラム内に、ユニーク番号32として、定数名を「ErrorNum_0」、「ErrorNum_1」、「ErrorNum_2」、…定義し、定数値「0」、「1」「2」、…を設定する(「#define」は定数等の宣言文である。)。図2は、制御部11が実行するアプリケーションプログラムのソースプログラムの記述例を示す図である。なお、「u8」は符号無し8ビットの整数型を表す。そして、ソースプログラム内に、各エラー処理関数funcError()が、「funcError(ErrorNum_0)」、「funcError(ErrorNum_1)」、「funcError(ErrorNum_2)」、…のように、ユニーク番号32を引数に設定して記述される。
次に、図3〜図6を参照して、selectコマンド(ファイルを選択するコマンド)を一例として用いて、システム10の動作例について説明する。図3は、図1に示すシステム10においてselectコマンドを送受信する際の処理の流れを示す図である。図4は、図3に示すselectコマンド処理(ステップS13)の構成例を示すフローチャートである。図5は、図4に示す処理A(ステップS14)の構成例を示すフローチャートである。図6は、図4および図5に示すエラー処理関数funcError()(ステップS24、ステップS27、ステップS29、ステップS34、ステップS37、およびステップS39)の構成例を示すフローチャートである。
図3に示すように、端末2(リーダライタ)がselectコマンドを送信すると(ステップS11)、半導体装置1(ICカード)はselectコマンドを受信する(ステップS12)。次に、半導体装置1(ICカード)は、受信したselectコマンドに対する処理を実行する(ステップS13)。ステップS13において制御部11は、ステップS12で受信したselectコマンド内の設定情報に応じた引数を設定して図4に示す関数funcSelect()を実行する。
次に、半導体装置1(ICカード)は、ステップS13における処理結果に基づき応答を送信し(ステップS14)、端末2(リーダライタ)が応答を受信する(ステップS15)。ここで、半導体装置1(ICカード)は、送信する応答にステータスワード(SW)を含めて送信する。ステータスワードは、例えば、正常終了時に「0x9000」(16進数)であり、異常終了時に「0x6○○○」(「○」はエラーの内容等に応じて変化する値を示す)である。なお、図3に示す処理の流れは、コマンド処理が正常に終了した場合とエラーが発生してエラーステータスを応答する場合に対応する。HALTやカードロックに移行する場合にはselectコマンド処理(ステップS13)内で処理が停止し、次の応答送信(ステップS14)は実行されない。
次に、図4を参照して、図3に示すselectコマンド処理(ステップS13)の構成例について説明する。この場合、selectコマンド処理は、関数funcSelect()として構成されていて、ファイルを選択する処理に係る、ある処理A、処理Bおよび処理Cを含んでいる。図4に示す例では、制御部11は、まず処理Aを実行する(ステップS21)。次に、制御部11は、処理Aでエラーが発生したか否かを判断する(ステップS22)。処理Aでエラーが発生しなかった場合(ステップS22で「YES」の場合)、制御部11は、処理Bを実行する(ステップS23)。一方、処理Aでエラーが発生した場合(ステップS22で「NO」の場合)、制御部11は、定数ErrorNum_0を引数としてエラー処理関数funcError()(この場合、funcError(ErrorNum_0))を実行する(ステップS24)。このステップS22の処理が図1に示す複数の分岐部31のうちの1つに対応する。また、定数ErrorNum_0(=0)が、ステップS22の処理に対応する分岐部31に設定されたユニーク番号32である。
また、制御部11は、処理Bを実行した場合(ステップS23)、次に、処理Bでエラーが発生したか否かを判断する(ステップS25)。処理Bでエラーが発生しなかった場合(ステップS25で「YES」の場合)、制御部11は、処理Cを実行する(ステップS26)。一方、処理Bでエラーが発生した場合(ステップS25で「NO」の場合)、制御部11は、定数ErrorNum_1を引数としてエラー処理関数funcError()(この場合、funcError(ErrorNum_1))を実行する(ステップS27)。このステップS25の処理が図1に示す複数の分岐部31のうちの1つに対応する。また、定数ErrorNum_1(=1)が、ステップS25の処理に対応する分岐部31に設定されたユニーク番号32である。
また、制御部11は、処理Cを実行した場合(ステップS26)、次に、処理Cでエラーが発生したか否かを判断する(ステップS28)。処理Cでエラーが発生しなかった場合(ステップS28で「YES」の場合)、制御部11は、関数funcSelect()の処理を終了する。一方、処理Cでエラーが発生した場合(ステップS28で「NO」の場合)、制御部11は、定数ErrorNum_2を引数としてエラー処理関数funcError()(この場合、funcError(ErrorNum_2))を実行する(ステップS29)。このステップS28の処理が図1に示す複数の分岐部31のうちの1つに対応する。また、定数ErrorNum_2(=2)が、ステップS28の処理に対応する分岐部31に設定されたユニーク番号32である。
次に、図5を参照して、図4に示す処理A(ステップS21)の構成例について説明する。この場合、処理Aは、関数funcSelectSubA()として構成されていて、ファイルを選択する処理に係る処理Aを構成する、処理A−1、処理A−2および処理A−3を含んでいる。図5に示す例では、制御部11は、まず処理A−1を実行する(ステップS31)。次に、制御部11は、処理A−1でエラーが発生したか否かを判断する(ステップS32)。処理A−1でエラーが発生しなかった場合(ステップS32で「YES」の場合)、制御部11は、処理A−2を実行する(ステップS33)。一方、処理A−1でエラーが発生した場合(ステップS32で「NO」の場合)、制御部11は、定数ErrorNum_3を引数としてエラー処理関数funcError()(この場合、funcError(ErrorNum_3))を実行する(ステップS34)。このステップS32の処理が図1に示す複数の分岐部31のうちの1つに対応する。また、定数ErrorNum_3が、ステップS32の処理に対応する分岐部31に設定されたユニーク番号32である。
また、制御部11は、処理A−2を実行した場合(ステップS33)、次に、処理A−2でエラーが発生したか否かを判断する(ステップS35)。処理A−2でエラーが発生しなかった場合(ステップS35で「YES」の場合)、制御部11は、処理A−3を実行する(ステップS36)。一方、処理A−2でエラーが発生した場合(ステップS35で「NO」の場合)、制御部11は、定数ErrorNum_4を引数としてエラー処理関数funcError()(この場合、funcError(ErrorNum_4))を実行する(ステップS37)。このステップS35の処理が図1に示す複数の分岐部31のうちの1つに対応する。また、定数ErrorNum_4が、ステップS35の処理に対応する分岐部31に設定されたユニーク番号32である。
また、制御部11は、処理A−3を実行した場合(ステップS36)、次に、処理A−3でエラーが発生したか否かを判断する(ステップS38)。処理A−3でエラーが発生しなかった場合(ステップS38で「YES」の場合)、制御部11は、関数funcSelectSubA()の処理を終了する。一方、処理A−3でエラーが発生した場合(ステップS38で「NO」の場合)、制御部11は、定数ErrorNum_5を引数としてエラー処理関数funcError()(この場合、funcError(ErrorNum_5))を実行する(ステップS39)。このステップS38の処理が図1に示す複数の分岐部31のうちの1つに対応する。また、定数ErrorNum_5が、ステップS38の処理に対応する分岐部31に設定されたユニーク番号32である。
次に、図6を参照して、図4および図5に示すエラー処理関数funcError()(ステップS24、ステップS27、ステップS29、ステップS34、ステップS37、およびステップS39)の構成例について説明する。この場合、エラー処理関数funcError()は、エラー処理A、ユニーク番号書き込み処理、およびエラー処理Bを含む。なお、図6において、引数ErrorNum_iは、N個の定数ErrorNum_0、ErrorNum_1、ErrorNum_2、…、ErrorNum_N−1のいずれかの値をとる変数である(i=0、1、2、…、N−1)。ここでNはエラー処理関数funcError()を呼び出す箇所(および分岐部31)の個数である。図6に示す例では、制御部11は、エラー処理A(ステップS41)とユニーク番号書き込み処理(ステップS42)とエラー処理B(ステップS43)をこの順に実行する。
ユニーク番号書き込み処理(ステップS42)は、制御部11がユニーク番号32を表す変数ErrorNum_iを図1に示すユニーク番号記憶領域1331に記憶する処理である。なお、ユニーク番号記憶領域1331のアドレスは、例えば図2に示すように定数Address_0=0x1234(16進数)というようにソースプログラム内で定義される。
また、エラー処理A(ステップS41)は、ユニーク番号書き込み処理(ステップS42)より前に実行されるエラー発生時の処理を含み、カードHALT処理とカードロックの処理は含まない。
また、エラー処理B(ステップS42)は、ユニーク番号書き込み処理(ステップS42)より後に実行されるエラー発生時の処理を含み、カードHALT処理とカードロックの処理を含むことができる。エラー処理B(ステップS42)において、カードHALT処理(図12)とカードロックの処理(図11)のどちらを実行するのか、あるいはどちらも実行せずにステップS14(図3)でエラーステータスを送信するのかという判断は、例えば次のように行うことができる。すなわち、例えば、制御部11は、エラー処理関数funcError()を実行する前に記憶部13内の所定の記憶領域にエラー処理の内容を表すデータを記憶し、エラー処理B(ステップS42)内でそのデータを参照して判断することができる。あるいは、例えば、エラー処理関数funcError()にエラー処理の内容を表す引数を追加で定義しておき、エラー処理B(ステップS42)内で制御部11がその引数の値に基づいて判断することができる。あるいは、例えば、ユニーク番号32を表す定数ErrorNum_0〜ErrorNum_Nにエラー処理の内容を表す意味を定義しておき(例えば数字の範囲毎に内容を定義しておき)、エラー処理B(ステップS42)内で制御部11が引数ErrorNum_iの値に基づいて判断することができる。
エラー処理B(ステップS42)においてカードHALT処理が実行された場合、図12を参照して説明したように半導体装置1(ICカード)はカード無応答に遷移するので、制御部11は遷移したときに図3に示すselectコマンド処理(ステップS13)を停止する。エラー処理B(ステップS42)においてカードロック処理が実行された場合、図11を参照して説明したように半導体装置1(ICカード)はカードをロックした後、カード無応答に遷移するので、制御部11は遷移したときに図3に示すselectコマンド処理(ステップS13)を停止する。なお、カード無応答に遷移した場合、電源を一旦落とした後に再投入することで半導体装置1(ICカード)を通常動作させることができ、ロックされた場合には所定のロック解除コマンドが入力された後、半導体装置1(ICカード)を通常動作させることができる。
また、図6に示すように、ユニーク番号書き込み処理(ステップS42)は、例えば、関数funcWrite()として構成されていて、書き込み処理A(ステップS51)と、引数ErrorNum_iの値をアドレスAddress_0に書き込む処理(ステップS52)と、書き込み処理B(ステップS53)を含む。ここで、関数funcWrite()は、指定したアドレスに指定した値を書き込む関数である。ステップS42において制御部11は、アドレスの値を示す関数funcWrite()の引数にAddress_0を、書き込む値を示す関数funcWrite()の引数にErrorNum_iを設定して、関数funcWrite()(funcWrite(Address_0、ErrorNum_i))を実行する。書き込み処理A(ステップS51)は、例えば、引数ErrorNum_iの値をアドレスAddress_0に書き込む処理(ステップS52)の準備のための処理を含む。ステップS52では、制御部11が、アドレスAddress_0のユニーク番号記憶領域1331に、引数ErrorNum_iの値を記憶する。書き込み処理B(ステップS53)は、例えば、引数ErrorNum_iの値をアドレスAddress_0に書き込む処理(ステップS52)後に必要な処理を含む。
以上のように、制御部111は、複数の分岐部31(ステップS22、ステップS25、ステップS28、ステップS32、ステップS35、およびステップS38)がプログラムの進行をエラー処理に分岐させた場合(エラー処理関数funcError()を実行する処理を行わせた場合)に、ユニーク番号32(N個の定数ErrorNum_0、ErrorNum_1、ErrorNum_2、…、ErrorNum_N−1のいずれかの値)を引数ErrorNum_iに設定してエラー処理関数funcError()を実行することで、当該分岐部31に設定されたユニーク番号32(N個の定数ErrorNum_0、ErrorNum_1、ErrorNum_2、…、ErrorNum_N−1のいずれかの値)を記憶部13のアドレスAddress_0の領域(ユニーク番号記憶領域1331)に書き込む。
次に、図7〜図9を参照して、図1に示すシステム10において端末2(リーダライタ)がユニーク番号32を半導体装置1(ICカード)から読み取る際の動作例について説明する。図7は、図1に示すシステム10において特殊コマンドでユニーク番号32を確認する動作例を示すフローチャートである。本実施形態において特殊コマンドは、ユニーク番号記憶領域1331からのユニーク番号32の読み出しを指示する専用のコマンドである。図8は、図7に示す認証コマンド処理(ステップS63)の構成例を示すフローチャートである。図9は、図7に示す特殊コマンド処理(ステップS68)の構成例を示すフローチャートである。
図7に示す例では、端末2(リーダライタ)が、特殊コマンドの送信に先立って、まず、認証コマンドを送信する(ステップS61)。半導体装置1(ICカード)は、認証コマンドを受信すると(ステップS62)、受信した認証コマンドに応じて認証コマンド処理を実行する(ステップS63)。次に、半導体装置1(ICカード)は、ステップS63の認証コマンド処理の結果に基づき応答を送信し(ステップS64)、端末2(リーダライタ)が応答を受信する(ステップS65)。ステップS65で、半導体装置1(ICカード)は、送信する応答にステータスワード(SW)を含めて送信する。
ステップS63において制御部11は、ステップS62で受信した認証コマンドに含まれるPIN(Personal Identification Number(個人識別番号))を表す引数を設定して図8に示す認証処理関数func_Vefify()を実行する。
図8に示すように、認証処理関数func_Vefify()において、制御部11は、まず、PIN照合処理を実行する(ステップS81)。PIN照合処理において、制御部11は、端末2(リーダライタ)から受信したPINを、記憶部13に予め記憶されているPINと照合する。次に、制御部11は、照合が一致したか否かを判断し(ステップS82)、一致した場合(ステップS82で「YES」の場合)には認証処理関数func_Vefify()を正常終了し、一致しなかった場合(ステップS82で「NO」の場合)には認証エラー処理を実行する。認証エラー処理は、例えば、カードHALT処理、カードロックの処理等である。
端末2(リーダライタ)は、ステップS65で認証処理が正常終了したことを示す応答を受信すると、特殊コマンドを送信する(ステップS66)。半導体装置1(ICカード)は、特殊コマンドを受信すると(ステップS67)、受信した特殊コマンドに応じて特殊コマンド処理を実行する(ステップS68)。次に、半導体装置1(ICカード)は、ステップS68の特殊コマンド処理の結果に基づき応答を送信し(ステップS69)、端末2(リーダライタ)が応答を受信する(ステップS70)。ステップS69において、半導体装置1(ICカード)は、送信する応答に、ユニーク番号記憶領域1331に記憶されているユニーク番号32(エラー処理関数を実行(コール)させた分岐部31に設定されたユニーク番号32)を含ませる。
なお、ステップS68において制御部11は、ステップS67で受信した特殊コマンドに応じて図9に示す特殊読み出し関数funcRead_special()を実行する。
図9に示すように、関数funcRead_special()において、制御部11は、特殊処理A(ステップS91)と、記憶部13のAddress_0の値(ユニーク番号記憶領域1331に記憶されている値)を取得する処理(ステップS92)と、特殊処理B(ステップS93)を実行する。特殊処理A(ステップS91)は、例えば、記憶部13のAddress_0の値を取得する処理(ステップS92)の準備のための処理を含む。ステップS92で、制御部11は、アドレスAddress_0のユニーク番号記憶領域1331に記憶されている値を取得する(例えば所定のCPUレジスタ等に読み込む)。特殊処理B(ステップS93)は、例えば、アドレスAddress_0のユニーク番号記憶領域1331に記憶されている値を取得後に必要な処理を含む。
以上のように、制御部11は、ユニーク番号記憶領域1331からのユニーク番号32の読み出しを指示する専用のコマンドである特殊コマンドに応じて、ユニーク番号記憶領域1331からユニーク番号32を読み出して出力する。本実施形態では、特殊コマンドを用いることで、読み出しアドレスを指定せずにユニーク番号記憶領域1331から(本実施形態ではアドレスAddress_0)からユニーク番号32を読み出すことができる。また、制御部11は、所定の認証処理によって正当性が確認された場合にユニーク番号記憶領域1331からユニーク番号32を読み出して出力する。すなわち、図7に示す動作例では、制御部11が、特殊コマンド処理(ステップS68)を実行する前に認証コマンド処理(ステップS63)を実行しているが、認証コマンド処理(ステップS63)は省略してもよい。
なお、ユニーク番号記憶領域1331がEEPROM133内に確保されている場合、図6に示すユニーク番号書き込み処理(ステップS42)と図7に示す特殊コマンド処理(ステップS68)は連続的に実行しなくてもよいが、ユニーク番号記憶領域1331がRAM132内に確保されている場合、図6に示すユニーク番号書き込み処理(ステップS42)と図7に示す特殊コマンド処理(ステップS68)は連続的に(書き込みから読み出しまでの間に電源が落ちない状態で)実行する必要がある。
また、ユニーク番号記憶領域1331からのユニーク番号32の取り出しは、例えば汎用のREAD BINARYコマンドを用いて行えるようにしてもよい。また、上述した特殊コマンドによる読み出しに限定してもよい。また、ユニーク番号32を読み出せる特殊コマンドの使用方法は例えばカードベンダやカード発行者等のカードを解析する権限を持つ者だけに開示してもよい。この場合、エラー情報を取得できるのが解析者しかできないため、悪意攻撃防止もできると考えられる。
以上のように上述した実施形態では、半導体装置1が、エラーステータスの応答、カードロックや無応答(HALT)等のエラー処理の際に、エラー処理を実施するモジュール(関数)をコールする箇所すべてにユニークな値であるユニーク番号32を記憶する機能を持つ。ユニーク番号32は、半導体装置1が実行するプログラムを例えば高級言語で作成した場合にソースプログラム内で容易に定義することができる。したがって、半導体装置1の解析の際にはこのユニーク番号32を読み出すことで、例えば高級言語で記述されたソースプログラムのどこでエラーが発生したのか(または攻撃を検知したのか)を特定することが容易となる(直接的に特定することができる)。したがって、解析者の仕事の効率化に貢献することができる。
以上、この発明の実施形態について図面を参照して説明してきたが、具体的な構成は上記実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。なお、半導体装置1および端末2で実行される上記実施形態に係るプログラムの一部または全部は、コンピュータ読取可能な記録媒体、通信回線等を介して頒布することができる。
1 半導体装置
2 端末
10 システム
11 制御部
13 記憶部
31 分岐部
32 ユニーク番号
1331 ユニーク番号記憶領域

Claims (6)

  1. 所定プログラムが搭載された記憶部と、
    前記プログラムを実行する制御部と
    を備え、
    前記プログラムはエラー処理への分岐部を備え、
    前記制御部は、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定されたユニークな番号を前記記憶部の所定領域に書き込む
    半導体装置。
  2. 前記制御部が、前記所定領域からの前記ユニークな番号の読み出しを指示する専用のコマンドに応じて、前記所定領域から前記ユニークな番号を読み出して出力する
    請求項1に記載の半導体装置。
  3. 前記制御部が、所定の認証処理によって正当性が確認された場合に前記所定領域から前記ユニークな番号を読み出して出力する
    請求項2に記載の半導体装置。
  4. 前記半導体装置が、ICカードである
    請求項1から3のいずれか1項に記載の半導体装置。
  5. 所定プログラムが搭載された記憶部と、
    前記プログラムを実行する制御部と
    を備える半導体装置において、
    前記プログラムがエラー処理への分岐部を備え、
    前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる
    制御方法。
  6. 所定プログラムが搭載された記憶部と、
    前記プログラムを実行する制御部と
    を備える半導体装置において、
    前記プログラムがエラー処理への分岐部を備え、
    前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる
    前記プログラム。
JP2019010463A 2019-01-24 2019-01-24 半導体装置、制御方法、およびプログラム Active JP7287789B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019010463A JP7287789B2 (ja) 2019-01-24 2019-01-24 半導体装置、制御方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019010463A JP7287789B2 (ja) 2019-01-24 2019-01-24 半導体装置、制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2020119328A true JP2020119328A (ja) 2020-08-06
JP7287789B2 JP7287789B2 (ja) 2023-06-06

Family

ID=71892068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019010463A Active JP7287789B2 (ja) 2019-01-24 2019-01-24 半導体装置、制御方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP7287789B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01230195A (ja) * 1988-03-10 1989-09-13 Tokyo Electric Co Ltd 商品販売データ処理装置
JP2001146062A (ja) * 1999-11-19 2001-05-29 Seiko Epson Corp 印刷システム及びプリンタ
JP2005196413A (ja) * 2004-01-06 2005-07-21 Sony Corp データ通信装置及びデータ通信装置のメモリ管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01230195A (ja) * 1988-03-10 1989-09-13 Tokyo Electric Co Ltd 商品販売データ処理装置
JP2001146062A (ja) * 1999-11-19 2001-05-29 Seiko Epson Corp 印刷システム及びプリンタ
JP2005196413A (ja) * 2004-01-06 2005-07-21 Sony Corp データ通信装置及びデータ通信装置のメモリ管理方法

Also Published As

Publication number Publication date
JP7287789B2 (ja) 2023-06-06

Similar Documents

Publication Publication Date Title
RU2148856C1 (ru) Система информационного обмена
US7775423B2 (en) Portable electronic device and control method of portable electronic device
US20060080655A1 (en) System and method for post-issuance code update employing embedded native code
CN111695093A (zh) 基于iOS应用的加固方法、电子装置及存储介质
US20140189223A1 (en) Ic card, portable electronic device, and method of controlling ic card
JP7287789B2 (ja) 半導体装置、制御方法、およびプログラム
CN101667130B (zh) 具有鉴别功能的嵌入式系统及嵌入式系统的鉴别方法
CN111475152B (zh) 一种代码处理方法及装置
JP2006252284A (ja) 携帯可能電子装置およびicカード
JP2018136835A (ja) Icカード及びicカード発行システム、icカード発行方法
US20060265578A1 (en) Detection of a sequencing error in the execution of a program
JP5464052B2 (ja) 認証処理装置、認証処理方法、認証処理プログラム、処理システム、及び現金自動預け払い機
JP2006119902A (ja) 携帯可能電子装置及び携帯可能電子装置の運用システム
JP5464053B2 (ja) 認証処理装置、認証処理方法、認証処理プログラム、処理システム、及び現金自動預け払い機
JP7327349B2 (ja) Icカード,icカードのコマンド管理方法およびicカード用のマイクロコントローラ
US7822953B2 (en) Protection of a program against a trap
JP4641157B2 (ja) マルチアプリケーション型icカードおよびアプリケーションプログラム
JP4203165B2 (ja) Icカード
JP2009134545A (ja) 携帯可能電子装置およびicカード
JP2008152452A (ja) 携帯可能電子装置、携帯可能電子装置の制御方法およびicカード
JP4549731B2 (ja) アプリケーションが共通で使用するコマンドコードを備えたマルチアプリケーション型icカード
JP5200686B2 (ja) 情報処理装置、正常処理判別方法、及び情報処理プログラム
CN115334166A (zh) 一种加密机调用方法、装置、设备及存储介质
JP2016126696A (ja) 電子情報記憶媒体、異常検知方法、及びプログラム
CN113408845A (zh) 生产流程的处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230525

R150 Certificate of patent or registration of utility model

Ref document number: 7287789

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