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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-27
(54)【発明の名称】安全な暗号化コプロセッサ
(51)【国際特許分類】
   G06F 21/72 20130101AFI20240319BHJP
   H04L 9/10 20060101ALI20240319BHJP
   G06F 21/60 20130101ALI20240319BHJP
【FI】
G06F21/72
H04L9/10 A
G06F21/60 320
G06F21/60
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023557214
(86)(22)【出願日】2022-04-05
(85)【翻訳文提出日】2023-11-14
(86)【国際出願番号】 US2022071557
(87)【国際公開番号】W WO2022217229
(87)【国際公開日】2022-10-13
(31)【優先権主張番号】63/171,554
(32)【優先日】2021-04-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
2.PYTHON
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ワグナー,フィリップ
(72)【発明者】
【氏名】チャドウィック,グレゴリー・アンドリュー
(72)【発明者】
【氏名】チェン,ティモシー・ジェイ
(72)【発明者】
【氏名】シャフナー,ミヒャエル・ステファノ・フリッツ
(72)【発明者】
【氏名】ゴリ,クリストファー
(72)【発明者】
【氏名】スウォーブリック,ルパート・ジェームズ
(57)【要約】
集積回路(IC)チップを備えた装置は、暗号化コプロセッサへの攻撃に対する保護を提供できる。攻撃者は、例えば秘密暗号化キーや命令コードを取得することによって、暗号化コプロセッサを侵害し得る。これらの攻撃に対抗するために、実装例では情報を暗号化された形式で記憶する。この情報は、状態レジスタにあるデータ、命令コード、または中間値に対応し得る。このような記憶された情報を安全かつ迅速に「消去」するために、暗号化コプロセッサは暗号化キーを変更できる。他の実装例では、乱数には、異なるタイプの手順に適した2つの異なるレベルの「ランダム性品質」が提供される。暗号化コプロセッサは、暗号化動作中の高速アクセスのために、2つの異なる品質レベルに従ってランダム化されたビットを記憶する2つのレジスタを含むことができる。想定される攻撃をさらに阻止するために、暗号化コプロセッサは、暗号化動作を実行するために実行される命令コードのコンテンツまたは使用法を確認できる。
【特許請求の範囲】
【請求項1】
暗号化コプロセッサのための方法であって、
前記暗号化コプロセッサでデジタル情報を取得することと、
前記暗号化コプロセッサが、少なくとも1つのスクランブルキーを使用して前記デジタル情報をスクランブルすることにより、スクランブルされたデジタル情報を生成することと、
前記暗号化コプロセッサが、前記スクランブルされたデジタル情報を少なくとも1つのメモリに記憶することと、
前記暗号化コプロセッサが、前記少なくとも1つのスクランブルキーを変更することによって、前記デジタル情報へのアクセスを防止することとを含む、方法。
【請求項2】
前記デジタル情報はデータを含み、
前記少なくとも1つのスクランブルキーはデータスクランブルキーを含み、
前記スクランブルされたデジタル情報は、スクランブルされたデータを含み、
前記少なくとも1つのメモリはデータメモリを含む、請求項1に記載の方法。
【請求項3】
前記デジタル情報は命令コードを含み、
前記少なくとも1つのスクランブルキーはコードスクランブルキーを含み、
前記スクランブルされたデジタル情報は、スクランブルされた命令コードを含み、
前記少なくとも1つのメモリは命令メモリを含む、請求項1または請求項2に記載の方法。
【請求項4】
前記少なくとも1つのスクランブルキーは、少なくとも1つのキーレジスタに記憶され、
前記防止することは、前記少なくとも1つのキーレジスタをランダムビットで上書きすることを含む、先行する請求項のいずれか1項に記載の方法。
【請求項5】
少なくとも1つのレジスタをランダムビットで上書きすることによって、前記少なくとも1つのレジスタに記憶された中間値へのアクセスを防止することをさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項6】
前記少なくとも1つのキーレジスタまたは前記少なくとも1つのレジスタ内の前記ランダムビットを定数値で上書きすることによって安全な消去を実行することをさらに含む、請求項4または5に記載の方法。
【請求項7】
前記取得することは、ホストプロセッサから前記デジタル情報を受信することを含み、
前記ホストプロセッサおよび前記暗号化コプロセッサは、少なくとも1つの集積回路のためのセキュリティ回路の少なくとも一部を含む、先行する請求項のいずれか1項に記載の方法。
【請求項8】
暗号化コプロセッサのための方法であって、
前記暗号化コプロセッサが、第1のランダム性の品質に対応する複数の第1のビットを第1のレジスタに記憶することと、
前記暗号化コプロセッサが、前記第1のランダム性の品質とは異なる第2のランダム性の品質に対応する複数の第2のビットを第2のレジスタに記憶することと、
前記暗号化コプロセッサが、少なくとも1つの暗号化動作に基づいて、前記第1のレジスタから前記複数の第1のビットを、または前記第2のレジスタから前記複数の第2のビットを選択的に検索することとを含む、方法。
【請求項9】
前記選択的に検索することは、
前記少なくとも1つの暗号化動作に関連するランダム性の品質に基づいて、前記第1のレジスタから前記複数の第1のビット、または前記第2のレジスタから前記複数の第2のビットを選択的に検索することを含む、請求項8に記載の方法。
【請求項10】
前記第1のランダム性の品質は前記第2のランダム性の品質よりも高く、
前記方法は、
乱数の非決定的ソースから前記複数の第1のビットを取得することと、
乱数の決定的ソースから前記複数の第2のビットを取得することとをさらに含む、請求項8または請求項9に記載の方法。
【請求項11】
乱数の前記非決定的ソースはアナログベースのソースを含み、
乱数の前記決定的ソースは、擬似乱数発生器を含むデジタルベースのソースを含む、請求項10に記載の方法。
【請求項12】
前記複数の第1のビットが使用される前に、前記複数の第1のビットを前記第1のレジスタにプリフェッチすることをさらに含む、請求項8から11のいずれか1項に記載の方法。
【請求項13】
暗号化コプロセッサのための方法であって、
前記暗号化コプロセッサで命令コードを取得することと、
前記暗号化コプロセッサが、前記命令コードに基づいて少なくとも1つのパラメータを生成することと、
前記暗号化コプロセッサが、前記少なくとも1つのパラメータを別の構成要素に提供することにより、前記別の構成要素が前記暗号化コプロセッサに対して前記命令コードを確認できるようにすることとを含む、方法。
【請求項14】
前記少なくとも1つのパラメータはチェックサムを含み、
前記生成することは、前記命令コードに対して前記チェックサムを計算することを含み、
前記提供することは、前記チェックサムを前記別の構成要素に提供することにより、前記別の構成要素が前記チェックサムを使用して前記暗号化コプロセッサにおける前記命令コードの整合性を確認できるようにすることを含む、請求項13に記載の方法。
【請求項15】
前記少なくとも1つのパラメータは命令カウントを含み、
前記生成することは、前記命令コードの実行された命令の量を追跡することにより前記命令カウントを生成することを含み、
前記提供することは、前記命令カウントを前記別の構成要素に提供することにより、前記別の構成要素が前記命令カウントを使用して前記暗号化コプロセッサによる前記命令コードの実行を確認できるようにすることを含む、請求項13または請求項14に記載の方法。
【請求項16】
前記提供することは、ホストプロセッサを含む前記別の構成要素によってアクセス可能なレジスタ内の前記少なくとも1つのパラメータを公開することを含み、
前記ホストプロセッサおよび前記暗号化コプロセッサは、集積回路のセキュリティ回路の少なくとも一部を含む、請求項13から15のいずれか1項に記載の方法。
【請求項17】
先行する請求項のいずれか1項に記載の方法を実行するように構成された暗号化コプロセッサを含む、装置。
【発明の詳細な説明】
【背景技術】
【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)方式は、物理的な攻撃を含む多くの攻撃に対抗できる。RoTシリコンは、セキュリティ機能を提供する集積回路で実現できる。場合によっては、シリコンRoTチップには暗号化プロセッサまたはコプロセッサが含まれており、暗号化キーや命令コードなどの情報を読み取ろうとしたり、暗号化手順を侵害しようとしたりする可能性のある悪意のある者による物理的な攻撃を受ける。これらの物理的攻撃は、暗号化コプロセッサが「停止」している間、または暗号化コプロセッサが暗号化手順を実行している間に実行され得る。
【0012】
しかし、暗号化コプロセッサは、攻撃に耐えるように設計または構築することができる。さらに、暗号処理ブロックまたはモジュールは、セキュリティチップの互換性のある構成要素(例えば、暗号共処理周辺デバイス)として実装することができる。したがって、シリコンRoTチップまたは他のセキュリティ回路は、安全なシステム内のブロックまたはモジュールとして動作する暗号化プロセッサ(例えば、コプロセッサまたはアクセラレータ)を含むことができる。このプロセッサは、例えば、Rivest-Shamir-Adleman(RSA)または楕円曲線デジタル署名アルゴリズム(ECDSA)を使用したメッセージ署名などの非対称暗号化を提供するために使用できる。いくつかの実装では、暗号化プロセッサは、非対称暗号化のための「特殊な」命令および機能装置を有する汎用プロセッサで実現することができる。例えば、暗号化動作に適合した機能には、広い(例えば256ビット)レジスタファイル、算術論理演算装置(ALU)、および積和演算(MAC)装置が含まれ得る。これらの回路は、非対称暗号化の一部の形式で使用される広い整数の高速処理を提供できる。暗号化プロセッサの設計を簡素化して、性能ターゲットを達成しながら攻撃対象領域を減らすことができる。暗号化プロセッサは、対称暗号化動作にも使用でき、またはその代わりに使用できる。
【0013】
シリコンRoTチップまたは他のセキュリティ回路内の暗号化コプロセッサを保護するために、暗号化コプロセッサに記憶される情報を暗号化することができる。情報の暗号化は、ここで使用されるより一般的な用語の一例であり、「不正アクセスから情報を保護する」という意味である。「不正アクセスからの情報の保護」の他の例には、暗号化キーを削除することによって暗号化された情報にアクセスできないようにすること、2つ以上のレベルのランダム化品質に従ってランダム化された複数のビットを暗号化動作に効率的に提供すること、および/または実行可能コードの確認を容易にすることが含まれる。この情報は、データ、命令コード、状態レジスタにある中間値などに対応し得る。本文書では、暗号化キーを変更することで、そのような記憶された情報を安全かつ迅速に「消去」する技術について説明する。一部の暗号化手順では、1つまたは複数の乱数を使用して暗号化動作を実行する。本文書は、異なるタイプの手順に適した2つの異なるレベルの「ランダム性の品質」(本明細書では「ランダム性の品質」とも呼ばれる)を持つ乱数を提供するための技術について説明する。ランダム性の品質は、乱数の分布から導出できる数値的なランダム性値(例えば、エントロピー値)であってもよい。一連の乱数(ビットを含む)の場合、ランダム性の品質は、そのシーケンスの以前の乱数(ビットを含む)の一部またはすべてが与えられた場合に、連続する乱数(ビットを含む)を予測する難しさを示す。さらに、暗号化コプロセッサには、暗号化動作中の高速アクセスのために、2つの異なるランダム性の品質レベルに従ってランダム化されたビットを記憶する2つのレジスタを含めることができる。安全な暗号化コプロセッサの追加の実装例は、暗号化動作を実行するために実行される命令コードのコンテンツまたは使用法の確認に関係する。これらおよび他の説明された技術を実装して、暗号化コプロセッサを攻撃に対してより安全にすることができる。
【0014】
安全な暗号化コプロセッサの装置および技術について、以下の図面を参照して説明する。図面全体を通じて、同様の特徴および構成要素を参照するために同じ番号が使用される。
【図面の簡単な説明】
【0015】
図1】安全な暗号化コプロセッサを実装できるセキュリティ回路を含む集積回路(IC)を備えた例示的な装置を示す。
図2】暗号化共処理ブロックなど、互換性を持って実装できる複数の例示的な周辺デバイスを含む、複数の回路構成要素を含む例示的なセキュリティ回路を示す。
図3-1】他の回路構成要素との互換性をサポートするための少なくとも1つのインターフェースを含む例示的な周辺デバイスを示す。
図3-2】互換性の目的が確実に満たされるように周辺デバイスの設計を分析するアプローチの例を示している。
図3-3】レジスタインターフェースおよび通信信号の例を含む周辺デバイスの例を示す。
図4】特定の暗号化コプロセッサの実装に従った例示的な概略図を示す。
図5】暗号化コプロセッサ内の情報を安全に消去するための方式例を示す。
図6】暗号化コプロセッサの安全な動作をサポートするためにランダム化されたビットを効率的に提供するための方式例を示す。
図7】暗号化コプロセッサによる命令コードの安全な実行を確認するための方式例を示す。
図8】暗号化コプロセッサを保護するための例示的なプロセスを示す流れ図である。
図9】命令コードまたはデータとして実現されるデジタル情報などの記憶された状態を保護する暗号化コプロセッサの例示的なプロセスを示す流れ図である。
図10】暗号化コプロセッサが異なるレベルのランダム性の品質を有するランダム値を利用して、関連する暗号化動作のセキュリティを効率的に保護するための例示的なプロセスを示す流れ図である。
図11】命令コードの確認を可能にすることによって暗号化動作を保護するための暗号化コプロセッサのための例示的なプロセスを示す流れ図である。
図12】命令コードの整合性確認を可能にすることによって暗号化動作を保護するための暗号化コプロセッサのための例示的なプロセスを示す流れ図である。
図13】命令コードの実行確認を可能にすることによって暗号化動作を保護する暗号化コプロセッサの例示的なプロセスを示す流れ図である。
図14】1つまたは複数の記載された態様に従って安全な暗号化コプロセッサを実装することができる例示的な電子デバイスのさまざまな構成要素を示す。
【発明を実施するための形態】
【0016】
詳細な説明
概要
電子デバイスは、通信、安全、および製造など現代社会に重要な貢献をしている。各電子デバイスは、何らかの機能を提供する処理能力を備えた集積回路(IC)に依拠している。これらの機能の多くは重要な性質を有しているため、電子デバイスは保護を提供するセキュリティ回路を備えたICを含み得る。セキュリティ回路は、情報が不用意に公開されたり、一部の機能が有害な方法や不正な方法で使用されたりする可能性を軽減する。セキュリティ回路はさまざまな形式で実現できるが、その1つに信頼のルート(RoT)パラダイムが含まれる。
【0017】
RoTシリコンでは、ハードウェアベースのメカニズムにより、情報への不適切なアクセスの防止、デバイスの不正使用の阻止などの観点から計算の安全性が保たれる。シリコンRoTの原則は、ハードウェアインフラストラクチャとその上で実行されるソフトウェアの両方が、意図した信頼できる状態に維持されるようにするのに役立ち得る。そのために、シリコンRoTは、承認された確認可能なコードを使用して、重要なシステム構成要素が安全に起動することを確認できる。したがって、サーバまたは別の電子デバイスが正しいファームウェアで起動し、ファームウェアが低レベルのマルウェアに感染していないことを保証できる。シリコンRoTは、追加または代替のセキュリティ上の利点を提供できる。例えば、暗号的に固有のマシンIDを提供できる。この固有のIDにより、オペレータは電子デバイスが正規のものであることを確認できる。さらに、暗号化キーやその他の情報を耐改ざん性のサイロに維持できるため、デバイスに物理的にアクセスできる者であっても情報を取得することができなくなり、少なくとも抑止される。ハードウェアに固定されたRoTサービスは、信頼できる改ざん防止監査記録やその他の実行時セキュリティサービスも提供できる。
【0018】
チップ設計者は、セキュリティ機能の提供に重点を置いた個々のICチップにシリコンRoT技術を組み込むことができる。あるいは、RoTシリコンを他の回路と統合することもでき、これには、中央処理装置(CPU)チップまたはパッケージ、グラフィックス処理装置(GPU)チップまたはカード、システムオンチップ(SoC)、メモリ記憶デバイスなどが含まれる。一般に、セキュリティ回路は、ほんの数例を挙げると、サーバのマザーボード、ネットワークカード、クライアントデバイス(例えば、ラップトップやスマートフォン)、消費者向けルータ、モノのインターネット(IoT)デバイス、固定およびポータブルの記憶装置で動作できる。RoTをシリコンに固定することにより、アプリケーションや電子デバイスに関係なく、ハードウェア、ファームウェア、およびソフトウェアのレベル全体で計算のセキュリティが強化される。シリコンRoTは、直接またはネットワーク経由で相互に通信するさまざまなデバイス間のセキュリティも強化する。本文書では、シリコンまたはハードウェアRoT環境を使用してセキュリティおよび回路設計の原則の一部を説明しているが、説明されている原則はセキュリティ回路全般に適用できるため、これは単なる例として行われている。
【0019】
今日の計算環境では、悪意のある者が、多数の攻撃ベクトルを使用して無数のレベルで電子デバイスを攻撃することができる。例えば、インターネット経由で送信されるマルウェアを使用して、ラップトップに記憶されているユーザが保護したい情報を取得しようとする攻撃が行われ得る。また、攻撃には、Wi-Fi(登録商標)ルータやIoTデバイスなどの電子デバイスの輸送中や人目につかない場所での動作中に、電子デバイスの起動に使用されるファームウェアにマルウェアが挿入され得る。別の例として、悪意のある者が電子デバイスを盗み、そのデバイスに対して直接物理的攻撃を実行するのに十分な時間がかかる場合がある。このような直接的な物理的攻撃には、ワイヤの切断、電圧の調査、レーザによる障害の挿入、傾向の観察や情報の推測のためのコードの繰り返し実行などが含まれ得る。
【0020】
したがって、セキュリティ回路は、電子デバイスに対する多種多様な攻撃に対抗するための多様な機能スイートを実装する責任を担うことができる。しかし、セキュリティ回路に対する既存のアプローチは、その場限りで設計されたハードウェアアーキテクチャを採用している。セキュリティ回路の異なる回路部分は、互いに相対的に分離して設計することもできる。その結果、さまざまなセキュリティ脅威に対抗するように設計された回路部分が意図したとおりに相互運用できなくなり、ハードウェアの安全性が低下し得る。さらに、構成要素間の通信が不十分であると、想定される悪意のある者にとって新たな攻撃経路が生まれる。さらに、このその場のアプローチにより、セキュリティ回路の設計およびテスト段階がより困難で、より長く、よりコストがかかるものになる。これにより、セキュリティアーキテクチャの開発時に一部のセキュリティ脅威が無視されたり、不適切に対処されたりし得る。したがって、これらのその場のアーキテクチャでは、多種多様なセキュリティ脅威から電子デバイスを保護することがさらに困難になる。
【0021】
しかし、本文書は、電子デバイスに対するさまざまな形態の攻撃に対抗するための復元性のあるプログラム可能なセキュリティハードウェアを生成できる、適応可能で可撓性フレームワークまたはプラットフォームを提供するアプローチについて説明する。セキュリティ回路の一部の実装では、さまざまな種類の回路、またはさまざまなセキュリティ関連機能を提供する回路部分が、それにもかかわらず確実で一貫したシグナリングを生成する拡張プロトコルを使用して通信する。この通信プロトコルにより、さまざまなセキュリティ関連機能を提供する回路が、指定された設計フレームワークに従ってシームレスに相互作用できるようになる。
【0022】
設計フレームワークおよび通信プロトコルは、互いに別々に設計された回路構成要素であっても、安定した予測可能な相互作用とともに一貫して展開するのに適した「互換性のある」構成要素を生成する。例えば、通信および他の形態の相互作用(例えば、バス、インターフェース、またはメモリなどのリソースの共有)を少なくとも部分的に標準化して、予測可能性および相互運用性の尺度を提供することができる。本明細書で使用される場合、「互換性のある構成要素」には、構成要素が一緒に使用するのに適するように、共通のフレームワークに準拠するように設計された構成要素が含まれる。場合によっては、互換性により、集積回路チップの2つ以上のセキュリティ関連構成要素間である程度のプラグアンドプレイ機能が提供される。
【0023】
いくつかの実装では、セキュリティ回路は、「集中型」プロセッサおよび相互接続に加えて、複数の周辺デバイスを含む。複数の周辺デバイスのうちの各周辺デバイスは、セキュリティ回路の安全性または適切な機能に寄与する何らかの機能を実行する。したがって、各周辺デバイスは、コアのセキュリティ関連機能またはサポートするセキュリティ関連機能を提供できる。この機能は、データへのアクセスの制御や暗号化動作の実行など、電子デバイスの他の回路および/またはICによる安全な計算を可能にする機能の提供を含む、セキュリティ回路の全体的な目的をサポートする。予測可能性と相互運用性のために、各周辺デバイスは互換性のある構成要素として実現され得る。
【0024】
互換構成要素としておよび/または周辺デバイスとして実装できる回路構成要素の例は、暗号化プロセッサ(暗号化コプロセッサを含む)、ブロック、またはモジュールである。暗号化プロセッサは、システムバスまたは相互接続に結合して、セキュリティ回路または集積回路の別の部分に数学的計算などの暗号機能を提供できる。暗号化プロセッサは、「メイン」プロセッサ、「中央」プロセッサ、または「ホスト」プロセッサをサポートまたは連携して動作する暗号化コプロセッサとして実現することができる。暗号化コプロセッサは、例えば、非対称暗号(例えば、Rivest-Shamir-Adleman(RSA)暗号および/または楕円曲線デジタル署名アルゴリズム(ECDSA)暗号)に使用できる。
【0025】
いくつかの実装では、暗号化コプロセッサを強化して、障害挿入攻撃を検出または撃退することができる。例えば、コプロセッサは、整合性保護のために(39,32)Hsiaoエラー訂正コード(ECC)を使用できる。ECCは、2ビット検出および1ビット訂正とは対照的に3ビットのエラー検出を提供するなど、訂正可能性を排除してエラー検出モードで使用され得る。また、コプロセッサは、特定のビットを選択的に反転して、すべて0のワードとすべて1のワードを有効なコードワードにしない、反転単一エラー訂正および二重エラー検出(SEC-DED)HsiaoECCコードを使用できる。これにより、すべてのビットを0にセットする攻撃、またはすべてのビットを1にセットする攻撃の検出が可能になる。さらに、コプロセッサは、例えば32ビットおよび256ビットの読み取りおよび/または書き込み(または他のビット幅)で機能するデータおよび/または命令メモリ整合性保護を含むことができる。
【0026】
場合によっては、1つまたは複数の構成要素遷移を介した整合性ビットの再計算を(例えば可能な限り)回避するメモリ整合性保護方式を実装することができる。例えば、コプロセッサには、データメモリからレジスタファイルまで完全に整合性が保護されたパスを含めることができる。そうするために、データメモリとレジスタファイルとの間でデータを伝播する伝送パス(例えば、ワイヤおよびバッファを含む)は、データビットおよび関連する保護ビット(例えば、ECCビット)を伝送するのに十分な容量(例えば、適切なビット幅)を含むことができる。また、整合性保護されたデータ(例えば、データ+ECCビット)を消費する整合性保護方式をコプロセッサに組み込むことができる。例えば、整合性保護方式は、データを再符号化することなく、システムバスからデータメモリを介してコプロセッサのレジスタファイルに拡張できる。メモリスクランブルとECCを組み合わせて、挿入された障害を拡散させることを、暗号化コプロセッサのメモリに適用できる。他の例では、復号および/または制御論理を複製することができる。このような複製により、1つのコピーが、生成された出力の反転バージョンを生成し得る。障害検出は、一方の出力が他方の出力の反転と一致することをチェックすることで実現できる。さらに、命令メモリから機能装置への命令の整合性は、上記(例えば、復号論理の複製)と命令メモリからのチェックのためのECCビットとを組み合わせることによって提供することができる。したがって、ECCは復号装置へのパスを保護することができ、複製された復号装置は機能装置へのパスを保護することができる。例えば、複製した命令デコーダを備えたプロセッサは、障害挿入攻撃に対する耐性を提供できる。
【0027】
他の実装では、暗号化コプロセッサは、1つまたは複数の技術を個別にまたは任意の組み合わせで使用して、サイドチャネル漏洩に対して強化することができる。まず、多くの、ほとんどの、あるいはすべての命令は、各命令に1サイクルなど、データに依存しないタイミングを持つことができる。一般に、特定の各命令には1、2、3、またはそれ以上のサイクルがかかり得るが、特定の命令を実行するためのサイクル数は、ターゲットデータに関係なく、特定の命令が実行されるたびに同じになる。第2に、処理ブロック内で維持されるほとんどまたはすべての状態をランダムに安全にクリアできる。第3に、データおよび命令メモリ(SRAMなど)内の情報は、少なくとも1つのメモリスクランブルキーを変更することによってクリアできる。キーの変更により、データや命令コードが漏洩することなく、単一サイクル内ですべてのデータや命令コードにアクセスできなくなる。第4に、情報を消去する領域を個別に、または別個に選択できる。
【0028】
これらの領域には、命令メモリ、データメモリ、およびレジスタに記憶できるほとんどまたはすべての内部状態が含まれ得る。このスクランブルキーの変更により、さまざまなメモリに記憶されている情報を迅速に保護および/またはターゲットを絞った保護が可能になる。命令メモリがコプロセッサの呼び出しにわたって保存される場合、異なるデータを使用して同じ暗号化アルゴリズムを繰り返し(例えば2回以上)実行すると、性能を向上させることができる。データクリアを手動でトリガするには、データをクリアする前にホストソフトウェアが最初にデータを読み取れるようにする必要があり得る。
【0029】
追加または代替の実装では、暗号化コプロセッサは、異なる品質のランダム性をソフトウェア(例えば、コプロセッサを実行する命令コードおよび/またはコプロセッサ上で実行する命令コード)に提供することができる。ランダム性の品質の例としては、低品質のランダム性と比較的高品質のランダム性が挙げられ得る。比較的低品質のランダム性は、例えば、ブラインド/マスキングやアプリケーションの制御フローのランダム化に使用され得る。一部の公開暗号化アルゴリズムには標準が公開されているため、比較的高品質のランダム性は、例えば、暗号化ユースケースの共通基準認定要件を満たすために使用され得る。異なる品質のランダム性に従って生成されたランダム値は、別個のレジスタに記憶され、および/またはプリフェッチされるか、あるいはランダムビットが使用されるときに準備できるように事前に決定され得る。より高いランダム化品質に関連付けられたランダムビットは、取得に多くのエネルギーまたは時間を必要とし得るため、2つの異なるレベルのランダム性の品質を利用することで、暗号化コプロセッサは、暗号化動作に応じて、電力効率または実行速度と適切なレベルのセキュリティのバランスをとることができる。
【0030】
暗号化コプロセッサは、異なるおよび/または補完的なセキュリティ機能を備えた他の実装を提供することができる。例えば、コプロセッサは、例えば命令メモリに書き込まれた、または書き込まれているすべての命令コード(または命令データの指定された部分)に対して計算されたチェックサムをホストプロセッサに提供することができる。これにより、ホストは命令コードのコンテンツを確認することができる。代わりに、またはデータメモリに記憶されたデータに対してチェックサムを計算することができ、データのコンテンツを確認する別の機能または組み合わせた機能である。追加的にまたは代替的に、コプロセッサは、命令コードの実行を確認するために、実行された命令の量または数をホストプロセッサに提供することができる。特定の実装では、非対称動作を実行できる暗号化コプロセッサを使用して対称動作を実行することもできる(例えば、AES-256のような対称ブロック暗号などのアルゴリズムを実装することによって、またはSHA2-512やキー付きハッシュアルゴリズムであるHMAC-SHA-512などの安全なハッシュアルゴリズム(SHA)などのアルゴリズムを実装することによって)。
【0031】
これらの方法で、セキュリティ回路をシリコンRoTチップおよび/またはSoCに組み込むことができる。このようなセキュリティ回路には、暗号化コプロセッサを含む複数の周辺デバイスが含まれる。安全な暗号化処理および/または安全な暗号化コプロセッサのいくつかの態様は、セキュリティ回路環境および/または移植可能な設計の文脈で説明されるが、開示される安全な暗号化コプロセッサの概念は、他の回路環境および他の設計パラダイムに適用可能である。さらに、安全な暗号化処理および/または安全な暗号化プロセッサのいくつかの態様は、コプロセッサまたはコプロセシング環境に関して説明されているが、開示された安全な暗号化コプロセッサおよび共処理の概念は、一般に、暗号化プロセッサおよび/または暗号化共処理環境に適用可能である。
【0032】
本文書は、安全なおよび/または強化された暗号化コプロセッサについて説明する。しかし、本文書では、最初に図1から図2を参照してセキュリティ環境の例を説明する。次に、「互換性のある構成要素」を含む周辺デバイスインターフェースおよび設計コード分析の例について、図3-1から3-3を参照して説明する。次に、本文書は、図4から8を参照して、安全な暗号化コプロセッサの態様および実装について説明する。電子デバイスの一例を図9を参照して説明する。本明細書で説明される環境、態様、回路、技術および実装のそれぞれは、個別にまたは任意の組み合わせで使用することができる。
【0033】
したがって、安全な暗号化コプロセッサの実装例を、関連する図面を参照しながら、さまざまな詳細レベルで以下に説明する。以下の説明では、最初に動作環境の例を示し、次にハードウェアの例、方式、および技術について説明する。例示的な方法は、その後、フローチャートまたは図を参照して説明される。最後に、計算デバイスの例について説明する。
【0034】
安全な暗号化コプロセッサの動作環境例
図1は、セキュリティ回路106を含む集積回路104(IC104)を有する例示的な装置102を全体的に100で示す。装置102、集積回路104、および/またはセキュリティ回路106は、本明細書で説明される安全な暗号化コプロセッサ118を実装することができる。この例では、装置102はスマートフォンとして示されている。しかし、装置102は、任意の適切な計算または電子デバイスとして実装されてもよい。
【0035】
装置102の例には、モバイル電子デバイスまたはモバイルデバイス、モバイル通信デバイス、モデム、セルラーまたは携帯電話、移動局、ゲームデバイス、ナビゲーションデバイス、メディアまたは娯楽デバイス(例えば、メディアストリーマやゲームコントローラ)、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートアプライアンス、車両ベースの電子システム、ウェアラブル計算デバイス(例えば、衣類、時計、または現実改変メガネ)、モノのインターネット(IoT)デバイス、センサ、在庫管理デバイス、機械の電子部分または機器の電子部品(例えば、車両やロボット)、メモリ記憶デバイス(例えば、ソリッドステートドライブ(SSD))、サーバコンピュータまたはその一部(例えば、サーバブレードまたはラック、またはデータセンタの別の部分)などが含まれる。装置102の図示された例は、タブレットデバイス102-1、スマートテレビ102-2、デスクトップコンピュータ102-3、サーバコンピュータ102-4、スマートウォッチ102-5、スマートフォン(または文書リーダ)102-6、およびインテリジェントメガネ102-7が含まれる。
【0036】
実装例では、装置102は、少なくとも1つの集積回路104を含む。集積回路104は、モジュール、カード、またはプリント回路基板(PCB)(図示せず)に取り付けることができる。PCBの例としては、可撓性PCB、リジッドPCB、単層または多層PCB、表面取り付けまたはスルーホールPCB、それらの組み合わせなどが挙げられる。各集積回路104は、汎用プロセッサ、システムオンチップ(SoC)、セキュリティ指向IC(例えば、RoT ICチップ)、メモリチップ、通信IC(例えば、モデムや無線周波数IC)、グラフィックプロセッサ、人工知能(AI)アクセラレータ、それらの組み合わせなどとして実現することができる。集積回路104は、単独で、または他のICチップと一緒にパッケージ化することができる。
【0037】
示されるように、集積回路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は多くの異なるタイプの攻撃に対抗することができる。
【0038】
動作例では、攻撃、または潜在的な攻撃、または異常な発生が検出されると、何らかの構成要素によってアラート112または割り込み114が生成される。例えば、回路構成要素108は、アラート112を生成することができ、後述するアラートハンドラにアラート112を送信することができる。追加的にまたは代替的に、別の回路構成要素108は、プロセッサによる処理のために割り込み114を生成することができる。アラート112、割り込み114、および他の信号は、セキュリティ回路106のプロセッサおよび/または周辺デバイスの間の相互作用のための共通のフレームワークに従って、2つ以上の構成要素108の間で通信される。共通フレームワークでは、各周辺デバイスのインターフェースとシグナリングを指定して、複数の周辺デバイスにわたる相互運用性と一貫した通信プロトコルの使用を促進できる。したがって、互換性のいくつかの態様はセキュリティ回路に関して示されているが、周辺デバイスの互換性は他のタイプの回路にも採用することができる。例示的なフレームワーク、ならびに例示的な通信インターフェースおよびインターフェース仕様については、図3-1から3-3を参照して以下に説明する。
【0039】
いくつかの実装では、回路構成要素108は、暗号化コプロセッサ118(または暗号化共処理ブロック118)として実現される。暗号化コプロセッサ118は、周辺デバイス、移植可能な構成要素、それらの組み合わせなどとしてセキュリティ回路106に組み込むことができる。例えば、セキュリティ回路106は、多くの桁を伴う暗号関連の数学的計算を含む、高速および/または効率的な暗号化動作のために暗号化コプロセッサ118を利用することができる。したがって、暗号化コプロセッサ118は、暗号化処理116を実行することができる。暗号化処理116および暗号化コプロセッサ118の動作および/または回路は、本明細書で説明される方式および技術を使用して、物理的な攻撃を含む多くの形態の攻撃に対して保護することができる。これらの方式および技術には、例えば、さまざまな品質のランダム性を利用したり、情報に関連付けられたスクランブルキーを安全に変更することによって情報を消去したりすることが含まれる。安全な暗号化コプロセッサのこれらおよび他の態様については、図4から8を参照して以下に説明する。しかし、図2を参照して、セキュリティ回路106のアーキテクチャ例を次に説明する。
【0040】
図2は、互換可能に実装することができる複数の例示的な周辺デバイス250を含む、複数の回路構成要素を含む例示的なセキュリティ回路106を示す。図示されるように、セキュリティ回路106は、相互接続110に結合されたプロセッサ202を含む。相互接続110は、例えば、バス、スイッチングファブリック、またはさまざまな回路構成要素の通信を可能にするバスネットワークを使用して実現することができる。複数の回路構成要素108-1…108-C(図1の)は、相互接続110および/またはプロセッサ202に加えて、複数のメモリおよび複数の周辺デバイスを含むことができる。プロセッサ202、複数のメモリ、および複数の他の周辺デバイス250のそれぞれは、相互接続110に直接的または間接的に結合される。図2に示され、本明細書で説明されるように、暗号化コプロセッサ118は、セキュリティ回路106の周辺デバイス250として実装され得る。しかし、暗号化コプロセッサ118は、別の環境で実装されてもよい。
【0041】
実装例では、複数のメモリは、読み取り専用メモリ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の特定の実装には、プロセッサ、コントローラ、メモリ、モジュール、または周辺デバイス(それらの複製を含む)のより多くの、より少ない、および/または異なるインスタンスが含まれてもよい。
【0042】
図示された回路構成要素は、1つまたは複数のクロック信号に基づいて同期して動作することができる。図2には示されていないが、セキュリティ回路106は、クロック信号を生成するための少なくとも1つのクロック発生器を含んでもよく、あるいは、1つまたは複数の個々の構成要素を互いに独立して、複数の構成要素を一緒に、またはICチップ全体をリセットするためのリセット回路を含んでもよい。あるいは、セキュリティ回路106は、セキュリティ回路106の外部のソースから少なくとも1つのクロック信号またはリセット信号を受信してもよく、そのソースは別個のチップ上にあってもなくてもよい。1つまたは複数の別個の周辺デバイス250は、それぞれの個別のクロックドメインで動作することができる。例えば、入出力(I/O)周辺デバイスは、それぞれのI/Oデバイスまたはチャネルにローカルなクロックに同期することができる。異なるクロックドメイン内の周辺デバイスは、互いに非同期に動作または通信することできる。
【0043】
図示された構成要素の実装例を以下に説明する。プロセッサ202は、セキュリティ回路106の「メイン」プロセッサ、「中央」プロセッサ、または「コア」プロセッサとして実現され得る。プロセッサ202は、ほんの一例として、多段パイプラインを備えた32ビットのインオーダー縮小命令セット計算(RISC)コアで実装され得る。例えばRISC-V機能を使用すると、プロセッサはM(マシン)モードとU(ユーザ)モードを実装できる。リセットピン(図示せず)を(例えば、アクティブローのリセットピンのアサート解除を通じて)アクティブ化すると、プロセッサ202はリセットを終了し、そのリセットベクトルでコードの実行を開始する。リセットベクトルはROM206内で開始することができ、エミュレートされた埋め込みフラッシュ(eフラッシュ)にジャンプする前にその埋め込みフラッシュ(eフラッシュ)内のコードを確認する。言い換えれば、コードはリセットが解除される前にeフラッシュにインスタンス化されていると予想される。場合によっては、セキュリティ回路106全体のリセットは、さまざまな回路構成要素間の相互運用性をサポートするために、互換性仕様に従って非同期アクティブローにすることができる。リセットは、セキュリティ対策としてアラートハンドラ204によって、ウォッチドッグタイマなどにより生成されてもよい。リセット信号は、メモリのうちの1つまたは他の周辺デバイス250のうちの1つなど、他の回路構成要素に送信されてもよい。
【0044】
プロセッサ202には、デバッグモジュール226(DM226)および割り込みコントローラ228(ItC228)が結合されており、それらのいずれも互換可能にすることができる。デバッグモジュール226は、プロセッサ202にデバッグアクセスを提供する。ICの特定のピンとインターフェースすることによって、デバッグモジュール226の論理は、プロセッサ202がデバッグモードに入ることができ、デバイス(例えば、命令をエミュレートすることによって)またはメモリにコードを挿入する機能を提供する。割り込みコントローラ228は、プロセッサ202の近くに配置され(例えば、位置決めされ、または配置され)得る。割り込みコントローラ228は、セキュリティ回路106内から割り込みソースのベクトルを受け入れることができる。割り込みコントローラ228は、割り込みをプロセッサ202の処理に転送する前に、割り込みに平準化および優先順位を割り当てることもできる。
【0045】
プロセッサ202は、任意の所望のレベルの性能を提供することができ、または任意の内部回路構成要素を含むことができる。例えば、プロセッサ202は、少なくとも1つの算術論理演算装置(ALU)(例えば、成立した条件付き分岐におけるレイテンシのサイクルを除去するために分岐ターゲットを計算する「追加の」ALUを含む)および複数のパイプライン段階を含むことができる。複数のパイプライン段階を使用すると、パイプラインはレジスタライトバックを実行して、ロードとストアによるレイテンシのサイクルを削減し、ロードまたはストアへの応答が要求後のサイクルで利用可能になるパイプラインストールを防ぐことができる。プロセッサ202は、単一サイクル乗算器を実装するか、ストアへのエラー応答で不正確な例外を生成することができ、これにより、プロセッサは応答を待たずにストアを過ぎても実行を続けることができる。図示されていないが、特にプロセッサ202、または一般にセキュリティ回路106は、命令に単一サイクルのアクセス時間を提供する命令キャッシュを含むことができる。
【0046】
図示の例では、セキュリティ回路106は、命令およびデータ用の3つのメモリアドレス空間を含む。ROM206は、リセット解除後のプロセッサ202のターゲットとなる。ROM206は、コードの次の段階をチェックする前にプラットフォームチェックのサブセットを実行するためのハードコードされた命令を含む。コードの次の段階(例えば、e-フラッシュメモリに記憶される起動ローダ)は、デバイスのシリコンにハードコーディングされていない最初のコード部分になり得る。したがって、コードのこの次の段階では、セキュリティを強化するために整合性について署名チェックが行われる。ROM206は、起動ローダの完全なコンテンツに対して、リベスト・シャミル・エイドルマン(RSA)チェックアルゴリズムを実装することによって、この署名チェックを実行することができる。
【0047】
フラッシュメモリ210は、コード記憶用のe-フラッシュメモリとして実装することができる。このe-フラッシュには、上記の起動ローダのほか、オペレーティングシステムとその上にある層のアプリケーションを収容できる。SPIデバイス230は、e-フラッシュメモリをバルクロードするために使用することができる。デバッグモジュール226は、コードのロードにも使用され得る。SRAM208は、プロセッサ202によるデータ記憶(例えば、スタックおよびヒープ情報)に利用可能なスクラッチパッドSRAMとして動作することができる。SRAM208はコードを記憶することもできる。
【0048】
セキュリティ回路106は、「周辺機器」または「周辺デバイス」のスイートを含むことができる。これらの周辺デバイス250は、相互接続110を介してプロセッサ202に結合される従属実行装置であってもよい。これらの周辺デバイス250のそれぞれは、相互およびプロセッサ202との互換性を保証するインターフェースフレームワークに従うことができる。互換性方式は、プロセッサ202が特定の周辺デバイスとどのように通信する(例えば、相互接続110を使用して)か、周辺デバイスがどのようにチップI/Oと通信するか(例えば、固定または多重化可能なI/Oを介して)、周辺デバイスがどのようにプロセッサ202と通信するか(例えば、割り込みを使用して)、周辺デバイスがどのようにセキュリティイベントを(例えば、アラート指示を使用して)アラートハンドラ204のような他の回路構成要素に通信するか、周辺デバイスが他の周辺デバイスとどのように通信するか(例えば、少なくとも1つのレジスタを介して、同期的または非同期的に)、またはそれらの組み合わせかを指定することができる。図示の周辺デバイス250は、アラートハンドラ204によって提供されるアラート関連機能に関連する、プロセッサ202に関連する、1つまたは複数のメモリに関連する、チップI/Oなどに関連する周辺デバイスを含むことができる。したがって、メモリは、互いに関連する、または他の図示された回路構成要素に関連する周辺デバイス250を備えることもできる。
【0049】
回路またはチップI/O周辺デバイスには、ピンマルチプレクサ222およびパッドコントローラ224が含まれる。ピンマルチプレクサ222は、周辺デバイス250の少なくとも一部とセキュリティ回路106の利用可能な多重化可能なI/Oノードとの間のシグナリングルートを提供する(例えば、さまざまな構成要素が統合されているチップのピン、またはSoCの他の部分へのインターフェース)。パッドコントローラ224は、各回路(例えば、チップ)の外部I/Oの駆動強度、技術、プルアップ対プルダウンなどの制御またはパッド属性を管理する。ピンマルチプレクサ222およびパッドコントローラ224は、それ自体、相互接続110上の周辺デバイスである。したがって、それぞれは、ソフトウェア構成可能性を提供する少なくとも1つのレジスタの集合を有するか、または関連付けることができる。
【0050】
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デバイスのこのコマンドには、標準モード、フルモード、および高速モードが含まれ得る。
【0051】
暗号化エンジンおよびアラートハンドラ204を含む、いくつかの「コアセキュリティ」周辺デバイスも示されている。AESエンジン212は、1つまたは複数のプロトコルおよび128b、192b、または256bなどのさまざまなキーサイズを使用して、対称暗号化および復号を提供することができる。この構成要素は、例えば16バイト単位で到着するデータの暗号化または復号を選択し、異なるブロック暗号化動作モードを使用して暗号化または復号することができる。AESエンジン212は、電子コードブック(ECB)モード、暗号ブロック連鎖(CBC)モード、暗号フィードバック(CFB)モード、出力フィードバック(OFB)モード、カウンタ(CTR)モードなどをサポートすることができる。データ転送はプロセッサで利用可能にすることができる。例えば、キーとデータ素材をレジスタ書き込みを介して暗号エンジンに渡すことができる。あるいは、潜在的に信頼できないプロセッサのアクティビティにさらされるのを軽減するために、キーとデータ素材を転送するためのプライベートチャネルを含めることもできる。
【0052】
HMACエンジン214は、例えば、安全なハッシュアルゴリズム(SHA)SHA-256をハッシュアルゴリズムとして利用することができる。SHA-256は、ハッシュアルゴリズムのSHA-2ファミリのメンバーであり、ハッシュされる入力のデータサイズに関係なく、ダイジェスト(またはハッシュ出力)の長さは256ビットである。データは、ハッシュ要求の開始を宣言した後、HMAC周辺デバイスに送信される。これにより、内部状態が初期状態(例えば、一度に32ビット)にゼロになる。構成要素クライアントによってデータが送信されると、クライアントはハッシュ要求の完了を示すことができる(任意の部分ワード最終書き込みを使用)。移植性インターフェース方式の一例によれば、HMACエンジン214はハッシュ結果を生成し、それを要求側クライアントによるレジスタ読み取りに利用できるようにする。データ転送は、プロセッサが利用できるようにすることも、潜在的に信頼できないプロセッサのアクティビティにさらされるのを減らすためにプライベートにすることもできる。
【0053】
HMACは、ハッシュ関数(例えば、SHA-256)の上に階層化されたメッセージ認証プロトコルであり、HMACは、暗号化の目的で機密キーを混合する。HMACは、メッセージのハッシュ(SHA-256経由)の周りに機密キーを所定の方法(2回など)で追加する特定のアプリケーションである。この機能を提供するには、メッセージハッシュが開始される前に256ビットキーを回路構成要素にプログラムすることができる。認証完了のタイミングは変動し得、ネイティブSHA-256を使用する場合よりもレイテンシが長くなり得る。ここでもまた、ハッシュ情報または機密キーは、利便性または処理効率のためにプロセッサで利用可能にすることができ、あるいはセキュリティを高めるために何らかの方法で非公開にすることもできる。
【0054】
アラートハンドラ204は、他の周辺デバイス250から提供されるアラートを含むアラートを処理し、アラートに応答する役割を担う。アラートは、認識されたセキュリティの脅威に対応するために適時に処理されるセキュリティに敏感な割り込みと考えることができる。「標準」割り込みとは異なり、アラートはプロセッサ202上で実行されるソフトウェアのみによって処理されるわけではない。アラートは、ソフトウェアによって「通常の」割り込みとして処理される第1の段階の要求をトリガできる。しかし、ソフトウェアがアラートによってトリガされた割り込みに応答して適切に修復できない場合、アラートハンドラ204は第2の段階の応答をトリガする。第2の段階の応答には、プロセスの終了、データの消去またはその他の削除、回路部分からの電力の供給、またはICチップまたはその一部のリセットなどのセキュリティ対策を講じることが含まれ得る。これにより、プロセッサ202がビジー状態であっても、妨害を受けていても、あるいは攻撃を受けていても、根底にある問題、つまり認識されているセキュリティ脅威が確実に対処される。
【0055】
したがって、アラート112(例えば、図1)は、アラートハンドラ204が他の周辺デバイスから受信し、潜在的なセキュリティ脅威を示す高位割り込みタイプの信号またはアラート指示として実装することができる。動作中、アラートハンドラ204は、セキュリティ回路106の他の回路構成要素108からアラートを収集し、それらをプロセッサ202が対処できる割り込みに変換することができる。しかし、プロセッサ202が割り込みをクリアしない場合、アラートハンドラ204は、潜在的なセキュリティ脅威に対処するためにハードウェア応答を提供する。
【0056】
一部のデバイス間通信では、アラートハンドラ204は、周辺デバイスソースから差分信号で通知された同期または非同期アラート指示を受信する。周辺デバイス250は、周辺デバイス250の機能、知識、または感知されたパラメータに基づいてアラートを生成することができる。他のデバイス間通信の場合、アラートハンドラ204は、堅牢なハートビートメカニズムとしてアラートソースのpingテストを実行する。アラートハンドラ204のpingモニタ(明示的には示されていない)は、アラートソースとの通信チャネルが機能していることを保証するために、各アラートソースからの定期的なアラート応答を要求する。
【0057】
アラートハンドラ204は、通信障害に基づいて、ローカルに供給されるハードウェアアラートを生成することもできる。第1のローカルソースアラートは、アラートソースまたはエスカレーションハンドラとの差分シグナリングまたは別の所定の通信プロトコルが失敗した場合(例えば、信号整合性チェックが失敗した場合)に生成される。アラートハンドラ204は、アラートソースまたはエスカレーションハンドラがping要求に応答しなかった場合に、そのような第2のアラートを生成する。一般に、アラートハンドラ204は、システム全体から着信アラートを受信し、アラートを分類し、分類されたアラートに基づいて割り込みを発行し、プロセッサ202が発行された割り込みをクリアしない場合、割り込みをハードウェアベースの応答にエスカレートすることができる。したがって、プロセッサがセキュリティアラートを処理できない、または処理しない場合、アラートハンドラ204は、例えばセキュリティ応答の代役として機能することができる。
【0058】
一部のアーキテクチャでは、セキュリティアラートは、少なくとも「標準」割り込みと比較して、まれなイベントであることを意図している。したがって、設計段階では、起こり得るイベントは、そのイベントが頻繁に発生しないと予想される範囲で、そのイベントがセキュリティに潜在的な影響を与える場合に、アラートイベントとして指定され得る。このようなイベントの例としては、パリティエラー(攻撃を示し得る)、暗号またはセキュリティ関連構成要素に対する不正なアクション、環境の変更を示す物理センサからの感知された値(電圧や温度など)などが挙げられる。システムは、アラートハンドラ204を介してアラートをルーティングし、プロセッサ202が潜在的に対処するためにアラートを割り込みに変換する。一部の実装では、安全なオペレーティングシステムには、アラートによって発生するこのような割り込みをソフトウェアで処理するためのプロトコルが備わっていることが根底に予想されている。そうである場合、安全なオペレーティングシステムは通常、割り込みを解決し、その後、アラートハンドラ204を使用して割り込みをクリアすることができる。各周辺デバイス250は、対処すべきそれぞれの潜在的な脅威を表す個別のアラートのリストを提示することができる。周辺デバイスは、特定の符号化メカニズムを使用して、アラートをアラート指示としてアラートハンドラ204に送信することができる。
【0059】
セキュリティ回路106は、RNG232を含むこともできる。一般に、ランダム性は、攻撃者が攻撃を開始する適切なタイミングを予測できないように実行のバリエーションを提供することで、セキュリティ機能に貢献し得る。例えば、乱数は、IDや暗号化の目的で使用される機密資料を提供し得る。RNG232をアルゴリズム計算にシードして、機密データ値を曖昧にすることができる。一般に、RNG232は、その番号生成がますます真にランダムになり、攻撃に対しても強化できる範囲でより優れた性能を提供する。RNG232は、「真の」RNG(TRNG)として実装することができ、これには、非決定的な何らかの物理的イベントまたはプロセスを利用するためのアナログ部分を有する設計が含まれ得る。TRNG設計の例は、準安定性、電子ノイズ、タイミング変動、熱ノイズ、量子変動などに依拠している。TRNGは、結果の変数をフィルタリングし、次いで、デバイスが現在のランダム化関数のために特定の時間にサンプリングできるエントロピーのプールにそれらを送信する。場合によっては、エントロピープールへのインターフェースに、利用可能なランダムビットの読み取り要求が含まれ得る。TRNGインターフェースは、使用可能なビット数を示し、要求元の周辺デバイスまたはソフトウェアは、使用可能なビットの範囲までこのプールから読み取ることができる。利用できないエントロピービットを読み取ろうとすると、割り込みまたはアラートがトリガされ得る。
【0060】
他の2つの周辺デバイス250には、タイマ234およびフラッシュコントローラ216が含まれ、後者については次の段落で説明する。タイマ234は、例えば、プロセッサ202による正確な性能をサポートすることができる。タイマ234は、複数のビット(例えば、64ビット)から形成され、あるパーセンテージ以内に保証された周波数を有する自走タイマとして動作する。別のタイマ(明示的に示されていない)は、プロセッサが応答しなくなった場合にプロセッサ202をバックストップするウォッチドッグタイマとして機能することができる。応答しないのは、開発コードの妨害、セキュリティ攻撃などが原因であり得る。
【0061】
フラッシュコントローラ216は、コードおよびデータの記憶に利用可能なフラッシュメモリ210を制御する。このデータの主な1次読み取りパスは、標準メモリアドレス空間にあり得る。しかし、フラッシュは標準的な方法で書き込まれないため、そのアドレス空間への書き込みは無視できる。代わりに、フラッシュメモリ210に書き込むために、ソフトウェアはフラッシュコントローラ216と相互作用する。フラッシュ機能には、読み取り、消去、およびプログラムという3つの1次コマンドを含めることができる。読み取りコマンドは標準化でき、チップメモリのアドレス空間を使用できる。消去コマンドはページレベルで実行され、ページサイズはフラッシュコントローラ216によってパラメータ化可能である。消去要求を受信すると、フラッシュコントローラ216はターゲットページのコンテンツを消去し、データを「1」状態(例えば、ワード当たり0xFFFFFFFF)にする。その後、ソフトウェアは個々のワードを任意の値にプログラムできる。フラッシュビットは再度消去しないと「1」状態に戻らないため、将来のコンテンツは現在のコンテンツと書き込まれた値のANDによって事実上変更される。消去およびプログラムコマンドは比較的遅い。一般的な消去時間はミリ秒単位で測定され、プログラム時間はマイクロ秒の範囲にある。機密データがフラッシュメモリ210に記憶され得るため、セキュリティも懸念される。したがって、フラッシュコントローラ216によってある程度のメモリ保護を提供することができる。
【0062】
セキュリティ回路106は、特定の回路構成要素のセットとともに図2に示されている。しかし、特定のセキュリティ回路106は、より多くの、より少ない、または異なる回路構成要素を有することができる。回路構成要素はまた、異なる方法で相互接続されたり、上述の例示的な方法以外の方法で動作したりすることもできる。さらに、一部の回路構成要素は省略され、一方、他の回路構成要素は複数のインスタンスで実装され得る。例えば、アラートハンドラ204は複製または分散されてもよく、あるいは複数のAES暗号化エンジン212がいくつかのセキュリティ回路106内に存在してもよい。さらに、セキュリティ回路106が数十個のコアのうちの1つだけを形成するICチップについては、セキュリティ回路106の周辺デバイス250の中からGPIOインターフェース220を省略することもできる。
【0063】
安全な暗号化共処理周辺デバイスの互換性のあるパラダイムの方式、技術、ハードウェア例
セキュリティ回路106(例えば、図1および図2の)は、暗号化コプロセッサ118などの周辺デバイス250を含む、互換性のある回路構成要素を含むことができる。このセクションでは、周辺デバイスを互換性のあるものにするためのアプローチ例について説明する。各周辺デバイス250は、セキュリティ回路106の互換性仕様に準拠することができる。少なくとも1つのインターフェース方式または通信プロトコルを定義する互換性仕様に準拠することによって、周辺デバイス250は、周辺デバイス250と他の周辺デバイスとの間に一貫した予想される相互作用を生み出す少なくとも1つのインターフェースを備えて実現される。これにより、通信の予測可能性と確実性が向上し、セキュリティ回路の設計とテストにかかる時間が短縮される。
【0064】
図3-1は、他の回路構成要素との互換性をサポートするための少なくとも1つのインターフェース302を含む例示的な周辺デバイス250を300-1で示している。より一般的には、図3-1は、相互接続110、相互接続110に結合されたプロセッサ202、および相互接続110に結合された複数の周辺デバイスを含む。したがって、複数の周辺デバイスは少なくとも相互接続110を介してプロセッサ202に結合することができる。しかし、各周辺デバイス250は、直接的に、または相互接続110を使用せずに、例えばインターフェース302、レジスタインターフェース310、または少なくとも1つのデバイス間通信316に相当するメカニズムを介して、プロセッサ202に結合されてもよく、これらについては以下で説明する。図3-1は、P個の周辺デバイス250-1、250-2、…、250-Pを明示的に示しており、Pは正の整数を表す。
【0065】
実装例では、各周辺デバイス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のうちの他の周辺デバイスと相互作用するための共通フレームワークに準拠することを可能にする。
【0066】
レジスタインターフェース310は、1つまたは複数のレジスタまたはレジスタエントリを含む。各レジスタエントリは、例えば、周辺デバイス250への通信または周辺デバイス250からの通信(例えば、へのまたはからの通信)に使用することができる。例えば、プロセッサ202または別の周辺デバイスは、レジスタエントリをセットまたはクリアすることができ、または周辺デバイス250と通信するためにレジスタエントリに値をロードすることができる。逆に、周辺デバイス250は、プロセッサ202または別の周辺デバイスと通信するためにレジスタエントリの値を変更することができる。この通信を可能にするために、周辺デバイス250は、レジスタインターフェース310の少なくとも一部をプロセッサ202または別の周辺デバイスに公開することができる。例えば、周辺デバイス250は、割り込み状態指示をクリアするためのプロセッサアクセスを提供することができる。
【0067】
一般に、レジスタブロックは、例えばソフトウェアとの構成およびステータス通信を管理するために、周辺論理の残りの部分と通信するために使用することができる。場合によっては、レジスタインターフェース310は、制御およびステータスレジスタ(CSR)を使用して実装することができる。CSRは、周辺デバイス250内のレジスタの集合を提供し、そのレジスタは、回路全体またはチップ全体のアドレスマップを介して、少なくともローカルホストプロセッサ202によってアドレス指定可能である。CSRを標準化すると、ソフトウェアの均一性が向上し、回路の再利用と文書の一貫性が促進される。レジスタインターフェース310の例示的な態様については、図3-3を参照して以下に説明する。
【0068】
セキュリティ機能モジュール312は、周辺デバイス250のセキュリティ関連機能を実装する。セキュリティ関連機能には、コアまたは1次セキュリティ機能と、サポートまたは2次セキュリティ機能が含まれる。コアセキュリティ機能には、例えば、アラート処理、暗号化および復号を含む暗号化動作、乱数生成、機密データの記憶およびアクセスを含む安全なデータ記憶(例えば、キー管理)などが含まれ得る。サポートするセキュリティ機能には、コア機能の性能を有効化または促進する機能が含まれ得る。サポートするセキュリティ機能の例には、メモリ記憶、メモリ制御、タイミング、回路およびチップI/O制御、環境センサ、バスホスティングなどが含まれる。
【0069】
一般に、インターフェース302、または特定の例示的なインターフェース(例えば、相互接続インターフェース304、デバイス間インターフェース306、または他のインターフェース308)のいずれかは、レジスタインターフェース310に対して少なくとも1つのレジスタを確立して、それぞれのインターフェース通信能力または機能を有効にすることができる。相互接続インターフェース304に関して、相互接続インターフェース304は、例えば共通フレームワークに準拠する周辺デバイス250とプロセッサ202との間の接続を可能にするために相互接続110に結合する通信インターフェースを実装する。周辺デバイス250およびプロセッサ202が同じ共通フレームワークに適合することにより、両方向のデバイス-プロセッサ通信が標準化され、予測可能となり得る。相互接続インターフェース304は、相互接続110全体で動作することができ、レジスタインターフェース310の少なくとも1つのレジスタを使用することができ、別個のバスまたは独立したワイヤ、それらの組み合わせなどを使用することができる。動作中、周辺デバイス250は、相互接続インターフェース304を使用して、少なくとも1つの相互接続通信314に関与することができる。追加的にまたは代替的に、周辺デバイス250は、相互接続インターフェース304を使用して、相互接続110を介して別の周辺デバイスと通信することができる。
【0070】
デバイス間インターフェース306は、周辺デバイス250と、共通のフレームワークに準拠する1つまたは複数の他の周辺デバイスとの間の通信インターフェースを実装する。周辺デバイス250および他の各周辺デバイスが同じ共通フレームワークに適合することにより、両方向のデバイス間通信を標準化し、予測可能にすることができる。デバイス間インターフェース306は、レジスタインターフェース310の少なくとも1つのレジスタを使用することができ、周辺デバイス専用のバスを使用することができ、2つの周辺デバイス間に延びる1つまたは複数の独立したワイヤ、それらの何らかの組み合わせなどを使用することができる。
【0071】
動作中、周辺デバイス250は、デバイス間インターフェース306を使用して、少なくとも1つのデバイス間通信316に関与することができる。別の周辺デバイスと通信するために相互接続110をバイパスすることによって、いくつかの実装では、周辺デバイス250は他の周辺デバイスと「直接」通信することができる。さらに、デバイス間通信方式を確立して準拠することにより、2つ以上のデバイス間の通信の一貫性と確実性が促進される。したがって、設計者は、多数のその場の通信体制の追跡および二重チェックに時間とリソースを費やす代わりに、セキュリティ機能モジュール312の意図したセキュリティ関連機能を達成することに集中することができる。
【0072】
他のインターフェース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に関与することができる。
【0073】
図3-2は、互換性の目的が確実に満たされるように周辺デバイスの設計を分析するための例示的なアプローチ300-2を示す。実装例では、アプローチ300-2は、相互接続方式334、デバイス間方式336、または他の方式338(方式のそれぞれを含む)を含むことができるインターフェース仕様332を使用する。インターフェース仕様332は、(図3-1の)インターフェース302に対応する。相互接続方式334は相互接続インターフェース304に対応し、デバイス間方式336はデバイス間インターフェース306に対応し、他の方式338は他のインターフェース308に対応する。これらの方式には、追加的にまたは代替的に、ローカルまたはチップレベルのI/O方式、割り込み方式、クロック方式などを含めることができる。
【0074】
したがって、インターフェース仕様332は、インターフェース302の規則、プロトコル、属性、選択肢、機能などを確立することができる。同様に、相互接続方式334、デバイス間方式336、およびその他の方式338のそれぞれも、相互接続インターフェース304、デバイス間インターフェース306、および他のインターフェース308の規則、プロトコル、属性、選択肢、機能などをそれぞれ確立することができる。設計時、設計者は、インターフェース仕様332の各関連方式に準拠するように各周辺デバイス250を開発する。例えば、デバイス間方式336は、セキュリティ回路106の相互接続110をバイパスするデバイス間シグナリングを定義するためのフォーマットを確立することができる。そうすることによって、相互運用性を強化し、設計および開発時間、ならびにテストおよびデバッグの労力を削減する、互換性のある周辺デバイス250を製造することができる。例えば、周辺デバイス250は、周辺デバイスの設計コードによって指定された属性から導出される回路を使用して、信号(例えば、デバイス間信号)を別の周辺デバイスに通信することができる。
【0075】
例示的なアプローチでは、互換性分析モジュール340は、設計コードの分析344を実行して、互換性をチェックすることができる。設計者は、インターフェース仕様332を参照して周辺デバイス設計コード342を作成する。したがって、周辺デバイス設計コード342は、インターフェース仕様332に準拠することにより、互換性の目標を満たす。周辺デバイス設計コード342は、例えば構成ファイルを使用して少なくとも部分的に実現され得る。周辺デバイス設計コード342は、プロセッサデバイスシグナリング348の1つまたは複数の指示(例えば、周辺デバイス250とプロセッサ202との間の相互接続通信314の態様を定義する)、デバイス間シグナリング350の1つまたは複数の指示(例えば、周辺デバイス250と別の周辺デバイスとの間のデバイス間通信316の態様を定義する)などを含むことができる。デバイス間シグナリング350の1つまたは複数の指示は、例えば、セキュリティ回路106の相互接続110を使用しない場合を含む、2つまたは複数の周辺デバイス間で交換される信号に関連することができる。これらの指示は、これらの信号のレジスタ、信号の命名、データ型、タイミングなどに関する規則とガイドラインに従うことができる。
【0076】
周辺デバイス設計コード342内の記述は、セキュリティ回路106内の回路構成要素をもたらす。例えば、それぞれの周辺デバイス250(例えば、図3-1の)のデバイス間インターフェース306に関して、その設計コード342に含まれる属性に基づいて、デバイス間インターフェース306は、デバイス間シグナリングを可能にするために別の周辺デバイスに延びる少なくとも1つのワイヤに結合することができる。設計コード342内でデバイス間シグナリング350を指定することによって、相互運用性および通信の確実性が向上する。インターフェース仕様332または設計コード342の構成ファイルは、(本開示のこの例のインスタンスにおける特定の仕様または設計に対して)必須の周辺機能と、特定の互換性フレームワークにおいて任意である周辺機能とを示すことができる。したがって、準拠した設計コードには、状況によっては必須部分と選択肢部分が含まれ得る。一般に、設計コード342は、任意のIC設計または構成プラットフォームに従ってフォーマットすることができる。例には、Verilog、Python、Hjsonなどが含まれる。
【0077】
動作中、互換性分析モジュール340は、周辺デバイス設計コード342を受け入れる。インターフェース仕様332を参照して、互換性分析モジュール340は分析344を実行して、周辺デバイス設計コード342が指定された共通フレームワークに準拠しているかどうかをチェックする。互換性分析モジュール340は、周辺デバイス設計コード342を相互接続方式334、デバイス間方式336、または他の方式338のうちの1つまたは複数と比較して、コードがそれぞれの仕様を満たすかどうかをチェックすることができる。これらの方式には、割り込み、レジスタの使用法などに関する仕様が含まれ得る。分析344に基づいて、互換性分析モジュール340は互換性レポート346を生成する。
【0078】
互換性レポート346は、周辺デバイス設計コード342がインターフェース仕様332の基準を満たすことによって分析344に合格するかどうかを示す。そうでない場合、互換性分析モジュール340は、「違反」のリストを互換性レポート346に含めることができる。各違反には、障害の指示を引き起こしているコード部分への参照、または違反しているインターフェース仕様332の部分への参照が含まれ得る。インターフェース仕様332、互換性分析モジュール340、および周辺デバイス設計コード342は、例示的なセキュリティ回路環境に関して説明され得るが、インターフェース仕様332、互換性分析モジュール340、または周辺デバイス設計コード342は、他の環境で実装されてもよい。したがって、互換性レポート346は、一般的な回路設計の分析をカバーすることができる。
【0079】
図3-3は、レジスタインターフェース310および例示的な通信信号を含む例示的な周辺デバイス250を300-3で示す。図3-3では、一般に、しかし単なる例として、必須の通信チャネルまたは信号が実線で示され(本開示のこの例では)、任意の通信チャネルまたは信号が破線で示されている。しかし、他の場合には、異なるチャネルまたは信号が必須または任意になり得る。さらに、他の図の実線または破線は、それぞれ、所定のインターフェース仕様の下での要件または要件の欠如を必ずしも示すわけではない。
【0080】
実装例では、周辺デバイス250が準拠すべき互換性のためのフレームワークの一部として、さまざまな信号を指定することができる。左上から始めて、相互接続110を使用する双方向シグナリング362-1が、相互接続110に対してデバイスとして機能する(例えば、フォロワとして機能する)周辺デバイス250とともに示されている。その下には、周辺デバイス250が、少なくとも1つのクロック信号364および少なくとも1つの開発モード信号365を受信するものとして示されている。開発モード信号365は、セキュリティ回路106または全体的なSOCが現在どのモードで動作しているかを周辺デバイス250に示す。言い換えれば、複数の動作モードが存在し得る。2つのモード例では、複数のモードには開発モードと生成モードが含まれ得る。モード指示は、例えばソフトウェアエラーの処理方法を決定し得る。他のモードでは、完全なライフサイクルモードのステータスを周辺デバイスに伝えるセキュリティ機能が有効になり得る。
【0081】
周辺デバイス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つのカテゴリを機能ごとに割り当てることができる。
【0082】
安全な暗号化コプロセッサを有する暗号化共処理周辺デバイスの例を含む、互換性のあるパラダイムにおける周辺デバイスのための方式、技術、およびハードウェアを全体的に説明してきたが、ここでの説明は、安全な暗号化コプロセッサの方式、技術、およびハードウェアに移る。
【0083】
安全な暗号化コプロセッサの方式、技術、ハードウェア例
このセクションでは、セキュリティ回路106(例えば、図1および図2の)に含めることができる暗号化コプロセッサの例について説明する。暗号化共処理ブロックまたはモジュールは、例えば上述の互換性原理に従って、周辺デバイスとして相互接続110(例えば、システムバス)に接続することができる。追加的にまたは代替的に、暗号化コプロセッサ118は、周辺デバイス250またはプロセッサ202(例えば、図2の)などの1つまたは複数の他の構成要素への、またはそれらとの「直接」または排他的バスアクセスを有し得る。
【0084】
図4は、特定の暗号化コプロセッサの実装に従った例示的な概略図400を示す。概略図400に示すように、例示的な暗号化コプロセッサ118は、命令メモリ402、データメモリ404、コントローラ406、ランダムビットを記憶する複数のレジスタ408、およびデコーダ410を含むことができる。命令メモリ402は命令コード412を記憶することができ、データメモリ404はデータ414を記憶することができる。レジスタストレージの例に関して、暗号化コプロセッサ118は、汎用レジスタ(GPR)416および/または広いデータレジスタ(WDR)418などの1つまたは複数のレジスタセットを含むことができる。
【0085】
例示的な計算装置に関して、暗号化コプロセッサ118は、インクリメンタ420、ベースALU422、ビッグナンバー(「ビグナム」)ALU424、および積和演算(MAC)装置426を含むことができる。特定の構成要素のみが図4に示されており、本明細書では暗号化コプロセッサ118の一部として説明されているが、これは単なる例である。より多くの、より少ない、複製された構成要素、および/または異なる構成要素が含まれ得る。例えば、暗号化コプロセッサ118は、データメモリ404を他の構成要素に結合するロードアンドストア装置(LSU)(またはロードストア装置)を含むこともできる。LSUは、読み取りや書き込みなどのデータアクセスの双方向インターフェースとして機能し得る。さらに、暗号化コプロセッサ118は、レジスタインターフェース310(図3-3の)のCSRなど、本明細書で説明する1つまたは複数の他のレジスタを含むことができる。
【0086】
例示的な実装では、図示されたさまざまな構成要素は、図4に示されるように一緒に結合され得る。例えば、複数のランダムビットレジスタ408は、2セットのレジスタ、すなわち、GPR416およびWDR418に結合され得る。コントローラ406およびデコーダ410は、命令メモリ402に結合することができる。2セットのレジスタは、計算装置に(例えば、双方向で)結合することができる。さらに、データメモリ404は、LSU(図示せず)などを介してレジスタおよび/または計算装置に結合されてもよい。構成要素間の図示された接続は、単なる例として図4に示されている。より多くの、より少ない、二重にした接続、および/または異なる接続が存在し得る。例えば、コントローラ406は、任意の計算装置および/またはランダムビットレジスタ408に結合され得る。
【0087】
例示的な動作シナリオでは、デコーダ410は、命令コード412の1つまたは複数の命令を命令メモリ402から取得することができる。デコーダ410による復号後、コントローラ406は、現在のプログラムカウンタ(PC)(図示せず)に基づいて命令を実行することができる。デコーダ410およびコントローラ406は、条件付き分岐および無条件ジャンプ命令、ハードウェアループ、およびハードウェア管理のコール/リターンスタックによる制御フローサポートを提供することができる。コントローラ406は、ベースALU422またはビッグナムALU424などの1つまたは複数の計算装置を使用して、復号化に基づいて命令を実行することができる。命令コード412の実行の一部として、コントローラ406は「作業データ」および他の状態をレジスタに記憶することができる。
【0088】
レジスタは異なる幅を有してもよい。例えば、GPR416のバンクは、レジスタまたはレジスタエントリごとに32ビットワードを記憶するために32ビット幅であってもよい。GPR416は、インクリメンタ420およびベースALU422から結果を供給および/または受信することができる。対照的に、ビッグナムALU424は、128、256、または512ビットなどのより大きなデータを動作できる。より広いデータを動作して広い整数演算を実行すると、多くの暗号化動作の実行が容易になる。WDR418のレジスタバンクは、256ビットのデータ項目など、このより広いデータを記憶することができる。MAC426は、より広い256ビットデータを動作し、アキュムレータ(ACC)レジスタ(図示せず)に情報を記憶することもできる。図4に示すように、ビッグナムALU424などのより広い計算装置は、256ビットのデータ項目を取得するためにGPR416またはインクリメンタ420から32ビットのデータ値の8回の発生などのより狭いデータを受信することもできる。また、レジスタ、ワード、データパス、計算装置などの特定のビット幅(例えば、32、64、128、256、および512)が本明細書に記載されているが、これらは例としてのみ提供されている。代わりに、より狭いビット幅またはより広いビット幅、ビット幅の異なる組み合わせなどを実装することもできる。
【0089】
いくつかの実装では、暗号化コプロセッサ118は、暗号化動作を効率的におよび/または迅速に実行することによって、プロセッサ202(図2の)などのプロセッサをサポートすることができる。プロセッサ202は、最初に、実行すべき暗号化動作430を決定する。暗号化動作430の例には、機密性の高い公開キー方式用のRSAおよび楕円曲線暗号などの非対称暗号化動作、および対称暗号化動作(例えば、SHA2-512、HMAC-SHA-512、およびAES-256用)が含まれ、これは、機密性の低い暗号化動作に関連し得る。プロセッサ202は、暗号化動作430を実行する要求を送信する。要求は、例えば、相互接続(例えば、図1および図2の相互接続110)を介して、またはプロセッサ202と暗号化コプロセッサ118との間の専用経路を介して送信され得る。場合によっては、送信には、動作コードおよび/またはデータを暗号化コプロセッサ118の1つまたは複数のレジスタにロードすることが含まれ得る。
【0090】
したがって、暗号化コプロセッサ118は、プロセッサ202から暗号化動作430を実行する要求を受信する。暗号化コプロセッサ118は、命令コード412および中間値428を使用してデータ414で暗号化動作430を実行し、結果432を取得する。中間値428は、暗号化動作430の実行中を含め、暗号化コプロセッサ118によって保持される状態(ここでは「状態情報」とも呼ばれる。これは、暗号化コプロセッサ内に存在する可変データなどの任意のデータを指す)の一例である。中間値の例には、最終結果、計算装置の出力、計算装置「内」のレジスタのコンテンツなどを表さない暗号化動作を実行している間、レジスタにコピーまたは移動されたデータ414のインスタンス、生成された値が含まれ得る。
【0091】
各中間値428は、例えば少なくとも1つのレジスタに記憶することができる。このようなレジスタには、GPR416、WDR418、MAC426のACCなどが含まれ得る。したがって、中間値428はWDR418に対して示されているが、少なくとも1つの中間値428を含む状態情報は、暗号化コプロセッサ118の他の場所に記憶することができる。他のレジスタに加えて、これらの状態情報の他の場所には、デコーダ410、ベースALU422、ビッグナムALU424などを含めることができる。状態情報には、これらまたは他の構成要素の1つまたは複数のフラグも含まれ得る。暗号化コプロセッサ118は、データ414、中間値428、または命令コード412のうちの少なくとも1つを不正アクセスから保護する。
【0092】
したがって、情報(例えば、データ414、命令コード412、または中間値428のようなプロセッサ状態)は、本明細書に記載される1つまたは複数の技術を使用して暗号化コプロセッサ118によって保護される。保護は、暗号化動作430が実行される時間中に存在することができ、および/またはその期間の前後に行うことができる。この保護は、少なくとも暗号化コプロセッサ118のインターフェースまたは通信関連レジスタを含む、暗号化コプロセッサ118の構成要素全体にわたって拡張することができる。暗号化動作430の結果432を決定した後、暗号化コプロセッサ118は、結果432をプロセッサ202に提供する。暗号化コプロセッサ118は、例えば、暗号化コプロセッサ118のレジスタを使用して結果432をプロセッサ202に公開し、結果432を相互接続110またはプライベート/専用バス上で駆動するなどすることができる。別の例として、暗号化コプロセッサ118は、結果432をデータメモリ404に書き込むことができる。暗号化コプロセッサ118が暗号化動作430が完了したことをプロセッサ202に通知することに応答して、プロセッサ202はデータメモリ404から結果432を読み取ることができる。
【0093】
図5は、暗号化コプロセッサ内の情報を安全に消去するための方式例500を示す。図示されるように、暗号化コプロセッサは、命令メモリ402およびデータメモリ404に加えて、少なくとも1つのレジスタ506を含む。レジスタ506は、少なくとも1つの中間値428などの状態508を記憶する。レジスタ506は、例えば、図4に示される構成要素のいずれかに配置することができ、またはその一部とすることができる。暗号化コプロセッサ118は、コードスクランブルキー502およびデータスクランブルキー504などの1つまたは複数のスクランブルキーも含む。スクランブルキーは、スクランブルキーを情報に適用することができる、および/またはスクランブルキーを安全に消去することができるコントローラ406または他の論理に結合されるか、またはそれによってアクセス可能な1つまたは複数のレジスタなどに、別個にまたは一緒に記憶することができる。
【0094】
例示的な実装では、コントローラ406は、コードスクランブルキー502を使用して、命令コード412をスクランブルまたは暗号化する。コントローラ406は、データスクランブルキー504を使用して、データ414をスクランブルまたは暗号化する。少なくとも1つのメモリに記憶されている情報を保護するために、暗号化コプロセッサは、その情報をスクランブルするために使用される少なくとも1つのスクランブルキーを変更する。ここで、メモリは、命令メモリ402およびデータメモリ404だけでなく、レジスタ506を含んでもよい。対応するスクランブルキーを変更することは、不審なアクティビティが検出された場合、またはプロセッサ202上で実行中の相互に信頼できない2つのアプリケーション間で暗号化コプロセッサ118へのアクセスが転送される場合に、メモリのスクランブルされたコンテンツを保護するための高速かつ効率的なアプローチである。
【0095】
データメモリ404に関して、暗号化コプロセッサ(例えば、コントローラ406または他の論理)は、データスクランブルキー504を変更(例えば、変更または置換)して、データ414を無意味にすることができる。命令メモリ402に関しては、暗号化コプロセッサはコードスクランブルキー502を変更して命令コード412を無意味にすることができる。この変更は、わずか1サイクルで完了できる。場合によっては、スクランブルキーを変更するには、スクランブルキーを記憶する少なくとも1つのレジスタをランダムなビットで上書きする必要があり得る。この論理はさらに、少なくとも1つのレジスタ内のランダムビットをゼロ、またはコンパイル時のランダムネットリスト定数などの他の定数値で上書きすることができる。
【0096】
暗号化コプロセッサは、少なくとも1つのレジスタ506を1つまたは複数のランダムビットなどのランダム性で上書きすることによって、中間値428を含む状態508を保護することもできる。場合によっては、状態508の保護は、中間値428を記憶する少なくとも1つのレジスタ506をランダムビットで上書きすることを必要とし得る。論理はさらに、少なくとも1つのレジスタ506内のランダムビットをゼロで上書きすることができる。この2段階のプロセスにより、電力署名の観察に基づいた一部の攻撃を阻止できる。
【0097】
安全な消去は、多くの方法でトリガすることができる。第1に、プロセッサ202上で動作するソフトウェアは、安全な消去を「手動で」トリガすることができる。第2に、安全な消去は、暗号化コプロセッサ118の内部であっても外部構成要素からであってもよいアラートに応答してトリガすることができる。第3に、暗号化コプロセッサ118は、内部クレンジング動作のために安全な消去を自動的にトリガすることができる。命令コード、データ、および状態情報を含む情報を保護するための追加および代替の実装例が本明細書で説明される。
【0098】
図6は、暗号化コプロセッサの安全な動作をサポートするためにランダム化されたビットを効率的に提供するための方式例600を示す。図示されるように、ランダム化されたビットを有する複数のレジスタ408は、少なくとも第1のレジスタ408-1および第2のレジスタ408-2を含むことができる。第1のレジスタ408-1は、第1のランダム性の品質604-1に従ってランダム化された複数の第1のビット602-1を記憶することができ、第2のレジスタ408-2は、第1のランダム性の品質604-1とは異なる第2のランダム性の品質604-2に従ってランダム化された複数の第2のビット602-2を記憶することができる。したがって、暗号化コプロセッサ118は、ランダム性の品質が変化する、または異なるレベルで、少なくとも2つのレジスタ内のランダム化されたビットにアクセスできる。
【0099】
例示的な実装では、一般に、ランダムビットレジスタ408は、2つ以上のレジスタを含むことができる。各それぞれのレジスタ408-Xは、それぞれのランダム性の品質604-Xに関連付けられた複数のビット602-Xのそれぞれのセットを記憶することができ、「X」は1より大きい正の整数を表す。複数のレジスタ408-1および408-2は、それぞれ、複数レベルのランダム性の品質604-1および604-2で、複数のランダムビット602-1および602-2への高速アクセスを可能にする。次に説明するように、さまざまなレベルのランダム性の品質のランダムビットを使用すると、「コスト」と品質のバランスを効率的に取ることができる。
【0100】
一部の暗号化動作および/または標準は、ランダム化されたビットの特定の品質レベルを伴うか、または規定する。しかし、特定の状況では、ランダム化されたビットの品質が高くなるほど、ランダム化されたビットを調達するためのコストが高くなる。コストは電力または時間に関係し得る。換言すれば、ランダム化の品質が高いほど、より多くの電力消費が必要となり得、および/またはランダム化されたビットを生成するためにより長い時間がかかり得る。複数のレジスタ408を使用することにより、暗号化コプロセッサは、それぞれの相対コストのバランスをとりながら、複数のランダム性の品質に迅速にアクセスできるようになる。換言すれば、暗号化動作または暗号化コプロセッサ118の機能をサポートする別の動作が、より低いコストに関連付けられたより低い品質のランダム性を使用できる場合、コントローラ406は、より低いランダム性の品質に関連付けられたビットを選択することができる。
【0101】
いくつかの実装では、第1のレジスタ408-1は、第1の品質のランダム性604-1に対応する複数の第1のビット602-1を記憶する。第2のレジスタ408-2は、第2の品質のランダム性604-2に対応する複数の第2のビット602-2を記憶する。動作例では、コントローラ406は、(例えば、図4の)暗号化動作430に関連付けられたランダム性の品質604に基づいて、第1のレジスタ408-1から複数の第1のビット602-1を、または第2のレジスタ408-2から複数の第2のビット602-2を選択的に検索することができ、その「サブ動作」も含む。
【0102】
ランダム性の相対的な品質により、例えば、第1のランダム性の品質604-1は、第2のランダム性の品質604-2よりも高くなり得る。このような場合、複数の第1のビット602-1は、乱数の非決定的ソース(例えば、乱数のアナログベースのエントロピーソースなどの予測不可能なビットソース)に対応し得る。複数の第2のビット602-2は、乱数の決定的ソース(例えば、乱数の過去の値に基づく将来の値のある程度の予測可能性を必要とし得るデジタルベースのソース)に対応することができる。暗号化コプロセッサ118が、例えば高品質のランダム化ビットを待っている間に停止する必要がないことを保証するために、コントローラ406は、複数の第1のビット602-1が使用される前に、複数の第1のビット602-1を第1のレジスタ408-1にプリフェッチすることができる。
【0103】
第1の(比較的高い)品質のランダム性604-1は、例えば、1つまたは複数の乱数生成および/または暗号関連の標準に準拠することができる(例えば、クラスPTG.2仕様またはAIS31準拠のクラスPTG.3仕様)。複数の第1のビット602-1は、前方および後方機密性を備えた保証されたエントロピーを有することができる。この品質のランダム化されたビットは、例えばキーの生成に使用できる。これらのランダム化されたビットは、少なくとも1つのレジスタとして実現でき、整合性が保護され得る単一エントリキャッシュを介してエントロピー分散ネットワーク(EDN)から取得できる。キャッシュは、エントリの数に関係なく、コントローラ406が一度に抽出するよりも多くのビットを保持できる可能性がある。キャッシュが空のときに読み取りを行うと、EDNから新しい乱数がフェッチされるまで暗号化コプロセッサが停止し得るが、このような停止は読み取り前にビットをキャッシュに適切にプリフェッチすることで回避できる。この第1のより高い品質のランダム性604-1は、以下のRNDの記述に対応することができる。
【0104】
第2の(比較的低い)品質のランダム性604-2は、より高速に、および/またはより低い電力量で生成することができる。複数の第2のビット602-2は、保証された機密性特性または特定の統計的特性のない乱数に対応し得る。このようなビットは、例えば、マスキングおよびブラインド方式で使用したり、アプリケーションの制御フローをランダム化したりするために使用できる。ランダム化されたビットは、軽量PRNGを含むローカル擬似乱数発生器(PRNG)から供給できる。PRNGの例には、xohiro PRNGや、1つまたは複数の線形フィードバックシフトレジスタ(LFSR)を使用して追加のランダム化ビットをデジタル的に生成するPRNGが含まれる。LFSRは、SBOXによってシャッフルされる出力を持つガロア型LFSRで実装できる。生成は十分に高速であるため、プリフェッチを行わなくても暗号化コプロセッサが停止する必要はない。この第2の、より低い品質のランダム性604-2は、以下のURND記述に対応することができる。本明細書では、異なる品質のランダム性を有するランダム化ビットを生成、記憶、またはアクセスするための追加および代替の実装例について説明する。
【0105】
図7は、暗号化コプロセッサによる命令コードの安全な実行を確認するための方式例700を示す。図示されるように、暗号化コプロセッサ118は、命令コード412の実行を保護するための複数のレジスタを含むことができる。説明される実装では、2つのレジスタが示されるが、代わりに1つまたは2つ以上のレジスタを使用することもできる。1つのレジスタ702は、命令カウント706を記憶することができる。別のレジスタ704はチェックサム708を記憶することができる。
【0106】
いくつかの実装では、コントローラ406は、命令コード412の命令が何個実行されたかをレジスタ702内の命令カウント706として追跡することができる。レジスタ702は、命令カウンタとして実現することも、命令カウンタとして機能することもできる。したがって、命令カウント706の値は、(例えば、図4の)暗号化動作430などの動作を実行するために実行された命令の量を表すことができる。暗号化コプロセッサ118は、実行された命令の量を命令カウント706としてプロセッサ202に提供することができる。
【0107】
命令カウント706は、レジスタ702または別のレジスタ内の値をプロセッサ202に公開することによって提供することができる(例えば、図3-1~3-3を参照して上述したように)。追加的にまたは代替的に、暗号化コプロセッサ118は、命令カウント706の値を、相互接続110または専用通信パスを介してプロセッサ202に送信することができる。プロセッサ202は、命令カウント706が、特定の動作について実行される命令の予期数と一致することを確認することができる。そうでない場合、プロセッサ202はアラートを生成することができる。
【0108】
他の実装では、コントローラ406は、命令コード412に対してチェックを実行して、チェックサム708を生成することができる。このチェックは、例えば、チェックサム708を生成するためのハッシュ動作を使用して実行することができる。命令コード412が修正されている場合、チェックサム708は、プロセッサ202に既知のチェックサムと一致しないことになる。チェックサム708は、現在命令メモリ402に記憶されている、または命令メモリ402にロードされている命令コード412の全部または一部から導出することができる。チェックサム708は、例えば、命令メモリ402への書き込みごとに更新される累積CRCチェックサム(例えば、32ビットCRC-32-IEEEチェックサム)を使用して生成することができる。暗号化コプロセッサ118は、チェックサム708をプロセッサ202に提供することができる。いくつかの実施形態では、コントローラ406は、データメモリ404(例えば、図4および図5の)に記憶されたデータ414に対してチェックサム708を生成することもできる。したがって、チェックサム708は、データ414と組み合わせて命令コード412の整合性を共同で確認するために使用することができる。あるいは、コントローラ406は、データ414の整合性を独立して確認できるように、命令コード412とは別にデータ414のチェックサムを生成することもできる。
【0109】
チェックサム708は、レジスタ704または別のレジスタ内の値をプロセッサ202に公開することによって提供することができる(例えば、図3-1~3-3を参照して上述したように)。追加的にまたは代替的に、暗号化コプロセッサ118は、相互接続110または専用の通信パスを介して、チェックサム708の値をプロセッサ202に送信することができる。プロセッサ202は、チェックサム708が、命令コード412の特定の部分について予期されるチェックサム値と一致することを確認することができる。そうでない場合、プロセッサ202はアラートを生成することができる。命令カウントとチェックサムのセキュリティ方式は、別個に使用することも、一緒に使用することもできる。命令カウントおよびチェックサムセキュリティ方式の追加および代替の実装例が本明細書で説明される。
【0110】
次に、積和演算(MAC)構成要素について説明し、その後、複数のセキュリティ関連の機能について説明する。複数のセキュリティ関連の機能には、図4から7に関して上で説明した機能を拡張および/またはさらに説明するいくつかの機能が含まれる。積和演算(MAC)装置(例えば、図4のMAC装置426)の一例では、性能ターゲットを満たすために広い整数乗算器が使用される。しかし、広い乗算装置はかなりのシリコン領域を消費し得、動作周波数に影響を与え得る(例えば、設計の複雑さおよび/または攻撃対象領域を減らすために、特定の設計に比較的低いパイプライン処理が採用されている場合)。
【0111】
暗号化コプロセッサ118は、例えば、サイクル数の削減と周波数目標の達成との間のバランスとして、64ビット幅の乗算回路を含むことができる。(使用例によっては、例えば128ビット幅の乗算装置では、領域の点で遅すぎるかコストが高すぎる場合がある。)暗号化コプロセッサ118に256ビットのアキュムレータを追加して、より広範囲の乗算を実行するために必要な動作を減らすことができる。積和演算は1サイクルで実行できる。長い乗算を使用する場合、これは、MAC装置が個別の加算命令を必要とせずに、サイクルごとに1つの中間積を生成および累積できることを意味する。例えば、128ビットの乗算は4サイクルで完了でき、256ビットの乗算は16サイクルで完了できる。
【0112】
セキュリティ関連の機能のさまざまな例を以下に説明する。説明される各機能には、限定ではなく例のみとして列挙される特定の実装が含まれ得る。説明されているセキュリティ機能の一部は、特定の脅威や攻撃手段に対抗するように設計される。したがって、各セキュリティ機能には、対応する適切な対策の説明が含まれ得る。暗号化コプロセッサ118の19個のセキュリティ関連機能を以下に説明する。
【0113】
第1に、整合性保護コードを実装することができる。情報(例えば、データや命令)を定期的に再符号化することなく(潜在的な障害挿入ポイントとなり得る)、情報の包括的な整合性保護を提供するには、同じ整合性保護コードは、コプロセッサのすべての部分を含め、コプロセッサのさまざまな部分で使用できる。この保護は、例えば32ビットのデータワードに適用でき、7ビットのエラー訂正コード(ECC)を含む39ビットの符号化データを生成できる。場合によっては、保護コードは反転(39,32)HsiaoSEC-DEDECCであり得る。この最小ハミング距離は4で、符号化された39ビットワード内で最大3つのエラーを検出できる。この例の保護コードは、最大3つの反転ビットのエラー検出に使用できる。そうである場合、エラー訂正は実行されない。元のHsiaoコードとは対照的に、このバージョンの出力(またはそのビットの少なくとも一部)を反転して、すべてゼロのワード(32’h0)とすべて1のワード(32’h1)は有効なコードワードではないコードを生成できる。これにより、すべてのビットを0にセットする攻撃、またはすべてのビットを1にセットする攻撃の検出が可能になる。
【0114】
第2に、情報スクランブルメカニズムを実装することができる。情報を保護するために、さまざまなスクランブルアルゴリズムのいずれかを使用してスクランブルを実行できる。例えば、削減ラウンドPRINCE暗号を使用して、暗号化コプロセッサにある情報やセキュリティ回路の他の構成要素を暗号化することができる。例えば、アーキテクチャは、メモリマクロに書き込まれるデータを(例えば、比較的弱く)暗号化するために、CTRモードで削減ラウンドPRINCE暗号プリミティブを使用できる。プレーンCTRモードでは、キーストリームが「単に」XOR演算され得るため、データが拡散しない可能性がある。したがって、バイト単位の拡散は、1つまたは複数の(例えば、比較的浅い)置換/並べ替えネットワーク(S&Pネットワーク)層を使用して実行され、バイト内でアバランシェ効果を提供することができる。さらに、線形アドレス指定空間を破るために、(例えば、比較的浅い)置換/並べ替えネットワークおよびノンスを使用して構築された全単射スクランブル関数をアドレスに渡すことができる。ノンスのため、アドレスマッピングはレジスタ転送レベル(RTL)符号化によって静的に指定できない場合があり、そのため、アドレスの再マッピングは実行時にも変更され得る。
【0115】
第3に、整合性保護を1つまたは複数のレジスタファイルに適用することができる。例えば、32ビットGPRと256ビットWDRは、記憶されたデータのグリッチを検出するために、データに加えてECCを記憶できる。検出されたエラー(例えば、任意の検出されたエラー)は、致命的なアラートを引き起こし得る。各32ビットデータワードは、それぞれの整合性保護コードで保護できる。したがって、256ビットWDRでは、それぞれのECCを各32ビットワードに個別に適用できる。場合によっては、データおよび対応する整合性ビットは、レジスタファイルによって消費されたり、レジスタファイルから出力されたりすることができる。着信データにECCが付加されていない場合、ECCは、着信データの整合性を確認した後、レジスタファイルにデータを書き込む前に計算される。
【0116】
レジスタファイルに関しては、レジスタファイルから読み取られるデータおよび/またはレジスタファイルに書き込まれるデータに対して、対応するECCビットを渡すことができる。あるいは、ECCビットは、レジスタファイルから読み取るときに削除および/またはALUなどの特定の内部装置へのデータ送信から省略したりすることもできる。ALUによって生成されたデータの場合、生成されたデータと併せてレジスタファイルに記憶(または送信)するために、生成されたデータのECCビットが計算され得る。
【0117】
第4に、整合性保護をデータメモリに適用することができる。暗号化プロセッサのデータメモリの幅は256ビットであるが、データメモリでは32ビットに整列された32ビットワードアクセスが可能である。データメモリの整合性はエラー検出コードで保護できる。各(32ビット整列の)32ビットデータワードは、それぞれの整合性保護コードで保護できる。検出されたエラー(例えば、任意の検出されたエラー)は、致命的なアラートを引き起こし得る。場合によっては、例えば、ECCビットと対応するデータをコプロセッサのさまざまな装置、構成要素、およびその他の回路に伝播することによって、データの再符号化を回避できる。
【0118】
データメモリに関しては、コプロセッサ内で消費されるデータを再符号化する必要はない。しかし、整合性ビットは、例えばデータメモリとインターフェースするロードストア装置(LSU)を使用するコプロセッサによって記憶することができる。システムバスが同じタイプのECCデータを伝播または提供する場合、システムバスを介して読み取りまたは書き込みのためにアクセスされるデータを再符号化する必要はない。ここで、システムバスは、相互接続の一部として、他の周辺デバイスまたはメインプロセッサとの間のデータ転送を可能にすることができる。
【0119】
第5に、データメモリは、例えばスクランブルキーを使用してスクランブルすることができる。暗号化コプロセッサのデータメモリは、耐改ざん性を高めるためにスクランブルされることができる。また、データスクランブルは、スクランブルにより単一ビットグリッチが出力に予測不可能な結果をもたらし得るため、グリッチ攻撃の検出が容易になり得る。スクランブルキーは、少なくとも安全なクリア動作が開始されるたびになど、定期的に変更(例えば、回転、置換、または修正)することができる。任意で、暗号化コプロセッサは、例えば、(スクランブル解除されていない)データに対する要求を受信したとき、または(スクランブル解除されていない)データに対する動作を実行するように命令されたときに、スクランブル動作を逆にするように動作することができる。
【0120】
第6に、整合性保護を命令メモリに適用することができる。命令メモリの整合性はエラー検出コードで保護できる。例えば、各(32ビット整列の)32ビット「データ」ワードは、整合性保護コードで保護できる。命令メモリに記憶された命令コード内で検出されたエラー(例えば、任意の検出されたエラー)は、致命的なアラートを引き起こし得る。データメモリに記憶されたデータに関して上述したように、整合性コードを再生するための命令の再符号化は、ECCビットを伝播および/または復元することによって多くの状況で回避することができる。
【0121】
命令メモリに関しては、システムバスが同じ種類のECCデータを利用しない場合、システムバスを介して読み取りまたは書き込み動作でアクセスされる命令コードを再符号化することができる。それ以外の場合は、既存のECCデータがシステムバスへ、またはシステムバスからさらに伝播され得る。一般に、デコーダによって読み取られた命令は、使用前に整合性チェックを行うことができるが、その後、整合性データは破棄され得る。
【0122】
第7に、例えばスクランブルキーを使用して命令メモリをスクランブルして、命令メモリに記憶された命令コードをスクランブルすることができる。暗号化コプロセッサの命令メモリをスクランブルして、改ざん耐性を高めることができる。また、単一ビットのグリッチは出力に予測不可能な結果をもたらし得るため、スクランブルによりグリッチ攻撃をより簡単に検出できるようになる。スクランブルキーは、少なくとも安全なクリア動作が開始されるたびになど、定期的に変更(例えば、回転、置換、または修正)することができる。任意で、暗号化コプロセッサは、例えば、命令コードによって指定された動作を実行する命令またはコマンドを受信すると、スクランブル動作を逆転するように動作することができる。
【0123】
第8に、異なるレベルまたは品質の乱数生成(RNG)を実装することができる。暗号化コプロセッサは、さまざまな目的で乱数のソースを利用できる。RNGは少なくともソフトウェア強化方式の一部として使用できるため、信頼性が高くタイムリーなランダムビットのソースは安全な処理環境に貢献できる。ランダムビットは、例えば、コントロールアンドステータスレジスタ(CSR)および/または広い特殊目的レジスタ(WSR)などの少なくとも1つのレジスタの読み取りを介して取得できる。
【0124】
場合によっては、ランダムビットの2つのソースに2つの異なる品質のランダム性を提供することができる。例えば、第1の品質は、ランダムビットについて「RND」と表すことができる。このRNDは、1つまたは複数の標準に準拠した暗号強度のランダム性に関する認証「要件」を満たし得る比較的高品質のビットを表す。これらのRNDビットは、キー生成などに使用でき、EDN要求から「直接」取得できる。第2の品質は、「無制限」のランダムビットについて「URND」と表され得る。(これらのビットは実際には無制限ではない場合があるが、コプロセッサの観点からは実質的に無制限のランダムビットのソースであるように見えるほど高速に生成され得る。)このURNDは比較的低品質のビットを表す。これらの低品質ビットは、例えばローカル擬似乱数発生器(PRNG)から取得され得る。場合によっては、PRNGには、EDN要求から定期的に再シードされる少なくとも1つの線形フィードバックシフトレジスタ(LFSR)が含まれ得る。
【0125】
例示的な実装では、RNDビットは、256ビットキャッシュを介して提供され得る。このキャッシュが空のときにRNDへの読み取りが発生した場合、それを埋めるためのEDN要求を迅速に開始できるが、RNDビットが使用可能になるまで暗号化コプロセッサは停止し得る。RNDから読み取るとキャッシュが空になり得る。しかし、プリフェッチは、RNDキャッシュを埋めるためのEDN要求を開始する特別なCSRから読み取ることによって実行できる。RNDへの読み取りがプリフェッチ要求後の適切な時間後に発生する場合、暗号化コプロセッサは停止する必要はない。一般に、ランダム化されたビットを再充填できる速度により、URNDからの読み取りは暗号化コプロセッサをブロックしない。
【0126】
一般に、RNG方式は、いくつかの異なる態様のうちの1つまたは複数を含むことができる。例えば、ベースISAに別個の32ビット乱数ソースを提供することも、余分なビットを廃棄して256ビット乱数ソースを使用することもできる。LFSRは、メインプロセッサまたは暗号化コプロセッサの制御下で、またはその上で実行されるソフトウェアによって再シードできる。再シードは、例えば、周期的な時間間隔またはURNDアクセス間隔で行うことができる。場合によっては、ソフトウェアがRNDキャッシュの再充填および/またはフラッシュを制御し得る。代替的または追加的に、RNDキャッシュは、暗号化コプロセッサの開始またはリセットに応答してフラッシュおよび/または再充填されてもよい。
【0127】
第9に、暗号化コプロセッサの状態(例えば、記憶された「動作」情報)を攻撃に対して強化することができる。暗号化コプロセッサの実行に影響を与える、または影響を与える可能性のある状態マシンまたはその他の状態値がレジスタに保持されている場合、これらの場所をグリッチに対して強化することができる。以下の表(表1)は、暗号化コプロセッサの状態例と、対応する状態情報を保護するためにさまざまな実装に適用できる対応する強化戦略の例を識別する。
【0128】
【表1】
【0129】
第10に、暗号化コプロセッサは、その情報(例えば、状態)をクリアできるようにすることができる。状態強化に関連して、または状態強化の一部として、暗号化コプロセッサは、命令メモリおよびデータメモリを含む、それが記憶する情報(例えば、それが記憶する状態)を安全にクリアするメカニズムを提供することができる。このメカニズムは、クリアデータメモリ、クリア命令メモリ、クリア内部メモリ、それらの組み合わせなどを含み得る他の「安全なクリア」メカニズムのスーパーセットとして実装できる。
【0130】
安全なクリアメカニズムは、例えば、バスインターフェースを介してホストソフトウェアによってトリガすることができる。このメカニズムは、暗号化コプロセッサが保管している情報が侵害され得る、または侵害されてきた可能性があると判断した特定の状況で自動的に開始され得る。例えば、暗号化コプロセッサは、次の状況で完全安全なクリアなどの安全なクリアを開始できる。1つは、ライフサイクルコントローラがエスカレーション信号を通じて安全なクリアを要求できることである。2つ目は、致命的なアラートが発行され得ることである。後者の場合、ローカルな修復アクションとして安全なクリアを実行できる。他の状況では、ソフトウェアは、以下で説明するように、関連するレジスタに「3’b111」を書き込み、個々の情報クリアビットをセットするなど、レジスタに書き込むことによって情報クリアをトリガできる。
【0131】
第11に、暗号化コプロセッサは、データメモリを安全にクリアできるようにすることができる。暗号化コプロセッサのデータメモリは、動作中に機密データを記憶したり、そのようなデータをホストプロセッサと交換したりするために使用できる。本明細書で説明するように、要求に応じてデータメモリを安全にクリアするメカニズムを提供することができる。データメモリのクリアは、データメモリのスクランブルキーを安全に置き換えることによって実行できる。これにより、データメモリに記憶されているスクランブルデータが使用できなくなる。
【0132】
ほんの一例として、キー交換は2つの部分からなるプロセスとして実装することができる。第1の部分では、暗号化コプロセッサは、ローカルLFSRからのビットなどのランダム性を備えたデータメモリスクランブルプリミティブのスクランブルキー(例えば、128ビット)を上書きする。このアクションは時間が決定的であり、わずか1サイクルで完了し得る。第2の部分では、暗号化コプロセッサは、スクランブル変数またはキーを提供するモジュールから1つまたは複数の新しいスクランブルパラメータを要求する。この要求は完了するまでに複数のサイクルがかかり得る。場合によっては、ソフトウェアは、クリアデータメモリレジスタフィールドに「1」を書き込むなど、レジスタに書き込むことによって安全なデータクリア動作を開始できる。
【0133】
第12に、暗号化コプロセッサは、命令メモリを安全にクリアできるようにすることができる。暗号化コプロセッサ内の命令メモリには、アプリケーションコードまたは命令コードを含めることができる。コードには秘密が含まれ得るため、これらは同様に保護可能な資産とみなすことができる。したがって、要求に応じて命令メモリを安全にクリアするメカニズムを提供できる。命令メモリのクリアは、命令メモリに記憶されているスクランブルされた命令コードを使用できなくする命令メモリスクランブルキーやコードスクランブルキーを安全に交換することで実行できる。
【0134】
ほんの一例として、キー交換は2つの部分からなるプロセスとして実装することができる。第1の部分では、暗号化コプロセッサは、ローカルLFSRからのビットなどのランダム性を備えた命令メモリスクランブルプリミティブのスクランブルキー(例えば、128ビット)を上書きする。このアクションは時間が決定的であり、わずか1サイクルで完了し得る。第2の部分では、暗号化コプロセッサは、スクランブル変数またはキーを提供するモジュールから1つまたは複数の新しいスクランブルパラメータを要求する。この要求は完了するまでに複数のサイクルがかかり得る。場合によっては、ソフトウェアは、クリア命令メモリレジスタフィールドに「1」を書き込むなど、レジスタに書き込むことによって安全な命令コードのクリア動作を開始できる。
【0135】
第13に、暗号化コプロセッサは、状態を安全にクリアできるようにすることができる。暗号化コプロセッサは、一般的な内部状態を安全に消去するメカニズムを提供できる。これにより、ターゲットの状態消去の命令およびデータメモリを除外できる。消去は、状態の一部または内部状態の「すべて」をターゲットにすることができる。次の状態は、ローカルLFSRからのデータなどのランダムデータで消去できる。状態には、GPRやWDRなどのレジスタファイル(例えば、汎用レジスタや広いデータレジスタ)が含まれ得る。状態にはアキュムレータレジスタを含めることもでき、これはACC WSRを通じてアクセスできる場合がある。状態には、フラグレジスタやモードレジスタなど、ソフトウェアで書き込み可能な特殊目的のレジスタをさらに含めることができる。
【0136】
さらに、内部状態のクリアの一部として、ループおよび/またはコールスタックポインタをリセットすることができる。場合によっては、すべての内部状態を安全に消去するには複数のサイクルがかかり得る。ソフトウェアは、内部状態のクリアに対応するレジスタに書き込むことにより、状態情報のデータ保護された消去を開始できる。状態は、1つまたは複数の動作の完了に応答してクリアされる(例えば、状態クリアのトリガが行われる)ことができる。
【0137】
第14に、未使用のデータパスおよび/または制御パスは「ブランク」にすることができる。「スカッシング」とも呼ばれ得るブランキングは、実行中の命令に関係のないデータが漏洩する電力または電磁署名を防ぐために使用できる。この技術を使用すると、暗号化コプロセッサは、機能装置を介して、未使用のレジスタファイルアドレスや未使用のデータパスなどの信号を、ゼロまたはゼロ以外の値であり得る定数または固定/静的値にブランクにすることができる。このブランキングにより、実行されている命令に関係のないデータからの電力または電磁的署名が検出可能になるのを防ぐ、または少なくともその可能性を減らすことができる。この技術は、領域コストとタイミングへの影響をわずかに抑えて実装できる。ブランキングは、異なるデータおよび/または制御パスに選択的に適用できる。
【0138】
第15に、チェックサムを使用して、命令メモリにロードされた命令コードに基づいて実行可能な命令を保護することができる。暗号化コプロセッサは、命令メモリに書き込まれる命令コードに対してチェックサムを計算できる。暗号化コプロセッサは、バスアクセス可能なCSRなどを介して、さらにこのチェックサムをホストソフトウェアで利用できるようにすることもできる。このようにして、チェックサムは、ホストプロセッサによる検索のために指定されたレジスタ内で利用可能になり得る。したがって、このチェックサムは、暗号化コプロセッサに書き込まれた命令コードが正しく受信され、記憶されていることを確認するための比較的軽量の整合性チェックとしてホストプロセッサによって使用できる。
【0139】
チェックサムは、複数の異なる方法のいずれかで計算することができる。例えば、32ビットの巡回冗長チェック(CRC)(CRC32)または別のチェックサムは、命令コードが命令メモリに書き込まれるときにオンザフライで計算できる。したがって、チェックサムは、受信する命令コードデータの順序に依存し得る。追加的にまたは代替的に、命令コードはチェックサムの要求に応答して順次読み取ることができるが、このプロセスはチェックサムを提供するのにさらに時間がかかり、および/または処理遅延が生じ得る。
【0140】
命令コードに対するチェックサムを提供する実装に関して、例示的な態様は、メインプロセッサからのデータの読み取りバックを含むことができる。態様には、メインプロセッサによって書かれた命令に基づいて計算される比較的単純なチェックサム(例えば、CRC32)をCSRにロードすることも含まれ得る。メインプロセッサはチェックサムをレジスタから読み取り、それをメインプロセッサによって計算されたチェックサム、またはメインプロセッサが知っているチェックサムと比較できる。暗号化コプロセッサは、追加的にまたは代替的に、データメモリに記憶されているデータのチェックサムを計算できる。したがって、暗号化コプロセッサは2つの個別のチェックサム、または結合されたチェックサムを生成できる。態様には、より強力な整合性チェックの実行を可能にするために、暗号化コプロセッサにROMコードを組み込むことをさらに含めることができる。
【0141】
第16に、実行された命令カウントをホストソフトウェアに提供することができる。暗号化コプロセッサは、動作が開始されてから実行された命令の数または量をカウントできる。暗号化コプロセッサは、指定されたレジスタなどを介してホストソフトウェアにカウントを提供することもできる。ホストソフトウェアは、実行された命令の数を使用して、実行の早期終了など、暗号化コプロセッサによって実行されているアプリケーションの予期しない実行のいくつかの形式を検出できる。ホストソフトウェアは、この数値を適切に解釈する責務があり得る。暗号化コプロセッサ上で実行される一部のアルゴリズムは、通常、または常に同じ量の命令を実行できる(例えば、多くの暗号化および復号化アルゴリズム)。しかし、他のアルゴリズムでは、実行時間や実行される命令の数がより可変であり得る(RSAキーの生成など)。
【0142】
第17に、命令デコーダを複製することができる。暗号化コプロセッサには、複製された復号論理と、制御論理の少なくとも一部の複製を含めることができる。複製された論理ブロックの1つは反転信号を出力できる。場合によっては、信号反転は、各ブロックの論理実装が異なるように、複製されたブロックの出力で複数のNOTゲートを使用して実現される。制御信号が実行ブロックに到達すると、回路は複製された信号が相互に反転していることをチェックして確認できる。そうでない場合、チェック回路はアラートを発することができる。
【0143】
デコーダブロックの複製は、命令ワードに対するECC保護が破棄されると、復号論理および/または制御論理に対する障害挿入攻撃に対して暗号化コプロセッサを強化することができる。1つの複製されたブロックに挿入された障害は、互いの逆バージョンではなくなった結果の制御信号の不一致により、明らかになるか検出可能になる。各ブロックの論理実装は異なり得るため、確認アラートをトリガせずに制御信号を変更するには、2つの個別の挿入障害が必要になる。
【0144】
第18に、計算リソースを二重にすることができる。暗号化コプロセッサは二重にした演算装置を持つことができ、回路は計算ごとに両方の出力が一致することをチェックできる。これにより、グリッチ攻撃に対する対抗策を形成できる。しかし、二重にしたALUは、積和演算(MAC)装置の複製により、かなりの領域と電力を消費し得る。あるいは、ソフトウェアは、代わりにより重要な計算を繰り返し、結果が一致することをチェックすることによって、攻撃の検出を支援することもできる。
【0145】
第19に、命令フローの整合性を実装することができる。命令フローの整合性により、命令がソフトウェア作成者の意図どおりに実行されることが保証され得る。命令フローの整合性には、特殊なケースとして制御フローの整合性(CFI)が含まれるが、命令フローの整合性には基本ブロック内の命令も含まれる。
【0146】
安全な暗号化コプロセッサのための方式、技術、およびハードウェアを全体的に説明してきたが、ここでの説明は例示的な方法に移る。
【0147】
安全な暗号化コプロセッサの方法例
例示的な方法を、図8~13の流れ図を参照して以下に説明する。図8は、暗号化コプロセッサにセキュリティを提供するための装置の例示的なプロセスを示す流れ図800である。流れ図800は、6つのブロック802~812を含む。例示的なプロセスの動作は、(例えば、図1および図2の)セキュリティ回路106によって実行することができる。例えば、これらの動作は、プロセッサ202および暗号化コプロセッサ118(例えば、図1および図2の)によって実行され得る。
【0148】
ブロック802で、プロセッサは、実行される暗号化動作を決定する。例えば、プロセッサ202は、実行すべき暗号化動作430を決定することができる。暗号化動作430は、例えば、本明細書で説明するセキュリティ回路106のセキュリティ関連機能のいずれかを有効にするかサポートする対称または非対称暗号化動作を含み得る。
【0149】
ブロック804で、プロセッサは、暗号化動作を実行する要求を暗号化コプロセッサに送信する。例えば、プロセッサ202は、暗号化動作430を実行する要求を暗号化コプロセッサ118に送信することができる。場合によっては、プロセッサ202は、暗号化コプロセッサ118の一部である、または暗号化コプロセッサ118に関連付けられている少なくとも1つのレジスタに命令コードをロードすることができる。暗号化動作430が入力を使用する場合、プロセッサ202は、1つまたは複数の入力を1つまたは複数のレジスタにロードすることもできる。レジスタベースの通信の例は、図3-1から3-3を参照して本明細書で説明される。追加的にまたは代替的に、プロセッサ202は、相互接続110上でシグナリング、またはプロセッサ-暗号化コプロセッサ通信専用の通信経路を駆動して、暗号化動作430を実行する要求を送信することができる。
【0150】
ブロック806で、暗号化コプロセッサは、暗号化動作を実行する要求を受信する。例えば、暗号化コプロセッサ118は、暗号化動作430を実行する要求を受信することができる。要求の受信は、ブロック804を参照して上で説明した送信選択肢のいずれかに対応する受信側動作によって実装され得る。例えば、暗号化コプロセッサ118のコントローラ406は、新しい動作コードがレジスタにロードされたことを検出することができる。
【0151】
ブロック808で、暗号化コプロセッサは、命令コードおよび中間値を使用してデータに対する暗号化動作を実行し、結果を取得する。例えば、暗号化コプロセッサ118は、命令コード412および中間値428を使用してデータ414に対して暗号化動作430を実行し、結果432を取得することができる。ここで、コントローラ406は、結果432を計算しながら、少なくとも1つの中間値428を生成するデータ414に基づいて命令コード412を実行することができる。結果432は、数値(例えば、キー)および/または正または負の指示であり得る。
【0152】
ブロック810で、暗号化コプロセッサは、データ、中間値、または命令コードのうちの少なくとも1つを不正アクセスから保護する。例えば、暗号化コプロセッサ118は、データ414、中間値428、または命令コード412のうちの少なくとも1つを不正アクセスから保護することができる。したがって、暗号化コプロセッサ118は、図5図7を参照して本明細書で説明される方式のうちの任意の1つまたは複数および/または本明細書に記載されている19の技術のうちのいずれか1つまたは複数を実装することができ、これには、「安全な暗号化コプロセッサのための方式、技術、およびハードウェアの例」というタイトルのサブセクションでセキュリティ関連の機能として上で説明した技術が含まれる。方式例には、情報を安全に消去することと(例えば、図5を参照して説明したように)、セキュリティ関連の動作をサポートするために、2つ以上のレジスタを介して異なる品質のランダム性を有するランダム化されたビットを利用することと(例えば、図6を参照して説明したように)、(例えば、図7を参照して説明したように)命令コードに対して生成された命令カウントまたはチェックサムのうちの少なくとも1つを用いて、命令コードの実行を保護することと、が含まれ得る。これらの方式および技術は、個別に使用することも、任意の組み合わせで組み合わせて使用することもできる。
【0153】
ブロック812で、暗号化コプロセッサは結果をプロセッサに提供する。例えば、暗号化コプロセッサ118は、結果432をプロセッサ202に提供することができる。これは、結果432をプロセッサ202が読み取り可能なレジスタに記憶することによって、結果432を相互接続110または専用バス上に駆動することによって、肯定または否定の指示、それらの組み合わせなどを通知することによって実行され得る。
【0154】
図9は、デジタル情報などの記憶された状態を保護するための暗号化コプロセッサのための例示的なプロセスを示す流れ図900である。流れ図900は、4つのブロック902~908を含む。例示的なプロセスの動作は、(例えば、図1および図2の)セキュリティ回路106によって実行することができる。例えば、動作は、暗号化コプロセッサ118(例えば、図1、2、および4の)のコントローラ406(例えば、図4および5の)によって少なくとも部分的に実行され得る。
【0155】
ブロック902で、暗号化コプロセッサはデジタル情報を取得する。例えば、暗号化コプロセッサ118は、別の構成要素からデジタル情報を受信することによって、または内部で生成することによって、デジタル情報を取得することができる。デジタル情報には、例えば、命令コード412、データ414、または少なくとも1つの中間値428(または他の状態情報)が含まれ得る。
【0156】
ブロック904で、暗号化コプロセッサは、少なくとも1つのスクランブルキーを使用してデジタル情報をスクランブルし、スクランブルされたデジタル情報を生成する。例えば、暗号化コプロセッサ118は、少なくとも1つのスクランブルキー502または504を使用してデジタル情報をスクランブルし、スクランブルされたデジタル情報を生成することができる。したがって、スクランブルされたデジタル情報は、命令コード412のスクランブルされたバージョンおよび/またはデータ414のスクランブルされたバージョンを含み得る。
【0157】
ブロック906で、暗号化コプロセッサは、スクランブルされたデジタル情報を少なくとも1つのメモリに記憶する。例えば、暗号化コプロセッサ118は、スクランブルされたデジタル情報を、命令メモリ402またはデータメモリ404などの少なくとも1つのメモリに記憶することができる。場合によっては、コントローラ406は、スクランブルされたデジタル情報を受信したとき、または内部で生成されたときに記憶することができる。他の場合には、コントローラ406は、メモリからデジタル情報を読み取り、デジタル情報をスクランブルしてスクランブルされたデジタル情報を生成し、次いで、スクランブルされたデジタル情報を同じメモリに書き戻すことができる。
【0158】
ブロック908で、暗号化コプロセッサは、少なくとも1つのスクランブルキーを変更することによってデジタル情報へのアクセスを防止する。例えば、暗号化コプロセッサ118は、少なくとも1つのスクランブルキー(例えば、それぞれコードスクランブルキー502またはデータスクランブルキー504)を変更することによって、デジタル情報(例えば命令コード412またはデータ414)へのアクセスを防止することができる。そうするために、コントローラ406は、スクランブルキーの少なくとも一部をランダムなビットで置き換えることができる。攻撃者は依然として少なくとも1つのメモリからスクランブルされたデジタル情報を読み取ることができる可能性があるが、スクランブルキーが記憶されているレジスタ内のビットを変更することによってスクランブルキーが効果的に削除されているため、「元の」スクランブル解除されたデジタル情報にはアクセスできない。
【0159】
図10は、暗号化コプロセッサが異なるレベルのランダム性の品質を有するランダム値を利用して、関連する暗号化動作のセキュリティを効率的に保護するプロセス例を示す流れ図1000である。流れ図1000は、3つのブロック1002~1006を含む。例示的なプロセスの動作は、(例えば、図1および図2の)セキュリティ回路106によって実行することができる。例えば、動作は、暗号化コプロセッサ118(例えば、図1、2、および4の)のコントローラ406(例えば、図4および図6の)によって少なくとも部分的に実行され得る。
【0160】
ブロック1002で、暗号化コプロセッサは、第1のランダム性の品質に対応する複数の第1のビットを第1のレジスタに記憶する。例えば、暗号化コプロセッサ118は、第1のランダム性の品質604-1に対応する複数の第1のビット602-1を第1のレジスタ408-1に記憶することができる。例えば、コントローラ406は、乱数の非決定的ソースから複数の第1のビット602-1を取得し、複数の第1のビット602-1を第1のレジスタ408-1にロードすることができる。場合によっては、そのようなソースは、ランダムまたは予測不可能な物理的特性を使用して第1のレジスタ408-1のランダム化ビットを生成するアナログベースのメカニズムを使用することができる。
【0161】
ブロック1004で、暗号化コプロセッサは、第1のランダム性の品質とは異なる第2のランダム性の品質に対応する複数の第2のビットを第2のレジスタに記憶する。例えば、暗号化コプロセッサ118は、第1のランダム性の品質604-1とは異なる第2のランダム性の品質604-2に対応する複数の第2のビット602-2を第2のレジスタ408-2に記憶することができる。ここで、コントローラ406は、乱数の決定的ソースから複数の第2のビット602-2を取得することができる。場合によっては、そのようなソースは、デジタルベースのメカニズムを使用し得、ローカル擬似乱数発生器(PRNG)は、追加のランダム化ビットをデジタル的に生成するための1つまたは複数の線形フィードバックシフトレジスタ(LFSR)を有することができ、第2のレジスタ408-2のランダム化ビットを生成するために使用される。
【0162】
ブロック1006で、暗号化コプロセッサは、少なくとも1つの暗号化動作に基づいて、第1のレジスタから複数の第1のビット、または第2のレジスタから複数の第2のビットを選択的に検索する。例えば、暗号化コプロセッサは、少なくとも1つの暗号化動作に基づいて、第1のレジスタ408-1から複数の第1のビット602-1を、または第2のレジスタ408-2から複数の第2のビット602-2を選択的に検索することができる。本明細書で説明されるように、相対的により機密性の高い暗号化動作は、より高いランダム性の品質(例えば、非対称キー生成または暗号標準を満たすため)に関連付けられ得、比較的機密性が低い暗号化動作は、より低いランダム性の品質に関連付けられ得る。したがって、コントローラ406は、実行される対応する暗号化動作の機密性に基づいて、選択されたレジスタ408からランダム化されたビットを検索することができる。
【0163】
図11は、命令コードの確認を可能にすることによって暗号化動作を保護するための暗号化コプロセッサのための例示的なプロセスを示す流れ図1100である。流れ図1100は、3つのブロック1102~1106を含む。例示的なプロセスの動作は、(例えば、図1および図2の)セキュリティ回路106によって実行することができる。例えば、動作は、暗号化コプロセッサ118(例えば、図1、2、および4の)のコントローラ406(例えば、図4および7の)によって少なくとも部分的に実行され得る。
【0164】
ブロック1102で、暗号化コプロセッサは命令コードを取得する。例えば、暗号化コプロセッサ118は命令コード412を取得することができる。場合によっては、暗号化コプロセッサ118は、暗号化動作を実行する要求と併せて、相互接続110または専用経路を介してホストプロセッサ202から命令コード412を受信することができる。他の場合には、コントローラ406は、暗号化コプロセッサ118の命令メモリ402などのメモリから命令コード412を検索することができる。
【0165】
ブロック1104で、暗号化コプロセッサは命令コードに基づいて少なくとも1つのパラメータを生成する。例えば、暗号化コプロセッサ118は、命令コード412に基づいて少なくとも1つのパラメータ(例えば、命令カウント706またはチェックサム708などの数値)を生成することができる。チェックサム708を生成するための実装例は、図12を参照して以下に説明され、命令カウント706を生成するための実装例は、図13を参照して以下に説明される。
【0166】
ブロック1106で、暗号化コプロセッサは、少なくとも1つのパラメータを別の構成要素に提供して、他の構成要素が暗号化コプロセッサに対して命令コードを確認できるようにする。例えば、暗号化コプロセッサ118は、少なくとも1つのパラメータを別の構成要素(例えば、暗号化コプロセッサ118が図2に示すセキュリティ回路106の一部として実装される場合には、プロセッサ202または別の周辺デバイス250)に提供することができる。他の構成要素に少なくとも1つのパラメータへのアクセスを提供することによって、暗号化コプロセッサ118は、他の構成要素が暗号化コプロセッサ118に対して命令コード412を確認できるようにすることができる。これは、暗号化コプロセッサ118が少なくとも1つのパラメータを他の構成要素に(例えば、共有相互接続または他のバスを介して、または専用経路を介して)送信することによってまたは、他の構成要素に公開される少なくとも1つのレジスタに少なくとも1つのパラメータを記憶することによって達成され得る。
【0167】
プロセッサ202などの他の構成要素は、少なくとも1つのパラメータを受信または検索することができ、暗号化コプロセッサ118からの少なくとも1つのパラメータを、他の構成要素によって決定される別の値、または暗号化コプロセッサ118とは別のソースから他の構成要素によって取得される別の値と比較することによって確認動作を実行できる。例えば、少なくとも1つのパラメータが命令コード412と暗号化コプロセッサ118との間のネクサスを示すため、確認は暗号化コプロセッサ118に対して実行されてもよい。ネクサスは、どの命令が暗号化コプロセッサ118の命令メモリ402に命令コード412として記憶されるか、命令コード412のどの命令が暗号化コプロセッサ118によって実行されるかなどに関係し得る。確認には、暗号化コプロセッサ118からのパラメータを別のパラメータと比較し、2つのパラメータ値が一致しない場合にアラートを生成すること、および/または別の保護措置をとることが含まれてもよい。
【0168】
図12は、命令コードの整合性確認を可能にすることによって暗号化動作を保護するための暗号化コプロセッサのための例示的なプロセスを示す流れ図1200である。流れ図1200は、3つのブロック1202~1206を含む。例示的なプロセスの動作は、(例えば、図1および図2の)セキュリティ回路106によって実行することができる。例えば、これらの動作は、暗号化コプロセッサ118(例えば、図1、2、および4の)のコントローラ406(例えば、図4および7の)によって実行され得る。
【0169】
ブロック1202で、暗号化コプロセッサは命令コードを取得する。例えば、暗号化コプロセッサ118は命令コード412を取得することができる。命令コード412を取得するための例示的なアプローチは、図11のブロック1102を参照して上で説明されている。
【0170】
ブロック1204で、暗号化コプロセッサは命令コードに対してチェックサムを計算する。例えば、暗号化コプロセッサ118は、命令コード412に対してチェックサム708を計算することができる。例えば、コントローラ406は、命令コード412を受信しながら、または命令メモリ402から命令コード412を読み取ることによって、命令コード412にハッシュ関数を適用してチェックサム708を計算することができる。計算は、さらに、またはその代わりに、データメモリ404に記憶されたデータ414に対してチェックサムを計算することを含んでもよい。そのような場合のいくつかでは、計算により、命令コード412およびデータ414にそれぞれ対応する第1および第2のチェックサムが生成され得る。他のそのような場合では、計算は、データ414と命令コード412を一緒に計算される結合または累積チェックサムを生成することができる。
【0171】
ブロック1206で、暗号化コプロセッサはチェックサムを別の構成要素に提供し、他の構成要素がチェックサムを使用して暗号化コプロセッサにおける命令コードの整合性を確認できるようにする。例えば、暗号化コプロセッサ118は、チェックサム708を別の構成要素(例えば、プロセッサ202)に提供して、他の構成要素がチェックサム708を使用して暗号化コプロセッサ118に位置する命令コード412の整合性を確認できるようにすることができる。チェックサム708を他の構成要素に提供するための例示的なアプローチは、図11のブロック1106を参照して上で説明されている。整合性確認を実行するために、他の構成要素は、暗号化コプロセッサ118からのチェックサム708を、他の構成要素が計算した、または暗号化コプロセッサ118から独立して取得したチェックサムと比較することができる。提供され比較されたチェックサム708は、命令コード412(個別に)、データ414(個別に)、または命令コード412とデータ414(一緒に)に関連し得る。
【0172】
図13は、命令コードの実行確認を可能にすることによって暗号化動作を保護するための暗号化コプロセッサのための例示的なプロセスを示す流れ図1300である。流れ図1300は、3つのブロック1302~1306を含む。例示的なプロセスの動作は、(例えば、図1および図2の)セキュリティ回路106によって実行することができる。例えば、これらの動作は、暗号化コプロセッサ118(例えば、図1、2、および4の)の暗号化コプロセッサ118のコントローラ406(例えば、図4および7の)によって実行されてもよい。
【0173】
ブロック1302で、暗号化コプロセッサは命令コードを取得する。例えば、暗号化コプロセッサ118は命令コード412を取得することができる。命令コード412を取得するための例示的なアプローチは、図11のブロック1102を参照して上で説明されている。
【0174】
ブロック1304で、暗号化コプロセッサは、命令コードの実行された命令の量を追跡して、命令カウントを生成する。例えば、暗号化コプロセッサ118は、命令コード412の実行された命令の量を追跡して、命令カウント706を生成することができる。例えば、コントローラ406は、要求された暗号化動作を実行するために実行される命令コード412の各命令に応答して、命令カウントレジスタ702内の値をインクリメントすることができる。
【0175】
ブロック1306で、暗号化コプロセッサは命令カウントを別の構成要素に提供し、他の構成要素がその命令カウントを使用して暗号化コプロセッサによる命令コードの実行を確認できるようにする。例えば、暗号化コプロセッサ118は、命令カウント706を別の構成要素(例えば、プロセッサ202)に提供して、他の構成要素が命令カウント706を使用して暗号化コプロセッサ118による命令コード412の実行を確認できるようにすることができる。命令カウント706を他の構成要素に提供するための例示的なアプローチは、図11のブロック1106を参照して上で説明されている。実行確認を実行するために、他の構成要素は、暗号化コプロセッサ118からの命令カウント706を、他の構成要素が決定する(例えば、知識を有する)、またはそうでなければ暗号化コプロセッサ118から独立して取得する命令カウントと比較することができる。2つのカウントが一致しない場合、他の構成要素は、現在の暗号化動作を無効にする、および/または暗号化コプロセッサ118内のすべての状態を読み取り不能にするなどの措置を講じることができる。
【0176】
これらの方法の態様は、例えば、ハードウェア(例えば、固定論理回路、コントローラ、有限状態マシン、またはメモリと連携したプロセッサ)、ファームウェア、ソフトウェア、またはそれらの何らかの組み合わせで実装され得る。この方法は、図1から7および14に示される装置または構成要素のうちの1つまたは複数を使用して実現され得る。これらの構成要素は、さらに分割したり、組み合わせたりすることもできる。これらの図のデバイスおよび構成要素は一般に、電子デバイス、PCB、パッケージ化されたモジュール、ICチップ、構成要素、または回路などのハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせを表す。したがって、これらの図は、記載された方法を実装することができる多くの可能なシステムまたは装置のうちのいくつかを示している。
【0177】
本明細書に記載の方法および関連する流れ図に関して、動作が示されおよび/または説明される順序は、限定として解釈されることを意図したものではない。代わりに、異なる流れ図からの動作を1つまたは複数の方法に組み合わせるなど、説明した方法動作の任意の数または組み合わせを任意の順序で組み合わせて、特定の方法または代替方法を実装することができる。説明した方法から動作を省略したり、動作を追加したりすることもできる。さらに、記載された動作は、完全にまたは部分的に重複して実装することができる。
【0178】
安全な暗号化コプロセッサの態様と実装例
以下では、いくつかの例示的な態様および実装について説明する。
【0179】
例示的な態様1:安全な暗号化共処理のための装置であって、相互接続と、相互接続に結合されたプロセッサとを備え、プロセッサは、実行されるべき暗号化動作を決定し、暗号化動作を実行する要求を送信するように構成され、装置はさらに、相互接続に結合された暗号化コプロセッサを備え、暗号化コプロセッサは、暗号化動作を実行する要求をプロセッサから受信し、命令コード(例えば、命令コードは、要求の受信時に暗号化コプロセッサにすでに存在しているか、または要求の後および/または要求に応答してロードされる)および中間値(中間値は、例えば、要求を受信する前および/または要求の処理の一部として、暗号化プロセッサによって計算された値であってもよく、以前に暗号化プロセッサによって出力されていなくてもよい)を使用して、データ(例えば、プロセッサから(例えば、要求の一部として)暗号化プロセッサによって受信されたデータ、または暗号化プロセッサ内で以前に生成されたデータ)を用いて暗号化動作を実行することにより結果を取得し、データ、中間値、または命令コードの少なくとも1つを不正アクセスから保護し、上記結果をプロセッサに提供するように構成される。
【0180】
例示的な態様2:暗号化コプロセッサは、少なくとも1つのメモリに記憶された情報をスクランブルするために使用される少なくとも1つのスクランブルキーを変更することによって、少なくとも1つのメモリに記憶された情報を保護するように構成される、例示的な態様1の装置。
【0181】
例示的な態様3:少なくとも1つのメモリはデータメモリを含み、少なくとも1つのスクランブルキーは、データメモリに記憶されたデータをスクランブルするために使用されるデータスクランブルキーを含む、 例示的な態様1または例示的な態様2の装置。これは、例示的な態様1によって指定される命令メモリの保護の少なくとも一部であり得る。
【0182】
例示的な態様4:少なくとも1つのメモリは命令メモリを備え、少なくとも1つのスクランブルキーは、命令メモリに記憶された命令コードをスクランブルするために使用されるコードスクランブルキーを含む、前述の例示的な態様のいずれか1つの装置。これはまた、例示的な態様1によって指定される命令メモリの保護の少なくとも一部であり得る。
【0183】
例示的な態様5:暗号化コプロセッサは、少なくとも1つのレジスタをランダムビットで上書きすることによって、中間値を保護するように構成され、中間値は状態情報に対応する、前述の例示的な態様のいずれか1つに記載の装置。これはさらに、例示的な態様1によって指定される命令メモリの保護の少なくとも一部であり得る。
【0184】
例示的な態様6:暗号化コプロセッサは、少なくとも1つのレジスタをランダムビットで上書きし、少なくとも1つのレジスタ内のランダムビットを定数(例えば、設計のRTLネットリストに記憶されているランダム定数からの1つを含む、ゼロまたはゼロ以外の値などの固定または静的な値)で上書きすることによって安全な消去を実行するように構成される、前述の例示的な態様のいずれか1つの装置。これも、レジスタがデータ、中間値、または命令コードのうちの少なくとも1つを記憶する場合、例示的な態様1によって言及される保護の少なくとも一部であり得る。したがって、例示的な態様1で言及されるデータ、中間値、または命令コードのうちの少なくとも1つの保護は、データ、中間値、または命令コードのうちの少なくとも1つに対して、(i)スクランブルキーを生成し、生成されたスクランブルキーを使用して、暗号化コプロセッサに記憶されたデータ、中間値、または命令コードのうちの少なくとも1つ(例えば、暗号化コプロセッサのデータメモリに記憶されている場合はデータ、および/または暗号化プロセッサの命令メモリに記憶されている場合は命令コード)をスクランブルするなどによる、データ、中間値、または命令コードのうちの少なくとも1つを符号化すること、または、(ii)データ、中間値、または命令コードのうちの少なくとも1つを上書きすることからなる群から選択される少なくとも1つのアクションを実行することによって実行され得る。
【0185】
例示的な態様7:暗号化コプロセッサは、第1の品質のランダム性に対応する複数の第1のビットを記憶するように構成された第1のレジスタと、ランダム性の第2の品質に対応する複数の第2のビットを記憶するように構成される第2のレジスタとを含む、前述の例示的な態様のいずれか1つの装置。
【0186】
例示的な態様8:暗号化コプロセッサは、暗号化動作に関連付けられたランダム性の品質(または「ランダム性品質」)に基づいて、第1のレジスタから複数の第1のビットを選択的に検索するか、または第2のレジスタから複数の第2のビットを選択的に検索するように構成される、前述の例示的な態様のいずれか1つの装置。
【0187】
例示的な態様9:第1のランダム性の品質は、第2のランダム性の品質よりも高く、複数の第1のビットは、乱数の非決定的ソースに対応し、複数の第2のビットは、乱数の決定的ソースに対応する、前述の例示的な態様のいずれか1つの装置。
【0188】
例示的な態様10:暗号化コプロセッサは、複数の第1のビットが使用されることになる前に、複数の第1のビットを第1のレジスタにプリフェッチするように構成される、前述の例示的な態様のいずれか1つの装置。
【0189】
例示的な態様11:暗号化コプロセッサは、命令メモリに関連付けられた命令コードに対してチェックサムを生成し、チェックサムをプロセッサに提供するように構成される、前述の例示的な態様のいずれか1つの装置。
【0190】
例示的な態様12:暗号化コプロセッサは命令カウンタを備え、暗号化コプロセッサは、命令カウンタを介して命令コードの実行された命令の量を追跡し、実行された命令の量をプロセッサに提供するように構成される、前述の例示的な態様のいずれか1つの装置。
【0191】
例示的な態様13:装置は、モバイルデバイス(例えば、タブレットコンピュータ、携帯電話、およびラップトップコンピュータからなる群から選択されるデバイス)を備え、また、モバイルデバイスは、相互接続、プロセッサ、および暗号化コプロセッサを含む集積回路を含む、前述の例示的な態様のいずれか1つの装置。
【0192】
例示的な態様14:安全な暗号化共処理を提供するための装置のための方法であって、この装置は、相互接続を介して暗号化コプロセッサに結合されたプロセッサを含み、この方法は、プロセッサが、実行される暗号化動作を決定することと、プロセッサが、暗号化動作を実行する要求を暗号化コプロセッサに送信することと、暗号化コプロセッサが、暗号化動作を実行する要求を受信することと、暗号化コプロセッサが、命令コード(例えば、命令コードは、要求が受信されたときに暗号化コプロセッサにすでに存在しているか、または要求の後および/または要求に応答してロードされる)および中間値(中間値は、例えば、要求を受信する前および/または要求の処理の一部として、暗号化プロセッサによって計算された値であり得、以前に暗号化プロセッサによって出力されていなくてもよい)を使用してデータ(例えば、プロセッサなどから(例えば、要求の一部として)暗号化プロセッサによって受信されたデータ、または暗号化プロセッサ内で以前に生成されたデータ)を用いて暗号化動作を実行することにより結果を取得することと、暗号化コプロセッサによって、データ、中間値、または命令コードのうちの少なくとも1つを不正アクセスから保護することと、暗号化コプロセッサによって上記結果をプロセッサに提供することとを含む、方法。
【0193】
例示的な態様15:例示的な態様14の方法、または前述の装置の例示的な態様のいずれか1つによって実装される方法であって、暗号化コプロセッサが、少なくとも1つのメモリに記憶された情報をスクランブルするために使用される少なくとも1つのスクランブルキーを変更することによって、少なくとも1つのメモリに記憶された情報を保護することをさらに含む方法。
【0194】
例示的な態様16:例示的な態様14、例示的な態様15、または前述の装置の例示的な態様のいずれか1つによって実装される方法であって、暗号化コプロセッサが、暗号化動作に関連するランダム性の品質(または「ランダム性の品質」)に基づいて、第1のレジスタから複数の第1のビット、または第2のレジスタから複数の第2のビットを選択的に検索することをさらに含む、方法。
【0195】
例示的な態様17:暗号化コプロセッサのための方法であって、暗号化コプロセッサでデジタル情報を取得することと、暗号化コプロセッサが、少なくとも1つのスクランブルキーを使用してデジタル情報をスクランブルすることにより、スクランブルされたデジタル情報を生成することと、暗号化コプロセッサが、スクランブルされたデジタル情報を少なくとも1つのメモリに記憶することと、暗号化コプロセッサが、少なくとも1つのスクランブルキーを変更することによってデジタル情報へのアクセスを防止することとを含む、方法。
【0196】
例示的な態様18:デジタル情報はデータを含み、少なくとも1つのスクランブルキーはデータスクランブルキーを含み、スクランブルされたデジタル情報は、スクランブルされたデータを含み、少なくとも1つのメモリはデータメモリを含む、例示的な態様17の方法。
【0197】
例示的な態様19:デジタル情報は命令コードを含み、少なくとも1つのスクランブルキーはコードスクランブルキーを含み、スクランブルされたデジタル情報は、スクランブルされた命令コードを含み、少なくとも1つのメモリは命令メモリを含む、例示的な態様17または例示的な態様18の方法。
【0198】
例示的な態様20:少なくとも1つのスクランブルキーは、少なくとも1つのキーレジスタに記憶され、防止することは、少なくとも1つのキーレジスタをランダムビットで上書きすることを含む、例示的な態様17から19のいずれか1つの方法。
【0199】
例示的な態様21:少なくとも1つのレジスタをランダムビットで上書きすることによって、少なくとも1つのレジスタに記憶された中間値へのアクセスを防止することをさらに含む、例示的な態様17から20のいずれか1つの方法。
【0200】
例示的な態様22:少なくとも1つのキーレジスタまたは少なくとも1つのレジスタ内のランダムビットを定数値で上書きすることによって安全な消去を実行することをさらに含む、例示的な態様20または例示的な態様21に記載の方法。
【0201】
例示的な態様23:取得することは、ホストプロセッサからデジタル情報を受信することを含み、ホストプロセッサおよび暗号化コプロセッサは、少なくとも1つの集積回路のためのセキュリティ回路の少なくとも一部を含む、例示的な態様17から22のいずれか1つの方法。
【0202】
例示的な態様24:暗号化コプロセッサのための方法であって、暗号化コプロセッサが、第1のランダム性の品質に対応する複数の第1のビットを第1のレジスタに記憶することと、暗号化コプロセッサが、第1のランダム性の品質とは異なる第2のランダム性の品質に対応する複数の第2のビットを第2のレジスタに記憶することと、暗号化コプロセッサが、少なくとも1つの暗号化動作に基づいて、第1のレジスタから複数の第1のビットを、または第2のレジスタから複数の第2のビットを選択的に検索することとを含む、方法。
【0203】
例示的な態様25:選択的に検索することは、少なくとも1つの暗号化動作に関連するランダム性の品質に基づいて、第1のレジスタから複数の第1のビットを選択的に検索すること、または第2のレジスタから複数の第2のビットを選択的に検索することを含む、例示的な態様24の方法。
【0204】
例示的な態様26:第1のランダム性の品質は第2のランダム性の品質よりも高く、方法は、乱数の非決定的ソースから複数の第1のビットを取得することと、乱数の決定的ソースから複数の第2のビットを取得することとをさらに含む、例示的な態様24または 例示的な態様25の方法。
【0205】
例示的な態様27:乱数の非決定的ソースはアナログベースのソースを含み、乱数の決定的ソースは、擬似乱数発生器を含むデジタルベースのソースを含む、例示的な態様26の方法。
【0206】
例示的な態様28:複数の第1のビットが使用される前に、複数の第1のビットを第1のレジスタにプリフェッチすることをさらに含む、例示的な態様24から27のいずれか1つの方法。
【0207】
例示的な態様29:暗号化コプロセッサのための方法であって、暗号化コプロセッサで命令コードを取得することと、暗号化コプロセッサが、命令コードに基づいて少なくとも1つのパラメータを生成することと、暗号化コプロセッサが、少なくとも1つのパラメータを別の構成要素に提供することにより、他の構成要素が暗号化コプロセッサに対して命令コードを確認できるようにすることとを含む、方法。
【0208】
例示的な態様30:少なくとも1つのパラメータはチェックサムを含み、生成することは、命令コードに対してチェックサムを計算することを含み、提供することは、チェックサムを他の構成要素に提供することにより、他の構成要素がチェックサムを使用して暗号化コプロセッサにおける命令コードの整合性を確認できるようにすることを含む。生成することは、データメモリに記憶されたデータのチェックサムを計算することをさらに(または代わりに)含むことができる、例示的な態様29の方法。したがって、生成することは、命令コードおよびデータにそれぞれ対応する第1および第2のチェックサムを生成してもよく、または生成することは、データおよび命令コードに対して一緒に計算される結合または累積チェックサムを生成してもよい。
【0209】
例示的な態様31:少なくとも1つのパラメータは命令カウントを含み、生成することは、命令コードの実行された命令の量を追跡することにより命令カウントを生成することを含み、提供することは、命令カウントを他の構成要素に提供して、他の構成要素がその命令カウントを使用して暗号化コプロセッサによる命令コードの実行を確認できるようにすることを含む、例示的な態様29または例示的な態様30の方法。
【0210】
例示的な態様32:提供することは、ホストプロセッサを含む他の構成要素によってアクセス可能なレジスタ内の少なくとも1つのパラメータを公開することを含み、ホストプロセッサおよび暗号化コプロセッサは、集積回路のセキュリティ回路の少なくとも一部を含む、例示的な態様29から31のいずれか1つの方法。
【0211】
例示的な態様33:例示的な態様17から32のいずれか1つの方法を実行するように構成された暗号化コプロセッサを備える装置。
【0212】
安全な暗号化コプロセッサ用の電子デバイスの例
図14は、1つまたは複数の記載された態様に従って安全な暗号化コプロセッサ118を実装することができる例示的な電子デバイス1400のさまざまな構成要素を示す。電子デバイス1400は、固定、モバイル、スタンドアロン、または組み込みデバイスのいずれか1つまたは組み合わせとして、消費者、コンピュータ、ポータブル、ユーザ、サーバ、通信、電話、ナビゲーション、ゲーム、オーディオ、カメラ、メッセージング、メディア再生、および/または装置102として図1に示されるスマートフォンなど他のタイプの電子デバイス1400の任意の形態で実装できる。図示された構成要素のうちの1つまたは複数は、個別構成要素として、または電子デバイス1400の少なくとも1つの集積回路上の集積構成要素として実現され得る。
【0213】
電子デバイス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)イーサネット(登録商標)トランシーバが含まれる。
【0214】
電子デバイス1400はまた、任意のタイプのデータ、メディアコンテンツ、および/または他の入力を受信することができる1つまたは複数のデータ入力ポート1406を含んでもよく、例えば、ユーザが選択可能な入力、メッセージ、アプリケーション、音楽、テレビコンテンツ、録画されたビデオコンテンツ、およびコンテンツおよび/またはデータソースから受信したその他のタイプのオーディオ、ビデオ、および/または画像データなどであり、マイクやカメラなどのセンサが含まれる。データ入力ポート1406は、USBポート、同軸ケーブルポート、光ファイバ相互接続またはケーブル配線用の光ファイバポート、およびフラッシュメモリ、DVD、CDなど用の他のシリアルまたはパラレルコネクタ(内部コネクタを含む)を含み得る。これらのデータ入力ポート1406は、電子デバイスを構成要素、周辺機器、またはキーボード、マイクロフォン、カメラ、または他のセンサなどの付属品に結合するために使用され得る。
【0215】
この例の電子デバイス1400は、少なくとも1つのプロセッサ1408(例えば、アプリケーションプロセッサ、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラなどのうちの任意の1つまたは複数)を含み、これは、デバイスの動作を制御するためにコンピュータ実行可能命令を処理(例えば実行)する、プロセッサとメモリを組み合わせたシステム(例えば、SoCの一部として実装される)を含むことができる。プロセッサ1408は、アプリケーションプロセッサ、組み込みコントローラ、マイクロコントローラ、セキュリティプロセッサ、人工知能(AI)アクセラレータなどとして実装され得る。一般に、プロセッサまたは処理システムは、少なくとも部分的にハードウェアで実装でき、これには、集積回路またはオンチップシステム、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブル論理デバイス(CPLD)、およびシリコンおよび/またはその他の素材でのその他の実装の構成要素が含まれ得る。
【0216】
代替的にまたは追加的に、電子デバイス1400は、電子回路のいずれか1つまたは組み合わせで実装することができ、これには、一般に(電子回路1410として)1410で示される、処理および制御回路に関連して実装されるソフトウェア、ハードウェア、ファームウェア、または固定論理回路が含まれ得る。この電子回路1410は、実行可能モジュールまたはハードウェアベースのモジュール(図14には示されていない)を実装することができ、例えば、コンピュータ可読媒体に記憶された処理/コンピュータ実行可能命令を通じて、論理回路および/またはハードウェア(例えば、FPGAなど)を通じてなどである。
【0217】
図示されていないが、電子デバイス1400は、システムバス、相互接続、クロスバー、データ転送システム、またはデバイス内のさまざまな構成要素を結合する他のスイッチファブリックを含むことができる。システムバスまたは相互接続には、異なるバス構造の任意の1つまたは組み合わせを含めることができ、メモリバスやメモリコントローラ、周辺バス、ユニバーサルシリアルバス、および/またはさまざまなバスアーキテクチャのいずれかを利用するプロセッサやローカルバスなどである。
【0218】
電子デバイス1400はまた、データ記憶を可能にする1つまたは複数のメモリデバイス1412を含み、その例には、ランダムアクセスメモリ(RAM)、不揮発性メモリ(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、EPROM、EEPROM)、およびディスク記憶デバイスが含まれる。したがって、メモリデバイス1412は、システムの異なる論理記憶レベルにわたって、また異なる物理構成要素に分散させることができる。メモリデバイス1412は、デバイスデータ1404、他のタイプのコードおよび/またはデータ、およびさまざまなデバイスアプリケーション1420(例えば、ソフトウェアアプリケーションまたはプログラム)を記憶するデータ記憶メカニズムを提供する。例えば、オペレーティングシステム1414は、メモリデバイス1412内にソフトウェア命令として維持され、プロセッサ1408によって実行され得る。
【0219】
いくつかの実施形態では、電子デバイス1400は、オーディオおよび/またはビデオ処理システム1416も含み、それは、オーディオデータを処理し、および/またはオーディオデータおよびビデオデータをオーディオシステム1418および/または表示システム1422(例えば、スマートフォンまたはカメラのビデオバッファまたは画面)に渡す。オーディオシステム1418および/または表示システム1422は、オーディオ、ビデオ、ディスプレイ、および/または画像データを処理、表示、および/またはレンダリングする任意のデバイスを含み得る。表示データおよびオーディオ信号は、RF(無線周波数)リンク、Sビデオリンク、HDMI(登録商標)(高解像度マルチメディアインターフェース)、コンポジットビデオリンク、構成要素ビデオリンク、DVI(デジタルビデオインターフェース)、アナログオーディオ接続、ビデオバス、またはメディアデータポート1424などの他の同様の通信リンクを介してオーディオ構成要素および/または表示構成要素に通信できる。いくつかの実装では、オーディオシステム1418および/または表示システム1422は、電子デバイス1400の外部構成要素または別個の構成要素である。あるいは、表示システム1422は、例えば、統合されたタッチインターフェースの一部など、例示的な電子デバイス1400の統合された構成要素であってもよい。
【0220】
図14の電子デバイス1400は、図1の装置102の実装例であり、図3-2の分析344を実装できるデバイスの実装例、図8の方法を実装できるデバイスの実装例である。したがって、電子デバイス1400は、セキュリティ回路106を含むことができ、セキュリティ回路106は、別個のICチップであってもよいし、プロセッサ1408、電子回路1410、またはメモリデバイス1412などの別のICチップもしくはデバイスの一部として含まれてもよい。したがって、図示された構成要素のうちの1つまたは複数は、SoCのような同じICチップ上に、または少なくとも単一のPCB上に統合され得る。さらに、周辺デバイス250(例えば、図2の)は、セキュリティ回路106のプロセッサ202および/またはセキュリティ回路106とは別個であってもよいプロセッサ1408と通信することができ得る。
【0221】
図示されるように、電子デバイス1400は、追加的にまたは代替的に、互換性分析モジュール340を含み得る。例えば、メモリデバイス1412は互換性分析モジュール340を記憶することができ、プロセッサ1408は互換性分析モジュール340を実行することができる。したがって、メモリデバイス1412は、周辺デバイス設計コード342、インターフェース仕様332なども記憶することができる。電子デバイス1400は、図8のプロセスをさらに、またはその代わりに実装してもよい。さらに、暗号化コプロセッサ118は、例えば、セキュリティ回路106の一部として、図4~7の構成要素のいずれかを含むことができる。さらに、暗号化コプロセッサ118は、セキュリティ回路106の一部として、またはセキュリティ回路106とは別個に、上述した電子デバイス1400の構成要素のいずれかに実装することができる。例えば、プロセッサ1408は、暗号化コプロセッサ118によってサポートされるホストプロセッサとして動作することができる。したがって、本明細書で説明する安全な暗号化コプロセッサの原理は、図14の電子デバイス1400によって、またはそれと関連して実装することができる。
【0222】
文脈により別段の指示がない限り、本明細書における「または」という言葉の使用は、「包括的なまたは」、または「または」という言葉によってリンクされている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つまたは複数の項目または用語を示す場合があり、したがって、本明細書では単一または複数の形式の項目および用語を互換的に参照することができる。安全な暗号化コプロセッサの実装は、特定の特徴および/または方法に特有の言語で説明されるが、添付の特許請求の範囲の主題は、必ずしも記載された特定の特徴または方法に限定されない。むしろ、特定の特徴および方法は、安全な暗号化コプロセッサおよび/または安全な暗号化共処理の実装例として開示される。
図1
図2
図3-1】
図3-2】
図3-3】
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【手続補正書】
【提出日】2023-12-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
暗号化コプロセッサのための方法であって、
前記暗号化コプロセッサでデジタル情報を取得することと、
前記暗号化コプロセッサが、少なくとも1つのスクランブルキーを使用して前記デジタル情報をスクランブルすることにより、スクランブルされたデジタル情報を生成することと、
前記暗号化コプロセッサが、前記スクランブルされたデジタル情報を少なくとも1つのメモリに記憶することと、
前記暗号化コプロセッサが、前記少なくとも1つのスクランブルキーを変更することによって、前記デジタル情報へのアクセスを防止することとを含む、方法。
【請求項2】
前記デジタル情報はデータを含み、
前記少なくとも1つのスクランブルキーはデータスクランブルキーを含み、
前記スクランブルされたデジタル情報は、スクランブルされたデータを含み、
前記少なくとも1つのメモリはデータメモリを含む、請求項1に記載の方法。
【請求項3】
前記デジタル情報は命令コードを含み、
前記少なくとも1つのスクランブルキーはコードスクランブルキーを含み、
前記スクランブルされたデジタル情報は、スクランブルされた命令コードを含み、
前記少なくとも1つのメモリは命令メモリを含む、請求項1に記載の方法。
【請求項4】
前記少なくとも1つのスクランブルキーは、少なくとも1つのキーレジスタに記憶され、
前記防止することは、前記少なくとも1つのキーレジスタをランダムビットで上書きすることを含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
少なくとも1つのレジスタをランダムビットで上書きすることによって、前記少なくとも1つのレジスタに記憶された中間値へのアクセスを防止することをさらに含む、請求項1から3のいずれか1項に記載の方法。
【請求項6】
前記少なくとも1つのキーレジスタ内の前記ランダムビットを定数値で上書きすることによって安全な消去を実行することをさらに含む、請求項4に記載の方法。
【請求項7】
前記取得することは、ホストプロセッサから前記デジタル情報を受信することを含み、
前記ホストプロセッサおよび前記暗号化コプロセッサは、少なくとも1つの集積回路のためのセキュリティ回路の少なくとも一部を含む、請求項1から3のいずれか1項に記載の方法。
【請求項8】
暗号化コプロセッサのための方法であって、
前記暗号化コプロセッサが、第1のランダム性の品質に対応する複数の第1のビットを第1のレジスタに記憶することと、
前記暗号化コプロセッサが、前記第1のランダム性の品質とは異なる第2のランダム性の品質に対応する複数の第2のビットを第2のレジスタに記憶することと、
前記暗号化コプロセッサが、少なくとも1つの暗号化動作に基づいて、前記第1のレジスタから前記複数の第1のビットを、または前記第2のレジスタから前記複数の第2のビットを選択的に検索することとを含む、方法。
【請求項9】
前記選択的に検索することは、
前記少なくとも1つの暗号化動作に関連するランダム性の品質に基づいて、前記第1のレジスタから前記複数の第1のビット、または前記第2のレジスタから前記複数の第2のビットを選択的に検索することを含む、請求項8に記載の方法。
【請求項10】
前記第1のランダム性の品質は前記第2のランダム性の品質よりも高く、
前記方法は、
乱数の非決定的ソースから前記複数の第1のビットを取得することと、
乱数の決定的ソースから前記複数の第2のビットを取得することとをさらに含む、請求項8または請求項9に記載の方法。
【請求項11】
乱数の前記非決定的ソースはアナログベースのソースを含み、
乱数の前記決定的ソースは、擬似乱数発生器を含むデジタルベースのソースを含む、請求項10に記載の方法。
【請求項12】
前記複数の第1のビットが使用される前に、前記複数の第1のビットを前記第1のレジスタにプリフェッチすることをさらに含む、請求項8または請求項9に記載の方法。
【請求項13】
暗号化コプロセッサのための方法であって、
前記暗号化コプロセッサで命令コードを取得することと、
前記暗号化コプロセッサが、前記命令コードに基づいて少なくとも1つのパラメータを生成することと、
前記暗号化コプロセッサが、前記少なくとも1つのパラメータを別の構成要素に提供することにより、前記別の構成要素が前記暗号化コプロセッサに対して前記命令コードを確認できるようにすることとを含む、方法。
【請求項14】
前記少なくとも1つのパラメータはチェックサムを含み、
前記生成することは、前記命令コードに対して前記チェックサムを計算することを含み、
前記提供することは、前記チェックサムを前記別の構成要素に提供することにより、前記別の構成要素が前記チェックサムを使用して前記暗号化コプロセッサにおける前記命令コードの整合性を確認できるようにすることを含む、請求項13に記載の方法。
【請求項15】
前記少なくとも1つのパラメータは命令カウントを含み、
前記生成することは、前記命令コードの実行された命令の量を追跡することにより前記命令カウントを生成することを含み、
前記提供することは、前記命令カウントを前記別の構成要素に提供することにより、前記別の構成要素が前記命令カウントを使用して前記暗号化コプロセッサによる前記命令コードの実行を確認できるようにすることを含む、請求項13または請求項14に記載の方法。
【請求項16】
前記提供することは、ホストプロセッサを含む前記別の構成要素によってアクセス可能なレジスタ内の前記少なくとも1つのパラメータを公開することを含み、
前記ホストプロセッサおよび前記暗号化コプロセッサは、集積回路のセキュリティ回路の少なくとも一部を含む、請求項13または請求項14に記載の方法。
【請求項17】
求項1から3、8、9、13、および14のいずれか1項に記載の方法を実行するように構成された暗号化コプロセッサを含む、装置。
【請求項18】
前記少なくとも1つのレジスタ内の前記ランダムビットを定数値で上書きすることによって安全な消去を実行することをさらに含む、請求項5に記載の方法。
【国際調査報告】