(57)【要約】【課題】不良アクセスが発生しやすい不揮発メモリからセキュアなロードシーケンスを行う場合、読み出したデータの管理を行わなければならず、メモリアクセス回数が増えてしまい、ロードする時間が長くなり、消費電力も増加してしまう。【解決手段】不揮発メモリ（ＮＡＮＤ型フラッシュＲＯＭ）１５のデータ領域に格納してある暗号化されたデータと不揮発メモリ１５の冗長部に格納してある付加情報をＮＡ不揮発メモリ１５から読み出し、暗号処理ユニット１６の暗号処理機能を用いてその暗号化されたデータを復号化と復号化したデータのハッシュ計算をするステップと、プロセッサ１１に関連付けられたセキュアメモリ１２内に復号化したデータを読み込むステップと、そのデータが真正であることを付加情報によって確認するステップと、を含む方法および当該方法を用いる装置を提供する。【選択図】図１
2009080515.tif 000002
【特許請求の範囲】
【請求項１】
セキュアなメモリと、
前記セキュアなメモリへのアクセス手段を持つプロセッサであって、不揮発なメモリにアクセス可能な状態で接続されるとともに、前記セキュアなメモリ内での使用を目的として前記不揮発なメモリからデータを読み出すことが可能なプロセッサと、
前記プロセッサに動作可能に接続されるとともに、前記不揮発なメモリから読み出されるデータに対する暗号処理が可能な暗号処理ユニットと、
を含み、
前記不揮発なメモリは、読み取り可能なデータ領域と、前記データ領域の付属情報を格納する冗長部からなるページが複数も設けられた記憶媒体であって、
前記不揮発なメモリはさらに、前記データ領域に暗号化されたデータを含む記憶媒体であって、
前記プロセッサは、前記暗号化されたデータを前記不揮発なメモリから読み出して前記暗号処理ユニットを使って復号化し、その復号化したデータを前記セキュアなメモリ内に保存する機能を有し、
前記暗号処理ユニットは前記暗号化されたデータを復号化したデータが真正であることを確認する機能を有することを特徴とする、セキュアなロードシーケンスを提供する装置。
【請求項２】
前記暗号処理ユニットは、前記不揮発なメモリの前記データ領域に格納される前記暗号化されたデータだけでなく、前記不揮発なメモリの前記冗長部に格納される前記データ領域の付属情報も取り扱うことができることを特徴とする請求項１に記載の、セキュアなロードシーケンスを提供する装置。
【請求項３】
前記暗号処理ユニットはさらに、前記暗号化されたデータを復号化したデータのハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と前記記憶媒体の前記冗長部の内容とを比較することによって、前記データが真正であることを確認する機能を有することを特徴とする請求項１に記載の、セキュアなロードシーケンスを提供する装置。
【請求項４】
前記不揮発なメモリの前記冗長部は、前記暗号化されたデータが暗号化される前のデータのハッシュ値から生成されたデータが保存されることを特徴とする請求項１に記載の、セキュアなロードシーケンスを提供する装置。
【請求項５】
前記プロセッサはさらに、セキュアな動作モードに入る機能を有し、前記セキュアなメモリには前記セキュアな動作モードでのみアクセス可能であることを特徴とする請求項１に記載の、セキュアなロードシーケンスを提供する装置。
【請求項６】
暗号化されたデータを記憶媒体から読み出すステップと、
プロセッサの暗号処理機能を用いて前記暗号化されたデータを復号化し、復号化したデータの真性を確認するための計算をするステップと、
前記復号化したデータを前記プロセッサに関連付けられたセキュアな記憶領域内に保存するステップと、
前記記憶媒体から読み出したデータに含まれる真性を確認する情報と、前記暗号処理機能が計算した真性を確認する情報を使って、前記復号化したデータが真正であることを確認するステップと、
を含むことを特徴とする、セキュアなロードシーケンスを提供する方法。
【請求項７】
前記記憶媒体は、読み取り可能なデータ領域と、前記データ領域の付属情報を格納する冗長部からなるページが複数設けられ、前記データ領域に前記暗号化されたデータを格納することを特徴とする請求項６に記載の、セキュアなロードシーケンスを提供する方法。
【請求項８】
前記復号化したデータが真正であることを確認するステップは、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と前記記憶媒体の前記冗長部の内容とを比較することを特徴とする請求項６に記載の、セキュアなロードシーケンスを提供する方法。
【請求項９】
前記記憶媒体の前記冗長部は、前記暗号されたデータが暗号化される前のハッシュ値が保存されることを特徴とする請求項６に記載の、セキュアなロードシーケンスを提供する方法。
【請求項１０】
前記プロセッサはさらに、セキュアな動作モードに入るステップを含むことを特徴とする請求項６に記載の、セキュアなロードシーケンスを提供する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ内にセキュアなロードシーケンスを提供する方法および装置に関するものである。
【背景技術】
【０００２】
プロセッサの起動コードなどのプログラムは、意図的なハッキングなどの外部要因にさらされやすい。ロードシーケンスとは、パワーオンリセットやプログラム分岐などのイベント発生により、起動コードなどのプログラムをフラッシュＲＯＭなどの不揮発メモリから読み出して、ＤＲＡＭなどの作業メモリに展開することである。あいにく不揮発メモリ内はセキュアではなく、起動前にハッカーが容易にその内容を改竄できる。これは結果として、機密情報を処理するシステム内において、大きな被害をもたらしうる。不揮発メモリの内容が改竄された可能性があるという事実により、起動後に施された任意のセキュリティ対策の効力が低減してしまう。実際、セキュアなロードシーケンスがなされなければ、以降の任意のセキュリティ対策は、十分に信頼性の高いものにはなるとは限らない。
【０００３】
これに対し、プロセッサ内にセキュアなロードシーケンスを提供する技術としては、例えば特許文献１があった。図１０は、前記特許文献1に記載された従来のプロセッサ内にセキュアなロードシーケンスを提供する装置を示すものである。
【０００４】
図１０において従来のプロセッサ内にセキュアなロードシーケンスを提供する装置は、暗号化された起動コードを起動ＲＯＭ１１０から読み出し、プロセッサ１０２に関連付けられたローカルメモリ１０４内に読み込むステップと、そのプロセッサ１０２の信頼性の高い復号化機能を用いてその暗号化された起動コードを復号化し、その起動コードが真正であることを確認するステップと、を含む装置で、暗号化した起動コードの真性を判断することで改竄を抑制していた。
【特許文献１】特開２００６−２２１６３２号公報（図１０）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、前記従来のプロセッサ内にセキュアなロードシーケンスを提供する装置では、暗号化されたデータを格納している不揮発メモリがＮＡＮＤ型フラッシュＲＯＭの場合、不良アクセスが発生するため、復号処理や真性の確認とは無関係に読み出したデータの管理を行わなければならず、メモリアクセス回数が増えるため、ロードする時間が長くなり、消費電力も増加するという課題を有していた。
【０００６】
本発明は、前記従来の課題を解決するもので、不良アクセスが発生しやすい不揮発メモリからセキュアなロードシーケンスを行う場合でも、メモリアクセス回数を削減し、ロードする時間の短縮と消費電力の削減を実現する装置および方法を提供することにある。
【課題を解決するための手段】
【０００７】
前記目的を達成するため、本発明は、セキュアなメモリと、前記セキュアなメモリへのアクセス手段を持つプロセッサであって、不揮発なメモリにアクセス可能な状態で接続されるとともに、前記セキュアなメモリ内での使用を目的として前記不揮発なメモリからデータを読み出すことが可能なプロセッサと、前記プロセッサに動作可能に接続されるとともに、前記不揮発なメモリから読み出されるデータに対する暗号処理が可能な暗号処理ユニットを有する。
【０００８】
好適には、前記不揮発なメモリは、読み取り可能なデータ領域と、前記データ領域の付属情報を格納する冗長部からなるページが複数も設けられた記憶媒体である。
【０００９】
好適には、前記不揮発なメモリはさらに、前記データ領域に暗号化されたデータを含む記憶媒体である。
【００１０】
好適には、前記プロセッサは、前記暗号化されたデータを前記不揮発なメモリから読み出して前記暗号処理ユニットを使って復号化し、その復号化したデータを前記セキュアなメモリ内に保存する機能を有する。
【００１１】
好適には、前記暗号処理ユニットは前記暗号化されたデータを復号化したデータが真正であることを確認する機能を有することを特徴とする。
【００１２】
好適には、前記暗号処理ユニットは、前記不揮発なメモリの前記データ領域に格納される前記暗号化されたデータだけでなく、前記不揮発なメモリの前記冗長部に格納される前記データ領域の付属情報も取り扱うことができることを特徴とする。
【００１３】
好適には、前記暗号処理ユニットはさらに、前記暗号化されたデータを復号化したデータのハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と前記記憶媒体の前記冗長部の内容とを比較することによって、前記データが真正であることを確認する機能を有することを特徴とする。
【００１４】
好適には、前記不揮発なメモリの前記冗長部は、前記暗号化されたデータが暗号化される前のデータのハッシュ値から生成されたデータが保存されることを特徴とする。
【００１５】
好適には、前記プロセッサはさらに、セキュアな動作モードに入る機能を有し、前記セキュアなメモリには前記セキュアな動作モードでのみアクセス可能であることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、不良アクセスが発生しやすい不揮発メモリからセキュアなデータをロードする場合、メモリアクセス回数を削減することでき、ロード時間の短縮と消費電力の削減をすることができる。
【発明を実施するための最良の形態】
【００１７】
以下本発明の実施形態について、図面を参照しながら説明する。
【００１８】
本実施形態に係るセキュアなロードシーケンスを提供する装置１０は、図１に示すように、プロセッサ１１、セキュアメモリ１２、（ＤＲＡＭなどの）システムメモリ１３、を有し、バス１４に対して、（ＮＡＮＤ型フラッシュＲＯＭなどの）不揮発メモリ１５、暗号処理ユニット１６、が接続されている。
【００１９】
さらに暗号処理ユニット１６は、図２に示すように、入力インターフェース２１、復号化ユニット２２、ハッシュ関数ユニット２３、出力インターフェース２４から構成される。
【００２０】
本実施形態のセキュアなロードシーケンスを提供する装置１０は、以下の特徴を有している。
【００２１】
プロセッサ１１は暗号処理ユニット１６の復号化ユニット２２に、不揮発メモリ１５から読み出させる復号処理すべきデータの、ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）といった復号処理のアルゴリズムと、ＥＣＢ（Electronic Code Book）モードやＣＢＣ（Cipher Block Chaining）モードやカウンタモード（Counter Mode）といった復号処理のモードを指示する。
【００２２】
これにより、不揮発メモリ１５から読み出される暗号化されたデータに対して、復号化処理の方法が確定する。
【００２３】
また、本実施形態のセキュアなロードシーケンスを提供する装置１０は、以下の特徴も有する。
【００２４】
プロセッサ１１は暗号処理ユニット１６のハッシュ関数ユニット２３に、復号化ユニット２２で復号処理されたデータに対する、SHA-1（Secure Hash Algorithm）やMD5（Message Digest Algorithm 5）といったハッシュ関数のアルゴリズムと、ハッシュ計算で得られたハッシュ値の使い方を指示する。
【００２５】
これにより、不揮発メモリ１５から読み出される暗号化されたデータに対して、真性の判定方法が確定する。
【００２６】
本実施形態のセキュアなロードシーケンスを提供する装置１０においては、プロセッサ１１からの指示により、バス１３に接続された不揮発メモリ１５から、暗号化されたデータが読み出され、暗号処理ユニット１６に入力されるデータアクセスが発生する。
【００２７】
この時、データアクセスを容易にするメカニズムとして、例えばダイレクト・メモリ・アクセス（ＤＭＡ）技術など、任意の既知の技術を用いてもよい。
【００２８】
また、不揮発メモリ１５は、読み取り可能なデータ領域と、そのデータ領域の付属情報を格納する情報とからなるページが複数設けられている。不揮発メモリ１５からのデータ読出しは、そのページ単位で行われる。暗号化されたデータは、データ領域に格納されている。
【００２９】
暗号化処理ユニット１６の入力インターフェース２１は、入力されたデータが不揮発メモリ１５のデータ領域ならば復号化ユニット２２へ、冗長部ならばハッシュ関数ユニット２３へ入力する。
【００３０】
復号化ユニット２２は、入力インターフェース２１から入力されたデータをプロセッサ１１から指示された内容に従って、復号処理してハッシュ関数ユニット２３と出力インターフェース２４に入力する。
【００３１】
ハッシュ関数ユニット２３は、復号化ユニットから入力されたデータ（復号処理されたデータ）をプロセッサ１１から指示された内容に従って、ハッシュ関数処理を行う。ハッシュ関数ユニット２３が出力するデータは、ハッシュ関数ユニット２３に入力されたデータのままであり、出力インターフェース２４へ入力される。
【００３２】
また、ハッシュ関数ユニット２３は、プロセッサ１１から指示された内容に従って、入力インターフェース２１から入力されたデータを、ハッシュ関数処理の結果と比較し、プロセッサ１１に通知する。
【００３３】
出力インターフェース２４は、復号処理だけを行う場合は、復号化ユニット２２からの入力を、復号処理とハッシュ関数処理を行う場合は、ハッシュ関数ユニット２３からの入力をそのまま出力し、暗号処理ユニット１６の出力とする。本実施形態では、復号処理とハッシュ関数処理を行うのでハッシュ関数ユニット２３からの入力を出力するケースに限定する。
【００３４】
プロセッサ１１からの指示により、暗号処理ユニット１６の出力は、セキュアメモリ１２に格納されるデータアクセスが発生する。
【００３５】
この時、データアクセスを容易にするメカニズムとして、例えばダイレクト・メモリ・アクセス（ＤＭＡ）技術など、任意の既知の技術を用いてもよい。
【００３６】
ただし、プロセッサ１１からの指示はセキュアな動作モードの時に限定される。これは、セキュアメモリ１２に格納されるデータが復号化しており機密性の高い情報となっているためである。
【００３７】
プロセッサ１１は、暗号処理ユニット１６のハッシュ関数ユニット２３の結果を参照することで、セキュアメモリ１２に格納したデータ（復号処理したデータ）が真性であるかどうかを判定する。
【００３８】
以下に、従来技術と比較しながらセキュアなロードシーケンス処理における各部の構成および機能について具体的に説明する。
【００３９】
図３は、一般的なセキュアなロードシーケンスの処理ステップを示す図である。
【００４０】
動作３１では、プロセッサ１１は、暗号化されたデータをハードウエアの保存場所から読み出し、復号化してセキュアなメモリ１２内に保存する。動作３２では、そのプロセッサ１１は、データが改竄されていないことを証明する。例えば、そのプロセッサ１１は、ハッシュ関数を実行することでハッシュ結果を生成し、さらにそのハッシュ結果と予め定められたハッシュ値とを比較することによって、起動コードが真正であることを確認（証明）できる。
【００４１】
動作３３では、復号化したデータが変更されているか否か（例えば、ハッカーにより改竄されているか否か）についての決定がなされる。もし、その決定の結果が肯定的なものである（データが変更されている）場合、処理の流れは、適切な動作が行われる例外処理に進むのが好ましい。その適切な動作の例として、初期化処理へ強制的に移行することが挙げられる。もし、動作３３での決定の結果が否定的なものである（データが変更されていない）場合、ロードシーケンスは完了し、プロセッサ１１は処理の続行が可能になる。
【００４２】
図４は、本発明の実施形態による不揮発メモリ１５の一例であるNAND型フラッシュROMのページ構造とブロック構造の具体例を示した図である。
【００４３】
図４に示すように、NAND型フラッシュROMは、複数の物理的なメモリブロックに分割されている（例えば、３２M Byte CMOS NAND EEPROMの場合、２０４７個）。消去時の最小単位となっている。１ブロックはさらに複数のページに分割される（例えば、３２M Byte CMOS NAND EEPROMの場合、Page０〜Page３１の３２ページ）。１ページは書き込みおよび読出しの基本的な単位となる。1ページは５２８バイト（または２１１２バイト）から構成され、うち５１２バイト（１ページが２１１２バイトならば２０４８バイト）はユーザーデータ領域（データ部）、残り１６バイト（１ページが２１１２バイトならば６４バイト）は通常、エラー訂正符号および管理情報等の付属情報の格納（冗長部）に使用される。
【００４４】
図５は、本発明の実施形態による不揮発メモリ１５の一例であるNAND型フラッシュROMの一般的な冗長部の使われ方を示した図である。
【００４５】
図５に示すように、それぞれのページの冗長部（付属情報）は、予約領域（第５１２バイト〜第５１５バイト）、データ・ステータス領域（第５１６バイト）、ブロック・ステータス領域（第５１７バイト）、ブロックアドレス領域１（第５１８バイト〜第５１９バイト）、ＥＣＣ領域１（第５２０バイト〜第５２２バイト）、ブロックアドレス領域２（第５２３バイト〜第５２４バイト）、ＥＣＣ領域２（第５２５バイト〜第５２７バイト）からなっている。
【００４６】
データ・ステータス領域およびブロック・ステータス領域（第５１７バイト）は、データの正常性を示す。
【００４７】
ブロックアドレス領域１（第５１８バイト〜第５１９バイト）は、物理アドレスと論理アドレスの変換情報を格納する。ブロックアドレス領域２（第５２３バイト〜第５２４バイト）は、ブロックアドレス領域１のバックアップである。
【００４８】
ＥＣＣ領域１（第５２０バイト〜第５２２バイト）は、データ領域の前半２５６バイト分の３バイトＥＣＣコードである。ＥＣＣ領域２（第５２５バイト〜第５２７バイト）は、データ領域の後半２５６バイト分の３バイトＥＣＣコードである。ここでＥＣＣ（Error Correction Code）とはエラー訂正のための符号をさす。システムはこのエラー訂正用の符号を利用し、読み出したデータにエラーがあるか否かを判定し、エラーが存在する場合、エラーを訂正することができる。
【００４９】
このように、それぞれのページの冗長部（付属情報）には、データ領域に暗号化されたデータを格納しても、暗号化された前のデータとは関係のない情報が格納されることが一般的である。
【００５０】
まず、従来技術のセキュアなロードシーケンス処理における各部の構成および機能を説明していく。最初に、暗号化されたデータを格納している不揮発メモリが、従来技術が想定しているＮOR型フラッシュＲＯＭのような不良アクセスの管理を必要としない場合について説明する。
【００５１】
図６は、従来技術のセキュアなロードシーケンス処理において、暗号化されたデータを格納している不揮発メモリが、ＮOR型フラッシュＲＯＭのような不良アクセスの管理を必要としない場合のデータアクセスを示した図である。
【００５２】
図６に示すように、セキュアなロードシーケンス処理が開始すると、プロセッサ１０２からの指示によって、起動ＲＯＭ１１０から暗号化されたデータが読みだされ、復号化ユニット１１２に入力される（６１）。
【００５３】
復号化ユニット１１２は、入力されたデータをプロセッサ１０２の指示に従って復号処理を行う。例えば、復号処理のアルゴリズムとして、ＡＥＳ（Advanced Encryption Standard）が指示された場合、復号処理のデータ単位（ブロック演算の単位）が１６バイトなので、復号化ユニット１１２は、暗号化されたデータが１６バイト入力されるごとに復号化したデータを１６バイト出力していく。
【００５４】
プロセッサ１０２は、復号化ユニット１１２が出力するデータをローカルメモリ１０４に格納していく（６２）。ローカルメモリ１０４への格納とは並行してプロセッサ１０２は、復号化ユニット１１２が出力するデータに対してハッシュ関数処理を行う。例えば、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）ならば、ロード対象のデータを全てローカルメモリ１０４に格納した時点で、６４バイトのメッセージ長を持つハッシュ値が確定する。
【００５５】
ロード対象のデータを全てローカルメモリ１０４に格納すると、プロセッサ１０２からの指示によって、起動ＲＯＭ１１０から暗号化されたハッシュ値が読み出される（６３）。そのハッシュ値は、ロードされる対象となる暗号化されたデータの暗号化される前のものに対するハッシュ関数の結果である。例えば、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）ならば、６４バイトのメッセージ長を持つハッシュ値である。ハッシュ値の暗号化は、必須ではないが、ハッシュ値の信頼性を高いものとするために暗号化することが望ましい。
【００５６】
暗号化されたハッシュ値は、復号化ユニット１０２によって復号処理される。プロセッサ１０２は、復号化されたハッシュ値とハッシュ関数の結果と比較し、データが改竄されていないかを判断する。
【００５７】
次に、暗号化されたデータを格納している不揮発メモリが、ＮＡＮＤ型フラッシュＲＯＭのような不良アクセスの管理を必要とする場合について説明する。
【００５８】
図７は、従来技術のセキュアなロードシーケンス処理において、暗号化されたデータを格納している不揮発メモリが、ＮＡＮＤ型フラッシュＲＯＭのような不良アクセスの管理を必要とする場合のデータアクセスを示した図である。
【００５９】
図７に示すように、セキュアなロードシーケンス処理が開始すると、プロセッサ１０２からの指示によって、起動ＲＯＭ１１０から暗号化されたデータが読み出される（７１）。
【００６０】
プロセッサ１０２は、読み出されたデータを、システムメモリ１０６へ格納するが（７２）、並行してあらかじめ決められた誤り訂正方式に従って、ＥＣＣコードを計算していく。起動ＲＯＭ１１０から１ページ分のデータ領域を格納した時点で、ＥＣＣコードが確定する。
【００６１】
起動ＲＯＭ１１０から１ページ分のデータ領域が読み出されると、続いて冗長部が読み出される。プロセッサ１０２は冗長部に含まれるＥＣＣコードを利用し、起動ＲＯＭ１１０から読み出してシステムメモリ１０６へ格納したデータにエラーがあるかどうかを判定し、エラーが存在する場合、誤り訂正ができなければ1ページ分再度読み出しを行う。再度読み出しデータが再度エラー判定されることが特定回数続いたら、起動ＲＯＭ１１０の内容が破壊されていると判断する。
【００６２】
システムメモリ１０６へ1ページ分のデータが格納されると、プロセッサ１０２からの指示によって、システムメモリ１０６から暗号化されたデータが読みだされ、復号化ユニット１１２に入力される（７３）。
【００６３】
復号化ユニット１１２は、入力されたデータをプロセッサ１０２の指示に従って復号処理を行う。例えば、復号処理のアルゴリズムとして、ＡＥＳ（Advanced Encryption Standard）が指示された場合、復号処理のデータ単位（ブロック演算の単位）が１６バイトなので、復号化ユニット１１２は、暗号化されたデータが１６バイト入力されるごとに復号化したデータを１６バイト出力していく。
【００６４】
プロセッサ１０２は、復号化ユニット１１２が出力するデータをローカルメモリ１０４に格納していく（７４）。ローカルメモリ１０４への格納とは並行してプロセッサ１０２は、復号化ユニット１１２が出力するデータに対してハッシュ関数処理を行う。例えば、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）ならば、ロード対象のデータを１ページ分ローカルメモリ１０４に格納した時点で、６４バイトのメッセージ長を持つハッシュ値が確定する。
【００６５】
ロード対象のデータを１ページ分ローカルメモリ１０４に格納すると、プロセッサ１０２からの指示によって、起動ＲＯＭ１１０から暗号化されたハッシュ値が読み出される（７５）。そのハッシュ値は、ロードされる対象となる暗号化されたデータの暗号化される前のものに対するハッシュ関数の結果である。例えば、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）ならば、６４バイトのメッセージ長を持つハッシュ値である。ハッシュ値の暗号化は、必須ではないが、ハッシュ値の信頼性を高いものとするために暗号化することが望ましい。
【００６６】
プロセッサ１０２は、読み出されたデータを、システムメモリ１０６へ格納するが（７６）、並行してあらかじめ決められた誤り訂正方式に従って、ＥＣＣコードを計算していく。起動ＲＯＭ１１０から１ページ分のデータ領域を格納した時点で、ＥＣＣコードが確定する。
【００６７】
起動ＲＯＭ１１０から１ページ分のデータ領域が読み出されると、続いて冗長部が読み出される。プロセッサ１０２は冗長部に含まれるＥＣＣコードを利用し、起動ＲＯＭ１１０から読み出してシステムメモリ１０６へ格納したデータにエラーがあるかどうかを判定し、エラーが存在する場合、再度読み出しができなければ1ページ分再度読み出しを行う。再度読み出しデータが再度エラー判定されることが特定回数続いたら、起動ＲＯＭ１１０の内容が破壊されていると判断する。
【００６８】
システムメモリ１０６へ1ページ分のデータが格納されると、プロセッサ１０２からの指示によって、システムメモリ１０６から暗号化されたハッシュが読み出される（７７）。
【００６９】
暗号化されたハッシュ値は、復号化ユニット１０２によって復号処理される。プロセッサ１０２は、復号化されたハッシュ値とハッシュ関数の結果と比較し、データが改竄されていないかを判断する。
【００７０】
このように、従来技術では起動ROM１１０がNAND型フラッシュROMのように不良アクセスの管理が必要なものになると、読み出したデータにエラーがあるか否かを判定するために、一旦システムメモリ１０６へ書き出さなければならず、復号処理やハッシュ関数処理とは無関係にメモリアクセスが増加してしまう。
【００７１】
これに対して、本発明のセキュアなロードシーケンス処理における各部の構成および機能を説明していく。
【００７２】
図８は、本発明の実施形態による不揮発メモリ１５の一例であるNAND型フラッシュROMの本発明での冗長部の使われ方を示した図である。
【００７３】
図８では、本発明での冗長部の使い方として３つのケースを示している。
【００７４】
ケース１は、一般的な冗長部の使われ方で予約領域（第512バイト〜第515バイト）だったところに、暗号情報格納領域（第0バイト〜第511バイト）に格納するデータの暗号化前のものに対して求めたハッシュ値の一部を暗号化して格納するものである。
【００７５】
ケース２は、冗長部に暗号化前のものに対して求めたハッシュ値の一部を暗号化して格納するものである。
【００７６】
例えば、データ領域が５１２バイト、冗長部が１６バイト、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）とします。ハッシュ値のメッセージ長は６４バイトなので、５１２バイトのデータに対して求めたハッシュ値のうち確保したバイト数だけを格納するやり方や、複数ページ分のデータに対して求めたハッシュ値を分割して格納するやり方である。
【００７７】
ケース１、ケース２の場合、ハッシュ値を作成した順番どおりにページを読み出すことになる。
【００７８】
ケース３は、冗長部に暗号化前のものに対して求めたハッシュ値を暗号化して格納するものである（ケース３）。例えば、データ領域が２０４８バイト、冗長部が６４バイト、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）である場合である。
【００７９】
いずれのケースにせよ、従来技術では考慮しなかった、データ領域の暗号化前のデータに対して求めたハッシュ値が格納される。さらに、ハッシュ値の信頼性を高いものとするために暗号化することが望ましい。
【００８０】
ここでは、冗長部の使われ方がケース３として説明していく。
【００８１】
図９は、本発明のセキュアなロードシーケンス処理において、暗号化されたデータを格納している不揮発メモリが、ＮＡＮＤ型フラッシュＲＯＭのような不良アクセスの管理を必要とする場合のデータアクセスを示した図である。
【００８２】
図９に示すように、セキュアなロードシーケンス処理が開始すると、プロセッサ１１からの指示によって、不揮発メモリ１５から暗号化されたデータ（データ領域）が読みだされ、暗号処理ユニット１６に入力される（９１）。
【００８３】
暗号処理ユニット１６に入力された暗号化データは、データ領域なので入力インターフェース２１によって復号化ユニット２２に入力される。復号化ユニット２２は、プロセッサ１１の指示に従って復号処理を行う。例えば、復号処理のアルゴリズムとして、ＡＥＳ（Advanced Encryption Standard）が指示された場合、復号処理のデータ単位（ブロック演算の単位）が１６バイトなので、復号化ユニット２２は、暗号化されたデータが１６バイト入力されるごとに復号化したデータを１６バイト出力していく。
【００８４】
復号化ユニット２２で復号化されたデータは、ハッシュ関数ユニット２３に入力される。ハッシュ関数ユニット２３は、入力されたデータに対してハッシュ関数処理を行う。例えば、ハッシュ関数のアルゴリズムがSHA-1（Secure Hash Algorithm）ならば、１ページ分のデータを全てローカルメモリ１０４に格納した時点で、６４バイトのメッセージ長を持つハッシュ値が確定する。ハッシュ関数ユニット２３は入力されるデータをそのまま出力し、出力インターフェース２４に入力する。
【００８５】
出力インターフェース２４は、ハッシュ関数ユニット２３からの入力を出力とし、これが、暗号処理ユニット１６の出力となる。
【００８６】
プロセッサ１１は、暗号処理ユニット１６が出力するデータをセキュアメモリ１２に格納していく（９２）。
【００８７】
この時、プロセッサ１１はセキュアな動作モードでなければならない。これは、セキュアメモリ１２に格納するデータは復号化したものであり、機密性が高くなっているからである。
【００８８】
暗号処理ユニット１６に１ページ分（２０４８バイト）の暗号化データが入力された後（すなわちセキュアメモリ１２に1ページ分の復号化データが格納された後）、続いて不揮発メモリ１５から暗号化されたハッシュ値を格納した冗長部（６４）が読み出されはじめる。この時点で暗号処理ユニット１６のハッシュ関数ユニット２３では、入力されたデータに対するハッシュ値（６４バイト）が確定している。
【００８９】
不揮発メモリ１５から読み出された暗号化ハッシュ値は、冗長部なので暗号処理ユニット１６の入力インターフェース２１によってハッシュ関数ユニット２３で復号処理される。ハッシュ関数ユニット２３は、復号化されたハッシュ値とハッシュ関数の結果と比較し、その結果をプロセッサ１１にハードウエア割込みなどの方法で通知する。
【００９０】
比較結果が一致しなかった場合、プロセッサ１１は、1ページ分再度読み出しを行う。再度読み出しデータの比較結果が再度一致しないことが特定回数続いたら、不揮発メモリ１５の内容が破壊または改竄されていると判断する。
【００９１】
以上説明したように、本実施形態によれば、不良アクセスの管理が必要である不揮発メモリからセキュアなデータロードを行う場合、不揮発メモリのアクセス単位の一部である冗長部にデータ領域の暗号化前のデータに対して求めたハッシュ値を格納することで、暗号処理に必要なデータアクセスだけで、不良アクセスと改竄の判断をかねること可能とした。
【００９２】
従来技術では不良アクセス管理のため一旦作業メモリに展開するという、暗号処理とは無関係なデータアクセスが発生していたが、本発明では、暗号処理に必要なデータアクセスだけに抑えることができ、データロード時間の短縮と消費電力の削減をすることができる。
【産業上の利用可能性】
【００９３】
本発明は、不良アクセス管理が必要である不揮発メモリからセキュアなデータロードを行う場合、暗号処理に必要なデータアクセスだけに抑えることで、データロード時間の短縮と消費電力の削減をすることができ、実施例で説明したように、データロードを行う不揮発メモリがNANDフラッシュROMの場合、従来手法に対する優位性がでてくる。
【００９４】
例えば近年、携帯電話に代表される携帯端末機器では、コンテンツ保護されたデータ（例えば配信音楽やIPパケット）やセキュアなプログラム（例えばDRM制御）など暗号化されたデータのロード処理が増加傾向にある。
【００９５】
高機能化・他機能化によってデータとプログラムを格納する不揮発メモリに要求される容量も年々増加しており、現在主流であるNOR型フラッシュROMは、信頼性は高いが小容量で高価であるためコストアップが大きな問題となっている。コストアップを回避するために、信頼性は低いが大容量で安価であるNAND型フラッシュROMに移行していくことが将来予想される。
【００９６】
このような背景を踏まえると、本発明のセキュアなデータロードを提供する装置は、携帯電話に代表される携帯端末への搭載が有用である。
【００９７】
また、デジタルＴＶやＤＶＤレコーダでもスクランブルされたデータだけでなく、外部メディア（例えばＳＤカード）に格納されたコンテンツ保護されたデータを取り扱うようになって暗号化されたデータは増加傾向にあるので、これらへの搭載も有用である。
【図面の簡単な説明】
【００９８】
【図１】本発明のセキュアなロードシーケンスを提供する装置の一例を示す図
【図２】セキュアなロードシーケンスを提供する装置１０の暗号処理ユニット１６の構成例を示すブロック図
【図３】一般的なセキュアなロードシーケンスの処理ステップを示す図
【図４】本発明の実施形態による不揮発メモリ１５の一例であるNAND型フラッシュROMのページ構造とブロック構造の具体例を示した図
【図５】本発明の実施形態による不揮発メモリ１５の一例であるNAND型フラッシュROMの一般的な冗長部の使われ方を示した図
【図６】従来技術のセキュアなロードシーケンス処理において、暗号化されたデータを格納している不揮発メモリが、ＮOR型フラッシュＲＯＭのような不良アクセスの管理を必要としない場合のデータアクセスを示した図
【図７】従来技術のセキュアなロードシーケンス処理において、暗号化されたデータを格納している不揮発メモリが、ＮＡＮＤ型フラッシュＲＯＭのような不良アクセスの管理を必要とする場合のデータアクセスを示した図
【図８】本発明の実施形態による不揮発メモリ１５の一例であるNAND型フラッシュROMの本発明での冗長部の使われ方を示した図
【図９】本発明における転送終了付近以外で中断指示が発生した時の暗号処理するデータの切り替わりを示す図
【図１０】従来のセキュアなデータロードを提供する装置を示すブロック図
【符号の説明】
【００９９】
１０    セキュアなデータロードを提供する装置
１１    プロセッサ
１２    セキュアメモリ
１３    システムメモリ
１４    バス
１５    不揮発メモリ
１６    暗号処理ユニット
２１    入力インターフェース
２２    復号化ユニット
２３    ハッシュ関数ユニット
２４    出力インターフェース
【図１】
2009080515.tif 000003
【図２】
2009080515.tif 000004
【図３】
2009080515.tif 000005
【図４】
2009080515.tif 000006
【図５】
2009080515.tif 000007
【図６】
2009080515.tif 000008
【図７】
2009080515.tif 000009
【図８】
2009080515.tif 000010
【図９】
2009080515.tif 000011
【図１０】
2009080515.tif 000012