IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ タレス・ディス・フランス・エス・ア・エスの特許一覧

特表2024-502190サイドチャネル攻撃に対して複数の点の乗算演算をセキュアにするための方法
<>
  • 特表-サイドチャネル攻撃に対して複数の点の乗算演算をセキュアにするための方法 図1
  • 特表-サイドチャネル攻撃に対して複数の点の乗算演算をセキュアにするための方法 図2
  • 特表-サイドチャネル攻撃に対して複数の点の乗算演算をセキュアにするための方法 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-17
(54)【発明の名称】サイドチャネル攻撃に対して複数の点の乗算演算をセキュアにするための方法
(51)【国際特許分類】
   G06F 21/75 20130101AFI20240110BHJP
   G09C 1/00 20060101ALI20240110BHJP
【FI】
G06F21/75
G09C1/00 650A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023541751
(86)(22)【出願日】2022-01-11
(85)【翻訳文提出日】2023-09-08
(86)【国際出願番号】 EP2022050455
(87)【国際公開番号】W WO2022148884
(87)【国際公開日】2022-07-14
(31)【優先権主張番号】21305022.2
(32)【優先日】2021-01-11
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】521561673
【氏名又は名称】タレス・ディス・フランス・エス・ア・エス
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】ビジラン,ダビ
(72)【発明者】
【氏名】マデック,ストゥバン
(72)【発明者】
【氏名】ルスレ,ミレーヌ
(57)【要約】
本発明は、複数の点の乗算演算結果
を計算する複数の点の乗算演算を含む楕円曲線暗号プロセスの実行をサイドチャネル攻撃に対してセキュアにするための方法に関し、nは整数、n>=1、dは所定のスカラー値、Pは点の加算法則と共にパラメータ(F、E、G、N)によって定義される、有限体上の楕円曲線の点であり、ここで、Fは曲線が定義される体、Eは曲線の方程式、GはF上のEのベースポイント、NはベースポイントGの位数であり、前記方法は暗号デバイスによって行われ: - マスキング値iRandを生成すること(S1)、 - iが{1,…,n}内にある、各所定のスカラー値dを前記生成されたマスキング値iRandで乗法的にマスクして、マスクされたスカラーd’を取得すること(S2)、 - iが{1,…,n}内にある、マスクされた複数の点の乗算演算結果
を計算すること(S3)、 - 前記マスクされた複数の点の乗算演算結果R’をマスク解除することにより、前記複数の点の乗算演算結果Rを取得すること(S4)を含む。
【特許請求の範囲】
【請求項1】
複数の点の乗算演算結果
【数1】
を計算する複数の点の乗算演算を含む楕円曲線暗号プロセスの実行をサイドチャネル攻撃に対してセキュアにするための方法であって、nは整数、n>=1、dは所定のスカラー値、Pは点の加算法則と共にパラメータ(F、E、G、N)によって定義される、有限体上の楕円曲線の点であり、ここで、Fは曲線が定義される体、Eは曲線の方程式、GはF上のEのベースポイント、NはベースポイントGの位数であり、
前記方法は、暗号デバイス(100)によって行われ、
マスキング値iRandを生成すること(S1)、
iが{1,…,n}内にある、各所定のスカラー値dを前記生成されたマスキング値iRandで乗法的にマスクして、マスクされたスカラーd’を取得すること(S2)、
iが{1,…,n}内にある、マスクされた複数の点の乗算演算結果
【数2】
を計算すること(S3)、
前記マスクされた複数の点の乗算演算結果R’をマスク解除することにより、前記複数の点の乗算演算結果Rを取得すること(S4)
を含む、方法。
【請求項2】
マスキング値iRandを生成することは、乱数値Randを生成することと、乱数値Randの逆数をとることによってマスキング値iRand(iRand=1/Rand modN)を計算することとを含み、
前記マスクされた複数の点の乗算演算結果R’をマスク解除することは、前記マスクされた複数の点の乗算演算結果R’を前記生成された乱数値Randと乗算することを含む、
請求項1に記載の方法。
【請求項3】
マスクされた複数の点の乗算演算結果R’を計算することは、
wが所定の整数w>=1である、[0,2-1]内のaに対して、すべての可能な合計
【数3】
を事前計算すること(S31)、
中間値Aを無限遠点において初期化すること(S32)、
Bが所定のスカラー値のビット数であり、0から|B|-wまでの整数jについて、wおきに、
a.前記中間値Aを2で乗算すること、
b.前記事前計算された可能な合計Rの中から合計Rを、次のように、すなわち、
がd’のj番目のビットであり、
【数4】
のように選択すること、
c.前記選択された合計Rを前記中間値Aに加算すること(S33)
を含む、請求項1または2に記載の方法。
【請求項4】
前記乱数値のサイズが32または64ビットである、請求項2または3に記載の方法。
【請求項5】
少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で実行されたときに、請求項1から4のいずれか一項に記載のステップを行うためのソフトウェアコード命令を含む、コンピュータプログラム製品。
【請求項6】
少なくとも1つのハードウェアプロセッサを有する処理システムを備える暗号デバイス(100)によって実行されたときに、請求項1から4のいずれか一項に記載のステップを行う実行可能なコンピュータコードを記憶する、非一時的なコンピュータ可読媒体。
【請求項7】
請求項1から4のいずれか一項に記載のステップを実行するように構成された少なくとも1つのハードウェアプロセッサ(101)を有する処理システム、
少なくとも1つの不揮発性メモリ(105)および/または読み出し専用メモリ(104)
を含む、暗号デバイス(100)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、公開鍵暗号の分野に関し、より詳細には、楕円曲線暗号プロセスで行われる、点の乗算演算をサイドチャネル攻撃に対してセキュアにするための方法に関する。
【背景技術】
【0002】
暗号アルゴリズムは、暗号化による通信のプライバシーの保証、認証、または検証可能な署名の生成のために一般的に使用される。このようなアルゴリズムの例としては、AES、DES、またはDSAがある。
【0003】
このような暗号アルゴリズムは、図1に示すような暗号化を行うデバイスの、消費電力または電磁シグネチャの分析に基づくサイドチャネル攻撃(SCA)に対してセンシティブである。
【0004】
ECDSAなどの楕円曲線暗号(ECC)プロトコルは、SCAに対して特に脆弱である。実際、そのようなプロトコルは、秘密鍵に加えて、暗号演算を行うためにノンスと呼ばれる他の値を使用する。例えば、ノンスをスカラー値として使用して、スカラーの点の乗算を行うことができる。そして、2012年のJ.-. Faugereらによる「Attacking (ec) dsa given only an implicit hint」において、さらに最近では、2020年のJ.Jancarらによる「Minerva:TheCurse of ECDSA nonces」において、秘密鍵を操作する演算がSCAから保護されているときでも、ECCプロトコルは依然としてそのような攻撃に対してセンシティブである:SCAによりノンスの数ビットを取得することで、攻撃者は格子基底縮小攻撃を行うことにより完全な秘密鍵を取得できる可能性があることが、実証されている。したがって、ECCプロトコルをSCAからより適切に保護する必要がある。
【0005】
ノンスを使用するECC演算をSCAから保護するこのような問題は、単一の演算で複数のノンスを同時に使用する複数の点の乗算を行うときに特に重要である。
【0006】
その結果、サイドチャネル攻撃に対してECCプロセスをセキュアにするための方法が必要になる。このような方法は、そのようなプロセスが複数の点の乗算を行うときに適用でき、効率的でなければならない。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】J.-. Faugere et al、「Attacking (ec) dsa given only an implicit hint」、2012年
【非特許文献2】J.Jancar et al、「Minerva: The curse of ECDSA nonces」、2020年
【発明の概要】
【課題を解決するための手段】
【0008】
したがって、この目的のために、第1の態様によれば、本発明は、複数の点の乗算演算結果
【数1】
を計算する複数の点の乗算演算を含む楕円曲線暗号プロセスの実行をサイドチャネル攻撃に対してセキュアにするための方法に関し、nは整数、n>=1、dは所定のスカラー値、Pは点の加算法則と共にパラメータ(F、E、G、N)によって定義される、有限体上の楕円曲線の点であり、ここで、Fは曲線が定義される体、Eは曲線の方程式、GはF上のEのベースポイント、NはベースポイントGの位数であり、前記方法は、暗号デバイスによって行われ:
- マスキング値iRandを生成すること、
- iが{1,…,n}内にある、各所定のスカラー値dを前記生成されたマスキング値iRandで乗法的にマスクして、マスクされたスカラーd’を取得すること、
- iが{1,…,n}内にある、マスクされた複数の点の乗算演算結果
【数2】
を計算すること、
- 前記マスクされた複数の点の乗算演算結果R’をマスク解除(unmask)することによって、前記複数の点の乗算演算結果Rを取得すること
を含む。
【0009】
このような方法により、点の乗算が合計された後、複数の点の乗算演算結果を簡単にマスク解除できる方法で、所定のスカラー値を保護することができる。
【0010】
一実施形態では、
- マスキング値iRandを生成するステップは、乱数値Randを生成することと、乱数値Randの逆数をとることによってマスキング値iRand(iRand=1/Rand modN)を計算することとを含む;および
- 前記マスクされた複数の点の乗算演算結果R’をマスク解除するステップは、前記マスクされた複数の点の乗算演算結果R’を前記生成された乱数値Randと乗算することを含む。
【0011】
こうすることで、計算プロセス終了時に、単一の演算でマスキングをキャンセルすることができる。
【0012】
一実施形態では、マスクされた複数の点の乗算演算結果R’を計算するステップは:
- wが所定の整数w>=1である、[0,2-1]内のaに対して、すべての可能な合計
【数3】
を事前計算すること、
- 中間値Aを無限遠点において初期化すること、
- Bが所定のスカラー値のビット数であり、0から|B|-wまでの整数jについて、wおきに:
a.前記中間値Aを2で乗算すること、
b.前記事前計算された可能な合計Rの中から合計Rを、次のように、すなわち:
がd’のj番目のビットであり、
【数4】
のように選択すること、
c.前記選択された合計Rを前記中間値Aに加算すること
を含む。
【0013】
このような方法は、事前計算された値に依存することにより、計算時間と労力を最小限に抑えながら、所定のスカラーdをサイドチャネル攻撃から常に保護できる。
【0014】
前記乱数値のサイズは、32または64ビットであってもよい。このように縮小された乱数値のサイズは、マスキング値iRandのサイズを縮小することなく、マスク解除のコストを制限する。
【0015】
第2の態様によれば、したがって、本発明は、少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品にも関し、このコンピュータプログラム製品は、前記製品がコンピュータ上で実行されたときに、第1の態様による方法のステップを行うためのソフトウェアコード命令を含む。
【0016】
第3の態様によれば、したがって、本発明は、少なくとも1つのハードウェアプロセッサを有する処理システムを備える暗号デバイスによって実行されたときに、第1の態様による方法のステップを行う実行可能なコンピュータコードを記憶する、非一時的なコンピュータ可読媒体にも関する。
【0017】
したがって、第4の態様によれば、本発明は:
- 少なくとも1つの不揮発性メモリおよび/または読み出し専用メモリ、
- 第1の態様による方法のステップを行うように構成された少なくとも1つのハードウェアプロセッサを有する処理システム
を備える暗号デバイスにも関する。
【0018】
前述のおよび関連する目的を達成するために、1つ以上の実施形態は、以下に十分に説明され、特に特許請求の範囲で指摘される特徴を含む。
【0019】
以下の説明および添付の図面は、特定の例示的な態様を詳細に記載し、実施形態の原理を使用することができる様々な方法のうちのほんの数例を示すものである。他の利点および新規な特徴は、図面と併せて考慮すると以下の詳細な説明から明らかとなり、開示される実施形態はそのような態様およびそれらの等価物をすべて含むことが意図される。
【図面の簡単な説明】
【0020】
図1】本発明の一実施形態による暗号デバイスを備えるシステムの概略図である。
図2】本発明の一実施形態による、複数の点の乗算演算を含む楕円曲線暗号プロセスの実行をサイドチャネル攻撃に対してセキュアにするための方法を概略的に示す。
図3】本発明の一実施形態による複数の点の乗算演算を含む楕円曲線暗号プロセスの実行をサイドチャネル攻撃に対してセキュアにするための方法の実行例を概略的に示す(n=2およびw=1のとき)。
【発明を実施するための形態】
【0021】
本発明は、複数の点の乗算演算を含む楕円曲線暗号プロセスの実行をサイドチャネル攻撃に対してセキュアにすることを目的とする。
【0022】
このようなプロセスは、図1に概略図が示されている暗号デバイス100によって行われることができる。暗号デバイス100は、バス102を介して、ランダムアクセスメモリ(RAM)103、読み出し専用メモリ(ROM)104、および/または不揮発性メモリ(NVM)105に接続されたプロセッサ101を含んでもよい。暗号デバイス100は、暗号デバイス100をネットワークに接続することができる通信インターフェース106をさらに含むことができる。このようなインターフェースは、アンテナに接続された無線インターフェースであってもよく、暗号デバイス100を様々な形態の無線ネットワーク、例えば広域ネットワーク、WiFiネットワーク、または携帯電話ネットワークに接続するために使用されてもよい。あるいは、このようなインターフェースは、イーサネットインターネットなどの有線インターフェースであってもよい。暗号デバイス100はまた、1つ以上のスクリーン、ラウドスピーカー、マウス、タクタイル面(tactile surface)、キーボードなどの、暗号デバイス100のユーザにインターフェースを提供する入出力手段107を含んでもよい。
【0023】
このような暗号デバイスは、例えば、スマートカード、携帯電話、タブレット、またはパーソナルコンピュータであり得る。パスポートなどの身分証明書に埋め込まれたスマートチップやハードウェアセキュリティモジュール(HSM)の場合もある。
【0024】
暗号デバイスによって行われる楕円曲線暗号プロセスは、例えば、プロトコル内で複数の点の乗算を行うECDSAプロトコルであってもよい。
【0025】
複数の点の乗算演算は、複数の点の乗算演算結果
【数5】
を計算し、nは整数、n>=1、dは所定のスカラー値、Pは点の加算法則と共にパラメータ(F、E、G、N)によって定義される、有限体上の楕円曲線の点であり、ここで、Fは曲線が定義される体、Eは曲線の方程式、GはF上のEのベースポイント、NはベースポイントGの位数である。
記号“.”は、点の乗算を表し、d.Pが、d回の点の加法群(addition group)法則P+P+…+Pを算出することを意味するのに対して、記号「*」は整数間の乗算を表す。整数によるユークリッド除算後の余りの算出は、モジュロとも呼ばれ、「mod」と記される。
【0026】
このような計算に使用される所定のスカラー値dはノンスと呼ばれる。上で紹介したように、暗号プロセスの秘密鍵を保護するために、そのようなノンスはサイドチャネル攻撃から保護されなければならない。
【0027】
本発明の主なアイデアは、複数の点の乗算演算を行う前にこれらのノンスに乗法的マスキングを適用することによって、ノンスを、SCAトレースから攻撃者によって推測されることから保護することである。この場合、問題は、マスクされていない複数の点の乗算演算結果
【数6】
を取得するために、複数の点の乗算演算出力からマスキングを除去するのを可能にすることである。そうするために、本発明による方法は、同じ複数の点の乗算演算で使用されるすべてのノンスをマスクする単一のマスクを使用する。そうすることで、このマスクを複数の点の乗算演算の出力から因数分解することができ、マスキングを単一の演算で簡単に除去できる。
【0028】
以下の段落では、図2に示すように、複数の点の乗算演算結果
【数7】
をセキュアに計算する本発明による方法のステップをより詳細に説明する。
【0029】
第1のステップS1において、暗号デバイスはマスキング値iRandを生成する。このような値は、例えば暗号デバイスに含まれる擬似乱数生成器PRNG108によってランダムに生成することができる。
【0030】
第2のステップS2において、暗号デバイスは、iが{1,…,n}内にある、各所定のスカラー値dを前記生成されたマスキング値iRandで乗法的にマスクして、マスクされたスカラーd’:d’=iRand*d modNを取得する。
【0031】
第3のステップS3において、暗号デバイスは、iが{1,…,n}内にある、マスクされた複数の点の乗算演算結果
【数8】
を計算する。この結果R’の計算は、所定の各スカラー値dがそのマスクされた値d’に置き換えられていることを除いて、計算されるべき結果
【数9】
の計算である。
【0032】
第4のステップS4において、暗号デバイスは、前記マスクされた複数の点の乗算演算結果R’をマスク解除することによって、前記複数の点の乗算演算結果Rを取得する。すべての項d,Pをマスクするために同じマスキング値iRandが使用されるため、簡単に因数分解してキャンセルできる。
【0033】
一実施形態では、第1のステップS1において、マスキング値iRandを生成することは、乱数値Randを生成することと、乱数値Randの逆数をとることによってマスキング値iRand:iRand=1/Rand mod Nを計算することとを含む。そのような乱数値は、例えば、32ビットまたは64ビットのサイズを有してもよい。
【0034】
このような実施形態では、第4のステップS4において、前記マスクされた複数の点の乗算演算結果R’をマスク解除することは、前記マスクされた複数の点の乗算演算結果R’を前記生成された乱数値Randと乗算することを含む。実際、
【数10】
である。
【0035】
このような方法で、マスクされた複数の点の乗算演算結果R’をマスク解除し、制限されたサイズの乱数値Randを使用することで、第4のステップで行われる演算のコストを最小限に抑え、良好な性能を保証する。
【0036】
以下の段落では、第3のステップS3においてマスクされた複数の点の乗算演算結果R’を計算するための例示的な実施形態について説明する。この実施形態の考え方は、マスクされた所定のスカラーd’の所定の長さwビットのチャンクによる結果を計算し、複数の点の乗算計算が要求された時点でいかなる点の乗算も行うことを回避するために、可能なすべてのチャンクを事前計算することである。
【0037】
第1のサブステップS31では、wがw≧1の所定の整数である、[0,2-1]内のaに対して、すべての可能な合計
【数11】
が事前計算される。別の言い方をすると、合計Rは配列(a,…,a,…,a)の各可能な値に対して計算され、ここで、iが{1,…,n}内にある、各aは、[0,2-1]内の任意の値と等しくなり得る。事前計算された合計Rの数は2n*wに等しい。
【0038】
このような事前計算は、所定のスカラー値dに依存しないため、方法の他のステップを行う前に行うことができる。これは、暗号デバイス自体によって行われてもよく、またはサーバーなどの別のデバイスによって行われてもよく、計算された合計が暗号デバイスに転送されてもよい。
【0039】
第2のサブステップS32では、暗号デバイスは中間値Aを無限遠点において初期化する。
【0040】
第3のサブステップS33では、暗号デバイスは:
・中間値Aを2で乗算する:
A=2.A
・事前計算された可能な合計Rの中から合計Rを、次のように、すなわち:
がマスクされた所定のスカラーd’のj番目のビットであり、
【数12】
のように選択する。この式では、(d|…|dj+w-1)は、基数2で表現されたd’のビットjからj+w-1までを連結することによって形成された文字列の、基数2での数学的評価を表す。このステップの一番目の実行において、インデックスjは0に等しい。
・選択された合計Rを中間値Aに加算する
A=A+R
・jをwだけ増加させる。
【0041】
このサブステップS33は、jがサブステップが行われる最後のjの値である|B|-wに達するまで、インデックスjの新しい値に対して繰り返され、ここでBはd’のビット数である。|B|がwの倍数ではないとき、jが|B|-wより大きくなったとき、このサブステップは、wを|B|-jに置き換えた後、最後にもう一度繰り返される。これにより、考慮すべきビットがwビット未満しか残っていないときに、所定のスカラーの最後のビットを考慮できる。
【0042】
図3は、n=2、w=1の場合の実行例を示している。
【0043】
この場合、得られるべき複数の点の乗算結果は、R=d.P+d.Pである。
【0044】
第1のサブステップS31では、[0,1]内のaに対するすべての可能な合計
【数13】
が事前計算される。この場合、それは、(a1;a2)=(0;0);(0;1)、(1;0)、および(1;1)の合計を事前計算することを意味し、他の組み合わせの合計がすでにわかっているため、P1+P2を計算するだけになる。
【0045】
第1のステップS1において、暗号デバイスは、乱数値Randを生成し、乱数値Randの逆数をとることによりマスキング値iRandを計算する。
【0046】
第2のステップS2において、暗号デバイスは、生成されたマスキング値iRandで所定のスカラー値dおよびdを乗法的にマスクして、マスクされたスカラーd’=iRand*d modNおよびd’=iRand*d modNを取得する。
【0047】
第3のステップS3において、暗号デバイスは、{0,…,B-1}内のjの各値に対して第3のサブステップS33を繰り返し、ビットdの値に応じて、各反復において中間値Aに加算される事前計算値を選択することにより、マスクされた複数の点の乗算演算結果
【数14】
を計算する。
【0048】
第4のステップS4において、暗号デバイスは、マスクされた複数の点の乗算演算結果R’を、生成した乱数値Randと乗算して、複数の点の乗算演算結果Rを取得する。
【0049】
結果として、上記の方法は、点の乗算のスカラーとして使用されるノンスをサイドチャネル攻撃にさらすことなく、複数の点の乗算演算をセキュアに計算することを可能にする。
図1
図2
図3
【国際調査報告】