図面 (/)

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

出願人 凸版印刷株式会社株式会社エヌ・ティ・ティ・データ
発明者 武藤祐貴陳美廉
出願日 2019年1月24日 (1年9ヶ月経過) 出願番号 2019-010463
公開日 2020年8月6日 (3ヶ月経過) 公開番号 2020-119328
状態 未査定
技術分野 マイクロコンピュータ デバッグ/監視 電卓等
主要キーワード 読み出し関数 カードベンダ ロック解除コマンド 無応答状態 符号無し エラー解析 ユニーク番号 解析者
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年8月6日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (13)

課題

エラー解析における手間を少なくする。

解決手段

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

概要

背景

特許文献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)。

概要

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

目的

本発明は、上記事情を考慮してなされたものであり、エラー解析における手間を少なくすることができる半導体装置、制御方法、およびプログラムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備え、前記プログラムはエラー処理への分岐部を備え、前記制御部は、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定されたユニークな番号を前記記憶部の所定領域に書き込む半導体装置

請求項2

前記制御部が、前記所定領域からの前記ユニークな番号の読み出しを指示する専用のコマンドに応じて、前記所定領域から前記ユニークな番号を読み出して出力する請求項1に記載の半導体装置。

請求項3

前記制御部が、所定の認証処理によって正当性が確認された場合に前記所定領域から前記ユニークな番号を読み出して出力する請求項2に記載の半導体装置。

請求項4

前記半導体装置が、ICカードである請求項1から3のいずれか1項に記載の半導体装置。

請求項5

所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備える半導体装置において、前記プログラムがエラー処理への分岐部を備え、前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる制御方法

請求項6

所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備える半導体装置において、前記プログラムがエラー処理への分岐部を備え、前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる前記プログラム。

技術分野

0001

本発明は、半導体装置制御方法、およびプログラムに関する。

背景技術

0002

特許文献1に記載されているシステムでは、ICカードコマンドに対するレスポンス無応答となる異常(以下、HALT)となる場合に、CPUレジスタ情報通知機能によって、CPUレジスタの値やプログラムカウンタカウンタ値が、外部の端末リーダライタなど)へ通知される。あるいは、特許文献1に記載されているシステムでは、CPUレジスタ情報保持機能によって、HALTの実行指示に応じてCPUレジスタの値やプログラムカウンタのカウンタ値が不揮発性メモリに記憶され、また、外部の端末からのコマンドに応じて記憶された情報が返送される。これらの構成によれば、HALT処理のモジュールコールされたタイミング等について後から解析が可能となる。

0003

従来のICカードでは、エラーを検知した際に、エラーステータスというレスポンスを応答するか、またはカードロック無応答状態遷移する(図10図12)。図10はエラーステータス応答の処理の流れの一例を示す図である。図11はカードロックの処理の流れの一例を示す図である。図12カードHALT処理の流れの一例を示す図である。なお、図10図12において破線より左側の処理が、リーダライタ(R/W)が行う処理であり、破線より右側の処理が、ICカードが行う処理である。

0004

図10に示すエラーステータス応答の処理では、リーダライタがコマンドを送信すると(ステップS101)、ICカードがコマンドを受信し(ステップS102)、受信したコマンドに応じた処理を実行する(ステップS103)。ICカードは、コマンドに応じた処理の実行時にエラーが発生した場合(ステップS104で「YES」の場合)、エラーステータスを送信する(ステップS105)。そして、リーダライラがエラーステータスを受信する(ステップS106)。リーダライタ側では、エラーステータスの意味よってエラー解析を行うことができる。なお、エラーステータスとは、コマンドが実行したエラーの種類によって、各コマンドで共通な意味を示す2バイトのレスポンスデータである。各エラーステータスが示す意味を調べることによって、問題が発生した原因を推測することができる。

0005

また、図11に示すカードロックの処理では、リーダライタがコマンドを送信すると(ステップS111)、ICカードがコマンドを受信し(ステップS112)、受信したコマンドに応じた処理を実行する(ステップS113)。ICカードは、コマンドに応じた処理の実行時に悪意攻撃の可能性を検知した場合(ステップS114で「YES」の場合)、カードをロックし(ステップS115)、カード無応答に遷移する(ステップS116)。

0006

また、図12に示すカードHALT処理では、リーダライタがコマンドを送信すると(ステップS121)、ICカードがコマンドを受信し(ステップS122)、受信したコマンドに応じた処理を実行する(ステップS123)。ICカードは、コマンドに応じた処理の実行時にエラーが発生した場合(ステップS124で「YES」の場合)、カード無応答に遷移する(ステップS125)。

先行技術

0007

特開2013−171394号公報

発明が解決しようとする課題

0008

ICカードで動作するアプリケーションプログラムカードアプリケーション)の開発は一般に高級言語を用いて行われる。この場合、エラーが発生した場合の解析は、高級言語のソースプログラムソースコード)に基づいて行われる。アセンブリ言語のようにソースプログラムの記述機械語命令一対一で対応している場合、CPUレジスタの値やプログラムカウンタのカウンタ値を直接的に用いてソースプログラムに基づきエラーを解析することができる。しかしながら、高級言語では、ソースプログラムの記述と機械語の命令は一対一で対応していないため、CPUレジスタの値やプログラムカウンタのカウンタ値を直接的に用いてエラーを解析することはできない。そのため、CPUレジスタの値やプログラムカウンタのカウンタ値に基づくエラー解析ではソースプログラムとの対応づけに手間が掛かることがあるという課題があった。

0009

本発明は、上記事情を考慮してなされたものであり、エラー解析における手間を少なくすることができる半導体装置、制御方法、およびプログラムを提供することを目的とする。

課題を解決するための手段

0010

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

0011

また、本発明の一態様は、上記半導体装置であって、前記制御部が、前記所定領域からの前記ユニークな番号の読み出しを指示する専用のコマンドに応じて、前記所定領域から前記ユニークな番号を読み出して出力する。

0012

また、本発明の一態様は、上記半導体装置であって、前記制御部が、所定の認証処理によって正当性が確認された場合に前記所定領域から前記ユニークな番号を読み出して出力する。

0013

また、本発明の一態様は、上記半導体装置であって、前記半導体装置が、ICカードである。

0014

また、本発明の一態様は、所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備える半導体装置において、前記プログラムがエラー処理への分岐部を備え、前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる制御方法である。

0015

また、本発明の一態様は、所定プログラムが搭載された記憶部と、前記プログラムを実行する制御部とを備える半導体装置において、前記プログラムがエラー処理への分岐部を備え、前記制御部に、前記分岐部によって前記プログラムの進行をエラー処理に分岐させた場合に、当該分岐部に設定された前記ユニークな番号を前記記憶部の所定領域に書き込む処理を実行させる前記プログラムである。

発明の効果

0016

本発明の各態様によれば、所定領域に記憶されているユニークな番号を読み出すことで、直接的に分岐部を特定することができるので、エラー解析における手間を少なくすることができる。

図面の簡単な説明

0017

本発明の一実施形態に係るシステムの概略構成を示すブロック図である。
本発明の一実施形態に係るシステムのソースプログラムの記述例を示す図である。
本発明の一実施形態に係るシステムの動作例を示す図である。
図3に示すselectコマンド処理(ステップS13)の構成例を示すフローチャートである。
図4に示す処理A(ステップS14)の構成例を示すフローチャートである。
図4および図5に示すエラー処理関数funcError()(ステップS24、ステップS27、ステップS29、ステップS34、ステップS37、およびステップS39)の構成例を示すフローチャートである。
本発明の一実施形態に係るシステムにおいて特殊コマンドでユニークな番号を確認する際の動作例を示すフローチャートである。
図7に示す認証コマンド処理(ステップS63)の構成例を示すフローチャートである。
図7に示す特殊コマンド処理(ステップS68)の構成例を示すフローチャートである。
エラーステータス応答の処理の流れを示す図である。
カードロックの流れの処理の流れを示す図である。
カードHALT処理の流れの処理の流れを示す図である。

実施例

0018

以下、図面を参照して本発明の一実施形態に係るシステムについて説明する。図1は、本発明の一実施形態に係るシステム10の概略構成例を示すブロック図である。図1に示すシステム10は、半導体装置1と、端末2を備える。

0019

半導体装置1は、CPU(中央処理装置)、メモリ等を構成する半導体素子を用いたIC(集積回路)を備え、情報を処理および記憶する装置である。半導体装置1は、例えば、ICカード、SIMカード(Subscriber Identity Module Card)等である。図1に示す半導体装置1は、制御部11と、通信部12と、記憶部13を備える。

0020

制御部11は、CPU111を備え、記憶部13に記憶されているプログラム3等のプログラムを実行することで所定の処理を行う。

0021

通信部12は、所定のプロトコルに従って端末2との間で有線または無線の通信を行い、所定の情報を送受信する。

0022

記憶部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を有している。

0023

なお、半導体装置1の構成は、図1に示す構成に限定されない。例えば、制御部11と通信部12と記憶部13の一部または全部が統合されて構成されていてもよい。また、制御部11が暗号処理を行うコプロセッサ等を備えていてもよい。また、不揮発性メモリは、フラッシュメモリ等であってもよい。また、ユニーク番号記憶領域1331はRAM132内あるいはRAM132内とEEPROM133内に設けられていてもよい。

0024

端末2は、制御部21と通信部22を備える。制御部21は、図示していない上位制御装置からの指示に基づき、通信部22を制御する。通信部22、所定のプロトコルに従って半導体装置1の通信部12との間で有線または無線の通信を行い、所定の情報を送受信する。端末2は、例えばICカードリーダライタスマートフォン等である。上位制御装置は、例えば、パーソナルコンピュータホストサーバ等のコンピュータである。

0025

上述したように、本実施形態の半導体装置1は、プログラム3が搭載された記憶部13と、プログラム3を実行する制御部11とを備える。このプログラム3はエラー処理への分岐部31を備える。そして、制御部11は、分岐部31によってプログラム3の進行をエラー処理に分岐させた場合に、当該分岐部31に設定されたユニーク番号32を記憶部13のユニーク番号記憶領域1331(所定領域)に書き込む。この構成によれば、ユニーク番号32を確認することで、エラー発生時にエラー処理へ移行させる分岐を行ったソースプログラム内の箇所を、ユニーク番号32に基づいて直接的に特定することができる。すなわち、本実施形態によれば、ユニーク番号記憶領域1331に記憶されているユニーク番号32を読み出すことで、直接的に分岐部31を特定することができ、したがって、エラー解析における手間を少なくすることができる。

0026

次に、図2図9を参照して、図1に示すシステム10の動作例について説明する。なお、以下では、半導体装置1がICカードであり、端末2がリーダライタ(R/W)である場合を例として、システム10の動作例について説明する。この場合、半導体装置1(ICカード)は、基本的な動作として、端末2(リーダライタ)が送信したコマンドを受信して処理し、コマンド処理の結果をレスポンスとして端末2(リーダライタ)へ送信する。

0027

まず、図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」は符号無しビット整数型を表す。そして、ソースプログラム内に、各エラー処理関数funcError()が、「funcError(ErrorNum_0)」、「funcError(ErrorNum_1)」、「funcError(ErrorNum_2)」、…のように、ユニーク番号32を引数に設定して記述される。

0028

次に、図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)の構成例を示すフローチャートである。

0029

図3に示すように、端末2(リーダライタ)がselectコマンドを送信すると(ステップS11)、半導体装置1(ICカード)はselectコマンドを受信する(ステップS12)。次に、半導体装置1(ICカード)は、受信したselectコマンドに対する処理を実行する(ステップS13)。ステップS13において制御部11は、ステップS12で受信したselectコマンド内の設定情報に応じた引数を設定して図4に示す関数funcSelect()を実行する。

0030

次に、半導体装置1(ICカード)は、ステップS13における処理結果に基づき応答を送信し(ステップS14)、端末2(リーダライタ)が応答を受信する(ステップS15)。ここで、半導体装置1(ICカード)は、送信する応答にステータスワード(SW)を含めて送信する。ステータスワードは、例えば、正常終了時に「0x9000」(16進数)であり、異常終了時に「0x6○○○」(「○」はエラーの内容等に応じて変化する値を示す)である。なお、図3に示す処理の流れは、コマンド処理が正常に終了した場合とエラーが発生してエラーステータスを応答する場合に対応する。HALTやカードロックに移行する場合にはselectコマンド処理(ステップS13)内で処理が停止し、次の応答送信(ステップS14)は実行されない。

0031

次に、図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である。

0032

また、制御部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である。

0033

また、制御部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である。

0034

次に、図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である。

0035

また、制御部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である。

0036

また、制御部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である。

0037

次に、図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)をこの順に実行する。

0038

ユニーク番号書き込み処理(ステップS42)は、制御部11がユニーク番号32を表す変数ErrorNum_iを図1に示すユニーク番号記憶領域1331に記憶する処理である。なお、ユニーク番号記憶領域1331のアドレスは、例えば図2に示すように定数Address_0=0x1234(16進数)というようにソースプログラム内で定義される。

0039

また、エラー処理A(ステップS41)は、ユニーク番号書き込み処理(ステップS42)より前に実行されるエラー発生時の処理を含み、カードHALT処理とカードロックの処理は含まない。

0040

また、エラー処理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の値に基づいて判断することができる。

0041

エラー処理B(ステップS42)においてカードHALT処理が実行された場合、図12を参照して説明したように半導体装置1(ICカード)はカード無応答に遷移するので、制御部11は遷移したときに図3に示すselectコマンド処理(ステップS13)を停止する。エラー処理B(ステップS42)においてカードロック処理が実行された場合、図11を参照して説明したように半導体装置1(ICカード)はカードをロックした後、カード無応答に遷移するので、制御部11は遷移したときに図3に示すselectコマンド処理(ステップS13)を停止する。なお、カード無応答に遷移した場合、電源を一旦落とした後に再投入することで半導体装置1(ICカード)を通常動作させることができ、ロックされた場合には所定のロック解除コマンドが入力された後、半導体装置1(ICカード)を通常動作させることができる。

0042

また、図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)後に必要な処理を含む。

0043

以上のように、制御部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)に書き込む。

0044

次に、図7図9を参照して、図1に示すシステム10において端末2(リーダライタ)がユニーク番号32を半導体装置1(ICカード)から読み取る際の動作例について説明する。図7は、図1に示すシステム10において特殊コマンドでユニーク番号32を確認する動作例を示すフローチャートである。本実施形態において特殊コマンドは、ユニーク番号記憶領域1331からのユニーク番号32の読み出しを指示する専用のコマンドである。図8は、図7に示す認証コマンド処理(ステップS63)の構成例を示すフローチャートである。図9は、図7に示す特殊コマンド処理(ステップS68)の構成例を示すフローチャートである。

0045

図7に示す例では、端末2(リーダライタ)が、特殊コマンドの送信に先立って、まず、認証コマンドを送信する(ステップS61)。半導体装置1(ICカード)は、認証コマンドを受信すると(ステップS62)、受信した認証コマンドに応じて認証コマンド処理を実行する(ステップS63)。次に、半導体装置1(ICカード)は、ステップS63の認証コマンド処理の結果に基づき応答を送信し(ステップS64)、端末2(リーダライタ)が応答を受信する(ステップS65)。ステップS65で、半導体装置1(ICカード)は、送信する応答にステータスワード(SW)を含めて送信する。

0046

ステップS63において制御部11は、ステップS62で受信した認証コマンドに含まれるPIN(Personal Identification Number(個人識別番号))を表す引数を設定して図8に示す認証処理関数func_Vefify()を実行する。

0047

図8に示すように、認証処理関数func_Vefify()において、制御部11は、まず、PIN照合処理を実行する(ステップS81)。PIN照合処理において、制御部11は、端末2(リーダライタ)から受信したPINを、記憶部13に予め記憶されているPINと照合する。次に、制御部11は、照合が一致したか否かを判断し(ステップS82)、一致した場合(ステップS82で「YES」の場合)には認証処理関数func_Vefify()を正常終了し、一致しなかった場合(ステップS82で「NO」の場合)には認証エラー処理を実行する。認証エラー処理は、例えば、カードHALT処理、カードロックの処理等である。

0048

端末2(リーダライタ)は、ステップS65で認証処理が正常終了したことを示す応答を受信すると、特殊コマンドを送信する(ステップS66)。半導体装置1(ICカード)は、特殊コマンドを受信すると(ステップS67)、受信した特殊コマンドに応じて特殊コマンド処理を実行する(ステップS68)。次に、半導体装置1(ICカード)は、ステップS68の特殊コマンド処理の結果に基づき応答を送信し(ステップS69)、端末2(リーダライタ)が応答を受信する(ステップS70)。ステップS69において、半導体装置1(ICカード)は、送信する応答に、ユニーク番号記憶領域1331に記憶されているユニーク番号32(エラー処理関数を実行(コール)させた分岐部31に設定されたユニーク番号32)を含ませる。

0049

なお、ステップS68において制御部11は、ステップS67で受信した特殊コマンドに応じて図9に示す特殊読み出し関数funcRead_special()を実行する。

0050

図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に記憶されている値を取得後に必要な処理を含む。

0051

以上のように、制御部11は、ユニーク番号記憶領域1331からのユニーク番号32の読み出しを指示する専用のコマンドである特殊コマンドに応じて、ユニーク番号記憶領域1331からユニーク番号32を読み出して出力する。本実施形態では、特殊コマンドを用いることで、読み出しアドレスを指定せずにユニーク番号記憶領域1331から(本実施形態ではアドレスAddress_0)からユニーク番号32を読み出すことができる。また、制御部11は、所定の認証処理によって正当性が確認された場合にユニーク番号記憶領域1331からユニーク番号32を読み出して出力する。すなわち、図7に示す動作例では、制御部11が、特殊コマンド処理(ステップS68)を実行する前に認証コマンド処理(ステップS63)を実行しているが、認証コマンド処理(ステップS63)は省略してもよい。

0052

なお、ユニーク番号記憶領域1331がEEPROM133内に確保されている場合、図6に示すユニーク番号書き込み処理(ステップS42)と図7に示す特殊コマンド処理(ステップS68)は連続的に実行しなくてもよいが、ユニーク番号記憶領域1331がRAM132内に確保されている場合、図6に示すユニーク番号書き込み処理(ステップS42)と図7に示す特殊コマンド処理(ステップS68)は連続的に(書き込みから読み出しまでの間に電源が落ちない状態で)実行する必要がある。

0053

また、ユニーク番号記憶領域1331からのユニーク番号32の取り出しは、例えば汎用のREAD BINARYコマンドを用いて行えるようにしてもよい。また、上述した特殊コマンドによる読み出しに限定してもよい。また、ユニーク番号32を読み出せる特殊コマンドの使用方法は例えばカードベンダカード発行者等のカードを解析する権限を持つ者だけに開示してもよい。この場合、エラー情報を取得できるのが解析者しかできないため、悪意攻撃防止もできると考えられる。

0054

以上のように上述した実施形態では、半導体装置1が、エラーステータスの応答、カードロックや無応答(HALT)等のエラー処理の際に、エラー処理を実施するモジュール(関数)をコールする箇所すべてにユニークな値であるユニーク番号32を記憶する機能を持つ。ユニーク番号32は、半導体装置1が実行するプログラムを例えば高級言語で作成した場合にソースプログラム内で容易に定義することができる。したがって、半導体装置1の解析の際にはこのユニーク番号32を読み出すことで、例えば高級言語で記述されたソースプログラムのどこでエラーが発生したのか(または攻撃を検知したのか)を特定することが容易となる(直接的に特定することができる)。したがって、解析者の仕事の効率化に貢献することができる。

0055

以上、この発明の実施形態について図面を参照して説明してきたが、具体的な構成は上記実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。なお、半導体装置1および端末2で実行される上記実施形態に係るプログラムの一部または全部は、コンピュータ読取可能な記録媒体通信回線等を介して頒布することができる。

0056

1半導体装置
2端末
10 システム
11 制御部
13 記憶部
31分岐部
32ユニーク番号
1331 ユニーク番号記憶領域

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ