JPWO2009087972A1 - データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム - Google Patents

データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム Download PDF

Info

Publication number
JPWO2009087972A1
JPWO2009087972A1 JP2009548904A JP2009548904A JPWO2009087972A1 JP WO2009087972 A1 JPWO2009087972 A1 JP WO2009087972A1 JP 2009548904 A JP2009548904 A JP 2009548904A JP 2009548904 A JP2009548904 A JP 2009548904A JP WO2009087972 A1 JPWO2009087972 A1 JP WO2009087972A1
Authority
JP
Japan
Prior art keywords
data
processing
conversion
divided
generate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009548904A
Other languages
English (en)
Inventor
智保 洲崎
智保 洲崎
角尾 幸保
幸保 角尾
博靖 久保
博靖 久保
真紀 茂
真紀 茂
照夫 齊藤
照夫 齊藤
剛嗣 川幡
剛嗣 川幡
浩貴 中嶋
浩貴 中嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
NEC Software Hokuriku Ltd
Original Assignee
NEC Corp
NEC Software Hokuriku Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp, NEC Software Hokuriku Ltd filed Critical NEC Corp
Publication of JPWO2009087972A1 publication Critical patent/JPWO2009087972A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

データ送信装置100は、送信データに暗号化処理を施し、得られた第一変換データにフェイステル構造の暗号化処理を施し、得られた第二変換データに、第一の暗号化処理とは逆関数の関係にある処理を施す。第一変換部105は、送信データをN個(Nは3以上の数)の分割送信データに分割し、分割送信データに演算処理を施して少なくともN個の演算処理データを生成し、生成されたN個の演算処理データを結合して第一変換データを生成する。第一変換部105は、N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、第二の分割送信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成し、生成された演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、N個の分割送信データの中から選択された第三の分割送信データと第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する。

Description

本発明は、データ送信装置、データ受信装置、及び、これらの方法、これらをコンピュータに実行させるためのプログラムを記録するコンピュータ読み取り可能な記録媒体、これらを接続しているデータ通信システム、並びに、データを暗号化する暗号化装置、及び、データを復号化する復号化装置に関する。
共通鍵ブロック暗号の代表としてDES(Data Encryption Standard)がある。DESは1977年にFIPSに採用されて以来、デファクトスタンダードとして広まっていった。
DESの暗号化処理を図14に示す。DESはFeistelと呼ばれる構造を採用している。
まず初期転置IPで平文のビット位置を入れ替えた後、Feistel構造部900で鍵データとの攪拌を行い、その結果を最終転置IP−1でビット入れ替えしたものを暗号文とする。関数Fでは、まず拡大転置Eで32ビットのデータを48ビットに拡大する。次に48ビットのデータに副鍵Kを排他的論理和する。そのデータを8つに分割し、6ビット入力4ビット出力のS−boxで変換し、転置Pでビット入れ替えしたものを出力する。
現在、上述のような暗号化装置として各種の提案がある(例えば、特許文献1乃至3参照)。
特開2002−082607号公報 特開2002−091296号公報 特開2006−072054号公報
しかしながら、上記文献記載の従来技術は、以下の点で改善の余地を有していた。
ブロック暗号の代表的な解読法といえる差分解読の例を、図15で示す。差分解読とは、暗号器に対して特定の差分(2対の平文P1とP2の排他的論理和)ΔP(=ΔP|ΔP)を与えたとき、その暗号器のXラウンド(X ROUND)後の中間データにも高い確率で特定の差分ΔD(ΔD、ΔD)が現れるという暗号器固有の特性を利用する攻撃である。その暗号器のラウンド数が(X+1)ラウンドの場合、特定の差分を持った平文対を暗号化するとある暗号文対C1、C2が得られる。
ここで、第(X+1)ラウンドで使われている拡大鍵データekを仮定すると、暗号文対から1ラウンド遡ることができ、そのデータ対の差分を計算する。その差分がΔDであれば、仮定した拡大鍵データekは正しいと判断する。以上が差分解読の基本原理である。
このように、ブロック暗号のアルゴリズム的な解読においては、外側のラウンドの鍵データから求めていく方法が一般的といえる。DESにおける解読でも同様の解読手法を適用することが出来る。
図14で示すように、DESには初期転置IPと最終転置IP−1がFeistel構造の外側で行われるが、平文、または、暗号文のビット転置を行っているだけであり、これらは平文、暗号文の値を変えているだけであるため、差分攻撃などの解読手法に対しては耐性を向上させる効果はない。
また、いくつかの暗号においては、初期/終期処理として排他的論理和で拡大鍵データを挿入している。これらの拡大鍵データは、上記の解読手法を適用する際に、最終ラウンドの鍵データを仮定するときに同時に仮定せねばならず仮定量が増加する。
しかしながら、図16に示すように、排他的論理和で挿入された鍵データは、等価変形によって移動させることができるため、解読の際には実質ないものとみなすことができ、仮定量の増加には寄与しない場合がある。
更に、暗号の解読において、nラウンド消去攻撃という攻撃があり、差分解読法などと組み合わせて利用される。nラウンド消去攻撃は、平文側、または暗号文側、もしくは両方からの1ラウンド、もしくは数ラウンドの拡大鍵データを秘密鍵長未満のサイズで仮定することによって、解読可能ラウンド数を延ばす攻撃であり、各種解読法と合わせて考慮する必要がある。
nラウンド消去攻撃に対する耐性を挙げるためには、仮定する鍵データの量を増やすことにある。ラウンドを増やせば脅威は小さくなるが、処理が遅くなるという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、実装性を損なうことなく、各種解読手法に対する耐性を向上させたデータ送信装置、データ受信装置、及び、これらの方法、これらをコンピュータに実行させるためのプログラムを記録するコンピュータ読み取り可能な記録媒体、これらを接続しているデータ通信システム、並びに、データを暗号化する暗号化装置、及び、データを復号化する復号化装置を提供することにある。
本発明によれば、
送信データを受け付ける送信データ受付手段と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
前記暗号化データを送信する送信手段と、
を備え、
前記第一変換手段は、
前記送信データをN個(Nは3以上の数)の分割送信データに分割する送信データ分割手段と、
前記分割送信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する送信データ結合手段と、
を有し、
前記演算手段は、
前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ送信装置
が提供される。
また、本発明によれば、
受信データを受け付ける受信データ受付手段と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含むデータ受信装置
が提供される。
また、本発明によれば、
送信データを取得するステップと、
前記送信データに第一の暗号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成するステップと、
前記暗号化データを送信するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記送信データをN個(Nは3以上の数)の分割送信データに分割するステップと、
前記分割送信データに演算処理を施して少なくともN個の演算処理データを生成するステップと、
前記N個の演算処理データを生成する前記ステップにおいて生成された前記N個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記N個の演算処理データを生成する前記ステップは、
前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ送信方法
が提供される。
また、本発明によれば、
送信データを受け付ける送信データ受付処理と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
前記暗号化データを送信する送信処理と、
をコンピュータに実行させるためのプログラムを記録し、
前記第一変換処理は、
前記送信データをN個(Nは3以上の数)の分割送信データに分割する送信データ分割処理と、
前記分割送信データから少なくともN個の演算処理データを生成する演算処理と、
前記演算処理により生成された前記N個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
を含み、
前記演算処理は、
前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含むコンピュータ読み取り可能な記録媒体
が提供される。
また、本発明によれば、
受信データを取得するステップと、
前記受信データに第一の復号化処理を施して第一変換データを生成するステップと、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成するステップと、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成するステップと、
を含み、
前記第一変換データを生成する前記ステップは、
前記受信データをN個(Nは3以上の数)の分割受信データに分割するステップと、
前記分割受信データに演算処理を施して少なくともN個の演算処理データを生成するステップと、
前記演算処理データにより生成された前記N個の演算処理データを結合して前記第一変換データを生成するステップと、
を含み、
前記N個の演算処理データを生成する前記ステップは、
前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
を含むデータ受信方法
が提供される。
また、本発明によれば、
受信データを受け付ける受信データ受付処理と、
前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換処理と、
をコンピュータに実行させるためのプログラムを記録し、
前記第一変換処理は、
前記受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割処理と、
前記分割受信データから少なくともN個の演算処理データを生成する演算処理と、
前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合処理と、
を含み、
前記演算処理は、
前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含む、コンピュータ読み取り可能な記録媒体
が提供される。
また、本発明によれば、上記のデータ送信装置と上記のデータ受信装置とをネットワークを介して接続しているデータ通信システムが提供される。
また、本発明によれば、
平文を受け付けるデータ受付手段と、
拡大鍵データを記憶するメモリと、
前記平文に第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記平文をN個(Nは3以上の数)の分割データに分割するデータ分割手段と、
前記分割データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成するデータ結合手段と、
を有し、
前記演算手段は、
前記N個の分割データの中から一対をなす第一および第二の分割データを選択し、前記第一の分割データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割データの中から選択された第三の分割データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含む暗号化装置
が提供される。
さらに本発明によれば、
暗号化データを受け付けるデータ受付手段と、
拡大鍵データを記憶するメモリと、
前記暗号化データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して平文を生成する第三変換手段と、
を備え、
前記第一変換手段は、
前記受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割手段と、
前記分割受信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
を有し、
前記演算手段は、
前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
を含む復号化装置
が提供される。
なお、本発明の各種の構成要素は、その機能を実現するように形成されていればよく、例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ送信装置及びデータ受信装置、コンピュータプログラムによりデータ送信装置及びデータ受信装置に実現された所定の機能、これらの任意の組み合わせ、等として実現することができる。
また、本発明の各種の構成要素は、個々に独立した存在である必要もなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でよい。
また、本発明のデータ送信方法及びデータ受信方法には複数の工程を順番に記載してあるが、その記載の順番は複数の工程を実行する順番を限定するものではない。このため、本発明のデータ送信方法及びデータ受信方法を実施するときには、その複数の工程の順番は内容的に支障しない範囲で変更することができる。
さらに、本発明のデータ送信方法及びデータ受信方法の複数の工程は個々に相違するタイミングで実行されることに限定されない。このため、ある工程の実行中に他の工程が発生すること、ある工程の実行タイミングと他の工程の実行タイミングとの一部ないし全部が重複していること、等でもよい。
また、本発明で云うデータ送信装置及びデータ受信装置は、コンピュータプログラムを読み取って対応するデータ処理を実行できるように、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、I/F(Interface)ユニット、等の汎用デバイスで構築されたハードウェア、所定のデータ処理を実行するように構築された専用の論理回路、これらの組み合わせ、等として実施することができる。
本発明によれば、nラウンド消去攻撃に対する耐性をあげつつ、高速処理を可能とする。また、本発明によれば、暗号化と復号化の機能を一つの装置で共用し、実装時の規模の増加を抑えることを可能とする。
上述した目的、及びその他の目的、特徴及び利点は、以下に述べる好適な実施の形態、及びそれに付随する以下の図面によってさらに明らかになる。
実施形態のデータ通信システムを模式的に示すブロック図である。 実施形態の第一変換部の構成を模式的に示すブロック図である。 実施形態の鍵データ生成部の構成を模式的に示すブロック図である。 実施形態の暗号化部に相当する暗号化装置の構成を説明する図である。 通常の一般化フェイステル構造の暗号化処理を説明する図である。 実施形態の暗号化装置及び鍵スケジュール装置の構成を模式的に示す図である。 実施形態の第一変換部(初期処理手段)で実行される第一の暗号化処理の一例を説明する図である。 実施形態の第一変換部(初期処理手段)で実行される第一の暗号化処理の一例を説明する図である。 実施形態の第二変換部(終期処理手段)で実行される第二の暗号化処理の一例を説明する図である。 実施形態の第二変換部(終期処理手段)で実行される第二の暗号化処理の一例を説明する図である。 実施形態のラウンド関数手段で実行されるフェイステル構造の暗号化処理を説明する図である。 実施形態の鍵スケジュール装置の処理を説明する図である。 実施形態の鍵データ生成手段で実行される処理を説明する図である。 DESの暗号化処理を説明する図である。 ブロック暗号の解読法の一例を示す図である。 関連する暗号化処理を説明する図である。
以下、本発明の実施の形態について、図面を用いて説明する。
図1は、本実施形態のデータ通信システムを模式的に示すブロック図である。本実施形態のデータ通信システムは、データ送信装置100と、データ受信装置200とをネットワーク1000を介して接続している。
データ送信装置100は、送信データと拡大鍵データとを受け付けるデータ受付部101と、送信データを暗号化して暗号化データを生成する暗号化部103と、暗号化データを送信する送信部109と、を備える。
暗号化部103は、送信データに第一の暗号化処理を施して第一変換データを生成する第一変換部105と、第一変換データにフェイステル(Feistel)構造の暗号化処理を施して第二変換データを生成する第二変換部106と、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換部107と、を備える。
図2は、第一変換部105の構成を模式的に示すブロック図である。第一変換部105は、送信データをN個(Nは3以上の数)の分割送信データに分割するデータ分割部1001と、分割送信データに演算処理を施して少なくともN個の演算処理データを生成する演算部(第一処理部1002および第二処理部1003)と、前記演算部により生成されたN個の演算処理データを結合して第一変換データを生成するデータ結合部1004と、を有する。上記演算部は、N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、第一の分割送信データと拡大鍵データとに排他的論理和以外の論理演算を施して第一の演算結果を生成するとともに、第二の分割送信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第一処理部1002(第一の処理手段)と、第一の処理部1002により生成された演算処理データと拡大鍵データとに排他的論理和以外の論理演算を施して第二の演算結果を生成するとともに、N個の分割送信データの中から選択された第三の分割送信データと第二の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第二処理部1004(第二の処理手段)を含む。
たとえば、N=4の場合、第一の暗号化処理は、図7で示す処理を例示することができる。まず、第一処理部1002は、データ分割部1001で分割された4個の分割送信データの中から一対をなす分割送信データ701、702を選択して、分割送信データ701と拡大鍵データek0とに論理積演算30を施す。生成された演算結果と分割送信データ702とに排他的論理和演算を施して演算処理データ705を生成し、第二処理部1003に送出する。ついで、第二処理部1003において、データ分割部1001で分割された4個の分割送信データの中から分割送信データ703を選択するとともに、演算処理データ705と拡大鍵データek2とに論理和演算31を施す。生成された演算結果と分割送信データ703とに排他的論理和演算を施して演算処理データ706を生成する。
また、第一処理部1002は、データ分割部1001で分割された4個の分割送信データの中から一対をなす分割送信データ703、704を選択し、分割送信データ703と拡大鍵データek1とに論理和演算31を施す。生成された演算結果と分割送信データ704とに排他的論理和演算を施して演算処理データ707を生成し、第二処理部1003に送出する。ついで、第二処理部1003において、データ分割部1001で分割された4個の分割送信データの中から分割送信データ701を選択するとともに、演算処理データ707と拡大鍵データek3とに論理和演算31を施す。生成された演算結果と分割送信データ701とに排他的論理和演算を施して演算処理データ708を生成する。
上記演算部は、生成した演算処理データを入力データとし、N個の入力データに第二の演算処理を施してN個の第二の演算処理データを生成してもよい。
たとえば、N=4の場合、図7で例示するように、第二処理部1003に一時的に保持された4個の演算処理データ705、706,707,708を入力データとする。第一処理部1002は、一対をなす入力データ705、708を選択し、入力データ708と拡大鍵データek4とに論理和演算31を施す。生成した演算結果と入力データ705とに排他的論理和演算を施して演算処理データ709を生成し、第二処理部1003に送出する(第四の処理手段)。第二処理部1003は、第一処理部1002で生成された演算処理データ709と拡大鍵データek6とに論理積演算を施す。生成した演算結果と入力データ706とに排他的論理和演算を施して演算処理データ710を生成する。
また、第一処理部1002は、一対をなす入力データ706、707を選択し、入力データ706と拡大鍵データek5とに論理積演算30を施す。生成した演算結果と入力データ707とに排他的論理和演算を施して演算処理データ711を生成する(第五の処理手段)。第二処理部1003は、第一処理部1002で生成された演算処理データ711と拡大鍵データek7とに論理和演算31を施す。生成した演算結果と入力データ708とに排他的論理和演算を施して演算処理データ712を生成する。
ついで、データ結合部1004は、第二処理部1003から4個の演算処理データ709、710、711、712を受け付けて結合し、第一変換データとする。
なお、第一処理部1002および第二処理部1003は、上記第二の演算処理により生成したN個の第二の演算処理データを入力データとし、N個の入力データについて上記第二の演算処理を反復的に実行してもよい。
また、第一処理部1002および第二処理部1003は、生成した演算処理データと拡大鍵データとに排他的論理和以外の論理演算を施して第三の演算結果を生成するとともに、N個の分割送信データの中から選択された第三の分割送信データと第三の演算結果とに排他的論理和演算を施して演算処理データの一つを生成してもよい(第三の処理手段)。
図8を用いて第三の処理手段の一例について説明する。第二処理部1003は、生成した演算処理データ806と拡大鍵データek2とに論理演算を施す。生成した演算結果と分割送信データ804とに排他的論理和演算を施して演算処理データ807を生成する。
第二の処理部1002は、第三の処理手段で生成した演算処理データを利用して、第三の処理手段と同様の処理を反復的に実行してもよい。たとえば、図8の例において、第二の処理部1003は、生成した演算処理データ807と拡大鍵データek3とに論理和演算を施す。生成された演算結果と分割送信データ801とに排他的論理和演算を施して演算処理データ808を生成する。
図8の例においても、生成した演算処理データ805、806、807、808を入力データとし、4個の入力データ805、806、807、808に一連の演算処理を施して4個の演算処理データを生成する。図示された入力データ805、806、807、808を用いた演算処理は、上述の第一、第二、第三の処理手段において、分割送信データを入力データに置き換えた処理と同様である。
データ分割部1001は、データ受付部101から送信データ及び拡大鍵データを受け付ける。また、データ受付部101は、メモリ(図示せず)に記憶された拡大鍵データを読み出してもよい。分割送信データは、拡大鍵データとともに第一処理部1002及び第二処理部1003に送出される。このとき、送信データは3以上の数の分割送信データに分割し、分割送信データから対を生成する。生成した対は、第一処理部1002に送出してもよい。
第一処理部1002及び第二処理部1003は、第一の暗号化処理として、一般化Feistel型の暗号化処理を行う。ただし、第一処理部1002では、一般化Feistel型の暗号化処理において、入力データと拡大鍵データとの攪拌に論理和演算や論理積演算など排他的論理和以外を利用する。
また、第一処理部1002および第二処理部1003において、拡大鍵を用いた演算処理は、排他的論理和以外の論理演算を実行する。論理演算は、たとえば、論理和または論理積とすることができる。また、第一処理部1002および第二処理部1003において、算術加算を行ってもよい。
このように、第一処理部1002および第二処理部1003は、演算処理により生成されたN個の演算結果を入力データとし、各対について演算処理を反復的に実行することができる。反復回数は1回であってもよく、2回以上でも構わない。
このような構成により、第一変換部105は、第一の暗号化処理を実行する。そして、データ結合部1004は、生成した第一変換データを第二変換部106に送出する。
第二変換部106は、Feistel構造の暗号化処理を行う。
第三変換部107は、一般化Feistel型の暗号化処理を行う。ただし、第三変換部107では、一般化Feistel型の暗号化処理において、入力データと拡大鍵データとの攪拌に論理和や論理積など排他的論理和以外を利用する。ここで、第三変換部107のデータ処理を第一変換部105のデータ処理と逆関数の関係にすることにより、第二変換部106の対処性を保つことができる。
データ送信装置100は、秘密鍵データから中間鍵データを経由して拡大鍵データを生成する鍵データ生成部111をさらに備える。図3は、鍵データ生成部111の構成を模式的に示すブロック図である。鍵データ生成部111は、秘密鍵データをM個(Mは2以上)に分割してM分割鍵データを取得する鍵データ分割部1005と、M分割鍵データごとにラウンド関数(F関数)処理を施す第一関数処理部1006と、F関数処理されたM分割鍵データを分割し、一のM分割鍵データの一部と他のM分割鍵データの一部とをそれぞれ結合することにより、M分割データを転置してM個の転置データを出力する転置部1007と、出力された転置データごとにF関数処理する第二関数処理部1008と、F関数処理された転置データを結合して中間鍵データを生成する鍵結合部1009と、演算部1010を有する。演算部1010は、鍵結合部1009から中間鍵データを受け付けて、拡大鍵データを算出する。具体的には、拡大鍵データは、中間鍵データと所定数とを排他的論理和したり、秘密鍵データと中間鍵データと所定数とを排他的論理和したりして生成することができる。
図1に戻り、データ受信装置200は、ネットワーク1000を介して受信された受信データと拡大鍵データとを受け付ける受信部201と、受信データを復号化して復号化データを取得する復号化部203と、拡大鍵データと復号化データとを記憶する記憶部209とを備える。
復号化部203は、受信データに第一の復号化処理を施して第一変換データを生成する第一変換部205と、第一変換データにFeistel構造の復号化処理を施して第二変換データを生成する第二変換部206と、第二変換データに、第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換部207と、を備える。
第一変換部205は、図2で示す第一変換部105と、同様な構成を有している。ただし、第一変換部205において、データ分割部1001は、受信データをN個(Nは3以上の数)の分割受信データに分割する。第一処理部1002及び第二処理部1003は、分割受信データに演算処理を施して少なくともN個の演算処理データを生成する。データ結合部1003は、第二処理部1003により生成されたN個の演算処理データを結合して第一変換データを生成する。
なお、第一変換部205の第一処理部1002および第二処理部1003もまた、演算処理により生成されたN個の演算処理データを入力データとし、演算処理を反復的に実行することができる。反復回数は1回であってもよく、2回以上でも構わない。
このような構成により、第一変換部205は、第一の復号化処理を実行する。そして、データ結合部1004は、生成した第一変換データを第二変換部206に送出する。
上述のようなデータ送信装置100及びデータ受信装置200の各部は、必要により各種のハードウェアを利用して実現される。しかし、データ送信装置100及びデータ受信装置200が実装されているコンピュータプログラムに対応して機能することにより実現されている。
このようなコンピュータプログラムは、例えば、送信データを受け付ける送信データ受付処理、送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理、第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理、暗号化データを送信する送信処理等の処理動作をCPU等に実行させるためのソフトウェアとしてRAM等の情報記憶媒体に格納されている。
また、このようなコンピュータプログラムは、例えば、受信データを受け付ける受信データ受付処理と、受信データに第一の復号化処理を施して第一変換データを生成する第一変換処理と、第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換処理等の処理動作をCPU等に実行させるためのソフトウェアとしてRAM等の情報記憶媒体に格納されている。
なお、本実施形態において、第一変換部105で実行される第一の演算処理と第三変換部107で実行される第二の演算処理とは逆関数の関係にある。したがって、暗号化部103は、復号化部203としても機能することができる。そのため、データ送信装置100は、データ受信装置200として機能することもできる。
以下、本実施形態のデータ通信システムの暗号化部103についてさらに具体的に説明する。
図4は、暗号化部103に相当する暗号化装置1の構成を説明する図である。この暗号化装置1は、平文40を受け付けるデータ受付手段と、拡大鍵データ41を記憶するメモリ(図示せず)と、平文40に第一の暗号化処理を施して第一変換データを生成する一般化Feistel型データ変換手段(第一変換手段)10と、第一変換データにFeistel構造の暗号化処理を施して第二変換データを生成するFeistel型データ変換手段(第二変換手段)11と、第二変換データに、第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号文42を生成する一般化Feistel型データ変換手段(第三変換手段)12と、を備える。一般化Feistel型データ変換手段10は、平文40をN個(Nは3以上の数)の分割データに分割するデータ分割手段と、分割データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成するデータ結合手段と、を有する。上記演算手段は、N個の分割データの中から一対をなす第一および第二の分割データを選択し、第一の分割データと上記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、第二の分割データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第一の処理手段と、第一の処理手段により生成された演算処理データと上記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、N個の分割データの中から選択された第三の分割データと第二の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第二の処理手段と、を含む。
また、この暗号化装置1は、以下のような復号化装置としても機能する。すなわち、上記復号化装置は、暗号文42を受け付けるデータ受付手段と、拡大鍵データ41を記憶するメモリと、暗号文42に第一の復号化処理を施して第一変換データを生成する一般化Feistel型データ変換手段(第一変換手段)12と、第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成するFeistel型データ変換手段(第二変換手段)11と、第二変換データに、第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して平文40を生成する一般化Feistel型データ変換手段(第三変換手段)10と、を備える。一般化Feistel型データ変換手段12は、受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割手段と、分割受信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、を有する。上記演算手段は、N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、第一の分割受信データと上記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する第一の処理手段と、第一の処理手段により生成された演算処理データと上記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、N個の分割受信データの中から選択された第三の分割受信データと第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、を含む。
以下、さらに詳述すると、暗号化装置1は、データと拡大鍵データとを入力してデータを暗号化及び復号化する装置である。暗号化装置1は、第1の一般化Feistel型データ変換手段10と、Feistel型データ変換手段11と、第2の一般化Feistel型データ変換手段12とからなる。一般化Feistel型データ変換手段10が第一変換部105に相当し、Feistel型データ変換手段11が第二変換部106に相当し、一般化Feistel型データ変換手段12が第三変換部107に相当する。
Feistel型データ変換手段11は、入力されたデータを2つに分割する手段と、分割データの1つに拡大鍵データを作用させた後に非線形演算する手段と、非線形演算されたデータと他の分割データとを排他的論理和する手段と、分割データを結合する手段と、を有する(図示せず)。
一般化Feistel型データ変換手段10及び一般化Feistel型データ変換手段12はお互いに逆関数の関係にある。
図4で示すように、暗号化装置1は、平文40と拡大鍵データ41とを入力し、暗号文42を出力する。平文40は、一般化Feistel型データ変換手段10で拡大鍵データ41と攪拌され、次にFeistel型データ変換手段11で拡大鍵データ41と攪拌され、最後に一般化Feistel型データ変換手段12で拡大鍵データ41と攪拌され、暗号文42を出力する。平文40が送信データに相当し、暗号文42が暗号化データに相当する。
一般化Feistel型データ変換手段10及び一般化Feistel型データ変換手段12は、それぞれ、入力データを3つ以上に分割し、分割したデータの1つ、もしくは、2つ以上のデータを拡大鍵データ41と攪拌し、残りのデータの1つ、もしくは2つ以上のデータに排他的論理和し、データをクロスしながら繰り返し攪拌を行い変換する処理を行う。
図5は、一般化Feistel型の暗号化処理を説明する図である。一般化Feistel型の暗号化処理では、入力されたデータXをn個のデータX〜Xn−1に分割し、分割したデータの1個以上に対して変換Fを施し、その結果を別のデータに作用させる。そして分割データを巡回するように隣へシフトする。変換Fと巡回シフトを複数回繰り返し、最後に分割データを結合したものを出力データとする。
本実施形態の一般化Feistel型データ変換手段10、12では、上述の一般化Feistel型の暗号化処理において、拡大鍵データ41との攪拌に論理和や論理積など排他的論理和以外を利用する。
一方、Feistel構造の暗号化処理は、通常の一般化Feistel型の暗号化処理における分割数が2の場合をさすものである。
図6は、図1の暗号化部103の機能を有する暗号化装置20と、図1の鍵データ生成部111の機能を有する鍵スケジュール装置21の構成を模式的に示す図である。暗号化装置20は、初期処理手段22、F関数手段23、終期処理手段24を有する。図1を参照すると、初期処理手段22は、第一変換部105に相当し、F関数手段23は第二変換部106に相当し、終期処理手段24は、第三変換部107に相当する。また、図4を参照すると、初期処理手段22は、一般化Feistel型データ変換手段10に相当し、F関数手段23はFeistel型データ変換手段11に相当し、終期処理手段24は、一般化Feistel型データ変換手段12に相当する。
図6で示すように、暗号化装置20は、平文40と拡大鍵データ41とを入力とし、暗号文42を出力する。平文40は、初期処理手段22で拡大鍵データ41との攪拌を行い、次にF関数手段23で拡大鍵データ41との攪拌を行い、最後に終期処理手段24で拡大鍵データ41との攪拌を行い、暗号文42を出力する。
図7は、初期処理手段22で実行される第一の暗号化処理の一例を説明する図である。初期処理手段22は、図7に示すように、入力データを4つに分割し、2並列で処理を行う一般化Feistel構造で、論理積演算30と論理和演算31を有し、拡大鍵データ(ek0〜ek7)を作用させる。
具体的には、入力されたデータが4個に分割してデータ701、702、703、704が得られる。データ701と、拡大鍵データek0とが論理積演算され、得られたデータがデータ702と排他的論理和され、データ705が得られる。データ705は、拡大鍵データek2と論理和演算された後、データ703と排他的論理和され、データ706が得られる。また、データ703と、拡大鍵データek1とが論理和演算され、得られたデータがデータ704と排他的論理和され、データ707が得られる。また、データ707と、拡大鍵データek3とが論理積演算され、得られたデータがデータ701と排他的論理和され、データ708が得られる。また、データ708と、拡大鍵データek4とが論理和演算され、得られたデータがデータ705と排他的論理和され、データ709が得られる。また、データ709と、拡大鍵データek6とが論理積演算され、得られたデータがデータ706と排他的論理和され、データ710が得られる。また、データ706と、拡大鍵データek5とが論理積演算され、得られたデータがデータ707と排他的論理和され、データ711が得られる。また、データ711と、拡大鍵データek7とが論理和演算され、得られたデータがデータ708と排他的論理和され、データ712が得られる。データ709〜712を結合し、第一変換データとする。
図8は、初期処理手段22で実行される第一の暗号化処理の別の例を説明する図である。入力データを4つに分割し、逐次的に拡大鍵データを論理演算させるものである。
さらに具体的に図7で示す処理と図8で示す処理との違いについて説明すると、主にハードウェアで実装した場合、図7の構成では、データ701の演算とデータ703の演算は独立している(お互いの演算結果を利用しない)ため、同時に処理することができる。同様にデータ705とデータ707も独立したデータなので並列に処理することができる。一方、図8の構成では、逐次的に拡大鍵データの演算を行うため、前の演算が終わるまで次の演算が行うことが出来ない。このように、図7の構成では8回の鍵データとの演算を行うが、2並列で処理できるため、4ステップで処理することができるが、図8の構成では8ステップを要する。よって、処理速度では図7の構成が有利である。
図8の例では、図7の例の倍の処理時間を要するが、データに作用する拡大鍵データの量は図8の例の方が多くなる。作用する拡大鍵データの量が少ない箇所で比較すると、図7で示すデータ32(711)には、ek0,ek1,ek2,ek5の4つの拡大鍵データしか影響しないが、図8のデータ50にはek0〜ek4の5つが作用する。このように図7の例では、同じ拡大鍵データ量でもデータに作用する拡大鍵データを多くできるという特徴をもつ。
図9は、終期処理手段24で実行される第二の暗号化処理の一例を説明する図である。初期処理手段22が図7で示す処理を実行するとき、終期処理手段24では、図9で示す処理が実行される。終期処理手段24も図9に示すように、入力データを4つに分割し、2並列で処理を行う一般化Feistel構造で、論理積演算30と論理和演算31を有し、拡大鍵データ(ek0〜ek7)を作用させる。初期処理手段22と終期処理手段24とは処理順序が逆になった逆関数の関係にある。したがって、図9で示す終期処理手段24による第二の暗号化処理は、図7の例で示す初期処理手段22による第一の暗号化処理の逆関数となっている。
図10は、終期処理手段で実行される第二の暗号化処理の別の例を説明する図である。初期処理手段22が図8で示す処理を実行するとき、終期処理手段24では、図10で示す処理が実行される。したがって、図10で示す終期処理手段24による第二の暗号化処理は、図8の例で示す初期処理手段22による第一の暗号化処理の逆関数となっている。
図11は、F関数手段23で実行されるFeistel構造の暗号化処理を説明する図である。F関数手段23では、図11に示すように、拡大鍵データの排他的論理和による処理と、非線形変換手段70と、MDS変換手段71とを有する。
入力データに拡大鍵データekを排他的論理和したデータを、データ701〜704の4つに分割する。データ701〜704はそれぞれ非線形変換手段70で変換される(データ705〜708)。データ705〜708はMDS変換手段71で変換されデータ709〜712を出力する。MDS変換手段71で用いられるMDS行列としては、AESのMixColumnで利用されているものがある。最後に、データ709〜712を結合したものを出力データとする。
図6に戻り、鍵スケジュール装置21は、中間鍵生成手段25(図6では中間鍵生成処理と図示)と拡大鍵生成手段26(図6では拡大鍵生成処理と図示)を有する。図12は、鍵スケジュール装置21の処理を説明する図である。中間鍵生成手段25は図12に示すように、F関数手段23と転置手段81を有する。F関数手段23が第一関数処理部1006に相当し、F関数手段24が第二関数処理部1008に相当し、転置手段81が転置部1007に相当する。
秘密鍵データ43は分割され、F関数手段23により演算処理される。F関数手段23に入力する拡大鍵データの代わりに、定数(C〜C)を与える。転置手段81はデータの転置を行う処理であり、データ82,83,84,85を4分割したうちのそれぞれ1つのデータをデータ86に出力する。また、データ87,88,89にもデータ82,83,84,85を4分割したうちのそれぞれ1つを出力する。但し、同じデータが2箇所以上に出力されないように転置を行う。F関数手段23は、出力の各ビットに全入力ビットが影響する処理であるため、中間鍵データ44には秘密鍵データ43の全ビットが影響する。
さらに具体的に中間鍵生成手段25を説明する。ここでは、秘密鍵長が128ビットの場合を例として説明する。
秘密鍵データ43は、32ビットの4つのデータ801〜804に分割され、それぞれがF関数手段23で攪拌される。F関数手段23には拡大鍵データekの代わりに、C〜Cには、定数ゼロを与える。
転置手段81はデータの転置を行う処理であり、データ86はデータ82〜85の1バイト目を、データ87はデータ82〜85の2バイト目を、データ88はデータ82〜85の3バイト目を、データ89はデータ82〜85の4バイト目を、それぞれ結合したものとなる。但し、同じデータの重複がなければ転置方法はこの限りではない。
データ86〜89はそれぞれF関数手段24で再度攪拌される。ここでは、拡大鍵データekの代わりに16進数の定数C〜Cを用いる。例えば以下のような定数を用いる。C=0x6a09bb67、C=0x3c6e7311、C=0xa54fd413、C=0x298b510e。
F関数手段24の出力データ813〜816を結合したものを中間鍵データ44とする。
図13は、拡大鍵生成手段26で実行される処理を説明する図である。拡大鍵生成手段26は図13に示すように、中間鍵データに定数を排他的論理和したものを拡大鍵データek0とする。また、必要な拡大鍵データのデータ量に応じて、定数と巡回シフト数xを変えながら拡大鍵データekiを生成する。ek0は拡大鍵データ全体の秘密鍵データに対する単射性を保持するために必要である。
初期処理手段22と終期処理手段24で拡大鍵データをたくさん利用しても、拡大鍵データの使いまわしや、拡大鍵データ間に簡単な関係があれば、少ない仮定量で多くの拡大鍵データが仮定できてしまう。しかしながら、上記のように、拡大鍵データを生成することにより、拡大鍵データの使いまわしや簡単な関係がないようにすることができる。
以上、暗号化部103について具体的に説明した。しかしながら、復号化部203も同様な構成及び動作により、受信データから復号化データを取得することが可能である。
この場合、図6の暗号化装置20は、復号化部203に相当し、暗号文42が受信データに相当し、平文40が復号化データに相当する。復号化部203として動作するときは、暗号化部103として動作するときの逆方向に進行する。受信データが入力され一般化Feistel型データ変換手段12で拡大鍵データ41との攪拌を行い、次にFeistel型データ変換手段11で拡大鍵データ41との攪拌を行い、最後に一般化Feistel型データ変換手段10で拡大鍵データ41との攪拌を行い、復号化データが出力される。
Feistel構造は上下対称な形をしている。そのため、逆方向へ進行させるためには、拡大鍵の使用順序を逆にすればよい。例えばFeistel型データ変換手段11でF関数を10段繰り返す場合、1段目の拡大鍵をek1、10段目の拡大鍵をek10とすると、1段目のF関数へek10、10段目のF関数へek1というように拡大鍵データのみ逆にすれば復号化が可能となる。つまり、構造自体は共有できるというメリットがFeistel構造にはある。したがって、対称な構造である一般化Feistel型データ変換手段10及び一般化Feistel型データ変換手段12を追加しても対称性は維持され、暗号化と復号化とで構造自体の共有が可能になる。
つづいて、本実施形態の効果について説明する。
本実施形態によれば、第一変換部105で実行される一般化Feistel型データ変換処理において、3以上のN個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、第二の分割送信データと第一の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する。また、生成された演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、上記分割送信データの中から選択された第三の分割送信データと第二の演算結果とに排他的論理和演算を施して演算処理データの一つを生成する。そして、生成されたN個の演算処理データを結合して前記第一変換データを生成する。したがって、拡大鍵データを多数使用することが可能となり、nラウンド消去攻撃に対する耐性をあげることができる。また、簡単な演算しか使用しないので、ラウンド数を増やすことよりも速度性能面でのメリットが大きい。
また、本実施形態によれば、第三変換部107が第二変換部106によって取得された第二変換データに、第一変換部105が実行する第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して、暗号化データを取得する。したがって、第二変換部106で実行されるFesitel構造の暗号化処理の対称性が保たれるため、暗号化装置と復号化装置とを共用することができ、実装時の規模の増加を抑えることができる。
nラウンド消去攻撃は、第1ラウンドのラウンド関数(DESのF関数)で使われている拡大鍵データを仮定することよって、第1ラウンド後(つまり第2ラウンドの入力)の中間データを推定する攻撃である。差分解読と組み合わせる場合、第1ラウンド後の中間データを推測できると、第2ラウンドに対して狙った差分を与えることができる。つまり第2ラウンドを元の第1ラウンドとみなす攻撃であり、1ラウンド消去されていることに等しい。仮定する拡大鍵データは秘密鍵長未満であれば全数探索(秘密鍵データの候補を全て試す攻撃)よりも効率的であるといえるので、構造によっては複数ラウンドの消去も可能である。
nラウンド消去攻撃に対する耐性を上げるためには、仮定する拡大鍵データの量を増やすことにある。ラウンドを増やせば拡大鍵データの量も増えるため、脅威は小さくなるが、処理が遅くなるのが欠点である。本実施形態の第一変換部105では、拡大鍵データだけを挿入する第一の暗号化処理を実行することができる。また、第三変換部107においても、拡大鍵データだけを挿入する第二暗号化処理を実行することができる。したがって、拡大鍵データの量は増やしつつ、高速に処理することができる。
一方、排他的論理和だけで拡大鍵データを作用させると拡大鍵データの移動や結合ができ、事実上、拡大鍵データの量を減らすことが可能となってしまう。しかしながら、本実施形態によれば、また、第一処理部1002および第二処理部1003において、拡大鍵データと分割送信データとの演算処理を論理和または論理積で行う。したがって、鍵データの移動や結合を阻止することが可能となる。
換言すると、本実施形態では、第一変換部105及び第三変換部107が備える一般化Feistel型処理において、鍵データを排他的論理和以外の方法で作用させる。したがって、拡大鍵データの移動ができなくなり、強度をさげることもなくnラウンド消去攻撃に対する耐性を向上させることが期待できる。
また、第一変換部105や第三変換部107で拡大鍵データをたくさん利用しても、拡大鍵データの使いまわしや、拡大鍵データ間に簡単な関係があれば、少ない仮定量で多くの鍵データが仮定できてしまう。しかしながら、本実施形態によれば、秘密鍵データをM個に分割して、M分割鍵データごとにF関数処理し、M分割鍵データを転置して、転置データごとにF関数処理することができる。そして、このように生成された中間鍵データと、所定数とを排他的論理和したり、秘密鍵データと、中間鍵データと、所定数とを排他的論理和したりする。このようにして、拡大鍵データを生成することにより、拡大鍵データの使いまわしや簡単な関係がないようにすることができる。
このように、本実施形態によれば、高い安全性と優れた処理性能を有する暗号化装置を提供することができる。したがって、本実施形態のデータ送信装置100によれば、データの通信や蓄積の際にデータを秘匿するための暗号化方法、暗号化装置、及び暗号化プログラムに関し、特にFeistel構造を採用した暗号化方法について、nラウンド消去攻撃に対する耐性を向上させた暗号化方法、暗号化装置及び暗号化プログラムを提供することができる。
また、本実施形態によれば、高い安全性と優れた処理性能を有する復号化装置を提供することもできる。本実施形態のデータ受信装置200によれば、データの通信や蓄積の際にデータを秘匿するための復号化方法、復号化装置、及び復号化プログラムに関し、特にFeistel構造を採用した復号化方法について、nラウンド消去攻撃に対する耐性を向上させた復号化方法、復号化装置及び復号化プログラムを提供することができる。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
本実施の形態ではデータ送信装置及びデータ受信装置の各部がコンピュータプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、ソフトウェアとハードウェアとの組み合わせとして実現することもできる。
また、上記形態ではデータネットワークとして現状のインターネットINを例示したが、これが次世代のインターネットであるNGN(Next Generation Network)でもよい。
なお、当然ながら、上述した実施の形態及び複数の変形例は、その内容が相反しない範囲で組み合わせることができる。また、上述した実施の形態及び変形例では、各部の構造などを具体的に説明したが、その構造などは本願発明を満足する範囲で各種に変更することができる。
たとえば、本実施形態で示した暗号化装置1は、暗号処理を実行する暗号処理装置としてのICモジュールとすることができる。暗号化装置1の暗号化処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、ICモジュールは、これら様々な機器に構成することが可能である。
図示しないが、上述のICモジュールは、CPU(Central processing Unit)、メモリ、プログラム、RAM(Random Access Memory)等からなる。「CPU」は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。「メモリ」は、CPUが実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read−Only−Memory)である。また、「メモリ」は、暗号処理に必要な拡大鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。「プログラム」は、CPUの処理において実行されるプログラムである。「RAM」は、プログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。
暗号化IC暗号処理部は、上述した暗号化装置1の暗号処理、復号処理等を実行する。なお、暗号化IC暗号処理部は、暗号化処理を個別モジュールとしてもよいし、独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPUがROM格納プログラムを読み出して実行するように構成してもよい。
上述のICモジュールは、暗号化処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する乱数発生器を備えている。
また、上述のICモジュールは、外部とのデータ通信を実行するデータ通信処理部を備える。データ通信処理部は、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magnet Optical)ディスク、DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
たとえば、本発明は、以下の構成を採用することもできる。
(1)データと鍵データを入力としてデータを暗号化、及び復号化する装置であって、
該暗号化装置は、第1の一般化Feistel型データ変換手段と、Feistel型データ変換手段と、第2の一般化Feistel型データ変換手段とかなら成り、
該一般化Feistel型データ変換手段は、入力されたデータを3つ以上に分割する手段と、前記分割データの1つ以上と拡大鍵データとを論理演算する手段と、
論理演算されたデータと、他の分割データとを排他的論理和する手段と、分割データを結合する手段と、を有し、
該Feistel型データ変換手段は、入力されたデータを2つに分割する手段と、
前記分割データの1つに拡大鍵データを作用させた後に非線形演算する手段と、
非線形演算されたデータと、他の分割データとを排他的論理和する手段と、分割データを結合する手段と、を有し、
かつ第1と第2の一般化Feistel型データ変換手段はお互いに逆関数の関係にあることを特徴とする暗号化装置。
(2)Feistel処理におけるラウンド関数が、鍵挿入手段と非線形変換手段とMDS変形手段を持ち、
該鍵挿入手段は、入力と鍵とを線形演算を用いて攪拌し、
該非線形変換手段は、鍵挿入手段の出力を非線形演算で攪拌し、
該MDS変換手段は、非線形変換手段の出力をMDS変換することを特徴とする(1)に記載の暗号化装置。
(3)データの暗号化に使用する鍵データを生成する鍵スケジュール装置が中間鍵生成手段と拡大鍵生成手段とから成り、
該中間鍵生成手段は、秘密鍵の全ビットが中間鍵の各ビットに影響する全単射な処理であって、
該拡大鍵生成手段は、秘密鍵と中間鍵と定数、もしくは、中間鍵と定数を排他的論理和して拡大鍵を生成する処理であって、
拡大鍵には、中間鍵全ビットと定数を排他的論理和したものを必ず含むことを特徴とする(1)、(2)記載の暗号化装置。
さらに、本発明は、以下の構成を採用することもできる。
(4)ネットワーク送信のための送信データと拡大鍵データとを受け付ける送信データ受付手段と、
前記送信データに第一の演算処理を施して、第一変換データを取得する第一変換手段と、
前記第一変換データにFeistel型暗号処理を施して、第二変換データを取得する第二変換手段と、
前記第二変換データに、前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、暗号化データを取得する第三変換手段と、
前記暗号化データを送信する送信手段と、
を備え、
前記第一変換手段は、
前記送信データを3以上に分割して分割送信データを取得する送信データ分割手段と、
一の前記分割送信データと、前記拡大鍵データとを論理演算することにより、前記分割送信データを処理する第一処理手段と、
一の前記分割送信データと、前記第一処理手段によって処理された前記分割送信データとを排他的論理和することにより、前記分割送信データを処理する第二処理手段と、
処理された前記分割送信データを一体化する送信データ結合手段と、
を有することにより前記第一の演算処理を実行することを特徴とするデータ送信装置。
(5)前記第一処理手段は、前記第二処理手段によって処理された前記分割送信データと、前記拡大鍵データとを論理演算することを特徴とする(4)に記載のデータ送信装置。
(6)前記第二処理手段は、排他的論理和された前記分割送信データと、前記第一処理手段によって処理された前記分割送信データとをさらに排他的論理和することを特徴とする(4)または(5)に記載のデータ送信装置。
(7)前記論理演算は、論理和または論理積であることを特徴とする(4)乃至(6)いずれかに記載のデータ送信装置。
(8)秘密鍵データから中間鍵データを経由して前記拡大鍵データを作成する鍵データ作成手段をさらに備え、
前記鍵データ作成手段は、
前記秘密鍵データをN個に分割してN分割鍵データを取得する鍵分割手段と、
前記N分割鍵データごとにF関数処理する第一関数処理手段と、
F関数処理された前記N分割鍵データを分割し、一の前記N分割鍵データの一部と、他の前記N分割鍵データの一部とをそれぞれ結合することにより、前記N分割鍵データを転置してN個の転置データを出力する転置手段と、
出力された前記転置データごとにF関数処理する第二関数処理手段と、
F関数処理された前記転置データを一体化して前記中間鍵データを作成する鍵結合手段と、を有し、
前記中間鍵データと、所定数とを排他的論理和し、または、前記秘密鍵データと、前記中間鍵データと、前記所定数とを排他的論理和することにより前記拡大鍵データを作成することを特徴とする(4)乃至(7)いずれかに記載のデータ送信装置。
(9)ネットワークを介して受信された受信データと拡大鍵データとを受け付ける受信データ受付手段と、
前記受信データに第一の演算処理を施して、第一変換データを取得する第一変換手段と、
前記第一変換データにFeistel型復号処理を施して、第二変換データを取得する第二変換手段と、
前記第二変換データに前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、復号化データを取得する第三変換手段と、
を備え、
前記第一変換手段は、
受け付けた前記受信データを3以上に分割して分割受信データを取得する受信データ分割手段と、
一の前記分割受信データと、前記拡大鍵データとを論理演算することにより、前記分割受信データを処理する第一処理手段と、
一の前記分割受信データと、前記第一処理手段によって処理された前記分割受信データとを排他的論理和することにより、前記分割受信データを処理する第二処理手段と、
処理された前記分割受信データを一体化する受信データ結合手段と、
を有することにより、前記第一の演算処理を実行することを特徴とするデータ受信装置。
(10)ネットワーク送信のための送信データと拡大鍵データとを受け付けるステップと、
前記送信データに第一の演算処理を施して、第一変換データを取得するステップと、
前記第一変換データにFeistel型暗号処理を施して、第二変換データを取得するステップと、
前記第二変換データに前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、暗号化データを取得するステップと、
前記暗号化データを送信するステップと、
を含み、
前記第一の演算処理は、
前記送信データを3以上に分割して分割送信データを取得するステップと、
一の前記分割送信データと、前記拡大鍵データとを論理演算することにより、前記分割送信データを処理するステップと、
一の前記分割送信データと、前記論理演算により処理された前記分割送信データとを排他的論理和することにより、前記分割送信データを処理するステップと、
処理された前記分割送信データを一体化するステップと、
を含むことを特徴とするデータ送信方法。
(11)ネットワーク送信のための送信データと拡大鍵データとを受け付ける送信データ受付処理と、
前記送信データに第一の演算処理を施して、第一変換データを取得する第一変換処理と、
前記第一変換データにFeistel型暗号処理を施して、第二変換データを取得する第二変換処理と、
前記第二変換データを前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、暗号化データを取得する第三変換処理と、
前記暗号化データを送信する送信処理と、
をデータ送信装置に実行させるコンピュータプログラムであって、
前記第一の演算処理は、
前記送信データを3以上に分割して分割送信データを取得する送信データ分割処理と、
一の前記分割送信データと、前記拡大鍵データとを論理演算することにより、前記分割送信データを処理する第一処理と、
一の前記分割送信データと、前記第一処理によって処理された前記分割送信データとを排他的論理和することにより、前記分割送信データを処理する第二処理と、
処理された前記分割送信データを一体化する送信データ結合処理と、
を含むコンピュータプログラム。
(12)ネットワークを介して受信された受信データと拡大鍵データとを受け付けるステップと、
前記受信データに第一の演算処理を施して、第一変換データを取得するステップと、
前記第一変換データにFeistel型復号処理を施して、第二変換データを取得するステップと、
前記第二変換データを前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、復号化データを取得するステップと、
を含み、
前記第一の演算処理は、
受け付けた前記受信データを3以上に分割して分割受信データを取得するステップと、
一の前記分割受信データと、前記拡大鍵データとを論理演算することにより、前記分割受信データを処理するステップと、
一の前記分割受信データと、前記論理演算により処理された前記分割受信データとを排他的論理和することにより、前記分割受信データを処理するステップと、
処理された前記分割受信データを一体化するステップと、
を含むことを特徴とするデータ受信方法。
(13)ネットワークを介して受信された受信データと拡大鍵データとを受け付ける受信データ受付処理と、
前記受信データに第一の演算処理を施して、第一変換データを取得する第一変換処理と、
前記第一変換データにFeistel型復号処理を施して、第二の変換データを取得する第二変換処理と、
前記第二変換データに前記第一の演算処理とは逆関数の関係にある第二の演算処理を施して、復号化データを取得する第三変換処理と、
をデータ受信装置に実行させるコンピュータプログラムであって、
前記第一の演算処理は、
受け付けた前記受信データを3以上に分割して分割受信データを取得する受信データ分割処理と、
一の前記分割受信データと、前記拡大鍵データとを論理演算することにより、前記分割データを処理する第一処理と、
一の前記分割受信データと、前記第一処理によって処理された前記分割受信データとを排他的論理和することにより、前記分割受信データを処理する第二処理と、
処理された前記分割受信データを一体化する受信データ結合処理と、
を含むことを特徴とするコンピュータプログラム。
(14)(4)に記載のデータ送信装置と、(9)に記載のデータ受信装置とをネットワークを介して接続しているデータ通信システム。
この出願は、2008年1月9日に出願された日本出願特願2008−001844を基礎とする優先権を主張し、その開示の全てをここに取り込む。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
また、本発明によれば、
送信データを受け付ける送信データ受付処理と、
前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
前記暗号化データを送信する送信処理と、
をコンピュータに実行させるためのコンピュータプログラムであって
前記第一変換処理は、
前記送信データをN個(Nは3以上の数)の分割送信データに分割する送信データ分割処理と、
前記分割送信データから少なくともN個の演算処理データを生成する演算処理と、
前記演算処理により生成された前記N個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
を含み、
前記演算処理は、
前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
を含むコンピュータプログラム
が提供される。

Claims (20)

  1. 送信データを受け付ける送信データ受付手段と、
    前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
    前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
    前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
    前記暗号化データを送信する送信手段と、
    を備え、
    前記第一変換手段は、
    前記送信データをN個(Nは3以上の数)の分割送信データに分割する送信データ分割手段と、
    前記分割送信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
    前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する送信データ結合手段と、
    を有し、
    前記演算手段は、
    前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
    前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
    を含むデータ送信装置。
  2. 前記演算手段は、前記N個の分割送信データの中から一対をなす前記第三の分割送信データと第四の分割送信データとを選択し、前記第三の分割送信データと拡大鍵データとに論理演算を施して第三の演算結果を生成するとともに、前記第四の分割送信データと前記第三の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第三の処理手段を更に含む、請求項1に記載のデータ送信装置。
  3. 前記演算手段は、前記第二の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第三の演算結果を生成するとともに、前記複数の分割送信データの中から選択された第三の分割送信データと前記第三の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第三の処理手段を更に含む、請求項1に記載のデータ送信装置。
  4. 前記演算手段は、生成した前記演算処理データを入力データとし、前記N個の入力データに第二の演算処理を施してN個の第二の演算処理データを生成し、
    前記送信データ結合手段は、前記演算手段により生成された前記N個の第二の演算処理データを結合し、
    前記演算手段は、
    前記N個の入力データの中から一対をなす第一および第二の入力データを選択し、前記第一の入力データと拡大鍵データとに論理演算を施して第四の演算結果を生成するとともに、前記第二の入力データと前記第四の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第四の処理手段と、
    前記第四の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第五の演算結果を生成するとともに、前記N個の入力データの中から選択された第三の入力データと前記第五の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第五の処理手段と、
    を含む請求項1乃至3いずれかに記載のデータ送信装置。
  5. 前記演算手段は、前記第二の演算処理により生成した前記N個の第二の演算処理データを入力データとし、前記N個の入力データについて前記第二の演算処理を反復的に実行する請求項4に記載のデータ送信装置。
  6. 拡大鍵データを用いた前記論理演算は、論理和演算または論理積演算である請求項1乃至5いずれかに記載のデータ送信装置。
  7. 秘密鍵データから中間鍵データを経由して拡大鍵データを生成する鍵データ生成手段をさらに備え、
    前記鍵データ生成手段は、
    前記秘密鍵データをM個(Mは2以上の数)に分割してM分割鍵データを生成する鍵分割手段と、
    前記M分割鍵データごとにラウンド関数処理を施す第一関数処理手段と、
    ラウンド関数処理された前記M分割鍵データを分割し、一の前記M分割鍵データの一部と他の前記M分割鍵データの一部とをそれぞれ結合することにより、前記M分割鍵データを転置してM個の転置データを出力する転置手段と、
    出力された前記転置データごとにラウンド関数処理を施す第二関数処理手段と、
    ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成する鍵結合手段と、
    を有し、
    前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成する請求項1乃至6いずれかに記載のデータ送信装置。
  8. 受信データを受け付ける受信データ受付手段と、
    前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
    前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
    前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換手段と、
    を備え、
    前記第一変換手段は、
    前記受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割手段と、
    前記分割受信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
    前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
    を有し、
    前記演算手段は、
    前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
    前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
    を含むデータ受信装置。
  9. 前記演算手段は、生成したN個の前記演算処理データを入力データとし、前記N個の入力データに第二の演算処理を施してN個の演算処理データを生成し、
    前記受信データ結合手段は、前記演算手段により生成された前記N個の第二の演算処理データを結合し、
    前記演算手段は、
    前記N個の入力データの中から一対をなす第一および第二の入力データを選択し、前記第一の入力データと拡大鍵データとに論理演算を施して第四の演算結果を生成するとともに、前記第二の入力データと前記第四の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第四の処理手段と、
    前記第四の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第五の演算結果を生成するとともに、前記N個の入力データの中から選択された第三の入力データと前記第五の演算結果とに排他的論理和演算を施して前記第二の演算処理データの一つを生成する第五の処理手段と、
    を含む請求項8に記載のデータ受信装置。
  10. 前記演算手段は、前記第二の演算処理により生成した前記N個の第二の演算処理データを入力データとし、前記N個の入力データについて前記演算処理を反復的に実行する請求項9に記載のデータ受信装置。
  11. 拡大鍵データを用いた前記論理演算は、論理和演算または論理積演算である請求項8乃至10いずれかに記載のデータ受信装置。
  12. 送信データを取得するステップと、
    前記送信データに第一の暗号化処理を施して第一変換データを生成するステップと、
    前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成するステップと、
    前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成するステップと、
    前記暗号化データを送信するステップと、
    を含み、
    前記第一変換データを生成する前記ステップは、
    前記送信データをN個(Nは3以上の数)の分割送信データに分割するステップと、
    前記分割送信データに演算処理を施して少なくともN個の演算処理データを生成するステップと、
    前記N個の演算処理データを生成する前記ステップにおいて生成された前記N個の演算処理データを結合して前記第一変換データを生成するステップと、
    を含み、
    前記N個の演算処理データを生成する前記ステップは、
    前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
    前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
    を含むデータ送信方法。
  13. 秘密鍵データから中間鍵データを経由して前記拡大鍵データを生成するステップをさらに含み、
    前記拡大鍵データを生成する前記ステップは、
    前記秘密鍵データをM個(Mは2以上の数)に分割してM分割鍵データを生成するステップと、
    前記M分割鍵データごとにラウンド関数処理を施すステップと、
    ラウンド関数処理された前記M分割鍵データを分割し、一の前記M分割鍵データの一部と他の前記M分割鍵データの一部とをそれぞれ結合することにより、前記M分割鍵データを転置してM個の転置データを出力するステップと、
    出力された前記転置データごとにラウンド関数処理を施すステップと、
    ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成するステップと、
    を含み、
    前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成する請求項12に記載のデータ送信方法。
  14. 送信データを受け付ける送信データ受付処理と、
    前記送信データに第一の暗号化処理を施して第一変換データを生成する第一変換処理と、
    前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換処理と、
    前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換処理と、
    前記暗号化データを送信する送信処理と、
    をコンピュータに実行させるためのプログラムを記録し、
    前記第一変換処理は、
    前記送信データをN個(Nは3以上の数)の分割送信データに分割する送信データ分割処理と、
    前記分割送信データから少なくともN個の演算処理データを生成する演算処理と、
    前記演算処理により生成された前記N個の演算処理データを結合して前記第一変換データを生成する送信データ結合処理と、
    を含み、
    前記演算処理は、
    前記N個の分割送信データの中から一対をなす第一および第二の分割送信データを選択し、前記第一の分割送信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割送信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
    前記第一の処理手段により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割送信データの中から選択された第三の分割送信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
    を含むコンピュータ読み取り可能な記録媒体。
  15. 秘密鍵データから中間鍵データを経由して前記拡大鍵データを生成する鍵データ生成処理をさらに含み、
    前記鍵データ生成処理は、
    前記秘密鍵データをM個(Mは2以上の数)に分割してM分割鍵データを生成する鍵分割処理と、
    前記M分割鍵データごとにラウンド関数処理を施す第一関数処理と、
    ラウンド関数処理された前記M分割鍵データを分割し、一の前記M分割鍵データの一部と他の前記M分割鍵データの一部とをそれぞれ結合することにより、前記M分割鍵データを転置してM個の転置データを出力する転置処理と、
    出力された前記転置データごとにラウンド関数処理を施す第二関数処理と、
    ラウンド関数処理を施した前記転置データを結合して前記中間鍵データを生成する鍵結合処理と、
    を含み、
    前記中間鍵データと所定数とに排他的論理和演算を施し、または、前記秘密鍵データと前記中間鍵データと前記所定数とに排他的論理和演算を施すことにより前記拡大鍵データを生成させる請求項14に記載の記録媒体。
  16. 受信データを取得するステップと、
    前記受信データに第一の復号化処理を施して第一変換データを生成するステップと、
    前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成するステップと、
    前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成するステップと、
    を含み、
    前記第一変換データを生成する前記ステップは、
    前記受信データをN個(Nは3以上の数)の分割受信データに分割するステップと、
    前記分割受信データに演算処理を施して少なくともN個の演算処理データを生成するステップと、
    前記演算処理データにより生成された前記N個の演算処理データを結合して前記第一変換データを生成するステップと、
    を含み、
    前記N個の演算処理データを生成する前記ステップは、
    前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理を施すステップと、
    前記第一の処理を施す前記ステップにおいて生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理を施すステップと、
    を含むデータ受信方法。
  17. 受信データを受け付ける受信データ受付処理と、
    前記受信データに第一の復号化処理を施して第一変換データを生成する第一変換処理と、
    前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換処理と、
    前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して復号化データを生成する第三変換処理と、
    をコンピュータに実行させるためのプログラムを記録し、
    前記第一変換処理は、
    前記受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割処理と、
    前記分割受信データから少なくともN個の演算処理データを生成する演算処理と、
    前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合処理と、
    を含み、
    前記演算処理は、
    前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理と、
    前記第一の処理により生成された前記演算処理データと拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理と、
    を含む、コンピュータ読み取り可能な記録媒体。
  18. 請求項1に記載のデータ送信装置と請求項8に記載のデータ受信装置とをネットワークを介して接続しているデータ通信システム。
  19. 平文を受け付けるデータ受付手段と、
    拡大鍵データを記憶するメモリと、
    前記平文に第一の暗号化処理を施して第一変換データを生成する第一変換手段と、
    前記第一変換データにフェイステル構造の暗号化処理を施して第二変換データを生成する第二変換手段と、
    前記第二変換データに、前記第一の暗号化処理とは逆関数の関係にある第二の暗号化処理を施して暗号化データを生成する第三変換手段と、
    を備え、
    前記第一変換手段は、
    前記平文をN個(Nは3以上の数)の分割データに分割するデータ分割手段と、
    前記分割データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
    前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成するデータ結合手段と、
    を有し、
    前記演算手段は、
    前記N個の分割データの中から一対をなす第一および第二の分割データを選択し、前記第一の分割データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、前記第二の分割データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
    前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割データの中から選択された第三の分割データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
    を含む暗号化装置。
  20. 暗号化データを受け付けるデータ受付手段と、
    拡大鍵データを記憶するメモリと、
    前記暗号化データに第一の復号化処理を施して第一変換データを生成する第一変換手段と、
    前記第一変換データにフェイステル構造の復号化処理を施して第二変換データを生成する第二変換手段と、
    前記第二変換データに、前記第一の復号化処理とは逆関数の関係にある第二の復号化処理を施して平文を生成する第三変換手段と、
    を備え、
    前記第一変換手段は、
    前記受信データをN個(Nは3以上の数)の分割受信データに分割する受信データ分割手段と、
    前記分割受信データに演算処理を施して少なくともN個の演算処理データを生成する演算手段と、
    前記演算手段により生成された前記N個の演算処理データを結合して前記第一変換データを生成する受信データ結合手段と、
    を有し、
    前記演算手段は、
    前記N個の分割受信データの中から一対をなす第一および第二の分割受信データを選択し、前記第一の分割受信データと前記メモリから読み出される拡大鍵データとに論理演算を施して第一の演算結果を生成するとともに、当該一対をなす他方の分割受信データと前記第一の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第一の処理手段と、
    前記第一の処理手段により生成された前記演算処理データと前記メモリから読み出される拡大鍵データとに論理演算を施して第二の演算結果を生成するとともに、前記N個の分割受信データの中から選択された第三の分割受信データと前記第二の演算結果とに排他的論理和演算を施して前記演算処理データの一つを生成する第二の処理手段と、
    を含む復号化装置。
JP2009548904A 2008-01-09 2009-01-09 データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム Pending JPWO2009087972A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008001844 2008-01-09
JP2008001844 2008-01-09
PCT/JP2009/000065 WO2009087972A1 (ja) 2008-01-09 2009-01-09 データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム

Publications (1)

Publication Number Publication Date
JPWO2009087972A1 true JPWO2009087972A1 (ja) 2011-05-26

Family

ID=40853086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009548904A Pending JPWO2009087972A1 (ja) 2008-01-09 2009-01-09 データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム

Country Status (3)

Country Link
US (1) US20110110519A1 (ja)
JP (1) JPWO2009087972A1 (ja)
WO (1) WO2009087972A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
JP5488608B2 (ja) 2009-10-27 2014-05-14 日本電気株式会社 ブロック暗号装置、ブロック暗号化方法およびプログラム
US9584485B2 (en) 2011-12-28 2017-02-28 Superna Business Consulting, Inc. Key encryption system, method, and network devices
US10103876B2 (en) 2012-10-17 2018-10-16 Synopsys, Inc. System and method for multichannel cryptographic processing
US10148430B1 (en) 2013-04-17 2018-12-04 Amazon Technologies, Inc Revocable stream ciphers for upgrading encryption in a shared resource environment
JP2015130580A (ja) * 2014-01-07 2015-07-16 富士通株式会社 データスクランブル装置、セキュリティ装置、セキュリティシステム及びデータスクランブル方法
JP2015191107A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US9946662B2 (en) * 2014-08-29 2018-04-17 The Boeing Company Double-mix Feistel network for key generation or encryption
KR20160041147A (ko) * 2014-10-06 2016-04-18 삼성전자주식회사 제어 방법 및 그 방법을 처리하는 전자장치
US10185842B2 (en) 2015-03-18 2019-01-22 Intel Corporation Cache and data organization for memory protection
US9798900B2 (en) 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
US10528485B2 (en) 2016-09-30 2020-01-07 Intel Corporation Method and apparatus for sharing security metadata memory space
US10929572B2 (en) * 2017-04-10 2021-02-23 Nyquist Semiconductor Limited Secure data storage device with security function implemented in a data security bridge
CN112182512A (zh) * 2020-09-01 2021-01-05 北京幻想纵横网络技术有限公司 一种信息处理方法、装置及存储介质
US20230297693A1 (en) * 2020-09-02 2023-09-21 Nec Corporation Information processing apparatus, information processing method, and non-transitory computer readable medium storing program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003241656A (ja) * 2002-02-19 2003-08-29 Sony Corp 暗号化装置および暗号化方法
JP4515716B2 (ja) * 2002-04-03 2010-08-04 パナソニック株式会社 拡大鍵生成装置、暗号化装置および暗号化システム
DE102006011223A1 (de) * 2006-03-10 2007-09-13 Micronas Gmbh Datenverarbeitungsverfahren mit einem Verschlüsselungsalgorithmus

Also Published As

Publication number Publication date
WO2009087972A1 (ja) 2009-07-16
US20110110519A1 (en) 2011-05-12

Similar Documents

Publication Publication Date Title
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8577023B2 (en) Encryption processing method, apparatus, and computer program utilizing different types of S-boxes
US9189425B2 (en) Protecting look up tables by mixing code and operations
US8396210B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
KR20090094086A (ko) 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램
JP6135804B1 (ja) 情報処理装置、情報処理方法及びプログラム
JP2007192893A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2012215813A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
JP2014197913A (ja) 暗号化装置、暗号化方法及びプログラム
JP6167721B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
WO2012077419A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
Usman et al. A data specific comparative study for choosing best cryptographic technique
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
Teja et al. Electrical and Computer System Design
JP2001215874A (ja) 副鍵生成装置およびそのプログラム記録媒体