(57)【要約】  記載される例において、データ暗号化システムが、種々の暗号化、解読、又はメッセージ認証機能を実施するために複数の暗号化コア（３０２）を含む。外部メモリインタフェースが、暗号化されないバス（３０５）、及び外部メモリに接続される暗号化されたバス（３０７）を含む。推論的読み出しクリプトキャッシュ（３０４）が、任意の推論的クリプトオペレーションの完全な又は部分的な結果をストアするように動作し得る。スコアボード（３０３）が、任意の推論的クリプトオペレーションに関連付けられる外部メモリ読み出しコマンドをストアする。
2017526220.tif 000002
【特許請求の範囲】
【請求項１】
データ暗号化システムであって、
種々の暗号化、解読、又はメッセージ認証機能を実施するように動作し得る複数の暗号化コア、
暗号化されたデータを前記データ暗号化システムから受信し、前記暗号化されたデータを外部メモリに書き込むように動作し得る、外部メモリインタフェースであって、更に、暗号化されたデータを前記外部メモリから受信し、前記暗号化されたデータを前記データ暗号化システムに提供するように動作し得る、前記外部メモリインタフェース、
前記外部メモリインタフェースに接続される、一つ又は複数のメモリセグメントを含む外部メモリ、
任意の推論的クリプトオペレーションの完全な又は部分的な結果をストアするように動作し得る推論的読み出しクリプトキャッシュ、及び
任意の推論的クリプトオペレーションに関連付けられる外部メモリ読み出しコマンドをストアするスコアボード、
を含む、暗号化システム。
【請求項２】
請求項１に記載の暗号化システムであって、前記オペレーションに必要とされるデータの全てが前記外部メモリから受信される前に、推論的クリプトオペレーションが開始され得る、暗号化システム。
【請求項３】
請求項１に記載の暗号化システムであって、推論的クリプトオペレーションに関連付けられる読み出しコマンドに応答して外部メモリから受信した読み出しデータが、前記推論的読み出しクリプトキャッシュにおける適切なエントリに対する前記スコアボードの支援によりマッチングされる、暗号化システム。
【請求項４】
請求項１に記載の暗号化システムであって、前記推論的クリプトオペレーションが開始されたとき選択される状況が、外部メモリから受信される実際のデータに基づいて真であることが分かった場合に、前記推論的クリプトオペレーションの結果が受け取られる、暗号化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概してデータ暗号化に関連する。
【背景技術】
【０００２】
新たに出てくるアプリケーションの多くは、ソフトウェア攻撃に対する従来のセキュリティだけでなく、物理的セキュリティを必要とする。例えば、デジタル著作権管理（ＤＲＭ）において、或るコンピュータシステムの所有者は、保護されたデジタルコンテンツの違法コピーを作るためにシステムセキュリティを破ろうとする。
【０００３】
同様に、モバイルエージェントアプリケーションは、信頼されていないホスト上で機密電子的トランザクションが成されることを必要とする。こういったホストは、金銭的理由で、システムを破ってモバイルエージェントの挙動を変えようとする敵対者の制御下にあり得る。従って、物理的セキュリティは、インターネット時代において多くのアプリケーションを可能にするために重要である。
【０００４】
物理的に安全なシステムを構築するための従来のアプローチは、アクティブ侵入検出器を用いて典型的に実装されるプライベート及び改竄防止（tamper-proof）環境において、プロセッサ及びメモリ要素を含む処理システムを構築することに基づく。ハイグレードの耐改竄性を提供することは非常に高価となり得る。また、これらのシステムのアプリケーションは、小さな改竄防止パッケージ内に入れられ得る構成要素によってシステム演算能力が制限されるので、少数のセキュリティクリティカルなオペレーションを実施することに限定される。また、これらのプロセッサには柔軟性がなく、それらのメモリ又はＩ／Ｏサブシステムは容易に更新することができない。
【０００５】
シングルプロセッサチップのための耐改竄性を必要とするだけで、セキュア演算能力の量が著しく高まり得、一層重い演算要件を備えたアプリケーションが可能となり得る。シングルプロセッサチップのみが信頼されており、オフチップメモリを含む全ての他の構成要素のオペレーションが、そのプロセッサにより検証されるという、セキュアプロセッサが最近提案されている。
【０００６】
シングルチップセキュアプロセッサを可能にするため、（オフチップの信頼されていないメモリを攻撃者が改竄することから防止する）２つのメイン基本形（primitive）、即ち、メモリインテグリティ検証と暗号化、が開発される必要がある。インテグリティ検証は、実行しているプログラムの状態を敵対者が変更するかをチェックする。何らかの破損が検出されると、プロセッサは、正しくない結果を生成することを避けるために、改竄されたタスクを中止する。暗号化は、オフチップメモリにストアされたデータのプライバシーを確保する。
【０００７】
価値あるものとするため、検証及び暗号化方式は、演算にかかる性能不利益が大きすぎないものである必要がある。
【０００８】
オフチップメモリインテグリティ検証を仮定すると、セキュアプロセッサは、敵対者による如何なる物理的改竄又はソフトウェア改竄も確実に検出されるように、ソフトウェアプロセスが認証された環境において動作し得るＴＥ（tamper-evident）環境を提供し得る。ＴＥ環境は、演算能力が、データを正しく処理する演算環境の保証を備えて販売され得る、認可された実行及び商用グリッド演算などのアプリケーションを可能とする。ＴＥ処理の性能オーバーヘッドは、インテグリティ検証の性能に大きく依存する。
【０００９】
インテグリティ検証と暗号化との両方を備えたセキュアプロセッサは、プライベート及び認証耐改竄（ＰＴＲ：private and authenticated tamper resistant）環境を提供し得、この環境では、更に、敵対者が、システムオペレーションを改竄すること（又はその他の方式で監視すること）によってその環境内のソフトウェア及びデータに関する如何なる情報も得ることもできない。ＰＴＲ環境は、信頼できる第三者機関演算（Trusted Third Party computation）、セキュアモバイルエージェント、及びデジタル著作権管理（ＤＲＭ）アプリケーションを可能とし得る。
2017526220.tif 000003
【発明の概要】
【００１０】
記載される例において、データ暗号化システムが、種々の暗号化、解読、又はメッセージ認証機能を実施するために複数の暗号化コアを含む。外部メモリインタフェースが、暗号化されないバス、及び外部メモリに接続される暗号化されたバスを含む。推論的（speculative）読み出しクリプト（crypto）キャッシュが、任意の推論的クリプトオペレーションの完全な又は部分的な結果をストアするように動作し得る。スコアボードが、任意の推論的クリプトオペレーションに関連付けられる外部メモリ読み出しコマンドをストアする。
【図面の簡単な説明】
【００１１】
【図１】例示の実施例のブロック図を示す。
【００１２】
【図２】ＡＥＳ暗号化規格の高レベルフローチャートである。
【００１３】
【図３】オンザフライ暗号化システムの高レベルブロック図を示す。
【００１４】
【図４】ＡＥＳモード０処理のブロック図を示す。
【００１５】
【図５】ＡＥＳモード１処理のブロック図である。
【発明を実施するための形態】
【００１６】
記載される例において、オンザフライ暗号化エンジンが、マルチセグメント外部メモリに書き込まれているデータを暗号化するように動作し得、また、外部メモリの暗号化されたセグメントから読み出されているデータを解読するように動作し得る。メモリ効率を改善するため、メモリシステムは、読み出されたリクエストからデータを順不同に返し得る。暗号オペレーションのスループットを改善するために、オペレーションは、読み出しコマンドがメモリに送られるときであるが読み出しデータが到達する前に、推論的に開始され得る。推論的暗号オペレーションに対応するため、オペレーションの結果は、キャッシュされ、その後、それが到達するときメモリデータにマッチングされる必要がある。
【００１７】
図１は、例示の実施例の高レベルアーキテクチャを示す。ブロック１０１は、プロセッサバス１０３及び１０４の間に配置されるオンザフライ暗号化エンジンであり、バス１０５を介して外部メモリインタフェース１０６に接続される。構成データが構成レジスタ１０２にバス１０３を介してロードされ、暗号化されないデータが、バス１０４を介して１０１に書き込み／読み出しされる。暗号化されたデータが、バス１０５を介して、外部メモリインタフェース１０６へ／外部メモリインタフェース１０６から通信される。外部メモリ１０７は、１０６に接続され、１０６により制御される。外部メモリ１０７は複数のメモリセグメントを含み得る。これらのセグメントは、暗号化されても又は暗号化されなくてもよく、セグメントが別個の及び異なる暗号化鍵で暗号化され得る。
【００１８】
用いられる暗号化の方法に対する制約はないが、ここで説明される実装はＡＥＳ（Advanced Encryption Standard）に基づく。
【００１９】
ＡＥＳは、１２８ビットのブロック長を備えたブロック暗号である。規格により３つの異なる鍵長、１２８、１９２、又は２５６ビットが認められている。暗号化は、１２８ビット鍵のための処理の１０ラウンド、１９２ビット鍵のための１２ラウンド、及び２５６ビット鍵のための１４ラウンドで構成される。
【００２０】
処理の各ラウンドは、１バイト毎の置換工程、行の転置工程、列の混合工程、及びラウンド鍵の付加を含む。これらの４つの工程が実行される順は、暗号化及び解読毎に異なる。
【００２１】
ラウンド鍵は、４４個の４バイトワードから成る鍵スケジュールへの鍵の拡張により生成される。
【００２２】
図２は、１２８ビット鍵を用いるＡＥＳの全体的な構造を示す。ラウンド鍵は、鍵スケジューラ２１０において生成される。暗号化の間、１２８ビット平文ブロック２０１が、ブロック２０２に提供され、第１のラウンド鍵が平文ブロック２０１に付加される。２０１の出力はブロック２０３に提供され、ここで、第１のラウンドが演算され、その後、ラウンド２からブロック２０４におけるラウンド１０まで続く。ブロック２０４の出力は、その結果生じる１２８ビット暗号文（cipher text）ブロックである。
【００２３】
解読の間、１２８ビット暗号文ブロック２０６が、２０７に提供され、暗号化の間にラウンド１０により用いられるラウンド鍵である最後のラウンド鍵に付加される。このオペレーションの後、それらの暗号化の間に用いられたのとは逆の順に適切なラウンド鍵を用いる、演算ラウンド１〜１０が続く。２０８の出力であるラウンド１０は、１２８ビット平文ブロック２０９である。
【００２４】
図３は、オンザフライ暗号化／解読機能の高レベルのブロック図である。メモリ書き込みオペレーションの間暗号化されるべき平文が、データバス３０５で提供され、解読された平文が、メモリ読み出しの間同じバス３０５上で出力される。構成データがバス３０６上で提供される。暗号化されたデータバス３０７が、外部メモリコントローラにインタフェースする。
【００２５】
構成データは、バス３０６から構成ブロック３０１に入力される。ＡＥＳコアブロック３０２が、１２個のＡＥＳコア及び６個のＧＭＡＣコアを含み、これらは暗号作業を実施する。
【００２６】
このブロックは、スケジューラにより定義された適切なＡＥＳ／ＧＭＡＣ／ＣＢＣ−ＭＡＣオペレーションを実施する。
【００２７】
ＡＥＳ及びＧＭＡＣコアの半分がＲＤ経路に、他方の半分がＷＲＴ経路にアサインされる。
【００２８】
ＧＭＡＣコアは、ＡＥＳコアの２倍の速さで動作するため、必要とされる数が半分である。
【００２９】
ＡＥＳオペレーションは、ＡＥＳ  ＣＴＲ及びＥＣＢ＋と呼ばれるオペレーションの２つのモードを有する。
【００３０】
ＡＥＳ  ＣＴＲは、固有のＫｅｙ更新毎に、書き込みに対し１回及び読み出しに対しｎ回最適化される。
【００３１】
ＥＣＢ＋は、固有のＫｅｙ更新毎に、書き込みに対しｎ回及び読み出しに対しｎ回最適化される。
【００３２】
コマンドバッファブロック３０３は、データバス３０５上に送出された新たなトランザクションを受け取ることによって、全てのアクティブトランザクションを追跡及びストアする。コマンドバッファブロック３０３は、外部メモリインタフェース（ＥＭＩＦ）への送出されたコマンドに対するＥＭＩＦ応答を追跡する。この情報があると、ＯＴＦＡ＿ＥＭＩＦは、どのコマンドがＥＭＩＦ応答に関連付けられるかを判定する能力を有する。これは、どのコマンド及びアドレスが、ＥＭＩＦが提示している読み出しデータに関連付けられるかを判定するために必要とされる。
【００３３】
スケジューラブロック３０４はメイン制御ブロックであり、（ａ）データ経路配路、（ｂ）ＡＥＳ／ＭＡＣオペレーション、及び（ｃ）読み出し／改変／書き込みオペレーションを制御する。
【００３４】
データ経路配路は、ＡＥＳオペレーションのためのデータソースのシンプルな配路である。入力書き込みデータとＥＭＩＦ読み出しデータの２つのデータソースがあり得る。読出しデータは、内部読み出し改変書き込みオペレーションを要する、読み出しトランザクション又は書き込みトランザクションに必要とされる。
【００３５】
スケジューラブロックは、（ａ）如何なるバイトイネーブルも各１６バイト転送に対してアクティブではないＥＣＢ＋書き込みオペレーションの間と、（ｂ）ＭＡＣがイネーブルされ、書き込まれているブロックが全３２バイト転送ではない、書き込みオペレーションの間との条件の間、内部Ｒｅａｄ  Ｍｏｄｉｆｙ  Ｗｒｉｔｅオペレーションを発行し得る。
【００３６】
スケジューラブロックは、Ｒｅａｄコマンドが３２バイトの倍数でないときＭＡＣイネーブルされた領域にアクセスするとき、改変されたＲｅａｄコマンドを発行し得る。これらのオペレーションを表１に示す。
【表１】
2017526220.tif 000004
【００３７】
暗号化の間、スケジューラはまず、このアドレスがＣｒｙｐｔｏ  Ｒｅｇｉｏｎ（クリプト領域）にあるか否か判定し得、Ｃｒｙｐｔｏ  Ｒｅｇｉｏｎにない場合、Ｃｒｙｐｔｏ  Ｃｏｒｅを迂回する。
【００３８】
アドレスが、Ｃｒｙｐｔｏオペレーションに対するヒットである場合、スケジューラは、その領域のためのＥｎｃｒｙｐｔｉｏｎ（暗号化）モード及びＡｕｔｈｅｎｔｉｃａｔｉｏｎ（認証）モードに基づいてオペレーションのタイプを判定する。
【００３９】
スケジューラはその後、ＨＡＳＨ計算を含むその機能を実装するようにＣｒｙｐｔｏ  Ｃｏｒｅのための必要とされるＣｒｙｐｔｏタスクをスケジュールする。
【００４０】
スケジューラは、読み出し／改変／書き込みが必要とされるかどうかを確認し、適切なコマンドをスケジュールする。
【００４１】
解読の間、スケジューラはまず、このアドレスがＣｒｙｐｔｏ  Ｒｅｇｉｏｎ（クリプト領域）にあるか否か判定し、Ｃｒｙｐｔｏ  Ｒｅｇｉｏｎにない場合、Ｃｒｙｐｔｏ  Ｃｏｒｅを迂回する。
【００４２】
アドレスが、Ｃｒｙｐｔｏオペレーションに対するヒットである場合、スケジューラは、その領域のためのＥｎｃｒｙｐｔｉｏｎ（暗号化）モード及びＡｕｔｈｅｎｔｉｃａｔｉｏｎ（認証）モードに基づいてオペレーションのタイプを判定する。
【００４３】
この情報に基づいて、スケジューラは、コマンドがメモリに送られる前及び読み出しデータがメモリにより戻される前に、それが早期Ｃｒｙｐｔｏオペレーションを開始し得るかを判定し得る。Ｃｒｙｐｔｏオペレーションは、読み出しデータが送り返される前に開始されるので、この早期オペレーションは、性能を高めることができる。
【００４４】
また、スケジューラは、このコマンドがＨＩＴを有するかを判定するためＨＡＳＨ  ＣＡＣＨＥをチェックし得、ＭＩＳＳである場合、読み出しコマンドが送られる前にＨＡＳＨ読み出しを発行し得る。
【００４５】
ＲＤ＿ＤＡＴＡが送り返されるとき、どのコマンドがそれに関連付けられたかを判定するためにＳｃｏｒｅｂｏａｒｄ（スコアボード）が用いられる。これにより、外部メモリへの順不同コマンド、及びメモリからの順不同読み出しデータが可能となる。
【００４６】
読み出しデータが到達した後、データは、処理のためＣｒｙｐｔｏ  Ｃｏｒｅに送られ得る。
【００４７】
幾つかのタイプのＣｒｙｐｔｏ  Ｏｐｅｒａｔｉｏｎ（クリプトオペレーション）では、Ｒｅａｄコマンドがメモリシステムに送られるとき、推論的読み出しクリプトオペレーションが開始し得る。このオペレーションの結果は、推論的読み出しクリプトキャッシュにストアされ、これにより、メモリシステムからの順不同応答が可能となる。
【００４８】
Ｃｒｙｐｔｏ  Ｃｏｒｅは、暗号化又は解読オペレーションにより用いられるようにされ得るコアのセットである。インタフェースは、バックプレッシャー（backpressure）を備えたシンプルなＦＩＦＯ様である。読み出しトラフィックが５０％で書き込みトラフィックが５０％である場合、割り当ては均衡され得る。書き込みトラフィックの方が多い場合、一層多いＣｒｙｐｔｏ  Ｃｏｒｅが書き込みトラフィックに割り当てられ得る。
【００４９】
これは、静的割り当て（６０〜４０スプリットなど）によって成され得るか、又は現在のトラフィックパターンに適合するように動的割り当てによって成され得る。これにより、Ｃｒｙｐｔｏ  Ｃｏｒｅを最大限に利用することが可能となる。
【００５０】
領域チェック機能は、コマンドがメモリ領域を交差しないことを検証し得る。領域が交差されると、そのコマンドはブロックされる。ＷＲ  ＤＡＴＡでは、それにより、全てのバイトイネーブルが無効にされ得る。ＲＤ  ＤＡＴＡでは、それにより、全てのＤＡＴＡでゼロにし得る。セキュアＥｒｒｏｒ事象がカーネルに送られる。これは、不正な又は悪意のあるコードが、セキュアエリアを壊すこと又はセキュアエリアへのアクセスを得ることから防止する。
【００５１】
辞書チェッカー機能は、コマンドが、同じメモリロケーションに複数回アクセスすることにより辞書攻撃（Dictionary attack）をしていないことを検証し得る。コマンドがこれらのルールに反する場合、ＷＲコマンドがＣｒｙｐｔｏ  Ｏｐｅｒａｔｉｏｎを発行しないようにし得、全てのバイトイネーブルを無効にし得る。セキュアＥｒｒｏｒ事象がカーネルに送られる。これは、不正な又は悪意のあるコードが、用いられたＣｒｙｐｔｏ  Ｋｅｙを判定することから防止し、ブルート・フォース・アッタクが、暗号化を破る唯一の方法となる。
【００５２】
ＡＥＳブロック３０２は、下記の入力、即ち、（ａ）（コマンドから、又はバーストコマンドのために計算される）データワードのアドレスと、（ｂ）ＡＥＳモード、並びにＫｅｙサイズ、Ｋｅｙ、及びＩｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ（初期化ベクトル）（ＩＶ）と、（ｃ）Ｒｅａｄ又はＷｒｉｔｅトランザクションタイプ、とを必要とする。
【００５３】
ＡＥＳオペレーションは、暗号化された又は解読されたデータワードを生成する。
【００５４】
ＭＡＣオペレーションは、Ｒｅａｄ及びＷｒｉｔｅオペレーションのためのＭＡＣを生成する。
【００５５】
表２は、Ｅｎｃｒｙｐｔｉｏｎ（暗号化）モード及びＡｕｔｈｅｎｔｉｃａｔｉｏｎ（認証）モードのあり得る組み合わせを定義する。総計９つの組み合わせが許容される。ＧＣＭは、ＡＥＳ−ＣＴＲ＋ＧＭＡＣであり、ＣＣＭは、ＡＥＳ−ＣＴＲ＋ＣＢＣ−ＭＡＣであることに留意されたい。
【表２】
2017526220.tif 000005
【００５６】
ＡＥＳモード０を図４に示す。ＡＥＳコア４０３への入力は、スケジューラ３０４及び暗号化／解読鍵４０２により生成される入力データ４０１である。ＡＥＳコア４０３の出力と、解読の間のＥＭＩＦ読み出しデータ又は暗号化の間のバス書き込みデータは、排他的論理和ブロック４０５により組み合わされる。４０５の出力は、暗号化の間の暗号文、又は解読の間の平文のいずれかである。ＡＥＳモード０は、Ｒｅａｄ  Ｍｏｄｉｆｙ  Ｒｅａｄオペレーションを必要としない。
【００５７】
ＡＥＳモード１を図５に示す。５０１における、解読の間のＥＭＩＦからの読み出しデータ又は暗号化の間のバスからの書き込みデータが、ＸＯＲブロック５０３において、スケジューラ３０４により生成されるデータ５０２と組み合わされる。ＸＯＲブロック５０３の出力は、暗号化又は解読鍵５０４と共に、ＡＥＳコア５０５に入力される。ＡＥＳコア５０５の出力５０６は、解読の間の平文、又は暗号化の間の暗号文である。
【００５８】
本発明の特許請求の範囲内で、説明した例示の実施例に変形が成され得、他の実施例が可能である。
【図１】
2017526220.tif 000006
【図２】
2017526220.tif 000007
【図３】
2017526220.tif 000008
【図４】
2017526220.tif 000009
【図５】
2017526220.tif 000010
【国際調査報告】
2017526220.tif 000011