(57)【要約】【課題】  リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化／復号化装置、通信コントローラ及び電子機器を提供する。【解決手段】  暗号化号化／復号化装置１００は、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、コンテンツデータを分割した各分割データに対して暗号化又は復号化処理を行う暗号化／復号化処理部と、コンテンツ毎に暗号化／復号化処理部の処理結果又は入力値が保存される中間値記憶部とを含む。第２のコンテンツデータの１つの分割データに対して暗号化／復号化処理部が行った処理結果又は入力値が中間値記憶部に保存された後に、第１のコンテンツデータの第Ｋの分割データに対する処理結果又は入力値が中間値記憶部から読み出され、第１のコンテンツデータの第（Ｋ＋１）の分割データに対し暗号化／復号化処理部が該処理結果又は入力値を用いて暗号化又は復号化処理を行う。【選択図】      図１０
2006229863.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して暗号化処理又は復号化処理を行う暗号化／復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データに対して前記暗号化／復号化処理部が行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存された後に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記暗号化／復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データに対し前記暗号化／復号化処理部が前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項２】
請求項１において、
前記中間値記憶部には、
コンテンツ毎に、鍵、初期値、前記暗号化／復号化処理部の処理結果、又は入力値が保存されることを特徴とする暗号化／復号化装置。
【請求項３】
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記第１及び第２の暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記第１又は第２の暗号化／復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項４】
請求項３において、
前記記憶部の記憶領域のうち前記復号化データの記憶領域が、前記暗号化／復号化装置の外部からアクセス不可となるように構成されることを特徴とする暗号化／復号化装置。
【請求項５】
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記複数の分割データの各分割データを入力データとして記憶するための第１の記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、ブロック暗号方式の操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
前記暗号化／復号化装置の外部からアクセス不可能な記憶部であって前記入力データに対する前記第１又は第２の復号化処理後の復号化データを記憶するための第２の記憶部と、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記入力データに対する暗号化処理又は復号化処理後の出力データを記憶する第３の記憶部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記第２の記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記第３の記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記暗号化／復号化処理部の処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項６】
請求項５において、
前記第１〜第３の記憶部の各記憶部が、
１つのメモリ空間内に分割された記憶領域に割り当てられ、
各記憶領域が、
可変であることを特徴とする暗号化／復号化装置。
【請求項７】
請求項５又は６において、
前記中間値記憶部には、
コンテンツ毎に、前記第１の暗号化／復号化処理部の鍵、前記第１の暗号化／復号化処理部の初期値、前記第１の暗号化／復号化処理部の処理結果、又は入力値が保存されると共に、
コンテンツ毎に、前記第２の暗号化／復号化処理部の処理結果、又は入力値が保存されることを特徴とする暗号化／復号化装置。
【請求項８】
請求項５又は６において、
前記中間値記憶部には、
コンテンツ毎に、前記第１の暗号化／復号化処理部の鍵、前記第１の暗号化／復号化処理部の初期値、前記第１の暗号化／復号化処理部の処理結果、又は入力値が保存され、
前記第２の暗号化／復号化処理部は、
前記第１のコンテンツデータの前記第Ｋの分割データに対する前記第２の暗号化処理又は第２の復号化処理の処理結果、又は入力値を前記中間値記憶部から読み出すことなく、所定の初期値を用いて前記第１のコンテンツデータの前記第（Ｋ＋１）の分割データを前記入力データとして前記第２の暗号化処理又は第２の復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項９】
請求項５乃至８のいずれかにおいて、
前記第１の暗号化／復号化処理部が、
ＡＥＳ（Advanced Encryption Standard）に準拠した暗号化処理及び復号化処理を行い、
前記第２の暗号化／復号化処理部が、
ＤＥＳ（Data Encryption Standard）に準拠した暗号化処理及び復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記操作モードは、
ＣＢＣ（cipher block chaining）モード、ＣＦＢ（cipher feedback）モード、及びＯＦＢ（output feedback）モードのいずれか１つのモードであることを特徴とする暗号化／復号化装置。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
前記入力データに付加されたヘッダ情報を解析するヘッダ解析部を含み、
前記ヘッダ情報に含まれる識別情報に基づいて、前記分割データが前記第１及び第２のコンテンツデータのいずれのコンテンツデータの分割データであるかが判別されることを特徴とする暗号化／復号化装置。
【請求項１２】
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
前記ネットワークに送信される通信データ又は前記ネットワークから受信される通信データに対して暗号化又は復号化処理を行う請求項１乃至１１のいずれか記載の暗号化／復号化装置とを含むことを特徴とする通信コントローラ。
【請求項１３】
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
請求項３乃至９のいずれか記載の暗号化／復号化装置とを含み、
前記通信データの受信時には、
前記通信処理部によって解析されたヘッダ情報のレイヤより上位のレイヤの前記第１の暗号化処理後のデータを前記入力データとして前記暗号化／復号化装置が前記第１の復号化処理した後に前記第２の暗号化処理したデータを前記出力データとして出力し、
前記通信データの送信時には、
送信データを前記入力データとして前記暗号化／復号化装置が前記第２の復号化処理した後に前記第１の暗号化処理したデータを前記出力データとして出力し、前記通信処理部が該出力データに、上位レイヤのヘッダ情報を付加して前記ネットワークに送信することを特徴とする通信コントローラ。
【請求項１４】
請求項１２又は１３記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを前記通信コントローラに供給する処理部とを含むことを特徴とする電子機器。
【請求項１５】
請求項１３記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを生成すると共に、前記第２の暗号化処理及び第２の復号化処理を行う処理部とを含み、
前記通信データの受信時には、
前記通信コントローラが、前記処理部に対して前記第２の暗号化処理後のデータを供給し、
前記通信データの送信時には、
前記処理部が、前記第２の暗号化処理後のデータを前記入力データとして前記通信コントローラに供給することを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化／復号化装置、通信コントローラ及び電子機器に関する。
【背景技術】
【０００２】
近年、ＭＰＥＧ（Moving Picture Experts Group、より具体的にはＭＰＥＧ２）ストリームを配信するＢＳデジタル放送等のデジタル放送が脚光を浴び、デジタル放送チューナやデジタル放送のコンテンツの記録・再生装置等の電子機器の普及が著しい。このため、コンテンツの内容がデジタル的に不正に複製されるのを防止すべく、複製防止技術が導入されている。
【０００３】
デジタル放送チューナと記録・再生装置は、例えばＩＥＥＥ（Institute of Electrical and Electronics Engineers）１３９４に代表される汎用高速シリアルインタフェースを介して接続される。ＩＥＥＥ１３９４向けの複製防止技術として、ＤＴＣＰ（Digital Transmission Content Protect）規格が策定されている。現在では、このＤＴＣＰ規格が、インターネットの普及等に伴うＡＶネットワークの複製防止技術として利用されている（例えばＤＴＣＰｏｖｅｒＩＰ）。ＤＴＣＰ規格の詳細は、「Digital Transmission Content Protection Specification Volume1 (Informational Version)」（Revision 1.3, January 7, 2004）に記載されている。
【０００４】
ＤＴＣＰｏｖｅｒＩＰ規格では、ＤＥＳ（Data Encryption Standard）に代わる米国の次世代標準化暗号化アルゴリズムであるＡＥＳ（Advanced Encryption Standard）を採用する必要がある。ＡＥＳは、ＤＥＳに比べて解読されにくい。ＤＥＳは、６４ビットのデータ長を１ブロックとして暗号化処理又は復号化処理を行い、ＡＥＳは、例えば１２８ビットのデータ長を１ブロックとして暗号化処理又は復号化処理を行う。ＡＥＳ及びＤＥＳのようにブロック単位で処理される方式は、ブロック暗号方式と呼ばれている。
【０００５】
ブロック暗号方式では、入力データが同じ場合、出力データも同じとなる。このような暗号強度の低下を防止するため、ブロック暗号方式では種々の操作モード（mode of operation）が定められる。ブロック暗号方式の操作モードとして、例えばＥＣＢ（electronic codebook）モード、ＣＢＣ（cipher block chaining）モード、ＣＦＢ（cipher feedback）モード、及びＯＦＢ（output feedback）モードがある。ＥＣＢモードを除くＣＢＣモード、ＣＦＢモード、及びＯＦＢモードでは、処理中のブロック以外のブロックのデータを当該ブロックの処理に反映させることで、入力データが同じであっても出力データを異ならせることができる。その一方、ＣＢＣモード、ＣＦＢモード、及びＯＦＢモードで復号化処理を行う場合、上記の処理中のブロック以外のブロックのデータが必要となる。
【０００６】
このようなブロック暗号方式の暗号化処理を行う装置として、例えば特許文献１には、ＣＢＣモードとＣＦＢモードの両方を実行するために初期ベクトル、処理中間値又は処理最終結果を格納するデータ格納手段を設けたものが開示されている。
【０００７】
また例えば特許文献２には、ＣＢＣモードにおいてブロック単位に中間値を格納し、該中間値を用いてメッセージの改ざんをチェックするようにした装置が開示されている。
【特許文献１】特開２００１−２１１１４９号公報
【特許文献２】特開２０００−７５７８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、ＤＴＣＰｏｖｅｒＩＰ規格で規定された複製防止技術が採用されたコンテンツデータが、ネットワーク経由で複数の電子機器間で送受信される。この場合、認証された機器同士で鍵が供給されるため、相手側の機器に対応した鍵の管理が必要となる。
【０００９】
一方、ＤＴＣＰｏｖｅｒＩＰでは、コンテンツデータのデータサイズが最大１２８メガバイトと規定されている。そのため、複数の電子機器からコンテンツデータを受信した場合、各コンテンツデータを分割し、分割したデータに対してコンテンツデータに対応した鍵を用いる必要がある。
【００１０】
しかしながら、ＣＢＣモードのように他のブロックのデータを用いて暗号化されたコンテンツデータを復号化するためには、該他のブロックのデータが復号化処理時に必要となる。そのため、特許文献１や特許文献２に開示されている技術では、供給元で暗号化処理が行われた単位で復号化処理を行わざるを得ず、例えば１２８メガバイトの容量を有するバッファを備えておく必要がある。また、一方のコンテンツデータの復号化処理が行われている間、他方のコンテンツデータの復号化処理を行うことができず、コンテンツデータのリアルタイム性を損なう事態も生じてしまう。
【００１１】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化／復号化装置、通信コントローラ及び電子機器を提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するために本発明は、
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して暗号化処理又は復号化処理を行う暗号化／復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データに対して前記暗号化／復号化処理部が行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存された後に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記暗号化／復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データに対し前記暗号化／復号化処理部が前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化／復号化装置に関係する。
【００１３】
また本発明に係る暗号化／復号化装置では、
前記中間値記憶部には、
コンテンツ毎に、鍵、初期値、前記暗号化／復号化処理部の処理結果、又は入力値が保存されてもよい。
【００１４】
これらの発明においては、暗号化／復号化処理部が、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対して処理を行い、中間値記憶部にはコンテンツ毎に暗号化／復号化処理部の処理結果、又は入力値が保存される。このため、第１のコンテンツデータの暗号化又は復号化処理が中断した場合であっても、中間値記憶部から保存された処理結果、又は入力値を読み出し、第１のコンテンツデータの別の分割データの処理に、該処理結果、又は入力値を反映させた暗号化又は復号化処理を行うことができる。こうすることで、複数のコンテンツデータの暗号化又は復号化処理のリアルタイム性を維持させることができる。また、分割データをバッファリングするためのメモリの容量を大幅に削減できるようになる。
【００１５】
また本発明は、
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記第１及び第２の暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記第１又は第２の暗号化／復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化／復号化装置に関係する。
【００１６】
また本発明に係る暗号化／復号化装置では、
前記記憶部の記憶領域のうち前記復号化データの記憶領域が、前記暗号化／復号化装置の外部からアクセス不可となるように構成されてもよい。
【００１７】
また本発明は、
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記複数の分割データの各分割データを入力データとして記憶するための第１の記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、ブロック暗号方式の操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
前記暗号化／復号化装置の外部からアクセス不可能な記憶部であって前記入力データに対する前記第１又は第２の復号化処理後の復号化データを記憶するための第２の記憶部と、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記入力データに対する暗号化処理又は復号化処理後の出力データを記憶する第３の記憶部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記第２の記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記第３の記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記暗号化／復号化処理部の処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化／復号化装置に関係する。
【００１８】
ここで、３種類以上の暗号化／復号化処理部を有する暗号化／復号化装置も上記のいずれかの発明は含む。
【００１９】
上記のいずれかの発明においては、暗号化／復号化処理部が、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対して処理を行い、中間値記憶部にはコンテンツ毎に暗号化／復号化処理部の処理結果、又は入力値が保存される。このため、第１のコンテンツデータの暗号化又は復号化処理が中断した場合であっても、中間値記憶部から保存された処理結果、又は入力値を読み出し、第１のコンテンツデータの別の分割データの処理に、該処理結果、又は入力値を反映させた暗号化又は復号化処理を行うことができる。こうすることで、複数のコンテンツデータの暗号化又は復号化処理のリアルタイム性を維持させることができる。また、分割データをバッファリングするためのメモリの容量を大幅に削減できるようになる。
【００２０】
更に、上記のいずれかの発明においては、暗号化／復号化装置の入力データ及び出力データが、第１又は第２の暗号化処理後のデータとなる。その際、入力データを第１又は第２の復号化処理した後の復号化データは、暗号化／復号化装置の外部からアクセス不可の記憶領域にバッファリングされる。従って、上記のいずれかの発明によれば、暗号化／復号化装置に対して入力データを設定する処理部において、第１及び第２の暗号化／復号化処理部の処理負荷を軽減できると共に、該処理部との間で暗号化された状態でデータをやり取りできる。そのため、データがデジタル的に不正に複製されることなく、処理部のスループットの向上に貢献できるようになり、コンテンツの暗号化及び復号化処理を高速に実現する暗号化／復号化装置を提供できるようになる。
【００２１】
また本発明に係る暗号化／復号化装置では、
前記第１〜第３の記憶部の各記憶部が、
１つのメモリ空間内に分割された記憶領域に割り当てられ、
各記憶領域が、
可変であってもよい。
【００２２】
本発明によれば、第１の暗号化及び復号化処理、第２の暗号化及び復号化処理の処理単位に応じて各記憶部の記憶領域を設定できるようになるので、記憶部の記憶領域を有効活用できるようになる。
【００２３】
また本発明に係る暗号化／復号化装置では、
前記中間値記憶部には、
コンテンツ毎に、前記第１の暗号化／復号化処理部の鍵、前記第１の暗号化／復号化処理部の初期値、前記第１の暗号化／復号化処理部の処理結果、又は入力値が保存されると共に、
コンテンツ毎に、前記第２の暗号化／復号化処理部の処理結果、又は入力値が保存されてもよい。
【００２４】
また本発明に係る暗号化／復号化装置では、
前記中間値記憶部には、
コンテンツ毎に、前記第１の暗号化／復号化処理部の鍵、前記第１の暗号化／復号化処理部の初期値、前記第１の暗号化／復号化処理部の処理結果、又は入力値が保存され、
前記第２の暗号化／復号化処理部は、
前記第１のコンテンツデータの前記第Ｋの分割データに対する前記第２の暗号化処理又は第２の復号化処理の処理結果、又は入力値を前記中間値記憶部から読み出すことなく、所定の初期値を用いて前記第１のコンテンツデータの前記第（Ｋ＋１）の分割データを前記入力データとして前記第２の暗号化処理又は第２の復号化処理を行うことができる。
【００２５】
本発明によれば、第２の暗号化又は復号化処理の処理結果、又は入力値を中間値記憶部に保存する必要がなくなるので、リソースの有効活用を図ることができる。
【００２６】
また本発明に係る暗号化／復号化装置では、
前記第１の暗号化／復号化処理部が、
ＡＥＳ（Advanced Encryption Standard）に準拠した暗号化処理及び復号化処理を行い、
前記第２の暗号化／復号化処理部が、
ＤＥＳ（Data Encryption Standard）に準拠した暗号化処理及び復号化処理を行うことができる。
【００２７】
また本発明に係る暗号化／復号化装置では、
前記操作モードは、
ＣＢＣ（cipher block chaining）モード、ＣＦＢ（cipher feedback）モード、及びＯＦＢ（output feedback）モードのいずれか１つのモードであってもよい。
【００２８】
また本発明に係る暗号化／復号化装置では、
前記入力データに付加されたヘッダ情報を解析するヘッダ解析部を含み、
前記ヘッダ情報に含まれる識別情報に基づいて、前記分割データが前記第１及び第２のコンテンツデータのいずれのコンテンツデータの分割データであるかが判別されてもよい。
【００２９】
本発明によれば、ヘッダ情報に基づいて、暗号化処理及び復号化処理の制御を行うことができるようになるので、暗号化／復号化装置の構成及び制御の簡素化を図ることができるようになる。
【００３０】
また本発明は、
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
前記ネットワークに送信される通信データ又は前記ネットワークから受信される通信データに対して暗号化又は復号化処理を行う上記のいずれか記載の暗号化／復号化装置とを含む通信コントローラに関係する。
【００３１】
また本発明は、
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
上記のいずれか記載の暗号化／復号化装置とを含み、
前記通信データの受信時には、
前記通信処理部によって解析されたヘッダ情報のレイヤより上位のレイヤの前記第１の暗号化処理後のデータを前記入力データとして前記暗号化／復号化装置が前記第１の復号化処理した後に前記第２の暗号化処理したデータを前記出力データとして出力し、
前記通信データの送信時には、
送信データを前記入力データとして前記暗号化／復号化装置が前記第２の復号化処理した後に前記第１の暗号化処理したデータを前記出力データとして出力し、前記通信処理部が該出力データに、上位レイヤのヘッダ情報を付加して前記ネットワークに送信する通信コントローラに関係する。
【００３２】
これらの発明によれば、リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化／復号化装置を含む通信コントローラを提供できる。
【００３３】
また本発明は、
上記記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを前記通信コントローラに供給する処理部とを含む電子機器に関係する。
【００３４】
また本発明は、
上記記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを生成すると共に、前記第２の暗号化処理及び第２の復号化処理を行う処理部とを含み、
前記通信データの受信時には、
前記通信コントローラが、前記処理部に対して前記第２の暗号化処理後のデータを供給し、
前記通信データの送信時には、
前記処理部が、前記第２の暗号化処理後のデータを前記入力データとして前記通信コントローラに供給する電子機器に関係する。
【００３５】
これらの発明によれば、リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化／復号化装置を含む電子機器を提供できる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００３７】
１．  通信システム
図１に、以下で説明する実施形態における暗号化／復号化装置を含む通信システムの構成例を示す。
【００３８】
この通信システムは、デジタルコンテンツを含む通信データが送受信される電子機器１０、２０、３０を含む。電子機器１０、２０、３０は、ネットワークを介して接続される。コンテンツデータの不正な複製、不正な取り出し、又は不正な改ざんを防止するため、電子機器１０、２０、３０の各電子機器間では、ＤＴＣＰ規格に準拠したアルゴリズムで暗号化されたコンテンツデータが送受信される。従って、電子機器間で認証されたことを条件に、コンテンツ鍵が共有される。例えば電子機器１０では、電子機器１０、２０の間で認証されたときに共有されるコンテンツ鍵と電子機器１０、３０の間で認証されたときに共有されるコンテンツ鍵とを区別して管理する必要がある。ここでは、互いに認証された電子機器１０、２０の間で送受信される第１のコンテンツデータの識別情報ＩＤが０、互いに認証された電子機器１０、３０の間で送受信される第２のコンテンツデータの識別情報ＩＤが１であるものとする。
【００３９】
図１では、例えば電子機器１０、２０、３０は、イーサネット（登録商標）ケーブルを介して接続され、レイヤ構造の通信データを送受信するが、無線ネットワークを介してレイヤ構造の通信データを送受信してもよい。
【００４０】
図２に、図１の電子機器１０の構成要部を示す。
【００４１】
図２では、電子機器１０の構成のみを示しているが、電子機器２０、３０の構成を電子機器１０と同様の構成にすることができる。
【００４２】
図２において、電子機器１０は、メインＣＰＵ（Central Processing Unit）（広義には処理部）４０、通信コントローラ（ネットワークコントローラ）５０を含む。メインＣＰＵ４０は、電子機器１０の全体の制御を司る。通信コントローラ５０は、イーサネット（登録商標）ケーブルを介して送受信される通信データの送信処理及び受信処理を行う。
【００４３】
通信コントローラ５０は、上位レイヤ解析部として動作するＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）処理部（広義には通信処理部）６０と暗号化／復号化装置（或いは暗号化復号化装置、暗号化・復号化装置）１００とを含む。
【００４４】
ＴＣＰ／ＩＰ処理部６０は、イーサネット（登録商標）ケーブルを介して伝送されるコンテンツデータに付加されたＴＣＰ／ＩＰヘッダの生成及び解析を行う。
【００４５】
暗号化／復号化装置１００は、ＤＴＣＰ規格で規定されたＡＥＳのアルゴリズムに従った暗号化及び復号化処理を行い、メインＣＰＵ４０の処理負荷を軽減させる。なお暗号化／復号化装置１００とメインＣＰＵ４０との間でやり取りされるコンテンツデータの不正な複製等を防止するため、該コンテンツデータを暗号化された状態でやり取りしたり、暗号化／復号化装置１００とメインＣＰＵ４０との間の信号線を樹脂等で覆ったり、該信号線を実装基板の内部に設けたりする等の不正複製防止対策を講ずることが望ましい。ここで、暗号化された状態でメインＣＰＵ４０との間でコンテンツデータのやりとりを行う場合、暗号化／復号化装置１００は、ＡＥＳの暗号化及び復号化処理の他に、メインＣＰＵ４０との間で予め取り決めたアルゴリズムの暗号化及び復号化処理も行うようにすることができる。この場合、暗号化／復号化装置１００は、メインＣＰＵ４０との間でＤＥＳのアルゴリズムの暗号化及び復号化処理を行うようにすることができる。
【００４６】
１．１  ＤＴＣＰ
図３に、図１の電子機器間で行われるＤＴＣＰ規格に準拠した処理の一例を示す。
【００４７】
ＤＴＣＰ規格では、まずソース（Source）と呼ばれるコンテンツデータの送信側の機器とシンク（Sink）と呼ばれるコンテンツデータの受信側の機器との間で認証処理を行い、認証された機器同士でコンテンツ鍵Ｋｃが共有される。
【００４８】
即ち、まず暗号化されたコンテンツデータを復号化するため、受信側機器が送信側機器に対して認証要求を行う（ＳＥＱ１）。
【００４９】
これに伴って、ソースとシンクとの間で機器認証が行われる（ＳＥＱ２）。この機器認証は、公開鍵暗号技術を用いたFull Authenticationと、共通鍵暗号技術を用いたRestricted Authenticationとがあり、コンテンツデータの複製制限情報や機器の特性等に応じて使い分けられ、例えば、イーサネットケーブル上で転送されるコンテンツデータの保護に使用されるＤＴＣＰｏｖｅｒＩＰ規格ではFull Authenticationのみ使用することが許可されている。
【００５０】
機器認証の結果、両方の機器が互いに相手側の機器を認証した場合、鍵交換が行われる（ＳＥＱ３）。この結果、両方の機器の間で乱数Ｎｃと交換鍵Ｋｘとが共有される。そして各機器において次式に示す関数を用いて、それぞれ別個にコンテンツ鍵Ｋｃを生成する（ＳＥＱ４、ＳＥＱ５）。
【００５１】
Ｋｃ＝Ｆｕｎｃ（Ｋｘ，Ｃ，Ｎｃ）      ・・・（１）
ここで、各機器では、予め決められた関数Ｆｕｎｃ（）と定数Ｃとを用いて、コンテンツ鍵Ｋｃを求める。
【００５２】
その後、送信側機器が、コンテンツ鍵Ｋｃを用いて、ＡＥＳのアルゴリズムに従ってコンテンツデータの暗号化処理を行って、受信側機器に送信する（ＳＥＱ６、ＳＥＱ７）。受信側機器は、コンテンツ鍵Ｋｃを用いて、受信したコンテンツデータの復号化処理を行って、コンテンツデータを取得する。
【００５３】
その後は、同様に、認証されている機器同士で、コンテンツ鍵Ｋｃを用いてコンテンツデータの暗号化処理及び復号化処理を行って、コンテンツデータのやりとりを行う。
【００５４】
コンテンツデータは、ＰＣＰ（Protected Content Packets）単位で送信側機器と受信側機器との間で送受信され、このＰＣＰ単位で鍵更新が行われる。
【００５５】
従って、コンテンツ鍵Ｋｃを用いて暗号化処理及び復号化処理（ＳＥＱ９、ＳＥＱ１０）を行った後、ＰＣＰ単位のコンテンツデータの暗号化処理が終了すると、送信側機器は、コンテンツ鍵の更新を行う。また受信側機器においても、ＰＣＰ単位のコンテンツデータの復号化処理が終了すると、コンテンツ鍵の更新を行う。送信側機器及び受信側機器は、次式に示す関数を用いて、更新後のコンテンツ鍵Ｋｃ´を生成する（ＳＥＱ１１、ＳＥＱ１２）。
【００５６】
Ｋｃ´＝Ｆｕｎｃ（Ｋｘ，Ｃ，Ｎｃ＋１）      ・・・（２）
そして、再び、送信側機器が、コンテンツ鍵Ｋｃ´を用いて、ＡＥＳのアルゴリズムに従ってコンテンツデータの暗号化処理を行って、受信側機器に送信する（ＳＥＱ１３）。受信側機器は、コンテンツ鍵Ｋｃ´を用いて、受信したコンテンツデータの復号化処理を行って、コンテンツデータを取得する（ＳＥＱ１４）。
【００５７】
その後、同様に、認証されている機器同士で、ＰＣＰ単位でコンテンツ鍵Ｋｃ´を用いてコンテンツデータの暗号化処理及び復号化処理を行って、コンテンツデータのやりとりを行う。
【００５８】
なおＤＴＣＰ規格の詳細は、「Digital Transmission Content Protection Specification Volume1 (Informational Version)」(Revision 1.3, January 7, 2004)と「DTCP Volume 1 Supplement E Mapping DTCP to IP (Informational Version)」(Revision 1.0, November 24, 2003)に記載されている。
【００５９】
図２において、上記の認証処理はメインＣＰＵ４０において行い、ＡＥＳの暗号化及び復号化処理（コンテンツ鍵の生成も含む）を暗号化／復号化装置１００において行うことができる。また、暗号化／復号化装置１００の内部又は外部にアクセラレータを設けて、該アクセラレータが該認証処理を行うようにしてもよい。
【００６０】
１．２  動作の概要
図４に、図１及び図２の通信システムにおける各種のパケットの構成例を示す。
【００６１】
イーサネット（登録商標）ケーブルを介して、受信側機器として電子機器１０で受信されたパケットは、ＡＥＳで暗号化されたコンテンツデータに、ＰＣＰヘッダ、ＨＴＴＰ（Hypertext Transfer Protocol）ヘッダ、ＴＣＰ／ＩＰヘッダが付加されたデータである。ＴＣＰ／ＩＰ処理部６０は、ＴＣＰ／ＩＰヘッダの宛先等の解析や、ＴＣＰ／ＩＰヘッダの生成及び付加する処理を行う。
【００６２】
メインＣＰＵ４０とＴＣＰ／ＩＰ処理部６０との間では、ＴＣＰ／ＩＰヘッダが付加されるレイヤより上位のレイヤのデータがやり取りされる。メインＣＰＵ４０は、ＨＴＴＰヘッダの解析や、ＨＴＴＰヘッダの生成及び付加する処理を行う。更にメインＣＰＵ４０は、暗号化／復号化装置１００の制御用のＣＯＭヘッダを生成する。またメインＣＰＵ４０は、ＰＣＰヘッダを拡張したＰＣＰＥｘｔｅｎｄヘッダを生成し、ＰＣＰＥｘｔｅｎｄヘッダ及びＣＯＭヘッダを暗号化されたコンテンツデータに付加したパケットデータを暗号化／復号化装置１００に供給する。ここで、ＰＣＰＥｘｔｅｎｄヘッダは、ＰＣＰヘッダの情報をそのまま含む。
【００６３】
暗号化／復号化装置１００は、メインＣＰＵ４０との間で暗号化された状態でコンテンツデータを送受信するために、暗号化処理及び復号化処理を行う。より具体的には、メインＣＰＵ４０を介してＴＣＰ／ＩＰ処理部６０との間で送受信されるコンテンツデータについては、暗号化／復号化装置１００は、メインＣＰＵ４０との間で、ＤＴＣＰ規格で規定されたＡＥＳのアルゴリズムで暗号化処理されたコンテンツデータの送受信を行う。また、ＴＣＰ／ＩＰ処理部６０に供されることなく、メインＣＰＵ４０との間で送受信されるコンテンツデータについては、暗号化／復号化装置１００は、メインＣＰＵ４０との間で予め取り決められたアルゴリズムで暗号化処理されたコンテンツデータの送受信を行うことができる。
【００６４】
図５に、図１及び図２の通信システムにおけるコンテンツデータの受信処理の一例のシーケンスを示す。
【００６５】
ここでは、ＴＣＰ／ＩＰ処理部６０に供されないコンテンツデータについては、予めＤＥＳのアルゴリズムで暗号化されたコンテンツデータが暗号化／復号化装置１００とメインＣＰＵ４０との間でやり取りされるものとする。
【００６６】
まず、通信コントローラ５０では、ＡＥＳのアルゴリズムで暗号化されたコンテンツデータを含むパケットが受信される。ＴＣＰ／ＩＰ処理部６０は、該パケットのＴＣＰ／ＩＰヘッダの送信元や受信先等を解析し（ＳＥＱ３０）、自分宛のパケットであると判別すると、ＴＣＰ／ＩＰヘッダが付加されるレイヤより上位のレイヤのデータ及び、送信元や受信先を識別するための情報を、メインＣＰＵ４０に供給する（ＳＥＱ３１）。
【００６７】
メインＣＰＵ４０では、必要に応じてＨＴＴＰヘッダを解析し（ＳＥＱ３２）、ＴＣＰ／ＩＰ処理部６０より転送されてきた情報を基に、コンテンツデータの供給元を判別して、該供給元に対応した識別情報ＩＤを含むＣＯＭヘッダを生成し、ＰＣＰヘッダを含むＰＣＰＥｘｔｅｎｄヘッダを生成する。メインＣＰＵ４０は、コンテンツデータに、ＰＣＰＥｘｔｅｎｄヘッダ及びＣＯＭヘッダを付加し（ＳＥＱ３３）、通信コントローラ５０の暗号化／復号化装置１００に対して送信する（ＳＥＱ３４）。
【００６８】
暗号化／復号化装置１００では、ＣＯＭヘッダを解析し（ＳＥＱ３５）、その解析結果に基づいて、コンテンツデータをＡＥＳのアルゴリズムで復号化処理後（ＳＥＱ３６）、該復号化処理後のコンテンツデータをＤＥＳのアルゴリズムで暗号化処理する（ＳＥＱ３７）。ＡＥＳの復号化処理時には、ＣＯＭヘッダの識別情報ＩＤに応じた鍵が用いられる。ＤＥＳのアルゴリズムで暗号化処理されたコンテンツデータは、メインＣＰＵ４０に送信される（ＳＥＱ３８）。
【００６９】
メインＣＰＵ４０は、ＤＥＳのアルゴリズムで暗号化されたコンテンツデータを受信後、ＤＥＳのアルゴリズムで復号化処理する（ＳＥＱ３９）。
【００７０】
このように受信処理時には、メインＣＰＵ４０と通信コントローラ５０との間で、コンテンツデータは、ＡＥＳ又はＤＥＳのアルゴリズムで暗号化された状態でやり取りされる。そのため、不正にコンテンツデータが複製されることなく、電子機器２０又は電子機器３０から送信されたコンテンツデータを取得できる。
【００７１】
そして暗号化／復号化装置１００が、処理負荷の重いＡＥＳのアルゴリズムの復号化処理をメインＣＰＵ４０に代わって行う。メインＣＰＵ４０と暗号化／復号化装置１００との間で暗号化された状態でコンテンツデータをやり取りするが、メインＣＰＵ４０は、ＡＥＳのアルゴリズムより処理負荷の軽いＤＥＳのアルゴリズムで復号化処理を行うことができればよいので、メインＣＰＵ４０の処理能力を他の処理に割り当てることができ、スループットを向上させることができる。
【００７２】
更に、通信コントローラ５０のＴＣＰ／ＩＰ処理部６０でＴＣＰ／ＩＰヘッダを解析後、一旦メインＣＰＵ４０に渡した後に、通信コントローラ５０の暗号化／復号化装置１００にＰＣＰヘッダ以降の上位のレイヤを戻すようにしている。こうすることで、ＨＴＴＰヘッダが付加されるレイヤとＰＣＰヘッダが付加されるレイヤとの間の中間レイヤが今後設けられた場合でも、ハードウェア構成を変更する必要がなく、柔軟に対応できる。なぜなら、ソフトウェアで実現されるメインＣＰＵ４０の機能に、ＨＴＴＰヘッダが付加されるレイヤのみならず、該中間レイヤの解析機能を容易に追加できるからである。
【００７３】
図６に、図１及び図２の通信システムにおけるコンテンツデータの送信処理の一例のシーケンスを示す。
【００７４】
ここでは、ＴＣＰ／ＩＰ処理部６０に供されないコンテンツデータについては、予めＤＥＳのアルゴリズムで暗号化されたコンテンツデータが暗号化／復号化装置１００とメインＣＰＵ４０との間でやり取りされるものとする。
【００７５】
まず、メインＣＰＵ４０は、電子機器２０又は電子機器３０に送信したいコンテンツデータを、ＤＥＳのアルゴリズムで暗号化処理する（ＳＥＱ５０）。そして、メインＣＰＵ４０は、送信先に対応した識別情報ＩＤを指定すると共に、暗号化／復号化装置１００においてＤＥＳで復号化処理後にＡＥＳで暗号化処理を行う旨の制御情報を含むＰＣＰＥｘｔｅｎｄヘッダ、ＣＯＭヘッダを生成し、該ＰＣＰＥｘｔｅｎｄヘッダ及びＣＯＭヘッダが付加されたコンテンツデータを通信コントローラ５０に送信する（ＳＥＱ５１、ＳＥＱ５２）。
【００７６】
通信コントローラ５０の暗号化／復号化装置１００は、ＣＯＭヘッダを解析し（ＳＥＱ５３）、その解析結果に基づいて、コンテンツデータをＤＥＳのアルゴリズムで復号化処理後（ＳＥＱ５４）、該復号化処理後のコンテンツデータをＡＥＳのアルゴリズムで暗号化処理する（ＳＥＱ５５）。ＡＥＳの暗号化処理時には、ＣＯＭヘッダの識別情報ＩＤに応じた鍵が用いられる。ＡＥＳのアルゴリズムで暗号化処理されたコンテンツデータは、メインＣＰＵ４０に送信される（ＳＥＱ５６）。
【００７７】
メインＣＰＵ４０では、ＨＴＴＰヘッダを作成し、ＰＣＰＥｘｔｅｎｄヘッダをＰＣＰヘッダに変換する。そして、ＰＣＰヘッダ、ＨＴＴＰヘッダをコンテンツデータに付加し（ＳＥＱ５７）、識別情報ＩＤと共に、ＴＣＰ／ＩＰ処理部６０に送信する（ＳＥＱ５８）。
【００７８】
ＴＣＰ／ＩＰ処理部６０は、電子機器２０又は電子機器３０に対応した送信先を特定するＴＣＰ／ＩＰヘッダを付加し（ＳＥＱ５９）、電子機器２０又は電子機器３０に対して送信する。
【００７９】
このように送信処理時においても、メインＣＰＵ４０と通信コントローラ５０との間で、コンテンツデータは、ＡＥＳ又はＤＥＳのアルゴリズムで暗号化された状態でやり取りされる。そのため、不正にコンテンツデータが複製されることなく、コンテンツデータを電子機器２０又は電子機器３０に送信できる。
【００８０】
そして暗号化／復号化装置１００が、処理負荷の重いＡＥＳのアルゴリズムの暗号化処理をメインＣＰＵ４０に代わって行う。メインＣＰＵ４０と暗号化／復号化装置１００との間で暗号化された状態でコンテンツデータをやり取りするが、メインＣＰＵ４０は、ＡＥＳのアルゴリズムより処理負荷の軽いＤＥＳのアルゴリズムで暗号化処理を行うことができればよいので、メインＣＰＵ４０の処理能力を他の処理に割り当てることができ、スループットを向上させることができる。
【００８１】
更に、通信コントローラ５０の暗号化／復号化装置１００においてコンテンツデータをＡＥＳのアルゴリズムで暗号化して一旦メインＣＰＵ４０に渡した後に、通信コントローラ５０のＴＣＰ／ＩＰ処理部６０に戻すようにしている。こうすることで、ＨＴＴＰヘッダが付加されるレイヤとＰＣＰヘッダが付加されるレイヤとの間の中間レイヤが今後設けられた場合でも、ハードウェア構成を変更する必要がなく、柔軟に対応できる。なぜなら、ソフトウェアで実現されるメインＣＰＵ４０の機能に、ＨＴＴＰヘッダが付加されるレイヤのみならず、該中間レイヤのヘッダの生成及び追加機能を容易に追加できるからである。
【００８２】
１．３  コンテンツデータの分割
図７（Ａ）、図７（Ｂ）に、コンテンツデータの分割についての説明図を示す。
【００８３】
ＤＴＣＰｏｖｅｒＩＰ規格では、コンテンツデータのデータサイズが最大１２８メガバイトとして規定されている。その一方、ＤＴＣＰｏｖｅｒＩＰ規格では、ブロック暗号方式であるＡＥＳが採用される。そのためメインＣＰＵ４０がコンテンツデータを分割した複数の分割データを生成し、該複数の分割データを入力データとして暗号化／復号化装置１００に供給する。そして暗号化／復号化装置１００は、１６バイト単位でＡＥＳの暗号化又は復号化処理を行う。
【００８４】
図１又は図２に示すように、複数のコンテンツデータが受信されると、メインＣＰＵ４０は、コンテンツデータに識別情報ＩＤを付与すると共に、各コンテンツデータを分割して各分割データを暗号化／復号化装置１００に供給する。その際、メインＣＰＵ４０は、暗号化／復号化装置１００のブロック暗号方式のブロックサイズや分割データのバッファリングサイズ等を考慮したパケットデータサイズとなるようにコンテンツデータを分割する。
【００８５】
識別情報ＩＤが０のコンテンツデータを第１のコンテンツデータＣＤ１とすると、メインＣＰＵ４０は、第１のコンテンツデータＣＤ１をＭ（Ｍは２以上の整数）分割し、各分割データにＣＯＭヘッダを付加する。ここでは、ＰＣＰヘッダを拡張したＰＣＰＥｘｔｅｎｄヘッダが、最初の分割データＣＤ１１にのみ付加される。
【００８６】
同様に識別情報ＩＤが１のコンテンツデータを第２のコンテンツデータＣＤ２とすると、メインＣＰＵ４０は、第２のコンテンツデータＣＤ２をＮ（Ｎは２以上の整数）分割し、各分割データにＣＯＭヘッダを付加する。ここでは、ＰＣＰヘッダを拡張したＰＣＰＥｘｔｅｎｄヘッダが、最初の分割データＣＤ２１にのみ付加される。
【００８７】
ところが、ＤＴＣＰｏｖｅｒＩＰ規格では、ブロック暗号方式の操作モードとしてＣＢＣモードを用いることが規定されている。そのため、第１及び第２のコンテンツデータＣＤ１、ＣＤ２の各コンテンツデータは、ＣＢＣモードで暗号化又は復号化処理される。こうすることで、暗号化処理前のコンテンツデータが同じであっても、暗号化処理後のデータが同じになることはない。
【００８８】
このようなブロック暗号方式の操作モードは、処理中のブロック以外のブロックのデータを用いる操作モードと言うことができ、例えばＣＢＣモード、ＣＦＢモード及びＯＦＢモードがある。暗号化／復号化装置１００は、ブロック暗号方式であるＡＥＳのＥＣＢモード、ＣＢＣモードを実行できる。更に暗号化／復号化装置１００は、ＥＣＢモードを除くＣＢＣモード、ＣＦＢモード及びＯＦＢモードのすべて、あるいはいずれか１つのモードで処理することができても良い。
【００８９】
図８に、ＣＢＣモードで暗号化又は復号化処理される第１及び第２のコンテンツデータの説明図を示す。
【００９０】
第１のコンテンツデータＣＤ１が、例えば８個の分割データＣＤ１１〜ＣＤ１８に分割され、第２のコンテンツデータＣＤ２が、例えば８個の分割データＣＤ２１〜ＣＤ２８に分割されるものとする。この場合、分割データＣＤ１１は初期値（初期ベクトル）ＩＶ１を用いてブロック暗号化され、分割データＣＤ１２は分割データＣＤ１１を用いてブロック暗号化され、分割データＣＤ１３は分割データＣＤ１２を用いてブロック暗号化される。同様に分割データＣＤ２１は初期値（初期ベクトル）ＩＶ２を用いてブロック暗号化され、分割データＣＤ２２は分割データＣＤ２１を用いてブロック暗号化され、分割データＣＤ２３は分割データＣＤ２２を用いてブロック暗号化される。
【００９１】
従って、復号化処理後の第１のコンテンツデータＣＤ１を取得しようとすると、第１のコンテンツデータＣＤ１を分割した分割データＣＤ１１〜ＣＤ１８が必要となる。同様に、復号化処理後の第２のコンテンツデータＣＤ２を取得しようとすると、第２のコンテンツデータＣＤ２を分割した分割データＣＤ２１〜ＣＤ２８が必要となる。
【００９２】
即ち、暗号化／復号化装置１００では、第１のコンテンツデータＣＤ１の暗号化復号化処理が終了しない限り、第２のコンテンツデータＣＤ２の暗号化復号化処理を開始できない事態が考えられる。特に、ネットワークを介して複数の電子機器から複数のコンテンツデータを同時に受信処理する場合、供給元の電子機器で暗号化された単位のデータが揃うまで復号化処理を開始できない。そのため、分割データがバッファリングされるメモリの容量が増大してしまうばかりでなく、復号化処理の処理時間が長くなってしまう。
【００９３】
そこで暗号化／復号化装置１００では、以下のようにブロック暗号化／復号化方式でブロック単位で求められた暗号化処理結果、又は復号化入力値をコンテンツ毎に保存できる中間値記憶部を設けている。
【００９４】
図９に、暗号化／復号化装置１００においてＣＢＣモードで暗号化又は復号化処理される第１及び第２のコンテンツデータの説明図を示す。
【００９５】
暗号化／復号化装置１００は、中間値記憶部１１０を含む。中間値記憶部１１０には、コンテンツ毎に、ブロック単位で処理された暗号化処理結果又は復号化入力値が保存される。暗号化／復号化装置１００は、第１のコンテンツデータを分割した複数の分割データＣＤ１１〜ＣＤ１８のうち分割データＣＤ１１から順次暗号化を行い、分割データＣＤ１４に対して暗号化処理を行った後、その処理結果ＭＶ１を中間値記憶部１１０に保存する。又は分割データＣＤ１１から順次復号化処理を行い、分割データＣＤ１４（復号化入力値）を中間値記憶部１１０に保存する。
【００９６】
そして暗号化／復号化装置１００は、第２のコンテンツデータＣＤ２の暗号化又は復号化処理を開始する。このとき、第２のコンテンツデータＣＤ２を分割した複数の分割データＣＤ２１〜ＣＤ２８のうち分割データＣＤ２１から順次暗号化を行い、分割データＣＤ２４（第２のコンテンツデータを分割した複数の分割データの１つの分割データ）に対して暗号化処理を行った後、その処理結果ＭＶ２を中間値記憶部１１０に保存する。又は分割データＣＤ２１から順次復号化処理を行い、分割データＣＤ２４（復号化入力値）を中間値記憶部１１０に保存する。
【００９７】
そして、暗号化／復号化装置１００は、分割データＣＤ１４（第１のコンテンツデータＣＤ１を分割した複数の分割データＣＤ１１〜ＣＤ１８のうち第Ｋ（Ｋは自然数）の分割データ）に対する処理結果又は入力値ＭＶ１を中間値記憶部１１０から読み出し、分割データＣＤ１５（第１のコンテンツデータＣＤ１を分割した複数の分割データＣＤ１１〜ＣＤ１８のうち第（Ｋ＋１）の分割データ）に対しＭＶ１を用いて暗号化又は復号化処理を行う。こうして、分割データＣＤ１８まで順次各分割データに対して暗号化又は復号化処理を行う。
【００９８】
その後、暗号化／復号化装置１００は、分割データＣＤ２４に対する処理結果又は入力値ＭＶ２を中間値記憶部１１０から読み出し、分割データＣＤ２５に対しＭＶ２を用いて暗号化又は復号化処理を行う。こうして、分割データＣＤ２８まで順次各分割データに対して暗号化又は復号化処理を行う。
【００９９】
こうすることで、暗号化／復号化装置１００は、分割データがバッファリングされるメモリの容量を削減できるばかりでなく、暗号化又は復号化処理の処理時間を短くできるようになる。その結果、コンテンツデータ（分割データ）をバッファリングするためのメモリの容量を削減できる上に、コンテンツデータの処理のリアルタイム性を維持できる。
【０１００】
２．  暗号化／復号化装置
２．１  第１の実施形態
図１０に、第１の実施形態における暗号化／復号化装置の構成例のブロック図を示す。
【０１０１】
暗号化／復号化装置１００は、1種類の暗号化／復号化アルゴリズムの処理を実行することができる。例えばこの構成例では、第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、ＡＥＳのアルゴリズムに従った暗号化処理又は復号化処理を行う。
【０１０２】
暗号化／復号化装置１００は、暗号化／復号化処理部としてのＡＥＳ処理部２００と、中間値記憶部１１０としての鍵メモリ２１０とを含む。ＡＥＳ処理部２００は、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、各分割データに対して暗号化処理又は復号化処理を行う。鍵メモリ２１０は、コンテンツ毎に、ブロック単位で処理されたＡＥＳ処理部２００の処理結果が保存される。
【０１０３】
鍵メモリ２１０の機能は、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）等のメモリ素子、レジスタ回路、ＦＩＦＯ（First-In First-Out）機能を有するメモリ素子等により実現される。
【０１０４】
ＡＥＳ処理部２００は、第２のコンテンツデータＣＤ２を分割した複数の分割データＣＤ２１〜ＣＤ２８の１つの分割データに対して暗号化処理結果又は復号処理入力値を鍵メモリ２１０に保存する。更にその後、第１のコンテンツデータＣＤ１を分割した複数の分割データＣＤ１１〜ＣＤ１８のうち第Ｋの分割データに対するＡＥＳ処理部２００の処理結果又は入力値を鍵メモリ２１０から読み出し、第１のコンテンツデータＣＤ１を分割した複数の分割データＣＤ１１〜ＣＤ１８のうち第（Ｋ＋１）の分割データに対し上記の処理結果を用いて暗号化又は復号化処理を行う。
【０１０５】
より具体的には、鍵メモリ２１０には、コンテンツ毎に（コンテンツデータに対応した識別情報毎に）、鍵、初期値、ＡＥＳ処理部２００の処理結果（中間値）が保存される。
【０１０６】
図１１に、図１０の鍵メモリ２１０に保存されるデータの一例を示す。
【０１０７】
鍵メモリ２１０には、コンテンツデータに付与された識別情報により区別されるコンテンツ毎に、コンテンツデータ特有の情報が保存される。コンテンツデータ特有の情報として、ＡＥＳ処理部２００において暗号化又は復号化処理するためのＡＥＳ鍵と、初期値ＩＶ、暗号化処理結果又は復号化入力値（中間値）ＭＶ、カウント値ＣＮＴがある。ＡＥＳ鍵は、ラウンド毎に変更されるため、各ラウンドの鍵が鍵メモリ２１０に保存することが可能である。初期値ＩＶは、ＡＥＳのＣＢＣモードで最初のブロックに用いられる初期ベクトル値である。カウント値ＣＮＴは、ＡＥＳのＣＢＣモードで処理すべき残りブロック数に対応した値である。
【０１０８】
鍵メモリ２１０には、このようなコンテンツデータ特有の情報が１６種類保存される。
【０１０９】
図１０に示すように、鍵メモリ２１０にアクセスするため、暗号化／復号化装置１００は、鍵メモリ制御部２２０を含み、鍵メモリ制御部２２０が、鍵メモリ２１０からの読み出し制御と鍵メモリ２１０への書き込み制御とを行う。
【０１１０】
また暗号化／復号化装置１００は、記憶部２３０を含むことができる。記憶部２３０の記憶領域は、入力エリア（InputArea）及び出力エリア（OutputArea）を有する。記憶部２３０の機能は、ＳＲＡＭやＤＲＡＭ等のメモリ素子、レジスタ回路、ＦＩＦＯ機能を有するメモリ素子等により実現される。
【０１１１】
暗号化／復号化装置１００に暗号化又は復号化処理を行わせるとき、メインＣＰＵ４０は、入力エリアに分割データを入力データとして順次設定していく。暗号化／復号化装置１００では、入力データ転送用のInDMACが、入力エリアから分割データを読み出して、ＡＥＳ処理部２００がブロック暗号方式で暗号化又は復号化処理する。その後、出力データ転送用のOutDMACが、ＡＥＳ処理部２００からの処理データを、順次出力エリアに設定していく。メインＣＰＵ４０は、出力エリアに設定されたデータを出力データとして、記憶部２３０から順次取り出していく。
【０１１２】
記憶部２３０の各エリアの書き込み領域及び読み出し領域は、ポインタ管理部２４０によって管理される。より具体的には、ポインタ管理部２４０は、入力エリアの書き込みポインタ及び読み出しポインタ、出力エリアの書き込みポインタ及び読み出しポインタの設定及び更新を行う。各書き込みポインタは、各エリアの書き込み領域を指定する。各読み出しポインタは、各エリアの読み出し領域を指定する。
【０１１３】
暗号化／復号化装置１００の各部は、ステート制御部２５０によって制御される。ステート制御部２５０は、予め定められた複数のステートの間を遷移させて遷移先のステートに対応した制御信号を暗号化／復号化装置１００の各部に供給する。タイミング発生部２６０は、ステート制御部２５０からの制御信号に基づいて、鍵メモリ２１０からの読み出しタイミングと、鍵メモリ２１０への書き込みタイミングを生成する。
【０１１４】
メインＣＰＵ４０からのコンテンツデータには、制御用の情報が格納されるＣＯＭヘッダが付与されている。そのため暗号化／復号化装置１００は、ヘッダ解析部２７０を有し、ヘッダ解析部２７０がＣＯＭヘッダの内容を解析する。ＣＯＭヘッダに含まれる識別情報ＩＤに基づいてコンテンツデータを区別する。即ち、ヘッダ解析部２７０は、ヘッダ情報に含まれる識別情報に基づいて、入力されたコンテンツデータが第１及び第２のコンテンツデータのいずれのコンテンツデータの分割データであるかを判別できる。そして鍵メモリ制御部２２０は、該識別情報ＩＤに基づいて、鍵メモリ２１０に保存すべき情報の書き込みアドレス、鍵メモリ２１０から読み出すべき情報の読み出しアドレスを生成する。また鍵メモリ制御部２２０は、カウント値ＣＮＴが０のとき、識別情報ＩＤに対応した初期値ＩＶを読み出し、カウント値ＣＮＴが０ではない値のとき、識別情報ＩＤに対応した処理結果又は入力値（中間値）ＭＶを読み出す。
【０１１５】
更に暗号化／復号化装置１００は、コントローラとしての中央演算処理装置（Central Processing Unit：以下、ＣＰＵと略す）２８０を含むことができる。ＣＰＵ２８０は、プログラムメモリ２９０に保存されたプログラムデータに対応した処理を実行でき、ＡＥＳの鍵の生成、鍵の更新を行う。
【０１１６】
図１２（Ａ）、図１２（Ｂ）に、ＡＥＳ処理部２００の処理の概要のフローを示す。
【０１１７】
図１２（Ａ）に、ＡＥＳ処理部２００によって行われる暗号化処理の概要を示す。ＣＰＵ２８０は、図３で説明したようにして取得したコンテンツ鍵Ｋｃに基づいて拡張処理を行ってラウンド毎の鍵Ｋ０、Ｋ１・・・、ＫＮｒを生成する。そしてＡＥＳ処理部２００は、平文である入力データの１２８ビット分の長さを１ブロックとして、ブロック単位にラウンド毎に鍵を変更しながら暗号化操作をしていく。
【０１１８】
初段暗号化操作では、鍵Ｋ０を用いてAddRoundkey操作が行われる。その後、ラウンド１〜ラウンド（Ｎｒ−１）まで、各ラウンド毎の鍵を用いてSubBytes操作、ShiftRows操作、MixColumns操作及びAddRoundKey操作を行い、最終段暗号化操作では、SubBytes操作、ShiftRows操作及びAddRoundkey操作が行われる。
【０１１９】
図１２（Ｂ）に、ＡＥＳ処理部２００によって行われる復号化処理の概要を示す。ＣＰＵ２８０は、図３で説明したようにして取得したコンテンツ鍵Ｋｃに基づいて拡張処理を行ってラウンド毎の鍵ｉＫＮｒ、ｉＫＮｒ−１・・・、ｉＫ０を生成する。そしてＡＥＳ処理部２００は、暗号文である入力データの１２８ビット分の長さを１ブロックとして、ブロック単位にラウンド毎に鍵を変更しながら復号化操作をしていく。
【０１２０】
初段復号化操作では、鍵ｉＫＮｒを用いてAddRoundkey操作が行われる。その後、ラウンド（Ｎｒ−１）〜ラウンド１まで、各ラウンド毎の鍵を用いてInvShiftrows操作、InvSubBytes操作、AddRoundkey操作及びInvMixColumns操作を行い、最終段復号化操作では、InvShifRows操作、InvSubBytes操作及びAddRoundkey操作が行われる。
【０１２１】
なお暗号化操作及び復号化操作における各操作の内容の詳細は、例えば「Announcing the ADVANCED ENCRYPTION STANDARD(AES)」（November 26,2001、FIPS PUB 197）に記載されているため、その説明は省略する。
【０１２２】
このようにＡＥＳ処理部２００の処理は同じ操作を繰り返し行うため、ハードウェア化した場合により一層の処理の高速化を図ることができる。
【０１２３】
２．１．１  ブロック暗号方式の操作モード
ここでブロック暗号方式の操作モードについて具体的に説明する。
【０１２４】
図１３（Ａ）に、ＣＢＣモードの説明図を示す。
【０１２５】
ＣＢＣモードで暗号化処理を行う場合、処理中のブロックの１つ前のブロックの暗号文がレジスタに保存される。そして、処理中のブロックの平文とレジスタに保存した暗号文との間でビット単位に排他的論理和演算が行われ、その結果に対して暗号化処理が行われる。コンテンツデータの最初のブロックでは、レジスタに保存した暗号文ではなく、処理中のブロックの平文と初期値ＩＶとの間でビット単位に排他的論理和演算が行われる。
【０１２６】
ＣＢＣモードで復号化処理を行う場合、処理中のブロックの１つ前のブロックの暗号文入力値がレジスタに保存される。そして、処理中のブロックの復号化処理結果とレジスタに保存した暗号文入力値との間でビット単位に排他的論理和演算が行われて、平文が得られる。コンテンツデータの最初のブロックでは、レジスタに保存した暗号文ではなく、処理中のブロックの平文と初期値ＩＶとの間でビット単位に排他的論理和演算が行われる。
【０１２７】
なお図１０のＡＥＳ処理部２００において、図１３（Ａ）のｎを１２８とすることができる。
【０１２８】
図１３（Ｂ）に、ＣＦＢモードの説明図を示す。
【０１２９】
ＣＦＢモードで暗号化処理を行う場合、処理中のブロックの１つ前のブロックの暗号文をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のｎビットのデータに対して暗号化処理が行われ、そのうちのｊ（１≦ｊ≦ｎ、ｊは整数）ビットのデータと平文との間でビット単位に排他的論理和演算が行われてｊビットの暗号文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値ＩＶに対して暗号化処理が行われ、該処理結果と処理中のブロックの平文との間でビット単位に排他的論理和演算が行われる。
【０１３０】
ＣＦＢモードで復号化処理を行う場合、処理中のブロックの１つ前のブロックの暗号文をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のｎビットのデータに対して暗号化処理が行われ、そのうちのｊビットのデータと暗号文との間でビット単位に排他的論理和演算が行われて、ｊビットの平文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値ＩＶに対して暗号化処理を行って、該処理結果と処理中のブロックの暗号文との間でビット単位に排他的論理和演算が行われる。
【０１３１】
図１３（Ｃ）に、ＯＦＢモードの説明図を示す。
【０１３２】
ＯＦＢモードで暗号化処理を行う場合、処理中のブロックの１つ前のブロックの暗号化処理結果をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のｎビットのデータに対して暗号化処理が行われ、そのうちのｋ（１≦ｋ≦ｎ、ｋは整数）ビットが暗号化処理結果となる。この暗号化処理結果と平文との間でビット単位に排他的論理和演算が行われ、ｋビットの暗号文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値ＩＶに対して暗号化処理が行われ、該処理結果と処理中のブロックの平文との間でビット単位に排他的論理和演算が行われる。
【０１３３】
ＯＦＢモードで復号化処理を行う場合、処理中のブロックの１つ前のブロックの暗号化処理結果をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のｎビットのデータに対して暗号化処理を行い、そのうちのｋビットが、暗号化処理結果となる。この暗号化処理結果と暗号文との間でビット単位に排他的論理和演算が行われ、ｋビットの平文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値ＩＶに対して暗号化処理を行って、該処理結果と処理中のブロックの暗号文との間でビット単位に排他的論理和演算が行われる。
【０１３４】
なおブロック暗号方式の操作モードとしては、ＣＢＣモード、ＣＦＢモード及びＯＦＢモードの他にＥＣＢモードがある。ＥＣＢモードで暗号化処理を行う場合、平文をそのまま暗号化するだけである。またＥＣＢモードで復号化処理を行う場合、暗号文をそのまま復号化するだけである。
【０１３５】
２．１．２  中間値の保存
図１４に、ＣＢＣモード暗号化で第１の実施形態における鍵メモリ２１０を用いた動作説明図を示す。
【０１３６】
ここでは説明を簡略化するため、第１のコンテンツデータが４分割される場合を示す。この場合、カウント値ＣＮＴが３に設定される。
【０１３７】
ＣＢＣモードでコンテンツデータの暗号化処理が開始されると、まず第１のコンテンツデータを分割した分割データＣＤ１１と初期値ＩＶ１との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データＥ１１が得られる。
【０１３８】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが２となる。そして分割データＣＤ１２と暗号化データＥ１１との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データＥ１２が得られる。
【０１３９】
ここで、別の識別情報ＩＤを有するコンテンツデータ（例えば第２のコンテンツデータ）に対する処理を行うため、次のブロックの暗号化処理に必要な暗号化データＥ１２とカウント値ＣＮＴの値とが中間値記憶部としての鍵メモリ２１０に保存される。即ち、処理結果である暗号化データＥ１２とカウント値ＣＮＴの値とが中間値ということができる。図１４では処理結果とカウント値ＣＮＴを中間値として示したが、その他にブロック単位で行われる暗号化処理に必要な鍵（ラウンド毎の鍵）や初期値も中間値として保存される。
【０１４０】
その後、第１のコンテンツデータに対する処理が再開されると、再び鍵メモリ２１０から暗号化データＥ１２とカウント値ＣＮＴの値とが読み出される。
【０１４１】
そして次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが１となる。そして分割データＣＤ１３と暗号化データＥ１２との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データＥ１３が得られる。
【０１４２】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが０となる。そして分割データＣＤ１４と暗号化データＥ１３との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データＥ１４が得られる。
【０１４３】
その後、カウント値ＣＮＴが０であるため、第１のコンテンツデータの暗号化処理が終了する。
【０１４４】
次に、図１５に、ＣＢＣモード復号化で第１の実施形態における鍵メモリ２１０を用いた動作説明図を示す。
【０１４５】
まず第１のコンテンツデータを分割した分割データＣＤ１１を復号化処理した後に、初期値ＩＶ１との間でビット単位に排他的論理和演算が行われ、復号化データＤ１１が得られる。
【０１４６】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが２となる。そして分割データＣＤ１２を復号化処理した後に、前の入力値データＣＤ１１との間でビット単位に排他的論理和演算が行われ、復号化データＤ１２が得られる。
【０１４７】
ここで、別の識別情報ＩＤを有するコンテンツデータ（例えば第２のコンテンツデータ）に対する処理を行うため、前の入力値データＣＤ１２とカウント値ＣＮＴの値とが中間値記憶部としての鍵メモリ２１０に保存される。即ち、入力値である暗号化データＣＤ１２とカウント値ＣＮＴの値とが中間値ということができる。図１５では処理結果とカウント値ＣＮＴを中間値として示したが、その他にブロック単位で行われる復号化処理に必要な鍵（ラウンド毎の鍵）や初期値も中間値として保存される。
【０１４８】
その後、第１のコンテンツデータに対する処理が再開されると、再び鍵メモリ２１０から前の入力値データＣＤ１２とカウント値ＣＮＴの値とが読み出される。
【０１４９】
そして次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが１となる。そして分割データＣＤ１３を復号化処理した後に、前の入力値データＣＤ１２との間でビット単位に排他的論理和演算が行われ、復号化データＤ１３が得られる。
【０１５０】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが０となる。同様の復号化処理の後、カウント値ＣＮＴが０であるため、第１のコンテンツデータの復号化処理が終了する。
【０１５１】
図１６に、ＣＦＢモードで第１の実施形態における鍵メモリ２１０を用いた動作説明図を示す。
【０１５２】
ここでは説明を簡略化するため、第１のコンテンツデータが４分割される場合を示す。この場合、カウント値ＣＮＴが３に設定される。
【０１５３】
ＣＦＢモードでコンテンツデータの暗号化処理が開始されると、まず初期値ＩＶ１が暗号化され、第１のコンテンツデータを分割した分割データＣＤ１１と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１１が得られる。
【０１５４】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが２となる。そして排他的論理和演算データＥ１１のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、第１のコンテンツデータを分割した分割データＣＤ１１と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１２が得られる。
【０１５５】
ここで、別の識別情報ＩＤを有するコンテンツデータ（例えば第２のコンテンツデータ）に対する処理を行うため、次のブロックの暗号化処理に必要な排他的論理和演算データＥ１２とカウント値ＣＮＴの値とが中間値記憶部としての鍵メモリ２１０に保存される。即ち、処理結果である排他的論理和演算データＥ１２とカウント値ＣＮＴの値とが中間値ということができる。図１６では処理結果とカウント値ＣＮＴを中間値として示したが、その他にブロック単位で行われる暗号化処理に必要な鍵（ラウンド毎の鍵）や初期値も中間値として保存される。
【０１５６】
その後、第１のコンテンツデータに対する処理が再開されると、再び鍵メモリ２１０から排他的論理和演算データＥ１２とカウント値ＣＮＴの値とが読み出される。
【０１５７】
そして次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが１となる。そして排他的論理和演算データＥ１２のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、第１のコンテンツデータを分割した分割データＣＤ１３と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１３が得られる。
【０１５８】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが０となる。そして排他的論理和演算データＥ１３のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、第１のコンテンツデータを分割した分割データＣＤ１４と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１４が得られる。
【０１５９】
その後、カウント値ＣＮＴが０であるため、第１のコンテンツデータの暗号化処理が終了する。
【０１６０】
なお図１６では、ＣＦＢモードでの暗号化処理について説明したが、ＣＦＢモードでの復号化処理についても同様である。
【０１６１】
図１７に、ＯＦＢモードで第１の実施形態における鍵メモリ２１０を用いた動作説明図を示す。
【０１６２】
ここでは説明を簡略化するため、第１のコンテンツデータが４分割される場合を示す。この場合、カウント値ＣＮＴが３に設定される。
【０１６３】
ＯＦＢモードでコンテンツデータの暗号化処理が開始されると、まず初期値ＩＶ１が暗号化され、第１のコンテンツデータを分割した分割データＣＤ１１と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１１が得られる。
【０１６４】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが２となる。そして初期値ＩＶ１を暗号化した暗号化データＷ１１がシフトされ、シフト動作後の所定ビットのシフトデータが暗号化される。この暗号化データと第１のコンテンツデータを分割した分割データＣＤ１２との間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１２が得られる。
【０１６５】
ここで、別の識別情報ＩＤを有するコンテンツデータ（例えば第２のコンテンツデータ）に対する処理を行うため、次のブロックの暗号化処理に必要な暗号化データＷ１２とカウント値ＣＮＴの値とが中間値記憶部としての鍵メモリ２１０に保存される。ここで暗号化データＷ１２は、暗号化データＷ１１のシフト動作後の所定ビットのデータを再暗号化したデータである。即ち、処理結果である暗号化データＷ１２とカウント値ＣＮＴの値とが中間値ということができる。図１７では処理結果とカウント値ＣＮＴを中間値として示したが、その他にブロック単位で行われる暗号化処理に必要な鍵（ラウンド毎の鍵）や初期値も中間値として保存される。
【０１６６】
その後、第１のコンテンツデータに対する処理が再開されると、再び鍵メモリ２１０から暗号化データＷ１２とカウント値ＣＮＴの値とが読み出される。
【０１６７】
そして次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが１となる。そして暗号化データＷ１２のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、この暗号化データと第１のコンテンツデータを分割した分割データＣＤ１３との間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１３が得られる。
【０１６８】
次のブロックでは、カウント値ＣＮＴがデクリメントされ、カウント値ＣＮＴが０となる。そして暗号化データＷ１３のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、この暗号化データと第１のコンテンツデータを分割した分割データＣＤ１４との間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データＥ１４が得られる。
【０１６９】
その後、カウント値ＣＮＴが０であるため、第１のコンテンツデータの暗号化処理が終了する。
【０１７０】
なお図１７では、ＯＦＢモードでの暗号化処理について説明したが、ＯＦＢモードでの復号化処理についても同様である。
【０１７１】
２．１．３  ヘッダ情報
上述のような分割データには、ＣＯＭヘッダが付加される。ＣＯＭヘッダは、メインＣＰＵ４０によって付加される。暗号化／復号化装置１００のヘッダ解析部２７０は、ＣＯＭヘッダの内容を解析することで上記のような制御を行う。このようなヘッダ解析部２７０を設けることで、暗号化／復号化装置１００の処理手順を指定するためにメインＣＰＵ４０がアクセス可能な制御レジスタ等を設ける必要がなくなり、暗号化／復号化装置１００の制御及び構成の簡素化を図ることができるようになる。
【０１７２】
図１８に、第１の実施形態におけるＣＯＭヘッダの構成例を示す。
【０１７３】
ＣＯＭヘッダは、１６ビット長のＳＹＮＣフィールド、４ビット長のＴｒａｎＴＹＰＥフィールド、１ビットのＥｘＦｌｇフィールド、３２ビット長のＰａｃｋｅｔＬｅｎｇｔｈフィールドを含む。
【０１７４】
ＳＹＮＣフィールドには、ＣＯＭヘッダであることを確認するための同期パターンが設定される。この同期パターンのパターンマッチングを行うことで、メインＣＰＵ４０との間の同期ずれが検出される。
【０１７５】
ＩＤフィールドには、通信相手を判別するための識別情報ＩＤが設定される。この識別情報ＩＤを判別することで、暗号化／復号化装置１００は、ＡＥＳ処理部２００においてコンテンツデータに対応した鍵を変更できる。
【０１７６】
ＥｘＦｌｇフィールドには、ＰＣＰＥｘｔｅｎｄフィールドが付加されている事を示す情報が設定される。この情報を参照することで、ＰＣＰの区切りの位置を特定できるようになり、鍵更新の基準タイミングとすることができる。
【０１７７】
ＰａｃｋｅｔＬｅｎｇｔｈフィールドには、このＣＯＭヘッダが付加されているパケットのサイズを示す情報が設定される。この情報は、パケットのうちＣＯＭヘッダを除くデータのサイズを示す。
【０１７８】
また第１の実施形態では、「DTCP Volume 1 Supplement E Mapping DTCP to IP (Informational Version)」(Revision 1.0, November 24, 2003)に規定されたＰＣＰヘッダを、ＰＣＰＥｘｔｅｎｄヘッダに拡張している。
【０１７９】
図１９に、ＰＣＰＥｘｔｅｎｄヘッダとＰＣＰヘッダの説明図を示す。
【０１８０】
ＣＡフィールドには、ＰＣＰヘッダのＣ＿Ａフィールドの情報が設定される。Ｃ＿Ａフィールドには、１２８ビット長を１ブロックとするＡＥＳか、オプショナルなアルゴリズムかを指定する情報が設定される。
【０１８１】
ＥＭＩフィールドには、ＰＣＰヘッダのＥ−ＥＭＩフィールドの情報が設定される。Ｅ−ＥＭＩフィールドには、Copy-never、Copy-one-generation、No-more-copies、Copy-free等の複製制限に関する情報が設定される。
【０１８２】
ＥｘｃｈａｎｇｅＫｅｙＬａｂｅｌフィールドには、ＰＣＰヘッダのexchange_key_labelフィールドの情報が設定される。exchange_key_labelフィールドには、交換鍵Ｋｘが設定される。
【０１８３】
Ｎｃフィールドには、ＰＣＰヘッダのＮｃフィールドの情報が設定される。Ｎｃフィールドには、式（１）、式（２）で用いられる乱数が設定される。
【０１８４】
ＣｏｎｔｅｎｔＬｅｎｇｔｈフィールドには、ＰＣＰヘッダのＣＬフィールドの情報が設定される。ＣＬフィールドには、コンテンツデータのバイト長が設定される。従って、ブロック暗号化の処理単位が既知であるため、例えばＣｏｎｔｅｎｔＬｅｎｇｔｈフィールドの情報に基づいてカウント値ＣＮＴを求めることができる。
【０１８５】
ＰＣＰＥｘｔｅｎｄヘッダがＰＣＰヘッダと異なる点は、Ｒｅｓｅｒｖｅｄフィールドが３ビットから１９ビットに拡張された点である。こうすることで、ＣＯＭヘッダ及びＰＣＰＥｘｔｅｎｄヘッダを含むパケットの長さを、ＡＥＳの処理単位である１６バイトの倍数とすることができ、回路構成の簡素化を図ることができるようになる。
【０１８６】
２．１．４  動作の概要
次に、図１０に示す暗号化／復号化装置１００の動作の概要について説明する。暗号化／復号化装置１００の各部は、ステート制御部２５０によって制御される。
【０１８７】
図２０に、図１０のステート制御部２５０の処理の説明図を示す。
【０１８８】
ステート制御部２５０は、図２０の状態遷移図に従って動作する。即ち、各ステートの間を遷移し、遷移先のステートに対応した制御信号を暗号化／復号化装置１００の各部に対して出力する。
【０１８９】
IDLEステートでは、記憶部２３０に対してデータが入出力され、内部でデータ転送等が行われない状態である。IDLEステートにおいて、記憶部２３０の入力エリアにデータの設定が開始され、ポインタ管理部２４０で管理されるポインタに基づいてＣＯＭヘッダのデータサイズ分のデータが設定されたと判断されたとき、HdrInがアクティブとなってＣＯＭヘッダが検出されたことを示すHDRDETステートに遷移する。
【０１９０】
HDRDETステートでは、ＣＯＭヘッダの解析が行われる。即ち、図１８に示すＣＯＭヘッダの情報に基づいて、ＩＤフィールドの情報に対応したコンテンツの区別、ＰａｃｋｅｔＬｅｎｇｔｈフィールドの情報に対応してInDAMC及びOutDMACに対しデータ転送サイズ等の設定を行う。また、ＣＰＵ２８０は、カウント値ＣＮＴをＡＥＳ処理部２００に設定する。
【０１９１】
HDRDETステートにおいて、ＣＯＭヘッダのＥｘＦｌｇフィールドの情報に基づいてＰＣＰＥｘｔｅｎｄヘッダが付加されていると判断されるとき、PCPExtendFlagをアクティブにしてPCPHDRDETステートに遷移する。またHDRDETステートにおいて、ＣＯＭヘッダのＥｘＦｌｇフィールドの情報に基づいてＰＣＰＥｘｔｅｎｄヘッダが付加されていないと判断されるとき、HdrAnalyzeCompleteをアクティブにしてLOADCBCステートに遷移する。
【０１９２】
PCPHDRDETステートへの遷移が、ＰＣＰ単位で行われる鍵更新の基準タイミングとなる。図２０では、ステート制御部２５０が、ＥｘＦｌｇフィールドの情報に基づいてＰＣＰＥｘｔｅｎｄヘッダが付加されていると検出したとき、ＣＰＵ２８０に対して割り込み要求を通知する。ＣＰＵ２８０は、更新される鍵を再生成し、内部バスを介して鍵メモリ２１０に設定する。ＡＥＳ処理部２００は、鍵メモリ２１０に設定された鍵を用いて暗号化又は復号化処理を行うようになっている。このような鍵更新が終了すると、ＰＣＰＥｘｔｅｎｄヘッダの解析完了を通知するため、ＣＰＵ２８０は、暗号化／復号化装置１００の図示しない起動制御レジスタをアクセスする。該起動制御レジスタへのアクセスに伴い、PCPExtendAnalyzeCompleteがアクティブとなって、ステート制御部２５０では、LOADCBCステートへの遷移が行われる。
【０１９３】
LOADCBCステートでは、カウント値ＣＮＴが０のとき、識別情報ＩＤに対応して鍵メモリ２１０に保存された初期値ＩＶと鍵が読み出され、カウント値ＣＮＴがではないとき、識別情報ＩＤに対応して鍵メモリ２１０に保存された中間値ＭＶと鍵が読み出される。LOADCBCステートにおいて、鍵メモリ２１０からのデータ読み出しが完了すると、LOADCompleteがアクティブとなってTRANDATAステートへの遷移が行われる。
【０１９４】
TRANDATAステートでは、InDMACが記憶部２３０の入力エリアからデータを読み出して転送を行い、ＡＥＳ処理部２００が暗号化又は復号化処理を行い、最終的にOutDMACが記憶部２３０の出力エリアに処理結果のデータを保存する。OutDMACの転送が完了すると、OutDMACCompleteがアクティブになり、SAVECBCステートへの遷移が行われる。
【０１９５】
SAVECBCステートでは、中間値の保存が行われる。即ち、鍵メモリ制御部２２０が、鍵メモリ２１０に処理結果及びカウント値を保存する制御を行う。
【０１９６】
その後、鍵メモリ２１０への保存が完了するとSaveCompleteがアクティブとなって、IDLEステートへの遷移が行われる。
【０１９７】
このように第１の実施形態では、ステート制御部２５０が、ＣＯＭヘッダのデータサイズ分の暗号化又は復号化処理を行う度に鍵メモリ２１０に対して中間値等の保存を行うことで、制御及び構成の簡素化を図っている。しかしながら、一連のコンテンツデータの暗号化又は復号化処理の中断時にのみ中間値等の保存を行うようにしてもよいことは言うまでもない。
【０１９８】
２．２  第２の実施形態
第１の実施形態では、１つの暗号化アルゴリズムに対応した処理を行う暗号化／復号化装置について説明したが、第２の実施形態では２つの暗号化アルゴリズムに対応した処理を行うことができる。
【０１９９】
図２１に、第２の実施形態における暗号化／復号化装置の構成例のブロック図を示す。
【０２００】
図２の電子機器１０の通信コントローラ５０は、第１の実施形態における暗号化／復号化装置１００に代えて第２の実施形態における暗号化／復号化装置４００を含むことができる。
【０２０１】
暗号化／復号化装置４００は、複数の暗号化／復号化アルゴリズムの処理を実行することができる。例えば、この構成例では、第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、ＡＥＳ及びＤＥＳのアルゴリズムに従った暗号化処理又は復号化処理を行うことができるものとする。また、この構成例では、ＤＥＳのアルゴリズムに従った暗号化／復号化処理はメインＣＰＵ４０との間で予め取り決められた方法によるものとする。
【０２０２】
暗号化／復号化装置４００は、記憶部４１０と、ＡＥＳ処理部（広義には第１の暗号化／復号化処理部）４２０と、ＤＥＳ処理部（広義には第２の暗号化／復号化処理部）４３０と、鍵メモリ（広義には中間値記憶部）４４０とを含む。記憶部４１０は、コンテンツデータを分割した複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する。
【０２０３】
ＡＥＳ処理部４２０は、図１０のＡＥＳ処理部２００と同様に、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対してＡＥＳのアルゴリズムに従った暗号化又は復号化処理（第１の暗号化処理又は第１の復号化処理）を行う。
【０２０４】
ＤＥＳ処理部４３０は、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対してＤＥＳのアルゴリズムに従った暗号化又は復号化処理（第２の暗号化処理又は第２の復号化処理）を行う。
【０２０５】
鍵メモリ４４０は、図１０の鍵メモリ２１０と同様に、コンテンツ毎に、ブロック単位で処理されたＡＥＳ処理部４２０の処理結果及びＤＥＳ処理部４３０の処理結果が保存される。
【０２０６】
そして入力データに対してＡＥＳ処理部４２０及びＤＥＳ処理部４３０（第１及び第２の暗号化／復号化処理部）の一方が行ったＡＥＳのアルゴリズムに従った暗号化又は復号化処理、或いはＤＥＳのアルゴリズムに従った暗号化又は復号化処理（第１又は第２の復号化処理）後の復号化データが記憶部２３０に保存される。また該復号化データに対してＡＥＳ処理部４２０及びＤＥＳ処理部４３０（第１及び第２の暗号化／復号化処理部）の他方が行った暗号化処理後のデータが出力データとして記憶部２３０に保存される。
【０２０７】
ＡＥＳ処理部４２０及びＤＥＳ処理部４３０の少なくとも１つは、第２のコンテンツデータを分割した複数の分割データの１つの分割データを入力データとして暗号化又は復号化処理を行った後、その処理結果を鍵メモリ４４０に保存する。またＡＥＳ処理部４２０及びＤＥＳ処理部４３０の少なくとも１つは、第１のコンテンツデータを分割した複数の分割データのうち第Ｋの分割データに対する暗号化／復号化処理部の処理結果を鍵メモリ４４０から読み出し、第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを入力データとして上記の処理結果を用いて暗号化又は復号化処理を行う。このとき、記憶部４１０の記憶領域のうち復号化データの記憶領域が、暗号化／復号化装置４００の外部からアクセス不可となるように構成される。
【０２０８】
図２２に、図２１の鍵メモリ４４０に保存されるデータの一例を示す。
【０２０９】
鍵メモリ４４０には、コンテンツデータに付与された識別情報により区別されるコンテンツ毎に、コンテンツデータ特有の情報が保存される。コンテンツデータ特有の情報として、ＡＥＳ処理部４２０において暗号化又は復号化処理するためのＡＥＳ鍵と、初期値ＩＶ、処理結果（中間値）ＭＶ、カウント値ＣＮＴがある。ＡＥＳ鍵は各ラウンドの鍵を鍵メモリ４４０に保存することができる。初期値ＩＶは、ＡＥＳのＣＢＣモードで最初のブロックに用いられる初期ベクトル値である。カウント値ＣＮＴは、ＡＥＳのＣＢＣモードで処理すべき残りブロック数に対応した値である。
【０２１０】
またコンテンツデータ特有の情報として、ＤＥＳ処理部４３０において暗号化又は復号化処理するための処理結果（中間値）ＭＶ、カウント値ＣＮＴがある。カウント値ＣＮＴは、ＤＥＳのＣＢＣモードで処理すべき残りブロック数に対応した値である。
【０２１１】
なおＤＥＳ処理部４３０で用いる初期値ＩＶは、メインＣＰＵ４０との間で鍵が共有されていればよいので、コンテンツ毎に保有することなく各コンテンツ共通の情報としている。
【０２１２】
このような鍵メモリ４４０にアクセスするため、暗号化／復号化装置４００は、鍵メモリ制御部４４２を含み、鍵メモリ制御部４４２が、鍵メモリ４４０からの読み出し制御と鍵メモリ４４０への書き込み制御とを行う。鍵メモリ制御部４４２の動作は、図１０の鍵メモリ制御部２２０と同様である。
【０２１３】
以上のような暗号化／復号化装置４００は、切換回路４５０を含むことができる。切換回路４５０は、入力データをＡＥＳ処理部４２０又はＤＥＳ処理部４３０に供給するための経路切り換えを行うことができる。また切換回路４５０は、ＡＥＳ処理部４２０で行われた暗号化又は復号化処理後のデータを、記憶部４１０の出力データの記憶領域又は復号化データの記憶領域に供給するための経路切り換えを行うことができる。更に切換回路４５０は、ＤＥＳ処理部４３０で行われた暗号化又は復号化処理後のデータを、記憶部４１０の出力データの記憶領域又は復号化データの記憶領域に供給するための経路切り換えを行うことができる。
【０２１４】
暗号化／復号化装置４００は、図１０のＣＰＵ２８０に相当するコントローラとしてのＣＰＵ４６０によって制御される。例えばＣＰＵ４６０は、ＡＥＳ処理部４２０の暗号化及び復号化処理のための鍵の設定、ＤＥＳ処理部４３０の暗号化及び復号化処理のための鍵の設定を行うことができる。ＣＰＵ４６０は、プログラムメモリ４７０に記憶されたプログラムに従って暗号化／復号化装置４００の制御を行う。
【０２１５】
図２３に、ＤＥＳ処理部４３０の処理の概要のフローを示す。
【０２１６】
暗号化／復号化装置４００は、メインＣＰＵ４０との間で共通秘密鍵を共有しており、該共通秘密鍵に基づいて各ラウンド毎を保持している。そしてＤＥＳ処理部４３０は、平文である入力データの６４ビット分の長さを１ブロックとして、ブロック単位にラウンド毎に鍵を変更しながら暗号化操作をしていく。
【０２１７】
初段暗号化操作では、初期転置やビット分割等の暗号化操作が行われる。その後、ラウンド１〜ラウンド１６まで、拡大転置、各ラウンド毎の鍵を用いた排他的論理和演算、圧縮換字変換、転置処理等の暗号化操作を行い、最終段暗号化操作では、ビットの入れ替え及び最終転置が行われる。
【０２１８】
なおＤＥＳ処理部４３０で行われる復号化処理は、図２３に示す手順と逆の手順で各操作を行うことで実現できる。この場合、鍵は暗号化処理とは逆に、Ｋ１６、Ｋ１５、・・・、Ｋ１の順番で用いる。
【０２１９】
ＤＥＳ処理部４３０における各操作の内容は公知であるため、その説明は省略する。
【０２２０】
このようにＤＥＳ処理部４３０の処理は同じ操作を繰り返し行うため、ハードウェア化した場合により一層の処理の高速化を図ることができる。
【０２２１】
以上のように、図２１に示す暗号化／復号化装置４００は、ＡＥＳ及びＤＥＳのアルゴリズムの暗号化処理及び復号化処理を行うことができる上に、入力データ及び出力データの暗号化及び復号化方式を変更できる。従って、暗号化／復号化装置４００に入力される入力データ、及び暗号化／復号化装置４００から出力された出力データは、ＡＥＳ又はＤＥＳのアルゴリズムで暗号化処理された後のデータとすることができる。
【０２２２】
そのため記憶部４１０のうち入力データ及び出力データの記憶領域が、暗号化／復号化装置４００の外部からアクセス可能に構成されていても、入力データ及び出力データが不正に複製されることがない。また、復号化データを、暗号化／復号化装置４００の外部からアクセス不可となる記憶部４１０の記憶領域に保存したため、復号化データが不正に複製されることがない。
【０２２３】
なお図２１において、記憶部４１０は、それぞれ入力エリア、中間エリア及び出力エリアとして第１〜第３の記憶部４１２、４１４、４１６の各記憶部が、それぞれ別個に設けられていてもよい。入力エリアとしての第１の記憶部４１２は、暗号化／復号化装置４００の外部からアクセス可能な記憶部であって入力データを記憶する。中間エリアとしての第２の記憶部４１４は、暗号化／復号化装置４００の外部からアクセス不可能な記憶部であって入力データに対するＡＥＳ又はＤＥＳのアルゴリズムに従った復号化処理後の復号化データを記憶する。出力エリアとしての第３の記憶部４１６は、暗号化／復号化装置４００の外部からアクセス可能な記憶部であって出力データを記憶する。
【０２２４】
そして、暗号化／復号化装置４００は、ＡＥＳ処理部４２０及びＤＥＳ処理部４３０の一方が復号化データを第２の記憶部４１２に保存すると共に、ＡＥＳ処理部４２０及びＤＥＳ処理部４３０の他方が復号化データに対して行ったＡＥＳ又はＤＥＳのアルゴリズムに従った暗号化処理後のデータを出力データとして第３の記憶部４１６に保存する。
【０２２５】
また、第１〜第３の記憶部４１２、４１４、４１６の各記憶部が、それぞれ入力エリア（InputArea）、中間エリア（MediumArea）、出力エリア（OutputArea）として、１つのメモリ空間内に分割された記憶領域に割り当てられ、各記憶領域が、可変であってもよい。
【０２２６】
図２４に、各記憶領域が可変に設定される図２１の記憶部４１０の構成例を示す。
【０２２７】
記憶部４１０の記憶領域のうちベースアドレスBaseAddrを基準に、入力エリア、中間エリア及び出力エリアの各記憶領域が特定される。暗号化／復号化装置４００は、図示しない制御レジスタとしての記憶領域設定レジスタを含み、メインＣＰＵが該記憶領域設定レジスタの設定内容を変更する。
【０２２８】
例えば記憶領域設定レジスタは、中間エリア開始位置設定レジスタ、中間エリア終了位置設定レジスタ、出力エリア終了位置設定レジスタを含むことができる。中間エリア開始位置設定レジスタには、中間エリア開始アドレスMedStarAddrが設定される。中間エリア終了位置設定レジスタには、中間エリア終了アドレスMedEndAddrが設定される。出力エリア終了位置設定レジスタには、出力エリア終了アドレスOutEndAddrが設定される。この結果、記憶部４１０の記憶領域のうちアドレスBaseAddrからアドレス（MedStartAddr-1）までの記憶領域を、入力エリアの記憶領域とすることができる。記憶部４１０の記憶領域のうちアドレスMedStartAddrからアドレスMedEndAddrまでの記憶領域を、中間エリアの記憶領域とすることができる。記憶部４１０の記憶領域のうちアドレス(MedEndAddr+1)からアドレスOutEndAddr（又は(OutEndAddr-1)）までの記憶領域を、出力エリアの記憶領域とすることができる。
【０２２９】
メインＣＰＵは、コンテンツデータを分割する単位に基づいて、中間エリア開始位置設定レジスタ、中間エリア終了位置設定レジスタ及び出力エリア終了位置設定レジスタの各レジスタの設定内容を変更することが望ましい。ベースアドレスBaseAddrを変更できるようにすれば、記憶部４１０の任意の位置に入力エリア、中間エリア及び出力エリアの各記憶領域を設定できる。
【０２３０】
なお暗号化／復号化装置４００では、入力エリア、中間エリア及び出力エリアの各エリアがリングバッファとしてアクセスされる。各エリアは、データの読み出し位置を指定するリードポインタ（InAreaRdPtr、MedAreaRdPtr、OutAreaRdPtr）と、データの書き込み位置を指定するライトポインタ（InAreaWrPtr、MedAreaWrPtr、OutAreaWrPtr）とにより管理される。そして、各ポインタがエリアの最終アドレスに到達すると、ポインタの更新時に該エリアの開始アドレスに設定されるようになっている。
【０２３１】
図２１のポインタ管理部４８０は、図１０のポインタ管理部２４０に相当する。ポインタ管理部４８０は、記憶部４１０の各エリアの書き込みポインタ及び読み出しポインタの管理及び更新する制御を行う。図２１のタイミング発生部４９０は、図１０のタイミング発生部２６０に相当する。図２１のヘッダ解析部５００は、図１０のヘッダ解析部２７０に相当する。図２１のステート制御部５１０は、図１０のステート制御部２５０に相当する。
【０２３２】
図２１では、InDMAC1が入力エリアからデータを読み出して切換回路４５０に出力する。OutDMAC1が、切換回路４５０からのデータを中間エリアに出力する。InDAMC2が中間エリアからデータを読み出して切換回路４５０に出力する。OutDMAC2が、切換回路４５０からのデータを出力エリアに出力する。
【０２３３】
２．２．１  動作の概要
次に、図２１に示す暗号化／復号化装置４００の動作の概要について説明する。暗号化／復号化装置４００の各部は、ステート制御部５１０によって制御される。
【０２３４】
図２５に、図２１のステート制御部５１０の処理の説明図を示す。
【０２３５】
なお図２０と図２５が異なる主な点は、TRANDATAステートでは、ヘッダ解析部５００の解析結果に基づいてＡＥＳ処理部４２０及びＤＥＳ処理部４３０の一方の処理結果を中間エリアに保存後、再び該処理結果を読み出してＡＥＳ処理部４２０及びＤＥＳ処理部４３０の他方に処理させ、その処理結果を出力エリアに戻す点である。そして、OutDMAC2のデータ転送が完了したことを示すOutDMAC2Completeがアクティブになったことを条件に、TRANDATAステートからSAVECBCステートへの遷移が行われる点が異なる。
【０２３６】
なおSAVECBCステートでは、図２２で説明したようなデータが中間値として保存される。
【０２３７】
また第２の実施形態では、第１の実施形態と同様にＣＯＭヘッダの情報に基づいて暗号化／復号化装置の制御を行うことができるのに加えて、ＡＥＳ処理部４２０、ＤＥＳ処理部４３０及び切換回路４５０を用いた制御を行うことができる。
【０２３８】
図２６に、第２の実施形態におけるＣＯＭヘッダの構成例を示す。
【０２３９】
第２の実施形態におけるＣＯＭヘッダが、図１８に示す第１の実施形態におけるＣＯＭヘッダと異なる点は、第２の実施形態におけるＣＯＭヘッダが４ビット長のＴｒａｎＴＹＰＥフィールドを含む点である。
【０２４０】
ＴｒａｎＴＹＰＥフィールドには、ＡＥＳ処理部４２０及びＤＥＳ処理部４３０で行われる暗号化処理及び復号化処理のタイプを指定する情報が設定される。この情報を設定することで、動作モードを変更でき、例えば図５又は図６に示すようにコンテンツデータの暗号化処理及び復号化処理の順序を変更したりすることができるようになる。
【０２４１】
図２７に、図２６のＴｒａｎＴＹＰＥフィールドの説明図を示す。
【０２４２】
図２８（Ａ）〜図２８（Ｄ）、図２９（Ａ）〜図２９（Ｃ）及び図３０に、ＴｒａｎＴＹＰＥフィールドの設定情報に対応した動作モードの説明図を示す。図２８（Ａ）〜図２８（Ｄ）、図２９（Ａ）〜図２９（Ｃ）及び図３０において、図２１と同一部分には同一符号を付し、適宜説明を省略する。
【０２４３】
暗号化／復号化装置４００は、ＴｒａｎＴＹＰＥフィールドの設定情報に対応した動作モードで動作する。
【０２４４】
ＴｒａｎＴＹＰＥフィールドに０ｈ（ｈは１６進数表示であることを表す）が設定されたとき、暗号化／復号化装置４００は、デバッグ用のモードとして動作する。即ち、図２８（Ａ）に示すように、メインＣＰＵによって書き込まれたコンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをそのまま中間エリア（第２の記憶部）に出力し、中間エリアにコンテンツデータが保存される。そして、中間エリアから再びコンテンツデータが読み出されて切換回路４５０に供給された後、切換回路４５０は、該コンテンツデータをそのまま出力エリア（第３の記憶部）に出力し、出力エリアに出力データとして該コンテンツデータが保存される。その結果、メインＣＰＵによって読み出される出力データは、入力データと同じデータとなる。
【０２４５】
ＴｒａｎＴＹＰＥフィールドに１ｈが設定されたとき、暗号化／復号化装置４００は、第２の動作モードとして動作する。即ち、図２８（Ｂ）に示すように、メインＣＰＵが、入力データとしてＤＥＳの暗号化処理後のコンテンツデータを入力エリア（第１の記憶部）に格納する。そして、コンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをＤＥＳ処理部４３０に供給する。ＤＥＳ処理部４３０は、該コンテンツデータに対し、ＤＥＳのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路４５０に供給する。切換回路４５０は、復号化データを中間エリア（第２の記憶部）に出力し、中間エリアに復号化データが格納される。そして、中間エリアから再び復号化データが読み出されて切換回路４５０に供給された後、切換回路４５０は、該復号化データをＡＥＳ処理部４２０に供給する。ＡＥＳ処理部４２０は、該復号化データに対し、ＡＥＳのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを出力データとして切換回路４５０に供給する。切換回路４５０は、該出力データを出力エリア（第３の記憶部）に出力し、出力エリアに出力データが格納される。その結果、メインＣＰＵによって読み出される出力データがＡＥＳの暗号化処理後のデータであるのに対し、メインＣＰＵが格納した入力データはＤＥＳの暗号化処理後のデータとなる。例えば通信コントローラ５０がコンテンツデータの送信処理を行う場合に、暗号化／復号化装置４００は、第２の動作モードに設定される。
【０２４６】
ＴｒａｎＴＹＰＥフィールドに２ｈが設定されたとき、暗号化／復号化装置４００は、第３の動作モードとして動作する。即ち、図２８（Ｃ）に示すように、メインＣＰＵが、入力データとしてＤＥＳの暗号化処理後のコンテンツデータを入力エリア（第１の記憶部）に格納する。そして、コンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをＤＥＳ処理部４３０に供給する。ＤＥＳ処理部４３０は、該コンテンツデータに対し、ＤＥＳのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路４５０に供給する。切換回路４５０は、復号化データを出力データとして出力エリア（第３の記憶部）に出力し、出力エリアに出力データが格納される。その結果、メインＣＰＵによって読み出される出力データがＤＥＳの復号化処理後のデータであるのに対し、メインＣＰＵが格納した入力データはＤＥＳの復号化処理前のデータとなる。例えば暗号化／復号化装置４００をＤＥＳの復号器として用いる場合に、暗号化／復号化装置４００は第３の動作モードに設定される。
【０２４７】
ＴｒａｎＴＹＰＥフィールドに３ｈが設定されたとき、暗号化／復号化装置４００は、第４の動作モードとして動作する。即ち、図２８（Ｄ）に示すように、メインＣＰＵによって格納されたコンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをＡＥＳ処理部４２０に供給する。ＡＥＳ処理部４２０は、該コンテンツデータに対し、ＡＥＳのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを切換回路４５０に供給する。切換回路４５０は、暗号化処理後のデータを出力データとして出力エリア（第３の記憶部）に出力し、出力エリアに出力データが格納される。その結果、メインＣＰＵによって読み出される出力データがＡＥＳの暗号化処理後のデータであるのに対し、メインＣＰＵが格納した入力データはＡＥＳの暗号化処理前のデータとなる。例えば暗号化／復号化装置４００をＡＥＳの暗号器として用いる場合に、暗号化／復号化装置４００は第４の動作モードに設定される。
【０２４８】
ＴｒａｎＴＹＰＥフィールドに４ｈが設定されたとき、暗号化／復号化装置４００は、第１の動作モードとして動作する。即ち、図２９（Ａ）に示すように、メインＣＰＵが、入力データとしてＡＥＳの暗号化処理後のコンテンツデータを入力エリア（第１の記憶部）に格納する。そして、コンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをＡＥＳ処理部４２０に供給する。ＡＥＳ処理部４２０は、該コンテンツデータに対し、ＡＥＳのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路４５０に供給する。切換回路４５０は、復号化データを中間エリア（第２の記憶部）に出力し、中間エリアに復号化データが格納される。そして、中間エリアから再び復号化データが読み出されて切換回路４５０に供給された後、切換回路４５０は、該復号化データをＤＥＳ処理部４３０に供給する。ＤＥＳ処理部４３０は、該復号化データに対し、ＤＥＳのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを出力データとして切換回路４５０に供給する。切換回路４５０は、該出力データを出力エリア（第３の記憶部）に出力し、出力エリアに出力データが格納される。その結果、メインＣＰＵから読み出される出力データがＤＥＳの暗号化処理後のデータであるのに対し、メインＣＰＵが格納した入力データはＡＥＳの暗号化処理後のデータとなる。例えば通信コントローラ５０がコンテンツデータの受信処理を行う場合に、暗号化／復号化装置４００は、第１の動作モードに設定される。
【０２４９】
ＴｒａｎＴＹＰＥフィールドに５ｈが設定されたとき、暗号化／復号化装置４００は、第５の動作モードとして動作する。即ち、図２９（Ｂ）に示すように、メインＣＰＵによって格納されたコンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをＤＥＳ処理部４３０に供給する。ＤＥＳ処理部４３０は、該コンテンツデータに対し、ＤＥＳのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを出力データとして切換回路４５０に供給する。切換回路４５０は、出力データを出力エリア（第３の記憶部）に出力し、出力エリアに出力データが格納される。その結果、メインＣＰＵによって読み出される出力データがＤＥＳの暗号化処理後のデータであるのに対し、メインＣＰＵが格納した入力データはＤＥＳの暗号化処理前のデータとなる。例えば暗号化／復号化装置４００をＤＥＳの暗号器として用いる場合に、暗号化／復号化装置４００は第５の動作モードに設定される。
【０２５０】
ＴｒａｎＴＹＰＥフィールドに６ｈが設定されたとき、暗号化／復号化装置４００は、第６の動作モードとして動作する。即ち、図２９（Ｃ）に示すように、メインＣＰＵが、入力データとしてＡＥＳの暗号化処理後のコンテンツデータを入力エリア（第１の記憶部）に格納する。そして、コンテンツデータ（入力データ）が入力エリア（第１の記憶部）から読み出されて切換回路４５０に供給される。切換回路４５０は、該コンテンツデータをＡＥＳ処理部４２０に供給する。ＡＥＳ処理部４２０は、該コンテンツデータに対し、ＡＥＳのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路４５０に供給する。切換回路４５０は、復号化データを出力データとして出力エリア（第３の記憶部）に出力し、出力エリアに出力データが格納される。その結果、メインＣＰＵによって読み出される出力データがＡＥＳの復号化処理後のデータであるのに対し、メインＣＰＵが格納する入力データはＡＥＳの復号化処理前のデータとなる。例えば暗号化／復号化装置４００をＡＥＳの復号器として用いる場合に、暗号化／復号化装置４００は第６の動作モードに設定される。
【０２５１】
以上のように、第１及び第２の動作モードでは、メインＣＰＵと暗号化／復号化装置４００との間で暗号化された状態のコンテンツデータをやり取りできる上に、単なるＡＥＳ又はＤＥＳの暗号器又は復号器として機能させることも可能となる。
【０２５２】
更に本実施形態では、以下に説明するようにプログラム復号モードとして動作させることもできる。
【０２５３】
即ち、ＴｒａｎＴＹＰＥフィールドに７ｈが設定されたとき、暗号化／復号化装置４００は、プログラム復号モードとして動作する。プログラム復号モードでは、ＣＰＵ４６０の動作を指定する暗号化されたプログラムデータが、メインＣＰＵから供給される場合に、暗号化／復号化装置４００が該プログラムデータを復号化処理後にプログラムメモリ４７０に転送する。
【０２５４】
そのため、図３０に示すように、メインＣＰＵ４０に、予めＤＥＳのアルゴリズムで暗号化されたプログラムデータを記憶するフラッシュＲＯＭ（Read Only Memory）４２が接続され、ＣＰＵ４６０に、予めブート用のプログラムコードを記憶するブートＲＯＭ４７２が接続されることが望ましい。フラッシュＲＯＭ４２に格納されるプログラムデータは、ＡＥＳ及びＤＥＳの暗号化処理を行うための暗号鍵とＡＥＳとＤＥＳの復号化処理を行うための復号鍵とを生成するためのデータを有し、ＣＰＵ４６０の動作を指定するためのプログラムデータである。従って、復号化データがプログラムデータとしてプログラムメモリ４７０に転送された後、ＣＰＵ４６０が該プログラムデータに基づいて暗号化／復号化装置４００の動作を制御することができる。
【０２５５】
図３１に、プログラム復号モードにおけるシーケンスを示す。
【０２５６】
まず、リセット信号が入力されメインＣＰＵ４０が初期化されると、フラッシュＲＯＭ４２から、予め暗号化されたプログラムデータを取り出す（ＳＥＱ６０）。同様にしてＣＰＵ４６０もまた初期化され、ブートＲＯＭ４７２に格納されたブート用のプログラムコードで動作を開始し（ＳＥＱ６１）、暗号化／復号化装置４００の各部の初期化を行う（ＳＥＱ６２）。なおブート用のプログラムコードには、予めＤＥＳの復号化鍵が設定されているものとする。
【０２５７】
メインＣＰＵ４０は、続いてＴｒａｎＴＹＰＥフィールドが７ｈに設定されたＣＯＭヘッダを該プログラムデータに付加して（ＳＥＱ６３）、入力エリアに設定する（ＳＥＱ６４）。
【０２５８】
暗号化／復号化装置４００は、ＣＯＭヘッダを解析し（ＳＥＱ６５）、ＴｒａｎＴＹＰＥフィールドが７ｈに設定されてプログラム復号モードに指定されたことを判別すると、入力エリアから暗号化されたプログラムデータを読み出して切換回路４５０に供給する。切換回路４５０は、該プログラムデータをＤＥＳ処理部４３０に出力する。ＤＥＳ処理部４３０は、該プログラムデータを、ＤＥＳのアルゴリズムに従った復号化処理を行い（ＳＥＴ６６）、復号化データとして切換回路４５０に出力する。切換回路４５０は、この復号化データを中間エリアに出力し、中間エリアには復号化データが格納される（ＳＥＱ６７）。
【０２５９】
中間エリアに格納された復号化データは、プログラムメモリ４７０に転送され（ＳＥＱ６８）、その後中間エリアの内容がクリアされる（ＳＥＱ６９）。そして、ＣＰＵ４６０は、プログラムメモリ４７０に新たに格納されたプログラムデータで動作を開始する（ＳＥＱ７０）。
【０２６０】
プログラムメモリ４７０に格納されるプログラムデータは、上述のようにＡＥＳの鍵生成を行うための手順やデータを含むため、メインＣＰＵ４０から暗号化／復号化装置４００に供給されるときには暗号化された状態でなければならない。従って、プログラム復号モードを用いることで、ＡＥＳの鍵生成を行うための手順やデータの機密性を維持しながら、例えば中間エリアとしての第２の記憶部４１４を有効に利用できる。
【０２６１】
なお第２の実施形態では、２つの暗号化アルゴリズムを処理できるものとして説明したが、３以上の暗号化アルゴリズムを処理できるようにしてもよい。
【０２６２】
第２の実施形態における暗号化／復号化装置４００を適用することで、図２の通信コントローラ５０は、通信データの送信処理及び受信処理を行う通信処理部と、いずれか記載の暗号化／復号化装置とを含むことができる。そして、通信データの受信時には、図５に示すようにＴＣＰ／ＩＰ処理部（通信処理部）６０によって解析されたヘッダ情報のレイヤより上位のレイヤのＡＥＳの暗号化処理後（第１の暗号化処理後）のデータを入力データとして暗号化／復号化装置４００がＡＥＳの復号化処理（第１の復号化処理）した後にＤＥＳの暗号化処理を行って該処理後のデータ（第２の暗号化処理したデータ）を出力データとして出力する。また通信データの送信時には、図６に示すように送信データを入力データとして暗号化／復号化装置４００がＤＥＳの復号化処理（第２の復号化処理）した後にＡＥＳの暗号化処理（第１の暗号化処理）したデータを出力データとして出力し、ＴＣＰ／ＩＰ処理部６０が該出力データに、上位レイヤのヘッダ情報を付加してネットワークに送信する。
【０２６３】
そして、電子機器１０は、上記の通信コントローラ５０と、コンテンツデータを分割した複数のコンテンツデータを生成すると共に、ＤＥＳの暗号化及び復号化処理を行う処理部としてのメインＣＰＵとを含むことができる。通信データの受信時には、通信コントローラ５０が、メインＣＰＵに対してＤＥＳの暗号化処理後のデータを供給し、通信データの送信時には、メインＣＰＵ４０が、ＤＥＳの暗号化処理後のデータを入力データとして通信コントローラ５０に供給できる。
【０２６４】
３．  変形例
第２の実施形態では、メインＣＰＵ４０と暗号化／復号化装置４００との間で暗号化アルゴリズムが取り決められていればよい。そのため、コンテンツデータを正しく処理するために、ＡＥＳのＣＢＣモード等のブロック暗号方式では正しく中間値等の処理結果を保存しておく必要がある。これに対して、予め処理結果を用いないことがメインＣＰＵ４０と暗号化／復号化装置４００との間で取り決められていれば、ＤＥＳのＣＢＣモード等のブロック暗号方式の操作モードを正しく行う必要がない。
【０２６５】
図３２に、本変形例におけるＡＥＳ及びＤＥＳのＣＢＣモードで暗号化又は復号化処理される第１及び第２のコンテンツデータの説明図を示す。
【０２６６】
図３２では、第１のコンテンツデータがＡＥＳで暗号化又は復号化処理され、第２のコンテンツデータがＤＥＳで暗号化又は復号化処理されるものとする。
【０２６７】
本変形例では、第１のコンテンツデータを分割した複数の分割データＣＤ１１〜ＣＤ１８のうち分割データＣＤ１１から順次暗号化又は復号化処理を行い、分割データＣＤ１４に対して暗号化処理又は復号化処理を行った後、その処理結果又は入力値ＭＶ１を中間値記憶部６１０に格納する。これは、第１のコンテンツデータがＤＴＣＰ規格で規定された方式で処理されたデータだからである。
【０２６８】
次に暗号化／復号化装置４００は、第２のコンテンツデータＣＤ２の暗号化又は復号化処理を開始する。このとき、初期値ＩＶ２を読み出して、第２のコンテンツデータＣＤ２を分割した複数の分割データＣＤ２１〜ＣＤ２８のうち分割データＣＤ２１から順次暗号化又は復号化処理を行う。このとき、分割データＣＤ２４に対して暗号化処理又は復号化処理を行った結果である処理結果又は入力値ＭＶ２を中間値記憶部６１０に保存しない。
【０２６９】
その後、暗号化／復号化装置４００は、再び、第１のコンテンツデータＣＤ１の暗号化又は復号化処理を開始する。このとき、中間値記憶部６１０から処理結果又は入力値ＭＶ１を読み出し、該処理結果又は入力値ＭＶ１を用いて分割データＣＤ１５に対して暗号化／復号化処理を行う。そして、分割データＣＤ１８まで順次暗号化処理又は復号化処理を行う。
【０２７０】
その後、暗号化／復号化装置４００は、第２のコンテンツデータＣＤ２の暗号化又は復号化処理を開始する。このとき、中間値記憶部６１０から処理結果を読み出すことなく、再度初期値ＩＶ２を用いて、第２のコンテンツデータＣＤ２を分割した複数の分割データＣＤ２１〜ＣＤ２８のうち分割データＣＤ２１から順次暗号化又は復号化処理を行い、分割データＣＤ２８まで順次暗号化処理又は復号化処理を行う。
【０２７１】
メインＣＰＵ４０では、ＤＥＳの暗号化又は復号化処理において、再開されるたびに中間値を読み出すことなく初期値ＩＶ２を用いればよく、結果的にメインＣＰＵ４０と暗号化／復号化装置との間では暗号化された状態でデータのやり取りを行うことができる。従って、中間値記憶部６１０の容量を削減できるばかりでなく、暗号化又は復号化処理を簡素化できる。
【０２７２】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。例えば、本発明に係るブロック暗号方式は上述のＡＥＳ、ＤＥＳに適用されるものに限らず、Ｍ６やその他の暗号化及び復号化処理のアルゴリズムに限定されるものではない。またブロック暗号方式の操作モードとして、ＣＢＣモード、ＣＦＢモード及びＯＦＢモードについて説明したが、これらに限定されるものではない。本発明は、ＣＢＣモード、ＣＦＢモード及びＯＦＢモードのいずれかを発展、改良した操作モードに適用できることは言うまでもない。
【０２７３】
また図２、図１０及び図２１の各ブロックをすべて含む必要はなく、その一部のブロックが省略された構成であってもよい。
【０２７４】
更にまた、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【０２７５】
【図１】第１及び第２の実施形態における暗号化／復号化装置を含む通信システムの構成例の図。
【図２】図１の電子機器の構成要部を示す図。
【図３】図１又は図２の電子機器間で行われるＤＴＣＰ規格に準拠した処理の一例の図。
【図４】図１又は図２の通信システムにおける各種のパケットの構成例を示す図。
【図５】図１又は図２の通信システムにおけるコンテンツデータの受信処理の一例のシーケンスを示す図。
【図６】図１又は図２の通信システムにおけるコンテンツデータの送信処理の一例のシーケンスを示す図。
【図７】図７（Ａ）、図７（Ｂ）はコンテンツデータの分割についての説明図。
【図８】ＣＢＣモードで暗号化又は復号化処理される第１及び第２のコンテンツデータの説明図。
【図９】第１の実施形態における暗号化／復号化装置においてＣＢＣモードで暗号化又は復号化処理される第１及び第２のコンテンツデータの説明図を示す。
【図１０】第１の実施形態における暗号化／復号化装置の構成例のブロック図。
【図１１】図１０の鍵メモリに保存されるデータの一例を示す図。
【図１２】図１２（Ａ）、図１２（Ｂ）はＡＥＳ処理部の処理の概要を示すフロー図。
【図１３】図１３（Ａ）はＣＢＣモードの説明図。図１３（Ｂ）はＣＦＢモードの説明図。図１３（Ｃ）はＯＦＢモードの説明図。
【図１４】第１の実施形態におけるＣＢＣモード暗号化での鍵メモリを用いた動作説明図。
【図１５】第１の実施形態におけるＣＢＣモード復号化での鍵メモリを用いた動作説明図。
【図１６】第１の実施形態におけるＣＦＢモードでの鍵メモリを用いた動作説明図。
【図１７】第１の実施形態におけるＯＦＢモードでの鍵メモリを用いた動作説明図。
【図１８】第１の実施形態におけるＣＯＭヘッダの説明図。
【図１９】第１の実施形態におけるＰＣＰＥｘｔｅｎｄヘッダとＰＣＰヘッダの説明図。
【図２０】図１０のステート制御部の処理の説明図。
【図２１】第２の実施形態における暗号化／復号化装置の構成例のブロック図。
【図２２】図２１の鍵メモリに保存されるデータの一例を示す図。
【図２３】ＤＥＳ処理部の処理の概要を示すフロー図。
【図２４】各記憶領域が可変に設定される図２１の記憶部の構成例を示す図。
【図２５】図２１のステート制御部の処理の説明図。
【図２６】第２の実施形態におけるＣＯＭヘッダの説明図。
【図２７】図２６のＴｒａｎＴＹＰＥフィールドの説明図。
【図２８】図２８（Ａ）〜図２８（Ｄ）は、ＴｒａｎＴＹＰＥフィールドの設定情報に対応した動作モードの説明図。
【図２９】図２９（Ａ）〜図２９（Ｃ）は、ＴｒａｎＴＹＰＥフィールドの設定情報に対応した動作モードの説明図。
【図３０】ＴｒａｎＴＹＰＥフィールドの設定情報に対応した動作モードの説明図。
【図３１】プログラム復号モードにおけるシーケンスを示す図。
【図３２】変形例の動作説明図。
【符号の説明】
【０２７６】
１０、２０、３０  電子機器、  ４０  メインＣＰＵ、  ５０  通信コントローラ、
６０  ＴＣＰ／ＩＰ処理部、  １００、４００  暗号化／復号化装置、
２００、４２０  ＡＥＳ処理部、  ２１０、４４０  鍵メモリ、
２２０、４４２  鍵メモリ制御部、  ２３０、４１０  記憶部、
２４０、４８０  ポインタ管理部、  ２５０、５１０  ステート制御部、
２６０、４９０  タイミング発生部、  ２７０、５００  ヘッダ解析部、
２８０、４６０  ＣＰＵ、  ２９０、４７０  プログラムメモリ、
４１２  入力エリア、  ４１４  中間エリア、  ４１６  出力エリア、
４３０  ＤＥＳ処理部、  ４５０  切換回路
【図１】
2006229863.tif 000003
【図２】
2006229863.tif 000004
【図３】
2006229863.tif 000005
【図４】
2006229863.tif 000006
【図５】
2006229863.tif 000007
【図６】
2006229863.tif 000008
【図７】
2006229863.tif 000009
【図８】
2006229863.tif 000010
【図９】
2006229863.tif 000011
【図１０】
2006229863.tif 000012
【図１１】
2006229863.tif 000013
【図１２】
2006229863.tif 000014
【図１３】
2006229863.tif 000015
【図１４】
2006229863.tif 000016
【図１５】
2006229863.tif 000017
【図１６】
2006229863.tif 000018
【図１７】
2006229863.tif 000019
【図１８】
2006229863.tif 000020
【図１９】
2006229863.tif 000021
【図２０】
2006229863.tif 000022
【図２１】
2006229863.tif 000023
【図２２】
2006229863.tif 000024
【図２３】
2006229863.tif 000025
【図２４】
2006229863.tif 000026
【図２５】
2006229863.tif 000027
【図２６】
2006229863.tif 000028
【図２７】
2006229863.tif 000029
【図２８】
2006229863.tif 000030
【図２９】
2006229863.tif 000031
【図３０】
2006229863.tif 000032
【図３１】
2006229863.tif 000033
【図３２】
2006229863.tif 000034
【手続補正書】
【提出日】平成18年3月10日(2006.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して暗号化処理又は復号化処理を行う暗号化／復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データに対して前記暗号化／復号化処理部が行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存された後に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記暗号化／復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データに対し前記暗号化／復号化処理部が前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項２】
請求項１において、
前記中間値記憶部には、
コンテンツ毎に、鍵、初期値、前記暗号化／復号化処理部の処理結果、又は入力値が保存されることを特徴とする暗号化／復号化装置。
【請求項３】
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記第１及び第２の暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記第１又は第２の暗号化／復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項４】
請求項３において、
前記記憶部の記憶領域のうち前記復号化データの記憶領域が、前記暗号化／復号化装置の外部からアクセス不可となるように構成されることを特徴とする暗号化／復号化装置。
【請求項５】
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記複数の分割データの各分割データを入力データとして記憶するための第１の記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、ブロック暗号方式の操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
前記暗号化／復号化装置の外部からアクセス不可能な記憶部であって前記入力データに対する前記第１又は第２の復号化処理後の復号化データを記憶するための第２の記憶部と、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記入力データに対する暗号化処理又は復号化処理後の出力データを記憶する第３の記憶部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記第２の記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記第３の記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記第１又は第２の暗号化／復号化処理部の処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項６】
請求項５において、
前記第１〜第３の記憶部の各記憶部が、
１つのメモリ空間内に分割された記憶領域に割り当てられ、
各記憶領域が、
可変であることを特徴とする暗号化／復号化装置。
【請求項７】
請求項５又は６において、
前記中間値記憶部には、
コンテンツ毎に、前記第１の暗号化／復号化処理部の鍵、前記第１の暗号化／復号化処理部の初期値、前記第１の暗号化／復号化処理部の処理結果、又は入力値が保存されると共に、
コンテンツ毎に、前記第２の暗号化／復号化処理部の処理結果、又は入力値が保存されることを特徴とする暗号化／復号化装置。
【請求項８】
請求項５又は６において、
前記中間値記憶部には、
コンテンツ毎に、前記第１の暗号化／復号化処理部の鍵、前記第１の暗号化／復号化処理部の初期値、前記第１の暗号化／復号化処理部の処理結果、又は入力値が保存され、
前記第２の暗号化／復号化処理部は、
前記第１のコンテンツデータの前記第Ｋの分割データに対する前記第２の暗号化処理又は第２の復号化処理の処理結果、又は入力値を前記中間値記憶部から読み出すことなく、所定の初期値を用いて前記第１のコンテンツデータの前記第（Ｋ＋１）の分割データを前記入力データとして前記第２の暗号化処理又は第２の復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項９】
請求項５乃至８のいずれかにおいて、
前記第１の暗号化／復号化処理部が、
ＡＥＳ（Advanced Encryption Standard）に準拠した暗号化処理及び復号化処理を行い、
前記第２の暗号化／復号化処理部が、
ＤＥＳ（Data Encryption Standard）に準拠した暗号化処理及び復号化処理を行うことを特徴とする暗号化／復号化装置。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記操作モードは、
ＣＢＣ（cipher block chaining）モード、ＣＦＢ（cipher feedback）モード、及びＯＦＢ（output feedback）モードのいずれか１つのモードであることを特徴とする暗号化／復号化装置。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
前記入力データに付加されたヘッダ情報を解析するヘッダ解析部を含み、
前記ヘッダ情報に含まれる識別情報に基づいて、前記分割データが前記第１及び第２のコンテンツデータのいずれのコンテンツデータの分割データであるかが判別されることを特徴とする暗号化／復号化装置。
【請求項１２】
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
前記ネットワークに送信される通信データ又は前記ネットワークから受信される通信データに対して暗号化又は復号化処理を行う請求項１乃至１１のいずれか記載の暗号化／復号化装置とを含むことを特徴とする通信コントローラ。
【請求項１３】
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
請求項３乃至９のいずれか記載の暗号化／復号化装置とを含み、
前記通信データの受信時には、
前記通信処理部によって解析されたヘッダ情報のレイヤより上位のレイヤの前記第１の暗号化処理後のデータを前記入力データとして前記暗号化／復号化装置が前記第１の復号化処理した後に前記第２の暗号化処理したデータを前記出力データとして出力し、
前記通信データの送信時には、
送信データを前記入力データとして前記暗号化／復号化装置が前記第２の復号化処理した後に前記第１の暗号化処理したデータを前記出力データとして出力し、前記通信処理部が該出力データに、上位レイヤのヘッダ情報を付加して前記ネットワークに送信することを特徴とする通信コントローラ。
【請求項１４】
請求項１２又は１３記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを前記通信コントローラに供給する処理部とを含むことを特徴とする電子機器。
【請求項１５】
請求項１３記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを生成すると共に、前記第２の暗号化処理及び第２の復号化処理を行う処理部とを含み、
前記通信データの受信時には、
前記通信コントローラが、前記処理部に対して前記第２の暗号化処理後のデータを供給し、
前記通信データの送信時には、
前記処理部が、前記第２の暗号化処理後のデータを前記入力データとして前記通信コントローラに供給することを特徴とする電子機器。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
また本発明は、
第１及び第２のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化／復号化装置であって、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記複数の分割データの各分割データを入力データとして記憶するための第１の記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第１の暗号化処理又は第１の復号化処理を行う第１の暗号化／復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、ブロック暗号方式の操作モードで、前記複数の分割データの各分割データに対して第２の暗号化処理又は第２の復号化処理を行う第２の暗号化／復号化処理部と、
前記暗号化／復号化装置の外部からアクセス不可能な記憶部であって前記入力データに対する前記第１又は第２の復号化処理後の復号化データを記憶するための第２の記憶部と、
前記暗号化／復号化装置の外部からアクセス可能な記憶部であって前記入力データに対する暗号化処理又は復号化処理後の出力データを記憶する第３の記憶部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化／復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第１及び第２の暗号化／復号化処理部の一方が行った前記第１又は第２の復号化処理後の復号化データが前記第２の記憶部に保存されると共に、
前記第１又は第２の復号化処理後の前記復号化データに対して前記第１及び第２の暗号化／復号化処理部の他方が行った前記第１又は第２の暗号化処理後のデータが前記出力データとして前記第３の記憶部に保存され、
前記第２のコンテンツデータを分割した複数の分割データの１つの分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第１のコンテンツデータを分割した複数の分割データのうち第Ｋ（Ｋは自然数）の分割データに対する前記第１又は第２の暗号化／復号化処理部の処理結果、又は入力値が前記中間値記憶部から読み出され、前記第１のコンテンツデータを分割した複数の分割データのうち第（Ｋ＋１）の分割データを前記入力データとして前記第１及び第２の暗号化／復号化処理部の少なくとも１つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化／復号化装置に関係する。