図面を参照し、特定の言語を使用して本開示の様々な態様を説明する。図面および説明をこのように使用することは、その範囲を限定するものと解釈されるべきではない。追加の態様は、特許請求の範囲を含む、本開示に照らして明らかであり得るか、または実施によって習得され得る。
モノのインターネット(IoT)デバイスの数が増加するにつれて、特にIoTデバイスが、例えば商業用途および産業用途においてますます拡大するにつれて、これらのデバイスに関連するセキュリティおよびプライバシーの懸念も増加する。
一般に、IoTデバイスがネットワークまたはエコシステムの一部として動作するためには、それらを識別し、認証する必要がある。識別は、デバイスのアイデンティティを示す動作またはプロセスである。認証は、そのアイデンティティを検証する、またはデバイスのアイデンティティの指示を証明する動作またはプロセスである。デバイスを暗号学的に安全な方法で識別および認証することが重要であり得る。
一般に、インターネットを介して接続されたデバイスは、コンピュータネットワークを介して通信セキュリティを提供するように設計されたプロトコルである、トランスポート層セキュリティ(TLS)プロトコルを使用してサーバを認証するために証明書を使用する。証明書は、暗号的に安全であり、証明書に署名する認証局によって発行される。プロトコルのバージョンは、ウェブブラウジング、電子メール、インスタントメッセージング、およびボイスオーバーIP(VoIP)などのアプリケーションで使用される。ウェブサイトは、そのサーバとウェブブラウザとの間の通信を保護するためにTLSを使用することができる。
しかしながら、認証のためのTLSの使用は、様々な問題に関連付けられる。例えば、ウェブブラウザは、いくつかのルート証明書を手動で信頼する必要があり、状況によっては、ウェブブラウザは、受け入れられた証明書のローカルデータベースを含む。加えて、危険にさらされた証明書を失効させることは非常に困難であり、ほとんどの場合、これは証明書をブラックリストに登録すること、またはブラウザにローカルデータベースから除去することを要求することを含む。しかしながら、証明書の失効に関連付けられた遅延がある可能性があり、その間、多くのブラウザは、危険にさらされたウェブサイトにアクセスし続ける。さらに、TLSプロトコルは、ルート機関を制御するエンティティによって本質的に危険にさらされ、したがって、それらのエンティティに任意の証明書を発行する能力を与え、それによって中間者攻撃を可能にする。ルート機関は、同じドメイン名の証明書を2つの異なる当事者に二重に発行しないように、または証明書を発行する前にいくつかの検証を実行するように信頼する必要がある。これは、デバイス製造業者またはネットワークオペレータがルート機関の制御権を有していない可能性があり、したがってそれらのデバイスのセキュリティを保証する能力を有さないため、IoTデバイスにとって問題となり得る。
これらの理由から、TLSプロトコルは、ネットワークまたはエコシステムのIoTデバイスを認証するのにあまり適しておらず、一部のIoTデバイス製造業者は、認証の代替手段を実装している。
例えば、一部のIoTデバイス製造業者は、集中型暗号検証および認証方式を実装する。そのような構成では、IoTデバイスは、製造時に融合された鍵を使用して暗号証明を生成するためのチップを含み、その後、製造業者のサーバによって検証されなければならない。しかしながら、この代替の解決策は、依然として信頼できる中央エンティティ(この場合、製造業者)を必要とし、偽のデバイスを証明するために依然として危険にさらされる可能性があるか、またはサーバが単に利用不可にされた場合にデバイスの検証が不可能になる単一障害点を導入する。
TLS認証の別の代替策は、ブロックチェーンベースの認証方式である。そのような構成では、すべての証明書または識別子が発行され、公開ブロックチェーン台帳に格納され、検証される。この手法は、上述した懸念のいくつかに対処するが、それをIoTデバイスネットワークに適さなくする欠点にも関連付けられる。特に、すべてのアイデンティティはブロックチェーン上に保存され、これは証明書が発行される必要があるたびに(例えば、新しく製造されたデバイスの場合)、トランザクションが作成および処理される必要があることを意味する。トランザクションが処理されるためには、関連するコンピューティングリソースが支払われる必要があり、したがって、デバイス製造業者は、製造される新しいデバイスごとに証明書を発行するために支払う必要がある。状況によっては、証明書生成は、多くのデバイスのために一緒にバンドルされてもよく、完全な証明書の記憶は、ピアツーピアハイパーメディアプロトコルであるインタープラネタリファイルシステム(IPFS)などのネットワークにオフロードされてもよい。しかしながら、これらの解決策は、ブロックチェーンネットワークの飽和、および製造されるすべての新しいデバイスに対して新しい証明書を作成するための料金などの懸念に対処しない。さらに、IoTデバイス製造業者がそのすべてのデバイスの証明書を公開ブロックチェーン上に保存しなければならない場合、競合企業およびアナリストは、いくつのデバイスが製造されているかに関する情報を決定することが可能になる。
したがって、本開示は、IoTデバイスのための証明書をプロビジョニングおよび認証するためのシステムおよび方法を説明する。特に、本開示は、ブロックチェーンベースの認証、集中型暗号認証、TLS認証、および他の認証方式に関連付けられた問題なしに、暗号学的に安全な方法でデバイスを認証および識別するためのシステムおよび方法を説明する。
図1は、本開示の実施形態が実装され得る一例示的なネットワークアーキテクチャ100を示す。ネットワークアーキテクチャ100は、1つまたは複数のエンドポイントデバイス105と、1つまたは複数の中間デバイス115と、1つまたは複数の中継サーバ125と、1つまたは複数のエンドポイントマネージャサーバ135とを含んでもよい。いくつかの実施形態では、ネットワークアーキテクチャ100は、ネットワーククライアントとして機能することができるクラウドソース中間デバイス115および1つまたは複数の中継サーバ125を介して、1つまたは複数のエンドポイントデバイス105と様々なエンドポイントマネージャサーバ135との間でデータを移動することができる。
エンドポイントデバイス105は、1つまたは複数のIoTデバイスを含むことができる。エンドポイントデバイス105は、電源、データ収集デバイス(例えば、センサ)、およびネットワークデバイスを含むことができる。電源は、バッテリまたは電力網への接続を含むことができる。追加的または代替的に、電源は、ソーラーパネル、太陽電池、太陽光発電、電磁気などのエネルギー採取装置を含んでもよい。少なくともいくつかの実施形態では、エンドポイントデバイス105は、電源を含まなくてもよく、代わりに周囲後方散乱技術を使用してもよい。エンドポイントデバイス105はまた、1つまたは複数のセンサを含むことができる。1つまたは複数のセンサは、任意のタイプの状態を検出し、検出された状態に基づいて電子データを生成するように構成されてもよい。例えば、エンドポイントデバイス105は、心拍数モニタによって収集された心拍数状態を使用して心拍数データを生成するように構成された心拍数モニタを伴うスマートウォッチを含むことができる。いくつかの実施形態では、エンドポイントデバイス105は、インターネットを介して通信する能力を有さず、近くの中間デバイス115などの近くのデバイスと通信することができるハードウェアおよび/またはソフトウェアのみを含む。他の実施形態では、エンドポイントデバイス105は、インターネットを介して通信するハードウェアおよび/またはソフトウェアを含むことができる。
エンドポイントデバイス105のネットワークデバイスは、ネットワークを介して別のデバイスと通信することができる任意のハードウェア、ソフトウェア、またはそれらの組合せを含むことができる。少なくとも1つの実施形態では、ネットワークデバイスは、Bluetooth(登録商標)または任意の他の短距離ネットワークなどの短距離ネットワークを介して通信するように構成された任意のネットワークコントローラを含むことができる。少なくとも1つの実施形態では、ネットワークデバイスは、低電力ネットワークを介して通信するように構成された任意のネットワークコントローラを含むことができる。例示的なエンドポイントデバイス105は、産業用デバイス、住宅用電化製品、商業用機器、在庫トラッカ、スマートウォッチ、ウェアラブル、心拍数モニタ、ロジスティクストラッカ、環境センサ、レジスタ、クレジットカードリーダ、販売時点管理(POS)、自転車、電動スクータ、電動スケートボード、自動車、電気自動車、衛星、または任意のデバイス(無線インターフェースを含むモバイルおよびモバイルではないものを含むが、これらに限定されない)。ネットワークアーキテクチャ100は、任意の数のエンドポイントデバイス105を含むことができ、ネットワークアーキテクチャ100のエンドポイントデバイス105は、任意のタイプのネットワーク対応デバイスを含む任意のタイプのエンドポイントデバイス105とすることができる。エンドポイントデバイス105は、POSまたは汚染センサなど、ネットワークアーキテクチャ100に固定されていても比較的静止されていてもよい。追加的または代替的に、エンドポイントデバイス105は、スマートウォッチなどのモバイル、または任意の自動車もしくは車両であってもよい。
1つまたは複数のエンドポイントデバイス105は、少なくとも1つの無線ネットワーク110を介して他のデバイスと通信するように構成されてもよい。例えば、第1のエンドポイントデバイス105aは、無線ネットワーク110aを介して第1の中間デバイス115aと電子通信してもよい。1つまたは複数の中間デバイス115は、無線ネットワーク110を介してエンドポイントデバイス105と通信することができ、第2のネットワーク120を介して中継サーバ125と通信することができる任意のタイプのデバイスを含んでもよい。少なくとも1つの実施形態では、中間デバイス115は、無線ネットワーク110を介して通信する第1のネットワークコントローラと、第2のネットワーク120を介して通信する第2のネットワークコントローラとの2つのネットワークコントローラを含んでもよい。例示的な中間デバイス115は、モバイルデバイス、パーソナルコンピュータ(PC)、ラップトップ、スマートフォン、ネットブック、eリーダ、携帯情報端末(PDA)、セルラ電話、携帯電話、タブレット、車両、ドローン、自動車、トラック、ウェアラブルデバイス、ルータ、テレビ、またはセットトップボックスなどを含む。
図示されるように、第1のエンドポイントデバイス105aは、無線ネットワーク110a(例えば、短距離ネットワーク)を介して第1の中間デバイス115aと電子通信することができる。さらに、第2のエンドポイントデバイス105bは、別の無線ネットワーク110b(例えば、低電力ネットワーク)を介して第2の中間デバイス115bと電子通信することができる。第3のエンドポイントデバイス105cは、別の無線ネットワーク110cを介して第3の中間デバイス115cと電子通信することができる。第4のエンドポイントデバイス105dは、別の無線ネットワーク110dを介して第4の中間デバイス115dと電子通信することができる。
いくつかの実施形態では、無線ネットワーク110は、比較的少量の電力を使用する任意のネットワークであってもよい。例示的な無線ネットワーク110は、任意のBluetooth(登録商標)ネットワークタイプ(例えば、Bluetooth Low Energy(BLE)、Bluetooth 4.0、Bluetooth 5.0、Bluetooth Long Range)、NB-IoT、LTEダイレクト、LTE-M、LTE M2M、5G、Wi-Fi、Wi-Fiアウェア、または任意の低電力ネットワークを含み得る。1つまたは複数のエンドポイントデバイス105は、異なるタイプの無線ネットワーク110を使用して様々な中間デバイス115に接続することができる。例えば、第1のエンドポイントデバイス105aは、第1の近距離無線ネットワーク110aを介して第1の中間デバイス115aと電子通信してもよく、第2のエンドポイントデバイス105bは、第2の近距離無線ネットワーク110bを介して第2の中間デバイス115bと電子通信してもよい。
エンドポイントデバイス105、中間デバイス115、またはその両方は、固定されていてもよく、比較的静止していてもよく、または可動であってもよい。エンドポイントデバイス105および中間デバイス115が互いの無線範囲に入ると、エンドポイントデバイス105および中間デバイス115は、ハンドシェイクおよび/または認証を実行して、エンドポイントデバイス105と中間デバイス115との間のデータ交換を開始することができる。
いくつかの実施形態では、エンドポイントデバイス105は、無線ネットワーク110を介してデータを含むビーコンを定期的に送信することができる。エンドポイントデバイス105は、エンドポイントデバイス105上で実行することができる様々なサービスを含むことができる。例えば、スマートウォッチは、クロックサービス、心拍数モニタサービス、動き検出サービス、音楽サービスなどを含むことができる。ビーコンは、これらのサービスの各々に対して生成されてもよく、または単一のビーコンは、サービスの一部またはすべてのデータを含むように生成されてもよい。
中間デバイス115は、エンドポイントデバイスからのそのようなビーコンをリスンすることができる。ビーコンの受信に応答して、中間デバイス115は、ビーコンを、第2のネットワーク120を介して中継サーバ125へ送信し得る。少なくとも1つの実施形態では、無線ネットワーク110および第2のネットワーク120は異なるタイプのネットワークである。例えば、無線ネットワーク110は、Bluetooth(登録商標)ネットワークであってもよく、第2のネットワーク120は、セルラネットワーク、Wi-Fi、またはインターネットであってもよい。
第2のネットワーク120は、公衆ネットワーク(例えば、インターネット)、プライベートネットワーク(例えば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、有線ネットワーク(例えば、イーサネットネットワーク)、無線ネットワーク(例えば、802.xxネットワークまたはWi-Fiネットワーク)、セルラネットワーク(例えば、ロングタームエボリューション(LTE)またはLTEアドバンストネットワーク、1G、2G、3G、4G、5Gなど)、ルータ、ハブ、スイッチ、サーバコンピュータ、および/または、それらの組合せを含んでもよい。
中継サーバ125は、ビーコン、またはビーコンに関連する情報を、第3のネットワーク130を介してエンドポイントマネージャサーバ135に送信することができる。第3のネットワーク130は、公衆ネットワーク(例えば、インターネット)、プライベートネットワーク(例えば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、有線ネットワーク(例えば、イーサネットネットワーク)、無線ネットワーク(例えば、802.xxネットワークまたはWi-Fiネットワーク)、セルラネットワーク(例えば、ロングタームエボリューション(LTE)またはLTEアドバンストネットワーク、1G、2G、3G、4G、5Gなど)、ルータ、ハブ、スイッチ、サーバコンピュータ、および/または、それらの組合せを含んでもよい。少なくとも1つの実施形態では、第2のネットワーク120および第3のネットワーク130は同じネットワークであるか、または少なくともいくつかの重複する構成要素を含む。
1つまたは複数の中継サーバ125は、ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、スマートフォン、自動車、ドローン、ロボット、オペレーティングシステムを有する任意のモビリティデバイスなどの1つもしくは複数のコンピューティングデバイス、データストア(例えば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェア構成要素、および/またはハードウェア構成要素を含み得る。1つまたは複数の中継サーバ125は、中間デバイス115からビーコンを受信するように構成されてもよい。1つまたは複数の中継サーバ125は、ビーコン、またはエンドポイントマネージャサーバ135に関連するもしくは関連付けられたデータを送信することができる。1つまたは複数の中継サーバ125は、エンドポイントマネージャサーバ135からメッセージを受信してもよく、いくつかの実施形態では、エンドポイントマネージャサーバ135から中間デバイス115にメッセージを送信してもよい。少なくともいくつかの実施形態では、中間デバイス115は、エンドポイントマネージャサーバ135からのメッセージの受信に応答して、1つまたは複数の動作を実行することができる。動作は、中間デバイス115に対してローカルな動作、および/またはエンドポイントマネージャサーバ135からエンドポイントデバイス105にメッセージを送信する動作を含む。
エンドポイントマネージャサーバ135は、ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、スマートフォン、自動車、ドローン、ロボット、オペレーティングシステムを有する任意のモビリティデバイスなど)の1つもしくは複数のコンピューティングデバイス、データストア(例えば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェア構成要素、および/またはハードウェア構成要素を含み得る。エンドポイントマネージャサーバ135は、1つまたは複数のエンドポイントデバイス105と関連付けることができる。例えば、特定の企業、人物、または製造業者は、エンドポイントデバイス105を販売することができ、エンドポイントマネージャサーバ135を使用して、エンドポイントデバイス105と通信し、および/またはエンドポイントデバイスを制御することができる。
エンドポイントマネージャサーバ135は、特定のエンドポイントデバイス105、またはエンドポイントデバイス105のセットに関連付けられたメッセージを送信することができる。例えば、エンドポイントマネージャサーバ135は、特定のエンドポイントデバイス105、またはエンドポイントデバイス105のセットに更新(例えば、ファームウェア、ソフトウェア)を送信することができる。エンドポイントマネージャサーバ135は、特定のエンドポイントデバイス105によって生成されたビーコンからの要求に対する応答など、他の通信をエンドポイントデバイス105に送信することができる。
各中継サーバ125は、メッセージマネージャ140を含み得る。メッセージマネージャ140は、プロセッサ、マイクロプロセッサ(例えば、1つまたは複数の動作の性能を実行または制御するために)、FPGA、またはASICを含むハードウェアを使用して実装され得る。いくつかの他の例では、メッセージマネージャ140はハードウェアとソフトウェアの組合せを使用して実装されてよい。ソフトウェアにおける実装は、コンピューティングシステム(例えば、中継サーバ135)のハードウェアに含まれ得るような1つまたは複数のトランジスタまたはトランジスタ素子の迅速な活性化および非活性化を含むことができる。加えて、ソフトウェア定義命令は、トランジスタ素子内の情報に対して動作することができる。ソフトウェア命令の実装は、電子経路を少なくとも一時的に再構成し、コンピューティングハードウェアを変換することができる。
各中継サーバ125は、データストレージ145を含み得る。データストレージ145は、任意のメモリまたはデータストレージを含むことができる。いくつかの実施形態では、データストレージ145は、そこに格納されたコンピュータ実行可能命令またはデータ構造を搬送または有するためのコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサなどの汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体を含むことができる。例えば、データストレージ145は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)もしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、またはコンピュータ実行可能命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは格納するために使用することができ、汎用もしくは専用コンピュータによってアクセスすることができる任意の他の記憶媒体を含む、有形または非一時的なコンピュータ可読記憶媒体とすることができるコンピュータ可読記憶媒体を含むことができる。上述の組合せがデータストレージ145に含まれていてもよい。図示の実施形態では、データストレージ145は、中継サーバ125の一部である。いくつかの実施形態では、データストレージ145は、中継サーバ125とは別個であってもよく、ネットワークを介してデータストレージ145にアクセスしてもよい。少なくとも1つの実施形態では、データストレージ145は、複数のデータストレージを含むことができる。
データストレージ145は、エンドポイントデバイス105、中間デバイス115、およびエンドポイントマネージャサーバ135に関係するデータ、ならびにエンドポイントデバイス105、中間デバイス115、およびエンドポイントマネージャサーバ135の間の関係を含むことができる。例えば、データストレージ145は、特定のエンドポイントマネージャサーバ135に関連付けられたエンドポイントデバイスのテーブルまたはリストを含むことができる。データストレージ145は、ビーコンの受信のタイムスタンプ、ビーコンの作成に関連付けられたタイムスタンプ、ビーコンおよび/またはビーコンを作成または送信したエンドポイントデバイス105に関連付けられた地理的位置、エンドポイントデバイスに関連付けられたセンサデータ、エンドポイントマネージャサーバ135とエンドポイントデバイス105との間でデータを送信する方法および/または場所に関するルーティング情報、中間デバイスとエンドポイントデバイスとの間の接続強度、エンドポイントデバイス105の中間デバイス115への近接度、中間デバイス115とエンドポイントデバイス105とを接続する無線ネットワーク110のタイプ、中間デバイス115とエンドポイントデバイス105との間の接続のコスト、中間デバイスの現在のバッテリレベル、中間デバイスのタイプなど、エンドポイントデバイスから受信したビーコンに関するデータを含むことができる。
メッセージマネージャ140は、エンドポイントデバイス105、中間デバイス115、およびエンドポイントマネージャサーバ135の間の通信を処理することができる。一例では、メッセージマネージャ140は、第2のネットワーク120aを介して中間デバイス115aからビーコンを受信し得る。ビーコンは、エンドポイントデバイス105aによって無線ネットワーク110aを介して中間デバイスに送信されていてもよい。ビーコンは、エンドポイントデバイス105の識別子(例えば、MACアドレス、一意のID)、エンドポイントデバイス105aの地理的位置、およびそれがサポートするサービスのUUIDの広告などを含む、エンドポイントデバイス105に関する特性を含むことができる。メッセージマネージャ140は、ビーコンに関する情報を識別するためにビーコンを分析することなどによって、ビーコンの特性を識別することができる。メッセージマネージャ140はデータストレージ145にアクセスして、ビーコンの特性に基づいて、ビーコンに関連付けられたエンドポイントマネージャサーバ135を識別することができる。例えば、エンドポイントデバイスの識別子は、特定のエンドポイントマネージャサーバ135を運用する特定の製造業者に関連付けられ得る。メッセージマネージャ140は、データストレージ145のこの特定のエンドポイントマネージャサーバ135と、エンドポイントマネージャサーバ135に到達するためにビーコンを送信するアドレスおよび/または経路とを識別することができる。少なくともいくつかの実施形態では、メッセージマネージャ140は第3のネットワーク130を介してエンドポイントマネージャサーバ135にビーコンまたはビーコンメッセージを送信してもよい。ビーコンメッセージは、ビーコンを含んでもよいし、ビーコンを含まなくてもよいし、ビーコンに関する情報を含んでもよい。
少なくとも1つの実施形態では、ビーコンは、エンドポイントデバイス105に関連付けられた複数のサービスからのデータを含むことができる。追加的または代替的に、単一のエンドポイントデバイス105からの複数のビーコンが生成され、無線ネットワーク110を介してブロードキャストされてもよい。これらの複数のビーコンの各々は、例えば、エンドポイントデバイス105に関連付けられた異なるサービスに関連付けられ得る。メッセージマネージャ140はサービスを識別し、サービスの情報に基づいて、ビーコンメッセージを受信すべき適切なエンドポイントマネージャサーバ135を識別することができる。
エンドポイントマネージャサーバ135は、中継サーバ125からメッセージを受信してもよい。エンドポイントマネージャサーバ135は、メッセージを格納してもよく、メッセージを処理してもよく、メッセージに基づいてレポートを生成してもよく、メッセージに基づいて通知もしくは応答を生成してもよく、または任意の他のアクションを行ってもよい。例えば、エンドポイントマネージャサーバ135は、ビーコンメッセージに関する応答メッセージを生成することができる。応答メッセージは、中継サーバ125、中間デバイス115、ビーコンを生成したエンドポイントデバイス105、またはビーコンを生成しなかった別のエンドポイントデバイス105の1つまたは複数を対象としたメッセージを含み得る。エンドポイントマネージャサーバ135は、エンドポイントマネージャサーバ135にビーコンメッセージを送信したのと同じ中継サーバ125に応答メッセージを送信してもよく(例えば、中継サーバ125a)、または、エンドポイントマネージャサーバ135にビーコンメッセージを送信しなかった異なる中継サーバ125に応答メッセージを送信してもよい(例えば、中継サーバ125b)。
中継サーバ125は、エンドポイントマネージャサーバ135から、ビーコンメッセージに関する応答メッセージを受信してもよい。中継サーバ125は、中継サーバ125で動作を実行すること、別のデバイス(例えば、ユーザデバイス)にデータを送信すること、エンドポイントデバイス105にデータを送信することなどによって、応答メッセージを処理することができる。
ネットワークアーキテクチャ100は、インターネットを介した従来の通信とは異なる方法で、ネットワークベースの通信が可能な任意のデバイス間でデータを交換するために使用することができる。
一例では、ネットワークアーキテクチャ100は、既存のスマートフォンインフラストラクチャを活用して遅延許容接続を作成することができる。ネットワークアーキテクチャ100は、初期遅延許容方式でクラウドにデータを移動することができ、これは、ファームウェア更新、ステータス更新、ログファイル記憶、およびマイクロペイメントなどの多くのタイプのIoT通信に有用であり得る。中間デバイスは、スマートフォン上で動作して、産業用デバイス、スマートウォッチ、ウェアラブル、ロジスティクストラッカ、および環境センサなどの他のデバイス(例えば、エンドポイントデバイス105)を定期的にスキャンするソフトウェアを含むことができる。これらのエンドポイントデバイス105は、スマートフォン上で実行されているソフトウェアクライアントと接続して、クラウドとの間で、およびクラウド内でデータを移動させるための大規模なエリアワイドネットワークを形成することができる。
さらに、ヒト集団の95%が何らかのセルラサービスによってカバーされていると推定されている。ネットワークアーキテクチャ100は、世界中のどこにでも配置することができ、より低い接続性の領域がそれらの接続性を高めることを可能にする。さらに、ネットワークアーキテクチャ100は、例えば、Bluetooth(登録商標)対応のスマートフォン上で動作するソフトウェアを使用することによって、従来のセルラネットワークの到達範囲を超えるカバレッジを提供することができる。ユーザは、セルラ接続が制限された、またはセルラ接続がないエリアに移動することができるが、それでもなお、無線ネットワーク110を介してエンドポイントデバイス105からビーコンを受信することができる。ネットワークアーキテクチャ100を使用して、例えば、通信事業者は、本明細書で説明するようにエンドポイントデバイス105との通信を開始するためにユーザデバイスにソフトウェア更新を容易に展開して、世界の最も遠い地域にもより高いレイテンシのIoT接続を提供することができるようになる。
特定の例では、ネットワークアーキテクチャ100は、資産追跡および管理に使用することができる。例えば、ネットワークアーキテクチャ100を使用して、ワイヤレス無線チップセットを伴うスケートボード、取り付けられた追跡ビーコン、ラップトップなど、エンドポイントデバイス105として構成された紛失物を見つけることができる。ユーザは、例えば、モバイルアプリケーションまたはウェブサイトを使用して、エンドポイントマネージャサーバ135または中継サーバ125に、アイテムが紛失したことを示すなどして、アイテムが紛失したことを示すことができる。第1の実施形態において、エンドポイントマネージャサーバ135は、紛失物を監視するためにメッセージを1つまたは複数の中継サーバ125に送信してもよい。中継サーバ125は、紛失物の識別子を、紛失物ウォッチリストに追加してもよい。中間デバイス115が異なる地理的位置に移動すると、それらは異なるエンドポイントデバイス103からビーコンを受信することができる。次いで、中間デバイス115は、ビーコンを中継サーバ125に転送する。中継サーバ125サーバがビーコンを受信すると、中継サーバ125は、ビーコンを分析して、ビーコンがウォッチリスト上にあるエンドポイントデバイス105で発信されたかどうかを決定することができる。中継サーバ125が、ウォッチリスト上にあるエンドポイントデバイス105で発信されたビーコンを識別すると、中継サーバ125は、エンドポイントマネージャサーバ135に、紛失物が見つかったことを通知することができる。少なくともいくつかの実施形態では、中継サーバ125は、紛失物が見つかったという通知をプッシュ通知またはプル通知(すなわち、エンドポイントマネージャサーバ135からの要求に応答して)として送信することができる。少なくともいくつかの実施形態では、中継サーバ125は、アイテムが紛失したことを示すためにユーザによって使用されたユーザデバイスに、紛失物が見つかったという通知を送信することができる。
中間デバイス115および/またはエンドポイントデバイス105が異なる地理的位置に移動するにつれて、それらがネットワークアーキテクチャ100で通信する方法は変化し得る。例えば、エンドポイントデバイス105の1つが、中間デバイス115の1つと通信することができるほど十分に近くない位置に移動した場合、ビーコンを受信する範囲内にデバイスがなくても、ビーコンを送信し続けることができる。さらに、エンドポイントデバイス105は、中間デバイス115の1つが範囲内に入るまでビーコンを送信し続けることができる。同様に、中間デバイス115は、エンドポイントデバイス105の範囲外の位置に移動することができ、ネットワークアーキテクチャ100はそれに応じて適応することができる。
ネットワークアーキテクチャ100は、中間デバイス115の1つを選択して、エンドポイントデバイス105の対応する1つのためのビーコンを通信および/または転送することができる。例えば、中継サーバ125の1つは、エンドポイントデバイス105の1つに応答メッセージを送信することを処理するために、中間デバイス115の1つを選択することができる。中継サーバ125は、中間デバイス115とターゲットエンドポイントデバイス105との間の接続強度、エンドポイントデバイス105から中間デバイス115への近接度、中間デバイス115とエンドポイントデバイス105とを接続する無線ネットワーク110のタイプ、中間デバイス115とエンドポイントデバイス105との間の接続のコスト、中間デバイスの現在のバッテリレベル、中間デバイスのタイプなど、応答メッセージを送信するためにどの中間デバイス115を使用するかを選択するために任意の選択基準を使用することができる。
状況によっては、中間デバイス115bの2つは、エンドポイントデバイス105の1つの範囲内にあってもよく、両方がエンドポイントデバイス105から同じビーコンを受信してもよい。また、中間デバイス115の両方が、エンドポイントデバイス105のビーコンを中継サーバ125の1つに転送してもよい。冗長性、ネットワークトラフィック、バッテリへの影響などを低減するために、中継サーバ125は、中間デバイス115および中間デバイス115の1つを選択して、エンドポイントデバイス105との通信を処理し、選択されていない中間デバイスに、エンドポイントデバイス105からのビーコンを無視するように、エンドポイントデバイス105からのビーコンを破棄するように、エンドポイントデバイス105からのビーコンの送信を停止するように、またはネットワーク輻輳の低減、データ記憶空間のフリーアップ、プロセッサ能力のフリーアップなどをし得る任意の他の動作を命令することができる。
より多くの中間デバイス115がデータ伝送に利用可能になるにつれて、特定の中間デバイス115のデータ伝送頻度が減少し得る。長期的には、強化された密度の中間デバイス115およびマシン学習ベースのプロトコルを用いて、本明細書に記載された技術は、中間デバイス115のバッテリ寿命を大幅に改善し、ネットワーク輻輳を低減し、グローバル接続性を改善するなどを行うことができる。中継サーバ125は、中間デバイス115とターゲットエンドポイントデバイス105との間の接続強度、中間デバイス115に対するエンドポイントデバイス105の近接度、中間デバイス115とエンドポイントデバイス105とを接続する無線ネットワーク110のタイプ、中間デバイス115とエンドポイントデバイス105との間の接続のコスト、中間デバイス115の現在のバッテリレベル、中間デバイス115のタイプなどの、エンドポイントデバイス105と通信するためにどの中間デバイス105を使用し、どの中間デバイス115がエンドポイントデバイス105に関する通信を停止するかを選択するための任意の選択基準を使用することができる。
本開示の範囲から逸脱することなく、ネットワークアーキテクチャ100に変更、追加、または省略を行うことができる。本開示は、より一般的には、1つまたは複数のエンドポイントデバイス105、1つまたは複数の無線ネットワーク、1つまたは複数の中間デバイス115、1つまたは複数の第2のネットワーク120、1つまたは複数の中継サーバ125、1つまたは複数の第3のネットワーク130、および1つまたは複数のエンドポイントマネージャサーバ135、またはそれらの任意の組合せを含むネットワークアーキテクチャ100に適用される。
さらに、本明細書に記載の実施形態における様々な構成要素の分離は、分離がすべての実施形態で起こることを示すことを意味するものではない。加えて、記載された構成要素は、単一の構成要素に一緒に統合されてもよく、または複数の構成要素に分離されてもよいことが、本開示の利点と共に理解され得る。
図2は、暗号学的に安全な方法でIoTデバイスのための証明書をプロビジョニングおよび認証するためのシステム200の一例の概略図である。いくつかの態様では、システム200は、ブロックチェーン公開鍵インフラストラクチャ(PKI)を含み得る。公開鍵インフラストラクチャ(PKI)は、デジタル証明書の作成、管理、配布、使用、格納および失効ならびに公開鍵暗号化の管理に必要な役割、ポリシー、ハードウェア、ソフトウェアおよび手順のセットを含み得る。システム200は、デジタル証明書の作成、管理、配布、使用、格納および失効ならびに公開鍵暗号化の管理に必要な役割、ポリシー、ハードウェア、ソフトウェアおよび手順のセットを含み得る。システム200は、図1のエンドポイントデバイス105などの任意の適切なデバイスの証明書をプロビジョニングおよび認証するために使用され得る。さらに、システム200は、中間デバイス115および/または中継サーバ125などの他のデバイスのための証明書をプロビジョニングおよび認証するために使用され得る。他の態様では、システム200は、ウェブサイトまたは任意の適切な認証方式のための証明書をプロビジョニングおよび認証するために使用され得る。
図示のように、システム200は、ホワイトリスト登録局202、PKIスマートコントラクト204、および1つまたは複数のデバイス206を含むことができる。システム208は、それらのデバイス206のアイデンティティを認証(例えば、証明)したい1つまたは複数の製造業者208によって使用され得る。特に、製造業者208は、製造業者が製造するデバイス206のアイデンティティを認証することができる。ユーザ210は、システム200を使用して、認証のためにデバイス206の証明書を検証することができる。状況によっては、ユーザ210および/または製造業者208は、システム200の一部であってもよい。本明細書で使用される場合、ユーザ210および/または製造業者208は、それぞれユーザ210および製造業者208に関連付けられたデバイスおよび/またはシステムを指すことができる。
いくつかの構成では、ホワイトリスト登録局202は、デバイス206などのIoTデバイスのネットワークオペレータであってもよい。そのような構成では、ホワイトリスト登録局202は、ホワイトリストに登録されるか、または識別および認証されることを許可される製造業者および/またはデバイスのリストを決定または設定することができる。他の構成では、ホワイトリスト登録局202は、ホワイトリストに登録されるか、または識別および認証されることを許可されるデバイスのリストを決定することを含む、ホワイトリストを決定するための非中央集権型の決定方式であってもよい。
デバイス206は、それらの製造業者208によって認証され得る暗号化アイデンティティを有し得る。一例では、暗号化アイデンティティはdevice.manufacturer.iotであってもよい。製造業者208は、製造業者アイデンティティを有し得る。製造アイデンティティは、この特定の製造業者によって製造されたすべてのデバイスの傘または特性評価であり得る。一例では、暗号化アイデンティティはmanufacturer.iotであってもよい。
ホワイトリスト登録局202は、例えば、望ましくない第三者が証明書を取得するのを防ぐために、製造業者208のアプリケーションを検証および/または認証することができる。いくつかの構成では、ホワイトリスト登録局202は、その顧客、この場合は製造業者208のアイデンティティを識別および検証するために、Know Your Customer(KYC)プロセスを実装することができる。KYCプロセスは、ホワイトリスト登録局202が製造業者208のアイデンティティを確立および/または検証するために行うステップを含むことができる。
発行された証明書は、製造業者208が、その範囲がその特定の製造業者に限定されているアイデンティティに署名することのみを可能にすることができる。例えば、製造業者208は、*.manufacturer.iotのアイデンティティに署名することのみを許可されてもよく、*は、製造業者によって製造されたデバイス(または特定の製造業者によって製造された任意のデバイス)のアイデンティティのプレースホルダである。したがって、発行された証明書は、製造者が製造者によって製造されたデバイスのアイデンティティに署名することのみを可能にすることができる。少なくとも1つの実施形態では、証明書は、ハードウェアセキュリティモジュール(HSM)に格納することができる。HSMは、デジタル鍵を保護および管理し、デジタル署名のための暗号化および復号化機能、強力な認証および他の暗号化機能を実行する物理コンピューティングデバイスを含むことができる。
PKIスマートコントラクト204は、ホワイトリスト登録局202によって決定されたホワイトリストを含むデータベースまたは記憶媒体であってもよい。いくつかの構成では、PKIスマートコントラクト204は、公開レジストリであってもよい。ホワイトリスト登録局202またはネットワークオペレータは、PKIスマートコントラクト204に製造業者を追加または禁止することができる。製造業者208は、PKIスマートコントラクト204の公開署名鍵を追加または失効させることができる。さらに、製造業者208は、例えば、デバイスがハッキングまたは危険にさらされた場合に、必要に応じて特定のデバイスに対するデバイスの鍵を失効させることができる。さらに、製造業者208は、有効期限をそれらの公開鍵に関連付けることができる場合がある。そのような状況では、公開鍵は有効期限後に自動的に失効され得る。
システム200を使用してデバイスを認証する方法は、ホワイトリストを生成するホワイトリスト登録局202を含むことができる。ホワイトリスト登録局202は、ホワイトリストに含まれる製造業者および/またはデバイスのリストを決定または設定することができる。ホワイトリストは、PKIスマートコントラクト204に追加されてもよい。いくつかの構成では、ホワイトリストは、互いに通信可能に結合され得る、ホワイトリスト登録局202によってPKIスマートコントラクト204に送信され得る。
本方法は、製造業者208が、PKIスマートコントラクト204に1つまたは複数の署名鍵を追加することを含むことができる。いくつかの構成では、署名鍵は、互いに通信可能に結合され得る、製造業者208によってPKIスマートコントラクト204に送信され得る。状況によっては、PKIスマートコントラクト204に1つまたは複数の署名鍵を追加することは、ホワイトリスト登録局202および/またはネットワークオペレータに料金を支払うことを含むことができる。
本方法は、製造業者208が鍵ペアおよび/または証明書をデバイス206にプロビジョニングすることを含むことができる。いくつかの構成では、鍵ペアおよび/または証明書は、互いに通信可能に結合され得る、製造業者208によってデバイス206に送信され得る。他の構成では、デバイス206が製造業者208によって製造されるとき、鍵ペアおよび/または証明書はデバイス206に含まれ得る。
本方法は、ユーザ210がデバイス206にチャレンジを送信することを含むことができる。いくつかの構成では、チャレンジは、互いに通信可能に結合され得る、ユーザ210によってデバイス206に送信され得る。チャレンジを受信すると、デバイス206はユーザ210に応答することができる。応答は、チャレンジ署名および/または証明書を含むことができる。いくつかの構成では、応答は、デバイス206によってユーザ210に送信され得る。本方法は、ユーザ210が証明書および失効ステータスをPKIスマートコントラクト204で検証することを含むことができる。いくつかの構成では、証明書検証および失効ステータスは、互いに通信可能に結合され得る、ユーザ210とPKIスマートコントラクト204との間で送信され得る。
例えば、システム200を使用して、デバイスを認証する方法は、以下でさらに詳細に説明される。
図3~図5および図6A~図6Bは、ネットワークデバイスを安全かつプライベートに識別および認証するための例示的な方法の流れ図である。記載された方法は、暗号的に安全な方法でネットワーク化されたIoTデバイスのための証明書をプロビジョニングおよび認証するために使用され得る。
本方法は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピュータシステムもしくは専用マシン上で実行されるものなど)、または両方の組合せを含むことができる処理ロジックによって実行することができ、この処理ロジックは、図1のエンドポイントデバイス105、中間デバイス115、中継サーバ125、および/もしくはエンドポイントマネージャサーバ135、または別のコンピュータシステムもしくはデバイスに含めることができる。しかしながら、別のシステム、またはシステムの組合せを使用して方法を実行してもよい。
説明を簡単にするために、本明細書に記載の方法は、一連の動作として図示および説明されている。しかしながら、本開示による動作は、様々な順序で、および/または同時に、ならびに本明細書に提示および記載されていない他の動作と共に行われてもよい。さらに、開示された主題により方法を実施するために、図示されたすべての動作が使用されるわけではない。加えて、当業者は、方法が代替的に1つの状態図または複数の状況を介して一連の相互に関連する状態として表されてもよいことを理解および認識するであろう。加えて、本明細書に開示された方法は、非一時的コンピュータ可読媒体などの製造品に格納されて、そのような方法をコンピューティングデバイスに伝送および転送することを容易にすることができる。本明細書で使用される製品という用語は、任意のコンピュータ可読デバイスまたは記憶媒体からアクセス可能なコンピュータプログラムを包含することを意図している。個別のブロックとして示されているが、様々なブロックは、所望の実装形態に応じて、追加のブロックに分割されてもよく、より少ないブロックに組み合わされてもよく、または削除されてもよい。
図3は、署名鍵を取得するための一例示的な方法300の流れ図である。例えば、方法300は、署名鍵を取得するために、図2の製造業者208および/またはホワイトリスト登録局202によって実行されてもよい。方法300は、システム200および/またはネットワークアーキテクチャ100のデバイスの署名鍵を取得するために実行することができる。
方法300はブロック302で開始することができ、製造業者はホワイトリストに登録することができる。いくつかの構成では、製造業者は、図2のホワイトリスト登録局202などのホワイトリスト登録局またはネットワークオペレータによってホワイトリストに登録されてもよい。製造者は、ホワイトリストに登録される製造者による要求に応答してホワイトリストに登録されてもよい。製造業者は、望ましくない第三者がホワイトリストに登録されるのを防ぐために、検証後にホワイトリストに登録されてもよい。いくつかの構成では、KYCプロセスを実装して、製造業者がホワイトリストに登録される前に製造業者のアイデンティティを識別および検証することができる。KYCプロセスは、ホワイトリスト登録局が製造業者のアイデンティティを確立および/または検証するために行うステップを含むことができる。さらなる構成では、製造業者は、ホワイトリスト登録局またはネットワークオペレータとの契約の実行に応答してホワイトリストに登録されてもよい。製造業者は、ホワイトリスト登録局によって決定された製造業者のリストに含まれてもよい。ホワイトリストに登録された製造業者のアイデンティティは、図2のPKIスマートコントラクト204などのPKIスマートコントラクトに送信することができる。
ブロック304において、製造業者のデバイスに対して1つまたは複数の署名鍵を追加することができる。いくつかの構成では、署名鍵は製造業者によって追加されてもよい。署名鍵の各々は、製造業者によって製造されたデバイスに対応することができる。いくつかの状況では、例えば、製造業者からホワイトリスト登録局またはネットワークオペレータへの鍵の各々に対して支払いが行われてもよい。支払額は、有効性に依存し得る。いくつかの構成では、鍵は特定の時間長にわたって有効であってもよく、これは合意によって予め決定されてもよく、および/またはより長い時間にわたって有効であると見なされるために更新されてもよい。いくつかの構成では、署名鍵は、製造業者によってPKIスマートコントラクト204などのPKIスマートコントラクトに送信されてもよい。
図4は、新しいデバイスを認証するための一例示的な方法400の流れ図である。例えば、方法400は、図2のデバイス206を認証するために製造業者208によって実行されてもよい。方法400は、システム200および/またはネットワークアーキテクチャ100において製造業者によって製造された新しいデバイスに対して実行することができる。
方法400はブロック402で開始することができ、公開/秘密鍵ペアを生成することができる。公開/秘密鍵ペアは、製造業者によって生成され得る。製造業者は、新しく製造されたデバイスに公開/秘密鍵ペアを提供することができる。したがって、公開/秘密鍵ペアは、製造業者によって製造された新しいデバイスに対して生成され得る。
ブロック404において、公開/秘密鍵ペアをデバイスに保存することができる。例えば、公開/秘密鍵ペアは、ハードウェアで融合されてもよく、またはデバイスのメモリに保存されてもよい。したがって、公開/秘密鍵ペアは、デバイスが製造業者によって製造されるときにデバイスに含まれ得る。別の例では、公開/秘密鍵ペアは、互いに通信可能に結合され得る、製造業者によってデバイスに送信され得る。デバイスの公開鍵の署名は、製造業者の登録された鍵の1つ、例えば、方法300により取得された署名鍵と共に保存することができる。したがって、公開/秘密鍵ペアを保存することは、公開/秘密鍵ペアと共に製造業者の署名鍵を保存することを含むことができる。
新しいデバイスが認証され、公開/秘密鍵ペアがデバイスと共に保存された後、デバイスは、例えば、配信ネットワークを介して顧客に出荷されてもよい。
図5は、デバイスの証明書を検証するための一例示的な方法500の流れ図である。例えば、方法500は、図2のデバイス206の証明書を検証するために実行され得る。方法500は、システム200および/またはネットワークアーキテクチャ100で使用されるデバイスに対して実行することができる。
方法500は、製造業者(図2の製造業者208など)、IoTデバイス(図2のデバイス206など)、およびユーザ(図2のユーザ210など)を含むことができる。この説明の目的のために、Ivanは製造業者を示し、AliceはIoTデバイスを示し、Bobはユーザを示す。
デバイス(Alice)は、それが製造業者(Ivan)と関連付けられていると主張することができ、ユーザ(Bob)は、デバイスがそれ自体を適切に識別しており、実際に製造業者と関連付けられていることを検証したい場合がある。デバイス(Alice)は、アイデンティティ、秘密鍵、および関連する公開鍵を有し得る。アイデンティティはAid(alice.ivan.iot)であってもよく、秘密鍵はAprivであってもよく、公開鍵はApubであってもよい。
製造業者(Ivan)は、ID、鍵ペアを有することができ、デバイス(Alice)の証明書を生成することができる。アイデンティティはivan.iotであり得、鍵ペアはIpriv,Ipubであり得、生成された証明書は、Cert=Apub,Aid,Ipriv(Hash(Apub+Aid))であり得る。
製造業者(Ivan)は、デバイス(Alice)を製造していてもよく、製造時または製造後にデバイスアイデンティティ、秘密鍵、公開鍵および/または証明書を組み込んでいてもよいし、含んでいてもよい。したがって、製造業者(Ivan)は、製造時に以下をデバイス(Alice)に組み込んでいてもよい、すなわち、Aid,Apub,Apriv,Cert。
方法500は、ブロック502において開始することができ、ここでは、ランダムチャレンジが生成され得る。チャレンジは、デバイスを識別または認証するために、すなわち、デバイス(Alice)がそれ自体を適切に識別しており、正しい製造業者(Ivan)に実際に関連付けられているかどうかを決定するために、ユーザ(Bob)によって生成され得る。チャレンジは、$$c$$で表すことができる。いくつかの構成では、チャレンジは、任意のサイズのランダムに選択された一連のバイトであってもよい。
ブロック504では、チャレンジが送信され得る。例えば、チャレンジは、ユーザ(Bob)からデバイス(Alice)へ送信され得、デバイス(Alice)は、互いに通信可能に結合され得る。したがって、チャレンジcは、ユーザ(Bob)からデバイス(Alice)に送信され得る。
チャレンジを受信したことに応答して、デバイス(Alice)は、チャレンジに署名し、チャレンジに応答することができる。応答は、デバイス(Alice)からユーザ(Bob)に送信されてもよい。チャレンジのデバイス(Alice)署名は、Asig=Apriv(Hash(c))によって表されてもよく、応答は、(Asig,Cert)によって表されてもよい。
ブロック506では、チャレンジに対する応答を受信することができる。特に、ユーザ(Bob)は、デバイス(Alice)からチャレンジに対する応答を受信することができる。したがって、ユーザ(Bob)はデバイス(Alice)から(Asig,Cert)を受信することができる。
ブロック506では、署名を検証することができる。特に、ユーザ(Bob)は、デバイス(Alice)からのチャレンジに対する応答と共に受信した署名を検証することができる。ユーザ(Bob)は、公開鍵がチャレンジと一致することを確認することによって署名を検証することができる。ユーザ(Bob)は、Apub(Hash(c))がcおよびAsigと一致することをチェックすることによって署名Asigを検証することができる。
ブロック508では、証明書の有効性を検証することができる。特に、ユーザ(Bob)は、デバイス(Alice)からチャレンジに対する返信と共に受信した証明書の有効性を検証することができる。証明書が有効であることを検証することは、証明書が製造業者(Ivan)の失効していない鍵の1つによって署名されたことを検証することを含むことができる。証明書が有効であることを検証することは、公開鍵が製造者(Ivan)によってブラックリストに登録されていないことを検証することを含むことができる。証明書が有効であることを検証することは、製造業者(Ivan)のサブスクリプションが現在有効であるか、または有効なままであることを検証することを含むことができる。証明書が有効であることを検証することは、デバイス(Alice)の識別が製造業者(Ivan)の名前空間によってカバーされていることを検証することを含むことができる。
したがって、ユーザ(Bob)は、証明書が有効であり、証明書Certに応答して検証されたと決定することができる、すなわち、製造業者(Ivan)の失効していない鍵の1つによって署名されている、Apubは製造業者(Ivan)によってブラックリストに登録されていない、製造業者(Ivan)のサブスクリプションが現在有効である、および/またはAidは製造者(Ivan)の名前空間によってカバーされている。
証明書が有効である場合、デバイス(Alice)は、証明および/または認証され得る。認証後、デバイス(Alice)は、ネットワークまたはエコシステム内で動作してもよく、および/または、ネットワークまたはエコシステムの一部であるデバイスと通信してもよい。
証明書を失効させることが望まれる場合、ネットワークオペレータまたはホワイトリスト登録局は証明書を失効させることができ、失効はブロックチェーンにプッシュされ得る。証明書、製造業者の鍵、およびデバイス鍵の失効については、以下でさらに詳細に説明する。
図6Aは、製造業者の鍵を失効させるための一例示的な方法600の流れ図であり、図6Bは、デバイスの鍵を失効させるための一例示的な方法650の流れ図である。例えば、方法600は、製造業者の鍵を失効させるために、図2のホワイトリスト登録局202によって実行され得る。方法600は、システム200および/またはネットワークアーキテクチャ100のデバイスの製造業者のための証明書を失効させるために実行することができる。方法600は、デバイスの鍵を失効させるために図2の製造業者208によって実行され得る。方法650は、システム200および/またはネットワークアーキテクチャ100のデバイスの証明書を失効させるために実行され得る。
方法600は、製造業者の公開鍵を失効させるために実施され得る。例えば、製造業者はMによって表されてもよく、製造業者の公開鍵はMpubによって表されてもよい。
方法600は、ブロック602で開始することができ、ここで、失効が製造業者のために生成され得る。失効は、ホワイトリスト登録局(例えば、ホワイトリスト登録局202)またはネットワークオペレータによって生成されてもよい。失効は、製造業者の公開鍵を含むことができる。したがって、失効は、Mの公開鍵RM=(Mpub)を含むことができる。
ブロック604では、失効に署名することができる。いくつかの構成では、失効は、ホワイトリスト登録局(例えば、ホワイトリスト登録局202)またはネットワークオペレータによって署名されてもよい。ホワイトリスト登録局またはネットワークオペレータは、失効に署名し、MCR=(RM,Npriv(Hash(RM))によって表され得る、製造業者の証明書失効を生成することができる。
ブロック606では、失効は公開台帳に送信され得る。いくつかの構成では、失効は、互いに通信可能に結合され得る、ホワイトリスト登録局またはネットワークオペレータによって公開台帳に送信され得る。いくつかの構成では、公開台帳は図2のPKIスマートコントラクト204であってもよいが、他の構成が実装されてもよい。公開台帳は、専用ブロックチェーンネットワークとして実装されてもよいし、スマートコントラクトの形態をとってもよい。
方法650は、デバイスの公開鍵を失効させるために実施され得る。例えば、デバイスは$$D$$で表され、デバイスの公開鍵はDpubで表され得る。
方法650は、ブロック652で開始することができ、ここでは、デバイスのために失効が生成され得る。失効は、製造業者(例えば、製造業者208)によって生成され得る。失効は、デバイスの公開鍵を含み得る。したがって、失効は、Dの公開鍵RD=(Dpub)を含むことができる。
ブロック654では、失効に署名することができる。いくつかの構成では、失効は製造業者によって署名されてもよい(例えば、製造業者208)。製造業者は、失効に署名し、DCR=(RD,Mpriv(Hash(RD)))によって表され得る、デバイスの証明書失効を生成することができる。
ブロック656では、失効は公開台帳に送信され得る。いくつかの構成では、失効は、互いに通信可能に結合され得る、製造業者によって公開台帳に送信され得る。いくつかの構成では、公開台帳は図2のPKIスマートコントラクト204であってもよいが、他の構成が実装されてもよい。
いくつかの構成では、方法600および650の失効は、ホワイトリスト登録局またはネットワークオペレータによって無料で実施されてもよい。そのような構成は、鍵が危険にさらされたときに迅速な反応を妨げることを回避することができる。
図7は、本明細書で説明する方法の任意の1つまたは複数をマシンに実行させるための、命令のセットが実行され得る、コンピューティングデバイス700の例示的な形態のマシンの概略図である。コンピューティングデバイス700は、携帯電話、スマートフォン、ネットブックコンピュータ、ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなどを含むことができ、その中で、本明細書で説明される方法の任意の1つまたは複数をマシンに実行させるための命令セットを実行することができる。代替の実施形態では、マシンは、LAN、イントラネット、エクストラネット、またはインターネットの他のマシンに接続されてもよい(例えば、ネットワーク接続されている)。マシンは、クライアント-サーバネットワーク環境におけるサーバマシンの能力で動作することができる。マシンは、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって行われるべき動作を指定する命令のセット(シーケンシャルまたはその他)を実行することができる任意のマシンを含むことができる。さらに、単一のマシンのみが示されているが、「マシン」という用語はまた、本明細書で説明される方法の任意の1つまたは複数を実行するために命令のセット(または複数のセット)を個別にまたは一緒に実行するマシンの任意の集合を含むことができる。
例示的なコンピューティングデバイス700は、処理デバイス(例えば、プロセッサ)702、メインメモリ704(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)などのダイナミックランダムアクセスメモリ(DRAM))、スタティックメモリ706(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM))、およびデータストレージデバイス716を含み、これらはバス708を介して互いに通信する。
処理デバイス702は、マイクロプロセッサ、中央処理装置などの1つまたは複数の汎用処理デバイスを表す。より具体的には、処理デバイス702は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実施するプロセッサもしくは命令セットの組合せを実施するプロセッサを含んでもよい。処理デバイス702はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどのような1つまたは複数の専用処理デバイスを含むことができる。処理デバイス702は、本明細書で説明した動作およびステップを実行するための命令726を実行するように構成される。
コンピューティングデバイス700は、ネットワーク718と通信することができるネットワークインターフェースデバイス722をさらに含むことができる。コンピューティングデバイス700はまた、表示デバイス710(例えば、液晶ディスプレイ(LCD)または陰極線管(CRT))、英数字入力デバイス712(例えば、キーボード)、カーソル制御デバイス714(例えば、マウス)、および信号生成デバイス720(例えば、スピーカ)を含むことができる。少なくとも1つの実施形態では、表示デバイス710、英数字入力デバイス712、およびカーソル制御デバイス714は、単一の構成要素またはデバイス(例えば、LCDタッチスクリーン)に組み合わせることができる。
データストレージデバイス716は、コンピュータ可読記憶媒体724を含むことができ、コンピュータ可読記憶媒体には、本明細書に記載の方法または機能のいずれか1つまたは複数を具現化する命令726の1つまたは複数のセットが格納される。命令726はまた、コンピューティングデバイス700による実行中に、メインメモリ704内および/または処理デバイス702内に完全にまたは少なくとも部分的に存在してもよく、メインメモリ704および処理デバイス702はまた、コンピュータ可読媒体を構成する。命令はさらに、ネットワークインターフェースデバイス722を介してネットワーク718によって送信または受信することができる。
コンピュータ可読記憶媒体726は、一例示的な実施形態では単一の媒体であるように示されているが、「コンピュータ可読記憶媒体」という用語は、1つまたは複数の命令セットを格納する単一の媒体または複数の媒体(例えば、集中または分散データベースおよび/または関連するキャッシュおよびサーバ)を含むことができる。「コンピュータ可読記憶媒体」という用語はまた、マシンによる実行のための命令のセットを格納、符号化、または搬送することができ、マシンに本開示の方法のいずれか1つまたは複数を実行させる任意の媒体を含むことができる。したがって、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体、および磁気媒体を含むが、これらに限定されないと解釈され得る。
一例示的な方法は、ホワイトリストに登録される製造業者による要求に応答して、ホワイトリスト登録局によって製造業者をホワイトリストに登録することと、製造業者のデバイスの1つまたは複数の署名鍵を追加することとを含み得、署名鍵の各々は製造業者によって製造されたデバイスに対応する。例示的な方法は、製造業者をホワイトリストに登録する前に製造業者のアイデンティティを検証することをさらに含むことができる。例示的な方法は、ホワイトリスト登録局によって決定された製造業者のリストに製造業者を含めることをさらに含むことができる。例示的な方法は、ホワイトリストに登録された製造業者をPKIスマートコントラクトに送信することをさらに含むことができる。署名鍵が特定の時間長にわたって有効である、例示的な方法。署名鍵が、より長い時間にわたって有効であると見なされるために更新されるように構成される、例示的な方法。例示的な方法は、署名鍵をPKIスマートコントラクトに送信することをさらに含むことができる。
一例示的な方法は、製造業者によって製造された新しいデバイスの公開/秘密鍵ペアを生成することと、製造業者によって製造された新しいデバイスの公開/秘密鍵ペアを保存することとを含むことができる。公開/秘密鍵ペアが製造業者によって生成される、例示的な方法。方法が製造業者によって製造された新しい装置を認証するために製造業者によって実行される、例示的な方法。公開/秘密鍵ペアがハードウェアで融合されるか、またはデバイスのメモリに保存される、例示的な方法。公開/秘密鍵ペアが製造業者の登録鍵の1つと共に保存される、例示的な方法。
一例示的な方法は、ランダムチャレンジを生成することであって、チャレンジがユーザによって生成されることと、ユーザからデバイスにチャレンジを送信することと、デバイスからユーザにおけるチャレンジに対する応答を受信することと、デバイスから受信した応答の署名を検証することと、デバイスから受信した応答の証明書を検証することとを含むことができる。方法がデバイスの証明書を検証するために実行される、例示的な方法。チャレンジが、デバイスがそれ自体を適切に識別しており、正しい製造業者に関連付けられているかどうかを決定するためにユーザによって生成され得る、例示的な方法。チャレンジが、ランダムに選択された一連のバイトである、例示的な方法。例示的な方法は、デバイスにおいてチャレンジを受信することと、デバイスにおいて応答を生成することと、デバイスからユーザに応答を送信することとをさらに含むことができる。例示的な方法は、応答を送信する前にチャレンジに署名することをさらに含んでもよい。署名を検証することが、応答の公開鍵がチャレンジと一致することをチェックすることを含む、例示的な方法。証明書を検証することが、証明書が製造業者の失効していない鍵によって署名されたことを検証することを含む、例示的な方法。証明書を検証することが、公開鍵が製造業者によってブラックリストに登録されていないことを検証することを含む、例示的な方法。証明書を検証することが、製造業者のサブスクリプションが有効であることを検証することを含む、例示的な方法。証明書を検証することが、デバイスのアイデンティティが製造業者の名前空間によってカバーされていることを検証することを含む、例示的な方法。例示的な方法は、証明書が有効であり検証されたと決定することをさらに含むことができる。
一例示的な方法は、ホワイトリスト登録局において製造業者の失効を生成することと、ホワイトリスト登録局によって失効に署名することと、当該失効を公開台帳に送信することを含み得る。失効が製造業者の公開鍵を含む、例示的な方法。例示的な方法は、製造業者の証明書失効を生成することをさらに含み得る。公開台帳がPKIスマートコントラクトである、例示的な方法。
一例示的な方法は、製造業者におけるデバイスの失効を生成することと、製造業者によって失効に署名することと、失効を公開台帳に送信することとを含むことができる。失効がデバイスの公開鍵を含む、例示的な方法。例示的な方法は、デバイスの証明書失効を生成することをさらに含み得る。公開台帳がPKIスマートコントラクトである、例示的な方法。
一例示的な方法は、ホワイトリスト登録局でホワイトリストを生成することと、ホワイトリストをPKIスマートコントラクトに追加することと、1つまたは複数の署名鍵をPKIスマートコントラクトに追加することと、製造業者によってデバイスに鍵ペアをプロビジョニングすることと、ユーザからデバイスにチャレンジを送信することと、ユーザのデバイスから応答を受信することであって、応答がチャレンジ署名を含むことと、ユーザによってデバイスの証明書および失効ステータスを検証することであって、証明書および失効ステータスがPKIスマートコントラクトを使用してユーザによって検証されることとを含むことができる。例示的な方法は、ホワイトリストに含まれる製造業者および/またはデバイスのリストを決定することをさらに含むことができる。例示的な方法は、ホワイトリスト登録局からPKIスマートコントラクトにホワイトリストを送信することをさらに含むことができる。ユーザが、ユーザに関連付けられたデバイスを含む、例示的な方法。製造業者が、製造業者に関連付けられたデバイスを含む、例示的な方法。
本明細書および特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本体)で使用される用語は、一般に、「オープン」用語として意図されている(例えば、用語「含んでいる」は、「限定されないが、含んでいる」として解釈されてもよく、用語「有している」は、「少なくとも有している」として解釈されてもよく、用語「含む」は、「限定されないが、含む」として解釈されてもよいなどである)。
加えて、導入された請求項列挙の特定の数が意図されている場合、そのような意図は請求項に明示的に列挙され、そのような列挙がない場合、そのような意図は存在しない。例えば、理解を助けるために、以下の添付の特許請求の範囲は、特許請求の範囲の記載を導入するための導入句「少なくとも1つ」および「1つまたは複数」の使用を含むことができる。しかしながら、そのような語句の使用は、不定冠詞「a」または「an」による請求項列挙の導入が、そのような導入された請求項列挙を含む任意の特定の請求項を、同じ請求項が導入句「1つまたは複数」または「少なくとも1つ」および「a」または「an」などの不定冠詞(例えば、「1つの(a)」および/または「1つの(an)」は、「少なくとも1つの(at least one)」または「1つまたは複数の(one or more)を意味すると解釈されてもよい)を含むときであっても、1つのそのような列挙のみを含む実施形態に限定することを意味すると解釈されてはならず、請求項列挙を導入するために使用される定冠詞の使用についても同じことが当てはまる。
加えて、導入された請求項列挙の特定の数が明示的に列挙されている場合でも、当業者は、そのような列挙が少なくとも列挙された数を意味すると解釈され得ることを認識するであろう(例えば、他の修飾語を含まない「2つの列挙」のありのままの列挙は、少なくとも2つの列挙、または2つ以上の列挙を意味する)。さらに、「A、B、およびCなどの少なくとも1つ」または「A、B、およびCなどの1つまたは複数」に類似した慣例が使用される場合、一般に、そのような構造は、Aのみ、Bのみ、Cのみ、AとBとを一緒に、AとCとを一緒に、BとCとを一緒に、またはA、B、およびCとを一緒に含むことを意図している。例えば、「および/または」という用語の使用は、このように解釈されることを意図している。
さらに、2つ以上の代替的な用語を提示する任意の選言的な単語または句は、説明、特許請求の範囲、または図面のいずれかにかかわらず、用語の1つ、用語のいずれか、または両方の用語を含む可能性を意図すると理解され得る。例えば、「AまたはB」という句は、「A」または「B」または「AおよびB」の可能性を含むと理解され得る。
本明細書に記載の実施形態は、コンピュータ実行可能命令またはそれに格納されたデータ構造を搬送または保持するためのコンピュータ可読媒体を使用して実施することができる。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であってもよい。限定ではなく例として、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)もしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、またはコンピュータ実行可能命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは格納するために使用することができ、汎用もしくは専用コンピュータによってアクセスすることができる任意の他の記憶媒体を含む、非一時的なコンピュータ可読記憶媒体を含むことができる。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれ得る。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイス(例えば、1つまたは複数のプロセッサ)に特定の機能または機能のグループを実行させる命令およびデータを含むことができる。主題は、構造的特徴および/または方法論的動作に特有の言語で説明されているが、添付の特許請求の範囲に定義される主題は、必ずしも上記の特定の特徴または動作に限定されないことを理解されたい。むしろ、上記の特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示されている。
本明細書で使用される場合、「モジュール」または「構成要素」という用語は、モジュールまたは構成要素の動作を実行するように構成された特定のハードウェア実装、および/またはコンピューティングシステムの汎用ハードウェア(例えば、コンピュータ可読媒体、処理デバイスなど)に格納され、および/またはそれによって実行され得るソフトウェアオブジェクトまたはソフトウェアルーチンを指すことができる。いくつかの実施形態では、本明細書に記載の異なる構成要素、モジュール、エンジン、およびサービスは、コンピューティングシステム上で(例えば、別個のスレッドとして)実行されるオブジェクトまたはプロセスとして実装されてもよい。本明細書に記載のシステムおよび方法のいくつかは、一般に、(汎用ハードウェアに格納され、および/または汎用ハードウェアによって実行される)ソフトウェアに実装されるものとして説明されているが、特定のハードウェア実装またはソフトウェアと特定のハードウェア実装との組合せも可能であり意図される。この説明では、「コンピューティングエンティティ」は、本明細書で以前に定義されたような任意のコンピューティングシステム、またはコンピューティングシステム上で実行される任意のモジュールまたはモジュールの組合せであってもよい。
開示されたプロセスおよび/または方法について、プロセスおよび方法において実行される機能は、文脈によって示され得るように異なる順序で実装され得る。さらに、概説されたステップおよび動作は、例としてのみ提供されており、ステップおよび動作のいくつかは、オプションであってもよく、より少ないステップおよび動作に組み合わされてもよく、または追加のステップおよび動作に拡張されてもよい。
本開示は、異なる他の構成要素内に含まれるか、または異なる他の構成要素と接続された異なる構成要素を示すことがある。そのような図示されたアーキテクチャは単なる例示であり、同じまたは同様の機能を達成する多くの他のアーキテクチャを実装することができる。
本開示の態様は、その趣旨または本質的な特徴から逸脱することなく、他の形態で具現化されてもよい。記載された態様は、すべての点で例示的であり、限定的ではないと考えられるべきである。特許請求される主題は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の均等物の意味および範囲内にあるすべての変更は、それらの範囲内に包含されるべきである。