(57)【特許請求の範囲】
【請求項１】
ランダムに変化するデバイスクロック周期を暗号化動作中に生成するための装置であって、
入力クロックと、
前記入力クロックから入力クロック周期を受信し、かつ、前記ランダムに変化するデバイスクロック周期を生成するように構成されたクロック周期ランダマイザとを備え、
前記クロック周期ランダマイザは、
インバータ、抵抗器およびキャパシタを含む固定遅延発生器と、
可変遅延発生器とを含み、前記可変遅延発生器は、
遅延線と、
各々が前記遅延線に接続されたインバータおよび抵抗器と、
可変キャパシタと、
トリムコードに基づいて、前記可変キャパシタを前記遅延線に接続したり前記遅延線から切り離したり切り替えるように構成されたスイッチとを含み、
前記クロック周期ランダマイザは、前記固定遅延発生器および前記可変遅延発生器の前記遅延線に接続された論理ゲートをさらに含み、前記論理ゲートは、前記スイッチの動作に基づいて、ローからハイにまたはハイからローにクロック信号を変化させることによって前記ランダムに変化するデバイスクロック周期を生成するように構成される、装置。
【請求項２】
前記トリムコードは、それぞれトリムコードを含む一群のレジスタから選択される、請求項１に記載の装置。
【請求項３】
前記トリムコードの選択は、乱数または疑似乱数に基づく、請求項２に記載の装置。
【請求項４】
前記乱数または前記疑似乱数は、線形フィードバックシフトレジスタによって生成される、請求項３に記載の装置。
【請求項５】
前記入力クロック周期に基づいて同期的に前記トリムコードを前記スイッチに提供するように構成されたコントローラをさらに含む、請求項１〜４のいずれか１項に記載の装置。
【請求項６】
前記クロック周期ランダマイザはさらに、複数のスイッチおよび複数の可変キャパシタを含み、各々のトリムコードは、アルファ符号に基づいて前記複数の可変キャパシタに適用される、請求項１〜５のいずれか１項に記載の装置。
【請求項７】
前記クロック周期ランダマイザはさらに、複数のスイッチおよび複数の可変キャパシタを含み、各々のトリムコードは、二進重み付けに基づいて前記複数の可変キャパシタに適用される、請求項１〜５のいずれか１項に記載の装置。
【請求項８】
前記クロック周期ランダマイザはさらに、複数のスイッチおよび複数の可変キャパシタを含み、前記トリムコードは、アルファ符号に基づいて前記可変キャパシタに適用され、他のトリムコードは、二進重み付けに基づいて他の可変キャパシタに適用される、請求項１〜５のいずれか１項に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願の相互参照
本願は、２０１６年２月２３日に出願された米国仮特許出願番号第６２／２９８，８４２号に対する優先権を主張し、米国仮特許出願番号第６２／２９８，８４２号の開示全体は、引用によって本明細書に援用される。
【０００２】
背景
多くのコンピューティングシステムは、暗号化技術を用いて、エンティティ間での安全な通信を実現する。現在の暗号化システムは、通常、鍵に依拠しており、当該鍵のうちのいくつかは、セキュリティを維持するために外界から秘密にされなければならない。これらの鍵を内密に抽出するための多くのアプローチが提案され、実行されてきた。
【０００３】
暗号攻撃の２つのカテゴリは、サイドチャネル攻撃およびフォールト注入攻撃である。サイドチャネル攻撃では、攻撃者は、暗号アルゴリズムを実行しているデバイスを監視する。たとえば、実行中に、デバイスの電力消費、電磁放射および／またはアコースティックエミッションは、処理されるデータおよび実行される命令に関する情報を攻撃者に対して提供し得る。なぜなら、命令は、特定のデータに作用する際に特徴的なシグネチャを提供し得るからである。攻撃者がデバイスにアクセスして入力を繰返し変更すると、秘密鍵に関する情報を収集することができる。特定の暗号アルゴリズムおよびそのフォールト注入攻撃に対する脆弱性が分かると、攻撃者は、妥当な量の繰返しのみで暗号鍵を推測することができるようになるだろう。
【０００４】
フォールト注入攻撃では、攻撃者は、フォールトを注入して実行し、結果を監視する。フォールト注入は、フォールトを生じさせるために、電力供給を変化させること、デバイスのクロック周期を変化させること、温度を変化させること、または光、レーザ、Ｘ線もしくはイオンを使用することを含む。たとえば、電力供給を変化させることは、グリッチを生じさせて命令スキップを引き起こし得る。条件付き飛び越し命令をスキップすることにより、重要なセキュリティチェックが回避される恐れがある。クロックを変化させることは、データの読み違え（たとえば、メモリが適切な値をバスに提供する前にデータバスから値を読み取ってしまうこと）または命令ミス（たとえば、プロセッサが前の命令を完了し終える前に回路が命令を実行し始めること）を引き起こし得る。別の例では、ＲＡＭは、書き込みのための１つの温度許容度と読み取りのための別の温度許容度とを有し得るので、これら２つの温度許容度間の数字に温度を変化させることにより、どちらの温度許容度が高いかに応じて、デバイスは、データをＲＡＭに書き込むことができるがＲＡＭから読み取ることができない状態、またはその逆の状態になる。
【０００５】
暗号攻撃が秘密鍵をデバイスから抽出することができる場合、デバイスのセキュリティは損なわれることになる。したがって、攻撃プロセスをできる限り難しくすることが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
この概要は、本開示のいくつかの局面の基本的理解を提供するために概念一式を簡略化された形態で紹介するものである。この概要は、本開示の広範な概略ではなく、本開示の重要なまたは不可欠な要素を特定することを意図したものではなく、または本開示の範囲を描写することを意図したものでもない。この概要は、以下に記載される詳細な説明の前置きとして本開示の概念のうちのいくつかを提示しているに過ぎない。
【０００７】
本開示は、一般に、データのセキュリティを保護するための方法およびシステムに関する。より具体的には、本開示の局面は、クロック周期ランダム化を用いて暗号攻撃に対して保護することに関する。
【０００８】
一般に、本明細書に記載されている主題の一局面は、暗号化動作中にデバイスクロックをランダムに変化させる装置で実施可能であり、上記装置は、入力クロックと、クロック周期ランダマイザ（randomizer）とを備え、上記クロック周期ランダマイザは、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を発生させる。
【０００９】
少なくとも１つの実施形態では、上記クロック周期ランダマイザは、可変キャパシタを含む回路と、上記可変キャパシタを回路に接続したり回路から切り離したり切り替えるように構成されたスイッチとを含み、上記スイッチは、トリムコードによって制御され、上記回路は、上記スイッチの動作に基づいて、ローからハイにまたはハイからローにクロック信号を変化させるように構成される。
【００１０】
少なくとも１つの実施形態では、上記装置は、上記トリムコードを発生させるためのトリムコード発生器をさらに備え、上記トリムコード発生器は、乱数または疑似乱数を発生させるための乱数発生器を含む。
【００１１】
少なくとも１つの実施形態では、上記トリムコード発生器は、一群のレジスタを含み、各レジスタは、トリムコードを保持する。
【００１２】
少なくとも１つの実施形態では、上記トリムコード発生器は、線形フィードバックシフトレジスタを含む。
【００１３】
少なくとも１つの実施形態では、上記回路はさらに、インバータ、抵抗器およびキャパシタを含む固定遅延発生器と、インバータ、抵抗器および上記可変キャパシタを含む可変遅延発生器と、上記固定遅延発生器および上記可変遅延発生器に接続された論理ゲートとを含み、上記論理ゲートは、上記可変クロック周期を有する上記クロック信号を出力する。
【００１４】
少なくとも１つの実施形態では、上記クロック周期ランダマイザは、固定遅延を発生させる固定遅延発生器と、可変遅延を発生させる可変遅延発生器と、上記可変遅延発生器を制御するように構成されたトリムコード発生器とを含み、クロック信号は、上記固定遅延および上記可変遅延によって設定される可変周期を有する。
【００１５】
少なくとも１つの実施形態では、上記可変遅延発生器は、第１の遅延ユニットと第２の遅延ユニットとを含み、上記第１の遅延ユニットは、遅延を発生させるように構成された第１の回路と、上記第１の回路を回路に接続したり回路から切り離したり切り替えるように構成された第１のマルチプレクサとを含み、上記第１のマルチプレクサは、上記トリムコード発生器によって発生されるトリムコードによって制御され、上記第２の遅延ユニットは、遅延を発生させるように構成された第２の回路と、上記第２の回路を回路に接続したり回路から切り離したり切り替えるように構成された第２のマルチプレクサとを含み、上記第２のマルチプレクサは、上記トリムコード発生器によって発生されるトリムコードによって制御され、上記トリムコード発生器は、乱数または疑似乱数を発生させる乱数発生器を含む。
【００１６】
少なくとも１つの実施形態では、上記固定遅延は、上記可変遅延発生器の最小遅延に基づいて決定される。
【００１７】
少なくとも１つの実施形態では、上記固定遅延と上記可変遅延発生器の上記最小遅延との合計は、関連付けられたデバイスの最小クロック周期を満たす。
【００１８】
少なくとも１つの実施形態では、上記固定遅延と上記可変遅延発生器の上記最小遅延との合計の上界は、関連付けられたデバイスの予め定められた性能閾値を満たす。
【００１９】
少なくとも１つの実施形態では、上記クロック周期ランダマイザは、固定遅延を発生させる固定遅延発生器と、可変遅延を発生させる可変遅延発生器とを含み、上記可変遅延発生器は、底板を有するバラクタを含み、上記可変遅延は、上記バラクタの上記底板への電圧を変化させることによって発生され、クロック信号は、上記固定遅延および上記可変遅延によって設定される可変周期を有する。
【００２０】
少なくとも１つの実施形態では、上記クロック周期ランダマイザは、固定遅延を発生させる固定遅延発生器と、可変遅延を発生させる可変遅延発生器とを含み、上記可変遅延発生器は、上記可変遅延を発生させる位相補間器を含み、クロック信号は、上記固定遅延および上記可変遅延によって設定される可変周期を有する。
【００２１】
少なくとも１つの実施形態では、上記可変遅延発生器は、遅延を発生させるように構成された回路と、上記回路を回路に接続したり回路から切り離したり切り替えるように構成されたマルチプレクサとを含み、上記マルチプレクサは、上記トリムコード発生器によって発生されるトリムコードによって制御され、上記トリムコード発生器は、乱数または疑似乱数を発生させる乱数発生器を含む。
【００２２】
少なくとも１つの実施形態では、コントローラは、上記入力クロックに基づいて同期的に上記トリムコードを上記スイッチに提供する。
【００２３】
少なくとも１つの実施形態では、上記クロック周期ランダマイザは、デジタルアナログ変換器（digital to analog converter：ＤＡＣ）と、サイクルごとに変化する入力基準を受信する電圧レギュレータと、直列の２ｎ＋１個のインバータとを含み、上記インバータは、上記電圧レギュレータによって出力される信号によって駆動され、ｎは、ゼロよりも大きな整数である。
【００２４】
少なくとも１つの実施形態では、上記可変キャパシタは線形キャパシタである。
少なくとも１つの実施形態では、上記可変キャパシタは非線形キャパシタである。
【００２５】
少なくとも１つの実施形態では、上記クロック周期ランダマイザはさらに、複数のスイッチを含み、上記回路はさらに、複数の実質的に同一の可変キャパシタを含み、上記実質的に同一の可変キャパシタに適用されるトリムコードは、アルファ符号に基づく。
【００２６】
少なくとも１つの実施形態では、上記クロック周期ランダマイザはさらに、複数のスイッチを含み、上記回路はさらに、複数の可変キャパシタを含み、上記可変キャパシタに適用されるトリムコードは、二進法で重み付けされる。
【００２７】
少なくとも１つの実施形態では、上記クロック周期ランダマイザはさらに、複数のスイッチを含み、上記回路はさらに、第１の可変キャパシタと第２の可変キャパシタとを含み、上記第１の可変キャパシタに適用される第１のトリムコードは、二進法で重み付けされたトリムコードであり、上記第２の可変キャパシタに適用される第２のトリムコードは、アルファ符号に基づく。
【００２８】
一般に、本明細書に記載されている主題の一局面は、暗号攻撃に対して防御するために少なくとも暗号化動作中にデバイスのクロック信号の可変クロック周期を発生させる方法で実施可能であり、上記方法は、固定遅延発生器によって固定遅延を発生させるステップと、可変遅延発生器によって可変遅延を発生させるステップと、乱数発生器によって乱数または疑似乱数を発生させるステップと、上記乱数または上記疑似乱数に基づいて上記可変遅延の量を制御するステップと、上記固定遅延および上記可変遅延に基づいてクロック信号の可変周期を制御するステップと、少なくとも暗号化動作中に上記可変クロック周期で上記デバイスを駆動するステップとを備える。
【００２９】
少なくとも１つの実施形態では、上記固定遅延と上記可変遅延の最小量との合計は、関連付けられたデバイスの最小クロック周期以上である。
【００３０】
少なくとも１つの実施形態では、上記固定遅延と上記可変遅延の最大量との合計は、上記関連付けられたデバイスの予め定められた性能閾値以下である。
【００３１】
一般に、本明細書に記載されている主題の一局面は、暗号攻撃に対して防御するために、少なくとも暗号化動作中に、関連付けられたデバイスのクロックのクロック周期をランダム化する方法で実施可能であり、上記方法は、トリムコードセットを決定するステップを備え、上記セットは、少なくとも第１のトリムコードと第２のトリムコードとを含み、上記方法はさらに、物理的電子ハードウェアによって乱数または疑似乱数を発生させるステップと、上記乱数または上記疑似乱数に基づいて上記トリムコードセットから上記第１のトリムコードを選択するステップと、上記乱数または上記疑似乱数に基づいて上記トリムコードセットから上記第２のトリムコードを選択するステップと、上記第１のトリムコードを可変遅延発生器に提供するステップとを備え、上記可変遅延発生器は、上記トリムコードセットからのいずれかのトリムコードに基づいて動作する要素を含み、上記方法はさらに、上記第２のトリムコードを上記可変遅延発生器に提供するステップを備え、上記第１のトリムコードが上記可変遅延発生器に提供されるとき、上記関連付けられたデバイスのクロック周期は第１の時間であり、上記第２のトリムコードが上記可変遅延発生器に提供されるとき、上記関連付けられたデバイスのクロック周期は第２の時間であり、上記第１の時間は、上記第２の時間よりも長い。
【００３２】
少なくとも１つの実施形態では、上記可変遅延発生器は、最小遅延を有し、固定遅延発生器は、固定遅延を有し、上記固定遅延は、上記関連付けられたデバイスの上記クロック周期の長さに寄与し、上記固定遅延と上記可変遅延発生器の上記最小遅延との合計は、上記関連付けられたデバイスの最小クロック周期以上である。
【００３３】
少なくとも１つの実施形態では、上記固定遅延と上記可変遅延発生器の上記最小遅延との上記合計は、上記関連付けられたデバイスの予め定められた性能閾値以下である。
【００３４】
少なくとも１つの実施形態では、上記第１の時間は、上記第２の時間よりも少なくとも１％長い。
【００３５】
また、本明細書に開示されるプロセッサおよびメモリシステムのうちのいくつかまたは全ての実施形態は、上記の方法実施形態のうちのいくつかまたは全てを実施するように構成されてもよい。上記の方法のうちのいくつかまたは全ての実施形態は、光メモリまたは磁気メモリなどの非一時的なプロセッサ読取可能な記憶媒体上で実施される命令としても表わされてもよい。また、本開示のシステムは、代替的に、たとえば新標準暗号規格（Advanced Encryption Standard：ＡＥＳ）、セキュアハッシュアルゴリズム（Secure Hash Algorithm：ＳＨＡ）などの暗号化機能を実行する専用のハードウェアで実現されてもよい。
【００３６】
本開示の方法およびシステムの適用可能性のさらなる範囲は、以下に記載される詳細な説明から明らかになるであろう。しかし、本明細書に開示されている概念の精神および範囲内のさまざまな変更および変形がこの詳細な説明から当業者に明らかになるので、詳細な説明および具体的な例は、当該方法およびシステムの実施形態を示しているが、例として示されているに過ぎない、ということが理解されるべきである。
【００３７】
本開示のこれらのおよび他の目的、特徴および特性は、全てが本明細書の一部を構成する添付の特許請求の範囲および図面とともに以下の詳細な説明を検討することによって当業者により明らかになるであろう。
【図面の簡単な説明】
【００３８】
【図１】処理デバイスに対する従来の暗号攻撃の例を示すブロック図である。
【図２】本明細書に記載される１つ以上の実施形態に係る、クロック周期ランダム化を用いて暗号攻撃に対して防御する例示的な効果を示すブロック図である。
【図３】本明細書に記載される１つ以上の実施形態に係る、クロック周期ランダム化を用いて暗号攻撃に対して防御するための例示的なハイレベルシステムを示すブロック図である。
【図４】本明細書に記載される１つ以上の実施形態に係る、インバータ、可変キャパシタおよび論理ゲートの構成を含む、クロック周期ランダム化を発生させるための例示的なシステムを示す回路図である。
【図５】本明細書に記載される１つ以上の実施形態に係る、トリムコードを発生させるための例示的なシステムを示すブロック図である。
【図６】本明細書に記載される１つ以上の実施形態に係る、クロック周期ランダム化を発生させるための例示的な方法を示すフローチャートである。
【図７】本明細書に記載される１つ以上の実施形態に係る、同期ミラー遅延を含むクロック周期ランダム化を発生させるための例示的なシステムを示すブロック図である。
【図８】例示的な実施形態に係る、暗号攻撃に対して防御するために少なくとも暗号化動作中にデバイスクロック信号の可変クロック周期を発生させる方法を示すブロック図である。
【図９】例示的な実施形態に係る、暗号攻撃に対して防御するために、少なくとも暗号化動作中に、関連付けられたデバイスのクロックのクロック周期をランダム化する方法を示すブロック図である。
【図１０】少なくとも１つの実施形態に係る、回路に接続されたり回路から切り離されたりし得る一群の非線形キャパシタを示す回路図である。
【図１１】例示的な実施形態に係る、コントローラと基準電圧源と電圧レギュレータと直列の奇数個のインバータとを含む、クロック周期ランダム化を発生させるための例示的なシステムを示す回路図である。
【発明を実施するための形態】
【００３９】
本明細書における見出しは、便宜上のものであるに過ぎず、必ずしも本開示に記載されているものの範囲または意味に影響を及ぼさない。
【００４０】
理解を容易にするために、および便宜上、図中の同一の参照番号およびいかなる頭字語も、同一または同様の構造または機能を有する要素または動作を示すものとする。以下の詳細な説明の中で図面について詳細に説明する。
【００４１】
詳細な説明
ここで、本開示の方法およびシステムのさまざまな実施例および実施形態について説明する。以下の説明は、これらの実施例を完全に理解して説明することができるように具体的な詳細を提供している。しかし、これらの詳細のうちの多くが無くても本明細書に記載される１つ以上の実施形態を実施することができるということを当業者は理解するであろう。同様に、本開示の１つ以上の実施形態が本明細書に詳細に記載されていない他の特徴を含み得るということも当業者は理解するであろう。また、関連の説明を不必要に曖昧にすることを回避するために、いくつかの周知の構造または機能については以下で詳細に示しておらず、または説明していない。
【００４２】
上記のように、現在のコンピューティングシステムは、暗号化技術を用いて、異なるエンティティ間での安全な通信を提供し、実行される暗号化技術は、秘密鍵に依拠し得る。これらの秘密鍵に対して依拠していることにより、このようなシステムを攻撃して鍵を内密に抽出するためのさまざまな方法の開発が助長されてきた。
【００４３】
発明者等によって認識されるように、固定周期を有するクロックでデバイスが動作することが、サイドチャネル攻撃およびフォールト注入攻撃を含む暗号攻撃を行うことを容易にしている。デバイスのクロック周期をランダム化することにより、暗号攻撃がより難しくなる。たとえば、暗号鍵のビットの決定は、少なくとも部分的に、クロック周期の長さを把握することに基づくため、クロック周期のランダム化は、暗号攻撃をより難しくする。
【００４４】
図１は、処理デバイスに対して従来から行われてきた例示的な攻撃を示す。示されている例示的な構成１００では、プロセッサは、たとえば新標準暗号規格（ＡＥＳ）などの暗号アルゴリズムを実現するコードを実行している。プロセッサが連続的な命令Ｉ０，Ｉ１，Ｉ２などを実行すると、プロセッサは、実行されている命令と処理されているデータとの両方の関数である供給電流（ＩＤＤ）１１０を引き込む。別の例示的なシナリオでは、供給電流１１０は、専用のＡＥＳハードウェアが命令を実行した結果として引き込まれてもよい。このシグネチャを解析して当該シグネチャが異なる入力下でどのように変化するかを観察することによって、暗号鍵、または一般に攻撃者にとって関心のあるその他の値もしくはオブジェクトに関する情報を取得して、最終的に推測することが可能になり得る。解析は、電力供給ではなくデバイスの電磁放射（electromagnetic radiation：ＥＭＲ）またはアコースティックエミッションを測定することによって行われてもよい。このタイプのアプローチ（たとえば、デバイスの電力供給またはＥＭＲを解析すること）は、一般にサイドチャネル攻撃と呼ばれる。
【００４５】
別の種類の攻撃は、プロセッサに動作不良を起こさせることによって、動作中にデバイスを妨害するために、電力供給を操作したり、デバイスのクロック周期を変化させたり、温度を変化させたり、または光、レーザ、Ｘ線もしくはイオンを使用することによって、デバイスを混乱させることを狙いとしている。これらの攻撃は、一般にフォールト注入攻撃１２０と呼ばれ、プロセッサが分岐またはジャンプ命令を実行しているときなどの特定の時点で妨害することに依拠する。
【００４６】
上記のように、暗号攻撃がシステムまたはデバイスから暗号鍵を抽出することができる場合、システムまたはデバイスのセキュリティは損なわれることになる。
【００４７】
したがって、本開示の方法およびシステムは、デバイスまたはシステムを攻撃するプロセスをより難しくするように設計されている。本明細書に記載されるように、本開示の実施形態では、ランダム化されたクロック周期、疑似ランダム化されたクロック周期または可変クロック周期を利用して、暗号攻撃からデバイスを保護する。たとえば、サイドチャネル攻撃およびフォールト注入攻撃は、比較的一貫したクロック周期に依拠し得る。したがって、固定周期Ｐを有するクロックを用いる代わりに、本開示の方法およびシステムは、可変周期を有するクロックを提供するまたは含む。
【００４８】
例示的な実施形態では、クロックの可変周期は、Ｐ＋Ｒ×Ｄとして表わすことができ、Ｐは固定周期であり、Ｄは一定遅延であり、Ｒは乱数値または疑似乱数値である。例示的な実施形態では、Ｒは、たとえば間隔［０...１］における値であってもよい。例示的な実施形態では、Ｒの値は、あるクロックサイクルにおいて別のクロックサイクルと異なっていてもよい。別の例示的な実施形態では、Ｒは、各クロックサイクルによって変化してもよい。例示的な実施形態では、Ｒは、ｋ番目のクロックサイクルごとに変化してもよく、ｋは正の整数である。別の例示的な実施形態では、Ｒは、さまざまなクロックサイクルによって変化してもよいが、Ｒが変化するたびに、Ｒが変化するサイクル間に同一のサイクル数が存在している必要はない。
【００４９】
図２は、本明細書に記載される１つ以上の実施形態に係る、クロック周期ランダム化を用いて暗号攻撃に対して防御する例示的な効果を示す。図２におけるクロック周期は、上記のようにＰ＋Ｒ×Ｄの観点から定義することができる。しかし、クロック周期をランダム化することにより、暗号攻撃がより難しくなる。なぜなら、攻撃者は、Ｒが変化するたびにＲの予備知識を持つことはないからである。サイドチャネル攻撃の場合、攻撃者は、今回の測定値を事前の測定値と比較し得るが、対応するクロックサイクルの長さが分からなければ当該比較は上手くいかないであろう。攻撃が秘密鍵のビット値を求めるために反復プロセスを必要とする場合には、さらに困難になる。フォールト注入攻撃の場合、所与の暗号アルゴリズムに対する特定の攻撃は、特定の命令を実行する直前にフォールト注入を必要とし得る。攻撃が、時刻ｔｋで発生するｋ番目のクロックサイクルにおいて注入されるフォールトを必要とする場合、クロック周期のランダム化は、ｔｋがいつであるのか、またはどのような命令がｔｋで実行されるのかを判断することを難しくする。やはり、攻撃が複数回の反復を必要とする場合には、さらに困難になる。
【００５０】
図２では、サイドチャネル攻撃は、供給電流ＩＤＤ２１０を監視し得る。しかし、電力解析に基づくサイドチャネル攻撃は、測定時にどの命令が実行されているかに関する知識が減少することによって上手くいかなくなる。所与の（命令、データ）ペアセットについて電力（またはエミッション）が分かっていても、さまざまなペアのうちの１つのために一致を見つけることは、さまざまな時間窓とともにさまざまな時間歪曲要因（time warp factor）を試みることを含み得る。フォールト２２０を注入する時刻ｔｋを見つけるという問題もより難しくなる。
【００５１】
多くの他の使途および用途の中で、本開示の方法、装置およびシステムは、たとえばフォールト注入攻撃および／または差分サイドチャネル攻撃が懸念されるハードウェアセキュリティアプリケーションで使用されてもよい。サイドチャネル攻撃およびフォールト注入攻撃に対して防御するためのアプローチが存在しているが、当該アプローチのうちのいずれも、本開示の方法およびシステムにおいて提供される態様でのクロック周期ランダム化を提供しないまたは含まない。
【００５２】
本明細書では、「ランダムな」、「ランダム性」、「ランダム化」、「ランダムに」などを実現する実施形態は、当業者によって認識されるであろうように、「疑似ランダムな」、「疑似ランダム性」、「疑似ランダム化」、「疑似ランダムに」などを用いてそうされてもよい。
【００５３】
図３は、クロック周期ランダム化を用いて暗号攻撃に対して防御するための例示的なハイレベルシステム３００を示す。集積回路、チップまたはシステムオンチップなどのデバイス（図示せず）は、暗号化された通信などの暗号化動作を含む安全な動作を含む動作を提供する。デバイスは、動作を提供するために、入力クロック３６０によって駆動またはクロックされる。システム３００は、少なくとも安全な動作中にデバイスクロック速度をランダム化して、暗号攻撃から保護する。少なくとも１つの実施形態によれば、システム３００は、ｔＦＩＸＥＤ３１０を発生させる固定遅延発生器と、ｔＶＡＲ３２０を発生させる可変遅延発生器と、乱数発生器３３０とを備えるクロック周期ランダマイザ３５０を含み得る。例示的な実施形態では、ｔＶＡＲ３２０を発生させる可変遅延発生器は、制御可能な可変遅延発生器であってもよい。クロック周期ランダマイザ３５０には入力クロック３６０が提供される。少なくとも１つの実施形態では、ハイレベルシステム３００を統合することができるさらに大型のシステムまたはコンピューティングデバイスの設計中に確認されるごくわずかなジッタを除いて、入力クロック３６０は固定周期を有する。クロック周期ランダマイザ３５０は、システム３００が統合されるデバイスの可変クロック信号駆動動作速度である可変クロック３６５を出力する。
【００５４】
例示的な実施形態では、ｔＦＩＸＥＤ３１０を発生させる固定遅延発生器は、ｔＦＩＸＥＤ３１０の遅延を発生させる回路に含まれてもよい。例示的な実施形態では、ｔＶＡＲ３２０を発生させる可変遅延発生器は、ｔＶＡＲ３２０の遅延を発生させる回路に含まれてもよい。例示的な実施形態では、ｔＶＡＲ３２０を発生させる可変遅延発生器は、乱数発生器３３０の出力に基づいて制御されてもよく、当該出力は、乱数または疑似乱数である。
【００５５】
例示的な実施形態では、ｔＶＡＲ３２０を発生させる可変遅延発生器は、トリムコード発生器５００（図５）の出力に基づいて制御されてもよい。例示的な実施形態では、ｔＦＩＸＥＤ３１０を発生させる固定遅延発生器、ｔＶＡＲ３２０を発生させる可変遅延発生器、および乱数発生器は、接続されてもよい。
【００５６】
例示的な実施形態では、ｔＶＡＲ３２０を発生させる可変遅延発生器（図３）は、インバータ４３０ａ（図４）と、抵抗器４４５ａと、可変キャパシタ４４０ａとを含み得る。
【００５７】
例示的な実施形態では、ｔＦＩＸＥＤ３１０を発生させる固定遅延発生器（図３）は、キャパシタ４２０（図４）と、抵抗器４１５ａと、キャパシタ４２５ａとを含み得る。例示的な実施形態では、乱数発生器３３０は、トリムコード発生器５００（図５）の一部であってもよい。
【００５８】
例示的な実施形態では、ｔＦＩＸＥＤ３１０を発生させる固定遅延発生器（図３）は、ｔＦＩＸＥＤ発生器７１０（図７）であってもよい。例示的な実施形態では、ｔＶＡＲ３２０を発生させる可変遅延発生器は、タウ（τ）遅延発生器７２０と、ｔＶＡＲ３２０を発生させる可変遅延発生器を備える回路にタウ（τ）遅延発生器７２０を接続したり当該回路からタウ（τ）遅延発生器７２０を切り離したり切り替えるマルチプレクサとを含み得る。
【００５９】
例示的な実施形態では、入力クロック３６０（図３）は、ある長さの周期Ｐを有してもよい。（実際には、Ｐは、ゼロではないジッタ量を有するが、ハイレベルの説明のために、Ｐは、１つのクロックサイクルから次のクロックサイクルまで一貫していると見なすことができる。）例示的な実施形態では、出力可変クロック３６５は、ある長さの周期Ｐ＋Ｒ×Ｄを有してもよく、Ｒはランダム変数または疑似ランダム変数であり、Ｄは定数である。
【００６０】
デバイス内のシステム３００（図３）の適切な動作のために、固定遅延３１０は、少なくともデバイスがサポートできる最小周期（たとえば、最高周波数）であるべきである。可変遅延３２０は、何らかの最大値ｔＭＡＸによって有界であり得る。なお、ｔＭＡＸの値を大きくすることによって、サイドチャネル攻撃およびフォールト注入攻撃を上手くいきにくくし得るが、有効クロック周波数を低下させることによってシステム性能も低下し得る。少なくとも１つの実施形態によれば、可変遅延３２０は、アナログまたはデジタル制御信号によって設定される。可変遅延３２０（図３）の実現例はリングオシレータを含み得るが、他の実現例も可能である。システム３００は、それに対してセキュリティを提供するためにさまざまなデバイスの一部分であってもよく、またはさまざまなデバイスに組み込まれてもよく、このようなデバイスは、たとえばセキュリティ集積回路（セキュリティ「チップ」としても知られている）、システムオンチップ（「ＳｏＣ」としても知られている）、またはコンピューティングデバイスもしくは通信デバイスを含む。
【００６１】
乱数発生器３３０は、たとえばシステム３００がその一部分であるかまたは組み込まれるシステムまたはデバイスにおいて何らかのランダムパラメータまたはイベントを測定する真性乱数発生器（true random number generator：ＴＲＮＧ）、線形フィードバックシフトレジスタなどの疑似乱数発生器、それらの何らかの組み合わせ、またはランダム性もしくは疑似ランダム性を提供する何らかの他の実現例であってもよい。
【００６２】
本開示の１つ以上の実施形態によれば、システムの実現例の詳細は、図３に示される例示的なシステム３００のものとは異なっていてもよい。たとえば、可変遅延ｔＶＡＲ３２０のいずれかの実現例は、特定の最小遅延を有する。この最小遅延は、固定遅延ｔＦＩＸＥＤ３１０を設計する際に考慮され得る。
【００６３】
出力可変クロック３６５は、クロック周期ランダマイザが可変クロック周期を発生させるデバイスの最大周波数によって下に有界である。いくつかのデバイス、たとえば動的電圧スケーリングおよび／または動的周波数スケーリングを用いるデバイスでは、クロックの最大周波数は、それ自体が可変である。最大周波数は変化するので、出力可変クロック３６５の下界も変化する。したがって、可変周期がＰ＋Ｒ×Ｄとして表わされ、Ｒが間隔［０...１］における値である場合、Ｐは、クロック周期ランダマイザが可変クロック周期を発生させるデバイスの最大周波数によって下に有界である。
【００６４】
図４は、インバータ、可変キャパシタおよび論理ゲートの構成を含むクロック周期ランダム化を発生させるための例示的なシステム４００を示す。図４は、論理ゲート４１０と、抵抗器４１５ａ〜４１５ｄと、インバータ４２０ａ〜４２０ｄと、キャパシタ４２５ａ〜４２５ｄと、インバータ４３０ａ〜４３０ｄと、可変キャパシタ４４０ａ〜４４０ｄと、抵抗器４４５ａ〜４４５ｄと、クロック周期ランダマイザ４５０と、入力クロック４６０と、出力可変クロック４６５と、信号用接地４７０ａ〜４７０ｄと、信号用接地４７５ａ〜４７５ｄと、固定遅延線４８０と、可変遅延線４８５と、出力可変クロック線４８７と、コントローラ４９０とを含む。コントローラ４９０は、トリムコード発生器５００（図５）を備え得る。代替的に、コントローラ４９０は、トリムコード発生器５００に接続されて、トリムコード発生器５００から少なくとも１つのトリムコードを受信してもよい。コントローラ４９０は、当該少なくとも１つのトリムコードを可変キャパシタ４４０ａ〜４４０ｄに提供する。
【００６５】
図４に示される例示的な実施形態では、固定遅延ｔＦＩＸＥＤ３１０（図３）の大部分は、４つのインバータ４２０ａ〜４２０ｄ、抵抗器４１５ａ〜４１５ｄおよびキャパシタ４２５ａ〜４２５ｄの組み合わせによって提供される。可変遅延は、たとえばクロックの立ち下がりエッジを押し出すことによって提供されてもよい。たとえば、この可変遅延は、４つのインバータ４３０ａ〜４３０ｄ、４つの抵抗器４４５ａ〜４４５ｄおよび４つの可変キャパシタ４４０ａ〜４４０ｄの組み合わせによって実現されてもよい。４つの抵抗器４４５ａ〜４４５ｄおよび４つの可変キャパシタ４４０ａ〜４４０ｄは、それらが実現する時定数に基づいて可変遅延を提供し得て、この時定数を実現することは、少なくとも１つのトリムコードを適用することを含み得る。少なくとも１つのトリムコードは、可変遅延ｔＶＡＲ３２０を実現するように異なるサイクルで変更されてもよい。
【００６６】
図４は、論理ゲート４１０をＮＡＮＤゲートとして示しているが、実施形態はそれに限定されるものではない。別の例示的な実施形態では、クロック周期ランダマイザは、ＮＡＮＤゲートの代わりにＮＯＲゲートなどのロジックで実現されてもよい。
【００６７】
例示的な実施形態では、システム４００は、以下の態様で動作し得る。入力クロック４６０は、クロック信号をコントローラ４９０に提供する。少なくとも１つの実施形態では、入力クロック４６０は、固定周期を有するクロックであってもよく、ごくわずかな量のジッタが除外され、入力クロック４６０は、クロック周期ランダマイザ４５０がその一部分であるかまたは組み込まれるデバイスを駆動し得る。少なくとも１つの実施形態では、暗号アルゴリズムの実行中またはセキュリティが要求される手順中に、入力クロック４６０は、クロック周期ランダマイザ４５０が出力可変クロック４６５を提供するように動作するように、クロック周期ランダマイザ４５０を駆動してもよく、またはクロックをクロック周期ランダマイザ４５０に提供してもよい。少なくとも１つの実施形態では、出力可変クロック４６５は、セキュリティが要求される動作を実行する回路またはプロセッサを駆動する可変クロック信号を提供し得る。
【００６８】
コントローラ４９０は、制御信号を可変キャパシタ４４０ａ〜４４０ｄに提供する。当該制御信号は、少なくとも１つのトリムコードを備え得る。
【００６９】
図４に基づく実施形態では、クロック周期ランダマイザ４５０は、キャパシタ４７０ａ〜４７０ｄと、可変キャパシタ４４５ａ〜４４５ｄとを両方とも備える。少なくとも１つの実施形態では、設計の１つの利点は、トリムコードをコントローラ４９０によって可変キャパシタ４４０ａ〜４４０ｄに同期的に提供できることである。すなわち、入力クロック４６０と可変キャパシタ４４０ａ〜４４０ｄにトリムコードを提供するコントローラ４９０とは、同期システム設計を有し得る。
【００７０】
可変遅延チェーン（インバータ４３０ａ〜４３０ｄ、抵抗器４４５ａ〜４４５ｄ、可変キャパシタ４７５ａ〜４７５ｄ）は、制御信号に従って制御されるので、可変遅延チェーンの時定数τは、制御信号に基づいて変化する。したがって、可変遅延チェーンから論理ゲート４１０に入力される可変遅延線４８５における電圧は、制御信号に基づいて変化する。固定遅延線４８０からの電圧および可変遅延線４８５からの電圧が論理ゲート４１０に到達すると、論理ゲート４１０は、出力可変クロック線４８７を介してハイからローまたはローからハイへのクロック信号の変化を生じさせ、出力可変クロック４６５がもたらされる。信号用接地４７０ａ〜４７０ｄおよび信号用接地４７５ａ〜４７５ｄは、回路内の各段に基準電圧を提供する。制御信号４９０は、ランダム性または疑似ランダム性をクロック周期ランダマイザ４５０に提供して、τにランダムまたは疑似ランダムな変化を生じさせる。
【００７１】
図４に示されるクロック周期ランダマイザ４５０は、インバータと抵抗器とキャパシタと信号用接地とを備えるセットの４つのインスタンスを含む。さらに、図４に示されるクロック周期ランダマイザ４５０は、インバータと抵抗器と可変キャパシタと信号用接地とを備えるセットの４つのインスタンスを含む。しかし、実施形態はそれに限定されるものではない。セットの数は設計パラメータまたは好みに応じて変化し得るということを当業者は認識するであろう。
【００７２】
少なくとも１つの実施形態では、可変キャパシタ４４０ａ〜４４０ｄは、一群の線形キャパシタ（たとえば、図１０に図示されており、以下でさらに詳細に説明する）として実現されてもよい。この実施形態では、キャパシタ４４０ａ〜４４０ｄへの制御信号は、キャパシタ４４０ａ〜４４０ｄを回路に接続したり回路から切り離したり切り替える１つ以上のスイッチを動作させ得る。この実施形態では、出力可変クロック４６５が突然故障しないように、固定遅延チェーン（インバータ４２０ａ〜４２０ｄ、抵抗器４１５ａ〜４１５ｄ、キャパシタ４２５ａ〜４２５ｄ）を横断するパルスがない場合にのみキャパシタの設定を更新するように注意すべきである。
【００７３】
少なくとも１つの他の実施形態では、可変キャパシタ４４０ａ〜４４０ｄは、底板電圧が変更されるバラクタとして実現されてもよい。実施形態では、可変キャパシタ４４０ａ〜４４０ｄへの制御信号は、バラクタの底板への電圧を変化させるように動作し得る。
【００７４】
上記され、図３および図４に示される例示的な実現例に加えて、またはそれらの例示的な実現例の代わりに、多くの他の可能な実現例がある。たとえば、可変遅延（ｔＶＡＲ３２０）を提供する要素は、個々の段だけでなく各段に可変キャパシタを含めることによって、より均一にリングの周囲に分散されてもよい。少なくとも１つの他の実施形態では、リング全体に対する供給は、入力基準がサイクルごとに変化する電圧レギュレータ（たとえば、図１１に図示されており、以下でさらに詳細に説明する）によって駆動されてもよい。代替的に、リング内の有効な要素の数は、同期ミラー遅延（たとえば、図７に図示されており、以下でさらに詳細に説明する）のマルチプレクサ構造または変形形態を用いて変更されてもよい。
【００７５】
１つ以上の他の実施形態によれば、遅延を変化させるために位相補間器が用いられてもよい。このような実施形態では、位相補間器制御装置のサブセットは、傾斜などの公知のパターンではなくランダムまたは疑似ランダム入力に設定される。
【００７６】
【数１】
0006621533.tif 000002
【００７７】
少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎは、デジタル時間変換器（digital to time converter：ＤＴＣ）に類似しており、そのさまざまな実現例は当業者に公知である。
【００７８】
少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎ（または、少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎを備える要素のｎ個のセット）は、同一であってもよく（または、「実質的に同一」であってもよく、たとえば同一の部品番号もしくは同一のモデル番号を有してもよく）、その場合、スイッチ１０３０ａ〜１０３０ｎに適用されるトリムコードセットにおける少なくともいくつかのトリムコードは、アルファ符号（たとえば、温度計符号）に基づき得る。
【００７９】
少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎ（または、少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎを備える要素のｎ個のセット）は、二進法で重み付けされてもよく、その場合、トリムコードセットにおける少なくともいくつかのトリムコードは、本明細書では、二進数としてインクリメントする「二進法で重み付けされたトリムコード」と呼ばれる。
【００８０】
少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎ（または、少なくとも１つの実施形態では、線形キャパシタ１０４０ａ〜１０４０ｎを備える要素のｎ個のセット）は、同一の線形キャパシタ（線形キャパシタを備える要素のｎ個のセット）と二進法で重み付けられた線形キャパシタ（線形キャパシタを備える要素のｎ個のセット）との組み合わせであってもよく、上位ビットに対応する線形キャパシタ（線形キャパシタを備える要素のｎ個のセット）は、二進法で重み付けされ、対応するスイッチに適用される二進法で重み付けされたトリムコードによって制御され、下位ビットに対応する線形キャパシタは、同一であり、アルファ符号に基づいてトリムコードによって制御される。
【００８１】
線形キャパシタ１０４０ａ〜１０４０ｎは、線形キャパシタであってもよいが、実施形態はそれに限定されるものではない。たとえば、線形キャパシタ１０４０ａ〜１０４０ｎの代わりのキャパシタは、ソースおよびドレインが短絡したＣＭＯＳデバイスに基づき、キャパシタンスは非線形である。
【００８２】
図１１は、例示的な実施形態に係る、コントローラと基準電圧源と電圧レギュレータと直列の奇数個のインバータとを含むクロック周期ランダム化を発生させるための例示的なシステムを示す回路図である。図１１は、インバータ１１３０ａ〜１１３０（２ｎ＋１）と、電圧レギュレータ１１５０と、コントローラ１１９０と、出力可変クロック線１１８７と、出力可変クロック１１６５と、基準電圧ＶＲＥＦとを含む。図１１では、リング全体に対する供給は、入力基準ＶＲＥＦがサイクルごとに変化する電圧レギュレータ１１５０によって駆動され得る。リングは、直列の奇数個のインバータを含み、すなわちリング内のインバータの数は２ｎ＋１であり、ｎ＞０である。リング内の全ての段は、電圧レギュレータ１１５０によって駆動される。それらの段はインバータとして示されているが、実施形態はそれに限定されるものではない。電圧レギュレータ１１５０からの出力は、コントローラ１１９０によって提供される基準信号ＶＲＥＦによって制御される。ＶＲＥＦは、入力が周期的に変化するデジタルアナログ変換器（ＤＡＣ）によって駆動されて、周期的な変化を発生させ、この実施形態では、コントローラ１１９０がＤＡＣを含んでもよい。少なくとも１つの他の実施形態では、電圧レギュレータ１１５０がＤＡＣの機能を含んでもよく、この実施形態では、電圧レギュレータ１１５０は、デジタル電圧制御入力を有してもよい。
【００８３】
図５は、トリムコードを発生させるための例示的なシステムを示す。図５は、トリムコード発生器５００と、乱数発生器５３０と、シード（seed）５４３と、ｍビット疑似ランダム二進数列発生器５１５と、論理ゲート５１０と、フリップフロップ５２０ａ〜５２０ｍを備えるシフトレジスタと、モジュラー算術計算機５１２と、レジスタ５４０ａ〜５４０ｐを備えるレジスタバンクと、マルチプレクサ５５０とを含む。レジスタ５４０ａ〜５４０ｐを備えるレジスタバンクは、１６個のレジスタを含み得るが、実施形態はそれに限定されるものではない。レジスタバンク内のレジスタ５４０の数は、設計パラメータまたは好みに基づいて、当業者によって選択されてもよい。
【００８４】
少なくとも１つの実施形態によれば、トリムコード発生器５００は、疑似ランダム性を用いてトリムコードを出力して、トリムコードセットからのどのトリムコードを出力すべきであるかを判断する。例示的な実施形態では、トリムコードは、オシレータの一部を構成するキャパシタアレイの制御のためのものであり得る。一般に、トリムコード発生器５００のアプローチは、どれぐらい周波数を変化させるかをハードウェアにおいて把握するのではなく、対象回路にトリムコードを適用した結果が所望の周波数を中心とするようにプログラム可能なトリムコードセットから単にランダムに選択するというものである。
【００８５】
例示的な実施形態では、乱数発生器５３０は、シード５４３をｍビット疑似ランダム二進数列発生器５１５に提供し、ｍビット疑似ランダム二進数列発生器５１５は、ｍビット疑似ランダム二進数列（ｍＰＲＢＳ）をモジュラー算術計算機５１２に提供する。
【００８６】
ｍビット疑似ランダム二進数列発生器５１５を更新することができる方法がいくつかある。ｍビット疑似ランダム二進数列発生器５１５によって出力されるｍＰＲＢＳが十分な長さを有する場合には、暗号化ルーチン当たり一度だけｍビット疑似ランダム二進数列発生器５１５へのシード５４３を更新するだけで十分であろう。少なくとも１つの他の実施形態では、シード５４３は、有限状態マシンの制御下で周期的に更新されてもよい。
【００８７】
モジュラー算術計算機５１２は、ｍＰＲＢＳ  ｍｏｄ  λを求め得て、λは正の整数である。モジュラー算術計算機５１２によって求められた値は、マルチプレクサ５５０に提供されて、レジスタ５４０ａ〜５４０ｐを備えるレジスタバンクの特定のレジスタに保持される値がマルチプレクサ５５０からの出力として提供されるようにマルチプレクサ５５０を制御する。例示的な実施形態では、マルチプレクサ５５０からの出力は、クロック周期ランダマイザ４５０を制御するための制御信号としてコントローラ４９０（図４）に提供されてもよい。別の実施形態では、マルチプレクサ５５０の出力は、クロック周期ランダマイザ４５０の一部であり得る一群の線形キャパシタ１０５０を制御するための制御信号としてコントローラ１０９０（図１０）に提供されてもよい。
【００８８】
例示的な実施形態では、乱数発生器５３０は、真性乱数発生器として実現される。例示的な実施形態では、ｍビット疑似ランダム二進数列発生器５１５は、線形フィードバックシフトレジスタ（linear feedback shift register：ＬＦＳＲ）として実現される。例示的な実施形態では、ｍの値は、所望のレベルの疑似ランダム性が達成されるように選択される。論理ゲート５１０はＸＮＯＲゲートとして示されているが、ｍビット疑似ランダム二進数列発生器５１５はそれに限定されるものではないということを当業者は認識するであろう。ＬＦＳＲを実現する方法は多数あり、ＬＦＳＲに含まれる論理ゲートは、ＸＮＯＲゲート以外であってもよい。
【００８９】
例示的な実施形態では、λは、マルチプレクサ５５０に接続されたレジスタバンク内のレジスタ５４０ａ〜５４０ｐの数に等しい。例示的な実施形態では、モジュラー算術計算機５１２は、ｍＰＲＢＳ  ｍｏｄ  １６を求める。例示的な実施形態では、レジスタ５４０ａ〜５４０ｐに保持される値は、コントローラ４９０に供給され得るトリムコードである。コントローラ４９０に供給される可能なトリムコードの数は、クロック周期ランダマイザ４５０内の可変キャパシタアレイがどのようにして実現されるかに依存し得る。例示的な実施形態では、クロック周期ランダマイザ４５０は、キャパシタ４４０ａ〜４４０ｄ（または、１０４０ａ〜１０４０ｎ）を切り換える複数のスイッチ（たとえば、１０３０ａ〜１０３０ｎ（図１０））を含み得て、スイッチセットは、クロック周期ランダマイザ４５０の動作にとって許容できる（たとえば、有用な、または有効な、または合法的な）状態数σを有し得る。例示的な実施形態では、σ個のレジスタ５４０ａ〜５４０ｐが望ましいであろう。
【００９０】
図６は、クロック周期ランダム化を発生させるための例示的な方法６００を示す。本明細書に記載される少なくとも１つの実施形態によれば、プロセス６００は、ブロック６０５〜６２０を含み得る。しかし、本開示の１つ以上の他の実施形態によれば、例示的なプロセス６００は、図６に示され、以下でさらに詳細に説明するものに加えて、またはそれらの代わりに、１つ以上の他のステップまたは動作を含んでもよい。
【００９１】
【数２】
0006621533.tif 000003
【００９２】
最大動作周波数ｆＭＡＸは、ＣＰＵ、ＡＳＩＣ、または暗号アルゴリズムを実行して出力可変クロック３６５，４６５または１１６５を受信する他の集積回路の仕様に基づき得る。
【００９３】
ブロック６１０において、特定の性能レベルを維持しながら（たとえば、性能閾値を満たしながら）デバイス全体が動作可能な最大期間（ｔＭＡＸ）について判断し得る。
【００９４】
最大期間ｔＭＡＸは、設計の好みに依存し得る。暗号アルゴリズムの複雑さが比較的低く、暗号アルゴリズムが汎用プロセッサではなくＡＳＩＣ上で実行される場合には、ｔＭＡＸは比較的低くなるが、ＡＳＩＣは、汎用プロセッサ上で暗号アルゴリズムを実行する以上にコストがかかる可能性がある。一方、暗号アルゴリズムの複雑さが比較的高く、暗号アルゴリズムが汎用プロセッサ上で実行される場合には、ｔＭＡＸは、設計の好みおよびパラメータにとってさらに重要である。なぜなら、出力可変クロック３６５，４６５または１１６５によって駆動される暗号アルゴリズムの実行には、比較的多くの時間が必要であるからである。
【００９５】
ブロック６１５において、クロック周期の最小期間を、（ブロック６０５において求められた）同期システム設計が動作可能な最小期間（ｔＭＩＮ）に設定し得る。
【００９６】
ブロック６２０において、クロック周期の変化を、ブロック６１０において求められた最大期間とブロック６０５において求められた最小期間との間の差、または（ｔＭＡＸ）−（ｔＭＩＮ）に設定し得る。
【００９７】
図７は、同期ミラー遅延（ＳＭＤ）を含むクロック周期ランダム化を発生させるための例示的なシステム７００を示す。例示的な実施形態では、固定遅延ｔＦＩＸＥＤ３１０は、ｔＦＩＸＥＤ発生器７１０によって提供される。本明細書に記載される少なくとも１つの実施形態によれば、ｔＦＩＸＥＤ発生器７１０は、容量性またはＲＣローディングによりインバータを用いて実現されてもよい。しかし、１つ以上の他の実施形態によれば、ｔＦＩＸＥＤ発生器７１０は、遅延を発生させる任意の回路で実現されてもよい。示されている例では、ｔＦＩＸＥＤ発生器７１０はオシレータのための反転も発生させるが、この機能は、リング内の他の場所で提供されてもよい。
【００９８】
遅延の可変部分（図３のｔＶＡＲ３２０）は、選択信号Ｓｅｌ０，Ｓｅｌ１，...，Ｓｅｌｎ（ｎは、全ミラー遅延段の数である）を用いて選択され得る。タウ（τ）遅延発生器７２０の各々は、固定遅延を有する。所与の信号Ｓｅｌｉを高く選択することにより、２τｉの可変遅延がもたらされる（各々のタウ（τ）遅延発生器７２０は同一の遅延量を提供するように実現されるものとする）。例示的な実施形態では、所与の信号Ｓｅｌｉを高く選択することは、マルチプレクサ７３０ｉが選択信号を受信することによってなされ得る。ｉの選択をランダムまたは疑似ランダムにすることによって、オシレータの遅延全体は、ｔＦＩＸＥＤとｔＦＩＸＥＤ＋２τｎとの間でランダムまたは疑似ランダムに変化する。
【００９９】
例示的な実施形態では、マルチプレクサ７３０ｉ、および、それが回路に接続したり回路から切り離したり切り替えるタウ（τ）遅延発生器７２０を備える回路は、遅延ユニットと呼ぶことができる。
【０１００】
例示的な実施形態では、コントローラ７９０は、選択信号Ｓｅｌ０，Ｓｅｌ１，...，Ｓｅｌｎを提供する。例示的な実施形態では、コントローラ７９０は、トリムコード発生器５００である。例示的な実施形態では、コントローラ７９０は、トリムコード発生器５００であり、マルチプレクサ５５０の出力は、長さｎのビットベクトルである。例示的な実施形態では、コントローラ７９０は、σ個のレジスタ５４０ａ〜５４０ｐを有するトリムコード発生器５００であり、選択信号によって選択される合法的な状態の数はσである。
【０１０１】
図７における例は個別のマルチプレクサを示しているが、フォワードパスをリバースパスにループバックする多くの他の構成が等価であると考えられることに注目すべきである。
【０１０２】
図８は、例示的な実施形態に係る、暗号攻撃に対して防御するために少なくとも暗号化動作中にデバイスのクロック信号の可変クロック周期を発生させる方法８００を示すブロック図である。図８は、暗号化動作の起動（８０５）で開始する。本明細書に記載されるクロック周期ランダマイザの実施形態が暗号化動作を起動させることは必須ではなく、クロック周期ランダマイザ以外のデバイスまたはユニットが暗号化動作を起動させてもよい。暗号化動作がソフトウェアで実行される場合、当該ソフトウェアが、クロック周期ランダマイザを作動させて、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を開始してもよい（たとえば、クロック周期ランダマイザにそのような可変クロック周期を開始させてもよい）。暗号化動作が暗号化動作のためのハードウェア（たとえば、暗号化動作のためのＡＳＩＣ、セキュリティまたは暗号化コプロセッサなど）で実行される場合、当該暗号化動作のためのハードウェアの起動は、クロック周期ランダマイザを作動させて、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を開始してもよい（たとえば、クロック周期ランダマイザにそのような可変クロック周期を開始させてもよい）。一般に、暗号化動作が起動するまたは起動していることを判断するためのその他の従来のまたは公知の手段は、ロジックで補充されて、クロック周期ランダマイザを作動させて、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を開始してもよい（たとえば、クロック周期ランダマイザにそのような可変クロック周期を開始させてもよい）。
【０１０３】
クロック周期ランダマイザは、動作を開始する。
第一に、固定遅延発生器が固定遅延を発生させる（８１０）。固定遅延発生器は、抵抗器４１５ａ〜４１５ｄとインバータ４２０ａ〜４２０ｄとキャパシタ４２５ａ〜４２５ｄとを含むクロック周期ランダマイザ４５０の一部などのＲＣ回路を備え得る。少なくとも１つの他の実施形態では、固定遅延発生器は、ｔＦＩＸＥＤ発生器７１０を備えていてもよい。少なくとも１つの他の実施形態では、ｔＦＩＸＥＤは、図１１のＶＲＥＦのパルス間の時間における時間成分であってもよい。少なくとも１つの他の実施形態では、ｔＦＩＸＥＤは、電圧レギュレータ１１５０がＤＡＣ機能を含む図１１の実施形態におけるデジタル電圧制御入力からのデジタル信号間の時間における時間成分であってもよい。
【０１０４】
第二に、可変遅延発生器が可変遅延を発生させる（８２０）。可変遅延発生器は、インバータ４３０ａ〜４３０ｄと、抵抗器４４５ａ〜４４５ｄと、可変キャパシタ４４０ａ〜４４０ｄとを含み得て、トリムコード発生器５００からトリムコードを受信し得る。少なくとも１つの実施形態では、可変遅延発生器は、タウ（τ）遅延発生器７２０と、マルチプレクサ７３００〜７３０ｎとを含んでもよく、コントローラ７９０から信号を受信してもよい。少なくとも１つの実施形態では、可変遅延発生器は、スイッチ１０３０ａ〜１０３０ｎと、キャパシタ１０４０ａ〜１０４０ｎとを含んでもよく、トリムコード発生器５００によって発生されたトリムコードをコントローラ１０９０から受信してもよい。少なくとも１つの実施形態では、可変遅延ｔＶＡＲは、図１１のＶＲＥＦのパルス間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよい。少なくとも１つの他の実施形態では、ｔＶＡＲは、電圧レギュレータ１１５０がＤＡＣ機能を含む図１１の実施形態におけるデジタル電圧制御入力からのデジタル信号間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよい。
【０１０５】
第三に、乱数発生器が乱数または疑似乱数を発生させる（８３０）。乱数発生器は、乱数発生器３３０または５３０であってもよい。
【０１０６】
第四に、当該乱数または疑似乱数に基づいて可変遅延の量を制御する（８４０）。可変遅延の量は、トリムコード発生器５００およびコントローラ４９０，７９０または１０９０によって、当該乱数または疑似乱数に基づいて制御されてもよい。可変遅延の量は、コントローラ１１９０によって、当該乱数または疑似乱数に基づいて制御されてもよい。可変遅延の量は、デジタル信号を受信する電圧レギュレータ１１５０によって、当該乱数または疑似乱数に基づいて制御されてもよく、電圧レギュレータ１１５０はＤＡＣ機能を含む。
【０１０７】
第五に、当該固定遅延および可変遅延に基づいてクロック信号の可変周期を制御する（８５０）。クロック信号の可変周期は、トリムコード発生器５００およびコントローラ４９０，７９０または１０９０によって、当該固定遅延および可変遅延に基づいて制御されてもよい。少なくとも１つの実施形態では、クロック信号の可変周期は、コントローラ１１９０によって、当該固定遅延および可変遅延に基づいて制御されてもよい。少なくとも１つの実施形態では、クロック信号の可変周期は、デジタル信号を受信する電圧レギュレータ１１５０によって、当該固定遅延および可変遅延に基づいて制御されてもよく、電圧レギュレータ１１５０はＤＡＣ機能を含む。
【０１０８】
第六に、少なくとも暗号化動作中に可変クロック周期でデバイスを駆動する（８６０）。デバイスは、出力可変クロック３６５，４６５または１１６５によって駆動されてもよい。
【０１０９】
図９は、例示的な実施形態に係る、暗号攻撃に対して防御するために、少なくとも暗号化動作中に、関連付けられたデバイスのクロックのクロック周期をランダム化する方法９００を示すブロック図である。第一に、トリムコードセットを求め（９１０）、当該セットは、少なくとも第１のトリムコードと第２のトリムコードとを含む。トリムコードセットは、トリムコード発生器５００によって発生または求められ得る。トリムコードセットは、トリムコードセットにおける各トリムコードが備え得るビット数に基づいて当業者によって求められてもよい。トリムコードセットにおける各トリムコードのビット数に関連する要因としては、トリムコードを用いて制御する要素の数、および、トリムコードを用いて制御する要素の所望のまたは許容できる状態の数を挙げることができる。
【０１１０】
第二に、物理的電子ハードウェアが乱数または疑似乱数を発生させる（９２０）。乱数または疑似乱数は、乱数発生器３３０または５３０によって発生され得る。
【０１１１】
第三に、当該乱数または疑似乱数に基づいてトリムコードセットから第１のトリムコードを選択する（９３０）。トリムコードセットからの第１のトリムコードは、トリムコード発生器５００によって当該乱数または疑似乱数に基づいて選択されてもよく、トリムコード発生器５００は、ｍビット疑似ランダム二進数列発生器５１５と、論理ゲート５１０と、フリップフロップ５２０ａ〜５２０ｍを備えるシフトレジスタと、モジュラー算術計算機５１２と、レジスタ５４０ａ〜５４０ｐを備えるレジスタバンクと、マルチプレクサ５５０とを含む。
【０１１２】
第四に、当該乱数または疑似乱数に基づいてトリムコードセットから第２のトリムコードを選択する（９４０）。トリムコードセットからの第２のトリムコードは、トリムコード発生器５００によって当該乱数または疑似乱数に基づいて選択されてもよく、トリムコード発生器５００は、ｍビット疑似ランダム二進数列発生器５１５と、論理ゲート５１０と、フリップフロップ５２０ａ〜５２０ｍを備えるシフトレジスタと、モジュラー算術計算機５１２と、レジスタ５４０ａ〜５４０ｐを備えるレジスタバンクと、マルチプレクサ５５０とを含む。
【０１１３】
第五に、第１のトリムコードを可変遅延発生器に提供し（９５０）、可変遅延発生器は、トリムコードセットからのいずれかのトリムコードに基づいて動作する要素を含む。少なくとも１つの実施形態では、トリムコードセットは、許容できる状態のためのトリムコードのみを含んでもよく、少なくとも１つの実施形態では、特定の長さのビットベクトルの全ての順列が、許容できる状態のためのトリムコードであるとは限らない。なぜなら、いくつかの順列は、適用されると、有用でなく、望ましくなく、有効でなく、および／または、合法的でない構成（たとえば、ハードウェア構成またはスイッチ構成）をもたらし得るからである。可変遅延発生器は、インバータ４３０ａ〜４３０ｄと、抵抗器４４５ａ〜４４５ｄと、可変キャパシタ４４０ａ〜４４０ｄとを含んでもよく、トリムコード発生器５００から第１のトリムコードおよび第２のトリムコードを受信してもよい。少なくとも１つの実施形態では、可変遅延発生器は、タウ（τ）遅延発生器７２０と、マルチプレクサ７３００〜７３０ｎとを含んでもよく、コントローラ７９０から信号を受信してもよく、当該信号は、第１のトリムコードと第２のトリムコードとを備える。少なくとも１つの実施形態では、可変遅延発生器は、スイッチ１０３０ａ〜１０３０ｎと、キャパシタ１０４０ａ〜１０４０ｎとを含んでもよく、コントローラ１０９０から第１のトリムコードおよび第２のトリムコードを受信してもよい。少なくとも１つの実施形態では、可変遅延ｔＶＡＲは、図１１のＶＲＥＦのパルス間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよく、ランダムまたは疑似ランダムな変化は、第１のトリムコードまたはおよび第２のトリムコードの機能であり得て、当該機能は、集積回路を備えるロジックによって、またはコントローラ１１９０によって、求められるまたは計算される。少なくとも１つの他の実施形態では、ｔＶＡＲは、電圧レギュレータ１１５０がＤＡＣ機能を含む図１１の実施形態におけるデジタル電圧制御入力からのデジタル信号間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよく、当該デジタル信号は、第１のトリムコードもしくは第２のトリムコードの機能であり、または第１のトリムコードもしくは第２のトリムコードを備える。
【０１１４】
第六に、第２のトリムコードを可変遅延発生器に提供し（９６０）、第１のトリムコードが可変遅延発生器に提供されるとき、関連付けられたデバイスのクロック周期は第１の時間であり、第２のトリムコードが可変遅延発生器に提供されるとき、関連付けられたデバイスのクロック周期は第２の時間であり、第１の時間は第２の時間よりも少なくとも１％長い。
【０１１５】
本明細書において、「暗号化動作」は、暗号アルゴリズムに含まれる動作を備える。「暗号化動作」はさらに、秘密鍵上での動作を備える。暗号アルゴリズムは、連邦情報処理規格刊行物２０２（ＳＨＡ−３規格）および連邦情報処理規格刊行物１９７（ＡＥＳ規格）に規定されるアルゴリズムを含むが、それらに限定されるものではない。
【０１１６】
上記の詳細な説明では、ブロック図、フローチャートおよび／または例を用いることによってデバイスおよび／またはプロセスのさまざまな実施形態について説明してきた。このようなブロック図、フローチャートおよび／または例が１つ以上の機能および／または動作を含む限りにおいて、このようなブロック図、フローチャートまたは例の中の各機能および／または動作は、さまざまなハードウェア、ソフトウェア、ファームウェア、または実質的にそれらのいずれかの組み合わせによって、個々におよび／または一括して実行されてもよいということが当業者によって理解されるであろう。少なくとも１つの実施形態によれば、本明細書に記載される主題のいくつかの部分は、特定用途向け集積回路（Application Specific Integrated Circuit：ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（Field Programmable Gate Array：ＦＰＧＡ）、デジタル信号プロセッサ（digital signal processor：ＤＳＰ）、または他の集積フォーマットによって実現されてもよい。しかし、本明細書に開示される実施形態のいくつかの局面は、全体または一部が、１つ以上のコンピュータで実行される１つ以上のコンピュータプログラムとして、１つ以上のプロセッサで実行される１つ以上のプログラムとして、ファームウェアとして、または実質的にそれらのいずれかの組み合わせとして、集積回路において同等に実現されてもよく、回路を設計することおよび／またはソフトウェアおよび／またはファームウェアのためのコードを書き込むことは、本開示を踏まえると十分に当業者の技術の範囲内である、ということを当業者は認識するであろう。
【０１１７】
本明細書における実質的にいずれの複数形および／または単数形の用語の使用に関しても、当業者は、文脈および／または適用例に適したように、複数形から単数形に、および／または、単数形から複数形に変換することができる。さまざまな単数形／複数形置換は、明確にする目的で本明細書に明記されている。
【０１１８】
このように、主題の特定の実施形態について説明してきた。他の実施形態も以下の特許請求の範囲の範囲内である。場合によっては、請求項に記載されている動作は、異なる順序で実施されたとしても依然として望ましい結果を達成することができる。また、添付の図面に示されているプロセスは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序を必ずしも必要としない。特定の実現例では、マルチタスクおよび並列処理が有利であろう。
【図１】
0006621533.tif 000004
【図２】
0006621533.tif 000005
【図３】
0006621533.tif 000006
【図４】
0006621533.tif 000007
【図５】
0006621533.tif 000008
【図６】
0006621533.tif 000009
【図７】
0006621533.tif 000010
【図８】
0006621533.tif 000011
【図９】
0006621533.tif 000012
【図１０】
0006621533.tif 000013
【図１１】
0006621533.tif 000014