JP7322176B2 - ブロックチェーンを用いたバージョン履歴管理 - Google Patents

ブロックチェーンを用いたバージョン履歴管理 Download PDF

Info

Publication number
JP7322176B2
JP7322176B2 JP2021562008A JP2021562008A JP7322176B2 JP 7322176 B2 JP7322176 B2 JP 7322176B2 JP 2021562008 A JP2021562008 A JP 2021562008A JP 2021562008 A JP2021562008 A JP 2021562008A JP 7322176 B2 JP7322176 B2 JP 7322176B2
Authority
JP
Japan
Prior art keywords
software
blockchain
block
software update
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021562008A
Other languages
English (en)
Other versions
JP2022529689A (ja
Inventor
エム. スミス,フレーザー
Original Assignee
サ-コス コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サ-コス コーポレイション filed Critical サ-コス コーポレイション
Publication of JP2022529689A publication Critical patent/JP2022529689A/ja
Application granted granted Critical
Publication of JP7322176B2 publication Critical patent/JP7322176B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Description

今日のデバイスは、しばしば、ソフトウェアアップデートを介して更新可能なソフトウェアを実行するように構成される。ソフトウェアアップデートは、例えば、セキュリティ問題が発生したときそれらに対処し、ソフトウェアで発見されたエラーに対処し、ハードウェア及び/又は周辺機器の動作を改善し、機器の新しいモデルのサポートを追加するためにリリースされることがある。これらのアップデートは、ソフトウェアの動作を改善し、ハードウェアの動作を改善し、ソフトウェア及びデバイスに新しい機能を追加することができる。例えば、ファームウェアアップデートは、プッシュプロトコルを使用してデバイスに送信することができ、ファームウェアアップデートを受信したことに応答して、デバイスは、更新されたファームウェアをデバイスにインストールするように構成することができる。
ブロックチェーン技術、又は単にブロックチェーンは、トランザクションのリストなどの情報を記憶するために使用できるデータ構造である。トランザクションは、ブロックに束ねることができ、各ブロック(最初のブロック又はジェネシスブロックを除く)は、ハッシュを使用してブロックチェーン内の前のブロックを逆に参照し、又は前のブロックにリンクされる。コンピュータノードはブロックチェーンを維持し、検証プロセスを使用してブロックチェーンに追加された各新しいブロックを暗号的に検証する。検証プロセスには、独立して立証することができ、時に「プルーフオブワーク」と呼ばれる計算上困難な問題を解くことを含むことができる。
ブロックチェーンのデータ完全性(例えば、前に記録されたトランザクションがモディファイされていないという信頼性)は、ブロックチェーン内の各ブロックが前のブロックの暗号ハッシュ値を参照し又は含むため、維持することができる。したがって、ひとたびブロックが前のブロックを参照すると、前のブロックに含まれるデータ(例えば、トランザクション)をモディファイ又は改ざんすることは、データに対する小さいモディフィケーションでさえブロック全体のハッシュ値に影響を与えるため、困難になる。ブロックチェーンに追加される各追加ブロックは、以前のブロックの内容を改ざんすることの困難性を増大させる。
ブロックチェーンを使用してソフトウェアのバージョン履歴を管理する一例示的なシステム及び方法を示す図である。 デバイスソフトウェアを更新し、ブロックチェーンを使用してソフトウェアバージョン履歴を管理するシステムに含まれる例示的なコンポーネントを示すブロック図である。 デバイスソフトウェアを更新し、ブロックチェーンを使用してソフトウェアバージョン履歴を管理するシステムに含まれる例示的なコンポーネントを示すブロック図である。 ソフトウェアアップデートをソフトウェアアップデートサービスにサブミットし、ソフトウェアアップデートのためのソフトウェア認証情報をブロックチェーンに記憶する一例示的なシステム及び方法を示すブロック図である。 ブロックチェーンに含まれる認証情報を使用してソフトウェアアップデートを検証する一例示的なシステム及び方法を示すブロック図である。 デバイス上のソフトウェアを更新し、ブロックチェーンにデバイスの更新履歴を記憶する一例示的な方法を示すフロー図である。 ブロックチェーンを使用してバージョン履歴を管理する方法を実行するために使用可能なコンピューティングデバイスの一例を示すブロック図である。
ブロックチェーンを使用してデバイスのソフトウェアバージョン履歴を管理及び安全化(securing)する技術について記載する。ブロックチェーンは、デバイスにインストールされたソフトウェアのバージョンを追跡するために使用することができる。デバイスには、ロボットデバイス、ドローンデバイス、IoT(モノのインターネット)デバイス、ホームオートメーションデバイス、製造デバイス、埋め込みデバイス、及びソフトウェアアップデートを受信するように構成された他のタイプのコンピューティングデバイスを含むことができる。ソフトウェアアップデートは、デバイスにインストールされたソフトウェアを更新、アップグレード、モディファイ(modifies)、又は置換するソフトウェアのバージョンであり得る。いくつかの場合、ソフトウェアアップデートは、デバイスに、前にデバイス上に存在しなかった新しいソフトウェアをインストールすることができる。ソフトウェアアップデートは、これらに限定されないが、ファームウェア、オペレーティングシステム、アプリケーション、セキュリティファイル、ドライバファイル、ライブラリファイル、サービスなどを含むことができる。ソフトウェアバージョン情報は、ブロックチェーンに記録することができ、ブロックチェーンは、ネットワーク内のコンピューティングノード間で分散することができる。コンピューティングノードのネットワークは、ブロックチェーンを維持し、検証プロセスを使用してブロックチェーンに追加された各新しいブロックを暗号的に検証するように構成することができる。
技術の一例では、ソフトウェアアップデートサービスを使用して、デバイスにソフトウェアアップデートを提供し、デバイスにインストールされたソフトウェアの履歴を提供するブロックチェーンへのレコードを追加することができる。ブロックチェーンに更新履歴を記録することで、デバイスにインストールされたソフトウェア及びソフトウェアバージョンの監査証跡を提供することができる。設計上、ブロックチェーンは、ブロックチェーンに含まれるデータのモディフィケーションに対して本質的に耐性があり、それにより、ひとたびトランザクションがブロックチェーンに追加されると、トランザクションのレコードは、ブロックチェーンの分散的性質に起因して、検出されることなく編集又は削除することができない。ブロックチェーンのデータ完全性(すなわち、モディフィケーションに対する耐性)は、デバイスの更新履歴をモディファイされることから保護し、更新履歴が有効であるという高レベルの保証を提供するために使用することができる。
更新履歴は、これらに限定されないが、ソフトウェアバージョン情報、デバイス情報、ユーザ情報、インストール日付情報、デバイスステータス情報、ネットワーク情報、及び他の情報を含むことができる。一例では、ブロックチェーンを使用して、個々のデバイスの更新履歴を維持することができる。別の例では、ブロックチェーンを使用して、複数のデバイスの更新履歴を維持することができる。さらに、一例では、ソフトウェアアップデートのための認証情報を、ブロックチェーン内に維持することができる。認証情報は、後により詳細に説明するように、ソフトウェアアップデートサービス、又はソフトウェアアップデート(例えば、インストールパッケージ、実行可能ファイル、ファイルなど)を認証するためのデバイスにより、ソフトウェアアップデートをデバイスにインストールする前に使用することができる。ソフトウェアアップデートのための認証情報は、ブロックチェーンのデータ完全性を使用して保護することができる。
過去には、ソフトウェアアップデートセキュリティは、集中的に管理されてきた。例えば、集中的に配置されたデータベースを使用して、デバイスへのソフトウェアアップデートの配布を追跡してきた。悪い行為者は、デバイスに侵入し、デバイスを乗っ取ろうとして、これらのデータベースを利用することができる。例えば、悪い行為者は、悪意のあるソフトウェアをデバイスに送信するOTA(オーバー・ジ・エア(Over the Air))アップデートをトリガするために、データベースに不正にアクセスし、デバイスのソフトウェアアップデート履歴を変更又は破壊する可能性がある。本技術は、デバイスのソフトウェアアップデート情報をブロックチェーンに記録し、それにより、コンピューティングノードのネットワークに分散されているブロックチェーンのデータ完全性を使用してソフトウェアアップデート履歴を保護することによって、ソフトウェアアップデートセキュリティを改善する。例えば、ソフトウェアアップデート履歴は、デバイス上のソフトウェアの過去のバージョン及び現在インストールされているバージョンに関する情報を含むことができる。ソフトウェアアップデート履歴は、デバイスにソフトウェアアップデートを送信する前に(例えば、デバイス上のソフトウェアの認可されたバージョンがソフトウェアアップデートを破壊するのを防止するために)、デバイスにインストールされたソフトウェアのバージョンを検証する(validate)ために使用することができる。ソフトウェアのバージョンに対するソフトウェア署名などのソフトウェア認証情報を、ブロックチェーン内に維持することができ、ソフトウェア認証情報は、デバイスにソフトウェアアップデートを送信する前に、(例えば、署名を使用してソースを検証することにより)ソフトウェアアップデートを検証するために使用することができる。デバイスが、ソフトウェアの新しいバージョンに更新された後、ソフトウェアアップデートに関連づけられた情報は、ブロックチェーンに記録することができる。結果的に、上述のように、本技術は、ブロックチェーンのデータ完全性を使用して、デバイスのソフトウェアアップデートに関連づけられた情報の安全化に対する改善を提供する。
本技術をさらに説明するために、次に、図面を参照して例を提供する。図1は、システム100の高レベルの例と、ブロックチェーン112を使用してソフトウェアのバージョン履歴を管理する方法を示す図である。システム100は、ソフトウェアアップデートサービス106を含むことができ、ソフトウェアアップデートサービス106は、デバイス102(例えば、ロボットデバイス)、及び、ブロックチェーン112を維持するように構成されたコンピューティングノードのネットワーク108とネットワーク通信する。デバイス102は、ソフトウェアアップデートを介して更新可能なソフトウェアを実行するように構成された任意のデバイスを含むことができる。デバイス102の非限定的な例には、ロボットデバイス、ドローンデバイス、IoTデバイス、ホームオートメーションデバイス、製造デバイス、モバイルデバイス(例えば、スマートフォン、タブレット、eリーダ、ラップトップコンピュータなど)、デスクトップコンピュータ、サーバなどが含まれる。ブロックチェーン112は、これらに限定されないが、デバイス102のデバイス情報、デバイス102のソフトウェアアップデート履歴、及び/又はデバイス102におけるインストールに利用可能であり得るソフトウェアアップデートのためのソフトウェア認証情報を含むことができる。コンピューティングノードのネットワーク108内のコンピューティングノード110(又は、ピア)は、ブロックチェーン112をホストし、コンピューティングノード110は、互いに(例えば、インターネット、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)などを使用して)ネットワーク通信する。コンピューティングノード110は、コンピューティングノードのネットワーク112とソフトウェアアップデートサービス106がブロックチェーン112にアクセス及びモディファイするために互いに対話することを可能にするAPI(アプリケーションプログラミングインタフェース)のセットを公開することができる。
ソフトウェアアップデートサービス106は、デバイス102にソフトウェアアップデートを配布するように構成することができる。後にさらに詳細に説明するように、一例において、ソフトウェアアップデートサービス106は、ブロックチェーン112に記録されているデバイス102のデバイス情報を検証し(例えば、これが有効なデバイス又はライセンスされたデバイスであるかを決定する)、デバイス102上にソフトウェアアップデートをインストールするように構成されているデバイス102にソフトウェアアップデートを送信することができる。例えば、ソフトウェアアップデートサービス106は、デバイス102のデバイス情報を(例えば、デバイス情報クエリを介して、又はデバイス102から直接)受信することができる。デバイス情報は、デバイス識別子、及びデバイスにインストールされたソフトウェアの現在のバージョン、並びに他の情報を含むことができる。ソフトウェアサービス106は、デバイス情報を検証して、デバイス106のアイデンティティ(identity)と、デバイス106にインストールされたソフトウェアのバージョンを確認することができる。一例において、デバイス情報(例えば、デバイス識別子及びソフトウェアバージョン)は、ブロックチェーン112に含まれるデバイスレコードに対して検証することができる。
デバイス情報の成功裏の検証の後、ソフトウェアアップデートサービス106は、デバイス102のためのソフトウェアアップデートを識別し、このソフトウェアアップデートをデバイス102に送信することができる。例えば、ソフトウェアアップデートサービス106は、デバイス102にインストールされたソフトウェアの現在のバージョン(例えば、バージョン1.0)の情報を使用して、ソフトウェアアップデート(例えば、バージョン2.0)を識別し、このソフトウェアアップデートをデバイス102に送信することができる。一例において、デバイス102にソフトウェアアップデートを送信する前に、ソフトウェアアップデートは、ブロックチェーン112に含まれるソフトウェア認証情報(例えば、ソフトウェア署名又は証明書)を使用して認証することができる。後述するように、ソフトウェア認証情報は、ブロックチェーン112のデータ完全性を使用してソフトウェア認証情報を安全化するために、ブロックチェーン112に記憶することができる。
ソフトウェアアップデートを受信したことに応答して、デバイス102は、ソフトウェアアップデートをデバイス102にインストールする。ソフトウェアアップデートがデバイス102にインストールされた後、ソフトウェアアップデートサービス106は、デバイス102のデバイス識別子、デバイス102にインストールされたソフトウェアバージョン、インストール日付などのソフトウェアアップデート情報を含むようにブロックの生成を開始することができる。一例において、ソフトウェアアップデートサービス106は、ソフトウェアアップデート情報をノード110に送信することができ、ノード110は、ブロックを生成及び検証し、ブロックをブロックチェーン112にアペンドする(append)ことができる。別の例では、ソフトウェアアップデートサービス106は、ソフトウェアアップデート情報を含むようにブロックを生成し、そのブロックをノード110に送信することができ、ノード110は、ブロックの受け入れを決定し、そのブロックをブロックチェーン112にアペンドすることができる。ブロックチェーン112にブロックをアペンドする際に、ブロックは、デバイス102のソフトウェアアップデート履歴を記憶することができ、この更新履歴は、ブロックチェーン112のデータ完全性及びブロックチェーン112の分散的性質によって保護される。
一例において、ブロックチェーン112に追加すべき新しいブロックを生成することは、ブロックチェーン112に追加された最新のブロック(すなわち、ブロックチェーン112にアペンドされた最後のブロック)を識別し、最後のブロックからブロック識別子を取得することを含むことができる。最後のブロックからのブロック識別子は、ソフトウェアアップデート情報とともに新しいブロックに含めることができ、新しいブロックのブロック識別子は、新しいブロックに含まれる情報にハッシュ関数を適用することにより生成することができる。例えば、新しいブロックのブロック識別子は、最後のブロックからのブロック識別子とソフトウェアアップデートサービス106から受信したソフトウェアアップデート情報とにハッシュ関数を適用することにより生成することができる。
ノード110は、ブロックに含まれる情報を検証することにより、ブロックの受け入れを決定することができる。例えば、ノード110は、ソフトウェアアップデートサービス106から受信したブロックに含まれるブロック識別子を、ブロック識別子を元々生成するために使用されたハッシュ方法でブロック識別子を再現し、再現されたブロック識別子をソフトウェアアップデートサービス106から受信したブロック内のブロック識別子と比較することにより、検証することができる。一例として、ノード110は、ソフトウェアアップデートサービス106から受信したブロックに含まれるソフトウェアアップデート情報とノード110に記憶されたブロックチェーン122内の前のブロックから取得されたブロック識別子とにハッシュ関数を適用することにより、ブロック識別子を再現することができる。再現されたブロック識別子が、ソフトウェアアップデートサービス106から受信したブロック内のブロック識別子に対応する場合、ブロックは、検証されたとみなされ、ノード110は、ブロックをノード110に記憶されたブロックチェーン112のコピーにアペンドすることができる。再現されたブロック識別子が、ソフトウェアアップデートサービス106から受信したブロック内のブロック識別子に対応しない場合、ブロックは、ブロックチェーン112にアペンドされなくてよい。
一例において、ノード110は、プルーフオブワーク(proof-of-work)処理を実行して、どのノード110がブロックチェーン112にブロックを追加するかを決定することができる。一例として、ソフトウェアアップデートサービス106は、ノード110に対してソフトウェアアップデートトランザクションを発行する(publish)ことができ、レイテンシに起因して、ノード110は、異なる時間にソフトウェアアップデートトランザクションを受信することができる。結果として、ノード110により生成されたブロックは、異なるソフトウェアアップデートトランザクションを含むことがあり、したがって、どのノード110がブロックチェーン112にブロックを追加するかの決定が行われ得る。ノード110は、どのノード110がブロックチェーン112にブロックを追加するかを決定するために、プルーフオブワーク処理を実行することができる。例示的に、プルーフオブワーク処理は、立証可能なコンピューティング計算(例えば、暗号パズル)を解くことを含むことができる。プルーフオブワーク処理を完了する最初のノード110が、ブロックチェーン112にブロックを追加するように選択される。いくつかの場合、ブロックチェーン112にブロックを追加するように選択されたノード110は、賞(award)を受け取ることができ、この賞は、モニタリー賞(monitory award)、又は他のノード110と競争するための別のタイプのインセンティブであり得る。別の例では、プルーフオブステーク(proof-of stake)を使用して、どのノード110がブロックチェーン112にブロックを追加するかを決定することができる。プルーフオブステークは、決定論的方法を使用してブロックを生成するためにノード110を選択し、ノード110は、ノード110が有効なブロックを生成しない場合にノード110が失う可能性のあるステーク(例えば、金銭価値)を提供する(puts up)。理解されるように、この技術は、上述したブロックチェーン112へのブロックの生成及び追加の手法に限定されない。ブロックチェーンにブロックを生成及び追加する任意の手法が考えられ、本開示の範囲内である。
図2Aは、本技術を実行することができる一例示的なシステム環境200のコンポーネントを示す。システム環境200は、ソフトウェアアップデートサービス208とデータストア226a~226bとをホストするように構成された複数のサーバ206を含むことができ、データストア226a~226bは、デバイス222のデバイス履歴218、及びソフトウェアアップデート220(例えば、複数のバージョンのソフトウェア実行可能ファイル)を含む。システム200は、1つ以上のブロックチェーン204を維持するために使用される複数のノード202を含むことができる。ノード202には、ブロックチェーン204に記憶された情報を検証すること、プルーフオブワーク処理を実行してノード202がブロック224a~nを生成するかどうかを決定すること、デバイス222及び/又はソフトウェアアップデートに関連する情報を含むようにブロック224a~nを生成すること、並びにブロック224a~nをブロックチェーン204に追加することなどの、ブロックチェーン機能を実行するために使用されるブロックチェーンソフトウェアを実行するように構成されたサーバ又は別のコンピューティングデバイスを含むことができる。
ブロックチェーン204は、デバイス222にインストールされたソフトウェアのデバイス履歴を含む複数のリンクされたブロック224a~224nを含むことができる。ブロックチェーン204は、単一のデバイス222のデバイス履歴又は複数のデバイス222のデバイス履歴を含むことができる。例えば、ブロックチェーン204は、IoTデバイスのネットワーク、ロボットデバイスのネットワーク、ドローンデバイスのネットワークなどのデバイスネットワークに含まれるデバイス222のデバイス履歴を含むことができる。デバイス222のデバイス履歴は、デバイス識別子(例えば、一意デバイス識別子(unique device identifier、UDI)、ユニバーサル一意識別子(universal unique identifier、UUID)、媒体アクセス制御アドレス(MACアドレス)、国際移動機器識別番号(international mobile equipment identity、IMEI)、専有の一意ハードウェア識別子など)、履歴的なデバイス情報(例えば、最後の既知の位置、ネットワークアドレス、デバイス状態など)、ソフトウェアバージョン情報(例えば、ソフトウェアバージョン番号、セキュリティパッチレベル及び日付、ソフトウェアビルド番号など)、及びデバイス222のデバイス履歴がブロックチェーン204にいつ追加されたかを示す時間参照を含むことができる。一例において、ブロック224nに示すように、ブロックチェーン204は、後述するソフトウェアアップデート220を検証するために使用されるソフトウェア認証情報を含むことができる。
一例において、ブロックチェーン204に含まれるデバイス履歴は、ソフトウェアアップデートサービス208がアクセス可能なデバイス履歴データストア226aに記憶することができる。例えば、ブロックチェーン204のコピーをノード202から取得することができ、デバイス履歴をブロックチェーン204から抽出し、デバイス履歴データストア226aに記憶することができる。デバイス履歴データストア226aに含まれるデバイス履歴218は、デバイス履歴データストア226aに含まれるデバイス履歴218のデータ完全性を維持するために、ブロックチェーン204から定期的に更新することができる。別の例では、デバイス履歴は、ブロックチェーン204、又はブロックチェーン204の一部をノード202から取り出すことにより、ブロックチェーン204から直接取得することができる。
ソフトウェアアップデートサービス208は、ソフトウェアアップデートサービス208に登録されたデバイス222にソフトウェアアップデート220を提供することができる。一例において、ソフトウェアアップデートサービス208は、これらに限定されないが、デバイス認証モジュール210、ソフトウェア認証モジュール212、ソフトウェア配布モジュール214、及びブロックチェーンモジュール216を含む複数のモジュールを含むことができる。デバイス認証モジュール210は、デバイス222を認証してデバイス222のアイデンティティを確認するように構成することができる。デバイス222は、デバイス222から受信したデバイス情報をブロックチェーン204に含まれるデバイス情報と比較することにより認証することができる。例示的に、デバイス222のデバイス情報は、デバイス識別子及び/又はデバイス特性(例えば、デバイスタイプ、デバイスアカウント、IPアドレス、デバイス222にインストールされたソフトウェアの現在のバージョンなど)を含むことができ、これらは、ブロックチェーン204に含まれるデバイス履歴218から取得されたデバイス情報に対して検証することができる。非限定的な例として、デバイス222から受信したMACアドレス、デバイスアカウント番号、及びデバイスモデル番号を、デバイス履歴218に含まれるMACアドレス、デバイスアカウント番号、及びデバイスモデル番号に対して検証することができる。デバイス履歴218は、デバイス履歴データストア226a及び/又はブロックチェーン204から取得することができる。
ソフトウェア配布モジュール214は、デバイス222がソフトウェアアップデート220を受信するのに適格であるかどうかを決定し、デバイス222へのソフトウェアアップデート220の送信を開始するように構成することができる。例示的に、ソフトウェアアップデート220は、デバイス222からソフトウェアアップデート要求を受信したことに応答して(例えば、デバイス222は、ソフトウェアアップデートサービス208と周期的に通信し、ソフトウェアアップデートサービス208に「チェックイン」して、ソフトウェアアップデート220が利用可能かどうかを決定することができる)、及び/又はデバイス222がソフトウェアアップデート220に適格であるという決定に応答して(例えば、デバイス履歴218は、ソフトウェアアップデート220を受信するのに適格であるデバイス222を識別するためにクエリされ(queried)得る)、デバイス222に送信することができる。
デバイス222からソフトウェアアップデート要求を受信したことに応答して、ソフトウェア配布モジュール214を使用して、ソフトウェアアップデート220がデバイス222に対して利用可能であるかどうかを決定することができる。一例として、デバイス222のデバイス識別子を使用し、ソフトウェア配布モジュール214は、デバイス222に関連づけられたデバイス履歴218(例えば、デバイス履歴データストア226a内に位置し、及び/又はブロックチェーン204から直接取得される)を参照して、デバイス222に現在インストールされているソフトウェアのバージョンを識別することができ、ソフトウェア配布モジュール214は、ソフトウェアアップデートデータストア226bにクエリして、ソフトウェアの新しいバージョンがデバイス222にインストールされるのに利用可能であるかどうかを決定することができる。ソフトウェアアップデート220が利用可能である場合、ソフトウェア配布モジュール214は、デバイス222におけるインストールのために、デバイス222へのソフトウェアアップデート220の送信を開始することができる。
上述のように、ソフトウェア配布モジュール214は、ソフトウェアアップデート220を受信するのに適格であり得るデバイス222を識別するために使用することができる。例えば、ソフトウェアアップデート220をリリースすることができ、ソフトウェア配布モジュールを使用して、新たにリリースされたソフトウェアアップデート220を受け取るのに適格であるデバイス222を識別することができる。ソフトウェア配布モジュール214は、デバイス222がソフトウェアアップデート220を受信するのに適格であるかどうかを、デバイス222に関連づけられたデバイス履歴218を参照することにより決定し、ソフトウェアアップデート220がデバイス222に対して利用可能であるかどうかを、デバイス222に現在インストールされているソフトウェアバージョン、デバイスタイプ、デバイス位置(例えば、ネットワーク位置、地理的位置など)、現在のデバイスの使用法、及び他のファクタなどのファクタに基づいて決定することができる。
一例において、ソフトウェア配布モジュール214は、デバイス222に現在インストールされているソフトウェアバージョンがデバイス履歴218に記録されたソフトウェアバージョンに対応することを立証するように構成することができる。例えば、デバイス222から受信したデバイス情報は、デバイス222にインストールされたソフトウェアのバージョンの情報を含むことができ、ソフトウェア配布モジュール214は、デバイス222から受信したソフトウェアバージョン情報を、デバイス222に現在インストールされているとしてデバイス履歴218に記録されたソフトウェアバージョンと比較することができる。ソフトウェアバージョン間の不一致は、デバイス222が損なわれたことを示し、デバイス222を回復するために、適切な処置をとることができる。デバイス222に現在インストールされているソフトウェアバージョンがデバイス履歴218に記録されたソフトウェアバージョンに対応する場合、ソフトウェア配布モジュール214は、デバイス222へのソフトウェアアップデート220の送信を開始することができる。
ソフトウェア配布モジュール214は、ソフトウェアアップデートデータストア226bからソフトウェアアップデート220(例えば、ソフトウェアのコピー)を取得し、ネットワーク228を介してソフトウェアアップデート220をデバイス222に送信すること、又は、ソフトウェアアップデート220をデバイス222に送信するようにソフトウェアアップデートデータストア226bに指示することにより、デバイス222へのソフトウェアアップデート220の送信を開始することができる。ソフトウェアアップデート220は、ソフトウェアアップデート220をデバイス222にインストールする命令とともに、デバイス222に送ることができる。代替的に、ソフトウェア配布モジュール214は、ソフトウェアアップデート220のネットワーク位置(例えば、ユニフォームリソース識別子(URI))をデバイス222に、ネットワーク位置からソフトウェアアップデート220を取得してソフトウェアアップデート220をデバイス222にインストールする命令とともに送信することができる。デバイス222にソフトウェアアップデート220をインストールした後、デバイス222は、ソフトウェアアップデートサービス106に、ソフトウェアアップデート220がデバイス222に成功裏にインストールされたことを示すメッセージを送信することができる。
ソフトウェア認証モジュール212は、ブロックチェーン204に含まれるソフトウェア署名を使用してソフトウェアアップデート220を検証するように構成することができる。例えば、ソフトウェア認証モジュール212を使用して、(例えば、ソフトウェアアップデート220を秘密鍵で暗号化すること、又はソフトウェアアップデート220にハッシュ関数を適用することにより)ソフトウェアアップデート220のソフトウェア署名を生成することができ、ソフトウェア署名は、(ブロック224nに示すように)ブロックチェーン204に記憶することができる。ブロックチェーン204にソフトウェア署名を記憶することで、ブロックチェーン204のデータ完全性及び分散的性質を使用してソフトウェア署名を改変されることから保護することができる。そのようなものとして、ソフトウェア署名をモディファイ又は置換しようとする試みは、ブロックチェーン204に変更が行われたかどうかを決定するためにブロックチェーン204を参照することにより検出することができる。
一例において、ソフトウェア認証モジュール212は、ソフトウェアアップデート220のソフトウェア署名を(例えば、ブロックチェーン204から)取得し、ソフトウェアアップデート220にハッシュ関数を適用してハッシュ関数の結果をソフトウェアアップデート220に関連づけられたソフトウェア署名と比較することにより、ソフトウェアアップデート220を検証することができる。ソフトウェアアップデート220の成功裏の検証の後、ソフトウェアアップデート220は、1つ以上のデバイス222に送信することができる。別の例では、ソフトウェア認証モジュール212は、デバイス222にソフトウェア署名を提供することができ、デバイス222は、ソフトウェア署名を使用してソフトウェアアップデート220を検証することができる。
ブロックチェーンモジュール216は、ブロックチェーン204に関連づけられた機能性を実行するように構成することができる。一例において、ブロックチェーンモジュール216を使用して、ブロック224a~nを生成し、ブロック224a~nをブロックチェーン204にアペンドするノード202にブロック224a~nを送信することにより、ブロック224a~nをブロックチェーン204に追加することができる。別の例では、ブロックチェーンモジュール216を使用して、情報(例えば、ソフトウェアアップデート情報及び/又はソフトウェア署名)をノード202のネットワーク内のノード202に送信し、1つ以上のノード202がこの情報を含むブロック224a~nを生成し、ブロック224a~nをブロックチェーン204に追加することを可能にできる。さらに別の例では、ブロックチェーンモジュール216を使用して、ブロックチェーン204、又はブロックチェーン204の一部を取得し、ブロックチェーン204に記憶されたデバイス履歴情報をモジュール210/212/214のうち任意のものに提供することができる。さらに、一例において、ブロックチェーンモジュール216を使用して、ブロックチェーン204からデバイス履歴情報を(例えば、周期的に又はオンデマンドで)取得し、モジュール210/212/214がアクセス可能なデバイス履歴データストア226aにデバイス履歴情報を記憶することができる。
システム環境200は、仮想マシンを実行するための計算リソースを含むことができ、仮想マシンは、物理マシンをエミュレートするように構成されたマシン(すなわち、コンピュータ)のソフトウェア実装のインスタンスであり得る。一例において、サーバ206は、ソフトウェアアップデートサービス208をホストするために使用される仮想マシンを含むことができる。
別の例では、図2Bに示すように、ソフトウェアアップデートサービス208の1つ以上のモジュールをデバイス222上にホストすることができ、モジュールを使用して、上述のようにデバイス222上にインストールされたソフトウェアを更新することができる。例えば、ソフトウェアアップデートサービス208は、デバイス222上で実行することができ、ソフトウェアアップデートサービス208は、ブロックチェーン204に含まれるデバイス履歴を用いてデバイス222上に記憶されたデバイス情報を検証し、アップデートデータストア226bからソフトウェアアップデート220を取り出すことによりデバイス222上でソフトウェアアップデートを開始することができる。ソフトウェアアップデートがデバイス222にインストールされた後、ソフトウェアアップデートサービス208は、デバイスにインストールされたソフトウェアアップデートの情報を含むブロックの生成を開始し、上述の方法の1つを使用してブロックチェーン204にブロックをアペンドすることができる。
システム環境200内に含まれる様々なプロセス及び/又は他の機能は、1つ以上のメモリモジュールと通信している1つ以上のプロセッサで実行することができる。システム環境200は、例えば、1つ以上のサーババンク、コンピュータバンク、又は他の配置で配置された複数のコンピューティングデバイスを含むことができる。コンピューティングデバイスは、ハイパーバイザ、仮想マシンモニタ(VMM)、及び他の仮想化ソフトウェアを使用して計算環境をサポートすることができる。用語「データストア」は、データを記憶し、アクセスし、編成し、及び/又は取り出すことができる任意のデバイス又はデバイスの組み合わせを参照することができ、これには、任意の組み合わせ及び数のデータサーバ、関係データベース、オブジェクト指向データベース、クラスタストレージシステム、データストレージデバイス、データウェアハウス、フラットファイル、及び任意の集中化、分散、又はクラスタ化された環境におけるデータストレージ構成を含むことができる。データストアのストレージシステムコンポーネントは、SAN(ストレージエリアネットワーク)、クラウドストレージネットワーク、揮発性又は不揮発性RAM、光媒体、又はハードドライブタイプの媒体などのストレージシステムを含むことができる。データストアは、理解できるように、複数のデータストアの代表であり得る。
システム環境200に含まれるモジュール及びサービスに関連して行われ得るAPIコール、プロシージャコール、又は他のネットワークコマンドは、これらに限定されないが、表現状態転送(Representational state transfer、REST)技術又はシンプルオブジェクトアクセスプロトコル(Simple Object Access Protocol、SOAP)技術を含む異なる技術に従って実装することができる。RESTは、分散ハイパーメディアシステムのアーキテクチャスタイルである。RESTful API(RESTful Webサービスと呼ばれることもある)は、HTTP及びREST技術を使用して実装されたWebサービスAPIである。SOAPは、Webベースのサービスのコンテキストで情報を交換するためのプロトコルである。
ネットワーク228は、イントラネット、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、無線データネットワーク、又は他の任意のこのようなネットワーク又はこれらの組み合わせを含む、任意の有用なコンピューティングネットワークを含むことができる。このようなシステムに利用されるコンポーネントは、選択されるネットワーク及び/又は環境のタイプに少なくとも部分的に依存することができる。ネットワーク228を介した通信は、有線又は無線接続及びこれらの組み合わせにより可能にすることができる。
図2A及び図2Bは、特定の処理モジュールをこの技術に関連して論じることができ、これらの処理モジュールをコンピューティングサービスとして実装できることを示している。一例示的な構成において、モジュールは、サーバ又は他のコンピュータハードウェア上で実行される1つ以上のプロセスを有するサービスとみなすことができる。このようなサービスは、要求を受信し、出力を他のサービス又は消費者デバイスに提供することができる、集中ホスティング機能又はサービスアプリケーションであり得る。例えば、サービスを提供するモジュールは、サーバ、仮想化サービス環境、グリッド、又はクラスタコンピューティングシステム内にホストされるオンデマンドコンピューティングとみなすことができる。APIを各モジュールに提供して、第2のモジュールが要求を第1のモジュールに送り、第1のモジュールから出力を受け取ることを可能にすることができる。さらに、このようなAPIは、第三者がモジュールとインターフェースをとり、要求を行ってモジュールから出力を受け取ることを可能にすることができる。図2A及び図2Bは、上述の手法を実装することができるシステムの例を示しているが、多くの他の同様の又は異なる環境が可能である。上で論じられ示された例示的な環境は、単に代表的なものであり、限定的なものではない。
図3は、ソフトウェアアップデート324をソフトウェアアップデートサービス308にサブミットし、ソフトウェアアップデート324のためのソフトウェア認証情報をブロックチェーン310に記憶する一例示的なシステム300及び方法を示すブロック図である。ソフトウェア認証情報は、ソフトウェア作者及び/又はソフトウェアビルドシステムのアイデンティティを立証するために使用されるソフトウェア署名306と、ソフトウェアアップデート324のコンピュータコードが改変又は破壊されていないことを立証するためのチェックサムを含むことができる。認証情報は、ソフトウェアアップデート324のバージョニング情報と、ソフトウェアアップデート324に関する他のメタデータも含むことができる。簡素化のため、以下の説明は、他の又はさらなるソフトウェア認証情報が使用され得るという理解とともに、ソフトウェア署名306に焦点を合わせる。
図示のように、ソフトウェアアップデート324は、ソフトウェアアップデートサービス308をホストするサーバ304にサブミットすることができる。ソフトウェアアップデート324は、デバイスにインストールされたソフトウェアを更新、アップグレード、又は置換するソフトウェアのバージョンであり得る。管理者は、ソフトウェアアップデート324(例えば、実行可能ファイル)をサーバ304にアップロードすることができ、ソフトウェアアップデート324は、ソフトウェアアップデートサービス308がアクセス可能なデータストア320に記憶することができる。
一例において、ソフトウェア署名306は、ソフトウェアアップデート324に含めることができる。例えば、ソフトウェアアップデート324は、公開/秘密鍵ペアを伴うソフトウェア署名手法を使用して署名(例えば、暗号化)することができる。一例として、ソフトウェア開発者は、ソフトウェアアップデート324をビルドした後、秘密鍵を使用してソフトウェアアップデート324に署名することができる。署名は、開発者の秘密鍵、又は信頼された認証局(certificate authority、CA)から取得された秘密鍵を使用して実行することができ、ソフトウェアアップデート324は、ソフトウェア署名306(例えば、公開鍵基盤(PKI)証明書)と共にサーバ304にアップロードすることができる。ソフトウェアアップデート324及びソフトウェア署名306がサーバ304にアップロードされた後、ソフトウェア署名306(例えば、PKI証明書)とソフトウェアアップデート324の情報(例えば、バージョン番号などのソフトウェアアップデート識別子)とを含むようにブロック312を作成することができる。ブロック312は、次いで、ブロックチェーン310にアペンドすることができる。一例において、ソフトウェアアップデートサービス308は、ソフトウェア署名306を含むブロック312を生成し、ブロック312をノード302のネットワークに送信することができ、ノード302は、ブロック312の受け入れを決定し、ブロック312が受け入れられたときブロック312をブロックチェーン310にアペンドするように構成される。別の例では、ソフトウェアアップデートサービス308は、ソフトウェア署名306とソフトウェアアップデート324の情報とをノード302のネットワークに送信することができ、ノード302は、ブロック312を生成し、ブロック312をブロックチェーン310にアペンドすることができる。
別の例では、ソフトウェアアップデートサービス308は、暗号ハッシュ関数(例えば、MD5、SHA-1、SHA-256など)を使用して、ソフトウェアアップデート324のソフトウェア署名306を生成するように構成することができる。例えば、ソフトウェアアップデート324をサーバ304にアップロードした後、ソフトウェアアップデートサービス308は、ソフトウェアアップデート324に暗号ハッシュ関数を適用してソフトウェア署名306を生成することができる。ソフトウェアアップデートサービス308は、次いで、一例において、ソフトウェア署名306とソフトウェアアップデート324の情報とを、ブロックチェーン310内のブロック312に記憶されるようにノード302のネットワークに送信することができる。別の例では、ソフトウェアアップデートサービス308は、ソフトウェア署名306とソフトウェアアップデート324の情報とを含むブロック312を生成することができ、ソフトウェアアップデートサービス308は、ブロック312を、ブロックチェーン310にアペンドされるようにノード302のネットワークに送信することができる。一例において、ブロックチェーン310は、ソフトウェアアップデートのソフトウェア署名を記憶するために専用とすることができる。別の例では、ブロックチェーン310を使用して、ソフトウェアアップデートのソフトウェア署名、前述のデバイスの更新履歴の双方、及びソフトウェアアップデートに関連する任意の他の情報(例えば、ソフトウェアアップデートのネットワークストレージ位置)を記憶することができる。
図4は、ブロックチェーン310に記憶されたソフトウェア署名306を使用してソフトウェアアップデート324を検証するシステム300及び方法を示すブロック図である。デバイス322上のソフトウェアの更新の一部として、ソフトウェアアップデート324は、ソフトウェアアップデート324が改変又は破壊されていないことを確保するために、ブロックチェーン310に記憶されたソフトウェア署名306を使用して検証することができる。
一例において、デバイス322上のソフトウェアの更新の一部として、ソフトウェアアップデート324(例えば、実行可能ファイル)をデバイス322のために識別することができ、ソフトウェアアップデート324は、ソフトウェアアップデートデータストア320から取り出すことができる。一例において、ソフトウェアアップデート324に関連づけられたソフトウェア署名306は、ブロックチェーン310内のブロック312から取り出すことができ、ソフトウェア署名306は、ソフトウェア署名を認証するために公開鍵を使用して検証することができる。一例において、公開鍵は、安全な公開鍵基盤(PKI)を使用して、信頼されたルート認証局(CA)へ遡ってたどることができる。一例において、ソフトウェア署名306の検証は、ソフトウェアアップデート324をデバイス322に送信する前に、ソフトウェアアップデートサービス308により実行することができる。別の例では、ソフトウェア署名306の検証は、ソフトウェアアップデート324を用いたデバイス322上のソフトウェアの更新の一部として、デバイス322により実行することができる。
別の例では、ソフトウェア署名306は、ブロックチェーン310から取り出すことができ、ソフトウェア署名306は、ソフトウェアアップデートデータストア320内にソフトウェアアップデート324とともに記憶されたソフトウェア署名と比較することができる。例えば、ソフトウェア署名306は、ソフトウェアアップデートファイルに暗号ハッシュ関数を適用することにより生成することができ、結果として生じるソフトウェア署名306は、ブロックチェーン310に記憶することができ、ソフトウェア署名306のコピーは、ソフトウェアアップデート324とともにソフトウェアアップデートデータストア320に記憶することができる。デバイス322がソフトウェアアップデート324を受信したとき、ソフトウェアアップデート324のソフトウェア署名306は、ブロックチェーン310からソフトウェア署名306を、及びソフトウェアアップデートデータストア320からソフトウェア署名306のコピーを取り出すことにより検証することができ、ソフトウェア署名を比較して、ソフトウェア署名が一致することを確保することができる。一例において、ソフトウェアアップデートサービス308を使用して、ソフトウェアの署名を比較することができる。別の例では、ソフトウェア署名306とソフトウェア署名306のコピーは、ソフトウェアアップデート324とともにデバイス322に送信することができ、デバイス322は、ソフトウェア署名306とソフトウェア署名306のコピーとの比較を行うことにより、ソフトウェア署名306を検証することができる。
図5は、デバイス上のソフトウェアを更新し、ブロックチェーンにデバイスの更新履歴を記憶する一例示的な方法500を示すフロー図である。ブロック510におけるように、ソフトウェアアップデートを受信するように構成されたデバイスのデバイス情報を受信することができ、デバイスのデバイス履歴は、複数のネットワークノード間に分散されているブロックチェーンに含めることができる。例えば、デバイス情報は、サービスプロバイダ環境にホストされたソフトウェアアップデートサービスで、又はデバイス自体にホストされたソフトウェアアップデートサービスで受信することができる。
ブロック520におけるように、デバイス情報は、デバイスのアイデンティティを確認するために、ブロックチェーンに含まれるデバイス履歴に対して検証することができる。一例において、デバイス情報をデバイス履歴に対して検証することは、ブロックチェーンからデバイス履歴を取得すること、デバイス情報に含まれるデバイス識別子をデバイス履歴に記録されたデバイス識別子に対して検証して、デバイスのアイデンティティを確認し、又はデバイスがソフトウェアライセンスを有することを確認すること、及び、デバイス情報に含まれるソフトウェアバージョン識別子をデバイス履歴に記録されたソフトウェアバージョンに対してチェックして、デバイスに現在インストールされているソフトウェアのバージョンを確認することを含むことができる。一例において、デバイス履歴は、ブロックチェーンのコピーを記憶するピアノードから取得することができる。別の例では、ブロックチェーンの一部をピアノードから取得することができ、デバイスのデバイス履歴は上記ブロックチェーンの一部から取得することができる。
ブロック530におけるように、デバイスにソフトウェアアップデートをインストールするように構成されたデバイスに対してソフトウェアアップデートを開始することができる。一例において、ソフトウェアアップデートを開始することは、ソフトウェアアップデートに関連づけられたソフトウェアコピーを、ソフトウェアコピーをデバイスにインストールする命令とともにデバイスに送信することを含むことができる。別の例では、ソフトウェアアップデートを開始することは、ソフトウェアコピーのネットワーク位置を、このネットワーク位置からソフトウェアコピーを取得してソフトウェアコピーをデバイスにインストールする命令とともにデバイスに送信することを含むことができる。さらに別の例では、デバイスは、ソフトウェアアップデートサービスからのソフトウェアアップデートのソフトウェアコピーの要求を送信すること、又はリモートストレージ位置若しくはデバイス自体のローカルストレージ位置からソフトウェアアップデートのソフトウェアコピーを取り出すことにより、ソフトウェアアップデートを開始することができる。
一例において、ソフトウェアアップデートがデバイスにインストールされるのに利用可能であることの識別の一部として、デバイスのためのソフトウェアの更新されたバージョンを識別することができ、ソフトウェアの更新されたバージョンは、ブロックチェーンに含まれるソフトウェア認証情報を使用して認証することができる。例えば、ソフトウェア認証情報(例えば、ソフトウェアアップデートのソフトウェア署名)は、ブロックチェーンから取得することができ、一例において、ソフトウェア認証情報は、ソフトウェアアップデートを検証するためにソフトウェアアップデートサービスにより使用することができ、別の例では、ソフトウェア認証情報は、デバイスに提供することができ、このデバイスは、ソフトウェア認証情報を使用してソフトウェアアップデートを検証するように構成することができる。
ブロック540におけるように、ソフトウェアアップデートがデバイスにインストールされたという指標を受信することができる。一例として、デバイスは、ソフトウェアアップデートがデバイスに成功裏にインストールされたことを示すメッセージをソフトウェアアップデートサービスに送信することができる。別の例として、ソフトウェアアップデートサービスは、デバイスに周期的にクエリして、ソフトウェアアップデートがインストールされているかどうかを決定することができる。
ブロック550におけるように、デバイス及びデバイスにインストールされたソフトウェアアップデートの情報、並びに他の情報を含むように、ブロックの生成を開始することができる。一例において、ブロックの生成を開始することは、ソフトウェアアップデートがデバイスにインストールされたことを示す更新されたデバイス情報を複数のネットワークノードに送信することを含むことができ、更新されたデバイス情報を受信したことに応答して、複数のネットワークノードは、プルーフオブワーク処理を実行して、どのネットワークノードがデバイス及びデバイスにインストールされたソフトウェアアップデートの情報を含むブロックを生成するかを決定することができる。別の例では、ブロックの生成を開始することは、ブロックチェーンからブロックチェーンにおける最新追加ブロックの前ブロック識別子を取得することであり、ブロック識別子は、ブロックに含まれる情報にハッシュ関数を適用することにより生成できることと、前ブロック識別子をブロックに記憶することを含むことができる。複数のネットワークノードは、ピアノードのパブリックネットワーク又はピアノードのプライベートネットワークのうち1つに含めることができる。ブロックは、複数のネットワークノードに送ることができ、該ネットワークノードは、ブロックの受け入れを決定し、ブロックが受け入れられたときブロックチェーンにブロックをアペンドするように構成される。一例において、ブロックは、ブロックに含まれる情報を傍受された場合の悪用から保護するために、ピアノードのネットワークに送信する前に暗号化することができる。ピアノードのネットワークによるブロックの受け入れは、ブロックを受信したピアノードの過半数(majority)がブロックを受け入れる同意を伝達したという決定に基づいてもよい。
図6は、この技術のモジュールを実行可能なコンピューティングデバイス610を示す。本技術の高レベルの例を実行することができるコンピューティングデバイス610が示されている。コンピューティングデバイス610は、メモリデバイス620と通信する1つ以上のプロセッサ612を含むことができる。コンピューティングデバイス610は、コンピューティングデバイス内のコンポーネントのためのローカル通信インターフェース618を含むことができる。例えば、ローカル通信インターフェース618は、ローカルデータバス、及び/又は所望され得る任意の関連アドレス若しくは制御バスとすることができる。
メモリデバイス620は、プロセッサ612により実行可能なモジュール624と、モジュール624のためのデータを含むことができる。モジュール624は、前述の機能を実行することができる。さらに、データストア622をメモリデバイス620内に配置して、モジュール624及び他のアプリケーションに関連するデータを、プロセッサ612により実行可能なオペレーティングシステムと共に記憶することができる。
他のアプリケーションもメモリデバイス620に記憶することができ、プロセッサ612により実行可能とすることができる。本説明で論じられるコンポーネント又はモジュールは、方法のハイブリッドを使用してコンパイル、解釈、又は実行される高水準プログラミング言語を使用してソフトウェアの形態で実装することができる。
コンピューティングデバイスは、コンピューティングデバイスにより使用可能なI/O(入力/出力)デバイス614へのアクセスを有することもできる。ネットワーキングデバイス616及び同様の通信デバイスを、コンピューティングデバイスに含めることができる。ネットワーキングデバイス616は、インターネット、LAN、WAN、又は他のコンピューティングネットワークに接続する有線又は無線のネットワーキングデバイスとすることができる。
メモリデバイス620に記憶されているように示されるコンポーネント又はモジュールは、プロセッサ612により実行することができる。用語「実行可能」は、プロセッサ612により実行できる形式のプログラムファイルを意味し得る。例えば、高水準言語のプログラムは、メモリデバイス620のランダムアクセス部分にロードされプロセッサ612により実行され得るフォーマットのマシンコードにコンパイルすることができ、あるいは、ソースコードを別の実行可能プログラムによりロードし、解釈して、プロセッサにより実行されるようにメモリのランダムアクセス部分に命令を生成することができる。実行可能プログラムは、メモリデバイス620の任意の部分又はコンポーネントに記憶することができる。例えば、メモリデバイス620は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、フラッシュメモリ、ソリッドステートドライブ、メモリカード、ハードドライブ、光ディスク、フロッピーディスク、磁気テープ、又は任意の他のメモリコンポーネントでもよい。
プロセッサ612は、複数のプロセッサを表すことができ、メモリデバイス620は、処理回路と並列に動作する複数のメモリユニットを表すことができる。これは、システム内のプロセス及びデータのための並列処理チャネルを提供することができる。ローカル通信インターフェース618は、複数のプロセッサのいずれかと複数のメモリとの間の通信を容易にするためのネットワークとして使用することができる。ローカル通信インターフェース618は、負荷分散、バルクデータ転送、及び同様のシステムなどの、通信を調整するように設計されたさらなるシステムを使用することができる。
この技術で提示されたフローチャートは特定の実行順序を示し得るが、実行順序は図示されたものと異なることがある。例えば、2つ以上のブロックの順序を、図示された順序に対して再配置することができる。さらに、連続して示される2つ以上のブロックを、並列に、又は部分並列で実行することができる。いくつかの構成において、フローチャートに示される1つ以上のブロックを省略又はスキップすることができる。拡張されたユーティリティ、アカウンティング、パフォーマンス、測定、トラブルシューティングの目的で、又は同様の理由のために、任意の数のカウンタ、状態変数、警告セマフォ、又はメッセージを論理フローに追加することができる。
本明細書に記載されている機能ユニットのいくつかは、その実装の独立性をより具体的に強調するために、モジュールとしてラベル付けされている。例えば、モジュールは、カスタムVLSI回路又はゲートアレイを含むハードウェア回路、論理チップ、トランジスタ、又は他のディスクリートコンポーネントなどの市販の半導体として実装することができる。モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイ論理、プログラマブル論理デバイスなどのプログラマブルハードウェアデバイスに実装することもできる。
さらに、モジュールは、様々なタイプのプロセッサによる実行のためにソフトウェアで実装することもできる。実行可能コードの識別モジュールには、例えば、オブジェクト、プロシージャ、又は機能として編成できるコンピュータ命令の1つ以上のブロックを含むことができる。それにもかかわらず、識別モジュールの実行可能ファイルは、物理的に一緒に配置される必要はなく、モジュールを構成する異なる場所に記憶された異なる命令を含み、論理的に一緒に結合されたときモジュールについて記載された目的を達成することができる。
実際、実行可能なコードのモジュールは、単一の命令、又は多数の命令とすることができ、いくつかの異なるコードセグメントにわたり、異なるプログラム間で、及びいくつかのメモリデバイスにわたり分散することさえできる。同様に、動作データは、本明細書においてモジュール内で識別及び例示されることがあり、任意の適切な形態で具現化することができ、任意の適切なタイプのデータ構造に編成することができる。動作データは、単一のデータセットとして収集することができ、あるいは、異なる記憶デバイスにわたることを含む異なる場所にわたり分散することができる。モジュールは、所望の機能を実行するように動作可能なエージェントを含み、受動的又は能動的でもよい。
本明細書に記載の技術は、コンピュータ読取可能命令、データ構造、プログラムモジュール、又は他のデータなどの情報の記憶のための任意の技術で実施される揮発性及び不揮発性の、取り外し可能及び取り外し不可能な媒体を含むコンピュータ読取可能記憶媒体に記憶することもできる。コンピュータ読取可能記憶媒体は、これらに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶デバイスなどの非一時的マシン読取可能記憶媒体、又は所望の情報及び記載された技術を記憶するために使用することができる他の任意のコンピュータ記憶媒体を含む。
本明細書に記載のデバイスは、デバイスが他のデバイスと通信することを可能にする通信接続又はネットワーキング装置及びネットワーキング接続をさらに含むことができる。通信接続は、通信媒体の一例である。通信媒体は、典型的には、コンピュータ読取可能な命令、データ構造、プログラムモジュール、及び搬送波などの変調データ信号又は他の伝送機構における他のデータを具現化し、任意の情報伝達媒体を含む。「変調データ信号」は、その特性の1つ以上を、信号内に情報を符号化するような方法で設定又は変化させた信号を意味する。限定でなく例示として、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体と、音響、無線周波数、赤外線、及び他の無線媒体などの無線媒体とを含む。本明細書で用いられる用語「コンピュータ読取可能媒体」は、通信媒体を含む。
図面に例示されている例を参照し、これを説明するために特定の言語を本明細書で使用した。それでもなお、本技術の範囲の制限はそれにより意図されていないことが理解されるであろう。本明細書に示された特徴の改変及びさらなる修正、並びに本明細書に示された例のさらなる適用は、本説明の範囲内とみなされるべきである。
さらに、記載された特徴、構造、又は特性は、1つ以上の例において任意の適切な方法で組み合わせることができる。先の説明では、記載された技術の例の完全に理解を提供するための様々な構成の例などの、多数の特定の詳細が提供された。しかしながら、本技術は、上記特定の詳細の1つ以上なしに、又は他の方法、コンポーネント、デバイス等と共に実施できることが認識されるであろう。他の例では、周知の構造又は動作は、本技術の態様を不明瞭にすることを避けるために、詳細には図示又は説明されていない。
本開示は、本明細書に記載されるいくつかの例又は特徴を本明細書に記載される他の例又は特徴と組み合わせることができることを明示的に開示していない場合があるが、本開示は、当業者により実施可能であろう任意のそのような組み合わせを記載しているように読まれるべきである。本開示における「又は」の使用は、本明細書で別段示されない限り、非排他的な「又は」、すなわち「及び/又は」を意味するように理解されるべきである。
主題事項は、構造的特徴及び/又は動作に特有の言語で説明されたが、別記の特許請求の範囲に定義された主題事項は、必ずしも上述の特定の特徴及び動作に限定されないことが理解されるべきである。むしろ、上述の特定の特徴及び作用は、請求項を実施する例示的な形態として開示されている。記載された技術の主旨及び範囲から逸脱することなく、多数の修正及び代替の構成を考案することができる。

Claims (18)

  1. コンピュータにより実施される方法であって、
    ソフトウェアアップデートのリリースに応答して、ブロックチェーンから複数のデバイスのデバイス履歴を取得するステップと、
    前記ブロックチェーンから取得された前記デバイス履歴を参照して、前記複数のデバイスのうちいずれが前記ソフトウェアアップデートを受信するのに適格であるかを識別するステップであり、前記ブロックチェーンは、複数のネットワークノード間に分散され、前記複数のデバイスは、ソフトウェアアップデートを受信するように構成されている、ステップと、
    前記ソフトウェアアップデートを受信するのに適格であると識別された、前記複数のデバイスのうちのデバイスのデバイス情報を取得するステップと、
    前記デバイス情報を前記ブロックチェーンから取得された前記デバイスのデバイス履歴に対して検証して、前記デバイスのアイデンティティを確認するステップと、
    前記デバイスにソフトウェアアップデートをインストールするように構成されている前記デバイスに対して前記ソフトウェアアップデートを開始するステップと、
    前記ソフトウェアアップデートが前記デバイスにインストールされたという指標を受信するステップと、
    デバイス情報と前記デバイスにインストールされた前記ソフトウェアアップデートの情報とを含むブロックの生成を開始するステップであり、前記ブロックは、前記ブロックの受け入れを決定し、前記ブロックが受け入れられたとき前記ブロックを前記ブロックチェーンにアペンドするために、前記複数のネットワークノードに送信される、ステップと、
    を含む、方法。
  2. 記ブロックチェーンから前記デバイスの前記デバイス履歴を取得するステップと、
    前記デバイス情報に含まれるデバイス識別子を前記デバイス履歴に記録されたデバイス識別子に対して検証して、前記デバイスの前記アイデンティティを確認するステップと、
    前記デバイス情報に含まれるソフトウェアバージョン識別子を前記デバイス履歴に記録されたソフトウェアバージョンに対してチェックして、前記デバイスに現在インストールされているソフトウェアのバージョンを確認するステップと、
    をさらに含む、請求項1に記載の方法。
  3. 記ブロックチェーンから前記ソフトウェアアップデートのソフトウェア署名を取得するステップと、
    前記ソフトウェア署名を使用して前記ソフトウェアアップデートのコピーを検証するように構成されている前記デバイスに前記ソフトウェア署名を提供するステップと、
    をさらに含む請求項1に記載の方法。
  4. 前記ソフトウェアアップデートを開始するステップは、前記ソフトウェアアップデートに関連づけられたソフトウェアコピーを、前記デバイスに前記ソフトウェアコピーをインストールする命令とともに、前記デバイスに送信するステップをさらに含む、請求項1に記載の方法。
  5. 前記ソフトウェアアップデートを開始するステップは、ソフトウェアコピーのネットワーク位置を、前記ネットワーク位置から前記ソフトウェアコピーを取得し、かつ前記デバイスに前記ソフトウェアコピーをインストールする命令とともに、前記デバイスに送信するステップをさらに含む、請求項1に記載の方法。
  6. 前記ブロックの生成を開始するステップは、
    前記ソフトウェアアップデートが前記デバイスにインストールされたことを示す更新されたデバイス情報を前記複数のネットワークノードに送信するステップと、
    前記複数のネットワークノードにより、前記更新されたデバイス情報を受信したことに応答して、プルーフオブワーク処理を実行して、どのネットワークノードが前記デバイス情報と前記デバイスにインストールされた前記ソフトウェアアップデートの前記情報とを含む前記ブロックを生成するかを決定するステップと、
    をさらに含む、請求項1に記載の方法。
  7. 前記ブロックの生成を開始するステップは、
    前記ブロックチェーンから前記ブロックチェーンにおける最新追加ブロックの前ブロック識別子を取得するステップであり、ブロック識別子は、ブロックに含まれる情報にハッシュ関数を適用することにより生成される、ステップと、
    前記前ブロック識別子を前記ブロックに記憶するステップと、
    をさらに含む、請求項1に記載の方法。
  8. 最新追加ブロックのブロック識別子を、新ブロックに含まれる情報に前記ハッシュ関数を適用することにより、生成するステップ
    さらに含む請求項7に記載の方法。
  9. 前記複数のネットワークノードは、ピアノードのパブリックネットワーク又はピアノードのプライベートネットワークのうち1つに含まれる、請求項1に記載の方法。
  10. 前記デバイスは、ソフトウェアアップデートを受信するように構成されたロボットデバイスである、請求項1に記載の方法。
  11. システムであって、
    少なくとも1つのプロセッサと、
    命令を含むメモリデバイスと、を含み、
    前記命令は、前記少なくとも1つのプロセッサにより実行されると当該システムに、
    ソフトウェアアップデートのリリースに応答して、ブロックチェーンから複数のデバイスのデバイス履歴を取得し、
    前記ブロックチェーンから取得された前記デバイス履歴を参照して、前記複数のデバイスのうちいずれが前記ソフトウェアアップデートを受信するのに適格であるかを決定し、前記ブロックチェーンは、ピアノードのネットワーク間に分散され、前記複数のデバイスは、ソフトウェアアップデートを受信するように構成され、
    前記ソフトウェアアップデートを受信するのに適格であると決定された、前記複数のデバイスのうちのデバイスデバイス情報を取得し、前記デバイス情報は、デバイス識別子と前記デバイスに現在インストールされているソフトウェアのバージョンとを含み、
    前記デバイスのデバイス履歴を使用して前記デバイス情報を検証して、前記デバイスのアイデンティティと前記デバイスに現在インストールされている前記ソフトウェアのバージョンを確認し、
    前記ソフトウェアの更新されたバージョンを前記デバイスに送信し、前記デバイスは、前記デバイスに前記ソフトウェアの前記更新されたバージョンをインストールするように構成され、
    前記ソフトウェアの前記更新されたバージョンが前記デバイスにインストールされたという指標を受信し、
    デバイス情報と前記デバイスにインストールされた前記ソフトウェアアップデートのバージョンの情報とを含むブロックを生成し、
    前記ブロックの受け入れを決定し、かつ前記ブロックが受け入れられたとき前記ブロックを前記ブロックチェーンにアペンドする前記ピアノードのネットワークに、前記ブロックを送信する、
    ことをさせる、システム。
  12. 前記メモリデバイスは、前記少なくとも1つのプロセッサにより実行されると当該システムに、
    前記デバイスのための前記ソフトウェアの前記更新されたバージョンを識別し、
    前記ブロックチェーンに含まれるソフトウェア認証情報を使用して前記ソフトウェアの前記更新されたバージョンを認証する
    ことをさせる命令をさらに含む、請求項11に記載のシステム。
  13. 前記メモリデバイスは、前記少なくとも1つのプロセッサにより実行されると当該システムに、前記ブロックチェーンのコピーを記憶するピアノードから前記複数のデバイスの前記デバイス履歴を取得することをさせる命令をさらに含む、請求項11に記載のシステム。
  14. 前記メモリデバイスは、前記少なくとも1つのプロセッサにより実行されると当該システムに、
    前記ブロックチェーンの一部をピアノードから取得し、
    前記ブロックチェーンの前記一部から前記複数のデバイスの前記デバイス履歴を取得する
    ことをさせる命令をさらに含む、請求項11に記載のシステム。
  15. 前記ピアノードのネットワークによる前記ブロックの受け入れは、前記ブロックを受信したピアノードの過半数が前記ブロックを受け入れる同意を伝達したという決定に部分的に基づく、請求項11に記載のシステム。
  16. 令を含むコンピュータプログラムであって、前記命令は、1つ以上のプロセッサに、
    ソフトウェアアップデートのリリースに応答して、ブロックチェーンから複数のデバイスのデバイス履歴を取得し、
    前記ブロックチェーンから取得された前記デバイス履歴を参照して、前記複数のデバイスのうちいずれが前記ソフトウェアアップデートを受信するのに適格であるかを決定し、前記複数のデバイスは、ソフトウェアアップデートを受信するように構成され、前記複数のデバイスの前記デバイス履歴は、ピアノードのネットワークに分散されている前記ブロックチェーンに含まれ、
    前記ソフトウェアアップデートを受信するのに適格であると決定された、前記複数のデバイスのうちのデバイスのデバイス情報を取得
    前記デバイス情報を前記ブロックチェーンから取得された前記デバイス履歴に対して検証して、前記デバイスのアイデンティティと前記デバイスに現在インストールされているソフトウェアのバージョンとを確認し、
    前記デバイスに関連づけられたソフトウェアアップデートを識別し、
    前記ブロックチェーンから取得されたソフトウェア認証情報を使用して前記ソフトウェアアップデートを認証して、前記ソフトウェアアップデートがモディファイされていないことを確認し、
    前記ソフトウェアアップデートを、前記ソフトウェアアップデートをインストールするように構成されている前記デバイスに送信し、
    前記ソフトウェアアップデートが前記デバイスにインストールされたという指標を受信し、
    デバイス情報と前記デバイスにインストールされた前記ソフトウェアアップデートの情報とを含むブロックを生成し、
    前記ブロックを前記ピアノードのネットワークに送信して、前記ブロックの受け入れを決定し、前記ブロックが受け入れられたとき前記ブロックを前記ブロックチェーンにアペンドする、
    ことをさせる、コンピュータプログラム
  17. 前記1つ以上のプロセッサに、前記デバイス情報に含まれるデバイス識別子を、前記ブロックチェーンから取得された前記デバイス履歴に含まれるデバイス識別子と比較することにより、前記デバイスの前記アイデンティティを認証することをさせる命令、をさらに含む請求項1に記載のコンピュータプログラム
  18. 前記1つ以上のプロセッサに、前記ブロックを前記ピアノードのネットワークに送信する前に前記ブロックを暗号化することをさせる命令、をさらに含む請求項1に記載のコンピュータプログラム
JP2021562008A 2019-04-19 2020-04-17 ブロックチェーンを用いたバージョン履歴管理 Active JP7322176B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/389,840 US11126425B2 (en) 2019-04-19 2019-04-19 Version history management using a blockchain
US16/389,840 2019-04-19
PCT/US2020/028788 WO2020214968A1 (en) 2019-04-19 2020-04-17 Version history management using a blockchain

Publications (2)

Publication Number Publication Date
JP2022529689A JP2022529689A (ja) 2022-06-23
JP7322176B2 true JP7322176B2 (ja) 2023-08-07

Family

ID=70554268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021562008A Active JP7322176B2 (ja) 2019-04-19 2020-04-17 ブロックチェーンを用いたバージョン履歴管理

Country Status (6)

Country Link
US (1) US11126425B2 (ja)
EP (1) EP3956798A1 (ja)
JP (1) JP7322176B2 (ja)
KR (1) KR102618665B1 (ja)
AU (1) AU2020260153B2 (ja)
WO (1) WO2020214968A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11204982B2 (en) * 2019-06-06 2021-12-21 International Business Machines Corporation Streamlining licensing entitlement
US11294662B2 (en) * 2019-10-09 2022-04-05 Toyota Motor North America, Inc. Management of transport software updates
EP3837652B1 (en) 2020-04-15 2022-09-07 Alipay (Hangzhou) Information Technology Co., Ltd. Distributed blockchain data storage under account model
EP3844642A4 (en) * 2020-04-20 2021-08-25 Alipay (Hangzhou) Information Technology Co., Ltd. STORING BLOCKCHAIN DATA DISTRIBUTED UNDER AN ACCOUNT MODEL
CN114065140A (zh) * 2020-08-04 2022-02-18 富泰华工业(深圳)有限公司 软件程序验证方法、电子装置及存储介质
CA3193241A1 (en) * 2020-09-18 2022-03-24 Ronald R. Austring System and method for data provider tracking and monetization
CN113037850A (zh) * 2021-03-18 2021-06-25 中国第一汽车股份有限公司 一种应用程序升级方法、装置、电子设备及存储介质
CN113420039B (zh) * 2021-08-23 2021-11-16 中国电力科学研究院有限公司 一种调控云平台的模型管理方法、系统、设备及介质
EP4163846A1 (en) * 2021-10-05 2023-04-12 Siemens Aktiengesellschaft Storing object data in a blockchain
US20230130985A1 (en) * 2021-10-27 2023-04-27 Genetec Inc. Secure execution of scripts

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017187777A (ja) 2016-04-06 2017-10-12 アバイア インコーポレーテッド 安全なインタラクションのための、スマートフォンにおける不正の防止された許可及び認証
WO2018032995A1 (zh) 2016-08-19 2018-02-22 阿里巴巴集团控股有限公司 一种数据存储、数据校验、数据溯源方法和设备
JP6340120B1 (ja) 2017-06-16 2018-06-06 アイビーシー株式会社 デバイスプロビジョニングシステム
US20180167198A1 (en) 2016-12-09 2018-06-14 Cisco Technology, Inc. Trust enabled decentralized asset tracking for supply chain and automated inventory management
US20180176229A1 (en) 2016-12-19 2018-06-21 International Business Machines Corporation Decentralized automated software updates via blockchain
US10057243B1 (en) 2017-11-30 2018-08-21 Mocana Corporation System and method for securing data transport between a non-IP endpoint device that is connected to a gateway device and a connected service
US20180260212A1 (en) 2017-03-10 2018-09-13 Salesforce.Com, Inc. Blockchain version control systems
US20180343175A1 (en) 2017-05-24 2018-11-29 International Business Machines Corporation Decentralized change management based on peer devices using a blockchain
JP2018196097A (ja) 2017-05-22 2018-12-06 Kddi株式会社 生成装置、合意形成システム、プログラム、及び生成方法
US20190012595A1 (en) 2017-07-07 2019-01-10 Pointr Data, Inc. Neural network consensus using blockchain
JP2019057276A (ja) 2017-09-19 2019-04-11 パロ アルト リサーチ センター インコーポレイテッド 冗長デバイス及びスマートコントラクトを使用して、サイバーフィジカルシステムへの攻撃を検出するための方法及びシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1005724A (en) 1911-06-08 1911-10-10 Edward L Marshall Wrench.
US10521446B2 (en) * 2017-02-13 2019-12-31 American Express Travel Related Services Company, Inc. System and method for dynamically refactoring business data objects
US20190080402A1 (en) * 2017-09-11 2019-03-14 Templum, Llc System and method for providing a regulatory-compliant token
US11315369B2 (en) * 2018-03-23 2022-04-26 The Boeing Company Blockchain configuration history for vehicle maintenance, modification, and activity tracking
CN110619235A (zh) * 2018-06-18 2019-12-27 松下电器(美国)知识产权公司 管理方法、管理装置及记录介质
US10558457B1 (en) * 2018-08-24 2020-02-11 Dais Technology, LLC Platform discovery and deployment automation system
US11144296B2 (en) * 2018-09-05 2021-10-12 International Business Machines Corporation Multi-variable based secure download of vehicle updates
US11204751B2 (en) * 2018-09-07 2021-12-21 International Business Machines Corporation Mitigating incompatibilities due to code updates in a system containing multiple networked electronic control units
US10936294B2 (en) * 2018-11-01 2021-03-02 Dell Products L.P. Blockchain-based software compliance system
US11188384B2 (en) * 2018-11-07 2021-11-30 Ebay Inc. Resource trust model for securing component state data for a resource using blockchains

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017187777A (ja) 2016-04-06 2017-10-12 アバイア インコーポレーテッド 安全なインタラクションのための、スマートフォンにおける不正の防止された許可及び認証
WO2018032995A1 (zh) 2016-08-19 2018-02-22 阿里巴巴集团控股有限公司 一种数据存储、数据校验、数据溯源方法和设备
US20180167198A1 (en) 2016-12-09 2018-06-14 Cisco Technology, Inc. Trust enabled decentralized asset tracking for supply chain and automated inventory management
US20180176229A1 (en) 2016-12-19 2018-06-21 International Business Machines Corporation Decentralized automated software updates via blockchain
US20180260212A1 (en) 2017-03-10 2018-09-13 Salesforce.Com, Inc. Blockchain version control systems
JP2018196097A (ja) 2017-05-22 2018-12-06 Kddi株式会社 生成装置、合意形成システム、プログラム、及び生成方法
US20180343175A1 (en) 2017-05-24 2018-11-29 International Business Machines Corporation Decentralized change management based on peer devices using a blockchain
JP6340120B1 (ja) 2017-06-16 2018-06-06 アイビーシー株式会社 デバイスプロビジョニングシステム
US20190012595A1 (en) 2017-07-07 2019-01-10 Pointr Data, Inc. Neural network consensus using blockchain
JP2019057276A (ja) 2017-09-19 2019-04-11 パロ アルト リサーチ センター インコーポレイテッド 冗長デバイス及びスマートコントラクトを使用して、サイバーフィジカルシステムへの攻撃を検出するための方法及びシステム
US10057243B1 (en) 2017-11-30 2018-08-21 Mocana Corporation System and method for securing data transport between a non-IP endpoint device that is connected to a gateway device and a connected service

Also Published As

Publication number Publication date
KR20210151926A (ko) 2021-12-14
AU2020260153B2 (en) 2022-11-03
US11126425B2 (en) 2021-09-21
US20200334032A1 (en) 2020-10-22
AU2020260153A1 (en) 2021-10-28
KR102618665B1 (ko) 2023-12-27
EP3956798A1 (en) 2022-02-23
WO2020214968A1 (en) 2020-10-22
JP2022529689A (ja) 2022-06-23

Similar Documents

Publication Publication Date Title
JP7322176B2 (ja) ブロックチェーンを用いたバージョン履歴管理
US10338946B1 (en) Composable machine image
US10824740B2 (en) Decentralized policy publish and query system for multi-cloud computing environment
US9705873B2 (en) Multi-tenant discovery and claiming of distributed storage nodes over an insecure network
EP2550768B1 (en) System and method for remote maintenance of client systems in an electronic network using software testing by a virtual machine
JP5075236B2 (ja) サーバーレス分散ファイルシステムにおけるセキュアリカバリ
US9407505B2 (en) Configuration and verification by trusted provider
CN111541785A (zh) 基于云计算的区块链数据处理方法及装置
US11128470B2 (en) Methods and systems for automatic blockchain deployment based on cloud platform
US11088981B2 (en) Receiving a data object at a device
US10635687B2 (en) Delivering a data object to a device
CN110720092A (zh) 在装置处接收数据对象
US11765155B1 (en) Robust and secure updates of certificate pinning software

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221101

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230324

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230726

R150 Certificate of patent or registration of utility model

Ref document number: 7322176

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150