JP2013118030A - 暗号化演算装置を搭載する不揮発性半導体記憶装置 - Google Patents

暗号化演算装置を搭載する不揮発性半導体記憶装置 Download PDF

Info

Publication number
JP2013118030A
JP2013118030A JP2011265273A JP2011265273A JP2013118030A JP 2013118030 A JP2013118030 A JP 2013118030A JP 2011265273 A JP2011265273 A JP 2011265273A JP 2011265273 A JP2011265273 A JP 2011265273A JP 2013118030 A JP2013118030 A JP 2013118030A
Authority
JP
Japan
Prior art keywords
data
circuit
address
aes
control circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011265273A
Other languages
English (en)
Other versions
JP5674630B2 (ja
Inventor
Toshihiro Suzuki
俊宏 鈴木
Noboru Shibata
昇 柴田
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 JP2011265273A priority Critical patent/JP5674630B2/ja
Priority to US13/603,707 priority patent/US20130238931A1/en
Publication of JP2013118030A publication Critical patent/JP2013118030A/ja
Priority to US14/592,634 priority patent/US9317451B2/en
Application granted granted Critical
Publication of JP5674630B2 publication Critical patent/JP5674630B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】暗号化演算装置を搭載する不揮発性半導体記憶装置を提供する。
【解決手段】予め定められた暗号方式の演算を実行する暗号回路122と、予め演算に用いるデータを格納しているメモリセルアレイ130と、メモリセルアレイ130から読み出されたデータを格納する第1の領域133t、及び演算を実行する際に用いられる第2の領域133sを備えるページバッファ133と、第1の領域133tからのデータを格納し、格納したデータを第2の領域133sに供給するレジスタ112と、を備える。
【選択図】 図2

Description

本発明の実施形態は、暗号化演算装置を搭載する不揮発性半導体記憶装置に関する。
AES(Advanced Encryption Standard)は米国標準の暗号方式であり、様々な分野
に採用されている。AESを実行する回路(AES演算回路)の小型化(ハードウェアの
回路規模縮小)は色々な研究が行われている。
M. Feldhofer,J. Wolkerstorfer,and V. Rijmen,"AES Implementation on a Grain of Sand",IEE Proceedings Information Security,vol.152,pp. 13-20,2005.
暗号化演算装置を搭載する不揮発性半導体記憶装置を提供する。
実施形態の不揮発性半導体記憶装置は、予め定められた暗号方式の演算を実行する暗号回路と、予め前記演算に用いる相補型のデータを格納しているメモリセルアレイと、前記メモリセルアレイから読み出された前記データを格納する第1の領域、及び前記演算を実行する際に用いられる第2の領域を備えるページバッファと、前記第1の領域からの前記データを格納し、格納した前記データを前記第2の領域に供給するレジスタと、前記データを前記レジスタに格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタに前記データを格納する前記検査回路と、前記データを前記メモリセルアレイから前記第1の領域に読み出す制御、及び前記データを前記第1の領域から前記第2の領域に読み出す制御を行う制御回路と、前記制御回路から供給される信号に基づいて、ページバッファまたはメモリセルアレイのアドレスを指定するアドレス制御回路と、を備え、前記制御回路は、前記アドレス制御回路を制御することで、前記データを前記第1の領域から前記第2の領域に供給し、前記検査回路は前記データにエラーがあると判定した場合に、その旨を前記アドレス制御回路に通知し、前記アドレス制御回路は、前記通知を受信すると、前記ページバッファの前記データと同一内容のデータが格納されている別のアドレスを指定し、前記検査回路は、前記別のアドレスのデータのエラーの有無の判定を行う。
図1は、第1の実施形態に係るシステムの基本的な構成を概略的に示したブロック図である。 図2は、第1の実施形態に係るNANDチップの基本的な構成を概略的に示したブロック図である。 図3は、第1の実施形態に係るメモリセルアレイの基本的な構成について模式的に示したブロック図である。 図4は、図3に示される複数のメモリブロックのうち、1つのメモリブロックの回路例を示す回路図である。 図5は、第1の実施形態に係るページバッファ及びその周辺の回路の基本的な構成を模式的に示したブロック図である。 図6は、第1の実施形態に係るページバッファ及びその周辺の回路例を模式的に示した回路図である。 図7は、第1の実施形態に係るページバッファ及びその周辺の回路例をより具体的に示した回路図である。 図8(a)は、第1の実施形態に係るページバッファの基本的な構成を示した模式図であり、図8(b)は、第1の実施形態に係るページバッファへの、機能別に領域を分けた場合に関する模式図であり、図8(c)は、第1の実施形態に係るページバッファへの、より詳細な割り当てについて示した模式図であり、図8(d)は、第1の実施形態に係るページバッファへの割り当てについて示した模式図である。 図9は、第1の実施形態に係るAES暗号回路の基本的な構成を模式的に示したブロック図である。 図10は、第1の実施形態に係るAES暗号演算装置の基本的な構成及び信号の流れについて模式的に示したブロック図である。 図11は、第1の実施形態に係るAES暗号化シーケンスを示すブロック図である。 図12は、第1の実施形態に係るAES暗号化シーケンスを実行するために、ホスト機器がNANDチップに入力するコマンドのセットを示している。 図13は、暗号化のメインシーケンスを実行する際のタイミングチャートである。 図14は、AES暗号回路がデータのロードを実行する際のタイミングチャートである。 図15は、AES暗号回路がデータのストアを実行する際のタイミングチャートである。 図16は、第3の実施形態にかかる暗号化装置を含む電子機器のブロック図である。 図17は、第3の実施形態にかかる暗号化装置のブロック図である。 図18は、擬似コード内の各命令の意味を説明するための図である。 図19は、第3の実施形態にかかるALUのブロック図である。 図20は、ld命令の処理例を示す図である。 図21は、st命令の処理例を示す図である。 図22は、xor命令の処理例を示す図である。 図23は、sboxおよびxtime命令の処理例を示す図である。 図24は、第3の実施形態にかかる暗号化処理部のブロック図である。 図25は、第3の実施形態で用いるアドレス空間を示す図である。 図26は、第3の実施形態にかかるアドレス生成部のブロック図である。 図27は、図26の各回路に相当する関数の入出力を示す図である。 図28は、第3の実施形態における暗号化処理のフローチャートである。 図29は、詳細版擬似コードを状態遷移表として書き直した図である。 図30は、状態遷移表の各項目の読み方を表す図である。 図31は、第3の実施形態の変形例にかかるアドレス生成部のブロック図である。 図32は、図31の各回路に相当する関数の入出力を示す図である。 図33は、第4の実施形態にかかる復号装置のブロック図である。 図34は、第4の実施形態にかかるALUのブロック図である。 図35は、第4の実施形態における復号処理のフローチャートである。 図36は、第5の実施形態に係るメモリシステムのブロック図である。 図37は、第5の実施形態に係る複数のピンと、それらに割り当てられた信号とを示す表である。 図38は、第5の実施形態に係るメモリカードのブロック図である。 図39は、第5の実施形態に係るメモリ部のブロック図である。
近年では、NANDフラッシュメモリ(単にNANDとも称す)の大容量化が進み、NANDフラッシュメモリに音楽や動画、ゲームソフト等の大容量データが保持されることが多くなっている。これらのデータには著作権等の権利がある場合が多い。
そこで、コンテンツの権利を守るためにNANDフラッシュメモリを搭載したカードを動画再生機などのホスト機器が「認証する」という機能が考えられている。たとえば、ホスト機器は、メディアが正規のカードか、不正にコピーされたカードなのかを識別し、それが後者であった場合には動画の再生を拒否する、というような認証システムが考えられる。
以上のような認証システムにおいて、AES(Advanced Encryption Standard)という暗号方式を用いる事が現在考えられている。AESとは、米国標準の暗号方式であり、様々な分野に採用されている。
現在、AESを実行する回路(AES演算回路)の小型化(ハードウェアの回路規模縮小)に関して、様々な研究が行われている。
例えば、AESの暗号化のための演算データを展開するための記憶装置(RAM)を暗号装置外部に備えることでAESを搭載したシステムを小型化すること等も考えられている。
これまでのAES演算回路の小型化の研究では、AES演算で用いる記憶素子(例えばRAM)も含めたAES演算回路全体のサイズを小さくすることに主眼が置かれていた。AES演算回路は何らかの装置(電子機器)に組み込まれて使用されるため、このような使用状況を考慮してAES演算回路のサイズを小さくする必要がある。しかし、これまでは、AES演算回路が他の機器(システム)に組み込まれて使用されるということを考慮した小型化の研究は行われていない。
一般に、システムには、他の用途で使うことを目的とした記憶装置、例えば不揮発性のNANDフラッシュメモリのページバッファ(RAM(Random Access Memory)など)が存在する。そこで、第1の実施形態の暗号化装置は、このような記憶装置を、AES演算回路を使用するときに転用する。これにより、AES演算回路内に記憶装置を備える必要がなくなり、さらなる小型化が実現できる。
以下に、構成された実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。参照符号を構成する数字の後ろのアルファベットは、同じ数字を含んだ参照符号によって参照され且つ同様の構成を有する要素同士を区別するために用いられている。
また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
以下の各実施形態では、記憶装置及び演算装置をAES暗号方式の暗号化装置に適用する場合について説明する。しかしながら、各実施形態は、AES暗号方式の暗号化装置以外にも適用することが可能である事に留意されたい。
(第1の実施形態)
AESの機能を実現するためには、AES暗号回路以外に、AES鍵記憶装置と、RAMが必要である。本実施形態では、AES鍵記憶装置としてNANDフラッシュメモリ、AES用のRAMとしてページバッファをそれぞれ転用するものとする。AES暗号回路を含むAES暗号化演算装置本体は、NANDチップのうち、コア回路を除いた周辺回路部分に配置されている。以下に詳細について記載する。
まず、図1を用いて第1の実施形態に係るシステムの基本的な構成について説明する。図1は、第1の実施形態に係るシステムの基本的な構成を概略的に示したブロック図である。
このシステムはAES演算回路(AES暗号化装置とも称す)を搭載したNANDチップ(NANDフラッシュメモリやNAND等とも称す)100と、これを外部から制御するホスト機器200と、を備えている。
次に、図2を用いて第1の実施形態に係るNANDチップの基本的な構成について説明する。図2は、第1の実施形態に係るNANDチップの基本的な構成を概略的に示したブロック図である。
図2に示すように、第1の実施形態に係るNANDチップ100は、入出力端子(I/O)102、制御信号入力端子104、入出力制御回路110、コマンドレジスタ111、一時レジスタ112、データチェック回路113、バス制御回路114、アドレスレジスタ115、ステータスレジスタ116、ロジック制御回路120、メモリセルアレイ130、センスアンプ131、演算部132、ページバッファ133,カラムデコーダ134、カラムバッファ135、ロウアドレスデコーダ136、ロウアドレスバッファデコーダ137、及び昇圧回路140を備えている。
入出力端子102及び制御信号入力端子104は、ホスト機器200とNANDチップ100とを接続する外部インタフェースである。入出力端子102は、例えば図示しないデータ入出力端子、コマンド入力端子、及びアドレス入力端子等を備えている。制御信号入力端子104は、例えば図示しないデータ入力用クロックを供給するWE端子、データ出力用クロックを供給するRE端子、データ入出力用クロックを伝送するDQS端子、データ入力をコマンドとして入力するイネーブル用のCLE端子、データ入力をアドレスとして入力するイネーブル用のALE端子、データ入出力等全般の機能を有効化するためのCE端子、及び誤書き込み防止用の書き込み防止信号を伝送するWP端子等を備えている。また、制御信号入力端子104は、高速インタフェースにてデータ伝送を実現する際に利用される端子として、RE端子、WE端子、DQS端子の相補信号を伝送する/RE端子、/WE端子、/DQS端子を備えている。また、図2では図示しないが、NANDチップ100の内部動作状態を示すR/B端子、電力供給用のVcc/Vss/Vccq/Vssq端子等も存在する。
入出力制御回路110は、入出力端子102と、各種パラメータを保持する為のレジスタに接続されている。また、入出力制御回路110は、データ入出力バッファ110aを備えている。データ入出力バッファ110aは、データ入出力端子からデータを受信し、カラムデコーダ134によって選択された該データ記憶回路に記憶される。また、データ入出力バッファ110aは、データ入出力端子を介して外部にデータを出力する。データ入出力端子からは、書き込みデータの他に、書き込み、読み出し、消去、およびステータス・リード等の各種コマンド、アドレスも入力される。
コマンドレジスタ111は、入出力制御回路110から入力されるコマンドをロジック制御回路120に出力する。
データチェック回路113は、AESに用いる鍵などの記憶領域のデータをページバッファ133のワーキング領域(不図示)に移すときに、該データにエラーが無いかの検査を行うものである。
一時レジスタ112は、例えばデータチェック回路113の検査でエラーが無いと判定された該データを一時的に保持するレジスタである。
バス制御回路114は、例えば入出力制御回路110及びページバッファ133と、ロジック制御回路120及びページバッファ133との接続の切替えを行う回路である。
アドレスレジスタ115は、例えばホスト機器200から供給されたアドレスをラッチし、ラッチしたアドレスを内部物理アドレスへ変換し、カラムアドレスをカラムバッファ135、及びロウアドレスをロウアドレスバッファデコーダ137に供給する。
ステータスレジスタ116は、NANDチップ100内部の種々の状態を外部に知らせるためのものであって、NANDチップ100がレディ/ビジー状態のいずれにあるかを示すデータを保持するレディ/ビジーレジスタ、書き込みのパス/フェイルを示すデータを保持する書き込みステータスレジスタ(不図示)を有する。
また、例えば、誤書き込み状態の有無(誤書き込みベリファイのパス/フェイル)を示すデータを保持する誤書き込みステータスレジスタ、過書き込み状態の有無(過書き込みベリファイのパス/フェイル)を示すデータを保持する過書き込みステータスレジスタ等を有していてもよい。
ロジック制御回路120は、メモリセルアレイ130、カラムデコーダ134、データ入出力バッファ110a、及びロウアドレスデコーダ136を制御する。
また、ロジック制御回路120は、AES制御回路121、AES暗号回路122、アドレス制御回路123、バッファデータ読み出しシーケンス124、及びバッファデータ書込みシーケンス125を備えている。尚、本実施形態では、AES制御回路121、AES暗号回路122、アドレス制御回路123、バッファデータ読み出しシーケンス124、及びバッファデータ書込みシーケンス125をまとめて、AES暗号化演算装置と呼ぶことがある。
AES制御回路121は、AES暗号回路122の制御を行う。
AES暗号回路122は、AES暗号方式の演算を実行する演算装置である。
アドレス制御回路123は、AES暗号化演算処理で用いられるデータを記憶するページバッファ133または一時レジスタ112のアドレスを生成する。
バッファデータ読み出しシーケンス124は、ページバッファ133からデータをAES暗号回路122または、一時レジスタ112に転送するための制御を行うサブシーケンス制御回路である。
バッファデータ書込みシーケンス125は、AES暗号回路122または、一時レジスタからのデータをページバッファに転送するための順序回路である。
メモリ読み出しシーケンス126は、メモリセルアレイ130内のページから、センスアンプ131を用いてデータをセンスし、ページバッファ133に読み出しデータを格納する。
また、ロジック制御回路120は、外部から制御信号入力端子104を介して入力される制御信号(コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、レディ/ビジー信号RY/BY等)およびデータ入出力端子からデータ入出力バッファ110aを介して入力されるコマンドに応じて制御動作する。すなわち、ロジック制御回路120は、該制御信号およびコマンドに応じて、データのプログラム、ベリファイ、読み出し、消去時に、所望の電圧を発生し、メモリセルアレイ130の各部に供給する。
メモリセルアレイ130は、複数のビット線BLと、複数のワード線WLと、ソース線SLとを含む。このメモリセルアレイ130は、電気的に書き換えが可能なメモリセルトランジスタ(単にメモリセル等とも称す)MCがマトリクス状に配置された複数のブロックBLKで構成されている。メモリセルMCは、例えば、制御ゲート電極及び電荷蓄積層(例えば浮遊ゲート電極)を含む積層ゲートを有し、浮遊ゲート電極に注入された電荷量により定まるトランジスタの閾値の変化によって二値、あるいは多値データを記憶する。また、メモリセルMCは、電荷トラップ型の絶縁膜(例えば窒化膜)に電子をトラップするMONOS(Metal - Oxide - Nitride - Oxide - Silicon)構造を有するものであっても良い。
センスアンプ131は、メモリセルアレイ130内のビット線BL(カラム)の電圧をセンス増幅し、メモリセルアレイへのデータ記憶処理・データ読み出し処理・データ消去処理などを実行する。
演算部132は、任意のデータラッチ間でブール代数で示されるような演算を行い、その結果をデータラッチに格納することが可能である。この演算器は、NANDの書き込み、読み出し等の通常の動作において使われる。
ページバッファ133は、書き込みを行うためのデータをラッチする、データの一時記憶領域である。
カラムデコーダ134は、ページバッファ133内のデータ記憶回路(バッファ回路)を選択し、このデータ記憶回路に読み出されたメモリセルMCのデータを、データ入出力バッファ110aを介してデータ入出力端子から外部(コントローラ100)へ出力する。また、カラムデコーダ134は、ビット線BLを介して該メモリセルMCの状態を検出し、ビット線BLを介して該メモリセルMCに書き込み制御電圧を印加して該メモリセルMCに書き込みを行う。
カラムバッファ135は、アドレスレジスタ115から入力されるカラムアドレスを記憶する。
ロウアドレスデコーダ136は、データの読み出し動作、書き込み動作、或いは消去動作時に、何れかのブロックBLKを選択し、残りのブロックBLKを非選択とする。つまり、ロウアドレスデコーダ136は、メモリセルアレイ130のワード線WL及び選択ゲート線VSGS、VSGDに、読み出し動作、書き込み動作、或いは消去動作において必要な電圧を印加する。
ロウアドレスバッファデコーダ137は、アドレスレジスタ115から入力されるロウアドレスを記憶する。
昇圧回路140は、電源電圧を昇圧する。電源電圧を必要に応じて昇圧し、メモリセルアレイ130、センスアンプ131及びロウアドレスデコーダ136に供給する。
図3及び図4を用いて、実施形態に係るメモリセルアレイ130の基本的な構成について概略的に説明する。
図3は、実施形態に係るメモリセルアレイ130の基本的な構成について模式的に示したブロック図である。
メモリセルアレイ130は、複数のメモリブロックBLK0〜BLKm−1(mは1以上の整数である)から構成される。複数のメモリブロックBLK0〜BLKm−1は、ビット線BL方向(カラム方向)に並んで配置される。
このブロックはそれぞれ、例えば用途毎に使い分けられることが可能であり、ロムフューズ領域として用いられるロムフューズブロックBLKi、及び鍵データが記憶されているページを含む鍵記憶ブロックBLKl等がある。
ロムフューズブロックBLKiは、NANDチップ100の初期化等に必要な各種の初期設定値を格納している。
鍵記憶ブロックBLKlはNANDチップ100の外部に対してはデータ記録だけでなく、データ読み出しも禁止される領域である。そして、鍵記憶ブロックBLKlは、秘密情報であり、AES暗号化演算で用いられる鍵データを予め保持している。
ここで、データ読み出しが禁止されている鍵記憶ブロックBLKlの実装上の扱いについて記述しておく。この鍵記憶ブロックBLKlに記憶されている情報は、機密情報であり保護すべきデータが収められているので、直接NANDチップ100の外部(例えばホスト機器200)にデータを出力できないようになっている。しかし、NANDチップ100を製造する工程で、前記鍵記憶ブロックBLKlのテストを行う、等の目的で、正しく鍵データが書きこめたか否かを確認したい場合がある。この場合にはNANDチップ100の外部から特定のデータをNANDチップ100に与え、このデータと鍵の間で一定の規則に従った演算を行った結果を出力することで正しくデータが前記鍵記憶ブロックBLKlに書き込まれたか否かを判断する。前記特定のデータは鍵データそのものでも良く、その場合には、前記鍵記憶ブロックBLKlに記憶されている鍵データと、NANDチップ100の外部から入力した鍵データの間で排他的論理和をとり、その結果をNANDチップ100の外部に出力すればよい。
別の例としては、NANDチップ100の内部に乱数生成回路を更に備え、鍵データと前記乱数生成回路の発生した乱数の間に演算を行った後に、その結果をNANDチップ100の外部に出力するようにする。
ここで、NANDチップ100の内部に乱数生成回路を備える場合、予めNANDチップ100の内部に備わっている回路の一部を転用して乱数を発生することが可能である場合には、そのようにすることで回路面積の増大を抑制する効果がある。
図4は、図3に示される複数のメモリブロックのうち、1つのメモリブロックの回路例を示す回路図である。
図4に示すように、1つのメモリブロックは、ワード線WL方向(ロウ方向)に並んだ複数のNANDセル(セルユニット、またはNANDストリングス等とも称す)を含む。
1つのNANDセルは、直列接続される複数のメモリセルトランジスタ(単にメモリセルとも称す)MTと、一端のメモリセルトランジスタMTのドレインに接続される選択ゲートトランジスタST1と、他端のメモリセルのソースに接続される選択ゲートトランジスタST2とを含む。
メモリセルトランジスタMTは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層と、電荷蓄積層上に形成されたゲート絶縁膜と、更にゲート絶縁膜上に形成された制御ゲート電極とを有する。なお、メモリセルトランジスタMTの個数は8個に限られず、16個や32個、64個、128個、256個等であってもよく、その数は限定されるものではない。またメモリセルトランジスタMTは、隣接するもの同士でソース、ドレインを共有している。そして、選択ゲートトランジスタST1、ST2間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタMTの一端側のドレイン領域は選択ゲートトランジスタST1のソース領域に接続され、他端側のソース領域は選択ゲートトランジスタST2のドレイン領域に接続されている。
ビット線BL0〜BLq−1(qは1以上の整数である)は、選択ゲートトランジスタST1のドレインと接続される。ソース線SLは、選択ゲートトランジスタST2のソースに接続される。尚、ビット線BL0〜BLq−1についても、これらを区別しない場合には一括してビット線BLと呼ぶ。また、選択トランジスタST1、ST2は必ずしも両方必要ではなく、NANDセルを選択出来るのであればいずれか一方のみが設けられていても良い。
ワード線WL0〜WLn−1(nは1以上の整数である)は、WL方向に延び、WL方向に隣接するメモリセルで共有接続される。なお説明の簡単化のため、以下ではワード線WL0〜WL7を区別しない場合には、単にワード線WLと呼ぶことがある。
セレクトゲート線SGD、SGSはそれぞれ、メモリセルの選択トランジスタST1、ST2のゲート電極で共有接続される。
また、同一のワード線WLに接続された複数のメモリセルトランジスタMTには一括してデータが書き込まれ、この単位をページと呼ぶ。更に、同一行にある複数のNANDセルは一括してデータが消去され、この単位をメモリブロックと呼ぶ。
次に、図5〜8を用いて、第1の実施形態に係るページバッファ(データラッチ)133の基本的な構成について概略的に説明する。図5は、第1の実施形態に係るページバッファ133及びその周辺の回路の基本的な構成を模式的に示したブロック図である。
図5に示すように、センスアンプ131は、ビット線BLに接続される複数のセンス部SA_0、SA_1、SA_2、SA_3、…、SA_q−1を備えている。以下、複数のセンス部を特に区別する必要がない場合は、単にセンス部SAと表記する場合がある。
また、演算部132は、センス部SAにそれぞれ接続される複数の演算器YB_0、YB_1、YB_2、YB_3、…、YB_q−1を備えている。以下、複数の演算器を特に区別する必要がない場合は、単に演算器YBと表記する場合がある。
また、ページバッファ133において、一つのセンス部SAに複数のバッファ回路AD_0、BD_0、CD_0、及びXD_0が接続されている。そして、ページバッファ133において、センス部SA毎に4つのバッファ回路が設けられている。以下、複数のバッファ回路を特に区別する必要がない場合は、単にバッファ回路AD、BD、CDまたはXD等と表記する場合がある。
カラムデコーダ134は、バッファ回路XDにそれぞれ接続される複数のスィッチSW_0、SW_1、SW_2、SW_3、…、SW_q−1を備えている。以下、複数のスィッチを特に区別する必要がない場合は、単にスィッチSWと表記する場合がある。
アドレス制御回路123は、アドレス選択信号を各スィッチSWに供給することで、カラムデコーダ134の制御を行う。
AES暗号回路122は、カラムデコーダ134を介してページバッファ133とデータの送受信を行う。また、AES暗号回路122は、アドレス制御回路123の制御を行う。
AES制御回路121は、AES暗号回路122の制御を行う。
図6は、ページバッファ133、及びその周辺の回路例を模式的に示した回路図である。
ひとつのセンス部SAには、演算器(YBOX)YBを介して複数のバッファ回路(ラッチ回路)AD、BD、CD、XDが接続されている。また、これらページバッファのうち最低ひとつ(本例ではバッファ回路XD)は、入出力端子102内のデータ入出力端子(不図示)とデータ入出力バッファを結ぶデータ線IO_BUS_X(図2のページバッファ133と、バス制御回路114とを結ぶデータ線)に直接接続されている。それぞれのバッファ回路は、データを保持することが可能である。
例えば各種シーケンスは、このバッファ回路XDを介して、ホスト機器200からメモリセルアレイ130に書き込むデータをロードし、また、メモリセルアレイ130から読み出したデータをホスト機器200に出力することができる。
図7は、ページバッファ133及びその周辺の回路例をより具体的に示した回路図である。
センス部SAは、電流経路の一端がビット線BLに接続され、ゲートにBLVが入力され、他端がグランドに接続されるn型のトランジスタ131aと、電流経路の一端がビット線BLに接続され、ゲートにBLCが入力され、他端がノードN1に接続されるn型のトランジスタ131bと、電流経路の一端がノードN1に接続され、ゲートにINVが入力され、他端がSRCGND電位に接続されるトランジスタ131cとを備えている。また、センス部SAは、電流経路の一端が電源VDDに接続され、ゲートにINVが入力され、他端がノードN2に接続されるp型のトランジスタ131dと、電流経路の一端がノードN2に接続され、ゲートにBLXが入力され、他端がノードN1に接続されるn型のトランジスタ131eと、電流経路の一端がノードN2に接続され、ゲートにHLLが入力され、他端がノードN3(=SEN)に接続されるn型のトランジスタ131fと、電流経路の一端がノードN3に接続され、ゲートにXXLが入力され、他端にノードN1が接続されるn型のトランジスタ131gと、を備えている。
演算器YBは、電流経路の一端がノードN3に接続され、ゲートにBLQが入力され、他端がノードN4に接続されるn型のトランジスタ132aと、一端にノードN3が接続され、他端にCLKが入力されるキャパシタ132bとを備えている。また演算器YBは、電流経路の一端にノードN4が接続され、ゲートにSTBが入力されるn型のトランジスタ132cと、電流経路の一端がトランジスタ132cの電流経路の他端に接続され、ゲートにノードSENが接続され、他端にCLKが入力されるn型のトランジスタ132dとを備えている。更に演算器YBは、電流経路の一端にノードN3が接続され、ゲートにLSLが入力されるトランジスタ132eと、電流経路の一端にトランジスタ132eの電流経路の他端が接続され、ゲートにノードN4(=データ線LBUS)が接続され、他端はグランドに接続されているトランジスタ132fと、を備えている。
バッファ回路ADは、電流経路の一端に電源VDDが入力され、ゲートにSLLが入力されるp型のトランジスタ133a1と、電流経路の一端にトランジスタ133a1の電流経路の他端が接続され、ゲートがノードN6(=INV)に接続され、他端がノードN5に接続されるp型のトランジスタ133a2と、電流経路の一端がノードN5に接続され、ゲートにSTLが入力され、他端がノードN4に接続されるn型のトランジスタ133a3と、電流経路の一端がノードN5に接続され、ゲートがノードN6に接続され、他端がグランドに接続されているn型のトランジスタ133a4と、を備えている。また、バッファ回路ADは、電流経路の一端に電源VDDが入力され、ゲートにSLIが入力されるp型のトランジスタ133a5と、電流経路の一端にトランジスタ133a5の電流経路の他端が接続され、ゲートがノードN5に接続され、他端がノードN6に接続されるp型のトランジスタ133a6と、電流経路の一端がノードN6に接続され、ゲートにSTIが入力され、他端がノードN4に接続されるn型のトランジスタ133a7と、電流経路の一端がノードN6に接続され、ゲートがノードN5に接続され、他端がグランドに接続されているn型のトランジスタ133a8と、を備えている。
バッファ回路BDは、電流経路の一端に電源VDDが入力され、ゲートにLLLが入力されるp型のトランジスタ133b1と、電流経路の一端にトランジスタ133b1の電流経路の他端が接続され、ゲートがノードN8に接続され、他端がノードN7に接続されるp型のトランジスタ133b2と、電流経路の一端がノードN7に接続され、ゲートにLTLが入力され、他端がノードN4に接続されるn型のトランジスタ133b3と、電流経路の一端がノードN7に接続され、ゲートがノードN8に接続され、他端がグランドに接続されているn型のトランジスタ133b4と、を備えている。また、バッファ回路BDは、電流経路の一端に電源VDDが入力され、ゲートにLLIが入力されるp型のトランジスタ133b5と、電流経路の一端にトランジスタ133b5の電流経路の他端が接続され、ゲートがノードN7に接続され、他端がノードN8に接続されるp型のトランジスタ133b6と、電流経路の一端がノードN8に接続され、ゲートにLTIが入力され、他端がノードN4に接続されるn型のトランジスタ133b7と、電流経路の一端がノードN8に接続され、ゲートがノードN7に接続され、他端がグランドに接続されているn型のトランジスタ133b8と、を備えている。
バッファ回路CDは、電流経路の一端に電源VDDが入力され、ゲートにULLが入力されるp型のトランジスタ133c1と、電流経路の一端にトランジスタ133c1の電流経路の他端が接続され、ゲートがノードN10に接続され、他端がノードN9に接続されるp型のトランジスタ133c2と、電流経路の一端がノードN9に接続され、ゲートにUTLが入力され、他端がノードN4に接続されるn型のトランジスタ133c3と、電流経路の一端がノードN9に接続され、ゲートがノードN10に接続され、他端がグランドに接続されているn型のトランジスタ133c4と、を備えている。また、バッファ回路CDは、電流経路の一端に電源VDDが入力され、ゲートにULIが入力されるp型のトランジスタ133c5と、電流経路の一端にトランジスタ133c5の電流経路の他端が接続され、ゲートがノードN9に接続され、他端がノードN10に接続されるp型のトランジスタ133c6と、電流経路の一端がノードN10に接続され、ゲートにUTIが入力され、他端がノードN4に接続されるn型のトランジスタ133c7と、電流経路の一端がノードN10に接続され、ゲートがノードN9に接続され、他端がグランドに接続されているn型のトランジスタ133c8と、を備えている。
また、バッファ回路BD及びXDの間において、電流経路の一端に電源VDDが入力され、ゲートにLPCnが入力され、他端がノードN4に接続されているp型のトランジスタ133d1と、電流経路の一端がノードN4に接続され、ゲートにDSWが入力され、他端がノードN11に接続されるn型のトランジスタ133d2と、電流経路の一端に電源VDDが入力され、ゲートにDPCnが入力され、他端がノードN11に接続されるp型のトランジスタ133d3と、電流経路の一端がノードN11に接続され、ゲートにDDCが入力され、他端がグランドに接続されるn型のトランジスタ133d4と、が設けられている。ここで、LPCnは、Lの場合にLBUSをプリチャージする。そして、DSWは、LBUSとバッファ回路XDとを接続する信号である。そして、DPCn及びDDCは、バッファ回路XDをプリチャージまたはディスチャージする信号である。
バッファ回路XDは、電流経路の一端に電源VDDが入力され、ゲートにXLLが入力されるp型のトランジスタ133x1と、電流経路の一端にトランジスタ133x1の電流経路の他端が接続され、ゲートがノードN13に接続され、他端がノードN13に接続されるp型のトランジスタ133x2と、電流経路の一端がノードN12に接続され、ゲートにXTIが入力され、他端がノードN11に接続されるn型のトランジスタ133x3と、電流経路の一端がノードN12に接続され、ゲートがノードN13に接続され、他端がグランドに接続されているn型のトランジスタ133x4と、を備えている。また、バッファ回路XDは、電流経路の一端に電源VDDが入力され、ゲートにXLIが入力されるp型のトランジスタ133x5と、電流経路の一端にトランジスタ133x5の電流経路の他端が接続され、ゲートがノードN12に接続され、他端がノードN13に接続されるp型のトランジスタ133x6とを備えている。更にバッファ回路XDは、電流経路の一端がノードN13に接続され、ゲートにXNLが入力され、他端がデータ線IO_BUS_Xに接続されるp型のトランジスタ133x7と、電流経路の一端がノードN13に接続され、ゲートにXTLが入力され、他端がデータ線IO_BUS_Xに接続されるn型のトランジスタ133x8と、電流経路の一端がノードN13に接続され、ゲートがノードN12に接続されるn型のトランジスタ133x9と、電流経路の一端がトランジスタ133x9の電流経路の他端に接続され、ゲートにXNLが入力され、他端がグランドに接続されているn型のトランジスタ133x10と、を備えている。
次に、図8を用いて、本実施形態に係るAES暗号回路122で使用するページバッファ133内の記憶領域のアドレス空間について概略的に説明する。図8(a)は、本実施形態に係るページバッファ133の基本的な構成を示した模式図であり、図8(b)は、本実施形態に係るページバッファ133への、機能別に領域を分けた場合に関する模式図であり、図8(c)は、本実施形態に係るページバッファ133への、より詳細な割り当てについて示した模式図である。
メモリセルアレイ130の鍵記憶ブロックBLKl内には、鍵データとして、多くのデータセット(スロット)が記憶されており、これらの鍵スロットのうちどのスロットを演算に使用するかはホスト機器200が選択する。このスロットは、データ全体の容量が数ページにわたることもある。また、製品によりページ長が異なることもある。しかし、AES演算装置が実際にRAMとして使用するアドレス空間は49バイト程度である。メモリセルアレイ130のページ容量16キロバイトと比較して非常に小さい。このようにAES演算装置が演算の際にRAMとして用いる領域は少ない。
図8(a)に示すように、AES暗号回路122のRAMとして、ページバッファ133を使用する前は、AES暗号回路122の演算用RAMとしての領域(ワーキングエリア)と、鍵等の情報を記憶しておく鍵記憶領域と、に領域が分けられていない。しかし、後述する手段によって、図8(b)に示すように、AES暗号回路122のRAMとして、ページバッファ133を使用する際に、ページバッファ133はAES暗号回路122が演算を行う演算用RAMとしての領域(ワーキング領域)133aと、鍵等の情報を記憶しておく領域(鍵記憶領域)133bと、に領域が分けて用いられる。
より具体的には、図8(c)に示すように、鍵記憶領域133tには、秘密情報(Media Key)MKEYと、複数のスロット鍵(Slot key)SLOT0〜SLOT_Eが保持されている。ワーキング領域133sには、NANDチップ100の外部からメッセージデータMESSAGEがロードされる。また後述する手段によって鍵記憶領域133tのSLOT0〜SLOT_Eのうち一組のスロット鍵がワーキング領域133sに転送され、AES暗号回路122が演算で用いるスロット鍵(SKEY)となる。MKEYについても後述の手段により、ワーキング領域133sに転送され、AES暗号回路122が演算で用いるMediaKey(MKEY)となる。また、後述するAES暗号化演算が終了した後、認証情報が図8(d)に示すようにワーキング領域133sに書き込まれる。
次に、図9を用いて、本実施形態に係るAES暗号回路122の基本的な構成について説明する。図9は、本実施形態に係るAES暗号回路122の基本的な構成を模式的に示したブロック図である。
図9に示すように、AES暗号回路122は、暗号化処理部122aと、暗号化のための演算を行うALU(Arithmetic and Logic Unit)122bと、演算結果を一時的に記憶するためのアキュムレータ122cと、を備えている。
AES暗号回路122は、AES制御回路121からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。
ALU122bは、暗号化処理部122aにより選択された機能を表す情報(図中の「機能選択」)に従って演算を実行する。ALU122bは、必要に応じて、暗号化処理部122aにより指定されたアドレスのデータに対して演算を実行する。
アキュムレータ122cは、ALU122bによる演算結果を記憶するためのレジスタである。アキュムレータ122cに記憶されたデータは、暗号化処理部122aからの指示に応じてページバッファ133に書き込まれる。
なお、AES暗号回路122は、ページバッファ133のうち、一部の記憶領域を使用してAES暗号の演算を実行する。
暗号化処理部122aは、AES制御回路121を介してホスト機器200から暗号化処理の命令を受け、ページバッファ133のアドレスを指定し、ALU122bにこのデータについて演算をさせるようになっている。AES暗号回路122は、ホスト機器200から与えられた入力データを元に、AES暗号化方式で定められた手順によって演算を行い、演算結果のデータを返す。この演算を式であらわすと、下記の様な式になる。
R=AES(m,k)
R:Result;演算結果,m:Message;メッセージ,k:key;鍵
上記のAES暗号化演算装置は、下記の5種類の命令を備えており、演算はバイト単位で行われる。このうち、3つはAES内部の演算処理の命令(sbox、xtime、および、xor)であり、残りの2つは2種類のメモリアクセスのための命令(ld(ロード)およびst(ストア))である。
[演算処理の命令]
1.sbox
2.xtime
3.xor
[メモリアクセスのための命令]
4.ld(ロード)
5.st(ストア)。
また、AES暗号回路122の使用方法は以下のようになる。
・ページバッファ133に入力データ(メッセージm(16バイト)および鍵k(16バイト)を書き込む
・AES暗号回路122を実行開始する
・AES暗号回路122の実行終了を待つ
・演算結果はページバッファ133に書き込まれているので、演算結果をページバッファ133から読み出す。
次に、図10を用いて、本実施形態に係るAES暗号演算装置の基本的な構成及び信号の流れについて説明する。図10は、本実施形態に係るAES暗号演算装置の基本的な構成及び信号の流れについて模式的に示したブロック図である。
図10に示すように、NANDチップ100内部のコマンドレジスタ111は、入出力端子102および入出力制御回路110を介してAES暗号化シーケンスをスタートさせるコマンドをホスト機器200から受け取る。そして、コマンドレジスタ111は、該コマンドを保持し、暗号化実行コマンドcmdとしてAES制御回路121へ送る。この暗号化実行コマンドcmdを受け取ったAES制御回路121は、信号aes_startをAES暗号回路122に送る、そして、AES暗号回路122は、信号aes_startを受信すると、AES暗号化シーケンスを開始する。
また、AES暗号回路122は、信号aes_startを受信すると、演算の状態を示す信号aes_R/BをAES制御回路121に返す。例えば、AES暗号回路122はAES暗号化シーケンスの演算中であれば、AES制御回路121にビジー信号としてaes_R/Bを送信する。
AES暗号回路122は、AES暗号化シーケンス中にデータのロード、ストアが必要になった場合には、それぞれ信号aes_read/aes_writeをAES制御回路121に送信する。AES暗号回路122はRAM(ページバッファ133)のアドレスを信号aes_addressによって指定し、信号aes_addressをアドレス制御回路(カラムアドレス制御回路)123に送信する。アドレス制御回路123は、該アドレス信号を物理アドレスに変換し、信号column_addressをカラムデコーダ134に送信することで、ページバッファ133のうちの該当するアドレスに属するビットを指定する。
また、AES暗号回路122はシーケンスの状態に応じて、アドレス制御回路123を制御し、アドレスを変更することが可能である。
アドレス制御回路123は、AES暗号回路122から供給されるアドレスをページバッファ133のワーキング領域133sのアドレスに変換することができる。
AES暗号回路122は、8ビットのデータ線IO_BUS_S(図2のロジック制御回路120と、バス制御回路114とを結ぶデータ線)、バス制御回路114、及びデータ線IO_BUS_Xを介してページバッファ133とデータの送受信を行う。バス制御回路114は、入力端がデータ線IO_BUS_Sに接続されるインバータ114aと、入力端にインバータ114aの出力端が接続され、出力端がデータ線IO_BUS_Sに接続されるインバータ114bと、入力端がデータ線IO_BUS_Xに接続されるインバータ114cと、入力端にインバータ114cの出力端、インバータ114aの入力端、及びインバータ114bの出力端が接続され、入力端がデータ線IO_BUS_Xに接続される114dとを有する。
また、データ線IO_BUS_Sには、データチェック回路113及び一時レジスタ112が備えられている。データチェック回路113は、鍵などのデータをページバッファ133のワーキング領域133sに移すときに、データにエラーが無いか否かの検査を行う。一時レジスタ112は、AESの演算を行う前の段階で、データチェック回路113において、エラーが無いと判定されたデータをワーキング領域に移すために、一時的に保持する。また、一時レジスタ112を介してページバッファ133内部でのデータのアドレス変換を行う事もできる。
AES制御回路121は、ページバッファ133からデータをAES暗号回路122に転送するための制御を行うバッファデータ読み出しシーケンス124、及びAES暗号回路122からのデータをページバッファに転送するためのバッファデータ書込みシーケンス125と接続されている。
AES制御回路121は、AES暗号回路122からメモリロード(リード)の命令を受けると、信号page_loadを、バッファデータ読み出しシーケンス124に送信する。バッファデータ読み出しシーケンス124は、信号page_loadを受信すると、サブシーケンスを開始する。バッファデータ読み出しシーケンス124は動作が終了すると、それぞれ信号load_endをAES制御回路121に送信し、バッファデータ読み出しシーケンス124のサブシーケンスを終了する。
AES制御回路121は、AES暗号回路122から、メモリストア(ライト)の命令を受けると、信号page_readを、バッファデータ書込みシーケンス125に送信する。バッファデータ書込みシーケンス125は、信号page_readを受信すると、サブシーケンスを開始する。バッファデータ書込みシーケンス125は動作が終了すると、信号store_endをAES制御回路121に送信し、バッファデータ書込みシーケンス125のサブシーケンスを終了する。
次に、本実施形態に係るAES暗号化シーケンスについて説明する。図11は、AES暗号化シーケンス1000を示すブロック図である。図12は、上記AES暗号化シーケンスを実行するために、ホスト機器200がNANDチップ100(AES制御回路121)に入力するコマンドのセットを示している。
以下にAES暗号化シーケンス1000について説明する。
AESの実行シーケンスとしては、図11に示すようなステップで操作が行われる。
[ステップS1001]
ホスト機器200は、NANDチップ100(入出力端子102)にメッセージデータを入力する。このメッセージデータは例えば、先頭にAESシーケンス用の特別コマンドXXhを含んでいる。ホスト機器200から入力するメッセージデータはページバッファ133のワーキング領域133sのうち、AES制御回路121がtrans_addressをアドレス制御回路123に供給することで、予め決まったアドレスに格納される。
[ステップS1002]
ホスト機器200は、スロット鍵を指定して、NANDチップ100(入出力端子102)に入力する。具体的には、ホスト機器200は、多くのスロットのうちのいずれかを選択し、スロットの番号を決定する。そして、ホスト機器200は、入出力端子102に通常の書き込みアドレス入力コマンド80hを入力し、入出力端子102に決定したスロット鍵番号(またはスロット鍵のあるアドレス)を入力する。NANDチップ100(アドレス制御回路123)はスロットの番号をカラムアドレスに変換する。
通常、アドレスは5サイクルのアドレス入力が行われ、はじめの2サイクルはカラムアドレスであり、残りの3サイクルはロウアドレスを指す。ステップS1002では、ホスト機器200が入出力端子102にXXhコマンドを入力した段階で、鍵データが書かれているブロックとページが自動的に指定されるものとし、スロット鍵を指定するアドレス以外はダミーアドレスが、入出力端子102に入力されるものとする。
[ステップS1003]
ホスト機器200は、NANDチップ100(入出力端子102)にAES暗号化実行コマンドを入力する。ホスト機器200は、アドレス入力の後にAES暗号演算に必要なメッセージデータDinを入力する。10hコマンドはメモリセルアレイ130への書き込み実行コマンドであるが、このコマンドシーケンスの先頭にXXhコマンドが入力されていた場合には、AES制御回路121は、10hコマンドをAES暗号化実行コマンドと解釈し、AES演算シーケンスを開始する。
[ステップS1004]
ホスト機器200がAES実行コマンド10hをAES制御回路121に入力すると、AES制御回路121は、鍵情報(スロット鍵のデータ)が記憶されているメモリセルアレイ130のページのデータをページバッファ133に読み出してくる。すなわち、AES制御回路121はメモリ読み出しシーケンス126に、該当のメモリセルアレイ130内のページから、センスアンプ131を用いてデータをセンスし、ページバッファ133に読み出しデータを格納するように命令を出す。
尚、メモリセルアレイ130において、スロット鍵は相補データのデータ形式で何セットかを記憶されている。そのため、データtrans_inは、相補データのデータ形式となっている。後述する検査のために、スロット鍵は相補形式で多重記録されているので、検査の結果データにエラーがあった場合には正しいデータと取り替えることが可能である。また、メディア鍵も同様に相補データのデータ形式にしておくことで、後述するデータのチェックを行うことができる。
[ステップS1005]
次に、ステップS1002で指定されたスロット鍵のデータを一時レジスタ112のワーキング領域(不図示)にコピーする。データチェック回路113は、ページバッファ133から一時レジスタ112へ、データtrans_inの転送を行う途中で、データtrans_inが正しいデータか否かのチェックを行う。具体的には、データチェック回路113で、鍵データの相補データチェックを行い、データが相補形式に保たれていれば、そのまま一時レジスタ112へデータtrans_inを転送する。
[ステップS1006]
もし、ステップS1005の相補チェックに失敗した場合には、データチェック回路113は、一時レジスタ112を介してバッファデータ読み出しシーケンス124にcheck_flagを送信する。その後、バッファデータ読み出しシーケンス124はflag_failをアドレス制御回路123に送信する。そして、アドレス制御回路123は、同じスロット鍵のデータが書かれている別のアドレスを指定し、再度データチェック回路113へデータtrans_inの転送を試みる。このようにして、相補チェックが成功するまで、データtrans_inのチェックが行われる。そのため、エラービットが取り除かれたデータが一時レジスタ112に格納される。この例では、相補チェックが失敗した場合、同じスロット鍵のデータが書かれている別のアドレスを指定しているが、必ずしもこれに限らない。
[ステップS1007]
ステップS1005の相補チェックに成功した場合には、ステップS1002で指定されたスロット鍵のデータを一時レジスタ112にコピーする。一時レジスタ112は、少なくともスロット鍵のデータ長と等しいサイズの記憶領域を有している。
[ステップS1008]
一時レジスタ112に格納されたデータをページバッファ133のワーキング領域133sに移すため、AES制御回路121は、バッファデータ書込みシーケンス125のサブシーケンスを起動する。アドレス制御回路123は、アドレス制御回路123にワーキング領域133s内部の転送先アドレスtrans_addressを指定する。一時レジスタ112のデータtrans_outがデータ線IO_BUS_S、バス制御回路114、及びデータ線IO_BUS_Xを介してページバッファ133に転送される。データの転送が完了したのち、アドレス制御回路123は、アドレスをインクリメントし、このインクリメントと同期して一時レジスタ112のアドレスをインクリメントし、都度一時レジスタ112から、ページバッファ133へのデータの転送を1バイトずつ行う。鍵データの長さだけ転送動作を繰り返すことで、鍵データのワーキング領域133sへのコピーが完了する。
続いて、上述したステップS1005〜ステップS1008でスロット鍵について説明した方法と同様の方法で、メディア鍵を、鍵記憶領域133tからワーキング領域133sへとコピーする。
[ステップS1009]
次に、メディア鍵のデータを一時レジスタ112のワーキング領域(不図示)にコピーする。データチェック回路113は、ページバッファ133から一時レジスタ112へ、データtrans_inの転送を行う途中で、データtrans_inが正しいデータか否かのチェックを行う。
[ステップS1010]
もし、ステップS1009の相補チェックに失敗した場合には、データチェック回路113は、一時レジスタ112を介してバッファデータ読み出しシーケンス124にcheck_flagを送信する。その後、バッファデータ読み出しシーケンス124はflag_failをアドレス制御回路123に送信する。そして、アドレス制御回路123は、同じメディア鍵のデータが書かれている別のアドレスを指定し、再度データチェック回路113へデータtrans_inの転送を試みる。このようにして、相補チェックが成功するまで、データtrans_inのチェックが行われる。そのため、エラービットが取り除かれたデータが一時レジスタ112に格納される。この例では、相補チェックが失敗した場合、同じスロット鍵のデータが書かれている別のアドレスを指定しているが、必ずしもこれに限らない。
[ステップS1007]
ステップS1005の相補チェックに成功した場合には、該メディア鍵のデータを一時レジスタ112にコピーする。一時レジスタ112は、少なくともメディア鍵のデータ長と等しいサイズの記憶領域を有している。
[ステップS1008]
一時レジスタ112に格納されたデータをページバッファ133のワーキング領域133sに移すため、AES制御回路121は、バッファデータ書込みシーケンス125のサブシーケンスを起動する。アドレス制御回路123は、アドレス制御回路123にワーキング領域133s内部の転送先アドレスtrans_addressを指定する。この際、AES暗号回路122は、メディア鍵のコピーの先として、アドレス制御回路123に、スロット鍵がコピーされたワーキング領域133sとは異なるアドレスを指定する。一時レジスタ112のデータtrans_outがデータ線IO_BUS_S、バス制御回路114、及びデータ線IO_BUS_Xを介してページバッファ133に転送される。データの転送が完了したのち、アドレス制御回路123は、アドレスをインクリメントし、このインクリメントと同期して一時レジスタ112のアドレスをインクリメントし、都度一時レジスタ112から、ページバッファ133へのデータの転送を1バイトずつ行う。鍵データの長さだけ転送動作を繰り返すことで、鍵データのワーキング領域133sへのコピーが完了する。
[ステップS1010]
AESのワーキング領域にチップ外部から入力されたメッセージと、スロット鍵、メディア鍵がコピーされた後、NANDチップ100(AES暗号回路122)は、AES暗号化を実行し、実行中はビジー信号aes_R/B(busy)を、AES制御回路121及び図示せぬRB(レディ・ビジー)パッドを介してホスト機器200に出力する。RBパッドは、AES演算シーケンスが終了するまでビジーをホスト機器200に出力する。
図13〜15を用いて、ステップS1010についてより具体的に説明する。
図13は、暗号化のメインシーケンスを実行する際のタイミングチャートであり、図14は、AES暗号回路122がデータのロードを実行する際のタイミングチャートであり、図15は、AES暗号回路122がデータのストアを実行する際のタイミングチャートである。尚、各信号はNANDチップ100内部で発生された図示せぬクロック信号clockと同期して動作している。
メッセージと鍵データが、ページバッファ133のワーキング領域133sに揃うと、図13に示すように、AES制御回路121は、信号aes_startをAES制御回路121へ送信する。AES暗号回路122は、この信号を受信することで暗号化のメインシーケンスを実行する。そして、AES暗号回路122は、AES演算を実行している間ビジー信号aes_R/B(busy)を出力する。
AES暗号回路122のAES演算を実行している間に、AES暗号回路122がメモリのロードまたはストアを行う場合、AES暗号回路122から直接アドレス制御回路123にワーキング領域133sのアドレスaes_addressが送信される。このメモリのロード及びストアとは、AES暗号回路122が演算を行っているときに、ページバッファ133の中のワーキング領域133sとAES暗号回路122との間でデータを授受する動作のことである。より具体的には、ロードは、ワーキング領域133sの中のaes_addressで指定されたバイトをAES暗号回路122に読み出す動作。ストアは、AES暗号回路122で計算したデータをワーキング領域133sのaes_addressで指定されたアドレスに書き込む動作である。つまり、AES暗号回路122がページバッファ133にaes_addressでランダムにアクセスして、メモリの読み書きを行う動作のことである。
図14に示すように、AES暗号回路122がロードを行う場合、AES暗号回路122は、信号aes_readをAES制御回路121に送信し、アドレス制御回路123にワーキング領域133sのアドレスaes_addressを送信する。そして、AES制御回路121は、信号page_loadをバッファデータ読み出しシーケンス124に送信する。そして、バッファデータ読み出しシーケンス124が起動し、ワーキング領域133sのaes_addressで指定されたアドレスにあるページバッファ133をIO_BUS_X、IO_BUS_S、aes_dinを介してAES暗号回路122に接続する。その後、バッファデータ読み出しシーケンス124からAES制御回路121にload_end信号が送られ、AES制御回路121はデータロードが終了したことを示す信号aes_read_end信号をAES暗号回路122へと送信し、AES暗号回路122は、ページバッファから所望のデータをaes_dinから得ることでロード動作が完了する。
図15に示すように、AES暗号回路122がストアを行う場合、AES暗号回路122は、信号aes_writeをAES制御回路121に送信し、アドレス制御回路123にワーキング領域133sのアドレスaes_addressを送信する。そしてAES制御回路121は、信号page_storeをバッファデータ書込みシーケンス125に送信する。そして、バッファデータ書込みシーケンス125が起動し、aes_doutから、IO_BUS_S、IO_BUS_Xを経由してページバッファ133へデータ線が接続される。AES暗号回路122からaes_doutに、ストアすべきデータが出力されているので、このデータが上記のデータ経路からページバッファ133に送信され、所望のアドレスaes_addressに該当するページバッファ133にデータが書き込まれる。その後、バッファデータ書き込みシーケンス125からAES制御回路121にstore_end信号が送られ、AES制御回路121はデータストアが終了したことを示す信号aes_write_end信号をAES暗号回路122へと送信し、ストア動作が完了する。
尚、この場合ワーキング領域133s内のデータにはエラーが無いので、データチェック回路113によって相補データチェックを行う必要は無い。
[ステップS1010]
NANDチップ100(AES暗号回路122)は、一連のAES暗号化シーケンスが終了した後、AES暗号回路122はレディ信号aes_R/B(ready)をAES制御回路121に送信する。そして、AES制御回路121は、レディ信号aes_R/B(ready)を、AES制御回路121及び図示せぬRB(レディ・ビジー)パッドを介してホスト機器200に出力する。そして、NANDチップ100はレディ状態になる。ページバッファ133のワーキング領域133sにはAES暗号演算の結果としてのデータが残っている。
[ステップS1011]
ホスト機器200は、ページバッファ133のワーキング領域133sから該演算結果を読み出す。ホスト機器200は、AES暗号演算シーケンスが終了した後、ページバッファ133ワーキング領域133sに残った認証情報を読み出す。この際、ホスト機器200は、この認証情報を読み出すコマンドシーケンスとして、通常のレジスタ(ページバッファ)読み出しコマンドシーケンスと同様のコマンドシーケンスを用いる。
上述した第1の実施形態によれば、第1の実施形態に係る不揮発性半導体記憶装置(NANDチップ100)は、予め定められた暗号方式の演算を実行する暗号回路(AES暗号回路)122と、予め前記演算に用いる相補型のデータを格納しているメモリセルアレイ130と、前記メモリセルアレイ130から読み出された前記データを格納する第1の領域(鍵記憶領域)133t、及び前記演算を実行する際に用いられる第2の領域(ワーキング領域)133sを備えるページバッファ133と、を備えている。また、不揮発性半導体記憶装置は、前記第1の領域133tからの前記データを格納し、格納した前記データを前記第2の領域133sに供給するレジスタ(一時レジスタ)112と、前記データを前記レジスタ112に格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタ112に前記データを格納する前記検査回路113と、を備えている。更に、不揮発性半導体記憶装置は、前記データを前記メモリセルアレイ130から前記第1の領域133tに読み出す制御、及び前記データを前記第1の領域133tから前記第2の領域133sに読み出す制御を行う制御回路(AES制御回路)121と、前記制御回路121から供給される信号に基づいて、ページバッファ133またはメモリセルアレイ130のアドレスを指定するアドレス制御回路123と、を備えている。前記制御回路121は、前記アドレス制御回路123を制御することで、前記データを前記第1の領域133tから前記第2の領域133sに供給し、前記検査回路113は前記データにエラーがあると判定した場合(ステップS1005)に、その旨を前記アドレス制御回路123に通知し、前記アドレス制御回路123は、前記通知を受信すると、前記ページバッファ133の前記データと同一内容のデータが格納されている別のアドレスを指定し、前記検査回路113は、前記別のアドレスのデータのエラーの有無の判定を行う(ステップS1006)。
このように、第1の実施形態に係るNANDチップ100は、ページバッファ133を、AES演算用のRAMとして転用することで、面積のオーバーヘッドを抑制して、ホスト機器200に依存せず、NANDチップ100内の構成のみでAESの機能を実現することが可能である。
ところで、NANDチップ100のページバッファ133は、基本的には、大規模データの一括アクセスを前提としたものであり、通常の演算装置が用いるRAMとは異なる。より具体的に説明すると、ページバッファ133をAES暗号化演算装置のための記憶装置として使用する場合には、AES暗号回路122に、メモリセルアレイ130のページ長に相当するアドレス空間を認識させることが考えられる。この場合、AES暗号回路122のアドレス線が増加し、周辺回路の回路規模が増大してしまう。また、製品によりページ長、スロット数等が異なることが考えられ、その都度AES演算回路を変更しなければならないかもしれない。
また、NANDチップ100の微細化により、メモリセルアレイ130の信頼性が劣化してきており、ビット不良が増える傾向にある。AES暗号化演算に用いる鍵情報等のデータを記憶する鍵記憶装置としてメモリセルアレイ130を利用するためには、鍵情報等のデータのエラーを取り除かなくてはならないという問題もある。
このため、ページバッファ133をAES暗号化演算装置のための記憶装置として使用する場合には工夫が必要であり、更に、AES暗号回路122が演算を始める前に、何らかの方法で鍵情報等のデータを検査してビット不良が無いことを保証する必要がある。
そこで、本実施形態のように、ページバッファ133を、AES暗号化演算処理に用いるRAMとして機能するワーキング領域133sと、鍵情報等のデータを記憶する鍵記憶領域133tと、に領域を分けている。そして、一時レジスタ112を用いて、鍵記憶領域133tから、ワーキング領域133sへとAES暗号化演算で用いるデータの移動を行っている。このため、アドレス線の増加等を抑制し、ページバッファ133をAES暗号化演算処理用のRAMとして転用することが可能となる。
また、本実施形態のように、データチェック回路113を用いて、AES暗号化演算処理を行う前に、鍵情報等のデータのエラーチェックを行うことで、エラーの無い鍵情報等のデータを保証することができる。
以上のように、工夫を施せば、NANDチップの外部にAES演算用の構成を設けることなく、AES暗号化演算を行うことが可能となる。つまり、暗号化演算装置を搭載した不揮発性半導体記憶装置(NANDチップ)を実現することができる。
また、上記で、ページバッファ133をAES暗号演算装置のRAMとして使用する方法について説明してきたが、AES暗号装置に代えてNAND内部にECC、セキュリティ等に関連した演算器をNANDチップ100に混載した場合にもページバッファ133を同様の方法で、これらの演算器のRAMとして使用することが可能である。
また、前記AES暗号化シーケンスで用いたデータチェック回路113、バッファデータ読み出しシーケンス124、バッファデータ書き込みシーケンス125等の回路は、NANDに予め備わっているパワーオンリード動作を制御する回路を用いることが可能である場合には、これを用いてもよい。パワーオンリード動作とは、NANDチップ100に電源を投入した際にメモリセルアレイ130のロムフューズ領域に記憶されているデータを読み出す動作のことを指す。前記パワーオンリードを制御する回路の一部を転用できることが可能である場合には回路面積の増加を抑える効果がある。
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態に係るNANDチップ100は、AES暗号回路122の演算部の一部を、演算部132を転用することによって、更にAES暗号回路122の回路規模を減らすことができる。
図5に示すように、演算器YBは、センス部SAとバッファ回路との間に設けられている。この演算器YBは、センス部SA毎に備えられている。この演算器YBは任意のバッファ回路間でブール代数で示されるような演算を行い、その結果をバッファ回路に格納することが可能である。この演算器YBは、NANDの書き込み、読み出し等の通常の動作においても用いられる。
演算器YBに対して、例えば所定の制御回路の命令により、全てのカラムに対して一括して演算をさせることが出来る。
上述した第2の実施形態によれば、第2の実施形態に係る不揮発性半導体記憶装置(NANDチップ100)は、前記メモリセルアレイ130及び前記ページバッファ133の間に設けられた演算部132を更に備え、前記演算部132は、暗号回路122が行う演算の一部を行う。
AES暗号回路122が行う演算について演算器YBを転用する場合、ALU122bの回路規模を低減することができ、またはALU122bを備えなくてもAES暗号回路122の演算の機能を実施することが可能となる。その結果、NANDチップ100の回路規模を更に削減することが可能である。また、演算器YBは、並列に演算を行うことができるので、演算を更に高速化することが可能である。
(第3の実施形態)
次に、第3の実施形態について説明する。
第3の実施形態では、AES暗号回路で使用するRAM(Random Access Memory)にAES演算回路を組み込むシステム内の記憶装置を転用することでAES演算回路の小型化を図った場合のAES暗号演算回路内部の回路に関する。このような観点に基づいてAES演算回路の小型化を考えた例は今までに存在しない。
以下の各実施形態では、演算装置をAES暗号方式の暗号化装置(第3の実施形態)および復号装置(第4の実施形態)に適用した例を説明する。
次に、本実施形態の暗号化装置の構成の概要について説明する。AES暗号は、基本的にバイト単位で演算処理が実行される。ShiftRowsは16バイトのバイト単位の並び替えである。ShiftRowsにより実際に並び替えるためには、16バイトの他にバッファとなる記憶装置が必要になる。また、MixColumnsは4バイト単位の変換であるが、入力の4バイトが揃わないと変換が実行できない。
本実施形態では、最低限必要な5種類の命令(擬似命令)のみでAESを実現する。5種類の命令には、3種類の演算処理の命令(sbox、xtime、および、xor)と、2種類のメモリアクセスの命令(ld(ロード)およびst(ストア))とが含まれる。また、演算結果を記憶するためのレジスタとして8ビットのアキュムレータを設ける。また、これらの命令によりAES暗号をハードウェアで実行する順序機械である制御部を備える。命令や各構成部の詳細は後述する。
図20は、第3の実施形態にかかる暗号化装置400を含む電子機器10の構成の一例を示すブロック図である。図20に示すように、電子機器10は、暗号化装置400と、入出力インタフェース(入出力IF)500と、記憶装置600と、鍵記憶装置700と、を備えている。
記憶装置600は、電子機器10で扱う各種データを記憶する。記憶装置600は、データを記憶するアドレスを指定することにより当該データにアクセス可能とする記憶媒体である。記憶装置600は、例えばRAMにより構成できる。
入出力IFは、図示しない制御回路からの指示に従い、外部との間でデータを送受信するためのインタフェースである。鍵記憶装置700は、暗号化処理で用いる鍵情報を記憶する。暗号化装置400は、記憶装置600と接続され、AES暗号方式の演算を実行する。記憶装置600は、ページバッファ用のRAMを用いてもよい。鍵記憶装置700は、NANDフラッシュを用いても良い。記憶装置600は、揮発性メモリまたは不揮発性メモリである。鍵記憶装置700は、不揮発性メモリである。また、記憶装置600と鍵記憶装置700は物理的に同一のメモリを用いても良い。
制御回路は、例えば、以下のようにしてAES暗号を実行する。
(1)入出力IFを介して暗号化するデータ(メッセージ)を読み出し、記憶装置600に書き込む。
(2)鍵記憶装置700から鍵情報を読み出し、記憶装置600に書き込む。
(3)暗号化装置400に演算を指示する。これにより、演算の処理結果である暗号文が記憶装置600に書き込まれる。
図21は、第3の実施形態にかかる暗号化装置400の構成の一例を示すブロック図である。図21に示すように、暗号化装置400は、暗号化処理部410と、演算部としてのALU(Arithmetic Logic Unit)420と、アキュムレータ430と、を備えている。
暗号化処理部410は、図20で説明した電子機器10の制御回路からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。暗号化処理部410の詳細は後述する。
ALU420は、暗号化処理部410により選択された機能を表す情報(図21の「機能選択」)に従って演算を実行する。ALU420は、必要に応じて、暗号化処理部410により指定されたアドレスのデータに対して演算を実行する。
アキュムレータ430は、ALU420による演算結果を記憶するためのレジスタである。アキュムレータ430に記憶されたデータは、暗号化処理部410からの指示に応じて記憶装置600に書き込まれる。
なお、暗号化装置400は、記憶装置600のうち、一部の記憶領域を使用してAES暗号の演算を実行する。記憶装置600内に必要な記憶領域の内訳は以下のとおりである。
・使用する記憶領域全体のサイズ=49バイト
・入力となるメッセージm=16バイト
・入力となる鍵k=16バイト
・作業領域w=16バイト
・ラウンド定数rc=1バイト
なお、演算結果である暗号文はメッセージmに上書きされる。
図21の暗号化装置400の使用方法は以下のようになる。
・記憶装置600に入力データ(メッセージm(16バイト)および鍵k(16バイト)を書き込む
・暗号化装置400を実行開始する
・暗号化装置400の実行終了を待つ
・演算結果は記憶装置600に書き込まれているので、演算結果を記憶装置600から読み出す
ここで、本実施形態によるAES暗号方式の暗号化処理の擬似コードについて説明する。最初に、簡略化した擬似コード(簡易版擬似コード)を記載する。
//m=AES(m,k)
//入力 m:メッセージ、k:鍵
round=0
rc=0x01
m=AK(m,k)//AddRoundKey
while(1){
k=KS(k)//KeyExpansion
m=SB(m)//SubBytes
w=SR(m)//ShiftRows
round=round+1
if(round==10) break;//exit while loop
m=MC(w)//MixColumns
m=AK(m,k)//AddRoundKey
rc=xtime(rc)//rc update

m=AK(w,k)//AddRoundKey
擬似コード内の各関数は、それぞれAES暗号で定められる関数と以下のように対応する。各AES暗号で定められる関数は各々FIPS197(Federal Information Processing Standards Publication 197, the National Institute of Standards and Technology (NIST))で定義される関数である。
AK:AddRoundKey
KS:KeyExpansion
MC:MixColumns
SB:SubBytes
SR:ShiftRows
次に、詳細なAES擬似コード(詳細版擬似コード)を記載する。詳細版擬似コードは、上記簡易版擬似コードの各関数(AK、KS、SB、SR、MCなど)を具体化したコ(1)入出力IFを介して暗号化するデータ(メッセージ)を読み出し、記憶装置600に書き込む。
(2)鍵記憶装置700から鍵情報を読み出し、記憶装置600に書き込む。
(3)暗号化装置400に演算を指示する。これにより、演算の処理結果である暗号文が記憶装置600に書き込まれる。
図21は、第3の実施形態にかかる暗号化装置400の構成の一例を示すブロック図である。図21に示すように、暗号化装置400は、暗号化処理部410と、演算部としてのALU(Arithmetic Logic Unit)420と、アキュムレータ430と、を備えている。
暗号化処理部410は、図20で説明した電子機器10の制御回路からの制御信号に従ってAES暗号の暗号化処理の演算を制御し、演算の状態を表すステータス信号を出力する。暗号化処理部410の詳細は後述する。
ALU420は、暗号化処理部410により選択された機能を表す情報(図21の「機能選択」)に従って演算を実行する。ALU420は、必要に応じて、暗号化処理部410により指定されたアドレスのデータに対して演算を実行する。
アキュムレータ430は、ALU420による演算結果を記憶するためのレジスタである。アキュムレータ430に記憶されたデータは、暗号化処理部410からの指示に応じて記憶装置600に書き込まれる。
なお、暗号化装置400は、記憶装置600のうち、一部の記憶領域を使用してAES暗号の演算を実行する。記憶装置600内に必要な記憶領域の内訳は以下のとおりである。
・使用する記憶領域全体のサイズ=49バイト
・入力となるメッセージm=16バイト
・入力となる鍵k=16バイト
・作業領域w=16バイト
・ラウンド定数rc=1バイト
なお、演算結果である暗号文はメッセージmに上書きされる。
図21の暗号化装置400の使用方法は以下のようになる。
・記憶装置600に入力データ(メッセージm(16バイト)および鍵k(16バイト)を書き込む
・暗号化装置400を実行開始する
・暗号化装置400の実行終了を待つ
・演算結果は記憶装置600に書き込まれているので、演算結果を記憶装置600から読み出す
ここで、本実施形態によるAES暗号方式の暗号化処理の擬似コードについて説明する。最初に、簡略化した擬似コード(簡易版擬似コード)を記載する。
//m=AES(m,k)
//入力 m:メッセージ、k:鍵
round=0
rc=0x01
m=AK(m,k)//AddRoundKey
while(1){
k=KS(k)//KeyExpansion
m=SB(m)//SubBytes
w=SR(m)//ShiftRows
round=round+1
if(round==10) break;//exit while loop
m=MC(w)//MixColumns
m=AK(m,k)//AddRoundKey
rc=xtime(rc)//rc update

m=AK(w,k)//AddRoundKey
擬似コード内の各関数は、それぞれAES暗号で定められる関数と以下のように対応する。各AES暗号で定められる関数は各々FIPS197(Federal Information Processing Standards Publication 197, the National Institute of Standards and Technology (NIST))で定義される関数である。
AK:AddRoundKey
KS:KeyExpansion
MC:MixColumns
SB:SubBytes
SR:ShiftRows
次に、詳細なAES擬似コード(詳細版擬似コード)を記載する。詳細版擬似コードは、上記簡易版擬似コードの各関数(AK、KS、SB、SR、MCなど)を具体化したコ このようにして、本実施形態では、5種類の命令であるsbox、xtime、xor、ldおよびstでAESを実現している。
図23は、第3の実施形態にかかるALU420の構成の一例を示すブロック図である。図23に示すように、ALU420は、XTIME421と、SBOX422と、XOR423と、セレクタ424と、を備えている。XTIME421、SBOX422、および、XOR423は、それぞれ上述の3種類の演算処理(sbox、xtime、および、xor)を実行する回路である。セレクタ424は、記憶装置600から読み出したデータ(LD)、XTIME421の演算結果、SBOX422の演算結果、および、XOR423の演算結果のいずれかを選択して出力する。このようにして、ALU420は、暗号化処理部410による機能選択の指定に従い、ld、xtime、sbox、および、xorの4つの演算処理のいずれかを実行する。
次に、5種類の命令が実行されたときの暗号化装置400内の処理の流れについて図24から図27を用いて説明する。図24は、ld命令が実行されたときの暗号化装置400内の処理例を示す図である。
ld命令では、暗号化処理部410からアドレスが指定(出力)され、記憶装置600の指定されたアドレスのデータが読み出され、ALU420を経由してアキュムレータ430に書き込まれる。図24の「acc−we」はアキュムレータ430への書き込みを指示する信号を表す。図24の「read」は記憶装置600からのデータの読み出しを指示する信号を表す。
図25は、st命令が実行されたときの暗号化装置400内の処理例を示す図である。st命令では、暗号化処理部410からアドレスが指定(出力)され、アキュムレータ430に記憶されているデータが、記憶装置600の指定されたアドレスに書き込まれる。アキュムレータ430に記憶されているデータは変更しないことを示すため、図24ではacc−we信号に否定を示す上線が付されている。「write」は記憶装置600へのデータの書き込みを指示する信号を表す。
図26は、xor命令が実行されたときの暗号化装置400内の処理例を示す図である。xor命令では、暗号化処理部410からアドレスが指定(出力)され、アキュムレータ430に記憶されているデータと、記憶装置600の指定されたアドレスのデータとの排他的論理和の演算結果が、アキュムレータ430に書き込まれる。
図27は、sboxおよびxtime命令が実行されたときの暗号化装置400内の処理例を示す図である。sboxおよびxtimeでは用いる関数が異なるが、動作は同様であるため同じ図にまとめて記載している。sbox命令(xtime命令)では、アキュムレータ430に記憶されているデータに、SBOX関数(XTIME関数)を適用した結果がアキュムレータ430に書き戻される。
図28は、第3の実施形態にかかる暗号化処理部410の構成の一例を示すブロック図である。図28に示すように、暗号化処理部410は、制御部411と、ラウンドカウンタ412と、インデックスレジスタ413と、アドレス生成部414と、を備えている。
制御部411は、電子機器10の制御回路(図示せず)などの外部装置からの制御信号に従い、各種制御信号を出力して、AES暗号化方式に応じて定められた手順に従って暗号化処理の演算を制御する。図28の点線は、制御部411から各部に制御信号を出力することを表している。この制御信号の詳細については後述する。
制御部411には、例えば、AES暗号の演算をリセットする信号、および、演算の開始を指示する信号などの制御信号が入力される。制御部411は、処理状態を表すステータス信号(ビジー、完了など)を、例えば制御信号の入力元に出力する。
ALU機能選択は、ALU420に対していずれの機能(演算)を実行するかを示す信号を表す。Acc書き込みは、アキュムレータ430にデータを書き込むか否かを指定するための信号を表す。メモリR/Wは、記憶装置600からデータを読み出すか(R)、記憶装置600にデータを書き込むか(W)を指定するための信号を表す。
ラウンドカウンタ412は、AES暗号のラウンド数(round)を数えるためのカウンタである。ラウンドカウンタ412は、例えばフリップフロップにより構成できる。 インデックスレジスタ413は、アドレス生成部414がアドレスを生成するために用いるカウンタ値(ix)を記憶するレジスタである。本実施形態では、インデックスレジスタ413は、4ビットのカウンタ値を記憶する。
アドレス生成部414は、制御部411が出力する2ビットの値(ページ)と、インデックスレジスタ413の4ビットのカウンタ値ixとから、6ビットのアドレスを生成して出力する。
ここで、本実施形態の暗号化装置400で使用する記憶装置600内の記憶領域のアドレス空間について説明する。図25は、第3の実施形態で用いるアドレス空間の一例を示す図である。
図25では、メッセージm、鍵k、作業領域wおよびラウンド定数rcの順に連続するアドレスを用いる例が示されている。アドレスの並び順はこれに限られるものではない。例えば、16バイトのデータ(メッセージm、鍵k)または16バイトの作業領域wの各バイトのアドレスが連続していれば、各データまたは作業領域のアドレスは連続していなくてもよい。
図29は、第3の実施形態にかかるアドレス生成部414の構成の一例を示すブロック図である。図29に示すように、アドレス生成部414は、kp801と、sr802と、ofs1(811)(以下、単にofs1という)と、ofs2(812)(以下、単にofs2という)と、ofs3(813)(以下、単にofs3という)と、セレクタ821と、を備えている。
kp801、sr802、ofs1、ofs2、および、ofs3は、それぞれインデックスレジスタから入力される4ビットのカウンタ値ixを変換する回路である。図30は、図29の各回路に相当する関数の入出力の一例を示す図である。
例えばkp(x)は、カウンタ値ix(図30の表のxに相当)が「0」の場合、「13」を出力する関数である。関数kp(x)は、鍵拡大処理(KeyExpansion)でのデータのアクセス順が13,14,15,12,0,1,2,3,4,5,6,7,8,9,10,11であることを反映している。sr(x)は、16バイトの並び替えを行うShiftRowsの処理内容を反映している。
ofs1(x)〜ofs3(x)は、xの下位2ビットに、2ビットの1〜3を加算するが、xの上位2ビットは不変となる関数である。
セレクタ821は、制御部411からの指示(図28の点線)に従い、0、カウント値ix、kp801の出力、sr802の出力、ofs1の出力、ofs2の出力、および、ofs3の出力、のいずれかを選択して出力する。
図29の右上に示すように、アドレス生成部414は、制御部411から入力される2ビットのページと、セレクタ821から出力される4ビットの値(オフセットに相当)とを結合したアドレスを出力する。このように、ページがアドレスの上位2ビットになり、例えば、インデックスレジスタを各関数で変形した結果がアドレスの下位4ビットになる。ページは、演算処理に用いられるデータの種類および演算処理に用いられる記憶装置600内の作業領域を特定するための特定情報として用いられる。例えば、ページは、メッセージm、鍵k、作業領域w、および、ラウンド定数rcの4つを特定するために4値をとる。このため、本実施形態ではページを2ビットで表している。
次に、このように構成された第3の実施形態にかかる暗号化装置400による暗号化処理について図31を用いて説明する。図31は、第3の実施形態における暗号化処理の全体の流れを示すフローチャートである。図31は、上述のAESの簡易版擬似コードをフローチャートとして記載した図に相当する。
まず、ラウンド数のカウンタ(round)およびラウンド定数(rc)がそれぞれ0および1に初期化される(ステップS8001)。次に、AddRoundKeyが実行され、メッセージmが更新される(ステップS8002)。次に、KeyExpansion(ステップS8003)、SubBytes(ステップS8004)、ShiftRows(ステップS8005)が順次実行され、ラウンド数に1加算される(ステップS8006)。
ラウンド数が10に達しない場合(ステップS8007:No)、さらにMixColumns(ステップS8008)、AddRoundKey(ステップS8009)、およびxtime(ステップS8010)が実行される。その後、ステップS8003に戻り処理が繰り返される。ラウンド数が10に達した場合(ステップS8007:Yes)、AddRoundKeyが実行され(ステップS8011)、暗号化処理が終了する。
SR(ShiftRows)は16バイトの並び替えだが、上書きすると元の値が消えるので、別な領域である作業領域wにコピーしながら並び替えている(ステップS8005)。この処理(ステップS8005)をC言語で記載すると次のようなコードになる。
for(i=0; i<16; i++){
w[i]=m[sr[i]];

上記コード内の変数srは、
int sr[16]={0,5,10,15,4,9,14,3,8,13,2,7,12,1,6,11};
であるため、上記コードは、
w[0]=m[0]
w[1]=m[5]
w[2]=m[10]
w[3]=m[15]
w[4]=m[4]
w[5]=m[9]
w[6]=m[14]
w[7]=m[3]
w[8]=m[8]
w[9]=m[13]
w[10]=m[2]
w[11]=m[7]
w[12]=m[12]
w[13]=m[1]
w[14]=m[6]
w[15]=m[11]
という代入をしているのと同じことになる。
1変数だけで逐次的に実行しようとすると、これから先に必要な値が上書きされて消されてしまうので、別な変数にコピーしながら順番を入れ替えている。
MC(MixColumns)も、値が上書される問題が生じるので、別の変数にコピーしながら変換している(ステップS8008)。
AES暗号の規格(FIPS−197)では、
m[0]=xtime(w[0])^xtime(w[1])^w[1]^w[2]^w[3]
のように計算することが定められている。一方、xtime(a)^xtime(b)=xtime(a^b)であるため、次のようにxtimeをまとめて計算することもできる。
m[0]=xtime(w[0]^w[1])^w[1]^w[2]^w[3]
MC全体では以下のような計算をすることになる。
m[0]=xtime(w[0]^w[1])^w[1]^w[2]^w[3]
m[1]=xtime(w[1]^w[2])^w[2]^w[3]^w[0]
m[2]=xtime(w[2]^w[3])^w[3]^w[0]^w[1]
m[3]=xtime(w[3]^w[0])^w[0]^w[1]^w[2]
m[4]=xtime(w[4]^w[5])^w[5]^w[6]^w[7]
m[5]=xtime(w[5]^w[6])^w[6]^w[7]^w[4]
m[6]=xtime(w[6]^w[7])^w[7]^w[4]^w[5]
m[7]=xtime(w[7]^w[4])^w[4]^w[5]^w[6]
m[8]=xtime(w[8]^w[9])^w[9]^w[10]^w[11]
m[9]=xtime(w[9]^w[10])^w[10]^w[11]^w[8]
m[10]=xtime(w[10]^w[11])^w[11]^w[8]^w[9]
m[11]=xtime(w[11]^w[8])^w[8]^w[9]^w[10]
m[12]=xtime(w[12]^w[13])^w[13]^w[14]^w[15]
m[13]=xtime(w[13]^w[14])^w[14]^w[15]^w[12]
m[14]=xtime(w[14]^w[15])^w[15]^w[12]^w[13]
m[15]=xtime(w[15]^w[12])^w[12]^w[13]^w[14]
添え字の並びを考慮し、本実施形態では以下のようにxtimeを計算する。m[i]=xtime(w[i]^w[ofs1(i)])^w[ofs1(i)]^w[ofs2(i)]^w[ofs3(i)]
図32は、詳細版擬似コードを状態遷移表として書き直した図である。図33は、状態遷移表の各項目の読み方を表す図である。codeは、5種類の命令のうち各状態で実行される機能(命令)のコードである。readは、記憶装置600からデータを読み出すときに1が設定され、読み出さない場合は0が設定される。writeは、記憶装置600にデータを書き込むときに1が設定され、書き込まない場合は0が設定される。funcは、LD、XTIME、SBOX、XOR、および、任意(ALU420による演算は実行しない)のいずれかが設定される。acc−weは、アキュムレータ430にデータを書き込むときに1が設定され、書き込まない場合は0が設定される。
例えば、state=S01では、ld m[i]というコードを実行する。その際に、read信号を1に設定し、write信号を0に設定し、funcをLDに設定し、acc_weを1に設定する。またアドレス生成部414の出力はページがPMでoffsetがixである。ix欄とround欄は空白なので何も実行されない。制御欄は「↓」なので次の状態であるS02に遷移する。
S03ではix欄がix+1、制御はif(ix!=15) S01となっている。これはixの値を1増やしてix+1に更新することと、ixの更新前の値が15でない場合はS01へ遷移することを意味している。またixが15である場合は次の状態S04へ遷移する。図32に示されるように、ixは、各演算処理の対象となるデータを変更するタイミングで更新される。
(第3の実施形態の変形例)
図34は、第3の実施形態の変形例にかかるアドレス生成部414−2の構成の一例を示すブロック図である。図34に示すように、アドレス生成部414−2は、kp801と、sr802と、ofs810と、セレクタ821−2と、を備えている。
本変形例では、オフセットを出力する3つの回路であるofs1、ofs2、および、ofs3の代わりに、1つのofs810を備えている。ofs810は、カウンタ値ixを3つの関数ofs(x,1)、ofs(x,2)、ofs(x,3)のいずれかを用いて変換する回路である。3つの関数ofs(x,1)、ofs(x,2)、ofs(x,3)のいずれを用いるかを指定する信号(図34の「1〜3」)は、例えば制御部411から指定する。図35は、図34の各回路に相当する関数の入出力の一例を示す図である。
セレクタ821−2は、制御部411からの指示に従い、0、カウント値ix、kp801の出力、sr802の出力、ofs810の出力、のいずれかを選択して出力する。このような構成でも、図29と同様の機能を実現できる。
このように、第3の実施形態にかかる演算装置(暗号化装置)では、装置外部の記憶装置を利用し、演算で用いるデータを当該記憶装置に記憶するように制御する。これにより、AES演算回路内に記憶装置を備える必要がなくなり、さらなる小型化が可能となる。また、本実施形態では、ALU内には暗号化で用いる演算処理を実行する最小限の回路(XTIME、SBOX、XOR)のみを備えるため、この点でも装置の小型化が可能となっている。また、本実施形態では、暗号化で用いる各演算処理を所定の回数単位で実行している。例えばインデックスレジスタのカウント値が15に達するごとに、すなわち、16回単位で各演算を実行している。このため、回数が不一致となる場合に必要となる制御回路が不要になり、さらに小型化が実現できる。
(第4の実施形態)
第4の実施形態では、AES暗号方式の復号装置に演算装置を適用した例を説明する。図36は、第4の実施形態にかかる復号装置400−2の構成の一例を示すブロック図である。図36に示すように、復号装置400−2は、復号処理部410−2と、演算部としてのALU(Arithmetic Logic Unit)420−2と、アキュムレータ430と、を備えている。
復号処理部410−2は、AES暗号の復号処理の演算を制御し、演算の状態を表すステータス信号を出力する。アキュムレータ430は、ALU420による演算結果を記憶するためのレジスタである。
ALU420−2は、復号処理部410−2により選択された機能を表す情報に従って演算を実行する。ALU420−2は、必要に応じて、復号処理部410−2により指定されたアドレスのデータに対して演算を実行する。
本実施形態によるAES暗号方式の復号処理の擬似コードについて説明する。以下に、復号処理を簡略化した擬似コード(簡易版擬似コード)を記載する。
//m=invAES(m,k)
//入力 m:暗号文 k:復号鍵
round=0;
rc=0x36;
m=AK(m,k)//AddRoundKey
while(1){
k=iKS(k)//invKeyExpansion
m=iSB(m)//invSubBytes
w=iSR(m)//invShiftRows
round=round+1
if(round==10) break;//exit while loop
w=AK(w,k)//AddRoundKey
m=iMC(w)//invMixColumns
rc=ixtime(rc)//rc update

m=AK(w,k)//AddRoundKey
暗号化処理で用いる関数の先頭に「i」が付加された関数は、暗号化処理で用いる関数の逆関数であることを意味する。例えば、iSBはSBの逆関数である。
iKSはsboxとxorにより作成できる。iSBはsboxの逆関数(isbox)が必要である。iMCはxtimeにより作成できる。ixtimeはxtimeにより作成できる。従って、ALU420−2は、以下の5つ演算を実行できる回路を備えていればよい。
(1)LD
(2)XTIME
(3)SBOX
(4)ISBOX
(5)XOR
図37は、このように構成される第4の実施形態にかかるALU420−2の構成の一例を示すブロック図である。図37に示すように、ALU420−2は、XTIME421と、SBOX422と、XOR423と、セレクタ424−2と、ISBOX425と、を備えている。ISBOX425は、SBOX422の逆関数に相当する演算を実行する回路である。
復号処理部410−2は、上記擬似コードの復号処理を実現するようにALU420−2の演算を制御する。復号処理部410−2は、暗号化処理部410と同様の制御部411、ラウンドカウンタ412、インデックスレジスタ413、および、アドレス生成部414を備える。復号処理部410−2は、暗号化処理部410が暗号化処理を実行するのと同様の手法で、AES暗号の復号処理を実行すればよい。なお、図37に示すALU420−2の構成で暗号化処理を行うことも可能である。この場合、図23で説明したような動作を行い、ISBOXの機能選択の指定はなされない。
次に、このように構成された第4の実施形態にかかる復号装置400−2による復号処理について図38を用いて説明する。図38は、第4の実施形態における復号処理の全体の流れを示すフローチャートである。
まず、ラウンド数のカウンタ(round)およびラウンド定数(rc)がそれぞれ0および0x36(16進数の36)に初期化される(ステップS9001)。次に、逆AddRoundKey(iAK)が実行され、メッセージmが更新される(ステップS9002)。次に、逆KeyExpansion(iKS)(ステップS9003)、逆SubBytes(iSB)(ステップS9004)、逆ShiftRows(iSR)(ステップS9005)が順次実行され、ラウンド数に1加算される(ステップS9006)。
ラウンド数が10に達しない場合(ステップS9007:No)、さらにAddRoundKey(ステップS9008)、逆MixColumns(iMC)(ステップS9009)、および逆xtime(ixtime)(ステップS9010)が実行される。その後、ステップS203に戻り処理が繰り返される。ラウンド数が10に達した場合(ステップS9007:Yes)、AddRoundKeyが実行され(ステップS9011)、復号処理が終了する。
以上説明したとおり、第1および第4の実施形態によれば、演算処理に用いるデータを記憶する記憶装置を演算装置内に備える必要がなくなり装置の小型化が実現できる。例えば、メモリカード内にAES演算回路を備える場合に、さらなるAES演算回路の小型化が実現できる。
また、上記実施形態は、以下の態様を含む。
(1) データの種類ごとにN個の前記データを連続するアドレスに記憶する記憶装置と接続され、予め定められた暗号方式の演算を実行する演算装置であって、
前記暗号方式で用いられる複数の演算処理を実行する演算部と、
前記演算処理で用いられる種類のN個の前記データのうち先頭のデータのアドレスの上位ビットと、指定に応じて更新されるカウンタ値に応じた値であって前記先頭のデータのアドレスを基準とするオフセットと、に基づいて、前記演算処理で用いられるデータを記憶する前記記憶装置のアドレスを生成するアドレス生成部と、
前記暗号方式で定められる順序で前記演算処理を実行するように前記演算部を制御するとともに、前記演算処理で用いられるデータの種類を変更するタイミング、および、前記演算処理で用いられるデータを変更するタイミングで前記カウンタ値の更新を指定する制御部と、
を備える演算装置。
(2) (1)の態様に係る演算装置において、前記暗号方式は、AES(Advanced Encryption Standard)暗号方式である。
(3) (2)の態様に係る演算装置において、複数の前記演算処理は、前記AES暗号方式で定められるsbox、xtime、及びxorと、前記記憶装置から前記データを読み出すロード処理である。
(4) (2)の態様に係る演算装置において、複数の前記演算処理は、前記AES暗号方式で定められるsbox、isbox、xtime、及びxorと、前記記憶装置から前記データを読み出すロード処理である。
(第5の実施形態)
次に、第5の実施形態に係る半導体装置の構成について、図36を用いて説明する。図36は、本実施形態に係るメモリシステムのブロック図である。第5の実施形態では、上述した各実施形態を用いた半導体装置をメモリカードで適用する例について説明する。
図36に示すように、メモリシステムであるメモリカード300は、コネクタ13を介してホスト機器200に接続される。ホスト機器200は、コネクタ13を介して接続されるメモリカード300に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード300は、ホスト機器200に接続された時に電源供給を受けて動作し、ホスト機器200からのアクセスに応じた処理を行う。
メモリカード300は、例えばホスト機器200に装着されて使用され、ホスト機器200の外部記憶装置として用いられるSDメモリカードである。ホスト機器200としては、画像データまたは音楽データなどの各種データを処理するパーソナルコンピュータやデジタルカメラ等を含む情報処理装置が挙げられる。
なお、本実施形態では、このメモリカード300が適用されるホスト機器200と含めてメモリシステムとして構成されていてもよいし、カードの形態としてではなく、フラッシュメモリとこのフラッシュメモリを制御するコントローラがホスト機器200に組み込まれてメモリシステムを構成してもよい。なお、ホスト機器200としては、上述で挙げたものの他に、PDA、電子ブック、デジタルビデオ、携帯電話などの電子機器類も考えられる。
メモリカード300は、ホスト機器200とコネクタ13を介して情報の授受を行う。メモリカード300は、NAND型フラッシュメモリチップ(単にNAND型フラッシュメモリ、フラッシュメモリ、またはNANDチップ等とも呼ぶ)であるメモリ部(不揮発性の半導体記憶部)11、メモリ部11を制御するメモリコントローラ(カードコントローラ)12、および複数の信号ピン(ピン1乃至ピン9)であるコネクタ13を備えている。
コネクタ13は、メモリコントローラ12と電気的に接続されている。コネクタ13におけるピン1乃至ピン9に対する信号の割り当ては、例えば図37に示すようになっている。図37は、ピン1乃至ピン9と、それらに割り当てられた信号とを示す表である。なお、図37において、SDモード(1ビット、4ビット)およびSPIモードとは、SDメモリカードの規格で規定されているデータ転送の動作モードである。なお、メモリカード300の転送モードは、転送クロック周波数等により、最大25MHzまでサポートしているノーマルスピードモード(「NSM」とも呼ぶ)と、最大50MHzまでサポートしているハイスピードモード(「HSM」とも呼ぶ)に加えて、最大104MHzまでサポートしているウルトラハイスピードモード(「UHSM」とも呼ぶ)等もある。
データDAT0、DAT1、DAT2、DAT3はそれぞれ、ピン7、ピン8、ピン9、ピン1に割り当てられている。また、ピン1は、カード検出信号CDにも割り当てられている。コマンドCMDと、このコマンドCMDに対するメモリカード300の応答信号であるレスポンスRESは、ピン2に割り当てられている。クロック信号CLKは、ピン5に割り当てられている。電源電圧VDDはピン4に、接地電圧VSS1はピン3に、接地電圧VSS2はピン6に割り当てられている。
また、メモリカード300は、ホスト機器200に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器200に設けられたホストコントローラ(図示せず)は、これらピン1乃至ピン9を介してメモリカード300内のメモリコントローラ12と各種信号およびデータを通信する。例えば、メモリカード300にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、ピン2を介してメモリコントローラ12にシリアルな信号として転送する。このとき、メモリコントローラ12は、ピン5に供給されているクロック信号に応答して、ピン2に与えられる書き込みコマンドを取り込む。
4ビットバス幅単位でデータ転送を行うSDモード(SD4ビットモード)では、データ用の4つのピン1、ピン7、ピン8、ピン9がすべてデータ転送に使用される。一方、1ビットバス幅単位でデータ転送を行うSDモード(SD1ビットモード)では、ピン7のみがデータ転送に使用され、データ用のピン8、ピン9は使用されない。また、ピン1は、例えばメモリカード300からホスト機器200への非同期割り込み等のために使用される規定となっている。
SPIモードは、1ビットバス幅の転送モードであり、ピン7がメモリカード300からホスト機器200へのデータ信号線(DATAOUT)に用いられる。ピン2は、ホスト機器200からメモリカード300へのデータ信号線(DATAIN)に用いられる。ピン8、ピン9は、使用されない。また、SPIモードでは、ピン1がホスト機器200からメモリカード300へのチップセレクト信号CSの送信に用いられる規定となっている。
なお、SDモードを使用するか、SPIモードを使用するかは、メモリカード300の初期化時に決定される。また、SDモードの1ビットモードと4ビットモードとは、ホストからのコマンド(SET BUS WIDTH)によって選択される。
ここで、前述したように、書き込みコマンドは、ピン2のみを利用してメモリコントローラ12にシリアルに入力される。コマンドの入力に割り当てられているピン2は、図37に示すように、ピン1と接地電位Vss用のピン3との間に配置されている。つまり、コネクタ13は、ホスト機器200内のホストコントローラとメモリカード300とが通信するのに使用される。
これに対し、メモリ部11とメモリコントローラ12との間の通信は、NAND型フラッシュメモリ用のメモリインタフェース部(以下、単にNANDバスまたはNANDインタフェースと呼ぶことがある)21によって行われる。したがって、ここでは図示しないが、メモリ部11とメモリコントローラ12とは例えば8ビットの入出力(I/O)線により接続されている。
また、メモリインタフェース部21では、メモリ部11に対するコマンドとデータが同じI/O線を共用して通信されている。このように、ホスト機器200内のホストコントローラとメモリカード300とが通信するインタフェース(コネクタ13)と、メモリ部11とメモリコントローラ12とが通信するインタフェース(NANDバス21)とは異なる。
次に、図36に示すメモリカード300の備えるメモリコントローラの内部構成について図38を用いて説明する。図38はメモリカード300のブロック図である。
メモリ部11は、不揮発性の半導体メモリであり、複数のNANDチップ(上述した各実施形態に対応するNANDチップ)により構成されている。ホスト機器200から送信されたデータなどは、このメモリ部11に記憶される。また、制御プログラムであるファームウェア(システム情報)等も記憶されていても良い。
また、コネクタ13は、バス14を介してメモリコントローラ12に接続されている。バス14は、CLKライン、CMD/RESライン、DAT0ライン、DAT1ライン、DAT2ライン、CD/DAT3ライン、VDDライン、VSS1ライン、およびVSS2ラインを含む。メモリコントローラ12は、例えば8ビットバス幅のバスを介してメモリ部11と接続されている。
メモリコントローラ12は、メモリ部11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。メモリコントローラ12は、外部インタフェース部15と、コマンド制御部16と、データ制御部17と、MPU(Micro Processing Unit)18と、ROM(Read Only Memory)19と、RAM(Random Access Memory)20と、メモリインタフェース部21と、タイマー(計測部)22とを備えている。
外部インタフェース部15は、メモリコントローラ12とホスト機器200との間のインタフェース処理を行う。具体的には、外部インタフェース部15は、コネクタ13を介してホスト機器200と接続されており、MPU(制御部)18の制御のもと、所定のプロトコルに従ってコマンドあるいは各種データ等の送受信を行う機能ブロックである。
コマンド制御部16は、ホスト機器200から送信されるコマンドCMDを受け取り、このコマンドCMDを解釈する。また、コマンド制御部16は、コマンドCMDに対する応答信号であるレスポンスRESを生成し、このレスポンスRESをホスト機器200に送信する。
データ制御部17は、ホスト機器200から送信されるコマンドCMDに基づいて、データの送受信を行う。また、データ制御部17は、メモリカード300の動作状態などを示すステータスデータ(STATUS)を生成し、このステータスデータをホスト機器200に送信する。
MPU18は、メモリカード300全体の動作を制御するものである。MPU18は、例えばメモリカード300が電源供給を受けたときに、ROM19やメモリ部11に格納されているファームウェア(システム情報)をRAM20に読み出して所定の処理を実行することにより、各種のテーブルをRAM20に作成する。また、MPU18は、ホスト機器200から書き込みコマンド、読み出しコマンド、あるいは消去コマンド等を受け取り、メモリ部11に対して所定の処理を実行したり、バッファを通じたデータ転送処理を制御したりする。より具体的には、例えばデータの書き込みの際には、書き込みコマンドを発行する。書き込みコマンドは、例えばNANDインタフェースで規定されている“80H”や“10H”等である。また、MPU18は、タイマー22の制御を行うタイマー制御部(計測制御部)18aを有している。このタイマー制御部18aは、タイマー22に計測時間を設定したり、タイマー22からの時間計測完了の信号によってMPU18やメモリインタフェース部21の制御を行ったりすることができる。具体的には、タイマー制御部18aは、メモリインタフェース部21の制御を行い、MPU18の発行した書き込みコマンドの転送やデータの入力(データイン)の実行を制御する(遅らせる)。なお、タイマー制御部18aは、計測完了の信号をMPU18に供給しても良い。また、このタイマー制御部18aは、MPU18の外に設けられていても良い。
ROM19は、MPU18により実行されるファームウェアなどを格納するメモリである。RAM20は、MPU18の作業エリアとして使用され、ファームウェアや各種のテーブル(表)を記憶するメモリである。メモリインタフェース部21は、メモリコントローラ12とメモリ部11との間のインタフェース処理を行う機能ブロックである。
また、メモリインタフェース部21は、例えばタイマー制御部18aからの時間計測完了の信号等を受けて、メモリ部11へのMPU18の発行した書き込みコマンドの転送やデータの入力(データイン)を行う。なお、図38ではMPU18とメモリインタフェース部21とを別々の回路ブロックとして図示しているが、例えばMPU18における書き込みコマンドを発行する機能がメモリインタフェース部21に含まれていても良い。
タイマー22は、1CLK(クロック)の立ち上がりから立下りまでを最小単位として時間の計測(カウント)を行う。また、タイマー22は、タイマー制御部18aに、時間の計測が完了すると、その旨を通知する。
また、メモリコントローラ12には、図示しないバッファが設けられており、ホスト機器200から送られてくるデータをメモリ部11へ書き込む際に、一定量のデータ(例えば、1ページ分)を一時的に記憶したり、メモリ部11から読み出されるデータをホスト機器200へ送り出す際に、一定量のデータを一時的に記憶したりすることができる。
次に、図39を用いて、メモリ部11の構成について概略的に説明する。図39は、メモリ部11のブロック図である。図示するように、メモリ部11は、複数(例えばチップ0〜チップn−1のn個)のNANDチップ(上述した各実施形態に対応するNANDチップ)11aを有している。
上述する実施形態によれば、第〜第の実施形態に係るNANDチップは、メモリカード等にも搭載することが可能であることがわかる。
尚、上述した各実施形態は、それぞれ組み合わせて実施することが可能である。特に、第1〜第4の実施形態を適宜組み合わせて用いると、AES暗号化演算回路の面積を更に抑制することができる。例えば、NANDチップ100の面積に対して、AES暗号化演算回路の占める割合は数%程度で済ませることが可能となる。
また、上述した各実施形態では、AES暗号回路122の変わりに、各種暗号装置、ECC、セキュリティシステムなどの演算装置を搭載しても良い。
また、上述した第5の実施形態では、SDカードを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した各実施形態と同様の作用効果を奏することができる。また、メモリセルアレイ130はNAND型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
10…電子機器、 11…メモリ部、 11a…NANDチップ、
12…メモリコントローラ、 13…コネクタ、 14…バス
15…外部インタフェース部、 16…コマンド制御部、 17…データ制御部
18…MPU、 18a…タイマー制御部、 19…ROM、 20…RAM
21…メモリインタフェース部、 22…タイマー、 100…NANDチップ
102…入出力端子、 104…制御信号入力端子、 110…入出力制御回路
110a…データ入出力バッファ、 111…コマンドレジスタ、
112…一時レジスタ、 113…データチェック回路、 114…バス制御回路
114a…インバータ、 114b…インバータ、 114c…インバータ
115…アドレスレジスタ、 116…ステータスレジスタ、
120…ロジック制御回路、 121…AES制御回路、 122…AES暗号回路
122a…暗号化処理部、 122b…ALU、 122c…アキュムレータ
123…アドレス制御回路、 124…バッファ読み出しシーケンス
125…バッファデータ書込みシーケンス、
126…メモリ読み出しシーケンス、 130…メモリセルアレイ
131…センスアンプ、 132…演算部、 133…ページバッファ
133s…ワーキング領域、 133t…鍵記憶領域、 134…カラムデコーダ
135…カラムバッファ、 136…ロウアドレスデコーダ
137…ロウアドレスバッファデコーダ、 140…昇圧回路
200…ホスト機器、 300…メモリカード、 400…暗号化装置
400…復号装置、 410…暗号化処理部、 411…制御部
412…ラウンドカウンタ、 413…インデックスレジスタ、
414…アドレス生成部、 420…ALU、 421…XTIME
422…SBOX、 423…XOR、 424…セレクタ
425…ISBOX、 430…アキュムレータ、
500…入出力インタフェース、 600…記憶装置、 700…鍵記憶装置
821…セレクタ。

Claims (7)

  1. 予め定められた暗号方式の演算を実行する暗号回路と、
    予め前記演算に用いる相補型のデータを格納しているメモリセルアレイと、
    前記メモリセルアレイから読み出された前記データを格納する第1の領域、及び前記演算を実行する際に用いられる第2の領域を備えるページバッファと、
    前記第1の領域からの前記データを格納し、格納した前記データを前記第2の領域に供給するレジスタと、
    前記データを前記レジスタに格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタに前記データを格納する前記検査回路と、
    前記データを前記メモリセルアレイから前記第1の領域に読み出す制御、及び前記データを前記第1の領域から前記第2の領域に読み出す制御を行う制御回路と、
    前記制御回路から供給される信号に基づいて、ページバッファまたはメモリセルアレイのアドレスを指定するアドレス制御回路と、
    を備え、
    前記制御回路は、前記アドレス制御回路を制御することで、前記データを前記第1の領域から前記第2の領域に供給し、
    前記検査回路は前記データにエラーがあると判定した場合に、その旨を前記アドレス制御回路に通知し、
    前記アドレス制御回路は、前記通知を受信すると、前記ページバッファの前記データと同一内容のデータが格納されている別のアドレスを指定し、
    前記検査回路は、前記別のアドレスのデータのエラーの有無の判定を行うことを特徴とする不揮発性半導体記憶装置。
  2. 予め定められた暗号方式の演算を実行する暗号回路と、
    予め前記演算に用いるデータを格納しているメモリセルアレイと、
    前記メモリセルアレイから読み出された前記データを格納する第1の領域、及び前記演算を実行する際に用いられる第2の領域を備えるページバッファと、
    前記第1の領域からの前記データを格納し、格納した前記データを前記第2の領域に供給するレジスタと、
    を備えることを特徴とする不揮発性半導体記憶装置。
  3. 前記データを前記レジスタに格納する際に、前記データのエラーの有無を判定し、前記データにエラーが無いと判定した場合は、前記レジスタに前記データを格納する前記検査回路を更に備えることを特徴とする請求項2に記載の不揮発性半導体記憶装置。
  4. 前記データを前記メモリセルアレイから前記第1の領域に読み出す制御、及び前記データを前記第1の領域から前記第2の領域に読み出す制御を行う制御回路と、
    前記制御回路から供給される信号に基づいて、ページバッファまたはメモリセルアレイのアドレスを指定するアドレス制御回路と、を更に備え、
    前記制御回路は、前記アドレス制御回路を制御することで、前記データを前記第1の領域から前記第2の領域に供給し、
    前記検査回路は前記データにエラーがあると判定した場合に、その旨を前記アドレス制御回路に通知し、
    前記アドレス制御回路は、前記通知を受信すると、前記ページバッファの前記データと同一内容のデータが格納されている別のアドレスを指定し、
    前記検査回路は、前記別のアドレスのデータのエラーの有無の判定を行うことを特徴とする請求項3に記載の不揮発性半導体記憶装置。
  5. 前記データは、相補形式のデータであることを特徴とする請求項2乃至4のいずれか一項に記載の不揮発性半導体記憶装置。
  6. 前記メモリセルアレイ及び前記ページバッファの間に設けられた演算部を更に備え、
    前記演算部は、前記暗号回路が行う演算の一部を行うことを特徴とする請求項2乃至5のいずれか一項に記載の不揮発性半導体記憶装置。
  7. 予め定められた暗号方式の演算を実行する暗号回路と、
    予め前記演算に用いるデータを格納しているメモリセルアレイと、
    前記演算を行うページバッファと、
    を備えることを特徴とする不揮発性半導体記憶装置。
JP2011265273A 2011-12-02 2011-12-02 暗号化演算装置を搭載する不揮発性半導体記憶装置 Active JP5674630B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011265273A JP5674630B2 (ja) 2011-12-02 2011-12-02 暗号化演算装置を搭載する不揮発性半導体記憶装置
US13/603,707 US20130238931A1 (en) 2011-12-02 2012-09-05 Nonvolatile semiconductor storage device having encrypting arithmetic device
US14/592,634 US9317451B2 (en) 2011-12-02 2015-01-08 Nonvolatile semiconductor storage device having encrypting arithmetic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011265273A JP5674630B2 (ja) 2011-12-02 2011-12-02 暗号化演算装置を搭載する不揮発性半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2013118030A true JP2013118030A (ja) 2013-06-13
JP5674630B2 JP5674630B2 (ja) 2015-02-25

Family

ID=48712477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011265273A Active JP5674630B2 (ja) 2011-12-02 2011-12-02 暗号化演算装置を搭載する不揮発性半導体記憶装置

Country Status (2)

Country Link
US (2) US20130238931A1 (ja)
JP (1) JP5674630B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8953783B2 (en) 2011-08-26 2015-02-10 Kabushiki Kaisha Toshiba Arithmetic device
JP2015069602A (ja) * 2013-09-30 2015-04-13 株式会社東芝 メモリ・システム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361254B2 (en) * 2013-08-09 2016-06-07 Nvidia Corporation Memory device formed with a semiconductor interposer
KR102308777B1 (ko) 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
KR20160028228A (ko) * 2014-09-03 2016-03-11 삼성전자주식회사 플래시 메모리 장치, 플래시 메모리 시스템 및 이의 동작방법
US9614666B2 (en) * 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US9502113B2 (en) 2015-01-14 2016-11-22 Flashsilicon Incorporated Configurable non-volatile content addressable memory
TWI553477B (zh) * 2015-06-12 2016-10-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR102627585B1 (ko) * 2016-05-27 2024-01-25 삼성전자주식회사 부 채널 분석 공격을 방지하기 위한 암호화/복호화 연산을 수행하는 전자 회로 및 그것을 포함하는 전자 장치
US10891396B2 (en) * 2016-05-27 2021-01-12 Samsung Electronics Co., Ltd. Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same
US10963295B2 (en) * 2017-09-08 2021-03-30 Oracle International Corporation Hardware accelerated data processing operations for storage data
JP6837419B2 (ja) * 2017-12-05 2021-03-03 ルネサスエレクトロニクス株式会社 半導体記憶装置、及び半導体記憶装置のリフレッシュ方法
KR102408858B1 (ko) 2017-12-19 2022-06-14 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법
US11188685B2 (en) * 2019-02-22 2021-11-30 Google Llc Secure transient buffer management
CN116881472B (zh) * 2023-07-14 2024-04-30 郑州华商科技有限公司 基于图数据库技术的资金穿透与人物关系分析方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11312125A (ja) * 1998-04-28 1999-11-09 New Japan Radio Co Ltd 半導体記憶装置
JP2001297038A (ja) * 2000-04-11 2001-10-26 Toshiba Corp データ記憶装置および記録媒体並びに記録媒体制御方法
JP2002117692A (ja) * 2000-10-03 2002-04-19 Toshiba Corp 不揮発性半導体メモリ装置
JP2007115099A (ja) * 2005-10-21 2007-05-10 Toshiba Corp メモリシステム、及び記録メディア
JP2008192267A (ja) * 2007-02-07 2008-08-21 Megachips Lsi Solutions Inc ビットエラーの予防方法、情報処理装置
JP2010193013A (ja) * 2009-02-16 2010-09-02 Hitachi Ulsi Systems Co Ltd 暗号鍵保護方法及び半導体記憶装置
JP2011003275A (ja) * 2010-10-07 2011-01-06 Renesas Electronics Corp 半導体集積回路
JP2011204298A (ja) * 2010-03-24 2011-10-13 Toshiba Corp 不揮発性半導体メモリ

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002001574A1 (fr) * 2000-06-29 2002-01-03 Fujitsu Limited Memoire a semi-conducteurs
US7610433B2 (en) * 2004-02-05 2009-10-27 Research In Motion Limited Memory controller interface
KR100630535B1 (ko) * 2004-03-23 2006-09-29 에스티마이크로일렉트로닉스 엔.브이. 멀티 레벨 낸드 플래시 메모리 셀의 독출 방법 및 회로
US7529131B2 (en) * 2005-11-11 2009-05-05 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory, method for reading out thereof, and memory card
KR100769782B1 (ko) * 2006-04-20 2007-10-24 주식회사 하이닉스반도체 플래시 메모리 소자
WO2008020389A2 (en) * 2006-08-15 2008-02-21 Koninklijke Philips Electronics N.V. Flash memory access circuit
KR100898673B1 (ko) * 2007-08-08 2009-05-22 주식회사 하이닉스반도체 플래시 메모리 소자 및 그 동작 방법
JP2009141278A (ja) * 2007-12-10 2009-06-25 Toshiba Corp 不揮発性半導体記憶装置
TWI473117B (zh) * 2008-06-04 2015-02-11 A Data Technology Co Ltd 具資料修正功能之快閃記憶體儲存裝置
KR101588293B1 (ko) * 2009-02-17 2016-01-26 삼성전자주식회사 비휘발성 메모리 장치의 읽기 방법
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
JP2011184938A (ja) 2010-03-08 2011-09-22 Kyoei Die Casting Kk 幅木の固定構造および幅木
JP2012088816A (ja) * 2010-10-15 2012-05-10 Toshiba Corp メモリシステム
JP5755970B2 (ja) 2011-08-26 2015-07-29 株式会社東芝 演算装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11312125A (ja) * 1998-04-28 1999-11-09 New Japan Radio Co Ltd 半導体記憶装置
JP2001297038A (ja) * 2000-04-11 2001-10-26 Toshiba Corp データ記憶装置および記録媒体並びに記録媒体制御方法
JP2002117692A (ja) * 2000-10-03 2002-04-19 Toshiba Corp 不揮発性半導体メモリ装置
JP2007115099A (ja) * 2005-10-21 2007-05-10 Toshiba Corp メモリシステム、及び記録メディア
JP2008192267A (ja) * 2007-02-07 2008-08-21 Megachips Lsi Solutions Inc ビットエラーの予防方法、情報処理装置
JP2010193013A (ja) * 2009-02-16 2010-09-02 Hitachi Ulsi Systems Co Ltd 暗号鍵保護方法及び半導体記憶装置
JP2011204298A (ja) * 2010-03-24 2011-10-13 Toshiba Corp 不揮発性半導体メモリ
JP2011003275A (ja) * 2010-10-07 2011-01-06 Renesas Electronics Corp 半導体集積回路

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8953783B2 (en) 2011-08-26 2015-02-10 Kabushiki Kaisha Toshiba Arithmetic device
US9389855B2 (en) 2011-08-26 2016-07-12 Kabushiki Kaisha Toshiba Arithmetic device
JP2015069602A (ja) * 2013-09-30 2015-04-13 株式会社東芝 メモリ・システム

Also Published As

Publication number Publication date
JP5674630B2 (ja) 2015-02-25
US20130238931A1 (en) 2013-09-12
US9317451B2 (en) 2016-04-19
US20150161060A1 (en) 2015-06-11

Similar Documents

Publication Publication Date Title
JP5674630B2 (ja) 暗号化演算装置を搭載する不揮発性半導体記憶装置
JP3979486B2 (ja) 不揮発性記憶装置およびデータ格納方法
US10706940B2 (en) Memory system
US9627079B1 (en) Storage device, memory system having the same, and operating method thereof
CN109857679B (zh) 存储器控制器、存储器系统以及存储器系统的操作方法
KR102238176B1 (ko) 단일 와이어 프로토콜 통신에서의 데이터 통신 방법 및 그에 따른 단일 와이어 프로토콜 통신 시스템
US8392794B2 (en) Non-volatile memory device and data processing method thereof
TWI614755B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
JP2009134849A (ja) フラッシュメモリ素子及びそのプログラム方法
CN104637534B (zh) 半导体存储器件及操作其的方法
US20140237263A1 (en) Nonvolatile semiconductor memory device and memory system using the same
CN111354406B (zh) 存储器装置及其操作方法以及包括其的存储器系统
JP2008108418A (ja) マルチページプログラムの方法、及びこれを行うためのフラッシュメモリ装置
KR20160017983A (ko) 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
TW201826281A (zh) 失敗位元計數器和具有失敗位元計數器的半導體記憶體裝置
CN105097026A (zh) 半导体存储器件
US9607706B1 (en) Semiconductor memory device
WO2024082466A1 (zh) 存储系统及其操作方法、存储器控制器和存储器
US20110208883A1 (en) Memory device and method for operating and controlling the same
US9105346B2 (en) Semiconductor device and method for operating the same
KR102461090B1 (ko) 반도체 메모리 장치
JP5660620B2 (ja) 半導体メモリー装置及びその動作方法
US20220283731A1 (en) Storage device and operating method of storage device
CN111383697A (zh) 用于部分页编程的位扫描方法,部分页编程方法及非易失性存储器
US9990968B2 (en) Control circuit and memory device having the same

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140527

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140728

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141222

R151 Written notification of patent or utility model registration

Ref document number: 5674630

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350