JP2023520372A - 企業環境におけるブロックチェーンの統合、グループ権限とアクセスの管理 - Google Patents

企業環境におけるブロックチェーンの統合、グループ権限とアクセスの管理 Download PDF

Info

Publication number
JP2023520372A
JP2023520372A JP2022558420A JP2022558420A JP2023520372A JP 2023520372 A JP2023520372 A JP 2023520372A JP 2022558420 A JP2022558420 A JP 2022558420A JP 2022558420 A JP2022558420 A JP 2022558420A JP 2023520372 A JP2023520372 A JP 2023520372A
Authority
JP
Japan
Prior art keywords
blockchain
token
user
cryptographic
access
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.)
Pending
Application number
JP2022558420A
Other languages
English (en)
Other versions
JPWO2021195052A5 (ja
Inventor
アンドリュウ クロケット ムーア,ジョナサン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Spideroak Inc
Original Assignee
Spideroak Inc
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 Spideroak Inc filed Critical Spideroak Inc
Publication of JP2023520372A publication Critical patent/JP2023520372A/ja
Publication of JPWO2021195052A5 publication Critical patent/JPWO2021195052A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

機密データへの権限とアクセスを定義するブロックチェーンは暗号化されていない場合があり、ブロックチェーンへのアクセスは、ブロックチェーン自体と企業情報技術(IT)環境で動作するアクセス制御サーバによって規制され得る。ブロックチェーンとアクセス制御サーバのような複数のソースで定義された権限を組み込む為に、複数のソースから来る複数層のパーミッション、即ち制約を含むトークンを作成することができる。パーミッションが追加される毎に、トークンによって付与される権限は減衰する。ブロックチェーンへのアクセスを制御するプロセッサがトークンを受信すると、プロセッサはトークンの有効性とトークンによって付与された権限を確認し、要求者がブロックチェーンの少なくとも一部にアクセスする権限を付与されているかどうかを判断できる。【選択図】図1

Description

(関連出願の相互参照)
本出願は、2020年3月24日に出願された米国特許出願第16/828,003号の優先権及び利益を主張し、同出願の全体が参照により本明細書に組み込まれる。
本出願は、セキュアファイルシステムへのアクセスを管理することに関し、より具体的には、企業環境においてグループ権限及びセキュアファイルシステムへのアクセスを管理する方法及びシステムに関するものである。
今日、我々のコンピューティングシステムが直面している大きな問題は、内部脅威、即ち、集中型インフラストラクチャ及びそれを管理及び提供する人々への依存による脅威が、全体的な脅威モデルの一環であるということである。MicroSoft SharePoint管理者ロールのドキュメントによると、「グローバル管理者とSharePoint管理者は、全てのサイトと各ユーザのOneDriveに自動的にアクセスできるわけではないが、任意のサイトやOneDriveへのアクセスを自分に与えることができる。」とある。セキュリティとアクセスコントロールの管理と提供を管理者に一元化する現在のインフラへのアプローチでは、人々に、その情報を知る必要がなくても情報にアクセスすることを可能にしている。その結果、自分が管理しているサーバに格納されているデータを読む権限を有していない管理者でも、その権限を有さずにアクセスしてデータを読むことができる。
本明細書では、ファイルシステムにアクセスする権限を有するユーザにのみアクセスを付与することによって、セキュアファイルシステム、及びファイルシステムにアクセスする権限を管理するシステムを提示する。ユーザに付与されるアクセスは、ユーザの権限を超えることはできない。システム内のユーザは、各ユーザに固有の暗号鍵を用いて識別される。ユーザの権限は、ブロックチェーンのような線形シーケンスに記録され、複数のデバイスに分散して配置される。複数のデバイスは夫々独立に線形シーケンスの各ブロックの有効性を検証し、侵害された中央のサーバが不正なアクセスを付与することを防止する。線形シーケンスの有効性は、線形シーケンスの分岐、線形シーケンス内のブロックの削除、線形シーケンス内のブロックの変更等、線形シーケンスに対して特定の操作が行われないようにすることで保証される。新たなブロックを線形シーケンスに追加する前に、ブロックの有効性は、ブロックの追加を要求するユーザが線形シーケンスにブロックを追加する権限、より具体的にはブロックの内容によって指定される操作を実行する権限を有することを保証する為に、システム内の各デバイスによって独立して計算される。
ブロックチェーン自体は暗号化されていなくてもよく、ブロックチェーンへのアクセスは、ブロックチェーン自体及び企業の情報技術(IT)環境で動作するアクセス制御サーバによって規制され得る。ブロックチェーンとアクセス制御サーバのような複数のソースで定義された権限を組み込む為に、複数のソースから来る複数層のパーミッション、即ち制約を含むトークンを作成することができる。パーミッションが追加される毎に、トークンによって付与される権限は減衰する。ブロックチェーンへのアクセスを制御するプロセッサがトークンを受信すると、プロセッサは、トークンの有効性とトークンによって付与された権限を確認し、要求者がブロックチェーンの少なくとも一部にアクセスする権限を付与されているかどうかを判断できる。
分散型環境において、グループの権限と暗号的に安全なデータへのアクセスを管理する為のシステムを示す図である。 チーム線形シーケンスと空間線形シーケンスを示す図である。 チーム線形シーケンスと空間線形シーケンスとの間の線形順序付けを示す図である。 ブロックの構造を示す図である。 システム内に存在し得るポリシーの様々なレイヤーの検証を示す図である。 システム内に存在し得る様々な暗号IDを示す図である。 ブロックがどのように複数のデバイスに分散され得るかを示す図である。 ブロックを含む線形シーケンスを示す図である。 チーム線形シーケンスと空間線形シーケンスを示す図である。 乃至 悪意のあるアクターがシステムに侵入しようとする場合の権限計算を示す図である。 乃至 暗号化されたデータへのアクセスが、権限の失効時にどのように制御され得るかを示す図である。 分散型台帳を介して、1つ以上の信頼できるデバイスによる暗号化されたデータへのアクセスとは別に権限を管理する方法のフローチャートであり、信頼できるデバイスの各々は、少なくとも1つの暗号鍵ベースのアイデンティティに対応しているのを示すフローチャートである。 分散型台帳を使用して暗号化されたデータへのアクセスを管理する方法のフローチャートである。 一実施形態による、セキュアファイルシステムがどのように企業情報技術(IT)インフラストラクチャに統合され得るかを示す図である。 別の実施形態による、セキュアファイルシステムが企業ITインフラストラクチャにどのように統合され得るかを示す図である。 ブロックチェーンを使用してどのようにクロックが実装され得るかを示す図である。 クロックブロックチェーンの内容を示す図である。 暗号化ツリーを示す図である。 トークンの構造を示す図である。 リプレイ攻撃を防止するトークンを示す図である。 リカバリー鍵がどのように使用され得るかを示す図である。 ユーザデバイスが侵害された時に暗号化されたデータへの攻撃を制限する分割鍵システムを示す図である。 ブロックチェーンのセマンティクスの解釈に対する更新を示す図である。 認可クレデンシャルを提供するトークンを生成する方法のフローチャートである。 減衰トークンを作成する方法のフローチャートである。 本明細書で論じる方法論又はモジュールの何れか1つ以上を機械に実行させる為の命令のセットが実行され得る、コンピュータシステム2500の例示的形態の機械の図式的表現である。
(分散型環境におけるグループ権限及びセキュアデータへのアクセスの管理)
図1は、分散型環境においてグループ権限及び暗号的に安全なデータへのアクセスを管理する為のシステムを示す。サーバ100は、エンドポイントとも呼ばれる複数のデバイス110、120、130、140、150と通信している。デバイス110~150の各々は、夫々、アリス、ボブ、キャロル、デイブ、エレン等のエンティティ又はユーザと関連付けられ得る。各ユーザアリス~エレンは、本出願で後に説明するように、固有暗号化ユーザ識別(「ID」)を有し得、各デバイスは固有暗号デバイスIDを有し得る。各暗号ユーザIDは、それに関連する1つ以上の暗号デバイスIDを有し得る。
固有暗号化ユーザIDは、図1に示すように、チーム1及びチーム2のようなチームに分けられ得る。例えば、図1に示すように、アリスの暗号ユーザID、ボブの暗号ユーザID、及びキャロルの暗号ユーザIDはチーム1のメンバーであり得るのに対し、デイブの暗号ユーザID及びエレンの暗号ユーザIDはチーム2のメンバーであり得る。チーム1及びチーム2は、図1に示すように、相互排他的なメンバーシップを有し得、又は部分的に重複するメンバーシップを有し得る。チームメンバーシップは、例えば、チーム線形シーケンス160、170(簡潔にする為、チーム線形シーケンスの1つのインスタンスのみにラベルを付けている)のような線形シーケンスで記録され得る。各チーム1、2は、夫々1つのチーム線形シーケンス160、170を有し得る。チーム線形シーケンス160、170や空間線形シーケンス190、192、194等の線形シーケンスは、台帳に類似した暗号化されたデータ構造である。線形シーケンスは複数のデバイスに分散され得、各デバイスは独立して線形シーケンスを検証するので、線形シーケンスは分散型台帳を表し得る。
各チーム1、2は、1つ以上の空間180、182、184(簡潔にする為、空間の1つのインスタンスのみにラベルを付けている)を有し得る。各空間180、182、184は、暗号化されたデータ及び暗号化されたデータへのアクセスを有するメンバーを含む仮想区画であり得る。チームメンバーのサブセットは、1つ以上の空間180、182、184に含まれ、1つ以上の空間180、182、184に関連付けられた暗号化されたデータにアクセスする権限を与えられ得る。例えば、チーム1は空間180を有し、チームメンバーであるアリス、ボブ及びキャロルは全員が空間180に招待される。別の例では、チーム2は空間182と184を有する。空間182にはデイブのみがメンバーとして存在するのに対し、空間184にはデイブとエレンの両方がメンバーとして存在する。各空間180、182、184は、空間メンバーのみがアクセスできるように暗号化されたデータを有し得る。暗号化されたデータは、コンテンツ又はデータ、或いはその両方を含み得る。例えば、暗号化されたデータは、ファイル、ファイルシステム、文書、及び/又はインスタントメッセージ、電子メール、チャットメッセージ、テキストメッセージ等のメッセージを含み得る。
一例では、ユーザアリス、ボブ、キャロルのみが、空間180に関連付けられた暗号化されたデータに対する権限を有する。別の例では、ユーザデイブのみが空間182に関連付けられた暗号化されたデータに対する権限を有するのに対し、ユーザデイブ及びエレンの両者が空間184に関連付けられた暗号化されたデータへのアクセス権限を有している。暗号化されたデータに対する権限は、暗号化されたデータの読み取り、書き込み、及び/又は修正するパーミッションを含み得る。暗号化されたデータへのアクセスは、アクセスを要求する暗号ユーザIDが、アクセスを包含する権限を有することを確認した時に付与され得る。
例えば、ユーザエレンの暗号ユーザIDは、暗号化されたデータを読み取る権限を有し得る。しかし、ユーザエレンの暗号ユーザIDが暗号化されたデータに書き込むことを要求した場合、ユーザエレンの暗号ユーザIDは、権限がない為、暗号化されたデータに書き込む為のアクセスを拒否されることになる。言い換えると、本明細書で開示されたシステムでは、暗号化されたデータへのアクセスは、暗号化されたデータに関連付けられた権限を超えることはできない。
別の実施形態では、チーム1、2は存在せず、ユーザは1つ以上の空間180、182、184にグループ化され得る。空間を生成する為に、システム内に存在する暗号ユーザIDの一般的なプールを検索して、空間のメンバーを定義することができる。チーム線形シーケンス160、170は、対応する空間線形シーケンス190、192、194に統合され得る(簡潔にする為、空間線形シーケンスの1つのインスタンスのみにラベルを付けている)。例えば、空間線形シーケンス190は、チーム線形シーケンス160及び空間線形シーケンス192を含み得、空間線形シーケンス192は、チーム線形シーケンス170及び空間線形シーケンス192を含み得るのに対し、空間線形シーケンス194は、チーム線形シーケンス170及び空間又はリスト194を含み得る。
暗号化されたデータに関連する権限のレコードは、本願で更に説明するように、チーム線形シーケンス160、170と対応する空間線形シーケンス190、192、194を組み合わせることによって計算され得る。権限及びメンバーシップを格納することに加えて、空間線形シーケンス190、192、194は、暗号化されたデータ及び/又は暗号化されたデータへの参照も格納できる。
チーム線形シーケンス160、170及び空間線形シーケンス190、192、194のコピーが、サーバ100と同様に、その暗号ユーザIDが対応するチーム及び空間のメンバーである全てのデバイス110~160に配布され得る。例えば、デバイス110~130は、デバイス110~130に関連する暗号ユーザIDがチーム2及び空間180のメンバーである故に、チーム線形シーケンス160及び空間線形シーケンス190のコピーを有する。別の例では、デバイス140は、デバイス140に関連するユーザデイブの暗号ユーザIDがチーム2と空間182、184のメンバーである故に、チーム線形シーケンス170と空間線形シーケンス192、194のコピーを有する。第3の例では、デバイス150は、デバイス150に関連付けられたユーザエレンの暗号ユーザIDがチーム2及び空間184のメンバーである故に、チーム線形シーケンス170及び空間線形シーケンス194のコピーを有する。
チーム線形シーケンス160、170及び空間線形シーケンス190、192、194に含まれるメタデータは平文で格納され得るのに対し、データの残りは暗号化され得る。メタデータは、チーム線形シーケンス160、170及び空間線形シーケンス190、192、194内に格納される権限情報、ポリシー情報、ロール等を含み得る。データの残りは、ファイル、ファイルシステム、メッセージ、及び/又は他の機密データ等の機密データを含み得る。例えば、暗号化されたデータがファイル及び/又はファイルシステムを含む場合、ファイル名は機密データの一部となり得る。ファイルシステム、ファイル、メッセージは、データの暗号化に使用された暗号鍵を知ることによってのみアクセスされ得る。攻撃者が暗号鍵、ユーザの秘密鍵、及び/又は認可されたエンドポイントデバイスの制御に成功したとしても、システムの侵害は限定的であろう。
例えば、攻撃者が空間182に関連する暗号鍵の制御を獲得した場合、攻撃者は空間182内の機密データにのみアクセスでき、空間184及び180内の機密データにはアクセスできないであろう。攻撃者がエレンの秘密鍵を入手した場合、攻撃者は空間184内の機密データにのみアクセスでき、空間180及び182内の機密データにはアクセスできない。このように、空間180、182、184への権限とアクセスを区分けすることで、システムの侵害を限定できる。
図2は、チーム線形シーケンスと空間線形シーケンスを示す。チーム線形シーケンス200は、チームメンバーのアイデンティティ及びチーム内の権限を追跡する為に使用され得る。空間線形シーケンス210は、チームメンバーのサブセットを認めることができる安全な区画を形成する為に使用され得る。安全な区画は、データを管理し、空間メンバー間で共有鍵をネゴシエートする為に使用される。チーム線形シーケンス200は、システムポリシーを含むプログラム220に接続され得、又、ファクトを含むデータベース230に接続され得る。空間線形シーケンス210は、チーム線形シーケンス200に依存して空間内のポリシーを決定できる。空間線形シーケンス210は、ファクトを含むデータベース250に接続され得る。
チーム線形シーケンス200及び空間線形シーケンス210は、夫々複数のブロック205、207、209、215(簡潔にする為4つのみにラベルを付けている)を含み得る。チーム線形シーケンス200の初期ブロック205は、チームの為のポリシーを定義することができる。ポリシーは、ロールと、ロールに関連する権限とを指定できる。例えば、ポリシーは、「管理者のみがチーム内に空間を作成できる」と指定できる。チームポリシーは、ポリシーデータベースに格納されたポリシーテンプレートから取得され得るものであり、及び/又は、第1のブロック205をインスタンス化する際に修正され得る。或いは、第1ブロック205は、ポリシーテンプレートを参照することなく、チームポリシーを定義できる。ポリシープログラム220は異なるチーム間で共有され得る。しかし、異なるチームは、異なるファクトデータベース230を有し得る。又、チームポリシーは、チームポリシー定義ブロック205が修正を許可する場合、チーム線形シーケンス200に追加された後時のブロックによって修正され得る。
ポリシープログラム220は、初期ブロック205にポリシーとして含まれる及び/又は修正され得るポリシーテンプレートを格納することができる。ファクトデータベース230は、システム内のユーザ及びユーザ権限を定義できる固有キー‐値ペアを含み得る。例えば、ファクトデータベース200に追加され得るキー‐値ペアは、アリスが管理者であることを指定するブロックが検証された後で、「アリス‐管理者」となり得る。
チーム線形シーケンス200のブロック207は、チーム200のメンバーであるユーザのプロファイルを含み得る。ユーザプロファイルは、Rivest‐Shamir‐Adleman(RSA)又はDiffie Hellman(DH)等の非対称暗号アルゴリズムにおける公開鍵等の暗号ユーザIDによって表され得るユーザのアイデンティティ240を含み得る。秘密鍵は、そのユーザのみが所有し得る。ユーザプロファイルは、ユーザが承認した全てのデバイスに関連付けられた暗号デバイスID242、244も含み得る。
デバイスがシステムに追加される方法は複数ある。例えば、ユーザは、デバイスをシステムに追加する要求を送信することによってデバイスを承認することができ、この要求は、ユーザの秘密鍵で署名される。別の例では、デバイスを承認する為に、ユーザは複数段階のプロセスを実行することができる。第1のステップでは、ユーザは非対称暗号アルゴリズムを使用して新たなデバイス鍵のセットを作成することができる。第2のステップでは、ユーザは、ユーザの秘密鍵でデバイス鍵に署名し、デバイス公開鍵とユーザの秘密鍵の署名を含むデバイス証明書を作成することができる。第3のステップでは、デバイスは、第2のステップからの証明書を含む、チームに追加する要求を送信することができ、この要求は、デバイスの秘密鍵を使用して署名される。システムは、ユーザの公開鍵を用いて要求を検証することにより、チームメンバーが要求を行ったことを認証することができる。暗号デバイスIDは、非対称暗号アルゴリズムの公開鍵の暗号化ハッシュであり得、一方、秘密鍵は、デバイスにのみ知られ得るものであり、デバイスによって実行されるアクションを認証する為に使用され得る。
チーム線形シーケンス200のブロック209は、新規ユーザの追加、空間線形シーケンス210の作成、ポリシー205の変更、既存ユーザの削除、及び/又はユーザのロールの変更等のイベントを含み得る。
空間線形シーケンス210のブロック215は、空間へのユーザの追加、空間への暗号化されたデータの追加、空間からのユーザの削除等のイベントを含み得る。空間線形シーケンス210の各イベント215は、チーム線形シーケンス200で定義されたポリシーに準拠する。幾つかの実施形態では、ポリシーは、空間線形シーケンス210では変更できず、チーム線形シーケンス200で変更されなければならない。チームは、異なるポリシーを有する複数の空間タイプを定義し、異なる空間タイプに対応する空間を確立することによって、異なるポリシーを有する複数の空間を有し得る。例えば、空間タイプは、全てのユーザが管理者のロールを有し、管理者が他のユーザを追加及び削除し、暗号化されたデータに対する読み取り及び書き込みアクセスを有し得る「管理者空間タイプ」を含み得る。別の例では、空間タイプは「層別空間タイプ」を含み得、その場合一部のユーザが管理者ロールを有し、一部のユーザがユーザロールを有し、管理者ロールはユーザロールより多くの権限を有する。ユーザの権限を変更するチーム線形シーケンス210内のイベントは、ファクトデータベース250に格納され得る。
ユーザポリシー205は、特定の属性に一致するユーザが、限られた時間だけ空間線形シーケンス210及び空間暗号化されたデータにアクセスすることを可能にするように定義され得る。時間の経過は、空間線形シーケンス210の各ブロック215に対してタイムスタンプ260、270、280、290を提供できる常に増加するクロックによって測定され得る。タイムスタンプ260は、例えば、「2019年11月21日AM11:46(PST)」と記載され得る。空間線形シーケンス210において、タイムスタンプ260、270、280、290は、後続のブロック間で常に増加している。空間線形シーケンス210及び関連する暗号化されたデータへの時間制限されたアクセスを可能にする為に、ユーザポリシー205は、「プロファイル1に関連するユーザは、2019年12月2日まで線形シーケンスにアクセスすることができる」と述べることができる。
図3は、チーム線形シーケンスと空間線形シーケンスとの間の線形順序付けを示す。権限を少なくとも部分的に定義するポリシーはチーム線形シーケンス310に格納されるので、空間線形シーケンス300における権限を計算する為に、チーム線形シーケンス310への参照がなされる必要がある。
例えば、空間線形シーケンス300のブロック320において、空間ユーザは、別のユーザを追加することを要求する。チーム線形シーケンス310のブロック330において、ポリシーは、別の空間ユーザを追加する空間ユーザの権限を定義したが、チーム線形シーケンス310のブロック340において、ポリシーは、空間ユーザが他の空間ユーザを追加することを防ぐ為に修正された。ブロック320が有効であり、空間線形シーケンス300に追加されるべきかどうかを決定する為に、チーム線形シーケンス310のブロック330、340と空間線形シーケンス300のブロック320、350、360の線形シーケンスが確立される必要がある。
線形シーケンスを確立する為に、空間線形シーケンス300におけるブロック320、350、360とチーム線形シーケンス310におけるブロック330、340との間に時間的関係370、380、390が確立され得る。時間的関係370、380、390は、空間ブロック320、350、360から、空間ブロック320、350、360の直前又は直後の後継者であるチームブロックへのポインタを含み得る。図3において、時間的関係370、380、390は、空間ブロック320、350、360から直前のチームブロックを指し示す。例えば、時間的関係370、380は、チームブロック330が空間ブロック320、350の直前であることを示し、空間ブロック320、350がチームブロック330の後であるがチームブロック340の前に作成されたことを意味する。同様に、時間的関係290は、空間ブロック360がチームブロック340の後に作成されたことを示す。
図4は、ブロックの構造を示す。ブロック400、410は、1つ以上のイベント1~6を含み得る。ブロック400、410のイベント1~6はアトミックであり得る。各イベント1~6は単一のブロック400、410においてコミットされる。
トランザクションは、最後のイベントが署名される1つ以上のイベントを含み得る。トランザクションは、図1におけるクライアント110のような単一のクライアントによって生成され得る。トランザクションが複数のイベント、例えばイベント1及び2を含むトランザクション1を含む場合、イベントはサーバに送信される前にクライアントによって順序付けされ得る。イベントの順序付けは、矢印420、430、440、450を使用して示される。複数のクライアントからトランザクション1~4を受信すると、サーバは、矢印420、430、440、450によって示される順序に従ってトランザクションを順序付けることができる。
1つのトランザクション内のイベントは互いに指し示し合い、最後のイベントが署名される。例えば、イベント1と2は単一のトランザクション1を形成する。同様に、イベント5と6は単一のトランザクション4を形成する。イベント3とイベント2の間の矢印420は、サーバがイベント1の後にイベント3を線形シーケンスにコミットすべきことを示す。同様に、イベント5とイベント6の間の矢印430は、サーバがイベント5の後にイベント6を線形シーケンスにコミットすべきことを示す。
一実施形態では、イベント1及び2は単一のクライアントから来るが、イベント3はイベント1及び2と同じクライアントから来ることも、異なるクライアントから来ることもあり得る。同様に、イベント5及び6は、単一のクライアントから来るが、イベント4は、同じクライアントから来ることも、異なるクライアントから来ることもあり得る。更にこの実施形態では、図4に示すように、トランザクション1~4を作成するクライアントが少なくとも1つ、最大で4つ存在することが可能である。例えば、単一のクライアントが、イベント1及び2を含むトランザクション1をオーサリングすることができる。第2のクライアントは、イベント3を含むトランザクション2をオーサリングすることができる。第3のクライアントは、イベント4を含むトランザクション3をオーサリングすることができ、第4のクライアントは、イベント5及び6を含むトランザクション4をオーサリングすることができる。
複数のイベント、例えばイベント1~3をアトミックな方法で追加する必要がある場合、イベント1~3を単一のブロック400に結合し、ブロック400は線形シーケンスで格納され得る。ブロック400,410では、夫々イベント3、6のような最後のイベントのみが署名され得、ブロック400、410のイベント1~3、4~6は、意図したブロックに意図した順序で全て現れなければ、何れも有効でない。
ブロック400、410内のイベント1~6は、本願で説明するように、暗号的に署名され、認証された線形シーケンスで記録される。線形シーケンスの構造は、或る指数nを有するブロックを受け入れる図1のデバイス110~160が、n未満の指数を有する全てのブロックの内容に関して確実に合意することを保証する。ブロック400、410は、図4において夫々指数1、2を有する。
ブロック400、410が確定されると、ブロック400、410はブロックIDを得る。ブロックを確定することは、ブロックを耐久ストレージにコミットし、ブロックを変更しないことを意味する。ブロックIDは、ブロックの指数と、そのコンテンツの暗号化ハッシュとのタプルである。所与のブロックnについて、ブロックn+1において線形シーケンスに追加されることが意図される全てのイベントは、ブロックnのブロックIDを含み得る。これにより、デバイス110~160のイベントの意図した順序付けの保持が確実になる。更に、ブロック0からnまでのブロック順序及び内容に同意するデバイスのみが、ブロックn+1におけるイベントを受け入れることができる。
図5は、システム内に存在し得るポリシーの様々なレイヤーの検証を示す。イベント500は、イベント500の拒否又は受け入れの何れかを行い、任意にファクトデータベース510、520を更新し得る正規のポリシーを使用して処理される。ファクトデータベース510、520は、ポリシーに関する線形シーケンス上の指数である。指数は鍵値ペアの集合である。例えば、ファクトデータベース510、520は、イベント500及びそれを許可したポリシールールによって生成されたファクトを記録できる。ファクトデータベース510、520は、イベント500が有効であり、チーム線形シーケンス、又は空間線形シーケンス等の線形シーケンスで受け入れられるべきであるかどうかを判断する時に、ポリシープレッサーによって読み取られ得る。
図1のサーバ100がイベント500を受信すると、サーバは、イベント500を次のブロックに含めることができる。デバイス110~160がイベント500を受信すると、デバイスは、ビジネスニーズに基づいてイベント500を処理できる。
システムポリシー530は、デバイス110~160及びサーバ100によって実装される。全ての協働デバイス110~160は、同じブロックを処理するに当たり、同じシステムポリシー530を使用しなければならない。一実施形態では、システムポリシー530は、Rust、Python、Go、又は独自のポリシー言語等のプログラミング言語におけるソースコードとして実装され得る。システムポリシー530は、ブロック自体の構造を記述する。システムポリシー530は、「ブロックnの全てのイベントはブロックn-1を参照しなければならない」等の線形シーケンスのコアプロトコルを記述する。
ユーザポリシー540は、図2におけるチームポリシー205であり得る。チームポリシー205は、顧客によって提供され、顧客の組織に合わせられ得る。全ての当事者がユーザポリシー540に同意することを保証する為に、ユーザポリシー540は、図3のチーム線形シーケンス310等の線形シーケンスに格納され得、特定の線形シーケンスで協働する全てのユーザに対して同じであることが保証される。チームポリシールールの一例は、「チーム管理者のみがチームに新メンバーを追加できる」である。
アプリケーションポリシー550は、図1のチーム160、170毎に定義され得る。アプリケーションポリシーと他のポリシーとの間の重要な違いは、アプリケーションポリシーが、任意の暗号文が復号された後に動作することである。その結果、アプリケーションポリシーは、サーバによって確認され得ない。アプリケーションポリシーは、権限を記録しなくてもよく、「2つのファイルが同じ名前を有することはできない」等の低レベルのルールを指定することができる。アプリケーションポリシー550は、「2つのファイルが同じ名前を有する場合、2番目のファイルは無視される」等の低レベルの競合を解決するルールを符号化することができる。システムポリシー530、ユーザポリシー540及び/又はアプリケーションポリシー550を含むポリシーは、図2のチーム線形シーケンス200及び空間線形シーケンス210等の線形シーケンスを使用して、プログラム中に固定されるか、又は管理され得る。
図6は、システム内に存在し得る様々な暗号IDを示す。アイデンティティは、セキュリティの基盤を形成する。アイデンティティは、RSA、DH又は他の非対称アルゴリズムを使用してオフラインで生成された非対称鍵ペア等の暗号識別(ID)により表される。非対称鍵ペアからの公開鍵はエンティティの暗号アイデンティティとして使用されるのに対し、非対称鍵ペアからの秘密鍵はエンティティのみが知ることができる。ルート非対称鍵ペアをオフラインで生成することで、鍵ペアが悪意あるアクターによって侵害されることを防ぐことができる。デバイス鍵はオンラインで生成され得るが、ハードウェアセキュリティモジュール(HSM)に格納されてもよい。
暗号デバイスIDや暗号ユーザID等の暗号IDは、夫々デバイスやユーザ等、システム内の単一のエンティティを表す。その結果、暗号IDを使用して確立されたIDはグローバルに区別される。一実施形態では、管理者がユーザを区別しなくても、ユーザはチーム間で一意である。又、メンバーを共有しないチーム等の非協働グループ間でも、暗号IDを使用して確立されたアイデンティティはグローバルに区別されたままである。
暗号ユーザIDは、システム内で運用されるデバイス鍵の署名/認証に使用され得る。デバイスは、管理署名鍵、メッセージ署名鍵、及びデバイス暗号化鍵の3つの鍵タイプを含む暗号デバイスIDを使用できる。これらの鍵タイプは全て非対称鍵ペアであり、アプリケーションの外部で、オペレーティングシステム(OS)鍵ストア又はハードウェアセキュリティモジュール(HSM)で管理され得る。
アイデンティティ証明書600は、復元秘密から決定論的に生成され得、新たなデバイスをプロビジョニングする時に復元秘密の効率的なハンドトランスクリプションを可能にする。
管理署名鍵610は、高リスクの操作で使用され得、任意の署名要求に対してユーザの存在証明を要求することができる。高リスクの操作の例は、ユーザを追加すること、又はパーミッションを変更することである。
メッセージ署名鍵620は、図1の装置110~160によって送信される殆どのデータに署名する為に使用され得、存在証明を必要としない。メッセージ署名キー620の一使用例は、チャットで送信されるメッセージに署名すること、又はアップロードされるファイルに署名することである。
デバイス暗号化鍵630は、デバイスに機密メッセージを送信することが必要な場合に使用され得る。デバイス暗号化鍵630は、デバイス間通信の前方秘匿性を提供する為に、頻繁にローテーションされ得る。
図7は、ブロックがどのように複数のデバイスに分散され得るかを示す。デバイス700、710、720は、同じ空間及び/又はチームに属し得る。それらは全て、線形シーケンス730のコピーを有し得る。デバイス700等のデバイスの1つが線形シーケンス700に新たなブロック740を追加すると、デバイス700は新たなブロック740をサーバ750に送信する。
サーバ750も線形シーケンス730のコピーを有する。サーバ750は、ユーザがブロック740に表される操作を実行する権限を有するかどうかを計算することによって、ブロック740が有効であるかどうかを計算できる。ユーザが権限を有するかどうかを判断する為に、サーバ750は、線形シーケンス730から権限を計算できる。権限計算を以下に説明する。
ブロックが有効であることをサーバ750が確認すると、サーバは、ブロック740をデバイス710、720に配布することができ、デバイスのほうも、ブロック740が有効であるかどうかを、線形シーケンス730に記録された権限に基づいて計算できる。デバイス710、720が、ブロックが有効でないと判断した場合、システム侵害が発生した可能性が高い為、デバイスはシャットダウンすることができる。
デバイス700、710、720は、それらが同じ空間にある場合、暗号化されたデータ760を共有し得る。暗号化されたデータ760は、以下に説明する機密セッション鍵等の少なくとも1つの暗号キーを用いて暗号化される。異なるデバイス700、710、720は、読み取り専用、書き込み専用、及び読み取りと書き込みの権限等、暗号化されたデータ760に対して異なる権限を有し得る。
サーバ750は、暗号化された機密データ760を格納することもできるが、サーバ750は、機密セッション鍵を含めて如何なる暗号鍵も格納しない。サーバ750は、暗号化されたデータ760に対する如何なる権限も有さない。サーバ750は、データの可用性を確保する為に、暗号化されたデータ750のコピーを有する。例えば、デバイス700、710がオフラインであり、空間の新たに追加されたメンバーとしてのデバイス720が、暗号化された機密データ760を要求した場合、サーバ750は、デバイス700、710がオフラインであっても、デバイス720に暗号化された機密データ760を提供できる。
図8は、ブロックを含む線形シーケンスを示す。線形シーケンス800は、少なくともブロック810、820、830を含む。ブロック810は複数のイベント812、814を含むのに対し、ブロック820はイベント822、824を含む。ブロック810は線形シーケンス800の初期ブロックであり、線形シーケンス800の権限を定義するポリシー816を含む。ブロック820等の後続のブロックにおける各イベントは、イベント822、824がポリシー816と一致することを確認する為に検証され得る。
初期ブロックに続く、ブロック820等の各ブロックは、先行ブロックの暗号化ハッシュ826を含み、それは、ブロック820についてはブロック810のハッシュとなる。先行ブロックの暗号化ハッシュを含むことによって、線形シーケンス800内のブロックの順序付けを保証することができ、既存のブロックの順序変更又は編集、及び/又は線形シーケンス800内の新たなブロックの挿入が検出され、自動的に拒否され得る。
線形シーケンス800は、分岐のない線形シーケンスである為、ブロックの有効性を検証する為のプルーフ・オブ・ワークを必要としない。更に、ブロックがリストに追加された時点で、そのブロックの有効性が線形シーケンス800に記録されたポリシーと権限に準拠していることが確認されており、そのブロックは削除され得ない。即ち、順序リスト800はロールバックされ得ない。
初期ブロック810内では、イベント812がアリスをユーザとして確立する。このイベントはアリスによって署名されており、これは、アリスが自身の秘密鍵を使用して、ステートメント「アリスはユーザである」を暗号化することを意味する。アリスが本当にユーザとして確立されることを要求していることを検証する為に、プロセッサは、アリスの公開鍵を使用して、署名されたステートメント「アリスはユーザである」を検証し、検証が成功すれば、プロセッサには、アリスが本当にユーザを確立することを要求したことが分り得る。
イベント814はアリスを管理者として確立する。同様に、イベントは署名され、プロセッサは、上記で説明したように、アリスのアイデンティティを検証することができる。ブロック810は初期ブロックである為、線形シーケンスの為のポリシー816が確立される。例えば、ポリシー816は、「管理者のみがユーザを追加できる」と述べることができる。ブロック810が線形シーケンス800にコミットされると、システムの有効なロールは、アリスが管理者であり、アリスがユーザであることである。
ブロック820のイベント822は、ボブがユーザであることを確立する。アリスがユーザを追加する権限を有するかどうかを計算する為に、プロセッサは、イベント812、814によって確立されたシステム内のポリシー816及びアリスのロールを確認することができる。ポリシーは、管理者のみがユーザを追加できることを指定するので、プロセッサは、アリスが管理者であるかどうかを確認する。アリスが管理者であることを確認すると、プロセッサは、アリスがボブをユーザとして追加する権限を有することを確認することができる。初期ブロック812、814に含まれるイベントに続く各イベントは、ポリシー816に対して確認され得、イベントを認可するポリシーは記録され得る。例えば、イベント822について、ブロック820は、「管理者のみがユーザを追加できる」というポリシーを指し示すことができ、プロセッサは、「アリスが管理者である」というファクトデータベースに格納されたファクトがあることを確認できる。
イベント824はキャロルをユーザとして追加し、又、上記で説明したように、アリスによって署名されなければならない。イベント822は、イベントを認可したポリシー、即ち、「アリスが管理者である」というファクトによってサポートされる「管理者のみがユーザを追加できる」と述べるポリシーも指し示すことができる。ハッシュ826は、ブロック810、820の線形シーケンスを作成する。ブロック820が線形シーケンス800にコミットされた後で、システムにおける有効なロールは、アリスが管理者であり、アリス、ボブ、及びキャロルがユーザであるということである。
他のロールは、法務、技術、営業等のチーム内で定義され得る。各ロールは、対応する空間タイプへのアクセス権を付与され得る。例えば、アリスが「法務」のロールを有する場合、アリスは、タイプ「法務」を有する全ての空間へのアクセスを付与され得る。アリスの「法務」ロールが取り消された場合、アリスは、タイプ「法務」を有する空間へのアクセスを自動的に失い得る。
図9は、チーム線形シーケンスと空間線形シーケンスを示す。この例では、チーム線形シーケンス900とブロック線形シーケンスは、1つのみのイベントを含むブロックを含む。チーム線形シーケンス900は、初期ブロック910と、チームと任意の空間のポリシーを確立するポリシー920にリンクした接続915を使用して初期化される。ブロック930で、アリスがボブをユーザとして追加し、このイベントは、接続935を使用して、それを認可するポリシー920にリンクさせることができる。
ブロック940で、ボブは空間「計画」を作成し、そのイベントは、ユーザとしてのボブが、空間を作成する権限を有することを保証する為に、ポリシー920にリンクされる。デフォルトで、空間の作成者のみが、空間線形シーケンス970上での空間に対する管理権限を付与される。ポリシー920がユーザが空間を作成する権限を有する場合、ブロック930は検証され、イベントは接続945を使用してポリシー920にリンクされ、ブロック940はチーム線形シーケンス900に追加される。ボブが空間「計画」を作成すると、空間線形シーケンス970が確立され、初期ブロック980がブロック940を指し示し、リストがブロック940の後であるが以下に説明するブロック950の前に作成されたことを示す。
ブロック950で、アリスは、空間作成を管理者に限定する。このアクションはポリシー920を変更する。ブロック950が有効であるかどうかを検証する為に、プロセッサは、ポリシー920を確認して、ポリシーが、管理者がポリシーを変更することを許可しているかどうかを確認する必要がある。ポリシー920が管理者がポリシーを変更することを許可している場合、イベントは、接続955を使用して、管理者がポリシーを変更することを許可するポリシー920の部分にリンクされ、新たなポリシー925が確立される。ブロック950の後で、ボブが空間を作成できないとしても、ブロック942でボブが空間を作成する権限を有していたので、ボブが作成した空間は有効である。ブロック960で、アリスはキャロルを追加し、このイベントは新たなポリシー925に対して確認される。このイベントが新たなポリシー925によって承認されると、接続965は、イベントを承認する新たなポリシー925のその部分に対して確立される。
空間線形シーケンス970のブロック990において、ボブはキャロルをユーザとして追加する。ブロック990が有効であるかどうかを確認する為に、プロセッサは、新たなポリシー925を確認して、ポリシー925が空間ユーザが他の空間ユーザを追加することを許可しているかどうかを確認する必要がある。ポリシー925は、ユーザがユーザを追加することを許可し、イベントは、接続995を使用して、イベントを許可するポリシー925の部分にリンクされる。
先に説明したように、チームメンバーのみがその空間に追加され得る。ボブがブロック950の前にキャロルを追加しようとすると、ファクトベース及び/又はチーム線形シーケンス900を確認した後で、プロセッサは、キャロルがチームのメンバーでないと判断できるので、プロセッサはブロック990の追加を承認しないことになる。しかし、ブロック960の後にボブがキャロルを空間線形シーケンス970に追加しようとすると、プロセッサは、ポリシーが空間ユーザが空間ユーザを追加することを許可し、キャロルがチームのメンバーであるので、ブロック990の追加を承認することになる。
図10A~Bは、悪意のあるアクターがシステムに侵入しようとする場合の権限計算を示す。この例は、各デバイス1010~1030が線形シーケンス1040の有効性と線形シーケンス1040に記録された権限を独立して確認し保証するので、サーバ1000の侵害がデバイス1010、1020、1030を侵害しない様子を示すものである。
サーバ1000が、例えば、不正なブロック1050を不正に検証してデバイス1010~1030に配布するようにサーバ1000を強制する悪意のあるサーバ管理者によって侵害された場合、各デバイス1010~1030は、ブロック1050の有効性を独立して検証できる。
図10Bにおいて、各デバイス1010~1030は、線形シーケンス1040の最終ブロックのハッシュ1060が有効であることを独立して検証することができる。各デバイス1010~1030は、ユーザが有効なロールであることを検証できる。各デバイス1010~1030は、ブロック1050を提出する前に、マル(Mal)が、サーバ1000が自分の為に公開鍵と秘密鍵とを生成し、公開鍵をデバイス1010~1030に配布することを要求したので、マルの署名が有効であることを確認することができる。しかし、システムポリシーによれば、管理者やユーザ等の既存のメンバーのみが新たなユーザを追加でき、且つマルは管理者でもユーザでもないので、デバイス1010~1030はブロック1050が有効でないと判断することができる。ブロック1050はポリシーを満たさないので、全てのデバイス1010~1030はブロック1050を拒否することができる。更に、デバイス1010~1030は、サーバ1000が侵害されたと結論付けることができる為、サーバ1000から無効なトランザクションを受信すると、デバイス1010~1030はシャットダウンすることができる。
図11A~Cは、暗号化されたデータへのアクセスが、権限失効時にどのように制御され得るかを示す。デバイス1100、1110、1120は、例えば、同じ空間の一部であることによって、暗号化されたデータ1130を共有し得る。暗号化されたデータ1130は、データの暗号化及び復号の両方に同じ鍵を使用する対称鍵アルゴリズムである高度暗号化標準(Advanced Encryption Standard、AES)を使用して暗号化され得る。暗号化された機密データ1130は、デバイス1100~1120及びサーバ1140に格納され得る。AESキーは、暗号化されたデータ1130にアクセスする権限を有するデバイス1100~1120にのみ知られ得る。
アリスが管理者であり、ユーザを削除する権限を有すると仮定すると、アリスは、「キャロルはユーザではない」というブロック1150をサーバに提出することができ、従って、アリスとボブとの間で共有される将来のあらゆる暗号化されたデータに対するキャロルの権限を失効させることができる。サーバ1140は、図11Bに見られるように、ブロック1150を全てのデバイス1110~1120に配布することができる。
デバイス1110~1120によってブロック1150が検証されると、キャロル及び彼女のデバイス1120は、任意の将来の暗号化されたデータにアクセスする権限を喪失する。キャロルと彼女のデバイス1120が、アリスとボブの間で共有される任意の将来の暗号化されたデータにアクセスできないことを保証する為に、デバイス1100、1110は、新たなチャネルセッション鍵を生成する。
新たなチャネルセッション鍵は、例えば、P‐384楕円曲線を用いた楕円曲線暗号等の暗号方式を用いて生成され得る。チャネルセッション鍵は、楕円曲線暗号の場合、ドメインパラメータ等の秘密鍵生成材料1170を使用して生成され得る。ドメインパラメータは、楕円曲線Y=X+AX+Bを定義する定数A、Bを含み得る。
鍵を共有する新たなデバイスのグループは、線形シーケンス1160に基づいて計算される。秘密鍵生成材料1170は、新たなデバイスグループに残ったデバイスに属する非対称暗号アルゴリズムの公開鍵の夫々を使用して暗号化される。暗号化された秘密鍵生成材料1170は、グループ内の全てのデバイスに配布される。デバイス1100、1110は、自身の非対称暗号アルゴリズムの秘密鍵を使用して、受信した暗号化メッセージを復号してもよい。その結果、暗号化に用いた公開鍵に対応する秘密鍵を有するデバイス1100、1110のみが、新たなチャネルセッション鍵を計算することができる。
秘密鍵生成材料1170を受信するデバイス1100、1110は、チャネルセッション鍵の秘密部分1172とチャネルセッション鍵の公開部分1174とを計算することができ、チャネルセッション鍵の公開部分1174を線形シーケンス1160に記録できる。チャネルセッション鍵の公開部分1174を線形シーケンス1160にコミットした結果、線形シーケンス1160へのアクセスを有するクライアントは、公開部分1174にアクセスし、線形シーケンス1160への書き込み専用アクセスを有し得る。クライアントは、秘密鍵生成材料1170及び/又はチャネルセッション鍵の秘密部分1172を有していないので、クライアントは、線形シーケンス1160に関連付けられた暗号化されたデータの何れも読み取ることができない。チャネルセッション鍵の秘密部分1172は線形シーケンス1160に記録されない。
線形シーケンス1160は、プルーフ・オブ・ワークを必要とせず、線形シーケンス1160を複製することは計算上実行可能であり得るので、図11Cに見られるように、侵害されたサーバ1140は、2つの異なる線形シーケンス1162、1164を2つのユーザグループに提示することができる。例えば、侵害されたサーバ1140は、デバイス1120へのブロック1150の配布を拒否することができ、従って、デバイス1120に、依然としてグループ内にあると信じさせ、デバイス1120の暗号化されたデータ1190をデバイス1100及び1110と共有しようとさせることができる。その結果、新たなチャネルセッション鍵1180が、線形シーケンス1160の最終ブロック1150のハッシュに基づいて計算され得る。例えば、新たなチャネルセッション鍵1180は、HKDF(図11Bのチャネルセッション鍵、ブロック1150のハッシュ)を実行することによって取得され得る。その結果、デバイス1100及び1110は、デバイス1120と同じ最終ブロックを共有しないので、デバイス1120は、同じチャネルセッション鍵1180を計算できない。
同じ空間アリス及びボブのユーザに加えて、ゲストユーザは、アリス及びボブと同じ空間に含まれる暗号化されたデータへのアクセスを一時的に許可され得る。ゲストユーザは、チーム線形シーケンス1160にアクセスできず、空間線形シーケンス1160内のユーザの権限を検証することができない。しかしながら、ゲストユーザは、依然として、アリス及びボブとチャネルセッション鍵をネゴシエートし、暗号化されたデータ1130への一時的なアクセスを付与され得る。
図12は、分散型台帳を介して、1つ以上の信頼できるデバイスによる暗号化されたデータへのアクセスとは別に権限を管理する方法のフローチャートであり、信頼できるデバイスの夫々は、少なくとも1つの暗号鍵ベースのアイデンティティに対応する。ステップ1200において、プロセッサは、ユーザの権限を定義するブロックを作成することができる。ブロックは、ユーザを一意に識別する暗号ユーザIDと、暗号ユーザIDに関連付けられた権限とを含み得る。権限は、暗号化されたデータに対して実行する為に、暗号ユーザIDに関連付けられた少なくとも1つの操作を定義することができる。操作は、読み取り専用、書き込み専用、又は読み取り及び書き込みを含み得る。作業に承認を必要とするビットコイン台帳とは異なり、ブロックは作業を承認するエントリを必要としない為、ブロックの作成は、ブロックのプルーフ・オブ・ワークを生成する為に平均で10分のプロセッサ時間を必要とするビットコインと比較して、プロセッサ負荷がより少ない。
ステップ1210において、プロセッサは、暗号化されたデータに関連する権限を定義する複数のブロックを含む線形シーケンスの末尾にブロックを付加し、複数のブロック内の各ブロックのメンバーシップ及び順序付けを保持することができる。ブロックのメンバーシップを保持する為に、線形シーケンス内のどのブロックも削除することはできない。言い換えると、削除は線形シーケンスに対して許されない操作である。複数のブロック間の各ブロックの順序を保持する為に、ロールバックは線形シーケンスの操作として許可されない。つまり、線形シーケンスは分岐できず、線形シーケンスに追加されたブロックの内容は変更及び/又は編集され得ない。ブロックの削除と修正の禁止は線形シーケンスの完全性を保証する。言い換えると、ブロックが線形シーケンスに追加されると、そのブロックは線形シーケンスに恒久的に存在する。更に、ブロックが線形シーケンスに追加される前に、ブロックの内容が線形シーケンスの先行するブロックと一致することを確認する為に、ブロックの内容が検証されなければならない。
ステップ1220において、プロセッサは、暗号化されたデータにアクセスする要求を受信することができる。要求は、要求を行うユーザに関連付けられた暗号ユーザIDを含み得る。暗号化されたデータへのアクセスは、読み取り専用、書き込み専用、又は読み取り及び書き込みの両方のアクセスを含み得る。
ステップ1230において、プロセッサは、図8、図9、及び図10A~Bに示すように、線形シーケンスに記録された権限を計算することによって、要求を行うユーザが暗号化されたデータにアクセスする権限を有するかどうかを判断することができる。権限を計算する為に、プロセッサは、初期ブロックから最終ブロックまでの線形シーケンスを確認して、ユーザのロールと各ロールに関連する権限を判断し、ユーザからの要求をユーザのロールと比較することができる。言い換えると、プロセッサは、線形シーケンスに記録された権限によって暗号ユーザIDによるアクセスが許可されていることを確認することによって、暗号ユーザIDによる暗号化されたデータへのアクセスを管理することができる。
ステップ1240において、プロセッサは、要求を行ったユーザが暗号化されたデータにアクセスする権限を有すると判断した場合に、要求を行ったユーザに対して暗号化されたデータへのアクセスを付与できる。
プロセッサは、ロール及びロールに関連付けられた権限を指定するポリシーを定義する線形シーケンスの初期ブロックを作成することができる。例えば、図8における初期ブロック810は、図8におけるポリシー816を定義する。更に、プロセッサは、暗号ユーザIDに関連するロールを定義する線形シーケンスのブロックを作成することができる。ブロックは、ポリシーを定義することに加えて、図8のイベント814でアリスが管理者であることを定義する図8に示すような初期ブロック810であってもよく、又は、ブロックは、図8のブロック820等、ボブ及びキャロルをユーザとして定義する後続ブロックであってもよい。
複数のブロックにおける各ブロックの順序を保持する為に、プロセッサは、後続の各ブロックに各先行ブロックの暗号化ハッシュ(「ハッシュ」)を含めることができ、従って、図8で説明したように、順序付けシーケンスにおける如何なる変化も検出することを可能にする。例えば、プロセッサは、複数のブロックの中の第2のブロックに含まれるデータの第2の暗号化ハッシュを計算できる。第2のブロックは、線形シーケンスにおける初期ブロック、又は任意のブロックであり得る。プロセッサは、第2の暗号化ハッシュを第2のブロック内に格納することができ、第2のブロックに続くブロックに含まれるデータに第2の暗号化ハッシュを含めることができる。
線形シーケンス内のブロックのメンバーシップを保持する為に、プロセッサは、線形シーケンスに対して実行される操作のセットを定義することができ、定義されたセット以外の操作は、線形シーケンス内で実行され得ない。定義されたセットは、線形シーケンスの削除、分岐、及び/又は線形シーケンス内のデータの修正等の操作を除外することができる。
侵害された中央サーバによって線形シーケンス及び/又は暗号化されたデータが破損されるような障害の可能性を低減する為に、プロセッサは、線形シーケンスを複数のデバイスに分散することができる。複数のデバイスの各デバイスは、図2で説明したように、線形シーケンスに関連付けられた暗号ユーザIDによって暗号的に検証され得る。例えば、認可されたデバイスのリストにデバイスを追加するには、図2で説明したように、既に認可された暗号ユーザIDが、デバイスのアクセスを要求する必要がある。要求を受信すると、プロセッサは、暗号ユーザIDの公開鍵を使用して要求を復号することにより、暗号ユーザIDが実際に要求を行ったことを検証することができる。検証後、プロセッサは、暗号デバイスIDをデバイスに割り当てることができる。
暗号デバイスIDを有する複数のデバイスの内の各デバイスは、図10A~Bで説明したように、線形シーケンスに基づいて計算された権限に基づいて、要求の有効性を独立して検証することができる。或るデバイスが、計算された権限に基づいてブロックが有効であることを検証できない場合、そのデバイスはブロックの追加を拒否することができる。検証に失敗すると、デバイスは、デバイス上の暗号化されたデータの改竄を防止する為に、シャットダウンすることができる。
プロセッサは、効率化の為に、暗号化されたデータを共有できる人々のグループを見つける為に全ての暗号IDを検索する必要がないように、暗号ユーザIDのチームを定義することができる。チームを作成する為に、プロセッサは、複数のブロックを含むチーム線形シーケンスを作成することができる。複数のブロックは、1つ以上のポリシーブロック、1つ以上のプロファイルブロック、及び1つ以上の権限ブロックを含み得る。1つ以上のポリシーブロックは、ロール及びロールに関連する権限を確立するポリシーを定義することができ、1つ以上のプロファイルブロックは、暗号ユーザID及び暗号ユーザIDに関連する暗号デバイスIDを確立することができ、1つ以上の権限ブロックは、暗号ユーザIDに関連するロールを定義することができる。チーム線形シーケンスは、本願で説明した線形シーケンスのインスタンスであり、同じ特性を有する。
チーム線形シーケンス等の線形シーケンスの初期ブロックに記録されたポリシーは、初期ブロックに記録されたポリシーが修正を許可する場合に修正され得る。初期ブロックに記録されたポリシーが修正を許可しない場合、ポリシーを修正しようとするブロックは、複数のデバイスによって検証されない。
ポリシーを修正する為に、プロセッサは、1つ以上のポリシーブロックに定義されたポリシーを修正する要求と、その要求を行うユーザの暗号IDを取得することができる。プロセッサは、チーム線形シーケンスから暗号IDに関連する権限を決定することによって、暗号ユーザIDがポリシーを修正する権限を有するかどうかを確認することができる。通常、管理者のみがポリシーの修正を許可されており、プロセッサは、暗号ユーザIDが管理者又はユーザのロールを有するかどうかを確認することができる。暗号ユーザIDがユーザのロールを有する場合、プロセッサはブロックの検証を拒否することができる。暗号ユーザIDが許可されていると判断すると、プロセッサは、修正を指定するポリシーブロックを作成し、チーム線形シーケンスの末尾に修正を定義するポリシーブロックを付加することができる。
プロセッサがチームを定義すると、プロセッサは、チーム内の空間を定義することができ、この空間は、暗号化されたデータを秘密に共有し得るチームメンバーのサブセットを有している。空間メンバーシップは、チームのメンバーシップと同じであっても、又はチームのメンバーシップよりも小規模であってもよい。空間は、暗号化されたデータ及び暗号化されたデータへのアクセスを定義する仮想区画である。空間は、空間のメンバーのみが知っている暗号鍵を使用した暗号化されたデータを含み得る。
空間を定義する為に、プロセッサは、空間線形シーケンスを作成することによって、メンバー及び暗号化されたデータを表現することができる。効率化の為に、空間線形シーケンスは、複数の線形シーケンスに細分化され得る。例えば、空間線形シーケンスは、権限線形シーケンスと、暗号化されたデータ線形シーケンスとに細分化され得る。権限線形シーケンスは、暗号ユーザIDの空間内でのロールを定義できる。暗号ユーザIDは空間のメンバーであり、そのロールは、チームの1つ以上のポリシーブロックに定義されたポリシーと一致する。暗号化されたデータ線形シーケンスは、暗号化されたデータの少なくとも一部の追加、削除、又は修正等、暗号化されたデータに対して実行された操作を記録できる。
暗号化されたデータは、ファイル、電子メール、メッセージ等、複数のタイプの暗号化されたデータを含み得る。プロセッサは、暗号化されたデータの種類の夫々について線形シーケンスを作成することができる。因って、1つの暗号化されたデータ線形シーケンスを作成する代わりに、プロセッサは、ファイル用の線形シーケンス、電子メール用の線形シーケンス、及びメッセージ用の線形シーケンスを作成することができる。
権限用と、暗号化されたデータの種類毎に別々の線形シーケンスを作成することにより、プロセッサは、権限を計算する為に、権限ブロックと暗号化されたデータブロックを含む線形シーケンスを調べるのとは対照的に、権限に関連するデータを含むブロックの線形シーケンスだけを調べればよいので、権限の計算を高速化することができる。暗号化されたデータブロックと同じ数の権限ブロックがあると仮定すると、空間線形リストを権限線形リストと暗号化されたデータ線形リストに分割することで、プロセッサは権限の計算を2倍高速化することができる。同様に、プロセッサは、暗号化されたデータを検索する為に、暗号化されたデータブロックと権限ブロックの両方を含む線形シーケンスとは対照的に、暗号化されたデータ線形シーケンスを調べるだけでよいので、暗号化されたデータの検索をおよそ2倍高速化することができる。
プロセッサは、空間に関連付けられた暗号ユーザIDのメンバーシップを失効させることができる。メンバーシップが失効すると、暗号ユーザIDは、暗号ユーザIDのメンバーシップの失効後に、空間内で共有されるアクセス及び暗号化されたデータにアクセスすることを防止されなければならない。暗号ユーザIDが、メンバーシップが失効した後の空間に追加された暗号化されたデータにアクセスすることを防ぐ為に、プロセッサは、メンバーシップが失効した暗号ユーザIDが知らない暗号セッション鍵を生成し、暗号セッション鍵を用いて、失効後の空間に追加された暗号化されたデータを暗号化することが可能である。又、失効前に空間に含まれていたデータも、新たな暗号セッション鍵を用いて暗号化され得る。
新たな暗号セッション鍵は、以下の4つのステップを使用して計算されたAES鍵であり得る。ステップ1で、AES鍵は、P‐384等の楕円曲線アルゴリズムを使用して計算され得る。ステップ2で、残りのデバイス群を空間線形シーケンス、例えば空間内の権限線形シーケンスから計算する。ステップ3で、空間内に残っている各デバイスの公開デバイス鍵を用いてAES鍵を暗号化し、暗号化されたAES鍵を空間内の各デバイスに配布する。各デバイスは自分のデバイス秘密鍵を知っている為、暗号化されたAES鍵を復号することができる。他のデバイスはデバイスの秘密鍵を知らないので、盗聴者は暗号化されたAES鍵を復号することができない。ステップ4で、AES鍵を使用して暗号化されたメッセージを空間内のデバイスに配布して、誰もがメッセージを復号できることを確実にする。
図11Cで説明したような幾つかの例では、セッション鍵の計算は、ステップ3の前に実行される追加のステップを含み得、このステップでは、セッション鍵の計算は、空間の権限線形シーケンスのような空間の線形シーケンスの最終ブロックの暗号化ハッシュも含む。具体的には、ステップ1でAES鍵が計算されると、最終鍵を生成する為に、AES鍵と最終ブロックの暗号化ハッシュを組み合わせる追加のステップが実行され得る。この組み合わせはHKDF暗号関数を用いて計算され得るものであり、HKDF暗号関数は、AES鍵と最終ブロックの暗号化ハッシュを引数にとり、最終鍵を生成する。次に、最終鍵は、暗号化され、全てのデバイスに配布される。
メンバーがリストから削除されると新たなセッション鍵を計算することに加えて、新たなメンバーが追加された時に新たなセッション鍵を計算してもよく、その意図は、メンバーが参加する前に空間内で共有された暗号化されたデータにメンバーがアクセスすることを防止することである。
プロセッサは、図3で説明したように、チーム線形シーケンスに属する複数のチームブロックと空間線形シーケンスに属する複数の空間ブロックとの間に時間的関係を確立することによって、空間線形シーケンスにおけるチーム線形シーケンスの線形順序付けを可能にすることができる。時間的関係としては、空間ブロックの直前のチームブロックに空間ブロックがバインドされる、又は空間ブロックの直後のチームブロックに空間ブロックがバインドされる等、種々のものがあり得る。線形順序付けを確立することは、監査だけでなく、権限計算においても重要である。
例えば、権限を決定する為に、ブロックの追加より前の時間にチーム空間に定義された現在のポリシーを参照する必要がある。別の例では、線形シーケンスの監査を実行する時、ブロックが空間の線形シーケンスに正しく追加されたかどうかを判断する為に、チーム線形シーケンスに部分的に定義され得る現在の権限が計算される必要がある。現在のポリシーを決定する為に、空間線形シーケンス及びチーム線形シーケンス内のブロックの線形順序付けを決定する必要があり、これにより、ブロックの追加前にチームリストに記録された権限を計算できる。
その結果、ブロックが空間線形シーケンスに追加される度に、ブロックはチーム線形シーケンスにバインドされ、チーム線形シーケンスと空間線形シーケンスとの間の線形順序付けが決定される。一方の空間線形シーケンス内の権限は、他方の空間線形シーケンス内の権限に影響を与えないので、2つの空間線形シーケンス間の線形順序付けを確立する必要はない。
図13は、分散型台帳を使用して暗号化されたデータへのアクセスを管理する方法のフローチャートである。ステップ1300において、プロセッサは、配置された複数のブロックを含む線形シーケンスに記録された権限によってアクセスが許可されていることを確認することによって、暗号化されたデータへのアクセスを管理でき、線形シーケンス内の初期ブロックは、ロールとロールに関連付けられた権限を指定するポリシーを定義する。
ステップ1310において、プロセッサは、線形シーケンスに関連付けられたユーザを暗号的に識別することによって、線形シーケンスに記録された権限の有効性を保持し、従って、許可されたユーザが線形シーケンスにアクセスするのを防止し得る。ユーザ権限に関連付けられたブロックを複数のブロックに追加する前に、プロセッサは、線形シーケンスを確認して、ユーザ権限がポリシーと一致することを保証することができる。ユーザ権限がポリシーと一致することを保証すると、プロセッサは、ユーザ権限に関連するブロックを複数のブロックに追加することができる。
プロセッサは、ユーザに関連付けられたユーザロール、ユーザロールに関連付けられた権限を決定することができ、ブロックに関連付けられたユーザ権限が、ユーザロールに関連付けられた権限の範囲内にあることを保証することができる。
例えば、シーケンスに追加されるブロックは、ポリシーの修正を要求することができる。シーケンスにブロックを追加する前に、プロセッサは、ポリシーが検証を許可するかどうか、及びどのロールがポリシーを修正することができるかを確認することができる。例えば、ポリシーは、ポリシーは修正され得るが、管理者のみがポリシーを修正することができると述べることができる。その場合、プロセッサは、修正を要求するユーザが管理者であるか否かを確認することができる。
侵害された中央サーバによるデータへの不正アクセスを防止する為に、プロセッサは、複数のユーザに関連付けられた複数のデバイスに線形シーケンスを配布することができ、複数のデバイスにおける各デバイスは、複数のユーザにおけるユーザによって暗号的に認証される。線形シーケンスにブロックを追加するかどうかの判断は、単一障害点をもたらす中央サーバによって行われるのではなく、デバイスの各々によって独立して行われ得る。
プロセッサは、非対称暗号アルゴリズムを使用して生成された公開鍵であり得る暗号ユーザIDを使用して各ユーザを認証することができる。暗号ユーザIDは2048ビットの文字列であり得る。非対称暗号アルゴリズムは、RSA又はDHであり得、公開鍵と秘密鍵の2つの鍵を生成できる。プロセッサは、非対称暗号鍵ペアの内の第1の鍵(即ち、秘密鍵)をそのユーザにのみ提供し、非対称暗号鍵ペアの内の暗号ユーザID(即ち、公開鍵)を複数のユーザにシステム全体に提供できる。プロセッサは、システム全体でユーザを識別する方法として公開鍵を使用できる。その結果、ユーザは、異なるチーム又は空間において異なる名前を想定することができ、様々な名前は、1つの暗号ユーザIDに結び付けられ得る。
例えば、ユーザのアイデンティティを確認する為に、プロセッサはテキストメッセージを受信し、そのテキストメッセージはユーザの秘密鍵を使用して署名され得る。ユーザのアイデンティティを検証する為に、プロセッサは、ユーザの公開鍵(即ち、暗号ユーザID)を使用して署名プロセスを逆行させることができる。次に、プロセッサは、テキストメッセージと、署名プロセスを逆行させて得られたメッセージとを比較することができる。テキストメッセージと署名プロセスを逆行させて得られたメッセージが完全に一致する場合、プロセッサはユーザのアイデンティティを検証できる。そうでない場合、プロセッサはユーザのアイデンティティを検証できない。
効率化の為に、プロセッサはチームを作成することができる。チームを作成する為に、プロセッサは、複数のユーザを識別する複数の暗号ユーザIDを取得することができる。プロセッサは、線形シーケンスに配置された複数のブロックを含む線形シーケンスを作成することができ、線形シーケンスにおける初期ブロックは、ロール及びロールに関連付けられた権限を指定するポリシーを定義し、複数のブロックにおけるブロックは、複数のユーザにおけるユーザを識別する複数の暗号ユーザIDの1つの暗号ユーザIDに関連付けられたロールを定義する。
チーム内に空間を作成する為に、プロセッサはシステム内の全ての暗号IDを検索する必要はなく、チームに含まれる暗号IDのみを検索するだけでよいので、CPUサイクルを節約することができる。例えば、1つのチームに10人のユーザが含まれる場合、システム全体では数万人のユーザが含まれる為、空間の作成に使用するプロセッササイクルは約1,000回分削減される。空間は、チームの暗号ユーザIDのサブセットを含み得る。空間は、空間のメンバーのみが知っている暗号鍵を用いて暗号化されたデータを含み得る。空間は、メンバー及び暗号化されたデータを表す空間線形シーケンスを含み得る。
本願で説明するように、空間線形シーケンスは、効率上の理由から、2つ以上のサブシーケンスを含み得る。空間線形シーケンスは、ユーザ及び/又は管理者を追加又は削除するような、システム内の権限を修正するブロックを含む権限線形シーケンスを含み得る。暗号化されたデータ線形シーケンスは、システム内で暗号化されたデータを追加、削除、及び修正する線形シーケンスを含み得る。暗号化されたデータ線形シーケンスは、ファイル及び/又はメッセージ等の暗号化されたデータの種類に応じて、複数の線形シーケンスに更に細分化され得る。
チーム線形シーケンス、空間線形シーケンス、及び暗号化されたデータは、中央サーバ等のネットワークを介して1つ以上のコンピュータから継続的に利用できるように構成されたメモリに格納され得る。その為、空間内のデバイスの殆どがオフラインである場合、空間内のデバイスは、中央サーバに暗号化されたデータを要求することができ、及び/又は空間順序シーケンスにブロックを追加することができる。
(企業環境におけるグループ権限とアクセスを管理するブロックチェーンの統合)
図14は、一実施形態により、セキュアファイルシステムが企業情報技術(IT)インフラストラクチャに如何に統合され得るかを示す。サーバ1400は、ファイルシステム、電子メール、インスタントメッセージ等の機密データを含み得る暗号化されたデータ1410を格納することができる。サーバ1400は、本願で説明するように、チーム線形シーケンス又は空間線形シーケンスを表し得るブロックチェーン1402、1404、1406、1408、1412を格納することもできる。ブロックチェーンは、暗号を使用してリンクされるブロックと呼ばれるレコードの成長するリストである。各ブロックは、例えば図8の826のような先行ブロックの暗号化ハッシュと、例えば図8の812、814、816、822、824のようなデータとを含む。ブロックは又、例えば、図2における260、270、280、290のようなタイムスタンプを含み得る。
ブロックチェーン1402、1404、1406、1408、1412は、本願で説明したように、暗号ユーザIDに関連する権限を記録できる。ブロックチェーン1402、1404、1406、1408、1412は、平文で格納され得、サーバ1400は、平文へのアクセスを権限のある要求者のみに許可することによって、ブロックチェーン1402、1404、1406、1408、1412へのアクセスを制御することができる。要求者に権限を与える為に、サーバ1400は、以下に説明するように、トークンを発行し管理することができる。
システム1420は、企業ITインフラストラクチャの一部として、顧客構内に実装され得る。システム1420は、アクセス制御サーバ1430、トークン発行元1440、及びユーザデバイス1450を含み得る。
アクセス制御サーバ1430は、一連の企業ポリシーに基づいてユーザデバイス1450にパーミッションを付与又は拒否することによって、企業インフラストラクチャ上で実行されているウェブアプリケーション、サービス及び/又はファイルへのユーザデバイス1450のアクセスを制御できる。アクセス制御サーバ1430は、マイクロソフト・アクティブディレクトリ、又はアップル・オープンディレクトリ等の様々なソフトウェアを実行できる。
トークン発行元1440は、アクセス制御サーバ1430、ユーザデバイス1450、及びサーバ1400の間のミドルウェアとして機能することができる。トークン発行元1440は、ブロックチェーン1402、1404、1406、1408、1412の一部へのアクセスを要求するトークン要求1460をユーザデバイス1450から受信することができる。トークン要求1460は、要求を行うユーザに関連する暗号ユーザID、及び要求されるブロックチェーン1402、1404、1406、1408、1412の部分の仕様を含み得る。例えば、トークン要求1460は、「9EDaleMN9CUylV7VSyAUTkfEGC7MUDMkugmXV VsM7Z5r01Wpg」等の英数字列の形態の暗号ユーザID、及びチームブロックチェーン1402、1408又は空間ブロックチェーン1404、1406、1412の識別を含み得る。
トークン発行元1440は、ブロックチェーンの指定された部分にアクセスするパーミッションをユーザデバイス1450に与えるトークンの要求1470をサーバ1400に送信することができる。トークン要求1470は、暗号ユーザIDと、トークン要求1460に含まれるチームブロックチェーン1402、1408又は空間ブロックチェーン1404、1406、1412の識別情報とを含み得る。
トークン要求1470を受信すると、サーバ1400は、ブロックチェーン1402、1404、1406、1408、1412に格納されたメンバーシップ情報に基づいて、暗号ユーザIDがブロックチェーン1402、1404、1406、1408、1412の要求された部分にアクセスする権限を有するかどうかを計算できる。例えば、暗号ユーザIDが空間ブロックチェーン1404へのアクセスを要求した場合、サーバ1400は、暗号ユーザIDが空間ブロックチェーン1404のメンバーであるか否かを確認することができる。暗号ユーザIDが空間のメンバーである場合、サーバ1400は、暗号ユーザIDが必要な権限を有すると判断し、トークン1480を発行することができる。そうでない場合、サーバ1400は、暗号ユーザIDが空間ブロックチェーン1404にアクセスする権限を有していないと判断し、トークン1480を発行することを拒否することができる。
トークン1480は、空間ブロックチェーン1404等のブロックチェーンの要求された部分への無制限の読み取りアクセスを付与することができる。言い換えると、サーバ1400及び/又はトークン発行元1440が、任意の源からトークン1480を受信する度に、サーバ1400は、上述の権限計算を行わず、トークン1480で指定されたブロックチェーンの部分、例えば空間ブロックチェーン1404へのアクセスを即座に付与する。事実上、トークン1480は、暗号ユーザIDが空間ブロックチェーン1404へのアクセスを要求する度に、サーバ1400が権限を計算するという高価な計算を実行しないようにすることによって、効率的な利点を創出する。代わりに、トークン1480は、以下に説明するように、サーバ1400が、トークン1480を単に検証するという、より安価な計算を実行することを可能にする。
トークン1480をユーザデバイス1450に渡す前に、トークン発行元1440は、ユーザデバイス1450が空間ブロックチェーン1404に関してどのようなパーミッションを有しているかについて企業アクセス制御サーバ1430に確認することができる。確認を実行する為に、ユーザデバイス1450は、アクセス制御サーバ1430にチケット要求1490を送信することができる。チケット要求1490は、ユーザのログインID及びユーザのパスワード等のアクセス制御サーバのユーザ識別を含み得る。アクセス制御サーバ1430にユーザを識別する為に用いられるユーザのログインID及びユーザのパスワードは、サーバ1400にユーザを識別する為に用いられる暗号ユーザIDとは異なるものである。
ログインID及びパスワード等のユーザの識別を検証すると、アクセス制御サーバ1430は、企業ポリシーに従ってユーザが有するパーミッションを確認し、パーミッションを含むチケット1492をトークン発行元1440に送信することができる。例えば、企業ポリシーは、ユーザが休暇中、ユーザが電子メールにアクセスできないことを指定することができる。その結果、パーミッションは、「ユーザが会社ビル内等の特定の場所にいる時のみアクセスを許可される」、「ユーザが特定の時間帯のみアクセスを許可される」、及び/又は「ユーザデバイス1450が会社のネットワーク等の特定のネットワークに接続している時のみアクセスを許可される」等の種々の制限を指定できる。
トークン発行元1440は、チケット1492で指定されたパーミッションをトークン1480に組み込んで、減衰トークンを取得することができる。チケット1492で指定されたパーミッションは、トークン1480によって付与されるパーミッションを増加させる可能性はないが、パーミッションを変わらない状態に保つか、又はトークン1480によって付与されるパーミッションを減衰させる、即ち、減少させるかの何れかはあり得る。
更に、トークン発行元1440は、減衰トークンの有効期限(例えば、3分又は5分以内)、場所制限、インターネットアドレス制限等の追加の制限を、減衰トークンに追加することができる。追加の制限を減衰トークンに追加して減衰トークン1494を生成し、それをユーザデバイス1450に送信してもよい。
ユーザデバイス1450は、チームブロックチェーン1402、1408に追加されることを要求することができる。チームに追加される為に、ユーザデバイス1450はアクセス制御サーバ1430に自身を認証することができ、アクセス制御サーバ1430は、ユーザを認証するチケット1492をトークン発行元1440に送信できる。更に、トークン発行元1440は、サーバ1400に、ユーザに関連する暗号ユーザIDについて、チームブロックチェーン1402、1408に格納された権限を計算するよう求めることによって、ユーザをサーバ1400に認証することができる。アクセス制御サーバ1430とサーバ1400の両方がユーザを認証した場合、ユーザをチームブロックチェーン1402、1408に追加することができる。
アクセス制御サーバ1430が敵対者によって制御されたとしても、アクセス制御サーバ1430はトークン1480によって付与されたパーミッションを増やすことができないので、敵対者にあるのは依然として、ブロックチェーン1402、1404、1406、1408、1412内にありトークン1480によって付与された権限のみである。敵対者がトークン発行元1440を制御する場合、敵対者は、トークン発行元1440がサーバから受信したチームの為のトークン1480のみを制御することができる。何れの場合も、敵対者は、平文データのみを読むことができ、暗号化されたデータ1410を読むことはできないことになる。更に、敵対者は、平文データを修正することができない。
トークン発行元1440は、アクセス制御サーバ1430がどの程度信頼されているかの表示を受信することができる。アクセス制御サーバ1430が信頼されていない場合、アクセス制御サーバ1430を介さずにトークン1494を発行することができ、又はユーザをチーム1、2に追加することができる。
図15は、別の実施形態による、セキュアファイルシステムが企業ITインフラストラクチャにどのように統合され得るかを示す。ブロックチェーン1502、1504、1506、1512へのアクセスは、図14のアクセス制御サーバ1430を介さずに管理され得る。アクセス制御サーバ1430によって実装される企業ポリシーは、ブロックチェーン1520に記録され得るか、又はファクトデータベース1530の一部であり得る。ブロックチェーン1520及びファクトデータベース1530は、チーム1、2又は空間1、2から独立して存在することができる。サーバ1500及びトークン発行元1540は、企業のITインフラストラクチャの一部であり得、及び/又はクラウドサービスとして提供され得る。アクセス制御サーバ1430を削除することにより、多くの潜在的なセキュリティ問題が減少し、アクセス制御サーバ1430が信頼できない場合でも、システムを機能させることができる。
ユーザデバイス1550がトークン要求1560を使用してトークンを要求すると、トークン発行元は、トークン要求1560をサーバ1500に転送することができる。トークン要求1560は、暗号ユーザID、及びアクセスが要求されているブロックチェーン1502、1504、1506、1508、1512の部分の識別を含み得る。例えば、ブロックチェーンの部分の識別は、チームブロックチェーン1508を識別することができる。
サーバ1500は、チームブロックチェーン1508に記録された暗号ユーザIDの権限を計算し、暗号ユーザIDがチームのメンバーであるか否かを判断することができる。暗号ユーザIDがチームのメンバーでない場合、サーバ1500は、トークン発行元1540にトークンを送信することを拒否することができる。暗号ユーザIDがチームのメンバーである場合、サーバ1500は、ファクトデータベース1530及び/又は会社ポリシーブロックチェーン1520を確認して、会社ポリシーが暗号ユーザIDのアクセスに何らかの制限を加えているかどうかを判断することができる。この場合、図14で説明したように、別々の認証を必要とするのとは対照的に、単一の暗号ユーザIDを使用して、サーバ1500に関連するパーミッションと会社ポリシーに関連するパーミッションの両方を確認することができる。
サーバ1500は、トークン発行元1540にメッセージ1580を送信することができる。メッセージ1580は、チームブロックチェーン1508への無制限の読み取りアクセス、及び企業ポリシーに関連付けられたパーミッションを付与するトークンを含み得る。トークン発行元1540は、トークン及び会社ポリシーに関連付けられたパーミッションを組み合わせることによって、減衰トークン1594を作成し、減衰トークン1594をユーザデバイス1550に転送することができる。
ユーザデバイス1550は、チームブロックチェーン1508にアクセスするパーミッションを第三者に付与する為に、減衰トークン1594を更に減衰させたい場合がある。そうする為に、ユーザデバイス1550は、減衰トークン1594と、減衰トークンに課された追加のパーミッション、例えば時間的パーミッションとを含む要求をトークン発行元1540に送信することができる。トークン発行元1540は、追加のパーミッションを減衰トークン1594に組み込み、ユーザデバイス1550に送信する為の新たなトークンを発行し、ユーザデバイス1550はこれを第3者に転送できる。
(クロック)
図16Aは、ブロックチェーンを使用してどのようにクロックが実装され得るかを示す。図15で論じた時間的パーミッションを組み込む為に、プロセッサは、例えば図2で説明したように、ブロックチェーン1610、1615、1620、1625内の各ブロック1635、1645(簡潔にする為、2つのみにラベルを付けている)がタイムスタンプされ、ブロック1635、1645内の任意のタイムスタンプ1630、1640が常に増加するような、常に増加するクロックを作成し得る。
トークンにおける時間的なパーミッションは、例えば、トークンはタイムスタンプ1630の5分後に有効である、というようにタイムスタンプで表現され得る。その為、タイムスタンプ1640がタイムスタンプ1630から5分を超えて経過している場合、トークン保有者はブロック1645への読み取りアクセスを許可されない。ブロック1635、1645は、チーム及びシーケンス内で順序付けされ得るが、2つの異なるチーム又は2つの異なるシーケンス間で順序付けることができない場合がある。タイムスタンプ1630、1640は、夫々、ブロック1635、1645のヘッダ内に配置され得る。
代わりに、又は付加的に、クロックは、ブロックチェーン1600を使用して実装され得る。クロックブロックチェーン1600は、夫々が1秒、1分、5分、半時間、1時間等のクロックの刻みを表すブロック1650、1660、1670等を含み得る。ブロック1650、1660、1670の頻度は、企業の計算機資源に関連し得る。計算資源が高いほど、ブロック1650、1660、1670の頻度は高くなり、計算資源が低いほど、ブロック1650、1660、1670の頻度は低くなる。
チームブロックチェーン1610、1615の各ブロック1625、1635、1645(簡潔にする為に3つのみラベルを付けている)は、クロックブロックチェーン1600の対応するブロック1650、1660、1670に対するバインディング1628、1638、1648を夫々有し得る。例えば、チームブロック1625は、ブロック1650に対するバインディング1628を有し、これは、チームブロック1625が、ブロック1650の作成後且つブロック1660の作成前に作成されたことを意味する。
空間ブロックチェーン1620、1625のブロック1680、1690(簡潔にする為に2つのみラベルを付けている)は、チームブロックチェーン1610、1615への対応するブロック1635、1625に対して、夫々バインディング1682、1692を有し得る。例えば、バインディング1682は、ブロック1680がブロック1635の後且つブロック1645の前に作成されたことを示す。
その結果、空間ブロックチェーン1620、1625の各ブロック1680、1690は、チームブロックチェーン1610、1615の対応するブロックにバインドされ、クロックブロックチェーン1600のブロック1650、1660、1670に間接的にバインドされる。例えば、図16Aに示すバインディングに基づき、ブロック1690はブロック1650の後且つブロック1660の前に作成される。
トークンにおける時間的パーミッションは、クロックブロックチェーン1600、ブロック1650、1660、1670の観点から、又はウォールクロックの観点から表現され得る。クロックブロックチェーン1600は、クロックブロックチェーン1600のブロック1650、1660、1670が常に増加しているという制約のもと、ウォールクロックに対応し得る。
例えば、時間的パーミッションがウォールクロックの観点から定式化される場合、時間的パーミッションは、トークンが2020年12月1日まで有効であると述べることができる。指定された日付の後にタイムスタンプを有する最初のブロック1650、1660、1670は、トークンが、それ以降はもはや有効でなくなる時間を指定する。このような時刻を指定する最初のブロックにバインドされている全てのブロックに、トークン保有者はアクセスできない。
別の例では、時間的パーミッションがブロック1650、1660、1670の観点から定式化される場合、時間的パーミッションは、ブロック1650の後に1時間半の間トークンが有効であると述べることができる。指定された時間後にタイムスタンプを有する最初のブロック1660、1670は、トークンがそれ以降はもはや有効でなくなる時間を指定する。そのような時間を指定する最初のブロックにバインドされた全てのブロックに、トークン保有者はアクセスできない。
図16Bはクロックブロックチェーンの内容を示す。クロックブロックチェーン1600のブロック1650、1660、1670は、ウォールクロックフィールド1652、1662、1672、シーケンスクロックフィールド1654、1664、1674及び暗号化ハッシュツリーフィールド1656、1666、1676のルートを含む幾つかのフィールドを含み得る。
ウォールクロックフィールド1652、1662、1672は、クロックブロックチェーン1600を格納するサーバのクロックによって示される時間のレコードであり得る。ウォールクロックフィールド1652、1662、1672は常に増加している必要はないので、フィールド1652、1662は同じ値を有し得るか、又はフィールド1672はフィールド1652によって示される時間より前の時間を示し得る。
シーケンスクロック1654、1664、1674は常に増加する。シーケンスクロックは、現在時刻を測定し合意している複数のサーバによって示され得る。複数のサーバは冗長性を提供し、その結果、1つのサーバが故障した場合、クロックブロックチェーン1600は時間の測定を継続できる。合意された現在時刻は、以前の現在時刻よりも大きいという特性を有する。現在時刻は、複数のサーバによって測定された最新の時刻であってもよいし、現在時刻が前に合意された現在時刻よりも大きい限り、殆どのサーバが合意する時刻であってもよい。
暗号化ハッシュツリーフィールド1656、1666、1676のルートはメルクルルートであり得、ブロック1650、1660、1670にバインドされているブロックチェーン内の全ての最新のブロックの暗号化ハッシュを含み得る。例えば、暗号化ハッシュツリーフィールド1662は、ブロック1635とブロック1685の暗号化ハッシュを含み得る。全ての最新のブロックのリストではなく暗号化ハッシュツリーのルートを提供する理由は帯域幅及び格納リソースを保存することであり得るが、それは、ルートを通信及び格納することが、全てのブロックのリストを通信及び格納することよりも低コストであるからである。別の理由は、ルートのみを提供することによって、全てのブロックのリストを秘密にし、そこから、幾つかの追加情報と共に、全てのブロックのリストを計算できるようにすることであり得る。
図17は暗号ツリーを示す。エンドポイントは、図16のクロックブロックチェーン1600内のブロックにバインドされたブロックチェーン内の最新のブロックの全てであるブロック1700、1710、1720、1730を表している。暗号ツリー1740は、各ノードにおいて、子ノードのSHA等の暗号化ハッシュを計算することにより構築される。例えば、ノード1750はブロック1710の暗号化ハッシュを計算することによって計算され、ノード1792はノード1770、1780の暗号化ハッシュを計算することによって計算される。最後に、ルート1790はノード1792、1794の暗号化ハッシュを計算することによって計算される。
ルート1790はクロックブロックチェーン1600に格納され得る。ルート1790の値は、暗号ツリー1740を生成したブロック1700、1710、1720、1730のシーケンスに固有のものである。ルート1790のような単一の値をクロックブロックチェーン1600に格納することは、全てのブロック1700、1710、1720、1730の値を格納することと比較して、帯域幅及び格納領域を保存することができる。更に、ルート1790を格納することは、暗号ツリー1740を構築する際に使用される全てのブロック1700、1710、1720、1730を開示しない。
ブロックが暗号ツリー1740の一部であるかどうかを確認する為に、暗号ツリー1740の全ての要素のサブセットのみを供給する必要がある。例えば、N個のエンドポイント、即ち暗号ツリー1740を構築する際に使用されるN個のブロックがある場合、ルート1790が特定の要素を含むかどうかを確認する為に、log(N)個の要素のみを供給する必要がある。
より具体的な例では、ブロック1710がルート1790のメンバーであるかどうかを確認する為には、ブロック1710及びノード1760、1792のみを供給すればよい。供給されると、ノード1750の値はブロック1710の値から計算され得る。ノード1794の値は、ノード1750、1760の値から計算され得るが、例えば、SHA(ノード1760、ノード1750)を計算することによって計算され得る。ルートノードはノード1794及び1792の値から計算され得る。このように計算されたルートノードが、クロックブロックチェーン1600に格納されているルート1790と一致すれば、暗号ツリー1740におけるブロック1710のメンバーシップが確認され得る。
(トークン)
図18はトークンの構造を示している。トークン1800は、図14のサーバ1400、図15の1500が、図14の権限定義ブロックチェーン1402、1404、1406、1408、1412、図15の1502、1504、1506、1508、1512を格納するような第1の権限源によって付与された、図14のトークン1480、図15の1580であり得る。
トークン1800は、秘密のルート鍵を識別する鍵識別子(ID)1810と、パーミッション1820と、パーミッション1820と秘密のルート鍵との暗号化ハッシュ1830とを含み得る。秘密のルート鍵は、サーバ1400、1500及び/又は図14のトークン発行元1440、図15のトークン発行元1540に知られ得る。鍵識別子1810を使用して、サーバ1400、1500及び/又はトークン発行元1440、1540は、秘密のルート鍵を取得することができる。暗号化ハッシュ1830はHMACであり得、鍵付きハッシュメッセージ認証コード又はハッシュベースメッセージ認証コードの何れかとして拡張される場合もある。HMACは、任意のMACと同様に、メッセージのデータの完全性と真正性の両方を同時に検証する為に使用され得る。HMACの計算には、SHA‐256やSHA‐3等、任意の暗号化ハッシュ関数を使用してもよい。全ての暗号化ハッシュと同様に、暗号化ハッシュ1830は可逆的ではなく、それは、暗号化ハッシュ1830の出力が与えられて、暗号化ハッシュへの入力を割り出すことは計算上実行可能でないことを意味する。
第2のパーミッション1850が追加されたトークン1800は変化して、減衰トークン1840になり得る。減衰トークン1840は、図14のトークン1494、図15のトークン1594であり得る。第2のパーミッション1850は、図14のアクセス制御サーバ1430又は図15のブロックチェーン1520に記録された企業ポリシー等の第2の権限源によって付与され得る。トークン1800は、制約又は注意事項とも呼ばれる、任意の数のパーミッションを含み得る。
減衰トークン1840を得る為に、サーバ1400、1500は、トークン1840に第2のパーミッション1850を追加し、第1の暗号化ハッシュ1830と第2のパーミッション1850との第2の暗号化ハッシュ1860を計算し、トークンから第1の暗号化ハッシュ1830を除去し、それにより減衰トークン1840を得ることができる。
第2のパーミッション1850は、第1のパーミッション1820を減少させるのみと解釈される。第1のトークンから暗号化ハッシュ1830を除去することによって、第1のパーミッション1820が第2のパーミッション1850によって制限されるトークン1840が作成される。暗号化ハッシュ1860は可逆ではないので、攻撃者は暗号化ハッシュ1830を推測することができず、トークン1840は安全である。その結果、最大の権限は、1つのパーミッション1820のみを有する元のトークン1800によって付与される。
例えば、第1のパーミッション1820は、暗号ユーザIDが、ブロックチェーン1402、1404、1408、1412、1502、1504、1508、1512に関連するメタデータを読む為のアクセスを付与されていることを指定することができる。第2のパーミッション1850は、暗号ユーザIDがアクセス権を有するチームブロックチェーン1402、1408、1502、1508等のチームブロックチェーンを指定することができる。追加のパーミッションを減衰トークン1840に追加して、更に減衰トークン1870を作成することができる。
一実施形態では、減衰トークン1870はユーザデバイスによる要求に応じて生成され得る。例えば、第3のパーミッション1880は、暗号ユーザIDがアクセスを有し得るチームブロックチェーン1402、1408、1502、1508内の空間ブロックチェーン1404、1406、1412、1504、1506、1512を指定することができる。第3の暗号化ハッシュ1890を減衰トークン1870に含めてもよく、又は暗号化ハッシュ1890は、暗号化ハッシュ1860と第3のパーミッション1880との暗号化ハッシュであり得る。暗号化ハッシュ1860は、トークン1870から除去することができる。
別の実施形態では、ユーザデバイスは、減衰トークン1870を第三者に付与することができる。例えば、第三者は、独自のビデオ処理アルゴリズムを有し得、減衰トークン1870は、ユーザデバイスがアクセス権を有するビデオへのアクセスを付与することができる。第三者にアクセスを付与する理由は、第三者がユーザデバイスよりも高速なネットワーク接続にアクセスできることであり得る。減衰トークン1870は、減衰トークン1870がアクセスを付与するビデオを指定する第3のパーミッション1880を含み得る。
ビデオを要求する為に、第三者は、減衰トークン1870を、サーバ1400、1500及び/又はトークン発行元1440、1540に送信することができる。サーバは、以下に説明するように、秘密ルート鍵を使用してトークンを検証することができ、ビデオへのアクセスを第三者に付与することができる。
図19は、リプレイ攻撃を防止するトークンを示す。攻撃者がトークンを取得し、トークンのコピーを図14のトークン発行元1440、図15の1540、及び/又は図14のサーバ1400、図15の1500に提供することによってリプレイ攻撃を行うことを防止する為に、図18の減衰トークン1840、1870は、減衰トークン1940、1970を取得する単回使用パーミッション1900、1910を含み得る。暗号化ハッシュ1920は、図18の暗号化ハッシュ1860と第3のパーミッション1900との暗号化ハッシュであり得、暗号化ハッシュ1930は、図18の暗号化ハッシュ1890と第4のパーミッション1910との暗号化ハッシュであり得る。トークン1940、1970を要求に応じて傍受した場合、1つの要求を満たした後のトークン1940、1970は有効ではないので、トークン1940、1970を再生しても攻撃者にアクセス権を付与することはない。
(リカバリー鍵)
図20は、リカバリー鍵がどのように使用され得るかを示す。ブロックチェーン2000はブロック2010を含み得る。ブロック2010はブロックチェーン2000の初期ブロックであり得るか、又はブロックチェーン2000の他のブロックであり得る。ブロック2010は複数のイベント2012、2014、2016を含み得る。イベント2012や2014のようなブロックチェーン2000のイベントの殆どは、アリス等の、イベントを入力するユーザの公開鍵によって署名されている。しかしながら、イベント2016のようなイベントは、リカバリー鍵2050によって署名され得る。
リカバリー鍵2050は、権限とポリシーの計算全体を回避する特別な鍵である。ポリシーがイベント2016を認可するかをプロセッサが判断する前であったとしても、プロセッサは、イベントがリカバリー鍵2050によって署名されているかどうかを判断することができる。イベントがリカバリー鍵2050で署名されている場合、プロセッサは、権限及びポリシーに関係なくイベントが許可されると判断する。このように、リカバリー鍵2050は、権限及びポリシー全体を上書きする。
リカバリー鍵2050は厳重に保護される必要がある。その結果、リカバリー鍵2050は、30個の部分のような複数の部分2052、2054、2056(簡潔にする為に3つのみにラベルを付けている)に分割され得る。異なる部分2052、2054、2056は、夫々が異なる操作手順を有する異なるHSMのような異なる安全な場所に配置され得る。異なる部分2052、2054、2056は暗号化され得、或る人は、鍵部分2052、2054、2056をファイルに格納する為のパスワードを有し得、別の人は、鍵部分2052、2054、2056をファイルから取り出す為のパスワードを有し得る。リカバリー鍵2050の組み立ては、リカバリー鍵2050の2052、2054、2056の部分を有するデバイス及びユーザの全て、又は少なくとも過半数の参加を必要とする可能性があり、それにより、リカバリー鍵2050の偶発的な使用を保護することが可能である。
リカバリー鍵2050の存在及び使用は任意であり得る。リカバリー鍵は全てゼロ等の所定値に設定され得、それは、リカバリー鍵2050が生成されておらず存在しないことをプロセッサに示す。プロセッサは、その所定値に設定されたリカバリー鍵2050によって署名された任意のイベントを無視してもよい。
(分割鍵)
図21は、ユーザデバイスが侵害された時に、暗号化されたデータへの攻撃を制限する分割鍵システムを示す。ユーザデバイス2100は、本願で説明したようなチャネルセッション鍵2120のような複数の鍵と、分割鍵2130とを用いて暗号化されたデータ2110を格納することができる。分割鍵2130は、少なくとも2つの部分2132、2134に分離され得る。第1の鍵部分2132はサーバ2140に格納され得るのに対し、第2の鍵部分2134はユーザデバイス2100に格納され得る。
データを暗号化する為に、ユーザデバイス2100は、サーバ2140に第1の鍵部分2132を要求することができる。第1の鍵部分2132を受信すると、ユーザデバイス2100は、第1の鍵部分2132と第2の鍵部分2134との組み合わせである鍵導出関数(KDF)を計算し、データを暗号化する為の分割鍵2130を得ることができる。同様に、暗号化されたデータ2110を復号する為に、ユーザデバイス2100は、サーバ2140に第1の鍵部分2132を要求し、第1の鍵部分2132と第2の鍵部分2134との組み合わせであるKDFを用いて分割鍵2130を計算できる。
ユーザデバイス2100が分割鍵2130を計算してしまうと、ユーザデバイス2100は、所定のルールに基づいて第1の鍵部分2132を失することができる。所定のルールは、ユーザデバイス2100がサスペンド及び/又はリブートされる毎に、第1の鍵部分2132を失すること、分割鍵2130を使用して3つのファイルが開かれる毎に、第1の鍵部分2132を失すること、鍵導出関数に関連するアプリケーションが閉じられる毎に、第1の鍵部分2132を失すること、ユーザデバイス2100の地理位置及び/又はIPアドレスが所定の空間外になる毎に、第1の鍵部分2132を失すること等と述べることができる。
ユーザデバイス2100は、所定のルールに基づいて第1の鍵部分2132を失するので、サーバ2140は、ユーザデバイス2100へのアクセスを取り消すことができる。例えば、サーバ2140が、攻撃者によって盗まれる及び/又はハッキングされる等してユーザデバイス2100が危険に曝されたことを通知された場合、サーバ2140は、ユーザデバイス2100からの第1の鍵部分2132の要求を拒否すべきことを記録できる。次回ユーザデバイス2100が第1の鍵部分2132を要求した時、サーバ2140は、第1の鍵部分2132の提供を拒否することができる。その結果、暗号化されたデータ2110は、ユーザデバイス2100上で暗号化されたままであり、攻撃者は利用できない。
第1の鍵部分2132のセキュリティを高める為に、サーバ2140は、第1の鍵部分2132を提供する前に多要素認証を要求することができる。例えば、サーバ2140は、第2のデバイス2150がサーバ2140に認証を提供することを要求することができる。サーバ2140が第2のデバイス2150から認証を受信すると、サーバ2140は、第1の鍵部分2132をユーザデバイス2100に提供することができる。
(システム更新)
図22は、ブロックチェーンのセマンティクスの解釈に対する更新を示す。ブロックチェーン2200は、ブロック2210、2220、2230等を含み得る。ブロックチェーン2200のセマンティクスの解釈の為のルールは、ブロック2210、2220、2230にコード化され得るものであり、Rust、Python、Go、又は独自の言語等のプログラミング言語のソースコードとして表され得る。ブロックチェーン2200のセマンティクスの更新解釈(権限、ポリシー等を含む)は、ブロックチェーン2200において起こり得る。
例えば、ブロック2210は、ブロック2230を解釈する方法を更新するソースコードを、ブロック2210に続いて含み得る。ブロックチェーン2200にセマンティクスを入れることによって、複数のクライアントに亘り、異なるブロックチェーンを含むシステムの全てのインスタンスは、ブロック2210を受信した時に、ブロックチェーンのセマンティクスを解釈する為のローカルルールを更新することができる。従って、ブロック2210に先行するブロック2220は、第1のルールのセットに従って解釈されるのに対し、ブロック2210に後続するブロック2230は、ブロック2210によって確立された第2のルールのセットに従って解釈される。
例えば、ブロックチェーン2200のセマンティクスを解釈する為のルールは、レース条件がどのように解決されるかを支配し得る。そのようなルールは、図5のシステムポリシー530、図5のユーザポリシー540、又は図5のアプリケーションポリシー550で指定され得る。その結果、ブロック2210は、システム530、ユーザ540、及び/又はアプリケーション550のポリシーを更新することができる。
ブロックチェーン2200のセマンティクスを解釈する為のルールにバグを招くことを防ぐ為に、ポリシーエンジン530、540、550はフォーマル検証され得る。フォーマル検証とは、数学の形式的方法を用いて、特定の形式的仕様又は特性に関して、ポリシー530、540、550の正しさを証明する行為である。フォーマル検証により、ポリシー530、540、550にバグがないことを保証することができる。
(フローチャート)
図23は、認可クレデンシャルを提供するトークンを生成する方法のフローチャートである。ステップ2300において、プロセッサは、ブロックをブロックチェーンの末尾に付加する際のユーザの権限を定義するブロックを作成することによって、複数のブロックを含むブロックチェーンを作成することができる。ブロックは、ユーザを識別する暗号ユーザID、及び暗号ユーザIDに関連付けられた権限を含み得る。権限は、ブロックチェーン上で実行する為に暗号ユーザIDに関連付けられた少なくとも1つの操作を定義することができる。例えば、操作は、ブロックチェーン及び/又はブロックチェーンに関連する暗号化されたデータへの読み取りアクセス、書き込みアクセス、及び/又は読み取り/書き込みアクセスを含み得る。ブロックチェーンは暗号化されていなくてもよい。
ステップ2310において、プロセッサは、ブロックチェーンにアクセスする要求を要求元デバイスから受信することができる。要求は、要求を行うユーザに関連付けられた暗号ユーザIDを含み得、暗号ユーザIDは、特定の操作を実行する為にブロックチェーンによって認可され得る。要求元デバイスはユーザデバイスであり得る。
ステップ2320において、プロセッサは、ブロックチェーンを初期ブロックから最終ブロックまで確認することを含めてブロックチェーンに記録された権限を計算することによって、要求を行うユーザがブロックチェーンにアクセスする権限を有するかどうかを判断することができる。権限計算を実行することは高価になり得る。
ステップ2330において、プロセッサは、要求を行うユーザがブロックチェーンにアクセスする権限を有すると判断した場合に、要求を行うユーザにブロックチェーンへのアクセスを付与するトークンを生成することができる。トークンは、プロセッサが、例えば、ブロックチェーン上の権限を計算すること、又はユーザのパスワードを確認すること等の高価な操作を行ったことを証明する証明書であり得る。従って、プロセッサが次回トークンを受信する時、プロセッサは高価な操作を行う必要がなく、代わりにトークンを確認することができ、これは、例えば、ブロックチェーンにおける権限を計算するよりも安価な操作となり得る。ステップ2340において、プロセッサは、トークンを要求元デバイスに送信することができる。
トークンは、本願で説明するように、メッセージと、2つの引数、即ちメッセージと秘密のルート鍵とを取るHMACとを含み得る。例えば、メッセージは、ブロックチェーンにアクセスすることを許可されたユーザを識別するパーミッションであり得る。
一実施形態では、ユーザがブロックチェーンを読み取りたい場合、ユーザは、暗号ユーザIDを提供し、ユーザが読み取りたいチーム及び/又は空間等のブロックチェーンの一部を特定する署名付きメッセージを送信することができる。ブロックチェーンにアクセスするプロセッサは、暗号ユーザIDに関連付けられた公開鍵、署名、及びファクトデータベースを確認し、暗号ユーザIDが要求されたチーム及び/又は空間にアクセスするパーミッションを有していることを確認できる。プロセッサが確認を行わない場合、プロセッサは、ユーザへのアクセスを拒否することができる。プロセッサは、ユーザがチーム及び/又は空間にアクセスする権限を有することを確認した場合、暗号化ユーザと、要求されたチーム及び/又は空間の表示とを含むトークンを作成することができる。トークンは、暗号ユーザIDに読み取りパーミッションを付与することができる。
トークンを生成する為に、プロセッサは、秘密のルート鍵を識別する鍵識別子を作成することができる。鍵識別子は、サーバに関連付けられたデータベースへの指数として実装され得る。秘密ルート鍵は、公開鍵暗号化又は秘密鍵暗号化を使用して更に保護され得る。プロセッサは、ユーザID又はチーム及び/又は空間ID等のトークンによって付与されるブロックチェーンへのパーミッションを作成することができる。更に、プロセッサは、秘密のルート鍵とパーミッションとの暗号化ハッシュを作成することができる。暗号化ハッシュはHMACであり得る。プロセッサは、鍵識別子、パーミッション及び暗号化ハッシュをトークンに追加することができる。トークンは、チーム及び/又は空間への読み取りパーミッションを与えることができる。
要求を行うユーザがブロックチェーンとして機能する権限を有するかどうかを判断する為に、プロセッサは、ブロックチェーンに記録された権限を計算せずに、要求がリカバリー鍵で署名されているかどうかを判断することができる。本願で説明するように、リカバリー鍵は、ブロックチェーンに記録された権限を上書きできる。プロセッサは、要求がリカバリー鍵で署名されていると判断した時に、要求を行うユーザにブロックチェーンへの無制限アクセスを付与する第2のトークンを生成することができる。
攻撃者がリカバリー鍵にアクセスすることを防止する為に、リカバリー鍵を複数の部分に分離し、各部分を異なる秘密の暗号化キーを使用して暗号化し、各暗号化部分をHSM等の複数のデバイス間で分散させることができる。
攻撃者がエンドポイント、例えばユーザデバイスを侵害することによってシステムにアクセスすることを防止する為に、暗号化されたデータは、追加的に分割鍵で暗号化され得る。分割鍵は、サーバに格納される第1の部分と、ユーザデバイスに格納される第2の部分とに分離され得る。暗号化されたデータを復号する為に、ユーザデバイスは、分割鍵の第1の部分、即ち、第1の暗号鍵をサーバに要求する必要がある。第1の暗号鍵の要求を受信すると、サーバは、ユーザデバイスが第1の暗号鍵の受信を許可されているかどうかを判断することができる。
例えば、ユーザデバイスは盗難品として報告され、その結果、第1の暗号鍵の受信が許可されないことがある。サーバは、ユーザデバイスが第1の暗号鍵を受信することを許可されていないと判断した場合、第1の暗号鍵の送信を拒否することができる。ユーザデバイスが暗号鍵を受信した場合、ユーザデバイスは、HMAC等の第1暗号鍵と第2暗号鍵の組み合わせである鍵導出関数を計算し、暗号化されたデータの復号に使用できる鍵を取得することができる。
ブロックチェーンに格納された権限及び/又はポリシーの計算に対するソフトウェア更新は、それ自体がブロックチェーンに格納され得る。サーバは、ブロックチェーンのセマンティクスの解釈に関する更新を受信することができる。サーバは、ブロックチェーン内に更新を格納することによって、複数のユーザデバイスに亘るブロックチェーンのセマンティクスの解釈の一貫性を確保できる。
図24は、減衰トークンを作成する方法のフローチャートである。ステップ2400において、プロセッサは、ブロックチェーンへのアクセスを付与するトークンを取得できる。ブロックチェーンへのアクセスは、ブロックチェーンによって定義される第1の権限源によって許可され得る。言い換えると、第1の権限源は、権限及びポリシーを記録するブロックチェーン自体であり得る。トークンは、秘密のルート鍵を識別する鍵識別子と、第1の権限源によって許可されたブロックチェーンへのアクセスの第1のパーミッションと、秘密のルート鍵とパーミッションとの第1の暗号化ハッシュとを含み得る。ブロックチェーンへのアクセスは、要求者が暗号化されたデータへの読み取りアクセスを有するか、又は要求されたチーム及び/若しくは空間におけるメンバーシップを有するかどうかに基づいて許可され得る。
第1のパーミッションは、第1のパーミッションが付与される暗号ユーザID、及びチームや空間等、暗号ユーザIDがアクセス権を有するブロックチェーンの少なくとも一部の識別を含み得る。第1のパーミッションは、暗号ユーザIDによって実行されることが許可された操作を含み得るか、又は、許可された操作は含まれず、操作が読み取り専用であると想定され得る。
ステップ2410において、プロセッサは、要求元デバイスからブロックチェーンにアクセスする要求を、要求元デバイスに関連するアクセスを制限する第2の権限源からの第2のパーミッションと共に受信し得る。第2の権限源は、アクティブディレクトリ等のアクセス制御サーバであり得る。アクセス制御サーバは、企業ITシステムの一部であり得る。
第2のパーミッションは、時間制限又は地理的位置の制限を含み得る。例えば、第2のパーミッションは、軸が許可される時間ウィンドウ、又はアクセスが許可されるジオロケーションを指定することができる。より具体的な例では、ユーザがビルから出た場合、ブロックチェーンへのアクセスは取り消され得る。第2のパーミッションは又、インターネットアドレス制限を含み得、例えば、要求元デバイスのインターネットプロトコル(IP)アドレスが指定されたIPアドレス範囲内にある限り、要求元デバイスへのアクセスを許可する。
ステップ2420において、プロセッサは、企業からの第2のパーミッションをトークンに追加し、第1の暗号化ハッシュと第2のパーミッションとの第2の暗号化ハッシュを計算し、第1の暗号化ハッシュをトークンから除去し、それにより減衰トークンを得ることによって、トークンによって付与されたアクセスを減衰させ得る。第1の権限源及び第2の権限源から夫々得られた第1のパーミッション及び第2のパーミッションは、複数のパーミッション及びトークン及び減衰トークン内のエントリに変換され得る。ステップ2430において、プロセッサは、減衰トークンをユーザデバイス等の要求元デバイスに送信することができる。
トークンを取得する為に、プロセッサは、ブロックチェーンに格納された権限を計算できる。ブロックチェーンは複数のブロックを含み得、ブロックチェーン内のブロックは、暗号ユーザIDの権限を定義する。権限は、ブロックチェーン上で実行する為に、暗号ユーザIDに関連する少なくとも1つの操作を定義することができる。要求を行うユーザがブロックチェーンにアクセスする権限を有するかどうかを判断する為に、プロセッサは、ブロックチェーンを初期ブロックから最終ブロックまで確認することを含め、ブロックチェーンに記録された権限を計算してもよい。プロセッサは、要求を行うユーザがブロックチェーンにアクセスする権限を有すると判断した場合に、要求を行うユーザにブロックチェーンへのアクセスを付与するトークンを生成することができる。
プロセッサは、有効なトークンを受信すると、ブロックチェーンへのアクセスを付与できる。プロセッサは、ブロックチェーンの一部にアクセスする要求と、減衰トークンとを受信することができる。プロセッサは、減衰トークン内に格納されたキーIDを使用して、秘密のルート鍵を取得することができる。プロセッサは、秘密のルート鍵と第1のパーミッションとの暗号化ハッシュを計算して、第3の暗号化ハッシュを取得することができる。プロセッサは、第3の暗号化ハッシュと第2のパーミッションとの暗号化ハッシュを計算して、第4の暗号化ハッシュを取得することができる。プロセッサは、減衰トークンに含まれる第2の暗号化ハッシュと第4の暗号化ハッシュを比較することによって、減衰トークンに含まれる第2の暗号化ハッシュが第4の暗号化ハッシュに一致するかどうかを判断することができる。減衰トークンに含まれる第2の暗号化ハッシュと第4の暗号化ハッシュとが一致すると判断した場合、プロセッサは、ブロックチェーンの一部にアクセスする要求を許可することができる。第2の暗号化ハッシュと第4の暗号化ハッシュとが一致しない場合、プロセッサは、減衰トークンが有効でない為、要求の許可を拒否することができる。
減衰トークンに追加のパーミッション、即ち制約又は注意事項を追加することによって、減衰トークンを更に減衰させることができる。例えば、減衰トークン保有者は、ブロックチェーンへのアクセスの一部を第三者に委任したいと思う場合があり得る。その為、減衰トークン保持者は、第三者にアクセスの一部を許可する追加の減衰トークンの作成を要求することができる。例えば、トークン保有者は、第三者がアクセスすることができるチーム内の特定のブロックを指定できる。
更に減衰したトークンを作成する為に、プロセッサは、減衰トークンと、第3のパーミッションの要求とを受信することができる。一実施形態では、プロセッサは、第3のパーミッションが第1のパーミッション及び第2のパーミッションによって認可されているかどうかを判断することができる。例えば、第1のパーミッションと第2のパーミッションは、チーム1のユーザアリスへのアクセスを付与し、第3のパーミッションは、チーム2へのアクセスを要求することができる。プロセッサは、ユーザアリスにはチーム2へのアクセス権がないと判断し、減衰トークンの作成を拒否することができる。別の例では、第3のパーミッションが第1のパーミッション及び第2のパーミッションによって許可されていると判断すると、プロセッサは、第2の減衰トークンの作成を、第2の暗号化ハッシュと第3のパーミッションとの暗号化ハッシュを計算し、第2の暗号化ハッシュを減衰トークンから削除し、第3のパーミッションを減衰トークンに追加し、第3の暗号化ハッシュを減衰トークンに追加して、それにより第2の減衰トークンを作成することによって、行い得る。
別の実施形態では、プロセッサは、パーミッションの有効性を判断せず、代わりに、減衰トークンを作成するのみである。パーミッションの有効性は、トークンの有効性が決定される時に決定され得る。第3のパーミッションが、第1及び第2のパーミッションによって付与されないデータを要求する場合、空白応答が要求者に提供され得る。
プロセッサは、リカバリー鍵に基づいてトークンを付与することができる。プロセッサは、ブロックチェーンに記録された権限を計算することなく、要求がリカバリー鍵で署名されているかどうかを判断することによって、トークンの要求を行うユーザがブロックチェーンにアクセスする権限を有するかどうかを判断することができる。プロセッサは、要求がリカバリー鍵で署名されていると判断した場合に、要求を行ったユーザにブロックチェーンへの無制限のアクセスを付与する第2のトークンを生成することができる。本願明細書に記載されているように、プロセッサは、リカバリー鍵を30個の部分等の複数の部分に分割し、各部分を暗号化し、暗号化された鍵部分を複数のデバイスに配布し、複数の部分からリカバリー鍵を組み立てる為にデバイスの少なくとも過半数の参加を要求し得る。
ユーザデバイスを侵害することによってシステムに侵入する攻撃者から保護する為に、プロセッサは分割鍵を実装でき、第1の暗号鍵はサーバに格納され、第2の暗号鍵はユーザデバイスに格納される。プロセッサは、ユーザデバイスから第1の暗号鍵の要求を受信すると、プロセッサは、要求受信時に、ユーザデバイスが第1の暗号鍵の受信を許可されているかどうかを判断することができる。例えば、ユーザデバイスが盗難品であると報告された場合、プロセッサは、ユーザデバイスがサーバに格納されている第1の暗号鍵を受信することを許可しない。ユーザデバイスが暗号鍵を受信した場合、ユーザデバイスは、HMAC等の第1暗号鍵と第2暗号鍵の組み合わせであるKDFを実行し、暗号化されたデータの復号に用いることができる鍵を得ることができる。
プロセッサは、ブロックチェーンのセマンティクスの解釈に関する更新を受信することができる。プロセッサは、ブロックチェーン内に更新を格納することによって、複数のユーザデバイスに亘るブロックチェーンのセマンティクスの解釈の一貫性を確保することができる。
トークンに格納されたタイムセンシティブなパーミッション等のタイムセンシティブなパーミッションを実施する為に、プロセッサは、複数のブロックを含むクロックブロックチェーンを作成することができる。複数のブロックの内の各ブロックは、先行するブロックのタイムスタンプよりも大きいタイムスタンプを含み得る。プロセッサは、ブロックチェーン内のブロックと、クロックブロックチェーン内のクロックブロックとの間の時間的関係を作成することができる。例えば、ブロックとクロックブロックとの間のリンクは、ブロックがクロックブロックの前に、クロックブロックの後に、クロックブロックと同時に、クロックブロックの後及び/又は前の指定時間内に作成されたこと等を示し得る。
プロセッサは、時間制限付きパーミッションを含むトークンと、ブロックチェーンの一部にアクセスする要求とを受信することができる。プロセッサは、時間制限付きパーミッションが、ブロックチェーンの要求された部分に関連するクロックブロックチェーンによって許可されているか否かを判断することができる。プロセッサは、時間制限付きパーミッションがクロックブロックチェーンによって許可されていないと判断した場合、ブロックチェーンの一部にアクセスする要求を拒否することができる。例えば、クロックブロックチェーンにおける最新のブロックが時間制限付きパーミッションを過ぎている、又はブロックチェーンの要求された部分が時間制限付きパーミッションウィンドウの外に作成された、等であり得る。
(コンピュータ)
図25は、本明細書で論じた方法論又はモジュールの何れか1つ以上を機械に実行させる為の命令のセットが実行され得るコンピュータシステム2500の例示的形態での機械の図式的表現である。
図25の例では、コンピュータシステム2500は、プロセッサ、メモリ、不揮発性メモリ、及びインターフェースデバイスを含む。様々な共通の構成要素(例えば、キャッシュメモリ)は、説明の簡略化の為に省略されている。コンピュータシステム2500は、図1~24の実施例で説明した構成要素(及び本明細書で説明する他の任意の構成要素)の何れかが実装可能なハードウェアデバイスを例示することを意図している。コンピュータシステム2500は、任意の適用可能な既知の又は便利なタイプであり得る。コンピュータシステム2500の構成要素は、バスを介して、又は他の既知の若しくは便利なデバイスを介して結合され得る。
コンピュータシステム2500は、図1の100、図7の750、1000及び図10A、図11A~Cの1140、図14の1400、図15の1500のようなサーバを表し得る。コンピュータシステム2500は、図1の110~116、図7の700~720、図10Aの1010~1030、図11A~11Cの1100~1120、図14の1440、図15の1540、図15の1450、図15の1550等のデバイスを表し得る。システム2500のプロセッサは、本願で説明した様々な方法及び命令を実行することができる。システム2500のメインメモリ、不揮発性メモリ、及び/又は駆動装置は、プロセッサによって実行される命令を格納することができる。デバイス1110~1160、700~720、1010~1030、1100~1120、及びサーバ100、750、1000、1140、1400、1500、1440、1540は、システム2500のネットワークインターフェース装置を用いて互いに通信できる。例えば、図14のトークン1480、1494、図15のトークン1580、1594は、システム2500のネットワークインターフェースを介して通信することができる。
本開示は、コンピュータシステム2500が任意の適切な物理的形態を取ることを企図する。例として、限定するものではないが、コンピュータシステム2500は、埋込式コンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(例えば、コンピュータオンモジュール(COM)又はシステムオンモジュール(SOM)等)、デスクトップコンピュータシステム、ラップトップ若しくはノートブックコンピュータシステム、インタラクティブキオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、パーソナルデジタルアシスタント(PDA)、サーバ又はこれらの2以上の組合せであってもよい。適切な場合、コンピュータシステム2500は、1つ以上のコンピュータシステム2500を含んでよく、ユニット式又は分散式であってよく、複数の場所に亘ってもよく、複数の機械に亘ってもよく、又はクラウドに存在してもよく、このクラウドには1つ以上のネットワークにおける1つ以上のクラウドコンポーネントが含まれてもよい。適切な場合、1つ以上のコンピュータシステム2500は、本明細書で説明又は例示される1つ以上の方法の1つ以上のステップを実質的に空間的又は時間的に制限することなく実行してもよい。例として、限定するものではないが、1つ以上のコンピュータシステム2500は、本明細書で説明又は例示される1つ以上の方法の1つ以上のステップをリアルタイム又はバッチモードで実行してもよい。1つ以上のコンピュータシステム2500は、適切な場合、本明細書で説明又は図示する1つ以上の方法の1つ以上のステップを異なる時間又は異なる場所で実行してもよい。
プロセッサは、例えば、インテルPentiumマイクロプロセッサ又はモトローラpowerPCマイクロプロセッサ等の従来のマイクロプロセッサであってもよい。関連技術の当業者であれば、「機械可読(記憶)媒体」又は「コンピュータ可読(記憶)媒体」という用語が、プロセッサによってアクセス可能な任意のタイプのデバイスを含むことを認識するであろう。
メモリは、例えば、バスによってプロセッサに結合される。メモリは、限定するものではないが、例として、ダイナミックRAM(DRAM)及びスタティックRAM(SRAM)等のランダムアクセスメモリ(RAM)を含み得る。メモリは、ローカル、リモート、又は分散型であり得る。
バスは、プロセッサを不揮発性メモリ及びドライブユニットも結合する。不揮発性メモリは、多くの場合、磁気フロッピー又はハードディスク、磁気-光ディスク、光ディスク、CD‐ROM、EPROM、又はEEPROM等の読み取り専用メモリ(ROM)、磁気又は光カード、或いは大量のデータ用の別の形態のストレージである。このデータの一部は、コンピュータ2500におけるソフトウェアの実行中に、直接メモリアクセス処理によって、メモリに書き込まれることが多い。不揮発性ストレージは、ローカル、リモート、又は分散型であり得る。不揮発性メモリは任意であるが、これは、メモリ内で利用可能な全ての適用可能なデータでシステムが作成され得るからである。典型的なコンピュータシステムは、通常、少なくともプロセッサ、メモリ、及びメモリをプロセッサに結合する装置(例えば、バス)を含む。
ソフトウェアは、通常、不揮発性メモリ及び/又は駆動装置に格納される。実際、大規模なプログラム全体をメモリに格納することは可能でない場合さえもあり得る。それでも、ソフトウェアを実行する為には、必要に応じて、処理に適したコンピュータ可読の場所に移動させ、説明の為に、その場所を本稿ではメモリと呼ぶことを理解されたい。ソフトウェアが実行の為にメモリに移動される場合でも、プロセッサは通常、ソフトウェアに関連する値を格納する為のハードウェアレジスタ、及び理想的には実行を高速化する為に役立つローカルキャッシュを利用する。本明細書では、ソフトウェアプログラムが「コンピュータ可読媒体に実装されている」と言及される場合、ソフトウェアプログラムは、任意の既知の又は便利な場所(不揮発性ストレージからハードウェアレジスタまで)に格納されていると仮定される。プロセッサは、プログラムに関連する少なくとも1つの値がプロセッサによって読み取り可能なレジスタに格納される時、「プログラムを実行するように構成される」と見做される。
バスは又、プロセッサをネットワークインターフェースデバイスに結合する。インターフェースは、モデム又はネットワークインターフェースの内の1つ以上を含み得る。モデム又はネットワークインターフェースは、コンピュータシステム2500の一部であると考えられ得ることが理解されよう。インターフェースは、アナログモデム、isdnモデム、ケーブルモデム、トークンリングインターフェース、衛星伝送インターフェース(例えば、「ダイレクトPC」)、又はコンピュータシステムを他のコンピュータシステムに結合する為の他のインターフェースを含み得る。インターフェースは、1つ以上の入力及び/又は出力デバイスを含み得る。入出力デバイスは、限定するものではないが、例として、キーボード、マウス又は他のポインティングデバイス、ディスクドライブ、プリンタ、スキャナ、及びディスプレイデバイスを含む他の入出力デバイスを含み得る。ディスプレイデバイスは、限定するものではないが例として、陰極線管(CRT)、液晶ディスプレイ(LCD)、又は他の適用可能な既知の若しくは便利なディスプレイデバイスを含み得る。簡単にする為に、図25の実施例に描かれていない任意のデバイスのコントローラは、インターフェースに存在すると仮定される。
稼動時、コンピュータシステム2500は、ディスクオペレーティングシステムのようなファイル管理システムを含むオペレーティングシステムソフトウェアによって制御され得る。関連するファイル管理システムソフトウェアを有するオペレーティングシステムソフトウェアの一例は、ワシントン州レッドモンドのマイクロソフト社からのWindows(登録商標)として知られるオペレーティングシステムのファミリー、及びそれらの関連するファイル管理システムである。関連するファイル管理システムソフトウェアを伴うオペレーティングシステムソフトウェアの別の例としては、Linux(登録商標)オペレーティングシステムとその関連するファイル管理システムがある。ファイル管理システムは、典型的には、不揮発性メモリ及び/又はドライブユニットに格納され、プロセッサに、不揮発性メモリ及び/又はドライブユニットにファイルを格納することを含む、データの入出力及びメモリへのデータの格納の為にオペレーティングシステムが必要とする様々な行為を実行させる。
詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズム及び記号表現の観点から提示されることがある。これらのアルゴリズムの記述及び表現は、データ処理技術の当業者が、当業者に自身の仕事の実質を最も効果的に伝える為に使用する手段である。アルゴリズムとは、ここでは、一般に、所望の結果をもたらす自己矛盾のない一連の演算であると考えられている。演算は、物理量の物理的操作を必要とするものである。通常、これらの量は、必ずしもそうではないが、格納、転送、結合、比較、及びその他の操作を行うことができる電気信号又は磁気信号の形態を取る。これらの信号をビット、値、要素、記号、文字、用語、数等と呼ぶことは、主に一般的な使用上の理由から、時に便利であることが証明されている。
しかし、これら及び類似の用語の全ては、適切な物理量と関連付けられるべきものであり、これらの量に適用される便利なラベルに過ぎないことに留意すべきである。以下の議論から明らかなように特に別段の記載がない限り、本明細書を通じて、「処理」又は「計算」又は「算出」又は「測定」又は「表示」又は「生成」等の用語を利用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子)量として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ又は他のその種の情報記憶、伝送若しくは表示デバイス内の物理的量として同様に表される他のデータに操作及び変換するコンピュータシステム又は同様の電子計算デバイスの作用及び処理を指していると理解されよう。
本明細書に提示されたアルゴリズム及びディスプレイは、特定のコンピュータ又は他の装置に本質的に関連するものではない。様々な汎用システムが、本明細書の教示に係るプログラムと共に使用されてもよく、或いは、幾つかの実施形態の方法を実行する為により特殊な装置を構築することが便利であることが判明する可能性もある。これらの様々なシステムの為に必要な構造は、以下の説明から判明するであろう。加えて、本技術は、任意の特定のプログラミング言語を参照して説明されておらず、様々な実施形態は、従って、様々なプログラミング言語を使用して実施され得る。
別の実施形態では、機械はスタンドアロン装置として動作するか、又は他の機械に接続(例えば、ネットワーク化)されてもよい。ネットワーク化された配備では、機械は、クライアントサーバネットワーク環境においてサーバ又はクライアント機械の能力で、或いはピアツーピア(又は分散)ネットワーク環境においてピア機械として動作してもよい。
機械は、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC)、タブレットPC、ラップトップコンピュータ、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、iPhone(登録商標)、ブラックベリー、プロセッサ、電話、Webアプライアンス、ネットワークルータ、スイッチ、ブリッジ、又はその機械によって行われるべき動作を指定する命令のセット(連続又はその他)を実行できる任意の機械であり得る。
機械可読媒体又は機械可読記憶媒体は、例示的な実施形態では単一の媒体であるように示されているが、用語「機械可読媒体」及び「機械可読記憶媒体」は、1組以上の命令を格納する単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、及び/又は関連するキャッシュとサーバ)を含むように解釈されるべきである。又、「機械可読媒体」及び「機械可読記憶媒体」という用語は、機械による実行の為の命令のセットを記憶、符号化又は担持することができ、機械に、現在開示されている技術及び革新の方法論又はモジュールの何れか1つ以上を実行させる任意の媒体を含むものと解釈されるものとする。
一般に、本開示の実施形態を実装する為に実行されるルーチンは、オペレーティングシステム或いは「コンピュータプログラム」と呼ばれる特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール又は命令のシーケンスの一部として実装され得る。コンピュータプログラムは、典型的には、コンピュータ内の様々なメモリ及び記憶装置に様々なタイミングで設定され、コンピュータ内の1つ以上の処理ユニット又はプロセッサによって読み取られ実行されると、コンピュータに本開示の様々な態様に関わる要素を実行する為の動作を実行させる1つ以上の命令から構成されている。
更に、実施形態は、完全に機能するコンピュータ及びコンピュータシステムの文脈で説明されてきたが、当業者ならば、様々な実施形態が様々な形態のプログラム製品として配布可能であり、配布を実際に行う為に使用される特定のタイプの機械又はコンピュータ可読媒体に関らず、開示が同様に適用されることを理解するであろう。
機械可読記憶媒体、機械可読媒体、又はコンピュータ可読(記憶)媒体の更なる例としては、特に、揮発性及び不揮発性メモリデバイス、フロッピーディスク及び他のリムーバブルディスク、ハードディスクドライブ、光ディスク等(例えば、コンパクトディスクリードオンリーメモリ(CDROM)、デジタル多用途ディスク、(DVD)等)の記録可能媒体、デジタル及びアナログ通信リンク等の伝送型媒体があるがこれに限定されるものではない。
或る状況では、例えば、2進数の1から2進数の0又はその逆への状態の変化等のメモリデバイスの動作は、物理的変換等の変換を含んでいてもよい。特定のタイプのメモリデバイスでは、そのような物理的変換は、物品の、異なる状態又は物への物理的変換を含んでいてもよい。例えば、限定するものではないが、幾つかのタイプのメモリデバイスでは、状態の変化は、電荷の蓄積及び貯蔵又は貯蔵された電荷の放出を含む場合がある。同様に、他のメモリデバイスでは、状態の変化は、磁気配向の物理的変化又は変換、或いは結晶質から非晶質又はその逆のような分子構造の物理的変化又は変換を含み得る。前述は、メモリデバイスにおける2進数の1から2進数の0又はその逆の状態変化が、物理的変換等の変換を含んでいてもよい、網羅的なリストであることを意図していない。寧ろ、上記は、例示的な例として意図されている。
記憶媒体は、典型的には、非一時的であってもよいし、非一時的デバイスを構成してもよい。この文脈では、非一時的記憶媒体は、有形であるデバイス、即ち、デバイスがその物理的状態を変化させ得るが、デバイスが具体的な物理的形態を有することを意味するデバイスを含んでもよい。従って、例えば、非一時的とは、このように状態が変化するにも係らず、有形の状態を保つデバイスを指す。
(備考)
本明細書で使用される言語は、主として読み易さと説明の為に選択されたものであり、発明的主題を描写又は包括する為に選択されたものではない場合がある。従って、本発明の範囲は、この詳細な説明によってではなく、寧ろ、これに基づく出願で公表される任意の請求項によって限定されることが意図される。従って、様々な実施形態の開示は、以下の特許請求の範囲に規定される実施形態の範囲を例示するものであるが、限定するものではないことを意図している。
1、2 チーム
100 サーバ
110、120、130、140、150 デバイス
160、170、200 チーム線形シーケンス
180、182、184 空間
190、192、194、210 空間線形シーケンス
205 ユーザポリシー
209 イベント
220 システムポリシープログラム
230、250 ファクトデータベース
240 アイデンティティ
242 デバイス1
244 デバイス2
250 ファクトデータベース
260、270、280、290 215 アプリケーションイベント
1410 暗号化されたデータ
1430 アクセス制御サーバ
1440 トークン発行元
1450 ユーザデバイス
1460、1470 トークン要求
1480 トークン
1492 チケット
1494 減衰トークン

Claims (22)

  1. コンピュータ実装方法であって、
    複数のブロックを含むブロックチェーンを作成するステップを、
    ユーザの権限を定義するブロックを作成するステップであって、前記ブロックは、ユーザを識別する暗号ユーザIDと、前記暗号ユーザIDに関連付けられた権限とを含み、前記権限は、前記ブロックチェーンで実行する為に前記暗号ユーザIDに関連付けられた少なくとも1つの操作を定義している、ステップと、
    前記ブロックを前記ブロックチェーンの末尾に追加するステップであって、前記ブロックチェーンは暗号化されていない、ステップと、によって行うステップと、
    前記ブロックチェーンにアクセスする要求を要求元デバイスから受信するステップであって、前記要求は、前記要求を行う前記ユーザに関連付けられた暗号ユーザIDを含む、ステップと、
    前記要求を行う前記ユーザが前記ブロックチェーンにアクセスする権限を有するかどうかを、前記ブロックチェーンに記録された前記権限を計算することによって判断するステップと、
    前記要求を行う前記ユーザが前記ブロックチェーンにアクセスする前記権限を有すると判断した場合に、前記要求を行う前記ユーザに前記ブロックチェーンへのアクセスを付与するトークンを生成するステップと、
    前記トークンを前記要求元デバイスに送信するステップと、
    を含む方法。
  2. 前記トークンを生成するステップは、
    秘密のルート鍵を識別する鍵識別子を作成するステップと、
    前記トークンによって付与される前記ブロックチェーンへのパーミッションを作成するステップと、
    前記秘密のルート鍵と前記パーミッションとの暗号化ハッシュを作成するステップと、
    前記鍵識別子、前記パーミッション、及び前記暗号化ハッシュを前記トークンに追加するステップと、を含む、請求項1に記載の方法。
  3. 前記要求を行う前記ユーザが前記権限を有するか否かを判断するステップは、
    前記ブロックチェーンに記録された前記権限を計算することなく、前記ブロックチェーンを初期ブロックから最終ブロックまで確認することを含めて、前記要求がリカバリー鍵で署名されているかどうかを判断することによって、前記要求を行う前記ユーザが前記ブロックチェーンにアクセスする前記権限を有するかどうかを判断するステップと、
    前記要求が前記リカバリー鍵で署名されていると判断した場合に、前記要求を行う前記ユーザに前記ブロックチェーンへの無制限のアクセスを付与する第2のトークンを生成するステップと、を含む、請求項1に記載の方法。
  4. 前記リカバリー鍵を複数の部分に分離するステップと、
    前記複数の部分の内の少なくとも一部のサブセットを暗号化するステップと、
    前記暗号化された部分のサブセットと前記複数の部分の残りを複数のデバイスに配布するステップと、を含む請求項3に記載の方法。
  5. 第1の暗号鍵をサーバに格納するステップと、
    第2の暗号鍵をユーザデバイスに送信するステップと、
    前記ユーザデバイスから前記第1の暗号鍵の要求を受信するステップと、
    前記要求を受信した時に、前記ユーザデバイスが前記第1の暗号鍵を受信することを許可されているかどうかを判断するステップと、
    前記ユーザデバイスが前記第1の暗号鍵を受信することを許可されていないと判断した場合、前記第1の暗号鍵の送信を拒否するステップと、を含む請求項1に記載の方法。
  6. 前記ブロックチェーンのセマンティクスの解釈に関する更新を受信するステップと、
    前記ブロックチェーン内に前記更新を格納することにより、複数のユーザデバイスに亘る前記ブロックチェーンのセマンティクスの解釈の一貫性を確保するステップと、を含む請求項1に記載の方法。
  7. コンピュータ実装方法であって、
    ブロックチェーンへのアクセスを付与するトークンを取得するステップであって、前記ブロックチェーンへの前記アクセスは、前記ブロックチェーンによって定義される第1の権限源によって許可され、前記トークンは、秘密のルート鍵を識別する鍵識別子と、前記ブロックチェーンによって定義される前記第1の権限源によって許可される前記ブロックチェーンにアクセスする第1のパーミッションと、前記秘密のルート鍵と前記第1のパーミッションとの第1の暗号化ハッシュとを含む、ステップと、
    要求元デバイスから前記ブロックチェーンにアクセスする要求と、前記要求元デバイスに関連するアクセスを制限する第2の権限源から第2のパーミッションを受信するステップと、
    前記トークンに前記第2の権限源からの前記第2のパーミッションを追加し、前記第1の暗号化ハッシュと前記第2のパーミッションとの第2の暗号化ハッシュを計算し、前記トークンから前記第1の暗号化ハッシュを削除することにより、前記トークンによって付与される前記アクセスを減衰させ、減衰トークンを取得するステップと、
    前記減衰トークンを前記要求元デバイスに送信するステップと、を含む方法。
  8. 前記ブロックチェーンが複数のブロックを含み、前記ブロックチェーン内のブロックが暗号ユーザIDの権限を定義し、前記権限が前記ブロックチェーンで実行する為に前記暗号ユーザIDに関連付けられる操作を少なくとも定義し、前記トークンを取得するステップが、
    前記ブロックチェーンを初期ブロックから最終ブロックまで確認することを含めて、前記要求を行うユーザが前記ブロックチェーンにアクセスする権限を有するかどうかを、前記ブロックチェーンに記録された前記権限を計算することによって判断するステップと、
    前記要求を行うユーザが前記ブロックチェーンにアクセスする前記権限を有すると判断した場合に、前記要求を行うユーザに前記ブロックチェーンへのアクセスを付与するトークンを生成するステップと、を含む、請求項7に記載の方法。
  9. 前記第1のパーミッションは、前記第1のパーミッションが付与される暗号ユーザIDと、前記暗号ユーザIDがアクセスする前記ブロックチェーンの少なくとも一部の識別とを含む、請求項7に記載の方法。
  10. 前記第2のパーミッションは、時間制限又は地理的位置制限を含む、請求項7に記載の方法。
  11. 前記ブロックチェーン及び前記減衰トークンにアクセスする第2の要求を受信するステップと、
    前記秘密のルート鍵を取得するステップと、
    前記秘密のルート鍵と前記第1のパーミッションとの暗号化ハッシュを計算して第3の暗号化ハッシュを取得するステップと、
    前記第3の暗号化ハッシュと前記第2のパーミッションとの暗号化ハッシュを計算して第4の暗号化ハッシュを取得するステップと、
    前記減衰トークンに含まれる前記第2の暗号化ハッシュと前記第4の暗号化ハッシュを比較することにより、前記減衰トークンに含まれる前記第2の暗号化ハッシュが前記第4の暗号化ハッシュに一致するかどうかを判断するステップと、
    前記減衰トークンに含まれる前記第2の暗号化ハッシュと前記第4の暗号化ハッシュとが一致すると判断した場合に、前記ブロックチェーンにアクセスする前記第2の要求を許可するステップと、を含む請求項7に記載の方法。
  12. 前記減衰トークンと、第3のパーミッションの要求とを受信するステップと、
    第2の減衰トークンの作成を、前記第2の暗号化ハッシュと前記第3のパーミッションとの暗号化ハッシュを計算して第3の暗号化ハッシュを取得し、前記減衰トークンから前記第2の暗号化ハッシュを削除し、前記減衰トークンに前記第3のパーミッションを追加し、前記減衰トークンに前記第3の暗号化ハッシュを追加して、それにより前記第2の減衰トークンを生成することによって行うステップと、を含む請求項7に記載の方法。
  13. 前記ブロックチェーンが複数のブロックを含み、前記ブロックチェーン内のブロックが、ユーザに関連付けられた暗号ユーザIDの権限を定義し、前記権限が、前記ブロックチェーン上で実行する為に前記暗号ユーザIDに関連付けられた操作を少なくとも定義し、前記トークンを取得するステップが、
    前記ブロックチェーンに記録された前記権限を計算することなく、前記ブロックチェーンを初期ブロックから最終ブロックまで確認することを含めて、前記要求がリカバリー鍵で署名されているかどうかを判断することによって、前記要求を行うユーザが前記ブロックチェーンにアクセスする前記権限を有するかどうかを判断するステップと、
    前記要求が前記リカバリー鍵で署名されていると判断した時に、前記要求を行う前記ユーザに前記ブロックチェーンへの無制限のアクセスを付与する第2のトークンを生成するステップとを含む、請求項7に記載の方法。
  14. 前記リカバリー鍵を複数の部分に分離するステップと、
    前記複数の部分中の部分の少なくともサブセットを暗号化するステップと、
    前記部分の暗号化されたサブセットと前記複数の部分の残りを複数のデバイスに配布するステップと、を含む請求項13に記載の方法。
  15. 第1の暗号鍵をサーバに保存するステップと、
    第2の暗号鍵をユーザデバイスに送信するステップと、
    前記ユーザデバイスから前記第1の暗号鍵の要求を受信するステップと、
    前記要求を受信した時に、前記ユーザデバイスが前記第1の暗号鍵を受信することを許可されているか否かを判断するステップと、
    前記ユーザデバイスが前記第1の暗号鍵を受信することを許可されていないと判断した場合、前記第1の暗号鍵の送信を拒否するステップと、を含む請求項7に記載の方法。
  16. 前記ブロックチェーンのセマンティクスの解釈に関する更新を受信するステップと、
    前記更新を前記ブロックチェーン内に格納することにより、前記ブロックチェーンのセマンティクスの解釈の一貫性を複数のユーザデバイスに亘って確保するステップと、を含む、請求項7に記載の方法。
  17. システムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに結合されたメモリであって、前記少なくとも1つのプロセッサによって実行された時に方法を実行するコンピュータ実行可能命令を含むメモリを備え、前記方法が、
    ブロックチェーンへのアクセスを付与するトークンを取得するステップであって、前記ブロックチェーンへの前記アクセスは、前記ブロックチェーンによって定義される第1の権限源によって許可され、前記トークンは、秘密のルート鍵を識別する鍵識別子と、前記ブロックチェーンによって定義される前記第1の権限源によって許可される前記ブロックチェーンにアクセスする第1のパーミッションと、前記秘密のルート鍵と前記第1のパーミッションとの第1の暗号化ハッシュとを含む、ステップと、
    ユーザデバイスから前記ブロックチェーンにアクセスする要求と、前記ユーザデバイスに関連するアクセスを制限する第2の権限源から第2のパーミッションを受信するステップと、
    前記トークンに前記第2の権限源からの前記第2のパーミッションを追加し、前記第1の暗号化ハッシュと前記第2のパーミッションとの第2の暗号化ハッシュを計算し、前記トークンから前記第1の暗号化ハッシュを削除し、それにより減衰トークンを取得することによって、前記トークンによって付与される前記アクセスを減衰させるステップと、
    前記減衰トークンを前記ユーザデバイスに送信するステップと、を含むシステム。
  18. 前記第2の権限源は企業アクセス制御サーバを含む、請求項17に記載のシステム。
  19. 前記プロセッサが前記方法を実行することは、
    複数のブロックを含むクロックブロックチェーンを作成するステップであって、前記複数のブロックの各ブロックが、先行ブロックのタイムスタンプよりも大きいタイムスタンプを含む、作成ステップと、
    前記ブロックチェーン内のブロックと前記クロックブロックチェーン内のブロックとの間に時間的関係を作成するステップと、
    を含む請求項17に記載のシステム。
  20. 前記プロセッサが前記方法を実行することは、
    時間制限付きパーミッションと、前記ブロックチェーンにアクセスする第2の要求とを含むトークンを受信するステップと、
    前記時間制限付きパーミッションが、前記ブロックチェーンに関連する前記クロックブロックチェーンによって許可されているか否かを判断するステップと、
    前記時間制限付きパーミッションが前記クロックブロックチェーンによって許可されていないと判断した場合に、前記ブロックチェーンにアクセスする要求を拒否するステップと、
    を含む請求項19に記載のシステム。
  21. 前記プロセッサが前記方法を実行することは、
    前記ブロックチェーンにアクセスする第2の要求と、減衰されたトークンとを受信するステップと、
    前記秘密のルート鍵を取得するステップと、
    前記秘密のルート鍵と前記第1のパーミッションとの暗号化ハッシュを計算して、第3の暗号化ハッシュを取得するステップと、
    前記第3の暗号化ハッシュと前記第2のパーミッションとの暗号化ハッシュを計算して、第4の暗号化ハッシュを取得するステップと、
    前記減衰トークンに含まれる前記第2の暗号化ハッシュと前記第4の暗号化ハッシュを比較することにより、前記減衰トークンに含まれる前記第2の暗号化ハッシュが前記第4の暗号化ハッシュに一致するかどうかを判断するステップと、
    前記減衰トークンに含まれる前記第2の暗号化ハッシュと前記第4の暗号化ハッシュとが一致すると判断した場合に、前記ブロックチェーンにアクセスする前記第2の要求を許可するステップと、
    を含む請求項17に記載のシステム。
  22. 前記プロセッサが前記方法を実行することは、
    前記減衰トークンと、第3のパーミッションに対する要求とを受信するステップと、
    前記第3のパーミッションが前記第1のパーミッション及び前記第2のパーミッションによって許可されているかどうかを判断するステップと、
    前記第3のパーミッションが前記第1のパーミッション及び前記第2のパーミッションによって許可されていると判断した場合に、第2の減衰トークンの作成を、前記第2の暗号化ハッシュと前記第3のパーミッションとの暗号化ハッシュを計算して第3の暗号化ハッシュを取得し、前記第2の暗号化ハッシュを前記減衰トークンから削除し、前記第3のパーミッションを前記減衰トークンに追加し、前記第3の暗号化ハッシュを前記減衰トークンに追加し、それにより前記第2の減衰トークンを作成することによって行うステップと、
    を含む請求項17に記載のシステム。
JP2022558420A 2019-04-05 2021-03-23 企業環境におけるブロックチェーンの統合、グループ権限とアクセスの管理 Pending JP2023520372A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962830002P 2019-04-05 2019-04-05
US16/828,003 US11341261B2 (en) 2019-04-05 2020-03-24 Integration of a block chain, managing group authority and access in an enterprise environment
US16/828,003 2020-03-24
PCT/US2021/023633 WO2021195052A1 (en) 2019-04-05 2021-03-23 Integration of a block chain, managing group authority and access in an enterprise environment

Publications (2)

Publication Number Publication Date
JP2023520372A true JP2023520372A (ja) 2023-05-17
JPWO2021195052A5 JPWO2021195052A5 (ja) 2024-01-22

Family

ID=72662513

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022558420A Pending JP2023520372A (ja) 2019-04-05 2021-03-23 企業環境におけるブロックチェーンの統合、グループ権限とアクセスの管理

Country Status (7)

Country Link
US (5) US11341261B2 (ja)
EP (1) EP4127980A4 (ja)
JP (1) JP2023520372A (ja)
CN (2) CN115701301A (ja)
AU (1) AU2021244365A1 (ja)
CA (1) CA3173159A1 (ja)
WO (1) WO2021195052A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117692170A (zh) 2016-09-15 2024-03-12 美商纳兹控股有限责任公司 通信方法和设备、折叠数据的方法和系统以及计算机
CN108306819B (zh) * 2018-04-20 2022-03-04 网易(杭州)网络有限公司 基于区块链的即时通讯系统实现方法、介质和计算设备
US11341259B2 (en) * 2018-12-12 2022-05-24 Spideroak, Inc. Managing group authority and access to a secured file system in a decentralized environment
US11341261B2 (en) 2019-04-05 2022-05-24 Spideroak, Inc. Integration of a block chain, managing group authority and access in an enterprise environment
WO2020235942A1 (ko) * 2019-05-21 2020-11-26 웰스트리에스지 유한회사 (영업소) 분실된 개인 키를 복원하는 시스템
KR20230021642A (ko) 2020-04-09 2023-02-14 너츠 홀딩스 엘엘씨 너츠: 유연한 계위 객체 그래프
PL244966B1 (pl) * 2020-07-29 2024-04-08 Dicella Spolka Z Ograniczona Odpowiedzialnoscia Sposób i układ zabezpieczania danych, zwłaszcza danych laboratoriów biotechnologicznych
US11080412B1 (en) * 2020-08-20 2021-08-03 Spideroak, Inc. Efficiently computing validity of a block chain
US11550307B2 (en) * 2020-08-26 2023-01-10 Accenture Global Solutions Limited Asset management, registry, and tracking on shared blockchain nodes
CN112235301B (zh) * 2020-10-14 2023-06-06 北京金山云网络技术有限公司 访问权限的验证方法、装置和电子设备
CN112468577B (zh) * 2020-11-25 2021-11-02 上海欧冶金融信息服务股份有限公司 一种基于数据映射关系的数据可控共享方法及系统
CN114124499B (zh) * 2021-11-15 2023-08-29 中国科学院沈阳计算技术研究所有限公司 基于区块链的慈善系统隐私保护方法与系统
CN114338034B (zh) * 2021-12-09 2023-07-18 河南大学 一种基于区块链的坝岸监测数据安全共享方法及系统
CN114285865B (zh) * 2021-12-28 2023-08-08 天翼云科技有限公司 共享云硬盘的访问权限控制系统
CN114629684A (zh) * 2022-02-16 2022-06-14 深圳番多拉信息科技有限公司 基于区块链的权限令牌处理方法、系统、装置及存储介质
CN114861200A (zh) * 2022-04-01 2022-08-05 中国银行股份有限公司 数据处理方法、装置、设备及存储介质
US11695772B1 (en) * 2022-05-03 2023-07-04 Capital One Services, Llc System and method for enabling multiple auxiliary use of an access token of a user by another entity to facilitate an action of the user
JP2024010419A (ja) * 2022-07-12 2024-01-24 富士通株式会社 アクセス制御方法及びアクセス制御プログラム
CN115964687A (zh) * 2022-12-14 2023-04-14 武汉卓讯互动信息科技有限公司 基于区块链的企业统一账号认证方法和认证平台

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10490304B2 (en) 2012-01-26 2019-11-26 Netspective Communications Llc Device-driven non-intermediated blockchain system over a social integrity network
US10068228B1 (en) * 2013-06-28 2018-09-04 Winklevoss Ip, Llc Systems and methods for storing digital math-based assets using a secure portal
US9397990B1 (en) 2013-11-08 2016-07-19 Google Inc. Methods and systems of generating and using authentication credentials for decentralized authorization in the cloud
EP3114793A4 (en) * 2014-03-03 2017-09-27 Intel Corporation Methods and apparatus for migrating keys
US9736145B1 (en) * 2014-08-01 2017-08-15 Secureauth Corporation Generation and validation of derived credentials
US9779233B2 (en) * 2015-03-05 2017-10-03 Ricoh Co., Ltd. Broker-based authentication system architecture and design
US10402792B2 (en) 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
US20170243209A1 (en) 2016-02-22 2017-08-24 Bank Of America Corporation System for grant of user access and data usage in a process data network
US10289835B1 (en) * 2016-06-13 2019-05-14 EMC IP Holding Company LLC Token seed protection for multi-factor authentication systems
EP3472970A4 (en) 2016-06-17 2019-11-27 Weimer, Jonathan BLOCK CHAIN SYSTEMS AND METHOD FOR USER AUTHENTICATION
US11088855B2 (en) * 2016-07-29 2021-08-10 Workday, Inc. System and method for verifying an identity of a user using a cryptographic challenge based on a cryptographic operation
CN106055993A (zh) * 2016-08-13 2016-10-26 深圳市樊溪电子有限公司 一种用于区块链的加密存储系统及其使用方法
US11018855B2 (en) * 2016-08-17 2021-05-25 Mine Zero Gmbh Multi-factor-protected private key distribution
CA3033385A1 (en) 2016-08-23 2018-03-01 BBM Health LLC Blockchain-based mechanisms for secure health information resource exchange
JP6888673B2 (ja) * 2016-10-27 2021-06-16 株式会社デンソー デバイスを認証および認可するためのシステムおよび方法
US10438170B2 (en) 2017-01-05 2019-10-08 International Business Machines Corporation Blockchain for program code credit and programmer contribution in a collective
US20180288031A1 (en) * 2017-03-31 2018-10-04 Ca, Inc. Collection point anchored multi-property identity based application specific token origination
US11538031B2 (en) * 2017-03-31 2022-12-27 Vijay Madisetti Method and system for identity and access management for blockchain interoperability
US11750609B2 (en) 2017-04-28 2023-09-05 Cyberark Software Ltd. Dynamic computing resource access authorization
CN110692223B (zh) 2017-07-14 2022-01-21 日立数据管理有限公司 用于控制对数据存储系统的用户访问的方法、设备和系统
US10853772B2 (en) * 2018-04-04 2020-12-01 Vijay K. Madisetti Method and system for exchange of value or tokens between blockchain networks
CN108123936B (zh) * 2017-12-13 2021-04-13 北京科技大学 一种基于区块链技术的访问控制方法及系统
US11315110B2 (en) 2017-12-27 2022-04-26 International Business Machines Corporation Private resource discovery and subgroup formation on a blockchain
CA3088610A1 (en) * 2018-01-17 2019-07-25 Geeq Corporation Blockchain methods, nodes, systems and products
US10742397B2 (en) 2018-04-26 2020-08-11 Jonathan Sean Callan Method and system for managing decentralized data access permissions through a blockchain
US10965673B2 (en) 2018-05-11 2021-03-30 Civic Technologies, Inc. User ID codes for online verification
CN108768988B (zh) * 2018-05-17 2021-01-05 深圳前海微众银行股份有限公司 区块链访问控制方法、设备及计算机可读存储介质
US11507928B2 (en) 2018-06-05 2022-11-22 International Business Machines Corporation Blockchain and cryptocurrency for real-time vehicle accident management
WO2020003131A1 (en) 2018-06-25 2020-01-02 Blocktest Global Systems and methods to automatically evaluate blockchain-based solution performance
US11294865B2 (en) 2018-08-13 2022-04-05 Citrix Systems, Inc. Using a scan data ledger for distributed security analysis of shared content
US11057366B2 (en) 2018-08-21 2021-07-06 HYPR Corp. Federated identity management with decentralized computing platforms
US20210365584A1 (en) * 2018-08-29 2021-11-25 Visa International Service Association Portable reputation brokering using linked blockchains and shared events
US20200084027A1 (en) 2018-09-06 2020-03-12 Bank Of Montreal Systems and methods for encryption of data on a blockchain
US11341259B2 (en) 2018-12-12 2022-05-24 Spideroak, Inc. Managing group authority and access to a secured file system in a decentralized environment
US11030297B2 (en) * 2019-01-04 2021-06-08 Comcast Cable Communications, Llc Systems and methods for device and user authorization
US11341261B2 (en) 2019-04-05 2022-05-24 Spideroak, Inc. Integration of a block chain, managing group authority and access in an enterprise environment
US11251963B2 (en) 2019-07-31 2022-02-15 Advanced New Technologies Co., Ltd. Blockchain-based data authorization method and apparatus
US11252166B2 (en) 2019-07-31 2022-02-15 Advanced New Technologies Co., Ltd. Providing data authorization based on blockchain
CN110784463B (zh) * 2019-10-24 2021-08-31 深圳市超算科技开发有限公司 一种基于区块链的文件存储和访问方法

Also Published As

Publication number Publication date
CN115701301A (zh) 2023-02-07
CA3173159A1 (en) 2021-09-30
US20210224411A1 (en) 2021-07-22
WO2021195052A1 (en) 2021-09-30
AU2021244365A1 (en) 2022-11-24
EP4127980A4 (en) 2023-12-27
US11074357B2 (en) 2021-07-27
CN116112274B (zh) 2023-11-24
CN116112274A (zh) 2023-05-12
US20220198046A1 (en) 2022-06-23
US20240135021A1 (en) 2024-04-25
EP4127980A1 (en) 2023-02-08
US20200320211A1 (en) 2020-10-08
US11630910B2 (en) 2023-04-18
US20210141919A1 (en) 2021-05-13
US11803654B2 (en) 2023-10-31
US11341261B2 (en) 2022-05-24

Similar Documents

Publication Publication Date Title
US11074357B2 (en) Integration of a block chain, managing group authority and access in an enterprise environment
US11403417B2 (en) Managing group authority and access to a secured file system in a decentralized environment
EP4002758A1 (en) Security token validation
US11841957B2 (en) Implementation of a file system on a block chain
US11604888B2 (en) Digital storage and data transport system
Piechotta et al. A secure dynamic collaboration environment in a cloud context
Sánchez‐Artigas et al. StackSync: Attribute‐based data sharing in file synchronization services
US20230199066A1 (en) Distributed network nodes defining a database access gateway
Bećirović et al. Blockchain Redaction in Self-Sovereign Identity
Kowalski CRYPTOBOX V2.
JOJAPPA et al. Public Verifying for Mutual Data with Dynamic User Revocation in the Cloud
SATYA et al. Public Auditing for Modify and Share Data with Secure and Efficient User Revocation in Cloud
Koerner et al. Data Freshness for Non-Trusted Environments Using Disposable Certificates

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240112

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20240112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240423