(57)【要約】【課題】バスインターフェースを介して通信する暗号化データを逐次検証し、攻撃者が通信される暗号化されたデータを改ざんし、若しくは危害を加えるか否か検証する改良方法とシステムを提供する。【解決手段】データ検証方法であって、複数のデータワードの第１のシーケンスを生成し、複数の署名ワードの第２のシーケンスを計算し、前記第２のシーケンスを前記第１のシーケンスにインタリーブしてインタリーブシーケンスを生成し、前記インタリーブシーケンスにおける各与えられた署名ワードは、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードに対して累積して署名を行い、インターフェースを介して前記インタリーブシーケンスを伝送することを含む。【選択図】図１
2015062286.tif 000002
【特許請求の範囲】
【請求項１】
データ検証方法であって、
複数のデータワードの第１のシーケンスを生成し、
複数の署名ワードの第２のシーケンスを計算し、前記第２のシーケンスを前記第１のシーケンスにインタリーブしてインタリーブシーケンスを生成し、前記インタリーブシーケンスにおける各与えられた署名ワードは、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードに対して累積して署名を行い、
インターフェースを介して前記インタリーブシーケンスを伝送することを含む、
ことを特徴とするデータ検証方法。
【請求項２】
前記インターフェースから前記インタリーブシーケンスを受信することと、
前記各署名ワードを使用して、前記インタリーブシーケンスにおける当該前の署名ワードにより検証された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードを逐次検証することと、をさらに含む、
ことを特徴とする請求項１に記載のデータ検証方法。
【請求項３】
前記署名ワードの前記第２シーケンスを計算することは、
線形フィードバックシフトレジスタが前記データワードに適用されることと、
非線形関数が前記線形フィードバックシフトレジスタの出力に適用されることと、
を含むことを特徴とする請求項１に記載のデータ検証方法。
【請求項４】
前記署名ワードの前記第２のシーケンスを計算することは、
前記与えられた署名ワードの複数のビットの第１のサブセットを設定し、前記インタリーブシーケンスにおける前記与えられた署名ワードの前の前記データワードに対して署名を行い、
エラー検出コードから前記署名ワードが与えられた前記ビットの第２のサブセットを導出し、
前記エラー検出コードは前記データワードにおける少なくともそれらのうちの一つを介して計算されるものであり、前記メモリの中に記憶することを含む、
ことを特徴とする請求項１に記載のデータ検証方法。
【請求項５】
前記インターフェースから前記インタリーブシーケンスを受信し、
前記署名ワードから前記ビットの前記第１サブセットと第２サブセットを取得し、
前記第１のサブセットを使用して、前記インターフェースを介して伝送される前記データの整合性を評価し、
前記第２のサブセットを使用して、前記データワードが記憶された前記メモリにおける前記整合性を評価することを含む、
ことを特徴とする請求項４に記載のデータ検証方法。
【請求項６】
データ検証用装置であって、
メモリと、
複数のデータワードの第１のシーケンスを生成するように構成されてインターフェースを介して送信し、複数の署名ワードの第２のシーケンスを計算し、前記第２のシーケンスを前記第１のシーケンスにインタリーブして、インタリーブシーケンスを生成し、インターフェースを介して前記インタリーブシーケンスを伝送するメモリ検証ユニットと、
を含み、
前記インタリーブシーケンスにおける与えられた各署名ワードは、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードに対して累積して署名を行うことを特徴とするデータ検証用装置。
【請求項７】
前記インターフェースから前記インタリーブシーケンスを受信するように構成され、前記各与えられた署名ワードを使用して、前記インタリーブシーケンスにおける当該前の署名ワードにより検証された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードを検証するホストを含む、
ことを特徴とする請求項６に記載のデータ検証用装置。
【請求項８】
前記メモリ検証ユニットは、線形フィードバックシフトレジスタがデータワードに適用されるように構成され、非線形関数が前記線形フィードバックシフトレジスタの出力に適用されるように構成されて、前記署名ワードの前記第２のシーケンスを計算する、
ことを特徴とする請求項６に記載のデータ検証用装置。
【請求項９】
前記メモリ検証ユニットは、前記与えられた署名ワードにおける複数のビットの第１のサブセットを設定するように構成されて、前記インタリーブシーケンスにおける前記与えられた署名ワードが前の前記データワードに対して署名を行い、エラー検出コードから前記与えられた署名ワードの前記ビットの第２のサブセットを導出し、前記エラー検出コードは前記データワードにおける少なくともそれらのうちの一つを介して計算されるものであり、前記メモリの中に記憶する、
ことを特徴とする請求項６に記載のデータ検証用装置。
【請求項１０】
前記インターフェースから前記インタリーブシーケンスを受信するように構成され、且つ前記署名ワードから前記ビットの前記第１サブセットと第２サブセットを取得し、前記第１のサブセットを使用して、前記インターフェースを介して伝送される前記データの整合性を評価し、前記第２のサブセットを使用して、前記データワードが記憶された前記メモリにおける前記整合性を評価するホストを含む、
ことを特徴とする請求項９に記載のデータ検証用装置。
【請求項１１】
データ検証方法であって、
インターフェースを介して複数のデータワードの第１のシーケンスと複数の署名ワードの第２のシーケンスから形成されるインタリーブシーケンスを受信して、各与えられた署名ワードが前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データに対して累積して署名を行い、
前記署名ワードの前記第２のシーケンスを使用して前記データワードの前記第１のシーケンスを逐次検証することを含む、
ことを特徴とするデータ検証方法。
【請求項１２】
データ検証用装置であって、
インターフェースを介して複数のデータワードの第１のシーケンスと複数の署名ワードの第２のシーケンスから形成されるインタリーブシーケンスを受信して、各署名ワードが前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データに対して累積して署名を行ない、前記署名ワードの前記第２のシーケンスを使用して前記データワードの前記第１のシーケンスを逐次検証する検証ユニットと、
前記署名を経たデータワードを処理するように設けられるプロセッサと、
を含むことを特徴とするデータ検証用装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータセキュリティに関し、特に暗号データを検証する方法およびシステムに関する。
【背景技術】
【０００２】
データ検証方法は例えばパスワード攻撃等の複数の用途に遭遇するのを回避することができる。具体的には、ここで米国特許第８４２９５１３号明細書を引用して記載された内容を参考とすれば、プログラマブルメモリにおけるコードの整合性を検証する方法が記載されている。記載されている方法は、安全ではないメモリからコードを受信することを含み、かつ安全ではないメモリからコードを受信するとき、このコードに対して誤り検出ビットを付与し、併せてコードと誤り検出ビットをプログラマブルメモリの中に記憶すると共に、プログラマブルメモリの中に記憶されたコードと誤り検出ビットに対して検証検査を行い、プログラマブルメモリの中に記憶されたコートの整合性を検証する。
【０００３】
ここで米国特許出願公開第２０１２／０１０２３０７号明細書を引用して記載された内容を参考とすれば、安全資産管理ユニット（secure asset management unit，SAMU）を含み、センシティブコードとデータの安全な執行環境について記載されている。安全資産管理ユニットは、安全な執行環境を提供することによりセンシティブコードを操作し、例えば、センシティブコードは、内容消費に対してセットアップされたコピー保護方式と関係するコードである。安全資産管理ユニットのアーキテクチャは、ハードウェアの安全な起動とメモリ保護に基づいた許可をすると共に、ホストプロセッサが提供するコードはオンデマンドコード（on-demand code）の執行を提供するものである。安全資産管理ユニットは、既に暗号化され署名されたキーコードに基づいて起動することができ、かつ既に暗号化され、署名されたコードを執行する。ハードウェアの安全な配置に基づいて、縦向き或いは横向きの特権違反（privilege violations）を防止するのを簡単にすることができる。
【０００４】
ここで引用された米国特許出願公開第２００６／０２５３７０８号明細書に記載された内容を参照すると、可変データの少なくとも一つのデータブロックを、マイクロプロセッサ外部の第１の揮発性メモリの中に記録するための方法が記載されている。この方法は計算とデジタル署名を格納することを含み、このデジタル署名は、上述したデータブロックのメモリ内の少なくとも部分的なアドレスと内容及びマイクロプロセッサの少なくとも一つのランダムビットを考慮に入れる。
【０００５】
ここで引用されたオーストラリア特許出願公開第２００１／０２７０７４号明細書に記載された内容を参照すると、データ有効に確定する技術が記載されている。部分データの検証過程は、内容の部分的なデータを用いるための組み合わせであり、整合性部分データを複数のチェック値に整理することにより行われ、かつ部分データのその組み合わせ全体の検証過程は、部分的な整合性チェック値検証（integrity-check-value-verifying）を整理する整合性チェック値により行われ、上述した整合性チェック値は、部分的な整合性チェック値の組み合わせに対して検証が行われる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上述の問題点に鑑みてなされたものであり、バスインターフェースを介して通信する暗号化データを逐次検証し、攻撃者が通信される暗号化されたデータを改ざんし、若しくは危害を加えることを低減することができる方法とシステムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
データ検証方法であって、
複数のデータワードの第１のシーケンスを生成し、
複数の署名ワードの第２のシーケンスを計算し、前記第２のシーケンスを前記第１のシーケンスにインタリーブしてインタリーブシーケンスを生成し、前記インタリーブシーケンスにおける各与えられた署名ワードは、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードに対して累積して署名を行い、
インターフェースを介して前記インタリーブシーケンスを伝送することを含む。
【０００８】
前記インターフェースから前記インタリーブシーケンスを受信することと、
前記各署名ワードを使用して、前記インタリーブシーケンスにおける当該前の署名ワードにより検証された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードを逐次検証することと、をさらに含む。
【０００９】
前記署名ワードの前記第２シーケンスを計算することは、
線形フィードバックシフトレジスタが前記データワードに適用されることと、
非線形関数が前記線形フィードバックシフトレジスタの出力に適用されることと、を含む。
【００１０】
前記署名ワードの前記第２のシーケンスを計算することは、
前記与えられた署名ワードの複数のビットの第１のサブセットを設定し、前記インタリーブシーケンスにおける前記与えられた署名ワードの前の前記データワードに対して署名を行い、
エラー検出コードから前記署名ワードが与えられた前記ビットの第２のサブセットを導出し、
前記エラー検出コードは前記データワードにおける少なくともそれらのうちの一つを介して計算されるものであり、前記メモリの中に記憶することを含む。
【００１１】
前記インターフェースから前記インタリーブシーケンスを受信し、
前記署名ワードから前記ビットの前記第１サブセットと第２サブセットを取得し、
前記第１のサブセットを使用して、前記インターフェースを介して伝送される前記データの整合性を評価し、
前記第２のサブセットを使用して、前記データワードが記憶された前記メモリにおける前記整合性を評価することを含む。
【００１２】
データ検証用装置であって、
メモリと、
複数のデータワードの第１のシーケンスを生成するように構成されてインターフェースを介して送信し、複数の署名ワードの第２のシーケンスを計算し、前記第２のシーケンスを前記第１のシーケンスにインタリーブして、インタリーブシーケンスを生成し、インターフェースを介して前記インタリーブシーケンスを伝送するメモリ検証ユニットと、
を含み、
前記インタリーブシーケンスにおける与えられた各署名ワードは、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードに対して累積して署名を行うことを特徴とする。
【００１３】
前記インターフェースから前記インタリーブシーケンスを受信するように構成され、前記各与えられた署名ワードを使用して、前記インタリーブシーケンスにおける当該前の署名ワードにより検証された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データワードを検証するホストを含む。
【００１４】
前記メモリ検証ユニットは、線形フィードバックシフトレジスタがデータワードに適用されるように構成され、非線形関数が前記線形フィードバックシフトレジスタの出力に適用されるように構成されて、前記署名ワードの前記第２のシーケンスを計算する。
【００１５】
前記メモリ検証ユニットは、前記与えられた署名ワードにおける複数のビットの第１のサブセットを設定するように構成されて、前記インタリーブシーケンスにおける前記与えられた署名ワードが前の前記データワードに対して署名を行い、エラー検出コードから前記与えられた署名ワードの前記ビットの第２のサブセットを導出し、前記エラー検出コードは前記データワードにおける少なくともそれらのうちの一つを介して計算されるものであり、前記メモリの中に記憶する。
【００１６】
前記インターフェースから前記インタリーブシーケンスを受信するように構成され、且つ前記署名ワードから前記ビットの前記第１サブセットと第２サブセットを取得し、前記第１のサブセットを使用して、前記インターフェースを介して伝送される前記データの整合性を評価し、前記第２のサブセットを使用して、前記データワードが記憶された前記メモリにおける前記整合性を評価することを含むホストを含む。
【００１７】
データ検証方法であって、
インターフェースを介して複数のデータワードの第１のシーケンスと複数の署名ワードの第２のシーケンスから形成されるインタリーブシーケンスを受信して、各与えられた署名ワードが、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データに対して累積して署名を行い、
前記署名ワードの前記第２のシーケンスを使用して前記データワードの前記第１のシーケンスを逐次検証することを含む。
【００１８】
データ検証用装置であって、
インターフェースを介して複数のデータワードの第１のシーケンスと複数の署名ワードの第２のシーケンスから形成されるインタリーブシーケンスを受信して、各署名ワードが、前記インタリーブシーケンスにおける前の署名ワードにより署名された前記データワード、及び当該前の署名ワードと前記与えられた署名ワードの間に位置する前記データに対して累積して署名を行ない、前期署名ワードの前記第２のシーケンスを使用して前記データワードの前記第１のシーケンスを逐次検証する検証ユニットと、
前記署名を経たデータワードを処理するように設けられるプロセッサと、を含む。
【発明の効果】
【００１９】
バスインターフェースを介して通信する暗号化データを逐次検証し、攻撃者が通信される暗号化されたデータを改ざんし、若しくは危害を加えることを低減することができる方法とシステムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】図１Ａは本発明の一実施例に基づいて示されたコンピューティングシステムのブロック図であり、図１Ｂは本発明の一実施例に基づいて示されたバスインターフェースを介して転送されたインタリーブシーケンスの説明図である。
【図２】図２は本発明の一実施例に基づいて示されたインタリーブシーケンスに対して署名を行い、バスインターフェースを介して転送を行う方法のフローチャートである。
【図３】図３は本発明の一実施例に基づいて示されたバスインターフェースを介して受信した署名を経たデータを検証する方法のフローチャートである。
【図４Ａ】図４Ａは本発明の一実施例に基づいて示された整合性検査処理装置（integrity check engine，ICE）の第１の実施形態のブロック図である。
【図４Ｂ】図４Ｂは本発明の実施例に替えて示された整合性検査処理装置に基づいた第２の実施形態のブロック図である。
【図５】図５は本発明の一実施例に基づいて示されたバスインターフェースを介して受信したデータを同時検証して、メモリの中に記憶されたデータを検査する方法のフローチャートである。
【発明を実施するための形態】
【００２１】
概要
本発明の上述した特徴と利点を更に分かり易くするため、以下実施例を挙げて、図面と共に詳細な説明をする。
【００２２】
多くの安全ストレージシステムにおいて、ホストはメモリのバスインターフェースを介してメモリ装置と通信し、伝送過程において、データは各種パスワード攻撃を受ける可能性がある。本発明の実施例は、バスインターフェースを介して通信する暗号化データを逐次検証し、攻撃者が通信される暗号化されたデータを改ざんし、若しくは危害を加えるか否か検証する改良方法とシステムを提供する。
【００２３】
本発明におけるいくつかの実施例において、メモリ装置はメモリとメモリ検証ユニット（memory authentication unit，MAU）を含む。メモリ装置はバスインターフェースを介してホストに送信するとき、メモリ検証ユニットはメモリからデータを取得し、且つ暗号化された第１のシーケンスを生成する。同時に、メモリ検証ユニットは取得されたデータに基づいて署名ワードの第２のシーケンスを計算する。
【００２４】
メモリユニットは、データワードのシーケンスと署名ワードのシーケンスをインタリーブしてバスインターフェースを介して転送するように構成されて、各署名ワードが、インタリーブシーケンスにおける上述した署名ワードの前のデータワードに対して逐次署名を行う。換言すると、インタリーブシーケンスにおいて与えられた各署名ワード（第１の署名ワードを除く）は、前の署名ワードにより署名されたデータワード及び前の署名ワードと与えられた署名ワードの間に位置するデータワードに対して署名を行う。すなわち、検証強度はデータワードシーケンス毎に検証され強くなり続ける。
【００２５】
ホストはホスト検証ユニット（host authentication unit，HAU）を使用してインタリーブシーケンスを受け取り、データワードと署名ワードを分離し、データワードに対して復号化を行う、同時に、ホスト検証ユニットは受け取った復号データから署名ワードを計算し、計算された署名ワードと受け取った署名ワードを対比して、データワードを検証する。換言すると、ホスト検証ユニットはインタリーブシーケンスにおける各署名ワードを使用することによって、前の署名ワードにより検証されたデータワード及び前の署名ワードと与えられた署名ワードの間のデータを検証する。
【００２６】
換言すると、記載された技術において、メモリ装置は署名ワードを周期的に送信し、且つこれらの署名ワードは数が逐次増加するデータに対して署名を行う。シーケンスにおける第１の署名ワードは中程度の検証性能を提供するに過ぎないが、後続の署名ワードにおいて、検証性能は大幅に高まる。同時に、検証過程が引き起こす待ち時間はとても低くなり、大きなブロックのデータワードが既に蓄積されるまで待つ必要がなく、署名を検査することができる。即時コード検証から見れば（すなわち、バスインターフェースを介して伝送されるデータワードが、ホストにより即時に運用されるソフトウェアコードに到達したとき）、信頼性の高い検証と少ない待ち時間の組み合わせが特に有用であると言える。
【００２７】
いくつかの実施例において、ホストはメモリ装置自身のデータの整合性を遠端から検証することができる。これらの実施例において、メモリ検証ユニットはデータワードのグループと対応するエラー検出コードを一緒にメモリの中に記憶し、前記エラー検出コードは、メモリの中に記憶されたデータワードの改ざんを検査する。攻撃者がメモリ装置におけるデータ若しくは専用のロジック回路のデータ（前記データ若しくは専用のロジック回路は記憶されたデータの整合性を検証するのに用いられる）のうちの少なくともいずれかの改ざんを試みた場合には、このメモリ装置は、それ自身のメモリにおけるデータの整合性の評価について信用することができない。以下説明するいくつかの実施例において、ホストはメモリ装置に記憶されたデータの整合性を遠端から検証することができる。
【００２８】
いくつかの実施例において、メモリ検証ユニットは複合署名ワードを形成し、それはメモリ整合性ビットとインターフェース検証ビットの両者の組み合わせを含む。インターフェース検証ビットは上述した署名ワードから導出され、メモリ整合性ビットはデータと一緒にメモリの中に記憶されている誤り検出コードから導出される。
【００２９】
いくつかの実施例において、インターフェース検証ビットとメモリ整合性ビットの両者を用いることにより複合署名ワードにおけるビットを暗号化して計算する。メモリ整合性ビット自身は通常暗号化強度を具備しないため、改ざんされ易い。しかし、記載された技術はメモリ整合性ビットをインターフェース検証ビットと区別させることができないので、メモリ整合性ビットを有効に隠蔽できる。このため、識別とメモリ整合性ビットの改ざんはかなり複雑である。つづいて、先に述べたのと同様の方式の如く（例えばインタリーブシーケンスにおいて）バスインターフェースを介して複合署名ワードをホストに送信する。ホストはインターフェース検証ビットを取得してインターフェースを検証し、メモリ整合性ビットを取得してメモリにおけるデータを検証する。
【００３０】
システムの構成
図１Ａは本発明の一実施例に基づいて示されたコンピューティングシステム１０のブロック図である。コンピューティングシステム１０はホスト１５とメモリ装置２０を含む。ホスト１５とメモリ装置２０はバスインターフェース２５を介して相互に通信する。コンピューティングシステム１０は例えばコンピュータを含んでも良い。ホスト１５はコンピュータの中央処理装置（ＣＰＵ）を含んでも良い。メモリ装置２０は外部記憶装置を含んでも良く、この外部記憶装置は如何なる適合するタイプのメモリを使用してもよく、例えばフラッシュメモリ又はランダムアクセスメモリである。
【００３１】
典型的なプロセスにおいて、ホスト１５はバスインターフェース２５を介してデータに対するリクエストをメモリ装置２０に送信する。メモリ装置２０はメモリ３０からデータワードを取得する。データワードはＤｊを以って表示され、ここでｊはインタリーブシーケンスにおける第ｊ個目のデータワードの整数であるが、詳細は後述する。データワードは、メモリ３０と連接されたメモリ検証ユニット（memory authentication unit，MAU）３５に中継される。メモリ検証ユニット３５における暗号化部４０は、データワードＤｊに対して暗号化を行う。同様に、メモリ性合成検査処理装置（memory integrity check engine，ICE）４５はデータワードＤｊを入力して署名ワードＳｉを計算し、ここでｉは第i個目の署名ワードを表すための整数である。最後に、インタリーバ５０は、データワードＤｊと署名ワードＳｉを含むインタリーブシーケンスを生成し、以下図に示す。
【００３２】
ホスト１５はプロセッサ６０とホストメモリ６５を含む。ホストメモリ６５はホスト検証ユニット（host authentication unit，HAU）７０に連接される。ホスト検証ユニット７０はデインタリーバ７５を含み、このデインタリーバ７５は取得したインタリーブシーケンスにおける暗号化されたデータワードと取得した署名ワードSiRを分離することができ、ここでｉはインタリーブシーケンスにおける第ｉ個目の署名ワードの整数を表示する。その後、デコード部８０はデインタリーバ７５からデータワードＤｊを取得する。
【００３３】
ホスト整合性検査処理装置８５は取得されたデータワードＤｊを受け取り、データワードＤｊにより署名ワードSiRを計算する。データワードＤｊとメモリ３０における署名されたデータワードが適合するか検証するため、比較器９０はプロセッサ６０に向けて成功若しくは不成功（図１Ａにおいて示されたＰ／Ｆ）を指示することにより、署名ワードＳｉが取得された署名ワードSiRと同じであるか否かを評価する。指示が成功のとき、与えられたインデックスｉから見れば、現在受け取った署名ワードSiRは、署名ワードSiRの前の全ての署名を経たデータに対して検証を行う。
【００３４】
図１Ａにおいて示したコンピューティングシステム１０は例示に過ぎず、本発明の実施例に対して制限を与えるものではない。具体的には、メモリ整合性検査処理装置４５とホスト整合性検査処理装置８５は、暗号化されたデータ（図１Ａにおいて図示せず）を介して署名ワードを計算するように構成しても良い。ホスト１０とメモリ装置２０の異なる部品はそれぞれ如何なる適合するハードウェアで実現しても良く、例えばこのような特定用途の集積回路或いはプログラマブル・ロジック・ゲート・アレイ（ＦＰＧＡ）などで実現しても良い。いくつかの実施形態では、上述した機能は、プリント回路基板上のディスクリート部品若しくはそれらの組み合わせであっても良く、如何なる適合する方法で実現しても良い。その他の実施例においては、メモリ３０とメモリ検証ユニットは通常同一の装置パッケージにパッケージ化され、自己完結型の安全メモリ装置の提供に資する。
【００３５】
いくつかの実施例においては、バスインターフェース２５は独立した信号線を介してアドレス、データ、及び命令を提供するパラレルインターフェースであっても差し支えない。その他の実施例において、バスインターフェース２５はシリアルインターフェースでも差し支えなく例えばシリアル・ペリフェラル・インターフェース（SPI）、内蔵の集積回路（I2C）、ユニバーサルシリアルバス（ＵＳＢ）、マルチメディアカード（ＭＭＣ）或いはセキュアデジタル（ＳＤ）インターフェースでも良い。バスインターフェース２５は、実施例のウエハ若しくはプリント回路基板上の少なくともいずれかの如何なる適合するインターフェースで実現しても良い。メモリ３０とホストメモリ６５は、ランダムアクセスメモリ、非揮発性メモリ、若しくはそれら両方でも差し支えない。
【００３６】
その他の実施例において、ホスト１５若しくはメモリ装置２０の少なくともいずれかの部品、例えばメモリ検証ユニット３５、ホスト検証ユニット７０及びプロセッサ６０は、汎用のコンピュータを用いて実施することができ、ソフトウェアで上述した汎用のコンピュータに対してプログラミングを行うことにより本実施例において記載した機能を実現しても良い。ソフトウェアは電子フォームに基づいてネットワークを経てコンピュータにダウンロードさせても良く、或いは、提供され若しくは非一時的な物理メディア（例えば磁気、光、電子メモリ）上に記憶されたもののうち少なくともいずれかに置き換え、若しくは追加しても差し支えない。
【００３７】
[データと署名ワードをインタリーブすることにより安全メモリインターフェースを介して累積データ検証を行う]
本願で記載された実施例において、教示される累積データ検証を用いるための方法は、通常ホスト１５とメモリ装置２０が分離しているケースに対してである。ホスト１５がリクエストするデータはバスインターフェース２５を介して送信される。たとえデータが暗号化されていたとしても、攻撃者は、なおもバスインターフェース２５を介してデータフローにおけるあるビットを変更してデータを取得しようと試みることが可能であり、或いはその他の方法によってシステムに影響を与える。
【００３８】
いくつかの実施例において、デジタル署名はデータに対して検証するために用いられる。デジタル署名は、ホスト１５とメモリ装置２０の両者がいずれも知っている専用の暗号（通常は秘密デジタル鍵ワードである）を使用して計算されたデータの関数である。データを受け取る過程において、ホスト１５は、受け取ったデータを用いて同一の署名を計算するために、メモリ２０において生成された署名した専用の暗号を知る必要があり、このようにして受け取った署名と計算された署名の一致を検証する。これにより、署名を経たデータワードは検証され、データがバスインターフェースを介して改ざんされていないことを表示する。長いデータブロックについては、まずデータに対してハッシュ計算を行い、そして関数をハッシュシーケンスに適用する。
【００３９】
本願において記載された実施例は特にホスト１５がメモリ装置２０から直ちに取り出されたコードに関するケースである。このケースにおいて、ホスト１５がデータを検証するのと相関連する待ち時間は非常に長いため、一般的なのブロック検証方法は通常適さない。また、一般的な暗号化署名は通常少なくとも８バイト（byte）長であり、バスインターフェース２５を介して直ちに伝送されるこの類の署名の通信は、バスインターフェース２５を介したチャンネルスループットを厳重に低減する。
【００４０】
本願において記載された実施例において、メモリ３０からメモリ検証ユニット３５に渡されたデータを使用して、メモリ検証ユニットにおいて署名に対して連続して計算を行うので、署名の過程は累積される。例示的な実施例においてこれに対して説明を行うと、４個の１バイトのデータワード毎に更に対応する１バイトの署名ワードを付加して転送し、各署名ワードはシーケンスにおける全ての前のデータワードに対して署名させる。
【００４１】
攻撃者が前の４個のデータワードを改ざんした場合には、第１の署名ワードはｐ＝２５５/２５６の可能性に基づいて攻撃を検出する。この可能性は一般的なパスワード暗号化アルゴリズムからすれば恐らくそれほど高くないが、第２の署名ワードは前の８個のデータワードに対して署名を行うとき、このときの攻撃を誤検出する可能性は是(1-p)2である。第ｉ個の署名ワードＳｉを用いて攻撃を検出できる可能性は1-(1-p)iである。このため、攻撃者がバスインターフェース２５を介して伝送中のデータワードに対して行った如何なる改ざんも非常に正確に検出することができる。
【００４２】
図１Ｂは本発明の一実施例に基づいて示されたバスインターフェース２５介して転送されたインタリーブシーケンスの説明図である。上述のように、Ｄｊで表される複数のデータワード１１０とＳｉで表される署名ワード１２０をインタリーブする。図１Ｂに示した例示的な実施例において、署名ワードＳｉはデータワードD1-D4に対して署名を行う。署名ワードS2はデータワードD1-D8に対して署名を行う。署名ワードS3はデータワードD1-D12に対して署名を行う等である。なお、図１Ｂにおいて、(D1, D2,… Dj)で表されたデータワード１１０は、図１Ａに示すデータワードＤｊの暗号化されたバージョンである。用語『署名ワード』と『署名』は明細書において互換して使用することができる。
【００４３】
図２は本発明の一実施例に基づいて示されたインタリーブシーケンス１００に対して署名を行い、バスインターフェース２５を介して送信を行う方法のフローチャートである。ステップ２００実行するにあたり、ホスト１５はバスインターフェース２５を介してデータに対する要求をメモリ装置２０に送信する。メモリ装置２０はメモリ３０から要求されたデータを読み取る。暗号化ステップ２１０において、メモリ検証ユニット３５はデータワード（例えば図１Ｂにおいて示されたデータワード１１０）の第１のシーケンスに対して暗号化を行う。
【００４４】
計算とインタリーブのステップ２２０においては、メモリ検証ユニット３５は署名ワードＳｉの第２のシーケンス（図１Ｂにおいて署名ワード１２０で標示されたものである）を計算し、第１のシーケンス（Ｄｊ）と第２（Ｓｉ）のシーケンスをインタリーブし、各署名ワードＳｉに、図１Ｂに示す如くインタリーブシーケンス１００における上述した署名ワードＳｉの前のデータワードＤｊに対して署名を行なわせる。
【００４５】
ステップ２３０において、メモリ装置２０はバスインターフェース２５を介して、インタリーブシーケンス１００をホスト１５に伝送する。判定ステップ２４０において、ホスト１５はメモリ装置２０がすべての署名を経たデータを既に転送したか否かを評価する。もし転送していない場合には、メモリ装置２０はメモリ３０から継続してデータを読み取り、かつメモリ検証ユニット３５は暗号化ステップ２１０において読み取られたデータに対して暗号化を行う。一方、転送されている場合には、終了ステップ２５０においてバスインターフェース２５を介したデータ転送を終了する。
【００４６】
図３は本発明の一実施例に基づいて示されたバスインターフェース２５を介して受信した署名を経たデータを検証する方法のフローチャートである。ステップ２５５において、ホスト１５は受信した署名ワードSiRと暗号化を経たデータワード１１０のインタリーブシーケンスを受け取る。デインタリーバ７５は受信した署名ワードSiRと暗号化を経たデータワードを分離する。デコード部８０において暗号化を経たデータワードは復号化される。
【００４７】
ステップ２６０において、ホスト整合性検査処理装置８５は復号化されたデータワードＤｊを使用して署名ワードＳｉを計算する。判定ステップ２７０において、比較器９０は計算された署名ワードＳｉと受け取った署名ワードSiRが同一か否か評価する。もし同一でなければ、失敗報告ステップ２８０において、比較器９０は（通常はプロセッサ６０に）データはバスインターフェース２５で改ざんされていた旨を報告する。一方、同一であれば、成功報告ステップ２９０において、比較器２９０は（通常はプロセッサ６０に）検証成功を報告する。
【００４８】
図２と図３のフローチャートにおいて示された技術はメモリ装置からホストに送信されるデータを検証する場合には限られない。記載された累積検証方法は反対方向（即ち、ホストからメモリ装置に送信する場合である。）を検証するデータにも用いることが可能である。また、一般には、如何なるその他の適合するインターフェースを介して転送するデータを検証するのに用いることも可能であり、加えて実施例で説明したバスインターフェース２５と共にその他の適合するインターフェースを介して送信するデータを検証するのに用いることもできる。
【００４９】
[累積検証のための署名ワードを計算する]
本発明の実施例において、整合性検査処理装置（例えばホスト１５におけるホスト整合性検査処理装置８５とメモリ装置２０におけるメモリ整合性検査処理装置４５）を使用して、メモリ検査ユニット３５とホスト検査ユニット７０の両者において署名ワード１２０を計算する。整合性検査処理装置は通常入力データワードＤｊに対してハッシュ化を行い署名ワードＳｉを計算する。ハッシュレジスタはバスインターフェースを介したデータワードのハッシュシーケンスを計算して記憶するのに用いられる。ハッシュレジスタは例えば線形フィードバックシフトレジスタ（linear feedback shift register，LFSR）により実現してもよい。
【００５０】
図４Ａは本発明の一実施例に基づいて示された整合性検査処理装置３００の第１の実施形態のブロック図である。図４Ａにおける整合性検査処理装置３００は図１Ａに示したホスト整合性検査処理装置８５とメモリ整合性検査処理装置４５を適用することができる。８ビットのデータワードDj[7:0]は線形フィードバックシフトレジスタ（LFSR）305に入力される。ここで示した実施例は秘密鍵Ｋを用いて線形フィードバックシフトレジスタ３０５に対して初期化を行う。線形フィードバックシフトレジスタ３０５は十分に大きいと仮定されており（例えば少なくとも６４ビットのビット幅である）、攻撃者が集中した計算分析によって線形フィードバックシフトレジスタ３０５の内容を見繕い又は評価することができないようにさせることができる。
【００５１】
線形フィードバックシフトレジスタ３０５の出力をＦブロック３１０に入力させ、上述したＦブロックは適切な非線形関数Ｆを適用するように構成されており、かつ上述した非線形関数Ｆはハッシュレジスタビット（例えば、線形フィードバックシフトレジスタ３０５のビット）のサブセットにより、署名ワードSi[7:0]の署名ビットを計算する。ここで線形フィードバックシフトレジスタ３０５がこの例示的実施例において６４ビットで操作されると仮定し、且つ線形フィードバックシフトレジスタ３０５の出力ビットはLFSR[64:0]で表される。いくつかの実施例において、線形フィードバックシフトレジスタ３０５（その入力データはDj[7:0]である。）の出力を用いることができ、例えば数式（１）によって第ｉ個目の署名ワードSi[7:0]の署名ビットが計算される。上述した数式は以下の通りである。
F[7:0] = (LFSR[7:0] & LFSR[15:8]) | (LFSR[15:8] & LFSR[23:16]) |(LFSR[23:16] & LFSR[7:0])  ・・・・数式 （1）
ここで、符号『＆』はビットアンド演算（bitwise-and）を表示し、符号『|』はビットオア演算（bitwise-or）を表示する。
【００５２】
図４Ａと数式（１）において示した実施例は概念をはっきりさせるために用いたに過ぎず、本発明の実施例を制限するものではない。整合性検査処理装置は如何なる適合する計算方法の如何なる適合する電気回路を用いることにより実現しても良く、図１Ｂに示すインタリーブシーケンス１００において累積されたデータワードに対して署名を行う署名ワード１２０を用いることができる。その他の実施例において、ホスト１５において整合性検査処理装置３００を用いることにより、読み取り命令の要求命令とアドレスに対してハッシュ化を行い、上述した読み取り命令はステップ２００（図示せず）において安全に暗号化されてメモリ装置２０に転送される。その後、本願の上述の実施例と同様の方法で、コンピューティングシステム１０における読み取り命令とアドレスに対して署名と検証を行う。
【００５３】
データセットは、バスインターフェースを介して転送された全てのデータワードからのデータを含む。いくつかの実施例において、インタリーブシーケンス１００におけるいくつかの署名ワード１２０はメモリ装置２０により送信されることができ、ホスト１５は全てのデータワードを既に受信し終わり、かつ検証された後のデータセットに対して署名を行う。その他の実施例において、本願において記載された方法の他、ホスト１５はデータセットにおける全てのデータワードを既に受信完了したした後、更にその他の検証方法を使用することにより全てのデータワードを検証することができる。その他の実施例において、Ｆブロック３１０は署名ワード１２０における某ビットを使用可能にすることにより継続してデータワードに対して署名を行い、及び某ビットを選択することにより全てのデータセットに対して署名を行うように選択的に構成することができる。
【００５４】
[安全メモリインターフェースを介して累積データ検証を行うと共にメモリの整合性を評価する署名ワードを用いる]
本願の提供するその他の実施例において、署名とデータワードをインタリーブする方法は、上述した継続的にバスインターフェース２５を介して送信するデータワードに対して署名と検証を行う方法には限られない。ホスト１５はこれらの方法を使用することによって、遠端でメモリ３０における整合性を検証することができる。
【００５５】
これらの実施例において、メモリ検証ユニット３５はデータをメモリ３０にアレイ状に記憶し、上述したアレイにおいて、データワードの各グループと上述したグループを経て計算された対応するエラー検出コード（error detection code，EDC）ワードは一緒に記憶される。エラー検出コードは例えば３２ビットの累積した冗長検査（CRC-32）コード若しくは如何なるその他の適合するエラー検出コードを含む。メモリ装置２０（メモリユニット３５でも差し支えない）における専用のロジック回路は、通常、記憶されたデータを用いて新たにエラー検出コードを計算し、算出されたエラー検出コードとメモリ３０において記憶されたエラー検出コードを比較し、このようにしてデータの整合性を検査する。
【００５６】
しかし、いくつかの状況においては、攻撃者はメモリ装置内部の電気回路のデータを改ざんすることが可能であるため、この内部の検証メカニズムは完全には信頼することができない。本発明の実施例において、メモリ検証ユニット３５は、エラー検査コードを使用して検証された記憶されたデータの任務を、ホスト１５に任命することである。
【００５７】
いくつかの実施例において、メモリ検証ユニット３５は複合署名ワードを形成し、それは連続的にデータに対して署名を行う署名ビット（例えばインターフェース検証ビット）とメモリ３０におけるエラー検出コードから導出されたメモリ整合性ビットの両者を含み、上述したメモリ整合性ビットはメモリ３０に記憶されるデータの整合性を検証するために用いられる。本発明において示した実施例は、メモリ装置２０が複合署名ワードを形成する方法を記載したが、ホスト１５が上述の類似の方式を以って署名を経たワードを検証して且つメモリ３０に記憶されたデータの整合性に対して遠端検査を行う方法を相対応するように記載しても良い。
【００５８】
図１Ａと図１Ｂを使用して後述する実施例の概念を分かり易くするため、複合署名ワードは符号ＨＳｉを用いて表示し、符号Ｓｉと互換を持たせても良い。複合署名ワードも署名ワード１２０により表示することができ、且つ図１Ｂにおける方式に類似する方法でインタリーブシーケンス１００におけるデータワード１１０とインタリーブさせ、バスインターフェース２５を経てホスト１５に送信される。ここで、用語『複合署名ワード』と『複合署名』は互換して使用することができる。
【００５９】
図４Ｂは本発明の実施例に替えて示された整合性検査処理装置４００に基づいた第２の実施形態のブロック図である。整合性検査処理装置４００はメモリ装置２０においてＨＳｉを表示する複合署名ワードを生成させる。
【００６０】
整合性検査処理装置４００が、データワードＤｊ[7:0]を線形フィードバックシフトレジスタ（LFSR）４０５に入力する動作と整合性検査処理装置３００の動作は類似している。図４Ｂに示す実施例は秘密鍵（図示せず）により線形フィードバックシフトレジスタ４０５を初期化し、かつ線形フィードバックシフトレジスタ４０５は６４ビットで動作すると仮定する。線形フィードバックシフトレジスタ４０５の出力LFSR[64:0]をＦブロック４１０に入力し、上述したＦブロックは如何なる非線形関数Ｆ（例えば数式（１）に示す）を適用するように構成されており、且つ上述した非線形関数Ｆはハッシュレジスタビット（例えば、線形フィードバックシフトレジスタ４０５）のサブセットによって署名ワードSi[7:0]の署名ビットを計算する。
【００６１】
しかし、第ｉ個目の複合署名ワードHSi[7:0]の複合署名ビットは線形フィードバックシフトレジスタの出力を用いて計算する場合だけでなく、データワードDj[7:0]と一緒にメモリ３０において使用しても良く、かつデータワードと一緒に読み出されたエラー検出コードワード（例えば、ＣＲＣ−３２字）を以って計算することができる。本願で記載された実施例において、複合署名ワードHSiのビットは、インターフェース検証ビットとメモリ整合性を検証するためのメモリ整合性ユニットの両者によって形成され、詳細は後述する。インターフェース検証ビットは数式（１）から導出され、上述した継続的なデータワード１１０に対する署名の如く用いられる。
【００６２】
データワードDj[7:0]の他に、整合性検査処理装置４００は入力信号として且つデータワードDj[7:0]と一緒に記憶されたエラー検出コードワードを受信し、エラー検出コードワードはCRCi[7:0]で表示される。データワードDj[7:0]はＦ’ブロック４１５にも入力され、且つＦ’ブロック４１５は数式（２）に基づいて関数F’[7:0]をハッシュレジスタビットのサブセットに適用する。上述した数式（２）は以下の通りである：
F’[7:0]=LFSR[39:32] & LFSR[31:24]    ・・・・（2）
ここで、符号『＆』はビットアンド演算（bitwise-and）を表示する。
【００６３】
基本的に、F’[7:0]はマルチプレクサ４２５の制御端末（ビット選択）に適用される関数であり、且つＦｉ[7:0]とCRCi[7:0]はマルチプレクサ４２５の信号として入力される。整数ｋはインターフェース検証ビットF[k]、マルチプレクサ制御ビットF’[k]、及びメモリ整合性ビットCRC[k]における第ｋ個目のビットを表し、ここでｋ＝０、１、２、・・・、７である。８ビットを形成する複合署名ワード１２０の複合署名ビットは以下で与えられた数式（３）により計算される：
HS[k]=F[k]   ・・・・・（3）
ここで、マルチプレクサ制御ビットF’[k]が０（ゼロ）のとき、複合署名ビットHS[k]はインターフェース検証ビットF[k]に等しく、マルチプレクサ制御ビットF’[k]が０ではないとき、複合署名ビットHS[k]はメモリ整合性ビットCRC[k]である。
【００６４】
この方式では、複合署名ワードを形成する複合署名ビットHS[k]は殆どランダム方式により、LFSR[64:0]によって計算されたインターフェース検証ビットF[k]とメモリ整合性ビットCRC[k]を共有し、複合署名ワードを形成する過程において、この暗号化方法に対して復号化する攻撃は殆ど発生することができないようにさせる。
【００６５】
いくつかの実施例において、整合性検証処理装置４００の修正は、図１Ａで示したホスト整合性検査処理装置８５を実現できるように構成される。しかし、ホストにおいて、累積冗長チェックワードCRCiは取得されたデータワードによって計算される。
【００６６】
図５は本発明の一実施例に基づいて示されたバスインターフェース２５を介して受信したデータを同時検証して、メモリ３０の中に記憶されたデータを検査する方法のフローチャートである。ステップ４３０において、ホスト１５はバスインターフェース２５を介してメモリ装置２０から複合署名ワードHSiRと暗号化を経たデータワードのインタリーブシーケンスを受信する。
【００６７】
ステップ４３５を利用するにあたり、ホスト整合性検査処理装置８５（整合性検査処理装置４００によって実現する）はデコード部８０からのデータワードＤｊを使用して、データワードＤｊと累積冗長チェックワードCRCiによって複合署名ワードＨＳｉを計算する。各（複合）署名ワード１２０（受信した複合署名ワードHSiRと計算された複合署名ワードHSi）における複合署名ビットに対して分析を行うことにより、バスインターフェース２５を介して改ざんされたデータを検証し、及びメモリ３０におけるデータの整合性を遠端検査するのに資する。
【００６８】
判定ステップ４４０において、比較器９０は、以下の数式（４）におけるロジックの相等性が成立するか否かを評価することによって、受け取った署名ワードと計算された署名ワードにおけるインターフェース検証ビット（例えばF[k]である。）が同じか否か評価する。上述した数式（４）は以下のように表される。
(HS[k]) & (~F’[k])==F[k] & (~F’[k])     ・・・・・（4）
ここで、符号『＆』はビットアンド演算（bitwise-and）を表示し、符号『〜』はノット（not）を表示し、符号『==』はロジックの等価条件が成立するか否かを表示する。
【００６９】
比較器９０が数式（４）におけるロジックの相等性の成立を評価した場合には、報告ステップ４５０において、コンパレータ９０は受信したデータがバスインターフェース２５において検証されたことを報告する。一方、成立しなければ報告ステップ４４５において、比較器９０はデータがバスインターフェース２５で改ざんされたことを報告する。換言すると、ステップ４５０はインタリーブシーケンス１００におけるデータワードDｊ１１０を逐次検証する。
【００７０】
第２判定ステップ４５５において、比較器９０は数式（５）におけるロジックの相等性が成立するか否か評価することにより、受信した複合署名ワードHSiRと計算した複合署名ワードHSiを比較し、メモリ整合性ビットCRC [k]が同じか否か評価する。上述した数式（５）は以下の通りである。
(HS[k]) & (F’[k])==F[k] & (F’[k])  ・・・・ （5）
ここで、符号『＆』はビットアンド演算（bitwise-and）を表示し、かつ符号『＝＝』は判別ロジックの相当性の条件が成立したか否かを表示する。
【００７１】
比較器９０が数式（５）におけるロジックの相等性が成立すると評価した場合には、報告ステップ４６５において、比較器９０はメモリ装置２０におけるメモリ３０のデータがまだ改ざんされていない旨の報告をし、即ち記憶されたデータの整合性を検証する。一方、そうではない場合には、報告ステップ４６０において、比較器９０はメモリ装置２０におけるデータが改ざんされた旨を報告する。換言すると、ステップ４６５はメモリ３０におけるインタリーブシーケンス１００のデータワードDｊ１００の整合性を逐次検証する。
【００７２】
本発明は既に実施例を以って説明したが、本発明を限定するものではなく、如何なる技術領域の当業者が、本発明の精神と範囲を逸脱しない限り、変更や軽微な追加等が許されるものであり、本発明の保護範囲は均等の範囲にも及ぶものとする。
【符号の説明】
【００７３】
１０  コンピューティングシステム
１５  ホスト
２０  メモリ装置
３０  メモリ
４０  暗号化部
４５  メモリ整合性検査処理装置
５０  インタリーバ
６０  プロセッサ
６５  ホストメモリ
７０  ホスト検証ユニット
７５  デインタリーバ
８０  デコード部
８５  ホスト整合性検査処理装置
９０  比較器
【図１】
2015062286.tif 000003
【図２】
2015062286.tif 000004
【図３】
2015062286.tif 000005
【図４Ａ】
2015062286.tif 000006
【図４Ｂ】
2015062286.tif 000007
【図５】
2015062286.tif 000008