(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-24
(45)【発行日】2022-07-04
(54)【発明の名称】暗号攻撃に対する防御のためのクロック周期ランダム化
(51)【国際特許分類】
H04L 9/10 20060101AFI20220627BHJP
G06F 21/52 20130101ALI20220627BHJP
G06F 21/75 20130101ALI20220627BHJP
【FI】
H04L9/10 A
G06F21/52
G06F21/75
【外国語出願】
(21)【出願番号】P 2019208908
(22)【出願日】2019-11-19
(62)【分割の表示】P 2018525379の分割
【原出願日】2017-02-22
【審査請求日】2020-02-05
(32)【優先日】2016-02-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-02-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】スターク,ドナルド
【審査官】金沢 史明
(56)【参考文献】
【文献】特開平07-239837(JP,A)
【文献】米国特許第05164677(US,A)
【文献】米国特許出願公開第2010/0007398(US,A1)
【文献】特開2001-126480(JP,A)
【文献】特開2003-178589(JP,A)
【文献】特開2007-248380(JP,A)
【文献】国際公開第2015/145487(WO,A1)
【文献】特開2008-113130(JP,A)
【文献】特開2003-337750(JP,A)
【文献】米国特許第06987405(US,B1)
【文献】米国特許出願公開第2013/0285729(US,A1)
【文献】米国特許出願公開第2011/0285420(US,A1)
【文献】浅井 稔也 ほか,クロック変動機能を用いた耐タンパアーキテクチャ,電気学会論文誌 C (電子・情報・システム部門誌),日本,一般財団法人電気学会,2013年12月01日,Vol.133,No.12,pp.2134-2142
【文献】堀之内 信輔 ほか,AESに対する故障利用攻撃における同期信号の変動による攻撃可能性の変化,SCIS2016 [USB],日本,2016年01月19日,2F3-3,pp.1-7
【文献】Y. Zafar, et al.,A Novel Countermeasure Enhancing Side Channel Immunity in FPGAs,2008 International Conference on Advances in Electronics and Micro-electronics,米国,IEEE,2008年09月29日,pp.132-137
【文献】Ali Galip Bayrak, et al.,An EDA-Friendly Protection Scheme against Side-Channel Attacks,2013 Design, Automation & Test in Europe Conference & Exhibition (DATE),米国,IEEE,2013年03月18日
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/52
G06F 21/75
(57)【特許請求の範囲】
【請求項1】
少なくとも暗号化動作中に使用されるランダム化されたクロック信号を生成するための装置であって、
入力クロック信号を受信するように構成された入力と、
可変遅延量の信号遅延を生じさせるように構成された可変遅延発生器とを備え、前記可変遅延発生器は、複数の線形キャパシタを備え、前記装置はさらに、
前記可変遅延発生器を制御して前記可変遅延量を変化させるように構成されたコントローラを備え、前記可変遅延発生器を制御して前記可変遅延量を変化させることは、
乱数値または疑似乱数値を受信することと、
前記乱数値または疑似乱数値に基づいて複数のトリムコードからトリムコードを選択することと、
前記トリムコードに基づいて前記線形キャパシタの各々を起動させたり停止させたりすることとによってなされ、
前記装置はさらに、
固定遅延量の信号遅延を生じさせるように構成された固定遅延発生器と、
前記入力クロック信号に基づいて、前記固定遅延量と前記可変遅延量とが組み合わせられた遅延量だけ遅延
される可変遅延クロック信号を生成するように構成された回路と、
少なくとも前記暗号化動作中に
前記可変遅延クロック信号を前記ランダム化されたクロック信号
として出力するように構成された出力とを備え
、前記装置によって出力される前記可変遅延クロック信号は、少なくとも前記固定遅延量と前記可変遅延量とが組み合わせられた前記遅延量だけ前記入力クロック信号の受信から遅延される、装置。
【請求項2】
少なくとも暗号化動作中に使用されるランダム化されたクロック信号を生成するための装置であって、
入力クロック信号を受信するように構成された入力と、
可変遅延量の信号遅延を生じさせるように構成された可変遅延発生器とを備え、前記可変遅延発生器は、各々が底板を有する1つ以上のバラクタを備え、前記装置はさらに、
前記可変遅延発生器を制御して前記可変遅延量を変化させるように構成されたコントローラを備え、前記可変遅延発生器を制御して前記可変遅延量を変化させることは、
乱数値または疑似乱数値を受信することと、
前記乱数値または疑似乱数値に基づいて複数のトリムコードからトリムコードを選択することと、
前記トリムコードに基づいて前記1つ以上のバラクタの各々の底板電圧を変化させることとによってなされ、
前記装置はさらに、
固定遅延量の信号遅延を生じさせるように構成された固定遅延発生器と、
前記入力クロック信号に基づいて、前記固定遅延量と前記可変遅延量とが組み合わせられた遅延量だけ遅延
される可変遅延クロック信号を生成するように構成された回路と、
少なくとも前記暗号化動作中に
前記可変遅延クロック信号を前記ランダム化されたクロック信号
として出力するように構成された出力とを備え
、前記装置によって出力される前記可変遅延クロック信号は、少なくとも前記固定遅延量と前記可変遅延量とが組み合わせられた前記遅延量だけ前記入力クロック信号の受信から遅延される、装置。
【請求項3】
前記トリムコードを発生させるためのトリムコード発生器をさらに備え、前記トリムコード発生器は、乱数または疑似乱数を発生させるための乱数発生器を含む、請求項1または2に記載の装置。
【請求項4】
前記トリムコード発生器は、一群のレジスタを含み、各レジスタは、トリムコードを保持する、請求項3に記載の装置。
【請求項5】
前記トリムコード発生器は、前記乱数発生器として線形フィードバックシフトレジスタを含む、請求項3または4に記載の装置。
【請求項6】
前記複数のトリムコードの各々は、アルファ符号または二進重み付けに基づく、請求項1~5のいずれか1項に記載の装置。
【請求項7】
少なくとも暗号化動作中に使用されるランダム化されたクロック信号を生成するための装置であって、
入力クロック信号を受信するように構成された入力と、
可変遅延量の信号遅延を生じさせるように構成された可変遅延発生器とを備え、前記可変遅延発生器は、位相補間器を備え、前記装置はさらに、
前記可変遅延発生器を制御して前記可変遅延量を変化させるように構成されたコントローラを備え、前記可変遅延発生器を制御して前記可変遅延量を変化させることは、
乱数値または疑似乱数値を受信することと、
前記乱数値または疑似乱数値に基づいて前記位相補間器を用いて前記可変遅延量を変化させることとによってなされ、
前記装置はさらに、
固定遅延量の信号遅延を生じさせるように構成された固定遅延発生器と、
前記入力クロック信号に基づいて、前記固定遅延量と前記可変遅延量とが組み合わせられた遅延量だけ遅延
される可変遅延クロック信号を生成するように構成された回路と、
少なくとも前記暗号化動作中に
前記可変遅延クロック信号を前記ランダム化されたクロック信号
として出力するように構成された出力とを備え
、前記装置によって出力される前記可変遅延クロック信号は、少なくとも前記固定遅延量と前記可変遅延量とが組み合わせられた前記遅延量だけ前記入力クロック信号の受信から遅延される、装置。
【請求項8】
少なくとも暗号化動作中に使用されるランダム化されたクロック信号を生成するための装置であって、
入力クロック信号を受信するように構成された入力と、
可変遅延量の信号遅延を生じさせるように構成された可変遅延発生器とを備え、前記可変遅延発生器は、入力基準を受信する電圧レギュレータおよび前記電圧レギュレータによって出力される信号によって駆動される直列の2n+1個のインバータを備え、nは、ゼロよりも大きな整数であり、前記装置はさらに、
前記可変遅延発生器を制御して前記可変遅延量を変化させるように構成され、前記入力基準を出力するデジタルアナログ変換器(DAC)を含むコントローラを備え、前記可変遅延発生器を制御して前記可変遅延量を変化させることは、
乱数値または疑似乱数値を受信することと、
前記乱数値または疑似乱数値に基づいて前記DACから出力される前記入力基準をサイクルごとに変化させることとによってなされ、
前記装置はさらに、
固定遅延量の信号遅延を生じさせるように構成された固定遅延発生器と、
前記入力クロック信号に基づいて、前記固定遅延量と前記可変遅延量とが組み合わせられた遅延量だけ遅延
される可変遅延クロック信号を生成するように構成された回路と、
少なくとも前記暗号化動作中に
前記可変遅延クロック信号を前記ランダム化されたクロック信号
として出力するように構成された出力とを備え
、前記装置によって出力される前記可変遅延クロック信号は、少なくとも前記固定遅延量と前記可変遅延量とが組み合わせられた前記遅延量だけ前記入力クロック信号の受信から遅延される、装置。
【請求項9】
前記固定遅延量は、前記可変遅延発生器の最小遅延量に基づいて決定される、請求項1~8のいずれか1項に記載の装置。
【請求項10】
前記固定遅延量と前記可変遅延発生器の前記最小遅延量との合計は、関連付けられたデバイスの最小クロック周期を満たす、請求項9に記載の装置。
【請求項11】
前記固定遅延量と前記可変遅延発生器の前記最小遅延量との合計の上界は、関連付けられたデバイスの予め定められた性能閾値を満たす、請求項9または10に記載の装置。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本願は、2016年2月23日に出願された米国仮特許出願番号第62/298,842号に対する優先権を主張し、米国仮特許出願番号第62/298,842号の開示全体は、引用によって本明細書に援用される。
【0002】
背景
多くのコンピューティングシステムは、暗号化技術を用いて、エンティティ間での安全な通信を実現する。現在の暗号化システムは、通常、鍵に依拠しており、当該鍵のうちのいくつかは、セキュリティを維持するために外界から秘密にされなければならない。これらの鍵を内密に抽出するための多くのアプローチが提案され、実行されてきた。
【0003】
暗号攻撃の2つのカテゴリは、サイドチャネル攻撃およびフォールト注入攻撃である。サイドチャネル攻撃では、攻撃者は、暗号アルゴリズムを実行しているデバイスを監視する。たとえば、実行中に、デバイスの電力消費、電磁放射および/またはアコースティックエミッションは、処理されるデータおよび実行される命令に関する情報を攻撃者に対して提供し得る。なぜなら、命令は、特定のデータに作用する際に特徴的なシグネチャを提供し得るからである。攻撃者がデバイスにアクセスして入力を繰返し変更すると、秘密鍵に関する情報を収集することができる。特定の暗号アルゴリズムおよびそのフォールト注入攻撃に対する脆弱性が分かると、攻撃者は、妥当な量の繰返しのみで暗号鍵を推測することができるようになるだろう。
【0004】
フォールト注入攻撃では、攻撃者は、フォールトを注入して実行し、結果を監視する。フォールト注入は、フォールトを生じさせるために、電力供給を変化させること、デバイスのクロック周期を変化させること、温度を変化させること、または光、レーザ、X線もしくはイオンを使用することを含む。たとえば、電力供給を変化させることは、グリッチを生じさせて命令スキップを引き起こし得る。条件付き飛び越し命令をスキップすることにより、重要なセキュリティチェックが回避される恐れがある。クロックを変化させることは、データの読み違え(たとえば、メモリが適切な値をバスに提供する前にデータバスから値を読み取ってしまうこと)または命令ミス(たとえば、プロセッサが前の命令を完了し終える前に回路が命令を実行し始めること)を引き起こし得る。別の例では、RAMは、書き込みのための1つの温度許容度と読み取りのための別の温度許容度とを有し得るので、これら2つの温度許容度間の数字に温度を変化させることにより、どちらの温度許容度が高いかに応じて、デバイスは、データをRAMに書き込むことができるがRAMから読み取ることができない状態、またはその逆の状態になる。
【0005】
暗号攻撃が秘密鍵をデバイスから抽出することができる場合、デバイスのセキュリティは損なわれることになる。したがって、攻撃プロセスをできる限り難しくすることが望ましい。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
この概要は、本開示のいくつかの局面の基本的理解を提供するために概念一式を簡略化された形態で紹介するものである。この概要は、本開示の広範な概略ではなく、本開示の重要なまたは不可欠な要素を特定することを意図したものではなく、または本開示の範囲を描写することを意図したものでもない。この概要は、以下に記載される詳細な説明の前
置きとして本開示の概念のうちのいくつかを提示しているに過ぎない。
【0007】
本開示は、一般に、データのセキュリティを保護するための方法およびシステムに関する。より具体的には、本開示の局面は、クロック周期ランダム化を用いて暗号攻撃に対して保護することに関する。
【0008】
一般に、本明細書に記載されている主題の一局面は、暗号化動作中にデバイスクロックをランダムに変化させる装置で実施可能であり、上記装置は、入力クロックと、クロック周期ランダマイザ(randomizer)とを備え、上記クロック周期ランダマイザは、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を発生させる。
【0009】
少なくとも1つの実施形態では、上記クロック周期ランダマイザは、可変キャパシタを含む回路と、上記可変キャパシタを回路に接続したり回路から切り離したり切り替えるように構成されたスイッチとを含み、上記スイッチは、トリムコードによって制御され、上記回路は、上記スイッチの動作に基づいて、ローからハイにまたはハイからローにクロック信号を変化させるように構成される。
【0010】
少なくとも1つの実施形態では、上記装置は、上記トリムコードを発生させるためのトリムコード発生器をさらに備え、上記トリムコード発生器は、乱数または疑似乱数を発生させるための乱数発生器を含む。
【0011】
少なくとも1つの実施形態では、上記トリムコード発生器は、一群のレジスタを含み、各レジスタは、トリムコードを保持する。
【0012】
少なくとも1つの実施形態では、上記トリムコード発生器は、線形フィードバックシフトレジスタを含む。
【0013】
少なくとも1つの実施形態では、上記回路はさらに、インバータ、抵抗器およびキャパシタを含む固定遅延発生器と、インバータ、抵抗器および上記可変キャパシタを含む可変遅延発生器と、上記固定遅延発生器および上記可変遅延発生器に接続された論理ゲートとを含み、上記論理ゲートは、上記可変クロック周期を有する上記クロック信号を出力する。
【0014】
少なくとも1つの実施形態では、上記クロック周期ランダマイザは、固定遅延を発生させる固定遅延発生器と、可変遅延を発生させる可変遅延発生器と、上記可変遅延発生器を制御するように構成されたトリムコード発生器とを含み、クロック信号は、上記固定遅延および上記可変遅延によって設定される可変周期を有する。
【0015】
少なくとも1つの実施形態では、上記可変遅延発生器は、第1の遅延ユニットと第2の遅延ユニットとを含み、上記第1の遅延ユニットは、遅延を発生させるように構成された第1の回路と、上記第1の回路を回路に接続したり回路から切り離したり切り替えるように構成された第1のマルチプレクサとを含み、上記第1のマルチプレクサは、上記トリムコード発生器によって発生されるトリムコードによって制御され、上記第2の遅延ユニットは、遅延を発生させるように構成された第2の回路と、上記第2の回路を回路に接続したり回路から切り離したり切り替えるように構成された第2のマルチプレクサとを含み、上記第2のマルチプレクサは、上記トリムコード発生器によって発生されるトリムコードによって制御され、上記トリムコード発生器は、乱数または疑似乱数を発生させる乱数発生器を含む。
【0016】
少なくとも1つの実施形態では、上記固定遅延は、上記可変遅延発生器の最小遅延に基づいて決定される。
【0017】
少なくとも1つの実施形態では、上記固定遅延と上記可変遅延発生器の上記最小遅延との合計は、関連付けられたデバイスの最小クロック周期を満たす。
【0018】
少なくとも1つの実施形態では、上記固定遅延と上記可変遅延発生器の上記最小遅延との合計の上界は、関連付けられたデバイスの予め定められた性能閾値を満たす。
【0019】
少なくとも1つの実施形態では、上記クロック周期ランダマイザは、固定遅延を発生させる固定遅延発生器と、可変遅延を発生させる可変遅延発生器とを含み、上記可変遅延発生器は、底板を有するバラクタを含み、上記可変遅延は、上記バラクタの上記底板への電圧を変化させることによって発生され、クロック信号は、上記固定遅延および上記可変遅延によって設定される可変周期を有する。
【0020】
少なくとも1つの実施形態では、上記クロック周期ランダマイザは、固定遅延を発生させる固定遅延発生器と、可変遅延を発生させる可変遅延発生器とを含み、上記可変遅延発生器は、上記可変遅延を発生させる位相補間器を含み、クロック信号は、上記固定遅延および上記可変遅延によって設定される可変周期を有する。
【0021】
少なくとも1つの実施形態では、上記可変遅延発生器は、遅延を発生させるように構成された回路と、上記回路を回路に接続したり回路から切り離したり切り替えるように構成されたマルチプレクサとを含み、上記マルチプレクサは、上記トリムコード発生器によって発生されるトリムコードによって制御され、上記トリムコード発生器は、乱数または疑似乱数を発生させる乱数発生器を含む。
【0022】
少なくとも1つの実施形態では、コントローラは、上記入力クロックに基づいて同期的に上記トリムコードを上記スイッチに提供する。
【0023】
少なくとも1つの実施形態では、上記クロック周期ランダマイザは、デジタルアナログ変換器(digital to analog converter:DAC)と、サイクルごとに変化する入力基準
を受信する電圧レギュレータと、直列の2n+1個のインバータとを含み、上記インバータは、上記電圧レギュレータによって出力される信号によって駆動され、nは、ゼロよりも大きな整数である。
【0024】
少なくとも1つの実施形態では、上記可変キャパシタは線形キャパシタである。
少なくとも1つの実施形態では、上記可変キャパシタは非線形キャパシタである。
【0025】
少なくとも1つの実施形態では、上記クロック周期ランダマイザはさらに、複数のスイッチを含み、上記回路はさらに、複数の実質的に同一の可変キャパシタを含み、上記実質的に同一の可変キャパシタに適用されるトリムコードは、アルファ符号に基づく。
【0026】
少なくとも1つの実施形態では、上記クロック周期ランダマイザはさらに、複数のスイッチを含み、上記回路はさらに、複数の可変キャパシタを含み、上記可変キャパシタに適用されるトリムコードは、二進法で重み付けされる。
【0027】
少なくとも1つの実施形態では、上記クロック周期ランダマイザはさらに、複数のスイッチを含み、上記回路はさらに、第1の可変キャパシタと第2の可変キャパシタとを含み、上記第1の可変キャパシタに適用される第1のトリムコードは、二進法で重み付けされたトリムコードであり、上記第2の可変キャパシタに適用される第2のトリムコードは、
アルファ符号に基づく。
【0028】
一般に、本明細書に記載されている主題の一局面は、暗号攻撃に対して防御するために少なくとも暗号化動作中にデバイスのクロック信号の可変クロック周期を発生させる方法で実施可能であり、上記方法は、固定遅延発生器によって固定遅延を発生させるステップと、可変遅延発生器によって可変遅延を発生させるステップと、乱数発生器によって乱数または疑似乱数を発生させるステップと、上記乱数または上記疑似乱数に基づいて上記可変遅延の量を制御するステップと、上記固定遅延および上記可変遅延に基づいてクロック信号の可変周期を制御するステップと、少なくとも暗号化動作中に上記可変クロック周期で上記デバイスを駆動するステップとを備える。
【0029】
少なくとも1つの実施形態では、上記固定遅延と上記可変遅延の最小量との合計は、関連付けられたデバイスの最小クロック周期以上である。
【0030】
少なくとも1つの実施形態では、上記固定遅延と上記可変遅延の最大量との合計は、上記関連付けられたデバイスの予め定められた性能閾値以下である。
【0031】
一般に、本明細書に記載されている主題の一局面は、暗号攻撃に対して防御するために、少なくとも暗号化動作中に、関連付けられたデバイスのクロックのクロック周期をランダム化する方法で実施可能であり、上記方法は、トリムコードセットを決定するステップを備え、上記セットは、少なくとも第1のトリムコードと第2のトリムコードとを含み、上記方法はさらに、物理的電子ハードウェアによって乱数または疑似乱数を発生させるステップと、上記乱数または上記疑似乱数に基づいて上記トリムコードセットから上記第1のトリムコードを選択するステップと、上記乱数または上記疑似乱数に基づいて上記トリムコードセットから上記第2のトリムコードを選択するステップと、上記第1のトリムコードを可変遅延発生器に提供するステップとを備え、上記可変遅延発生器は、上記トリムコードセットからのいずれかのトリムコードに基づいて動作する要素を含み、上記方法はさらに、上記第2のトリムコードを上記可変遅延発生器に提供するステップを備え、上記第1のトリムコードが上記可変遅延発生器に提供されるとき、上記関連付けられたデバイスのクロック周期は第1の時間であり、上記第2のトリムコードが上記可変遅延発生器に提供されるとき、上記関連付けられたデバイスのクロック周期は第2の時間であり、上記第1の時間は、上記第2の時間よりも長い。
【0032】
少なくとも1つの実施形態では、上記可変遅延発生器は、最小遅延を有し、固定遅延発生器は、固定遅延を有し、上記固定遅延は、上記関連付けられたデバイスの上記クロック周期の長さに寄与し、上記固定遅延と上記可変遅延発生器の上記最小遅延との合計は、上記関連付けられたデバイスの最小クロック周期以上である。
【0033】
少なくとも1つの実施形態では、上記固定遅延と上記可変遅延発生器の上記最小遅延との上記合計は、上記関連付けられたデバイスの予め定められた性能閾値以下である。
【0034】
少なくとも1つの実施形態では、上記第1の時間は、上記第2の時間よりも少なくとも1%長い。
【0035】
また、本明細書に開示されるプロセッサおよびメモリシステムのうちのいくつかまたは全ての実施形態は、上記の方法実施形態のうちのいくつかまたは全てを実施するように構成されてもよい。上記の方法のうちのいくつかまたは全ての実施形態は、光メモリまたは磁気メモリなどの非一時的なプロセッサ読取可能な記憶媒体上で実施される命令としても表わされてもよい。また、本開示のシステムは、代替的に、たとえば新標準暗号規格(Advanced Encryption Standard:AES)、セキュアハッシュアルゴリズム(Secure Hash
Algorithm:SHA)などの暗号化機能を実行する専用のハードウェアで実現されてもよ
い。
【0036】
本開示の方法およびシステムの適用可能性のさらなる範囲は、以下に記載される詳細な説明から明らかになるであろう。しかし、本明細書に開示されている概念の精神および範囲内のさまざまな変更および変形がこの詳細な説明から当業者に明らかになるので、詳細な説明および具体的な例は、当該方法およびシステムの実施形態を示しているが、例として示されているに過ぎない、ということが理解されるべきである。
【0037】
本開示のこれらのおよび他の目的、特徴および特性は、全てが本明細書の一部を構成する添付の特許請求の範囲および図面とともに以下の詳細な説明を検討することによって当業者により明らかになるであろう。
【図面の簡単な説明】
【0038】
【
図1】処理デバイスに対する従来の暗号攻撃の例を示すブロック図である。
【
図2】本明細書に記載される1つ以上の実施形態に係る、クロック周期ランダム化を用いて暗号攻撃に対して防御する例示的な効果を示すブロック図である。
【
図3】本明細書に記載される1つ以上の実施形態に係る、クロック周期ランダム化を用いて暗号攻撃に対して防御するための例示的なハイレベルシステムを示すブロック図である。
【
図4】本明細書に記載される1つ以上の実施形態に係る、インバータ、可変キャパシタおよび論理ゲートの構成を含む、クロック周期ランダム化を発生させるための例示的なシステムを示す回路図である。
【
図5】本明細書に記載される1つ以上の実施形態に係る、トリムコードを発生させるための例示的なシステムを示すブロック図である。
【
図6】本明細書に記載される1つ以上の実施形態に係る、クロック周期ランダム化を発生させるための例示的な方法を示すフローチャートである。
【
図7】本明細書に記載される1つ以上の実施形態に係る、同期ミラー遅延を含むクロック周期ランダム化を発生させるための例示的なシステムを示すブロック図である。
【
図8】例示的な実施形態に係る、暗号攻撃に対して防御するために少なくとも暗号化動作中にデバイスクロック信号の可変クロック周期を発生させる方法を示すブロック図である。
【
図9】例示的な実施形態に係る、暗号攻撃に対して防御するために、少なくとも暗号化動作中に、関連付けられたデバイスのクロックのクロック周期をランダム化する方法を示すブロック図である。
【
図10】少なくとも1つの実施形態に係る、回路に接続されたり回路から切り離されたりし得る一群の非線形キャパシタを示す回路図である。
【
図11】例示的な実施形態に係る、コントローラと基準電圧源と電圧レギュレータと直列の奇数個のインバータとを含む、クロック周期ランダム化を発生させるための例示的なシステムを示す回路図である。
【発明を実施するための形態】
【0039】
本明細書における見出しは、便宜上のものであるに過ぎず、必ずしも本開示に記載されているものの範囲または意味に影響を及ぼさない。
【0040】
理解を容易にするために、および便宜上、図中の同一の参照番号およびいかなる頭字語も、同一または同様の構造または機能を有する要素または動作を示すものとする。以下の詳細な説明の中で図面について詳細に説明する。
【0041】
詳細な説明
ここで、本開示の方法およびシステムのさまざまな実施例および実施形態について説明する。以下の説明は、これらの実施例を完全に理解して説明することができるように具体的な詳細を提供している。しかし、これらの詳細のうちの多くが無くても本明細書に記載される1つ以上の実施形態を実施することができるということを当業者は理解するであろう。同様に、本開示の1つ以上の実施形態が本明細書に詳細に記載されていない他の特徴を含み得るということも当業者は理解するであろう。また、関連の説明を不必要に曖昧にすることを回避するために、いくつかの周知の構造または機能については以下で詳細に示しておらず、または説明していない。
【0042】
上記のように、現在のコンピューティングシステムは、暗号化技術を用いて、異なるエンティティ間での安全な通信を提供し、実行される暗号化技術は、秘密鍵に依拠し得る。これらの秘密鍵に対して依拠していることにより、このようなシステムを攻撃して鍵を内密に抽出するためのさまざまな方法の開発が助長されてきた。
【0043】
発明者等によって認識されるように、固定周期を有するクロックでデバイスが動作することが、サイドチャネル攻撃およびフォールト注入攻撃を含む暗号攻撃を行うことを容易にしている。デバイスのクロック周期をランダム化することにより、暗号攻撃がより難しくなる。たとえば、暗号鍵のビットの決定は、少なくとも部分的に、クロック周期の長さを把握することに基づくため、クロック周期のランダム化は、暗号攻撃をより難しくする。
【0044】
図1は、処理デバイスに対して従来から行われてきた例示的な攻撃を示す。示されている例示的な構成100では、プロセッサは、たとえば新標準暗号規格(AES)などの暗号アルゴリズムを実現するコードを実行している。プロセッサが連続的な命令I
0,I
1,I
2などを実行すると、プロセッサは、実行されている命令と処理されているデータとの両方の関数である供給電流(I
DD)110を引き込む。別の例示的なシナリオでは、供給電流110は、専用のAESハードウェアが命令を実行した結果として引き込まれてもよい。このシグネチャを解析して当該シグネチャが異なる入力下でどのように変化するかを観察することによって、暗号鍵、または一般に攻撃者にとって関心のあるその他の値もしくはオブジェクトに関する情報を取得して、最終的に推測することが可能になり得る。解析は、電力供給ではなくデバイスの電磁放射(electromagnetic radiation:EMR
)またはアコースティックエミッションを測定することによって行われてもよい。このタイプのアプローチ(たとえば、デバイスの電力供給またはEMRを解析すること)は、一般にサイドチャネル攻撃と呼ばれる。
【0045】
別の種類の攻撃は、プロセッサに動作不良を起こさせることによって、動作中にデバイスを妨害するために、電力供給を操作したり、デバイスのクロック周期を変化させたり、温度を変化させたり、または光、レーザ、X線もしくはイオンを使用することによって、デバイスを混乱させることを狙いとしている。これらの攻撃は、一般にフォールト注入攻撃120と呼ばれ、プロセッサが分岐またはジャンプ命令を実行しているときなどの特定の時点で妨害することに依拠する。
【0046】
上記のように、暗号攻撃がシステムまたはデバイスから暗号鍵を抽出することができる場合、システムまたはデバイスのセキュリティは損なわれることになる。
【0047】
したがって、本開示の方法およびシステムは、デバイスまたはシステムを攻撃するプロセスをより難しくするように設計されている。本明細書に記載されるように、本開示の実施形態では、ランダム化されたクロック周期、疑似ランダム化されたクロック周期または可変クロック周期を利用して、暗号攻撃からデバイスを保護する。たとえば、サイドチャネル攻撃およびフォールト注入攻撃は、比較的一貫したクロック周期に依拠し得る。した
がって、固定周期Pを有するクロックを用いる代わりに、本開示の方法およびシステムは、可変周期を有するクロックを提供するまたは含む。
【0048】
例示的な実施形態では、クロックの可変周期は、P+R×Dとして表わすことができ、Pは固定周期であり、Dは一定遅延であり、Rは乱数値または疑似乱数値である。例示的な実施形態では、Rは、たとえば間隔[0...1]における値であってもよい。例示的な
実施形態では、Rの値は、あるクロックサイクルにおいて別のクロックサイクルと異なっていてもよい。別の例示的な実施形態では、Rは、各クロックサイクルによって変化してもよい。例示的な実施形態では、Rは、k番目のクロックサイクルごとに変化してもよく、kは正の整数である。別の例示的な実施形態では、Rは、さまざまなクロックサイクルによって変化してもよいが、Rが変化するたびに、Rが変化するサイクル間に同一のサイクル数が存在している必要はない。
【0049】
図2は、本明細書に記載される1つ以上の実施形態に係る、クロック周期ランダム化を用いて暗号攻撃に対して防御する例示的な効果を示す。
図2におけるクロック周期は、上記のようにP+R×Dの観点から定義することができる。しかし、クロック周期をランダム化することにより、暗号攻撃がより難しくなる。なぜなら、攻撃者は、Rが変化するたびにRの予備知識を持つことはないからである。サイドチャネル攻撃の場合、攻撃者は、今回の測定値を事前の測定値と比較し得るが、対応するクロックサイクルの長さが分からなければ当該比較は上手くいかないであろう。攻撃が秘密鍵のビット値を求めるために反復プロセスを必要とする場合には、さらに困難になる。フォールト注入攻撃の場合、所与の暗号アルゴリズムに対する特定の攻撃は、特定の命令を実行する直前にフォールト注入を必要とし得る。攻撃が、時刻t
kで発生するk番目のクロックサイクルにおいて注入されるフォールトを必要とする場合、クロック周期のランダム化は、t
kがいつであるのか、またはどのような命令がt
kで実行されるのかを判断することを難しくする。やはり、攻撃が複数回の反復を必要とする場合には、さらに困難になる。
【0050】
図2では、サイドチャネル攻撃は、供給電流I
DD210を監視し得る。しかし、電力解析に基づくサイドチャネル攻撃は、測定時にどの命令が実行されているかに関する知識が減少することによって上手くいかなくなる。所与の(命令、データ)ペアセットについて電力(またはエミッション)が分かっていても、さまざまなペアのうちの1つのために一致を見つけることは、さまざまな時間窓とともにさまざまな時間歪曲要因(time warp factor)を試みることを含み得る。フォールト220を注入する時刻t
kを見つけるという問題もより難しくなる。
【0051】
多くの他の使途および用途の中で、本開示の方法、装置およびシステムは、たとえばフォールト注入攻撃および/または差分サイドチャネル攻撃が懸念されるハードウェアセキュリティアプリケーションで使用されてもよい。サイドチャネル攻撃およびフォールト注入攻撃に対して防御するためのアプローチが存在しているが、当該アプローチのうちのいずれも、本開示の方法およびシステムにおいて提供される態様でのクロック周期ランダム化を提供しないまたは含まない。
【0052】
本明細書では、「ランダムな」、「ランダム性」、「ランダム化」、「ランダムに」などを実現する実施形態は、当業者によって認識されるであろうように、「疑似ランダムな」、「疑似ランダム性」、「疑似ランダム化」、「疑似ランダムに」などを用いてそうされてもよい。
【0053】
図3は、クロック周期ランダム化を用いて暗号攻撃に対して防御するための例示的なハイレベルシステム300を示す。集積回路、チップまたはシステムオンチップなどのデバイス(図示せず)は、暗号化された通信などの暗号化動作を含む安全な動作を含む動作を
提供する。デバイスは、動作を提供するために、入力クロック360によって駆動またはクロックされる。システム300は、少なくとも安全な動作中にデバイスクロック速度をランダム化して、暗号攻撃から保護する。少なくとも1つの実施形態によれば、システム300は、t
FIXED310を発生させる固定遅延発生器と、t
VAR320を発生させる可変遅延発生器と、乱数発生器330とを備えるクロック周期ランダマイザ350を含み得る。例示的な実施形態では、t
VAR320を発生させる可変遅延発生器は、制御可能な可変遅延発生器であってもよい。クロック周期ランダマイザ350には入力クロック360が提供される。少なくとも1つの実施形態では、ハイレベルシステム300を統合することができるさらに大型のシステムまたはコンピューティングデバイスの設計中に確認されるごくわずかなジッタを除いて、入力クロック360は固定周期を有する。クロック周期ランダマイザ350は、システム300が統合されるデバイスの可変クロック信号駆動動作速度である可変クロック365を出力する。
【0054】
例示的な実施形態では、tFIXED310を発生させる固定遅延発生器は、tFIXED310の遅延を発生させる回路に含まれてもよい。例示的な実施形態では、tVAR320を発生させる可変遅延発生器は、tVAR320の遅延を発生させる回路に含まれてもよい。例示的な実施形態では、tVAR320を発生させる可変遅延発生器は、乱数発生器330の出力に基づいて制御されてもよく、当該出力は、乱数または疑似乱数である。
【0055】
例示的な実施形態では、t
VAR320を発生させる可変遅延発生器は、トリムコード発生器500(
図5)の出力に基づいて制御されてもよい。例示的な実施形態では、t
FIXED310を発生させる固定遅延発生器、t
VAR320を発生させる可変遅延発生器、および乱数発生器は、接続されてもよい。
【0056】
例示的な実施形態では、t
VAR320を発生させる可変遅延発生器(
図3)は、インバータ430a(
図4)と、抵抗器445aと、可変キャパシタ440aとを含み得る。
【0057】
例示的な実施形態では、t
FIXED310を発生させる固定遅延発生器(
図3)は、キャパシタ420(
図4)と、抵抗器415aと、キャパシタ425aとを含み得る。例示的な実施形態では、乱数発生器330は、トリムコード発生器500(
図5)の一部であってもよい。
【0058】
例示的な実施形態では、t
FIXED310を発生させる固定遅延発生器(
図3)は、t
FIXED発生器710(
図7)であってもよい。例示的な実施形態では、t
VAR320を発生させる可変遅延発生器は、タウ(τ)遅延発生器720と、t
VAR320を発生させる可変遅延発生器を備える回路にタウ(τ)遅延発生器720を接続したり当該回路からタウ(τ)遅延発生器720を切り離したり切り替えるマルチプレクサとを含み得る。
【0059】
例示的な実施形態では、入力クロック360(
図3)は、ある長さの周期Pを有してもよい。(実際には、Pは、ゼロではないジッタ量を有するが、ハイレベルの説明のために、Pは、1つのクロックサイクルから次のクロックサイクルまで一貫していると見なすことができる。)例示的な実施形態では、出力可変クロック365は、ある長さの周期P+R×Dを有してもよく、Rはランダム変数または疑似ランダム変数であり、Dは定数である。
【0060】
デバイス内のシステム300(
図3)の適切な動作のために、固定遅延310は、少なくともデバイスがサポートできる最小周期(たとえば、最高周波数)であるべきである。可変遅延320は、何らかの最大値t
MAXによって有界であり得る。なお、t
MAXの
値を大きくすることによって、サイドチャネル攻撃およびフォールト注入攻撃を上手くいきにくくし得るが、有効クロック周波数を低下させることによってシステム性能も低下し得る。少なくとも1つの実施形態によれば、可変遅延320は、アナログまたはデジタル制御信号によって設定される。可変遅延320(
図3)の実現例はリングオシレータを含み得るが、他の実現例も可能である。システム300は、それに対してセキュリティを提供するためにさまざまなデバイスの一部分であってもよく、またはさまざまなデバイスに組み込まれてもよく、このようなデバイスは、たとえばセキュリティ集積回路(セキュリティ「チップ」としても知られている)、システムオンチップ(「SoC」としても知られている)、またはコンピューティングデバイスもしくは通信デバイスを含む。
【0061】
乱数発生器330は、たとえばシステム300がその一部分であるかまたは組み込まれるシステムまたはデバイスにおいて何らかのランダムパラメータまたはイベントを測定する真性乱数発生器(true random number generator:TRNG)、線形フィードバックシフトレジスタなどの疑似乱数発生器、それらの何らかの組み合わせ、またはランダム性もしくは疑似ランダム性を提供する何らかの他の実現例であってもよい。
【0062】
本開示の1つ以上の実施形態によれば、システムの実現例の詳細は、
図3に示される例示的なシステム300のものとは異なっていてもよい。たとえば、可変遅延t
VAR320のいずれかの実現例は、特定の最小遅延を有する。この最小遅延は、固定遅延t
FIXED310を設計する際に考慮され得る。
【0063】
出力可変クロック365は、クロック周期ランダマイザが可変クロック周期を発生させるデバイスの最大周波数によって下に有界である。いくつかのデバイス、たとえば動的電圧スケーリングおよび/または動的周波数スケーリングを用いるデバイスでは、クロックの最大周波数は、それ自体が可変である。最大周波数は変化するので、出力可変クロック365の下界も変化する。したがって、可変周期がP+R×Dとして表わされ、Rが間隔[0...1]における値である場合、Pは、クロック周期ランダマイザが可変クロック周
期を発生させるデバイスの最大周波数によって下に有界である。
【0064】
図4は、インバータ、可変キャパシタおよび論理ゲートの構成を含むクロック周期ランダム化を発生させるための例示的なシステム400を示す。
図4は、論理ゲート410と、抵抗器415a~415dと、インバータ420a~420dと、キャパシタ425a~425dと、インバータ430a~430dと、可変キャパシタ440a~440dと、抵抗器445a~445dと、クロック周期ランダマイザ450と、入力クロック460と、出力可変クロック465と、信号用接地470a~470dと、信号用接地475a~475dと、固定遅延線480と、可変遅延線485と、出力可変クロック線487と、コントローラ490とを含む。コントローラ490は、トリムコード発生器500(
図5)を備え得る。代替的に、コントローラ490は、トリムコード発生器500に接続されて、トリムコード発生器500から少なくとも1つのトリムコードを受信してもよい。コントローラ490は、当該少なくとも1つのトリムコードを可変キャパシタ440a~440dに提供する。
【0065】
図4に示される例示的な実施形態では、固定遅延t
FIXED310(
図3)の大部分は、4つのインバータ420a~420d、抵抗器415a~415dおよびキャパシタ425a~425dの組み合わせによって提供される。可変遅延は、たとえばクロックの立ち下がりエッジを押し出すことによって提供されてもよい。たとえば、この可変遅延は、4つのインバータ430a~430d、4つの抵抗器445a~445dおよび4つの可変キャパシタ440a~440dの組み合わせによって実現されてもよい。4つの抵抗器445a~445dおよび4つの可変キャパシタ440a~440dは、それらが実現する時定数に基づいて可変遅延を提供し得て、この時定数を実現することは、少なくとも
1つのトリムコードを適用することを含み得る。少なくとも1つのトリムコードは、可変遅延t
VAR320を実現するように異なるサイクルで変更されてもよい。
【0066】
図4は、論理ゲート410をNANDゲートとして示しているが、実施形態はそれに限定されるものではない。別の例示的な実施形態では、クロック周期ランダマイザは、NANDゲートの代わりにNORゲートなどのロジックで実現されてもよい。
【0067】
例示的な実施形態では、システム400は、以下の態様で動作し得る。入力クロック460は、クロック信号をコントローラ490に提供する。少なくとも1つの実施形態では、入力クロック460は、固定周期を有するクロックであってもよく、ごくわずかな量のジッタが除外され、入力クロック460は、クロック周期ランダマイザ450がその一部分であるかまたは組み込まれるデバイスを駆動し得る。少なくとも1つの実施形態では、暗号アルゴリズムの実行中またはセキュリティが要求される手順中に、入力クロック460は、クロック周期ランダマイザ450が出力可変クロック465を提供するように動作するように、クロック周期ランダマイザ450を駆動してもよく、またはクロックをクロック周期ランダマイザ450に提供してもよい。少なくとも1つの実施形態では、出力可変クロック465は、セキュリティが要求される動作を実行する回路またはプロセッサを駆動する可変クロック信号を提供し得る。
【0068】
コントローラ490は、制御信号を可変キャパシタ440a~440dに提供する。当該制御信号は、少なくとも1つのトリムコードを備え得る。
【0069】
図4に基づく実施形態では、クロック周期ランダマイザ450は、キャパシタ470a~470dと、可変キャパシタ445a~445dとを両方とも備える。少なくとも1つの実施形態では、設計の1つの利点は、トリムコードをコントローラ490によって可変キャパシタ440a~440dに同期的に提供できることである。すなわち、入力クロック460と可変キャパシタ440a~440dにトリムコードを提供するコントローラ490とは、同期システム設計を有し得る。
【0070】
可変遅延チェーン(インバータ430a~430d、抵抗器445a~445d、可変キャパシタ475a~475d)は、制御信号に従って制御されるので、可変遅延チェーンの時定数τは、制御信号に基づいて変化する。したがって、可変遅延チェーンから論理ゲート410に入力される可変遅延線485における電圧は、制御信号に基づいて変化する。固定遅延線480からの電圧および可変遅延線485からの電圧が論理ゲート410に到達すると、論理ゲート410は、出力可変クロック線487を介してハイからローまたはローからハイへのクロック信号の変化を生じさせ、出力可変クロック465がもたらされる。信号用接地470a~470dおよび信号用接地475a~475dは、回路内の各段に基準電圧を提供する。制御信号490は、ランダム性または疑似ランダム性をクロック周期ランダマイザ450に提供して、τにランダムまたは疑似ランダムな変化を生じさせる。
【0071】
図4に示されるクロック周期ランダマイザ450は、インバータと抵抗器とキャパシタと信号用接地とを備えるセットの4つのインスタンスを含む。さらに、
図4に示されるクロック周期ランダマイザ450は、インバータと抵抗器と可変キャパシタと信号用接地とを備えるセットの4つのインスタンスを含む。しかし、実施形態はそれに限定されるものではない。セットの数は設計パラメータまたは好みに応じて変化し得るということを当業者は認識するであろう。
【0072】
少なくとも1つの実施形態では、可変キャパシタ440a~440dは、一群の線形キャパシタ(たとえば、
図10に図示されており、以下でさらに詳細に説明する)として実
現されてもよい。この実施形態では、キャパシタ440a~440dへの制御信号は、キャパシタ440a~440dを回路に接続したり回路から切り離したり切り替える1つ以上のスイッチを動作させ得る。この実施形態では、出力可変クロック465が突然故障しないように、固定遅延チェーン(インバータ420a~420d、抵抗器415a~415d、キャパシタ425a~425d)を横断するパルスがない場合にのみキャパシタの設定を更新するように注意すべきである。
【0073】
少なくとも1つの他の実施形態では、可変キャパシタ440a~440dは、底板電圧が変更されるバラクタとして実現されてもよい。実施形態では、可変キャパシタ440a~440dへの制御信号は、バラクタの底板への電圧を変化させるように動作し得る。
【0074】
上記され、
図3および
図4に示される例示的な実現例に加えて、またはそれらの例示的な実現例の代わりに、多くの他の可能な実現例がある。たとえば、可変遅延(t
VAR320)を提供する要素は、個々の段だけでなく各段に可変キャパシタを含めることによって、より均一にリングの周囲に分散されてもよい。少なくとも1つの他の実施形態では、リング全体に対する供給は、入力基準がサイクルごとに変化する電圧レギュレータ(たとえば、
図11に図示されており、以下でさらに詳細に説明する)によって駆動されてもよい。代替的に、リング内の有効な要素の数は、同期ミラー遅延(たとえば、
図7に図示されており、以下でさらに詳細に説明する)のマルチプレクサ構造または変形形態を用いて変更されてもよい。
【0075】
1つ以上の他の実施形態によれば、遅延を変化させるために位相補間器が用いられてもよい。このような実施形態では、位相補間器制御装置のサブセットは、傾斜などの公知のパターンではなくランダムまたは疑似ランダム入力に設定される。
【0076】
【0077】
少なくとも1つの実施形態では、線形キャパシタ1040a~1040nは、デジタル時間変換器(digital to time converter:DTC)に類似しており、そのさまざまな実
現例は当業者に公知である。
【0078】
少なくとも1つの実施形態では、線形キャパシタ1040a~1040n(または、少なくとも1つの実施形態では、線形キャパシタ1040a~1040nを備える要素のn個のセット)は、同一であってもよく(または、「実質的に同一」であってもよく、たとえば同一の部品番号もしくは同一のモデル番号を有してもよく)、その場合、スイッチ1030a~1030nに適用されるトリムコードセットにおける少なくともいくつかのトリムコードは、アルファ符号(たとえば、温度計符号)に基づき得る。
【0079】
少なくとも1つの実施形態では、線形キャパシタ1040a~1040n(または、少なくとも1つの実施形態では、線形キャパシタ1040a~1040nを備える要素のn個のセット)は、二進法で重み付けされてもよく、その場合、トリムコードセットにおける少なくともいくつかのトリムコードは、本明細書では、二進数としてインクリメントする「二進法で重み付けされたトリムコード」と呼ばれる。
【0080】
少なくとも1つの実施形態では、線形キャパシタ1040a~1040n(または、少なくとも1つの実施形態では、線形キャパシタ1040a~1040nを備える要素のn個のセット)は、同一の線形キャパシタ(線形キャパシタを備える要素のn個のセット)と二進法で重み付けられた線形キャパシタ(線形キャパシタを備える要素のn個のセット)との組み合わせであってもよく、上位ビットに対応する線形キャパシタ(線形キャパシタを備える要素のn個のセット)は、二進法で重み付けされ、対応するスイッチに適用される二進法で重み付けされたトリムコードによって制御され、下位ビットに対応する線形キャパシタは、同一であり、アルファ符号に基づいてトリムコードによって制御される。
【0081】
線形キャパシタ1040a~1040nは、線形キャパシタであってもよいが、実施形態はそれに限定されるものではない。たとえば、線形キャパシタ1040a~1040nの代わりのキャパシタは、ソースおよびドレインが短絡したCMOSデバイスに基づき、キャパシタンスは非線形である。
【0082】
図11は、例示的な実施形態に係る、コントローラと基準電圧源と電圧レギュレータと直列の奇数個のインバータとを含むクロック周期ランダム化を発生させるための例示的なシステムを示す回路図である。
図11は、インバータ1130a~1130(2n+1)と、電圧レギュレータ1150と、コントローラ1190と、出力可変クロック線1187と、出力可変クロック1165と、基準電圧VREFとを含む。
図11では、リング全体に対する供給は、入力基準VREFがサイクルごとに変化する電圧レギュレータ1150によって駆動され得る。リングは、直列の奇数個のインバータを含み、すなわちリング内のインバータの数は2n+1であり、n>0である。リング内の全ての段は、電圧レギュレータ1150によって駆動される。それらの段はインバータとして示されているが、実施形態はそれに限定されるものではない。電圧レギュレータ1150からの出力は、コントローラ1190によって提供される基準信号VREFによって制御される。VREFは、入力が周期的に変化するデジタルアナログ変換器(DAC)によって駆動されて、周期的な変化を発生させ、この実施形態では、コントローラ1190がDACを含んでもよい。少なくとも1つの他の実施形態では、電圧レギュレータ1150がDACの機能を含んでもよく、この実施形態では、電圧レギュレータ1150は、デジタル電圧制御入力を有してもよい。
【0083】
図5は、トリムコードを発生させるための例示的なシステムを示す。
図5は、トリムコード発生器500と、乱数発生器530と、シード(seed)543と、mビット疑似ラン
ダム二進数列発生器515と、論理ゲート510と、フリップフロップ520a~520mを備えるシフトレジスタと、モジュラー算術計算機512と、レジスタ540a~540pを備えるレジスタバンクと、マルチプレクサ550とを含む。レジスタ540a~540pを備えるレジスタバンクは、16個のレジスタを含み得るが、実施形態はそれに限定されるものではない。レジスタバンク内のレジスタ540の数は、設計パラメータまたは好みに基づいて、当業者によって選択されてもよい。
【0084】
少なくとも1つの実施形態によれば、トリムコード発生器500は、疑似ランダム性を用いてトリムコードを出力して、トリムコードセットからのどのトリムコードを出力すべきであるかを判断する。例示的な実施形態では、トリムコードは、オシレータの一部を構成するキャパシタアレイの制御のためのものであり得る。一般に、トリムコード発生器500のアプローチは、どれぐらい周波数を変化させるかをハードウェアにおいて把握するのではなく、対象回路にトリムコードを適用した結果が所望の周波数を中心とするようにプログラム可能なトリムコードセットから単にランダムに選択するというものである。
【0085】
例示的な実施形態では、乱数発生器530は、シード543をmビット疑似ランダム二進数列発生器515に提供し、mビット疑似ランダム二進数列発生器515は、mビット疑似ランダム二進数列(mPRBS)をモジュラー算術計算機512に提供する。
【0086】
mビット疑似ランダム二進数列発生器515を更新することができる方法がいくつかある。mビット疑似ランダム二進数列発生器515によって出力されるmPRBSが十分な長さを有する場合には、暗号化ルーチン当たり一度だけmビット疑似ランダム二進数列発生器515へのシード543を更新するだけで十分であろう。少なくとも1つの他の実施形態では、シード543は、有限状態マシンの制御下で周期的に更新されてもよい。
【0087】
モジュラー算術計算機512は、mPRBS mod λを求め得て、λは正の整数である。モジュラー算術計算機512によって求められた値は、マルチプレクサ550に提供されて、レジスタ540a~540pを備えるレジスタバンクの特定のレジスタに保持される値がマルチプレクサ550からの出力として提供されるようにマルチプレクサ550を制御する。例示的な実施形態では、マルチプレクサ550からの出力は、クロック周期ランダマイザ450を制御するための制御信号としてコントローラ490(
図4)に提供されてもよい。別の実施形態では、マルチプレクサ550の出力は、クロック周期ランダマイザ450の一部であり得る一群の線形キャパシタ1050を制御するための制御信号としてコントローラ1090(
図10)に提供されてもよい。
【0088】
例示的な実施形態では、乱数発生器530は、真性乱数発生器として実現される。例示的な実施形態では、mビット疑似ランダム二進数列発生器515は、線形フィードバックシフトレジスタ(linear feedback shift register:LFSR)として実現される。例示的な実施形態では、mの値は、所望のレベルの疑似ランダム性が達成されるように選択される。論理ゲート510はXNORゲートとして示されているが、mビット疑似ランダム二進数列発生器515はそれに限定されるものではないということを当業者は認識するであろう。LFSRを実現する方法は多数あり、LFSRに含まれる論理ゲートは、XNORゲート以外であってもよい。
【0089】
例示的な実施形態では、λは、マルチプレクサ550に接続されたレジスタバンク内のレジスタ540a~540pの数に等しい。例示的な実施形態では、モジュラー算術計算機512は、mPRBS mod 16を求める。例示的な実施形態では、レジスタ540a~540pに保持される値は、コントローラ490に供給され得るトリムコードである。コントローラ490に供給される可能なトリムコードの数は、クロック周期ランダマイザ450内の可変キャパシタアレイがどのようにして実現されるかに依存し得る。例示
的な実施形態では、クロック周期ランダマイザ450は、キャパシタ440a~440d(または、1040a~1040n)を切り換える複数のスイッチ(たとえば、1030a~1030n(
図10))を含み得て、スイッチセットは、クロック周期ランダマイザ450の動作にとって許容できる(たとえば、有用な、または有効な、または合法的な)状態数σを有し得る。例示的な実施形態では、σ個のレジスタ540a~540pが望ましいであろう。
【0090】
図6は、クロック周期ランダム化を発生させるための例示的な方法600を示す。本明細書に記載される少なくとも1つの実施形態によれば、プロセス600は、ブロック605~620を含み得る。しかし、本開示の1つ以上の他の実施形態によれば、例示的なプロセス600は、
図6に示され、以下でさらに詳細に説明するものに加えて、またはそれらの代わりに、1つ以上の他のステップまたは動作を含んでもよい。
【0091】
【0092】
最大動作周波数fMAXは、CPU、ASIC、または暗号アルゴリズムを実行して出力可変クロック365,465または1165を受信する他の集積回路の仕様に基づき得る。
【0093】
ブロック610において、特定の性能レベルを維持しながら(たとえば、性能閾値を満たしながら)デバイス全体が動作可能な最大期間(tMAX)について判断し得る。
【0094】
最大期間tMAXは、設計の好みに依存し得る。暗号アルゴリズムの複雑さが比較的低く、暗号アルゴリズムが汎用プロセッサではなくASIC上で実行される場合には、tMAXは比較的低くなるが、ASICは、汎用プロセッサ上で暗号アルゴリズムを実行する以上にコストがかかる可能性がある。一方、暗号アルゴリズムの複雑さが比較的高く、暗号アルゴリズムが汎用プロセッサ上で実行される場合には、tMAXは、設計の好みおよびパラメータにとってさらに重要である。なぜなら、出力可変クロック365,465または1165によって駆動される暗号アルゴリズムの実行には、比較的多くの時間が必要であるからである。
【0095】
ブロック615において、クロック周期の最小期間を、(ブロック605において求められた)同期システム設計が動作可能な最小期間(tMIN)に設定し得る。
【0096】
ブロック620において、クロック周期の変化を、ブロック610において求められた最大期間とブロック605において求められた最小期間との間の差、または(tMAX)-(tMIN)に設定し得る。
【0097】
図7は、同期ミラー遅延(SMD)を含むクロック周期ランダム化を発生させるための例示的なシステム700を示す。例示的な実施形態では、固定遅延t
FIXED310は、t
FIXED発生器710によって提供される。本明細書に記載される少なくとも1つの実施形態によれば、t
FIXED発生器710は、容量性またはRCローディングによりインバータを用いて実現されてもよい。しかし、1つ以上の他の実施形態によれば、t
FIXED発生器710は、遅延を発生させる任意の回路で実現されてもよい。示されている例では、t
FIXED発生器710はオシレータのための反転も発生させるが、この機能は、リング内の他の場所で提供されてもよい。
【0098】
遅延の可変部分(
図3のt
VAR320)は、選択信号Sel
0,Sel
1,...,S
el
n(nは、全ミラー遅延段の数である)を用いて選択され得る。タウ(τ)遅延発生器720の各々は、固定遅延を有する。所与の信号Sel
iを高く選択することにより、2τiの可変遅延がもたらされる(各々のタウ(τ)遅延発生器720は同一の遅延量を提供するように実現されるものとする)。例示的な実施形態では、所与の信号Sel
iを高く選択することは、マルチプレクサ730
iが選択信号を受信することによってなされ得る。iの選択をランダムまたは疑似ランダムにすることによって、オシレータの遅延全体は、t
FIXEDとt
FIXED+2τnとの間でランダムまたは疑似ランダムに変化する。
【0099】
例示的な実施形態では、マルチプレクサ730i、および、それが回路に接続したり回路から切り離したり切り替えるタウ(τ)遅延発生器720を備える回路は、遅延ユニットと呼ぶことができる。
【0100】
例示的な実施形態では、コントローラ790は、選択信号Sel0,Sel1,...,
Selnを提供する。例示的な実施形態では、コントローラ790は、トリムコード発生器500である。例示的な実施形態では、コントローラ790は、トリムコード発生器500であり、マルチプレクサ550の出力は、長さnのビットベクトルである。例示的な実施形態では、コントローラ790は、σ個のレジスタ540a~540pを有するトリムコード発生器500であり、選択信号によって選択される合法的な状態の数はσである。
【0101】
図7における例は個別のマルチプレクサを示しているが、フォワードパスをリバースパスにループバックする多くの他の構成が等価であると考えられることに注目すべきである。
【0102】
図8は、例示的な実施形態に係る、暗号攻撃に対して防御するために少なくとも暗号化動作中にデバイスのクロック信号の可変クロック周期を発生させる方法800を示すブロック図である。
図8は、暗号化動作の起動(805)で開始する。本明細書に記載されるクロック周期ランダマイザの実施形態が暗号化動作を起動させることは必須ではなく、クロック周期ランダマイザ以外のデバイスまたはユニットが暗号化動作を起動させてもよい。暗号化動作がソフトウェアで実行される場合、当該ソフトウェアが、クロック周期ランダマイザを作動させて、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を開始してもよい(たとえば、クロック周期ランダマイザにそのような可変クロック周期を開始させてもよい)。暗号化動作が暗号化動作のためのハードウェア(たとえば、暗号化動作のためのASIC、セキュリティまたは暗号化コプロセッサなど)で実行される場合、当該暗号化動作のためのハードウェアの起動は、クロック周期ランダマイザを作動させて、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を開始してもよい(たとえば、クロック周期ランダマイザにそのような可変クロック周期を開始させてもよい)。一般に、暗号化動作が起動するまたは起動していることを判断するためのその他の従来のまたは公知の手段は、ロジックで補充されて、クロック周期ランダマイザを作動させて、少なくとも暗号化動作中にランダムなクロックレートでデバイスを駆動する出力可変クロックを生成するようにランダムに変化する可変クロック周期を開始してもよい(たとえば、クロック周期ランダマイザにそのような可変クロック周期を開始させてもよい)。
【0103】
クロック周期ランダマイザは、動作を開始する。
第一に、固定遅延発生器が固定遅延を発生させる(810)。固定遅延発生器は、抵抗器415a~415dとインバータ420a~420dとキャパシタ425a~425dとを含むクロック周期ランダマイザ450の一部などのRC回路を備え得る。少なくとも1つの他の実施形態では、固定遅延発生器は、t
FIXED発生器710を備えていてもよい。少なくとも1つの他の実施形態では、t
FIXEDは、
図11のVREFのパルス間の時間における時間成分であってもよい。少なくとも1つの他の実施形態では、t
FIXEDは、電圧レギュレータ1150がDAC機能を含む
図11の実施形態におけるデジタル電圧制御入力からのデジタル信号間の時間における時間成分であってもよい。
【0104】
第二に、可変遅延発生器が可変遅延を発生させる(820)。可変遅延発生器は、インバータ430a~430dと、抵抗器445a~445dと、可変キャパシタ440a~440dとを含み得て、トリムコード発生器500からトリムコードを受信し得る。少なくとも1つの実施形態では、可変遅延発生器は、タウ(τ)遅延発生器720と、マルチプレクサ730
0~730
nとを含んでもよく、コントローラ790から信号を受信してもよい。少なくとも1つの実施形態では、可変遅延発生器は、スイッチ1030a~1030nと、キャパシタ1040a~1040nとを含んでもよく、トリムコード発生器500によって発生されたトリムコードをコントローラ1090から受信してもよい。少なくとも1つの実施形態では、可変遅延t
VARは、
図11のVREFのパルス間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよい。少なくとも1つの他の実施形態では、t
VARは、電圧レギュレータ1150がDAC機能を含む
図11の実施形態におけるデジタル電圧制御入力からのデジタル信号間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよい。
【0105】
第三に、乱数発生器が乱数または疑似乱数を発生させる(830)。乱数発生器は、乱数発生器330または530であってもよい。
【0106】
第四に、当該乱数または疑似乱数に基づいて可変遅延の量を制御する(840)。可変遅延の量は、トリムコード発生器500およびコントローラ490,790または1090によって、当該乱数または疑似乱数に基づいて制御されてもよい。可変遅延の量は、コントローラ1190によって、当該乱数または疑似乱数に基づいて制御されてもよい。可変遅延の量は、デジタル信号を受信する電圧レギュレータ1150によって、当該乱数または疑似乱数に基づいて制御されてもよく、電圧レギュレータ1150はDAC機能を含む。
【0107】
第五に、当該固定遅延および可変遅延に基づいてクロック信号の可変周期を制御する(850)。クロック信号の可変周期は、トリムコード発生器500およびコントローラ490,790または1090によって、当該固定遅延および可変遅延に基づいて制御されてもよい。少なくとも1つの実施形態では、クロック信号の可変周期は、コントローラ1190によって、当該固定遅延および可変遅延に基づいて制御されてもよい。少なくとも1つの実施形態では、クロック信号の可変周期は、デジタル信号を受信する電圧レギュレータ1150によって、当該固定遅延および可変遅延に基づいて制御されてもよく、電圧レギュレータ1150はDAC機能を含む。
【0108】
第六に、少なくとも暗号化動作中に可変クロック周期でデバイスを駆動する(860)。デバイスは、出力可変クロック365,465または1165によって駆動されてもよい。
【0109】
図9は、例示的な実施形態に係る、暗号攻撃に対して防御するために、少なくとも暗号
化動作中に、関連付けられたデバイスのクロックのクロック周期をランダム化する方法900を示すブロック図である。第一に、トリムコードセットを求め(910)、当該セットは、少なくとも第1のトリムコードと第2のトリムコードとを含む。トリムコードセットは、トリムコード発生器500によって発生または求められ得る。トリムコードセットは、トリムコードセットにおける各トリムコードが備え得るビット数に基づいて当業者によって求められてもよい。トリムコードセットにおける各トリムコードのビット数に関連する要因としては、トリムコードを用いて制御する要素の数、および、トリムコードを用いて制御する要素の所望のまたは許容できる状態の数を挙げることができる。
【0110】
第二に、物理的電子ハードウェアが乱数または疑似乱数を発生させる(920)。乱数または疑似乱数は、乱数発生器330または530によって発生され得る。
【0111】
第三に、当該乱数または疑似乱数に基づいてトリムコードセットから第1のトリムコードを選択する(930)。トリムコードセットからの第1のトリムコードは、トリムコード発生器500によって当該乱数または疑似乱数に基づいて選択されてもよく、トリムコード発生器500は、mビット疑似ランダム二進数列発生器515と、論理ゲート510と、フリップフロップ520a~520mを備えるシフトレジスタと、モジュラー算術計算機512と、レジスタ540a~540pを備えるレジスタバンクと、マルチプレクサ550とを含む。
【0112】
第四に、当該乱数または疑似乱数に基づいてトリムコードセットから第2のトリムコードを選択する(940)。トリムコードセットからの第2のトリムコードは、トリムコード発生器500によって当該乱数または疑似乱数に基づいて選択されてもよく、トリムコード発生器500は、mビット疑似ランダム二進数列発生器515と、論理ゲート510と、フリップフロップ520a~520mを備えるシフトレジスタと、モジュラー算術計算機512と、レジスタ540a~540pを備えるレジスタバンクと、マルチプレクサ550とを含む。
【0113】
第五に、第1のトリムコードを可変遅延発生器に提供し(950)、可変遅延発生器は、トリムコードセットからのいずれかのトリムコードに基づいて動作する要素を含む。少なくとも1つの実施形態では、トリムコードセットは、許容できる状態のためのトリムコードのみを含んでもよく、少なくとも1つの実施形態では、特定の長さのビットベクトルの全ての順列が、許容できる状態のためのトリムコードであるとは限らない。なぜなら、いくつかの順列は、適用されると、有用でなく、望ましくなく、有効でなく、および/または、合法的でない構成(たとえば、ハードウェア構成またはスイッチ構成)をもたらし得るからである。可変遅延発生器は、インバータ430a~430dと、抵抗器445a~445dと、可変キャパシタ440a~440dとを含んでもよく、トリムコード発生器500から第1のトリムコードおよび第2のトリムコードを受信してもよい。少なくとも1つの実施形態では、可変遅延発生器は、タウ(τ)遅延発生器720と、マルチプレクサ730
0~730
nとを含んでもよく、コントローラ790から信号を受信してもよく、当該信号は、第1のトリムコードと第2のトリムコードとを備える。少なくとも1つの実施形態では、可変遅延発生器は、スイッチ1030a~1030nと、キャパシタ1040a~1040nとを含んでもよく、コントローラ1090から第1のトリムコードおよび第2のトリムコードを受信してもよい。少なくとも1つの実施形態では、可変遅延t
VARは、
図11のVREFのパルス間の時間におけるランダムまたは疑似ランダムに変化する時間成分であってもよく、ランダムまたは疑似ランダムな変化は、第1のトリムコードまたはおよび第2のトリムコードの機能であり得て、当該機能は、集積回路を備えるロジックによって、またはコントローラ1190によって、求められるまたは計算される。少なくとも1つの他の実施形態では、t
VARは、電圧レギュレータ1150がDAC機能を含む
図11の実施形態におけるデジタル電圧制御入力からのデジタル信号間の時
間におけるランダムまたは疑似ランダムに変化する時間成分であってもよく、当該デジタル信号は、第1のトリムコードもしくは第2のトリムコードの機能であり、または第1のトリムコードもしくは第2のトリムコードを備える。
【0114】
第六に、第2のトリムコードを可変遅延発生器に提供し(960)、第1のトリムコードが可変遅延発生器に提供されるとき、関連付けられたデバイスのクロック周期は第1の時間であり、第2のトリムコードが可変遅延発生器に提供されるとき、関連付けられたデバイスのクロック周期は第2の時間であり、第1の時間は第2の時間よりも少なくとも1%長い。
【0115】
本明細書において、「暗号化動作」は、暗号アルゴリズムに含まれる動作を備える。「暗号化動作」はさらに、秘密鍵上での動作を備える。暗号アルゴリズムは、連邦情報処理規格刊行物202(SHA-3規格)および連邦情報処理規格刊行物197(AES規格)に規定されるアルゴリズムを含むが、それらに限定されるものではない。
【0116】
上記の詳細な説明では、ブロック図、フローチャートおよび/または例を用いることによってデバイスおよび/またはプロセスのさまざまな実施形態について説明してきた。このようなブロック図、フローチャートおよび/または例が1つ以上の機能および/または動作を含む限りにおいて、このようなブロック図、フローチャートまたは例の中の各機能および/または動作は、さまざまなハードウェア、ソフトウェア、ファームウェア、または実質的にそれらのいずれかの組み合わせによって、個々におよび/または一括して実行されてもよいということが当業者によって理解されるであろう。少なくとも1つの実施形態によれば、本明細書に記載される主題のいくつかの部分は、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、フィールドプログラマブルゲー
トアレイ(Field Programmable Gate Array:FPGA)、デジタル信号プロセッサ(digital signal processor:DSP)、または他の集積フォーマットによって実現されても
よい。しかし、本明細書に開示される実施形態のいくつかの局面は、全体または一部が、1つ以上のコンピュータで実行される1つ以上のコンピュータプログラムとして、1つ以上のプロセッサで実行される1つ以上のプログラムとして、ファームウェアとして、または実質的にそれらのいずれかの組み合わせとして、集積回路において同等に実現されてもよく、回路を設計することおよび/またはソフトウェアおよび/またはファームウェアのためのコードを書き込むことは、本開示を踏まえると十分に当業者の技術の範囲内である、ということを当業者は認識するであろう。
【0117】
本明細書における実質的にいずれの複数形および/または単数形の用語の使用に関しても、当業者は、文脈および/または適用例に適したように、複数形から単数形に、および/または、単数形から複数形に変換することができる。さまざまな単数形/複数形置換は、明確にする目的で本明細書に明記されている。
【0118】
このように、主題の特定の実施形態について説明してきた。他の実施形態も以下の特許請求の範囲の範囲内である。場合によっては、請求項に記載されている動作は、異なる順序で実施されたとしても依然として望ましい結果を達成することができる。また、添付の図面に示されているプロセスは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序を必ずしも必要としない。特定の実現例では、マルチタスクおよび並列処理が有利であろう。