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

半導体記憶装置 Download PDF

Info

Publication number
JP4864762B2
JP4864762B2 JP2007038293A JP2007038293A JP4864762B2 JP 4864762 B2 JP4864762 B2 JP 4864762B2 JP 2007038293 A JP2007038293 A JP 2007038293A JP 2007038293 A JP2007038293 A JP 2007038293A JP 4864762 B2 JP4864762 B2 JP 4864762B2
Authority
JP
Japan
Prior art keywords
data
address
memory
error
error detection
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.)
Expired - Fee Related
Application number
JP2007038293A
Other languages
English (en)
Other versions
JP2008204084A (ja
Inventor
大爾朗 金原
寛生 中野
鉄郎 岩村
敦 小林
雅彦 本山
秀樹 寺岡
淳 新保
秀夫 清水
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 JP2007038293A priority Critical patent/JP4864762B2/ja
Priority to US12/032,872 priority patent/US20080215955A1/en
Publication of JP2008204084A publication Critical patent/JP2008204084A/ja
Application granted granted Critical
Publication of JP4864762B2 publication Critical patent/JP4864762B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

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のアドレスとは異なる第2のアドレスに前記データに対応する誤り検出符号を記憶するメモリと、前記第1のアドレス及び前記第2のアドレスとのアドレス関係の情報を保存するアドレス保存手段と、前記メモリの第1のアドレスを指定して前記第1のアドレスに記憶されたデータを読み出すと共に、前記アドレス保存手段が保存する情報に基づいて前記第1のアドレスに対応する前記第2のアドレスを求め、前記メモリから前記第2のアドレスに記憶された誤り検出符号を読み出す読出し部と、前記読出し部によって前記第1のアドレスから読み出されたデータと前記第2のアドレスから読み出された誤り検出符号とに基づく誤り検出を行う誤り検査部とを具備する。

本発明によれば、メモリのデータだけでなくアドレスに誤りが発生した場合も誤りの検出が可能となる。
以下、図面を参照して本発明の実施形態を説明する。
図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には、暗号処理を行う際に用いられる秘密鍵等の秘匿性を保護すべきデータが、そのデータに対応する誤り検出符号と共に、別のメモリアドレスとなるようにして記憶(保持)されている。
なお、以下の説明においては、データと、そのデータに対応する誤り検出符号とを共通のメモリとしてのEEPROM7の場合で説明するが、これに限定されるものでなく、別々のメモリに記憶しても良い。例えば、物理的に別々となる第1のメモリと第2のメモリとを用意し、データを第1のメモリのメモリセルに、対応する誤り検出符号を第2のメモリのメモリセルに記憶しても良い。
また、別々となる第1のメモリと第2のメモリを1つのメモリとして扱えるように、第1のメモリのメモリセルと第2のメモリのメモリセルを包含するメモリのメモリセルとして、共通化したメモリアドレスで管理するようにしても良い。この場合にもデータと対応する誤り検出符号とは異なるメモリアドレスのメモリセルに記憶される。
誤り検査回路8は、EEPROM7等の保護すべきメモリから読み出されたデータの誤りの有無を検査する回路である。そして、メモリから読み出されたデータと誤り検出符号は、まずこの誤り検査回路8に取り込まれ、データがそのデータに対応する誤り検出符号と一致するかの照合(検査)の結果、誤りが発生していなければ、バス10を介してCPU3またはコプロセッサ4にそのデータを送る。
一方、照合の結果、誤りが発生した場合は、誤り検出信号を出力する。そして、この場合には、CPU3等が暗号処理等を行わせないようにして、データの保護或いはデータの機密性を確保する。
図3及び図4は、本実施形態に係る半導体記憶装置11における構成を、データ読み出し及び誤り符号読み出しの動作状態にて示す。
図3及び図4においては、半導体記憶装置11は、CPU3、保護すべきデータを記憶するメモリとしてのEEPROM7、誤り検査回路8を含む構成で示している。CPU3と共に、コプロセッサ4を含む構成にしても良い。なお、半導体記憶装置11は、少なくともメモリ(ここではEEPROM7)を含む。
以下においては、メモリとしてEEPROM7の場合で説明するが、ROM6やRAM5に適用してもよい。
図3及び図4に示すように、EEPROM7には、保護すべきデータとそのデータの誤り検出符号とが異なるメモリアドレスに記憶保持されている。そして、CPU3は、EEPROM7内のアドレスデコーダ12を介してEEPROM7に保持されたデータ及びそのデータに対応する誤り検出符号を読み出すことができる。
この場合、データ及びそのデータに対応する誤り検出符号は、異なるメモリアドレスに記憶されているので、CPU3は、データ及びそのデータに対応する誤り検出符号を読み出すためにEEPROM7に対して複数回、読み出しの処理を行うことになる。
また、誤り検査回路8は、データとそのデータに対応する誤り検出符号とを照合することにより、読み出されたデータが誤りを有するものであるか否かの誤り検査機能を有する。
また、この誤り検査回路8は、さらに、EEPROM7に記憶された各データのメモリアドレスと、各データに対応する誤り検出符号を記憶したメモリアドレスとの対となるメモリアドレス関係の情報を保存するアドレス保存手段として、データ・誤り符号保存アドレス制御回路13を有する。
なお、本実施形態においては、誤り検査回路8内にデータ・誤り符号保存アドレス制御回路13を設けているが、これに限定されるものでなく、誤り検査回路8の外部に設けるようにしても良い。
そして、EEPROM7にデータと、そのデータに対応する誤り検出符号とを記憶する場合、このデータ・誤り符号保存アドレス制御回路13に保存されているメモリアドレス関係の情報に従って、それぞれが別々のメモリアドレスに記憶されている。
勿論、データ及び対応する誤り検出符号を別のメモリアドレスに記憶した後に、そのメモリアドレス関係を示す情報を作成しても良い。
図3に示す例では、データが記憶されるメモリアドレスに対して対応する誤り検出符号が記憶されるメモリアドレスを1つシフトした別のメモリアドレスに記憶するようにしている。
例えばデータMdataijが記憶されるメモリアドレスAddrが(十進法で)ijであると、対応する誤り検出符号EDC(Mdij)が記憶されたメモリアドレスAddrはij+1にしている。
この関係のメモリアドレスの情報は、データ・誤り符号保存アドレス制御回路13に保存されている。なお、以下においては、メモリアドレスijをAddrijで、対応するデータMdataijの誤り検出符号をEDC(Mdij)で示す。
また、本実施形態においては、EEPROM7のメモリセルには、メモリアドレスAddrijにおける例えば上位ビット側にデータMdataijを、下位ビット側には1つメモリアドレスをシフトしたデータMdataij-1に対応する誤り検出符号EDC(Mdij-1)とをセットにして記憶している。
つまり、各メモリアドレスAddrijのメモリセルには、データ組{Mdataij、EDC(Mdij-1)}が記憶されている。
そして、半導体記憶装置11に対して、データの読み出しの指示がCPU3を介して行われた場合、上述したように誤り検査回路8は、データ及びそのデータに対応する誤り符号を照合する。なお、各々の誤り検出符号としては、パリティ符号やCRC符号などが広く使用されるが、これに限定されるものでなく、データの誤りを検出できる任意の符号等を利用できる。
なお、メモリとしてのEEPROM7として、例えば物理的に異なる2つのEEPROM7a、7bを用意した場合には、上記の上位ビット側のメモリセルをデータが記憶される例えばEEPROM7aのメモリセルに、下位ビット側のメモリセルをデータに対応する誤り検出符号が記憶されるEEPROM7bのメモリセルに、それぞれ読み替えることにより同様に適用できる。
次に本実施形態に係る半導体記憶装置11が設けられたICカードチップ1の動作を説明する。
上述したように半導体記憶装置11におけるEEPROM7には、データとそのデータに対応する誤り検出符号が別のメモリアドレスとなるように記憶保持されている状態であるとして説明する。
この場合、データと誤り検出符号とがEEPROM7内のどのメモリアドレスに保持されているかという情報は、例えば誤り検査回路8内のデータ・誤り検出符号保存アドレス制御回路13が有している。
図5は、本実施形態に係る半導体記憶装置11からデータをリードする(読み出す)時の動作手順のフローチャートを示す。
図5により全体的な動作を説明し、その際に図3,図4の具体的な例を用いて説明する。
データ読み出しの指示によりデータ読み出し動作が開始すると、ステップS1に示すようにCPU3からデータ読み出し時のメモリアドレスが出力される。
また、このメモリアドレスは、誤り検査回路8内のデータ・誤り検出符号保存アドレス制御回路13にも入力される。データ・誤り検出符号保存アドレス制御回路13は、データ読み出し時には、CPU3に対して読み出し要求信号を送る。
ステップS2に示すようにCPU3からのメモリアドレスは、EEPROM7のアドレスデコーダ12に入力され、このアドレスデコーダ12を介してEEPROM7から対応するメモリアドレスのメモリセルからデータ組が読み出される。
ステップS3に示すように、読み出されたデータ組は、誤り検査回路8に送られ、この誤り検査回路8内のレジスタ等に記憶される。
図3の例では、データ読み出し時のメモリアドレスAddrを十進の表示で01で示している。また、図3の例では、メモリアドレスAddrを二進の表示でも[001]と併記している。以下、二進の表示を、[ ]を用いる。なお、図3等に示すように、メモリアドレスAddrを十進と二進とで併記する場合にはAddr01:[001]のように表記する。
そして、このメモリアドレスAddr01:[001]がCPU3からEEPROM7のアドレスデコーダ12に出力され、対応するデータ組{Mdata01、EDC(Md00)}がEEPROM7から読み出され、誤り検査回路8に記憶される。
読み出されたデータ組{Mdata01、EDC(Md00)}が、誤り検査回路8に記憶されると、この誤り検査回路8内のデータ・誤り検出符号保存アドレス制御回路13は、(データ読み出し時の)読み出し終了フラグ信号をCPU3に出力する。
また、データ・誤り検出符号保存アドレス制御回路13は、読み出し終了フラグ信号をCPU3に出力後、図4に示すようにデータMdata01に対応する誤り検出符号を読み出すためのメモリアドレスAddr02:[010]をCPU3に出力する。また、読み出し要求信号もCPU3に出力する。
図5においては、ステップS3に続くステップS4においてCPU3は、データ・誤り検出符号保存アドレス制御回路13からの読み出し要求信号により、読み出しが完了していないと判定し、ステップS5の処理に移り、その後にステップS1の処理に戻る。
図4に示す具体例では、データ読み出し時のメモリアドレスAddrが01[001]であり、データ・誤り検出符号保存アドレス制御回路13は、これに対応する誤り検出符号を読み出すためのアドレス情報としてメモリアドレスAddr02[010](の値)をCPU3に出力する。
CPU3は、このメモリアドレスAddr02[010]が入力されると、データ読み出し時の場合と同様に、このメモリアドレスAddr02[010]をEEPROM7のアドレスデコーダ12に出力する(図5のステップS2)。
そして、図4に示すようにEEPROM7におけるメモリアドレスAddr02[010]に記憶されたデータMdata02と誤り検出符号EDC(Md01)からなるデータ組{ Mdata02, EDC(Md01) }が読み出される(図5のステップS3)。
そして、図4に示すように読み出されたこのデータ組{Mdata02,EDC(Md01)}は、誤り検査回路8内のレジスタ等に格納される(図5のステップS3)。
データ・誤り検出符号保存アドレス制御回路13は、誤り検出符号読み出し時のデータ組{ Mdata02, EDC(Md01) }が誤り検査回路8内のレジスタ等に格納されると、読み出し終了フラグをCPU3に送る。
これにより図5のステップS3に続くステップS4の処理においてCPU3或いは誤り検査回路8は、読み出し完了と判定し、ステップS6のデータと誤り検出符号を照合する処理に進む。このステップS6の処理は、誤り検査回路8により行われる。
そして、誤り検査回路8は、照合した結果により、ステップS7に示すように照合がOKか否か、つまりデータに誤り無いか否かを判定する。この判定により、データに誤り無しと判定した場合には、ステップS8に示すように誤り検査回路8は、そのデータをバス10に出力する。
一方、誤り有りと判定した場合には、ステップS8に示すように誤り検査回路8は、そのデータをバス10に出力することなく、誤り検出信号をバス10等に出力する。
図4に示す具体例では、上記ステップS6に対応して誤り検査回路8は、1回目(データ読み出し時)に格納した例えば上位ビット側のデータMdata01と、2回目(誤り符号読み出し時)に格納した例えば下位ビット側の誤り検出符号EDC(Md01)とを照合する。
そして、図5のステップS7に示すように照合した結果がOKか否かを判定する。
図4に示す例では、1回目のデータMdata01と2回目の誤り検出符号EDC(Md01)とを照合した場合を示しているので、この場合には誤り検査回路8は、図5のステップS8に示すように誤り無しと判定して、データMdata01をバス10に出力することになる。一方、誤り検査回路8は、照合した結果、誤りありと判定した場合にはステップS9に示すように誤り検出信号を出力する。
図3及び図4では、EEPROM7から正常にデータを読み出す場合で説明した。
上述したように本実施形態においては、メモリとしてのEEPROM7に各データとそのデータに対応する誤り検出符号とが1つシフトした別のメモリアドレスに記憶されている。
そして、データを読み出す時は、EEPROM7に内に保持されたデータ及び別のメモリアドレスに記憶されている誤り検出符号をそれぞれ読み出した後、両者を照合することにより誤りの有無を検証できるようになっている。
その為、アタッカーが暗号化鍵の故障利用解析を試みようとして、アドレスデコーダ12への攻撃を行い、メモリアドレスを改竄した場合でも、誤りとして検知することが可能である。なお、アタッカーが暗号化鍵の故障利用解析を試みようとして、データに対して攻撃を行った場合には、従来例の場合と同様に誤りを検出することができるため、その説明を省略する。
以下、図6を用いて、メモリアドレスの改竄の場合に対する動作を説明する。アタッカーによるアドレスデコーダ12への攻撃により、メモリアドレスAddrが本来のメモリアドレスAddr01[001]が、例えば2番目のビットが‘1’に固定にされている例で説明する。
この場合においても、1回目は、図5に示したフローチャートのステップS1からの処理に沿って行われる。この場合には、ステップS1のCPU3から出力されるメモリアドレスAddrは、メモリアドレスAddr01[001]である。
そして、このメモリアドレスAddr01[001]が誤り検査回路8のデータ・誤り検出符号保存アドレス制御回路13に入力される。
また、このメモリアドレスAddr01[001]は、EEPROM7のアドレスデコーダ12に出力されるが、図6に示すように2番目のビットが‘1’に固定にされているため、メモリアドレスはAddr03[011]となる。
そして、EEPROM7からメモリアドレスAddr03[011]のデータ組{ Mdata03, EDC(Md02) }が読み出され、誤り検査回路8に格納される。
上記のようにデータ・誤り検出符号保存アドレス制御回路13にはメモリアドレスAddr01[001]が入力され、図7に示すようにデータ・誤り検出符号保存アドレス制御回路13からCPU3に、誤り検出符号読み出し時のメモリアドレスAddr02[010]が出力される。
第2回目には、アドレスデコーダ12の2番目のビットが‘1’に固定にされているため、EEPROM7のメモリアドレスAddr02[010]から対応するデータ組{ Mdata02, EDC(Md02) }が読み出され、誤り検査回路8には、このデータ組{ Mdata02, EDC(Md01) }が格納される。
この場合には、誤り検査回路8は、1回目のデータMdata03と2回目の誤り検出符号EDC(Md01)とで誤りの有無を検査する。そして、この場合には誤り検査回路8は、誤り有りと判定して、誤り検出信号を出力する。
このように動作する本実施形態によれば、誤り検査回路8により誤りが検出され、誤り検出信号が出力されることから、アタッカーによるメモリアドレスの改竄に対しても検知可能になる。
また、アタッカーによりメモリアドレスが改竄される場合のような人為的にメモリアドレスが変化する状況の他、単にICが動作中にメモリアドレスにエラーが発生して、メモリアドレスが変化してしまい、誤ったデータを読み込んだ場合にも、同様の動作で誤りを検出することが可能である。
この結果、メモリの信頼性および、故障利用解析といったICカードへの攻撃に対する耐性を向上することができる。
上述したように本実施形態は、誤り検出符号は、これに対応するデータとは別のメモリアドレスに保持することを特徴としており、図3に示したものに限定されない。図3の場合とは異なるその記憶形態の例を下記の(1)〜(5)により具体的に説明する。
(1)誤り検出符号を対応するデータの配置に対して、メモリアドレスを全体的にずらして記憶する形態
(1)の形態の例を図8に示す。図8は図3の場合と類似して、データのメモリアドレスの位置に対して、誤り検出符号を記憶するメモリアドレスを全体的にシフトさせた位置に記憶する形態である。
図8の例は、図3の場合と異なる点は、例えば4つのメモリアドレスを1組(周期)としてデータ組が形成されている。この場合には、メモリアドレス[001]〜[011]までは、Mdata00〜Mdata03と、EDC(Md03)、 EDC(Md00) 〜EDC(Md02)とがそれぞれ記憶保持される。また、メモリアドレス[100]〜[111]までは、Mdata04〜Mdata07と、EDC(Md07)、EDC(Md04) 〜EDC(Md06)とがそれぞれ記憶保持される。
(2)誤り検出符号を対応するデータの配置に対して、逆順になるようにメモリに記憶する形態
(2)の形態の例を図9に示す。各メモリアドレス[000]〜[111]のメモリセルに、データMdata00〜Mdata07が昇順で記憶保持されている。
そして、それぞれのデータに対応する誤り検出符号はメモリアドレス[000]のメモリセルにEDC(Md07)が記憶され、メモリアドレス[001]にはEDC(Md06)が記憶されるというように、対応するデータの配置と逆順になるように記憶する形態である。
この場合には、データMdataのメモリアドレスをijとすると、対応する誤り検出符号はメモリアドレスが7-(i+j)となり、両者のメモリアドレスの関係として一方のアドレス値の値に依存して他方のアドレス値が変化する。
つまり、図3で示してように全体的に1つづつ(或いは一定数づつ)メモリアドレス値がシフトするのでなく、一方のメモリアドレス値に応じて、対応する他方のメモルアドレス値が変化するようなメモリアドレスの関係に設定するようにしている。このようにすると、よりデータ保護の機能を向上できる。
(3)誤り検出符号を互いに入れ替えることで、対応するデータの配置と異なるメモリアドレスに記憶する形態
(3)の形態に沿った第1例を図10に示す。図10の例は、誤り検出符号とそれに対応するデータが同一のメモリアドレスに記憶されている形態から、奇数メモリアドレスに記憶されている誤り検出符号と偶数メモリアドレスに記憶されている誤り検出符号を互いに入れ替えて記憶するような形態になっている。
また、このように誤り検出符号を互いに入れ替えるような形態では、図10に示す例のように一つ一つの誤り検出符号を互いに入れ替える他に、図11に示す第2例のようにしても良い。
図11の例では、誤り検出符号をあるまとまった組(この例の場合には、データMd00〜Md03とMd04〜Md07部分に応じて2組に分けている)にして、それぞれの組同士の誤り検出符号を入れ替えることで対応するデータ配置と異なるメモリアドレスに記憶するような形態にしている。
具体的には、メモリアドレス[001]〜[011]のメモリセルには、EDC(Md04)〜EDC(Md07)が記憶され、メモリアドレス[100]〜[111]のメモリセルには、EDC(Md00)〜EDC(Md03)がそれぞれ記憶されている。
(4)データ(Mdata)を上位ビット側と下位ビット側とに分割し、分割した一方のデータを別のメモリアドレスに記憶する形態
(4)の形態の例を図12に示す。図12では誤り検出符号とそれに対応するデータが同一のメモリアドレスに記憶されている形態から、データMdata00〜Mdata07をそれぞれ上位ビット:Mdata_Uと下位ビット:Mdata_Lに分割している。
そして、上位ビットまたは下位ビットのデータを誤り検出符号EDC(Md00) 〜EDC(Md07)とは別のメモリアドレスに記憶する。
図12の具体例では、上位ビットのデータMdata00_U〜Mdata07_Uは、誤り検出符号EDC(Md00) 〜EDC(Md07)と同じメモリアドレスのメモリセルにそれぞれ記憶する。一方、下位ビットのデータに関しては、例えばメモリアドレス[100]〜[111]のメモリセルにMdata07_L 〜Mdata00_Lのように配置して、誤り検出符号EDC(Md00) 〜EDC(Md07)とは別のメモリアドレスに記憶する。
そして、これらのメモリアドレス関係の情報は、データ・誤り検出符号保存アドレス制御回路13に保存される。
データ組の読み出しから誤り検査回路8での照合までの動作は、前述の動作説明と基本的には同様であり、メモリとしてのEEPROM7に2回アクセスしてデータ等を読み出す。
1回目の読み出しにより、図12の下側に示すようにメモリとしてのEEPROM7から例えばメモリアドレスAddr01:[001]の上位ビットのデータMdata01_U及び誤り検出符号EDC(Md01)とが読み出されて、誤り検査回路8に格納される。
そして、2回目の読み出しには、図13に示すようにEEPROM7からメモリアドレスAddr06:[110]の下位ビットのデータMdata01_Lが読み出されて、誤り検査回路8に格納される。なお、1回目から2回目の読み出しの際、データ・誤り検出符号保存アドレス制御回路13に保存されたメモリアドレス関係の情報により行われる。
誤り検査回路8は、1回目読み出されたデータMdata01_U及び誤り検出符号EDC(Md01)と2回目のデータMdata01_Lとを用いて照合して誤りの有無を検査する。図13の場合には、誤り無しとしてデータをバスに出力する。
なお、図12及び図13における読み出しでは、誤り検査に必要な情報のみを誤り検査回路8に格納する例で示しているが、図3,図4等で示したようにそれぞれデータ組として読み出し、誤り検査回路8側において、必要なデータ及び誤り検出符号を抽出して誤り検査の照合を行うようにしても良い。
(5)メモリセル内にデータのみを記憶する領域及び、誤り検査符合のみを記憶する領域をもつ形態
(5)の形態の例を図14に示す。この記憶形態は、一つのメモリアドレスのメモリセルにデータ組{ Mdata00 , EDC(Md00) }のような、データ+誤り検出符号という形態ではなく、一つのメモリアドレスのメモリセルにはデータのみ、もしくは誤り検出符号のみを記憶する形態である。
図14の具体例では、メモリアドレスAddr00:[0000]〜Addr07:[0111]の各メモリセルにはデータMdata00〜 Mdata07が記憶され、メモリアドレスAddr08:[1000]〜Addr11:[1011]の各メモリセルには誤り検出符号EDC(Md00)〜 EDC(Md07)が2つづつの組(例えば、Addr08:[1000]にはEDC(Md00), EDC(Md01))で記憶されている。
読み出しから誤り検査回路8での照合までの動作は、前述の動作説明と基本的にはほぼ同様であり、この場合も読み出し時には2回メモリとしてのEEPROM7にアクセスしてデータ等を読み出す。
図14に示すように一回目のデータ読み出しでEEPROM7からデータMdata01が読み出され、誤り検査回路8に格納される。図15に示すように2回目の誤り符号読み出しでEEPROM7から誤り検出符号EDC(Md01)が読み出されて誤り検査回路8に格納される。そして、誤り検査回路8は、1回目のデータMdata01と誤り検出符号EDC(Md01)を照合する。
この場合の構成においても、アタッカーによるメモリアドレスへの攻撃或いは、メモリアドレスにエラーが発生した場合にも誤り検出ができる。このように(1)、(2)、(3)、(4)、(5)に挙げたデータと誤り検出符号の記憶形態例においても図3及び図4で説明した場合とほぼ同様の効果を有する。
なお、前述の(1)、(2)、(3)、(4)、(5)に挙げた以外の記憶形態であっても、誤り検出符号を対応するデータと異なるメモリアドレスに記憶するという特徴を満たしていれば、本実施形態と同様の効果を有し、本発明の範疇に属することになる。
上述したように本実施形態によれば、簡単な構成でメモリに記憶されたデータを保護することができる。より、具体的には、メモリのデータだけでなくメモリアドレスに誤りが発生した場合も誤りの検出が可能となる。
その結果、このメモリを搭載したICカード等のデバイスにおける故障利用解析などの攻撃に対する耐性、つまり情報の漏洩をより有効に防止でき、その信頼性を向上することができる。
なお、上述の説明においては、メモリからデータ等を複数回読み出す例として2回の場合で説明したが、3回以上の複数回にして、より情報の秘匿性を確保する構成にしても良い。
例えば、図12のようにデータを上位ビットと下位ビットに分けて、上位ビットと下位ビットとのデータとも、対応する誤り検出符号を記憶するメモリアドレスとは異なるメモリアドレスに記憶する構成にする。
このようにすることにより、メモリから3回データや誤り検出符号の読み出しのため、メモリに3回アクセスすることが必要になり、これら3回の読み出しでそれぞれが正しい対応関係の情報が読み出された場合にのみ、誤り無しとしてデータが出力される。このようにして、保護すべきデータの漏洩をより確実に防止できるようにしても良い。
上述した実施形態に対して、公知技術を用いた場合の比較内容を説明する。以下では、特許文献1の場合の特徴を説明する。この特許文献1の場合には、図16に示すように、メモリはデータ部Mdataとそのデータに対応した誤り検出符号EDC(Md)とが同じメモリアドレスのメモリセルに格納する構造をとる。
各々のメモリのビット幅は、Mdataの1Word分のビットと、対応するMdataのハミング符号をとった検査ビットの和になる。(検査ビットに必要なビット幅はMdataの1Wordのビット幅で決定される。1例としてMdataが8bitの場合、必要検査ビットは4bitになる。)
この手法では例えば、メモリアドレスAddr[001](ここで、[001]は二進表示)に保持されているMdata01をリードする場合を考えると、メモリアドレス[001]から読み出されたデータ組{ Mdata01, EDC(Md01) }は、誤り検査回路に取り込まれた後、読み出されたデータに対する誤りの有無がチェックされる。
この時、誤り検査回路は、データをチェックして誤りが無ければそのままバスへデータを送るが、もしデータに誤りがあった場合は、誤り検出信号が出力することで、アタッカーによるメモリ内容の改竄を検知する事が可能となる。
実際に図17のようにアタッカーがメモリアドレス[001]に保持されているデータMdata01のビットパターンを変更させて改竄した結果、Mdata01 (改竄前) ⇒ Mdata01’ (改竄後)に変化させられたとする。
この状態でメモリアドレス[001]からデータを読み出すと、データ組{ Mdata01’, EDC(Md01) }が読み出され、誤り検査回路に送られた後、データ照合が実行される。ここで、EDC(Md01)は改竄される前のデータMdata01に対応する誤り検出符号である為、改竄されたデータMdata01’との照合の結果は当然NG(誤り有り)となる。
したがって上記の特許文献1の方法は、図17のようにメモリのデータ部に対する改竄に対しては誤り検出回路で検知可能である。
しかし、アタッカーが故障利用解析を試みようとして行う攻撃は、メモリのデータ部のデータを直接改竄する以外にもメモリアドレスを変化させて、正しいメモリアドレスと異なるメモリアドレスにアクセスさせることで、間違ったデータを読み出させる方法もある。
このアドレスデコーダへ攻撃し不正なデータを読み出して、ICを故障状態に陥らせるような攻撃方法に対しては上記の特許文献1の方法では検知することができないという問題がある。
その例として図18に示すようにメモリアドレス[001]に保持されているMdata01をリードする時にアタッカーからアドレスデコーダへの攻撃があった場合を考える。
Mdata01を読み出すためにメモリアドレス[001]が指定されるが、アタッカーによって例えばメモリアドレスの最上位ビットが‘1’に固定にされた場合、メモリアドレスの値は[001](改竄前)⇒[101](改竄後) となる。
そして、本来読み出されるべきメモリアドレス[001]のデータ組{ Mdata01, EDC(Md01) }では無く、実際にメモリから改竄されたアドレス[101]のデータ組{ Mdata05, EDC(Md05) }が読み出されることになる。
この時に読み出されたデータ組{ Mdata05, EDC(Md05) }は、誤り検査回路に取り込まれ、データに誤りがないかをチェックされるが、このデータ自体は改竄されてはおらず、‘EDC(Md05)’も読み出したデータ‘Mdata05’に対応した正しい誤り検出符号である。
この為、このデータ組{ Mdata05, EDC(Md05) }に対する誤り検査回路での照合結果は「誤り無し」となり、誤り検出信号は出力されない。
これに対して上述した本実施形態は、システムが予期しない不正なデータを読み込んだ場合に、その誤りを検出することができる。
なお、上述した実施形態等を組み合わせる等して構成される実施形態等も本発明に属する。また、上述した実施形態は、以下の構成内容を包含する。
1.第1のアドレスにデータを記憶する第1のメモリと、前記第1のアドレスと所定の関係に設定され、前記第1のアドレスとは異なる第2のアドレスに前記データに対応する誤り検出符号を記憶する第2のメモリと、
前記第1のアドレス及び前記第2のアドレスとのアドレス関係の情報を保存するアドレス保存手段と、
を備えることを特徴とする半導体記憶装置。
2.1の半導体記憶装置において、さらに、前記データ及び前記誤り検出符号とを読み出し、前記データの誤り検査を行う誤り検査手段を備える。
3.1又は2の半導体記憶装置において、前記第1のメモリ及び前記第2のメモリを含むメモリを有し、前記メモリにおける前記第1のアドレスで指定されるメモリセルは、前記データと、該データとは異なるデータに対応した誤り検出符号とをデータ組として記憶する。
4.1〜3のいずれかの半導体記憶装置において、前記第1のアドレス及び前記第2のアドレスとのアドレス関係は、一方のアドレスの値が他方のアドレスの値に依存して変化する関係に設定される。
5.1〜4のいずれかの半導体記憶装置において、前記データと、該データに対応する前記誤り検出符号とは、前記第1のメモリ及び前記第2のメモリに対する複数回の読み出しにより行われる。
本発明の一実施形態に係る半導体記憶装置を組み込んだICカードチップの構成を示す模式図。 図1のICカードチップが搭載されたICカード本体の外観を示す図。 本発明の一実施形態に係る半導体記憶装置の概略の構成をデータ読み出し時の動作説明状態で示す図。 本発明の一実施形態に係る半導体記憶装置の概略の構成を誤り符号読み出し時の動作説明状態で示す図。 本発明の一実施形態に係る半導体記憶装置からのデータの読み出しとデータ照合を行う動作内容を示すフローチャート。 アタッカーによりアドレスデコーダへの攻撃が行われた際の1回目のデータ読み出しの動作説明図。 アタッカーによるアドレスデコーダへの攻撃が行われた際の2回目の誤り符号読み出し及びデータ照合の動作説明図。 データ及び誤り検出符号を別のメモリアドレスに記憶する第1の記憶形態例を示す図。 データ及び誤り検出符号を別のメモリアドレスに記憶する第2の記憶形態例を示す図。 データ及び誤り検出符号を別のメモリアドレスに記憶する第3の記憶形態例を示す図。 データ及び誤り検出符号を別のメモリアドレスに記憶する第4の記憶形態例を示す図。 データの一部及び誤り検出符号を別のメモリアドレスに記憶する第5の記憶形態例及び1回目の読み出しの動作説明図。 図12において2回目の読み出し及びデータ照合の動作説明図。 データ及び誤り検出符号を別のメモリアドレスに記憶する第6の記憶形態例及び1回目のデータ読み出しの動作説明図。 図14において、2回目の誤り符号読み出し及びデータ照合の動作説明図。 従来例におけるデータと誤り検出符号とが同じメモリアドレスに記憶された構成を示す図。 図16の構成の場合におけるデータのビットパターンを改竄したアタックを行った場合の動作説明図。 図16の構成の場合におけるメモリアドレスを改竄したアタックを行った場合の動作説明図。
符号の説明
3…CPU
7…EEPROM
8…誤り検査回路
11…半導体記憶装置
13…データ・誤り検出符号保存アドレス制御回路

Claims (4)

  1. 第1のアドレスにデータを記憶し、前記第1のアドレスと所定の関係に設定され、前記第1のアドレスとは異なる第2のアドレスに前記データに対応する誤り検出符号を記憶するメモリと、
    前記第1のアドレス及び前記第2のアドレスとのアドレス関係の情報を保存するアドレス保存手段と、
    前記メモリの第1のアドレスを指定して前記第1のアドレスに記憶されたデータを読み出すと共に、前記アドレス保存手段が保存する情報に基づいて前記第1のアドレスに対応する前記第2のアドレスを求め、前記メモリから前記第2のアドレスに記憶された誤り検出符号を読み出す読出し部と、
    前記読出し部によって前記第1のアドレスから読み出されたデータと前記第2のアドレスから読み出された誤り検出符号とに基づく誤り検出を行う誤り検査部と
    を備えることを特徴とする半導体記憶装置。
  2. 前記第1のアドレスで指定される前記メモリのメモリセルには、前記データと、該データとは異なるデータに対応した誤り検出符号とをデータ組として記憶することを特徴とする請求項に記載の半導体記憶装置。
  3. 前記第1のアドレス及び前記第2のアドレスとのアドレス関係は、一方のアドレスの値が他方のアドレスの値に依存して変化する関係に設定されることを特徴とする請求項1又は2に記載の半導体記憶装置。
  4. 前記データと、該データに対応する前記誤り検出符号とは、前記メモリから複数回の読み出しにより行われることを特徴とする請求項1乃至3のいずれか1つの請求項に記載の半導体記憶装置。
JP2007038293A 2007-02-19 2007-02-19 半導体記憶装置 Expired - Fee Related JP4864762B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007038293A JP4864762B2 (ja) 2007-02-19 2007-02-19 半導体記憶装置
US12/032,872 US20080215955A1 (en) 2007-02-19 2008-02-18 Semiconductor storage device

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2008204084A JP2008204084A (ja) 2008-09-04
JP4864762B2 true JP4864762B2 (ja) 2012-02-01

Family

ID=39733998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007038293A Expired - Fee Related JP4864762B2 (ja) 2007-02-19 2007-02-19 半導体記憶装置

Country Status (2)

Country Link
US (1) US20080215955A1 (ja)
JP (1) JP4864762B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5056625B2 (ja) * 2008-07-01 2012-10-24 富士通株式会社 回路設計装置および回路設計方法
EP2502234B1 (en) 2009-11-20 2019-01-09 Rambus Inc. Bit-replacement technique for dram error correction
WO2012051039A1 (en) * 2010-10-12 2012-04-19 Rambus Inc. Facilitating error detection and recovery in a memory system
US8644104B2 (en) 2011-01-14 2014-02-04 Rambus Inc. Memory system components that support error detection and correction
WO2014074390A1 (en) 2012-11-06 2014-05-15 Rambus Inc. Memory repair using external tags
JP6605359B2 (ja) * 2016-03-02 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
JP2019101446A (ja) 2017-11-28 2019-06-24 ルネサスエレクトロニクス株式会社 半導体装置及びそれを備えた半導体システム
FR3100347B1 (fr) * 2019-09-04 2022-07-22 St Microelectronics Rousset Détection d'erreurs
FR3100346B1 (fr) 2019-09-04 2022-07-15 St Microelectronics Rousset Détection d'erreurs
JP2021141369A (ja) * 2020-03-02 2021-09-16 キオクシア株式会社 メモリシステム
US11461174B2 (en) * 2020-08-31 2022-10-04 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit and method of operating same

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4866717A (en) * 1986-07-29 1989-09-12 Matsushita Electric Industrial Co., Ltd. Code error detecting and correcting apparatus
DE69230129T2 (de) * 1991-12-18 2000-06-15 Sun Microsystems Inc Schreibüberlappung mit Verhinderung des Überschreibens
US6662333B1 (en) * 2000-02-04 2003-12-09 Hewlett-Packard Development Company, L.P. Shared error correction for memory design
JP2001312428A (ja) * 2000-05-02 2001-11-09 Nec Eng Ltd データバッファ監視回路
JP3853615B2 (ja) * 2001-07-04 2006-12-06 シャープ株式会社 アドレス情報検出装置およびアドレス情報検出方法
JP3810425B2 (ja) * 2004-12-16 2006-08-16 松下電器産業株式会社 改竄検出用データ生成方法、および改竄検出方法及び装置
JP4247262B2 (ja) * 2006-09-29 2009-04-02 株式会社東芝 集積回路装置

Also Published As

Publication number Publication date
US20080215955A1 (en) 2008-09-04
JP2008204084A (ja) 2008-09-04

Similar Documents

Publication Publication Date Title
JP4864762B2 (ja) 半導体記憶装置
JP2710754B2 (ja) チップ・カードのキーを保護する装置
US10797857B2 (en) Data interleaving scheme for an external memory of a secure microcontroller
JP2011003189A (ja) メモリ・デバイス上の故障注入による攻撃を検知する方法、及び対応するメモリ・デバイス
US8195946B2 (en) Protection of data of a memory associated with a microprocessor
US20060219796A1 (en) Integrated circuit chip card capable of determining external attack
JP4822231B2 (ja) 長い摂動による故障の検出
US8738919B2 (en) Control of the integrity of a memory external to a microprocessor
JPS62190584A (ja) 携帯可能電子装置
US7774587B2 (en) Dynamic redundancy checker against fault injection
CN109686389B (zh) 存储器装置和用于验证存储器访问的方法
JP4766285B2 (ja) 永久データハードウェアインテグリティ
US20060289656A1 (en) Portable electronic apparatus and data output method therefor
JP2008204085A (ja) 半導体記憶装置
US7593258B2 (en) Protection of the flow of a program executed by an integrated circuit or of data contained in this circuit
US8838925B2 (en) Method for securely storing data in a memory of a portable data carrier
US9652232B2 (en) Data processing arrangement and method for data processing
US20110289293A1 (en) Semiconductor device
JP3743173B2 (ja) 半導体集積回路
US12038808B2 (en) Memory integrity check
US7806319B2 (en) System and method for protection of data contained in an integrated circuit
US20060265578A1 (en) Detection of a sequencing error in the execution of a program
US20230359523A1 (en) Memory integrity check
CN114981811A (zh) 用于软件安全的装置和方法
US20100042851A1 (en) Method for Securely Handling Data During the Running of Cryptographic Algorithms on Embedded Systems

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

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111109

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees