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

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

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

特表2024-537151量子耐性のある暗号化ハッシュベースの署名計算の高速化
<>
  • 特表-量子耐性のある暗号化ハッシュベースの署名計算の高速化 図1
  • 特表-量子耐性のある暗号化ハッシュベースの署名計算の高速化 図2
  • 特表-量子耐性のある暗号化ハッシュベースの署名計算の高速化 図3
  • 特表-量子耐性のある暗号化ハッシュベースの署名計算の高速化 図4
  • 特表-量子耐性のある暗号化ハッシュベースの署名計算の高速化 図5
  • 特表-量子耐性のある暗号化ハッシュベースの署名計算の高速化 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-10
(54)【発明の名称】量子耐性のある暗号化ハッシュベースの署名計算の高速化
(51)【国際特許分類】
   G09C 1/00 20060101AFI20241003BHJP
   H04L 9/32 20060101ALI20241003BHJP
【FI】
G09C1/00 650Z
H04L9/32 200A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024520759
(86)(22)【出願日】2021-10-11
(85)【翻訳文提出日】2024-04-23
(86)【国際出願番号】 US2021054431
(87)【国際公開番号】W WO2023063924
(87)【国際公開日】2023-04-20
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】スホムリノフ,バディム
(72)【発明者】
【氏名】オソリオ・ロザノ,ミゲル・エンジェル
(72)【発明者】
【氏名】フランツ,クリストファー・ジェイ
(57)【要約】
本文書では、量子耐性のある暗号化ハッシュベースの署名計算の高速化を目的とした技術および装置について説明する。入力メッセージを受信すると、1つまたは複数のプロセッサ(106)がハッシュマネージャ(114)を実装する。ハッシュマネージャ(114)は、変数を初期化し、入力メッセージおよび初期化された変数を入力バッファ(502)にロードし、ハッシュベースの署名計算(404、520)を実行するように構成されている。ハッシュベースの署名計算(404、520)は、所定の反復回数だけ繰り返され、各反復には、ダイジェストメッセージ(410、526)の少なくとも一部を入力バッファ(502)内の構成可能な位置に直接ロードすることが含まれる。そうすることで、この反復ハッシュ計算方法はメモリコピーとバスレイテンシをバイパスし、量子耐性のある暗号化ハッシュベースの署名計算を高速化する。
【特許請求の範囲】
【請求項1】
コンピュータが実行する方法であって、
第1の入力メッセージを入力バッファにロードすることと、
ハッシュエンジンが、前記第1の入力メッセージを入力として使用し、ハッシュ計算を計算することと
を含み、前記ハッシュ計算の結果、ダイジェストメッセージが生成され、
前記コンピュータが実行する方法は、
前記ダイジェストメッセージの少なくとも一部を前記入力バッファ内の構成可能な位置に直接ロードすることと、
前記ハッシュ計算を所定の反復回数だけ繰り返すことと
をさらに含み、前記繰り返されるハッシュ計算の各々により、ダイジェストメッセージの少なくとも一部が前記入力バッファ内の前記構成可能な位置に直接ロードされ、前記繰り返されるハッシュ計算のその後の反復で使用される入力として使用される、コンピュータが実行する方法。
【請求項2】
前記ハッシュエンジンは、暗号化ハッシュ関数を実装する暗号化プロセッサである、請求項1に記載のコンピュータが実行する方法。
【請求項3】
前記ダイジェストメッセージの長さは32バイトである、請求項1に記載のコンピュータが実行する方法。
【請求項4】
前記入力バッファは、前記ハッシュエンジンのレジスタファイルである、請求項1に記載のコンピュータが実行する方法。
【請求項5】
前記ダイジェストメッセージの少なくとも一部を前記入力バッファ内の前記構成可能な位置に直接ロードすることは、前記ダイジェストメッセージを前記ハッシュエンジンの外部のメモリにロードすることなく実装される、請求項1に記載のコンピュータが実行する方法。
【請求項6】
前記第1の入力メッセージは、プレフィックス、カウンタ、および秘密シードの連結を含むビット文字列である、請求項1に記載のコンピュータが実行する方法。
【請求項7】
前記第1の入力メッセージの長さは56バイトである、請求項6に記載のコンピュータが実行する方法。
【請求項8】
前記第1の入力メッセージは、前記バッファメモリ(buffer memory)内の前記構成可能な位置にロードされた秘密シードを含み、前記ダイジェストメッセージの少なくとも一部を前記入力バッファ内の前記構成可能な位置に直接ロードすることにより、前記秘密シードが置き換えられる、請求項1に記載のコンピュータが実行する方法。
【請求項9】
前記ハッシュ計算を前記繰り返すことは、256回実行される、請求項1に記載のコンピュータが実行する方法。
【請求項10】
反復カウンタをデクリメントすることと、
前記繰り返されるハッシュ計算への入力メッセージに1バイトカウンタが含まれる場合、1バイトカウンタをインクリメントすることと
をさらに含む、請求項1に記載のコンピュータが実行する方法。
【請求項11】
前記反復カウンタには、初期化時に0~255の範囲の値が割り当てられる、請求項10に記載のコンピュータが実行する方法。
【請求項12】
前記反復カウンタは、前記ハッシュエンジンのレジスタにロードされる、請求項11に記載のコンピュータが実行する方法。
【請求項13】
前記1バイトカウンタは、ハッシュベースの署名検証のために構成された値で始まる、請求項10に記載のコンピュータが実行する方法。
【請求項14】
前記1バイトカウンタは単調増加する、請求項13に記載のコンピュータが実行する方法。
【請求項15】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されると、前記プロセッサに、先行する請求項のいずれか1項に記載の方法を実行させる命令を含む少なくとも1つのコンピュータ可読記憶媒体と
を備える、コンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
背景
社会のコンピュータ化が進み、それに伴うモノのインターネット(IoT:Internet-of-Things)の拡大により、世界はさまざまなサイバー攻撃に対してますます脆弱になっている。これらのサイバー攻撃は、情報セキュリティだけでなく、身体の安全にも重大な影響を与える可能性がある。サイバー攻撃を阻止するために、コンピューティングデバイスには多数のセキュリティ対策が実装され、デバイスのデータや通信への不正アクセスや操作が防止される。これらのセキュリティ対策のいくつかはデジタル署名スキームを採用しており、多くの場合、リベストシャミアエーデルマン(RSA:Rivest-Shamir-Adleman)および楕円曲線デジタル署名アルゴリズム(ECDSA:Elliptic Curve Digital Signature Algorithm)を含む非対称暗号アルゴリズムに基づいている。これらの非対称暗号アルゴリズムでは、セキュリティの側面は、古典的なコンピューティング技術を使用した解読に必要な膨大な時間に基づいている。
【0002】
しかし、量子コンピューティングの進歩により、これらの一般的に使用される非対称暗号アルゴリズムがサイバー攻撃に対して脆弱になる可能性がある。これは、量子コンピュータが古典的なコンピュータよりも指数関数的に高速に計算できるためである。たとえば、ShorのアルゴリズムおよびGroverのアルゴリズムなどの量子コンピューティングアルゴリズムは、ブルートフォース検索の2次高速化を実現し得る。これに応えて、量子コンピュータによって実行される、サイバー攻撃に対して安全であると考えられる暗号アルゴリズムが開発された。ただし、これらの量子耐性のある暗号アルゴリズムの多くは計算に過度の時間がかかるため、ほとんどの実装は、制約のあるデバイス上などの多くのアプリケーションには適していない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
概要
本文書では、量子耐性のある暗号化ハッシュベースの署名計算の高速化を目的とした技術および装置について説明する。入力メッセージを受信すると、1つまたは複数のプロセッサがハッシュマネージャを実装する。ハッシュマネージャは、変数を初期化し、入力メッセージと初期化された変数とを入力バッファにロードし、ハッシュベースの署名計算を実行するように構成されている。ハッシュベースの署名計算は、所定の反復回数だけ繰り返され、各反復は、ダイジェストメッセージの少なくとも一部が入力バッファ内の構成可能な位置に直接ロードすることを含む。そうすることで、この反復ハッシュ計算方法はメモリコピーとバスレイテンシとをバイパスし、量子耐性のある暗号化ハッシュベースの署名計算を高速化する。
【0004】
本概要は、量子耐性のある暗号化ハッシュベースの署名計算を高速化するための簡略化された概念を紹介するために提供されており、これについては以下の詳細な説明でさらに説明し、図面に示す。本概要は、特許請求の範囲に記載された主題の本質的な特徴を特定することを意図したものではなく、特許請求の範囲に記載された主題の範囲を決定するために使用することを意図したものでもない。
【図面の簡単な説明】
【0005】
この文書では、量子耐性のある暗号化ハッシュベースの署名計算を高速化する1つまたは複数の態様の詳細について、以下の図面を参照して説明する。
図1】本文書で開示される1つまたは複数の態様に従って暗号技術および他のセキュリティ機能を実装することができる例示的なコンピューティングデバイスを含む例示的な動作環境を示す図である。
図2】暗号化コプロセッサとして実装された集積回路コンポーネントの1つの例を示す図である。
図3】プロセッサによって実行されるときのハッシュマネージャの動作を示す図である。
図4】ハッシュマネージャによって実装され、反復ハッシュベースの署名計算を高速化する方法の例を示す図である。
図5】ハッシュマネージャによって実装され、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードし、所定の反復回数にわたってハッシュ計算を実行することによって反復ハッシュベースの署名計算を高速化する方法の例を示す図である。
図6】反復ハッシュベースの署名計算を高速化するさまざまな態様を実装できるシステムオンチップ(SoC:System-on-Chip)として実装された集積回路コンポーネントを示す図である。
【発明を実施するための形態】
【0006】
さまざまな場合における同じ番号の使用は、同様の機能およびコンポーネントを示す場合がある。
【0007】
詳細な説明
概説
コンピューティングデバイスには、欠陥、攻撃、その他の潜在的な侵害イベントに対する保護手段を提供するセキュリティ回路とソフトウェアとを有する集積回路が含まれていることがよくある。セキュリティ回路およびソフトウェアは、国立規格技術研究所(NIST:National Institute of Standards and Technology)および/または公開鍵暗号規格(PKCS:Public-Key Cryptography Standards)で概説されているガイドラインを含むガイドラインに準拠するものなど、多くのセキュリティパラダイムを実装する場合がある。たとえば、ファームウェアの更新中に、PKCS規格に準拠したセキュリティ回路およびソフトウェアは、デジタル署名(たとえば、暗号署名)を使用してコンピューティングデバイスが受信および実行するデータの信頼性および完全性を検証する場合がある。デジタル署名スキームは、デジタルメッセージまたは文書を検証するために使用される数学的スキームである。有効なデジタル署名は、メッセージが既知の送信者によって生成されたものであること(「信頼性」)と、送信中に操作されていないこと(「完全性」)とを受信者に確信させることができる。そうすることで、セキュリティ回路およびソフトウェアは、情報が不用意に公開されるか、または一部の機能が有害な方法もしくはその他の不正な方法で使用される機会を低減する。
【0008】
今日のコンピューティング環境では、悪意のある者が暗号化されたデータを暴くか、または多数の攻撃ベクトルを使用して無数のレベルでコンピューティングデバイスを攻撃する可能性がある。たとえば、量子コンピューティングの最近の発展により、これらのセキュリティパラダイムの多くは古典的なコンピューティング技術を使用した攻撃を前提としているため、保護が大幅に低下する。その結果、量子コンピューティングを使用する攻撃者は、さまざまなサイバー攻撃によってコンピューティングデバイスもしくはデバイスデータへの不正アクセスまたは制御を取得できる可能性がある。たとえば、コンピューティングデバイスは極秘データを暗号論的に暗号化して、暗号化されたデータをネットワーク経由で送信する場合がある。ネットワークに接続した攻撃者は、暗号化されたデータを取得し、量子コンピューティングを使用して暗号化されたデータを復号する可能性がある。別の例では、攻撃者は、Wi-Fi(登録商標)ルータまたはIoTデバイスなどのコンピューティングデバイスのファームウェアアップデートにマルウェアを注入できる可能性がある。攻撃者が、コンピューティングデバイスがファームウェアアップデートの信頼性または完全性を検証することなく、不正なコードセグメントをコンピューティングデバイスにインストールすることに成功した場合、コンピューティングデバイスの不正な再構成により、機密データもしくは極秘データが漏洩するか、またはデバイスを意図せず動作させる可能性があり、人間のオペレータに潜在的な安全上のリスクをもたらす可能性がある。
【0009】
コンピューティングデバイスに対するこれらの潜在的な攻撃に対抗し、安全なデータ伝送を試みるために、本開示では、量子耐性セキュリティパラダイムの統合について説明する。量子コンピュータのサイバー攻撃に耐性があると理論化されているそのようなソフトウェアベースのセキュリティパラダイムの1つは、反復ハッシュベースの署名計算(「ハッシュ計算」)である。ハッシュベースの署名スキームは、ワンタイム署名スキーム(たとえば、Lamportワンタイム署名スキーム)とマークルツリー構造(たとえば、単一の大きな構造内で多くのキーを結合する手法)を組み合わせたものである。ワンタイム署名スキームは、暗号化ハッシュ関数(たとえばハッシュアルゴリズム、トラップ関数、不可逆関数)など、暗号的に安全な一方向関数から構築される。
【0010】
暗号化ハッシュ関数は、任意の長さの入力データストリーム(「入力メッセージ」)を固定長の出力(「ダイジェストメッセージ」)にマッピングする数学関数である。反復ハッシュ計算には、暗号化ハッシュ関数を反復回数繰り返すことが含まれる。この反復ハッシュ計算方法により、入力メッセージを変更すると、非常に高い確率でメッセージダイジェストが完全に変更されてしまう(たとえば電子雪崩効果(avalanche effect))。したがって、暗号化ハッシュ関数は、安全で効率的なデジタル情報の送信および処理に効果的である。
【0011】
ただし、反復ハッシュ計算用のハードウェアアーキテクチャを採用したセキュリティ回路に量子耐性のあるソフトウェアベースのセキュリティパラダイムを実装するアプローチは、時間に敏感で制約のあるデバイスにはあまり適していない。たとえば、従来のハードウェアアーキテクチャで反復ハッシュ計算を実行している間、暗号化プロセッサは1回の反復中に多数のバストランザクションを実行して、結果を送信および取得することがある。さらに、暗号化プロセッサはハッシュエンジンを再プログラムし、反復ごとに新しい入力をロードする場合がある。したがって、反復ハッシュ計算スキームで1回のハッシュ計算を実行するのに必要な時間は、多くの場合、非反復ハッシュ計算スキームで1回のハッシュ計算を実行する時間の2倍になる。前述の動作の各々を反復ごとに実行しながら、ハッシュアルゴリズムなどの計算量の多いアルゴリズムを実行すると、処理が大幅に遅くなり、制約のあるデバイスでは電力も消費する。
【0012】
対照的に、本文書では、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードすることにより、量子耐性のある暗号化ハッシュベースの署名計算を高速化することを目的とした技術および装置について説明する。そうすることで、この反復ハッシュ計算方法はメモリコピーとバスレイテンシとをバイパスし、量子耐性のある暗号化ハッシュベースの署名計算を高速化する。
【0013】
以下の説明では、動作環境、動作環境で使用できる技術、例示的方法、および動作環境のコンポーネントを具現化できるシステムオンチップ(SoC:System on Chip)について説明する。本開示の文脈において、動作環境への言及は単なる例として行われる。
【0014】
動作環境
以下の説明では、動作環境、動作環境で使用できる技術、および動作環境のコンポーネントを具現化できるさまざまなデバイスまたはシステムについて説明する。本開示の文脈において、動作環境への言及は単なる例として行われる。
【0015】
図1は、暗号技術および他のセキュリティ機能を実装することができる例示的なコンピューティングデバイス102を含む例示的な動作環境100を示す図である。コンピューティングデバイス102の例には、スマートフォン102-1、タブレットコンピュータ102-2、ワイヤレスルータ102-3、セットトップボックス102-4、ネットワーク接続ストレージ(NAS:network-attached storage)デバイス102-5、ウェアラブルコンピューティングデバイス102-6(たとえば、コンピュータ化された時計)、および自動車102-7が含まれる。図示されていないが、コンピューティングデバイス102は、移動局(たとえば、固定STAまたは移動STA)、モバイル通信デバイス、クライアントデバイス、ホームオートメーションおよび制御システム、エンターテイメントシステム、ゲームコンソール、パーソナルメディアデバイス、健康監視デバイス、ドローン、カメラ、ワイヤレスインターネットアクセスおよびブラウジングが可能なインターネット家電製品、IoTデバイス、セキュリティシステムなどのうちのいずれかとして実装されてもよい。電子デバイス102は、ウェアラブル、ウェアラブルではないがモバイル、または比較的動かないもの(たとえば、デスクトップ、家電製品)であり得ることに留意されたい。また、電子デバイス102は、自動車内またはラップトップコンピュータへの付属品としてなど、多くの電子デバイス102または周辺機器と共に使用するか、またはその中に埋め込むことができることにも留意されたい。コンピューティングデバイス102は、特定の種類のコンピューティングデバイスのセキュリティ機能を有効にする、安全なネットワークアクセスを有効にする、ストレージ用のデータを暗号化する、ソフトウェア署名を検証する、ユーザまたは他のデバイスを認証する、電子ファイルまたは文書に署名するなど、任意の適切な目的のために暗号化機能またはセキュリティ機能を実装することができる。コンピューティングデバイス102は、他の機能を提供することもできるし、明瞭化または視覚的簡潔さのために図1から省略されたコンポーネントまたはインターフェースを含むこともできる。
【0016】
コンピューティングデバイス102は、コンピューティングデバイスのコンポーネントおよび相互接続が具現化されるプリント回路基板アセンブリ104(PCBA:printed circuit board assembly)104を含む。代替的または追加的に、コンピューティングデバイス102のコンポーネントは、フレキシブル回路材料または他の絶縁材料などの他の基板上に具現化することができる。図示されていないが、コンピューティングデバイス102は、ハウジング、さまざまな人間入力デバイス、ディスプレイ、バッテリパック、アンテナなども含むことができる。一般に、コンピューティングデバイス102の電気コンポーネントおよび電気機械コンポーネントは、プリント回路基板(PCB:printed circuit board)上に組み立てられてPCBA104を形成する。次いで、PCBA104のさまざまなコンポーネント(たとえば、プロセッサおよびメモリ)がプログラムされ、PCBA104の正しい機能を検証するためにテストされる。PCBA104は、コンピューティングデバイス102の他の部分に接続されるか、またはコンピューティングデバイス102の他の部分と共にハウジング内に組み立てられる。
【0017】
図示のように、PCBA104は、1つまたは複数のプロセッサ106およびコンピュータ可読媒体108を含む。プロセッサ106は、任意の適切なシングルコアまたはマルチコアプロセッサ(たとえば、アプリケーションプロセッサ(AP:application processor)、デジタル信号プロセッサ(DSP:digital-signal processor)、中央処理装置(CPU:central processing unit)、グラフィックス処理装置(GPU:graphics processing unit))であってもよい。プロセッサ106は、コンピュータ可読媒体110内に格納された命令またはコマンドを実行して、オペレーティングシステム112、および、コンピュータ可読記憶媒体110内に記憶される初期化モジュール116、暗号化モジュール118、および/またはハッシュモジュール120を有するハッシュマネージャ114を実装するように構成されてもよい。コンピュータ可読記憶媒体110は、各々がコンピュータシステムバスに接続されているランダムアクセスメモリ(RAM:random access memory、ダイナミックRAM(DRAM)、不揮発性RAM(NVRAM:non-volatile RAM)、もしくはスタティックRAM(SRAM:static RAM))、読み取り専用メモリ(ROM:read-only memory、もしくはフラッシュメモリ)、ハードドライブ、SSD、または電子命令の格納に適した任意の種類のメディア、などの1つまたは複数の非一時的記憶デバイスを含んでいてもよい。「結合された」という用語は、(物理的、電気的、磁気的、光学的になど)直接接触している2つ以上の要素、または、互いに直接接触していないものの、依然として相互に連携および/または相互作用する2つ以上の要素を指す場合がある。
【0018】
PCBA104は、I/Oポート122および通信システム124も含み得る。I/Oポート122は、コンピューティングデバイス102が他のデバイスまたはユーザと対話できるようにする。I/Oポート122は、USBポート、オーディオポート、シリアルATA(SATA:Serial ATA)ポート、PCI-expressベースのポートまたはカードスロット、セキュアデジタル入出力(SDIO:secure digital input/output)スロット、および/または他のレガシーポートなど、内部ポートまたは外部ポートの任意の組合せを含むことができる。人間入力デバイス(HID:human-input devices)、外部のコンピュータ可読記憶媒体、または他の周辺機器など、さまざまな周辺機器がI/Oポート122と動作可能に結合されてもよい。
【0019】
通信システム124は、本明細書で説明される受信データ、送信データ、または他の情報などのデバイスデータの通信を可能にし、1つまたは複数のネットワークおよびそれに接続された他のデバイスへの接続を提供し得る。例示的通信システムには、NFCトランシーバ、さまざまなIEEE802.15(Bluetooth(登録商標))規格に準拠したWPAN無線、さまざまなIEEE802.11(WiFi(登録商標))規格のいずれかに準拠したWLAN無線、携帯電話用のWWAN(3GPP(登録商標)準拠)無線、さまざまなIEEE802.16(WiMAX(登録商標))規格に準拠したワイヤレスメトロポリタンエリアネットワーク(WMAN:wireless metropolitan area network)無線、赤外線データアソシエーション(IrDA:Infrared Data Association)プロトコルに準拠した赤外線(IR)トランシーバ、および有線ローカルエリアネットワーク(LAN)イーサネットトランシーバが含まれる。通信システム124を介して通信されるデバイスデータは、コンピューティングデバイス102がそれによって通信する通信プロトコルまたは規格に応じてパケット化またはフレーム化されてもよい。通信システム124は、ローカルネットワーク、イントラネット、またはインターネットを介した通信のためのイーサネットまたは光ファイバインターフェースなどの有線インターフェースを含み得る。代替的または追加的に、通信システム124は、ワイヤレスLAN、セルラーネットワーク、またはWPANなどのワイヤレスネットワークを介した通信を容易にするワイヤレスインターフェースを含んでもよい。
【0020】
図示されていないが、コンピューティングデバイス102は、デバイス内のさまざまなコンポーネントを結合するシステムバス、相互接続、クロスバー、またはデータ転送システムを含むこともできる。システムバスまたは相互接続には、メモリバスもしくはメモリコントローラ、ペリフェラルバス、ユニバーサルシリアルバス、および/またはさまざまなバスアーキテクチャのいずれかを利用するプロセッサもしくはローカルバスなど、さまざまなバス構造のうちのいずれか1つまたはそれらの組合せを含めることができる。
【0021】
PCBA104はさらに、集積回路コンポーネント126を含む。さまざまな実装形態において、集積回路コンポーネント126は、プロセッサ106(たとえば、ホストプロセッサ)に動作可能に接続された暗号化コプロセッサ、プロセッサ、マイクロコントローラ、マイクロプロセッサ、システムオンチップ(SoC)などを含む、安全な信頼のルート(RoT:root of trust)特定用途向け集積回路(ASIC:application-specific integrated circuit)コンポーネントであってもよい。集積回路コンポーネント126(たとえば、ハッシュエンジン、ハッシュアクセラレータ)は、ダウンロードされたソフトウェアの信頼性および完全性を検証するために必要な計算を実行する計算能力を有する、組み込みシステムセキュリティとして実装されてもよい。集積回路コンポーネント126は、プライベートインターフェースを介して、安全な不揮発性コンピュータ可読記憶媒体108に通信可能に結合されてもよい。いくつかの実装形態では、集積回路コンポーネント126は、ハッシュエンジン(たとえば、ハッシュ関数を実行するように構成されたプロセッサ)を含んでいてもよい。別の実装形態では、集積回路コンポーネント126はハッシュエンジンであってもよい。
【0022】
より詳細には、図2に示す、暗号化コプロセッサ202として実装される集積回路コンポーネント126の1つの例を考察する。集積回路コンポーネント126は、暗号化マイクロプロセッサ、マイクロコントローラ、SoCなどとして実装され得るため、これは1つの例にすぎない。この実装形態では、暗号化コプロセッサ202はハッシュエンジンとして動作することができる。他の実装形態では、集積回路コンポーネント126は、たとえば、ハッシュエンジンとして動作するプロセッサを含むコンポーネントを有するSoCであってもよい。
【0023】
図2に示すように、暗号化コプロセッサ202は、算術論理演算ユニット204(ALU:arithmetical and logical unit 204)、レジスタファイル206、制御ユニット208、ハードウェアカウンタ210、および入出/出力(I/O)ユニット212を含むことができる。ALU204は、受信したデータに対して算術演算および論理演算を実行するように構成されていてもよい。レジスタファイル206は、プログラムまたは関数の処理中に迅速なデータアクセスのために構成された高速半一時メモリとして機能するプロセッサレジスタ(たとえば、制御レジスタ)のアレイであってもよい。レジスタは、暗号化コプロセッサ202が作業データに迅速にアクセスできるようにするために、ALU204または他の実行ユニットに緊密に結合され得る。データへのアクセスをさらに容易にするために、レジスタファイルには、ALU204および/または実行ユニットが単一サイクルで複数のオペランドを同時に取得できるようにする複数の読み取りポートまたは複数の書き込みポートが含まれ得る。暗号化コプロセッサ202、またはALU204およびその実行ユニットは、システムアドレス空間とは別個のレジスタアドレス空間を使用してレジスタファイルにアクセスすることができる。場合によっては、レジスタにはレジスタアドレス空間経由でアクセスできるように番号が付けられている。レジスタファイルは、データのビットの読み取りと書き込みを高速化するためにフリップフロップから形成され得る。制御ユニット208は、システム全体のデータの流れを制御するように構成され得る。ハードウェアカウンタ210(たとえば、ハードウェアパフォーマンスカウンタ、プロセッサパフォーマンスカウンタ)は、プロセッサレベルで行われるイベント、トランザクション、または反復をカウントすることができる。たとえば、ハードウェアカウンタ210は、プログラムが実行したサイクルおよび命令の数をカウントすることができる。I/Oユニット212は、デバイスの他のコンポーネントと動作可能にインターフェースされるポートを含むことができる。
【0024】
ハッシュ計算を高速化するための技術
一態様では、コンピューティングデバイス102は、ハッシュベースの署名を検証するためのステップを実装することができる。たとえば、プロセッサ106は、入力メッセージ(たとえば、ファームウェアアップデート、構成データファイル)だけでなく、同じ秘密鍵で署名されたデジタル署名も受信することができる。入力メッセージの完全性と信頼性を検証するために、入力メッセージのダイジェストメッセージを生成するために反復ハッシュ計算を実行してもよい。別の態様では、コンピューティングデバイス102は、公開鍵計算および公開鍵署名のためのステップを実装してもよい。
【0025】
いくつかの態様では、入力メッセージを受信すると、コンピュータ可読媒体108および集積回路コンポーネント126に動作可能に接続されたプロセッサ106は、フェッチ/実行サイクルを実行し、コンピュータ可読媒体108に格納されたハッシュマネージャ114の命令を介して循環させることができる。別の実装形態では、入力メッセージを受信すると、プロセッサ106は、入力メッセージを集積回路コンポーネント126にロードし、集積回路コンポーネント126にフェッチ/実行サイクルを実行するよう命令し、コンピュータ可読媒体108に格納されたハッシュマネージャ114の命令を循環させることができる。
【0026】
図3は、プロセッサ(たとえば、プロセッサ106)によって実行されるときのハッシュマネージャ114(図示せず)の動作を示す図である。一態様では、ハッシュマネージャ114はモードを選択する302。モード選択302は、単一ハッシュ計算用に構成されたモードと反復ハッシュ計算用に構成されたモードとを含む2値判定であってもよい。選択されたモード302が反復ハッシュ計算を示す場合304、ハッシュマネージャ114は初期化モジュール116を実行することができる。初期化モジュール116は、反復ハッシュ計算のために変数を初期化することができる306。たとえば、プロセッサは、入力メッセージ長、コピーオフセット、コピー長、更新オフセット、および更新長の変数の値をプログラムできる。これらの変数の値は、入力メッセージ内のバイトインデックスを識別するために使用されてもよい。プロセッサはさらに、ハッシュ計算を実行するために望ましい反復回数をプログラムし、この値を本明細書で反復カウンタと呼ばれる変数に割り当てることができる。たとえば、プロセッサは値255を反復カウンタ変数に割り当て、それによってハッシュ計算を256回実行するようにプログラムすることができる。反復ハッシュ計算のための変数の値は、入力バッファ(たとえば、暗号化コプロセッサ202のレジスタファイル)内の構成可能な位置にロードされ得る。
【0027】
次に、または初期化モジュール116の動作と並行して、ハッシュマネージャ114は、入力メッセージを集積回路コンポーネント126の入力バッファ内の構成可能な位置にロードすることができる308。入力メッセージおよび反復ハッシュ計算用の変数がロードされると、ハッシュマネージャ114は、集積回路コンポーネント126上で反復ハッシュ計算の実行をトリガすることができる310。
【0028】
図4は、ハッシュマネージャ114によって実装され、反復ハッシュ計算を加速する例示的方法400を示す図である。一態様では、ハッシュマネージャ114(図示せず)は、選択されたモードを判定することができる。選択されたモードが反復ハッシュ計算を示す場合、ハッシュマネージャ114は暗号化モジュール118を実行することができる。暗号化モジュール118は、入力メッセージをn個のメッセージブロックに分割する(「チャンク化」)404、または入力メッセージの先頭、中間、もしくは末尾にデータを追加する(「パディング」)406など、さまざまな暗号化技術を実装することができる。いくつかの実装形態では、暗号化モジュール118は、入力メッセージにランダムデータを組み込むことができる(「ソルティング」)。別の実装形態では、暗号化モジュール118の動作の一部またはすべてがハッシュモジュール120に含まれてもよい。
【0029】
上記の説明にさらに加えて、入力メッセージは、入力メッセージ内のさまざまな長さ、さまざまな順序、およびさまざまなインデックス位置のプレフィックス、サフィックス、秘密シード、および/またはカウンタなど、部分文字列の連結を含むビット文字列(たとえば、256ビット、512ビット)であってもよい。実装形態では、入力メッセージは、22バイトのプレフィックス、1バイトのカウンタ、および32バイトの秘密シードを有する55バイトの長さであってもよい。この実装形態では、22バイトのプレフィックスは、入力メッセージの先頭に追加されるパディングデータであってもよく、1バイトカウンタは、ハッシュモジュール120が反復中に値を1ビットずつ単調増加させる入力メッセージのセクションであってもよく、32バイトの秘密シードには、入力メッセージのバイトまたはダイジェストメッセージのバイトが含まれていてもよい。実装形態では、1バイトカウンタは非単調に増加または減少する場合がある。さらに他の実装形態では、1バイトカウンタは、ハッシュベースの署名検証または公開鍵の計算と署名とを含むユースケース用に構成された値で初期化されてもよい。
【0030】
次に、ハッシュマネージャ114は、ハッシュモジュール120を実行してもよい。ハッシュモジュール120は、ハッシュ計算を実行すること408と、反復カウンタをデクリメントすること410と、反復カウンタがゼロより大きいかどうかを判定すること412と、反復カウンタがゼロより大きい場合にダイジェストメッセージの少なくとも一部をロードすること414と、入力メッセージ内に1バイトカウンタが存在するかどうかを判定すること416と、存在する場合には1バイトカウンタをインクリメントすること418とを含み得る。より詳細には、ハッシュエンジンは、入力メッセージを入力として使用して、ハッシュ計算を実行408してもよい。ハッシュエンジンは、暗号化ハッシュ関数を実行してダイジェストメッセージを生成してもよい。ハッシュエンジンは、SHA256などの特定の規格に準拠した任意の暗号化ハッシュ関数を実装し得る。使用される暗号化ハッシュ関数に応じて、ダイジェストメッセージの長さが異なっていてもよい。
【0031】
ハッシュ計算の実行408後、または実行と並行して、ハッシュモジュール120は、反復カウンタを1カウント値だけデクリメントしてもよい410。反復カウンタ値がゼロより大きい場合412、ハッシュモジュール116は、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードしてもよい414。次に、またはダイジェストメッセージの少なくとも一部をロードするのと並行して、ハッシュマネージャ114は、入力メッセージ内に1バイトカウンタが存在するかどうかを判定してもよい416。1バイトカウンタが入力メッセージ内に存在する場合、ハッシュモジュール120は、1バイトカウンタを1カウント値だけインクリメントすることができる418。入力メッセージ内の1バイトカウンタがインクリメントされると、ハッシュモジュール120は継続し、反復カウンタカウントがゼロより大きくなくなるまでハッシュモジュール120の動作を繰り返すことができる。1バイトカウンタが入力メッセージ内に存在しない場合、ハッシュモジュール120は継続し、反復カウンタカウントがゼロより大きくなくなるまでハッシュモジュール120の動作を繰り返すことができる。反復カウンタ値がゼロより大きくなくなると、ハッシュモジュール120は実行を停止することができ、ハッシュマネージャ114は反復ハッシュ計算の結果(たとえば、ダイジェストメッセージ)をプロセッサ(たとえば、ハッシュベースのメッセージ認証コード(HMAC)コア、ホストプロセッサ)に転送することができる420。
【0032】
ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に所定の反復回数だけ直接ロードすることで、バストランザクションに関連するバスレイテンシを回避し、クイックアクセスメモリを利用して、ハッシュ計算を高速化する。さらに、ダイジェストメッセージの少なくとも一部を入力バッファの構成可能な位置にロードして、以前の入力メッセージの秘密シードを更新することができ、その結果、再プログラムする必要なしにハッシュエンジンを実行できるようになる。
【0033】
例示的方法
このセクションでは、反復ハッシュ計算を高速化する方法の例について説明する。図5は、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードし、所定の反復回数にわたってハッシュ計算を実行することによって反復ハッシュ計算を加速する、ハッシュマネージャ(たとえば、ハッシュマネージャ114)によって実装される例示的な方法500を示す。図示のように、入力バッファ502は、プレフィックス506、1バイトカウンタ508、および秘密シード510を有する入力メッセージ504を含む。プレフィックス506の長さは、たとえば22バイトであってもよい。たとえば、1バイトカウンタは、ゼロに等しい8ビットの2値(たとえば、二進法の00000000)から開始できる。秘密シード510は、たとえば32バイトの長さであってもよい。入力バッファ502は、初期化モジュール(図示せず)によって初期化される変数をさらに含んでいてもよい。更新オフセット512変数は、22に等しい6ビットまたは8ビットの文字列であってもよい。コピー長514の変数は、23に等しい6ビットまたは8ビットの文字列であってもよい。コピー長(図示せず)変数は、ダイジェストメッセージの長さに等しい6ビットまたは8ビットの文字列であってもよい。実装形態では、コピーの長さはダイジェストメッセージの長さの少なくとも一部と等しくてもよい。更新長(図示せず)は、1バイトカウンタの長さに等しい6ビットまたは8ビットの文字列であってもよい。さらに、入力バッファには、8ビット反復カウンタ516変数を含んでいてもよい。たとえば、反復カウンタはカウント値255(たとえば、二進法の11111111)に初期化されてもよい。反復カウンタは、ハッシュ計算が繰り返される反復回数を判定してもよい。
【0034】
図5は、ハッシュモジュール518をさらに示す。一態様では、ハッシュモジュール518はハッシュエンジン(図示せず)によって実装される。たとえば、ハッシュエンジンは、暗号化ハッシュ関数SHA256を実装する暗号化コプロセッサであってもよい。ハッシュエンジンは、入力メッセージを入力として使用して、反復ハッシュ計算を実行し得る。たとえば、ハッシュモジュール518はハッシュ計算を実行し520、その結果、ダイジェストメッセージ(図示せず)が得られ得る。次に、ハッシュモジュール518は、反復カウンタをデクリメントしてもよい522。たとえば、反復カウンタ516は、カウント値254(たとえば、二進法の11111110)にデクリメントされ得る。次に、ハッシュモジュール518は、反復カウンタ516の値がゼロより大きいかどうかを判定することができる。反復カウンタ516の値がゼロより大きくない場合、ハッシュモジュール518は実行を停止してもよく、ハッシュマネージャ(図示せず)がダイジェストメッセージをプロセッサに転送することができる。反復カウンタ516の値がゼロより大きい場合、ハッシュモジュール518は、ダイジェストメッセージ526の少なくとも一部を入力バッファ502内の構成可能な位置にロードすることができる。たとえば、SHA256を実行するハッシュエンジンは32バイトのダイジェストメッセージを生成し得る。ハッシュモジュール518は、ダイジェストメッセージのビットを入力メッセージの秘密シードセクションにロードし、古い秘密シードを置き換えることができる。その結果、入力メッセージは32バイトのダイジェストメッセージの少なくとも一部によって更新される。次に、ハッシュモジュール518は、入力メッセージ504内に1バイトカウンタ528が存在するかどうかを判定してもよい。ハッシュモジュール518が入力メッセージ内に1バイトカウンタ508が存在すると判定した場合、ハッシュモジュールは1バイトカウンタをインクリメントすることができる530。たとえば、1バイトカウンタ508は、カウント値1(たとえば、二進法の00000001)まで増加することができる。そうすることで、ハッシュモジュール120は、1回の反復で1バイトカウンタ508の値を1ビットずつ単調増加させることができる。たとえば、1バイトカウンタ508の値が単調に増加すると、入力メッセージがソルティングされ得る。1バイトカウンタ508が入力メッセージ504に存在しない場合、ハッシュモジュール518は次のハッシュ計算実行520に進むことができる。このようにして、所与の反復のダイジェストメッセージの少なくとも一部を、入力バッファ502内の構成可能な位置に直接ロードして戻すことができ、次のハッシュ計算(「繰り返しハッシュ計算」)のために入力メッセージを更新することができる。そうすることで、この反復ハッシュ計算方法はメモリコピーとバスレイテンシをバイパスし、量子耐性のある暗号化ハッシュベースの署名計算を高速化する。
【0035】
システムオンチップ
図6は、反復ハッシュ計算を加速するさまざまな態様を実装できるSoC600として実装された集積回路コンポーネント(たとえば、集積回路コンポーネント126)を示す図である。SoC600は、同じ半導体基板上に製造されたコンポーネントを含む単一チップであってもよい。代替的に、SoCは、エポキシ樹脂で互いに接着された多数のそのようなチップであってもよい。SoC600は、スマートフォン、携帯電話、ネットブック、タブレットコンピュータ、サーバ、ワイヤレスルータ、ネットワーク接続ストレージ、カメラ、スマート家電製品、プリンタ、セットトップボックス、または任意の適切な種類のデバイスなど、任意の適切なデバイスに実装され得る。SoCを参照して説明されているが、図6のエンティティは、ASIC、フィールドプログラマブルゲートアレイ(FPGA:field-programmable gate array)などとして実装されてもよい。
【0036】
SoC600は、本明細書にリストされているオペレーティングシステムで説明されているコンポーネントを含む電子回路と統合できる。SoC600は、コンポーネント間のデータ通信のためにSoCのさまざまなコンポーネントを結合する統合データバス(図示せず)を含むこともできる。SoC600の統合データバスまたは他のコンポーネントは、JTAGポートなどの外部ポートを介して公開またはアクセスできる。たとえば、SoC600のコンポーネントは、製造のさまざまな段階で外部ポートを介してテスト、構成、またはプログラム(たとえばフラッシュ)できる。
【0037】
この例では、SoC600は、コンピュータ可読記憶媒体602、1つまたは複数のプロセッサ604、ハッシュエンジン606、およびI/Oユニット608を含む。コンピュータ可読記憶媒体602は、各々がコンピュータシステムバスに結合されたRAM((DRAM、NVRAM、もしくはSRAM)、ROM、またはフラッシュメモリ)、ハードドライブ、SSD、または電子命令の格納に適した任意の種類のメディアなど、1つまたは複数の非一時的な記憶デバイスを含むことができる。コンピュータ可読記憶媒体602は、ハッシュマネージャ(たとえば、ハッシュマネージャ114)の命令のすべてまたは一部を含み得る。プロセッサ604は、ハッシュマネージャの命令を実装することができる。いくつかの実装形態では、任意の安全な信頼のルート(RoT)コンポーネントを、暗号化プロセッサを含むハッシュエンジン604として実装することができる。さらに、ハッシュエンジン604は、SHA256などの任意の暗号化ハッシュ関数を実装することができる。
【0038】
主題は構造的特徴および/または方法論的動作に特有の言語で説明されているが、添付の特許請求の範囲で定義される主題は、実行される順序を含め、本明細書で説明される特定の機能または動作に必ずしも限定されないことを理解されたい。
【0039】

以下のセクションでは例を示す。
【0040】
例1:コンピュータが実行する方法であって、第1の入力メッセージを入力バッファにロードすることと、ハッシュエンジンが、第1の入力メッセージを入力として使用し、ハッシュ計算を計算することとを含む。ハッシュ計算の結果、ダイジェストメッセージが生成される。コンピュータが実行する方法は、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードすることと、ハッシュ計算を所定の反復回数だけ繰り返すこととをさらに含む。繰り返されるハッシュ計算の各々により、ダイジェストメッセージの少なくとも一部が入力バッファ内の構成可能な位置に直接ロードされ、繰り返されるハッシュ計算のその後の反復で使用される入力として使用される結果となる。
【0041】
例2:例1に記載されたコンピュータが実行する方法であって、ハッシュエンジンは、暗号化ハッシュ関数を実装する暗号化プロセッサである。
【0042】
例3:例1に記載のコンピュータが実行する方法であって、ダイジェストメッセージの長さは32バイトである。
【0043】
例4:例1に記載のコンピュータが実行する方法であって、入力バッファは、ハッシュエンジンのレジスタファイルである。
【0044】
例5:例1に記載のコンピュータが実行する方法であって、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードすることは、ダイジェストメッセージをハッシュエンジンの外部のメモリにロードすることなく実装される。
【0045】
例6:例1に記載のコンピュータが実行する方法であって、第1の入力メッセージは、プレフィックス、カウンタ、および秘密シードの連結を含むビット文字列である。
【0046】
例7:例5に記載のコンピュータが実行する方法であって、第1の入力メッセージの長さは56バイトである。
【0047】
例8:例1に記載のコンピュータが実行する方法であって、ダイジェストメッセージの少なくとも一部を入力バッファ内の構成可能な位置に直接ロードすることにより、秘密シードが置き換えられる。
【0048】
例9:例1に記載のコンピュータが実行する方法であって、ハッシュ計算を繰り返すことは、256回実行される。
【0049】
例10:例1に記載のコンピュータが実行する方法であって、反復カウンタをデクリメントすることと、繰り返されるハッシュ計算への入力メッセージに1バイトカウンタが含まれる場合、1バイトカウンタをインクリメントすることとをさらに含む。
【0050】
例11:例10に記載のコンピュータが実行する方法であって、反復カウンタには、初期化時に0~255の範囲の値が割り当てられる。
【0051】
例12:例11に記載のコンピュータが実行する方法であって、反復カウンタは、ハッシュエンジンのレジスタにロードされる。
【0052】
例13:例10に記載のコンピュータが実行する方法であって、1バイトカウンタは、ハッシュベースの署名検証のために構成された値で始まる。
【0053】
例14:例13に記載のコンピュータが実行する方法であって、1バイトカウンタは単調増加する。
【0054】
例15:コンピューティングデバイスであって、少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行されると、プロセッサに、先行する例のいずれか1つに記載の方法を実行させる命令を含む少なくとも1つのコンピュータ可読記憶媒体とを備える。
【0055】
結論
量子耐性のある暗号化ハッシュベースの署名計算の高速化を可能にするための技術および装置の実装形態は、機能および/または方法に固有の言語で説明されてきたが、添付の特許請求の範囲の主題は、記載された特定の特徴または方法に必ずしも限定されないことを理解されたい。むしろ、特定の機能および方法は、量子耐性のある暗号化ハッシュベースの署名計算の高速化を可能にする例示的実装形態として開示されている。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2024-05-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータが実行する方法であって、
第1の入力メッセージを入力バッファにロードすることと、
ハッシュエンジンが、前記第1の入力メッセージを入力として使用し、ハッシュ計算を計算することとを含み、前記ハッシュ計算の結果、ダイジェストメッセージが生成され、
前記コンピュータが実行する方法は、
前記ダイジェストメッセージの少なくとも一部を前記入力バッファ内の構成可能な位置に直接ロードすることと、
前記ハッシュ計算を所定の反復回数だけ繰り返すこととをさらに含み、前記繰り返されるハッシュ計算の各々により、ダイジェストメッセージの少なくとも一部が前記入力バッファ内の前記構成可能な位置に直接ロードされ、前記繰り返されるハッシュ計算のその後の反復で使用される入力として使用される、コンピュータが実行する方法。
【請求項2】
前記ハッシュエンジンは、暗号化ハッシュ関数を実装する暗号化プロセッサである、請求項1に記載のコンピュータが実行する方法。
【請求項3】
前記ダイジェストメッセージの長さは32バイトである、請求項1または2に記載のコンピュータが実行する方法。
【請求項4】
前記入力バッファは、前記ハッシュエンジンのレジスタファイルである、請求項1~3のいずれか一項に記載のコンピュータが実行する方法。
【請求項5】
前記ダイジェストメッセージの少なくとも一部を前記入力バッファ内の前記構成可能な位置に直接ロードすることは、前記ダイジェストメッセージを前記ハッシュエンジンの外部のメモリにロードすることなく実装される、請求項1~4のいずれか一項に記載のコンピュータが実行する方法。
【請求項6】
前記第1の入力メッセージは、プレフィックス、カウンタ、および秘密シードの連結を含むビット文字列である、請求項1~5のいずれか一項に記載のコンピュータが実行する方法。
【請求項7】
前記第1の入力メッセージの長さは56バイトである、請求項6に記載のコンピュータが実行する方法。
【請求項8】
前記第1の入力メッセージは、前記バッファメモリ(buffer memory)内の前記構成可能な位置にロードされた秘密シードを含み、前記ダイジェストメッセージの少なくとも一部を前記入力バッファ内の前記構成可能な位置に直接ロードすることにより、前記秘密シードが置き換えられる、請求項1~7のいずれか一項に記載のコンピュータが実行する方法。
【請求項9】
前記ハッシュ計算を前記繰り返すことは、256回実行される、請求項1~8のいずれか一項に記載のコンピュータが実行する方法。
【請求項10】
反復カウンタをデクリメントすることと、
前記繰り返されるハッシュ計算への入力メッセージに1バイトカウンタが含まれる場合、1バイトカウンタをインクリメントすることとをさらに含む、請求項1~9のいずれか一項に記載のコンピュータが実行する方法。
【請求項11】
前記反復カウンタには、初期化時に0~255の範囲の値が割り当てられる、請求項10に記載のコンピュータが実行する方法。
【請求項12】
前記反復カウンタは、前記ハッシュエンジンのレジスタにロードされる、請求項11に記載のコンピュータが実行する方法。
【請求項13】
前記1バイトカウンタは、ハッシュベースの署名検証のために構成された値で始まる、請求項10に記載のコンピュータが実行する方法。
【請求項14】
前記1バイトカウンタは単調増加する、請求項13に記載のコンピュータが実行する方法。
【請求項15】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されると、前記プロセッサに、請求項1~14のいずれか1項に記載の方法を実行させる命令を含む少なくとも1つのコンピュータ可読記憶媒体とを備える、コンピューティングデバイス。
【国際調査報告】