(57)【要約】  データ送信装置１００は、送信データに暗号化処理を施し、得られた第一変換データにフェイステル構造の暗号化処理を施し、得られた第二変換データに、第一の暗号化処理とは逆関数の関係にある処理を施す。第一変換部１０５は、送信データをＮ個（Ｎは３以上の数）の分割送信データに分割し、分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成し、生成されたＮ個の演算処理データを結合して第一変換データを生成する。第一変換部１０５は、Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、第二の分割送信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成し、生成された演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、Ｎ個の分割送信データの中から選択された第三の分割送信データと第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する。
2009087972.tif 000002
【特許請求の範囲】
【請求項１】
送信データを受け付ける送信データ受付手段と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
前記暗号化データを送信する送信手段と、
を備え、
前記第一変換手段は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割手段と、
前記分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ送信装置。
【請求項２】
前記演算手段は、前記Ｎ個の分割送信データの中から一対をなす前記第三の分割送信データと第四の分割送信データとを選択し、前記第三の分割送信データと拡大鍵データとに論理演算を施して第三の演算結果を生成するとともに、前記第四の分割送信データと前記第三の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第三の処理手段を更に含む、請求項１に記載のデータ送信装置。
【請求項３】
前記演算手段は、前記第二の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第三の演算結果を生成するとともに、前記複数の分割送信データの中から選択された第三の分割送信データと前記第三の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第三の処理手段を更に含む、請求項１に記載のデータ送信装置。
【請求項４】
前記演算手段は、生成した前記演算処理データを入力データとし、前記Ｎ個の入力データに第二の演算処理を施してＮ個の第二の演算処理データを生成し、
前記送信データ結合手段は、前記演算手段により生成された前記Ｎ個の第二の演算処理データを結合し、
前記演算手段は、
前記Ｎ個の入力データの中から一対をなす第一および第二の入力データを選択し、前記第一の入力データと拡大鍵データとに論理演算を施して第四の演算結果を生成するとともに、前記第二の入力データと前記第四の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第四の処理手段と、
前記第四の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第五の演算結果を生成するとともに、前記Ｎ個の入力データの中から選択された第三の入力データと前記第五の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第五の処理手段と、
を含む請求項１乃至３いずれかに記載のデータ送信装置。
【請求項５】
前記演算手段は、前記第二の演算処理により生成した前記Ｎ個の第二の演算処理データを入力データとし、前記Ｎ個の入力データについて前記第二の演算処理を反復的に実行する請求項４に記載のデータ送信装置。
【請求項６】
拡大鍵データを用いた前記論理演算は、論理和演算または論理積演算である請求項１乃至５いずれかに記載のデータ送信装置。
【請求項７】
秘密鍵データから中間鍵データを経由して拡大鍵データを生成する鍵データ生成手段をさらに備え、
前記鍵データ生成手段は、
前記秘密鍵データをＭ個（Ｍは２以上の数）に分割してＭ分割鍵データを生成する鍵分割手段と、
前記Ｍ分割鍵データごとにラウンド関数処理を施す第一関数処理手段と、
ラウンド関数処理された前記Ｍ分割鍵データを分割し、一の前記Ｍ分割鍵データの一部と他の前記Ｍ分割鍵データの一部とをそれぞれ結合することにより、前記Ｍ分割鍵データを転置してＭ個の転置データを出力する転置手段と、
出力された前記転置データごとにラウンド関数処理を施す第二関数処理手段と、
ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成する鍵結合手段と、
を有し、
前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成する請求項１乃至６いずれかに記載のデータ送信装置。
【請求項８】
受信データを受け付ける受信データ受付手段と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ受信装置。
【請求項９】
前記演算手段は、生成したＮ個の前記演算処理データを入力データとし、前記Ｎ個の入力データに第二の演算処理を施してＮ個の演算処理データを生成し、
前記受信データ結合手段は、前記演算手段により生成された前記Ｎ個の第二の演算処理データを結合し、
前記演算手段は、
前記Ｎ個の入力データの中から一対をなす第一および第二の入力データを選択し、前記第一の入力データと拡大鍵データとに論理演算を施して第四の演算結果を生成するとともに、前記第二の入力データと前記第四の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第四の処理手段と、
前記第四の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第五の演算結果を生成するとともに、前記Ｎ個の入力データの中から選択された第三の入力データと前記第五の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第五の処理手段と、
を含む請求項８に記載のデータ受信装置。
【請求項１０】
前記演算手段は、前記第二の演算処理により生成した前記Ｎ個の第二の演算処理データを入力データとし、前記Ｎ個の入力データについて前記演算処理を反復的に実行する請求項９に記載のデータ受信装置。
【請求項１１】
拡大鍵データを用いた前記論理演算は、論理和演算または論理積演算である請求項８乃至１０いずれかに記載のデータ受信装置。
【請求項１２】
送信データを取得するステップと、
前記送信データに第一の暗号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成するステップと、
前記暗号化データを送信するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割するステップと、
前記分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成するステップと、
前記Ｎ個の演算処理データを生成する前記ステップにおいて生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記Ｎ個の演算処理データを生成する前記ステップは、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ送信方法。
【請求項１３】
秘密鍵データから中間鍵データを経由して前記拡大鍵データを生成するステップをさらに含み、
前記拡大鍵データを生成する前記ステップは、
前記秘密鍵データをＭ個（Ｍは２以上の数）に分割してＭ分割鍵データを生成するステップと、
前記Ｍ分割鍵データごとにラウンド関数処理を施すステップと、
ラウンド関数処理された前記Ｍ分割鍵データを分割し、一の前記Ｍ分割鍵データの一部と他の前記Ｍ分割鍵データの一部とをそれぞれ結合することにより、前記Ｍ分割鍵データを転置してＭ個の転置データを出力するステップと、
出力された前記転置データごとにラウンド関数処理を施すステップと、
ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成するステップと、
を含み、
前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成する請求項１２に記載のデータ送信方法。
【請求項１４】
送信データを受け付ける送信データ受付処理と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
前記暗号化データを送信する送信処理と、
をコンピュータに実行させるためのプログラムを記録し、
前記第一変換処理は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割処理と、
前記分割送信データから少なくともＮ個の演算処理データを生成する演算処理と、
前記演算処理により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
を含み、
前記演算処理は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含むコンピュータ読み取り可能な記録媒体。
【請求項１５】
秘密鍵データから中間鍵データを経由して前記拡大鍵データを生成する鍵データ生成処理をさらに含み、
前記鍵データ生成処理は、
前記秘密鍵データをＭ個（Ｍは２以上の数）に分割してＭ分割鍵データを生成する鍵分割処理と、
前記Ｍ分割鍵データごとにラウンド関数処理を施す第一関数処理と、
ラウンド関数処理された前記Ｍ分割鍵データを分割し、一の前記Ｍ分割鍵データの一部と他の前記Ｍ分割鍵データの一部とをそれぞれ結合することにより、前記Ｍ分割鍵データを転置してＭ個の転置データを出力する転置処理と、
出力された前記転置データごとにラウンド関数処理を施す第二関数処理と、
ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成する鍵結合処理と、
を含み、
前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成させる請求項１４に記載の記録媒体。
【請求項１６】
受信データを取得するステップと、
前記受信データに第一の復号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割するステップと、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成するステップと、
前記演算処理データにより生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記Ｎ個の演算処理データを生成する前記ステップは、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ受信方法。
【請求項１７】
受信データを受け付ける受信データ受付処理と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換処理と、
をコンピュータに実行させるためのプログラムを記録し、
前記第一変換処理は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割処理と、
前記分割受信データから少なくともＮ個の演算処理データを生成する演算処理と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合処理と、
を含み、
前記演算処理は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含む、コンピュータ読み取り可能な記録媒体。
【請求項１８】
請求項１に記載のデータ送信装置と請求項８に記載のデータ受信装置とをネットワークを介して接続しているデータ通信システム。
【請求項１９】
平文を受け付けるデータ受付手段と、
拡大鍵データを記憶するメモリと、
前記平文に第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記平文をＮ個（Ｎは３以上の数）の分割データに分割するデータ分割手段と、
前記分割データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するデータ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割データの中から一対をなす第一および第二の分割データを選択し、前記第一の分割データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割データの中から選択された第三の分割データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含む暗号化装置。
【請求項２０】
暗号化データを受け付けるデータ受付手段と、
拡大鍵データを記憶するメモリと、
前記暗号化データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して平文を生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含む復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送信装置、データ受信装置、及び、これらの方法、これらをコンピュータに実行させるためのプログラムを記録するコンピュータ読み取り可能な記録媒体、これらを接続しているデータ通信システム、並びに、データを暗号化する暗号化装置、及び、データを復号化する復号化装置に関する。
【背景技術】
【０００２】
共通鍵ブロック暗号の代表としてＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。ＤＥＳは１９７７年にＦＩＰＳに採用されて以来、デファクトスタンダードとして広まっていった。【０００３】
ＤＥＳの暗号化処理を図１４に示す。ＤＥＳはＦｅｉｓｔｅｌと呼ばれる構造を採用している。【０００４】
まず初期転置ＩＰで平文のビット位置を入れ替えた後、Ｆｅｉｓｔｅｌ構造部９００で鍵データとの攪拌を行い、その結果を最終転置ＩＰ−１でビット入れ替えしたものを暗号文とする。関数Ｆでは、まず拡大転置Ｅで３２ビットのデータを４８ビットに拡大する。次に４８ビットのデータに副鍵Ｋを排他的論理和する。そのデータを８つに分割し、６ビット入力４ビット出力のＳ−ｂｏｘで変換し、転置Ｐでビット入れ替えしたものを出力する。【０００５】
現在、上述のような暗号化装置として各種の提案がある（例えば、特許文献１乃至３参照）。
【特許文献１】特開２００２−０８２６０７号公報
【特許文献２】特開２００２−０９１２９６号公報
【特許文献３】特開２００６−０７２０５４号公報
【発明の開示】
【０００６】
しかしながら、上記文献記載の従来技術は、以下の点で改善の余地を有していた。
【０００７】
ブロック暗号の代表的な解読法といえる差分解読の例を、図１５で示す。差分解読とは、暗号器に対して特定の差分（２対の平文Ｐ１とＰ２の排他的論理和）ΔＰ（＝ΔＰＬ｜ΔＰＲ）を与えたとき、その暗号器のＸラウンド（Ｘ  ＲＯＵＮＤ）後の中間データにも高い確率で特定の差分ΔＤ（ΔＤＬ、ΔＤＲ）が現れるという暗号器固有の特性を利用する攻撃である。その暗号器のラウンド数が（Ｘ＋１）ラウンドの場合、特定の差分を持った平文対を暗号化するとある暗号文対Ｃ１、Ｃ２が得られる。
【０００８】
ここで、第（Ｘ＋１）ラウンドで使われている拡大鍵データｅｋｘを仮定すると、暗号文対から１ラウンド遡ることができ、そのデータ対の差分を計算する。その差分がΔＤであれば、仮定した拡大鍵データｅｋｘは正しいと判断する。以上が差分解読の基本原理である。
【０００９】
このように、ブロック暗号のアルゴリズム的な解読においては、外側のラウンドの鍵データから求めていく方法が一般的といえる。ＤＥＳにおける解読でも同様の解読手法を適用することが出来る。
【００１０】
図１４で示すように、ＤＥＳには初期転置ＩＰと最終転置ＩＰ−１がＦｅｉｓｔｅｌ構造の外側で行われるが、平文、または、暗号文のビット転置を行っているだけであり、これらは平文、暗号文の値を変えているだけであるため、差分攻撃などの解読手法に対しては耐性を向上させる効果はない。
【００１１】
また、いくつかの暗号においては、初期／終期処理として排他的論理和で拡大鍵データを挿入している。これらの拡大鍵データは、上記の解読手法を適用する際に、最終ラウンドの鍵データを仮定するときに同時に仮定せねばならず仮定量が増加する。
【００１２】
しかしながら、図１６に示すように、排他的論理和で挿入された鍵データは、等価変形によって移動させることができるため、解読の際には実質ないものとみなすことができ、仮定量の増加には寄与しない場合がある。
【００１３】
更に、暗号の解読において、ｎラウンド消去攻撃という攻撃があり、差分解読法などと組み合わせて利用される。ｎラウンド消去攻撃は、平文側、または暗号文側、もしくは両方からの１ラウンド、もしくは数ラウンドの拡大鍵データを秘密鍵長未満のサイズで仮定することによって、解読可能ラウンド数を延ばす攻撃であり、各種解読法と合わせて考慮する必要がある。
【００１４】
ｎラウンド消去攻撃に対する耐性を挙げるためには、仮定する鍵データの量を増やすことにある。ラウンドを増やせば脅威は小さくなるが、処理が遅くなるという問題がある。
【００１５】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、実装性を損なうことなく、各種解読手法に対する耐性を向上させたデータ送信装置、データ受信装置、及び、これらの方法、これらをコンピュータに実行させるためのプログラムを記録するコンピュータ読み取り可能な記録媒体、これらを接続しているデータ通信システム、並びに、データを暗号化する暗号化装置、及び、データを復号化する復号化装置を提供することにある。
【００１６】
本発明によれば、
送信データを受け付ける送信データ受付手段と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
前記暗号化データを送信する送信手段と、
を備え、
前記第一変換手段は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割手段と、
前記分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ送信装置
が提供される。
【００１７】
また、本発明によれば、
受信データを受け付ける受信データ受付手段と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ受信装置
が提供される。
【００１８】
また、本発明によれば、
送信データを取得するステップと、
前記送信データに第一の暗号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成するステップと、
前記暗号化データを送信するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割するステップと、
前記分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成するステップと、
前記Ｎ個の演算処理データを生成する前記ステップにおいて生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記Ｎ個の演算処理データを生成する前記ステップは、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ送信方法
が提供される。
【００１９】
また、本発明によれば、
送信データを受け付ける送信データ受付処理と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
前記暗号化データを送信する送信処理と、
をコンピュータに実行させるためのプログラムを記録し、
前記第一変換処理は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割処理と、
前記分割送信データから少なくともＮ個の演算処理データを生成する演算処理と、
前記演算処理により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
を含み、
前記演算処理は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含むコンピュータ読み取り可能な記録媒体
が提供される。
【００２０】
また、本発明によれば、
受信データを取得するステップと、
前記受信データに第一の復号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割するステップと、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成するステップと、
前記演算処理データにより生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記Ｎ個の演算処理データを生成する前記ステップは、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ受信方法
が提供される。
【００２１】
また、本発明によれば、
受信データを受け付ける受信データ受付処理と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換処理と、
をコンピュータに実行させるためのプログラムを記録し、
前記第一変換処理は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割処理と、
前記分割受信データから少なくともＮ個の演算処理データを生成する演算処理と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合処理と、
を含み、
前記演算処理は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含む、コンピュータ読み取り可能な記録媒体
が提供される。
【００２２】
また、本発明によれば、上記のデータ送信装置と上記のデータ受信装置とをネットワークを介して接続しているデータ通信システムが提供される。
【００２３】
また、本発明によれば、
平文を受け付けるデータ受付手段と、
拡大鍵データを記憶するメモリと、
前記平文に第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記平文をＮ個（Ｎは３以上の数）の分割データに分割するデータ分割手段と、
前記分割データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するデータ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割データの中から一対をなす第一および第二の分割データを選択し、前記第一の分割データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割データの中から選択された第三の分割データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含む暗号化装置
が提供される。
【００２４】
さらに本発明によれば、
暗号化データを受け付けるデータ受付手段と、
拡大鍵データを記憶するメモリと、
前記暗号化データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して平文を生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含む復号化装置
が提供される。
【００２５】
なお、本発明の各種の構成要素は、その機能を実現するように形成されていればよく、例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ送信装置及びデータ受信装置、コンピュータプログラムによりデータ送信装置及びデータ受信装置に実現された所定の機能、これらの任意の組み合わせ、等として実現することができる。
【００２６】
また、本発明の各種の構成要素は、個々に独立した存在である必要もなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でよい。
【００２７】
また、本発明のデータ送信方法及びデータ受信方法には複数の工程を順番に記載してあるが、その記載の順番は複数の工程を実行する順番を限定するものではない。このため、本発明のデータ送信方法及びデータ受信方法を実施するときには、その複数の工程の順番は内容的に支障しない範囲で変更することができる。
【００２８】
さらに、本発明のデータ送信方法及びデータ受信方法の複数の工程は個々に相違するタイミングで実行されることに限定されない。このため、ある工程の実行中に他の工程が発生すること、ある工程の実行タイミングと他の工程の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【００２９】
また、本発明で云うデータ送信装置及びデータ受信装置は、コンピュータプログラムを読み取って対応するデータ処理を実行できるように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）ユニット、等の汎用デバイスで構築されたハードウェア、所定のデータ処理を実行するように構築された専用の論理回路、これらの組み合わせ、等として実施することができる。
【００３０】
本発明によれば、ｎラウンド消去攻撃に対する耐性をあげつつ、高速処理を可能とする。また、本発明によれば、暗号化と復号化の機能を一つの装置で共用し、実装時の規模の増加を抑えることを可能とする。
【図面の簡単な説明】
【００３１】
上述した目的、及びその他の目的、特徴及び利点は、以下に述べる好適な実施の形態、及びそれに付随する以下の図面によってさらに明らかになる。【００３２】
【図１】実施形態のデータ通信システムを模式的に示すブロック図である。
【図２】実施形態の第一変換部の構成を模式的に示すブロック図である。
【図３】実施形態の鍵データ生成部の構成を模式的に示すブロック図である。
【図４】実施形態の暗号化部に相当する暗号化装置の構成を説明する図である。
【図５】通常の一般化フェイステル構造の暗号化処理を説明する図である。
【図６】実施形態の暗号化装置及び鍵スケジュール装置の構成を模式的に示す図である。
【図７】実施形態の第一変換部（初期処理手段）で実行される第一の暗号化処理の一例を説明する図である。
【図８】実施形態の第一変換部（初期処理手段）で実行される第一の暗号化処理の一例を説明する図である。
【図９】実施形態の第二変換部（終期処理手段）で実行される第二の暗号化処理の一例を説明する図である。
【図１０】実施形態の第二変換部（終期処理手段）で実行される第二の暗号化処理の一例を説明する図である。
【図１１】実施形態のラウンド関数手段で実行されるフェイステル構造の暗号化処理を説明する図である。
【図１２】実施形態の鍵スケジュール装置の処理を説明する図である。
【図１３】実施形態の鍵データ生成手段で実行される処理を説明する図である。
【図１４】ＤＥＳの暗号化処理を説明する図である。
【図１５】ブロック暗号の解読法の一例を示す図である。
【図１６】関連する暗号化処理を説明する図である。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施の形態について、図面を用いて説明する。【００３４】
図１は、本実施形態のデータ通信システムを模式的に示すブロック図である。本実施形態のデータ通信システムは、データ送信装置１００と、データ受信装置２００とをネットワーク１０００を介して接続している。【００３５】
データ送信装置１００は、送信データと拡大鍵データとを受け付けるデータ受付部１０１と、送信データを暗号化して暗号化データを生成する暗号化部１０３と、暗号化データを送信する送信部１０９と、を備える。【００３６】
暗号化部１０３は、送信データに第一の暗号化処理を施して第一変換データを生成する第一変換部１０５と、第一変換データにフェイステル（Ｆｅｉｓｔｅｌ）構造の暗号化処理を施して第二変換データを生成する第二変換部１０６と、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換部１０７と、を備える。【００３７】
図２は、第一変換部１０５の構成を模式的に示すブロック図である。第一変換部１０５は、送信データをＮ個（Ｎは３以上の数）の分割送信データに分割するデータ分割部１００１と、分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算部（第一処理部１００２および第二処理部１００３）と、前記演算部により生成されたＮ個の演算処理データを結合して第一変換データを生成するデータ結合部１００４と、を有する。上記演算部は、Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、第一の分割送信データと拡大鍵データとに排他的論理和以外の論理演算を施して第一の演算結果を生成するとともに、第二の分割送信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第一処理部１００２（第一の処理手段）と、第一の処理部１００２により生成された演算処理データと拡大鍵データとに排他的論理和以外の論理演算を施して第二の演算結果を生成するとともに、Ｎ個の分割送信データの中から選択された第三の分割送信データと第二の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第二処理部１００４（第二の処理手段）を含む。【００３８】
たとえば、Ｎ＝４の場合、第一の暗号化処理は、図７で示す処理を例示することができる。まず、第一処理部１００２は、データ分割部１００１で分割された４個の分割送信データの中から一対をなす分割送信データ７０１、７０２を選択して、分割送信データ７０１と拡大鍵データeｋ０とに論理積演算３０を施す。生成された演算結果と分割送信データ７０２とに排他的論理和演算を施して演算処理データ７０５を生成し、第二処理部１００３に送出する。ついで、第二処理部１００３において、データ分割部１００１で分割された４個の分割送信データの中から分割送信データ７０３を選択するとともに、演算処理データ７０５と拡大鍵データeｋ２とに論理和演算３１を施す。生成された演算結果と分割送信データ７０３とに排他的論理和演算を施して演算処理データ７０６を生成する。【００３９】
また、第一処理部１００２は、データ分割部１００１で分割された４個の分割送信データの中から一対をなす分割送信データ７０３、７０４を選択し、分割送信データ７０３と拡大鍵データeｋ１とに論理和演算３１を施す。生成された演算結果と分割送信データ７０４とに排他的論理和演算を施して演算処理データ７０７を生成し、第二処理部１００３に送出する。ついで、第二処理部１００３において、データ分割部１００１で分割された４個の分割送信データの中から分割送信データ７０１を選択するとともに、演算処理データ７０７と拡大鍵データeｋ３とに論理和演算３１を施す。生成された演算結果と分割送信データ７０１とに排他的論理和演算を施して演算処理データ７０８を生成する。【００４０】
上記演算部は、生成した演算処理データを入力データとし、Ｎ個の入力データに第二の演算処理を施してＮ個の第二の演算処理データを生成してもよい。【００４１】
たとえば、Ｎ＝４の場合、図７で例示するように、第二処理部１００３に一時的に保持された４個の演算処理データ７０５、７０６，７０７，７０８を入力データとする。第一処理部１００２は、一対をなす入力データ７０５、７０８を選択し、入力データ７０８と拡大鍵データｅｋ４とに論理和演算３１を施す。生成した演算結果と入力データ７０５とに排他的論理和演算を施して演算処理データ７０９を生成し、第二処理部１００３に送出する（第四の処理手段）。第二処理部１００３は、第一処理部１００２で生成された演算処理データ７０９と拡大鍵データｅｋ６とに論理積演算を施す。生成した演算結果と入力データ７０６とに排他的論理和演算を施して演算処理データ７１０を生成する。【００４２】
また、第一処理部１００２は、一対をなす入力データ７０６、７０７を選択し、入力データ７０６と拡大鍵データｅｋ５とに論理積演算３０を施す。生成した演算結果と入力データ７０７とに排他的論理和演算を施して演算処理データ７１１を生成する（第五の処理手段）。第二処理部１００３は、第一処理部１００２で生成された演算処理データ７１１と拡大鍵データｅｋ７とに論理和演算３１を施す。生成した演算結果と入力データ７０８とに排他的論理和演算を施して演算処理データ７１２を生成する。【００４３】
ついで、データ結合部１００４は、第二処理部１００３から４個の演算処理データ７０９、７１０、７１１、７１２を受け付けて結合し、第一変換データとする。【００４４】
なお、第一処理部１００２および第二処理部１００３は、上記第二の演算処理により生成したＮ個の第二の演算処理データを入力データとし、Ｎ個の入力データについて上記第二の演算処理を反復的に実行してもよい。【００４５】
また、第一処理部１００２および第二処理部１００３は、生成した演算処理データと拡大鍵データとに排他的論理和以外の論理演算を施して第三の演算結果を生成するとともに、N個の分割送信データの中から選択された第三の分割送信データと第三の演算結果とに排他的論理和演算を施して演算処理データの一つを生成してもよい（第三の処理手段）。【００４６】
図８を用いて第三の処理手段の一例について説明する。第二処理部１００３は、生成した演算処理データ８０６と拡大鍵データeｋ２とに論理演算を施す。生成した演算結果と分割送信データ８０４とに排他的論理和演算を施して演算処理データ８０７を生成する。【００４７】
第二の処理部１００２は、第三の処理手段で生成した演算処理データを利用して、第三の処理手段と同様の処理を反復的に実行してもよい。たとえば、図８の例において、第二の処理部１００３は、生成した演算処理データ８０７と拡大鍵データeｋ３とに論理和演算を施す。生成された演算結果と分割送信データ８０１とに排他的論理和演算を施して演算処理データ８０８を生成する。【００４８】
図８の例においても、生成した演算処理データ８０５、８０６、８０７、８０８を入力データとし、４個の入力データ８０５、８０６、８０７、８０８に一連の演算処理を施して４個の演算処理データを生成する。図示された入力データ８０５、８０６、８０７、８０８を用いた演算処理は、上述の第一、第二、第三の処理手段において、分割送信データを入力データに置き換えた処理と同様である。【００４９】
データ分割部１００１は、データ受付部１０１から送信データ及び拡大鍵データを受け付ける。また、データ受付部１０１は、メモリ（図示せず）に記憶された拡大鍵データを読み出してもよい。分割送信データは、拡大鍵データとともに第一処理部１００２及び第二処理部１００３に送出される。このとき、送信データは３以上の数の分割送信データに分割し、分割送信データから対を生成する。生成した対は、第一処理部１００２に送出してもよい。【００５０】
第一処理部１００２及び第二処理部１００３は、第一の暗号化処理として、一般化Ｆｅｉｓｔｅｌ型の暗号化処理を行う。ただし、第一処理部１００２では、一般化Ｆｅｉｓｔｅｌ型の暗号化処理において、入力データと拡大鍵データとの攪拌に論理和演算や論理積演算など排他的論理和以外を利用する。【００５１】
また、第一処理部１００２および第二処理部１００３において、拡大鍵を用いた演算処理は、排他的論理和以外の論理演算を実行する。論理演算は、たとえば、論理和または論理積とすることができる。また、第一処理部１００２および第二処理部１００３において、算術加算を行ってもよい。【００５２】
このように、第一処理部１００２および第二処理部１００３は、演算処理により生成されたＮ個の演算結果を入力データとし、各対について演算処理を反復的に実行することができる。反復回数は１回であってもよく、２回以上でも構わない。【００５３】
このような構成により、第一変換部１０５は、第一の暗号化処理を実行する。そして、データ結合部１００４は、生成した第一変換データを第二変換部１０６に送出する。【００５４】
第二変換部１０６は、Ｆｅｉｓｔｅｌ構造の暗号化処理を行う。【００５５】
第三変換部１０７は、一般化Ｆｅｉｓｔｅｌ型の暗号化処理を行う。ただし、第三変換部１０７では、一般化Ｆｅｉｓｔｅｌ型の暗号化処理において、入力データと拡大鍵データとの攪拌に論理和や論理積など排他的論理和以外を利用する。ここで、第三変換部１０７のデータ処理を第一変換部１０５のデータ処理と逆関数の関係にすることにより、第二変換部１０６の対処性を保つことができる。【００５６】
データ送信装置１００は、秘密鍵データから中間鍵データを経由して拡大鍵データを生成する鍵データ生成部１１１をさらに備える。図３は、鍵データ生成部１１１の構成を模式的に示すブロック図である。鍵データ生成部１１１は、秘密鍵データをＭ個（Ｍは２以上）に分割してＭ分割鍵データを取得する鍵データ分割部１００５と、Ｍ分割鍵データごとにラウンド関数（Ｆ関数）処理を施す第一関数処理部１００６と、Ｆ関数処理されたＭ分割鍵データを分割し、一のＭ分割鍵データの一部と他のＭ分割鍵データの一部とをそれぞれ結合することにより、Ｍ分割データを転置してＭ個の転置データを出力する転置部１００７と、出力された転置データごとにＦ関数処理する第二関数処理部１００８と、Ｆ関数処理された転置データを結合して中間鍵データを生成する鍵結合部１００９と、演算部１０１０を有する。演算部１０１０は、鍵結合部１００９から中間鍵データを受け付けて、拡大鍵データを算出する。具体的には、拡大鍵データは、中間鍵データと所定数とを排他的論理和したり、秘密鍵データと中間鍵データと所定数とを排他的論理和したりして生成することができる。【００５７】
図１に戻り、データ受信装置２００は、ネットワーク１０００を介して受信された受信データと拡大鍵データとを受け付ける受信部２０１と、受信データを復号化して復号化データを取得する復号化部２０３と、拡大鍵データと復号化データとを記憶する記憶部２０９とを備える。【００５８】
復号化部２０３は、受信データに第一の復号化処理を施して第一変換データを生成する第一変換部２０５と、第一変換データにＦｅｉｓｔｅｌ構造の復号化処理を施して第二変換データを生成する第二変換部２０６と、第二変換データに、第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換部２０７と、を備える。【００５９】
第一変換部２０５は、図２で示す第一変換部１０５と、同様な構成を有している。ただし、第一変換部２０５において、データ分割部１００１は、受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する。第一処理部１００２及び第二処理部１００３は、分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する。データ結合部１００３は、第二処理部１００３により生成されたＮ個の演算処理データを結合して第一変換データを生成する。【００６０】
なお、第一変換部２０５の第一処理部１００２および第二処理部１００３もまた、演算処理により生成されたＮ個の演算処理データを入力データとし、演算処理を反復的に実行することができる。反復回数は１回であってもよく、２回以上でも構わない。【００６１】
このような構成により、第一変換部２０５は、第一の復号化処理を実行する。そして、データ結合部１００４は、生成した第一変換データを第二変換部２０６に送出する。【００６２】
上述のようなデータ送信装置１００及びデータ受信装置２００の各部は、必要により各種のハードウェアを利用して実現される。しかし、データ送信装置１００及びデータ受信装置２００が実装されているコンピュータプログラムに対応して機能することにより実現されている。【００６３】
このようなコンピュータプログラムは、例えば、送信データを受け付ける送信データ受付処理、送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理、第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理、暗号化データを送信する送信処理等の処理動作をＣＰＵ等に実行させるためのソフトウェアとしてＲＡＭ等の情報記憶媒体に格納されている。【００６４】
また、このようなコンピュータプログラムは、例えば、受信データを受け付ける受信データ受付処理と、受信データに第一の復号化処理を施して第一変換データを生成する第一変換処理と、第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換処理等の処理動作をＣＰＵ等に実行させるためのソフトウェアとしてＲＡＭ等の情報記憶媒体に格納されている。【００６５】
なお、本実施形態において、第一変換部１０５で実行される第一の演算処理と第三変換部１０７で実行される第二の演算処理とは逆関数の関係にある。したがって、暗号化部１０３は、復号化部２０３としても機能することができる。そのため、データ送信装置１００は、データ受信装置２００として機能することもできる。【００６６】
以下、本実施形態のデータ通信システムの暗号化部１０３についてさらに具体的に説明する。【００６７】
図４は、暗号化部１０３に相当する暗号化装置１の構成を説明する図である。この暗号化装置１は、平文４０を受け付けるデータ受付手段と、拡大鍵データ４１を記憶するメモリ（図示せず）と、平文４０に第一の暗号化処理を施して第一変換データを生成する一般化Ｆｅｉｓｔｅｌ型データ変換手段（第一変換手段）１０と、第一変換データにＦｅｉｓｔｅｌ構造の暗号化処理を施して第二変換データを生成するＦｅｉｓｔｅｌ型データ変換手段（第二変換手段）１１と、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号文４２を生成する一般化Ｆｅｉｓｔｅｌ型データ変換手段（第三変換手段）１２と、を備える。一般化Ｆｅｉｓｔｅｌ型データ変換手段１０は、平文４０をＮ個（Ｎは３以上の数）の分割データに分割するデータ分割手段と、分割データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するデータ結合手段と、を有する。上記演算手段は、Ｎ個の分割データの中から一対をなす第一および第二の分割データを選択し、第一の分割データと上記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、第二の分割データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第一の処理手段と、第一の処理手段により生成された演算処理データと上記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、Ｎ個の分割データの中から選択された第三の分割データと第二の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第二の処理手段と、を含む。【００６８】
また、この暗号化装置１は、以下のような復号化装置としても機能する。すなわち、上記復号化装置は、暗号文４２を受け付けるデータ受付手段と、拡大鍵データ４１を記憶するメモリと、暗号文４２に第一の復号化処理を施して第一変換データを生成する一般化Ｆｅｉｓｔｅｌ型データ変換手段（第一変換手段）１２と、第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成するＦｅｉｓｔｅｌ型データ変換手段（第二変換手段）１１と、第二変換データに、第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して平文４０を生成する一般化Ｆｅｉｓｔｅｌ型データ変換手段（第三変換手段）１０と、を備える。一般化Ｆｅｉｓｔｅｌ型データ変換手段１２は、受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割手段と、分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、を有する。上記演算手段は、Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、第一の分割受信データと上記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第一の処理手段と、第一の処理手段により生成された演算処理データと上記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、Ｎ個の分割受信データの中から選択された第三の分割受信データと第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、を含む。【００６９】
以下、さらに詳述すると、暗号化装置１は、データと拡大鍵データとを入力してデータを暗号化及び復号化する装置である。暗号化装置１は、第１の一般化Ｆｅｉｓｔｅｌ型データ変換手段１０と、Ｆｅｉｓｔｅｌ型データ変換手段１１と、第２の一般化Ｆｅｉｓｔｅｌ型データ変換手段１２とからなる。一般化Ｆｅｉｓｔｅｌ型データ変換手段１０が第一変換部１０５に相当し、Ｆｅｉｓｔｅｌ型データ変換手段１１が第二変換部１０６に相当し、一般化Ｆｅｉｓｔｅｌ型データ変換手段１２が第三変換部１０７に相当する。【００７０】
Ｆｅｉｓｔｅｌ型データ変換手段１１は、入力されたデータを２つに分割する手段と、分割データの１つに拡大鍵データを作用させた後に非線形演算する手段と、非線形演算されたデータと他の分割データとを排他的論理和する手段と、分割データを結合する手段と、を有する（図示せず）。【００７１】
一般化Ｆｅｉｓｔｅｌ型データ変換手段１０及び一般化Ｆｅｉｓｔｅｌ型データ変換手段１２はお互いに逆関数の関係にある。【００７２】
図４で示すように、暗号化装置１は、平文４０と拡大鍵データ４１とを入力し、暗号文４２を出力する。平文４０は、一般化Ｆｅｉｓｔｅｌ型データ変換手段１０で拡大鍵データ４１と攪拌され、次にＦｅｉｓｔｅｌ型データ変換手段１１で拡大鍵データ４１と攪拌され、最後に一般化Ｆｅｉｓｔｅｌ型データ変換手段１２で拡大鍵データ４１と攪拌され、暗号文４２を出力する。平文４０が送信データに相当し、暗号文４２が暗号化データに相当する。【００７３】
一般化Ｆｅｉｓｔｅｌ型データ変換手段１０及び一般化Ｆｅｉｓｔｅｌ型データ変換手段１２は、それぞれ、入力データを３つ以上に分割し、分割したデータの１つ、もしくは、２つ以上のデータを拡大鍵データ４１と攪拌し、残りのデータの１つ、もしくは２つ以上のデータに排他的論理和し、データをクロスしながら繰り返し攪拌を行い変換する処理を行う。【００７４】
図５は、一般化Ｆｅｉｓｔｅｌ型の暗号化処理を説明する図である。一般化Ｆｅｉｓｔｅｌ型の暗号化処理では、入力されたデータＸをｎ個のデータＸ０〜Ｘｎ−１に分割し、分割したデータの１個以上に対して変換Ｆを施し、その結果を別のデータに作用させる。そして分割データを巡回するように隣へシフトする。変換Ｆと巡回シフトを複数回繰り返し、最後に分割データを結合したものを出力データとする。【００７５】
本実施形態の一般化Ｆｅｉｓｔｅｌ型データ変換手段１０、１２では、上述の一般化Ｆｅｉｓｔｅｌ型の暗号化処理において、拡大鍵データ４１との攪拌に論理和や論理積など排他的論理和以外を利用する。【００７６】
一方、Ｆｅｉｓｔｅｌ構造の暗号化処理は、通常の一般化Ｆｅｉｓｔｅｌ型の暗号化処理における分割数が２の場合をさすものである。【００７７】
図６は、図１の暗号化部１０３の機能を有する暗号化装置２０と、図１の鍵データ生成部１１１の機能を有する鍵スケジュール装置２１の構成を模式的に示す図である。暗号化装置２０は、初期処理手段２２、Ｆ関数手段２３、終期処理手段２４を有する。図１を参照すると、初期処理手段２２は、第一変換部１０５に相当し、Ｆ関数手段２３は第二変換部１０６に相当し、終期処理手段２４は、第三変換部１０７に相当する。また、図４を参照すると、初期処理手段２２は、一般化Ｆｅｉｓｔｅｌ型データ変換手段１０に相当し、Ｆ関数手段２３はＦｅｉｓｔｅｌ型データ変換手段１１に相当し、終期処理手段２４は、一般化Ｆｅｉｓｔｅｌ型データ変換手段１２に相当する。【００７８】
図６で示すように、暗号化装置２０は、平文４０と拡大鍵データ４１とを入力とし、暗号文４２を出力する。平文４０は、初期処理手段２２で拡大鍵データ４１との攪拌を行い、次にＦ関数手段２３で拡大鍵データ４１との攪拌を行い、最後に終期処理手段２４で拡大鍵データ４１との攪拌を行い、暗号文４２を出力する。【００７９】
図７は、初期処理手段２２で実行される第一の暗号化処理の一例を説明する図である。初期処理手段２２は、図７に示すように、入力データを４つに分割し、２並列で処理を行う一般化Ｆｅｉｓｔｅｌ構造で、論理積演算３０と論理和演算３１を有し、拡大鍵データ（ｅｋ０〜ｅｋ７）を作用させる。【００８０】
具体的には、入力されたデータが４個に分割してデータ７０１、７０２、７０３、７０４が得られる。データ７０１と、拡大鍵データｅｋ０とが論理積演算され、得られたデータがデータ７０２と排他的論理和され、データ７０５が得られる。データ７０５は、拡大鍵データｅｋ２と論理和演算された後、データ７０３と排他的論理和され、データ７０６が得られる。また、データ７０３と、拡大鍵データｅｋ１とが論理和演算され、得られたデータがデータ７０４と排他的論理和され、データ７０７が得られる。また、データ７０７と、拡大鍵データｅｋ３とが論理積演算され、得られたデータがデータ７０１と排他的論理和され、データ７０８が得られる。また、データ７０８と、拡大鍵データｅｋ４とが論理和演算され、得られたデータがデータ７０５と排他的論理和され、データ７０９が得られる。また、データ７０９と、拡大鍵データｅｋ６とが論理積演算され、得られたデータがデータ７０６と排他的論理和され、データ７１０が得られる。また、データ７０６と、拡大鍵データｅｋ５とが論理積演算され、得られたデータがデータ７０７と排他的論理和され、データ７１１が得られる。また、データ７１１と、拡大鍵データｅｋ７とが論理和演算され、得られたデータがデータ７０８と排他的論理和され、データ７１２が得られる。データ７０９〜７１２を結合し、第一変換データとする。【００８１】
図８は、初期処理手段２２で実行される第一の暗号化処理の別の例を説明する図である。入力データを４つに分割し、逐次的に拡大鍵データを論理演算させるものである。【００８２】
さらに具体的に図７で示す処理と図８で示す処理との違いについて説明すると、主にハードウェアで実装した場合、図７の構成では、データ７０１の演算とデータ７０３の演算は独立している（お互いの演算結果を利用しない）ため、同時に処理することができる。同様にデータ７０５とデータ７０７も独立したデータなので並列に処理することができる。一方、図８の構成では、逐次的に拡大鍵データの演算を行うため、前の演算が終わるまで次の演算が行うことが出来ない。このように、図７の構成では８回の鍵データとの演算を行うが、２並列で処理できるため、４ステップで処理することができるが、図８の構成では８ステップを要する。よって、処理速度では図７の構成が有利である。【００８３】
図８の例では、図７の例の倍の処理時間を要するが、データに作用する拡大鍵データの量は図８の例の方が多くなる。作用する拡大鍵データの量が少ない箇所で比較すると、図７で示すデータ３２（７１１）には、ｅｋ０，ｅｋ１，ｅｋ２，ｅｋ５の４つの拡大鍵データしか影響しないが、図８のデータ５０にはｅｋ０〜ｅｋ４の５つが作用する。このように図７の例では、同じ拡大鍵データ量でもデータに作用する拡大鍵データを多くできるという特徴をもつ。【００８４】
図９は、終期処理手段２４で実行される第二の暗号化処理の一例を説明する図である。初期処理手段２２が図７で示す処理を実行するとき、終期処理手段２４では、図９で示す処理が実行される。終期処理手段２４も図９に示すように、入力データを４つに分割し、２並列で処理を行う一般化Ｆｅｉｓｔｅｌ構造で、論理積演算３０と論理和演算３１を有し、拡大鍵データ（ｅｋ０〜ｅｋ７）を作用させる。初期処理手段２２と終期処理手段２４とは処理順序が逆になった逆関数の関係にある。したがって、図９で示す終期処理手段２４による第二の暗号化処理は、図７の例で示す初期処理手段２２による第一の暗号化処理の逆関数となっている。【００８５】
図１０は、終期処理手段で実行される第二の暗号化処理の別の例を説明する図である。初期処理手段２２が図８で示す処理を実行するとき、終期処理手段２４では、図１０で示す処理が実行される。したがって、図１０で示す終期処理手段２４による第二の暗号化処理は、図８の例で示す初期処理手段２２による第一の暗号化処理の逆関数となっている。【００８６】
図１１は、Ｆ関数手段２３で実行されるＦｅｉｓｔｅｌ構造の暗号化処理を説明する図である。Ｆ関数手段２３では、図１１に示すように、拡大鍵データの排他的論理和による処理と、非線形変換手段７０と、ＭＤＳ変換手段７１とを有する。【００８７】
入力データに拡大鍵データｅｋを排他的論理和したデータを、データ７０１〜７０４の４つに分割する。データ７０１〜７０４はそれぞれ非線形変換手段７０で変換される（データ７０５〜７０８）。データ７０５〜７０８はＭＤＳ変換手段７１で変換されデータ７０９〜７１２を出力する。ＭＤＳ変換手段７１で用いられるＭＤＳ行列としては、ＡＥＳのＭｉｘＣｏｌｕｍｎで利用されているものがある。最後に、データ７０９〜７１２を結合したものを出力データとする。【００８８】
図６に戻り、鍵スケジュール装置２１は、中間鍵生成手段２５（図６では中間鍵生成処理と図示）と拡大鍵生成手段２６（図６では拡大鍵生成処理と図示）を有する。図１２は、鍵スケジュール装置２１の処理を説明する図である。中間鍵生成手段２５は図１２に示すように、Ｆ関数手段２３と転置手段８１を有する。Ｆ関数手段２３が第一関数処理部１００６に相当し、Ｆ関数手段２４が第二関数処理部１００８に相当し、転置手段８１が転置部１００７に相当する。【００８９】
秘密鍵データ４３は分割され、Ｆ関数手段２３により演算処理される。Ｆ関数手段２３に入力する拡大鍵データの代わりに、定数（Ｃ０〜Ｃ７）を与える。転置手段８１はデータの転置を行う処理であり、データ８２，８３，８４，８５を４分割したうちのそれぞれ１つのデータをデータ８６に出力する。また、データ８７，８８，８９にもデータ８２，８３，８４，８５を４分割したうちのそれぞれ１つを出力する。但し、同じデータが２箇所以上に出力されないように転置を行う。Ｆ関数手段２３は、出力の各ビットに全入力ビットが影響する処理であるため、中間鍵データ４４には秘密鍵データ４３の全ビットが影響する。【００９０】
さらに具体的に中間鍵生成手段２５を説明する。ここでは、秘密鍵長が１２８ビットの場合を例として説明する。【００９１】
秘密鍵データ４３は、３２ビットの４つのデータ８０１〜８０４に分割され、それぞれがＦ関数手段２３で攪拌される。Ｆ関数手段２３には拡大鍵データｅｋの代わりに、Ｃ０〜Ｃ３には、定数ゼロを与える。【００９２】
転置手段８１はデータの転置を行う処理であり、データ８６はデータ８２〜８５の１バイト目を、データ８７はデータ８２〜８５の２バイト目を、データ８８はデータ８２〜８５の３バイト目を、データ８９はデータ８２〜８５の４バイト目を、それぞれ結合したものとなる。但し、同じデータの重複がなければ転置方法はこの限りではない。【００９３】
データ８６〜８９はそれぞれＦ関数手段２４で再度攪拌される。ここでは、拡大鍵データｅｋの代わりに１６進数の定数Ｃ４〜Ｃ７を用いる。例えば以下のような定数を用いる。Ｃ４＝０ｘ６ａ０９ｂｂ６７、Ｃ５＝０ｘ３ｃ６ｅ７３１１、Ｃ６＝０ｘａ５４ｆｄ４１３、Ｃ７＝０ｘ２９８ｂ５１０ｅ。【００９４】
Ｆ関数手段２４の出力データ８１３〜８１６を結合したものを中間鍵データ４４とする。【００９５】
図１３は、拡大鍵生成手段２６で実行される処理を説明する図である。拡大鍵生成手段２６は図１３に示すように、中間鍵データに定数を排他的論理和したものを拡大鍵データｅｋ０とする。また、必要な拡大鍵データのデータ量に応じて、定数と巡回シフト数ｘを変えながら拡大鍵データｅｋｉを生成する。ｅｋ０は拡大鍵データ全体の秘密鍵データに対する単射性を保持するために必要である。【００９６】
初期処理手段２２と終期処理手段２４で拡大鍵データをたくさん利用しても、拡大鍵データの使いまわしや、拡大鍵データ間に簡単な関係があれば、少ない仮定量で多くの拡大鍵データが仮定できてしまう。しかしながら、上記のように、拡大鍵データを生成することにより、拡大鍵データの使いまわしや簡単な関係がないようにすることができる。【００９７】
以上、暗号化部１０３について具体的に説明した。しかしながら、復号化部２０３も同様な構成及び動作により、受信データから復号化データを取得することが可能である。【００９８】
この場合、図６の暗号化装置２０は、復号化部２０３に相当し、暗号文４２が受信データに相当し、平文４０が復号化データに相当する。復号化部２０３として動作するときは、暗号化部１０３として動作するときの逆方向に進行する。受信データが入力され一般化Ｆｅｉｓｔｅｌ型データ変換手段１２で拡大鍵データ４１との攪拌を行い、次にＦｅｉｓｔｅｌ型データ変換手段１１で拡大鍵データ４１との攪拌を行い、最後に一般化Ｆｅｉｓｔｅｌ型データ変換手段１０で拡大鍵データ４１との攪拌を行い、復号化データが出力される。【００９９】
Ｆｅｉｓｔｅｌ構造は上下対称な形をしている。そのため、逆方向へ進行させるためには、拡大鍵の使用順序を逆にすればよい。例えばＦｅｉｓｔｅｌ型データ変換手段１１でＦ関数を１０段繰り返す場合、１段目の拡大鍵をｅｋ１、１０段目の拡大鍵をｅｋ１０とすると、１段目のＦ関数へｅｋ１０、１０段目のＦ関数へｅｋ１というように拡大鍵データのみ逆にすれば復号化が可能となる。つまり、構造自体は共有できるというメリットがＦｅｉｓｔｅｌ構造にはある。したがって、対称な構造である一般化Ｆｅｉｓｔｅｌ型データ変換手段１０及び一般化Ｆｅｉｓｔｅｌ型データ変換手段１２を追加しても対称性は維持され、暗号化と復号化とで構造自体の共有が可能になる。【０１００】
つづいて、本実施形態の効果について説明する。【０１０１】
本実施形態によれば、第一変換部１０５で実行される一般化Ｆｅｉｓｔｅｌ型データ変換処理において、３以上のＮ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、第二の分割送信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する。また、生成された演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、上記分割送信データの中から選択された第三の分割送信データと第二の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する。そして、生成されたＮ個の演算処理データを結合して前記第一変換データを生成する。したがって、拡大鍵データを多数使用することが可能となり、ｎラウンド消去攻撃に対する耐性をあげることができる。また、簡単な演算しか使用しないので、ラウンド数を増やすことよりも速度性能面でのメリットが大きい。【０１０２】
また、本実施形態によれば、第三変換部１０７が第二変換部１０６によって取得された第二変換データに、第一変換部１０５が実行する第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して、暗号化データを取得する。したがって、第二変換部１０６で実行されるＦｅｓｉｔｅｌ構造の暗号化処理の対称性が保たれるため、暗号化装置と復号化装置とを共用することができ、実装時の規模の増加を抑えることができる。【０１０３】
ｎラウンド消去攻撃は、第１ラウンドのラウンド関数（ＤＥＳのＦ関数）で使われている拡大鍵データを仮定することよって、第１ラウンド後（つまり第２ラウンドの入力）の中間データを推定する攻撃である。差分解読と組み合わせる場合、第１ラウンド後の中間データを推測できると、第２ラウンドに対して狙った差分を与えることができる。つまり第２ラウンドを元の第１ラウンドとみなす攻撃であり、１ラウンド消去されていることに等しい。仮定する拡大鍵データは秘密鍵長未満であれば全数探索（秘密鍵データの候補を全て試す攻撃）よりも効率的であるといえるので、構造によっては複数ラウンドの消去も可能である。【０１０４】
ｎラウンド消去攻撃に対する耐性を上げるためには、仮定する拡大鍵データの量を増やすことにある。ラウンドを増やせば拡大鍵データの量も増えるため、脅威は小さくなるが、処理が遅くなるのが欠点である。本実施形態の第一変換部１０５では、拡大鍵データだけを挿入する第一の暗号化処理を実行することができる。また、第三変換部１０７においても、拡大鍵データだけを挿入する第二暗号化処理を実行することができる。したがって、拡大鍵データの量は増やしつつ、高速に処理することができる。【０１０５】
一方、排他的論理和だけで拡大鍵データを作用させると拡大鍵データの移動や結合ができ、事実上、拡大鍵データの量を減らすことが可能となってしまう。しかしながら、本実施形態によれば、また、第一処理部１００２および第二処理部１００３において、拡大鍵データと分割送信データとの演算処理を論理和または論理積で行う。したがって、鍵データの移動や結合を阻止することが可能となる。【０１０６】
換言すると、本実施形態では、第一変換部１０５及び第三変換部１０７が備える一般化Ｆｅｉｓｔｅｌ型処理において、鍵データを排他的論理和以外の方法で作用させる。したがって、拡大鍵データの移動ができなくなり、強度をさげることもなくｎラウンド消去攻撃に対する耐性を向上させることが期待できる。【０１０７】
また、第一変換部１０５や第三変換部１０７で拡大鍵データをたくさん利用しても、拡大鍵データの使いまわしや、拡大鍵データ間に簡単な関係があれば、少ない仮定量で多くの鍵データが仮定できてしまう。しかしながら、本実施形態によれば、秘密鍵データをＭ個に分割して、Ｍ分割鍵データごとにＦ関数処理し、Ｍ分割鍵データを転置して、転置データごとにＦ関数処理することができる。そして、このように生成された中間鍵データと、所定数とを排他的論理和したり、秘密鍵データと、中間鍵データと、所定数とを排他的論理和したりする。このようにして、拡大鍵データを生成することにより、拡大鍵データの使いまわしや簡単な関係がないようにすることができる。【０１０８】
このように、本実施形態によれば、高い安全性と優れた処理性能を有する暗号化装置を提供することができる。したがって、本実施形態のデータ送信装置１００によれば、データの通信や蓄積の際にデータを秘匿するための暗号化方法、暗号化装置、及び暗号化プログラムに関し、特にＦｅｉｓｔｅｌ構造を採用した暗号化方法について、ｎラウンド消去攻撃に対する耐性を向上させた暗号化方法、暗号化装置及び暗号化プログラムを提供することができる。【０１０９】
また、本実施形態によれば、高い安全性と優れた処理性能を有する復号化装置を提供することもできる。本実施形態のデータ受信装置２００によれば、データの通信や蓄積の際にデータを秘匿するための復号化方法、復号化装置、及び復号化プログラムに関し、特にＦｅｉｓｔｅｌ構造を採用した復号化方法について、ｎラウンド消去攻撃に対する耐性を向上させた復号化方法、復号化装置及び復号化プログラムを提供することができる。【０１１０】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。【０１１１】
本実施の形態ではデータ送信装置及びデータ受信装置の各部がコンピュータプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、ソフトウェアとハードウェアとの組み合わせとして実現することもできる。【０１１２】
また、上記形態ではデータネットワークとして現状のインターネットＩＮを例示したが、これが次世代のインターネットであるＮＧＮ（Ｎｅｘｔ  Ｇｅｎｅｒａｔｉｏｎ  Ｎｅｔｗｏｒｋ）でもよい。【０１１３】
なお、当然ながら、上述した実施の形態及び複数の変形例は、その内容が相反しない範囲で組み合わせることができる。また、上述した実施の形態及び変形例では、各部の構造などを具体的に説明したが、その構造などは本願発明を満足する範囲で各種に変更することができる。【０１１４】
たとえば、本実施形態で示した暗号化装置１は、暗号処理を実行する暗号処理装置としてのＩＣモジュールとすることができる。暗号化装置１の暗号化処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、ＩＣモジュールは、これら様々な機器に構成することが可能である。【０１１５】
図示しないが、上述のＩＣモジュールは、ＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、プログラム、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等からなる。「ＣＰＵ」は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。「メモリ」は、ＣＰＵが実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ−Ｍｅｍｏｒｙ）である。また、「メモリ」は、暗号処理に必要な拡大鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。「プログラム」は、ＣＰＵの処理において実行されるプログラムである。「ＲＡＭ」は、プログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。【０１１６】
暗号化ＩＣ暗号処理部は、上述した暗号化装置１の暗号処理、復号処理等を実行する。なお、暗号化ＩＣ暗号処理部は、暗号化処理を個別モジュールとしてもよいし、独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭに格納し、ＣＰＵがＲＯＭ格納プログラムを読み出して実行するように構成してもよい。【０１１７】
上述のＩＣモジュールは、暗号化処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する乱数発生器を備えている。【０１１８】
また、上述のＩＣモジュールは、外部とのデータ通信を実行するデータ通信処理部を備える。データ通信処理部は、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。【０１１９】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。【０１２０】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＭＯ（Ｍａｇｎｅｔ  Ｏｐｔｉｃａｌ）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。【０１２１】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。【０１２２】
たとえば、本発明は、以下の構成を採用することもできる。
（１）データと鍵データを入力としてデータを暗号化、及び復号化する装置であって、
該暗号化装置は、第１の一般化Ｆｅｉｓｔｅｌ型データ変換手段と、Ｆｅｉｓｔｅｌ型データ変換手段と、第２の一般化Ｆｅｉｓｔｅｌ型データ変換手段とかなら成り、
該一般化Ｆｅｉｓｔｅｌ型データ変換手段は、入力されたデータを３つ以上に分割する手段と、前記分割データの１つ以上と拡大鍵データとを論理演算する手段と、
論理演算されたデータと、他の分割データとを排他的論理和する手段と、分割データを結合する手段と、を有し、
該Ｆｅｉｓｔｅｌ型データ変換手段は、入力されたデータを２つに分割する手段と、
前記分割データの１つに拡大鍵データを作用させた後に非線形演算する手段と、
非線形演算されたデータと、他の分割データとを排他的論理和する手段と、分割データを結合する手段と、を有し、
かつ第１と第２の一般化Ｆｅｉｓｔｅｌ型データ変換手段はお互いに逆関数の関係にあることを特徴とする暗号化装置。
（２）Ｆｅｉｓｔｅｌ処理におけるラウンド関数が、鍵挿入手段と非線形変換手段とＭＤＳ変形手段を持ち、
該鍵挿入手段は、入力と鍵とを線形演算を用いて攪拌し、
該非線形変換手段は、鍵挿入手段の出力を非線形演算で攪拌し、
該ＭＤＳ変換手段は、非線形変換手段の出力をＭＤＳ変換することを特徴とする（１）に記載の暗号化装置。
（３）データの暗号化に使用する鍵データを生成する鍵スケジュール装置が中間鍵生成手段と拡大鍵生成手段とから成り、
該中間鍵生成手段は、秘密鍵の全ビットが中間鍵の各ビットに影響する全単射な処理であって、
該拡大鍵生成手段は、秘密鍵と中間鍵と定数、もしくは、中間鍵と定数を排他的論理和して拡大鍵を生成する処理であって、
拡大鍵には、中間鍵全ビットと定数を排他的論理和したものを必ず含むことを特徴とする（１）、（２）記載の暗号化装置。【０１２３】
さらに、本発明は、以下の構成を採用することもできる。
（４）ネットワーク送信のための送信データと拡大鍵データとを受け付ける送信データ受付手段と、
前記送信データに第一の演算処理を施して、第一変換データを取得する第一変換手段と、
前記第一変換データにＦｅｉｓｔｅｌ型暗号処理を施して、第二変換データを取得する第二変換手段と、
前記第二変換データに、前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、暗号化データを取得する第三変換手段と、
前記暗号化データを送信する送信手段と、
を備え、
前記第一変換手段は、
前記送信データを３以上に分割して分割送信データを取得する送信データ分割手段と、
一の前記分割送信データと、前記拡大鍵データとを論理演算することにより、前記分割送信データを処理する第一処理手段と、
一の前記分割送信データと、前記第一処理手段によって処理された前記分割送信データとを排他的論理和することにより、前記分割送信データを処理する第二処理手段と、
処理された前記分割送信データを一体化する送信データ結合手段と、
を有することにより前記第一の演算処理を実行することを特徴とするデータ送信装置。
（５）前記第一処理手段は、前記第二処理手段によって処理された前記分割送信データと、前記拡大鍵データとを論理演算することを特徴とする（４）に記載のデータ送信装置。
（６）前記第二処理手段は、排他的論理和された前記分割送信データと、前記第一処理手段によって処理された前記分割送信データとをさらに排他的論理和することを特徴とする（４）または（５）に記載のデータ送信装置。
（７）前記論理演算は、論理和または論理積であることを特徴とする（４）乃至（６）いずれかに記載のデータ送信装置。
（８）秘密鍵データから中間鍵データを経由して前記拡大鍵データを作成する鍵データ作成手段をさらに備え、
前記鍵データ作成手段は、
前記秘密鍵データをＮ個に分割してＮ分割鍵データを取得する鍵分割手段と、
前記Ｎ分割鍵データごとにＦ関数処理する第一関数処理手段と、
Ｆ関数処理された前記Ｎ分割鍵データを分割し、一の前記Ｎ分割鍵データの一部と、他の前記Ｎ分割鍵データの一部とをそれぞれ結合することにより、前記Ｎ分割鍵データを転置してＮ個の転置データを出力する転置手段と、
出力された前記転置データごとにＦ関数処理する第二関数処理手段と、
Ｆ関数処理された前記転置データを一体化して前記中間鍵データを作成する鍵結合手段と、を有し、
前記中間鍵データと、所定数とを排他的論理和し、または、前記秘密鍵データと、前記中間鍵データと、前記所定数とを排他的論理和することにより前記拡大鍵データを作成することを特徴とする（４）乃至（７）いずれかに記載のデータ送信装置。
（９）ネットワークを介して受信された受信データと拡大鍵データとを受け付ける受信データ受付手段と、
前記受信データに第一の演算処理を施して、第一変換データを取得する第一変換手段と、
前記第一変換データにＦｅｉｓｔｅｌ型復号処理を施して、第二変換データを取得する第二変換手段と、
前記第二変換データに前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、復号化データを取得する第三変換手段と、
を備え、
前記第一変換手段は、
受け付けた前記受信データを３以上に分割して分割受信データを取得する受信データ分割手段と、
一の前記分割受信データと、前記拡大鍵データとを論理演算することにより、前記分割受信データを処理する第一処理手段と、
一の前記分割受信データと、前記第一処理手段によって処理された前記分割受信データとを排他的論理和することにより、前記分割受信データを処理する第二処理手段と、
処理された前記分割受信データを一体化する受信データ結合手段と、
を有することにより、前記第一の演算処理を実行することを特徴とするデータ受信装置。
（１０）ネットワーク送信のための送信データと拡大鍵データとを受け付けるステップと、
前記送信データに第一の演算処理を施して、第一変換データを取得するステップと、
前記第一変換データにＦｅｉｓｔｅｌ型暗号処理を施して、第二変換データを取得するステップと、
前記第二変換データに前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、暗号化データを取得するステップと、
前記暗号化データを送信するステップと、
を含み、
前記第一の演算処理は、
前記送信データを３以上に分割して分割送信データを取得するステップと、
一の前記分割送信データと、前記拡大鍵データとを論理演算することにより、前記分割送信データを処理するステップと、
一の前記分割送信データと、前記論理演算により処理された前記分割送信データとを排他的論理和することにより、前記分割送信データを処理するステップと、
処理された前記分割送信データを一体化するステップと、
を含むことを特徴とするデータ送信方法。
（１１）ネットワーク送信のための送信データと拡大鍵データとを受け付ける送信データ受付処理と、
前記送信データに第一の演算処理を施して、第一変換データを取得する第一変換処理と、
前記第一変換データにＦｅｉｓｔｅｌ型暗号処理を施して、第二変換データを取得する第二変換処理と、
前記第二変換データを前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、暗号化データを取得する第三変換処理と、
前記暗号化データを送信する送信処理と、
をデータ送信装置に実行させるコンピュータプログラムであって、
前記第一の演算処理は、
前記送信データを３以上に分割して分割送信データを取得する送信データ分割処理と、
一の前記分割送信データと、前記拡大鍵データとを論理演算することにより、前記分割送信データを処理する第一処理と、
一の前記分割送信データと、前記第一処理によって処理された前記分割送信データとを排他的論理和することにより、前記分割送信データを処理する第二処理と、
処理された前記分割送信データを一体化する送信データ結合処理と、
を含むコンピュータプログラム。
（１２）ネットワークを介して受信された受信データと拡大鍵データとを受け付けるステップと、
前記受信データに第一の演算処理を施して、第一変換データを取得するステップと、
前記第一変換データにＦｅｉｓｔｅｌ型復号処理を施して、第二変換データを取得するステップと、
前記第二変換データを前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、復号化データを取得するステップと、
を含み、
前記第一の演算処理は、
受け付けた前記受信データを３以上に分割して分割受信データを取得するステップと、
一の前記分割受信データと、前記拡大鍵データとを論理演算することにより、前記分割受信データを処理するステップと、
一の前記分割受信データと、前記論理演算により処理された前記分割受信データとを排他的論理和することにより、前記分割受信データを処理するステップと、
処理された前記分割受信データを一体化するステップと、
を含むことを特徴とするデータ受信方法。
（１３）ネットワークを介して受信された受信データと拡大鍵データとを受け付ける受信データ受付処理と、
前記受信データに第一の演算処理を施して、第一変換データを取得する第一変換処理と、
前記第一変換データにＦｅｉｓｔｅｌ型復号処理を施して、第二の変換データを取得する第二変換処理と、
前記第二変換データに前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、復号化データを取得する第三変換処理と、
をデータ受信装置に実行させるコンピュータプログラムであって、
前記第一の演算処理は、
受け付けた前記受信データを３以上に分割して分割受信データを取得する受信データ分割処理と、
一の前記分割受信データと、前記拡大鍵データとを論理演算することにより、前記分割データを処理する第一処理と、
一の前記分割受信データと、前記第一処理によって処理された前記分割受信データとを排他的論理和することにより、前記分割受信データを処理する第二処理と、
処理された前記分割受信データを一体化する受信データ結合処理と、
を含むことを特徴とするコンピュータプログラム。
（１４）（４）に記載のデータ送信装置と、（９）に記載のデータ受信装置とをネットワークを介して接続しているデータ通信システム。【０１２４】
この出願は、２００８年１月９日に出願された日本出願特願２００８−００１８４４を基礎とする優先権を主張し、その開示の全てをここに取り込む。【０１２５】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【図１】
2009087972.tif 000003
【図２】
2009087972.tif 000004
【図３】
2009087972.tif 000005
【図４】
2009087972.tif 000006
【図５】
2009087972.tif 000007
【図６】
2009087972.tif 000008
【図７】
2009087972.tif 000009
【図８】
2009087972.tif 000010
【図９】
2009087972.tif 000011
【図１０】
2009087972.tif 000012
【図１１】
2009087972.tif 000013
【図１２】
2009087972.tif 000014
【図１３】
2009087972.tif 000015
【図１４】
2009087972.tif 000016
【図１５】
2009087972.tif 000017
【図１６】
2009087972.tif 000018
【手続補正書】
【提出日】平成22年7月9日(2010.7.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信データを受け付ける送信データ受付手段と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
前記暗号化データを送信する送信手段と、
を備え、
前記第一変換手段は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割手段と、
前記分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ送信装置。
【請求項２】
前記演算手段は、前記Ｎ個の分割送信データの中から一対をなす前記第三の分割送信データと第四の分割送信データとを選択し、前記第三の分割送信データと拡大鍵データとに論理演算を施して第三の演算結果を生成するとともに、前記第四の分割送信データと前記第三の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第三の処理手段を更に含む、請求項１に記載のデータ送信装置。
【請求項３】
前記演算手段は、前記第二の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第三の演算結果を生成するとともに、前記複数の分割送信データの中から選択された第三の分割送信データと前記第三の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第三の処理手段を更に含む、請求項１に記載のデータ送信装置。
【請求項４】
前記演算手段は、生成した前記演算処理データを入力データとし、前記Ｎ個の入力データに第二の演算処理を施してＮ個の第二の演算処理データを生成し、
前記送信データ結合手段は、前記演算手段により生成された前記Ｎ個の第二の演算処理データを結合し、
前記演算手段は、
前記Ｎ個の入力データの中から一対をなす第一および第二の入力データを選択し、前記第一の入力データと拡大鍵データとに論理演算を施して第四の演算結果を生成するとともに、前記第二の入力データと前記第四の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第四の処理手段と、
前記第四の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第五の演算結果を生成するとともに、前記Ｎ個の入力データの中から選択された第三の入力データと前記第五の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第五の処理手段と、
を含む請求項１乃至３いずれか１項に記載のデータ送信装置。
【請求項５】
拡大鍵データを用いた前記論理演算は、論理和演算または論理積演算である請求項１乃至４いずれか１項に記載のデータ送信装置。
【請求項６】
秘密鍵データから中間鍵データを経由して拡大鍵データを生成する鍵データ生成手段をさらに備え、
前記鍵データ生成手段は、
前記秘密鍵データをＭ個（Ｍは２以上の数）に分割してＭ分割鍵データを生成する鍵分割手段と、
前記Ｍ分割鍵データごとにラウンド関数処理を施す第一関数処理手段と、
ラウンド関数処理された前記Ｍ分割鍵データを分割し、一の前記Ｍ分割鍵データの一部と他の前記Ｍ分割鍵データの一部とをそれぞれ結合することにより、前記Ｍ分割鍵データを転置してＭ個の転置データを出力する転置手段と、
出力された前記転置データごとにラウンド関数処理を施す第二関数処理手段と、
ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成する鍵結合手段と、
を有し、
前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成する請求項１乃至５いずれか１項に記載のデータ送信装置。
【請求項７】
受信データを受け付ける受信データ受付手段と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをＮ個（Ｎは３以上の数）の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともＮ個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記Ｎ個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ受信装置。
【請求項８】
送信データを取得するステップと、
前記送信データに第一の暗号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成するステップと、
前記暗号化データを送信するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割するステップと、
前記分割送信データに演算処理を施して少なくともＮ個の演算処理データを生成するステップと、
前記Ｎ個の演算処理データを生成する前記ステップにおいて生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記Ｎ個の演算処理データを生成する前記ステップは、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ送信方法。
【請求項９】
送信データを受け付ける送信データ受付処理と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
前記暗号化データを送信する送信処理と、
をコンピュータに実行させるためのコンピュータプログラムであって、
前記第一変換処理は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割処理と、
前記分割送信データから少なくともＮ個の演算処理データを生成する演算処理と、
前記演算処理により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
を含み、
前記演算処理は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含むコンピュータプログラム。
【請求項１０】
請求項１に記載のデータ送信装置と請求項７に記載のデータ受信装置とをネットワークを介して接続しているデータ通信システム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
また、本発明によれば、
送信データを受け付ける送信データ受付処理と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
前記暗号化データを送信する送信処理と、
をコンピュータに実行させるためのコンピュータプログラムであって、
前記第一変換処理は、
前記送信データをＮ個（Ｎは３以上の数）の分割送信データに分割する送信データ分割処理と、
前記分割送信データから少なくともＮ個の演算処理データを生成する演算処理と、
前記演算処理により生成された前記Ｎ個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
を含み、
前記演算処理は、
前記Ｎ個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記Ｎ個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含むコンピュータプログラム
が提供される。
【国際調査報告】
2009087972.tif 000019
2009087972.tif 000020
2009087972.tif 000021
2009087972.tif 000022