説明

暗号化ハードウェアサービスのための暗号独立型のインターフェース

暗号独立型の暗号化ハードウェアサービスが開示される。暗号独立型のトランザクションが入力スロット内に受信される(202)。当該入力スロットは当該トランザクションを維持するためのFIFOを含む。当該トランザクションが当該FIFOから除去されるにつれて、当該トランザクションは暗号独立型の形態から暗号依存型の形態に変換されて(206)暗号依存型のタイミングに変換される。暗号固有のハードウェアによる暗号化処理の後、それらの結果は出力FIFOに送られる(212)。複数の暗号化機能が並行して、かつ同時に実行されることが可能なように、複数のFIFO及び暗号化ハードウェアが使用され得る。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
この出願は、2009年2月26日に出願され、その開示全体が、本出願が開示及び教示するものすべてに関して参照により本明細書に明確に組み込まれている「Cipher Independent Interface for Cryptographic Hardware Service」という表題の米国仮出願第61/155,864号に基づき当該仮出願の利益を主張する。
【背景技術】
【0002】
現代の特定用途向け集積回路(ASIC)はますます増大する機能を集積する。これらのいわゆるシステムオンチップ(system−on−a−chip)はコンピュータ又はその他の電子システムの多くの構成要素を単一の集積回路内に組み込む。システムオンチップ設計の1つの利点は、システムオンチップ設計が通常、システムオンチップが取って代わるマルチチップシステムよりも少ない電力を消費し、低いコストを有する点である。さらに、所与のシステム内により少ないパッケージが存在するため、システムオンチップはシステムの生産コスト全体を低減するのに役立つ。
【0003】
システムオンチップ内に組み込まれる機能のいくつかは、グラフィック、イーサネット(登録商標)媒体アクセス制御層(MAC)、ユニバーサルシリアルバス(USB)、メモリコントローラ、及びその他の特定用途論理を含む。ASIC内に組み込まれることが可能な別の演算集約的な機能はハードウェア暗号化(cryptographic)機能ブロックである。様々なアプリケーションに関して、現代のASIC内の暗号化モジュールはますますユビキタスになっている。
【0004】
通常、これらの暗号化モジュールは異なる標準をサポートする。これらの暗号化モジュールは通常、異なるインターフェースを使用する。特に、これらの暗号化モジュールは、多くの場合、入力情報/出力情報に関して非常に特定かつ正確なタイミングスケジュールも要求する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国仮出願第61/155,864号
【発明の概要】
【課題を解決するための手段】
【0006】
従って、本発明の実施形態は、暗号(cipher)独立型の暗号化トランザクションを受信する複数の入力スロット、暗号独立型の暗号化トランザクションを受信して第1の暗号依存型のトランザクションを第1の暗号ハードウェアに送る前記第1の暗号ハードウェアを含む第1のラップされた(wrapped)暗号ブロックであって、前記暗号独立型の暗号化トランザクションを前記第1の暗号依存型のトランザクションに変換して前記第1の暗号ハードウェアから受信された第1の暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換する第1のラップされた暗号ブロック、及び前記第1のラップされた暗号ブロックに関連する前記暗号独立型の結果トランザクションを受信する複数のスロットを有する第1の出力FIFOを備えた暗号化ハードウェアシステムを備え得る。
【0007】
従って、本発明の実施形態は、暗号化サービスを提供する方法であって、暗号独立型の暗号化トランザクションを受信すること、前記暗号独立型の暗号化トランザクションを第1の暗号ハードウェアを含む第1のラップされた暗号ブロック内に受信すること、前記暗号独立型の暗号化トランザクションを第1の暗号依存型のトランザクションに変換すること、第1の暗号依存型のトランザクションを前記第1の暗号ハードウェアに送ること、前記第1の暗号ハードウェアから受信された第1の暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換すること、及び前記暗号独立型の結果トランザクションを第1の出力FIFO内に受信することを備える方法をさらに備える。
【図面の簡単な説明】
【0008】
【図1】暗号化ハードウェアシステムのブロック図である。
【図2】暗号化ハードウェアサービスを提供する方法の流れ図である。
【図3】暗号化ハードウェアシステムを操作する方法の流れ図である。
【図4】暗号固有のトランザクションフォーマット及びタイミングから、スーパー言語(Super Language)でタイミング独立型のトランザクションを導出する例を示す図である。
【図5】入力FIFOに関する例示的なスーパー言語のビットレベル記述を示す図である。
【図6】出力FIFOに関する例示的なスーパー言語のビットレベル記述を示す図である。
【発明を実施するための形態】
【0009】
図1は、暗号化ハードウェアシステムのブロック図である。暗号化ハードウェア100は入力スロット110、入力スロット111、入力スロット112、入力スイッチ115、ディスパッチ120、ラップされた暗号ブロック130、ラップされた暗号ブロック131、出力スイッチ140、出力FIFO150、出力FIFO151及び出力FIFO152を備える。ラップされた暗号ブロック130は、入力変換装置(translator)130−1、暗号ハードウェア130−2、出力変換装置130−3及び制御130−4を含む。ラップされた暗号ブロック131は、入力変換装置131−1、暗号ハードウェア131−2、出力変換装置131−3及び制御131−4を含む。暗号化ハードウェア100の要素のそれぞれは、暗号化ハードウェア100のその他の要素のそれぞれに動作可能に結合される。
【0010】
図1に示すように、入力スロット110〜112はコマンド及びデータを受信するためのシステムに動作可能に結合される。入力スロット110〜112はディスパッチ120に動作可能に結合される。入力スロット110〜112は、入力スイッチ115に動作可能に結合される。入力スイッチ115はディスパッチ120に動作可能に結合される。入力スイッチ115はラップされた暗号ブロック130及びラップされた暗号ブロック131に動作可能に結合される。特に、入力スイッチ115は入力変換装置130−1及び入力変換装置131−1に動作可能に結合される。従って、入力スロット110〜112内に配置された暗号化トランザクションは、ラップされた暗号ブロック130、ラップされた暗号ブロック131、又は追加のラップされた暗号ブロック(図示せず)に経路選択され得る。実施形態では、入力スイッチ115はクロスポイントスイッチであってよく、又はその他のN個×M個のポートの経路選択デバイスであってよく、この場合、Nは入力ポートの数であり、Mは出力ポートの数である。Nは通常、入力スロット110〜112の数に対応することになる。Mは通常、ラップされた暗号ブロック130〜131の数に対応することになる。
【0011】
出力FIFO150〜152は結果及び/又はメッセージを送るためのシステムに動作可能に結合される。出力FIFO150〜152は出力スイッチ140に動作可能に結合される。出力FIFO150〜152はディスパッチ120に動作可能に結合される。出力スイッチ140はディスパッチ120に動作可能に結合される。ラップされた暗号ブロック130〜131は出力スイッチ140に動作可能に結合される。特に、出力スイッチ140は出力変換装置130−3及び出力変換装置131−3に動作可能に結合される。従って、ラップされた暗号ブロック130〜131によって生み出された暗号化の結果トランザクションは出力FIFO150〜152のうちのいずれかに経路選択されることが可能である。実施形態では、出力スイッチ140はクロスポイントスイッチであってよく、又はその他のM個×Q個のポートの経路選択デバイスであってよく、この場合、Mは入力ポートの数であり、Qは出力ポートの数である。Mは通常、ラップされた暗号ブロック130〜131の数に対応することになる。Qは通常、出力FIFO150〜152の数に対応することになる。
【0012】
入力変換装置130−1は暗号ハードウェア130−2に動作可能に結合される。暗号ハードウェア130−2は出力変換装置130−3に動作可能に結合される。入力変換装置130−1、暗号ハードウェア130−2及び出力変換装置130−3はすべて、制御130−4に動作可能に結合される。従って、制御130−4は入力変換装置130−1、暗号ハードウェア130−2及び出力変換装置130−3の動作並びにデータ入力及びデータ出力を管理することが可能である。制御130−4及び入力変換装置130−1は、暗号依存型のタイミングを使用して、暗号依存型のトランザクションを暗号ハードウェア130−2に送るために協働することが可能である。即ち、制御130−4及び入力変換装置130−1は、データ信号及び制御信号をある形態でかつ暗号ハードウェア130−2によって要求されるタイミングを用いて、暗号ハードウェア130−2に送るために協働することが可能である。
【0013】
入力変換装置131−1は暗号ハードウェア131−2に動作可能に結合される。暗号ハードウェア131−2は出力変換装置131−3に動作可能に結合される。入力変換装置131−1、暗号ハードウェア131−2及び出力変換装置131−3はすべて、制御131−4に動作可能に結合される。従って、制御131−4は入力変換装置131−1、暗号ハードウェア131−2及び出力変換装置131−3の動作並びにデータ入力及びデータ出力を管理することが可能である。制御131−4及び入力変換装置131−1は、暗号依存型のタイミングを使用して、暗号依存型のトランザクションを暗号ハードウェア131−2に送るために協働することが可能である。即ち、制御131−4及び入力変換装置131−1は、データ信号及び制御信号をある形態でかつ暗号ハードウェア131−2によって要求されるタイミングを用いて、暗号ハードウェア131−2に送るために協働することが可能である。
【0014】
実施形態では、入力スロット110〜112は入力FIFOを含み得る。これらの入力FIFOはシステムから暗号独立型の暗号化トランザクションを受信することが可能である。加えて、入力スロット110〜112は、まだ開始されていない暗号化トランザクションに対する優先順位を受信及び/又は演算することが可能である。複数の入力スロット110〜112が存在するため、複数のラップされた暗号ブロック130〜131は並行してかつ独立してアクセスされ得る。並行して、かつ独立して実行され得る複数のトランザクションの数は、入力スロット110〜112内のFIFOの数及びラップされた暗号ブロック130〜131の数によって限定される。従って、ラップされた暗号ブロック130は、ラップされた暗号ブロック131が暗号独立型の暗号化トランザクションを入力スロット112から受信及び処理しているのと同時に、入力スロット110から暗号独立型の暗号化トランザクションを受信及び処理していることが可能である。
【0015】
ディスパッチ120は、どのラップされた暗号ブロック130〜131とどの出力FIFO150〜152とが使用中であるかを知ることができる。ディスパッチ120は、入力スロット110〜112、ラップされた暗号ブロック130〜131及び出力FIFO150〜152の間の対応関係を知ることができる。従って、ディスパッチ120は、入力スイッチ115及び出力スイッチ140を制御することが可能である。ディスパッチ120は、開始する目的で暗号化トランザクションを選択するため、及び暗号化の結果トランザクションを受信する目的で出力FIFO150〜152を割り当てるためにも入力スロット110〜112を観察することが可能である。
【0016】
入力スイッチ115は、入力スロット110〜112及びラップされた暗号ブロック130〜131の間の接続を提供する。入力スイッチ115はラップされた暗号ブロック130〜131から状態信号を受信することも可能である。例えば、入力スイッチ115は制御130−4及び制御131−4からトランザクション完了指示子を受信することが可能である。それに応じて、入力スイッチ115は入力スロット110〜112が再使用され得るという指示子をディスパッチ120に送ることができる。
【0017】
ラップされた暗号ブロック130〜131は、それぞれの特定の暗号ハードウェア130−2及び131−2に対して個々に開発され得る。ラップされた暗号ブロック130〜131は均一のデータ及び信号インターフェースを提供する。この均一のデータ及び信号インターフェースは入力と出力の両方の上に標準のFIFOのようなインターフェースを備え得る。この標準のインターフェースは、暗号独立型の暗号トランザクションが入力スロット110〜112内に配置され、ラップされた暗号ブロック130〜131によって実行される暗号機能(例えば、暗号化コード)を決定する基礎となる暗号ハードウェア130−2及び131−2に関係なく、ラップされた暗号ブロック130〜131に経路選択されることを可能にする。
【0018】
実施形態では、基礎となる暗号ハードウェア130−2及び131−2は異なる暗号を実施することが可能であり、又は同じ暗号を実施することも可能である。加えて、暗号ハードウェア130−2及び131−2は異なるタイミング要件を有する可能性がある。しかし、入力スロット110〜112内のFIFO、及び出力FIFO150〜152は、暗号独立型の暗号化トランザクション及び暗号独立型の結果トランザクションが暗号ハードウェア130−2及び131−2の入力要件並びにタイミング要件に関係なくそれぞれ入力スロット110〜112及び出力FIFO150〜152に書き込まれ、入力スロット110〜112及び出力FIFO150〜152から読み取られることを可能にする。
【0019】
制御130−4及び131−4はそれぞれ暗号ハードウェア130−2及び131−2を制御する。制御130−4及び131−4は、暗号独立型の暗号化トランザクションを暗号ハードウェア130−2及び131−2が理解することが可能な形態並びにタイミングに処理するために、入力変換装置130−1及び131−1も制御する。制御130−4及び131−4は、暗号ハードウェア130−2及び131−2から受信された暗号依存型の結果を出力FIFO150〜152並びに当該システムの残りの部分が理解することが可能な暗号独立型の形態及びタイミングに処理するために、出力変換装置130−3及び131−3も制御する。
【0020】
入力スイッチ140は出力FIFO150〜152及びラップされた暗号ブロック130〜131の間の接続を提供する。出力FIFO150〜152は出力スイッチ140を経由してラップされた暗号ブロック130〜131から暗号独立型の結果トランザクションを受け入れる。出力FIFO150〜152は当該出力FIFO150〜152が一杯である、又はほぼ一杯であるという表示を提供することも可能である。この表示は、出力スイッチ142によって、ラップされた暗号ブロック130〜131に中継され得る。この表示は暗号ハードウェア130−2及び131−2が実行するのを停止させることができる。暗号ハードウェア130−2及び131−2を停止することによって、出力FIFO150〜152がオーバーフローするのを防ぐ。
【0021】
前述の暗号化ハードウェア100は、複数の暗号化トランザクションを並行して実行することが可能な複数のI/Oチャネルを提供する。暗号独立型の暗号化トランザクションを受信するFIFOベースの入力スロット110〜112を使用することによって、詳細な時間スケジューリング及びデータフォーマッティングは不要である。暗号独立型の暗号化トランザクションはすべての暗号並びに暗号ハードウェア130−2及び131−2に均一のインターフェースを提供する。これにより、入力スロット110が暗号独立型の暗号化トランザクションをラップされた暗号ブロック130に提供していて、それらの結果が出力FIFO150内に配置されている間に入力スロット111は暗号独立型の暗号化トランザクションをラップされた暗号ブロック131に同時に提供していて、それらの結果が出力FIFO152内に配置されることが可能である。実施形態では、この均一のインターフェースは8ビットの制御及び64ビットのデータを備え得る。
【0022】
暗号化ハードウェア100は、付加された暗号ブロックの全域での均一のインターフェース、それぞれの個々の暗号のパラメータ、入力チャネル/出力チャネルの数、FIFOのサイズ、及び暗号及びFIFOの間のトポロジー(即ち、専用接続/共有接続/混合接続)を提供する。加えて、暗号独立型の暗号化トランザクションは、バイナリ言語又はニーモニック言語で表現され得る。提案されるアーキテクチャ及び技術的解決策は、非常に好都合で、柔軟性があり、また組み合わせ安いことも推定される。
【0023】
業界において、全面的にハードウェアの形で利用可能な組み合わされた暗号サービスを提供する、かかる暗号化モジュールはほんのわずかしか存在しない点に留意されたい。非常に競争的な暗号ライブラリブロックと組み合わせて、暗号化ハードウェア100は、その両方が開発のために存在し、かつ開発が計画される増大するデータ保護市場の獲得及び様々なアプリケーションに対するセキュリティ需要に対する契機契機が得られることを可能にする。
【0024】
暗号化ハードウェア100のこのアーキテクチャは暗号ブロックのためのドロップイン解決策をサポートする。ディスパッチャ120は並行トランザクションのための柔軟性のあるマルチストリーム入力チャネル/出力チャネルを可能にする。ディスパッチャ120はトランザクション優先順位、デッドロック・ハンドリング、マルチスレッド及び取消しをサポート及び処理する。
【0025】
暗号化ハードウェア100の複雑な構造の開発は、包括的なデバッグ及びテストシステムの確立を要求する可能性がある。従って、内蔵型のテスト能力、デバッグサポート能力、エラー検出能力及びエラー回復能力が提供される。
【0026】
提案される暗号化ハードウェア100のこのアーキテクチャ及びハードウェア実装は、様々なハードウェアアプリケーション及び/若しくはハードウェアプロトコル並びに/又はファームウェアアプリーション及び/若しくはファームウェアプロトコルのために、複数の組み合わされた暗号サービスを提供する。サポートされる暗号サービスは、いわゆるプレイングカード(Playing card)によって均一のスーパー言語で好都合かつ容易に表現され得る。プレイングカードは暗号ジョブ記述にとって本質的に好都合なテンプレートである。
【0027】
ガロ・カウンタ・モード(GCM)の形でAES暗号を実施している暗号ハードウェア100を駆動するために使用され得る暗号独立型の暗号化トランザクションの例が表1に提示される。これは、入力変換装置130−1及び131−1によって受信され得るデータの例である。表1において、それぞれのセミコロン(「;」)はクロック周期を示す点に留意されたい。従って、例えば、BEGIN_TRANS及び第1のSEND_KEY_0トランザクションの間には、1クロック周期だけが存在する。
【表1】

【0028】
ガロ・カウンタ・モード(GCM)の形でAES暗号を実施する暗号ハードウェアを駆動する(ニーモニック形態の)暗号依存型のトランザクションの例が表2に提示される。これは、暗号独立型の暗号化トランザクションが入力変換装置130−1及び131−1によって変換された後で、暗号ハードウェア130−2及び131−2によって受信され得るデータの例である。表2では、それぞれのセミコロン「;」はクロック周期を示す点に留意されたい。従って、例えば、save_key及び第1のmake_maskトランザクションの間には15クロック周期が存在する。従って、入力変換装置130−1及び131−1によって実行される変換はビットフォーマット及び時間の両方において変換を行うように機能する。同様に、出力変換装置130−3及び131−3はビットフォーマット及び時間の両方において暗号ハードウェア130−2並びに131−2の出力を変換するように機能し得る。
【表2】

【0029】
図2は、ハードウェア暗号化サービスを提供する方法の流れ図である。図2に示されるステップは暗号化ハードウェア100の1つ又は複数の要素によって実行され得る。暗号独立型の暗号化トランザクションが受信される(202)。例えば、入力スロット110は暗号独立型の暗号化トランザクションを受信することが可能である。入力スロット110は暗号独立型の暗号化トランザクションをFIFO内に受信することが可能である。暗号独立型の暗号化トランザクションは暗号ハードウェアを含むラップされた暗号ブロック内に受信される(204)。例えば、ラップされた暗号ブロック130は入力スイッチ115を経由して入力スロット110から暗号独立型の暗号化トランザクションを受信することが可能である。ラップされた暗号ブロック130は暗号ハードウェア130−2を含み得る。
【0030】
暗号独立型の暗号化トランザクションは暗号依存型のトランザクションに変換される(206)。例えば、入力変換装置130−1は暗号独立型の暗号化トランザクションを暗号ハードウェア130−2に適した暗号依存型のトランザクションに変換する。実施形態では、暗号独立型の暗号化トランザクションから暗号依存型の暗号化トランザクションへのこの変換は、形態、フォーマット、ビット順序、コマンドシーケンス、及び/又はタイミングの変換を含み得る。即ち、入力変換装置130−1は入力スロット110内に記憶され、かつ入力スロット110から受信された暗号独立型の暗号化トランザクションを、暗号ハードウェア130−2を駆動するのに適切なデータ信号及び制御信号に変換するために任意の形態の状態機械又はその他の論理を実施する。
【0031】
暗号依存型のトランザクションが暗号ハードウェアに送られる(208)。例えば、入力変換装置130−1からの暗号依存型のトランザクション及び制御130−4からの制御信号は暗号ハードウェア130−2に送られることが可能である。これらの暗号依存型のトランザクション及び制御信号は暗号ハードウェアにその暗号機能を実行させることが可能である。これらの暗号機能は暗号ハードウェアに暗号依存型の結果を生み出させることが可能である。これらの暗号依存型の結果は暗号依存型の結果トランザクション及び/又は制御信号を含んでよく、又は暗号依存型の結果トランザクション及び/又は制御信号であり得る。
【0032】
暗号ハードウェアから受信された暗号依存型の結果トランザクションは暗号独立型の結果トランザクションに変換される(210)。例えば、出力変換装置130−3は暗号ハードウェア130−2から受信された暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換することが可能である。暗号独立型の結果トランザクションは出力FIFO内に受信される(212)。例えば、出力FIFO150は出力スイッチ140を経由して出力変換装置130−3から暗号独立型の結果トランザクションを受信することが可能である。
【0033】
図3は暗号化ハードウェアシステムを操作する方法の流れ図である。図3に例示されたステップは暗号化ハードウェア100の1つ又は複数の要素によって実行され得る。ジョブ要求は入力スロット内に配置される(302)。例えば、暗号独立型のジョブ要求は入力スロット110内に配置され得る。ディスパッチユニットは開始ラベル及び現在の優先順位を受信する(304)。例えば、ディスパッチ120は入力スロット110から開始信号及び優先順位の指示子を受信することが可能である。
【0034】
このディスパッチユニットは入力スイッチ及び出力スイッチを構成する(306)。例えば、ディスパッチ120は入力スロット110からラップされた暗号ブロック130に暗号独立型の暗号化トランザクションを経路選択するように入力スイッチ115を構成することが可能である。ディスパッチ120はラップされた暗号ブロック130から出力FIFO150に暗号独立型の結果トランザクションを経路選択するように出力スイッチ140を構成することが可能である。
【0035】
ラップされた暗号ブロック制御は開始信号を受信する(308)。例えば、制御130−4は、制御130−4が開始信号と解釈することになる「開始」トランザクションを受信することが可能である。入力変換装置は受信された暗号独立型のトランザクションを暗号依存型のトランザクションに変換して、それらの暗号依存型のトランザクションを暗号ハードウェアに送る(310)。例えば、制御130−4は読取り要求を入力スロット110に送ることが可能である。これは、暗号独立型の暗号化トランザクションを入力スロット110から入力変換装置130−1に送らせることができる。入力変換装置130−1は、次に、受信された暗号独立型のトランザクションを暗号依存型のトランザクションに変換する。これらの暗号依存型のトランザクション及び/又は制御信号は暗号ハードウェア130−2に送られることが可能である。
【0036】
暗号ハードウェアは暗号機能を実行する(312)。例えば、暗号ハードウェア130−2は暗号機能を実行することが可能である。例では、暗号ハードウェアはAES、TDES、Kasumi、SHA、RSA/ECC又は別の暗号機能を実行することが可能である。出力変換装置は、受信された暗号依存型のトランザクションを暗号独立型のトランザクションに変換して、これらの暗号独立型のトランザクションを出力FIFOに送る(314)。例えば、出力変換装置130−3は、暗号ハードウェア130−2から受信された暗号依存型の結果トランザクション及び/又は制御信号を暗号独立型の結果トランザクションに変換することが可能である。これらの暗号独立型の結果トランザクションは出力スイッチ140を経由して出力FIFO150に送られることが可能である。
【0037】
暗号ハードウェアは完了信号を送る(316)。例えば、暗号ハードウェア130−2は、暗号依存型のトランザクション又はその暗号依存型のトランザクションが完了したことを示す制御信号を送ることが可能である。ディスパッチユニットは入力スイッチ及び出力スイッチの接続を断つ(318)。例えば、ディスパッチ120はラップされた暗号ブロック130から入力スロット110の接続を断つように入力スイッチ115に命令することができる。ディスパッチ120はまた出力FIFO150からラップされた暗号ブロック130の接続を断つように出力スイッチ140に命令することもできる。実施形態ではディスパッチ120に送られる2つの指示子が存在し得る。第1の指示子は、最後の暗号独立型の暗号化トランザクションが入力変換装置に送られるときに送られることになる。その時点で、ディスパッチ120は、より多くの暗号独立型の暗号化トランザクションを受信するために入力スロットを開放することが可能である。第2の指示子は最後の暗号独立型の結果トランザクションが出力変換装置を出たときに送られることになる。
【0038】
実施形態では、特定の暗号/ハッシャに関係するトランザクションはサポートされるプレイングカードに準拠する。不一致はエラーを引き起こす。即ち、制御130−4又は131−4はエラー状態(ERR)になり、エラー出力信号が発行され得る。エラー状態から機能を回復するために取消し入力信号が送られる必要がある。これは、暗号化ハードウェア100に以下を行わせる。即ち、(1)現在のトランザクションデータの残りを入力スロット110〜112内の入力FIFOから除去し、(2)「中断/取消し」の組合せ(例えば、有効=1、無効=0、開始=1)をラップされた暗号ブロック130〜131に送ることである。ラップされた暗号ブロック130〜131は、(1)ERR_END_TRANSブロックを出力FIFO150〜152内に送ってDONE_WRITE信号を発行し、(2)暗号ハードウェア130−2 131−2を新しいトランザクションの処理を開始する準備が整った開始状態に設定し、(3)制御130−4 131−4の内部状態をその初期状態に変更する。
【0039】
個々の暗号ハードウェアユニットは非常に複雑なI/Oインターフェースフォーマット及びタイミングスケジュールを使用することが可能である。この例は、表3の第1の列に提示される。実施形態では、データフローはタイミングスケジュールなしにFIFOを経由して送られた64ビットのブロックの点から説明される。これらはオプコード及び少数のフラッグ(例えば、最後={0,1}又はサイズ={1..8})を含む8ビットの制御信号を介してマークアップ言語でフォーマットされ得る。入力FIFO及び出力FIFOに関するこのマークアップの例は表3の第3及び第4の列に提示される。
【表3】

【0040】
表3において、BEGIN_TRANS及びEND_TRANS(並びに、それらのエラー変形)は、2つの特別なコマンド、即ち、トランザクション「ラップすること」、並びに、トランザクションを一般的な用語で定義することである。これらのトランザクションは以下の引数を有する。即ち、(1)Id。特定のトランザクションに関連するユーザ定義された整数、(2)優先順位。当該トランザクションに関連するユーザ定義された整数、(3)状況。暗号を定義する事前に定義された整数、(4)パラメータ。特定の暗号モード(例えば、暗号化と復号モードの関係、タグが生成されなければならない、など)を特定する事前に定義された整数(又は制御ビットのセット)である。
【0041】
実施形態では、暗号のすべてのタイプの入力データは、64ビットのブロックに分割される。これらのブロックは、3つのタイプの区分に分類され得る。即ち、(1)SEND_KEY区分、(2)SEND_IV区分、(3)SEND_DATA区分である。それぞれのタイプは4つの個々の変形によって表現され得る。これらのタイプは、例えば、マスタキー及び二次キーを特定するときに使用され得る。例えば、これらの変形の例は、(1)SEND_KEY_0区分、(2)SEND_KEY_1区分、(3)SEND_KEY_2区分、及び(4)SEND_KEY_3区分である。
【0042】
これらの区分/変形を符号化するために、我々は8ビットのコマンドバスの4個の最下位のビットを使用する。即ち、オプコード=コマンド[3:0]である(BEGIN_TRANS及びEND_TRANSに関するコードは同じコードスペースを共有することができる)。区分のセット及び区分の順序は状況に依存する。通常、この状況は、使用される区分のセット及び区分の順序の両方を厳密に特定する。それぞれの区分内の最後のコマンドは、「最後=1」など、特別なフラッグによって印されることが可能であり、従って、すべてのその他のコマンドは「最後=0」を有さなければならない。この「最後の」ビットはコマンド[4]である。「aux」(aux=コマンド[7:5])と名づけられた3個の最上位のビットが符号長に対して使用され得る。例えば、不完全なデータブロックをバイト粒度で送っている場合、0は完全な8バイトのデータを意味し、n(この場合、n=1,2,...,7)はnバイトの不完全なデータを意味する。デフォルトによって、これらは最上位のバイトとなり得る。
【0043】
図4は暗号固有のトランザクションフォーマット及びタイミングからスーパー言語でタイミング独立型のトランザクションを導出する例である。図4において、コマンドフロー状態図は暗号固有のトランザクションフォーマット及びタイミングから導出される。制御状態図はコマンドフロー状態図から導出される。最終的に、スーパー言語(「プレイングカード」)でタイミング独立型のトランザクションがフロー状態図から導出される。
【0044】
図5は入力スロット110〜112のFIFOに関する例示的なスーパー言語のビットレベル記述を示す。図5において、BEGIN_ERR_TRAN及びBEGIN_TRANの場合、XXXとして示される3個の最下位のビット(LSB)は未使用である。Eとして示される最上位のビットはBEGIN_ERR_TRANに関して1に設定される。BEGIN_ERR_TRANS及びBEGIN_TRANに関するオプコードは0001である。SEND_KEY_NN、SEND_IV_NN、及びSEND_DATA_NNに関するオプコードは、それぞれ01NN、10NN、及び11NNである。NNは2進法で0、1、2又は3を示す。従って、例えば、SEND_DATA_01は1101になる。Lビットは「最後の」フラッグを表す。SSSは不完全なデータ長の符号化のために使用され得る3個のビットを示す。END_TRAN、及びEND_ERR_TRANに関するオプコードは0010である。Eビット(エラーフラッグ)はEND_TRANに関して0に設定され、END_ERR_TRANに関して1に設定される。
【0045】
図6は出力FIFO150〜152に関する例示的なスーパー言語のビットレベル記述を示す。図6において、BEGIN_ERR_TRAN及びBEGIN_TRANの場合、XXXとして示される3個の最下位のビット(LSB)は未使用である。Eとして示される最上位のビットはBEGIN_ERR_TRANに関して1に設定される。BEGIN_ERR_TRAN及びBEGIN_TRANに関するオプコードは0001である。結果及びタグに関するオプコードは、それぞれ11ZZ及び10ZZである。ZZは2進法で0、1、2、又は3を示す。オプコードの最初の2個のビットと共に、ZZビットはブロックタイプ(例えば、結果、タグ、ハッシュ、など)を示す。Lビットは「最後の」フラッグを表す。SSSは不完全なデータ長の符号化のために使用され得る3個のビットを示す。END_TRAN、及びEND_ERR_TRANに関するオプコードは0010である。Eビット(エラーフラッグ)はEND_TRANに関して0に設定され、END_ERR_TRANに関して1に設定される。
【0046】
スーパー言語、プレイングカード、及び暗号化ハードウェア100の動作の概念をさらに例示するために、以下は、3つの異なる形態、即ち、(a)「数理」言語で、即ち、GCM−AES標準の点から、(b)GCM−AESコアに関するプロトコルの「固有の」ニーモニックフォーマットで、(c)GCM−AES暗号化機能ユニット(CFU)向けの対応するトランザクションのスーパー言語のニーモニックフォーマットで、サンプルのGCM−AESトランザクションを提示する。これらのトランザクションは、それぞれ表4、表5及び表6に示される。留意すべき(b)及び(c)の間の差は、(b)において、プロトコルはクロックに関して正確(clock accurate)であり、「;」は「新しいクロック周期」を示す。即ち、第1のMAKE_MASKは、SAVE_KEYのまさしく15クロック周期後に送られなければならない。(c)において、「;」は、単にデータブロックの分離符であり、データブロックはランダムなクロック周期で、FIFOのようなインターフェースにプッシュされることが可能であり、かつ/又はFIFOのようなインターフェースからポップされることが可能である。この差は図5及び表3においても例示される。
【0047】
GCM−AES暗号の例示的な入力パラメータ及び変数が表4に提示される。
【表4】

【0048】
組織される「固有の」ニーモニックフォーマット内のGCM−AESコアプロトコルと同じ情報が表5に示される。
【表5】

【0049】
スーパー言語のニーモニックフォーマットで組織された、GCM−AES CFUトランザクションと同じ情報が表6に示される。
【表6】

【0050】
表7はGCM−AES/GMACに関する例示的なプレイングカードを提示する。
【表7】














【0051】
本発明の先の記述は例示及び説明のために提示されている。本発明の先の記述は網羅的であること又は本発明を開示されたまさにその形態に限定することが意図されず、上の教示に照らしてその他の修正形態及び改変形態が可能であり得る。当該実施形態は、それにより、その他の当業者が、企図される特定の使用に適した様々な実施形態及び様々な修正形態で本発明を最もよく利用することを可能にするために、本発明の原理及びその実際的な適用を最もよく説明する目的で選択及び説明された。添付の特許請求の範囲は、先行技術によって限定される範囲を除き、本発明のその他の代替の実施形態を包括すると解釈されることが意図される。

【特許請求の範囲】
【請求項1】
暗号化ハードウェアシステムであって、
暗号独立型の暗号化トランザクションを受信する複数の入力スロット、
暗号独立型の暗号化トランザクションを受信して第1の暗号依存型のトランザクションを第1の暗号ハードウェアに送る、前記第1の暗号ハードウェアを含む第1のラップされた暗号ブロックであって、前記暗号独立型の暗号化トランザクションを前記第1の暗号依存型のトランザクションに変換し、前記第1の暗号ハードウェアから受信された第1の暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換する第1のラップされた暗号ブロック、及び
前記第1のラップされた暗号ブロックに関連する前記暗号独立型の結果トランザクションを受信する複数のスロットを有する第1の出力FIFO
を備えた暗号化ハードウェアシステム。
【請求項2】
請求項1のシステムにおいて、前記ラップされた暗号ブロックが、暗号依存型のタイミングを使用して、前記第1の暗号依存型のトランザクションを前記第1の暗号ハードウェアに送る、システム。
【請求項3】
請求項1のシステムであって、さらに、
暗号独立型の暗号化トランザクションを受信して第2の暗号依存型のトランザクションを第2の暗号ハードウェアに送る、前記第2の暗号ハードウェアを含む第2のラップされた暗号ブロックであって、前記暗号独立型の暗号化トランザクションを前記第2の暗号依存型のトランザクションに変換し、前記第2の暗号ハードウェアから受信された第2の暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換する第2のラップされた暗号ブロック
を備えたシステム。
【請求項4】
請求項3のシステムであって、さらに、
暗号独立型の暗号化トランザクションを受信して暗号独立型の暗号化トランザクションを前記第1のラップされた暗号ブロック及び前記第2のラップされた暗号ブロックに送る入力スイッチ
を備えたシステム。
【請求項5】
請求項4のシステムであって、さらに、
第1のラップされた暗号ブロックから暗号独立型の結果トランザクションを受信して前記第1のラップされた暗号ブロックに関連する暗号独立型の結果トランザクションを前記第1の出力FIFOに送り、前記第2のラップされた暗号ブロックに関連する暗号独立型の結果トランザクションを第2の出力FIFOに送る出力スイッチ
を備えたシステム。
【請求項6】
請求項5のシステムであって、さらに、
前記入力スイッチ及び前記出力スイッチを制御するディスパッチユニット
を備えたシステム。
【請求項7】
請求項6のシステムにおいて、前記ディスパッチユニットが、前記第1の暗号ハードウェア及び前記第2の暗号ハードウェアが並行して暗号化機能を実行するように、前記入力スイッチ、前記出力スイッチ、前記第1のラップされた暗号ブロック及び前記第2のラップされた暗号ブロックを制御する、システム。
【請求項8】
請求項3のシステムにおいて、前記第1の暗号ハードウェア及び前記第2の暗号ハードウェアが第1の暗号を実施する、システム。
【請求項9】
請求項3のシステムにおいて、前記第1の暗号ハードウェアが第1の暗号を実施し、前記第2の暗号ハードウェアが第2の暗号を実施する、システム。
【請求項10】
暗号化サービスを提供する方法であって、
暗号独立型の暗号化トランザクションを受信するステップ、
前記暗号独立型の暗号化トランザクションを第1の暗号ハードウェアを含む第1のラップされた暗号ブロック内に受信するステップ、
前記暗号独立型の暗号化トランザクションを第1の暗号依存型のトランザクションに変換するステップ、
第1の暗号依存型のトランザクションを前記第1の暗号ハードウェアに送るステップ、
前記第1の暗号ハードウェアから受信された第1の暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換するステップ、及び
前記暗号独立型の結果トランザクションを第1の出力FIFO内に受信するステップ
を備える方法。
【請求項11】
請求項10の方法において、第1の暗号依存型のトランザクションを送る前記ステップが、暗号依存型のタイミングを使用して前記第1の暗号依存型のトランザクションを前記第1の暗号ハードウェアに送る、方法。
【請求項12】
請求項10の方法であって、
暗号独立型の暗号化トランザクションを第2の暗号ハードウェアを含む第2のラップされた暗号ブロック内に受信するステップ、
前記暗号独立型の暗号化トランザクションを第2の暗号依存型のトランザクションに変換するステップ、
第2の暗号依存型のトランザクションを前記第2の暗号ハードウェアに送るステップ、及び
前記第2の暗号ハードウェアから受信された第2の暗号依存型の結果トランザクションを暗号独立型の結果トランザクションに変換するステップ
を備える方法。
【請求項13】
請求項12の方法において、前記第1の暗号ハードウェア及び前記第2の暗号ハードウェアが並行して暗号化機能を実行する、方法。
【請求項14】
請求項10の方法において、前記暗号独立型の暗号化トランザクションがタイミング情報を伴わずに特定される、方法。
【請求項15】
請求項12の方法において、前記第1の暗号ハードウェア及び前記第2の暗号ハードウェアが第1の暗号を実施する、方法。
【請求項16】
請求項12の方法において、前記第1の暗号ハードウェアが第1の暗号を実施し、前記第2の暗号ハードウェアが第2の暗号を実施する、方法。
【請求項17】
請求項16の方法であって、前記第1の暗号ハードウェア及び前記第2の暗号ハードウェアが異なるタイミング要件を有する、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2012−519414(P2012−519414A)
【公表日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−552011(P2011−552011)
【出願日】平成21年4月10日(2009.4.10)
【国際出願番号】PCT/US2009/040154
【国際公開番号】WO2010/098778
【国際公開日】平成22年9月2日(2010.9.2)
【出願人】(508243639)エルエスアイ コーポレーション (124)
【Fターム(参考)】