(57)【特許請求の範囲】
【請求項１】
レジスタを構成する複数のノードと、
該複数のノードのうち、任意の２つのノードからの出力を排他的論理和演算する第１のＸＯＲノードと、
該第１のＸＯＲノードの出力と乱数Ｒとの排他的論理和演算を行い、前記レジスタに出力する第１の信頼できるノードと、
前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する非線形フィルタノード群と、
該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第２の信頼できるノードと、
平文を入力し、乱数Ｒ´´´との排他的論理和を出力する第３の信頼できるノードと、
前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第２のＸＯＲノードと、
該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する第４の信頼できるノードと、
を備えたことを特徴とするストリーム暗号の秘匿計算暗号化装置。
【請求項２】
前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とする請求項１に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項３】
前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とする請求項１に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項４】
前記第１の信頼できるノードが前記出力と乱数Ｒ´との排他的論理和を演算する演算器をさらに備えたことを特徴とする請求項１に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項５】
前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とする請求項１に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項６】
レジスタを構成する複数のノードと、
該複数のノードのうち、任意の２つのノードからの出力を排他的論理和演算する第１のＸＯＲノードと、
該第１のＸＯＲノードの出力と乱数Ｒとの排他的論理和演算を行い、前記レジスタに出力する第１の信頼できるノードと、
前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する非線形フィルタノード群と、
該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第２の信頼できるノードと、
暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する第３の信頼できるノードと、
前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第２のＸＯＲノードと、
該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する第４の信頼できるノードと、
を備えたことを特徴とするストリーム暗号の秘匿計算復号化装置。
【請求項７】
前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とする請求項６に記載のストリーム暗号の秘匿計算復号化装置。
【請求項８】
前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とする請求項６に記載のストリーム暗号の秘匿計算復号化装置。
【請求項９】
前記第１の信頼できるノードが前記出力と乱数Ｒ´との排他的論理和を演算する演算器をさらに備えたことを特徴とする請求項６に記載のストリーム暗号の秘匿計算復号化装置。
【請求項１０】
前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とする請求項６に記載のストリーム暗号の秘匿計算復号化装置。
【請求項１１】
前記請求項１におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法であって、
前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップと、
前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップと、
前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップと、
初期化処理終了後に、前記第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップと、
前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップと、
前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する第８のステップと、
を備えたことを特徴とする暗号化方法。
【請求項１２】
前記請求項６におけるストリーム暗号の秘匿計算復号化装置における復号化方法であって、
前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップと、
前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップと、
前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップと、
初期化処理終了後に、前記第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップと、
前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップと、
前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する第８のステップと、
を備えたことを特徴とする復号化方法。
【請求項１３】
前記請求項１におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法をコンピュータに実行させるためのプログラムであって、
前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップと、
前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップと、
前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップと、
初期化処理終了後に、前記第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップと、
前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップと、
前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する第８のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１４】
前記請求項６におけるストリーム暗号の秘匿計算復号化装置における復号化方法をコンピュータに実行させるためのプログラムであって、
前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップと、
前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップと、
前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップと、
初期化処理終了後に、前記第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップと、
前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップと、
前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する第８のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現するストリーム暗号の秘匿計算暗号化装置、ストリーム暗号の秘匿計算復号化装置、暗号化方法、復号化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、１つの鍵で暗号化・復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の２つに分けられる。
【０００３】
前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。ここで、ストリーム暗号は、内部状態を更新しながら暗号化を行う、ステートフルな方式である。また、従来は、ステートレスなブロック暗号の秘匿方式は提案されていた（非特許文献１参照。）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｓｅｃｕｒｅ  Ｍｕｌｔｉｐａｒｔｙ  ＡＥＳ，ＩＡＣＲ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，Ｉｖａｎ  Ｄａｍｇａｒｄ  ａｎｄ  Ｍａｒｃｅｌ  Ｋｅｌｌｅｒ，２００９。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のように、従来は、ステートレスなブロック暗号の秘匿方式は提案されていただけで、ストリーム暗号のようなステートフルな方式に対する秘匿計算手法は提案されていなかった。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現するストリーム暗号の秘匿計算暗号化装置、ストリーム暗号の秘匿計算復号化装置、暗号化方法、復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）本発明は、レジスタを構成する複数のノード（例えば、図２のノード１１〜１７に相当）と、該複数のノードのうち、任意の２つのノードからの出力を排他的論理和演算する第１のＸＯＲノード（例えば、図２のＸＯＲノード２０に相当）と、該第１のＸＯＲノードの出力と乱数Ｒとの排他的論理和演算を行い、前記レジスタに出力する第１の信頼できるノード（例えば、図２の第１のマスタノード５０に相当）と、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する非線形フィルタノード群（例えば、図２の非線形フィルタノード群３０に相当）と、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第２の信頼できるノード（例えば、図２の第２のマスタノード６０に相当）と、平文を入力し、乱数Ｒ´´´との排他的論理和を出力する第３の信頼できるノード（例えば、図２の第３のマスタノード７０に相当）と、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第２のＸＯＲノード（例えば、図２のＸＯＲノード４０に相当）と、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する第４の信頼できるノード（例えば、図２の第４のマスタノード８０に相当）と、を備えたことを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。  
【０００９】
この発明によれば、複数のノードは、レジスタを構成する。第１のＸＯＲノードは、複数のノードのうち、任意の２つのノードからの出力を排他的論理和演算する。第１の信頼できるノードは、第１のＸＯＲノードの出力と乱数Ｒとの排他的論理和演算を行い、レジスタに出力する。非線形フィルタノード群は、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する。第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する。第３の信頼できるノードは、平文を入力し、乱数Ｒ´´´との排他的論理和を出力する。第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行う。第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【００１０】
（２）本発明は、（１）のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【００１１】
この発明によれば、複数のノードが線形フィードバックシフトレジスタを構成する。したがって、簡易な構成でストリーム暗号の秘匿計算暗号化装置を実現できる。
【００１２】
（３）本発明は、（１）のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【００１３】
この発明によれば、複数のノードがレジスタのどの部分に該当するのかが秘匿されている。したがって、これにより、秘匿化が担保される。
【００１４】
（４）本発明は、（１）のストリーム暗号の秘匿計算暗号化装置について、前記第１の信頼できるノードが前記出力と乱数Ｒ´との排他的論理和を演算する演算器をさらに備えたことを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【００１５】
この発明によれば、第１の信頼できるノードが出力と乱数Ｒ´との排他的論理和を演算する演算器をさらに備える。したがって、乱数Ｒで排他的論理和演算を行うことによりデータをマスクすることが可能となるが、さらに、乱数Ｒ´との排他的論理和を行うことにより、データのリフレッシュが可能となり、万が一、乱数Ｒが欠落した場合でもデータを適切にマスクすることができる。
【００１６】
（５）本発明は、（１）のストリーム暗号の秘匿計算暗号化装置について、前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【００１７】
この発明によれば、非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行う。これにより、秘匿計算を簡単な演算で行うことができる。
【００１８】
（６）本発明は、レジスタを構成する複数のノード（例えば、図５のノード１１〜１７に相当）と、該複数のノードのうち、任意の２つのノードからの出力を排他的論理和演算する第１のＸＯＲノード（例えば、図５のＸＯＲノード２０に相当）と、該第１のＸＯＲノードの出力と乱数Ｒとの排他的論理和演算を行い、前記レジスタに出力する第１の信頼できるノード（例えば、図５の第１のマスタノード５０に相当）と、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する非線形フィルタノード群（例えば、図５の非線形フィルタノード群３０に相当）と、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第２の信頼できるノード（例えば、図５の第２のマスタノード６０に相当）と、暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する第３の信頼できるノード（例えば、図５の第３のマスタノード１００に相当）と、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第２のＸＯＲノード（例えば、図２のＸＯＲノード９０に相当）と、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する第４の信頼できるノード（例えば、図５の第４のマスタノード８０に相当）と、を備えたことを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【００１９】
この発明によれば、複数のノードは、レジスタを構成する。第１のＸＯＲノードは、複数のノードのうち、任意の２つのノードからの出力を排他的論理和演算する。第１の信頼できるノードは、第１のＸＯＲノードの出力と乱数Ｒとの排他的論理和演算を行い、レジスタに出力する。非線形フィルタノード群は、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する。第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する。第３の信頼できるノードは、暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する。第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行う。第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによって、復号の際にも、ストリーム暗号の秘匿計算を実現する。
【００２０】
（７）本発明は、（６）のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【００２１】
この発明によれば、複数のノードが線形フィードバックシフトレジスタを構成する。したがって、簡易な構成で復号の際にも、ストリーム暗号の秘匿計算暗号化装置を実現できる。
【００２２】
（８）本発明は、（６）のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【００２３】
この発明によれば、複数のノードがレジスタのどの部分に該当するのかが秘匿されている。したがって、これにより、復号の際にも、秘匿化が担保される。
【００２４】
（９）本発明は、（６）のストリーム暗号の秘匿計算暗号化装置について、前記第１の信頼できるノードが前記出力と乱数Ｒ´との排他的論理和を演算する演算器をさらに備えたことを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【００２５】
この発明によれば、第１の信頼できるノードが出力と乱数Ｒ´との排他的論理和を演算する演算器をさらに備える。乱数Ｒで排他的論理和演算を行うことによりデータをマスクすることが可能となるが、さらに、乱数Ｒ´との排他的論理和を行うことにより、データのリフレッシュが可能となり、万が一、乱数Ｒが欠落した場合でもデータを適切にマスクすることができる。
【００２６】
（１０）本発明は、（６）のストリーム暗号の秘匿計算暗号化装置について、前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【００２７】
この発明によれば、非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行う。これにより、復号の際にも、秘匿計算を簡単な演算で行うことができる。
【００２８】
（１１）本発明は、（１）におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法であって、前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップ（例えば、図３のステップＳ１０１に相当）と、前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップ（例えば、図３のステップＳ１０２に相当）と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップ（例えば、図３のステップＳ１０３に相当）と、前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップ（例えば、図３のステップＳ１０４に相当）と、前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップ（例えば、図３のステップＳ１０５に相当）と、初期化処理終了後に、前記第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップ（例えば、図３のステップＳ１０６に相当）と、前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップ（例えば、図３のステップＳ１０７に相当）と、前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する第８のステップ（例えば、図３のステップＳ１０８に相当）と、を備えたことを特徴とする暗号化方法を提案している。
【００２９】
この発明によれば、第１の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する。第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する。第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行う。第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【００３０】
（１２）本発明は、（６）におけるストリーム暗号の秘匿計算復号化装置における復号化方法であって、前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップ（例えば、図６のステップＳ２０１に相当）と、前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップ（例えば、図６のステップＳ２０２に相当）と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップ（例えば、図６のステップＳ２０３に相当）と、前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップ（例えば、図６のステップＳ２０４に相当）と、前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップ（例えば、図６のステップＳ２０５に相当）と、初期化処理終了後に、前記第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップ（例えば、図６のステップＳ２０６に相当）と、前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップ（例えば、図６のステップＳ２０７に相当）と、前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する第８のステップ（例えば、図６のステップＳ２０８に相当）と、を備えたことを特徴とする復号化方法を提案している。
【００３１】
この発明によれば、第１の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する。第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する。第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行う。第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【００３２】
（１３）本発明は、（１）におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法をコンピュータに実行させるためのプログラムであって、前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップ（例えば、図３のステップＳ１０１に相当）と、前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップ（例えば、図３のステップＳ１０２に相当）と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップ（例えば、図３のステップＳ１０３に相当）と、前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップ（例えば、図３のステップＳ１０４に相当）と、前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップ（例えば、図３のステップＳ１０５に相当）と、初期化処理終了後に、前記第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップ（例えば、図３のステップＳ１０６に相当）と、前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップ（例えば、図３のステップＳ１０７に相当）と、前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する第８のステップ（例えば、図３のステップＳ１０８に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３３】
この発明によれば、第１の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する。第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する。第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行う。第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【００３４】
（１４）本発明は、（６）におけるストリーム暗号の秘匿計算復号化装置における復号化方法をコンピュータに実行させるためのプログラムであって、前記第１の信頼できるノードに初期鍵および初期ベクトルを入力する第１のステップ（例えば、図５のステップＳ２０１に相当）と、前記第１の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第２のステップ（例えば、図６のステップＳ２０２に相当）と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第３のステップ（例えば、図６のステップＳ２０３に相当）と、前記非線形フィルタノード群が、前記複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する第４のステップ（例えば、図６のステップＳ２０４に相当）と、前記第２の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と前記鍵系列との排他的論理和を出力する第５のステップ（例えば、図６のステップＳ２０５に相当）と、初期化処理終了後に、前記第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する第６のステップ（例えば、図６のステップＳ２０６に相当）と、前記第２のＸＯＲノードが、前記第２の信頼できるノードの出力と前記第３の信頼できるノードの出力との排他的論理和演算を行う第７のステップ（例えば、図６のステップＳ２０７に相当）と、前記第４の信頼できるノードが、該第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する第８のステップ（例えば、図６のステップＳ２０８に相当）と、をコンピュータに実行させるためのプログラムを提案している。
【００３５】
この発明によれば、第１の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する。第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する。第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行う。第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【発明の効果】
【００３６】
本発明によれば、ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現できるという効果がある。
【図面の簡単な説明】
【００３７】
【図１】本発明の第１の実施形態に係るストリーム暗号の秘匿計算暗号化装置について、そのベースとなるストリーム暗号の暗号化装置の構成を示す図である。
【図２】本発明の第１の実施形態に係るストリーム暗号の秘匿計算暗号化装置の構成を示す図である。
【図３】本発明の第１の実施形態に係るストリーム暗号の秘匿計算暗号化装置の処理を示す図である。
【図４】本発明の第１の実施形態に係るストリーム暗号の秘匿計算復号化装置について、そのベースとなるストリーム暗号の復号化装置の構成を示す図である。
【図５】本発明の第２の実施形態に係るストリーム暗号の秘匿計算復号化装置の構成を示す図である。
【図６】本発明の第２の実施形態に係るストリーム暗号の秘匿計算復号化装置の処理を示す図である。
【発明を実施するための形態】
【００３８】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３９】
＜第１の実施形態＞
図１から図３を用いて、本発明の第１の実施形態について説明する。
【００４０】
＜モデルとなるストリーム暗号化装置の構成＞
図１を用いて、本発明のモデルとなるストリーム暗号化装置の構成について説明する。
図１に示すように、本発明のモデルとなるストリーム暗号化装置は、線形フィードバックシフトレジスタ１と、ＸＯＲ演算器２と、非線形フィルタ３と、ＸＯＲ演算器４とから構成されている。
【００４１】
ここで、線形フィードバックシフトレジスタ１は、フィードバック関数を使用するものであり、非線形フィルタに必要なビットを出力する。その後、フィードバック関数により各レジスタをアップデートし、再びビットを出力するという処理を繰り返す。
【００４２】
ＸＯＲ演算器２は、線形フィードバックシフトレジスタ１の所定の２つのレジスタの排他的論理和演算を行って、その出力を線形フィードバックシフトレジスタ１の所定のレジスタにフィードバックする。
【００４３】
非線形フィルタ３は、線形フィードバックシフトレジスタ１から入力されるビットから非線形関数により鍵系列を計算して出力する。ＸＯＲ演算器４は、平文と非線形フィルタ３が出力する鍵系列との排他的論理和演算を行って暗号文を出力する。
【００４４】
＜ストリーム暗号の秘匿計算暗号化装置の構成＞
本実施形態に係るストリーム暗号の秘匿計算暗号化装置は、図２に示すように、線形フィードバックシフトレジスタ１を構成するノード１１〜１７と、ＸＯＲノード２０と、非線形フィルタノード群３０と、ＸＯＲノード４０と、第１のマスタノード５０と、第２のマスタノード６０と、第３のマスタノード７０と、第４のマスタノード８０とから構成されている。
【００４５】
このように、図１で示したモデルを複数のノードで構成し、この複数のノードで分けて計算を行うことで秘匿計算を実現している。
【００４６】
線形フィードバックシフトレジスタ１を構成するノード１１〜１７は、図２に示す矢印の方向に通信によってデータを流している。これらのノードは、レジスタ値を保持するノードであり、新たなレジスタ値が入力されたときに、現在のレジスタ値を出力先に指定されたノードに出力する。なお、それぞれのノードは、自分がどのレジスタを担当しているのか、解らないものとする。
【００４７】
ＸＯＲノード２０は、線形フィードバックシフトレジスタ１を構成するノード１１〜１７のうち、２つのノード（図２では、ノードＡおよびノードＢ）からのデータに対して、排他的論理和演算を行って、その結果を第１のマスタノード５０に出力する。
【００４８】
非線形フィルタノード群３０は、複数のノードから構成される秘匿計算回路であり、入力には既に第１のマスタノード５０が排他的論理和した乱数が含まれている。非線形フィルタノード群３０は、有限体上の逆元計算を使用することで、秘匿計算を行う。これにより、演算を簡素化することができる。
【００４９】
ここで、有限体上の逆元計算は、複数の乗算および２乗算から構成できることが知られている。例えば、ＧＦ(２８)上の逆元計算は、ｘ−１＝ｘ２５４を計算することであるが、これは、ｘ２５４＝（（ｘ（（ｘ＾２）＾２）＾２）＾２)＊ （（ｘ（（ｘ＾２）＾２）＾２）＾２））＊ （（Ｘ（（Ｘ＾２）＾２）＾２）＾２））＾２）＾２のように計算できる。これを用いて、乱数をＲとしたとき、（Ｘ＋Ｒ）＾（２＾ｉ）＝ｘ＾（２＾ｉ）＋Ｒ＾（２＾ｉ）となることから、計算後にＲ＾（２＾ｉ）を引くことで乱数Ｒを除去することができる。
【００５０】
ＸＯＲノード４０は、第２のマスタノード６０からの出力（鍵系列＋乱数Ｒ´´）と第３のマスタノード７０からの出力（平文＋乱数Ｒ´´´）との排他的論理和演算を行って、暗号文＋乱数Ｒ´´＋乱数Ｒ´´´を出力する。
【００５１】
第１のマスタノード５０は、２つのＸＯＲ演算器を備え、ＸＯＲノード２０からのデータと乱数Ｒとの排他的論理和演算を行い、さらに、その出力と乱数Ｒ´との排他的論理和演算を行って、線形フィードバックシフトレジスタ１を構成するノード１１〜１７の１つに出力する（図２では、ノードＧ）。これにより、乱数Ｒで排他的論理和演算を行うことによりデータをマスクすることが可能となるが、さらに、乱数Ｒ´との排他的論理和を行うことにより、データのリフレッシュが可能となり、万が一、乱数Ｒが欠落した場合でもデータを適切にマスクすることができる。
【００５２】
第２のマスタノード６０は、非線形フィルタノード群３０から入力したデータ（鍵系列＋乱数Ｒ）から乱数Ｒを除去し、新たな乱数Ｒ´を用いて、排他的論理和演算を行い、鍵系列＋乱数Ｒ´からなるデータをＸＯＲノード４０に出力する。
【００５３】
第３のマスタノード７０は、平文を入力し、この平文と新たな乱数Ｒ´´´との排他的論理和演算を行って、平文＋乱数Ｒ´´´のデータをＸＯＲノード４０に出力する。
【００５４】
第４のマスタノード８０は、ＸＯＲノード４０から入力したデータ暗号文＋乱数Ｒ´´＋乱数Ｒ´´´と乱数Ｒ´´、乱数Ｒ´´´との排他的論理和演算を行って、乱数Ｒ´´、乱数Ｒ´´´を除去して暗号文を出力する。
【００５５】
なお、マスタノードは信頼できるノードであり、図２では、４つのマスタノードを示したが、同一のノードであっても良いし、異なっていても良い。但し、異なっている場合は、生成した乱数情報を互いに送りあうことで共有する必要がある。
【００５６】
＜ストリーム暗号の秘匿計算暗号化装置の処理＞
図３を用いて、本実施形態に係るストリーム暗号の秘匿計算暗号化装置の処理について説明する。
【００５７】
まず、第１の信頼できるノードに初期鍵および初期ベクトルを入力し（ステップＳ１０１）、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する（ステップＳ１０２）。
【００５８】
次に、データの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信する（ステップＳ１０３）。非線形フィルタノード群は、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する（ステップＳ１０４）。
【００５９】
第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する（ステップＳ１０５）。初期化処理終了後に、第３の信頼できるノードに平文を入力し、乱数Ｒ´´´との排他的論理和を出力する（ステップＳ１０６）。
【００６０】
第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行い（ステップＳ１０７）、第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して暗号文を出力する（ステップＳ１０８）。
【００６１】
したがって、本実施形態によれば、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【００６２】
＜第２の実施形態＞
図４から図６を用いて、本発明の第１の実施形態について説明する。
【００６３】
＜モデルとなるストリーム復号化装置の構成＞
本発明のモデルとなるストリーム復号化装置は、図４に示す構成となっており、第１の実施形態とは、暗号文を入力して平文を出力するＸＯＲ演算器９の機能が異なる点でのみ相違している。
【００６４】
＜ストリーム暗号の秘匿計算復号化装置の構成＞
本実施形態に係るストリーム暗号の秘匿計算復号化装置は、図５に示すように、線形フィードバックシフトレジスタ１を構成するノード１１〜１７と、ＸＯＲノード２０と、非線形フィルタノード群３０と、第１のマスタノード５０と、第２のマスタノード６０と、第４のマスタノード８０、ＸＯＲノード９０と、第３のマスタノード１００とから構成されている。なお、第１の実施形態と同一の符号を付す構成要素については、同一の機能を有することから、その詳細な説明は省略する。
【００６５】
ＸＯＲノード９０は、第２のマスタノード６０からの出力（鍵系列＋乱数Ｒ´´）と第３のマスタノード１００からの出力（暗号文＋乱数Ｒ´´´）との排他的論理和演算を行って、平文＋乱数Ｒ´´＋乱数Ｒ´´´を出力する。
【００６６】
第３のマスタノード７０は、暗号文を入力し、この暗号文と新たな乱数Ｒ´´´との排他的論理和演算を行って、暗号文＋乱数Ｒ´´´のデータをＸＯＲノード４０に出力する。
【００６７】
＜ストリーム暗号の秘匿計算復号化装置の処理＞
図３を用いて、本実施形態に係るストリーム暗号の秘匿計算復号化装置の処理について説明する。
【００６８】
まず、第１の信頼できるノードに初期鍵および初期ベクトルを入力し（ステップＳ２０１）、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する（ステップＳ２０２）。
【００６９】
次に、データの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信する（ステップＳ２０３）。非線形フィルタノード群は、複数のノードのうち、２つのノードからのデータを入力して、鍵系列と乱数Ｒとの排他的論理和を出力する（ステップＳ２０４）。
【００７０】
第２の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Ｒとの排他的論理和から乱数Ｒを除去し、新たな乱数Ｒ´´と鍵系列との排他的論理和を出力する（ステップＳ２０５）。初期化処理終了後に、第３の信頼できるノードに暗号文を入力し、乱数Ｒ´´´との排他的論理和を出力する（ステップＳ２０６）。
【００７１】
第２のＸＯＲノードは、第２の信頼できるノードの出力と第３の信頼できるノードの出力との排他的論理和演算を行い（ステップＳ２０７）、第４の信頼できるノードは、第２のＸＯＲノードからのデータを入力し、乱数Ｒ´´および乱数Ｒ´´´を除去して平文を出力する（ステップＳ２０８）。
【００７２】
したがって、本実施形態によれば、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【００７３】
なお、ストリーム暗号の秘匿計算暗号化装置およびストリーム暗号の秘匿計算復号化装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の秘匿計算暗号化装置およびストリーム暗号の秘匿計算復号化装置に読み込ませ、実行することによって本発明のストリーム暗号の秘匿計算暗号化装置およびストリーム暗号の秘匿計算復号化装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００７４】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００７５】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７６】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７７】
１；線形フィードバックシフトレジスタ
２；ＸＯＲ演算器
３；非線形フィルタ
４；ＸＯＲ演算器
９；ＸＯＲ演算器
１１；ノードＡ
１２；ノードＢ
１３；ノードＣ
１４；ノードＤ
１５；ノードＥ
１６；ノードＦ
１７；ノードＧ
２０；ＸＯＲノード
３０；非線形フィルタノード群
４０；ＸＯＲノード
５０；第１のマスタノード
６０；第２のマスタノード
７０；第３のマスタノード
８０；第４のマスタノード
９０；ＸＯＲノード
１００；第３のマスタノード
【図１】
0005495825.tif 000002
【図２】
0005495825.tif 000003
【図３】
0005495825.tif 000004
【図４】
0005495825.tif 000005
【図５】
0005495825.tif 000006
【図６】
0005495825.tif 000007