(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024019749
(43)【公開日】2024-02-13
(54)【発明の名称】メモリデバイス、及び不揮発性メモリのセキュアプログミングのための方法
(51)【国際特許分類】
G06F 21/75 20130101AFI20240205BHJP
G06F 21/55 20130101ALI20240205BHJP
【FI】
G06F21/75
G06F21/55 380
【審査請求】有
【請求項の数】8
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023114122
(22)【出願日】2023-07-12
(31)【優先権主張番号】17/877,953
(32)【優先日】2022-07-31
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】512167426
【氏名又は名称】華邦電子股▲ふん▼有限公司
【氏名又は名称原語表記】Winbond Electronics Corp.
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(72)【発明者】
【氏名】厄瑞 ▲カ▼路茲尼
(57)【要約】 (修正有)
【課題】悪意ある攻撃者がチップ内に格納されたデータを取得するためにフラッシュメモリをハッキングすることを防止するメモリデバイスを提供する。
【解決手段】サイドチャネル攻撃100の対象となるセキュア組み込みフラッシュ集積回路(IC)102は、フラッシュアレイ(NVM)106と、セキュアプログラミング回路(SPC)108と、を含む。SPCは、所与のデータワードをNVMの所与のロケーションにプログラムするようNVMプログラム命令を受け取り、NVMプログラム命令に応じて、所与のデータワードのビットをランダムな順序でNVMにプログラムする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
不揮発性メモリ(NVM)と、
所与のデータワードを前記NVMの所与のロケーションにプログラムするようNVMプログラム命令を受け取り、
前記NVMプログラム命令に応じて、前記所与のデータワードのビットを前記NVMにランダムな順序でプログラムする
よう構成された
セキュアプログラミング回路(SPC)と
を含む、
メモリデバイス。
【請求項2】
前記所与のワードデータは2のN乗個のビットから成り、
前記SPCは、2のN乗個の値のランダム順列を生成し、前記所与のデータワードの前記ビットを前記ランダム順列に従った順序でプログラムするよう構成される、
請求項1に記載のメモリデバイス。
【請求項3】
前記SPCは、
可逆バイナリ行列を各カウントのビットを含むベクトルで乗算して積を生成し、
前記積にランダムビットのベクトルを加算する
ことにより前記ランダム順列を生成するよう構成される、
請求項2に記載のメモリデバイス。
【請求項4】
前記可逆バイナリ行列は、主対角線と、第1の三角形と、第2の三角形とを含む三角バイナリ行列であり、前記主対角線は「1」の値を含み、前記第1の三角形は「0」の値を含み、前記第2の三角形はランダムビットを含む、
請求項3に記載のメモリデバイス。
【請求項5】
不揮発性メモリ(NVM)のセキュアプログラミングのための方法であって、
所与のデータワードを前記NVMの所与のロケーションにプログラムするためNVMプログラム命令を受け取ることと、
前記NVMプログラム命令に応じて、前記所与のデータワードのビットを前記NVMにランダムな順序でプログラムすることと
を含む、
NVMのセキュアプログラミングのための方法。
【請求項6】
前記所与のワードデータは2のN乗個のビットから成り、
前記データワードをプログラムすることは、2のN乗個の値のランダム順列を生成することと、前記所与のデータワードの前記ビットを前記ランダム順列に従った順序でプログラムすることとを含む、
請求項5に記載のNVMのセキュアプログラミングのための方法。
【請求項7】
前記ランダム順列を生成することは、
積を生成するため可逆バイナリ行列を各カウントのビットを含むベクトルで乗算することと、
前記積にランダムビットのベクトルを加算することと
を含む、
請求項6に記載のNVMのセキュアプログラミングのための方法。
【請求項8】
前記可逆バイナリ行列は、主対角線と、第1の三角形と、第2の三角形とを含む三角バイナリ行列であり、前記主対角線は「1」の値を含み、前記第1の三角形は「0」の値を含み、前記第2の三角形はランダムビットを含む、
請求項7に記載のNVMのセキュアプログラミングのための方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は不揮発性メモリに関するものであり、特に、フラッシュメモリデバイスのセキュアプログラミングのための方法に関する。
【背景技術】
【0002】
フラッシュメモリと、特に組み込みフラッシュメモリは、機密データを格納する可能性があり、よって盗聴(「ハッキング」)から保護する必要がある。
【0003】
米国特許第11,188,237号は、フラッシュメモリのセキュリティを向上させてハッキングを防止するためのいくつかの実施形態を説明している。該実施形態は、悪意ある攻撃者がチップ内に格納されたデータを取得するためにフラッシュメモリをハッキングすることを防止する。該実施形態は、障害検出回路、アドレススクランブリング、ダミーアレイ、パスワード保護、改善された製造技術、及び他の機構の使用を含んでいる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、悪意ある攻撃者がチップ内に格納されたデータを取得するためにフラッシュメモリをハッキングすることを防止する。
【課題を解決するための手段】
【0005】
ここで説明する本発明の1つの実施形態は、不揮発性メモリ(NVM)とセキュアプログラミング回路(SPC)とを含むメモリデバイスを提供する。SPCは、NVMの所与のロケーションに所与のデータワードをプログラムするようNVMプログラム命令を受け取り、受け取ったNVMプログラム命令に応じて、所与のデータワードのビットをランダムな順序でNVMにプログラムするよう構成される。
【0006】
いくつかの実施形態において、所与のデータワードは2のN乗個のビットから成り、SPCは2のN乗個の値のランダム順列を生成し、所与のデータワードのビットをランダム順列に従った順序でプログラムするよう構成される。1つの実施形態において、SPCは、可逆バイナリ行列を各カウントのビットを含むベクトルで乗算して積を生成して、ランダムビットのベクトルを積に加算することにより、ランダム順列を生成するよう構成される。例示的な実施形態において、可逆行列は、主対角線と、第1の三角形と、第2の三角形とを含む三角バイナリ行列であり、主対角線は「1」の値を含み、第1の三角形は「0」の値を含み、第2の三角形はランダムビットを含む。
【0007】
本発明の1つの実施形態は、不揮発性メモリ(NVM)のセキュアプログラミングのための方法を提供する。該方法は、所与のデータワードをNVMの所与のロケーションにプログラムするようNVMプログラム命令を受け取ることと、NVMプログラム命令に応じて、所与のデータワードのビットをランダムな順序でNVMにプログラムすることとを含む。
【発明の効果】
【0008】
本発明の方法及びシステムは、NVMをサイドチャネル攻撃から保護するために適用することができる。
【図面の簡単な説明】
【0009】
【
図1】本発明の1つの実施形態によるセキュア組み込みフラッシュ集積回路(IC)を概略的に表すブロック図である。
【
図2】本発明の1つの実施形態によるセキュアフラッシュプログラミングのための方法を概略的に表すフロー図である。
【
図3】本発明の1つの実施形態による順列マップを生成するための方法を概略的に表すフロー図である。
【発明を実施するための形態】
【0010】
ハッカーは、サイドチャネル攻撃、例えば、電力消費又は放射された電磁エネルギーを監視することにより、NVM(又はその一部)の内容を取得しようとすることがある。
【0011】
具体的には、フラッシュメモリ及びフラッシュメモリを読み込み及び書き込みするためのリード/ライト回路の両方を含む集積回路(例えば、組み込みフラッシュを有するプロセッサ)は、通常、リード/ライト回路とNVMとの間のデータ交換が集積回路の外部ピン上で直接可視ではないことから、直接的方法によりハッキングすることは困難である。
【0012】
フラッシュメモリによってはビットシリアルプログラミング技術を採用しており、データワードのビットはNVMストレージアレイにシリアルに書き込まれる。消去の後、フラッシュセルは典型的に所与の論理値(例えば、論理1)にあり、よって論理1値のプログラミングは電力を消費せず、論理0のプログラミングは相当量の電力を消費する。電源電流を監視することにより、ハッカーはいつ論理0又は論理1がプログラムされたか検出することができる可能性がある。ビットが所与の順序(例えば、LSBからMSB、又はその逆)で書き込まれる場合、ハッカーはプログラムされたワードを容易に再構成することができる。
【0013】
ここで開示する本発明の実施形態は、NVMをサイドチャネル攻撃から保護するための回路及び方法を提供する。1つの実施形態において、ICはセキュアプログラミング回路(SPC)を含み、SPCはワードをランダムなビット順序でフラッシュアレイにプログラムするよう構成され、よってサイドチャネル攻撃が再構築できるのはプログラムされたワードビットの役に立たないランダムなシャッフルである。
【0014】
いくつかの実施形態において、SPCは、プログラムすべきワードを格納するよう構成されたプログラミングワードレジスタと、プログラムされるビットを計数するよう構成されたカウンタと、カウントのランダム順列を生成するよう構成されたスクランブラと、カウントのランダム順列に応じてプログラミングワードレジスタのビットを選択するよう構成されたマルチプレクサと、フラッシュアレイにおけるビットをマルチプレクサにより選択された値でプログラムするよう構成されたシリアルプログラミング回路とを含む。
【0015】
いくつかの実施形態において、スクランブラは、ランダムビットの可逆(例えば、三角)行列をカウントのバイナリ表現で乗算し、積にランダムビットのベクトルを加算することによりカウントのランダム順列を生成する。
【0016】
図1は、本発明の1つの実施形態による、サイドチャネル攻撃100の対象となるセキュア組み込みフラッシュ集積回路(IC)102を概略的に表すブロック図である。
【0017】
IC102は、プロセッサ104と、フラッシュメモリアレイ106とを含む(いくつかの実施形態において、他のタイプの不揮発性メモリが用いられてよい)。1つの実施形態において、フラッシュメモリアレイ106は複数のバンクを含み、各バンクは複数のワードを含み、各ワードは複数の個別の不揮発性セルを含む。いくつかの実施形態において、各セルは1ビットを格納する。
【0018】
プロセッサ104がバンクを消去するとき、バンクにおける全てのセルが既知の論理値にセットされる。従来、消去値は任意的に論理1として表され、このため消去されたバンクにおいて論理1をプログラムするためには如何なる動作も必要としない。
【0019】
フラッシュメモリアレイ106の消去されたバンクにワード(例えば、32ビット)をプログラムするため、プロセッサ104はセキュアプログラミング回路(SPC)108にプログラミング命令を送る。プログラミング命令は、SPCがプログラミングアドレスレジスタ110に格納するアドレスフィールドと、SPCがプログラミングデータレジスタ112に格納するデータフィールドとを含んでよい。マルチプレクサ114は、プログラミングデータレジスタのビットを順次選択し、選択されたビットをビットプログラマ回路116に転送し、ビットプログラマ回路116はプログラミングアドレスレジスタ110により指し示されたフラッシュメモリアレイワードで一度に1ビットづつプログラムするよう構成される。上述したように、プログラミングは論理0でのプログラミングデータレジスタビットのみに行われる。
【0020】
ハッカー118は、プログラマ回路116がフラッシュメモリアレイ106にプログラムするデータを読み出そうとする。ハッカーは、サイドチャネル攻撃を用いて、オシロスコープ122に入力される電流プローブ120を用いてIC102が消費する電源電流Iddを観察する。言及したように、IC102の電流消費は、プログラミング回路が論理0をプログラムするときのほうが論理1がプログラムされるときよりも高い。このため、オシロスコープスクリーンに表示される波形124を観察することにより、ハッカーはいつ論理0がプログラムされたかが分かる。
【0021】
しかし、
図1に表した例示的実施形態によると、プログラムされたビットの順序はランダムであり、ハッカーは書き込まれたデータワードを再構築することができない。例えば、IC102がフラッシュメモリアレイ106にセキュリティキーをプログラムする場合、ハッカーが読み出すキーはビットスクランブルされている。
【0022】
プログラミングデータレジスタ112のビットがプログラムされる順序をランダム化するため、SPC108は、プログラムされたビットを計数するよう構成されたカウンタ126と、一対一のランダムマッピングを用いてカウンタの出力をランダムにスクランブルするスクランブラ130とを更に含む。マルチプレクサ114はスクランブラ130の出力に結合され、このためプログラムすべきプログラミングデータレジスタ112のビットをランダムに選択する。例えば、8ビットプログラミングデータレジスタと仮定し、スクランブラ130はシーケンス2、7、0、1、5、3、4、6を出力してよく、これはプログラミング回路がフラッシュメモリにワードをプログラムする順序である。スクランブラ130の出力は、プログラミング回路116のビットアドレス入力でもある。
【0023】
本明細書及び特許請求の範囲において、様々な文法形式での用語「ランダム」(例えば、「ランダムな順序」、「ランダムなビット」、「ランダムな順列」等で用いられる)は、真にランダムな又は疑似ランダムの値又はイベントの両方を指す。
【0024】
サイドチャネル攻撃100の構成、及び
図1に表され上記で説明したSPC108を含むSPC102の構成は、概念の明確化のために挙げた例である。代替的な実施形態において他の構成が用いられてよい。例えば、1つの実施形態において、ハッカーが用いるサイドチャネル攻撃は、Vddピン(未図示)へのリターン電流であり得る。もう1つの実施形態において、ハッカーはプリント回路中の抵抗経路又は誘導経路にわたる電圧降下を測定し得る。いくつかの実施形態において、ハッカーはIC102から放射される電磁波を測定し、更に他の実施形態において、ハッカーは、マイクロフォン、赤外線検知器等といった他の手段を用い得る。
【0025】
1つの実施形態において、カウンタ126、スクランブラ130、プログラミングデータレジスタ112、及びマルチプレクサ128は必要でない。代わりに、プロセッサ104はスクランブルされた順序でビットをプログラミング回路116に送る。
【0026】
いくつかの実施形態において、フラッシュメモリアレイはセル毎に2つ以上のビットを格納する。例えば、1つの実施形態において、フラッシュメモリセルは、プログラムされない、軽度にプログラムされる、中程度にプログラムされる、又は強くプログラムされてよい。該4つの状態は、典型的に、それぞれ値00、01、10、11を有する2つの格納されたビットを表す(「弱く」、「中程度に」、「強く」は、フラッシュセルの浮遊ゲートにトラップされた電荷の測定値に関係する)。ハッカーは、Vdd電源からの電流を観察することにより、00、01、10、又は11がフラッシュメモリセルにプログラムされたか分かる。しかし、1つの実施形態において、ビットペアの順序はスクランブルされており、ハッカーはビットペアのスクランブルされた集合を取得することとなる。
【0027】
図2は、本発明の1つの実施形態によるセキュアなフラッシュプログラミングのための方法を概略的に表すフロー
図200である。該フロー図は、SPC108(
図1を参照)により実行される。
【0028】
該フロー図はプログラミングワード受け取り動作202で始まり、SPCはフラッシュメモリアレイ106(
図1を参照)にプログラムすべきアドレスワードとデータワードを含む(例えば、
図1におけるプロセッサ104から)プログラミング命令を受け取る。データワードは、例えば暗号化キーといった機密であってよい。
【0029】
次に、ランダム順列動作204において、ICはプログラミングワードの全ビットの順列マップを生成する。そのような順列マップは、ランダムな一対一マッピングを用いてプログラミングワードの各ビット位置を一意の位置にマッピングする。
【0030】
次いで、SPCはシリアルプログラミング動作206で、プログラミングデータワードのビットを、並べ替えられた順序に従ってプログラミング命令により指定されたアドレスで、フラッシュメモリアレイに順次プログラムする。例えば、プログラミングデータワードのビット0、1、2、3は2、1、0、3にマッピングされ、SPCは先ずプログラミングデータワードのビット2をプログラムし、次いでビット1、続いてビット0と3をプログラムする。動作206を実行した後、フロー図は終了する。
【0031】
このため、
図2に表す例示的なフロー図によると、SPCはプログラミングデータワードのビットを、プログラム命令により指示されたアドレスにランダムなビット順序で、フラッシュメモリアレイにプログラムし、サイドチャネル攻撃を困難にする。
【0032】
図2に表して上記で説明したフロー図は、例として挙げたものである。他の適切なフロー図が、代替的な実施形態において用いられてよい。例えば、いくつかの実施形態において、SPC108はプログラム命令を受け取る前に順列マップを準備する。1つの実施形態において、プログラミングデータワードのビットをプログラムしつつ、未だプログラムされていないビットからプログラムすべき次のランダムビットを決定する。
【0033】
順列方法
【0034】
実施形態において、順列マップを生成するための複数の方法が用いられてよい。
【0035】
図3は、本発明の1つの実施形態による順列マップを生成するための方法を概略的に表すフロー
図300である。該フロー図は、スクランブラ130(
図1を参照)により実行される。
【0036】
該フロー図は、ランダムベクトル生成動作302で開始され、スクランブラは、rnd
0~rnd
N-1で示すN個のランダムビット(以下にN=8について示す)のベクトルVを生成する。
【0037】
次に、行列M生成動作304で、SPCは可逆N×N行列を生成し、本例においては、主対角線に「1」の値、2つの三角形のうちの一方(主対角線上方の三角形又は主対角線下方の三角形)にランダムビット(R
i)、他方の三角形に「0」の値を有する、N×Nの三角行列Mである。例えば、下記のように(N=8について)、右上の三角形に乱数rnd
i、左下の三角形に「0」を有する右上対角行列が用いられてよい。
【0038】
ここで、SPCはカウントクリア動作306に進み、カウントレジスタをクリアし、これは第1のビット(0から開始)がこれからプログラムされることを示す。
【0039】
次に、SPCはVc生成動作308に進み、カウントのビットを含むベクトルVcを生成する(以下にN=8について示す)。
【0040】
次いで、順列ベクトル生成動作310で、SPCは下記に基づいて順列ベクトルVpを生成する。
【0041】
Vp=Vn+M×Vc
【0042】
ここで、加算はバイナリ排他的論理和である、又は、乗算はバイナリAND関数である。以下にN=8について動作310を示す。
【0043】
次いで、SPCはカウントチェック完了動作312で、最後のビット位置(カウント=2N-lに対応)の順列が並べ替えられたか否かをチェックし、並べ替えられた場合はフロー図を終了する。動作312において、カウントが完了していない場合、SPCはカウントインクリメント動作314に進み、カウントをインクリメントし、次いでカウントの次の値を並べ替えるため動作308に再び進む。
【0044】
図3に表して上記で説明したフロー
図300の構成は、例として挙げたものである。代替的な実施形態において、他の構成が用いられてよい。例えば、代替的な実施形態において、三角形に限らず、他の適切なタイプの可逆行列が用いられてよい。もう1つの例として、いくつかの実施形態において、Sattoloアルゴリズムが用いられる(例えば、M. Wilsonによる「Overview of Sattolo’s Algorithm」,Algorithms Seminar 2002-2004,F.Chyzak(ed.),INRIA,(2005),pp.105108を参照)。(ただし、Sattoloアルゴリズムはシーケンシャルではないため、使用する場合は順列ビットを1つずつ出力する適切な回路を追加する必要がある。)
【0045】
SPC108を含むIC102の構成は例示的な構成であり、
図1~
図3に表して上記で説明したフロー
図200及び300は概念を明確化するためにのみ示すフロー図である。代替的な実施形態において、任意の他の構成及びフロー図が用いられてよい。
【0046】
SPC108を含むIC102の異なるサブユニットが、1つ以上の特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)といった適切なハードウェア、ソフトウェア、又はハードウェアとソフトウェア要素の組合せを用いて実装されてよい。
【0047】
プロセッサ104及び/又はSPC108(
図1を参照)は、ここで説明する機能を行うためソフトウェアにおいてプログラムされる1つ以上の汎用プロセッサを含んでよい。ソフトウェアは、例えばネットワーク上又はホストからの電子形態でプロセッサにダウンロードされてよい、又は、代替的又は追加的に磁気、光学、又は電子メモリといった非一時的な有形媒体に提供及び/又は格納されてよい。
【0048】
ここで説明する実施形態は主にセキュアNVMプログラミングを対象としているが、ここで説明する方法及びシステムは他の応用にも用いることができる。
【0049】
よって、上述した実施形態は例として挙げたものであり、本発明は特に上記で示し説明したものに限定されないことを理解されたい。むしろ、本発明の範囲は、上述した様々な特徴の組合せ及び副次的な組合せの両方、並びに上記説明を読んで当業者が想到するであろう、先行技術には開示されていない、変形及び改変を含む。本特許出願に参照により組み込まれた文書は、本発明において参照により組み込まれた文献は、本明細書において明示的又は黙示的に行った定義と矛盾する形でこれらの組み込まれた文献内で定義された用語を除き、本願の不可欠な部分と見なされ、用語は本明細書における定義を考慮すべきである。
【産業上の利用可能性】
【0050】
本発明の方法及びシステムは、フラッシュメモリデバイスのセキュアプログラミングに応用されることができる。
【符号の説明】
【0051】
100:サイドチャネル攻撃
102:集積回路(IC)
104:プロセッサ
106:フラッシュメモリアレイ
108:セキュアプログラミング回路(SPC)
110:プログラミングアドレスレジスタ
112:プログラミングデータレジスタ
114、128:マルチプレクサ
116:ビットプログラマ回路
118:ハッカー
120:現在のプローブ
122:オシロスコープ
124:波形
126:カウンタ
130:スクランブラ
200、300:フロー図
202:プログラミングワード受け取り動作
204:ランダム順列動作
206:シリアルプログラミング動作
302:ランダムベクトル動作
304:行列生成動作
306:カウンタクリア動作
308:Vc生成動作
310:順列ベクトル生成動作
312:カウント完了チェック動作
Idd:電源電流
V:ベクトル
VDD:電源
【外国語明細書】