【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、
第1のシフトレジスタ(例えば、
図1の
シフトレジスタ200に相当)と、該
第1のシフトレジスタにデータをフィードバック
し、前記第1のシフトレジスタとともに、線形フィードバックシフトレジスタを構成する
線形フィードバック関数(例えば、
図1の
線形フィードバック関数100に相当)と、2つに分割された
第2のシフトレジスタ
、第3のシフトレジスタ(例えば、
図1の
シフトレジスタ400、500に相当)と、
前記第2のシフトレジスタと、前記第3のシフトレジスタと、第1の非線形関数器(例えば、図1の非線形関数器710に相当)と、第2の非線形関数器(例えば、図1の非線形関数器720に相当)とともに、動的フィードバックシフトレジスタを構成する動的フィードバック関数(例えば、
図1の動的フィードバック関数300に相当)と、
前記第2のシフトレジスタ、第3のシフトレジスタとともに、動的線形フィードバックシフトレジスタを構成する動的フィードバック関数(例えば、
図1の動的フィードバック関数300に相当)と、前記
第2のシフトレジスタ、第3のシフトレジスタからの入力データと前記
第1のシフトレジスタ
からの入力データとを非線形変換する非線形変換手段(例えば、
図1の非線形変換部600に相当)と、前記非線形
変換手段の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器(例えば、
図1の排他的論理和演算器7
40、7
50に相当)と、
を備え、前記第1の非線形関数器が、前記動的フィードバック関数の出力データを非線形変換し、前記第2の非線形関数器が、前記第2のシフトレジスタの出力データと出力される暗号文との排他的論理和に対して非線形変換を行なうとともに、前記第2のシフトレジスタには、前記第1の非線形関数器において非線形変換されたデータと前記第1のシフトレジスタ内のデータとの加算値が入力され、前記第3のシフトレジスタには、前記第2の非線形関数器において非線形変換されたデータと前記第1のシフトレジスタ内のデータとの加算値が入力されることを特徴とするストリーム暗号の暗号化装置を提案している。
【0009】
この発明によれば、ストリーム暗号の暗号化装置は、
第1のシフトレジスタと、
第1のシフトレジスタにデータをフィードバック
し、第1のシフトレジスタとともに、線形フィードバックシフトレジスタを構成する
線形フィードバック関数と、2つに分割された
第2のシフトレジスタ
、第3のシフトレジスタと、
第2のシフトレジスタと、第3のシフトレジスタと、第1の非線形関数器と、第2の非線形関数器とともに、動的フィードバックシフトレジスタを構成する動的フィードバック関数と、
第2のシフトレジスタ、第3のシフトレジスタからの入力データと
第1のシフトレジスタ
からの入力データとを非線形変換する非線形変換手段と、非線形
変換手段の出力データと入力した平文との排他的論理和演算を行い暗号文を出力する排他的論理和演算器と、
を備え、第1の非線形関数器が、動的フィードバック関数の出力データを非線形変換し、第2の非線形関数器が、第2のシフトレジスタの出力データと出力される暗号文との排他的論理和に対して非線形変換を行なうとともに、第2のシフトレジスタには、第1の非線形関数器において非線形変換されたデータと第1のシフトレジスタ内のデータとの加算値が入力され、第3のシフトレジスタには、第2の非線形関数器において非線形変換されたデータと第1のシフトレジスタ内のデータとの加算値が入力される。つまり、上記の構成とすることにより、安全性を従来よりも向上させつつ、高速な暗号化処理を実現することができる。
【0010】
(2)本発明は、(1)のストリーム暗号の暗号化装置について、前記非線形変換手段が、4つの内部メモリ(例えば、
図2の内部メモリL1、L2、R1、R2に相当)を内部状態として備え、該4つの内部メモリ間で非線形関数器(例えば、
図2の非線形関数620a、620b、620c、620dに相当)を介した結線構造を有することを特徴とするストリーム暗号の暗号化装置を提案している。
【0011】
この発明によれば、非線形変換手段が、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造を有する。つまり、非線形変換手段をこうした構成とすることにより、安全性を相乗的に増加させることができる。
【0014】
(
3)本発明は、(1)のストリーム暗号の暗号化装置について、暗号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行することを特徴とするストリーム暗号の暗号化装置を提案している。
【0015】
この発明によれば、暗号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行する。つまり、この処理を実行することにより、メッセージ認証子を作成することができるため、安全な認証付きストリーム暗号を生成することができる。
【0016】
(
4)本発明は、(
3)のストリーム暗号の暗号化装置について、前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とするストリーム暗号の暗号化装置を提案している。
【0017】
この発明によれば、空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力する。つまり、出力するメッセージ認証子と暗号文とを結合して出力結果を生成することにより、安全な認証付きストリーム暗号を生成することができる。
【0020】
(
6)本発明は、(
5)のストリーム暗号の復号化装置について、前記非線形変換手段が、4つの内部メモリ(例えば、
図5の内部メモリL1、L2、R1、R2に相当)を内部状態として備え、該4つの内部メモリ間で非線形関数器(例えば、
図5の非線形関数
器620a、620b、620c、620dに相当)を介した結線構造を有することを特徴とするストリーム暗号の暗号化装置を提案している。
【0021】
この発明によれば、非線形変換手段が、4つの内部メモリを内部状態として備え、4つの内部メモリ間で非線形関数器を介した結線構造を有する。つまり、非線形変換手段をこうした構成とすることにより、安全性を相乗的に増加させることができる。
【0024】
(
7)本発明は、(
5)のストリーム暗号の復号化装置について、復号化処理の実行後に、すべてのデータを「0」とした暗号文を入力して空まわし処理を指定回数実行することを特徴とするストリーム暗号の暗号化装置を提案している。
【0025】
この発明によれば、復号化処理の実行後に、すべてのデータを「0」とした平文を入力して空まわし処理を指定回数実行する。つまり、この処理を実行することにより、メッセージ認証子を作成することができるため、安全な認証付き平文を生成することができる。
【0026】
(
8)本発明は、(
7)のストリーム暗号の復号化装置について、前記空まわし処理の後で、指定ビット長の鍵系列をメッセージ認証子として出力することを特徴とするストリーム暗号の復号化装置を提案している。
【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】
この発明によれば、初期鍵、初期ベクトルを読み込み、初期化処理を実施する。次いで、鍵系列生成処理を実行し、鍵系列を生成し、生成した平文を動的フィードバック関数および分割した一方の動的フィードバックレジスタの最終レジスタに逐次入力し、暗号文の入力が終了した後も、暗号文をオールゼロとして空回しを実行し、空回し終了後に、指定ビット長の鍵系列を生成し、メッセージ認証子として出力し、メッセージ認証子を平文に添付して出力する。つまり、上記の処理を行うことにより、安全性を従来よりも向上させつつ、高速な復号化処理を実現することができる。また、送信されてきた暗号文に結合されたメッセージ認証子と生成したメッセージ認証子とを比較することにより、両者が一致するか否かを検証することができる。