説明

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

【課題】安全でしかも効率的な認証を実現できるストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供する。
【解決手段】初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成し、生成した暗号文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する。そして、空回し終了後に、分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とし、メッセージ認証子を暗号文に添付して出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、安全でしかも効率的な認証を実現できるストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムに関する。
【背景技術】
【0002】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスに置いては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、1つの鍵で暗号化・復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の2つに分けられる。
【0003】
前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。一方、認証付き暗号という方式がある。これは、1つのアルゴリズムでメッセージ認証と暗号化を同時に実現しようとするアルゴリズムである(例えば、非特許文献1参照。)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Philip Hawkes, Cameron McDonald, Michael Paddon, Gregory G. Rose, and Miriam Wiggers de Vries, “Specification for NLSv2 ,” New Stream Cipher Designs, Lncs, Vol.4986、2008.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、これまで、ストリーム暗号を認証付き暗号にするためには、アルゴリズムの再設計が必要であった。または、設計の段階から認証機能の組み込みを考慮する必要があった。さらには、認証付きストリーム暗号のほとんどすべてが攻撃により破られており、安全な認証付きストリーム暗号はほとんど無いという状況である。
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであり、安全でしかも効率的な認証を実現できるストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、線形フィードバックレジスタ(例えば、図1の線形フィードバックレジスタ200に相当)と、該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数(例えば、図1のフィードバック関数100に相当)と、2つに分割された動的フィードバックレジスタ(例えば、図1の動的フィードバックレジスタ400、500に相当)と、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数(例えば、図1の動的フィードバックレジスタ300に相当)と、前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段(例えば、図1の非線形変換部600に相当)と、前記非線形関数の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器(例えば、図1の排他的論理和演算器760、770に相当)と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【0009】
この発明によれば、ストリーム暗号の暗号化装置は、線形フィードバックレジスタと、線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、2つに分割された動的フィードバックレジスタと、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、2つの動的フィードバックレジスタからの入力データと線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、非線形関数の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器と、を備えている。つまり、上記の構成とすることにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。
【0010】
(2)本発明は、(1)のストリーム暗号の暗号化装置について、前記非線形変換手段が、4つの内部メモリ(例えば、図2の内部メモリL1、L2、R1、R2に相当)を内部状態として備え、該4つの内部メモリ間で非線形関数器(例えば、図2の非線形関数620a、620b、620c、620dに相当)を介した結線構造を有することを特徴とするストリーム暗号の暗号化装置を提案している。
【0011】
この発明によれば、非線形変換手段が、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造を有する。つまり、非線形変換手段をこうした構成とすることにより、安全性を相乗的に増加させることができる。
【0012】
(3)本発明は、(1)のストリーム暗号の暗号化装置について、前記非線形変換手段が出力する暗号文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とするストリーム暗号の暗号化装置を提案している。
【0013】
この発明によれば、非線形変換手段が出力する暗号文を動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力する。つまり、動的フィードバックレジスタを分割し、暗号文を入力するレジスタ間に距離を持たせることにより、安全性を高めることができる。
【0014】
(4)本発明は、(1)のストリーム暗号の暗号化装置について、暗号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行することを特徴とするストリーム暗号の暗号化装置を提案している。
【0015】
この発明によれば、暗号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行する。つまり、この処理を実行することにより、メッセージ認証子を作成することができるため、安全な認証付きストリーム暗号を生成することができる。
【0016】
(5)本発明は、(4)のストリーム暗号の暗号化装置について、前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とするストリーム暗号の暗号化装置を提案している。
【0017】
この発明によれば、空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力する。つまり、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。
【0018】
(6)本発明は、(1)から(5)のストリーム暗号の暗号化装置により生成された暗号文を復号するストリーム暗号の復号化装置であって、線形フィードバックレジスタ(例えば、図4の線形フィードバックレジスタ200に相当)と、該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数(例えば、図4のフィードバック関数100に相当)と、2つに分割された動的フィードバックレジスタ(例えば、図4の動的フィードバックレジスタ400、500に相当)と、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数(例えば、図4の動的フィードバックレジスタ300に相当)と、前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段(例えば、図4の非線形変換部600に相当)と、前記非線形関数の出力データと入力した暗号文との排他的論理和演算を行い平文を出力する排他的論理和演算器(例えば、図4の排他的論理和演算器760、770に相当)と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【0019】
この発明によれば、ストリーム暗号の復号化装置は、線形フィードバックレジスタと、線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、2つに分割された動的フィードバックレジスタと、分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、2つの動的フィードバックレジスタからの入力データと線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、非線形関数の出力データと入力した暗号文との排他的論理和演算を行い平文を出力する排他的論理和演算器と、を備えている。つまり、上記の構成とすることにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。
【0020】
(7)本発明は、(6)のストリーム暗号の復号化装置について、前記非線形変換手段が、4つの内部メモリ(例えば、図5の内部メモリL1、L2、R1、R2に相当)を内部状態として備え、該4つの内部メモリ間で非線形関数器(例えば、図5の非線形関数620a、620b、620c、620dに相当)を介した結線構造を有することを特徴とするストリーム暗号の暗号化装置を提案している。
【0021】
この発明によれば、非線形変換手段が、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造を有する。つまり、非線形変換手段をこうした構成とすることにより、安全性を相乗的に増加させることができる。
【0022】
(8)本発明は、(6)のストリーム暗号の復号化装置について、前記非線形変換手段が出力する平文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とするストリーム暗号の復号化装置を提案している。
【0023】
この発明によれば、非線形変換手段が出力する平文を動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力する。つまり、動的フィードバックレジスタを分割し、平文を入力するレジスタ間に距離を持たせることにより、安全性を高めることができる。
【0024】
(9)本発明は、(6)のストリーム暗号の復号化装置について、復号化処理の実行後に、すべてのデータを「0」とした暗号文を入力して空まわし処理を指定回数実行することを特徴とするストリーム暗号の暗号化装置を提案している。
【0025】
この発明によれば、復号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行する。つまり、この処理を実行することにより、メッセージ認証子を作成することができるため、安全な認証付き平文を生成することができる。
【0026】
(10)本発明は、(9)のストリーム暗号の復号化装置について、前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とするストリーム暗号の復号化装置を提案している。
【0027】
この発明によれば、空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力する。つまり、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。
【0028】
(11)本発明は、初期鍵、初期ベクトルを読み込む第1のステップ(例えば、図3のステップS101に相当)と、初期化処理を実施する第2のステップ(例えば、図3のステップS102に相当)と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ(例えば、図3のステップS103に相当)と、該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップ(例えば、図3のステップS104に相当)と、該生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップ(例えば、図3のステップS105に相当)と、該空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する第6のステップ(例えば、図3のステップS106に相当)と、該メッセージ認証子を暗号文に添付して出力する第7のステップ(例えば、図3のステップS107に相当)と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【0029】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成し、生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する。そして、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を暗号文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。また、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。
【0030】
(12)本発明は、(11)のストリーム暗号の暗号化方法により暗号化された暗号文を復号するストリーム暗号の復号化方法であって、初期鍵、初期ベクトルを読み込む第1のステップ(例えば、図6のステップS201に相当)と、初期化処理を実施する第2のステップ(例えば、図6のステップS202に相当)と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ(例えば、図6のステップS203に相当)と、暗号文とメッセージ認証子とを受信する第4のステップ(例えば、図6のステップS204に相当)と、該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップ(例えば、図6のステップS205に相当)と、該生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、前記暗号文の入力が終了した後も、前記暗号文をオールゼロとして空回しを実行する第6のステップ(例えば、図6のステップS206に相当)と、該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第7のステップ(例えば、図6のステップS207に相当)と、該メッセージ認証子を平文に添付して出力する第7のステップと、前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップ(例えば、図6のステップS208に相当)と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【0031】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と暗号文との排他的論理和演算を実行することにより平文を生成し、生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行する。そして、空回し終了後に、分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とし、メッセージ認証子を平文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。
【0032】
(13)本発明は、初期鍵、初期ベクトルを読み込む第1のステップ(例えば、図3のステップS101に相当)と、初期化処理を実施する第2のステップ(例えば、図3のステップS102に相当)と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ(例えば、図3のステップS103に相当)と、該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップ(例えば、図3のステップS104に相当)と、該生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップ(例えば、図3のステップS105に相当)と、該空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する第6のステップ(例えば、図3のステップS106に相当)と、該メッセージ認証子を暗号文に添付して出力する第7のステップ(例えば、図3のステップS107に相当)と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【0033】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成し、生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する。そして、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を暗号文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。また、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。
【0034】
(14)本発明は、前記請求項13に記載のプログラムにより暗号化された暗号文を復号するプログラムであって、初期鍵、初期ベクトルを読み込む第1のステップ(例えば、図6のステップS201に相当)と、初期化処理を実施する第2のステップ(例えば、図6のステップS202に相当)と、鍵系列生成処理を実行し、鍵系列を生成する第3のステップ(例えば、図6のステップS203に相当)と、暗号文とメッセージ認証子とを受信する第4のステップ(例えば、図6のステップS204に相当)と、該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップ(例えば、図6のステップS205に相当)と、該生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行する第5のステップ(例えば、図6のステップS206に相当)と、該空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する第7のステップ(例えば、図6のステップS207に相当)と、該メッセージ認証子を平文に添付して出力する第7のステップと、前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップ(例えば、図6のステップS208に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0035】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行し、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を平文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。
【発明の効果】
【0036】
本発明によれば、安全かつ効率的な認証付きストリーム暗号を生成できるという効果がある。また、復号処理においても安全かつ効率的な処理を実現できるという効果がある。
【図面の簡単な説明】
【0037】
【図1】本発明の第1の実施形態に係るストリーム暗号の暗号化装置の概略構成を示す図である。
【図2】本発明の第1の実施形態に係るストリーム暗号の暗号化装置の具体的な構成を示す図である。
【図3】本発明の第1の実施形態に係るストリーム暗号の暗号化装置の具体的な処理を示す図である。
【図4】本発明の第2の実施形態に係るストリーム暗号の復号化装置の概略構成を示す図である。
【図5】本発明の第2の実施形態に係るストリーム暗号の復号化装置の具体的な構成を示す図である。
【図6】本発明の第2の実施形態に係るストリーム暗号の復号化装置の具体的な処理を示す図である。
【発明を実施するための形態】
【0038】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0039】
図1から図6を用いて、本発明に係るストリーム暗号の暗号化装置および復号化装置について説明する。
【0040】
<第1の実施形態>
図1から図3を用いて、本実施形態に係るストリーム暗号の暗号化装置について説明する。
【0041】
<ストリーム暗号の暗号化装置の概略構成>
図1に示すように、本実施形態に係るストリーム暗号の暗号化装置は、フィードバック関数100と、線形フィードバックシフトレジスタ200と、動的フィードバック関数300と、動的フィードバックレジスタA400と、動的フィードバックレジスタB500と、非線形変換部600と、非線形関数(Msub)710、720と、排他的論理和演算器730、740、750とから構成されている。
【0042】
線形フィードバックシフトレジスタ200は、レジスタの各セルにフィードバックをかけるシフトレジスタである。フィードバック関数100は、線形フィードバックシフトレジスタ200から取得したデータに演算処理を行い、演算結果に基づいて、演算処理後のデータを線形フィードバックシフトレジスタ200の最終レジスタにフィードバックするか否かを制御する。
【0043】
動的フィードバックレジスタA400および動的フィードバックレジスタB500は、動的フィードバック関数300の処理結果により動的に構造が変化する線形フィードバックシフトレジスタである。したがって、より安全に暗号化処理および認証子の導出を行うことができる。また、本実施形態においては、動的フィードバックレジスタが2つに分割されて配置されており、暗号文を動的フィードバック関数および分割された一方の動的フィードバックレジスタA400および動的フィードバックレジスタB500の最終レジスタに出力する。つまり、動的フィードバックレジスタを分割し、暗号文を入力するレジスタ間に距離を持たせることにより、安全性を高めることができる。
【0044】
非線形変換部600は、線形シフトレジスタ200および動的フィードバックレジスタA400、動的フィードバックレジスタB500から入力したデータについて、非線形変換の処理を行う。
【0045】
非線形関数(Msub)710は、動的フィードバック関数300からの出力に対して、AES暗号のMix Column処理、S−Box処理、Mix Column処理を順番に行い、処理結果を動的フィードバックレジスタA400の最終レジスタに出力する。非線形関数(Msub)720は、動的フィードバックレジスタA400の出力レジスタの値と非線形変換部600から出力される暗号文とを排他的論理和演算器730において演算した値に対して、AES暗号のMix Column処理、S−Box処理、Mix Column処理を順番に行い、処理結果を動的フィードバックレジスタB500の最終レジスタに出力する。
【0046】
排他的論理和演算器740、750は、非線形変換部600からの出力と平文との排他的論理和演算を行って、暗号文を生成する。なお、暗号化処理終了後は、平文の値をオール「0」として空回しを指定回数実行し、空回し後に、指定ビット長の鍵系列を出力して、メッセージ認証子とする。さらに、生成した暗号文とメッセージ認証子とを結合して、最終的な出力とする。
【0047】
<ストリーム暗号の暗号化装置の具体的な構成>
図2に示すように、フィードバック関数100は、複数の排他的論理和演算器により構成されている。また、動的フィードバック関数300は、複数の排他的論理和演算器と加算器により構成されており、図2の場合には、線形フィードバックシフトレジスタ200の2番目のレジスタにおける4ビットのデータにより、フィードバック処理において、加算器を選択するのか、排他的論理和演算器を選択するのかを制御する。このような制御を行うことにより、ストリーム暗号装置全体の安全性を向上させることができる。
【0048】
非線形変換部600は、内部メモリ610a、610b、610c、610d、610eと、非線形関数(Sub)620a、620b、620c、620d、620eと、加算器630a、630b、630c、630d、630eと、排他的論理和演算器640a、640bとから構成されている。
【0049】
加算器630aは、動的フィードバックシフトレジスタA400と内部メモリL2とに接続されており、内部メモリL2の値と動的フィードバックシフトレジスタA400からの出力値とを加算して、非線形関数620bに出力する。
【0050】
加算器630bは、動的フィードバックシフトレジスタB500と内部メモリR2とに接続されており、内部メモリR2の値と動的フィードバックシフトレジスタB500からの出力値とを加算して、非線形関数620cに出力する。なお、非線形関数(Sub)620a、620b、620c、620d、620eは、AES暗号のS−Box処理、Mix Column処理を順番に行い、処理結果を各内部メモリ610a、610b、610c、610d、610eに出力する。
【0051】
加算器630cは、内部メモリ(L2)610cと内部メモリ(L1)610aとに接続されており、内部メモリ(L2)610cと内部メモリ(L1)610aとを加算して、排他的論理和演算器640aに出力する。
【0052】
加算器630dは、内部メモリ(R2)610dと内部メモリ(R1)610bとに接続されており、内部メモリ(R2)610dと内部メモリ(R1)610bとを加算して、排他的論理和演算器640bに出力する。
【0053】
内部メモリ(L1)610aは、非線形関数620cの出力値を保存し、内部メモリ(R1)610bは、非線形関数620cの出力値を保存し、内部メモリ(L2)610cは、非線形関数620aの出力値を保存し、内部メモリ(R2)610dは、非線形関数620dの出力値を保存する。このように、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造とすることにより、安全性を相乗的に増加させることができる。
【0054】
排他的論理和演算器640aは、加算器630cの出力値と線形フィードバックシフトレジスタ100の出力値との排他的論理和演算を行って、演算結果を排他的論理和演算器740に出力する。排他的論理和演算器640bは、加算器630dの出力値と線形フィードバックシフトレジスタ100からの値との排他的論理和演算を行って、演算結果を排他的論理和演算器750に出力する。
【0055】
<ストリーム暗号の暗号化装置の処理>
図3を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
【0056】
まず、初期鍵、初期ベクトルを読み込んで(ステップS101)、初期化処理を実施する(ステップS102)。次に、鍵系列生成処理を実行し、鍵系列を生成し(ステップS103)。生成した鍵系列と平文を排他的論理和することにより暗号文を生成する(ステップS104)。
【0057】
さらに、生成した暗号文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行し(ステップS105)、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子とする(ステップS106)。そして、メッセージ認証子を暗号文に添付して送信する(ステップS107)。
【0058】
以上、説明したように、本実施形態によれば、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。また、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。
【0059】
<第2の実施形態>
図4から図6を用いて、本実施形態に係るストリーム暗号の復号化装置について説明する。なお、本実施形態に係るストリーム暗号の復号化装置は、第1の実施形態において暗号化されたデータを復号するものである。
【0060】
<ストリーム暗号の復号化装置の概略構成>
図4に示すように、本実施形態に係るストリーム暗号の復号化装置は、フィードバック関数100と、線形フィードバックシフトレジスタ200と、動的フィードバック関数300と、動的フィードバックレジスタA400と、動的フィードバックレジスタB500と、非線形変換部600と、非線形関数(Msub)710、720と、排他的論理和演算器730、740、750とから構成されている。なお、第1の実施形態と同一の符号を付す構成要素は、同一の機能を有することから、その詳細な説明は省略する。
【0061】
<ストリーム暗号の復号化装置の処理>
図6を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
【0062】
まず、初期鍵、初期ベクトルを読み込んで(ステップS201)、初期化処理を実施する(ステップS202)。次に、鍵系列生成処理を実行し、鍵系列を生成し(ステップS203)暗号文とメッセージ認証子を受信する(ステップS204)。次に、生成した鍵系列と暗号文を排他的論理和することにより平文を生成する(ステップS205)。
【0063】
さらに、生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行し(ステップS206)、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力する(ステップS207)。そして、受信したメッセージ認証子と生成したメッセージ認証子とを照合する(ステップS208)。
【0064】
以上、説明したように、本実施形態によれば、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。
【0065】
なお、ストリーム暗号の暗号器あるいはストリーム暗号の復号器の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号器あるいはストリーム暗号の復号器に読み込ませ、実行することによって本発明のストリーム暗号の暗号器あるいはストリーム暗号の復号器を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0066】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0067】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0068】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0069】
100;フィードバック関数
200;線形フィードバックシフトレジスタ
300;動的フィードバック関数
400;動的フィードバックレジスタA
500;動的フィードバックレジスタB
600;非線形変換部
610a;内部メモリ
610b;内部メモリ
610c;内部メモリ
610d;内部メモリ
610e;内部メモリ
620a;非線形関数(Sub)
620b;非線形関数(Sub)
620c;非線形関数(Sub)
620d;非線形関数(Sub)
620e;非線形関数(Sub)
603a;加算器
603b;加算器
603c;加算器
603d;加算器
603e;加算器
640a;排他的論理和演算器
640b;排他的論理和演算器
710;非線形関数(Msub)
720;非線形関数(Msub)
730;排他的論理和演算器
740;排他的論理和演算器
750;排他的論理和演算器

【特許請求の範囲】
【請求項1】
線形フィードバックレジスタと、
該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、
2つに分割された動的フィードバックレジスタと、
分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、
前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、
前記非線形関数の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項2】
前記非線形変換手段が、4つの内部メモリを内部状態として備え、該4つの内部メモリ間で非線形関数器を介した結線構造を有することを特徴とする請求項1に記載のストリーム暗号の暗号化装置。
【請求項3】
前記非線形変換手段が出力する暗号文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とする請求項1に記載のストリーム暗号の暗号化装置。
【請求項4】
暗号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行することを特徴とする請求項1に記載のストリーム暗号の暗号化装置。
【請求項5】
前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とする請求項4に記載のストリーム暗号の暗号化装置。
【請求項6】
請求項1から請求項5に記載のストリーム暗号の暗号化装置により生成された暗号文を復号するストリーム暗号の復号化装置であって、
線形フィードバックレジスタと、
該線形フィードバックレジスタに入力するデータをフィードバックするフィードバック関数と、
2つに分割された動的フィードバックレジスタと、
分割された2つの動的フィードバックレジスタの最終レジスタにデータをフィードバックする動的フィードバック関数と、
前記2つの動的フィードバックレジスタからの入力データと前記線形フィードバックレジスタの入力データとを非線形変換する非線形変換手段と、
前記非線形関数の出力データと入力した暗号文との排他的論理和演算を行い平文を出力する排他的論理和演算器と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項7】
前記非線形変換手段が、4つの内部メモリを内部状態として備え、該4つの内部メモリ間で非線形関数器を介した結線構造を有することを特徴とする請求項6に記載のストリーム暗号の復号化装置。
【請求項8】
前記非線形変換手段が出力する平文を前記動的フィードバック関数および分割された一方の動的フィードバックレジスタの最終レジスタに出力することを特徴とする請求項6に記載のストリーム暗号の復号化装置。
【請求項9】
復号化処理の実行後に、すべてのデータを「0」とした暗号文を入力して空まわし処理を指定回数実行することを特徴とする請求項6に記載のストリーム暗号の暗号化装置。
【請求項10】
前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とする請求項9に記載のストリーム暗号の復号化装置。
【請求項11】
初期鍵、初期ベクトルを読み込む第1のステップと、
初期化処理を実施する第2のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、
該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップと、
該生成した暗号文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップと、
該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第6のステップと、
該メッセージ認証子を暗号文に添付して出力する第7のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項12】
前記請求項11に記載のストリーム暗号の暗号化方法により暗号化された暗号文を復号するストリーム暗号の復号化方法であって、
初期鍵、初期ベクトルを読み込む第1のステップと、
初期化処理を実施する第2のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、
暗号文とメッセージ認証子とを受信する第4のステップと、
該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップと、
該生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、前記暗号文の入力が終了した後も、前記暗号文をオールゼロとして空回しを実行する第6のステップと、
該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第7のステップと、
該メッセージ認証子を平文に添付して出力する第8のステップと、
前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項13】
初期鍵、初期ベクトルを読み込む第1のステップと、
初期化処理を実施する第2のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、
該生成した鍵系列と平文との排他的論理和演算を実行することにより暗号文を生成する第4のステップと、
該生成した暗号文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、平文の入力が終了した後も、平文をオールゼロとして空回しを実行する第5のステップと、
該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第6のステップと、
該メッセージ認証子を暗号文に添付して出力する第7のステップと、
をコンピュータに実行させるためのプログラム。
【請求項14】
前記請求項13に記載のプログラムにより暗号化された暗号文を復号するプログラムであって、
初期鍵、初期ベクトルを読み込む第1のステップと、
初期化処理を実施する第2のステップと、
鍵系列生成処理を実行し、鍵系列を生成する第3のステップと、
暗号文とメッセージ認証子とを受信する第4のステップと、
該生成した鍵系列と受信した暗号文との排他的論理和演算を実行することにより平文を生成する第5のステップと、
該生成した平文を分割した2つのメッセージ認証子作成用メモリに逐次入力し、前記暗号文の入力が終了した後も、前記暗号文をオールゼロとして空回しを実行する第6のステップと、
該空回し終了後に、前記分割した2つのメッセージ認証子用メモリの値を結合し、メッセージ認証子とする第6のステップと、
該メッセージ認証子を平文に添付して出力する第7のステップと、
前記出力されたメッセージ認証子と前記受信したメッセージ認証子とが一致するか否かを検証する第8のステップと、
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−235287(P2012−235287A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−102049(P2011−102049)
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】