(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-27
(54)【発明の名称】読み取り専用メモリ(ROM)のセキュリティ
(51)【国際特許分類】
G06F 21/78 20130101AFI20240319BHJP
H04L 9/08 20060101ALI20240319BHJP
G06F 21/60 20130101ALI20240319BHJP
【FI】
G06F21/78
H04L9/08 A
G06F21/60 320
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023557161
(86)(22)【出願日】2022-04-01
(85)【翻訳文提出日】2023-11-14
(86)【国際出願番号】 US2022071516
(87)【国際公開番号】W WO2022213129
(87)【国際公開日】2022-10-06
(32)【優先日】2021-04-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】スウォーブリック,ルパート・ジェームズ
(72)【発明者】
【氏名】シャフナー,ミヒャエル・ステファノ・フリッツ
(72)【発明者】
【氏名】チェン,ティモシー・ジェイ
(57)【要約】
集積回路(IC)チップを備えた装置は、セキュリティ回路用の起動ROMなどの読み取り専用メモリ(118)(ROM)に対する攻撃に対する保護を提供することができる。攻撃者は、ROMのコンテンツを変更したり、および/またはROM読み取りをリダイレクトしたりすることで、ICの制御権を得ることができる。これらの攻撃に対抗するために、実装例は、暗号化されたROMデータ(410)をROMアレイ(404)に記憶する。ROMコントローラ(402)は、各ROMラインのアドレス(414)を対応する暗号化されたROMデータ(412)に暗号的に結び付けるために使用される。暗号化されたROMデータにアクセスするために、暗号化回路は、対応するROMアドレスに基づいて生成されたキーを使用して、暗号化されたROMデータを復号する。整合性チェック手順の一部として、暗号化されたROMデータに基づいてダイジェスト(516)を計算できる。攻撃をさらに阻止するために、ROMアドレス(512)を調整(例えば、スクランブル)してから、コントローラが調整されたアドレス(514)を使用してROMアレイから暗号化されたデータを読み取ることができる。
【特許請求の範囲】
【請求項1】
安全な読み取り専用メモリ(ROM)のための装置であって、
複数のROMアドレスに記憶された暗号化されたROMデータを含むROMアレイと、
前記ROMアレイに結合されたROMコントローラとを備え、前記ROMコントローラは、
前記暗号化されたROMデータに対応するROMアドレスに基づいて、前記ROMアレイから暗号化されたROMデータを読み取り、
前記暗号化されたROMデータを使用して少なくとも1つのダイジェスト値を取得し、
前記少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいて、前記ROMアレイへのアクセスをゲートするように構成される、装置。
【請求項2】
前記ROMコントローラは、ROMアドレスを調整することにより調整されたROMアドレスを生成するように構成されたアドレス調整回路を含み、
前記ROMコントローラは、前記複数のROMアドレスに記憶された前記暗号化されたROMデータを読み取るために、前記アドレス調整回路を使用して前記ROMアドレスを調整するように構成される、請求項1に記載の装置。
【請求項3】
前記ROMコントローラは、少なくとも1つのハッシュアルゴリズムを前記暗号化されたROMデータに適用させることに基づいて、前記少なくとも1つのダイジェスト値を取得するように構成される、請求項1または請求項2に記載の装置。
【請求項4】
前記ROMアレイおよび前記ROMコントローラは第1の周辺デバイスを備え、
第2の周辺デバイスは、1つまたは複数のハッシュアルゴリズムを実装するように構成され、
前記ROMコントローラは、前記第2の周辺デバイスと通信することによって前記少なくとも1つのダイジェスト値を取得するように構成される、請求項3に記載の装置。
【請求項5】
前記ROMコントローラは、前記ROMアレイから前記予想ダイジェスト値を読み取るように構成される、先行する請求項のいずれか一項に記載の装置。
【請求項6】
前記予想ダイジェスト値は、暗号化されていない形式で前記ROMアレイに記憶される、請求項5に記載の装置。
【請求項7】
前記ROMコントローラは、前記少なくとも1つのダイジェスト値を前記ROMの外部の構成要素に提供するように構成される、先行する請求項のいずれか一項に記載の装置。
【請求項8】
前記少なくとも1つのダイジェスト値が前記予想ダイジェスト値と一致することに応答して、前記ROMコントローラは、前記ROMアレイへのアクセスを認可することにより、前記暗号化されたROMデータを使用して起動手順が実行されることを可能にするように構成される、先行する請求項のいずれか一項に記載の装置。
【請求項9】
前記少なくとも1つのダイジェスト値が前記予想ダイジェスト値と一致しないことに応答して、前記ROMコントローラは、
アラーム指示を送信しおよび/または
前記ROMアレイへのアクセスをブロックすることにより、前記暗号化されたROMデータを使用して起動手順が実行されるのを防ぐように構成される、先行する請求項のいずれか一項に記載の装置。
【請求項10】
前記暗号化されたROMデータの各それぞれの暗号化されたROMデータは、前記ROMアレイ全体にわたって前記暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと異なる、先行する請求項のいずれか一項に記載の装置。
【請求項11】
前記暗号化されたROMデータの生成に関連する暗号化キーは、各それぞれの暗号化されたROMデータが、前記ROMアレイ全体にわたって前記暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと確実に異なるように選択される、請求項10に記載の装置。
【請求項12】
前記暗号化されたROMデータの生成に関連する暗号化アルゴリズムは、各それぞれの暗号化されたROMデータが、前記ROMアレイ全体にわたって前記暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと確実に異なるように選択される、請求項10に記載の装置。
【請求項13】
安全な読み取り専用メモリ(ROM)のための方法であって、
暗号化されたROMデータに対応するROMアドレスに基づいて、前記暗号化されたROMデータをROMアレイから読み取ることを含み、前記ROMアレイは、複数のROMアドレスに暗号化されたROMデータを記憶し、前記方法はさらに、
前記暗号化されたROMデータを使用して少なくとも1つのダイジェスト値を取得することと、
前記少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいて前記ROMアレイへのアクセスをゲートすることとを含む、方法。
【請求項14】
前記読み取ることは、
前記ROMアドレスを調整することにより、調整されたROMアドレスを生成することと、
前記調整されたROMアドレスを使用して、前記ROMアレイから前記暗号化されたROMデータを読み取ることとを含む、請求項13に記載の方法。
【請求項15】
前記ゲートすることは、
前記少なくとも1つのダイジェスト値が前記予想ダイジェスト値と一致しないことに応答して、前記ROMアレイへのアクセスをブロックすることを含む、請求項13または14に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
背景
電子デバイスは、製造、通信、輸送、ヘルスケア、商業、社会的交流、および娯楽において不可欠な役割を果たしている。例えば、電子デバイスは、商取引や通信にクラウドベースの分散計算機能を提供するサーバファームに電力を供給する。電子デバイスは、医療デバイスから電化製品、車両から産業用ツールに至るまで、さまざまな種類の現代の機器にも組み込まれている。パーソナル電子デバイスを使用すると、ポータブルなビデオ視聴やスマートデジタルアシスタントへの便利なアクセスが可能になる。さらに、多用途の電子デバイスの1つであるスマートフォンは、手の届く範囲にある事実上の必需品となっている。電子デバイスが普及し、現代生活のさまざまな態様に不可欠になるにつれ、デバイスのセキュリティが不可欠になっている。
【0002】
多くの人は、総称して「コンピュータウイルス」と呼ばれることもあるマルウェアに馴染みがある。一部のマルウェアは、電子デバイスに記憶されている情報に不正にアクセスしたり、電子デバイスを侵害したりするように設計されている。いくつかの戦略は、特定の種類のマルウェアに対抗することで、ユーザのデバイスと情報の安全をセキュリティの脅威から守るのに役立ち得る。これらの戦略には、復元性のある(resilient)オペレーティングシステムの採用と定期的な更新、安全な計算の実践、およびマルウェア対策プログラムのインストールが含まれる。残念ながら、これらの戦略では、電子デバイスをすべてのマルウェア攻撃に対して無敵にすることはできない。
【0003】
さらに、電子デバイスは、ソフトウェアベースのマルウェアによって実行される攻撃以外の他のタイプの攻撃に対しても脆弱になり得る。例えば、電子デバイスの安全で信頼性の高い動作や、そのようなデバイスに記憶されている情報のセキュリティは、ハードウェアへの物理的攻撃やワイヤレス通信に対する高周波攻撃によって危険にさらされ得る。言い換えれば、一部の攻撃形態は、上記に挙げた戦略を回避または弱体化し、悪意のある者が電子デバイスを侵害し、そのデバイスで使用されているアカウントに潜在的にアクセスできるようにし得る。
【0004】
電子デバイスは、さまざまな機能を可能にするインテリジェンスを提供する少なくとも1つの集積回路(IC)を含む。これらの機能は、商取引を促進し、ヘルスケアへのアクセスを合理化し、娯楽を提供し、ソーシャルメディア交流をサポートし、上記で特定したその他のサービスを可能にする。電子デバイスは、保護されるべき情報を記憶または利用することもできる。これらの機能をサポートし、安全な動作を促進するために、一部の電子デバイスは、ICの一部であるセキュリティ回路の形式でハードウェアベースの保護を含む。残念ながら、セキュリティ回路に対する既存のアプローチは、今日電子デバイスに繰り出されるさまざまなソフトウェア、ハードウェア、ワイヤレス攻撃に対抗するには不十分である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
概要
サーバコンピュータやスマートフォンなどの特定の電子デバイスは、ユーザにサービスを提供する責任を負っている。ユーザは、金融サービス、航空旅行、政府の公式文書など、1つまたは複数のアカウントを使用してアクセスする重要なサービスを取得するためにこれらの電子デバイスに依拠している。電子デバイスとアカウント間のリンクにより、侵害された電子デバイスにより、アカウントにリンクされているサービスへの望ましくないアクセスが許可されたり、アカウント自体への不正アクセスが許可されたりし得る。さらに、そのようなアカウントに関連付けられたサービスを提供するために、これらの電子デバイスは、財務データ、ユーザ名、パスワード、および暗号化用の機密キーなど、保護されるべきアカウント関連情報を記憶し得る。残念ながら、マルウェア対策プログラムは電子デバイスに対するすべての攻撃手段をブロックすることはできない。例えば、マルウェア対策プログラムは、集積回路(IC)チップ上の電圧レベルを検出するために小型プローブを使用する直接的な物理的攻撃に対する保護を提供しない場合がある。したがって、物理的攻撃への対抗を含め、電子デバイスに対する攻撃を特定、ブロック、撃退、または阻止できるハードウェアベースの対策を電子デバイスに組み込むことは有益である。
【0006】
したがって、電子デバイスは、悪意のある者からの攻撃に対抗するためのセキュリティ回路を含み得る。場合によっては、セキュリティ回路が不適切または不審なアクティビティを検出し、保護措置を講じる。セキュリティ回路はさまざまな方法で実装できる。例えば、コンピュータエンジニアは、セキュリティ回路をスタンドアロンのICチップとして、またはシステムオンチップ(SoC)などの別のチップの一部として製造できる。いずれの場合も、セキュリティ回路は、保護されたエンクレーブ、信頼できるチッププラットフォーム、ハードウェアベースの信頼のルート(RoT)(例えば、シリコンRoT)、またはそれらの組み合わせの一部であり得る。セキュリティ回路が電子デバイスにどのように、どこに組み込まれるかに関係なく、コンピュータ技術者は、次に説明するように、多くの異なる種類の攻撃に対抗するセキュリティ回路を設計することができる。
【0007】
電子デバイスに対する攻撃は、画面画像を観察したり、情報を推論するために反復的な動作を監視したりするプログラム、メモリの保護領域からデータを読み取ろうとするアプリケーション、回路の直接的な物理的プローブなどの形をとり得る。セキュリティ回路は、これらの攻撃の1つまたは複数に対抗するために複数の機能を実行する。例えば、セキュリティ回路は、使用中、輸送中、または保管中に暗号化キーを保護できる。そうするために、専用のメモリとプライベートデータバスを使用できる。セキュリティ回路は、高品質の擬似乱数を生成したり、マルウェアとして動作する可能性のあるアプリケーションから分離された領域で暗号エンジンを動作させたりすることもできる。さらに、セキュリティ回路は、改ざんされていない正しい起動可能な基本入出力システム(BIOS)を使用してハードウェアが起動されることを保証し得る。
【0008】
したがって、セキュリティ回路は、電子デバイスに対する多種多様な攻撃に対抗するための多様な機能スイートを実装する責任を担うことができる。しかし、セキュリティ回路に対する既存のアプローチは、その場限りで設計されたハードウェアアーキテクチャを採用している。セキュリティ回路の異なる回路部分も、互いに相対的に分離して設計することもできる。その結果、さまざまなセキュリティ脅威に対抗するように設計された回路部分が意図したとおりに相互運用できなくなり、ハードウェアの安全性が低下し得る。さらに、構成要素間の通信が不十分であると、悪意のある者にとって新たな攻撃経路が生まれる。さらに、このその場のアプローチにより、セキュリティ回路の設計およびテスト段階がより困難で、より長く、よりコストがかかるものになる。これにより、セキュリティアーキテクチャの開発時に一部のセキュリティ脅威が無視されたり、不適切に対処されたりし得る。したがって、これらのその場のアーキテクチャでは、多種多様なセキュリティ脅威から電子デバイスを保護することがさらに困難になる。
【課題を解決するための手段】
【0009】
しかし、本文書は、いくつかの例において、電子デバイスに対するさまざまな形態の攻撃に対抗するための復元性のあるプログラム可能なセキュリティハードウェアを生成できる、適応可能で可撓性フレームワークまたはプラットフォームを提供するアプローチについて説明する。セキュリティ回路の一部の実装では、さまざまな種類の回路、またはさまざまなセキュリティ関連機能を提供する回路部分が、確実で一貫したシグナリングをそれにもかかわらず生成する拡張プロトコルを使用して通信する。この通信プロトコルにより、さまざまなセキュリティ関連機能を提供する回路が、指定された設計フレームワークに従ってシームレスに相互作用できるようになる。設計フレームワークと通信プロトコルは、相互に別々に設計された回路構成要素であっても、安定した予測可能な相互作用とともに一貫して展開するのに適した、互換性のある構成要素を生成する。本明細書で使用される場合、「互換性のある構成要素」には、構成要素が一緒に使用するのに適するように、共通のフレームワークに準拠するように設計されたこれらの構成要素が含まれる。場合によっては、互換性により、集積回路チップの2つ以上のセキュリティ関連構成要素間である程度のプラグアンドプレイ機能が提供される。
【0010】
セキュリティ回路は、プロセッサおよび相互接続に加えて、複数の周辺デバイスを含むことができる。複数の周辺デバイスの各周辺デバイスは、セキュリティ回路の安全性または適切な機能に寄与する何らかの機能を実行できる。したがって、各周辺デバイスは、セキュリティ関連のコア機能またはサポート機能を提供できる。この機能は、データへのアクセスの制御や暗号化動作の実行など、セキュリティ回路の全体的な目的をサポートする。このような目的には、電子デバイスの他の回路および/またはICによる安全な計算を可能にする機能を提供することが含まれ得る。予測可能性と相互運用性のために、各周辺デバイスは互換性のある構成要素として実現され得る。
【0011】
一般に、計算および他の電子デバイスは、データを破壊したり盗んだりする可能性のある、物理的攻撃を含む攻撃にさらされる。ハードウェアの信頼のルート(RoT:Root of Trust)方式は、物理的な攻撃を含む多くの攻撃に対抗できる。RoTシリコンは、セキュリティ機能を提供する集積回路で実現できる。場合によっては、シリコンRoTチップには読み取り専用メモリ(ROM)が含まれており、ROMのラインを読み取りまたは変更しようとする悪意のある者による物理的攻撃を受ける。これらの物理的攻撃は、一般にROMエントリ(例えば、ROM命令ライン)、またはROMデータが読み出されている間、および/または実行されている間に実行され得る。
【0012】
しかし、ROMは、攻撃に耐えるように設計または構築することができる。さらに、ROMブロックまたはモジュールは、セキュリティチップの互換性のある構成要素(例えば、ROM周辺デバイス)として実装することができる。シリコンRoTチップまたはその他のセキュリティ回路内のROMを保護するために、ROMを暗号化できる。本文書では、暗号化を使用してROMアドレスとROMデータを結び付けることについてさらに説明する。例えば、ROMコントローラは、対応するROMアドレスを使用して、ROMデータ(例えば、特定のROMアドレスに記憶されているデータの一部または全部など、ROMメモリに記憶されているデータ項目)を復号するためのキーを生成することができる。それぞれのROMアドレスを、ROMアレイに記憶されている関連するROMデータに暗号的にリンクすることにより、ROMの(例えば、比較的狭い)アドレスバスに対する障害攻撃を使用して、読み取りを他のROMエントリに簡単にリダイレクトすることができなくなる。ROMアレイのこれらの読み取りは、コードの実行、データの取得、またはROMエントリの整合性チェックの実行に関係し得る。ROMコンテンツと、コンテンツにアクセスするROMアドレス(例えば、対応するROMデータのアドレスが記憶されているROMメモリ内のアドレス)へのこの暗号リンクにより、復号キーが敵に知られている場合でもROMを保護できる。
【0013】
シリコンRoT環境内のROMが知らないうちに変更されるのを防ぐために、ROMデータを、ハッシュアルゴリズムを使用して導出されROMに記憶される予想ダイジェスト(または「ダイジェスト値」)に関連付けることができる。起動中に、ROMは、記憶されている予想ダイジェスト値が、現在のROMデータで同時に計算された別のダイジェスト値と一致するかどうかをチェックできる。この保護アプローチの潜在的な脆弱性は、攻撃者がROM整合性チェッカを同じデータビットセットを有する別のROMエントリに一時的にリダイレクトすることで、アドレスバス上の障害攻撃を隠蔽しようとし得ることである。
【0014】
第1に、ROMコントローラおよびROMアレイを有するROMの整合性を保護するために、ROMアレイに記憶されているROMデータを暗号化することができる。上述のように、ROMデータは、それぞれのROMアドレスをそれぞれのROMデータに結び付ける方法で暗号化することもできる。さらに、ROMコントローラは、アドレスを調整(例えば、キーまたは暗号に基づく置換および/または並べ替えアルゴリズムを使用するなどによるスクランブル)して、ROMアレイにアクセスするために使用される調整されたアドレスを生成することができる。このアドレス調整により、攻撃者がROM整合性チェック中にアドレスバスをリダイレクトしようとした場合に、変更されたROMが検出されない危険性をさらに軽減できる。
【0015】
リダイレクトベースの攻撃の危険性を少なくともさらに低減するために、本文書は、ROMアレイに記憶されるROMデータの重複インスタンスの量を低減するように暗号化アルゴリズムおよび/または暗号化キーを選択することについて説明する。暗号化アルゴリズムおよび/または暗号化キーを繰り返し変更し、その結果得られるROMエントリをチェックすることにより、重複するROMエントリを完全に回避または除外できる場合がある。これにより、ROM整合性チェッカの動作中に代替ROMエントリをターゲットとするリダイレクト攻撃の潜在的な効果が少なくとも制限され、排除され得る。したがって、ROMアレイは互いに固有のROMエントリを記憶でき、ROMコントローラはハッシュアルゴリズムを安全に適用して、ROMの現在のコンテンツを正確に反映するダイジェスト値を計算できる。
【0016】
ROMセキュリティのための装置および技術について、以下の図面を参照して説明する。図面全体を通じて、同様の特徴および構成要素を参照するために同じ番号が使用される。
【図面の簡単な説明】
【0017】
【
図1】ROMセキュリティを実装できるセキュリティ回路を含む集積回路(IC)を備えた例示的な装置を示す。
【
図2】ROMブロックなど、互換可能に実装することができる複数の例示的な周辺デバイスを含む、複数の回路構成要素を含む例示的なセキュリティ回路を示す。
【
図3-1】他の回路構成要素との互換性をサポートするための少なくとも1つのインターフェースを含む例示的な周辺デバイスを示す。
【
図3-2】互換性の目的が確実に満たされるように周辺デバイスの設計を分析するアプローチの例を示している。
【
図3-3】レジスタインターフェースおよび通信信号の例を含む周辺デバイスの例を示す。
【
図4】ROMアレイの暗号化されたROMデータへのアクセスに関して、ROMコントローラおよびROMアレイを含む例示的なROMを示す図である。
【
図5】ROMアレイの暗号化されたROMデータの整合性をチェックする状況における、ROMコントローラおよびROMアレイを含む例示的なROMを示す。
【
図6】暗号化されたROMデータを有するセキュリティ回路のROM周辺デバイスとして実装され得るROMの一例を示す。
【
図7】
図6のROMのROMアレイにアクセスするためのさまざまな信号を含む例示的なタイミング図を示す。
【
図8】復元性のあるROM整合性チェック手順の実装に従った方式例を示す。
【
図9】装置が起動時やリセット時などにROMの整合性をチェックする方法の例を示す。
【
図10】復元性のあるROM整合性チェック手順に従った例示的な方法を示す。
【
図11】復号を通じて暗号化されたROMデータにアクセスするためなど、ROM暗号化を実装する装置のための例示的な方法を示す。
【
図12】暗号化されたROMデータを含むROMアレイにアクセスするための例示的なプロセスを示す流れ図である。
【
図13】暗号化されたROMデータを含むROMアレイの整合性をチェックするための例示的なプロセスを示す流れ図である。
【
図14】1つまたは複数の記載された態様に従ってROMセキュリティを実装することができる例示的な電子デバイスのさまざまな構成要素を示す。
【発明を実施するための形態】
【0018】
詳細な説明
概要
電子デバイスは、通信、安全、および製造など現代社会に重要な貢献をしている。各電子デバイスは、何らかの機能を提供する処理能力を備えた集積回路(IC)に依拠している。これらの機能の多くは重要な性質を有しているため、電子デバイスは保護を提供するセキュリティ回路を備えたICを含み得る。セキュリティ回路は、情報が不用意に公開されたり、一部の機能が有害な方法や不正な方法で使用されたりする可能性を軽減する。セキュリティ回路はさまざまな形式で実現できるが、その1つに信頼のルート(RoT)パラダイムが含まれる。
【0019】
RoTシリコンでは、ハードウェアベースのメカニズムにより、情報への不適切なアクセスの防止、デバイスの不正使用の阻止などの観点から計算の安全性が保たれる。シリコンRoTの原則は、ハードウェアインフラストラクチャとその上で実行されるソフトウェアの両方が、意図した信頼できる状態に維持されるようにするのに役立ち得る。そのために、シリコンRoTは、承認された確認可能なコードを使用して、重要なシステム構成要素が安全に起動することを確認できる。したがって、サーバまたは別の電子デバイスが正しいファームウェアで起動し、ファームウェアが低レベルのマルウェアに感染していないことを保証できる。シリコンRoTは、追加または代替のセキュリティ上の利点を提供できる。例えば、暗号的に固有のマシンIDを提供できる。この固有のIDにより、オペレータは電子デバイスが正規のものであることを確認できる。さらに、暗号化キーやその他の情報を耐改ざん性のサイロに維持できるため、デバイスに物理的にアクセスできる者であっても情報を取得することができなくなり、少なくとも抑止される。ハードウェアに固定されたRoTサービスは、信頼できる改ざん防止監査記録やその他の実行時セキュリティサービスも提供できる。
【0020】
チップ設計者は、セキュリティ機能の提供に重点を置いた個々のICチップにシリコンRoT技術を組み込むことができる。あるいは、RoTシリコンを他の回路と統合することもでき、これには、中央処理装置(CPU)チップまたはパッケージ、グラフィックス処理装置(GPU)チップまたはカード、システムオンチップ(SoC)、メモリ記憶デバイスなどが含まれる。一般に、セキュリティ回路は、ほんの数例を挙げると、サーバのマザーボード、ネットワークカード、クライアントデバイス(例えば、ラップトップやスマートフォン)、消費者向けルータ、モノのインターネット(IoT)デバイス、固定およびポータブルの記憶装置で動作できる。RoTをシリコンに固定することにより、アプリケーションや電子デバイスに関係なく、ハードウェア、ファームウェア、およびソフトウェアのレベル全体で計算のセキュリティが強化される。シリコンRoTは、直接またはネットワーク経由で相互に通信するさまざまなデバイス間のセキュリティも強化する。本文書では、シリコンまたはハードウェアRoT環境を使用してセキュリティおよび回路設計の原則の一部を説明しているが、説明されている原則はセキュリティ回路全般に適用できるため、これは単なる例として行われている。
【0021】
今日の計算環境では、悪意のある者が、多数の攻撃ベクトルを使用して無数のレベルで電子デバイスを攻撃することができる。例えば、インターネット経由で送信されるマルウェアを使用して、ラップトップに記憶されているユーザが保護したい情報を取得しようとする攻撃が行われ得る。また、攻撃には、Wi-Fi(登録商標)ルータやIoTデバイスなどの電子デバイスの輸送中や人目につかない場所での動作中に、電子デバイスの起動に使用されるファームウェアにマルウェアが挿入され得る。別の例として、悪意のある者が電子デバイスを盗み、そのデバイスに対して直接物理的攻撃を実行するのに十分な時間がかかる場合がある。このような直接的な物理的攻撃には、ワイヤの切断、電圧の調査、レーザによる障害の挿入、傾向の観察や情報の推測のためのコードの繰り返し実行などが含まれ得る。
【0022】
したがって、セキュリティ回路は、電子デバイスに対する多種多様な攻撃に対抗するための多様な機能スイートを実装する責任を担うことができる。しかし、セキュリティ回路に対する既存のアプローチは、その場限りで設計されたハードウェアアーキテクチャを採用している。セキュリティ回路の異なる回路部分は、互いに相対的に分離して設計することもできる。その結果、さまざまなセキュリティ脅威に対抗するように設計された回路部分が意図したとおりに相互運用できなくなり、ハードウェアの安全性が低下し得る。さらに、構成要素間の通信が不十分であると、悪意のある者にとって新たな攻撃経路が生まれる。さらに、このその場のアプローチにより、セキュリティ回路の設計およびテスト段階がより困難で、より長く、よりコストがかかるものになる。これにより、セキュリティアーキテクチャの開発時に一部のセキュリティ脅威が無視されたり、不適切に対処されたりし得る。したがって、これらのその場のアーキテクチャでは、多種多様なセキュリティ脅威から電子デバイスを保護することがさらに困難になる。
【0023】
しかし、本文書は、電子デバイスに対するさまざまな形態の攻撃に対抗するための復元性のあるプログラム可能なセキュリティハードウェアを生成できる、適応可能で可撓性フレームワークまたはプラットフォームを提供するアプローチについて説明する。セキュリティ回路の一部の実装では、さまざまな種類の回路、またはさまざまなセキュリティ関連機能を提供する回路部分が、それにもかかわらず確実で一貫したシグナリングを生成する拡張プロトコルを使用して通信する。この通信プロトコルにより、さまざまなセキュリティ関連機能を提供する回路が、指定された設計フレームワークに従ってシームレスに相互作用できるようになる。
【0024】
設計フレームワークおよび通信プロトコルは、互いに別々に設計された回路構成要素であっても、安定した予測可能な相互作用とともに一貫して展開するのに適した「互換性のある」構成要素を生成する。例えば、通信および他の形態の相互作用(例えば、バス、インターフェース、またはメモリなどのリソースの共有)を少なくとも部分的に標準化して、予測可能性および相互運用性の尺度を提供することができる。本明細書で使用される場合、「互換性のある構成要素」には、構成要素が一緒に使用するのに適するように、共通のフレームワークに準拠するように設計された構成要素が含まれる。場合によっては、互換性により、集積回路チップの2つ以上のセキュリティ関連構成要素間である程度のプラグアンドプレイ機能が提供される。
【0025】
いくつかの実装では、セキュリティ回路は、「集中型」プロセッサおよび相互接続に加えて、複数の周辺デバイスを含む。複数の周辺デバイスのうちの各周辺デバイスは、セキュリティ回路の安全性または適切な機能に寄与する何らかの機能を実行する。したがって、各周辺デバイスは、コアのセキュリティ関連機能またはサポートするセキュリティ関連機能を提供できる。この機能は、データへのアクセスの制御や暗号化動作の実行など、電子デバイスの他の回路および/またはICによる安全な計算を可能にする機能の提供を含む、セキュリティ回路の全体的な目的をサポートする。予測可能性と相互運用性のために、各周辺デバイスは互換性のある構成要素として実現され得る。
【0026】
互換構成要素としておよび/または周辺デバイスとして実装できる回路構成要素の一例は、ROMブロックまたはモジュールである。ROMブロックには、ROMアレイとROMコントローラが含まれる。ROMアレイには、再起動または電源投入シナリオから電子デバイスを初期化するために使用される起動レベルの命令が含まれ得る。ROMブロックを保護するために、ROMアレイ内のデータを暗号化し、ROMコントローラでROMへのゲートアクセスを提供できる。
【0027】
さらに、ROMブロックは、暗号化を使用して、ROMアドレスと関連するROMデータとを結び付けることができる。ここでの「結ぶ」は「関連付ける」という意味でも使われる。特に、ROMブロックは、ROMデータの暗号化のためのアルゴリズムにおけるパラメータとしてROMアドレスを使用することによって、ROMアドレスをROMデータのROMデータに関連付けることができる。例えば、マスクROM(例えば、ワードラインとビットラインのグリッドを有するROM、通常、ワードラインはアドレス入力を提供し、ROMメモリはビットラインにデータを出力する)は、PRINCE暗号などの暗号を使用してスクランブルすることができる。それぞれのROMアドレスを使用して、関連するそれぞれのROMデータを複数の方法のいずれかでスクランブルし、アドレスとデータをリンクすることができる。例えば、それぞれのアドレスを使用して、それぞれのROMデータを復号できる。いくつかの実装では、スクランブル解除されたROMアドレスを使用して、キーストリーム値などの少なくとも1つのキーを生成し、これを対応するROMデータのバージョンに適用して、復号されたROMデータを生成する。PRINCEのようなブロック暗号は、例えば「カウンタ(CTR)モード」で使用できる。ROMエントリやROMラインなどの各ROMデータには、ROM(例えば、セキュリティ回路によって実行されるプロセスを定義するユーザデータまたはプログラム命令を符号化するROMビット、例えば、アルゴリズムを定義するROMビット)に対応するビットと、そのデータのROMビットのエラー訂正コード(ECC)値に対応するビットが含まれる。
【0028】
したがって、ROMのこの「暗号化」は、例えば、それぞれのROMデータの復号手順の一部としてそれぞれのROMアドレスを使用することによって、ROMアドレスとROMデータを結び付けるために使用することができる。このアドレスベースの暗号化アプローチにより、アドレスバスに対する障害攻撃がROMアレイの読み取りをリダイレクトするために簡単に使用され得ないようにすることができる。ROMアドレスとデータを暗号的にリンクすることにより、通常のROMアクセスをリダイレクトする攻撃(例えば、それにより攻撃者が起動コード内でフェッチされた命令をノー動作(NOP)に変えることでスキップできるようにする)を阻止できる。これにより、ROMデータを要求する「外部回路」(例えば、メインプロセッサ)による動作が保護される。
【0029】
ROMをスクランブルすることにより、記憶されたROMコードを変更してデバイスを偽証させようとする攻撃者にとってもより困難になる。例えば、攻撃者が元の暗号化されていないROMデータに1ビットの変更を加えたいと仮定する。この1ビットの変更により、通常は、整合性チェックが失敗する原因となる問題を回避しながら、命令を変更できる。一方、暗号化された(例えば、スクランブルされた)ROMデータの場合、攻撃者がスクランブルされたデータを変更しようとする場合、暗号化されたROMデータに対するそのような変更には、予想される19ビット(例えば、39ビットワードの約半分)かかり得る。したがって、マスクROMをスクランブルすると、マスクROMの編集に対する復元性が提供され、ROMマクロの境界での障害挿入攻撃がより困難になる。
【0030】
実装例では、セキュリティ回路のROMブロックのROMデータが暗号化される。暗号化は、ROMアドレスと関連するROMデータを結び付けるために使用される。ROMアドレスおよび/または関連するROMデータはスクランブルすることができる。場合によっては、ROMデータをスクランブル解除するためにROMアドレスが使用される。ROMデータは、対応するセキュリティ値(例えば、ECCビット)を使用して共同でスクランブルすることができる。このような場合、ROMラインごとのセキュリティ値を使用し、ROMラインとして一緒に記憶できる。ROMアドレスを使用してROMデータをスクランブル解除するには、ROMアドレスを使用して、関連するROMデータをスクランブル解除するキーを生成する。スクランブル解除されたROMアドレスは、ROMのエントリを読み取るために調整またはスクランブルされたROMアドレスに変換されて、ROMを変更し、デバイスが変更されたROMで起動するようにする攻撃者の取り組みをさらに複雑にし、挫折させることもできる。
【0031】
他の実装例では、ROMブロックは、ROMアレイと、ROMデータの整合性を確認するためのROMチェッカ回路を有するROMコントローラとを含む。攻撃者は、ROMアレイ(例えば、マスクROM)に変更を加えた後、起動時にROMチェッカとROMアレイ間の通信を障害または制御することによって、そのような変更を隠蔽しようとし得る。例えば、攻撃者は、ROMチェッカ回路とROMアレイの間のデータバスを操作して、ROMデータへの変更を隠蔽しようとし得る。同様に、攻撃者はアドレスバスの下位ビットの制御を試み、それにより、変更されたワードをスキップして未変更のコピーを指し示すようにROMアクセスをリダイレクトすることでROMチェックを破壊し得る。
【0032】
これらの潜在的な攻撃は、ROMを固定キーでスクランブルし、整合性チェックのためにスクランブルされたデータに対してハッシュを実行することによって、少なくとも部分的に阻止することができる。したがって、データバスに対する攻撃は、スクランブル方式の拡散特性によってさらに困難になる。例えば、スクランブル解除されたデータに1ビット変更を加えるには、攻撃者はROMアレイ内の多くのビットを変更し、次いで、データバス上のそれらの同じビットを制御して変更を隠す必要がある。また、アドレスバスに対する攻撃は、スクランブルがデータスクランブル方式にアドレスを組み込む方法によって打ち破ることができる。
【0033】
追加の実装例では、ROMデータは暗号化され、ROM整合性チェッカは暗号化されたROMデータに対して動作する。ROM整合性チェッカ回路は、各起動時またはリセット時にROMデータが変更されていないことを確認できる。ROM整合性チェッカ回路はラインごとに動作できる。例えば、整合性チェッカ回路は、ダイジェスト値を計算するためにROMデータがまだ暗号化されている間に、ハッシュアルゴリズムをROMの各ラインに適用させることができる。以下に説明するように、暗号化されたROMデータがハッシュアルゴリズムを実行する回路に供給された後、ROMから取得できる予想ダイジェスト値を計算されたダイジェスト値と比較できる。整合性チェッカ回路は、ダイジェスト値が一致しない場合にアラームを生成する。
【0034】
ROMブロックまたはモジュールは、ROMアレイおよびROMコントローラを含むことができる。一般に、マスクROMなどのROMアレイのコンテンツは、セキュリティ戦略のスイートの一部としてスクランブルできる。起動時に、ROMコントローラはROMアレイから読み取り、抽出されたスクランブルされたコンテンツを、ハッシュアルゴリズムを適用できるダイジェスト計算回路など、少なくとも1つのダイジェストチェックモジュールに送信する。このダイジェスト計算回路は、安全なハッシュアルゴリズム3(SHA-3)などのハッシュアルゴリズムを使用してコンテンツのダイジェストを計算する。ダイジェストは、cSHAKEなどのカスタマイズ可能な任意のメッセージ長バージョンのSHA3を使用して計算することもでき、これにより、特定のアプリケーションに対してハッシュ関数を固有にするために、回路がROMチェッカ固有の関数文字列をROMデータにプレフィックスすることができる。ROMデータラインはダイジェスト計算回路のブロックサイズと整列していない可能性があり、その場合にはラインをブロック長に合わせて(例えばゼロで)パディングすることができる。ROMコントローラは、ダイジェスト計算回路から取得したダイジェストを予想ダイジェストと比較して、ROMアレイへのアクセスを制御できる。ROMアレイは、予想ダイジェストを1つまたは複数のROMアドレスの場所に記憶できる。ROMコントローラは、計算されたダイジェスト値をホストプロセッサなどのROMの外部の回路に提供することもできる。ROMコントローラは、例えば、他の構成要素がアクセスできるROMのインターフェースレジスタを介して、計算されたダイジェスト値を公開し得る。これにより、1つまたは複数の他の構成要素がROMデータが改ざんされていないことを確認できるようになる。
【0035】
実装例では、固定スクランブルキーを選択して、少なくともほとんどの、場合によってはすべてのROMラインが互いに別個であるか異なることを保証することができる。これは、アドレスバスに対する障害攻撃では、ダイジェスト計算回路と通信するROMコントローラを、同じROM命令を記憶する別のラインに一時的にリダイレクトすることによって変更を隠すことができないことを意味する。
【0036】
さらに、スクランブルされたデータをハッシュすることは、スクランブル解除されたデータをハッシュするよりも耐障害性が高い。スクランブル解除されたROMデータに小さな変更を加えようとする攻撃者は、スクランブルされたROMデータに比較的大きな変更を加えなければならない。ハッシュはスクランブルされたデータに対して計算されるため、攻撃者は変更を隠すために障害を起こすか、多くのビットを制御する必要がある。したがって、ROMデータの暗号化と暗号化キーの選択を組み合わせると、ROMデータ自体とアドレスバスに対する攻撃が成功する可能性が大幅に低くなる。
【0037】
他の実装例では、ROMの複数のラインに対して少なくとも1つのダイジェストを生成することに関連して、プロセスは、ROMに記憶される重複した命令ラインを減らす暗号化アルゴリズムおよび/または暗号化キーを選択することが必要になり得る。さらに、重複して記憶された命令ラインを排除する暗号化アルゴリズムおよび/または暗号化キーを選択することができる。したがって、スクランブルアルゴリズムおよび/またはスクランブルキーは、ROMデータのコンテンツに基づいて選択され、ROMアレイに記憶される結果として得られる暗号化ビットの変動性を最大化しないにしても、少なくとも増加させることができる。この変動性(例えば、固有性)により、攻撃者が1つのROMエントリから整合性チェッカをリダイレクトすることが、不可能ではないにしても困難になり、これは、同じワードを有する別のROMエントリに対してチェックされることになっている。これは、同じ記憶ROM値を有するエントリはたとえあったとしてもほとんどないためである。これらの技術を使用すると、ROMのスクランブルされたデータにハッシュアルゴリズムを適用できる。換言すれば、記憶されたROMデータの少なくとも1つのダイジェストは、ROMデータをスクランブル解除されたラインの代わりにスクランブルされたラインを使用して計算され、ハッシュアルゴリズムが動作する値の変動性を高めることができる。
【0038】
これらの方法で、セキュリティ回路をシリコンRoTチップおよび/またはSoCに組み込むことができる。このようなセキュリティ回路には、ROMブロックを含む複数の周辺デバイスが含まれる。ROMセキュリティのいくつかの態様は、セキュリティ回路環境および/または互換性のある設計のコンテキストで説明されているが、開示されたROMセキュリティ概念は、他の回路環境および他の設計パラダイムにも適用可能である。
【0039】
本文書では、まず、
図1と2を参照してセキュリティ環境の例を説明する。次に、周辺デバイスインターフェースと設計コード分析の例について、
図3-1から3-3を参照して説明する。次に、本文書では、
図4から13を参照して、ROMセキュリティの態様と実装について説明する。電子デバイスの例について、
図14を参照して説明する。本明細書で説明される環境、態様、および実装のそれぞれは、個別に使用することも、任意の組み合わせで使用することもできる。
【0040】
したがって、さまざまな詳細レベルでの実装例について、関連する図を参照して以下に説明する。以下の説明では、最初に動作環境の例を示し、次にハードウェアの例、方式、および技術について説明する。例示的な方法は、その後、フローチャートまたは図を参照して説明される。最後に、計算デバイスの例について説明する。
【0041】
ROMセキュリティの動作環境例
図1は、セキュリティ回路106を含む集積回路104(IC104)を有する例示的な装置102を全体的に100で示す。装置102、集積回路104、および/またはセキュリティ回路106は、本明細書で説明されるようにROMセキュリティを実装することができる。この例では、装置102はスマートフォンとして示されている。しかし、装置102は、任意の適切な計算または電子デバイスとして実装されてもよい。
【0042】
装置102の例には、モバイル電子デバイスまたはモバイルデバイス、モバイル通信デバイス、モデム、セルラーまたは携帯電話、移動局、ゲームデバイス、ナビゲーションデバイス、メディアまたは娯楽デバイス(例えば、メディアストリーマやゲームコントローラ)、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートアプライアンス、車両ベースの電子システム、ウェアラブル計算デバイス(例えば、衣類、時計、または現実改変メガネ)、モノのインターネット(IoT)デバイス、センサ、在庫管理デバイス、機械の電子部分または機器の電子部品(例えば、車両やロボット)、メモリ記憶デバイス(例えば、ソリッドステートドライブ(SSD))、サーバコンピュータまたはその一部(例えば、サーバブレードまたはラック、またはデータセンタの別の部分)などが含まれる。装置102の図示された例は、タブレットデバイス102-1、スマートテレビ102-2、デスクトップコンピュータ102-3、サーバコンピュータ102-4、スマートウォッチ102-5、スマートフォン(または文書リーダ)102-6、およびインテリジェントメガネ102-7が含まれる。
【0043】
実装例では、装置102は、少なくとも1つの集積回路104を含む。集積回路104は、モジュール、カード、またはプリント回路基板(PCB)(図示せず)に取り付けることができる。PCBの例としては、可撓性PCB、リジッドPCB、単層または多層PCB、表面取り付けまたはスルーホールPCB、それらの組み合わせなどが挙げられる。各集積回路104は、汎用プロセッサ、システムオンチップ(SoC)、セキュリティ指向IC(例えば、RoT ICチップ)、メモリチップ、通信IC(例えば、モデムや無線周波数IC)、グラフィックプロセッサ、人工知能(AI)アクセラレータ、それらの組み合わせなどとして実現することができる。集積回路104は、単独で、または他のICチップと一緒にパッケージ化することができる。
【0044】
示されるように、集積回路104はセキュリティ回路106を含む。セキュリティ回路106は、複数の回路構成要素108-1…108-C(Cは正の整数を表す)および相互接続110を含むさまざまな部品を含むことができる。回路構成要素108の例には、相互接続110に加えて、プロセッサおよび複数の周辺デバイスが含まれる。これらは
図2に示されており、以下で説明される。
図1には明示的に示されていないが、集積回路104は、セキュリティ回路106以外の他の部分を含んでもよい。複数の回路構成要素108-1…108-Cおよび相互接続110は、図示のように単一のIC上に一体的に集積されてもよいが、あるいは、構成要素は2つ以上のICにわたって分散されてもよい。セキュリティ回路106は、例えば、保護されたエンクレーブ、信頼できるチッププラットフォーム、ハードウェアベースの信頼のルート(RoT)チップ(例えば、シリコンRoT)などとして実現することができる。セキュリティ回路106が電子デバイスにどのようにまたはどこに組み込まれるかに関係なく、セキュリティ回路106は多くの異なるタイプの攻撃に対抗することができる。
【0045】
動作例では、攻撃、または潜在的な攻撃、または異常な発生が検出されると、何らかの構成要素によってアラート112または割り込み114が生成される。例えば、回路構成要素108は、アラート112を生成することができ、後述するアラートハンドラにアラート112を送信することができる。追加的にまたは代替的に、別の回路構成要素108は、プロセッサによる処理のために割り込み114を生成することができる。アラート112、割り込み114、および他の信号は、セキュリティ回路106のプロセッサおよび/または周辺デバイスの間の相互作用のための共通のフレームワークに従って、2つ以上の構成要素108の間で通信される。共通フレームワークでは、各周辺デバイスのインターフェースとシグナリングを指定して、複数の周辺デバイスにわたる相互運用性と一貫した通信プロトコルの使用を促進できる。したがって、互換性のいくつかの態様はセキュリティ回路に関して示されているが、周辺デバイスの互換性は他のタイプの回路にも採用することができる。例示的なフレームワーク、ならびに例示的な通信インターフェースおよびインターフェース仕様については、
図3-1から3-3を参照して以下に説明する。
【0046】
いくつかの実装では、回路構成要素108は、ROM118またはROMブロック118として実現される。ROM118は、周辺デバイス、互換性のある構成要素、それらの組み合わせなどとしてセキュリティ回路106に組み込むことができる。例えば、セキュリティ回路106は、セキュリティ回路106またはIC104を初期化するための再起動の一部としてROM118にアクセスすることができる。ROM118は、起動動作以外の、または起動動作の代わりに、他の目的でアクセスすることができる。このROMアクセス116は、ROMデータの整合性チェックと関連して本明細書で説明されるセキュリティパラダイムの一部として、ROM118によってゲートすることができる。ROMアクセス116は、ROMデータを、ROM118のROMデータにアクセスするために使用されるROMアドレスに結び付けることによって保護することもできる。ROMセキュリティのこれらおよびその他の態様については、
図4から13を参照して以下に説明する。しかし、
図2を参照して、セキュリティ回路106のアーキテクチャ例を次に説明する。
【0047】
図2は、互換可能に実装することができる複数の例示的な周辺デバイス250を含む、複数の回路構成要素を含む例示的なセキュリティ回路106を示す。図示されるように、セキュリティ回路106は、相互接続110に結合されたプロセッサ202を含む。相互接続110は、例えば、バス、スイッチングファブリック、またはさまざまな回路構成要素の通信を可能にするバスネットワークを使用して実現することができる。複数の回路構成要素108-1…108-C(
図1の)は、相互接続110および/またはプロセッサ202に加えて、複数のメモリおよび複数の周辺デバイスを含むことができる。プロセッサ202、複数のメモリ、および複数の他の周辺デバイス250のそれぞれは、相互接続110に直接的または間接的に結合される。本明細書で説明されるように、ROM118(例えば、
図1および
図4以降の)は、
図2のROM206に対応し得る。
【0048】
実装例では、複数のメモリは、読み取り専用メモリ206(ROM206)、スタティックランダムアクセスメモリ208(SRAM208)、およびフラッシュメモリ210を含むことができる。複数の周辺デバイス250は、アラートハンドラ204、高度暗号化標準(AES)エンジン212(AESエンジン212)、ハッシュベースのメッセージ認証コード(HMAC)エンジン214(HMACエンジン214)、シリアル周辺インターフェース(SPI)デバイス230(SPIデバイス230)、およびフラッシュコントローラ216を含み得る。複数の周辺デバイス250はまた、汎用非同期受信機/送信機(UART)装置218(UART装置218)、汎用入出力(GPIO)インターフェース220(GPIOインターフェース220)、ピンマルチプレクサ222(ピンマルチプレクサ222)、およびパッドコントローラ224を含み得る。複数の周辺デバイス250は、乱数発生器232(RNG232)およびタイマ234をさらに含むことができる。さらに、周辺デバイス250は、
図2に示すように、任意のメモリを含むことができる。メモリおよび他の周辺デバイス250の特定の例が
図2に示されているか、または本明細書で説明されているが、セキュリティ回路106の特定の実装には、プロセッサ、コントローラ、メモリ、モジュール、または周辺デバイス(それらの複製を含む)のより多くの、より少ない、および/または異なるインスタンスが含まれてもよい。
【0049】
図示された回路構成要素は、1つまたは複数のクロック信号に基づいて同期して動作することができる。
図2には示されていないが、セキュリティ回路106は、クロック信号を生成するための少なくとも1つのクロック発生器を含んでもよく、あるいは、1つまたは複数の個々の構成要素を互いに独立して、複数の構成要素を一緒に、またはICチップ全体をリセットするためのリセット回路を含んでもよい。あるいは、セキュリティ回路106は、セキュリティ回路106の外部のソースから少なくとも1つのクロック信号またはリセット信号を受信してもよく、そのソースは別個のチップ上にあってもなくてもよい。1つまたは複数の別個の周辺デバイス250は、それぞれの個別のクロックドメインで動作することができる。例えば、入出力(I/O)周辺デバイスは、それぞれのI/Oデバイスまたはチャネルにローカルなクロックに同期することができる。異なるクロックドメイン内の周辺デバイスは、互いに非同期に動作または通信することできる。
【0050】
図示された構成要素の実装例を以下に説明する。プロセッサ202は、セキュリティ回路106の「メイン」プロセッサ、「中央」プロセッサ、または「コア」プロセッサとして実現され得る。プロセッサ202は、ほんの一例として、多段パイプラインを備えた32ビットのインオーダー縮小命令セット計算(RISC)コアで実装され得る。例えば、RISC-V命令セットを使用すると、プロセッサはM(マシン)モードとU(ユーザ)モードを実装できる。リセットピン(図示せず)を(例えば、アクティブローのリセットピンのアサート解除を通じて)アクティブ化すると、プロセッサ202はリセットを終了し、そのリセットベクトルでコードの実行を開始する。リセットベクトルはROM206内で開始することができ、埋め込みフラッシュ(eフラッシュ)にジャンプする前に埋め込みフラッシュ(eフラッシュ)内のコードを確認する。言い換えれば、コードはリセットが解除される前にeフラッシュにインスタンス化されていると予想される。場合によっては、セキュリティ回路106全体のリセットは、さまざまな回路構成要素間の相互運用性をサポートするために、互換性仕様に従って非同期アクティブローにすることができる。リセットは、セキュリティ対策としてアラートハンドラ204によって、ウォッチドッグタイマなどにより生成されてもよい。リセット信号は、メモリのうちの1つまたは他の周辺デバイス250のうちの1つなど、他の回路構成要素に送信されてもよい。
【0051】
プロセッサ202には、デバッグモジュール226(DM226)および割り込みコントローラ228(ItC228)が結合されており、それらのいずれも互換可能にすることができる。デバッグモジュール226は、プロセッサ202にデバッグアクセスを提供する。ICの特定のピンとインターフェースすることによって、デバッグモジュール226の論理は、プロセッサ202がデバッグモードに入ることができ、デバイス(例えば、命令をエミュレートすることによって)またはメモリにコードを挿入する機能を提供する。割り込みコントローラ228は、プロセッサ202の近くに配置され得る。割り込みコントローラ228は、セキュリティ回路106内から割り込みソースのベクトルを受け入れることができる。割り込みコントローラ228は、割り込みをプロセッサ202の処理に転送する前に、割り込みに平準化および優先順位を割り当てることもできる。
【0052】
プロセッサ202は、任意の所望のレベルの性能を提供することができ、または任意の内部回路構成要素を含むことができる。例えば、プロセッサ202は、少なくとも1つの算術論理演算装置(ALU)(例えば、成立した条件付き分岐におけるレイテンシのサイクルを除去するために分岐ターゲットを計算する「追加の」ALUを含む)および複数のパイプライン段階を含むことができる。複数のパイプライン段階を使用すると、パイプラインはレジスタライトバックを実行して、ロードとストアによるレイテンシのサイクルを削減し、ロードまたはストアへの応答が要求後のサイクルで利用可能になるパイプラインストールを防ぐことができる。プロセッサ202は、単一サイクル乗算器を実装するか、ストアへのエラー応答で不正確な例外を生成することができ、これにより、プロセッサは応答を待たずにストアを過ぎても実行を続けることができる。図示されていないが、特にプロセッサ202、または一般にセキュリティ回路106は、命令に単一サイクルのアクセス時間を提供する命令キャッシュを含むことができる。
【0053】
図示の例では、セキュリティ回路106は、命令およびデータ用の3つのメモリアドレス空間を含む。ROM206は、リセット解除後のプロセッサ202のターゲットとなる。ROM206は、コードの次の段階をチェックする前にプラットフォームチェックのサブセットを実行するためのハードコードされた命令を含む。コードの次の段階(例えば、e-フラッシュメモリに記憶される起動ローダ)は、デバイスのシリコンにハードコーディングされていない最初のコード部分になり得る。したがって、コードのこの次の段階では、セキュリティを強化するために整合性について署名チェックが行われる。ROM206は、起動ローダの完全なコンテンツに対して、リベスト・シャミル・エイドルマン(RSA)チェックアルゴリズムまたは楕円曲線デジタル署名アルゴリズム(ECDSA)などの多くのアルゴリズムのいずれかを実装することによって、この署名チェックを実行することができる。
【0054】
フラッシュメモリ210は、コード記憶用の組み込みフラッシュ(e-フラッシュ)メモリとして実装することができる。このe-フラッシュには、上記の起動ローダのほか、オペレーティングシステムとその上にある層のアプリケーションを収容できる。SPIデバイス230は、e-フラッシュメモリをバルクロードするために使用することができる。デバッグモジュール226は、コードのロードにも使用され得る。SRAM208は、プロセッサ202によるデータ記憶(例えば、スタックおよびヒープ情報)に利用可能なスクラッチパッドSRAMとして動作することができる。SRAM208はコードを記憶することもできる。
【0055】
セキュリティ回路106は、「周辺機器」または「周辺デバイス」のスイートを含むことができる。これらの周辺デバイス250は、相互接続110を介してプロセッサ202に結合される従属実行装置であってもよい。これらの周辺デバイス250のそれぞれは、相互およびプロセッサ202との互換性を保証するインターフェースフレームワークに従うことができる。互換性方式は、プロセッサ202が特定の周辺デバイスとどのように通信する(例えば、相互接続110を使用して)か、周辺デバイスがどのようにチップI/Oと通信するか(例えば、固定または多重化可能なI/Oを介して)、周辺デバイスがどのようにプロセッサ202と通信するか(例えば、割り込みを使用して)、周辺デバイスがどのようにセキュリティイベントを(例えば、アラート指示を使用して)アラートハンドラ204のような他の回路構成要素に通信するか、周辺デバイスが他の周辺デバイスとどのように通信するか(例えば、少なくとも1つのレジスタを介して、同期的または非同期的に)、またはそれらの組み合わせかを指定することができる。図示の周辺デバイス250は、アラートハンドラ204によって提供されるアラート関連機能に関連する、プロセッサ202に関連する、1つまたは複数のメモリに関連する、チップI/Oなどに関連する周辺デバイスを含むことができる。したがって、メモリは、互いに関連する、または他の図示された回路構成要素に関連する周辺デバイス250を備えることもできる。
【0056】
回路またはチップI/O周辺デバイスには、ピンマルチプレクサ222およびパッドコントローラ224が含まれる。ピンマルチプレクサ222は、周辺デバイス250の少なくとも一部とセキュリティ回路106の利用可能な多重化可能なI/Oノードとの間のシグナリングルートを提供する(例えば、さまざまな構成要素が統合されているチップのピン、またはSoCの他の部分へのインターフェース)。パッドコントローラ224は、各回路(例えば、チップ)の外部I/Oの駆動強度、技術、プルアップ対プルダウンなどの制御またはパッド属性を管理する。ピンマルチプレクサ222およびパッドコントローラ224は、それ自体、相互接続110上の周辺デバイスである。したがって、それぞれは、ソフトウェア構成可能性を提供する少なくとも1つのレジスタの集合を有するか、または関連付けることができる。
【0057】
UART装置218は、単一レーン二重UART機能などのUART機能を実装することができる。その出力と入力は、ピンマルチプレクサ222を介して任意の回路I/Oに接続するように構成できる。GPIOインターフェース220は、ピンマルチプレクサ222を介して外部回路へのGビットの双方向通信を作成する。ここで、Gは、16、32、または64のような正の整数である。メモリI/Oに関しては、SPIデバイス230はファームウェアモードを実装することができる。ここで、ファームウェアモードは、外部ドライバがフィールド内ファームウェア更新のためにファームウェアアップグレードコードをフラッシュメモリ210のバンクに送信する能力を提供する機能を有効にすることができる。ファームウェアモードには、SPIトランザクションを使用したメモリのアドレス指定を含めることができる。図示されていないが、セキュリティ回路106は、I2Cデバイスのコマンドを可能にするために、集積回路間(I2C)ホストを含むことができる。I2Cデバイスのこのコマンドには、標準モード、フルモード、および高速モードが含まれ得る。
【0058】
暗号化エンジンおよびアラートハンドラ204を含む、いくつかの「コアセキュリティ」周辺デバイスも示されている。AESエンジン212は、1つまたは複数のプロトコルおよび128b、192b、または256bなどのさまざまなキーサイズを使用して、対称暗号化および復号を提供することができる。この構成要素は、例えば16バイト単位で到着するデータの暗号化または復号を選択し、異なるブロック暗号化動作モードを使用して暗号化または復号することができる。AESエンジン212は、電子コードブック(ECB)モード、暗号ブロック連鎖(CBC)モード、暗号フィードバック(CFB)モード、出力フィードバック(OFB)モード、カウンタ(CTR)モードなどをサポートすることができる。データ転送はプロセッサで利用可能にすることができる。例えば、キーとデータ素材をレジスタ書き込みを介して暗号エンジンに渡すことができる。あるいは、潜在的に信頼できないプロセッサのアクティビティにさらされるのを軽減するために、キーとデータ素材を転送するためのプライベートチャネルを含めることもできる。
【0059】
HMACエンジン214は、例えば、安全なハッシュアルゴリズム(SHA)SHA-256をハッシュアルゴリズムとして利用することができる。SHA-256は、ハッシュアルゴリズムのSHA-2ファミリのメンバーであり、ハッシュされる入力のデータサイズに関係なく、ダイジェスト(またはハッシュ出力)の長さは256bである。データは、ハッシュ要求の開始を宣言した後、HMAC周辺デバイスに送信される。これにより、内部状態が初期状態(例えば、一度に32b)にゼロになる。構成要素クライアントによってデータが送信されると、クライアントはハッシュ要求の完了を示すことができる(任意の部分ワード最終書き込みを使用)。移植性インターフェース方式の一例によれば、HMACエンジン214はハッシュ結果を生成し、それを要求側クライアントによるレジスタ読み取りに利用できるようにする。データ転送は、プロセッサが利用できるようにすることも、潜在的に信頼できないプロセッサのアクティビティにさらされるのを減らすためにプライベートにすることもできる。
【0060】
HMACは、ハッシュ関数(例えば、SHA-256)の上に階層化されたメッセージ認証プロトコルであり、HMACは、暗号化の目的で機密キーを混合する。HMACは、メッセージのハッシュ(SHA-256経由)の周りに機密キーを所定の方法(2回など)で追加する特定のアプリケーションである。この機能を提供するには、メッセージハッシュが開始される前に256bキーを回路構成要素にプログラムすることができる。認証完了のタイミングは変動し得、ネイティブSHA-256を使用する場合よりもレイテンシが長くなり得る。ここでもまた、ハッシュ情報または機密キーは、利便性または処理効率のためにプロセッサで利用可能にすることができ、あるいはセキュリティを高めるために何らかの方法で非公開にすることもできる。
【0061】
アラートハンドラ204は、他の周辺デバイス250から提供されるアラートを含むアラートを処理し、アラートに応答する役割を担う。アラートは、認識されたセキュリティの脅威に対応するために適時に処理されるセキュリティに敏感な割り込みと考えることができる。「標準」割り込みとは異なり、アラートはプロセッサ202上で実行されるソフトウェアのみによって処理されるわけではない。アラートは、ソフトウェアによって「通常の」割り込みとして処理される第1の段階の要求をトリガできる。しかし、ソフトウェアがアラートによってトリガされた割り込みに応答して適切に修復できない場合、アラートハンドラ204は第2の段階の応答をトリガする。第2の段階の応答には、プロセスの終了、データの消去またはその他の削除、回路部分からの電力の供給、またはICチップまたはその一部のリセットなどのセキュリティ対策を講じることが含まれ得る。これにより、プロセッサ202がビジー状態であっても、妨害を受けていても、あるいは攻撃を受けていても、根底にある問題、つまり認識されているセキュリティ脅威が確実に対処される。
【0062】
したがって、アラート112(例えば、
図1)は、アラートハンドラ204が他の周辺デバイスから受信し、潜在的なセキュリティ脅威を示す高位割り込みタイプの信号またはアラート指示として実装することができる。動作中、アラートハンドラ204は、セキュリティ回路106の他の回路構成要素108からアラートを収集し、それらをプロセッサ202が対処できる割り込みに変換することができる。しかし、プロセッサ202が割り込みをクリアしない場合、アラートハンドラ204は、潜在的なセキュリティ脅威に対処するためにハードウェア応答を提供する。
【0063】
一部のデバイス間通信では、アラートハンドラ204は、周辺デバイスソースから差分信号で通知された同期または非同期アラート指示を受信する。周辺デバイス250は、周辺デバイス250の機能、知識、または感知されたパラメータに基づいてアラートを生成することができる。他のデバイス間通信の場合、アラートハンドラ204は、堅牢なハートビートメカニズムとしてアラートソースのpingテストを実行する。アラートハンドラ204のpingモニタ(明示的には示されていない)は、アラートソースとの通信チャネルが機能していることを保証するために、各アラートソースからの定期的なアラート応答を要求する。
【0064】
アラートハンドラ204は、通信障害に基づいて、ローカルに供給されるハードウェアアラートを生成することもできる。第1のローカルソースアラートは、アラートソースまたはエスカレーションハンドラとの差分シグナリングまたは別の所定の通信プロトコルが失敗した場合(例えば、信号整合性チェックが失敗した場合)に生成される。アラートハンドラ204は、アラートソースまたはエスカレーションハンドラがping要求に応答しなかった場合に、そのような第2のアラートを生成する。一般に、アラートハンドラ204は、システム全体から着信アラートを受信し、アラートを分類し、分類されたアラートに基づいて割り込みを発行し、プロセッサ202が発行された割り込みをクリアしない場合、割り込みをハードウェアベースの応答にエスカレートすることができる。したがって、プロセッサがセキュリティアラートを処理できない、または処理しない場合、アラートハンドラ204は、例えばセキュリティ応答の代役として機能することができる。
【0065】
一部のアーキテクチャでは、セキュリティアラートは、少なくとも「標準」割り込みと比較して、まれなイベントであることを意図している。したがって、設計段階では、起こり得るイベントは、そのイベントが頻繁に発生しないと予想される範囲で、そのイベントがセキュリティに潜在的な影響を与える場合に、アラートイベントとして指定され得る。このようなイベントの例としては、パリティエラー(攻撃を示し得る)、暗号またはセキュリティ関連構成要素に対する不正なアクション、環境の変更を示す物理センサからの感知された値(電圧や温度など)などが挙げられる。システムは、アラートハンドラ204を介してアラートをルーティングし、プロセッサ202が潜在的に対処するためにアラートを割り込みに変換する。一部の実装では、安全なオペレーティングシステムには、アラートによって発生するこのような割り込みをソフトウェアで処理するためのプロトコルが備わっていることが根底に予想されている。そうである場合、安全なオペレーティングシステムは通常、割り込みを解決し、その後、アラートハンドラ204を使用して割り込みをクリアすることができる。各周辺デバイス250は、対処すべきそれぞれの潜在的な脅威を表す個別のアラートのリストを提示することができる。周辺デバイスは、特定の符号化メカニズムを使用して、アラートをアラート指示としてアラートハンドラ204に送信することができる。
【0066】
セキュリティ回路106は、RNG232を含むこともできる。一般に、ランダム性は、攻撃者が攻撃を開始する適切なタイミングを予測できないように実行のバリエーションを提供することで、セキュリティ機能に貢献し得る。例えば、乱数は、IDや暗号化の目的で使用される機密資料を提供し得る。RNG232をアルゴリズム計算にシードして、機密データ値を曖昧にすることができる。一般に、RNG232は、その番号生成がますます真にランダムになり、攻撃に対しても強化できる範囲でより優れた性能を提供する。RNG232は、「真の」RNG(TRNG)として実装することができ、これには、非決定的な何らかの物理的イベントまたはプロセスを利用するためのアナログ部分を有する設計が含まれ得る。TRNG設計の例は、準安定性、電子ノイズ、タイミング変動、熱ノイズ、量子変動などに依拠している。TRNGは、結果の変数をフィルタリングし、次いで、デバイスが現在のランダム化関数のために特定の時間にサンプリングできるエントロピーのプールにそれらを送信する。場合によっては、エントロピープールへのインターフェースに、利用可能なランダムビットの読み取り要求が含まれ得る。TRNGインターフェースは、使用可能なビット数を示し、要求元の周辺デバイスまたはソフトウェアは、使用可能なビットの範囲までこのプールから読み取ることができる。利用できないエントロピービットを読み取ろうとすると、割り込みまたはアラートがトリガされ得る。
【0067】
他の2つの周辺デバイス250には、タイマ234およびフラッシュコントローラ216が含まれ、後者については次の段落で説明する。タイマ234は、例えば、プロセッサ202による正確な性能をサポートすることができる。タイマ234は、複数のビット(例えば、64ビット)から形成され、あるパーセンテージ以内に保証された周波数を有する自走タイマとして動作する。別のタイマ(明示的に示されていない)は、プロセッサが応答しなくなった場合にプロセッサ202をバックストップするウォッチドッグタイマとして機能することができる。応答しないのは、開発コードの妨害、セキュリティ攻撃などが原因であり得る。
【0068】
フラッシュコントローラ216は、コードおよびデータの記憶に利用可能なフラッシュメモリ210を制御する。このデータの主な1次読み取りパスは、標準メモリアドレス空間にあり得る。しかし、フラッシュは標準的な方法で書き込まれないため、そのアドレス空間への書き込みは無視できる。代わりに、フラッシュメモリ210に書き込むために、ソフトウェアはフラッシュコントローラ216と相互作用する。フラッシュ機能には、読み取り、消去、およびプログラムという3つの1次コマンドを含めることができる。読み取りコマンドは標準化でき、チップメモリのアドレス空間を使用できる。消去コマンドはページレベルで実行され、ページサイズはフラッシュコントローラ216によってパラメータ化可能である。消去要求を受信すると、フラッシュコントローラ216はターゲットページのコンテンツをワイプし、データを「1」状態(例えば、ワード当たり0xFFFFFFFF)にする。その後、ソフトウェアは個々のワードを任意の値にプログラムできる。フラッシュビットは再度消去しないと「1」状態に戻らないため、将来のコンテンツは現在のコンテンツと書き込まれた値のANDによって事実上変更される。消去およびプログラムコマンドは比較的遅い。一般的な消去時間はミリ秒単位で測定され、プログラム時間はマイクロ秒の範囲にある。機密データがフラッシュメモリ210に記憶され得るため、セキュリティも懸念される。したがって、フラッシュコントローラ216によってある程度のメモリ保護を提供することができる。
【0069】
セキュリティ回路106は、特定の回路構成要素のセットとともに
図2に示されている。しかし、特定のセキュリティ回路106は、より多くの、より少ない、または異なる回路構成要素を有することができる。回路構成要素はまた、異なる方法で相互接続されたり、上述の例示的な方法以外の方法で動作したりすることもできる。さらに、一部の回路構成要素は省略され、一方、他の回路構成要素は複数のインスタンスで実装され得る。例えば、アラートハンドラ204は複製または分散されてもよく、あるいは複数のAES暗号化エンジン212がいくつかのセキュリティ回路106内に存在してもよい。さらに、セキュリティ回路106が数十個のコアのうちの1つだけを形成するICチップについては、セキュリティ回路106の周辺デバイス250の中からGPIOインターフェース220を省略することもできる。
【0070】
安全なROM周辺デバイスの互換性のあるパラダイムの方式、技術、ハードウェア例
セキュリティ回路106(例えば、
図1および
図2の)は、ROM206または118などの周辺デバイス250を含む、互換性のある回路構成要素を含むことができる。このセクションでは、周辺デバイスを互換性のあるものにするためのアプローチ例について説明する。各周辺デバイス250は、セキュリティ回路106の互換性仕様に準拠することができる。少なくとも1つのインターフェース方式または通信プロトコルを定義する互換性仕様に準拠することによって、周辺デバイス250は、周辺デバイス250と他の周辺デバイスとの間に一貫した予想される相互作用を生み出す少なくとも1つのインターフェースを備えて実現される。これにより、通信の予測可能性と確実性が向上し、セキュリティ回路の設計とテストにかかる時間が短縮される。
【0071】
図3-1は、他の回路構成要素との互換性をサポートするための少なくとも1つのインターフェース302を含む例示的な周辺デバイス250を300-1で示している。より一般的には、
図3-1は、相互接続110、相互接続110に結合されたプロセッサ202、および相互接続110に結合された複数の周辺デバイスを含む。したがって、複数の周辺デバイスは少なくとも相互接続110を介してプロセッサ202に結合することができる。しかし、各周辺デバイス250も、相互接続110を使用せずに直接または別の方法でプロセッサ202に結合されてもよい。
図3-1は、P個の周辺デバイス250-1、250-2、…、250-Pを明示的に示しており、Pは正の整数を表す。
【0072】
実装例では、各周辺デバイス250は、周辺デバイスの相互運用に確実性をもたらす通信フレームワークに周辺デバイス250が準拠できるようにする少なくとも1つのインターフェース302を含む。例えば、インターフェース302、または通信インターフェース302は、周辺デバイス250が少なくとも1つの通信プロトコル320を実装できるようにすることができる。インターフェース302は、少なくとも1つの相互接続インターフェース304、少なくとも1つのデバイス間インターフェース306、および少なくとも1つの他のインターフェース308を含む。これらのインターフェースについては以下で説明する。図示のように、周辺デバイス250は、通常、少なくとも1つのレジスタインターフェース310および少なくとも1つのセキュリティ機能モジュール312も含む。一般に、インターフェース302は、周辺デバイス250が、プロセッサ202および複数の周辺デバイス250-1…250-Pのうちの他の周辺デバイスと相互作用するための共通フレームワークに準拠することを可能にする。
【0073】
レジスタインターフェース310は、1つまたは複数のレジスタまたはレジスタエントリを含む。各レジスタエントリは、例えば、周辺デバイス250への通信または周辺デバイス250からの通信(例えば、へのまたはからの通信)に使用することができる。例えば、プロセッサ202または別の周辺デバイスは、レジスタエントリをセットまたはクリアすることができ、または周辺デバイス250と通信するためにレジスタエントリに値をロードすることができる。逆に、周辺デバイス250は、プロセッサ202または別の周辺デバイスと通信するためにレジスタエントリの値を変更することができる。この通信を可能にするために、周辺デバイス250は、レジスタインターフェース310の少なくとも一部をプロセッサ202または別の周辺デバイスに公開することができる。例えば、周辺デバイス250は、割り込み状態指示をクリアするためのプロセッサアクセスを提供することができる。
【0074】
一般に、レジスタブロックは、例えばソフトウェアとの構成およびステータス通信を管理するために、周辺論理の残りの部分と通信するために使用することができる。場合によっては、レジスタインターフェース310は、制御およびステータスレジスタ(CSR)を使用して実装することができる。CSRは、周辺デバイス250内のレジスタの集合を提供し、そのレジスタは、回路全体またはチップ全体のアドレスマップを介して、少なくともローカルホストプロセッサ202によってアドレス指定可能である。CSRを標準化すると、ソフトウェアの均一性が向上し、回路の再利用と文書の一貫性が促進される。レジスタインターフェース310の例示的な態様については、
図3-3を参照して以下に説明する。
【0075】
セキュリティ機能モジュール312は、周辺デバイス250のセキュリティ関連機能を実装する。セキュリティ関連機能には、コアまたは1次セキュリティ機能と、サポートまたは2次セキュリティ機能が含まれる。コアセキュリティ機能には、例えば、アラート処理、暗号化および復号を含む暗号化動作、乱数生成、機密データの記憶およびアクセスを含む安全なデータ記憶(例えば、キー管理)などが含まれ得る。サポートするセキュリティ機能には、コア機能の性能を有効化または促進する機能が含まれ得る。サポートするセキュリティ機能の例には、メモリ記憶、メモリ制御、タイミング、回路およびチップI/O制御、環境センサ、バスホスティングなどが含まれる。
【0076】
一般に、インターフェース302、または特定の例示的なインターフェース(例えば、相互接続インターフェース304、デバイス間インターフェース306、または他のインターフェース308)のいずれかは、レジスタインターフェース310に対して少なくとも1つのレジスタを確立して、それぞれのインターフェース通信能力または機能を有効にすることができる。相互接続インターフェース304に関して、相互接続インターフェース304は、例えば共通フレームワークに準拠する周辺デバイス250とプロセッサ202との間の接続を可能にするために相互接続110に結合する通信インターフェースを実装する。周辺デバイス250およびプロセッサ202が同じ共通フレームワークに適合することにより、両方向のデバイス-プロセッサ通信が標準化され、予測可能となり得る。相互接続インターフェース304は、相互接続110全体で動作することができ、レジスタインターフェース310の少なくとも1つのレジスタを使用することができ、別個のバスまたは独立したワイヤ、それらの組み合わせなどを使用することができる。動作中、周辺デバイス250は、相互接続インターフェース304を使用して、少なくとも1つの相互接続通信314に関与することができる。追加的にまたは代替的に、周辺デバイス250は、相互接続インターフェース304を使用して、相互接続110を介して別の周辺デバイスと通信することができる。
【0077】
デバイス間インターフェース306は、周辺デバイス250と、共通のフレームワークに準拠する1つまたは複数の他の周辺デバイスとの間の通信インターフェースを実装する。周辺デバイス250および他の各周辺デバイスが同じ共通フレームワークに適合することにより、両方向のデバイス間通信を標準化し、予測可能にすることができる。デバイス間インターフェース306は、レジスタインターフェース310の少なくとも1つのレジスタを使用することができ、周辺デバイス専用のバスを使用することができ、2つの周辺デバイス間に延びる1つまたは複数の独立したワイヤ、それらの何らかの組み合わせなどを使用することができる。
【0078】
動作中、周辺デバイス250は、デバイス間インターフェース306を使用して、少なくとも1つのデバイス間通信316に関与することができる。別の周辺デバイスと通信するために相互接続110をバイパスすることによって、いくつかの実装では、周辺デバイス250は他の周辺デバイスと「直接」通信することができる。さらに、デバイス間通信方式を確立して準拠することにより、2つ以上のデバイス間の通信の一貫性と確実性が促進される。したがって、設計者は、多数のその場の通信体制の追跡および二重チェックに時間とリソースを費やす代わりに、セキュリティ機能モジュール312の意図したセキュリティ関連機能を達成することに集中することができる。
【0079】
他のインターフェース308は、周辺デバイス250と共通のフレームワークに準拠する別の回路構成要素との間の通信インターフェースを実装する。周辺デバイス250および他の回路構成要素が同じ共通フレームワークに適合することにより、両方向の周辺デバイスシグナリングを標準化し、予測可能にすることができる。その他のインターフェース308の一例は、外部と情報を通信するためのチップI/Oインターフェースである。他のインターフェース308の別の例は、割り込みが相互接続110を介して完全に通信されない場合の割り込みインターフェースである。他のインターフェース308のさらに別の例は、クロックインターフェースである。場合によっては、セキュリティ回路106(
図3には個別に示されていない)は、1次システムクロックおよび1つまたは複数の2次システムクロックを含む。クロックインターフェースは、1次システムクロックと、通信タイミングおよび一般的な機能のために2次システムクロックの少なくとも選択された部分を利用できる。クロックインターフェースは、セキュリティ回路106のクロック方式に従って動作することができ、周辺デバイス250の設計コードは、周辺デバイス250に関連するクロックを指定することができる。動作中、周辺デバイス250は、他のインターフェース308を使用して、I/O回路またはクロックツリーなどの別の回路構成要素と少なくとも1つの他の通信318に関与することができる。
【0080】
図3-2は、互換性の目的が確実に満たされるように周辺デバイスの設計を分析するための例示的なアプローチ300-2を示す。実装例では、アプローチ300-2は、相互接続方式334、デバイス間方式336、または他の方式338(方式のそれぞれを含む)を含むことができるインターフェース仕様332を使用する。インターフェース仕様332は、(
図3-1の)インターフェース302に対応する。相互接続方式334は相互接続インターフェース304に対応し、デバイス間方式336はデバイス間インターフェース306に対応し、他の方式338は他のインターフェース308に対応する。これらの方式には、追加的にまたは代替的に、ローカルまたはチップレベルのI/O方式、割り込み方式、クロック方式などを含めることができる。
【0081】
したがって、インターフェース仕様332は、インターフェース302の規則、プロトコル、属性、選択肢、機能などを確立することができる。同様に、相互接続方式334、デバイス間方式336、およびその他の方式338のそれぞれも、相互接続インターフェース304、デバイス間インターフェース306、および他のインターフェース308の規則、プロトコル、属性、選択肢、機能などをそれぞれ確立することができる。設計時、設計者は、インターフェース仕様332の各関連方式に準拠するように各周辺デバイス250を開発する。例えば、デバイス間方式336は、セキュリティ回路106の相互接続110をバイパスするデバイス間シグナリングを定義するためのフォーマットを確立することができる。そうすることによって、相互運用性を強化し、設計および開発時間、ならびにテストおよびデバッグの労力を削減する、互換性のある周辺デバイス250を製造することができる。例えば、周辺デバイス250は、周辺デバイスの設計コードによって指定された属性から導出される回路を使用して、信号(例えば、デバイス間信号)を別の周辺デバイスに通信することができる。
【0082】
例示的なアプローチでは、互換性分析モジュール340は、設計コードの分析344を実行して、互換性をチェックすることができる。設計者は、インターフェース仕様332を参照して周辺デバイス設計コード342を作成する。したがって、周辺デバイス設計コード342は、インターフェース仕様332に準拠することにより、互換性の目標を満たす。周辺デバイス設計コード342は、例えば構成ファイルを使用して少なくとも部分的に実現され得る。周辺デバイス設計コード342は、プロセッサデバイスシグナリング348の1つまたは複数の指示(例えば、周辺デバイス250とプロセッサ202との間の相互接続通信314の態様を定義する)、デバイス間シグナリング350の1つまたは複数の指示(例えば、周辺デバイス250と別の周辺デバイスとの間のデバイス間通信316の態様を定義する)などを含むことができる。デバイス間シグナリング350の1つまたは複数の指示は、例えば、セキュリティ回路106の相互接続110を使用しない場合を含む、2つまたは複数の周辺デバイス間で交換される信号に関連することができる。これらの指示は、これらの信号のレジスタ、信号の命名、データ型、タイミングなどに関する規則とガイドラインに従うことができる。
【0083】
周辺デバイス設計コード342内の記述は、セキュリティ回路106内の回路構成要素をもたらす。例えば、それぞれの周辺デバイス250(例えば、
図3-1の)のデバイス間インターフェース306に関して、その設計コード342に含まれる属性に基づいて、デバイス間インターフェース306は、デバイス間シグナリングを可能にするために別の周辺デバイスに延びる少なくとも1つのワイヤに結合することができる。設計コード342内でデバイス間シグナリング350を指定することによって、相互運用性および通信の確実性が向上する。インターフェース仕様332または設計コード342の構成ファイルは、特定の互換性フレームワークにおいて必須の周辺機能および任意の周辺機能を示すことができる。したがって、準拠した設計コードには、状況によっては必須部分と選択肢部分が含まれ得る。一般に、設計コード342は、任意のIC設計または構成プラットフォームに従ってフォーマットすることができる。例には、Verilog、Python、Hjsonなどが含まれる。
【0084】
動作中、互換性分析モジュール340は、周辺デバイス設計コード342を受け入れる。インターフェース仕様332を参照して、互換性分析モジュール340は分析344を実行して、周辺デバイス設計コード342が指定された共通フレームワークに準拠しているかどうかをチェックする。互換性分析モジュール340は、周辺デバイス設計コード342を相互接続方式334、デバイス間方式336、または他の方式338のうちの1つまたは複数と比較して、コードがそれぞれの仕様を満たすかどうかをチェックすることができる。これらの方式には、割り込み、レジスタの使用法などに関する仕様が含まれ得る。分析344に基づいて、互換性分析モジュール340は互換性レポート346を生成する。
【0085】
互換性レポート346は、周辺デバイス設計コード342がインターフェース仕様332の基準を満たすことによって分析344に合格するかどうかを示す。そうでない場合、互換性分析モジュール340は、「違反」のリストを互換性レポート346に含めることができる。各違反には、障害の指示を引き起こしているコード部分への参照、または違反しているインターフェース仕様332の部分への参照が含まれ得る。インターフェース仕様332、互換性分析モジュール340、および周辺デバイス設計コード342は、例示的なセキュリティ回路環境に関して説明され得るが、インターフェース仕様332、互換性分析モジュール340、または周辺デバイス設計コード342は、他の環境で実装されてもよい。したがって、互換性レポート346は、一般的な回路設計の分析をカバーすることができる。
【0086】
図3-3は、レジスタインターフェース310および例示的な通信信号を含む例示的な周辺デバイス250を300-3で示す。
図3-3では、一般に、しかし単なる例として、必須の通信チャネルまたは信号が実線で示され(本開示のこの例では)、任意の通信チャネルまたは信号が破線で示されている。しかし、他の場合には、異なるチャネルまたは信号が必須または任意になり得る。さらに、他の図の実線または破線は、それぞれ、所定のインターフェース仕様の下での要件または要件の欠如を必ずしも示すわけではない。
【0087】
実装例では、周辺デバイス250が準拠すべき互換性のためのフレームワークの一部として、さまざまな信号を指定することができる。左上から始めて、相互接続110を使用する双方向シグナリング362-1が、相互接続110に対してデバイスとして機能する(例えば、フォロワとして機能する)周辺デバイス250とともに示されている。その下には、周辺デバイス250が、少なくとも1つのクロック信号364および少なくとも1つの開発モード信号365を受信するものとして示されている。開発モード信号365は、セキュリティ回路106または全体的なSOCが現在どのモードで動作しているかを周辺デバイス250に示す。言い換えれば、複数の動作モードが存在し得る。2つのモード例では、複数のモードには開発モードと生成モードが含まれ得る。モード指示は、例えばソフトウェアエラーの処理方法を決定し得る。他のモードでは、完全なライフサイクルモードのステータスを周辺デバイスに伝えるセキュリティ機能が有効になり得る。
【0088】
周辺デバイス250は、少なくとも1つの割り込み信号366または少なくとも1つのアラート信号368を生成または出力することもできる。さらに、相互接続110を使用する双方向シグナリング362-2は、相互接続110に対してホストとして機能する(例えば、リーダとして機能する)周辺デバイス250とともに示されている。周辺デバイス250はさらに、GPIOインターフェース220または他のチップI/O回路との双方向シグナリング367に関与することができる。レジスタインターフェース310に関しては、少なくとも1つの出力信号369-1がレジスタからハードウェア(Reg2Hw)への信号としてラベル付けされている。一方、少なくとも1つの入力信号369-2は、ハードウェアからレジスタへの信号(Hw2Reg)としてラベル付けされる。一般に、一部の実装では、特定の機能は必須とみなされるが、他の機能は任意とみなされる。しかし、これらの必須および任意のカテゴリは、実装ごとに異なり得る。互換性のある設計では、各周辺デバイス250が他の周辺デバイスと適切に相互運用できるように、これらの2つのカテゴリを機能ごとに割り当てることができる。
【0089】
ROMセキュリティを提供するROM周辺デバイスの例を含む、互換性のあるパラダイムにおける周辺デバイスのための方式、技術、およびハードウェアを一般的に説明してきたが、この説明は次に、ROMセキュリティのための方式、技術、およびハードウェアに移る。
【0090】
ROMセキュリティのための方式、技術、およびハードウェアの例
このセクションでは、ROMアレイ(例えば、マスクROMを記憶する)を有するROMブロックに含めることができる例示的なROMコントローラについて説明する。ROMブロックまたはモジュールは、前述の互換性の原則に従って、周辺デバイスとしてシステムバスに接続できる。実装例では、ROMブロックの一部として、ROMコントローラはシステムバスとマスクROMの間のインターフェースになる。ROMには暗号化されたコンテンツが含まれている。暗号化には、スクランブルなど、比較的軽量または低コストの暗号化が必要になり得る。場合によっては、グローバル定数から導出できる固定キーを使用してコンテンツをスクランブルすることができる。しかし、暗号化は、より複雑または高コストの暗号化方式を使用して実装され得る。使用される暗号化方式または暗号化キーに関係なく、ROMコントローラは、ROMアレイからメモリにフェッチしたコンテンツを復号(例えば、スクランブル解除)できる。
【0091】
SRAMに対して同等の復号または暗号化タスクを実行できる一部のSRAMコントローラとは異なり、ROMコントローラはROMチェッカ回路を含むこともできる。このROMチェッカ回路は、整合性チェックを行うための初期化プロセスの一部として起動またはリセットの直後に、ROMコンテンツの暗号化ハッシュの計算を調整できる。したがって、ROMチェッカ回路は、システムの停止中にマスクROMに加えられた悪意のある変更を検出できる。
【0092】
ROMブロックは、いくつかの機能を提供することができる。例えば、ROMブロックには、メモリおよびアドレススクランブルおよび/またはスクランブル解除用の論理を含めることができる。第2に、ROMブロックは起動後のROM整合性チェックを実行できる。さらに、ROMブロックは、ROM整合性エラーまたは有限状態マシン(FSM)のグリッチに対する制御およびステータスレジスタ(CSR)のアラートトリガおよび/またはステータス情報を提供または発行できる。ROM118/206のこれらおよび他の例示的な態様については、
図4から8を参照してこのセクションで説明する。
【0093】
図4は、ROMアレイ404のデータへのアクセスに関して、ROMコントローラ402およびROMアレイ404を含む例示的なROM118を全体的に400で示す。図示されるように、ROMコントローラ402は、ROMアクセスインターフェース406および暗号化回路408を含むことができる。実装例では、ROMアレイ404は、複数のROMアドレス418に記憶された暗号化されたROMデータ410を含む。ROMコントローラ402は、ROMアレイ404に結合される。一般に、暗号化回路は、複数のROMアドレス418に基づいて、暗号化されたROMデータ410に対して復号動作を実行することができる。
【0094】
ROMアクセスインターフェース406は、暗号化回路408およびROMアレイ404に結合される。例示的なROM読み取りまたはデータフェッチ動作では、ROMアクセスインターフェース406は、暗号化されたROMデータ412に対応するROMアドレス414に基づいて、ROMアレイ404から暗号化されたROMデータ412を読み取る(例えば、ROMアドレス414は、暗号化されたROMデータ412が記憶される場所のアドレスであり得る)。ROMアクセスインターフェース406はまた、暗号化回路408を使用して、暗号化されたROMデータ412を復号して、復号されたROMデータ416を生成する。ROMアクセスインターフェース406は、復号されたROMデータ416を相互接続110に転送することもできる。
【0095】
場合によっては、ROMアクセスインターフェース406は、暗号化されたROMデータ412を復号し、暗号化されたROMデータ412に対応するROMアドレス414を使用して、復号されたROMデータ416を生成する。したがって、暗号化回路408は、複数のROMアドレス418のそれぞれのROMアドレス414に基づいて、暗号化されたROMデータ410のそれぞれのROMデータ412に対して復号動作を実行することができる。それぞれのROMアドレス414は、例えばそのメモリ位置を示すことによって、ROMアレイ404内のそれぞれのROMデータ412を特定することができる。以下に説明するように、ROMアドレス414は、ROMアレイ404を「直接」指し示すスクランブルアドレス、またはスクランブル解除されたアドレスが調整されてスクランブルアドレスを生成した後など、ROMアレイ404を「間接的に」指し示すスクランブル解除されたアドレスを含んでもよい。
【0096】
ROMアクセスインターフェース406は、少なくとも1つの有限状態マシン(FSM)で実現することができ、これは、セキュリティ回路106(例えば、
図1の)または電子デバイスの起動手順のための、復号されたROMデータ(例えば、復号されたROMデータ416の複数のインスタンスとして)として暗号化されたROMデータ410へのアクセスを提供するように設計および/またはプログラムされる。FSM、またはROMアクセスインターフェース406の他の実装は、暗号化回路408の動作を指示することができる。
【0097】
暗号化回路408は、ROMアドレス418に基づいて1つまたは複数のキーを生成することができるキーストリーム回路(
図4には示されていない)を含むことができる。暗号化回路408は、キーストリーム回路に結合されたデータ組み合わせ回路(
図4には示されていない)を含むこともできる。データ組み合わせ回路は、暗号化されたROMデータ412および複数のキーのうちの少なくとも1つのキーに基づいて、復号されたROMデータ416を生成する。場合によっては、暗号化回路408は、暗号化されたROMデータ412を並べ替えて、並べ替えられた暗号化されたROMデータを生成する並べ替え回路(
図4には図示せず)をさらに含む。次に、データ組み合わせ回路は、論理演算を使用して、少なくとも1つのキーのビットと、並べ替えられた暗号化されたROMデータのビットとを組み合わせて、復号されたROMデータ416を生成する。暗号化回路408の実装例については、
図6を参照して以下に説明する。
【0098】
暗号化されたROMデータ410の各エントリは、例えば、ROM命令420と、エラー訂正コード(ECC)などのチェックコード422とを含むことができる。このような場合、暗号化されたROMデータ412は、ROM命令420に対応するビットと、ROM命令420のチェックコード422に対応するビットとを含むことができる。ROM命令420に対応するビットと、ROM命令420のチェックコード422に対応するビットは、それぞれのビット位置が不明になるように、交じり合い、混合、または「平滑化」される。対照的に、復号されたROMデータ416は、ROM命令420に対応するビット、ROM命令420のチェックコード422に対応するビットを、2セットのビットが互いに分離された形式、または少なくともそれらの相対的なビット位置が既知の形式で含むことができる。
【0099】
いくつかの実装では、復号されたROM命令および関連するチェックコードは、ROM118によって相互接続110を介して別の構成要素に渡されてもよい。他の実施形態では、ROMコントローラ402は、ROMチェッカ回路(例えば、
図6のROMチェッカ回路616)を含むことができる。ROMチェッカ回路616は、暗号化回路408の出力に結合することができる。例示的な動作では、ROMチェッカ回路616は、復号されたROMデータ416のROM命令420に基づいて別のチェックコードを計算する。ROMチェッカ回路616はまた、復号されたROMデータ416のチェックコード422と計算されたチェックコードとを含む比較を実行する。ROMチェッカ回路616はさらに、比較に基づいてエラー信号を生成することができる。エラー信号は、アラート信号および/または割り込み信号として、それぞれアラートハンドラおよび/またはプロセッサに送信することができる。
【0100】
図8および
図10を参照して以下に説明するように、ROMアレイ404の複数のROMアドレス418に記憶される暗号化されたROMデータ410の各暗号化されたROMデータ412は、ROMアレイ404の複数のROMアドレス418に記憶される暗号化されたROMデータ410の暗号化されたROMデータ412’と、(一部の実装では)互いに別個である。この区別(または暗号化されたROMデータの固有性)は、少なくとも部分的には、複数のROMアドレス418に基づく暗号化方式によるものである。例えば、暗号化方式および/または特定の暗号化方式で使用される少なくとも1つの暗号化キーは、各元のROMデータが別個の暗号化されたROMデータとなるように選択することができる。
【0101】
次に
図5について説明し、例示的なROM118の追加および/または代替の態様を示す。したがって、
図4の態様は
図5の1つまたは複数の態様と組み合わせることができ、またその逆も可能であることを理解されたい。例えば、
図5のアドレス調整回路504は、
図4の回路に含めることができる。このような場合、ROMコントローラ402は、ROMアドレスを調整して調整されたROMアドレスを生成するアドレス調整回路504を含むことができる。これには、ROMアドレスをスクランブル解除からスクランブルへ(例えば、物理アドレスを生成するように調整された論理アドレスから)変換することが必要になり得る。ROMアクセスインターフェース406は、アドレス調整回路504を使用して、ROMアドレスを調整して、複数のROMアドレス418に記憶されている暗号化されたROMデータ410を読み取る。アドレス調整回路504は、例えば、各ROMアドレスの2つ以上のビットを並べ替えるか、各ROMアドレスの2つ以上のビットを置換するか、またはROMアドレス418の各ROMアドレスの2つ以上のビットを並べ替えて置換し、調整されたROMアドレスを生成できる。組み合わせた
図4と
図5の態様を示す他の実装例を
図6にまとめて示し、以下で説明する。
【0102】
図5は、暗号化されたROMデータ410の整合性をチェックすることに関連して、ROMコントローラ402およびROMアレイ404を含む例示的なROM118を500で全体的に示す。図示されるように、ROMコントローラ402は、整合性チェッカ回路502、アドレス調整回路504、およびゲート回路506を含む。ROMコントローラ402は、少なくともダイジェスト計算回路508にアクセスすることができる。場合によっては、ダイジェスト計算回路508は、別の周辺デバイス250(
図2の)および/または回路構成要素108(
図1の)として実現される。他の場合には、ダイジェスト計算回路508は、ROMコントローラ402の一部であるか、またはROMコントローラ402とは別個であるなど、ROM118の一部として実現され得る。
【0103】
実装例では、ROMアレイ404は、複数のROMアドレス418に記憶された暗号化されたROMデータ410を含む。ROMアレイ404は、少なくとも1つの予想ダイジェスト510(または「予想ダイジェスト値510」)を含むこともできる。ROMコントローラ402は、ROMアレイ404に結合される。動作例では、ROMコントローラ402は、暗号化されたROMデータ412に対応するROMアドレス512または514に基づいて、ROMアレイ404から暗号化されたROMデータ412を読み取る。ROMコントローラ402はまた、暗号化されたROMデータ412を使用して少なくとも1つのダイジェスト値516を取得する。取得を実行するために、整合性チェッカ回路502は、ダイジェスト計算回路508を使用することができる。ROMコントローラ402はさらに、少なくとも1つのダイジェスト値516および予想ダイジェスト値510に基づいて、ROMアレイ404へのアクセスをゲートする。整合性チェッカ回路502は、ゲート回路506を制御して、ROMアレイ404へのアクセスを許可/認可またはブロックすることができる。
【0104】
ROMコントローラ402のアドレス調整回路504は、ROMアドレス512を調整して、調整されたROMアドレス514を生成することができる。ROMコントローラ402は、アドレス調整回路504を使用してROMアドレス512を調整し、複数のROMアドレス418に記憶されている暗号化されたROMデータ410を読み取る。アドレス調整回路504は、例えば、ROMアドレス512の2つ以上のビットをシフト、スワッピング、またはその他の方法で操作して、調整されたROMアドレス514を生成することによって、ROMアドレス512を調整することができる。
図4のROMアドレス414は、ROMアドレス512または調整されたROMアドレス514に対応し得る。
【0105】
ROMコントローラ402は、少なくとも1つのハッシュアルゴリズムを暗号化されたROMデータ412に適用させることに基づいて、少なくとも1つのダイジェスト値516を取得するように構成される。ハッシュアルゴリズムの例を本明細書で説明する。場合によっては、ROMアレイ404およびROMコントローラ402は、第1の周辺デバイス(例えば、
図2のROM206などの第1の周辺デバイス250-1)を含む。第2の周辺デバイス(例えば、
図2のHMACエンジン214などの第2の周辺デバイス250-2)は、1つまたは複数のハッシュアルゴリズムを実装することができる。ROMコントローラ402は、第2の周辺デバイスと通信することによって、少なくとも1つのダイジェスト値516を取得することができる。したがって、これらの場合、第2の周辺デバイスはダイジェスト計算回路508を含むことができる。他の場合には、ROM118は、そのROMコントローラ402を含めて、代わりにダイジェスト計算回路508を含むことができる。
【0106】
いくつかの実装について
図5に示すように、ROMコントローラ402は、ROMアレイ404から予想ダイジェスト値510を読み取ることができる。暗号化されたROMデータ410とは対照的に、予想ダイジェスト値510は、暗号化されていない形式でROMアレイ404に記憶され得る。予想ダイジェスト値510は、ROMアレイ404の任意のアドレスおよび/または位置に記憶されてもよく、予想ダイジェスト値510は、ROMアレイ404の1つまたは複数のラインおよび/またはアドレスにまたがってもよい。例えば、予想ダイジェスト値510は、決定可能なROMアドレスに対応するROMアレイ404の所定の位置(例えば、最後の6つのROMエントリ)に記憶され得る(例えば、最後の6つのROMエントリを特定する少なくとも1つのROMアドレス512または少なくとも1つの調整されたROMアドレス514)。
【0107】
整合性チェッカ回路502は、計算されたダイジェスト値516と予想ダイジェスト値510を比較することができる。少なくとも1つのダイジェスト値516が予想ダイジェスト値510と一致することに応答して、ROMコントローラ402は、ゲート回路506を使用してROMアレイ404へのアクセスを認可することができ、例えば、暗号化されたROMデータ410を使用して起動手順を実行することを許可するか、または一般的なROMアクセスを許可する。一方、少なくとも1つのダイジェスト値516が予想ダイジェスト値510と一致しないことに応答して、ROMコントローラ402は、ゲート回路506を使用してROMアレイ404へのアクセスをブロックし、例えば、信頼できない暗号化されたROMデータ410を使用して起動手順が実行されるのを防止したり、一般的なROMアクセスをブロックしたりすることができる。ROMコントローラ402はまた、少なくとも1つのアラーム518(または「アラーム指示518」)を送信することもできる。少なくとも1つのアラーム518は、レジスタを介してROM118から通信されるアラート、および/または相互接続110または専用経路を介して送信される割り込みに対応することができる。
【0108】
セキュリティ回路は、追加的にまたは代替的に、計算されたダイジェスト値516をROM118の外部の1つまたは複数の他の構成要素に提供することができる。例えば、その整合性チェッカ回路502などのROMコントローラ402は、ダイジェスト値516をメインプロセッサなどの別の構成要素に送信することができる。ROMコントローラ402はまた、または代わりに、ROM118の少なくとも1つのレジスタを介してダイジェスト値516を公開することもできる。レジスタ内の値を読み取ると、これにより、他の構成要素が計算されたダイジェスト値516の値を独立して確認できるようになる。キー導出メカニズムにより、たとえ攻撃者が暗号化されたROMデータ410および/または予想ダイジェスト値510(ROMアレイ404に記憶されている)を破壊することができたとしても、攻撃者は、他の構成要素によって検出できる方法でチップIDを変更した。
【0109】
暗号化されたROMデータ410の各暗号化されたROMデータ412は、固有であるか互いに異なることを含めて、変化するか異種であるように確立することができる。例えば、暗号化されたROMデータ410の各それぞれの暗号化されたROMデータ412は、ROMアレイ404全体にわたって、暗号化されたROMデータ410の他の各それぞれの暗号化されたROMデータ412と異なっていてもよい。場合によっては、暗号化されたROMデータ410の暗号化または復号に関連する暗号化キーは、各それぞれの暗号化されたROMデータ412が、ROMアレイ404全体にわたる暗号化されたROMデータ410の他の各それぞれの暗号化されたROMデータ412と確実に異なるように選択される。他の場合には、各暗号化されたROMデータ412の生成に関連する暗号化アルゴリズムは、各それぞれの暗号化されたROMデータ412が、ROMアレイ404全体の暗号化されたROMデータ410の他の各それぞれの暗号化されたROMデータ412と確実に異なるように選択される。暗号化されたROMデータのほとんどまたは各データ412が固有であることを保証するための技術については、
図8を参照してさらに説明する。
【0110】
図6は、ROMブロック600の一例を示しており、これは、ROM118(例えば、
図1、4、および5の)および/またはROM周辺デバイス206(例えば、
図2の)として実装され得る。
図6は、ROMモジュール実装例の高レベルのブロック図を示す。図示された一部のブロックは、チップ上の別の場所またはセキュリティ回路の別の構成要素の一部としても使用または複製され得る多用途プリミティブのインスタンス化によって実現され得る。ROMブロック600には、
図4および
図5から、ROMアレイ404、整合性チェッカ回路502、およびアドレス調整回路504が含まれる。
【0111】
示されるように、ROMブロック600はまた、インターフェース604、少なくとも1つのレジスタ606、ROMチェッカ回路616、ゼロパダー回路618、マルチプレクサ602、および暗号化回路408(例えば、
図4の)の一例を含む。ROMチェッカ回路616は、ECCデコーダで実現されてもよい。暗号化回路408は、例えば、キーストリーム回路608、操作回路612、およびデータ組み合わせ回路614を用いて実現することができる。データ組み合わせ回路614は、例えば、排他的論理和(XOR)演算などの論理演算を実行する回路で実装することができる。操作回路612は、ROMデータ626(
図4および
図5の暗号化されたROMデータ412に対応し得る)の1つまたは複数のビットを拡散することができる。操作回路612は、以下でさらに説明するように、例えば、並べ替え回路、置換回路、または組み合わせた並べ替えおよび置換回路(例えば、置換-並べ替えネットワーク)を使用して実装することができる。
【0112】
一般に、図の上半分は、システムが通常動作しているときのROM読み取りのパスを示す。図の下半分は、ROM整合性チェッカ回路502の使用法を示している。ROM整合性チェッカ回路502は、ROM画像の有効性をチェックするために、例えば、チップ起動シーケンスの早い段階で電力マネージャによってトリガされ得る。場合によっては、整合性チェッカ回路502は、攻撃者が複数回実行してシステムを侵害することを防ぐために、一度だけ実行するように構成することができる。整合性チェッカ回路502は、整合性チェック手順が肯定的な結果で終了するとマルチプレクサ602を解放し、ゲート回路506(
図5の)の一部としてROMアレイへのアクセスを認可することができる。
【0113】
本文書では、セキュリティ回路(例えば、チップ)が通常起動モードで動作しているとき、または整合性チェックが正常に実行された後のROMアクセス例について説明する。チップが起動すると、システムバス(TL-ULバスなど)などの相互接続を介してROMアクセスを要求できる。ROMブロック600は、
図6の左上に示されるインターフェース604(例えば、TL-ULアダプタ)を介してこれらの要求を受信することができる。通常動作では、マルチプレクサ602は、これらのバス読み取り(例えば、TL読み取り)へのアクセスを認可する。読み出し要求のアドレス610は、アドレス調整回路504で調整される。例えば、アドレス調整回路は、置換並べ替えネットワークを使用してアドレスをスクランブルすることができる。
【0114】
ROMアクセスと並行して、低レイテンシの削減ラウンドPRINCEブロック暗号(例えば、レイテンシ1で5ラウンドを有し、これは、SRAMに使用される暗号と同等であり得る)などキーストリーム回路608は、ROMブロックの39ビットの切り詰められたキーストリームを計算する。キーストリーム回路608は、(例えば、アドレスが調整される前に)アドレス調整回路504に提供される要求からのアドレスを使用して、少なくとも1つのキーを生成する。次のサイクルでは、ROMアレイ404からのスクランブルされたデータ(例えば、ROMデータのビットと対応するECCのビット、この2つのセットまたはタイプのビットがROMアレイ404内でROMデータ626として交じり合わされる)は、別の置換並べ替えネットワークなどの操作回路612を介して送られる。操作回路612からの操作された(例えば、並べ替えおよび/または置換された)ROMデータと、キーストリーム回路608からの少なくとも1つのキーまたはキーストリームは、データ組み合わせ回路614によって組み合わされる。図示の例では、キーおよび並べ替えられたスクランブルROMデータ(ECCコードを含む)は、データ組み合わせ回路614によって実行されるXOR演算によってXOR演算される。PRINCEのようなブロック暗号は、例えば「カウンタ(CTR)モード」で使用できる。カウンタ(例えば、ROMデータアドレス610)は、Nビットのブロック暗号(例えば、PRINCE)および特定のキー(例えば、ネットリスト定数)で暗号化され、Nビットのキーストリームブロック628を生成し、それは、データ(例えば、ROMデータアドレス610に対応するROMデータ626)に対してXOR演算することができる。
【0115】
データ組み合わせ回路614からの出力は、復号された32ビットデータに7ECCビットを加えたものである。ROMチェッカ回路616がここで実装される場合、これらの39ビットは、ECCビットによる確認が成功すると、ROMチェッカ回路616を通過してインターフェース604に戻すことができる。ECC復号エラーにより、TL要求に応答したROMアクセスによってエラー信号622とともにインターフェース604を介してエラーコード(例えば、読み取りエラーインジケータ)が報告され得る。ROMコントローラは、エラー信号622を使用して、または代わりに、レジスタ606のうちの少なくとも1つのレジスタをセットすること、および/またはECC復号エラーに基づいて致命的なアラートを生成することもできる。本明細書では特定のビット長が示されているが、これらは例としてのみ示されており、データ、ECCなどは異なる長さを有したり、省略されたりしてもよい。
【0116】
ECC機能の代替実装では、「メイン」バスまたはシステムバスがECCチェック機能で強化されてもよい。そのような場合、回路およびその動作は、
図6を参照して図示および説明されたものとは異なり得る。例えば、ROMアクセス応答624は、ROMビットおよびECCビットを、データ組み合わせ回路614のスクランブル解除XOR演算器からインターフェース604に「直接」渡すことによって、含むことができる。したがって、これらの代替実装では、ROMチェッカ回路616およびそれに関連するCSRをROMブロック600から省略することができる。
【0117】
図7は、
図6のROMブロック600のROMアレイ404にアクセスするための例示的なタイミング
図700を示す。タイミング
図700は、さまざまな信号のタイミングを示す。これらの信号例は、
図6のROMブロック600に示される信号にマッピングされる。要求702(req702)出力がインターフェース604から提供されてから、応答がインターフェース604の応答またはROM有効704(rvalid704)入力に現れるまでの時間は1サイクルである。スクランブル解除されたまたは元のアドレス「12」と、スクランブル解除されたまたは元のアドレス「34」の2つの例が示されている。図のアドレスの「スクランブル方式」の例は、各アドレスの桁を反転することである。元のまたはスクランブル解除された「12」アドレスの例に関しては、ROM内のスクランブルされたアドレス21に記憶されているワードは「w21」と表示される。スクランブル解除されたアドレスまたは元のアドレス12のキーストリーム値は「k12」と示される。スクランブル解除された、または元のアドレス12の復号されたROMデータは、「d12」で示される。
【0118】
図6を参照すると、キーストリーム回路608のPRINCEブロック暗号ベースの実装、およびアドレス調整回路504および操作回路612の2つの置換および並べ替え(S&P)ネットワーク実装は、「キー」によってパラメータ化することができる。ROMコントローラの場合、これらのキーはグローバルにランダム化されたネットリスト定数であり得る。したがって、キーは回復が困難であると考えられるが、必ずしも機密データである必要はない。特定のビット長(例えば、39ビットおよび256ビットの)およびワードサイズ(例えば、32ビットの)が本明細書の説明および/または添付の図面に示されているが、これらは例としてのみ提供される。他の実装では、異なるビット長やワードサイズなどが使用され得る。
【0119】
本文書では、起動ROMの整合性チェックの例について説明する。ROM整合性チェッカ回路502は、例えば、リセット「直後」を含むリセット後、または少なくともROMへの読み取りが行われる前に実行することができる。ROMチェックが完了するまで、整合性チェッカ回路502は(例えば、マルチプレクサ602を介して)ROMアドレス要求を制御する。マルチプレクサ602の選択信号632は、選択信号を障害挿入(FI)攻撃から保護するために冗長符号化を含むことができる。選択信号632が無効な値を有する場合、無効の検出により致命的なアラートがトリガされ得る。ROMアレイ404からROMデータ626(例えば、
図4および5の暗号化されたROMデータ412に対応し得る)としてデータを読み出し始める前に、ROM整合性チェッカ回路502(または電力マネージャモジュール)は、暗号化モジュール(
図6には示されていない)上で暗号化動作を開始することができ、ROMチェックの準備をする(例えば、信号kmac_cmd_oを使用して、キー付きまたはKeccakメッセージ認証コード(KMAC)エンジンでcSHAKE動作を開始できる)。ROM整合性チェックプロセスの例については、
図9の流れ図を参照して以下で説明する。
【0120】
セキュリティ回路に対する物理的攻撃の可能性としては、マスクROMを破壊する試みがある。マスクROMの規則的な構造は、メタル固定が比較的簡単になるため便利であるが、同じ理由で、規則的な構造はROMを攻撃者にとって比較的簡単なターゲットにし得る。ROM内のコードが最初に実行され得るため、攻撃者が検出されずにROMコードを変更すると、信頼の連鎖を完全に破壊し得る。したがって、整合性チェッカ回路502は、ROMコードの整合性における信頼度の尺度を提供することができる。
【0121】
実装例では、ROMコントローラをリセットから解除した後、電力マネージャは、ホストプロセッサを開始する前に「check_done_o」信号がアサートされるまで待機する。電力マネージャは、check_good_o信号が「オン」であることもチェックできる。そうでない場合、電力マネージャは起動を拒否できる。これにより安全性チェックが提供され、次に説明するキーマネージャの統合によって追加のセキュリティが提供される。
【0122】
KMACインターフェースは、KMACエンジンがROMチェッカ回路に特有のプレフィックスを用いてcSHAKEアルゴリズムを実行するように事前に構成されると仮定することができる。ROMチェッカは、1回のハッシュ計算(または既知の数のハッシュ計算)が終了した後、信号「kmac_rom_vld_o」をアサートしない。しかし、KMACエンジンは、障害挿入攻撃に対する堅牢性を依然として維持した単純な調停を可能にするために、その後信号を無視し得る。
【0123】
キーマネージャとの統合は、「kmac_digest_share0_i」および「kmac_digest_share1_i」内のダイジェストデータを「keymgr_digest_data_o」として転送することに基づいている。この256ビットのダイジェストは「CreatorRootKey」に組み込むことができる。場合によっては、キーマネージャは、リセット後にこの情報を渡すために1つのトランザクション(例えば、256ビット/32ビット=8ビート)のみを許可できる。今後のメッセージに応答して、キーマネージャはアラートを発することができ、これにより、正しいトランザクションの前後に追加のトランザクションをトリガしようとする攻撃者を阻止できる。
【0124】
CreatorRootKeyは、IDおよびルートキーのチェーン内の最初のキーを形成することができる。ROMを変更する攻撃者は、CreatorRootKeyを混乱させることになる。これを回避すると、ROMチェックサム計算またはKM_DERIVE関数に対するプリイメージ攻撃が発生することになるからである。その結果、セキュリティチップは機能するが、チップには「間違った」ルートキーが保持されるため、認証に使用される信頼の連鎖が壊れる。
【0125】
次に、パラメータおよび信号に関するハードウェアインターフェースの例について説明する。ROMコントローラ信号の例の説明を以下の表1に示す。これらの信号は、整合性チェッカ回路502から送信することも、整合性チェッカ回路502で受信することもできる。「チェック」関連の信号は、電力マネージャと通信することができる。「keymgr」関連信号は、キーマネージャと通信できる。「kmac」関連信号は、KMACエンジンまたはハッシュ動作を実行する他の回路と通信できる。
【0126】
【0127】
ROMブロックのレジスタ606のレジスタ値の例は、以下を含み得る。
ALERT_TEST;
FATAL_ALERT_CAUSE;
DIGEST_0…DIGEST_7(例えば、マルチレジスタを備える);
EXP_DIGEST_0…EXP_DIGEST_7(例えば、マルチレジスタを備える);および
ROM(例えば、ROMへのウィンドウ)。
【0128】
FATAL_ALERT_CAUSEレジスタのフィールド例を以下の表2に示す。
【0129】
【0130】
プログラミングおよびROMブロックに関して、ソフトウェアは、ROMからコードをフェッチするか、またはデータをロードすることによって、ROMコントローラと相互作用することができる。この観点から見ると、ROMブロックはシステムバスを介してアクセスできるメモリのブロックであるように見える。しかし、ROMブロックはレジスタ606のいくつかをアクセス可能にすることができる。ALERT_TESTレジスタを除き、レジスタは読み取り専用であり、書き込み可能であり得る。FATAL_ALERT_CAUSEレジスタは動作中に値が変更され得るが(例えば、アラートが通知された場合)、ROMブロックの他のレジスタはソフトウェアが実行されるまでに固定値を有し得る。
【0131】
整合性チェッカ回路502は、ダイジェスト信号634を介してレジスタ606にダイジェストをロードすることができる。計算されたROMダイジェストを取得するために、ソフトウェアはDIGEST_0~DIGEST_7レジスタを読み取ることができる。ROMアレイ404は、予想されるROMダイジェスト、EXP_DIGESTを含むこともできる。ROMアレイ404の残りのコンテンツとは異なり、予想ダイジェストを記憶するコンテンツはスクランブルされない可能性がある。そのため、ソフトウェアは標準ROMインターフェースを介してデータを読み取ることができず、「再度」スクランブルが解除され、ECCチェックの失敗を引き起こすゴミデータが生成される。ソフトウェアにこの値へのアクセスが与えられる場合、予想ダイジェストはEXP_DIGEST_0からEXP_DIGEST_7で読み取ることができる。
【0132】
図8は、復元力を備えた整合性チェックの実装に従った方式例を全体的に800で示している。セキュリティ回路には、ROMアレイ404が含まれる。ROMアレイ404は、暗号化されたROMデータ410を含む。暗号化されたROMデータ410は、暗号化されたROMデータ412-1…暗号化されたROMデータ412-LのL個のインスタンスなど、暗号化されたROMデータの複数のインスタンスを含むことができ、Lは整数を表す。
【0133】
各それぞれの暗号化されたROMデータ412は、少なくとも1つのキー804を有する暗号化アルゴリズム806を使用して、および/またはそれぞれのROMアドレス414に基づいて、それぞれの「元の」ROMライン802-1から生成される(例えば、それぞれのROMアドレス414は、少なくとも1つのキー804の一部として使用され得る)。したがって、第1のROMライン802-1は第1の暗号化されたROMデータ412-1をもたらし、L番目のROMライン802-LはL番目の暗号化されたROMデータ412-Lをもたらす。各ROMラインまたはエントリ802は、例えば、暗号化および復号のペアの動作後の復号されたROMデータ416に対応することができる。
【0134】
場合によっては、暗号化アルゴリズム806とキー804の特定の組み合わせにより、同一である、すなわち互いに区別しない、暗号化されたROMデータ412の2つ以上のインスタンスが生成され得る。これは、ROMアレイ404内の別のROMラインが変更された場合に、ROM整合性チェッカを同じ値を有する別のROMラインにリダイレクトすることによって、別の潜在的な攻撃手段を提供することができる。より具体的には、攻撃者はチェッカとROMアレイ間の通信を攻撃しようとし得る。これには、データバスの操作(例えば、ROMデータに加えられた変更を隠すため)やアドレスバスの下位ビットの攻撃が必要になり得る。例えば、攻撃者はROM内のワードを変更しようとするが、ROMチェッカを同じワードの別のコピーにリダイレクトすることで、ハッシュ計算によるそのような変更の検出を回避し得る。
【0135】
これに対抗するために、1つまたは複数の重複がある場合には、暗号化アルゴリズム806および/またはキー804を変更するか、または異なるアルゴリズムまたはキーに置き換えることができる。変更されたアルゴリズムおよび/またはキーを使用して、ROMライン802-1…802-Lが再暗号化され、暗号化されたROMデータ412-1…412-Lの複数のインスタンスの別のセットが生成される。このプロセスは、暗号化されたROMデータ412の同一のインスタンスがほとんどなくなるまで、あるいはゼロになるまで繰り返すことができる。
【0136】
一時的な(そして推測不可能な)キーを使用して静止時のデータへの攻撃をより困難にするいくつかのスクランブルアプローチとは異なり、ROMスクランブルのキーは回路ごとに固定される。それでもなお、そのような固定キーは、上で説明したような拡散およびアドレスリンク特性を提供する。キーはグローバル定数から派生できる。セキュリティ回路インスタンス化の最終設計を構築する場合、「追加」チェックを実行して、スクランブル後にROM内の各ワードが別個であるキーを生成する定数が選択されていることを保証できる。
【0137】
ROMセキュリティのための方式、技術、およびハードウェアを一般的に説明してきたが、ここでの説明は例示的な方法に移る。
【0138】
ROMセキュリティの例示的な方法
例示的な方法を、
図9から13の流れ図を参照して以下に説明する。
図9は、起動時またはリセット時などに、装置がROMの整合性をチェックするための例示的な方法を流れ
図900で示している。流れ
図900は、9つのブロック902~918を含む。
図6も参照すると、ROM整合性チェッカ回路502は、リセット直後を含むリセット後、または少なくともROMへの読み取りが行われる前に実行することができる。ROMチェックが完了するまで、ROMチェッカは(例えば、マルチプレクサ602を通じて)ROMアドレス要求を制御することができる。マルチプレクサ602の選択信号632は、選択信号632を障害挿入(FI)攻撃から保護するために冗長符号化を含むことができる。選択信号632が無効な値を有する場合、無効の検出により致命的なアラートがトリガされ得る。ROMアレイ404からのデータの読み取りを開始する前に、ROMチェッカ(または電力マネージャモジュール)は、ROMチェックのための1つまたは複数のハッシュ動作を実行する準備として暗号化動作を開始することができる。
【0139】
902において、ROMチェッカは、「アドレス0」から始まるスクランブル解除されたアドレス順序でROMコンテンツを読み取ることができ、その結果、アドレススクランブルのために物理ROM上に分散したアクセスパターンが生じる。904において、各ROM読み出しは39ビットのデータを生成し、これは64ビットになるように(例えば、ゼロパダー回路618によって)ゼロが埋め込まれる。この64ビット長は、
図5のダイジェスト計算回路508(例えば、KMACエンジン(
図5または6には明示的に示されていない))によって予想されるインターフェースと一致する。アドレスがインクリメントされる。
【0140】
ROM整合性チェッカ回路502は、ROM内のワードの多くを(例えば、下から上に)ループする。ブロック906について以下で説明するように、アドレスが所定のアドレスに達するまで読み取りおよびインクリメントする。整合性チェッカ回路502の有限状態マシン(FSM)は、レディ/有効インターフェースを使用して各ROMワードをKMACエンジンに渡し、送信される最後のワードに応答して「kmac_rom_last_o」ビットをセットする。
【0141】
906で、アドレス値に基づいて決定が行われる。予想されるハッシュ値のために、ある程度の量のワードが予約され得る。例えば、ROMアレイ404内の上位8ワード(例えば、スクランブル解除されたアドレスによる)は、256ビットの「予想されるハッシュ値」として解釈することができる。ROMアレイ404の残りの部分とは異なり、予想されるハッシュのワードのデータは、スクランブル解除された状態で記憶され得る。したがって、予想されるハッシュ値は、復号せずに直接読み取ることができる。908で、これらの上位8ワードがROMアレイ404からバッファまたはレジスタに読み込まれ、予想ダイジェスト値が得られる。したがって、これらのワードは、整合性チェッカ回路502によって(例えば、ECCビットを無視して)予想されるハッシュとして取得することができる。予想されるハッシュは、KMACエンジンまたはダイジェスト計算回路508の他の実装から返送されるダイジェストと比較することができる。
【0142】
910において、ダイジェストがKMACエンジンから受信されると、整合性チェッカ回路502は、ダイジェストをキーマネージャなどのキーチェッカに転送することができる。キーマネージャまたは整合性チェッカ回路502は、912で、計算されたダイジェストを、ROMアレイ404の上位8ワードから読み取られた予想ダイジェストと比較することができる。ROMコントローラ402のFSMが比較を実行する場合、ブロック910の転送は省略されてもよい。2つのダイジェストが一致しない場合、キーマネージャおよび/または整合性チェッカ回路502は914でアラームを生成することができる。アラームは、アラートまたは割り込みとして通知できる。予想ダイジェストと計算されたダイジェストの一致に応答して、916で、整合性チェッカ回路502は、「check_good_o」指示を「オン」として通知し、マルチプレクサ602を解放することができる。そうすることによって、整合性チェッカ回路502は、マルチプレクサ602へのアクセスを切り替えて、他の構成要素がインターフェース604を介してROMアレイ404にアクセスできるようにする。一致または不一致により、計算および/または比較が完了すると、「check_done_o」指示がアサートされる(例えば、高に駆動される)ことができる。その後、システムは918で通常動作に入ることができる。
【0143】
図10は、復元性を伴う整合性チェックに従った例示的な方法の流れ図またはプロセス1000を示す。一般に、暗号化キーベースの実装例に関して、流れ
図1000は、最初に暗号化キーを選択することを必要とすることができる。第2に、選択された暗号化キーを使用して、ROMデータの各ラインが暗号化され、それぞれの暗号化されたROMデータ412が生成される。第3に、暗号化されたROMデータ412の複数のインスタンスがチェックされて、重複が存在するかどうかが決定される。重複がない場合、プロセスは終了できる。一方、少なくとも1つの重複が検出された場合は、別の暗号化キーの選択から開始するステップを繰り返すことでプロセスを続行できる。
【0144】
図10に示すように、流れ
図1000は5つのブロック1002~1010を含む。ブロック1002で、暗号化キーおよび/または暗号化アルゴリズムがROMの各ラインに適用されて、複数の暗号化されたROMラインが生成される。ブロック1004で、一定数量の重複した暗号化されたROMラインの存在が決定される。数量がゼロの場合(または別の閾値を満たす場合)、プロセスは破線の矢印で示されているように終了できる。一方、重複の数量がゼロでない場合には、ブロック1006で、新しい暗号化キーおよび/または新しい暗号化アルゴリズムを使用して、ROMの各ラインに対する暗号化の適用が繰り返される。ブロック1008で、暗号化されたROMラインの重複インスタンスの新しい数量が、新しいキーおよび/または新しいアルゴリズムに基づいて決定される。ブロック1010のように、特定のキーとアルゴリズムの組み合わせの適用によって、暗号化されたROMラインのある閾値数量(例えば、ゼロ)が重複するまで、プロセスはブロック1006で継続することができる。
【0145】
図11は、スクランブルされたROMデータにアクセスするためなど、ROMスクランブルを実装する装置のための例示的な方法を流れ図またはプロセス1100で示す。流れ
図1100は、4つのブロック1102~1108を含む。動作は、ROM118/206周辺デバイスなどのROMブロックによって実行できる。ブロック1102で、ROMは、システムバスまたはそのインターフェースから、ROMアドレスを含むROM読み取り要求を受信することができる。ブロック1104で、ROMのROMコントローラは、ROMアドレスを使用してROMアレイにアクセスし、ROM命令に加えてECCまたは他の保護データを含み得るスクランブルROMデータを取得することができる。より一般的には、スクランブルされたROMデータは、暗号化されたROMデータとして実装され得る。
【0146】
ブロック1106で、ROMコントローラの暗号化回路は、ROMアドレスを使用してスクランブルされたROMデータをスクランブル解除し、スクランブルが解除されたROMデータを生成することができる。例えば、暗号化回路は、キーストリーム回路608、操作回路612(例えば、スクランブルされたROMデータのビットを拡散するための置換および並べ替えネットワークまたは他の回路)、および、論理演算を実行するデータ組み合わせ回路614のうちの1つまたは複数を使用することができる。ブロック1108で、ROMコントローラは、スクランブル解除されたROMデータを、インターフェースおよび/またはシステムバスを介して別の周辺デバイスに送信することができる。
【0147】
図12は、暗号化されたROMデータを含むROMアレイにアクセスするための例示的なプロセス1200を示す流れ図である。流れ図には、4つのブロック1202~1208が含まれる。ブロック1202で、ROM読み取り要求が取得される。このROM読み取り要求には、複数のROMアドレスに記憶された暗号化されたROMデータを含むROMアレイに関連するROMアドレスが含まれる。例えば、ROMコントローラ402は、複数のROMアドレス418に記憶された暗号化されたROMデータ410を含むROMアレイ404に関連するROMアドレス414を含むROM読み取り要求を取得することができる。ROM読み取り要求は、例えば、相互接続110および/またはインターフェース604を介して別の構成要素から取得されてもよい。
【0148】
ブロック1204で、暗号化されたROMデータが、ROMアドレスを使用してROMアレイから読み取られる。例えば、ROMコントローラ402は、ROMアドレス414を使用して、ROMアレイ404から暗号化されたROMデータ412を読み取ることができる。場合によっては、ROMコントローラ402は、アドレス調整回路504を含んでもよく、アドレス調整回路504は、ROMアドレス512を調整して、調整されたROMアドレス514を生成してもよい。そのような場合、ROMコントローラ402は、調整されたROMアドレス514で実現されるROMアドレス414を使用して、ROMアレイ404から暗号化されたROMデータ412を取得することができる。
【0149】
ブロック1206で、暗号化されたROMデータが復号され、ROMアドレスを使用して復号されたROMデータが生成される。例えば、暗号化回路408は、ROMアドレス414を使用して、暗号化されたROMデータ412を復号して、復号されたROMデータ416を生成することができる。そうするために、暗号化回路408は、ROMアドレス414を使用して、復号されたROMデータ416を生成するための復号アルゴリズムの一部として使用されるキーを生成することができる。
【0150】
ブロック1208で、復号されたROMデータが相互接続に転送される。例えば、ROMコントローラ402は、復号されたROMデータ416を相互接続110に転送することができる。ここで、復号されたROMデータ416は、チェックコードビットを含むことができる。追加的にまたは代替的に、ROMチェッカ回路616は、復号されたROMデータ416を転送する動作の一部として、またはそれと併せて、ROMにおいてエラーチェック手順を実行することができる。
【0151】
図13は、暗号化されたROMデータを含むROMアレイの整合性をチェックするための例示的なプロセス1300を示す流れ図である。流れ図には、3つのブロック1302~1306が含まれる。ブロック1302で、暗号化されたROMデータは、暗号化されたROMデータに対応するROMアドレスに基づいてROMアレイから読み取られ、ROMアレイは暗号化されたROMデータを複数のROMアドレスに記憶する。例えば、ROMコントローラ402は、暗号化されたROMデータ412に対応するROMアドレス512または514に基づいて、ROMアレイ404から暗号化されたROMデータ412を読み取ることができる。したがって、ROMコントローラ402は、取り出される暗号化されたROMデータ412を特定するために調整されたROMアドレス514が使用されるように、ROMアドレス512から調整されたROMアドレス514を生成するアドレス調整回路504を含み得る。ここで、ROMアレイ404は、暗号化されたROMデータ410を複数のROMアドレス418に記憶することができる。ROMアレイ404はまた、予想ダイジェスト値510を記憶することもできる。
【0152】
ブロック1304で、暗号化されたROMデータを使用して少なくとも1つのダイジェスト値が取得される。例えば、ROMコントローラ402は、暗号化されたROMデータ412を使用して少なくとも1つのダイジェスト値516を取得することができる。場合によっては、ROMコントローラ402の整合性チェッカ回路502は、少なくとも1つのダイジェスト値516を取得するために、ROM118の外部にあるダイジェスト計算回路508と通信することができる。他の場合には、整合性チェッカ回路502またはROM118の別の部分は、ダイジェスト値516のハッシュを計算する回路を含んでもよい。ダイジェスト値516は、特定のROMアレイ404内の暗号化されたROMデータ412の最大ですべてのインスタンスを含む、暗号化されたROMデータ412の複数のインスタンスにわたるハッシュに対応し得る。このような場合、ブロック1302では、暗号化されたROMデータ412の複数のものに対応する複数のROMアドレスに基づいて、暗号化されたROMデータ412の複数のものがROMアレイ404から読み取られる。さらに、ブロック1304では、ハッシュアルゴリズムが、ROMアレイ404から読み取られた暗号化されたROMデータ412の複数のものに適用される。
【0153】
ブロック1306で、ROMアレイへのアクセスは、少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいてゲートされる。例えば、ROMコントローラ402は、少なくとも1つのダイジェスト値516および予想ダイジェスト値510に基づいて、ROMアレイ404へのアクセスをゲートすることができる。そうするために、整合性チェッカ回路502は、ダイジェスト値516を予想ダイジェスト値510と比較することができる。一致しない場合、ゲート回路506は、ROMアレイ404へのアクセスをブロックまたは拒否することができる。一方、2つの値510および516が一致する場合、ゲート回路506は、例えば初期化の続行または「通常の」ROMアクセスの発生を可能にするために、他の構成要素へのROMアレイ404へのアクセスを許可することができる。
【0154】
これらの方法の態様は、例えば、ハードウェア(例えば、固定論理回路、またはメモリと連携したプロセッサ)、ファームウェア、ソフトウェア、またはそれらの何らかの組み合わせで実装され得る。この方法は、
図1から8および14に示される装置または構成要素のうちの1つまたは複数を使用して実現され得る。これらの構成要素は、さらに分割したり、組み合わせたりすることもできる。これらの図のデバイスおよび構成要素は一般に、電子デバイス、PCB、パッケージ化されたモジュール、ICチップ、構成要素、または回路などのハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせを表す。したがって、これらの図は、記載された方法を実装することができる多くの可能なシステムまたは装置のうちのいくつかを示している。
【0155】
本明細書に記載される方法および関連する流れ図に関して、動作が示されおよび/または説明される順序は、限定として解釈されることを意図したものではない。代わりに、説明した方法動作の任意の数または組み合わせを任意の順序で組み合わせて、特定の方法または代替方法を実装できる。説明した方法から動作を省略したり、動作を追加したりすることもできる。さらに、記載された動作は、完全にまたは部分的に重複して実装することができる。
【0156】
ROMセキュリティの態様と実装例
以下では、いくつかの例示的な態様および実装について説明する。
【0157】
例示的な態様1:安全な読み取り専用メモリ(ROM)のための装置であって、複数のROMアドレスに記憶された暗号化されたROMデータを含むROMアレイと、ROMアレイに結合されたROMコントローラとを備え、ROMコントローラは、複数のROMアドレスに基づいて暗号化されたROMデータに対して復号動作を実行するように構成された暗号化回路と、暗号化回路とROMアレイに結合されたROMアクセスインターフェースとを含み、ROMアクセスインターフェースは、暗号化されたROMデータに対応するROMアドレスに基づいてROMアレイから暗号化されたROMデータを読み取り、暗号化回路を使用して、暗号化されたROMデータを復号することにより、復号されたROMデータを生成し、復号されたROMデータを相互接続に転送するように構成される。
【0158】
例示的な態様2:ROMアクセスインターフェースは、暗号化されたROMデータに対応するROMアドレスを使用して、暗号化されたROMデータを復号することにより、復号されたROMデータを生成するように構成される、例示的な態様1の装置。
【0159】
例示的な態様3:暗号化回路は、複数のROMアドレスのうちのそれぞれのROMアドレスに基づいて、暗号化されたROMデータのそれぞれのROMデータに対して復号動作を実行するように構成され、それぞれのROMアドレスは、ROMアレイ内のそれぞれのROMデータを特定するように構成される、例示的な態様1または例示的な態様2の装置。
【0160】
例示的な態様4:ROMアクセスインターフェースは、起動手順のための復号されたROMデータとして、暗号化されたROMデータへのアクセスを提供するように構成された有限状態マシン(FSM)を備える、前述の例示的な態様のいずれか1つの装置。FSMは、複数の事前定義された状態のうちの対応する状態を常にとるシステムであり、システムはFSMへの入力に基づいてある状態から別の状態に遷移する。
【0161】
例示的な態様5:ROMコントローラは、ROMアドレスを調整することにより調整されたROMアドレスを生成するように構成されたアドレス調整回路を備え、ROMアクセスインターフェースは、複数のROMアドレスに記憶された暗号化されたROMデータを読み取るために、アドレス調整回路を使用してROMアドレスを調整するように構成される、前述の例示的な態様のいずれか1つの装置。
【0162】
例示的な態様6:アドレス調整回路は、調整されたROMアドレスを生成するために、ROMアドレスの各ROMアドレスの2つ以上のビットを並べ替えるかまたは置換するうちの少なくとも1つを行うように構成される、例示的な態様5の装置。
【0163】
例示的な態様7:暗号化回路は、ROMアドレスに基づいてキーを生成するように構成されたキーストリーム回路と、キーストリーム回路に結合されたデータ組み合わせ回路とを備え、データ組み合わせ回路は、暗号化されたROMデータおよびキーのうちの少なくとも1つのキーに基づいて復号されたROMデータを生成するように構成される、前述の例示的な態様のいずれか1つの装置。
【0164】
例示的な態様8:暗号化回路は、暗号化されたROMデータの2ビット以上を拡散することにより、操作された暗号化されたROMデータを生成するように構成された操作回路を備え、データ組み合わせ回路は、論理演算を使用して少なくとも1つのキーのビットと操作された暗号化されたROMデータのビットを組み合わせることにより、復号されたROMデータを生成するように構成される、例示的な態様7の装置。
【0165】
例示的な態様9:暗号化されたROMデータは、ROM命令に対応するビットと、ROM命令のチェックコードに対応するビットとを含み、復号されたROMデータは、ROM命令に対応するビットと、ROM命令のチェックコードに対応するビットとを含む、前述の例示的な態様のいずれか1つの装置。
【0166】
例示的な態様10:ROMコントローラは、暗号化回路の出力に結合されたROMチェッカ回路を備え、ROMチェッカ回路は、復号されたROMデータのROM命令に基づいて別のチェックコードを計算し、復号されたROMデータのチェックコードと計算されたチェックコードを含む比較を実行し、比較に基づいて(例えば、チェックコードと計算されたチェックコードの間に一致がない場合に)エラー信号を生成するように構成される、例示的な態様9の装置。
【0167】
例示的な態様11:ROMアレイの複数のROMアドレスに記憶されている暗号化されたROMデータの各暗号化されたROMデータは、複数のROMアドレスに基づく暗号化方式により、ROMアレイの複数のROMアドレスに記憶される暗号化されたROMデータの他の各暗号化されたROMデータと異なっている、例示的な態様9の装置。
【0168】
例示的な態様12:装置はモバイルデバイスを含む、例示的な態様1の装置。
例示的な態様13:安全な読み取り専用メモリ(ROM)のための方法であって、複数のROMアドレスに記憶された暗号化されたROMデータを含むROMアレイに関連するROMアドレスを含むROM読み取り要求を取得することと、ROMアドレスを使用してROMアレイから暗号化されたROMデータを読み取ることと、ROMアドレスを使用して、暗号化されたROMデータを復号することにより復号されたROMデータを生成することと、復号されたROMデータを相互接続に転送することとを含む方法。
【0169】
例示的な態様14:復号することは、ROMアドレスに基づいて少なくとも1つのキーを生成することと、少なくとも1つのキーを暗号化されたROMデータに適用することにより、復号されたROMデータを生成することと、を含む、例示的な態様13の方法。
【0170】
例示的な態様15:適用することは、復号されたROMデータを生成するために、少なくとも1つのキーおよび暗号化されたROMデータを含む論理演算を実行することを含む、例示的な態様14の方法。
【0171】
例示的な態様16:復号することは、論理演算を実行する前に、暗号化されたROMデータのビットを操作することにより、操作されたROMデータを生成することを含み、実行することは、復号されたROMデータを生成するために、少なくとも1つのキーおよび操作されたROMデータを使用して論理演算を実行することを含む、例示的な態様15の方法。
【0172】
例示的な態様17:安全な読み出し専用メモリ(ROM)のためのセキュリティ回路を含む集積回路であって、セキュリティ回路は、複数のROMアドレスにあるROMデータを含むROMアレイと、ROMアレイに結合されたROMコントローラとを含み、ROMコントローラは、複数のROMアドレスのそれぞれのROMアドレスをROMデータのそれぞれのROMデータに暗号的に結び付けるように構成される、集積回路。
【0173】
例示的な態様18:ROMコントローラが、それぞれのROMアドレスを使用してそれぞれのROMデータを復号するように構成された暗号化回路を備える、例示的な態様17の集積回路。
【0174】
例示的な態様19:暗号化回路は、それぞれのROMアドレスに基づいて少なくとも1つのキーを生成し、少なくとも1つのキーを使用してそれぞれのROMデータを復号することにより、復号されたROMデータを生成するように構成される、例示的な態様18の集積回路。
【0175】
例示的な態様20:暗号化回路は、少なくとも1つのキーをそれぞれのROMデータのバージョンに適用することによって、少なくとも1つのキーを使用して復号されたROMデータを生成するように構成され、バージョンは、ROMアレイに記憶されているそれぞれのROMデータの操作されたバージョンに対応する、例示的な態様19の集積回路。
【0176】
例示的な態様21:ROMコントローラは、ROMビットと、それぞれのROMアドレスに対応するそれぞれのROMデータを共同で形成するエラー訂正コード(ECC)ビットとの組み合わせを処理するように構成される、例示的な態様17から20のいずれか1つの集積回路。
【0177】
例示的な態様22:ROMコントローラは、ROMアレイに結合された整合性チェッカ回路を含み、整合性チェッカ回路は、ROMデータに適用されるチェック手順と予想ダイジェストとに基づいてROMアレイへのアクセスをゲートするように構成される(例えば、チェック手順によって一致が得られた場合に限り、ROMアレイへのアクセス(つまり、ROMアレイからデータを読み取るサービス要求)を認可する)、例示的な態様17から21のいずれか1つの集積回路。
【0178】
例示的な態様23:整合性チェッカ回路は、ROMアレイから予想ダイジェストを抽出し、抽出された予想ダイジェストとROMアレイのROMデータに基づいて計算されたダイジェストとを含む比較を実行し、比較に基づいてROMアレイへのアクセスを認可または拒否する(例えば、抽出された予想ダイジェストとROMアレイのROMデータに基づいて計算されたダイジェストとの間に一致がある場合は認可するが、そうでない場合は拒否する)ことによってチェック手順を実装するように構成される、例示的な態様22の集積回路。
【0179】
例示的な態様24:安全な読み取り専用メモリ(ROM)のための装置であって、複数のROMアドレスに記憶された暗号化されたROMデータを含むROMアレイと、ROMアレイに結合されたROMコントローラとを備え、ROMコントローラは、暗号化されたROMデータに対応するROMアドレスに基づいて、ROMアレイから暗号化されたROMデータを読み取り、暗号化されたROMデータを使用して少なくとも1つのダイジェスト値を取得し、少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいて、ROMアレイへのアクセスをゲートする(例えば、少なくとも1つのダイジェスト値と予想ダイジェストとの間で一致が得られた場合にのみ、ROMアレイへのアクセスを認可するが、それ以外の場合はブロックまたは拒否する)するように構成される、装置。
【0180】
例示的な態様25:ROMコントローラは、ROMアドレスを調整することにより調整されたROMアドレスを生成するように構成されたアドレス調整回路を備え、ROMコントローラは、ROMアドレスを調整することにより調整されたROMアドレスを取得し、調整されたROMアドレスを使用して、アドレス調整回路を使用して複数のROMアドレスに記憶された暗号化されたROMデータを読み取るように構成される、例示的な態様24の装置。
【0181】
例示的な態様26:ROMコントローラは、少なくとも1つのハッシュアルゴリズムを暗号化されたROMデータに適用させることに基づいて、少なくとも1つのダイジェスト値を取得するように構成される、例示的な態様24または例示的な態様25の装置。
【0182】
例示的な態様27:ROMアレイおよびROMコントローラは第1の周辺デバイスを備え、第2の周辺デバイスは、1つまたは複数のハッシュアルゴリズムを実装するように構成され、ROMコントローラは、第2の周辺デバイスと通信することによって少なくとも1つのダイジェスト値を取得するように構成される、例示的な態様26の装置。
【0183】
例示的な態様28:ROMコントローラは、ROMアレイから予想ダイジェスト値を読み取るように構成される、例示的な態様24から27のいずれか1つの装置。
【0184】
例示的な態様29:予想ダイジェスト値は、暗号化されていない形式でROMアレイに記憶される、例示的な態様28の装置。
【0185】
例示的な態様30:予想ダイジェスト値は、決定可能なROMアドレスに対応する所定の位置でROMアレイに記憶される、例示的な態様28の装置。
【0186】
例示的な態様31:少なくとも1つのダイジェスト値が予想ダイジェスト値と一致することに応答して、ROMコントローラは、ROMアレイへのアクセスを認可することにより、暗号化されたROMデータを使用して起動手順が実行されることを可能にするように構成される、例示的な態様24から30のいずれか1つの装置。
【0187】
例示的な態様32:少なくとも1つのダイジェスト値が予想ダイジェスト値と一致しないことに応答して、ROMコントローラは、ROMアレイへのアクセスをブロックすることにより、暗号化されたROMデータを使用して起動手順が実行されるのを防ぎ、アラーム指示を送信するように構成される、例示的な態様24から31のいずれか1つの装置。
【0188】
例示的な態様33:暗号化されたROMデータの各それぞれの暗号化されたROMデータは、ROMアレイ全体にわたって、暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと異なる、例示的な態様24から32のいずれか1つの装置。
【0189】
例示的な態様34:暗号化されたROMデータの生成に関連する暗号化キーは、各それぞれの暗号化されたROMデータがROMアレイ全体にわたって暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと確実に異なるように選択される、例示的な態様33の装置。例えば、1つまたは複数の暗号化キーは、同じROMデータの数を減らすために(例えば、ゼロ、または少なくとも閾値未満になるように)実行される反復プロセスで1つまたは複数の暗号化キーを使用することができる。
【0190】
例示的な態様35:暗号化されたROMデータの生成に関連する暗号化アルゴリズムは、各それぞれの暗号化されたROMデータがROMアレイ全体にわたって暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと確実に異なるように選択される、例示的な態様33の装置。例えば、1つまたは複数の暗号化アルゴリズムは、同じROMデータの数を減らすために(例えば、ゼロになるか、少なくとも閾値未満になるように)実行される反復プロセスで使用され得る。
【0191】
例示的な態様36:安全な読み取り専用メモリ(ROM)のための方法であって、暗号化されたROMデータに対応するROMアドレスに基づいて、ROMアレイから暗号化されたROMデータを読み取ることを含み、ROMアレイは、複数のROMアドレスにある暗号化されたROMデータを記憶し、方法はさらに、暗号化されたROMデータを使用して少なくとも1つのダイジェスト値を取得することと、少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいて、ROMアレイへのアクセスをゲートすることとを含む、方法。
【0192】
例示的な態様37:読み取ることは、調整されたROMアドレスを生成するためにROMアドレスを調整することと、調整されたROMアドレスを使用して、ROMアレイから暗号化されたROMデータを読み取ることとを含む、例示的な態様36の方法。
【0193】
例示的な態様38:ゲートすることは、少なくとも1つのダイジェスト値が予想ダイジェスト値と一致しないことに応答して、ROMアレイへのアクセスをブロックすることを含む、例示的な態様36または例示的な態様37の方法。
【0194】
例示的な態様39:読み出し専用メモリ(ROM)を備えたセキュリティ回路を含む集積回路であって、セキュリティ回路は、複数の暗号化されたROMラインを含むROMアレイを備え、複数の暗号化されたROMラインの各暗号化されたROMラインは、複数の暗号化されたROMラインの他の各暗号化されたROMラインと異なり、セキュリティ回路はさらに、ROMアレイに結合され、複数の暗号化されたROMラインに基づいて生成される少なくとも1つのダイジェスト値に応答してROMアレイへのアクセスを制御するように構成される、ROMコントローラを備える、集積回路。
【0195】
例示的な態様40:複数の暗号化されたROMラインに基づいて少なくとも1つのダイジェスト値を計算するように構成されたダイジェスト計算回路をさらに備える、例示的な態様39の集積回路。
【0196】
例示的な態様41:ダイジェスト計算回路は、ROMアレイおよびROMコントローラを含むROMブロックの一部である、例示的な態様40の集積回路。
【0197】
例示的な態様42:暗号化キーは、複数の暗号化されたROMラインが確実に重複しないように選択される、例示的な態様39から41のいずれか1つの集積回路。例えば、少なくとも1つの暗号化キー(事前定義されたものであるか、何らかの方法で取得されたものであるかにかかわらず)は、重複する暗号化されたROMラインの数を(例えば、ゼロに、または少なくとも閾値未満に)減らすために実行される反復プロセスで使用できる。
【0198】
例示的な態様43:暗号化アルゴリズムは、複数の暗号化されたROMラインが確実に重複しないように選択される、例示的な態様39から42のいずれか1つの集積回路。例えば、少なくとも1つの暗号化アルゴリズム(事前に定義されたものであるか、何らかの方法で取得されたものであるかにかかわらず)は、重複する暗号化されたROMラインの数を(例えば、ゼロに、または少なくとも閾値未満に)減らすために実行される反復プロセスで使用できる。
【0199】
例示的な態様44:読み取り専用メモリ(ROM)の復元性を備えた整合性チェックのための方法であって、暗号化アルゴリズムおよび暗号化キーをROMの複数のラインに適用することにより、複数の暗号化されたROMラインの第1のセットを生成することと、複数の暗号化されたROMラインのうちの重複する暗号化されたROMラインの数量を決定することと、上記数量に基づいて、暗号化アルゴリズムまたは暗号化キーのうちの少なくとも1つを変更することと、変更された少なくとも1つの暗号化アルゴリズムまたは暗号化キーをROMの複数のラインに適用することにより、複数の暗号化されたROMラインの第2のセットを生成することとを含む方法。
【0200】
例示的な態様45:上記の変更すること、少なくとも1つの変更された暗号化アルゴリズムまたは暗号化キーについての上記の適用すること、および数量がゼロになるまで上記の決定することを繰り返すことをさらに含む、例示的な態様44の方法。
【0201】
例示的な態様46:ROMコントローラは、少なくとも1つのダイジェスト値をROMの外部の構成要素に提供するように構成される、例示的な態様24から35のいずれか1つの装置。
【0202】
ROMセキュリティのための電子デバイスの例
図14は、1つまたは複数の記載された態様に従ってROMセキュリティを実装することができる例示的な電子デバイス1400のさまざまな構成要素を示す。電子デバイス1400は、固定、モバイル、スタンドアロン、または組み込みデバイスのいずれか1つまたは組み合わせとして、消費者、コンピュータ、ポータブル、ユーザ、サーバ、通信、電話、ナビゲーション、ゲーム、オーディオ、カメラ、メッセージング、メディア再生、および/または装置102として
図1に示されるスマートフォンなど他のタイプの電子デバイス1400の任意の形態で実装できる。図示された構成要素のうちの1つまたは複数は、個別構成要素として、または電子デバイス1400の少なくとも1つの集積回路上の集積構成要素として実現され得る。
【0203】
電子デバイス1400は、受信データ、送信データ、または上記で特定された他の情報などのデバイスデータ1404の有線および/またはワイヤレス通信を可能にする1つまたは複数の通信トランシーバ1402を含むことができる。例示的な通信トランシーバ1402には、近距離通信(NFC)トランシーバ、さまざまなIEEE802.15(Bluetooth(登録商標))標準に準拠したワイヤレスパーソナルエリアネットワーク(PAN)(WPAN)無線、さまざまなIEEE802.11(WiFi(登録商標))標準のいずれかに準拠したワイヤレスローカルエリアネットワーク(LAN)(WLAN)無線、携帯電話用のワイヤレスワイドエリアネットワーク(WAN)(WWAN)無線(例えば、3GPP(登録商標)準拠のもの)、さまざまなIEEE802.16(WiMAX(登録商標))標準に準拠したワイヤレスメトロポリタンエリアネットワーク(MAN)(WMAN)無線、赤外線データ協会(IrDA)プロトコルに準拠した赤外線(IR)トランシーバ、有線ローカルエリアネットワーク(LAN)(WLAN)イーサネット(登録商標)トランシーバが含まれる。
【0204】
電子デバイス1400はまた、任意のタイプのデータ、メディアコンテンツ、および/または他の入力を受信することができる1つまたは複数のデータ入力ポート1406を含んでもよく、例えば、ユーザが選択可能な入力、メッセージ、アプリケーション、音楽、テレビコンテンツ、録画されたビデオコンテンツ、およびコンテンツおよび/またはデータソースから受信したその他のタイプのオーディオ、ビデオ、および/または画像データなどであり、マイクやカメラなどのセンサが含まれる。データ入力ポート1406は、USBポート、同軸ケーブルポート、光ファイバ相互接続またはケーブル配線用の光ファイバポート、およびフラッシュメモリ、DVD、CDなど用の他のシリアルまたはパラレルコネクタ(内部コネクタを含む)を含み得る。これらのデータ入力ポート1406は、電子デバイスを構成要素、周辺機器、またはキーボード、マイクロフォン、カメラ、または他のセンサなどの付属品に結合するために使用され得る。
【0205】
この例の電子デバイス1400は、少なくとも1つのプロセッサ1408(例えば、アプリケーションプロセッサ、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラなどのうちの任意の1つまたは複数)を含み、これは、デバイスの動作を制御するためにコンピュータ実行可能命令を処理(例えば実行)する、プロセッサとメモリを組み合わせたシステム(例えば、SoCの一部として実装される)を含むことができる。プロセッサ1408は、アプリケーションプロセッサ、組み込みコントローラ、マイクロコントローラ、セキュリティプロセッサ、人工知能(AI)アクセラレータなどとして実装され得る。一般に、プロセッサまたは処理システムは、少なくとも部分的にハードウェアで実装でき、これには、集積回路またはオンチップシステム、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブル論理デバイス(CPLD)、およびシリコンおよび/またはその他の素材でのその他の実装の構成要素が含まれ得る。
【0206】
代替的にまたは追加的に、電子デバイス1400は、電子回路のいずれか1つまたは組み合わせで実装することができ、これには、一般に(電子回路1410として)1410で示される、処理および制御回路に関連して実装されるソフトウェア、ハードウェア、ファームウェア、または固定論理回路が含まれ得る。この電子回路1410は、実行可能モジュールまたはハードウェアベースのモジュール(
図14には示されていない)を実装することができ、例えば、コンピュータ可読媒体に記憶された処理/コンピュータ実行可能命令を通じて、論理回路および/またはハードウェア(例えば、FPGAなど)を通じてなどである。
【0207】
図示されていないが、電子デバイス1400は、システムバス、相互接続、クロスバー、データ転送システム、またはデバイス内のさまざまな構成要素を結合する他のスイッチファブリックを含むことができる。システムバスまたは相互接続には、異なるバス構造の任意の1つまたは組み合わせを含めることができ、メモリバスやメモリコントローラ、周辺バス、ユニバーサルシリアルバス、および/またはさまざまなバスアーキテクチャのいずれかを利用するプロセッサやローカルバスなどである。
【0208】
電子デバイス1400はまた、データ記憶を可能にする1つまたは複数のメモリデバイス1412を含み、その例には、ランダムアクセスメモリ(RAM)、不揮発性メモリ(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、EPROM、EEPROM)、およびディスク記憶デバイスが含まれる。したがって、メモリデバイス1412は、システムの異なる論理記憶レベルにわたって、また異なる物理構成要素に分散させることができる。メモリデバイス1412は、デバイスデータ1404、他のタイプのコードおよび/またはデータ、およびさまざまなデバイスアプリケーション1420(例えば、ソフトウェアアプリケーションまたはプログラム)を記憶するデータ記憶メカニズムを提供する。例えば、オペレーティングシステム1414は、メモリデバイス1412内にソフトウェア命令として維持され、プロセッサ1408によって実行され得る。
【0209】
いくつかの実施形態では、電子デバイス1400は、オーディオおよび/またはビデオ処理システム1416も含み、それは、オーディオデータを処理し、および/またはオーディオデータおよびビデオデータをオーディオシステム1418および/または表示システム1422(例えば、スマートフォンまたはカメラのビデオバッファまたは画面)に渡す。オーディオシステム1418および/または表示システム1422は、オーディオ、ビデオ、ディスプレイ、および/または画像データを処理、表示、および/またはレンダリングする任意のデバイスを含み得る。表示データおよびオーディオ信号は、RF(無線周波数)リンク、Sビデオリンク、HDMI(登録商標)(高解像度マルチメディアインターフェース)、コンポジットビデオリンク、構成要素ビデオリンク、DVI(デジタルビデオインターフェース)、アナログオーディオ接続、ビデオバス、またはメディアデータポート1424などの他の同様の通信リンクを介してオーディオ構成要素および/または表示構成要素に通信できる。いくつかの実装では、オーディオシステム1418および/または表示システム1422は、電子デバイス1400の外部構成要素または別個の構成要素である。あるいは、表示システム1422は、例えば、統合されたタッチインターフェースの一部など、例示的な電子デバイス1400の統合された構成要素であってもよい。
【0210】
図14の電子デバイス1400は、
図1の装置102の実装例、
図4の分析344を実装できるデバイスの実装例、
図9から13の方法のいずれかを実装できるデバイスの実装例である。したがって、電子デバイス1400は、セキュリティ回路106を含むことができ、セキュリティ回路106は、別個のICチップであってもよいし、プロセッサ1408、電子回路1410、またはメモリデバイス1412などの別のICチップもしくはデバイスの一部として含まれてもよい。したがって、図示された構成要素のうちの1つまたは複数は、SoCのような同じICチップ上に、または少なくとも単一のPCB上に統合され得る。
【0211】
図示されるように、電子デバイス1400は、追加的にまたは代替的に、互換性分析モジュール340を含み得る。例えば、メモリデバイス1412は互換性分析モジュール340を記憶することができ、プロセッサ1408は互換性分析モジュール340を実行することができる。したがって、メモリデバイス1412は、周辺デバイス設計コード342、インターフェース仕様332なども記憶することができる。電子デバイス1400は、さらに、またはその代わりに、
図10の反復プロセスを実装してもよい。さらに、ROM118/206は、例えば、セキュリティ回路106の一部として、
図4から6の構成要素のいずれかを含むことができる。さらに、ROM118/206は、セキュリティ回路106の一部として、またはセキュリティ回路106とは別個に、上述した電子デバイス1400の構成要素のいずれかに実装することができる。したがって、本明細書で説明するROMセキュリティの原理は、
図14の電子デバイス1400によって、またはそれと関連して実装することができる。
【0212】
文脈により別段の指示がない限り、本明細書における「または」という言葉の使用は、「包括的なまたは」、または「または」という言葉によってリンクされている1つまたは複数の項目の包含または適用を許可する用語の使用とみなされ得る(例えば、「AまたはB」という語句は、「A」のみを許可するもの、「B」のみを許可するもの、または「A」と「B」の両方を許可するものとして解釈され得る)。また、本明細書で使用される場合、項目のリストの「少なくとも1つ」を指す語句は、単一のメンバーを含むそれらの項目の任意の組み合わせを指す。例えば、「a、b、またはcの少なくとも1つ」には、a、b、c、a-b、a-c、b-c、およびa-b-cだけでなく、同じ要素の複数の組み合わせも含まれる(例えば、a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、c-c-c、またはa、b、およびcのその他の順序)。さらに、添付の図に表される項目および本明細書で論じられる用語は、1つまたは複数の項目または用語を示す場合があり、したがって、本明細書では単一または複数の形式の項目および用語を互換的に参照することができる。ROMセキュリティの実装は、特定の機能および/または方法に特有の言語で説明されているが、添付の特許請求の範囲の主題は、必ずしも記載された特定の機能または方法に限定されるわけではない。むしろ、特定の機能および方法は、ROMセキュリティの実装例として開示されている。
【手続補正書】
【提出日】2023-12-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
安全な読み取り専用メモリ(ROM)のための装置であって、
複数のROMアドレスに記憶された暗号化されたROMデータを含むROMアレイと、
前記ROMアレイに結合されたROMコントローラとを備え、前記ROMコントローラは、
前記暗号化されたROMデータに対応するROMアドレスに基づいて、前記ROMアレイから暗号化されたROMデータを読み取り、
前記暗号化されたROMデータを使用して少なくとも1つのダイジェスト値を取得し、
前記少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいて、前記ROMアレイへのアクセスをゲートするように構成される、装置。
【請求項2】
前記ROMコントローラは、ROMアドレスを調整することにより調整されたROMアドレスを生成するように構成されたアドレス調整回路を含み、
前記ROMコントローラは、前記複数のROMアドレスに記憶された前記暗号化されたROMデータを読み取るために、前記アドレス調整回路を使用して前記ROMアドレスを調整するように構成される、請求項1に記載の装置。
【請求項3】
前記ROMコントローラは、少なくとも1つのハッシュアルゴリズムを前記暗号化されたROMデータに適用させることに基づいて、前記少なくとも1つのダイジェスト値を取得するように構成される、請求項1または請求項2に記載の装置。
【請求項4】
前記ROMアレイおよび前記ROMコントローラは第1の周辺デバイスを備え、
第2の周辺デバイスは、1つまたは複数のハッシュアルゴリズムを実装するように構成され、
前記ROMコントローラは、前記第2の周辺デバイスと通信することによって前記少なくとも1つのダイジェスト値を取得するように構成される、請求項3に記載の装置。
【請求項5】
前記ROMコントローラは、前記ROMアレイから前記予想ダイジェスト値を読み取るように構成される
、請求項
1または請求項2に記載の装置。
【請求項6】
前記予想ダイジェスト値は、暗号化されていない形式で前記ROMアレイに記憶される、請求項5に記載の装置。
【請求項7】
前記ROMコントローラは、前記少なくとも1つのダイジェスト値を前記ROMの外部の構成要素に提供するように構成される
、請求項
1または請求項2に記載の装置。
【請求項8】
前記少なくとも1つのダイジェスト値が前記予想ダイジェスト値と一致することに応答して、前記ROMコントローラは、前記ROMアレイへのアクセスを認可することにより、前記暗号化されたROMデータを使用して起動手順が実行されることを可能にするように構成される
、請求項
1または請求項2に記載の装置。
【請求項9】
前記少なくとも1つのダイジェスト値が前記予想ダイジェスト値と一致しないことに応答して、前記ROMコントローラは、
アラーム指示を送信しおよび/または
前記ROMアレイへのアクセスをブロックすることにより、前記暗号化されたROMデータを使用して起動手順が実行されるのを防ぐように構成される
、請求項
1または請求項2に記載の装置。
【請求項10】
前記暗号化されたROMデータの各それぞれの暗号化されたROMデータは、前記ROMアレイ全体にわたって前記暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと異なる
、請求項
1または請求項2に記載の装置。
【請求項11】
前記暗号化されたROMデータの生成に関連する暗号化キーは、各それぞれの暗号化されたROMデータが、前記ROMアレイ全体にわたって前記暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと確実に異なるように選択される、請求項10に記載の装置。
【請求項12】
前記暗号化されたROMデータの生成に関連する暗号化アルゴリズムは、各それぞれの暗号化されたROMデータが、前記ROMアレイ全体にわたって前記暗号化されたROMデータの他の各それぞれの暗号化されたROMデータと確実に異なるように選択される、請求項10に記載の装置。
【請求項13】
安全な読み取り専用メモリ(ROM)のための方法であって、
暗号化されたROMデータに対応するROMアドレスに基づいて、前記暗号化されたROMデータをROMアレイから読み取ることを含み、前記ROMアレイは、複数のROMアドレスに暗号化されたROMデータを記憶し、前記方法はさらに、
前記暗号化されたROMデータを使用して少なくとも1つのダイジェスト値を取得することと、
前記少なくとも1つのダイジェスト値および予想ダイジェスト値に基づいて前記ROMアレイへのアクセスをゲートすることとを含む、方法。
【請求項14】
前記読み取ることは、
前記ROMアドレスを調整することにより、調整されたROMアドレスを生成することと、
前記調整されたROMアドレスを使用して、前記ROMアレイから前記暗号化されたROMデータを読み取ることとを含む、請求項13に記載の方法。
【請求項15】
前記ゲートすることは、
前記少なくとも1つのダイジェスト値が前記予想ダイジェスト値と一致しないことに応答して、前記ROMアレイへのアクセスをブロックすることを含む、請求項13または
請求項14に記載の方法。
【国際調査報告】