JP2016103799A - 暗号処理装置、および暗号処理方法、並びにプログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにプログラム Download PDF

Info

Publication number
JP2016103799A
JP2016103799A JP2014242332A JP2014242332A JP2016103799A JP 2016103799 A JP2016103799 A JP 2016103799A JP 2014242332 A JP2014242332 A JP 2014242332A JP 2014242332 A JP2014242332 A JP 2014242332A JP 2016103799 A JP2016103799 A JP 2016103799A
Authority
JP
Japan
Prior art keywords
key
data
lfsr
random number
stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014242332A
Other languages
English (en)
Other versions
JP6287785B2 (ja
Inventor
香士 渋谷
Koushi Shibuya
香士 渋谷
孝典 五十部
Takanori Isobe
孝典 五十部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2014242332A priority Critical patent/JP6287785B2/ja
Publication of JP2016103799A publication Critical patent/JP2016103799A/ja
Application granted granted Critical
Publication of JP6287785B2 publication Critical patent/JP6287785B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】安全性を向上させたストリーム暗号を実行する装置及び方法を提供する。【解決手段】暗号鍵データからなるデータストリームであるキーストリーム136を生成するキーストリーム生成部110と、キーストリームを構成する暗号鍵データと、暗号処理対象データ(平文)141との演算処理を実行する演算部123を有する。キーストリーム生成部110は、第1の秘密鍵131に基づいて擬似乱数を生成する擬似乱数生成部112と、第2の秘密鍵133に基づいてLFSR出力データ135を生成する線形フィードバックレジスタ(LFSR)121と、擬似乱数生成部112の生成した疑似乱数134と、LFSR出力データ135との排他的論理和演算処理を実行する排他的論理和演算部122を有し、排他的論理和演算部の出力をキーストリーム136として出力する。【選択図】図5

Description

本開示は、暗号処理装置、および暗号処理方法、並びにプログラムに関する。さらに詳細には、共通鍵暗号の1つであるストリーム暗号を実行する暗号処理装置、および暗号処理方法、並びにプログラムに関する。
情報化社会が発展すると共に、扱う情報を安全に守るための情報セキュリティ技術の重要性が増してきている。情報セキュリティ技術の構成要素の一つとして暗号技術があり、現在では様々な製品やシステムで暗号技術が利用されている。
暗号処理アルゴリズムには様々なものがあるが、基本的な技術の一つとして、共通鍵暗号がある。共通鍵暗号では、暗号化用の鍵と復号用の鍵が共通のものとなっている。暗号化処理、復号処理共に、その共通鍵から複数の鍵を生成し、例えばあるブロック単位、例えば64ビット、128ビット、256ビット等のブロックデータ単位でデータ変換処理を繰り返し実行する。
共通鍵暗号のアルゴリズムとしては、過去の米国標準であるDES(Data Encryption Standard)や現在の米国標準であるAES(Advanced Encryption Standard)が知られている。他にも様々な共通鍵暗号が現在も提案され続けており、2007年にソニー株式会社が提案したCLEFIAも共通鍵暗号の一つである。
なお、共通鍵暗号について開示した従来技術として、例えば特許文献1(特開2012−215813号公報)等がある。
さらに、共通鍵暗号の一形態としてストリーム暗号がある。ストリーム暗号による暗号文生成処理は、以下のステップ(S1),(S2)を実行することで行われる。
(S1)秘密のパラメータである秘密鍵と、公開パラメータである初期ベクトル(IV:Initial Vector)から、キーストリームと呼ばれる擬似乱数系列を生成する。
(S2)平文と、生成したキーストリームの排他的論理和をとることにより、暗号文を生成する。
暗号文から平文を生成する処理は、以下のステップ(S3)、(S4)を実行する。
(S3)秘密のパラメータである秘密鍵と、公開パラメータである初期ベクトル(IV:Initial Vector)から、キーストリーム(擬似乱数系列)を生成する。
(S4)暗号文と、生成したキーストリームの排他的論理和をとることにより、平文を生成する。
平文生成処理において、ステップ(S4)で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
つまり、共通の秘密情報である「秘密鍵」を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
このストリーム暗号では、秘密鍵と、初期ベクトル(IV)から生成するキーストリームが必須要素となるが、このキーストリームを構成するビット値の偏りを利用した様々な攻撃が存在し、安全性に問題があるとの指摘がある。
特開2012−215813号公報
本開示は、例えば上述の状況に鑑みてなされたものであり、安全性の高いストリーム暗号を実現する暗号処理装置、および暗号処理方法、並びにプログラムを提供することを目的とする。
本開示の第1の側面は、
暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、
前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理装置にある。
さらに、本開示の第2の側面は、
復号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する復号鍵データと、復号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、
前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する復号処理装置にある。
さらに、本開示の第3の側面は、
暗号処理装置において実行する暗号処理方法であり、
キーストリーム生成部が、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成ステップと、
演算部が、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算ステップを実行し、
前記キーストリーム生成ステップは、
擬似乱数生成部が、第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成ステップと、
線形フィードバックレジスタ(LFSR)が、第2の秘密鍵に基づいてLFSR出力データを生成するLFSR出力データ生成ステップと、
排他的論理和演算部が、前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算ステップを有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理方法にある。
さらに、本開示の第4の側面は、
暗号処理装置において暗号処理を実行させるプログラムであり、
キーストリーム生成部に、暗号鍵データからなるデータストリームであるキーストリームを生成させるキーストリーム生成ステップと、
演算部に、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行させる演算ステップを実行させ、
前記プログラムは、前記キーストリーム生成ステップにおいて、
擬似乱数生成部に、第1の秘密鍵に基づいて擬似乱数を生成させる擬似乱数生成ステップと、
線形フィードバックレジスタ(LFSR)に、第2の秘密鍵に基づいてLFSR出力データを生成させるLFSR出力データ生成ステップと、
排他的論理和演算部に、前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行させる排他的論理和演算ステップを実行させ、
前記排他的論理和演算部の出力をキーストリームとして出力させるプログラムにある。
なお、本開示のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置やコンピュータ・システムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータ・システム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。
本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本開示の一実施例によれば、本開示の一実施例の構成によれば、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
具体的には、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、キーストリーム生成部は、第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、擬似乱数生成部の生成した疑似乱数と、LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、排他的論理和演算部の出力をキーストリームとして出力する。
本構成により、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、また付加的な効果があってもよい。
ストリーム暗号に従った暗号処理構成について説明する図である。 ストリーム暗号に叱った復号処理構成について説明する図である。 ストリーム暗号におけるキーストリームの偏りについて説明する図である。 ストリーム暗号におけるキーストリームの偏りを利用した攻撃例について説明する図である。 本開示の実施例1に従ったストリーム暗号を適用した暗号処理の例について説明する図である。 線形フィードバックシフトレジスタ(LFSR)の構成例について説明する図である。 線形フィードバックシフトレジスタ(LFSR)の構成例について説明する図である。 本開示の実施例1に従ったストリーム暗号を適用した復号処理の例について説明する図である。 本開示の実施例2に従ったストリーム暗号を適用した暗号処理の例について説明する図である。 本開示の実施例2に従ったストリーム暗号を適用した復号処理の例について説明する図である。 本開示の実施例3に従ったストリーム暗号を適用した暗号処理の例について説明する図である。 鍵変換部の構成例について説明する図である。 本開示の実施例3に従ったストリーム暗号を適用した復号処理の例について説明する図である。 暗号処理装置としてのICモジュール700の構成例を示す図である。 暗号処理実行機能を有するスマートフォンの構成例を示す図である。
以下、図面を参照しながら本開示に係る暗号処理装置、および暗号処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
1.ストリーム暗号の概要について
2.安全性を高めたストリーム暗号の構成について
2−1.第2の秘密鍵(KL)に基づくLFSR出力を適用してキーストリームを生成する実施例(実施例1)
2−2.秘密鍵(Ks)に基づくLFSR出力を適用してキーストリームを生成する実施例(実施例2)
2−3.第1の秘密鍵(Ks)の変換データに基づくLFSR出力を適用してキーストリームを生成する実施例(実施例3)
3.暗号処理装置の構成例について
4.本開示の構成のまとめ
[1.ストリーム暗号の概要について]
まず、ストリーム暗号の概要について説明する。
ストリーム暗号は、共通鍵暗号の一つである。
図1、図2を参照して、ストリーム暗号に従った暗号化処理と復号処理について説明する。
図1は、ストリーム暗号に従った暗号化処理について説明する図である。
キーストリーム生成部50は、秘密鍵(Ks)11と、初期ベクトル(IV:Initial Vector)12を入力して、キーストリーム(擬似乱数)13を生成する。
秘密鍵(Ks)11と、初期ベクトル(IV)12は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
秘密鍵(Ks)11は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
一方、初期ベクトル(IV)12は、公開データであり、不特定多数のユーザが知ることができるデータである。
キーストリーム生成部50は、鍵スケジュール部51と、擬似乱数生成部52を有する。
鍵スケジュール部51は、秘密鍵(Ks)11と、初期ベクトル(IV)12に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部52に出力する。
擬似乱数生成部52は、鍵スケジュール部51から入力する擬似乱数生成用初期データを適用して擬似乱数としてのキーストリーム13を生成して出力する。
擬似乱数生成部52の出力するキーストリーム13は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Z1,Z2,Z3,・・・である。
擬似乱数生成部52は、各々が所定長のデータからなるデータ列:Z1,Z2,Z3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Z1,Z2,Z3,・・・の各々と、暗号処理対象となる平文の所定データ単位の分割データ:P1,P2,P3・・・の各々が、順次、排他的論理和演算部53に入力され、排他的論理和(XOR)演算処理が実行される。
この排他的論理和演算結果として算出するデータ列:C1,C2,C3・・・を、暗号文22として出力する。
暗号文C1,C2,C3・・・と、キーストリーム:Z1,Z2,Z3・・・と、平文P1,P2,P3・・・との関係は以下の通りである。
C1=P1(+)Z1
C2=P2(+)Z2
C3=P3(+)Z3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータに設定される。
このように、ストリーム暗号による暗号文生成処理は、以下のステップ(S1),(S2)を実行することで行われる。
(S1)秘密のパラメータである秘密鍵と、公開パラメータである初期ベクトル(IV:Initial Vector)から、キーストリームと呼ばれる擬似乱数系列Z1,Z2,Z3・・・を生成する。
(S2)平文の構成データP1,P2,P3・・・と、生成したキーストリームZ1,Z2,Z3・・・の排他的論理和をとることにより、暗号文C1,C2,C3・・・を生成する。
図1を参照して説明した処理によって生成された暗号文22は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図2は、ストリーム暗号に従った復号処理について説明する図である。
ストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実行可能である。
図2に示す構成において、キーストリーム生成部70は、秘密鍵(Ks)41と、初期ベクトル(IV:Initial Vector)42を入力して、キーストリーム(擬似乱数)43を生成する。
秘密鍵(Ks)41と、初期ベクトル(IV)42は、復号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
秘密鍵(Ks)41は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
すなわち、復号対象とする暗号文22が、図1に示す構成によって生成された暗号文22である場合、秘密鍵(Ks)41は、図1に示す暗号処理において適用した秘密鍵(Ks)11と同一の鍵である。
一方、初期ベクトル(IV)12は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文22が、図1に示す構成によって生成された暗号文22である場合、初期ベクトル(IV)42も、図1に示す暗号処理において適用した初期ベクトル(IV)12と同一のデータである。
キーストリーム生成部70は、スケジュール部71と、擬似乱数生成部72を有する。
鍵スケジュール部71は、秘密鍵(Ks)41と、初期ベクトル(IV)42に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部72に出力する。
擬似乱数生成部72は、鍵スケジュール部71から入力する擬似乱数生成用初期データを適用して擬似乱数としてのキーストリーム43を生成して出力する。
なお、生成されるキーストリーム43は、同一の秘密鍵(Ks)と同一の初期ベクトル(IV)を用いた場合、同一のデータとなる。
本例では、図2に示す構成において、秘密鍵(Ks)41は、図1に示す秘密鍵(Ks)11と同一であり、初期ベクトル(IV)42は、図1に示す初期ベクトル(IV)12同一である。従って、図2に示す構成において生成されるキーストリーム43は、図1に示キーストリーム13と同一のデータとなる。
擬似乱数生成部72の出力するキーストリーム43は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Z1,Z2,Z3,・・・である。
擬似乱数生成部72は、各々が所定長のデータからなるデータ列:Z1,Z2,Z3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Z1,Z2,Z3,・・・の各々と、復号処理対象となる暗号文の所定データ単位の分割データ:C1,C2,C3・・・の各々が、排他的論理和演算部73に順次、入力され、排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:P1,P2,P3・・・が、復号結果としての平文21となる。
平文P1,P2,PC3・・・と、キーストリーム:Z1,Z2,Z3・・・と、暗号文C1,C2,C3・・・との関係は以下の通りである。
P1=C1(+)Z1
P2=C2(+)Z2
P3=C3(+)Z3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、ストリーム暗号による復号処理は、以下のステップ(S3)、(S4)を実行することで実行される。
(S3)秘密鍵と、初期ベクトル(IV)から、キーストリーム(擬似乱数系列)Z1,Z2,Z3・・・を生成する。
(S4)暗号文C1,C2,C3・・・と、生成したキーストリームZ1,Z2,Z3・・・の排他的論理和をとることにより、平文P1,P2,P3・・・を生成する。
平文生成処理において、ステップ(S4)で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
つまり、共通の秘密情報である「秘密鍵」を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
図1、図2を参照して説明したように、ストリーム暗号では、鍵スケジューリングアルゴリズムと、擬似乱数生成アルゴリズムを適用して生成されるキーストリームを用いて処理が行われる。
図1、図2に示す鍵スケジュール部51,71内で実行する鍵スケジューリングアルゴリズムでは、秘密鍵(Ks)と、初期ベクトル(IV)とから、擬似乱数生成用初期データを生成する。
擬似乱数生成用初期データは、擬似乱数生成部52の内部状態と呼ばれる内部変数の初期値(初期状態)に相当する。なお、安全性の観点より、擬似乱数生成用初期データ(内部状態)のサイズは、秘密鍵(Ks)の2倍以上であることが求められる。
図1、図2に示す擬似乱数生成部52,72の実行する擬似乱数生成アルゴリズムでは、擬似乱数生成用初期データ(内部状態)を更新しながら各状態において固定長のキーストリームを構成するワードZ1、Z2、Z3・・・、を順次、生成する。
ここでZiは、時刻iにおける擬似乱数生成部からの出力であり、サイズはアルゴリズムによって異なる。たとえば、ストリーム暗号RC4の場合には、各ワードのサイズは1バイト(8ビット)である。
キーストリーム生成部の構成は、その内部状態の構成の違いから、線形フィードバックシフトレジスタ型と状態遷移型に大別される。
線形フィードバック型は、その名の通り線形フィードバックシフトレジスタをベースにしており、線形フィルター関数と、非線形フィードバックシフトレジスタと組み合わせることで安全性を確保している。代表的なものとして、SNOW 3G、 KCipher−2が挙げられる。
一方、状態遷移型はレジスタ内を非線形な関数により更新し、その一部をキーストリームとして出力する構成である。代表的なものとして、RC4が挙げられる。
ストリーム暗号に対する代表的な攻撃例として以下の各種の攻撃がある。
(1)識別攻撃:キーストリームを真性乱数と識別する攻撃、
(2)予測攻撃:未知のキーストリームを予測する攻撃、
(3)鍵回復攻撃:キーストリームから、秘密鍵を求める攻撃、
(4)内部状態復元攻撃:キーストリームから秘密鍵と等価な内部状態を求める攻撃、
基本的には、ストリーム暗号は上記の攻撃すべてに対して耐性を有していることが求められる。
特に上記の(3)鍵回復攻撃、および(4)内部状態復元攻撃、これらの攻撃は、キーストリームから、秘密鍵もしくはそれと等価な内部状態を求める攻撃である。これらの攻撃が成立すれば、すべての暗号文から平文情報を求めることができるため、非常に強力な攻撃方法である。
しかしながら、攻撃の前提として、攻撃者が十分な量(サイズ)のキーストリームの情報を知っていることが求められる。これは、攻撃者が、大量の平文暗号文ペアを保持しておく必要があることを意味する。この強い仮定のため、実際の利用においては脅威になりにくく、理論的な攻撃と考えられる。
一方、(1)識別攻撃は、キーストリームの統計的な偏りのみを利用する攻撃であり、実際に大きな脅威となりうることが指摘されている攻撃である。具体的には、異なる秘密鍵を適用して生成した暗号文を観測することのみで平文を回復することが可能となる。
(1)識別攻撃の具体例について、図3、図4を参照して説明する。この攻撃は、例えばキーストリームの偏りを利用した平文回復攻撃として実行される。
キーストリームの偏りの例について、図3を参照して説明する。
図3の左に示すキーストリーム生成部50の構成は、図1、図2に示すキーストリーム生成部の構成と同一の構成である。
図3に示すキーストリーム生成部50の生成するキーストリームの1つの構成要素(ワード)Z2に着目する。
キーストリームの1つの構成要素(ワード)を1バイト(8ビット)とすると、Z2の取り得る値は0〜255の256通りである。
理想的なランダム性が実現されている場合、Z2の値の出現確率は、0〜255全て均一となり、図3の[(a)理想]のグラフに示すように、0〜255の各値の出現確率は全て等しく、1/256となる。
しかし、現実には、キーストリームの構成要素(ワード)の値の出現確率には偏りが発生する。
Z2についての実際の出現確率の計測値は、図3の[(b)現実]に示すグラフの通り、0の出現確率が他の値に比較して高くなっている。
図3には、キーストリームの構成要素(ワード)の1つであるZ2についての検証結果を示しているが、その他のキーストリームの構成要素についても、それぞれ、出現しやすい値が存在する。
このような、キーストリームの統計的な偏りに基づいて、「ブロードキャスト・セッティング」を利用して、暗号文から平文を求めることが可能となる場合がある。
なお、「ブロードキャスト・セッティング」とは、"同じ平文を異なる鍵で暗号化し、暗号文を生成する状況"を意味する
「ブロードキャスト・セッティング」を利用して、暗号文から平文を求める攻撃の具体例について、図4を参照して説明する。
例えば、ある1つの平文Pを多数のユーザに同時に配信(ブロードキャスト)する場合、各ユーザに対応付けられた異なる秘密鍵k1〜kxを適用して、同一平文に対する暗号化処理を実行して、多数の暗号化データ(C1〜Cx)を生成して送信することが行われる。
C1=E(k1,P)
C2=E(k2,P)
・・・
Cx=E(kx,P)
である。
ただし、E(ki,P)は、平文Pに対する鍵kiを適用した暗号化処理を意味する。
同一平文Pに対して、多数の異なる鍵k1〜kxがネットワークを介して送信され他場合、悪意の第三者は、ネットワークを介した送受信データから、これらの多数の暗号化データ(C1=E(k1,P)〜Cx=E(kx,P))を比較的容易に取得することができる。
キーストリームの統計的な偏りがあると、取得した多数の暗号化データの解析に基づく平文算出が容易になる。この攻撃が、「ブロードキャスト・セッティング」を利用した暗号文から平文を求める識別攻撃である。
この攻撃において、攻撃者は通信路上の暗号文を、ただ観測すればよいため、特別な仮定が必要ではなく、非常に強力な攻撃技術となる。
コンテンツをユーザごとの鍵で暗号化して、ネットワーク配信する処理は頻繁に行われており、この攻撃による損害は多大なものとなる恐れがある。
なお、同じ平文を異なる鍵で暗号化し、暗号文を生成する「ブロードキャスト・セッティング」では、多くの場合、各セッション単位で利用鍵が異なるが、複数セッションで同じ鍵を利用してメッセージを送信する「マルチセッション・セッティング」も多く利用されている。これは、インターネットで広く用いられているSSL/TLSのプロトコルがユースケースと考えられる。
図4を参照して説明した攻撃は、同一平文をベースとして異なる鍵で暗号化された複数の暗号文を集めるのみで実行可能な攻撃であり、例えばネットワーク配信されたデータを集めるのみで実行できるため、実際の脅威になる攻撃である。この攻撃を防ぐためには、ストリーム暗号において生成されるキーストリームに偏りを持たせないようにする必要がある。
出力に偏りが存在する場合には、図4を参照して説明した平文回復攻撃がやり易くなり、安全性が脅かされる。この脅威を防止するためには、何らかの対策をとる必要がある。
ストリーム暗号アルゴリズムにおける出力の偏りに起因する脆弱性を回避するための対策例としては、以下のようなものがある。
(1)別の安全なストリーム暗号に変更する。
もっとも単純な方法で、システム全体において、偏りのある弱いストリーム暗号を安全なストリーム暗号に変更することにより、脆弱性を取り除く。これにより、ブロードキャスト・セッティングにおいても、偏りによるキーストリームを利用した平文回復攻撃を完全に防ぐことができる。
(2)アルゴリズムに修正を加えて、脆弱性を取り除く
ストリーム暗号自体を入れ替えるのではなく、アルゴリズムの一部に修正を加えることにより、偏りのある出力が発生する脆弱性を取り除く。例えば、出力の偏りを取り除くための方法としては、擬似ランダム関数(MAC関数等)を追加して、キーストリームを擬似ランダム置換に代入し、その出力を新しいキーストリームとすることで、脆弱性を取り除くことができる。
これらの対策を行うことにより、偏りのあるキーストリームの問題は解決でき、安全にストリーム暗号を利用可能である。しかしながらこれらの対策には以下の問題点がある。
(1)別の安全なストリーム暗号に変更する対策の問題点
すでに実装されている暗号をすべて変えることが必要となるため、費用的にも時間的にも大きなコストになる。また新規のハードウェアやソフトウェアの開発のコストもかかる。さらに、すでに出荷されているデバイスやシステムが、ネットワークにつながっていない場合には、ソフトウェア/ファームウェアアップデート等でも対応することが非常に難しい。特にハードウェアの変更はネットワーク経由でのアップデートは基本的にできず、コストが高い。
(2)アルゴリズムに修正を加えて、脆弱性を取り除く対策の問題点
方法(1)とは異なりアルゴリズムすべてを変更するわけではないため、変更のコストは方法(1)と比べて、比較的軽微になることが予想される。しかしながら、既存のアルゴリズムを修正する場合は高い専門知識が必要である。既存システムの設計者でない場合、設計理論のすべてを把握できないため、修正がかえって他の深刻的な脆弱性を招く可能性がある。また、実際に安全な暗号を運用したい場合には。安全性評価を実施する必要があるが、これにも多くの時間や高い専門性が必要になる。
また、修正することにより、パファーマンスが大幅に低下してしまった場合には、他のシステムと整合性が取れなくなり、システム全体のパファーマンスも不安定になる可能性がある。例えば、前述の擬似ランダム置換を用いる場合には、大幅な速度の低下が予想される。
[2.安全性を高めたストリーム暗号の構成について]
次に、上述した問題点を解決した安全性を強化した本開示のストリーム暗号の構成例について説明する。
本開示のストリーム暗号は、以下の特徴を持つ。
(a)追加実装コスト(ソフトウェア、ハードウェアとも)が低い。
(b)安全性評価を簡単に行うことができる。
(c)ストリーム暗号の実装性能(特に速度)を保つことが可能である。
本開示のストリーム暗号においては、既存のストリーム暗号において生成するキーストリームを変換して新たなキーストリームを生成する。
例えば、既存のストリーム暗号において生成するキーストリームに対して、所定の秘密情報を入力した線形フィードバックシフトレジスタ(LFSR:Linear Feedback Shift Register)の出力を、排他的論理和(XOR)して新たなキーストリームを生成して利用する。この構成により、安全性の高いストリーム暗号を実現する。
なお、線形フィードバックシフトレジスタの内部状態のサイズは、ストリーム暗号において適用する秘密鍵(Ks)のサイズよりも大きいことが望ましい。具体的な実施例として、以下の3通りの実施例について、順次説明する。
(実施例1)線形フィードバックシフトレジスタ(LFSR)に、鍵スケジュール部に入力する秘密鍵(Ks)と異なる第2の秘密鍵(KL)を入力して、LFSRの初期状態を設定する。秘密鍵(Ks)に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、第2の秘密鍵(KL)に基づくLFSRからの出力とを排他的論理和(XOR)したデータをキーストリームとする実施例。
(実施例2)線形フィードバックシフトレジスタ(LFSR)に、鍵スケジュール部に入力する秘密鍵(Ks)と同じ秘密鍵(Ks)を入力して、LFSRの初期状態を設定する。秘密鍵(Ks)に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵(Ks)に基づくLFSRからの出力とを排他的論理和(XOR)したデータをキーストリームとする実施例。
(実施例3)線形フィードバックシフトレジスタ(LFSR)に、鍵スケジュール部に入力する秘密鍵(Ks)と同じ秘密鍵(Ks)を変換したデータ(Ks2)を入力して、LFSRの初期状態を設定する。秘密鍵(Ks)に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵(Ks)の変換データ(Ks2)に基づくLFSRからの出力とを排他的論理和(XOR)したデータをキーストリームとする実施例。
なお、線形フィードバックシフトレジスタ(LFSR)は以下の特徴を持つことが知られている。
(a)出力系列は決定的で、現在の内部状態を知っていれば次の状態は推測可能。
(b)出力系列を観測することで、内部状態を復元することが可能。
また、本開示の各実施例において用いる線形フィードバックシフトレジスタ(LFSR)はさらに以下の特徴を持つことが望ましい。
(c)0と1の出現確率が真性乱数と統計的に同じ。
以下、各実施例について、順次、説明する。
[2−1.第2の秘密鍵(KL)に基づくLFSR出力を適用してキーストリームを生成する実施例(実施例1)]
まず、実施例1として、線形フィードバックシフトレジスタ(LFSR)に、鍵スケジュール部に入力する秘密鍵(Ks)と異なる第2の秘密鍵(KL)を入力して、LFSRの初期状態を設定する実施例について説明する。
すなわち、秘密鍵(Ks)に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、第2の秘密鍵(KL)に基づくLFSRからの出力とを排他的論理和(XOR)したデータをキーストリームとする実施例である。
図5に本実施例1の暗号処理を実行する暗号処理装置の構成例を示す。
キーストリーム生成部110は、第1秘密鍵(Ks)131と、初期ベクトル(IV:Initial Vector)132、さらに、第2秘密鍵(KL)133を入力して、キーストリーム(擬似乱数)136を生成する。
第1秘密鍵(Ks)131と、初期ベクトル(IV)132と、第2秘密鍵(KL)133は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第1秘密鍵(Ks)131と、第2秘密鍵(KL)133は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
また、第1秘密鍵(Ks)131と、第2秘密鍵(KL)133は、異なる鍵データである。
初期ベクトル(IV)132は、公開データであり、不特定多数のユーザが知ることができるデータである。
キーストリーム生成部110は、鍵スケジュール部111と、擬似乱数生成部112、さらに、線形フィードバックシフトレジスタ(LFSR)121と、排他的論理和(XOR)演算部122を有する。
鍵スケジュール部111は、第1秘密鍵(Ks)131と、初期ベクトル(IV)132に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部112に出力する。
擬似乱数生成部112は、鍵スケジュール部111から入力する擬似乱数生成用初期データを適用して擬似乱数134を生成して出力する。擬似乱数134は、図に示すZa1,Za2,・・・のデータシーケンスであり、例えば、Zaiの各々が1バイト(8ビット)の擬似乱数シーケンス:Za1,Za2,・・・を生成して排他的論理和(XOR)演算部122に出力する。
一方、第2秘密鍵(KL)133は、線形フィードバックシフトレジスタ(LFSR)121に入力される。
線形フィードバックシフトレジスタ(LFSR)121を構成するレジスタに、第2秘密鍵(KL)133の構成ビットがセットされる。この第2秘密鍵(KL)のセット状態をLFSRの初期状態とする。
その後、線形フィードバックシフトレジスタ(LFSR)121は、規定のシフト動作を順次、実行して、LFSR出力135を生成して出力する。
LFSR出力135は、図に示すO1,O2,・・・のデータシーケンスである。例えば、Oiの各々が1バイト(8ビット)のLFSR出力シーケンス:O1,O2,・・・を生成して排他的論理和(XOR)演算部122に出力する。
線形フィードバックシフトレジスタ(LFSR)121に設定するレジスタ数(設定可能なビット数)は、第2秘密鍵(KL)の鍵長k bit以上とする(k'とする)。周期も最長周期2k'−1となるように、LFSR出力系列の特性を決める特性多項式は、k'次の原始多項式を用いる。
線形フィードバックシフトレジスタ(LFSR)121の構成例について、図6、図7を参照して説明する。
図6は、線形フィードバックシフトレジスタ(LFSR)121に入力する第2秘密鍵(KL)133が128ビットデータであり、線形フィードバックシフトレジスタ(LFSR)121のレジスタ数(設定可能なビット数)も128としたLFSRの構成例である。
まず、レジスタD1〜D128の各々に第2秘密鍵(KL)133の構成ビットをセットする。この状態を初期状態とする。
その後、シフト処理として、
レジスタD1の格納ビット(X1)をレジスタD2、
レジスタD2の格納ビット(X2)をレジスタD3、
・・・
レジスタD127の格納ビット(X127)をレジスタD128、
このように1ビットシフトを行う。
レジスタD1には、以下のデータ(更新D1)を格納する。
更新D1=X128(+)X126(+)X101(+)X99
なお、上記式において、(+)は排他的論理和(XOR)を意味する。
図6に示すLFSRは、出力系列の特性を決める特性多項式として、以下の原始多項式f(x)を用いたLFSRである。
f(x)=X128(+)X126(+)X101(+)X99(+)1
図6に示すLFSRは、この多項式f(x)によって規定される構造を持つLFSRである。
レジスタD128から1ビットデータが、順次、出力される。この出力ビットの所定単位のデータ、たとえば1バイト(8ビット)データを、1つのLFSR出力Oiとして設定する。
図5に示すLFSR出力135は、各々が1バイト(8ビット)データからなるデータシーケンス:O1,O2,O3であり、これをLFSR出力135として排他的論理和(XOR)演算部122に出力する。
図6に示すLFSRは、線形フィードバックシフトレジスタ(LFSR)121に入力する第2秘密鍵(KL)133が128ビットデータである場合のLFSR構成例である。
次に、図7を参照して、線形フィードバックシフトレジスタ(LFSR)121に入力する第2秘密鍵(KL)133が64ビットデータである場合のLFSR構成例について説明する。
図7は、線形フィードバックシフトレジスタ(LFSR)121に入力する第2秘密鍵(KL)133が64ビットデータであり、線形フィードバックシフトレジスタ(LFSR)121のレジスタ数(設定可能なビット数)も64としたLFSRの構成例である。
図7に示すLFSRは、1ビットレジスタD1〜D64を持つ。これらのレジスタD1〜D64の各々に第2秘密鍵(KL)133の構成ビットをセットする。この状態を初期状態とする。
その後、シフト処理として、
レジスタD1の格納ビット(X1)をレジスタD2、
レジスタD2の格納ビット(X2)をレジスタD3、
・・・
レジスタD63の格納ビット(X63)をレジスタD64、
このように1ビットシフトを行う。
レジスタD1には、以下のデータ(更新D1)を格納する。
更新D1=X64(+)X63(+)X61(+)X60
なお、上記式において、(+)は排他的論理和(XOR)を意味する。
図7に示すLFSRは、出力系列の特性を決める特性多項式として、以下の原始多項式f(x)を用いたLFSRである。
f(x)=X64(+)X63(+)X61(+)X60(+)1
図7に示すLFSRは、上記の多項式f(x)によって規定される構造を持つLFSRである。
レジスタD64から1ビットデータが、順次、出力される。この出力ビットの所定単位のデータ、たとえば1バイト(8ビット)データを、1つのLFSR出力Oiとして設定する。
図5に示す暗号処理構成において、LFSR出力135は、各々が1バイト(8ビット)データからなるデータシーケンス:O1,O2,O3であり、これをLFSR出力135として排他的論理和(XOR)演算部122に出力する。
図6、図7を参照して、第2秘密鍵(KL)が128ビット鍵である場合と、64ビット鍵である場合のLFSRの構成例を説明した。図5に示すLFSR121は、これらの他にも、第2秘密鍵(KL)133のビット長に応じた様々な設定が可能である。
図5に示す構成において、排他的論理和(XOR)演算部122では、以下の2つのデータ(a),(b)の排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
(a)第1秘密鍵(Ks)131に基づいて、鍵スケジュール部111、擬似乱数生成部112の処理によって生成された擬似乱数:Za1,Za2,Za3・・・
(b)第2秘密鍵(KL)133に基づいて、線形フィードバックシフトレジスタ(LFSR)121から出力されるLFSR出力:O1,O2,O3・・・
擬似乱数:Za1,Za2,Za3・・・の各々と、LFSR出力:O1,O2,O3・・・の各々のデータは、同一ビット数、例えば1バイト(8ビット)データである。
排他的論理和(XOR)演算部122では、これら2つのデータ、すなわち、
擬似乱数:Za1,Za2,Za3・・・
LFSR出力:O1,O2,O3・・・
これらのデータの排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
キーストリームZb1,Zb2,Zb3・・・は、以下の算出式によって生成される。
Zb1=Za1(+)O1、
Zb2=Za2(+)O2、
Zb3=Za3(+)O3、
・・・
なお、上記式において、(+)は排他的論理和演算(XOR)を意味する。
キーストリーム136は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Zb1,Zb2,Zb3,・・・である。
このように、キーストリーム生成部110の排他的論理和(XOR)演算部122は、各々が所定長のデータからなるデータ列:Zb1,Zb2,Zb3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Zb1,Zb2,Zb3,・・・の各々は、排他的論理和演算部123において、暗号処理対象となる平文141の所定データ単位の分割データ:P1,P2,P3・・・の各々と排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:C1,C2,C3・・・を、暗号文142として出力する。
暗号文C1,C2,C3・・・と、キーストリーム:Zb1,Zb2,Z3・・・と、平文P1,P2,P3・・・との関係は以下の通りである。
C1=P1(+)Zb1
C2=P2(+)Zb2
C3=P3(+)Zb3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zbi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、本実施例1に従ったストリーム暗号による暗号文生成処理は、以下のステップ(Sa1)〜(Sa4)を実行することで行われる。
(Sa1)秘密のパラメータである第1秘密鍵(Ks)と、公開パラメータである初期ベクトル(IV:Initial Vector)から、擬似乱数系列Za1,Za2,Za3・・・を生成する。
(Sa2)秘密のパラメータである第2秘密鍵(KL)から、LFSR出力系列O1,O2,O3・・・を生成する。
(Sa3)擬似乱数系列Za1,Za2,Za3・・・と、LFSR出力系列O1,O2,O3・・・との排他的論理和(XOR)により、キーストリームZb1,Zb2,Zb3・・・を生成する。
(Sa4)平文の構成データP1,P2,P3・・・と、生成したキーストリームZb1,Zb2,Zb3・・・の排他的論理和をとることにより、暗号文C1,C2,C3・・・を生成する。
図5を参照して説明した処理によって生成された暗号文142は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図8は、本実施例1に従った復号処理について説明する図である。
本実施例1のストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実現される。
図8に示す構成において、キーストリーム生成部210は、第1秘密鍵(Ks)231と、初期ベクトル(IV:Initial Vector)232、さらに、第2秘密鍵(KL)233を入力して、キーストリーム(擬似乱数)236を生成する。
第1秘密鍵(Ks)231と、初期ベクトル(IV)232と、第2秘密鍵(KL)233は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第1秘密鍵(Ks)231と、第2秘密鍵(KL)233は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
すなわち、復号対象とする暗号文142が、図5に示す構成によって生成された暗号文142である場合、第1秘密鍵(Ks)231は、図5に示す暗号処理において適用した第1秘密鍵(Ks)131と同一の鍵である。
また、第2秘密鍵(KL)233は、図5に示す暗号処理において適用した第2秘密鍵(Ks)133と同一の鍵である。
一方、初期ベクトル(IV)232は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文142が、図5に示す構成によって生成された暗号文142である場合、初期ベクトル(IV)232も、図5に示す暗号処理において適用した初期ベクトル(IV)132と同一のデータである。
キーストリーム生成部210は、鍵スケジュール部211と、擬似乱数生成部212、さらに、線形フィードバックシフトレジスタ(LFSR)221と、排他的論理和(XOR)演算部222を有する。
鍵スケジュール部211は、第1秘密鍵(Ks)231と、初期ベクトル(IV)232に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部212に出力する。
擬似乱数生成部212は、鍵スケジュール部211から入力する擬似乱数生成用初期データを適用して擬似乱数234を生成して出力する。擬似乱数234は、図に示すZa1,Za2,・・・のデータシーケンスであり、例えば、Zaiの各々が1バイト(8ビット)の擬似乱数シーケンス:Za1,Za2,・・・を生成して排他的論理和(XOR)演算部222に出力する。
一方、第2秘密鍵(KL)233は、線形フィードバックシフトレジスタ(LFSR)221に入力される。
線形フィードバックシフトレジスタ(LFSR)221を構成するレジスタに、第2秘密鍵(KL)233の構成ビットがセットされる。この第2秘密鍵(KL)のセット状態をLFSRの初期状態とする。
その後、線形フィードバックシフトレジスタ(LFSR)221は、規定のシフト動作を順次、実行して、LFSR出力235を生成して出力する。
LFSR出力235は、図に示すO1,O2,・・・のデータシーケンスであり、例えば、Oiの各々が1バイト(8ビット)のLFSR出力シーケンス:O1,O2,・・・を生成して排他的論理和(XOR)演算部222に出力する。
図8に示すキーストリーム生成部210の構成は、図5を参照して説明したキーストリーム生成部110の構成と同一構成である。
線形フィードバックシフトレジスタ(LFSR)221の具体例として図6、図7を参照して2つの例を説明したが、暗号処理に用いたLFSRと復号処理に用いるLFSRは同一構成とする。
図8に示すキーストリーム生成部210の構成を、図5を参照して説明したキーストリーム生成部110の構成と同一とし、入力する各データ、すなわち、第1秘密鍵(Ks)、初期ベクトル(IV)、第2秘密鍵(KL)を同一とすることで、いずれにおいても同一のキーストリームZb1,Zb2,Zb3・・が生成される。
図8に示す構成において、排他的論理和(XOR)演算部222では、以下の2つのデータ(a),(b)の排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
(a)第1秘密鍵(Ks)231に基づいて、鍵スケジュール部211、擬似乱数生成部212の処理によって生成された擬似乱数:Za1,Za2,Za3・・・
(b)第2秘密鍵(KL)233に基づいて、線形フィードバックシフトレジスタ(LFSR)221から出力されるLFSR出力:O1,O2,O3・・・
擬似乱数:Za1,Za2,Za3・・・の各々と、LFSR出力:O1,O2,O3・・・の各々のデータは、同一ビット数、例えば1バイト(8ビット)データである。
排他的論理和(XOR)演算部222では、これら2つのデータ、すなわち、
擬似乱数:Za1,Za2,Za3・・・
LFSR出力:O1,O2,O3・・・
これらのデータの排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
キーストリームZb1,Zb2,Zb3・・・は、以下の算出式によって生成される。
Zb1=Za1(+)O1、
Zb2=Za2(+)O2、
Zb3=Za3(+)O3、
・・・
なお、上記式において、(+)は排他的論理和演算(XOR)を意味する。
キーストリーム236は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Zb1,Zb2,Zb3,・・・である。
このように、キーストリーム生成部210の排他的論理和(XOR)演算部222は、各々が所定長のデータからなるデータ列:Zb1,Zb2,Zb3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Zb1,Zb2,Zb3,・・・の各々は、排他的論理和演算部223において、復号処理対象となる暗号文142の所定データ単位の分割データ:C1,C2,C3・・・の各々と排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:P1,P2,P3・・・が、復号結果としての平文141となる。
平文P1,P2,PC3・・・と、キーストリーム:Zb1,Zb2,Zb3・・・と、暗号文C1,C2,C3・・・との関係は以下の通りである。
P1=C1(+)Zb1
P2=C2(+)Zb2
P3=C3(+)Zb3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zbi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、本実施例1に従ったストリーム暗号による復号処理は、以下のステップ(Sb1)〜(Sb4)を実行することで行われる。
(Sb1)秘密のパラメータである第1秘密鍵(Ks)と、公開パラメータである初期ベクトル(IV:Initial Vector)から、擬似乱数系列Za1,Za2,Za3・・・を生成する。
(Sb2)秘密のパラメータである第2秘密鍵(KL)から、LFSR出力系列O1,O2,O3・・・を生成する。
(Sb3)擬似乱数系列Za1,Za2,Za3・・・と、LFSR出力系列O1,O2,O3・・・との排他的論理和(XOR)により、キーストリームZb1,Zb2,Zb3・・・を生成する。
(Sb4)暗号文C1,C2,C3・・・と、生成したキーストリームZb1,Zb2,Zb3・・・の排他的論理和をとることにより、平文の構成データP1,P2,P3・・・を生成する。
平文生成処理において、ステップ(Sb4)で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
なお、本実施例では、共通の秘密情報として、第1秘密鍵(Ks)と、第2秘密鍵(KL)を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
この実施例1では、先に図1、図2を参照して説明した従来のストリーム暗号処理構成と比較して、例えば以下の優位性を持つ。
(A)安全性の優位性について
例えば、擬似乱数生成部112の出力する擬似乱数Za1,Za2,・・・に偏りがあった場合においても、偏りのあるこれらの擬似乱数Za1,Za2,・・・に対して、0、1の出現頻度が均一なLFSRの出力O1,O2・・・を、排他的論理和(XOR)演算を施して新たなキーストリームZb1,Zb2,・・・を生成することで、偏りを取り除くことができる。
この偏りが除去されたキーストリームZb1,Zb2,・・・を平文に対して適用するため、偏りのないキーストリームを適用した暗号処理が可能となる。
この処理によって、先に図4を参照して説明したブロードキャスト・セッティングを利用した平文回復攻撃を防ぐことができる。
例えばLFSR出力Oiは、各々の値が等確率で生成されるため、ランダムに第1秘密鍵(Ks)と、第2秘密鍵(KL)が与えられる場合、第1秘密鍵(Ks)に基づいて生成される擬似乱数(Zi)、および第2秘密鍵(KL)に基づいて生成されるLFSR出力(Oi)の値の分布は一様になる。
また、仮にLFSRの出力が攻撃者に露呈した場合は、LFSRの性質上、第2秘密鍵(KL)は露呈してしまう。しかしながら、第2秘密鍵(KL)の露呈は、第1秘密鍵(Ks)の露呈には影響しない。従って、全体の安全性は元々のストリーム暗号の安全性より低下しないことが保障される。なお、暗号文等からLFSRの出力を推定するためには、キーストリーム生成部内部の排他的論理和処理以前の擬似乱数系列の推定が必要となり、この推定は極めて困難となる。
(B)実装コストの優位性について
本実施例1において用いる線形フィードバックシフトレジスタ(LFSR)はレジスタと排他的論理和(XOR)演算処理構成のみで実装可能であり、H/W(ハードウェア)で構成した場合の実装コストが小さい。そのため、既存のシステムに付加しても大きなコストアップにならない。また。S/W(ソフトウェア)実装とした場合においても高速処理が可能であり、RC4など、既存のストリーム暗号のパフォーマンスを低下させない。さらにLFSRは同期を取るために必要なカウンターとして用いることも可能であり、他の用途に利用することもできる。
なお、本実施例1を適用可能な既存のストリーム暗号の一例として、例えば、秘密鍵(Ks)として128ビット鍵を適用した128ビットキーRC4がある。
この128ビットキーRC4に本実施例1を適用する場合、秘密鍵(Ks)のサイズを128ビットとし、第2秘密鍵(KL)のビットサイズ、およびLFSRのレジスタ数(セット可能なビット数)のサイズを128ビット、LFSRの周期を最大周期2128−1となるようにLFSRを選択する。
具体的には、LFSRは、先に図6を参照して説明した構成とし、LFSRの構成を規定する特性多項式は、以下の128次の原始多項式とする。
f(x)=X128(+)X126(+)X101(+)X99(+)1
既存のストリーム暗号RC4に、例えば図6を参照して説明したLFSRと、排他的論理和演算部を付加することで、図5を参照して説明したキーストリーム生成部110を構成することが可能である。すなわち、既存の構成をそのまま利用して複数の構成要素を追加するのみで安全性を高めた暗号処理構成を実現することができる。
[2−2.秘密鍵(Ks)に基づくLFSR出力を適用してキーストリームを生成する実施例(実施例2)]
次に、実施例2として、線形フィードバックシフトレジスタ(LFSR)に、鍵スケジュール部に入力する秘密鍵(Ks)と同じ秘密鍵(Ks)を入力して、LFSRの初期状態を設定する実施例について説明する。
すなわち、秘密鍵(Ks)に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵(Ks)に基づくLFSRからの出力とを排他的論理和(XOR)したデータをキーストリームとする実施例である。
図9に本実施例2の暗号処理を実行する暗号処理装置の構成例を示す。
図9に示すキーストリーム生成部110は、先に実施例1の構成として説明した図5に示すキーストリーム生成部110と同一の構成である。
図1に示す構成との差異は、図9に示すキーストリーム生成部110の線形フィードバックシフトレジスタ(LFSR)121に対して、第1秘密鍵(Ks)を入力している点である。
すなわち、実施例2では、図5に示す第2秘密鍵(KL)133を用いず、第1秘密鍵(Ks)を鍵スケジュール部111と、線形フィードバックシフトレジスタ(LFSR)121の双方に入力する。
図9に示すキーストリーム生成部110は、第1秘密鍵(Ks)131と、初期ベクトル(IV:Initial Vector)132を入力して、キーストリーム(擬似乱数)136を生成する。
キーストリーム生成部110は、鍵スケジュール部111と、擬似乱数生成部112、さらに、線形フィードバックシフトレジスタ(LFSR)121と、排他的論理和(XOR)演算部122を有する。
鍵スケジュール部111は、第1秘密鍵(Ks)131と、初期ベクトル(IV)132に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部112に出力する。
擬似乱数生成部112は、鍵スケジュール部111から入力する擬似乱数生成用初期データを適用して擬似乱数134を生成して出力する。擬似乱数134は、図に示すZa1,Za2,・・・のデータシーケンスであり、例えば、Zaiの各々が1バイト(8ビット)の擬似乱数シーケンス:Za1,Za2,・・・を生成して排他的論理和(XOR)演算部122に出力する。
さらに、第1秘密鍵(Ks)131は、線形フィードバックシフトレジスタ(LFSR)121に入力される。
線形フィードバックシフトレジスタ(LFSR)121を構成するレジスタに、第1秘密鍵(Ks)131の構成ビットがセットされる。この第1秘密鍵(Ks)のセット状態をLFSRの初期状態とする。
その後、線形フィードバックシフトレジスタ(LFSR)121は、規定のシフト動作を順次、実行して、LFSR出力135を生成して出力する。
LFSR出力135は、図に示すO1,O2,・・・のデータシーケンスであり、例えば、Oiの各々が1バイト(8ビット)のLFSR出力シーケンス:O1,O2,・・・を生成して排他的論理和(XOR)演算部122に出力する。
線形フィードバックシフトレジスタ(LFSR)121に設定するレジスタ数(設定可能なビット数)は、第1秘密鍵(Ks)の鍵長k bit以上とする(k'とする)。周期も最大周期2k'−1となるように、出力系列の特性を決める特性多項式は原始多項式を用いる。
具体的には、例えば、先に図6、図7を参照して説明した構成を持つ。
排他的論理和(XOR)演算部122では、以下の2つのデータ(a),(b)の排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
(a)第1秘密鍵(Ks)131に基づいて、鍵スケジュール部111、擬似乱数生成部112の処理によって生成された擬似乱数:Za1,Za2,Za3・・・
(b)第1秘密鍵(Ks)131に基づいて、線形フィードバックシフトレジスタ(LFSR)121から出力されるLFSR出力:O1,O2,O3・・・
擬似乱数:Za1,Za2,Za3・・・の各々と、LFSR出力:O1,O2,O3・・・の各々のデータは、同一ビット数、例えば1バイト(8ビット)データである。
排他的論理和(XOR)演算部122では、これら2つのデータ、すなわち、
擬似乱数:Za1,Za2,Za3・・・
LFSR出力:O1,O2,O3・・・
これらのデータの排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
キーストリームZb1,Zb2,Zb3・・・は、以下の算出式によって生成される。
Zb1=Za1(+)O1、
Zb2=Za2(+)O2、
Zb3=Za3(+)O3、
・・・
なお、上記式において、(+)は排他的論理和演算(XOR)を意味する。
キーストリーム136は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Zb1,Zb2,Zb3,・・・である。
このように、キーストリーム生成部110の排他的論理和(XOR)演算部122は、各々が所定長のデータからなるデータ列:Zb1,Zb2,Zb3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Zb1,Zb2,Zb3,・・・の各々は、排他的論理和演算部123において、暗号処理対象となる平文141の所定データ単位の分割データ:P1,P2,P3・・・の各々と排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:C1,C2,C3・・・を、暗号文142として出力する。
暗号文C1,C2,C3・・・と、キーストリーム:Zb1,Zb2,Z3・・・と、平文P1,P2,P3・・・との関係は以下の通りである。
C1=P1(+)Zb1
C2=P2(+)Zb2
C3=P3(+)Zb3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zbi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、本実施例2に従ったストリーム暗号による暗号文生成処理は、以下のステップ(Sa1)〜(Sa4)を実行することで行われる。
(Sa1)秘密のパラメータである第1秘密鍵(Ks)と、公開パラメータである初期ベクトル(IV:Initial Vector)から、擬似乱数系列Za1,Za2,Za3・・・を生成する。
(Sa2)秘密のパラメータである第1秘密鍵(Ks)から、LFSR出力系列O1,O2,O3・・・を生成する。
(Sa3)擬似乱数系列Za1,Za2,Za3・・・と、LFSR出力系列O1,O2,O3・・・との排他的論理和(XOR)により、キーストリームZb1,Zb2,Zb3・・・を生成する。
(Sa4)平文の構成データP1,P2,P3・・・と、生成したキーストリームZb1,Zb2,Zb3・・・の排他的論理和をとることにより、暗号文C1,C2,C3・・・を生成する。
図9を参照して説明した処理によって生成された暗号文142は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図10は、本実施例2に従った復号処理について説明する図である。
本実施例2のストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実現される。
図10に示す構成において、キーストリーム生成部210は、第1秘密鍵(Ks)231と、初期ベクトル(IV:Initial Vector)232を入力して、キーストリーム(擬似乱数)236を生成する。
第1秘密鍵(Ks)231と、初期ベクトル(IV)232は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第1秘密鍵(Ks)231は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
一方、初期ベクトル(IV)232は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文142が、図9に示す構成によって生成された暗号文142である場合、初期ベクトル(IV)232も、図9に示す暗号処理において適用した初期ベクトル(IV)132と同一のデータである。
キーストリーム生成部210は、鍵スケジュール部211と、擬似乱数生成部212、さらに、線形フィードバックシフトレジスタ(LFSR)221と、排他的論理和(XOR)演算部222を有する。
鍵スケジュール部211は、第1秘密鍵(Ks)231と、初期ベクトル(IV)232に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部212に出力する。
擬似乱数生成部212は、鍵スケジュール部211から入力する擬似乱数生成用初期データを適用して擬似乱数234を生成して出力する。擬似乱数234は、図に示すZa1,Za2,・・・のデータシーケンスであり、例えば、Zaiの各々が1バイト(8ビット)の擬似乱数シーケンス:Za1,Za2,・・・を生成して排他的論理和(XOR)演算部222に出力する。
さらに、第1秘密鍵(Ks)231は、線形フィードバックシフトレジスタ(LFSR)221に入力される。
線形フィードバックシフトレジスタ(LFSR)221を構成するレジスタに、第1秘密鍵(Ks)231の構成ビットがセットされる。この第1秘密鍵(Ks)のセット状態をLFSRの初期状態とする。
その後、線形フィードバックシフトレジスタ(LFSR)221は、規定のシフト動作を順次、実行して、LFSR出力235を生成して出力する。
LFSR出力235は、図に示すO1,O2,・・・のデータシーケンスであり、例えば、Oiの各々が1バイト(8ビット)のLFSR出力シーケンス:O1,O2,・・・を生成して排他的論理和(XOR)演算部222に出力する。
図10に示すキーストリーム生成部210の構成は、図9を参照して説明したキーストリーム生成部110の構成と同一構成である。
線形フィードバックシフトレジスタ(LFSR)221の具体例として図6、図7を参照して2つの例を説明したが、暗号処理に用いたLFSRと復号処理に用いるLFSRは同一構成とする。
図10に示すキーストリーム生成部210の構成を、図9を参照して説明したキーストリーム生成部110の構成と同一とし、入力する各データ、すなわち、第1秘密鍵(Ks)、初期ベクトル(IV)を同一とすることで、いずれにおいても同一のキーストリームZb1,Zb2,Zb3・・が生成される。
図10に示す構成において、排他的論理和(XOR)演算部222では、以下の2つのデータ(a),(b)の排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
(a)第1秘密鍵(Ks)231に基づいて、鍵スケジュール部211、擬似乱数生成部212の処理によって生成された擬似乱数:Za1,Za2,Za3・・・
(b)第1秘密鍵(Ks)231に基づいて、線形フィードバックシフトレジスタ(LFSR)221から出力されるLFSR出力:O1,O2,O3・・・
擬似乱数:Za1,Za2,Za3・・・の各々と、LFSR出力:O1,O2,O3・・・の各々のデータは、同一ビット数、例えば1バイト(8ビット)データである。
排他的論理和(XOR)演算部222では、これら2つのデータ、すなわち、
擬似乱数:Za1,Za2,Za3・・・
LFSR出力:O1,O2,O3・・・
これらのデータの排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
キーストリームZb1,Zb2,Zb3・・・は、以下の算出式によって生成される。
Zb1=Za1(+)O1、
Zb2=Za2(+)O2、
Zb3=Za3(+)O3、
・・・
なお、上記式において、(+)は排他的論理和演算(XOR)を意味する。
キーストリーム236は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Zb1,Zb2,Zb3,・・・である。
このように、キーストリーム生成部210の排他的論理和(XOR)演算部222は、各々が所定長のデータからなるデータ列:Zb1,Zb2,Zb3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Zb1,Zb2,Zb3,・・・の各々は、排他的論理和演算部223において、復号処理対象となる暗号文141の所定データ単位の分割データ:C1,C2,C3・・・の各々と排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:P1,P2,P3・・・が、復号結果としての平文142となる。
平文P1,P2,PC3・・・と、キーストリーム:Zb1,Zb2,Zb3・・・と、暗号文C1,C2,C3・・・との関係は以下の通りである。
P1=C1(+)Zb1
P2=C2(+)Zb2
P3=C3(+)Zb3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zbi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、本実施例2に従ったストリーム暗号による復号処理は、以下のステップ(Sb1)〜(Sb4)を実行することで行われる。
(Sb1)秘密のパラメータである第1秘密鍵(Ks)と、公開パラメータである初期ベクトル(IV:Initial Vector)から、擬似乱数系列Za1,Za2,Za3・・・を生成する。
(Sb2)秘密のパラメータである第1秘密鍵(Ks)から、LFSR出力系列O1,O2,O3・・・を生成する。
(Sb3)擬似乱数系列Za1,Za2,Za3・・・と、LFSR出力系列O1,O2,O3・・・との排他的論理和(XOR)により、キーストリームZb1,Zb2,Zb3・・・を生成する。
(Sb4)暗号文C1,C2,C3・・・と、生成したキーストリームZb1,Zb2,Zb3・・・の排他的論理和をとることにより、平文の構成データP1,P2,P3・・・を生成する。
平文生成処理において、ステップ(Sb4)で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
なお、本実施例では、共通の秘密情報として、第1秘密鍵(Ks)を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
この実施例2では、先に図1、図2を参照して説明した従来のストリーム暗号処理構成と比較して、例えば以下の優位性を持つ。
(A)安全性の優位性について
例えば、図9に示す擬似乱数生成部112の出力する擬似乱数Za1,Za2,・・・に偏りがあった場合においても、偏りのあるこれらの擬似乱数Za1,Za2,・・・に対して、0、1の出現頻度が均一なLFSRの出力O1,O2・・・を、排他的論理和(XOR)演算を施して新たなキーストリームZb1,Zb2,・・・を生成することで、偏りを取り除くことができる。
この偏りが除去されたキーストリームZb1,Zb2,・・・を平文に対して適用するため、偏りのないキーストリームを適用した暗号処理が可能となる。
この処理によって、先に図4を参照して説明したブロードキャスト・セッティングを利用した平文回復攻撃を防ぐことができる。
例えばLFSR出力Oiは、各々の値が等確率で生成されるため、ランダムに第1秘密鍵(Ks)が与えられる場合、第1秘密鍵(Ks)に基づいて生成される擬似乱数(Zi)、およびLFSR出力(Oi)の値の分布は一様になる。
また、仮にLFSRの出力が攻撃者に露呈した場合は、LFSRの性質上、第1秘密鍵(Ks)は露呈してしまう。しかしながら、暗号文等からLFSRの出力推定には、キーストリーム生成部内部の排他的論理和処理以前の擬似乱数系列の推定も必要となり、この推定は極めて困難である。
(B)実装コストの優位性について
本実施例2において用いる線形フィードバックシフトレジスタ(LFSR)はレジスタと排他的論理和(XOR)演算処理構成のみで実装可能であり、H/W(ハードウェア)で構成した場合の実装コストが小さい。そのため、既存のシステムに付加しても大きなコストアップにならない。また。S/W(ソフトウェア)実装とした場合においても高速処理が可能である。また、新たな鍵も必要なく、LFSRを追加するのみでよいので、実装コストを最小限に抑えることが可能である。
なお、本実施例2を適用可能な既存のストリーム暗号の一例として、例えば、秘密鍵(Ks)として128ビット鍵を適用した128ビットキーRC4がある。
この128ビットキーRC4に本実施例2を適用する場合、秘密鍵(Ks)のサイズを128ビットとし、LFSRのレジスタ数(セット可能なビット数)のサイズは128ビット、周期は最大周期2128−1となるようにLFSRを選択する。
具体的には、LFSRは、先に図6を参照して説明した構成とし、LFSRの出力系列を決める特性多項式は、以下の128次の原始多項式とする。
f(x)=X128(+)X126(+)X101(+)X99(+)1
既存のストリーム暗号RC4に、図6を参照して説明したLFSRと、排他的論理和演算部を付加することで、図9を参照して説明したキーストリーム生成部110を構成することが可能である。すなわち、既存の構成をそのまま利用してわずかな構成追加を行うのみで、安全性を高めた暗号処理構成を実現することができる。
[2−3.第1の秘密鍵(Ks)の変換データに基づくLFSR出力を適用してキーストリームを生成する実施例(実施例3)]
次に、実施例3として、線形フィードバックシフトレジスタ(LFSR)に、鍵スケジュール部に入力する秘密鍵(Ks)と同じ秘密鍵(Ks)を変換したデータ(Ks2)を入力して、LFSRの初期状態を設定する実施例について説明する。
すなわち、秘密鍵(Ks)に基づいて鍵スケジュール部と擬似乱数生成部の処理によって生成した擬似乱数と、同じ秘密鍵(Ks)の変換データ(Ks2)に基づくLFSRからの出力とを排他的論理和(XOR)したデータをキーストリームとする実施例である。
図11に本実施例3の暗号処理を実行する暗号処理装置の構成例を示す。
図11に示すキーストリーム生成部510は、先に実施例1の構成として説明した図5に示すキーストリーム生成部110に、鍵変換部521を追加した構成を持つ。
さらに、図1に示す構成との差異は、図11に示すキーストリーム生成部510の線形フィードバックシフトレジスタ(LFSR)522の前段に追加した鍵変換部521に第1秘密鍵(Ks)を入力している点である。
すなわち、実施例3では、実施例2と同様、図5に示す第2秘密鍵(KL)133を用いず、第1秘密鍵(Ks)を、スケジュール部511と、線形フィードバックシフトレジスタ(LFSR)522の前段の鍵変換部521の双方に入力する構成を持つ。
図11に示すキーストリーム生成部510は、第1秘密鍵(Ks)531と、初期ベクトル(IV:Initial Vector)532を入力して、キーストリーム(擬似乱数)536を生成する。
キーストリーム生成部510は、鍵スケジュール部511と、擬似乱数生成部512、さらに、鍵変換部521と、線形フィードバックシフトレジスタ(LFSR)522、排他的論理和(XOR)演算部523を有する。
鍵スケジュール部511は、第1秘密鍵(Ks)531と、初期ベクトル(IV)532に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部512に出力する。
擬似乱数生成部512は、鍵スケジュール部511から入力する擬似乱数生成用初期データを適用して擬似乱数534を生成して出力する。擬似乱数534は、図に示すZa1,Za2,・・・のデータシーケンスであり、例えば、Zaiの各々が1バイト(8ビット)の擬似乱数シーケンス:Za1,Za2,・・・を生成して排他的論理和(XOR)演算部523に出力する。
さらに、第1秘密鍵(Ks)531は、鍵変換部521に入力される。
鍵変換部521の具体的な一構成例を図12に示す。
鍵変換部521は、図12に示すように、ハッシュ関数(SHA−1)実行部551、ビット数調整部552を有する。
ハッシュ関数(SHA−1)実行部551は、入力データである第1秘密鍵(Ks)に対して、たとえばSHA−1等のハッシュ関数を適用して、ハッシュデータを生成する。
ビット数調整部552は、ハッシュ関数実行部551からの入力に対して、ビット数調整処理を実行し、ビット数調整後の鍵変換データを線形フィードバックシフトレジスタ(LFSR)522に入力する。
具体的には、例えば、第1秘密鍵(Ks)531が128ビットデータである場合、ハッシュ関数(SHA−1)実行部551は、入力データである第1秘密鍵(Ks)に対して、たとえばSHA−1等の一方向性ハッシュ関数を適用して、160ビットのハッシュデータを生成する。
ビット数調整部552は、ハッシュ関数実行部551から入力する160ビットデータに対して、ビット数調整処理を実行し、128ビットの変換鍵データ(Ks2)を生成して線形フィードバックシフトレジスタ(LFSR)522に入力する。
なお、図12に示す鍵変換部521の構成は一例であり、鍵データ変換部521は、この他の構成を適用して、入力鍵データを変換する構成としてもよい。
鍵データ変換部521が、第1秘密鍵(Ks)531に基づいて生成した変換鍵データ(Ks2)は、線形フィードバックシフトレジスタ(LFSR)522に入力される。
線形フィードバックシフトレジスタ(LFSR)522を構成するレジスタに、第1秘密鍵(Ks)531に基づいて生成された変換鍵データ(Ks2)の構成ビットがセットされる。この変換鍵データ(Ks2)のセット状態をLFSRの初期状態とする。
その後、線形フィードバックシフトレジスタ(LFSR)522は、規定のシフト動作を順次、実行して、LFSR出力535を生成して出力する。
LFSR出力535は、図に示すO1,O2,・・・のデータシーケンスであり、例えば、Oiの各々が1バイト(8ビット)のLFSR出力シーケンス:O1,O2,・・・を生成して排他的論理和(XOR)演算部523に出力する。
線形フィードバックシフトレジスタ(LFSR)522に設定するレジスタ数(設定可能なビット数)は、第1秘密鍵(Ks)の鍵長k bit以上とする(k'とする)。周期も最大周期2k'−1となるように、特性多項式は原始多項式を用いる。
具体的には、例えば、先に図6、図7を参照して説明した構成を持つ。
排他的論理和(XOR)演算部523では、以下の2つのデータ(a),(b)の排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
(a)第1秘密鍵(Ks)531に基づいて、鍵スケジュール部511、擬似乱数生成部512の処理によって生成された擬似乱数:Za1,Za2,Za3・・・
(b)第1秘密鍵(Ks)531に基づく変換鍵データ(Ks2)に基づいて、線形フィードバックシフトレジスタ(LFSR)522から出力されるLFSR出力:O1,O2,O3・・・
擬似乱数:Za1,Za2,Za3・・・の各々と、LFSR出力:O1,O2,O3・・・の各々のデータは、同一ビット数、例えば1バイト(8ビット)データである。
排他的論理和(XOR)演算部523では、これら2つのデータ、すなわち、
擬似乱数:Za1,Za2,Za3・・・
LFSR出力:O1,O2,O3・・・
これらのデータの排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
キーストリームZb1,Zb2,Zb3・・・は、以下の算出式によって生成される。
Zb1=Za1(+)O1、
Zb2=Za2(+)O2、
Zb3=Za3(+)O3、
・・・
なお、上記式において、(+)は排他的論理和演算(XOR)を意味する。
キーストリーム536は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Zb1,Zb2,Zb3,・・・である。
このように、キーストリーム生成部510の排他的論理和(XOR)演算部523は、各々が所定長のデータからなるデータ列:Zb1,Zb2,Zb3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Zb1,Zb2,Zb3,・・・の各々は、排他的論理和演算部524において、暗号処理対象となる平文141の所定データ単位の分割データ:P1,P2,P3・・・の各々と排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:C1,C2,C3・・・を、暗号文542として出力する。
暗号文C1,C2,C3・・・と、キーストリーム:Zb1,Zb2,Z3・・・と、平文P1,P2,P3・・・との関係は以下の通りである。
C1=P1(+)Zb1
C2=P2(+)Zb2
C3=P3(+)Zb3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zbi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、本実施例3に従ったストリーム暗号による暗号文生成処理は、以下のステップ(Sa1)〜(Sa4)を実行することで行われる。
(Sa1)秘密のパラメータである第1秘密鍵(Ks)と、公開パラメータである初期ベクトル(IV:Initial Vector)から、擬似乱数系列Za1,Za2,Za3・・・を生成する。
(Sa2)秘密のパラメータである第1秘密鍵(Ks)の変換処理を実行して変換鍵データ(Ks2)を生成し、変換鍵データ(Ks2)から、LFSR出力系列O1,O2,O3・・・を生成する。
(Sa3)擬似乱数系列Za1,Za2,Za3・・・と、LFSR出力系列O1,O2,O3・・・との排他的論理和(XOR)により、キーストリームZb1,Zb2,Zb3・・・を生成する。
(Sa4)平文の構成データP1,P2,P3・・・と、生成したキーストリームZb1,Zb2,Zb3・・・の排他的論理和をとることにより、暗号文C1,C2,C3・・・を生成する。
図11を参照して説明した処理によって生成された暗号文542は、例えば、ネットワークを介して転送され、他のユーザの情報処理装置によって受信され、復号処理が実行される。
図13は、本実施例3に従った復号処理について説明する図である。
本実施例3のストリーム暗号に従った暗号処理と復号処理は、同一の装置構成を用いて実現される。
図13に示す構成において、キーストリーム生成部610は、第1秘密鍵(Ks)631と、初期ベクトル(IV:Initial Vector)632を入力して、キーストリーム(擬似乱数)636を生成する。
第1秘密鍵(Ks)631と、初期ベクトル(IV)632は、暗号処理を実行する装置、例えばユーザの情報処理装置に予め格納されたデータである。
第1秘密鍵(Ks)631は、秘密情報であり、公開されたデータではない。特定のユーザ間、例えば暗号文生成ユーザと、暗号文を復号するユーザ間で共有される秘密情報である。
一方、初期ベクトル(IV)632は、公開データであり、不特定多数のユーザが知ることができるデータである。
復号対象とする暗号文542が、図11に示す構成によって生成された暗号文542である場合、初期ベクトル(IV)632も、図11に示す暗号処理において適用した初期ベクトル(IV)532と同一のデータである。
キーストリーム生成部610は、鍵スケジュール部611と、擬似乱数生成部612、さらに、鍵変換部621、線形フィードバックシフトレジスタ(LFSR)622、排他的論理和(XOR)演算部623を有する。
鍵スケジュール部611は、第1秘密鍵(Ks)631と、初期ベクトル(IV)632に基づいて、擬似乱数生成用初期データを生成して擬似乱数生成部612に出力する。
擬似乱数生成部612は、鍵スケジュール部611から入力する擬似乱数生成用初期データを適用して擬似乱数634を生成して出力する。擬似乱数634は、図に示すZa1,Za2,・・・のデータシーケンスであり、例えば、Zaiの各々が1バイト(8ビット)の擬似乱数シーケンス:Za1,Za2,・・・を生成して排他的論理和(XOR)演算部623に出力する。
さらに、第1秘密鍵(Ks)631は、鍵変換部621に入力される。
鍵変換部621は、図11の構成における鍵変換部521と同一の構成を持つ。すなわち、例えば図12に示すように、ハッシュ関数(SHA−1)実行部551、ビット数調整部552によって構成される。
鍵データ変換部621が、第1秘密鍵(Ks)631に基づいて生成した変換鍵データ(Ks2)は、線形フィードバックシフトレジスタ(LFSR)622に入力される。
線形フィードバックシフトレジスタ(LFSR)622を構成するレジスタに、第1秘密鍵(Ks)631に基づいて生成された変換鍵データ(Ks2)の構成ビットがセットされる。この変換鍵データ(Ks2)のセット状態をLFSRの初期状態とする。
その後、線形フィードバックシフトレジスタ(LFSR)622は、規定のシフト動作を順次、実行して、LFSR出力635を生成して出力する。
LFSR出力635は、図に示すO1,O2,・・・のデータシーケンスであり、例えば、Oiの各々が1バイト(8ビット)のLFSR出力シーケンス:O1,O2,・・・を生成して排他的論理和(XOR)演算部623に出力する。
図13に示すキーストリーム生成部610の構成は、図11を参照して説明したキーストリーム生成部510の構成と同一構成である。
線形フィードバックシフトレジスタ(LFSR)622は、例えば、先に具体例として説明した図6、図7に示す構成を持つ。なお、暗号処理に用いたLFSRと復号処理に用いるLFSRは同一構成とする。
図13に示すキーストリーム生成部610の構成を、図11を参照して説明したキーストリーム生成部510の構成と同一とし、入力する各データ、すなわち、第1秘密鍵(Ks)、初期ベクトル(IV)を同一とすることで、いずれにおいても同一のキーストリームZb1,Zb2,Zb3・・が生成される。
図13に示す構成において、排他的論理和(XOR)演算部623では、以下の2つのデータ(a),(b)の排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
(a)第1秘密鍵(Ks)631に基づいて、鍵スケジュール部611、擬似乱数生成部612の処理によって生成された擬似乱数:Za1,Za2,Za3・・・
(b)第1秘密鍵(Ks)631に基づく変換鍵データ(Ks2)に基づいて、線形フィードバックシフトレジスタ(LFSR)622から出力されるLFSR出力:O1,O2,O3・・・
擬似乱数:Za1,Za2,Za3・・・の各々と、LFSR出力:O1,O2,O3・・・の各々のデータは、同一ビット数、例えば1バイト(8ビット)データである。
排他的論理和(XOR)演算部623では、これら2つのデータ、すなわち、
擬似乱数:Za1,Za2,Za3・・・
LFSR出力:O1,O2,O3・・・
これらのデータの排他的論理和(XOR)演算を実行して、キーストリームZb1,Zb2,Zb3・・・を生成して出力する。
キーストリームZb1,Zb2,Zb3・・・は、以下の算出式によって生成される。
Zb1=Za1(+)O1、
Zb2=Za2(+)O2、
Zb3=Za3(+)O3、
・・・
なお、上記式において、(+)は排他的論理和演算(XOR)を意味する。
キーストリーム636は、各々が所定ビット単位のデータからなるデータ列によって構成される。具体的には例えば各々が1バイト(8ビット)データからなるデータ列:Zb1,Zb2,Zb3,・・・である。
このように、キーストリーム生成部610の排他的論理和(XOR)演算部623は、各々が所定長のデータからなるデータ列:Zb1,Zb2,Zb3,・・・をキーストリームとして順次、出力する。
キーストリーム構成要素である所定ビット単位のデータ:Zb1,Zb2,Zb3,・・・の各々は、排他的論理和演算部624において、復号処理対象となる暗号文542の所定データ単位の分割データ:C1,C2,C3・・・の各々と排他的論理和(XOR)演算が実行される。
この排他的論理和演算結果として算出するデータ列:P1,P2,P3・・・が、復号結果としての平文541となる。
平文P1,P2,PC3・・・と、キーストリーム:Zb1,Zb2,Zb3・・・と、暗号文C1,C2,C3・・・との関係は以下の通りである。
P1=C1(+)Zb1
P2=C2(+)Zb2
P3=C3(+)Zb3
・・・
なお、上記式において(+)は、排他的論理和演算を意味する。
また、平文の構成要素Pi、キーストリームの構成要素Zbi、暗号文構成要素Ci、これらの各構成要素は、いずれも同一ビット数、例えば1バイト(8ビット)のデータである。
このように、本実施例3に従ったストリーム暗号による復号処理は、以下のステップ(Sb1)〜(Sb4)を実行することで行われる。
(Sb1)秘密のパラメータである第1秘密鍵(Ks)と、公開パラメータである初期ベクトル(IV:Initial Vector)から、擬似乱数系列Za1,Za2,Za3・・・を生成する。
(Sb2)秘密のパラメータである第1秘密鍵(Ks)に基づいて生成される変換鍵データ(Ks2)から、LFSR出力系列O1,O2,O3・・・を生成する。
(Sb3)擬似乱数系列Za1,Za2,Za3・・・と、LFSR出力系列O1,O2,O3・・・との排他的論理和(XOR)により、キーストリームZb1,Zb2,Zb3・・・を生成する。
(Sb4)暗号文C1,C2,C3・・・と、生成したキーストリームZb1,Zb2,Zb3・・・の排他的論理和をとることにより、平文の構成データP1,P2,P3・・・を生成する。
平文生成処理において、ステップ(Sb4)で実行する排他的論理和の性質上、暗号文生成時に利用したキーストリームと同じキーストリームを用いて、暗号文の排他的論理和をとることにより平文を得ることができる。
なお、本実施例では、共通の秘密情報として、第1秘密鍵(Ks)を送信者と受信者で安全に共有することにより、暗号化および復号処理が可能となる。
この実施例3では、先に図1、図2を参照して説明した従来のストリーム暗号処理構成と比較して、例えば以下の優位性を持つ。
(A)安全性の優位性について
例えば、図11に示す擬似乱数生成部512の出力する擬似乱数Za1,Za2,・・・に偏りがあった場合においても、偏りのあるこれらの擬似乱数Za1,Za2,・・・に対して、0、1の出現頻度が均一なLFSRの出力O1,O2・・・を、排他的論理和(XOR)演算を施して新たなキーストリームZb1,Zb2,・・・を生成することで、偏りを取り除くことができる。
この偏りが除去されたキーストリームZb1,Zb2,・・・を平文に対して適用するため、偏りのないキーストリームを適用した暗号処理が可能となる。
この処理によって、先に図4を参照して説明したブロードキャスト・セッティング時の平文回復攻撃を防ぐことができる。
例えばLFSR出力Oiは、各々の値が等確率で生成されるため、ランダムに第1秘密鍵(Ks)が与えられる場合、第1秘密鍵(Ks)に基づいて生成される擬似乱数(Zi)、およびLFSR出力(Oi)の値の分布は一様になる。
また、仮にLFSRの出力が攻撃者に露呈した場合は、LFSRの性質上、第1秘密鍵(Ks)に基づいて生成された変換鍵データ(Ks2)は露呈してしまう。しかし、第1秘密鍵(Ks)自体は露呈することがない。
また、暗号文等からLFSRの出力推定には、キーストリーム生成部内部の排他的論理和処理以前の擬似乱数系列の推定も必要となり、この推定は極めて困難である。
(B)実装コストの優位性について
本実施例3において用いる線形フィードバックシフトレジスタ(LFSR)はレジスタと排他的論理和(XOR)演算処理構成のみで実装可能であり、H/W(ハードウェア)で構成した場合の実装コストが小さい。そのため、既存のシステムに付加しても大きなコストアップにならない。また。S/W(ソフトウェア)実装とした場合においても高速処理が可能である。また、新たな鍵も必要なく、LFSRを追加するのみでよいので、実装コストを最小限に抑えることが可能である。
なお、本実施例3を適用可能な既存のストリーム暗号の一例として、例えば、秘密鍵(Ks)として128ビット鍵を適用した128ビットキーRC4がある。
この128ビットキーRC4に本実施例3を適用する場合、秘密鍵(Ks)のサイズを128ビットとし、LFSRのレジスタ数(セット可能なビット数)のサイズは128ビット、その周期は最大周期2128−1となるようにLFSRを選択する。
具体的には、LFSRは、先に図6を参照して説明した構成とし、LFSRの出力系列の特性を決める特性多項式は、以下の128次の原始多項式とする。
f(x)=X128(+)X126(+)X101(+)X99(+)1
既存のストリーム暗号RC4に、図6を参照して説明したLFSRと、鍵排他的変換部、および論理和演算部を付加することで、図11を参照して説明したキーストリーム生成部510を構成することが可能であり、既存の構成をそのまま利用して、安全性を高めた暗号処理構成を実現することができる。
[3.暗号処理装置の構成例について]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の構成例について説明する。
上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康・医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な機器において利用可能である。
本開示の暗号処理を実行する装置の一例としてのICモジュール800の構成例を図14に示す。上述の処理は、例えばPC、ICカード、リーダライタ、スマートフォンやウェアラブルデバイス等の様々な情報処理装置において実行可能であり、図14に示すICモジュール800は、これら様々な機器に構成することが可能である。
図14に示すCPU(Central processing Unit)801は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ802は、CPU801が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read−Only−Memory)、CPU801の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ802は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部803は、上記において説明した暗号処理構成を有し、共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU801がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器804は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部805は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
なお、上述した実施例において説明した暗号処理装置は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
図15は、本開示に係る暗号処理を実行するスマートフォン900の概略的な構成の一例を示すブロック図である。スマートフォン900は、プロセッサ901、メモリ902、ストレージ903、外部接続インタフェース904、カメラ906、センサ907、マイクロフォン908、入力デバイス909、表示デバイス910、スピーカ911、無線通信インタフェース913、アンテナスイッチ914、アンテナ915、バス917、バッテリー918及び補助コントローラ919を備える。
プロセッサ901は、例えばCPU(Central Processing Unit)又はSoC(System on Chip)であってよく、スマートフォン900のアプリケーションレイヤ及びその他のレイヤの機能を制御し、また、暗号処理を制御する。メモリ902は、RAM(Random Access Memory)及びROM(Read Only Memory)を含み、プロセッサ901により実行されるプログラム及びデータを記憶する。また、メモリ902は、暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。ストレージ903は、半導体メモリ又はハードディスクなどの記憶媒体を含み得る。外部接続インタフェース904は、メモリーカード又はUSB(Universal Serial Bus)デバイスなどの外付けデバイスをスマートフォン900へ接続するためのインタフェースである。
カメラ906は、例えば、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子を有し、撮像画像を生成する。センサ907は、例えば、測位センサ、ジャイロセンサ、地磁気センサ及び加速度センサなどのセンサ群を含み得る。マイクロフォン908は、スマートフォン900へ入力される音声を音声信号へ変換する。カメラ906で生成された画像や、センサ907で取得されたセンサデータ、マイクロフォン908で取得した音声信号などは、プロセッサ901により暗号化され無線通信インタフェース913を介して他の装置に送信されてもよい。入力デバイス909は、例えば、表示デバイス910の画面上へのタッチを検出するタッチセンサ、キーパッド、キーボード、ボタン又はスイッチなどを含み、ユーザからの操作又は情報入力を受け付ける。表示デバイス910は、液晶ディスプレイ(LCD)又は有機発光ダイオード(OLED)ディスプレイなどの画面を有し、スマートフォン900の出力画像を表示する。スピーカ911は、スマートフォン900から出力される音声信号を音声に変換する。
無線通信インタフェース913は、無線通信を実行し、典型的には、ベースバンドプロセッサ、RF(Radio Frequency)回路及びパワーアンプなどを含み得る。無線通信インタフェース913は、通信制御プログラムを記憶するメモリ、当該プログラムを実行するプロセッサ及び関連する回路を集積したワンチップのモジュールであってもよい。無線通信インタフェース913は、無線LAN方式に加えて、近距離無線通信方式、近接無線通信方式又はセルラ通信方式などの他の種類の無線通信方式をサポートしてもよい。
バス917は、プロセッサ901、メモリ902、ストレージ903、外部接続インタフェース904、カメラ906、センサ907、マイクロフォン908、入力デバイス909、表示デバイス910、スピーカ911、無線通信インタフェース913及び補助コントローラ919を互いに接続する。バッテリー918は、図中に破線で部分的に示した給電ラインを介して、図15に示したスマートフォン900の各ブロックへ電力を供給する。補助コントローラ919は、例えば、スリープモードにおいて、スマートフォン900の必要最低限の機能を動作させる。
なお、上述した実施例において説明したスマートフォンにおける暗号処理は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
また、図15に示すスマートフォン900に図14に示すICモジュール800を搭載し、上述した実施例に従った暗号処理をICモジュール800において実行する構成としてもよい。
[4.本開示の構成のまとめ]
以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、本明細書において開示した技術は、以下のような構成をとることができる。
(1) 暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、
前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理装置。
(2) 前記第1の秘密鍵と前記第2の秘密鍵は、異なる秘密鍵である(1)に記載の暗号処理装置。
(3) 前記第1の秘密鍵と前記第2の秘密鍵は、同一の秘密鍵である(1)に記載の暗号処理装置。
(4) 前記第2の秘密鍵は、前記第1の秘密鍵に基づくデータ変換処理によって生成された鍵である(1)に記載の暗号処理装置。
(5) 前記キーストリーム生成部は、鍵変換部を有し、
前記鍵変換部は、前記第1の秘密鍵を入力して該第1の秘密鍵と異なる第2の秘密鍵を生成して前記線形フィードバックレジスタ(LFSR)に入力する(1)に記載の暗号処理装置。
(6) 前記鍵変換部は、
一方向性ハッシュ関数を適用したデータ変換を実行する(5)に記載の暗号処理装置。
(7) 前記擬似乱数生成部は、1バイト単位の擬似乱数を生成し、
前記線形フィードバックレジスタ(LFSR)は、1バイト単位のLFSR出力を生成し、
前記排他的論理和演算部は、1バイト単位の擬似乱数と、1バイト単位のLFSR出力との排他的論理和演算を実行して、1バイト単位の暗号鍵データからなるキーストリームを生成する(1〜(6)いずれかに記載の暗号処理装置。
(8) 前記線形フィードバックレジスタ(LFSR)は、特性多項式が、
f(x)=X128(+)X126(+)X101(+)X99(+)1
上記の128次の原始多項式によって規定される構成である(1)〜(7)いずれかに記載の暗号処理装置。
(9) 前記線形フィードバックレジスタ(LFSR)は、特性多項式が、
f(x)=X64(+)X63(+)X61(+)X60(+)1
上記の64次の原始多項式によって規定される構成である(1)〜(7)いずれかに記載の暗号処理装置。
(10) 前記キーストリーム生成部は、
前記第1の秘密鍵を入力して、擬似乱数生成用初期データを生成する鍵スケジュール部と、
前記鍵スケジュール部の生成した疑似乱数生成用初期データを入力して擬似乱数を出力する擬似乱数生成部を有する構成である(1)〜(9)いずれかに記載の暗号処理装置。
(11) 復号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
前記キーストリームを構成する復号鍵データと、復号処理対象データとの演算処理を実行する演算部を有し、
前記キーストリーム生成部は、
第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、
前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
前記排他的論理和演算部の出力をキーストリームとして出力する復号処理装置。
(12) 暗号処理装置において実行する暗号処理方法であり、
キーストリーム生成部が、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成ステップと、
演算部が、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算ステップを実行し、
前記キーストリーム生成ステップは、
擬似乱数生成部が、第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成ステップと、
線形フィードバックレジスタ(LFSR)が、第2の秘密鍵に基づいてLFSR出力データを生成するLFSR出力データ生成ステップと、
排他的論理和演算部が、前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算ステップを有し、
前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理方法。
(13) 暗号処理装置において暗号処理を実行させるプログラムであり、
キーストリーム生成部に、暗号鍵データからなるデータストリームであるキーストリームを生成させるキーストリーム生成ステップと、
演算部に、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行させる演算ステップを実行させ、
前記プログラムは、前記キーストリーム生成ステップにおいて、
擬似乱数生成部に、第1の秘密鍵に基づいて擬似乱数を生成させる擬似乱数生成ステップと、
線形フィードバックレジスタ(LFSR)に、第2の秘密鍵に基づいてLFSR出力データを生成させるLFSR出力データ生成ステップと、
排他的論理和演算部に、前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行させる排他的論理和演算ステップを実行させ、
前記排他的論理和演算部の出力をキーストリームとして出力させるプログラム。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本開示の一実施例の構成によれば、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
具体的には、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、キーストリーム生成部は、第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、擬似乱数生成部の生成した疑似乱数と、LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、排他的論理和演算部の出力をキーストリームとして出力する。
本構成により、安全性を向上させたストリーム暗号を実行する装置、方法が実現される。
11 秘密鍵
12 初期ベクトル
13 キーストリーム(擬似乱数)
21 平文
22 暗号文
50 キーストリーム生成部
51 鍵スケジュール部
52 擬似乱数生成部
53 排他的論理和(XOR)演算部
41 秘密鍵
42 初期ベクトル
43 キーストリーム(擬似乱数)
70 キーストリーム生成部
71 鍵スケジュール部
72 擬似乱数生成部
73 排他的論理和(XOR)演算部
110 キーストリーム生成部
111 鍵スケジュール部
112 擬似乱数生成部
121 線形フィードバックシフトレジスタ(LFSR)
122 排他的論理和(XOR)演算部
131 第1秘密鍵(Ks)
132 初期ベクトル
133 第2秘密鍵(KL)
134 出力擬似乱数
135 LFSR出力
136 キーストリーム(擬似乱数)
141 平文
142 暗号文
210 キーストリーム生成部
211 鍵スケジュール部
212 擬似乱数生成部
221 線形フィードバックシフトレジスタ(LFSR)
222 排他的論理和(XOR)演算部
231 第1秘密鍵(Ks)
232 初期ベクトル
233 第2秘密鍵(KL)
234 出力擬似乱数
235 LFSR出力
236 キーストリーム(擬似乱数)
510 キーストリーム生成部
511 鍵スケジュール部
512 擬似乱数生成部
521 鍵変換部
522 線形フィードバックシフトレジスタ(LFSR)
523 排他的論理和(XOR)演算部
531 第1秘密鍵(Ks)
532 初期ベクトル
534 出力擬似乱数
535 LFSR出力
536 キーストリーム(擬似乱数)
541 平文
542 暗号文
551 ハッシュ関数実行部
552 ビット数調整部
610 キーストリーム生成部
611 鍵スケジュール部
612 擬似乱数生成部
621 鍵変換部
622 線形フィードバックシフトレジスタ(LFSR)
623 排他的論理和(XOR)演算部
631 第1秘密鍵(Ks)
632 初期ベクトル
634 出力擬似乱数
635 LFSR出力
636 キーストリーム(擬似乱数)
800 ICモジュール
801 CPU(Central processing Unit)
802 メモリ
803 暗号処理部
804 乱数生成部
805 送受信部
900 スマートフォン
901 プロセッサ
902 メモリ
903 ストレージ
904 外部接続インタフェース
906 カメラ
907 センサ
908 マイクロフォン
909 入力デバイス
910 表示デバイス
911 スピーカ
913 無線通信インタフェース
914 アンテナスイッチ
915 アンテナ
917 バス
918 バッテリー
919 補助コントローラ

Claims (13)

  1. 暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
    前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算部を有し、
    前記キーストリーム生成部は、
    第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
    第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、
    前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
    前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理装置。
  2. 前記第1の秘密鍵と前記第2の秘密鍵は、異なる秘密鍵である請求項1に記載の暗号処理装置。
  3. 前記第1の秘密鍵と前記第2の秘密鍵は、同一の秘密鍵である請求項1に記載の暗号処理装置。
  4. 前記第2の秘密鍵は、前記第1の秘密鍵に基づくデータ変換処理によって生成された鍵である請求項1に記載の暗号処理装置。
  5. 前記キーストリーム生成部は、鍵変換部を有し、
    前記鍵変換部は、前記第1の秘密鍵を入力して該第1の秘密鍵と異なる第2の秘密鍵を生成して前記線形フィードバックレジスタ(LFSR)に入力する請求項1に記載の暗号処理装置。
  6. 前記鍵変換部は、
    一方向性ハッシュ関数を適用したデータ変換を実行する請求項5に記載の暗号処理装置。
  7. 前記擬似乱数生成部は、1バイト単位の擬似乱数を生成し、
    前記線形フィードバックレジスタ(LFSR)は、1バイト単位のLFSR出力を生成し、
    前記排他的論理和演算部は、1バイト単位の擬似乱数と、1バイト単位のLFSR出力との排他的論理和演算を実行して、1バイト単位の暗号鍵データからなるキーストリームを生成する請求項1に記載の暗号処理装置。
  8. 前記線形フィードバックレジスタ(LFSR)は、特性多項式が、
    f(x)=X128(+)X126(+)X101(+)X99(+)1
    上記の128次の原始多項式によって規定される構成である請求項1に記載の暗号処理装置。
  9. 前記線形フィードバックレジスタ(LFSR)は、特性多項式が、
    f(x)=X64(+)X63(+)X61(+)X60(+)1
    上記の64次の原始多項式によって規定される構成である請求項1に記載の暗号処理装置。
  10. 前記キーストリーム生成部は、
    前記第1の秘密鍵を入力して、擬似乱数生成用初期データを生成する鍵スケジュール部と、
    前記鍵スケジュール部の生成した疑似乱数生成用初期データを入力して擬似乱数を出力する擬似乱数生成部を有する構成である請求項1に記載の暗号処理装置。
  11. 復号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成部と、
    前記キーストリームを構成する復号鍵データと、復号処理対象データとの演算処理を実行する演算部を有し、
    前記キーストリーム生成部は、
    第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成部と、
    第2の秘密鍵に基づいてLFSR出力データを生成する線形フィードバックレジスタ(LFSR)と、
    前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算部を有し、
    前記排他的論理和演算部の出力をキーストリームとして出力する復号処理装置。
  12. 暗号処理装置において実行する暗号処理方法であり、
    キーストリーム生成部が、暗号鍵データからなるデータストリームであるキーストリームを生成するキーストリーム生成ステップと、
    演算部が、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行する演算ステップを実行し、
    前記キーストリーム生成ステップは、
    擬似乱数生成部が、第1の秘密鍵に基づいて擬似乱数を生成する擬似乱数生成ステップと、
    線形フィードバックレジスタ(LFSR)が、第2の秘密鍵に基づいてLFSR出力データを生成するLFSR出力データ生成ステップと、
    排他的論理和演算部が、前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行する排他的論理和演算ステップを有し、
    前記排他的論理和演算部の出力をキーストリームとして出力する暗号処理方法。
  13. 暗号処理装置において暗号処理を実行させるプログラムであり、
    キーストリーム生成部に、暗号鍵データからなるデータストリームであるキーストリームを生成させるキーストリーム生成ステップと、
    演算部に、前記キーストリームを構成する暗号鍵データと、暗号処理対象データとの演算処理を実行させる演算ステップを実行させ、
    前記プログラムは、前記キーストリーム生成ステップにおいて、
    擬似乱数生成部に、第1の秘密鍵に基づいて擬似乱数を生成させる擬似乱数生成ステップと、
    線形フィードバックレジスタ(LFSR)に、第2の秘密鍵に基づいてLFSR出力データを生成させるLFSR出力データ生成ステップと、
    排他的論理和演算部に、前記擬似乱数生成部の生成した疑似乱数と、前記LFSR出力データとの排他的論理和演算処理を実行させる排他的論理和演算ステップを実行させ、
    前記排他的論理和演算部の出力をキーストリームとして出力させるプログラム。
JP2014242332A 2014-11-28 2014-11-28 暗号処理装置、および暗号処理方法、並びにプログラム Active JP6287785B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014242332A JP6287785B2 (ja) 2014-11-28 2014-11-28 暗号処理装置、および暗号処理方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014242332A JP6287785B2 (ja) 2014-11-28 2014-11-28 暗号処理装置、および暗号処理方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2016103799A true JP2016103799A (ja) 2016-06-02
JP6287785B2 JP6287785B2 (ja) 2018-03-07

Family

ID=56089240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014242332A Active JP6287785B2 (ja) 2014-11-28 2014-11-28 暗号処理装置、および暗号処理方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP6287785B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190021635A (ko) * 2017-08-23 2019-03-06 다운정보통신(주) 고속 스트림 암호 구현을 위한 병렬화 처리 방법 및 병렬화 시스템
CN110785960A (zh) * 2017-06-27 2020-02-11 三菱电机株式会社 码生成装置、码生成方法和码生成程序
JP2020532177A (ja) * 2017-08-23 2020-11-05 エヌチェーン ホールディングス リミテッドNchain Holdings Limited データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法
WO2023040410A1 (zh) * 2021-09-16 2023-03-23 飞天诚信科技股份有限公司 工作密钥生成方法、装置及计算机可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003173254A (ja) * 2001-09-26 2003-06-20 Toshiba Corp 乱数生成回路
JP2005018251A (ja) * 2003-06-24 2005-01-20 Renesas Technology Corp 乱数発生装置
JP2006039998A (ja) * 2004-07-28 2006-02-09 Victor Co Of Japan Ltd 乱数発生回路
US20080263116A1 (en) * 2007-04-17 2008-10-23 Mosaid Technologies Corporation Balanced pseudo-random binary sequence generator
JP2010181789A (ja) * 2009-02-09 2010-08-19 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
JP2012100078A (ja) * 2010-11-02 2012-05-24 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の暗号化方法およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003173254A (ja) * 2001-09-26 2003-06-20 Toshiba Corp 乱数生成回路
JP2005018251A (ja) * 2003-06-24 2005-01-20 Renesas Technology Corp 乱数発生装置
JP2006039998A (ja) * 2004-07-28 2006-02-09 Victor Co Of Japan Ltd 乱数発生回路
US20080263116A1 (en) * 2007-04-17 2008-10-23 Mosaid Technologies Corporation Balanced pseudo-random binary sequence generator
JP2010181789A (ja) * 2009-02-09 2010-08-19 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
JP2012100078A (ja) * 2010-11-02 2012-05-24 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の暗号化方法およびプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110785960A (zh) * 2017-06-27 2020-02-11 三菱电机株式会社 码生成装置、码生成方法和码生成程序
CN110785960B (zh) * 2017-06-27 2023-06-20 三菱电机株式会社 码生成装置、码生成方法和计算机能读取的存储介质
KR20190021635A (ko) * 2017-08-23 2019-03-06 다운정보통신(주) 고속 스트림 암호 구현을 위한 병렬화 처리 방법 및 병렬화 시스템
KR101975800B1 (ko) 2017-08-23 2019-05-08 다운정보통신(주) 고속 스트림 암호 구현을 위한 병렬화 처리 방법 및 병렬화 시스템
JP2020532177A (ja) * 2017-08-23 2020-11-05 エヌチェーン ホールディングス リミテッドNchain Holdings Limited データの高度なセキュリティ、高速暗号化および、伝送のためのコンピュータ実装システムおよび方法
WO2023040410A1 (zh) * 2021-09-16 2023-03-23 飞天诚信科技股份有限公司 工作密钥生成方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
JP6287785B2 (ja) 2018-03-07

Similar Documents

Publication Publication Date Title
US9819657B2 (en) Protection of memory interface
US10187200B1 (en) System and method for generating a multi-stage key for use in cryptographic operations
US10887080B2 (en) Double-hashing operation mode for encryption
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP6287785B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US20180205536A1 (en) Stream cipher system
JP5481455B2 (ja) 暗号処理装置
JP2017504838A (ja) 暗号アルゴリズムに対するサイドチャネル攻撃への対抗策
JP2009506438A (ja) 暗号的に安全な擬似乱数生成器
JP2014509812A (ja) チップ製造中に一意の鍵を確立すること
US20120314857A1 (en) Block encryption device, block decryption device, block encryption method, block decryption method and program
JPWO2006100801A1 (ja) キーストリーム暗号化装置および方法ならびにプログラム
US20180054301A1 (en) Method and device for data encryption
JPWO2008010441A1 (ja) 暗号装置及びプログラムと方法
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
Christina et al. Optimized Blowfish encryption technique
Jassim et al. A survey on stream ciphers for constrained environments
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP6348273B2 (ja) 情報処理システム
Subramanian et al. Adaptive counter clock gated S-Box transformation based AES algorithm of low power consumption and dissipation in VLSI system design
US8718278B2 (en) Method and system for encryption of a datastream
Buja et al. The direction of lightweight ciphers in mobile big data computing
Landge et al. VHDL based Blowfish implementation for secured embedded system design
JP2008276728A (ja) 疑似乱数生成装置及びそれを用いた暗号化処理装置
JP2005309148A (ja) データ変換装置およびデータ変換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180122

R151 Written notification of patent or utility model registration

Ref document number: 6287785

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151