(57)【特許請求の範囲】
【請求項１】
複数の平文ワードを暗号化または復号化するための暗号化または復号化システムを作成する、コンピュータ実装された方法であって、
誤り位置関連付け手段によって、各平文ワード(202)を、誤りベクトルの誤り位置(212)の各集合(207)に関連付ける段階(104，207)と、
前記複数の平文ワードの各々の平文ワードについて、
誤りベクトル関連付け手段によって、前記平文ワード(202)の各値を、前記平文ワード(202)に関連付けられた誤り位置の前記集合(207)外の位置では同一の値を有する各誤りベクトルに関連付ける段階(106)と
前記平文ワードの各々の前記値それぞれについて、前記平文ワードが前記値をとるときに、前記平文ワードの暗号化された形が前記値に関連付けられた前記誤りベクトルに基づく暗号文ワードであるように、構成手段によって、システムを構成する段階と、
を有することを特徴とする方法。
【請求項２】
シンドローム表現関連付け手段により、前記複数の平文ワードの各々の平文ワードについて、前記平文ワード(202)の前記各値を、誤り訂正符号に従って、前記各誤りベクトルの各シンドローム(218)の各表現に関連付ける段階(108)をさらに有し、
前記システムを構成する段階が、前記平文ワードの各々の前記値それぞれについて、前記平文ワードが前記値をとるときに、前記平文ワードの前記暗号化された形が、前記値に関連付けられた前記誤りベクトルの前記各シンドロームの前記表現に基づく暗号文ワードであるように構成するものである、
ことを特徴とする請求項１に記載の方法。
【請求項３】
平文ワードの前記各値に関連付けられた前記各表現が、前記平文ワードの前記各値が広がる線形空間の次元よりも大きい次元を有する線形空間に広がることを特徴とする請求項１に記載の方法。
【請求項４】
誤り位置の前記各集合が相互に分離されていることを特徴とする請求項１に記載の方法。
【請求項５】
前記各誤りベクトル値が、最大で１つの非ゼロの位置(212)を有することを特徴とする請求項１に記載の方法。
【請求項６】
平文ワードの前記各値に関連付けられた前記各誤りベクトル値が相互に一意性を有することを特徴とする請求項１に記載の方法。
【請求項７】
提供手段によって、前記平文ワードの前記各値に関連付けられた前記各表現を指定する参照テーブルを提供する段階(108)をさらに有することを特徴とする請求項１に記載の方法。
【請求項８】
複数の平文ワードを暗号化するための暗号化システムを作成するシステムであって、
各平文ワード(202)を、誤りベクトルの誤り位置(212)の各集合(207)に関連付けるための手段と、
前記複数の平文ワードの各々の平文ワードについて、前記平文ワード(202)の各値を、前記平文ワード(202)に関連付けられた誤り位置の前記集合(207)外の位置では同一の値を有する各誤りベクトルに関連付けるための手段であって、前記平文ワードの各々の前記値それぞれについて、前記平文ワードが前記値をとるときに、前記平文ワードの暗号化された形が前記値に関連付けられた前記誤りベクトルに基づく暗号文ワードであるようにシステムを構成する手段と
を具備することを特徴とするシステム。
【請求項９】
複数の平文ワード(302)を暗号化するためのシステムであって、
各平文ワード(302)に対応する複数の各参照テーブル(304)であり、平文ワードに対応する参照テーブルが、当該平文ワードの各値を、各誤りベクトルに基づいて各シンドロームの各表現に関連付けるように構成され、平文ワードの各値に関連付けられた前記各誤りベクトルが、当該平文ワードに関連付けられた誤り位置の集合外の位置では同一の値を有する、参照テーブル(304)と、
前記各平文ワード(302)の前記各値に関連付けられた前記表現を、暗号文ブロック(308)へと結合するための暗号文生成器(306)と
を具備することを特徴とするシステム。
【請求項１０】
前記暗号文生成器(306)が、ＸＯＲにより表現を結合するためのＸＯＲユニットを具備することを特徴とする請求項９に記載のシステム。
【請求項１１】
複数の平文ワード値を暗号化するコンピュータ実装される方法であって、
参照テーブル処理手段によって、各平文ワード(302)に対応する複数の各参照テーブル(304)において、前記各平文ワード(302)の各値に関連付けられた各シンドロームの各表現(304)を調べる段階であって、平文ワードに対応する参照テーブルが、当該平文ワードの各値を、各誤りベクトルに基づいて、各シンドロームの各表現に関連付けるように構成され、かつ平文ワードの各値に関連付けられた前記各誤りベクトルが、前記平文ワードに関連付けられた誤り位置の集合外の位置では同一の値を有する、段階と、
結合手段によって、前記各平文ワード(302)の前記各値に関連付けられた前記表現を、暗号文ブロック(308)へと結合する段階と
を有することを特徴とする方法。
【請求項１２】
暗号文ブロックを復号するためのシステムであって、
誤り訂正符号に従って、前記暗号文ブロックからシンドロームに対応する誤りベクトル(210)を復元するための復号器と、
各平文ワード(202)に関連付けられた(208)前記誤りベクトルの誤り位置(212)で前記誤りベクトルの少なくとも１つの値から前記各平文ワード(202)の値を調べるための参照テーブルと
を具備することを特徴とするシステム。
【請求項１３】
暗号文ブロックを復号するコンピュータ実装される方法であって、
復元手段によって、誤り訂正符号に従って、前記暗号文ブロックからシンドロームに対応する誤りベクトル(210)を復元する段階と、
調査処理手段によって、各平文ワード(202)に関連付けられた(208)前記誤りベクトルの誤り位置(212)で前記誤りベクトルの値から前記各平文ワード(202)の値を調べる段階と
を有することを特徴とする方法。
【請求項１４】
プロセッサに、請求項１、１１、または１３に記載の方法を実施させる機械読み取り可能な命令からなるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号法に関する。本発明はまた、暗号化または復号化システムを作成する方法に関する。本発明はまた、暗号化および復号化を行うためのシステムおよび方法に関する。
【背景技術】
【０００２】
公開鍵暗号(非対称暗号とも呼ばれる)は、１つは暗号化用で、もう１つは復号用の２つの異なる鍵を有する暗号である。暗号化鍵は公開されるので、誰でもそれを使用することができるが、復号鍵は秘密に保たれる。既知の公開鍵暗号はほんのわずかである。既知の公開鍵暗号としては、RSA、楕円曲線、McEliece、およびHFE(Hidden Field Equations)がある。対称暗号と比較すると、公開鍵暗号は、例えば、計算能力、ハードウェアのコスト、および／または計算時間の点で比較的コストがかかる。このため、現在の公開鍵暗号は、センサなど、安価でリソースの限られたデバイスを用いる用途に対して有用ではない。
【０００３】
Niederreiterは、線形の誤り訂正符号に基づいたMcEliece暗号化スキームの変形を提示した。Niederreiterの暗号化スキームでは、平文メッセージは、誤りベクトルとして解釈され、暗号文メッセージは、誤りベクトルのシンドロームに基づいている。したがって、使用される特定の誤り訂正符号に従って、暗号化は、誤りベクトルのシンドロームの計算を含み、復号化は、シンドロームから誤りベクトルを計算することを含むこととなる。誤り訂正符号に関連する性質のため、誤りベクトルは、限られた数の1だけを有することができる。したがって、任意の数の1を有することのある平文メッセージは、まず、限られた数の1を有する誤りベクトルへと変換される。この変換ステップは、かなりの量の計算時間を必要とする可能性がある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Henk C. A. van Tilborg(編)、「Encyclopedia of Cryptography and Security」、Springer 2005、ISBN 978-0-387-23473-1
【発明の概要】
【課題を解決するための手段】
【０００５】
暗号化システムまたは復号化システムを作成する改良された方法の実現は有益となろう。この問題によりよく対処するために、本発明の第１の態様では、各平文ワードを、誤りベクトルの誤り位置の各集合に関連付ける段階と、平文ワードの少なくとも１つの各値を、平文ワードの１つに関連付けられた誤り位置の集合外の位置では同一の値を有する各誤りベクトルに関連付ける段階とを有する方法が提示される。
【０００６】
これらの関連付けにより、効率的な暗号化または復号化が可能になる。各平文ワードは誤り位置の各集合に関連付けられ、また平文ワード取り得る各値に関連付けられた誤りベクトルは、各集合における位置外では同一の値を有するので、位置に関連する１つまたは複数の平文ワードを検討するだけで、誤りベクトルの位置の値を確定することが可能になる。換言すれば、特定の平文ワードに関連しない誤りベクトルの位置の値を確定するためには、この特定の平文ワードの値を考慮する必要がない。これは、前処理段階の複雑さを低減する。さらに、復号器では、その関連付けは、誤りベクトルから平文ワードをより効率的に取得するために使用することができる。本発明のこの態様は、平文から誤りベクトルに関係する量へと効率的に変換することを可能にするが、それは、そのような変換が、個々の平文ワードを評価すること、およびこれらの個々の平文ワードから得られた誤りベクトルを比較的効率のよい方法で結合することにより実施できるからである。
【０００７】
各平文ワードは、例えば、平文ブロック中の一連のワードなど、一連のワードに対応することができる。平文ブロック中の平文ワードの連続的な位置と、それに関連する誤り位置の各集合との間に固定された、または所定の関係が存在する可能性がある。平文ワードの各値は、このような平文ワードが取り得る各値、例えば、平文ワードのビットで構成することのできるある範囲の値である。平文ワードの様々な値は、各平文ワードに関連する位置における誤りベクトルの値を変化させることにより、様々な誤りベクトルに関連付けられる。誤り位置の集合外の誤りベクトルの位置は、平文ワードに関連するすべての誤りベクトルに対して固定された値に保持することができる。原理的には、このような固定値は、誤り位置の集合外の異なる位置に対して異なることができる。例示的な実施形態では、誤りベクトルの値は、誤り位置の関連する集合外でゼロである。
【０００８】
実施形態では、平文ワードの各値は、誤り訂正符号に従って、各誤りベクトルの各シンドロームの各表現に関連付けられる。平文ワードとシンドロームの表現との間のこの直接的な関連付けにより、非常に効率的な暗号化システムが作成されるが、それは、誤りベクトルそれ自体を計算する必要がなくなるからである。
【０００９】
実施形態では、平文ワードの各値に関連付けられた各表現は、平文ワードの各値が広がる線形空間の次元と少なくとも同様の大きさ、または好ましくは、それより大きい次元を有する線形空間に広がる。こうすることにより、ホワイトボックス(white-box)暗号法など、特定の用途において、得られた暗号システムを攻撃することがより困難になる。
【００１０】
実施形態では、誤り位置の各集合は互いに分離されている。このように、誤りベクトル位置の値を確定するためには、単一の平文ワードだけを検討する必要があるに過ぎない。こうすることにより、効率的な暗号化システムおよび／または復号化システムを提供することが可能になる。
【００１１】
確立された様々な関連付けは、１つまたは複数の参照用テーブルにより暗号化システムに提供することができ、それにより、暗号化は、複数の参照演算を実施すること、および参照演算の結果を結合することによって行われる。
【００１２】
本発明の他の態様は、複数の平文ワードを暗号化するためのシステムを提供し、システムは、各平文ワードに対応する複数の各参照テーブルであって、平文ワードに対応する参照テーブルが、その平文ワードの各値を各誤りベクトルに基づいて各シンドロームの各表現に関連付けるように構成され、また各誤りベクトルが、平文ワードに関連付けられた集合の誤り位置の外側でゼロである、参照テーブルと、各平文ワードの各値に関連付けられた表現を、暗号文ブロックへと結合するための暗号文生成器とを備える。
【００１３】
暗号化のためのこのシステムは、参照テーブルにより記憶された関連付けを用いて平文を適切な暗号文に変換するので比較的効率がよい。
【００１４】
本発明の他の諸態様は独立請求項で定義される。従属請求項は、有利な諸実施形態を定義する。
【００１５】
本発明のこれらの、および他の諸態様は、図面を参照してさらに明確化され、かつ記述されることになる。
【図面の簡単な説明】
【００１６】
【図１】暗号システムを作成する方法の処理ステップを示す図である。
【図２】暗号化および復号化を行うために使用されるいくつかの関連付けを示す図である。
【図３】データを暗号化するためのシステムを示す図である。
【図４】ハードウェアアーキテクチャを示す図である。
【発明を実施するための形態】
【００１７】
以下では、Niederreiterの暗号化スキームに基づいた諸実施形態について説明する。しかし、これは限定を意図しない。Niederreiterの暗号化スキームの変形形態を、他の暗号化スキームと同様に使用することもできる。暗号化する部分は、使用されるリソースおよび計算時間に関して効率的になる。さらに、復号化を比較的簡単な方法で実施することができる。
【００１８】
Niederreiterは、線形の誤り訂正符号に基づいたMcEliece暗号化スキームの変形を提示した。Niederreiterの暗号化スキームの背景にある考えは、平文メッセージを、誤りベクトルとして解釈することである。暗号文は、この誤りベクトルに関連付けられたシンドロームに基づく。より正確には、eが、平文メッセージに対応する誤りベクトルである場合、暗号化は、ある行列H*に対する行列乗算H*eにより実施することができる。ここで、行列H*は、H*=SHQにより与えられ、式中、Sは、ランダムに選択された可逆行列であり、Hは、考慮中の線形符号に対するパリティ検査行列であり、さらにQは、ランダムに選択された順序行列である。復号は、SおよびQの逆を行うこと、ならびに誤り訂正符号の復号プロセスを実施すること、すなわち、そのシンドロームHから誤りeを導出することを含む。符号が、t-誤り訂正である場合、この手順は、誤りベクトルeのハミング重み(すなわち、eにおける1の数)が、最大でtである場合に動作することをだけを保証する。したがって、暗号化スキームは、任意の平文メッセージが、最大でtのハミング重みを有する誤りベクトルにマップされる前処理ステップを用いて拡張することができる。Niederreiterの暗号化スキームはこのマッピングを指定しない。例えば、積符号を使用する場合、tを超える誤りを有する誤りベクトルを使用することが可能になりうる。しかし、このような場合には、そのシンドロームに基づいて再構成が可能な誤りベクトルだけが使用されることを確認する必要があるだろう。
【００１９】
Henk C. A. van Tilborg(編)、「Encyclopedia of Cryptography and Security」(非特許文献１)では、「Niederreiter encryption scheme」と題するセクションにおいて、重みtのワードと、区間
【００２０】
【数１】
0005539331.tif 000002
【００２１】
における整数を有する長さnとの間に１対１の対応が存在することに言及している。この対応を正確に計算することは、比較的コストがかかる(ブロック長nの２次式)。ブロック長nに比例するコストを有する近似解も存在する。
【００２２】
図1は、暗号化システム、すなわち、暗号化装置を作成するプロセスの実施形態を示す。このような暗号化システムは、ハードウェアコンポーネント、例えば、暗号処理を実施できる電子回路を備えたチップを備えることができる。暗号化システムはまた、部分的に、または完全に、ソフトウェアで実現することもできる。プロセスは、暗号化装置をより効率的にするのを助ける。さらに、本明細書に開示されたプロセスは、暗号化システムを作成する効率的な方法を提供する。また、プロセスは、図2を参照して以下で説明される。図2は、複数の平文ワード206、誤りベクトル210、および複数のシンドローム値220、ならびに平文ワードと誤りベクトルの位置との間の関連付け(207)、および誤りベクトル値とシンドロームとの間の関連付け(214)を図式的に示している。
【００２３】
プロセスは、完結した暗号化システムを作成することができる。しかし、それはまた、既存のパラメータ化された暗号化システムと共に使用できる１組のパラメータを単に生成することも可能である。このようなパラメータは、暗号化システムで適用される暗号の鍵を、またはこのような鍵から導出される値を含むことができ、それらは、暗号化プロセスの処理ステップを実行するために、暗号化システムで使用される。
【００２４】
ステップ102では、誤り訂正符号を確立する。例えば、既知のBCH符号、または既知の積符号などの線形符号を含むこのような誤り訂正符号は、元々、送信チャネルを介して送信されたデータ中の誤りを訂正するために開発された。通常、誤り訂正符号は、誤りを含む可能性のある受信したデータブロックから、シンドロームと呼ばれるベクトルを導出することを可能にする。通常、生じた誤りとシンドロームとの間には、１対１の関係が存在する。当技術分野における既知の誤り訂正スキームを、シンドロームに基づく誤り発見に適用できる。しかしながら、誤り訂正符号のパラメータ(例えば、パリティ検査行列など)の知識なしに、シンドロームに基づいてこれらの誤りを見出すことは簡単なことではない。この性質のために、誤りベクトルのシンドロームの形でデータを暗号化することが可能である。平文から誤りベクトルへの変換をパラメータ化することができ、これらのパラメータは、暗号鍵の一部を形成することができる。
【００２５】
ステップ104では、各平文ワード202、204が、誤りベクトルの誤り位置の各集合に関連付けられる。各平文ワードは、例えば、暗号化すべき平文ブロックに含まれたいくつかのワードである。例えば、平文ブロックは、複数の平文ワード206を含む。これらの平文ワードは、連続して配置することができる。複数の平文ワード206における各平文ワード202、204は、そのシーケンス中のそれらの位置に従って、誤り位置の各集合に関連付けることができる。図2では、平文ワード202が、誤り位置の集合207に関連付けられ、それは、その集合に含まれる誤りベクトル210の位置を指す破線の矢印により図で示されている。例えば、平文ワード202は、矢印207で示された位置に関連付けられる。例えば、矢印208は、誤りベクトル210の位置212を指している。これらの位置は、ランダムに選択することができる。しかし、２つの平文ワード202、204が、同一の誤り位置212に関連付けられないことが好ましい。したがって、誤り位置の集合は分離されていることが好ましい。こうすることにより、暗号化および／または復号化プロセスが単純化される。
【００２６】
ステップ106で、例えば、平文ワード202などの平文ワードの各値が、各誤りベクトル値に関連付けられる。平文ワード202に関連付けられた誤り位置の集合207外の各誤りベクトル値の位置はゼロである。平文ワード値と誤りベクトル値との間の１対１のマッピングは、関連付けによりこのステップで確立されることが好ましい。例えば、集合に含まれる誤り位置の数は、平文ワード202の取り得る値の数よりも少なくとも１つ少ない。この場合、１つの平文ワード値をゼロの誤り値に関連付けることができ、また他の平文ワード値を、集合207に含まれる１つの位置212を除き、すべての位置でゼロを含む一意に定まる誤りベクトル値にマップすることができる。したがって、様々な平文ワード値が、集合207に含まれる様々な位置で1にマップされる。しかしながら、他の構成も可能である。例えば、集合207に含まれる最大で２つの位置で1に設定できるようにすることも可能である。非２進符号の場合、誤り位置は、平文ワード値に応じて0および1とは異なる値を取ることもできる。
【００２７】
代替実施形態では、ステップ106で、誤り位置の集合207外の各誤りベクトル値は、すべてがゼロに設定されることはない。例えば、誤り位置の集合207外の各誤りベクトル位置が、単一の値に割り当てられる。集合207外の誤りベクトル位置は、特定の平文ワードが取る可能性のあるすべての平文ワード値に対してこの値を得ることができる。例えば、集合207外のすべての位置が1に設定される。代替的には、集合207外のいくつかの位置が1に設定され、集合207外の他の位置が0に設定されうる。
【００２８】
ステップ106は、複数のワードにおける平文ワードのそれぞれに対して繰り返すことができる。各平文ワード202、204に対して、誤りベクトル位置212の各集合207が使用される。その関連付けは、暗号の安全性を高めるためにランダムに選択することができる。代替的には、所定のスキームを、関連付けに対して使用することもできる。
【００２９】
このプロセスにより、現在、平文ブロック206の値の、誤りベクトル210の値へのマッピングが得られた。暗号化システムは、複数の平文ワード値を含む具体的な平文ブロックを処理する場合、各平文ワードに関連付けられた誤りベクトル値を見出し、かつこれらの誤りベクトル値を、完全な平文ブロックを表す単一の誤りベクトル値を得るために足し合わせることができる。平文ワードは、様々な誤りベクトル位置に関連付けられているので、誤りベクトルを足し合わせても情報は何も失われない。加算を使用することに代えて、各平文ワードに関連付けられた誤りベクトル値が、結合された単一の誤りベクトルから復元できるという制約の下に、誤りベクトルを単一の誤りベクトルに結合する他の方法を使用することもできる。２進の誤りベクトルの場合、加算は、モジュロ2になるはずであり、それは、効率的なXOR演算に相当する。
【００３０】
プロセスは、ステップ108で、誤り訂正符号に従って、平文ワード202の各値を、各誤りベクトルの各シンドローム218に関連付けるステップを含むことができる。より具体的には、各値は、各シンドロームの各表現に関連付けられる。誤りベクトルのシンドロームは、使用される符号から得られる。
【００３１】
このステップは、ランダムな線形の可逆演算子を選択するステップを含むことができる。このランダムな線形演算子は、シンドロームに適用されて、シンドロームの表現を得ることができる。このようなランダムな線形の可逆演算子は、暗号の安全性をさらに向上させる。同一の演算子を、すべての平文ワードのすべてのシンドロームに適用することが好ましい。こうすることにより、暗号化されたメッセージに対応するシンドロームを得るために、受け取った暗号文に対して、復号器が逆演算子を適用することを可能にする。
【００３２】
暗号化システムは、誤りベクトルの計算および／または加算ではなく、シンドロームを見出すために関連付けを使用し、シンドロームを加算し、加算されたシンドロームを取得し、かつランダムな可逆の線形演算子を、加算されたシンドロームに適用することができる。これは、誤りベクトルを明示的に確立する必要性を回避し、それにより、誤りベクトルを記憶するために必要な記憶空間の量が低減される。暗号化システムは、(例えば、線形の可逆演算子を適用させた後に)、シンドロームの関連付けられた表現と平文ワードとの直接的な関連付けを備えることが好ましい。このように、線形の可逆演算子は、暗号化システム中で適用される必要がなく、それにより、計算の複雑さが減少される。さらに、鍵データのサイズも低減される。シンドロームを加えることに代えて、またはそれに加えて、シンドロームを結合する他の方法もまた企図されうる。
【００３３】
例えば、ステップ110で、暗号化システムは、平文ワードの様々な値に関連付けられたシンドロームの表現を一覧にする参照テーブルを備えることができる。例えば、平文ブロックにおける各平文ワードに対して、別個の参照テーブルが提供される。
【００３４】
平文ワードの各値に関連付けられた各表現は、平文ワードの各値が広がる線形空間の次元よりも大きい次元を有する線形空間に広がることが好ましい。例えば、関連付けが、各平文ワードに対して別個の参照テーブルに記憶される場合、このような参照テーブルを、平文ワード値ごとに行を有する２進行列として見るとき、行列の階数は、平文ワードのビットサイズよりも大きいことが好ましい。平文ワードの各値に関連付けられた各表現は、その表現の次元に等しい階数、または近い階数など、高い階数を有する線形空間に広がることが好ましい。このような高い階数は、例えば、実験的試行により実現することができる。
【００３５】
誤り位置の各集合は、相互に分離されることが好ましい。このように、誤りベクトルの個々の位置は、単一の平文ワードに基づいており、それにより、誤りベクトルおよびシンドロームの決定がより効率化される。
【００３６】
様々な平文ワード値に対して、様々な誤りベクトル位置を予約することが可能である。このような場合、各平文ワード値に関連付けられた各誤りベクトルは、最大で１つの非ゼロの位置212を有する。こうすると、誤りベクトルの非ゼロの位置が十分に平文ワードの値を決定するので、復号化システムがより効率的になる。
【００３７】
平文ワードの各値に関連付けられた各誤りベクトル値は、互いに一意のものとすることができる。これは、曖昧さを含むことなく暗号文を復号化できるようにする。
【００３８】
図3は、複数の平文ワード202を暗号化するためのシステムを示している。このようなシステムは、例えば、上記で述べられたプロセスにより提供することができる。システムは、各平文ワードに対応する複数の各参照テーブル304を備えており、平文ワードに対応する参照テーブルは、その平文ワードの各値を、各誤りベクトル値に基づく各シンドロームの各表現に関連付けるように構成され、平文ワードに関連付けられた誤り位置の集合外の各誤りベクトル値の位置はゼロである。システムはさらに、複数の平文ワードに関連付けられた表現を暗号文ブロック308へと結合するための暗号文生成器306を備える。暗号文生成器306は、XORにより、表現304を結合するためのXORユニットを備えることができる。このようなシステムは、後に、より詳細に述べる。例えば、ベクトル加算など、結合する他の方法もまた可能である。
【００３９】
複数の平文ワードを暗号化する方法は、各平文ワード302に対応する複数の各参照テーブル304における各平文ワード302の各値に関連付けられた各シンドロームの各表現を調べるステップを含み、平文ワードに対応する参照テーブルは、その平文ワードの各値を、各誤りベクトル値に基づいて、各シンドロームの各表現に関連付けるように構成され、また各誤りベクトルは、平文ワードに関連付けられた誤り位置の集合外ではゼロである。方法はさらに、複数の平文ワードに関連付けられた表現を暗号文ブロック308へと結合するステップを含む。
【００４０】
暗号文ブロック308を復号化する方法は、線形の誤り訂正符号に従って、暗号文ブロックからシンドロームに対応する誤りベクトルを復元するステップを含む。方法は、参照テーブルにおける誤りベクトルの各非ゼロの位置に対応する各平文ワード値を調べるステップをさらに含む。参照テーブルを用いるこのように比較的簡単な復号化システムは、誤りベクトルの位置が、単一の平文ワードに直接リンクされる場合に可能である。
【００４１】
一実施形態では、各平文ワード202に関連付けられた(208)誤りベクトルの誤り位置212で誤りベクトルの少なくとも１つの値から各平文ワード202の値を調べるための参照テーブルが提供される。
【００４２】
暗号文ブロック308を復号化するためのシステムは、誤り訂正符号に従って、暗号文ブロックからシンドロームに対応する誤りベクトルを復元するための復号器を備える。誤り訂正符号は、線形の誤り訂正符号とすることができる。このような復号器は、既知のBCH符号のための復号アルゴリズムなど、既知の復号アルゴリズムに基づくことができる。システムは、誤りベクトルの各非ゼロのビット位置に対応する各平文ワード値を調べるための参照テーブルをさらに備えることができる。
【００４３】
以下では、平文を誤りベクトルにマップする別の実施形態が開示される。さらに、このマッピングが、暗号化の効率的な実施を実現するために使用される実施形態が開示される。まず、暗号化を実施する実施形態が開示される。その後に、マッピングが、より詳細に開示される。以下では、Cを、例えば、長さがnの固定された２進で線形のt-誤り訂正符号とし、またHを、Cに対するr×nのパリティ検査行列とする、すなわち、Cは、Hc=0であるnビットのワードcからなる。
【００４４】
図3は、先に説明した暗号化のためのシステムを示す。以下では、暗号化のためのシステムのより選択性のある細部を説明する。暗号化は、t個の参照テーブルT0,T1,...,Tt-1の集合体に基づく。N=t・mビットからなる平文ブロックPは、それぞれがmビットのt個のワードP0,P1,...,Pt-1へと分割される。0≦i≦t-1の値iに対して、ワードPiは、テーブルTiにおける行riを示し、また暗号文Cは、t個の行r0,r1,...,rt-1に対し排他的論理和演算を行うことにより得られる。
【００４５】
以下では、参照テーブルを用いて上記の暗号化システムが得られるように、Niederreiter暗号化スキームにおいて、平文から誤りベクトルへのマッピングを確立できるようにするプロセスが開示される。
【００４６】
図3の暗号化システムにおいて、それぞれがmビットのt個のワードP0,P1,...,Pt-1へと分割されるN=t・mビットからなる平文ブロックPの場合、長さn=t・2m-1の誤りベクトルが使用される。V={0,1,...,n}を、誤りベクトルの位置(またはコンポーネント)1,...,nおよび値0の集合とする。
【００４７】
第１に、Vを、それぞれがサイズ2mのt個の分離した集合V0,V1,...,Vt-1に区分することを選択することができる。例えば、その区分は、セキュリティを高めるためにランダムに選択される。
【００４８】
第２に、i=0,...,t-1に対して、viを、mビットのワードからViへのマップとする。マッピングviは、これも安全性の理由でランダムに選択することができる。このように、平文ワードPiは、数vi(Pi)∈Viに対応する。この数vi(Pi)は、誤りベクトルの位置として、またはコンポーネントとして使用される。
【００４９】
これは、1からnに表記された位置またはコンポーネントを有するnビットのベクトルとして、誤りベクトルe(P)を定義することを可能にし、その場合、すべての位置は、位置vi(Pi)、ただし、i=0,...,t-1を除いて、0に設定される。後者の位置は1に設定される。vi(Pi)が0に等しい場合、誤りベクトルに非ゼロのコンポーネントを加えない。このように、e(P)は、ハミング重みtまたはt-1を有する。ハミング重みは、何らかのvi(Pi)が0に等しい場合、t-1である。
【００５０】
誤りベクトルe(P)は、SHQを誤りベクトルe(P)に適用することにより、当技術分野では既知の方法で、Niederreiterスキームに従って暗号化することができるが、Qは、２進の順序行列であり、Sは可逆行列である。しかし、ランダムな区分V0,V1,...,Vt-1およびランダムなマッピングviのために、２進の順序行列Qを除外することができるが、あるいは区分およびマッピングを、Qを吸収するように変更することができる。したがって、e(P)は、行列SHを誤りベクトルe(P)に適用することにより暗号化され、それにより、SHe(P)を計算するが、Sはランダムに選択された線形行列である。
【００５１】
図3の暗号化システムに戻ると、i=0,...,t-1、および任意のmビット値x(ただし、値xはPiの可能な値を表す)に対する参照テーブルTi(x)のエントリは、vi(x)により索引付けられたSHの列で満たされる。換言すれば、SHのvi(x)番目の列は、Ti(x)の値として使用される。vi(x)=0に対して、Ti(x)の値は0に設定される。図3の参照テーブルに対してこれらの値を使用すると、暗号化システムは、所望の暗号文を生成することができる。このように得られた暗号化システムは、その主な演算が、テーブルの参照およびXOR演算であるため非常に効率的である。この実施形態における、任意の平文から誤りベクトルへのマッピングは、n+1の位置のt個の集合へのランダムな区分と、これらの集合のそれぞれの内側の位置のランダムな番号付けに基づいている。
【００５２】
以下では、特定の実施形態が開示される。この特定の実施形態は、ブロックサイズなどに対して特定の数を使用するが、これらの特定の数は、限定的なものではない。平文に対して、128ビットのブロックサイズ、および8ビットのワードサイズが使用される。暗号化は、128/8=16の参照テーブルを使用し、したがって、各ワードに対して１つの参照テーブルが使用される。これらの数は、単に例示的なものであり、ブロック暗号は、他の数でも同様に定義することができる。暗号文のブロックサイズは、平文に対する128ビットよりも大きく、すなわち、192ビットである。したがって、公開鍵暗号は、50%のサイズオーバヘッドを受ける。図3に関する記述で使用される変数に関しては、前述の数は、平文ブロック長M=128、平文ワードサイズm=8、および平文ブロック中の平文ワード数t=16により指定される。
【００５３】
誤りベクトルの長さに相当するコードワード長nは、16・28-1=212-1であるが、それは、8ビットの平文ワードが、誤りベクトルの28-1の位置へと変換される１つの8ビット平文ワード以外は、誤りベクトルの28の位置へと変換されるからである。
【００５４】
誤りベクトルは、t=16ワードのそれぞれに対して１つの誤りを含むことができるので、当技術分野では既知のように、16個の誤りを訂正できる長さ212-1の誤り訂正符号、例えば、長さ212-1のBCH符号が使用される。このBCH符号のパリティ検査行列は、192行を有することが可能であることが当技術分野では既知である。すなわち、シンドロームは、192ビットを含む。したがって、128ビットの平文は、192ビットのシンドロームにマップされ、そのシンドロームが暗号文の基礎となる。
【００５５】
暗号の秘密の部分は、28×24から212への全単射関数を定義するランダムに選択された12ビットのSボックスUを含むことができる。vi(x)の値は、２進数の値U(x,i)により表される{0,1,...,n}からの数により与えられ、またViはすべてのバイトxに対して、数vi(x)を含む。我々は、Niederreiterの暗号化スキームで順序行列QをUが吸収することに気付いた。Uを順序行列であるように制限しないことにより、その実施形態は、安全性を得ることができる。
【００５６】
暗号の秘密の部分はさらに、ランダムに選択された192×192ビットの可逆行列Sを含む。
【００５７】
暗号の秘密の部分はさらに、16-誤り訂正BCH符号により与えられる192×(212-1)ビットのパリティ検査行列Hを含むことができる。例えば、短縮型BCH符号を使用することができる。
【００５８】
展開関数Eを、12ビットの入力xに対して、x>0の場合、位置xで1、その他で0を有する212-1ビットの出力ベクトルを、またx=0の場合はゼロベクトルを返す212から
【００５９】
【数２】
0005539331.tif 000003
【００６０】
の関数とする。暗号の公開部分は、テーブルT0,T1,...,T15の集合体を含むことができ、その場合、Tiは8ビットから192ビットの以下の関数を定義する。
【００６１】
【数３】
0005539331.tif 000004
【００６２】
平文ブロックP=(P0,P1,...,P15)の暗号文ブロックCは、
【００６３】
【数４】
0005539331.tif 000005
【００６４】
により得られる。
【００６５】
この暗号化は、公に利用可能な情報(参照テーブルTi)に基づいて行うことができる。したがって、この実施形態を用いると、暗号化装置で参照テーブルだけを利用できるようにする必要があるに過ぎない。行列SHQを明らかにする必要はない。
【００６６】
復号化は、秘密情報を知っている場合にだけ行うことが可能である。それは次のように働く。まず、S-1が適用される。これは、値
【００６７】
【数５】
0005539331.tif 000006
【００６８】
を与える。
【００６９】
BCH復号により、値
【００７０】
【数６】
0005539331.tif 000007
【００７１】
が導出される。この値は、Piの１つがU(Pi,i)=0を満足するかどうかに応じて、15個または16個の1を含む。1を含むこの値の各位置に対してU-1が適用される。このことから、平文P0,P1,...,P15を導出することができる。
【００７２】
本明細書で開示された技法は、公開鍵暗号法が望ましいシステムにおいて適用することができるので有利であるが、例えば、リソースの制約のため、RSAなどの計算を多用する解決策の場合には、あまり適していない。
【００７３】
図4は、本明細書で述べたシステムおよび方法を、少なくとも部分的にソフトウェアで実現するのに適した例示的なハードウェアアーキテクチャを示す。ソフトウェアは、メモリ406に記憶することができ、また、ソフトウェアの命令は、プロセッサ402により実行される。入力404およびディスプレイ412を用いて、いくつかのプロセスを開始することができ、またユーザ対話の可能性を提供することができる。鍵データ、参照テーブル値、平文、および／または暗号文は、例えば、通信ポート408および／または取外し可能な媒体410を介して通信することができる。通信ポート408は、例えば、ローカルエリアネットワーク、インターネット、またはテレビジョンネットワークとの接続を提供することができる。このような接続は、有線または無線とすることができる。取外し可能な媒体は、CDもしくはDVD読取り装置および／または書込装置を備えることができる。センサ414は、感知したデータを取得するために提供されうる。センサ414は、例えば、デジタル指紋センサまたは虹彩スキャナを含むことができる。代替的には、センサ414は、X線センサまたは超音波スキャナなどの医療用走査装置を含むこともできる。本明細書で述べた暗号化システムが、メモリ406に記憶されたソフトウェアで実現される場合、システムは、例えば、通信ポート408または取外し可能な媒体410を介して、複数の参照テーブルを受け取ることができる。システムは、センサ414、通信ポート408、または取外し可能な媒体410を介して得られたデータを暗号化することができる。暗号化されたデータは、メモリ406にローカルに記憶することができるが、あるいは通信ポート408または取外し可能な媒体410を介してエクスポートすることができる。ハードウェアアーキテクチャを用いて、暗号化システムをソフトウェアで生成するための方法を実施することも可能である。例えば、メモリ406に記憶されたソフトウェアは、前述の方法で複数の参照テーブルを生成する。このような参照テーブルは、暗号化システム中にハードコード化することができ、または通信ポート408を介して、このような参照テーブルを受け取ることのできる事前にプログラムされた暗号化システムに送信することもできる。
【００７４】
本発明はまた、コンピュータプログラム、特に、本発明を実行するように適合された、担持体上もしくは担持体中のコンピュータプログラムにまで及ぶことが理解されよう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形態などのソースコードとオブジェクトコードとの間の中間的なコードの形態、または本発明による方法を実施する場合の使用に適した任意の他の形態とすることができる。このようなプログラムは、多くの様々なアーキテクチャ上の設計を有することができることも理解されよう。例えば、本発明による方法またはシステムの機能を実現するプログラムコードは、１つまたは複数のサブルーチンへと、細分化することができる。これらのサブルーチン中に機能を分配するための多くの様々な方法は、当業者には明らかであろう。サブルーチンは、１つの実行可能なファイルに共に記憶されて、自己完結型のプログラムを形成することができる。このような実行可能なファイルは、コンピュータ実行可能命令、例えば、プロセッサ命令、および／またはインタープリタ命令(例えば、Java(登録商標)インタープリタ命令)を含むことができる。代替的には、１つまたは複数のまたはすべてのサブルーチンを、少なくとも１つの外部ライブラリのファイルに記憶し、かつ静的に、または実行時など動的に、主プログラムとリンクさせることができる。主プログラムは、少なくとも１つのサブルーチンに対する少なくとも１つの呼出しを含む。さらに、サブルーチンは、互いに対する関数呼出しを含むことができる。コンピュータプログラム製品に関する実施形態では、前述の方法の少なくとも１つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分化することができ、かつ／または静的にもしくは動的にリンクされうる１つまたは複数のファイル中に記憶することができる。コンピュータプログラム製品に関する他の実施形態は、前述のシステムおよび／または製品の少なくとも１つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンへと細分化することができ、かつ／または静的にもしくは動的にリンクされうる１つまたは複数のファイルに記憶することができる。
【００７５】
コンピュータプログラムの担持体は、プログラムを担持することのできる任意のエンティティまたは装置とすることができる。例えば、担持体は、ROM、例えばCD ROMもしくは半導体ROM、または磁気記録媒体、例えば、フロッピー(登録商標)ディスクもしくはハードディスクなどの記憶媒体を含むことができる。さらに、担持体は、電気的なもしくは光ケーブルを介して搬送できる、または無線もしくは他の手段により搬送できる電気信号もしくは光信号など、送信可能な担持体とすることができる。プログラムがこのような信号で実施されたとき、担持体は、このようなケーブルまたは他の装置もしくは手段により構成されうる。代替的には、担持体は、プログラムが組み込まれた集積回路とすることができ、集積回路は、関連する方法を実施するように、または実施するのに使用されるように適合される。
【００７６】
上記で述べた諸実施形態は本発明を例示したものであって、限定を意図しないこと、また、当業者であれば、添付の特許請求の範囲から逸脱することなく、多くの代替の実施形態を設計できるということに留意されたい。請求項において、カッコの間に置かれた任意の参照記号は、特許請求の範囲を限定するものと解釈されるべきではない。動詞「有する／具備する(comprise)」、およびその活用形を使用することは、特許請求の範囲で述べられたもの以外の要素またはステップの存在を除外するものではない。要素に先行する冠詞「１つの(a または an)」は、複数のこのような要素の存在を除外するものではない。本発明は、いくつかの別個の要素を備えるハードウェアにより、かつ適切にプログラムされたコンピュータにより実現することができる。いくつかの手段を列挙する装置の請求項では、これらの手段のいくつかは、ハードウェアの同一の要素により実施することができる。特定の対策が、単に、相互に異なる従属項に記載されているとしても、これらの対策の組合せを、適切に利用するために使用できないことを示すものではない。
【符号の説明】
【００７７】
202，204  平文ワード
206  複数の平文ワード(平文ブロック)
207  誤り位置の集合への関連付け
208  誤り位置への関連付け
210  誤りベクトル
212  誤りベクトルの誤り位置(非ゼロの位置)
214，215  シンドロームへの関連付け
216，218  シンドローム
220  複数のシンドローム
302  平文ワード
304  参照テーブル、表現
306  暗号文生成器
308  暗号文ブロック
402  プロセッサ
404  入力
406  メモリ
408  通信ポート
410  取外し可能な媒体
412  ディスプレイ
414  センサ
【図１】
0005539331.tif 000008
【図２】
0005539331.tif 000009
【図３】
0005539331.tif 000010
【図４】
0005539331.tif 000011