(57)【特許請求の範囲】
【請求項１】
８０バイト以下である短い演算のための、データ暗号化規格（ＤＥＳ）方式による暗号方法であって、
ホスト側の中央演算処理装置が、複数の前記短いＤＥＳ要求を一括して、単一の要求（以下、一括されたＤＥＳ要求）にするステップであって、前記短いＤＥＳ要求は、短い演算パラメータと短い演算対象データとからなるＤＥＳ要求であり、前記一括されたＤＥＳ要求は、カード側のダイナミック・ランダム・アクセス・メモリ内に格納される、前記ステップと、
ＤＥＳエンジンを備える前記カード側の中央演算処理装置が、前記ダイナミック・ランダム・アクセス・メモリから前記一括されたＤＥＳ要求を読み出して、前記ＤＥＳエンジンにロードし、各ＤＥＳ要求に対応する演算パラメータに従って、前記ＤＥＳ要求中の短い演算ごとに個別に前記ＤＥＳによる暗号化を前記ＤＥＳエンジンに実行させるステップと
を含む方法。
【請求項２】
前記演算が８バイトから８０バイトの間である、請求項１に記載の方法。
【請求項３】
８０バイト以下である短い演算のための、データ暗号化規格（ＤＥＳ）方式による暗号システムであって、
複数の前記短いＤＥＳ要求を一括して、単一の要求（以下、一括されたＤＥＳ要求）にするホスト側の中央演算処理装置であって、前記短いＤＥＳ要求は、短い演算パラメータと短い演算対象データとからなるＤＥＳ要求であり、前記一括されたＤＥＳ要求は、カード側のダイナミック・ランダム・アクセス・メモリ内に格納される、前記ホスト側の中央演算処理装置と、
前記ダイナミック・ランダム・アクセス・メモリから前記一括されたＤＥＳ要求を読み出して、前記ＤＥＳエンジンにロードする、ＤＥＳエンジンを備える前記カード側の中央演算処理装置であって、各ＤＥＳ要求に対応する演算パラメータに従って、前記ＤＥＳ要求中の短い演算ごとに個別に前記ＤＥＳによる暗号化を前記ＤＥＳエンジンに実行させる、前記カード側の中央演算処理装置と
を備えている、前記暗号システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は暗号サポートに関し、より詳細には短い演算(operation)のための暗号サポートに関する。
【０００２】
本出願は、２０００年５月１日付けで出願された仮出願６０／２０１，００２の特典を請求する正式出願である。
【０００３】
【従来の技術】
データ暗号化規格（ＤＥＳ）は、幅広く使用される、秘密鍵を使用したデータ暗号化の一方式である。ＤＥＳでは、電子ネットワーク上の当事者間でパケットの保護に使用することのできる可能な暗号鍵が７２×１０15個以上存在する。パケットまたはメッセージごとに鍵が無作為に選択される。他の対称鍵暗号方式と同様に、送信側と受信側の双方が同じ秘密鍵を知り、使用する必要がある。
【０００４】
ＤＥＳでは５６ビットの鍵を６４ビットの各データ・ブロックに適用する。このプロセスではいくつかのモードを実行することができ、また１６回の演算が含まれる。これは強い暗号化であると考えられるが、多くの企業では各パケットに３つの鍵を連続的に適用するトリプルＤＥＳ（ＴＤＥＳ）を使用している。
【０００５】
ＤＥＳは１９７７年にＩＢＭで開発され、米国国防総省で採用された。ＤＥＳは、ＡＮＳＩ  Ｘ．３．９２およびＸ３．１０６規格と、連邦情報処理標準（ＦＩＰＳ）４６および８１標準に仕様が規定される。
【０００６】
【発明が解決しようとする課題】
典型的には、暗号方式は大きなパケット（約８０バイトを超えるパケット）を主な対象とする。しかし、より小さなパケットにＤＥＳシステムを使用すると、性能がある程度低下する可能性がある。
【０００７】
このため、長いパケット（＞８０バイト）と短いパケットに対して高いスループットを有するＤＥＳ演算用の暗号サポートの、システムおよび方法が必要とされている。
【０００８】
【課題を解決するための手段】
本発明の一実施形態によると、短い演算用の対称鍵暗号方法が提供される。この方法は、複数の演算パラメータを一括すること、および、対応する演算パラメータに応じて演算を実行することを含む。この対称鍵暗号方法は、データ暗号化規格（ＤＥＳ）方式である。短い演算は、約８０バイト未満のものなどである。短い演算は、８バイトから８０バイトの間のものである。
【０００９】
この方法は、複数の演算パラメータと複数のＤＥＳ演算を１つの要求に一括すること、要求内の演算ごとにＤＥＳを呼び出すこと、および、対応する演算パラメータに従って演算ごとに個別にＤＥＳを実行することを含む。
【００１０】
この方法はさらに、複数の演算パラメータと複数のＤＥＳ演算を単一の要求に一括すること、一括した演算に対してＤＥＳを呼び出すこと、および、対応する演算パラメータに従って演算ごとに個別にＤＥＳを実行することを含む。各要求は、チップ・リセット、鍵、および初期化ベクトルを用いて実行される。一括された演算に対してＤＥＳを呼び出すことはさらに、一括した演算のためにコンテクストを切り替えることを含む。コンテクストの切り替えは、アプリケーション・レイヤとシステム・ソフトウェア・レイヤ間の切り替えである。
【００１１】
この方法は、ダイナミック・ランダム・アクセス・メモリから一括されたパラメータを読み出すこと、および演算パラメータに従ってＤＥＳエンジンを通じて各演算を伝達することを含む。
【００１２】
本発明の一実施形態によると、ＤＥＳの短い演算のスループットを向上する方法が提供される。この方法は、複数の演算パラメータを一括し、各演算パラメータはある演算に対応すること、一括された演算パラメータをダイナミック・ランダム・アクセス・メモリに読み込むこと、および、演算パラメータに従ってＤＥＳエンジンを通じて各演算を伝達することを含む。ＤＥＳは、外部−外部であり、各演算の出力は個別に伝達される。短い演算とは約８０バイト未満などのものである。その短い演算は、８バイトから８０バイトの間であり得る。
【００１３】
本発明の一実施形態によると、長さが約８バイトから約８０バイトの演算のための対称鍵暗号方法が提供される。この方法は、鍵のインデックスをエンジンに提供すること、および、エンジンを通じて演算をまとめて送り出し、中央演算処理装置がそのバイトを処理しないことを含む。このエンジンはＤＥＳエンジンである。
【００１４】
この方法は、演算のためにエンジン・チップをリセットすること、初期化ベクトルを読み出すこと、および初期化ベクトルをエンジン・チップにロードすることを含む。この方法はさらに、鍵インデックスから鍵を決定すること、その鍵をエンジン・チップにロードすること、および演算のデータ長を読み取ることを含む。
【００１５】
この方法は、入力チャネルを通じてエンジン・チップにデータ長を伝達すること、および出力チャネルを通じてデータ長を伝達することを含む。これらのチャネルはＦＩＦＯである。
【発明の実施の形態】
【００１６】
以下で添付図面を参照して、本発明の好ましい実施形態をより詳細に説明する。
【００１７】
本発明は、短いＤＥＳ演算と長いＤＥＳ演算に高いスループットを有する暗号サポートのシステムおよび方法を提供する。本発明の一実施形態によると、このシステムは、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）カードにパッケージされたマルチチップの埋め込みモジュールを含む。暗号ハードウェアと改ざん検出および応答用の回路の他に、中央演算処理装置を含み、ＲＯＭまたはフラッシュ・メモリあるいはその両方に記憶されたソフトウェアを実行する汎用コンピューティング環境が提供される。
【００１８】
図１を参照すると、クライアント１０１およびホスト１０５のマルチレイヤのソフトウェア・アーキテクチャを示している。クライアント側は、レイヤ０および１  １０２の基本的なセキュリティ制御、レイヤ２  １０３の監視レベルのソフトウェア・システム、およびレイヤ３  １０４のユーザ・レベルのソフトウェア・アプリケーションを含んでいる。レイヤ２  １０３は、アプリケーション開発をサポートする。レイヤ２  １０３では、カーネルが、複数のプロセスとアドレス空間のオペレーティング・システムによる抽象化を提供する。この抽象化は、独立したマネジャをサポートし、これらのマネジャは暗号ハードウェアとその他底辺の入出力（Ｉ／Ｏ）を処理し、レイヤ３のアプリケーション１０４により高いレベルのアプリケーション・プログラム・インタフェース（ＡＰＩ）を提供する。ＡＰＩとは、アプリケーション・プログラムを書くプログラマがそれによってオペレーティング・システムまたはその他のアプリケーションに要求を行うことができる、コンピュータまたは別のプログラムによって規定される固有の方式である。通例は、レイヤ３のアプリケーション１０４が、それ自体のＡＰＩの抽象化をホスト側アプリケーション１０７に提供する。
【００１９】
ホスト側１０５は、デバイス・ドライバ１０６とホスト・アプリケーション１０７を含む。図２によると、レイヤ３のアプリケーション１０４がカード側アプリケーションから提供されるサービスを使用するために、ホスト側アプリケーション１０７は、ホスト側のデバイス・ドライバ１０６に対する呼び出しを発する。デバイス・ドライバ１０６は、デバイス上のレイヤ２のシステム１０３に対してsccRequestを開く（１０８）。レイヤ２  １０３は、デバイスに常駐するレイヤ３のアプリケーション１０４に、要求の存在と、ホストが要求とともに送ったパラメータを知らせる。
【００２０】
図３および図４によると、レイヤ３のアプリケーション１０４は、ホスト・アプリケーションのサービス要求を処理し、例えば、データ１０９をデバイス・ドライバ１０６に転送することをレイヤ２  １０３に指示し、必要とされる暗号演算を行うことができる。レイヤ３のアプリケーション１０４は、sccRequestを閉じ（１１０）、ホスト・アプリケーション１０７に出力を送り返す（１１１）。
【００２１】
本発明の一実施形態によると、高速暗号化のためのデバイスが提供される。このデバイスは、中央演算処理装置（ＣＰＵ）と、少なくとも２レベルの内部ソフトウェアと、少なくとも３つのデータ経路とを有するコプロセッサを含む。ソフトウェア・レベルには、オペレーティング・システムまたはカーネルのレベル、およびアプリケーション・レベルを含むことができる。データ経路は、外部から内部メモリまたはＣＰＵあるいはその両方への経路、内部メモリまたはＣＰＵあるいはその両方から対称エンジンへの経路、および外部システムと対称エンジン間のチャネルを含むことができる。このチャネルは、先入れ先出し（ＦＩＦＯ）でよい。本発明の一実施形態によると、このデバイスはＦＩＦＯステートマシン(state machine)を含む。ＦＩＦＯステートマシン構造は、メソッド・エンジンにデータを移送する、またはメソッド・エンジンからデータを取り出す。
【００２２】
なお、対称暗号機能（例えばＤＥＳ）の観点から本発明を提示しているが、本発明は、可変長のデータに対する、任意のパラメータ化された機能をも想定することに留意されたい。したがって本発明の一実施形態の例としてＤＥＳが提供され、当業者はここに提供する本発明の教示を考慮すると、本発明の上記の、あるいはそれに類似の実施または構成を企図することができよう。
【００２３】
図５を参照すると、ＦＩＦＯ構造はＤＥＳ／ＴＤＥＳエンジン５００とともに動作する。本発明は、ＩＢＭ４７５８コプロセッサ、特にＭｏｄｅｌｓ００２／０２３ＰＣＩ暗号コプロセッサに則して説明しているが、当業者はここに提供する本発明の教示を考慮に入れると、ここに記す、あるいはそれに類似の実施または構成を考慮することができよう。
【００２４】
Ｍｏｄｅｌ２ハードウェアでは、ＦＩＦＯ構造が高速のセキュア・ハッシュ・アルゴリズム（ＳＨＡ−１）もサポートするが、この構造はどのメソッド・エンジンにも適用することが可能である。
【００２５】
入出力双方について、外部および内部の転送のために２対のＦＩＦＯ５０１〜５０４、すなわちＰＣＩ  ＦＩＦＯの対５０１〜５０２と内部ＦＩＦＯの対５０３〜５０４がそれぞれ提供され、また、内部のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）５０７とのＣＰＵを介さない転送のためにダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ５０５〜５０６も提供される。
【００２６】
内部ＣＰＵ５０８は、アクティブにするデータ経路と、ＤＥＳエンジン５００が使用する鍵、初期化ベクトル（ＩＶ）、およびその他の演算パラメータを制御レジスタ（図示せず）を介して選択する。ＩＶは、通例はレイヤ２のシステムに含まれる乱数発生ルーチンによって生成され、暗号化されていないテキストおよび鍵と組み合わせられる。この鍵は、暗号化されていないテキストのブロックに適用して暗号文を生成するための可変値である。
【００２７】
ＤＥＳエンジン５００の構成には、外部−外部の大容量ＤＥＳ（図８に示す）、内部−内部の大容量ＤＥＳ（出力ＤＭＡ５０６から内部入力ＦＩＦＯ５０３、ＤＥＳ５００へ、そして内部出力ＦＩＦＯ５０４とＰＣＩ出力ＦＩＦＯ５０２を通じて戻る）、およびＤＭＡ転送（例えば、ＰＣＩ入力ＦＩＦＯ５０１から内部入力ＦＩＦＯ５０３、入力ＤＭＡ５０５へ、そして出力ＤＭＡコントローラ５０６から内部出力ＦＩＦＯ５０４、ＰＣＩ出力ＦＩＦＯ５０２へ）などがある。さらに、ＤＥＳハードウェアは、一般に流通するレイヤ２のシステムがハードウェアを使用しないバイパス・モードに構成することができる。
【００２８】
このシステムに対する制約の１つは、内部のＦＩＦＯ−ＤＥＳ間の経路を両方選択する必要がある（大容量モード）か、または両方とも選択しないかのいずれかであることである。別の制約は、データ転送を休止するまでＦＩＦＯの構成を変更することができず、ＦＩＦＯを駆動するステートマシンが、資源が使い果たされるまでデータを非同期に転送することである。
【００２９】
内部ＣＰＵ５０８は、カード・アプリケーションを各種の方式でサポートするようにＦＩＦＯハードウェアを構成することができる。例えば、図６に示すのは、ホスト・アプリケーションがカード・アプリケーションに対してsccRequestを開くときなどにＦＩＦＯがＤＭＡを介してカード中にデータを導く構成である。データは、ＰＣＩ入力ＦＩＦＯ５０１から６０１を介して内部入力ＦＩＦＯ５０３に、６０２を介して入力ＤＭＡコントローラ５０５に、そして６０３および６０４を介してＤＲＡＭ５０７に渡される。
【００３０】
ＤＥＳ要求を表す図７を参照すると、カードは、演算パラメータをＤＲＡＭ５０７からＤＥＳチップ５００に転送することができる。内部ＣＰＵ５０８は、線７０１〜７０３を介してＤＲＡＭ５０７からＤＥＳチップ５００に演算パラメータをロードする。
【００３１】
図８によると、ＤＥＳ要求が外部−外部のＤＥＳに対する要求である場合、カードは、ホストからＤＥＳチップ５００を通じてデータを導き入れ、ホストに戻すようにＦＩＦＯを構成する。ＣＰＵ５０８は、ホストからＤＥＳチップを通じてデータを流し（stream）、線８０１〜８０４を介してホストに戻すようにＦＩＦＯ５０１〜５０４を構成することができる。
【００３２】
さらに、ＤＥＳ要求が内部−内部ＤＥＳに対する要求であり、ＤＭＡには短すぎると判断される場合、カードはそのデータ・バイトを手動でプッシュすることができる。ＣＰＵ５０８は、プログラム式Ｉ／Ｏおよび線９０１〜９０４を介して、ＤＥＳ／ＴＤＥＳエンジンを通じてＤＲＡＭ５０７からデータを取り出すことができる。
【００３３】
図１０に表すように、sccRequestが完了すると、カードはＤＭＡを介してその結果をホストに戻すことができる。内部ＣＰＵ５０８は、ＤＭＡと線１００１〜１００４を介してＤＲＡＭ５０７からホストにデータを送り返すようにＦＩＦＯを構成することができる。
【００３４】
本発明は、短いＤＥＳ演算のスループットを増大する方法を提案する。本発明を評価するのに使用した方法には、データ・サイズを無作為に８バイトから８０バイトの間に均一に分布させた暗号ブロック連鎖方式（ＣＢＣ）による暗号化とＣＢＣによる解読を含むＤＥＳ演算が含まれる。連鎖方式は、暗号文ブロックの解読をすべての先行ブロックに依存する方式である。ＩＶと鍵は演算ごとに変更されるが、この鍵は、デバイス内部に記憶されたマスタ鍵を用いて暗号化されたトリプルＤＥＳ（ＴＤＥＳ）である。暗号化された鍵、ＩＶ、およびその他の演算パラメータは演算ごとに送られるが、データ・スループットの一部としてはカウントされない。鍵は演算ごとに変わる可能性があるが、要求の数に対して鍵の総数は少ない。図１６に、本発明の各種実施形態によるＤＥＳ演算で得られる速度を示している。Ｍｏｄｅｌ１ハードウェアを使用した場合は、１６０１で示す速度が達成された。
【００３５】
以下の実施形態では、Ｍｏｄｅｌ２のプロトタイプを使用してベースラインの実装を確立した。図１１によると、ホスト・アプリケーションは、プログラム式入出力（ＰＩＯ）のＤＥＳを用いて各演算１１０１〜１１０２を個別のsccRequest１１０３〜１１０４として処理する。この実装は、短いＤＥＳの要求（暗号鍵、ＩＶ、データ）のシーケンスを生成するホスト・アプリケーションと、カード側アプリケーションを含む。カード側アプリケーションは、各要求を受け取り、鍵をアンパックし、データ、鍵、およびＩＶをＤＥＳエンジンに送り、その結果をホストに送り返す。鍵は、暗号鍵のセットから無作為に選択された。カード内部に鍵をキャッシュすることにより余分なＴＤＥＳ鍵暗号化のステップが減り、速度が増した（１６０２）。
【００３６】
本発明の一実施形態によると、短いＤＥＳの性能は、ホストとカード間の対話を減らすことによって向上させることができる。図１２を参照すると、この図には、短いＤＥＳ要求の大きなシーケンスを１つのsccRequestに一括する１２０１ことが含まれている。これに応じてカード側アプリケーションを修正し、そのシーケンスを１ステップで受け取り、各演算を処理し１２０２〜１２０５、連結された出力を１ステップでホストに送り返す１２０６ようにした。レイヤ３のアプリケーションは、演算ごとにＤＥＳを呼び出す１２０２、１２０４。レイヤ２は、演算ごとに個別にＤＥＳを実行する１２０３、１２０５。ベンチマーク・データに対して、約１８〜２３キロバイト／秒の間、鍵のキャッシングを用いると最高で４０キロバイト／秒の速度が得られた１６０３。
【００３７】
本発明の一実施形態によると、演算ごとのＤＥＳチップのリセットを排除することにより、短いＤＥＳの性能を向上させることができる１６０４。すべてが１つの鍵、１つの指示（解読または暗号化）、およびゼロのＩＶ（ただしＩＶは任意であってよい）を使用する短いＤＥＳ演算要求のシーケンスを生成することにより、約３６０キロバイト／秒の速度を達成することができる。カード側アプリケーションは演算シーケンスを受け取り、その演算シーケンスをレイヤ２のシステムに送る。レイヤ２では、修正されたＤＥＳマネジャ（ＤＥＳハードウェアを制御するコンポーネント）が、その鍵とゼロのＩＶによりチップをセットし、そのチップを通じてデータを伝達する。各演算の最後に、ＤＥＳマネジャはＸＯＲ演算を行って連鎖を解除する。例えば、暗号化の場合、ソフトウェアはチップが行うＸＯＲを無効にするために、その演算についての最初の平文ブロックと、直前の演算の最後の暗号文ブロックを手動でＸＯＲ演算する。
【００３８】
一括する方法によると、チップ・リセットの回数が低減するだけでなく、レイヤ３とレイヤ２間のコンテクスト切り替えの回数もＯ（ｎ）からＯ（１）に減り、このｎはバッチ（一括処理）中の演算数である。図１３を参照すると、本発明の別の実施形態によると、複数鍵と非ゼロＩＶのセットアップ（結果は１６０３で示す）を使用することにより、一括した要求１３０１を修正されたＤＥＳマネジャ（レイヤ２）に送る１３０３〜１３０４ようにカード側アプリケーション１３０２を変更し、それによりコンテクスト切り替えの回数を減らした。カード側アプリケーション１３０２は、一括した演算のためにＤＥＳを呼び出す。修正されたＤＥＳマネジャ１３０３〜１３０４は、チップ・リセットと新しい鍵およびＩＶを用いて各要求を処理する。要求はホストに送られる１３０５。修正されたＤＥＳマネジャを使用して得られる結果１３０３〜１３０４を図１６の１６０４に示す。
【００３９】
本発明のさらに別の実施形態によると、ＦＩＦＯステートマシンは、大容量モードではＤＥＳを通じてデータ・バイトを送り出す。したがって、ＣＰＵはデータ・バイトを処理しない。従来の方法では、暗号鍵、ＩＶ、およびデータの各バイトを多数回処理していた。バイトは、最初のsccRequestバッファの転送により、ＦＩＦＯおよびＤＭＡを介してＤＲＡＭに送られていた。ＣＰＵは、ＤＲＡＭからバイトを取り出し、それをＤＥＳチップに入れる。ＣＰＵは、ＤＥＳチップからデータを取り出し、それを再度ＤＲＡＭに入れる。ＣＰＵは、ＦＩＦＯを通じてホストにデータを送り返す。このため、データ転送の回数を減らすことによりスループットを増大させることができる（１６０５）。鍵のアンパックは、ＡＰＩの組み込み部分として排除される。各アプリケーションは独自のアンパック方法を有することが可能であり、これによりＡＰＩのアンパックが冗長になる。各アプリケーション内で、初期化ステップは、平文の鍵テーブルがデバイスＤＲＡＭに常駐することをもって完了する。演算長は４０バイトに標準化した。また、ホスト・アプリケーションを修正して、暗号鍵ではなく内部の鍵テーブルへのインデックスを含む要求シーケンスを生成するようにした。したがって、カード側アプリケーション１４０１は、直ちに要求シーケンスをＰＣＩ入力ＦＩＦＯからＤＲＡＭ中に取り入れるのではなく、修正されたＤＥＳマネジャ１４０２および１４０７を呼び出し、鍵テーブル１４０３および１４０８をマネジャが使用できる状態にする。演算ごとに、修正されたＤＥＳマネジャ１４０２および１４０７はＤＥＳチップをリセットし、ＩＶを読み取ってそれをチップにロードし、鍵テーブルを読み取ってサニティ・チェックを行い、鍵を探索し、その鍵をチップにロードし、その演算のデータ長を読み取る。修正されたＤＥＳマネジャはステートマシンをセットアップして、入力ＦＩＦＯを通じてＤＥＳチップ中にそのバイト数を伝達させ、出力ＦＩＦＯから戻させる１４０４〜１４０６および１４０９〜１４１１。カード側アプリケーションは要求を閉じる（１４１２）。この結果を図１６の１６０５に示す。
【００４０】
本発明の一実施形態によると、ＩＳＡ（Industry Standard Architecture）によるＩ／Ｏ命令が増加した（倍加した）ことによりスループットが半減し、ＩＳＡによるＩ／Ｏ命令とスループット速度との間の相関関係が示された。次いで（１６０５および図１４との関連で）上記で説明した修正されたＤＥＳマネジャを、可能な際はＩＳＡによるＩ／Ｏの代わりにメモリマップＩ／Ｏポートを使用するように修正した（使用したハードウェアは、すべての事例についてメモリマップＩ／Ｏポートを提供した訳ではない）。ソフトウェアも修正して、特定のステートマシンが断続的にポーリングを行うことによって生じる擬似のＦＩＦＯ読み出しをすべて除去するようにした。この結果を図１６の１６０６に示す。
【００４１】
図１５を参照すると、パラメータを一括することにより、メモリマップ・演算を介してパラメータを読み出すことができ、ＦＩＦＯ構成の修正とデータの処理が可能になる。レイヤ３は、一括演算のためにＤＥＳを呼び出す１５０１。ホスト・アプリケーションは、演算ごとのパラメータを１つのグループに一括し１５０３、入力データに添付する。修正されたＤＥＳマネジャは、一括されたパラメータを読み出すように内部ＦＩＦＯとステートマシンをセットアップして、ＤＥＳチップを回避し１５０２、メモリマップＩ／Ｏを介して一括したパラメータを内部出力ＦＩＦＯからＤＲＡＭに読み込み１５０４、１５０８、ＦＩＦＯを再構成する。そして、バッファに入れられたパラメータを使用することによりステートマシンおよびＤＥＳチップをセットアップして、各演算のデータ１５０６および１５１０を入力ＦＩＦＯからＤＥＳを通じて伝達し、出力ＦＩＦＯに戻すようにする１５０５、１５０７、１５０９、および１５１１。レイヤ３は要求を閉じる１５１２。この結果を図１６の１６０７に示す。この方法の精度は、ＩＳＡ方式１６０８を通じてＩＶレジスタおよびデータ長レジスタにアクセスすることによって高めることができる。
【００４２】
本発明によると、短いＤＥＳの速度は次の関係に従って求めることができる。
【数１】
0004443088.tif 000002
ここで、Batchesはホストとカード間のバッチ数であり、Ｏｐｓは１バッチ当たりの演算の数であり、DataLenは１演算の平均データ長であり、Ｃ1、Ｃ2、およびＣ3はそれぞれ、バッチ単位、演算単位、およびバイト単位のオーバーヘッドを表す未知の定数である。
【００４３】
本発明は、追加データが転送できる状態になったときにそれを示すポーリングやシグナリングを増し、不確定のsccRequestを可能にするようにホスト・デバイス・ドライバとレイヤ２間の対話を修正することにより、バッチごとのオーバーヘッドＣ1を排除することを企図する。１演算当たりのオーバーヘッドＣ2は、１演算当たりのパラメータの転送数を最小にすることによって低減することができる。例えば、ホスト・アプリケーションは、１バッチ分の演算中で、すべてが特定の鍵を使用する次のＮ個の演算などの引数をアサートするパラメータ・ブロックをインタリーブすることが可能である。この方法では、反復ごとに鍵インデックスを取り込み、読み出すことがなくなる。別の例には、データをカードに送信する前または送信した後に、ホスト・アプリケーションがＩＶを処理することが挙げられる。ホスト・アプリケーションがＩＶを提供することが確実であれば、これはセキュリティ問題にはならない。この方法では、ＩＶを取り込むことがなくなり、また、ＤＥＳチップがリセット後にゼロのデフォルトＩＶを有するのでＩＶのロードもなくなる。
【００４４】
本発明の別の実施形態によると、ＦＩＦＯおよびステートマシンの設計を変更することにより演算当たりのオーバーヘッドを減らすことができる。ＤＥＳエンジンを修正して、データとインタリーブされたパラメータを含むデータ入力を予期するようにすることにより、演算当たりのオーバーヘッドＣ2がバイト当たりのオーバーヘッドＣ3に近づくことができる。ステートマシンが処理する出力バイトは入力バイトよりも少なく、ＣＰＵは、例えば外部で選択されたパラメータが変動することを許されたエンジン・演算のクラスを制御する。例えば、外部のエンティティに、特定タイプの暗号化演算のみを選択させることが可能である。さらに、ＣＰＵは、外部エンティティが選択するパラメータとそのエンジンが見るパラメータに対して間接性（indirection）を挿入することができ、例えば外部エンティティが内部テーブルへのインデックスを提供する。
【００４５】
暗号のシステムおよび方法の各種実施形態について説明したが、当業者は上記の教示に照らして修正形態および変形形態を作製できることに留意されたい。したがって、ここに開示する本発明の特定の実施形態には、特許請求の範囲で定義される本発明の範囲および精神内にある変更を加えてよいことを理解されたい。以上、特許法で必要とされる詳細および特定性をもって本発明を説明した。特許証によって請求され、必要とされ、保護される内容を特許請求の範囲に記載する。
【図面の簡単な説明】
【図１】  本発明の一実施形態によるＤＥＳアーキテクチャの図である。
【図２】  本発明の一実施形態によるＤＥＳアーキテクチャの別の図である。
【図３】  本発明の一実施形態によるＤＥＳアーキテクチャのさらに別の図である。
【図４】  本発明の一実施形態によるＤＥＳアーキテクチャのさらに別の図である。
【図５】  本発明の一実施形態によるコプロセッサを用いてＤＥＳ／ＴＤＥＳをサポートするＦＩＦＯ構造の図である。
【図６】  本発明の一実施形態によるコプロセッサを用いてＤＥＳ／ＴＤＥＳをサポートするＦＩＦＯ構造の別の図である。
【図７】  本発明の一実施形態によるコプロセッサを用いてＤＥＳ／ＴＤＥＳをサポートするＦＩＦＯ構造のさらに別の図である。
【図８】  本発明の一実施形態によるコプロセッサを用いてＤＥＳ／ＴＤＥＳをサポートするＦＩＦＯ構造のさらに別の図である。
【図９】  本発明の一実施形態によるコプロセッサを用いてＤＥＳ／ＴＤＥＳをサポートするＦＩＦＯ構造のさらなる図である。
【図１０】  本発明の一実施形態によるコプロセッサを用いてＤＥＳ／ＴＤＥＳをサポートするＦＩＦＯ構造の図である。
【図１１】  従来技術による、２つの演算を個別のsccRequestとして処理するアプリケーションの流れ図である。
【図１２】  本発明の一実施形態による、一括したホストとカード間の対話を表す流れ図である。
【図１３】  本発明の一実施形態による、単一の呼び出しに一括された複数の演算の流れ図である。
【図１４】  本発明の一実施形態による、演算ごとのデータ転送を減らす方法の流れ図である。
【図１５】  本発明の一実施形態による、すべての演算のパラメータをブロックに一括する方法の流れ図である。
【図１６】  本発明の各種実施形態によるＤＥＳの速度を表すグラフである。
【図１】
0004443088.tif 000003
【図２】
0004443088.tif 000004
【図３】
0004443088.tif 000005
【図４】
0004443088.tif 000006
【図５】
0004443088.tif 000007
【図６】
0004443088.tif 000008
【図７】
0004443088.tif 000009
【図８】
0004443088.tif 000010
【図９】
0004443088.tif 000011
【図１０】
0004443088.tif 000012
【図１１】
0004443088.tif 000013
【図１２】
0004443088.tif 000014
【図１３】
0004443088.tif 000015
【図１４】
0004443088.tif 000016
【図１５】
0004443088.tif 000017
【図１６】
0004443088.tif 000018