JP2015534419A - 耐グリッチ性暗号離散対数ベースの署名のための方法及びシステム - Google Patents

耐グリッチ性暗号離散対数ベースの署名のための方法及びシステム Download PDF

Info

Publication number
JP2015534419A
JP2015534419A JP2015541984A JP2015541984A JP2015534419A JP 2015534419 A JP2015534419 A JP 2015534419A JP 2015541984 A JP2015541984 A JP 2015541984A JP 2015541984 A JP2015541984 A JP 2015541984A JP 2015534419 A JP2015534419 A JP 2015534419A
Authority
JP
Japan
Prior art keywords
nonce
digital signature
generated
generating
check
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
JP2015541984A
Other languages
English (en)
Other versions
JP6366595B2 (ja
Inventor
ジャッフェ,ジョシュア,エム.
Original Assignee
クリプトグラフィ リサーチ, インコーポレイテッド
クリプトグラフィ リサーチ, インコーポレイテッド
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 クリプトグラフィ リサーチ, インコーポレイテッド, クリプトグラフィ リサーチ, インコーポレイテッド filed Critical クリプトグラフィ リサーチ, インコーポレイテッド
Publication of JP2015534419A publication Critical patent/JP2015534419A/ja
Application granted granted Critical
Publication of JP6366595B2 publication Critical patent/JP6366595B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • 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/72Signcrypting, i.e. digital signing and encrypting simultaneously
    • 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/3252Cryptographic 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 DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

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

Abstract

【課題】本明細書に開示する方法及びデバイスは、離散対数ベースの署名を演算する際にグリッチ攻撃に抵抗するための技法を用いる。【解決手段】本明細書に記載する方法及びシステムは、従来の署名システムにおけるランダムノンスを、例えば秘密鍵又はカウンタのような何らかの内部状態情報から確定的な方法で導出される疑似ランダムノンスに置き換えて、ノンスが反復されないようになっている。本明細書に記載する方法及びシステムは、グリッチが発生していないこと又は検出されていないことを検証するための試験を使用することができる。【選択図】図3A−1

Description

[001] 機密データに対して動作を行うシステムでは、そのようなデータに対する不正アクセス又はそのようなデータの開示もしくは改変に対して保護する必要がある。機密データの完全性及び信憑性を証明するために、デジタル署名を用いることができる。機密データの署名に用いられる耐タンパー性(tamper resistant)暗号デバイスは、このデバイスに攻撃者が物理的にアクセスし得る環境において用いることができる。攻撃者は、暗号鍵及び他の秘密事項を入手すると、偽のデータを発生したり、署名を偽造したり、又は機密データを盗取したり他の方法で改ざんを行ったりする恐れがあり、これが、システムの重要な動作の破壊や、機密情報もしくは専有情報の暴露、又は物理リソースに対する意図的でないアクセスの露呈等の深刻な結果をもたらすことがある。
[002] 「故障利用攻撃(fault attack)」において、攻撃者は、動作にエラー又はフォールト(「グリッチ」)を起こして秘密鍵を入手することを期待して、デバイス又はその環境の何らかの面を故意に変更しようとする。いくつかの非一時的な故障利用攻撃は、集束イオンビームステーションを用いてデバイス回路を物理的に変更する。一時的なフォールトは、ターゲットデバイスを永久的に変更することは意図していない。最もよく知られている一時的なフォールト注入技法には、供給電圧、クロック周波数、温度を変動させること、又は強烈なレーザもしくは他の光パルスを回路に与えることがある。
[003] フォールトは多くの影響を及ぼす可能性がある。フォールトによって、演算中のある工程がスキップされたり、ある工程が反復されたり、ある動作の代わりに別の動作が実行されたりすることがある。フォールトによって、メモリ内の値の変更、又はバスの横断、例えばデータ又は命令がロードされるアドレスの変更が生じる場合がある。フォールトによって、値がゼロになったり、他の何らかの値に設定されたりすることがある。このようなフォールトがあると、暗号動作において、部分的に正しい結果が部分的に破損した状態と混合される場合がある。部分的に破損した状態を解析することで、多くのフォールトは悪用される。
[004] 別の種類の攻撃は、あるタイプの演算を妨害するが別の演算には影響を及ぼさない一時的なフォールトに頼るものである。例えば、ある特定の物理グリッチは、タイプ「A」の動作を停止させるが、タイプ「B」の動作中に誘発されても何の影響も与えない。どの時間位置が「安全である」か、すなわち演算結果に影響を及ぼさないかを観察することで、攻撃者は動作「B」の位置を推論することができ、これによってセキュリティを脅かす可能性がある。
[005] 故障利用攻撃を防止するために多くの対抗策が開発されている。いくつかの手法は、追加の回路を加えてフォールトを検出することに基づいている。他の手法は、クロックをランダム化することで精密なタイミングのグリッチの付与を難しくする。二重回路によって計算を2回行い、結果の相違を引き起こす一方の回路でのフォールトを検出することができる。ソフトウェア技法においては、追加の検証ステップの実行、又は暗号アルゴリズムの実施によるフォールトへの抵抗もしくはフォールトの検出が行われる。例えば、ある初期の対抗策では、単に計算を2回行い(おそらく2回の異なる実施によって)、それらの結果が同一であることを確認した。別の手法では、復号化等の計算を行い、次いで暗号化等の対応する逆の動作を行って、この逆の動作の出力が、復号化結果に処理を行う前の最初の入力と等しいことを確認する。署名システム(DSAを含む)は、公開鍵検証を実行することによって署名結果をチェックすることができる。これは特に、署名のチェックが署名の計算よりもはるかに高速であるRSAでは効率的である(これに対してDSAでは、公開鍵検証は署名よりもはるかに低速である)。この公開鍵検証ステップは、署名が、署名されているメッセージ(又はメッセージハッシュ)に本当に対応していることを確認する。しかしながらDSAシステムでは、公開鍵検証ステップは、ノンスが再使用されていないこと又は他の方法で改ざんされていないことを証明するために何もしない。
[006] RSA−CRTに限定された多くの対抗策が提案されている。これらの対抗策には、計算に用いられるモジュラス(modulus)のいくつかを展開して、少数の余分な還元(reductions)を用いて迅速な「サニティチェック」を実施可能とするものがある。更に別のものは、暗号アルゴリズムを「フェールセーフ」で、すなわち秘密鍵を回復する際に不良の(faulty)出力が役に立たないように、実施しようとする。
[007] しかしながら、離散対数問題ベースのデジタル署名システム(例えばエルガマル(ElGamal)署名アルゴリズム、デジタル署名アルゴリズム(DSA)、及び楕円曲線を用いたもの)は、RSA−CRTとは著しく異なる原理に基づいており、別のグリッチ攻撃を受けやすい。例えばDSA署名システムは、ランダムな一意の値(ノンス)を用いて各署名のセキュリティを保護する。DSAのセキュリティは、これらのノンス値が秘密のままであって決して再使用されないことを要求する。攻撃者がn個の署名を集めると、それらを用いて、未知数が(n+1)個であるn個の方程式を構築することができる。ノンスが再使用された場合、又はノンスの値が既知になった場合、n個の連立方程式が有する未知数はn個のみとなり、攻撃者は標準的な代数的方法を用いて、署名鍵とも呼ばれる私有鍵dについて解くことができる。これらのアルゴリズムを用いたデバイスに対する故障利用攻撃は、ノンス値の再使用を引き起こす「フォールト」又は「グリッチ」をデバイスの動作に発生させることによって成功する可能性がある。他のフォールト又はグリッチ攻撃では、ノンスは強制的に既知の値にされるか、又は未知の値となって多数回にわたり用いられる場合がある。更に別のフォールト又はグリッチ攻撃では、べき剰余(modular exponentiation)(又は曲線乗算(curve multiplication))の間に動作の1つがスキップされることがある。他のフォールトでは、演算の後半の段階で乗算又は還元が行われない場合がある。
[008] ノンス値は各メッセージについて一意である必要があるので、DSA署名が署名されているメッセージ(ハッシュ)に対応することを確認しても、セキュリティを脅かすフォールトが生じていないことは証明されない。
[009] 本明細書に組み込まれてその一部を構成する添付図面は、記載と共に、本明細書に記述する実施形態の原理を説明するように機能する。
[010] 標準的な楕円曲線デジタル署名アルゴリズム(ECDSA)又はデジタル署名アルゴリズム(DSA)を用いてどのようにメッセージMの署名を発生させるかを示すフローチャートである。 [011] 本明細書に記載する実施形態の原理に基づいて変更した、ECDSA又はDSAを用いて署名を発生させるための方法を示すフローチャートである。 [011] 本明細書に記載する実施形態の原理に基づいて変更した、ECDSA又はDSAを用いて署名を発生させるための方法を示すフローチャートである。 [012] ECDSA又はDSAに基づいた例示的な実施形態のフローチャートであり、この場合、AES等の可逆関数を用いてカウンタ又は秘密定数からノンスを導出することができる。 [013] 図3の耐グリッチ性暗号署名方法をカウンタ検証プロセスと組み合わせた別の例示的な実施形態を示す。 [013] 図3の耐グリッチ性暗号署名方法をカウンタ検証プロセスと組み合わせた別の例示的な実施形態を示す。 [014] ノンスを反転(invert)させた後にノンスの検証を行う、本明細書に開示する原理の別の実施形態を示す。 [015] 図3Bの検証プロセスをカウンタチェック値と組み合わせた更に別の実施形態を示す。 [016] 本明細書に開示する耐グリッチ暗号署名の原理と一致する例示的なデバイスを示す。
[017] これより、添付図面に示す例示的な実施形態について詳細に述べる。可能な場合はいつでも、図面全体及び以下の記載を通して、同一の参照番号を用いて同一又は同様の部分を示す。これらの実施形態は、当業者が本発明を実施することを可能とするために充分に詳しく記載するが、他の実施形態も利用することができ、本発明の範囲から逸脱することなく変更を行い得ることは理解されよう。従って、以下の詳細な説明は、限定の意味で解釈されるものではない。
[018] 本明細書に開示する方法及びデバイスは、離散対数ベースの署名を演算する際にグリッチ攻撃に抵抗すると共にこれを検出するための技法を用いる。上述のように、離散対数問題に基づいたデジタル署名システムは、一意のランダム値(ノンスとも呼ばれる)を用いて署名を発生させる。これらのシステムにおける主な脆弱性は、既知のノンスを用いること、又は2つ以上の異なるメッセージでノンスを再使用することである。本明細書に記載する方法及びシステムは、再使用攻撃に抵抗するような方法でノンスを生成する。いくつかの実施形態は、特定の署名が本当にノンスの特定の値に対応していることを検証するための試験を組み込んでいる。いくつかの実施形態は、ノンスに構造を導入する(すなわち、ノンスの全部又は一部を、疑似ランダムプロセスを用いて秘密鍵又はカウンタから導出する)。ノンスにおけるどんな種類の予測可能性も署名スキームにおける暗号の弱さを招き得るので、これらの実施形態のいくつかの態様では、攻撃者にとってノンス値を予測可能とすることなくノンスの形態を検証することができるノンスを導出するための様々な新規の手法を組み込んでいる。いくつかの実施形態は、使用可能性のある(potential)署名を送信する前に、多数の試験を実施することで、それがシステムのセキュリティを脅かさないことを保証する。いくつかの実施形態は、検証ステップにおいて私有署名鍵(又はその逆数)を用いた試験を使用可能性のある(prospective)署名に行う。いくつかの実施形態は、ノンス(又はその逆数)の使用を伴う試験を使用可能性のある署名に行う。
[019] 本明細書に記載するいくつかの実施形態で採用する手法は、公開鍵検証を補足する(すなわち署名及びメッセージの同一の暗号特性を確認する)試験を実行するが、著しい性能の高速化を達成するために秘密鍵の知識を利用する。これらの試験のいくつかを可能とするため、本明細書に記載するいくつかの実施形態では、ノンスを導出する方法に構造を導入することで、署名デバイスがランダムに見える数を評価すること、更にそれが現在のノンスの予想値に実際に対応しているか否かを判定することを可能とする。
[020] いくつかの実施形態においては、カウンタの値を用いてノンスの一部を発生させる。メモリ内にカウンタを記憶することは、以前のノンスの集合を全て記憶するよりも必要な空間が少なくて済む。ノンス導出プロセスでは、カウンタを混合又はスクランブル(暗号化)して予測不可能な出力を生成する関数が用いられる。スクランブルプロセスは、秘密プリミティブに基づくものとするか、又は鍵使用暗号プロセス(MAC構築におけるブロック暗号又はハッシュ関数)を利用することができる。いくつかの実施形態では、暗号プロセスはDPA対抗策を用いる。いくつかの実施形態では、MAC構築はDPAに抵抗するような構造となっている。これは例えば、Paul Kocher、Pankaj Rohatgi、及びJoshua M. Jaffeによる「Verifiable, Leak−Resistant Encryption and Decryption」と題する同時係属中の米国特許出願第2011/0138192号に記載されている。予測不可能性(従ってセキュリティ)を高めるために、本明細書に記載する実施形態のいくつかは、鍵使用暗号プロセス(秘密鍵を用いたAES復号化、又はHMAC−SHA)を用いてノンスの一部を導出し、他の実施形態は、差分電力解析(DPA)に抵抗するハッシュツリーを利用することができる。
[021] 本発明の多くの実施形態は、可逆関数を用いてカウンタからノンスを導出する。ノンスはカウンタから発生され、次いで署名を発生させるために用いられる。セキュリティの高い実施形態では、カウンタを更新してメモリに記憶した後にノンスを導出する。他の実施形態では、ノンスを導出した後にカウンタを更新する。これらの実施形態のいくつかは、次いで検証ステップを実行する。このステップでは、使用可能性のある署名を取得し、その成分を操作してノンスをチェックするための一連の動作を実行する。これらの動作には、使用可能性のある署名と私有鍵を混合することで導出したノンスを回復させ、導出したノンスを取得して反転関数を適用し、次いで反転関数の結果がカウンタの予想値を含むか否かをチェックすることが含まれる。
[022] 本発明のいくつかの実施形態は、可逆でない関数を用いてカウンタからノンスを導出する。これらの実施形態は、暗号的にセキュアな疑似乱数発生器を用いてカウンタの値からノンスを導出することができる。いくつかの実施形態では、ノンスをランダムに発生させ、以前用いた全てのノンスのデータベースを維持する。署名を完了する前に、ノンスをデータベースに追加する。再使用が検出された場合、ノンスは拒否され、署名プロセスは再起動される。
[023] いくつかの実施形態では、導出したノンスの値を記憶し、記憶した値を、後に用いられる値と比較することができる。いくつかの実施形態では、署名プロセス中にノンスのモジュラ逆数(modular inverse)を用い、このモジュラ逆数を演算した後にノンスの値を記憶するか又は再導出して検証することができる。いくつかの実施形態では、ノンスを導出するプロセスは2回以上実行することができる。いくつかの実施形態では、ノンスの値を検証ステップ中に再導出し、この値を用いて、署名から演算された「チェックノンス」の値が本当に予想カウンタに対応していることを確認する。
[024] いくつかの対抗策は、1/kの乗算をスキップさせるアクション、又は1/k以外のもの(すなわち既知又は再使用の値)をrの導出に使用させるアクションの検出に焦点を当てている。これには、kの逆数の演算を妨げるグリッチが含まれ、更に、例えばrの演算中に異なる(一定の)値をメモリから読み出させる恐れのあるアドレスライングリッチが含まれる。更に別の対抗策は、Qを法とした還元(複数回の還元)を妨害した可能性のあるフォールトを検出するように設計されている。
[025] いくつかの検証ステップは、署名が特定のノンスに対応していることを確認する。他の検証では、ノンスが衝突を防止する特定の構造を有することを確認する。
[026] 本明細書の実施形態は、カウンタからノンス値を導出するために鍵を用いることができる。いくつかの実施形態では、DPA対抗策を用いて、システム内の各静的鍵の使用を保護することができる。(本明細書で述べる場合、「静的鍵(static key)」は、ノンス導出鍵及び私有署名鍵を含む。いくつかの実施形態では、これらの鍵は同一とすることができる。)
[027] 以下で詳述するように、本明細書において記載する方法及びシステムは、全ての離散対数及び楕円曲線(EC)ベースの署名システムと共に用いるのに適している。例示的な実施形態は、ある特定の離散対数又はECベースの署名アルゴリズムとの関連で記載することができるが、同じ原理を他の実施形態で用いることも可能である。
[028] 本開示は、デジタル署名規格(又はDSS)としても知られるDSAの詳しい理解を想定している。この規格は、連邦情報処理規格(FIPS)発行186−3(アメリカ国立標準技術研究所、2009年6月)の「デジタル署名規格(DSS)」で規定され、Menezes等(CRC Press社、1997年)によるHandbook of Applied Cryptographyの452〜454ページに詳細に記載されている。また、当業者が、FIPS186−3及び他の多くのリソース(例えば、Hankerson、Menezes、及びVanstoneによる「Guide to Elliptic Curve Cryptography」の183〜186ページ、並びにIEEE1363, Standard Specifications for Public−Key Cryptography、2000年等。)に記載されたDSAの楕円曲線を用いた変種(ECDSA)を知っていて理解していることも想定している。本明細書に提示した標準的なDSA、ECDSA、又は他の署名アルゴリズムのいずれの記載も、包括的であることすなわちアルゴリズムの完全な記述であることでなく、本明細書に記載する本発明の理解に関連するか又はその理解に役立つステップのみを記述することを意図している。また、本発明は、例えばIEEEp1363、PKCS#11、KCDSA、Nyberg−Rueppel(ナイバーグ−リュッペル)、エルガマル、Schnorr(シュノル)等、類似の性質を持つ他のデジタル署名規格に適用される。
楕円曲線/デジタル署名アルゴリズム(ECDSA)
[029] 図1は、標準的なECDSA(ボックス120の式#1)又はDSA(ボックス120の式#2)を用いてメッセージMの署名を発生させるためのフローチャートである。ある時点で、ステップ132に示すように、メッセージMのハッシュ(H)を発生させる。ハッシュ関数は一般に、用いている署名システムによって選択される。例えばNSAは、Suite BセットにSHA−256及びSHA−384(FIPS180−3に記載されている)を選択している。
[030] DSA及びECDSAに用いられる一般的な表記は、どの規格又は出版物を読むかによって様々に異なる。この文書では、図1に用いる表記に従うことにする。DSA及びECDSAにおいて、鍵ペア(d、Y)は、私有鍵d及び公開鍵Yから成る。各システムは多数のドメインパラメータも含む。これらのドメインパラメータは、標準化団体によって又は署名システムが展開されるアプリケーションによって規定することができる。それらは、公開鍵の一部と見なすことも可能である。
[031] ECDSAにおいて、ドメインパラメータは、曲線の記述、曲線上にある点G、及びGから乗算により発生することができる曲線上の点群の位数である整数Qを含む。鍵ペアd、Y及びドメインパラメータは、関係Y=d.Gによって相互に数学的に関連している。ここでd.Gは、スカラーdによる点Gの楕円曲線スカラー陪算を示す。DSAにおいて、ドメインパラメータは、素数P、基底G、及びGのべき乗(powers)により発生するPを法とした数群の位数である整数Qを含む。また、鍵ペアは、関係Y=GmodPよって、ドメインパラメータと数学的に関連している(すなわち、Yと指数dに累乗した基底Gの値とはPを法として合同である)。
[032] ECDSA又はDSAを用いてメッセージMの署名を発生させるため、ステップ105において、「ノンス」とも呼ばれる新しい非ゼロの秘密乱数kを発生させる。乱数k及びその逆モジュロQ、k−1は、1から−1までの範囲内の整数である。kの選択は、規定した範囲全体を通して一様な分布を有すると考えられる。
[033] ステップ110では、試験を行って、発生させたノンスkが有効であるか否か、すなわちkがゼロより大きくかつQ未満であるか否かを判定する。kが有効でない場合、プロセスはステップ105に戻り、kの別の値を発生させる。kが有効である場合、ステップ120において、ノンスkを用いてデジタル署名の第1の部分を演算する。ECDSA(式#1)では、楕円曲線の点X=kG=(x,y)を発生させることによってRを決定する。ここで、Gは楕円曲線のシード点である。DSA(式#2)では、R=(GmodP)modPとしてRを計算する。
[034] ステップ125において、デジタル署名の第1の部分rを発生させる。ECDSAでは、Rは曲線上の点であり、そのx座標(x)をQを法とした整数に変換することによってrを発生させる。DSAでは、RはすでにQを法とした整数であり、ECDSAの場合との表記の対称のためにrという新しい名称を付ける。
[035] ステップ130では、試験を実行する。rがゼロである場合はこれを使用せず、プロセスはステップ105に戻って新しいkを発生させる。
[036] rが非ゼロである場合、ステップ135におけるように、
によって、デジタル署名の第2の部分sを発生させる。hは、ステップ133に示すように、H(M)から整数に変換されたメッセージMのハッシュである。ステップ160において、sの値をチェックする。sがゼロである場合はsを使用せず、プロセスはステップ105に戻って新しいkを発生させる。
[037] sが非ゼロである場合、メッセージMの署名に用いるために、署名成分(r,s)を戻す(ステップ185)。
[038] DSA及びECDSAのいくつかの実施では、rのチェック(ステップ130)及びsのチェック(ステップ160)が省略されることに留意すべきである。いくつかの実施では、ノンスkの試験(ステップ110)は、kが1より大きいか否かのチェックである場合がある。更に、DSAと同様の署名プロセスを実行するいくつかの暗号デバイスでは、ハッシュを演算するステップを除外し、署名される入力がハッシュであるのに適切なサイズの整数であることが要求されることがある。
疑似ランダムノンスを用いた署名発生
[039] 本明細書に開示するのは、デジタル署名を脅かす恐れのあるいくつかのグリッチが発生していないことを判定するための方法及デバイスである。
[040] いくつかの実施形態では、試験を実行して、ノンス及びその結果として得られる署名が正しいこと、すなわち、ノンスが再使用されたり攻撃者が予想し得る値に変更されたりしていないことを判定する。本明細書に開示する方法及びシステムは、署名を検証することができ、更に、発生した署名が実際に発生したノンスに対応していること及び発生したノンスを用いて発生されたことを検証することができる。
[041] いくつかの実施形態では、ランダムノンスを疑似ランダムノンスに置き換える。疑似ランダムノンスは、セキュリティの一部として、使用したノンスが特定の導出構造に従って生成されたことの検証が含まれるので、「構造化(structured)」ノンスとも称することができる。ノンスは、攻撃者にとって予測不可能であるがデバイスによって再発生可能な方法で発生される。
[042] いくつかの実施形態では、ノンスは何らかの内部状態情報から確定的な方法で導出し、その発生が反復可能であるようになっている。また、本明細書に記載する方法及びシステムは、導出されたノンス値が一意であることを強く保証するように内部状態情報を更新する。セキュリティを強化するため、ノンス発生はモジュラフィールド(modular field)全体にわたって一様でなければならない。
[043] 本明細書に記載する原理は、以下の例示的な実施形態に示すように、署名発生のための多種多様な方法に適用することができる。
[044] 図2A及び図2Bは、本明細書に記載した原理に一致する、疑似ランダムノンスを用いてデジタル署名を発生させるための例示的な方法を示す。図2Aに示すように、カウンタCを用いてkを発生させる。「カウンタ」は、自明でない数の要素を含むシーケンスで更新されるメモリ内に記憶されたいずれかの値を指すことができ、その中で「最終値」を認識することができる。いくつかの実施形態では、カウンタは、例えば線形フィードバックシフトレジスタ(LFSR)によって発生させることができる。カウンタはいずれかの適切な長さとすればよいが、多くの実施形態では、64ビット又はもっと大きいカウンタを用いると、一様性が高まると共に衝突が減る。カウンタの使用により、ノンスのシーケンスが短いサイクルを有しないことが保証されるが、モジュロQに衝突がないことは保証されない。カウンタの値は秘密である必要はないが、その値を署名と署名との間で更新することは必須である。値が更新されたことを確実とするために、1つの手法として原子メモリ書き込みがある。原子メモリ書き込みの前後の試験を用いて、これが成功したことを保証することができる。
[045] ステップ201において、署名発生プロセスの開始時にカウンタを更新する。いくつかの実施形態では、カウンタは原子書き込みによって更新され、その結果を検証してからプロセスを継続する。現在の署名に用いるカウンタが以前に使用されたことがないことを保証するため、ここでカウンタを更新する。いくつかの実施形態では、カウンタを前回の署名発生プロセスの終了時に更新しても同じ結果を得ることができる。
[046] ステップ203では、カウンタC及びいずれかの適切な暗号化アルゴリズムを用いて、一時値T及びTを計算する。1つの適切な暗号化アルゴリズムは、AES(Advanced Encryption Standard)、すなわちFIPS承認の対称ブロック暗号であり、これは暗号化のために128、192、及び256ビットの暗号鍵を用いることができる。AESを用いて、TはT=AES_enc(knonce,C)と演算し、TはT=AES_enc(knonce,C)と計算する。いくつかの実施形態では、モジュラ還元(modular reduction)の前に値T及びTを記憶する。ステップ205では、これらの一時値を用いて疑似ランダムノンスkを演算する。これは、k=(T||T)modQとして計算される。
[047] 多くの実施形態において、モジュラ還元に対する入力(すなわちT||T)は、バイアスを回避するためにQよりも大きくなければならない。上述のように、充分な長さのカウンタを選択して、T||TをQより少なくとも64ビット大きくすることで、バイアスを軽減することができる。この例では、T||Tは256ビット長であるので、入力の長さはQの長さより96ビット大きい。
[048] 図2AのプロセスはT及びTを用いて例示しているが、ノンスkを決定する前にカウンタから計算する中間一時値はいくつであってもよい。結果をQを法として還元して疑似ランダムノンスkが形成される限り、多数の一時値を組み合わせたり連結したりすることができる。例えば、ノンスkは以下のように計算することができる。
ここで、ハッシュ関数の出力サイズはQよりも充分に大きい。
[049] 一般に、本明細書に記載する実施形態において、図2Aのステップ201〜205は、任意の署名発生方法における図1のステップ105の代わりに用いることができる。その後、特別に演算した値k及び他のECパラメータを用いて、図2A及び図2Bのステップ210〜260を、図1のステップ110〜160におけるように実行することができる。更に、いくつかの実施形態では、任意選択として、ステップ240で計算するようなQを法としたkの逆数をメモリに記憶する。この値を後に一貫性チェックで用いて、グリッチが発生したか否かの判定を支援することができる。
[050] 図2A〜図2Bに戻ると、本明細書に記載する実施形態は、署名値と比較するためのチェック値を演算することによって、グリッチに対する保護を提供する。ステップ265では、ノンスkをカウンタCから再演算することができ、この値をk’と称する。
[051] ステップ270では、rcheckを以下のように演算することができる。
これを、先に演算した署名成分rと比較する(ステップ275)。2つの値が等しい場合(r=rcheck)、グリッチが発生していない信頼性が高い。署名成分(r,s)を、メッセージMの署名に使用するために戻すことができる。しかしながら、rがrcheckに等しい場合、エラー(又はグリッチ)が発生したか又は意図的に引き起こされている(ステップ280)。この場合、プロセスは、例えばエラーコードを戻すこと又は故障カウンタを増分すること、及び/又はこの署名プロセスをステップ201から再起動することによって、エラーを知らせることができる。
[052] rcheckを他の方法で計算してもよいことは認められよう。例えばいくつかの実施形態では、rcheckを以下のように計算することができる。
いくつかの用途では、数学的に等価な異なる順序で計算を実行することによって、速度及び/又は効率を上げることができる。また、いくつかの実施形態では、dの逆数を予め演算して記憶することができる。この値を記憶すると、アルゴリズムは、署名発生アルゴリズムの反復ごとに1/dを計算する必要性を回避することができる。また、これは、例えば1=(d・1/d)modQをチェックすることによる追加の一貫性チェックとして使用可能である。
[053] いくつかの実施形態では、ノンスkは、カウンタ及び乱数の関数のように、多数の入力の関数として発生させることができる。以下の例では、例えばVをランダムな256ビットの数とすることができる。疑似乱数kを以下のように発生することができる。
しかしながら、この実施形態では、k又はチェック値の再発生を可能とするためにVを記憶する必要がある。
[054] 図3は、耐グリッチ暗号署名方法の例示的な実施形態を示す。ここでは、AES等の可逆関数を用いてカウンタ及び秘密定数からノンスを導出することができる。図3はECDSA及びDSAに関連付けて示すが、この原理は他の離散対数署名アルゴリズムにも適用可能である。図3において、ノンスは以下のように計算することができる。
[055] ステップ301において、カウンタを更新する。上述のように、署名発生ごとにフレッシュなカウンタを用いることは必須である。カウンタの更新は、例えば署名を戻す直前、又は署名発生プロセスの開始時に行えばよい。(また、ステップ310、330、360、及び380等で起こり得るようにプロセスが冒頭に戻った場合はいつでもカウンタを更新しなければならない。)この例では、カウンタは署名発生の開始時に更新する。ステップ303において、Qより小さい乱数v’を取得する。多くの場合、この数は1からQ−1の範囲にわたって一様又はほぼ一様である。例えばいくつかの実施形態では、Qよりも少なくとも64ビット大きいランダムな2進数v’’を発生し、Qを法としてv’’を還元してv’を取得する。
[056] ステップ304では、v’の低位ビットのある数(L)をゼロに設定して、新しい名称を付けた変数vを生成する。
[057] ステップ305では、秘密鍵knonceと、knonceの値を知らない攻撃者がCを知っていても予測することが難しい出力を生成する可逆関数とを用いて、カウンタからLビット量Uを発生させる。このような関数の一例は、Lビット出力のブロック暗号である(すなわちAESはL=128で動作し、DESはL=64に適している)。図3A−1に示す実施形態では、UはU=AES_enc(knonce,C)として演算することができる。
[058] AESの例では、以下の動作すなわちv=v’−(v’mod2128)を実行することによってv’の最下位128ビットをゼロに設定することができるが、メモリ内のビット数をゼロに設定することは、通常は減算及びモジュラ演算を必要としない自明な動作である。
[059] 次いで、v’の高次ビット(すなわちv)をLビット出力Uと組み合わせることで、ノンスkを発生させることができる。例えばvをUに加える。あるいは、ゼロに設定することなく、v’のLビット以外の全ビットをUのビットと組み合わせること等によって、ノンスkを生成することができる。いずれの場合でも、これらの離散対数ベースの署名システムは全て、ノンスに著しいバイアスが存在する場合にセキュリティが脅かされる恐れがある。Qを法として一様な数を取得し、そのビットの一部を2進数と置換すると、ある程度のバイアスが生じるが、このバイアスは、LがQより充分に短い場合には極めて小さい。(多くの場合、例えばバイアスは2−(lg(Q)−L)のオーダーである)。Qよりも32ビット又は64ビット長いランダムな2進数を取得し、これをQを法として還元することで、Qを法として「基本的に一様な」数を発生させることは一般的である。実際、Qを法として一様な数を取得し、高位32ビット又は64ビット以外の全ビットをランダムビットで置換すると、同等のバイアスレベルで「基本的に一様」となる。
[060] ステップ340において、Qを法としたノンスkの逆数に等しい変数tを計算する。この値は、後に使用するために記憶することができる。
[061] ステップ310では、疑似ランダムノンスkにチェックを行って、発生させたノンスkが有効であるか否か、すなわちkがゼロより大きくかつQより小さいか否かを判定することができる。kが有効でない場合、プロセスはステップ301に戻る。カウンタを更新し、kの別の値を発生させる。kが有効である場合、ステップ320において、ノンスkを用いてデジタル署名の第1の部分Rを演算する。
[062] ステップ325では、Rを整数rに変換する。rがゼロである場合(ステップ330)、プロセスはステップ301に戻り、別のノンスkを演算する。rが非ゼロである場合(ステップ330)、プロセスは続いてステップ335において、以下に示すようにデジタル署名の第2の部分sを決定する。
[063] 図3では図1及び図2のように示していないが、hは、整数に変換されたメッセージMのハッシュH(M)を表す。
[064] sがゼロである場合(ステップ360)、プロセスはステップ301に戻り、別のノンスkを演算する。sが非ゼロである場合(ステップ360)、デジタル署名(r、s)を戻し(ステップ385)、使用することができる。
カウンタ検証プロセス
[065] 図3A−1及び図3A−2は、図3の耐グリッチ暗号署名方法をカウンタ検証プロセスと組み合わせた別の例示的な実施形態を示す。図3A−1において、ステップ301〜360は図3のステップ301〜360と同じである。図3A−2において、カウンタのためにチェック値を演算する試験を実行する。チェックカウンタ値は以下のように演算することができる。
[066] ステップ361において、Qを法とした(r×t)としてxを演算する。Qを法とした(x×d)として値yを計算し(ステップ362)、Qを法とした(s−y)としてzを計算する(ステップ363)。値Wは、Qを法としたzの逆数として計算することができる(ステップ364)。Qを法として値wにメッセージのハッシュhを乗算して、チェック値の演算に用いるために〔回復した〕ノンス値kchを得ることができる(ステップ365)。Uchを、回復したノンス値の低位Lビットと等しくする(ステップ366)。次いでステップ367において、knonceを用いてステップ(305)で適用した「unpredictable_reversible_L−bit_encoding」関数(これは、ステップ305で用いたものと同一のノンス導出鍵であるか、又は非対称関数では逆鍵(inverse key)である場合がある)の逆数を適用することで、回復したカウンタ値Cchを演算することができる。例えば、いくつかの実施形態は、ステップ305における関数としてDES暗号化を用い、ステップ367における関数としてDES復号化を用いる。
[067] カウンタチェック値が元のカウンタ値と等しくない場合には(ステップ375)、エラー(又はグリッチ)が発生したか又は意図的に引き起こされている。この場合、プロセスは、例えばエラーコードを戻すか又は故障カウンタを増分することによってエラーを示すことができる(ステップ380)。CがCchに等しい場合、グリッチは検出されていない。デジタル署名(r,s)を戻して(ステップ385)、使用することができる。
[068] いくつかの実施形態では、図3A−2のステップ361〜365は、チェック値を計算する代替的な方法で置き換えることができる。例えばこの実施形態では、一時値T、T、及びTを以下のように計算することができる。
[069] すると、kch=TmodQとなる。その後、ステップ366におけるようにU(低位ビット)を得るために、UchをUch=kchmod2128として計算することができる。ステップ367におけるように、CchをCch=reverse_of_unpredictable_reversible_L−bit_encoding(kch,Uch)として演算すればよい。
[070] ステップ375において、CchをCと比較して(ステップ375)、再演算した値がチェック値と等しいことを確認することができる。これらが等しい場合、デジタル署名(r,s)を戻せばよい(ステップ385におけるように)。
ノンス反転後の検証
[071] 図3Bは、本明細書に開示する原理の別の実施形態を示す。図3Bに示すプロセスにおいては、ノンスの反転後であるが、いずれかのデジタル署名部分の計算の前に、ノンスの検証を行う。ノンス発生の直後に試験を行うことで、ノンス発生中にグリッチが発生した場合の時間とコンピュータサイクルとの無駄を防ぐことができる。
[072] 図3Bにおいて、図示するステップ301〜304は、図3のステップ301〜304と同一である。図3Bのステップ305では、図3のステップ305に示したunpredictable_reversible_L−bit_encodingの一例として、AES暗号化を用いる。ステップ310では、試験を行って、kが有効であって自明でないこと、すなわち1よりも大きいことを保証する。
[073] kが有効である場合、Qを法としたノンスkの逆数として一時変数tを演算することができる(ステップ340)。値tはメモリに記憶することができる(ステップ341)。メモリは、レジスタ、ゲートアレイ、ワイヤセット、BUS構成、又は他の揮発性もしくは不揮発性メモリとすればよい。次に、t*k modQを演算することができる(ステップ342)。この結果得られる値が1以外である場合、グリッチ又はエラーが発生したか又は検出されている。プロセスはカウンタを更新し、別のノンスkを演算する(ステップ301)。
[074] ステップ342において値が1である場合、これまでのところエラー(又はグリッチ)は検出されていないので、プロセスは続いてステップ320(すなわちデジタル署名部分の計算)を実行することができる。
[075] 図3Cは、図3Bの検証プロセスをカウンタチェックと組み合わせた更に別の実施形態を示す。図3Cにおいて、図示するステップ310〜342は、図3Bのステップ310〜342と同じである。また、図3Cのプロセスでは、図3Bに示すプロセスを用いてノンスを発生させること、すなわちU=AES_enc(knonce,C)及びk=v+Uを想定している。
[076] ステップ342で試験を実行し、これまでのところエラー(又はグリッチ)が検出されていないと判定された後、この方法はカウンタチェック値を計算することができる。ステップ343において、kの低位128ビットを用いてU’を発生させる。次いで、U’をkの低位128ビットに等しくし、ステップ305と同じ鍵knonceを用いてU’の復号値としてC’を計算することで、カウンタチェック値C’を計算することができる。すなわちC’=AES_dec(knonce,U’)である(ステップ344)。ステップ345においてC’=Cである場合、グリッチは検出されていないので、プロセスは続いてステップ320(すなわちデジタル署名部分の計算)を実行することができる。カウンタチェック値がカウンタに等しくない場合、カウンタを破棄するか又は更新し、新しいノンスkを演算する(ステップ301)。
代替的な実施形態
[077] 図2〜図3は、本明細書に記載した原理の具体的な実施形態を示している。しかしながら、kを発生させるための他の方法も使用可能である。例えば、いくつかの実施形態においては、Paul C. Kocherによる「Leak−Resistant Cryptographic Indexed Key Update」と題する米国特許第6,539,092号に記載されたもの等の鍵ツリー発生プロセスを用いて、ノンスを発生させることができる。
[078] 他の実施形態では、記憶された状態値は必ずしもカウンタである必要はなく、他の利用可能な内部状態情報としてもよい。これは例えば、メッセージ自体、又はメッセージから適切な暗号変換によって導出された情報とすることができる。ノンスがメッセージの予測不可能な関数である限り、特定のメッセージに2回目に署名する際に同一のノンスが用いられたとしても、DSA及び他のスキームはセキュアである。
[079] いくつかの実施形態では、カウンタを何らかの変数データと混合させてノンスを発生させることができる。セキュアハッシュアルゴリズム(SHA)のアルゴリズムファミリー(例えばSHA−224、SHA−256、SHA−384、及びSHA−512を含む)、又は例えばブロック暗号ベースのハッシュ関数のような他のいずれかの適切な暗号プリミティブ等、いずれかの適切な暗号ハッシュ関数を用いて、多数のタイプの記憶データのハッシュ関数として、中間の新しい状態を発生させることができる。
[080] 以下に示すように、中間の新しい状態は、以前の状態、カウンタ、及び鍵knonceの組み合わせにハッシュ関数(SHA−224又はSHA−256)を適用することによって発生させることができる。新しい状態modQをノンスとして用いることができる。
[081] しかしながらこの方法では、ハッシュ関数の出力サイズである状態データブロックを維持する必要がある。この情報は記憶する必要があり、適切に保護されない場合は以前のノンスに関する情報が漏れることがある。出力関数は、別の秘密定数とのモジュラ乗算、又はランダム変数のXOR、又は非ゼロのランダムに発生させた数との乗算を含む場合がある。
[082] 別の実施形態では、既知の変数データのハッシュを演算することによってノンスを発生させることができ、これは場合によっては、以下に示すような以前の署名の部分rを含む。
[083] いくつかの実施形態では、以前の署名の部分のような既知の変数データを用い、これをランダム変数Vと混合させて、以下のように演算することで、ノンスを発生させることができる。
[084] 既知のデータを新しいランダムデータと混合させてノンスを発生すると、(例えばDPAによって)knonceを発見する可能性のある攻撃者を妨害するのに役立つ。攻撃者は、必ずしもある特定のノンスの値に関する情報を取得可能なわけではないからである。DPA耐性は、署名発生を実行する多くのデバイスにとって重要な基準である。DPAに対するこの対抗策は、発生させているノンスが経時的に何らかの特定の定数値と一致する必要はないという事実を利用している。
[085] 図4は、デバイス(400)において具現化された、本明細書に記載した原理の適用を示す。便宜上、文脈に応じて、参照番号は、プロセス内のステップ及び/又はそのようなプロセスステップによって用いられる(又は生成される)量を示すことがある。図4に示すように、少なくとも1つの実施形態において、デバイス400は、不揮発性メモリ401、少なくとも1つのプロセッサ402、少なくとも1つの命令及びデータキャッシュ403、暗号ハードウェア410、入出力インタフェース420を備えている。
[086] 図4に示すように、NVM401を用いて、例えば鍵「d」、カウンタ、又はノンスの1つ以上を必要に応じて記憶して、本明細書に記載する様々な実施形態を実施することができる。
[087] プロセッサ402は、例えば高性能マルチコア楕円曲線暗号プロセッサとすることができる。
[088] キャッシュ403は、デバイス又はチップ内のローカルメモリである。例えばキャッシュ403は、プロセッサ402が動作を行うデータ又は命令を一時的に記憶するオンチップメモリとすればよい。
[089] 暗号ハードウェア410は、例えば暗号機能を実行するハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとすることができる。暗号ハードウェア410は、例えば乱数発生器(RNG)411、1つ以上のカウンタ412、鍵ツリー処理モジュール412、AESモジュール413、及びSHAモジュール414の全部又は一部を備えることができる。
[090] 入出力インタフェース420は、入力としてメッセージ又はそのハッシュを読み取り、デジタル署名を更に処理するために他のコンポーネントに提供するソフトウェア又はハードウェアである。
[091] 本明細書に記載した方法及びシステムは、記憶した値からノンスを導出することを含み、更に、メモリ内の値を更新してカウンタ又はシーケンスの繰り返しを防ぐことを含む。カウンタ又は状態が更新された場合はいつでも、グリッチが引き起こされる可能性がある。システムのセキュリティは、例えば原子書き込みを用いて向上させることができる。原子書き込みにおいては、既存の記憶値はすぐに上書きされず、更新された値が第2の記憶位置に書き込まれて以前の記憶値と比較される。この比較によって、状態又はカウンタ値が変更されたか否かを示すことができる。
[092] また、状態を示すためのビット又はフラグの使用等によって、更新プロセス中に書き込み動作のステータスを常時監視することが推奨される場合がある。例えば、書き込み動作を開始する際にフラグをセットして、書き込みの開始を示すことができる。書き込みが完了したらフラグをクリアすることができる。このように、このフラグのステータスをチェックすることで、以前の書き込み動作が中断されたか否かを判定することができる。更にセキュリティを高めるため、及び、書き込まれている値のビットを全てゼロ又は全て1にする可能性のある攻撃者を妨害するため、ゼロ及び1の双方を含むマルチビット値を用いてフラグを表すことができる。そのような方法で、鍵、カウンタ、又は他の値のビットを記憶してもよい。場合によっては、「全てゼロ」及び「全て1」の値を、エラーを示すために確保しておくこともできる。(例えば「01」は「書き込み保留」を示し、「10」は書き込み完了/書き込み保留なしを示し、「00」及び「11」は「無効状態」を示す。)
[093] いくつかの実施形態では、メッセージの関数としてノンスを発生させることができる。メッセージからノンスを発生させることが許容可能である理由は、同一のメッセージには同一のノンスのみが発生され、従ってこの再使用を悪用して鍵に関する情報を取得することはできないからである。しかしながらノンスは、秘密かつバイアスなしに維持されなければならず、これはモジュラス全体で一様に発生させなければならないことを意味する。いくつかの実施形態では、メッセージを整数に変換し、そのモジュラスを法とする秘密定数によって累乗することができる。
[094] 以下は、モジュラスQよりも著しく大きい出力を生成する暗号関数large_blocksize_ENCを用いて、メッセージの確定的関数としてノンスを発生させる例を示す。
ここで、hは署名されるメッセージのハッシュであり、knonceは秘密ノンス発生鍵であり、これはDSA署名私有鍵と同一であり得る。しかしながらこの暗号化プロセスは、large_blocksize_ENC()関数において高レベルのDPAセキュリティを必要とする。この戦略は、例えば強力なRNGを有しないデバイスにおいて、又は小さいメモリサイズを有するものに用いるのに適切である場合がある。これには、カウンタに基づく戦略を用いたデバイスのEEPROM要求がない。しかしながらこれには、EEPROMを必要とし得る強力なDPA対抗策が必要である。large_blocksize_ENC関数の例は、Rijndael、Keccak、及びThreefishを含む。
[095] 既知であるグリッチ攻撃の1つに、「ループ拡張」グリッチ攻撃がある。これは、ループを終わらせず、メモリから数バイトを送信しているループを「拡張」させて、デバイスのメモリの大部分を送信させる可能性がある。(これは「メモリダンプ」攻撃とも呼ばれる。)これらのグリッチ攻撃から保護するため、クロックジッタ、電圧の平坦化、及び/又はランダム化のようなプロセッサレベルの対抗策を採用することが有用であり得る。これらの対抗策は、悪用されるループ特性を起動しにくくすることができる。
[096] 他の実施形態では、メモリを暗号化することができる。例えば「メモリダンプ」グリッチに対して更に防護するため、秘密鍵アルゴリズムをデバイス又はチップ自体(例えばメモリでなく回路内)に内蔵することができ、これを用いてメモリに記憶された値を復号化する。こうするための1つの戦略は、Kocher等の「Method and apparatus for preventing piracy of digital content」と題する米国特許第6,289,455号に記載された暗号ファイアウォールソリューションである。例えば、デジタル署名鍵及びノンス発生鍵を、疑似非対称関数発生器(PAFG)に対する入力値としてメモリに記憶することができる。PAFGの出力は、デジタル署名動作を実行するための回路の入力に直接供給することができる。あるいは、PAFGの出力は、メモリダンプがアクセスすることができないセキュアなバス又はレジスタセットに直接供給することができる。
[097] グリッチ攻撃に対してセキュアである必要があるデバイスは、差分電力解析(DPA)に対してもセキュアである必要があり得る。従って、本明細書に記載した方法及びシステムはDPA対抗策を用いて実施可能である。例えば、いずれかの実施形態のカウンタが線形フィードバックシフトレジスタ(LFSR)を用いて更新された値である場合、これは、LFSRを用いて個別に更新された多数の値の排他的ORとして表すことができ、これによってDPA攻撃に対する耐性を向上させることができる。LFSRを用いるこの技法は、耐グリッチ対抗策とは独立して適用可能であり、デジタル署名を実行しないシステムでは一般的なDPA対抗策として適用可能である。
[098] この特許は、本明細書に記載した技法を用いない同様のコスト及び複雑さのデバイスよりも、攻撃に対して著しく高い耐性を有するデバイスの構築を可能とする関連技法ファミリを包含する。更に、システムをセキュアにするために多数のセキュリティ技法が必要となる場合があり、従って、本明細書に記載した技法は他のセキュリティ方法又は対抗策と関連付けて使用可能である。
[099] 更に、本発明はDSA及びECDSAと関連させて記載したが、本明細書に記載した本発明の原理は、他のデジタル署名アルゴリズムにも適用及び適合させることができる。そういった他のアルゴリズムには、限定ではないが、エルガマル署名システムの変種、IEEEp1363、PKCS#11、KCDSA、Nyberg−Rueppel、Schnorr、IBEベースの署名(IBEはIDベース暗号(Identity Based Encryption)を表す)、IBEベースの鍵導出、ノンスを用いるペアリングベースの暗号スキーム、ノンスベースの格子署名、EdDSA25519、及び本発明の技法を適用するのに適した動作を伴う他の暗号アルゴリズムが含まれる。
[0100] 当業者には認められようが、上述の技法は、特定のホスト環境にもフォームファクターにも限定されず、限定でなく以下を含む多種多様な用途において使用可能である。それらの用途には、ISO7816−1、ISO7816−2、及びISO7816−3に実質的に準拠するスマートカード(「ISO7816準拠スマートカード」)を限定でなく含むあらゆる種類の暗号スマートカード、非接触型及び近接型のスマートカード及び暗号トークン、記憶値カード及びシステム、暗号によりセキュアとなったクレジットカード及びデビットカード、顧客ロイヤルティカード及びシステム、暗号により認証されたクレジットカード、暗号アクセラレータ、賭博システム、セキュアな暗号チップ、耐タンパー性マイクロプロセッサ、ソフトウェアプログラム(限定でないが、パーソナルコンピュータ、サーバ等で用いられるプログラムや、暗号デバイス上にロード又はその内部に埋め込むことができるプログラムを含む)、鍵管理デバイス、銀行鍵管理システム、セキュアなウェブサーバ、電子決済システム、少額決済システム及びメータ、プリペイド電話カード、暗号識別カード及び他のアイデンティティ検証システム、電子資金移動用システム、現金自動預払機、POS端末、証明書発行システム、電子バッジ、入室システム、暗号鍵を用いたあらゆる種類の物理ロック、あらゆる種類の映像信号を保護するためのシステム、知的財産保護及びコピー保護システム(映画、オーディオコンテンツ、コンピュータプログラム、ビデオゲーム、画像、テキスト、データベース等の不正なコピー又は使用を防ぐために用いるもの等)、携帯電話スクランブル及び認証システム(電話認証スマートカードを含む)、セキュアな電話(そのような電話用の鍵記憶デバイスを含む)、暗号PCMCIAカード、携帯型暗号トークン、暗号データ監査システムが含まれる。
[0101] 前記の全ては例示的な実施形態及び用途を示し、それらから、本明細書に開示した特定の技法の精神及び範囲から逸脱することなく、関連する変更、強化、及び変形が明らかとなろう。従って、本発明は、前述の開示に限定されるものではなく、添付の特許請求の範囲によって解釈されるものとする。

Claims (19)

  1. グリッチに抵抗する方法で秘密ノンスを伴うデジタル署名を発生させるためのコンピュータにより実施される方法であって、少なくとも1つのプロセッサ及び少なくとも1つのメモリを備えるシステムによって実行される前記方法が、
    第1の秘密鍵と前記少なくとも1つのメモリの第1の位置に記憶されたカウンタ値とに基づいて、有効な非ゼロのノンスを発生させることと、
    前記カウンタ値を更新し、前記第1のメモリ位置が前記更新したカウンタ値を含むことを確認することと、
    前記有効な非ゼロのノンスと第2の秘密鍵とに基づいてデジタル署名を発生させることと、を備え、前記第2の秘密鍵が鍵ペアの私有鍵である、方法。
  2. 前記有効な非ゼロのノンスの逆数を発生させることと、
    前記有効な非ゼロのノンスの前記逆数に基づいてチェックデジタル署名を発生させることと、
    前記発生させたデジタル署名を前記チェックデジタル署名と比較することによって、前記デジタル署名がグリッチなしで発生されたか否かを判定することと、
    を更に備える、請求項1に記載の方法。
  3. 前記発生させたデジタル署名が前記チェックデジタル署名と一致すると判定された場合に、前記発生させたデジタル署名を外部のデバイスに送信することを更に備える、請求項2に記載の方法。
  4. 前記非ゼロのノンスが1度だけ用いられ、反復されない、請求項1に記載の方法。
  5. 前記有効な非ゼロのノンスを発生させるステップが、差分電力解析(DPA)に対して耐性を有する、請求項1に記載の方法。
  6. 前記ノンスが可逆暗号動作を用いて発生される、請求項1に記載の方法。
  7. 前記ノンスが、
    前記第1の秘密鍵及び前記カウンタの関数として2つ以上の一時変数を演算することと、
    前記2つ以上の一時変数に基づいて前記ノンスを発生させることと、
    によって発生される、請求項1に記載の方法。
  8. 前記2つ以上の一時変数に基づいて前記ノンスを発生させることが、前記2つ以上の一時変数を組み合わせること及びその結果をQを法として還元することを備える、請求項7に記載の方法。
  9. 前記デジタル署名が第1の部分及び第2の部分を備え、前記チェックデジタル署名を発生させるステップが、前記第1又は第2の部分の少なくとも一方のチェック値を発生させることを備え、前記デジタル署名がグリッチなしで発生されたか否かを判定することが、前記第1又は第2の部分の前記少なくとも一方の前記チェック値を前記デジタル署名の前記発生させた第1又は第2の部分と比較することを備える、請求項2に記載の方法。
  10. 秘密ノンスを用いるアルゴリズムを用いてデジタル署名を発生させるための耐タンパー性デバイスであって、前記署名が、消費電力量の変動を外部から監視することによる秘密の発見に抵抗する方法で発生され、前記デバイスが、
    (a)予測不可能な情報のソースと、
    (b)第1の秘密鍵及びカウンタ値を記憶するためのメモリと、
    (c)前記デバイスによって生成される外部から監視可能な信号とは非相関の方法で前記デジタル署名を発生させるためのプロセッサであって、
    前記第1の秘密鍵及び前記カウンタ値に基づいて有効な非ゼロのノンスを発生させ、
    前記カウンタ値を更新し、前記第1のメモリ位置が前記更新したカウンタ値を含むことを確認し、
    前記有効な非ゼロのノンス及び第2の秘密鍵に基づいて前記デジタル署名を発生させる、プロセッサと、
    (d)前記デジタル署名を外部のデバイスに供給するための出力インタフェースと、
    を備える、デバイス。
  11. 前記プロセッサが更に、
    前記有効な非ゼロのノンスの逆数を発生させ、
    前記有効な非ゼロのノンスの前記逆数に基づいてチェックデジタル署名を発生させ、
    前記発生させたデジタル署名を前記チェックデジタル署名と比較することによって、前記デジタル署名がグリッチなしで発生されたか否かを判定する、
    ように構成されている、請求項10に記載のデバイス。
  12. 前記発生させたデジタル署名が前記チェックデジタル署名と一致すると判定された場合に、前記発生させたデジタル署名を外部のデバイスに送信するための入出力インタフェースを更に備える、請求項11に記載のデバイス。
  13. 前記非ゼロのノンスが1度だけ用いられ、反復されない、請求項11に記載のデバイス。
  14. 前記有効な非ゼロのノンスを発生させるステップが、差分電力解析(DPA)に対して耐性を有する、請求項11に記載のデバイス。
  15. 前記ノンスが可逆暗号動作を用いて発生される、請求項11に記載のデバイス。
  16. 前記ノンスが、
    前記第1の秘密鍵及び前記カウンタの関数として2つ以上の一時変数を演算し、
    前記2つ以上の一時変数に基づいて前記ノンスを発生させる、
    ことによって発生される、請求項11に記載のデバイス。
  17. 前記2つ以上の一時変数に基づいて前記ノンスを発生させることが、前記2つ以上の一時変数を組み合わせること及びその結果をQを法として還元することを備える、請求項16に記載のデバイス。
  18. 前記デジタル署名が第1の部分及び第2の部分を備え、前記チェックデジタル署名を発生させるステップが、前記第1又は第2の部分の少なくとも一方のチェック値を発生させるステップを備え、前記デジタル署名がグリッチなしで発生されたか否かを判定するステップが、前記第1又は第2の部分の前記少なくとも一方の前記チェック値を前記デジタル署名の前記発生させた第1又は第2の部分と比較するステップを備える、請求項11に記載のデバイス。
  19. 前記デジタル署名が、差分電力解析(DPA)に対して耐性を有する方法で発生される、請求項1から10のいずれか1項に記載の方法。
JP2015541984A 2012-11-12 2013-11-11 耐グリッチ性暗号離散対数ベースの署名のための方法及びシステム Active JP6366595B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261725058P 2012-11-12 2012-11-12
US61/725,058 2012-11-12
PCT/US2013/069454 WO2014075000A1 (en) 2012-11-12 2013-11-11 Methods and systems for glitch-resistant cryptographic discrete-log based signing

Publications (2)

Publication Number Publication Date
JP2015534419A true JP2015534419A (ja) 2015-11-26
JP6366595B2 JP6366595B2 (ja) 2018-08-01

Family

ID=49880926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015541984A Active JP6366595B2 (ja) 2012-11-12 2013-11-11 耐グリッチ性暗号離散対数ベースの署名のための方法及びシステム

Country Status (4)

Country Link
US (1) US9571289B2 (ja)
EP (1) EP2918037A1 (ja)
JP (1) JP6366595B2 (ja)
WO (1) WO2014075000A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US9621525B2 (en) * 2014-06-02 2017-04-11 Qualcomm Incorporated Semi-deterministic digital signature generation
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
CN106326053B (zh) * 2016-08-25 2022-02-01 深圳先进技术研究院 基于故障注入的芯片安全测试方法及系统
US9942039B1 (en) * 2016-09-16 2018-04-10 ISARA Corporation Applying modular reductions in cryptographic protocols
US10320565B2 (en) 2017-02-28 2019-06-11 Certicom Corp. Generating an elliptic curve point in an elliptic curve cryptographic system
US10516541B2 (en) * 2017-09-13 2019-12-24 Nxp B.V. Nonce to message binding in digital signature generation
EP3461053A1 (en) * 2017-09-20 2019-03-27 Nagravision S.A. Fault attacks counter-measures for eddsa
US11308239B2 (en) * 2018-03-30 2022-04-19 Seagate Technology Llc Jitter attack protection circuit
US11075763B2 (en) * 2019-02-15 2021-07-27 International Business Machines Corporation Compute digital signature authentication sign with encrypted key instruction
US11303456B2 (en) 2019-02-15 2022-04-12 International Business Machines Corporation Compute digital signature authentication sign instruction
US11108567B2 (en) 2019-02-15 2021-08-31 International Business Machines Corporation Compute digital signature authentication verify instruction
EP3910872A1 (en) * 2020-05-15 2021-11-17 Cysec SA Parallel friendly variant of sphincs+ signature algorithm
US11018657B1 (en) 2020-12-28 2021-05-25 Nxp Usa, Inc. Clock glitch alerting circuit
CN114844650B (zh) * 2022-05-24 2023-12-01 北京宏思电子技术有限责任公司 一种设备签名方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JP2002217898A (ja) * 2001-01-17 2002-08-02 Toyo Commun Equip Co Ltd 擬似乱数生成システム
JP2007325219A (ja) * 2006-06-05 2007-12-13 Sony Corp 暗号処理システムおよび暗号処理装置
US20090006800A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Configurable memory system and method for providing atomic counting operations in a memory device
JP2009003933A (ja) * 2007-06-20 2009-01-08 Intel Corp 不揮発性メモリにおけるデータの耐故障的な暗号化保護、完全性保護、及びアンチリプレイ保護のための方法、システム及び装置
WO2011120125A1 (en) * 2010-03-31 2011-10-06 Irdeto Canada Corporation System and method for protecting cryptographic assets from a white-box attack

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE325478T1 (de) 1998-01-02 2006-06-15 Cryptography Res Inc Leckresistentes kryptographisches verfahren und vorrichtung
DE69939254D1 (de) * 1999-06-22 2008-09-18 Hitachi Ltd Kryptografisches Gerät und Verfahren
KR100811419B1 (ko) * 2000-12-07 2008-03-07 주식회사 케이티 공개키 암호화를 이용하는 인증 프로토콜에서의서비스거부공격에 대한 방어 방법
US8233619B2 (en) * 2006-06-07 2012-07-31 Stmicroelectronics S.R.L. Implementation of AES encryption circuitry with CCM
US20100098247A1 (en) * 2008-10-20 2010-04-22 Nokia Corporation Method, Apparatus And Computer Program Product For Generating An Encryption Key And An Authentication Code Key Utilizing A Generic Key Counter
US8386800B2 (en) * 2009-12-04 2013-02-26 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US8819437B2 (en) * 2010-09-30 2014-08-26 Microsoft Corporation Cryptographic device that binds an additional authentication factor to multiple identities
US8644510B2 (en) * 2011-05-11 2014-02-04 Alcatel Lucent Discovery of security associations for key management relying on public keys

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JP2002217898A (ja) * 2001-01-17 2002-08-02 Toyo Commun Equip Co Ltd 擬似乱数生成システム
JP2007325219A (ja) * 2006-06-05 2007-12-13 Sony Corp 暗号処理システムおよび暗号処理装置
JP2009003933A (ja) * 2007-06-20 2009-01-08 Intel Corp 不揮発性メモリにおけるデータの耐故障的な暗号化保護、完全性保護、及びアンチリプレイ保護のための方法、システム及び装置
US20090006800A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Configurable memory system and method for providing atomic counting operations in a memory device
WO2011120125A1 (en) * 2010-03-31 2011-10-06 Irdeto Canada Corporation System and method for protecting cryptographic assets from a white-box attack

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
T. PORNIN: "Deterministic Usage of DSA and ECDSA Digital Signature Algorithms", INTERNET ENGINEERING TASK FORCE INTERNET-DRAFT, vol. draft-pornin-deterministic-dsa-01, JPN5015010975, 27 August 2012 (2012-08-27), pages 1 - 79, ISSN: 0003675937 *
宇根 正志: "デジタル署名生成用秘密鍵の漏洩を巡る問題とその対策", 日本銀行金融研究所ディスカッション・ペーパー・シリーズ(2002年収録分) [ONLINE], vol. No.2002−J−32, JPN6017042192, 27 December 2002 (2002-12-27), JP, pages 7 - 16, ISSN: 0003809302 *

Also Published As

Publication number Publication date
JP6366595B2 (ja) 2018-08-01
US9571289B2 (en) 2017-02-14
EP2918037A1 (en) 2015-09-16
US20150288524A1 (en) 2015-10-08
WO2014075000A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
JP6366595B2 (ja) 耐グリッチ性暗号離散対数ベースの署名のための方法及びシステム
US11797683B2 (en) Security chip with resistance to external monitoring attacks
US8850221B2 (en) Protection against side channel attacks with an integrity check
TWI434565B (zh) 密鑰保護機制
US20010002486A1 (en) Leak-resistant cryptographic method and apparatus
US20080104402A1 (en) Countermeasure against fault-based attack on RSA signature verification
US20200119918A1 (en) Elliptic curve point multiplication device and method in a white-box context
CN110855667B (zh) 一种区块链加密方法、装置及系统
JP2011530093A (ja) 累乗法による暗号化を保護する解決策
JP4386766B2 (ja) データ処理装置における誤り検出
Fahr The Effects of Side-Channel Attacks on Post-Quantum Cryptography: Influencing FrodoKEM Key Generation Using the Rowhammer Exploit
Chari et al. Designing a side channel resistant random number generator

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180125

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: 20180604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180703

R150 Certificate of patent or registration of utility model

Ref document number: 6366595

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250