説明

ストリーム暗号の秘匿計算暗号化装置、ストリーム暗号の秘匿計算復号化装置、暗号化方法、復号化方法およびプログラム

【課題】ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現する。
【解決手段】第1のXORノードは、レジスタを構成する複数のノードのうち、任意の2つのノードからの出力をXOR演算し、第1の信頼できるノードは、第1のXORノードの出力と乱数RとのXOR演算を行い、レジスタに出力する。非線形フィルタノード群は、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数RとのXORを出力し、第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数RとのXORから乱数Rを除去し、新たな乱数R´´と鍵系列とのXORを出力する。第3の信頼できるノードは、平文を入力し、乱数R´´´とのXORを出力し、第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力とのXOR演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現するストリーム暗号の秘匿計算暗号化装置、ストリーム暗号の秘匿計算復号化装置、暗号化方法、復号化方法およびプログラムに関する。
【背景技術】
【0002】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、1つの鍵で暗号化・復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の2つに分けられる。
【0003】
前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。ここで、ストリーム暗号は、内部状態を更新しながら暗号化を行う、ステートフルな方式である。また、従来は、ステートレスなブロック暗号の秘匿方式は提案されていた(非特許文献1参照。)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Secure Multiparty AES,IACR ePrint Archive,Ivan Damgard and Marcel Keller,2009。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記のように、従来は、ステートレスなブロック暗号の秘匿方式は提案されていただけで、ストリーム暗号のようなステートフルな方式に対する秘匿計算手法は提案されていなかった。
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現するストリーム暗号の秘匿計算暗号化装置、ストリーム暗号の秘匿計算復号化装置、暗号化方法、復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、レジスタを構成する複数のノード(例えば、図2のノード11〜17に相当)と、該複数のノードのうち、任意の2つのノードからの出力を排他的論理和演算する第1のXORノード(例えば、図2のXORノード20に相当)と、該第1のXORノードの出力と乱数Rとの排他的論理和演算を行い、前記レジスタに出力する第1の信頼できるノード(例えば、図2の第1のマスタノード50に相当)と、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する非線形フィルタノード群(例えば、図2の非線形フィルタノード群30に相当)と、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第2の信頼できるノード(例えば、図2の第2のマスタノード60に相当)と、平文を入力し、乱数R´´´との排他的論理和を出力する第3の信頼できるノード(例えば、図2の第3のマスタノード70に相当)と、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第2のXORノード(例えば、図2のXORノード40に相当)と、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する第4の信頼できるノード(例えば、図2の第4のマスタノード80に相当)と、を備えたことを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【0009】
この発明によれば、複数のノードは、レジスタを構成する。第1のXORノードは、複数のノードのうち、任意の2つのノードからの出力を排他的論理和演算する。第1の信頼できるノードは、第1のXORノードの出力と乱数Rとの排他的論理和演算を行い、レジスタに出力する。非線形フィルタノード群は、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する。第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する。第3の信頼できるノードは、平文を入力し、乱数R´´´との排他的論理和を出力する。第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【0010】
(2)本発明は、(1)のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【0011】
この発明によれば、複数のノードが線形フィードバックシフトレジスタを構成する。したがって、簡易な構成でストリーム暗号の秘匿計算暗号化装置を実現できる。
【0012】
(3)本発明は、(1)のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【0013】
この発明によれば、複数のノードがレジスタのどの部分に該当するのかが秘匿されている。したがって、これにより、秘匿化が担保される。
【0014】
(4)本発明は、(1)のストリーム暗号の秘匿計算暗号化装置について、前記第1の信頼できるノードが前記出力と乱数R´との排他的論理和を演算する演算器をさらに備えたことを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【0015】
この発明によれば、第1の信頼できるノードが出力と乱数R´との排他的論理和を演算する演算器をさらに備える。したがって、乱数Rで排他的論理和演算を行うことによりデータをマスクすることが可能となるが、さらに、乱数R´との排他的論理和を行うことにより、データのリフレッシュが可能となり、万が一、乱数Rが欠落した場合でもデータを適切にマスクすることができる。
【0016】
(5)本発明は、(1)のストリーム暗号の秘匿計算暗号化装置について、前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とするストリーム暗号の秘匿計算暗号化装置を提案している。
【0017】
この発明によれば、非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行う。これにより、秘匿計算を簡単な演算で行うことができる。
【0018】
(6)本発明は、レジスタを構成する複数のノード(例えば、図5のノード11〜17に相当)と、該複数のノードのうち、任意の2つのノードからの出力を排他的論理和演算する第1のXORノード(例えば、図5のXORノード20に相当)と、該第1のXORノードの出力と乱数Rとの排他的論理和演算を行い、前記レジスタに出力する第1の信頼できるノード(例えば、図5の第1のマスタノード50に相当)と、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する非線形フィルタノード群(例えば、図5の非線形フィルタノード群30に相当)と、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第2の信頼できるノード(例えば、図5の第2のマスタノード60に相当)と、暗号文を入力し、乱数R´´´との排他的論理和を出力する第3の信頼できるノード(例えば、図5の第3のマスタノード100に相当)と、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第2のXORノード(例えば、図2のXORノード90に相当)と、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する第4の信頼できるノード(例えば、図5の第4のマスタノード80に相当)と、を備えたことを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【0019】
この発明によれば、複数のノードは、レジスタを構成する。第1のXORノードは、複数のノードのうち、任意の2つのノードからの出力を排他的論理和演算する。第1の信頼できるノードは、第1のXORノードの出力と乱数Rとの排他的論理和演算を行い、レジスタに出力する。非線形フィルタノード群は、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する。第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する。第3の信頼できるノードは、暗号文を入力し、乱数R´´´との排他的論理和を出力する。第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによって、復号の際にも、ストリーム暗号の秘匿計算を実現する。
【0020】
(7)本発明は、(6)のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【0021】
この発明によれば、複数のノードが線形フィードバックシフトレジスタを構成する。したがって、簡易な構成で復号の際にも、ストリーム暗号の秘匿計算暗号化装置を実現できる。
【0022】
(8)本発明は、(6)のストリーム暗号の秘匿計算暗号化装置について、前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【0023】
この発明によれば、複数のノードがレジスタのどの部分に該当するのかが秘匿されている。したがって、これにより、復号の際にも、秘匿化が担保される。
【0024】
(9)本発明は、(6)のストリーム暗号の秘匿計算暗号化装置について、前記第1の信頼できるノードが前記出力と乱数R´との排他的論理和を演算する演算器をさらに備えたことを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【0025】
この発明によれば、第1の信頼できるノードが出力と乱数R´との排他的論理和を演算する演算器をさらに備える。乱数Rで排他的論理和演算を行うことによりデータをマスクすることが可能となるが、さらに、乱数R´との排他的論理和を行うことにより、データのリフレッシュが可能となり、万が一、乱数Rが欠落した場合でもデータを適切にマスクすることができる。
【0026】
(10)本発明は、(6)のストリーム暗号の秘匿計算暗号化装置について、前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とするストリーム暗号の秘匿計算復号化装置を提案している。
【0027】
この発明によれば、非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行う。これにより、復号の際にも、秘匿計算を簡単な演算で行うことができる。
【0028】
(11)本発明は、(1)におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法であって、前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップ(例えば、図3のステップS101に相当)と、前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップ(例えば、図3のステップS102に相当)と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップ(例えば、図3のステップS103に相当)と、前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップ(例えば、図3のステップS104に相当)と、前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップ(例えば、図3のステップS105に相当)と、初期化処理終了後に、前記第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する第6のステップ(例えば、図3のステップS106に相当)と、前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップ(例えば、図3のステップS107に相当)と、前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する第8のステップ(例えば、図3のステップS108に相当)と、を備えたことを特徴とする暗号化方法を提案している。
【0029】
この発明によれば、第1の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する。第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する。第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【0030】
(12)本発明は、(1)におけるストリーム暗号の秘匿計算復号化装置における復号化方法であって、前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップ(例えば、図6のステップS201に相当)と、前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップ(例えば、図6のステップS202に相当)と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップ(例えば、図6のステップS203に相当)と、前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップ(例えば、図6のステップS204に相当)と、前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップ(例えば、図6のステップS205に相当)と、初期化処理終了後に、前記第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する第6のステップ(例えば、図6のステップS206に相当)と、前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップ(例えば、図6のステップS207に相当)と、前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する第8のステップ(例えば、図6のステップS208に相当)と、を備えたことを特徴とする復号化方法を提案している。
【0031】
この発明によれば、第1の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する。第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する。第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【0032】
(13)本発明は、(1)におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法をコンピュータに実行させるためのプログラムであって、前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップ(例えば、図3のステップS101に相当)と、前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップ(例えば、図3のステップS102に相当)と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップ(例えば、図3のステップS103に相当)と、前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップ(例えば、図3のステップS104に相当)と、前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップ(例えば、図3のステップS105に相当)と、初期化処理終了後に、前記第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する第6のステップ(例えば、図3のステップS106に相当)と、前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップ(例えば、図3のステップS107に相当)と、前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する第8のステップ(例えば、図3のステップS108に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0033】
この発明によれば、第1の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する。第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する。第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【0034】
(14)本発明は、(1)におけるストリーム暗号の秘匿計算復号化装置における復号化方法をコンピュータに実行させるためのプログラムであって、前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップ(例えば、図5のステップS201に相当)と、前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップ(例えば、図6のステップS202に相当)と、前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップ(例えば、図6のステップS203に相当)と、前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップ(例えば、図6のステップS204に相当)と、前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップ(例えば、図6のステップS205に相当)と、初期化処理終了後に、前記第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する第6のステップ(例えば、図6のステップS206に相当)と、前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップ(例えば、図6のステップS207に相当)と、前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する第8のステップ(例えば、図6のステップS208に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0035】
この発明によれば、第1の信頼できるノードに初期鍵および初期ベクトルを入力し、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する。このデータの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信し、非線形フィルタノード群が、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する。第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する。初期化処理終了後に、第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する。第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行う。第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する。したがって、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【発明の効果】
【0036】
本発明によれば、ステートフルなストリーム暗号を複数のノードが協調動作することにより秘匿計算を実現できるという効果がある。
【図面の簡単な説明】
【0037】
【図1】本発明の第1の実施形態に係るストリーム暗号の秘匿計算暗号化装置について、そのベースとなるストリーム暗号の暗号化装置の構成を示す図である。
【図2】本発明の第1の実施形態に係るストリーム暗号の秘匿計算暗号化装置の構成を示す図である。
【図3】本発明の第1の実施形態に係るストリーム暗号の秘匿計算暗号化装置の処理を示す図である。
【図4】本発明の第1の実施形態に係るストリーム暗号の秘匿計算復号化装置について、そのベースとなるストリーム暗号の復号化装置の構成を示す図である。
【図5】本発明の第2の実施形態に係るストリーム暗号の秘匿計算復号化装置の構成を示す図である。
【図6】本発明の第2の実施形態に係るストリーム暗号の秘匿計算復号化装置の処理を示す図である。
【発明を実施するための形態】
【0038】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0039】
<第1の実施形態>
図1から図3を用いて、本発明の第1の実施形態について説明する。
【0040】
<モデルとなるストリーム暗号化装置の構成>
図1を用いて、本発明のモデルとなるストリーム暗号化装置の構成について説明する。
図1に示すように、本発明のモデルとなるストリーム暗号化装置は、線形フィードバックシフトレジスタ1と、XOR演算器2と、非線形フィルタ3と、XOR演算器4とから構成されている。
【0041】
ここで、線形フィードバックシフトレジスタ1は、フィードバック関数を使用するものであり、非線形フィルタに必要なビットを出力する。その後、フィードバック関数により各レジスタをアップデートし、再びビットを出力するという処理を繰り返す。
【0042】
XOR演算器2は、線形フィードバックシフトレジスタ1の所定の2つのレジスタの排他的論理和演算を行って、その出力を線形フィードバックシフトレジスタ1の所定のレジスタにフィードバックする。
【0043】
非線形フィルタ3は、線形フィードバックシフトレジスタ1から入力されるビットから非線形関数により鍵系列を計算して出力する。XOR演算器4は、平文と非線形フィルタ3が出力する鍵系列との排他的論理和演算を行って暗号文を出力する。
【0044】
<ストリーム暗号の秘匿計算暗号化装置の構成>
本実施形態に係るストリーム暗号の秘匿計算暗号化装置は、図2に示すように、線形フィードバックシフトレジスタ1を構成するノード11〜17と、XORノード20と、非線形フィルタノード群30と、XORノード40と、第1のマスタノード50と、第2のマスタノード60と、第3のマスタノード70と、第4のマスタノード80とから構成されている。
【0045】
このように、図1で示したモデルを複数のノードで構成し、この複数のノードで分けて計算を行うことで秘匿計算を実現している。
【0046】
線形フィードバックシフトレジスタ1を構成するノード11〜17は、図2に示す矢印の方向に通信によってデータを流している。これらのノードは、レジスタ値を保持するノードであり、新たなレジスタ値が入力されたときに、現在のレジスタ値を出力先に指定されたノードに出力する。なお、それぞれのノードは、自分がどのレジスタを担当しているのか、解らないものとする。
【0047】
XORノード20は、線形フィードバックシフトレジスタ1を構成するノード11〜17のうち、2つのノード(図2では、ノードAおよびノードB)からのデータに対して、排他的論理和演算を行って、その結果を第1のマスタノード50に出力する。
【0048】
非線形フィルタノード群30は、複数のノードから構成される秘匿計算回路であり、入力には既に第1のマスタノード50が排他的論理和した乱数が含まれている。非線形フィルタノード群30は、有限体上の逆元計算を使用することで、秘匿計算を行う。これにより、演算を簡素化することができる。
【0049】
ここで、有限体上の逆元計算は、複数の乗算および2乗算から構成できることが知られている。例えば、GF(2)上の逆元計算は、x−1=x254を計算することであるが、これは、x254=((x((x^2)^2)^2)^2)* ((x((x^2)^2)^2)^2))* ((X((X^2)^2)^2)^2))^2)^2のように計算できる。これを用いて、乱数をRとしたとき、(X+R)^(2^i)=x^(2^i)+R^(2^i)となることから、計算後にR^(2^i)を引くことで乱数Rを除去することができる。
【0050】
XORノード40は、第2のマスタノード60からの出力(鍵系列+乱数R´´)と第3のマスタノード70からの出力(平文+乱数R´´´)との排他的論理和演算を行って、暗号文+乱数R´´+乱数R´´´を出力する。
【0051】
第1のマスタノード50は、2つのXOR演算器を備え、XORノード20からのデータと乱数Rとの排他的論理和演算を行い、さらに、その出力と乱数R´との排他的論理和演算を行って、線形フィードバックシフトレジスタ1を構成するノード11〜17の1つに出力する(図2では、ノードG)。これにより、乱数Rで排他的論理和演算を行うことによりデータをマスクすることが可能となるが、さらに、乱数R´との排他的論理和を行うことにより、データのリフレッシュが可能となり、万が一、乱数Rが欠落した場合でもデータを適切にマスクすることができる。
【0052】
第2のマスタノード60は、非線形フィルタノード群30から入力したデータ(鍵系列+乱数R)から乱数Rを除去し、新たな乱数R´を用いて、排他的論理和演算を行い、鍵系列+乱数R´からなるデータをXORノード40に出力する。
【0053】
第3のマスタノード70は、平文を入力し、この平文と新たな乱数R´´´との排他的論理和演算を行って、平文+乱数R´´´のデータをXORノード40に出力する。
【0054】
第4のマスタノード80は、XORノード40から入力したデータ暗号文+乱数R´´+乱数R´´´と乱数R´´、乱数R´´´との排他的論理和演算を行って、乱数R´´、乱数R´´´を除去して暗号文を出力する。
【0055】
なお、マスタノードは信頼できるノードであり、図2では、4つのマスタノードを示したが、同一のノードであっても良いし、異なっていても良い。但し、異なっている場合は、生成した乱数情報を互いに送りあうことで共有する必要がある。
【0056】
<ストリーム暗号の秘匿計算暗号化装置の処理>
図3を用いて、本実施形態に係るストリーム暗号の秘匿計算暗号化装置の処理について説明する。
【0057】
まず、第1の信頼できるノードに初期鍵および初期ベクトルを入力し(ステップS101)、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する(ステップS102)。
【0058】
次に、データの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信する(ステップS103)。非線形フィルタノード群は、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する(ステップS104)。
【0059】
第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する(ステップS105)。初期化処理終了後に、第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する(ステップS106)。
【0060】
第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行い(ステップS107)、第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する(ステップS108)。
【0061】
したがって、本実施形態によれば、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【0062】
<第2の実施形態>
図4から図6を用いて、本発明の第1の実施形態について説明する。
【0063】
<モデルとなるストリーム復号化装置の構成>
本発明のモデルとなるストリーム復号化装置は、図4に示す構成となっており、第1の実施形態とは、暗号文を入力して平文を出力するXOR演算器9の機能が異なる点でのみ相違している。
【0064】
<ストリーム暗号の秘匿計算復号化装置の構成>
本実施形態に係るストリーム暗号の秘匿計算復号化装置は、図5に示すように、線形フィードバックシフトレジスタ1を構成するノード11〜17と、XORノード20と、非線形フィルタノード群30と、第1のマスタノード50と、第2のマスタノード60と、第4のマスタノード80、XORノード90と、第3のマスタノード100とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素については、同一の機能を有することから、その詳細な説明は省略する。
【0065】
XORノード90は、第2のマスタノード60からの出力(鍵系列+乱数R´´)と第3のマスタノード100からの出力(暗号文+乱数R´´´)との排他的論理和演算を行って、平文+乱数R´´+乱数R´´´を出力する。
【0066】
第3のマスタノード70は、暗号文を入力し、この暗号文と新たな乱数R´´´との排他的論理和演算を行って、暗号文+乱数R´´´のデータをXORノード40に出力する。
【0067】
<ストリーム暗号の秘匿計算復号化装置の処理>
図3を用いて、本実施形態に係るストリーム暗号の秘匿計算復号化装置の処理について説明する。
【0068】
まず、第1の信頼できるノードに初期鍵および初期ベクトルを入力し(ステップS201)、初期鍵および初期ベクトル乱数を排他的論理和演算した値をレジスタを構成する複数のノードのうち、所定のノードに入力する(ステップS202)。
【0069】
次に、データの入力に対して、データを複数のノードの結線状態に応じて、シフトさせて送信する(ステップS203)。非線形フィルタノード群は、複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する(ステップS204)。
【0070】
第2の信頼できるノードは、非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と鍵系列との排他的論理和を出力する(ステップS205)。初期化処理終了後に、第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する(ステップS206)。
【0071】
第2のXORノードは、第2の信頼できるノードの出力と第3の信頼できるノードの出力との排他的論理和演算を行い(ステップS207)、第4の信頼できるノードは、第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する(ステップS208)。
【0072】
したがって、本実施形態によれば、複数のノードがそれぞれ内部状態の一部を保持することによってストリーム暗号の秘匿計算を実現する。
【0073】
なお、ストリーム暗号の秘匿計算暗号化装置およびストリーム暗号の秘匿計算復号化装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の秘匿計算暗号化装置およびストリーム暗号の秘匿計算復号化装置に読み込ませ、実行することによって本発明のストリーム暗号の秘匿計算暗号化装置およびストリーム暗号の秘匿計算復号化装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0074】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0075】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0076】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0077】
1;線形フィードバックシフトレジスタ
2;XOR演算器
3;非線形フィルタ
4;XOR演算器
9;XOR演算器
11;ノードA
12;ノードB
13;ノードC
14;ノードD
15;ノードE
16;ノードF
17;ノードG
20;XORノード
30;非線形フィルタノード群
40;XORノード
50;第1のマスタノード
60;第2のマスタノード
70;第3のマスタノード
80;第4のマスタノード
90;XORノード
100;第3のマスタノード

【特許請求の範囲】
【請求項1】
レジスタを構成する複数のノードと、
該複数のノードのうち、任意の2つのノードからの出力を排他的論理和演算する第1のXORノードと、
該第1のXORノードの出力と乱数Rとの排他的論理和演算を行い、前記レジスタに出力する第1の信頼できるノードと、
前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する非線形フィルタノード群と、
該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第2の信頼できるノードと、
平文を入力し、乱数R´´´との排他的論理和を出力する第3の信頼できるノードと、
前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第2のXORノードと、
該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する第4の信頼できるノードと、
を備えたことを特徴とするストリーム暗号の秘匿計算暗号化装置。
【請求項2】
前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とする請求項1に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項3】
前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とする請求項1に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項4】
前記第1の信頼できるノードが前記出力と乱数R´との排他的論理和を演算する演算器をさらに備えたことを特徴とする請求項1に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項5】
前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とする請求項1に記載のストリーム暗号の秘匿計算暗号化装置。
【請求項6】
レジスタを構成する複数のノードと、
該複数のノードのうち、任意の2つのノードからの出力を排他的論理和演算する第1のXORノードと、
該第1のXORノードの出力と乱数Rとの排他的論理和演算を行い、前記レジスタに出力する第1の信頼できるノードと、
前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する非線形フィルタノード群と、
該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第2の信頼できるノードと、
暗号文を入力し、乱数R´´´との排他的論理和を出力する第3の信頼できるノードと、
前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第2のXORノードと、
該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する第4の信頼できるノードと、
を備えたことを特徴とするストリーム暗号の秘匿計算復号化装置。
【請求項7】
前記複数のノードが線形フィードバックシフトレジスタを構成することを特徴とする請求項6に記載のストリーム暗号の秘匿計算復号化装置。
【請求項8】
前記複数のノードがレジスタのどの部分に該当するのかが秘匿されていることを特徴とする請求項6に記載のストリーム暗号の秘匿計算復号化装置。
【請求項9】
前記第1の信頼できるノードが前記出力と乱数R´との排他的論理和を演算する演算器をさらに備えたことを特徴とする請求項6に記載のストリーム暗号の秘匿計算復号化装置。
【請求項10】
前記非線形フィルタノード群が、有限体上の逆元計算による非線形関数を用いて処理を行うことを特徴とする請求項6に記載のストリーム暗号の秘匿計算復号化装置。
【請求項11】
前記請求項1におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法であって、
前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップと、
前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップと、
前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップと、
初期化処理終了後に、前記第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する第6のステップと、
前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップと、
前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する第8のステップと、
を備えたことを特徴とする暗号化方法。
【請求項12】
前記請求項1におけるストリーム暗号の秘匿計算復号化装置における復号化方法であって、
前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップと、
前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップと、
前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップと、
初期化処理終了後に、前記第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する第6のステップと、
前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップと、
前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する第8のステップと、
を備えたことを特徴とする復号化方法。
【請求項13】
前記請求項1におけるストリーム暗号の秘匿計算暗号化装置における暗号化方法をコンピュータに実行させるためのプログラムであって、
前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップと、
前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップと、
前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップと、
初期化処理終了後に、前記第3の信頼できるノードに平文を入力し、乱数R´´´との排他的論理和を出力する第6のステップと、
前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップと、
前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して暗号文を出力する第8のステップと、
をコンピュータに実行させるためのプログラム。
【請求項14】
前記請求項1におけるストリーム暗号の秘匿計算復号化装置における復号化方法をコンピュータに実行させるためのプログラムであって、
前記第1の信頼できるノードに初期鍵および初期ベクトルを入力する第1のステップと、
前記第1の信頼できるノードが、初期鍵および初期ベクトル乱数を排他的論理和演算した値を前記レジスタを構成する複数のノードのうち、所定のノードに入力する第2のステップと、
前記データの入力に対して、データを前記複数のノードの結線状態に応じて、シフトさせて送信する第3のステップと、
前記非線形フィルタノード群が、前記複数のノードのうち、2つのノードからのデータを入力して、鍵系列と乱数Rとの排他的論理和を出力する第4のステップと、
前記第2の信頼できるノードが、該非線形フィルタノード群から入力した鍵系列と乱数Rとの排他的論理和から乱数Rを除去し、新たな乱数R´´と前記鍵系列との排他的論理和を出力する第5のステップと、
初期化処理終了後に、前記第3の信頼できるノードに暗号文を入力し、乱数R´´´との排他的論理和を出力する第6のステップと、
前記第2のXORノードが、前記第2の信頼できるノードの出力と前記第3の信頼できるノードの出力との排他的論理和演算を行う第7のステップと、
前記第4の信頼できるノードが、該第2のXORノードからのデータを入力し、乱数R´´および乱数R´´´を除去して平文を出力する第8のステップと、
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−160189(P2011−160189A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−20173(P2010−20173)
【出願日】平成22年2月1日(2010.2.1)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】