(57)【要約】  電子デバイスをフォールト攻撃から保護するためのシステム、方法、および、命令をコンピュータ可読記憶媒体が有する。この技術は、べき指数ｄから半分のサイズの２つのべき指数ｄｐおよびｄｑを決定し、底ｍを、底ｍから決定される２つのサブ底ｍｐおよびｍｑに分割し、各繰り返し／‘について、ｄｐおよびｄｑのｉ番目のビットの値に応じて、アキュムレータＡにｍ、ｍｐ、ｍｑまたは１を繰り返し乗算することによって解読結果Ｓを反復計算するように、電子デバイスを操作することを含む。その他のシステムおよび方法が開示される。
2017526981.tif 000002
【特許請求の範囲】
【請求項１】
べき乗演算Ｘを有する暗号解読操作を行うように暗号装置を操作するための方法であって、演算がフォールト攻撃にさらされたときに、べき乗演算Ｘに関する情報の露見から装置を保護し、方法が、
べき乗演算Ｓ＝ｍｄ  ｍｏｄ  ｎと等価な暗号操作を行う対象であるメッセージｍを受け取り、
べき指数ｄから半分のサイズの２つのべき指数を決定し、
底ｍを、底ｍから決定される２つのサブ底ｍｐおよびｍｑに分割し、
各繰り返しｉについて、ｄｐおよびｄｑのｉ番目のビットの値に応じて、アキュムレータＡにｍ、ｍｐ、ｍｑまたは１を繰り返し乗算することによって、Ｓを反復計算し、
アキュムレータＡの最終値を値Ｓとして返し、
演算から得られた値Ｓを使用して暗号操作を完了することによって、
べき乗と等価な結果を生成することを含む、方法。
【請求項２】
半分のサイズの２つのべき指数が、ｄｐ＝ｄ  ｍｏｄ  （ｐ−１）かつｄｑ＝ｄ  ｍｏｄ  （ｑ−１）であるようなｄｐおよびｄｑであって、ｐおよびｑが、ｎ＝ｐｑであるような素数である、請求項１に記載の方法。
【請求項３】
ｍｐ＝１＋ｑ＊ｉｑ＊（ｍ−１）  ｍｏｄ  ｎかつ
ｍｑ＝１＋（１−ｑ＊ｉｑ）＊（ｍ−１）  ｍｏｄ  ｎであって、
ｉｑ＝ｑ−１  ｍｏｄ  ｐである、請求項１または２に記載の方法。
【請求項４】
ｄｐおよびｄｑが０からｋによりインデックス付けされたビットを有し、繰り返しが、計算：
Ａ＝Ａ＊Ａ  ｍｏｄ  ｎ
ＩＦ  （ｄｐｉ＝０  ＆＆  ｄｑｉ＝０）
Ａ＝Ａ＊１  ｍｏｄ  ｎ
ＩＦ  （ｄｐｉ＝１  ＆＆  ｄｑｉ＝０）
Ａ＝Ａ＊ｍｐ  ｍｏｄ  ｎ
ＩＦ  （ｄｐｉ＝０  ＆＆  ｄｑｉ＝１）
Ａ＝Ａ＊ｍｑ  ｍｏｄ  ｎ
ＩＦ  （ｄｐｉ＝１  ＆＆  ｄｑｉ＝１）
Ａ＝Ａ＊ｍ  ｍｏｄ  ｎを
０からｋまで行う繰り返しである、請求項１から３のいずれか一項に記載の方法。
【請求項５】
フォールト攻撃から保護される電子デバイスであって、中央処理ユニット、メモリ、および命令ストレージを備え、請求項１から４に記載のいずれか一項の方法を中央処理ユニットに実行させる命令を命令ストレージが含む、電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に電子暗号技術に関し、具体的には、連立べき乗技法を使用する乗算マスクを使用することによって、サイドチャネル攻撃からセキュリティデバイスを保護することに関する。
【背景技術】
【０００２】
電子的な通信および商業は強力なツールだが、危険でもある。インターネットなど、広範囲でネットワーク技術が利用可能なことにより、通信および商業のためのオンラインツールがますます多く利用されるようになっている。通信文または商業のどちらの形であっても、重要なトランザクションを行うにはコンピュータおよびコンピュータネットワークを使用すると簡単または迅速になることに気付くユーザが年々増加している。しかし、電子トランザクションのセキュリティがそのトランザクションに参加する権利を持たない第三者による傍受を介して危険にさらされるという、リスクが常に存在する。悪意の第三者が、本来はプライベートなトランザクションおよびデータへアクセスした場合、経済的損失、プライバシー損失、さらには物理的安全性損失のリスクが存在する。電子トランザクションおよびデータのプライバシーに対する侵害を防ぐために採用される１つの機構が、暗号である。
【０００３】
暗号は、第三者の存在下で数学的技法を使用してメッセージを秘匿するための技術であり、メッセージは、メッセージの受信者および／または送信者のみが知るはずの秘密鍵を使用してのみ解読可能なように暗号化される。
【０００４】
暗号アルゴリズムは入力および出力を有する。暗号化の場合、入力は、「平文」で書かれた保護対象のメッセージである。この平文メッセージは暗号アルゴリズムで処理されて、「暗号文」、つまり出力を生成する。暗号文を生成するために、暗号アルゴリズムは、秘密鍵の使用を含む一定の数学演算を行う。鍵は、例えば送信者と受信者の間の共有秘密鍵であってもよいし、または、受信者が保有するプライベート鍵でもよい。
【０００５】
よく使用される暗号技法の１つにＲＳＡアルゴリズムがあり、その名前は、発明者であるＲｉｖｅｓｔ、Ｓｈａｍｉｒ、およびＡｄｅｌｍａｎにちなむ。安全性の高い暗号文を得るために、ＲＳＡアルゴリズムは、大きな整数の因数分解が困難であることに依存する。あるユーザが、ほぼ同じサイズの２つの大きな素数をランダムに選択し、その２つの数を乗算することによって、公開鍵を作成する。その結果、そのユーザの「公開鍵」が得られ、ユーザはそれを公開して、それにより他のエンティティがそのユーザに代わってメッセージを暗号化することができるようにしてもよい。「公開鍵」は公開されており、それを使用して誰もがメッセージを暗号化することができるが、暗号化されたメッセージは、対応する「プライベート鍵」を使用してのみ解読することができ、この鍵は事実上、公開鍵を生成するために使用された２つの素数から成る。したがって、ＲＳＡアルゴリズムにより得られるセキュリティにとって、プライベート鍵が秘密に保たれ、ＲＳＡ暗号化されたメッセージのセキュリティを破ろうとする第三者に見つけられないことが非常に重要である。
【０００６】
ＲＳＡアルゴリズムの詳細は本明細書の範囲外であるが、本明細書では考察の目的で、このアルゴリズムを、メッセージＭを暗号化して暗号文Ｃにすること、および、暗号文Ｃを解読してメッセージＭへ戻すことの、２つの相補的な計算に還元することができる。公開鍵は、２つの大きな素数ｐおよびｑから算出される。ｐとｑから、数ｎ＝ｐｑが算出され、ｎは、プライベート鍵と公開鍵の両方の、法（モジュラス）である。さらに、ｐとｑから公開鍵のべき指数ｅが計算される。
【０００７】
１＜ｅ＜φ（ｎ）、かつ（ｅ，φ（ｎ））の最大公約数が１、すなわちｅとφ（ｎ）が互いに素であるようにｅを選択する。ここで、ｎ＝ｐｑおよびφ（ｎ）はオイラーのトーシェント関数である。
【０００８】
よって、公開鍵は１対の整数（ｎ，ｅ）から成る。
【０００９】
対応するプライベート鍵は１対の整数（ｎ，ｄ）から成り、ｄ≡ｅ−１（ｍｏｄ  φ（ｎ））である。ここで、φ（ｎ）はオイラーのトーシェント関数である。
【００１０】
公開鍵（ｎ，ｅ）を使用して、次の式によってメッセージＭが暗号文Ｃに暗号化される。
Ｃ＝Ｍｅ  ｍｏｄ  ｎ
【００１１】
対応するプライベート鍵（ｎ，ｄ）を使用して、次の式によって暗号文ＣからメッセージＭが回復され、解読される。
Ｍ＝Ｃｄ（ｍｏｄ  ｎ）
【００１２】
また、ＲＳＡを使用してメッセージＭに暗号署名を行い、署名付きメッセージＳ、すなわち次の式のメッセージにすることもできる。
Ｓ＝Ｍｄ（ｍｏｄ  ｎ）
【００１３】
大きな整数のべき乗は高コストな計算なので、通常、これらの計算は直接には行われない。より効率的な、小さい整数のべき乗を伴う計算では、中国剰余定理を使用する。詳細には触れないが、中国剰余定理の手法は、次のべき乗剰余を含む。
Ｓｐ＝Ｍｐｄｐ  ｍｏｄ  ｐ
Ｓｑ＝Ｍｑｄｐ  ｍｏｄ  ｑ
ここで、ｄｐ＝ｄ    ｍｏｄ  （ｐ−１）かつｄｑ＝ｄ    ｍｏｄ  （ｑ−１）であり、
Ｍｐ＝Ｍ  ｍｏｄ  ｐかつＭｑ＝Ｍ  ｍｏｄ  ｑである。
【００１４】
ＲＳＡ−ＣＲＴ署名の計算は、次の３つの主要ステップで構成される。
−  Ｓｐの計算（計算の約４５％）
−  Ｓｑの計算（計算の約４５％）
−  ＳｐおよびＳｑからＳを再結合（計算の約１０％）
【００１５】
サイドチャネル攻撃は、暗号計算を行うデバイスのプログラムタイミング、電力消費、および／または電子的放射を利用する。デバイスの挙動（タイミング、電力消費、および電子的放射）は変動し、暗号アルゴリズムで処理されるプログラムおよびデータに直接依存する。攻撃者は、これらの変動を利用して、機密データを推察し、その結果、プライベート鍵を回復することもできる。
【００１６】
フォールト攻撃という名前は、計算が行われている間に故障（フォールト）を作り出し、その故障により生まれた結果を利用して秘密鍵を推定する手法に由来する。一般に、故障を注入するには、故障注入に最も成功しやすい瞬間を決定することを含む事前のステップが必要である。この事前のステップは通常、電力または電子的放射トレースの観察を通したプログラムのリバースエンジニアリングによって行われる。ＲＳＡ−ＣＲＴは特にフォールト攻撃に対して弱く、その理由は、ＳｐまたはＳｑのどちらかの計算のみを妨害するだけで、侵入者はプライベート鍵を推定することができ、どちらにしても、故障効果が引き起こされるからである。さらに、ＳｐまたはＳｑを計算する機密ステップは通常、電力トレースで簡単に特定できるので、これらの２つのステップ中に故障を誘発させるための設定を比較的簡単に行うことができる。ＳｐおよびＳｑは全体署名のそれぞれ約４５％という大きな部分をプロセスで占めるので、どちらかの計算を妨害するための時間は十分ある。よって、ＳｐとＳｑのどちらかの計算を妨害する故障によって、プライベート鍵の素因数を無許可で回復することが可能になり得る。
【００１７】
フォールト攻撃からの防御に使用される機構の１つは、演算中に故障が導入されるのを確実に防ぐために、署名操作を２回行うことである。そのような操作を２回行えば、その対策は高費用になることがある。
【００１８】
その他の従来技法には、Ｓｈａｍｉｒ（Ｓｈａｍｉｒ、米国特許第５９９１４１４号、「Ｍｅｔｈｏｄ  ａｎｄ  ａｐｐａｒａｔｕｓ  ｆｏｒ  ｐｒｏｔｅｃｔｉｎｇ  ｐｕｂｌｉｃ  ｋｅｙ  ｓｃｈｅｍｅｓ  ｆｒｏｍ  ｔｉｍｉｎｇ  ａｎｄ  ｆａｕｌｔ  ａｔｔａｃｋｓ」）、Ａｕｍｕｌｌｅｒ（Ａｕｍｕｌｌｅｒら、「Ｃｏｎｃｒｅｔｅ  ｒｅｓｕｌｔｓ  ａｎｄ  ｐｒａｃｔｉｃａｌ  ｃｏｕｎｔｅｒｍｅａｓｕｒｅｓ，  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ」−ＣＨＥＳ  ２００２：４ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ、Ｖｏｌｕｍｅ  ４）、Ｇｉｒａｕｄ（Ｇｉｒａｕｄ，Ｃ．、「Ａｎ  ＲＳＡ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｒｅｓｉｓｔａｎｔ  ｔｏ  ｆａｕｌｔ  ａｔｔａｃｋｓ  ａｎｄ  ｔｏ  ｓｉｍｐｌｅ  ｐｏｗｅｒ  ａｎａｌｙｓｉｓ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ  （Ｖｏｌｕｍｅ：５５、Ｉｓｓｕｅ：９）、２００６年９月）、およびＶｉｇｉｌａｎｔ（「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ」−ＣＨＥＳ  ２００８、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  Ｖｏｌｕｍｅ  ５１５４、２００８年、１３０−１４５頁）がある。
【００１９】
これらの従来技術の技法は２つのタイプに分類できる。
−  Ｓｈａｍｉｒの技法はＡｕｍｕｌｌｅｒおよびＶｉｇｉｌａｎｔの技法の元となった技法であり、べき乗の前に、法に小さな乱数を乗算することを含む。この新しい数を法としてべき乗が行われ、べき乗の後に、この小さな乱数を法として、いくらかの無矛盾性チェックを行うことができる。再結合の後に、全体的な無矛盾性チェックが行われる。全体的な無矛盾性チェックの結果が正常でない場合は、フォールト攻撃が検出されたことになる。
−  Ｇｉｒａｕｄの技法は、モンゴメリ・ラダーのべき乗アルゴリズムの使用を含み、このアルゴリズムは、Ｘｙ  ｍｏｄ  Ｚを計算するとき、（Ｘ（ｙ−１）  ｍｏｄ  Ｚ，  Ｘｙ  ｍｏｄ  Ｚ）を出力する。
【００２０】
これらの従来の技法に共通することは、Ｇｉｒａｕｄの技法を除き、どの技法も、何らかの確率で故障を検知するということである。しかし、Ｇｉｒａｕｄの技法には、実装に大量のＲＡＭメモリを必要とするという短所がある。さらに、これらの技法は、Ｓｐの計算、Ｓｑの計算、および再結合という３ステップ構造を保つ。３つのステップがあることにより、攻撃者に、フォールト攻撃をセットアップする機会が複数回与えられる。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】米国特許第５９９１４１４号明細書
【非特許文献】
【００２２】
【非特許文献１】Ａｕｍｕｌｌｅｒら、「Ｃｏｎｃｒｅｔｅ  ｒｅｓｕｌｔｓ  ａｎｄ  ｐｒａｃｔｉｃａｌ  ｃｏｕｎｔｅｒｍｅａｓｕｒｅｓ，  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ」−ＣＨＥＳ  ２００２：４ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ、Ｖｏｌｕｍｅ  ４
【非特許文献２】Ｇｉｒａｕｄ，Ｃ．、「Ａｎ  ＲＳＡ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｒｅｓｉｓｔａｎｔ  ｔｏ  ｆａｕｌｔ  ａｔｔａｃｋｓ  ａｎｄ  ｔｏ  ｓｉｍｐｌｅ  ｐｏｗｅｒ  ａｎａｌｙｓｉｓ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ  （Ｖｏｌｕｍｅ：５５、Ｉｓｓｕｅ：９）、２００６年９月
【非特許文献３】Ｖｉｇｉｌａｎｔ、「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ」−ＣＨＥＳ  ２００８、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  Ｖｏｌｕｍｅ  ５１５４、２００８年、１３０−１４５頁
【発明の概要】
【発明が解決しようとする課題】
【００２３】
上記から、ホストコンピュータに接続されたスマートカードなどのポータブルセキュリティデバイスが、計算の効率が高く、過剰に大きなレジスタまたは他のストレージを必要とせず、フォールト攻撃から保護される暗号サービスの能力を提供できる安全な機構を提供する、改善された技術への需要がなおも存在することが明らかである。
【図面の簡単な説明】
【００２４】
【図１】１つまたは複数のサーバへのネットワークを介した接続を通して暗号サービスを行うために、例えばスマートカードなどのポータブルセキュリティデバイスが接続されたホストコンピュータの概略図である。
【図２】ポータブルセキュリティデバイスの概略図である。
【図３】図２のポータブルセキュリティデバイスのメモリに記憶されたプログラムの概略図である。
【図４】図３に示されるポータブルセキュリティデバイスのメモリに記憶されてもよく、べき乗演算を含む解読を行う、従来技術の暗号モジュールのプログラムリスティングの概略図である。
【図５】常時平方乗算アルゴリズムに従い、べき乗剰余を使用して、半分のサイズの要素で２つのべき乗演算すなわちＳｐ＝（Ｍｄｐ）  ｍｏｄ  ｐおよびＳｑ＝（Ｍｄｑ）  ｍｏｄ  ｑを行う、暗号解読操作を行うための従来技術の方法を示す図である。
【図６】図４および図５のアルゴリズムと同じ鍵材料を使用しながらも、好ましい実施形態によって、べき乗をただ１回行うだけで解読を行う、半分のサイズの要素を使用する修正された解読アルゴリズムを実装する、暗号モジュールを示す図である。
【発明を実施するための形態】
【００２５】
本発明の実施形態の下記の詳細な説明では添付図面を参照し、図面には、説明の目的で、本発明が実践されてもよい特定の実施形態の例が示される。これらの実施形態は、当業者が本発明を実施することを可能にするために十分詳細に説明される。本発明の様々な実施形態はそれぞれ異なっているが、必ずしも互いに排他的ではないことが理解される。例えば、本明細書で一実施形態に関連して記載される具体的な特徴、構造、または特性が、本発明の範囲を逸脱することなく他の実施形態の中に実装されてもよい。加えて、開示される各実施形態の中の個々の要素の位置または配置が、本発明の趣旨および範囲を逸脱することなく修正されてもよいことが理解される。下記の詳細説明は、したがって、制限的な意味に解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲のみによって定められ、特許請求の範囲を与えられる均等物の全範囲とともに適切に解釈される。図面において、複数の図を通して、同様の数字は同じまたは類似の機能を指す。
【００２６】
本発明の一実施形態では、スマートカードに格納されたプライベート鍵を使用して、差分電力解析攻撃のリスクを効率的に減少させる様式で、文書に電子署名を行うため、または暗号化された文書もしくはメッセージを解読するために使用するように、スマートカードまたは他のポータブルセキュリティデバイスの使用を可能にする技術が提供される。
【００２７】
スマートカードは、内蔵されたマイクロプロセッサおよび安全なストレージを有するプラスティック製カードである。このカードはポータブル、安全、かつ耐タンパーである。スマートカードは、遠隔通信、銀行業務、商業、および住民基本台帳を含む多くの分野にセキュリティサービスを提供する。スマートカードは、そのスマートカードをスマートカードリーダに接続する電気コネクタを有するクレジットカード形状のカード、スマートカードが内蔵されたＵＳＢトークン、および、携帯電話およびタブレットデバイス内で使用するためのＳＩＭカードなどの、様々な形をとることができる。本明細書では、スマートカードは、本明細書に記載される技術の実装に使用されてもよいポータブルセキュリティデバイスの例として使用される。ポータブルセキュリティデバイスの他の例には、スマートメモリカード、フラッシュメモリなどが含まれる。好ましい一実施形態では、ポータブルセキュリティデバイスは、プロセッサ、プログラムおよびデータを記憶するためのメモリ、ならびに、そのデバイスを比較的タンパープルーフにするための、いくらかのセキュリティ機能を有する。それらのデバイスの例として、本明細書ではスマートカードを使用する。
【００２８】
本明細書に記載される暗号計算のマスキングの機構は、暗号計算を行うために使用されるスマートカードまたは他のポータブルセキュリティトークンにおいて有利に使用されるが、同じ機構はまた、他の暗号プロセッサとともに使用され得る。よって、本明細書では、スマートカードを説明の目的にのみ使用する。
【００２９】
デジタル署名およびその他の暗号は、スマートカードが提供する機能の例である。スマートカードは、安全なストレージ内にプライベート鍵または共有秘密鍵を格納し、暗号操作を行って、所与の入力にデジタル署名を生成するか、または、所与の入力を解読する。スマートカードは、パーソナルコンピュータ（ＰＣ）、携帯電話、タブレットデバイス、または銀行業務端末などのホストデバイスとともに動作する。ＥメールクライアントまたはウェブブラウザなどのＰＣアプリケーションは、通常、スマートカードを使用して文書への署名、文書の暗号化または解読を行う。暗号操作は、ユーザ認証のためのチャレンジレスポンス機構の一部であってもよい。ＰＣアプリケーションとスマートカードは、ミドルウェアと呼ばれる、スマートカードと通信するように指定された何らかの暗号ＡＰＩを通して対話する。このシナリオでは、スマートカードはＰＣにローカルでサービスを提供する。
【００３０】
図１は、例えばスマートカードなどのポータブルセキュリティデバイス１０９とともにホストコンピュータ１０３を１つまたは複数のリモートサーバ１１３に接続するネットワーク１１１の概略図である。ホストコンピュータ１０３は、ウェブブラウザのウェブブラウザウィンドウ１０５を介してサーバ１１３の１つと対話するユーザ１０１によって操作される。図１に示されるシナリオ例では、スマートカード１０９は、例えば文書への暗号署名、信頼できる相手１１３から受信したメッセージの解読、またはチャレンジレスポンス認証機構の一部として暗号操作を行うために、ユーザ１０１に代わって暗号操作を提供する。
【００３１】
図１には、暗号が重要な役割を果たし得る１つのシナリオが示されているが、暗号には他にも多くの重要な用途がある。よって、本明細書に記載される技術の適用例は、図１に示される用途の例に限定されない。
【００３２】
図２は、例えばスマートカードなどのポータブルセキュリティデバイス１０９の概略図である。ポータブルセキュリティデバイス１０９は、バス２０２を介してランダムアクセスメモリ（ＲＡＭ）２０３、読み出し専用メモリ（ＲＯＭ）２０４、および不揮発性メモリ（ＮＶＭ）２０５に接続されたプロセッサ２０１を含んでもよい。ポータブルセキュリティデバイス１０９は、プロセッサ２０１を、通常これもバス２０２を介して、コネクタ２１１に接続するための入出力インタフェース２０７をさらに含んでおり、そのコネクタによってポータブルセキュリティデバイス１０９がホストコンピュータ１０３に接続されてもよい。
【００３３】
代替実施形態では、ホストコンピュータ１０３とポータブルセキュリティデバイス１０９の間の接続は、例えば近距離通信（ＮＦＣ）またはその他のラジオ波もしくはマイクロ波通信技術を使用した、無線式である。
【００３４】
ＮＶＭ２０５および／またはＲＯＭ２０４は、図３に示されるように、コンピュータプログラム３０１を含んでもよい。本明細書では、コンピュータプログラム３０１はＲＯＭ２０４またはＮＶＭ２０５にすべて同一場所で配置されていることを示しているが、実践ではそのような制限はなく、プログラムが複数のメモリにわたり分散してもよいし、さらにはＲＡＭ２０３に一時的にインストールされてもよい。さらに、ポータブルセキュリティデバイス１０９は複数のＲＯＭまたはＮＶＭを含んでもよい。プログラム３０１は、ポータブルセキュリティデバイス１０９にロードされたアプリケーションプログラム（複数）ならびにオペレーティングシステムプログラムを含む。ＮＶＭ２０５またはＲＯＭ２０４はまた、プライベート鍵２０９または共有秘密鍵２１０などのプライベートデータを含有してもよく、データは基本形または導出された数量で記憶される。
【００３５】
ポータブルセキュリティデバイス１０９のプログラム３０１は、暗号モジュール２１３、ユーザ認証モジュール２１５、通信モジュール２１７、およびオペレーティングシステムＯＳ２１９を含んでもよい。
【００３６】
よって、ポータブルセキュリティデバイス１０９は、コネクタ２１１を介して文書またはメッセージを受け取ってもよい。プロセッサ２０１は、暗号モジュール２１３の命令を実行することによって、文書／メッセージにデジタル署名を行うか、または、文書／メッセージをプライベート鍵２０９または共有秘密鍵２１０を使用して解読してもよい。通信モジュール２１７を通して提供される機能を使用して、プロセッサ２０１はホストコンピュータ１０３との間で通信の受信および送信を行ってもよい。
【００３７】
図４は、暗号モジュール２１３の、従来技術の考えられる実装の概略である。暗号モジュール２１３は、１つまたは複数の関数、メソッド、またはルーチンを含み得る。図４に示されるように、暗号関数（）と呼ばれる１つの関数が考えられる。この関数は引数Ｍをとり、Ｍは署名または解読の対象となるメッセージである。暗号モジュール２１３で、標準的なＲＳＡの式４０１、すなわちＳ＝ｍＤ  ｍｏｄ  ｎを使用して署名Ｓが計算される。
【００３８】
別の従来技術の手法では、暗号操作を行うために中国剰余定理を使用して暗号関数（）を実装し、これには半分のサイズの要素にべき乗剰余計算４０１を行うことが含まれる。
【００３９】
当業者には理解されるように、この操作は、効率のために低いレベルの算術文に還元できる。Ｍｄｐ  ｍｏｄ  ｐを効率的に計算するための一般的な手法は、常時平方乗算（Ｓｑｕａｒｅ−ａｎｄ−ＭｕｌｔｉｐｌｙＡｌｗａｙｓ）アルゴリズムである。図５は、従来の常時平方乗算手順を示す暗号モジュール２１３’のプログラムリスティングであり、下記のとおりに定められる数量ｄｐ、ｄｑ、およびｉｑ（ステップ５０１）を使用して、Ｓｐ＝Ｍｄｐ  ｍｏｄ  ｐ（アルゴリズム４０１ａ）およびＳｑ＝Μｄｑ  ｍｏｄ  ｑ（アルゴリズム４０１ｂ）を計算する。
ｄｐ＝ｄ  ｍｏｄ  （ｐ−１）
ｄｑ＝ｄ  ｍｏｄ  （ｑ−１）
ｉｑ＝ｑ−１  ｍｏｄ  ｐ
ここで、ｄｐおよびｄｑは、次のバイナリ表現で記述される。
ｄｐ＝［ｄｐｎ−１，ｄｐｎ−２，．．．．，ｄｐ２，ｄｐ１，ｄｐ０］
かつ
ｄｑ＝［ｄｑｎ−１，ｄｑｎ−２，．．．，ｄｑ２，ｄｑ１，ｄｑ０］
【００４０】
次に、ステップ５０３で、Ｇａｒｎｅｒの式を使用してＳが計算され得る。
Ｓ＝Ｓｑ＋ｑ＊（ｉｑ＊（Ｓｐ−Ｓｑ）  ｍｏｄ  ｐ
【００４１】
図５のアルゴリズムは半分のサイズの要素を使用するので、図４のアルゴリズムよりもずっと効率的である。
【００４２】
本明細書で下記に記載される本発明の一実施形態によれば、暗号モジュール２１３’（図６）は図４および図５のべき乗アルゴリズムの修正版を使用し、これは、図５のアルゴリズムのように半分のサイズのべき指数を使用しながら、べき乗を１回だけ行う。この修正手法は、図５に示される。
【００４３】
図６は、半分のサイズのべき指数を使用しながらただ１回のべき乗を行って結果Ｓ＝ｍＤ  ｍｏｄ  ｎを計算する、修正版のべき乗剰余計算４０１ｃを示すプログラムリスティングであり、例えばポータブルセキュリティデバイス１０９の、例えばＲＯＭ２０４またはＮＶＭ２０５などのメモリに組み込まれた暗号モジュール２１３”の好ましい実施形態に使用される。べき乗計算４０１ｃは、中国剰余定理の別の使用法によってＳを計算する。
【００４４】
このアルゴリズムの入力は次のとおりである。
ｍ：解読されるメッセージ
ｑおよびｐ：乗算するとｎになる２つの大きな素数
【００４５】
べき乗計算４０１ｃは、３つの予備計算６０１を行うことによって開始する。
ｉｑ＝ｑ−１  ｍｏｄ  ｐ
ｍｑ＝１＋ｑ＊ｉｑ＊（ｍ−１）  ｍｏｄ  ｎ
ｍｐ＝１＋（１−ｑ＊ｉｑ）＊（ｍ−１）  ｍｏｄ  ｎ
【００４６】
モジュラ算術により、上記の計算から、次の関係が成り立つことが示され得る。
ｍｑ  ｍｏｄ  ｐ＝１
ｍｑ  ｍｏｄ  ｑ＝ｍ  ｍｏｄ  ｑ
ｍｐ  ｍｏｄ  ｑ＝１
ｍｐ  ｍｏｄ  ｐ＝ｍ  ｍｏｄ  ｐ
【００４７】
この計算は、数量ｄｐおよびｄｑも使用し、これらは上記の数量ｐおよびｑからそれぞれ次のように定まる。
ｄｐ＝ｄ  ｍｏｄ  （ｐ−１）
ｄｑ＝ｄ  ｍｏｄ  （ｑ−１）
【００４８】
ステップ６０３でアキュムレータ値Ａが１に初期化される。
【００４９】
次に、ｄｐのバイナリ表現ｄｐ＝［ｄｐ０，ｄｐ１，．．．．，ｄｐｋ−１，ｄｐｋ］およびｄｑ＝［ｄｑ０，ｄｑ１，．．．．，ｄｑｋ−１，ｄｑｋ］を使用して、ｄｐとｄｑの全ビットについて、アキュムレータＡを修正しながらＳが反復計算される（ループ６０５）。値Ａは、ｄｐｉとｄｑｉの各ビットの値に応じて下記のように更新される。
【００５０】
各繰り返しの始めに、ステップ６０７で、ＡがＡ＝Ａ＊Ａ  ｍｏｄ  ｎにセットされる。
【００５１】
値のペアｄｐｉとｄｑｉがとり得る値には、互いに排他的と考えられ得る４つの場合、ｄｐｉ＝０かつｄｑｉ＝０、ｄｐｉ＝１かつｄｑｉ＝０、ｄｐｉ＝０かつｄｑｉ＝１、および、ｄｐｉ＝１かつｄｑｉ＝１がある。
【００５２】
１つ目の場合（ｄｐｉ＝０かつｄｑｉ＝０）は、ステップ６０９で、ＡはＡ＝Ａ＊１  ｍｏｄ  ｎにセットされる。この演算は恒等演算であるからＡの値を変化させないので、実際の実装では、なにもしないことによりこのステップは迂回される。
【００５３】
２つ目の場合（ｄｐｉ＝１かつｄｑｉ＝０）は、ステップ６１１で、ＡはＡ＝Ａ＊ｍｐ  ｍｏｄ  ｎにセットされる。
【００５４】
３つ目の場合（ｄｐｉ＝０かつｄｑｉ＝１）は、ステップ６１３で、ＡはＡ＝Ａ＊ｍｑ  ｍｏｄ  ｎにセットされる。
【００５５】
４つ目の場合（ｄｐｉ＝１かつｄｑｉ＝１）は、ステップ６１５で、ＡはＡ＝Ａ＊ｍ  ｍｏｄ  ｎにセットされる。
【００５６】
最後に、ｄｐｉとｄｑｉの全ビットがループ６０５によって処理された後でＡに保持されている結果は値Ｓ＝ｍＤ  ｍｏｄ  ｎであり、ステップ６１７で署名付きメッセージＳとして呼び出し側ルーチンに返され得る。
【００５７】
べき乗の各繰り返しｉにおいて、アキュムレータＡはＳｉに等しく、次のとおりである。
Ｓｉ  ｍｏｄ  ｐ＝ｍ（ｄｐ０  ｄｐ１  ｄｐ２．．．ｄｐｉ）  ｍｏｄ  ｐ
Ｓｉ  ｍｏｄ  ｑ＝ｍ（ｄｑ０  ｄｑ１  ｄｑ２．．．ｄｑｉ）  ｍｏｄ  ｑ
【００５８】
これらの関係は、次の理由により真である。
−  ステップ６１５でｍを乗算するとき、ｎはｎ＝ｐｑと定められているので、アキュムレータの乗算Ａ＊ｍはモジュロｐ＊ｑをとられる。
−  ステップ６１１でｍｐを乗算するとき、その乗算は１  ｍｏｄｕｌｏ  ｑであるからアキュムレータの乗算Ａ＊ｍｐはＡ＊ｍ  ｍｏｄｕｌｏ  ｐに等しく、その結果、ｑに起因するＡの変化はない。
−  ステップ６１３でｍｑを乗算するとき、その乗算は１  ｍｏｄｕｌｏ  ｐであるから、アキュムレータの乗算Ａ＊ｍｑはＡ＊ｍ  ｍｏｄｕｌｏ  ｑに等しく、その結果、ｐに起因するＡの変化はない。
−  ステップ６０９で１を乗算するとき、乗算Ａ＊１の乗算はΑ＊１  ｍｏｄｕｌｏ  ｐ  ａｎｄ  ｑであり、その結果、モジュロｐまたはモジュロｑのどちらに起因する変化もない。
【００５９】
よって、最後の繰り返しの後、すなわちｉ＝ｋのとき、
Ｓｐ＝Ｓｋ  ｍｏｄ  ｐ＝ｍｄｐ  ｍｏｄ  ｐ
Ｓｑ＝Ｓｋ  ｍｏｄ  ｑ＝ｍｄｑ  ｍｏｄ  ｑ
【００６０】
言い換えれば、
Ｓｐ＝Ｓ  ｍｏｄ  ｐ
Ｓｑ＝Ｓ  ｍｏｄ  ｑ
したがって、
Ｓ＝Ｓｋ＝Ａである。
【００６１】
上記により、複数のべき乗をフォールト攻撃にさらすことなく、それにより、暗号化に使用された鍵材料の露見から保護しながら、半分のサイズのべき指数値を使用して非常に効率的な方法で署名付きメッセージＳを算出する機構が本明細書に提示されることは明白である。
【００６２】
前述した機構について、常時平方乗算技法を背景として説明してきた。この機構は、他のべき乗技法にも容易に適合される。
【００６３】
本発明の特定の実施形態について説明および図示してきたが、本発明はそのように記載および図示されたとおりの、特定の形または部分の構成に制限されない。本発明は、特許請求の範囲のみによって制限される。
【図１】
2017526981.tif 000003
【図２】
2017526981.tif 000004
【図３】
2017526981.tif 000005
【図４】
2017526981.tif 000006
【図５】
2017526981.tif 000007
【図６】
2017526981.tif 000008
【国際調査報告】
2017526981.tif 000009
2017526981.tif 000010