(57)【要約】【課題】  共通鍵暗号方式の暗号化処理において認証及びセッション鍵更新のオーバーヘッド削減、耐タンパー性向上。【解決手段】  セキュアＩＰサブシステム内に認証処理、鍵生成、共通鍵暗号処理の各モジュールとサブシステムを制御するサブプロセッサを備え、外部エージェントとセキュアＩＰサブシステム間の認証、鍵更新をシームレスに共通鍵暗号処理と並行して行なう。また同一セッション中に不定期に認証を行い耐タンパー性を向上する。【選択図】  図１
2007043297.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサと前記メインプロセッサ上のエージェントとデータを保持しておくためのストレージ・デバイスと
前記メインプロセッサ上のエージェントからのコマンドによりデータの暗号化または復号処理を行なうためのサブシステムと
前記サブシステム上に配置され前記メインプロセッサと前記サブシステムとの認証を行なうための認証処理ブロックと
前記サブシステム上に配置され、データの暗号化または復号処理を行なうための鍵を生成するための鍵生成ブロックと
前記サブシステム上に配置され、データの共通鍵暗号方式の暗号化または復号処理を行なうための共通鍵暗号処理ブロックと
前記ストレージデバイスからデータを前記サブシステムに読み込むためのDMAコントローラと
前記ストレージデバイスへデータを前記サブシステムから書き込むためのDMAコントローラとから構成され
前記サブシステムと前記エージェント間の認証と前記共通鍵暗号処理ブロックによる暗号化または復号処理を並列に行なうことを特徴とするセキュリティシステム。
【請求項２】
メインプロセッサと前記メインプロセッサ上のエージェントとデータを保持しておくためのストレージ・デバイスと
前記メインプロセッサ上のエージェントからのコマンドによりデータの暗号化または復号処理を行なうためのサブシステムと
前記サブシステム上に配置され前記メインプロセッサと前記サブシステムとの認証を行なうための認証処理ブロックと
前記サブシステム上に配置され、データの暗号化または復号処理を行なうための鍵を生成するための鍵生成ブロックと
前記サブシステム上に配置され、データの共通鍵暗号方式の暗号化または復号処理を行なうための共通鍵暗号処理ブロックと
前記ストレージデバイスからデータを前記サブシステムに読み込むためのDMAコントローラと
前記ストレージデバイスへデータを前記サブシステムから書き込むためのDMAコントローラとから構成され
前記サブシステムと前記エージェント間の認証及び前記サブシステムと前記エージェント間で共有する共通鍵の更新と前記共通鍵暗号処理ブロックによる暗号化または復号処理を並列に行なうことを特徴とするセキュリティシステム。
【請求項３】
前記サブシステムと前記エージェント間の認証に引き続き前記サブシステムと前記エージェント間で共有する共通鍵の更新を行なうことを特徴とする前記請求項２記載のセキュリティシステム。
【請求項４】
前記サブシステムと前記エージェント間の認証を前記共通鍵暗号処理ブロックによる暗号化または復号処理中に不定期に行なうことを特徴とする前記請求項２または３または３記載のセキュリティシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はセキュリティシステムに関するものである。
【背景技術】
【０００２】
近年、セキュリティ対策としてメモリやハードディスク等のストレージデバイス上にデータを暗号化して保存するシステムが広く使われるようになってきた。
【０００３】
図５はこのようなシステムのブロック図であり、メインプロセッサ１０２からストレージデバイス１０３に保存するデータの暗号化または保存されているデータの復号をセキュリティ処理ブロック１０１に指示し、セキュリティ処理ブロック１０１内でデータの暗号化または復号を行なうものである。
【０００４】
このようなセキュリティシステムにおいてはシステム上のメインプロセッサ１０２とセキュリティ処理ブロック１０１が様々な必要な情報を通信しながら共有する必要があり、そのためにシステムのメインプロセッサとセキュリティ処理ブロックとの間で認証をとり、相手がなりすましでないことを確認した後、実際の暗号化に使う鍵の共有を行い、暗号化したデータ及び鍵の管理を行なっていた。
【０００５】
又、従来例としては、例えば特許文献１をあげることが出来る。
【特許文献１】特開平7-107084号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら上記従来例では暗号化処理の前処理として認証、鍵の共有を行なう必要があり、暗号化処理のオーバーヘッドとなっていた。
【０００７】
また、長時間同じ鍵を使って暗号化するのを避けるため、鍵を更新する際に更新のタイミングの規則性を見破られると外部からの攻撃に対して脆弱性が大きくなる危険性があった。
【課題を解決するための手段】
【０００８】
本発明では上記問題点に鑑み、暗号化処理と次に使用する鍵の生成、共有を並列に行なうことにより暗号化処理のオーバーヘッドを削減するようにしたものである。また、一度認証をとった後の暗号化処理が一定期間以上長くなった場合、暗号化処理中にも不定期に認証を行なうことにより、耐タンパー性を向上しようとしたものである。
【発明の効果】
【０００９】
以上説明したように暗号化・復号処理と認証処理、鍵更新を並列におこなうことにより、暗号化・復号処理のオーバーヘッドが削減された。
【００１０】
また、認証処理をセッション中にも不定期に行なうようにしたので耐タンパー性が向上した。
【発明を実施するための最良の形態】
【００１１】
（第1の実施例）
図１は本発明を実施したセキュリティシステムのブロック図であり、同図において１は各種セキュリティ処理を行なうためのサブシステム、２はサブシステム１上で各種セキュリティ処理を制御するためのサブプロセッサ、３は認証処理を行なうための認証処理ブロック、４は鍵生成処理を行なうための鍵生成処理ブロック、５は設定された共通鍵とモードによって指定された共通鍵暗号方式の暗号化処理または復号処理を行なうための共通鍵暗号処理ブロック、６はメモリ、ハードディスク等から共通鍵暗号処理ブロック５の入力データを読み込むためのDMAコントローラ、７は共通鍵暗号処理ブロック５からメモリ、ハードディスク等へ出力データを書き込むためのDMAコントローラ、１１はメインプロセッサ、１２はメインプロセッサ１１上に実装され、サブシステム１を制御するための外部エージェント、１３はメモリ、１４はハードディスク、２１はバスである。
【００１２】
上記構成における信号処理を順を追って説明する。
【００１３】
図２は図１に示したセキュリティシステムにおいて共通鍵暗号処理を行なう場合の基本的な動作シーケンスを示した図である。
【００１４】
最初にメインプロセッサ１１上の外部エージェント１２とサブシステム１上のサブプロセッサ２の間で認証処理を行なう。
【００１５】
まず外部エージェント１２からサブシステム１上のサブプロセッサ２へ認証依頼を送付する。（ステップ１−１）
認証依頼を受けたサブプロセッサ２は認証処理ブロック３を初期化する。（ステップ１−２）
次にサブプロセッサ２は認証処理ブロック３に所定のパラメータ設定を行い乱数r1を生成させる。（ステップ１−３）
サブプロセッサ２は認証ブロック３が生成した乱数r1を外部エージェントに送付する。（ステップ１−４）
乱数r1を受け取った外部エージェント１２はサブシステム１の公開鍵で暗号化し、サブシステム１に返送する。（ステップ１−５）このときサブシステム１の公開鍵は特に外部に公開されていないが、外部エージェント１２はあらかじめ内部にもっている。
【００１６】
サブシステム１は受け取った暗号化データを公開鍵と対になっている秘密鍵により復号し、生成した乱数r1と比較する。両者が一致していれば外部エージェント１２を正規なエージェントと判断し、認証通知を外部エージェント１２に通知する。（ステップ１−６）
このようにしてメインプロセッサ１１上の外部エージェント１２をサブシステム１が認証する処理が完了する。
【００１７】
次に共通鍵の共有を行なう。
【００１８】
まず認証された外部エージェント１２から共通鍵暗号処理による暗号通信要求がサブシステム１上のサブプロセッサ２に送付される。（ステップ２−１）
サブプロセッサ２は共通鍵暗号処理を行なう前処理としてサブシステム中の鍵生成ブロック４及び共通鍵暗号処理ブロック５を初期化する。（ステップ２−２）
次にステップ２−１で外部エージェント１２から暗号通信要求とともに送付されてきた共通鍵暗号処理に関するパラメータから実際の暗号処理を特定するためのパラメータを決定し、サブシステム１上の鍵生成ブロック４及び共通鍵暗号処理ブロック５に設定する。（ステップ２−３）
サブシステム１の初期設定完了を外部エージェント１２に通知する。（ステップ２−４）
次にDiffie-Hellman鍵共有（以下DH法とする）により共通鍵を共有する。
【００１９】
まず外部エージェント１２は乱数xを生成する。またべき乗剰余演算の法とする素数Pを選び、Pを法とする世界の原始元gに対してg^x (mod P)を算出する。そして法とする素数P、原始元g、g^x (mod P)をサブプロセッサ２に送付する。（ステップ２−５）
一方、サブプロセッサ２は鍵生成ブロック４を制御して乱数yを生成し、外部エージェント１２から送付されてきた素数P及び原始元gを使ってg^y (mod P)を算出する。そしてg^y (mod P)を外部エージェント１２に送付する。（ステップ２−６）
ここでサブプロセッサ２は鍵生成ブロック４を制御して外部エージェント１２から送付されたg^x (mod P)及び生成した乱数yから
(g^x (mod P) )^y mod P = g^x*y mod P
を算出する。同様にして外部エージェント１２はサブプロセッサ２から送られてきたg^y (mod P)及び生成した乱数xから
(g^y (mod P) )^x mod P = g^x*y mod P
を算出する。そして共通鍵として g^x*y mod P を使用することにより外部エージェント１２とサブプロセッサ２との間で共通鍵の共有が実現できる。
【００２０】
次にサブプロセッサ２は共通鍵暗号処理ブロック５を使って共通鍵暗号処理を行なう。まずサブプロセッサ２は共通鍵を共通鍵暗号処理ブロック５に設定する。（ステップ３−１）
サブプロセッサ２は共通鍵暗号処理の準備が整ったのでセッションの開始を外部エージェント１２に通知する。（ステップ３−２）
サブプロセッサ２はDMAコントローラ６を制御し、メモリ１３からデータを読み出し共通鍵暗号処理ブロック５に転送する。（ステップ４−１）
共通鍵暗号処理ブロック５はパラメータ設定により暗号化または復号処理が行なわれ、DMAコントローラ７によりハードディスク１４に書き込まれる。
【００２１】
共通鍵暗号処理が行なわれている間、外部エージェント１２及びサブプロセッサ２はそれぞれアイドル状態になっている。
【００２２】
メモリ１３から所定量のデータ転送が行なわれ、共通鍵暗号処理ブロック５の処理が終了するとサブプロセッサ２はセッションの終了を外部エージェント１２へ通知する。（ステップ４−２、５−１）
以上のような動作シーケンスで１セッションの処理が行なわれる。
【００２３】
図３は連続する複数セッションの動作シーケンスを示したものであり、Aは外部エージェント１２とサブプロセッサ２の間で行なわれる動作、Bはサブプロセッサ２とサブシステム内の各処理ブロックの間で行なわれる動作を示す。複数セッションの処理が続いて行なわれる場合には上述したような動作シーケンスを繰り返すが、セッション単位で外部エージェント１２とサブプロセッサ２間の認証を取り直す必要はない。図３の例では第２のセッションでは共通鍵の生成のみをやり直し、新しい鍵に更新している。そして第３のセッションでは外部エージェント１２とサブプロセッサ２の間で認証を取り直した後、共通鍵の更新を行なっている。
【００２４】
図４は第２のセッションの詳細な動作シーケンスを示した図である。図２に示した第１のセッションの動作シーケンスに比べて外部エージェント１２とサブプロセッサ２の間の認証が省かれている。
【００２５】
（第２の実施例）
図６は本発明を実施した第２の実施例における連続する複数セッションの動作シーケンスを示したものであり、２−Aは外部エージェント１２とサブプロセッサ２の間で行なわれる動作、２−Bはサブプロセッサ２とサブシステム内の各処理ブロックの間で行なわれる動作を示す。また、比較のため１−A、１−Bとして第１の実施例における動作が示されている。
【００２６】
図７は第１のセッションの詳細な動作シーケンスを示した図である。同図においてサブプロセッサ２が外部エージェント１２を認証し、第１のセッションのための共通鍵を生成して共通鍵暗号処理を開始するところまでは図２に示した実施例１と同じ動作である。第１のセッションの共通鍵暗号処理が行なわれている最中は基本的に外部エージェント１２はアイドル状態であるが、本実施例ではバス２１のトラフィックをモニターしており、バス２１のトラフィックが設定値より低い場合には次のセッションのための共通鍵生成を先行して行なっている点が実施例１と異なる点である。
【００２７】
バス２１のトラフィックがあらかじめ設定されている値より低いと外部エージェント１２が判断すると次のセッションのための共通鍵生成要求がサブシステム１上のサブプロセッサ２に送付される。（ステップ２'−１）
サブプロセッサ２は鍵生成ブロック４を初期化する。（ステップ２'−２）
次にステップ２'−１で外部エージェント１２から共通鍵生成要求とともに送付されてきた共通鍵暗号処理に関するパラメータから実際の暗号処理を特定するためのパラメータを決定し、サブシステム１上の鍵生成ブロック４に設定する。（ステップ２'−３）
サブシステム１の初期設定完了を外部エージェント１２に通知する。（ステップ２'−４）
次にDH法により共通鍵を共有する。外部エージェント１２は乱数x'を生成し、すでに使用している素数P、原始元gよりg^x' (mod P)を算出する。そして素数P、原始元g 、g^x (mod P)をサブプロセッサ２に送付する。（ステップ２'−５）
一方、サブプロセッサ２は鍵生成ブロック４を制御して乱数y'を生成し、外部エージェント１２から送付されてきた素数P及び原始元gを使ってg^y' (mod P)を算出する。そしてg^y' (mod P)を外部エージェント１２に送付する。（ステップ２'−６）
ここでサブプロセッサ２は鍵生成ブロック４を制御して外部エージェント１２から送付されたg^x' (mod P)及び生成した乱数y'から
(g^x' (mod P) )^y' mod P = g^x'*y' mod P
を算出する。同様にして外部エージェント１２はサブプロセッサ２から送られてきたg^y' (mod P)及び生成した乱数x'から
(g^y' (mod P) )^x' mod P = g^x'*y' mod P
を算出する。そして共通鍵として g^x'*y' mod P を使用することにより外部エージェント１２とサブプロセッサ２との間で共通鍵の共有が実現できる。
【００２８】
このようにして得られた共通鍵g^x'*y' mod Pを現在暗号化処理中のセッションが終わるまで共通鍵暗号処理ブロック５及び外部エージェント１２で保持しておき、セッション終了とともに共通鍵の差し替えを行なうことにより共通鍵共有のオーバーヘッドなく暗号化・復号処理ができる。
【００２９】
（第３の実施例）
図８は本発明を実施した第３の実施例における連続する複数セッションの動作シーケンスを示したものであり、３−Aは外部エージェント１２とサブプロセッサ２の間で行なわれる動作、３−Bはサブプロセッサ２とサブシステム内の各処理ブロックの間で行なわれる動作を示す。
【００３０】
本実施例では認証、共通鍵共有動作に比べて共通鍵暗号処理の時間が非常に長い事例を想定しており、このような場合には外部エージェント１２とサブプロセッサ２の間で認証してから非常に長い時間、認証をしておらず、この間にアイドル状態の外部エージェント１２が挿げ変わっている危険性が増大する。
【００３１】
そこで本実施例では前回認証をとってから、あらかじめ設定された時間以上認証を取っていない場合はサブプロセッサ２から新たな乱数を外部エージェント１２に送付し、前述した外部エージェントの認証を行なうことにより正規エージェントから挿げ変わっていないことを確認するものである。
【００３２】
このとき認証をとるタイミングに規則性があると耐タンパー性が低下するので認証処理ブロックに内蔵されている乱数生成処理を使って認証をとるタイミングを不規則にするようにする。
【００３３】
図９は認証に続いて必ず鍵更新をした場合の連続する複数セッションの動作シーケンスを示したものであり、４−Aは外部エージェント１２とサブプロセッサ２の間で行なわれる動作、４−Bはサブプロセッサ２とサブシステム内の各処理ブロックの間で行なわれる動作を示す。
【００３４】
新たな共通鍵を生成し、共有する共通鍵を更新するタイミングはできるだけ認証してから早い方がよい。認証、共通鍵更新をあまり頻繁に行なうとバス２１のトラフィックをいたずらに増大させることになるが、全体のパフォーマンスに影響がほとんどなければ認証に引き続き、直ちに共通鍵更新を行なうのがよいことになる。
【００３５】
図９では図８の場合と同様に一定時間にいくらかの不規則性を加えたタイミングで認証を行い、認証に引き続き、新たな共通鍵の生成を行なっている。この場合１セッション中に何度も共通鍵が変わる場合があるが、１セッション中は１つの共通鍵で暗号化してもよいし、より安全性を重視してセッション中に共通鍵を切り替えても良い。
【００３６】
前者の場合は次のセッション用の共通鍵として外部エージェント１２及び共通鍵暗号処理５で保持している鍵を上書きしていけばよい。後者の場合には各共通鍵と暗号化したデータとの対応を管理する必要があるが、順次共通鍵を切り替えていけばよい。
【図面の簡単な説明】
【００３７】
【図１】発明を実施したセキュリティシステムのブロック構成を示した図、
【図２】本発明の第１の実施形態において第1のセッションの動作シーケンスを示した図、
【図３】本発明の第１の実施形態において連続した複数のセッションの動作シーケンスを示した図、
【図４】本発明の第１の実施形態において第２のセッションの動作シーケンスを示した図、
【図５】従来のセキュリティシステムの概要を示した図、
【図６】本発明の第２の実施形態において連続した複数のセッションの動作シーケンスを示した図、
【図７】本発明の第２の実施形態において第1のセッションの動作シーケンスを示した図、
【図８】本発明の第３の実施形態においてセッション中に認証を不定期に行なうようにした場合の連続した複数のセッションの動作シーケンスを示した図、
【図９】本発明の第３の実施形態において認証と鍵更新を続けて行なうように用にした場合の連続した複数のセッションの動作シーケンスを示した図である。
【符号の説明】
【００３８】
１  サブシステム
２  サブプロセッサ
３  認証処理ブロック
４  鍵生成ブロック
５  共通鍵暗号処理ブロック
６、７  DMAコントローラ
１１  メインプロセッサ
１２  外部エージェント
１３  メモリ
１４  ハードディスク
２１、２２  バス
【図１】
2007043297.tif 000003
【図２】
2007043297.tif 000004
【図３】
2007043297.tif 000005
【図４】
2007043297.tif 000006
【図５】
2007043297.tif 000007
【図６】
2007043297.tif 000008
【図７】
2007043297.tif 000009
【図８】
2007043297.tif 000010
【図９】
2007043297.tif 000011