メモリチップ、情報記憶システム、読み出し装置
【課題】悪意のある書き込み装置からのデータ書き込みを防止することを目的とする。
【解決手段】 メモリチップ1Mと接続される書き込み装置4Mであって、メモリチップ1Mは予め定められたデータの記憶領域である第1領域を含むメモリを有し、メモリ1Mに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部41Mと、書き込み装置が有するデータを第1鍵で暗号化した第1の暗号化データをメモリチップ1Mに送信するデータ送信部42Mとを有し、第1の暗号化データは、メモリチップ1Mが受け付け、メモリチップが有する第1鍵に対応する第2鍵で変換されて、第1領域に書き込まれることを特徴とする書き込み装置。
【解決手段】 メモリチップ1Mと接続される書き込み装置4Mであって、メモリチップ1Mは予め定められたデータの記憶領域である第1領域を含むメモリを有し、メモリ1Mに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部41Mと、書き込み装置が有するデータを第1鍵で暗号化した第1の暗号化データをメモリチップ1Mに送信するデータ送信部42Mとを有し、第1の暗号化データは、メモリチップ1Mが受け付け、メモリチップが有する第1鍵に対応する第2鍵で変換されて、第1領域に書き込まれることを特徴とする書き込み装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリチップ、情報記憶システム、読み出し装置に関する。
【背景技術】
【0002】
半導体ダイ上に形成された半導体メモリチップは、通常単体で使用されることは無く、外部のコントローラーと電気的に接続されて使用される。外部装置(書き込み装置や読み出し・再生装置など)から半導体メモリチップ上のメモリ内のデータへのアクセスはコントローラーを介して行われる。コントローラーと半導体メモリチップを組み合わせてメモリ製品として販売されることもある。例えば、SDメモリカードのような商品が、その一例である(非特許文献1参照)。また、半導体メモリチップとコントローラーとを樹脂で接着したものをSIP(System In Package)として提供する場合もある。また、オーディオ・プレーヤーなどで音楽データの格納用に半導体メモリチップが使用される場合、コントローラーが半導体メモリチップとは別の半導体の一部に組み込まれていることもある。いずれの場合も、半導体メモリチップとコントローラーとが直接接続されており、半導体メモリチップのメモリ内のデータへのアクセスは必ずコントローラーを介して行われる。
【0003】
コントローラーは、半導体メモリチップのデータへのアクセスを仲介するだけではなく、セキュリティ機能を提供する場合がある。例えば、SDメモリカードの場合、コントローラーに著作権保護機能が導入されている。コントローラーは、プレーヤーや書き込み装置などのホスト機器を認証し、認証に成功した場合に限って、半導体メモリチップに格納されているデータをホスト機器に転送する。また、コントローラーは、認証に成功した場合に限って、書き込み装置から受信したデータを半導体メモリチップに記録する。これにより、例えば、認証されない不正なプレーヤーはメモリカード内のデータにアクセスすることができない。従って、メモリカード内のデータが不正なプレーヤーによって盗まれることから保護される。
【0004】
メモリカードのコントローラーによって著作権保護機能が実装されている場合にも、更なる攻撃が存在する。例えば、メモリカードの中にビデオデータが格納されているものとする。メモリカードのコントローラーが有する著作権保護機能によって、当該メモリカードが格納するビデオデータは不正なプレーヤーによる読み出しから保護される。従って、不正なプレーヤーを用いた当該ビデオデータの不正コピーから守られている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】4C Entity, LLC. "Content Protection for Recordable Media Specification, SD Memory Card Book, Common Part", Revision 0.961, May. 3, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
書き込み対象のデータは、半導体メモリチップに格納(書き込み)され、読み出し装置によって読み出される。
【0007】
この書き込み対象のデータを読み出し装置で読み出して利用する為には、このデータの正統性が保証されている事が望ましい。
【0008】
本発明は、悪意のある書き込み装置からのデータ書き込みを防止することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決するために、本発明の一態様にかかる書込み装置は、メモリチップと接続される書き込み装置であって、メモリチップは予め定められたデータの記憶領域である第1領域を含むメモリを有し、メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、書き込み装置が有するデータを第1鍵で暗号化した第1の暗号化データをメモリチップに送信するデータ送信部とを有し、第1の暗号化データは、メモリチップが受け付け、メモリチップが有する第1鍵に対応する第2鍵で変換されて、第1領域に書き込まれることを特徴とする。
【0010】
また、本発明の別の一態様にかかる情報記憶システムは、読み出し装置及び書き込み装置とメモリチップが接続された情報記憶システムであって、書き込み装置は、 メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、 書き込み装置が有するデータを第1鍵で暗号化した第1の暗号化データをメモリチップに送信するデータ送信部とを有し、メモリチップは予め定められたデータの記憶領域である第1領域を含むメモリと、第1の暗号データを受け付け、書き込み装置が有する第1鍵に対応する第2鍵で第1の暗号データを変換する変換部と、変換されたデータを第1領域に書き込む書込部と、読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の暗号鍵生成部と、メモリに記憶されたデータを第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、読み出し装置は、 第2の暗号データを受け付け、読み出し装置が有する第3鍵に対応する第4鍵で復号することを特徴とする。
【0011】
また、本発明の別の態様にかかるメモリチップは、データを書き込む書き込み装置とデータを読み出す読み出し装置と接続されるメモリチップであって、予め定められたデータの記憶領域である第1領域を含むメモリと、読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の暗号鍵生成部と、メモリに記憶されたデータを第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、第2の暗号化データは、読み出し装置が受け付け、読み出し装置が有する第3鍵に対応する第4鍵で復号されることを特徴とするメモリチップ。
【0012】
また、本発明の別の態様にかかるメモリチップは、外部装置の要求に応じてデータの読み出しおよび書き込みを制御するコントローラーと接続されるメモリチップであって、 予め定められたデータの記憶領域である第1領域を含むメモリと、外部装置がデータの変換に用いる秘密鍵に対応する公開鍵を記憶する鍵記憶部と、特殊領域に書き込む書込データをコントローラーから受信し、公開鍵を用いて書込データを変換した変換データを生成する変換部と、変換データを特殊領域に書き込む書込部とを備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、悪意のある書き込み装置からのデータ書き込みを防止することができるという効果を奏する。
【図面の簡単な説明】
【0014】
【図1AA】トラスト・チェインの一例を示す図。
【図1AB】トラスト・チェインのデータの流れを示す図。
【図1B】第1の実施の形態の半導体メモリチップ、コントローラー、書き込み装置のブロック図。
【図1C】第1の実施の形態の詳細化したブロック図。
【図1D】第1の実施の形態の書き込みの流れを示すフローチャート。
【図1EA】具体的な利用形態のデータの流れを示す図。
【図1EB】具体的な利用形態のトラスト・チェインの一例を示す図。
【図1F】具体的な利用形態の詳細化したブロック図。
【図1G】暗号鍵共有部の構成例を示す図。
【図1H】暗号鍵共有部の動作を示すフローチャート。
【図1J】送出制御部と読出制御部の構成を示すブロック図。
【図1K】送出制御部と読出制御部の動作を示すフローチャート。
【図1L】ゲームプログラム実行時の動作を示すフローチャート。
【図1M】MKBを利用する形態の構成を示すブロック図。
【図1N】MKBを利用する形態の暗号鍵共有部の構成を示すブロック図。
【図1P】MKBを利用する形態のデータ送信部とデータ変換部のブロック図。
【図1Q】MKBを利用する形態の動作を示すフローチャート。
【図1R】半導体メモリチップのデータ変換部の構成の一例を示すブロック図。
【図1S】データ変換部の一例の動作を示すフローチャート。
【図1TA】電子書籍データの構造を示す図。
【図1TB】半導体メモリパッケージと書き込み装置の構成例を示すブロック図。
【図1TC】書き込み対象ページの一例の構成を示す図。
【図1TD】暗号鍵共有部の構成例を示す図。
【図1TE】第2データ変換部の構成例を示す図。
【図1TF】メモリチップ・インターフェースに送信されるデータ構成例を示す図。
【図1TG】第1変換部に送信されるデータの構成例を示す図。
【図1TH】第1データ変換部の構成例を示す図。
【図1TJ】データ送出部の構成例を示す図。
【図1TK】メモリチップ・インターフェースに送信されるデータの作成を示す図。
【図1TL】書き込み動作を示すフローチャート。
【図1TM】鍵を共有する手続き例を示すフローチャート。
【図1UA】スマートグリッドに適用した場合のトラスト・チェインの例を示す図。
【図1UB】スマートグリッドに利用した場合のデータの流れの例を示す図。
【図1UC】スマートグリッドに利用した場合のデータの流れの例を示す図。
【図1V】半導体メモリチップ、MDMS、メーターの構成例を示す図。
【図1WA】暗号鍵共有部の構成例を示す図。
【図1WB】送出制御部と読出制御部の構成例を示す図。
【図1XA】半導体メモリチップとメーターの暗号鍵共有部の構成例を示す図。
【図1XB】データ変換部とデータ送信部の構成例を示す図である。
【図1YA】MDMSの読み出し手順の例を示す図。
【図1YB】MDMSの読み出し手順の例を示す図。
【図2A】トラスト・チェインの一例を示す図。
【図2B】第2の実施の形態の半導体メモリチップとコントローラーのブロック図。
【図3A】暗号鍵共有部の構成例を示す図。
【図3B】メディア鍵を更新する仕組みの一例を示す図。
【図4A】第2の実施の形態における暗号鍵共有処理の全体の流れを示すフローチャート。
【図4B】メディア鍵を更新する動作例を示す図。
【図5】送出制御部と読出制御部の構成例を示す図。
【図6】第2の実施の形態におけるデータ読出処理の全体の流れを示すフローチャート。
【図7】暗号鍵共有部の変形例を示す図。
【図8】第2の実施の形態の変形例における暗号鍵共有処理の全体の流れを示すフローチャート。
【図9】送出制御部と読出制御部の変形例を示す図。
【図10】第2の実施の形態の変形例におけるデータ読出処理の全体の流れを示すフローチャート。
【図11A】送出制御部と読出制御部の別の変形例を示す図。
【図11B】第2の実施の形態の別の変形例におけるデータ読出処理の全体の流れを示すフローチャート。
【図12A】公開鍵で認証する場合の半導体メモリチップの暗号鍵共有部の構成例を示す図。
【図12B】公開鍵で認証する場合のコントローラーの暗号鍵共有部の構成例を示す図。
【図12C】暗号鍵共有部の動作例を示すフローチャート。
【図12D】半導体メモリチップの送出制御部の構成例を示す図。
【図12E】コントローラーの送出制御部の構成例を示す図。
【図12F】コントローラーに送信するデータ形式例を示す図。
【図12G】半導体メモリチップとコントローラーの送出制御部の動作例を示す図。
【図12H】半導体メモリチップとコントローラーの送出制御部の動作例を示す図。
【図12J】利用装置が半導体メモリチップに認証される場合の構成例を示す図。
【図12K】利用装置が半導体メモリチップに認証される場合のトラスト・チェインを示す図。
【図13】書き込み特殊領域に書き込みを行う様子を示す図。
【図14】書込制御部およびデータ変換部の構成例を示す図。
【図15】第2の実施の形態における書き込み処理の全体の流れを示すフローチャート。
【図16】最小限のデータのみ暗号化および復号する構成でのデータの変化を表す図。
【図17A】書込制御部およびデータ変換部の変形例を示す図。
【図17B】書き込み装置がコントローラーを介して書き込む構成例を示す図。
【図17C】データを書き込む動作例を示すフローチャート。
【図17D】データを書き込む動作例を示すフローチャート。
【図18】鍵記憶部のデータ構造の一例を示す図。
【図19】変形例における書き込み処理の全体の流れを示すフローチャート。
【図20】バージョン情報の変形例を示す図。
【図21】第3の実施の形態の半導体メモリチップのブロック図。
【図22】第3の実施の形態の受信制御部および書き込み装置の構成例を示す図。
【図23】第3の実施の形態における書き込み処理の全体の流れを示すフローチャート。
【図24】第3の実施の形態のデータ変換部の構成例を示す図。
【図25】第3の実施の形態におけるデータ読出処理の全体の流れを示すフローチャート。
【図26】第4の実施の形態のプレーヤーおよびメモリカードのブロック図。
【図27】第4の実施の形態における再生処理の全体の流れを示すフローチャート。
【図28】第5の実施の形態のプレーヤーおよびメモリカードのブロック図。
【図29】第5の実施の形態における再生処理の全体の流れを示すフローチャート。
【図30】第6の実施の形態の次世代電力網の一構成例を示す図。
【図31】メーターの構成例を示すブロック図。
【発明を実施するための形態】
【0015】
以下に添付図面を参照して、この発明にかかるメモリチップの好適な実施の形態を詳細に説明する。
【0016】
(第1の実施の形態)
第1の実施の形態にかかるメモリチップ(半導体メモリチップ)は、図1AAのように
読出し装置が半導体メモリチップを認証し、かつ、半導体メモリチップが書き込み装置を認証する。
【0017】
データの流れは図1ABに示すように、認証の方向と逆向きである事に注意する。つまり、認証された書き込み装置は認証した半導体メモリチップにデータを書き込む。読み出し装置は半導体メモリチップに記憶されたデータを読み出す。このように、本実施の形態の半導体メモリチップは、図1AAのトラスト・チェインを構築する目的とする。
【0018】
図1Bは、書き込み装置30が、コントローラー20を介して、半導体メモリチップ10の書き込み認証領域11−3に書き込みを行う場合のブロック図である。
【0019】
書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置のみが正しいデータを記録する事ができるメモリ領域である。或いは、書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置が書き込んだデータのみが正しく読み出し得るようなメモリ領域である。
【0020】
図1Bは、コントローラー20に書き込み装置30が接続されて、半導体メモリチップ10の書き込み認証領域11−3に書き込みを行う様子を示す図である。ただし、図1Bでは、書き込み処理に関わる部分のみが図示されている。
【0021】
まず、書き込み装置30が、書き込みが要求されたデータ(書込データ)を暗号化した暗号化データ、書込先ページの指定、および書込データに対するECCをコントローラー20に送信する。コントローラー20の書込制御部23は、暗号化データとECCとを半導体メモリチップ10のデータ変換部14に送出する。データ変換部14は、暗号化データを変換(復号)し、得られた変換データ(書込データ)を書き込み特殊領域11−3に書き込むとともに、ECCを符号記憶部11−1に書き込む。
【0022】
図1Cは、書き込み装置30とデータ変換部14の構成をより詳細に示した図である。書き込み装置30、コントローラー20の書込制御部23、および、半導体メモリチップ10のデータ変換部14の構成例について図1Cを用いて説明する。図1Cに示すように、書き込み装置30は、ECC生成部31と、鍵記憶部32と、暗号化部33と、データ送信部34とを備えている。
【0023】
ECC生成部31は、書き込むべきデータとして入力された書込データのECCを生成する。鍵記憶部32は、書込データの変換に用いるデータ変換鍵(第1鍵)を記憶する。本実施の形態では、鍵記憶部32は、公開鍵方式の秘密鍵Ksをデータ変換鍵として記憶している。この秘密鍵Ksは、半導体メモリチップ10の鍵記憶部141(後述)が記憶するデータ変換鍵(第2鍵)である公開鍵Kpに対応する秘密鍵である。
【0024】
なお、適用可能な暗号化方式は公開鍵方式に限られるものではない。また、以下では、書き込み装置30がデータ変換鍵(秘密鍵Ks)を用いて書込データを暗号化し、半導体メモリチップ10が対応するデータ変換鍵(公開鍵Kp)で書込データを復号してメモリ110に記憶する場合を例に説明する。書き込み装置30がデータ変換鍵(第1鍵)を用いてデータを変換し、半導体メモリチップ10が、第1鍵に対応するデータ変換鍵(第2鍵)を用いて変換後のデータを変換するものであれば、これ以外の変換方法を適用してもよい。例えば、書き込み装置30が第1鍵を用いて復号に相当する変換処理を実行し、半導体メモリチップ10が、第1鍵に対応する第2鍵を用いて暗号化に相当する変換処理を実行するように構成してもよい。
【0025】
暗号化部33は、秘密鍵Ksを用いて書込データを暗号化する。また、暗号化部33は、秘密鍵Ksを用いてECCを暗号化した符号(変換符号)を生成する。なお、以下では、暗号化された書込データを暗号化データといい、ECCを暗号化した変換符号を暗号化ECCという場合がある。データ送信部34は、暗号化データと、暗号化ECCと、書込先ページの指定とをコントローラー20の書込制御部23に送信する。
【0026】
次に、コントローラー20の書込制御部23の構成例について説明する。図1Cに示すように、書込制御部23は、データ転送部23−1を備えている。データ転送部23−1は、暗号化データと、暗号化ECCと、書込先ページ指定とを受信し、これらの情報を半導体メモリチップ10のデータ変換部14に送信する。
【0027】
次に、データ変換部14の構成例について説明する。図1Cに示すように、データ変換部14は、鍵記憶部14−1と、復号部14−2と、書込部14−3とを備えている。
【0028】
鍵記憶部14−1は、公開鍵方式の公開鍵Kpを記憶する。復号部14−2は、鍵記憶部14−1の公開鍵Kpを用いて暗号化データと暗号化ECCとを復号する。なお、暗号化データから復号された書込データが、変換データに相当する。書込部14−3は、復号された書込データをメモリ11上の書き込み認証領域11−3の指定されたページに記録する。また、書込部14−3は、復号されたECCをメモリ11の符号記憶部11−1に格納する。
【0029】
図1Dに書き込み時の動作を示す。まず、データDと書き込み先ページの指定が、書き込み装置30に入力される(ステップS4601)。データDはECC生成部31を通過し、そこでECCが生成される。データDと当該データDのECCは暗号化部33に送られる(ステップS4602)。暗号化部33は鍵格納部32から秘密鍵Ksを取得する(ステップS4603)。暗号化部33は、前記秘密鍵Ksを用いて、データDとECCとを、それぞれ暗号化し、暗号化データD’と暗号化ECCとを得る(ステップS4604)。暗号化部33は、前記暗号化データD’と暗号化ECCとをデータ送信部34に送る(ステップS4605)。データ送信部34は、コントローラーの書き込み制御部23に、暗号化データD’と書き込み先ページ指定、および、暗号化ECCを送信する(ステップS4606)。書き込み制御部23のデータ転送部23−1が、暗号化データD’と書き込み先ページ指定、および、暗号化ECCを、データ変換部14に転送する(ステップS4607)。データ変換部14の復号部14−2が、前記暗号化データD’と書き込み先ページ指定、および、暗号化ECCを受信する。復号部4142は、鍵記憶部14−1から公開鍵Kpを取得する(ステップS4608)。当該公開鍵Kpは、前記鍵記憶部32が格納している秘密鍵Ksに対応するものである。復号部14−2は、前記公開鍵Kpを用いて、暗号化データD’と暗号化ECCとをそれぞれ復号し、データDとECCとを得る(ステップS4609)。復号部14−2は書込部14−3に、書込先ページ指定とデータD、ECCを送る。書込部14−3が、半導体メモリチップの(書き込み認証領域に含まれる)指定された書込先ページにデータDを記録すると共に、ECCを符号記憶部の然るべき場所(前記指定された書き込み先ページに対応する場所)に記録する(ステップS4610)。
【0030】
本実施形態の発明のゲーム機器における利用について述べる。図1EAに、本発明の半導体メモリチップの一応用例を示す。本発明の半導体メモリチップ10Eはゲームカセット1に搭載されている。書き込み装置30Eは、当該ゲームカセット1Eの製造段階で当該ゲームカセット1Eにゲームデータ(プログラムや動画などゲーム実行に必要なデータ)を記録する。ゲームカセット1Eと書き込み装置はインターネットなどを経由して接続されていても良い。また、ゲームカセット1Eの利用時には、ゲームカセット1Eは書き込み装置と切り離されて、ゲーム機に接続される。ゲーム機2EはCPUなどを含むSoC(System on Chip)50Eを搭載している。ここではSoC50Eとしたが、一般にCPUを含むチップセットとして良い。SoC50Eは、半導体メモリチップ10Eに記録されているゲームデータを読み出し、プログラムを実行する。図1EAにおける矢印は、データの流れを示している。一方、図1EBには、図1EAにおける認証の方向を示す。図1EAと図1EBにおいて、コントローラー20Eは、電気的にデータを中継する働きを果たしている。コントローラー20Eが、データを論理的に加工する事はなく、認証の対象になる事もない。
【0031】
上記のような書き込み装置と半導体メモリチップ10Eの認証を実現する為に、半導体メモリチップ10上Eに、新たに書き込み認証領域11−3Eという領域を儲ける。書き込み認証領域11−3Eとは、予め定められたメモリ領域であって、当該半導体メモリチップ10Eから認証された書き込み装置30Eのみが正しいデータを記録する事ができるメモリ領域である。或いは、書き込み認証領域11−3Eとは、予め定められたメモリ領域であって、当該半導体メモリチップ10Eから認証された書き込み装置30Eが書き込んだデータのみが正しく読み出し得るようなメモリ領域である。以下に、書き込み認証領域11−3Eの具体的な構成方法を述べる。
【0032】
書き込み認証領域11−3Eに正しく書き込む為には、書き込み装置30が、半導体メモリチップ10Eが保持している公開鍵に対応する秘密鍵を保持している必要がある。即ち、半導体メモリチップ10Eから認証された書き込み装置30Eのみが、書き込み認証領域11−3Eに正しいデータを書き込む事ができる。この事により、書き込み装置30Eから半導体メモリチップ10Eへのデータの流れ(図1EA参照)に伴って、半導体メモリチップ10Eから書き込み装置30Eへの認証(図1EB参照)を確立する事ができる。
【0033】
図1Fは、本発明の一利用例を示すブロック図である。まず、半導体メモリチップ11Eの機能の概要について説明する。図1Fに示すように、半導体メモリチップ11Eは、メモリ11−2Eと、暗号鍵共有部12Eと、送出制御部13Eと、を備えている。
【0034】
メモリ11Eは、各種データを記憶する記憶部である。メモリ11Eは、例えば、NAND型フラッシュメモリなどにより構成できる。なお、メモリ1E1はこれに限られず、他の型式のフラッシュメモリなどを含む、半導体素子によって構成される任意の半導体メモリを適用することができる。メモリ11Eは、符号記憶部11−1Eと、読み出し特殊領域11−2Eと、書き込み認証領域11−3Eと、共通領域11−4Eと、一般領域11−5Eとを備えている。符号記憶部11−1Eは、書き込み装置30Eから書き込みが要求されたデータのエラー訂正符号(ECC:エラーコレクションコード)を記憶する。なお、符号記憶部11−1Eは、メモリ11Eの外部にメモリ11Eと独立の記憶部として備えてもよい。
【0035】
図1Fでは、読み出し特殊領域11−2Eおよび書き込み認証領域11−3Eのそれぞれに、共通領域11−4E以外の領域が含まれる例が示されているが、少なくとも共通領域11−4Eが存在すれば、各領域の構成は任意である。例えば、読み出し特殊領域11−2Eと書き込み認証領域11−3Eとが一致(すなわち読み出し特殊領域11−2Eと書き込み認証領域11−3Eとがいずれかも共通領域11−4Eと一致)するように構成してもよい。一般領域11−5Eとは、送出制御部13Eを介さずに、コントローラー20から直接書き込みおよび読み取りが可能な領域を表す。暗号鍵共有部12Eは、ゲーム機2Eとの間で共有する暗号鍵を保持または生成する。送出制御部13Eは、メモリ11から読み出したデータをゲーム機2Eに送出する処理を制御する。次に、コントローラー20Eの機能の概要について説明する。コントローラー20Eは、一般領域読出部24Eを備えている。一般領域読出部24Eは、一般領域11−5Eからのデータの読み出しを制御する。すなわち、一般領域11−5Eからデータを読み出す場合、読み出し装置は、コントローラー20Eの一般領域読出部24Eに対して、読み出し対象となるページの指定を入力する。次に、ゲーム機2Eの機能の概要について説明する。ゲーム機2Eは、暗号鍵共有部51E、読出制御部52E、プログラム復号部53E、プログラム実行部54Eを有している。暗号鍵共有部51Eは、半導体メモリチップ10Eとの間で共有する暗号鍵を保持または生成する。読出制御部52Eは、読み出し装置および再生装置などの外部装置(図示せず)からの要求に応じて、半導体メモリチップ10Eの共通領域11−4Eからデータを読み出す処理を制御する。プログラム復号部53Eは、読出し制御部52Eからプログラム暗号鍵を取得し、半導体メモリチップから一般領域読出部24Eが読み出したゲームプログラムの一部とデータの一部を復号する。プログラム復号部53Eは、ゲームプログラムとデータとをプログラム実行部54Eに送る。プログラム実行部54Eは、プログラム復号部53Eが復号したプログラムを実行する。
【0036】
図1Gは、図1Fの半導体メモリチップとSoCそれぞれの暗号鍵共有部の構成を示すブロック図である。図1Gに示すように、暗号鍵共有部12Eは、メディア鍵を表すKM12−1E(以下、メディア鍵KMという)と、MKB(Media Key Block)12−2Eとを保持している。MKB12−2Eについては、例えば非特許文献1に記載されている。また、暗号鍵共有部51Eは、デバイス鍵を表すKD51−2Eを保持している。また、暗号鍵共有部51Eは、MKB読み取り部51−1Eと、MKB処理部51−3Eと、を備えている。MKB読み取り部51−1Eは、半導体メモリチップ10Eの暗号鍵共有部12EからMKB12−2Eを読み出す。MKB処理部51−3Eは、読み出されたMKBをデバイス鍵KD51−2Eを用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。
【0037】
図1Hに、図1Gの暗号鍵共有部の動作を示す。SoCの暗号鍵共有部51EのMKB読み取り部51−1Eが、半導体メモリチップ10Eの暗号鍵共有部12Eが保持するMKB12−2Eを読み出す(ステップS4101)。MKB読み取り部51−1Eが、読み取ったMKBをMKB処理部51−3Eに送る(ステップS4102)。MKB処理部51−3Eは、デバイス鍵KD51−2Eを読み、MKB処理を行う(ステップS4103)。このMKB処理により正しいメディア鍵KMが得られなかった場合、MKB処理部51−3EはSoC50Eにエラーを通知する(ステップS4105)。エラーを受け取ったSoC50Eは以後の読み取り処理を中止する。一方、正しいメディア鍵KMが得られた場合、MKB処理部51−3Eは、読出し制御部52Eにメディア鍵KMを送る(ステップS4106)。また、半導体メモリチップの暗号鍵共有部12がメディア鍵KM12−1Eを半導体メモリチップの送出制御部13Eに送る(ステップS4107)。
【0038】
図1Jは、図1Fの送出制御部13Eと読出制御部52Eの構成を示すブロック図である。半導体メモリチップ10Eの送出制御部13EとSoC50Eの読出制御部22Eの構成例について図1Jを用いて説明する。図1Jに示すように、送出制御部13Eは、乱数発生部13−1Eと、読出部13−2Eと、暗号化部13−3Eと、送出部13−4Eとを備えている。乱数発生部13−1Eは、暗号化部13−3Eの要求に応じて乱数を発生する。読出部13−2Eは、指定された読み出し対象ページのデータと、当該データのECCとをメモリ11Eから読み出す。暗号化部13−3Eは、読み出されたデータをメディア鍵KMを用いて暗号化する。送出部13−4Eは、暗号化されたデータ(暗号化データ)とECCとをSoC50Eのデータ受信部52−1Eに送出する。また、図1Jに示すように、読出制御部52Eは、データ受信部52−1Eと、復号部52−2Eと、エラー修復部52−3Eとを備えている。データ受信部52−1Eは、半導体メモリチップ10Eの送出部13−4Eから暗号化データとECCとを受信する。復号部52−2Eは、受信された暗号化データをメディア鍵KMを用いて復号する。エラー修復部52−3Eは、受信されたECCを用いて、復号されたデータのエラー有無のチェックおよびエラー修復を行う。
【0039】
図1Kは、送出制御部13Eと読出制御部52Eの動作を示すフローである。読出制御部52Eは、暗号鍵共有部51Eからメディア鍵KMを受信する(ステップS4201)。読出制御部52Eは、当該メディア鍵KMを復号部52−2Eに入力する(ステップS4202)。読出制御部52Eは、送出制御部13Eに、読出し対象ページの指定を送る(ステップS4203)。読出部13−2Eが指定されたページのデータDを読み出し、暗号化部13−3Eに入力する(ステップS4204)。読出部は更に、指定されたページに対応するECCを符号記憶部から読出し、暗号化部13−3Eに入力(ステップS4205)。暗号化部13−3Eは乱数発生部13−1Eから乱数Rを受け取る(ステップS4207)。暗号化部13−3Eは暗号鍵共有部12Eからメディア鍵KMを受け取る(ステップS4208)。暗号化部13−3EはデータDと前記乱数Rとを連結し、メディア鍵KMで暗号化。暗号化データD’を得る(ステップS4209)。送出部13−4Eが、暗号化データD’とECCとをSoC50Eに送る(ステップS51−1)。
【0040】
SoC50Eの側では、読出し制御部52Eのデータ受信部52−1Eが、前記暗号化データD’とECCとを受け取る(ステップS51−2)。この通信はコントローラーを介して行われるが、コントローラーは通信の信号を中継するのみである。次いで、データ受信部52−1EはECCをエラー修復部52−3Eに送る(ステップS51−3)。データ受信部は暗号化データD’を復号部52−2Eに送る(ステップS4214)。復号部52−2Eはメディア鍵KMを用いて暗号化データD’を復号し、平文のデータDを得る(ステップS4215)。復号部52−2EはデータDをエラー修復部52−3Eに送る(ステップS4216)。エラー修復部52−3EがECCを用いてデータDのエラーをチェックする(ステップS4217)。データDにエラーが無い場合、エラー修復部52−3EはデータDを出力する(ステップS4219)。データDにエラーが有り修復可能である場合、エラー修復部52−3EはデータDのエラーを修復後、データDを出力する(ステップ4219)。さもなければ、エラー修復部はSoC50Eにエラーの発生を通知して(ステップS52−2)終了する。
【0041】
さて、図1Fのシステムは、ゲームプログラム実行時に次のように動作する。図1Lを用いて説明する。ゲームプログラムの一部と、当該ゲームプログラムが利用するデータの一部は暗号化されており、当該暗号化の鍵(複数存在して良い。これをプログラム暗号鍵と称する。)は、書き込み装置によって書き込み認証領域と読み出し特殊領域の交わりの領域に書き込まれている。ゲームプログラムと当該ゲームプログラムが利用するデータ自体は、半導体メモリチップ10Eの一般領域に記録されている。ゲーム機2Eはゲームプログラムを実行する為に、ゲームプログラムをSoC50Eに読み込む。SoC50Eはまず半導体メモリチップ10EのMKBを読出し、上述の手続きによって、半導体メモリチップ10Eとメディア鍵KMを共有する(ステップS30)。次いで上述の手続きによって、前記プログラム暗号鍵を読出し特殊領域から送出制御部13Eを経由して読み出す(ステップS4305)。前記プログラム暗号鍵は、送出制御部13Eにおいて暗号化され(ステップS4304)、読出制御部52Eにおいて復号される(ステップS4305)ことになる。ゲーム機2Eはゲームカセット1Eからゲームプログラムと当該ゲームプログラムが利用するデータを読み出す。読み出されたゲームプログラムとデータはSoC50Eのプログラム復号部53Eに送られる(ステップS4308)。プログラム復号部53Eは、読出制御部52Eからプログラム暗号鍵を取得し、ゲームプログラムの一部とデータの一部を復号する(ステップS4309)。プログラム復号部53Eは、ゲームプログラムとデータとをプログラム実行部54Eに送る(ステップS4310)。プログラム実行部54Eが当該ゲームプログラムを実行する(ステップS4311)。
【0042】
上述の実施例においては、書き込み認証領域を構成する手段として、半導体メモリチップ上の公開鍵を利用した。半導体メモリチップから書き込み装置を認証する為に、書き込み認証領域を構成する手段としてMKBを用いても良い。その一例を図1Mに示す。MKB1は利用装置のリボーク用であり、MKB2は書き込み装置のリボーク用である。共有鍵の処理や利用装置の読み出し制御はゲーム機2Eの場合と同様である。
【0043】
書き込み装置と半導体メモリチップの暗号鍵共有手段の構成は図1Nに示す通りである。また、書き込み装置のデータ書き込み手段と、半導体メモリチップのデータ変換手段とを、図1Pに示す。
【0044】
各モジュールは以下のように動作する。図1Qを用いて説明する。書き込み装置4Mの暗号鍵共有部41Mが書き込み認証領域にあるMKB2を読み出す(ステップS4008001)。暗号鍵共有部41Mは、格納しているデバイス鍵KDを用いて、MKB処理部41M2においてMKB2を処理し(ステップS40080021)、メディア鍵KMを得る(ステップS40080022)。MKB2によってデバイス鍵KDがリボークされていた場合は、ここで、暗号鍵共有部41Mは書き込み装置4Mにエラーを通知して動作を終了する(ステップS4008003)。暗号鍵共有部41Mがメディア鍵KMを得た後、当該メディア鍵KMはデータ送信部42Mに送られる(ステップS4008003)。データ送信部42Mは、乱数発生部42M1において乱数Rを発生させ、コンテンツ鍵と前記乱数Rとを暗号化部42M2に入力する。暗号化部42M2は、前記メディア鍵KMを用いて、コンテンツ鍵と乱数Rとを連結したデータを暗号化する(ステップS4008004)。暗号化されたコンテンツ鍵(と乱数)はデータ送出部42M3に送られる。データ送出部42M3は、コンテンツ鍵のECCを読み込み、暗号化コンテンツ鍵とECCとを半導体メモリチップに送出する(ステップS4008005)。当該暗号化コンテンツ鍵とECCとを、半導体メモリチップのデータ変換部14Mのデータ受信部14M1が受信する(ステップS4008006)。データ受信部14M1は、暗号化コンテンツ鍵を復号部14M2に送り(ステップS4008007)、ECCをECC格納部15Mに記録する(ステップS4008008)。復号部14M2は半導体メモリチップの暗号鍵共有部13Mからメディア鍵KMを読み取り(ステップS4008009)、当該メディア鍵KMを用いて暗号化コンテンツ鍵を復号する(ステップS4008010)。復号された暗号化コンテンツ鍵は乱数Rと連結されている。復号部14M2は、乱数Rを捨てて、暗号化コンテンツ鍵のみを、半導体メモリの書き込み認証領域16Mに記録する(ステップS4008011)。
【0045】
書き込み特殊領域や書き込み認証領域に、鍵共有などの認証手続きを行う事無く、書き込み装置が書き込みを事が有り得る。この場合、大きく二つの動作が考えられる。一つは、認証手続きを経ていないものとして、書き込みを受け付けないという動作である。この場合、半導体メモリチップは書き込み装置に対してエラーを通知しても良い。もう一つは、書き込みを受け付け、実際に書き込みを行うという動作である。ただし、認証や鍵の共有が行われていないので、半導体メモリチップ側は、乱数を発生し、この乱数を暗号鍵共有部によって共有された鍵として、この乱数で書き込み装置から受信したデータを暗号化(復号)してメモリに記録する。半導体メモリチップのデータ変換部の構成の一例を図1Rに示す。その動作を図1Sに示す。データ受信部14M1が、書き込み装置のデータ送信部から暗号化コンテンツ鍵とECCとを受信する(ステップS4009001)。データ受信部14M1は、ECCをECC格納部15Mに記録。データ受信部14M1は、暗号化コンテンツ鍵を復号部14M2に送る。復号部14M2は暗号鍵共有部から認証によって得られた共有鍵Kを取得する。暗号鍵共有部で共有鍵Kが得られた場合は、当該共有鍵Kで暗号化コンテンツ鍵Kを復号し、書き込み認証領域16Mに記録する(ステップS4009002)。暗号鍵共有部から共有鍵Kが得られなかった場合、乱数発生部14M3で乱数Rを発生し復号部14M2に送る(ステップS4009003)。復号部14M2はコンテンツ鍵を前記乱数Rで復号し、書き込み認証領域16Mに記録する(ステップS4009004)。無論、乱数Rは正しい共有鍵ではないから、コンテンツ復号鍵は正しく復号できない。即ち、正当な認証を経る事無く書き込み認証領域に記録を行えば、データは正しく記録されない。
【0046】
利用装置毎に、半導体メモリチップから読み出したコンテンツデータが区別されるようにする実施形態について以下に説明する。図1Tに電子書籍データの構造を図示する。このデータのサイズは8MBであり、8つの部分に等分されている。便宜上、各部分をD00、D01、…、D31までの記号で表現する。電子書籍の文字データとしては、D00とD01、D10とD11、D20とD21、D30とD31は同一である。しかし、背景の画像に入っている電子透かしが、D00とD01、D10とD11、D20とD21、D30とD31で異なっている。D00〜D31の各部分は、それぞれ異なるコンテンツ鍵で暗号化されている。それらのコンテンツ鍵を、それぞれK00、K01、…、K31とする。例えば、データの部分D21はコンテンツ鍵K21で暗号化される。D21’ = Enc( K21, D21 )。
【0047】
電子書籍のリーダーは4つのデバイス鍵KD0、KD1、KD2、KD3を保持している。また、各リーダーにはリーダーIDが割り当てられている。リーダーIDは8桁の十進数である。各リーダーはリーダーIDを保持している。本実施例では、半導体メモリチップは8個の読出し特殊領域を具備している。これら8個の読出し特殊領域をA00, A01, A10, A11, A20, A21, A30, A31とする。各読出し特殊領域には予め順に、コンテンツ鍵K00, K01, K10, K11, K20, K21, K30, K31が記録されている。更に、半導体メモリチップには割り当て規則が記録されている。例えば、割り当て規則として数値0が記録されている。この規則は電子書籍リーダーによって次のように解釈される。8桁のリーダーIDを2桁づつ区切り、4つの数値n0, n1, n2, n3を得る。n0が偶数であれば、A00からコンテンツ鍵K00を読み、データ部分D00’を復号する。n0が奇数であれば、A01からコンテンツ鍵K01を読み、データ部分D01を復号する。同様に、n1が偶数であれば、A10からコンテンツ鍵K10を読み、データ部分D10’を復号する。n1が奇数であれば、A11からコンテンツ鍵K11を読み、データ部分D11’を復号する。以下同様。ポイントは、n1が偶数であるような電子書籍リーダーが、当該リーダーが保持するデバイス鍵KD0で半導体メモリチップのMKBを処理した時、読出し特殊領域A00から正しくデータを読み出す事ができる共有鍵を導出可能であるという点である。MKBが、そのように設計されている訳である。
【0048】
以上のように、電子書籍リーダーは、当該リーダーが保持するリーダーIDに応じて、A00またはA01、A10またはA11、A20またはA21、A30またはA31から、コンテンツ鍵K00またはK01、K10またはK11、K20またはK21、K30またはK31を読出し、データ部分D00’またはD01’、D10’またはD11’、D20’またはD21’、D30’またはD31’を復号し、表示する。ある電子書籍リーダーソフトが不正にクラッキングされ、書籍データが流出したと仮定する。流出データを見れば、流出した電子書籍リーダーのIDに関する情報を得る事ができる。例えば、( D00, D11, D20, D31 )の組み合わせで流出していれば、リーダーIDについて、n0が偶数、n1は奇数、n2は偶数、n3は奇数である事が分かる。
【0049】
なお、割り当て規則は、MKBと共に与える事も可能である。この場合、デバイスIDは使用する必要はなく、デバイス鍵KD0、…、KD3の組み合わせ、そのものによって、読出し特殊領域が指定される。より具体的には、デバイス鍵KD0によってMKBを復号した時、メディア鍵KM0の他に0または1の値が出てくるようにMKBを設計する事が可能である。
【0050】
半導体メモリチップは通常インタフェースを処理するメモリチップ・インタフェースと共にパッケージに封入されて販売されている。メモリチップ・インタフェースのI/Oの単位が半導体メモリチップのI/Oの単位(ページ)と異なっている場合がある。ここでは、書き込み装置が暗号化したデータを、メモリチップ・インタフェースに書き込み特殊領域内のデータを平文で与える事無く、半導体メモリチップに正しいデータを書き込む為の構成と手順とを開示する。メモリチップ・インタフェースは暗号化されたデータを中継するのみであるから、半導体メモリチップに書き込まれる正しいデータを知らない。従って、ECCの処理を行う事ができない。ECCは書き込み装置が、書き込みデータに付与する必要がある。
【0051】
図1TBにシステム構成を示す。半導体メモリチップ12Tはメモリチップ・インタフェース13Tと共に半導体メモリパッケージ11Tに封入されている。通常、半導体メモリチップは、このような半導体メモリパッケージの形で市販されている。半導体メモリチップには一つの暗号鍵共有部と二つのデータ変換部を具備している。第1暗号鍵共有部17Tと第1データ変換部18T、及び、第2データ変換部20Tである。
【0052】
第1暗号鍵共有部17Tと第1データ変換部18Tは、半導体メモリチップが書き込み装置25Tから認証を受ける為の仕組みである。第2データ変換部20Tはメモリチップ・インタフェース13Tに与えるデータを秘匿する為の手段である。半導体メモリチップ12Tの第2データ変換部20Tは入出力を持つ。前記入出力でやり取りされるデータのサイズは固定であり、それは例えば(2KB+32B)である。
【0053】
メモリチップ・インタフェース13Tはデータ送受信部22Tとデータ転送部29Tを具備している。メモリチップ・インタフェース13Tと書き込み装置25Tとの間で一度にやり取りされるデータの単位は、メモリチップ・インタフェース13Tと半導体メモリチップ12Tとの間でやり取りされるデータの単位である(2KB+32B)とは異なっている。前者の値は512Bである。メモリチップ・インタフェースは、データサイズの違いを吸収する為のバッファ23Tを具備している。当該バッファのサイズは(2KB+32B)以上である。
【0054】
書き込み装置25Tは、第2暗号鍵共有部26Tとデータ送信部27Tを具備している。これらは半導体メモリチップ12Tを認証してデータを書き込む為の仕組みである。書き込み装置25Tがメモリチップ・インタフェースに一度に書き込むデータのサイズは512Bである。メモリチップ・インタフェース13Tのデータ転送部29Tが前記書き込みデータを受信し、バッファ23Tの一部である512Bを書き換える。
【0055】
半導体メモリチップの特殊領域の書き込み対象ページは図1TCのようなデータ構成になっている。領域1〜4は、それぞれ異なるアプリケーションに対応している。即ち、半導体メモリチップが保持する異なるデバイス鍵に対応している。即ち、領域1〜4に記録する際に、半導体メモリチップが使用するデバイス鍵は、それぞれKD1、…、KD4である。これらのデバイス鍵は第1暗号鍵共有部17Tに格納されている。Extra21Tには領域1〜4に関する制御用のデータが記録される。
【0056】
図1TBの書き込み装置25Tは領域2を使用するアプリケーションの書き込み装置である。書き込み装置25TはMKBを保持しており、当該MKBは書き込みの際に、第1暗号鍵共有部17Tにおいて、デバイス鍵KD2を用いて処理される。前記処理の結果(デバイス鍵KD2が前記MKBによって無効化されていない場合)メディア鍵KM2が得られる。同様にデバイス鍵KD1、KD3、KD4による処理によって、メディア鍵KM1、KM3、KM4が得られるが、KM1、…、KM4は互いに異なっていて良い。
【0057】
図1TDに図1TBの第1暗号鍵共有部18Tと第2暗号鍵共有部26Tの構成を示す。書き込み装置25Tの第2暗号鍵共有部26Tは、半導体メモリチップ認証用のMKBを格納している。一方、半導体メモリチップ12Tの第1暗号鍵共有部18Tはデバイス鍵KD2を格納している。書き込み装置25Tは領域2を使用するアプリケーションの書き込み装置であり、従って、当該領域に対応しているデバイス鍵KD2を認証する必要がある。
【0058】
図1TEに第2データ変換部20Tの構成を示す。第2データ変換部20Tは二方向にデータを転送する。一つは読出しであり、半導体メモリチップの書き込み特殊領域内の書き込み対象ページを読出し、暗号化してメモリチップ・インタフェースに送る。この暗号化には、暗号鍵生成部19Tが生成した一時鍵KT’が用いられる。暗号化部502Tの動作には大きな特徴がある。暗号化部502Tは、書き込み対象ページを先頭から読出し、一時鍵KT’で暗号化しながら、メモリチップ・インタフェースに送るのであるが、領域2に相当する部分のデータはメモリチップ・インタフェースに転送しない。その代わりに、例えばFFを送る。その結果、第2データ変換部からメモリチップ・インタフェースに送信されるデータは図1TFのようになる。Extraの部分は暗号化されず、そのままメモリチップ・インタフェースに送られる。
【0059】
もう一つのデータの流れは書き込みである。第2データ変換部20Tの復号部503Tは、メモリチップ・インタフェースから受け取った(2KB+32B)のデータを、暗号鍵生成部19Tから受け取った一時鍵KT’によって復号して、第1データ変換部18Tに送る。この復号の際に用いられる一時鍵KT’は、読出しの際の暗号化で用いられた一時鍵KT’と同一のものである。復号部503Tの動作も特徴的である。復号部503Tは、メモリチップ・インタフェースから受信するデータを、一時鍵KT’を用いて先頭から順次復号しながら、第1データ変換部18Tに送るのであるが、領域2に相当する部分のデータは(復号せず)そのまま転送する。その結果、第2データ変換部20Tから第1データ変換部18Tに送信されるデータは図1TGのようになる。Extraの部分も復号されず、そのままメモリチップ・インタフェースに送られる。領域2に相当する部分(オフセット512-1023)は、データ転送部29Tが書き込んだ512Bのデータそのままである。後述のように、このデータは、書き込み装置25Tが送信した、ECCを含む暗号化データに一致する。
【0060】
図1THは第1データ変換部18Tの構成を示すブロック図である。第1データ変換部18Tは、第2データ変換部20Tから書き込み用に送られて来たデータを書き込み対象ページに書き込むが、その際、領域2に相当する部分を復号する。領域2のデータは書き込み装置25Tによって暗号化されているからである。前記復号に用いられる一時鍵KTは、第1暗号鍵共有部17Tが第2暗号鍵共有部26Tによって認証される際に生成される。第1データ変換部18Tは、領域2以外のデータは、そのまま書き込み対象ページに書き込む。領域2のデータは、一時鍵KTによって書き込み装置25Tが暗号化する前のデータに等しい。これは後述のように、データDとECCとを含むデータである。
【0061】
書き込み装置25Tのデータ送出部27Tの構成を図1TJに示す。暗号化部901Tは512B−16B=496BのデータDを受け取る。暗号化部901Tは前記データDの後に16Bの0を付加して512Bのデータを作り、それをECC生成部902Tに送る。ECC生成部902Tは前記512Bのデータに関するECCを生成して、暗号化部901Tに返す。暗号化部901Tは、前記512Bのデータの最後の3Bを、ECC生成部902Tから受信したECCで上書きする。更に、暗号化部901Tは、一時鍵KTによってデータDとECCとを含む512Bのデータを暗号化する。一時鍵KTは、書き込み装置25Tが半導体メモリチップ12Tを認証する際に生成される鍵であり、半導体メモリチップ12Tの第1暗号鍵共有部と共有されている鍵である。暗号化部901Tは496BのデータDとECCとを暗号化したものをメモリチップ・インタフェースに送る。メモリチップ・インタフェースに送られるデータが作られる様子を図1TKに示す。図1TKにおいて、表の第一行の数値はバイトのオフセットを示す。ここでのポイントは、書き込み装置25Tだけが、半導体メモリチップ12Tに記録されるデータDのECCを生成できるという事である。暗号化されたデータを中継するだけのメモリチップ・インタフェースはECCの値を生成する事はできない。従って、書き込み装置がECCを付加する必要がある。
【0062】
書き込み装置25Tが半導体メモリチップ12Tに書き込みを行う動作を図1TLに示す。第1暗号鍵共有部17Tと第2暗号鍵共有部26Tが一時鍵KTを共有する手続きは、本明細書の他の場所で述べたものと同様である(図1TM参照)。即ち、書き込み装置26TがMKB読み取り部301TにMKBを送る(ステップS701201)。MKB読み取り部301Tは前記MKBをMKB処理部302Tに送る(ステップS701202)。MKB処理部302Tは暗号鍵共有部が格納しているデバイス鍵KD2を読み込み、前記MKBを処理する(ステップS701203)。デバイス鍵KD2が前記MKBによって無効化されていない場合、メディア鍵KM2が得られる。MKB処理部302Tはメディア鍵KM2を一時鍵生成部304Tに送る(ステップS701204)。一時鍵生成部304Tは乱数受信部303Tに乱数を要求する(ステップS701205)。乱数受信部303Tは、書き込み装置の乱数送信部306Tに乱数を要求する(ステップS701206)。乱数送信部306Tは乱数生成部305Tに乱数生成を要求する(ステップS701207)。乱数生成部305Tは乱数Rを生成し、当該乱数Rを乱数送信部306Tに送る(ステップS701208)。乱数送信部306Tは乱数受信部303Tに前記乱数Rを送出する(ステップS701209)。乱数受信部303Tは前記乱数Rを受信すると、前記乱数Rを一時鍵生成部304Tに送る(ステップS701210)。一時鍵生成部304Tはメディア鍵KM2と前記乱数Rとを用いて一時鍵KTを生成する(ステップS701211)。一方、乱数送信部303Tは、前記乱数Rを一時鍵生成部307Tに送る(ステップS701212)。一時鍵生成部307Tは第2暗号鍵共有部が格納しているメディア鍵KM2を読み込み、一時鍵生成手段304Tと同一の手続きにより一時鍵KTを生成する(ステップS701213)。
【0063】
図1TLに戻る。第1暗号鍵共有部17Tと第2暗号鍵共有部26Tとが一時鍵KTを共有(ステップS701102)した後、データ送信部27Tは送信用のデータD’を作り(ステップS701104)、メモリチップ・インタフェース13Tに送出する(ステップS701105)。暗号化データD’の作り方は上述した通りである。メモリチップ・インタフェースが前記暗号化データD’を受け取ると、第2データ変換部が書き込み対象ページを読み込む(ステップS701107)。暗号鍵生成部19Tが一時鍵KT’を生成する(ステップS701108)。これは例えば乱数である。第2データ変換部20Tは一時鍵KT’を読み込み、読み込んだ書き込み対象ページを部分的に暗号化する(ステップS701109)。ここでの特徴ある暗号化の方法については上述した通りである。次いで、第2データ変換部20Tが暗号化した書き込み対象ページのデータはバッファ23Tに記録される(ステップS701111)。データ転送部29Tがバッファ23Tの領域2に相当する部分を、書き込み装置25Tから受信した512Bのデータで上書きする(ステップS701112)。前記データの構成は上述した通りである。その後、バッファのデータ(先頭から2KB+32B分)は第2データ変換部20Tに再び送られる。第2データ変換部20Tは、このデータを部分的に復号する(ステップS701114)。ここでの特徴的な復号の方法については上述した通りである。第2データ変換部20Tは復号したデータを第1データ変換部18Tに送る(ステップS701115)。第1データ変換部は受け取ったデータの領域2に相当する部分のみを一時鍵KTによって復号する(ステップS701116)。その結果、領域2に相当する部分は、データDとECCとから構成される平文となる。即ち、図1TKの中段に示すデータが得られる。データ変換部は、前記部分的に復号したバッファのデータを書き込み対象ページに記録する。
【0064】
以上のような構成と動作によって、書き込み装置25Tが意図した通りのデータが、半導体メモリチップの書き込み対象ページに記録される。上記では、領域2を利用するアプリケーションの書き込み動作を述べたが、他の領域を利用するアプリケーションについても同様である。なお、本実施例のように書き込まれるデータについては、メモリチップ・インタフェースはECC処理を行う事ができない。アプリケーションの利用装置がECCをチェックする必要がある。半導体メモリチップが二つのデータ変換部を具備しており、一つは書き込み装置との認証用であり、もう一つはメモリチップ・インタフェースに対するデータの秘匿を担っている事が、本実施例の特徴となっている。
【0065】
本実施形態の発明のスマートグリッドにおける利用について述べる。図1UAは、本実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するメーター1Uaと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)5Uが各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3Uがビル毎に設置される。商業ビルには、メーター1Uaと同様のメーター1Ubが設置される。以下では、メーター1Uaおよび1Ubを単にメーター1Uという。
【0066】
メーター1Uは、コンセントレータとよばれる中継器(コンセントレータ4U)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)2Uと通信する。MDMS2Uは、各家庭のメーター1Uから一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)6Uは、MDMS2Uに集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のメーター1UやHEMS5Uに対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS6Uは、遠隔端末ユニットであるRTU(Remote Terminal Unit)71Uに接続された太陽光発電や風力発電などの分散電源80U、同じくRTU72Uに接続された蓄電装置90U、および、RTU73Uに接続された発電側との間を制御する送配電制御装置100Uを制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0067】
図1UBは、スマートグリッドシステムの一例を示す図である。スマートグリッドシステムは、メーター1UとMDMS(Meter Data Management System)40Uとを有する。メーター1Uは、半導体メモリチップ10Uと電力計測部30Uを有する。メーター1Uは、コンセントレータとよばれる中継器(図示せず)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS40Uと通信する。MDMS40Uは、各家庭のメーター1Uから一定の間隔で電力使用量を受信して記憶する。なお、メーター1Uは特にスマートメーターと呼ばれることもある。なお、スマートメーターとは、電力等のエネルギー使用量を計測し、計測値を記録する。その計測値をメーター管理システムにデータを送信またはメーター管理システムからの読み出しを受け付けるメーターであり、さらに系統制御側からのデマンドレスポンス信号等の制御命令を記録し、宅内のエネルギー利用制御を行うまたは支援する高機能メーターをいう。
【0068】
メーター1Uの電力計測部30Uなどで計測されたデータは、当該メーター1Uの半導体メモリチップ10Uに格納され、随時MDMSに送信される。この計測データをMDMS2Uで電力供給の制御に利用する為には、このデータの正統性が保証されている事が望ましい。これを保証する為の一つの手段は、図1UBのトラスト・チェインを構築する事である。即ち、読出し装置であるMDMS40Uがメーター1Uの半導体メモリチップ10Uを認証し、かつ、半導体メモリチップ10Uが当該メーター1Uの電力計測部30Uを認証する。データの流れが認証の方向と逆向きである事に注意する(図1UC参照)。本発明の半導体メモリチップは、図1UBのトラスト・チェインを構築する目的に利用可能である。
【0069】
半導体メモリチップ10Uは、図1UBのようにMDMS40U(読出し装置)が半導体メモリチップ10Uを認証し、かつ、半導体メモリチップ10Uが電力計測部30U(書き込み装置)を認証する。データの流れは図1UCに示すように、認証の方向と逆向きである事に注意する。つまり、認証された電力計測部30U(書き込み装置)は認証した半導体メモリチップ10Uにデータを書き込む。MDMS40U(読み出し装置)は半導体メモリチップ10Uに記憶されたデータを読み出す。このように、本実施の形態の半導体メモリチップ10Uは、図1UBのトラスト・チェインを構築する目的とする。
【0070】
図1UBのメーター1Uを含むシステムにおいて、トラストチェーンを構成する為には、上記他の実施形態の書き込み認証領域の他に、読出し認証領域を構成する必要がある。読出し認証領域とは、半導体メモリチップ10U上のメモリ領域であって、半導体メモリチップ10UがMDMS(読出し装置)40Uから認証を受けた時に限ってデータを読み出す事ができるメモリ領域の事である。即ち、当該領域から読み出されたデータは、正統な半導体メモリチップ10Uが格納していたデータである。図1Vにシステムの一例を示す。
【0071】
図1Vのシステムは、半導体メモリチップ1V、MDMS2V、メーター4Vを有する。半導体メモリチップ1Vは、メモリ10V、暗号鍵共有部11V、送出制御部12V、ECC格納部13V、暗号鍵共有部15V、データ変換部16Vを有する。メモリ10Vは、ECC格納部13Vと、読み出し認証領域112Vと、書き込み認証領域113Vと、共通領域114Vと、一般領域115Vとを備えている。メモリ10Vは、読み出し認証領域112V、書き込み認証領域113Vを有する。読み出し認証領域112Vと書き込み認証領域113Vに共通領域114Vを設ける。そして、当該共通領域114Vに、データ利用に不可欠な情報を記録する。読み出し認証領域112Vおよび書き込み認証領域113Vのそれぞれに、共通領域114V以外の領域が含まれる例が示されているが、少なくとも共通領域114Vが存在すれば、各領域の構成は任意である。例えば、読み出し認証領域112Vと書き込み認証領域113Vとが一致(すなわち読み出し認証領域112Vと書き込み認証領域113Vとがいずれかも共通領域114Vと一致)するように構成してもよい。
【0072】
書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置のみが正しいデータを記録する事ができるメモリ領域である。或いは、書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置が書き込んだデータのみが正しく読み出し得るようなメモリ領域である。
【0073】
暗号鍵共有部11Vは、MDMS2Vが送出したMKB1を受け付ける。MKB1に基づいてMKB処理を行う。MKB処理により生成された共有鍵(メディア鍵KM)を送出制御部12Vに送る。具体的には、正しいメディア鍵KMが得られた場合、暗号鍵共有部は当該メディア鍵KMを送出制御部22Vに送る。
【0074】
更に詳細には、暗号鍵共有部11Vは、MKB読み取り部11−1V、MKB処理部11−2Vを有する。MKB読み取り部11−1Vは、MDMSからMKB1を受け取り、MKB処理部11−2Vに送る。MKB処理部11−2Vは、MKB1とデバイス鍵KDから共有鍵(メディア鍵KM)を生成し、送出制御部12Vに送る。前記デバイス鍵KDがリボーク(無効化)されていない場合、このMKB処理によりメディア鍵KMが得られる。一方、前記デバイス鍵KDが前記MKB1により無効化されている場合、メディア鍵KMは得られず、暗号鍵共有部11Vはエラーを通知して処理を停止する。送出制御部12Vは、共有鍵(メディア鍵KM)をMDMS2Vの読出制御部22Vに送付する。更に詳細には、送出制御部12Vは、暗号化部12−1V、乱数発生部12−2V、データ送出部12−3Vを有する。暗号化部12−1Vは、メディア鍵KMを受け取る。暗号化部12−1Vは、読出し認証領域14Vからデータ(例えば電力測定値)を読出し、乱数発生部12−2Vから乱数Rを受け取る。暗号化部12−1Vは、データ(例えば電力測定値)と乱数Rとを連結し、メディア鍵KMで暗号化する。暗号化部12−1Vは、暗号化したデータ(例えば電力測定値)を、データ送出部12−3Vに送る。乱数発生部12−2Vは、乱数Rを発生する。データ送出部12−3Vは、ECC格納部13Vからデータ(例えば電力測定値)に対応するECCを読出し、暗号化したデータ(例えば電力測定値)とともにMDMSに送出する。
【0075】
MDMS2Vは、暗号鍵共有部21V、読出制御部22Vを有する。暗号鍵共有部21Vは、共有鍵(メディア鍵KM)を有する。読出制御部22Vは共有鍵(メディア鍵KM)を用いて暗号化したデータ(例えば電力測定値)を復号する。更に詳細には、読出制御部22Vは、データ受信部22−1V、復号部22−2V、エラー修復部22−3Vを有する。データ受信部22−1VはECCをエラー修復部22−3Vに送る。データ受信部22−1Vは暗号化された電力測定値を復号部22−2Vに送る。復号部22−2Vは、暗号鍵共有部21Vからメディア鍵KMを読み出し、当該メディア鍵KMを用いて暗号化された電力測定値を復号する。復号部22−2Vは、復号結果から乱数を捨てて、電力測定値をエラー修復部22−3Vに送る。エラー修復部22−3Vは、ECCを用いて電力測定値のエラーチェックを行う。エラーが無いか、又は、修復可能であれば、エラー修復部22−3Vは電力測定値を出力する。さもなければ、エラーを通知して停止する。ECC格納部13Vは、ECCを格納する。
【0076】
図1XAは、半導体メモリチップとメーターの暗号鍵共有部(15V、41V)の構成例を示す。暗号鍵共有部15Vは、共有鍵(メディア鍵KM)を有し、データ変換部16Vに共有鍵(メディア鍵KM)を送る。暗号鍵共有部41Vは、MKB読み取り部41−1V、MKB処理部41−2Vを有する。暗号鍵共有部41Vは、半導体メモリチップ16VからMKB2(MKBデータ)を受け付け、MKB2(MKBデータ)に基づいて共有鍵(メディア鍵KM)を生成する。生成した共有鍵(メディア鍵KM)をデータ送信部42Vへ送信する。詳細には、MKB読み取り部41−1Vは、半導体メモリチップ16VからMKB2を読み取る。読み取ったMKB2をMKB処理部41−2Vに送る。MKB処理部41−2Vは、MKB2とデバイス鍵KDを用いて共有鍵(メディア鍵)KMを生成する。生成した共有鍵(メディア鍵KM)をデータ送信部42Vを送信する。
【0077】
図1XBは、半導体メモリチップのデータ変換部16Vとメーターのデータ送信部42Vの構成例を示す図である。データ送信部42Vは、暗号鍵共有部41Vから受け付けた共有鍵(メディア鍵KM)を用いて計測部43Vの計測値を暗号化する。暗号化した計測値をデータ変換部16Vに送信する。更に、詳細には、データ送信部42Vは、ECC生成部42−1V、暗号化部42−2V、データ送出部42−3Vを有する。ECC生成部42−1Vは、計測部43Vの計測値を読み出し、ECCを生成する。生成したECCを暗号化部42−2Vに送る。暗号化部42−2Vは、計測値とECC生成部42−1Vで生成されたECCを暗号化して、データ送出部に送る。データ送出部42−3Vは、暗号化された計測値とECCをデータ変換部16Vに送信する。
【0078】
データ変換部16Vは、受け付けた暗号化された計測値とECCを復号する。復号された計測値はメモリ10Vの書き込み領域113Vに書き込む。復号されたECCはECC格納部13Vに書き込む。更に詳細には、データ変換部16Vは、データ受信部16−1V、復号部16−2V、書込部16−3Vを有する。データ受信部16−1Vは、データ送出部42−3Vから暗号化された計測値とECCを受信する。暗号化された計測値とECCを復号部16−2Vに送る。復号部16−2Vは、暗号鍵共有部15Vから共有鍵(メディア鍵KM)を受け付ける。暗号化された計測値とECCを受け付けた共有鍵(メディア鍵KM)を用いて復号する。復号された計測値とECCを書込部16−3Vに送る。書込部16−3Vは、復号された計測値はメモリ10Vの書き込み領域113Vに書き込む。復号されたECCはECC格納部13Vに書き込む。
【0079】
図1Wに半導体メモリチップ1Vの暗号鍵共有部11VとMDMS2Vの暗号鍵共有部21Vの構成を示す。また、図1Xに送出制御部12Vと読出制御部22Vの構成を示す。電力計測値は読出し認証領域に記録されている。これをMDMSは以下の手順で読み出す。その手順を図1YA、1YBを用いて説明する。MDMSが半導体メモリチップの暗号鍵共有部11VにMKB1を送る(ステップS5000001)。暗号鍵共有部11VのMKB処理部11−2Vが暗号鍵共有部が格納するデバイス鍵KDを用いてMKBを処理する。前記デバイス鍵KDがリボーク(無効化)されていない場合、このMKB処理によりメディア鍵KMが得られる。一方、前記デバイス鍵KDが前記MKB1により無効化されている場合、メディア鍵KMは得られず、暗号鍵共有部11Vはエラーを通知して処理を停止する(ステップS5000002)。正しいメディア鍵KMが得られた場合、暗号鍵共有部は当該メディア鍵KMを送出制御部22Vに送る(ステップS5000003)。暗号化部12−1Vがメディア鍵KMを受け取る。暗号化部12−1Vは、読出し認証領域14Vから電力測定値を読出し、乱数発生部12−2Vから乱数Rを受け取る。暗号化部12−1Vは、電力測定値と乱数Rとを連結し、メディア鍵KMで暗号化する(ステップS5000004)。暗号化部12−1Vは、暗号化した電力測定値を、データ送出部12−3Vに送る。データ送出部12−3Vは、ECC格納部13Vから電力測定値に対応するECCを読出し、暗号化した電力測定値とともにMDMSに送出する(ステップS5000005)。暗号化された電力測定値とECCは、MDMSのデータ受信部22−1Vに入力される(ステップS5000006)。データ受信部22−1VはECCをエラー修復部22−3Vに送る。また、データ受信部22−1Vは暗号化された電力測定値を復号部22−2Vに送る(ステップS5000007)。復号部22−2Vは、暗号鍵共有部21Vからメディア鍵KMを読み出し(ステップS5000008)、当該メディア鍵KMを用いて暗号化された電力測定値を復号する(ステップS5000009)。復号部22−2Vは、復号結果から乱数を捨てて、電力測定値をエラー修復部22−3Vに送る(ステップS5000010)。エラー修復部22−3Vは、ECCを用いて電力測定値のエラーチェックを行う。エラーが無いか、又は、修復可能であれば、エラー修復部22−3Vは電力測定値を出力する(ステップS5000011)。さもなければ、エラーを通知して停止する(ステップS5000012)。
【0080】
特許請求の範囲に記載の「第1領域」は、書込み認証領域(11−3または11−3Eまたは113Mまたは14Tまたは113V)などが対応する。「第1鍵情報」は、MKB2などが対応する。「第1の暗号鍵生成部」は、暗号鍵共有部(41Mまたは26Tまたは41V)などが対応する。「第1鍵」は、暗号鍵共有部(41Mまたは26Tまたは41V)などが生成する共有鍵が対応する。「第2鍵」は、暗号鍵共有部(41Mまたは26Tまたは41V)と対応する暗号鍵共有部(13Mまたは17Tまたは15V)などが有する共有鍵が対応する。「第2領域」は、書き込みの領域と読み出しの領域が共通する領域(11−4または11−4Eまたは114Mまたは16Tまたは114V)などが対応する。「第2鍵情報」は、MKB12−2EまたはMKB1などが対応する。「第2の暗号鍵生成部」は、暗号鍵共有部(51Eまたは21Mまたは11V)などが対応する。「第3鍵」は、暗号鍵共有部(51Eまたは21Mまたは11V)などが生成するKMが対応する。「第4鍵」は、暗号鍵共有部(51Eまたは21Mまたは11V)と対応する暗号鍵共有部(12Eまたは11Mまたは21V)などが有するKMが対応する。
【0081】
本実施の形態の発明は、悪意のある書き込み装置からのデータ書き込みを防止することができる。
【0082】
(第2の実施の形態)
第2の実施の形態にかかるメモリチップ(半導体メモリチップ)は、半導体メモリチップにセキュリティ機能を持たせ、半導体メモリチップ自体をトラスト・チェインの中に組み込む。これにより、半導体メモリチップを不正なコントローラーと組み合わせて使用することを防止する。半導体メモリチップは高度な部品であり、不正なIDを有するコントローラーのように、容易に製造・販売することができない。
【0083】
ここで、トラスト・チェインについて図2Aを用いて説明する。図2Aは、半導体メモリチップ100をトラスト・チェインに組み込んだシステムの一例を示す図である。図2A中の矢印の方向は認証の方向を示す。即ち、半導体メモリチップ100がコントローラー200を認証し、コントローラー200が書き込み装置300を認証し、書き込み装置300が半導体メモリチップ100を認証する。なお、破線はオプションである。書き込み装置300がトラスト・チェインの出発点であり、半導体メモリチップ100を経由してコントローラー200を認証することが図2Aのトラスト・チェインを構築する目的である。書き込み装置300と半導体メモリチップ100との間のデータの流れは常にコントローラー200を介して行われるため、書き込み装置300による半導体メモリチップ100の認証は間接的なものになる。
【0084】
本実施の形態では、半導体メモリチップ100をトラスト・チェインに組み込むために、半導体メモリチップ100自体にセキュリティ機能を持たせる。具体的には、半導体メモリチップ100のメモリに特殊領域を構成する。特殊領域は、読み出し特殊領域および書き込み特殊領域を含む。読み出し特殊領域とは、メモリ内の記憶領域(メモリ領域)のうち、半導体メモリチップ100により認証されたコントローラー200のみが、格納された値を正しく読み出すことができる予め定められたメモリ領域である。書き込み特殊領域とは、メモリ領域のうち、データ書き込みの際、データ変換部(後述)による復号を受けたデータを書き込む予め定められたメモリ領域である。
【0085】
また、本実施の形態では、半導体メモリチップ100をトラスト・チェインに組み込むために、読み出し特殊領域と書き込み特殊領域に共通領域を設ける。そして、当該共通領域に、データ利用に不可欠な情報を記録する。共通領域にデータ利用に不可欠な情報が正しく記録できることは、即ち、半導体メモリチップ100が書き込み装置300によって認証されたことに他ならない。そして、共通領域に記録されているデータ利用に不可欠な情報が、コントローラー200によって正しく読み出されることは、即ち、当該コントローラー200が半導体メモリチップ100によって認証されていることに他ならない。かくして、図2Aのトラスト・チェインが完成する。
【0086】
図2Bは、第2の実施の形態の半導体メモリチップ100とコントローラー200の構成の一例を示すブロック図である。まず、半導体メモリチップ100の機能の概要について説明する。図2Bに示すように、半導体メモリチップ100は、メモリ110と、暗号鍵共有部120と、送出制御部130と、データ変換部140と、を備えている。
【0087】
メモリ110は、各種データを記憶する記憶部である。メモリ110は、例えば、NAND型フラッシュメモリなどにより構成できる。なお、メモリ110はこれに限られず、他の型式のフラッシュメモリなどを含む、半導体素子によって構成される任意の半導体メモリを適用することができる。
【0088】
メモリ110は、符号記憶部111と、読み出し特殊領域112と、書き込み特殊領域113と、共通領域114と、一般領域115とを備えている。
【0089】
符号記憶部111は、書き込み装置300から書き込みが要求されたデータのエラー訂正符号(ECC:エラーコレクションコード)を記憶する。なお、符号記憶部111は、メモリ110の外部にメモリ110と独立の記憶部として備えてもよい。
【0090】
図2Bでは、読み出し特殊領域112および書き込み特殊領域113のそれぞれに、共通領域114以外の領域が含まれる例が示されているが、少なくとも共通領域114が存在すれば、各領域の構成は任意である。例えば、読み出し特殊領域112と書き込み特殊領域113とが一致(すなわち読み出し特殊領域112と書き込み特殊領域113とがいずれかも共通領域114と一致)するように構成してもよい。
【0091】
一般領域115とは、送出制御部130およびデータ変換部140を介さずに、コントローラー200から直接書き込みおよび読み取りが可能な領域を表す。
【0092】
暗号鍵共有部120は、コントローラー200との間で共有する暗号鍵を保持または生成する。送出制御部130は、メモリ110から読み出したデータをコントローラー200に送出する処理を制御する。データ変換部140は、コントローラー200を介して書き込み装置300から書き込みが要求されたデータを変換した変換データを生成する。暗号鍵共有部120、送出制御部130、およびデータ変換部140は、メモリ110と同一のダイ上に構成される。これにより、半導体メモリチップ100内にセキュリティ機能を持たせ、メモリカードの偽造等によるデータの不正利用を防止することができる。暗号鍵共有部120、送出制御部130、およびデータ変換部140の機能の詳細については後述する。
【0093】
次に、コントローラー200の機能の概要について説明する。コントローラー200は、暗号鍵共有部210と、読出制御部220と、書込制御部230と、一般領域読出部240と、一般領域書込部250と、を備えている。
【0094】
暗号鍵共有部210は、半導体メモリチップ100との間で共有する暗号鍵を保持または生成する。読出制御部220は、読み出し装置および再生装置などの外部装置(図示せず)からの要求に応じて、半導体メモリチップ100の共通領域114からデータを読み出す処理を制御する。書込制御部230は、書き込み装置300などの外部装置からの要求に応じて、半導体メモリチップ100の共通領域114にデータを書き込む処理を制御する。
【0095】
一般領域読出部240は、一般領域115からのデータの読み出しを制御する。すなわち、一般領域115からデータを読み出す場合、読み出し装置は、コントローラー200の一般領域読出部240に対して、読み出し対象となるページの指定を入力する。
【0096】
一般領域読出部240は、指定されたページのデータを読み出すと共に、符号記憶部111から指定されたページに対応するECCを読み出す。また、一般領域読出部240は、ECCを用いて読み出したページのエラーをチェックする。エラーが無ければ、一般領域読出部240は読み出したページのデータを出力する。エラーが存在して修復可能である場合は、一般領域読出部240は、読み出したページのデータを修復して出力する。それ以外の場合は、一般領域読出部240はエラーコードを出力する。
【0097】
一般領域書込部250は、一般領域115へのデータ書き込みを制御する。すなわち、一般領域115へデータを書き込む場合、書き込み装置300は、コントローラー200の一般領域書込部250に対してデータを入力する。この際、書き込み装置300は、書き込み先のページ(メモリ内の領域)の指定も一般領域書込部250に入力する。
【0098】
一般領域書込部250は、入力されたデータのECCを生成し、一般領域115のうち、指定されたページにデータを書き込むと共に、生成したECCを指定されたページに対するECCとして符号記憶部111に記録する。
【0099】
次に、半導体メモリチップ100の暗号鍵共有部120とコントローラー200の暗号鍵共有部210の構成例について図3Aを用いて説明する。図3Aに示すように、暗号鍵共有部120は、メディア鍵を表すKM121(以下、メディア鍵KMという)と、MKB(Media Key Block)122とを保持している。MKB122については、例えば非特許文献1に記載されている。また、暗号鍵共有部210は、デバイス鍵を表すKD212を保持している。また、暗号鍵共有部210は、MKB読み取り部211と、MKB処理部213と、を備えている。
【0100】
MKB読み取り部211は、半導体メモリチップ100の暗号鍵共有部120からMKB122を読み出す。MKB処理部213は、読み出されたMKBをデバイス鍵KD212を用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。
【0101】
なお、図3Aの例では、半導体メモリチップ100の暗号鍵共有部120がコントローラー200の暗号鍵共有部210を認証している。
【0102】
次に、図3Aのように構成された暗号鍵共有部120と暗号鍵共有部210との間で暗号鍵を共有する暗号鍵共有処理について図4Aを用いて説明する。図4Aは、第2の実施の形態における暗号鍵共有処理の全体の流れを示すフローチャートである。
【0103】
コントローラー200が半導体メモリチップ100の読み出し特殊領域112からデータを読み出す際、まず、コントローラー200の暗号鍵共有部210のMKB読み取り部211が、半導体メモリチップ100のMKB122を読み出す(ステップS101)。MKB122は、コントローラー200から常に自由に読み出しが可能である。MKB読み取り部211は、読み出したMKB122をMKB処理部213に送る(ステップS102)。
【0104】
MKB処理部213は、コントローラー200の暗号鍵共有部210が保持しているデバイス鍵KD212を読み込み、MKB処理を行う(ステップS103)。次に、MKB処理部213は、MKB処理によりメディア鍵KMが得られたか否かを判断する(ステップS104)。デバイス鍵KD212がMKB122によって無効化されている場合、MKB処理によって正しくメディア鍵KMを得ることができない。この場合、MKB処理部213は、メディア鍵KMが得られなかったと判断し(ステップS104:No)、コントローラー200にエラーを通知する(ステップS105)。コントローラー200は、エラーの通知を受けると、読み出し動作を中止する。
【0105】
一方、デバイス鍵KD212がMKB122によって無効化されていない場合、MKB処理によって正しいメディア鍵KMが得られる。この場合、MKB処理部213は、メディア鍵KMが得られたと判断し(ステップS104:Yes)、得られたメディア鍵KMをコントローラー200の読出制御部220に送る(ステップS106)。半導体メモリチップ100側では、暗号鍵共有部120が格納しているメディア鍵KMが送出制御部130に送られる(ステップS107)。
【0106】
次に、半導体メモリチップ100の送出制御部130とコントローラー200の読出制御部220の構成例について図5を用いて説明する。図5に示すように、送出制御部130は、乱数発生部131と、読出部132と、暗号化部133と、送出部134とを備えている。
【0107】
乱数発生部131は、暗号化部133の要求に応じて乱数を発生する。読出部132は、指定された読み出し対象ページのデータと、当該データのECCとをメモリ110から読み出す。暗号化部133は、読み出されたデータをメディア鍵KMを用いて暗号化する。送出部134は、暗号化されたデータ(暗号化データ)とECCとをコントローラー200のデータ受信部221に送出する。
【0108】
また、図5に示すように、読出制御部220は、データ受信部221と、復号部222と、エラー修復部223とを備えている。データ受信部221は、半導体メモリチップ100の送出部134から暗号化データとECCとを受信する。復号部222は、受信された暗号化データをメディア鍵KMを用いて復号する。エラー修復部223は、受信されたECCを用いて、復号されたデータのエラー有無のチェックおよびエラー修復を行う。
【0109】
次に、図5のように構成された送出制御部130と読出制御部220との間で読み出したデータを送受信するデータ読出処理について図6を用いて説明する。図6は、第2の実施の形態におけるデータ読出処理の全体の流れを示すフローチャートである。
【0110】
読出制御部220は、暗号鍵共有部210からメディア鍵KMを受け取ると(ステップS201)、復号部222に受け取ったメディア鍵KMを入力する(ステップS202)。次に、読出制御部220は、送出制御部130にデータ送出要求を送る。この際、読み出し対象ページの指定も併せて送られる(ステップS203)。送出制御部130の読出部132は、指定されたページのデータを読み出し、暗号化部133に入力する(ステップS204)。また、読出部132は、読み出し対象ページに対応するECCを符号記憶部111から読み出し、送出部134に入力する(ステップS205)。
【0111】
次に、暗号化部133が、乱数発生部131に乱数発生要求を送る(ステップS206)。乱数発生部131は、乱数を発生して暗号化部133に送る(ステップS207)。暗号化部133は、暗号鍵共有部120からメディア鍵KMを取得する(ステップS208)。暗号化部133は、指定されたページのデータと乱数とを連結し、連結して得られたデータをメディア鍵KMで暗号化した暗号化データD’を生成する(ステップS209)。そして、暗号化部133は、暗号化データD’を送出部134に送る(ステップS210)。送出部134は、入力された暗号化データD’と入力されたECCとをコントローラー200のデータ受信部221に送出する(ステップS211)。
【0112】
なお、読み出し対象ページの中で重要なデータはページの一部かもしれない。このような場合、暗号化部133が、重要なデータが含まれるページの一部のみを暗号化するように構成してもよい。例えば、ページの先頭48バイトのみが重要なデータである場合、暗号化部133がページの先頭48バイトと16バイトの乱数を連結した64バイトのみ暗号化するようにしても良い。これにより、暗号化による処理負荷の増加を最小限に抑制することができる。
【0113】
次に、読出制御部220のデータ受信部221は、暗号化データとECCとを受信する(ステップS212)。そして、データ受信部221は、受信したECCをエラー修復部223に送る(ステップS213)。エラー修復部223は、受け取ったECCを保持する。また、データ受信部221は、受信した暗号化データD’を復号部222に送る(ステップS214)。復号部222は、コントローラー200の暗号鍵共有部210から受け取ったメディア鍵KMを用いて、暗号化データD’を復号する(ステップS215)。
【0114】
この復号の結果、平文の読み出しデータDと乱数とが得られる。復号部222は、予め定められたフォーマットにしたがい、復号したデータから、読み出しデータDと乱数とを区別することができる。例えば、暗号化部133が64バイトのみを暗号化する上述の例では、復号したデータのうち、先頭の48バイトが読み出しデータDであり、続く16バイトが乱数である。
【0115】
復号部222は、読み出しデータDのみをエラー修復部223に転送する(ステップS216)。エラー修復部223は、保持しているECCを用いて読み出しデータDのエラーをチェックする(ステップS217)。そして、エラー修復部223は、エラーがあるか否かを判断する(ステップS218)。エラーが無い場合(ステップS218:No)、コントローラー200は、読み出しデータDの読み出しを要求した外部装置に、読み出しデータDを出力する(ステップS219)。
【0116】
エラーがある場合(ステップS218:Yes)、エラー修復部223は、さらにエラーが修復可能か否かを判断する(ステップS220)。エラーが修復可能な場合(ステップS220:Yes)、エラー修復部223は、保持しているECCを用いて読み出しデータDのエラーを修復する(ステップS221)。そして、コントローラー200は、修復後の読み出しデータDを出力する(ステップS219)。
【0117】
エラーが修復不可能な場合(ステップS220:No)、エラー修復部223は、コントローラー200にエラーを通知する(ステップS222)。この場合、コントローラー200は、例えばエラーが発生したことを読み出しを要求した外部装置に送信する。
【0118】
図4Aで説明した処理により、有効なデバイス鍵KD212を有する正規のコントローラー200のみが、半導体メモリチップ100と共通の暗号鍵であるメディア鍵KMを得ることができる。また、図6で説明した処理により、正規のコントローラー200のみが、共通のメディア鍵KMにより正常に復号されたデータを得ることができる。即ち、半導体メモリチップ100によるコントローラー200の認証が実現できる。
【0119】
このように、半導体メモリチップ100の暗号鍵共有部120と送出制御部130との組み合わせが、コントローラー200を認証する認証手段とみなすことができる。この認証手段により読み出されるデータを記憶する半導体メモリチップ100上のメモリ110内の領域が、読み出し特殊領域に相当する。
【0120】
なお、暗号鍵共有部120および暗号鍵共有部210の構成は図3Aに示すものに限られるものではない。半導体メモリチップ100とコントローラー200との間で暗号鍵を共有できるものであればあらゆる構成を適用できる。
【0121】
上述のように、半導体メモリチップがコントローラーを認証する為にMKBを用いる事ができる。このMKBは通常、半導体メモリチップ製造時に半導体メモリチップの書き込み特殊領域または一般領域に記録される。本発明の半導体メモリチップとコントローラーとを具備する機器がネットワーク経由で書き込み装置に接続される事がある。或いは、本発明の半導体メモリチップとコントローラーとを用いて構成されたメモリカードが店舗の書き込み装置に接続される事がある。本発明の半導体メモリチップがコントローラーを介して書き込み装置に接続される、このような機会は、半導体メモリチップ上のMKBを更新する良い機会である。MKBには、コントローラーが保持するデバイス鍵を無効化する為の情報が含まれている。従って、MKBは最新の状態に保つ事が望ましい。書き込み装置による更新の方法は単純である。例えば、書き込み装置がコントローラーを介して書き込み認証領域(後述)または一般領域のMKBを上書きすれば良い。
【0122】
MKBの更新頻度を高める為には、半導体メモリチップが内蔵するメディア鍵を半導体メモリチップ自身で更新できるような仕組みを持たせておく事が望ましい。これを、図3Bに図示する。これは暗号鍵共有部が保持するメディア鍵KMを更新する仕組みである。新しいMKBが書き込み認証領域200202の予め定められたアドレスに書き込まれる(ステップS200201)。これをトリガーとして、暗号鍵共有部200201が当該MKBを読み込み、MKB処理部2002012に送る。MKB処理部2002012は暗号鍵共有部が保持するデバイス鍵KDを読み込み、MKB処理を行う(ステップS200202)。デバイス鍵KDが前記MKBによってリボークされていない場合、メディア鍵KMが得られる。暗号鍵共有部は当該メディア鍵KMを格納・保持する(ステップS200203)。デバイス鍵KDが前記MKBによってリボークされていた場合、暗号鍵共有部はエラーを通知して停止する(ステップS200204)。上記の動作については図4Bを参照の事。
【0123】
図7は、暗号鍵共有部120の変形例(暗号鍵共有部120−2)と暗号鍵共有部210の変形例(暗号鍵共有部210−2)を示すブロック図である。図7に示すように、暗号鍵共有部120−2は、メディア鍵KMおよびMKB122を保持する他に、乱数生成部123と、乱数送信部124と、一時鍵生成部125とを備えている。また、暗号鍵共有部210−2は、デバイス鍵KD212、MKB読み取り部211、およびMKB処理部213の他に、乱数受信部214と、一時鍵生成部215とを備えている。
【0124】
乱数生成部123は、乱数送信部124からの要求に応じて乱数を発生する。乱数送信部124は、発生された乱数を、コントローラー200の乱数受信部214、および、半導体メモリチップ100の一時鍵生成部125に送信する。一時鍵生成部125は、メディア鍵KMおよび受信した乱数を用いて一時鍵Kを生成する。例えば、一時鍵生成部125は、AES−Gなどの一方向性関数を用いて、メディア鍵KMと乱数とから一時鍵Kを生成する。
【0125】
乱数受信部214は、乱数送信部124から乱数を受信する。一時鍵生成部215は、半導体メモリチップ100の一時鍵生成部125と同様の手法により、MKB処理部213から受け取ったメディア鍵KMと、乱数受信部214により受信された乱数とから一時鍵Kを生成する。
【0126】
図7の例でも、半導体メモリチップ100の暗号鍵共有部120−2がコントローラー200の暗号鍵共有部210−2を認証している。
【0127】
次に、図7のように構成された暗号鍵共有部120−2と暗号鍵共有部210−2との間で暗号鍵を共有する暗号鍵共有処理について図8を用いて説明する。図8は、第2の実施の形態の変形例における暗号鍵共有処理の全体の流れを示すフローチャートである。
【0128】
ステップS301〜ステップS305は、図4AのステップS101〜ステップS105と同様の処理なので説明を省略する。
【0129】
ステップS304で、正しいメディア鍵KMが得られたと判断された場合(ステップS304:Yes)、MKB処理部213は、得られたメディア鍵KMを一時鍵生成部215に送る(ステップS306)。次に、コントローラー200の暗号鍵共有部210の乱数受信部214が、半導体メモリチップ100の乱数送信部124に対して乱数送信要求を送る(ステップS307)。乱数送信部124は、乱数生成部123に乱数発生要求を送る(ステップS308)。乱数生成部123は、乱数Rを生成する(ステップS309)。乱数送信部124は、生成された乱数Rを受け取り、乱数Rをコントローラー200の乱数受信部214に送信する(ステップS310)。コントローラー200の乱数受信部214は、受信した乱数Rをコントローラー200の一時鍵生成部215に転送する(ステップS311)。一時鍵生成部215は、MKB処理部213から受け取ったメディア鍵KMと乱数Rとから一時鍵Kを生成する(ステップS312)。また、一時鍵生成部215は、生成した一時鍵Kをコントローラー200の読出制御部220に送る(ステップS313)。
【0130】
一方、乱数送信部124は、半導体メモリチップ100の一時鍵生成部125にも乱数Rを送る(ステップS314)。乱数Rを受信した一時鍵生成部125は、半導体メモリチップ100の暗号鍵共有部120が予め格納しているメディア鍵KMを読み取る(ステップS315)。そして、一時鍵生成部125は、メディア鍵KMと乱数Rと組み合わせて一時鍵Kを生成する(ステップS316)。また、一時鍵生成部125は、生成した一時鍵Kを半導体メモリチップ100の送出制御部130に送る(ステップS317)。
【0131】
コントローラー200のMKB処理が正しく行われ、正しいメディア鍵KMが生成されたならば、半導体メモリチップ100とコントローラー200とが、それぞれ独立に生成する一時鍵Kは同一になる。
【0132】
次に、図7のように構成された暗号鍵共有部120−2および暗号鍵共有部210−2に対応する送出制御部130の変形例(送出制御部130−2)と読出制御部220の変形例(読出制御部220−2)について図9を用いて説明する。図9に示すように、送出制御部130−2は、読出部132と、暗号化部133−2と、送出部134とを備えている。本変形例では、乱数発生部131が削除されたこと、および、暗号化部133−2の機能が、図5の送出制御部130と異なっている。暗号化部133−2は、主にメディア鍵KMの代わりに一時鍵Kを用いてデータを暗号化する点が、図5の暗号化部133と異なっている。
【0133】
また、図9に示すように、読出制御部220−2は、データ受信部221と、復号部222−2と、エラー修復部223とを備えている。本変形例では、復号部222−2の機能が、図5の読出制御部220と異なっている。復号部222−2は、主にメディア鍵KMの代わりに一時鍵Kを用いてデータを復号する点が、図5の復号部222と異なっている。
【0134】
次に、図9のように構成された送出制御部130−2と読出制御部220−2との間で読み出したデータを送受信するデータ読出処理について図10を用いて説明する。図10は、第2の実施の形態の変形例におけるデータ読出処理の全体の流れを示すフローチャートである。
【0135】
読出制御部220−2の復号部222−2が暗号鍵共有部210−2から一時鍵Kを受け取ると(ステップS401)、復号部222−2は受け取った一時鍵Kを保持する。また、データ受信部221が、半導体メモリチップ100の送出制御部130−2に対して、読み出し対象ページの指定と共にデータ送出要求を送る(ステップS402)。送出制御部130は、読出部132に読み出し対象ページの指定とデータ読み出し指示を送る(ステップS403)。読出部132は、メモリ110の読み出し対象ページからデータDを読み出す(ステップS404)。
【0136】
一方、暗号化部133−2は、暗号鍵共有部120−2から一時鍵Kを受け取る(ステップS405)。次に、暗号化部133−2は、一時鍵Kを用いてデータDを暗号化し、暗号化データD’=Enc(K,D)を生成する(ステップS406)。なお、Enc(K,D)とは、一時鍵Kを用いてデータDを暗号化することを意味する。暗号化部133−2は、生成した暗号化データD’を送出部134に送る(ステップS407)。
【0137】
読出部132は、データDのECCをメモリ110の符号記憶部111から読み出す(ステップS408)。送出部134は読み出されたECCを保持する。送出部134は、暗号化データD’と保持しているECCとを、読出制御部220−2のデータ受信部221に送る(ステップS409)。
【0138】
データ受信部221は、送出部134から暗号化データD’とECCとを受け取ると、暗号化データD’を復号部222−2に送り(ステップS410)、ECCをエラー修復部223に送る(ステップS411)。エラー修復部223は、受け取ったECCを保持する。復号部222−2は、暗号化データD’を受け取ると、保持している一時鍵Kを用いて暗号化データD’を復号し、データDを得る(ステップS412)。次に、復号部222−2は、復号したデータDをエラー修復部223に送る(ステップS413)。
【0139】
ステップS414〜ステップS419は、図6のステップS217〜ステップS222と同様の処理なので説明を省略する。
【0140】
次に、図7のように構成された暗号鍵共有部120−2および暗号鍵共有部210−2に対応する送出制御部130および読出制御部220の別の変形例(送出制御部130−3および読出制御部220−3)について図11Aを用いて説明する。図11Aに示すように、送出制御部130−3は、読出部132−3と、暗号化部133−3と、送出部134−3とを備えている。
【0141】
読出部132−3は、読み出したECCを送出部134−3ではなく、暗号化部133−3に送信する。暗号化部133−3は、データDとECCとを連結したデータを暗号化する。送出部134−3は、このようにして暗号化されたデータを読出制御部220−3に送出する。
【0142】
一方、図11Aに示すように、読出制御部220−3は、データ受信部221−3と、復号部222−3と、エラー修復部223−3とを備えている。
【0143】
データ受信部221−3は、データDとECCとを暗号化した暗号化データを受信し、受信した暗号化データを復号部222−3に送信する。復号部222−3は、暗号化データを復元してデータDとECCとを求め、エラー修復部223−3に送信する。エラー修復部223−3は、このようにして復号部222−3から受信したデータDとECCとを用いて、エラーのチェックおよびエラー修復を実行する。
【0144】
次に、図11Aのように構成された送出制御部130−3と読出制御部220−3との間で読み出したデータを送受信するデータ読出処理について図11Bを用いて説明する。図11Bは、第2の実施の形態の別の変形例におけるデータ読出処理の全体の流れを示すフローチャートである。
【0145】
読出制御部220の復号部222−3が暗号鍵共有部210−2から一時鍵Kを受け取ると(ステップS501)、復号部222−3は、受け取った一時鍵Kを保持する。また、データ受信部221−3は、半導体メモリチップ100の送出制御部130−3に、読み出し対象ページの指定と共にデータ送出要求を送る(ステップS502)。送出制御部130−3は、読出部132−3に読み出し指定ページとデータ読み出し指示とを送る(ステップS503)。読出部132−3は、メモリの指定された読み出し対象ページのデータDを読み出す(ステップS504)。また、読出部132−3は、読み出したデータDのECCをメモリ110の符号記憶部111から読み出す(ステップS505)。次に、暗号化部133−3が、暗号鍵共有部120−2から一時鍵Kを受け取る(ステップS506)。暗号化部133−3は、受け取った一時鍵Kを用いてデータDとECCとを連結(concatenate)したデータD||ECCを暗号化した暗号化データD’=Enc(K,D||ECC)を生成する(ステップS507)。そして、暗号化部133−3は、暗号化データD’を送出部134に送る(ステップS508)。送出部134は、暗号化データD’を読出制御部220のデータ受信部221に送る(ステップS509)。
【0146】
データ受信部221は、送出部134から暗号化データD’を受け取ると、当該暗号化データD’を復号部222−3に送る(ステップS510)。復号部222−3は、暗号化データD’を受け取ると、保持している一時鍵Kを用いて暗号化データD’を復号し、データDとECCとを得る(ステップS511)。復号部222−3は、データDとECCとをエラー修復部223−3に送る(ステップS512)。
【0147】
ステップS513〜ステップS518は、図6のステップS217〜ステップS222(図10のステップS414〜ステップS419)と同様の処理なので説明を省略する。
【0148】
図7の暗号鍵共有部120−2と、図9の送出制御部130−2または図11Aの送出制御部130−3のいずれか一方との組み合わせが、コントローラー200を認証する認証手段とみなすことができる。これらの認証手段により読み出されるデータを記憶する半導体メモリチップ100上のメモリ110内の領域が、読み出し特殊領域に相当する。
【0149】
公開鍵を用いて半導体メモリチップからコントローラーを認証する実施例を次に述べる。図12Aは本実施例の半導体メモリチップとコントローラーの構成を示すブロック図である。本実施例の半導体メモリチップとコントローラーの暗号鍵共有部の構成を、それぞれ図12Aと図12Bのブロック図に示す。半導体メモリチップ100Aの暗号鍵共有部120Aは、コントローラー200Aのバージョン情報を受け取るバージョン情報取得部1201Aを具備する。また、前記暗号鍵共有部120Aは、一つ以上の公開鍵を格納する公開鍵リスト格納部を具備する。本実施例では、コントローラー200Aが保持する秘密鍵にバージョン情報が対応している。即ち、コントローラー200Aのバージョン情報を知れば、当該コントローラー200Aが保持する秘密鍵に対応する公開鍵が定まる。半導体メモリチップ100Aの暗号鍵共有部120Aの乱数発生部は、転送するページのデータを暗号化する為の暗号鍵を生成する。コントローラー200Aの暗号鍵共有部210Aは、秘密鍵を格納する秘密鍵格納部2101Aと、前記秘密鍵に対応するバージョン情報を格納するバージョン情報格納部2102Aとを具備している。なお、バージョン情報は、例えば、数値や文字列である。
【0150】
図12Cに半導体メモリチップ100Aとコントローラー200Aの暗号鍵共有部(120A、210A)の動作を示す。コントローラー200Aに(読出し特殊領域の)読出し対象ページの指定が入力される(ステップS3000)。コントローラー200Aは当該コントローラーの暗号鍵共有部210Aのバージョン情報格納部2102Aに格納されているバージョン情報を半導体メモリチップ100Aに送る(ステップS3001)。半導体メモリチップ100Aの暗号鍵共有部120Aのバージョン情報取得部1201Aが、前記バージョン情報を受信する(ステップS3002)。前記バージョン情報格納部1201Aが受信したバージョン情報を公開鍵選択部1203Aに送る(ステップS3003)。公開鍵選択部1203Aは、バージョン情報に対応する公開鍵を検索する(ステップS3004)。バージョン情報に対応する公開鍵が見つからなかった場合、暗号鍵共有部120Aは動作を中止し以後の処理を行わない。さもなければ、公開鍵選択部1203Aは見つかった公開鍵KPを暗号化部1205Aに送る(S3006)。乱数発生部1204Aがデータ暗号鍵Kを発生し、Kを暗号化部1205Aに送る(ステップS3007)。暗号化部1205Aは公開鍵KPによってデータ暗号鍵Kを暗号化する。その結果をK’とする(ステップS3008)。即ち、K’= Enc( KP, K )である。暗号化部1205Aは、データ暗号鍵Kと暗号化データ暗号鍵K’とを、半導体メモリチップ100Aの送出制御部130Aに送る(ステップS3009)。
【0151】
図12Dは本実施例の半導体メモリチップ100Aの送出制御部130Aの構成を示すブロック図である。また、図12Eは本実施例のコントローラー200Aの読出制御部220Aの構成を示すブロック図である。図12Gおよび図12Hに本実施例の動作の一部を示す。これは、図12Cに示す動作の続きである。図12CのステップS3009で、半導体メモリチップ100Aの送出制御部130Aはデータ暗号鍵Kと暗号化データ暗号鍵K’とを受け取るが、送出制御部130Aの暗号化部1301Aが暗号鍵Kを受け取り(ステップS3010)、送出制御部130Aのデータ転送部1302Aが暗号化データ暗号鍵K’を受け取る(ステップS3011)。次いで、半導体メモリチップ100Aの送出制御部130Aは、コントローラー200Aの読出制御部220Aに読出し準備完了を通知する(ステップS3012)。それを受け、コントローラー200Aの読出制御部220Aは、半導体メモリチップ100Aの送出制御部130Aに対して、読出し対象ページの指定を送る(ステップS3013)。送出制御部130Aは、(メモリの読出し特殊領域に含まれる)読出し対象ページのデータDを読出し、暗号化部1301Aに入力する(ステップS3014)。暗号化部1301Aは前記データDをデータ暗号鍵Kで暗号化しEnc( K, D )を得て(ステップS3015)、当該暗号化データEnc( K, D )をデータ転送部1302Aに送る(ステップS3016)。データ転送部1302Aは、読出し対象ページのECCを符号記憶部から読出す(ステップS3017)。データ転送部1302Aは、暗号化データ暗号鍵K’と前記ECC、及び、暗号化データEnc( K, D )を、コントローラー200Aの読出制御部220Aに送る(ステップS3018)。
【0152】
データ転送部1302Aがコントローラーに送るデータの形式を図12Fに示す。暗号化データ暗号鍵は20バイトのサイズを持つ。データ暗号鍵そのものは16バイトであるが、本実施例では公開鍵暗号方式として160ビットの楕円曲線暗号を採用している為、暗号化データ暗号鍵のサイズは20バイトとなる。メモリの一ページの大きさは2Kバイト=2048バイトであり、一ページのデータに対するECCのサイズは3バイトである。図12Fでは、20バイトの暗号化データ暗号鍵、ECC、暗号化データの順にデータが並んでいる。
【0153】
次いで、図12Hに示すように、コントローラーの読出制御部のデータ転送部が前記データ形式の暗号化データ鍵K’とECC、2Kバイトの暗号化データを受信する(ステップS3019)。データ転送部は暗号鍵共有部の秘密鍵格納部から秘密鍵KSを読み出す(ステップS5U)。データ転送部は秘密鍵KSを用いて暗号化データ暗号鍵K’を復号。データ暗号鍵Kを得る(ステップS3021)。データ転送部は、データ暗号鍵KとECC、暗号化データEnc( K, D )を復号部に送る(ステップS3022)。復号部は、データ暗号鍵Kで暗号化データEnc( K, D )を復号しデータDを得る(ステップS3023)。復号部はデータDとECCとを読み出しデータとして出力する(ステップS3024)。利用装置が、必要に応じて、ECCを用いてデータDのエラー修正を行う。
【0154】
このように、読み出し特殊領域を用いてコントローラー200を認証する認証手段を備えることにより、メモリカードの偽造等によるデータの不正利用を防止することができる。
【0155】
なお、上述の実施例において、半導体メモリチップからコントローラーが認証されているが、再生装置などの利用装置を半導体メモリチップが認証するようにしても良い。その場合は、利用装置が半導体メモリチップからMKBを読み出して処理を行うなど、コントローラーと同様の動作を行い、半導体メモリチップの読み出し特殊領域からデータを読み出して利用する。利用装置が認証される場合の構成を図12Jのブロック図に示す。暗号鍵共有部と読出制御部が利用装置に含まれている事が、図2Bと異なる図12Jの特徴である。各部の動作は図2Bの場合と同様である。読み出し特殊領域からのデータ読み出し動作において、コントローラーは単にデータの中継のみを行う。図12Jのような構成により、図12Kに示すトラスト・チェインが構築される。書き込み装置が半導体メモリを認証し、かつ、半導体メモリが利用装置を認証する。
【0156】
次に、書き込み特殊領域113Bを用いて書き込み装置300Bによる半導体メモリチップ100Bの認証を実現する構成について以下に説明する。この構成によっても、メモリカードの偽造等によるデータの不正利用を防止することができる。また、読み出し特殊領域112B(共通領域)からの読み出し機能、および、書き込み特殊領域113B(共通領域)への書き込み機能の両方を備えるように構成すれば、上述のように半導体メモリチップ100Bをトラスト・チェインに組み込むことが可能となり、セキュリティ機能をさらに向上させることができる。
【0157】
図13は、コントローラー200に書き込み装置300が接続されて、半導体メモリチップ100の書き込み特殊領域113に書き込みを行う様子を示す図である。ただし、図13では、書き込み処理に関わる部分のみが図示されている。
【0158】
まず、書き込み装置300が、書き込みが要求されたデータ(書込データ)を暗号化した暗号化データ、書込先ページの指定、および書込データに対するECCをコントローラー200に送信する。コントローラー200の書込制御部230は、暗号化データとECCとを半導体メモリチップ100のデータ変換部140に送出する。データ変換部140は、暗号化データを変換(復号)し、得られた変換データ(書込データ)を書き込み特殊領域113に書き込むとともに、ECCを符号記憶部111に書き込む。
【0159】
次に、図13の書き込み装置300、コントローラー200の書込制御部230、および、半導体メモリチップ100のデータ変換部140の構成例について図14を用いて説明する。図14に示すように、書き込み装置300は、ECC生成部310と、鍵記憶部320と、暗号化部330と、データ送信部340とを備えている。
【0160】
ECC生成部310は、書き込むべきデータとして入力された書込データのECCを生成する。鍵記憶部320は、書込データの変換に用いるデータ変換鍵(第1鍵)を記憶する。本実施の形態では、鍵記憶部320は、公開鍵方式の公開鍵Kpをデータ変換鍵として記憶している。この公開鍵Kpは、半導体メモリチップ100の鍵記憶部141(後述)が記憶するデータ変換鍵(第2鍵)である秘密鍵Ksに対応する公開鍵である。
【0161】
なお、適用可能な暗号化方式は公開鍵方式に限られるものではない。また、以下では、書き込み装置300がデータ変換鍵(公開鍵Kp)を用いて書込データを暗号化し、半導体メモリチップ100が対応するデータ変換鍵(秘密鍵Ks)で書込データを復号してメモリ110に記憶する場合を例に説明する。書き込み装置300がデータ変換鍵(第1鍵)を用いてデータを変換し、半導体メモリチップ100が、第1鍵に対応するデータ変換鍵(第2鍵)を用いて変換後のデータを変換するものであれば、これ以外の変換方法を適用してもよい。例えば、書き込み装置300が第1鍵を用いて復号に相当する変換処理を実行し、半導体メモリチップ100が、第1鍵に対応する第2鍵を用いて暗号化に相当する変換処理を実行するように構成してもよい。
【0162】
暗号化部330は、公開鍵Kpを用いて書込データを暗号化する。また、暗号化部330は、公開鍵Kpを用いてECCを暗号化した符号(変換符号)を生成する。なお、以下では、暗号化された書込データを暗号化データといい、ECCを暗号化した変換符号を暗号化ECCという場合がある。データ送信部340は、暗号化データと、暗号化ECCと、書込先ページの指定とをコントローラー200の書込制御部230に送信する。
【0163】
次に、コントローラー200の書込制御部230の構成例について説明する。図14に示すように、書込制御部230は、データ転送部231を備えている。データ転送部231は、暗号化データと、暗号化ECCと、書込先ページ指定とを受信し、これらの情報を半導体メモリチップ100のデータ変換部140に送信する。
【0164】
次に、データ変換部140の構成例について説明する。図14に示すように、データ変換部140は、鍵記憶部141と、復号部142と、書込部143とを備えている。
【0165】
鍵記憶部141は、公開鍵方式の秘密鍵Ksを記憶する。復号部142は、鍵記憶部141の秘密鍵Ksを用いて暗号化データと暗号化ECCとを復号する。なお、暗号化データから復号された書込データが、変換データに相当する。書込部143は、復号された書込データをメモリ110上の書き込み特殊領域113の指定されたページに記録する。また、書込部143は、復号されたECCをメモリ110の符号記憶部111に格納する。
【0166】
次に、図14のように構成された書き込み装置300、書込制御部230、および、データ変換部140による書込データの書き込み処理について図15を用いて説明する。図15は、第2の実施の形態における書き込み処理の全体の流れを示すフローチャートである。
【0167】
書き込み装置300は、書込データ(データD)と書込先ページの指定とを入力する(ステップS601)。次に、ECC生成部310が、データDのECCを生成し、生成したECCとデータDとを暗号化部330に転送する(ステップS602)。暗号化部330は、鍵記憶部320から公開鍵Kpを取得する(ステップS603)。次に、暗号化部330は、公開鍵Kpによって、データDとECCとを暗号化し、暗号化データD’と暗号化ECCとを得る(ステップS604)。暗号化部330は、暗号化データD’と暗号化ECCとをデータ送信部340に送る(ステップS605)。データ送信部340は、暗号化データD’、書込先ページの指定、および、暗号化ECCをコントローラー200の書込制御部230に送信する(ステップS606)。
【0168】
書込制御部230のデータ転送部231は、暗号化データD’、書込先ページ指定、および、暗号化ECCを受信し、それらを半導体メモリチップ100のデータ変換部140に送信する(ステップS607)。
【0169】
データ変換部140が受信した暗号化データD’および暗号化ECCは、復号部142に入力される。復号部142は、鍵記憶部141から秘密鍵Ksを取得する(ステップS608)。次に、復号部142は、秘密鍵Ksを用いて暗号化データD’および暗号化ECCを復号し、データDおよびECCを得る(ステップS609)。次に、書込部143は、復号されたデータDを、書込先ページ指定によって指定されたメモリ110上のページに記録する。また、書込部143は、復号されたECCを、指定されたページに対応するECCとして、メモリ110の符号記憶部111に格納する(ステップS610)。
【0170】
なお、一般に公開鍵による暗号化および復号は大きな計算量を要する。ページのサイズは例えば約2KB程度であるが、実際に書き込むデータは暗号鍵などの小さなデータ(例えば16B程度)である。従って、特に半導体メモリチップ100での復号の負荷を避けるため、例えば、次のような工夫を行っても良い。すなわち、最小限のデータのみ暗号化および復号するように構成してもよい。図16は、このように構成した場合のデータの変化の様子を表す図である。
【0171】
まず、一例として、ページサイズを2048B、書込データのサイズを16B、ECCのサイズを3Bとする。ECC生成部310には、先頭の16Bの鍵データ+残り2032Bの0からなる1ページ分のデータを入力する(1601)。暗号化部330は、1ページ分のデータの17B目から3BのECCを記録した後、先頭20Bのみ暗号化を行う(1602)。復号部142は、先頭20Bのみ復号した後(1603)、1ページ分のデータの17B目から3BをECCとして符号記憶部111に格納する(1604)。次に、17B目から3Bを0で上書き後、メモリ110の書き込み特殊領域113に1ページ分のデータを記録する(1605)。
【0172】
書き込み特殊領域113へのデータ書き込みは、必ず半導体メモリチップ100のデータ変換部140を経由して行われる。本実施の形態では、書き込み装置300にデータDが入力された場合、データDとデータDに対するECCであるECC(D)は、書き込み装置300が保持する公開鍵Kpで暗号化される。そして、半導体メモリチップ100のデータ変換部140には、暗号化データD’=Enc(Kp,D)と暗号化ECC=Enc(Kp,ECC(D))とが入力される。
【0173】
書き込み特殊領域113にデータDが正しく記録され、かつ、符号記憶部111にECC(D)が正しく記録されるためには、半導体メモリチップ100が秘密鍵Ksを保持している必要がある。即ち、書き込み装置300が半導体メモリチップ100を認証している。上述のデータ変換部140経由で書き込まれるメモリ領域が書き込み特殊領域113に相当する。
【0174】
次に、図14のデータ変換部140、書込制御部230、および、書き込み装置300の変形例について図17Aを用いて説明する。図17Aは、本変形例にかかる書き込み装置300−2、書込制御部230−2、および、データ変換部140−2の構成の一例を示すブロック図である。
【0175】
図17Aに示すように、書き込み装置300−2は、ECC生成部310−2と、鍵記憶部320−2と、暗号化部330−2と、データ送信部340と、鍵選択部350と、を備えている。データ送信部340の機能は、図14と同様であるため、同一の符号を付し説明は省略する。
【0176】
ECC生成部310−2は、生成したECCを暗号化部330−2ではなく、データ送信部340に送信する点が、図14のECC生成部310と異なっている。
【0177】
鍵記憶部320−2は、対称鍵方式のデータ変換鍵である暗号鍵Kを記憶する。本変形例では、鍵記憶部320−2は、半導体メモリチップ100のバージョンごとに複数の暗号鍵Kを記憶する。図18は、鍵記憶部320−2に記憶されるデータのデータ構造の一例を示す図である。図18に示すように、鍵記憶部320−2は、半導体メモリチップ100のバージョンと、暗号鍵とを対応づけたデータを記憶している。
【0178】
図17Aに戻り、鍵選択部350は、半導体メモリチップ100のバージョンに適合する暗号鍵Kを鍵記憶部320−2から選択する。暗号化部330−2は、選択された暗号鍵Kを用いて書込データとECCとを暗号化する。
【0179】
次に、書込制御部230−2の構成例について説明する。図17Aに示すように、書込制御部230−2は、データ転送部231−2を備えている。データ転送部231−2は、鍵選択部350からの要求に応じて半導体メモリチップ100から読み出されたバージョン情報を転送する機能が追加された点が、図14のデータ転送部231と異なっている。
【0180】
次に、データ変換部140−2の構成例について説明する。図17Aに示すように、データ変換部140は、鍵記憶部141−2と、復号部142と、書込部143と、バージョン情報記憶部144とを備えている。データ変換部140、復号部142、および、書込部143の機能は、図14と同様であるため、同一の符号を付し説明は省略する。
【0181】
バージョン情報記憶部144は、半導体メモリチップ100のバージョン情報を記憶する。鍵記憶部141−2は、対称鍵方式の暗号鍵Kを記憶する。この暗号鍵Kは、半導体メモリチップ100のバージョン情報記憶部144が格納するバージョン情報に対応する暗号鍵である。
【0182】
次に、図17Aのように構成された書き込み装置300−2、書込制御部230−2、および、データ変換部140−2による書込データの書き込み処理について図19を用いて説明する。図19は、本変形例における書き込み処理の全体の流れを示すフローチャートである。
【0183】
書き込み装置300−2は、書込データ(データD)と書込先ページの指定とを入力する(ステップS701)。ECC生成部310−2は、データDのECCを生成し、生成したECCをデータ送信部340に転送する(ステップS702)。また、ECC生成部310−2は、データDを暗号化部330に転送する(ステップS703)。次に、暗号化部330−2が、鍵選択部350に暗号鍵取得要求を送る(ステップS704)。
【0184】
本実施の形態では、暗号鍵は半導体メモリチップ100のバージョンに対応している。バージョンが異なれば暗号鍵も異なる。書き込み装置300の鍵記憶部320−2は、半導体メモリチップ100の各バージョンに対応する暗号鍵を格納しているが、半導体メモリチップ100のバージョンが分からないと対応する暗号鍵が得られない。
【0185】
そこで、鍵選択部350は、暗号化部330−2から暗号鍵取得要求を受け付けると、コントローラー200にバージョン取得要求を送る(ステップS705)。コントローラー200は、半導体メモリチップ100のデータ変換部140のバージョン情報記憶部144から、半導体メモリチップ100のバージョン情報を読み出し、データ転送部231に入力する(ステップS706)。データ転送部231は、バージョン情報を書き込み装置300の鍵選択部350に送信する(ステップS707)。鍵選択部350は、受信したバージョン情報に対応する暗号鍵Kを鍵記憶部320−2から選択する(ステップS708)。そして、鍵選択部350は、選択した暗号鍵Kを暗号化部330−2に送信する(ステップS709)。
【0186】
暗号化部330−2は、送信された暗号鍵Kを用いて、書き込むべきデータ(データD)を暗号化し、暗号化データD’を得る(ステップS710)。暗号化部330−2は、暗号化データD’をデータ送信部340に送る(ステップS711)。データ送信部340は、暗号化データD’、書込先ページの指定、および、ECCを、コントローラー200の書込制御部230−2に送信する(ステップS712)。書込制御部230−2のデータ転送部231−2は、暗号化データD’、書込先ページ指定、およびECCを受信し(ステップS713)、それらを半導体メモリチップ100のデータ変換部140−2に送信する(ステップS714)。
【0187】
データ変換部140−2は、受信した暗号化データD’を復号部142に入力する(ステップS715)。復号部142は、鍵記憶部141−2から暗号鍵Kを取得する(ステップS716)。復号部142は、暗号鍵Kを用いて、暗号化データD’をデータDに復号する(ステップS717)。書込部143は、復号されたデータDを、書込先ページ指定によって指定されたメモリ110上のページに記録する(ステップS718)。また、書込部143は、受信されたECCを、指定されたページに対応するECCとして符号記憶部111に格納する(ステップS719)。
【0188】
図17Aのデータ変換部140−2を経由して記録されるメモリ領域へのデータ記録は、必ずデータ変換部140−2による変換を受ける。データ変換部140−2を経由してデータが記録される領域が書き込み特殊領域113に相当する。
【0189】
書き込み装置300にデータDが入力された場合、データDは半導体メモリチップ100のバージョンに対して選択された暗号鍵Kで暗号化される。そして、半導体メモリチップ100のデータ変換部140−2には、暗号化データD’=Enc(K,D)が入力される。書き込み特殊領域113にデータDが正しく記録されるためには、半導体メモリチップ100が暗号鍵Kを保持している必要がある。即ち、この場合も、書き込み装置300が半導体メモリチップ100を認証している。
【0190】
以下、書き込み特殊領域への別の書き込み方法を述べる。これはMKBを用いるものである。図17Bに、本発明の半導体メモリチップの書き込み特殊領域1に対して、書き込み装置がコントローラーを介して書き込みを行う構成を示す。
【0191】
書き込み装置のメディア鍵格納手段は、当該書き込み装置が保持するMKBのメディア鍵KMを格納している。また、半導体メモリチップのデータ変換手段は、デバイス鍵KDを保持している。図17Bの書き込み装置が、図17Bのコントローラーを介して、図17Bの半導体メモリチップの書き込み特殊領域にデータを書き込む際の動作例を図17Cに示す。データDと書き込み先アドレスの指定が書き込み装置に入力されると(ステップS2001)、当該データDは書き込み装置のECC生成手段に入力される。ECC生成手段は前記データDのECCであるECC( D )を生成し、データと共に暗号化手段に送る(ステップS2002)。暗号化手段は、メディア鍵格納手段からメディア鍵KMを取得し(ステップS2003)、前記メディア鍵KMでデータDとECC( D )とを暗号化して、それぞれD’とECC’とを得る(ステップS2004)。次いで、暗号化手段は、暗号化データD’と暗号化ECC(即ち、ECC’)とをデータ送信手段に送る(ステップS2005)。
【0192】
データ送信手段はMKBを取得し(ステップS2006)、当該MKBをコントローラーに送る(ステップS2007)。当該MKBはコントローラーのデータ書き込み手段のデータ転送部に入力される。データ転送部は当該MKBを半導体メモリチップのデータ変換手段に送る(ステップS2008)。データ変換手段は、受信したMKBをMKB処理部に入力する(ステップS2009)。MKB処理部は、当該データ変換手段が格納するデバイス鍵KDを取得し(ステップS2010)、当該デバイス鍵KDを用いて前記MKBを処理する(ステップS2011)。前記デバイス鍵KDが前記MKBによって無効化されていない時、及び、その時に限って、MKB処理部はメディア鍵KMを出力する。さもなければ、MKB処理部はエラーを出力する。処理結果(即ち、正しく得られたメディア鍵KMまたはエラー)は、MKB処理部から復号部に送られる(ステップS2012)。復号部は前記処理結果がメディア鍵KMか否かを判定する(ステップS2013)。エラーが送られて来た場合、復号部はコントローラーのデータ書き込み手段にエラー通知を送る(ステップS2014)。データ書き込み手段はエラー通知を書き込み装置に転送する(ステップS2015)。書き込み装置はエラー通知を受け取ると、データ書き込み動作を停止する(ステップS2016)。
【0193】
一方、MKB処理部からメディア鍵KMが送られて来た場合、復号部は当該メディア鍵KMを保持する(ステップS2017)と共に、復号部はコントローラーのデータ書き込み手段にデータ送信要求を送る(ステップS2018)。データ転送部はデータ送信要求を書き込み装置に転送する(ステップS2019)。書き込み装置がデータ送信要求を受け取ると、書き込み装置のデータ送信手段は、暗号化されたデータD(即ち、暗号化データD’)と暗号化されたECC(即ち、ECC’)とを送出し、コントローラーに送る(ステップS2020)。前記暗号化データD’と暗号化ECC(ECC’)とは、コントローラーのデータ書き込み手段を介して、半導体メモリチップのデータ変換手段に送られる。前記暗号化データD’と暗号化ECC(ECC’)とはデータ変換手段の復号部に送られる(ステップS2021)。復号部は保持しているメディア鍵KMで前記暗号化データD’と暗号化ECC(ECC’)とを復号し、データDとECCとを得る(ステップS2022)。復号部はデータDを書き込み特殊領域に書き込み、ECCをECC格納部に書き込む(ステップS2023)。
【0194】
読み出し特殊領域は、半導体メモリチップ100がコントローラー200を認証するために利用される。一方、書き込み特殊領域は、書き込み装置300が半導体メモリチップ100を認証するために利用される。ここで図1のトラスト・チェインを思い起こそう。書き込み装置300から、半導体メモリチップ100、コントローラー200というトラスト・チェインを構成するためには、読み出し特殊領域と書き込み特殊領域が交わりを持つ必要がある。即ち、この交わりの領域(共通領域)に記録されたデータが正しく(書き込み装置300の意図した通りに)コントローラー200によって読み出されることによって、トラスト・チェインが完成することになる。以降、読み出し特殊領域と書き込み特殊領域の交わりの領域(共通領域)を単に特殊領域と呼ぶことがある。
【0195】
なお、図18の例では、バージョン情報は単なる数値としていたが、バージョン情報はこれに限られるものではない。また、バージョン情報およびバージョン情報以外の1以上の情報に応じて、複数の暗号鍵から対応する暗号鍵を選択するように構成してもよい。例えば、半導体メモリチップ100が製造された時期、または、製造時のロット番号を元にバージョン情報を定めても良い。
【0196】
また、バージョン情報は数値に限定されるものではない。例えば、文字列、または、数値や文字列などの順列からなる配列であっても良い。図20は、このように構成したバージョン情報の変形例を示す図である。図20では、半導体メモリチップ100の製造工場名、当該製造工場で管理しているロット番号、および、顧客番号の順列をバージョン情報とした例が示されている。ここで、顧客番号とは、例えば半導体メモリチップ100の製造者が、大口の需要家に対して割り振った番号である。大口需要家向けでない製品については、この数値を固定の値(例えば0)とする。図20のような対応表が、書き込み装置300の鍵記憶部320−2に記憶される。
【0197】
このように、第2の実施の形態にかかる半導体メモリチップは、メモリと同一ダイ上に構成され、コントローラーを認証する認証手段として機能する暗号鍵共有部および送出制御部を備えている。そして、認証されたコントローラーのみが、メモリに格納されたデータを正しく読み出すことができる。また、メモリと同一ダイ上に構成され、所定の暗号鍵を記憶する鍵記憶部と当該暗号鍵によりデータを復号してメモリに記憶するデータ変換部とを備えている。そして、正しい暗号鍵を保持していなければデータを正しく記録できない。これにより、メモリカードの偽造等によるデータの不正利用を防止することができる。
【0198】
(第3の実施の形態)
第2の実施の形態では、書き込み特殊領域に書き込む前に書込データを復号していた。これに対し、第3の実施の形態にかかる半導体メモリチップは、書き込み特殊領域から読み出したデータ(暗号化された書込データ)を復号する。この場合も、書き込み特殊領域から読み出したデータが正しく復号するためには、書き込み装置が暗号化に用いた暗号鍵に対応する暗号鍵を半導体メモリチップが保持している必要がある。即ち、この場合も、書き込み装置が半導体メモリチップを認証している。
【0199】
図21は、第3の実施の形態の半導体メモリチップ2100の構成の一例を示すブロック図である。なお、コントローラー200は、第2の実施の形態と同様の構成である。図21に示すように、半導体メモリチップ2100は、メモリ2110と、暗号鍵共有部120と、送出制御部2130と、データ変換部2140と、受信制御部2150と、読出部2160とを備えている。
【0200】
第2の実施の形態との相違点の1つは、データ変換部140の位置である。図2に示すように、第2の実施の形態では、データ変換(復号)は書き込みの際に行われるが、第3の実施の形態では読み出しの際に行われる。この他、第3の実施の形態では、メモリ2110および送出制御部2130の構成と、受信制御部2150および読出部2160を追加したことが、第2の実施の形態と異なっている。その他の構成および機能は、第2の実施の形態にかかる半導体メモリチップ100の構成を表すブロック図である図2と同様であるので、同一符号を付し、ここでの説明は省略する。
【0201】
送出制御部2130は、読出部132が削除されたことが図5の送出制御部130と異なっている。なお、送出制御部2130は、読出部132が読出したデータを入力する代わりに、読出部2160により読み出され、データ変換部140により変換されたデータを入力する。
【0202】
メモリ2110は、符号記憶部111と、共通領域2114と、一般領域115とを備えている。なお、第3の実施の形態では、書き込み特殊領域とは、メモリ領域のうち、データ読み出しの際、データ変換部2140による復号を受けるデータが書き込まれる予め定められたメモリ領域である。第3の実施の形態では、データ読み出しの際に、データ変換部2140により復号されたデータが送出制御部2130に入力され、コントローラー200の認証が行われる。したがって、データ変換部2140による復号を受けるデータが書き込まれる書き込み特殊領域と、認証されたコントローラー200のみがデータを正しく読み出すことができる読み出し特殊領域とが一致する。このため、図21では、メモリ2110に共通領域2114のみを図示している。
【0203】
受信制御部2150は、書込データが暗号化された暗号化データを受信して復号せずに共通領域2114に書き込む処理を制御する。
【0204】
読出部2160は、読み出しが指定されたページのデータを読み出し特殊領域(共通領域2114)から読み出し、データ変換部2140に送信する。また、読出部2160は、指定されたページのデータに対応するECCを符号記憶部111から読み出し、送出制御部2130に送信する。
【0205】
次に、図21の受信制御部2150の構成例および第3の実施の形態の書き込み装置2300の構成例について図22を用いて説明する。なお、図22では、書き込み処理に関わる部分のみが図示されている。
【0206】
まず、書き込み装置2300の構成について説明する。図22に示すように、書き込み装置2300は、ECC生成部2310と、鍵記憶部320と、暗号化部2330と、データ送信部2340とを備えている。鍵記憶部320は、図14の鍵記憶部320と同様の構成のため同一の符号を付し、説明を省略する。
【0207】
ECC生成部2310は、書き込むべきデータとして入力された書込データのECCを生成する。暗号化部2330は、公開鍵Kpを用いて書込データを暗号化する。データ送信部2340は、暗号化データと、ECCと、書込先ページの指定とをコントローラー200の書込制御部230に送信する。
【0208】
次に、受信制御部2150の構成について説明する。図22に示すように、受信制御部2150は、書込部2143を備えている。書込部2143は、暗号化データを共通領域2114の指定されたページに記録する。また、書込部2143は、ECCを符号記憶部111に格納する。
【0209】
次に、図22のように構成された書き込み装置2300、書込制御部230、および、受信制御部2150による書込データの書き込み処理について図23を用いて説明する。図23は、第3の実施の形態における書き込み処理の全体の流れを示すフローチャートである。
【0210】
書き込み装置2300は、書込データ(データD)と書込先ページの指定とを入力する(ステップS801)。書き込み装置2300は、入力されたデータDをECC生成部2310に入力する(ステップS802)。次に、ECC生成部2310が、データDのECCを生成し、生成したECCをデータ送信部2340に転送する(ステップS803)。また、ECC生成部2310は、データDを暗号化部2330に転送する(ステップS804)。
【0211】
暗号化部2330は、鍵記憶部320から公開鍵Kpを取得する(ステップS805)。また、暗号化部2330は、取得した公開鍵KpによってデータDを暗号化し、暗号化データD’を得る(ステップS806)。次に、暗号化部2330は、暗号化データD’をデータ送信部2340に送る(ステップS807)。データ送信部340は、暗号化データD’、書込先ページの指定、および、ECCを、コントローラー200の書込制御部230に送信する(ステップS808)。
【0212】
書込制御部230のデータ転送部231が、暗号化データD’、書込先ページ指定、および、ECCを受信し(ステップS809)、それらを半導体メモリチップ100の受信制御部2150に送信する(ステップS810)。
【0213】
受信制御部2150は、書込部2143に暗号化データD’と書込先ページ指定とを入力する(ステップS811)。書込部2143は、入力された暗号化データD’を、書込先ページ指定によって指定されたメモリ110上のページに記録する(ステップS812)。また、受信制御部2150は、ECCを、指定されたページに対応するECCとして、符号記憶部111に格納する(ステップS813)。
【0214】
このように、本実施の形態では、書き込み装置2300にデータDが入力された場合、データDは、書き込み装置2300が保持する公開鍵Kpで暗号化される。そして、半導体メモリチップ100の受信制御部2150には、暗号化データD’=Enc(Kp,D)と、データDに関するECC(D)とが入力される。その結果、書き込み特殊領域(共通領域2114)にデータEnc(Kp,D)が記録され、符号記憶部111にECC(D)が記録される。
【0215】
次に、図21のデータ変換部2140の構成例について図24を用いて説明する。図24に示すように、データ変換部2140は、鍵記憶部141と、復号部2142とを備えている。鍵記憶部141の構成および機能は、図14と同様であるため同一の符号を付し、説明を省略する。復号部2142は、読出部2160により読み出されたデータを、鍵記憶部141に記憶された秘密鍵Ksを用いて復号する。
【0216】
次に、図24のように構成されたデータ変換部2140により実行されるデータ読出処理について図25を用いて説明する。図25は、第3の実施の形態におけるデータ読出処理の全体の流れを示すフローチャートである。
【0217】
まず、コントローラー200が、読み出し対象となるページの指定を再生装置などの外部装置から入力する(ステップS901)。コントローラー200の読出制御部220は、半導体メモリチップ100に対して、メモリ110内の読み出し指定ページのデータの読み出し指示を送る(ステップS902)。半導体メモリチップ100の読出部2160は、読み出し指定ページのデータを読み出し、データ変換部2140に入力する(ステップS903)。また、読出部2160は、読み出し指定ページに対応するECCを符号記憶部111から読み出して送出制御部2130に送る(ステップS904)。
【0218】
上述のように本実施の形態では、暗号化データを復号せずに共通領域2114に書き込むため、読み出したデータは暗号化されている。以下、読み出したデータをデータD’と表す。
【0219】
データ変換部2140は、入力されたデータD’を復号部2142に入力する(ステップS905)。復号部2142は、鍵記憶部141から秘密鍵Ksを取得する(ステップS906)。復号部2142は、取得した秘密鍵Ksを用いて入力されたデータD’を復号し、データDを得る(ステップS907)。そして、復号部2142は、復号したデータDを送出制御部2130に送る(ステップS908)。
【0220】
送出制御部2130は、データ変換部2140から受信した復号されたデータDと符号記憶部111から読み出されたECCとをコントローラー200の読出制御部220に送出する(ステップS909)。この後の処理は、図6のステップS212以降と同様であるため、図25では記載を省略している。
【0221】
本実施の形態の場合、書き込み特殊領域(共通領域2114)からのデータ読み出しは、必ず半導体メモリチップ100のデータ変換部2140を経由して行われる。上述の書き込みによって、書き込み特殊領域(共通領域2114)の読み出し対象ページのデータがEnc(Kp,D)であり、当該ページのECCとして、ECC(D)が符号記憶部111に記録されているとする。この場合、半導体メモリチップ100のデータ変換部2140から送出制御部2130に送られるデータはDec(Ks,Enc(Kp,D))=Dである。そして、コントローラー200は、データDとECC(D)とを受け取ることになる。ここで、Dec(A,B)とは、復号に用いる鍵AによってデータBを復号することを表す。
【0222】
このように、書き込み装置300がEnc(Kp,D)とECC(D)を書き込んだ場合に、コントローラー200が所期のデータDと対応するECC(D)とを正しく受け取るためには、半導体メモリチップ100が秘密鍵Ksを格納している必要がある。即ち、この場合も、書き込み装置300が半導体メモリチップ100を認証している。上述のデータ変換部2140を経由して読み出されるメモリ領域が、本実施の形態の書き込み特殊領域に相当する。
【0223】
このように、第3の実施の形態にかかるメモリチップでは、メモリと同一ダイ上に構成され、所定の暗号鍵を記憶する鍵記憶部とメモリから読み出したデータを当該暗号鍵により復号するデータ変換部とを備えている。そして、正しい暗号鍵を保持していなければ書き込まれたデータを正しく復元できない。これにより、メモリカードの偽造等によるデータの不正利用を防止することができる。
【0224】
(第4の実施の形態)
第2および第3の実施の形態で述べたように、書き込み装置によって特殊領域(=共通領域)にデータを書き込み、特殊領域からコントローラーがデータを読み出すことにより、トラスト・チェインが構築される。書き込み装置によって特殊領域に書き込まれたデータがコントローラーによって正しく読み出されたか否かは、実際には、コンテンツの再生などのデータ利用が正常にできるか否かによって判断される。
【0225】
第4の実施の形態では、上記実施の形態の半導体メモリチップ内のデータを利用する装置(プレーヤー等)を含めた具体的なデータ利用の実施の形態を説明する。
【0226】
図26は、第4の実施の形態でデータを利用する装置であるプレーヤー400およびプレーヤー400がデータを読み出すメモリカード2501の構成の一例を示すブロック図である。
【0227】
図26に示すように、メモリカード2501は、半導体メモリチップ100とコントローラー200とを含む。半導体メモリチップ100およびコントローラー200は、第2の実施の形態または第3の実施の形態で述べた構成を備える。例えば、図26のコントローラー200は、例えば、図3Aの暗号鍵共有部210と図5の読出制御部220と具備している。メモリカード2501は、例えばSDメモリカードなどにより構成することができる。
【0228】
第4の実施の形態では、暗号化ビデオデータ2541、暗号化ビデオデータ2541を復号するために用いられる復号鍵Kcが暗号化された暗号化復号鍵2531、および、MKB2521(以下、単にMKBという)が、半導体メモリチップ100のメモリ110内の一般領域115に記録されている。また、メディア鍵変換鍵2511(以下、メディア鍵変換鍵KTという)がメモリ110内の特殊領域(共通領域114)に格納されている。
【0229】
復号鍵Kcは暗号化された暗号化復号鍵2531として記録される。この暗号化に用いられる鍵は、MKBが正しく処理された場合に導出されるメディア鍵KMを、メディア鍵変換鍵KTを用いて変換したものである。例えば、暗号化復号鍵2531=AES−E(AES−G(KT,KM),Kc)。この例では、変換に一方向性関数であるAES−Gを用い、暗号化にAES−Eを用いている。
【0230】
プレーヤー400は、デバイス鍵を表すKD410(以下、デバイス鍵KDという)を保持するとともに、MKB処理部420と、メディア鍵変換部430と、鍵復号部440と、ビデオ復号部450と、再生部460とを備えている。
【0231】
MKB処理部420は、一般領域115から読み出されたMKBをデバイス鍵KDを用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。メディア鍵変換部430は、導出されたメディア鍵KMを、特殊領域から読み出されたメディア鍵変換鍵KTを用いて変換した鍵Kwを生成する。鍵復号部440は、一般領域115から読み出された暗号化復号鍵2531を鍵Kwで復号することにより復号鍵Kcを生成する。ビデオ復号部450は、復号鍵Kcを用いて暗号化ビデオデータを復号する。再生部460は、復号されたビデオデータを再生する。
【0232】
次に、図26のように構成されたプレーヤー400によるメモリカード2501内のデータの再生処理について図27を用いて説明する。図27は、第4の実施の形態における再生処理の全体の流れを示すフローチャートである。
【0233】
プレーヤー400は、メモリカード2501内のコントローラー200に対して、一般領域115に含まれているMKBの読み出しを指示する(ステップS1001)。例えば、プレーヤー400は、コントローラー200に対して当該MKBの先頭アドレスとサイズとを指定する。
【0234】
コントローラー200は、指定された領域を含むページを半導体メモリチップ100から読み出し、指定された領域のデータ(即ちMKBの値)をプレーヤー400に送る。プレーヤー400は、受信したMKBをMKB処理部420に入力する(ステップS1002)。MKB処理部420は、プレーヤー400が保持しているデバイス鍵KDを読み出し、入力されたMKBをデバイス鍵KDを用いてMKB処理し、メディア鍵KMを導出して出力する(ステップS1003)。
【0235】
次に、MKB処理部420は、MKB処理によりメディア鍵KMが得られたか否かを判断する(ステップS1004)。デバイス鍵KDがMKBによって無効化されていた場合、MKB処理部420は正しいメディア鍵KMを導出することができない。この場合、MKB処理部420は、メディア鍵KMが得られなかったと判断し(ステップS1004:No)、エラーを出力する。なお、MKB処理部420からエラーが出力された場合、プレーヤー400は警告メッセージを表示して動作を停止する。
【0236】
メディア鍵KMが得られた場合(ステップS1004:Yes)、プレーヤー400は、メディア鍵KMをメディア鍵変換部430に送る(ステップS1005)。次に、プレーヤー400は、特殊領域(共通領域114)に含まれているメディア鍵変換鍵KTの読み出しを指示する(ステップS1006)。例えば、プレーヤー400は、コントローラー200にメディア鍵変換鍵KTの先頭アドレスとサイズとを指定する。
【0237】
コントローラー200は、指定された領域を含むページを半導体メモリチップ100から読み出し、指定された領域のデータ(即ちメディア鍵変換鍵KTの値)をプレーヤー400に送る。プレーヤー400は、コントローラー200から受信したメディア鍵変換鍵KTの値をメディア鍵変換部430に入力する。
【0238】
メディア鍵変換部430は、入力されたメディア鍵変換鍵KTでメディア鍵KMを変換して鍵Kw=AES−G(KT,KM)を得る(ステップS1007)。プレーヤー400は、鍵Kwの値を鍵復号部440に送る。
【0239】
次に、プレーヤー400は、コントローラー200を介して、半導体メモリチップ100の一般領域115から暗号化復号鍵2531を読み取る(ステップS1008)。例えば、プレーヤー400は、コントローラー200に暗号化復号鍵2531の先頭アドレスとサイズを指定する。
【0240】
コントローラー200は、一般領域115から指定された領域を含むページを読み出し、指定された領域のデータ(即ち暗号化復号鍵2531の値)をプレーヤー400に送る。プレーヤー400は、コントローラー200から受信した暗号化復号鍵2531の値を鍵復号部440に入力する。
【0241】
鍵復号部440は、入力された暗号化復号鍵2531を鍵Kwで復号する(ステップS1009)。これにより、復号鍵Kcの値が得られる。復号鍵Kcを得る式は以下の(1)式のように表される。
【0242】
Dec(Kw,暗号化復号鍵)
=Dec(Kw,Enc(AES−G(KT,KM),Kc))
=Dec(Kw,Enc(Kw,Kc))
=Kc ・・・(1)
鍵復号部440は、復号鍵Kcの値をビデオ復号部450に送る(ステップS1010)。ビデオ復号部450は、受信した復号鍵Kcの値を保持する。
【0243】
次に、プレーヤー400は、コントローラー200を介して、一般領域115から順次暗号化ビデオデータを読み取り、ビデオ復号部450に順次入力する(ステップS1011)。ビデオ復号部450は、復号鍵Kcを用いて暗号化ビデオデータを順次復号し(ステップS1012)、再生部460に送る(ステップS1013)。再生部460は、受信したビデオデータを順次再生(表示)する(ステップS1014)。
【0244】
メディア鍵変換鍵KTは、正しいコンテンツ復号鍵(復号鍵Kc)を得る為に必要なデータである。この値は、例えば、半導体メモリチップ100毎に異なっていても良い。または、メモリカード2501毎に異なっていても良い。更には、メモリカード2501毎に統計的に異なっていても良い。統計的に異なるとは、厳密に異なる値とならない場合があるが、統計的には異なるとみなせることを意味する。例えば桁数が極めて大きい乱数を発生させ、この乱数の値を用いる場合が該当する。
【0245】
特殊領域に記録されるメディア鍵変換鍵KTがメモリカード2501毎に(少なくとも統計的に)異なっている場合、メディア鍵変換鍵KTは、メモリカード2501のIDの一種とみなすことができる。なお、暗号化されたコンテンツデータ(ビデオデータなど)を復号されるために必要なデータとして、メディア鍵変換鍵KTの代わりにMKBを保存するように構成してもよい。
【0246】
メディア鍵変換鍵KTを半導体メモリチップ100の書き込み特殊領域に正しく記録するには、半導体メモリチップ100が書き込み装置300によって認証されなければならない。プレーヤー400が、読み出し特殊領域に記録されたメディア鍵変換鍵KTを、コントローラー200を経由して正しく読み出すことができる為には、コントローラー200が半導体メモリチップ100によって認証されていなければならない。結局、書き込み装置300が半導体メモリチップ100を経由してコントローラー200を認証するトラスト・チェインが確立されていなければ、プレーヤー400はメディア鍵変換鍵KTを正しく読み出すことはできない。即ち、プレーヤー400によるビデオの再生をもって、トラスト・チェイン確立の証として良い。
【0247】
なお、第4の実施の形態におけるMKBは、ビデオの供給者がビデオ毎に供給するようにしても良い。一般に、MKBは対称鍵暗号を用いて構成されるが、その場合は、公開鍵暗号を用いて構成するようにすると良い。その理由を以下に説明する。
【0248】
対称鍵暗号を用いて構成されたMKBの場合、一般にMKBを生成する為には、全てのデバイス鍵KDの値を知っている必要がある。ビデオ供給者にMKBの生成を行わせる為には、全てのデバイス鍵KDの値を当該ビデオ供給者に提供する必要がある。もし、このデバイス鍵KDの値が悪意のプレーヤー製造者に漏えいした場合、MKBによるプレーヤーの無効化が実質無意味になる。悪質なまたは粗悪なプレーヤーをMKBを用いて無効化しても、悪意のプレーヤー製造者は、無効化されていないデバイス鍵KDを用いて、幾らでも悪質なまたは粗悪なプレーヤーを製造し続けることが可能であるからである。
【0249】
そこに、公開鍵暗号を用いてMKBを構成するメリットがある。公開鍵暗号を用いる場合、デバイス鍵KDは秘密鍵を用いて構成される。プレーヤー製造者は、当該プレーヤー製造者に割り当てられたデバイス鍵KDの値しか知らない。一方、ビデオ供給者には、MKB生成用に公開鍵を配布する。ビデオ供給者は、当該公開鍵を用いて自由にMKBを生成することが可能である。一方、仮にMKB生成用の公開鍵が悪意のプレーヤー製造者に漏えいしても、公開鍵暗号の基本的な性質から、秘密鍵で構成されているデバイス鍵KDの値を知ることはできない。このように、図26におけるMKBは公開鍵暗号に基づいて構成されたMKBであっても良い。
【0250】
このように、第4の実施の形態では、一般領域に暗号化データを記憶し、特殊領域に暗号化データを復号するために必要なデータを記憶し、特殊領域のデータを用いて暗号化データを復号して利用できる。これにより、コンテンツ供給者による再生デバイスのリボークが実現可能となる。
【0251】
(第5の実施の形態)
第5の実施の形態では、コンテンツに付随するMKBによるコントローラーの無効化と、暗号化ビデオデータのメモリカード毎の個別化とを組み合わせた実施の形態を説明する。
【0252】
図28は、第5の実施の形態のプレーヤー400−2およびメモリカード2601の構成の一例を示すブロック図である。
【0253】
図28に示すように、メモリカード2601は、半導体メモリチップ100とコントローラー200−2とを含む。半導体メモリチップ100は、第2の実施の形態または第3の実施の形態で述べた構成を備える。
【0254】
第5の実施の形態では、暗号化ビデオデータ2541、暗号化されたMKB2521−2(以下、MKB’という)およびMKB2522(以下、MKB2という)が一般領域115に記録されている。また、MKB’からMKBを復号するためのMKB復号鍵2513(以下、MKB復号鍵KTという)およびメディア鍵変換鍵2512(以下、メディア鍵変換鍵KT2という)が特殊領域(共通領域114)に格納されている。このように、本実施の形態では、メディア鍵変換鍵2511(メディア鍵変換鍵KT)の代わりに、MKBの復号に用いられるMKB復号鍵KTを備えている。
【0255】
次に、コントローラー200−2の構成例について説明する。本実施の形態のコントローラー200−2は、第2または第3の実施の形態のコントローラー200の構成に加えて、デバイス鍵KD2610(以下、デバイス鍵KD2という)と、MKB処理部2620と、メディア鍵変換部2630と、ビデオ復号部2640とを備えている。なお、図28では、第2または第3の実施の形態で説明した構成部は図示を省略しているが、コントローラー200−2は、例えば、図7の暗号鍵共有部210−2と図11Aの読出制御部220−3とを具備している。そして、読み出し特殊領域に格納されている、MKB復号鍵KTおよびメディア鍵変換鍵KT2の読み出しは、暗号鍵共有部210−2と読出制御部220−3とを用いて行われる。
【0256】
MKB処理部2620は、一般領域115から読み出されたMKB2をデバイス鍵KD2を用いて処理することによりメディア鍵KM2を導出するMKB処理を実行する。メディア鍵変換部2630は、導出されたメディア鍵KM2を、特殊領域から読み出されたメディア鍵変換鍵KT2を用いて変換した復号鍵Kc2を生成する。ビデオ復号部2640は、復号鍵Kc2を用いて暗号化ビデオデータを復号する。
【0257】
次に、プレーヤー400−2の構成例について説明する。プレーヤー400−2は、デバイス鍵410(以下、デバイス鍵KDという)を保持するとともに、MKB処理部420−2と、ビデオ復号部450と、再生部460と、MKB復号部470と、を備えている。
【0258】
第5の実施の形態では、MKB復号部470が追加されたこと、MKB処理部420−2の機能、および、鍵復号部440とメディア鍵変換部430が削除されたことが、第4の実施の形態のプレーヤー400と異なっている。
【0259】
MKB復号部470は、一般領域115から読み出されたMKB’をMKB復号鍵KTで復号してMKBを生成する。MKB処理部420−2は、生成されたMKBをデバイス鍵KDを用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。
【0260】
上述のように、本実施の形態では、一般領域115に2つのMKB(MKBを暗号化したMKB’およびMKB2)が記録されている。MKB’を復号したMKBは、第4の実施の形態と同様にプレーヤー400−2の認証および無効化に用いられる。一方、MKB2は、コントローラー200の認証および無効化に用いられる。
【0261】
また、本実施の形態では、特殊領域(共通領域114)はMKB復号鍵KTおよびメディア鍵変換鍵KT2を格納している。MKB復号鍵KTは、プレーヤー400−2用のMKB復号鍵である。メディア鍵変換鍵KT2は、コントローラー200用のメディア鍵変換鍵である。これらの鍵は、メモリカード2601毎に異なっていて良い。鍵とデータとの間の関係は次のようになっている。
【0262】
(1)MKBを無効化されていないデバイス鍵KDで処理するとメディア鍵KMが得られる。また、MKB2を無効化されていないデバイス鍵KD2で処理するとメディア鍵KM2が得られる。
【0263】
(2)(平文の)ビデオデータをC、暗号化ビデオデータをC’とすると、ビデオデータCはメディア鍵KMと復号鍵Kc2で二重に暗号化されている:C’=AES−E(Kc2,AES−E(KM,C))。
【0264】
(3)MKBはMKB’をMKB復号鍵KTで復号して得られる:MKB=AES−D(KT,MKB’)。
【0265】
(4)復号鍵Kc2はメディア鍵KM2をメディア鍵変換鍵KT2で変換して得られる:Kc2=AES−G(KT2,KM2)。
【0266】
(5)暗号化ビデオデータC’の復号過程は次の通り:
AES−D(KM,AES−D(Kc2,C’))
=AES−D(KM,AES−D(Kc2,AES−E(Kc2,AES−E(KM,C))))
=AES−D(KM,AES−E(KM,C))
=C。
【0267】
次に、図28のように構成されたプレーヤー400−2によるメモリカード2601内のデータの再生処理について図29を用いて説明する。図29は、第5の実施の形態における再生処理の全体の流れを示すフローチャートである。
【0268】
プレーヤー400−2は、メモリカード2601内のコントローラー200−2に対して、一般領域115に含まれているMKB2の読み出しを指示する(ステップS1101)。例えば、プレーヤー400−2は、コントローラー200−2に対して当該MKB2の先頭アドレスとサイズとを指定する。
【0269】
コントローラー200−2は、指定された領域を含むページを半導体メモリチップ100から読み出し、指定された領域のデータ(即ちMKB2の値)をMKB処理部2620に入力する(ステップS1102)。MKB処理部2620は、コントローラー200−2が保持しているデバイス鍵KD2を読み出し、入力されたMKB2をデバイス鍵KD2を用いてMKB処理し、メディア鍵KM2を導出して出力する(ステップS1103)。
【0270】
次に、MKB処理部2620は、MKB処理によりメディア鍵KM2が得られたか否かを判断する(ステップS1104)。デバイス鍵KDがMKB2によって無効化されていた場合、MKB処理部2620は正しいメディア鍵KM2を導出することができない。この場合、MKB処理部2620は、メディア鍵KM2が得られなかったと判断し(ステップS1104:No)、エラーを出力する。
【0271】
メディア鍵KM2が得られた場合(ステップS1104:Yes)、MKB処理部2620は、メディア鍵KM2をメディア鍵変換部2630に送る(ステップS1105)。メディア鍵変換部2630は、特殊領域(共通領域114)に含まれているメディア鍵変換鍵KT2を読み出す(ステップS1106)。そして、メディア鍵変換部2630は、読み出したメディア鍵変換鍵KT2でメディア鍵KM2を変換した復号鍵Kc2を生成する(ステップS1107)。メディア鍵変換部2630は、生成した復号鍵Kc2をビデオ復号部2640に送信する(ステップS1108)。ビデオ復号部2640は、受信した復号鍵Kcの値を保持する。
【0272】
次に、プレーヤー400−2は、コントローラー200−2を介して半導体メモリチップ100の一般領域115からMKB’を読み出し、MKB復号部470に入力する(ステップS1109)。MKB復号部470は、コントローラー200−2を介して半導体メモリチップ100の特殊領域(共通領域114)からMKB復号鍵KTを読み出す(ステップS1110)。次に、MKB復号部470は、読み出したMKB復号鍵KTを用いて、入力されたMKB’を復号し、平文のMKBを得る(ステップS1111)。MKB復号部470は、平文のMKBをMKB処理部420−2に送る(ステップS1112)。
【0273】
MKB処理部420−2は、プレーヤー400−2が保持しているデバイス鍵KDを読み出し、入力されたMKBをデバイス鍵KDを用いてMKB処理し、メディア鍵KMを導出する(ステップS1113)。
【0274】
次に、MKB処理部420−2は、MKB処理によりメディア鍵KMが得られたか否かを判断する(ステップS1114)。デバイス鍵KDがMKBによって無効化されていた場合、MKB処理部420−2は正しいメディア鍵KMを導出することができない。この場合、MKB処理部420−2は、メディア鍵KMが得られなかったと判断し(ステップS1114:No)、エラーを出力する。メディア鍵KMが得られた場合(ステップS1114:Yes)、MKB処理部420−2は、メディア鍵KMをビデオ復号部450に送る(ステップS1115)。
【0275】
次に、コントローラー200−2のビデオ復号部2640は、一般領域115から順次暗号化ビデオデータ2541を読み出す(ステップS1116)。ビデオ復号部2640は、保持している復号鍵Kc2を用いて、読み出した暗号化ビデオデータを復号する(ステップS1117)。ビデオ復号部2640は、復号したビデオデータをプレーヤー400−2のビデオ復号部450に送る(ステップS1118)。
【0276】
ビデオ復号部450は、復号鍵Kcを用いてビデオデータを順次復号し(ステップS1119)、再生部460に送る(ステップS1120)。再生部460は、受信したビデオデータを順次再生(表示)する(ステップS1121)。
【0277】
メディア鍵変換鍵KT2がメモリカード2601毎に異なっていれば、復号鍵Kc2もメモリカード2601毎に異なる。従って、メディア鍵KMまたはメディア鍵変換鍵KT2がメモリカード2601毎に異なっていれば、暗号化ビデオデータ自体がメモリカード2601毎に異なる。即ち、暗号化ビデオデータがメモリカード2601毎に個別化されることになる。
【0278】
このように、第5の実施の形態にかかるメモリチップでは、コンテンツに付随するMKBによるコントローラーの無効化(コンテンツ供給者による再生デバイスのリボーク)と、暗号化ビデオデータのメモリカード毎の個別化(コンテンツ供給者によるコントローラーのリボーク)との組み合わせ(二重暗号化)が可能となる。
【0279】
(第6の実施の形態)
これまでは、本発明をコンテンツ保護に適用する実施の形態を述べたが、他の産業分野へ適用することもできる。第6の実施の形態では、スマートグリッドに適用した実施の形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【0280】
図30は、第6の実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するメーター3010aと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)3020が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3030がビル毎に設置される。商業ビルには、メーター3010aと同様のメーター3010bが設置される。以下では、メーター3010aおよび3010bを単にメーター3010という。
【0281】
メーター3010は、コンセントレータとよばれる中継器(コンセントレータ3040)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)3050と通信する。MDMS3050は、各家庭のメーター3010から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)3060は、MDMS3050に集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のメーター3010やHEMS3020に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS3060は、遠隔端末ユニットであるRTU(Remote Terminal Unit)3071に接続された太陽光発電や風力発電などの分散電源3080、同じくRTU3072に接続された蓄電装置3090、および、RTU3073に接続された発電側との間を制御する送配電制御装置3100を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0282】
図31は、メーター3010の構成例を示すブロック図である。メーター3010は、MDMS3050と暗号通信を行う。通信経路上にコンセントレータ3040が存在するが、コンセントレータ3040は暗号通信を中継するのみである。MDMS3050とメーター3010とは共有鍵Kを保持しており、当該共有鍵Kを用いて暗号通信を行う。
【0283】
例えば、計測部3011に接続する通信部3012が、共有鍵Kを用いて計測値を暗号化してMDMS3050に送る。MDMS3050は、保持する共有鍵Kを用いて暗号化された計測値を復号する。これにより、通信路上で通信が傍受されたとしても、傍受者は計測値を知ることができない。或いは、MDMS3050から計測部3011に制御用コマンドが送られる場合がある。例えば、計測の中止や開始、計測データの送付指示などの制御コマンドである。MDMS3050は、共有鍵Kを用いて、制御コマンドを暗号化し、暗号化した制御コマンドをメーター3010の通信部3012に送信する。通信部3012は、共有鍵Kを用いて暗号化制御コマンドを復号し、制御コマンドを計測部3011に送る。或いは、半導体メモリチップ100のメモリ110の一般領域に電力使用量データが格納されており、通信部3012は、共有鍵Kを用いて当該電力使用量データを暗号化し、暗号化電力使用量データをMDMS3050に送信する。MDMS3050は、共有鍵Kを用いて当該暗号化電力使用量データを復号する。
【0284】
メーター3010において、共有鍵Kは半導体メモリチップのメモリの特殊領域に格納される。共有鍵Kは、定期的に或いは随時更新されることが望ましい。更新用の共有鍵をK’とする。MDMS3050は、更新用の共有鍵K’を半導体メモリチップ100のメモリ110の書き込み特殊領域に書き込む。その為には既に述べたように、半導体メモリチップ100がMDMS3050によって認証される必要がある。また、メーター3010の通信部3012がコントローラー200を介して(更新された)共有鍵K’を読み出すには、コントローラー200が半導体メモリチップ100によって認証される必要がある。共有鍵の更新と、更新された共有鍵の利用を通じて、結果的に、半導体メモリチップ100を使用するメーター3010全体が、MDMS3050によって認証されることとなる。
【0285】
MDMS3050は、例えば、図14の書き込み装置300として、半導体メモリチップ100の書き込み特殊領域に更新用の共有鍵K’を書き込む。また、メーター3010のコントローラー200は、例えば、図7の暗号鍵共有部210−2と図9の読出制御部220−2とを具備している。
【0286】
このように、第6の実施の形態では、コンテンツ保護と異なる分野である次世代電力網で用いられるデータに対して、データの不正利用を防止することができる。
【0287】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0288】
1M 半導体メモリチップ、2M 利用装置、4M 書き込み装置、11M 暗号鍵共有部、12M 送出制御部、13M 暗号鍵共有部、14M データ変換部、15M ECC格納部、21M 暗号鍵共有部、22M 読出制御部、23M 再生手段、41M 暗号鍵共有部、42M データ送信部、112M 読み出し特殊領域、113M 書き込み認証領域、114M 共通領域
【技術分野】
【0001】
本発明は、メモリチップ、情報記憶システム、読み出し装置に関する。
【背景技術】
【0002】
半導体ダイ上に形成された半導体メモリチップは、通常単体で使用されることは無く、外部のコントローラーと電気的に接続されて使用される。外部装置(書き込み装置や読み出し・再生装置など)から半導体メモリチップ上のメモリ内のデータへのアクセスはコントローラーを介して行われる。コントローラーと半導体メモリチップを組み合わせてメモリ製品として販売されることもある。例えば、SDメモリカードのような商品が、その一例である(非特許文献1参照)。また、半導体メモリチップとコントローラーとを樹脂で接着したものをSIP(System In Package)として提供する場合もある。また、オーディオ・プレーヤーなどで音楽データの格納用に半導体メモリチップが使用される場合、コントローラーが半導体メモリチップとは別の半導体の一部に組み込まれていることもある。いずれの場合も、半導体メモリチップとコントローラーとが直接接続されており、半導体メモリチップのメモリ内のデータへのアクセスは必ずコントローラーを介して行われる。
【0003】
コントローラーは、半導体メモリチップのデータへのアクセスを仲介するだけではなく、セキュリティ機能を提供する場合がある。例えば、SDメモリカードの場合、コントローラーに著作権保護機能が導入されている。コントローラーは、プレーヤーや書き込み装置などのホスト機器を認証し、認証に成功した場合に限って、半導体メモリチップに格納されているデータをホスト機器に転送する。また、コントローラーは、認証に成功した場合に限って、書き込み装置から受信したデータを半導体メモリチップに記録する。これにより、例えば、認証されない不正なプレーヤーはメモリカード内のデータにアクセスすることができない。従って、メモリカード内のデータが不正なプレーヤーによって盗まれることから保護される。
【0004】
メモリカードのコントローラーによって著作権保護機能が実装されている場合にも、更なる攻撃が存在する。例えば、メモリカードの中にビデオデータが格納されているものとする。メモリカードのコントローラーが有する著作権保護機能によって、当該メモリカードが格納するビデオデータは不正なプレーヤーによる読み出しから保護される。従って、不正なプレーヤーを用いた当該ビデオデータの不正コピーから守られている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】4C Entity, LLC. "Content Protection for Recordable Media Specification, SD Memory Card Book, Common Part", Revision 0.961, May. 3, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
書き込み対象のデータは、半導体メモリチップに格納(書き込み)され、読み出し装置によって読み出される。
【0007】
この書き込み対象のデータを読み出し装置で読み出して利用する為には、このデータの正統性が保証されている事が望ましい。
【0008】
本発明は、悪意のある書き込み装置からのデータ書き込みを防止することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決するために、本発明の一態様にかかる書込み装置は、メモリチップと接続される書き込み装置であって、メモリチップは予め定められたデータの記憶領域である第1領域を含むメモリを有し、メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、書き込み装置が有するデータを第1鍵で暗号化した第1の暗号化データをメモリチップに送信するデータ送信部とを有し、第1の暗号化データは、メモリチップが受け付け、メモリチップが有する第1鍵に対応する第2鍵で変換されて、第1領域に書き込まれることを特徴とする。
【0010】
また、本発明の別の一態様にかかる情報記憶システムは、読み出し装置及び書き込み装置とメモリチップが接続された情報記憶システムであって、書き込み装置は、 メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、 書き込み装置が有するデータを第1鍵で暗号化した第1の暗号化データをメモリチップに送信するデータ送信部とを有し、メモリチップは予め定められたデータの記憶領域である第1領域を含むメモリと、第1の暗号データを受け付け、書き込み装置が有する第1鍵に対応する第2鍵で第1の暗号データを変換する変換部と、変換されたデータを第1領域に書き込む書込部と、読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の暗号鍵生成部と、メモリに記憶されたデータを第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、読み出し装置は、 第2の暗号データを受け付け、読み出し装置が有する第3鍵に対応する第4鍵で復号することを特徴とする。
【0011】
また、本発明の別の態様にかかるメモリチップは、データを書き込む書き込み装置とデータを読み出す読み出し装置と接続されるメモリチップであって、予め定められたデータの記憶領域である第1領域を含むメモリと、読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の暗号鍵生成部と、メモリに記憶されたデータを第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、第2の暗号化データは、読み出し装置が受け付け、読み出し装置が有する第3鍵に対応する第4鍵で復号されることを特徴とするメモリチップ。
【0012】
また、本発明の別の態様にかかるメモリチップは、外部装置の要求に応じてデータの読み出しおよび書き込みを制御するコントローラーと接続されるメモリチップであって、 予め定められたデータの記憶領域である第1領域を含むメモリと、外部装置がデータの変換に用いる秘密鍵に対応する公開鍵を記憶する鍵記憶部と、特殊領域に書き込む書込データをコントローラーから受信し、公開鍵を用いて書込データを変換した変換データを生成する変換部と、変換データを特殊領域に書き込む書込部とを備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、悪意のある書き込み装置からのデータ書き込みを防止することができるという効果を奏する。
【図面の簡単な説明】
【0014】
【図1AA】トラスト・チェインの一例を示す図。
【図1AB】トラスト・チェインのデータの流れを示す図。
【図1B】第1の実施の形態の半導体メモリチップ、コントローラー、書き込み装置のブロック図。
【図1C】第1の実施の形態の詳細化したブロック図。
【図1D】第1の実施の形態の書き込みの流れを示すフローチャート。
【図1EA】具体的な利用形態のデータの流れを示す図。
【図1EB】具体的な利用形態のトラスト・チェインの一例を示す図。
【図1F】具体的な利用形態の詳細化したブロック図。
【図1G】暗号鍵共有部の構成例を示す図。
【図1H】暗号鍵共有部の動作を示すフローチャート。
【図1J】送出制御部と読出制御部の構成を示すブロック図。
【図1K】送出制御部と読出制御部の動作を示すフローチャート。
【図1L】ゲームプログラム実行時の動作を示すフローチャート。
【図1M】MKBを利用する形態の構成を示すブロック図。
【図1N】MKBを利用する形態の暗号鍵共有部の構成を示すブロック図。
【図1P】MKBを利用する形態のデータ送信部とデータ変換部のブロック図。
【図1Q】MKBを利用する形態の動作を示すフローチャート。
【図1R】半導体メモリチップのデータ変換部の構成の一例を示すブロック図。
【図1S】データ変換部の一例の動作を示すフローチャート。
【図1TA】電子書籍データの構造を示す図。
【図1TB】半導体メモリパッケージと書き込み装置の構成例を示すブロック図。
【図1TC】書き込み対象ページの一例の構成を示す図。
【図1TD】暗号鍵共有部の構成例を示す図。
【図1TE】第2データ変換部の構成例を示す図。
【図1TF】メモリチップ・インターフェースに送信されるデータ構成例を示す図。
【図1TG】第1変換部に送信されるデータの構成例を示す図。
【図1TH】第1データ変換部の構成例を示す図。
【図1TJ】データ送出部の構成例を示す図。
【図1TK】メモリチップ・インターフェースに送信されるデータの作成を示す図。
【図1TL】書き込み動作を示すフローチャート。
【図1TM】鍵を共有する手続き例を示すフローチャート。
【図1UA】スマートグリッドに適用した場合のトラスト・チェインの例を示す図。
【図1UB】スマートグリッドに利用した場合のデータの流れの例を示す図。
【図1UC】スマートグリッドに利用した場合のデータの流れの例を示す図。
【図1V】半導体メモリチップ、MDMS、メーターの構成例を示す図。
【図1WA】暗号鍵共有部の構成例を示す図。
【図1WB】送出制御部と読出制御部の構成例を示す図。
【図1XA】半導体メモリチップとメーターの暗号鍵共有部の構成例を示す図。
【図1XB】データ変換部とデータ送信部の構成例を示す図である。
【図1YA】MDMSの読み出し手順の例を示す図。
【図1YB】MDMSの読み出し手順の例を示す図。
【図2A】トラスト・チェインの一例を示す図。
【図2B】第2の実施の形態の半導体メモリチップとコントローラーのブロック図。
【図3A】暗号鍵共有部の構成例を示す図。
【図3B】メディア鍵を更新する仕組みの一例を示す図。
【図4A】第2の実施の形態における暗号鍵共有処理の全体の流れを示すフローチャート。
【図4B】メディア鍵を更新する動作例を示す図。
【図5】送出制御部と読出制御部の構成例を示す図。
【図6】第2の実施の形態におけるデータ読出処理の全体の流れを示すフローチャート。
【図7】暗号鍵共有部の変形例を示す図。
【図8】第2の実施の形態の変形例における暗号鍵共有処理の全体の流れを示すフローチャート。
【図9】送出制御部と読出制御部の変形例を示す図。
【図10】第2の実施の形態の変形例におけるデータ読出処理の全体の流れを示すフローチャート。
【図11A】送出制御部と読出制御部の別の変形例を示す図。
【図11B】第2の実施の形態の別の変形例におけるデータ読出処理の全体の流れを示すフローチャート。
【図12A】公開鍵で認証する場合の半導体メモリチップの暗号鍵共有部の構成例を示す図。
【図12B】公開鍵で認証する場合のコントローラーの暗号鍵共有部の構成例を示す図。
【図12C】暗号鍵共有部の動作例を示すフローチャート。
【図12D】半導体メモリチップの送出制御部の構成例を示す図。
【図12E】コントローラーの送出制御部の構成例を示す図。
【図12F】コントローラーに送信するデータ形式例を示す図。
【図12G】半導体メモリチップとコントローラーの送出制御部の動作例を示す図。
【図12H】半導体メモリチップとコントローラーの送出制御部の動作例を示す図。
【図12J】利用装置が半導体メモリチップに認証される場合の構成例を示す図。
【図12K】利用装置が半導体メモリチップに認証される場合のトラスト・チェインを示す図。
【図13】書き込み特殊領域に書き込みを行う様子を示す図。
【図14】書込制御部およびデータ変換部の構成例を示す図。
【図15】第2の実施の形態における書き込み処理の全体の流れを示すフローチャート。
【図16】最小限のデータのみ暗号化および復号する構成でのデータの変化を表す図。
【図17A】書込制御部およびデータ変換部の変形例を示す図。
【図17B】書き込み装置がコントローラーを介して書き込む構成例を示す図。
【図17C】データを書き込む動作例を示すフローチャート。
【図17D】データを書き込む動作例を示すフローチャート。
【図18】鍵記憶部のデータ構造の一例を示す図。
【図19】変形例における書き込み処理の全体の流れを示すフローチャート。
【図20】バージョン情報の変形例を示す図。
【図21】第3の実施の形態の半導体メモリチップのブロック図。
【図22】第3の実施の形態の受信制御部および書き込み装置の構成例を示す図。
【図23】第3の実施の形態における書き込み処理の全体の流れを示すフローチャート。
【図24】第3の実施の形態のデータ変換部の構成例を示す図。
【図25】第3の実施の形態におけるデータ読出処理の全体の流れを示すフローチャート。
【図26】第4の実施の形態のプレーヤーおよびメモリカードのブロック図。
【図27】第4の実施の形態における再生処理の全体の流れを示すフローチャート。
【図28】第5の実施の形態のプレーヤーおよびメモリカードのブロック図。
【図29】第5の実施の形態における再生処理の全体の流れを示すフローチャート。
【図30】第6の実施の形態の次世代電力網の一構成例を示す図。
【図31】メーターの構成例を示すブロック図。
【発明を実施するための形態】
【0015】
以下に添付図面を参照して、この発明にかかるメモリチップの好適な実施の形態を詳細に説明する。
【0016】
(第1の実施の形態)
第1の実施の形態にかかるメモリチップ(半導体メモリチップ)は、図1AAのように
読出し装置が半導体メモリチップを認証し、かつ、半導体メモリチップが書き込み装置を認証する。
【0017】
データの流れは図1ABに示すように、認証の方向と逆向きである事に注意する。つまり、認証された書き込み装置は認証した半導体メモリチップにデータを書き込む。読み出し装置は半導体メモリチップに記憶されたデータを読み出す。このように、本実施の形態の半導体メモリチップは、図1AAのトラスト・チェインを構築する目的とする。
【0018】
図1Bは、書き込み装置30が、コントローラー20を介して、半導体メモリチップ10の書き込み認証領域11−3に書き込みを行う場合のブロック図である。
【0019】
書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置のみが正しいデータを記録する事ができるメモリ領域である。或いは、書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置が書き込んだデータのみが正しく読み出し得るようなメモリ領域である。
【0020】
図1Bは、コントローラー20に書き込み装置30が接続されて、半導体メモリチップ10の書き込み認証領域11−3に書き込みを行う様子を示す図である。ただし、図1Bでは、書き込み処理に関わる部分のみが図示されている。
【0021】
まず、書き込み装置30が、書き込みが要求されたデータ(書込データ)を暗号化した暗号化データ、書込先ページの指定、および書込データに対するECCをコントローラー20に送信する。コントローラー20の書込制御部23は、暗号化データとECCとを半導体メモリチップ10のデータ変換部14に送出する。データ変換部14は、暗号化データを変換(復号)し、得られた変換データ(書込データ)を書き込み特殊領域11−3に書き込むとともに、ECCを符号記憶部11−1に書き込む。
【0022】
図1Cは、書き込み装置30とデータ変換部14の構成をより詳細に示した図である。書き込み装置30、コントローラー20の書込制御部23、および、半導体メモリチップ10のデータ変換部14の構成例について図1Cを用いて説明する。図1Cに示すように、書き込み装置30は、ECC生成部31と、鍵記憶部32と、暗号化部33と、データ送信部34とを備えている。
【0023】
ECC生成部31は、書き込むべきデータとして入力された書込データのECCを生成する。鍵記憶部32は、書込データの変換に用いるデータ変換鍵(第1鍵)を記憶する。本実施の形態では、鍵記憶部32は、公開鍵方式の秘密鍵Ksをデータ変換鍵として記憶している。この秘密鍵Ksは、半導体メモリチップ10の鍵記憶部141(後述)が記憶するデータ変換鍵(第2鍵)である公開鍵Kpに対応する秘密鍵である。
【0024】
なお、適用可能な暗号化方式は公開鍵方式に限られるものではない。また、以下では、書き込み装置30がデータ変換鍵(秘密鍵Ks)を用いて書込データを暗号化し、半導体メモリチップ10が対応するデータ変換鍵(公開鍵Kp)で書込データを復号してメモリ110に記憶する場合を例に説明する。書き込み装置30がデータ変換鍵(第1鍵)を用いてデータを変換し、半導体メモリチップ10が、第1鍵に対応するデータ変換鍵(第2鍵)を用いて変換後のデータを変換するものであれば、これ以外の変換方法を適用してもよい。例えば、書き込み装置30が第1鍵を用いて復号に相当する変換処理を実行し、半導体メモリチップ10が、第1鍵に対応する第2鍵を用いて暗号化に相当する変換処理を実行するように構成してもよい。
【0025】
暗号化部33は、秘密鍵Ksを用いて書込データを暗号化する。また、暗号化部33は、秘密鍵Ksを用いてECCを暗号化した符号(変換符号)を生成する。なお、以下では、暗号化された書込データを暗号化データといい、ECCを暗号化した変換符号を暗号化ECCという場合がある。データ送信部34は、暗号化データと、暗号化ECCと、書込先ページの指定とをコントローラー20の書込制御部23に送信する。
【0026】
次に、コントローラー20の書込制御部23の構成例について説明する。図1Cに示すように、書込制御部23は、データ転送部23−1を備えている。データ転送部23−1は、暗号化データと、暗号化ECCと、書込先ページ指定とを受信し、これらの情報を半導体メモリチップ10のデータ変換部14に送信する。
【0027】
次に、データ変換部14の構成例について説明する。図1Cに示すように、データ変換部14は、鍵記憶部14−1と、復号部14−2と、書込部14−3とを備えている。
【0028】
鍵記憶部14−1は、公開鍵方式の公開鍵Kpを記憶する。復号部14−2は、鍵記憶部14−1の公開鍵Kpを用いて暗号化データと暗号化ECCとを復号する。なお、暗号化データから復号された書込データが、変換データに相当する。書込部14−3は、復号された書込データをメモリ11上の書き込み認証領域11−3の指定されたページに記録する。また、書込部14−3は、復号されたECCをメモリ11の符号記憶部11−1に格納する。
【0029】
図1Dに書き込み時の動作を示す。まず、データDと書き込み先ページの指定が、書き込み装置30に入力される(ステップS4601)。データDはECC生成部31を通過し、そこでECCが生成される。データDと当該データDのECCは暗号化部33に送られる(ステップS4602)。暗号化部33は鍵格納部32から秘密鍵Ksを取得する(ステップS4603)。暗号化部33は、前記秘密鍵Ksを用いて、データDとECCとを、それぞれ暗号化し、暗号化データD’と暗号化ECCとを得る(ステップS4604)。暗号化部33は、前記暗号化データD’と暗号化ECCとをデータ送信部34に送る(ステップS4605)。データ送信部34は、コントローラーの書き込み制御部23に、暗号化データD’と書き込み先ページ指定、および、暗号化ECCを送信する(ステップS4606)。書き込み制御部23のデータ転送部23−1が、暗号化データD’と書き込み先ページ指定、および、暗号化ECCを、データ変換部14に転送する(ステップS4607)。データ変換部14の復号部14−2が、前記暗号化データD’と書き込み先ページ指定、および、暗号化ECCを受信する。復号部4142は、鍵記憶部14−1から公開鍵Kpを取得する(ステップS4608)。当該公開鍵Kpは、前記鍵記憶部32が格納している秘密鍵Ksに対応するものである。復号部14−2は、前記公開鍵Kpを用いて、暗号化データD’と暗号化ECCとをそれぞれ復号し、データDとECCとを得る(ステップS4609)。復号部14−2は書込部14−3に、書込先ページ指定とデータD、ECCを送る。書込部14−3が、半導体メモリチップの(書き込み認証領域に含まれる)指定された書込先ページにデータDを記録すると共に、ECCを符号記憶部の然るべき場所(前記指定された書き込み先ページに対応する場所)に記録する(ステップS4610)。
【0030】
本実施形態の発明のゲーム機器における利用について述べる。図1EAに、本発明の半導体メモリチップの一応用例を示す。本発明の半導体メモリチップ10Eはゲームカセット1に搭載されている。書き込み装置30Eは、当該ゲームカセット1Eの製造段階で当該ゲームカセット1Eにゲームデータ(プログラムや動画などゲーム実行に必要なデータ)を記録する。ゲームカセット1Eと書き込み装置はインターネットなどを経由して接続されていても良い。また、ゲームカセット1Eの利用時には、ゲームカセット1Eは書き込み装置と切り離されて、ゲーム機に接続される。ゲーム機2EはCPUなどを含むSoC(System on Chip)50Eを搭載している。ここではSoC50Eとしたが、一般にCPUを含むチップセットとして良い。SoC50Eは、半導体メモリチップ10Eに記録されているゲームデータを読み出し、プログラムを実行する。図1EAにおける矢印は、データの流れを示している。一方、図1EBには、図1EAにおける認証の方向を示す。図1EAと図1EBにおいて、コントローラー20Eは、電気的にデータを中継する働きを果たしている。コントローラー20Eが、データを論理的に加工する事はなく、認証の対象になる事もない。
【0031】
上記のような書き込み装置と半導体メモリチップ10Eの認証を実現する為に、半導体メモリチップ10上Eに、新たに書き込み認証領域11−3Eという領域を儲ける。書き込み認証領域11−3Eとは、予め定められたメモリ領域であって、当該半導体メモリチップ10Eから認証された書き込み装置30Eのみが正しいデータを記録する事ができるメモリ領域である。或いは、書き込み認証領域11−3Eとは、予め定められたメモリ領域であって、当該半導体メモリチップ10Eから認証された書き込み装置30Eが書き込んだデータのみが正しく読み出し得るようなメモリ領域である。以下に、書き込み認証領域11−3Eの具体的な構成方法を述べる。
【0032】
書き込み認証領域11−3Eに正しく書き込む為には、書き込み装置30が、半導体メモリチップ10Eが保持している公開鍵に対応する秘密鍵を保持している必要がある。即ち、半導体メモリチップ10Eから認証された書き込み装置30Eのみが、書き込み認証領域11−3Eに正しいデータを書き込む事ができる。この事により、書き込み装置30Eから半導体メモリチップ10Eへのデータの流れ(図1EA参照)に伴って、半導体メモリチップ10Eから書き込み装置30Eへの認証(図1EB参照)を確立する事ができる。
【0033】
図1Fは、本発明の一利用例を示すブロック図である。まず、半導体メモリチップ11Eの機能の概要について説明する。図1Fに示すように、半導体メモリチップ11Eは、メモリ11−2Eと、暗号鍵共有部12Eと、送出制御部13Eと、を備えている。
【0034】
メモリ11Eは、各種データを記憶する記憶部である。メモリ11Eは、例えば、NAND型フラッシュメモリなどにより構成できる。なお、メモリ1E1はこれに限られず、他の型式のフラッシュメモリなどを含む、半導体素子によって構成される任意の半導体メモリを適用することができる。メモリ11Eは、符号記憶部11−1Eと、読み出し特殊領域11−2Eと、書き込み認証領域11−3Eと、共通領域11−4Eと、一般領域11−5Eとを備えている。符号記憶部11−1Eは、書き込み装置30Eから書き込みが要求されたデータのエラー訂正符号(ECC:エラーコレクションコード)を記憶する。なお、符号記憶部11−1Eは、メモリ11Eの外部にメモリ11Eと独立の記憶部として備えてもよい。
【0035】
図1Fでは、読み出し特殊領域11−2Eおよび書き込み認証領域11−3Eのそれぞれに、共通領域11−4E以外の領域が含まれる例が示されているが、少なくとも共通領域11−4Eが存在すれば、各領域の構成は任意である。例えば、読み出し特殊領域11−2Eと書き込み認証領域11−3Eとが一致(すなわち読み出し特殊領域11−2Eと書き込み認証領域11−3Eとがいずれかも共通領域11−4Eと一致)するように構成してもよい。一般領域11−5Eとは、送出制御部13Eを介さずに、コントローラー20から直接書き込みおよび読み取りが可能な領域を表す。暗号鍵共有部12Eは、ゲーム機2Eとの間で共有する暗号鍵を保持または生成する。送出制御部13Eは、メモリ11から読み出したデータをゲーム機2Eに送出する処理を制御する。次に、コントローラー20Eの機能の概要について説明する。コントローラー20Eは、一般領域読出部24Eを備えている。一般領域読出部24Eは、一般領域11−5Eからのデータの読み出しを制御する。すなわち、一般領域11−5Eからデータを読み出す場合、読み出し装置は、コントローラー20Eの一般領域読出部24Eに対して、読み出し対象となるページの指定を入力する。次に、ゲーム機2Eの機能の概要について説明する。ゲーム機2Eは、暗号鍵共有部51E、読出制御部52E、プログラム復号部53E、プログラム実行部54Eを有している。暗号鍵共有部51Eは、半導体メモリチップ10Eとの間で共有する暗号鍵を保持または生成する。読出制御部52Eは、読み出し装置および再生装置などの外部装置(図示せず)からの要求に応じて、半導体メモリチップ10Eの共通領域11−4Eからデータを読み出す処理を制御する。プログラム復号部53Eは、読出し制御部52Eからプログラム暗号鍵を取得し、半導体メモリチップから一般領域読出部24Eが読み出したゲームプログラムの一部とデータの一部を復号する。プログラム復号部53Eは、ゲームプログラムとデータとをプログラム実行部54Eに送る。プログラム実行部54Eは、プログラム復号部53Eが復号したプログラムを実行する。
【0036】
図1Gは、図1Fの半導体メモリチップとSoCそれぞれの暗号鍵共有部の構成を示すブロック図である。図1Gに示すように、暗号鍵共有部12Eは、メディア鍵を表すKM12−1E(以下、メディア鍵KMという)と、MKB(Media Key Block)12−2Eとを保持している。MKB12−2Eについては、例えば非特許文献1に記載されている。また、暗号鍵共有部51Eは、デバイス鍵を表すKD51−2Eを保持している。また、暗号鍵共有部51Eは、MKB読み取り部51−1Eと、MKB処理部51−3Eと、を備えている。MKB読み取り部51−1Eは、半導体メモリチップ10Eの暗号鍵共有部12EからMKB12−2Eを読み出す。MKB処理部51−3Eは、読み出されたMKBをデバイス鍵KD51−2Eを用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。
【0037】
図1Hに、図1Gの暗号鍵共有部の動作を示す。SoCの暗号鍵共有部51EのMKB読み取り部51−1Eが、半導体メモリチップ10Eの暗号鍵共有部12Eが保持するMKB12−2Eを読み出す(ステップS4101)。MKB読み取り部51−1Eが、読み取ったMKBをMKB処理部51−3Eに送る(ステップS4102)。MKB処理部51−3Eは、デバイス鍵KD51−2Eを読み、MKB処理を行う(ステップS4103)。このMKB処理により正しいメディア鍵KMが得られなかった場合、MKB処理部51−3EはSoC50Eにエラーを通知する(ステップS4105)。エラーを受け取ったSoC50Eは以後の読み取り処理を中止する。一方、正しいメディア鍵KMが得られた場合、MKB処理部51−3Eは、読出し制御部52Eにメディア鍵KMを送る(ステップS4106)。また、半導体メモリチップの暗号鍵共有部12がメディア鍵KM12−1Eを半導体メモリチップの送出制御部13Eに送る(ステップS4107)。
【0038】
図1Jは、図1Fの送出制御部13Eと読出制御部52Eの構成を示すブロック図である。半導体メモリチップ10Eの送出制御部13EとSoC50Eの読出制御部22Eの構成例について図1Jを用いて説明する。図1Jに示すように、送出制御部13Eは、乱数発生部13−1Eと、読出部13−2Eと、暗号化部13−3Eと、送出部13−4Eとを備えている。乱数発生部13−1Eは、暗号化部13−3Eの要求に応じて乱数を発生する。読出部13−2Eは、指定された読み出し対象ページのデータと、当該データのECCとをメモリ11Eから読み出す。暗号化部13−3Eは、読み出されたデータをメディア鍵KMを用いて暗号化する。送出部13−4Eは、暗号化されたデータ(暗号化データ)とECCとをSoC50Eのデータ受信部52−1Eに送出する。また、図1Jに示すように、読出制御部52Eは、データ受信部52−1Eと、復号部52−2Eと、エラー修復部52−3Eとを備えている。データ受信部52−1Eは、半導体メモリチップ10Eの送出部13−4Eから暗号化データとECCとを受信する。復号部52−2Eは、受信された暗号化データをメディア鍵KMを用いて復号する。エラー修復部52−3Eは、受信されたECCを用いて、復号されたデータのエラー有無のチェックおよびエラー修復を行う。
【0039】
図1Kは、送出制御部13Eと読出制御部52Eの動作を示すフローである。読出制御部52Eは、暗号鍵共有部51Eからメディア鍵KMを受信する(ステップS4201)。読出制御部52Eは、当該メディア鍵KMを復号部52−2Eに入力する(ステップS4202)。読出制御部52Eは、送出制御部13Eに、読出し対象ページの指定を送る(ステップS4203)。読出部13−2Eが指定されたページのデータDを読み出し、暗号化部13−3Eに入力する(ステップS4204)。読出部は更に、指定されたページに対応するECCを符号記憶部から読出し、暗号化部13−3Eに入力(ステップS4205)。暗号化部13−3Eは乱数発生部13−1Eから乱数Rを受け取る(ステップS4207)。暗号化部13−3Eは暗号鍵共有部12Eからメディア鍵KMを受け取る(ステップS4208)。暗号化部13−3EはデータDと前記乱数Rとを連結し、メディア鍵KMで暗号化。暗号化データD’を得る(ステップS4209)。送出部13−4Eが、暗号化データD’とECCとをSoC50Eに送る(ステップS51−1)。
【0040】
SoC50Eの側では、読出し制御部52Eのデータ受信部52−1Eが、前記暗号化データD’とECCとを受け取る(ステップS51−2)。この通信はコントローラーを介して行われるが、コントローラーは通信の信号を中継するのみである。次いで、データ受信部52−1EはECCをエラー修復部52−3Eに送る(ステップS51−3)。データ受信部は暗号化データD’を復号部52−2Eに送る(ステップS4214)。復号部52−2Eはメディア鍵KMを用いて暗号化データD’を復号し、平文のデータDを得る(ステップS4215)。復号部52−2EはデータDをエラー修復部52−3Eに送る(ステップS4216)。エラー修復部52−3EがECCを用いてデータDのエラーをチェックする(ステップS4217)。データDにエラーが無い場合、エラー修復部52−3EはデータDを出力する(ステップS4219)。データDにエラーが有り修復可能である場合、エラー修復部52−3EはデータDのエラーを修復後、データDを出力する(ステップ4219)。さもなければ、エラー修復部はSoC50Eにエラーの発生を通知して(ステップS52−2)終了する。
【0041】
さて、図1Fのシステムは、ゲームプログラム実行時に次のように動作する。図1Lを用いて説明する。ゲームプログラムの一部と、当該ゲームプログラムが利用するデータの一部は暗号化されており、当該暗号化の鍵(複数存在して良い。これをプログラム暗号鍵と称する。)は、書き込み装置によって書き込み認証領域と読み出し特殊領域の交わりの領域に書き込まれている。ゲームプログラムと当該ゲームプログラムが利用するデータ自体は、半導体メモリチップ10Eの一般領域に記録されている。ゲーム機2Eはゲームプログラムを実行する為に、ゲームプログラムをSoC50Eに読み込む。SoC50Eはまず半導体メモリチップ10EのMKBを読出し、上述の手続きによって、半導体メモリチップ10Eとメディア鍵KMを共有する(ステップS30)。次いで上述の手続きによって、前記プログラム暗号鍵を読出し特殊領域から送出制御部13Eを経由して読み出す(ステップS4305)。前記プログラム暗号鍵は、送出制御部13Eにおいて暗号化され(ステップS4304)、読出制御部52Eにおいて復号される(ステップS4305)ことになる。ゲーム機2Eはゲームカセット1Eからゲームプログラムと当該ゲームプログラムが利用するデータを読み出す。読み出されたゲームプログラムとデータはSoC50Eのプログラム復号部53Eに送られる(ステップS4308)。プログラム復号部53Eは、読出制御部52Eからプログラム暗号鍵を取得し、ゲームプログラムの一部とデータの一部を復号する(ステップS4309)。プログラム復号部53Eは、ゲームプログラムとデータとをプログラム実行部54Eに送る(ステップS4310)。プログラム実行部54Eが当該ゲームプログラムを実行する(ステップS4311)。
【0042】
上述の実施例においては、書き込み認証領域を構成する手段として、半導体メモリチップ上の公開鍵を利用した。半導体メモリチップから書き込み装置を認証する為に、書き込み認証領域を構成する手段としてMKBを用いても良い。その一例を図1Mに示す。MKB1は利用装置のリボーク用であり、MKB2は書き込み装置のリボーク用である。共有鍵の処理や利用装置の読み出し制御はゲーム機2Eの場合と同様である。
【0043】
書き込み装置と半導体メモリチップの暗号鍵共有手段の構成は図1Nに示す通りである。また、書き込み装置のデータ書き込み手段と、半導体メモリチップのデータ変換手段とを、図1Pに示す。
【0044】
各モジュールは以下のように動作する。図1Qを用いて説明する。書き込み装置4Mの暗号鍵共有部41Mが書き込み認証領域にあるMKB2を読み出す(ステップS4008001)。暗号鍵共有部41Mは、格納しているデバイス鍵KDを用いて、MKB処理部41M2においてMKB2を処理し(ステップS40080021)、メディア鍵KMを得る(ステップS40080022)。MKB2によってデバイス鍵KDがリボークされていた場合は、ここで、暗号鍵共有部41Mは書き込み装置4Mにエラーを通知して動作を終了する(ステップS4008003)。暗号鍵共有部41Mがメディア鍵KMを得た後、当該メディア鍵KMはデータ送信部42Mに送られる(ステップS4008003)。データ送信部42Mは、乱数発生部42M1において乱数Rを発生させ、コンテンツ鍵と前記乱数Rとを暗号化部42M2に入力する。暗号化部42M2は、前記メディア鍵KMを用いて、コンテンツ鍵と乱数Rとを連結したデータを暗号化する(ステップS4008004)。暗号化されたコンテンツ鍵(と乱数)はデータ送出部42M3に送られる。データ送出部42M3は、コンテンツ鍵のECCを読み込み、暗号化コンテンツ鍵とECCとを半導体メモリチップに送出する(ステップS4008005)。当該暗号化コンテンツ鍵とECCとを、半導体メモリチップのデータ変換部14Mのデータ受信部14M1が受信する(ステップS4008006)。データ受信部14M1は、暗号化コンテンツ鍵を復号部14M2に送り(ステップS4008007)、ECCをECC格納部15Mに記録する(ステップS4008008)。復号部14M2は半導体メモリチップの暗号鍵共有部13Mからメディア鍵KMを読み取り(ステップS4008009)、当該メディア鍵KMを用いて暗号化コンテンツ鍵を復号する(ステップS4008010)。復号された暗号化コンテンツ鍵は乱数Rと連結されている。復号部14M2は、乱数Rを捨てて、暗号化コンテンツ鍵のみを、半導体メモリの書き込み認証領域16Mに記録する(ステップS4008011)。
【0045】
書き込み特殊領域や書き込み認証領域に、鍵共有などの認証手続きを行う事無く、書き込み装置が書き込みを事が有り得る。この場合、大きく二つの動作が考えられる。一つは、認証手続きを経ていないものとして、書き込みを受け付けないという動作である。この場合、半導体メモリチップは書き込み装置に対してエラーを通知しても良い。もう一つは、書き込みを受け付け、実際に書き込みを行うという動作である。ただし、認証や鍵の共有が行われていないので、半導体メモリチップ側は、乱数を発生し、この乱数を暗号鍵共有部によって共有された鍵として、この乱数で書き込み装置から受信したデータを暗号化(復号)してメモリに記録する。半導体メモリチップのデータ変換部の構成の一例を図1Rに示す。その動作を図1Sに示す。データ受信部14M1が、書き込み装置のデータ送信部から暗号化コンテンツ鍵とECCとを受信する(ステップS4009001)。データ受信部14M1は、ECCをECC格納部15Mに記録。データ受信部14M1は、暗号化コンテンツ鍵を復号部14M2に送る。復号部14M2は暗号鍵共有部から認証によって得られた共有鍵Kを取得する。暗号鍵共有部で共有鍵Kが得られた場合は、当該共有鍵Kで暗号化コンテンツ鍵Kを復号し、書き込み認証領域16Mに記録する(ステップS4009002)。暗号鍵共有部から共有鍵Kが得られなかった場合、乱数発生部14M3で乱数Rを発生し復号部14M2に送る(ステップS4009003)。復号部14M2はコンテンツ鍵を前記乱数Rで復号し、書き込み認証領域16Mに記録する(ステップS4009004)。無論、乱数Rは正しい共有鍵ではないから、コンテンツ復号鍵は正しく復号できない。即ち、正当な認証を経る事無く書き込み認証領域に記録を行えば、データは正しく記録されない。
【0046】
利用装置毎に、半導体メモリチップから読み出したコンテンツデータが区別されるようにする実施形態について以下に説明する。図1Tに電子書籍データの構造を図示する。このデータのサイズは8MBであり、8つの部分に等分されている。便宜上、各部分をD00、D01、…、D31までの記号で表現する。電子書籍の文字データとしては、D00とD01、D10とD11、D20とD21、D30とD31は同一である。しかし、背景の画像に入っている電子透かしが、D00とD01、D10とD11、D20とD21、D30とD31で異なっている。D00〜D31の各部分は、それぞれ異なるコンテンツ鍵で暗号化されている。それらのコンテンツ鍵を、それぞれK00、K01、…、K31とする。例えば、データの部分D21はコンテンツ鍵K21で暗号化される。D21’ = Enc( K21, D21 )。
【0047】
電子書籍のリーダーは4つのデバイス鍵KD0、KD1、KD2、KD3を保持している。また、各リーダーにはリーダーIDが割り当てられている。リーダーIDは8桁の十進数である。各リーダーはリーダーIDを保持している。本実施例では、半導体メモリチップは8個の読出し特殊領域を具備している。これら8個の読出し特殊領域をA00, A01, A10, A11, A20, A21, A30, A31とする。各読出し特殊領域には予め順に、コンテンツ鍵K00, K01, K10, K11, K20, K21, K30, K31が記録されている。更に、半導体メモリチップには割り当て規則が記録されている。例えば、割り当て規則として数値0が記録されている。この規則は電子書籍リーダーによって次のように解釈される。8桁のリーダーIDを2桁づつ区切り、4つの数値n0, n1, n2, n3を得る。n0が偶数であれば、A00からコンテンツ鍵K00を読み、データ部分D00’を復号する。n0が奇数であれば、A01からコンテンツ鍵K01を読み、データ部分D01を復号する。同様に、n1が偶数であれば、A10からコンテンツ鍵K10を読み、データ部分D10’を復号する。n1が奇数であれば、A11からコンテンツ鍵K11を読み、データ部分D11’を復号する。以下同様。ポイントは、n1が偶数であるような電子書籍リーダーが、当該リーダーが保持するデバイス鍵KD0で半導体メモリチップのMKBを処理した時、読出し特殊領域A00から正しくデータを読み出す事ができる共有鍵を導出可能であるという点である。MKBが、そのように設計されている訳である。
【0048】
以上のように、電子書籍リーダーは、当該リーダーが保持するリーダーIDに応じて、A00またはA01、A10またはA11、A20またはA21、A30またはA31から、コンテンツ鍵K00またはK01、K10またはK11、K20またはK21、K30またはK31を読出し、データ部分D00’またはD01’、D10’またはD11’、D20’またはD21’、D30’またはD31’を復号し、表示する。ある電子書籍リーダーソフトが不正にクラッキングされ、書籍データが流出したと仮定する。流出データを見れば、流出した電子書籍リーダーのIDに関する情報を得る事ができる。例えば、( D00, D11, D20, D31 )の組み合わせで流出していれば、リーダーIDについて、n0が偶数、n1は奇数、n2は偶数、n3は奇数である事が分かる。
【0049】
なお、割り当て規則は、MKBと共に与える事も可能である。この場合、デバイスIDは使用する必要はなく、デバイス鍵KD0、…、KD3の組み合わせ、そのものによって、読出し特殊領域が指定される。より具体的には、デバイス鍵KD0によってMKBを復号した時、メディア鍵KM0の他に0または1の値が出てくるようにMKBを設計する事が可能である。
【0050】
半導体メモリチップは通常インタフェースを処理するメモリチップ・インタフェースと共にパッケージに封入されて販売されている。メモリチップ・インタフェースのI/Oの単位が半導体メモリチップのI/Oの単位(ページ)と異なっている場合がある。ここでは、書き込み装置が暗号化したデータを、メモリチップ・インタフェースに書き込み特殊領域内のデータを平文で与える事無く、半導体メモリチップに正しいデータを書き込む為の構成と手順とを開示する。メモリチップ・インタフェースは暗号化されたデータを中継するのみであるから、半導体メモリチップに書き込まれる正しいデータを知らない。従って、ECCの処理を行う事ができない。ECCは書き込み装置が、書き込みデータに付与する必要がある。
【0051】
図1TBにシステム構成を示す。半導体メモリチップ12Tはメモリチップ・インタフェース13Tと共に半導体メモリパッケージ11Tに封入されている。通常、半導体メモリチップは、このような半導体メモリパッケージの形で市販されている。半導体メモリチップには一つの暗号鍵共有部と二つのデータ変換部を具備している。第1暗号鍵共有部17Tと第1データ変換部18T、及び、第2データ変換部20Tである。
【0052】
第1暗号鍵共有部17Tと第1データ変換部18Tは、半導体メモリチップが書き込み装置25Tから認証を受ける為の仕組みである。第2データ変換部20Tはメモリチップ・インタフェース13Tに与えるデータを秘匿する為の手段である。半導体メモリチップ12Tの第2データ変換部20Tは入出力を持つ。前記入出力でやり取りされるデータのサイズは固定であり、それは例えば(2KB+32B)である。
【0053】
メモリチップ・インタフェース13Tはデータ送受信部22Tとデータ転送部29Tを具備している。メモリチップ・インタフェース13Tと書き込み装置25Tとの間で一度にやり取りされるデータの単位は、メモリチップ・インタフェース13Tと半導体メモリチップ12Tとの間でやり取りされるデータの単位である(2KB+32B)とは異なっている。前者の値は512Bである。メモリチップ・インタフェースは、データサイズの違いを吸収する為のバッファ23Tを具備している。当該バッファのサイズは(2KB+32B)以上である。
【0054】
書き込み装置25Tは、第2暗号鍵共有部26Tとデータ送信部27Tを具備している。これらは半導体メモリチップ12Tを認証してデータを書き込む為の仕組みである。書き込み装置25Tがメモリチップ・インタフェースに一度に書き込むデータのサイズは512Bである。メモリチップ・インタフェース13Tのデータ転送部29Tが前記書き込みデータを受信し、バッファ23Tの一部である512Bを書き換える。
【0055】
半導体メモリチップの特殊領域の書き込み対象ページは図1TCのようなデータ構成になっている。領域1〜4は、それぞれ異なるアプリケーションに対応している。即ち、半導体メモリチップが保持する異なるデバイス鍵に対応している。即ち、領域1〜4に記録する際に、半導体メモリチップが使用するデバイス鍵は、それぞれKD1、…、KD4である。これらのデバイス鍵は第1暗号鍵共有部17Tに格納されている。Extra21Tには領域1〜4に関する制御用のデータが記録される。
【0056】
図1TBの書き込み装置25Tは領域2を使用するアプリケーションの書き込み装置である。書き込み装置25TはMKBを保持しており、当該MKBは書き込みの際に、第1暗号鍵共有部17Tにおいて、デバイス鍵KD2を用いて処理される。前記処理の結果(デバイス鍵KD2が前記MKBによって無効化されていない場合)メディア鍵KM2が得られる。同様にデバイス鍵KD1、KD3、KD4による処理によって、メディア鍵KM1、KM3、KM4が得られるが、KM1、…、KM4は互いに異なっていて良い。
【0057】
図1TDに図1TBの第1暗号鍵共有部18Tと第2暗号鍵共有部26Tの構成を示す。書き込み装置25Tの第2暗号鍵共有部26Tは、半導体メモリチップ認証用のMKBを格納している。一方、半導体メモリチップ12Tの第1暗号鍵共有部18Tはデバイス鍵KD2を格納している。書き込み装置25Tは領域2を使用するアプリケーションの書き込み装置であり、従って、当該領域に対応しているデバイス鍵KD2を認証する必要がある。
【0058】
図1TEに第2データ変換部20Tの構成を示す。第2データ変換部20Tは二方向にデータを転送する。一つは読出しであり、半導体メモリチップの書き込み特殊領域内の書き込み対象ページを読出し、暗号化してメモリチップ・インタフェースに送る。この暗号化には、暗号鍵生成部19Tが生成した一時鍵KT’が用いられる。暗号化部502Tの動作には大きな特徴がある。暗号化部502Tは、書き込み対象ページを先頭から読出し、一時鍵KT’で暗号化しながら、メモリチップ・インタフェースに送るのであるが、領域2に相当する部分のデータはメモリチップ・インタフェースに転送しない。その代わりに、例えばFFを送る。その結果、第2データ変換部からメモリチップ・インタフェースに送信されるデータは図1TFのようになる。Extraの部分は暗号化されず、そのままメモリチップ・インタフェースに送られる。
【0059】
もう一つのデータの流れは書き込みである。第2データ変換部20Tの復号部503Tは、メモリチップ・インタフェースから受け取った(2KB+32B)のデータを、暗号鍵生成部19Tから受け取った一時鍵KT’によって復号して、第1データ変換部18Tに送る。この復号の際に用いられる一時鍵KT’は、読出しの際の暗号化で用いられた一時鍵KT’と同一のものである。復号部503Tの動作も特徴的である。復号部503Tは、メモリチップ・インタフェースから受信するデータを、一時鍵KT’を用いて先頭から順次復号しながら、第1データ変換部18Tに送るのであるが、領域2に相当する部分のデータは(復号せず)そのまま転送する。その結果、第2データ変換部20Tから第1データ変換部18Tに送信されるデータは図1TGのようになる。Extraの部分も復号されず、そのままメモリチップ・インタフェースに送られる。領域2に相当する部分(オフセット512-1023)は、データ転送部29Tが書き込んだ512Bのデータそのままである。後述のように、このデータは、書き込み装置25Tが送信した、ECCを含む暗号化データに一致する。
【0060】
図1THは第1データ変換部18Tの構成を示すブロック図である。第1データ変換部18Tは、第2データ変換部20Tから書き込み用に送られて来たデータを書き込み対象ページに書き込むが、その際、領域2に相当する部分を復号する。領域2のデータは書き込み装置25Tによって暗号化されているからである。前記復号に用いられる一時鍵KTは、第1暗号鍵共有部17Tが第2暗号鍵共有部26Tによって認証される際に生成される。第1データ変換部18Tは、領域2以外のデータは、そのまま書き込み対象ページに書き込む。領域2のデータは、一時鍵KTによって書き込み装置25Tが暗号化する前のデータに等しい。これは後述のように、データDとECCとを含むデータである。
【0061】
書き込み装置25Tのデータ送出部27Tの構成を図1TJに示す。暗号化部901Tは512B−16B=496BのデータDを受け取る。暗号化部901Tは前記データDの後に16Bの0を付加して512Bのデータを作り、それをECC生成部902Tに送る。ECC生成部902Tは前記512Bのデータに関するECCを生成して、暗号化部901Tに返す。暗号化部901Tは、前記512Bのデータの最後の3Bを、ECC生成部902Tから受信したECCで上書きする。更に、暗号化部901Tは、一時鍵KTによってデータDとECCとを含む512Bのデータを暗号化する。一時鍵KTは、書き込み装置25Tが半導体メモリチップ12Tを認証する際に生成される鍵であり、半導体メモリチップ12Tの第1暗号鍵共有部と共有されている鍵である。暗号化部901Tは496BのデータDとECCとを暗号化したものをメモリチップ・インタフェースに送る。メモリチップ・インタフェースに送られるデータが作られる様子を図1TKに示す。図1TKにおいて、表の第一行の数値はバイトのオフセットを示す。ここでのポイントは、書き込み装置25Tだけが、半導体メモリチップ12Tに記録されるデータDのECCを生成できるという事である。暗号化されたデータを中継するだけのメモリチップ・インタフェースはECCの値を生成する事はできない。従って、書き込み装置がECCを付加する必要がある。
【0062】
書き込み装置25Tが半導体メモリチップ12Tに書き込みを行う動作を図1TLに示す。第1暗号鍵共有部17Tと第2暗号鍵共有部26Tが一時鍵KTを共有する手続きは、本明細書の他の場所で述べたものと同様である(図1TM参照)。即ち、書き込み装置26TがMKB読み取り部301TにMKBを送る(ステップS701201)。MKB読み取り部301Tは前記MKBをMKB処理部302Tに送る(ステップS701202)。MKB処理部302Tは暗号鍵共有部が格納しているデバイス鍵KD2を読み込み、前記MKBを処理する(ステップS701203)。デバイス鍵KD2が前記MKBによって無効化されていない場合、メディア鍵KM2が得られる。MKB処理部302Tはメディア鍵KM2を一時鍵生成部304Tに送る(ステップS701204)。一時鍵生成部304Tは乱数受信部303Tに乱数を要求する(ステップS701205)。乱数受信部303Tは、書き込み装置の乱数送信部306Tに乱数を要求する(ステップS701206)。乱数送信部306Tは乱数生成部305Tに乱数生成を要求する(ステップS701207)。乱数生成部305Tは乱数Rを生成し、当該乱数Rを乱数送信部306Tに送る(ステップS701208)。乱数送信部306Tは乱数受信部303Tに前記乱数Rを送出する(ステップS701209)。乱数受信部303Tは前記乱数Rを受信すると、前記乱数Rを一時鍵生成部304Tに送る(ステップS701210)。一時鍵生成部304Tはメディア鍵KM2と前記乱数Rとを用いて一時鍵KTを生成する(ステップS701211)。一方、乱数送信部303Tは、前記乱数Rを一時鍵生成部307Tに送る(ステップS701212)。一時鍵生成部307Tは第2暗号鍵共有部が格納しているメディア鍵KM2を読み込み、一時鍵生成手段304Tと同一の手続きにより一時鍵KTを生成する(ステップS701213)。
【0063】
図1TLに戻る。第1暗号鍵共有部17Tと第2暗号鍵共有部26Tとが一時鍵KTを共有(ステップS701102)した後、データ送信部27Tは送信用のデータD’を作り(ステップS701104)、メモリチップ・インタフェース13Tに送出する(ステップS701105)。暗号化データD’の作り方は上述した通りである。メモリチップ・インタフェースが前記暗号化データD’を受け取ると、第2データ変換部が書き込み対象ページを読み込む(ステップS701107)。暗号鍵生成部19Tが一時鍵KT’を生成する(ステップS701108)。これは例えば乱数である。第2データ変換部20Tは一時鍵KT’を読み込み、読み込んだ書き込み対象ページを部分的に暗号化する(ステップS701109)。ここでの特徴ある暗号化の方法については上述した通りである。次いで、第2データ変換部20Tが暗号化した書き込み対象ページのデータはバッファ23Tに記録される(ステップS701111)。データ転送部29Tがバッファ23Tの領域2に相当する部分を、書き込み装置25Tから受信した512Bのデータで上書きする(ステップS701112)。前記データの構成は上述した通りである。その後、バッファのデータ(先頭から2KB+32B分)は第2データ変換部20Tに再び送られる。第2データ変換部20Tは、このデータを部分的に復号する(ステップS701114)。ここでの特徴的な復号の方法については上述した通りである。第2データ変換部20Tは復号したデータを第1データ変換部18Tに送る(ステップS701115)。第1データ変換部は受け取ったデータの領域2に相当する部分のみを一時鍵KTによって復号する(ステップS701116)。その結果、領域2に相当する部分は、データDとECCとから構成される平文となる。即ち、図1TKの中段に示すデータが得られる。データ変換部は、前記部分的に復号したバッファのデータを書き込み対象ページに記録する。
【0064】
以上のような構成と動作によって、書き込み装置25Tが意図した通りのデータが、半導体メモリチップの書き込み対象ページに記録される。上記では、領域2を利用するアプリケーションの書き込み動作を述べたが、他の領域を利用するアプリケーションについても同様である。なお、本実施例のように書き込まれるデータについては、メモリチップ・インタフェースはECC処理を行う事ができない。アプリケーションの利用装置がECCをチェックする必要がある。半導体メモリチップが二つのデータ変換部を具備しており、一つは書き込み装置との認証用であり、もう一つはメモリチップ・インタフェースに対するデータの秘匿を担っている事が、本実施例の特徴となっている。
【0065】
本実施形態の発明のスマートグリッドにおける利用について述べる。図1UAは、本実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するメーター1Uaと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)5Uが各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3Uがビル毎に設置される。商業ビルには、メーター1Uaと同様のメーター1Ubが設置される。以下では、メーター1Uaおよび1Ubを単にメーター1Uという。
【0066】
メーター1Uは、コンセントレータとよばれる中継器(コンセントレータ4U)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)2Uと通信する。MDMS2Uは、各家庭のメーター1Uから一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)6Uは、MDMS2Uに集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のメーター1UやHEMS5Uに対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS6Uは、遠隔端末ユニットであるRTU(Remote Terminal Unit)71Uに接続された太陽光発電や風力発電などの分散電源80U、同じくRTU72Uに接続された蓄電装置90U、および、RTU73Uに接続された発電側との間を制御する送配電制御装置100Uを制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0067】
図1UBは、スマートグリッドシステムの一例を示す図である。スマートグリッドシステムは、メーター1UとMDMS(Meter Data Management System)40Uとを有する。メーター1Uは、半導体メモリチップ10Uと電力計測部30Uを有する。メーター1Uは、コンセントレータとよばれる中継器(図示せず)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS40Uと通信する。MDMS40Uは、各家庭のメーター1Uから一定の間隔で電力使用量を受信して記憶する。なお、メーター1Uは特にスマートメーターと呼ばれることもある。なお、スマートメーターとは、電力等のエネルギー使用量を計測し、計測値を記録する。その計測値をメーター管理システムにデータを送信またはメーター管理システムからの読み出しを受け付けるメーターであり、さらに系統制御側からのデマンドレスポンス信号等の制御命令を記録し、宅内のエネルギー利用制御を行うまたは支援する高機能メーターをいう。
【0068】
メーター1Uの電力計測部30Uなどで計測されたデータは、当該メーター1Uの半導体メモリチップ10Uに格納され、随時MDMSに送信される。この計測データをMDMS2Uで電力供給の制御に利用する為には、このデータの正統性が保証されている事が望ましい。これを保証する為の一つの手段は、図1UBのトラスト・チェインを構築する事である。即ち、読出し装置であるMDMS40Uがメーター1Uの半導体メモリチップ10Uを認証し、かつ、半導体メモリチップ10Uが当該メーター1Uの電力計測部30Uを認証する。データの流れが認証の方向と逆向きである事に注意する(図1UC参照)。本発明の半導体メモリチップは、図1UBのトラスト・チェインを構築する目的に利用可能である。
【0069】
半導体メモリチップ10Uは、図1UBのようにMDMS40U(読出し装置)が半導体メモリチップ10Uを認証し、かつ、半導体メモリチップ10Uが電力計測部30U(書き込み装置)を認証する。データの流れは図1UCに示すように、認証の方向と逆向きである事に注意する。つまり、認証された電力計測部30U(書き込み装置)は認証した半導体メモリチップ10Uにデータを書き込む。MDMS40U(読み出し装置)は半導体メモリチップ10Uに記憶されたデータを読み出す。このように、本実施の形態の半導体メモリチップ10Uは、図1UBのトラスト・チェインを構築する目的とする。
【0070】
図1UBのメーター1Uを含むシステムにおいて、トラストチェーンを構成する為には、上記他の実施形態の書き込み認証領域の他に、読出し認証領域を構成する必要がある。読出し認証領域とは、半導体メモリチップ10U上のメモリ領域であって、半導体メモリチップ10UがMDMS(読出し装置)40Uから認証を受けた時に限ってデータを読み出す事ができるメモリ領域の事である。即ち、当該領域から読み出されたデータは、正統な半導体メモリチップ10Uが格納していたデータである。図1Vにシステムの一例を示す。
【0071】
図1Vのシステムは、半導体メモリチップ1V、MDMS2V、メーター4Vを有する。半導体メモリチップ1Vは、メモリ10V、暗号鍵共有部11V、送出制御部12V、ECC格納部13V、暗号鍵共有部15V、データ変換部16Vを有する。メモリ10Vは、ECC格納部13Vと、読み出し認証領域112Vと、書き込み認証領域113Vと、共通領域114Vと、一般領域115Vとを備えている。メモリ10Vは、読み出し認証領域112V、書き込み認証領域113Vを有する。読み出し認証領域112Vと書き込み認証領域113Vに共通領域114Vを設ける。そして、当該共通領域114Vに、データ利用に不可欠な情報を記録する。読み出し認証領域112Vおよび書き込み認証領域113Vのそれぞれに、共通領域114V以外の領域が含まれる例が示されているが、少なくとも共通領域114Vが存在すれば、各領域の構成は任意である。例えば、読み出し認証領域112Vと書き込み認証領域113Vとが一致(すなわち読み出し認証領域112Vと書き込み認証領域113Vとがいずれかも共通領域114Vと一致)するように構成してもよい。
【0072】
書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置のみが正しいデータを記録する事ができるメモリ領域である。或いは、書き込み認証領域とは、予め定められたメモリ領域であって、当該半導体メモリチップから認証された書き込み装置が書き込んだデータのみが正しく読み出し得るようなメモリ領域である。
【0073】
暗号鍵共有部11Vは、MDMS2Vが送出したMKB1を受け付ける。MKB1に基づいてMKB処理を行う。MKB処理により生成された共有鍵(メディア鍵KM)を送出制御部12Vに送る。具体的には、正しいメディア鍵KMが得られた場合、暗号鍵共有部は当該メディア鍵KMを送出制御部22Vに送る。
【0074】
更に詳細には、暗号鍵共有部11Vは、MKB読み取り部11−1V、MKB処理部11−2Vを有する。MKB読み取り部11−1Vは、MDMSからMKB1を受け取り、MKB処理部11−2Vに送る。MKB処理部11−2Vは、MKB1とデバイス鍵KDから共有鍵(メディア鍵KM)を生成し、送出制御部12Vに送る。前記デバイス鍵KDがリボーク(無効化)されていない場合、このMKB処理によりメディア鍵KMが得られる。一方、前記デバイス鍵KDが前記MKB1により無効化されている場合、メディア鍵KMは得られず、暗号鍵共有部11Vはエラーを通知して処理を停止する。送出制御部12Vは、共有鍵(メディア鍵KM)をMDMS2Vの読出制御部22Vに送付する。更に詳細には、送出制御部12Vは、暗号化部12−1V、乱数発生部12−2V、データ送出部12−3Vを有する。暗号化部12−1Vは、メディア鍵KMを受け取る。暗号化部12−1Vは、読出し認証領域14Vからデータ(例えば電力測定値)を読出し、乱数発生部12−2Vから乱数Rを受け取る。暗号化部12−1Vは、データ(例えば電力測定値)と乱数Rとを連結し、メディア鍵KMで暗号化する。暗号化部12−1Vは、暗号化したデータ(例えば電力測定値)を、データ送出部12−3Vに送る。乱数発生部12−2Vは、乱数Rを発生する。データ送出部12−3Vは、ECC格納部13Vからデータ(例えば電力測定値)に対応するECCを読出し、暗号化したデータ(例えば電力測定値)とともにMDMSに送出する。
【0075】
MDMS2Vは、暗号鍵共有部21V、読出制御部22Vを有する。暗号鍵共有部21Vは、共有鍵(メディア鍵KM)を有する。読出制御部22Vは共有鍵(メディア鍵KM)を用いて暗号化したデータ(例えば電力測定値)を復号する。更に詳細には、読出制御部22Vは、データ受信部22−1V、復号部22−2V、エラー修復部22−3Vを有する。データ受信部22−1VはECCをエラー修復部22−3Vに送る。データ受信部22−1Vは暗号化された電力測定値を復号部22−2Vに送る。復号部22−2Vは、暗号鍵共有部21Vからメディア鍵KMを読み出し、当該メディア鍵KMを用いて暗号化された電力測定値を復号する。復号部22−2Vは、復号結果から乱数を捨てて、電力測定値をエラー修復部22−3Vに送る。エラー修復部22−3Vは、ECCを用いて電力測定値のエラーチェックを行う。エラーが無いか、又は、修復可能であれば、エラー修復部22−3Vは電力測定値を出力する。さもなければ、エラーを通知して停止する。ECC格納部13Vは、ECCを格納する。
【0076】
図1XAは、半導体メモリチップとメーターの暗号鍵共有部(15V、41V)の構成例を示す。暗号鍵共有部15Vは、共有鍵(メディア鍵KM)を有し、データ変換部16Vに共有鍵(メディア鍵KM)を送る。暗号鍵共有部41Vは、MKB読み取り部41−1V、MKB処理部41−2Vを有する。暗号鍵共有部41Vは、半導体メモリチップ16VからMKB2(MKBデータ)を受け付け、MKB2(MKBデータ)に基づいて共有鍵(メディア鍵KM)を生成する。生成した共有鍵(メディア鍵KM)をデータ送信部42Vへ送信する。詳細には、MKB読み取り部41−1Vは、半導体メモリチップ16VからMKB2を読み取る。読み取ったMKB2をMKB処理部41−2Vに送る。MKB処理部41−2Vは、MKB2とデバイス鍵KDを用いて共有鍵(メディア鍵)KMを生成する。生成した共有鍵(メディア鍵KM)をデータ送信部42Vを送信する。
【0077】
図1XBは、半導体メモリチップのデータ変換部16Vとメーターのデータ送信部42Vの構成例を示す図である。データ送信部42Vは、暗号鍵共有部41Vから受け付けた共有鍵(メディア鍵KM)を用いて計測部43Vの計測値を暗号化する。暗号化した計測値をデータ変換部16Vに送信する。更に、詳細には、データ送信部42Vは、ECC生成部42−1V、暗号化部42−2V、データ送出部42−3Vを有する。ECC生成部42−1Vは、計測部43Vの計測値を読み出し、ECCを生成する。生成したECCを暗号化部42−2Vに送る。暗号化部42−2Vは、計測値とECC生成部42−1Vで生成されたECCを暗号化して、データ送出部に送る。データ送出部42−3Vは、暗号化された計測値とECCをデータ変換部16Vに送信する。
【0078】
データ変換部16Vは、受け付けた暗号化された計測値とECCを復号する。復号された計測値はメモリ10Vの書き込み領域113Vに書き込む。復号されたECCはECC格納部13Vに書き込む。更に詳細には、データ変換部16Vは、データ受信部16−1V、復号部16−2V、書込部16−3Vを有する。データ受信部16−1Vは、データ送出部42−3Vから暗号化された計測値とECCを受信する。暗号化された計測値とECCを復号部16−2Vに送る。復号部16−2Vは、暗号鍵共有部15Vから共有鍵(メディア鍵KM)を受け付ける。暗号化された計測値とECCを受け付けた共有鍵(メディア鍵KM)を用いて復号する。復号された計測値とECCを書込部16−3Vに送る。書込部16−3Vは、復号された計測値はメモリ10Vの書き込み領域113Vに書き込む。復号されたECCはECC格納部13Vに書き込む。
【0079】
図1Wに半導体メモリチップ1Vの暗号鍵共有部11VとMDMS2Vの暗号鍵共有部21Vの構成を示す。また、図1Xに送出制御部12Vと読出制御部22Vの構成を示す。電力計測値は読出し認証領域に記録されている。これをMDMSは以下の手順で読み出す。その手順を図1YA、1YBを用いて説明する。MDMSが半導体メモリチップの暗号鍵共有部11VにMKB1を送る(ステップS5000001)。暗号鍵共有部11VのMKB処理部11−2Vが暗号鍵共有部が格納するデバイス鍵KDを用いてMKBを処理する。前記デバイス鍵KDがリボーク(無効化)されていない場合、このMKB処理によりメディア鍵KMが得られる。一方、前記デバイス鍵KDが前記MKB1により無効化されている場合、メディア鍵KMは得られず、暗号鍵共有部11Vはエラーを通知して処理を停止する(ステップS5000002)。正しいメディア鍵KMが得られた場合、暗号鍵共有部は当該メディア鍵KMを送出制御部22Vに送る(ステップS5000003)。暗号化部12−1Vがメディア鍵KMを受け取る。暗号化部12−1Vは、読出し認証領域14Vから電力測定値を読出し、乱数発生部12−2Vから乱数Rを受け取る。暗号化部12−1Vは、電力測定値と乱数Rとを連結し、メディア鍵KMで暗号化する(ステップS5000004)。暗号化部12−1Vは、暗号化した電力測定値を、データ送出部12−3Vに送る。データ送出部12−3Vは、ECC格納部13Vから電力測定値に対応するECCを読出し、暗号化した電力測定値とともにMDMSに送出する(ステップS5000005)。暗号化された電力測定値とECCは、MDMSのデータ受信部22−1Vに入力される(ステップS5000006)。データ受信部22−1VはECCをエラー修復部22−3Vに送る。また、データ受信部22−1Vは暗号化された電力測定値を復号部22−2Vに送る(ステップS5000007)。復号部22−2Vは、暗号鍵共有部21Vからメディア鍵KMを読み出し(ステップS5000008)、当該メディア鍵KMを用いて暗号化された電力測定値を復号する(ステップS5000009)。復号部22−2Vは、復号結果から乱数を捨てて、電力測定値をエラー修復部22−3Vに送る(ステップS5000010)。エラー修復部22−3Vは、ECCを用いて電力測定値のエラーチェックを行う。エラーが無いか、又は、修復可能であれば、エラー修復部22−3Vは電力測定値を出力する(ステップS5000011)。さもなければ、エラーを通知して停止する(ステップS5000012)。
【0080】
特許請求の範囲に記載の「第1領域」は、書込み認証領域(11−3または11−3Eまたは113Mまたは14Tまたは113V)などが対応する。「第1鍵情報」は、MKB2などが対応する。「第1の暗号鍵生成部」は、暗号鍵共有部(41Mまたは26Tまたは41V)などが対応する。「第1鍵」は、暗号鍵共有部(41Mまたは26Tまたは41V)などが生成する共有鍵が対応する。「第2鍵」は、暗号鍵共有部(41Mまたは26Tまたは41V)と対応する暗号鍵共有部(13Mまたは17Tまたは15V)などが有する共有鍵が対応する。「第2領域」は、書き込みの領域と読み出しの領域が共通する領域(11−4または11−4Eまたは114Mまたは16Tまたは114V)などが対応する。「第2鍵情報」は、MKB12−2EまたはMKB1などが対応する。「第2の暗号鍵生成部」は、暗号鍵共有部(51Eまたは21Mまたは11V)などが対応する。「第3鍵」は、暗号鍵共有部(51Eまたは21Mまたは11V)などが生成するKMが対応する。「第4鍵」は、暗号鍵共有部(51Eまたは21Mまたは11V)と対応する暗号鍵共有部(12Eまたは11Mまたは21V)などが有するKMが対応する。
【0081】
本実施の形態の発明は、悪意のある書き込み装置からのデータ書き込みを防止することができる。
【0082】
(第2の実施の形態)
第2の実施の形態にかかるメモリチップ(半導体メモリチップ)は、半導体メモリチップにセキュリティ機能を持たせ、半導体メモリチップ自体をトラスト・チェインの中に組み込む。これにより、半導体メモリチップを不正なコントローラーと組み合わせて使用することを防止する。半導体メモリチップは高度な部品であり、不正なIDを有するコントローラーのように、容易に製造・販売することができない。
【0083】
ここで、トラスト・チェインについて図2Aを用いて説明する。図2Aは、半導体メモリチップ100をトラスト・チェインに組み込んだシステムの一例を示す図である。図2A中の矢印の方向は認証の方向を示す。即ち、半導体メモリチップ100がコントローラー200を認証し、コントローラー200が書き込み装置300を認証し、書き込み装置300が半導体メモリチップ100を認証する。なお、破線はオプションである。書き込み装置300がトラスト・チェインの出発点であり、半導体メモリチップ100を経由してコントローラー200を認証することが図2Aのトラスト・チェインを構築する目的である。書き込み装置300と半導体メモリチップ100との間のデータの流れは常にコントローラー200を介して行われるため、書き込み装置300による半導体メモリチップ100の認証は間接的なものになる。
【0084】
本実施の形態では、半導体メモリチップ100をトラスト・チェインに組み込むために、半導体メモリチップ100自体にセキュリティ機能を持たせる。具体的には、半導体メモリチップ100のメモリに特殊領域を構成する。特殊領域は、読み出し特殊領域および書き込み特殊領域を含む。読み出し特殊領域とは、メモリ内の記憶領域(メモリ領域)のうち、半導体メモリチップ100により認証されたコントローラー200のみが、格納された値を正しく読み出すことができる予め定められたメモリ領域である。書き込み特殊領域とは、メモリ領域のうち、データ書き込みの際、データ変換部(後述)による復号を受けたデータを書き込む予め定められたメモリ領域である。
【0085】
また、本実施の形態では、半導体メモリチップ100をトラスト・チェインに組み込むために、読み出し特殊領域と書き込み特殊領域に共通領域を設ける。そして、当該共通領域に、データ利用に不可欠な情報を記録する。共通領域にデータ利用に不可欠な情報が正しく記録できることは、即ち、半導体メモリチップ100が書き込み装置300によって認証されたことに他ならない。そして、共通領域に記録されているデータ利用に不可欠な情報が、コントローラー200によって正しく読み出されることは、即ち、当該コントローラー200が半導体メモリチップ100によって認証されていることに他ならない。かくして、図2Aのトラスト・チェインが完成する。
【0086】
図2Bは、第2の実施の形態の半導体メモリチップ100とコントローラー200の構成の一例を示すブロック図である。まず、半導体メモリチップ100の機能の概要について説明する。図2Bに示すように、半導体メモリチップ100は、メモリ110と、暗号鍵共有部120と、送出制御部130と、データ変換部140と、を備えている。
【0087】
メモリ110は、各種データを記憶する記憶部である。メモリ110は、例えば、NAND型フラッシュメモリなどにより構成できる。なお、メモリ110はこれに限られず、他の型式のフラッシュメモリなどを含む、半導体素子によって構成される任意の半導体メモリを適用することができる。
【0088】
メモリ110は、符号記憶部111と、読み出し特殊領域112と、書き込み特殊領域113と、共通領域114と、一般領域115とを備えている。
【0089】
符号記憶部111は、書き込み装置300から書き込みが要求されたデータのエラー訂正符号(ECC:エラーコレクションコード)を記憶する。なお、符号記憶部111は、メモリ110の外部にメモリ110と独立の記憶部として備えてもよい。
【0090】
図2Bでは、読み出し特殊領域112および書き込み特殊領域113のそれぞれに、共通領域114以外の領域が含まれる例が示されているが、少なくとも共通領域114が存在すれば、各領域の構成は任意である。例えば、読み出し特殊領域112と書き込み特殊領域113とが一致(すなわち読み出し特殊領域112と書き込み特殊領域113とがいずれかも共通領域114と一致)するように構成してもよい。
【0091】
一般領域115とは、送出制御部130およびデータ変換部140を介さずに、コントローラー200から直接書き込みおよび読み取りが可能な領域を表す。
【0092】
暗号鍵共有部120は、コントローラー200との間で共有する暗号鍵を保持または生成する。送出制御部130は、メモリ110から読み出したデータをコントローラー200に送出する処理を制御する。データ変換部140は、コントローラー200を介して書き込み装置300から書き込みが要求されたデータを変換した変換データを生成する。暗号鍵共有部120、送出制御部130、およびデータ変換部140は、メモリ110と同一のダイ上に構成される。これにより、半導体メモリチップ100内にセキュリティ機能を持たせ、メモリカードの偽造等によるデータの不正利用を防止することができる。暗号鍵共有部120、送出制御部130、およびデータ変換部140の機能の詳細については後述する。
【0093】
次に、コントローラー200の機能の概要について説明する。コントローラー200は、暗号鍵共有部210と、読出制御部220と、書込制御部230と、一般領域読出部240と、一般領域書込部250と、を備えている。
【0094】
暗号鍵共有部210は、半導体メモリチップ100との間で共有する暗号鍵を保持または生成する。読出制御部220は、読み出し装置および再生装置などの外部装置(図示せず)からの要求に応じて、半導体メモリチップ100の共通領域114からデータを読み出す処理を制御する。書込制御部230は、書き込み装置300などの外部装置からの要求に応じて、半導体メモリチップ100の共通領域114にデータを書き込む処理を制御する。
【0095】
一般領域読出部240は、一般領域115からのデータの読み出しを制御する。すなわち、一般領域115からデータを読み出す場合、読み出し装置は、コントローラー200の一般領域読出部240に対して、読み出し対象となるページの指定を入力する。
【0096】
一般領域読出部240は、指定されたページのデータを読み出すと共に、符号記憶部111から指定されたページに対応するECCを読み出す。また、一般領域読出部240は、ECCを用いて読み出したページのエラーをチェックする。エラーが無ければ、一般領域読出部240は読み出したページのデータを出力する。エラーが存在して修復可能である場合は、一般領域読出部240は、読み出したページのデータを修復して出力する。それ以外の場合は、一般領域読出部240はエラーコードを出力する。
【0097】
一般領域書込部250は、一般領域115へのデータ書き込みを制御する。すなわち、一般領域115へデータを書き込む場合、書き込み装置300は、コントローラー200の一般領域書込部250に対してデータを入力する。この際、書き込み装置300は、書き込み先のページ(メモリ内の領域)の指定も一般領域書込部250に入力する。
【0098】
一般領域書込部250は、入力されたデータのECCを生成し、一般領域115のうち、指定されたページにデータを書き込むと共に、生成したECCを指定されたページに対するECCとして符号記憶部111に記録する。
【0099】
次に、半導体メモリチップ100の暗号鍵共有部120とコントローラー200の暗号鍵共有部210の構成例について図3Aを用いて説明する。図3Aに示すように、暗号鍵共有部120は、メディア鍵を表すKM121(以下、メディア鍵KMという)と、MKB(Media Key Block)122とを保持している。MKB122については、例えば非特許文献1に記載されている。また、暗号鍵共有部210は、デバイス鍵を表すKD212を保持している。また、暗号鍵共有部210は、MKB読み取り部211と、MKB処理部213と、を備えている。
【0100】
MKB読み取り部211は、半導体メモリチップ100の暗号鍵共有部120からMKB122を読み出す。MKB処理部213は、読み出されたMKBをデバイス鍵KD212を用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。
【0101】
なお、図3Aの例では、半導体メモリチップ100の暗号鍵共有部120がコントローラー200の暗号鍵共有部210を認証している。
【0102】
次に、図3Aのように構成された暗号鍵共有部120と暗号鍵共有部210との間で暗号鍵を共有する暗号鍵共有処理について図4Aを用いて説明する。図4Aは、第2の実施の形態における暗号鍵共有処理の全体の流れを示すフローチャートである。
【0103】
コントローラー200が半導体メモリチップ100の読み出し特殊領域112からデータを読み出す際、まず、コントローラー200の暗号鍵共有部210のMKB読み取り部211が、半導体メモリチップ100のMKB122を読み出す(ステップS101)。MKB122は、コントローラー200から常に自由に読み出しが可能である。MKB読み取り部211は、読み出したMKB122をMKB処理部213に送る(ステップS102)。
【0104】
MKB処理部213は、コントローラー200の暗号鍵共有部210が保持しているデバイス鍵KD212を読み込み、MKB処理を行う(ステップS103)。次に、MKB処理部213は、MKB処理によりメディア鍵KMが得られたか否かを判断する(ステップS104)。デバイス鍵KD212がMKB122によって無効化されている場合、MKB処理によって正しくメディア鍵KMを得ることができない。この場合、MKB処理部213は、メディア鍵KMが得られなかったと判断し(ステップS104:No)、コントローラー200にエラーを通知する(ステップS105)。コントローラー200は、エラーの通知を受けると、読み出し動作を中止する。
【0105】
一方、デバイス鍵KD212がMKB122によって無効化されていない場合、MKB処理によって正しいメディア鍵KMが得られる。この場合、MKB処理部213は、メディア鍵KMが得られたと判断し(ステップS104:Yes)、得られたメディア鍵KMをコントローラー200の読出制御部220に送る(ステップS106)。半導体メモリチップ100側では、暗号鍵共有部120が格納しているメディア鍵KMが送出制御部130に送られる(ステップS107)。
【0106】
次に、半導体メモリチップ100の送出制御部130とコントローラー200の読出制御部220の構成例について図5を用いて説明する。図5に示すように、送出制御部130は、乱数発生部131と、読出部132と、暗号化部133と、送出部134とを備えている。
【0107】
乱数発生部131は、暗号化部133の要求に応じて乱数を発生する。読出部132は、指定された読み出し対象ページのデータと、当該データのECCとをメモリ110から読み出す。暗号化部133は、読み出されたデータをメディア鍵KMを用いて暗号化する。送出部134は、暗号化されたデータ(暗号化データ)とECCとをコントローラー200のデータ受信部221に送出する。
【0108】
また、図5に示すように、読出制御部220は、データ受信部221と、復号部222と、エラー修復部223とを備えている。データ受信部221は、半導体メモリチップ100の送出部134から暗号化データとECCとを受信する。復号部222は、受信された暗号化データをメディア鍵KMを用いて復号する。エラー修復部223は、受信されたECCを用いて、復号されたデータのエラー有無のチェックおよびエラー修復を行う。
【0109】
次に、図5のように構成された送出制御部130と読出制御部220との間で読み出したデータを送受信するデータ読出処理について図6を用いて説明する。図6は、第2の実施の形態におけるデータ読出処理の全体の流れを示すフローチャートである。
【0110】
読出制御部220は、暗号鍵共有部210からメディア鍵KMを受け取ると(ステップS201)、復号部222に受け取ったメディア鍵KMを入力する(ステップS202)。次に、読出制御部220は、送出制御部130にデータ送出要求を送る。この際、読み出し対象ページの指定も併せて送られる(ステップS203)。送出制御部130の読出部132は、指定されたページのデータを読み出し、暗号化部133に入力する(ステップS204)。また、読出部132は、読み出し対象ページに対応するECCを符号記憶部111から読み出し、送出部134に入力する(ステップS205)。
【0111】
次に、暗号化部133が、乱数発生部131に乱数発生要求を送る(ステップS206)。乱数発生部131は、乱数を発生して暗号化部133に送る(ステップS207)。暗号化部133は、暗号鍵共有部120からメディア鍵KMを取得する(ステップS208)。暗号化部133は、指定されたページのデータと乱数とを連結し、連結して得られたデータをメディア鍵KMで暗号化した暗号化データD’を生成する(ステップS209)。そして、暗号化部133は、暗号化データD’を送出部134に送る(ステップS210)。送出部134は、入力された暗号化データD’と入力されたECCとをコントローラー200のデータ受信部221に送出する(ステップS211)。
【0112】
なお、読み出し対象ページの中で重要なデータはページの一部かもしれない。このような場合、暗号化部133が、重要なデータが含まれるページの一部のみを暗号化するように構成してもよい。例えば、ページの先頭48バイトのみが重要なデータである場合、暗号化部133がページの先頭48バイトと16バイトの乱数を連結した64バイトのみ暗号化するようにしても良い。これにより、暗号化による処理負荷の増加を最小限に抑制することができる。
【0113】
次に、読出制御部220のデータ受信部221は、暗号化データとECCとを受信する(ステップS212)。そして、データ受信部221は、受信したECCをエラー修復部223に送る(ステップS213)。エラー修復部223は、受け取ったECCを保持する。また、データ受信部221は、受信した暗号化データD’を復号部222に送る(ステップS214)。復号部222は、コントローラー200の暗号鍵共有部210から受け取ったメディア鍵KMを用いて、暗号化データD’を復号する(ステップS215)。
【0114】
この復号の結果、平文の読み出しデータDと乱数とが得られる。復号部222は、予め定められたフォーマットにしたがい、復号したデータから、読み出しデータDと乱数とを区別することができる。例えば、暗号化部133が64バイトのみを暗号化する上述の例では、復号したデータのうち、先頭の48バイトが読み出しデータDであり、続く16バイトが乱数である。
【0115】
復号部222は、読み出しデータDのみをエラー修復部223に転送する(ステップS216)。エラー修復部223は、保持しているECCを用いて読み出しデータDのエラーをチェックする(ステップS217)。そして、エラー修復部223は、エラーがあるか否かを判断する(ステップS218)。エラーが無い場合(ステップS218:No)、コントローラー200は、読み出しデータDの読み出しを要求した外部装置に、読み出しデータDを出力する(ステップS219)。
【0116】
エラーがある場合(ステップS218:Yes)、エラー修復部223は、さらにエラーが修復可能か否かを判断する(ステップS220)。エラーが修復可能な場合(ステップS220:Yes)、エラー修復部223は、保持しているECCを用いて読み出しデータDのエラーを修復する(ステップS221)。そして、コントローラー200は、修復後の読み出しデータDを出力する(ステップS219)。
【0117】
エラーが修復不可能な場合(ステップS220:No)、エラー修復部223は、コントローラー200にエラーを通知する(ステップS222)。この場合、コントローラー200は、例えばエラーが発生したことを読み出しを要求した外部装置に送信する。
【0118】
図4Aで説明した処理により、有効なデバイス鍵KD212を有する正規のコントローラー200のみが、半導体メモリチップ100と共通の暗号鍵であるメディア鍵KMを得ることができる。また、図6で説明した処理により、正規のコントローラー200のみが、共通のメディア鍵KMにより正常に復号されたデータを得ることができる。即ち、半導体メモリチップ100によるコントローラー200の認証が実現できる。
【0119】
このように、半導体メモリチップ100の暗号鍵共有部120と送出制御部130との組み合わせが、コントローラー200を認証する認証手段とみなすことができる。この認証手段により読み出されるデータを記憶する半導体メモリチップ100上のメモリ110内の領域が、読み出し特殊領域に相当する。
【0120】
なお、暗号鍵共有部120および暗号鍵共有部210の構成は図3Aに示すものに限られるものではない。半導体メモリチップ100とコントローラー200との間で暗号鍵を共有できるものであればあらゆる構成を適用できる。
【0121】
上述のように、半導体メモリチップがコントローラーを認証する為にMKBを用いる事ができる。このMKBは通常、半導体メモリチップ製造時に半導体メモリチップの書き込み特殊領域または一般領域に記録される。本発明の半導体メモリチップとコントローラーとを具備する機器がネットワーク経由で書き込み装置に接続される事がある。或いは、本発明の半導体メモリチップとコントローラーとを用いて構成されたメモリカードが店舗の書き込み装置に接続される事がある。本発明の半導体メモリチップがコントローラーを介して書き込み装置に接続される、このような機会は、半導体メモリチップ上のMKBを更新する良い機会である。MKBには、コントローラーが保持するデバイス鍵を無効化する為の情報が含まれている。従って、MKBは最新の状態に保つ事が望ましい。書き込み装置による更新の方法は単純である。例えば、書き込み装置がコントローラーを介して書き込み認証領域(後述)または一般領域のMKBを上書きすれば良い。
【0122】
MKBの更新頻度を高める為には、半導体メモリチップが内蔵するメディア鍵を半導体メモリチップ自身で更新できるような仕組みを持たせておく事が望ましい。これを、図3Bに図示する。これは暗号鍵共有部が保持するメディア鍵KMを更新する仕組みである。新しいMKBが書き込み認証領域200202の予め定められたアドレスに書き込まれる(ステップS200201)。これをトリガーとして、暗号鍵共有部200201が当該MKBを読み込み、MKB処理部2002012に送る。MKB処理部2002012は暗号鍵共有部が保持するデバイス鍵KDを読み込み、MKB処理を行う(ステップS200202)。デバイス鍵KDが前記MKBによってリボークされていない場合、メディア鍵KMが得られる。暗号鍵共有部は当該メディア鍵KMを格納・保持する(ステップS200203)。デバイス鍵KDが前記MKBによってリボークされていた場合、暗号鍵共有部はエラーを通知して停止する(ステップS200204)。上記の動作については図4Bを参照の事。
【0123】
図7は、暗号鍵共有部120の変形例(暗号鍵共有部120−2)と暗号鍵共有部210の変形例(暗号鍵共有部210−2)を示すブロック図である。図7に示すように、暗号鍵共有部120−2は、メディア鍵KMおよびMKB122を保持する他に、乱数生成部123と、乱数送信部124と、一時鍵生成部125とを備えている。また、暗号鍵共有部210−2は、デバイス鍵KD212、MKB読み取り部211、およびMKB処理部213の他に、乱数受信部214と、一時鍵生成部215とを備えている。
【0124】
乱数生成部123は、乱数送信部124からの要求に応じて乱数を発生する。乱数送信部124は、発生された乱数を、コントローラー200の乱数受信部214、および、半導体メモリチップ100の一時鍵生成部125に送信する。一時鍵生成部125は、メディア鍵KMおよび受信した乱数を用いて一時鍵Kを生成する。例えば、一時鍵生成部125は、AES−Gなどの一方向性関数を用いて、メディア鍵KMと乱数とから一時鍵Kを生成する。
【0125】
乱数受信部214は、乱数送信部124から乱数を受信する。一時鍵生成部215は、半導体メモリチップ100の一時鍵生成部125と同様の手法により、MKB処理部213から受け取ったメディア鍵KMと、乱数受信部214により受信された乱数とから一時鍵Kを生成する。
【0126】
図7の例でも、半導体メモリチップ100の暗号鍵共有部120−2がコントローラー200の暗号鍵共有部210−2を認証している。
【0127】
次に、図7のように構成された暗号鍵共有部120−2と暗号鍵共有部210−2との間で暗号鍵を共有する暗号鍵共有処理について図8を用いて説明する。図8は、第2の実施の形態の変形例における暗号鍵共有処理の全体の流れを示すフローチャートである。
【0128】
ステップS301〜ステップS305は、図4AのステップS101〜ステップS105と同様の処理なので説明を省略する。
【0129】
ステップS304で、正しいメディア鍵KMが得られたと判断された場合(ステップS304:Yes)、MKB処理部213は、得られたメディア鍵KMを一時鍵生成部215に送る(ステップS306)。次に、コントローラー200の暗号鍵共有部210の乱数受信部214が、半導体メモリチップ100の乱数送信部124に対して乱数送信要求を送る(ステップS307)。乱数送信部124は、乱数生成部123に乱数発生要求を送る(ステップS308)。乱数生成部123は、乱数Rを生成する(ステップS309)。乱数送信部124は、生成された乱数Rを受け取り、乱数Rをコントローラー200の乱数受信部214に送信する(ステップS310)。コントローラー200の乱数受信部214は、受信した乱数Rをコントローラー200の一時鍵生成部215に転送する(ステップS311)。一時鍵生成部215は、MKB処理部213から受け取ったメディア鍵KMと乱数Rとから一時鍵Kを生成する(ステップS312)。また、一時鍵生成部215は、生成した一時鍵Kをコントローラー200の読出制御部220に送る(ステップS313)。
【0130】
一方、乱数送信部124は、半導体メモリチップ100の一時鍵生成部125にも乱数Rを送る(ステップS314)。乱数Rを受信した一時鍵生成部125は、半導体メモリチップ100の暗号鍵共有部120が予め格納しているメディア鍵KMを読み取る(ステップS315)。そして、一時鍵生成部125は、メディア鍵KMと乱数Rと組み合わせて一時鍵Kを生成する(ステップS316)。また、一時鍵生成部125は、生成した一時鍵Kを半導体メモリチップ100の送出制御部130に送る(ステップS317)。
【0131】
コントローラー200のMKB処理が正しく行われ、正しいメディア鍵KMが生成されたならば、半導体メモリチップ100とコントローラー200とが、それぞれ独立に生成する一時鍵Kは同一になる。
【0132】
次に、図7のように構成された暗号鍵共有部120−2および暗号鍵共有部210−2に対応する送出制御部130の変形例(送出制御部130−2)と読出制御部220の変形例(読出制御部220−2)について図9を用いて説明する。図9に示すように、送出制御部130−2は、読出部132と、暗号化部133−2と、送出部134とを備えている。本変形例では、乱数発生部131が削除されたこと、および、暗号化部133−2の機能が、図5の送出制御部130と異なっている。暗号化部133−2は、主にメディア鍵KMの代わりに一時鍵Kを用いてデータを暗号化する点が、図5の暗号化部133と異なっている。
【0133】
また、図9に示すように、読出制御部220−2は、データ受信部221と、復号部222−2と、エラー修復部223とを備えている。本変形例では、復号部222−2の機能が、図5の読出制御部220と異なっている。復号部222−2は、主にメディア鍵KMの代わりに一時鍵Kを用いてデータを復号する点が、図5の復号部222と異なっている。
【0134】
次に、図9のように構成された送出制御部130−2と読出制御部220−2との間で読み出したデータを送受信するデータ読出処理について図10を用いて説明する。図10は、第2の実施の形態の変形例におけるデータ読出処理の全体の流れを示すフローチャートである。
【0135】
読出制御部220−2の復号部222−2が暗号鍵共有部210−2から一時鍵Kを受け取ると(ステップS401)、復号部222−2は受け取った一時鍵Kを保持する。また、データ受信部221が、半導体メモリチップ100の送出制御部130−2に対して、読み出し対象ページの指定と共にデータ送出要求を送る(ステップS402)。送出制御部130は、読出部132に読み出し対象ページの指定とデータ読み出し指示を送る(ステップS403)。読出部132は、メモリ110の読み出し対象ページからデータDを読み出す(ステップS404)。
【0136】
一方、暗号化部133−2は、暗号鍵共有部120−2から一時鍵Kを受け取る(ステップS405)。次に、暗号化部133−2は、一時鍵Kを用いてデータDを暗号化し、暗号化データD’=Enc(K,D)を生成する(ステップS406)。なお、Enc(K,D)とは、一時鍵Kを用いてデータDを暗号化することを意味する。暗号化部133−2は、生成した暗号化データD’を送出部134に送る(ステップS407)。
【0137】
読出部132は、データDのECCをメモリ110の符号記憶部111から読み出す(ステップS408)。送出部134は読み出されたECCを保持する。送出部134は、暗号化データD’と保持しているECCとを、読出制御部220−2のデータ受信部221に送る(ステップS409)。
【0138】
データ受信部221は、送出部134から暗号化データD’とECCとを受け取ると、暗号化データD’を復号部222−2に送り(ステップS410)、ECCをエラー修復部223に送る(ステップS411)。エラー修復部223は、受け取ったECCを保持する。復号部222−2は、暗号化データD’を受け取ると、保持している一時鍵Kを用いて暗号化データD’を復号し、データDを得る(ステップS412)。次に、復号部222−2は、復号したデータDをエラー修復部223に送る(ステップS413)。
【0139】
ステップS414〜ステップS419は、図6のステップS217〜ステップS222と同様の処理なので説明を省略する。
【0140】
次に、図7のように構成された暗号鍵共有部120−2および暗号鍵共有部210−2に対応する送出制御部130および読出制御部220の別の変形例(送出制御部130−3および読出制御部220−3)について図11Aを用いて説明する。図11Aに示すように、送出制御部130−3は、読出部132−3と、暗号化部133−3と、送出部134−3とを備えている。
【0141】
読出部132−3は、読み出したECCを送出部134−3ではなく、暗号化部133−3に送信する。暗号化部133−3は、データDとECCとを連結したデータを暗号化する。送出部134−3は、このようにして暗号化されたデータを読出制御部220−3に送出する。
【0142】
一方、図11Aに示すように、読出制御部220−3は、データ受信部221−3と、復号部222−3と、エラー修復部223−3とを備えている。
【0143】
データ受信部221−3は、データDとECCとを暗号化した暗号化データを受信し、受信した暗号化データを復号部222−3に送信する。復号部222−3は、暗号化データを復元してデータDとECCとを求め、エラー修復部223−3に送信する。エラー修復部223−3は、このようにして復号部222−3から受信したデータDとECCとを用いて、エラーのチェックおよびエラー修復を実行する。
【0144】
次に、図11Aのように構成された送出制御部130−3と読出制御部220−3との間で読み出したデータを送受信するデータ読出処理について図11Bを用いて説明する。図11Bは、第2の実施の形態の別の変形例におけるデータ読出処理の全体の流れを示すフローチャートである。
【0145】
読出制御部220の復号部222−3が暗号鍵共有部210−2から一時鍵Kを受け取ると(ステップS501)、復号部222−3は、受け取った一時鍵Kを保持する。また、データ受信部221−3は、半導体メモリチップ100の送出制御部130−3に、読み出し対象ページの指定と共にデータ送出要求を送る(ステップS502)。送出制御部130−3は、読出部132−3に読み出し指定ページとデータ読み出し指示とを送る(ステップS503)。読出部132−3は、メモリの指定された読み出し対象ページのデータDを読み出す(ステップS504)。また、読出部132−3は、読み出したデータDのECCをメモリ110の符号記憶部111から読み出す(ステップS505)。次に、暗号化部133−3が、暗号鍵共有部120−2から一時鍵Kを受け取る(ステップS506)。暗号化部133−3は、受け取った一時鍵Kを用いてデータDとECCとを連結(concatenate)したデータD||ECCを暗号化した暗号化データD’=Enc(K,D||ECC)を生成する(ステップS507)。そして、暗号化部133−3は、暗号化データD’を送出部134に送る(ステップS508)。送出部134は、暗号化データD’を読出制御部220のデータ受信部221に送る(ステップS509)。
【0146】
データ受信部221は、送出部134から暗号化データD’を受け取ると、当該暗号化データD’を復号部222−3に送る(ステップS510)。復号部222−3は、暗号化データD’を受け取ると、保持している一時鍵Kを用いて暗号化データD’を復号し、データDとECCとを得る(ステップS511)。復号部222−3は、データDとECCとをエラー修復部223−3に送る(ステップS512)。
【0147】
ステップS513〜ステップS518は、図6のステップS217〜ステップS222(図10のステップS414〜ステップS419)と同様の処理なので説明を省略する。
【0148】
図7の暗号鍵共有部120−2と、図9の送出制御部130−2または図11Aの送出制御部130−3のいずれか一方との組み合わせが、コントローラー200を認証する認証手段とみなすことができる。これらの認証手段により読み出されるデータを記憶する半導体メモリチップ100上のメモリ110内の領域が、読み出し特殊領域に相当する。
【0149】
公開鍵を用いて半導体メモリチップからコントローラーを認証する実施例を次に述べる。図12Aは本実施例の半導体メモリチップとコントローラーの構成を示すブロック図である。本実施例の半導体メモリチップとコントローラーの暗号鍵共有部の構成を、それぞれ図12Aと図12Bのブロック図に示す。半導体メモリチップ100Aの暗号鍵共有部120Aは、コントローラー200Aのバージョン情報を受け取るバージョン情報取得部1201Aを具備する。また、前記暗号鍵共有部120Aは、一つ以上の公開鍵を格納する公開鍵リスト格納部を具備する。本実施例では、コントローラー200Aが保持する秘密鍵にバージョン情報が対応している。即ち、コントローラー200Aのバージョン情報を知れば、当該コントローラー200Aが保持する秘密鍵に対応する公開鍵が定まる。半導体メモリチップ100Aの暗号鍵共有部120Aの乱数発生部は、転送するページのデータを暗号化する為の暗号鍵を生成する。コントローラー200Aの暗号鍵共有部210Aは、秘密鍵を格納する秘密鍵格納部2101Aと、前記秘密鍵に対応するバージョン情報を格納するバージョン情報格納部2102Aとを具備している。なお、バージョン情報は、例えば、数値や文字列である。
【0150】
図12Cに半導体メモリチップ100Aとコントローラー200Aの暗号鍵共有部(120A、210A)の動作を示す。コントローラー200Aに(読出し特殊領域の)読出し対象ページの指定が入力される(ステップS3000)。コントローラー200Aは当該コントローラーの暗号鍵共有部210Aのバージョン情報格納部2102Aに格納されているバージョン情報を半導体メモリチップ100Aに送る(ステップS3001)。半導体メモリチップ100Aの暗号鍵共有部120Aのバージョン情報取得部1201Aが、前記バージョン情報を受信する(ステップS3002)。前記バージョン情報格納部1201Aが受信したバージョン情報を公開鍵選択部1203Aに送る(ステップS3003)。公開鍵選択部1203Aは、バージョン情報に対応する公開鍵を検索する(ステップS3004)。バージョン情報に対応する公開鍵が見つからなかった場合、暗号鍵共有部120Aは動作を中止し以後の処理を行わない。さもなければ、公開鍵選択部1203Aは見つかった公開鍵KPを暗号化部1205Aに送る(S3006)。乱数発生部1204Aがデータ暗号鍵Kを発生し、Kを暗号化部1205Aに送る(ステップS3007)。暗号化部1205Aは公開鍵KPによってデータ暗号鍵Kを暗号化する。その結果をK’とする(ステップS3008)。即ち、K’= Enc( KP, K )である。暗号化部1205Aは、データ暗号鍵Kと暗号化データ暗号鍵K’とを、半導体メモリチップ100Aの送出制御部130Aに送る(ステップS3009)。
【0151】
図12Dは本実施例の半導体メモリチップ100Aの送出制御部130Aの構成を示すブロック図である。また、図12Eは本実施例のコントローラー200Aの読出制御部220Aの構成を示すブロック図である。図12Gおよび図12Hに本実施例の動作の一部を示す。これは、図12Cに示す動作の続きである。図12CのステップS3009で、半導体メモリチップ100Aの送出制御部130Aはデータ暗号鍵Kと暗号化データ暗号鍵K’とを受け取るが、送出制御部130Aの暗号化部1301Aが暗号鍵Kを受け取り(ステップS3010)、送出制御部130Aのデータ転送部1302Aが暗号化データ暗号鍵K’を受け取る(ステップS3011)。次いで、半導体メモリチップ100Aの送出制御部130Aは、コントローラー200Aの読出制御部220Aに読出し準備完了を通知する(ステップS3012)。それを受け、コントローラー200Aの読出制御部220Aは、半導体メモリチップ100Aの送出制御部130Aに対して、読出し対象ページの指定を送る(ステップS3013)。送出制御部130Aは、(メモリの読出し特殊領域に含まれる)読出し対象ページのデータDを読出し、暗号化部1301Aに入力する(ステップS3014)。暗号化部1301Aは前記データDをデータ暗号鍵Kで暗号化しEnc( K, D )を得て(ステップS3015)、当該暗号化データEnc( K, D )をデータ転送部1302Aに送る(ステップS3016)。データ転送部1302Aは、読出し対象ページのECCを符号記憶部から読出す(ステップS3017)。データ転送部1302Aは、暗号化データ暗号鍵K’と前記ECC、及び、暗号化データEnc( K, D )を、コントローラー200Aの読出制御部220Aに送る(ステップS3018)。
【0152】
データ転送部1302Aがコントローラーに送るデータの形式を図12Fに示す。暗号化データ暗号鍵は20バイトのサイズを持つ。データ暗号鍵そのものは16バイトであるが、本実施例では公開鍵暗号方式として160ビットの楕円曲線暗号を採用している為、暗号化データ暗号鍵のサイズは20バイトとなる。メモリの一ページの大きさは2Kバイト=2048バイトであり、一ページのデータに対するECCのサイズは3バイトである。図12Fでは、20バイトの暗号化データ暗号鍵、ECC、暗号化データの順にデータが並んでいる。
【0153】
次いで、図12Hに示すように、コントローラーの読出制御部のデータ転送部が前記データ形式の暗号化データ鍵K’とECC、2Kバイトの暗号化データを受信する(ステップS3019)。データ転送部は暗号鍵共有部の秘密鍵格納部から秘密鍵KSを読み出す(ステップS5U)。データ転送部は秘密鍵KSを用いて暗号化データ暗号鍵K’を復号。データ暗号鍵Kを得る(ステップS3021)。データ転送部は、データ暗号鍵KとECC、暗号化データEnc( K, D )を復号部に送る(ステップS3022)。復号部は、データ暗号鍵Kで暗号化データEnc( K, D )を復号しデータDを得る(ステップS3023)。復号部はデータDとECCとを読み出しデータとして出力する(ステップS3024)。利用装置が、必要に応じて、ECCを用いてデータDのエラー修正を行う。
【0154】
このように、読み出し特殊領域を用いてコントローラー200を認証する認証手段を備えることにより、メモリカードの偽造等によるデータの不正利用を防止することができる。
【0155】
なお、上述の実施例において、半導体メモリチップからコントローラーが認証されているが、再生装置などの利用装置を半導体メモリチップが認証するようにしても良い。その場合は、利用装置が半導体メモリチップからMKBを読み出して処理を行うなど、コントローラーと同様の動作を行い、半導体メモリチップの読み出し特殊領域からデータを読み出して利用する。利用装置が認証される場合の構成を図12Jのブロック図に示す。暗号鍵共有部と読出制御部が利用装置に含まれている事が、図2Bと異なる図12Jの特徴である。各部の動作は図2Bの場合と同様である。読み出し特殊領域からのデータ読み出し動作において、コントローラーは単にデータの中継のみを行う。図12Jのような構成により、図12Kに示すトラスト・チェインが構築される。書き込み装置が半導体メモリを認証し、かつ、半導体メモリが利用装置を認証する。
【0156】
次に、書き込み特殊領域113Bを用いて書き込み装置300Bによる半導体メモリチップ100Bの認証を実現する構成について以下に説明する。この構成によっても、メモリカードの偽造等によるデータの不正利用を防止することができる。また、読み出し特殊領域112B(共通領域)からの読み出し機能、および、書き込み特殊領域113B(共通領域)への書き込み機能の両方を備えるように構成すれば、上述のように半導体メモリチップ100Bをトラスト・チェインに組み込むことが可能となり、セキュリティ機能をさらに向上させることができる。
【0157】
図13は、コントローラー200に書き込み装置300が接続されて、半導体メモリチップ100の書き込み特殊領域113に書き込みを行う様子を示す図である。ただし、図13では、書き込み処理に関わる部分のみが図示されている。
【0158】
まず、書き込み装置300が、書き込みが要求されたデータ(書込データ)を暗号化した暗号化データ、書込先ページの指定、および書込データに対するECCをコントローラー200に送信する。コントローラー200の書込制御部230は、暗号化データとECCとを半導体メモリチップ100のデータ変換部140に送出する。データ変換部140は、暗号化データを変換(復号)し、得られた変換データ(書込データ)を書き込み特殊領域113に書き込むとともに、ECCを符号記憶部111に書き込む。
【0159】
次に、図13の書き込み装置300、コントローラー200の書込制御部230、および、半導体メモリチップ100のデータ変換部140の構成例について図14を用いて説明する。図14に示すように、書き込み装置300は、ECC生成部310と、鍵記憶部320と、暗号化部330と、データ送信部340とを備えている。
【0160】
ECC生成部310は、書き込むべきデータとして入力された書込データのECCを生成する。鍵記憶部320は、書込データの変換に用いるデータ変換鍵(第1鍵)を記憶する。本実施の形態では、鍵記憶部320は、公開鍵方式の公開鍵Kpをデータ変換鍵として記憶している。この公開鍵Kpは、半導体メモリチップ100の鍵記憶部141(後述)が記憶するデータ変換鍵(第2鍵)である秘密鍵Ksに対応する公開鍵である。
【0161】
なお、適用可能な暗号化方式は公開鍵方式に限られるものではない。また、以下では、書き込み装置300がデータ変換鍵(公開鍵Kp)を用いて書込データを暗号化し、半導体メモリチップ100が対応するデータ変換鍵(秘密鍵Ks)で書込データを復号してメモリ110に記憶する場合を例に説明する。書き込み装置300がデータ変換鍵(第1鍵)を用いてデータを変換し、半導体メモリチップ100が、第1鍵に対応するデータ変換鍵(第2鍵)を用いて変換後のデータを変換するものであれば、これ以外の変換方法を適用してもよい。例えば、書き込み装置300が第1鍵を用いて復号に相当する変換処理を実行し、半導体メモリチップ100が、第1鍵に対応する第2鍵を用いて暗号化に相当する変換処理を実行するように構成してもよい。
【0162】
暗号化部330は、公開鍵Kpを用いて書込データを暗号化する。また、暗号化部330は、公開鍵Kpを用いてECCを暗号化した符号(変換符号)を生成する。なお、以下では、暗号化された書込データを暗号化データといい、ECCを暗号化した変換符号を暗号化ECCという場合がある。データ送信部340は、暗号化データと、暗号化ECCと、書込先ページの指定とをコントローラー200の書込制御部230に送信する。
【0163】
次に、コントローラー200の書込制御部230の構成例について説明する。図14に示すように、書込制御部230は、データ転送部231を備えている。データ転送部231は、暗号化データと、暗号化ECCと、書込先ページ指定とを受信し、これらの情報を半導体メモリチップ100のデータ変換部140に送信する。
【0164】
次に、データ変換部140の構成例について説明する。図14に示すように、データ変換部140は、鍵記憶部141と、復号部142と、書込部143とを備えている。
【0165】
鍵記憶部141は、公開鍵方式の秘密鍵Ksを記憶する。復号部142は、鍵記憶部141の秘密鍵Ksを用いて暗号化データと暗号化ECCとを復号する。なお、暗号化データから復号された書込データが、変換データに相当する。書込部143は、復号された書込データをメモリ110上の書き込み特殊領域113の指定されたページに記録する。また、書込部143は、復号されたECCをメモリ110の符号記憶部111に格納する。
【0166】
次に、図14のように構成された書き込み装置300、書込制御部230、および、データ変換部140による書込データの書き込み処理について図15を用いて説明する。図15は、第2の実施の形態における書き込み処理の全体の流れを示すフローチャートである。
【0167】
書き込み装置300は、書込データ(データD)と書込先ページの指定とを入力する(ステップS601)。次に、ECC生成部310が、データDのECCを生成し、生成したECCとデータDとを暗号化部330に転送する(ステップS602)。暗号化部330は、鍵記憶部320から公開鍵Kpを取得する(ステップS603)。次に、暗号化部330は、公開鍵Kpによって、データDとECCとを暗号化し、暗号化データD’と暗号化ECCとを得る(ステップS604)。暗号化部330は、暗号化データD’と暗号化ECCとをデータ送信部340に送る(ステップS605)。データ送信部340は、暗号化データD’、書込先ページの指定、および、暗号化ECCをコントローラー200の書込制御部230に送信する(ステップS606)。
【0168】
書込制御部230のデータ転送部231は、暗号化データD’、書込先ページ指定、および、暗号化ECCを受信し、それらを半導体メモリチップ100のデータ変換部140に送信する(ステップS607)。
【0169】
データ変換部140が受信した暗号化データD’および暗号化ECCは、復号部142に入力される。復号部142は、鍵記憶部141から秘密鍵Ksを取得する(ステップS608)。次に、復号部142は、秘密鍵Ksを用いて暗号化データD’および暗号化ECCを復号し、データDおよびECCを得る(ステップS609)。次に、書込部143は、復号されたデータDを、書込先ページ指定によって指定されたメモリ110上のページに記録する。また、書込部143は、復号されたECCを、指定されたページに対応するECCとして、メモリ110の符号記憶部111に格納する(ステップS610)。
【0170】
なお、一般に公開鍵による暗号化および復号は大きな計算量を要する。ページのサイズは例えば約2KB程度であるが、実際に書き込むデータは暗号鍵などの小さなデータ(例えば16B程度)である。従って、特に半導体メモリチップ100での復号の負荷を避けるため、例えば、次のような工夫を行っても良い。すなわち、最小限のデータのみ暗号化および復号するように構成してもよい。図16は、このように構成した場合のデータの変化の様子を表す図である。
【0171】
まず、一例として、ページサイズを2048B、書込データのサイズを16B、ECCのサイズを3Bとする。ECC生成部310には、先頭の16Bの鍵データ+残り2032Bの0からなる1ページ分のデータを入力する(1601)。暗号化部330は、1ページ分のデータの17B目から3BのECCを記録した後、先頭20Bのみ暗号化を行う(1602)。復号部142は、先頭20Bのみ復号した後(1603)、1ページ分のデータの17B目から3BをECCとして符号記憶部111に格納する(1604)。次に、17B目から3Bを0で上書き後、メモリ110の書き込み特殊領域113に1ページ分のデータを記録する(1605)。
【0172】
書き込み特殊領域113へのデータ書き込みは、必ず半導体メモリチップ100のデータ変換部140を経由して行われる。本実施の形態では、書き込み装置300にデータDが入力された場合、データDとデータDに対するECCであるECC(D)は、書き込み装置300が保持する公開鍵Kpで暗号化される。そして、半導体メモリチップ100のデータ変換部140には、暗号化データD’=Enc(Kp,D)と暗号化ECC=Enc(Kp,ECC(D))とが入力される。
【0173】
書き込み特殊領域113にデータDが正しく記録され、かつ、符号記憶部111にECC(D)が正しく記録されるためには、半導体メモリチップ100が秘密鍵Ksを保持している必要がある。即ち、書き込み装置300が半導体メモリチップ100を認証している。上述のデータ変換部140経由で書き込まれるメモリ領域が書き込み特殊領域113に相当する。
【0174】
次に、図14のデータ変換部140、書込制御部230、および、書き込み装置300の変形例について図17Aを用いて説明する。図17Aは、本変形例にかかる書き込み装置300−2、書込制御部230−2、および、データ変換部140−2の構成の一例を示すブロック図である。
【0175】
図17Aに示すように、書き込み装置300−2は、ECC生成部310−2と、鍵記憶部320−2と、暗号化部330−2と、データ送信部340と、鍵選択部350と、を備えている。データ送信部340の機能は、図14と同様であるため、同一の符号を付し説明は省略する。
【0176】
ECC生成部310−2は、生成したECCを暗号化部330−2ではなく、データ送信部340に送信する点が、図14のECC生成部310と異なっている。
【0177】
鍵記憶部320−2は、対称鍵方式のデータ変換鍵である暗号鍵Kを記憶する。本変形例では、鍵記憶部320−2は、半導体メモリチップ100のバージョンごとに複数の暗号鍵Kを記憶する。図18は、鍵記憶部320−2に記憶されるデータのデータ構造の一例を示す図である。図18に示すように、鍵記憶部320−2は、半導体メモリチップ100のバージョンと、暗号鍵とを対応づけたデータを記憶している。
【0178】
図17Aに戻り、鍵選択部350は、半導体メモリチップ100のバージョンに適合する暗号鍵Kを鍵記憶部320−2から選択する。暗号化部330−2は、選択された暗号鍵Kを用いて書込データとECCとを暗号化する。
【0179】
次に、書込制御部230−2の構成例について説明する。図17Aに示すように、書込制御部230−2は、データ転送部231−2を備えている。データ転送部231−2は、鍵選択部350からの要求に応じて半導体メモリチップ100から読み出されたバージョン情報を転送する機能が追加された点が、図14のデータ転送部231と異なっている。
【0180】
次に、データ変換部140−2の構成例について説明する。図17Aに示すように、データ変換部140は、鍵記憶部141−2と、復号部142と、書込部143と、バージョン情報記憶部144とを備えている。データ変換部140、復号部142、および、書込部143の機能は、図14と同様であるため、同一の符号を付し説明は省略する。
【0181】
バージョン情報記憶部144は、半導体メモリチップ100のバージョン情報を記憶する。鍵記憶部141−2は、対称鍵方式の暗号鍵Kを記憶する。この暗号鍵Kは、半導体メモリチップ100のバージョン情報記憶部144が格納するバージョン情報に対応する暗号鍵である。
【0182】
次に、図17Aのように構成された書き込み装置300−2、書込制御部230−2、および、データ変換部140−2による書込データの書き込み処理について図19を用いて説明する。図19は、本変形例における書き込み処理の全体の流れを示すフローチャートである。
【0183】
書き込み装置300−2は、書込データ(データD)と書込先ページの指定とを入力する(ステップS701)。ECC生成部310−2は、データDのECCを生成し、生成したECCをデータ送信部340に転送する(ステップS702)。また、ECC生成部310−2は、データDを暗号化部330に転送する(ステップS703)。次に、暗号化部330−2が、鍵選択部350に暗号鍵取得要求を送る(ステップS704)。
【0184】
本実施の形態では、暗号鍵は半導体メモリチップ100のバージョンに対応している。バージョンが異なれば暗号鍵も異なる。書き込み装置300の鍵記憶部320−2は、半導体メモリチップ100の各バージョンに対応する暗号鍵を格納しているが、半導体メモリチップ100のバージョンが分からないと対応する暗号鍵が得られない。
【0185】
そこで、鍵選択部350は、暗号化部330−2から暗号鍵取得要求を受け付けると、コントローラー200にバージョン取得要求を送る(ステップS705)。コントローラー200は、半導体メモリチップ100のデータ変換部140のバージョン情報記憶部144から、半導体メモリチップ100のバージョン情報を読み出し、データ転送部231に入力する(ステップS706)。データ転送部231は、バージョン情報を書き込み装置300の鍵選択部350に送信する(ステップS707)。鍵選択部350は、受信したバージョン情報に対応する暗号鍵Kを鍵記憶部320−2から選択する(ステップS708)。そして、鍵選択部350は、選択した暗号鍵Kを暗号化部330−2に送信する(ステップS709)。
【0186】
暗号化部330−2は、送信された暗号鍵Kを用いて、書き込むべきデータ(データD)を暗号化し、暗号化データD’を得る(ステップS710)。暗号化部330−2は、暗号化データD’をデータ送信部340に送る(ステップS711)。データ送信部340は、暗号化データD’、書込先ページの指定、および、ECCを、コントローラー200の書込制御部230−2に送信する(ステップS712)。書込制御部230−2のデータ転送部231−2は、暗号化データD’、書込先ページ指定、およびECCを受信し(ステップS713)、それらを半導体メモリチップ100のデータ変換部140−2に送信する(ステップS714)。
【0187】
データ変換部140−2は、受信した暗号化データD’を復号部142に入力する(ステップS715)。復号部142は、鍵記憶部141−2から暗号鍵Kを取得する(ステップS716)。復号部142は、暗号鍵Kを用いて、暗号化データD’をデータDに復号する(ステップS717)。書込部143は、復号されたデータDを、書込先ページ指定によって指定されたメモリ110上のページに記録する(ステップS718)。また、書込部143は、受信されたECCを、指定されたページに対応するECCとして符号記憶部111に格納する(ステップS719)。
【0188】
図17Aのデータ変換部140−2を経由して記録されるメモリ領域へのデータ記録は、必ずデータ変換部140−2による変換を受ける。データ変換部140−2を経由してデータが記録される領域が書き込み特殊領域113に相当する。
【0189】
書き込み装置300にデータDが入力された場合、データDは半導体メモリチップ100のバージョンに対して選択された暗号鍵Kで暗号化される。そして、半導体メモリチップ100のデータ変換部140−2には、暗号化データD’=Enc(K,D)が入力される。書き込み特殊領域113にデータDが正しく記録されるためには、半導体メモリチップ100が暗号鍵Kを保持している必要がある。即ち、この場合も、書き込み装置300が半導体メモリチップ100を認証している。
【0190】
以下、書き込み特殊領域への別の書き込み方法を述べる。これはMKBを用いるものである。図17Bに、本発明の半導体メモリチップの書き込み特殊領域1に対して、書き込み装置がコントローラーを介して書き込みを行う構成を示す。
【0191】
書き込み装置のメディア鍵格納手段は、当該書き込み装置が保持するMKBのメディア鍵KMを格納している。また、半導体メモリチップのデータ変換手段は、デバイス鍵KDを保持している。図17Bの書き込み装置が、図17Bのコントローラーを介して、図17Bの半導体メモリチップの書き込み特殊領域にデータを書き込む際の動作例を図17Cに示す。データDと書き込み先アドレスの指定が書き込み装置に入力されると(ステップS2001)、当該データDは書き込み装置のECC生成手段に入力される。ECC生成手段は前記データDのECCであるECC( D )を生成し、データと共に暗号化手段に送る(ステップS2002)。暗号化手段は、メディア鍵格納手段からメディア鍵KMを取得し(ステップS2003)、前記メディア鍵KMでデータDとECC( D )とを暗号化して、それぞれD’とECC’とを得る(ステップS2004)。次いで、暗号化手段は、暗号化データD’と暗号化ECC(即ち、ECC’)とをデータ送信手段に送る(ステップS2005)。
【0192】
データ送信手段はMKBを取得し(ステップS2006)、当該MKBをコントローラーに送る(ステップS2007)。当該MKBはコントローラーのデータ書き込み手段のデータ転送部に入力される。データ転送部は当該MKBを半導体メモリチップのデータ変換手段に送る(ステップS2008)。データ変換手段は、受信したMKBをMKB処理部に入力する(ステップS2009)。MKB処理部は、当該データ変換手段が格納するデバイス鍵KDを取得し(ステップS2010)、当該デバイス鍵KDを用いて前記MKBを処理する(ステップS2011)。前記デバイス鍵KDが前記MKBによって無効化されていない時、及び、その時に限って、MKB処理部はメディア鍵KMを出力する。さもなければ、MKB処理部はエラーを出力する。処理結果(即ち、正しく得られたメディア鍵KMまたはエラー)は、MKB処理部から復号部に送られる(ステップS2012)。復号部は前記処理結果がメディア鍵KMか否かを判定する(ステップS2013)。エラーが送られて来た場合、復号部はコントローラーのデータ書き込み手段にエラー通知を送る(ステップS2014)。データ書き込み手段はエラー通知を書き込み装置に転送する(ステップS2015)。書き込み装置はエラー通知を受け取ると、データ書き込み動作を停止する(ステップS2016)。
【0193】
一方、MKB処理部からメディア鍵KMが送られて来た場合、復号部は当該メディア鍵KMを保持する(ステップS2017)と共に、復号部はコントローラーのデータ書き込み手段にデータ送信要求を送る(ステップS2018)。データ転送部はデータ送信要求を書き込み装置に転送する(ステップS2019)。書き込み装置がデータ送信要求を受け取ると、書き込み装置のデータ送信手段は、暗号化されたデータD(即ち、暗号化データD’)と暗号化されたECC(即ち、ECC’)とを送出し、コントローラーに送る(ステップS2020)。前記暗号化データD’と暗号化ECC(ECC’)とは、コントローラーのデータ書き込み手段を介して、半導体メモリチップのデータ変換手段に送られる。前記暗号化データD’と暗号化ECC(ECC’)とはデータ変換手段の復号部に送られる(ステップS2021)。復号部は保持しているメディア鍵KMで前記暗号化データD’と暗号化ECC(ECC’)とを復号し、データDとECCとを得る(ステップS2022)。復号部はデータDを書き込み特殊領域に書き込み、ECCをECC格納部に書き込む(ステップS2023)。
【0194】
読み出し特殊領域は、半導体メモリチップ100がコントローラー200を認証するために利用される。一方、書き込み特殊領域は、書き込み装置300が半導体メモリチップ100を認証するために利用される。ここで図1のトラスト・チェインを思い起こそう。書き込み装置300から、半導体メモリチップ100、コントローラー200というトラスト・チェインを構成するためには、読み出し特殊領域と書き込み特殊領域が交わりを持つ必要がある。即ち、この交わりの領域(共通領域)に記録されたデータが正しく(書き込み装置300の意図した通りに)コントローラー200によって読み出されることによって、トラスト・チェインが完成することになる。以降、読み出し特殊領域と書き込み特殊領域の交わりの領域(共通領域)を単に特殊領域と呼ぶことがある。
【0195】
なお、図18の例では、バージョン情報は単なる数値としていたが、バージョン情報はこれに限られるものではない。また、バージョン情報およびバージョン情報以外の1以上の情報に応じて、複数の暗号鍵から対応する暗号鍵を選択するように構成してもよい。例えば、半導体メモリチップ100が製造された時期、または、製造時のロット番号を元にバージョン情報を定めても良い。
【0196】
また、バージョン情報は数値に限定されるものではない。例えば、文字列、または、数値や文字列などの順列からなる配列であっても良い。図20は、このように構成したバージョン情報の変形例を示す図である。図20では、半導体メモリチップ100の製造工場名、当該製造工場で管理しているロット番号、および、顧客番号の順列をバージョン情報とした例が示されている。ここで、顧客番号とは、例えば半導体メモリチップ100の製造者が、大口の需要家に対して割り振った番号である。大口需要家向けでない製品については、この数値を固定の値(例えば0)とする。図20のような対応表が、書き込み装置300の鍵記憶部320−2に記憶される。
【0197】
このように、第2の実施の形態にかかる半導体メモリチップは、メモリと同一ダイ上に構成され、コントローラーを認証する認証手段として機能する暗号鍵共有部および送出制御部を備えている。そして、認証されたコントローラーのみが、メモリに格納されたデータを正しく読み出すことができる。また、メモリと同一ダイ上に構成され、所定の暗号鍵を記憶する鍵記憶部と当該暗号鍵によりデータを復号してメモリに記憶するデータ変換部とを備えている。そして、正しい暗号鍵を保持していなければデータを正しく記録できない。これにより、メモリカードの偽造等によるデータの不正利用を防止することができる。
【0198】
(第3の実施の形態)
第2の実施の形態では、書き込み特殊領域に書き込む前に書込データを復号していた。これに対し、第3の実施の形態にかかる半導体メモリチップは、書き込み特殊領域から読み出したデータ(暗号化された書込データ)を復号する。この場合も、書き込み特殊領域から読み出したデータが正しく復号するためには、書き込み装置が暗号化に用いた暗号鍵に対応する暗号鍵を半導体メモリチップが保持している必要がある。即ち、この場合も、書き込み装置が半導体メモリチップを認証している。
【0199】
図21は、第3の実施の形態の半導体メモリチップ2100の構成の一例を示すブロック図である。なお、コントローラー200は、第2の実施の形態と同様の構成である。図21に示すように、半導体メモリチップ2100は、メモリ2110と、暗号鍵共有部120と、送出制御部2130と、データ変換部2140と、受信制御部2150と、読出部2160とを備えている。
【0200】
第2の実施の形態との相違点の1つは、データ変換部140の位置である。図2に示すように、第2の実施の形態では、データ変換(復号)は書き込みの際に行われるが、第3の実施の形態では読み出しの際に行われる。この他、第3の実施の形態では、メモリ2110および送出制御部2130の構成と、受信制御部2150および読出部2160を追加したことが、第2の実施の形態と異なっている。その他の構成および機能は、第2の実施の形態にかかる半導体メモリチップ100の構成を表すブロック図である図2と同様であるので、同一符号を付し、ここでの説明は省略する。
【0201】
送出制御部2130は、読出部132が削除されたことが図5の送出制御部130と異なっている。なお、送出制御部2130は、読出部132が読出したデータを入力する代わりに、読出部2160により読み出され、データ変換部140により変換されたデータを入力する。
【0202】
メモリ2110は、符号記憶部111と、共通領域2114と、一般領域115とを備えている。なお、第3の実施の形態では、書き込み特殊領域とは、メモリ領域のうち、データ読み出しの際、データ変換部2140による復号を受けるデータが書き込まれる予め定められたメモリ領域である。第3の実施の形態では、データ読み出しの際に、データ変換部2140により復号されたデータが送出制御部2130に入力され、コントローラー200の認証が行われる。したがって、データ変換部2140による復号を受けるデータが書き込まれる書き込み特殊領域と、認証されたコントローラー200のみがデータを正しく読み出すことができる読み出し特殊領域とが一致する。このため、図21では、メモリ2110に共通領域2114のみを図示している。
【0203】
受信制御部2150は、書込データが暗号化された暗号化データを受信して復号せずに共通領域2114に書き込む処理を制御する。
【0204】
読出部2160は、読み出しが指定されたページのデータを読み出し特殊領域(共通領域2114)から読み出し、データ変換部2140に送信する。また、読出部2160は、指定されたページのデータに対応するECCを符号記憶部111から読み出し、送出制御部2130に送信する。
【0205】
次に、図21の受信制御部2150の構成例および第3の実施の形態の書き込み装置2300の構成例について図22を用いて説明する。なお、図22では、書き込み処理に関わる部分のみが図示されている。
【0206】
まず、書き込み装置2300の構成について説明する。図22に示すように、書き込み装置2300は、ECC生成部2310と、鍵記憶部320と、暗号化部2330と、データ送信部2340とを備えている。鍵記憶部320は、図14の鍵記憶部320と同様の構成のため同一の符号を付し、説明を省略する。
【0207】
ECC生成部2310は、書き込むべきデータとして入力された書込データのECCを生成する。暗号化部2330は、公開鍵Kpを用いて書込データを暗号化する。データ送信部2340は、暗号化データと、ECCと、書込先ページの指定とをコントローラー200の書込制御部230に送信する。
【0208】
次に、受信制御部2150の構成について説明する。図22に示すように、受信制御部2150は、書込部2143を備えている。書込部2143は、暗号化データを共通領域2114の指定されたページに記録する。また、書込部2143は、ECCを符号記憶部111に格納する。
【0209】
次に、図22のように構成された書き込み装置2300、書込制御部230、および、受信制御部2150による書込データの書き込み処理について図23を用いて説明する。図23は、第3の実施の形態における書き込み処理の全体の流れを示すフローチャートである。
【0210】
書き込み装置2300は、書込データ(データD)と書込先ページの指定とを入力する(ステップS801)。書き込み装置2300は、入力されたデータDをECC生成部2310に入力する(ステップS802)。次に、ECC生成部2310が、データDのECCを生成し、生成したECCをデータ送信部2340に転送する(ステップS803)。また、ECC生成部2310は、データDを暗号化部2330に転送する(ステップS804)。
【0211】
暗号化部2330は、鍵記憶部320から公開鍵Kpを取得する(ステップS805)。また、暗号化部2330は、取得した公開鍵KpによってデータDを暗号化し、暗号化データD’を得る(ステップS806)。次に、暗号化部2330は、暗号化データD’をデータ送信部2340に送る(ステップS807)。データ送信部340は、暗号化データD’、書込先ページの指定、および、ECCを、コントローラー200の書込制御部230に送信する(ステップS808)。
【0212】
書込制御部230のデータ転送部231が、暗号化データD’、書込先ページ指定、および、ECCを受信し(ステップS809)、それらを半導体メモリチップ100の受信制御部2150に送信する(ステップS810)。
【0213】
受信制御部2150は、書込部2143に暗号化データD’と書込先ページ指定とを入力する(ステップS811)。書込部2143は、入力された暗号化データD’を、書込先ページ指定によって指定されたメモリ110上のページに記録する(ステップS812)。また、受信制御部2150は、ECCを、指定されたページに対応するECCとして、符号記憶部111に格納する(ステップS813)。
【0214】
このように、本実施の形態では、書き込み装置2300にデータDが入力された場合、データDは、書き込み装置2300が保持する公開鍵Kpで暗号化される。そして、半導体メモリチップ100の受信制御部2150には、暗号化データD’=Enc(Kp,D)と、データDに関するECC(D)とが入力される。その結果、書き込み特殊領域(共通領域2114)にデータEnc(Kp,D)が記録され、符号記憶部111にECC(D)が記録される。
【0215】
次に、図21のデータ変換部2140の構成例について図24を用いて説明する。図24に示すように、データ変換部2140は、鍵記憶部141と、復号部2142とを備えている。鍵記憶部141の構成および機能は、図14と同様であるため同一の符号を付し、説明を省略する。復号部2142は、読出部2160により読み出されたデータを、鍵記憶部141に記憶された秘密鍵Ksを用いて復号する。
【0216】
次に、図24のように構成されたデータ変換部2140により実行されるデータ読出処理について図25を用いて説明する。図25は、第3の実施の形態におけるデータ読出処理の全体の流れを示すフローチャートである。
【0217】
まず、コントローラー200が、読み出し対象となるページの指定を再生装置などの外部装置から入力する(ステップS901)。コントローラー200の読出制御部220は、半導体メモリチップ100に対して、メモリ110内の読み出し指定ページのデータの読み出し指示を送る(ステップS902)。半導体メモリチップ100の読出部2160は、読み出し指定ページのデータを読み出し、データ変換部2140に入力する(ステップS903)。また、読出部2160は、読み出し指定ページに対応するECCを符号記憶部111から読み出して送出制御部2130に送る(ステップS904)。
【0218】
上述のように本実施の形態では、暗号化データを復号せずに共通領域2114に書き込むため、読み出したデータは暗号化されている。以下、読み出したデータをデータD’と表す。
【0219】
データ変換部2140は、入力されたデータD’を復号部2142に入力する(ステップS905)。復号部2142は、鍵記憶部141から秘密鍵Ksを取得する(ステップS906)。復号部2142は、取得した秘密鍵Ksを用いて入力されたデータD’を復号し、データDを得る(ステップS907)。そして、復号部2142は、復号したデータDを送出制御部2130に送る(ステップS908)。
【0220】
送出制御部2130は、データ変換部2140から受信した復号されたデータDと符号記憶部111から読み出されたECCとをコントローラー200の読出制御部220に送出する(ステップS909)。この後の処理は、図6のステップS212以降と同様であるため、図25では記載を省略している。
【0221】
本実施の形態の場合、書き込み特殊領域(共通領域2114)からのデータ読み出しは、必ず半導体メモリチップ100のデータ変換部2140を経由して行われる。上述の書き込みによって、書き込み特殊領域(共通領域2114)の読み出し対象ページのデータがEnc(Kp,D)であり、当該ページのECCとして、ECC(D)が符号記憶部111に記録されているとする。この場合、半導体メモリチップ100のデータ変換部2140から送出制御部2130に送られるデータはDec(Ks,Enc(Kp,D))=Dである。そして、コントローラー200は、データDとECC(D)とを受け取ることになる。ここで、Dec(A,B)とは、復号に用いる鍵AによってデータBを復号することを表す。
【0222】
このように、書き込み装置300がEnc(Kp,D)とECC(D)を書き込んだ場合に、コントローラー200が所期のデータDと対応するECC(D)とを正しく受け取るためには、半導体メモリチップ100が秘密鍵Ksを格納している必要がある。即ち、この場合も、書き込み装置300が半導体メモリチップ100を認証している。上述のデータ変換部2140を経由して読み出されるメモリ領域が、本実施の形態の書き込み特殊領域に相当する。
【0223】
このように、第3の実施の形態にかかるメモリチップでは、メモリと同一ダイ上に構成され、所定の暗号鍵を記憶する鍵記憶部とメモリから読み出したデータを当該暗号鍵により復号するデータ変換部とを備えている。そして、正しい暗号鍵を保持していなければ書き込まれたデータを正しく復元できない。これにより、メモリカードの偽造等によるデータの不正利用を防止することができる。
【0224】
(第4の実施の形態)
第2および第3の実施の形態で述べたように、書き込み装置によって特殊領域(=共通領域)にデータを書き込み、特殊領域からコントローラーがデータを読み出すことにより、トラスト・チェインが構築される。書き込み装置によって特殊領域に書き込まれたデータがコントローラーによって正しく読み出されたか否かは、実際には、コンテンツの再生などのデータ利用が正常にできるか否かによって判断される。
【0225】
第4の実施の形態では、上記実施の形態の半導体メモリチップ内のデータを利用する装置(プレーヤー等)を含めた具体的なデータ利用の実施の形態を説明する。
【0226】
図26は、第4の実施の形態でデータを利用する装置であるプレーヤー400およびプレーヤー400がデータを読み出すメモリカード2501の構成の一例を示すブロック図である。
【0227】
図26に示すように、メモリカード2501は、半導体メモリチップ100とコントローラー200とを含む。半導体メモリチップ100およびコントローラー200は、第2の実施の形態または第3の実施の形態で述べた構成を備える。例えば、図26のコントローラー200は、例えば、図3Aの暗号鍵共有部210と図5の読出制御部220と具備している。メモリカード2501は、例えばSDメモリカードなどにより構成することができる。
【0228】
第4の実施の形態では、暗号化ビデオデータ2541、暗号化ビデオデータ2541を復号するために用いられる復号鍵Kcが暗号化された暗号化復号鍵2531、および、MKB2521(以下、単にMKBという)が、半導体メモリチップ100のメモリ110内の一般領域115に記録されている。また、メディア鍵変換鍵2511(以下、メディア鍵変換鍵KTという)がメモリ110内の特殊領域(共通領域114)に格納されている。
【0229】
復号鍵Kcは暗号化された暗号化復号鍵2531として記録される。この暗号化に用いられる鍵は、MKBが正しく処理された場合に導出されるメディア鍵KMを、メディア鍵変換鍵KTを用いて変換したものである。例えば、暗号化復号鍵2531=AES−E(AES−G(KT,KM),Kc)。この例では、変換に一方向性関数であるAES−Gを用い、暗号化にAES−Eを用いている。
【0230】
プレーヤー400は、デバイス鍵を表すKD410(以下、デバイス鍵KDという)を保持するとともに、MKB処理部420と、メディア鍵変換部430と、鍵復号部440と、ビデオ復号部450と、再生部460とを備えている。
【0231】
MKB処理部420は、一般領域115から読み出されたMKBをデバイス鍵KDを用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。メディア鍵変換部430は、導出されたメディア鍵KMを、特殊領域から読み出されたメディア鍵変換鍵KTを用いて変換した鍵Kwを生成する。鍵復号部440は、一般領域115から読み出された暗号化復号鍵2531を鍵Kwで復号することにより復号鍵Kcを生成する。ビデオ復号部450は、復号鍵Kcを用いて暗号化ビデオデータを復号する。再生部460は、復号されたビデオデータを再生する。
【0232】
次に、図26のように構成されたプレーヤー400によるメモリカード2501内のデータの再生処理について図27を用いて説明する。図27は、第4の実施の形態における再生処理の全体の流れを示すフローチャートである。
【0233】
プレーヤー400は、メモリカード2501内のコントローラー200に対して、一般領域115に含まれているMKBの読み出しを指示する(ステップS1001)。例えば、プレーヤー400は、コントローラー200に対して当該MKBの先頭アドレスとサイズとを指定する。
【0234】
コントローラー200は、指定された領域を含むページを半導体メモリチップ100から読み出し、指定された領域のデータ(即ちMKBの値)をプレーヤー400に送る。プレーヤー400は、受信したMKBをMKB処理部420に入力する(ステップS1002)。MKB処理部420は、プレーヤー400が保持しているデバイス鍵KDを読み出し、入力されたMKBをデバイス鍵KDを用いてMKB処理し、メディア鍵KMを導出して出力する(ステップS1003)。
【0235】
次に、MKB処理部420は、MKB処理によりメディア鍵KMが得られたか否かを判断する(ステップS1004)。デバイス鍵KDがMKBによって無効化されていた場合、MKB処理部420は正しいメディア鍵KMを導出することができない。この場合、MKB処理部420は、メディア鍵KMが得られなかったと判断し(ステップS1004:No)、エラーを出力する。なお、MKB処理部420からエラーが出力された場合、プレーヤー400は警告メッセージを表示して動作を停止する。
【0236】
メディア鍵KMが得られた場合(ステップS1004:Yes)、プレーヤー400は、メディア鍵KMをメディア鍵変換部430に送る(ステップS1005)。次に、プレーヤー400は、特殊領域(共通領域114)に含まれているメディア鍵変換鍵KTの読み出しを指示する(ステップS1006)。例えば、プレーヤー400は、コントローラー200にメディア鍵変換鍵KTの先頭アドレスとサイズとを指定する。
【0237】
コントローラー200は、指定された領域を含むページを半導体メモリチップ100から読み出し、指定された領域のデータ(即ちメディア鍵変換鍵KTの値)をプレーヤー400に送る。プレーヤー400は、コントローラー200から受信したメディア鍵変換鍵KTの値をメディア鍵変換部430に入力する。
【0238】
メディア鍵変換部430は、入力されたメディア鍵変換鍵KTでメディア鍵KMを変換して鍵Kw=AES−G(KT,KM)を得る(ステップS1007)。プレーヤー400は、鍵Kwの値を鍵復号部440に送る。
【0239】
次に、プレーヤー400は、コントローラー200を介して、半導体メモリチップ100の一般領域115から暗号化復号鍵2531を読み取る(ステップS1008)。例えば、プレーヤー400は、コントローラー200に暗号化復号鍵2531の先頭アドレスとサイズを指定する。
【0240】
コントローラー200は、一般領域115から指定された領域を含むページを読み出し、指定された領域のデータ(即ち暗号化復号鍵2531の値)をプレーヤー400に送る。プレーヤー400は、コントローラー200から受信した暗号化復号鍵2531の値を鍵復号部440に入力する。
【0241】
鍵復号部440は、入力された暗号化復号鍵2531を鍵Kwで復号する(ステップS1009)。これにより、復号鍵Kcの値が得られる。復号鍵Kcを得る式は以下の(1)式のように表される。
【0242】
Dec(Kw,暗号化復号鍵)
=Dec(Kw,Enc(AES−G(KT,KM),Kc))
=Dec(Kw,Enc(Kw,Kc))
=Kc ・・・(1)
鍵復号部440は、復号鍵Kcの値をビデオ復号部450に送る(ステップS1010)。ビデオ復号部450は、受信した復号鍵Kcの値を保持する。
【0243】
次に、プレーヤー400は、コントローラー200を介して、一般領域115から順次暗号化ビデオデータを読み取り、ビデオ復号部450に順次入力する(ステップS1011)。ビデオ復号部450は、復号鍵Kcを用いて暗号化ビデオデータを順次復号し(ステップS1012)、再生部460に送る(ステップS1013)。再生部460は、受信したビデオデータを順次再生(表示)する(ステップS1014)。
【0244】
メディア鍵変換鍵KTは、正しいコンテンツ復号鍵(復号鍵Kc)を得る為に必要なデータである。この値は、例えば、半導体メモリチップ100毎に異なっていても良い。または、メモリカード2501毎に異なっていても良い。更には、メモリカード2501毎に統計的に異なっていても良い。統計的に異なるとは、厳密に異なる値とならない場合があるが、統計的には異なるとみなせることを意味する。例えば桁数が極めて大きい乱数を発生させ、この乱数の値を用いる場合が該当する。
【0245】
特殊領域に記録されるメディア鍵変換鍵KTがメモリカード2501毎に(少なくとも統計的に)異なっている場合、メディア鍵変換鍵KTは、メモリカード2501のIDの一種とみなすことができる。なお、暗号化されたコンテンツデータ(ビデオデータなど)を復号されるために必要なデータとして、メディア鍵変換鍵KTの代わりにMKBを保存するように構成してもよい。
【0246】
メディア鍵変換鍵KTを半導体メモリチップ100の書き込み特殊領域に正しく記録するには、半導体メモリチップ100が書き込み装置300によって認証されなければならない。プレーヤー400が、読み出し特殊領域に記録されたメディア鍵変換鍵KTを、コントローラー200を経由して正しく読み出すことができる為には、コントローラー200が半導体メモリチップ100によって認証されていなければならない。結局、書き込み装置300が半導体メモリチップ100を経由してコントローラー200を認証するトラスト・チェインが確立されていなければ、プレーヤー400はメディア鍵変換鍵KTを正しく読み出すことはできない。即ち、プレーヤー400によるビデオの再生をもって、トラスト・チェイン確立の証として良い。
【0247】
なお、第4の実施の形態におけるMKBは、ビデオの供給者がビデオ毎に供給するようにしても良い。一般に、MKBは対称鍵暗号を用いて構成されるが、その場合は、公開鍵暗号を用いて構成するようにすると良い。その理由を以下に説明する。
【0248】
対称鍵暗号を用いて構成されたMKBの場合、一般にMKBを生成する為には、全てのデバイス鍵KDの値を知っている必要がある。ビデオ供給者にMKBの生成を行わせる為には、全てのデバイス鍵KDの値を当該ビデオ供給者に提供する必要がある。もし、このデバイス鍵KDの値が悪意のプレーヤー製造者に漏えいした場合、MKBによるプレーヤーの無効化が実質無意味になる。悪質なまたは粗悪なプレーヤーをMKBを用いて無効化しても、悪意のプレーヤー製造者は、無効化されていないデバイス鍵KDを用いて、幾らでも悪質なまたは粗悪なプレーヤーを製造し続けることが可能であるからである。
【0249】
そこに、公開鍵暗号を用いてMKBを構成するメリットがある。公開鍵暗号を用いる場合、デバイス鍵KDは秘密鍵を用いて構成される。プレーヤー製造者は、当該プレーヤー製造者に割り当てられたデバイス鍵KDの値しか知らない。一方、ビデオ供給者には、MKB生成用に公開鍵を配布する。ビデオ供給者は、当該公開鍵を用いて自由にMKBを生成することが可能である。一方、仮にMKB生成用の公開鍵が悪意のプレーヤー製造者に漏えいしても、公開鍵暗号の基本的な性質から、秘密鍵で構成されているデバイス鍵KDの値を知ることはできない。このように、図26におけるMKBは公開鍵暗号に基づいて構成されたMKBであっても良い。
【0250】
このように、第4の実施の形態では、一般領域に暗号化データを記憶し、特殊領域に暗号化データを復号するために必要なデータを記憶し、特殊領域のデータを用いて暗号化データを復号して利用できる。これにより、コンテンツ供給者による再生デバイスのリボークが実現可能となる。
【0251】
(第5の実施の形態)
第5の実施の形態では、コンテンツに付随するMKBによるコントローラーの無効化と、暗号化ビデオデータのメモリカード毎の個別化とを組み合わせた実施の形態を説明する。
【0252】
図28は、第5の実施の形態のプレーヤー400−2およびメモリカード2601の構成の一例を示すブロック図である。
【0253】
図28に示すように、メモリカード2601は、半導体メモリチップ100とコントローラー200−2とを含む。半導体メモリチップ100は、第2の実施の形態または第3の実施の形態で述べた構成を備える。
【0254】
第5の実施の形態では、暗号化ビデオデータ2541、暗号化されたMKB2521−2(以下、MKB’という)およびMKB2522(以下、MKB2という)が一般領域115に記録されている。また、MKB’からMKBを復号するためのMKB復号鍵2513(以下、MKB復号鍵KTという)およびメディア鍵変換鍵2512(以下、メディア鍵変換鍵KT2という)が特殊領域(共通領域114)に格納されている。このように、本実施の形態では、メディア鍵変換鍵2511(メディア鍵変換鍵KT)の代わりに、MKBの復号に用いられるMKB復号鍵KTを備えている。
【0255】
次に、コントローラー200−2の構成例について説明する。本実施の形態のコントローラー200−2は、第2または第3の実施の形態のコントローラー200の構成に加えて、デバイス鍵KD2610(以下、デバイス鍵KD2という)と、MKB処理部2620と、メディア鍵変換部2630と、ビデオ復号部2640とを備えている。なお、図28では、第2または第3の実施の形態で説明した構成部は図示を省略しているが、コントローラー200−2は、例えば、図7の暗号鍵共有部210−2と図11Aの読出制御部220−3とを具備している。そして、読み出し特殊領域に格納されている、MKB復号鍵KTおよびメディア鍵変換鍵KT2の読み出しは、暗号鍵共有部210−2と読出制御部220−3とを用いて行われる。
【0256】
MKB処理部2620は、一般領域115から読み出されたMKB2をデバイス鍵KD2を用いて処理することによりメディア鍵KM2を導出するMKB処理を実行する。メディア鍵変換部2630は、導出されたメディア鍵KM2を、特殊領域から読み出されたメディア鍵変換鍵KT2を用いて変換した復号鍵Kc2を生成する。ビデオ復号部2640は、復号鍵Kc2を用いて暗号化ビデオデータを復号する。
【0257】
次に、プレーヤー400−2の構成例について説明する。プレーヤー400−2は、デバイス鍵410(以下、デバイス鍵KDという)を保持するとともに、MKB処理部420−2と、ビデオ復号部450と、再生部460と、MKB復号部470と、を備えている。
【0258】
第5の実施の形態では、MKB復号部470が追加されたこと、MKB処理部420−2の機能、および、鍵復号部440とメディア鍵変換部430が削除されたことが、第4の実施の形態のプレーヤー400と異なっている。
【0259】
MKB復号部470は、一般領域115から読み出されたMKB’をMKB復号鍵KTで復号してMKBを生成する。MKB処理部420−2は、生成されたMKBをデバイス鍵KDを用いて処理することによりメディア鍵KMを導出するMKB処理を実行する。
【0260】
上述のように、本実施の形態では、一般領域115に2つのMKB(MKBを暗号化したMKB’およびMKB2)が記録されている。MKB’を復号したMKBは、第4の実施の形態と同様にプレーヤー400−2の認証および無効化に用いられる。一方、MKB2は、コントローラー200の認証および無効化に用いられる。
【0261】
また、本実施の形態では、特殊領域(共通領域114)はMKB復号鍵KTおよびメディア鍵変換鍵KT2を格納している。MKB復号鍵KTは、プレーヤー400−2用のMKB復号鍵である。メディア鍵変換鍵KT2は、コントローラー200用のメディア鍵変換鍵である。これらの鍵は、メモリカード2601毎に異なっていて良い。鍵とデータとの間の関係は次のようになっている。
【0262】
(1)MKBを無効化されていないデバイス鍵KDで処理するとメディア鍵KMが得られる。また、MKB2を無効化されていないデバイス鍵KD2で処理するとメディア鍵KM2が得られる。
【0263】
(2)(平文の)ビデオデータをC、暗号化ビデオデータをC’とすると、ビデオデータCはメディア鍵KMと復号鍵Kc2で二重に暗号化されている:C’=AES−E(Kc2,AES−E(KM,C))。
【0264】
(3)MKBはMKB’をMKB復号鍵KTで復号して得られる:MKB=AES−D(KT,MKB’)。
【0265】
(4)復号鍵Kc2はメディア鍵KM2をメディア鍵変換鍵KT2で変換して得られる:Kc2=AES−G(KT2,KM2)。
【0266】
(5)暗号化ビデオデータC’の復号過程は次の通り:
AES−D(KM,AES−D(Kc2,C’))
=AES−D(KM,AES−D(Kc2,AES−E(Kc2,AES−E(KM,C))))
=AES−D(KM,AES−E(KM,C))
=C。
【0267】
次に、図28のように構成されたプレーヤー400−2によるメモリカード2601内のデータの再生処理について図29を用いて説明する。図29は、第5の実施の形態における再生処理の全体の流れを示すフローチャートである。
【0268】
プレーヤー400−2は、メモリカード2601内のコントローラー200−2に対して、一般領域115に含まれているMKB2の読み出しを指示する(ステップS1101)。例えば、プレーヤー400−2は、コントローラー200−2に対して当該MKB2の先頭アドレスとサイズとを指定する。
【0269】
コントローラー200−2は、指定された領域を含むページを半導体メモリチップ100から読み出し、指定された領域のデータ(即ちMKB2の値)をMKB処理部2620に入力する(ステップS1102)。MKB処理部2620は、コントローラー200−2が保持しているデバイス鍵KD2を読み出し、入力されたMKB2をデバイス鍵KD2を用いてMKB処理し、メディア鍵KM2を導出して出力する(ステップS1103)。
【0270】
次に、MKB処理部2620は、MKB処理によりメディア鍵KM2が得られたか否かを判断する(ステップS1104)。デバイス鍵KDがMKB2によって無効化されていた場合、MKB処理部2620は正しいメディア鍵KM2を導出することができない。この場合、MKB処理部2620は、メディア鍵KM2が得られなかったと判断し(ステップS1104:No)、エラーを出力する。
【0271】
メディア鍵KM2が得られた場合(ステップS1104:Yes)、MKB処理部2620は、メディア鍵KM2をメディア鍵変換部2630に送る(ステップS1105)。メディア鍵変換部2630は、特殊領域(共通領域114)に含まれているメディア鍵変換鍵KT2を読み出す(ステップS1106)。そして、メディア鍵変換部2630は、読み出したメディア鍵変換鍵KT2でメディア鍵KM2を変換した復号鍵Kc2を生成する(ステップS1107)。メディア鍵変換部2630は、生成した復号鍵Kc2をビデオ復号部2640に送信する(ステップS1108)。ビデオ復号部2640は、受信した復号鍵Kcの値を保持する。
【0272】
次に、プレーヤー400−2は、コントローラー200−2を介して半導体メモリチップ100の一般領域115からMKB’を読み出し、MKB復号部470に入力する(ステップS1109)。MKB復号部470は、コントローラー200−2を介して半導体メモリチップ100の特殊領域(共通領域114)からMKB復号鍵KTを読み出す(ステップS1110)。次に、MKB復号部470は、読み出したMKB復号鍵KTを用いて、入力されたMKB’を復号し、平文のMKBを得る(ステップS1111)。MKB復号部470は、平文のMKBをMKB処理部420−2に送る(ステップS1112)。
【0273】
MKB処理部420−2は、プレーヤー400−2が保持しているデバイス鍵KDを読み出し、入力されたMKBをデバイス鍵KDを用いてMKB処理し、メディア鍵KMを導出する(ステップS1113)。
【0274】
次に、MKB処理部420−2は、MKB処理によりメディア鍵KMが得られたか否かを判断する(ステップS1114)。デバイス鍵KDがMKBによって無効化されていた場合、MKB処理部420−2は正しいメディア鍵KMを導出することができない。この場合、MKB処理部420−2は、メディア鍵KMが得られなかったと判断し(ステップS1114:No)、エラーを出力する。メディア鍵KMが得られた場合(ステップS1114:Yes)、MKB処理部420−2は、メディア鍵KMをビデオ復号部450に送る(ステップS1115)。
【0275】
次に、コントローラー200−2のビデオ復号部2640は、一般領域115から順次暗号化ビデオデータ2541を読み出す(ステップS1116)。ビデオ復号部2640は、保持している復号鍵Kc2を用いて、読み出した暗号化ビデオデータを復号する(ステップS1117)。ビデオ復号部2640は、復号したビデオデータをプレーヤー400−2のビデオ復号部450に送る(ステップS1118)。
【0276】
ビデオ復号部450は、復号鍵Kcを用いてビデオデータを順次復号し(ステップS1119)、再生部460に送る(ステップS1120)。再生部460は、受信したビデオデータを順次再生(表示)する(ステップS1121)。
【0277】
メディア鍵変換鍵KT2がメモリカード2601毎に異なっていれば、復号鍵Kc2もメモリカード2601毎に異なる。従って、メディア鍵KMまたはメディア鍵変換鍵KT2がメモリカード2601毎に異なっていれば、暗号化ビデオデータ自体がメモリカード2601毎に異なる。即ち、暗号化ビデオデータがメモリカード2601毎に個別化されることになる。
【0278】
このように、第5の実施の形態にかかるメモリチップでは、コンテンツに付随するMKBによるコントローラーの無効化(コンテンツ供給者による再生デバイスのリボーク)と、暗号化ビデオデータのメモリカード毎の個別化(コンテンツ供給者によるコントローラーのリボーク)との組み合わせ(二重暗号化)が可能となる。
【0279】
(第6の実施の形態)
これまでは、本発明をコンテンツ保護に適用する実施の形態を述べたが、他の産業分野へ適用することもできる。第6の実施の形態では、スマートグリッドに適用した実施の形態を説明する。スマートグリッドとは、原子力や火力など従来の発電に加えて、太陽光や風力などの再生可能エネルギーを併用する際の電力品質の安定化を図るために構築されている次世代電力網である。
【0280】
図30は、第6の実施の形態の次世代電力網の一構成例を示す図である。次世代電力網では、電力使用量を集計するメーター3010aと、家電機器を管理するホームサーバであるHEMS(Home Energy Management System)3020が各家庭に設置される。また、商業ビルを対象として、ビル内の電気機器を管理するサーバであるBEMS(Building Energy Management System)3030がビル毎に設置される。商業ビルには、メーター3010aと同様のメーター3010bが設置される。以下では、メーター3010aおよび3010bを単にメーター3010という。
【0281】
メーター3010は、コンセントレータとよばれる中継器(コンセントレータ3040)によって数台ごとにまとめられ、通信網を介してメーターデータ管理システムであるMDMS(Meter Data Management System)3050と通信する。MDMS3050は、各家庭のメーター3010から一定の間隔で電力使用量を受信して記憶する。エネルギー管理システムであるEMS(Energy Management System)3060は、MDMS3050に集まった複数の家庭の電力使用量、或いは、電力系統に設置されたセンサからの情報に基づいて、各家庭のメーター3010やHEMS3020に対して電力使用を抑制するよう要求するなどの電力制御を行う。また、EMS3060は、遠隔端末ユニットであるRTU(Remote Terminal Unit)3071に接続された太陽光発電や風力発電などの分散電源3080、同じくRTU3072に接続された蓄電装置3090、および、RTU3073に接続された発電側との間を制御する送配電制御装置3100を制御し、グリッド全体の電圧および周波数を安定化するための制御を行う。
【0282】
図31は、メーター3010の構成例を示すブロック図である。メーター3010は、MDMS3050と暗号通信を行う。通信経路上にコンセントレータ3040が存在するが、コンセントレータ3040は暗号通信を中継するのみである。MDMS3050とメーター3010とは共有鍵Kを保持しており、当該共有鍵Kを用いて暗号通信を行う。
【0283】
例えば、計測部3011に接続する通信部3012が、共有鍵Kを用いて計測値を暗号化してMDMS3050に送る。MDMS3050は、保持する共有鍵Kを用いて暗号化された計測値を復号する。これにより、通信路上で通信が傍受されたとしても、傍受者は計測値を知ることができない。或いは、MDMS3050から計測部3011に制御用コマンドが送られる場合がある。例えば、計測の中止や開始、計測データの送付指示などの制御コマンドである。MDMS3050は、共有鍵Kを用いて、制御コマンドを暗号化し、暗号化した制御コマンドをメーター3010の通信部3012に送信する。通信部3012は、共有鍵Kを用いて暗号化制御コマンドを復号し、制御コマンドを計測部3011に送る。或いは、半導体メモリチップ100のメモリ110の一般領域に電力使用量データが格納されており、通信部3012は、共有鍵Kを用いて当該電力使用量データを暗号化し、暗号化電力使用量データをMDMS3050に送信する。MDMS3050は、共有鍵Kを用いて当該暗号化電力使用量データを復号する。
【0284】
メーター3010において、共有鍵Kは半導体メモリチップのメモリの特殊領域に格納される。共有鍵Kは、定期的に或いは随時更新されることが望ましい。更新用の共有鍵をK’とする。MDMS3050は、更新用の共有鍵K’を半導体メモリチップ100のメモリ110の書き込み特殊領域に書き込む。その為には既に述べたように、半導体メモリチップ100がMDMS3050によって認証される必要がある。また、メーター3010の通信部3012がコントローラー200を介して(更新された)共有鍵K’を読み出すには、コントローラー200が半導体メモリチップ100によって認証される必要がある。共有鍵の更新と、更新された共有鍵の利用を通じて、結果的に、半導体メモリチップ100を使用するメーター3010全体が、MDMS3050によって認証されることとなる。
【0285】
MDMS3050は、例えば、図14の書き込み装置300として、半導体メモリチップ100の書き込み特殊領域に更新用の共有鍵K’を書き込む。また、メーター3010のコントローラー200は、例えば、図7の暗号鍵共有部210−2と図9の読出制御部220−2とを具備している。
【0286】
このように、第6の実施の形態では、コンテンツ保護と異なる分野である次世代電力網で用いられるデータに対して、データの不正利用を防止することができる。
【0287】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【0288】
1M 半導体メモリチップ、2M 利用装置、4M 書き込み装置、11M 暗号鍵共有部、12M 送出制御部、13M 暗号鍵共有部、14M データ変換部、15M ECC格納部、21M 暗号鍵共有部、22M 読出制御部、23M 再生手段、41M 暗号鍵共有部、42M データ送信部、112M 読み出し特殊領域、113M 書き込み認証領域、114M 共通領域
【特許請求の範囲】
【請求項1】
メモリチップと接続される書き込み装置であって、
前記メモリチップは予め定められたデータの記憶領域である第1領域を含むメモリを有し、
前記メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、
書き込み装置が有するデータを前記第1鍵で暗号化した第1の暗号化データを前記メモリチップに送信するデータ送信部とを有し、
前記第1の暗号化データは、前記メモリチップが受け付け、前記メモリチップが有する前記第1鍵に対応する第2鍵で変換されて、前記第1領域に書き込まれることを特徴とする書き込み装置。
【請求項2】
読み出し装置及び書き込み装置とメモリチップが接続された情報記憶システムであって、
前記書き込み装置は、
前記メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、
書き込み装置が有するデータを前記第1鍵で暗号化した第1の暗号化データを前記メモリチップに送信するデータ送信部とを有し、
前記メモリチップは、
予め定められたデータの記憶領域である第2領域を含むメモリと、
前記第1の暗号データを受け付け、前記書き込み装置が有する第1鍵に対応する第2鍵で第1の暗号データを変換する変換部と、
変換されたデータを前記第1領域に書き込む書込部と、
前記読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の
暗号鍵生成部と、
前記第2領域に記憶されたデータを前記第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、
前記読み出し装置は、
前記第2の暗号データを受け付け、前記読み出し装置が有する前記第3鍵に対応する第4鍵で復号する
ことを特徴とする情報記憶システム。
【請求項3】
前記読み出し手段は、メーターデータ管理システムであり、前記メモリチップと前記書き込み装置はメーターであることを特徴とする請求項2の情報記憶システム。
【請求項4】
データを書き込む書き込み装置とデータを読み出す読み出し装置と接続されるメモリチップであって、
予め定められたデータの記憶領域である第1領域を含むメモリと、
前記読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の暗号鍵生成部と、
前記メモリに記憶されたデータを前記第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、
前記第2の暗号化データは、前記読み出し装置が受け付け、前記読み出し装置が有する前記第3鍵に対応する第4鍵で復号されることを特徴とするメモリチップ。
【請求項5】
外部装置の要求に応じてデータの読み出しおよび書き込みを制御するコントローラーと接続されるメモリチップであって、
予め定められたデータの記憶領域である第1領域を含むメモリと、
前記外部装置がデータの変換に用いる秘密鍵に対応する公開鍵を記憶する鍵記憶部と、
前記特殊領域に書き込む書込データを前記コントローラーから受信し、前記公開鍵を用いて前記書込データを変換した変換データを生成する変換部と、
前記変換データを前記特殊領域に書き込む書込部と、
を備えることを特徴とするメモリチップ。
【請求項1】
メモリチップと接続される書き込み装置であって、
前記メモリチップは予め定められたデータの記憶領域である第1領域を含むメモリを有し、
前記メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、
書き込み装置が有するデータを前記第1鍵で暗号化した第1の暗号化データを前記メモリチップに送信するデータ送信部とを有し、
前記第1の暗号化データは、前記メモリチップが受け付け、前記メモリチップが有する前記第1鍵に対応する第2鍵で変換されて、前記第1領域に書き込まれることを特徴とする書き込み装置。
【請求項2】
読み出し装置及び書き込み装置とメモリチップが接続された情報記憶システムであって、
前記書き込み装置は、
前記メモリに記憶される第1鍵情報を受け付け、第1鍵を生成する第1の暗号鍵生成部と、
書き込み装置が有するデータを前記第1鍵で暗号化した第1の暗号化データを前記メモリチップに送信するデータ送信部とを有し、
前記メモリチップは、
予め定められたデータの記憶領域である第2領域を含むメモリと、
前記第1の暗号データを受け付け、前記書き込み装置が有する第1鍵に対応する第2鍵で第1の暗号データを変換する変換部と、
変換されたデータを前記第1領域に書き込む書込部と、
前記読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の
暗号鍵生成部と、
前記第2領域に記憶されたデータを前記第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、
前記読み出し装置は、
前記第2の暗号データを受け付け、前記読み出し装置が有する前記第3鍵に対応する第4鍵で復号する
ことを特徴とする情報記憶システム。
【請求項3】
前記読み出し手段は、メーターデータ管理システムであり、前記メモリチップと前記書き込み装置はメーターであることを特徴とする請求項2の情報記憶システム。
【請求項4】
データを書き込む書き込み装置とデータを読み出す読み出し装置と接続されるメモリチップであって、
予め定められたデータの記憶領域である第1領域を含むメモリと、
前記読み出し装置に記憶される第2鍵情報を受け付け、第3鍵を生成する第2の暗号鍵生成部と、
前記メモリに記憶されたデータを前記第3鍵で暗号化した第2の暗号化データを読み出し装置に送信する送出部とを有し、
前記第2の暗号化データは、前記読み出し装置が受け付け、前記読み出し装置が有する前記第3鍵に対応する第4鍵で復号されることを特徴とするメモリチップ。
【請求項5】
外部装置の要求に応じてデータの読み出しおよび書き込みを制御するコントローラーと接続されるメモリチップであって、
予め定められたデータの記憶領域である第1領域を含むメモリと、
前記外部装置がデータの変換に用いる秘密鍵に対応する公開鍵を記憶する鍵記憶部と、
前記特殊領域に書き込む書込データを前記コントローラーから受信し、前記公開鍵を用いて前記書込データを変換した変換データを生成する変換部と、
前記変換データを前記特殊領域に書き込む書込部と、
を備えることを特徴とするメモリチップ。
【図1AA】
【図1AB】
【図1B】
【図1C】
【図1D】
【図1EA】
【図1EB】
【図1F】
【図1G】
【図1H】
【図1J】
【図1K】
【図1L】
【図1M】
【図1N】
【図1P】
【図1Q】
【図1R】
【図1S】
【図1TA】
【図1TB】
【図1TC】
【図1TD】
【図1TE】
【図1TF】
【図1TG】
【図1TH】
【図1TJ】
【図1TK】
【図1TL】
【図1TM】
【図1UA】
【図1UB】
【図1UC】
【図1V】
【図1WA】
【図1WB】
【図1XA】
【図1XB】
【図1YA】
【図1YB】
【図2A】
【図2B】
【図3A】
【図3B】
【図4A】
【図4B】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12A】
【図12B】
【図12C】
【図12D】
【図12E】
【図12F】
【図12G】
【図12H】
【図12J】
【図12K】
【図13】
【図14】
【図15】
【図16】
【図17A】
【図17B】
【図17C】
【図17D】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図1AB】
【図1B】
【図1C】
【図1D】
【図1EA】
【図1EB】
【図1F】
【図1G】
【図1H】
【図1J】
【図1K】
【図1L】
【図1M】
【図1N】
【図1P】
【図1Q】
【図1R】
【図1S】
【図1TA】
【図1TB】
【図1TC】
【図1TD】
【図1TE】
【図1TF】
【図1TG】
【図1TH】
【図1TJ】
【図1TK】
【図1TL】
【図1TM】
【図1UA】
【図1UB】
【図1UC】
【図1V】
【図1WA】
【図1WB】
【図1XA】
【図1XB】
【図1YA】
【図1YB】
【図2A】
【図2B】
【図3A】
【図3B】
【図4A】
【図4B】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12A】
【図12B】
【図12C】
【図12D】
【図12E】
【図12F】
【図12G】
【図12H】
【図12J】
【図12K】
【図13】
【図14】
【図15】
【図16】
【図17A】
【図17B】
【図17C】
【図17D】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【公開番号】特開2011−217182(P2011−217182A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−84335(P2010−84335)
【出願日】平成22年3月31日(2010.3.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願日】平成22年3月31日(2010.3.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]