(57)【要約】  本発明は、ハードウエアのゲート規模を、換字テーブルを用いる従来に比べて小さくし、かつ高い攪乱性を実現することができる暗号処理装置を提供する。  暗号化装置が備えるデータ変換部は、２５６ビットの入力データを３２ビットの各ブロックデータＡ１、Ｂ１、Ａ２、Ｂ２に分割し、第１融合部４３が、Ａ１及びＢ１、Ａ２及びＢ２の排他的論理和演算し、第１攪乱部４４が、Ａ１、Ａ２、排他的論理和演算の結果（Ｃ１、Ｃ２）のそれぞれを３個に分岐し、その中の２個のブロックデータを巡回シフトしてから全ブロックデータを融合し、第２融合部４５が、第１攪乱部４４による処理結果であるＤ１及びＥ２、Ｅ１及びＤ２の排他的論理和演算し、ブロック結合部４６が、第２融合部４５の演算結果を結合し、第２攪乱部４７が、結合後のデータを３個に分岐し、その中の２個のブロックデータを巡回シフトしてから全ブロックデータを融合する。
2007148665.tif 000002
【特許請求の範囲】
【請求項１】
ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置であって、
前記データ変換手段は、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段と
を備えることを特徴とする暗号処理装置。
【請求項２】
前記撹乱手段は、前記ブロックデータを奇数個に分岐し、前記分岐したブロックデータそれぞれを異なるビット数巡回シフトする
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記第１ブロック群に含まれるブロックデータの個数と、前記第２ブロック群に含まれるブロックデータの個数とは等しく、
前記第１融合手段は、前記第２ブロック群に含まれる全ての各ブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記攪乱手段は、前記第１及び第３ブロック群の全ブロックデータそれぞれについて、ブロックデータを２個以上に分岐する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記第２融合手段は、前記第４ブロック群に含まれる全ブロックデータそれぞれに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記第２融合手段において、融合する２つのブロックデータは、双方のブロックデータの生成過程で用いられたブロックデータが異なる
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項７】
前記データ変換手段は、更に、
前記取得手段により取得された前記入力データに、予め与えられた鍵データを融合させて前記第１融合手段に出力する鍵融合手段
を備えることを特徴とする請求項１に記載の暗号処理装置。
【請求項８】
前記鍵融合手段は、前記鍵データと前記入力データとを排他的論理和演算又は算術加算演算により融合する
ことを特徴とする請求項７に記載の暗号処理装置。
【請求項９】
前記データ変換手段は、更に、
前記出力手段による出力前に、前記出力データについて、前記出力データを２個以上に分岐し、分岐した出力データを巡回シフトし、巡回シフト結果を融合する最終攪乱手段
を備えることを特徴とする請求項１に記載の暗号処理装置。
【請求項１０】
ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換方法であって、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップと
を含むことを特徴とするデータ変換方法。
【請求項１１】
ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換プログラムであって、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップと
を含むことを特徴とするデータ変換プログラム。
【請求項１２】
請求項１１に記載のデータ変換プログラムが記録されていることを特徴とする記録媒体。
【請求項１３】
ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置に用いられる集積回路であって、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関する。
【背景技術】
【０００２】
暗号処理装置は、ディジタル化された音楽や映像等のコンテンツを暗号化して配信する場合などに用いられている。コンテンツ等の配信においては高いセキュリティ性能が求められる。セキュリティ性能を高めるには、配信対象のデータに対する攪乱性能を高めることが有効である。
例えば、特許文献１には、高い攪乱性能を実現するためのデータ暗号化方法が開示されている。【０００３】
特許文献１では、入力データを複数の同一データ長のブロックに分け、その分けられた各ブロックのデータ間に排他的論理和、加算及び剰余のうち少なくとも一の演算を施し、その演算結果に対し換字処理（テーブル変換演算処理）を施した後に結合することで、前記入力データに対する拡散を行っている。
【特許文献１】特開昭６２−１１３１９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術により高い攪乱性を実現するためには多数の換字処理が必要があり、この換字処理をハードウエアで実現するには多数のゲートが必要であるため、ハードウェアのゲート規模を小さくできないという問題があった。
前記問題に鑑み、本発明は高い攪乱性を実現しつつハードウエアのゲート規模を従来よりも小さくできる暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置であって、前記データ変換手段は、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段とを備える。【０００６】
なお、本明細書中で暗号処理とは、復号化を除外するものではなく、広く暗号化及び復号化の両方を含む概念を指している。
また、本明細書中で巡回シフトとは、０ビット以上の巡回シフト、すなわち巡回シフトしない場合も含む概念を指している。
【発明の効果】
【０００７】
本発明の暗号処理装置は、上述の構成を備えることにより、ハードウェア規模の小さい、分岐、巡回シフト、融合によりデータの攪乱を行うので、ハードウエアのゲート規模を換字テーブルを用いる従来に比べて小さくすることができる。
また、前記撹乱手段は、前記ブロックデータを奇数個に分岐し、前記分岐したブロックデータそれぞれを異なるビット数巡回シフトすることとしてもよい。【０００８】
この構成によれば、攪乱手段による変換が全単射変換になるため、攪乱性能を向上させることができる。
また、前記第１ブロック群に含まれるブロックデータの個数と、前記第２ブロック群に含まれるブロックデータの個数とは等しく、前記第１融合手段は、前記第２ブロック群に含まれる全ての各ブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することとしてもよい。【０００９】
この構成によれば、全てのブロックデータを融合し、融合前のデータの推測を困難にすることができる。
また、前記攪乱手段は、前記第１及び第３ブロック群の全ブロックデータそれぞれについて、ブロックデータを２個以上に分岐することとしてもよい。
この構成によれば、全てのブロックデータを攪乱し、攪乱前のデータの推測を困難にすることができる。【００１０】
また、前記第２融合手段は、前記第４ブロック群に含まれる全ブロックデータそれぞれに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することとしてもよい。
この構成によれば、全てのブロックデータを融合し、融合前のデータの推測を困難にすることができる。【００１１】
また、前記第２融合手段において、融合する２つのブロックデータは、双方ののブロックデータの生成過程で用いられたブロックデータが異なることとしてもよい。
この構成によれば、入力データ中のあるデータが、他のデータの攪乱に影響を与える範囲を広げることができる。
また、前記データ変換手段は、更に、前記取得手段により取得された前記入力データに、予め与えられた鍵データを融合させて前記第１融合手段に出力する鍵融合手段を備えることとしてもよい。【００１２】
また、前記鍵融合手段は、前記鍵データと前記入力データとを排他的論理和演算又は算術加算演算により融合することとしてもよい。
この構成によれば、予め入力データを融合して推測を困難にし、入力データが部分的にでも平文のまま処理されないようにし、機密性を高めることができる。
また、前記データ変換手段は、更に、前記出力手段による出力前に、前記出力データについて、前記出力データを２個以上に分岐し、分岐した出力データを巡回シフトし、巡回シフト結果を融合する最終攪乱手段を備えることとしてもよい。【００１３】
この構成によれば、さらに攪乱度合いを大きくし、データの推測をより困難にすることができる。
本発明のデータ変換方法は、ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換方法であって、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップとを含む。【００１４】
本発明のデータ変換プログラムは、ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換プログラムであって、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップとを含む。【００１５】
本発明の記録媒体は、前記データ変換プログラムが記録されている。
この構成によれば、換字テーブルを用いることなく、データを変換することができる。
本発明の集積回路は、ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置に用いられる集積回路であって、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段とを備える。【００１６】
ハードウェア規模の小さい、分岐、巡回シフト、融合によりデータの攪乱を行うので、ハードウエアのゲート規模を換字テーブルを用いる従来に比べて小さくすることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係る暗号通信システムの構成を示す図である。
【図２】本発明の一実施形態に係る暗号部の構成を示す図である。
【図３】本発明の一実施形態に係るデータ攪乱部の構成を示す図である。
【図４】本発明の一実施形態に係るデータ変換部の構成を示す図である。
【図５】本発明の一実施形態に係る第１融合部の構成を示す図である。
【図６】本発明の一実施形態に係る第１攪乱部の構成を示す図である。
【図７】本発明の一実施形態に係る第２融合部の構成を示す図である。
【図８】本発明の一実施形態に係る第２攪乱部の構成を示す図である。
【図９】本発明の一実施形態に係る復号部の構成を示す図である。
【図１０】暗号化処理を示すフローチャートである。
【図１１】暗号化処理を示すフローチャートである。
【図１２】復号処理を示すフローチャートである。
【図１３】復号処理を示すフローチャートである。
【符号の説明】
【００１８】
１  暗号通信システム
２  暗号化装置
３  復号化装置
４  通信路
１１  入力部
１２  暗号部
１３  暗号化鍵保持部
１４  送信部
１５  出力部
１６  復号部
１７  復号鍵保持部
１８  受信部
２１  鍵生成要求部
２２  鍵制御部
２３  データ攪乱部
２４  回数制御部
２５  データ入替部
３１  分割部
３２  データ変換部
３３  排他的論理和部
３３  復号化鍵保持部
３４  結合部
４１  加算部
４２  ブロック分割部
４３  第１融合部
４４  第１攪乱部
４５  第２融合部
４６  ブロック結合部
４７  第２攪乱部
５１  排他的論理和部
５２  排他的論理和部
５５〜６２  ビットローテーション部
６３〜６６  排他的論理和部
７１、７２  排他的論理和部
７３、７４  ビットローテーション部
７５  排他的論理和部
８１  鍵生成要求部
８２  鍵制御部
８３  データ攪乱部
８４  回数制御部
８５  データ入替部
【発明を実施するための最良の形態】
【００１９】
本発明の一実施形態に係る暗号通信システムについて説明する。
図１は、暗号化装置２と復号化装置３とが通信路４を介して接続された暗号通信システム１の構成を示している。
暗号化装置２は、外部から入力される秘密にすべきメッセージである平文データＰＴを暗号化し、平文データＰＴを暗号化した結果である暗号化データＣＴを通信路４を介して復号化装置３へ送信する。【００２０】
暗号化装置２は、換字変換を行うことなく暗号化の処理を行っており、これにより暗号化処理を行う部分のハードウェア規模は従来に比べ抑えられている。
復号化装置３は、暗号化装置２が送信した暗号化データＣＴを通信路４を介して受信し、暗号化データＣＴを復号することにより復号データＤＴを生成して外部へ出力する。
ここで、復号化装置３により暗号化データＣＴが正常に復号されれば、復号データＤＴと平文データＰＴとは一致することになる。また、通信路４上では、暗号化装置２から復号化装置３に送信されるデータは暗号化されているため、不正者が通信路４を盗聴しても秘密にすべきメッセージである平文データＰＴを知ることはできない。【００２１】
通信路４は、データを伝送する通信路であり、例えば、インターネットや電話線、専用線、ＵＳＢケーブルなどである。
以下、暗号通信システム１の各構成要素について詳細に説明する。
１．構成
１．１．暗号化装置２の構成
暗号化装置２は、図１に示すように、入力部１１と暗号部１２と暗号化鍵保持部１３と送信部１４とを含んで構成される。【００２２】
１．１．１．入力部１１、暗号化鍵保持部１３、送信部１４
入力部１１は、外部から６４ビットの平文データＰＴの入力を受け付け、入力された平文データＰＴを暗号部１２へ出力する。本実施の形態では、入力部１１は、キーボード及びコンピュータマウスを備えるものとする。暗号化装置２を保有するユーザが、前記キーボード及びコンピュータマウスを用いて秘密にすべきメッセージである平文データＰＴの入力を行う。【００２３】
暗号化鍵保持部１３は、２５６ビットの暗号化鍵ＥＫを保持している。暗号化鍵ＥＫの値は、後述する復号化装置３が備える復号鍵保持部１７が保持している復号鍵ＤＫの値と同じである。
送信部１４は、暗号部１２から暗号化データＣＴを受け取り、通信路４を介して暗号化データＣＴを復号化装置３へ送信する。【００２４】
１．１．２．暗号部１２
暗号部１２は、平文データＰＴを受け取り、暗号化鍵保持部１３から暗号化鍵ＥＫを取得し、暗号化鍵ＥＫを用いて平文データＰＴを暗号化して、その暗号化の結果である暗号化データＣＴを送信部１４へ出力する。
暗号部１２は、図２に示すように、鍵生成要求部２１と鍵制御部２２とデータ攪乱部２３と回数制御部２４とデータ入替部２５とを含んで構成される。暗号部１２は、具体的には複数の機能部を有する専用のマイクロコンピュータ等である。各機能部は、マイクロコンピュータ中に書き込まれているプログラムによって実現される。なお、各機能部は、それぞれ独立したマイクロコンピュータとしてもよい。【００２５】
１．１．２．１．鍵生成要求部２１、鍵制御部２２、回数制御部２４、データ入替部２５
鍵生成要求部２１は、入力部１１から平文データＰＴを入力データＩＮとして受け取り、部分鍵生成要求ＲＥＱＳＫを鍵制御部２２へ出力し、回数制御部２４に対しリセット信号を出力し、入力データＩＮをデータ攪乱部２３に出力する。鍵生成要求部２１は、回数制御部２４から入力データＩＮを受け取ると、入力データＩＮをデータ攪乱部２３に出力する。【００２６】
鍵制御部２２は、鍵生成要求部２１から部分鍵生成要求ＲＥＱＳＫを受け付けると、暗号化鍵保持部１３から２５６ビットの暗号化鍵ＥＫを取得し、暗号化鍵ＥＫをそれぞれが３２ビット長の部分鍵ＳＫ１〜ＳＫ８に分割する。具体的には、暗号化鍵ＥＫの１ビット目から３２ビット目までの値が部分鍵ＳＫ１となり、暗号化鍵ＥＫの３３ビット目から６４ビット目までの値が部分鍵ＳＫ２となり、・・・、暗号化鍵ＥＫの２２５ビット目から２５６ビット目までの値が部分鍵ＳＫ８となる。【００２７】
鍵制御部２２は、回数制御部２４から値がｉ（ｉは１以上８以下の自然数）である部分鍵番号を受け付けると、部分鍵番号に対応する部分鍵ＳＫｉをデータ攪乱部２３に出力する。例えば、部分鍵番号が１であった場合、鍵制御部２２は部分鍵ＳＫ１をデータ攪乱部２３に出力する。
データ攪乱部２３は、鍵生成要求部２１から６４ビットの入力データＩＮを取得し、かつ鍵制御部２２から３２ビットの部分鍵データＳＫｉを取得した場合に、部分鍵データＳＫｉ及び入力データＩＮを用いて攪乱処理を行い、その結果である６４ビットの出力データＯＵＴを回数制御部２４へと出力する。データ攪乱部２３の詳細は後述する。【００２８】
回数制御部２４は、データ攪乱部２３による攪乱処理の回数を計数して、所定攪乱回数だけ攪乱処理が実行されるように制御する。本実施の形態では、前記所定攪乱回数は８回とする。
回数制御部２４は、鍵生成要求部２１からリセット信号を受け付けると、計数値を０にリセットし、（計数値＋１）を部分鍵番号として鍵制御部２２に送信する。リセット直後の場合、鍵制御部２２に送信される部分鍵番号は１である。【００２９】
そして、データ攪乱部２３から出力データＯＵＴを受け取ると、計数値を１インクリメントし、計数値が所定攪乱回数未満である場合に（計数値＋１）を部分鍵番号として鍵制御部２２に送信すると共に、受け取った出力データＯＵＴを、入力データＩＮとして鍵生成要求部２１に出力する。
計数値が所定攪乱回数と同じである場合には、回数制御部２４は鍵制御部２２に部分鍵番号を送信せず、データ攪乱部２３から受け取った出力データＯＵＴを、中間データＣＣＴとしてデータ入替部２５に出力する。【００３０】
ここで、中間データＣＣＴは、６４ビットデータである。
データ入替部２５は、中間データＣＣＴを取得すると、中間データＣＣＴの下位３２ビットの値と上位３２ビットの値とを入れ替えて、その入れ替えた結果である暗号化データＣＴを送信部１４へ出力する。
１．１．２．２．データ攪乱部２３
以下、データ攪乱部２３について図３を用いて詳細に説明する。【００３１】
データ攪乱部２３は、分割部３１、データ変換部３２、排他的論理和部３３及び結合部３４を含んで構成される。
分割部３１は、６４ビットの入力データＩＮを取得すると、入力データＩＮの下位３２ビットの値であるＸ０を排他的論理和部３３へ出力し、上位３２ビットの値であるＸ１をデータ変換部３２へ出力する。また、分割部３１は、Ｙ０としてＸ１を結合部３４へ出力する。【００３２】
排他的論理和部３３は、分割部３１から取得するＸ０と、データ変換部３２から取得するＸ２とのビット単位の排他的論理和（Ｅｘｃｌｕｓｉｖｅ  ＯＲ、ＸＯＲ）を演算し、その結果Ｙ１（＝Ｘ０（＋）Ｘ２）を結合部３４へ出力する。
ここで、“（＋）”との記載は排他的論理和演算を表すものとする。
結合部３４は、分割部３１からＹ０を取得し、排他的論理和部３３からＹ１を取得する。そして、結合部３４は、Ｙ０を下位３２ビットとしＹ１を上位３２ビットとして結合し、その結合結果である６４ビットの出力データＯＵＴを回数制御部２４へ出力する。【００３３】
データ変換部３２は、分割部３１からＸ１を取得し、かつ鍵制御部２２から部分鍵ＳＫｉ（ＳＫｉはＳＫ１からＳＫ８の何れか）を取得した場合に、部分鍵ＳＫｉを用いてＸ１をデータ変換することにより３２ビットのＸ２を生成する。そして、データ変換部３２は、生成されたＸ２を排他的論理和部３３へ出力する。
図４は、データ変換部３２の構成を示すブロック図である。【００３４】
データ変換部３２は、加算部４１とブロック分割部４２と第１融合部４３と第１攪乱部４４と第２融合部４５とブロック結合部４６と第２攪乱部４７とを含んで構成される。
加算部４１は、分割部３１からＸ１を受け付け、鍵制御部２２から部分鍵ＳＫｉを受け付けた場合に、Ｘ１とＳＫｉを算術加算する。その結果であるＴ（＝Ｘ１＋ＳＫｉ）をブロック分割部４２へ出力する。【００３５】
ここで算術加算とは、通常の繰り上がりのある加算のことであるが、３３ビット目に関しては切り捨てる。言い換えると、ここでの算術加算の結果は、通常の繰り上がりのある加算結果を２＾３２で割った余りとなる。ここで、“＾”の記載はべき乗演算を表し、例えば２＾５＝３２である。
ブロック分割部４２は、加算部４１から前述の３２ビットの値Ｔを受け付け、Ｔをそれぞれが８ビットのデータからなる４つのブロックＡ１、Ｂ１、Ａ２、Ｂ２に分割して第１融合部４３へ出力する。ここで、Ｔの１ビット目から８ビット目までがＢ２となり、９ビット目から１６ビット目までがＡ２となり、１７ビット目から２４ビット目までがＢ１となり、２５ビット目から３２ビット目までがＡ１となる。【００３６】
第１融合部４３は、図５に示すように、それぞれが排他的論理和を計算する排他的論理和部５１及び排他的論理和部５２を含んで構成される。
第１融合部４３は、ブロック分割部４２から、Ａ１、Ｂ１、Ａ２、Ｂ２を受け取る。そして、Ａ１、Ａ２については、そのまま、第１攪乱部４４に出力する。以下、そのまま第１攪乱部４４に出力されるＡ１及びＡ２から成るブロックデータ群を第１ブロックデータ群という。
そして、Ｂ１に対しては、排他的論理和部５１によりＡ１との排他的論理和を計算し、その結果Ｃ１（＝Ｂ１（＋）Ａ１）を第１攪乱部４４に出力する。
また、Ｂ２に対しては、排他的論理和部５２によりＡ２との排他的論理和を計算し、その結果Ｃ２（＝Ｂ２（＋）Ａ２）を第１攪乱部４４に出力する。【００３７】
以下、排他的論理和の計算がなされるＢ１、Ｂ２から成るブロックデータ群を第２ブロックデータ群といい、その計算結果であるＣ１、Ｃ２から成るブロックデータ群を第３ブロックデータ群という。
第１攪乱部４４は、図６に示すように、３ビットローテーション部５５、５ビットローテーション部５６、２ビットローテーション部５７、６ビットローテーション部５８、４ビットローテーション部５９、７ビットローテーション部６０、１ビットローテーション部６１、５ビットローテーション部６２、排他的論理和部６３〜６６を含んで構成される。【００３８】
ここで、図６中に示した記号“＜＜Ｘ”は、入力値に対してＸビットの巡回シフトを行うことを示している。
第１攪乱部４４は、第１融合部４３からＡ１、Ｃ１、Ａ２、Ｃ２とを受け付ける。
３ビットローテーション部５５、５ビットローテーション部５６、２ビットローテーション部５７、６ビットローテーション部５８、４ビットローテーション部５９、７ビットローテーション部６０、１ビットローテーション部６１、５ビットローテーション部６２のそれぞれは、ローテーション演算として、巡回シフト演算を行う。例えば３ビットローテーション部５５は、入力データに対して３ビット巡回シフト演算を施す。入力データが２進数で００１１００００の場合、入力データが３ビット巡回シフトされた結果は、１００００００１となる。【００３９】
第１攪乱部４４が受け付けたＡ１は、３ビットローテーション部５５、５ビットローテーション部５６、排他的論理和部６３のそれぞれに供給される。
このように、ブロックデータを複数の処理部に入力することを、以下、分岐するという。
３ビットローテーション部５５は、Ａ１を３ビット巡回シフト演算し、その結果（Ｒｏｔ（Ａ１，３））を排他的論理和部６３に出力する。【００４０】
ここで、「Ｒｏｔ（Ｘ，Ｙ）」の表記は、ＸをＹビット巡回シフトした値を表す。５ビットローテーション部５６は、Ａ１を５ビットの巡回シフト演算し、その結果（Ｒｏｔ（Ａ１，５））を排他的論理和部６３に出力する。排他的論理和部６３は、Ａ１、Ｒｏｔ（Ａ１，３）、Ｒｏｔ（Ａ１，５）の排他的論理和を生成し、その結果Ｄ１（＝Ａ１（＋）Ｒｏｔ（Ａ１，３）（＋）Ｒｏｔ（Ａ１，５））を第２融合部４５に出力する。【００４１】
Ｃ１は、２ビットローテーション部５７、６ビットローテーション部５８、排他的論理和部６４のそれぞれに供給される。２ビットローテーション部５７は、Ａ１を２ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ１，２））を排他的論理和部６４に出力する。６ビットローテーション部５８は、Ｃ１を６ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ１，６））を排他的論理和部６４に出力する。排他的論理和部６４は、Ｃ１、Ｒｏｔ（Ｃ１，２）、Ｒｏｔ（Ｃ１，６）の排他的論理和を生成し、その結果Ｅ１（＝Ｃ１（＋）Ｒｏｔ（Ｃ１，２）（＋）Ｒｏｔ（Ｃ１，６））を第２融合部４５に出力する。【００４２】
Ａ２は、４ビットローテーション部５９、７ビットローテーション部６０、排他的論理和部６５のそれぞれに供給される。４ビットローテーション部５９は、Ａ２を４ビット巡回シフト演算し、その結果（Ｒｏｔ（Ａ２，４））を排他的論理和部６５に出力する。７ビットローテーション部６０は、Ａ２を７ビット巡回シフト演算し、その結果（Ｒｏｔ（Ａ２，７））を排他的論理和部６５に出力する。排他的論理和部６５は、Ａ２、Ｒｏｔ（Ａ２，４）、Ｒｏｔ（Ａ２，７）の排他的論理和を生成し、その結果Ｄ２（＝Ａ２（＋）Ｒｏｔ（Ａ２，４）（＋）Ｒｏｔ（Ａ２，７））を第２融合部４５に出力する。【００４３】
Ｃ２は、１ビットローテーション部６０、５ビットローテーション部６２、排他的論理和部６６のそれぞれに供給される。１ビットローテーション部６１は、Ｃ２を１ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ２，１））を排他的論理和部６６に出力する。５ビットローテーション部６２は、Ｃ２を５ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ２，５））を排他的論理和部６６に出力する。排他的論理和部６６は、Ｃ２、Ｒｏｔ（Ｃ２，１）、Ｒｏｔ（Ｃ２，５）の排他的論理和を生成し、その結果Ｅ２（＝Ｃ２（＋）Ｒｏｔ（Ｃ２，１）（＋）Ｒｏｔ（Ｃ２，５））を第２融合部４５に出力する。【００４４】
ここで、第１ブロックデータ群（Ａ１、Ａ２）に対する攪乱処理の結果であるＤ１、Ｄ２から成るデータブロック群を、以下、第４ブロックデータ群という。また、第３ブロックデータ群（Ｃ１、Ｃ２）に対する攪乱処理の結果であるＥ１、Ｅ２から成るデータブロック群を、以下、第５ブロックデータ群という。
第２融合部４５は、図７に示すように、排他的論理和部７１及び排他的論理和部７２を含んで構成されており、第１攪乱部４４からＤ１、Ｅ１、Ｄ２、Ｅ２を受け付ける。第２融合部４５は、Ｅ１及びＥ２を分岐し、分岐された一方のＥ１及びＥ２については、そのままブロック結合部４６に対して出力する。【００４５】
そして、Ｄ１について、排他的論理和部７１が、分岐されたもう一方のＥ２との排他的論理和を演算し、その結果をＦ１（＝Ｄ１（＋）Ｅ２）をブロック結合部４６に対し出力する。
そして、Ｄ２について、排他的論理和部７２が、分岐されたもう一方のＥ１との排他的論理和を演算し、その結果をＦ２（＝Ｄ２（＋）Ｅ１）をブロック結合部４６に対し出力する。【００４６】
排他的論理和演算の結果であるＦ１及びＦ２から成るブロックデータ群を、以下、第６ブロックデータ群という。
ここで、第１融合部４３と第２融合部４５とでは、融合させるブロックの組み合わせが異なる。すなわち、第１融合部４３では、左から１番目のブロック（Ａ１）と２番目のブロック（Ｂ１）を融合し、また、３番目のブロック（Ａ２）と４番目のブロック（Ｂ２）を融合している。これに対し、第２融合部４５では、左から１番目のブロック（Ｄ１）と４番目のブロック（Ｅ２）を融合し、また、２番目のブロック（Ｅ１）と３番目のブロック（Ｄ２）を融合している。【００４７】
これは例えば１ビットだけ値の異なる複数の入力データが与えられた時に、その１ビットの違いが出力データに影響する範囲を広げるためである。
ブロック結合部４６は、第２融合部４５から、第５ブロックデータ群に含まれるＥ１、Ｅ２及び第６ブロックデータ群に含まれるＦ１、Ｆ２を受け付けると、Ｆ１とＦ２とＥ１とＥ２を結合し、その結合結果である３２ビットの値Ｇを第２攪乱部４７へ出力する。ここで、Ｅ２がＧの１ビット目から８ビット目となり、Ｆ２がＧの９ビット目から１６ビット目となり、Ｅ１がＧの１７ビット目から２４ビット目となり、Ｆ１がＧの２５ビット目から３２ビット目となる。【００４８】
第２攪乱部４７は、１３ビットローテーション部７３、１７ビットローテーション部７４及び排他的論理和部７５を含んで構成されており、ブロック結合部４６からＧを受け取る。
Ｇは、１３ビットローテーション部７３、１７ビットローテーション部７４、排他的論理和部７５のそれぞれに供給される。【００４９】
１３ビットローテーション部７３は、Ｇを１３ビットの巡回シフト演算し、その結果（Ｒｏｔ（Ｇ，１３））を排他的論理和部７５に出力する。１７ビットローテーション部７４は、Ｇを１７ビットの巡回シフト演算し、その結果（Ｒｏｔ（Ｇ，５））を排他的論理和部７５に出力する。排他的論理和部７５は、Ｇ、Ｒｏｔ（Ｇ，１３）、Ｒｏｔ（Ｇ，１７）の排他的論理和を生成し、その結果Ｘ２（＝Ｇ（＋）Ｒｏｔ（Ｇ，１３）（＋）Ｒｏｔ（Ｇ，１７））を排他的論理和部３３に出力する。【００５０】
１．２．復号化装置３の構成
次に、復号化装置３について説明する。
復号化装置３は、図１に示すように、出力部１５、復号部１６、復号鍵保持部１７及び受信部１８を含んで構成される。
１．２．１．出力部１５、復号鍵保持部１７、受信部１８
出力部１５は、復号部１６から復号データＤＴを取得して外部へと出力する。例えば、出力部１５にはディスプレイが接続されており、出力部１５は、復号データＤＴを前記ディスプレイに表示させる。【００５１】
復号鍵保持部１７は、２５６ビットの復号鍵ＤＫを保持している。復号鍵ＤＫの値は、暗号化装置２の暗号化鍵保持部１３が保持している暗号化鍵ＣＫの値と同じである。
受信部１８は、暗号化装置２の送信部１４から通信路４を介して暗号化データＣＴを受信し、その暗号化データＣＴを復号部１６へ出力する。
１．２．２．復号部１６
復号部１６は、図９に示すように、鍵生成要求部８１、鍵制御部８２、データ攪乱部８３及び回数制御部８４を含んで構成される。復号部１６は、具体的には複数の機能部を有する専用のマイクロコンピュータ等である。各機能部は、マイクロコンピュータ中に書き込まれているプログラムによって実現される。なお、各機能部は、独立のマイクロコンピュータであってもよい。【００５２】
鍵生成要求部８１は、受信部１８から暗号化データＣＴの入力を受け付けた場合に、部分鍵生成要求ＲＥＱＳＫを鍵制御部８２へ出力し、回数制御部８４に対しリセット信号を出力し、暗号化データＣＴを入力データＩＮとしてデータ攪乱部８３に出力する。
鍵生成要求部８１は、回数制御部８４から入力データＩＮを受け取ると、その入力データＩＮをデータ攪乱部８３に出力する。【００５３】
鍵制御部８２は、鍵生成要求部８１から部分鍵生成要求ＲＥＱＳＫを受け付けると、復号化鍵保持部３３から２５６ビットの復号鍵ＤＫを取得し、復号鍵ＤＫをそれぞれが３２ビット長の部分鍵ＳＫ１〜ＳＫ８に分割する。具体的には、復号化鍵ＤＫの１ビット目から３２ビット目までの値が部分鍵ＳＫ１となり、復号鍵ＤＫの３３ビット目から６４ビット目までの値が部分鍵ＳＫ２となり、・・・、復号鍵ＤＫの２２５ビット目から２５６ビット目までの値が部分鍵ＳＫ８となる。【００５４】
鍵制御部８２は、回数制御部８４から値がｊ（ｊは１以上８以下の自然数）である部分鍵番号を受け付けると、部分鍵番号に対応する部分鍵ＳＫｊをデータ攪乱部８３に出力する。例えば部分鍵番号の値が１である場合、鍵制御部８２は、部分鍵ＳＫ１をデータ攪乱部８３に出力する。
データ攪乱部８３は、鍵生成要求部８１から６４ビットの入力データＩＮを取得し、かつ鍵制御部８２から３２ビットの部分鍵ＳＫｊを取得した場合に、部分鍵ＳＫｊと入力データＩＮとを用いて攪乱処理を行い、その結果である６４ビットの出力データＯＵＴを回数制御部８４へ出力する。データ攪乱部８３の構成は、データ攪乱部２３の構成と同じであるため、説明は省略する。【００５５】
回数制御部８４は、データ攪乱部８３による攪乱処理の回数を計数して、所定攪乱回数だけ攪乱処理が実行されるように制御する。本実施の形態では、前記所定攪乱回数は８回とする。
回数制御部８４は、鍵生成要求部８１からリセット信号を受け付けると、計数値を０にリセットし、（８−計数値）を部分鍵番号として鍵制御部８２に送信する。この場合、鍵制御部８２に送信される部分鍵番号は８である。【００５６】
そして、データ攪乱部８３から出力データＯＵＴを受け取ると、計数値を１インクリメントし、計数値が所定攪乱回数未満である場合に（８−計数値）を部分鍵番号として鍵制御部２２に送信する。すなわち、暗号化装置２での暗号化に用いた順序とは逆の順序で部分鍵を出力する。そして、回数制御部８４は、受け取った出力データＯＵＴを、入力データＩＮとして鍵生成要求部８１に出力する。【００５７】
計数値が所定攪乱回数と同じである場合には、回数制御部８４は鍵制御部８２に部分鍵番号を送信せず、データ攪乱部８３から受け取った出力データＯＵＴを、復号中間データＤＣＴとしてデータ入替部８５に出力する。ここで、復号中間データＤＣＴは、６４ビットデータである。
データ入替部８５は、６４ビットの復号中間データＤＣＴを取得すると、復号中間データＤＣＴの下位３２ビットの値と上位３２ビットの値とを入れ替えて、その入れ替えた結果である復号データＤＴを出力部１５へ出力する。【００５８】
２．データ処理
２．１．暗号化処理
次に、上述のように構成された暗号化装置２によって、入力データＩＮに対して成される暗号化処理について図面を用いて説明する。
図１０及び図１１は、暗号化装置２による暗号化処理を示す図である。【００５９】
暗号化装置２において、まず、ＰＴがＩＮとして取得される（ステップＳ１）。
次に、内部変数である計数値が０に初期化される（ステップＳ２）。
ＩＮは、上位３２ビットの値Ｘ１と下位３２ビットＸ０に分割される（ステップＳ３）。
そして、部分鍵ＳＫｉとＸ１とを用いてＴが生成される（ステップＳ５）。【００６０】
Ｔ  ←（ＳＫｉ＋Ｘ１）％２＾３２
ここで、ｉは、計数値＋１である（ステップＳ４）。また”←“の記載は、代入を示し、”Ｘ％Ｙ“の記載は、剰余、即ちＸをＹで除算した場合の余りを示す。
Ｔは３２ビットの値であり、上位から８ビットずつ４つに区切られる（ステップＳ６）。その区切られた８ビットのデータが、それぞれＡ１、Ｂ１、Ａ２、Ｂ２である。【００６１】
次に、Ｃ１、Ｃ２がＡ１、Ｂ１、Ａ２、Ｂ２を用いて生成される（ステップＳ７）。
Ｃ１  ←  Ｂ１（＋）Ａ１
Ｃ２  ←  Ｂ２（＋）Ａ２
次に、Ｄ１、Ｅ１、Ｄ２、Ｅ２のそれぞれが、Ａ１、Ｃ１、Ａ２、Ｃ２のそれぞれを用いて生成される（ステップＳ８）。【００６２】
Ｄ１  ←  Ａ１（＋）Ｒｏｔ（Ａ１，３）（＋）Ｒｏｔ（Ａ１，５）
Ｅ１  ←  Ｃ１（＋）Ｒｏｔ（Ｃ１，２）（＋）Ｒｏｔ（Ｃ１，６）
Ｄ２  ←  Ａ２（＋）Ｒｏｔ（Ａ２，４）（＋）Ｒｏｔ（Ａ２，７）
Ｅ２  ←  Ｃ２（＋）Ｒｏｔ（Ｃ２，１）（＋）Ｒｏｔ（Ｃ２，５）
次に、Ｆ１とＦ２とが、Ｄ１、Ｅ１、Ｄ２、Ｅ２を用いて生成される（ステップＳ９）。【００６３】
Ｆ１  ←  Ｄ１（＋）Ｅ２
Ｆ２  ←  Ｄ２（＋）Ｅ１
そして、Ｇが、Ｆ１、Ｆ２、Ｅ１、Ｅ２を連結することにより生成される（ステップＳ１０）。
Ｇ  ←  Ｆ１  ||  Ｆ２  ||  Ｅ１  ||  Ｅ２
ここで、”||”の記載は、ビット連結を示している。【００６４】
そして、Ｘ２がＧを用いて生成される（ステップＳ１１）。
Ｘ２  ←  Ｇ（＋）Ｒｏｔ（Ｇ，１３）（＋）Ｒｏｔ（Ｇ，１７）
次に、Ｙ１がＸ０、Ｘ２を用いて生成される（ステップＳ１２）。
Ｙ１  ←  Ｘ０（＋）Ｘ２
次に、ＯＵＴが、Ｙ０と、Ｙ１とを用いて生成される（ステップＳ１３）。【００６５】
ＯＵＴ  ←  Ｙ１  ||  Ｙ０
ここで、Ｙ０は、Ｘ１と値が同一である。
次に、計数値が１インクリメントされ（ステップＳ１４）、前記計数値が８未満の場合（ステップＳ１５：ＹＥＳ）、ステップＳ１３で生成された出力データＯＵＴを入力データＩＮとして（ステップＳ１６）、その入力データＩＮに対しステップＳ３からの処理が繰り返される。【００６６】
前記計数値が８以上である場合（ステップＳ１５：ＮＯ）、ステップＳ１３で生成された出力データＯＵＴを中間データＣＣＴとし（ステップＳ１７）、中間データＣＣＴの上位３２ビットと下位３２ビットの値を入れ替えることにより、その入れ替え結果である暗号化データＣＴが生成される（ステップＳ１８）。
２．２．復号処理
次に、上述の暗号化処理により生成されたＣＴが、上述のように構成された復号化装置３によって復号処理される手順を図面を用いて説明する。【００６７】
復号化装置３において、まず、ＣＴがＩＮとして取得される（ステップＳ３１）。
次に、内部変数である計数値が０に初期化される（ステップＳ３２）。
ＩＮは、上位３２ビットの値Ｘ１と下位３２ビットＸ０に分割される（ステップＳ３３）。
そして、部分鍵ＳＫｊとＸ１とを用いてＴが生成される（ステップＳ３５）。【００６８】
Ｔ  ←（ＳＫｊ＋Ｘ１）％２＾３２
ここで、ｊは、８−計数値である（ステップＳ３４）。
Ｔは３２ビットの値であり、上位から８ビットずつ４つに区切られる（ステップＳ３６）。その区切られた８ビットのデータが、それぞれＡ１、Ｂ１、Ａ２、Ｂ２である。
次に、Ｃ１、Ｃ２がＡ１、Ｂ１、Ａ２、Ｂ２を用いて生成される（ステップＳ３７）。【００６９】
Ｃ１  ←  Ｂ１（＋）Ａ１
Ｃ２  ←  Ｂ２（＋）Ａ２
次に、Ｄ１、Ｅ１、Ｄ２、Ｅ２のそれぞれがＡ１、Ｃ１、Ａ２、Ｃ２のそれぞれを用いて生成される（ステップＳ３８）。
Ｄ１  ←  Ａ１（＋）Ｒｏｔ（Ａ１，３）（＋）Ｒｏｔ（Ａ１，５）
Ｅ１  ←  Ｃ１（＋）Ｒｏｔ（Ｃ１，２）（＋）Ｒｏｔ（Ｃ１，６）
Ｄ２  ←  Ａ２（＋）Ｒｏｔ（Ａ２，４）（＋）Ｒｏｔ（Ａ２，７）
Ｅ２  ←  Ｃ２（＋）Ｒｏｔ（Ｃ２，１）（＋）Ｒｏｔ（Ｃ２，５）
次に、Ｆ１とＦ２とが、Ｄ１、Ｅ１、Ｄ２、Ｅ２を用いて生成される（ステップＳ３９）。【００７０】
Ｆ１  ←  Ｄ１（＋）Ｅ２
Ｆ２  ←  Ｄ２（＋）Ｅ１
そして、Ｇが、Ｆ１、Ｆ２、Ｅ１、Ｅ２を連結することにより生成される（ステップＳ４０）。
Ｇ  ←  Ｆ１  ||  Ｆ２  ||  Ｅ１  ||  Ｅ２
ここで、”||”の記載は、ビット連結を示している。【００７１】
そして、Ｘ２がＧを用いて生成される（ステップＳ４１）。
Ｘ２  ←  Ｇ（＋）Ｒｏｔ（Ｇ，１３）（＋）Ｒｏｔ（Ｇ，１７）
次に、Ｙ１がＸ０、Ｘ２を用いて生成される（ステップＳ４２）。
Ｙ１  ←  Ｘ０（＋）Ｘ２
次に、ＯＵＴが、Ｙ０と、Ｙ１とを用いて生成される（ステップＳ４３）。【００７２】
ＯＵＴ  ←  Ｙ１  ||  Ｙ０
ここで、復号化に成功すれば、Ｙ０は、Ｘ１と値が同一である。
次に、計数値が１インクリメントされ（ステップＳ４４）、前記計数値が８未満７の場合（ステップＳ４５：ＹＥＳ）、ステップＳ４３で生成された出力データＯＵＴを暗号化データＣＴとして（ステップＳ４６）、その暗号化データＣＴに対しステップＳ３３からの処理を繰り返す。【００７３】
前記計数値が８以上である場合（ステップＳ４５：ＮＯ）、ステップＳ３３で生成された出力データＯＵＴを復号中間データＤＣＴとし（ステップＳ４７）、復号中間データＤＣＴの上位３２ビットと下位３２ビットの値を入れ替えることにより、その結果である復号データＤＴが生成される（ステップＳ４８）。
３．効果
以下に、これまで説明してきた本発明により、高い撹乱性が得られるという効果を奏することについて説明する。撹乱性の評価には、既存の評価手法を用いる。前記評価手法では、ある入力データを入力して得られる出力データと、前記入力データとは１ビット異なるデータを入力して得られる出力データとが、何ビット異なっているかを指標とする。各出力データを比較して異なるビット数が多いほど撹乱性が高いことになる。【００７４】
ここでは、データ変換部３２における加算部４１に対し、１ビット異なる２つの入力データを入力するものとする。２つの入力データはそれぞれブロック分割部４２、第１融合部４３、第１攪乱部４４、第２融合部４５及びブロック結合部４６により処理される。そして、２つの入力データに対応するブロック結合部４６からの出力を比較して攪乱性を評価するものとする。【００７５】
２つの入力データのどの位置のビットが異なっているかによって評価結果が異なるので４つの場合に分けて説明する。
３．１．２つの入力データの間で、１ビット目から８ビット目までの何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、１ビット目から８ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。【００７６】
具体的には、２つの入力データは、ブロック分割部４２における分割後にＢ２となる箇所に含まれる１ビットが異なるものとする。
まず、２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ｂ２のうち１ビットが異なり、他のＡ１、Ｂ１、Ａ２は全く同じとなる。
そして、第１融合部４３において、Ａ２がＢ２に融合されるが、Ａ２はいずれの入力データでも同一なので、融合によって互いに異なるビット数が増減することはない。よって、第１融合部４３の出力は、Ｃ２のうち１ビットが異なり、他のＡ１、Ｃ１、Ａ２は入力データがどちらでも全く同じとなる。【００７７】
続いて、第１攪乱部４４において、第１融合部４３の出力の攪乱処理がされる。
第１攪乱部４４の攪乱処理は、入力が１ビット異なっている場合、出力が必ず３ビット異なる構成となっている。これは、１ビット異なっている部分をそれぞれ異なるシフト数（ローテーション量）で巡回シフト（ローテーション）し、シフトされた値を融合しているためである。【００７８】
よって、入力Ｃ２に対応する第１攪乱部４４の出力Ｅ２は、３ビット異なっていることになる。他のＤ１、Ｅ１、Ｄ２は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので全く同じとなる。
そして、第２融合部４５において、Ｅ２はＤ１に融合される。Ｅ２は３ビット異なっており、Ｄ１は入力データがどちらでも全く同じであるため、融合後の出力Ｆ１は、必ず３ビット異なっていることになる。また、他のＥ１、Ｆ２はいずれの入力データでも全く同じとなる。【００７９】
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｆ１とＥ２がそれぞれ３ビットずつ異なるので、結合された値、即ち出力が６ビット異なることになる。
３．２．２つの入力データの間で、９ビット目から１６ビット目までの何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、９ビット目から１６ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。
具体的には、２つの入力データは、ブロック分割部４２における分割後にＡ２となる箇所に含まれる１ビットが異なるものとする。【００８０】
まず、その２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ａ２のうち１ビットが異なり、他のＡ１、Ｂ１、Ｂ２は全く同じとなる。
そして、第１融合部４３において、１ビット異なるＡ２が全く同じＢ２に融合される。よって、第１融合部４３の出力のうち、Ａ２およびＣ２の１ビットが異なることになる。そして他のＡ１、Ｃ１は入力データがどちらでも全く同じとなる。続いて、第１攪乱部４４において、第１融合部４３の出力の攪乱処理がされる。入力Ａ２と入力Ｃ２に対応する第１攪乱部４４の出力Ｄ２とＥ２は、それぞれ３ビット異なることになる。他のＤ１、Ｅ１は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので、全く同じとなる。【００８１】
そして、第２融合部４５において、Ｅ２はＤ１に融合される。Ｅ２は３ビット異なっており、Ｄ１はどちらの入力データでも全く同じであるため、融合後の出力Ｆ１は、必ず３ビット異なる。よって、第２融合部４５の出力のうち、Ｆ１とＦ２とＥ２がそれぞれ３ビット異なることになる。
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｆ１とＦ２とＥ２がそれぞれ３ビットずつ異なるので、結合された値、即ち、出力が最低９ビット異なることになる。【００８２】
３．３．２つの入力データの間で、１７ビット目から２４ビット目の何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、１７ビット目から２４ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。具体的には、２つの入力データは、ブロック分割部４２における分割後にＢ１となる箇所に含まれる１ビットが異なるものとする。【００８３】
まず、その２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ｂ１のうち１ビットが異なり、他のＡ１、Ａ２、Ｂ２は全く同じとなる。
そして、第１融合部４３において、Ａ１がＢ１に融合されてもＡ１はどちらの入力データでも同一のため、融合によって互いに異なるビット数は増減しない。よって、第１融合部４３の出力は、Ｃ１のうち１ビットが異なり、他のＡ１、Ａ２、Ｃ２は入力データがどちらでも全く同じとなる。続いて、第１攪乱部４４において、第１融合部４３の出力の攪乱処理がされる。入力Ｃ１に対応する第１攪乱部４４の出力Ｅ１は、３ビット異なっていることになる。他のＤ１、Ｄ２、Ｅ２は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので、全く同じとなる。【００８４】
そして、第２融合部４５において、Ｅ１はＤ２に融合される。Ｅ１は３ビット異なっており、Ｄ２は全く同じであるため、融合後の出力Ｆ２は必ず３ビット異なっていることになる。
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｅ１とＦ２がそれぞれ３ビットずつ異なるので、結合された値、即ち、出力が最低６ビット異なることになる。【００８５】
３．４．２つの入力データの間で、２５ビット目から３２ビット目の何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、２５ビット目から３２ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。具体的には、２つの入力データは、ブロック分割部４２での分割後にＡ１となる箇所に含まれる１ビットが異なるものとする。【００８６】
まず、その２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ａ１のうち１ビットが異なり、他のＢ１、Ａ２、Ｂ２は全く同じとなる。
そして、第１融合部４３において、１ビット異なるＡ１が全く同じＢ１に融合されてＣ１となる。よって、第１融合部４３の出力のうち、Ａ１およびＣ１の１ビットが異なることになる。【００８７】
そして他のＡ２、Ｃ２は入力データがどちらでも全く同じとなる。続いて、第１攪乱部４４において、Ａ１とＣ１の攪乱処理がされる。
入力Ａ１と入力Ｃ１に対応する第１攪乱部４４の出力Ｄ１とＥ１は、それぞれ３ビット異なる。他のＤ２、Ｅ２は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので全く同じとなる。【００８８】
そして、第２融合部４５において、Ｅ１はＤ２に融合される。Ｅ１は３ビット異なっており、Ｄ２は入力データがどちらでも全く同じであるため、融合後の出力Ｆ２は必ず３ビット異なっていることになる。
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｆ１とＥ１とＦ２がそれぞれ３ビットずつ異なるので、結合された値、即ち、出力が最低９ビット異なることになる。
３．５．まとめ
以上説明したように、データ変換部３２への２つの入力が１ビットだけ異なる場合に、ブロック結合部４６の対応する２つの出力が最低６ビット違うこととなり、高い撹乱性を実現できている。【００８９】
ここで、データ変換部３２の構成の中に、換字処理（テーブル変換演算）は含まれておらず、全て分割手段と排他的論理和と巡回シフト（ローテーション）から構成される。この構成によると、換字処理（テーブル変換演算）と比べてコンパクトにハードウェアを実現出来る。これにより、高い攪乱性能を実現しつつ、ハードウエア実装時のゲート規模を少なくできる。【００９０】
また、データ変換部３２内の第１攪乱部３２では、分割されたブロックデータの全てについて、攪乱処理を行っている。
この構成によって、互いに１ビット異なる２つの入力データが与えられた場合に、どの１ビットが異なっている場合であっても、何れかのブロックデータに対する攪乱処理によって、１ビットの違いが拡大されることが保証できる。【００９１】
また、データ変換部３２では、第１攪乱部４４と第２攪乱部４７で、異なるビット単位で攪乱処理を行うようにしている。具体的には、第１攪乱部４４では８ビット単位（ブロック分割部４２による分割結果の単位）の攪乱処理を行い、第２攪乱部４７では３２ビット単位（入力データ全体の単位）の攪乱処理を行うようにしている。
本実施の形態に係る攪乱処理で用いている変換は線形処理であるため、同じビット数単位で攪乱処理を繰り返した場合には、差を打ち消しあってしまうことがあり、攪乱効果が伸びない。しかし、本実施の形態のように互いに異なるビット単位での変換を行うことにより、差の打ち消しあいを最小限にとどめ、全体として高い攪乱性能をしている。【００９２】
また、第１撹乱部４４および第２撹乱部４７では、データを３個に分岐させた上で、３種類のローテーション（０ビットローテーションを含む）を行って、それらの結果を融合している。
このような変換処理を行っているのは、３つ以上の奇数個のローテーションを行い、その結果を融合する処理が全単射な変換であることが理論的に示されているためである。全単射変換の場合、変換後の値の取りうるパターンの数と変換前の値の取りうるパターンの数とが同一となるので、異なる値を変換した場合には変換結果も必ず異なる値となる。この性質により、互いに１ビット異なる２つデータをそれぞれ変換した場合、変換結果も必ず１ビット以上異なることが保証できる（例えば、上記実施の形態では、必ず３ビット異なることとなる）。【００９３】
本実施の形態では、この性質を利用して撹乱処理を行った上、さらにこの１ビット以上の差異を融合処理等によって拡大させることで、高い撹乱性能を得ている。
なお、上述の説明からも分かると通り、分岐数やローテーションの種類の数は３つに限らず、３つ以上の奇数が望ましく、例えば、５つや７つなどであってもよい。
４．なお書き
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。【００９４】
４．１．実施の形態で説明した構成は、あくまで一例であり、これに限るものではない。例えば、ローテーション数（シフト量）として、他のローテーション量であってもよい。また、各構成要素の構成や順番は、異なっていてもよい。
４．２．実施の形態で説明した構成では、６４ビット単位のデータを暗号化や復号化する構成になっていたが、これに限るものではない。例えば３２ビット単位であっても、１２８ビット単位であってもよい。【００９５】
４．３．実施の形態で説明した構成では、２５６ビットの暗号化鍵や復号化鍵を用いる構成になっていたが、これに限るものではない。例えば１２８ビットの鍵を２５６ビットに鍵拡大処理して、その２５６ビット鍵を用いても良い。
４．４．実施の形態で説明した構成では、換字処理（テーブル変換演算）を一つも使用していなかったが、これに限るものではない。いくつかの換字処理と組み合わせることとしてもよい。例えば、第１攪乱部４４におけるローテーション部と融合部との組の１つに替えて換字処理を使用するような構成にしてもよい。このようにしても、複数の換字処理を使用する場合に比べて、ハードウエア実装時のゲート規模を小さく出来る。【００９６】
４．５．実施の形態では、本発明はハードウエアで実装されることを前提として説明してきたが、ソフトウエアとして実装してもよいことは言うまでもない。上記では、ハードウエアとして実現した場合の効果を述べたが、ソフトウエアで実現する場合であっても本発明によれば換字テーブルを保持するためのメモリ領域が不要になるので、より少ないメモリ容量しか持たない機器であっても高い撹乱性を持った暗号化処理および復号化処理が可能となるという効果が得られる。【００９７】
４．６．実施の形態では、ブロック分割部４２の処理の前に、加算部４１によってＸ１と部分鍵ＳＫｉとを加算していたが、これに限られるものではなく、他の演算によって融合するとしてもよい。例えば、排他的論理和演算によって融合することなどが考えられる。
４．７．第１攪乱部４４では、各ブロックについて行うローテーションのシフト量の組み合わせは各ブロックごとに異なっている。例えば、Ａ１に対するシフト量は（３ビット、０ビット、５ビット）であるが、Ｃ２に対するシフト量は（２ビット、０ビット、６ビット）であり、Ａ１に対するシフト量と異なるシフト量の組み合わせになっている。同様に、Ａ２又はＣ２に対するシフト量の組み合わせについても、他のいずれのブロックのシフト量とも一致しない。【００９８】
本実施の形態でこのような構成を取っているのは攪乱性能を上げるためであるが、本発明はこの構成に限られるものではない。例えば、複数のブロックでローテーションのシフト量の組み合わせを同じにするとしてもよい。この場合、更に、第１攪乱部４４において１組のローテーション部を持たせて、全てのブロックでその１組のローテーション部を使いまわすこともできる。このときは回路規模を更に削減することができる。【００９９】
４．８．本実施の形態では、ブロックを４分割した上で攪乱処理を行っていたが、これに限られるものではなく、５つ以上に分割したり３つ以下に分割するとしてもよい。
４．９．本実施の形態では、第１攪乱部４４及び第２攪乱部４７において、３つに分岐させたデータの１つについてはローテーション部が設けられていないが、これは０ビットの巡回シフトを行うための構成である。【０１００】
しかし、これに限られるものではなく、３つに分岐させたデータの全てについて１ビット以上巡回シフトさせる構成としてもよい。ただし、０ビットの巡回シフトは分岐させたデータをそのまま排他的論理和部に出力させるだけで実現できるので、回路を追加する必要がない。そのため、０ビットの巡回シフトを用いる方が回路規模の削減には有効である。【０１０１】
また、本実施の形態では、０ビットの巡回シフトを行う場合は、分岐させたデータをそのまま使用している。しかし、シフト数が「０」の場合であっても、何の処理も行わないダミーのローテーション部を設けることとしてもよい。
４．１０．巡回シフトは、桁上がりを破棄するシフトであってもよい。ただし、この場合には、全単射性は保証できなくなる。【０１０２】
４．１１．上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【０１０３】
４．１２．上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。【０１０４】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。【０１０５】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
４．１３．上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。【０１０６】
４．１４．本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。【０１０７】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。【０１０８】
４．１５．上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１０９】
本発明に係るデータ変換装置は、ネットワーク上の機密通信、認証、著作権保護用途などに利用可能であり、高いデータ攪乱性能やハードウェアの小型化が要求される携帯端末装置、デジタル家電機器などに好適である。
【図１】
2007148665.tif 000003
【図２】
2007148665.tif 000004
【図３】
2007148665.tif 000005
【図４】
2007148665.tif 000006
【図５】
2007148665.tif 000007
【図６】
2007148665.tif 000008
【図７】
2007148665.tif 000009
【図８】
2007148665.tif 000010
【図９】
2007148665.tif 000011
【図１０】
2007148665.tif 000012
【図１１】
2007148665.tif 000013
【図１２】
2007148665.tif 000014
【図１３】
2007148665.tif 000015
【手続補正書】
【提出日】平成20年1月30日(2008.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置であって、
前記データ変換手段は、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段と
を備えることを特徴とする暗号処理装置。
【請求項２】
前記撹乱手段は、前記ブロックデータを奇数個に分岐し、前記分岐したブロックデータそれぞれを異なるビット数巡回シフトする
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記第１ブロック群に含まれるブロックデータの個数と、前記第２ブロック群に含まれるブロックデータの個数とは等しく、
前記第１融合手段は、前記第２ブロック群に含まれる全ての各ブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記攪乱手段は、前記第１及び第３ブロック群の全ブロックデータそれぞれについて、ブロックデータを２個以上に分岐する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記第２融合手段は、前記第４ブロック群に含まれる全ブロックデータそれぞれに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記第２融合手段において、融合する２つのブロックデータは、双方のブロックデータの生成過程で用いられたブロックデータが異なる
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項７】
前記データ変換手段は、更に、
前記取得手段により取得された前記入力データに、予め与えられた鍵データを融合させて前記第１融合手段に出力する鍵融合手段
を備えることを特徴とする請求項１に記載の暗号処理装置。
【請求項８】
前記鍵融合手段は、前記鍵データと前記入力データとを排他的論理和演算又は算術加算演算により融合する
ことを特徴とする請求項７に記載の暗号処理装置。
【請求項９】
前記データ変換手段は、更に、
前記出力手段による出力前に、前記出力データについて、前記出力データを２個以上に分岐し、分岐した出力データを巡回シフトし、巡回シフト結果を融合する最終攪乱手段
を備えることを特徴とする請求項１に記載の暗号処理装置。
【請求項１０】
ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換方法であって、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップと
を含むことを特徴とするデータ変換方法。
【請求項１１】
ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換プログラムであって、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップと
を含むことを特徴とするデータ変換プログラム。
【請求項１２】
請求項１１に記載のデータ変換プログラムが記録されていることを特徴とする記録媒体。
【請求項１３】
ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置に用いられる集積回路であって、
１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、
前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段と
を備えることを特徴とする集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】明細書
【発明の名称】暗号処理装置、データ変換方法、データ変換プログラム、記録媒体及び集積回路
【技術分野】
【０００１】
本発明は、暗号処理装置に関する。
【背景技術】
【０００２】
暗号処理装置は、ディジタル化された音楽や映像等のコンテンツを暗号化して配信する場合などに用いられている。コンテンツ等の配信においては高いセキュリティ性能が求められる。セキュリティ性能を高めるには、配信対象のデータに対する攪乱性能を高めることが有効である。
例えば、特許文献１には、高い攪乱性能を実現するためのデータ暗号化方法が開示されている。
【０００３】
特許文献１では、入力データを複数の同一データ長のブロックに分け、その分けられた各ブロックのデータ間に排他的論理和、加算及び剰余のうち少なくとも一の演算を施し、その演算結果に対し換字処理（テーブル変換演算処理）を施した後に結合することで、前記入力データに対する拡散を行っている。
【特許文献１】特開昭６２−１１３１９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術により高い攪乱性を実現するためには多数の換字処理が必要があり、この換字処理をハードウエアで実現するには多数のゲートが必要であるため、ハードウェアのゲート規模を小さくできないという問題があった。
前記問題に鑑み、本発明は高い攪乱性を実現しつつハードウエアのゲート規模を従来よりも小さくできる暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置であって、前記データ変換手段は、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段とを備える。
【０００６】
なお、本明細書中で暗号処理とは、復号化を除外するものではなく、広く暗号化及び復号化の両方を含む概念を指している。
また、本明細書中で巡回シフトとは、０ビット以上の巡回シフト、すなわち巡回シフトしない場合も含む概念を指している。
【発明の効果】
【０００７】
本発明の暗号処理装置は、上述の構成を備えることにより、ハードウェア規模の小さい、分岐、巡回シフト、融合によりデータの攪乱を行うので、ハードウエアのゲート規模を換字テーブルを用いる従来に比べて小さくすることができる。
また、前記撹乱手段は、前記ブロックデータを奇数個に分岐し、前記分岐したブロックデータそれぞれを異なるビット数巡回シフトすることとしてもよい。
【０００８】
この構成によれば、攪乱手段による変換が全単射変換になるため、攪乱性能を向上させることができる。
また、前記第１ブロック群に含まれるブロックデータの個数と、前記第２ブロック群に含まれるブロックデータの個数とは等しく、前記第１融合手段は、前記第２ブロック群に含まれる全ての各ブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することとしてもよい。
【０００９】
この構成によれば、全てのブロックデータを融合し、融合前のデータの推測を困難にすることができる。
また、前記攪乱手段は、前記第１及び第３ブロック群の全ブロックデータそれぞれについて、ブロックデータを２個以上に分岐することとしてもよい。
この構成によれば、全てのブロックデータを攪乱し、攪乱前のデータの推測を困難にすることができる。
【００１０】
また、前記第２融合手段は、前記第４ブロック群に含まれる全ブロックデータそれぞれに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することとしてもよい。
この構成によれば、全てのブロックデータを融合し、融合前のデータの推測を困難にすることができる。
【００１１】
また、前記第２融合手段において、融合する２つのブロックデータは、双方ののブロックデータの生成過程で用いられたブロックデータが異なることとしてもよい。
この構成によれば、入力データ中のあるデータが、他のデータの攪乱に影響を与える範囲を広げることができる。
また、前記データ変換手段は、更に、前記取得手段により取得された前記入力データに、予め与えられた鍵データを融合させて前記第１融合手段に出力する鍵融合手段を備えることとしてもよい。
【００１２】
また、前記鍵融合手段は、前記鍵データと前記入力データとを排他的論理和演算又は算術加算演算により融合することとしてもよい。
この構成によれば、予め入力データを融合して推測を困難にし、入力データが部分的にでも平文のまま処理されないようにし、機密性を高めることができる。
また、前記データ変換手段は、更に、前記出力手段による出力前に、前記出力データについて、前記出力データを２個以上に分岐し、分岐した出力データを巡回シフトし、巡回シフト結果を融合する最終攪乱手段を備えることとしてもよい。
【００１３】
この構成によれば、さらに攪乱度合いを大きくし、データの推測をより困難にすることができる。
本発明のデータ変換方法は、ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換方法であって、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップとを含む。
【００１４】
本発明のデータ変換プログラムは、ｎビットの入力データをｎビットの出力データに変換する暗号処理装置が備えるデータ変換手段に用いられるデータ変換プログラムであって、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得ステップと、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力ステップとを含む。
【００１５】
本発明の記録媒体は、前記データ変換プログラムが記録されている。
この構成によれば、換字テーブルを用いることなく、データを変換することができる。
本発明の集積回路は、ｎビットの入力データをｎビットの出力データに変換するデータ変換手段を備える暗号処理装置に用いられる集積回路であって、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成される前記入力データを取得する取得手段と、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、前記第５及び第６ブロック群のブロックデータから構成される前記出力データを出力する出力手段とを備える。
【００１６】
ハードウェア規模の小さい、分岐、巡回シフト、融合によりデータの攪乱を行うので、ハードウエアのゲート規模を換字テーブルを用いる従来に比べて小さくすることができる。
【発明を実施するための最良の形態】
本発明の一実施形態に係る暗号通信システムについて説明する。
図１は、暗号化装置２と復号化装置３とが通信路４を介して接続された暗号通信システム１の構成を示している。
【００１７】
暗号化装置２は、外部から入力される秘密にすべきメッセージである平文データＰＴを暗号化し、平文データＰＴを暗号化した結果である暗号化データＣＴを通信路４を介して復号化装置３へ送信する。
暗号化装置２は、換字変換を行うことなく暗号化の処理を行っており、これにより暗号化処理を行う部分のハードウェア規模は従来に比べ抑えられている。
【００１８】
復号化装置３は、暗号化装置２が送信した暗号化データＣＴを通信路４を介して受信し、暗号化データＣＴを復号することにより復号データＤＴを生成して外部へ出力する。
ここで、復号化装置３により暗号化データＣＴが正常に復号されれば、復号データＤＴと平文データＰＴとは一致することになる。また、通信路４上では、暗号化装置２から復号化装置３に送信されるデータは暗号化されているため、不正者が通信路４を盗聴しても秘密にすべきメッセージである平文データＰＴを知ることはできない。
【００１９】
通信路４は、データを伝送する通信路であり、例えば、インターネットや電話線、専用線、ＵＳＢケーブルなどである。
以下、暗号通信システム１の各構成要素について詳細に説明する。
１．構成
１．１．暗号化装置２の構成
暗号化装置２は、図１に示すように、入力部１１と暗号部１２と暗号化鍵保持部１３と送信部１４とを含んで構成される。
【００２０】
１．１．１．入力部１１、暗号化鍵保持部１３、送信部１４
入力部１１は、外部から６４ビットの平文データＰＴの入力を受け付け、入力された平文データＰＴを暗号部１２へ出力する。本実施の形態では、入力部１１は、キーボード及びコンピュータマウスを備えるものとする。暗号化装置２を保有するユーザが、前記キーボード及びコンピュータマウスを用いて秘密にすべきメッセージである平文データＰＴの入力を行う。
【００２１】
暗号化鍵保持部１３は、２５６ビットの暗号化鍵ＥＫを保持している。暗号化鍵ＥＫの値は、後述する復号化装置３が備える復号鍵保持部１７が保持している復号鍵ＤＫの値と同じである。
送信部１４は、暗号部１２から暗号化データＣＴを受け取り、通信路４を介して暗号化データＣＴを復号化装置３へ送信する。
【００２２】
１．１．２．暗号部１２
暗号部１２は、平文データＰＴを受け取り、暗号化鍵保持部１３から暗号化鍵ＥＫを取得し、暗号化鍵ＥＫを用いて平文データＰＴを暗号化して、その暗号化の結果である暗号化データＣＴを送信部１４へ出力する。
暗号部１２は、図２に示すように、鍵生成要求部２１と鍵制御部２２とデータ攪乱部２３と回数制御部２４とデータ入替部２５とを含んで構成される。暗号部１２は、具体的には複数の機能部を有する専用のマイクロコンピュータ等である。各機能部は、マイクロコンピュータ中に書き込まれているプログラムによって実現される。なお、各機能部は、それぞれ独立したマイクロコンピュータとしてもよい。
【００２３】
１．１．２．１．鍵生成要求部２１、鍵制御部２２、回数制御部２４、データ入替部２５
鍵生成要求部２１は、入力部１１から平文データＰＴを入力データＩＮとして受け取り、部分鍵生成要求ＲＥＱＳＫを鍵制御部２２へ出力し、回数制御部２４に対しリセット信号を出力し、入力データＩＮをデータ攪乱部２３に出力する。鍵生成要求部２１は、回数制御部２４から入力データＩＮを受け取ると、入力データＩＮをデータ攪乱部２３に出力する。
【００２４】
鍵制御部２２は、鍵生成要求部２１から部分鍵生成要求ＲＥＱＳＫを受け付けると、暗号化鍵保持部１３から２５６ビットの暗号化鍵ＥＫを取得し、暗号化鍵ＥＫをそれぞれが３２ビット長の部分鍵ＳＫ１〜ＳＫ８に分割する。具体的には、暗号化鍵ＥＫの１ビット目から３２ビット目までの値が部分鍵ＳＫ１となり、暗号化鍵ＥＫの３３ビット目から６４ビット目までの値が部分鍵ＳＫ２となり、・・・、暗号化鍵ＥＫの２２５ビット目から２５６ビット目までの値が部分鍵ＳＫ８となる。
【００２５】
鍵制御部２２は、回数制御部２４から値がｉ（ｉは１以上８以下の自然数）である部分鍵番号を受け付けると、部分鍵番号に対応する部分鍵ＳＫｉをデータ攪乱部２３に出力する。例えば、部分鍵番号が１であった場合、鍵制御部２２は部分鍵ＳＫ１をデータ攪乱部２３に出力する。
データ攪乱部２３は、鍵生成要求部２１から６４ビットの入力データＩＮを取得し、かつ鍵制御部２２から３２ビットの部分鍵データＳＫｉを取得した場合に、部分鍵データＳＫｉ及び入力データＩＮを用いて攪乱処理を行い、その結果である６４ビットの出力データＯＵＴを回数制御部２４へと出力する。データ攪乱部２３の詳細は後述する。
【００２６】
回数制御部２４は、データ攪乱部２３による攪乱処理の回数を計数して、所定攪乱回数だけ攪乱処理が実行されるように制御する。本実施の形態では、前記所定攪乱回数は８回とする。
回数制御部２４は、鍵生成要求部２１からリセット信号を受け付けると、計数値を０にリセットし、（計数値＋１）を部分鍵番号として鍵制御部２２に送信する。リセット直後の場合、鍵制御部２２に送信される部分鍵番号は１である。
【００２７】
そして、データ攪乱部２３から出力データＯＵＴを受け取ると、計数値を１インクリメントし、計数値が所定攪乱回数未満である場合に（計数値＋１）を部分鍵番号として鍵制御部２２に送信すると共に、受け取った出力データＯＵＴを、入力データＩＮとして鍵生成要求部２１に出力する。
計数値が所定攪乱回数と同じである場合には、回数制御部２４は鍵制御部２２に部分鍵番号を送信せず、データ攪乱部２３から受け取った出力データＯＵＴを、中間データＣＣＴとしてデータ入替部２５に出力する。
【００２８】
ここで、中間データＣＣＴは、６４ビットデータである。
データ入替部２５は、中間データＣＣＴを取得すると、中間データＣＣＴの下位３２ビットの値と上位３２ビットの値とを入れ替えて、その入れ替えた結果である暗号化データＣＴを送信部１４へ出力する。
１．１．２．２．データ攪乱部２３
以下、データ攪乱部２３について図３を用いて詳細に説明する。
【００２９】
データ攪乱部２３は、分割部３１、データ変換部３２、排他的論理和部３３及び結合部３４を含んで構成される。
分割部３１は、６４ビットの入力データＩＮを取得すると、入力データＩＮの下位３２ビットの値であるＸ０を排他的論理和部３３へ出力し、上位３２ビットの値であるＸ１をデータ変換部３２へ出力する。また、分割部３１は、Ｙ０としてＸ１を結合部３４へ出力する。
【００３０】
排他的論理和部３３は、分割部３１から取得するＸ０と、データ変換部３２から取得するＸ２とのビット単位の排他的論理和（Ｅｘｃｌｕｓｉｖｅ  ＯＲ、ＸＯＲ）を演算し、その結果Ｙ１（＝Ｘ０（＋）Ｘ２）を結合部３４へ出力する。
ここで、“（＋）”との記載は排他的論理和演算を表すものとする。
結合部３４は、分割部３１からＹ０を取得し、排他的論理和部３３からＹ１を取得する。そして、結合部３４は、Ｙ０を下位３２ビットとしＹ１を上位３２ビットとして結合し、その結合結果である６４ビットの出力データＯＵＴを回数制御部２４へ出力する。
【００３１】
データ変換部３２は、分割部３１からＸ１を取得し、かつ鍵制御部２２から部分鍵ＳＫｉ（ＳＫｉはＳＫ１からＳＫ８の何れか）を取得した場合に、部分鍵ＳＫｉを用いてＸ１をデータ変換することにより３２ビットのＸ２を生成する。そして、データ変換部３２は、生成されたＸ２を排他的論理和部３３へ出力する。
図４は、データ変換部３２の構成を示すブロック図である。
【００３２】
データ変換部３２は、加算部４１とブロック分割部４２と第１融合部４３と第１攪乱部４４と第２融合部４５とブロック結合部４６と第２攪乱部４７とを含んで構成される。
加算部４１は、分割部３１からＸ１を受け付け、鍵制御部２２から部分鍵ＳＫｉを受け付けた場合に、Ｘ１とＳＫｉを算術加算する。その結果であるＴ（＝Ｘ１＋ＳＫｉ）をブロック分割部４２へ出力する。
【００３３】
ここで算術加算とは、通常の繰り上がりのある加算のことであるが、３３ビット目に関しては切り捨てる。言い換えると、ここでの算術加算の結果は、通常の繰り上がりのある加算結果を２＾３２で割った余りとなる。ここで、“＾”の記載はべき乗演算を表し、例えば２＾５＝３２である。
ブロック分割部４２は、加算部４１から前述の３２ビットの値Ｔを受け付け、Ｔをそれぞれが８ビットのデータからなる４つのブロックＡ１、Ｂ１、Ａ２、Ｂ２に分割して第１融合部４３へ出力する。ここで、Ｔの１ビット目から８ビット目までがＢ２となり、９ビット目から１６ビット目までがＡ２となり、１７ビット目から２４ビット目までがＢ１となり、２５ビット目から３２ビット目までがＡ１となる。
【００３４】
第１融合部４３は、図５に示すように、それぞれが排他的論理和を計算する排他的論理和部５１及び排他的論理和部５２を含んで構成される。
第１融合部４３は、ブロック分割部４２から、Ａ１、Ｂ１、Ａ２、Ｂ２を受け取る。そして、Ａ１、Ａ２については、そのまま、第１攪乱部４４に出力する。以下、そのまま第１攪乱部４４に出力されるＡ１及びＡ２から成るブロックデータ群を第１ブロックデータ群という。
そして、Ｂ１に対しては、排他的論理和部５１によりＡ１との排他的論理和を計算し、その結果Ｃ１（＝Ｂ１（＋）Ａ１）を第１攪乱部４４に出力する。
また、Ｂ２に対しては、排他的論理和部５２によりＡ２との排他的論理和を計算し、その結果Ｃ２（＝Ｂ２（＋）Ａ２）を第１攪乱部４４に出力する。
【００３５】
以下、排他的論理和の計算がなされるＢ１、Ｂ２から成るブロックデータ群を第２ブロックデータ群といい、その計算結果であるＣ１、Ｃ２から成るブロックデータ群を第３ブロックデータ群という。
第１攪乱部４４は、図６に示すように、３ビットローテーション部５５、５ビットローテーション部５６、２ビットローテーション部５７、６ビットローテーション部５８、４ビットローテーション部５９、７ビットローテーション部６０、１ビットローテーション部６１、５ビットローテーション部６２、排他的論理和部６３〜６６を含んで構成される。
【００３６】
ここで、図６中に示した記号“＜＜Ｘ”は、入力値に対してＸビットの巡回シフトを行うことを示している。
第１攪乱部４４は、第１融合部４３からＡ１、Ｃ１、Ａ２、Ｃ２とを受け付ける。
３ビットローテーション部５５、５ビットローテーション部５６、２ビットローテーション部５７、６ビットローテーション部５８、４ビットローテーション部５９、７ビットローテーション部６０、１ビットローテーション部６１、５ビットローテーション部６２のそれぞれは、ローテーション演算として、巡回シフト演算を行う。例えば３ビットローテーション部５５は、入力データに対して３ビット巡回シフト演算を施す。入力データが２進数で００１１００００の場合、入力データが３ビット巡回シフトされた結果は、１００００００１となる。
【００３７】
第１攪乱部４４が受け付けたＡ１は、３ビットローテーション部５５、５ビットローテーション部５６、排他的論理和部６３のそれぞれに供給される。
このように、ブロックデータを複数の処理部に入力することを、以下、分岐するという。
３ビットローテーション部５５は、Ａ１を３ビット巡回シフト演算し、その結果（Ｒｏｔ（Ａ１，３））を排他的論理和部６３に出力する。
【００３８】
ここで、「Ｒｏｔ（Ｘ，Ｙ）」の表記は、ＸをＹビット巡回シフトした値を表す。５ビットローテーション部５６は、Ａ１を５ビットの巡回シフト演算し、その結果（Ｒｏｔ（Ａ１，５））を排他的論理和部６３に出力する。排他的論理和部６３は、Ａ１、Ｒｏｔ（Ａ１，３）、Ｒｏｔ（Ａ１，５）の排他的論理和を生成し、その結果Ｄ１（＝Ａ１（＋）Ｒｏｔ（Ａ１，３）（＋）Ｒｏｔ（Ａ１，５））を第２融合部４５に出力する。
【００３９】
Ｃ１は、２ビットローテーション部５７、６ビットローテーション部５８、排他的論理和部６４のそれぞれに供給される。２ビットローテーション部５７は、Ａ１を２ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ１，２））を排他的論理和部６４に出力する。６ビットローテーション部５８は、Ｃ１を６ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ１，６））を排他的論理和部６４に出力する。排他的論理和部６４は、Ｃ１、Ｒｏｔ（Ｃ１，２）、Ｒｏｔ（Ｃ１，６）の排他的論理和を生成し、その結果Ｅ１（＝Ｃ１（＋）Ｒｏｔ（Ｃ１，２）（＋）Ｒｏｔ（Ｃ１，６））を第２融合部４５に出力する。
【００４０】
Ａ２は、４ビットローテーション部５９、７ビットローテーション部６０、排他的論理和部６５のそれぞれに供給される。４ビットローテーション部５９は、Ａ２を４ビット巡回シフト演算し、その結果（Ｒｏｔ（Ａ２，４））を排他的論理和部６５に出力する。７ビットローテーション部６０は、Ａ２を７ビット巡回シフト演算し、その結果（Ｒｏｔ（Ａ２，７））を排他的論理和部６５に出力する。排他的論理和部６５は、Ａ２、Ｒｏｔ（Ａ２，４）、Ｒｏｔ（Ａ２，７）の排他的論理和を生成し、その結果Ｄ２（＝Ａ２（＋）Ｒｏｔ（Ａ２，４）（＋）Ｒｏｔ（Ａ２，７））を第２融合部４５に出力する。
【００４１】
Ｃ２は、１ビットローテーション部６０、５ビットローテーション部６２、排他的論理和部６６のそれぞれに供給される。１ビットローテーション部６１は、Ｃ２を１ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ２，１））を排他的論理和部６６に出力する。５ビットローテーション部６２は、Ｃ２を５ビット巡回シフト演算し、その結果（Ｒｏｔ（Ｃ２，５））を排他的論理和部６６に出力する。排他的論理和部６６は、Ｃ２、Ｒｏｔ（Ｃ２，１）、Ｒｏｔ（Ｃ２，５）の排他的論理和を生成し、その結果Ｅ２（＝Ｃ２（＋）Ｒｏｔ（Ｃ２，１）（＋）Ｒｏｔ（Ｃ２，５））を第２融合部４５に出力する。
【００４２】
ここで、第１ブロックデータ群（Ａ１、Ａ２）に対する攪乱処理の結果であるＤ１、Ｄ２から成るデータブロック群を、以下、第４ブロックデータ群という。また、第３ブロックデータ群（Ｃ１、Ｃ２）に対する攪乱処理の結果であるＥ１、Ｅ２から成るデータブロック群を、以下、第５ブロックデータ群という。
第２融合部４５は、図７に示すように、排他的論理和部７１及び排他的論理和部７２を含んで構成されており、第１攪乱部４４からＤ１、Ｅ１、Ｄ２、Ｅ２を受け付ける。第２融合部４５は、Ｅ１及びＥ２を分岐し、分岐された一方のＥ１及びＥ２については、そのままブロック結合部４６に対して出力する。
【００４３】
そして、Ｄ１について、排他的論理和部７１が、分岐されたもう一方のＥ２との排他的論理和を演算し、その結果をＦ１（＝Ｄ１（＋）Ｅ２）をブロック結合部４６に対し出力する。
そして、Ｄ２について、排他的論理和部７２が、分岐されたもう一方のＥ１との排他的論理和を演算し、その結果をＦ２（＝Ｄ２（＋）Ｅ１）をブロック結合部４６に対し出力する。
【００４４】
排他的論理和演算の結果であるＦ１及びＦ２から成るブロックデータ群を、以下、第６ブロックデータ群という。
ここで、第１融合部４３と第２融合部４５とでは、融合させるブロックの組み合わせが異なる。すなわち、第１融合部４３では、左から１番目のブロック（Ａ１）と２番目のブロック（Ｂ１）を融合し、また、３番目のブロック（Ａ２）と４番目のブロック（Ｂ２）を融合している。これに対し、第２融合部４５では、左から１番目のブロック（Ｄ１）と４番目のブロック（Ｅ２）を融合し、また、２番目のブロック（Ｅ１）と３番目のブロック（Ｄ２）を融合している。
【００４５】
これは例えば１ビットだけ値の異なる複数の入力データが与えられた時に、その１ビットの違いが出力データに影響する範囲を広げるためである。
ブロック結合部４６は、第２融合部４５から、第５ブロックデータ群に含まれるＥ１、Ｅ２及び第６ブロックデータ群に含まれるＦ１、Ｆ２を受け付けると、Ｆ１とＦ２とＥ１とＥ２を結合し、その結合結果である３２ビットの値Ｇを第２攪乱部４７へ出力する。ここで、Ｅ２がＧの１ビット目から８ビット目となり、Ｆ２がＧの９ビット目から１６ビット目となり、Ｅ１がＧの１７ビット目から２４ビット目となり、Ｆ１がＧの２５ビット目から３２ビット目となる。
【００４６】
第２攪乱部４７は、１３ビットローテーション部７３、１７ビットローテーション部７４及び排他的論理和部７５を含んで構成されており、ブロック結合部４６からＧを受け取る。
Ｇは、１３ビットローテーション部７３、１７ビットローテーション部７４、排他的論理和部７５のそれぞれに供給される。
【００４７】
１３ビットローテーション部７３は、Ｇを１３ビットの巡回シフト演算し、その結果（Ｒｏｔ（Ｇ，１３））を排他的論理和部７５に出力する。１７ビットローテーション部７４は、Ｇを１７ビットの巡回シフト演算し、その結果（Ｒｏｔ（Ｇ，５））を排他的論理和部７５に出力する。排他的論理和部７５は、Ｇ、Ｒｏｔ（Ｇ，１３）、Ｒｏｔ（Ｇ，１７）の排他的論理和を生成し、その結果Ｘ２（＝Ｇ（＋）Ｒｏｔ（Ｇ，１３）（＋）Ｒｏｔ（Ｇ，１７））を排他的論理和部３３に出力する。
【００４８】
１．２．復号化装置３の構成
次に、復号化装置３について説明する。
復号化装置３は、図１に示すように、出力部１５、復号部１６、復号鍵保持部１７及び受信部１８を含んで構成される。
１．２．１．出力部１５、復号鍵保持部１７、受信部１８
出力部１５は、復号部１６から復号データＤＴを取得して外部へと出力する。例えば、出力部１５にはディスプレイが接続されており、出力部１５は、復号データＤＴを前記ディスプレイに表示させる。
【００４９】
復号鍵保持部１７は、２５６ビットの復号鍵ＤＫを保持している。復号鍵ＤＫの値は、暗号化装置２の暗号化鍵保持部１３が保持している暗号化鍵ＣＫの値と同じである。
受信部１８は、暗号化装置２の送信部１４から通信路４を介して暗号化データＣＴを受信し、その暗号化データＣＴを復号部１６へ出力する。
１．２．２．復号部１６
復号部１６は、図９に示すように、鍵生成要求部８１、鍵制御部８２、データ攪乱部８３及び回数制御部８４を含んで構成される。復号部１６は、具体的には複数の機能部を有する専用のマイクロコンピュータ等である。各機能部は、マイクロコンピュータ中に書き込まれているプログラムによって実現される。なお、各機能部は、独立のマイクロコンピュータであってもよい。
【００５０】
鍵生成要求部８１は、受信部１８から暗号化データＣＴの入力を受け付けた場合に、部分鍵生成要求ＲＥＱＳＫを鍵制御部８２へ出力し、回数制御部８４に対しリセット信号を出力し、暗号化データＣＴを入力データＩＮとしてデータ攪乱部８３に出力する。
鍵生成要求部８１は、回数制御部８４から入力データＩＮを受け取ると、その入力データＩＮをデータ攪乱部８３に出力する。
【００５１】
鍵制御部８２は、鍵生成要求部８１から部分鍵生成要求ＲＥＱＳＫを受け付けると、復号化鍵保持部３３から２５６ビットの復号鍵ＤＫを取得し、復号鍵ＤＫをそれぞれが３２ビット長の部分鍵ＳＫ１〜ＳＫ８に分割する。具体的には、復号化鍵ＤＫの１ビット目から３２ビット目までの値が部分鍵ＳＫ１となり、復号鍵ＤＫの３３ビット目から６４ビット目までの値が部分鍵ＳＫ２となり、・・・、復号鍵ＤＫの２２５ビット目から２５６ビット目までの値が部分鍵ＳＫ８となる。
【００５２】
鍵制御部８２は、回数制御部８４から値がｊ（ｊは１以上８以下の自然数）である部分鍵番号を受け付けると、部分鍵番号に対応する部分鍵ＳＫｊをデータ攪乱部８３に出力する。例えば部分鍵番号の値が１である場合、鍵制御部８２は、部分鍵ＳＫ１をデータ攪乱部８３に出力する。
データ攪乱部８３は、鍵生成要求部８１から６４ビットの入力データＩＮを取得し、かつ鍵制御部８２から３２ビットの部分鍵ＳＫｊを取得した場合に、部分鍵ＳＫｊと入力データＩＮとを用いて攪乱処理を行い、その結果である６４ビットの出力データＯＵＴを回数制御部８４へ出力する。データ攪乱部８３の構成は、データ攪乱部２３の構成と同じであるため、説明は省略する。
【００５３】
回数制御部８４は、データ攪乱部８３による攪乱処理の回数を計数して、所定攪乱回数だけ攪乱処理が実行されるように制御する。本実施の形態では、前記所定攪乱回数は８回とする。
回数制御部８４は、鍵生成要求部８１からリセット信号を受け付けると、計数値を０にリセットし、（８−計数値）を部分鍵番号として鍵制御部８２に送信する。この場合、鍵制御部８２に送信される部分鍵番号は８である。
【００５４】
そして、データ攪乱部８３から出力データＯＵＴを受け取ると、計数値を１インクリメントし、計数値が所定攪乱回数未満である場合に（８−計数値）を部分鍵番号として鍵制御部２２に送信する。すなわち、暗号化装置２での暗号化に用いた順序とは逆の順序で部分鍵を出力する。そして、回数制御部８４は、受け取った出力データＯＵＴを、入力データＩＮとして鍵生成要求部８１に出力する。
【００５５】
計数値が所定攪乱回数と同じである場合には、回数制御部８４は鍵制御部８２に部分鍵番号を送信せず、データ攪乱部８３から受け取った出力データＯＵＴを、復号中間データＤＣＴとしてデータ入替部８５に出力する。ここで、復号中間データＤＣＴは、６４ビットデータである。
データ入替部８５は、６４ビットの復号中間データＤＣＴを取得すると、復号中間データＤＣＴの下位３２ビットの値と上位３２ビットの値とを入れ替えて、その入れ替えた結果である復号データＤＴを出力部１５へ出力する。
【００５６】
２．データ処理
２．１．暗号化処理
次に、上述のように構成された暗号化装置２によって、入力データＩＮに対して成される暗号化処理について図面を用いて説明する。
図１０及び図１１は、暗号化装置２による暗号化処理を示す図である。
【００５７】
暗号化装置２において、まず、ＰＴがＩＮとして取得される（ステップＳ１）。
次に、内部変数である計数値が０に初期化される（ステップＳ２）。
ＩＮは、上位３２ビットの値Ｘ１と下位３２ビットＸ０に分割される（ステップＳ３）。
そして、部分鍵ＳＫｉとＸ１とを用いてＴが生成される（ステップＳ５）。
【００５８】
Ｔ  ←（ＳＫｉ＋Ｘ１）％２＾３２
ここで、ｉは、計数値＋１である（ステップＳ４）。また”←“の記載は、代入を示し、”Ｘ％Ｙ“の記載は、剰余、即ちＸをＹで除算した場合の余りを示す。
Ｔは３２ビットの値であり、上位から８ビットずつ４つに区切られる（ステップＳ６）。その区切られた８ビットのデータが、それぞれＡ１、Ｂ１、Ａ２、Ｂ２である。
【００５９】
次に、Ｃ１、Ｃ２がＡ１、Ｂ１、Ａ２、Ｂ２を用いて生成される（ステップＳ７）。
Ｃ１  ←  Ｂ１（＋）Ａ１
Ｃ２  ←  Ｂ２（＋）Ａ２
次に、Ｄ１、Ｅ１、Ｄ２、Ｅ２のそれぞれが、Ａ１、Ｃ１、Ａ２、Ｃ２のそれぞれを用いて生成される（ステップＳ８）。
【００６０】
Ｄ１  ←  Ａ１（＋）Ｒｏｔ（Ａ１，３）（＋）Ｒｏｔ（Ａ１，５）
Ｅ１  ←  Ｃ１（＋）Ｒｏｔ（Ｃ１，２）（＋）Ｒｏｔ（Ｃ１，６）
Ｄ２  ←  Ａ２（＋）Ｒｏｔ（Ａ２，４）（＋）Ｒｏｔ（Ａ２，７）
Ｅ２  ←  Ｃ２（＋）Ｒｏｔ（Ｃ２，１）（＋）Ｒｏｔ（Ｃ２，５）
次に、Ｆ１とＦ２とが、Ｄ１、Ｅ１、Ｄ２、Ｅ２を用いて生成される（ステップＳ９）。
【００６１】
Ｆ１  ←  Ｄ１（＋）Ｅ２
Ｆ２  ←  Ｄ２（＋）Ｅ１
そして、Ｇが、Ｆ１、Ｆ２、Ｅ１、Ｅ２を連結することにより生成される（ステップＳ１０）。
Ｇ  ←  Ｆ１  ||  Ｆ２  ||  Ｅ１  ||  Ｅ２
ここで、”||”の記載は、ビット連結を示している。
【００６２】
そして、Ｘ２がＧを用いて生成される（ステップＳ１１）。
Ｘ２  ←  Ｇ（＋）Ｒｏｔ（Ｇ，１３）（＋）Ｒｏｔ（Ｇ，１７）
次に、Ｙ１がＸ０、Ｘ２を用いて生成される（ステップＳ１２）。
Ｙ１  ←  Ｘ０（＋）Ｘ２
次に、ＯＵＴが、Ｙ０と、Ｙ１とを用いて生成される（ステップＳ１３）。
【００６３】
ＯＵＴ  ←  Ｙ１  ||  Ｙ０
ここで、Ｙ０は、Ｘ１と値が同一である。
次に、計数値が１インクリメントされ（ステップＳ１４）、前記計数値が８未満の場合（ステップＳ１５：ＹＥＳ）、ステップＳ１３で生成された出力データＯＵＴを入力データＩＮとして（ステップＳ１６）、その入力データＩＮに対しステップＳ３からの処理が繰り返される。
【００６４】
前記計数値が８以上である場合（ステップＳ１５：ＮＯ）、ステップＳ１３で生成された出力データＯＵＴを中間データＣＣＴとし（ステップＳ１７）、中間データＣＣＴの上位３２ビットと下位３２ビットの値を入れ替えることにより、その入れ替え結果である暗号化データＣＴが生成される（ステップＳ１８）。
２．２．復号処理
次に、上述の暗号化処理により生成されたＣＴが、上述のように構成された復号化装置３によって復号処理される手順を図面を用いて説明する。
【００６５】
復号化装置３において、まず、ＣＴがＩＮとして取得される（ステップＳ３１）。
次に、内部変数である計数値が０に初期化される（ステップＳ３２）。
ＩＮは、上位３２ビットの値Ｘ１と下位３２ビットＸ０に分割される（ステップＳ３３）。
そして、部分鍵ＳＫｊとＸ１とを用いてＴが生成される（ステップＳ３５）。
【００６６】
Ｔ  ←（ＳＫｊ＋Ｘ１）％２＾３２
ここで、ｊは、８−計数値である（ステップＳ３４）。
Ｔは３２ビットの値であり、上位から８ビットずつ４つに区切られる（ステップＳ３６）。その区切られた８ビットのデータが、それぞれＡ１、Ｂ１、Ａ２、Ｂ２である。
次に、Ｃ１、Ｃ２がＡ１、Ｂ１、Ａ２、Ｂ２を用いて生成される（ステップＳ３７）。
【００６７】
Ｃ１  ←  Ｂ１（＋）Ａ１
Ｃ２  ←  Ｂ２（＋）Ａ２
次に、Ｄ１、Ｅ１、Ｄ２、Ｅ２のそれぞれがＡ１、Ｃ１、Ａ２、Ｃ２のそれぞれを用いて生成される（ステップＳ３８）。
Ｄ１  ←  Ａ１（＋）Ｒｏｔ（Ａ１，３）（＋）Ｒｏｔ（Ａ１，５）
Ｅ１  ←  Ｃ１（＋）Ｒｏｔ（Ｃ１，２）（＋）Ｒｏｔ（Ｃ１，６）
Ｄ２  ←  Ａ２（＋）Ｒｏｔ（Ａ２，４）（＋）Ｒｏｔ（Ａ２，７）
Ｅ２  ←  Ｃ２（＋）Ｒｏｔ（Ｃ２，１）（＋）Ｒｏｔ（Ｃ２，５）
次に、Ｆ１とＦ２とが、Ｄ１、Ｅ１、Ｄ２、Ｅ２を用いて生成される（ステップＳ３９）。
【００６８】
Ｆ１  ←  Ｄ１（＋）Ｅ２
Ｆ２  ←  Ｄ２（＋）Ｅ１
そして、Ｇが、Ｆ１、Ｆ２、Ｅ１、Ｅ２を連結することにより生成される（ステップＳ４０）。
Ｇ  ←  Ｆ１  ||  Ｆ２  ||  Ｅ１  ||  Ｅ２
ここで、”||”の記載は、ビット連結を示している。
【００６９】
そして、Ｘ２がＧを用いて生成される（ステップＳ４１）。
Ｘ２  ←  Ｇ（＋）Ｒｏｔ（Ｇ，１３）（＋）Ｒｏｔ（Ｇ，１７）
次に、Ｙ１がＸ０、Ｘ２を用いて生成される（ステップＳ４２）。
Ｙ１  ←  Ｘ０（＋）Ｘ２
次に、ＯＵＴが、Ｙ０と、Ｙ１とを用いて生成される（ステップＳ４３）。
【００７０】
ＯＵＴ  ←  Ｙ１  ||  Ｙ０
ここで、復号化に成功すれば、Ｙ０は、Ｘ１と値が同一である。
次に、計数値が１インクリメントされ（ステップＳ４４）、前記計数値が８未満７の場合（ステップＳ４５：ＹＥＳ）、ステップＳ４３で生成された出力データＯＵＴを暗号化データＣＴとして（ステップＳ４６）、その暗号化データＣＴに対しステップＳ３３からの処理を繰り返す。
【００７１】
前記計数値が８以上である場合（ステップＳ４５：ＮＯ）、ステップＳ３３で生成された出力データＯＵＴを復号中間データＤＣＴとし（ステップＳ４７）、復号中間データＤＣＴの上位３２ビットと下位３２ビットの値を入れ替えることにより、その結果である復号データＤＴが生成される（ステップＳ４８）。
３．効果
以下に、これまで説明してきた本発明により、高い撹乱性が得られるという効果を奏することについて説明する。撹乱性の評価には、既存の評価手法を用いる。前記評価手法では、ある入力データを入力して得られる出力データと、前記入力データとは１ビット異なるデータを入力して得られる出力データとが、何ビット異なっているかを指標とする。各出力データを比較して異なるビット数が多いほど撹乱性が高いことになる。
【００７２】
ここでは、データ変換部３２における加算部４１に対し、１ビット異なる２つの入力データを入力するものとする。２つの入力データはそれぞれブロック分割部４２、第１融合部４３、第１攪乱部４４、第２融合部４５及びブロック結合部４６により処理される。そして、２つの入力データに対応するブロック結合部４６からの出力を比較して攪乱性を評価するものとする。
【００７３】
２つの入力データのどの位置のビットが異なっているかによって評価結果が異なるので４つの場合に分けて説明する。
３．１．２つの入力データの間で、１ビット目から８ビット目までの何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、１ビット目から８ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。
【００７４】
具体的には、２つの入力データは、ブロック分割部４２における分割後にＢ２となる箇所に含まれる１ビットが異なるものとする。
まず、２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ｂ２のうち１ビットが異なり、他のＡ１、Ｂ１、Ａ２は全く同じとなる。
そして、第１融合部４３において、Ａ２がＢ２に融合されるが、Ａ２はいずれの入力データでも同一なので、融合によって互いに異なるビット数が増減することはない。よって、第１融合部４３の出力は、Ｃ２のうち１ビットが異なり、他のＡ１、Ｃ１、Ａ２は入力データがどちらでも全く同じとなる。
【００７５】
続いて、第１攪乱部４４において、第１融合部４３の出力の攪乱処理がされる。
第１攪乱部４４の攪乱処理は、入力が１ビット異なっている場合、出力が必ず３ビット異なる構成となっている。これは、１ビット異なっている部分をそれぞれ異なるシフト数（ローテーション量）で巡回シフト（ローテーション）し、シフトされた値を融合しているためである。
【００７６】
よって、入力Ｃ２に対応する第１攪乱部４４の出力Ｅ２は、３ビット異なっていることになる。他のＤ１、Ｅ１、Ｄ２は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので全く同じとなる。
そして、第２融合部４５において、Ｅ２はＤ１に融合される。Ｅ２は３ビット異なっており、Ｄ１は入力データがどちらでも全く同じであるため、融合後の出力Ｆ１は、必ず３ビット異なっていることになる。また、他のＥ１、Ｆ２はいずれの入力データでも全く同じとなる。
【００７７】
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｆ１とＥ２がそれぞれ３ビットずつ異なるので、結合された値、即ち出力が６ビット異なることになる。
３．２．２つの入力データの間で、９ビット目から１６ビット目までの何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、９ビット目から１６ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。
具体的には、２つの入力データは、ブロック分割部４２における分割後にＡ２となる箇所に含まれる１ビットが異なるものとする。
【００７８】
まず、その２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ａ２のうち１ビットが異なり、他のＡ１、Ｂ１、Ｂ２は全く同じとなる。
そして、第１融合部４３において、１ビット異なるＡ２が全く同じＢ２に融合される。よって、第１融合部４３の出力のうち、Ａ２およびＣ２の１ビットが異なることになる。そして他のＡ１、Ｃ１は入力データがどちらでも全く同じとなる。続いて、第１攪乱部４４において、第１融合部４３の出力の攪乱処理がされる。入力Ａ２と入力Ｃ２に対応する第１攪乱部４４の出力Ｄ２とＥ２は、それぞれ３ビット異なることになる。他のＤ１、Ｅ１は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので、全く同じとなる。
【００７９】
そして、第２融合部４５において、Ｅ２はＤ１に融合される。Ｅ２は３ビット異なっており、Ｄ１はどちらの入力データでも全く同じであるため、融合後の出力Ｆ１は、必ず３ビット異なる。よって、第２融合部４５の出力のうち、Ｆ１とＦ２とＥ２がそれぞれ３ビット異なることになる。
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｆ１とＦ２とＥ２がそれぞれ３ビットずつ異なるので、結合された値、即ち、出力が最低９ビット異なることになる。
【００８０】
３．３．２つの入力データの間で、１７ビット目から２４ビット目の何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、１７ビット目から２４ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。具体的には、２つの入力データは、ブロック分割部４２における分割後にＢ１となる箇所に含まれる１ビットが異なるものとする。
【００８１】
まず、その２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ｂ１のうち１ビットが異なり、他のＡ１、Ａ２、Ｂ２は全く同じとなる。
そして、第１融合部４３において、Ａ１がＢ１に融合されてもＡ１はどちらの入力データでも同一のため、融合によって互いに異なるビット数は増減しない。よって、第１融合部４３の出力は、Ｃ１のうち１ビットが異なり、他のＡ１、Ａ２、Ｃ２は入力データがどちらでも全く同じとなる。続いて、第１攪乱部４４において、第１融合部４３の出力の攪乱処理がされる。入力Ｃ１に対応する第１攪乱部４４の出力Ｅ１は、３ビット異なっていることになる。他のＤ１、Ｄ２、Ｅ２は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので、全く同じとなる。
【００８２】
そして、第２融合部４５において、Ｅ１はＤ２に融合される。Ｅ１は３ビット異なっており、Ｄ２は全く同じであるため、融合後の出力Ｆ２は必ず３ビット異なっていることになる。
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｅ１とＦ２がそれぞれ３ビットずつ異なるので、結合された値、即ち、出力が最低６ビット異なることになる。
【００８３】
３．４．２つの入力データの間で、２５ビット目から３２ビット目の何れか１ビットが異なる場合
２つの３２ビット入力データにおいて、２５ビット目から３２ビット目の何れか１ビットが相異なり、残りの３１ビットが全て同じである場合について説明する。具体的には、２つの入力データは、ブロック分割部４２での分割後にＡ１となる箇所に含まれる１ビットが異なるものとする。
【００８４】
まず、その２つの入力データそれぞれをブロック分割部４２に入力する。上述の通り、ブロック分割部４２によるそれぞれの入力データの分割結果は、Ａ１のうち１ビットが異なり、他のＢ１、Ａ２、Ｂ２は全く同じとなる。
そして、第１融合部４３において、１ビット異なるＡ１が全く同じＢ１に融合されてＣ１となる。よって、第１融合部４３の出力のうち、Ａ１およびＣ１の１ビットが異なることになる。
【００８５】
そして他のＡ２、Ｃ２は入力データがどちらでも全く同じとなる。続いて、第１攪乱部４４において、Ａ１とＣ１の攪乱処理がされる。
入力Ａ１と入力Ｃ１に対応する第１攪乱部４４の出力Ｄ１とＥ１は、それぞれ３ビット異なる。他のＤ２、Ｅ２は、どちらの入力データの場合でも撹乱対象となるデータが同一になるので全く同じとなる。
【００８６】
そして、第２融合部４５において、Ｅ１はＤ２に融合される。Ｅ１は３ビット異なっており、Ｄ２は入力データがどちらでも全く同じであるため、融合後の出力Ｆ２は必ず３ビット異なっていることになる。
最後に、ブロック結合部４６において、Ｆ１、Ｅ１、Ｆ２、Ｅ２が結合される。ここで、Ｆ１とＥ１とＦ２がそれぞれ３ビットずつ異なるので、結合された値、即ち、出力が最低９ビット異なることになる。
３．５．まとめ
以上説明したように、データ変換部３２への２つの入力が１ビットだけ異なる場合に、ブロック結合部４６の対応する２つの出力が最低６ビット違うこととなり、高い撹乱性を実現できている。
【００８７】
ここで、データ変換部３２の構成の中に、換字処理（テーブル変換演算）は含まれておらず、全て分割手段と排他的論理和と巡回シフト（ローテーション）から構成される。この構成によると、換字処理（テーブル変換演算）と比べてコンパクトにハードウェアを実現出来る。これにより、高い攪乱性能を実現しつつ、ハードウエア実装時のゲート規模を少なくできる。
【００８８】
また、データ変換部３２内の第１攪乱部３２では、分割されたブロックデータの全てについて、攪乱処理を行っている。
この構成によって、互いに１ビット異なる２つの入力データが与えられた場合に、どの１ビットが異なっている場合であっても、何れかのブロックデータに対する攪乱処理によって、１ビットの違いが拡大されることが保証できる。
【００８９】
また、データ変換部３２では、第１攪乱部４４と第２攪乱部４７で、異なるビット単位で攪乱処理を行うようにしている。具体的には、第１攪乱部４４では８ビット単位（ブロック分割部４２による分割結果の単位）の攪乱処理を行い、第２攪乱部４７では３２ビット単位（入力データ全体の単位）の攪乱処理を行うようにしている。
本実施の形態に係る攪乱処理で用いている変換は線形処理であるため、同じビット数単位で攪乱処理を繰り返した場合には、差を打ち消しあってしまうことがあり、攪乱効果が伸びない。しかし、本実施の形態のように互いに異なるビット単位での変換を行うことにより、差の打ち消しあいを最小限にとどめ、全体として高い攪乱性能をしている。
【００９０】
また、第１撹乱部４４および第２撹乱部４７では、データを３個に分岐させた上で、３種類のローテーション（０ビットローテーションを含む）を行って、それらの結果を融合している。
このような変換処理を行っているのは、３つ以上の奇数個のローテーションを行い、その結果を融合する処理が全単射な変換であることが理論的に示されているためである。全単射変換の場合、変換後の値の取りうるパターンの数と変換前の値の取りうるパターンの数とが同一となるので、異なる値を変換した場合には変換結果も必ず異なる値となる。この性質により、互いに１ビット異なる２つデータをそれぞれ変換した場合、変換結果も必ず１ビット以上異なることが保証できる（例えば、上記実施の形態では、必ず３ビット異なることとなる）。
【００９１】
本実施の形態では、この性質を利用して撹乱処理を行った上、さらにこの１ビット以上の差異を融合処理等によって拡大させることで、高い撹乱性能を得ている。
なお、上述の説明からも分かると通り、分岐数やローテーションの種類の数は３つに限らず、３つ以上の奇数が望ましく、例えば、５つや７つなどであってもよい。
４．なお書き
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００９２】
４．１．実施の形態で説明した構成は、あくまで一例であり、これに限るものではない。例えば、ローテーション数（シフト量）として、他のローテーション量であってもよい。また、各構成要素の構成や順番は、異なっていてもよい。
４．２．実施の形態で説明した構成では、６４ビット単位のデータを暗号化や復号化する構成になっていたが、これに限るものではない。例えば３２ビット単位であっても、１２８ビット単位であってもよい。
【００９３】
４．３．実施の形態で説明した構成では、２５６ビットの暗号化鍵や復号化鍵を用いる構成になっていたが、これに限るものではない。例えば１２８ビットの鍵を２５６ビットに鍵拡大処理して、その２５６ビット鍵を用いても良い。
４．４．実施の形態で説明した構成では、換字処理（テーブル変換演算）を一つも使用していなかったが、これに限るものではない。いくつかの換字処理と組み合わせることとしてもよい。例えば、第１攪乱部４４におけるローテーション部と融合部との組の１つに替えて換字処理を使用するような構成にしてもよい。このようにしても、複数の換字処理を使用する場合に比べて、ハードウエア実装時のゲート規模を小さく出来る。
【００９４】
４．５．実施の形態では、本発明はハードウエアで実装されることを前提として説明してきたが、ソフトウエアとして実装してもよいことは言うまでもない。上記では、ハードウエアとして実現した場合の効果を述べたが、ソフトウエアで実現する場合であっても本発明によれば換字テーブルを保持するためのメモリ領域が不要になるので、より少ないメモリ容量しか持たない機器であっても高い撹乱性を持った暗号化処理および復号化処理が可能となるという効果が得られる。
【００９５】
４．６．実施の形態では、ブロック分割部４２の処理の前に、加算部４１によってＸ１と部分鍵ＳＫｉとを加算していたが、これに限られるものではなく、他の演算によって融合するとしてもよい。例えば、排他的論理和演算によって融合することなどが考えられる。
４．７．第１攪乱部４４では、各ブロックについて行うローテーションのシフト量の組み合わせは各ブロックごとに異なっている。例えば、Ａ１に対するシフト量は（３ビット、０ビット、５ビット）であるが、Ｃ２に対するシフト量は（２ビット、０ビット、６ビット）であり、Ａ１に対するシフト量と異なるシフト量の組み合わせになっている。同様に、Ａ２又はＣ２に対するシフト量の組み合わせについても、他のいずれのブロックのシフト量とも一致しない。
【００９６】
本実施の形態でこのような構成を取っているのは攪乱性能を上げるためであるが、本発明はこの構成に限られるものではない。例えば、複数のブロックでローテーションのシフト量の組み合わせを同じにするとしてもよい。この場合、更に、第１攪乱部４４において１組のローテーション部を持たせて、全てのブロックでその１組のローテーション部を使いまわすこともできる。このときは回路規模を更に削減することができる。
【００９７】
４．８．本実施の形態では、ブロックを４分割した上で攪乱処理を行っていたが、これに限られるものではなく、５つ以上に分割したり３つ以下に分割するとしてもよい。
４．９．本実施の形態では、第１攪乱部４４及び第２攪乱部４７において、３つに分岐させたデータの１つについてはローテーション部が設けられていないが、これは０ビットの巡回シフトを行うための構成である。
【００９８】
しかし、これに限られるものではなく、３つに分岐させたデータの全てについて１ビット以上巡回シフトさせる構成としてもよい。ただし、０ビットの巡回シフトは分岐させたデータをそのまま排他的論理和部に出力させるだけで実現できるので、回路を追加する必要がない。そのため、０ビットの巡回シフトを用いる方が回路規模の削減には有効である。
【００９９】
また、本実施の形態では、０ビットの巡回シフトを行う場合は、分岐させたデータをそのまま使用している。しかし、シフト数が「０」の場合であっても、何の処理も行わないダミーのローテーション部を設けることとしてもよい。
４．１０．巡回シフトは、桁上がりを破棄するシフトであってもよい。ただし、この場合には、全単射性は保証できなくなる。
【０１００】
４．１１．上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０１０１】
４．１２．上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。
【０１０２】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１０３】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
４．１３．上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０１０４】
４．１４．本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１０５】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１０６】
４．１５．上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１０７】
本発明に係るデータ変換装置は、ネットワーク上の機密通信、認証、著作権保護用途などに利用可能であり、高いデータ攪乱性能やハードウェアの小型化が要求される携帯端末装置、デジタル家電機器などに好適である。
【図面の簡単な説明】
【０１０８】
【図１】本発明の一実施形態に係る暗号通信システムの構成を示す図である。
【図２】本発明の一実施形態に係る暗号部の構成を示す図である。
【図３】本発明の一実施形態に係るデータ攪乱部の構成を示す図である。
【図４】本発明の一実施形態に係るデータ変換部の構成を示す図である。
【図５】本発明の一実施形態に係る第１融合部の構成を示す図である。
【図６】本発明の一実施形態に係る第１攪乱部の構成を示す図である。
【図７】本発明の一実施形態に係る第２融合部の構成を示す図である。
【図８】本発明の一実施形態に係る第２攪乱部の構成を示す図である。
【図９】本発明の一実施形態に係る復号部の構成を示す図である。
【図１０】暗号化処理を示すフローチャートである。
【図１１】暗号化処理を示すフローチャートである。
【図１２】復号処理を示すフローチャートである。
【図１３】復号処理を示すフローチャートである。
【符号の説明】
【０１０９】
１  暗号通信システム
２  暗号化装置
３  復号化装置
４  通信路
１１  入力部
１２  暗号部
１３  暗号化鍵保持部
１４  送信部
１５  出力部
１６  復号部
１７  復号鍵保持部
１８  受信部
２１  鍵生成要求部
２２  鍵制御部
２３  データ攪乱部
２４  回数制御部
２５  データ入替部
３１  分割部
３２  データ変換部
３３  排他的論理和部
３３  復号化鍵保持部
３４  結合部
４１  加算部
４２  ブロック分割部
４３  第１融合部
４４  第１攪乱部
４５  第２融合部
４６  ブロック結合部
４７  第２攪乱部
５１  排他的論理和部
５２  排他的論理和部
５５〜６２  ビットローテーション部
６３〜６６  排他的論理和部
７１、７２  排他的論理和部
７３、７４  ビットローテーション部
７５  排他的論理和部
８１  鍵生成要求部
８２  鍵制御部
８３  データ攪乱部
８４  回数制御部
８５  データ入替部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2007148665.tif 000016
【図２】
2007148665.tif 000017
【図３】
2007148665.tif 000018
【図４】
2007148665.tif 000019
【図５】
2007148665.tif 000020
【図６】
2007148665.tif 000021
【図７】
2007148665.tif 000022
【図８】
2007148665.tif 000023
【図９】
2007148665.tif 000024
【図１０】
2007148665.tif 000025
【図１１】
2007148665.tif 000026
【図１２】
2007148665.tif 000027
【図１３】
2007148665.tif 000028
【手続補正書】
【提出日】平成20年6月10日(2008.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ｎビットの入力データを予め与えられた鍵データを用いて暗号化する暗号処理装置であって、
前記入力データを前記鍵データを用いて変換することにより、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成されるｎビットの変換データを生成する入力データ変換手段と、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、
前記第５及び第６ブロック群のブロックデータから構成されるｎビットの出力データを出力する出力手段と
を備えることを特徴とする暗号処理装置。
【請求項２】
前記撹乱手段は、前記ブロックデータを奇数個に分岐し、前記分岐したブロックデータそれぞれを異なるビット数巡回シフトする
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記第１ブロック群に含まれるブロックデータの個数と、前記第２ブロック群に含まれるブロックデータの個数とは等しく、
前記第１融合手段は、前記第２ブロック群に含まれる全ての各ブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記攪乱手段は、前記第１及び第３ブロック群の全ブロックデータそれぞれについて、ブロックデータを２個以上に分岐する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記第２融合手段は、前記第４ブロック群に含まれる全ブロックデータそれぞれに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記第２融合手段において、融合する２つのブロックデータは、双方のブロックデータの生成過程で用いられたブロックデータが異なる
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項７】
前記鍵変換手段は、前記鍵データと前記入力データとを排他的論理和演算又は算術加算演算により融合することで前記変換データを生成する
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項８】
前記暗号処理装置は、更に、
前記出力手段による出力前に、前記出力データについて、前記出力データを２個以上に分岐し、分岐した出力データを巡回シフトし、巡回シフト結果を融合する最終攪乱手段
を備えることを特徴とする請求項１に記載の暗号処理装置。
【請求項９】
ｎビットの入力データを予め与えられた鍵データを用いて暗号化する暗号処理装置に用いられるデータ変換方法であって、
前記暗号処理装置は、入力データ変換手段と、第１融合手段と、攪乱手段と、第２融合手段と、出力手段とを備え、
前記データ変換方法は、
前記入力データ変換手段により、前記入力データを前記鍵データを用いて変換することにより、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成されるｎビットの変換データを生成する入力データ変換ステップと、
前記第１融合手段により、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、
前記撹乱手段により、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、
前記第２融合手段により、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、
前記出力手段により、前記第５及び第６ブロック群のブロックデータから構成されるｎビットの出力データを出力する出力ステップと
を含むことを特徴とするデータ変換方法。
【請求項１０】
ｎビットの入力データを予め与えられた鍵データを用いて暗号化する暗号処理装置に用いられるデータ変換プログラムであって、
前記暗号処理装置は、入力データ変換手段と、第１融合手段と、攪乱手段と、第２融合手段と、出力手段とを備え、
前記データ変換プログラムは、
前記入力データ変換手段により、前記入力データを前記鍵データを用いて変換することにより、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成されるｎビットの変換データを生成する入力データ変換ステップと、
前記第１融合手段により、前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合ステップと、
前記撹乱手段により、前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱ステップと、
前記第２融合手段により、前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合ステップと、
前記出力手段により、前記第５及び第６ブロック群のブロックデータから構成されるｎビットの出力データを出力する出力ステップと
を含むことを特徴とするデータ変換プログラム。
【請求項１１】
請求項１０に記載のデータ変換プログラムが記録されていることを特徴とする記録媒体。
【請求項１２】
ｎビットの入力データを予め与えられた鍵データを用いて暗号化するデータ変換手段を備える暗号処理装置に用いられる集積回路であって、
前記入力データを前記鍵データを用いて変換することにより、１個以上のブロックデータをそれぞれ含む第１ブロック群及び第２ブロック群から構成されるｎビットの変換データを生成する入力データ変換手段と、
前記第２ブロック群に含まれる１個以上のブロックデータに対し、前記第１ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第２ブロック群から第３ブロック群を生成する第１融合手段と、
前記第１及び第３ブロック群に含まれる１個以上のブロックデータそれぞれについて、当該ブロックデータを２個以上に分岐し、分岐したブロックデータを巡回シフトし、巡回シフト結果を融合することにより、前記第１及び第３ブロック群から第４及び第５ブロック群を生成する攪乱手段と、
前記第４ブロック群に含まれる１個以上のブロックデータに対し、前記第５ブロック群に含まれるいずれかのブロックデータを分岐させて融合することにより、前記第４ブロック群から第６ブロック群を生成する第２融合手段と、
前記第５及び第６ブロック群のブロックデータから構成されるｎビットの出力データを出力する出力手段と
を備えることを特徴とする集積回路。
【国際調査報告】
2007148665.tif 000029
2007148665.tif 000030
2007148665.tif 000031
2007148665.tif 000032