JP2010092117A - データ処理装置及びデータ処理方法 - Google Patents
データ処理装置及びデータ処理方法 Download PDFInfo
- Publication number
- JP2010092117A JP2010092117A JP2008258891A JP2008258891A JP2010092117A JP 2010092117 A JP2010092117 A JP 2010092117A JP 2008258891 A JP2008258891 A JP 2008258891A JP 2008258891 A JP2008258891 A JP 2008258891A JP 2010092117 A JP2010092117 A JP 2010092117A
- Authority
- JP
- Japan
- Prior art keywords
- data
- circuit
- scramble
- plaintext
- random number
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】このような状況を鑑み、本発明は、処理速度が要求される場合でも対タンパ性を強めたデータ処理装置及びデータ処理方法を提供する。
【解決手段】CPU4は、暗号化データ16を読み出し、暗号回路6に復号化させて平文データ17を生成し、スクランブル回路14によりスクランブルキーを使用したスクランブル処理を行わせ、セキュアRAM13に一時記憶する。セキュアRAM13に記憶されたデータをスクランブル回路14にデスクランブルさせて平文データ17を取得し、これを使用して所定の処理を実行し、終了したら、処理済みのデータを暗号回路6に暗号化させる。そして、CPU4は所定の処理が終了したことをスクランブル回路14に通知し、スクランブル回路14はこれに応じてRNG8が生成した乱数によりスクランブルキーを更新する。
【選択図】図4
【解決手段】CPU4は、暗号化データ16を読み出し、暗号回路6に復号化させて平文データ17を生成し、スクランブル回路14によりスクランブルキーを使用したスクランブル処理を行わせ、セキュアRAM13に一時記憶する。セキュアRAM13に記憶されたデータをスクランブル回路14にデスクランブルさせて平文データ17を取得し、これを使用して所定の処理を実行し、終了したら、処理済みのデータを暗号回路6に暗号化させる。そして、CPU4は所定の処理が終了したことをスクランブル回路14に通知し、スクランブル回路14はこれに応じてRNG8が生成した乱数によりスクランブルキーを更新する。
【選択図】図4
Description
本発明は、暗号化されたデータを扱うデータ処理装置及びデータ処理方法に関する。
IC(Integrated Circuit)チップを埋め込んだICカードが広く普及している。
不揮発性メモリに記憶されるデータは、例えばDES(Data Encryption Standard)などの暗号アルゴリズムにより暗号化されており、正当な復号化方法による復号化処理を行わないと暗号化されたデータを読み出し利用することができないように構成される。
すなわち、ICカードに記憶された暗号化データを使用して各種処理を実行するためには、ICカードと接触或いは非接触により通信を行う外部ホストなどの通信装置により暗号化されたデータを復号する必要がある。
不揮発性メモリに記憶されるデータは、例えばDES(Data Encryption Standard)などの暗号アルゴリズムにより暗号化されており、正当な復号化方法による復号化処理を行わないと暗号化されたデータを読み出し利用することができないように構成される。
すなわち、ICカードに記憶された暗号化データを使用して各種処理を実行するためには、ICカードと接触或いは非接触により通信を行う外部ホストなどの通信装置により暗号化されたデータを復号する必要がある。
しかし、単なるデータの暗号化だけでは、暗号の鍵データが流出してしまうだけで、データの不正入手を目的とする第三者によりICカード内の暗号化データを読み出し利用されてしまう恐れがある。
例えば、ICカードの電源端子に抵抗を直列につなぎ、抵抗端子間の電圧差によって電源電圧の電流値換算を行い、この電流値の変動を統計的に観測するDPA(Differential Power Analysis)法という方法がある。
特許文献1には、DPA法に対する対タンパ性を備えたICカードのセキュリティ保護方法が開示されている。
特許文献1には、DPA法に対する対タンパ性を備えたICカードのセキュリティ保護方法が開示されている。
特許文献1に開示された方法以外にも、例えば保存時にデータ及びデータアドレスをスクランブル処理する回路を実装し、不揮発性メモリ上のデータの物理的な配置を無作為に攪拌するようにする防御方法がある。
このような技術を利用すれば、不揮発性メモリ上に保存されているデータを第三者が読み出そうとしても、データがばらばらに攪拌されてメモリ上に記憶されているため、意味のあるデータとしてデータを取り出すことは困難となる。
このような技術を利用すれば、不揮発性メモリ上に保存されているデータを第三者が読み出そうとしても、データがばらばらに攪拌されてメモリ上に記憶されているため、意味のあるデータとしてデータを取り出すことは困難となる。
ICカードのセキュリティを司るLSI(Large Scale Integration)は、暗号化を行うための暗号鍵の生成プロセスや、暗号化され不揮発性メモリに記憶された暗号化データの内容を更新する。このとき、LSIは暗号化データを一時的に一時メモリ(揮発性メモリ或いはレジスタ)に平文に展開して使用する。
データの不正入手を目的とする第三者の攻撃方法として、一時メモリに一時的に展開された平文データを取り出そうとする方法がある。例えば、レーザ照射等によりLSIのCPU(Central Processing Unit)に誤動作を起こさせ、本来アクセスすべきでないエリアにアクセスさせたり、平文化されたデータを外部に流出させたりするFIAという方法である。
データの不正入手を目的とする第三者の攻撃方法として、一時メモリに一時的に展開された平文データを取り出そうとする方法がある。例えば、レーザ照射等によりLSIのCPU(Central Processing Unit)に誤動作を起こさせ、本来アクセスすべきでないエリアにアクセスさせたり、平文化されたデータを外部に流出させたりするFIAという方法である。
このような攻撃方法に対しては、特許文献1に開示された技術や、上述したデータをスクランブルする防御方法は全く効果が無い。
このような攻撃方法に対する対処として、データが平文化され使用された後、平文のままICカード内に長期間残留しないように、平文データを乱数などにより上書きして外部に流出できないようにする対処方法がある。
しかし、このような対処方法はCPUに多大な処理負荷をかけるため、処理速度が要求される場合にはとることが難しい。特に、消費電力の問題からCPUの処理能力を高くしにくいICカードなどでは、暗号鍵のビット長の増加や、扱うデータ量の増大につれて十分な処理速度を確保することが難しくなっている。
このような攻撃方法に対する対処として、データが平文化され使用された後、平文のままICカード内に長期間残留しないように、平文データを乱数などにより上書きして外部に流出できないようにする対処方法がある。
しかし、このような対処方法はCPUに多大な処理負荷をかけるため、処理速度が要求される場合にはとることが難しい。特に、消費電力の問題からCPUの処理能力を高くしにくいICカードなどでは、暗号鍵のビット長の増加や、扱うデータ量の増大につれて十分な処理速度を確保することが難しくなっている。
このような状況に鑑み、本発明は、処理速度が要求される場合でも対タンパ性を強めたデータ処理装置及びデータ処理方法を提供する。
第1の発明のデータ処理装置は、暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、暗号化データを記憶するメモリと、平文データをスクランブルキーによりスクランブルするスクランブル回路と、前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、乱数生成回路と、前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、を有し、前記制御部は、前記メモリから前記暗号化データを読み出し、前記暗号回路に当該暗号化データを復号させ、平文データを前記スクランブル回路によりスクランブルさせて前記一時メモリに記憶した後、当該スクランブルされた平文データを前記スクランブル回路によりデスクランブルさせた平文データを使用して前記所定の処理を実行し、前記スクランブル回路は、前記制御部の前記所定の処理の実行終了を条件に、前記乱数生成回路により生成された乱数を新しいスクランブルキーとして更新する。
第2の発明のデータ処理方法は、データ処理装置が有するデータを使用して所定の処理を実行する場合に、前記データ処理装置は、暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、暗号化データを記憶するメモリと、平文データをスクランブルキーによりスクランブルするスクランブル回路と、前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、乱数生成回路と、前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、を有し、前記制御部が、前記メモリから前記暗号化データを読み出す第1の工程と、前記暗号回路が、前記第1の工程において読み出された暗号化データを復号する第2の工程と、前記第2の工程において復号された平文データを前記スクランブル回路がスクランブルする第3の工程と、前記第3の工程においてスクランブルされた前記平文データを前記一時メモリが記憶する第4の工程と、前記第4の工程において一時メモリに記憶された、前記スクランブルされた平文データを前記スクランブル回路がデスクランブルする第5の工程と、前記第5の工程においてデスクランブルされた前記平文データを使用して、前記制御部が所定の処理を実行する第6の工程と、前記第6の工程における所定の処理の実行が終了したことを条件に、前記スクランブル回路は、前記乱数生成回路が生成した乱数を新しいスクランブルキーとして更新する第7の工程と、を有する。
本発明は、処理速度が要求される場合でも対タンパ性を強めることができる。
以下、本発明のデータ処理装置を実装した実施形態のICカード100について説明する。
図1は、本実施形態のICカード100の使用例としてのICカードシステム1000の構成の一例を示す図である。
図1に示すように、ICカードシステム1000は、外部ホスト1と、ICカード100とを有する。
外部ホスト1は、例えば、カードリーダなどのカード読取装置であり、ICカード100に記憶されているデータを読み出したり、ICカード100に所定の処理を実行させたりする指示を出す。
図1は、本実施形態のICカード100の使用例としてのICカードシステム1000の構成の一例を示す図である。
図1に示すように、ICカードシステム1000は、外部ホスト1と、ICカード100とを有する。
外部ホスト1は、例えば、カードリーダなどのカード読取装置であり、ICカード100に記憶されているデータを読み出したり、ICカード100に所定の処理を実行させたりする指示を出す。
外部ホスト1とICカード100とは、接触型或いは非接触型の通信を行う。
接触型と非接触型のいずれの通信を行うかは、ICカード100のタイプによって異なる。
接触型のICカード100は、外部ホスト1のリーダ/ライタ端子と接触するモジュール端子を持ち、ICカード100とリーダ/ライタ端子が直接接触して有線通信を行う。確実な通信を行うことができる接触型のICカードは主に、より堅牢なセキュリティが求められる決済や認証の分野で使われる。
一方、非接触型のICカード100は、カード内部にアンテナの役目を果たすコイルが内蔵され、端末のリーダ/ライタから発生している磁界にコイルが触れることにより電流が生じ、これによって無線通信を行う。
非接触型のICカードは、鉄道改札や入退室管理など、より利便性を求められる場面において活用される。
接触型と非接触型のいずれの通信を行うかは、ICカード100のタイプによって異なる。
接触型のICカード100は、外部ホスト1のリーダ/ライタ端子と接触するモジュール端子を持ち、ICカード100とリーダ/ライタ端子が直接接触して有線通信を行う。確実な通信を行うことができる接触型のICカードは主に、より堅牢なセキュリティが求められる決済や認証の分野で使われる。
一方、非接触型のICカード100は、カード内部にアンテナの役目を果たすコイルが内蔵され、端末のリーダ/ライタから発生している磁界にコイルが触れることにより電流が生じ、これによって無線通信を行う。
非接触型のICカードは、鉄道改札や入退室管理など、より利便性を求められる場面において活用される。
ICカード100は、その内部にICチップ3を有する。
ICチップ3は、ICカード100の機能を実現するデータ処理モジュールである。
ICチップ3は、本発明のデータ処理装置に対応している。
ICチップ3は、ICカード100の機能を実現するデータ処理モジュールである。
ICチップ3は、本発明のデータ処理装置に対応している。
次に、ICチップ3の各構成について詳細に説明する。
図2は、ICチップ3の構成の一例について説明するためのブロック図である。
図2に示すように、ICチップ3はCPU4、RAM5、暗号回路6、通信I/F7、RNG8、EEPROM10、セキュアRAM13、スクランブル回路14を有する。
なお、CPU4が本発明の制御部に対応する。
また、暗号回路6が本発明の暗号回路に対応する。
また、RNG8が本発明の乱数生成回路に対応する。
また、EEPROM10が本発明のメモリに対応する。
また、セキュアRAM13が本発明の一時記憶回路に対応する。
また、スクランブル回路14が本発明のスクランブル回路に対応する。
ICチップ3は、所定の処理の実行に使用されるセキュリティ性が高いデータ(以下秘密データと称する)を記憶している。
図2は、ICチップ3の構成の一例について説明するためのブロック図である。
図2に示すように、ICチップ3はCPU4、RAM5、暗号回路6、通信I/F7、RNG8、EEPROM10、セキュアRAM13、スクランブル回路14を有する。
なお、CPU4が本発明の制御部に対応する。
また、暗号回路6が本発明の暗号回路に対応する。
また、RNG8が本発明の乱数生成回路に対応する。
また、EEPROM10が本発明のメモリに対応する。
また、セキュアRAM13が本発明の一時記憶回路に対応する。
また、スクランブル回路14が本発明のスクランブル回路に対応する。
ICチップ3は、所定の処理の実行に使用されるセキュリティ性が高いデータ(以下秘密データと称する)を記憶している。
以下、ICチップ3の各構成の詳細について説明する。
CPU4は、ICチップ3の各構成の動作を統括的に制御する制御ユニットである。
CPU4の詳細な動作については後述する。
RAM(Random Access Memory)5は、例えば揮発性メモリにより構成された一時メモリである。
CPU4は、ICチップ3の各構成の動作を統括的に制御する制御ユニットである。
CPU4の詳細な動作については後述する。
RAM(Random Access Memory)5は、例えば揮発性メモリにより構成された一時メモリである。
暗号回路6は、データの暗号化或いは復号化を行う回路である。
暗号化の方式としては、例えばDES(Data Encryption Standard)、AES(Advanced Encryption Standard)、FEAL(the Fast Data Encipherment Algorithm)などさまざまな方式が考案されている。
本発明の暗号回路が使用する暗号化方式は、特に限定しない。上記のような暗号化方式の他、既存の暗号化方式のいずれを採用してもよい。
暗号化の方式としては、例えばDES(Data Encryption Standard)、AES(Advanced Encryption Standard)、FEAL(the Fast Data Encipherment Algorithm)などさまざまな方式が考案されている。
本発明の暗号回路が使用する暗号化方式は、特に限定しない。上記のような暗号化方式の他、既存の暗号化方式のいずれを採用してもよい。
通信I/F(Interface)7は、外部ホスト1と接触式或いは非接触式の通信を行うための通信モジュールである。
通信I/F7は、ICカード100が接触式のICカードである場合には、外部ホスト1のリーダ/ライタ端子と直接接触する端子モジュールである。また、ICカード100が非接触式のICカードである場合には、アンテナの役割を果たすコイルを含む通信モジュールである。
通信I/F7は、ICカード100が接触式のICカードである場合には、外部ホスト1のリーダ/ライタ端子と直接接触する端子モジュールである。また、ICカード100が非接触式のICカードである場合には、アンテナの役割を果たすコイルを含む通信モジュールである。
RNG(Random Number Generator)8は、乱数を生成する回路である。
RNG8の乱数生成の方法は、本実施形態では特に限定しない。既存の技術を利用することができる。
EEPROM(Electrically Erasable Programmable Read Only Memory)10は、CPU4がICカード100の各処理に必要なデータを記憶するためのメモリ装置である。EEPROM10は、ICカードの用途に応じて、ICカード100の使用者の個人情報、ユーザに関する様々な情報(交通機関の利用履歴、金額やクレジットカードの利用履歴、金額など)などを記憶する。
EEPROM10に記憶されるデータは、ユーザとICカードシステム1000の管理者以外の第三者には知られてはならないデータが殆どとなる。以後、EEPROM10に記憶されるデータを秘密データと称する。
EEPROM10において、秘密データは暗号化され、暗号化データ16として記憶される。
RNG8の乱数生成の方法は、本実施形態では特に限定しない。既存の技術を利用することができる。
EEPROM(Electrically Erasable Programmable Read Only Memory)10は、CPU4がICカード100の各処理に必要なデータを記憶するためのメモリ装置である。EEPROM10は、ICカードの用途に応じて、ICカード100の使用者の個人情報、ユーザに関する様々な情報(交通機関の利用履歴、金額やクレジットカードの利用履歴、金額など)などを記憶する。
EEPROM10に記憶されるデータは、ユーザとICカードシステム1000の管理者以外の第三者には知られてはならないデータが殆どとなる。以後、EEPROM10に記憶されるデータを秘密データと称する。
EEPROM10において、秘密データは暗号化され、暗号化データ16として記憶される。
セキュアRAM13は、ICチップ3においてCPU4が処理を実行する上で使用されるデータ類を格納するための一時メモリである。すなわち、セキュアRAM13は、CPU4の処理のためのメモリエリアである。
セキュアRAM13としては、一般に揮発性メモリが使用される。
セキュアRAM13は、CPU4から直接アクセスでき、動作が高速であるように設計されている。CPU4は、EEPROM10に記憶された暗号化データ16に対して所定の処理を行なう際には、必要なものだけを復号してセキュアRAM13に読み出し、使用する。
セキュアRAM13としては、一般に揮発性メモリが使用される。
セキュアRAM13は、CPU4から直接アクセスでき、動作が高速であるように設計されている。CPU4は、EEPROM10に記憶された暗号化データ16に対して所定の処理を行なう際には、必要なものだけを復号してセキュアRAM13に読み出し、使用する。
スクランブル回路14は、CPU4がEEPROM10から読み出した暗号化データ16を暗号回路6により復号化して平文データ17を生成させ、セキュアRAM13に一時記憶させるときに、スクランブルキーを用いてスクランブルをかける回路である。
スクランブル回路14が平文データ17にスクランブルをかけることにより、セキュアRAM13にはスクランブルをかけられたデータが一時記憶されることになる。
したがって、第三者がICカード100から強制的に秘密データを読み出す攻撃を仕掛けたとしても、セキュアRAM13に記憶されているのはスクランブルされたデータである。すなわち、そのまま読み出されたところでスクランブルキーがないと意味のあるデータとはならない。このため、スクランブル回路14により、第三者からの攻撃に強く、対タンパ性の高いICカード100を構成することができる。
スクランブル回路14が平文データ17にスクランブルをかけることにより、セキュアRAM13にはスクランブルをかけられたデータが一時記憶されることになる。
したがって、第三者がICカード100から強制的に秘密データを読み出す攻撃を仕掛けたとしても、セキュアRAM13に記憶されているのはスクランブルされたデータである。すなわち、そのまま読み出されたところでスクランブルキーがないと意味のあるデータとはならない。このため、スクランブル回路14により、第三者からの攻撃に強く、対タンパ性の高いICカード100を構成することができる。
スクランブル回路14が平文データ17に対してスクランブルをかける方法としては、本実施形態では、平文データ17とスクランブルキーとのビットごとの排他的論理和をとる方法を採用する。
排他的論理和とは、共に真或いは共に偽のときに、偽を返す論理演算である。
ビットごとの排他的論理和では、すなわち、2つのデータを比較し、ビットごとに、どちらかのデータが1、片方のデータが0であれば1を返し、共に1或いは0であった場合には0を返す。
このような演算により、平文データ17とスクランブルキーの両方がないと解読できないスクランブルデータを生成することができる。
なお、平文データ7は、データそのものと、データの位置を示す情報(アドレス情報)の両方を含むものとする。
排他的論理和とは、共に真或いは共に偽のときに、偽を返す論理演算である。
ビットごとの排他的論理和では、すなわち、2つのデータを比較し、ビットごとに、どちらかのデータが1、片方のデータが0であれば1を返し、共に1或いは0であった場合には0を返す。
このような演算により、平文データ17とスクランブルキーの両方がないと解読できないスクランブルデータを生成することができる。
なお、平文データ7は、データそのものと、データの位置を示す情報(アドレス情報)の両方を含むものとする。
スクランブル回路14は、スクランブルキーを記憶するためのキーレジスタ15を有する。
キーレジスタ15に記憶されるスクランブルキーは、RNG8により生成された乱数である。排他的論理和を使用したスクランブルでは、スクランブルキーの情報量が少ないと、データ17の情報が漏洩してしまう恐れがある。このためスクランブルされたデータの安全のためには、スクランブルキーの長さは必要十分に確保する必要がある。例えば、CPU4のデータ処理単位が32bitであった場合は、少なくとも64bit程度は確保することが望ましい。
従ってRNG8は、例えば64bitの乱数を生成し、予めキーレジスタ15に記憶しておく。RNG8の乱数を生成しキーレジスタ15に記憶させるタイミングは、例えばICカード100の起動時でよい。
キーレジスタ15に記憶されるスクランブルキーは、RNG8により生成された乱数である。排他的論理和を使用したスクランブルでは、スクランブルキーの情報量が少ないと、データ17の情報が漏洩してしまう恐れがある。このためスクランブルされたデータの安全のためには、スクランブルキーの長さは必要十分に確保する必要がある。例えば、CPU4のデータ処理単位が32bitであった場合は、少なくとも64bit程度は確保することが望ましい。
従ってRNG8は、例えば64bitの乱数を生成し、予めキーレジスタ15に記憶しておく。RNG8の乱数を生成しキーレジスタ15に記憶させるタイミングは、例えばICカード100の起動時でよい。
ここで、上述したように、スクランブル回路14によりスクランブルされたデータがセキュアRAM13に記憶され、このデータが第三者により読み出されたとしてもこのデータだけでは平文データ17を得ることができず、安全である。しかし、スクランブルキーを一緒に読み出されてしまえば第三者にも容易に平文データ17が得られてしまう。
このため、本実施形態のICカード100では、CPU4がセキュアRAM13からスクランブルされたデータを読み出し、デスクランブルして所定の処理を終了したことを条件に、スクランブルキーを他の乱数で上書きしてしまう処理を行う。
このため、本実施形態のICカード100では、CPU4がセキュアRAM13からスクランブルされたデータを読み出し、デスクランブルして所定の処理を終了したことを条件に、スクランブルキーを他の乱数で上書きしてしまう処理を行う。
詳細に説明すると、CPU4は、セキュアRAM13からスクランブルされたデータを使用して所定の処理を行う場合、まずこのデータをセキュアRAM13から読み出してスクランブル回路14にデスクランブルさせる。
そして、デスクランブルされた平文データ17を使用して、所定の処理を行う。所定の処理とは、例えば外部ホスト1の要求に応じた、秘密データの編集などの処理である。
CPU4による所定の処理の終了後、使用された平文データ17は暗号回路6により再度暗号化されて一旦RAM5に記憶される。
この時点で、CPU4による所定の処理が終了しているため、スクランブル回路14は、RNG8により生成された乱数をキーレジスタ15に上書きする。上書きされた新たな乱数は、新たなスクランブルキーとして使用される。
したがって、CPU4による所定の処理終了後は、所定の処理の際に使用されたスクランブルキーが新しいスクランブルキーの上書きにより消去されてしまうことになる。
このため、第三者によりスクランブルされたデータとスクランブルキーの両方が攻撃により読み出され、秘密データが漏れてしまう可能性を最大限に低下させることができる。
また、レーザ等によるFIAにより、CPU4が誤ってセキュアRAM13からスクランブルされたデータを読み出してしまった場合でも、スクランブルキーの更新以降は、すでに秘密データは意味のない乱数データとしてしか読み出せない。このため、秘密データの漏洩が完全に防止されることになる。
なお、CPU4による所定の処理が終了したことは、CPU4によりスクランブル回路14に通知され、これにしたがってスクランブル回路14はスクランブルキーを更新する。
そして、デスクランブルされた平文データ17を使用して、所定の処理を行う。所定の処理とは、例えば外部ホスト1の要求に応じた、秘密データの編集などの処理である。
CPU4による所定の処理の終了後、使用された平文データ17は暗号回路6により再度暗号化されて一旦RAM5に記憶される。
この時点で、CPU4による所定の処理が終了しているため、スクランブル回路14は、RNG8により生成された乱数をキーレジスタ15に上書きする。上書きされた新たな乱数は、新たなスクランブルキーとして使用される。
したがって、CPU4による所定の処理終了後は、所定の処理の際に使用されたスクランブルキーが新しいスクランブルキーの上書きにより消去されてしまうことになる。
このため、第三者によりスクランブルされたデータとスクランブルキーの両方が攻撃により読み出され、秘密データが漏れてしまう可能性を最大限に低下させることができる。
また、レーザ等によるFIAにより、CPU4が誤ってセキュアRAM13からスクランブルされたデータを読み出してしまった場合でも、スクランブルキーの更新以降は、すでに秘密データは意味のない乱数データとしてしか読み出せない。このため、秘密データの漏洩が完全に防止されることになる。
なお、CPU4による所定の処理が終了したことは、CPU4によりスクランブル回路14に通知され、これにしたがってスクランブル回路14はスクランブルキーを更新する。
なお、スクランブル回路14がスクランブルキーを更新する契機としては、CPU4からの所定の処理終了通知の他に、例えば暗号回路6の暗号化終了の通知や、通信I/F7を介した外部ホスト1からの要求であってもよい。
以下、スクランブル回路14の回路構成例について説明する。
図3は、スクランブル回路14の回路構成の一例を示した図である。
図3に示すように、スクランブル回路14は2つのXOR回路(排他的論理和を実現する回路)141及び142を有する。
XOR回路141はセキュアRAM13に対する書き込み用の回路であり、XOR回路142はセキュアRAM13からの読み出し用の回路である。
XOR回路141は、CPU4から供給される平文データ17と、キーレジスタから読み出したスクランブルキーとを基に、ビットごとの排他的論理和をとり、結果をセキュアRAM13に書き込む。
XOR回路142は、反対に、セキュアRAM13から読み出されたスクランブルされたデータと、キーレジスタから読み出したスクランブルキーとを基に、ビットごとの排他的論理和をとり、結果をCPU4に出力する。
このような構成により、スクランブル回路14が実現できる。
図3は、スクランブル回路14の回路構成の一例を示した図である。
図3に示すように、スクランブル回路14は2つのXOR回路(排他的論理和を実現する回路)141及び142を有する。
XOR回路141はセキュアRAM13に対する書き込み用の回路であり、XOR回路142はセキュアRAM13からの読み出し用の回路である。
XOR回路141は、CPU4から供給される平文データ17と、キーレジスタから読み出したスクランブルキーとを基に、ビットごとの排他的論理和をとり、結果をセキュアRAM13に書き込む。
XOR回路142は、反対に、セキュアRAM13から読み出されたスクランブルされたデータと、キーレジスタから読み出したスクランブルキーとを基に、ビットごとの排他的論理和をとり、結果をCPU4に出力する。
このような構成により、スクランブル回路14が実現できる。
次に、CPU4が所定の処理を実行する際のICカード100の動作例について説明する。
図4は、CPU4が所定の処理を実行する際のICカード100の動作例について説明するためのフローチャートである。
図4は、CPU4が所定の処理を実行する際のICカード100の動作例について説明するためのフローチャートである。
ステップST1:
通信I/F7は、外部ホスト1から所定の処理実行の要求を取得する。この時点でICチップ3に電源が供給され、ICチップ3の各機能が動作を開始する。
ステップST2:
スクランブル回路14は、RNG8が生成した乱数を、キーレジスタ15にスクランブルキーとして記憶する。
本ステップにおいては、ICチップ3の電源投入直後であるため、揮発性メモリであるキーレジスタ15には何も記憶されていない。このため、本ステップにおいてRNG8により生成された乱数が記憶されないと、スクランブル回路14がスクランブルをかけることができない。
通信I/F7は、外部ホスト1から所定の処理実行の要求を取得する。この時点でICチップ3に電源が供給され、ICチップ3の各機能が動作を開始する。
ステップST2:
スクランブル回路14は、RNG8が生成した乱数を、キーレジスタ15にスクランブルキーとして記憶する。
本ステップにおいては、ICチップ3の電源投入直後であるため、揮発性メモリであるキーレジスタ15には何も記憶されていない。このため、本ステップにおいてRNG8により生成された乱数が記憶されないと、スクランブル回路14がスクランブルをかけることができない。
ステップST3:
CPU4は、EEPROM10から暗号化データ16を読み出す。
ステップST4:
ステップST3においてEEPROM10から読み出された暗号化データを暗号回路6が復号化する。
これにより、暗号化データ16は平文データ17となり、CPU4による所定の処理に使用できる状態となる。
CPU4は、EEPROM10から暗号化データ16を読み出す。
ステップST4:
ステップST3においてEEPROM10から読み出された暗号化データを暗号回路6が復号化する。
これにより、暗号化データ16は平文データ17となり、CPU4による所定の処理に使用できる状態となる。
ステップST5:
スクランブル回路14は、キーレジスタ15に記憶されたスクランブルキーを用いて、ステップST4において復号された平文データ17にスクランブルをかける処理を行う。
スクランブル回路14がスクランブルをかける処理は、例えば平文データ17とスクランブルキーとのビットごとの排他的論理和演算を行うことにより実現される。
ステップST6:
CPU4は、ステップST5においてスクランブルされたデータを、セキュアRAM13に一時記憶する。
これは、CPU4が所定の外部ホスト1に要求された所定の処理を実行する際のメモリエリアを確保するためである。
スクランブル回路14は、キーレジスタ15に記憶されたスクランブルキーを用いて、ステップST4において復号された平文データ17にスクランブルをかける処理を行う。
スクランブル回路14がスクランブルをかける処理は、例えば平文データ17とスクランブルキーとのビットごとの排他的論理和演算を行うことにより実現される。
ステップST6:
CPU4は、ステップST5においてスクランブルされたデータを、セキュアRAM13に一時記憶する。
これは、CPU4が所定の外部ホスト1に要求された所定の処理を実行する際のメモリエリアを確保するためである。
ステップST7:
CPU4は、外部ホスト1に要求された所定の処理を開始する。
所定の処理とは、例えば、秘密データの編集である。
ステップST8:
CPU4は、セキュアRAM13からスクランブルされたデータを読み出し、スクランブル回路14にデスクランブルさせる。
スクランブル回路14は、スクランブルされたデータと、スクランブルキーとのビットごとの排他的論理和演算を行うことによりデスクランブルを行う。
CPU4は、外部ホスト1に要求された所定の処理を開始する。
所定の処理とは、例えば、秘密データの編集である。
ステップST8:
CPU4は、セキュアRAM13からスクランブルされたデータを読み出し、スクランブル回路14にデスクランブルさせる。
スクランブル回路14は、スクランブルされたデータと、スクランブルキーとのビットごとの排他的論理和演算を行うことによりデスクランブルを行う。
ステップST9:
CPU4は、ステップST8においてデスクランブルされたデータ(平文データ17)を使用して、所定の処理を実行する。
ステップST10:
暗号回路6は、ステップST9におけるCPU4による所定の処理が終了した平文データ17を暗号化して、暗号化データ16を生成する。
CPU4は、ステップST8においてデスクランブルされたデータ(平文データ17)を使用して、所定の処理を実行する。
ステップST10:
暗号回路6は、ステップST9におけるCPU4による所定の処理が終了した平文データ17を暗号化して、暗号化データ16を生成する。
ステップST11:
CPU4は、ステップST10において生成された暗号化データ16をRAM5に一時格納する。
本ステップST11まででCPU4による予定の処理が終了する。
ステップST12:
CPU4は、所定の処理が終了したことをスクランブル回路14に通知する。
CPU4は、ステップST10において生成された暗号化データ16をRAM5に一時格納する。
本ステップST11まででCPU4による予定の処理が終了する。
ステップST12:
CPU4は、所定の処理が終了したことをスクランブル回路14に通知する。
ステップST13:
スクランブル回路14は、ステップST12において通知された所定の処理の終了に応じて、RNG8が生成した乱数によりキーレジスタ15のスクランブルキーを更新する。
ステップST14:
CPU4は、ステップST11においてRAM5に一時記憶した所定の処理終了後の暗号化データ16をEEPROM10に上書きする。
スクランブル回路14は、ステップST12において通知された所定の処理の終了に応じて、RNG8が生成した乱数によりキーレジスタ15のスクランブルキーを更新する。
ステップST14:
CPU4は、ステップST11においてRAM5に一時記憶した所定の処理終了後の暗号化データ16をEEPROM10に上書きする。
ステップST15:
CPU4は、通信I/F7を介して外部ホスト1に要求された所定の処理が終了したことを通知する。
CPU4は、通信I/F7を介して外部ホスト1に要求された所定の処理が終了したことを通知する。
以上説明したように、本実施形態のICカードシステム1000は、外部ホスト1と、外部ホスト1による所定の処理の要求を通信I/F7を介して取得し、予め記憶された秘密データを使用して所定の処理を実行するICカード100を有する。
ICカード100は、CPU4と、暗号回路6と、RNG8と、EEPROM10と、セキュアRAM13と、スクランブル回路14とを有する。
CPU4は、所定の処理の実行時には、EEPROM10に記憶された暗号化データ16を読み出し、暗号回路6に復号化させて平文データ17を生成する。次に、平文データ17をスクランブル回路14によりスクランブルキーを使用したスクランブル処理を行わせる。スクランブル回路14によりスクランブルされたデータはセキュアRAM13に一時記憶される。
そして、CPU4はセキュアRAM13に記憶されたデータをスクランブル回路14にデスクランブルさせて平文データ17を取得し、これを使用して所定の処理を実行する。
CPU4は、所定の処理が終了したら、処理済みのデータを暗号回路6に暗号化させる。そして、CPU4は所定の処理が終了したことをスクランブル回路14に通知し、スクランブル回路14はこれに応じてRNG8が生成した乱数によりスクランブルキーを更新する。
ICカード100は、CPU4と、暗号回路6と、RNG8と、EEPROM10と、セキュアRAM13と、スクランブル回路14とを有する。
CPU4は、所定の処理の実行時には、EEPROM10に記憶された暗号化データ16を読み出し、暗号回路6に復号化させて平文データ17を生成する。次に、平文データ17をスクランブル回路14によりスクランブルキーを使用したスクランブル処理を行わせる。スクランブル回路14によりスクランブルされたデータはセキュアRAM13に一時記憶される。
そして、CPU4はセキュアRAM13に記憶されたデータをスクランブル回路14にデスクランブルさせて平文データ17を取得し、これを使用して所定の処理を実行する。
CPU4は、所定の処理が終了したら、処理済みのデータを暗号回路6に暗号化させる。そして、CPU4は所定の処理が終了したことをスクランブル回路14に通知し、スクランブル回路14はこれに応じてRNG8が生成した乱数によりスクランブルキーを更新する。
以上のような構成により、本実施形態のICカードシステム1000は、平文データ17が所定の処理実行中のCPU4内以外では、スクランブルされた状態でセキュアRAM13に一時記憶されているだけに過ぎない。
このため、たとえ第三者によりセキュアRAM13に記憶されたデータが読み出されたとしても、このデータはスクランブルされているため、第三者には意味のあるデータとして見えない。これにより、ICカード100の第三者の攻撃に対する耐性(対タンパ性)を向上させることができる。
このため、たとえ第三者によりセキュアRAM13に記憶されたデータが読み出されたとしても、このデータはスクランブルされているため、第三者には意味のあるデータとして見えない。これにより、ICカード100の第三者の攻撃に対する耐性(対タンパ性)を向上させることができる。
なお、第三者にセキュアRAM13に記憶されたスクランブルされたデータと、スクランブル回路14のキーレジスタ15に記憶されたスクランブルキーの両方が読み出された場合には、第三者でも秘密データを復元可能となってしまう。
しかし、本実施形態のICカードシステム1000では、CPU4による所定の処理がスクランブル回路14に通知され、これに応じてスクランブルキーが更新される。このため、所定の処理終了後は非常に短い時間しかスクランブルキーが存在しない。具体的には、例えばCPU4の命令実行サイクルにして数サイクル程度と考えられる。すなわち、従来の平文データに乱数を上書きして平文データの読み出しに対抗していた技術よりも、非常に高速で所定の処理に使用したスクランブルキーの消去を行うことができる。
このため、スクランブルされたデータとスクランブルキーの両方が読み出され第三者によりスクランブルが解かれてしまう事態を最大限に回避することができ、対タンパ性を大幅に向上させることが可能となっている。
しかし、本実施形態のICカードシステム1000では、CPU4による所定の処理がスクランブル回路14に通知され、これに応じてスクランブルキーが更新される。このため、所定の処理終了後は非常に短い時間しかスクランブルキーが存在しない。具体的には、例えばCPU4の命令実行サイクルにして数サイクル程度と考えられる。すなわち、従来の平文データに乱数を上書きして平文データの読み出しに対抗していた技術よりも、非常に高速で所定の処理に使用したスクランブルキーの消去を行うことができる。
このため、スクランブルされたデータとスクランブルキーの両方が読み出され第三者によりスクランブルが解かれてしまう事態を最大限に回避することができ、対タンパ性を大幅に向上させることが可能となっている。
本発明は上述した実施形態には限定されない。
すなわち、本発明の実施に際しては、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し様々な変更並びに代替を行ってもよい。
上述した実施形態においては、スクランブル回路14のスクランブル処理をビットごとの排他的論理和演算により行っていたが、本発明はこれには限定されない。
本発明では、スクランブル回路は対称暗号アルゴリズム(共通鍵を使用した暗号化方法)であれば、どのような方法を使用してもよい。
すなわち、本発明の実施に際しては、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し様々な変更並びに代替を行ってもよい。
上述した実施形態においては、スクランブル回路14のスクランブル処理をビットごとの排他的論理和演算により行っていたが、本発明はこれには限定されない。
本発明では、スクランブル回路は対称暗号アルゴリズム(共通鍵を使用した暗号化方法)であれば、どのような方法を使用してもよい。
また、上述した実施形態では、ICカード100は接触型のICカード或いは非接触型のICカードであるとしたが、近年では両方に対応したICカードも普及している。
本発明のICカードが接触型と非接触型の両方に対応していた場合には、片方の通信における処理が終了した場合に、対応したスクランブルキーをその都度更新するようにすればよい。
また、本発明には、上述した構成のICカードシステム1000のICチップ3にウォッチドッグタイマを加えた構成も含まれる。ICチップ3全体がシステムエラーなどにより動作不能に陥った場合でも所定の時間ごとにCPU4に対してスクランブルキーの更新などを行わせるようにウォッチドッグタイマを予めセットしておく。これにより、ICチップ3が動作不能状態であっても所定時間経過後にはスクランブルキーの更新が行われるため、動作不能状態中に第三者にスクランブルデータとスクランブルキーの両方を同時に読み出されてしまう事態を防止することができる。
本発明のICカードが接触型と非接触型の両方に対応していた場合には、片方の通信における処理が終了した場合に、対応したスクランブルキーをその都度更新するようにすればよい。
また、本発明には、上述した構成のICカードシステム1000のICチップ3にウォッチドッグタイマを加えた構成も含まれる。ICチップ3全体がシステムエラーなどにより動作不能に陥った場合でも所定の時間ごとにCPU4に対してスクランブルキーの更新などを行わせるようにウォッチドッグタイマを予めセットしておく。これにより、ICチップ3が動作不能状態であっても所定時間経過後にはスクランブルキーの更新が行われるため、動作不能状態中に第三者にスクランブルデータとスクランブルキーの両方を同時に読み出されてしまう事態を防止することができる。
1000…ICカードシステム、100…ICカード、1…外部ホスト、3…ICチップ、4…CPU、5…RAM、6…暗号回路、7…平文データ、8…暗号回路、10…EEPROM、13…セキュアRAM、14…スクランブル回路、141…XOR回路、142…XOR回路、15…キーレジスタ、16…暗号化データ、17…平文データ
Claims (5)
- 暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、
暗号化データを記憶するメモリと、
平文データをスクランブルキーによりスクランブルするスクランブル回路と、
前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、
乱数生成回路と、
前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、
を有し、
前記制御部は、前記メモリから前記暗号化データを読み出し、前記暗号回路に当該暗号化データを復号させ、平文データを前記スクランブル回路によりスクランブルさせて前記一時メモリに記憶した後、当該スクランブルされた平文データを前記スクランブル回路によりデスクランブルさせた平文データを使用して前記所定の処理を実行し、
前記スクランブル回路は、前記制御部の前記所定の処理の実行終了を条件に、前記乱数生成回路により生成された乱数を新しいスクランブルキーとして更新する
データ処理装置。 - 前記スクランブル回路は、前記スクランブルキーと前記平文データとの排他的論理和演算により前記平文データをスクランブルする
請求項1に記載のデータ処理装置。 - 前記スクランブル回路は、前記制御部から処理終了を通知する処理終了信号に応じて前記乱数生成回路により生成された乱数を新しいスクランブルキーとして更新する
請求項2に記載のデータ処理装置。 - 前記スクランブル回路は、前記スクランブルキーを記憶するキーレジスタを有する
請求項3に記載のデータ処理装置。 - データ処理装置が有するデータを使用して所定の処理を実行する場合に、
前記データ処理装置は、
暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、
暗号化データを記憶するメモリと、
平文データをスクランブルキーによりスクランブルするスクランブル回路と、
前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、
乱数生成回路と、
前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、
を有し、
前記制御部が、前記メモリから前記暗号化データを読み出す第1の工程と、
前記暗号回路が、前記第1の工程において読み出された暗号化データを復号する第2の工程と、
前記第2の工程において復号された平文データを前記スクランブル回路がスクランブルする第3の工程と、
前記第3の工程においてスクランブルされた前記平文データを前記一時メモリが記憶する第4の工程と、
前記第4の工程において一時メモリに記憶された、前記スクランブルされた平文データを前記スクランブル回路がデスクランブルする第5の工程と、
前記第5の工程においてデスクランブルされた前記平文データを使用して、前記制御部が所定の処理を実行する第6の工程と、
前記第6の工程における所定の処理の実行が終了したことを条件に、前記スクランブル回路は、前記乱数生成回路が生成した乱数を新しいスクランブルキーとして更新する第7の工程と、
を有するデータ処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008258891A JP2010092117A (ja) | 2008-10-03 | 2008-10-03 | データ処理装置及びデータ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008258891A JP2010092117A (ja) | 2008-10-03 | 2008-10-03 | データ処理装置及びデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010092117A true JP2010092117A (ja) | 2010-04-22 |
Family
ID=42254798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008258891A Pending JP2010092117A (ja) | 2008-10-03 | 2008-10-03 | データ処理装置及びデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010092117A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112244360A (zh) * | 2020-10-12 | 2021-01-22 | 武汉瑞纳捷电子技术有限公司 | 电子烟烟弹的认证方法、装置及电子烟 |
WO2021061596A1 (en) | 2019-09-25 | 2021-04-01 | Micron Technology, Inc. | Exclusive or engine on random access memory |
-
2008
- 2008-10-03 JP JP2008258891A patent/JP2010092117A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021061596A1 (en) | 2019-09-25 | 2021-04-01 | Micron Technology, Inc. | Exclusive or engine on random access memory |
EP4035052A4 (en) * | 2019-09-25 | 2023-09-27 | Micron Technology, Inc. | ENGINE OR EXCLUSIVE ON RAM |
CN112244360A (zh) * | 2020-10-12 | 2021-01-22 | 武汉瑞纳捷电子技术有限公司 | 电子烟烟弹的认证方法、装置及电子烟 |
CN112244360B (zh) * | 2020-10-12 | 2023-12-22 | 武汉瑞纳捷半导体有限公司 | 电子烟烟弹的认证方法、装置及电子烟 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9483664B2 (en) | Address dependent data encryption | |
US8000467B2 (en) | Data parallelized encryption and integrity checking method and device | |
US8909932B2 (en) | Method and apparatus for security over multiple interfaces | |
Helfmeier et al. | Physical vulnerabilities of physically unclonable functions | |
US20190079878A1 (en) | Security system using random number bit string | |
US20120201379A1 (en) | Method and apparatus for protecting security parameters used by a security module | |
KR101303278B1 (ko) | 비트스트림 보호를 위한 fpga 장치 및 그 방법 | |
CN103154963A (zh) | 对地址的加扰和对需存储于存储设备中的写入数据的加密 | |
US20110083020A1 (en) | Securing a smart card | |
US7752407B1 (en) | Security RAM block | |
CN102156843B (zh) | 数据加密方法与系统以及数据解密方法 | |
US20100095132A1 (en) | Protecting secrets in an untrusted recipient | |
KR100849956B1 (ko) | 반도체 장치 및 그것의 스크램블된 데이터 전송 방법 | |
CN114785503B (zh) | 密码卡及其根密钥保护方法、计算机可读存储介质 | |
EP2990953B1 (en) | Periodic memory refresh in a secure computing system | |
US8275129B2 (en) | Data scrambling, descrambling, and data processing method, and controller and storage system using the same | |
US8359447B1 (en) | System and method of detecting and reversing data imprinting in memory | |
CN102662874A (zh) | 双界面加密存储卡及其中的数据管理方法和系统 | |
US7949912B1 (en) | System and method of securing data stored in a memory | |
Leng | Smart card applications and security | |
JP2010092117A (ja) | データ処理装置及びデータ処理方法 | |
US8972744B1 (en) | Preventing data imprinting in memory | |
JP7057675B2 (ja) | 半導体装置及び暗号鍵の生成方法 | |
KR20070076848A (ko) | 카드 인증 시스템의 보안레벨을 향상시키는 장치 및 방법 | |
CN209103293U (zh) | 电子设备 |