IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-546936ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理
<>
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図1
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図2
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図3
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図4
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図5
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図6
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図7
  • 特表-ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-26
(54)【発明の名称】ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理
(51)【国際特許分類】
   G09C 1/00 20060101AFI20241219BHJP
【FI】
G09C1/00 610A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024535870
(86)(22)【出願日】2023-05-15
(85)【翻訳文提出日】2024-08-06
(86)【国際出願番号】 US2022081844
(87)【国際公開番号】W WO2023115022
(87)【国際公開日】2023-06-22
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】フォーゲル,ピルミン・ローベルト
(57)【要約】
本明細書は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理のための技法、装置、及びシステムを開示する。態様では、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理により、回路リソース(例えば、フリップフロップ、データ)を集積回路(IC)の部分間で共有できるようになる。具体的には、ガロア体(GF)乗算器の入力レジスタと、高度暗号化標準の置換ボックス(S-Box)のステージ内のパイプラインレジスタが、単一のフリップフロップを共有するように実装できる。一部のICでは、入力が更新されるたびに乱数が提供される複数のGF乗算器を備える複数個のS-Boxが使用され得る。この場合、エントロピー生成回路の必要性を制限するために、第1S-Boxの前ステージからの出力を、第2S-Boxの後続ステージに乱数として提供することができる。このように、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理により、セキュリティに影響を与えることなく回路コストと回路規模を削減できる。
【特許請求の範囲】
【請求項1】
高度暗号化標準の置換ボックスを備えた集積回路であって、
マスクされたガロア体乗算器と、
前記マスクされたガロア体乗算器への少なくとも2つの入力レジスタと、
前記高度暗号化標準の置換ボックスの第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタと、
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第1入力レジスタと、前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタのうちの第1パイプラインレジスタを含む、第1対のレジスタで動作するように構成された第1フリップフロップと、
前記少なくとも2つの入力レジスタのうちの第2入力レジスタと、前記少なくとも2つのパイプラインレジスタのうちの第2パイプラインレジスタを含む、第2対のレジスタで動作するように構成された第2フリップフロップとを含む前記第1ステージを含む、集積回路。
【請求項2】
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタは、4つの入力レジスタを含み、
前記高度暗号化標準の置換ボックスの前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタは、4つのパイプラインレジスタを含む、請求項1に記載の集積回路。
【請求項3】
前記第1ステージは、
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第3入力レジスタと、前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタのうちの第3パイプラインレジスタを含む、第3対のレジスタで動作するように構成された第3フリップフロップと、
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第4入力レジスタと、前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタのうちの第4パイプラインレジスタを含む、第4対のレジスタで動作するように構成された第4フリップフロップとをさらに含む、請求項2に記載の集積回路。
【請求項4】
前記マスクされたガロア体乗算器はマスクされた第1ガロア体乗算器であり、
前記高度暗号化標準の置換ボックスは、
マスクされた第2ガロア体乗算器と、
前記マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタと、
前記高度暗号化標準の置換ボックスの前記第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタと、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第3入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第3パイプラインレジスタを含む、第3対のレジスタで動作するように構成された第3フリップフロップと、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第4入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第4パイプラインレジスタを含む、第4対のレジスタで動作するように構成された第4フリップフロップとを含む前記第2ステージをさらに含む、請求項1に記載の集積回路。
【請求項5】
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタは、4つの入力レジスタを含み、
前記高度暗号化標準の置換ボックスの前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタは、4つのパイプラインレジスタを含む、請求項4に記載の集積回路。
【請求項6】
前記高度暗号化標準の置換ボックスは、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第5入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第5パイプラインレジスタを含む、第5対のレジスタで動作するように構成された第5フリップフロップと、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第6入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第6パイプラインレジスタを含む、第6対のレジスタで動作するように構成された第6フリップフロップとを含む前記第2ステージをさらに含む、請求項4に記載の集積回路。
【請求項7】
前記第1対のレジスタ及び前記第2対のレジスタはマスクまたはマスクデータを格納する、請求項1に記載の集積回路。
【請求項8】
回路合成ツールは、前記高度暗号化標準の置換ボックスの少なくとも一部に対して無効にされている、請求項1に記載の集積回路。
【請求項9】
集積回路であって、
少なくとも2つの高度暗号化標準の置換ボックスを備え、第1の高度暗号化標準の置換ボックスは、
第1ガロア体乗算器を含む前ステージを含み、前記第1ガロア体乗算器の出力は、前記少なくとも2つの高度暗号化標準の置換ボックスのうち追加の高度暗号化標準の置換ボックスの後続ステージで第2ガロア体乗算器の乱数入力に結合される、集積回路。
【請求項10】
前記第1ガロア体乗算器の出力は、
前記追加の高度暗号化標準の置換ボックスの前記後続ステージ内の第3ガロア体乗算器の乱数入力に、または、
前記少なくとも2つの高度暗号化標準の置換ボックスのうち別の高度暗号化標準の置換ボックスの前記後続ステージ内の第4ガロア体乗算器の乱数入力に、さらに結合され、前記別の高度暗号化標準の置換ボックスは前記追加の高度暗号化標準の置換ボックスとは異なる、請求項9に記載の集積回路。
【請求項11】
前記第1ガロア体乗算器の前記出力の第1部分は、前記第2ガロア体乗算器の前記乱数入力に結合され、前記出力の前記第1部分は、前記出力よりも少ないビット数を有し、
前記第1ガロア体乗算器の前記出力の第2部分は、前記第3ガロア体乗算器の前記乱数入力に結合され、前記出力の前記第2部分は、前記出力よりも少ないビット数を有する、請求項10に記載の集積回路。
【請求項12】
前記第1ガロア体乗算器の前記出力は第1出力であり、
前記第1の高度暗号化標準の置換ボックスの前記前ステージは、第2出力を有する第5ガロア体乗算器をさらに含み、
前記第5ガロア体乗算器の前記第2出力の第3部分は、前記第2ガロア体乗算器の前記乱数入力に結合され、前記第2出力の前記第3部分は、前記第2出力よりも少ないビット数を有し、
前記第5ガロア体乗算器の前記第2出力の第4部分は、前記第3ガロア体乗算器の前記乱数入力に結合され、前記第2出力の前記第4部分は、前記第2出力よりも少ないビット数を有する、請求項11に記載の集積回路。
【請求項13】
前記第1ガロア体乗算器からの前記出力は、前記第1ガロア体乗算器の部分結果を含み、前記部分結果は、マスクまたはマスクデータの少なくとも一部を含む、請求項9に記載の集積回路。
【請求項14】
前記少なくとも2つの高度暗号化標準の置換ボックスは、高度暗号化標準の置換ボックスの第1セットであり、
前記集積回路は、
少なくとも2つの異なる高度暗号化標準の置換ボックスを含む高度暗号化標準の置換ボックスの第2セットをさらに含み、前記少なくとも2つの異なる高度暗号化標準の置換ボックスのうち第2の高度暗号化標準の置換ボックスは、
マスクされた第6ガロア体乗算器を含む前ステージを含み、前記第6ガロア体乗算器の出力は、前記少なくとも2つの異なる高度暗号化標準の置換ボックスのうち追加の高度暗号化標準の置換ボックスの後続ステージで第7ガロア体乗算器の乱数入力に結合される、請求項9に記載の集積回路。
【請求項15】
前記高度暗号化標準の置換ボックスの第1セットと前記高度暗号化標準の置換ボックスの第2セットは、異なる数の高度暗号化標準の置換ボックスを含む、請求項14に記載の集積回路。
【請求項16】
請求項1~15のいずれか1つの前記集積回路を使用して安全な暗号化動作を実行する方法。
【発明の詳細な説明】
【背景技術】
【0001】
電子デバイスは、様々な機能を有効にする集積回路(IC)を少なくとも1つ含むことがよくある。これらの機能の一部を安全に実行するために、電子デバイスはIC内の特定のアクセスレベルに制限された秘密情報を保存してもよく、またはそれを使用して動作してもよい。攻撃者は、この秘密情報に不正にアクセスして、ICの動作を損なう、または変更することを試みる可能性がある。しかし、ICへの不正アクセスを防止するための既存のアプローチは、多くの場合、費用がかかり、空間的にも困難である。
【発明の概要】
【0002】
本明細書は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理のための技法、装置、及びシステムを開示する。態様では、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理により、回路リソース(例えば、フリップフロップ、データ)を集積回路(IC)の異なる部分間で共有できるようになる。具体的には、ガロア体(GF)乗算器の入力レジスタと、高度暗号化標準(AES)の置換ボックス(S-Box)のステージ内のパイプラインレジスタが、単一のフリップフロップを共有するように実装できる。用語「高度暗号化標準(AES)」とは、2001年に米国国立標準技術研究所(NIST)によって策定された電子データの暗号化の仕様を指す。一部のICでは、入力が更新されるたびに乱数が提供される複数のGF乗算器を備える複数個のS-Boxが使用され得る。この場合、エントロピー生成回路の必要性を制限するために、第1S-Boxの前ステージからの出力を、第2S-Boxの後続ステージに乱数として提供することができる。このように、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理により、セキュリティに影響を与えることなく回路コストと回路規模を削減できる。
【0003】
AES S-Boxを含むICについて説明する。AES S-Boxは、マスクされたGF乗算器、マスクされたGF乗算器への少なくとも2つの入力レジスタ、及びAES S-Boxの第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタを含む第1ステージを備える。マスクされたGF乗算器への少なくとも2つの入力レジスタのうちの第1入力レジスタと、第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタのうちの第1パイプラインレジスタを含む、第1対のレジスタで動作するように構成された第1フリップフロップが実装される。少なくとも2つの入力レジスタのうちの第2入力レジスタと、少なくとも2つのパイプラインレジスタのうちの第2パイプラインレジスタを含む、第2対のレジスタで動作するように構成された第2フリップフロップも実装される。
【0004】
少なくとも2つのAES S-Boxを含む別のICについて説明する。第1AES S-Boxは、第1GF乗算器を含む前ステージを備え、そこで第1GF乗算器の出力は、少なくとも2つのAES S-Boxのうちのさらに高度なAES S-Boxの後続ステージ内の第2GF乗算器の乱数入力に結合される。
【0005】
本開示の1つまたは複数のICを使用して暗号化動作を実行する方法についても説明する。
【0006】
この発明の概要は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装するため簡略化した概念を紹介するために記載されている。簡略化された概念については、以下の発明を実施するための形態でさらに説明する。この発明の概要は、特許請求された主題の本質的な特徴を特定することを意図するものではなく、特許請求された主題の範囲を判断する際に使用することも意図するものではない。
【0007】
ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理のための、記載のシステム及び方法の1つまたは複数の態様を以下に詳細に説明する。説明及び図において異なる事例で同じ参照番号が使用されている場合、類似の要素を示す。
【図面の簡単な説明】
【0008】
図1A】一次マスクされた乗算器と一次ドメイン指向マスクされた乗算器を示す。
図1B】ドメイン指向のマスキングを使用して効率的かつ安全なデータ処理を実装できる電子デバイスを含む動作環境の例を示す。
図2】ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の態様を支援するために実装することができる複数の回路構成要素を含む例示的なセキュリティ回路の例示的な実施態様を示す。
図3】1つまたは複数の態様による、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装することができるAESユニットの例を示す。
図4】ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様による、AES置換ボックス(S-Box)のハードウェア構成例を示す。
図5】エントロピー注入回路を備えた複数のガロア体乗算器を含むAES S-Boxのハードウェア構成例を示す。
図6】ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様による、複数のAES S-Boxのハードウェア構成例を示す。
図7】ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様による、暗号化動作を実行するための例示的な方法を示す。
図8】ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様を実装することができる電子デバイスの例を示す。
【発明を実施するための形態】
【0009】
一般的に、攻撃者がICの暗号化プロセスに関する機密情報を取得するために使用する可能性のある方法は多岐にわたる。例えば、サイドチャネル解析(SCA)は、動作中のICの電力消費、電磁放射、パディング操作、動作タイミングなどを測定することで、秘密資産(例えば、鍵)を抽出するために使用できる。場合によっては、これらのチャネル(例えば、ICの電力消費、電磁放射、パディング操作、または動作タイミング)はICによって作成及び/または処理される中間値に依存するため、SCAが効果的になることがある。
【0010】
SCAを抑えるために、ブールマスクを実装して、これらのチャネルを集積回路によって生成及び/または処理される真値から独立させることができる。態様では、ブールマスクは、回路の実行中に生成された中間値をランダム化することによって実行される。このように、チャネルは依然としてデータに依存するが、実際の真の中間値ではなくランダム化されたデータを示すことができ、攻撃者がSCAから有用な情報を特定することを不可能にし得る。一例では、関数に対してブールマスクを実行することができる。具体的には、関数を複製して、2つの関数のコピーを並列に生成することができ、関数のコピーはそれぞれ、マスクまたはマスクデータのいずれかに対して動作する。他の実施態様では、動作を時間で区切ることで、1つの関数インスタンスで2つの動作を実行することができる。
【0011】
どちらの実施態様でも、マスク値(例えば、マスク)を入力値に追加し、関数の実行をすることで処理することができる。関数の別の実行をすることで、マスクのみを処理することもできる。両方の演算のため関数が値を返した後、関数の出力(例えば、マスクとマスクデータから)を組み合わせて(例えば、合計して)、真の出力を作成できる。暗号ブロックで一般的に使用されるガロア/有限体演算において、2つの要素の加法逆元が要素自体であるため、この合計処理は、入力値が提供されると関数の真の出力を生成する。例えば、加算演算は、要素をそれ自体と合計するとゼロになるような減算演算と考えることができる。ただし、この処理は、データを処理するために使用される関数が線形演算である場合にのみ機能する。
【0012】
関数が非線形演算である場合、ブールマスクを実装するには特別な処理が必要になる場合がある。具体的には、マスクと入力を個別に処理できなくなる可能性があるため、入力値とマスクの混合が必要になる場合がある。SCAの観点から見ると、混合データの処理では設計上の困難が生じる可能性があり、リマスキングを行うには新たな乱数が必要になる場合がある。簡素な非線形マスキング実装では、マスクされたANDゲートを使用して、Ax、Ay、Bx、ByからAqとBqを計算する。具体的には、Aはマスクデータを表し、Bはマスクを表すことができる。(図4に関して以下に記載のとおり、添字「x」は入力を指し、添字「y」は出力を指す。添字qは混合データを表す。)態様では、この実装は算術的にAq+Bq=(Ax+Bx)*(Ay+By)と記述できる。図1Aには、1次マスクされた乗算器10が示されている。この簡素な実装では、4つのANDゲート12が入力14の乗算器として使用される。最後の2つのXORゲート18を使用して結果を再び統合する前に、再共有工程で中間結果に新しい乱数(Z0)が(例えば、XORゲート16を介して)追加される。消費電力は依然として出力値(例えば、Aq+Bq)または処理中のデータ(例えば、Ax、Ay)に依存するため、回路動作中の特定の事象により、SCAを介してICに関する情報を個々が判断できる場合がある。
【0013】
例えば、信号の過渡的影響により、電圧が高値から低値に下がり(例えば、ビットが反転し)、その後元に戻るICで、グリッチが(例えば、Bxで)発生する可能性がある。多くの実装ではクロックサイクルの終了時にのみ信号が安定すると定義されているため、デジタル回路ではグリッチが頻繁に発生する可能性がある。その結果、各サイクル内で中間変更(例えば、グリッチ)が発生する可能性がある。多くの場合、これらのグリッチにより、データの真値に依存する電力シグネチャが発生する可能性がある。例えば、Bxでグリッチが発生する場合がある(例えば、Bxが1から0に下がり、その後1に戻る)。グリッチの結果、様々な入力値に関して以下の表1に示すように、切り替わるゲートの数は他の入力の値による。
【0014】
【表1】
【0015】
表1から、反転されるゲートの数からyの値またはAyとByの値を決定できるように、反転されるゲートの合計数はyの値に一意に依存することがわかる。そしてそれが電力シグネチャに影響を及ぼす。
【0016】
グリッチが電力シグネチャに与える影響を最小限に抑えるために、信号の過渡的影響を制御する機能内にフリップフロップ及び/またはレジスタを挿入することができる。図1Aには、1次ドメイン指向マスクされた乗算器20が示されている。図示のように、フリップフロップ及び/またはレジスタ22は、入力としてAx及びAyを受信するANDゲートの出力、及び入力としてBx及びByを受信するANDゲートの出力に追加される場合がある。フリップフロップ及び/またはレジスタ22は、中間XORゲート(例えば、XORゲート16)の出力に追加されることもある。その結果、ANDゲートの結果に新たな乱数(Z0)が追加される。さらに、これらのフリップフロップ及び/またはレジスタ22を回路内の特定の位置に配置することにより、回路はマスク回路からドメイン指向マスク回路(例えば、1次ドメイン指向マスクされた乗算器20)に変換される。フリップフロップ及び/またはレジスタ22が回路に配置された後のグリッチの影響を分析すると、データの真値に依存するような電力シグネチャにグリッチは影響を与えないことがわかる。
【0017】
ただし、現代の回路では、論理合成ツールによって、最小限の回路規模、演算、または電力を必要とするように得るため回路の設計を最適化しようと試みる場合がある。このようにして、合成ツールは、SCAから保護するために使用される回路の不可欠な部分を最適化して取り除くことができる。例えば、合成ツールは、中間値が統合された後に実行されるフリップフロップをシフトし、異なる関数のコピーからフリップフロップを共有できるようにして、必要なフリップフロップを4個から2個に減らすことができる。この最適化により正しい値が生成される場合もあるが、サイドチャネルリークが発生する可能性もあり、グリッチが発生した場合に、真値に依存する電力シグネチャまたはその他のチャネルシグネチャが作成される。SCA保護を最適化して取り除くために合成ツールの機能をなくすには、合成中に自動的に実行される回路の最適化(例えば、回路合成ツール)を無効にする必要がある場合がある。
【0018】
セキュリティの緩和を防ぐために回路合成ツールを無効にすると、回路規模を縮小して回路コストを下げる価値ある最適化を回路が実行できなくなる可能性がある。このため、暗号攻撃を成功させるリスクを増大させることなく、費用と空間を節約する回路設計で実装できる、暗号論的に安全な回路の最適化を決定することは価値があり得る。態様では、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理のための技法、装置、及びシステムにより、回路リソースを暗号論的に安全な方法で共有できる。
【0019】
上記の暗号化機能を有効にするために、多くのICには暗号モジュールまたは暗号ICが組み込まれている。一部のICでは、安全な回路によってセキュリティ機能を実装するために乱数を利用する高度暗号化標準(AES)ユニットを実装している場合がある。この安全な回路の一例として、置換ボックス(S-Box)がある。S-Boxは、暗号化動作で使用されるデータまたは鍵を暗号化/復号化するために使用できる。S-Boxは、例えば、SCAを通じて攻撃者に公開された場合に、ICを危険にさらす可能性がある機密情報を処理するため、ドメイン指向のマスキングを利用することができる。そのため、S-Boxは暗号論的に安全な最適化によって改良することができる。
【0020】
S-Boxは、ガロア体(GF)乗算器を含む複数のステージで構成される。各GF乗算器は、上流にある入力レジスタから複数の入力(例えば、マスクやマスクデータ)を受信することができる。これらの入力レジスタは、GF乗算器へのデータのリリースを制御するために使用できる。同様に、各ステージは、前ステージから後続ステージにデータを提供する1つまたは複数のパイプラインレジスタを含み得る。一部のS-Boxの設計では、入力レジスタとパイプラインレジスタのそれぞれが、信号内のグリッチの発生を制御する別個のフリップフロップに結合され得る。しかし、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の技法、装置、及びシステムでは、入力レジスタと対応するパイプラインレジスタが保持する値が同じである可能性があるため、共有フリップフロップを使用して、レジスタからリリースされたデータでのグリッチの発生を制御することができる。この方法では、入力レジスタとパイプラインレジスタのそれぞれの対に1つのフリップフロップをS-Boxの設計から削除できるため、回路規模が縮小され、回路コストが削減される。
【0021】
上記では各S-Box内部の最適化について記載したが、この技法は複数のS-Box間の最適化にも適用できる。一般に、多くのAESユニットは、より複雑な動作をより短時間で完了できるように複数のS-Boxを含む。実行中、各S-BoxのGF乗算器には、乗算器の入力が更新されるたびに、新しい乱数(または疑似乱数)の提供が求められる場合がある。この要件に従わない場合、AESユニットの動作が決定性となり、サイドチャネルリークが発生するおそれがある。この要件を満たすために、S-Boxには、通常、各乗算器にエントロピーを正確に提供する乱数発生回路とバッファロジックが含まれており、多くの場合、大規模でコストのかかる回路が必要になる。
【0022】
これらの方法とは対照的に、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理では、第1S-Boxの前ステージからの出力を、第2S-Boxの後続ステージの乱数として利用できる。例えば、第1S-Boxからのマスク出力またはマスクデータ出力を示すデータが第2S-Boxの乱数入力に接続され得るように複数のS-Boxが通信可能に結合され得る。前ステージの出力を次ステージの入力にリンクすることにより、暗号論的に安全な動作の必要に応じて、乗算器への入力が後続ステージで更新されるときのみ、後続ステージによって乱数を提供することができる。そうすることで、暗号の保証に影響を与えることなく、コストのかかる乱数発生/分配回路をS-Boxから削除できる。
【0023】
これらは、本明細書に記載のドメイン指向のマスキングを使用した効率的かつ安全なデータ処理のほんの一例であることに留意すべきであり、他の例については後述する。本開示では、次に動作環境の例について説明し、続いてAESユニット及びその1つまたは複数のS-Boxを含む安全な回路の例、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を利用するための様々な技法、及びドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装できる電子デバイスの例について説明する。
【0024】
図1Bは、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の態様を実装できる装置102を含む環境100の例を示す。装置102は、任意の適切なデバイス(例えば、電子デバイス)として実装してもよく、その一部が、スマートフォン102-1、タブレットコンピュータ102-2、ラップトップコンピュータ102-3、ゲームコンソール102-4、デスクトップコンピュータ102-5、サーバコンピュータ102-6、ウェアラブルコンピューティングデバイス102-7(例えば、スマートウォッチ)、及びブロードバンドルータ102-8(例えば、モバイルホットスポット)として示されている。図示されていないが、装置102を、移動ステーション(例えば、固定または移動STA)、移動通信デバイス、クライアントデバイス、ユーザ装置、携帯電話、エンターテイメントデバイス、モバイルゲームコンソール、パーソナルメディアデバイス、メディア再生デバイス、健康モニタリングデバイス、ドローン、カメラ、ワイヤレスインターネットアクセス及びブラウジングが可能なインターネット家庭電化製品、IoTデバイス、及び/または他の種類の電子デバイスのいずれかとして実装してもよい。装置102は、他の機能を提供してよい、または明確さまたは視覚的な簡潔さのために図1Bから省略された構成要素またはインターフェースを含んでよい。
【0025】
装置102はIC104を含み、IC104は1つまたは複数のプロセッサ106と、コンピュータ可読媒体(CRM108)とを利用し、コンピュータ可読媒体108はメモリ媒体または記憶媒体を含んでもよい。プロセッサ106を、汎用プロセッサ(例えば、マルチコア中央演算処理装置(CPU)またはアプリケーションプロセッサ(AP))、特定用途向け集積回路(ASIC)、画像処理装置(GPU)、または装置102の他の構成要素が統合されたシステムオンチップ(SoC)として実装してもよい。CRM108は任意の好適な種類のメモリ媒体または記憶媒体を含むことができ、その例には、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)またはフラッシュメモリがある。この説明の文脈では、装置102のコンピュータ可読媒体108を、一時的な信号も、または搬送波も含まない、少なくとも1つのハードウェアベースまたは物理的な記憶デバイスとして実装する。装置102のアプリケーション、ファームウェア、及び/またはオペレーティングシステム(図示せず)は、プロセッサ実行可能命令としてコンピュータ可読媒体108上に実装することができ、プロセッサ106によって実行されて、本明細書に記載の様々な機能を提供することができる。コンピュータ可読媒体108は、装置102のアプリケーション、ファームウェア、またはオペレーティングシステムを介してアクセス可能なユーザデータやユーザメディアなどのデバイスデータ110も保存することができる。
【0026】
この例では、IC104はセキュリティ回路112を含む。装置102、IC104、またはセキュリティ回路112は、安全な暗号化プロセッサを実装することができる。セキュリティ回路112は、1つまたは複数の回路構成要素114、例えば回路構成要素114-1から回路構成要素114-nを使用して実装してもよい。回路構成要素114は、装置102の機能を有効にするために任意の数の動作を実行するように構成できる。回路構成要素の例として、図2に記載のように、プロセッサと複数の機能構成要素が挙げられる。セキュリティ回路112は、例えば、保護されたエンクレーブ、信頼できるチッププラットフォーム、ハードウェアベースの信頼の起点(RoT)チップ(例えば、シリコンRoT)などとして実現できる。セキュリティ回路112が電子デバイスにどのように、またはどこに組み込まれているかに関係なく、セキュリティ回路112は、多くの種類の攻撃に対抗し得る。
【0027】
セキュリティ回路112は、IC104の暗号化動作を実行できる1つまたは複数のAESユニット116を含むことができる。態様では、AESユニット116は、1つまたは複数のレジスタ120を含む1つまたは複数のS-Box118を実装することができる。S-Box118を使用して、データの暗号化動作やデータの復号化動作などの暗号化動作を実行できる。非限定的な例として、データは、(例えば、カメラまたはビデオカメラによって捕捉された)画像データまたは(例えば、マイクによって捕捉された)音声データであってもよい。一例では、S-Box118を使用して秘密鍵/公開鍵の対を生成することができる。公開鍵は、トランシーバ126及び/またはI/Oポート128を介して装置102から送信される。公開鍵を使用して暗号化され、装置102がトランシーバ126及び/またはI/Oポート128を介して受信したデータ(例えば、画像/音声データ)を、秘密鍵を使用して復号化してもよい。代替的または追加的に、画像データまたは音声データなどのデータを、秘密鍵を使用してハッシュ化してハッシュダイジェストを生成してもよく、データ及びハッシュダイジェストを、トランシーバ126及び/またはI/Oポート128を介して装置102から送信することで、ハッシュダイジェストがデータの署名として機能して、第三者が公開鍵を使用して検証できるようにしてもよい。
【0028】
別の例では、AESユニット116は、IC104によって操作されるデータにブールマスク処理及びリマスク処理を実行し得る。AESユニット116は、例えば、暗号鍵またはその他の機密情報など、IC104の適切な使用及び性能を確実にするために使用されるデバイスシークレットを扱ってもよい。AESユニット116によって扱われる機密情報を保護するために、暗号論的に安全な操作を実行して、IC104に関するデバイスシークレットまたは情報を公開するおそれのある様々な攻撃から保護することができる。AESユニット116の動作例については、図3を参照してさらに詳しく説明する。
【0029】
S-Box118またはAESユニット116は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様に従って実装できる。これらの技法は、暗号論的に安全な最適化を利用して、セキュリティの脆弱性を生じさせることなく回路コストと回路規模を削減することができる。ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様については、図4から図6を参照してより詳しく説明する。
【0030】
図示のように、セキュリティ回路112はインターコネクト122に結合されている。インターコネクト122は、例えば、様々な回路構成要素が通信できるようにするバス、スイッチングファブリック、またはバスネットワークを使用して実現することができる。各回路要素を、インターコネクト122に直接または間接的に結合してもよい。
【0031】
装置102はまた、ディスプレイ124、トランシーバ126、入力/出力ポート(例えば、I/Oポート128)及び/またはセンサ130を含んでもよい。ディスプレイ124を、プロセッサ106の1つ(例えば、画像処理装置(GPU))と動作可能に接続し、装置102のオペレーティングシステムまたはアプリケーションをグラフィカルに表示するように構成してもよい。トランシーバ126は、任意の適切な通信プロトコルに従って、有線ネットワークまたは無線ネットワークでデータ(例えば、デバイスデータ110)の有線通信または無線通信を可能にするように構成してもよい。装置102のI/Oポート128は、ユニバーサルシリアルバス(USB)ポート、同軸ケーブルポート、及び装置102を鍵ボード、マイク、カメラなどの様々な構成要素、周辺機器、またはアクセサリに接続するのに有用なその他のシリアルコネクタまたはパラレルコネクタ(内部コネクタを含む)を含んでもよい。
【0032】
装置102はまた、装置102が動作する環境の様々な特性、変化、刺激、または特徴を装置102が感知できるようにするセンサ130を含む。例えば、センサ130は、様々なモーションセンサ、周囲光センサ、音響センサ、静電容量センサ、赤外線センサ、温度センサ、レーダーセンサ、または磁気センサを含んでもよい。態様では、センサ130を使用して、一般に、S-Box118またはAESユニット116のエントロピーを生成することができる。代替的にまたは追加的に、センサ130は、タッチセンシングまたは近接センシングなどによって、装置102のユーザとのインタラクション、またはユーザからの入力の受け入れを可能にしてもよい。
【0033】
図2は、ドメイン指向マスキングを使用した効率的かつ安全なデータ処理の態様を支援するために実装することができる複数の回路構成要素114の例など、複数の回路構成要素を含む例示的なセキュリティ回路112の例示的な実施態様200を示す。図示のように、セキュリティ回路112は、インターコネクト122に結合されたプロセッサ106を含む。各プロセッサ106、複数のメモリ及び複数の他の回路構成要素114を、インターコネクト122に直接的または間接的に結合してもよい。態様では、図2の構成要素は、RoT及び/またはその他の安全な暗号化機能を実装する安全なコンピューティングプラットフォームまたは安全なSoCとして具体化してもよい。
【0034】
例示的な実施態様において、複数のメモリは、読み取り専用メモリ(ROM202)と、スタティックランダムアクセスメモリ(SRAM204)と、フラッシュメモリ206とを含むことができる。態様では、ROM202、SRAM204またはフラッシュメモリ206を、セキュリティ回路112内またはCRM(例えば、CRM108)内に実装してもよい。複数の回路構成要素114は、アラートハンドラ208と、AESユニット116と、ハッシュベースのメッセージ認証コード(HMAC)エンジン(HMACエンジン210)と、シリアルペリフェラルインターフェース(SPI)デバイス(SPIデバイス212)とを含むことができる。複数の回路構成要素114はまた、汎用非同期受信機/送信機(UART)ユニット(UARTユニット214)と、汎用入力/出力(GPIO)インターフェース(GPIOインターフェース216)と、ピンマルチプレクサ(ピンMUX218)と、パッドコントローラ220とを含むことができる。複数の回路構成要素114は、乱数発生器(RNG222)と、タイマ224とをさらに含むことができる。さらに、回路構成要素114は、図2に示すように、任意のメモリを含むことができる。メモリ及びその他の回路構成要素114の特定の実施例が図2に示され、または本明細書で説明されているが、セキュリティ回路112の所与の実施態様は、プロセッサ、コントローラ、メモリ、モジュール、または周辺デバイス(それらの複製を含む)のインスタンスを、より多く、より少なく、及び/または異なる数で含んでもよい。
【0035】
図示の回路構成要素は、1つまたは複数のクロック信号に基づいて同期して動作することができる。図2には示されていないが、セキュリティ回路112は、クロック信号を生成するための少なくとも1つのクロック発生器を含んでもよく、または、1つまたは複数の個々の構成要素を互いに独立してリセットする、複数の構成要素を共同でリセットする、もしくはICチップ全体をリセットするためのリセット回路を含んでもよい。あるいは、セキュリティ回路112は、セキュリティ回路112の外部にあるソースから少なくとも1つのクロック信号またはリセット信号を受信してもよく、そのソースは別個のチップ上にある場合もあれば、またはそうでない場合もある。1つまたは複数の別個の回路構成要素114は、それぞれ個々のクロックドメインで動作してもよい。例えば、回路構成要素は、それぞれの構成要素にローカルなクロックに同期してもよい。異なるクロックドメイン内の構成要素は、互いに対して非同期で動作または通信してもよい。
【0036】
図示の回路構成要素114の例示的な実施態様を以下に説明する。プロセッサ106を、セキュリティ回路112の「主」、「中央」または「コア」プロセッサとして実現してもよい。プロセッサ106を、単なる一例として、マルチステージパイプラインを有する32ビットのインオーダーの縮小命令セットコンピューティング(RISC)コアで実装してもよい。例えば、RISC-V機能を使用して、プロセッサはM(マシン)モード及びU(ユーザ)モードを実装してもよい。リセットピン(図示せず)をアクティベートすることにより(例えば、アクティブローリセットピンのデアサーションによって)、プロセッサ106にリセットを終了させ、リセットベクトルでコードの実行を開始させる。リセットベクトルはROM202で開始し、これにより、エミュレートされた埋め込みフラッシュ(e-Flash)にジャンプする前にそのコードを有効にしてもよい。換言すれば、リセットが解除される前に、コードがe-Flashにインスタンス化されていると予想される。場合によっては、セキュリティ回路112全体のリセットは、様々な回路構成要素間の相互運用性をサポートするために、互換性仕様に従って非同期アクティブローにすることができる。リセットを、セキュリティ対策としてアラートハンドラ208によって生成してもよく、ウォッチドッグタイマなどによって生成してもよい。また、リセット信号を、他の回路構成要素(メモリの1つまたは他の回路構成要素114の1つなど)に送信してもよい。
【0037】
デバッグモジュール226(DM)及び割り込みコントローラ228(ItC)はプロセッサ106に結合され、また、それらのどちらに適合性を持たせてもよい。デバッグモジュール226は、プロセッサ106へのデバッグアクセスを提供する。デバッグモジュール226の論理は、ICの特定のピンとインターフェースをとることにより、プロセッサ106がデバッグモードに入ることを可能にし、デバイス(例えば、命令をエミュレートすることによって)またはメモリにコードを挿入する機能を提供する。割り込みコントローラ228は、プロセッサ106の近くに配置することができる。割り込みコントローラ228は、セキュリティ回路112内から割り込みソースのベクトルを受け入れることができる。割り込みコントローラ228は、割り込みをプロセッサ106に転送して処理する前に、割り込みにレベル付けと優先順位を割り当てることもできる。
【0038】
プロセッサ106は、任意の所望のレベルのパフォーマンスを提供したり、任意の内部回路構成要素を含めたりすることができる。例えば、プロセッサ106は、少なくとも1つの算術論理演算装置(ALU)(例えば、分岐ターゲットを計算して条件分岐のレイテンシサイクルを削除する「追加の」ALUなど)と複数のパイプラインステージを含むことができる。複数のパイプラインステージを使用すると、パイプラインはレジスタライトバックを実行して、ロードとストアからのレイテンシサイクルを減らし、ロードまたはストアへの応答が要求後のサイクルで利用可能になるパイプラインストールを防ぐことができる。プロセッサ106は、シングルサイクル乗算器の実装、またはストアへのエラー応答時に不明確な例外の生成が可能であり、これにより、プロセッサは応答を待たずにストアを超えて実行を継続できる。図示されていないが、具体的にはプロセッサ106、または一般的にはセキュリティ回路112は、命令に対して単一サイクルのアクセス時間を提供する命令キャッシュを含むことができる。
【0039】
図示の例200では、セキュリティ回路112の構成要素は、命令及びデータの3つのメモリアドレス空間を含むか、またはそれらにアクセスできる。ROM202は、リセットの解除後のプロセッサ106のターゲットである。ROM202は、次のステージのコードをチェックする前にプラットフォームチェックのサブセットを実行するためハードコードされた命令を含む。次のステージのコード(例えば、e-Flashメモリに保存されたブートローダ)は、デバイスのシリコンにハードコードされていない、コードの最初の部分になる可能性がある。したがって、この次のステージのコードは、セキュリティを向上させるために、完全性のための署名チェックが行われる。ROM202は、ブートローダの内容のすべてに対しRivest-Shamir-Adlemanチェック(RSAチェック)アルゴリズムを実装することにより、この署名チェックを実行できる。
【0040】
フラッシュメモリ206は、コード保存用のe-flashメモリとして実装することができる。このe-flashには、本明細書で言及したブートローダのほか、上に重ねるオペレーティングシステムとアプリケーションを格納できる。SPIデバイス212は、e-flashメモリを一括ロードするために使用できる。デバッグモジュール226はコードローディングにも使用できる。SRAM204は、プロセッサ106によるデータストレージ(例えば、スタック情報及びヒープ情報用)に利用可能なスクラッチパッドSRAMとして動作できる。SRAM204はコードを保存することもできる。
【0041】
セキュリティ回路112は、インターコネクト122を介してプロセッサ106に結合された従属実行ユニットになり得る回路構成要素114を含むことができる。これらの各回路構成要素114は、互いの適合性及びプロセッサ106との適合性を確実にするインターフェースフレームワークに従うことができる。適合性スキームは、プロセッサ106が所与の回路構成要素と通信する方法(例えば、インターコネクト122を使用して)、回路構成要素がプロセッサ106と通信する方法(例えば、割り込みを使用して)、回路構成要素がセキュリティイベントを(例えば、アラート表示を使用して)アラートハンドラ208などの他の回路構成要素に通信する方法、回路構成要素が周辺デバイスと通信する方法(例えば、チップI/Oによって)、またはそれらの組み合わせを指定することができる。図示の回路構成要素114は、アラートハンドラ208によって提供されるアラート関連機能に関連する、プロセッサ106に関連する、1つまたは複数のメモリに関連する、チップI/Oなどに関連する回路構成要素を備えることができる。したがって、メモリはまた、互いに関連する回路構成要素114、またはその他の図示された回路構成要素を備えることができる。
【0042】
回路またはチップI/Oは、ピンMUX218と、パッドコントローラ220とを含む。ピンMUX218は、回路構成要素114の少なくとも一部とセキュリティ回路112の利用可能な多重化可能I/Oノード(例えば、さまざまな構成要素が統合されているチップのピン、またはSoCの他の部分へのインターフェース)との間の信号伝達ルートを提供する。パッドコントローラ220は、各回路構成要素のドライブ強度、技術、プルアップ対プルダウンなどの制御またはパッド属性を管理する。ピンMUX218及びパッドコントローラ220自体は、インターコネクト122上の周辺デバイスであってもよい。したがって、それぞれは、ソフトウェアのコンフィギュアビリティを提供する少なくとも1つのレジスタコレクションを有するか、またはそれらに関連付けられることができる。
【0043】
UART部214は、シングルレーン二重UART機能などのUART特性を実装できる。その出力と入力は、ピンMUX218を介して任意の回路I/Oに接続するように構成できる。GPIOインターフェース216は、ピンMUX218を介して外部回路へのGビットの双方向通信を作成する。ここで、Gは16、32、または64などの正の整数である。メモリI/Oに関しては、SPIデバイス212はファームウェアモードを実装できる。ここで、ファームウェアモードは、外部ドライバがフィールド内ファームウェア更新のためにフラッシュメモリ206のバンクにファームウェア更新コードを送信する機能を有効にすることができる。ファームウェアモードは、SPIトランザクションを使用したメモリのアドレス指定を含むことができる。図示されていないが、セキュリティ回路112は、I2C(Inter-Integrated Circuit)デバイスのコマンドを有効にするために、I2Cホストを含むことができる。I2Cデバイスのこのコマンドは、標準モード、フルモード、高速モードを含む場合がある。
【0044】
暗号化エンジン及びアラートハンドラ208を含む、いくつかの「コアセキュリティ」構成要素もまた図示されている。図1を参照して説明したように実装し得るAESユニット116(例えば、図2の「暗号化IPブロック116」)は、1つもしくは複数のプロトコル、及び/または128b、192bもしくは256bなどの様々な鍵サイズを使用することなどにより、様々な対称暗号化及び復号化機能を提供することができる。態様では、AESユニット116には、ドメイン指向のマスキングを使用した安全かつ効率的なデータ処理の1つまたは複数の態様に従って、1つまたは複数のS-Box118とそのレジスタ120を含めることができる。構成要素は、異なるブロック暗号動作モードを使用して暗号化または復号化される、例えば16バイトの量で到着するデータの暗号化または復号化を選択することができる。AESユニット116は、電子コードブック(ECB)モード、暗号ブロックチェーン(CBC)モード、暗号フィードバック(CFB)モード、出力フィードバック(OFB)モード、カウンター(CTR)モードなどをサポートすることができる。データ転送をプロセッサで利用可能にすることができる。例えば、鍵及びデータマテリアルを、レジスタ書き込みを介して暗号化エンジンに渡してもよい。あるいは、信頼できない可能性のあるプロセッサアクティビティからの露出を減らすために、鍵とデータマテリアルを転送するためのプライベートチャネルを含めることもできる。
【0045】
HMACエンジン210は、ハッシュアルゴリズムとして、例えばセキュアハッシュアルゴリズム(SHA)SHA-256を利用できる。SHA-256は、ハッシュ化する入力データサイズに関わらず、ダイジェスト(またはハッシュ出力)の長さが256bであるハッシュアルゴリズムのSHA-2ファミリーの一部である。ハッシュ要求の開始を宣言した後、データはHMACエンジン210に送信される。これにより、内部状態が初期条件(例えば、一度に32b)までゼロになる。クライアントコンポーネントによってデータが送信されると、クライアントはハッシュ要求の完了を示すことができる(任意で部分単語最終書き込みを使用)。例示的なポータビリティインターフェーススキームに従って、HMACエンジン210はハッシュ結果を生成し、要求元のクライアントによるレジスタの読み出しに利用可能である。データ転送はプロセッサで利用可能にすることも、信頼できない可能性のあるプロセッサアクティビティへの露出を減らすために非公開にすることもできる。
【0046】
HMACはハッシュ関数(例えば、SHA-256)の上に階層化されたメッセージ認証プロトコルであり、暗号化のため秘密鍵と混合する。HMACは、メッセージのハッシュ化(SHA-256を介して)に関して、秘密鍵を規定の方法で(例えば2回)追加する特定のアプリケーションである。この機能を提供するために、メッセージハッシュが開始する前に、256bの鍵を回路構成要素にプログラムすることができる。認証完了のタイミングは異なる場合があり、ネイティブSHA-256を使用する場合よりもレイテンシが長くなる可能性がある。ここでも、ハッシュ情報または秘密鍵を、利便性または処理効率のためにプロセッサで利用可能にしてもよく、またはセキュリティを向上させるために何らかの様式で非公開にしてもよい。
【0047】
アラートハンドラ208は、他の回路構成要素114から提供されるアラートなどのアラートの処理と応答の要因となる。アラートは、感知されたセキュリティ上の脅威に応答するためにタイムリーに処理する必要がある、セキュリティ上重要な割り込みと見なすことができる。「標準」割り込みとは異なり、アラートはプロセッサ106で実行されるソフトウェアだけで処理されるわけではない。アラートは、ソフトウェアによって「通常」割り込みとして処理される第1ステージの要求をトリガできる。しかし、ソフトウェアがアラートによってトリガされた割り込みに応答して適切に修正できない場合は、アラートハンドラ208が第2ステージの応答をトリガする。第2ステージの応答はセキュリティ対策の実行を含むことができ、その例には、処理の終了、データの消去もしくはそうでなければ削除、回路部分からの電力の供給停止、またはICチップもしくはその一部のリセットがある。これにより、たとえプロセッサ106がビジー状態、無反応状態、または攻撃を受けている状態でも、確実に根本的な問題(感知されたセキュリティ脅威)に対処できるようになる。
【0048】
したがって、アラートを、アラートハンドラ208が他の回路構成要素から受信したものであり、潜在的なセキュリティ脅威を示す、高められた割り込み型信号またはアラート表示として、実装することができる。動作中、アラートハンドラ208は、セキュリティ回路112の他の回路構成要素114からアラートを収集し、それらをプロセッサ106が対処できる割り込みに変換できる。しかし、プロセッサ106が割り込みをクリアしない場合は、アラートハンドラ208はハードウェア応答を提供し、潜在的なセキュリティ脅威に対処する。
【0049】
セキュリティ回路112はまた、RNG222を含むことができる。一般的に、乱数は実行時に変動をもたらし、攻撃者が攻撃を開始する適切なタイミングを予測できないようにすることで、セキュリティ機能に寄与する。例えば、乱数は、IDや暗号化のために使用されるシークレットマテリアルを提供できる。RNG222をアルゴリズム計算に組み込むことで、機密データ値を隠すことができる。態様では、RNG222は、エントロピー生成処理で利用され、AESユニット116に乱数(または疑似乱数)を提供する(例えば、マスキング用)。概して、RNG222は、その数値生成がますます真にランダムになるにつれてより優れたパフォーマンスを提供しており、攻撃に対しても強化され得る。一部の暗号化プロセスでは、強力なランダム性を保証する必要がない場合もある。
【0050】
RNG222は、「真の」RNG(TRNG)として実装されてもよく、何らかの非決定論的な物理的イベントまたは処理を活用するためにアナログ部分を有する設計を伴ってもよい。例示的なTRNG設計は、準安定性、電子ノイズ、タイミング変動、熱ノイズ、量子変動などに依存する。TRNGは得られる変数(複数可)をフィルタリングし、デバイスが現在のランダム化関数に対して所与の時間にサンプリングできるエントロピープールに送信する。場合によっては、エントロピープールへのインターフェースに、利用可能なランダムビットの読み出し要求が含まれることがある。TRNGインターフェースは利用可能なビット数を示し、要求側の回路構成要素またはソフトウェアは利用可能なビットの範囲内でこのプールから読み出すことができる。利用できないエントロピービットの読み出しを試みると、割り込みまたはアラートがトリガされる可能性がある。
【0051】
他の2つの回路構成要素114は、タイマ224と、フラッシュコントローラ(図示せず)とを含む。後者については、次の段落で説明する。タイマ224は、例えば、プロセッサ106による正確なパフォーマンスをサポートすることができる。タイマ224は複数のビット(例えば、64ビット)から成り、一定の割合以内の周波数が保証されたフリーランニングタイマとして動作する。タイマ224により、回路構成要素114が、動作を実行するための適切な時間間隔を決定できるようにしてもよい。例えば、AESユニット116は、タイマ224に従って(例えば、クロックサイクルに沿って)様々な動作を実行できる。別のタイマ(明示的には図示されていない)は、プロセッサが応答しなくなった場合にプロセッサ106を支援するためのウォッチドッグタイマとして機能することができる。応答しないのは、無反応な開発コード、セキュリティ攻撃などによる可能性がある。
【0052】
図示されていないが、フラッシュコントローラは、コード及びデータ保存に利用できるフラッシュメモリ206を制御することができる。このデータのプライマリ読み取りパスは、標準のメモリアドレス空間内に配置できる。ただし、フラッシュメモリは標準的な方法で書き込まれないため、そのアドレス空間への書き込みは無視できる。代わりに、フラッシュメモリ206に書き込むには、ソフトウェアがフラッシュコントローラとインタラクトする。フラッシュ機能は、読み取り、消去、プログラムという3つの主要なコマンドを含むことができる。読み取りコマンドは標準化することができ、チップメメモリのアドレス空間を使用することができる。消去コマンドはページレベルで実行され、ページサイズはフラッシュコントローラによってパラメータ化できる。消去要求を受信すると、フラッシュコントローラは対象ページの内容を消去し、データを「1」の状態(例えば、ワードあたり0xFFFFFFFF)にする。その後、ソフトウェアは個々の単語を任意の値にプログラムできる。フラッシュビットは、再度消去しない限り「1」の状態に戻らないため、未来の内容は、現在の内容と書き込まれた値のANDによって効果的に変更される。消去コマンド及びプログラムコマンドは比較的低速である。通常の消去時間はミリ秒単位で測定され、プログラム時間はマイクロ秒の範囲である。フラッシュメモリ206には秘密データが保存される可能性があるため、セキュリティも懸念される。したがって、フラッシュコントローラによってある程度のメモリ保護を提供することができる。
【0053】
セキュリティ回路112は、特定の回路構成要素のセットとともに図2に示されている。しかしながら、所与のセキュリティ回路は、より多くの回路構成要素、より少ない回路構成要素、または異なる回路構成要素を有し得る。また、回路構成要素を、本明細書で説明した例示的な様式とは別の様式で、異なるように相互接続しても、または動作させてもよい。さらに、一部の回路構成要素を省略してもよく、他方で他の回路構成要素は複数のインスタンスに実装されている。例えば、アラートハンドラ208を複製もしくは分散させてもよく、または何らかのセキュリティ回路に複数のAESユニット116が存在してもよい。さらに、セキュリティ回路112が数十個のコアのうちの1つのコアのみを形成するICチップの場合、セキュリティ回路112の回路構成要素114のうちGPIOインターフェース216を省略してもよい。
【0054】
態様では、回路構成要素114のいずれかは、構成要素の暗号化動作を実行する暗号化プロセッサ230を含んでもよい。いくつかの実施態様では、暗号化プロセッサ230はプロセッサ106と分離している。他の実施態様では、暗号化プロセッサ230はプロセッサ106内に実装されている。さらに、回路構成要素114のいずれかは、その構成要素の特定の機能を実行するため自身の暗号化プロセッサ230(または処理コア)を含んでもよい。
【0055】
図3は、1つまたは複数の態様による、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装することができるAESユニット116の例を示す。AESユニット116は、1つまたは複数のプロトコル、及び128b、192bまたは256bなどの様々な鍵のサイズを使用して、対称暗号化及び復号化を提供することができる。構成要素は、異なるブロック暗号動作モードを使用して暗号化または復号化される、例えば16バイトの量で到着するデータの暗号化または復号化を選択することができる。
【0056】
態様では、AESユニット116は、マスクを決定するために疑似乱数を生成するPRNG316を含む。マスクはブールマスクを使用して入力データと混合され、マスクデータを作成する。マスクデータは多重化されて状態レジスタ302に格納され、適切なタイミングでマスクされたSubBytes304にリリースされる場合がある。
【0057】
実施態様では、マスクデータとマスクの両方が多重化され、状態レジスタに格納される。さらに、マスキングが使用される場合、状態はマスクデータとマスクを含むことができる。例えば、図3では、これは、それぞれ2つのボックス(例えば、マスクデータ用に1つ、マスク用に1つ)を有するブロック(例えば、状態、完全鍵、復号鍵310、ShiftRows306、MixColumns308)によって示されている。マスクされたSubBytes304とマスクされたKeyExpand314は、マスクデータとマスクの両方を一緒に処理/混合するため、単一のボックスになる。追加の実施態様では、複数のマスクが存在する場合がある。
【0058】
入力データは、マスクされたSubBytes304内で非線形演算を行うことができる。マスクされたSubBytes304は、任意の数のS-BoxまたはGF乗算器を含むことができ、ドメイン指向のマスキングを実装することができる。態様では、S-Boxの数は、SCA耐性、回路面積、クロックサイクルごと及びS-Box評価ごとに消費される疑似ランダムビット数、及びスループットに大きな影響を与える可能性がある。態様では、マスクされたSubBytes304は16個のマスクされたS-Boxが含むことができる。SubBytes304のプロセス中に、入力データのバイトが置換及びシフトされ、入力ビットと出力ビットとの相関関係を弱くする暗号化された安全な方法が生成される。1つまたは複数のS-Box評価の部分的な結果は、図6でより詳しく説明されているように、リマスキングのため別のS-Boxに転送される場合がある。いくつかの評価では、リマスキングを実行するためにPRNG316によって疑似乱数が提供される場合がある。一般に、SubBytes304は、回路動作がSCAに耐性を持つように実装される。
【0059】
AESユニット116はマスクされた実装の観点から説明されているが、例えばAESユニット116を乱数生成に使用するときなど、適切であると判断された場合はマスクを無効にすることができる。そのため、マスキングを無効にすると、マスクされていないS-Box実装が含まれる可能性がある。
【0060】
次に、マスクデータはShiftRows306ステージを通過し、マスクデータの行がフォワードプロセス中にシフトされる。ShiftRows306ステージでは、マスクデータの行(例えば、状態配列)が循環的にシフトされ、入力データのバイト順序にスクランブルがかけられる場合がある(例えば、MUXを使用する)。マスクデータは、その後、MixColumn308-1ステージを通過し、列内の各バイトが同じ列内のすべてのバイトの関数に置き換えられる(例えば、排他的論理和(XOR)ゲートまたはMUXを使用)。暗号化/復号化では、複数のサイクル(またはステージ)の動作が利用される場合がある。
【0061】
AESユニット116は、鍵を使用して対称暗号化及び復号化を提供できるため、完全鍵データは、初期鍵を使用して暗号化することも、復号鍵310を使用して暗号化することもできる。完全鍵は、然るべきタイミングでマスクされたKeyExpand314ステージにリリースされるように、完全鍵レジスタ312に格納することができる。
【0062】
暗号化または復号化中に、それぞれの鍵はマスクされ、マスクされたKeyExpAND314ステージで複数のS-Box及びGF乗算器によって操作され得る。マスクされたSubBytes304と同様に、マスクされたKeyExpand314ステージは、暗号論的に安全な方法でデータを置換及びシフトするために並列に評価する複数のS-Boxで構成することができる。いくつかの実施態様では、マスクされたKeyExpAND314ステージは、マスクされたSubBytes304よりも小さい動作を実行することができ、したがって、マスクされたKeyExpAND314ステージは、より少ない数のS-Box(例えば、4つのS-Box)を使用することができる。このように、AESユニット116は、それぞれ異なる数のS-Boxを持つ個別のS-Boxグループを含み、異なるサイズの動作を効率的に実行できる。S-Boxの異なるグループは、互いに分離している場合もあれば、リンクされている場合もある。KeyExpAND314ステージで使用されるS-Boxは、PRNG316からのエントロピーに依存する場合があり、各ラウンドの開始時に最初のリマスキング処理を実行し、図6でより詳細に説明されているように、後続のリマスキング処理をするためにS-Boxの以前の評価から部分的な結果を転送する場合がある。
【0063】
マスクされたKeyExpAND314ステージの結果として得られた出力は、MixColumn308-2ステージに提供され、MixColumn308-1ステージと同様の動作が実行される。得られた鍵は次にマスクデータと混合され、暗号化または復号化されたデータを作成することができる。AESユニット116は、暗号化/復号化の複数のサイクルに依存する可能性があり、したがって、出力は状態レジスタ302にフィードバックされ、暗号化または復号化プロセスのすべてのステージが完了するまでプロセスが反復的に実行される可能性がある。AESユニット116は、ドメイン指向のマスキングを使用して効率的かつ安全なデータ処理の1つまたは複数の態様を実装するように設計することができ、これにより、暗号論的に安全な回路の最適化を利用して、AESユニット116を実装するために必要な面積またはコストを削減することができる。
【0064】
図4は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様による、S-Box118-1のハードウェア構成例を示す。一般的に、S-Boxは複雑なため、SCAから保護するのが特に困難である。図示のように、S-Box118-1は5つのパイプラインステージ(ステージ1 402、ステージ2 404、ステージ3 406、ステージ4 408、ステージ5 410)を含む。より多くのステージまたはより少ないステージを備える可能性のある他のS-Boxの実施態様も存在することに留意されたい。例えば、S-Boxは8つのステージを含むことができる。
【0065】
各ステージでは、マスクデータ412(A(マスクデータを伝送するワイヤは実線で表される))とマスク414(B(マスクを伝送するワイヤは破線で表される))が、演算子(図4では、添字「x」は入力を示し、添字「y」は出力を示す)、例えばGF乗算器416に入力される。
【0066】
GF乗算器416は、入力レジスタから乗算器に入力されたデータに対して演算を実行するための複雑な回路として利用される。GF乗算器416は、ドメイン指向のマスキングを利用して、S-Box118-1をサイドチャネルリークから保護することができる。簡潔にするために図示していないが、GF乗算器416は、図5に関してより詳細に説明されているように、評価中にサイドチャネルリークを防ぐために、新しい乱数(例えば、疑似乱数)を利用することができる。
【0067】
明確にするために個々の入力レジスタは示されていないが、S-Box118-1は、GF乗算器416の1つまたは複数のインスタンスの前に入力レジスタ(レジスタ120の例)を含み、入力値をGF乗算器416に適切なタイミングでリリースするまで格納できることに留意されたい。ステージは、あるパイプラインステージから次のパイプラインステージにデータを運ぶパイプラインレジスタ(レジスタ120の例)も含むことができる。
【0068】
マスクデータ412とマスク414は、一連の線形演算子によって線形にマッピングされる。態様では、マスクデータ412とマスク414は8ビットの入力だが、他の実施態様では、より大きな入力またはより小さな入力を含んでもよい。概要で説明したように、線形マップ出力は一時的にグリッチ(例えば、異なるワイヤ長、ゲート遅延などによる)を含むおそれがあり、これによりデータがSCAの影響を受けやすくなる可能性がある。この問題を緩和し、信号内のグリッチの存在を制御することでセキュリティを確保するために、ステージ1 402において、入力レジスタ424(例えば、少なくとも2つの入力レジスタ)及びパイプラインレジスタ422(例えば、少なくとも2つのパイプラインレジスタ、パイプラインレジスタ422-1、パイプラインレジスタ422-2、パイプラインレジスタ422-3、及びパイプラインレジスタ422-4)の前にフリップフロップ(図示せず)を配置することができる。入力レジスタ424とパイプラインレジスタ422には同じデータが保持される場合がある。したがって、入力レジスタ424と対応するパイプラインレジスタ422の各対は共有フリップフロップに結合され、入力レジスタ424とパイプラインレジスタ422のそれぞれの対に1つのフリップフロップを有する必要性が減る。
【0069】
ステージ1 402では、マスクデータ412とマスク414は、GF(24)乗算器416によって演算される。このため、入力レジスタ424は4つの入力レジスタが含むことができ、各入力レジスタは同じ値を保持する対応するパイプラインレジスタ422を備える。したがって、これらのレジスタの対ごとにフリップフロップを共有することで、SCA耐性を損なうことなく4つのフリップフロップを節約できる。
【0070】
S-Box118-1の各ステージは、特定のクロックサイクルで開始されることができる。このようにして、パイプラインレジスタ422と出力レジスタ(例えば、ステージ1 402のスカラー演算子であるGF乗算器416から出力された値を格納する)は、ステージ2 404が動作を開始するまでデータを格納できる。ステージ2 404の動作開始時に、データは出力レジスタ及びパイプラインレジスタ422からリリースされ、ステージ2の演算子またはステージ2のパイプラインレジスタに提供され得る。出力レジスタからのデータは、パイプラインレジスタ426(例えば、パイプラインレジスタ426-1、パイプラインレジスタ426-2)及び入力レジスタ428に渡される場合がある。
【0071】
一部のS-Box設計では、入力レジスタ248とパイプラインレジスタ426のそれぞれが、レジスタに渡される信号の過渡的影響を除去する独自のフリップフロップに結合される場合がある。入力レジスタ428(例えば、少なくとも2つの入力レジスタ)とパイプラインレジスタ426(例えば、少なくとも2つのパイプラインレジスタ)が同じ値を格納する可能性があることを考慮すると、パイプラインレジスタ426と入力レジスタ428の各対で1つのフリップフロップが共有され得る。具体的には、入力レジスタ428とパイプラインレジスタ426の入力レジスタ/パイプラインレジスタの各対は、共有フリップフロップに結合される場合がある。いくつかの実施態様では、入力レジスタ428は4つのレジスタを含むことができ、パイプラインレジスタ426は4つのレジスタを含むことができる。このため、ステージ2 404のS-Box118-1から4つのフリップフロップを削除することができる。前述のように、ドメイン指向マスキングを使用した効率的かつ安全なデータ処理により、S-Boxのステージ1 402とステージ2 404を実装するために必要な回路規模を縮小することができる。態様では、この最適化により、S-Boxの回路面積全体を約10パーセント縮小することができる。
【0072】
ステージ2の演算子の出力は、ステージ3 406で結合され、反転され得る。このデータは、次にパイプラインレジスタ426-2からのデータに加えて、ステージ3 406のGF乗算器416に提供され得る。この乗算器の出力は、次にパイプラインレジスタ422からレジスタを介して渡されたデータとともに、ステージ4 408のGF乗算器416に提供され得る。ステージ5 410では、ステージ4 408のGF乗算器416の出力に対して、逆線形写像を実装する一連の線形演算を行うことができる。逆線形写像は、次にマスクデータ出力418とマスク出力420を出力することができる。
【0073】
図5は、エントロピー注入回路を備えた複数のガロア体乗算器を含むAES S-Box118-2のハードウェア構成例を示す。態様では、図4に関して上述したように、6つのGF乗算器416がそれぞれのステージ(例えば、ステージ1 402、ステージ2 404、ステージ3 406、ステージ4 408)内に示されている。上記のように、GF乗算器416の評価中にサイドチャネルリークを防止するリマスキング処理を実行するためにエントロピーが必要になる場合がある。
【0074】
新たな乱数を提供し、SCAリークを回避するために、GF乗算器416ごとにエントロピー注入回路を実装することができる。態様では、ステージ1は、8ビットの乱数を必要とするGF(24)乗算器416を利用する。サイドチャネルリークが発生しないようにするには、入力が更新される同じサイクルでのみ新しい乱数を適用する必要がある。入力を更新せずに新しい乱数を提供したり、新しい乱数を適用せずに入力を更新したりすると、サイドチャネルリークが発生する可能性がある。
【0075】
必要な場合にのみ新しい乱数が提供されるように、エントロピー注入回路は、関連する乗算器が評価されるときにエントロピーをGF乗算器416に転送する。新しい乱数が必要ない場合(例えば、GF乗算器416が評価しない場合)、PRNG316は乱数をレジスタ120に提供し、リマスキングが必要になるまで乱数はバッファリングされる。入力ビットごとに、このエントロピー注入には、2つのMUX502(例えば、MUX502-1とMUX502-2)及びレジスタ120(例えば、フリップフロップを含む)が必要になる場合がある。S-Box全体にわたって、各ステージで新しい乱数が必要となる。例えば、第2ステージでは4ビットの新しい乱数が必要であり、第3ステージと第4ステージではステージごとに合計8ビットが必要である(例えば、各ステージ内の2つのGF乗算器416のそれぞれに4ビットの新しい乱数)。結果として、この実装では、関連する入力が更新されたときにのみGF乗算器416がランダムに更新されることを保証するために、広大な回路規模と複雑なバッファロジックが必要になる場合がある。
【0076】
図6は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様による、複数のAES S-Box118(例えば、S-Box118―3とS-Box118―4)のハードウェア構成例600を示す。態様では、S-Box118は、図3図5に関して説明したものと同様の動作を実行できる。S-Box118は、5つのステージ(例えば、ステージ1 402、ステージ2 404、ステージ3 406、ステージ4 408、ステージ5(図示せず))を含む。図5のS-Boxとは対照的に、図6のS-Box118は互いに結合されており、第1S-Box(例えば、S-Box118-3)の前ステージからの中間結果(例えば、マスクまたはマスクデータのいずれか、ただし両方ではない)が、別のS-Box(例えば、S-Box118-4)の後続ステージで乱数として使用することができる。
【0077】
GF乗算器416をS-Box118にわたって接続すると、各ステージでGF乗算器416に新しい乱数を注入するために必要な注入乱数回路の数を減らすことができ、それによって回路規模を縮小できる。個別のエントロピー注入回路を用いる代わりに、第1S-Boxの中間結果を第2S-Boxの新たな乱数として使用することができる。この技法では、ステージ1 402のGF乗算器416のエントロピーを生成するために、S-Box118ごとに1つのエントロピー生成回路のみが必要になり得る。例えば、ステージ1 402の実行後、前のステージの第1S-Box118-3の出力を使用して、後続ステージの第2S-Box118-4にエントロピーを提供できる。このプロセスは任意の数のS-Boxに対して繰り返すことができ、各S-Boxは1つまたは複数の異なるS-Boxとの間で乱数の提供及び/または受信を行う。
【0078】
いくつかの実施態様では、S-Boxが複数のS-Boxに乱数を提供することができる。例えば、S-Boxの中間結果は、後続ステージで乱数として必要なビット数よりも多くのビットを提供することができる。このように、中間結果の一部は、異なるS-Boxの後続ステージ及び別の異なるS-Boxの後続ステージで乱数として使用することができる。代替的または追加的に、前ステージの複数のS-Boxによって後続ステージで乱数を提供することができ、その場合、各S-Boxからの部分結果の一部が結合され、乱数として使用される。例えば、第1S-Box及び第2S-Boxから、1つまたは複数のS-Boxの複数のGF乗算器416に乱数を提供することができる。態様では、エントロピーを受信する複数のGF乗算器416は、同じS-Box内または異なるS-Box内に存在してもよい。第1S-Boxと第2S-Boxはそれぞれ、第1部分と第2部分(例えば、中間結果のビットの適切なサブセット)を含む出力を提供するGF乗算器を含むことができる。
【0079】
一実施態様では、第1S-Box(例えば、前ステージのGF乗算器416から)の出力の第1部分は、第2S-Box(例えば、前ステージのGF乗算器416から)の出力の第1部分と結合され、複数のGF乗算器416のうちの1つのGF乗算器(例えば、異なるS-Boxの後続ステージ内)に乱数として提供される。このため、後続ステージのGF乗算器416は、複数のS-Box118、複数のGF乗算器416、またはその両方から乱数を受け取ることができる。
【0080】
同様に、第1S-Boxの第1GF乗算器の出力の第2部分は、第2S-BoxのGF乗算器の出力の第2部分と結合され、複数のGF乗算器416のうちの異なるGF乗算器に提供される場合がある。このように、1つのGF乗算器が、複数のGF乗算器、複数のS-Box118、またはその両方に乱数を提供できる。
【0081】
一般に、異なる数のS-Boxにエントロピーを提供したり、異なる数のS-Boxからエントロピーを受信したりするエントロピー転送の複数のバリエーションが存在する場合がある。いくつかの例では、部分(例えば、中間)結果のみが使用され(マスクまたはマスクデータのいずれか、ただし両方ではない)、エントロピーが別のS-Boxに転送される(例えば、同じS-Box内の後続ステージに転送されない)などの他の制限が守られている限り、これらのバリエーションのいずれも適切であり得る。
【0082】
前ステージから後続ステージにエントロピーを提供することにより、エントロピー注入におけるバッファロジックを削除できる。例えば、S-Box118-3のステージ1 402のGF乗算器416が評価する場合、中間出力をレジスタ120に保持することができる。ステージ1 402GF乗算器416の中間結果の出力が、別のS-Box118-4のステージ2 404のGF乗算器416を示すことが評価されるため、この値は、その後、異なるS-Box118-4のステージ2 404のGF乗算器416にエントロピーとして提供することができる。この方法では、サイドチャネルリークを防ぐために必要な場合、GF乗算器への入力が更新されたときのみ、追加のバッファロジックを必要とせずに、GF乗算器に新しい乱数を提供できる。これにより、所望のクロックサイクルに従って乱数を適用する正確性と安定性が確保される。このプロセスは各ステージにわたって実装することができ、前ステージが後続ステージに乱数を提供し、S-Box118のグループ内の各S-Boxがデイジーチェーン接続を可能にすることで回路規模を縮小することができる。
【0083】
新しい乱数の独立性を確保するために、新しい乱数は、提供されるS-Boxとは別のS-Boxから取得することができる。態様では、これにより、GF乗算器への入力と提供される乱数の間に独立性が生まれる。S-Boxからの部分結果を、乱数、例えば、マスクデータまたはマスクとして使用して、データの真値(例えば、シークレットまたはマスクとマスクデータの合計)から動作の独立性を確保することができる。実際、この独立性は数学的に証明することができる。ただし、マスクとマスクデータの両方が乱数として使用される場合、提供される乱数が動作のシークレットを表すことで、サイドチャネルリークが発生する可能性がある。
【0084】
SCAに対するセキュリティをさらに確保するために、高次マスキングを実行することができる。いくつかの実施態様では、マスクデータを作成するために単一のマスクがデータに追加される一次マスキングが使用される。ただし、いくつかの実施態様では、高次マスキングを使用することができる。高次マスキングでは、SCAに対するセキュリティ強化を高めるために、データに複数のマスク、例えば、n個のマスクを追加できる。この実施態様では、追加のマスクを作成するために追加の乱数が必要になる場合があり、上記のように前ステージから転送される場合と転送されない場合がある。
【0085】
乱数を提供する際、入力乱数の均一性を確保することが重要となり得る。すなわち、提供される乱数を確保するためには、特定の値に統計的に偏らないようにすることである。この均一性を実現するために、中間結果(例えば、マスクまたはマスクデータ)は、提供先のS-Boxとは別のS-Boxから取得することができる。乱数の独立性と同様に、均一性も数学的に証明することができる。
【0086】
記載のとおり、任意の数のS-Boxを接続して、それぞれのGF乗算器に乱数を付与することができる。このように、各実施態様で使用されるS-Boxの数は、回路規模、計算時間、及びSCA耐性をてこいれするための自由度として作用する。例えば、S-Box118は反復的に使用され、より少ないS-Boxでより多くの反復(例えば、より多くの計算時間)を使用してデータを正しく処理できる。同じS-Box118を繰り返し使用することで、システム内のリークが攻撃者にとってより顕著になる可能性があるため(例えば、繰り返しによって、またはより少ないS-Boxを動作することによるノイズフロアの低下によって)、SCA耐性が低下する。しかし、S-Box118の総数が減少すると、回路規模が小さい回路を設計できるようになり、コストを削減することができる。S-Box118の数が多い設計では、より多くのS-Box118による寄与によって、システムはより大きなノイズフロアで動作することができる。結果として、効果的なSCAがより困難になり、セキュリティを強化することができる。
【0087】
この兼ね合いにより、接続されたS-Box118の複数のセットを設計内に実装して、各計算の特性に基づいて異なる数のS-Box118を使用できるようにすることができる。例えば、回路は、接続された16個のS-Box118のより大きなセットと、接続された4個のS-Box118のより小さなセットを含むことができる。態様では、S-Box118のより小さなセットは、より小さいまたはより少ないセキュリティ積分計算に使用することができ、より大きなセットは、より大きなまたはより多いセキュリティ積分計算に使用することができる。乱数はGF乗算器416が評価されるときにのみ更新されるため、S-Box118のセットが大きすぎると、一部の計算では最適ではない可能性がある。したがって、異なるサイズのS-Boxループのセットを使用すると、様々な計算を最適に処理できるようになる。
【0088】
方法700は、動作を指定するブロックのセットとして示されており、これらの動作は実行され得るが、それぞれのブロックによって動作を実行するために示された順序または組み合わせに必ずしも限定されない。さらに、1つまたは複数の動作のいずれかを繰り返し、組み合わせ、再編成しまたはリンクして、多様な追加的及び/または代替的な方法を提供してもよい。これらの技術は、1つのデバイス上で動作する1つのエンティティまたは複数のエンティティによって行われることに限定されない。いくつかの態様では、方法700の動作または作用は、S-Box、GF乗算器、または任意の他の構成要素によって実装または管理される。明確にするために、図1Bの要素及び/または図1図6を参照して記載されたエンティティ、構成要素、または構成を参照して方法を説明する。
【0089】
図7は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様による、暗号化動作を実行するための例示的な方法700を示す。この方法により、エントロピー生成回路及びバッファロジックの必要性を低減し、S-Box118を実装するために必要な回路規模を縮小することができる。
【0090】
702では、第1S-Box(例えば、S-Box118)の第1GF乗算器(例えば、GF乗算器416)が評価される。例えば、マスク414とマスクデータ412が第1GF乗算器416に提供される場合があり、乗算器が評価されるときにそれらが演算される。第1GF乗算器が第1S-Boxのステージ1 402にある場合、GF乗算器にはエントロピー生成回路からエントロピーが提供され、リマスキングを実行することができる。第1GF乗算器は中間結果(例えば、演算がそこで実行された後のマスク414またはマスクデータ412)を生成することができ、これらを組み合わせることでシークレットを明らかにすることができる。
【0091】
704では、第1S-Boxの中間結果が、第2S-Box(例えば、S-Box118)の第2GF乗算器(例えば、GF乗算器416)に送信される。態様では、第1S-Boxの中間結果を保持するレジスタ120は、第2GF乗算器の乱数入力に結合することができる。第1S-Boxの中間結果は、第2S-Boxの後続ステージ内で第2のGF乗算器に送信することができる。態様では、前ステージにある第1GF乗算器が実行された後に中間結果を新しいS-Boxに転送すると、サイドチャネルリークを防ぐことができる。
【0092】
706では、第1GF乗算器の中間結果が第2GF乗算器で受信される。例えば、中間結果は、第2GF乗算器への入力が更新されているのと同じクロックサイクルで受信され得るため、サイドチャネルリークの可能性が低減される。
【0093】
708では、第1GF乗算器の中間結果をリマスキングの新しい乱数として使用して、第2GF乗算器を評価できる。第2GF乗算器は、第2GF乗算器に提供されるマスク414及びマスクデータ412を評価することができる。態様では、マスク414及びマスクデータ412に対して動作が実行された後、中間結果をリマスキングに使用することができる。前ステージからの中間結果を後続ステージの乱数として使用することにより、コストのかかるエントロピー生成回路とバッファロジックをS-Box118の設計から削除できる。
【0094】
図8は、1つまたは複数の態様による、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装することができる電子デバイス800の例の様々な構成要素を示す。電子デバイス800を、固定、モバイル、スタンドアロンまたは組み込みのデバイスのうちの任意の1つまたは複数として実装してもよい。また、消費者、コンピュータ、ポータブル、ユーザ、サーバ、通信、電話、ナビゲーション、ゲーム、オーディオ、カメラ、メッセージング、メディア再生、及び/または図1Bに装置102として示されているスマートフォンなどの他の種類の電子デバイス800の任意の形態で実装してもよい。図示の構成要素の1つまたは複数を、個別の構成要素として、または電子デバイス800の少なくとも1つの集積回路上に集積された構成要素として実現してもよい。概して、電子デバイス800のさまざまな構成要素は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の1つまたは複数の態様に従って構成要素間の通信をサポートするインターコネクト122、及び/または1つもしくは複数のファブリックを介して結合される。
【0095】
電子デバイス800は、例えば、受信データ、送信データ、または本明細書で特定されるその他の情報などのデバイスデータ110の有線及び/または無線通信を可能にする1つまたは複数の通信トランシーバ126を含むことができる。通信トランシーバ126の例として、近距離無線通信(NFC)トランシーバ、さまざまなIEEE802.15(Bluetooth(登録商標))規格に準拠した無線パーソナルエリアネットワーク(PAN)(WPAN)無線機、さまざまなIEEE802.11(WiFi(登録商標))規格のいずれかに準拠した無線ローカルエリアネットワーク(LAN)(WLAN)無線機、携帯電話用の無線ワイドエリアネットワーク(WAN)(WWAN)無線機(例えば、第3世代パートナーシッププロジェクト準拠(3GPP(登録商標)準拠)のもの)、さまざまなIEEE802.16(WiMAX(登録商標))規格に準拠した無線メトロポリタンエリアネットワーク(MAN)(WMAN)無線機、赤外線データ協会(IrDA)プロトコルに準拠した赤外線(IR)トランシーバ、及び有線ローカルエリアネットワーク(LAN)(WLAN)イーサネット(登録商標)トランシーバが挙げられる。
【0096】
電子デバイス800はまた、1つまたは複数のデータ入力ポート(例えば、I/Oポート128)を含んでもよく、これを介して、任意の種類のデータ、メディアコンテンツ、及び/またはその他の入力を受信することができる。その例としては、ユーザが選択可能な入力、メッセージ、アプリケーション、音楽、テレビコンテンツ、録画されたビデオコンテンツ、ならびにマイクまたはカメラなどのセンサを含む任意のコンテンツ及び/またはデータソースから受信した他の任意の種類のオーディオ、ビデオ、及び/または画像データがある。データ入力ポートは、USBポート、同軸ケーブルポート、光ファイバー相互接続またはケーブル用の光ファイバーポート、及びフラッシュメモリ、デジタルビデオディスク(DVD)、コンパクトディスク(CD)などのための他のシリアルコネクタまたはパラレルコネクタ(内部コネクタを含む)を含んでもよい。これらのデータ入力ポートを使用して、電子デバイスを構成要素、周辺機器、またはキーボード、マイク、カメラ、もしくはその他のセンサなどのアクセサリに結合してもよい。
【0097】
この実施例の電子デバイス800は、少なくとも1つのプロセッサ106(例えば、アプリケーションプロセッサ、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラなどのいずれか1つまたは複数)を含み、プロセッサ106は、コンピュータ実行可能命令を処理(例えば、実行)してデバイスの動作を制御する、プロセッサとメモリとを組み合わせたシステム(例えば、SoCの一部として実装される)を含むことができる。プロセッサ106は、アプリケーションプロセッサ、組み込みコントローラ、マイクロコントローラ、セキュリティプロセッサ、人工知能(AI)アクセラレータなどとして実装できる。一般に、プロセッサまたは処理システムは、少なくとも部分的にハードウェアで実装することができ、集積回路またはオンチップシステム、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブルロジックデバイス(CPLD)、及びシリコン及び/または他の材料で他の実施態様の構成要素を含むことができる。
【0098】
代替的にまたは追加的に、電子デバイス800は、処理回路及び制御回路に関連して実装されるソフトウェア、ハードウェア、ファームウェア、または固定ロジック回路を含むことができる電子回路のいずれか1つまたはそれらを組み合わせて実装することができ、概して802(電子回路802として)で示される。この電子回路802は、コンピュータ可読媒体に保存された処理/コンピュータ実行可能命令、論理回路及び/またはハードウェア(例えば、FPGAなど)などによって、実行可能モジュールまたはハードウェアベースのモジュール(図8には示されていない)を実装することができる。
【0099】
態様では、電子デバイス800はインターコネクト122を含み、システムバス、インターコネクト、クロスバー、データ転送システム、またはデバイス内の様々な構成要素を結合するその他のスイッチファブリックのうちの任意の1つまたは複数を含んでもよい。システムバスまたはインターコネクトは種々のバス構造の任意の1つまたは組み合わせを含むことができ、その例には、メモリバスもしくはメモリコントローラ、周辺バス、パリティブロック、エラー訂正コード(ECC)ブロック、ユニバーサルシリアルバス、及び/またはさまざまなバスアーキテクチャのいずれかを利用するプロセッサバスもしくはローカルバスがある。
【0100】
電子デバイス800はまた、データ保存を可能にする1つまたは複数のメモリデバイス804を含み、その例として、ランダムアクセスメモリ(RAM)、不揮発性メモリ(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM))、及びディスクストレージデバイスが挙げられる。したがって、メモリデバイス(複数可)804を、システムの種々の論理ストレージレベル全域に、及び種々の物理構成要素に分散させることができる。メモリデバイス804(複数可)は、デバイスデータ110、他の種類のコード及び/またはデータ、及び様々なデバイスアプリケーション806(例えば、ソフトウェアアプリケーションまたはプログラム)を格納するためのデータストレージメカニズムを提供する。例えば、オペレーティングシステム808は、メモリデバイス804内にソフトウェア命令として保持され、プロセッサ106によって実行され得る。
【0101】
いくつかの実施態様では、電子デバイス800は、オーディオデータを処理し、及び/またはオーディオデータ及びビデオデータをオーディオシステム812及び/またはディスプレイシステム814(例えば、ビデオバッファまたはスマートフォンやカメラの画面)に渡すオーディオ及び/またはビデオ処理システム810も含む。オーディオシステム812及び/またはディスプレイシステム814は、オーディオ、ビデオ、ディスプレイ及び/または画像データを処理、表示及び/またはそうでなければレンダリングする任意のデバイスを含んでもよい。ディスプレイデータ及びオーディオ信号を、高周波(RF)リンク、Sビデオリンク、高精細度マルチメディアインターフェース(HDMI(登録商標))、コンポジットビデオリンク、コンポーネントビデオリンク、デジタルビデオインターフェース(DVI)、アナログオーディオ接続、ビデオバス、またはメディアデータポート816などの他の同様の通信リンクを介して、オーディオ構成要素及び/またはディスプレイ構成要素に通信することができる。いくつかの実施態様では、オーディオシステム812及び/またはディスプレイシステム814は、電子デバイス800の外部構成要素または別個の構成要素である。あるいは、例えば、ディスプレイシステム814を、統合タッチインターフェースの一部など、例示的な電子デバイス800の集積構成要素とすることができる。
【0102】
図8の電子デバイス800は、図1の装置102の例示的な実施態様、すなわち、図1Bから図7を参照して説明したように、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装することができるデバイスの例示的な実施態様である。したがって、電子デバイス800はセキュリティ回路112を含むことができ、このセキュリティ回路112を、別個のICチップとすることができる、またはプロセッサ106、電子回路802もしくはメモリデバイス804などの別のICチップもしくはデバイスの一部として含むことができる。したがって、図示された構成要素の1つまたは複数を、SoCのように同じICチップ上に、または少なくとも単一のプリント回路基板(PCB)上に、集積してもよい。
【0103】
セキュリティ回路112は、暗号化または復号化を使用して暗号的に安全な動作を実行するAESユニット116を含んでもよい。AESユニット116は、上記のドメイン指向のマスキングを使用した安全で効率的なデータ処理の1つまたは複数の態様に従って、任意の数のS-Boxまたはそのレジスタを含むことができる。したがって、本明細書に記載したとおりドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の原理を、図8の電子デバイス800によって、またはこれと併せて、実装することができる。
【0104】
ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理を実装するための上記の技法とシステムの態様は、高度暗号化標準(AES)に適用可能であると説明されているが、上記の技法とシステムは、セキュアハッシュアルゴリズム(SHA)(例えば、SHA-1、SHA-2、SHA-3、Keccak)、認証暗号化及びハッシュ(ASCON)、Rivest-Shamir-Adleman(RSA)、トリプルデータ暗号化アルゴリズム(3DES)、Twofish、楕円曲線暗号(ECC)など、様々な他の暗号化スキームやアプリケーションのいずれかにも適用できる。
【0105】
文脈により別段の指示がない限り、本明細書における「または」という言葉の使用を、「包括的なまたは」、または「または」という言葉によってリンクされている1つまたは複数の項目の包含または適用を許可する用語の使用とみなしてもよい(例えば、「AまたはB」という語句を、「A」のみを許可するもの、「B」のみを許可するもの、または「A」と「B」の両方を許可するものとして解釈してもよい)。また、本明細書で使用されるように、項目のリストの「少なくとも1つ」を指すフレーズは、単一のメンバーを含む、それらの項目の任意の組み合わせを指す。例えば、「a、b、cの少なくとも1つ」は、a、b、c、ab、ac、bc、abcだけでなく、同じ要素の倍数を含む任意の組み合わせ(例えば、aa、aaa、aab、aac、abb、acc、bb、bbb、bbc、cc、ccc、またはa、b、cの任意の他の順序)もカバーすることができる。さらに、添付の図面で示す項目及び本明細書で説明する用語は、1つまたは複数の項目または用語を示す場合があり、したがって、本記載要件における項目及び用語の単数形または複数形を互換的に参照することができる。安全な暗号化プロセッサを実施態様は、特定の機能及び/または方法に特有の言語で説明されているが、添付の特許請求の範囲の主題は、必ずしも記載された特定の機能または方法に限定されるわけではない。むしろ、特定の機能及び方法は、安全な暗号化動作の例示的な実施態様として開示されている。
【0106】
ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の例を以下に示す。
例1:高度暗号化標準の置換ボックスを含む集積回路であって、第1ステージは、マスクされたガロア体乗算器、マスクされたガロア体乗算器への少なくとも2つの入力レジスタ、高度暗号化標準の置換ボックスの第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタ、マスクされたガロア体乗算器への少なくとも2つの入力レジスタの第1入力レジスタと、第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタの第1パイプラインレジスタを含む第1対のレジスタで動作するように構成された第1フリップフロップ、及び少なくとも2つの入力レジスタの第2入力レジスタと、少なくとも2つのパイプラインレジスタの第2パイプラインレジスタを含む第2対のレジスタで動作するように構成された第2フリップフロップを含む、集積回路。
【0107】
例2:マスクされたガロア体乗算器への少なくとも2つの入力レジスタが4つの入力レジスタを含み、及び/または、高度暗号化標準の置換ボックスの第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタが4つのパイプラインレジスタを含む、例1の集積回路。
【0108】
例3:第1ステージは、マスクされたガロア体乗算器への少なくとも2つの入力レジスタのうちの第3入力レジスタと、第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタのうちの第3パイプラインレジスタを含む第3対のレジスタで動作するように構成された第3フリップフロップ、及び/または、マスクされたガロア体乗算器への少なくとも2つの入力レジスタのうちの第4入力レジスタと、第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタのうちの第4パイプラインレジスタを含む第4対のレジスタで動作するように構成された第4フリップフロップをさらに含む、例1の集積回路。
【0109】
例4:マスクされたガロア体乗算器はマスクされた第1ガロア体乗算器であり、及び/または、高度暗号化標準の置換ボックスは第2ステージをさらに含み、第2ステージが、マスクされた第2ガロア体乗算器と、マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタとを含む、例1の集積回路。第2ステージは、高度暗号化標準の置換ボックスの第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタ、マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタのうちの第3入力レジスタと、第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタのうちの第3パイプラインレジスタを含む第3対のレジスタで動作するように構成された第3フリップフロップと、マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタのうちの第4入力レジスタと、第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタのうちの第4パイプラインレジスタを含む第4対のレジスタで動作するように構成された第4フリップフロップをさらに含むことができる。
【0110】
例5:マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタが4つの入力レジスタを含み、及び/または、高度暗号化標準の置換ボックスの第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタが4つのパイプラインレジスタを含む、例4の集積回路。
【0111】
例6:高度暗号化標準の置換ボックスが、マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタのうちの第5入力レジスタと、第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタのうちの第5パイプラインレジスタを含む第5対のレジスタで動作するように構成された第5フリップフロップ、及び/または、マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタのうちの第6入力レジスタと、第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタのうちの第6パイプラインレジスタを含む第6対のレジスタで動作するように構成された第6フリップフロップを含む第2ステージをさらに含む、例4の集積回路。
【0112】
例7:第1対のレジスタ及び第2対のレジスタはマスクまたはマスクデータを格納する、例1の集積回路。
【0113】
例8:高度暗号化標準の置換ボックスの少なくとも一部に対して回路合成ツールが無効にされている、例1の集積回路。
【0114】
例9:少なくとも2つの高度暗号化標準の置換ボックスを備え、少なくとも2つの高度暗号化標準置換ボックスのうちの第1の高度暗号化標準の置換ボックスは、第1ガロア体乗算器を含む前ステージを含み、第1ガロア体乗算器の出力が、少なくとも2つの高度暗号化標準の置換ボックスのうちの追加の高度暗号化標準の置換ボックス(例えば、第1の高度暗号化標準の置換ボックスとは異なる)の後続ステージ内の第2ガロア体乗算器の乱数入力に結合される、集積回路。
【0115】
例10:第1ガロア体乗算器の出力が、追加の高度暗号化標準の置換ボックスの後続ステージ内の第3ガロア体乗算器の乱数入力に、または少なくとも2つの高度暗号化標準の置換ボックスのうちの別の高度暗号化標準の置換ボックスの後続ステージ内の第4ガロア体乗算器の乱数入力に、さらに結合され、別の高度暗号化標準の置換ボックスは追加の高度暗号化標準の置換ボックスとは異なる、例9の集積回路。
【0116】
例11:第1ガロア体乗算器の出力の第1部分が第2ガロア体乗算器の乱数入力に結合され、出力の第1部分は出力よりも少ないビット数を有し、及び/または第1ガロア体乗算器の出力の第2部分が第3ガロア体乗算器の乱数入力に結合され、出力の第2部分は出力よりも少ないビット数を有する、例10の集積回路。
【0117】
例12:第1ガロア体乗算器の出力は第1出力であり、第1高度暗号化標準の置換ボックスの前ステージは、第2出力を有する第5ガロア体乗算器をさらに含み、第5ガロア体乗算器の第2出力の第3部分は第2ガロア体乗算器の乱数入力に結合され、第2出力の第3部分は第2出力よりも少ないビット数を有し、及び/または第5ガロア体乗算器の第2出力の第4部分は第3ガロア体乗算器の乱数入力に結合され、第2出力の第4部分は第2出力よりも少ないビット数を有する、例11の集積回路。
【0118】
例13:第1ガロア体乗算器からの出力は、第1ガロア体乗算器の部分結果を含み、部分結果は、マスクまたはマスクデータの少なくとも一部を含む、例9の集積回路。
【0119】
例14:少なくとも2つの高度暗号化標準の置換ボックスは、高度暗号化標準の置換ボックスの第1セットであり、集積回路はさらに、少なくとも2つの異なる高度暗号化標準の置換ボックスを含む高度暗号化標準の置換ボックスの第2セットを含み、少なくとも2つの異なる高度暗号化標準の置換ボックスの第2の高度暗号化標準の置換ボックスは、マスクされた第6ガロア体乗算器を含む前ステージを含み、第6ガロア体乗算器の出力は、少なくとも2つの異なる高度暗号化標準の置換ボックスのうちの追加の高度暗号化標準の置換ボックスの後続ステージ内の第7ガロア体乗算器の乱数入力に結合される、例9の集積回路。
【0120】
例15:高度暗号化標準の置換ボックスの第1セットと高度暗号化標準の置換ボックスの第2セットが異なる数の高度暗号化標準の置換ボックスを含む、例14の集積回路。
【0121】
例16:例1~15のいずれか1つの集積回路を使用して安全な暗号化動作を実行する方法。例えば、方法は、第1S-Box(例えば、S-Box118)の第1GF乗算器(例えば、GF乗算器416)を評価することと、第1S-Boxの中間結果を第2S-Box(例えば、S-Box118)の第2GF乗算器(例えば、GF乗算器416)に送信することと、第2GF乗算器で第1GF乗算器の中間結果を受信することと、第1GF乗算器の中間結果をリマスキングの新しい乱数として使用して第2GF乗算器を評価することとを含むことができる。別の例として、方法は、第1フリップフロップによって、高度暗号化標準の置換ボックスの第1ステージに含まれるマスクされたガロア体乗算器への少なくとも2つの入力レジスタのうちの第1入力レジスタと、高度暗号化標準の置換ボックスの第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタのうちの第1パイプラインレジスタとを含む第1対のレジスタで動作することと、第2フリップフロップによって、少なくとも2つの入力レジスタのうちの第2入力レジスタと、少なくとも2つのパイプラインレジスタのうちの第2パイプラインレジスタとを含む第2対のレジスタ対で動作することとを含むことができる。各フリップフロップは、例えば、それぞれの入力レジスタとパイプラインレジスタで動作し、信号内のグリッチ(過渡的な電圧変化)の発生を制御する。
【0122】
ドメイン指向のマスキングを使用して効率的かつ安全なデータ処理を実装するための記載された装置、システム、及び方法の態様は、機能及び/または方法に特有の言語で説明されているが、添付の特許請求の範囲の主題は、必ずしも記載された特定の機能または方法に限定されるわけではない。むしろ、特定の機能及び方法は、ドメイン指向のマスキングを使用した効率的かつ安全なデータ処理の例示的な実施態様として開示されており、その他の均等な機能及び方法は、添付の特許請求の範囲内にあることが意図される。さらに、ドメイン指向マスキングを使用した効率的かつ安全なデータ処理の様々な態様が説明されており、説明されている各態様を独立して、または1つまたは複数の他の説明されている態様と関連させて実装することができることが理解される。
図1
図2
図3
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2024-10-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
高度暗号化標準の置換ボックスを備えた集積回路であって、
マスクされたガロア体乗算器と、
前記マスクされたガロア体乗算器への少なくとも2つの入力レジスタと、
前記高度暗号化標準の置換ボックスの第1ステージから第2ステージへの少なくとも2つのパイプラインレジスタと、
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第1入力レジスタと、前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタのうちの第1パイプラインレジスタを含む、第1対のレジスタで動作するように構成された第1フリップフロップと、
前記少なくとも2つの入力レジスタのうちの第2入力レジスタと、前記少なくとも2つのパイプラインレジスタのうちの第2パイプラインレジスタを含む、第2対のレジスタで動作するように構成された第2フリップフロップとを含む前記第1ステージを含む、集積回路。
【請求項2】
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタは、4つの入力レジスタを含み、
前記高度暗号化標準の置換ボックスの前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタは、4つのパイプラインレジスタを含む、請求項1に記載の集積回路。
【請求項3】
前記第1ステージは、
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第3入力レジスタと、前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタのうちの第3パイプラインレジスタを含む、第3対のレジスタで動作するように構成された第3フリップフロップと、
前記マスクされたガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第4入力レジスタと、前記第1ステージから前記第2ステージへの前記少なくとも2つのパイプラインレジスタのうちの第4パイプラインレジスタを含む、第4対のレジスタで動作するように構成された第4フリップフロップとをさらに含む、請求項2に記載の集積回路。
【請求項4】
前記マスクされたガロア体乗算器はマスクされた第1ガロア体乗算器であり、
前記高度暗号化標準の置換ボックスは、
マスクされた第2ガロア体乗算器と、
前記マスクされた第2ガロア体乗算器への少なくとも2つの入力レジスタと、
前記高度暗号化標準の置換ボックスの前記第2ステージから第3ステージへの少なくとも2つのパイプラインレジスタと、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第3入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第3パイプラインレジスタを含む、第3対のレジスタで動作するように構成された第3フリップフロップと、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第4入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第4パイプラインレジスタを含む、第4対のレジスタで動作するように構成された第4フリップフロップとを含む前記第2ステージをさらに含む、請求項1に記載の集積回路。
【請求項5】
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタは、4つの入力レジスタを含み、
前記高度暗号化標準の置換ボックスの前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタは、4つのパイプラインレジスタを含む、請求項4に記載の集積回路。
【請求項6】
前記高度暗号化標準の置換ボックスは、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第5入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第5パイプラインレジスタを含む、第5対のレジスタで動作するように構成された第5フリップフロップと、
前記マスクされた第2ガロア体乗算器への前記少なくとも2つの入力レジスタのうちの第6入力レジスタと、前記第2ステージから前記第3ステージへの前記少なくとも2つのパイプラインレジスタのうちの第6パイプラインレジスタを含む、第6対のレジスタで動作するように構成された第6フリップフロップとを含む前記第2ステージをさらに含む、請求項4に記載の集積回路。
【請求項7】
前記第1対のレジスタ及び前記第2対のレジスタはマスクまたはマスクデータを格納する、請求項1に記載の集積回路。
【請求項8】
回路合成ツールは、前記高度暗号化標準の置換ボックスの少なくとも一部に対して無効にされている、請求項1に記載の集積回路。
【請求項9】
集積回路であって、
少なくとも2つの高度暗号化標準の置換ボックスを備え、第1の高度暗号化標準の置換ボックスは、
第1ガロア体乗算器を含む前ステージを含み、前記第1ガロア体乗算器の出力は、前記少なくとも2つの高度暗号化標準の置換ボックスのうち追加の高度暗号化標準の置換ボックスの後続ステージで第2ガロア体乗算器の乱数入力に結合される、集積回路。
【請求項10】
前記第1ガロア体乗算器の出力は、
前記追加の高度暗号化標準の置換ボックスの前記後続ステージ内の第3ガロア体乗算器の乱数入力に、または、
前記少なくとも2つの高度暗号化標準の置換ボックスのうち別の高度暗号化標準の置換ボックスの前記後続ステージ内の第4ガロア体乗算器の乱数入力に、さらに結合され、前記別の高度暗号化標準の置換ボックスは前記追加の高度暗号化標準の置換ボックスとは異なる、請求項9に記載の集積回路。
【請求項11】
前記第1ガロア体乗算器の前記出力の第1部分は、前記第2ガロア体乗算器の前記乱数入力に結合され、前記出力の前記第1部分は、前記出力よりも少ないビット数を有し、
前記第1ガロア体乗算器の前記出力の第2部分は、前記第3ガロア体乗算器の前記乱数入力に結合され、前記出力の前記第2部分は、前記出力よりも少ないビット数を有する、請求項10に記載の集積回路。
【請求項12】
前記第1ガロア体乗算器の前記出力は第1出力であり、
前記第1の高度暗号化標準の置換ボックスの前記前ステージは、第2出力を有する第5ガロア体乗算器をさらに含み、
前記第5ガロア体乗算器の前記第2出力の第3部分は、前記第2ガロア体乗算器の前記乱数入力に結合され、前記第2出力の前記第3部分は、前記第2出力よりも少ないビット数を有し、
前記第5ガロア体乗算器の前記第2出力の第4部分は、前記第3ガロア体乗算器の前記乱数入力に結合され、前記第2出力の前記第4部分は、前記第2出力よりも少ないビット数を有する、請求項11に記載の集積回路。
【請求項13】
前記第1ガロア体乗算器からの前記出力は、前記第1ガロア体乗算器の部分結果を含み、前記部分結果は、マスクまたはマスクデータの少なくとも一部を含む、請求項9に記載の集積回路。
【請求項14】
前記少なくとも2つの高度暗号化標準の置換ボックスは、高度暗号化標準の置換ボックスの第1セットであり、
前記集積回路は、
少なくとも2つの異なる高度暗号化標準の置換ボックスを含む高度暗号化標準の置換ボックスの第2セットをさらに含み、前記少なくとも2つの異なる高度暗号化標準の置換ボックスのうち第2の高度暗号化標準の置換ボックスは、
マスクされた第6ガロア体乗算器を含む前ステージを含み、前記第6ガロア体乗算器の出力は、前記少なくとも2つの異なる高度暗号化標準の置換ボックスのうち追加の高度暗号化標準の置換ボックスの後続ステージで第7ガロア体乗算器の乱数入力に結合される、請求項12に記載の集積回路。
【請求項15】
前記高度暗号化標準の置換ボックスの第1セットと前記高度暗号化標準の置換ボックスの第2セットは、異なる数の高度暗号化標準の置換ボックスを含む、請求項14に記載の集積回路。
【請求項16】
請求項1~15のいずれか1つの前記集積回路を使用して安全な暗号化動作を実行する方法。
【国際調査報告】