(57)【要約】      （修正有）【課題】暗号化処理の開始後に新たなジョブが発生した場合にソフトウェア制御で暗号化処理を中断することをなくし、ハードウェアリソースの稼働率を向上させた暗号化処理装置を提供する。【解決手段】与えられたデータを、設定されたパラメータに従って暗号化するＭ個（Ｍ≧２）の暗号化処理部と、プロセッサからの暗号化処理ジョブを受け付けるＮ個（Ｎ≧２）のデータ及びパラメータ保持部と、Ｍ個の暗号化処理部とＮ個のデータ及びパラメータ保持部との間に介在し、Ｍ個の暗号化処理部の１つに転送するデータパス制御部とを備え、データパス制御部は、各暗号化処理部が処理中であるか否か、処理中の場合はどのデータ及びパラメータ保持部のジョブに対する処理を行っているかを管理するリソース管理部と、Ｎ個のデータ及びパラメータ保持部に保持されたデータ及びパラメータをブロック単位で、処理させる暗号化処理部に転送するリソース選択部とを有する。【選択図】図１
2011142411.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサからの要求に従って、データを暗号化する暗号化処理装置であって、
与えられたデータを、設定されたパラメータに従って暗号化するＭ個（Ｍ≧２）の暗号化処理部と、
前記プロセッサからの暗号化処理ジョブを受け付けるＮ個（Ｎ≧２）のデータ及びパラメータ保持部と、
前記Ｍ個の暗号化処理部と前記Ｎ個のデータ及びパラメータ保持部との間に介在し、前記Ｎ個のデータ及びパラメータ保持部の１つに保持されたデータとパラメータとを、前記Ｍ個の暗号化処理部の１つに転送するデータパス制御部とを備え、
前記データパス制御部は、
各暗号化処理部が処理中であるか否か、処理中の場合はどのデータ及びパラメータ保持部のジョブに対する処理を行っているかを管理するリソース管理部と、
前記Ｎ個のデータ及びパラメータ保持部に保持された前記データ及びパラメータをブロック単位で、処理させる暗号化処理部に転送するリソース選択部と
を有することを特徴とする暗号化処理装置。
【請求項２】
前記リソース選択部は、前記Ｎ個のデータ及びパラメータ保持部の１つから暗号化処理要求を受信した際、前記Ｍ個の暗号化処理部のうち複数の暗号化処理部に対して要求された暗号化処理をブロック単位に分散してデータ及びパラメータを供給することを特徴とする請求項１に記載の暗号化処理装置。
【請求項３】
前記リソース選択部は、前記暗号化処理要求がブロック単位で並列に処理可能な暗号モードである場合にのみ、前記Ｍ個の暗号化処理部のうち複数の暗号化処理部に対して要求された暗号化処理をブロック単位で、分散してデータ及びパラメータを供給することを特徴とする請求項２に記載の暗号化処理装置。
【請求項４】
前記ブロック単位で並列に処理可能な暗号モードはＣＴＲモードであることを特徴とする請求項３に記載の暗号化処理装置。
【請求項５】
前記パラメータは、前記暗号モードがＣＢＣモードである場合に、暗号鍵と、初期値又は１ブロック前の暗号化データであることを特徴とする請求項１又は２に記載の暗号化処理装置。
【請求項６】
前記パラメータは、前記暗号モードがＣＴＲモードである場合に、暗号化処理に用いるカウンタ値を含み、前記カウンタ値は前記データ及びパラメータ保持部に保持されたデータが、前記データパス制御部に転送される度にカウントアップされることを特徴とする請求項４に記載の暗号化処理装置。
【請求項７】
前記リソース選択部は、前記Ｎ個のデータ及びパラメータ保持部の１つから暗号化処理要求を受信した際、前記Ｍ個の暗号化処理部の全てが他のデータ及びパラメータ保持部からの要求に応じた暗号化処理中である場合には、Ｍ個の暗号化処理部のうちの１つが１ブロック分の暗号化処理を終えた時に、前記暗号化処理要求が待ち状態になっているデータ及びパラメータ保持部からの要求した暗号化処理要求を優先して前記暗号化処理を終えた暗号化処理部に前記データ及びパラメータを供給することを特徴とする請求項１に記載の暗号化処理装置。
【請求項８】
前記データパス制御部は、前記Ｎ個のデータ及びパラメータ保持部毎に予め割り当てられた優先度を記憶する記憶手段を更に有し、
前記リソース選択部は、複数の暗号化処理ジョブが転送された際に前記優先度が高いデータ及びパラメータ保持部から転送された暗号化処理ジョブを優先して処理することを特徴とする請求項１又は７に記載の暗号化処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの暗号化処理を行う暗号化処理装置に関する。
【背景技術】
【０００２】
近年、オフィスに限らず、一般家庭においても光ファイバ網へ安価に接続可能となり、インターネットを支えるインフラの整備が進んでいる。また、インターネットを利用して各種デジタル機器間でデータ通信を行うことも多くなっている。そして、このようなデジタル機器間の通信では、通信のセキュリティを確保するためにＳＳＬ／ＴＬＳやＩＰｓｅｃのような通信暗号プロトコルの標準規格が一般に用いられる。デジタル機器間で行う暗号化処理の対象となるデータは様々なデータ長のデータが混在する。例えば、ネットワークカメラでは、大量の画像データが暗号化処理されて送受信されると同時に、パスワードのような短いデータ長のデータの暗号化処理を行わなければならない場合があり、これらの同時に発生し得る暗号化処理要求（以下、暗号／復号処理要求の単位をジョブと呼ぶ）に対し、単に高速に処理するだけでなく、各ジョブに対してＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を損なうことなく処理されなければならない。従来の暗号化処理装置は、ＱｏＳを向上させるために、複数のジョブを受信すると各々のジョブを所定のデータ長ずつ順に実行することで、複数のジョブの暗号化処理を並行に処理していた。
【０００３】
例えば、特許文献１には、ＣＰＵが複数のジョブのデータを所定のデータ長に分割した後、ドライバが分割したデータを処理する順序を決定し、その決定した順序に従ってハードウェアアクセラレータにデータを引き渡して複数のジョブを並行に処理する技術が開示されている。また、従来の暗号化処理装置においては、より高速に処理を行うため、複数の暗号化処理部を設け、ジョブを受信すると、被処理データを暗号化処理部を設けた数と同じ数に分割してそれぞれの暗号化処理部に引き渡し、１つのジョブを複数の暗号化処理部で並列に実行する技術がある。例えば、特許文献２には、暗号化処理装置がジョブを受信すると、処理負荷の小さな暗号化処理部を特定し、特定した暗号化処理部に対して順に受信したジョブのデータの暗号化処理を行わせる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１６７９７０号公報
【特許文献２】特開２００２−２６１７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１及び２に開示された技術は、処理開始前にジョブが揃っていることを前提として、処理開始後に新たなジョブが発生すると、実行中の処理を終えてから新たなジョブの処理を行う。つまり、画像データのようなデータ長の長いジョブの処理の途中でパスワードのようなデータ長の短いジョブの処理が発生した場合に、パスワードの処理が長時間待たされることになり、ＱｏＳが低下してしまう。仮に、新たに発生したジョブを割り込ませる機能を実装した場合であっても、ＣＰＵがソフトウェア制御により実行中の処理を一旦中断し、他のジョブを処理し、完了後に中断した処理を再開しなければならない。ソフトウェア制御で処理を中断又は再開を行うと、ＣＰＵの負荷が大きくなるだけでなく、ソフトウェア制御を行う間、ハードウェアリソースも処理を行わないため、ハードウェアリソースの稼働率が低下し、処理の高速化を阻害する要因となる。
【０００６】
また、暗号化処理の中断又は再開を行うと、再開時に中断した暗号化処理に関する各種パラメータデータが必要になる。このため、中断時にこれらのパラメータデータを保存する必要があり、外部の主記憶装置に書き出される。そして、再開時には再び主記憶装置から読み出されるため、暗号化処理に必要な各種パラメータが一時的に外部に置かれることとなり、暗号が第三者に解読される危険性が高まるという問題が発生する。
【０００７】
このように従来の暗号化処理装置では、ジョブを割り込ませる機能を実装するとＣＰＵが暗号化処理の中断又は再開を制御する必要があるため、ＣＰＵの負荷が大きい。また、第１、第２の暗号化処理部に着目すると、処理負荷が不均一であることによりハードウェアリソースの稼働率が低下するため、処理速度の低下を招いてしまう。更に、中断時に転送を後で再開するために暗号化処理パラメータ、未処理データを転送するためのデータ転送パラメータ、次のブロックの暗号化処理に必要な途中結果を主記憶装置へ保存し、再開時に保存した結果を主記憶装置から読み出す必要があるため、暗号化処理における安全性が低下してしまう。
【０００８】
本発明は、上記課題に鑑みてなされたものであり、暗号化処理の開始後に新たなジョブが発生した場合にソフトウェア制御で暗号化処理を中断、再開することなくジョブを並列に実行可能にすることにより、暗号化処理における安全性を損なうことなくＱｏＳを向上させると共に、ハードウェアリソースの稼働率を向上させて、より高速に処理可能な暗号化処理装置を提供するものである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明に係る暗号化処理装置は、プロセッサからの要求に従って、データを暗号化する暗号化処理装置であって、与えられたデータを、設定されたパラメータに従って暗号化するＭ個（Ｍ≧２）の暗号化処理部と、前記プロセッサからの暗号化処理ジョブを受け付けるＮ個（Ｎ≧２）のデータ及びパラメータ保持部と、前記Ｍ個の暗号化処理部と前記Ｎ個のデータ及びパラメータ保持部との間に介在し、前記Ｎ個のデータ及びパラメータ保持部の１つに保持されたデータとパラメータとを、前記Ｍ個の暗号化処理部の１つに転送するデータパス制御部とを備え、前記データパス制御部は、各暗号化処理部が処理中であるか否か、処理中の場合はどのデータ及びパラメータ保持部のジョブに対する処理を行っているかを管理するリソース管理部と、前記Ｎ個のデータ及びパラメータ保持部に保持された前記データ及びパラメータをブロック単位で、処理させる暗号化処理部に転送するリソース選択部とを有する。
【発明の効果】
【００１０】
本発明によれば、暗号化処理の開始後に新たなジョブが発生した場合にソフトウェア制御で暗号化処理を中断、再開することなくジョブを並列に実行可能にすることにより、暗号化処理における安全性を損なうことなくＱｏＳを向上させると共に、ハードウェアリソースの稼働率を向上させて、より高速に処理可能な暗号化処理装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１に係る暗号化処理装置の機能的構成を示すブロック図。
【図２】ＣＴＲモードでＡＥＳのアルゴリズムによる暗号化を行うブロック図。
【図３】ＣＴＲモードでＡＥＳのアルゴリズムによる暗号化を行うブロックのタイミングチャートを示す図。
【図４】データ及びパラメータ保持部及びデータパス制御部のインターフェースのタイミングチャートを示す図。
【図５】データパス制御部がジョブ及び暗号化処理部の割り当てを決定するテーブルを示す図。
【図６】データパス制御部が優先度に応じてジョブと暗号化処理部の割り当てを決定するテーブルを示す図。
【図７】暗号化処理装置の動作を示す図。
【図８】暗号化処理装置のタインミングチャートを示す図。
【図９】実施例２に係る暗号化処理装置の機能的構成を示すブロック図。
【図１０】ＣＢＣモードでＡＥＳのアルゴリズムによる暗号化を行うブロック図。
【図１１】ＣＴＲモード又はＣＢＣモードＡＥＳのアルゴリズムによる暗号化を行うブロック図。
【図１２】実施例２に係る暗号化処理装置のデータパス制御部がジョブと暗号化処理部の割り当てを決定する動作手順を示す図。
【図１３】暗号化処理装置の動作を示すシーケンス図。
【図１４】従来の暗号化処理装置の機能的構成を示すブロック図。
【図１５】従来の暗号化処理装置の動作を示す図。
【発明を実施するための形態】
【００１２】
以下に、本発明の実施形態について添付図面を参照して詳細に説明する。なお、本発明の技術的範囲は特許請求の範囲によって確定されるのであって、以下に例示する実施形態に限定されるものではない。
【００１３】
＜従来技術（図１４、図１５）＞
まず、上述の従来技術について詳細に説明する。図１４において、１４００は複数のジョブを並列に暗号化処理する従来の暗号化処理装置である。１４０１はプロセッサ（ＣＰＵ等）、１４０２は主記憶装置、１４０４、１４０５はＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）、１４０６、１４０７は暗号化処理部である。システムバス１４０３には、プロセッサ１４０１、主記憶装置１４０２、ＤＭＡＣ１４０４、１４０５が接続される。暗号化処理部１４０６は、ＤＭＡＣ１４０４から被処理データを受け取って暗号化処理を行う。暗号化処理部１４０７は、ＤＭＡＣ１４０５から被処理データを受け取って暗号化処理を行う。
【００１４】
図１５に暗号化処理装置１４００においてジョブを割り込ませるシーケンス図を示す。まず、プロセッサがジョブ（ジョブＡとする）を受信する（１５０１）。このとき、暗号化処理部１４０６、１４０７はいずれも処理を行っていないため、プロセッサはジョブＡの被処理データを２分割し（２分割したデータをＡ０、Ａ１とする）、暗号化処理部１４０６、１４０７の双方で処理を行わせる。プロセッサは、ＤＭＡＣ１４０４に被処理データＡ０を処理するための暗号化処理パラメータやデータ転送パラメータ等を設定して起動する（１５０２）。ＤＭＡＣ１４０４は、被処理データＡ０を暗号化処理部１４０６へ転送し、暗号化処理部１４０６が暗号化処理を行う（１５０３）。更に、プロセッサは、ＤＭＡＣ１４０５に被処理データＡ１を処理するための暗号化処理パラメータやデータ転送パラメータ等を設定して起動する（１５０４）。ＤＭＡＣ１４０５は、被処理データＡ１を暗号化処理部１４０７へ転送し、暗号化処理部１４０７が暗号化処理を行う（１５０５）。そして、ジョブ（ジョブＢとする）を受信する（１５０６）。このとき、暗号化処理部１４０６、１４０７は、いずれもジョブＡの処理中であるため、プロセッサは一方の処理を止めてジョブＢの処理を行わせる。このため、プロセッサは、ＤＭＡＣ１４０４に転送中止要求を出す（１５０７）。ＤＭＡＣ１４０４は、転送を中止するとプロセッサへ転送終了を通知する（１５０８）。プロセッサは、中止した転送を後で再開するために、暗号化処理パラメータ、未処理データを転送するためのデータ転送パラメータ、次のブロックの暗号化処理に必要な途中結果を主記憶装置へ保存する（１５０９）。その後、ＤＭＡＣ１４０４に、ジョブＢの被処理データを処理するための暗号化処理パラメータ、データ転送パラメータを設定して起動する（１５１０）。ＤＭＡＣ１４０４は、ジョブＢの被処理データを暗号化処理部１４０６へ転送し、暗号化処理部１４０６が暗号化処理を行う（１５１１）。ＤＭＡＣ１４０４は、設定された転送長データの転送が終了するとプロセッサへジョブＢの転送終了を通知する（１５１２）。プロセッサは、中止した転送を再開するために１５０９で保存したデータを主記憶装置から読み出し（１５１３）、ＤＭＡＣ１４０４に暗号化処理パラメータ、データ転送パラメータ等を設定して起動する（１５１４）。ＤＭＡＣ１４０４は、被処理データＡ０の未処理のデータを暗号化処理部１４０６へ転送し、暗号化処理部１４０６が暗号化処理を行う（１５１５）。ＤＭＡＣ１４０５は被処理データＡ１の転送が終了するとプロセッサへ転送終了を通知する（１５１６）。ＤＭＡＣ１４０４も被処理データＡ０の残りの転送が終了するとプロセッサへ転送終了を通知する（１５１７）。
【００１５】
＜実施例１（図１〜図８）＞
図１において、暗号化処理装置１００は、プロセッサからの要求に従って、データを暗号化する装置であり、２つの暗号化処理ジョブ（ジョブＡ、Ｂとする）を受信した場合には、並列に暗号化処理することが可能となるように構成される。
【００１６】
すなわち、暗号化処理装置１００は、与えられたデータを、設定されたパラメータに従って暗号化するＭ個（本実施例では、Ｍ＝２）の暗号化処理部１０４、１０５と、プロセッサ１０１からの暗号化処理ジョブを受け付けるＮ個（本実施例では、Ｎ＝２）のデータ及びパラメータ保持部１０６、１０７と、２個の暗号化処理部１０４、１０５と２個のデータ及びパラメータ保持部１０６、１０７との間に介在し、２個のデータ及びパラメータ保持部１０６、１０７の１つから要求されたデータとパラメータとを、２個の暗号化処理部１０４、１０５の少なくとも１つに転送するデータパス制御部１０８とを備える。
【００１７】
１０１はＣＰＵ等を有するプロセッサ、１０２は主記憶装置、１０３はシステムバスである。システムバス１０３には、プロセッサ１０１、主記憶装置１０２、データ及びパラメータ保持部１０６、１０７が接続される。暗号化処理部１０４、１０５は、共通鍵暗号アルゴリズムＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が実行可能で内部構成が同一のブロックである。ここでは暗号モードとしてＣＴＲ（カウンタ）モード専用の構成になっている。
【００１８】
データパス制御部１０８は、どの暗号化処理部が処理待ち状態か、どの暗号化処理部がどのデータ及びパラメータ保持部から要求されたジョブに対して暗号化処理中であるかを管理するリソース管理部１０８ａと、２個のデータ及びパラメータ保持部１０６、１０７の１つ以上から暗号化処理要求を受信した際、ブロック単位で２個の暗号化処理部１０４、１０５のどちらで処理させるかを選択するリソース選択部１０８ｂを備える。データパス制御部１０８は、２個のデータ及びパラメータ保持部１０６、１０７の１つから暗号化処理要求を受信した際、２個の暗号化処理部１０４、１０５の全てが処理待ち状態にある場合に、要求された暗号化処理をブロック単位に２個の暗号化処理部１０４、１０５に分散して処理させるようにデータパスを選択し、暗号化に関するデータを暗号化処理部１０４、１０５に供給する。また、２個のデータ及びパラメータ保持部１０６、１０７の１つから暗号化処理要求を受信した際、２個の暗号化処理部１０４、１０５の全てが他のデータ及びパラメータ保持部からの要求に応じた暗号化処理中である場合に、どちらかの暗号化処理部が１ブロック分の暗号化処理を終えたタイミングで、当該暗号化処理部にデータ及びパラメータ保持部から要求された暗号化処理をさせるようにデータパスを選択し、暗号化に関するデータを供給する。さらに、２個のデータ及びパラメータ保持部毎に予め割り当てられた暗号化処理の優先度を記憶する記憶部１０８ｃと、を有する。
【００１９】
暗号化処理部１０４、１０５の内部構成を図２に示す。２０１は暗号アルゴリズムＡＥＳによる暗号化を行うブロックである。２０２は排他的論理和ＸＯＲを演算する演算回路である。暗号アルゴリズムＡＥＳは、１ブロック分の入力データに、暗号鍵を用いて所定の処理を１１ラウンド行う。本実施例では、１ラウンドを１サイクルで実行するものとし、２０１での暗号化処理に１１サイクルかかる。ＣＴＲモードの仕様は、ブロック毎に固有の値であるカウンタ値を暗号化して得られたデ−タと被処理データとの排他的論理和（ＸＯＲ）を演算して処理結果とすることが定義されている。
【００２０】
２０１には、入力として、処理開始要求信号Ｓｔａｒｔ、カウンタ値Ｃｎｔ、暗号鍵Ｋｅｙが与えられる。処理開始要求信号Ｓｔａｒｔがアサートされる（有効になる）と、カウンタ値の暗号化処理を開始する。１１サイクル後に２０１の出力と被処理データとの排他的論理和（ＸＯＲ）を処理結果データ（暗号化データ）とし、処理結果が有効であることを示す処理結果有効信号Ｖａｌｉｄをアサートする。その動作を図３のタイミングチャートに示す。
【００２１】
サイクルＴ３０１において、被処理データとして１ブロック目のデータＰ０、暗号鍵として所定の値ＫＥＹ、カウンタ値として所定の初期値ＩＶが与えられ、処理開始要求信号がアサートされる。与えられたカウンタ値を、サイクルＴ３０２で１ラウンド目、サイクルＴ３０３で２ラウンド目、・・・、サイクルＴ３１２で１１ラウンド目の暗号化処理を行う。得られたデータと被処理データＰ０との排他的論理和（ＸＯＲ）を演算して処理結果データＣ０として出力すると共に処理結果有効信号をアサートする。同一のサイクルＴ３１２において、２ブロック目の被処理データＰ１、暗号鍵ＫＥＹ、１ブロック目の値を１インクリメント（カウントアップ）したカウンタ値ＩＶ＋１が与えられ、処理開始要求信号がアサートされる。１ブロック目の暗号化処理と同様に与えられたカウンタ値に対して、サイクルＴ３１３で１ラウンド目、サイクルＴ３１４で２ラウンド目の暗号化処理を行う。
【００２２】
データ及びパラメータ保持部１０６、１０７は、内部構成が同一のブロックである。１０６１、１０７１は、ジョブの被処理データを主記憶装置１０２から転送するチャネルと、処理結果データを主記憶装置１０２へ転送するチャネルとの２チャネルを備えるＤＭＡＣである。データ幅は、暗号化処理部の処理データ単位である１ブロックとする。１０６２、１０７２は、１ブロック目の被処理データの暗号化処理に用いるカウンタの初期値を保持するレジスタである。
【００２３】
１０６３、１０７３は、ＣＴＲモードのブロック暗号で用いるカウンタ値を生成するカウンタである。カウンタの出力は被処理データがデータパス制御部１０８に引き渡されると同時にデータパス制御部１０８に引き渡される。カウンタ１０６３は、１ブロック目の被処理データが引き渡される際にレジスタ１０６２の値を引き渡し、２ブロック目以降の被処理データが引き渡される際に１ずつインクリメントした値を引き渡す。カウンタ１０７３も同様に、１ブロック目の被処理データが引き渡される際に１０７２のレジスタの値を引き渡し、２ブロック目以降の被処理データが引き渡される際に１ずつインクリメントした値を引き渡す。
【００２４】
１０６５、１０７５はデータパス制御部１０８へ転送する被処理データを格納する送信データバッファである。送信データバッファの容量は、処理高速化のために、同時に暗号化処理を行うことのできるブロック分の被処理データを格納可能である容量とすることが望ましい。データパス制御部１０８とのインターフェースは、転送元が出す有効信号と転送先が出す受信信号でデータ転送を行う２線のハンドシェークプロトコルである。２線のハンドシェークプロトコルのタイミングチャートを図４に示す。
【００２５】
まず、転送元は転送データが有効であることを示す有効信号をアサートすると共に転送データＤ０をセットする（Ｔ４０１）。そして、転送先が受信信号をアサートし（Ｔ４０２）、転送データＤ０を取り込む（Ｔ４０３）。転送元は受信信号のアサートにより転送が完了したため、有効信号をデアサートする。
【００２６】
ＤＭＡＣが主記憶装置１０２から被処理データを転送すると、送信データバッファに被処理データを格納する。送信データバッファ１０６５、１０７５は、内部にデータが存在すると有効信号をアサートしてバッファの先頭データを転送データとしてセットする。データパス制御部１０８が受信信号をアサートして転送データを取り込むと転送が完了する。
【００２７】
１０６６、１０６７はデータパス制御部１０８から転送された処理結果データを格納する受信データバッファである。データパス制御部１０８とのインターフェースは送信データバッファ１０６５、１０７５と同様の２線のハンドシェークプロトコルである。内部にデータが存在する場合には、ＤＭＡＣが主記憶装置１０２へ処理結果データを転送する。
【００２８】
データパス制御部１０８は、データ及びパラメータ保持部１０６、１０７から転送されるデータをブロック単位でどの暗号化処理部で処理するかを決定し、決定した暗号化処理部に被処理データ及び暗号化処理に必要なパラメータ群を引き渡す。そして、暗号化処理部により出力された処理結果データを元のデータ及びパラメータ保持部へ引き渡す。
【００２９】
データパス制御部１０８が、ジョブＡ、ジョブＢのデータの有無の相違に基づいて、暗号化処理部１０４、１０５のいずれで処理を行うかを決定するためのテーブルを図５に示す。５０１はジョブＡ、ジョブＢのデータのいずれのデータも無い場合に、暗号化処理部１０４、１０５の双方にデータを引き渡さないことを示す。５０２はジョブＡのみデータがある場合に、暗号化処理部１０４、１０５のそれぞれにジョブＡのデータを１ブロックずつ交互に引き渡すことを示す。５０３はジョブＢのみデータがある場合に、暗号化処理部１０４、１０５のそれぞれにジョブＢのデータを１ブロックずつ交互に引き渡すことを示す。５０４はジョブＡとジョブＢの両方のデータがある場合に、ジョブＡのデータを暗号化処理部１０４に引き渡し、ジョブＢのデータを暗号化処理部１０５に引き渡すことを示す。
【００３０】
本テーブルによれば、１つのジョブのデータしか無い場合には、すべての暗号化処理部で複数ブロックを同時に処理し、２つのジョブのデータがある場合には、１つのジョブのデータを１つの暗号化処理部で１ブロックずつ処理する。
【００３１】
データパス制御部１０８がジョブＡ、ジョブＢのデータをどの暗号化処理部で処理するかを決定する他のテーブルを図６に示す。６０１は、ジョブＡ、ジョブＢのデータが無い場合に、両方の暗号化処理部にデータを引き渡さないことを示す。６０２はジョブＡのみデータがある場合に、両方の暗号化処理部にジョブＡのデータを１ブロックずつ交互に引き渡すことを示す。６０３はジョブＢのみデータがある場合に、両方の暗号化処理部にジョブＢのデータを１ブロックずつ交互に引き渡すことを示す。６０４はジョブＡとジョブＢの両方のデータがある場合に、ジョブＡとジョブＢの処理の優先度が同じであれば、ジョブＡのデータを暗号化処理部１０４に引き渡し、ジョブＢのデータを暗号化処理部１０５に引き渡すことを示す。６０５はジョブＡとジョブＢの両方のデータがある場合に、ジョブＡの処理の優先度がジョブＢの処理の優先度よりも高ければ両方の暗号化処理部にジョブＡのデータを１ブロックずつ交互に引き渡すことを示す。６０６はジョブＡとジョブＢの両方のデータがある場合に、ジョブＢの処理の優先度がジョブＡの処理の優先度よりも高ければ両方の暗号化処理部にジョブＢのデータを１ブロックずつ交互に引き渡すことを示す。本テーブルによれば、２つのジョブのデータがある場合に、優先度に応じて１つのジョブのデータをすべての暗号化処理部で複数ブロックを同時に処理するか、１つのジョブのデータを１つの暗号化処理部で１ブロックずつ処理するかを決定する。本実施例では、図５のテーブルに従ってデータを引き渡す動作について説明するが、例えば、図６のテーブルのように、種々のテーブルに従ってデータを引き渡すことも可能である。
【００３２】
暗号化処理装置１００がジョブＡの処理開始後に新たなジョブＢを受信したときの各ブロックの動作を図７のシーケンス図を用いて説明する。まず、プロセッサ１０１がジョブ（ジョブＡとする）を受信する（７０１）。プロセッサ１０１はデータ及びパラメータ保持部１０６に対して暗号化処理に必要なパラメータである暗号鍵をレジスタ１０６４に設定し、カウンタの初期値をレジスタ１０６２に設定する（７０２）。更に、被処理データを配置したアドレス、転送長、処理結果を格納するアドレス等のデータ転送に必要な情報を内部のＤＭＡＣ１０６１に設定して起動する（７０２）。データ及びパラメータ保持部１０６は、ＤＭＡＣ１０６１が起動すると、被処理データを配置したアドレスから被処理データを読み出し、暗号鍵、カウンタ値と共にデータパス制御部１０８に引き渡す（７０３）。データパス制御部１０８は、図５のテーブルに従ってジョブＡの被処理データをブロック単位で暗号化処理部１０４、１０５に交互に引き渡す（７０４、７０５）。暗号化処理部１０４が１ブロックの暗号化処理を完了すると、データパス制御部１０８に処理結果データを引き渡し（７０６）、データパス制御部１０８は、データ及びパラメータ保持部１０６に処理結果データを引き渡す（７０７）。
【００３３】
データ及びパラメータ保持部１０６は、内部の受信データバッファ１０６６にデータを格納すると、ＤＭＡＣ１０６１が処理結果データを主記憶装置１０２の格納すべきアドレスに書き込む。暗号化処理部１０５も同様に１ブロックの暗号化処理を完了するとデータパス制御部１０８に処理結果データを引き渡し（７０８）、データパス制御部１０８を経てデータ及びパラメータ保持部１０６の内部のＤＭＡＣ１０６１が処理結果データを主記憶装置１０２に書き込む。データ及びパラメータ保持部１０６は設定された転送長分のデータ転送を終了するまでデータパス制御部１０８へデータを引き渡す。
【００３４】
次に、プロセッサ１０１がジョブ（ジョブＢとする）を受信する（７０８）。データ及びパラメータ保持部１０７に対して暗号化処理に必要なパラメータである暗号鍵をレジスタ１０７４に設定し、カウンタの初期値をレジスタ１０７２に設定する（７０９）。更に、被処理データを配置したアドレス、転送長、処理結果を格納するアドレス等、データ転送に必要な情報を内部のＤＭＡＣ１０７１に設定して起動する（７０９）。データ及びパラメータ保持部１０７はＤＭＡＣ１０７１が起動すると被処理データを配置したアドレスから被処理データを読み出し、暗号鍵、カウンタ値と共にデータパス制御部１０８に引き渡す（７１０）。
【００３５】
データパス制御部１０８は、図５のテーブルに従ってジョブＢの被処理データ、暗号鍵、カウンタ値を暗号化処理部１０５に引き渡し（７１１）、ジョブＡの被処理データを暗号化処理部１０４に引き渡す（７１２）。暗号化処理部１０５が１ブロックの暗号化処理を完了すると、データパス制御部１０８に処理結果データを引き渡し（７１３）、データパス制御部１０８は、データ及びパラメータ保持部１０７に処理結果データを引き渡す（７１４）。データ及びパラメータ保持部１０７は、内部の受信データバッファ１０７６にデータを格納すると、ＤＭＡＣ１０７１が処理結果データを主記憶装置１０２の格納すべきアドレスに書き込む。
【００３６】
暗号化処理部１０４も同様に、１ブロックの暗号化処理を完了すると、データパス制御部１０８に処理結果データを引き渡し（７１５）、データパス制御部１０８は、データ及びパラメータ保持部１０６に処理結果データを引き渡す（７１６）。データ及びパラメータ保持部１０７は、設定された転送長分のデータ転送を終了すると、プロセッサ１０１に処理終了を通知する（７１７）。
【００３７】
データパス制御部１０８は、ジョブＢのデータを受信しなくなると、再びジョブＡの被処理データ、暗号鍵、カウンタ値をブロック単位で暗号化処理部１０４、１０５に交互に引き渡す。データ及びパラメータ保持部１０６は、設定された転送長分のデータ転送を終了すると、プロセッサ１０１に処理終了を通知する（７１８）。
【００３８】
図８のタイミングチャートは、上記動作におけるデータパス制御部１０８の具体的な動作を示す。ジョブＡの被処理データはＮブロックで構成されるデータで、ブロックデータＡ０、Ａ１、・・・ＡＮに分割して暗号化処理される。ジョブＢの被処理データは、２ブロックで構成されるデータで、Ｂ０、Ｂ１に分割して暗号化処理される。
【００３９】
データパス制御部１０８は、Ｔ８０２においてデータ及びパラメータ保持部１０６から有効信号がアサートされると、暗号化処理部１０４で処理すると判断し、Ｔ８０３で１ブロック目の被処理データＡ０、カウンタ値ＡＩＶ、暗号鍵ＡＫＥＹを暗号化処理部１０４へ引き渡す。更に、有効信号がアサートされると、暗号化処理部１０５で処理すると判断し、Ｔ８０４において２ブロック目の被処理データＡ１、カウンタ値ＡＩＶ＋１、暗号鍵ＡＫＥＹを暗号化処理部１０５へ引き渡す。
【００４０】
Ｔ８１３では次のサイクルで暗号化処理部１０４が処理結果データを出力するため、暗号化処理部１０４で次に処理するデータを取得しておく。Ｔ８１３において有効信号がアサートされているため、Ｔ８１４において３ブロック目の被処理データＡ２、カウンタ値ＡＩＶ＋２、暗号鍵ＡＫＥＹのデータを暗号化処理部１０４へ引き渡す。同時に、ジョブＡの１ブロック目の処理結果データＣＡ０が出力されるため、Ｔ８１５においてデータ及びパラメータ保持部１０６へ引き渡す。
【００４１】
また、Ｔ８１４において次のサイクルで暗号化処理部１０５が処理結果データを出力するため、暗号化処理部１０５で次に処理するデータを取得しておく。Ｔ８１４において有効信号がアサートされているため、Ｔ８１５において４ブロック目の被処理データＡ３、カウンタ値ＡＩＶ＋３、暗号鍵ＡＫＥＹのデータを暗号化処理部１０５へ引き渡す。同時に、ジョブＡの２ブロック目の処理結果データＣＡ１が出力されるため、Ｔ８１６においてデータ及びパラメータ保持部１０６へ引き渡す。
【００４２】
Ｔ８２３においてデータ及びパラメータ保持部１０７から有効信号がアサートされる。ジョブＡとジョブＢの両方の被処理データがある場合に、ジョブＡの被処理データを暗号化処理部１０４に引き渡し、ジョブＢの被処理データを暗号化処理部１０５に引き渡す。
【００４３】
従って、Ｔ８２４では、データ及びパラメータ保持部１０６の有効信号がアサートされているため、Ｔ８２５においてジョブＡの５ブロック目の被処理データＡ４、カウンタ値ＡＩＶ＋４、暗号鍵ＡＫＥＹのデータを暗号化処理部１０４へ引き渡す。同時に、ジョブＡの３ブロック目の処理結果データＣＡ２が出力されるため、Ｔ８２６においてデータ及びパラメータ保持部１０６へ引き渡す。
【００４４】
Ｔ８２５においてデータ及びパラメータ保持部１０７の有効信号がアサートされているため、Ｔ８２６においてジョブＢの１ブロック目の被処理データＢ０、カウンタ値ＢＩＶ、暗号鍵ＢＫＥＹのデータを暗号化処理部１０５へ引き渡す。同時に、ジョブＡの４ブロック目の処理結果データＣＡ３が出力されるため、Ｔ８２７においてデータ及びパラメータ保持部１０６へ引き渡す。
【００４５】
Ｔ８３５においてジョブＡの６ブロック目の被処理データＡ５、カウンタ値ＡＩＶ＋５、暗号鍵ＡＫＥＹのデータを暗号化処理部１０４へ引き渡す。同時に、ジョブＡの５ブロック目の処理結果データＣＡ４が出力されるため、Ｔ８３７においてデータ及びパラメータ保持部１０６へ引き渡す。
【００４６】
Ｔ８３６においてデータ及びパラメータ保持部１０７の有効信号がアサートされているため、Ｔ８３７においてジョブＢの２ブロック目の被処理データＢ１、カウンタ値ＢＩＶ＋１、暗号鍵ＢＫＥＹのデータを暗号化処理部１０５へ引き渡す。ジョブＢの全被処理データは２ブロックであるため、データ及びパラメータ保持部１０７は有効信号をデアサートする。同時に、ジョブＢの１ブロック目の処理結果データＣＢ０が出力されるため、Ｔ８３８においてデータ及びパラメータ保持部１０７へ引き渡す。
【００４７】
Ｔ８４６においてジョブＡの７ブロック目の被処理データＡ６、カウンタ値ＡＩＶ＋６、暗号鍵ＡＫＥＹのデータを暗号化処理部１０４へ引き渡す。同時に、ジョブＡの６ブロック目の処理結果データＣＡ５が出力されるのでＴ８４８においてデータ及びパラメータ保持部１０６へ引き渡す。
【００４８】
Ｔ８３６においてデータ及びパラメータ保持部１０７の有効信号はデアサートされ、データ及びパラメータ保持部１０６の有効信号がアサートされているため、Ｔ８４８においてジョブＡの８ブロック目の被処理データＡ７、カウンタ値ＡＩＶ＋７、暗号鍵ＡＫＥＹのデータを暗号化処理部１０５へ引き渡す。同時に、ジョブＢの２ブロック目の処理結果データＣＢ１が出力されるため、Ｔ８４９においてデータ及びパラメータ保持部１０７へ引き渡す。
【００４９】
上記動作によれば処理開始後に新たなジョブが発生した場合に、プロセッサ１０１は使用していないデータ及びパラメータ保持部に対して暗号化処理に必要なパラメータの設定、データ転送に必要な情報の設定、ＤＭＡＣの起動を行うだけで、先に実行中のジョブを中断・再開する必要はない。そのため、中断時のデータの書き出し、再開時のデータの読み出しを行う必要がないため、安全性が向上する。
【００５０】
一方、暗号化処理部１０４、１０５は、１つのジョブのみ存在する場合に、被処理データは２つの暗号化処理部にブロック単位で交互に引き渡され、１つのジョブの複数ブロックを同時に実行する。２つのジョブが存在する場合には、１つのジョブの被処理データを１つの暗号化処理部に引き渡され、複数ジョブを同時に実行する。これにより、処理高速化、ＱｏＳ向上を図ることができる。また、プロセッサ１０１によるジョブの中断や再開を行う必要が無いため、暗号化処理部がデータ待ちになる時間が少なく、稼働率を向上することができる。
【００５１】
＜実施例２（図９〜図１３）＞
本実施例では、複数ブロックを同時に処理できる暗号化モード（ＣＴＲモード）と、１ブロックずつしか処理できない暗号化モード（ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎ）モード）とをサポートし、かつ、並列に実行するジョブの数が暗号化処理部よりも多い暗号化処理装置について説明する。
【００５２】
本実施例に係る暗号化処理装置９００は、ＣＴＲモードのジョブを受信すると処理中でない暗号化処理部で複数ブロックを同時に処理し、また、ＣＢＣモードのジョブを受信すると１つの暗号化処理部で１ブロックずつ処理する。すべての暗号化処理部が処理中に新たなジョブが発生すると、ブロック単位で処理中のジョブを安全に中断して発生したジョブを割り込ませることが可能である。更に、中断したジョブを安全に再開することが可能である。暗号化処理装置９００は、３つのジョブ（ジョブＡ、ジョブＢ、ジョブＣとする）を並列に暗号化処理可能である。
【００５３】
すなわち、暗号化処理装置９００は、図９で示すように、与えられたデータを、設定されたパラメータに従って暗号化するＭ個（本実施例では、Ｍ＝２）の暗号化処理部９０４、９０５と、プロセッサ９０１からの暗号化処理ジョブを受け付けるＮ個（本実施例では、Ｎ＝３）のデータ及びパラメータ保持部９０６、９０７、９０９と、２個の暗号化処理部９０４、９０５と３個のデータ及びパラメータ保持部９０６、９０７、９０９との間に介在し、３個のデータ及びパラメータ保持部９０６、９０７、９０９の１つから要求されたデータとパラメータとを、２個の暗号化処理部９０４、９０５の少なくとも１つに転送するデータパス制御部９０８とを備える。
【００５４】
９０２は主記憶装置、９０３はシステムバスである。システムバス９０３には、プロセッサ９０１、主記憶装置９０２、データ及びパラメータ保持部９０６、９０７、９０９が接続される。データ及びパラメータ保持部９０６、９０７、９０９は、暗号化処理部９０４、９０５にデータを引き渡す。また、暗号化処理部９０４、９０５は、データ及びパラメータ保持部９０６、９０７、９０９へデータを引き渡す。暗号化処理部９０４、９０５は、モード信号を判定してＣＴＲモード又はＣＢＣモードの暗号アルゴリズムＡＥＳを実行する。
【００５５】
ＣＴＲモードの暗号アルゴリズムＡＥＳを実行するブロックの構成を図２に示し、ＣＢＣモードの暗号アルゴリズムＡＥＳを実行するブロックの構成を図１０に示す。
【００５６】
１００１は暗号アルゴリズムＡＥＳによる暗号化を行うブロックで、その動作は図２の２０１と同様である。１００２は排他的論理和ＸＯＲの演算回路で、その動作は図２の２０２と同様である。１００３は、暗号アルゴリズムＡＥＳが出力したデータと、外部から入力されたデータとを外部信号使用判定信号に応じて選択して出力するセレクタである。ＣＢＣモードの仕様は、ブロック毎に固有の値である１ブロック前のブロックの暗号化処理結果データと被処理データとの排他的論理和（ＸＯＲ）を演算して得られたデータを暗号化し、処理結果とすることが定義されている。１ブロック目の処理時は、１ブロック前のブロックの暗号化処理結果データは存在しないため、外部から暗号化処理結果データの代わりに使用する初期値が与えられることも定義されている。
【００５７】
１ブロック前のブロックの暗号化処理結果データが存在しない１ブロック目の処理を行う場合又は暗号化処理の途中で一旦中断し、他のジョブの暗号化処理を実行した後に、処理を再開する場合に外部信号使用判定信号がアサートされ、セレクタ１００３は暗号化処理入力データを選択して出力する。暗号化処理部９０４、９０５は、内部構成が同一のブロックである。
【００５８】
暗号化処理部９０４、９０５の内部構成を図１１に示す。外部から、ＣＢＣモード又はＣＴＲモードを示すモード信号、処理開始要求信号、被処理データ、暗号鍵、暗号化処理入力データ、外部入力使用判定信号が与えられる。暗号化処理入力データは、暗号化処理を行うために、被処理データ以外に必要になる入力データであり、ＣＴＲモード実行時にはカウンタ値が入力され、ＣＢＣモード実行時には初期値又は１ブロック前のブロックの暗号化処理結果データが入力される。そして、暗号化処理の処理結果データと処理結果有効信号を出力する。
【００５９】
１１０１は暗号アルゴリズムＡＥＳによる暗号化を行うブロック、１１０２は排他的論理和ＸＯＲの演算回路である。１１０３は暗号アルゴリズムＡＥＳが出力したデータと、外部から入力されたデータとを外部信号使用判定信号に応じて選択して出力するセレクタである。１１０４はＡＥＳブロックへの入力を選択するセレクタで、ＣＢＣモードの場合にＸＯＲの出力データを選択し、ＣＴＲモードの場合にカウンタ値を示す暗号化処理入力データを選択する。１１０５はＸＯＲの入力を選択するセレクタで、ＣＢＣモードの場合に１ブロック前のブロックの暗号化処理データを選択し、ＣＴＲモードの場合にＡＥＳの出力データを選択する。１１０６は処理結果データとして出力するデータを選択するセレクタで、ＣＢＣモードの場合にＡＥＳブロックの出力データを選択し、ＣＴＲモードの場合にＸＯＲの出力データを選択する。暗号化処理部９０４、９０５は、セレクタ１１０４、１１０５、１１０６により、ＣＢＣ、ＣＴＲモードに応じてパスを切り替えて処理する。データ及びパラメータ保持部９０６、９０７、９０９は内部構成が同一のブロックである。
【００６０】
９０６１、９０７１、９０９１はＤＭＡＣでその動作は図１の１０６１、１０７１と同じである。９０６２、９０７２、９０９２は１ブロック目の被処理データの暗号化処理に使用する初期値を保持するレジスタである。９０６７、９０７７、９０９７はＣＢＣモード又はＣＴＲモードを指定するモードレジスタである。９０６３、９０７３、９０９３はモードレジスタの値によって動作を変更するレジスタである。ＣＴＲモードの場合にカウンタ値を生成するカウンタとして動作し、ＣＢＣモードの場合に１ブロック前のブロックの暗号化処理結果データを保持する。カウンタ９０６３は、データ及びパラメータ保持部９０６が１ブロック目の被処理データをデータパス制御部９０８に引き渡す場合に、カウンタの初期値としてレジスタ９０６２の値をデータパス制御部９０８に引き渡し、２ブロック目以降の被処理データをデータパス制御部９０８に引き渡す場合に、１インクリメントした値をデータパス制御部９０８に引き渡す。カウンタ９０７３も同様に動作する。
【００６１】
９０６４、９０７４、９０９４は暗号化に使用する暗号鍵を保持するレジスタでその動作は図１の１０６４、１０７４と同じである。９０６５、９０７５、９０９５はデータパス制御部１０８へ転送するデータを格納する送信データバッファでその動作は図１の１０６５、１０７５と同じである。ＣＢＣモードをサポートするための追加機能として、１ブロック目のデータ転送時には処理スタートを示す信号、最終ブロックのデータ転送時には処理エンドを示す信号を発行する機能を有する。９０６６、９０７６、９０９６はデータパス制御部９０８から転送した処理結果データを格納する受信データバッファでその動作は図１の１０６６、１０７６と同じである。
【００６２】
データパス制御部９０８はどの暗号化処理部が処理待ち状態か、どの暗号化処理部がどのデータ及びパラメータ保持部から要求されたジョブに対して暗号化処理中であるかを管理するリソース管理部９０８ａと、３個のデータ及びパラメータ保持部９０６、９０７、９０９の１つ以上から暗号化処理要求を受信した際、ブロック単位で２個の暗号化処理部９０４、９０５のどちらで処理させるかを選択するリソース選択部９０８ｂを備える。また、３個のデータ及びパラメータ保持部毎に暗号化処理の優先度を記憶する記憶部９０８ｃと、を有する。
【００６３】
データパス制御部９０８がジョブＡ、ジョブＢ、ジョブＣのデータをどの暗号化処理部で処理するか決定するフローチャートを図１２に示す。データ及びパラメータ保持部９０６、９０７、９０９から処理スタートを示す信号、又は処理エンドを示す信号を受けた場合にジョブと暗号化処理部の割り当てを開始する。
【００６４】
Ｓ１２０１において、処理のスタート、エンドを判定する。処理のスタートである場合には、Ｓ１２０２においてすべての暗号化処理部で処理中であるか否かを判定する。処理をしていない暗号化処理部がある場合には、Ｓ１２０３においてＣＢＣモードであるか、ＣＴＲモードであるかを判定する。ＣＴＲモードである場合には、処理中でないすべての暗号化処理部で複数ブロックを並列に処理することを決定する（Ｓ１２０４）。ＣＢＣモードである場合には、処理中でない１つの暗号化処理部で処理することを決定する（Ｓ１２０５）。１ブロック目の処理であるため、暗号化処理部に処理データを引き渡すときに外部入力選択信号をアサートする。
【００６５】
一方、Ｓ１２０２ですべての暗号化処理部で処理中であると判定された場合には、Ｓ１２０６において複数の暗号化処理部で複数ブロックを並列に処理しているＣＴＲモードのジョブがあるか否かを判定する。複数ブロックを並列に処理しているジョブがある場合には、１つの暗号化処理部で、実行中の１ブロックの処理が終わった後、新たなジョブを処理することを決定する（Ｓ１２０７）。
【００６６】
一方、Ｓ１２０６で並列に処理しているＣＴＲモードのジョブが無いと判定された場合には、Ｓ１２０８において新たなジョブの優先度が実行中のジョブの優先度よりも低いか否かを判定する。本実施例において、３個のデータ及びパラメータ保持部のうち、９０６の優先度が最も低く、９０７、９０９の優先度は同じであることが記憶部９０８ｃに記憶されているものとする。Ｓ１２０８において新たなジョブの優先度が実行中のジョブの優先度よりも低いと判定された場合には、処理中のジョブを継続処理し、新たなジョブを待たせることを決定する（Ｓ１２０９）。新たなジョブの優先度が実行中のジョブの優先度よりも高いと判定された場合には、優先度の低いジョブを処理する暗号化処理部で、実行中の１ブロックの処理が終わった後に一旦中断して新たなジョブを処理することを決定する（Ｓ１２１０）。
【００６７】
Ｓ１２０１において処理のエンドであると判定された場合には、Ｓ１２１１において処理を中断しているジョブ、待っているジョブがあるか否かを判定する。処理を中断しているジョブ、待っているジョブがある場合には、終了する暗号化処理部で処理することを決定する（Ｓ１２１２）。係るジョブが無い場合には、Ｓ１２１３において処理中のジョブにＣＴＲモードのジョブが存在するか否かを判定する。ＣＴＲモードのジョブが存在する場合には、終了する暗号化処理部も使用して複数ブロックを並列に処理することを決定する（Ｓ１２１３）。ＣＴＲモードのジョブが存在しない場合には、そのまま暗号化処理部は空き状態にしておく（Ｓ１２１５）。
【００６８】
暗号化処理装置９００がＣＢＣモードのジョブＡの処理開始後に新たなＣＴＲモードのジョブＢを受信した場合、ジョブＢの処理開始後に更に新たなＣＢＣモードのジョブＣを受信した場合の各ブロックの動作を図１３のシーケンス図を用いて説明する。
【００６９】
まず、プロセッサ９０１がＣＢＣモードのジョブ（ジョブＡとする）を受信する（１３０１）。データ及びパラメータ保持部９０６に対して暗号化処理に必要なパラメータである暗号鍵をレジスタ９０６４に設定し、１ブロック目の処理に必要な初期値をレジスタ９０６２に設定し、モードレジスタ９０６７に”ＣＢＣ”を設定する。更に、被処理データを配置したアドレス、転送長、処理結果を格納するアドレス等のデータ転送に必要な情報を内部のＤＭＡＣ９０６１に設定して起動する（１３０２）。データ及びパラメータ保持部９０６はＤＭＡＣ９０６１が起動すると被処理データを配置したアドレスから被処理データを読み出し、暗号鍵、暗号化処理入力データと共にデータパス制御部９０８に引き渡す（１３０３）。データパス制御部９０８は図１２のフローチャートに従って動作を決定する。Ｓ１２０１において処理スタートであると判断できる。Ｓ１２０２においてすべての暗号化処理部で処理中でないと判断できる。Ｓ１２０３においてＣＢＣモードであると判断できる。従って、ステップＳ１２０４において処理中でない１つの暗号化処理部で処理させることを決定し、ジョブＡの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０４に引き渡す。暗号化処理部９０４へジョブＡの１ブロック目のデータを引き渡すとき、外部入力信号使用をアサートする。
【００７０】
まず、プロセッサ９０１がＣＴＲモードのジョブ（ジョブＢとする）を受信する（１３０４）。データ及びパラメータ保持部９０７に対して暗号化処理に必要なパラメータである暗号鍵をレジスタ９０７４に設定し、１ブロック目の処理に必要な初期値をレジスタ９０７２に設定し、モードレジスタ９０７７に”ＣＴＲ”を設定する。更に、被処理データを配置したアドレス、転送長、処理結果を格納するアドレス等のデータ転送に必要な情報を内部のＤＭＡＣ９０７１に設定して起動する（１３０５）。データ及びパラメータ保持部９０７は、ＤＭＡＣ９０７１が起動すると被処理データを配置したアドレスから被処理データを読み出し、暗号鍵、暗号化処理入力データと共にデータパス制御部９０８に引き渡す（１３０６）。データパス制御部９０８は、図１２のフローチャートに従って動作を決定する。Ｓ１２０１において処理スタートであると判断できる。Ｓ１２０２においてすべての暗号化処理部で処理中でないと判断できる。Ｓ１２０３においてＣＴＲモードであると判断できる。従って、ステップＳ１２０５において処理中でないすべての暗号化処理部で処理させることを決定する。暗号化処理部９０４は、ジョブＡのデータが処理中であるため、処理中でない暗号化処理部９０５で処理させる。ジョブＡの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０４に引き渡し、ジョブＢの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０５に引き渡す。
【００７１】
まず、プロセッサ９０１がＣＢＣモードのジョブ（ジョブＣとする）を受信する（１３０７）。データ及びパラメータ保持部９０９に対し、暗号化処理に必要なパラメータである暗号鍵をレジスタ９０９４に設定し、１ブロック目の処理に必要な初期値をレジスタ９０９２に設定し、モードレジスタ９０９７に”ＣＢＣ”を設定する。更に、被処理データを配置したアドレス、転送長、処理結果を格納するアドレス等のデータ転送に必要な情報を内部のＤＭＡＣ９０９１に設定して起動する（１３０８）。データ及びパラメータ保持部９０９は、ＤＭＡＣ９０９１が起動すると、被処理データを配置したアドレスから被処理データを読み出し、暗号鍵、暗号化処理入力データと共にデータパス制御部９０８に引き渡す（１３０９）。データパス制御部９０８は、図１２のフローチャートに従って動作を決定する。Ｓ１２０１において処理スタートであると判断できる。Ｓ１２０２においてすべての暗号化処理部で処理中であると判断できる。Ｓ１２０６において並列処理中のジョブは無いと判断できる。新たなジョブＣは実行中のジョブＡ、Ｂよりも優先度が高いと判断できる。従って、Ｓ１２０２において優先度の低いジョブＡの処理を中断し、ジョブＣを処理することを決定する。データパス制御部９０８は、ジョブＣの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０４に、ジョブＢの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０５へ引き渡す。データ及びパラメータ保持部９０６は、データパス制御部９０８がデータ転送を受け付けず、待たされることになる。ジョブＡの中断される前のブロックの処理の処理結果データは保持部９０６３で保持される。暗号化処理部９０４は、現在処理中のジョブＡのブロックの処理終了後にジョブＣのブロックのデータを受け取ることになる。暗号化処理部９０４へジョブＣの１ブロック目のデータを引き渡すとき、外部入力信号使用をアサートする。
【００７２】
データ及びパラメータ保持部９０９は、設定された転送長分のデータ転送を終了すると、プロセッサ９０１に処理終了を通知する（１３１０）。データパス制御部９０８は、図１２のフローチャートに従って動作を決定する。Ｓ１２０１において処理エンドであると判断できる。Ｓ１２１１において中断しているジョブがあると判断できる。従って、Ｓ１２１２において処理を終了する暗号化処理部９０４でジョブＡを処理することを決定する。データパス制御部９０８は、ジョブＡの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０４に引き渡し、ジョブＢの被処理データと暗号鍵、暗号化処理入力データを暗号化処理部９０５へ引き渡す。暗号化処理部９０４へジョブＡの処理再開後最初のデータを引き渡すとき、外部入力信号使用をアサートする。
【００７３】
データ及びパラメータ保持部９０６は、設定された転送長分のデータ転送を終了すると、プロセッサ９０１に処理終了を通知する（１３１１）。データパス制御部９０８は、図１２のフローチャートに従って動作を決定する。Ｓ１２０１において処理エンドであると判断できる。Ｓ１２１１において中断しているジョブ、待ちジョブは無いと判断できる。Ｓ１２１３において処理中のＣＴＲモードのジョブＢが存在すると判断できる。従って、Ｓ１２１４において処理を終了する暗号化処理部９０５で並列処理することを決定する。データパス制御部９０８は、ジョブＢの被処理データと暗号鍵、暗号化処理入力データを１ブロック毎に暗号化処理部９０４、９０５へ交互に引き渡す。
【００７４】
データ及びパラメータ保持部９０７は設定された転送長分のデータ転送を終了すると、プロセッサ９０１に処理終了を通知する（１３１２）。データパス制御部９０８は、図１２のフローチャートに従ってＳ１２１５において暗号化処理を終了する。
【００７５】
上記動作によれば、ＣＴＲモードのジョブは、空いている暗号化処理部のすべてで複数ブロックを同時に処理し、ＣＢＣモードのジョブは、１つの暗号化処理部で１ブロックずつ処理することが可能となる。これにより、ブロック暗号化処理をより高速に行うことが可能となる。
【００７６】
また、すべての暗号化処理部の処理中に新たなジョブが発生すると、優先度の低い処理中のジョブのデータを待たせ、新たなジョブのデータを引き渡す。これにより、処理中のジョブを安全に中断して、発生したジョブを割り込ませることが可能となり、安全性を損ねることなくＱｏＳを満たすことができる。
【００７７】
＜他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011142411.tif 000003
【図２】
2011142411.tif 000004
【図３】
2011142411.tif 000005
【図４】
2011142411.tif 000006
【図５】
2011142411.tif 000007
【図６】
2011142411.tif 000008
【図７】
2011142411.tif 000009
【図８】
2011142411.tif 000010
【図９】
2011142411.tif 000011
【図１０】
2011142411.tif 000012
【図１１】
2011142411.tif 000013
【図１２】
2011142411.tif 000014
【図１３】
2011142411.tif 000015
【図１４】
2011142411.tif 000016
【図１５】
2011142411.tif 000017