JPWO2011148558A1 - 署名生成装置、署名方法、及び署名生成プログラム - Google Patents

署名生成装置、署名方法、及び署名生成プログラム Download PDF

Info

Publication number
JPWO2011148558A1
JPWO2011148558A1 JP2012517100A JP2012517100A JPWO2011148558A1 JP WO2011148558 A1 JPWO2011148558 A1 JP WO2011148558A1 JP 2012517100 A JP2012517100 A JP 2012517100A JP 2012517100 A JP2012517100 A JP 2012517100A JP WO2011148558 A1 JPWO2011148558 A1 JP WO2011148558A1
Authority
JP
Japan
Prior art keywords
random number
basic
calculation
arithmetic
signature generation
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.)
Withdrawn
Application number
JP2012517100A
Other languages
English (en)
Inventor
澄夫 森岡
澄夫 森岡
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2011148558A1 publication Critical patent/JPWO2011148558A1/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

署名生成装置(1)は、署名生成手続きに含まれる基本演算をそれぞれ実行する基本演算実行器(2)〜(6)と、基本演算実行器(2)〜(6)と互いに接続され、基本演算実行器(2)〜(6)での演算を制御すると共に、基本演算実行器(2)〜(6)の演算状態を監視し、基本演算実行器(2)〜(6)のうちで秘匿対象データを引数とする秘密演算を実行中の基本演算実行器が存在する場合には、その基本演算実行器以外の他の基本演算実行器に乱数を引数とする乱数演算を同時実行させる全体動作制御部(7)と、を備える。これにより、署名生成速度の低下、電力消費の増加、回路規模の増大などを招くことなく、サイドチャネル攻撃に対する高い耐性を備えることができる。

Description

本発明は、サイドチャネル攻撃に対する耐性を保ちつつも、署名生成を高速かつ低電力で実現するのに好適な、署名生成装置、署名方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体に関する。
近年、暗号及び署名の分野では、グループ署名の技術が提案されている。グループ署名技術は、署名者が、ある権限を持つグループに所属しているかどうかを認証する技術である。グループに所属しているどのメンバであるかは匿名にすることができ、しかも、問題があれば、特権者が匿名性を剥奪することが可能であり、匿名性の悪用も防止することができるという利点を有している。
グループ署名技術は、例えば下記の文献(特許文献1、非特許文献1乃至4)に開示されている。非特許文献1には、グループ署名の生成及び検証を行うための基本的なアルゴリズムが開示されている。
また、非特許文献1には、グループ署名の生成を高速に行う小規模回路が開示されている。特許文献1に開示された署名生成装置では、楕円曲線演算回路と、RSA演算回路と、ハッシュ演算回路と、を備えており、それぞれの回路が低帯域バスで接続されている。そして、各演算回路の個数を適切に調節することで、回路規模を大幅に増やすことなく、楕円曲線演算、RSA演算、ハッシュ演算の各演算を並列に実行し、署名生成を高速化する。
ところで、暗号の実装に際しては、暗号化処理中の装置の動作状況から秘密情報を取得するサイドチャネル攻撃への対策が重要となる。サイドチャネル攻撃の最も代表的な手法としては、回路の消費電力波形や漏洩電磁波波形から、秘密鍵の値を割り出す手法が知られている。
サイドチャネル攻撃としては様々な手法が知られているが、RSA暗号や楕円暗号などの公開鍵暗号については、鍵の各ビットの値に応じて演算時間が変わることを利用したタイミング攻撃と呼ばれる方法と、鍵の各ビットの値に応じて電力消費の大小が変わることを利用したSPA(Simple Power Analysis)と呼ばれる方法が主流であり、最も脅威となっている。
タイミング攻撃やSPAへの対策としては、鍵の値に依存して演算時間や電力消費が変わらないように擬似演算を追加して実行する方法や、ランダム値を使って演算する回路を追加して並列に動作させる方法が良く知られている。なお、公開鍵暗号回路である限りは、RSA暗号であっても楕円暗号であっても、使用される対策法の原理は略同一である。
例えば非特許文献2や特許文献2乃至4などに、サイドチャネル攻撃への対策技術が開示されている。非特許文献2には、RSA暗号回路に対するサイドチャネル攻撃の方法と、それに対する対策が開示されている。特許文献2には、楕円曲線上のスカラー演算についてのサイドチャネル攻撃への対策技術が開示されている(段落0022〜0027、0139〜0145)。
特許文献3には、逆変換演算の同時実行を行うことで、サイドチャネル攻撃を阻止するルーチンを実行させる点が開示されている(段落0010〜0012、0035〜0041)。特許文献3では、逆変換演算(相補的な演算)を利用して対策を行うものであり、また、演算時間長のかく乱にランダム値を利用する。特許文献4には、サイドチャネル攻撃への対策技術として、中間変数値をランダム値でマスクする点が開示されている。
特開2010−014912号公報 特開2006−243690号公報 特開2007−234001号公報 特表2009−500710号公報
森岡澄夫,荒木俊則,一色寿幸,尾花賢,佐古和恵,"二段階動作合成によるグループ署名ASICの実装と評価",電子情報通信学会 VLSI研究会,VLD 2009-128,pp.175-180,2010年 A. Miyamoto et al., "Chosen-message SPA attacks against FPGA-based RSA hardware implementations," FPL2008, pp.35-40, 2008. J. Camenish and J. Groth, "Group signatures: Better efficiency and new theoretical aspects," SCN2004, LNCS Vol.3352, pp.120-133, 2004. T. Isshiki, K. Mori, K. Sako, I. Teranishi, and S. Yonezawa, "Using Group Signature for Identity Management and its Implementation," DIM2006, 2006.
しかし、非特許文献2などに開示されるいずれの対策技術も、サイドチャネル攻撃への対策という目的は共通するものの、楕円曲線演算やRSA演算などの個別の暗号演算への対策技術である。このため、署名生成アルゴリズムに含まれる全ての演算に対して、このような個別演算についての対策技術をそのまま適用するものとしては、サイドチャネル攻撃への耐性を持たせることはできても、署名生成速度の低下、電力消費の増大、回路規模の増加を招くことになる。
例えばサイドチャネル攻撃への対策として、全ての演算に対して擬似演算を単純に追加した場合には、演算時間は最大で2倍(平均で1.5倍)に延びてしまう。また、擬似演算を追加することで、同様にして電力消費量も増えてしまう。これは、公開鍵暗号回路では、有限体上の乗算又は乗剰余を多数回繰り返して行うものであり、最も電力を消費する乗算器は、互いに略同一の回路構成を持つ。このため、公開鍵暗号回路での電力消費量は、RSA暗号であっても楕円暗号であっても、略同じことを理由とする。さらには、例えばランダム演算回路を追加した場合には、回路規模が2倍近くになってしまう。
従って、サイドチャネル攻撃に対する耐性を持ちつつ、高速、低電力、かつ小規模な回路で、署名生成可能な技術が強く求められている。
特に、通常のデジタル署名とは異なり、グループ署名では、RSA暗号演算や楕円暗号演算などを複雑に組み合わせて実行するものであり、グループ署名生成アルゴリズムに含まれる全ての演算に対して、従来のサイドチャネル攻撃対策技術を一様に施すものとしては、グループ署名の生成に要する演算時間が最悪で2倍(平均で1.5倍)に延びるか、或いは、回路規模が2倍近くに増加することになる。また、電力消費も同様に増えることになる。さらに、通常のデジタル署名と比較して、グループ署名は、その演算量及び回路量が多いという特徴を有するために、このような演算処理の低速化、消費電力の大電力化、回路の大規模化などを招くことは望ましくない。
本発明は、上記のような課題を解決するもので、署名生成速度の低下、電力消費の増加、回路規模の増大などを招くことなく、タイミング攻撃やSPAなどのサイドチャネル攻撃に対する高い耐性を備える署名生成装置、署名方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体を提供することを目的とする。
本発明の第1の観点に係る署名生成装置は、署名生成手続きに含まれる基本演算をそれぞれ実行する複数の基本演算実行器と、前記複数の基本演算実行器と互いに接続され、前記基本演算実行器での演算を制御すると共に、前記基本演算実行器の演算状態を監視し、前記複数の基本演算実行器のうちで秘匿対象データを引数とする秘密演算を実行中の基本演算実行器が存在する場合には、当該基本演算実行器以外の他の基本演算実行器に乱数を引数とする乱数演算を同時実行させる全体動作制御部と、を備えるものである。
本発明の第2の観点に係る署名生成方法は、署名生成装置が、署名生成手続きに含まれる基本演算を並列に実行し、前記基本演算の並列実行中に、秘匿対象データを引数とする秘密演算を実行する場合には、乱数を引数とする乱数演算を同時実行することを特徴とするものである。
本発明の第3の観点に係る非一時的なコンピュータ可読媒体は、署名生成手続きに含まれる基本演算を並列に実行する処理と、前記並列実行する処理において、秘匿対象データを引数とする秘密演算の実行中に、乱数を引数とする乱数演算を同時実行する処理と、をコンピュータに実行させる署名生成プログラムが格納されたものである。
本発明によれば、署名生成速度の低下、電力消費の増大、回路規模の増加を招くことなく、サイドチャネル攻撃への耐性を持ちつつ署名生成を高速かつ低電力で実現するのに好適な署名生成装置、署名生成方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体を提供することができる。
本発明の原理を説明するための図である。 本発明にかかる署名生成装置の概要構成図である。 本発明にかかる署名生成装置の基本演算実行器の状態遷移図である。 本発明にかかる署名生成処理の概要フロー図である。 実施の形態1にかかる署名生成装置の構成図である。 実施の形態1にかかる全体動作制御部の詳細な構成図である。 実施の形態1にかかる署名生成装置の動作制御フロー図である。
まず、各実施の形態を説明するのに先立ち、図1を参照して、本発明の原理について説明する。
図1に示すように、本発明にかかる署名生成装置1は、複数の基本演算実行器(基本演算実行器2〜6)と、全体動作制御部7と、を備えている。基本演算実行器2〜6と全体動作制御部7とは互いに接続されている。
基本演算実行器2〜6は、署名生成手続きに含まれる基本演算のうち、いずれかの演算をそれぞれ実行する。署名生成装置1は、基本演算実行器2〜6が基本演算をそれぞれ実行することで、全体として基本演算の複合演算を実行する。署名生成手続きには、例えば、RSA演算、楕円曲線演算、整数演算などが含まれる。
全体動作制御部7は、基本演算実行器2〜6での演算を制御すると共に、基本演算実行器2〜6の演算状態を監視する。
全体動作制御部7は、基本演算実行器2〜6のうちで秘匿対象データを引数とする秘密演算を実行中の基本演算実行器が存在する場合には、該当する基本演算実行器以外の他の基本演算実行器に乱数を引数とする乱数演算を同時実行させる。ここで、秘匿対象データとは、サイドチャネル攻撃から秘匿すべきデータであり、例えば、署名生成時に利用する秘密鍵の値などである。
次に、図2及び図3を参照して、本発明にかかる署名生成装置の概要について説明する。図2は、本発明にかかる署名生成装置の概要構成図である。図3は、各基本演算実行器の状態遷移図である。
図2に示すように、署名生成装置11は、複数の基本演算実行器(基本演算実行器12〜16)と、全体動作制御部17と、通信経路18と、データ転送経路19と、を備えている。基本演算実行器12〜16のそれぞれと全体動作制御部17とが、通信経路18を介して互いに接続される。また、基本演算実行器12〜16と全体動作制御部17は、データ転送経路19を介して互いに接続される。
基本演算実行器12〜16は、上述した基本演算のいずれかの演算をそれぞれ実行する。また、基本演算実行器12〜16は、演算内容に応じた演算状態をそれぞれ有している。基本演算実行器12〜16は、自己の演算状態を示す演算状態伝達信号を、全体動作制御部17へと通信経路18を介して伝達する。
全体動作制御部17は、基本演算実行器12〜16でそれぞれ実行させる演算種類、演算実行の順序、演算データの入出力などを、データ転送経路19を介して制御する。また、全体動作制御部17は、演算状態伝達信号から基本演算実行器12〜16のそれぞれの演算状態を監視すると共に、強制的な乱数演算の実行の開始を指示する乱数演算指示信号と、その乱数演算の引数となる乱数データとを、基本演算実行器12〜16へと通信経路18を介して伝達する。
全体動作制御部17は、基本演算実行器12〜16のうちで秘密演算を実行中の基本演算実行器が存在する場合には、該当する基本演算実行器以外の他の基本演算実行器に乱数を引数とする乱数演算を同時実行させる。ここで、乱数演算は、署名演算に含まれている乱数演算としてもよいし、又は、新たに生成する乱数データを用いる強制的な乱数演算でもよい。
さらに、全体動作制御部17は、秘密演算を実行中の基本演算実行器の個数に比べて、乱数演算を実行させている基本演算実行器及び強制乱数演算を実行させている基本演算実行器の合計個数が小さい場合には、演算を実行していない基本演算実行器を用いて強制乱数演算を実行させることで、乱数演算及び強制乱数演算を実行中の基本演算実行器の合計個数が、秘密演算を実行中の基本演算実行器の個数以上となるように制御する。
通信経路18は、全体動作制御部17と、基本演算実行器12〜16それぞれとの間の信号を伝達する。通信経路18は、基本演算実行器12〜16に対してそれぞれ設けられた複数の信号線から構成される。通信経路18は1ビットから数ビット幅の双方向経路である。基本演算実行器12〜16と全体動作制御部17との間で、データ転送経路19とは異なる専用の通信経路18を設けることで、全体動作制御部17は、データ転送経路19を用いた場合と比較して、基本演算実行器12〜16との間でより高速に応答することができる。
データ転送経路19は、基本演算実行器12〜16相互間のデータ転送、及び、全体動作制御部17と基本演算実行器12〜16との間でのデータ転送を行う経路である。基本演算において使用される入出力データや処理起動命令などが、データ転送経路19を介して双方向に転送される。データ転送経路19の構成は特に限定されず、例えば、1本のバスを用いて構成してもよいし、複数本のバスを用いて構成してもよい。また、データ転送経路19を、クロスバスイッチなどを用いて構成してもよい。なお、グループ署名を対象とする署名生成装置である場合には、公開鍵暗号演算が主体であるため、基本演算実行器12〜16相互間のデータ転送時間に比べて基本演算実行器12〜16それぞれの内部での演算時間のほうが圧倒的に大きいことから、1本のバスを用いて構成すると好適である。
図3に示すように、基本演算実行器は、以下に定める6つの演算状態(S0〜S5)を有する。なお、ここでは、6つの演算状態を例示するが、後述する実施の形態1では、少なくとも5つの演算状態(S0〜S4)を有していれば足り、また、後述する実施の形態2では6つの演算状態(S0〜S5)を有している場合を例に説明する。
S0:停止
・基本演算実行器は何の演算も実行していない状態。
S1:秘密演算実行中
・電力波形の隠蔽が必要な演算を実行している状態であり、秘匿対象データを引数とする演算を実行している状態。
S2:通常演算実行中
・電力波形の隠蔽が不要な演算を実行している状態。
S3:乱数演算実行中
・電力波形がランダムとなる演算を実行している状態であり、署名生成にもともと用いられる乱数を引数とする演算を実行している状態。
S4:強制乱数演算実行中
・電力波形をかく乱するために、新たに生成する乱数データを引数とする強制的な乱数演算を実行している状態であり、署名生成処理自体には不要な演算を実行している状態。
S5:他処理実行中
・基本演算実行器が例えばマルチコアを用いて構成される場合に、署名生成処理とは全く別の処理に使用されている状態。
全体動作制御部17は、図3で示した状態S0から状態S1、状態S0から状態S2、状態S0から状態S3、状態S0から状態S5への遷移を、制御する。例えば、データ転送経路9を介して行われる全体動作制御部17からの指示に従って、状態S0から状態S1への遷移が行われる。また、各基本演算実行器での演算終了に従って状態S1から状態S0への遷移が行われる。ただし、強制乱数演算に関する遷移(状態S0から状態S4、状態S4から状態S0の遷移)については、通信経路18を介して伝達される乱数演算指示信号に従って行われる。また、状態S4から状態S0への遷移についても、演算終了ではなく、乱数演算指示信号に従って行われる。
なお、図2に示した基本演算実行器12〜16と全体動作制御部17は、専用に設計された回路(ハードウェア・アクセラレータ)を用いて構成してもよいし、ソフトウェア実行を行う1又は複数のCPU(Central Processing Unit)を用いて構成してもよい。また、基本演算実行器12〜16は、専用回路やCPU、或いは、それらの混合を用いて構成してもよい。また、複数のCPUを用いてマルチコアで構成する場合には、署名生成処理に際して、全ての基本演算実行器をCPUで構成せずに、一部の基本演算実行器のみをCPUで構成してもよい。
さらに、上記した署名生成装置は、グループ署名を生成するための署名生成装置に限定されず、セキュリティ関連の複合演算を実行する他の装置に対しても適用することができる。
次に、本発明に関連するグループ署名について簡単に説明する。上述したように、非特許文献1には、グループ署名の生成及び検証を行うための基本的なアルゴリズムが開示されている。このため、以下では、グループ署名方式の一例として、非特許文献1に開示されたグループ署名を簡単に説明する。
グループ署名のスキームには、発行者、開示者、ユーザ削除管理者、ユーザの4つのエンティティが参加する。ユーザは、署名生成と検証を行い、そのグループのメンバである。発行者は、ユーザをグループに追加する権限を、開示者は署名者を特定する権限を、ユーザ削除管理者はユーザをグループから除去する権限をそれぞれ有している。なお、ここでは、グループ署名スキームに含まれる手続きのうち、ユーザが利用する署名生成についてのみ説明する。
以下、セキュリティパラメータK=(K[n],K[l],K[e],K[e'],K[q],K[c],K[S])を導入する。K[n]、K[l]、K[e]、K[e']は、各パラメータn,l,e,e'それぞれについてのビット数を示しており、所定のビット長K[n]、K[l]、K[e]、K[e']である。K[q]は、楕円曲線に基づいて定義される有限群GGの次数である素数qのビット長を示す。K[c]は、任意長のビット列に適用されるハッシュ関数Hashが返す値cのビット長を示す。K[S]は、いかなる整数aに対しても|a|+K[S]ビット長の乱数rを選択したときに、a+rとaが統計的に区別できなくなるようなビット長を示す。
グループ署名は、このようなセキュリティパラメータKと、整数λ=K[n]+K[q]+K[S]と、0以上2λ未満の整数を要素とする集合Λと、上記楕円曲線上でのスカラー倍演算と、上記楕円曲線上での点加算と、上記楕円曲線上での点減算とに対するグループ署名である。なお、以下では、「xs」を上記楕円曲線上の点に対するスカラー倍演算として表記し、「+e」を上記楕円曲線上での点加算として表記し、「-e」を上記楕円曲線上での点減算として表記する。
上記グループ署名の発行者、開示者、ユーザ削除管理者、ユーザがそれぞれ有する鍵対(公開鍵及び秘密鍵)を、以下に説明する。
グループ署名の発行者鍵対(ipk,isk)は、以下の式に示すように、ビット長がK[n]/2である暗号数理的に安全な素数p[1],p[2]と、n=p[1]p[2]と、そのnに対する巡回部分群QR(n)の要素a[0],a[1],a[2]と、に基づいて定められる。なお、ipkは発行者の公開鍵であり、iskは発行者の秘密鍵である。
ipk=(n,a[0],a[1],a[2]);
isk=(p[1],p[2])
グループ署名の開示者鍵対(opk,osk)は、以下の式に示すように、上記素数qを法とする有限体Zqの要素y[1],y[2]と、上記有限群GGの要素Gと、H[1]=y[1]xsGと、H[2]=y[2]xsGと、に基づいて定められる。なお、opkは開示者の公開鍵であり、oskは開示者の秘密鍵である。
opk=(q,G,H[1],H[2]);
osk=(y[1],y[2])
グループ署名のユーザ削除管理者鍵対(rpk,rsk)は、以下の式に示すように、ビット長がK[l]/2である安全な素数l[1],l[2]と、l=l[1]l[2]と、そのlに対する巡回部分群QR(l)の要素b,wと、に基づいて定められる。なお、rpkはユーザ削除管理者の公開鍵であり、rskはユーザ削除管理者の秘密鍵である。
rpk=(l,b,w);
rsk=(l[1],l[2])
グループ署名のi番目のユーザに対するユーザ鍵対(mpk,msk)は、以下の式に示すように、上記集合Λの要素x[i]と、h[i]=x[i]xsGと、B[i]=b1/e'[i](mod l)、e[i]=2K[e]+e'[i]、a[0]a[1]x[i]≡A[i]e[i](mod n)、を満たすA[i],B[i],e[i],e'[i]と、に基づいて定められる。なお、mpk[i]はi番目のユーザの公開鍵であり、msk[i]はi番目のユーザの秘密鍵である。
msk[i]=x[i];
mpk[i]=(h[i],A[i],e'[i],B[i])
そして、署名生成アルゴリズムでは、メッセージmに対する署名をi番目のユーザが生成する際には、発行者の公開鍵ipk、ユーザ削除管理者の公開鍵rpk、開示者の公開鍵opk、ユーザの秘密鍵msk[i]、メッセージmを入力として、以下のようにして署名を生成する。
(1)ρ[E]、ρ[m]、ρ[r]、μ[x]、μ[s]、μ[e']、μ[t]、μ[E]を、以下のようにしてランダムに選択する。
ρ[E]:上記有限体Zqの要素
ρ[m]:ビット長K[n]/2のビット列
ρ[r]:ビット長K[l]/2のビット列
μ[x]:ビット長λ+K[c]+K[S]のビット列
μ[s]:ビット長K[e]+K[n]/2+K[c]+K[S]のビット列
μ[e']:ビット長K[e']+K[c]+K[S]のビット列
μ[t]:ビット長K[e']+K[l]/2+K[c]+K[S]のビット列
μ[E]:上記有限体Zqの要素
(2)E[0]、E[1]、E[2]、E、V[ComCipher]を、以下のようにして演算して求める。なお、演算「Z=(W,X,Y)」は、演算W、演算X、演算Yを別々に行った後に取りまとめることを示す(タップルの計算)。
E[0]=ρ[E]xsG
E[1]=h[i]+eρ[E]xsH[1]
E[2]=h[i]+eρ[E]xsH[2]
E=(E[0],E[1],E[2])
V[ComCipher]=(μ[E]xsG,μ[x]xsG+eμ[E]xsH[1],μ[x]xsG+eμ[E]xsH[2])
(3)A[COM]、B[COM]、V[ComMPK]、V[ComREV]を、以下のようにして演算して求める。
A[COM]=A[i]a[2]ρ[m](mod n)
B[COM]=B[i]wρ[r](mod l)
V[ComMPK]=a[1]μ[x]a[2]μ[s]A[COM]-μ[e'](mod n)
V[ComREV]=wμ[t]B[COM]-μ[e'](mod l)
(4)cを、以下のようにして演算して求める。
c=Hash(K,ipk,opk,rpk,E,A[COM],B[COM],V[ComCipher],V[ComMPK],V[ComRev],m)
(5)τ[x]、τ[s]、τ[t]、τ[e']、τ[E]を、以下のようにして演算して求める。
τ[x]=cx[i]+μ[x](mod q)
τ[s]=ce[i]ρ[m]+μ[s](mod q)
τ[t]=ce'[i]ρ[r]+μ[t](mod q)
τ[e']=ce'[i]+μ[e'](mod q)
τ[E]=cρ[E]+μ[E](mod q)
(6)署名(E,A[COM],B[COM],c,τ[x],τ[s],τ[t],τ[e'],τ[E])を、出力する。
図4は、グループ署名生成処理の際のデータフローを示す図である。なお、図の乱数とは、上記「(1)」において選択されたランダムな値である。
楕円曲線演算21では、開示者の公開鍵と、乱数と、を用いて、複数の楕円曲線演算を行う。楕円曲線演算21では、主に上記「(2)」の各演算が行われる。
RSA演算22では、ユーザの秘密鍵と、発行者の公開鍵と、ユーザ削除管理者の公開鍵と、乱数と、を用いて、複数のRSA演算を行う。RSA演算22では、主に上記「(3)」の各演算が行われる。
ハッシュ演算23では、楕円曲線演算21の演算結果と、RSA演算22演算結果と、メッセージmと、を用いて、ハッシュ演算を行う。ハッシュ演算24では、主に上記「(4)」の演算が行われる。
整数演算25では、ハッシュ演算24の演算結果と、乱数と、を用いて、複数の整数演算を行う。整数演算25では、主に上記「(5)」の各演算が行われる。整数演算25の結果として、署名が出力される。
実施の形態1.
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかる署名生成装置は、上述したグループ署名生成のための構成及び機能を、ハードウェアとして実装した場合の例を示している。
図5は、本実施の形態に係る署名生成装置の構成図である。署名生成装置100は、楕円演算回路101と、RSA演算回路102、103と、整数演算回路104と、乱数生成回路105と、ハッシュ演算回路106と、共有メモリ107と、乱数種保持不揮発メモリ108と、全体動作制御部110と、複数の信号線120と、データ転送用ローカルバス130と、を備えている。なお、図5では、1つの楕円演算回路102、2つのRSA演算回路103、104、1つの整数演算回路104、1つの乱数生成回路105を例示しているが、各回路の個数はこれに限定されず、演算回路速度と規模のトレードオフに応じて定めればよい。
ここで、本実施の形態に係る署名生成装置100では、それぞれの演算回路(楕円演算回路101、RSA演算回路102、103、整数演算回路104、乱数生成回路105、ハッシュ演算回路106)に対して、サイドチャネル攻撃に対する個別対策を施していないため、何ら対策を施していない場合と比較して演算時間は増加しない。グループ署名生成全体に要する演算時間は、鍵の値に依存して変化するが、演算時間は最速を維持したまま変化する。また、電力消費についても、鍵の値に依存して変化するが、最少を維持したまま変化する。
また、署名生成装置100は、上述したようなグループ署名を生成する場合には、発行者の公開鍵、ユーザ削除管理者の公開鍵、開示者の公開鍵、ユーザの秘密鍵、メッセージなどが入力されて、楕円曲線演算やRSA演算などを70回ほど組み合わせて実行する。署名生成装置100は、グループ署名生成の際には、生成する乱数を用いて鍵をマスクする。ここで、公開鍵や、既にマスク済みの秘密鍵については秘匿する必要がないため、サイドチャネル攻撃への対策は不要である。このため、少なくとも秘密鍵及び秘密鍵をマスクするための乱数をサイドチャネル攻撃から隠蔽すれば足りるため、本実施の形態では、秘密鍵及び秘密鍵をマスクするための乱数を秘匿対象データとして、秘匿対象データを直接引数とする演算についてのみサイドチャネル対策を施す。
楕円演算回路101は、楕円曲線上でのスカラー倍演算、楕円曲線上での点加算及び点減算の演算などの楕円曲線演算を行う。上述したグループ署名を生成する場合には、楕円演算回路101は、主に上記「(2)」に含まれる各演算を行う。
RSA演算回路102、103は、べき乗剰余、乗剰余などのRSA演算を行う。上述したグループ署名を生成する場合には、RSA演算回路102、103は、主に上記「(3)」に含まれる各演算を行う。
整数演算回路104は、整数乗算、整数加算などの整数演算を行う。上述したグループ署名を生成する場合には、整数演算回路104は、主に上記「(5)」に含まれる各演算を行う。
各演算回路(楕円演算回路101、RSA演算回路102、103、整数演算回路104)は、上述した5つの状態(停止状態S0、秘密演算状態S1、通常演算状態S2、乱数演算状態S3、強制乱数演算状態S4)を有している。
停止状態S0では、各演算回路は意味のある演算を何も実行しておらず、新しい演算をいつでも開始できる状態である。
秘密演算状態S1は、秘匿対象データ(秘密鍵やその秘密鍵をマスクするための乱数)を直接引数とする演算を実行しており、サイドチャネル攻撃から守るべき演算を実行している状態である。上述したようなグループ署名を生成する場合には、演算回路は、署名者(i番目のユーザ)の秘密鍵x[i]を直接引数とする演算と、秘密鍵x[i]のランダムマスクμ[x]を直接引数とする演算と、を実行する場合に、秘密演算状態S1となる。具体的には、演算回路は、楕円曲線上でのスカラー倍演算μ[x]xsGと、べき剰余演算a[1]μ[x](mod n)と、整数乗算cx[i]+μ[x](mod q)と、を実行する場合に、秘密演算状態S1に入る。
通常演算状態S2は、秘匿する必要のないデータであって、乱数を除いたデータ(公開鍵など)を引数とする通常演算を実行している状態である。通常演算状態S2では、サイドチャネル攻撃から守る必要のない演算を実行している。通常演算状態S2では、演算回路で消費される電力波形はランダムにならない。
乱数演算状態S3は、秘密鍵以外のデータをマスクするために用いる乱数を引数とする乱数演算と、既に乱数を用いてマスクされたデータなどを引数とする乱数演算を実行している状態である。乱数演算状態S3では、サイドチャネルチャネル攻撃から守る必要のない演算を実行している。乱数演算状態S3では、演算回路で消費される電力波形がランダムになる。上述したようなグループ署名を生成する場合には、演算回路は、ランダムに選択された値(ρ[E]、ρ[m]、ρ[r]、μ[s]、μ[e']、μ[t]、μ[E](μ[x]を除く乱数))を引数にとる演算と、これら乱数を用いてマスク演算が施された結果を引数にとる演算と、を実行する場合に、乱数演算状態S3となる。
強制乱数演算状態S4は、サイドチャネル攻撃から守るために、電力波形をかく乱するための乱数演算を強制的に実行させている状態である。強制乱数演算状態S4では、新たに生成する乱数値を引数とする強制乱数演算を実行する。強制乱数演算状態S4で実行される演算は、署名生成処理として本来は不要な演算である。強制乱数演算状態S4では、演算回路で消費される電力波形がランダムになる。
各演算回路は、自己の状態を示す演算状態伝達信号を、信号線120を介して全体動作制御部110に伝達する。具体的には、各演算回路は、5つの状態(S0〜S4)のいずれの状態にあるかを示す2ビット以上の出力信号(演算状態伝達信号)を、信号線120を介して伝達する。
信号線120は、それぞれ独立した1以上の信号線から構成されている。信号線120には、演算状態伝達信号を伝達するための信号線と、後述する乱数演算指示信号と、その乱数演算の引数となる乱数データと、を伝達するための信号線と、が含まれている。なお、信号線120を介して伝達される信号は、一般的な割り込み信号(1ビット)とは異なるものである。
乱数生成回路105は、署名生成装置100が利用する乱数(真性乱数、物理乱数、高品質な擬似乱数など)を生成する。上述したグループ署名を生成する場合には、乱数生成回路105は、主に上記「(1)」に含まれる各演算を行う。なお、複数の乱数生成回路を備えるものとしてもよい。
ハッシュ演算回路106は、例えばSHA1−1やSHA−2などのハッシュ関数を用いてハッシュ演算を行う。上述したグループ署名を生成する場合には、ハッシュ演算回路106は、主に上記「(5)」に含まれる各演算を行う。
共有メモリ107は、例えばSRAM(Static Random Access Memory)などのメモリである。データ転送ローカルバス130に接続された各回路での演算結果が、共有メモリ107に一時的に保存される。
乱数種保持不揮発メモリ108は、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリに例示される不揮発性の半導体メモリである。乱数種保持不揮発メモリ108には、乱数生成処理を実行する際の初期値(初期種)が記憶されている。
全体動作制御部110は、上述した各演算回路や乱数生成回路105などを定められた手順で起動して、署名生成装置100全体の動作を制御する。上述したようなグループ署名を生成する場合には、全体動作制御部110は、データ転送用ローカルバス130を介して、実行させる演算種類や演算実行の開始を各回路に対して指示し、データ転送経路19を介しての各回路間での演算データの入出力や、共有メモリ107への演算データの保存などを制御する。
ここで、各演算回路がどのような順序でいずれの状態に入るべきかについては、グループ署名生成に先立って予め決定づけることができる(例えば、回路の設計時に設計者が予め決定した上で、設定しておけばよい。)。
ただし、演算回路に対して演算開始が指示された場合に、その演算の終了時点は、演算対象データの値に依存するため事前に知ることができない。このため、全体動作制御部110は、各演算回路に対して演算開始の指示を行うと共に、信号線120を介して伝達される演算状態伝達信号から各演算回路の演算状態を監視することで、各演算回路での演算の終了時点を判定する。これにより、全体動作制御部110は、各演算回路での演算状態や演算の開始及び終了を、動的に判定することができる。
また、全体動作制御部110は、上述したようにして演算回路の状態を常時管理し、演算回路(楕円演算回路101、RSA演算回路102、103、整数演算回路104)のうちで秘密演算状態S1にある演算回路が存在する場合には、電力波形がランダムとなる演算状態(乱数演算状態S3又は強制乱数演算状態S4)に入るように、他の演算回路を制御する。すなわち、全体動作制御部110は、秘密演算と乱数演算とが同時実行されるように、各演算回路の状態を制御する。
このように秘密演算の実行中に乱数演算を同時実行させることで消費電力波形をかく乱することができ、サイドチャネル攻撃に対する耐性を署名生成装置100に備えさせることができる。
全体動作制御部110は、演算制御部111と、電力波形かく乱制御部112と、を備えている。なお、全体動作制御部110の構成はこれに限定されず、これら2つの機能をそれぞれ有する独立した回路を用いて構成してもよいし、或いは、これらに相当する二つの並列処理を行うものとして構成してもよい。
演算制御部111は、データ転送用ローカルバス130を介して、回路間のデータ転送と、各演算回路に対する演算開始指示の伝達と、を行い、上述したグループ署名生成アルゴリズムに従った演算が実行されて正しい演算結果が得られるように制御する。
また、演算制御部111は、演算回路に対して演算開始を指示する際に、3つの状態(秘密演算状態S1、通常演算状態S2、乱数演算状態S3)のいずれの状態に入るべきかについても併せて指示する。なお、各演算回路は、演算が終了した場合には自ら停止状態S0へと遷移する。また、後述するように、全体動作制御部110の電力波形かく乱制御部112は、演算回路に対して停止状態S0と強制乱数演算状態S4間の遷移を指示する。
また、演算制御部111は、演算回路に対して通常演算状態S2となる演算の開始を指示する際には、秘密演算状態S1にある他の演算回路が存在しているか否かを確認する。演算制御部111は、秘密演算状態S1にある演算回路が存在していた場合には、その演算回路での秘密演算が終了するまでの間は、通常演算状態S2の演算開始指示を保留し、開始可能な乱数演算があるか否かを判定する。そして、開始可能な乱数演算があるときには、演算制御部111は、消費電力波形のかく乱を行うため、その乱数演算の開始を指示する。
また、演算制御部111は、秘密演算状態S1にある演算回路が複数存在している場合には、秘密演算状態S1にある演算回路と等しいか又はそれより多い個数の演算回路が、乱数演算状態S3に入るように制御する。なお、秘密演算状態S1にある演算回路の個数に対して、乱数演算状態S3にある演算回路の個数が不足する場合には、後述するように、全体動作制御部110の電力波形かく乱制御部112が、停止状態S0にある演算回路へと乱数データを入力して強制的に乱数演算を実行させる。
電力波形かく乱制御部112は、信号線120を介して、各演算回路の演算状態を常時監視すると共に、強制的に乱数演算を開始させるための乱数演算指示信号と、その乱数演算の引数となる乱数データと、を各演算回路へと伝達する。
電力波形かく乱制御部112は、秘密演算状態S1にある演算回路が存在している場合に、空いている演算回路(停止状態S0にある演算回路)に対して、強制乱数演算の実行開始指示を速やかに発行する。なお、本明細書中において「速やかに」、「高速に」とは、演算回路が秘密演算状態S1である場合に、秘匿対象データが漏洩するよりも十分早い時間であることを意味し、例えば、数クロックから数10クロック以内であることを意味する。
電力波形かく乱制御部112は、秘密演算状態S1にある演算回路が存在している場合に、乱数演算状態S3又は強制乱数演算状態S4の状態にある演算回路の合計個数が、秘密演算状態S1にある演算回路の個数以上となるように、停止状態S0にある演算回路を強制乱数演算状態S3へと遷移させる。すなわち、電力波形かく乱制御部112は、秘密演算状態S1にある演算回路の個数に対して乱数演算状態S3にある演算回路の個数が不足する場合に、停止状態S0にある演算回路に対して強制乱数演算の開始を指示する。
電力波形かく乱制御部112から乱数演算指示信号を受け取った演算回路は、与えられた乱数データを引数とする強制乱数演算(楕円曲線上のスカラー倍算、べき乗剰余算、乗剰余算、整数乗算)を速やかに実行する。なお、この演算時に、演算回路の状態は強制乱数状態S4に入る。
演算回路が秘密演算状態S1にある時間は、鍵やランダム値に依存するため、事前に予測することはできない。このため、電力波形かく乱制御部112は、各演算回路の演算状態を常時監視しながら、強制乱数演算の継続の可否と、強制乱数演算を開始可能な演算回路の有無と、を動的に判定する。電力波形かく乱制御部112は、秘密演算状態S1にある演算回路が存在しなくなった場合、或いは、他の演算回路を用いて乱数演算の実行が可能になった場合には、実行させていた強制乱数演算を速やかに停止させる。
なお、図4を参照して上述したように、グループ署名生成では、その演算の性質上、楕円曲線演算及びRSA演算と、整数演算とは同時には実行されない。このため、停止状態S0にある演算回路は常に存在し、そのような停止状態S0にある演算回路を強制乱数演算に利用することができる。
電力波形かく乱制御部112は、線形フィードバックシフトレジスタ(LFSR:Linear Feedback Shift Register)を備えていてもよい。電力波形かく乱制御部112は、線形フィードバックシフトレジスタを用いて、強制乱数演算を実行させる際に演算回路に与える乱数データを生成することができる。線形フィードバックシフトレジスタを用いて擬似乱数を高速に生成し、生成した擬似乱数を演算の引数として伝達することで、暗号用の乱数生成回路105を使用して乱数を生成する場合と比べて、より短時間で乱数を生成することができる。
停止状態S0にある演算回路を用いて強制乱数演算を行わせる場合には、乱数データを速やかに投入する必要がある。暗号処理に通常使用される乱数生成系を利用すると乱数生成に時間を要することになるため、消費電力波形がかく乱されない期間が長く生じる可能性もある。このため、線形フィードバックシフトレジスタを擬似乱数生成に使用するとよい。なお、暗号処理用の乱数としてM系列は好ましくないものの、消費電力のかく乱用には十分であり、線形フィードバックシフトレジスタを利用すれば、1クロックで生成することができる。
また、データ転送用ローカルバス130を介して線形フィードバックレジスタと乱数生成回路105とを接続し、電源投入直後に、乱数種保持不揮発メモリ108に予め記憶された乱数種を用いて、線形フィードバックシフトレジスタに初期値を速やかに設定するものとしてもよい。これにより、電源投入の都度、乱数生成用の初期値が更新されることで、同じ擬似乱数が生成されるのを防止することができる。
さらに、線形フィードバックシフトレジスタの初期値としては、乱数種保持不揮発メモリ108に記憶されている値をそのまま使用してもよいし、予測可能性の観点からは、暗号処理用の乱数生成回路105を用いて生成した値を使用するとより好適である。
真性乱数や物理乱数に代えて擬似乱数を用いた場合、擬似乱数生成について何ら工夫を行わないときには、電源投入の都度、同じ乱数系列が発生することになり、消費電力波形に再現性が生じる。そこで、擬似乱数生成系や線形フィードバックシフトレジスタの初期値(初期種)を乱数種保持不揮発メモリ108に予め記憶しておき、電源投入の都度、異なる乱数系列が生成されるように、値を変更(インクリメントなど)するとよい。これにより、擬似乱数を採用する場合においても、消費電力波形が再現されることを回避することができる。特に、予測不可能性の観点では、線形フィードバックシフトレジスタの初期値は、乱数種保持不揮発メモリ108に記憶された値をそのまま用いるのではなく、擬似乱数生成系で生成した値を使うと好適である。
図6は、本実施の形態に係る全体動作制御部の内部構成詳細図である。
図に示すように、全体動作制御部110は、有限状態機械(FSM:Finite State Machine)113と、デコーダ114と、LFSR115と、を備えている。有限状態機械113は、演算制御部111が実行する制御を実現する。デコーダ114は、各演算回路からの演算状態伝達信号を解釈すると共に、強制乱数演算の実行を指示するアービタとして動作する。LFSR115は、強制乱数演算を実行させる際の、乱数データを生成する。
次に、図7を参照して、本実施の形態にかかる全体動作制御部の動作例を説明する。図7は、全体動作制御部の動作例を示すフローチャートである。なお、図では、強制乱数演算を実行させる場合をも含めた例を説明するが、秘密演算の実行数に対してそれ以上の数の乱数演算の実行数を確保できる場合には、強制乱数演算を乱数演算に加えて実行させなくてもよい。
全体動作制御部110は、演算回路を用いた全ての基本演算(RSA演算、楕円曲線演算、ハッシュ演算、整数演算)が実行を終了したか否かを判定する(S101)。全体動作制御部110は、全基本演算の実行が終了した場合に(S101で「はい」の場合)、強制乱数演算を実行中の演算回路があるときには、その演算回路での演算を停止して(S115)、処理を終了する。
全体動作制御部110は、全基本演算の実行が終了していない場合には(S101で「いいえ」の場合)、停止状態S0にある演算回路Aが出現するまでの間、待機する(S102)。
全体動作制御部110は、秘密演算状態S1にある演算回路の個数αが、乱数演算状態S3又は強制乱数演算状態S4の状態にある演算回路の合計個数βより多いか否かを判定する(S103)。
全体動作制御部110は、αがβより多い場合には(S103で「はい」の場合)、基本演算に含まれる演算であって開始可能な乱数演算Bを探索して(S104)、該当する乱数演算Bの有無を判定する(S105)。なお、開始可能な乱数演算Bが複数存在した場合には、いずれか1つの乱数演算をランダムに選択するとよい。
全体動作制御部110は、乱数演算Bが存在した場合には(S105で「はい」の場合)、演算回路Aに対して乱数演算Bの実行開始を指示する(S106)。全体動作制御部110は、乱数演算Bが存在しなかった場合には(S105で「いいえ」の場合)、演算回路Aに対して強制乱数演算の実行を指示する(S107)。
全体動作制御部110は、S102〜S107での処理を実行することで、乱数演算状態S3又は強制乱数演算状態S4の状態にある演算回路の合計個数βを、秘密演算状態S1にある演算回路の個数α以上とすることができ、電力波形を完全にかく乱することができる。
全体動作制御部110は、αがβより多くない場合には(S103で「いいえ」の場合)、強制乱数演算を実行中の演算回路のうち、βからαを引いた個数分の演算回路について、その演算回路で実行中の強制乱数演算を停止する(S108)。これにより、αがβと等しくなるように、強制乱数演算の実行を停止させる。
全体動作制御部110は、開始可能な基本演算Cを探索して(S109)、該当する基本演算Cの有無を判定する(S110)。全体動作制御部110は、基本演算Cが存在しない場合には(S110で「いいえ」の場合)、S101へと戻って処理を継続する。
全体動作制御部110は、基本演算Cが存在した場合には(S110で「はい」の場合)、基本演算Cが秘密演算であるか否かを判定する(S111)。全体動作制御部110は、基本演算Cが秘密演算でなかった場合には(S111で「いいえ」の場合)、演算回路Aに対して演算Cの実行開始を指示する(S114)。
全体動作制御部110は、基本演算Cが秘密演算であった場合には(S111で「はい」の場合)、α+1が、βより多いか否かを判定する(S112)。全体動作制御部110は、α+1が、βより多い場合には(S112で「はい」の場合)、秘密演算Cを実行させる演算回路Aとは異なる、停止状態S0にある演算回路が出現するまでの間、待機する(S113)。なお、全体動作制御部110は、α+1が、βより多くない場合には(S112で「いいえ」の場合)、S114へと進み、演算回路Aを用いて秘密演算Cを実行させる。
本実施の形態を用いずに既存のサイドチャネル対策法を用いた場合には、演算回路(楕円演算回路101、RSA演算回路102、103、整数演算回路104)の全てに対して一様に対策を施すことになる。その結果、署名生成の全体処理に要する時間が、最悪で2倍(平均で1.5倍)遅くなる。また、電力消費量も同様に増大する。或いは、回路全体の規模がおよそ2倍となる。
これに対して本実施の形態によれば、個々の演算回路に対して対策を施す必要がない。また、署名生成全体で秘密演算の占める割合は非常に小さなものであるため、秘密演算中に電力波形のかく乱制御(強制的な乱数演算)を行うものとしても、電力波形のかく乱制御に起因する演算時間の遅れや電力増大の影響は僅かなものである。また、電力波形かく乱制御及び線形フィードックレジスタの構成を追加しても、回路規模の増大は僅かなものである。従って、サイドチャネル対策を施さなかった場合と同様の演算性能を維持しつつ、サイドチャネル攻撃への耐性を持たせることができる。
実施の形態2.
次に、本発明の実施の形態2について説明する。図5に示した署名生成装置100では、専用回路を用いて署名生成処理を実行する構成として説明したが、本発明の実施の形態2に係る署名生成装置では、これら複数のCPUを用いて署名生成装置が実行する処理を実現する。なお、以下では、上述した実施の形態1と異なる構成及び処理を中心に説明し、同一の構成及び処理については説明を省略する。
署名生成装置は、楕円曲線演算を実行する複数のプロセッサコアと、RSA演算を実行する複数のプロセッサコアと、整数演算を実行する複数のプロセッサコアと、乱数生成を実行するプロセッサコアと、ハッシュ演算を実行するプロセッサコアと、共有メモリと、全体動作制御を実行するプロセッサコアと、を少なくとも備えている。
全体動作制御を実行するプロセッサコアは、基本演算を実行するプロセッサコアに対して状態S5に入る指示を行うことで、署名生成処理とは全く別の処理に使用されている状態へと遷移させる。状態S5に入ったプロセッサコアは、その処理が完了した場合に、状態S0へと遷移する。これにより、基本演算の実行に用いる複数のプロセッサコアの構成を動的に再構成する。
基本演算の実行に用いるプロセッサコアの個数を増加させた場合には、秘密演算が実行されるプロセッサコアの個数と比較して強制乱数演算を実行可能なプロセッサコアを十分に確保することができる。このため、停止状態のプロセッサコアの出現を待たずに強制乱数演算の実行を開始することができる。
以上説明したように本発明によれば、秘密演算を同時に乱数演算又は強制乱数演算を実行することで、秘密演算の引数とする秘匿対象データを隠蔽することができる。
グループ署名の演算には乱数を用いた演算が含まれていることに着目し、そのような乱数演算と秘密演算とを、並列かつ同時に実行する。この場合には、消費電力及び計算時間のいずれも増加せずに隠蔽を行うことができる。
また、秘密演算と乱数演算とが同時実行できない場合には、又は、乱数演算が秘密演算と比較して短時間で終了するような場合には、グループ署名演算に含まれる他の乱数演算を実行する。この場合も、消費電力及び計算時間は増加しない。
さらに、グループ署名演算に含まれる乱数演算を同時実行できない場合には、新たに生成する乱数データを用いて強制乱数演算を実行する。この強制乱数演算の演算結果は特に意味を持たず、得られた演算結果は捨てられる。
なお、秘密演算の実行中には、消費電力の増加を抑制する観点からは、グループ署名演算に含まれる乱数演算をできる限り実行させることが好ましいが、強制乱数演算のみを同時に実行させるものとしてもよい。この場合には、消費電力は増加するものの、開始可能な乱数演算の探索処理を行わずに済む。
また、上記署名生成処理を、コンピュータに実行させる署名生成プログラムとして実現してもよい。署名生成装置を複数のコンピュータ(CPU)を用いて構成した場合には、署名生成プログラムは、乱数生成と、RSA演算と、楕円曲線演算と、整数演算と、ハッシュ演算と、を、それぞれのコンピュータに実行させる。
また、署名生成装置を一つのコンピュータを用いて構成する場合には、署名生成プログラムは、RSA演算と、楕円曲線演算と、整数演算と、を含む基本演算を並列にコンピュータに実行させる。そして、署名生成プログラムは、並列実行ステップにおいて、秘匿対象データを引数とする秘密演算と、乱数を引数とする乱数演算と、を同時にコンピュータに実行させる。なお、1つのCPUを用いて実行させる場合には、逐次計算ではなく、マルチスレッド、マルチプロセスなどの並列処理として実行させる。
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)を用いてコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
上述のように、本実施の形態によれば、署名生成速度の低下、電力消費の増大、回路規模の増加を招くことなく、サイドチャネル攻撃への耐性を持ちつつ署名生成を高速かつ低電力で実現するのに好適な、署名生成装置、署名生成方法、及び署名生成プログラムを提供することができる。
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記に応じて限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年5月28日に出願された日本出願特願2010−122780を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、暗号化などの各種セキュリティ技術に利用することができる。
1 署名生成装置、
2、3、4、5、6 基本演算実行器、
7 全体動作制御部、
11 署名生成装置、
12、13、14、15、16 基本演算実行器、
17 全体動作制御部、
18 通信経路、
19 データ転送経路、
21 楕円曲線演算、
22 RSA演算、
23 ハッシュ演算、
24 整数演算、
100 署名生成装置、
101 楕円演算回路、
102、103 RSA演算回路、
104 整数演算回路、
105 乱数生成回路、
106 ハッシュ演算回路、
107 共有メモリ、
108 乱数種保持不揮発メモリ、
110 全体動作制御部、
111 演算制御部、
112 電力波形かく乱制御部、
113 FSM、
114 デコーダ、
115 LFSR、
120 信号線、
130 データ転送用ローカルバス
ハッシュ演算23では、楕円曲線演算21の演算結果と、RSA演算22演算結果と、メッセージmと、を用いて、ハッシュ演算を行う。ハッシュ演算23では、主に上記「(4)」の演算が行われる。
整数演算24では、ハッシュ演算23の演算結果と、乱数と、を用いて、複数の整数演算を行う。整数演算24では、主に上記「(5)」の各演算が行われる。整数演算24の結果として、署名が出力される。
図5は、本実施の形態に係る署名生成装置の構成図である。署名生成装置100は、楕円演算回路101と、RSA演算回路102、103と、整数演算回路104と、乱数生成回路105と、ハッシュ演算回路106と、共有メモリ107と、乱数種保持不揮発メモリ108と、全体動作制御部110と、複数の信号線120と、データ転送用ローカルバス130と、を備えている。なお、図5では、1つの楕円演算回路101、2つのRSA演算回路102103、1つの整数演算回路104、1つの乱数生成回路105を例示しているが、各回路の個数はこれに限定されず、演算回路速度と規模のトレードオフに応じて定めればよい。


Claims (13)

  1. 署名生成手続きに含まれる基本演算をそれぞれ実行する複数の基本演算実行器と、
    前記複数の基本演算実行器と互いに接続され、前記基本演算実行器での演算を制御すると共に、前記基本演算実行器の演算状態を監視し、前記複数の基本演算実行器のうちで秘匿対象データを引数とする秘密演算を実行中の基本演算実行器が存在する場合には、当該基本演算実行器以外の他の基本演算実行器に乱数を引数とする乱数演算を同時実行させる全体動作制御手段と、
    を備える署名生成装置。
  2. 前記署名生成装置は、
    メッセージと、秘密鍵を含む鍵情報と、が入力され、生成する複数の乱数を用いて前記複合演算を実行して前記メッセージに対する署名を生成し、
    前記秘匿対象データは、前記秘密鍵と、前記複数の乱数のうちで当該秘密鍵のマスクに用いる第1の乱数と、を含むデータであり、
    前記全体動作制御手段は、
    前記複数の基本演算実行器のうちで前記秘匿対象データを引数とする秘密演算を実行中の基本演算実行器が存在する場合には、当該基本演算実行器以外の他の基本演算実行器に、前記複数の乱数のうちで前記第1の乱数とは異なる第2の乱数を引数とする乱数演算を同時実行させる、又は、前記複数の乱数とは異なる第3の乱数を新たに生成して、当該第3の乱数を引数とする乱数演算を同時実行させる
    ことを特徴とする請求項1に記載の署名生成装置。
  3. 前記全体動作制御手段は、
    前記複数の基本演算実行器のうちで前記秘匿対象データを引数とする秘密演算を実行中の基本演算実行器が存在する場合には、当該基本演算実行器以外の他の基本演算実行器に前記第2の乱数を引数とする乱数演算を開始可能であるか否かを判定し、開始可能であるときには前記第2の乱数を引数とする乱数演算を同時実行させ、開始可能でないときには、前記第3の乱数を引数とする乱数演算を同時実行させる
    ことを特徴とする請求項2に記載の署名生成装置。
  4. 前記全体動作制御手段は、
    前記複数の基本演算実行器のうちで前記秘密演算を実行中の基本演算実行器が複数存在する場合には、前記乱数演算を同時実行させる基本演算実行器の個数が、前記秘密演算を実行中の基本演算実行器の個数以上となるように制御する
    ことを特徴とする請求項1乃至3いずれか1項に記載の署名生成装置。
  5. 前記複数の基本演算実行器と前記全体動作制御手段とを互いに接続するデータ転送用ローカルバスを更に備え、
    前記署名生成手続きは、RSA演算と、楕円曲線演算と、整数演算と、ハッシュ演算と、を含み、
    前記複数の基本演算実行器は、
    前記RSA演算をそれぞれ実行する複数のRSA演算回路と、
    前記楕円曲線演算をそれぞれ実行する複数の楕円演算回路と、
    前記整数演算をそれぞれ実行する複数の整数演算回路と、
    前記ハッシュ演算を実行するハッシュ演算回路と、を用いて構成される
    ことを特徴とする請求項1乃至4いずれか1項に記載の署名生成装置。
  6. 前記複数の基本演算実行器のそれぞれと前記全体動作制御手段とを互いに接続する複数の信号線を更に備え、
    前記全体動作制御手段は、
    前記複数の基本演算実行器を構成する各演算回路での演算を制御する演算制御手段と、
    前記複数の信号線を介して伝達される演算状態伝達信号から前記各演算回路の演算状態を監視すると共に、強制的に乱数演算を開始させるための乱数演算指示信号と、当該乱数演算の引数となる乱数データと、を前記各演算回路へと伝達する電力波形かく乱制御手段と、を備える
    ことを特徴とする請求項5に記載の署名生成装置。
  7. 前記電力波形かく乱制御手段は、
    前記乱数データを生成する線形フィードバックレジスタを更に備える
    ことを特徴とする請求項6に記載の署名生成装置。
  8. 乱数を生成する乱数生成回路を更に備える
    ことを特徴とする請求項5乃至7のいずれか1項に記載の署名生成装置。
  9. 乱数生成処理の初期値に用いる乱数種が予め記録された乱数種保持不揮発メモリを更に備える
    ことを特徴とする請求項8に記載の署名生成装置。
  10. 前記複数の基本演算実行器と前記全体動作制御手段とを互いに接続するデータ転送用ローカルバスを更に備え、
    前記複数の基本演算実行器は、
    前記基本演算に含まれるいずれかの演算をそれぞれ実行する複数のプロセッサコアを用いて構成され、
    前記全体動作制御手段は、
    前記基本演算の実行に用いる前記複数のプロセッサコアの構成を動的に再構成する
    ことを特徴とする請求項1乃至9いずれか1項に記載の署名生成装置。
  11. 前記署名生成手続きは、グループ署名を生成する手続きである
    ことを特徴とする請求項1乃至10のいずれか1項に記載の署名生成装置。
  12. 署名生成装置が、
    署名生成手続きに含まれる基本演算を並列に実行し、
    前記基本演算の並列実行中に、秘匿対象データを引数とする秘密演算を実行する場合には、乱数を引数とする乱数演算を同時実行する
    ことを特徴とする署名生成方法。
  13. 署名生成手続きに含まれる基本演算を並列に実行する処理と、
    前記並列実行する処理において、秘匿対象データを引数とする秘密演算の実行中に、乱数を引数とする乱数演算を同時実行する処理と、
    をコンピュータに実行させる署名生成プログラムが格納された非一時的なコンピュータ可読媒体。
JP2012517100A 2010-05-28 2011-04-06 署名生成装置、署名方法、及び署名生成プログラム Withdrawn JPWO2011148558A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010122780 2010-05-28
JP2010122780 2010-05-28
PCT/JP2011/002051 WO2011148558A1 (ja) 2010-05-28 2011-04-06 署名生成装置、署名方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体

Publications (1)

Publication Number Publication Date
JPWO2011148558A1 true JPWO2011148558A1 (ja) 2013-07-25

Family

ID=45003560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012517100A Withdrawn JPWO2011148558A1 (ja) 2010-05-28 2011-04-06 署名生成装置、署名方法、及び署名生成プログラム

Country Status (3)

Country Link
US (1) US8966264B2 (ja)
JP (1) JPWO2011148558A1 (ja)
WO (1) WO2011148558A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013143652A (ja) * 2012-01-10 2013-07-22 Canon Inc 情報処理装置、情報処理方法
JP2013143653A (ja) * 2012-01-10 2013-07-22 Canon Inc 情報処理装置、情報処理方法
TWI712915B (zh) 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
GB2544452B (en) * 2015-08-26 2019-09-11 Advanced Risc Mach Ltd Data processing systems
AT517983B1 (de) * 2015-11-18 2018-11-15 Siemens Ag Oesterreich Schutz eines Computersystems vor Seitenkanalattacken
US10171496B2 (en) * 2016-01-19 2019-01-01 Cisco Technology, Inc. Beacon spoofing prevention
EP3214566B1 (en) * 2016-03-01 2018-09-12 Siemens Aktiengesellschaft Preventing side channel attacks on a cpu
US10367637B2 (en) * 2016-07-22 2019-07-30 Qualcomm Incorporated Modular exponentiation with transparent side channel attack countermeasures
KR101989950B1 (ko) * 2017-04-28 2019-06-17 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법
US10505744B2 (en) * 2017-06-29 2019-12-10 Intel Corporation Technologies for robust computation of elliptic curve digital signatures
FR3076923A1 (fr) * 2018-01-16 2019-07-19 Stmicroelectronics (Rousset) Sas Procede et circuit d'authentification
CN110278082B (zh) * 2018-03-14 2021-11-16 西安西电捷通无线网络通信股份有限公司 一种群组数字签名的群组成员发布方法和设备
US10826694B2 (en) * 2018-04-23 2020-11-03 International Business Machines Corporation Method for leakage-resilient distributed function evaluation with CPU-enclaves
KR102169556B1 (ko) * 2018-10-26 2020-10-23 현대오토에버 주식회사 서명 생성 장치 및 시스템
FR3098949B1 (fr) 2019-07-15 2023-10-06 St Microelectronics Rousset Fonction à sens unique
WO2024079726A1 (en) * 2022-10-14 2024-04-18 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive side-channel countermeasure for processing devices

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE310293T1 (de) * 1998-09-30 2005-12-15 Koninkl Philips Electronics Nv Datenverarbeitungseinrichtung und verfahren zu dessen betrieb zum verhindern einer differentiellen stromverbrauchanalyse
WO2000019367A1 (de) * 1998-09-30 2000-04-06 Koninklijke Philips Electronics N.V. Datenverarbeitungseinrichtung und verfahren zu dessen betrieb zum verhindern einer differentiellen stromverbrauchanalyse
JP2003337750A (ja) * 2002-05-22 2003-11-28 Hitachi Ltd 内部解析防止機能付き半導体デバイス
US7353382B2 (en) 2002-08-08 2008-04-01 Fujitsu Limited Security framework and protocol for universal pervasive transactions
US7724898B2 (en) * 2002-10-17 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Cryptography using finite fields of odd characteristic on binary hardware
GB2399426A (en) 2003-03-12 2004-09-15 Sharp Kk Fault detection in data processing apparatus
JP3933647B2 (ja) * 2004-05-10 2007-06-20 シャープ株式会社 消費電力解析防止機能つき半導体装置
JP2006054568A (ja) * 2004-08-10 2006-02-23 Sony Corp 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
JP4783061B2 (ja) 2005-02-04 2011-09-28 ルネサスエレクトロニクス株式会社 楕円曲線暗号におけるスカラー倍計算装置
WO2007000701A2 (en) 2005-06-29 2007-01-04 Koninklijke Philips Electronics N. V. Arrangement for and method of protecting a data processing device against an attack or analysis
JP2007234001A (ja) 2006-01-31 2007-09-13 Semiconductor Energy Lab Co Ltd 半導体装置
US7774616B2 (en) * 2006-06-09 2010-08-10 International Business Machines Corporation Masking a boot sequence by providing a dummy processor
JP5233449B2 (ja) 2008-07-02 2013-07-10 日本電気株式会社 署名生成装置、ならびに、署名検証装置

Also Published As

Publication number Publication date
WO2011148558A1 (ja) 2011-12-01
US8966264B2 (en) 2015-02-24
US20130073873A1 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
WO2011148558A1 (ja) 署名生成装置、署名方法、及び署名生成プログラムが格納された非一時的なコンピュータ可読媒体
Yarom et al. Recovering OpenSSL ECDSA nonces using the FLUSH+ RELOAD cache side-channel attack
CN108616348B (zh) 使用可重构处理器实现安全算法、解密算法的方法及系统
Groß et al. A unified masking approach
US9735953B2 (en) Side channel analysis resistant architecture
Ryan Return of the hidden number problem.: A widespread and novel key extraction attack on ecdsa and dsa
WO2018017421A1 (en) Modular exponentiation with side channel attack countermeasures
Jayasinghe et al. RFTC: Runtime frequency tuning countermeasure using FPGA dynamic reconfiguration to mitigate power analysis attacks
JP7155173B2 (ja) 外部監視攻撃からモジュラーインバージョン演算を保護すること
WO2008013083A1 (fr) Générateur de nombres pseudo-aléatoires, dispositif de cryptage de flux et programme
Jayaraman et al. Decentralized certificate authorities
Chuengsatiansup et al. Side-channeling the Kalyna key expansion
Genkin et al. Cache vs. key-dependency: Side channeling an implementation of Pilsung
Jerábek et al. Dummy rounds as a DPA countermeasure in hardware
JP4386766B2 (ja) データ処理装置における誤り検出
De Mulder et al. Identifying and Eliminating Side-Channel Leaks in Programmable Systems.
US20130108038A1 (en) System and method for a collatz based hash function
US11924320B2 (en) Devices and methods for protecting cryptographic programs
Wei et al. A small first-order DPA resistant AES implementation with no fresh randomness
Schilling et al. High speed ASIC implementations of leakage-resilient cryptography
Peng et al. A Hardware/Software Collaborative SM4 Implementation Resistant to Side-channel Attacks on ARM-FPGA Embedded SoC
Koh et al. Review of Side Channel Attacks and Countermeasures of FPGA Based Systems
Ege et al. Practical Improvements to Statistical Ineffective Fault Attacks
Yang et al. Robust timing attack countermeasure on virtual hardware
Hamilton et al. Implementation of a secure TLS coprocessor on an FPGA

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140701