これより、添付の図面に例が示された本発明の様々な実装を参照する。都合がよければ、図面の全体を通じて同じ部分や同様の部分は同じ参照番号を用いて指示される。
現場で安全かつ適正な動作を徹底するには、組込み型装置を、例えば車両に使われる電子制御装置(ECU)を、製造中にセキュリティアセットなどのデジタルアセットをプロビジョニングすることによって適切に初期化する必要がある。デジタルアセットは、様々な暗号鍵、一意な識別子、デジタル証明書、及びソフトウェアを含み得る。ほとんどの場合、これらのデジタルアセットの出所と製造工場は、セキュアではないインターネット通信で相互接続された別々の地理的場所にある。したがって、これらのデジタルアセットの出所から装置にかけてエンドツーエンドのセキュアな経路を作ることにより、悪意のある当事者によって、又は事故により、デジタルアセットがアクセスされたり改変されたりするのを防ぐことが望ましい。
TLS/SSLなどのエンドツーエンド保護のための従来のネットワークセキュリティプロトコルには、両通信当事者に事前共有鍵かある種のシークレットセキュリティマテリアルをあらかじめ必要とするという欠点がある。これは、デジタルアセットをプロビジョニングするには、何らかの最初のシークレットマテリアルがあらかじめ存在しなければならないという循環的な技術的問題を引き起こす。この問題は、最初のシークレットマテリアルをどのように保護すればいいかということを含む。ロジスティックスを簡素化するために、通常は製造中に単一バージョンの最初のソフトウェアがコンピュータ化装置に搭載されるので、この問題はコンピュータ化装置の場合に特に深刻となる。この最初のソフトウェアが最初のセキュリティマテリアルを包含しなければならない場合は、広域的な秘密が存在することになる。結果的に、最初のセキュリティマテリアルがセキュリティ侵害されると、同じ広域的な秘密を共有する全ての装置にプロビジョニングされた全てのデジタルアセットのセキュリティ侵害につながる。本開示と一致するシステム、方法、及び装置は、これらの問題や従来のプロビジョニングシステムの他の問題に対処する。
プロビジョニングは、適切なデータやソフトウェアでコンピュータ化装置を準備するために行われる一連の作業を通常指す。これは、装置をその運用環境内に適切に設置して運用可能な状態にするために行われる一連の作業も含み得る。作業は、装置のデジタルストレージ(例えば、メモリ)に適切なデジタルアセット(例えば、オペレーティングシステム、デバイスドライバ、ミドルウェア、アプリケーション、デジタル証明書など)を読み込ませることを含み、さらに(必要に応じ)装置で特定のデジタルアセットを適切にカスタマイズし構成することを含み、これらのデジタルアセットは個々の装置に固有である場合がある。作業は、コンピュータ化装置が模造品や偽造装置ではなく、正規の装置製造業者によって製作された正規の装置であることを確認することも含み得る。
作業は、装置をその運用環境に正しく設置し、これを試験してこれが正常に作動することを確認することも含み得る。装置がある1つの製造業者によって製造され、後ほど別の製造業者によってより大規模なシステムや装置に設置されることがあるため、例えば、部品製造業者によって製造された車載装置(OBU)が自動車製造業者によって製造された自動車に設置されることがあるため、良好であることが判明している装置だけをセキュアにプロビジョニングするのは複雑である。不適切に設置された装置は不適切に機能するおそれがある。
本発明と一致する様々な実装は、IoT装置を含むコンピュータ化装置のセキュアなプロビジョニングを提供する。かかる実装は、コンピュータ化装置によって使用されるデジタルアセットの悪意のある、不注意な、又は間違った、改ざん、変更、更新、又はリリースを予防又は阻止し、コンピュータ化装置とそのソフトウェアの不適切な設置/インストールを予防又は阻止する働きをする。
本発明と一致する様々な実装は、セキュアなプロビジョニング過程の監査ログ、記録、報告書などをも作成でき、これらは、後ほど見つかった問題の分析や解決に役立てることができる。
本発明と一致する様々な実装は、セキュアなプロビジョニング及び管理プラットフォームも提供でき、これはサービスの形で装置製造業者やシステム製造業者に提供できる。
図1は、本発明の実装と一致する、コンピュータ化装置のセキュアなプロビジョニングのためのシステム100の一例を示すブロック図である。図1の例に示されているように、システム100はプロビジョニングコントローラ120を含む。プロビジョニングコントローラ120は、組込み型ハードウェア・セキュリティ・モジュール(HSM)を備えたサーバコンピュータ(例えば、少なくとも1つのプロセッサと関連メモリとを有する)として実装されてよく、このHSMはデジタルセキュリティアセットをセキュアに生成して保存し、様々な暗号計算や機密計算をセキュアに遂行する。HSMは、暗号鍵などのデジタルセキュリティアセットと他の機密データを攻撃者によるアクセスから守る。様々な実装において、プロビジョニングコントローラ120は、システム100のユーザを認証し、かつこれとセキュアに通信し、1つ以上のディストリビュータ装置108、131とセキュアに通信し、かつこれを管理し、デジタルアセット管理システム(DAMS)110とセキュアに通信し、かつこれの動作を指図し、プロビジョニング記録を作成及び保存し、プロビジョニング記録を作成、保存、及び配信し、監査ログを作成、保存、及び配信し、DAMS110とディストリビュータ装置108、131の各部を暗号的に結合するために証明書を作成及び配信し、ユーザや管理対象装置が信頼できなくなった場合にこれらを必要に応じて取り消し、業務継続や災害復旧のための遠隔保存のために重要な鍵やデータのセキュアで暗号化されたバックアップを作成及び配信する働きをする。
図1の例に示されているように、プロビジョニングコントローラ120はデータベース125へ通信可能なように接続されており、データベース125は、装置106a、106b(106と総称される場合がある)をセキュアにプロビジョニングすることに関係するデータ、情報、及びデジタルアセットを保存できる。
プロビジョニングコントローラ120は製造業者のユーザポータル115にも通信可能なように接続されており、製造業者のユーザポータル115は、例えばサーバとして、又はプロビジョニングコントローラ120に対するインターフェイスとして、実装されてよい。様々な実装において、装置製造業者105のスタッフ109は製造業者のユーザポータル115を使用することでプロビジョニングコントローラ120と(延いてはDAMS110と)インターフェイスをとり、自身の装置プロビジョニング作業を管理することができる。様々な実装において、製造業者のユーザポータル115は、ユーザ名、パスワード、2要素識別データ、顔認識画像、指紋、などをはじめとする識別情報をスタッフユーザ109から収集し、その識別情報をプロビジョニングコントローラ120に提供することできる。プロビジョニングコントローラ120は、スタッフ109がセキュアなプロビジョニングシステム100にアクセスすることを許可する前に、スタッフ109を認証できる。例えば、プロビジョニングコントローラ120は、あらかじめ検証されデータベース125に保存されているスタッフユーザ109に関連する識別情報を調べ、保存されている識別情報を製造業者のユーザポータル115によって収集された識別情報に比較することができる。代わりに、プロビジョニングコントローラ120又はDAMSユーザポータル115は、ユーザの会社の識別認証システムと一体化されてもよく、これがスタッフ109にシステム100の使用が許可されているかどうかを判断する。様々な実装において、プロビジョニングコントローラ120又はDAMSユーザポータル115は、正常に認証されたスタッフ109に役割を与えることで、システム100の中でのスタッフの活動を制限することができる。いくつかの例において、プロビジョニングコントローラ120は、2つのセットの識別情報が一致する場合に限りアクセスを許可できる。
同様に、プロビジョニングコントローラ120は設置業者ユーザポータル116にも通信可能なように接続されており、設置業者ユーザポータル116は、例えばサーバとして、又はプロビジョニングコントローラ120に対するインターフェイスとして、実装されてよい。様々な実装において、装置設置業者のスタッフ132は設置業者ユーザポータル116を使用することでプロビジョニングコントローラ120と(延いてはDAMS110と)インターフェイスをとり、自身の装置設置作業とプロビジョニング作業を管理することができる。プロビジョニングコントローラ120は、スタッフ132を許可する前にスタッフ132を認証でき、スタッフ132がセキュアなプロビジョニングシステム100にアクセスしてシステムに対して認可された機能を遂行することを許可する前に、スタッフ132に役割を割り当てることができる。
同様に、プロビジョニングコントローラ120は調整業者ポータル117にも通信可能なように接続されており、調整業者ポータル117は、例えばサーバとして、又はプロビジョニングコントローラ120に対するインターフェイスとして、実装されてよい。様々な実装において、かつてプロビジョニングコントローラ120によって認証された調整業者140は、調整業者ポータル117を使用することでプロビジョニングコントローラ120とインターフェイスをとり、製造業者104、設置業者130、装置106、及び/又は装置106にインストールされたソフトウェア/デジタルアセットの審査と承認を管理することができる。プロビジョニングコントローラ120は、調整業者140がセキュアなプロビジョニングシステム100にアクセスすることを許可する前に、調整業者140を認証できる。システム100の一部の実装において、調整業者140と調整業者ポータル117は任意選択的である。
プロビジョニングコントローラ120はさらに、DAMS110へ通信可能なように接続されている。様々な実装において、DAMS110は、サーバ、装置、又はセキュアな装置及び/又はサーバから成るシステムとして実装されてよい。DAMS110は、プロビジョニングされるエンドエンティティ装置から、ディストリビュータ装置108、131を通じて、又は他のセキュアで認証された接続を通じて、公開鍵をセキュアに検索し、装置106にインストールされているデジタル証明書と関連データをセキュアに供給する。加えて、DAMS110は、製造業者105と設置業者130からディストリビュータ装置108、131を通じて、コンピュータ化装置106のプロビジョニング、設置、機能、などに関するステータス情報をセキュアに受信する。加えて、DAMS110は、図1に示されているように、このプロビジョニングを、単一の場所で、又は複数の場所で、遂行できる。図2に関してさらに詳しく説明するように、DAMS110は以下の主要要素、すなわち、ルート証明書局(CA)、ポリシージェネレータ、CRLジェネレータ、不正行為局、中間CA、加入CA、結合局、匿名CA、及び登録局を含んでよい。
DAMS110は、William Whyteらによる論文「A Secure Credential Management System for V2V Communications」2013 IEEE車両ネットワーキング会議、2013年12月に記載されたコンポーネント及び機能に新しい機能を加えて向上する。様々な実装において、DAMS110は多段式プログラミングと柔軟な管理(例えば、調整業者140の導入を許可)を含む。DAMS110の様々な実装はまた、単一のDAMS110が様々なサブスクライバに対して様々なレベルのプロビジョニングを提供することを許可する能力を可能にする。DAMS110の様々な実装はまた、サブスクライバがある程度の期間中(例えば、1週間)に様々なデジタル証明書使用を割り当てること、並びに様々な証明書ロード(従来のシステムのような3年の代わりに1週間など)を割り当てることを許可する能力を可能にする。DAMS110の様々な実装はまた、サブスクライバ固有URLを提供でき、これにより、特定の製造業者のコンピュータ化装置106(例えば、OEMの車両)は、その製造業者の領域内にとどまることができる(例えば、製造業者のURLは製造業者の名称を示す)。
図示されているように、プロビジョニングコントローラ120はディストリビュータ装置108、131にも通信可能なように接続されている。様々な実装において、ディストリビュータ装置108、131は、とりわけ、(図示されているように)会社の構内に設置された単独でセキュアな装置として、あるいはウェブ又はクラウドサービスとして、実装されてよい。様々な実装において、ディストリビュータ装置108、131は、望ましくはインターネット以外の専用通信経路を通じて、DAMS110やプロビジョニングコントローラ120を相手にデジタルアセットや他の情報をセキュアに送受信する信頼されたエンドポイント装置として実現される。図示されているように、ディストリビュータ装置108、131はまた、装置106a、106bへデジタルアセットをダウンロードするため、また装置106a、106bからデータを受信するため、装置106a、106bと直接的に、又は間接的に、接続する。様々な実装において、ディストリビュータ装置108、131は、ハードウェア・セキュリティ・モジュール(HSM)、強化されたオペレーティングシステム(OS)、内部ファイアウォール、及び内部ホスト侵入検知/予防システムを備えたサーバコンピュータ(例えば、少なくとも1つのプロセッサと関連メモリとを有する)を内包する箱として実装できる。ディストリビュータ装置は信頼できない環境内で動作しても、信用し信頼できる動作を提供するように特別に設計されてよい。ディストリビュータ装置は、自身と、セキュアなプロビジョニングコントローラ120及びDAMS110との間に、セキュアな通信経路を有する。この経路は、ディストリビュータ装置を制御するために、また、プロビジョニング関連のデータやログ情報を送信し検索するために、使用される。ディストリビュータ装置はまた、装置106のプログラミングかプロビジョニングに使用する試験装置107に対するセキュアな通信経路を有してよい。この経路は、製造現場の通信ネットワークでプロビジョニングデータやログデータが漏洩したり改変されたりするのを防ぐ。ディストリビュータ装置108はまた、プログラミングされる装置106とのセキュアな通信経路を直接確立してよく、これにより、(不正な試験装置107を含む)サードパーティによるプロビジョニングデータのセキュリティ侵害や改変はできなくなる。様々な実装において、ディストリビュータ装置は、プロビジョニングの対象となる装置106から公開鍵やマイクロプロセッサシリアル番号などの他データを収集できる。ディストリビュータ装置は、この情報をプロビジョニングコントローラ120及び/又はDAMS110へ送信できる。ディストリビュータ装置はまた、プロビジョニングコントローラ120及び/又はDAMS110からデータやコマンドや他の情報を、装置106にプログラミングするために、受け入れることができる。ディストリビュータ装置は、自身のログデータを返すことができ、また試験装置107からのデータをプロビジョニングコントローラ120及び/又はDAMS110に返すことができる。
装置製造業者105に関して図示されているように、ディストリビュータ装置108は試験装置107(例えば、コンピュータ化された製造装置、製品試験装置など)へ通信可能なように接続されてよく、試験装置107は、OBU装置など、製造業者105によって製造された装置106aに接続される。製造業者105は、コンピュータ化装置106aを製造する、及び/又は市場に供給する、工場を含んでよく、あるいは該工場であってよい。数ある可能な例の一例として、コンピュータ化装置106aは、車載装置(OBU)の一部として設置され、自動車と輸送インフラ装置との通信のために後ほど自動車に設置される遠隔通信用セルラーモデムに使用される組込み型汎用集積回路カード(eUICC)であってよい。コンピュータ化装置106aは、他の車両や沿道装置(RSU)との通信のためにOBUに設置されるV2Vのためのセキュアなマイクロプロセッサであってもよい。これらの新たに製造された装置106aは、正常に動作するために、デジタルアセット、例えばDAMS110からのデジタル証明書で、適切にプロビジョニングしなければならない。製造業者105のスタッフ109は、ユーザポータル115を使用してプロビジョニングコントローラ120とやり取りし、DAMS110による製品プロビジョニング活動を管理することができる。
設置業者130に関して図示されているように、ディストリビュータ装置131は、代わりに、装置106bがその運用環境に設置されている最中か設置された後に、装置106bに通信可能なように直接接続されてもよい。設置業者130は、コンピュータ化装置106bをその運用環境に設置する、例えばOBUを自動車に設置する、工場又は作業場を含んでよく、あるいは該工場又は作業場であってよい。コンピュータ化装置106bは、正常に動作するために、設置時に、デジタルアセットで、例えばDAMS110からの追加のデジタル証明書で、さらに適切にプロビジョニングしなければならない。設置業者130のスタッフ132は、設置業者ユーザポータル116を使用して、プロビジョニングコントローラ120とやり取りし、DAMS110による製品プロビジョニング活動を管理することができる。
様々な実装において、プロビジョニングコントローラ120、ディストリビュータ装置108、131、及びDAMS110は、それらの間にセキュアで公的にはアクセス可能でない通信リンク又は経路を有してよく、様々な実装において、図1に示された通信リンクはいずれも、セキュアで公的にはアクセス可能でない通信経路であってよい。様々な実装では、このセキュアなインフラの中で認可されていないエンドポイントが通信するのを防ぐため、これらのセキュアな経路は暗号化され、相互認証される。これらの通信経路を保護するために複数のセキュリティ機構が使用されてよく、これにより、外側の層がどうにかしてセキュリティ侵害されても、内側の層はセキュアな状態を保つ。一例として、外側の層として相互認証TLSトンネルを使用してよく、内側の層には独自のセキュア通信プロトコルなどの別のプロトコルを使用してよい。システム100を備えるインフラコンポーネント間のこれらのセキュアな接続は、コンポーネント間の機密通信を保護して、それらの適正動作を保証するために使用される。これらのセキュアな経路を使用することで、プロビジョニングコントローラ120とDAMS110は、デジタルデータが送信中にセキュリティ侵害又は改変されることを心配せずに、コンポーネント間でデジタルデータを送信できる。これらの経路ではコマンドや制御情報を渡すこともできる。例えば、プロビジョニングコントローラ120は、何らかのデジタルアセットやデータの送信先にあたるディストリビュータ装置108、131がどれなのかを操作できる。プロビジョニングコントローラ120は、プロビジョニングしている製造ライン上の装置106にこのデータをメータアウトする方法をディストリビュータ装置108、131に教えることもできる。さらに、ディストリビュータ装置108、131は、情報が送信中にセキュリティ侵害又は改変されることを気にせずに、プロビジョニングコントローラ120に情報を折り返し報告できる。例えば、セキュアなプロビジョニングコントローラ120は、何らかの種類のデジタルアセットで、例えば、証明書、ソフトウェア、ヒューズコンテントなどで、最高10,000台の装置をプロビジョニングするようにディストリビュータ装置108、131をプログラミングできる。ディストリビュータ装置108、131はプロビジョニングしている装置を数えることができ、これがその限度に達すると、その旨をプロビジョニングコントローラ120に報告する。様々な実装において、プロビジョニングコントローラ120によって管理される装置(例えば、108、110、131、115、116、117)は、それらの装置がプロビジョニングコントローラ120と定期的に通信しない場合に、それらの装置が動作するのを止めさせる機能を含んでおり、これにより、それらの装置が盗まれた場合は、それらの装置は使い物にならなくなる。この機能は、失われた/盗まれた装置があたかも正規の製造環境の中にまだ設置されているかのように作動して装置106をプロビジョニングし続けるのを防ぐ。
図1に示された例を引き続き参照すると、操業中に、製造業者105にあるディストリビュータ装置108は、DAMS110からデジタルアセットをセキュアに受信し、それらを装置106aの試験装置107に供給する。それぞれの装置106aが製造業者105によって製造されると、試験装置107は装置106aと通信して、装置106aの一意な識別番号やステータスなどの情報を装置106aから取得し、デジタル証明書などのデジタルアセットを装置にダウンロード又はインストールする。試験装置107はまた、装置106aからの情報(例えば、プロビジョニングステータス)をディストリビュータ装置108に供給でき、ディストリビュータ装置108はその情報をDAMS110及び/又はプロビジョニングコントローラ120にセキュアに伝達する。一部の実装において、試験装置107は、ディストリビュータ装置108と装置106aとの間でデータをセキュアにトランスポートするソフトウェアトランスポート層セキュリティ(TLS)エージェントを含んでよく、これは、それぞれの装置106aに対応付けられた一時的な鍵を使用して、DAMS110と装置106aの間にディストリビュータ装置108と試験装置107を経由するセキュアで暗号化された通信路を実質的に形成する。
製造業者105は、装置106aが最初にプロビジョニングされた後に装置106aを設置業者130へ出荷し、設置業者130は装置106bを設置する。様々な実装において、装置106aは最初のプロビジョニングの前に機能せず、製造業者105による最初のプロビジョニングの後に、装置106aは部分的には機能できるが、まだ完全には機能しない。かかる実装において、最初のプロビジョニングは、設置を行うのに必要な程度まで、また装置を完全に運用可能にするために必要なさらなる最終プロビジョニングを行うのに必要な程度まで、装置が機能するようにするのみである。
設置業者130は装置106bをその運用環境に設置し、設置業者130のスタッフメンバー132は設置業者ポータル116を通じてプロビジョニングコントローラ120にその旨を通知する。この通知は設置が適切に完了したことを証明するものであり、望ましくは、プロビジョニングコントローラ120に対して装置106bを一意的に識別する情報を含む。一部の実装において、ディストリビュータ装置131は、装置106bにステータスと識別情報を問い合わせた後に、プロビジョニングコントローラ120に自動的に通知できる。設置業者130が装置106bを適切に設置したことを設置業者ポータル116を通じて証明する様々な実装では、この証明がプロビジョニングコントローラ120によってデータベース125に記録/保存されてよい。この証明は、無線伝送電力測定やGPSアンテナ位置確認といった特定の設置済み装置106bに関連する特定の試験データを含んでよい。
設置通知に応答して、プロビジョニングコントローラ120は、(i)装置106bが製造業者105によって合法的に製造された装置としてデータベース125に列挙されていること、(ii)装置106bが最初に製造業者105によって正常にプロビジョニングされたものとしてデータベース125に列挙されていること、(iii)設置業者130が認可された設置業者としてデータベース125に列挙されていることを検証する。この検証に成功すると、コントローラ120は、装置106bを運用可能な形にプロビジョニングするのに必要なデジタルアセット(例えば、匿名証明書(PC))及び/又は他の情報を送信することをDAMS110に指図し、このプロビジョニングにより、装置106bは運用環境に設置されたものとして正常に機能できるようになる。
様々な実装において、調整業者140は調整業者ポータル117を通じてプロビジョニングコントローラ120とやり取りして、設置業者130及び/又は製造業者105を識別、検証、及び管理して、認可されていない設置業者(例えば、ハッカー)がシステム100から真正のデジタルアセットを得ることができないようにする。調整業者140のスタッフメンバーはプロビジョニングコントローラ120によって認証でき、システム100で一意なIDを持つことができるため、スタッフメンバーの活動は一意的に記録できる。様々な実装において、調整業者140は調整業者ポータル117を使用してプロビジョニングコントローラ120に問い合わせを行い、証明報告書、設置業者活動、製造された装置106aの数及び識別情報、設置され完全にプロビジョニングされた装置106bの数及び識別情報など、コントローラ120によって記録される情報のコピーや報告書を入手することができる。
様々な実装において、設置業者130がシステム100とやり取りするには、プロビジョニングコントローラ120によって認可済みの設置業者として認証されなければならない。認可されるためには、設置業者130は、例えば、設置業者130が対象となる環境(例えば、対象となる車両又は場所など)に装置106bを適切に設置することを述べた然るべき契約書を履行しなければならない場合がある。設置業者130は、例えば、調整業者140によって他の契約内容を証明することが求められる場合がある。望ましくは、それぞれの設置業者130がシステム100の中で一意なIDを持ち、これにより、設置業者130の活動をプロビジョニングコントローラ120によって一意的に記録できる。
システム100とその機能の説明されている実装は、製造業者105によって製造され、認可された設置業者130によって適切に設置及び試験された装置106だけが、装置106を運用可能にするのに必要なデジタルアセットで完全にプロビジョニングされることを保証する。プロビジョニングコントローラ120は、プロビジョニング工程の各段階で誰によってどのような作業が行われたかを伝える幅広いログや報告書を作成し、従来のシステムにはなかった重要な監査能力を提供する。
当業者なら、図1に示されたコンポーネント、プロセス、データ、工程、及び実装の詳細が、説明を簡潔かつ明確にするために提示された例であることを認めるであろう。この例は制限することを意図しておらず、また数多くのバリエーションが可能であるため、本発明の原理から逸脱せずに、別のコンポーネント、プロセス、実装の詳細、及びバリエーションを使用することもできる。例えば、図1にはただ1つの製造業者105と、ただ1つの設置業者130と、ただ1つの調整業者140が示されているが、他の実装では、これらの各エンティティがいくつあってもよい。別の一例として、DAMS110とプロビジョニングコントローラ120は別々の装置として示されているが、別の実装では、それらの機能を単一の装置、例えば単一のサーバに、まとめてよい。さらに別の一例として、ポータル115〜117についても同じことができる。さらに別の一例として、システム100は、参照により援用される2016年11月14日に出願された米国仮出願第62/421,852号に記載されているようなアセット管理装置(AMA、図示せず)を追加で含むことができる。かかる実装において、AMAは、プロビジョニングコントローラ120、及び/又はディストリビュータ装置108、131、及び/又はDAMS110へ通信可能なように接続されてよい。様々な実装において、AMAは、使い勝手の良いGUIと、生産調整役が製品(例えば、装置106)の構成や構造を簡単かつ効率的に管理し、かつアセット所有者がデジタルアセットの在庫を簡単かつ効率的に管理することを可能にする機能とを含んでよい。
図2は、本発明の実装と一致する、コンピュータ化装置をセキュアにプロビジョニングするプロセス200の一例を示すスイムレーン図である。様々な実装において、示されているプロセス200又は工程の一部又は全部は、汎用コンピューティングシステム(1つ以上のプロセッサ、又は1つ以上のコンピューティングサブシステムを含み得る)で実行するコードによって、ハードウェアのみのシステムによって、又はこれら2つのハイブリッドであるシステムによって、遂行されてよい。図2の上部にまたがって示されているように、プロセス200に関わるエンティティは、コンピュータ化装置106の製造業者105と、製造業者105にあるディストリビュータ装置108と、プロビジョニングコントローラ120と、DAMS110とを含む。様々な実装において、これらのエンティティは、図1に関して説明されている通りであってよく、また本開示の全体を通じて説明されている通りであってよく、互いに通信してよい。
図2の例に示されているように、プロセス200は205で始まり、ここで製造業者105(例えば、スタッフメンバー109)は、装置106aにプロビジョニングされる(例えば、装置106aによって使用される)デジタルアセットのためにデジタルアセットプロビジョニングサービスをプロビジョニングコントローラ130に要求し、この要求はデジタルアセットの行先にあたる装置106aを特定できる。要求は、例えば、製造業者105が新しい製品106Aのプロビジョニングサービスを要求するものであってよく、あるいは既存の製品106Bのために新たなプロビジョニングサービス要求を行うものであってもよい。様々な実装において、この工程は、認可されたユーザが、例えばユーザポータル115を通じて、プロビジョニングコントローラ130にログオンする作業を伴う場合がある。いくつかの場合において、要求されるデジタルアセットは、加入証明書、装置106が実行する実行可能コード、デジタル動作パラメータといったセキュアなクレデンシャルであってよい。加入証明書は、そのホルダをエコシステム内の認可されたパーティシパントとして識別する公開鍵証明書であり、このエコシステムの中では、全てのパーティシパントが有効な加入証明書を所持しなければならず、(米国運輸省のV2Xエコシステムなど)、認可されたパーティシパントは、エコシステム内での装置106の通信及び動作を可能にする匿名証明書を受け取ることもできる(例えば、米国運輸省のV2Xエコシステムの例で、車両と沿道インフラとの通信及び動作を可能にするため)。
210では、製造業者のユーザ109が認可されたユーザであるか否かをプロビジョニングコントローラ120が判断する。一部の実装において、プロビジョニングコントローラ120は、プロビジョニングされる装置106a(例えば、製品)がシステム100での使用が承認されているか否かも210で判断できる。場合によっては、図1の調整業者140によって承認済み装置のリストが提供され、この判断を下すにあたってプロビジョニングコントローラ120によって使用されてよい。
プロビジョニングコントローラ120は、ユーザ(及び/又は製品)が認可されていない場合に、デジタルアセットプロビジョニングサービスの要求を拒絶する(図2に図示せず)。一方、認可されているユーザが(例えば、認可された製品のための)要求を行っている場合(210、はい)、プロビジョニングコントローラ120は、例えば、(215で)サービス要求命令をDAMS110に送信することによって、DAMS110がサービス要求を履行するように指図、命令、又は制御する。
220では、DAMS110が、215からの要求の受信に応答して、また215からの要求の受信を条件として、要求に基づいて装置106aに対するサービスを始めるために自身を構成する。一部の実装において、DAMS110は、装置106aにサービスを行う形にディストリビュータ装置108を構成するために、ディストリビュータ装置108へ命令を送信することもできる(図示せず)。
222では、DAMS110が205で要求された装置106aのためのデジタルアセットを生成する、作成する、計算する、及び/又は検索する。様々な実装において、DAMS110は、公開及び秘密鍵対といった要求されたデジタルセキュリティアセット、並びに装置106aのための加入証明書や匿名証明書を、作成又は生成することができる。
工程222の代替の実装において(図2に図示せず)、DAMS110は、装置106aによって生成され装置106aから検索される加入及び匿名用公開鍵などの装置106aに関連するデジタルアセット生成用情報と、装置106aを一意的に識別するデータ(例えば、マイクロプロセッサシリアル番号)とを、ディストリビュータ装置108に要求し、ディストリビュータ装置108から受信する。かかる実装において、DAMS110はその後、加入及び匿名用公開鍵を使用してデジタルアセット、例えば、装置106aのための加入証明書と適当数の匿名証明書とを生成する。
225では、DAMS110が、205でデジタルアセットサービスを要求した製造業者105のディストリビュータ装置108へデジタルアセットを送信する。例えば、DAMS110は、公開・秘密鍵対と、加入証明書と、匿名証明書とを製造業者105のディストリビュータ装置108へセキュアに送信できる。
226では、DAMS110がデジタルアセットに関するログ情報をプロビジョニングコントローラ120へ送信する。様々な実装において、ログ情報は、要求元のID、デジタルアセットのID、ディストリビュータ装置のID、要求作業と送信作業のタイムスタンプ、受信したマイクロプロセッサシリアル番号などをはじめとする、デジタルアセットの要求と転送を記述する情報を含んでよい。一部の実装において、ログ情報はデジタルアセットのコピーを含んでよい。227では、プロビジョニングコントローラ120がログ情報を受信し、例えばデータベース125にログ情報を保存する。プロビジョニングコントローラ120はシステム100内で起きる全活動の監査証跡を実質的に管理し、これにより、製造業者105によっていくつの装置106aがいつ製造されプロビジョニングされたかに関するデータなど、多くの種類のデータをまとめることができる。そのようなデータやログ情報は請求書の作成、並びに監査の目的に使用できる。
230では、ディストリビュータ装置108がDAMS110によって送信されたデジタルアセット(例えば、公開・秘密鍵対、加入証明書、及び匿名証明書)を受信し、保存する。
235では、ディストリビュータ装置108が、ディストリビュータ装置108から装置106aへデジタルアセットをセキュアに転送するのに使用することができる公開鍵などのデジタルセキュリティアセットを装置106aに要求し、装置106aから受信する。様々な種類の装置106aは、ことによると装置106に組み込まれたセキュアなプロセッサを使用して一時的な鍵対を生成する能力を有しており、公開鍵はこの一時的な鍵対の一部であってよい。240では、ディストリビュータ装置108がデジタルセキュリティアセット(例えば、公開鍵)を使用して装置106aへデジタルアセット(例えば、加入証明書)をセキュアに送信する。様々な実装において、ディストリビュータ装置108は装置106aの公開鍵を使用して、例えば装置106aとの仮想プライベートネットワーク(VPN)を形成し、その中でデジタルアセットをセキュアに送信することができる。
様々な実装において、ディストリビュータ装置108はディストリビュータ装置108と試験装置107との間にトランスポート層セキュリティ(TLS)を使用し、装置106aに接続されることがある試験装置107との通信をセキュアなものにする。装置106aに直接的でセキュアな通信を用意することが望まれる実装では、システムが装置106aで一時的な公開鍵対を作成し、その公開鍵を、ディストリビュータ装置108の公開鍵を含むディストリビュータ装置108からの証明書と併せて使用し、装置106aに対するセキュアなトンネルを作ることができる。かかる実装において、装置106aは、システム100のルート公開鍵を含む特殊なコードを実行して、ディストリビュータ装置108が装置106aに送信する証明書を確認する。
装置106a又は試験装置107とディストリビュータ装置108との間にセキュアな経路が確立されると、装置106aはその後、(例えば、V2Xエコシステムのための)加入・匿名用公開鍵対を作成し、それらの公開鍵と他のデータをディストリビュータ装置108へエクスポートすることができ、ディストリビュータ装置108はその後、このデータをDAMS110とプロビジョニングコントローラ120へ送信できる。工程222の代替実装に関して上述したように、DAMS110は受信した公開鍵を使用して加入証明書と匿名証明書を作成できるが、一部の実装においては、匿名証明書の数が多くなることがある(例えば、3000)。この代替実装例では、DAMS110が前述した工程225でこれらの証明書をディストリビュータ装置108に返す。いくつかの別の実装において、DAMS110は、プロビジョニングが行われている場所に応じて、これらの証明書を、ディストリビュータ装置108の代わりにディストリビュータ装置131へ送信することもできる。
一部の実装において、例えば、装置106が独自の無線又は有線通信機能を有し、かつ少なくとも部分的に動作可能である場合は、ディストリビュータ装置108は装置106と直接的に通信できる。別の実装において、ディストリビュータ装置108は、試験装置107などの中間装置を介して装置106と間接的に通信できる。
装置106aはデジタルアセットを受信し、これを動作中に使用するために保存する。例えば、装置106aが自動車の車載装置(OBU)か電子制御装置(ECU)であり、デジタルアセットが無線ネットワークに参加するために必要なセキュリティアセット(例えば、公開鍵証明書)である場合、このデジタルセキュリティアセットがOBUによって保存される。後ほど自動車に設置され自動車で作動されたOBUは、無線ネットワークへの接続を試みる。ネットワークは、OBUがネットワークに接続することを許可する前に、OBUの認証を試みる。OBUは、製造業者105のディストリビュータ装置108によって提供されたデジタルセキュリティアセットを持っている場合に限り、認証でき、ネットワークに参加できる。
245で、ディストリビュータ装置108は、装置106aが240で送信されたデジタルアセットを正常に受信しインストール(例えば、保存)したか否かを伝えるステータス情報を、装置106aから受信する、又は該ステータス情報にアクセスする。
250では、ディストリビュータ装置108がプロビジョニングコントローラ120へステータス情報を送信する。255では、プロビジョニングコントローラ120がステータス情報を受信し、工程227で保存されたログ情報と併せて保存する。それゆえ、プロビジョニングコントローラ120は、各装置106に関わる全てのシステム100活動について監査証跡又は監査ログを継続する。様々な実装において、監査ログは、製造業者のプロビジョニング(例えば、工程235〜245)の失敗の成功、デジタルアセットの識別情報(及び/又はデジタルアセット自体コピー)、暗号技術の種類などを伝える情報を装置106ごとに含んでよい。
装置106aがデジタルアセットで正常にプロビジョニングされた場合は、製造業者105が270で装置を市場に発売する。例えば、製造会社105は、装置をその動作環境に設置する会社(例えば、図1の設置会社130)へ装置106aを物理的に出荷できる。一部の実装において、装置106aはこの時点で完全にプログラミング又はプロビジョニングされてフル機能で動作できる場合があるが、他の実装において、装置106aはこの時点で部分的にしかプログラミング又はプロビジョニングされていない場合があり、フル機能で稼働できないか、機能不能である。
図2に示された例は、説明を目的とするものに過ぎず、制限することを意図していない。さらに、示されているプロセス200は、開示されている特定の実装と一致する新しく革新的な特定の特徴を明確に説明するためいくぶん簡略化された一例であるが、この例は制限することを意図しておらず、数多くのバリエーションが可能である。例えば、機能と工程は特定の順序で遂行されるものとして示されているが、説明されている順序は一例に過ぎず、開示されている特定の実装に合わせて、これとは異なる様々な順序で工程を遂行することもできる。さらに、工程は専ら説明の目的のために個別のステップとして説明されているが、一部の実装においては、複数の工程が同時に遂行されてもよく、及び/又は単一の計算の一部として、又はより大規模な工程の一部として、遂行されてもよい。説明されている工程は、網羅的であること、制限すること、又は絶対的であることを意図しておらず、様々な工程を修正、挿入、又は削除できる。バリエーションの一例として、図2は単一のデジタルアセット(例えば、単一のデジタル証明書)の脈絡で概ね説明されているが、システムとプロセスは複数のデジタルアセット(例えば、2つ以上のデジタル証明書)でも同様に機能して処理する。別の一例として、装置106aがセキュアな通信能力を持っていない場合は、工程235及び240を削除でき、ディストリビュータ装置108は暗号化されていない通信を使用して装置106bと通信できる。
さらに別の一例として、様々な実装において、プロビジョニングコントローラ120又は特殊な署名装置などの代理局は、同様に、ソフトウェア、ファームウェア、ヒューズブロブ、マニフェストファイルなどをはじめとするデジタルアセットを含む、別のデジタルアセット又は追加のデジタルアセットを、ディストリビュータ装置108へ送信し、ディストリビュータ装置108から装置106bに読み込ませることができる。かかる実装において、プロビジョニングコントローラ120は、加えて、又は代わりに、ストレージから要求されたデジタルアセットを検索すること、要求されたデジタルアセットを取得すること、又は要求されたデジタルアセットにアクセスすること、又は要求されたデジタルアセットのアクセスを指図することができる。例えば(図2に図示せず)、プロビジョニングコントローラ120又はその認定代理は、装置106aに読み込まれて装置106aによって実行される実行可能ソフトウェアイメージ(例えば、データベース125に保存されたコンパイル済みコンピュータプログラム)を検索し、この実行可能ソフトウェアイメージを装置にプログラミングするためディストリビュータ装置10へ送信することができる。様々な実装において、プロビジョニングコントローラ120によってアクセスされるデジタルアセットは、装置106aの製造業者105によってセキュアに供給、リリース、及び/又は認可されたソフトウェアなどだけで構成されてよく、この場合は、認可されていないソフトウェアを装置106aに読み込むことはできない。一部の実装において、プロビジョニングコントローラ120によって検索されるデジタルアセットは、図1のデータベース125など、プロビジョニングコントローラ120と連係されたストレージデバイスやデータベースに保存されてよい。
図3は、本発明の実装と一致する、コンピュータ化装置をセキュアにプロビジョニングするプロセス200の一例を示すスイムレーン図である。様々な実装において、示されているプロセス300又は工程の一部又は全部は、汎用コンピューティングシステム(1つ以上のプロセッサ、又は1つ以上のコンピューティングサブシステムを含み得る)で実行するコードによって、ハードウェアのみのシステムによって、又はこれら2つのハイブリッドであるシステムによって、遂行されてよい。図3の上部にまたがって示されているように、プロセス300に関わるエンティティは、コンピュータ化装置106の設置業者130と、設置業者130にあるディストリビュータ装置131と、プロビジョニングコントローラ120と、DAMS110とを含む。様々な実装において、これらのエンティティは、図1に関して説明されている通りであってよく、また本開示の全体を通じて説明されている通りであってよく、互いに通信してよい。
図3の例に示されているように、プロセス300は305で始まり、ここで設置業者130は、製造業者105によって製造され、発売又は出荷された(図2の工程270参照)装置106b(例えば、OBU又はECU)を受け取る。310では、設置業者130が、装置106bをその運用環境に、例えばより大規模なシステムに設置することができる。例えば、設置業者130は製造業者105からOBUを購入する自動車メーカーであってよく、設置業者130はOBUを自動車に設置することができる。様々な実装において、装置106bの設置は、設置後に装置106bの動作、機能、などを試験することと、関連ステータスデータを収集することとを含んでよい。
一部の実装において、装置106bは部分的にしかプロビジョニングされておらず、完全には機能しない場合がある。例えば、装置106bの製造業者105は加入証明書のみで装置106bをプロビジョニングしたかもしれず、フル機能を得るためには、例えば、別の完全にプログラミングされた装置106と通信する機能を得るためには、匿名証明書などの別のデジタル証明書で装置106bをさらにプロビジョニングする必要がある。
315では、設置業者130(例えば、スタッフメンバー132)がプロビジョニングコントローラ120へ設置ステータスデータを送信する。様々な実装において、設置ステータスデータは、設置された装置の変更不可能な識別子、例えば、シリアル番号、又は一旦生成されたら決して消去されない鍵対の公開鍵といった固定され一意的に識別する他の情報を含む。設置ステータスデータは他の情報を、例えば、設置業者130の一意な識別子、装置106bがいつどのようにして設置されたかを伝える情報、設置された装置106bに行われた試験の結果に関する情報、設置業者130が該当する仕様、契約条件、及び又は指図に従って装置106bを設置したことを証明する情報、及び/又は他の類似する情報を含んでもよい。
320では、設置業者130のユーザが認可されたユーザであるか否かをプロビジョニングコントローラ120が判断する。認可されたユーザではない場合、プロビジョニングコントローラ120は設置ステータスの連絡を拒絶する(図3に図示せず)。一方、認可されているユーザが要求を行っている場合(320、はい)、プロビジョニングコントローラ120は、設置ステータスデータで特定される装置106bが認可された装置であるか否かを判断する(325)。一部の実装において、プロビジョニングコントローラ120は、1)そのdbase125に装置106bの記録があること、2)その記録が製造業者105で装置106bが正常にプロビジョニングされたことを示していること、3)その記録が(320で認可された設置業者であると確認された)設置業者130へ装置106bが送られたことを示していることを、そのデータベース125あらかじめ保存されている情報に照らして確認することによって、装置106bが認可されていると判断することができる。
設置ステータスデータで特定される装置が認可されていない場合、プロビジョニングコントローラ120は設置ステータスの連絡を拒絶する(図3に図示せず)。一方、設置ステータスデータで特定される装置106bが認可されている場合(325、はい)、プロビジョニングコントローラ120は330で、設置ステータスデータを装置106bに関連するログ情報と共に保存する。例えば、装置106bに関連するログ情報は、図2の工程227に関して説明したように、データベース125にあらかじめ保存されたものであってよい。
335で、プロビジョニングコントローラ120は、例えば設置業者130にある装置106bをプロビジョニングする要求をDAMS110へ送信することによって、DAMS110がプロビジョニング要求を履行するように指図、命令、又は制御する。340では、DAMS110が、335からの要求の受信に応答して、また335からの要求の受信を条件として、335で要求されたデジタルアセットを生成及び/又は検索する。様々な実装において、DAMS110は、図2に関して説明したように、匿名証明書や他の公開鍵証明書など、要求されたデジタルアセットを作成又は生成できる。様々な実装において、DAMS110、又はDAM110の代わりにプロビジョニングコントローラ120は、加えて又は代わりに、装置106bタイプの装置に使用するためデータベース125にあらかじめ保存されている実行可能イメージなど、要求されたデジタルアセットを、ストレージから検索する、取得する、又はアクセスすることができる。
345では、DAMS110が315で設置ステータスを送信した設置業者130のディストリビュータ装置131へデジタルアセットを送信する。例えば、DAMS110は設置業者130のディストリビュータ装置131へ匿名証明書をセキュアに送信できる。
350では、ディストリビュータ装置131が、図2に関して説明したように、工程230〜245と同じか同様の工程を遂行する。355では、ディストリビュータ装置131がプロビジョニングコントローラ120へステータス情報を送信する。360では、プロビジョニングコントローラ120がステータス情報を受信し、工程227で保存されたステータス情報など、装置106bに関連する保存済みの情報と併せてステータス情報を保存する。それゆえ、プロビジョニングコントローラ120は、各装置106に関わる全てのシステム100活動について監査証跡又は監査ログを継続する。
図3に示されたプロセス300は、説明を目的とする例であり、制限することを意図していない。さらに、示されているプロセス300は、開示されている特定の実装に一致する新しく革新的な特定の特徴を明確に説明するためいくぶん簡略化された一例であるが、数多くのバリエーションが可能である。例えば、機能と工程は特定の順序で遂行されるものとして示されているが、説明されている順序は一例に過ぎず、開示されている特定の実装に合わせて、これとは異なる様々な順序で工程を遂行することもできる。さらに、工程は専ら説明の目的のために個別のステップとして説明されているが、一部の実装においては、複数の工程が同時に遂行されてもよく、及び/又は単一の計算の一部として、又はより大規模な工程の一部として、遂行されてもよい。説明されている工程は、網羅的であること、制限すること、又は絶対的であることを意図しておらず、様々な工程を修正、挿入、又は削除できる。
図4A及び図4Bはともに、本発明の実装による、拡張可能でセキュアな証明書管理システム(CMS)400を実装する例示的アーキテクチャのブロック図である。拡張可能なCMS400の様々な実装は、超大量装置トランザクション及び証明書生成処理に使用されてよい。様々な実装において、拡張可能なCMS400は、複数のサーバ、HSM、複数の計算エンジン又はコンピューティングエンジン、及び複数のアプリケーションプラットフォームを使用して実装されてよい。図4A及び図4Bに示された例示的実装において、アプリケーションプラットフォームは1つ以上の仮想マシン(VM)を各々含んでよい。追加の実装又は代替の実装において、アプリケーションプラットフォームは各々、1つ以上のハードウェアプラットフォーム、例えば、アプリケーションサーバ、コンピュータ、又はソフトウェアアプリケーションをホストして実行できる他のコンピュータハードウェアなどを含んでよい。図4A及び図4Bの例において、加入証明書局430のアプリケーションプラットフォームは、加入証明書局アプリケーションを実行する1つ以上のVMであってよく、匿名証明書局440のアプリケーションプラットフォームは、匿名証明書局アプリケーションをホストして実行する働きをする1つ以上のVMであってよい。同様に、結合局1 450のアプリケーションプラットフォームは、結合局1アプリケーションをホストして実行するように構成された1つ以上のVMであってよく、結合局2 460のアプリケーションプラットフォームは、結合局2アプリケーションをホストして実行する働きをする1つ以上のVMであってよい。拡張可能なCMS400の例は、プライベートデータセンター、AmazonのAmazonウェブサービス(AWS)などのクラウドデータセンター、又はプライベートデータセンターとクラウドデータセンターのハイブリッドで実装されてよい。
一部の実装において、拡張可能なCMS400は、セキュリティ証明書、例えば、図1に関して説明されているように機能でき、また本開示の他の部分で説明されているように機能できる、製造業者105のディストリビュータ装置108によって使用される、加入証明書や匿名証明書などを提供できる。いくつかの実装において、拡張可能なCMS400は、ディストリビュータ装置108に証明書を提供するため、図1に関して説明したデジタルアセット管理システム(DAMS)110とやり取りできる。
図4Aの例に示されているように、CMS400のアーキテクチャは、望ましくは別々のサーバで実装される2つのプロビジョニングコントローラ120、すなわち一次プロビジョニングコントローラと待機プロビジョニングコントローラとを、含んでよい。2つのプロビジョニングコントローラ120は、一次プロビジョニングコントローラに収容されているオブジェクト、データなどを、待機(二次)プロビジョニングコントローラにコピー又は収容させる機能を含む。待機プロビジョニングコントローラは、一次プロビジョニングコントローラが何らかの理由でオフラインになる場合に、オンラインにされて一次プロビジョニングコントローラに取って代わることができる。これは、プロビジョニングコントローラ120の連続(又は非常に高度な)アベイラビリティを提供する。様々な実装において、一次及び待機プロビジョニングコントローラは、図1に関して説明されている通りであってよく、また本開示の他の部分で説明されている通りであってよい。様々な実装において、プロビジョニングコントローラ120は、図1のプロビジョニングコントローラ120と製造業者のディストリビュータ装置108との間の接続及び通信に関して本明細書で説明されているやり方と同じか同様のやり方で拡張可能なCMS400に接続してよい。
概して、プロビジョニングコントローラ120は、インフラを備えるシステム要素を、明確に認可された要素だけが拡張可能なCMS400に参加して拡張可能なCMS400とやり取りができる形に管理する。様々な実装において、プロビジョニングコントローラ120は、ユーザ(例えば、製造業者105又は設置業者130)の従業員識別・認可システムと一体化でき、あるいは独自の識別・認可機能を提供して、認可されたユーザだけが拡張可能なCMS400を使用できるようにすることができる。一部の実装において、プロビジョニングコントローラ120は装置ライフサイクル管理(DLM)コントローラであってよく、例えば一次及び待機DLMコントローラであってよい。様々な実装において、プロビジョニングコントローラ120は、CMS400タイプのコンポーネント内に存在するコントローラであってよい。例えば、図4A及び図4Bにおいて、プロビジョニングコントローラ120は、登録局420、加入証明書局430、匿名証明書局440、及び結合局450、460のために存在する1つのセット又は一対のコントローラであってよい。
図4A及び図4Bに示されているように、拡張可能なCMS400のアーキテクチャは、リプリゼンテーショナル・ステート・トランスファ(REST)ウェブサービスとして実装された登録局405、登録局420、登録局計算エンジン425、加入証明書局430、加入証明書局計算エンジン435、匿名証明書局440、匿名証明書局計算エンジン445、結合局1 450、結合局1計算エンジン455、結合局2 460、結合局1計算エンジン465、メッセージキュー410、411、412、413、414、415、416、417、418、419、及び1つ以上のデータベース470を含む。以下の段落では、これらのコンポーネントの各々を説明する。
拡張可能なCMS400のアーキテクチャは、セキュリティ機能から非セキュリティ関連アプリケーションを有利にも分離する。図4A及び図4Bの例に示されているように、登録局420、加入証明書局430、匿名証明書局440、及び結合局450、460は、いずれも非セキュリティ関連アプリケーション及び機能から独立した各自の専用計算エンジン425、435、445、455、及び465上で実行する各自のVM上のアプリケーションとして実装されている。これは、HSMの性能が遅い、又はクラウドサービスプロバイダがHSMを供給できない、又はその適正HSM管理が不確かである、従来のシステムを凌ぐ、技術的な利点及び進歩とセキュリティ上の利点及び進歩の両方を提供する。拡張可能なCMS400では、HSMを必要とする全ての暗号操作が計算エンジン(例えば、計算エンジン425、435、445、455、及び465のいずれか1つ以上)で遂行される。
図4A及び図4Bに示されているように、重要なセキュリティ機能を互いに分離することにより、また別々の計算エンジンに分離することにより、例えば、登録局420、加入証明書局430、匿名証明書局440、及び結合局450、460によって遂行される計算が多い暗号機能やセキュリティ機能(例えば、楕円曲線バタフライ拡張計算、又は楕円曲線デジタル署名)は、既存の登録局システムより大幅に速く遂行される。この設計は、「ボトルネック」となるアプリケーションを必要に応じて個別に拡張可能とすることによって、トランザクション処理の大幅改善を可能にする。このため、本開示と一致する実装は、特に、技術的に有利なシステムアーキテクチャを提供することで、既存の登録局システムに伴うボトルネックを低減する。例えば、登録局405及び420で実行する登録局アプリケーションが拡張する必要がある場合は、さらなるVMを追加でき、登録局計算エンジン425のセキュア計算能力に変更を加える必要はない。代わりに、セキュリティ計算が性能を制限している場合は、さらなるセキュア登録局計算エンジン425を追加できる。CMS400の他のコンポーネントにもこれと同じ多次元拡張が当てはまる。これらの能力は、既存のセキュリティクレデンシャル管理システム(SCMS)を凌ぐ大幅な性能改善と拡張性を提供する。
図4A及び図4Bに示された例では、入力メッセージキュー410、411、412、413、414、415、416、417、418、及び419を含むメッセージングサブシステム又はメッセージキューイングサービスによって登録局405が他のコンポーネントに接続されており、かつ他のコンポーネントが互いに接続されている。図4A及び図4Bの例示的実装では、入力メッセージキュー410、411、412、413、414、415、416、417、418、及び419は単方向性であるから、メッセージはこれらのキューの中で一方向に(例えば、クライアントからサーバへ)流れる。これは、VMと計算エンジンの各々につき単一の入力キューを設けることにより、簡素さという技術的なメリットを提供する。
一部の実装において、メッセージングサービスは高速メッセージキューイングサービスであってよく、例えば、Amazonウェブサービスによって提供されるAmazonシンプルキューサービス(SQS)であってよい。例えば、かかる実装によると、メッセージキュー410、411、412、413、414、415、416、417、418、及び419は、SQSメッセージキューであってよい。入力メッセージキュー410、411、412、413、414、415、416、417、418、419を使用してアプリケーションVMと計算エンジンを互いに通信可能なように接続することにより、アプリケーションVMと計算エンジンは必要に応じて個別に拡張できる。すなわち、登録局420、加入証明書局430、匿名証明書局440、及び結合局450、460の各アプリケーションプラットフォームは、それぞれの入力メッセージキューを通じて計算エンジン425、435、445、455、及び465へ通信可能なように接続されているので、CMS400のこれらのコンポーネントとデータベース470はいずれも、互いに別々に拡張する。
上述したように、そして図4A及び図4Bの非制限的例に示されているように、登録局405、420、証明書局430、440、及び結合局450、460の各々は、各自の仮想マシン(VM)上でアプリケーションとして実装されてよい。追加の実装又は代替の実装において、登録局405、420、証明書局430、440、及び結合局450、460のいずれか1つ以上は、ハードウェアプラットフォーム(例えば、サーバ又は計算エンジン)上で実行してよい。以下の段落では、アプリケーションプラットフォーム(例えば、VM又はハードウェアプラットフォーム)上で実行するこれらのアプリケーションの各々の役割と機能を説明する。
様々な実装において、登録局405は、プロビジョニングネットワークにおいて、デジタル証明書や他種デジタルセキュリティアセットを求めるユーザ要求を検証し、証明書局(例えば、加入証明書局430及び匿名証明書局440)にそのデジタル証明書を発行させる局であってよい。様々な実装において、登録局405は公開鍵基盤(PKI)システムで既知の登録局と同様であってよい。様々な実装において、登録局405はリプリゼンテーショナル・ステート・トランスファ(REST)ウェブサービスとして実装されてよい。登録局405について図4Aで3つの「積み重なった」長方形で表現されているように、様々な実装においては、同時に実行する登録局405の複数インスタンスがあってよい。図4A及び図4Bの他の「積み重なった」要素についても、これが同様に表現されている。CMS400の登録局機能は非中央的であり、その機能は、RESTウェブサービスとして実装された登録局405の複数インスタンスと登録局420の複数インスタンスによって遂行できる。登録局405、420の第一の役割は、証明書プロビジョニング要求を承諾し履行することであり、それと同時に、署名する匿名証明書局440が特定のコンピュータ化装置に行きつく証明書がどれなのかを知ることを防ぐ。登録局405、420は、CMS400の中で自身の役割を果たすため、メッセージキュー414、416、及び418を通じて匿名証明書局440、結合局450、460と直接やり取りする。
長方形の左下から現れる「DB」の矢印で表現されているように、登録局405(並びに、「DB」の矢印で示された図4A及び図4Bの他のコンポーネント)は、それぞれのデータベース470へ接続されてよい。図4Aにはただ単一のデータベース470が示されているが、CMS400がデータの保存と検索のために一群のデータストア又はデータベース470を利用できることを理解されたい。例えば、データベース470は、必要に応じてデータの分離を可能にする1つ以上のテーブルが各々備わった1つ以上のデータベース論理又は物理ユニットから構成されてよい。本明細書で使われている用語「データベース」は、1つ以上のデータベース又はデータストアを指す。いくつかの実装において、複数データベース470の使用は、登録局405「DB」の矢印で示された図4A及び図4Bの他のコンポーネントとの間でデータの分離を可能にする。例えば、かかる複数データベース470の使用は、登録局405、420、証明書局430、440、及び結合局450、460間でデータの分離を可能にする。
好適な実装において、データベース470は1つ以上の高速アクセス低待ち時間データベースから成る集まりである。一部の実装において、データベース470はNoSQLデータベースであってよく、あるいは、例えば、Amazonウェブサービスによって提供されているDynamoDBデータサービスなどのデータベースサービスであってよい。様々な実装において、データベース470に保存されるデータはアプリケーション次第であるが、過去の発行済み証明書、様々な結合局の値、証明書が発行された装置に関するデータ、作業者の行為などを含み得る。なお、データは、暗号化されていない状態で、暗号化された状態で、又はこれらの状態の組み合わせで、保存されてよい。
様々な実装において、登録局405によって作成されるデジタル証明書は、別々の部分に、例えば、加入デジタル証明書と匿名デジタル証明書に分割されるため、拡張可能なCMS400は加入証明書局430と匿名証明書局440とを含む。
同時に実行する加入証明書局430の複数インスタンスがあってよいため、加入証明書局430はCMS400の非中央コンポーネントである。加入証明書局430について図4Aで3つの「積み重なった」長方形で示されているように、一部の実装においては、同時に実行する加入証明書局430の複数インスタンスがあってよい。加入証明書局430は、加入証明書を求める要求を登録局420から受信できる。加入証明書局430の第一の役割は、登録局420からの要求を履行して、エンドユーザ装置に、例えば、図1に示された製造業者105のディストリビュータ装置108などに、加入証明書を発行することである。図5Aを参照して後述するように、加入証明書局430は、CMS400の中でその役割を果たすために、登録局420と直接やり取りする。
匿名証明書局440はCMS400の非中央コンポーネントであり、同時に実行する匿名証明書局440の複数インスタンスがあってよい。繰り返し述べると、匿名証明書局440について図4Aで3つの「積み重なった」長方形で示されているように、様々な実装においては、同時に並行して実行する匿名証明書局440の複数インスタンスがあってよい。匿名証明書局440は、匿名証明書を求める要求を登録局420から受信できる。匿名証明書局440の第一の役割は、登録局420からの要求を履行して、エンドユーザ装置に、例えば、図1に示された製造業者105のディストリビュータ装置108などに、匿名証明書を発行することである。いくつかの実装において、匿名証明書局440は、V2V機能のために短期間匿名証明書の要求を履行する。図5Bを参照して後述するように、匿名証明書局440は、CMS400の中でその機能を果たすために、登録局420と直接やり取りする。
様々な実装において、図4Bに示された結合局450、460は、取り消しの目的のために、証明書要求元の識別情報(すなわち、証明書要求元の装置の一意な識別子)を発行された匿名証明書に結び付ける。すなわち、結合局1 450と結合局2 460は、証明書要求元の装置の一意な識別子として、それぞれの結合値を、発行された匿名証明書にそれぞれ提供する。結合局1 450と結合局2 460は、結合値を求める要求を登録局420から受信し、その後、要求された結合値を登録局420に提供することができる。図5Aを参照して後述するように、結合局450、460は、結合値の要求を履行するために、登録局420と直接やり取りする。
様々な実装において、計算エンジン425、435、445、455、及び465とプロビジョニングコントローラ120がHSMを含んでいることにより、これらのコンポーネントは、ハッカーに不当に脅かされることなくセキュアな計算を実行できる。一部の実装において、計算エンジン425、435、445、455、及び465は、組込み型HSMを必要とせず自主的にセキュアな計算を実行するように設計されてもよく、かかる実装では、計算エンジンがHSMを具現する。
様々な実装において、CMS400では様々なHSMバージョンが使用されてよい。例えば、HSMは、計算エンジン425、435、445、455、及び465のいずれか1つ以上の中にプラグインカードとして取り付けられる組込み型HSMを含み得る。かかる例示的実装において、組込み型HSMは、ペリフェラル・コンポーネント・インターコネクト(PCI)HSMとして、又はPCIエクスプレス(PCIe)HSMとして、計算エンジンのいずれか1つ以上に取り付けられてよい。また、例えば、CMS400内のHSMは、専用の筐体に入って計算エンジンから独立したネットワーク取り付け型又はネットワーク接続型の外付けHSMをも含み得る。
当業者なら、図4A及び図4Bに示されたコンポーネント、プロセス、データ、工程、及び実装の詳細が、説明を簡潔かつ明確にするために提示された例であることを認めるであろう。この例は制限することを意図しておらず、また数多くのバリエーションが可能であるため、本発明の原理から逸脱せずに、別のコンポーネント、プロセス、実装の詳細、及びバリエーションを使用することもできる。
図5A及び図5Bはともに、本発明の実装と一致する、証明書などのクレデンシャルをセキュアに提供する例示的プロセス500を示すスイムレーン図である。様々な実装において、示されているプロセス500又は工程の一部又は全部は、汎用コンピューティングシステム(1つ以上のプロセッサ、又は1つ以上のコンピューティングサブシステムを含み得る)上で実行するコードによって、ハードウェアのみのシステムによって、又はこれら2つのハイブリッドであるシステムによって、遂行されてよい。図5A及び図5Bの上部にまたがって示されているように、プロセス500に関わるエンティティは、製造業者105にあるディストリビュータ装置108と、CMSホストの登録局420と、結合局450、460と、匿名証明書局440と、加入証明書局430とを含む。様々な実装において、これらのエンティティは、図4A及び図4Bに関して説明されている通りであってよく、また本開示の全体を通じて説明されている通りであってよく、互いに通信してよい。
図5Aの例に示されているように、プロセス500は加入関連の工程505〜535で始まる。加入証明書局430の第一の役割は、登録局420からの要求を履行して、エンドユーザ装置に、例えば、ディストリビュータ装置108などに、加入証明書を発行することである。加入関連の工程505〜535を参照して後述するように、加入証明書局430は、要求された加入証明書をディストリビュータ装置108に発行するために、登録局420と直接やり取りする。
505では、製造業者105のディストリビュータ装置108が装置106aにプロビジョニングされる(例えば、装置106aによって使用される)加入証明書を登録局420に要求し、この要求は加入証明書の行先にあたる装置106aを特定できる。要求は、例えば、新しい装置106A(例えば、新しい製品)のために加入証明書を要求している製造業者105のディストリビュータ装置108であってよい。図2を参照して上述したように、加入証明書は、そのホルダをエコシステム内の認可されたパーティシパントとして識別する公開鍵証明書であり、このエコシステムの中では、全てのパーティシパントが有効な加入証明書を共有しなければならず、(例えば、米国運輸省のV2Xエコシステムなど)、認可されたパーティシパントは、エコシステム内での装置106の通信及び工程を可能にする匿名証明書を受け取ることもできる(例えば、米国運輸省のV2Xエコシステムの例で、車両と沿道インフラとの通信及び工程を可能にするため)。
510では、加入証明書の要求が登録局420で受信され、その後、登録局420から加入証明書局430へ送信される。様々な実装において、この工程は、署名の検証、未承認装置のリスト(例えば、ブラックリスト)を使用して加入証明書の行先にあたる装置(例えば、装置106a)の取り消し状況をチェックすること、要求元(例えば、ディストリビュータ装置108)が登録局420に加入証明書を要求することが可能であるか否かを判断することなど、登録局420が要求を復号して検証する作業を伴う場合がある。例えば、工程510は、製造業者105のユーザが認可されたユーザ(例えば、スタッフ109の一員)であるか否かを判断することを含んでよい。一部の実装において、登録局420は510で、加入証明書を受け取る装置106a(例えば、製品)がシステム100での使用が承認されているか否かも判断してよい。場合によっては、承認済み装置のリスト(例えば、ホワイトリスト)が図1の調整業者140によって提供されてよく、この判断を下すためにプロビジョニングコントローラ120によって使用されてよい。加入証明書の要求が検証された後は、登録局420から加入証明書局430へ要求が送信される。この要求は、登録局420によって作成される加入証明書生成要求として送信されてよい。
515では、加入証明書の要求が加入証明書局430で受信される。要求の受信に応答し、520で、加入証明書局430は要求された加入証明書を生成し、生成した加入証明書を登録局420へ送り返す。525では、加入証明書が登録局420で受信され、530では、登録局420が加入証明書をディストリビュータ装置108へ送信する。535では、ディストリビュータ装置108が加入証明書を受信する。この時点で、ディストリビュータ装置108は装置(例えば、装置106a)に加入証明書をプロビジョニングでき、これにより装置は加入証明書を使用できるようになり、加入関連の工程は完了する。
工程540〜599は匿名証明書のプロビジョニングに関する。540では、ディストリビュータ装置108が登録局420に匿名証明書を要求する。これらの匿名証明書は装置106aにプロビジョニングされるものであり(例えば、装置106aによって使用されるものであり)、この要求は匿名証明書の行先にあたる装置106aを特定できる。要求は、例えば、先に加入証明書を受け取ったコンピュータ化装置(例えば、加入された装置106A)のために匿名証明書を要求している製造業者105のディストリビュータ装置108であってよい。匿名証明書はある程度の数量(例えば、1週間分、1カ月分、又は1年分)の公開鍵証明書を含む。
545では、匿名証明書の要求が登録局420で受信され、登録局420はその後、匿名証明書のプロビジョニングを開始する。
工程550〜570では、結合局450、460が、結合値の要求を履行するために、登録局420と直接やり取りする。550では、登録局420が第1の結合値セット(LA1)を求める要求を結合局1 450へ送信する。
555では、第1の結合値セットの要求の受信に応答して、結合局1 450が第1の結合値セットを生成して登録局420へ送信する。557では、第1の結合値セットが登録局420で受信される。560では、登録局420が第2の結合値セット(LA2)を求める要求を結合局2 460へ送信する。
次に、図5Bに示されているように、565では、第2の結合値セットの要求の受信に応答して、結合局2 460が第2の結合値セットを生成して登録局420へ送信する。570では、第2の結合値セットが登録局420で受信される。
いくつかの実装において、図5A及び図5Bに示された結合局450、460は、取り消しの目的のために、証明書要求元の識別情報(すなわち、証明書要求元の装置の一意な識別子)を発行された匿名証明書に結び付けることができる。すなわち、結合局1 450と結合局2 460は、証明書要求元の装置の一意な識別子として、第1及び第2のセット結合値を、プロセス500の一部として匿名証明書局440によって発行された匿名証明書にそれぞれ提供する。結合局1 450と結合局2 460は、工程550及び560で登録局420から送信される結合値の要求を受信し、その後、要求された結合値を工程555及び565で登録局420に提供する。
非限定的な例示的実装において、工程550〜570でやり取りされる結合値の要求とそれらの要求に対する応答は、以下に示すヘッダー項目とペイロードデータ項目を有するメッセージを含んでよい。
# Registration Authority(RA)−>Linkage Authority−x(LA−x):Initial Linkage Seed Request {
header:{
msgID:mt.MSG_RA_LA_LINKAGE_SEED_REQUEST_MSG,
taskPosition:‘‘Linkage Authority number 1 or 2’’
},
payload:{
identifier:‘‘Message identifier’’,
iMin:Number,
iMax:Number,
jMax:Number
}
}
# LA−x−>RA:Initial Linkage Seed Response {
header:{
msgID:mt.MSG_LA_RA_LINKAGE_SEED_RESPONSE_MSG,
taskPosition:‘‘Linkage Authority number 1 or 2’’
},
payload:{
identifier:‘‘Incoming Message identifier’’,
linkageChainIdentifier:‘‘Linkage Chain ID−−HashedId8 of AES CCM Encrypted Linkage Seed’’,
iMin:Number,
iMax:Number,
jMax:Number
}
}
# RA−>LA−x:PreLinkage Value Chain Request(Chunked 10 iRange at a time){
header:{
msgID:mt.MSG_RA_LA_PRE_LINKAGE_VALUE_REQUEST_MSG,
iRangeSegmentChunkSize:‘‘set to 10’’,
currentIRangeSegment:‘‘Index of segment in total request’’,
taskPosition:‘‘Linkage Authority number 1 or 2’’
},
payload:{
identifier:‘‘Incoming Message identifier’’,
linkageChainId:‘‘Linkage Chain ID to use to create P Linkage Values(PLVs)’’,
iMin:Number,
iMax:Number,
jMax:Number
}
}
# LA−x−>RA:PreLinkage Value Chain Response {
header:{
msgID:mt.MSG_LA_RA_PRE_LINKAGE_VALUE_RESPONSE_MSG,
iRangeSegmentChunkSize:‘‘set to 10’’,
currentIRangeSegment:‘‘Index of segment in total request’’,
taskPosition:‘‘Linkage Authority number 1 or 2’’
},
payload:{
identifier:‘‘Incoming Message identifier’’,
preLinkageValues:Array of Encryped Prelinkage values for this segment of i,j tuples,
linkageChainIdentifier:‘‘Linkage Chain ID to use to create P Linkage Values(PLVs)’’,
iMin:Number,
iMax:Number,
jMax:Number
}
}
図5Bを引き続き参照すると、575では、登録局420が匿名証明書の要求を匿名証明書局430へ送信する。この要求は、登録局420によって作成される一まとまりの匿名証明書生成要求として送信されてよい。
580では、匿名証明書の要求が匿名証明書局430で受信される。要求の受信に応答し、585で、匿名証明書局430は要求された匿名証明書を生成し、生成した匿名証明書を登録局420へ送り返す。590では、匿名証明書が登録局420で受信される。
595で、ディストリビュータ装置108は、要求した匿名証明書が準備できているか(すなわち、生成され利用できるか)否かを問い合わせるため、登録局420に複数の要求を送信できる。いくつかの実装において、工程595の問い合わせは、工程540で匿名証明書の要求が送信された後に随時送信されてよい。例えば、ディストリビュータ装置108は、工程540で匿名証明書の要求を登録局420へ送信した後に、要求した匿名証明書が準備できているか否かを判断するために、定期的に登録局420へ問い合わせを送信できる。この例において、工程595の問い合わせのいずれか1つ以上は、工程545〜590と並行して(すなわち、匿名証明書が生成されている間に)送信されてもよい。
598では、匿名証明書が準備できると、登録局420が匿名証明書をディストリビュータ装置108へ送信する。599では、ディストリビュータ装置108が匿名証明書を受信する。この時点で、ディストリビュータ装置108は装置(例えば、装置106a)に匿名証明書をプロビジョニングでき、これにより装置は匿名証明書を使用できるようになり、匿名証明書をプロビジョニングする工程は完了する。
いくらかの非限定的な例示的実装において、工程575〜590でやり取りされる匿名証明書の要求とそれらの要求に対する応答は、以下に示すヘッダー項目とペイロードデータ項目を有するメッセージを含んでよい。
# Registration Authority(RA)−>Pseudonym Certificate Authority(PCA):Generate an individual Certificate {
header:{
msgID:mt.MSG_RA_PCA_CERT_REQUEST_MSG,
iRangeSegmentChunkSize:‘‘set to 10’’
},
payload:{
identifier:‘‘hash of payload minus this field’’
i:Number,
plv1:‘‘Encrypted PLV from LA1’’,
plv2:‘‘Encrypted PLV from LA2’’,
seedPublicKey:‘‘Seed Verify Public key’’,
encryptKey:‘‘Seed Encrypt Public key’’,
startSeconds:‘‘start time for this certificate’’,
endSeconds:‘‘end time for this certificate’’,
region:‘‘requested region’’,
certRequestPermissions:‘‘the cert request permissions from the enrollment cert(will be turned into app permissions)’’
}
}
# PCA−>RA:Certificate Response
{
header:{
msgID:mt.MSG_PCA_RA_IDENTITY_CERT_RESPONSE_MSG
},
payload:{
data:‘‘Signed and Encrypted SCMS certificate response’’,
identifier:‘‘hash of original payload request’’
}
}
図6A及び図6Bはともに、本発明の実装と一致する、双方向メッセージキュー610、611、612、613、614、615、616、617、618、619を備えた拡張可能でセキュアなCMS600を実装する例示的アーキテクチャのブロック図である。
図4A及び図4Bを参照して上述したCMS400と同様、拡張可能なCMS600の様々な実装は、超大量装置トランザクション及び証明書生成処理に利用されてよい。一部の実装において、拡張可能なCMS600は、複数のサーバ、HSM、複数の計算エンジン又はコンピューティングエンジン、及び複数のアプリケーションプラットフォーム(例えば、VM又はハードウェアプラットフォーム)を使用して実装されてよい。図6A及び図6Bに示された例示的実装において、アプリケーションプラットフォームは1つ以上の仮想マシン(VM)を各々含んでよい。追加の実装又は代替の実装において、アプリケーションプラットフォームは各々、1つ以上のハードウェアプラットフォーム、例えば、サーバ、コンピュータ、又はソフトウェアアプリケーションを実行できる他のコンピュータハードウェアなどを含んでよい。拡張可能なCMS600の例は、プライベートデータセンター、AmazonのAmazonウェブサービス(AWS)などのクラウドデータセンター、又はプライベートデータセンターとクラウドデータセンターのハイブリッドで実装されてよい。簡潔にするため、以下では、図4A及び図4Bと比べた図6A及び図6Bの違いだけを説明する。
図6Aの例に示されているように、CMS600のアーキテクチャは、望ましくは別々のサーバで実装される2つのプロビジョニングコントローラ602、すなわち一次プロビジョニングコントローラと待機プロビジョニングコントローラとを含んでよい。2つのプロビジョニングコントローラ602は図4Aのプロビジョニングコントローラ102と同様の機能を含んでいるため、図4Aを参照して上述したように、一次プロビジョニングコントローラに収容されているオブジェクト、データなどは、フェイルオーバーの目的のため、待機(二次)プロビジョニングコントローラにコピー又は収容される。いくつかの実装において、プロビジョニングコントローラ602はDLMコントローラ、例えば、一次及び待機DLMコントローラであってよい。様々な実装において、プロビジョニングコントローラ602は、CMS600内の各種コンポーネントごとに存在するコントローラであってよい。図6A及び図6Bの例において、プロビジョニングコントローラ602は、登録局620、加入証明書局430、匿名証明書局440、及び結合局450、460のために存在する一対のコントローラ(例えば、一次及び待機)であってよい。
図6A及び図6Bに示されているように、拡張可能なCMS600のアーキテクチャは、RESTウェブサービスとして実装された登録局605、登録局620、登録局計算エンジン625、加入証明書局630、加入証明書局計算エンジン635、匿名証明書局640、匿名証明書局計算エンジン645、結合局1 650、結合局1計算エンジン655、結合局2 660、結合局1計算エンジン665、双方向メッセージキュー610、611、612、613、614、615、616、617、618、619、及びデータベース670を含む。
拡張可能なCMS600のアーキテクチャは、セキュリティ機能から非セキュリティ関連アプリケーションを有利にも分離する。図6A及び図6Bの非限定的例に示されているように、登録局620、加入証明書局630、匿名証明書局640、及び結合局650、660は、いずれも非セキュリティ関連アプリケーション及び機能から独立した各自の専用計算エンジン625、635、645、655、及び665上で実行する各自のVM上のアプリケーションとして実装されている。これは、HSMの性能が遅い、又はクラウドサービスプロバイダがHSMを供給できない、又はその適正HSM管理が不確かである、従来のシステムを凌ぐ、技術的な利点及び進歩とセキュリティ上の利点及び進歩の両方を提供する。拡張可能なCMS600では、HSMを必要とする全ての暗号操作が計算エンジン(例えば、計算エンジン625、635、645、655、及び665のいずれか1つ以上)で遂行される。すなわち、CMS600では、HSMを必要とする全ての暗号操作が計算エンジンで遂行される。
図6A及び図6Bに示されているように、重要なセキュリティ機能を互いに分離することにより、また別々の計算エンジンに分離することにより、例えば、登録局620、加入証明書局630、匿名証明書局640、及び結合局650、660によって遂行される計算が多い暗号機能やセキュリティ機能は、既存の登録局システムより大幅に速く遂行される。この設計は、「ボトルネック」となるアプリケーションを必要に応じて個別に拡張可能とすることによって、トランザクション処理の大幅改善を可能にする。例えば、登録局605及び620で実行する登録局アプリケーションが拡張する必要がある場合は、さらなるアプリケーションプラットフォーム(例えば、VM又はハードウェアプラットフォーム)を追加でき、登録局計算エンジン625のセキュア計算能力に変更を加える必要はない。また、例えば、セキュリティ計算が性能を制限している場合は、さらなるセキュア登録局計算エンジン625を追加できる。CMS600の他のコンポーネントにもこれと同じ多次元拡張が当てはまる。
図6A及び図6Bに示された例では、双方向メッセージキュー610、611、612、613、614、615、616、617、618、及び619によって登録局605が他のコンポーネントに接続されており、かつ他のコンポーネントが互いに接続されている。図6A及び図6Bの例示的実装で、双方向メッセージキュー610、611、612、613、614、615、616、617、618、及び619は双方向性であるから、メッセージはこれらのキューの中で2方向に(例えば、クライアントとサーバとの間を)流れる。これは、メッセージキューの中で保留になっている応答から新たな要求を分離するという性能上のメリットを提供する。双方向メッセージキュー610、611、612、613、614、615、616、617、618、619を使用してアプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)と計算エンジンを互いに通信可能なように接続することによって、アプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)と計算エンジンは個別に拡張できる。CMS600では、登録局620、加入証明書局630、匿名証明書局640、及び結合局650、660の各アプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)がそれぞれの双方向メッセージキューセットを通じて計算エンジン625、635、645、655、及び665へ通信可能なように接続されている。
CMS600では、登録局605(並びに、「DB」の矢印が示された図6A及び図6Bの他のコンポーネント)がデータベース670へ接続されてよい。好適な実装において、データベース670は高速アクセスで低待ち時間のデータベースである。いくつかの実装において、データベース670はNoSQLデータベースであってよく、あるいは、例えば、Amazonウェブサービスによって提供されているDynamoDBデータサービスなどのデータベースサービスであってよい。様々な実装において、データベース670に保存されるデータはアプリケーション次第であるが、発行済み証明書、様々な結合局の値(例えば、結合値)、証明書が発行された装置に関するデータ、作業者の行為などを含み得る。データは、暗号化されていない状態で、暗号化された状態で、又はこれらの状態の組み合わせで、保存されてよい。
様々な実装において、登録局605によって作成されるデジタル証明書は、別々のセグメント、例えば、加入デジタル証明書と匿名デジタル証明書に分割されるため、拡張可能なCMS600は加入証明書局630と匿名証明書局640とを含む。
加入証明書局630について図6Aで3つの「積み重なった」長方形で示されているように、一部の実装においては、同時に実行する加入証明書局630の複数インスタンスがあってよい。これは、図6A及び図6Bの他の「積み重なった」要素についても同様に表現されている。加入証明書局630は、加入証明書を求める複数の要求を登録局620から受信することがある。
様々な実装において、計算エンジン625、635、645、655、及び665とプロビジョニングコントローラ602はHSMを含んでいるため、これらのコンポーネントは、ハッカーに不当に脅かされることなくセキュアな計算を実行できる。一部の実装において、計算エンジン625、635、645、655、及び665は、組込み型HSMを必要とせず自主的にセキュアな計算を実行するように設計されてもよく、かかる実装では、計算エンジンがHSMを具現する。
当業者なら、図6A及び図6Bに示されたコンポーネント、プロセス、データ、工程、及び実装の詳細が、説明を簡潔かつ明確にするために提示された例であることを認めるであろう。この例は制限することを意図しておらず、また数多くのバリエーションが可能であるため、本発明の原理から逸脱せずに、別のコンポーネント、プロセス、実装の詳細、及びバリエーションを使用することもできる。
図7A及び図7Bはともに、本発明の実装と一致する、ロードバランサ710、711、712、713、714、715、716、717、718、719を備えた拡張可能でセキュアなCMS700を実装する例示的アーキテクチャのブロック図である。
図4及び図6を参照して上述したCMS400及び600と同様、拡張可能なCMS700の様々な実装は、超大量装置トランザクション及び証明書生成処理に利用されてよい。簡潔にするため、以下では、図4及び図6と比べた図7A及び図7Bの違いだけを説明する。図7A及び図7Bに示された例示的実装では、アプリケーションプラットフォームが1つ以上の仮想マシン(VM)を含むものとして示されている。追加の実装又は代替の実装において、アプリケーションプラットフォームは各々、1つ以上のハードウェアプラットフォーム、例えば、アプリケーションサーバ、サーバファーム、クラウドベースのサーバ、アプリケーション工程を遂行するように構成されたプロセッサ、又はソフトウェアアプリケーションを実行できる他のコンピュータハードウェアなどを含んでよい。
図7Aの例に示されているように、CMS700のアーキテクチャは、望ましくは別々のサーバで実装される2つのプロビジョニングコントローラ702、すなわち一次プロビジョニングコントローラと待機プロビジョニングコントローラとを含んでよい。2つのプロビジョニングコントローラ702はそれぞれ、図4A及び図6Aのプロビジョニングコントローラ120及び602と同様の機能を含む。すなわち、図4Aを参照して上述したように、一次プロビジョニングコントローラに収容されているオブジェクト、データなどは、フェイルオーバーの目的のため、待機(二次)プロビジョニングコントローラにコピー又は収容される。
図7A及び図7Bに示されているように、拡張可能なCMS700のアーキテクチャは、RESTウェブサービスとして実装された登録局705、登録局720、登録局計算エンジン725、加入証明書局730、加入証明書局計算エンジン735、匿名証明書局740、匿名証明書局計算エンジン745、結合局1 750、結合局1計算エンジン755、結合局2 760、結合局1計算エンジン765、ロードバランサ710、711、712、713、714、715、716、717、718、719、及びデータベース770を含む。
図4及び図6のCMS400及びCMS600と同様、拡張可能なCMS700のアーキテクチャは、セキュリティ機能から非セキュリティ関連アプリケーションを有利にも分離する。図7A及び図7Bの非限定的例に示されているように、登録局720、加入証明書局730、匿名証明書局740、及び結合局750、760は、いずれも非セキュリティ関連アプリケーション及び機能から独立した各自の専用計算エンジン725、735、745、755、及び765上で実行する各自のVM上のアプリケーションとして実装されている。拡張可能なCMS700では、HSMを必要とする全ての暗号操作が計算エンジン(例えば、計算エンジン725、735、745、755、及び765のいずれか1つ以上)で遂行される。CMS700では、HSMを必要とする全ての暗号操作が計算エンジンで遂行される。
図7A及び図7Bに示されているように、重要なセキュリティ機能を互いに分離することにより、また別々の計算エンジンに分離することにより、例えば、登録局720、加入証明書局730、匿名証明書局740、及び結合局750、760によって遂行される計算が多い暗号機能やセキュリティ機能は、公知の登録局ソリューションより大幅に速く遂行される。この設計は、サーバの処理能力や保存容量に束縛されず、「ボトルネック」となるアプリケーションを必要に応じて個別に拡張可能とすることによって、トランザクション処理の大幅改善を可能にする。例えば、登録局705及び720で実行する登録局アプリケーションが拡張する必要がある場合は、さらなるアプリケーションプラットフォーム(例えば、VM又はハードウェアプラットフォーム)を追加でき、登録局計算エンジン725のセキュア計算能力に変更を加える必要はない。また、例えば、セキュリティ計算が性能を制限している場合は、さらなるセキュア登録局計算エンジン725を追加できる。CMS700の他のコンポーネントにもこれと同じ多次元拡張が当てはまる。
図7A及び図7Bに示された例では、ロードバランサ710、711、712、713、714、715、716、717、718、及び719によって登録局705が他のコンポーネントに接続されており、かつ他のコンポーネントが互いに接続されている。図7A及び図7Bの例示的実装において、ロードバランサ710、711、712、713、714、715、716、717、718、及び719は、(例えば、VM上で実行する)仮想ロードバランサとして、又は専用のハードウェアによって、実装されてよい。図7A及び図7Bに見られるように、CMS700では、ロードバランサ710、711、712、713、714、715、716、717、718、及び719の各々が、類似する種類のVM又は計算エンジンから成る各グループの手前に挿入されている。これは、1つ又は複数のクライアントに単一のサーバエンドポイントだけを認識させ、ある特定の要求をどのサーバが処理するかをロードバランサが決めるというメリットを提供する。このように、ロードバランサ710、711、712、713、714、715、716、717、718、719はアプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)と計算エンジンを互いに通信可能なように接続する。CMS700では、登録局720、加入証明書局730、匿名証明書局740、及び結合局750、760の各アプリケーションプラットフォームがそれぞれのロードバランサセットを通じて計算エンジン725、735、745、755、及び765へ通信可能なように接続されている。
様々な実装において、登録局705によって作成されるデジタル証明書は、別々の部分に、例えば、加入デジタル証明書と匿名デジタル証明書に分割されるため、拡張可能なCMS700は加入証明書局730と匿名証明書局740とを含む。
匿名証明書局740について図7Aで3つの「積み重なった」長方形で示されているように、様々な実装においては、同時に実行する匿名証明書局740の複数インスタンスがあってよい。これは、図7A及び図7Bの他の「積み重なった」要素についても同様に表現されている。匿名証明書局740は、一まとまりの匿名証明書を求める複数の要求(例えば、1週間、1カ月、又は1年分の匿名証明書を求める要求)を登録局720から受信することがある。
当業者なら、図7A及び図7Bに示されたコンポーネント、プロセス、データ、工程、及び実装の詳細が、説明を簡潔かつ明確にするために提示された例であることを認めるであろう。この例は制限することを意図しておらず、また数多くのバリエーションが可能であるため、本発明の原理から逸脱せずに、別のコンポーネント、プロセス、実装の詳細、及びバリエーションを使用することもできる。
図8は、本発明の実装と一致する、ラウンドロビン要求を伴う拡張可能でセキュアなCMSを実装するシステム800の一例のブロック図である。簡素にするため、図8には、1つのセットのアプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)820、830、840、850と、1つのセットの計算エンジン825、835、845、855だけが示されている。なお、図8のアプリケーションプラットフォーム820、830、840、850と計算エンジン825、835、845、855は、図7を参照して上述した登録局720、加入証明書局730、匿名証明書局740、及び結合局750、760のいずれかを実装するために使用される1つのセットのアプリケーションプラットフォーム及び計算エンジンのいずれであってよい。図7のCMS700と同様、システム800では、HSMを必要とする全ての暗号操作が計算エンジンで遂行され、アプリケーションプラットフォームと計算エンジンはいずれも個別に拡張する。
図8を引き続き参照すると、ラウンドロビンとは、利用可能な各サーバ(例えば、各計算エンジン)に関する知識を使用することを指す。システム800で送信されるラウンドロビン要求は、利用可能な計算エンジン(例えば、計算エンジン825、835、845、855)に関する知識を使用して、当該1つのセットの計算エンジンに送信される要求とメッセージを配信する。
システム800におけるラウンドロビン要求の順序を明確に説明するため、アプリケーションVM850で利用できる拡大された1つのセットの計算エンジン865、875、885、895が示されている。図8の例には、「n」個のアプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)があり、「m」個の利用可能な計算エンジンがある。計算エンジンに対して要求を行いたいクライアント(例えば、アプリケーションVM895)は、図8に示された順序でこれを行う。図示されているように、アプリケーションVM895からの第1の要求はCE1(計算エンジン865)に至り、第2の要求はCE2(計算エンジン875)に至り、以降も同様に続く。最後のCEであるCEm(計算エンジン895)に達すると、クライアント(アプリケーションVM895)はCE1からやり直す。
システム800では、全てのクライアント(例えば、アプリケーションプラットフォーム820、830、840、850)が通信する必要のある相手方の全サーバ(例えば、1つのセットの利用可能な計算エンジン)を認識している。それぞれのクライアントはそれぞれのサーバに対してラウンドロビン要求を行い、これにより作業負荷は、有利にも全てのサーバにわたって均一に分散される。いくつかの実装においては、計算エンジンで作業負荷を均一に分散するため、図7に示されたCMS700のロードバランサ710、711、712、713、714、715、716、717、718、719が計算エンジンにラウンドロビン要求を送信できる。
図9は、本発明の実装と一致する、作業負荷に基づく要求を伴う拡張可能でセキュアなCMSを実装するシステム900の一例のブロック図である。簡潔にするため、以下では、図7及び図8と比べた図9の違いだけを説明する。
図8と同様、簡素かつ明確にするため、図9には、1つのセットのアプリケーションプラットフォーム920、930、940、950と、1つのセットの計算エンジン925、935、945、955だけが示されている。なお、図9のアプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)920、930、940、950と計算エンジン925、935、945、955は、図7を参照して上述した登録局720、加入証明書局730、匿名証明書局740、及び結合局750、760のいずれかを実装するために使用される1つのセットのアプリケーションプラットフォーム及び計算エンジンのいずれかであってよい。図7のCMS700と同様、システム900では、HSMを必要とする全ての暗号操作が計算エンジンで遂行され、アプリケーションプラットフォーム(例えば、VM及び/又はハードウェアプラットフォーム)と計算エンジンはいずれも個別に拡張する。
図9を引き続き参照し、作業負荷分散手法は、使用される各サーバの作業負荷を伝える情報を第1のクエリーに加えることによって可能となる。この作業負荷分散手法は、利用可能な各サーバ(例えば、各計算エンジン)の作業負荷に関する知識を利用するので、作業負荷に基づく手法である。システム900で送信される要求は、利用可能な計算エンジン(例えば、計算エンジン925、935、945、955)の現在の作業負荷に関する知識を使用して、当該1つのセットの計算エンジンに送信される要求とメッセージを配信する。システム900では、それぞれの計算エンジンの報告された作業負荷に基づいて計算エンジンへ要求が送信される。
システム900における作業負荷に基づく要求を明確に説明するため、各自の作業負荷をアプリケーションVM950に報告する拡大された1つのセットの計算エンジン965、975、985、995が示されている。図9の例では、「m」はアプリケーションプラットフォームの数であり、「n」は各自の作業負荷を報告する計算エンジンの数である。図9の例では、作業負荷がパーセンテージで報告されており、計算エンジン975の30%作業負荷は、計算エンジン975が自身の全能力の30%で現在稼働していることを意味する。同様に、計算エンジン965、985、及び995によって報告される80%の作業負荷は、これらの計算エンジンが自身の全能力の80%で現在稼働していることを意味する。いくつかの実装において、ある特定の計算エンジンによって報告される現在の作業負荷は、当該計算エンジンに組み込まれたHSMの作業負荷を表す。例えば、暗号操作を遂行するにあたって、計算エンジンの処理能力がそのHSMの能力によって束縛又は制約される場合は、当該計算エンジンによって報告される作業負荷のパーセンテージがHSMの現在の作業負荷を反映できる。例えば、計算エンジン975によって使用されているHSMがその処理能力の30%で稼働している場合、計算エンジン975は、自身がその全能力の30%で稼働していることを報告できる。一部の実装において、作業負荷パーセンテージは、サーバ(例えば、計算エンジン)の処理能力、通信能力(例えば、直接通信リンク又は無線モジュールに利用できる帯域幅の尺度)、及びストレージ/メモリ容量の加重尺度であってよい。一例において、処理能力と通信能力とメモリ容量には等しい3分の1の重みが与えられてよい。この例で、計算エンジン975がその中央処理装置(CPU)能力の25%と、その通信能力の35%と、その利用可能なメモリ又はストレージの30%を使用している場合、計算エンジン975は自身の作業負荷が30%であると報告する。
いくつかの実装においては、計算エンジンの環境測定値が加重され、作業負荷の測定値と併せて考慮されてよい。例えば、計算エンジンの全体的な健全性を示す測定値が求められ、当該計算エンジンの作業負荷の測定値と共に報告されてよい。いくつかの例において、ある特定の計算エンジンの健全性を示す測定値は、当該計算エンジンの動作温度(例えば、温度センサーからの平均より高い温度値は、CPU、メモリモジュール、又はディスクドライブが熱による動作停止や誤動作を被る可能性があることを意味し得る)、計算エンジンの筐体内の湿度レベル、再起動又はリブートの頻度(例えば、熱による動作停止やクラッシュ)、最後の再起動からの経過時間、最近の期間中(例えば、前日、先週、又は先月)に起きたディスク故障やメモリ障害の数、計算エンジンの予定されたメンテナンス作業までの時間(例えば、ソフトウェアやファームウェアの更新、欠陥ハードウェアコンポーネントの交換)、計算エンジンが予備電源で稼働していることを伝える情報、又は計算エンジンの電源の最後の停電又は電圧低下からの持続時間のいずれか1つ以上の関数であってよい。
追加の実装又は代替の実装においては、他の重み、尺度、及び基準を使用して計算エンジンの作業負荷を決定してよい。例えば、暗号操作を遂行する計算エンジンがこれまで通信能力やメモリ容量より多大な制約をCPU能力から受けている場合、それらの計算エンジンについて総作業負荷パーセンテージを割り出すときに、CPU能力に他の能力/容量より大きい重みを与えることができる。
システム900において、計算エンジンに対して要求を行いたいクライアント(例えば、アプリケーションVM995)は、計算エンジンによって報告される作業負荷に基づいてこれを行う。図9の例では、アプリケーションVM995からの次の要求は、30%という比較的低い作業負荷に基づいてCE2(計算エンジン975)に至る。すなわち、計算エンジン975の作業負荷が1つのセットの計算エンジン965、975、985、995の中で最も低いからである。アプリケーションVM995から計算エンジンへ次の要求が送信されるときは、いずれも等しい80%の作業負荷を現在報告しているCE1(計算エンジン965)、又はCE3(計算エンジン985)、又はCEm(計算エンジン995)のいずれかが使用されてよい。利用可能な各計算エンジンが同じか同様の作業負荷を報告している場合は、一連の要求を使用して、負荷が等しいこれらの計算エンジンにわたって負荷を均等に分散することができる。すなわち、利用可能な各計算エンジンが実質的に等しいか等しい作業負荷を報告している場合は、図8を参照して上述した要求を使用できる。時間が経つにつれて作業負荷が変化したら、クライアント(アプリケーションVM995)は以降の要求を利用可能で負荷が最も小さい計算エンジンへ送信する。
システム900では、全てのクライアント(例えば、アプリケーションプラットフォーム920、930、940、950)が通信する必要のある相手方の全サーバ(例えば、1つのセットの利用可能な計算エンジン)の作業負荷を認識している。それぞれのクライアントはそれぞれのサーバに作業負荷のクエリーを提出し、報告される作業負荷をもとにして全てのサーバにわたって作業負荷を有利にも均一に分散することができる。いくつかの実装においては、計算エンジンで作業負荷を均一に分散するため、図7に示されたCMS700のロードバランサ710、711、712、713、714、715、716、717、718、719が作業負荷に基づく要求を計算エンジンへ送信できる。
図10A及び図10Bはともに、本発明の実装による、拡張可能でセキュアな証明書管理システム(CMS)400を実装する例示的アーキテクチャのブロック図である。簡潔にするため、以下では、図4A及び図4Bと比べた図10A及び図10Bの違いだけを説明する。
図10Aの例に示されているように、CMS1000のアーキテクチャは、望ましくは別々のサーバで実装される2つのプロビジョニングコントローラ1002、すなわち一次プロビジョニングコントローラと待機プロビジョニングコントローラとを含んでよい。2つのプロビジョニングコントローラ1002は、それぞれ図4A及び図6Aのプロビジョニングコントローラ120及び602と同様の機能を含む。すなわち、図4Aを参照して上述したように、一次プロビジョニングコントローラに収容されているオブジェクト、データなどは、フェイルオーバーの目的のため、待機(二次)プロビジョニングコントローラにコピー又は収容される。
図10A及び図10Bに示されているように、CMS1000のアーキテクチャは、RESTウェブサービスとして実装された登録局1005、登録局1020、計算エンジン1025、1035、1045、1050、1060、メッセージキュー1010、1012、1014、1016、1018、及びデータベース1070を含む。
CMS1000の例は、プライベートデータセンター、クラウドデータセンター、又はプライベートデータセンターとクラウドデータセンターのハイブリッドで実装されてよい。CMS1000の様々な実装は、超大量装置トランザクション及び証明書生成処理に利用されてよい。様々な実装において、CMS1000は、複数のサーバ、HSM、及びアプリケーションプラットフォームとして機能する複数の計算エンジン又はコンピューティングエンジンを使用して実装されてよい。すなわち、図10A及び図10Bに示されているように、登録局、証明書局、及び結合局の図示されたアプリケーションは各々、ソフトウェアアプリケーションをホストして実行できる1つ以上の計算エンジンを動作させる。
CMS1000は図4A及び図4Bを参照して上述したCMS400と同様であり、違いは、アプリケーションをホストして実行するために計算エンジン1025、1035、1045、1050、1060を使用する点にある。すなわち、CMS1000アーキテクチャはCMS400のアーキテクチャの代替案であり、登録局、加入証明書局、匿名証明書局、及び結合局のアプリケーションは、各自の専用計算エンジン1025、1035、1045、1050、1060上で実行する。CMS1000では、HSMを必要とする全ての暗号操作が計算エンジン(例えば、計算エンジン1025、1035、1045、1050、及び1060)で遂行され、計算エンジンは関連アプリケーションも実行する。有利なことに、アプリケーションと暗号操作を計算エンジン1025、1035、1045、1050、1060で実行することにより、CMS1000のアーキテクチャは必要なメッセージキューの数を減らす。
図10A及び図10Bの例で、計算エンジンは、登録局アプリケーションをホストして実行する登録局計算エンジン1025と、加入証明書局アプリケーションをホストして実行する働きをする加入証明書局計算エンジン1035と、匿名証明書局アプリケーションをホストして実行する働きをする匿名証明書局計算エンジン1045と、結合局1アプリケーションをホストして実行する結合局1計算エンジン1050と、結合局2アプリケーションをホストして実行する働きをする結合局2 1060とを含む。
図10A及び図10Bに示されているように、入力メッセージキュー1010、1012、1014、1016、1018を含むメッセージングサブシステム又はメッセージキューイングサービスによって登録局1005が他のコンポーネントに接続されており、かつ他のコンポーネントが互いに接続されている。図10A及び図10Bの例示的実装で、入力メッセージキュー1010、1012、1014、1016、1018は単方向性であるから、メッセージはこれらのキューの中で一方向に(例えば、クライアントからサーバへ)流れる。これは、それぞれのアプリケーションを各々ホストして実行する計算エンジンの各々につき単一の入力キューを設けることにより、簡素さという技術的なメリットを提供する。
入力メッセージキュー1010、1012、1014、1016、1018を使用して計算エンジンを互いに通信可能なように接続することにより、計算エンジンは必要に応じて個別に拡張できる。すなわち、登録局、加入証明書局、匿名証明書局、及び結合局アプリケーションのアプリケーションプラットフォームとして働く各計算エンジンは、それぞれの入力メッセージキューを通じて通信可能なように接続されているので、CMS1000のこれらのコンポーネントとデータベース1070はいずれも互いに個別に拡張する。
図11は、本発明の実装と一致するシステム及び方法を実装するために使用されてよい、コンピューティングシステム1100を含む、コンピューティング環境1101の一例のブロック図である。他のコンポーネント及び/又は機構が使用されてもよい。一部の実装においては、とりわけ図4及び図6〜図10のプロビジョニングコントローラ120、DAMS110、及び計算エンジン、並びに図7のロードバランサ710〜719など、図1〜図10の様々なコンポーネントを少なくとも部分的に実装するためにコンピューティングシステム1100が使用されてよい。一部の実装においては、図1〜図10のコンポーネントのいずれか1つを実装するため、コンピューティングシステム1100と同様の一連のコンピューティングシステムを特殊なハードウェアで各々カスタマイズしてよく、及び/又は特殊なサーバとして各々プログラミングしてよく、これらのコンポーネントはネットワーク1135を通じて互いに通信できる。
図11に示された例で、コンピューティングシステム1100は、CPU1105、メモリ1110、入力/出力(I/O)装置1125、ハードウェア・セキュリティ・モジュール(HSM)1140、不揮発性ストレージデバイス1120など、数々のコンポーネントを含む。システム1100は様々な形で実装されてよい。例えば、統合されたプラットフォーム(サーバ、ワークステーション、パーソナルコンピュータ、ラップトップなど)としての実装は、CPU1105と、メモリ1110と、不揮発性ストレージ1120と、I/O装置1125とを備えてよい。かかる構成では、コンポーネント1105、1110、1120、及び1125がローカルデータバスを通じて接続及び通信してよく、外部のI/O接続を通じて(例えば、別個のデータベースシステムとして実装された)データリポジトリ1130にアクセスしてよい。I/Oコンポーネント1125は、直接的な通信リンク(例えば、有線接続又はローカルwifi接続)を通じて、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(携帯電話網やインターネットなどのWAN)などのネットワークを通じて、及び/又は他の適当な接続を通じて、外部の装置に接続してよい。システム1100は独立型であってよく、あるいはより大規模なシステムのサブシステムであってもよい。
CPU1105は、Santa Clara,CAのIntel(登録商標)Corporationによって製造されているCore(登録商標)ファミリーに属するマイクロプロセッサ、又はSunnyvale,CAのAMD(登録商標)Corporationによって製造されているAthlon(登録商標)ファミリーに属するマイクロプロセッサなど、1つ以上の既知のプロセッサ又は処理装置であってよい。メモリ1110は、本発明の実装に関係する何らかの機能、方法、及びプロセスを遂行するためにCPU1105によって実行又は使用される命令と情報を保存するように構成された1つ以上の高速ストレージデバイスであってよい。ストレージ1120は、長期保存を目的とするCD及びDVD及びソリッド・ステート・デバイスなどのデバイスを含む、揮発性又は不揮発性、磁気式、半導体、テープ、光学式、又は他の種類のストレージデバイス又はコンピュータ可読媒体であってよい。
図示されている実装において、メモリ1110は、ストレージ1120から、又は遠隔地のシステム(図示せず)から、読み込まれた1つ以上のプログラム又はアプリケーション1115を収容し、1つ以上のプログラム又はアプリケーション1115は、CPU1105によって実行されると、本発明と一致する様々な工程、手順、プロセス、又は方法を遂行する。代わりに、CPU1105は、システム1100から遠隔の場所にある1つ以上のプログラムを実行してもよい。例えば、システム1100はネットワーク1135を通じて1つ以上の遠隔地のプログラムにアクセスしてよく、1つ以上の遠隔地のプログラムは、実行されると、本発明の実装に関係する機能及びプロセスを遂行する。
一実装において、メモリ1110は、プロビジョニングコントローラ120、DAMS110、及び/又はディストリビュータ装置118、131のために、本明細書で説明されている特殊な機能と工程を遂行するプログラム1115を含むことができる。一部の実装において、メモリ1110は、本発明に補助的機能を提供する他の方法やプロセスを実施する他のプログラム又はアプリケーションを含むこともできる。
メモリ1110は、本発明とは無関係の他のプログラム(図示せず)、及び/又はCPU1105によって実行されたときにいくつかの公知の機能を遂行するオペレーティングシステム(図示せず)で構成されてもよい。一例として、オペレーティングシステムは、Microsoft Windows(登録商標)、Unix(登録商標)、Linux(登録商標)、Apple Computers(登録商標)のオペレーティングシステム、又は他のオペレーティングシステムであってよい。オペレーティングシステムの選択は本発明にとって重要ではなく、オペレーティングシステムの使用すら本発明にとって重要ではない。
HSM1140は、独自のプロセッサを備え、デジタルセキュリティアセットをセキュアに生成し保存する、及び/又は様々な暗号計算や機密計算をセキュアに遂行する、装置であってよい。HSM1140は、暗号鍵などのデジタルセキュリティアセットや他の機密データを攻撃者によるアクセスから守る。一部の実装において、HSMは、コンピューティングシステム1100に直接取り付けられるプラグインカード又はボードであってよい。
I/O装置1125は、システム1100によるデータ受信及び/又は送信を可能にする1つ以上の入力/出力装置を備えてよい。例えば、I/O装置1125は、ユーザからのデータ入力を可能にする、キーボード、タッチスクリーン、マウス、及び同類のものなど、1つ以上の入力装置を含んでよい。さらに、I/O装置1125は、ユーザへのデータ出力又は提示を可能にする、表示画面、CRTモニター、LCDモニター、プラズマディスプレイ、プリンタ、スピーカ装置、及び同類のものなど、1つ以上の出力装置を含んでよい。I/O装置1125はまた、コンピューティングシステム1100が、例えばデジタル方式で、他のマシンや装置と通信することを可能にする、1つ以上のデジタル及び/又はアナログ通信入力/出力装置を含んでよい。別の構成及び/又は数の入力及び/又は出力装置がI/O装置1125に組み込まれてもよい。
図示された実装において、システム1100はネットワーク1135(インターネット、プライベートネットワーク、仮想プライベートネットワーク、セルラーネットワーク、又は他のネットワーク、又はこれらの組み合わせなど)に接続されており、ネットワーク1135は、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、クライアント装置、などをはじめとする様々なシステムやコンピューティングマシンに接続されてよい。概して、システム1100は、ネットワーク1135を通じて、外部のマシン及び装置からデータを入力でき、かつ外部のマシン及び装置にデータを出力できる。
図11に示された例示的な実装において、データソース1130は、データベース125など、システム1100外部の独立したデータベースである。別の実装において、データソース1130はシステム1100によってホストされてもよい。様々な実装において、データソース1130は、本発明と一致するシステム及び方法を実施するために使用されるデータを管理し保存することができる。例えば、データソース1130は、システム110によってプロビジョニングされる各装置116のステータス情報とログ情報、及び同類のものを包含するデータ構造を管理し保存することができる。
データソース1130は、情報を保存し、システム1100を通じてアクセス及び/又は管理される、1つ以上のデータベースを備えてよい。一例として、データベース1130は、Oracle(登録商標)データベース、Sybase(登録商標)データベース、又は他のリレーショナルデータベースであってよい。ただし、本発明と一致するシステム及び方法は、別個のデータ構造又はデータベースに限定されず、データベース又はデータ構造の使用にすら限定されない。
当業者なら、図11のシステムのコンポーネントと実装の詳細が、説明を簡潔かつ明確にするために提示された例であることを認めるであろう。他のコンポーネントや実装の詳細を使用することもできる。
前述の例では、説明を明確にするために、OBU、ECU、RSUといったコンピュータ化装置の具体例を使用しているが、本発明はそれらの具体例に限定されない。本発明と一致する様々な実装は、とりわけ医療装置(例えば、透析装置、注入ポンプなど)、ロボット、ドローン、自律走行車、無線通信モジュール(例えば、組込み型汎用集積回路カード(eUICC))などをはじめとする様々なコンピュータ化装置と共に利用されてよく、また様々なコンピュータ化装置のために利用されてよい。
本明細書で説明されているアプリケーションの様々な工程は、1つ以上のVMによって少なくとも部分的には遂行されてよい。追加の実装又は代替の実装において、本明細書で説明されているアプリケーションの工程は、該当する工程を遂行する形に、(例えば、ソフトウェアによって)一時的に構成された、又は永久的に構成された、1つ以上のプロセッサによって、少なくとも部分的には遂行されてよい。かかるプロセッサは、一時的に構成されたものであろうと永久的に構成されたものであろうと、本明細書で説明されている1つ以上のアプリケーションの工程、機能、及び役割を遂行する働きをするプロセッサ実装型モジュールを構成してよい。本明細書で使われている用語「プロセッサ実装型モジュール」は、1つ以上のプロセッサを使用して実装されたハードウェアモジュールを指す。
同様に、本明細書で説明されている方法は、少なくとも部分的にはプロセッサ実装型であってよく、ある特定の1つ又は複数のプロセッサはハードウェアの一例である。例えば、ある方法の複数工程の少なくとも一部は、1つ以上のプロセッサかプロセッサ実装型モジュールによって遂行されてよい。さらに、1つ以上のプロセッサは、「クラウドコンピューティング」環境の中で、又は「ソフトウェア・アズ・ア・サービス」(SaaS)として、該当する工程の遂行を支援する働きをしてもよい。例えば、複数工程の少なくとも一部は、一団のコンピュータ(プロセッサを含むマシンの例として)によって遂行されてよく、これらの工程は、ネットワーク(例えば、インターネット)を通じて、また1つ以上の適切なインターフェイス(例えば、API)を通じて、アクセス可能である。
いくつかの工程の遂行は、単一のマシンの中にあるばかりでなく、いくつかのマシンにわたって配備された、プロセッサの間で分散されてよい。一部の例示的実装において、プロセッサ又はプロセッサ実装型モジュールは、単一の地理的場所に(例えば、オフィス環境、製造環境、又はサーバファームの中に)置かれてよい。他の例示的実装において、プロセッサ又はプロセッサ実装型モジュールは、多数の地理的場所にまたがって分散されてもよい。
本発明の他の実装は、本明細書の考察と本明細書で開示されている発明の実施から当業者に明白となるであろう。本明細書と例は単なる例示とみなすべきものであり、本発明の真の範囲は以下の請求項によって示される。