JP2008204085A - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP2008204085A
JP2008204085A JP2007038294A JP2007038294A JP2008204085A JP 2008204085 A JP2008204085 A JP 2008204085A JP 2007038294 A JP2007038294 A JP 2007038294A JP 2007038294 A JP2007038294 A JP 2007038294A JP 2008204085 A JP2008204085 A JP 2008204085A
Authority
JP
Japan
Prior art keywords
data
error detection
detection code
error
memory
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
Application number
JP2007038294A
Other languages
English (en)
Inventor
Daijiro Kinbara
大爾朗 金原
Hiroo Nakano
寛生 中野
Tetsuro Iwamura
鉄郎 岩村
Atsushi Kobayashi
敦 小林
Masahiko Motoyama
雅彦 本山
Hideki Teraoka
秀樹 寺岡
Atsushi Shinpo
淳 新保
Hideo Shimizu
秀夫 清水
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007038294A priority Critical patent/JP2008204085A/ja
Priority to US12/032,877 priority patent/US20090024887A1/en
Publication of JP2008204085A publication Critical patent/JP2008204085A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • G06K19/07363Means for preventing undesired reading or writing from or onto record carriers by preventing analysis of the circuit, e.g. dynamic or static power analysis or current analysis
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2121Chip on media, e.g. a disk or tape with a chip embedded in its case
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】メモリのデータだけでなくメモリアドレスに誤りが発生した場合も誤りを検出可能とする半導体記憶装置を提供する。
【解決手段】データをメモリとしてのEEPROM7における例えばメモリアドレスAddr01のメモリセルに書き込む場合、誤り検査回路8において、そのデータのデータ誤り検出符号と、メモリアドレスAddr01のアドレス誤り符号との演算により、メモリアドレスAddr01に応じて異なる誤り検出符号を生成する。この誤り検出符号はデータと共に同じメモリアドレスAddr01のメモリセルに書き込まれ、データだけでなくメモリアドレスに誤りが発生した場合も誤りを検出可能とする。
【選択図】図3

Description

本発明は、保護すべきデータを記憶するメモリを備えた半導体記憶装置に関する。
インターネットの普及により、パーソナルコンピュータや、携帯電話などをはじめとするモバイル情報端末からのネットワーク上での取引が増加しており、暗号技術よる安全な通信の確保が必要とされている。なかでも磁気カードより偽造が困難であり、高いセキュリティをもつICカードが注目されている。
しかし、ICカードは暗号実装に対して様々な攻撃手法が発表されており、これらの攻撃手法への対策が必須となっている。
ICカードへの攻撃方法の一つとして、故障利用解析が上げられる。これは暗号の計算中にICカードの外部から物理的な手段によりICカード内部のデータのビットパターンを故意に変更し、演算結果に誤りを生じさせて、秘密情報である暗号鍵の解析を行うものである。
故障利用解析による攻撃の例としては、中国人剰余定理(Chinese remainder theorem:以下CRTという)を用いたRSA復号方式に対する攻撃手法が知られており、Bonehらによって発表されている(例えば、非特許文献1参照。)。
CRTを用いRSA復号方式に対する攻撃手法の中で、メモリ内容を改竄する手法が知られている。このメモリ内容が改竄された事を検知する方法として、誤り検出符号(EDC:Error Detecting Code)を利用した対策がある(例えば、特許文献1参照。)。
この方法はメモリのデータ部に対する改竄に対して誤り検出回路で検知可能となる。
しかし、アタッカーが故障利用解析を試みようとして行う攻撃は、メモリのデータ部を直接改竄する以外にも、例えば、アドレスデコーダへ攻撃し、メモリアドレスを変化させて、正しいメモリアドレスと異なるメモリアドレスにアクセスさせることで、メモリカードICのシステムに対して、システムが予期しない不正なデータを読み出させる方法もある。
このアドレスデコーダへ攻撃し不正なデータを読み出して、ICを故障状態に陥らせるような攻撃方法に対しては上記の特許文献1の方式では検知することができないという問題がある。
したがって、このようにシステムが予期しない不正なデータを読み込んでしまった場合も誤りを検知できることが望まれる。
D.Boneh,R.A.DeMillo, and R.J.Lipton, "On the Importance of Checking Computations" Submitted to Eurocrypt’97 特開2003-51817号公報
本発明は上述した点に鑑みてなされたもので、メモリのデータだけでなくメモリアドレスに誤りが発生した場合も誤りを検出可能とする半導体記憶装置を提供することを目的とする。
本発明の一実施形態に係る半導体記憶装置は、データと、前記データに対応する誤り検出符号とをメモリセルに記憶するメモリと、前記データと、該データが記憶されるメモリアドレスの情報とを用いて、前記メモリアドレスに応じて異なる誤り検出符号を生成する演算を行う演算手段と、前記メモリセルに前記誤り検出符号を記憶する手段と、を備えることを特徴とする。
本発明によれば、メモリが誤作動し、誤ったデータが出力されたことを検知可能となる。
以下、図面を参照して本発明の実施例を説明する。
(実施例1)
図1は本発明の実施例1に係る半導体記憶装置を備えたICカードチップ1の構成を示す。このICカードチップ1は、図2に示すように、例えば名刺サイズにしたICカード本体2に搭載されている。
図1に示すICカードチップ1は、このICカードチップ1全体の動作を制御するCPU3、コプロセッサ4、RAM5、ROM6、EEPROM7、誤り検査回路8、入出力部(I/O)9がバス10を介してそれぞれ接続されている。
コプロセッサ4は、CPU3の補助的な機能を有し、RSAのべき剰余除算等、計算量が多い演算処理を行う。RAM5は、CPU3が読出し/書込み等の処理を行うワークエリアとして使用されたり、暗号処理中の途中結果などの保持に利用される。ROM6は、CPU3から読出し可能なメモリであり、暗号処理プログラムなど、CPU3の動作制御の為のプログラム等が格納されている。
EEPROM7は、CPU3から読出し/書込みが可能な不揮発性で、かつ電気的に書き換え可能なメモリである。このEEPROM7には、暗号処理を行う際に用いられる秘密鍵等の秘匿性を確保すべきデータが、そのデータの誤り検出符号とが別のアドレスとなるようにして格納されている。
誤り検査回路8は、EEPROM7等のメモリから読み出されたデータの誤りの有無を検査する回路である。そして、メモリから読み出されたデータと誤り検出符号は、まずこの誤り検査回路8に取り込まれ、データを誤り検出符号に対応した誤り検出方法で照合(検査)の結果、誤りが発生していなければ、バス10を介してCPU3またはコプロセッサ4にそのデータを送る。
一方、照合の結果、誤りが発生した場合は、誤り検出信号を出力する。そして、CPU3等が暗号処理或いは復号処理等を行わせないようにして、データの保護或いはデータの機密性を確保する。
図3は本実施形態に係る半導体記憶装置11の構成をデータ書き込み時(但し、このデータ書き込み時におけるデータは、データ及びそのデータに対応する誤り検出符号も含めた意味を持つ)の動作状態で示す。
図3においては、半導体記憶装置11は、CPU3、メモリとしてのEEPROM7、誤り検査回路8を含む構成である。CPU3と共に、コプロセッサ4を含む構成にしても良い。
なお、後述するように、この誤り検査回路8内には、メモリにデータと共に誤り検出符号とが記憶されるメモリセルのメモリアドレスを用いて少なくともメモリアドレスに応じて異なる誤り検出符号を生成する演算を行う演算手段と、この演算を符号化とした場合、その復号化となる逆演算を行う逆演算手段とを備えている(具体的な構成例では、共通の演算回路15により、演算及び逆演算を行う)。
以下においては、メモリとしてEEPROM7の場合で説明するが、ROM6やRAM5に適用してもよい。
図3に示すように、EEPROM7には、保護されるべきデータとそのデータの誤り検出符号とが格納される。CPU3は、EEPROM7内のアドレスデコーダ12を介してEEPROM7にデータ及びそのデータに対応する誤り検出符号の書き込み及び読み出しを行う。
本実施形態においては、EEPROM7にデータとそのデータに対応する誤り検出符号とを書き込む際、図3に示すようにデータに対しては、そのまま書き込む(記憶する)。これに対して、そのデータに対応する誤り検出符号を、そのまま書き込まないで、そのデータが書き込まれるメモリアドレス(のアドレスデータ)の情報を用いて演算を行い、メモリアドレスの値に応じて異なる誤り検出符号が生成されるように変換して、データと同じメモリアドレスのメモリセルに書き込む。
その場合の具体的な演算例としては、データから、そのデータに対応する誤り検出符号と、そのデータが書き込まれるメモリセルのメモリアドレスの誤り検出符号としてのアドレス誤り検出符号とから排他的論理和を生成する演算を行う。
また、後述するようにEEPROM7からデータを、このデータ及びそのメモリアドレスに対応する誤り検出符号と共に読み出した場合、その誤り検出符号に対して上記演算の逆演算を行うことにより、演算前の前記データに対応する誤り検出符号を生成する。
このようにデータと共に書き込まれる誤り検出符号として、そのデータが書き込まれるメモリアドレスに応じて異なる誤り検出符号を生成して、データと共に書き込む。
これにより、仮にアタッカーが各データが書き込まれているその正しいメモリアドレスとは異なるメモリアドレスを指定するような攻撃を行って、データを得ようと試みても、メモリアドレスが異なるため、生成される誤り検出符号は正しいデータに対応するものと異なる。従って、データと誤り検出符号との照合により、誤り有りを検出することができるようになる。
このようにメモリアドレスの値に応じて異なる誤り検出符号を生成する演算は、本実施形態においては誤り検査回路8内で行われる。
図3に示すようにEEPROM7に書き込まれるデータ(図3の具体例ではMdata01)は、CPU3からバス10を介して誤り検査回路8に入力され、このデータは例えばデータレジスタ13aに格納される。
また、このデータは、データが記憶されるメモリアドレス(図3ではAddr01:[001])と共に、誤り検出符号生成回路(図3等においては、単にEDC生成と略記)14に入力される。
この誤り検出符号生成回路14は、データに対するデータ誤り検出符号EDC(Md**)を生成する(ここで、**はメモリアドレスの値を示す)。
生成されたデータ誤り検出符号EDC(Md**)は、データ誤り検出符号レジスタ13bに格納される。また、誤り検出符号生成回路14は、メモリアドレス(のアドレスデータ)に対するアドレス誤り検出符号EDC(Addr**)も生成する。生成されたアドレス誤り検出符号EDC(Addr**)は、アドレス誤り検出符号レジスタ13cに格納される。
上記データレジスタ13aに格納されたデータは、誤り検査回路8からEEPROM7に出力され、CPU3によりアドレスデコーダ12を介して指定されたメモリアドレスのメモリセルに書き込まれる。
一方、データ誤り検出符号レジスタ13bに格納されたデータ誤り検出符号EDC(Md**)と、アドレス誤り検出符号レジスタ13cに格納されたアドレス誤り検出符号EDC(Addr**)は、データ及びメモリアドレスの両誤り検出符号に対する演算手段と(後述する逆演算手段と)して機能する演算回路15に入力される。
この演算回路15は、データ誤り検出符号EDC(Md**)とアドレス誤り検出符号EDC(Addr**)に対して、所定の演算を行い、この演算により符号化された誤り検出符号EDC(Md**・Addr**)を生成する。この演算の1例として例えば排他的論理和を行う。
つまり、排他的論理和の演算符号を ^ で表すと、演算回路15は、 { EDC(Md) } ^ { EDC(Addr) }の演算を行い、この演算結果の誤り検出符号EDC(Md**・Addr**)を生成する。従って、この場合には、誤り検出符号EDC(Md**・Addr**)は、誤り検出符号EDC(Md** ^Addr**)となる。
このようにして生成された誤り検出符号EDC(Md**・Addr**)は、誤り検出符号レジスタ16に格納される。この誤り検出符号レジスタ16に格納された誤り検出符号EDC(Md**・Addr**)は、データの場合と同様にEEPROM7に出力され、データが格納される同じメモリアドレスのメモリセルに書き込まれる。
図4は、データ書き込みの処理手順を示すフローチャートを示す。
データ書き込みの処理がスタートすると、最初のステップS1においてCPU3から書き込みを行おうとする書き込みデータと、メモリアドレス(のデータ)とが出力される。 ステップS2に示すようにCPU3から出力される書き込みデータと、メモリアドレスとは誤り検査回路8内に格納される。
ステップS3に示すように誤り検査回路8内の誤り検出符号生成回路14は、書き込みデータからデータ誤り検出符号EDC(Md)を生成する(図4では**を省略している。後述する図6でも同様)。また、ステップS4に示すようにこの誤り検出符号生成回路14は、メモリアドレスからアドレス誤り検出符号EDC(Addr)も生成する。
次のステップS5に示すようにこの誤り検出符号生成回路14により生成されたデータ誤り検出符号EDC(Md)とアドレス誤り検出符号EDC(Addr)は、演算回路15に入力される。そして、ステップS6に示すようにこの演算回路15は、所定の演算を行い、演算結果として符号化された誤り検出符号EDC(Md・Addr)を生成する。
ステップS7に示すようにステップS1の書き込みデータと、ステップS6で生成された誤り検出符号EDC(Md・Addr)とからなるデータ組は、EEPROM7に入力され、CPU3から出力されるメモリアドレスのメモリセルに書き込まれる。
また、図5は、半導体記憶装置11の構成をデータ読み出し時(この場合もこのデータは、データ及びそのデータに対応する誤り検出符号も含めた意味を持つ)の動作状態で示している。
CPU3は、データ読み出しのメモリアドレスAddr**をEEPROM7のアドレスデコーダ12及び誤り検査回路8の誤り検出符号生成回路14に出力する。
EEPROM7は、CPU3から出力されたメモリアドレスAddr**のメモリセルからデータ組(つまりデータMdata**と誤り検出符号EDC(Md**・Addr**))を読み出す。
読み出されたデータ組は、誤り検査回路8に格納される。より具体的には、データMdata**はデータレジスタ13aに、誤り検出符号EDC(Md**・Addr**)は誤り検出符号レジスタ16にそれぞれ格納される。
上記誤り検出符号生成回路14は、CPU3から出力されたメモリアドレスAddr**からアドレス誤り検出符号EDC(Addr**)を生成し、このアドレス誤り検出符号EDC(Addr**)は、アドレス誤り検出符号レジスタ13cに格納される。このアドレス誤り検出符号EDC(Addr**)は、復号化手段として機能する演算回路15に入力される。
また、誤り検出符号レジスタ16に格納された誤り検出符号EDC(Md**・Addr**)も演算回路15に入力される。この演算回路15は、上述したデータ書き込み時の符号化の演算処理と逆の復号化の演算処理を行い、データに対するデータ誤り検出符号EDC(Md**)を生成する。
演算回路15は、例えばデータ書き込み時に排他的論理和の演算処理を行った場合には、逆の演算の処理としてやはり排他的論理和の演算処理を行う。この場合には、演算回路15は、読み出した誤り検出符号{ EDC(Md01) } ^ { EDC(Addr01) }と、EDC(Addr01)との排他的論理和を計算する。この結果は下式のように変形できる。
{ EDC(Md01) } ^ { EDC(Addr01) } ^ { EDC(Addr01) }
= { EDC(Md01) } ^0
= EDC(Md01)
演算回路15による演算処理により生成されたデータ誤り検出符号EDC(Md**)は、誤り検出符号レジスタ13bに格納される。
そして、誤り検査回路8は、データレジスタ13aに格納されているデータMdata**と演算回路15により演算処理で生成されたデータ誤り検出符号EDC(Md**)との照合を行う。 図5の場合は、誤りなく照合できた場合を示し、この場合には照合されたデータMdata**がバス10に出力される。
一方、照合により誤り有りと判定された場合には、誤り検査回路8は、誤り検出信号を出力することになる(照合により誤り有りと判定された場合のデータMdata**は、出力されない)。
このため、アタッカーによる攻撃等により、(本来の正しい条件の下での演算によるデータ以外の情報となる)誤ったデータMdata**が出力されてしまうことを防止できるようにしている。
図6は、データ読み出し時の動作手順を示す。
データ読み出しが開始すると、ステップS11に示すようにCPU3からデータ読み出しのメモリアドレスAddr**が出力される。このメモリアドレスAddr**は、EEPROM7及び誤り検査回路8の誤り検出符号生成回路14に出力される。
そして、ステップS12に示すようにEEPROM7からメモリアドレスAddr**のメモリセルからデータ組(つまりデータMdata**と誤り検出符号EDC(Md**・Addr**))とが読み出される。
次のステップS13に示すように読み出されたデータMdata**と誤り検出符号EDC(Md**・Addr**))は、誤り検査回路8に格納される。この場合、データMdata**はデータレジスタ13aに、誤り検出符号EDC(Md**・Addr**)は誤り検出符号レジスタ16にそれぞれ格納される。
また、ステップS14に示すように(ステップS11において)CPU3から出力されたメモリアドレスAddr**は、誤り検出符号生成回路14に入力され、アドレス誤り検出符号EDC(Addr**)が生成される。
このアドレス誤り検出符号EDC(Addr**)は、アドレス誤り検出符号レジスタ13cに格納される。そして、ステップS15に示すようにこのアドレス誤り検出符号EDC(Addr**)と誤り検出符号EDC(Md**・Addr**)とは、演算回路15に入力される。
ステップS16に示すように演算回路15は、上述したデータ書き込み時の演算と逆の演算を行い、データに対するデータ誤り検出符号EDC(Md**)を生成(出力)する。このデータ誤り検出符号EDC(MD**)は、誤り検出符号EDC(MD**・Addr**)とは異なり、メモリアドレスAddr**の誤り検出符号は含まれていない。
次のステップS17に示すようにこのデータ誤り検出符号EDC(Md**)は、データレジスタ13aに格納されているデータMdata**とで(データ)照合が行われる。そして、ステップS18に示すようにこのデータ照合がOKか否かの判定が行われる。
データ照合がOK、つまり誤りが無い場合にはステップS19に示すようにデータがバス10に出力される。一方、データ照合がOKでないと、ステップS20に示すように誤り検査回路8は、誤り検出信号を出力する。このようにして、図6の処理を終了する。
このような構成及び動作を行うようにして、アタッカーが半導体記憶装置11に攻撃を加えて、メモリアドレスが改竄された場合や、メモリアドレスにデータ化けが発生した場合、半導体記憶装置11は、それを検出することが可能となり、データを保護する。
以下、図7を参照してその動作を説明する。図7の具体的な動作説明例においては、演算回路15による符号化が排他的論理和による演算の場合として説明する。
まず図7の例では、アタッカーによりアドレスデコーダ12における例えば最上位ビットが、‘1’に固定にされた場合を考えており、この時、CPU3がデータ‘Mdata01’を読み出す為に、メモリアドレス[001]にアクセスし、データ組 [ Mdata01 , { EDC(Md01) } ^ { EDC(Addr01) } ]を読み出そうとする。
しかし、アドレスデコーダ12の最上位ビットが‘1’に固定になっているので、実際にはメモリアドレス[101]にアクセスしてデータ組[ Mdata05 , { EDC(Md05) } ^ { EDC(Addr05) } ]を読み出し、このデータ組が誤り検査回路8に取り込まれることになる。
この時、誤り検査回路8では、以下の(a)〜(d)の動作を実行し、読み出したデータを照合し、照合結果に応じた処理をする。
(a) CPU3から入力されたメモリアドレスAddr01:[001]に対して、誤り検査回路8内の誤り検出符号生成回路14は、メモリアドレスAddrの誤り検出符号EDC(Addr01)を生成する。
この誤り検出符号EDC(Addr01)は、アドレス誤り検出符号レジスタ13cに格納され、以下の(b)で使用される。
(b) 誤り検査回路8内の演算回路15は、EEPROM7から読み出された誤り検出符号{ EDC(Md05) } ^ { EDC(Addr05) }と、(a)で生成された誤り検出符号EDC(Addr01)との排他的論理和の演算を行う。この演算は、符号化の演算を行った場合の逆演算であり、復号化の演算に相当する。この時の計算結果は下式のようになる。
{ EDC(Md05) } ^ { EDC(Addr05) } ^ { EDC(Addr01) }
(c) また、誤り検査回路8は、EEPROM7から読み出され、誤り検査回路8内に格納されたデータMdata05と、(b)の計算で得られた{ EDC(Md05) } ^ { EDC(Addr05) } ^ { EDC(Addr01) }を照合し、誤りが無いかを検証する。この場合、
{ EDC(Addr05) } ≠ { EDC(Addr01) }
であるので、
{ EDC(Md05) } ^ { EDC(Addr05) } ^ { EDC(Addr01) }≠EDC(Md05)
となり、照合の結果は誤りが有りとなる。
(d)そして誤り検査回路8は、誤り検出信号を出力することになる。
このようにして誤ったメモリアドレスがメモリに対して指示された場合、そのメモリとしてのEEPROM7からデータが読み出されると、誤り検査回路8により、誤りとして検出することが可能である。
この結果、メモリの信頼性および、故障利用解析といった本半導体記憶装置11が搭載されたICカード等への攻撃に対する耐性を向上することができる。
なお、本実施形態においては、データを改竄した場合には、照合によりそのデータ誤り検出符号とは一致しないということが明らかであるため、その詳しい動作説明を省略する。
また、本実施形態で適用可能な誤り検出符号は、パリティ符号やハミング符号、CRC符号などデータの誤りを検出できる方式であれば良く、誤り検出方式に限定されない。
演算回路15による符号化の演算及び復号化の演算の1例として、排他的論理和の演算例で説明した。この場合には、符号化の演算と、その復号化の演算を共通の排他的論理和演算で行うことができる利点がある。また、簡単な処理で実現できる。
なお、上記のように演算回路15による符号化の演算及び復号化の演算の1例として、排他的論理和の演算例で説明したが、本実施形態はこれに限定されるものでない。
演算回路15により、ある符号化の演算を行って誤り検出符号を生成した場合、その誤り検出符号とアドレス誤り検出符号を用いてデータの誤り検出符号を生成することができる任意の演算を利用することができる。
簡単な例としては、例えば演算回路15は、データ書き込み時にはデータの誤り検出符号からメモリアドレスの誤り検出符号を減算する演算を行い、メモリアドレスの値に応じて異なる誤り検出符号を生成し、データ読み出し時にはこの誤り検出符号からメモリアドレスの誤り検出符号を加算する(前記演算の)逆演算を行うようにしても良い。この場合にも、メモリアドレスを改竄してデータを読み出そうとしてもメモリアドレスが異なることにより、照合によりその誤りを検出できる。
このため、本実施形態によれば、アタッカーによる攻撃等により、(本来の正しい条件の下での演算によるデータ以外の情報となる)誤ったデータMdata**が出力されてしまうことを防止できる。
また、アタッカーによりメモリアドレスが改竄される場合のような人為的にメモリアドレスが変化する状況の他、単にICが動作中にメモリアドレスでエラーが発生して、メモリアドレスが変化してしまい、誤ったデータを読み込んだ場合にも、同様の動作で誤りを検出することが可能である。
上述した実施形態に対して、公知技術を用いた場合の比較内容を説明する。以下では、特許文献1の場合の特徴を説明する。この特許文献1の場合には、図8に示すように、メモリはデータ部Mdataとそのデータに対応した誤り検出符号EDC(Md)とが同じメモリアドレスのメモリセルに格納する構造をとる。
各々のメモリのビット幅は、Mdataの1Word分のビットと、対応するMdataのハミング符号をとった検査ビットの和になる。(検査ビットに必要なビット幅はMdataの1Wordのビット幅で決定される。1例としてMdataが8bitの場合、必要検査ビットは4bitになる。)
この手法では例えば、メモリアドレスAddr[001](ここで、[001]は二進表示)に保持されているMdata01をリードする場合を考えると、メモリアドレス[001]から読み出されたデータ組{ Mdata01, EDC(Md01) }は、誤り検査回路に取り込まれた後、読み出されたデータに対する誤りの有無がチェックされる。
この時、誤り検査回路は、データをチェックして誤りが無ければそのままバスへデータを送るが、もしデータに誤りがあった場合は、誤り検出信号が出力することで、アタッカーによるメモリ内容の改竄を検知する事が可能となる。
実際に図9のようにアタッカーがメモリアドレス[001]に保持されているデータMdata01のビットパターンを変更させて改竄した結果、Mdata01 (改竄前) ⇒ Mdata01’ (改竄後)に変化させられたとする。
この状態でメモリアドレス[001]からデータを読み出すと、データ組{ Mdata01’, EDC(Md01) }が読み出され、誤り検査回路に送られた後、データ照合が実行される。ここで、EDC(Md01)は改竄される前のデータMdata01に対応する誤り検出符号である為、改竄されたデータMdata01’との照合の結果は当然NG(誤り有り)となる。
したがって上記の特許文献1の方法は、図9のようにメモリのデータ部に対する改竄に対しては誤り検出回路で検知可能である。
しかし、アタッカーが故障利用解析を試みようとして行う攻撃は、メモリのデータ部のデータを直接改竄する以外にもメモリアドレスを変化させて、正しいメモリアドレスと異なるメモリアドレスにアクセスさせることで、間違ったデータを読み出させる方法もある。
このアドレスデコーダへ攻撃し不正なデータを読み出して、ICを故障状態に陥らせるような攻撃方法に対しては上記の特許文献1の方法では検知することができないという問題がある。
その例として図10に示すようにメモリアドレス[001]に保持されているMdata01をリードする時にアタッカーからアドレスデコーダへの攻撃があった場合を考える。
Mdata01を読み出すためにメモリアドレス[001]が指定されるが、アタッカーによって例えばメモリアドレスの最上位ビットが‘1’に固定にされた場合、メモリアドレスの値は[001](改竄前)⇒[101](改竄後) となる。
そして、本来読み出されるべきメモリアドレス[001]のデータ組{ Mdata01, EDC(Md01) }では無く、実際にメモリから改竄されたアドレス[101]のデータ組{ Mdata05, EDC(Md05) }が読み出されることになる。
この時に読み出されたデータ組{ Mdata05, EDC(Md05) }は、誤り検査回路に取り込まれ、データに誤りがないかをチェックされるが、このデータ自体は改竄されてはおらず、‘EDC(Md05)’も読み出したデータ‘Mdata05’に対応した正しい誤り検出符号である。
この為、このデータ組{ Mdata05, EDC(Md05) }に対する誤り検査回路での照合結果は「誤り無し」となり、誤り検出信号は出力されない。
これに対して上述した本実施形態は、システムが予期しない不正なデータを読み込んだ場合に、その誤りを検出することができる。
本発明の一実施形態に係る半導体記憶装置を組み込んだICカードチップの構成を示す模式図。 図1のICカードチップが搭載されたICカード本体の外観を示す図。 本発明の一実施形態に係る半導体記憶装置の概略の構成をデータ書き込み時の動作説明状態で示す図。 図3のデータ書き込み時の動作内容を示すフローチャート。 本発明の一実施形態に係る半導体記憶装置の概略の構成をデータ読み出し時の動作説明状態で示す図。 図5のデータ読み出し及び照合の動作内容を示すフローチャート。 アタッカーによりアドレスデコーダへの攻撃が行われた際のデータ読み出し及び照合の動作説明図。 従来例におけるデータと誤り検出符号とが同じメモリアドレスに格納された構成を示す図。 図8の構成の場合におけるデータのビットパターンを改竄したアタックを行った場合の動作説明図。 図8の構成の場合におけるメモリアドレスを改竄したアタックを行った場合の動作説明図。
符号の説明
3…CPU
7…EEPROM
8…誤り検査回路
11…半導体記憶装置
14…誤り検出符号生成回路
15…演算回路

Claims (5)

  1. データと、前記データに対応する誤り検出符号とをメモリセルに記憶するメモリと、
    前記データと、該データが記憶されるメモリアドレスの情報とを用いて、前記メモリアドレスに応じて異なる誤り検出符号を生成する演算を行う演算手段と、
    前記メモリセルに前記誤り検出符号を記憶する手段と、
    を備えることを特徴とする半導体記憶装置。
  2. さらに、前記演算の逆演算を行い、前記データに対するデータ誤り検出符号を生成する逆演算手段を有することを特徴とする請求項1に記載の半導体記憶装置。
  3. 前記演算手段は、データ誤り検出符号と、前記データが記憶される前記メモリセルの前記メモリアドレスから該メモリアドレスに対応して生成されたアドレス誤り検出符号とから前記演算により、前記メモリアドレスに応じて異なる前記誤り検出符号を生成することを特徴とする請求項1又は2に記載の半導体記憶装置。
  4. 前記演算は、前記データ誤り検出符号と、前記アドレス誤り検出符号との排他的論理和から前記誤り検出符号を生成することを特徴とする請求項3に記載の半導体記憶装置。
  5. さらに前記逆演算手段による逆演算により生成された演算結果と前記データとを照合して誤りの有無を検出する誤り検査手段を有することを特徴とする請求項2に記載の半導体記憶装置。
JP2007038294A 2007-02-19 2007-02-19 半導体記憶装置 Pending JP2008204085A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007038294A JP2008204085A (ja) 2007-02-19 2007-02-19 半導体記憶装置
US12/032,877 US20090024887A1 (en) 2007-02-19 2008-02-18 Semiconductor storage device, data write method and data read method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007038294A JP2008204085A (ja) 2007-02-19 2007-02-19 半導体記憶装置

Publications (1)

Publication Number Publication Date
JP2008204085A true JP2008204085A (ja) 2008-09-04

Family

ID=39781543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007038294A Pending JP2008204085A (ja) 2007-02-19 2007-02-19 半導体記憶装置

Country Status (2)

Country Link
US (1) US20090024887A1 (ja)
JP (1) JP2008204085A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015041217A (ja) * 2013-08-21 2015-03-02 Kddi株式会社 記憶装置、処理方法およびプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327249B2 (en) * 2009-08-20 2012-12-04 Broadcom Corporation Soft error rate protection for memories
DE102019113970B4 (de) * 2019-05-24 2022-11-24 Infineon Technologies Ag Erkennung von adressfehlern

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076145A (ja) * 1998-09-01 2000-03-14 Hitachi Ltd 記憶装置の障害検出方法及び記憶制御装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689727A (en) * 1994-09-08 1997-11-18 Western Digital Corporation Disk drive with pipelined embedded ECC/EDC controller which provides parallel operand fetching and instruction execution
US5978953A (en) * 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
KR100828427B1 (ko) * 2000-02-10 2008-05-08 소니 가부시끼 가이샤 기록매체의 기록 또는 재생방법 및 기록매체의 기록 또는 재생장치
CN100354967C (zh) * 2002-02-20 2007-12-12 索尼株式会社 用于记录介质的记录方法及装置、再现方法及装置、标识方法、以及数据传送方法及接收处理方法
US7421642B2 (en) * 2002-04-05 2008-09-02 Seagate Technology Llc Method and apparatus for error detection
US7055082B2 (en) * 2002-10-29 2006-05-30 Victor Company Of Japan, Ltd. Information recording and reproducing apparatus
KR100837802B1 (ko) * 2006-09-13 2008-06-13 주식회사 하이닉스반도체 데이터 입출력 오류 검출 기능을 갖는 반도체 메모리 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076145A (ja) * 1998-09-01 2000-03-14 Hitachi Ltd 記憶装置の障害検出方法及び記憶制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015041217A (ja) * 2013-08-21 2015-03-02 Kddi株式会社 記憶装置、処理方法およびプログラム

Also Published As

Publication number Publication date
US20090024887A1 (en) 2009-01-22

Similar Documents

Publication Publication Date Title
JP4864762B2 (ja) 半導体記憶装置
US10797857B2 (en) Data interleaving scheme for an external memory of a secure microcontroller
JP2710754B2 (ja) チップ・カードのキーを保護する装置
EP2294526B1 (en) A method for secure data reading and a data handling system
US7774615B2 (en) Integrity control of a memory external to a processor
US8375253B2 (en) Detection of a fault by long disturbance
US20070083768A1 (en) Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, program loading method, and integrated circuit
US20060219796A1 (en) Integrated circuit chip card capable of determining external attack
US20080263422A1 (en) Control of the integrity of a memory external to a microprocessor
US7774587B2 (en) Dynamic redundancy checker against fault injection
JP2008204085A (ja) 半導体記憶装置
JP4766285B2 (ja) 永久データハードウェアインテグリティ
US20060289656A1 (en) Portable electronic apparatus and data output method therefor
CN1210654C (zh) 一种防止数据交易***数据丢失的安全存储设备及方法
US9652232B2 (en) Data processing arrangement and method for data processing
US20060265578A1 (en) Detection of a sequencing error in the execution of a program
US12038808B2 (en) Memory integrity check
US7806319B2 (en) System and method for protection of data contained in an integrated circuit
US20230359523A1 (en) Memory integrity check
CN114981811A (zh) 用于软件安全的装置和方法
US20230367912A1 (en) Semiconductor chip apparatus and method for checking the integrity of a memory
JP5949357B2 (ja) セキュリティトークン、データ改竄検知方法およびコンピュータプログラム
JP5200686B2 (ja) 情報処理装置、正常処理判別方法、及び情報処理プログラム
US20220156365A1 (en) Method to Secure a Software Code
JP2009015434A (ja) 携帯可能情報処理装置及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120321