(57)【特許請求の範囲】
【請求項１】
複数のデータブロックに分割された入力データに対し、共通鍵暗号化方式により生成された鍵をその都度変えて所与の演算処理を（Ｍ＋Ｎ）（Ｍ、Ｎは正の整数）回行い、データブロックごとに変換データを生成する処理を含む暗号処理を行う暗号装置であって、
第ｎ（ｎは２以上の整数）のデータブロックの入力データに基づいて、前記所与の演算処理をＭ回行って第ｎの中間変換データを生成する第１の暗号処理回路と、
前記第ｎの中間変換データに基づいて、前記所与の演算処理をＮ回行って第ｎの変換データを生成する第２の暗号処理回路と、
を含み、
第１のタイミングでは、
前記第１の暗号処理回路は前記第ｎのデータブロックの入力データに基づいて前記第ｎの中間変換データを生成すると共に、前記第２の暗号処理回路は第（ｎ−１）の中間変換データに基づいて第（ｎ−１）の変換データを生成し、
前記第１のタイミングの次の第２のタイミングでは、
前記第１の暗号処理回路は第（ｎ＋１）のデータブロックの入力データに基づいて第（ｎ＋１）の中間変換データを生成すると共に、前記第２の暗号処理回路は前記第ｎの中間変換データに基づいて前記第ｎの変換データを生成し、
第ｎのデータブロックの入力データが供給された後、所与の回数だけ前記第２の暗号処理回路からの出力に対応したデータが前記第１の暗号処理回路に戻されてから、該第１の暗号処理回路が、第（ｎ＋１）のデータブロックの入力データに対して演算処理を行うことを特徴とする暗号装置。
【請求項２】
請求項１において、
前記第１の暗号処理回路は、
所与の第１のモードにおいて暗号処理を行う場合には、前記第（ｎ−１）の中間変換データと前記第ｎのデータブロックの入力データとに基づいて第ｎの中間変換データを生成することを特徴とする暗号装置。
【請求項３】
請求項２において、
前記第ｎの中間変換データは、
前記第（ｎ−１）の中間変換データと前記第ｎのデータブロックの入力データとの間で排他的論理和演算された演算データに基づいて生成されることを特徴とする暗号装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
所与の第１のモードにおいて復号処理を行う場合には、
前記第ｎの変換データと前記第（ｎ−１）の中間変換データとに基づいて生成された演算データを、復号化された信号として出力することを特徴とする暗号装置。
【請求項５】
請求項４において、
前記演算データは、
前記第ｎの変換データと前記第（ｎ−１）の中間変換データとの間で排他的論理和演算されたデータであることを特徴とする暗号装置。
【請求項６】
請求項１において、
所与の第２のモードにおいて暗号処理を行う場合には、
１又は複数回、前記第１及び第２の暗号処理回路による処理をループさせて得られた第ｎの変換データと、第（ｎ＋１）のデータブロックの入力データとに基づいて、第（ｎ＋１）の変換データを生成することを特徴とする暗号装置。
【請求項７】
請求項６において、
前記第（ｎ＋１）のデータブロックの入力データは、
前記第ｎの変換データとの間で排他的論理和演算された演算データであることを特徴とする暗号装置。
【請求項８】
請求項１、６又は７において、
所与の第２のモードにおいて復号処理を行う場合には、
１又は複数回、前記第１及び第２の暗号処理回路にループさせて生成した第ｎの変換データと、前記第（ｎ−１）のデータブロックの入力データとに基づいて生成された演算データを、復号化された信号として出力することを特徴とする暗号装置。
【請求項９】
請求項８において、
前記演算データは、
第ｎの変換データに基づいて生成されたデータと、前記第（ｎ−１）のデータブロックの入力データとの排他的論理和演算結果であることを特徴とする暗号装置。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記第１の暗号処理回路は、
ＤＥＳの各段の暗号処理を８回繰り返して行い、
前記第２の暗号処理回路は、
ＤＥＳの各段の暗号処理を８回繰り返して行うことを特徴とする暗号装置。
【請求項１１】
請求項１０において、
前記第１の暗号処理回路で行われるＤＥＳの各段に対応した鍵を出力する第１の鍵出力回路と、
前記第２の暗号処理回路で行われるＤＥＳの各段に対応した鍵を出力する第２の鍵出力回路と、
を含み、
暗号処理においては、
前記第１の鍵出力回路は、８個の鍵を１つずつ、前記第１の暗号処理回路で行われるＤＥＳの各段の処理のために出力し、
前記第２の鍵出力回路は、８個の鍵を１つずつ、前記第２の暗号処理回路で行われるＤＥＳの各段の処理のために出力し、
復号処理においては、
前記第１の鍵出力回路は、暗号処理の場合と逆順に８個の鍵を１つずつ、前記第２の暗号処理回路で行われるＤＥＳの各段の処理のために出力し、
前記第２の鍵出力回路は、暗号処理の場合と逆順に８個の鍵を１つずつ、前記第１の暗号処理回路で行われるＤＥＳの各段の処理のために出力することを特徴とする暗号装置。
【請求項１２】
請求項１１において、
ＤＥＳの鍵を複数セット保持し、所与の鍵選択信号に基づいていずれか１つのセットを選択する鍵選択回路を含み、
前記第１及び第２の鍵出力回路は、
前記所与の鍵選択信号に基づいて選択されたセットのＤＥＳの鍵を出力することを特徴とする暗号装置。
【請求項１３】
複数のデータブロックに分割された入力データに対し、共通鍵暗号化方式により生成された鍵をその都度変えて所与の演算処理を複数回行う処理を含む暗号処理を行う暗号装置であって、
前記所与の演算処理を１又は複数回行う第１〜第Ｌ（Ｌは２以上の整数）の暗号処理回路を含み、
第１のタイミングにおいて、
前記第ｋ（１≦ｋ≦Ｌ−１、ｋは整数）の暗号処理回路は、第ｎ（ｎは２以上の整数）のデータブロックについて処理すると共に、前記第（ｋ＋１）の暗号処理回路は、第（ｎ−１）のデータブロックについて処理し、
前記第１のタイミングの次の第２のタイミングでは、
前記第ｋの暗号処理回路は、第（ｎ＋１）のデータブロックについて処理すると共に、前記第（ｋ＋１）の暗号処理回路は、前記第１のタイミングにおける前記第ｋの暗号処理回路の処理結果を用いて処理し、
第ｎのデータブロックの入力データが供給された後、所与の回数だけ前記第Ｌの暗号処理回路からの出力に対応したデータが前記第１の暗号処理回路に戻されてから、該第１の暗号処理回路が、第（ｎ＋１）のデータブロックの入力データに対して演算処理を行うことを特徴とする暗号装置。
【請求項１４】
アイソクロナスデータを記憶するメモリと、
外部に接続された所与の記憶装置にアクセスするためのインタフェース回路と、
前記メモリと前記インタフェース回路との間で転送されるアイソクロナスデータに対し、暗号処理又は復号処理を行う請求項１乃至１３のいずれか記載の暗号装置と、
を含むことを特徴とするデータ転送制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、暗号装置及びデータ転送制御装置に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、映像や音楽等各種データのディジタル化が進み、映像等のデータをハードディスク装置等の大容量記憶媒体に保存して利用することができる。そのため、ハードディスク装置等へのアクセスを制御するインタフェースＩＣ（Integrated Circuit）（広義には、データ転送制御装置）に対し、データの機密保護の要求が高まっている。
【０００３】
インタフェースＩＣにおけるデータの機密保護は、暗号化により実現することができる。この場合、インタフェースＩＣに採用する暗号方式は、その安全性に加え、処理の高速化や低コスト化が重要な要素となる。
【０００４】
これまで金融業界等の分野で、共通鍵暗号化方式が幅広く用いられている。共通鍵暗号化方式は、暗号化と復号化において同一の鍵を用いる。共通鍵暗号化方式の中でも、ＤＥＳ（Data Encryption Standard）は、１９７７年に米国情報処理標準規格（FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION：ＦＩＰＳ−ＰＵＢ）４６−３として規定され、最も広く利用されている方式の１つである。
【０００５】
しかしながら、近年の情報処理能力の飛躍的な向上により、ＤＥＳの暗号強度が、従来ほど強固なものではなくなっている。このため、ＤＥＳに代えてトリプルＤＥＳが利用されることがある。
【０００６】
以下では、ＤＥＳとトリプルＤＥＳと区別するために、ＤＥＳをＳＤＥＳ（Single DES）、トリプルＤＥＳをＴＤＥＳ（Triple DES）という。
【０００７】
ＴＤＥＳは、ＳＤＥＳのアルゴリズムを３回繰り返す暗号化方式であり、ＳＤＥＳのアルゴリズムを流用することができる。更に、暗号鍵の鍵長を拡張するのと同様の効果を得ることができ、比較的容易に暗号強度を高めることができる。
【０００８】
しかしながら、ＴＤＥＳの暗号化方式をインタフェースＩＣに実装する場合、それだけ回路規模が大きくなるという問題がある。一方、ユーザによっては、ＴＤＥＳによる暗号強度を必要とせず、ＳＤＥＳの暗号強度を維持したまま高速な暗号処理を必要とする場合がある。したがって、インタフェースＩＣにＳＤＥＳとＴＤＥＳとを共存させて、対象とするデータに応じて切り替えできるように構成することが望ましい。
【０００９】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、最適な回路規模と処理速度で、例えばＳＤＥＳとＴＤＥＳのような複数の暗号化方式の提供を両立させることができる暗号装置及びデータ転送制御装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記課題を解決するために本発明は、複数のデータブロックに分割された入力データに対し、共通鍵暗号化方式により生成された鍵をその都度変えて所与の演算処理を（Ｍ＋Ｎ）（Ｍ、Ｎは正の整数）回行い、データブロックごとに変換データを生成する処理を含む暗号処理を行う暗号装置であって、第ｎ（ｎは２以上の整数）のデータブロックの入力データに基づいて、前記所与の演算処理をＭ回行って第ｎの中間変換データを生成する第１の暗号処理回路と、前記第ｎの中間変換データに基づいて、前記所与の演算処理をＮ回行って第ｎの変換データを生成する第２の暗号処理回路とを含み、第１のタイミングでは、前記第１の暗号処理回路は前記第ｎのデータブロックの入力データに基づいて前記第ｎの中間変換データを生成すると共に、前記第２の暗号処理回路は第（ｎ−１）の中間変換データに基づいて第（ｎ−１）の変換データを生成し、前記第１のタイミングの次の第２のタイミングでは、前記第１の暗号処理回路は第（ｎ＋１）のデータブロックの入力データに基づいて第（ｎ＋１）の中間変換データを生成すると共に、前記第２の暗号処理回路は前記第ｎの中間変換データに基づいて前記第ｎの変換データを生成する暗号装置に関係する。
【００１１】
本発明においては、データブロックごとに、共通鍵暗号化方式により生成された鍵をその都度変えて所与の演算処理を（Ｍ＋Ｎ）回行って暗号処理又は復号処理を行って変換データを生成する場合に、それぞれ上記演算処理を行う第１及び第２の暗号処理回路を用いる。第１のデータブロックから順に入力されるものとすると、第１のタイミングでは、第１の暗号処理回路は第ｎのデータブロックの入力データに基づいて、上記演算処理をＭ回行って第ｎの中間変換データを生成し、第２の暗号処理回路は第（ｎ−１）の中間変換データに基づいて、上記演算処理をＮ回行って第（ｎ−１）の変換データを生成するようにする。そして第１のタイミングの次の第２のタイミングでは、第１の暗号処理回路は第（ｎ＋１）のデータブロックの入力データに基づいて第（ｎ＋１）の中間変換データを生成すると共に、第２の暗号処理回路は第ｎの中間変換データに基づいて第ｎの変換データを生成するようにする。これにより、順次入力されるデータブロックについて、パイプライン動作により高速に処理結果を得ることができる。
【００１２】
また本発明に係る暗号装置では、前記第１の暗号処理回路は、所与の第１のモードにおいて暗号処理を行う場合には、前記第（ｎ−１）の中間変換データと前記第ｎのデータブロックの入力データとに基づいて第ｎの中間変換データを生成することができる。
【００１３】
本発明によれば、第ｎのデータブロックの入力データを第１の暗号処理回路に入力する場合に、１つ前のデータブロックについての第（ｎ−１）の中間変換データと関連付けて入力させることができる。したがって、第１の暗号処理回路で処理される入力データが、連続するデータブロックで同じ内容であるために最終的に生成される変換データも同じデータになることがなくなり、簡素な構成で鍵の特定を困難にすることができる。
【００１４】
また、第２の暗号処理回路で生成された第（ｎ−１）の変換データを用いるのではなく、第１の暗号処理回路で生成された第（ｎ−１）の中間変換データを用いるようにしたので、第（ｎ−１）の変換データが生成されるのを待つ必要がなくなり、パイプライン動作による処理速度の高速化を図ることができるようになる。
【００１５】
また本発明に係る暗号装置は、前記第ｎの中間変換データは、前記第（ｎ−１）の中間変換データと前記第ｎのデータブロックの入力データとの間で排他的論理和演算された演算データに基づいて生成されてもよい。
【００１６】
本発明によれば、構成を大幅に簡素化して、上記した効果を得ることができるようになる。
【００１７】
また本発明に係る暗号装置は、所与の第１のモードにおいて復号処理を行う場合には、前記第ｎの変換データと前記第（ｎ−１）の中間変換データとに基づいて生成された演算データを、復号化された信号として出力することができる。
【００１８】
本発明によれば、上記した所与の第１のモードにおいて、鍵の特定を困難にするために、第ｎのデータブロックの入力データと１つ前のデータブロックについての第（ｎ−１）の中間変換データとを関連付けて暗号処理を行った入力データについても、簡素な構成で復号処理を行うことができる。
【００１９】
また本発明に係る暗号装置は、前記演算データは、前記第ｎの変換データと前記第（ｎ−１）の中間変換データとの間で排他的論理輪演算されたデータであってもよい。
【００２０】
本発明によれば、構成を大幅に簡素化して、上記した効果を得ることができるようになる。
【００２１】
また本発明に係る暗号装置では、所与の第２のモードにおいて暗号処理を行う場合には、１又は複数回、前記第１及び第２の暗号処理回路による処理をループさせて得られた第ｎの変換データと、第（ｎ＋１）のデータブロックの入力データとに基づいて、第（ｎ＋１）の変換データを生成することができる。
【００２２】
本発明によれば、第１及び第２の暗号処理回路による処理を１又は複数回ループさせて得られた第ｎの変換データと第（ｎ＋１）のデータブロックの入力データとに基づいてについて暗号処理を行うようにしたので、回路規模を増大することなく鍵長を実質的に拡張することができ、機密性を大幅に向上させることができるようになる。
【００２３】
また本発明に係る暗号装置は、前記第（ｎ＋１）のデータブロックの入力データは、前記第ｎの変換データとの間で排他的論理和演算された演算データであってもよい。
【００２４】
本発明によれば、上記した所与の第２のモードにおいて、簡素な構成で第（ｎ＋１）のデータブロックの入力データを第ｎの変換データとに関連付けて暗号処理を行うことができるので、簡素な構成で鍵の特定をより困難にさせることができる。
【００２５】
また本発明に係る暗号装置は、所与の第２のモードにおいて復号処理を行う場合には、１又は複数回、前記第１及び第２の暗号処理回路にループさせて生成した第ｎの変換データと、前記第（ｎ−１）のデータブロックの入力データとに基づいて生成された演算データを、復号化された信号として出力することができる。
【００２６】
本発明によれば、上記した所与の第２のモードにおいて、鍵の特定を困難にするために前後のデータブロックに関連付けられて暗号処理が行われた入力データについても、簡素な構成で復号処理を行うことができる。
【００２７】
また本発明に係る暗号装置では、前記演算データは、第ｎの変換データに基づいて生成されたデータと、前記第（ｎ−１）のデータブロックの入力データとの排他的論理和演算結果であってもよい。
【００２８】
本発明によれば、上記した所与の第２のモードにおいて、第（ｎ＋１）のデータブロックの入力データを第ｎの変換データとに関連付けて暗号処理が行われた場合でも、簡素な構成で復号処理を行うことができる。
【００２９】
また本発明に係る暗号装置では、前記第１の暗号処理回路は、ＤＥＳの各段の暗号処理を８回繰り返して行い、前記第２の暗号処理回路は、ＤＥＳの各段の暗号処理を８回繰り返して行うことができる。
【００３０】
本発明によれば、ＤＥＳの暗号処理及び復号処理に適用することができ、回路規模の増大を招くことなく、一定の機密性が保証された暗号処理及び復号処理を高速化することができる。
【００３１】
また本発明に係る暗号装置は、前記第１の暗号処理回路で行われるＤＥＳの各段に対応した鍵を出力する第１の鍵出力回路と、前記第２の暗号処理回路で行われるＤＥＳの各段に対応した鍵を出力する第２の鍵出力回路とを含み、暗号処理においては、前記第１の鍵出力回路は、８個の鍵を１つずつ、前記第１の暗号処理回路で行われるＤＥＳの各段の処理のために出力し、前記第２の鍵出力回路は、８個の鍵を１つずつ、前記第２の暗号処理回路で行われるＤＥＳの各段の処理のために出力し、復号処理においては、前記第１の鍵出力回路は、暗号処理の場合と逆順に８個の鍵を１つずつ、前記第２の暗号処理回路で行われるＤＥＳの各段の処理のために出力し、前記第２の鍵出力回路は、暗号処理の場合と逆順に８個の鍵を１つずつ、前記第１の暗号処理回路で行われるＤＥＳの各段の処理のために出力することができる。
【００３２】
本発明によれば、ＤＥＳの暗号処理又は復号処理に適用する鍵については、鍵の適用順序を切り替えるだけでよいため、第１及び第２の鍵出力回路によりＤＥＳの各段に適用する鍵を保持させておき、第１及び第２の暗号処理回路に供給する鍵を切り替えることで、簡素な構成で暗号処理と復号処理を切り替えることができる。
【００３３】
また本発明に係る暗号装置は、ＤＥＳの鍵を複数セット保持し、所与の鍵選択信号に基づいていずれか１つのセットを選択する鍵選択回路を含み、前記第１及び第２の鍵出力回路は、前記所与の鍵選択信号に基づいて選択されたセットのＤＥＳの鍵を出力することができる。
【００３４】
本発明によれば、複数セットの鍵の中から選ばれた１つのセットの鍵を供給するようにしたので、鍵の特定をより困難にすることができる。しかも、適用する鍵のセットを切り替えるようにすることで、鍵の特定はより困難となる。また、１つのセットの鍵が特定された場合であっても、残りの鍵を適用することができるので機密性を維持することができる。
【００３５】
また本発明は、複数のデータブロックに分割された入力データに対し、共通鍵暗号化方式により生成された鍵をその都度変えて所与の演算処理を複数回行う処理を含む暗号処理を行う暗号装置であって、前記所与の演算処理を１又は複数回行う第１〜第Ｌ（Ｌは２以上の整数）の暗号処理回路を含み、第１のタイミングにおいて、前記第ｋ（１≦ｋ≦Ｌ−１、ｋは整数）の暗号処理回路は、第ｎ（ｎは２以上の整数）のデータブロックについて処理すると共に、前記第（ｋ＋１）の暗号処理回路は、第（ｎ−１）のデータブロックについて処理し、前記第１のタイミングの次の第２のタイミングでは、前記第ｋの暗号処理回路は、第（ｎ＋１）のデータブロックについて処理すると共に、前記第（ｋ＋１）の暗号処理回路は、前記第１のタイミングにおける前記第ｋの暗号処理回路の処理結果を用いて処理する暗号装置に関係する。
【００３６】
本発明においては、共通鍵暗号化方式により所与の演算処理を複数回行う処理を含む暗号処理を行う場合に、所与の演算処理を１又は複数回行う第１〜第Ｌの暗号処理回路を用いる。そして、そのうちの第ｋ及び第（ｋ＋１）の暗号処理回路については、パイプライン動作を行うように構成する。すなわち、第１のタイミングにおいて第ｋの暗号処理回路が処理した第ｎのデータブロックについての処理結果を、第１のタイミングの次の第２のタイミングにおいて第（ｋ＋１）の暗号処理回路が用いて演算処理を行う。
【００３７】
これにより、上述の演算処理の処理回数分だけ暗号処理回路を設ける必要がなくなり、回路規模を抑えて、パイプライン動作により高速に処理結果を得ることができる。
【００３８】
また本発明に係るデータ転送制御装置は、アイソクロナスデータを記憶するメモリと、外部に接続された所与の記憶装置にアクセスするためのインタフェース回路と、前記メモリと前記インタフェース回路との間で転送されるアイソクロナスデータに対し、暗号処理又は復号処理を行う上記いずれか記載の暗号装置とを含むことができる。
【００３９】
本発明によれば、リアルタイム性を有するアイソクロナスデータを保存する記憶装置に対して、高速な暗号処理又は復号処理を行って、アイソクロナスデータの機密性を向上させることができるデータ転送制御装置を提供することができる。
【００４０】
【発明の実施の形態】
以下、本発明の好適な実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００４１】
本実施形態に係る暗号装置は、入力データに対し、共通鍵暗号化方式により生成された鍵を用いた複数段の演算処理を行って変換データを生成する。本実施形態における暗号装置は、鍵の適用順序を切り替えることで、暗号処理及び復号処理を行うことができるようになっている。以下では、暗号装置の共通鍵暗号化方式がＤＥＳである場合について説明する。
【００４２】
１．  ＳＤＥＳの概要
まず、ＳＤＥＳ（Single DES）の処理内容の概要について説明する。
【００４３】
図１に、ＳＤＥＳによる暗号処理を行う暗号装置の機能ブロック構成の概要を示す。
【００４４】
暗号装置１０は、暗号処理部１２と、鍵生成処理部１４とを含む。
【００４５】
暗号処理部１２は、１データブロック当たり６４ビットの入力データ（平文）に対して、非線形変換と転置処理等を１６段繰り返し、変換データ（暗号文）を出力する。鍵生成処理部１４は、６４ビットの共通秘密鍵を用いて、暗号処理部１２の各段の処理で使用される４８ビットの（サブ）鍵Ｋ1〜Ｋ16を生成する。
【００４６】
図２に、暗号処理部１２の処理のフロー図を示す。
【００４７】
暗号処理部１２に、１データブロック単位で６４ビットの入力データＭが入力されると、該入力データＭに対し、初期転置（Initial Permutation：ＩＰ）を行ってランダム化する（ステップＳ１０）。初期転置は、図３に示すように、入力ビット位置に応じて、出力させるビット位置を変えて出力する。例えば、入力ビットの第５８ビットを出力の第１ビットに転置し、また入力の第１ビットを出力の第４０ビットに転置する。
【００４８】
初期転置が行われた初期転置データは、ビット分割され、上位３２ビットを第１段入力データＬ0、下位３２ビットを第１段入力データＲ0とする（ステップＳ１１、Ｓ１２）。
【００４９】
第１段入力データＲ0は、第１段の鍵Ｋ1を用いた非線形変換ｆにより非線形変換データｆ（Ｒ0，Ｋ1）に変換される（ステップＳ２０−１）。
【００５０】
図４に、非線形変換ｆの機能ブロック図を示す。
【００５１】
ここでは、第ｉ（１≦ｉ≦１６、ｉは整数）段の非線形変換ｆの機能ブロック図を示している。
【００５２】
第ｉ段入力データＲi-1は、拡大転置（Ｅ）により、拡大転置データＥＲi-1に変換される（ステップＳ５０）。拡大転置（Ｅ）は、図５に示すように、所定のビットを重複させて、３２ビットの第ｉ段入力データＲi-1を４８ビットの拡大転置データＥＲi-1に変換する。図５では、例えば入力の第１ビットを出力の第２ビット及び第４８ビットから出力させ、入力の第３２ビットを出力の第１ビット及び第４７ビットから出力させることを示している。
【００５３】
拡大転置データＥＲi-1は、第ｉ段用の鍵Ｋiとの間で排他的論理和演算（ＸＯＲ）が行われ（ステップＳ５１）、それぞれ６ビットずつＳＢＯＸ０〜７に入力される。ここで、第ｉ段用の鍵Ｋiは、図１に示すように暗号処理部１２に対応して設けられた鍵生成処理部１４により生成された第１段〜第１６段の鍵Ｋ1〜Ｋ16のうちの第ｉ段用のものである。
【００５４】
ＳＢＯＸ０〜７は、それぞれ入力された６ビットに対して、圧縮換字変換を行う（ステップＳ５２−０〜Ｓ５２−７）。
【００５５】
図６に、ＳＢＯＸ０において行われる圧縮換字変換について説明するための図を示す。
【００５６】
ＳＢＯＸ０では、ロウ番号及びカラム番号により４ビットデータが特定される。ロウ番号は、入力される６ビットのうち最初（最も左端）の１ビットと最後（最も右端）の１ビットとにより特定される。カラム番号は、入力される６ビットのうち残りの４ビットにより特定される。そして、これらロウ番号及びカラム番号により特定される４ビットデータを、入力された６ビットに対応させて変換する。
【００５７】
例えば、拡大転置データＥＲi-1と第ｉ段用の鍵Ｋiとの間で排他的論理和演算の結果が、６ビットの「１０１０００」とすると、ロウ番号は（１０）2であるため２行目が特定され、カラム番号は（０１００）2であるため４行目が特定される。したがって、ＳＢＯＸ０に入力された６ビットの「１０１０００」は、４ビットの「１１０１（＝１３）」に変換される。
【００５８】
ここではＳＢＯＸ０について説明したが、ＳＢＯＸ１〜ＳＢＯＸ７についてもそれぞれロウ番号及びカラム番号により同様の変換が行われる。
【００５９】
このようにしてＳＢＯＸ０〜７から出力された４ビットの変換データは、転置処理（Ｐ）が行われる（ステップＳ５３）。転置処理は、図７に示すように、入力ビット位置に応じて、出力させるビット位置を変えて出力する。例えば、入力ビットの第１６ビットを出力の第１ビットに転置し、また入力の第１ビットを出力の第９ビットに転置する。
【００６０】
この転置処理（Ｐ）の結果、３２ビットの非線形変換データＥＲi-1（＝ｆ（Ｒi-1，Ｋi））が生成される。
【００６１】
図２において、第１段入力データＲ0に基づいて生成された非線形変換データｆ（Ｒ0，Ｋ1）は、第１段入力データＬ0との間で排他的論理和演算が行われ（ステップＳ２１−１）、その演算結果が第２段入力データＲ1になる（ステップＳ２２−１）。
【００６２】
一方、第２段入力データＬ1は、第１段入力データＲ0になる（ステップＳ２３−１）。
【００６３】
以上のように第１段入力データＬ0、Ｒ0から第２段入力データＬ1、Ｒ1が生成されるまでの処理をＳＤＥＳの暗号処理の第１段の処理（所与の演算処理）とすると、同様の処理が第１６段まで行われる。各段の非線形変換においては、段ごとに適用される鍵が変更される。
【００６４】
その結果、第１６段で生成された第１６段入力データＬ16、Ｒ16は、以下のようになる（ステップＳ２３−１６、Ｓ２２−１６）。
【００６５】
Ｌ16＝Ｒ15                            ・・・（１）
Ｒ16＝Ｌ15（＋）ｆ（Ｒ15，Ｋ16）      ・・・（２）
ここで、（＋）は排他的論理和演算であることを示す。
【００６６】
そして、最後に上位３２ビットと下位３２ビットとを入れ替えて、入替データＬ16´を第１６段入力データＲ16にし（ステップＳ２４）、入替データＲ16´を第１６段入力データＬ16にして（ステップＳ２５）、６４ビットデータとして最終転置（ＩＰ-1）を行う（ステップＳ２６）。
【００６７】
最終転置（ＩＰ-1）は初期転置（ＩＰ）に対応しており、図８に示すように初期転置でビット位置を入れ替えたデータを、元に戻す。例えば入力の第１ビットを出力の第５８ビットに転置し、また入力の第４０ビットを出力の第１ビットに転置する。
【００６８】
その結果、変換データＰが生成される。
【００６９】
次に、このような暗号処理部１２の各段に、非線形変換を行うための鍵の生成フローについて説明する。各段に供給される鍵は、鍵生成処理部１４において生成される。
【００７０】
図９に、鍵生成処理部１４の処理のフロー図を示す。
【００７１】
鍵生成処理部１４に、６４ビットの共通秘密鍵Ｋ0が入力されると、該共通秘密鍵Ｋ0に対し、選択転置（ＰＣ−１）を行ってランダム化する（ステップＳ６０）。選択転置は、図１０に示すように、入力ビット位置に応じて、出力させるビット位置を変えて出力し、６４ビットの共通秘密鍵Ｋ0からパリティが除去された５６ビットの選択転置データを出力する。例えば、入力の第５７ビットを出力の第１ビットに転置し、また入力の第１ビットを出力の第８ビットに転置する。
【００７２】
選択転置が行われた選択転置データは、ビット分割され、上位２８ビットを第１段入力データＣ0、下位２８ビットを第１段入力データＤ0とする（ステップＳ６１、Ｓ６２）。
【００７３】
第１段入力データＣ0は左方向に巡回シフトが行われて、第２段入力データＣ1となる（ステップＳ６３−１、Ｓ６４−１）。また、第１段入力データＤ0は左方向に巡回シフトが行われて、第２段入力データＤ1となる（ステップＳ６５−１、Ｓ６６−１）。ここで、巡回シフトを行うビット数は、図１１に示すようにＤＥＳの処理段ごとに決められている。例えば、第１段の場合は１ビット、第３段の場合は２ビットだけ、巡回シフトが行われることを示している。
【００７４】
更に第１段では、巡回シフトされた結果生成された第２段入力データＣ1、Ｄ1に対して圧縮転置（ＰＣ−２）を行い（ステップＳ６７−１）、第１段の鍵Ｋ1が生成される。
【００７５】
圧縮転置（ＰＣ−２）では、それぞれ２８ビットの第２段入力データＣ1、Ｄ1からなる５６ビットのデータを４８ビットのデータに変換する。この圧縮転置は、図１２に示すように、入力ビット位置に応じて、出力させるビット位置を変えて出力する。例えば、入力の第１４ビットを出力の第１ビットに転置し、また入力の第１ビットを出力の第５ビットに転置する。
【００７６】
この圧縮転置が行われた４８ビットのデータが、第１段の鍵Ｋ1として、暗号処理部１２の第１段の非線形変換に用いられる。
【００７７】
以上のように第１段入力データＣ0、Ｄ0から第２段入力データＣ1、Ｄ1が生成されるまでの処理をＳＤＥＳの鍵生成の第１段の処理とすると、同様の処理が第１６段まで行われる。このように、各段において生成された鍵Ｋ1〜Ｋ16は、暗号処理部１２の暗号処理の各段に適用される。
【００７８】
図１３に、ＳＤＥＳによる復号処理を行う復号装置の機能ブロック構成の概要を示す。
【００７９】
復号装置７０は、復号処理部７２と、鍵生成処理部７４とを含む。
【００８０】
復号処理部７２は、１ブロック６４ビットの入力データ（暗号文）に対して、非線形変換と転置処理等を１６段繰り返し、変換データ（平文）を出力する。鍵生成処理部７４は、６４ビットの共通秘密鍵から、復号処理部７２の各段の処理で用いる４８ビットの（サブ）鍵Ｋ1〜Ｋ16を生成する。
【００８１】
復号処理部７２は、上述の暗号処理部１２と逆の手順をとることで実現することができる。この場合、復号処理部７２の各段の鍵は、暗号処理とは逆に鍵Ｋ16、Ｋ15、・・・、Ｋ1の順に適用される。
【００８２】
鍵生成処理部７４は、上述した鍵生成処理部１４の左巡回シフトを右巡回シフトに変更することで、各段ごとに鍵Ｋ16、Ｋ15、・・・、Ｋ1の順で生成される。
【００８３】
このように復号処理は、各段の処理内容に着目すれば、暗号処理の各段の処理内容と共通させることができる。本実施形態における暗号装置は、暗号処理を行う回路を共通化し、該回路を用いて復号処理を行うように構成している。
【００８４】
２．  暗号化モード
ＳＤＥＳでは、入力データとしての平文又は暗号文が複数のブロックに分割され、ブロックデータ単位で暗号処理又は復号処理が行われる。したがって、同じブロックデータの場合には、変換データも同じになる可能性があり、鍵が特定されやすくなる。そのため、ＳＤＥＳでは、ＣＢＣ（Cipher Block Chaining）モードやＣＦＢ（Cipher FeedBack）モード等の種々の暗号化モードが利用される。
【００８５】
図１４に、ＣＢＣモードの暗号処理と復号処理の機能ブロック図を示す。
【００８６】
暗号処理部８０では、ＤＥＳ演算部８２により、ブロックデータ単位に暗号処理が行われて変換データが生成される。ＤＥＳ演算部８２において暗号処理が行われる平文のｊ番目のデータブロックをＭjとすると、該データブロックＭjと１つ前のデータブロックの変換データＣj-1との間で排他的論理和演算が行われ、その演算結果がＤＥＳ演算部８２に入力される。ＤＥＳ演算部８２は、その演算結果について暗号処理を行って変換データＣjを生成する。変換データＣjは暗号文として出力されると共に、レジスタ８４に保持される。平文の次のデータブロックが入力されたときには、レジスタ８４に保持された前のブロックの変換データを用いて生成された演算データがＤＥＳ演算部８２に入力される。
【００８７】
復号処理部９０では、ＤＥＳ-1演算部９２により、ブロックデータ単位に復号処理が行われて変換データ（復号データ、平文）が生成される。ＤＥＳ-1演算部９２において復号処理が行われる暗号文のｊ番目のデータブロックをＣjとすると、該データブロックＣjがＤＥＳ-1演算部９２において復号化される。ＤＥＳ-1演算部９２で復号化された変換データに対して、１つ前のデータブロックの変換データＣj-1との間で排他的論理和演算を行った演算結果が、変換データ（復号データ）Ｍjとなる。変換データＣjは、暗号文として復号処理部９０に入力されると共に、レジスタ９４に保持される。暗号文の次のデータブロックが入力されたときには、レジスタ９４に保持された前のブロックの変換データを用いて生成された演算結果が復号文のデータブロックＭjとして出力される。
【００８８】
これにより、ブロックデータの内容が同じであっても、その前のデータブロックの内容に応じた演算結果に対して暗号処理が行われるため、複雑な構成をとることなく、鍵の特定を困難にすることができる。
【００８９】
３．  ＴＤＥＳの概要
ところでコンピュータ技術等の進歩を背景に、情報処理能力の向上が著しく、上述したＳＤＥＳの安全性には限界がある。そのため更に安全性を高めるために、ＳＤＥＳを３回ループさせるＴＤＥＳがある。
【００９０】
図１５に、ＴＤＥＳの処理フローの概要を示す。
【００９１】
ＴＤＥＳによる暗号処理は、ＤＥＳ演算部１００、１０２、１０４により、上述したＳＤＥＳの暗号処理又は復号処理を行うことで実現される。ＤＥＳ演算部１００は、６４ビットの平文の入力データに対し、暗号処理の各段の鍵を有する鍵セットＫ0Aを適用したＳＤＥＳの暗号処理を行う。ＤＥＳ演算部１０２は、ＤＥＳ演算部１００から出力された変換データに対し、復号処理の各段の鍵を有する鍵セットＫ0Bを適用したＳＤＥＳの復号処理（ＤＥＳ-1）を行う。ＤＥＳ演算部１０４は、ＤＥＳ演算部１０２から出力された変換データに対し、暗号処理の各段の鍵を有する鍵セットＫ0Cを適用したＳＤＥＳの暗号処理を行い、変換データＣを出力する。
【００９２】
こうすることで、鍵セットＫ0A、Ｋ0B、Ｋ0Cが全て異なる場合、鍵長は１９２（＝６４×３）ビットとなり、更に暗号強度を高めることができる。
【００９３】
なお、ＴＤＥＳの復号処理を行う場合には、図１５に示した暗号処理とは逆に、復号処理、暗号処理、復号処理の順に行えばよい。
【００９４】
４．  本実施形態における暗号装置
ＴＤＥＳの暗号処理及び復号処理は、上述のように機密性を十分に確保することができるが、ＳＤＥＳの回路に比べてその規模が増大し低コスト化を図ることができない。その一方で、ＳＤＥＳによる暗号化の強度でも機密性は十分保たれることから、対象とするデータの種類に応じて、ＳＤＥＳの暗号処理（復号処理）を行うＳＤＥＳモード又はＴＤＥＳの暗号処理（復号処理）を行うＴＤＥＳモードを切り替え可能であることが望ましい。
【００９５】
そこで本実施形態における暗号装置は、同様の構成の複数のＤＥＳ演算回路により、ＳＤＥＳの１６段分の処理をパイプライン動作で行うように構成している。すなわち、ＳＤＥＳの各段の処理を１又は複数回行う第１〜第Ｌ（Ｌは２以上の整数）のＤＥＳ演算回路（広義には暗号処理回路）を有し、そのうち少なくとも第ｋ（１≦ｋ≦Ｌ−１、ｋは整数）及び第（ｋ＋１）のＤＥＳ演算回路がパイプライン動作を行うことができる。
【００９６】
更に本実施形態における暗号装置は、上述のパイプライン動作を行うＳＤＥＳの処理を複数回ループさせることでＴＤＥＳによる暗号処理又は復号処理を実現する。こうすることで、回路規模の増大を招くことなくＴＤＥＳによる暗号処理及び復号処理を実現し、かつより高速なＳＤＥＳによる処理を実現する。
【００９７】
また本実施形態における暗号装置は、鍵生成処理を行わず、上述した鍵生成処理により予め生成した鍵を保持し、ＳＤＥＳの各段の処理に適用させるようにしている。これにより、パイプライン動作中に、鍵生成処理を行う必要がなくなるので、パイプライン処理の高速化を図ることができる。
【００９８】
４．１  ブロック構成
以下では、２（Ｌ＝２）段のＤＥＳ演算回路で構成され、これらがパイプライン動作を行う暗号装置について説明するが、３段以上（Ｌ≧３）のＤＥＳ演算回路を有し、これらがパイプライン動作を行うようにしてもよい。
【００９９】
図１６に、本実施形態における暗号装置のブロック構成図を示す。
【０１００】
本実施形態における暗号装置２００は、同様の構成のＤＥＳ演算回路（第１及び第２の暗号処理回路）２１０、２２０を含む。ＤＥＳ演算回路２１０、２２０は、それぞれ図２に示したＳＤＥＳの非線形変換や排他的論理和演算等の１段分の処理（所与の演算処理）を行う。暗号処理又は復号処理を（Ｍ＋Ｎ）（Ｍ、Ｎは正の整数）段の演算処理を行う場合に、ＤＥＳ演算回路２１０、２２０は、それぞれＭ段分の演算処理、Ｎ段分の演算処理を行うことができる。なおＳＤＥＳによる１６段分の処理を行う場合は、パイプライン動作により高速処理を行うため８段ずつ（Ｍ＝Ｎ＝８）行うことが望ましい。暗号装置２００では、８段ずつ行うものとして説明する。
【０１０１】
ＤＥＳ演算回路２１０には、プロローグ回路２３０が接続されている。ＤＥＳ演算回路２１０は、プロローグ回路２３０からの出力に基づいて、図２に示すＳＤＥＳの第１段〜第８段の各段の処理を行い、中間変換データを出力する。プロローグ回路２３０には、入力ラッチ回路２４０が接続されている。入力ラッチ回路２４０には、データブロック単位に入力データがラッチされる。プロローグ回路２３０は、入力ラッチ回路２４０に入力された６４ビットのデータに対して初期転置処理を行うことができる。或いはプロローグ回路は、入力ラッチ回路２４０に入力された６４ビットのデータと、ＤＥＳ演算回路２１０によって生成された中間変換データ等との排他的論理和演算結果に対して、初期転置処理を行うことができる。
【０１０２】
ＤＥＳ演算回路２２０には、エピローグ回路２５０が接続されている。ＤＥＳ演算回路２２０は、ＤＥＳ演算回路２１０で生成された中間変換データに基づいて、図２に示すＳＤＥＳの第９段〜第１６段の各段の処理を行い、変換データ（最終変換データ）を出力する。エピローグ回路２５０は、ＤＥＳ演算回路２２０によって生成された変換データに対して最終転置処理を行うことができる。或いはエピローグ回路２５０は、ＤＥＳ演算回路２２０によって生成された変換データに対して、ＤＥＳ演算回路２１０により生成された中間変換データ等と排他的論理和演算を行うことができる。
【０１０３】
暗号装置２００は、ＤＥＳ演算回路２１０、２２０に対して、ＳＤＥＳの各段の鍵を出力する第１及び第２の鍵出力回路２６０、２７０を含む。ここで、鍵出力回路は２つでなくてもよく、ＤＥＳ演算回路と同数でなくてもよい。
【０１０４】
暗号処理を行う場合、第１の鍵出力回路２６０は、ＤＥＳ演算回路２１０で処理される段数に応じて、図２に示すＳＤＥＳの第１段〜第８段の各段の鍵Ｋ1〜Ｋ8を出力する。第２の鍵出力回路２７０は、ＤＥＳ演算回路２２０で処理される段数に応じて、図２に示すＳＤＥＳの第９段〜第１６段の各段の鍵Ｋ9〜Ｋ16を出力する。
【０１０５】
復号処理を行う場合、第１の鍵出力回路２６０は、ＤＥＳ演算回路２２０に対してＳＤＥＳの第１段〜第８段の各段の鍵Ｋ1〜Ｋ8を、暗号処理とは逆順に出力する。第２の鍵出力回路２７０は、ＤＥＳ演算回路２１０に対してＳＤＥＳの第９段〜第１６段の各段の鍵Ｋ9〜Ｋ16を、暗号処理とは逆順に出力する。
【０１０６】
第１及び第２の鍵出力回路２６０、２７０がそれぞれ出力する鍵Ｋ1〜Ｋ16は、鍵セット選択回路２８０から供給される。
【０１０７】
鍵セット選択回路２８０は、ＴＤＥＳ鍵ボックス２８２と、ＳＤＥＳ鍵ボックス２８４とを含む。ＴＤＥＳ鍵ボックス２８２は、上述した鍵生成処理により予め生成されたＴＤＥＳの鍵を複数セット保持する。ＴＤＥＳの鍵は、ループさせる回数分のＳＤＥＳの鍵を有する。ＳＤＥＳの鍵は、１６段分の鍵を有する。ＳＤＥＳ鍵ボックス２８４は、上述した鍵生成処理により予め生成されたＳＤＥＳの鍵を複数セット保持する。
【０１０８】
ＴＤＥＳによる暗号処理又は復号処理を行う場合、鍵セット選択回路２８０は、ＴＤＥＳ鍵ボックス２８２に保持された複数セットのＴＤＥＳの鍵セットの中から１セットを選択し、ＳＤＥＳのループ回数に応じた１６段分の鍵を、第１及び第２の鍵出力回路２６０、２７０に出力する。
【０１０９】
暗号装置２００の各部は、制御回路２９０によって制御が行われる。制御回路２９０は、入力された各種制御信号により、上述した構成の暗号装置２００において、暗号処理と復号処理の切り替え制御、ＣＢＣモードの制御、或いはＳＤＥＳとＴＤＥＳの切り替え制御を行うことができるようになっている。
【０１１０】
ｘＲＳＴ信号は、リセット信号である。ｘＲＳＴ信号がアクティブになると、暗号装置２００を構成する各部の状態が初期状態になる。
【０１１１】
ｘＣＬＲ信号は、クリア信号である。ｘＣＬＲ信号がアクティブになると、例えばＤＥＳ演算回路２１０、２２０のレジスタの状態がリセットされる。
【０１１２】
ＤＥＳ＿ＷＡＩＴ信号は、ウェイト信号である。ＤＥＳ＿ＷＡＩＴ信号がアクティブになると、ＤＥＳ演算回路２１０、２２０の処理が中断する。ＤＥＳ＿ＷＡＩＴ信号は、例えばエピローグ回路２５０の出力をラッチするＦＩＦＯの状態に応じて生成される。
【０１１３】
ＥＸ＿ＯＲ信号は、ＣＢＣモード制御信号である。ＥＸ＿ＯＲ信号がアクティブになると、ＣＢＣモードにより暗号処理及び復号処理が行われる。そのためプロローグ回路２３０は、ＥＸ＿ＯＲ信号に応じて、ＣＢＣモードで生成された演算データ又は入力ラッチ回路２４０からの入力データを、ＤＥＳ演算回路２１０に出力することができるようになっている。またエピローグ回路２５０は、ＥＸ＿ＯＲ信号に応じてＣＢＣモードで生成された演算データ又はＤＥＳ演算回路２２０からの出力データを出力する。
【０１１４】
なおＣＢＣモードにおいて、初期化状態のときには、プロローグ回路２３０は初期化ベクタＩＶを用いて入力データとの間で排他的論理和演算を行って、入力データの値がそのまま暗号処理又は復号処理が行われないようにしている。同様に、初期化状態のときには、エピローグ回路２５０は初期化ベクタＩＶを用いてＤＥＳ演算回路２２０の出力データとの間で排他的論理和演算を行う。
【０１１５】
ＥＮ＿ｘＤＥ信号は、暗号−復号切替信号である。ＥＮ＿ｘＤＥ信号がアクティブになると、プロローグ回路２３０、ＤＥＳ演算回路２１０、２２０、エピローグ回路２５０において、図２に示す暗号処理の各処理が行われる。また第１及び第２の鍵出力回路２６０、２７０は、暗号処理の順序で各段の鍵を出力する。
【０１１６】
ＴＲＩＰＬＥ信号は、ＳＤＥＳ−ＴＤＥＳ切替信号である。ＴＲＩＰＬＥ信号がアクティブになると、ＴＤＥＳの暗号処理又は復号処理が行われる。ＴＲＩＰＬＥ信号は、例えば暗号処理又は復号処理の対象となるデータを保存するハードディスク装置のセクタ番号に基づいて切り替えることができる。この場合、セクタによってＳＤＥＳにより暗号化されたデータとＴＤＥＳにより暗号化されたデータとを混在させることができ、鍵の解読をより困難にし、機密性を大幅に高めることができる。
【０１１７】
ＴＲＩ＿ＣＯＵＮＴ信号は、ＴＤＥＳのループカウント信号である。ＴＲＩ＿ＣＯＵＮＴ信号により、ＴＤＥＳによるＳＤＥＳのループ回数が指定される。ＴＲＩ＿ＣＯＵＮＴ信号に応じて、鍵セット選択回路２８０は保持されている複数セットの鍵から、１セットを選択する。このようなＴＲＩ＿ＣＯＵＮＴ信号は、制御回路２９０において生成される。
【０１１８】
ＫＥＹ＿ＮＵＭＢＥＲ信号は、ＳＤＥＳの段数カウント信号である。ＫＥＹ＿ＮＵＭＢＥＲ信号により、ＳＤＥＳの段数が指定され、各段に対応した鍵が選択される。
【０１１９】
ＫＥＹ＿ＳＥＬ信号は、鍵選択信号である。ＫＥＹ＿ＳＥＬ信号により、鍵セット選択回路２８０に予めＴＤＥＳ鍵ボックス２８２又はＳＤＥＳ鍵ボックス２８４に記憶された複数セットの鍵の中から１セットが選択される。
【０１２０】
４．２  動作の概要
次に、本実施形態における暗号装置２００の動作の概要を説明する。
【０１２１】
図１７に、暗号装置２００におけるＳＤＥＳの暗号処理の流れを模式的に示す。ただし図１６に示す暗号装置２００と同一部分には同一符号を付し、適宜説明を省略する。
【０１２２】
この場合、ＤＥＳ演算回路２１０は、第ｎのデータブロックに対して図２に示すＳＤＥＳの第１段の処理を行う。この処理結果は７回ループされ、ＤＥＳ演算回路２１０は、ＳＤＥＳの第１段〜第８段の処理を行う。このとき第１の鍵出力回路２６０は、ＫＥＹ＿ＮＵＭＢＥＲ信号に応じて、各段に対応した鍵を供給する。その結果、ＤＥＳ演算回路２１０は、ＳＤＥＳの第８段までの結果を、第ｎの中間変換データとして出力する。
【０１２３】
ＤＥＳ演算回路２２０は、第ｎの中間変換データに対して、図２に示すＳＤＥＳの第９段の処理を行う。この処理結果は７回ループされ、ＤＥＳ演算回路２２０は、ＳＤＥＳの第９段〜第１６段の処理を行う。このとき第２の鍵出力回路２７０は、ＫＥＹ＿ＮＵＭＢＥＲ信号に応じて、各段に対応した鍵を供給する。その結果、ＤＥＳ演算回路２２０は、ＳＤＥＳの第１６段までの結果を、第ｎの変換データとして出力する。
【０１２４】
プロローグ回路２３０は、ＤＥＳ演算回路２１０に、第（ｎ−１）の中間変換データと第ｎのデータブロックの入力データとに基づいて第ｎの中間変換データを生成させる。
【０１２５】
より具体的には、プロローグ回路２３０は、第ｎのデータブロックの入力データに対して初期転置処理を行った演算データを、ＤＥＳ演算回路２１０に対して出力する。ここで転置処理の対象となるのは、ＳＤＥＳのＣＢＣモード（所与の第１のモード）ではない場合は入力ラッチ回路２４０の入力データであり、ＳＤＥＳのＣＢＣモード（所与の第１のモード）の場合は該入力データと１つ前のデータブロックの第（ｎ−１）の中間変換データとの排他的論理和演算結果である。なおＣＢＣモードにおいて、入力データは、初期化時では初期化ベクタＩＶとの間の排他的論理和演算結果に対して転置処理が行われる。
【０１２６】
エピローグ回路２５０は、ＤＥＳ演算回路２２０から出力された第ｎの変換データに対して、プロローグ回路２３０で行われた初期転置処理に対応した最終転置処理を行う。
【０１２７】
このような本実施形態における暗号装置２００は、（Ｍ＋Ｎ）（Ｍ＝Ｎ＝８）段の処理により変換データを生成するために、ＤＥＳ演算回路２１０、２２０によるパイプライン動作を行う。
【０１２８】
図１８に、パイプライン動作について説明するための図を示す。
【０１２９】
入力データがブロック単位に分割され、第１のデータブロックから順に暗号処理が行われるものとする。この場合、第１のタイミングでは、ＤＥＳ演算回路２１０は、第ｎのデータブロックについて第ｎの中間変換データを生成し、ＤＥＳ演算回路２２０は、１つ前のデータブロックである第（ｎ−１）の中間変換データに基づいて第（ｎ−１）の変換データを生成する。そして、次の第１のタイミングの次の第２のタイミングでは、ＤＥＳ演算回路２１０は第ｎのデータブロックの次のブロックである第（ｎ＋１）のデータブロックについて第（ｎ＋１）の中間変換データを生成し、ＤＥＳ演算回路２２０は第１のタイミングでＤＥＳ演算回路２１０により生成された第ｎの中間変換データに基づいて第ｎの変換データを生成する。
【０１３０】
このようなパイプライン動作により、第１及び第２のタイミングを所与のクロックの１周期とすると、１クロックごとにＳＤＥＳにより暗号化された変換データを生成することができる。したがって、回路規模の縮小化と、処理の高速化とを図ることができる。
【０１３１】
またＣＢＣモードでは、ＳＤＥＳの第１６段の処理結果を次のデータブロックの入力に反映させると、ＤＥＳ演算回路２１０の処理速度の低下を招く。そのため、ＳＤＥＳの第８段の処理結果（第（ｎ−１）の中間変換データ）を用いることで、鍵の機密性を高めると共に処理速度の低下を防止することができる。
【０１３２】
図１９に、暗号装置２００におけるＳＤＥＳの復号処理の流れを模式的に示す。ただし図１７に示す暗号装置２００と同一部分には同一符号を付し、適宜説明を省略する。
【０１３３】
この場合、ＤＥＳ演算回路２１０は、第ｎのデータブロックに対して図２に示すＳＤＥＳの第１段の処理を行う。この処理結果は７回ループされ、ＤＥＳ演算回路２１０は、ＳＤＥＳの第１段〜第８段の処理を行う。このとき第２の鍵出力回路２７０が、ＫＥＹ＿ＮＵＭＢＥＲ信号に応じて、暗号処理とは逆順に各段に対応した鍵を供給する。その結果、ＤＥＳ演算回路２１０は、ＳＤＥＳの第８段までの結果を、第ｎの中間変換データとして出力する。
【０１３４】
ＤＥＳ演算回路２２０は、第ｎの中間変換データに対して、図２に示すＳＤＥＳの第９段の処理を行う。この処理結果は７回ループされ、ＤＥＳ演算回路２２０は、ＳＤＥＳの第９段〜第１６段の処理を行う。このとき、第１の鍵出力回路２６０は、ＫＥＹ＿ＮＵＭＢＥＲ信号に応じて、暗号処理とは逆順に各段に対応した鍵を供給する。その結果、ＤＥＳ演算回路２２０は、ＳＤＥＳの第１６段までの結果を、第ｎの変換データとして出力する。
【０１３５】
プロローグ回路２３０は、入力ラッチ回路２４０から入力された第ｎのデータブロックの入力データに対して初期転置処理を行った演算データを、ＤＥＳ演算回路２１０に対して出力する。
【０１３６】
エピローグ回路２５０は、第ｎの変換データと、１つ前のデータブロックの第（ｎ−１）の中間変換データとに基づいて生成された演算データを復号化された信号として出力させる。
【０１３７】
より具体的には、エピローグ回路２５０は、ＤＥＳ演算回路２２０から出力された第ｎの変換データに対して、プロローグ回路２３０で行われた初期転置処理に対応した最終転置処理を行う。ここで最終転置処理が行われたデータは、ＳＤＥＳのＣＢＣモード（所与の第１のモード）ではない場合はそのまま変換データとして出力され、ＳＤＥＳのＣＢＣモード（所与の第１のモード）の場合は１つ前のデータブロックの第（ｎ−１）の中間変換データとの間で排他的論理和演算が行われて変換データとして出力される。なおＣＢＣモードにおいて、転置処理が行われたデータは、初期化時には初期化ベクタＩＶとの間で排他的論理和演算が行われる。
【０１３８】
なお、この場合においても図１８に示すようなパイプライン動作により、復号処理を行うことができる。
【０１３９】
図２０に、暗号装置２００におけるＴＤＥＳの暗号処理の流れを模式的に示す。ただし図１７に示す暗号装置２００と同一部分には同一符号を付し、適宜説明を省略する。
【０１４０】
プロローグ回路２３０は、第ｎのデータブロックに対して初期転置処理を行った演算データを、ＤＥＳ演算回路２１０に対して出力する。このとき、次のデータブロックの第（ｎ＋１）のデータブロックについて出力するのに先立って、エピローグ回路２５０から出力された演算結果を用いて２回ループさせる。なおＴＤＥＳのＣＢＣモード（所与の第２のモード）の場合は、第ｎのデータブロックについてのＳＤＥＳの１回目の入力のときに、１つ前の第（ｎ−１）のデータブロックについての演算結果との間で行われた排他的論理和演算結果が転置処理対象となる。なお、ＴＤＥＳのＣＢＣモードにおいても、初期化時には初期化ベクタＩＶが適用される。
【０１４１】
エピローグ回路２５０は、ＤＥＳ演算回路２２０から出力された第ｎの変換データに対して、プロローグ回路２３０で行われた初期転置処理に対応した最終転置処理を行う。
【０１４２】
図２１に、暗号装置２００におけるＴＤＥＳの復号処理の流れを模式的に示す。ただし図２０に示す暗号装置２００と同一部分には同一符号を付し、適宜説明を省略する。
【０１４３】
プロローグ回路２３０は、第ｎのデータブロックに対して初期転置を行った演算データをＤＥＳ演算回路２１０に対して出力する。このとき、次の第（ｎ＋１）のデータブロックについて出力するのに先立って、エピローグ回路２５０から出力された演算結果を用いて２回ループさせる。
【０１４４】
エピローグ回路２５０は、ＤＥＳ演算回路２２０から出力された第ｎの変換データに対して、プロローグ回路２３０で行われた初期転置処理に対応した最終転置処理を行う。転置処理が行われたデータは、ＳＤＥＳの３回目のループの出力の場合には、変換データとして出力される。その際、ＴＤＥＳのＣＢＣモード（所与の第２のモード）ではない場合はそのまま変換データとして出力され、ＴＤＥＳのＣＢＣモード（所与の第２のモード）の場合は１つ前のデータブロックの第（ｎ−１）のデータブロックの入力データとの間で排他的論理和演算が行われて出力される。なおＣＢＣモードにおいて、転置処理が行われたデータは、初期化時には初期化ベクタＩＶとの間で排他的論理和演算が行われる。
【０１４５】
このようにＳＤＥＳの処理回路を流用してＴＤＥＳによる暗号処理及び復号処理を行うことができ、回路規模の増大を回避することができる。
【０１４６】
なお、ＤＥＳ演算回路（暗号処理回路）を３段以上の構成で、ＳＤＥＳの暗号処理又は復号処理を行うように構成しても、同様にＳＤＥＳの処理回路を流用してＴＤＥＳによる暗号処理及び復号処理を行うことができる。
【０１４７】
例えば図２２（Ａ）に示す第１〜第３の暗号処理回路により、ＳＤＥＳのＣＢＣモードの暗号処理を行う場合、図２２（Ｂ）に示すようなパイプライン動作で変換データが生成される。また例えば図２３（Ａ）に示す第１〜第３の暗号処理回路により、ＳＤＥＳのＣＢＣモードの復号処理を行う場合には、図２３（Ｂ）に示すようなパイプライン動作で、暗号処理されたデータを復号することができる。
【０１４８】
また例えば図２４（Ａ）に示す第１〜第４の暗号処理回路により、ＳＤＥＳのＣＢＣモードの暗号処理を行う場合、図２４（Ｂ）に示すようなパイプライン動作で変換データが生成される。また例えば図２５（Ａ）に示す第１〜第４の暗号処理回路により、ＳＤＥＳのＣＢＣモードの復号処理を行う場合には、図２５（Ｂ）に示すようなパイプライン動作で、暗号処理されたデータを復号することができる。
【０１４９】
このような複数の暗号処理回路をパイプライン動作により高速処理を行うＳＤＥＳの処理回路を上述のように３回繰り返すことで、ＴＤＥＳによる暗号処理及び復号処理を行うことができ、回路規模の増大を回避することができる。
【０１５０】
４．３  複数の鍵セット
暗号装置２００は、予め鍵生成処理により生成された鍵を複数セット分、鍵ボックスに保持する。そして、鍵選択信号ＫＥＹ＿ＳＥＬにより選択した１セットを用いて、ＳＤＥＳの暗号処理及び復号処理を行うことができる。またＴＤＥＳの場合には、ＳＤＥＳの処理の各回ごとに鍵セットを選択することができる。
【０１５１】
図２６に、鍵選択処理を行う暗号装置の構成の概要を示す。
【０１５２】
ただし、図１６に示す暗号装置２００と同一部分には同一符号を付し、適宜説明を省略する。
【０１５３】
暗号装置２００において、ＤＥＳ演算回路２１０、２２０により、入力データに対して図２に示すＳＤＥＳの第１段〜第１６段の処理が行われ、変換データが生成される。ＤＥＳ演算回路２１０、２２０の各段の処理に必要な鍵は、鍵セット選択回路２８０から供給される。
【０１５４】
鍵セット選択回路２８０は、鍵生成部３００により予め複数の共通秘密鍵ＫＥＹ＿Ａ、ＫＥＹ＿Ｂ、・・・、ＫＥＹ＿Ｎから生成された１６段分の鍵をそれぞれ保持する。そして、鍵選択信号ＫＥＹ＿ＳＥＬにより、いずれか１つの鍵セットが選択され、ＤＥＳ演算回路２１０、２２０の各段に対して、選択鍵ＫＥＹ＿Ｎ１、ＫＥＹ＿Ｎ２、・・・、ＫＥＹ＿Ｎ１６として供給される。
【０１５５】
このように、予め複数の鍵セットを保持しておき、鍵選択信号ＫＥＹ＿ＳＥＬにより選択したいずれか１つの鍵セットから鍵を供給するようにしたので、たとえ１つの鍵が解読されたとしても他の鍵を用いることができるので暗号装置の暗号強度を維持することができる。しかも、鍵セットをセクタ番号等に基づいて切り替えるように構成することで、鍵の解読がより困難となり、アルゴリズムを変更することなく容易に機密性を向上させることができる。また本実施形態の場合、暗号処理（復号処理）と同時に鍵生成処理を行う場合に比べて、回路規模を抑えてパイプライン動作による処理の高速化を図ることができる。
【０１５６】
図２７に、暗号装置２００の鍵セット選択回路２８０について説明するための図を示す。
【０１５７】
ただし、図１６に示す暗号装置２００と同一部分には同一符号を付し、適宜説明を省略する。
【０１５８】
本実施形態における暗号装置２００の鍵セット選択回路２８０は、ＴＤＥＳ用の第１〜第ｐ（ｐは２以上の整数）のＴＤＥＳ鍵セットを保持するＴＤＥＳ鍵ボックス２８２と、ＳＤＥＳ用の第１〜第ｑ（ｑは２以上の整数）複数の鍵セットを保持するＳＤＥＳ鍵ボックス２８４とを備え、ＴＲＩＰＬＥ信号、ＴＲＩ＿ＣＯＵＮＴ信号、鍵選択信号ＫＥＹ＿ＳＥＬに応じて、各ボックスのいずれか１つの鍵セットを選択する。そして、暗号処理用の第１段〜第８段の鍵を第１の鍵出力回路２６０に出力し、第９段〜第１６段の鍵を第２の鍵出力回路２７０に出力する。
【０１５９】
第１の鍵出力回路２６０は、ＥＮ＿ｘＤＥ信号により暗号処理を行う場合には、ＫＥＹ＿ＮＵＭＢＥＲ信号により特定されるＳＤＥＳの処理段に応じた鍵をＤＥＳ演算回路２１０に供給する。また第１の鍵出力回路２６０は、復号処理を行う場合には、ＫＥＹ＿ＮＵＭＢＥＲ信号により特定されるＳＤＥＳの処理段に応じた鍵をＤＥＳ演算回路２２０に供給する。
【０１６０】
第２の鍵出力回路２６０は、ＥＮ＿ｘＤＥ信号により暗号処理を行う場合には、ＫＥＹ＿ＮＵＭＢＥＲ信号により特定されるＳＤＥＳの処理段に応じた鍵をＤＥＳ演算回路２２０に供給する。また第２の鍵出力回路２６０は、復号処理を行う場合には、ＫＥＹ＿ＮＵＭＢＥＲ信号により特定されるＳＤＥＳの処理段に応じた鍵をＤＥＳ演算回路２１０に供給する。
【０１６１】
４．４  回路動作フローの一例
図２８に、本実施形態における暗号装置２００の回路動作フローの一例を示す。
【０１６２】
ここでは暗号処理及び復号処理の対象となるデータが、ハードディスク装置に記憶され、アクセスするデータブロックのカウント数に応じて、ＴＤＥＳ又はＳＤＥＳかを切り替えることができる場合について説明する。
【０１６３】
制御回路２９０では、入力ラッチ回路２４０から入力データを入力させると、アクセスするデータブロックのカウント数を管理するデータブロックカウント値ｄａｔａ＿ｃｎｔがインクリメントされる（ステップＳ４００）。そして、インクリメントされたデータブロックカウント値ｄａｔａ＿ｃｎｔに応じて、ＤＥＳ演算回路２１０、２２０などが制御される（ステップＳ４０１）。より具体的には、データブロックカウント値ｄａｔａ＿ｃｎｔが所与のエンド値ＥＮＤのとき、データブロックカウント値ｄａｔａ＿ｃｎｔは「０」にリセットされる。またデータブロックカウント値ｄａｔａ＿ｃｎｔが、ＴＤＥＳの開始データブロック値と一致したとき、ＴＲＩＰＬＥ信号をアクティブにする。更に、データブロックカウント値ｄａｔａ＿ｃｎｔが、ＴＤＥＳの終了データブロック値と一致したときには、ＴＩＲＰＬＥ信号をインアクティブにする。
【０１６４】
次に、制御回路２９０は、ＴＲＩ＿ＣＯＵＮＴ信号を「０」に設定し（ステップＳ４０２）、ＫＥＹ＿ＮＵＭＢＥＲ信号を「０」に設定する（ステップＳ４０３）。ＴＲＩ＿ＣＯＵＮＴ信号を「０」に設定した場合、ＴＤＥＳの処理においてＳＤＥＳの１回目の処理であることを示す。またＫＥＹ＿ＮＵＭＢＥＲ信号を「０」に設定した場合、ＳＤＥＳの第１段の処理であることを示す。
【０１６５】
その後、ＫＥＹ＿ＮＵＭＢＥＲ信号により示される段数に応じて、ＤＥＳ演算回路２１０又はＤＥＳ演算回路２２０により、ＳＤＥＳの１段分の処理が行われる（ステップＳ４０４）。
【０１６６】
ＳＤＥＳの１段分の処理が終了すると、ＫＥＹ＿ＮＵＭＢＥＲ信号が「１６」になっているか否かを検出し、「１６」になっていないとき（ステップＳ４０５：Ｎ）、ＫＥＹ＿ＮＵＭＢＥＲ信号により指定されるＳＤＥＳの段数をインクリメントし（ステップＳ４０６）、再びステップＳ４０４のＤＥＳ演算を行う。一方、ＫＥＹ＿ＮＵＭＢＥＲ信号が「１６」のとき（ステップＳ４０５：Ｙ）、ＴＲＩＰＬＥ信号が「０」で、かつＴＲＩ＿ＣＯＵＮＴ信号が「２」であるか否かを検出する。そして、ＴＲＩＰＬＥ信号が「０」で、かつＴＲＩ＿ＣＯＵＮＴ信号が「２」ではないとき（ステップＳ４０７：Ｎ）、ＴＲＩ＿ＣＯＵＮＴ信号で示されるＳＤＥＳのループ回数をインクリメントし（ステップＳ４０８）、再びステップＳ４０３に戻って、次のループのＳＤＥＳの処理を開始する。また、ＴＲＩＰＬＥ信号が「０」で、かつＴＲＩ＿ＣＯＵＮＴ信号が「２」であるとき（ステップＳ４０７：Ｙ）、ＴＤＥＳの処理が終了したと判断して、ＤＥＳ演算回路２２０の処理結果を用いて変換データを出力する。
【０１６７】
このような暗号処理（復号処理）に対して鍵を供給する鍵選択処理においては、鍵セット選択回路２８０により、鍵選択信号ＫＥＹ＿ＳＥＬに基づいて鍵セットが選択される（ステップＳ４５０）。
【０１６８】
より具体的には、ＴＲＩＰＬＥ信号がアクティブのとき、鍵選択信号ＫＥＹ＿ＳＥＬとＴＲＩ＿ＣＯＵＮＴ信号とに基づいて、関数Ｆｕｎｃｔｉｏｎ＿Ｔにより、鍵選択値ｋｓを求める。ＴＲＩＰＬＥ信号がインアクティブのとき、鍵選択信号ＫＥＹ＿ＳＥＬに基づいて、関数Ｆｕｎｃｔｉｏｎ＿Ｓにより鍵選択値ｋｓを求める。関数Ｆｕｎｃｔｉｏｎ＿Ｓは、例えば鍵選択信号ＫＥＹ＿ＳＥＬを、所与のビット操作により鍵選択値ｋｓを出力する。
【０１６９】
そして、関数Ｆｕｎｃｔｉｏｎ＿Ｒにより、鍵選択値ｋｓに対応する鍵セットを選択する（ステップＳ４５１）。ＴＤＥＳの場合は、ＴＤＥＳ鍵ボックス２８２に保持された複数の鍵セットの中から選択される。ＳＤＥＳの場合は、ＳＤＥＳ鍵ボックス２８４に保持された複数の鍵セットの中から選択される。
【０１７０】
このようにして鍵セット選択回路２８０によって選択された鍵セットの中から、ＫＥＹ＿ＮＵＭＢＥＲ信号により示されるＳＤＥＳの処理段数に応じた鍵ＫＥＹが供給される（ステップＳ４５２）。
５．  データ転送制御装置
図２９に、本実施形態におけるインタフェースＩＣの構成の概要を示す。
【０１７１】
本実施形態におけるインタフェースＩＣ８００は、ＤＥＳ処理回路８１０と、メモリ８１２と、インタフェース回路８１４と、鍵セット選択回路８２０とを含む。ＤＥＳ処理回路８１０は、上述した暗号装置２００と同等の機能を有する。鍵セット選択回路８２０は、上述した暗号装置２００の鍵セット選択回路２８０と同等の機能を有する。インタフェースＩＣ８００は、外部のハードディスク装置８３０へのアクセスデータの制御を行う。より具体的には、インタフェースＩＣ８００は、メモリ８１２に書き込まれたデジタルデータについてＳＤＥＳ又はＴＤＥＳによる暗号処理を行って、インタフェース回路８１４を介し、ハードディスク装置８３０へのデジタルデータの書き込みを行う。またインタフェースＩＣ８００は、インタフェース回路８１４を介しハードディスク装置８３０から読み出された保存データを、ＳＤＥＳ又はＴＤＥＳによる復号処理を行ってデジタルデータに復号化し、メモリ８１２にバッファリングする。
【０１７２】
このようにハードディスク装置等の大容量記憶媒体にアクセスするためのインタフェースＩＣに上述した暗号装置２００を適用させることで、大容量のアクセスデータについても、高い機密性を維持したまま高速なアクセス処理を行わせることができる。
【０１７３】
図３０に、本実施形態におけるインタフェースＩＣの構成例を示す。
【０１７４】
インタフェースＩＣ８００は、汎用シリアルバスとしてのＩＥＥＥ１３９４シリアルバスを介して転送されるデータのＩＤＥ（Integrated Device Electronics）ストレージ８５０に対するアクセス制御を行う。ＩＥＥＥ１３９４シリアルバス上では、アイソクロナス（Isochronous）転送又はアシンクロナス（Asynchronous）転送が行われる。アイソクロナス転送が行われるアイソクロナスデータは、例えばリアルタイム性が要求される画像データである。アシンクロナス転送が行われるアシンクロナスデータは、例えばコマンドデータである。
【０１７５】
ＩＥＥＥ１３９４シリアルバスを介して受信されたデータは、ＩＥＥＥ１３９４物理層回路８６２及びＩＥＥＥ１３９４リンク層回路８６４を介し、第１のＤＭＡＣ（Direct Memory Access Controller）８６６に入力される。第１のＤＭＡＣ８６６は、ＤＴＣＰ処理回路８６８において、ＩＥＥＥ１３９４の暗号化規格であるＤＴＣＰ（Digital Transmission Content Protection）により復号化し、パケットメモリインタフェース８７０を介してＳＲＡＭ（Static Random Access Memory）で構成されたパケットメモリ８７２に転送する。パケットメモリ８７２では、アイソクロナスデータとアシンクロナスデータの記憶領域が区分され、更にそれぞれのデータについて送信データ領域と受信データ領域とを有している。パケットメモリインタフェース８７０は、格納するデータを仕分けして、対応する記憶領域に格納する。
【０１７６】
パケットメモリ８７２に記憶されたデータは、パケットメモリインタフェース８７０を介して、第２のＤＭＡＣ８７４により読み出される。第２のＤＭＡＣ８７４は、ＤＥＳ処理回路８７６でＳＤＥＳ又はＴＤＥＳにより暗号化する。ＤＥＳ処理回路８７６は、本実施形態における暗号装置を採用することができ、例えばＩＤＥストレージ８５０に書き込む際のセクタ番号に応じて、ＳＤＥＳ又はＴＤＥＳで暗号化する。なお暗号化するデータは、パケットメモリ８７２のアイソクロナス受信データ領域に記憶されるアイソクロナス受信データのみである。
【０１７７】
インタフェースＩＣ８００の外部には、ＳＤＲＡＭ（Synchronous DRAM）により構成されたキャッシュメモリ８８０が接続されている。第２のＤＭＡＣ８７４は、ＤＥＳ処理回路８７６により暗号化したデータを、キャッシュメモリインタフェース８７８を介して、キャッシュメモリ８８０に格納する。これにより、アイソクロナス受信データの機密性を維持することができる。
【０１７８】
一方、同様にしてパケットメモリ８７２のアシンクロナス受信データ領域に入っているアシンクロナス受信データは、図示しないホスト（例えばＣＰＵ）によりデコードされ、コマンドの解析が行われる。
【０１７９】
キャッシュメモリ８８０は、送信データ記憶領域と受信データ記憶領域とを有しており、第２のＤＭＡＣ８８４により暗号化されたアイソクロナス受信データは受信データ記憶領域に書き込まれる。
【０１８０】
その後、第３のＤＭＡＣ８８２が、キャッシュメモリ８８０からアイソクロナス受信データを読み出し、ＩＤＥインタフェース８８４を介してＩＤＥストレージ８５０に書き込む。
【０１８１】
このようにキャッシュメモリ８８０を設けることで、アイソクロナスデータをバッファリングすることができるので、ＩＤＥストレージ８５０のアクセス時間があった場合でも、所定の転送レートで転送されるデータの連続性を保証することができる。
【０１８２】
これに対して、ＩＥＥＥ１３９４シリアルバスを介して送信する場合、まず第３のＤＭＡＣ８８２により、ＩＤＥストレージ８５０からデータが読み出される。ＩＤＥストレージ８５０から読み出されたデータは、ＳＤＥＳ又はＴＤＥＳにより暗号化されており、キャッシュメモリインタフェース８７８を介して、キャッシュメモリ８８０の送信データ領域に格納される。第２のＤＭＡＣ８７４は、キャッシュメモリ８８０の送信データ領域に記憶されたデータを読み出し、ＤＥＳ処理回路８７６で復号化して、パケットメモリ８７２のアイソクロナス送信データ領域に格納する。第１のＤＭＡＣ８６６は、パケットメモリ８７２のアイソクロナス送信データ領域に記憶されたアイソクロナスデータを読み出す。読み出されたアイソクロナスデータは、ＤＴＣＰ処理回路８６８によりＤＴＣＰによる暗号化が行われ、アイソクロナスヘッダを付加してＩＥＥＥ１３９４シリアルバスに出力される。
【０１８３】
メモリポインタ管理回路８８６は、第１及び第２のＤＭＡＣ８６６、８７４の制御を行う。より具体的には、第１及び第２のＤＭＡＣ８６６、８７４がそれぞれ読み出し用ポインタ及び書き込み用ポインタを有しており、メモリポインタ管理回路８８６は、両ポインタを管理して第１及び第２のＤＭＡＣ８６６、８７４の動作制御を行う。
【０１８４】
このような構成のインタフェースＩＣ８００は、システムコントローラ８８８により制御される。
【０１８５】
６．  その他
上述の実施形態では、暗号方式としてＳＤＥＳ又はＴＤＥＳを採用した場合について説明したが、これらに限定されるものではない。例えば暗号方式は、ＡＥＳ（Advanced Encryption Standard）であってもよい。ＡＥＳは、ＤＥＳの後継共通鍵暗号化方式である。
【０１８６】
図３１に、ＡＥＳの暗号処理を行う暗号装置の機能ブロック図の一例を示す。
【０１８７】
入力データ長は、１２８ビット、１９２ビット或いは２５６ビットがサポートされる。入力データは、まずＢＹＴＥ＿ＳＵＢ部９００に入力される。ＢＹＴＥ＿ＳＵＢ部９００は、ＳＢＯＸを利用して８ビットワード単位でビット変換を行う。ＢＹＴＥ＿ＳＵＢ部９００でビット変換されたデータは、ＳＨＩＦＴＲＯＷ部９０２に入力される。ＳＨＩＦＴＲＯＷ部９０２は、「ＡＢＣＤ」というデータを「ＤＡＢＣ」というデータに変換するように、８ビットワード単位でローテンションを行う。ローテンションされたデータは、ＭＩＸＣＯＬ部９０４に入力される。ＭＩＸＣＯＬ部９０４は、８ビットワード単位で乗算を行う。ＡＤＤＫＥＹ部９０６は、ＭＩＸＣＯＬ部９０４から出力されたデータと共通秘密鍵を用いて生成された鍵との排他的論理和演算を行う。
【０１８８】
以上の処理を１段分行い、入力データ長と鍵長に応じて決まる段数分だけ、再びＢＹＴＥ＿ＳＵＢ部９００に戻る。なお、最終段では、ＭＩＸＣＯＬ部９０４の処理は省略される。
【０１８９】
一方、共通秘密鍵は、ＫＥＹ＿ＥＸＰＡＮＳＩＯＮ部９０８に入力され、各段の鍵が生成される。この各段の鍵が、ＡＤＤＫＥＹ部９０６に供給される。
【０１９０】
このようなＡＥＳについても、上述した実施形態と同様に、入力データに対して暗号処理を行う少なくとも２つの演算回路を設け、それぞれ所与の段数分だけループさせて、これらをパイプライン動作させることができる。なお、この場合も、共通秘密鍵から鍵を生成しておき、段数に応じて上述の演算回路に順次供給させることができる。
【０１９１】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１９２】
また上述した実施の形態では、ＳＤＥＳを３回ループさせるＴＤＥＳについて説明したが、適用する鍵を適宜切り替えてＳＤＥＳを２回ループ又は４回以上ループさせるようにしてもよい。
【０１９３】
さらにまた上述のデータ転送制御装置は、ＩＥＥＥ１３９４規格のシリアルバスのインタフェースを例に説明したが、これに限定されるものではない。例えばＵＳＢ（ＵＳＢ１．１、ＵＳＢ２．０など）規格のシリアルバスのインタフェースにも適用することができる。
【図面の簡単な説明】
【図１】ＳＤＥＳによる暗号処理を行う暗号装置の機能ブロック図である。
【図２】暗号処理部の処理フロー図である。
【図３】初期転置について説明するための図である。
【図４】非線形変換の機能ブロック図である。
【図５】拡大転置について説明するための図である。
【図６】ＳＢＯＸにおいて行われる圧縮換字変換について説明するための図である。
【図７】非線形変換において行われる転置について説明するための図である。
【図８】最終転置について説明するための図である。
【図９】鍵生成処理部の処理フロー図である。
【図１０】選択転置について説明するための図である。
【図１１】巡回シフト数について説明するための図である。
【図１２】圧縮転置について説明するための図である。
【図１３】ＳＤＥＳによる復号処理を行う復号装置の機能ブロック図である。
【図１４】ＣＢＣモードの暗号処理と復号処理の機能ブロック図である。
【図１５】ＴＤＥＳの処理フローの概要を示す機能ブロック図である。
【図１６】本実施形態における暗号装置のブロック構成図である。
【図１７】本実施形態における暗号装置におけるＳＤＥＳの暗号処理の流れを模式的に示す説明図である。
【図１８】本実施形態における暗号装置のパイプライン動作についての説明図である。
【図１９】本実施形態における暗号装置のＳＤＥＳの復号処理の流れを模式的に示す説明図である。
【図２０】本実施形態における暗号装置におけるＴＤＥＳの暗号処理の流れを模式的に示す説明図である。
【図２１】本実施形態における暗号装置のＴＤＥＳの復号処理の流れを模式的に示す説明図である。
【図２２】図２２（Ａ）は、３段構成されたＤＥＳ演算回路のブロック図である。図２２（Ｂ）は、３段構成されたＤＥＳ演算回路の暗号処理のパイプライン動作についての説明図である。
【図２３】図２３（Ａ）は、３段構成されたＤＥＳ演算回路のブロック図である。図２３（Ｂ）は、３段構成されたＤＥＳ演算回路の復号処理のパイプライン動作についての説明図である。
【図２４】図２４（Ａ）は、４段構成されたＤＥＳ演算回路のブロック図である。図２４（Ｂ）は、４段構成されたＤＥＳ演算回路の暗号処理のパイプライン動作についての説明図である。
【図２５】図２５（Ａ）は、４段構成されたＤＥＳ演算回路のブロック図である。図２５（Ｂ）は、４段構成されたＤＥＳ演算回路の復号処理のパイプライン動作についての説明図である。
【図２６】鍵選択処理を行う暗号装置の構成の概要を示すブロック図である。
【図２７】本実施形態における暗号装置の鍵セット選択回路についての説明図である。
【図２８】本実施形態における暗号装置の回路動作フローの一例を示す図である。
【図２９】本実施形態におけるインタフェースＩＣの構成の概要を示すブロック図である。
【図３０】本実施形態におけるインタフェースＩＣの構成例を示す機能ブロック図である。
【図３１】ＡＥＳの暗号処理を行う暗号装置の構成の概要を示すブロック図である。
【符号の説明】
１０  暗号装置
１２  暗号処理部
１４、７４、８０  鍵生成処理部
７０  復号装置
７２、９０  復号処理部
８２、１００、１０２、１０４  ＤＥＳ演算部
８４、９４  レジスタ
９２  ＤＥＳ-1演算部
２００  暗号装置
２１０  ＤＥＳ演算回路（第１の暗号処理回路）
２２０  ＤＥＳ演算回路（第２の暗号処理回路）
２３０  プロローグ回路
２４０  入力ラッチ回路
２５０  エピローグ回路
２６０  第１の鍵出力回路
２７０  第２の鍵出力回路
２８０、８２０  鍵セット選択回路
２８２  ＴＤＥＳ鍵ボックス
２８４  ＳＤＥＳ鍵ボックス
２９０  制御回路
３００  鍵生成部
８１０、８７６  ＤＥＳ処理回路
８１２  メモリ
８１４  インタフェース回路
８３０  ハードディスク装置
８５０  ＩＤＥストレージ
８６２  ＩＥＥＥ１３９４物理層回路
８６４  ＩＥＥＥ１３９４リンク層回路
８６６  第１のＤＭＡＣ
８６８  ＤＴＣＰ処理回路
８７０  パケットメモリインタフェース
８７２  パケットメモリ
８７４  第２のＤＭＡＣ
８７８  キャッシュメモリインタフェース
８８０  キャッシュメモリ
８８２  第３のＤＭＡＣ
８８４  ＩＤＥインタフェース
８８６  メモリポインタ管理回路
８８８  システムコントローラ
【図１】
0003841008.tif 000002
【図２】
0003841008.tif 000003
【図３】
0003841008.tif 000004
【図４】
0003841008.tif 000005
【図５】
0003841008.tif 000006
【図６】
0003841008.tif 000007
【図７】
0003841008.tif 000008
【図８】
0003841008.tif 000009
【図９】
0003841008.tif 000010
【図１０】
0003841008.tif 000011
【図１１】
0003841008.tif 000012
【図１２】
0003841008.tif 000013
【図１３】
0003841008.tif 000014
【図１４】
0003841008.tif 000015
【図１５】
0003841008.tif 000016
【図１６】
0003841008.tif 000017
【図１７】
0003841008.tif 000018
【図１８】
0003841008.tif 000019
【図１９】
0003841008.tif 000020
【図２０】
0003841008.tif 000021
【図２１】
0003841008.tif 000022
【図２２】
0003841008.tif 000023
【図２３】
0003841008.tif 000024
【図２４】
0003841008.tif 000025
【図２５】
0003841008.tif 000026
【図２６】
0003841008.tif 000027
【図２７】
0003841008.tif 000028
【図２８】
0003841008.tif 000029
【図２９】
0003841008.tif 000030
【図３０】
0003841008.tif 000031
【図３１】
0003841008.tif 000032