(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-04-01
(54)【発明の名称】暗号システムおよび方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20220325BHJP
【FI】
G09C1/00 620Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2020534978
(86)(22)【出願日】2018-12-21
(85)【翻訳文提出日】2020-06-22
(86)【国際出願番号】 RU2018000847
(87)【国際公開番号】W WO2020130869
(87)【国際公開日】2020-06-25
(81)【指定国・地域】
(71)【出願人】
【識別番号】502423462
【氏名又は名称】01 コミュニーク ラボラトリー インコーポレイテッド
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100122563
【氏名又は名称】越柴 絵里
(72)【発明者】
【氏名】ベッザティーフ セルゲイ
(72)【発明者】
【氏名】ストラホフ セルゲイ
(72)【発明者】
【氏名】チュン アンドリュー
(57)【要約】
データの暗号化のシステムと方式。量子コンピュータからのサイバー攻撃に対して強化された非対称暗号化/複号化およびデジタル署名機能を提供する暗号機能を利用するシステムおよび方式。
【特許請求の範囲】
【請求項1】
暗号化、復号化、署名および検証されるデータを受信するように構成された入力装置と、
暗号化、復号化、署名および検証される前記データを受け取り、暗号エンジンからの命令を用いて前記データを暗号化、復号化、署名および検証するプロセッサとを備えた暗号システムであって、
前記命令は、前記プロセッサに、補助集合がGoppa(ゴッパ)多項式の次数以下の分母の次数を有する有理関数から構成されているバイナリ既約Goppa符号に基づき、符号ベース暗号化方式を用いながら前記データの暗号化、復号化、署名、および検証を生じさせ、量子コンピュータによる攻撃から前記暗号化されたデータを保護する、暗号システム。
【請求項2】
前記命令は、重み付きハミングメトリックでGoppa符号を更に用いることを含む、請求項1に記載の暗号システム。
【請求項3】
前記Goppa多項式が以下に示すr以下の次数を有すること、すなわち、
rは、1より大きく且つ有限体GF(2
m)からの係数を有し、及び
rは、rより大きくない次数の有理分数集合であるLにおいてF
2
m[x]上の有理関数の分母の最大次数である、請求項1に記載の暗号システム。
【請求項4】
前記命令は、重み付きハミングメトリックでGoppa符号を更に用いることを含む、請求項3に記載の暗号システム。
【請求項5】
前記rが1より大きく、分子が分母の形式微分で、前記Lの分母が前記r以下の次数を持つF
2
m[x]からの複数の既約多項式であり、F
2
m[x]上で選択される真有理関数の集合(L)の符号ベース暗号方式が一般化(L,G)符号である、請求項4に記載の暗号システム。
【請求項6】
前記命令により、
tに等しい次数のGoppa多項式G(x)(ただし、G(x)はガロア体GF(2
m)からの係数を有する既約多項式)を有するバイナリ一般化Goppa符号に対してパリティ検査行列Hが生成され、バイナリ一般化(L,G)符号の補助集合Lに対する位置多項式は、次数r以下のフィールドGF(2
m)からの係数で既約多項式として生成され、
Goppa符号のベクトル長集合N={n
1 , n
2, …, n
r }は、
位置重みベクトルの集合W={w
1 ,w
2 , … ,w
r}は、初めのn
1位置が重みw
1=1、2番目のn
2位置が重みw
2=2、最後のn
r位置が重みw
r=rであり、
ランダムなmt×mt 非特異行列Sが選択され(ここで、deg G(x) = t)、
ランダムなn×n置換行列Pが選択され、
公開鍵 H*=S×H×Pが計算される、
ことによりK={S, P, L, G(x)}の関係を満たす秘密鍵を更に生成する、請求項5に記載の暗号システム。
【請求項7】
暗号化、復号化、署名および検証されるデータを受信するように構成された入力装置と、
暗号化、復号化、署名および検証される前記データを受け取り、暗号エンジンからの命令を用いて、前記データを暗号化、復号化、署名および検証するプロセッサとを備えた暗号システムであって、
前記命令は、前記プロセッサに、補助集合Lの位置多項式が、F
2
m[x]上の有理関数の分母の最大次数であるr以下の次数を有するバイナリ既約Goppa符号に基づき、符号ベースの暗号化方式を用いながら前記データの暗号化、複号化、署名および検証を生じさせ、量子コンピュータからによる攻撃から前記暗号化されたデータを保護する、暗号システム。
【請求項8】
前記命令は、重み付きハミングメトリックでGoppa符号を更に用いることを含む、請求項7に記載の暗号システム。
【請求項9】
データの暗号化、復号化、署名、および検証のための方法であって、
入力装置でデータを受信し、
暗号エンジンにより提供される命令を用いて前記データを暗号化、復号化、署名および検証を行うために前記データをプロセッサに転送し、
前記命令は、前記プロセッサに、補助集合がGoppa多項式の次数以下の分母の次数を有する有理関数から構成されているバイナリ既約Goppa符号に基づく符号ベース暗号化方式を使用して前記データを暗号化、復号化、署名、および検証をさせ、
前記暗号化されたデータが量子コンピュータからの攻撃から保護される、方法。
【請求項10】
前記命令は、重み付きハミングメトリックでGoppa符号を更に用いることを含む、請求項9に記載の方法。
【請求項11】
前記Goppa多項式が以下に示すr以下の次数を有すること、すなわち、
rは、1より大きく且つ有限体GF(2
m)からの係数を有し、及び
rは、rより大きくない次数の有理分数集合であるLにおいてF
2
m[x]上の有理関数の分母の最大次数である、請求項9に記載の方法。
【請求項12】
前記命令は、重み付きハミングメトリックでGoppa符号を更に用いる、請求項11に記載の方法。
【請求項13】
前記rが1より大きく、分子が分母の形式微分で、前記Lの分母が前記r以下の次数を持つF
2
m[x]からの複数の既約多項式であり、F
2
m[x]上で選択される真有理関数の集合(L)の符号ベース暗号方式が一般化(L,G)符号である、請求項12に記載の方法。
【請求項14】
前記命令により、
tに等しい次数のGoppa多項式G(x)(ただし、G(x)はガロア体GF(2m)からの係数を有する既約多項式)を有するバイナリ一般化Goppa符号に対してパリティ検査行列Hが生成され、バイナリ一般化(L,G)符号の補助集合Lに対する位置多項式は、次数r以下のフィールドGF(2
m)からの係数で既約多項式として生成され、
Goppa符号のベクトル長集合N={n
1 , n
2, …, n
r }は、
位置重みベクトルの集合W={w
1 ,w
2 , … ,w
r}は、初めのn
1位置が重みw
1=1、2番目のn
2位置が重みw
2=2、最後のn
r位置が重みw
r=rであり、
ランダムなmt×mt 非特異行列Sが選択され(ここで、deg G(x) = t)、
ランダムなn×n置換行列Pが選択され、
公開鍵 H*=S×H×Pが計算される、
ことによりK={S, P, L, G(x)}の関係を満たす秘密鍵を更に生成する、請求項13に記載の方法。
【請求項15】
データを暗号化するための方法であって、
入力装置で暗号化データを受信し、
暗号エンジンからの命令を用いて前記データを暗号化するために前記データをプロセッサに提供し、
前記命令は、前記プロセッサに、補助集合Lの位置多項式が、F
2
m[x]上の有理関数の分母の最大次数であるr以下の次数を有するバイナリ既約Goppa符号に基づく符号ベースの暗号化方式を使用して前記データを暗号化させ、
暗号化されたデータが量子コンピュータからの攻撃から保護される、方法。
【請求項16】
前記命令は、重み付きハミングメトリックでGoppa符号を更に用いることを含む、請求項15に記載の方法。
【請求項17】
暗号化される前記データは、送信者から受信者に安全に転送されるメッセージベクトルであることを特徴とする、請求項9に記載の方法。
【請求項18】
暗号化される前記データは、送信者から受信者に安全に転送されるメッセージベクトルであることを特徴とする、請求項15に記載の方法。
【請求項19】
暗号化されたときの前記データがデジタル署名である、請求項9に記載の方法。
【請求項20】
暗号化されたときの前記データがデジタル署名である、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には暗号システムおよび方法に関するもので、より具体的には、例えばデータストレージ、アクセス、暗号化、復号化、デジタル署名、およびデジタル署名検証のための非常に安全なシステムを構築するために使用可能な公開鍵暗号システムおよび方法に関するものである。
【背景技術】
【0002】
例えばリモートアクセス、ソーシャルメディア、銀行取引、送金、株取引、ショッピング、調査、資料記録の転送、投票、納税申告、身分証明など、日常生活においてインターネットへの依存がますます高まり、インターネットを介したセキュリティは非常に重要となっている。インターネット上のセキュリティには様々な側面がある。その一つは、サーバなどのハードウェアコンポーネントへの不正アクセスをブロックすることにより、データへのアクセス可能性を安全にガードすることである。もう一つの側面は、不正アクセスが発生した後のデータの理解を防ぐことである。この2つ目の側面は、データへのアクセスを取得するために、絶えず進化する違法で悪意のある手段に対抗する上で重要である。このような違法で悪意ある活動に対して、インターネットを安全にするために、多くの技術が開発されている。
【0003】
一般的な種類の悪意のある活動は、さまざまな機密アカウントのユーザ名やパスワードを送信するなどのインターネット活動を不正にコピーするために、エンドユーザのコンピュータにスパイウェアを挿入する。ウィルス対策プログラムは、この種の攻撃に対抗するために使用されるツールのひとつである。もう一つの一般的な悪意のある活動は、銀行のオンラインログインページ等のWebサイトを偽装し、元のものと同じように見えるようにしてユーザにログイン資格情報を入力させ、機密性の高いログイン資格情報を取得する。デジタル証明書は、この種の攻撃からインターネットを保護するために使用するツールである。デジタル証明書は、訪れるサイトが悪意のある第三者によって運営される「そっくりな」なりすましサイトではなく、本来の意図した組織によって運営されているサイトであることを保証するために役立てられる。デジタル証明書を使用すると、ソフトウェア発行者は実行可能ファイルにデジタル署名して、その正当性を証明することもできる。
【0004】
悪意のある活動をブロックする方法は多種あるものの、サイバー攻撃の犠牲になる危険性は、常に存在する。例えば、悪意のある攻撃者は、ウィルス対策ソフトウェアを回避する方法を常に模索している。悪意のある当事者は、ログインプロセスを迂回して、銀行やソーシャルメディアサイト等の公開サーバのデータベースにアクセスすることもできる。
悪意のある当事者は、エンドユーザとアクセスしているWebサイトの間の通信セッションを利用し、「中間者」としてデータを収集することもできる。したがって、セキュリティが侵害された場合でも、通信セッションの内容を誰にも理解されないようにするために、暗号化などの低レベルのセキュリティを実装することが重要である。
【0005】
暗号技術には様々なものがある。AESやDESなどの対称暗号化方式は、暗号化と復号化に同じ鍵を使用する。別のタイプの暗号化は、一対の秘密鍵と公開鍵を使用する、非対称暗号化方式である。このタイプの暗号化の例として、RSAとEl Gamalがある。このタイプの暗号化では、一方の鍵を使用してデータを暗号化し、もう一方の鍵を持つエンティティだけが復号化できるようにしている。銀行は通信セッションでこのタイプの暗号化を使用し、典型的に秘密鍵と公開鍵のペアを含むSSLデジタル証明書を採用している。公開鍵は証明書に組み込まれており、銀行のサーバとの通信セッションを確立する必要がある人すべてに公開している。ユーザ名とパスワードを送信する場合など、ユーザが銀行のサーバと通信している際、コンテンツは暗号化され、対称暗号化の対応するセッションキーは公開鍵を使用して暗号化され、秘密鍵を持つ銀行のサーバだけがデータを復号化し得る。
【0006】
一般に、公開鍵と秘密鍵のペアは、ランダムに選択された二つの非常に大きな素数を掛け合わせることと、ハッシュ処理の様な他の複雑な数学的プロセスを実行することにより生成される。非対称暗号化のセキュリティは、非常に大きな素数の積である半素数を因数分解することの難しさにより実現されている。これは対の公開鍵から秘密鍵をリバースエンジニアリングするための重要なステップである。結果としてメッセージを復号化するために、半素数を元の素数に因数分解するのに必要な時間(「ブルートフォースタイム」)は、公開鍵サイズに指数関数的に比例して関連する。
【0007】
4096ビットのRSA鍵サイズは、ブルートフォース素因数分解を使用したこのアプリケーションの作成時点で、人間が許容できる時間では解読不可能と考えられている。しかしながらこの仮定は、本出願日の時点で一般に利用可能なコンピュータにしかあてはまらない。1980年代初頭から量子コンピュータと呼ばれる新しい種類のコンピュータが開発されてきた。量子コンピュータは、重ね合わせやもつれなどの量子力学的現象を使用しているため、オン/オフ状態、すなわちビットのみに基づき計算が順次行われる古典的なコンピューティングとは対照的に、計算を同時に実行できる。
【0008】
量子コンピュータは多項式時間で大きな数を素因数分解することができ、公開鍵/秘密鍵メカニズムを破るために使用される可能性がある。量子コンピュータで実行するように設計されたShorのアルゴリズムは、量子フーリエ変換(QFT)を使用して行われる周期発見のプロセスである。QFTは、関数f(x)の周期を決定するために使用することができる。全ての実験を一度に重ね合わせて実行することができ、悪い実験(bad experiments)は破壊的な干渉効果によって悪化し、良い実験(good experiments)は建設的な干渉効果によって支配されるため、QFT処理は量子コンピュータ上で効率的に実行可能である。QFTの周期発見メカニズムが利用可能となると、因数分解されている数の数学的構造におけるパターンを見出すために利用することができる。まだ商品化されてはいないが、量子コンピュータは少なくとも近い将来クラウド経由で利用可能となり得る。
【0009】
別のトレンドとして、単一の中央データベースに含まれるのではなく、複数のコンピュータにデータベースを分散することを含む、分散型元帳技術(Distributed Ledger Technology 「DLT」)がある。このテクノロジは、「ブロックチェーン」テクノロジとも呼ばれる。DLTでは、新しい各データブロックを送りつけた認証済みノードによってデジタル署名され、さらに前のブロックのハッシュ値を含める必要があるため、セキュリティが強化される。このようにして、最初のブロックに戻っていくこのチェーン内の全てのブロックのハッシュ値を含むリストが形成される。前のブロック全てのハッシュ値を含めることを要求することにより、トランザクションの履歴は改変に対し大いに保護される。
【0010】
DLTではさらに、自己修正メカニズムを使用して、一連のデータブロックを多数のコンピュータで複製する必要がある。このように自然な冗長性が組み込まれているだけでなく、重要なことは新しいブロックを正当化するためにも合意が必要とされていることである。換言すれば、悪意のある活動が偽のトランザクションを「合法的に見える」様にするためには、同時に多数のノードを攻撃しなければならない。さもないと「少数派の偽のトランザクション」はDLTの自己修正メカニズムによって上書きされる。
【0011】
DLTはサイバーセキュリティのための非常に安全なプラットフォームであると考えられており、これも実用的に可能である。DLTと非対称暗号化によって利点がもたらされるわけだが、どちらの技術も主な防衛策としてあるのは素因数分解が困難であることに依存していることである。したがって、大きな素数を因数分解する能力を持つ量子コンピュータは、これらのテクノロジを使用したセキュリティへの挑戦を提示する。
【0012】
量子コンピュータが、そのような計算処理を行うために使用されるとき、理論的にブルートフォースタイムを鍵サイズに指数関数的に関連付けることができる多くの方式が提言されてきた。そのような方式の例は、符号ベースの暗号化、ラティスベースの暗号化、ハッシュベースの暗号化、多変数多項式に基づくシステム、および楕円曲線の超特異同種にも基づくシステムである。例示的な符号ベース暗号化機能は、ポスト量子世界において、鍵サイズとブルートフォースタイムとの間に指数関数的関係を有することが数学的に証明されているMcEliece暗号システムおよびNiederreiter暗号システムを含む。
【0013】
McElieceおよびNiederreiter方式の秘密鍵にはふたつの主要な要素、すなわちGoppa(ゴッパ)多項式G(x)、および符号語位置の分子の集合や、位置や補助集合として称されるLがある。符号化理論から、Goppa(ゴッパ)符号、すなわち(L,G)符号を一意的に定義するのはG(x)およびLであることはよく知られている。G(x)およびLはパリティ検査行列および生成行列を一意に決定し、それらは(L,G)符号の構成的復号化アルゴリズムを実現するためにも必要である。Goppa符号に基づく全ての既知の方式では、秘密鍵は多項式G(x)であり、ここで集合Lはガロア体GF(2m)の全ての要素の集合であり、2m=nは公開鍵の要素である。
【0014】
秘密鍵の最初の構成要素に関して、既知のMcElieceおよびNiederreiter暗号化方式は次の4つの定義を持つバイナリ既約Goppa符号に基づく。
定義#1:G(x)が既約多項式の場合、Goppa符号は既約と呼ばれる。
定義#2:バイナリベクトル a=(a
1a
2…a
n)は次の等式が満たされる場合に限り、(L, G)符号の符号語である。
(ただし α
i ∈ L かつ L={α
1,α
2,...,α
n} ⊆ GF(2
m), G(α
i) ≠0, ∀α
i∈L )
定義#3:多項式G(x)が複数の根を持たない場合、Goppa符号は分離可能と呼ばれる。
定義#4:多項式G(x)が次の形式である場合、Goppa符号はワイルド(Wild)と呼ばれる。G(x) = g(x)
τ(ただし、g(x)は分離可能な多項式)
【0015】
第二成分に関して、McElieceおよびNiederreiter方式の秘密鍵の2番目の部分は、補助集合 L⊆GF(2m)である。
古典的なMcEliece方式では、2つの行列式が用いられるSはランダムな非特異のk×k行列、Pはランダムなn×nの置換行列である。McEliece方式では、二つの行列と、L及びG(x)から得られる生成行列Gとを用いて公開鍵行列 G*=S×G×Pが計算される。
【0016】
McEliece暗号化システム(McEliece cryptosystem (MECS))は次の様に定義される。
秘密鍵:(復号化アルゴリズム, L, G(x), S, P)
公開鍵:G
* = S × G × P
暗号化:mをkビットのメッセージとし、eをハミング重みW
H(e)≦tを有するランダムなnビットベクトルとすると、
が暗号文となる。
復号化:復号化は次のアルゴリズムで提供される。
2)(誤り訂正の)複号アルゴリズムを使用し、LおよびG(x)の内容を知ることで、
m
*=m×Sを取得する。
3)m=m
*×S
-1
【0017】
McElieceおよびNiederreiter方式はより安全な暗号化方式ではあるが、大きな鍵サイズを使用し、より多くのストレージ資源を必要とする。量子コンピュータがもたらすであろうサイバーセキュリティに対する課題に対処するサイバーセキュリティメカニズムが必要とされている。このメカニズムは、量子コンピュータの計算能力に対して安全でなければならないだけでなく、古典的なコンピューティングデバイス、スマートフォン、Internet-of-Things(IoT)デバイス、クレジットカードチップの様な小型デバイス等に関しても展開可能でなければならない。暗号化/複号化プロセスでも高い効率を維持する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0018】
本発明の一態様によれば、暗号化されるデータを受信する入力装置で暗号化システムおよび暗号化方法が提供される。暗号化システムおよび方法は、暗号化されるデータを受け取り、暗号化エンジンからの命令を使用してそのデータを暗号化するためのプロセッサも含む。暗号化システムおよび方法では、実行時の命令は、Goppa多項式の次数より大きくない次数の分母の有理関数を有する補助集合からなるバイナリ既約Goppa符号に基づく符号ベースの暗号化方式を使用してデータを暗号化する。
【0019】
本発明の他の態様によれば、実行時の命令は、重み付きハミングメトリックのGoppa符号も使用する。
【0020】
本発明のさらに他の態様によれば、多項式はr以下の次数を有する。ここで、rはLの集合におけるF2
m[x]の有理関数の分母の最大次数であり、Lはr以下の次数の有理関数の集合で、rは1より大きく、有限体GF(2m)からの係数を持つ。
【0021】
さらに別の態様では、量子コンピュータを使用したサイバー攻撃に対するセキュリティを強化した公開鍵暗号化基盤を作成するためのシステムおよび方法が提供される。この実施形態では、一般に3つの異なる実施方法がある。
1) 署名のみ、2) 暗号化のみ、3) 署名+暗号化である。
署名のみの実装は、例えばメッセージの信憑性を検証可能にする必要があるが、メッセージを暗号化せずに送信し格納することができる場合に利用される。その一例がパブリックにアクセス可能なデータを格納しているパブリックブロックチェーンである。
【0022】
暗号化のみの実装は、例えばメッセージを変更、破損、または置き換えができない場合に利用される。一例はメディアが改ざんから保護されているが、セキュリティが要求される場合である。この実装は、送信者が匿名であるために識別子が不明なことから署名が要求されないTor、I2Pなどの様なケースにも適している。他の典型的な利用はハードドライブ暗号化、フォルダ/ファイル暗号化、データベース暗号化などである。
【0023】
署名+暗号化の実装は、例えばメッセージがはじめに送信者の秘密鍵で署名され、続いて受信者に送信される前に受信者の公開鍵で暗号化され、さいごに受信者で秘密鍵を使って受信者により復号化される。この種の実装は、SSL、SSH、NPM、PGP/GPGなど(ただし、これに限定されない)、最新の暗号化フレームワークとプロトコルのほとんどに見られる。
【0024】
本発明の別の態様によれば、量子コンピュータを使用したサイバー攻撃に対するセキュリティを強化した公開鍵暗号化プラットフォームを作成するためのTrusted Platform Module(TPM)が提供される。
【0025】
本発明の他の態様によれば、量子コンピュータを使用したサイバー攻撃に対するセキュリティを強化した公開鍵暗号化プラットフォームを作成するためのUSBセキュアキーが提供される。
【0026】
本発明のさらに別の態様によれば、ポスト量子ブロックチェーン(Post-Quantum Blockchain 「PQBC」)を構築し、ポスト量子世界のコンピューティングにおいて、安全なDLTを作成することができる。これにより、金融取引、プライバシーデータなどの機密データが、量子化後のコンピューティングの世界でも信頼できるようになる。
【0027】
本発明の態様は、セキュリティを高めるために、事実上あらゆる産業に適用することができる。DLTへの応用はその一例に過ぎない。必要に応じてPQBCでデータブロックを暗号化することにより、さらにセキュリティが向上する。
【0028】
したがって、本明細書におけるその詳細な説明がよりよく理解され得るように、および当該技術に対する現在の貢献がよりよく理解されることができるように、本発明の例のある実施形態をかなり広く概説した。当然のことながら、以下に説明され、添付の特許請求範囲の主題を形成する本発明の一例の更なる実施形態がある。
【0029】
これに関して、本発明の一例の少なくとも一つの実施形態を詳細に説明する前に、本発明の一例はその適用において、本発明の構成が以下の説明に記載される構造の詳細、または示された図面や構成要素に限定されないことを理解されたい。本発明は、記載されたものに加えて様々な方法で実施および実行されることができる実施形態が可能である。また、本明細書で使用されている語法および用語ならびに要約は説明を目的としており、限定するものと見なすべきではないことを理解されたい。
【0030】
したがって、当業者は、本開示の基礎となる概念が、本発明のいくつかの目的を実行するための他の構造、方法およびシステムの設計の基礎として容易に利用され得ることを理解するであろう。したがって、特許請求の範囲は、本発明の精神および範囲から逸脱しない限り、そのような同等の構成を含むと見なされることが重要である。
【図面の簡単な説明】
【0031】
【
図1】は、暗号化、復号化、デジタル署名の生成、デジタル署名の検証などに使用される本発明の一実施形態による暗号化方法を実行するためのシステムのブロック図である。
【
図2】は、本発明の追加の実施形態により暗号化方法を実行するためのシステムのブロック図であり、それによってシステムは、Trusted Platform Module(TPM)またはユニバーサルシリアルバス(USB)インタフェースの使用を通じてセキュリティを提供する。
【
図3】は、本発明の別の実施形態による暗号化方法を実行するためのシステムのブロック図であり、それによってシステムは入力パラメータのセットに基づいて公開鍵と秘密鍵を生成する。
【
図4】は、本発明の別の実施形態による暗号化方法を実行するためのシステムのブロック図であり、それによってポスト量子ブロックチェーン(PQBC)が作成され、PQBCの量子コンピュータや古典的なコンピュータからのサイバー攻撃に対するデータセキュリティが強化される。
【
図5】は、本発明の一実施形態による公開鍵暗号装置において、秘密鍵および対応する公開鍵を生成するプロセスのフローチャートである。
【
図6】は、本発明の一実施形態による公開鍵暗号装置において、公開鍵を使用してデータを暗号化するプロセスを示すフローチャートである。
【
図7】は、本発明の一実施形態による公開鍵暗号装置において、対応する秘密鍵を使用して暗号化データを復号化するプロセスを示すフローチャートである。
【
図8】は、本発明の一実施形態による公開鍵暗号装置において、秘密鍵を使用してデータにデジタル署名するプロセスを示すフローチャートである。
【
図9】は、本発明の一実施形態による公開鍵暗号装置において、対応する公開鍵を使用してデジタル署名を検証するプロセスを示すフローチャートである。
【発明を実施するための形態】
【0032】
本発明は図面を参照して説明され、図面全体を通して同様の参照番号は、同様の部分を指す。
図1には本発明の例示的実施形態による公開鍵暗号装置100が示されている。暗号装置100はメモリ102から暗号化鍵を受け取る。暗号化鍵は、公開鍵または秘密鍵であり得る。暗号装置はまた、入力装置104から暗号化されるべきデータを受け取る。データは、送信者から受信者に安全に送信されるメッセージベクトル、またはネットワークインタフェース、ハードドライブなどのデータ記憶装置、キーボードなどからのデータを含むことができるが、これらに限定されない。後述するように、暗号化されるデータはデジタル署名されるデータのハッシュ値でもあり得る。
【0033】
暗号化鍵および暗号データは、パーソナルコンピュータなどのコンピューティングデバイスの内部から、ネットワーク内の1つまたは複数のデバイスから、またはネットワークの外部のサードパーティデバイスから受信することができる。以下に、より詳細に説明するように、公開鍵暗号装置は、単一の半導体パッケージに統合されているか、単一のコンピュータもしくはサーバ内に含まれるいくつかの半導体装置に分散されているか、1つ以上のネットワーク内の複数のデバイスに分散しているかに関わらず、ここに記載される処理を実行する能力がある任意の装置であり得ることが容易に理解されるであろう。
【0034】
暗号装置100は、入力装置104から平文データを受信し、暗号化鍵を受信するための、例えばネットワーク通信インタフェースとすることができる入力装置106を含む。平文データおよび暗号鍵は、続いてシステムメモリ112に格納するために、入力/出力ブリッジ108およびメモリブリッジ110に転送される。例示的な実施例では、オペレーティングシステム並びにシステムメモリ112に格納されている他のオペレーティング命令114に加えて、システムメモリは暗号エンジン116の処理命令を含む。暗号エンジン116は、暗号化、復号化、デジタル署名、デジタル署名の検証などのような暗号機能のための命令を提供する。
【0035】
暗号化されたデータの暗号処理は、メモリバスを介してシステムメモリ112に連結されているCPU118において行われる。良く理解されているように、CPU118は並列コプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、マイクロプロセッサなどとして実装することができる。
【0036】
図1に示されるように、システムのすべての構成要素が単一の装置内に含まれる場合、暗号装置100は単一目的のコンピューティング装置、例えばセキュアキーの様な1つまたは複数の特殊暗号機能を実行する特殊な装置として実装できる。代替として
図1に示されるような構成要素および機能は、多目的のコンピューティング装置、例えば一般的なコンピュータまたはサーバ内に分散させることができ、またはネットワーク内の複数の装置に分散させることができる。例えば、機能は良く知られた方法で、サーバのクラスタ上に実装することができる。
【0037】
図1の実施形態は、古典的なコンピュータおよび量子コンピュータの両方からのサイバー攻撃に対して強化され、管理可能な鍵サイズおよびMcElieceおよびNiederreiter方式の変形を使用して改善された計算効率を有するインターネットなどのコンピュータネットワーク上で実施できる。古典的なMcElieceおよびNiederreiterのアルゴリズムでは、スキームパラメータは2つの重要な要素mおよびtによって決定され、誤り訂正符号は古典的な、すなわち重み付けされていないハミングメトリックにおいて考慮される。本願の方式の一実施形態では、第3のキーパラメータrに基づいて符号長nのパラメータを選択し、重み付きハミングメトリックにおいてGoppa符号を使用することに大きな柔軟性がある。この実施形態では、特殊なタイプの位置集合L
*が使用され、これはr以下の次数の有理分数の集合であり、rは1より大きく、有限体GF(2
m)からの係数を有する。これはフィールドGF(2
m)の要素が位置集合として使用される古典的な方式とは対照的である。位置集合のこの変更は符号長を大幅に増加させるが、計算はフィールドGF(2
m)に留まる。
【0038】
この実施形態では、パリティ検査行列Hの特殊表現、および符号の生成行列G、エラーベクトルの特殊選択、及び/又は追加フィールドの包含による符号語表現の特殊選択が利用される。一実施形態では、n、k、およびdが正の整数であり、nは符号長、kは情報シンボルの数、およびdは、
の最小距離、を特徴とするバイナリ一般化(L,G)符号に対してパリティ検査行列Hが生成される。ここで、I
2
m(i) はGF(2
m)からの係数を持つi次既約多項式の数である。補助集合Lの特殊置換として変換 A × H × P = H* (または S × G × P = G*)を提示することも可能である。したがって、行列G*またはH*は、行列SまたはAおよびPなしで、L*およびG(x)から得ることができる。ここで、L*は補助集合Lの特殊秘密置換である。そのような場合、L*を秘密鍵の第2の部分として解釈することができる。本発明のこの実施形態は、暗号化方式および署名方式を含むが、これに限定されない主要な構成要素に変更を加えるために適用することができる。
【0039】
この実施形態では、行列SおよびPを用いて、Lの代わりにL*補助集合を使用することによって、以下のMcEliece方式の変形を得ることができる。
秘密鍵:(復号化アルゴリズム, L*, G(x))
公開鍵:G*
暗号化:mをkビットのメッセージとし、eをハミング重みW
H(e)≦tを有するランダムなnビットベクトルとすると、
が暗号文となる。
複号化:(誤り訂正の)複号アルゴリズムを使用し、L*およびGの内容を知ることでmを取得する。
【0040】
Niederreiter方式では、LとG(x)から得られる2つの行列と、パリティ検査行列Hとを用いて、公開鍵行列H* = A×H×Pが計算される。McEliece方式と同様、行列AとPでLの代わりに補助集合L*を直接利用することによって、以下のNiederreiter方式の変形を得ることができる。
秘密鍵:(復号化アルゴリズム, L*, G(x))
公開鍵:H*
暗号化:ハミング重みWH(e)≦tを有するメッセージをmとすると、c=m×H*Tが暗号文となる。
複号化:(誤り訂正の)複号アルゴリズムを使用し、L*およびG(x)の内容を知ることでmを取得する。
【0041】
この実装は、以下を可能にする:
1)補助集合の拡大、それによる利用可能な秘密鍵の拡大。
2)計算を同程度の符号長を有する有限体で保つために、1よりも大きい次数の有理関数を使用する。例えば、フィールドGF(2m)の係数を持つ2次の有理関数の場合、符号長はn=22m-1+2m-1である。異なる次数の使用の実際の利点は、以下のとおり。
1)暗号化、復号化、および鍵生成プロセスに必要なCPUサイクル数を減らす。
2)古典的Goppa符号に於けるように、同じパラメータ(n,k,d)を有する符号に対する安全性を高める。
【0042】
本発明の実施形態の一般化(L,G)符号は、次数がr(r>1)以下で、その分子が分母の形式微分のF2
m[x]からの様々な既約多項式であるF2
m[x]の真有理関数が選択される集合Lによって特徴づけられる。
【0043】
本発明の一実施形態では、McElieceおよびNiederreiter方式における秘密鍵の第二の部分として特殊補助集合が使用される。この実施形態では、以下の追加の定義がある。
定義#5:補助集合Lは以下の様に定義される
ここで、f'
i(x)は、GF(2
m)のf
i(x)の形式微分であり、
【0044】
定義#6:バイナリベクトル a = (a
1, a
2, … a
n) は以下の公式が満たされる場合にのみ一般化 (L, G) 符号の符号語である。
そのような符号の場合の最小距離の設計境界:
そして、それに対応する復号化アルゴリズムが決定される。そのような一般化(L,G)符号のためのパリティ検査行列を構築するために、モジュロ G(x)による有理分数
のための以下の表現が使われる。
【0045】
一般化Goppa符号の方程式は以下の様に書き直すことができる。
【0046】
この方程式から、パリティ検査行列 H が取得される。
【0047】
このパリティ検査行列から、一般化(L,G)符号と行列SおよびPを使うことにより、公開鍵行列G*=S×G×Pを計算するための生成行列Gを取得することができる。
【0048】
別の実施形態では、補助集合Lに対して、異なる次数のf
i(x)を有する分数
【0049】
以下の2つの例は、説明の目的で提供される。
【数1】
【0050】
【0051】
前述の様に、特殊一般化Goppa符号は、有理関数
の集合としての補助集合Lで構築される。特殊一般化Goppa符号はReed Solomon(RS)符号でも代替符号でもない。
【0052】
これらの一般化Goppa符号を復号するには、Goppa多項式G(x)および補助集合Lが知られていなければならない。次に古典的な復号化アルゴリズム(ユークリッド、Berlekamp-Massey、Pattersonなど)を使用することができる。
【0053】
1より大きい次数の位置分子の集合、ガロア体拡張mの次数を使用して、補助集合Lを減少させ、それにより復号化プロセスにおける計算の複雑さが軽減される。フィールド拡張の次数mはr倍減少する。ここでrは位置分子の次数である。
【0054】
例として、スキーム(2060,1720,t=30)は、元の方式で使用されるGF(211)の代わりに、ガロア体GF(26)からの要素を使用することによって、古典的なMcElieceおよびNiederreiterスキーム(2060,1720,t=30)にパラメータで近接して構築され得る。したがって、この例の方式では、復号化手順における全ての計算は、211個の要素を必要とするガロア体GF(211)の代わりに、26個のみの要素を有するガロア体GF(26)で行うことができる。
【0055】
図1に示す実施形態では、暗号演算が実行されたのち、この計算結果120が入力装置106に返され、暗号装置100から出力される。本発明の一態様による実施形態は、データストレージ、アクセス、暗号化、復号化、デジタル署名、デジタル署名検証等のための高度に安全なシステムを構築するために使用できる公開鍵暗号化システムおよび方法を提供する。
【0056】
図2は、前述の暗号化方法を採用することができるシステムの代替実施形態を示す。
図2のシステムでは、暗号エンジン116は、システムメモリに格納されるのではなく、限定しないがTPM-Trusted Platform Module(TPM)またはユニバーサルシリアルバス(USB)モジュールのような独立した処理モジュール132として動作する、フィールドプログラマブルアレイ(FPGA)のようなチップ130上に実装される。独立した処理モジュール132上に暗号エンジン116を実装することの利点は、秘密鍵124がチップ130に格納され、したがってシステムメモリ114に含まれるオペレーティングシステムから分離されることができることである。鍵124は、システムメモリ114と同様に危険にさらされる可能性があるオペレーティングシステムのファイルシステムに、直接公開されていない。
【0057】
図3の代替実施形態では、公開鍵暗号装置100は、パラメータ122の入力リストを使用して秘密鍵124とそれに対応する公開鍵126を生成する。前述の様に、公開鍵126(
図3)は暗号化および復号化オペレーションで使用することができる。一実施形態では、
図3の公開鍵暗号装置100は、暗号エンジン116によって実施される命令を除き、
図1関連して記述したように実施できる。
【0058】
図4ではポスト量子ブロックチェーン(Post-Quantum Blockchain (PQBC))140を作成するために暗号エンジンを適用されることができる前述のシステムの応用例を示す。
図4の例示的実施形態では、PQBC140内の最終データブロック152は、参加者ノード144によって作成されたデータブロック150によって先行され、さらに参加者ノード142によって作成されたデータブロック148によって先行される参加者ノード146によって作成される。
全ての参加ノードは、暗号機能のために公開鍵暗号装置100を使用する。例えば、ノード146が最終データブロック152を作成すると、ノード146は公開鍵暗号装置100のデジタル署名機能を使用してそのブロックにデジタル署名し、前のデータブロック150のハッシュ値をPQBCに記録する。同様に、他の参加ノード142および144も新しいデータブロックを作成するときには同じステップを実行する。各データブロック内のトランザクションデータは、公開鍵暗号装置100内の暗号化機能を使用して、任意に暗号化することができる。エンドポイントセキュリティは、秘密鍵124がオペレーティングシステムとは別に維持される
図3のシステムを使用することにより、さらに強化することができる。
【0059】
図3の装置によって実施され得る代替の命令は、秘密鍵と公開鍵のペアを生成する方法が示されている
図5に関連して描かれている。秘密鍵124およびその対応する公開鍵126は、暗号化、復号化、デジタル署名、およびデジタル署名の検証など(ただしこれらに限定されない)の公開鍵暗号装置100内の異なる機能に使用される。符号パラメータ選択エンジン132は、符号長
であるという特性を有するm,r,t,nを選択する。mはフィールド拡張GF(2
m)の次数であり、その範囲で、復号及ぶ署名計算中に演算が実行され、それによって実施される計算の複雑さが決定される。ここで、rは集合Lの有理関数の分母の最大次数、tは符号によって訂正が可能な重み付きハミングメトリックのエラーの数である。m、r、およびtの選択方法に制限はない。
【0060】
説明を目的に、mは計算に使用されるガロア体GF(2
m)を決定し、他方、rおよびmは補助集合Lのサイズを決定する。符号長n、r、およびtは符号の最小距離を決定するので、したがってこれらのパラメータはまた、そのような誤り訂正符号によって訂正され得る誤りの数を決定する。秘密補助集合L生成器160は、集合Lを指示するために、n個の要素(有理関数
を選択または生成する。明確にするために、f
i(x)は次数rの既約多項式であるべきである。そのような多項式を生成するための良く知られた方法があり、それらは本発明の範囲外である。秘密Goppa多項式G(x) プロセッサ162は、F
2
m[x]から原始多項式次数tを選択、及び/又は生成する。明確にするために、G(x)はGF(2
m)からの係数を持つ次数tの既約(分離可能)多項式である。そのような多項式を生成するための良く知られた方法があり、それらのいずれも使用することができる。Goppa符号の二つの要素GおよびLは不等に定義される。
ここで、f´
i(x)は、f
i(x)の形式微分である。
バイナリパリティ検査行列H170は、tm×nバイナリ行列として表される。ランダムに選択されたmt×mt非特異行列S172および他のランダムに選択されたn×n置換行列P174とともに、公開鍵126はH*=S×H×Pの行列乗算によって得ることができる。他方、秘密鍵124は、K={S, P, L, G(x)}として得ることができる。
【0061】
本発明の一実施形態に従ってメッセージを暗号化する方式が
図6に示されており、メッセージ176は長さn、ハミング重みt/r以下のバイナリベクトルeとして提示されている。暗号化されたメッセージ178は、公開鍵126とメッセージ176との行列乗算 w = e × (H*)
T を使用することによって、長さmtの暗号化されたベクトルwとして得られる。
【0062】
本発明の好ましい実施形態に従って暗号化されたメッセージを復号化する方法が
図7に示されており、ここでは長さmtの暗号化されたメッセージ180がBerlekamp-Masseyアルゴリズム、または拡張ユークリッドアルゴリズム、またはPattersonを用いて複号器182によって復号される。秘密鍵124およびフィールドGF(2
m)186の要素は、復号化処理のために復号器182に提供される。明確のために、秘密鍵124において、G(x)は、有理関数
の集合として、補助集合Lを有する次数tの既約多項式であり、フィールドGF(2
m)からの係数である。復号化メッセージ184は長さnの情報ベクトルeおよびt以下の重み付きハミングメトリックである。
【0063】
暗号化装置100を使用して入力データに対するデジタル署名を取得する方式が
図8に示されている。この方法は、限定されないが、Courtois-Finiasz-Sendrier (CFS)署名スキームのような、良く知られたデジタル署名処理で、補助集合Lを有するGoppa多項式 G(x)の秘密Goppa符号要素を使用する。デジタル署名されるデータ190は、第一のハッシュプロセス192に提供される。得られたハッシュ値hはhおよびi(ただし、iは1から始まる増分値)を使用してハッシュ値Hを生成する(H=hash(h||i)、ただしHの長さはmtビット)ための第二のハッシュプロセス194によって使用される。次いで、第二のハッシュ値HはBerlekamp-MasseyまたはExtended Euclideanアルゴリズムを使用して、ガロア体GF(2
m)198の要素および秘密鍵124に基づく復号化プロセスにおいて復号器196によって使用される。明確のために、秘密鍵124において、G(x)は、有理関数
の集合として補助集合Lを有するフィールドGF(2
m)からの係数を有する次数tの既約多項式である。第二のハッシュプロセス194および復号器196は、復号化の成功に達するまで、増分値iで繰り返される。結果として得られるデジタル署名120は{s,i}として表され、以下の二つの要素からなる。
1) 長さn、重み付きハミングメトリックの重みがt以下のベクトルs。
2) 成功したステップの数に等しいパラメータi。
【0064】
暗号装置100において与えられたデータに対するデジタル署名を検証する方法が
図9に示されている。この実施形態では、検証されるべきデジタル署名202は{s
*,i}として表される。デジタル署名202によって署名されたデータ204は、wとしてハッシュプロセス206に提供される。ハッシュプロセス206は、結果として得られるハッシュ値h
*=Hash(h||i)(ここで、Hash(w)=hおよび、iはデジタル署名202内のパラメータ)となるように操作される。 デジタル署名202から、長さn、重み付きハミングメトリックの重みがt以下の署名ベクトルs*を得ることができる。公開鍵126とデジタル署名202からの署名sのバイナリベクトルとの行列乗算を使用することにより、長さtm、h
**=s
*×(H
*)
Tのバイナリベクトルを得ることができる。有効署名208と無効署名210間の決定は、値h**とh*を比較することにより得ることができる。
【0065】
本発明の特定の実施形態を本明細書に記載したが、それらが限定的であることを意図するものではない。本発明の範囲から逸脱することなく、それらに対する変形および修正、ならびに他の様々な特徴または機能を含む対台の実施形態を本発明に追加できることを理解されたい。
【国際調査報告】