(57)【特許請求の範囲】
【請求項１】
暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、
前記擬似乱数生成部の生成した擬似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する構成であり、
前記キーストリームは、前記キーストリーム生成部への入力値に応じて値が決定される再現可能な擬似乱数である暗号処理装置。
【請求項２】
前記第１の秘密鍵と前記第２の秘密鍵は、異なる秘密鍵である請求項１に記載の暗号処理装置。
【請求項３】
前記第１の秘密鍵と前記第２の秘密鍵は、同一の秘密鍵である請求項１に記載の暗号処理装置。
【請求項４】
前記第２の秘密鍵は、前記第１の秘密鍵に基づくデータ変換処理によって生成された鍵である請求項１に記載の暗号処理装置。
【請求項５】
前記キーストリーム生成部は、鍵変換部を有し、
前記鍵変換部は、前記第１の秘密鍵を入力して該第１の秘密鍵と異なる第２の秘密鍵を生成して前記線形フィードバックレジスタ（ＬＦＳＲ）に入力する請求項１に記載の暗号処理装置。
【請求項６】
前記鍵変換部は、
一方向性ハッシュ関数を適用したデータ変換を実行する請求項５に記載の暗号処理装置。
【請求項７】
前記擬似乱数生成部は、１バイト単位の擬似乱数を生成し、
前記線形フィードバックレジスタ（ＬＦＳＲ）は、１バイト単位のＬＦＳＲ出力を生成し、
前記排他的論理和演算部は、１バイト単位の擬似乱数と、１バイト単位のＬＦＳＲ出力との排他的論理和演算を実行して、１バイト単位の暗号鍵データからなるキーストリームを生成する請求項１に記載の暗号処理装置。
【請求項８】
前記線形フィードバックレジスタ（ＬＦＳＲ）は、特性多項式が、
ｆ（ｘ）＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９（＋）１
上記の１２８次の原始多項式によって規定される構成である請求項１に記載の暗号処理装置。
【請求項９】
前記線形フィードバックレジスタ（ＬＦＳＲ）は、特性多項式が、
ｆ（ｘ）＝Ｘ６４（＋）Ｘ６３（＋）Ｘ６１（＋）Ｘ６０（＋）１
上記の６４次の原始多項式によって規定される構成である請求項１に記載の暗号処理装置。
【請求項１０】
前記キーストリーム生成部は、
前記第１の秘密鍵を入力して、擬似乱数生成用初期データを生成する鍵スケジュール部と、
前記鍵スケジュール部の生成した擬似乱数生成用初期データを入力して擬似乱数を出力する擬似乱数生成部を有する構成である請求項１に記載の暗号処理装置。
【請求項１１】
復号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する復号鍵データと、復号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、
前記擬似乱数生成部の生成した擬似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する構成であり、
前記キーストリームは、前記キーストリーム生成部への入力値に応じて値が決定される再現可能な擬似乱数である復号処理装置。
【請求項１２】
暗号処理装置において実行する暗号処理方法であり、
キーストリーム生成部が、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成ステップと、
演算部が、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算ステップを実行し、
前記キーストリーム生成ステップは、
擬似乱数生成部が、第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成ステップと、
線形フィードバックレジスタ（ＬＦＳＲ）が、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成するＬＦＳＲ出力データ生成ステップと、
排他的論理和演算部が、前記擬似乱数生成部の生成した擬似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算ステップを有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理方法であり、
前記キーストリームは、前記キーストリーム生成部への入力値に応じて値が決定される再現可能な擬似乱数である暗号処理方法。
【請求項１３】
暗号処理装置において暗号処理を実行させるプログラムであり、
キーストリーム生成部に、暗号鍵データからなるデータストリームであるキーストリームを生成させるキーストリーム生成ステップと、
演算部に、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行させる演算ステップを実行させ、
前記プログラムは、前記キーストリーム生成ステップにおいて、
擬似乱数生成部に、第１の秘密鍵に基づいて擬似乱数を生成させる擬似乱数生成ステップと、
線形フィードバックレジスタ（ＬＦＳＲ）に、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成させるＬＦＳＲ出力データ生成ステップと、
排他的論理和演算部に、前記擬似乱数生成部の生成した擬似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行させる排他的論理和演算ステップを実行させ、
前記排他的論理和演算部の出力をキーストリームとして出力させるプログラムであり、
前記キーストリームは、前記キーストリーム生成部への入力値に応じて値が決定される再現可能な擬似乱数であるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、暗号処理装置、および暗号処理方法、並びにプログラムに関する。さらに詳細には、共通鍵暗号の１つであるストリーム暗号を実行する暗号処理装置、および暗号処理方法、並びにプログラムに関する。
【背景技術】
【０００２】
情報化社会が発展すると共に、扱う情報を安全に守るための情報セキュリティ技術の重要性が増してきている。情報セキュリティ技術の構成要素の一つとして暗号技術があり、現在では様々な製品やシステムで暗号技術が利用されている。
【０００３】
暗号処理アルゴリズムには様々なものがあるが、基本的な技術の一つとして、共通鍵暗号がある。共通鍵暗号では、暗号化用の鍵と復号用の鍵が共通のものとなっている。暗号化処理、復号処理共に、その共通鍵から複数の鍵を生成し、例えばあるブロック単位、例えば６４ビット、１２８ビット、２５６ビット等のブロックデータ単位でデータ変換処理を繰り返し実行する。
【０００４】
共通鍵暗号のアルゴリズムとしては、過去の米国標準であるＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）や現在の米国標準であるＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が知られている。他にも様々な共通鍵暗号が現在も提案され続けており、２００７年にソニー株式会社が提案したＣＬＥＦＩＡも共通鍵暗号の一つである。
【０００５】
なお、共通鍵暗号について開示した従来技術として、例えば特許文献１（特開２０１２−２１５８１３号公報）等がある。
【０００６】
さらに、共通鍵暗号の一形態としてストリーム暗号がある。ストリーム暗号による暗号文生成処理は、以下のステップ（Ｓ１），（Ｓ２）を実行することで行われる。
（Ｓ１）秘密のパラメータである秘密鍵と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、キーストリームと呼ばれる擬似乱数系列を生成する。
（Ｓ２）平文と、生成したキーストリームの排他的論理和をとることにより、暗号文を生成する。
【０００７】
暗号文から平文を生成する処理は、以下のステップ（Ｓ３）、（Ｓ４）を実行する。
（Ｓ３）秘密のパラメータである秘密鍵と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、キーストリーム（擬似乱数系列）を生成する。
（Ｓ４）暗号文と、生成したキーストリームの排他的論理和をとることにより、平文を生成する。
【０００８】
平文生成処理において、ステップ（Ｓ４）で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
つまり、共通の秘密情報である「秘密鍵」を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
【０００９】
このストリーム暗号では、秘密鍵と、初期ベクトル（ＩＶ）から生成するキーストリームが必須要素となるが、このキーストリームを構成するビット値の偏りを利用した様々な攻撃が存在し、安全性に問題があるとの指摘がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−２１５８１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本開示は、例えば上述の状況に鑑みてなされたものであり、安全性の高いストリーム暗号を実現する暗号処理装置、および暗号処理方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本開示の第１の側面は、
暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、
前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理装置にある。
【００１３】
さらに、本開示の第２の側面は、
復号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する復号鍵データと、復号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、
前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する復号処理装置にある。
【００１４】
さらに、本開示の第３の側面は、
暗号処理装置において実行する暗号処理方法であり、
キーストリーム生成部が、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成ステップと、
演算部が、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算ステップを実行し、
前記キーストリーム生成ステップは、
擬似乱数生成部が、第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成ステップと、
線形フィードバックレジスタ（ＬＦＳＲ）が、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成するＬＦＳＲ出力データ生成ステップと、
排他的論理和演算部が、前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算ステップを有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理方法にある。
【００１５】
さらに、本開示の第４の側面は、
暗号処理装置において暗号処理を実行させるプログラムであり、
キーストリーム生成部に、暗号鍵データからなるデータストリームであるキーストリームを生成させるキーストリーム生成ステップと、
演算部に、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行させる演算ステップを実行させ、
前記プログラムは、前記キーストリーム生成ステップにおいて、
擬似乱数生成部に、第１の秘密鍵に基づいて擬似乱数を生成させる擬似乱数生成ステップと、
線形フィードバックレジスタ（ＬＦＳＲ）に、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成させるＬＦＳＲ出力データ生成ステップと、
排他的論理和演算部に、前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行させる排他的論理和演算ステップを実行させ、
前記排他的論理和演算部の出力をキーストリームとして出力させるプログラムにある。
【００１６】
なお、本開示のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置やコンピュータ・システムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータ・システム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。
【００１７】
本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００１８】
本開示の一実施例によれば、本開示の一実施例の構成によれば、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
具体的には、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、キーストリーム生成部は、第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、擬似乱数生成部の生成した疑似乱数と、ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、排他的論理和演算部の出力をキーストリームとして出力する。
本構成により、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、また付加的な効果があってもよい。
【図面の簡単な説明】
【００１９】
【図１】ストリーム暗号に従った暗号処理構成について説明する図である。
【図２】ストリーム暗号に叱った復号処理構成について説明する図である。
【図３】ストリーム暗号におけるキーストリームの偏りについて説明する図である。
【図４】ストリーム暗号におけるキーストリームの偏りを利用した攻撃例について説明する図である。
【図５】本開示の実施例１に従ったストリーム暗号を適用した暗号処理の例について説明する図である。
【図６】線形フィードバックシフトレジスタ（ＬＦＳＲ）の構成例について説明する図である。
【図７】線形フィードバックシフトレジスタ（ＬＦＳＲ）の構成例について説明する図である。
【図８】本開示の実施例１に従ったストリーム暗号を適用した復号処理の例について説明する図である。
【図９】本開示の実施例２に従ったストリーム暗号を適用した暗号処理の例について説明する図である。
【図１０】本開示の実施例２に従ったストリーム暗号を適用した復号処理の例について説明する図である。
【図１１】本開示の実施例３に従ったストリーム暗号を適用した暗号処理の例について説明する図である。
【図１２】鍵変換部の構成例について説明する図である。
【図１３】本開示の実施例３に従ったストリーム暗号を適用した復号処理の例について説明する図である。
【図１４】暗号処理装置としてのＩＣモジュール７００の構成例を示す図である。
【図１５】暗号処理実行機能を有するスマートフォンの構成例を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら本開示に係る暗号処理装置、および暗号処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
１．ストリーム暗号の概要について
２．安全性を高めたストリーム暗号の構成について
２−１．第２の秘密鍵（ＫＬ）に基づくＬＦＳＲ出力を適用してキーストリームを生成する実施例（実施例１）
２−２．秘密鍵（Ｋｓ）に基づくＬＦＳＲ出力を適用してキーストリームを生成する実施例（実施例２）
２−３．第１の秘密鍵（Ｋｓ）の変換データに基づくＬＦＳＲ出力を適用してキーストリームを生成する実施例（実施例３）
３．暗号処理装置の構成例について
４．本開示の構成のまとめ
【００２１】
［１．ストリーム暗号の概要について］
まず、ストリーム暗号の概要について説明する。
ストリーム暗号は、共通鍵暗号の一つである。
図１、図２を参照して、ストリーム暗号に従った暗号化処理と復号処理について説明する。
【００２２】
図１は、ストリーム暗号に従った暗号化処理について説明する図である。
キーストリーム生成部５０は、秘密鍵（Ｋｓ）１１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）１２を入力して、キーストリーム（擬似乱数）１３を生成する。
秘密鍵（Ｋｓ）１１と、初期ベクトル（ＩＶ）１２は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
秘密鍵（Ｋｓ）１１は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
一方、初期ベクトル（ＩＶ）１２は、公開データであり、不特定多数のユーザが知ることができるデータである。
【００２３】
キーストリーム生成部５０は、鍵スケジュール部５１と、擬似乱数生成部５２を有する。
鍵スケジュール部５１は、秘密鍵（Ｋｓ）１１と、初期ベクトル（ＩＶ）１２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部５２に出力する。
擬似乱数生成部５２は、鍵スケジュール部５１から入力する擬似乱数生成用初期データを適用して擬似乱数としてのキーストリーム１３を生成して出力する。
【００２４】
擬似乱数生成部５２の出力するキーストリーム１３は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚ１，Ｚ２，Ｚ３，・・・である。
擬似乱数生成部５２は、各々が所定長のデータからなるデータ列：Ｚ１，Ｚ２，Ｚ３，・・・をキーストリームとして順次、出力する。
【００２５】
キーストリーム構成要素である所定ビット単位のデータ：Ｚ１，Ｚ２，Ｚ３，・・・の各々と、暗号処理対象となる平文の所定データ単位の分割データ：Ｐ１，Ｐ２，Ｐ３・・・の各々が、順次、排他的論理和演算部５３に入力され、排他的論理和（ＸＯＲ）演算処理が実行される。
この排他的論理和演算結果として算出するデータ列：Ｃ１，Ｃ２，Ｃ３・・・を、暗号文２２として出力する。
【００２６】
暗号文Ｃ１，Ｃ２，Ｃ３・・・と、キーストリーム：Ｚ１，Ｚ２，Ｚ３・・・と、平文Ｐ１，Ｐ２，Ｐ３・・・との関係は以下の通りである。
Ｃ１＝Ｐ１（＋）Ｚ１
Ｃ２＝Ｐ２（＋）Ｚ２
Ｃ３＝Ｐ３（＋）Ｚ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータに設定される。
【００２７】
このように、ストリーム暗号による暗号文生成処理は、以下のステップ（Ｓ１），（Ｓ２）を実行することで行われる。
（Ｓ１）秘密のパラメータである秘密鍵と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、キーストリームと呼ばれる擬似乱数系列Ｚ１，Ｚ２，Ｚ３・・・を生成する。
（Ｓ２）平文の構成データＰ１，Ｐ２，Ｐ３・・・と、生成したキーストリームＺ１，Ｚ２，Ｚ３・・・の排他的論理和をとることにより、暗号文Ｃ１，Ｃ２，Ｃ３・・・を生成する。
【００２８】
図１を参照して説明した処理によって生成された暗号文２２は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図２は、ストリーム暗号に従った復号処理について説明する図である。
ストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実行可能である。
【００２９】
図２に示す構成において、キーストリーム生成部７０は、秘密鍵（Ｋｓ）４１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）４２を入力して、キーストリーム（擬似乱数）４３を生成する。
秘密鍵（Ｋｓ）４１と、初期ベクトル（ＩＶ）４２は、復号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
秘密鍵（Ｋｓ）４１は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
【００３０】
すなわち、復号対象とする暗号文２２が、図１に示す構成によって生成された暗号文２２である場合、秘密鍵（Ｋｓ）４１は、図１に示す暗号処理において適用した秘密鍵（Ｋｓ）１１と同一の鍵である。
一方、初期ベクトル（ＩＶ）１２は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文２２が、図１に示す構成によって生成された暗号文２２である場合、初期ベクトル（ＩＶ）４２も、図１に示す暗号処理において適用した初期ベクトル（ＩＶ）１２と同一のデータである。
【００３１】
キーストリーム生成部７０は、スケジュール部７１と、擬似乱数生成部７２を有する。
鍵スケジュール部７１は、秘密鍵（Ｋｓ）４１と、初期ベクトル（ＩＶ）４２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部７２に出力する。
擬似乱数生成部７２は、鍵スケジュール部７１から入力する擬似乱数生成用初期データを適用して擬似乱数としてのキーストリーム４３を生成して出力する。
なお、生成されるキーストリーム４３は、同一の秘密鍵（Ｋｓ）と同一の初期ベクトル（ＩＶ）を用いた場合、同一のデータとなる。
【００３２】
本例では、図２に示す構成において、秘密鍵（Ｋｓ）４１は、図１に示す秘密鍵（Ｋｓ）１１と同一であり、初期ベクトル（ＩＶ）４２は、図１に示す初期ベクトル（ＩＶ）１２同一である。従って、図２に示す構成において生成されるキーストリーム４３は、図１に示キーストリーム１３と同一のデータとなる。
【００３３】
擬似乱数生成部７２の出力するキーストリーム４３は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚ１，Ｚ２，Ｚ３，・・・である。
擬似乱数生成部７２は、各々が所定長のデータからなるデータ列：Ｚ１，Ｚ２，Ｚ３，・・・をキーストリームとして順次、出力する。
【００３４】
キーストリーム構成要素である所定ビット単位のデータ：Ｚ１，Ｚ２，Ｚ３，・・・の各々と、復号処理対象となる暗号文の所定データ単位の分割データ：Ｃ１，Ｃ２，Ｃ３・・・の各々が、排他的論理和演算部７３に順次、入力され、排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｐ１，Ｐ２，Ｐ３・・・が、復号結果としての平文２１となる。
【００３５】
平文Ｐ１，Ｐ２，ＰＣ３・・・と、キーストリーム：Ｚ１，Ｚ２，Ｚ３・・・と、暗号文Ｃ１，Ｃ２，Ｃ３・・・との関係は以下の通りである。
Ｐ１＝Ｃ１（＋）Ｚ１
Ｐ２＝Ｃ２（＋）Ｚ２
Ｐ３＝Ｃ３（＋）Ｚ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【００３６】
このように、ストリーム暗号による復号処理は、以下のステップ（Ｓ３）、（Ｓ４）を実行することで実行される。
（Ｓ３）秘密鍵と、初期ベクトル（ＩＶ）から、キーストリーム（擬似乱数系列）Ｚ１，Ｚ２，Ｚ３・・・を生成する。
（Ｓ４）暗号文Ｃ１，Ｃ２，Ｃ３・・・と、生成したキーストリームＺ１，Ｚ２，Ｚ３・・・の排他的論理和をとることにより、平文Ｐ１，Ｐ２，Ｐ３・・・を生成する。
【００３７】
平文生成処理において、ステップ（Ｓ４）で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
つまり、共通の秘密情報である「秘密鍵」を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
【００３８】
図１、図２を参照して説明したように、ストリーム暗号では、鍵スケジューリングアルゴリズムと、擬似乱数生成アルゴリズムを適用して生成されるキーストリームを用いて処理が行われる。
図１、図２に示す鍵スケジュール部５１，７１内で実行する鍵スケジューリングアルゴリズムでは、秘密鍵（Ｋｓ）と、初期ベクトル（ＩＶ）とから、擬似乱数生成用初期データを生成する。
擬似乱数生成用初期データは、擬似乱数生成部５２の内部状態と呼ばれる内部変数の初期値（初期状態）に相当する。なお、安全性の観点より、擬似乱数生成用初期データ（内部状態）のサイズは、秘密鍵（Ｋｓ）の２倍以上であることが求められる。
【００３９】
図１、図２に示す擬似乱数生成部５２，７２の実行する擬似乱数生成アルゴリズムでは、擬似乱数生成用初期データ（内部状態）を更新しながら各状態において固定長のキーストリームを構成するワードＺ１、Ｚ２、Ｚ３・・・、を順次、生成する。
ここでＺｉは、時刻ｉにおける擬似乱数生成部からの出力であり、サイズはアルゴリズムによって異なる。たとえば、ストリーム暗号ＲＣ４の場合には、各ワードのサイズは１バイト（８ビット）である。
【００４０】
キーストリーム生成部の構成は、その内部状態の構成の違いから、線形フィードバックシフトレジスタ型と状態遷移型に大別される。
線形フィードバック型は、その名の通り線形フィードバックシフトレジスタをベースにしており、線形フィルター関数と、非線形フィードバックシフトレジスタと組み合わせることで安全性を確保している。代表的なものとして、ＳＮＯＷ  ３Ｇ、  ＫＣｉｐｈｅｒ−２が挙げられる。
一方、状態遷移型はレジスタ内を非線形な関数により更新し、その一部をキーストリームとして出力する構成である。代表的なものとして、ＲＣ４が挙げられる。
【００４１】
ストリーム暗号に対する代表的な攻撃例として以下の各種の攻撃がある。
（１）識別攻撃：キーストリームを真性乱数と識別する攻撃、
（２）予測攻撃：未知のキーストリームを予測する攻撃、
（３）鍵回復攻撃：キーストリームから、秘密鍵を求める攻撃、
（４）内部状態復元攻撃：キーストリームから秘密鍵と等価な内部状態を求める攻撃、
基本的には、ストリーム暗号は上記の攻撃すべてに対して耐性を有していることが求められる。
【００４２】
特に上記の（３）鍵回復攻撃、および（４）内部状態復元攻撃、これらの攻撃は、キーストリームから、秘密鍵もしくはそれと等価な内部状態を求める攻撃である。これらの攻撃が成立すれば、すべての暗号文から平文情報を求めることができるため、非常に強力な攻撃方法である。
しかしながら、攻撃の前提として、攻撃者が十分な量（サイズ）のキーストリームの情報を知っていることが求められる。これは、攻撃者が、大量の平文暗号文ペアを保持しておく必要があることを意味する。この強い仮定のため、実際の利用においては脅威になりにくく、理論的な攻撃と考えられる。
【００４３】
一方、（１）識別攻撃は、キーストリームの統計的な偏りのみを利用する攻撃であり、実際に大きな脅威となりうることが指摘されている攻撃である。具体的には、異なる秘密鍵を適用して生成した暗号文を観測することのみで平文を回復することが可能となる。
【００４４】
（１）識別攻撃の具体例について、図３、図４を参照して説明する。この攻撃は、例えばキーストリームの偏りを利用した平文回復攻撃として実行される。
キーストリームの偏りの例について、図３を参照して説明する。
【００４５】
図３の左に示すキーストリーム生成部５０の構成は、図１、図２に示すキーストリーム生成部の構成と同一の構成である。
図３に示すキーストリーム生成部５０の生成するキーストリームの１つの構成要素（ワード）Ｚ２に着目する。
キーストリームの１つの構成要素（ワード）を１バイト（８ビット）とすると、Ｚ２の取り得る値は０〜２５５の２５６通りである。
【００４６】
理想的なランダム性が実現されている場合、Ｚ２の値の出現確率は、０〜２５５全て均一となり、図３の［（ａ）理想］のグラフに示すように、０〜２５５の各値の出現確率は全て等しく、１／２５６となる。
しかし、現実には、キーストリームの構成要素（ワード）の値の出現確率には偏りが発生する。
Ｚ２についての実際の出現確率の計測値は、図３の［（ｂ）現実］に示すグラフの通り、０の出現確率が他の値に比較して高くなっている。
図３には、キーストリームの構成要素（ワード）の１つであるＺ２についての検証結果を示しているが、その他のキーストリームの構成要素についても、それぞれ、出現しやすい値が存在する。
【００４７】
このような、キーストリームの統計的な偏りに基づいて、「ブロードキャスト・セッティング」を利用して、暗号文から平文を求めることが可能となる場合がある。
なお、「ブロードキャスト・セッティング」とは、"同じ平文を異なる鍵で暗号化し、暗号文を生成する状況"を意味する
【００４８】
「ブロードキャスト・セッティング」を利用して、暗号文から平文を求める攻撃の具体例について、図４を参照して説明する。
例えば、ある１つの平文Ｐを多数のユーザに同時に配信（ブロードキャスト）する場合、各ユーザに対応付けられた異なる秘密鍵ｋ１〜ｋｘを適用して、同一平文に対する暗号化処理を実行して、多数の暗号化データ（Ｃ１〜Ｃｘ）を生成して送信することが行われる。
【００４９】
Ｃ１＝Ｅ（ｋ１，Ｐ）
Ｃ２＝Ｅ（ｋ２，Ｐ）
・・・
Ｃｘ＝Ｅ（ｋｘ，Ｐ）
である。
ただし、Ｅ（ｋｉ，Ｐ）は、平文Ｐに対する鍵ｋｉを適用した暗号化処理を意味する。
【００５０】
同一平文Ｐに対して、多数の異なる鍵ｋ１〜ｋｘがネットワークを介して送信され他場合、悪意の第三者は、ネットワークを介した送受信データから、これらの多数の暗号化データ（Ｃ１＝Ｅ（ｋ１，Ｐ）〜Ｃｘ＝Ｅ（ｋｘ，Ｐ））を比較的容易に取得することができる。
キーストリームの統計的な偏りがあると、取得した多数の暗号化データの解析に基づく平文算出が容易になる。この攻撃が、「ブロードキャスト・セッティング」を利用した暗号文から平文を求める識別攻撃である。
【００５１】
この攻撃において、攻撃者は通信路上の暗号文を、ただ観測すればよいため、特別な仮定が必要ではなく、非常に強力な攻撃技術となる。
コンテンツをユーザごとの鍵で暗号化して、ネットワーク配信する処理は頻繁に行われており、この攻撃による損害は多大なものとなる恐れがある。
【００５２】
なお、同じ平文を異なる鍵で暗号化し、暗号文を生成する「ブロードキャスト・セッティング」では、多くの場合、各セッション単位で利用鍵が異なるが、複数セッションで同じ鍵を利用してメッセージを送信する「マルチセッション・セッティング」も多く利用されている。これは、インターネットで広く用いられているＳＳＬ／ＴＬＳのプロトコルがユースケースと考えられる。
【００５３】
図４を参照して説明した攻撃は、同一平文をベースとして異なる鍵で暗号化された複数の暗号文を集めるのみで実行可能な攻撃であり、例えばネットワーク配信されたデータを集めるのみで実行できるため、実際の脅威になる攻撃である。この攻撃を防ぐためには、ストリーム暗号において生成されるキーストリームに偏りを持たせないようにする必要がある。
出力に偏りが存在する場合には、図４を参照して説明した平文回復攻撃がやり易くなり、安全性が脅かされる。この脅威を防止するためには、何らかの対策をとる必要がある。
【００５４】
ストリーム暗号アルゴリズムにおける出力の偏りに起因する脆弱性を回避するための対策例としては、以下のようなものがある。
（１）別の安全なストリーム暗号に変更する。
もっとも単純な方法で、システム全体において、偏りのある弱いストリーム暗号を安全なストリーム暗号に変更することにより、脆弱性を取り除く。これにより、ブロードキャスト・セッティングにおいても、偏りによるキーストリームを利用した平文回復攻撃を完全に防ぐことができる。
【００５５】
（２）アルゴリズムに修正を加えて、脆弱性を取り除く
ストリーム暗号自体を入れ替えるのではなく、アルゴリズムの一部に修正を加えることにより、偏りのある出力が発生する脆弱性を取り除く。例えば、出力の偏りを取り除くための方法としては、擬似ランダム関数（ＭＡＣ関数等）を追加して、キーストリームを擬似ランダム置換に代入し、その出力を新しいキーストリームとすることで、脆弱性を取り除くことができる。
【００５６】
これらの対策を行うことにより、偏りのあるキーストリームの問題は解決でき、安全にストリーム暗号を利用可能である。しかしながらこれらの対策には以下の問題点がある。
【００５７】
（１）別の安全なストリーム暗号に変更する対策の問題点
すでに実装されている暗号をすべて変えることが必要となるため、費用的にも時間的にも大きなコストになる。また新規のハードウェアやソフトウェアの開発のコストもかかる。さらに、すでに出荷されているデバイスやシステムが、ネットワークにつながっていない場合には、ソフトウェア／ファームウェアアップデート等でも対応することが非常に難しい。特にハードウェアの変更はネットワーク経由でのアップデートは基本的にできず、コストが高い。
【００５８】
（２）アルゴリズムに修正を加えて、脆弱性を取り除く対策の問題点
方法（１）とは異なりアルゴリズムすべてを変更するわけではないため、変更のコストは方法（１）と比べて、比較的軽微になることが予想される。しかしながら、既存のアルゴリズムを修正する場合は高い専門知識が必要である。既存システムの設計者でない場合、設計理論のすべてを把握できないため、修正がかえって他の深刻的な脆弱性を招く可能性がある。また、実際に安全な暗号を運用したい場合には。安全性評価を実施する必要があるが、これにも多くの時間や高い専門性が必要になる。
また、修正することにより、パファーマンスが大幅に低下してしまった場合には、他のシステムと整合性が取れなくなり、システム全体のパファーマンスも不安定になる可能性がある。例えば、前述の擬似ランダム置換を用いる場合には、大幅な速度の低下が予想される。
【００５９】
［２．安全性を高めたストリーム暗号の構成について］
次に、上述した問題点を解決した安全性を強化した本開示のストリーム暗号の構成例について説明する。
【００６０】
本開示のストリーム暗号は、以下の特徴を持つ。
（ａ）追加実装コスト（ソフトウェア、ハードウェアとも）が低い。
（ｂ）安全性評価を簡単に行うことができる。
（ｃ）ストリーム暗号の実装性能（特に速度）を保つことが可能である。
【００６１】
本開示のストリーム暗号においては、既存のストリーム暗号において生成するキーストリームを変換して新たなキーストリームを生成する。
例えば、既存のストリーム暗号において生成するキーストリームに対して、所定の秘密情報を入力した線形フィードバックシフトレジスタ（ＬＦＳＲ：Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）の出力を、排他的論理和（ＸＯＲ）して新たなキーストリームを生成して利用する。この構成により、安全性の高いストリーム暗号を実現する。
【００６２】
なお、線形フィードバックシフトレジスタの内部状態のサイズは、ストリーム暗号において適用する秘密鍵（Ｋｓ）のサイズよりも大きいことが望ましい。具体的な実施例として、以下の３通りの実施例について、順次説明する。
【００６３】
（実施例１）線形フィードバックシフトレジスタ（ＬＦＳＲ）に、鍵スケジュール部に入力する秘密鍵（Ｋｓ）と異なる第２の秘密鍵（ＫＬ）を入力して、ＬＦＳＲの初期状態を設定する。秘密鍵（Ｋｓ）に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、第２の秘密鍵（ＫＬ）に基づくＬＦＳＲからの出力とを排他的論理和（ＸＯＲ）したデータをキーストリームとする実施例。
【００６４】
（実施例２）線形フィードバックシフトレジスタ（ＬＦＳＲ）に、鍵スケジュール部に入力する秘密鍵（Ｋｓ）と同じ秘密鍵（Ｋｓ）を入力して、ＬＦＳＲの初期状態を設定する。秘密鍵（Ｋｓ）に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵（Ｋｓ）に基づくＬＦＳＲからの出力とを排他的論理和（ＸＯＲ）したデータをキーストリームとする実施例。
【００６５】
（実施例３）線形フィードバックシフトレジスタ（ＬＦＳＲ）に、鍵スケジュール部に入力する秘密鍵（Ｋｓ）と同じ秘密鍵（Ｋｓ）を変換したデータ（Ｋｓ２）を入力して、ＬＦＳＲの初期状態を設定する。秘密鍵（Ｋｓ）に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵（Ｋｓ）の変換データ（Ｋｓ２）に基づくＬＦＳＲからの出力とを排他的論理和（ＸＯＲ）したデータをキーストリームとする実施例。
【００６６】
なお、線形フィードバックシフトレジスタ（ＬＦＳＲ）は以下の特徴を持つことが知られている。
（ａ）出力系列は決定的で、現在の内部状態を知っていれば次の状態は推測可能。
（ｂ）出力系列を観測することで、内部状態を復元することが可能。
また、本開示の各実施例において用いる線形フィードバックシフトレジスタ（ＬＦＳＲ）はさらに以下の特徴を持つことが望ましい。
（ｃ）０と１の出現確率が真性乱数と統計的に同じ。
以下、各実施例について、順次、説明する。
【００６７】
［２−１．第２の秘密鍵（ＫＬ）に基づくＬＦＳＲ出力を適用してキーストリームを生成する実施例（実施例１）］
まず、実施例１として、線形フィードバックシフトレジスタ（ＬＦＳＲ）に、鍵スケジュール部に入力する秘密鍵（Ｋｓ）と異なる第２の秘密鍵（ＫＬ）を入力して、ＬＦＳＲの初期状態を設定する実施例について説明する。
すなわち、秘密鍵（Ｋｓ）に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、第２の秘密鍵（ＫＬ）に基づくＬＦＳＲからの出力とを排他的論理和（ＸＯＲ）したデータをキーストリームとする実施例である。
【００６８】
図５に本実施例１の暗号処理を実行する暗号処理装置の構成例を示す。
キーストリーム生成部１１０は、第１秘密鍵（Ｋｓ）１３１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）１３２、さらに、第２秘密鍵（ＫＬ）１３３を入力して、キーストリーム（擬似乱数）１３６を生成する。
【００６９】
第１秘密鍵（Ｋｓ）１３１と、初期ベクトル（ＩＶ）１３２と、第２秘密鍵（ＫＬ）１３３は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第１秘密鍵（Ｋｓ）１３１と、第２秘密鍵（ＫＬ）１３３は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
また、第１秘密鍵（Ｋｓ）１３１と、第２秘密鍵（ＫＬ）１３３は、異なる鍵データである。
初期ベクトル（ＩＶ）１３２は、公開データであり、不特定多数のユーザが知ることができるデータである。
【００７０】
キーストリーム生成部１１０は、鍵スケジュール部１１１と、擬似乱数生成部１１２、さらに、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１と、排他的論理和（ＸＯＲ）演算部１２２を有する。
鍵スケジュール部１１１は、第１秘密鍵（Ｋｓ）１３１と、初期ベクトル（ＩＶ）１３２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部１１２に出力する。
擬似乱数生成部１１２は、鍵スケジュール部１１１から入力する擬似乱数生成用初期データを適用して擬似乱数１３４を生成して出力する。擬似乱数１３４は、図に示すＺａ１，Ｚａ２，・・・のデータシーケンスであり、例えば、Ｚａｉの各々が１バイト（８ビット）の擬似乱数シーケンス：Ｚａ１，Ｚａ２，・・・を生成して排他的論理和（ＸＯＲ）演算部１２２に出力する。
【００７１】
一方、第２秘密鍵（ＫＬ）１３３は、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に入力される。
線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１を構成するレジスタに、第２秘密鍵（ＫＬ）１３３の構成ビットがセットされる。この第２秘密鍵（ＫＬ）のセット状態をＬＦＳＲの初期状態とする。
その後、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１は、規定のシフト動作を順次、実行して、ＬＦＳＲ出力１３５を生成して出力する。
ＬＦＳＲ出力１３５は、図に示すＯ１，Ｏ２，・・・のデータシーケンスである。例えば、Ｏｉの各々が１バイト（８ビット）のＬＦＳＲ出力シーケンス：Ｏ１，Ｏ２，・・・を生成して排他的論理和（ＸＯＲ）演算部１２２に出力する。
【００７２】
線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に設定するレジスタ数（設定可能なビット数）は、第２秘密鍵（ＫＬ）の鍵長ｋ  ｂｉｔ以上とする（ｋ'とする）。周期も最長周期２ｋ'−１となるように、ＬＦＳＲ出力系列の特性を決める特性多項式は、ｋ'次の原始多項式を用いる。
【００７３】
線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１の構成例について、図６、図７を参照して説明する。
図６は、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に入力する第２秘密鍵（ＫＬ）１３３が１２８ビットデータであり、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１のレジスタ数（設定可能なビット数）も１２８としたＬＦＳＲの構成例である。
まず、レジスタＤ１〜Ｄ１２８の各々に第２秘密鍵（ＫＬ）１３３の構成ビットをセットする。この状態を初期状態とする。
その後、シフト処理として、
レジスタＤ１の格納ビット（Ｘ１）をレジスタＤ２、
レジスタＤ２の格納ビット（Ｘ２）をレジスタＤ３、
・・・
レジスタＤ１２７の格納ビット（Ｘ１２７）をレジスタＤ１２８、
このように１ビットシフトを行う。
【００７４】
レジスタＤ１には、以下のデータ（更新Ｄ１）を格納する。
更新Ｄ１＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９
なお、上記式において、（＋）は排他的論理和（ＸＯＲ）を意味する。
図６に示すＬＦＳＲは、出力系列の特性を決める特性多項式として、以下の原始多項式ｆ（ｘ）を用いたＬＦＳＲである。
ｆ（ｘ）＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９（＋）１
図６に示すＬＦＳＲは、この多項式ｆ（ｘ）によって規定される構造を持つＬＦＳＲである。
【００７５】
レジスタＤ１２８から１ビットデータが、順次、出力される。この出力ビットの所定単位のデータ、たとえば１バイト（８ビット）データを、１つのＬＦＳＲ出力Ｏｉとして設定する。
図５に示すＬＦＳＲ出力１３５は、各々が１バイト（８ビット）データからなるデータシーケンス：Ｏ１，Ｏ２，Ｏ３であり、これをＬＦＳＲ出力１３５として排他的論理和（ＸＯＲ）演算部１２２に出力する。
【００７６】
図６に示すＬＦＳＲは、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に入力する第２秘密鍵（ＫＬ）１３３が１２８ビットデータである場合のＬＦＳＲ構成例である。
次に、図７を参照して、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に入力する第２秘密鍵（ＫＬ）１３３が６４ビットデータである場合のＬＦＳＲ構成例について説明する。
【００７７】
図７は、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に入力する第２秘密鍵（ＫＬ）１３３が６４ビットデータであり、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１のレジスタ数（設定可能なビット数）も６４としたＬＦＳＲの構成例である。
【００７８】
図７に示すＬＦＳＲは、１ビットレジスタＤ１〜Ｄ６４を持つ。これらのレジスタＤ１〜Ｄ６４の各々に第２秘密鍵（ＫＬ）１３３の構成ビットをセットする。この状態を初期状態とする。
その後、シフト処理として、
レジスタＤ１の格納ビット（Ｘ１）をレジスタＤ２、
レジスタＤ２の格納ビット（Ｘ２）をレジスタＤ３、
・・・
レジスタＤ６３の格納ビット（Ｘ６３）をレジスタＤ６４、
このように１ビットシフトを行う。
【００７９】
レジスタＤ１には、以下のデータ（更新Ｄ１）を格納する。
更新Ｄ１＝Ｘ６４（＋）Ｘ６３（＋）Ｘ６１（＋）Ｘ６０
なお、上記式において、（＋）は排他的論理和（ＸＯＲ）を意味する。
図７に示すＬＦＳＲは、出力系列の特性を決める特性多項式として、以下の原始多項式ｆ（ｘ）を用いたＬＦＳＲである。
ｆ（ｘ）＝Ｘ６４（＋）Ｘ６３（＋）Ｘ６１（＋）Ｘ６０（＋）１
【００８０】
図７に示すＬＦＳＲは、上記の多項式ｆ（ｘ）によって規定される構造を持つＬＦＳＲである。
レジスタＤ６４から１ビットデータが、順次、出力される。この出力ビットの所定単位のデータ、たとえば１バイト（８ビット）データを、１つのＬＦＳＲ出力Ｏｉとして設定する。
【００８１】
図５に示す暗号処理構成において、ＬＦＳＲ出力１３５は、各々が１バイト（８ビット）データからなるデータシーケンス：Ｏ１，Ｏ２，Ｏ３であり、これをＬＦＳＲ出力１３５として排他的論理和（ＸＯＲ）演算部１２２に出力する。
【００８２】
図６、図７を参照して、第２秘密鍵（ＫＬ）が１２８ビット鍵である場合と、６４ビット鍵である場合のＬＦＳＲの構成例を説明した。図５に示すＬＦＳＲ１２１は、これらの他にも、第２秘密鍵（ＫＬ）１３３のビット長に応じた様々な設定が可能である。
【００８３】
図５に示す構成において、排他的論理和（ＸＯＲ）演算部１２２では、以下の２つのデータ（ａ），（ｂ）の排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
（ａ）第１秘密鍵（Ｋｓ）１３１に基づいて、鍵スケジュール部１１１、擬似乱数生成部１１２の処理によって生成された擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
（ｂ）第２秘密鍵（ＫＬ）１３３に基づいて、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１から出力されるＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
【００８４】
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・の各々と、ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・の各々のデータは、同一ビット数、例えば１バイト（８ビット）データである。
排他的論理和（ＸＯＲ）演算部１２２では、これら２つのデータ、すなわち、
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
これらのデータの排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・は、以下の算出式によって生成される。
Ｚｂ１＝Ｚａ１（＋）Ｏ１、
Ｚｂ２＝Ｚａ２（＋）Ｏ２、
Ｚｂ３＝Ｚａ３（＋）Ｏ３、
・・・
なお、上記式において、（＋）は排他的論理和演算（ＸＯＲ）を意味する。
【００８５】
キーストリーム１３６は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・である。
このように、キーストリーム生成部１１０の排他的論理和（ＸＯＲ）演算部１２２は、各々が所定長のデータからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・をキーストリームとして順次、出力する。
【００８６】
キーストリーム構成要素である所定ビット単位のデータ：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・の各々は、排他的論理和演算部１２３において、暗号処理対象となる平文１４１の所定データ単位の分割データ：Ｐ１，Ｐ２，Ｐ３・・・の各々と排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｃ１，Ｃ２，Ｃ３・・・を、暗号文１４２として出力する。
【００８７】
暗号文Ｃ１，Ｃ２，Ｃ３・・・と、キーストリーム：Ｚｂ１，Ｚｂ２，Ｚ３・・・と、平文Ｐ１，Ｐ２，Ｐ３・・・との関係は以下の通りである。
Ｃ１＝Ｐ１（＋）Ｚｂ１
Ｃ２＝Ｐ２（＋）Ｚｂ２
Ｃ３＝Ｐ３（＋）Ｚｂ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｂｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【００８８】
このように、本実施例１に従ったストリーム暗号による暗号文生成処理は、以下のステップ（Ｓａ１）〜（Ｓａ４）を実行することで行われる。
（Ｓａ１）秘密のパラメータである第１秘密鍵（Ｋｓ）と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・を生成する。
（Ｓａ２）秘密のパラメータである第２秘密鍵（ＫＬ）から、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・を生成する。
（Ｓａ３）擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・と、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・との排他的論理和（ＸＯＲ）により、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成する。
（Ｓａ４）平文の構成データＰ１，Ｐ２，Ｐ３・・・と、生成したキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・の排他的論理和をとることにより、暗号文Ｃ１，Ｃ２，Ｃ３・・・を生成する。
【００８９】
図５を参照して説明した処理によって生成された暗号文１４２は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図８は、本実施例１に従った復号処理について説明する図である。
本実施例１のストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実現される。
【００９０】
図８に示す構成において、キーストリーム生成部２１０は、第１秘密鍵（Ｋｓ）２３１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）２３２、さらに、第２秘密鍵（ＫＬ）２３３を入力して、キーストリーム（擬似乱数）２３６を生成する。
【００９１】
第１秘密鍵（Ｋｓ）２３１と、初期ベクトル（ＩＶ）２３２と、第２秘密鍵（ＫＬ）２３３は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第１秘密鍵（Ｋｓ）２３１と、第２秘密鍵（ＫＬ）２３３は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
すなわち、復号対象とする暗号文１４２が、図５に示す構成によって生成された暗号文１４２である場合、第１秘密鍵（Ｋｓ）２３１は、図５に示す暗号処理において適用した第１秘密鍵（Ｋｓ）１３１と同一の鍵である。
また、第２秘密鍵（ＫＬ）２３３は、図５に示す暗号処理において適用した第２秘密鍵（Ｋｓ）１３３と同一の鍵である。
【００９２】
一方、初期ベクトル（ＩＶ）２３２は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文１４２が、図５に示す構成によって生成された暗号文１４２である場合、初期ベクトル（ＩＶ）２３２も、図５に示す暗号処理において適用した初期ベクトル（ＩＶ）１３２と同一のデータである。
【００９３】
キーストリーム生成部２１０は、鍵スケジュール部２１１と、擬似乱数生成部２１２、さらに、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１と、排他的論理和（ＸＯＲ）演算部２２２を有する。
鍵スケジュール部２１１は、第１秘密鍵（Ｋｓ）２３１と、初期ベクトル（ＩＶ）２３２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部２１２に出力する。
擬似乱数生成部２１２は、鍵スケジュール部２１１から入力する擬似乱数生成用初期データを適用して擬似乱数２３４を生成して出力する。擬似乱数２３４は、図に示すＺａ１，Ｚａ２，・・・のデータシーケンスであり、例えば、Ｚａｉの各々が１バイト（８ビット）の擬似乱数シーケンス：Ｚａ１，Ｚａ２，・・・を生成して排他的論理和（ＸＯＲ）演算部２２２に出力する。
【００９４】
一方、第２秘密鍵（ＫＬ）２３３は、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１に入力される。
線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１を構成するレジスタに、第２秘密鍵（ＫＬ）２３３の構成ビットがセットされる。この第２秘密鍵（ＫＬ）のセット状態をＬＦＳＲの初期状態とする。
その後、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１は、規定のシフト動作を順次、実行して、ＬＦＳＲ出力２３５を生成して出力する。
ＬＦＳＲ出力２３５は、図に示すＯ１，Ｏ２，・・・のデータシーケンスであり、例えば、Ｏｉの各々が１バイト（８ビット）のＬＦＳＲ出力シーケンス：Ｏ１，Ｏ２，・・・を生成して排他的論理和（ＸＯＲ）演算部２２２に出力する。
【００９５】
図８に示すキーストリーム生成部２１０の構成は、図５を参照して説明したキーストリーム生成部１１０の構成と同一構成である。
線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１の具体例として図６、図７を参照して２つの例を説明したが、暗号処理に用いたＬＦＳＲと復号処理に用いるＬＦＳＲは同一構成とする。
図８に示すキーストリーム生成部２１０の構成を、図５を参照して説明したキーストリーム生成部１１０の構成と同一とし、入力する各データ、すなわち、第１秘密鍵（Ｋｓ）、初期ベクトル（ＩＶ）、第２秘密鍵（ＫＬ）を同一とすることで、いずれにおいても同一のキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・が生成される。
【００９６】
図８に示す構成において、排他的論理和（ＸＯＲ）演算部２２２では、以下の２つのデータ（ａ），（ｂ）の排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
（ａ）第１秘密鍵（Ｋｓ）２３１に基づいて、鍵スケジュール部２１１、擬似乱数生成部２１２の処理によって生成された擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
（ｂ）第２秘密鍵（ＫＬ）２３３に基づいて、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１から出力されるＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
【００９７】
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・の各々と、ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・の各々のデータは、同一ビット数、例えば１バイト（８ビット）データである。
排他的論理和（ＸＯＲ）演算部２２２では、これら２つのデータ、すなわち、
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
これらのデータの排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・は、以下の算出式によって生成される。
Ｚｂ１＝Ｚａ１（＋）Ｏ１、
Ｚｂ２＝Ｚａ２（＋）Ｏ２、
Ｚｂ３＝Ｚａ３（＋）Ｏ３、
・・・
なお、上記式において、（＋）は排他的論理和演算（ＸＯＲ）を意味する。
【００９８】
キーストリーム２３６は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・である。
このように、キーストリーム生成部２１０の排他的論理和（ＸＯＲ）演算部２２２は、各々が所定長のデータからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・をキーストリームとして順次、出力する。
【００９９】
キーストリーム構成要素である所定ビット単位のデータ：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・の各々は、排他的論理和演算部２２３において、復号処理対象となる暗号文１４２の所定データ単位の分割データ：Ｃ１，Ｃ２，Ｃ３・・・の各々と排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｐ１，Ｐ２，Ｐ３・・・が、復号結果としての平文１４１となる。
【０１００】
平文Ｐ１，Ｐ２，ＰＣ３・・・と、キーストリーム：Ｚｂ１，Ｚｂ２，Ｚｂ３・・・と、暗号文Ｃ１，Ｃ２，Ｃ３・・・との関係は以下の通りである。
Ｐ１＝Ｃ１（＋）Ｚｂ１
Ｐ２＝Ｃ２（＋）Ｚｂ２
Ｐ３＝Ｃ３（＋）Ｚｂ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｂｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【０１０１】
このように、本実施例１に従ったストリーム暗号による復号処理は、以下のステップ（Ｓｂ１）〜（Ｓｂ４）を実行することで行われる。
（Ｓｂ１）秘密のパラメータである第１秘密鍵（Ｋｓ）と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・を生成する。
（Ｓｂ２）秘密のパラメータである第２秘密鍵（ＫＬ）から、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・を生成する。
（Ｓｂ３）擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・と、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・との排他的論理和（ＸＯＲ）により、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成する。
（Ｓｂ４）暗号文Ｃ１，Ｃ２，Ｃ３・・・と、生成したキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・の排他的論理和をとることにより、平文の構成データＰ１，Ｐ２，Ｐ３・・・を生成する。
【０１０２】
平文生成処理において、ステップ（Ｓｂ４）で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
【０１０３】
なお、本実施例では、共通の秘密情報として、第１秘密鍵（Ｋｓ）と、第２秘密鍵（ＫＬ）を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
【０１０４】
この実施例１では、先に図１、図２を参照して説明した従来のストリーム暗号処理構成と比較して、例えば以下の優位性を持つ。
【０１０５】
（Ａ）安全性の優位性について
例えば、擬似乱数生成部１１２の出力する擬似乱数Ｚａ１，Ｚａ２，・・・に偏りがあった場合においても、偏りのあるこれらの擬似乱数Ｚａ１，Ｚａ２，・・・に対して、０、１の出現頻度が均一なＬＦＳＲの出力Ｏ１，Ｏ２・・・を、排他的論理和（ＸＯＲ）演算を施して新たなキーストリームＺｂ１，Ｚｂ２，・・・を生成することで、偏りを取り除くことができる。
【０１０６】
この偏りが除去されたキーストリームＺｂ１，Ｚｂ２，・・・を平文に対して適用するため、偏りのないキーストリームを適用した暗号処理が可能となる。
この処理によって、先に図４を参照して説明したブロードキャスト・セッティングを利用した平文回復攻撃を防ぐことができる。
【０１０７】
例えばＬＦＳＲ出力Ｏｉは、各々の値が等確率で生成されるため、ランダムに第１秘密鍵（Ｋｓ）と、第２秘密鍵（ＫＬ）が与えられる場合、第１秘密鍵（Ｋｓ）に基づいて生成される擬似乱数（Ｚｉ）、および第２秘密鍵（ＫＬ）に基づいて生成されるＬＦＳＲ出力（Ｏｉ）の値の分布は一様になる。
【０１０８】
また、仮にＬＦＳＲの出力が攻撃者に露呈した場合は、ＬＦＳＲの性質上、第２秘密鍵（ＫＬ）は露呈してしまう。しかしながら、第２秘密鍵（ＫＬ）の露呈は、第１秘密鍵（Ｋｓ）の露呈には影響しない。従って、全体の安全性は元々のストリーム暗号の安全性より低下しないことが保障される。なお、暗号文等からＬＦＳＲの出力を推定するためには、キーストリーム生成部内部の排他的論理和処理以前の擬似乱数系列の推定が必要となり、この推定は極めて困難となる。
【０１０９】
（Ｂ）実装コストの優位性について
本実施例１において用いる線形フィードバックシフトレジスタ（ＬＦＳＲ）はレジスタと排他的論理和（ＸＯＲ）演算処理構成のみで実装可能であり、Ｈ／Ｗ（ハードウェア）で構成した場合の実装コストが小さい。そのため、既存のシステムに付加しても大きなコストアップにならない。また。Ｓ／Ｗ（ソフトウェア）実装とした場合においても高速処理が可能であり、ＲＣ４など、既存のストリーム暗号のパフォーマンスを低下させない。さらにＬＦＳＲは同期を取るために必要なカウンターとして用いることも可能であり、他の用途に利用することもできる。
【０１１０】
なお、本実施例１を適用可能な既存のストリーム暗号の一例として、例えば、秘密鍵（Ｋｓ）として１２８ビット鍵を適用した１２８ビットキーＲＣ４がある。
この１２８ビットキーＲＣ４に本実施例１を適用する場合、秘密鍵（Ｋｓ）のサイズを１２８ビットとし、第２秘密鍵（ＫＬ）のビットサイズ、およびＬＦＳＲのレジスタ数（セット可能なビット数）のサイズを１２８ビット、ＬＦＳＲの周期を最大周期２１２８−１となるようにＬＦＳＲを選択する。
具体的には、ＬＦＳＲは、先に図６を参照して説明した構成とし、ＬＦＳＲの構成を規定する特性多項式は、以下の１２８次の原始多項式とする。
ｆ（ｘ）＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９（＋）１
【０１１１】
既存のストリーム暗号ＲＣ４に、例えば図６を参照して説明したＬＦＳＲと、排他的論理和演算部を付加することで、図５を参照して説明したキーストリーム生成部１１０を構成することが可能である。すなわち、既存の構成をそのまま利用して複数の構成要素を追加するのみで安全性を高めた暗号処理構成を実現することができる。
【０１１２】
［２−２．秘密鍵（Ｋｓ）に基づくＬＦＳＲ出力を適用してキーストリームを生成する実施例（実施例２）］
次に、実施例２として、線形フィードバックシフトレジスタ（ＬＦＳＲ）に、鍵スケジュール部に入力する秘密鍵（Ｋｓ）と同じ秘密鍵（Ｋｓ）を入力して、ＬＦＳＲの初期状態を設定する実施例について説明する。
すなわち、秘密鍵（Ｋｓ）に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵（Ｋｓ）に基づくＬＦＳＲからの出力とを排他的論理和（ＸＯＲ）したデータをキーストリームとする実施例である。
【０１１３】
図９に本実施例２の暗号処理を実行する暗号処理装置の構成例を示す。
図９に示すキーストリーム生成部１１０は、先に実施例１の構成として説明した図５に示すキーストリーム生成部１１０と同一の構成である。
図１に示す構成との差異は、図９に示すキーストリーム生成部１１０の線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に対して、第１秘密鍵（Ｋｓ）を入力している点である。
【０１１４】
すなわち、実施例２では、図５に示す第２秘密鍵（ＫＬ）１３３を用いず、第１秘密鍵（Ｋｓ）を鍵スケジュール部１１１と、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１の双方に入力する。
【０１１５】
図９に示すキーストリーム生成部１１０は、第１秘密鍵（Ｋｓ）１３１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）１３２を入力して、キーストリーム（擬似乱数）１３６を生成する。
【０１１６】
キーストリーム生成部１１０は、鍵スケジュール部１１１と、擬似乱数生成部１１２、さらに、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１と、排他的論理和（ＸＯＲ）演算部１２２を有する。
鍵スケジュール部１１１は、第１秘密鍵（Ｋｓ）１３１と、初期ベクトル（ＩＶ）１３２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部１１２に出力する。
擬似乱数生成部１１２は、鍵スケジュール部１１１から入力する擬似乱数生成用初期データを適用して擬似乱数１３４を生成して出力する。擬似乱数１３４は、図に示すＺａ１，Ｚａ２，・・・のデータシーケンスであり、例えば、Ｚａｉの各々が１バイト（８ビット）の擬似乱数シーケンス：Ｚａ１，Ｚａ２，・・・を生成して排他的論理和（ＸＯＲ）演算部１２２に出力する。
【０１１７】
さらに、第１秘密鍵（Ｋｓ）１３１は、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に入力される。
線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１を構成するレジスタに、第１秘密鍵（Ｋｓ）１３１の構成ビットがセットされる。この第１秘密鍵（Ｋｓ）のセット状態をＬＦＳＲの初期状態とする。
その後、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１は、規定のシフト動作を順次、実行して、ＬＦＳＲ出力１３５を生成して出力する。
ＬＦＳＲ出力１３５は、図に示すＯ１，Ｏ２，・・・のデータシーケンスであり、例えば、Ｏｉの各々が１バイト（８ビット）のＬＦＳＲ出力シーケンス：Ｏ１，Ｏ２，・・・を生成して排他的論理和（ＸＯＲ）演算部１２２に出力する。
【０１１８】
線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１に設定するレジスタ数（設定可能なビット数）は、第１秘密鍵（Ｋｓ）の鍵長ｋ  ｂｉｔ以上とする（ｋ'とする）。周期も最大周期２ｋ'−１となるように、出力系列の特性を決める特性多項式は原始多項式を用いる。
具体的には、例えば、先に図６、図７を参照して説明した構成を持つ。
【０１１９】
排他的論理和（ＸＯＲ）演算部１２２では、以下の２つのデータ（ａ），（ｂ）の排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
（ａ）第１秘密鍵（Ｋｓ）１３１に基づいて、鍵スケジュール部１１１、擬似乱数生成部１１２の処理によって生成された擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
（ｂ）第１秘密鍵（Ｋｓ）１３１に基づいて、線形フィードバックシフトレジスタ（ＬＦＳＲ）１２１から出力されるＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
【０１２０】
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・の各々と、ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・の各々のデータは、同一ビット数、例えば１バイト（８ビット）データである。
排他的論理和（ＸＯＲ）演算部１２２では、これら２つのデータ、すなわち、
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
これらのデータの排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・は、以下の算出式によって生成される。
Ｚｂ１＝Ｚａ１（＋）Ｏ１、
Ｚｂ２＝Ｚａ２（＋）Ｏ２、
Ｚｂ３＝Ｚａ３（＋）Ｏ３、
・・・
なお、上記式において、（＋）は排他的論理和演算（ＸＯＲ）を意味する。
【０１２１】
キーストリーム１３６は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・である。
このように、キーストリーム生成部１１０の排他的論理和（ＸＯＲ）演算部１２２は、各々が所定長のデータからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・をキーストリームとして順次、出力する。
【０１２２】
キーストリーム構成要素である所定ビット単位のデータ：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・の各々は、排他的論理和演算部１２３において、暗号処理対象となる平文１４１の所定データ単位の分割データ：Ｐ１，Ｐ２，Ｐ３・・・の各々と排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｃ１，Ｃ２，Ｃ３・・・を、暗号文１４２として出力する。
【０１２３】
暗号文Ｃ１，Ｃ２，Ｃ３・・・と、キーストリーム：Ｚｂ１，Ｚｂ２，Ｚ３・・・と、平文Ｐ１，Ｐ２，Ｐ３・・・との関係は以下の通りである。
Ｃ１＝Ｐ１（＋）Ｚｂ１
Ｃ２＝Ｐ２（＋）Ｚｂ２
Ｃ３＝Ｐ３（＋）Ｚｂ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｂｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【０１２４】
このように、本実施例２に従ったストリーム暗号による暗号文生成処理は、以下のステップ（Ｓａ１）〜（Ｓａ４）を実行することで行われる。
（Ｓａ１）秘密のパラメータである第１秘密鍵（Ｋｓ）と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・を生成する。
（Ｓａ２）秘密のパラメータである第１秘密鍵（Ｋｓ）から、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・を生成する。
（Ｓａ３）擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・と、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・との排他的論理和（ＸＯＲ）により、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成する。
（Ｓａ４）平文の構成データＰ１，Ｐ２，Ｐ３・・・と、生成したキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・の排他的論理和をとることにより、暗号文Ｃ１，Ｃ２，Ｃ３・・・を生成する。
【０１２５】
図９を参照して説明した処理によって生成された暗号文１４２は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図１０は、本実施例２に従った復号処理について説明する図である。
本実施例２のストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実現される。
【０１２６】
図１０に示す構成において、キーストリーム生成部２１０は、第１秘密鍵（Ｋｓ）２３１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）２３２を入力して、キーストリーム（擬似乱数）２３６を生成する。
【０１２７】
第１秘密鍵（Ｋｓ）２３１と、初期ベクトル（ＩＶ）２３２は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第１秘密鍵（Ｋｓ）２３１は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
一方、初期ベクトル（ＩＶ）２３２は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文１４２が、図９に示す構成によって生成された暗号文１４２である場合、初期ベクトル（ＩＶ）２３２も、図９に示す暗号処理において適用した初期ベクトル（ＩＶ）１３２と同一のデータである。
【０１２８】
キーストリーム生成部２１０は、鍵スケジュール部２１１と、擬似乱数生成部２１２、さらに、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１と、排他的論理和（ＸＯＲ）演算部２２２を有する。
鍵スケジュール部２１１は、第１秘密鍵（Ｋｓ）２３１と、初期ベクトル（ＩＶ）２３２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部２１２に出力する。
擬似乱数生成部２１２は、鍵スケジュール部２１１から入力する擬似乱数生成用初期データを適用して擬似乱数２３４を生成して出力する。擬似乱数２３４は、図に示すＺａ１，Ｚａ２，・・・のデータシーケンスであり、例えば、Ｚａｉの各々が１バイト（８ビット）の擬似乱数シーケンス：Ｚａ１，Ｚａ２，・・・を生成して排他的論理和（ＸＯＲ）演算部２２２に出力する。
【０１２９】
さらに、第１秘密鍵（Ｋｓ）２３１は、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１に入力される。
線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１を構成するレジスタに、第１秘密鍵（Ｋｓ）２３１の構成ビットがセットされる。この第１秘密鍵（Ｋｓ）のセット状態をＬＦＳＲの初期状態とする。
その後、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１は、規定のシフト動作を順次、実行して、ＬＦＳＲ出力２３５を生成して出力する。
ＬＦＳＲ出力２３５は、図に示すＯ１，Ｏ２，・・・のデータシーケンスであり、例えば、Ｏｉの各々が１バイト（８ビット）のＬＦＳＲ出力シーケンス：Ｏ１，Ｏ２，・・・を生成して排他的論理和（ＸＯＲ）演算部２２２に出力する。
【０１３０】
図１０に示すキーストリーム生成部２１０の構成は、図９を参照して説明したキーストリーム生成部１１０の構成と同一構成である。
線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１の具体例として図６、図７を参照して２つの例を説明したが、暗号処理に用いたＬＦＳＲと復号処理に用いるＬＦＳＲは同一構成とする。
図１０に示すキーストリーム生成部２１０の構成を、図９を参照して説明したキーストリーム生成部１１０の構成と同一とし、入力する各データ、すなわち、第１秘密鍵（Ｋｓ）、初期ベクトル（ＩＶ）を同一とすることで、いずれにおいても同一のキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・が生成される。
【０１３１】
図１０に示す構成において、排他的論理和（ＸＯＲ）演算部２２２では、以下の２つのデータ（ａ），（ｂ）の排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
（ａ）第１秘密鍵（Ｋｓ）２３１に基づいて、鍵スケジュール部２１１、擬似乱数生成部２１２の処理によって生成された擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
（ｂ）第１秘密鍵（Ｋｓ）２３１に基づいて、線形フィードバックシフトレジスタ（ＬＦＳＲ）２２１から出力されるＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
【０１３２】
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・の各々と、ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・の各々のデータは、同一ビット数、例えば１バイト（８ビット）データである。
排他的論理和（ＸＯＲ）演算部２２２では、これら２つのデータ、すなわち、
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
これらのデータの排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・は、以下の算出式によって生成される。
Ｚｂ１＝Ｚａ１（＋）Ｏ１、
Ｚｂ２＝Ｚａ２（＋）Ｏ２、
Ｚｂ３＝Ｚａ３（＋）Ｏ３、
・・・
なお、上記式において、（＋）は排他的論理和演算（ＸＯＲ）を意味する。
【０１３３】
キーストリーム２３６は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・である。
このように、キーストリーム生成部２１０の排他的論理和（ＸＯＲ）演算部２２２は、各々が所定長のデータからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・をキーストリームとして順次、出力する。
【０１３４】
キーストリーム構成要素である所定ビット単位のデータ：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・の各々は、排他的論理和演算部２２３において、復号処理対象となる暗号文１４１の所定データ単位の分割データ：Ｃ１，Ｃ２，Ｃ３・・・の各々と排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｐ１，Ｐ２，Ｐ３・・・が、復号結果としての平文１４２となる。
【０１３５】
平文Ｐ１，Ｐ２，ＰＣ３・・・と、キーストリーム：Ｚｂ１，Ｚｂ２，Ｚｂ３・・・と、暗号文Ｃ１，Ｃ２，Ｃ３・・・との関係は以下の通りである。
Ｐ１＝Ｃ１（＋）Ｚｂ１
Ｐ２＝Ｃ２（＋）Ｚｂ２
Ｐ３＝Ｃ３（＋）Ｚｂ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｂｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【０１３６】
このように、本実施例２に従ったストリーム暗号による復号処理は、以下のステップ（Ｓｂ１）〜（Ｓｂ４）を実行することで行われる。
（Ｓｂ１）秘密のパラメータである第１秘密鍵（Ｋｓ）と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・を生成する。
（Ｓｂ２）秘密のパラメータである第１秘密鍵（Ｋｓ）から、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・を生成する。
（Ｓｂ３）擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・と、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・との排他的論理和（ＸＯＲ）により、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成する。
（Ｓｂ４）暗号文Ｃ１，Ｃ２，Ｃ３・・・と、生成したキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・の排他的論理和をとることにより、平文の構成データＰ１，Ｐ２，Ｐ３・・・を生成する。
【０１３７】
平文生成処理において、ステップ（Ｓｂ４）で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
【０１３８】
なお、本実施例では、共通の秘密情報として、第１秘密鍵（Ｋｓ）を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
【０１３９】
この実施例２では、先に図１、図２を参照して説明した従来のストリーム暗号処理構成と比較して、例えば以下の優位性を持つ。
【０１４０】
（Ａ）安全性の優位性について
例えば、図９に示す擬似乱数生成部１１２の出力する擬似乱数Ｚａ１，Ｚａ２，・・・に偏りがあった場合においても、偏りのあるこれらの擬似乱数Ｚａ１，Ｚａ２，・・・に対して、０、１の出現頻度が均一なＬＦＳＲの出力Ｏ１，Ｏ２・・・を、排他的論理和（ＸＯＲ）演算を施して新たなキーストリームＺｂ１，Ｚｂ２，・・・を生成することで、偏りを取り除くことができる。
【０１４１】
この偏りが除去されたキーストリームＺｂ１，Ｚｂ２，・・・を平文に対して適用するため、偏りのないキーストリームを適用した暗号処理が可能となる。
この処理によって、先に図４を参照して説明したブロードキャスト・セッティングを利用した平文回復攻撃を防ぐことができる。
【０１４２】
例えばＬＦＳＲ出力Ｏｉは、各々の値が等確率で生成されるため、ランダムに第１秘密鍵（Ｋｓ）が与えられる場合、第１秘密鍵（Ｋｓ）に基づいて生成される擬似乱数（Ｚｉ）、およびＬＦＳＲ出力（Ｏｉ）の値の分布は一様になる。
【０１４３】
また、仮にＬＦＳＲの出力が攻撃者に露呈した場合は、ＬＦＳＲの性質上、第１秘密鍵（Ｋｓ）は露呈してしまう。しかしながら、暗号文等からＬＦＳＲの出力推定には、キーストリーム生成部内部の排他的論理和処理以前の擬似乱数系列の推定も必要となり、この推定は極めて困難である。
【０１４４】
（Ｂ）実装コストの優位性について
本実施例２において用いる線形フィードバックシフトレジスタ（ＬＦＳＲ）はレジスタと排他的論理和（ＸＯＲ）演算処理構成のみで実装可能であり、Ｈ／Ｗ（ハードウェア）で構成した場合の実装コストが小さい。そのため、既存のシステムに付加しても大きなコストアップにならない。また。Ｓ／Ｗ（ソフトウェア）実装とした場合においても高速処理が可能である。また、新たな鍵も必要なく、ＬＦＳＲを追加するのみでよいので、実装コストを最小限に抑えることが可能である。
【０１４５】
なお、本実施例２を適用可能な既存のストリーム暗号の一例として、例えば、秘密鍵（Ｋｓ）として１２８ビット鍵を適用した１２８ビットキーＲＣ４がある。
この１２８ビットキーＲＣ４に本実施例２を適用する場合、秘密鍵（Ｋｓ）のサイズを１２８ビットとし、ＬＦＳＲのレジスタ数（セット可能なビット数）のサイズは１２８ビット、周期は最大周期２１２８−１となるようにＬＦＳＲを選択する。
具体的には、ＬＦＳＲは、先に図６を参照して説明した構成とし、ＬＦＳＲの出力系列を決める特性多項式は、以下の１２８次の原始多項式とする。
ｆ（ｘ）＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９（＋）１
【０１４６】
既存のストリーム暗号ＲＣ４に、図６を参照して説明したＬＦＳＲと、排他的論理和演算部を付加することで、図９を参照して説明したキーストリーム生成部１１０を構成することが可能である。すなわち、既存の構成をそのまま利用してわずかな構成追加を行うのみで、安全性を高めた暗号処理構成を実現することができる。
【０１４７】
［２−３．第１の秘密鍵（Ｋｓ）の変換データに基づくＬＦＳＲ出力を適用してキーストリームを生成する実施例（実施例３）］
次に、実施例３として、線形フィードバックシフトレジスタ（ＬＦＳＲ）に、鍵スケジュール部に入力する秘密鍵（Ｋｓ）と同じ秘密鍵（Ｋｓ）を変換したデータ（Ｋｓ２）を入力して、ＬＦＳＲの初期状態を設定する実施例について説明する。
すなわち、秘密鍵（Ｋｓ）に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵（Ｋｓ）の変換データ（Ｋｓ２）に基づくＬＦＳＲからの出力とを排他的論理和（ＸＯＲ）したデータをキーストリームとする実施例である。
【０１４８】
図１１に本実施例３の暗号処理を実行する暗号処理装置の構成例を示す。
図１１に示すキーストリーム生成部５１０は、先に実施例１の構成として説明した図５に示すキーストリーム生成部１１０に、鍵変換部５２１を追加した構成を持つ。
さらに、図１に示す構成との差異は、図１１に示すキーストリーム生成部５１０の線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２の前段に追加した鍵変換部５２１に第１秘密鍵（Ｋｓ）を入力している点である。
【０１４９】
すなわち、実施例３では、実施例２と同様、図５に示す第２秘密鍵（ＫＬ）１３３を用いず、第１秘密鍵（Ｋｓ）を、スケジュール部５１１と、線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２の前段の鍵変換部５２１の双方に入力する構成を持つ。
【０１５０】
図１１に示すキーストリーム生成部５１０は、第１秘密鍵（Ｋｓ）５３１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）５３２を入力して、キーストリーム（擬似乱数）５３６を生成する。
【０１５１】
キーストリーム生成部５１０は、鍵スケジュール部５１１と、擬似乱数生成部５１２、さらに、鍵変換部５２１と、線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２、排他的論理和（ＸＯＲ）演算部５２３を有する。
鍵スケジュール部５１１は、第１秘密鍵（Ｋｓ）５３１と、初期ベクトル（ＩＶ）５３２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部５１２に出力する。
擬似乱数生成部５１２は、鍵スケジュール部５１１から入力する擬似乱数生成用初期データを適用して擬似乱数５３４を生成して出力する。擬似乱数５３４は、図に示すＺａ１，Ｚａ２，・・・のデータシーケンスであり、例えば、Ｚａｉの各々が１バイト（８ビット）の擬似乱数シーケンス：Ｚａ１，Ｚａ２，・・・を生成して排他的論理和（ＸＯＲ）演算部５２３に出力する。
【０１５２】
さらに、第１秘密鍵（Ｋｓ）５３１は、鍵変換部５２１に入力される。
鍵変換部５２１の具体的な一構成例を図１２に示す。
鍵変換部５２１は、図１２に示すように、ハッシュ関数（ＳＨＡ−１）実行部５５１、ビット数調整部５５２を有する。
【０１５３】
ハッシュ関数（ＳＨＡ−１）実行部５５１は、入力データである第１秘密鍵（Ｋｓ）に対して、たとえばＳＨＡ−１等のハッシュ関数を適用して、ハッシュデータを生成する。
ビット数調整部５５２は、ハッシュ関数実行部５５１からの入力に対して、ビット数調整処理を実行し、ビット数調整後の鍵変換データを線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２に入力する。
【０１５４】
具体的には、例えば、第１秘密鍵（Ｋｓ）５３１が１２８ビットデータである場合、ハッシュ関数（ＳＨＡ−１）実行部５５１は、入力データである第１秘密鍵（Ｋｓ）に対して、たとえばＳＨＡ−１等の一方向性ハッシュ関数を適用して、１６０ビットのハッシュデータを生成する。
ビット数調整部５５２は、ハッシュ関数実行部５５１から入力する１６０ビットデータに対して、ビット数調整処理を実行し、１２８ビットの変換鍵データ（Ｋｓ２）を生成して線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２に入力する。
なお、図１２に示す鍵変換部５２１の構成は一例であり、鍵データ変換部５２１は、この他の構成を適用して、入力鍵データを変換する構成としてもよい。
【０１５５】
鍵データ変換部５２１が、第１秘密鍵（Ｋｓ）５３１に基づいて生成した変換鍵データ（Ｋｓ２）は、線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２に入力される。
線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２を構成するレジスタに、第１秘密鍵（Ｋｓ）５３１に基づいて生成された変換鍵データ（Ｋｓ２）の構成ビットがセットされる。この変換鍵データ（Ｋｓ２）のセット状態をＬＦＳＲの初期状態とする。
その後、線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２は、規定のシフト動作を順次、実行して、ＬＦＳＲ出力５３５を生成して出力する。
ＬＦＳＲ出力５３５は、図に示すＯ１，Ｏ２，・・・のデータシーケンスであり、例えば、Ｏｉの各々が１バイト（８ビット）のＬＦＳＲ出力シーケンス：Ｏ１，Ｏ２，・・・を生成して排他的論理和（ＸＯＲ）演算部５２３に出力する。
【０１５６】
線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２に設定するレジスタ数（設定可能なビット数）は、第１秘密鍵（Ｋｓ）の鍵長ｋ  ｂｉｔ以上とする（ｋ'とする）。周期も最大周期２ｋ'−１となるように、特性多項式は原始多項式を用いる。
具体的には、例えば、先に図６、図７を参照して説明した構成を持つ。
【０１５７】
排他的論理和（ＸＯＲ）演算部５２３では、以下の２つのデータ（ａ），（ｂ）の排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
（ａ）第１秘密鍵（Ｋｓ）５３１に基づいて、鍵スケジュール部５１１、擬似乱数生成部５１２の処理によって生成された擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
（ｂ）第１秘密鍵（Ｋｓ）５３１に基づく変換鍵データ（Ｋｓ２）に基づいて、線形フィードバックシフトレジスタ（ＬＦＳＲ）５２２から出力されるＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
【０１５８】
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・の各々と、ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・の各々のデータは、同一ビット数、例えば１バイト（８ビット）データである。
排他的論理和（ＸＯＲ）演算部５２３では、これら２つのデータ、すなわち、
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
これらのデータの排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・は、以下の算出式によって生成される。
Ｚｂ１＝Ｚａ１（＋）Ｏ１、
Ｚｂ２＝Ｚａ２（＋）Ｏ２、
Ｚｂ３＝Ｚａ３（＋）Ｏ３、
・・・
なお、上記式において、（＋）は排他的論理和演算（ＸＯＲ）を意味する。
【０１５９】
キーストリーム５３６は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・である。
このように、キーストリーム生成部５１０の排他的論理和（ＸＯＲ）演算部５２３は、各々が所定長のデータからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・をキーストリームとして順次、出力する。
【０１６０】
キーストリーム構成要素である所定ビット単位のデータ：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・の各々は、排他的論理和演算部５２４において、暗号処理対象となる平文１４１の所定データ単位の分割データ：Ｐ１，Ｐ２，Ｐ３・・・の各々と排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｃ１，Ｃ２，Ｃ３・・・を、暗号文５４２として出力する。
【０１６１】
暗号文Ｃ１，Ｃ２，Ｃ３・・・と、キーストリーム：Ｚｂ１，Ｚｂ２，Ｚ３・・・と、平文Ｐ１，Ｐ２，Ｐ３・・・との関係は以下の通りである。
Ｃ１＝Ｐ１（＋）Ｚｂ１
Ｃ２＝Ｐ２（＋）Ｚｂ２
Ｃ３＝Ｐ３（＋）Ｚｂ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｂｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【０１６２】
このように、本実施例３に従ったストリーム暗号による暗号文生成処理は、以下のステップ（Ｓａ１）〜（Ｓａ４）を実行することで行われる。
（Ｓａ１）秘密のパラメータである第１秘密鍵（Ｋｓ）と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・を生成する。
（Ｓａ２）秘密のパラメータである第１秘密鍵（Ｋｓ）の変換処理を実行して変換鍵データ（Ｋｓ２）を生成し、変換鍵データ（Ｋｓ２）から、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・を生成する。
（Ｓａ３）擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・と、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・との排他的論理和（ＸＯＲ）により、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成する。
（Ｓａ４）平文の構成データＰ１，Ｐ２，Ｐ３・・・と、生成したキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・の排他的論理和をとることにより、暗号文Ｃ１，Ｃ２，Ｃ３・・・を生成する。
【０１６３】
図１１を参照して説明した処理によって生成された暗号文５４２は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図１３は、本実施例３に従った復号処理について説明する図である。
本実施例３のストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実現される。
【０１６４】
図１３に示す構成において、キーストリーム生成部６１０は、第１秘密鍵（Ｋｓ）６３１と、初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）６３２を入力して、キーストリーム（擬似乱数）６３６を生成する。
【０１６５】
第１秘密鍵（Ｋｓ）６３１と、初期ベクトル（ＩＶ）６３２は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第１秘密鍵（Ｋｓ）６３１は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
一方、初期ベクトル（ＩＶ）６３２は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文５４２が、図１１に示す構成によって生成された暗号文５４２である場合、初期ベクトル（ＩＶ）６３２も、図１１に示す暗号処理において適用した初期ベクトル（ＩＶ）５３２と同一のデータである。
【０１６６】
キーストリーム生成部６１０は、鍵スケジュール部６１１と、擬似乱数生成部６１２、さらに、鍵変換部６２１、線形フィードバックシフトレジスタ（ＬＦＳＲ）６２２、排他的論理和（ＸＯＲ）演算部６２３を有する。
鍵スケジュール部６１１は、第１秘密鍵（Ｋｓ）６３１と、初期ベクトル（ＩＶ）６３２に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部６１２に出力する。
擬似乱数生成部６１２は、鍵スケジュール部６１１から入力する擬似乱数生成用初期データを適用して擬似乱数６３４を生成して出力する。擬似乱数６３４は、図に示すＺａ１，Ｚａ２，・・・のデータシーケンスであり、例えば、Ｚａｉの各々が１バイト（８ビット）の擬似乱数シーケンス：Ｚａ１，Ｚａ２，・・・を生成して排他的論理和（ＸＯＲ）演算部６２３に出力する。
【０１６７】
さらに、第１秘密鍵（Ｋｓ）６３１は、鍵変換部６２１に入力される。
鍵変換部６２１は、図１１の構成における鍵変換部５２１と同一の構成を持つ。すなわち、例えば図１２に示すように、ハッシュ関数（ＳＨＡ−１）実行部５５１、ビット数調整部５５２によって構成される。
鍵データ変換部６２１が、第１秘密鍵（Ｋｓ）６３１に基づいて生成した変換鍵データ（Ｋｓ２）は、線形フィードバックシフトレジスタ（ＬＦＳＲ）６２２に入力される。
【０１６８】
線形フィードバックシフトレジスタ（ＬＦＳＲ）６２２を構成するレジスタに、第１秘密鍵（Ｋｓ）６３１に基づいて生成された変換鍵データ（Ｋｓ２）の構成ビットがセットされる。この変換鍵データ（Ｋｓ２）のセット状態をＬＦＳＲの初期状態とする。
その後、線形フィードバックシフトレジスタ（ＬＦＳＲ）６２２は、規定のシフト動作を順次、実行して、ＬＦＳＲ出力６３５を生成して出力する。
ＬＦＳＲ出力６３５は、図に示すＯ１，Ｏ２，・・・のデータシーケンスであり、例えば、Ｏｉの各々が１バイト（８ビット）のＬＦＳＲ出力シーケンス：Ｏ１，Ｏ２，・・・を生成して排他的論理和（ＸＯＲ）演算部６２３に出力する。
【０１６９】
図１３に示すキーストリーム生成部６１０の構成は、図１１を参照して説明したキーストリーム生成部５１０の構成と同一構成である。
線形フィードバックシフトレジスタ（ＬＦＳＲ）６２２は、例えば、先に具体例として説明した図６、図７に示す構成を持つ。なお、暗号処理に用いたＬＦＳＲと復号処理に用いるＬＦＳＲは同一構成とする。
図１３に示すキーストリーム生成部６１０の構成を、図１１を参照して説明したキーストリーム生成部５１０の構成と同一とし、入力する各データ、すなわち、第１秘密鍵（Ｋｓ）、初期ベクトル（ＩＶ）を同一とすることで、いずれにおいても同一のキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・が生成される。
【０１７０】
図１３に示す構成において、排他的論理和（ＸＯＲ）演算部６２３では、以下の２つのデータ（ａ），（ｂ）の排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
（ａ）第１秘密鍵（Ｋｓ）６３１に基づいて、鍵スケジュール部６１１、擬似乱数生成部６１２の処理によって生成された擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
（ｂ）第１秘密鍵（Ｋｓ）６３１に基づく変換鍵データ（Ｋｓ２）に基づいて、線形フィードバックシフトレジスタ（ＬＦＳＲ）６２２から出力されるＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
【０１７１】
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・の各々と、ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・の各々のデータは、同一ビット数、例えば１バイト（８ビット）データである。
排他的論理和（ＸＯＲ）演算部６２３では、これら２つのデータ、すなわち、
擬似乱数：Ｚａ１，Ｚａ２，Ｚａ３・・・
ＬＦＳＲ出力：Ｏ１，Ｏ２，Ｏ３・・・
これらのデータの排他的論理和（ＸＯＲ）演算を実行して、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成して出力する。
キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・は、以下の算出式によって生成される。
Ｚｂ１＝Ｚａ１（＋）Ｏ１、
Ｚｂ２＝Ｚａ２（＋）Ｏ２、
Ｚｂ３＝Ｚａ３（＋）Ｏ３、
・・・
なお、上記式において、（＋）は排他的論理和演算（ＸＯＲ）を意味する。
【０１７２】
キーストリーム６３６は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が１バイト（８ビット）データからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・である。
このように、キーストリーム生成部６１０の排他的論理和（ＸＯＲ）演算部６２３は、各々が所定長のデータからなるデータ列：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・をキーストリームとして順次、出力する。
【０１７３】
キーストリーム構成要素である所定ビット単位のデータ：Ｚｂ１，Ｚｂ２，Ｚｂ３，・・・の各々は、排他的論理和演算部６２４において、復号処理対象となる暗号文５４２の所定データ単位の分割データ：Ｃ１，Ｃ２，Ｃ３・・・の各々と排他的論理和（ＸＯＲ）演算が実行される。
この排他的論理和演算結果として算出するデータ列：Ｐ１，Ｐ２，Ｐ３・・・が、復号結果としての平文５４１となる。
【０１７４】
平文Ｐ１，Ｐ２，ＰＣ３・・・と、キーストリーム：Ｚｂ１，Ｚｂ２，Ｚｂ３・・・と、暗号文Ｃ１，Ｃ２，Ｃ３・・・との関係は以下の通りである。
Ｐ１＝Ｃ１（＋）Ｚｂ１
Ｐ２＝Ｃ２（＋）Ｚｂ２
Ｐ３＝Ｃ３（＋）Ｚｂ３
・・・
なお、上記式において（＋）は、排他的論理和演算を意味する。
また、平文の構成要素Ｐｉ、キーストリームの構成要素Ｚｂｉ、暗号文構成要素Ｃｉ、これらの各構成要素は、いずれも同一ビット数、例えば１バイト（８ビット）のデータである。
【０１７５】
このように、本実施例３に従ったストリーム暗号による復号処理は、以下のステップ（Ｓｂ１）〜（Ｓｂ４）を実行することで行われる。
（Ｓｂ１）秘密のパラメータである第１秘密鍵（Ｋｓ）と、公開パラメータである初期ベクトル（ＩＶ：Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）から、擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・を生成する。
（Ｓｂ２）秘密のパラメータである第１秘密鍵（Ｋｓ）に基づいて生成される変換鍵データ（Ｋｓ２）から、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・を生成する。
（Ｓｂ３）擬似乱数系列Ｚａ１，Ｚａ２，Ｚａ３・・・と、ＬＦＳＲ出力系列Ｏ１，Ｏ２，Ｏ３・・・との排他的論理和（ＸＯＲ）により、キーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・を生成する。
（Ｓｂ４）暗号文Ｃ１，Ｃ２，Ｃ３・・・と、生成したキーストリームＺｂ１，Ｚｂ２，Ｚｂ３・・・の排他的論理和をとることにより、平文の構成データＰ１，Ｐ２，Ｐ３・・・を生成する。
【０１７６】
平文生成処理において、ステップ（Ｓｂ４）で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
【０１７７】
なお、本実施例では、共通の秘密情報として、第１秘密鍵（Ｋｓ）を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
【０１７８】
この実施例３では、先に図１、図２を参照して説明した従来のストリーム暗号処理構成と比較して、例えば以下の優位性を持つ。
【０１７９】
（Ａ）安全性の優位性について
例えば、図１１に示す擬似乱数生成部５１２の出力する擬似乱数Ｚａ１，Ｚａ２，・・・に偏りがあった場合においても、偏りのあるこれらの擬似乱数Ｚａ１，Ｚａ２，・・・に対して、０、１の出現頻度が均一なＬＦＳＲの出力Ｏ１，Ｏ２・・・を、排他的論理和（ＸＯＲ）演算を施して新たなキーストリームＺｂ１，Ｚｂ２，・・・を生成することで、偏りを取り除くことができる。
【０１８０】
この偏りが除去されたキーストリームＺｂ１，Ｚｂ２，・・・を平文に対して適用するため、偏りのないキーストリームを適用した暗号処理が可能となる。
この処理によって、先に図４を参照して説明したブロードキャスト・セッティング時の平文回復攻撃を防ぐことができる。
【０１８１】
例えばＬＦＳＲ出力Ｏｉは、各々の値が等確率で生成されるため、ランダムに第１秘密鍵（Ｋｓ）が与えられる場合、第１秘密鍵（Ｋｓ）に基づいて生成される擬似乱数（Ｚｉ）、およびＬＦＳＲ出力（Ｏｉ）の値の分布は一様になる。
【０１８２】
また、仮にＬＦＳＲの出力が攻撃者に露呈した場合は、ＬＦＳＲの性質上、第１秘密鍵（Ｋｓ）に基づいて生成された変換鍵データ（Ｋｓ２）は露呈してしまう。しかし、第１秘密鍵（Ｋｓ）自体は露呈することがない。
また、暗号文等からＬＦＳＲの出力推定には、キーストリーム生成部内部の排他的論理和処理以前の擬似乱数系列の推定も必要となり、この推定は極めて困難である。
【０１８３】
（Ｂ）実装コストの優位性について
本実施例３において用いる線形フィードバックシフトレジスタ（ＬＦＳＲ）はレジスタと排他的論理和（ＸＯＲ）演算処理構成のみで実装可能であり、Ｈ／Ｗ（ハードウェア）で構成した場合の実装コストが小さい。そのため、既存のシステムに付加しても大きなコストアップにならない。また。Ｓ／Ｗ（ソフトウェア）実装とした場合においても高速処理が可能である。また、新たな鍵も必要なく、ＬＦＳＲを追加するのみでよいので、実装コストを最小限に抑えることが可能である。
【０１８４】
なお、本実施例３を適用可能な既存のストリーム暗号の一例として、例えば、秘密鍵（Ｋｓ）として１２８ビット鍵を適用した１２８ビットキーＲＣ４がある。
この１２８ビットキーＲＣ４に本実施例３を適用する場合、秘密鍵（Ｋｓ）のサイズを１２８ビットとし、ＬＦＳＲのレジスタ数（セット可能なビット数）のサイズは１２８ビット、その周期は最大周期２１２８−１となるようにＬＦＳＲを選択する。
具体的には、ＬＦＳＲは、先に図６を参照して説明した構成とし、ＬＦＳＲの出力系列の特性を決める特性多項式は、以下の１２８次の原始多項式とする。
ｆ（ｘ）＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９（＋）１
【０１８５】
既存のストリーム暗号ＲＣ４に、図６を参照して説明したＬＦＳＲと、鍵排他的変換部、および論理和演算部を付加することで、図１１を参照して説明したキーストリーム生成部５１０を構成することが可能であり、既存の構成をそのまま利用して、安全性を高めた暗号処理構成を実現することができる。
【０１８６】
［３．暗号処理装置の構成例について］
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の構成例について説明する。
上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、ＰＣ、ＴＶ、レコーダ、プレーヤ、通信機器、さらに、ＲＦＩＤ、スマートカード、センサネットワーク機器、デンチ／バッテリー認証モジュール、健康・医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な機器において利用可能である。
【０１８７】
本開示の暗号処理を実行する装置の一例としてのＩＣモジュール８００の構成例を図１４に示す。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、スマートフォンやウェアラブルデバイス等の様々な情報処理装置において実行可能であり、図１４に示すＩＣモジュール８００は、これら様々な機器に構成することが可能である。
【０１８８】
図１４に示すＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ８０２は、ＣＰＵ８０１が実行するプログラム、あるいは演算パラメータなどの固定データを格納するＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ−Ｍｅｍｏｒｙ）、ＣＰＵ８０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等からなる。また、メモリ８０２は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル（置換表）や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１８９】
暗号処理部８０３は、上記において説明した暗号処理構成を有し、共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
【０１９０】
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭに格納し、ＣＰＵ８０１がＲＯＭ格納プログラムを読み出して実行するように構成してもよい。
【０１９１】
乱数発生器８０４は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０１９２】
送受信部８０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１９３】
なお、上述した実施例において説明した暗号処理装置は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
【０１９４】
図１５は、本開示に係る暗号処理を実行するスマートフォン９００の概略的な構成の一例を示すブロック図である。スマートフォン９００は、プロセッサ９０１、メモリ９０２、ストレージ９０３、外部接続インタフェース９０４、カメラ９０６、センサ９０７、マイクロフォン９０８、入力デバイス９０９、表示デバイス９１０、スピーカ９１１、無線通信インタフェース９１３、アンテナスイッチ９１４、アンテナ９１５、バス９１７、バッテリー９１８及び補助コントローラ９１９を備える。
【０１９５】
プロセッサ９０１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）又はＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）であってよく、スマートフォン９００のアプリケーションレイヤ及びその他のレイヤの機能を制御し、また、暗号処理を制御する。メモリ９０２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を含み、プロセッサ９０１により実行されるプログラム及びデータを記憶する。また、メモリ９０２は、暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル（置換表）や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。ストレージ９０３は、半導体メモリ又はハードディスクなどの記憶媒体を含み得る。外部接続インタフェース９０４は、メモリーカード又はＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）デバイスなどの外付けデバイスをスマートフォン９００へ接続するためのインタフェースである。
【０１９６】
カメラ９０６は、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）又はＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）などの撮像素子を有し、撮像画像を生成する。センサ９０７は、例えば、測位センサ、ジャイロセンサ、地磁気センサ及び加速度センサなどのセンサ群を含み得る。マイクロフォン９０８は、スマートフォン９００へ入力される音声を音声信号へ変換する。カメラ９０６で生成された画像や、センサ９０７で取得されたセンサデータ、マイクロフォン９０８で取得した音声信号などは、プロセッサ９０１により暗号化され無線通信インタフェース９１３を介して他の装置に送信されてもよい。入力デバイス９０９は、例えば、表示デバイス９１０の画面上へのタッチを検出するタッチセンサ、キーパッド、キーボード、ボタン又はスイッチなどを含み、ユーザからの操作又は情報入力を受け付ける。表示デバイス９１０は、液晶ディスプレイ（ＬＣＤ）又は有機発光ダイオード（ＯＬＥＤ）ディスプレイなどの画面を有し、スマートフォン９００の出力画像を表示する。スピーカ９１１は、スマートフォン９００から出力される音声信号を音声に変換する。
【０１９７】
無線通信インタフェース９１３は、無線通信を実行し、典型的には、ベースバンドプロセッサ、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）回路及びパワーアンプなどを含み得る。無線通信インタフェース９１３は、通信制御プログラムを記憶するメモリ、当該プログラムを実行するプロセッサ及び関連する回路を集積したワンチップのモジュールであってもよい。無線通信インタフェース９１３は、無線ＬＡＮ方式に加えて、近距離無線通信方式、近接無線通信方式又はセルラ通信方式などの他の種類の無線通信方式をサポートしてもよい。
【０１９８】
バス９１７は、プロセッサ９０１、メモリ９０２、ストレージ９０３、外部接続インタフェース９０４、カメラ９０６、センサ９０７、マイクロフォン９０８、入力デバイス９０９、表示デバイス９１０、スピーカ９１１、無線通信インタフェース９１３及び補助コントローラ９１９を互いに接続する。バッテリー９１８は、図中に破線で部分的に示した給電ラインを介して、図１５に示したスマートフォン９００の各ブロックへ電力を供給する。補助コントローラ９１９は、例えば、スリープモードにおいて、スマートフォン９００の必要最低限の機能を動作させる。
【０１９９】
なお、上述した実施例において説明したスマートフォンにおける暗号処理は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
また、図１５に示すスマートフォン９００に図１４に示すＩＣモジュール８００を搭載し、上述した実施例に従った暗号処理をＩＣモジュール８００において実行する構成としてもよい。
【０２００】
［４．本開示の構成のまとめ］
以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０２０１】
なお、本明細書において開示した技術は、以下のような構成をとることができる。
（１）  暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、
前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理装置。
【０２０２】
（２）  前記第１の秘密鍵と前記第２の秘密鍵は、異なる秘密鍵である（１）に記載の暗号処理装置。
【０２０３】
（３）  前記第１の秘密鍵と前記第２の秘密鍵は、同一の秘密鍵である（１）に記載の暗号処理装置。
【０２０４】
（４）  前記第２の秘密鍵は、前記第１の秘密鍵に基づくデータ変換処理によって生成された鍵である（１）に記載の暗号処理装置。
【０２０５】
（５）  前記キーストリーム生成部は、鍵変換部を有し、
前記鍵変換部は、前記第１の秘密鍵を入力して該第１の秘密鍵と異なる第２の秘密鍵を生成して前記線形フィードバックレジスタ（ＬＦＳＲ）に入力する（１）に記載の暗号処理装置。
【０２０６】
（６）  前記鍵変換部は、
一方向性ハッシュ関数を適用したデータ変換を実行する（５）に記載の暗号処理装置。
【０２０７】
（７）  前記擬似乱数生成部は、１バイト単位の擬似乱数を生成し、
前記線形フィードバックレジスタ（ＬＦＳＲ）は、１バイト単位のＬＦＳＲ出力を生成し、
前記排他的論理和演算部は、１バイト単位の擬似乱数と、１バイト単位のＬＦＳＲ出力との排他的論理和演算を実行して、１バイト単位の暗号鍵データからなるキーストリームを生成する（１〜（６）いずれかに記載の暗号処理装置。
【０２０８】
（８）  前記線形フィードバックレジスタ（ＬＦＳＲ）は、特性多項式が、
ｆ（ｘ）＝Ｘ１２８（＋）Ｘ１２６（＋）Ｘ１０１（＋）Ｘ９９（＋）１
上記の１２８次の原始多項式によって規定される構成である（１）〜（７）いずれかに記載の暗号処理装置。
【０２０９】
（９）  前記線形フィードバックレジスタ（ＬＦＳＲ）は、特性多項式が、
ｆ（ｘ）＝Ｘ６４（＋）Ｘ６３（＋）Ｘ６１（＋）Ｘ６０（＋）１
上記の６４次の原始多項式によって規定される構成である（１）〜（７）いずれかに記載の暗号処理装置。
【０２１０】
（１０）  前記キーストリーム生成部は、
前記第１の秘密鍵を入力して、擬似乱数生成用初期データを生成する鍵スケジュール部と、
前記鍵スケジュール部の生成した疑似乱数生成用初期データを入力して擬似乱数を出力する擬似乱数生成部を有する構成である（１）〜（９）いずれかに記載の暗号処理装置。
【０２１１】
（１１）  復号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する復号鍵データと、復号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、
前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する復号処理装置。
【０２１２】
（１２）  暗号処理装置において実行する暗号処理方法であり、
キーストリーム生成部が、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成ステップと、
演算部が、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算ステップを実行し、
前記キーストリーム生成ステップは、
擬似乱数生成部が、第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成ステップと、
線形フィードバックレジスタ（ＬＦＳＲ）が、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成するＬＦＳＲ出力データ生成ステップと、
排他的論理和演算部が、前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算ステップを有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理方法。
【０２１３】
（１３）  暗号処理装置において暗号処理を実行させるプログラムであり、
キーストリーム生成部に、暗号鍵データからなるデータストリームであるキーストリームを生成させるキーストリーム生成ステップと、
演算部に、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行させる演算ステップを実行させ、
前記プログラムは、前記キーストリーム生成ステップにおいて、
擬似乱数生成部に、第１の秘密鍵に基づいて擬似乱数を生成させる擬似乱数生成ステップと、
線形フィードバックレジスタ（ＬＦＳＲ）に、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成させるＬＦＳＲ出力データ生成ステップと、
排他的論理和演算部に、前記擬似乱数生成部の生成した疑似乱数と、前記ＬＦＳＲ出力データとの排他的論理和演算処理を実行させる排他的論理和演算ステップを実行させ、
前記排他的論理和演算部の出力をキーストリームとして出力させるプログラム。
【０２１４】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０２１５】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０２１６】
上述したように、本開示の一実施例の構成によれば、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
具体的には、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、キーストリーム生成部は、第１の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、第２の秘密鍵に基づいてＬＦＳＲ出力データを生成する線形フィードバックレジスタ（ＬＦＳＲ）と、擬似乱数生成部の生成した疑似乱数と、ＬＦＳＲ出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、排他的論理和演算部の出力をキーストリームとして出力する。
本構成により、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
【符号の説明】
【０２１７】
１１  秘密鍵
１２  初期ベクトル
１３  キーストリーム（擬似乱数）
２１  平文
２２  暗号文
５０  キーストリーム生成部
５１  鍵スケジュール部
５２  擬似乱数生成部
５３  排他的論理和（ＸＯＲ）演算部
４１  秘密鍵
４２  初期ベクトル
４３  キーストリーム（擬似乱数）
７０  キーストリーム生成部
７１  鍵スケジュール部
７２  擬似乱数生成部
７３  排他的論理和（ＸＯＲ）演算部
１１０  キーストリーム生成部
１１１  鍵スケジュール部
１１２  擬似乱数生成部
１２１  線形フィードバックシフトレジスタ（ＬＦＳＲ）
１２２  排他的論理和（ＸＯＲ）演算部
１３１  第１秘密鍵（Ｋｓ）
１３２  初期ベクトル
１３３  第２秘密鍵（ＫＬ）
１３４  出力擬似乱数
１３５  ＬＦＳＲ出力
１３６  キーストリーム（擬似乱数）
１４１  平文
１４２  暗号文
２１０  キーストリーム生成部
２１１  鍵スケジュール部
２１２  擬似乱数生成部
２２１  線形フィードバックシフトレジスタ（ＬＦＳＲ）
２２２  排他的論理和（ＸＯＲ）演算部
２３１  第１秘密鍵（Ｋｓ）
２３２  初期ベクトル
２３３  第２秘密鍵（ＫＬ）
２３４  出力擬似乱数
２３５  ＬＦＳＲ出力
２３６  キーストリーム（擬似乱数）
５１０  キーストリーム生成部
５１１  鍵スケジュール部
５１２  擬似乱数生成部
５２１  鍵変換部
５２２  線形フィードバックシフトレジスタ（ＬＦＳＲ）
５２３  排他的論理和（ＸＯＲ）演算部
５３１  第１秘密鍵（Ｋｓ）
５３２  初期ベクトル
５３４  出力擬似乱数
５３５  ＬＦＳＲ出力
５３６  キーストリーム（擬似乱数）
５４１  平文
５４２  暗号文
５５１  ハッシュ関数実行部
５５２  ビット数調整部
６１０  キーストリーム生成部
６１１  鍵スケジュール部
６１２  擬似乱数生成部
６２１  鍵変換部
６２２  線形フィードバックシフトレジスタ（ＬＦＳＲ）
６２３  排他的論理和（ＸＯＲ）演算部
６３１  第１秘密鍵（Ｋｓ）
６３２  初期ベクトル
６３４  出力擬似乱数
６３５  ＬＦＳＲ出力
６３６  キーストリーム（擬似乱数）
８００  ＩＣモジュール
８０１  ＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
８０２  メモリ
８０３  暗号処理部
８０４  乱数生成部
８０５  送受信部
９００  スマートフォン
９０１  プロセッサ
９０２  メモリ
９０３  ストレージ
９０４  外部接続インタフェース
９０６  カメラ
９０７  センサ
９０８  マイクロフォン
９０９  入力デバイス
９１０  表示デバイス
９１１  スピーカ
９１３  無線通信インタフェース
９１４  アンテナスイッチ
９１５  アンテナ
９１７  バス
９１８  バッテリー
９１９  補助コントローラ
【図１】
0006287785.tif 000002
【図２】
0006287785.tif 000003
【図３】
0006287785.tif 000004
【図４】
0006287785.tif 000005
【図５】
0006287785.tif 000006
【図６】
0006287785.tif 000007
【図７】
0006287785.tif 000008
【図８】
0006287785.tif 000009
【図９】
0006287785.tif 000010
【図１０】
0006287785.tif 000011
【図１１】
0006287785.tif 000012
【図１２】
0006287785.tif 000013
【図１３】
0006287785.tif 000014
【図１４】
0006287785.tif 000015
【図１５】
0006287785.tif 000016