[go: up one dir, main page]

JP2025504756A - SYSTEM AND METHOD FOR GENERATING TRUSTED BINARIES - Patent application - Google Patents

SYSTEM AND METHOD FOR GENERATING TRUSTED BINARIES - Patent application Download PDF

Info

Publication number
JP2025504756A
JP2025504756A JP2024537985A JP2024537985A JP2025504756A JP 2025504756 A JP2025504756 A JP 2025504756A JP 2024537985 A JP2024537985 A JP 2024537985A JP 2024537985 A JP2024537985 A JP 2024537985A JP 2025504756 A JP2025504756 A JP 2025504756A
Authority
JP
Japan
Prior art keywords
executable
function
implementations
trust
trusted
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
JP2024537985A
Other languages
Japanese (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
Priority claimed from US17/684,363 external-priority patent/US11449602B1/en
Priority claimed from US17/688,878 external-priority patent/US12346430B1/en
Priority claimed from US17/735,101 external-priority patent/US11928205B1/en
Priority claimed from US17/735,087 external-priority patent/US11822647B1/en
Application filed by シーエスピー,インコーポレイテッド filed Critical シーエスピー,インコーポレイテッド
Publication of JP2025504756A publication Critical patent/JP2025504756A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

Figure 2025504756000001

本明細書に記載される様々な実装形態は、信頼バイナリを作成及び使用するための方法及びデバイスを含む。一態様では、方法は、プログラムの実行可能コードを取得することと、実行可能コードから複数の実行可能関数を識別することと、複数の実行可能関数の各実行可能関数について、それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、を含む。方法は、複数の実行可能関数の各実行可能関数についてそれぞれのダイジェストを含むそれぞれの信頼バイナリを構築することと、実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成することと、信頼バイナリ名を利用して、信頼データベース内の信頼バイナリをインデックス化することと、を更に含む。
【選択図】図1

Figure 2025504756000001

Various implementations described herein include methods and devices for creating and using trusted binaries. In one aspect, the method includes obtaining executable code for a program, identifying a plurality of executable functions from the executable code, and for each executable function of the plurality of executable functions, generating a respective function digest based on one or more static components of the respective executable function. The method further includes building a respective trusted binary for each executable function of the plurality of executable functions that includes the respective digest, generating a trusted binary name by applying a hash function to a header of the executable code, and indexing the trusted binary in a trust database using the trusted binary name.
[Selected Figure] Figure 1

Description

関連出願の相互参照
本出願は、(1)「SYSTEMS AND METHODS FOR GENERATING TRUST BINARIES」と題された2022年3月1日に出願された米国特許出願第17/684,363号の継続であり、(2)「SYSTEMS AND METHODS FOR IMPLEMENTING CYBERSECURITY USING TRUST BINARIES」と題された2022年3月7日に出願された米国特許出願第17/688,878号の継続であり、(3)「ATA STRUCTURE FOR TRUST STORE」と題された2022年5月2日に出願された米国特許出願第17/735,087号の継続であり、かつ(4)「SYSTEMS AND METHODS FOR IMPLEMENTING CYBERSECURITY USING BLOCKCHAIN VALIDATION」と題された2022年5月2日に出願された米国特許出願第17/735,101号の継続であり、これらのそれぞれは、参照によりその全体が本明細書に組み込まれる。
CROSS-REFERENCE TO RELATED APPLICATIONS This application is (1) a continuation of U.S. patent application Ser. No. 17/684,363, filed March 1, 2022, entitled “SYSTEMS AND METHODS FOR GENERATING TRUST BINARIES,” (2) a continuation of U.S. patent application Ser. No. 17/688,878, filed March 7, 2022, entitled “SYSTEMS AND METHODS FOR IMPLEMENTING CYBERSECURITY USING TRUST BINARIES,” and (3) a continuation of U.S. patent application Ser. No. 17/688,878, filed March 7, 2022, entitled “ATA STRUCTURE FOR TRUST BINARIES.” No. 17/735,087, filed May 2, 2022, entitled "SYSTEMS AND METHODS FOR IMPLEMENTING CYBERSECURITY USING BLOCKCHAIN VALIDATION," each of which is incorporated herein by reference in its entirety.

開示される実装形態は、概して、サイバーセキュリティに関し、より具体的には、サイバーセキュリティを実装するための信頼できるバイナリを使用するシステム及び方法に関する。 The disclosed implementations relate generally to cybersecurity, and more specifically to systems and methods that use trusted binaries to implement cybersecurity.

デジタル攻撃からシステム及びネットワークを保護するための実践であるサイバーセキュリティは、デジタル時代においてますます重要になっている。デジタル攻撃はますます洗練されており、従来のエンドポイント検出及び応答(EDR)ソリューションはその実効性を失っている。多くの従来のEDRソリューションは、既知の攻撃を検出して阻止するように設計されている。しかしながら、新規の攻撃が展開される時間と、攻撃を検出して停止するためにEDRソリューションが更新される時間との間に、著しい遅延(例えば、数日、数週間、又は数ヶ月)が存在し得る。更に、マルウェアはますます多様化しており、その行動パターンを継続的に変更している。この多型性は、従来のEDRソリューションの応答時間を更に増加させる。 Cybersecurity, the practice of protecting systems and networks from digital attacks, has become increasingly important in the digital age. Digital attacks are becoming increasingly sophisticated, rendering traditional endpoint detection and response (EDR) solutions less effective. Many traditional EDR solutions are designed to detect and stop known attacks. However, there can be a significant delay (e.g., days, weeks, or months) between the time a new attack is deployed and the time the EDR solution is updated to detect and stop the attack. Furthermore, malware is becoming increasingly diverse and continually changing its behavior patterns. This polymorphism further increases the response time of traditional EDR solutions.

本開示のゼロ信頼(ZT)システムは、未知の不正なコードからコンピュータを保護する。コードを実行するには、最初にメモリにロードする必要がある。一例として、ZTシステムは、信頼エージェント(例えば、OS固有の信頼エージェント)を有し、これは、プログラムがメモリにロードされるときに各プログラムを監視し、プログラムのコードを有効性認証する。この例の有効性認証手順では、オリジナルコードの代替デジタルバージョンである信頼バイナリを使用する。この例においてコードを実行するには、ZTシステムは、コードのための対応する信頼バイナリを必要とする。信頼バイナリが欠落しているか、相関していない場合、この例では、コードをシステム上で実行することは許可されない。 The Zero Trust (ZT) system of the present disclosure protects a computer from unknown, malicious code. To execute code, it must first be loaded into memory. As an example, the ZT system has a trust agent (e.g., an OS-specific trust agent) that monitors each program as it is loaded into memory and validates the program's code. The validation procedure in this example uses a trust binary, which is a substitute digital version of the original code. To execute code in this example, the ZT system needs a corresponding trust binary for the code. If the trust binary is missing or uncorrelated, in this example, the code is not allowed to execute on the system.

いくつかの実装形態によれば、実行可能コードがその実行前に改ざんされていないことを確認するために、信頼バイナリがZTシステムによって使用される。例えば、信頼バイナリは、最初にファイルのコードセグメントを識別することによって、実行可能ファイル(例えば、実行可能プログラム)に対して作成される。次に、コードセグメントがスキャンされ、それぞれの中の実行可能関数が識別される。この例では、識別された各関数について、関数の開始アドレス及びその静的成分に基づいて関数ダイジェストが作成される。識別された関数の関数ダイジェストは、ファイルのための信頼バイナリに組み合わせられる。この例では、信頼バイナリ名は、ファイルのヘッダをハッシュすることによって生成され、信頼バイナリは、信頼バイナリ名によってインデックス化された信頼データベース(例えば、信頼ストア)に追加される。 According to some implementations, trusted binaries are used by the ZT system to verify that executable code has not been tampered with prior to its execution. For example, trusted binaries are created for executable files (e.g., executable programs) by first identifying the code segments of the file. The code segments are then scanned to identify executable functions within each. In this example, for each identified function, a function digest is created based on the start address of the function and its static components. The function digests of the identified functions are combined into a trusted binary for the file. In this example, a trusted binary name is generated by hashing the header of the file, and the trusted binary is added to a trust database (e.g., a trust store) indexed by the trusted binary name.

いくつかの実装形態によれば、信頼バイナリは、保護されたデバイス上のメモリ内の全ての実行コードを保護するために使用される。例えば、ZT保護は、カーネルエージェント(例えば、カーネルレベルデバイスドライバ)として実装される。この例では、カーネルエージェントは保護されたデバイス上のリング-0で実行され、アプリケーションコードはリング-3で実行される。例示的なZT保護手順は、カーネルエージェントをロードすることを含み、エージェントは、その信頼バイナリを信頼データベースからロードし、メモリ内のコードが信頼バイナリと一致すること(例えば、改ざんされていないこと)を検証する。この例では、エージェントは実行中に、ファイルI/O動作、レジストリI/O動作、スレッドの開始及び停止動作、画像のロード及びアンロード動作など、コードが特定のシステムレベルの動作を実行しようとすると、スポット有効性認証を実行する。後でより詳細に説明するように、幅広い攻撃から保護するために、追加の対策を採用することもできる。この例では、コードが信頼バイナリに一致しない場合、又は対策の1つが攻撃を検出した場合、プロセスが停止され、フォレンジックがキャプチャされるか、又はプロセスが継続されることを許可されるが、フォレンジックがキャプチャされる(例えば、デバイスポリシーに基づいて)かのいずれかである。 According to some implementations, a trusted binary is used to protect all executing code in memory on the protected device. For example, ZT protection is implemented as a kernel agent (e.g., a kernel-level device driver). In this example, the kernel agent runs in ring-0 on the protected device, and application code runs in ring-3. An exemplary ZT protection procedure includes loading the kernel agent, which loads its trusted binary from a trusted database and verifies that the code in memory matches the trusted binary (e.g., has not been tampered with). In this example, the agent performs spot validity verification during execution when the code attempts to perform certain system-level operations, such as file I/O operations, registry I/O operations, thread start and stop operations, image load and unload operations, etc. Additional countermeasures can also be employed to protect against a wide range of attacks, as described in more detail below. In this example, if the code does not match the trusted binary or if one of the countermeasures detects an attack, either the process is stopped and forensics are captured, or the process is allowed to continue but forensics are captured (e.g., based on device policy).

様々な状況において、本開示のZTシステムは、従来のサイバーセキュリティシステムよりも以下の利点を有する。第一に、いくつかの実装形態によれば、ZTシステムは、システムが全ての信頼できないバイナリファイルをブロックし、したがって、脅威が識別されている間、脆弱性期間がないため、新規の出現する脅威に対して効果的である。第二に、いくつかの実装形態によれば、ZTシステムは、信頼できないバイナリを識別するときに、過去の傾向に依存せず、偽陰性もないため、高い効力を有する。第三に、いくつかの実装形態によれば、ZTシステムはメモリを監視するため、正規のプロセス及びアプリケーションを介してメモリ内で開始される攻撃から保護する。第四に、ZTシステムは、ネットワークアクセスを必要とせずにその信頼ストアを維持及び有効性認証できるため、オフネットワーク(例えば、エアギャップ)システム上で動作することができる。 In various circumstances, the ZT system of the present disclosure has the following advantages over conventional cybersecurity systems. First, according to some implementations, the ZT system is effective against new and emerging threats because the system blocks all untrusted binary files and therefore there is no vulnerability period while the threat is identified. Second, according to some implementations, the ZT system has high efficacy when identifying untrusted binaries because it does not rely on past trends and has no false negatives. Third, according to some implementations, the ZT system monitors memory, thus protecting against attacks that are initiated in memory via legitimate processes and applications. Fourth, the ZT system can operate on off-network (e.g., air-gapped) systems because it can maintain and validate its trust store without requiring network access.

いくつかの実装形態によれば、方法は、メモリ及び1つ以上のプロセッサを有するコンピューティングデバイスで実行される。この方法は、(i)プログラムの実行可能コードを取得することと、(ii)実行可能コードから複数の実行可能関数を識別することと、(iii)複数の実行可能関数の各実行可能関数について、それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、(iv)複数の実行可能関数の各実行可能関数についてのそれぞれのダイジェストを含むそれぞれの信頼バイナリを構築することと、(v)実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成することと、(vi)信頼バイナリ名を利用して、信頼データベース内の信頼バイナリをインデックス化することと、を含む。 According to some implementations, a method is performed on a computing device having a memory and one or more processors. The method includes: (i) obtaining executable code of a program; (ii) identifying a plurality of executable functions from the executable code; (iii) generating, for each executable function of the plurality of executable functions, a respective function digest based on one or more static components of the respective executable function; (iv) constructing a respective trusted binary including the respective digest for each executable function of the plurality of executable functions; (v) generating a trusted binary name by applying a hash function to a header of the executable code; and (vi) indexing the trusted binary in a trust database using the trusted binary name.

いくつかの実装形態によれば、方法は、メモリ及び1つ以上のプロセッサを有するコンピューティングデバイスで実行される。この方法は、(i)信頼エージェントを実行することと、(ii)信頼エージェントを介して、コンピューティングデバイス上のプログラムの今後の実行を検出することと、(iii)検出に応答して、メモリ内の信頼ストアからプログラムのための信頼バイナリを取得することと、(iv)プログラムの実行可能コードをプログラムのための取得された信頼バイナリと比較することによって、プログラムの真正性を確認することと、(v)プログラムの確認された真正性に従って、プログラムの実行を許可することと、(vi)プログラムの実行を監視することによって、プログラム内の実行可能関数の今後の実行を識別することと、(vii)実行可能関数の今後の実行を識別することに応答して、信頼バイナリから、実行可能関数に対応する関数ダイジェストを取得することと、(viii)実行可能関数の実行可能コードを取得された関数ダイジェストと比較することによって、実行可能関数の真正性を確認することと、(ix)実行可能関数の確認された真正性に従って、実行可能関数の実行を許可することと、を含む。 According to some implementations, a method is performed on a computing device having a memory and one or more processors. The method includes: (i) executing a trust agent; (ii) detecting future execution of a program on the computing device via the trust agent; (iii) responsive to the detection, retrieving a trusted binary for the program from a trust store in memory; (iv) verifying authenticity of the program by comparing executable code of the program with the retrieved trusted binary for the program; (v) allowing execution of the program in accordance with the verified authenticity of the program; (vi) identifying future execution of an executable function in the program by monitoring the execution of the program; (vii) in response to identifying future execution of the executable function, retrieving a function digest corresponding to the executable function from the trusted binary; (viii) verifying authenticity of the executable function by comparing executable code of the executable function with the retrieved function digest; and (ix) allowing execution of the executable function in accordance with the verified authenticity of the executable function.

いくつかの実装形態によれば、コンピュータ可読記憶媒体は、複数の信頼バイナリを記憶する信頼データベースを含み、各信頼バイナリは、それぞれの実行可能プログラムに対応する。複数の信頼バイナリの各信頼バイナリは、(i)それぞれの実行可能プログラムのそれぞれのヘッダにハッシュ関数を適用することによって生成されたそれぞれの信頼バイナリ名と、(ii)それぞれの実行可能プログラム内で識別された各実行可能関数についてのそれぞれの関数ダイジェストと、を含み、それぞれの関数ダイジェストが、それぞれの開始アドレス及びそれぞれの実行可能関数の1つ以上のそれぞれの静的成分に基づいて生成される。複数の信頼バイナリは、それらのそれぞれの信頼バイナリ名を使用して信頼データベース内にインデックス化される。 According to some implementations, a computer-readable storage medium includes a trust database that stores a plurality of trusted binaries, each trusted binary corresponding to a respective executable program. Each trusted binary of the plurality of trusted binaries includes (i) a respective trusted binary name generated by applying a hash function to a respective header of the respective executable program, and (ii) a respective function digest for each executable function identified within the respective executable program, the respective function digest being generated based on a respective starting address and one or more respective static components of the respective executable function. The plurality of trusted binaries are indexed into the trust database using their respective trusted binary names.

いくつかの実装形態によれば、方法は、メモリ及び1つ以上のプロセッサを有するコンピューティングデバイスで実行される。この方法は、(i)信頼ストアのためのブロックチェーンを取得することを含む、コンピューティングデバイスのための信頼ストアにアクセスすることと、(ii)信頼ストアに対する第1の変更を識別することと、(iii)第1の変更を識別することに応答して、第1の変更についての第1の暗号化されたダイジェストを含む第1のブロックを生成し、第1のブロックをブロックチェーンに挿入することと、(iv)信頼ストアに対する第2の変更を識別することと、(v)第2の変更を識別することに応答して、第2の変更についての第2の暗号化されたダイジェスト及び第1の暗号化されたダイジェストを含む第2のブロックを生成し、第2のブロックをブロックチェーンに挿入することと、を含む。 According to some implementations, a method is executed on a computing device having a memory and one or more processors. The method includes: (i) accessing a trust store for the computing device, including obtaining a blockchain for the trust store; (ii) identifying a first change to the trust store; (iii) in response to identifying the first change, generating a first block including a first encrypted digest for the first change and inserting the first block into the blockchain; (iv) identifying a second change to the trust store; and (v) in response to identifying the second change, generating a second block including a second encrypted digest for the second change and the first encrypted digest and inserting the second block into the blockchain.

いくつかの実装形態では、コンピューティングデバイスは、1つ以上のプロセッサ、メモリ、ディスプレイ、及びメモリに記憶された1つ以上のプログラムを含む。プログラムは、1つ以上のプロセッサによる実行のために構成される。1つ以上のプログラムは、本明細書で説明される方法のうちのいずれかを実行するための命令を含む。 In some implementations, a computing device includes one or more processors, a memory, a display, and one or more programs stored in the memory. The programs are configured for execution by the one or more processors. The one or more programs include instructions for performing any of the methods described herein.

いくつかの実装形態では、非一時的コンピュータ可読記憶媒体は、1つ以上のプロセッサ、メモリ、及びディスプレイを有するコンピューティングデバイスによる実行のために構成された1つ以上のプログラムを記憶する。1つ以上のプログラムは、本明細書で説明される方法のうちのいずれかを実行するための命令を含む。 In some implementations, a non-transitory computer-readable storage medium stores one or more programs configured for execution by a computing device having one or more processors, a memory, and a display. The one or more programs include instructions for performing any of the methods described herein.

したがって、サイバーセキュリティのための信頼バイナリ及びブロックチェーンを作成及び使用するための方法及びシステムが開示されている。そのような方法及びシステムは、サイバーセキュリティの従来の方法及びシステムを補完又は置き換え得る。 Accordingly, methods and systems for creating and using trust binaries and blockchains for cybersecurity are disclosed. Such methods and systems may complement or replace conventional methods and systems of cybersecurity.

前述のシステム、方法、及びグラフィカルユーザインターフェース、並びにデータ視覚化分析を提供する追加のシステム、方法、及びグラフィカルユーザインターフェースをよりよく理解するために、以下の実施形態の説明を参照し、同様の参照番号は、図面全体を通して対応する部分を指す。 For a better understanding of the aforementioned systems, methods, and graphical user interfaces, as well as additional systems, methods, and graphical user interfaces providing data visualization analysis, reference is made to the following description of the embodiments, in which like reference numerals refer to corresponding parts throughout the drawings.

いくつかの実装形態による、例示的なネットワークアーキテクチャを示す。1 illustrates an example network architecture, according to some implementations. いくつかの実装形態による、例示的な実行可能ファイルを示す。1 illustrates an example executable file according to some implementations. いくつかの実装形態による、例示的な実行可能ファイルを示す。1 illustrates an example executable file according to some implementations. いくつかの実装形態による、例示的なコンピューティングデバイスのブロック図である。FIG. 1 is a block diagram of an exemplary computing device, according to some implementations. いくつかの実装形態による、例示的な信頼ストアのブロック図である。FIG. 2 is a block diagram of an example trust store, according to some implementations. いくつかの実装形態による、例示的なブロックチェーンのブロック図である。FIG. 1 is a block diagram of an example blockchain, according to some implementations. いくつかの実装形態による、例示的な信頼バイナリユースケースを示す。1 illustrates an example trusted binary use case, according to some implementations. いくつかの実装形態による、例示的な信頼バイナリユースケースを示す。1 illustrates an example trusted binary use case, according to some implementations. いくつかの実装形態による、例示的なネットワークアーキテクチャを示す。1 illustrates an example network architecture, according to some implementations. いくつかの実装形態による、信頼バイナリを作成するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for creating a trusted binary, according to some implementations. いくつかの実装形態による、信頼バイナリを作成するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for creating a trusted binary, according to some implementations. いくつかの実装形態による、信頼バイナリを使用するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for using trusted binaries, according to some implementations. いくつかの実装形態による、信頼バイナリを使用するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for using trusted binaries, according to some implementations. いくつかの実装形態による、信頼バイナリを使用するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for using trusted binaries, according to some implementations. いくつかの実装形態による、信頼バイナリを使用するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for using trusted binaries, according to some implementations. いくつかの実装形態による、ブロックチェーン有効性認証を使用するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for using blockchain validity authentication, according to some implementations. いくつかの実装形態による、ブロックチェーン有効性認証を使用するための例示的なプロセスのフローチャートを提供する。1 provides a flowchart of an example process for using blockchain validity authentication, according to some implementations.

次に、実施形態を参照し、その例は添付の図面において図示される。以下の説明において、本発明の完全な理解を提供するために、多数の具体的な詳細を説明する。しかしながら、本発明は、これらの具体的な詳細を必要とすることなく実施され得ることが当業者に明らかであろう。 Reference will now be made to embodiments, examples of which are illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without the need for these specific details.

本開示のゼロ信頼(ZT)システムは、既知の良好なオペレーティングシステム及びアプリケーションプロセスがメモリ内で実行されることを許可し、他の何かが実行されるのを防止する。いくつかの実装形態によれば、ゼロ信頼システムは、コンピューティングデバイス(エンドポイントと呼ばれることもある)にインストールされた信頼エージェントを含む。信頼エージェントは、メモリ動作を監視し、インターセプトする。信頼エージェントは、アプリケーション、プロセス、及び関数を有効性認証した後に、それらの実行を許可する。無効なアプリケーション、プロセス、及び関数は、(例えば、コンピューティングデバイスのためのセキュリティポリシーに応じて)信頼エージェントによってブロック又は監視される。いくつかの実装形態では、ZTシステムは、既知の良好なバイナリ及び関数のその記憶を有効性認証するためにブロックチェーン識別証明スキームを利用する。ZTシステムは、既知の不当なオペレーティングシステム及びアプリケーションプロセスを取り扱う従来のエンドポイント検出と応答(EDR)ソリューションを補完又は置き換え得る。 The zero trust (ZT) system of the present disclosure allows known good operating systems and application processes to run in memory and prevents anything else from running. According to some implementations, the zero trust system includes a trust agent installed on a computing device (sometimes called an endpoint). The trust agent monitors and intercepts memory operations. The trust agent validates applications, processes, and functions before allowing them to run. Invalid applications, processes, and functions are blocked or monitored by the trust agent (e.g., depending on the security policy for the computing device). In some implementations, the ZT system utilizes a blockchain identity proof scheme to validate its storage of known good binaries and functions. The ZT system may complement or replace traditional endpoint detection and response (EDR) solutions that handle known bad operating systems and application processes.

図1は、いくつかの実装形態による、ネットワークアーキテクチャ100を示す。ネットワークアーキテクチャ100は、ゲートウェイデバイス108を介して通信可能に結合された情報技術(IT)部分102及び運用技術(OT)部分110を含む。IT部分102は、ユーザデバイス104(104-1、104-2、及び104-3)及びハブデバイス106を含む。いくつかの実装形態では、各ユーザデバイス104は、信頼エージェントを含む。いくつかの実装形態では、ハブデバイス106は、信頼ストア又は信頼センタを含む。いくつかの実装形態では、ハブデバイス106は、ユーザデバイス104の信頼バイナリ及び/又は信頼ポリシーを管理するための管理用ソフトウェアを含む。OT部分110は、監査端末118、ユーザ端末112、サーバ114、及び装置116を含む。いくつかの実装形態では、監査端末118、ユーザ端末112、サーバ114、及び装置116はそれぞれ、信頼エージェントを含む。いくつかの実装形態では、監査端末118は、ユーザ端末112、サーバ114、及び装置116の信頼バイナリ及び/又は信頼ポリシーを管理するためのソフトウェアを含む。いくつかの実装形態では、ゲートウェイデバイス108は、IT部分102とOT部分110との間に非武装地帯(DMZ)を提供する。いくつかの実施態様では、ゲートウェイデバイス108は、IT部分102及び/又はOT部分110のための信頼センタ又は信頼ストアを含む。いくつかの実装形態では、ゲートウェイデバイス108は、IT部分102及び/又はOT部分110のためのアプリケーションストアへのネットワークアクセスを提供する。いくつかの実装形態では、ネットワークアーキテクチャ100は、パーデュエンタープライズリファレンスアーキテクチャ(PERA)モデルを実装する。PERAモデルに関して、IT部分102は、レベル4及び5を表し、ゲートウェイデバイス108は、レベル3を表し、OT部分110は、レベル0、1、及び2を表す。 FIG. 1 illustrates a network architecture 100 according to some implementations. The network architecture 100 includes an information technology (IT) portion 102 and an operational technology (OT) portion 110 communicatively coupled via a gateway device 108. The IT portion 102 includes user devices 104 (104-1, 104-2, and 104-3) and a hub device 106. In some implementations, each user device 104 includes a trust agent. In some implementations, the hub device 106 includes a trust store or trust center. In some implementations, the hub device 106 includes management software for managing trust binaries and/or trust policies of the user devices 104. The OT portion 110 includes an audit terminal 118, a user terminal 112, a server 114, and a device 116. In some implementations, the audit terminal 118, the user terminal 112, the server 114, and the device 116 each include a trust agent. In some implementations, the audit terminal 118 includes software for managing trust binaries and/or trust policies of the user terminal 112, the server 114, and the device 116. In some implementations, the gateway device 108 provides a demilitarized zone (DMZ) between the IT portion 102 and the OT portion 110. In some implementations, the gateway device 108 includes a trust center or trust store for the IT portion 102 and/or the OT portion 110. In some implementations, the gateway device 108 provides network access to an application store for the IT portion 102 and/or the OT portion 110. In some implementations, the network architecture 100 implements the Purdue Enterprise Reference Architecture (PERA) model. With respect to the PERA model, the IT portion 102 represents levels 4 and 5, the gateway device 108 represents level 3, and the OT portion 110 represents levels 0, 1, and 2.

図2A~図2Bは、いくつかの実装形態による、例示的な実行可能ファイルを示す。図2Aは、いくつかの実装形態による、プログラム実行可能(PE)ファイル200を示す。PEファイル200は、ヘッダ部分202及びセクション部分204を含む。ヘッダ部分202は、ディスクオペレーティングシステム(DOS)ヘッダ206及びPEヘッダ208を含む。ヘッダ部分202はまた、1つ以上の任意選択のヘッダ210、データディレクトリ212、及びセクションテーブル214を含む。データディレクトリ212は、いくつかの実装形態による、追加的な構造(例えば、インポート、エクスポートなど)へのポインタを含む。セクションテーブル214は、いくつかの実装形態による、ファイルがメモリにロードされる方法を定義する。セクション部分204は、コード216、インポート218、及びデータ220を含む。インポート218は、PEファイル200とオペレーティングシステム(OS)ライブラリとの間のリンクを含む。データ220は、いくつかの実装形態による、コード216によって使用される情報を含む。図2Bは、いくつかの実装形態による、実行可能かつリンク可能フォーマット(ELF)ファイル250を示す。ELFファイル250は、ELFヘッダ252、プログラムヘッダテーブル254、セクション256、及びセクションヘッダテーブル258を含む。 2A-2B show an exemplary executable file according to some implementations. FIG. 2A shows a program executable (PE) file 200 according to some implementations. The PE file 200 includes a header portion 202 and a section portion 204. The header portion 202 includes a disk operating system (DOS) header 206 and a PE header 208. The header portion 202 also includes one or more optional headers 210, a data directory 212, and a section table 214. The data directory 212 includes pointers to additional structures (e.g., imports, exports, etc.) according to some implementations. The section table 214 defines how the file is loaded into memory according to some implementations. The section portion 204 includes code 216, imports 218, and data 220. The imports 218 include links between the PE file 200 and operating system (OS) libraries. The data 220 includes information used by the code 216 according to some implementations. FIG. 2B illustrates an executable and linkable format (ELF) file 250 according to some implementations. The ELF file 250 includes an ELF header 252, a program header table 254, sections 256, and a section header table 258.

図3Aは、いくつかの実装形態による、コンピューティングデバイス300のブロック図である。コンピューティングデバイス300の様々な例は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、及び信頼エージェント324を実行することができるプロセッサを有する他のコンピューティングデバイス(例えば、ITデバイス又はOTデバイス)を含む。コンピューティングデバイス300は、典型的には、メモリ314に記憶されたモジュール、プログラム、及び/又は命令を実行し、それによって処理動作を実行するための1つ以上の処理ユニット/コア(CPU)302と、1つ以上のネットワーク又は他の通信インターフェース304と、メモリ314と、これらの構成要素を相互接続するための1つ以上の通信バス312とを含む。通信バス312は、システム構成要素間の通信を相互接続及び制御する回路を含み得る。 3A is a block diagram of a computing device 300 according to some implementations. Various examples of computing devices 300 include desktop computers, laptop computers, tablet computers, and other computing devices (e.g., IT or OT devices) having a processor capable of executing a trusted agent 324. The computing device 300 typically includes one or more processing units/cores (CPUs) 302 for executing modules, programs, and/or instructions stored in memory 314 and thereby performing processing operations, one or more network or other communication interfaces 304, the memory 314, and one or more communication buses 312 for interconnecting these components. The communication bus 312 may include circuitry for interconnecting and controlling communication between the system components.

コンピューティングデバイス300は、任意選択で、ディスプレイデバイス308と、1つ以上の入力デバイス又は機構310とを含むユーザインターフェース306を含む。いくつかの実装形態では、入力デバイス/機構は、キーボードを含む。いくつかの実装形態では、入力デバイス/機構は、ディスプレイデバイス308上に必要に応じて表示される「ソフト」キーボードを含み、ユーザがディスプレイ308上に現れる「キーを押す」ことを可能にする。いくつかの実装形態では、ディスプレイ308及び入力デバイス/機構310は、タッチスクリーンディスプレイ(タッチ感知ディスプレイとも称される)を備える。 The computing device 300 optionally includes a user interface 306 including a display device 308 and one or more input devices or mechanisms 310. In some implementations, the input device/mechanism includes a keyboard. In some implementations, the input device/mechanism includes a "soft" keyboard that is optionally displayed on the display device 308, allowing a user to "press keys" that appear on the display 308. In some implementations, the display 308 and input device/mechanism 310 comprise a touch screen display (also referred to as a touch sensitive display).

いくつかの実装形態では、メモリ314は、DRAM、SRAM、DDR RAM、又は他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含む。いくつかの実装形態では、メモリ314は、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスなどの不揮発性メモリを含む。いくつかの実装形態では、メモリ314は、CPU302(複数可)から離れて位置する1つ以上の記憶デバイスを含む。メモリ314、又はメモリ314内の不揮発性メモリデバイス(複数可)は、非一時的コンピュータ可読記憶媒体を備える。いくつかの実装形態では、メモリ314、又はメモリ314のコンピュータ可読記憶媒体は、以下のプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する。
●様々な基本システムサービスを取り扱い、ハードウェア依存タスクを実行するための手順を含むオペレーティングシステム316、
●1つ以上の通信ネットワークインターフェース304(有線又は無線)及びインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの1つ以上の通信ネットワークを介して、コンピューティングデバイス300を他のコンピュータ及びデバイスに接続するために使用される通信モジュール318、
●ユーザのための特別なタスク又はタスクのセット(例えば、ワードプロセッサ、メディアプレーヤー、ウェブブラウザ、及び通信プラットフォーム)を実行するアプリケーション322(例えば、リング-3で実行する)、
●実行するコードを有効性認証すること、及びファイルI/O、レジストリI/O、スレッドの開始/停止、画像のロード/アンロードなどのシステムレベルの動作を監視することによって、コンピューティングデバイス300を保護する信頼エージェント324。信頼エージェント324は、以下のうちの1つ以上を含む。
○メモリ内のアプリケーションを監視し、アプリケーションバイナリ及び関数ダイジェストを検証する、カーネルエージェント326(例えば、リング-0で動作するカーネルレベルデバイスドライバ)、
○アクティブデバイスドライバを監視し、対策を適用するドライバエージェント327(例えば、カーネルスレッド)。いくつかの実装形態では、ドライバエージェント327は、ドライバ及びドライバ関数のための信頼バイナリを使用して、ドライバ及びドライバ関数を検証する。
○信頼エージェントの内部通信(例えば、カーネルエージェント326、バイナリモニタ330、及びダッシュボードモジュール332の間の)、並びに信頼エージェント324と信頼ストア338及び/又は信頼センタとの間の通信を取り扱う、通信サービス328(例えば、ユーザモード特権プロセス)。いくつかの実装形態では、通信サービス328は、アラート及びフォレンジックデータを信頼センタに送信し、信頼センタから更新を受信する。いくつかの実装形態では、通信サービス328は、定期的に(例えば、30秒毎、30分毎、又は毎日)ポリシー及び/又はソフトウェア更新をチェックする(例えば、要求する)。
○新規にインストールされたアプリケーション及び変更/更新されたアプリケーションを有効性認証することを含む、静的(例えば、非実行時)ファイル有効性認証を提供する、バイナリモニタ330。いくつかの実装形態では、バイナリモニタ330は、(暫定)信頼バイナリを生成し、信頼センタにバイナリ有効性認証チェックを要求する。
○アラートを提示するためのユーザインターフェースを提供し、ポリシー及び/又は信頼バイナリ情報を閲覧/編集することを可能にする、ダッシュボードモジュール332、並びに
○実行可能ファイルを識別し、信頼エージェント構成要素をインストールし、信頼バイナリを信頼センタ(複数可)に要求するインストーラ334。いくつかの実装形態では、インストーラ334は、信頼センタからのみ取得可能である。いくつかの実装形態では、インストーラ334は、ウェブブラウザを介して信頼センタからダウンロードすることができる。いくつかの実装形態では、インストーラ334は、(例えば、デバイスタイプ、オペレーティングシステム、及び管理者設定に基づいて)信頼エージェント構成要素のインストールをカスタマイズし、かつ
●アプリケーション322及び/又は信頼エージェント324によって使用される1つ以上のデータベース336。図3Bを参照して以下でより詳細に説明される信頼ストア338を含む1つ以上のデータベース336。
In some implementations, memory 314 includes high-speed random access memory such as DRAM, SRAM, DDR RAM, or other random access solid-state memory devices. In some implementations, memory 314 includes non-volatile memory such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. In some implementations, memory 314 includes one or more storage devices located remotely from CPU(s). Memory 314, or the non-volatile memory device(s) within memory 314, comprises a non-transitory computer-readable storage medium. In some implementations, memory 314, or the computer-readable storage medium of memory 314, stores the following programs, modules, and data structures, or a subset thereof:
an operating system 316 that handles various basic system services and contains procedures for performing hardware-dependent tasks;
one or more communications network interfaces 304 (wired or wireless) and a communications module 318 used to connect the computing device 300 to other computers and devices via one or more communications networks, such as the Internet, other wide area networks, local area networks, metropolitan area networks, etc.;
Applications 322 (e.g., running on Ring-3) that perform a particular task or set of tasks for a user (e.g., a word processor, a media player, a web browser, and a communications platform);
A trusted agent 324 that protects the computing device 300 by validating the code that executes and by monitoring system level operations such as file I/O, registry I/O, starting/stopping threads, loading/unloading images, etc. The trusted agent 324 includes one or more of the following:
o A kernel agent 326 (e.g., a kernel-level device driver running in ring-0) that monitors applications in memory and verifies application binaries and function digests;
o A driver agent 327 (e.g., a kernel thread) that monitors active device drivers and applies countermeasures. In some implementations, the driver agent 327 verifies drivers and driver functions using trusted binaries for the drivers and driver functions.
○ A communication service 328 (e.g., a user mode privileged process) that handles the trust agent's internal communication (e.g., between the kernel agent 326, the binary monitor 330, and the dashboard module 332) and communication between the trust agent 324 and the trust store 338 and/or the trust center. In some implementations, the communication service 328 sends alerts and forensic data to the trust center and receives updates from the trust center. In some implementations, the communication service 328 periodically (e.g., every 30 seconds, 30 minutes, or daily) checks for (e.g., requests) policy and/or software updates.
o A binary monitor 330 that provides static (e.g., non-runtime) file validation, including validating newly installed and modified/updated applications. In some implementations, the binary monitor 330 generates (provisionally) trusted binaries and requests binary validation checks from the trust center.
o A dashboard module 332, which provides a user interface for presenting alerts and allowing viewing/editing of policy and/or trust binary information; and o An installer 334, which identifies executable files, installs the trust agent components, and requests the trust binaries from the trust center(s). In some implementations, the installer 334 is obtainable only from the trust center. In some implementations, the installer 334 can be downloaded from the trust center via a web browser. In some implementations, the installer 334 customizes the installation of the trust agent components (e.g., based on device type, operating system, and administrator settings), and ● One or more databases 336 used by the applications 322 and/or the trust agent 324. The one or more databases 336 include a trust store 338, which is described in more detail below with reference to FIG. 3B.

上記で識別された実行可能モジュール、アプリケーション、又は手順のセットのそれぞれは、前述のメモリデバイスのうちの1つ以上に記憶され得、上記で説明された関数を実行するための命令のセットに対応する。上記で識別されたモジュール又はプログラム(すなわち、命令のセット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、したがって、これらのモジュールの様々なサブセットは、様々な実装形態で組み合わされてもよく、又は別様に再配置されてもよい。いくつかの実装形態では、メモリ314は、上記で識別されたモジュール及びデータ構造のサブセットを記憶する(例えば、信頼エージェント324は、ダッシュボードモジュール332を含まない)。更に、メモリ314は、上記で説明されていない追加のモジュール又はデータ構造を記憶し得る(例えば、信頼エージェント324は、ポリシーモジュールを更に含む)。 Each of the above-identified executable modules, applications, or sets of procedures may be stored in one or more of the aforementioned memory devices and correspond to a set of instructions for performing the functions described above. The above-identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise rearranged in various implementations. In some implementations, memory 314 stores a subset of the above-identified modules and data structures (e.g., trust agent 324 does not include dashboard module 332). Additionally, memory 314 may store additional modules or data structures not described above (e.g., trust agent 324 further includes a policy module).

図3Aは、コンピューティングデバイス300を示しているが、図3Aは、本明細書で説明される実装形態の構造概略図としてではなく、むしろ存在し得る様々な特徴の機能的説明としてより意図されている。実際には、当業者によって認識されるように、別個に示される項目は組み合わされてもよく、いくつかの項目は分離されてもよい。 Although FIG. 3A illustrates a computing device 300, FIG. 3A is intended more as a functional description of various features that may be present, rather than as a structural schematic of the implementations described herein. In practice, items shown separately may be combined and some items may be separated, as will be recognized by those skilled in the art.

図3Bは、いくつかの実装形態による、信頼ストア338のブロック図である。いくつかの実装形態では、信頼ストア338は、リレーショナルデータベース(例えば、構造化クエリ言語(SQL)データベース)である。信頼ストア338は、信頼バイナリ340-1、340-2、及び340-nを含む複数の信頼バイナリ340を含む。図3Bの例では、各信頼バイナリは、それぞれの信頼バイナリ名及びそれぞれの複数の関数ダイジェストを含む。例えば、信頼バイナリ340-1は、信頼バイナリ名341を含み、関数ダイジェスト343-1から343-mを含む。いくつかの実装形態では、各信頼バイナリは、コンピューティングデバイス300上の実行可能ファイル(例えば、アプリケーション322)に対応する。例えば、信頼バイナリ340-1は、「m」個の関数を有する第1のアプリケーションに対応し、したがって、信頼バイナリ340-1は、「m」個の関数ダイジェストを有する。いくつかの実装形態では、少なくとも1つの信頼バイナリ340は、デバイスドライバに対応する。例えば、信頼バイナリ340-2は、「p」個のドライバ関数を有する第1のデバイスドライバに対応し、したがって、信頼バイナリ340-2は、「p」個の関数ダイジェストを有する。信頼ストア338は、ブロックリスト342、ブロックチェーン情報344、ポリシー情報346、及び1つ以上のフォレンジックログ348を更に含む。いくつかの実装形態では、ブロックリスト342は、ブロックされた(破損した、悪意のある)ファイル及び/又はアプリケーションのリストを含む。ブロックチェーン情報344は、ジェネシスブロック345及び複数のトランザクションブロック347(例えば、トランザクションブロック347-1、347-2、及び347-p)を含む。いくつかの実装形態では、ブロックチェーン情報344は、信頼ストア338に対する各変更についてそれぞれのトランザクションブロック347を含む(例えば、ポリシー更新、信頼バイナリ追加など)。ブロックチェーン情報344の更なる詳細は、図3Cに関して以下に説明される。 3B is a block diagram of a trust store 338 according to some implementations. In some implementations, the trust store 338 is a relational database (e.g., a Structured Query Language (SQL) database). The trust store 338 includes multiple trusted binaries 340, including trusted binaries 340-1, 340-2, and 340-n. In the example of FIG. 3B, each trusted binary includes a respective trusted binary name and a respective multiple function digests. For example, trusted binary 340-1 includes trusted binary name 341 and includes function digests 343-1 through 343-m. In some implementations, each trusted binary corresponds to an executable file (e.g., application 322) on the computing device 300. For example, trusted binary 340-1 corresponds to a first application having "m" functions, and therefore trusted binary 340-1 has "m" function digests. In some implementations, at least one trusted binary 340 corresponds to a device driver. For example, trusted binary 340-2 corresponds to a first device driver having "p" driver functions, and therefore trusted binary 340-2 has "p" function digests. Trust store 338 further includes block list 342, blockchain information 344, policy information 346, and one or more forensic logs 348. In some implementations, block list 342 includes a list of blocked (corrupted, malicious) files and/or applications. Blockchain information 344 includes genesis block 345 and multiple transaction blocks 347 (e.g., transaction blocks 347-1, 347-2, and 347-p). In some implementations, blockchain information 344 includes a respective transaction block 347 for each change to trust store 338 (e.g., policy update, trusted binary addition, etc.). Further details of blockchain information 344 are described below with respect to FIG. 3C.

いくつかの実装形態では、ポリシー情報346は、信頼エージェント324のどの特徴がアクティブであるかに関する情報、例えば、どの対策を(及びどのように)適用するか、どの通知を(及びどのように)提示するか、どの是正アクションを信頼できないバイナリに適用するかなどについてのポリシーを含む。いくつかの実装形態では、ポリシー情報346は、信頼ストア338のためのクライアント証明書及び暗号化鍵を含む。いくつかの実装形態では、対応する信頼バイナリのないプログラムは、信頼できないとみなされる。いくつかの実装形態では、ポリシー情報346は、信頼できないアプリケーション、スクリプト、プログラム、及び関数に応答するためのポリシーを含む。いくつかの実装形態では、ポリシーは、信頼できない挙動の各インスタンスをブロックするか、通知するか、又は無視するかを含む。いくつかの実装形態では、ポリシー情報346は、(例えば、プログラム名又はヘッダによって識別される)特別なプログラム又はアプリケーションのための特定の設定(例えば、例外)を含む。 In some implementations, policy information 346 includes information about which features of trust agent 324 are active, such as policies about which countermeasures (and how) to apply, which notifications (and how) to present, which corrective actions to apply to untrusted binaries, etc. In some implementations, policy information 346 includes client certificates and encryption keys for trust store 338. In some implementations, programs without a corresponding trusted binary are considered untrusted. In some implementations, policy information 346 includes policies for responding to untrusted applications, scripts, programs, and functions. In some implementations, the policies include whether to block, notify, or ignore each instance of untrusted behavior. In some implementations, policy information 346 includes specific settings (e.g., exceptions) for special programs or applications (e.g., identified by program name or header).

いくつかの実装形態では、フォレンジックログ348は、信頼できない実行可能ファイル及び/又は関数の実行など、信頼エージェント324によって検出された脅威に応答して収集された情報を含む。いくつかの実装形態では、フォレンジックログ348に記憶された情報は、信頼エージェント324のためのアクティブなセキュリティポリシーに基づいている。いくつかの実装形態では、フォレンジックログ348は、読み取りバッファの内容、注入されたメモリ、信頼できない関数、信頼できないスクリプト、信頼できないシェルコード、修正されたコードなどのうちの1つ以上に関する情報を含む。いくつかの実装形態では、検出された信頼できない実行に関するフォレンジック情報は、実行のタイプに依存する。例えば、未知の読み取りバッファリングのインスタンスに関するフォレンジック情報は、読み取りバッファの内容のキャプチャを含み得る。別の例として、反射性注入のインスタンスに関するフォレンジック情報は、注入情報をキャプチャし得る。いくつかの実装形態では、フォレンジックログ348は、コンピューティングデバイスに関する情報(例えば、オペレーティングシステム、バージョン、パッチレベル、ハードウェア、及びメモリに関する情報)を含む。 In some implementations, the forensic log 348 includes information collected in response to a threat detected by the trust agent 324, such as the execution of an untrusted executable file and/or function. In some implementations, the information stored in the forensic log 348 is based on an active security policy for the trust agent 324. In some implementations, the forensic log 348 includes information regarding one or more of the following: read buffer contents, injected memory, untrusted functions, untrusted scripts, untrusted shell code, modified code, and the like. In some implementations, the forensic information regarding a detected untrusted execution depends on the type of execution. For example, forensic information regarding an instance of unknown read buffering may include a capture of the read buffer contents. As another example, forensic information regarding an instance of reflective injection may capture the injection information. In some implementations, the forensic log 348 includes information regarding the computing device (e.g., information regarding the operating system, version, patch level, hardware, and memory).

図3Cは、いくつかの実装形態による、ブロックチェーン350のブロック図である。いくつかの実装形態では、ブロックチェーン情報344は、ブロックチェーン350を含む。ブロックチェーン350は、ジェネシスブロック345、トランザクションブロック347-1、及びトランザクションブロック347-2を含む。ジェネシスブロック345は、前のブロックダイジェスト352(例えば、空又はブランクのダイジェスト)、信頼バイナリダイジェスト353、作成タイムスタンプ354、ブロックタイプ355、ブロックダイジェスト356、署名証明書357、及びデジタル署名358を含む。いくつかの実装形態では、信頼バイナリダイジェスト353は、信頼ストア338内の各信頼バイナリ340についてのダイジェストを含む。いくつかの実装形態では、信頼バイナリダイジェスト353は、安全なハッシュアルゴリズム(SHA)ダイジェスト(例えば、SHA-256ダイジェスト)である。いくつかの実装形態では、ジェネシスブロック345のブロックタイプ355は、信頼バイナリブロックタイプである(例えば、ジェネシスブロックが信頼バイナリダイジェスト353を含むため)。いくつかの実装形態では、ブロックダイジェスト356は、SHAダイジェストである。いくつかの実装形態では、ブロックダイジェスト356は、SHAハッシュ関数を複数回適用することによって生成される(例えば、SHA-256ハッシュ関数を2回適用する)。いくつかの実装形態では、署名証明書357は、ジェネシスブロック345のブロッククリエータに関する情報(例えば、信頼センタ証明書)を含む。いくつかの実装形態では、デジタル署名358は、信頼ストアの暗号化鍵に対応する。 3C is a block diagram of a blockchain 350 according to some implementations. In some implementations, the blockchain information 344 includes a blockchain 350. The blockchain 350 includes a genesis block 345, a transaction block 347-1, and a transaction block 347-2. The genesis block 345 includes a previous block digest 352 (e.g., an empty or blank digest), a trust binary digest 353, a creation timestamp 354, a block type 355, a block digest 356, a signing certificate 357, and a digital signature 358. In some implementations, the trust binary digest 353 includes a digest for each trust binary 340 in the trust store 338. In some implementations, the trust binary digest 353 is a secure hash algorithm (SHA) digest (e.g., a SHA-256 digest). In some implementations, the block type 355 of the genesis block 345 is a trusted binary block type (e.g., because the genesis block includes a trusted binary digest 353). In some implementations, the block digest 356 is a SHA digest. In some implementations, the block digest 356 is generated by applying a SHA hash function multiple times (e.g., applying a SHA-256 hash function twice). In some implementations, the signing certificate 357 includes information about the block creator of the genesis block 345 (e.g., a trust center certificate). In some implementations, the digital signature 358 corresponds to a cryptographic key in a trust store.

いくつかの実装形態では、トランザクションブロック347-1は、信頼ストア338に対する第1の変更を表す。トランザクションブロック347-1は、前のブロックダイジェスト360(ジェネシスブロック345のブロックダイジェスト356に対応する)、第1の変更についてのトランザクションダイジェスト364、作成タイムスタンプ366、ブロックタイプ368、ブロックダイジェスト370、署名証明書372、及びデジタル署名374を含む。いくつかの実装形態では、第1の変更は、信頼バイナリ変更(例えば、新規の信頼バイナリの追加)であり、ブロックタイプ368は、信頼バイナリブロックタイプである。いくつかの実装形態では、第1の変更は、ポリシー更新であり、ブロックタイプ368は、ポリシーブロックタイプである。いくつかの実装形態では、署名証明書372は、コンピューティングデバイス300のためのクライアント証明書である。いくつかの実装形態では、デジタル署名374は、クライアントデバイスの暗号化鍵に対応する。 In some implementations, transaction block 347-1 represents a first change to trust store 338. Transaction block 347-1 includes a previous block digest 360 (corresponding to block digest 356 of genesis block 345), a transaction digest 364 for the first change, a creation timestamp 366, a block type 368, a block digest 370, a signing certificate 372, and a digital signature 374. In some implementations, the first change is a trust binary change (e.g., adding a new trust binary), and block type 368 is a trust binary block type. In some implementations, the first change is a policy update, and block type 368 is a policy block type. In some implementations, signing certificate 372 is a client certificate for computing device 300. In some implementations, digital signature 374 corresponds to an encryption key for the client device.

いくつかの実装形態では、トランザクションブロック347-2は、信頼ストア338に対する第2の変更を表す。トランザクションブロック347-2は、前のブロックダイジェスト376(トランザクションブロック347-1のダイジェスト370に対応する)、第2の変更についてのトランザクションダイジェスト378、作成タイムスタンプ380、ブロックタイプ382、ブロックダイジェスト384、署名証明書386、及びデジタル署名388を含む。 In some implementations, transaction block 347-2 represents a second change to trust store 338. Transaction block 347-2 includes a previous block digest 376 (corresponding to digest 370 of transaction block 347-1), a transaction digest 378 for the second change, a creation timestamp 380, a block type 382, a block digest 384, a signing certificate 386, and a digital signature 388.

いくつかの実装形態では、信頼エージェント324は、信頼ストア338を有効性認証するためにブロックチェーン情報344を利用する。いくつかの実装形態では、ブロックチェーン350は、識別証明動作を使用して有効性認証される。トランザクションブロック347-1は、ジェネシスブロック345のブロックダイジェスト356と一致すべき前のブロックダイジェスト360を含み、トランザクションブロック347-2は、トランザクションブロック347-1のブロックダイジェスト370と一致すべき前のブロックダイジェスト376を含む。このようにして、ブロックチェーン350の有効性は、各ブロックのブロックダイジェストをチェーン内の次のブロックの前のブロックダイジェストと比較することによってチェックすることができる。 In some implementations, the trust agent 324 utilizes the blockchain information 344 to validate the trust store 338. In some implementations, the blockchain 350 is validated using a proof-of-identity operation. Transaction block 347-1 includes a previous block digest 360 that should match the block digest 356 of the genesis block 345, and transaction block 347-2 includes a previous block digest 376 that should match the block digest 370 of transaction block 347-1. In this way, the validity of the blockchain 350 can be checked by comparing the block digest of each block with the previous block digest of the next block in the chain.

いくつかの状況では、ブロックチェーン350は、ネットワーク接続を必要とせずに(例えば、エアギャップシステム上で動作する)、信頼ストア338の有効性認証を可能にするため、従来のサイバーセキュリティシステムよりも有利である。いくつかの状況及び実装形態では、信頼ストアの有効性認証のためにブロックチェーン350を使用することで、有効性認証手順が分散され、安全であることが可能となる。いくつかの実装形態では、信頼ストア338及びブロックチェーン350は、展開時に(例えば、新規のコンピューティングシステムにインストールされたときに)検証され、かつ信頼エージェント324の各後続のリロードで検証される。 In some situations, blockchain 350 has advantages over traditional cybersecurity systems because it allows for validation of trust store 338 without requiring a network connection (e.g., operating on an air-gapped system). In some situations and implementations, using blockchain 350 for trust store validation allows the validation procedure to be distributed and secure. In some implementations, trust store 338 and blockchain 350 are verified at deployment time (e.g., when installed on a new computing system) and with each subsequent reload of trust agent 324.

図4A~図4Bは、いくつかの実装形態による、例示的な信頼バイナリユースケースを示す。図4Aは、信頼エージェント324、信頼ストア338、及び信頼センタ402の間の例示的な通信シーケンスを示す。図4Aの例では、信頼エージェント324は、デバイスメモリ(例えば、コンピューティングデバイス300のメモリ314)を監視する(404)。信頼エージェント324は、メモリ内で立ち上げられたバイナリファイル(例えば、アプリケーション322に対応するバイナリファイル)を検出する(406)。これに応答して、信頼エージェント324は、バイナリファイルのための信頼バイナリを信頼ストア338に要求する(408)。信頼ストア338は、対応する信頼バイナリについて検索される(例えば、信頼エージェント324の構成要素によって検索される)(410)。図4Aの例では、対応する信頼バイナリは、信頼ストア338内に見出されない。信頼エージェント324は、対応する信頼バイナリの欠如を通知される(412)。したがって、信頼エージェント324は、対応する信頼バイナリを信頼センタ402に要求する(414)。信頼センタ402は、対応する信頼バイナリを検索する(416)。図4Aの例では、対応する信頼バイナリは、信頼センタ402内に見出されない。信頼センタ402は、対応する信頼バイナリの欠如についての通知を信頼エージェント324に送信する(418)。これに応答して、信頼エージェント324は、(例えば、アクティブなポリシーに従って)対策を適用する(414)。図4Aの例では、信頼エージェント324は、暫定信頼バイナリ(ローカル信頼バイナリとも呼ばれることがある)を生成する(420)。暫定信頼バイナリは、信頼ストア338に記憶される(422)。暫定信頼バイナリに対応するブロックが作成され、ブロックチェーン(例えば、ブロックチェーン350)に追加される(424)。信頼エージェント324は、検証のためにバイナリファイルを信頼センタ402に送信する(426)。信頼センタ402は、バイナリファイルを分析する(428)。図4Aの例では、バイナリファイルは、信頼センタ402によって承認され(430)、信頼エージェント324に、通知される(431)。暫定信頼バイナリは、非暫定(標準的)信頼バイナリとして、信頼ストア338に記憶される(432)。暫定信頼バイナリを非暫定信頼バイナリに変換するために、ブロックがブロックチェーンに追加される(434)。 4A-4B illustrate an exemplary trusted binary use case, according to some implementations. FIG. 4A illustrates an exemplary communication sequence between trust agent 324, trust store 338, and trust center 402. In the example of FIG. 4A, trust agent 324 monitors device memory (e.g., memory 314 of computing device 300) (404). Trust agent 324 detects a binary file (e.g., a binary file corresponding to application 322) launched in memory (406). In response, trust agent 324 requests a trusted binary for the binary file from trust store 338 (408). Trust store 338 is searched (e.g., by components of trust agent 324) for a corresponding trusted binary (410). In the example of FIG. 4A, a corresponding trusted binary is not found in trust store 338. Trust agent 324 is notified of the lack of a corresponding trusted binary (412). Thus, the trust agent 324 requests (414) the corresponding trusted binary from the trust center 402. The trust center 402 searches (416) for the corresponding trusted binary. In the example of FIG. 4A, the corresponding trusted binary is not found in the trust center 402. The trust center 402 sends (418) a notification to the trust agent 324 about the lack of a corresponding trusted binary. In response, the trust agent 324 applies countermeasures (414) (e.g., according to an active policy). In the example of FIG. 4A, the trust agent 324 generates (420) an interim trusted binary (sometimes also referred to as a local trusted binary). The interim trusted binary is stored (422) in the trust store 338. A block corresponding to the interim trusted binary is created and added (424) to the blockchain (e.g., the blockchain 350). The trust agent 324 sends (426) the binary file to the trust center 402 for validation. The trust center 402 analyzes (428) the binary file. In the example of FIG. 4A, the binary file is approved (430) by the trust center 402 and the trust agent 324 is notified (431). The provisionally trusted binary is stored (432) in the trust store 338 as a non-provisionally (standard) trusted binary. A block is added to the blockchain to convert the provisionally trusted binary to a non-provisionally trusted binary (434).

図4Bは、信頼エージェント324、信頼ストア338、及び信頼センタ402の間の別の例示的な通信シーケンスを示す。図4Bの例では、信頼センタ402は、信頼ポリシーを生成する(450)。いくつかの実装形態では、信頼ポリシーは、信頼エージェントが信頼できないバイナリ及び関数にどのように応答するかを指示する。いくつかの実装形態では、信頼ポリシーは、どの対策がコンピューティングデバイス上でアクティブであるべきかを指示する。信頼ポリシーは、(例えば、通信サービス328を介して)信頼ストア338に送信される(452)。信頼ポリシーは、信頼ストア338に記憶される(454)。信頼エージェント324は、(例えば、起動手順の一部として)信頼ポリシーをロードする(456)。信頼エージェント324は、デバイスメモリ(例えば、コンピューティングデバイス300のメモリ314)を監視する(458)。信頼エージェント324は、関数呼び出し(例えば、アプリケーション322によって実行される関数呼び出し)を検出する(460)。関数呼び出しに応答して、信頼エージェントは、関数を、信頼バイナリ内の関数ダイジェスト(例えば、アプリケーションのための信頼バイナリ内の対応する関数ダイジェスト)と比較する(462)。図4Bの例では、比較は、関数が信頼できない(例えば、修正されている)ことを示す。信頼ポリシーに従い、信頼エージェント324は、関数が実行されるのをブロックし(464)、関数及び関数呼び出しに関連する情報を有するフォレンジックログを生成する(466)。信頼エージェント324は、フォレンジックログを分析のために信頼センタ402に送信する(468)。信頼センタ402は、フォレンジックログを分析し(470)、脅威レポートを生成する(72)。信頼センタ402は、(例えば、脅威レポートの少なくとも一部を有する)通知を信頼エージェント324に送信する(474)。信頼エージェント324は、デバイスのユーザに通知を表示する(476)(例えば、ダッシュボードモジュール332を使用して通知を表示する)。 4B illustrates another exemplary communication sequence between the trust agent 324, the trust store 338, and the trust center 402. In the example of FIG. 4B, the trust center 402 generates a trust policy (450). In some implementations, the trust policy dictates how the trust agent responds to untrusted binaries and functions. In some implementations, the trust policy dictates which countermeasures should be active on the computing device. The trust policy is sent (452) to the trust store 338 (e.g., via the communication service 328). The trust policy is stored in the trust store 338 (454). The trust agent 324 loads the trust policy (456) (e.g., as part of a startup procedure). The trust agent 324 monitors (458) the device memory (e.g., the memory 314 of the computing device 300). The trust agent 324 detects (460) a function call (e.g., a function call executed by the application 322). In response to the function call, the trust agent compares the function to the function digest in the trusted binary (e.g., the corresponding function digest in the trusted binary for the application) (462). In the example of FIG. 4B, the comparison indicates that the function is untrusted (e.g., modified). In accordance with the trust policy, the trust agent 324 blocks the function from being executed (464) and generates a forensic log having information related to the function and the function call (466). The trust agent 324 sends the forensic log to the trust center 402 for analysis (468). The trust center 402 analyzes the forensic log (470) and generates a threat report (72). The trust center 402 sends a notification (e.g., having at least a portion of the threat report) to the trust agent 324 (474). The trust agent 324 displays the notification (476) to the user of the device (e.g., using the dashboard module 332 to display the notification).

図5は、いくつかの実装形態による、ネットワークアーキテクチャ500を示す。ネットワークアーキテクチャ500は、デバイスグループ502-1及びデバイスグループ502-2を含む。図5の例では、デバイスグループ502-1は、3つのデバイス(例えば、2つのユーザ端末112及び1つの監査端末118)を含み、デバイスグループ502-2は、2つのデバイス(例えば、2つのユーザデバイス104)を含む。グループ502-1は、関連付けられたセキュリティポリシー504-1を有し、グループ502-2は、関連付けられたセキュリティポリシー504-2を有する。したがって、この例では、同じセキュリティポリシー(例えば、セキュリティポリシー504-1)が、デバイスグループ502-1内の各デバイスに適用される。ネットワークアーキテクチャ500は、信頼センタ510、信頼ポイント506-1及び506-2、並びに信頼ストア508-1から508-5を更に含む。いくつかの実装形態では、信頼センタ510は、信頼センタ402のインスタンスである。信頼ポイント506は、いくつかの実装形態による信頼ストアの論理グループ分けを表す。いくつかの実装形態では、信頼ポイント506は、接続された信頼ストア508の検索リスト(インデックス)を含む。例えば、信頼ポイント506-1は、信頼ストア508-1及び508-2の検索リストを含む。図5に示されるように、それぞれのデバイスグループ内のデバイスは、共有信頼ストア508を利用する。具体的には、デバイスグループ502-1及びデバイスグループ502-2の各々は、信頼ポイント506を介して信頼ストア508に結合される。いくつかの実装形態では、信頼ストア508は、デバイスグループ502から離れて(例えば、別個のネットワークデバイス、ネットワークサーバ、及び/又は別個のネットワーク上に)記憶される。いくつかの実装形態では、各信頼ストア508は、特別のオペレーティングシステム、デバイスタイプ、又はエンティティに対応する(例えば、そのオペレーティングシステム、デバイスタイプ、又はエンティティに関連する信頼バイナリのみを含む)。いくつかの実装形態では、信頼ストア508は、そこに記憶された信頼バイナリに関するメタデータ(例えば、メタデータ一時的ベンダー、バージョン、日付など)を含む。 5 illustrates a network architecture 500 according to some implementations. The network architecture 500 includes a device group 502-1 and a device group 502-2. In the example of FIG. 5, the device group 502-1 includes three devices (e.g., two user terminals 112 and one audit terminal 118), and the device group 502-2 includes two devices (e.g., two user devices 104). The group 502-1 has an associated security policy 504-1, and the group 502-2 has an associated security policy 504-2. Thus, in this example, the same security policy (e.g., security policy 504-1) is applied to each device in the device group 502-1. The network architecture 500 further includes a trust center 510, trust points 506-1 and 506-2, and trust stores 508-1 to 508-5. In some implementations, the trust center 510 is an instance of the trust center 402. The trust points 506 represent a logical grouping of trust stores according to some implementations. In some implementations, the trust points 506 include a search list (index) of the connected trust stores 508. For example, the trust point 506-1 includes a search list of the trust stores 508-1 and 508-2. As shown in FIG. 5, the devices in each device group utilize a shared trust store 508. Specifically, each of the device groups 502-1 and 502-2 is coupled to the trust store 508 via the trust point 506. In some implementations, the trust stores 508 are stored remotely from the device groups 502 (e.g., on a separate network device, network server, and/or separate network). In some implementations, each trust store 508 corresponds to a particular operating system, device type, or entity (e.g., includes only trusted binaries associated with that operating system, device type, or entity). In some implementations, the trust stores 508 include metadata about the trusted binaries stored therein (e.g., metadata temporary vendor, version, date, etc.).

いくつかの実装形態では、セキュリティポリシー504はそれぞれ、ポリシーグループを表す。いくつかの実装形態では、ポリシーグループで指定されていないポリシー設定は、デバイスグループ502に適用されない。いくつかの実装形態では、各セキュリティポリシー504は、各対策のポリシー設定(例えば、実施、通知、又はオフ設定)を含む。いくつかの実装形態では、ポリシー設定に含まれない対策は、デフォルト値に設定される(例えば、オフに設定される)。いくつかの実装形態では、セキュリティポリシー504は、1つ以上の名前付き例外(例えば、特定のアプリケーションについての異なる設定)を含む。いくつかの実装形態では、セキュリティポリシー504は、デバイス上のダッシュボードモジュール332の使用を有効化又は無効化するためのダッシュボード設定を含む。いくつかの実装形態では、セキュリティポリシー504は、1つ以上のブラックリスト(例えば、実行されるのを防止するアプリケーションを指定する)を含む。いくつかの実装形態では、セキュリティポリシー504は、1つ以上のアプリケーションに対する制限を含む(例えば、1つ以上のアプリケーションがデバイス又はデバイスグループ502上で実行されるのを防止するために)。いくつかの実装形態では、セキュリティポリシー504は、1つ以上のブラックリストIPアドレスのリスト及び/又は1つ以上の制限されたIPアドレスのリストを含む。いくつかの実装形態では、セキュリティポリシー504は、アプリケーションを新規のバージョンに更新することを許可するかどうか、及び更新されたアプリケーションのためのローカル信頼バイナリを生成するかどうかに関するアプリケーション更新設定を含む。いくつかの実装形態では、セキュリティポリシー504は、新規のアプリケーションをインストールすることを許可するかどうか、及び新規のアプリケーションのためのローカル信頼バイナリを生成するかどうかに関するアプリケーションインストール設定を含む。いくつかの実装形態では、セキュリティポリシー504は、(例えば、デバイスタイプ及び/又はオペレーティングシステムに基づく)デバイスの構成設定を含む。 In some implementations, each security policy 504 represents a policy group. In some implementations, policy settings not specified in the policy group do not apply to the device group 502. In some implementations, each security policy 504 includes a policy setting for each measure (e.g., enforce, notify, or off setting). In some implementations, measures not included in a policy setting are set to a default value (e.g., off). In some implementations, the security policy 504 includes one or more named exceptions (e.g., different settings for a particular application). In some implementations, the security policy 504 includes a dashboard setting to enable or disable use of the dashboard module 332 on the device. In some implementations, the security policy 504 includes one or more blacklists (e.g., specifying applications to prevent from running). In some implementations, the security policy 504 includes restrictions on one or more applications (e.g., to prevent one or more applications from running on the device or device group 502). In some implementations, security policy 504 includes one or more lists of blacklist IP addresses and/or one or more lists of restricted IP addresses. In some implementations, security policy 504 includes application update settings for whether to allow applications to be updated to new versions and whether to generate local trusted binaries for updated applications. In some implementations, security policy 504 includes application installation settings for whether to allow new applications to be installed and whether to generate local trusted binaries for new applications. In some implementations, security policy 504 includes device configuration settings (e.g., based on device type and/or operating system).

いくつかの実装形態では、信頼センタ510は、ポリシーマネージャ、アラートマネージャ、信頼データベース、信頼マネージャ、及びダッシュボードマネージャのうちの1つ以上を含む。いくつかの実装形態では、信頼センタ510は、1つ以上の他の信頼センタと通信している。いくつかの実装形態では、信頼センタ510は、その信頼ストアからの情報を他の信頼センタと共有する(例えば、展開を加速し、グローバルコンプライアンスを提供するために)。いくつかの実装形態では、信頼センタは、ウェブベースのダッシュボードを含む。いくつかの実装形態では、ダッシュボードは、(例えば、多要素認証を使用する)制御されたアクセスダッシュボードである。いくつかの実装形態では、ダッシュボードは、デバイスグループ、セキュリティポリシー、信頼バイナリ、信頼ストア、及び信頼ポイントのうちの1つ以上を管理するためのインターフェースを提供する。いくつかの実装形態では、ダッシュボードは、エンドポイント(例えば、信頼エージェントを有するコンピューティングデバイス)のインベントリのためのインターフェースを提供する。いくつかの実装形態では、ダッシュボードは、通知(アラート)、ホワイトリスト、リスク評価、認証管理、及び通信構成(例えば、ピアツーピアネットワーキング)のうちの1つ以上の表示及び管理のためのインターフェースを提供する。いくつかの実装形態では、ポリシーマネージャは、ポリシーグループ(例えば、対応するデバイスグループ502に添付されるように)及び個々のポリシー設定を設定する。 In some implementations, the trust center 510 includes one or more of a policy manager, an alert manager, a trust database, a trust manager, and a dashboard manager. In some implementations, the trust center 510 is in communication with one or more other trust centers. In some implementations, the trust center 510 shares information from its trust store with other trust centers (e.g., to accelerate deployment and provide global compliance). In some implementations, the trust center includes a web-based dashboard. In some implementations, the dashboard is a controlled access dashboard (e.g., using multi-factor authentication). In some implementations, the dashboard provides an interface for managing one or more of device groups, security policies, trust binaries, trust stores, and trust points. In some implementations, the dashboard provides an interface for an inventory of endpoints (e.g., computing devices with trust agents). In some implementations, the dashboard provides an interface for viewing and managing one or more of notifications (alerts), whitelists, risk assessments, authentication management, and communication configurations (e.g., peer-to-peer networking). In some implementations, the policy manager configures policy groups (e.g., to be attached to corresponding device groups 502) and individual policy settings.

いくつかの実装形態では、信頼センタ510は、エンドポイントデバイス(例えば、デバイスグループ502内のデバイス)に対してポリシー及び更新を提供する。いくつかの実装形態では、信頼センタ510は、デバイスグループ502から受信したアラート及びフォレンジックデータを記録する。いくつかの実装形態では、信頼センタ510は、アプリケーション及びプログラムの有効性認証を提供し、対応する信頼バイナリを作成する(例えば、信頼ストア508に配布されるように)。いくつかの実装形態では、信頼センタ510は、信頼バイナリの組織管理を提供する(例えば、どの信頼ストア508がどの信頼バイナリを受信及び記憶するかを決定する)。いくつかの実装形態では、信頼センタ510は、ネットワークゲートウェイ又はサーバシステムで動作する。いくつかの実装形態では、信頼センタ510は、サーバシステム又はゲートウェイデバイス上の仮想マシンで動作する。 In some implementations, the trust center 510 provides policies and updates to the endpoint devices (e.g., devices in the device group 502). In some implementations, the trust center 510 records alerts and forensic data received from the device group 502. In some implementations, the trust center 510 provides validity authentication of applications and programs and creates corresponding trusted binaries (e.g., to be distributed to the trust stores 508). In some implementations, the trust center 510 provides organizational management of trusted binaries (e.g., determining which trust stores 508 receive and store which trusted binaries). In some implementations, the trust center 510 operates on a network gateway or server system. In some implementations, the trust center 510 operates on a virtual machine on a server system or gateway device.

いくつかの実装形態では、信頼センタ510は、以下のうちの1つ以上を決定することによって、信頼バイナリを有効性認証する。(i)アプリケーションが製造業者から直接取得されたかどうか、(ii)アプリケーションが署名されているかどうか、署名が有効であるかどうか、署名証明書が有効であるかどうか、及び信頼のチェーンが有効であるかどうか、(iii)アプリケーションのダイジェストがウイルススキャナ及び/又はブラックリストチェッカーによってクリアされているかどうか、(iv)アプリケーション(又はアプリケーションの更新)が信頼できるダウンロードサイトから取得されたかどうか、(v)サイト管理者がアプリケーションを使用に関して承認したかどうか、及び(vi)ユーザがアプリケーションをコンピューティングシステムでのローカルな使用に関して承認したかどうか。 In some implementations, the trust center 510 validates the trusted binary by determining one or more of the following: (i) whether the application was obtained directly from the manufacturer; (ii) whether the application is signed, whether the signature is valid, whether the signing certificate is valid, and whether the chain of trust is valid; (iii) whether the application's digest has been cleared by a virus scanner and/or blacklist checker; (iv) whether the application (or an update to the application) was obtained from a trusted download site; (v) whether a site administrator has approved the application for use; and (vi) whether the user has approved the application for local use on the computing system.

いくつかの実装形態では、信頼センタ510は、1つ以上の信頼ストア及び/又は信頼ポイントの管理者関数を提供する。いくつかの実装形態では、管理者関数は、信頼ストア又は信頼ポイントを作成、複製、又は削除する関数を含む。いくつかの実装形態では、管理者関数は、デバイスとシステムとの間で信頼ストア、信頼ポイント、及び/又は信頼バイナリを移動する関数を含む。 In some implementations, the trust center 510 provides administrator functions for one or more trust stores and/or trust points. In some implementations, the administrator functions include functions to create, duplicate, or delete trust stores or trust points. In some implementations, the administrator functions include functions to move trust stores, trust points, and/or trust binaries between devices and the system.

図6A~図6Bは、いくつかの実装形態による、信頼バイナリを作成するための方法600のフローチャートを提供する。方法600は、1つ以上のプロセッサ及びメモリを有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。いくつかの実装形態では、メモリは、1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムを記憶する。 FIGS. 6A-6B provide a flowchart of a method 600 for creating a trusted binary, according to some implementations. The method 600 is performed on a computing system (e.g., computing device 300) having one or more processors and memory. In some implementations, the memory stores one or more programs configured for execution by the one or more processors.

コンピューティングシステムは、(例えば、プログラムのための)実行可能コードを取得する(602)。いくつかの実装形態では、コンピューティングシステムで実行される信頼エージェントは、実行可能コードを取得する。いくつかの実装形態では、実行可能コードは、プログラムのインストールプロセス中に取得される。いくつかの実装形態では、実行可能コードは、プログラムのダウンロードプロセス中に取得される。いくつかの実装形態では、実行可能コードは、コンピューティングシステムでの静的(例えば、非実行)アプリケーションのスキャンの一部として取得される(例えば、バイナリモニタ330によって実行される)。いくつかの実装形態では、コンピューティングシステムは、デバイスドライバの実行可能コードを取得する。 The computing system obtains executable code (e.g., for a program) (602). In some implementations, a trusted agent running on the computing system obtains the executable code. In some implementations, the executable code is obtained during an installation process for the program. In some implementations, the executable code is obtained during a download process for the program. In some implementations, the executable code is obtained as part of a scan of static (e.g., non-executable) applications on the computing system (e.g., performed by binary monitor 330). In some implementations, the computing system obtains executable code for a device driver.

いくつかの実装形態では、実行可能コードは、プログラム実行可能ファイル(例えば、図2Aに示されるように)、又は実行可能若しくはリンク可能なフォーマットファイル(例えば、図2Bに示されるように)のうちの1つである(604)。いくつかの実装形態では、実行可能コードは、特別なプログラミング言語(例えば、.netファイル、ジャバファイル、パイソンファイル、又はビジュアルベーシックファイル)のファイルである。 In some implementations, the executable code is one of a program executable file (e.g., as shown in FIG. 2A) or an executable or linkable format file (e.g., as shown in FIG. 2B) (604). In some implementations, the executable code is a file in a special programming language (e.g., a .net file, a Java file, a Python file, or a Visual Basic file).

コンピューティングシステムは、実行可能コードから複数の実行可能関数を識別する(606)。例えば、PEファイルの全ての関数を識別するために、コード216がスキャンされる。別の例として、ELFファイルの全ての関数を識別するために、セクション256がスキャンされる。いくつかの実装形態では、複数の実行可能関数を識別することは、共有ライブラリ内の関数を識別することを含む(例えば、インポート218から)。 The computing system identifies (606) executable functions from the executable code. For example, the code 216 is scanned to identify all functions in a PE file. As another example, the section 256 is scanned to identify all functions in an ELF file. In some implementations, identifying the executable functions includes identifying functions in a shared library (e.g., from imports 218).

コンピューティングシステムは、実行可能関数の1つ以上の静的成分に基づいて、複数の実行可能関数の各実行可能関数について、実行可能関数のための関数ダイジェストを生成する(608)。いくつかの実装形態では、各関数ダイジェストは、ハッシュ関数を実行可能関数に適用することによって生成される(例えば、SHA-256などの安全なハッシュ関数)。 The computing system generates (608), for each executable function of the plurality of executable functions, a function digest for the executable function based on one or more static components of the executable function. In some implementations, each function digest is generated by applying a hash function to the executable function (e.g., a secure hash function such as SHA-256).

いくつかの実装形態では、実行可能関数の1つ以上の静的成分は、1つ以上の命令及び1つ以上のレジスタを含む(614)。いくつかの実装形態では、実行可能関数の1つ以上の静的成分は、1つ以上の動的アドレスフィールドを除外する(616)。いくつかの実装形態では、1つ以上の静的成分は、関数の全ての非変化(例えば、非動的)成分を含む。 In some implementations, the one or more static components of the executable function include one or more instructions and one or more registers (614). In some implementations, the one or more static components of the executable function exclude one or more dynamic address fields (616). In some implementations, the one or more static components include all non-changing (e.g., non-dynamic) components of the function.

いくつかの実装形態では、複数の実行可能関数の各実行可能関数についてのそれぞれの関数ダイジェストは、安全なハッシュアルゴリズムを使用して生成される(618)。いくつかの実装形態では、各実行可能関数についてのそれぞれの関数ダイジェストは、暗号化ハッシュ関数を使用して生成される。いくつかの実装形態では、各実行可能関数についてのそれぞれの関数ダイジェストは、2つ以上の暗号化ハッシュ関数を実行可能関数に適用することによって生成される。いくつかの実装形態では、各関数ダイジェストは、対応する関数の長さの指標を含む。いくつかの実装形態では、各関数ダイジェストは、対応する関数の開始アドレス又は終了アドレスの指標を含む。 In some implementations, a respective function digest for each executable function of the plurality of executable functions is generated (618) using a secure hash algorithm. In some implementations, a respective function digest for each executable function is generated using a cryptographic hash function. In some implementations, a respective function digest for each executable function is generated by applying two or more cryptographic hash functions to the executable function. In some implementations, each function digest includes an indication of the length of the corresponding function. In some implementations, each function digest includes an indication of the start address or end address of the corresponding function.

コンピューティングシステムは、複数の実行可能関数の各実行可能関数についてのそれぞれのダイジェストを含む信頼バイナリを構築する(620)。いくつかの実装形態では、信頼バイナリは、対応するファイル(例えば、PEファイル又はELFファイル)の全ての実行可能コードについてのダイジェストを含む。いくつかの実装形態では、信頼バイナリは、対応するファイルに含まれるエントロピーについてのダイジェストを含む。 The computing system builds (620) a trusted binary that includes a respective digest for each executable function of the plurality of executable functions. In some implementations, the trusted binary includes digests for all executable code in the corresponding file (e.g., a PE file or an ELF file). In some implementations, the trusted binary includes a digest for the entropy contained in the corresponding file.

いくつかの実装形態では、信頼バイナリを構築するために、コンピューティングシステムは、プログラムのデータディレクトリ(例えば、データディレクトリ212)、プログラムのセクションテーブル(例えば、セクションテーブル214)、及びプログラムのプログラムテーブル(例えば、プログラムヘッダテーブル254)のうちの1つ以上をハッシュする(622)。いくつかの実装形態では、信頼バイナリを構築することは、プログラムの実行可能コードの各セクションをハッシュすることを含む。 In some implementations, to build the trusted binary, the computing system hashes (622) one or more of the program's data directory (e.g., data directory 212), the program's section table (e.g., section table 214), and the program table (e.g., program header table 254) of the program. In some implementations, building the trusted binary includes hashing each section of the program's executable code.

コンピューティングシステムは、実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成する(624)。いくつかの実装形態では、信頼バイナリ名は、実行可能コードのヘッダに含まれるエントロピーのダイジェストである。 The computing system generates a trusted binary name by applying a hash function to the header of the executable code (624). In some implementations, the trusted binary name is a digest of the entropy contained in the header of the executable code.

いくつかの実装形態では、実行可能コードは、プログラム実行可能(PE)ファイルであり、信頼バイナリ名を生成することは、PEファイルのDOSヘッダ及びPEヘッダ(のうちの少なくとも1つ)にハッシュ関数を適用することを含む(625)。 In some implementations, the executable code is a program executable (PE) file, and generating the trusted binary name includes applying a hash function to (at least one of) the DOS header and the PE header of the PE file (625).

いくつかの実装形態では、実行可能コードは、実行可能又はリンク可能フォーマット(ELF)ファイルであり、信頼バイナリ名を生成することは、ELFファイルのELFヘッダにハッシュ関数を適用することを含む(626)。 In some implementations, the executable code is an executable or linkable format (ELF) file, and generating the trusted binary name includes applying a hash function to an ELF header of the ELF file (626).

いくつかの実装形態では、ハッシュ関数は、SHA-256ハッシュ関数などの安全なハッシュアルゴリズムである(628)。いくつかの実装形態では、ハッシュ関数は暗号化ハッシュ関数である。いくつかの実装形態では、同じハッシュ関数が、信頼バイナリ名を生成して、かつ実行可能関数ダイジェストを生成するために使用される。 In some implementations, the hash function is a secure hash algorithm, such as the SHA-256 hash function (628). In some implementations, the hash function is a cryptographic hash function. In some implementations, the same hash function is used to generate the trusted binary name and to generate the executable function digest.

コンピューティングシステムは、信頼バイナリ名を利用して、信頼データベース(例えば、信頼ストア)内の信頼バイナリをインデックス化する(630)。例えば、信頼バイナリ340は、信頼ストア338に記憶される(例えば、信頼バイナリ名341によってインデックス化される)。 The computing system indexes (630) the trusted binary in a trust database (e.g., a trust store) using the trusted binary name. For example, trusted binary 340 is stored in trust store 338 (e.g., indexed by trusted binary name 341).

いくつかの実装形態では、信頼データベースは、コンピューティングシステムのメモリ(例えば、コンピューティングデバイス300のメモリ314に記憶される信頼ストア338)に記憶される(632)。いくつかの実装形態では、信頼データベースは、コンピューティングデバイスから離れて記憶される。例えば、図5は、デバイスグループ502内のデバイスから離れた信頼ストア508を示す。 In some implementations, the trust database is stored (632) in memory of the computing system (e.g., trust store 338 stored in memory 314 of computing device 300). In some implementations, the trust database is stored remotely from the computing device. For example, FIG. 5 shows a trust store 508 remote from the devices in device group 502.

いくつかの実装形態では、コンピューティングシステムは、信頼バイナリを、コンピューティングシステムから離れたサーバシステムに送信する(634)。例えば、信頼バイナリは、デバイスグループ502-1内のデバイスで生成され、信頼ポイント506-1に送信されて、インデックス化され、記憶される(例えば、信頼ストア508-1又は508-2のうちの1つに記憶される)。 In some implementations, the computing system transmits the trust binary to a server system remote from the computing system (634). For example, the trust binary is generated on a device in device group 502-1 and transmitted to trust point 506-1 for indexing and storage (e.g., in one of trust stores 508-1 or 508-2).

図7A~図7Dは、いくつかの実装形態による、信頼バイナリを使用するための方法700のフローチャートを提供する。方法700は、1つ以上のプロセッサ及びメモリを有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。いくつかの実装形態では、メモリは、1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムを記憶する。 Figures 7A-7D provide a flowchart of a method 700 for using trusted binaries, according to some implementations. The method 700 is performed on a computing system (e.g., computing device 300) having one or more processors and memory. In some implementations, the memory stores one or more programs configured for execution by the one or more processors.

コンピューティングシステムは、信頼エージェントを実行する(702)。例えば、コンピューティングデバイス300は、信頼エージェント324を実行する。いくつかの実装形態では、信頼エージェントは、カーネルレベルデバイスドライバとして実行される。いくつかの実装形態では、信頼エージェントは、コンピューティングシステム上でリング-0プロセスとして実行される。 The computing system executes a trust agent (702). For example, the computing device 300 executes the trust agent 324. In some implementations, the trust agent executes as a kernel-level device driver. In some implementations, the trust agent executes as a ring-0 process on the computing system.

いくつかの実装形態では、コンピューティングシステム(704)は、(i)信頼エージェントの実行可能コードをメモリにロードし、(ii)信頼エージェントのための信頼バイナリを取得し、(iii)ロードされた実行可能コードを取得された信頼バイナリと比較することによって、信頼エージェントの真正性を確認する。いくつかの実装形態では、信頼エージェントの起動プロセスの一部として、信頼エージェントは、それ自身の信頼バイナリを有効性認証する(例えば、信頼エージェントコードが改ざんされていないことを確認するために)。いくつかの実装形態では、信頼エージェントは、オペレーティングシステムの許可を使用して、その関連付けられたファイル及びデータ(例えば、信頼ストア及び信頼エージェント構成要素ファイル)が改ざんされないように保護する。いくつかの実装形態では、信頼エージェントは、信頼エージェントに関連付けられたファイル及びデータを監視するためのカーネルスレッドを含む(実行する)。いくつかの実装形態では、カーネルスレッドは、信頼エージェントに関連付けられたファイル及びデータが無効化又は改ざんされていないことを継続的に検証する。いくつかの実施態様では、監視されるファイル及びデータへの書き込みアクセスをカーネルスレッドが検出すると、書き込みアクセスを開始したプロセスは、カーネルスレッドによって停止される(無効化される)。いくつかの実装形態では、フォレンジックデータは、検出されている書き込みアクセスに従って取得され、信頼エージェントは、フォレンジックデータを用いて(例えば、コンピューティングシステムのユーザ及び/又は信頼センタへの)通知を生成する。 In some implementations, the computing system (704) verifies the authenticity of the trust agent by (i) loading executable code of the trust agent into memory, (ii) obtaining a trusted binary for the trust agent, and (iii) comparing the loaded executable code with the obtained trusted binary. In some implementations, as part of the trust agent startup process, the trust agent validates its own trusted binary (e.g., to ensure that the trust agent code has not been tampered with). In some implementations, the trust agent uses operating system permissions to protect its associated files and data (e.g., trust store and trust agent component files) from tampering. In some implementations, the trust agent includes (runs) a kernel thread to monitor files and data associated with the trust agent. In some implementations, the kernel thread continuously verifies that files and data associated with the trust agent have not been disabled or tampered with. In some implementations, when the kernel thread detects a write access to the monitored files and data, the process that initiated the write access is stopped (disabled) by the kernel thread. In some implementations, forensic data is obtained following the detected write access, and the trusted agent uses the forensic data to generate a notification (e.g., to a user of the computing system and/or to a trusted center).

いくつかの実装形態では、信頼エージェントは、コンピューティングデバイスの起動時に実行される(706)。いくつかの実装形態では、信頼エージェントは、コンピューティングシステムのブート(例えば、電源投入)シーケンスの一部として実行されるように構成される。 In some implementations, the trust agent executes at startup of the computing device (706). In some implementations, the trust agent is configured to execute as part of the boot (e.g., power-on) sequence of the computing system.

いくつかの実装形態では、コンピューティングシステムは、入力/出力(I/O)検査のための複数のカーネルフックを確立する(708)。例えば、複数のカーネルフックは、ファイルI/O動作、レジストリI/O動作、スレッド開始動作及び停止動作、並びに画像ロード動作及びアンロード動作を検査するために利用される。 In some implementations, the computing system establishes (708) multiple kernel hooks for input/output (I/O) inspection. For example, multiple kernel hooks are utilized to inspect file I/O operations, registry I/O operations, thread start and stop operations, and image load and unload operations.

いくつかの実装形態では、信頼エージェントは、カーネルレベルドライバを含む(710)。例えば、信頼エージェント324は、アプリケーションバイナリ及び関数ダイジェストを検証するためにカーネルエージェント326を含む。いくつかの実装形態では、カーネルエージェント326は、アプリケーションに関連付けられた関数呼び出し及びメモリバッファを有効性認証することによって、メモリ内で実行されるアプリケーションが攻撃及び侵害から保護されることを確実にする。 In some implementations, the trust agent includes a kernel-level driver (710). For example, the trust agent 324 includes a kernel agent 326 to verify application binaries and function digests. In some implementations, the kernel agent 326 ensures that applications running in memory are protected from attack and compromise by validating function calls and memory buffers associated with the application.

いくつかの実装形態では、信頼エージェントは、デバイスドライバを監視するドライバエージェント(例えば、ドライバエージェント327)を含む。いくつかの実装形態では、ドライバエージェントは、デバイスドライバのダイジェストをデバイスドライバのための信頼バイナリと比較することによって、デバイスドライバを検証する。いくつかの実装形態では、デバイスドライバのための信頼バイナリが見つからない場合、又はデバイスドライバのダイジェストが信頼バイナリと一致しない場合、デバイスドライバはロードを許可されないか、又はオフラインにされる(無効化される)。いくつかの実装形態では、ドライバエージェントは、デバイスドライバ内で実行される関数及びカーネルスレッドを監視する。いくつかの実装形態では、ドライバエージェントは、関数のダイジェストをデバイスドライバのための信頼バイナリ内の関数ダイジェストと比較することによって、ドライバ関数を検証する。いくつかの実装形態では、カーネルスレッドがデバイスドライバ内で関数を実行しようとしていることが検出され、関数が信頼バイナリ内に一致する関数ダイジェストを有しない場合、ドライバエージェントはカーネルスレッドを停止し、かつ/又はデバイスドライバを無効化する。いくつかの実装形態では、ドライバエージェントは、未検証のデバイスドライバ又はデバイスドライバで実行されている未検証の関数を検出することに従って、フォレンジックデータを取得する(例えば、生成又はキャプチャする)。いくつかの実装形態では、ドライバエージェントは、未検証のデバイスドライバ又はデバイスドライバで実行されている未検証の関数を検出することに従って、(例えば、コンピューティングシステムのユーザ及び/又は信頼センタへの)通知を生成する。いくつかの実装形態では、通知は、フォレンジックデータを含む。いくつかの実装形態では、ドライバエージェントは、未検証のデバイスドライバ又はデバイスドライバで実行されている未検証の関数を検出することに従って、オペレーティングシステムに電源を切らせる(例えば、再起動又はリブートさせる)。いくつかの実装形態では、ドライバエージェントは、コンピューティングシステムのユーザに、未検証のデバイスドライバ又はデバイスドライバで実行されている未検証の関数を検出することに従って、オペレーティングシステムの電源を切ることを推奨する。 In some implementations, the trust agent includes a driver agent (e.g., driver agent 327) that monitors device drivers. In some implementations, the driver agent verifies the device driver by comparing a digest of the device driver to a trusted binary for the device driver. In some implementations, if a trusted binary for the device driver is not found or if the digest of the device driver does not match the trusted binary, the device driver is not allowed to load or is taken offline (disabled). In some implementations, the driver agent monitors functions and kernel threads that run in the device driver. In some implementations, the driver agent verifies driver functions by comparing a digest of the function to a function digest in a trusted binary for the device driver. In some implementations, if a kernel thread is detected attempting to execute a function in the device driver and the function does not have a matching function digest in the trusted binary, the driver agent stops the kernel thread and/or disables the device driver. In some implementations, the driver agent obtains (e.g., generates or captures) forensic data in accordance with detecting an unverified device driver or an unverified function running in the device driver. In some implementations, the driver agent generates a notification (e.g., to a user of the computing system and/or a trust center) in response to detecting an unverified device driver or an unverified function running in the device driver. In some implementations, the notification includes forensic data. In some implementations, the driver agent causes the operating system to power down (e.g., restart or reboot) in response to detecting an unverified device driver or an unverified function running in the device driver. In some implementations, the driver agent recommends to a user of the computing system that the operating system be powered down in response to detecting an unverified device driver or an unverified function running in the device driver.

いくつかの実装形態では、信頼エージェントは、通信サービス、ファイルモニタ、インストーラ、及びダッシュボードマネージャを含む(712)。例えば、信頼エージェント324は、通信サービス328、バイナリモニタ330、ダッシュボードモジュール332、及びインストーラ334を含む。 In some implementations, the trust agent includes a communication service, a file monitor, an installer, and a dashboard manager (712). For example, the trust agent 324 includes the communication service 328, the binary monitor 330, the dashboard module 332, and the installer 334.

コンピューティングシステムは、信頼エージェントを介して、コンピューティングシステム上のプログラム(例えば、アプリケーション322)の今後の実行を検出する(714)。例えば、信頼エージェントは、バイナリファイルがメモリ内で立ち上げられていることを検出する。いくつかの実装形態では、信頼エージェントは、メモリ内で立ち上げられているバイナリファイルを検出することに加えて、ダウンロードされているプログラム及び/又はバイナリファイルを検出する。 The computing system, via the trusted agent, detects (714) future execution of a program (e.g., application 322) on the computing system. For example, the trusted agent detects that a binary file is being launched in memory. In some implementations, in addition to detecting binary files being launched in memory, the trusted agent detects programs and/or binary files being downloaded.

いくつかの実装形態では、コンピューティングシステムは、プログラムに対応するメモリ要求を識別する(716)。例えば、信頼エージェント324は、ファイルI/O動作又はレジストリI/O動作を識別する。いくつかの実装形態では、信頼エージェント324は、開始を試みるアプリケーションスレッドを識別するか、又はメモリバッファ内のスクリプト、ジャバスクリプト、又はシェルコードを検出する。 In some implementations, the computing system identifies (716) a memory request corresponding to the program. For example, the trusted agent 324 identifies a file I/O operation or a registry I/O operation. In some implementations, the trusted agent 324 identifies an application thread attempting to start or detects script, javascript, or shell code in a memory buffer.

コンピューティングシステムは、検出に応答して、メモリ内の信頼ストアからプログラムのための信頼バイナリを取得する(720)。例えば、信頼エージェント324は、信頼ストア338から信頼バイナリ340を取得する。 In response to the detection, the computing system retrieves (720) a trusted binary for the program from a trust store in memory. For example, the trust agent 324 retrieves the trusted binary 340 from the trust store 338.

コンピューティングシステムは、プログラムの実行可能コードを取得されたプログラムのための信頼バイナリと比較することによって、プログラムの真正性を確認する(722)。例えば、信頼エージェント324は、実行可能コードのダイジェストを生成し、生成されたダイジェストを信頼バイナリと比較する。 The computing system verifies the authenticity of the program by comparing the executable code of the program with the trusted binary for the obtained program (722). For example, the trusted agent 324 generates a digest of the executable code and compares the generated digest with the trusted binary.

コンピューティングシステムは、プログラムの確認された真正性に従って、プログラムの実行を許可する(724)。例えば、信頼エージェント324は、メモリにロードされているバイナリファイルをインターセプトし、バイナリファイルの信頼性が(信頼バイナリに基づいて)確認されるまで、バイナリファイルがロードされることを防止する(例えば、プロセスを中断する)。 The computing system allows execution of the program according to the confirmed authenticity of the program (724). For example, the trusted agent 324 may intercept a binary file being loaded into memory and prevent the binary file from being loaded (e.g., suspend the process) until the authenticity of the binary file is confirmed (based on the trusted binary).

コンピューティングシステムは、プログラムの実行を監視することによって、プログラムの実行可能関数の今後の実行を識別する(726)。例えば、信頼エージェント324は、プログラムに関連付けられた関数呼び出し(例えば、プログラムの関数、又は共有ライブラリ内の関数)を検出する。 The computing system identifies future executions of executable functions of the program by monitoring the execution of the program (726). For example, the trusted agent 324 detects function calls associated with the program (e.g., to functions of the program or to functions in a shared library).

いくつかの実装形態では、コンピューティングシステムは、プログラムのシステムレベルの動作を監視する(728)。例えば、信頼エージェント324は、ファイルI/O動作、レジストリI/O動作、スレッド開始動作及び停止動作、並びに画像ロード動作及びアンロード動作を監視する。 In some implementations, the computing system monitors (728) system-level operations of the program. For example, the trusted agent 324 monitors file I/O operations, registry I/O operations, thread start and stop operations, and image load and unload operations.

いくつかの実装形態では、コンピューティングシステムは、プログラムによって行われたライブラリ関数呼び出しをインターセプトする(730)。例えば、カーネルエージェント326は、ロード、実行、及び終了を含む、メモリ内のプログラムのライフタイムを通してプログラム(アプリケーション)を監視する。いくつかの実装形態では、カーネルエージェント326は、信頼バイナリに対してプログラムを検証し、ロードされた任意の共有ライブラリ内の関数を検証する。いくつかの実装形態では、信頼エージェント324は、共有ライブラリのための信頼バイナリを取得し、ライブラリ関数のダイジェストを信頼バイナリ内の関数ダイジェストと比較する。 In some implementations, the computing system intercepts library function calls made by the program (730). For example, the kernel agent 326 monitors the program (application) throughout the program's lifetime in memory, including loading, execution, and termination. In some implementations, the kernel agent 326 validates the program against a trusted binary and verifies functions in any loaded shared libraries. In some implementations, the trust agent 324 obtains the trusted binary for the shared library and compares digests of the library functions to function digests in the trusted binary.

コンピューティングシステムは、実行可能関数の今後の実行を識別することに応答して、信頼バイナリから、実行可能関数に対応する関数ダイジェストを取得する(732)。例えば、信頼エージェント324は、実行可能関数に対応する関数ダイジェスト343-1を取得する。 In response to identifying a future execution of the executable function, the computing system obtains from the trusted binary a function digest corresponding to the executable function (732). For example, the trusted agent 324 obtains the function digest 343-1 corresponding to the executable function.

コンピューティングシステムは、実行可能関数の実行可能コードを取得された関数ダイジェストと比較することによって、実行可能関数の真正性を確認する(734)。例えば、信頼エージェント324は、実行可能関数の静的部分にハッシュを適用することによってダイジェストを生成し、次いで、ダイジェストを信頼バイナリからの関数ダイジェストと比較する。 The computing system verifies the authenticity of the executable function by comparing the executable code of the executable function with the obtained function digest (734). For example, the trusted agent 324 generates a digest by applying a hash to the static portion of the executable function and then compares the digest with the function digest from the trusted binary.

コンピューティングシステムは、実行可能関数の確認された真正性に従って、実行可能関数の実行を許可する(736)。例えば、信頼エージェント324は、信頼バイナリ内の関数ダイジェストに一致する関数のハッシュに従って関数の実行を許可する。 The computing system allows execution of the executable function according to the confirmed authenticity of the executable function (736). For example, the trusted agent 324 allows execution of the function according to a hash of the function that matches the function digest in the trusted binary.

いくつかの実装形態では、コンピューティングシステムは、信頼エージェントを介して、第2のプログラムの今後の実行を検出する(738)。例えば、信頼エージェント324は、メモリにロードされている第2のアプリケーション522のためのバイナリファイルを検出する。 In some implementations, the computing system detects (738) future execution of the second program via the trust agent. For example, the trust agent 324 detects a binary file for the second application 522 being loaded in memory.

いくつかの実装形態では、コンピューティングシステムは、信頼ストアが第2のプログラムのための対応する第2の信頼バイナリを含まないと決定する(740)。例えば、第2のプログラムは、信頼バイナリが作成されていないプログラムであるか、又は第2のプログラムは、第2のプログラムのヘッダ部分のハッシュが第2のプログラムの以前に生成された信頼バイナリ名と一致しないように修正されている。 In some implementations, the computing system determines (740) that the trust store does not include a corresponding second trusted binary for the second program. For example, the second program is a program for which no trusted binary was created, or the second program has been modified such that a hash of a header portion of the second program does not match a previously generated trusted binary name for the second program.

いくつかの実装形態では、コンピューティングシステムは、検出に応答して、信頼ストアから第2のプログラムのための第2の信頼バイナリを取得する(744)。例えば、信頼バイナリ340-1は、第1のプログラムに対応し、信頼バイナリ340-2は、第2のプログラムに対応する。 In some implementations, in response to the detection, the computing system retrieves (744) a second trusted binary for the second program from the trust store. For example, trusted binary 340-1 corresponds to the first program and trusted binary 340-2 corresponds to the second program.

いくつかの実装形態では、コンピューティングシステムは、第2の信頼バイナリとの比較に基づいて、第2のプログラムの実行可能コードの1つ以上の変更を識別する(746)。例えば、信頼バイナリ名は、第2のプログラムのヘッダ部分のハッシュと一致するが、コード部分のハッシュ(例えば、コード216)は、信頼バイナリのダイジェストと一致しない。 In some implementations, the computing system identifies one or more modifications to the executable code of the second program based on the comparison to the second trusted binary (746). For example, the trusted binary name matches a hash of a header portion of the second program, but a hash of a code portion (e.g., code 216) does not match a digest of the trusted binary.

いくつかの実装形態では、コンピューティングシステムは、(例えば、決定(740)又は識別(746)に従って)是正アクションを開始する(742)。いくつかの実装形態では、是正アクションは、信頼センタ(例えば、信頼センタ402)による分析のためにフォレンジックデータを収集することを含む。いくつかの実装形態では、是正アクションは、信頼できない第2のプログラムについての通知(例えば、コンピューティングシステムのユーザに提示される、及び/又は信頼センタに送信される)を生成することを含む。 In some implementations, the computing system initiates a corrective action (742) (e.g., following the determination (740) or the identification (746)). In some implementations, the corrective action includes collecting forensic data for analysis by a trust center (e.g., trust center 402). In some implementations, the corrective action includes generating a notification (e.g., presented to a user of the computing system and/or sent to a trust center) about the untrusted second program.

いくつかの実装形態では、是正アクションは、第2のプログラムが実行されるのを防止すること、第2のプログラムに関する情報をフォレンジックログ(例えば、フォレンジックログ348)に記憶すること、及び第2のプログラムのための暫定信頼バイナリを生成すること、のうちの1つ以上を含む(748)。いくつかの実装形態では、第2のプログラムが実行されるのを防止することは、メモリにロードされている第2のプログラムのバイナリファイルをインターセプトすることを含む。 In some implementations, the corrective action includes one or more of: preventing the second program from executing, storing information about the second program in a forensic log (e.g., forensic log 348), and generating a provisional trusted binary for the second program (748). In some implementations, preventing the second program from executing includes intercepting a binary file of the second program that is loaded into memory.

いくつかの実装形態では、是正アクションは、暫定信頼バイナリを生成することを含み、コンピューティングシステムは、有効性認証のために第2のプログラムの実行可能ファイルを信頼センタに送信する(750)。いくつかの実装形態では、暫定信頼バイナリを生成することに従って、第2のプログラムは、限られた期間(例えば、1日、2日、又は1週間)の間、コンピューティングシステム上で実行されることが可能である。いくつかの実装形態では、第2のプログラムは、第2のプログラムの実行可能ファイルに関する応答が信頼センタから受信されるまで、コンピューティングシステム上で実行されることが可能である。いくつかの実装形態では、フォレンジックデータは、第2のプログラムの実行可能ファイルと共に信頼センタに送信され、フォレンジックデータは、コンピューティングシステムの状態及び第2のプログラムが実行された条件に関する情報を含む。いくつかの実装形態では、信頼センタは、第2のプログラムの実行可能ファイル、及び任意選択で、受信された任意のフォレンジックデータを分析して、第2のプログラムを信頼するかどうかを決定する。いくつかの実装形態では、第2のプログラムの実行可能ファイルを有効性認証することは、デジタル署名をチェックすること、署名証明書パスをチェックすること、1つ以上のブラックリスト(例えば、ローカル及び外部)に対して実行可能ファイルをチェックすること、及び1つ以上のホワイトリストに対して実行可能ファイルをチェックすること、のうちの1つ以上を含む。 In some implementations, the corrective action includes generating a provisionally trusted binary, and the computing system sends the executable file of the second program to a trust center for validity authentication (750). In some implementations, following generating the provisionally trusted binary, the second program can be run on the computing system for a limited period of time (e.g., one day, two days, or one week). In some implementations, the second program can be run on the computing system until a response regarding the executable file of the second program is received from the trust center. In some implementations, forensic data is sent to the trust center along with the executable file of the second program, the forensic data including information regarding the state of the computing system and the conditions under which the second program was executed. In some implementations, the trust center analyzes the executable file of the second program, and optionally any forensic data received, to determine whether to trust the second program. In some implementations, validating the executable file of the second program includes one or more of: checking a digital signature, checking a signature certificate path, checking the executable file against one or more blacklists (e.g., local and external), and checking the executable file against one or more whitelists.

いくつかの実装形態では、是正アクションは、1つ以上の対策を適用することを含む(752)。いくつかの実装形態では、対策は、ヒープスプレー、反射性注入、未知の読み取りバッファリング、ブロックされたアドレス通信、不正な関数、悪意のあるスクリプト、特権昇格、関数改ざん、未知のシェルコード、及び信頼改ざんのうちの1つ以上を検出及び防止することを含む。いくつかの実装形態では、各対策は、ポリシー設定を介して(例えば、ポリシー情報346内で)個別に有効化される。いくつかの実装形態では、ポリシー情報346は、各対策についての強制パラメータ、通知パラメータ、又はオフパラメータを含む。 In some implementations, the corrective action includes applying one or more countermeasures (752). In some implementations, the countermeasures include detecting and preventing one or more of heap spray, reflective injection, unknown read buffering, blocked address communication, illegal functions, malicious scripts, privilege escalation, function tampering, unknown shell code, and trust tampering. In some implementations, each countermeasure is individually enabled via a policy setting (e.g., in policy information 346). In some implementations, policy information 346 includes a force parameter, a notify parameter, or an off parameter for each countermeasure.

いくつかの実装形態では、ヒープスプレーを検出及び防止することは、動的メモリが実行可能コード挿入のために割り当てられたことを検出することを含む。いくつかの実装形態では、信頼エージェント324は、実行可能コードの挿入をブロックし、かつ/又は実行可能コードの挿入に関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、スプレーされたメモリのコピーは、イベントのフォレンジックログに記憶される。 In some implementations, detecting and preventing heap spray includes detecting that dynamic memory has been allocated for executable code insertion. In some implementations, the trust agent 324 blocks the executable code insertion and/or sends information about the executable code insertion to a trust center for analysis. In some implementations, a copy of the sprayed memory is stored in a forensic log of the event.

いくつかの実装形態では、反射性注入を検出及び防止することは、別のプロセスが実行可能オブジェクトをプロセスに注入したことを検出することを含む。いくつかの実装形態では、信頼エージェント324は、実行可能オブジェクトの注入をブロックし、かつ/又は実行可能オブジェクトに関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、注入されたメモリのコピーは、イベントのフォレンジックログに記憶される。 In some implementations, detecting and preventing reflective injection includes detecting that another process has injected an executable object into the process. In some implementations, the trust agent 324 blocks the injection of the executable object and/or sends information about the executable object to a trust center for analysis. In some implementations, a copy of the injected memory is stored in a forensic log of the event.

いくつかの実装形態では、未知の読み取りバッファリングを検出及び防止することは、実行可能ファイルがメモリにロードされていること、及び実行可能ファイルが対応する信頼バイナリを有しないことを検出することを含む。いくつかの実装形態では、信頼エージェント324は、実行可能ファイルがメモリにロードされるのを防止し、かつ/又は実行可能ファイルに関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、バッファの内容のコピーは、イベントのフォレンジックログに記憶される。 In some implementations, detecting and preventing unknown read buffering includes detecting that an executable file is loaded into memory and that the executable file does not have a corresponding trusted binary. In some implementations, the trust agent 324 prevents the executable file from being loaded into memory and/or sends information about the executable file to a trust center for analysis. In some implementations, a copy of the buffer contents is stored in a forensic log of the event.

いくつかの実装形態では、ブロックされたアドレス通信を検出及び防止することは、プロセスが制限又はブロックされたインターネットプロトコル(IP)アドレスに接続しようとしたことを検出することを含む。いくつかの実装形態では、信頼エージェント324は、制限又はブロックされたIPアドレスとの通信を防止する。 In some implementations, detecting and preventing blocked address communication includes detecting when a process attempts to connect to a restricted or blocked Internet Protocol (IP) address. In some implementations, the trust agent 324 prevents communication with restricted or blocked IP addresses.

いくつかの実装形態では、不正な関数を検出及び防止することは、スレッドが開始しようとしていること、及び関連付けられた関数が、対応する信頼バイナリ(又は信頼バイナリ内の対応する関数ダイジェスト)を有しないこと、を検出することを含む。いくつかの実装形態では、信頼エージェント324は、スレッドが開始するのを防止するか、又は対応する信頼バイナリが存在しないという決定に応じてスレッドを終了し、かつ/又はスレッド及び関連する関数に関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、不正な関数のコピーは、イベントのフォレンジックログに記憶される。 In some implementations, detecting and preventing unauthorized functions includes detecting that a thread is about to start and that the associated function does not have a corresponding trusted binary (or a corresponding function digest within the trusted binary). In some implementations, the trust agent 324 prevents the thread from starting or terminates the thread in response to a determination that a corresponding trusted binary does not exist, and/or sends information about the thread and associated function to a trust center for analysis. In some implementations, a copy of the unauthorized function is stored in a forensic log of the event.

いくつかの実装形態では、悪意のあるスクリプトを検出及び防止することは、プロセスバッファ内のスクリプト(例えば、バッチファイル(BAT)、ジャバスクリプト、又はパワーシェルファイル)を(例えば、ファイル操作中に)検出すること、及びスクリプトが、暗号化又は圧縮されたスクリプトセクションなどの1つ以上の疑わしい動作を含むと決定すること、を含む。いくつかの実装形態では、信頼エージェント324は、スクリプトが実行されるのを防止し、かつ/又はスクリプトに関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、スクリプトのコピーは、イベントのフォレンジックログに記憶される。 In some implementations, detecting and preventing malicious scripts includes detecting a script (e.g., a batch file (BAT), a JavaScript file, or a PowerShell file) in a process buffer (e.g., during a file operation) and determining that the script includes one or more suspicious behaviors, such as an encrypted or compressed script section. In some implementations, the trust agent 324 prevents the script from being executed and/or sends information about the script to a trust center for analysis. In some implementations, a copy of the script is stored in a forensic log of the event.

いくつかの実装形態では、特権昇格を検出及び防止することは、プロセスがコンピューティングシステムにおいてその特権レベルを上げようとしたことを検出することを含む(例えば、特権レベルをシステムレベルに上げる)。いくつかの実装形態では、信頼エージェント324は、プロセスがその特権レベルを上げることを防止し、かつ/又は特権昇格に関する情報を分析のために信頼センタに送信する。 In some implementations, detecting and preventing privilege escalation includes detecting that a process has attempted to elevate its privilege level in a computing system (e.g., elevating the privilege level to a system level). In some implementations, the trusted agent 324 prevents the process from elevating its privilege level and/or transmits information about the privilege escalation to a trusted center for analysis.

いくつかの実装形態では、関数改ざんを検出及び防止することは、プログラム内の関数がメモリにロードされてから修正されていることを検出することを含む。いくつかの実装形態では、信頼エージェント324は、修正された関数が実行されるのをブロックし、かつ/又は修正された関数に関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、元の関数及び修正された関数に関する情報は、分析のために信頼センタに送信される。いくつかの実装形態では、未知のシェルコードを検出及び防止することは、メモリバッファ内のシェルコードを検出することを含む。 In some implementations, detecting and preventing function tampering includes detecting that a function in the program has been modified since being loaded into memory. In some implementations, the trust agent 324 blocks the modified function from being executed and/or sends information about the modified function to a trust center for analysis. In some implementations, information about the original function and the modified function is sent to a trust center for analysis. In some implementations, detecting and preventing unknown shellcode includes detecting shellcode in a memory buffer.

いくつかの実装形態では、未知のシェルコードを検出及び防止することは、バッファがプロセスに割り当てられ、そのページアクセス許可が対応する画像又は信頼バイナリなしで読み取り/書き込み/実行するように設定されていることを検出することを含む。いくつかの実装形態では、信頼エージェント324は、シェルコードが実行されるのをブロックし、かつ/又はシェルコードに関する情報を分析のために信頼センタに送信する。いくつかの実装形態では、シェルコードメモリ画像は、イベントのフォレンジックログに記憶される。 In some implementations, detecting and preventing unknown shellcode includes detecting that a buffer is allocated to a process and its page access permissions are set to read/write/execute without a corresponding image or trusted binary. In some implementations, the trust agent 324 blocks the shellcode from executing and/or sends information about the shellcode to a trust center for analysis. In some implementations, the shellcode memory image is stored in a forensic log of the event.

いくつかの実装形態では、信頼改ざんを検出及び防止することは、プロセスが信頼エージェント又は信頼ストアの1つ以上のファイルを修正しようとしたことを検出することを含む。いくつかの実装形態では、信頼エージェント324は、プロセスが1つ以上のファイルを修正するのをブロックし、信頼改ざんに関する情報を分析のために信頼センタに送信する。 In some implementations, detecting and preventing trust tampering includes detecting that a process attempts to modify one or more files of a trust agent or trust store. In some implementations, the trust agent 324 blocks the process from modifying the one or more files and sends information about the trust tampering to a trust center for analysis.

いくつかの実装形態では、是正アクションは、第2のプログラムのための信頼バイナリについてのクエリを信頼センタに送信することを含む(754)。例えば、信頼エージェント324は、信頼ストア338に信頼バイナリを要求し、信頼ストア338が要求された信頼バイナリを含まないという通知がなされると、信頼エージェント324は、信頼センタに信頼バイナリを要求する。 In some implementations, the corrective action includes sending a query to the trust center for a trusted binary for the second program (754). For example, the trust agent 324 requests the trusted binary from the trust store 338, and upon notification that the trust store 338 does not contain the requested trusted binary, the trust agent 324 requests the trusted binary from the trust center.

いくつかの実装形態では、是正アクションは、コンピューティングデバイスについて取得された信頼ポリシーに基づいている(756)。例えば、是正アクションは、ポリシー情報346に記憶された信頼ポリシー(例えば、セキュリティポリシー504-1)に基づく。 In some implementations, the corrective action is based on a trust policy obtained for the computing device (756). For example, the corrective action is based on a trust policy (e.g., security policy 504-1) stored in policy information 346.

いくつかの実装形態では、コンピューティングシステムは、プログラムの実行を監視しながら、プログラムの第2の実行可能関数の今後の実行を識別する(758)。例えば、カーネルエージェント326は、第2の実行可能関数への呼び出しを識別する。 In some implementations, while monitoring the execution of the program, the computing system identifies (758) a future execution of a second executable function of the program. For example, the kernel agent 326 identifies a call to the second executable function.

いくつかの実装形態では、コンピューティングシステムは、第2の実行可能関数の今後の実行を識別することに応答して、第2のプログラムについての対応する第2の関数ダイジェストを信頼バイナリが含まないと決定する(760)。例えば、第2の関数は、対応する関数ダイジェストが作成されていないか、又は対応する関数ダイジェストが作成されてから第2の関数が修正されている。 In some implementations, in response to identifying a future execution of the second executable function, the computing system determines (760) that the trusted binary does not include a corresponding second function digest for the second program. For example, the second function may not have a corresponding function digest created or the second function may have been modified since the corresponding function digest was created.

いくつかの実装形態では、コンピューティングシステムは、決定に従って是正アクションを開始する(762)。いくつかの実装形態では、是正アクションは、信頼センタ(例えば、信頼センタ402)による分析のためにフォレンジックデータを収集することを含む。いくつかの実装形態では、是正アクションは、信頼できない第2の実行可能関数についての通知(例えば、コンピューティングシステムのユーザに提示される、及び/又は信頼センタに送信される)を生成することを含む。 In some implementations, the computing system initiates a corrective action in accordance with the determination (762). In some implementations, the corrective action includes collecting forensic data for analysis by a trust center (e.g., trust center 402). In some implementations, the corrective action includes generating a notification (e.g., presented to a user of the computing system and/or sent to a trust center) about the untrusted second executable function.

いくつかの実装形態では、是正アクションは、第2の実行可能関数の実行を防止すること、プログラムの実行を停止すること、第2の実行可能関数に関する情報をフォレンジックログに記憶すること、及び第2の実行可能関数についての暫定関数ダイジェストを生成すること、のうちの1つ以上を含む(764)。いくつかの実装形態では、暫定関数ダイジェストを生成することは、プログラムのための暫定信頼バイナリを生成することを含む。いくつかの実装形態では、プログラムの実行可能コードは、有効性認証のために信頼センタに送信される。いくつかの実装形態では、暫定関数ダイジェストの生成に従って、第2の関数は、限られた期間(例えば、1日、2日、又は1週間)の間、コンピューティングシステム上で実行されることが可能である。いくつかの実装形態では、第2のプログラムは、信頼センタから有効性認証応答が受信されるまで、コンピューティングシステム上で実行されることが可能である。 In some implementations, the corrective action includes one or more of preventing execution of the second executable function, stopping execution of the program, storing information about the second executable function in a forensic log, and generating a provisional function digest for the second executable function (764). In some implementations, generating the provisional function digest includes generating a provisional trusted binary for the program. In some implementations, the executable code of the program is sent to a trust center for validity authentication. In some implementations, following generation of the provisional function digest, the second function can be executed on the computing system for a limited period of time (e.g., one day, two days, or one week). In some implementations, the second program can be executed on the computing system until a validity authentication response is received from the trust center.

図8A~図8Bは、いくつかの実装形態による、ブロックチェーン有効性認証を使用するための方法800のフローチャートを提供する。方法800は、1つ以上のプロセッサ及びメモリを有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。いくつかの実装形態では、メモリは、1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムを記憶する。 FIGS. 8A-8B provide a flowchart of a method 800 for using blockchain validity authentication, according to some implementations. The method 800 is performed on a computing system (e.g., computing device 300) having one or more processors and memory. In some implementations, the memory stores one or more programs configured for execution by the one or more processors.

コンピューティングシステムは、信頼ストアのためのブロックチェーンを取得する(802)。いくつかの実装形態では、コンピューティングシステムは、信頼センタから信頼ストアを受信し、信頼ストアはブロックチェーンを含む。例えば、コンピューティングデバイス300は、信頼エージェント324のインストールプロセスの一部として、信頼センタから信頼ストア338を受信する。この例では、信頼ストア338は、受信されたときに少なくともなんらかのブロックチェーン情報(例えば、ジェネシスブロック)を含む。 The computing system obtains (802) a blockchain for a trust store. In some implementations, the computing system receives the trust store from a trust center, where the trust store includes a blockchain. For example, the computing device 300 receives the trust store 338 from the trust center as part of the installation process of the trust agent 324. In this example, the trust store 338 includes at least some blockchain information (e.g., the genesis block) when it is received.

いくつかの実装形態では、コンピューティングシステムは、ブロックチェーンのジェネシスブロックを取得する(804)。いくつかの実装形態では、ジェネシスブロック(例えば、ジェネシスブロック345)を有する信頼ストアが、信頼センタから受信される。 In some implementations, the computing system obtains (804) a genesis block of the blockchain. In some implementations, a trust store having a genesis block (e.g., genesis block 345) is received from a trust center.

いくつかの実装形態では、ジェネシスブロックは、信頼バイナリの暗号化されたダイジェスト(例えば、信頼バイナリダイジェスト353)、ブロックタイプ(例えば、ブロックタイプ355)、署名証明書(例えば、署名証明書357)、デジタル署名(例えば、デジタル署名358)、及び暗号化されたブロックダイジェスト(例えば、ブロックダイジェスト356)を含む(806)。いくつかの実装形態では、ジェネシスブロックは、信頼バイナリブロックタイプを有する。いくつかの実装形態では、ジェネシスブロックは、信頼センタからの署名証明書を有する。いくつかの実装形態では、ジェネシスブロックは、作成タイムスタンプ(例えば、作成タイムスタンプ354)を更に含む。 In some implementations, the genesis block includes an encrypted digest of the trusted binary (e.g., trusted binary digest 353), a block type (e.g., block type 355), a signing certificate (e.g., signing certificate 357), a digital signature (e.g., digital signature 358), and an encrypted block digest (e.g., block digest 356) (806). In some implementations, the genesis block has a trusted binary block type. In some implementations, the genesis block has a signing certificate from a trust center. In some implementations, the genesis block further includes a creation timestamp (e.g., creation timestamp 354).

いくつかの実装形態では、ブロックチェーンは、信頼ストア内のテーブルに記憶され、テーブル内の各行は、ブロックチェーンのブロックに対応する(808)。例えば、ブロックチェーン情報344は、トランザクションブロック347に対応する行を有するテーブルを含む。 In some implementations, the blockchain is stored in a table in the trust store, with each row in the table corresponding to a block of the blockchain (808). For example, blockchain information 344 includes a table having a row corresponding to transaction block 347.

いくつかの実装形態では、ブロックチェーン内の各ブロックは、それぞれの署名証明書及びそれぞれのデジタル署名を含む(810)。例えば、ジェネシスブロックは、(例えば、信頼センタからの)署名証明書357及びデジタル署名358を含み、トランザクションブロック347-1は、(例えば、コンピューティングデバイス300からの)署名証明書372及びデジタル署名374を含む。 In some implementations, each block in the blockchain includes a respective signing certificate and a respective digital signature (810). For example, the genesis block includes signing certificate 357 (e.g., from a trust center) and digital signature 358, and transaction block 347-1 includes signing certificate 372 (e.g., from computing device 300) and digital signature 374.

コンピューティングシステムは、信頼ストアに対する第1の変更を識別する(812)。いくつかの実装形態では、信頼エージェント324は、信頼ストアを変更に関して監視する。いくつかの実装形態では、信頼エージェント324は、信頼ストアを変更する(例えば、更新する)。いくつかの実装形態では、信頼ストアに対する第1の変更は、ポリシー更新、信頼バイナリ更新、ブロックリスト更新、及び暫定信頼バイナリ更新のうちの1つである。 The computing system identifies (812) a first change to the trust store. In some implementations, the trust agent 324 monitors the trust store for changes. In some implementations, the trust agent 324 modifies (e.g., updates) the trust store. In some implementations, the first change to the trust store is one of a policy update, a trusted binary update, a block list update, and an interim trusted binary update.

コンピューティングシステムは、第1のブロックを生成し、第1のブロックをブロックチェーンに挿入し、第1のブロックは、第1の変更についての第1の暗号化されたダイジェスト(例えば、トランザクションダイジェスト364)及び第1のブロックダイジェスト(例えば、ブロックダイジェスト370)を含む(814)。例えば、コンピューティングデバイス300は、第1のトランザクションに応答してトランザクションブロック347-1を生成し、トランザクションブロック347-1は、トランザクションダイジェスト364を含む。 The computing system generates a first block and inserts the first block into the blockchain, the first block including a first encrypted digest for the first change (e.g., transaction digest 364) and a first block digest (e.g., block digest 370) (814). For example, the computing device 300 generates transaction block 347-1 in response to the first transaction, the transaction block 347-1 including transaction digest 364.

いくつかの実装形態では、第1のブロックは、ジェネシスブロックの暗号化されたブロックダイジェストを更に含む(816)。例えば、トランザクションブロック347-1は、ジェネシスブロック345のブロックダイジェスト356に対応する前のブロックダイジェスト360を含む。 In some implementations, the first block further includes an encrypted block digest of the genesis block (816). For example, transaction block 347-1 includes a previous block digest 360 that corresponds to block digest 356 of genesis block 345.

いくつかの実装形態では、第1のブロックは、信頼バイナリタイプ、ブロックリストタイプ、ポリシータイプ、及びローカル信頼バイナリタイプからなる群から選択されるブロックタイプを有する(818)。いくつかの実装形態では、信頼ストアに対する各タイプの変更は、対応するブロックタイプを有する。いくつかの実装形態では、ブロックタイプは、信頼ストアに対するフォレンジック変更(例えば、フォレンジックログ348に対する更新)に対応するフォレンジックタイプを更に含む。 In some implementations, the first block has a block type selected from the group consisting of a trust binary type, a block list type, a policy type, and a local trust binary type (818). In some implementations, each type of change to the trust store has a corresponding block type. In some implementations, the block types further include a forensic type that corresponds to a forensic change to the trust store (e.g., an update to the forensic log 348).

いくつかの実装形態では、信頼ストアに対する第1の変更は、信頼ストアの信頼バイナリに対する変更であり、第1のブロックは、信頼バイナリブロックタイプを有する(820)。例えば、新規の信頼バイナリが(例えば、信頼センタから)取得され、それに応答して、トランザクションブロック347-1が信頼バイナリブロックタイプで生成される。 In some implementations, the first change to the trust store is a change to a trust binary in the trust store, and the first block has a trust binary block type (820). For example, a new trust binary is obtained (e.g., from a trust center) and, in response, transaction block 347-1 is generated with a trust binary block type.

いくつかの実装形態では、信頼ストアに対する第1の変更は、信頼ストアのポリシーに対する変更であり、第1のブロックは、ポリシーブロックタイプを有する(822)。例えば、新規のポリシーが(例えば、信頼センタから、又はコンピューティングシステムのユーザから)取得され、それに応答して、トランザクションブロック347-1がポリシーブロックタイプで生成される。 In some implementations, the first change to the trust store is a change to a policy of the trust store, and the first block has a policy block type (822). For example, a new policy is obtained (e.g., from a trust center or from a user of the computing system) and in response, a transaction block 347-1 is generated with a policy block type.

いくつかの実装形態では、信頼ストアに対する第1の変更は、信頼ストアのブロックリストに対する変更であり、第1のブロックは、ブロックリストブロックタイプを有する(824)。例えば、ブロックリストの更新が(例えば、信頼センタから)取得され、それに応答して、トランザクションブロック347-1がブロックリストブロックタイプで生成される。 In some implementations, the first change to the trust store is a change to a block list of the trust store, and the first block has a block list block type (824). For example, a block list update is obtained (e.g., from a trust center), and in response, transaction block 347-1 is generated with a block list block type.

いくつかの実装形態では、信頼ストアに対する第1の変更は、信頼ストアへのローカル信頼バイナリの追加であり、第1のブロックは、ローカル信頼バイナリブロックタイプを有する(826)。例えば、新規の暫定信頼バイナリがコンピューティングシステムで生成され、それに応答して、トランザクションブロック347-1がローカル信頼バイナリブロックタイプで生成される。 In some implementations, the first change to the trust store is the addition of a local trusted binary to the trust store, and the first block has a local trusted binary block type (826). For example, a new provisional trusted binary is generated at the computing system, and in response, transaction block 347-1 is generated with a local trusted binary block type.

いくつかの実装形態では、第1のブロックダイジェストは、2つ以上の安全なハッシュアルゴリズムを使用して生成される(828)。例えば、第1のブロックダイジェストは、2つ以上の安全なハッシュアルゴリズム(例えば、SHA-256ハッシュ関数)を第1のブロックの内容に適用することによって生成される。 In some implementations, the first block digest is generated using two or more secure hash algorithms (828). For example, the first block digest is generated by applying two or more secure hash algorithms (e.g., a SHA-256 hash function) to the contents of the first block.

コンピューティングシステムは、信頼ストアに対する第2の変更を識別する(830)。いくつかの実装形態では、第2の変化は、第1の変化とは異なるタイプの変化である。例えば、第1の変更は、信頼バイナリ更新であり、第2の変更は、ポリシー更新である。いくつかの実装形態では、第2の変更は、第1の変更と同じタイプの変更である。例えば、第1の変更は、第1の信頼バイナリ更新であり、第2の変更は、第2の信頼バイナリ更新である。 The computing system identifies (830) a second change to the trust store. In some implementations, the second change is a different type of change than the first change. For example, the first change is a trusted binary update and the second change is a policy update. In some implementations, the second change is the same type of change as the first change. For example, the first change is a first trusted binary update and the second change is a second trusted binary update.

コンピューティングシステムは、第2のブロックを生成し、第2のブロックをブロックチェーンに挿入し、第2のブロックは、第2の変更についての第2の暗号化されたダイジェスト(例えば、トランザクションダイジェスト378)、第2のブロックダイジェスト(例えば、ブロックダイジェスト384)、及び第1のブロックダイジェスト(例えば、前のブロックダイジェスト376)を含む(832)。 The computing system generates a second block and inserts the second block into the blockchain, the second block including a second encrypted digest for the second change (e.g., transaction digest 378), a second block digest (e.g., block digest 384), and the first block digest (e.g., previous block digest 376) (832).

いくつかの実装形態では、コンピューティングシステムは、信頼ストアの内容を有効性認証するためにブロックチェーンを使用することを含む、信頼ストアのインテグリティを検証する(834)。例えば、コンピューティングシステムは、信頼バイナリ340のダイジェストをブロックチェーン350の1つ以上の信頼バイナリブロックのダイジェストと比較し、一致に従って信頼ストアを有効性認証する。別の実施例として、コンピューティングシステムは、ポリシー情報346のダイジェストをブロックチェーン350の1つ以上のポリシーブロックのダイジェストと比較し、一致に従って信頼ストアを有効性認証する。 In some implementations, the computing system verifies the integrity of the trust store (834), including using the blockchain to validate the contents of the trust store. For example, the computing system compares a digest of the trust binary 340 to a digest of one or more trust binary blocks in the blockchain 350 and validates the trust store according to a match. As another example, the computing system compares a digest of the policy information 346 to a digest of one or more policy blocks in the blockchain 350 and validates the trust store according to a match.

いくつかの実装形態では、コンピューティングシステムは、第2のブロック内の前のブロックダイジェストを第1のブロック内の第1のブロックダイジェストと比較することを含む、識別証明動作を使用してブロックチェーンを有効性認証する(836)。いくつかの実装形態では、信頼ストアのインテグリティを検証することは、ブロックチェーンを有効性認証することを含む。いくつかの実装形態では、識別証明動作は、各トランザクションブロック347について、トランザクションブロック347の前のブロックダイジェストをブロックチェーン350内の前のブロックのブロックダイジェストと比較することを含む。例えば、トランザクションブロック347-1内の前のブロックダイジェスト360を、ジェネシスブロック345のブロックダイジェスト356と比較する。 In some implementations, the computing system validates the blockchain using a proof-of-identity operation that includes comparing a previous block digest in the second block to a first block digest in the first block (836). In some implementations, verifying the integrity of the trust store includes validating the blockchain. In some implementations, the proof-of-identity operation includes, for each transaction block 347, comparing a previous block digest of the transaction block 347 to a block digest of a previous block in the blockchain 350. For example, comparing a previous block digest 360 in transaction block 347-1 to a block digest 356 of genesis block 345.

次に、いくつかの例示的な実装形態について説明する。 Next, we will explain some example implementations.

(A1)一態様では、いくつかの実装形態は、信頼バイナリを作成するための方法(例えば、方法600)を含む。方法は、メモリ(例えば、メモリ314)及び1つ以上のプロセッサ(例えば、CPU302(複数可))を有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。この方法は、(i)プログラム(例えば、アプリケーション322)の実行可能コードを取得することと、(ii)実行可能コードから複数の実行可能関数を識別することと、(iii)複数の実行可能関数の各実行可能関数について、それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、(iv)複数の実行可能関数の各実行可能関数についてそれぞれのダイジェストを含むそれぞれの信頼バイナリを構築することと、(v)実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成することと、(vi)信頼バイナリ名を利用して、信頼データベース(例えば、信頼ストア338)内の信頼バイナリをインデックス化することと、を含む。 (A1) In one aspect, some implementations include a method (e.g., method 600) for creating a trusted binary. The method is executed on a computing system (e.g., computing device 300) having a memory (e.g., memory 314) and one or more processors (e.g., CPU 302(s)). The method includes (i) obtaining executable code of a program (e.g., application 322); (ii) identifying a plurality of executable functions from the executable code; (iii) generating a respective function digest for each executable function of the plurality of executable functions based on one or more static components of the respective executable function; (iv) constructing a respective trusted binary for each executable function of the plurality of executable functions including the respective digest; (v) generating a trusted binary name by applying a hash function to a header of the executable code; and (vi) indexing the trusted binary in a trust database (e.g., trust store 338) using the trusted binary name.

(A2)それぞれの関数についてそれぞれの関数ダイジェストを生成することは、それぞれの実行可能関数のそれぞれの開始アドレスに更に基づいている、A1に記載の方法。いくつかの実装形態では、終了アドレスが取得され、開始アドレスの代わりに、又は開始アドレスに加えて使用される。いくつかの実装形態では、ダイジェストは、開始アドレスではなく、終了アドレス、又はオフセットアドレスを使用して生成される。いくつかの実装形態では、信頼バイナリ名は、実行可能コードのヘッダの決定されたエントロピーに基づいている。 (A2) The method of A1, wherein generating a respective function digest for each function is further based on a respective start address of each executable function. In some implementations, an end address is obtained and used instead of or in addition to the start address. In some implementations, the digest is generated using an end address or an offset address rather than a start address. In some implementations, the trusted binary name is based on a determined entropy of a header of the executable code.

(A3)実行可能コードは、プログラム実行可能ファイル又は実行可能かつリンク可能フォーマット(ELF)ファイルのうちの1つである、A1又はA2に記載の方法。いくつかの実装形態では、実行可能コードは、.NETファイル、ジャバファイル、パイソンファイル、ビジュアルベーシックファイルなどのプログラミング言語ファイルである。 (A3) The method of A1 or A2, wherein the executable code is one of a program executable file or an Executable and Linkable Format (ELF) file. In some implementations, the executable code is a programming language file, such as a .NET file, a Java file, a Python file, a Visual Basic file, etc.

(A4)実行可能コードは、プログラム実行可能(PE)ファイルであり、信頼バイナリ名を生成することは、PEファイルのDOSヘッダ(例えば、DOSヘッダ206)及びPEヘッダ(例えば、PEヘッダ208)にハッシュ関数を適用することを含む、A3に記載の方法。いくつかの実装形態では、ハッシュ関数は、暗号化ハッシュ関数(例えば、SHA-256ハッシュ関数)である。 (A4) The method of A3, wherein the executable code is a program executable (PE) file, and generating the trusted binary name includes applying a hash function to a DOS header (e.g., DOS header 206) and a PE header (e.g., PE header 208) of the PE file. In some implementations, the hash function is a cryptographic hash function (e.g., a SHA-256 hash function).

(A5)実行可能コードは、実行可能かつリンク可能なフォーマット(ELF)ファイルであり、信頼バイナリ名を生成することは、ELFファイルのELFヘッダ(例えば、ELFヘッダ252)にハッシュ関数を適用することを含む、A3に記載の方法。いくつかの実装形態では、ハッシュ関数は、暗号化ハッシュ関数(例えば、SHA-256ハッシュ関数)である。 (A5) The method of A3, wherein the executable code is an executable and linkable format (ELF) file, and generating the trusted binary name includes applying a hash function to an ELF header (e.g., ELF header 252) of the ELF file. In some implementations, the hash function is a cryptographic hash function (e.g., a SHA-256 hash function).

(A6)各実行可能関数の1つ以上の静的成分は、静的データを表す1つ以上の命令及び/又は1つ以上の部分を含む、A1~A5のいずれかに記載の方法。いくつかの実装形態では、1つ以上の静的成分は、実行可能関数の全ての静的成分を含む。 (A6) A method according to any of A1 to A5, wherein one or more static components of each executable function include one or more instructions and/or one or more portions representing static data. In some implementations, the one or more static components include all static components of the executable function.

(A7)各実行可能関数の1つ以上の静的成分は、動的アドレスフィールドを除外する、A1~A6のいずれかに記載の方法。いくつかの実装形態では、実行可能関数の1つ以上の静的成分は、任意の動的アドレスフィールドを除く実行可能関数の全ての成分を含む。 (A7) A method according to any of A1 to A6, wherein one or more static components of each executable function exclude dynamic address fields. In some implementations, the one or more static components of the executable function include all components of the executable function except any dynamic address fields.

(A8)信頼バイナリを構築することは、プログラムのデータディレクトリ、プログラムのセクションテーブル、及びプログラムのプログラムテーブルのうちの1つ以上をハッシュすることを含む、A1~A7のいずれかに記載の方法。いくつかの実装形態では、信頼バイナリを構築することは、実行可能コードのコード、データ、及びインポートセクション(例えば、セクション216、218、及び220)をハッシュすることを含む。 (A8) A method according to any of A1 to A7, wherein constructing the trusted binary includes hashing one or more of the program's data directory, the program's section table, and the program table of the program. In some implementations, constructing the trusted binary includes hashing the code, data, and import sections of the executable code (e.g., sections 216, 218, and 220).

(A9)ハッシュ関数は、安全なハッシュアルゴリズム(例えば、SHA-256ハッシュ関数)である、又は安全なハッシュアルゴリズムを含む、A1~A8のいずれかに記載の方法。いくつかの実装形態では、同じハッシュ関数が、信頼バイナリを構築し、信頼バイナリ名を生成するために使用される。いくつかの実装形態では、異なるハッシュ関数が、信頼バイナリを構築し、信頼バイナリ名を生成するために使用される(例えば、異なるレベルの暗号化を用いて)。 (A9) A method according to any of A1-A8, wherein the hash function is or includes a secure hash algorithm (e.g., a SHA-256 hash function). In some implementations, the same hash function is used to construct the trusted binary and generate the trusted binary name. In some implementations, different hash functions are used to construct the trusted binary and generate the trusted binary name (e.g., using different levels of encryption).

(A10)複数の実行可能関数の各実行可能関数についてのそれぞれの関数ダイジェストは、安全なハッシュアルゴリズムを使用して生成される、A1~A9のいずれかに記載の方法。いくつかの実装形態では、実行可能関数の関数ダイジェストを生成することは、実行可能関数の全ての静的成分に安全なハッシュアルゴリズムを適用することを含む。 (A10) A method according to any one of A1 to A9, wherein the respective function digest for each executable function of the plurality of executable functions is generated using a secure hash algorithm. In some implementations, generating the function digest for the executable function includes applying the secure hash algorithm to all static components of the executable function.

(A11)信頼データベースは、コンピューティングデバイスのメモリ(例えば、信頼ストア338の一部として)に記憶される、A1~A10のいずれかに記載の方法。いくつかの実装形態では、信頼データベースは、リレーショナルデータベース(例えば、構造化クエリ言語(SQL)データベース)である。いくつかの実装形態では、信頼ストアは、信頼バイナリ(例えば、信頼バイナリ340)、ブロックリスト(例えば、ブロックリスト342)、有効性認証のためのブロックチェーン(例えば、ブロックチェーン情報344)、及び1つ以上のセキュリティポリシー(例えば、ポリシー情報346)を含む。いくつかの実装形態では、信頼ストアは、仮想マシン(例えば、コンピューティングデバイス300のメモリ内の仮想マシン)上で動作する。 (A11) The method of any of A1-A10, wherein the trust database is stored in memory of the computing device (e.g., as part of the trust store 338). In some implementations, the trust database is a relational database (e.g., a Structured Query Language (SQL) database). In some implementations, the trust store includes trust binaries (e.g., trust binaries 340), a block list (e.g., block list 342), a blockchain for validity authentication (e.g., blockchain information 344), and one or more security policies (e.g., policy information 346). In some implementations, the trust store runs on a virtual machine (e.g., a virtual machine in memory of the computing device 300).

(A12)コンピューティングデバイスから離れたサーバシステム(例えば、信頼センタ402)に信頼バイナリを送信することを更に含む、A1~A11のいずれかに記載の方法。いくつかの実装形態では、サーバシステムは、信頼バイナリを信頼バイナリのホワイトリストに追加する。いくつかの実装形態では、サーバシステムは、信頼バイナリを1つ以上の他の信頼ストアに送信する。 (A12) The method of any of A1-A11, further comprising transmitting the trusted binary to a server system (e.g., trust center 402) remote from the computing device. In some implementations, the server system adds the trusted binary to a whitelist of trusted binaries. In some implementations, the server system transmits the trusted binary to one or more other trust stores.

(A13)コンピューティングデバイスから離れたサーバシステムに実行可能コードを送信することを更に含む、A1~A12のいずれかに記載の方法。いくつかの実装形態では、信頼バイナリは、暫定信頼バイナリであり、コンピューティングシステムは、実行可能コードを有効性認証するために、実行可能コードをサーバシステムに送信する。いくつかの実装形態では、実行可能コードを有効性認証することは、デジタル署名をチェックすること、署名証明書パスをチェックすること、1つ以上のブラックリスト(例えば、ローカル及び外部)に対して実行可能ファイルをチェックすること、及び1つ以上のホワイトリストに対して実行可能ファイルをチェックすること、のうちの1つ以上を含む。いくつかの実装形態では、コンピューティングシステムは、実行可能コードの送信に応答して、サーバシステムから通知を受信する。いくつかの実装形態では、実行可能コードを有効性認証する通知に従って、コンピューティングシステムは、暫定信頼バイナリを(非暫定)信頼バイナリに変更する。いくつかの実装形態では、実行可能コードを無効性認証する通知に従って、コンピューティングシステムは、プログラムを削除するか、又はプログラムが将来実行されるのを防止する。いくつかの実装形態では、実行可能コードを無効性認証する通知に従って、プログラム(又は実行可能コード)がブロックリスト342に追加される。いくつかの実装形態では、実行可能コードを無効性認証する通知に従って、暫定信頼バイナリは、信頼ストアから削除される、及び/又はブロックリスト情報に追加される。 (A13) The method according to any one of A1 to A12, further comprising transmitting the executable code to a server system separate from the computing device. In some implementations, the trusted binary is a provisionally trusted binary, and the computing system transmits the executable code to the server system for validating the executable code. In some implementations, validating the executable code includes one or more of checking a digital signature, checking a signature certificate path, checking the executable file against one or more blacklists (e.g., local and external), and checking the executable file against one or more whitelists. In some implementations, the computing system receives a notification from the server system in response to transmitting the executable code. In some implementations, in accordance with the notification validating the executable code, the computing system changes the provisionally trusted binary to a (non-provisional) trusted binary. In some implementations, in accordance with the notification validating the executable code, the computing system deletes the program or prevents the program from being executed in the future. In some implementations, in accordance with the notification validating the executable code, the program (or executable code) is added to the block list 342. In some implementations, following notification that the executable code is invalid, the provisionally trusted binary is removed from the trust store and/or added to the block list information.

(A14)A1~A13のいずれかに記載の方法であって、(i)デバイスドライバのプログラムの実行可能コードを取得することと、(ii)実行可能コードから複数の実行可能関数を識別することと、(iii)複数の実行可能関数の各実行可能関数について、それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、(iv)複数の実行可能関数の各実行可能関数についてそれぞれのダイジェストを含むそれぞれの信頼バイナリを構築することと、(v)実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成することと、(vi)信頼バイナリ名を利用して、信頼データベース(例えば、信頼ストア338)内の信頼バイナリをインデックス化することと、を更に含む、方法。 (A14) A method according to any one of A1 to A13, further comprising: (i) obtaining executable code of a device driver program; (ii) identifying a plurality of executable functions from the executable code; (iii) for each executable function of the plurality of executable functions, generating a respective function digest based on one or more static components of the respective executable function; (iv) constructing a respective trusted binary for each executable function of the plurality of executable functions, the respective digest included therein; (v) generating a trusted binary name by applying a hash function to a header of the executable code; and (vi) indexing the trusted binary in a trust database (e.g., trust store 338) using the trusted binary name.

(B1)別の態様では、いくつかの実装形態は、信頼バイナリを使用するための方法(例えば、方法700)を含む。方法は、メモリ(例えば、メモリ314)及び1つ以上のプロセッサ(例えば、CPU302(複数可))を有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。この方法は、(i)信頼エージェント(例えば、信頼エージェント324)を実行することと、(ii)信頼エージェントを介して、プログラム(例えばアプリケーション322)の今後の実行を検出することと、(iii)検出に応答して、メモリ内の信頼ストア(例えば、信頼ストア338)からプログラムのための信頼バイナリ(例えば、信頼バイナリ340)を取得することと、(iv)プログラムの実行可能コードをプログラムのための取得された信頼バイナリと比較することによって、プログラムの真正性を確認することと、(v)プログラムの確認された真正性に従って、プログラムの実行を許可することと、(vi)プログラムの実行を監視することによって、プログラム内の実行可能関数の今後の実行を識別することと、(vii)実行可能関数の今後の実行を識別することに応答して、信頼バイナリから、実行可能関数に対応する関数ダイジェスト(例えば、関数ダイジェスト343)を取得することと、(viii)実行可能関数の実行可能コードを取得された関数ダイジェストと比較することによって、実行可能関数の真正性を確認することと、(ix)実行可能関数の確認された真正性に従って、実行可能関数の実行を許可することと、を含む。いくつかの実装形態では、プログラムの真正性を確認することは、プログラムによって使用される1つ以上の共有ライブラリの真正性を確認することを含む(例えば、対応する信頼バイナリと比較することによって)。いくつかの実装形態では、信頼バイナリを取得することは、プログラムのバイナリ名を生成することと、生成されたバイナリ名を使用して信頼ストア内の信頼バイナリを検索することとを含む。いくつかの実装形態では、プログラムの実行可能コードをプログラムのための取得された信頼バイナリと比較することは、実行可能コードのダイジェストを生成すること、及び生成されたダイジェストを取得された信頼バイナリと比較することを含む。いくつかの実装形態では、実行可能関数の実行可能コードを取得された関数ダイジェストと比較することは、実行可能関数の実行可能コードのダイジェストを生成すること、及び生成されたダイジェストを取得された関数ダイジェストと比較することを含む。 (B1) In another aspect, some implementations include a method (e.g., method 700) for using a trusted binary. The method is performed on a computing system (e.g., computing device 300) having a memory (e.g., memory 314) and one or more processors (e.g., CPU 302(s)). The method includes (i) executing a trust agent (e.g., trust agent 324); (ii) detecting, via the trust agent, a future execution of a program (e.g., application 322); (iii) in response to the detection, retrieving a trusted binary (e.g., trusted binary 340) for the program from a trust store in memory (e.g., trust store 338); (iv) verifying authenticity of the program by comparing executable code of the program with the retrieved trusted binary for the program; and (v) in accordance with the verified authenticity of the program, The method includes: allowing the program to run; (vi) identifying future executions of executable functions in the program by monitoring the execution of the program; (vii) in response to identifying future executions of the executable function, obtaining a function digest (e.g., function digest 343) corresponding to the executable function from the trusted binary; (viii) verifying the authenticity of the executable function by comparing the executable code of the executable function with the obtained function digest; and (ix) allowing execution of the executable function according to the verified authenticity of the executable function. In some implementations, verifying the authenticity of the program includes verifying the authenticity of one or more shared libraries used by the program (e.g., by comparing with a corresponding trusted binary). In some implementations, obtaining the trusted binary includes generating a binary name for the program and using the generated binary name to look up the trusted binary in a trust store. In some implementations, comparing the executable code of the program with the obtained trusted binary for the program includes generating a digest of the executable code and comparing the generated digest to the obtained trusted binary. In some implementations, comparing the executable code of the executable function with the obtained function digest includes generating a digest of the executable code of the executable function and comparing the generated digest with the obtained function digest.

(B2)信頼エージェントを実行することは、入力/出力(I/O)検査のための複数のカーネルフックを確立することを含む、B1に記載の方法。例えば、信頼エージェント324のカーネルエージェント326は、起動手順の一部として複数のカーネルフックを確立する。 (B2) The method of B1, wherein executing the trusted agent includes establishing multiple kernel hooks for input/output (I/O) inspection. For example, kernel agent 326 of trusted agent 324 establishes multiple kernel hooks as part of a startup procedure.

(B3)プログラムの今後の実行を検出することは、プログラムに対応するメモリ要求を識別することを含む、B1又はB2に記載の方法。例えば、カーネルエージェント326は、メモリバッファにロードされたプログラムのためのバイナリファイルを検出する。 (B3) The method of B1 or B2, wherein detecting future execution of the program includes identifying a memory request corresponding to the program. For example, the kernel agent 326 detects a binary file for the program loaded into a memory buffer.

(B4)プログラムの実行可能関数の今後の実行を識別することは、プログラムによって行われたライブラリ関数呼び出しをインターセプトすることを含む、B1~B3のいずれかに記載の方法。例えば、共有ライブラリ内の関数への呼び出し。いくつかの実装形態では、共有ライブラリ内の関数への呼び出しを検出することに応答して、信頼エージェントは、共有ライブラリのための信頼バイナリを取得し、呼び出された関数のダイジェストを、共有ライブラリのための信頼バイナリ内の対応する関数ダイジェストと比較する。 (B4) A method according to any of B1-B3, wherein identifying future executions of executable functions of the program includes intercepting a library function call made by the program. For example, a call to a function in a shared library. In some implementations, in response to detecting a call to a function in the shared library, the trust agent obtains a trusted binary for the shared library and compares a digest of the called function to a corresponding function digest in the trusted binary for the shared library.

(B5)プログラムの実行を監視することは、プログラムのシステムレベルの動作を監視することを含む、B1~B4のいずれかに記載の方法。いくつかの実装形態では、システムレベルの動作は、ファイルI/O動作、レジストリI/O動作、スレッド開始及び停止動作、並びに画像ロード及びアンロード動作のうちの1つ以上を含む。 (B5) A method according to any one of B1 to B4, wherein monitoring the execution of the program includes monitoring system level operations of the program. In some implementations, the system level operations include one or more of file I/O operations, registry I/O operations, thread start and stop operations, and image load and unload operations.

(B6)信頼エージェントがコンピューティングシステムの起動時に実行される、B1~B5のいずれかに記載の方法。いくつかの実装形態では、信頼エージェントは、コンピューティングシステムのオペレーティングシステムに固有である。例えば、第1のタイプの信頼エージェントは、Windowsオペレーティングシステムに使用され、第2のタイプの信頼エージェントは、Androidオペレーティングシステムに使用され、第3のタイプの信頼エージェントは、iPhoneオペレーティングシステム(iOS)に使用され、第4のタイプの信頼エージェントは、Linuxオペレーティングシステムに使用される。 (B6) A method according to any of B1 to B5, in which the trust agent is executed at startup of the computing system. In some implementations, the trust agent is specific to the operating system of the computing system. For example, a first type of trust agent is used for Windows operating systems, a second type of trust agent is used for Android operating systems, a third type of trust agent is used for iPhone operating systems (iOS), and a fourth type of trust agent is used for Linux operating systems.

(B7)信頼エージェントは、カーネルレベルドライバ(例えば、カーネルエージェント326)を含む、B1~B6のいずれかに記載の方法。いくつかの実装形態では、カーネルレベルドライバは、コンピューティングシステム上のリング-0で動作するデバイスドライバである。 (B7) A method according to any one of B1 to B6, in which the trusted agent includes a kernel-level driver (e.g., kernel agent 326). In some implementations, the kernel-level driver is a device driver that operates in ring-0 on the computing system.

(B8)信頼エージェントは、通信サービス(例えば、通信サービス328)、ファイルモニタ(例えば、バイナリモニタ330)、インストーラ(例えば、インストーラ334)、及びダッシュボードマネージャ(例えば、ダッシュボードモジュール332)を含む、B1~B7のいずれかに記載の方法。いくつかの実装形態では、通信サービスは、カーネルドライバ、ファイルモニタ、ダッシュボードマネージャ、及び信頼センタの間の通信を取り扱うユーザモード特権プロセスを含む。いくつかの実装形態では、通信サービスは、ポリシー更新、信頼バイナリ更新、及び/又はソフトウェア更新を受信するために、信頼センタと(例えば、周期的に)通信する。いくつかの実装形態では、ファイルモニタは、信頼バイナリを作成、記憶、及び有効性認証する。いくつかの実装形態では、ファイルモニタは、プログラム及び関数を有効性認証する(及び対応するアラートを生成する)ために、コンピューティングデバイスのメモリを監視する。いくつかの実装形態では、ファイルモニタは、低い優先順位で特権サービスとして実行される(例えば、スペアカーネルサイクルを使用する)。いくつかの実装形態では、ダッシュボードマネージャは、アラートの閲覧及びエクスポート、新規の(暫定)信頼バイナリの作成、信頼エージェント設定及び/又はポリシーの修正を可能にする。いくつかの実装形態では、インストーラは、コンピューティングシステムをプローブし、実行可能ファイル及びコードを発見し、(例えば、信頼センタ402から)信頼バイナリを要求し、信頼エージェントの他の構成要素(例えば、カーネルエージェント326)をインストールする。 (B8) A method according to any of B1 to B7, wherein the trust agent includes a communication service (e.g., communication service 328), a file monitor (e.g., binary monitor 330), an installer (e.g., installer 334), and a dashboard manager (e.g., dashboard module 332). In some implementations, the communication service includes a user mode privileged process that handles communication between the kernel driver, the file monitor, the dashboard manager, and the trust center. In some implementations, the communication service communicates (e.g., periodically) with the trust center to receive policy updates, trusted binary updates, and/or software updates. In some implementations, the file monitor creates, stores, and validates trusted binaries. In some implementations, the file monitor monitors the memory of the computing device to validate programs and functions (and generate corresponding alerts). In some implementations, the file monitor runs as a privileged service with low priority (e.g., uses spare kernel cycles). In some implementations, the dashboard manager allows viewing and exporting alerts, creating new (provisional) trusted binaries, and modifying trust agent configuration and/or policies. In some implementations, the installer probes the computing system, discovers executable files and code, requests trusted binaries (e.g., from the trust center 402), and installs other components of the trust agent (e.g., the kernel agent 326).

(B9)B1~B8のいずれかに記載の方法であって、信頼エージェントを実行することは、(i)信頼エージェントの実行可能コードをメモリにロードすることと、(ii)信頼エージェントのための信頼バイナリを取得することと、(iii)ロードされた実行可能コードを取得された信頼バイナリと比較することによって、信頼エージェントの真正性を確認することと、を含む、方法。いくつかの実装形態では、真正性を確認することは、信頼エージェントのファイル、フォルダ、レジストリ設定、及び構成設定への不正アクセスをチェックすることを含む(例えば、信頼ストアのブロックチェーン上で識別証明動作を実行することによって)。いくつかの実装形態では、ロードされた実行可能コードを取得された信頼バイナリと比較することは、ロードされた実行可能コードのダイジェストを生成すること、及び生成されたダイジェストを取得された信頼バイナリと比較することを含む。 (B9) A method according to any one of B1 to B8, wherein executing the trust agent includes (i) loading executable code of the trust agent into memory, (ii) obtaining a trusted binary for the trust agent, and (iii) verifying authenticity of the trust agent by comparing the loaded executable code with the obtained trusted binary. In some implementations, verifying authenticity includes checking for unauthorized access to files, folders, registry settings, and configuration settings of the trust agent (e.g., by performing a proof of identity operation on a blockchain of a trust store). In some implementations, comparing the loaded executable code with the obtained trusted binary includes generating a digest of the loaded executable code and comparing the generated digest with the obtained trusted binary.

(B10)B1~B9のいずれかに記載の方法であって、(i)信頼エージェントを介して、第2のプログラムの今後の実行を検出することと、(ii)信頼ストアが第2のプログラムに対応する信頼バイナリを含まないことを決定することと、(iii)決定(例えば、図7Cを参照して前述した動作738、740、及び742)に従って是正アクションを開始することと、を更に含む、方法。 (B10) A method according to any one of B1 to B9, further comprising: (i) detecting, via a trusted agent, a future execution of the second program; (ii) determining that the trust store does not contain a trusted binary corresponding to the second program; and (iii) initiating a corrective action in accordance with the determination (e.g., acts 738, 740, and 742 described above with reference to FIG. 7C).

(B11)B10に記載の方法であって、是正アクションは、(i)第2のプログラムがコンピューティングシステム上で実行されるのを防止することと、(ii)第2のプログラムに関する情報をフォレンジックログに記憶することと、(iii)第2のプログラムのための暫定(ローカル)信頼バイナリを生成することと、のうちの1つ以上を含む、方法。いくつかの実装形態では、フォレンジックログ及び対応する通知は、信頼センタに送信される。いくつかの実装形態では、第2のプログラムのコピーは、分析及び検証のために信頼センタに送信される。いくつかの実装形態では、検証は、ウイルススキャン、ブロックリストチェック、署名検証、証明書チェーン検証、及び脆弱性分析のうちの1つ以上を含む。いくつかの実装形態では、信頼センタは、検証の結果に基づいて、コンピューティングシステムに応答を送信する。いくつかの実装形態では、第2のプログラムを有効性認証する通知に従って、コンピューティングシステムは、暫定信頼バイナリを(非暫定)信頼バイナリに変更する。いくつかの実装形態では、第2のプログラムを無効性認証する通知に従って、コンピューティングシステムは、第2のプログラムを削除するか、又は第2にプログラムが将来実行されるのを防止する。いくつかの実装形態では、第2のプログラムを無効性認証する通知に従って、第2のプログラムがブロックリストに追加される。いくつかの実装形態では、第2のプログラムを無効性認証する通知に従って、暫定信頼バイナリは、信頼ストアから削除される、及び/又はブロックリスト情報に追加される。 (B11) The method of B10, wherein the corrective action includes one or more of: (i) preventing the second program from executing on the computing system; (ii) storing information about the second program in a forensic log; and (iii) generating a provisional (local) trusted binary for the second program. In some implementations, the forensic log and the corresponding notification are sent to a trust center. In some implementations, a copy of the second program is sent to the trust center for analysis and verification. In some implementations, the verification includes one or more of a virus scan, a block list check, a signature verification, a certificate chain verification, and a vulnerability analysis. In some implementations, the trust center sends a response to the computing system based on the results of the verification. In some implementations, in accordance with the notification validating the second program, the computing system changes the provisionally trusted binary to a (non-provisionally) trusted binary. In some implementations, in response to the notification validating the second program, the computing system removes the second program or prevents the second program from being executed in the future. In some implementations, in response to the notification validating the second program, the second program is added to a block list. In some implementations, in response to the notification validating the second program, the provisionally trusted binary is removed from the trust store and/or added to the block list information.

(B12)是正アクションは、暫定信頼バイナリを生成することを含み、方法は、有効性認証のために第2のプログラムの実行可能コードを信頼センタ(例えば、信頼センタ510)に送信することを更に含む、B10又はB11に記載の方法。いくつかの実装形態では、実行可能コードを信頼センタに送信することに応答して、信頼エージェントは、暫定信頼バイナリが信頼バイナリに変換されるべきかどうかを示す有効性認証応答を受信する。 (B12) The method of B10 or B11, wherein the corrective action includes generating an interim trusted binary, and the method further includes sending executable code of the second program to a trust center (e.g., trust center 510) for validity authentication. In some implementations, in response to sending the executable code to the trust center, the trust agent receives a validity authentication response indicating whether the interim trusted binary should be converted to a trusted binary.

(B13)是正アクションは、1つ以上の対策(例えば、方法700の動作752に関して前述した対策)を適用することを含む、B10~B12のいずれかに記載の方法。いくつかの実装形態では、対策は、ヒープスプレー、反射性注入、読み取りバッファリング、ブロックされたIPアドレスへのアクセス、不正な関数呼び出し、悪意のあるスクリプト(ジャバスクリプト)の実行、特権改ざん、シェルコードバッファリング、及び信頼エージェント改ざんを監視することを含む。 (B13) A method according to any of B10-B12, wherein the corrective action includes applying one or more countermeasures (e.g., the countermeasures described above with respect to operation 752 of method 700). In some implementations, the countermeasures include monitoring for heap spray, reflective injection, read buffering, access to blocked IP addresses, illegal function calls, malicious script (Javascript) execution, privilege tampering, shellcode buffering, and trusted agent tampering.

(B14)是正アクションは、第2のプログラムのための信頼バイナリについてのクエリを信頼センタ(例えば、信頼センタ510)に送信することを含む、B10~B13のいずれかに記載の方法。いくつかの実装形態では、クエリに応答して、信頼センタは、第2のプログラムのための信頼バイナリを送信するか、又は信頼センタが第2のプログラムのための信頼バイナリを含まないという指標を送信するかのいずれかを行う。 (B14) A method according to any of B10-B13, wherein the corrective action includes sending a query to a trust center (e.g., trust center 510) for a trusted binary for the second program. In some implementations, in response to the query, the trust center either sends the trusted binary for the second program or sends an indication that the trust center does not include a trusted binary for the second program.

(B15)コンピューティングデバイスのための信頼ポリシーを取得することを更に含み、開始された是正アクションが信頼ポリシーに従って選択される、B10~B14のいずれかに記載の方法。例えば、コンピューティングデバイスは、OTデバイスであり、信頼ポリシーは、任意の信頼できない実行を防止することを指示する。別の例として、コンピューティングデバイスはITデバイスであり、信頼ポリシーは、信頼できない実行を許可するが、対策及び/又は条件(例えば、監視及び記録)を適用することを指示する。いくつかの実装形態では、信頼ポリシーは、是正アクション設定、更新設定、及び展開設定を含む。 (B15) The method of any of B10 to B14, further comprising obtaining a trust policy for the computing device, and the initiated corrective action is selected according to the trust policy. For example, the computing device is an OT device, and the trust policy dictates that any untrusted execution is prevented. As another example, the computing device is an IT device, and the trust policy dictates that untrusted execution is permitted, but that countermeasures and/or conditions (e.g., monitoring and logging) are applied. In some implementations, the trust policy includes corrective action settings, update settings, and deployment settings.

(B16)B1~B15のいずれかに記載の方法であって、(i)信頼エージェントを介して、第2のプログラム(例えば、アプリケーション322)の今後の実行を検出することと、(ii)検出に応答して、信頼ストアから第2のプログラムのための第2の信頼バイナリ(例えば、信頼バイナリ340-2)を取得することと、(iii)第2の信頼バイナリとの比較(例えば、実行可能コードのハッシュと第2の信頼バイナリのダイジェストとの比較)に基づいて、第2のプログラムの実行可能コードの1つ以上の変更を識別することと、(iv)1つ以上の変更の識別に従って、是正アクションを開始することと、を更に含む、方法。 (B16) A method according to any one of B1 to B15, further comprising: (i) detecting, via a trust agent, a future execution of a second program (e.g., application 322); (ii) responsive to the detection, retrieving a second trusted binary (e.g., trusted binary 340-2) for the second program from a trust store; (iii) identifying one or more modifications to the executable code of the second program based on a comparison with the second trusted binary (e.g., a comparison of a hash of the executable code with a digest of the second trusted binary); and (iv) initiating a corrective action in accordance with the identification of the one or more modifications.

(B17)B1~B16のいずれかに記載の方法であって、(i)プログラムの実行を監視しながら、プログラムの第2の実行可能関数の今後の実行を識別することと、(ii)第2の実行可能関数の今後の実行を識別することに応答して、信頼バイナリが第2の実行可能関数についての関数ダイジェストを含まないと決定することと、(iii)決定に従って是正アクションを開始することと、を更に含む、方法。 (B17) A method according to any one of B1 to B16, further comprising: (i) identifying a future execution of a second executable function of the program while monitoring the execution of the program; (ii) in response to identifying a future execution of the second executable function, determining that the trusted binary does not include a function digest for the second executable function; and (iii) initiating a corrective action in accordance with the determination.

(B18)B17に記載の方法であって、是正アクションは、(i)第2の実行可能関数の実行を防止することと、(ii)プログラムの実行を停止することと、(iii)第2の実行可能関数に関する情報をフォレンジックログに記憶することと、(iv)第2の実行可能関数についての暫定関数ダイジェストを生成することと、のうちの1つ以上を含む、方法。 (B18) The method of B17, wherein the corrective action includes one or more of: (i) preventing execution of the second executable function; (ii) stopping execution of the program; (iii) storing information about the second executable function in a forensic log; and (iv) generating a tentative function digest for the second executable function.

(B19)B1~B18のいずれかに記載の方法であって、(i)プログラムの第2の実行可能関数の今後の実行を識別することと、(ii)第2の実行可能関数の今後の実行を識別することに応答して、信頼バイナリから、第2の実行可能関数に対応する第2の関数ダイジェストを取得することと、(iii)第2の関数ダイジェストとの比較に基づいて、第2の実行可能関数の1つ以上の変更を識別することと、(iv)第2の実行可能関数の1つ以上の変更の識別に従って、是正アクションを開始することと、を更に含む、方法。 (B19) A method according to any one of B1 to B18, further comprising: (i) identifying a future execution of a second executable function of the program; (ii) obtaining a second function digest corresponding to the second executable function from the trusted binary in response to identifying the future execution of the second executable function; (iii) identifying one or more modifications of the second executable function based on a comparison with the second function digest; and (iv) initiating a corrective action in accordance with the identification of the one or more modifications of the second executable function.

(B20)B1~B19のいずれかに記載の方法であって、(i)信頼エージェントを介して、デバイスドライバの今後の実行を検出することと、(ii)検出に応答して、メモリ内の信頼ストアからデバイスドライバのための信頼バイナリを取得することと、(iii)デバイスドライバの実行可能コードをデバイスドライバのための取得された信頼バイナリと比較することによって、デバイスドライバの真正性を確認することと、(iv)デバイスドライバの確認された真正性に従って、デバイスドライバ内の実行を許可することと、(v)デバイスドライバの実行を監視することによって、デバイスドライバ内の実行可能関数の今後の実行を識別することと、(vi)実行可能関数の今後の実行を識別することに応答して、実行可能関数の関数ダイジェストを信頼バイナリ内の1つ以上の関数ダイジェストと比較することと、(vii)比較の結果に基づいて、実行可能関数の実行を防止することと(例えば、実行可能関数の関数ダイジェストと信頼バイナリ内の1つ以上の関数ダイジェストとの間の一致を識別しないことに従って)、を更に含む、方法。 (B20) A method according to any one of B1 to B19, further comprising: (i) detecting, via a trust agent, a future execution of a device driver; (ii) in response to the detection, retrieving a trusted binary for the device driver from a trust store in memory; (iii) verifying authenticity of the device driver by comparing executable code of the device driver with the retrieved trusted binary for the device driver; (iv) allowing execution in the device driver according to the verified authenticity of the device driver; (v) identifying future execution of an executable function in the device driver by monitoring the execution of the device driver; (vi) in response to identifying future execution of the executable function, comparing a function digest of the executable function with one or more function digests in the trusted binary; and (vii) preventing execution of the executable function based on a result of the comparison (e.g., in accordance with not identifying a match between the function digest of the executable function and one or more function digests in the trusted binary).

(C1)別の態様では、いくつかの実装形態は、ブロックチェーン有効性認証を使用するための方法(例えば、方法800)を含む。方法は、メモリ(例えば、メモリ314)及び1つ以上のプロセッサ(例えば、CPU302(複数可))を有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。この方法は、(i)信頼ストア(例えば、信頼ストア338)のためのブロックチェーン(例えば、ブロックチェーン350)を取得することを含む、コンピューティングシステムのための信頼ストアにアクセスすることと、(ii)信頼ストアへの第1の変更(例えば、第1のトランザクション)を識別することと、(iii)第1の変更を識別することに応答して、第1のブロック(例えば、トランザクションブロック347-1)であって、第1の変更についての第1の暗号化されたダイジェスト(例えば、トランザクションダイジェスト364)及び第1のブロックダイジェスト(例えば、ブロックダイジェスト370)を含む第1のブロック、を生成し、第1のブロックをブロックチェーンに挿入することと、(iv)信頼ストアへの第2の変更(例えば、第2のトランザクション)を識別することと、(v)第2の変更を識別することに応答して、第2のブロック(例えば、トランザクションブロック347-2)であって、第2の変更についての第2の暗号化されたダイジェスト(例えば、トランザクションダイジェスト378)、第2のブロックダイジェスト(例えば、ブロックダイジェスト384)、及び第1のブロックダイジェスト(例えば、前のブロックダイジェスト376)を含む第2のブロック、を生成し、第2のブロックをブロックチェーンに挿入することと、を含む。いくつかの実装形態では、各ブロックは、(例えば、図3Cに示されるように)ブロックについてのブロックダイジェスト及びチェーン内の前のブロックについての前のブロックダイジェストを含む。 (C1) In another aspect, some implementations include a method (e.g., method 800) for using blockchain validity authentication. The method is executed on a computing system (e.g., computing device 300) having a memory (e.g., memory 314) and one or more processors (e.g., CPU 302(s)). The method includes (i) accessing a trust store for the computing system, including obtaining a blockchain (e.g., blockchain 350) for the trust store (e.g., trust store 338); (ii) identifying a first change (e.g., a first transaction) to the trust store; and (iii) in response to identifying the first change, obtaining a first block (e.g., transaction block 347-1) including a first encrypted digest (e.g., transaction digest 364) and a first block digest (e.g., block digest 370) for the first change. (iv) identifying a second change (e.g., a second transaction) to the trust store; and (v) in response to identifying the second change, generating a second block (e.g., transaction block 347-2), the second block including a second encrypted digest (e.g., transaction digest 378) for the second change, a second block digest (e.g., block digest 384), and the first block digest (e.g., previous block digest 376), and inserting the second block into the blockchain. In some implementations, each block includes a block digest for the block and a previous block digest for the previous block in the chain (e.g., as shown in FIG. 3C).

(C2)ブロックチェーンを取得することは、ブロックチェーンのジェネシスブロック(例えば、ジェネシスブロック345)を取得することを含む、C1に記載の方法。いくつかの実装形態では、信頼ストア及びジェネシスブロックは、信頼センタから取得される(例えば、信頼エージェントのインストールプロセスの一部として)。 (C2) The method of C1, wherein obtaining the blockchain includes obtaining a genesis block of the blockchain (e.g., genesis block 345). In some implementations, the trust store and genesis block are obtained from a trust center (e.g., as part of a trust agent installation process).

(C3)ジェネシスブロックは、信頼バイナリ(例えば、信頼センタによって事前にインストールされた信頼バイナリ)の暗号化されたダイジェスト、ブロックタイプ、署名証明書、デジタル署名、及び暗号化されたブロックダイジェストを含む、C2に記載の方法。いくつかの実装形態では、ジェネシスブロックは、作成タイムスタンプを更に含む。いくつかの実装形態では、ジェネシスブロックは、空の前のブロックダイジェストを更に含む。いくつかの実装形態では、署名証明書は、ブロック作成者(例えば、信頼センタ510)の識別を含む。 (C3) The method of C2, wherein the genesis block includes an encrypted digest of a trusted binary (e.g., a trusted binary pre-installed by a trust center), a block type, a signing certificate, a digital signature, and an encrypted block digest. In some implementations, the genesis block further includes a creation timestamp. In some implementations, the genesis block further includes an empty previous block digest. In some implementations, the signing certificate includes an identity of the block creator (e.g., the trust center 510).

(C4)第1のブロックは、ジェネシスブロックの暗号化されたブロックダイジェストを更に含む、C3に記載の方法。例えば、トランザクションブロック347-1は、ジェネシスブロック345のブロックダイジェスト356に対応する前のブロックダイジェスト360を含む。 (C4) The method of C3, wherein the first block further includes an encrypted block digest of the genesis block. For example, transaction block 347-1 includes a previous block digest 360 that corresponds to block digest 356 of genesis block 345.

(C5)第1のブロックは、信頼バイナリタイプ、ブロックリストタイプ、ポリシータイプ、及びローカル信頼バイナリタイプからなる群から選択されるブロックタイプを有する、C1~C4のいずれかに記載の方法。 (C5) A method according to any one of C1 to C4, wherein the first block has a block type selected from the group consisting of a trusted binary type, a block list type, a policy type, and a local trusted binary type.

(C6)信頼ストアに対する第1の変更は、信頼ストアの信頼バイナリに対する変更を含み、第1のブロックは、信頼バイナリブロックタイプを有する、C1~C5のいずれかに記載の方法。いくつかの実装形態では、第1の変更は、信頼ストアへの信頼バイナリの追加である。いくつかの実装形態では、第1の変更は、信頼ストアからの信頼バイナリ(又は暫定信頼バイナリ)の削除である。 (C6) A method according to any one of C1 to C5, wherein the first change to the trust store includes a change to a trusted binary in the trust store, and the first block has a trusted binary block type. In some implementations, the first change is an addition of a trusted binary to the trust store. In some implementations, the first change is a removal of a trusted binary (or a provisionally trusted binary) from the trust store.

(C7)信頼ストアに対する第1の変更は、信頼ストアのポリシーに対する変更(例えば、ポリシー情報346の変更)を含み、第1のブロックは、ポリシーブロックタイプを有する、C1~C5のいずれかに記載の方法。 (C7) A method according to any one of C1 to C5, in which the first change to the trust store includes a change to a policy of the trust store (e.g., a change to policy information 346), and the first block has a policy block type.

(C8)信頼ストアへの第1の変更は、信頼ストアのブロックリストに対する変更を含み、第1のブロックは、ブロックリストのブロックタイプを有する、C1~C5のいずれかに記載の方法。例えば、第1の変更は、ブロックリスト342へのプログラム、アプリケーション、スクリプト、又は関数の追加である。 (C8) A method according to any one of C1 to C5, wherein the first change to the trust store includes a change to a block list of the trust store, and the first block has a block type of the block list. For example, the first change is the addition of a program, application, script, or function to the block list 342.

(C9)信頼ストアに対する第1の変更が、信頼ストアへのローカル(暫定)信頼バイナリの追加を含み、第1のブロックは、ローカル(暫定)信頼バイナリブロックタイプを有する、C1~C5のいずれかに記載の方法。 (C9) A method according to any one of C1 to C5, in which the first modification to the trust store includes adding a local (provisional) trusted binary to the trust store, and the first block has a local (provisional) trusted binary block type.

(C10)第2のブロックを生成した後、信頼ストアの内容を有効性認証するためにブロックチェーンを使用することを含む、信頼ストアのインテグリティを検証することを更に含む、C1~C9のいずれかに記載の方法。いくつかの実装形態では、検証は、信頼エージェントの起動手順に従って発生する。 (C10) The method of any of C1 to C9, further comprising verifying the integrity of the trust store, including using the blockchain to validate the contents of the trust store after generating the second block. In some implementations, the verification occurs according to a trust agent startup procedure.

(C11)信頼ストアのインテグリティを検証することは、第2のブロック内の第1のブロックダイジェスト(例えば、前のブロックダイジェスト376)を第1のブロック内の第1のブロックダイジェスト(例えば、ブロックダイジェスト370)と比較することを含む、識別証明動作を使用してブロックチェーンを有効性認証することを更に含む、C10に記載の方法。 (C11) The method of C10, wherein verifying the integrity of the trust store further includes validating the blockchain using a proof of identity operation, including comparing a first block digest in the second block (e.g., previous block digest 376) to a first block digest in the first block (e.g., block digest 370).

(C12)第1の暗号化されたダイジェストは、2つ以上の安全なハッシュアルゴリズム(例えば、連続したSHA-256動作)を使用して生成される、C1~C11のいずれかに記載の方法。 (C12) A method according to any one of C1 to C11, in which the first encrypted digest is generated using two or more secure hash algorithms (e.g., successive SHA-256 operations).

(C13)ブロックチェーンは、信頼ストア内のテーブルに記憶され、テーブル内の各行は、ブロックチェーンのブロックに対応する、C1~C12のいずれかに記載の方法。例えば、ブロックチェーン350は、信頼ストア338のテーブルに記憶される。 (C13) A method according to any one of C1 to C12, in which the blockchain is stored in a table in a trust store, with each row in the table corresponding to a block of the blockchain. For example, the blockchain 350 is stored in a table in the trust store 338.

(C14)ブロックチェーン内の各ブロックは、それぞれの署名証明書及びそれぞれのデジタル署名を含む、C1~C13のいずれかに記載の方法。いくつかの実装形態では、第1のブロックの署名証明書(例えば、署名証明書372)は、信頼ストアのポリシーテーブルに記憶されたクライアント証明書に対応する。いくつかの実装形態では、第1のブロックのデジタル署名(例えば、デジタル署名374)は、信頼ストアのポリシーテーブルに記憶された暗号化鍵に対応する。 (C14) A method according to any of C1 to C13, wherein each block in the blockchain includes a respective signing certificate and a respective digital signature. In some implementations, the signing certificate of the first block (e.g., signing certificate 372) corresponds to a client certificate stored in a policy table of the trust store. In some implementations, the digital signature of the first block (e.g., digital signature 374) corresponds to an encryption key stored in a policy table of the trust store.

別の態様では、いくつかの実装形態は、1つ以上のプロセッサと、1つ以上のプロセッサに結合されたメモリとを含むコンピューティングシステムを含み、メモリは、1つ以上のプロセッサによって実行されるように構成された1つ以上のプログラムを記憶し、1つ以上のプログラムは、本明細書に記載の方法(例えば、上記のA1~A14、B1~B20、及びC1~C14、並びに以下のE1~E11)のいずれかを実行するための命令を含む。 In another aspect, some implementations include a computing system including one or more processors and a memory coupled to the one or more processors, the memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing any of the methods described herein (e.g., A1-A14, B1-B20, and C1-C14 above, and E1-E11 below).

更に別の態様では、いくつかの実施態様は、コンピューティングシステムの1つ以上のプロセッサによる実行のための1つ以上のプログラムを記憶する非一時的コンピュータ可読記憶媒体を含み、1つ以上のプログラムは、本明細書に記載の方法(例えば、上記のA1~A14、B1~B20、及びC1~C14、並びに以下のE1~E11)のいずれかを実行するための命令を含む。 In yet another aspect, some embodiments include a non-transitory computer-readable storage medium storing one or more programs for execution by one or more processors of a computing system, the one or more programs including instructions for performing any of the methods described herein (e.g., A1-A14, B1-B20, and C1-C14 above, and E1-E11 below).

(D1)更に別の態様では、いくつかの実装形態は、複数の信頼バイナリ(例えば、信頼バイナリ340)を記憶する信頼データベース(例えば、信頼ストア338)を含む非一時的コンピュータ可読記憶媒体を含み、各信頼バイナリは、それぞれの実行可能プログラムに対応しており、複数の信頼バイナリの各信頼バイナリは、(a)それぞれの実行可能プログラムのそれぞれのヘッダ(例えば、ELFヘッダ252)にハッシュ関数を適用することによって生成されたそれぞれの信頼バイナリ名(例えば、信頼バイナリ名341)と、(b)それぞれの実行可能プログラム内で識別されたそれぞれの実行可能関数についてのそれぞれの関数ダイジェスト(例えば、関数ダイジェスト343)であって、それぞれの関数ダイジェストは、それぞれの開始アドレス及びそれぞれの実行可能関数の1つ以上のそれぞれの静的成分に基づいて生成され、複数の信頼バイナリは、それらのそれぞれの信頼バイナリ名を使用して信頼データベース内にインデックス化される、それぞれの関数ダイジェストと、を含む。いくつかの実装形態では、メモリ314は、非一時的コンピュータ可読記憶媒体を含む。 (D1) In yet another aspect, some implementations include a non-transitory computer-readable storage medium including a trust database (e.g., trust store 338) that stores a plurality of trusted binaries (e.g., trusted binaries 340), each trusted binary corresponding to a respective executable program, each trusted binary of the plurality of trusted binaries including (a) a respective trusted binary name (e.g., trusted binary name 341) generated by applying a hash function to a respective header (e.g., ELF header 252) of the respective executable program, and (b) a respective function digest (e.g., function digest 343) for each executable function identified in the respective executable program, each function digest generated based on a respective start address and one or more respective static components of the respective executable function, and the plurality of trusted binaries are indexed into the trust database using their respective trusted binary names. In some implementations, memory 314 includes a non-transitory computer-readable storage medium.

(D2)信頼データベースは、ポリシー情報を更に記憶する、D1に記載の非一時的コンピュータ可読記憶媒体。いくつかの実装形態では、ポリシー情報は、1つ以上のセキュリティポリシー(例えば、セキュリティポリシー504-2)を含む。いくつかの実装形態では、ポリシー情報は、ポリシーテーブル(例えば、コンピューティングデバイスのためのクライアント証明書及び暗号化鍵を含む)を含む。 (D2) The non-transitory computer-readable storage medium of D1, wherein the trust database further stores policy information. In some implementations, the policy information includes one or more security policies (e.g., security policy 504-2). In some implementations, the policy information includes a policy table (e.g., including client certificates and encryption keys for computing devices).

(D3)信頼データベースは、1つ以上のフォレンジックログ(例えば、フォレンジックログ348)を更に記憶する、D1又はD2に記載の非一時的コンピュータ可読記憶媒体。例えば、フォレンジックログは、信頼できないアプリケーション及び関数が検出される場合のメモリバッファ情報、状態情報、及びプロセス情報を含む。 (D3) The non-transitory computer-readable storage medium of D1 or D2, wherein the trust database further stores one or more forensic logs (e.g., forensic log 348). For example, the forensic logs include memory buffer information, state information, and process information when untrusted applications and functions are detected.

(D4)各それぞれの関数ダイジェストは、対応する実行可能関数のハッシュされたバージョンを表す、D1~D3のいずれかに記載の非一時的コンピュータ可読記憶媒体。いくつかの実装形態では、各関数ダイジェストは、対応する実行可能関数の静的部分に安全なハッシュアルゴリズムを適用することによって生成される。 (D4) A non-transitory computer-readable storage medium according to any of D1 to D3, wherein each respective function digest represents a hashed version of the corresponding executable function. In some implementations, each function digest is generated by applying a secure hash algorithm to a static portion of the corresponding executable function.

(D5)信頼データベースは、信頼データベースを認証するためのブロックチェーン情報を更に記憶する、D1~D4のいずれかに記載の非一時的コンピュータ可読記憶媒体。いくつかの実装形態では、ブロックチェーン情報は、信頼データベースに対する各変更についてブロックを有するブロックチェーン(例えば、ブロックチェーン350)を含む。 (D5) The non-transitory computer-readable storage medium of any of D1 to D4, wherein the trust database further stores blockchain information for authenticating the trust database. In some implementations, the blockchain information includes a blockchain (e.g., blockchain 350) having a block for each change to the trust database.

(D6)ブロックチェーン情報は、複数のブロック(例えば、トランザクションブロック347)を含み、複数のブロックの各ブロックがブロックタイプ(例えば、ブロックタイプ368)、署名証明書(例えば、署名証明書372)、デジタル署名(例えば、デジタル署名374)、及びダイジェスト(例えば、トランザクションダイジェスト364)を含む、D5に記載の非一時的コンピュータ可読記憶媒体。 (D6) The non-transitory computer-readable storage medium described in D5, wherein the blockchain information includes a plurality of blocks (e.g., transaction block 347), each of the plurality of blocks including a block type (e.g., block type 368), a signing certificate (e.g., signing certificate 372), a digital signature (e.g., digital signature 374), and a digest (e.g., transaction digest 364).

(D7)複数のブロックは、ジェネシスブロック(例えば、ジェネシスブロック345)及び信頼ストア内で発生した各それぞれの変更(例えば、トランザクションブロック347)に対応するブロックを含む、D6に記載の非一時的コンピュータ可読記憶媒体。 (D7) A non-transitory computer-readable storage medium as described in D6, in which the plurality of blocks includes a genesis block (e.g., genesis block 345) and blocks corresponding to each respective change that occurred within the trust store (e.g., transaction block 347).

(D8)複数のブロックの各ブロックは、信頼バイナリタイプ、ブロックリストタイプ、ポリシータイプ、及びローカルバイナリタイプからなる群から選択されるブロックタイプを有する、D6又はD7に記載の非一時的コンピュータ可読記憶媒体。 (D8) A non-transitory computer-readable storage medium according to D6 or D7, in which each block of the plurality of blocks has a block type selected from the group consisting of a trusted binary type, a block list type, a policy type, and a local binary type.

(D9)複数のブロックの各ブロックについて、それぞれのダイジェストは、少なくとも2つの安全なハッシュアルゴリズムを使用して暗号化される、D6~D8のいずれかに記載の非一時的コンピュータ可読記憶媒体。いくつかの実装形態では、それぞれのダイジェストは、連続した安全なハッシュアルゴリズムを適用することによって暗号化される。いくつかの実装形態では、それぞれのダイジェストは、安全なハッシュアルゴリズムを2回連続して適用することによって暗号化される。 (D9) The non-transitory computer-readable storage medium of any of D6 to D8, wherein for each block of the plurality of blocks, the respective digest is encrypted using at least two secure hash algorithms. In some implementations, the respective digest is encrypted by applying successive secure hash algorithms. In some implementations, the respective digest is encrypted by applying the secure hash algorithm two successive times.

(D10)複数のブロックの各ブロックは、ブロックチェーン内の前のブロックのそれぞれのブロックダイジェストを更に含む、D6~D9のいずれかに記載の非一時的コンピュータ可読記憶媒体。例えば、トランザクションブロック347-2は、トランザクションブロック347-1のブロックダイジェスト370に対応する前のブロックダイジェスト376を含む。 (D10) The non-transitory computer-readable storage medium according to any one of D6 to D9, wherein each block of the plurality of blocks further includes a respective block digest of a previous block in the blockchain. For example, transaction block 347-2 includes a previous block digest 376 that corresponds to block digest 370 of transaction block 347-1.

(D11)D1~D10のいずれかに記載の非一時的コンピュータ可読記憶媒体であって、信頼データベースは、第2の複数の信頼バイナリを更に記憶し、第2の複数の信頼バイナリの各信頼バイナリは、それぞれのデバイスドライバに対応しており、複数の信頼バイナリの各信頼バイナリは、(a)それぞれのデバイスドライバのそれぞれのヘッダにハッシュ関数を適用することによって生成されたそれぞれの信頼バイナリ名(例えば、信頼バイナリ名341)と、(b)それぞれのデバイスドライバで識別された各実行可能関数についてのそれぞれの関数ダイジェスト(例えば、関数ダイジェスト343)であって、それぞれの関数ダイジェストは、それぞれの開始アドレス及びそれぞれの実行可能関数の1つ以上のそれぞれの静的成分に基づいて生成され、第2の複数の信頼バイナリは、それらのそれぞれの信頼バイナリ名を使用して信頼データベース内でインデックス化される、それぞれの関数ダイジェストと、を含む、非一時的コンピュータ可読記憶媒体。 (D11) A non-transitory computer-readable storage medium according to any one of D1 to D10, wherein the trust database further stores a second plurality of trusted binaries, each trusted binary of the second plurality of trusted binaries corresponding to a respective device driver, and each trusted binary of the plurality of trusted binaries includes: (a) a respective trusted binary name (e.g., trusted binary name 341) generated by applying a hash function to a respective header of the respective device driver; and (b) a respective function digest (e.g., function digest 343) for each executable function identified in the respective device driver, each function digest being generated based on a respective start address and one or more respective static components of the respective executable function, and the second plurality of trusted binaries are indexed in the trust database using their respective trusted binary names.

(E1)別の態様では、いくつかの実装形態は、ネットワークトラフィックを監視するための方法を含む。方法は、メモリ及び1つ以上のプロセッサを有するコンピューティングデバイス(例えば、ゲートウェイデバイス108)で実行される。いくつかの実装形態では、方法は、メモリ(例えば、メモリ314)及び1つ以上のプロセッサ(例えば、CPU302(複数可))を有するコンピューティングシステム(例えば、コンピューティングデバイス300)で実行される。この方法は、(i)ネットワークパケットを監視することと、(ii)ネットワークパケット内の実行可能ファイル(例えば、実行可能ファイル200)を識別することと、(iii)信頼ストア(例えば、信頼ストア338)が、実行可能ファイルに対応する信頼バイナリ(例えば、信頼バイナリ340)を含むかどうかを決定することと、(iv)信頼ストアが、実行可能ファイルに対応する信頼バイナリを含まないという決定に従って、是正アクションを実行することと、を含む。 (E1) In another aspect, some implementations include a method for monitoring network traffic. The method is performed on a computing device (e.g., gateway device 108) having a memory and one or more processors. In some implementations, the method is performed on a computing system (e.g., computing device 300) having a memory (e.g., memory 314) and one or more processors (e.g., CPU 302(s)). The method includes (i) monitoring network packets, (ii) identifying an executable file (e.g., executable file 200) in the network packets, (iii) determining whether a trust store (e.g., trust store 338) includes a trusted binary (e.g., trusted binary 340) corresponding to the executable file, and (iv) performing a remedial action in accordance with a determination that the trust store does not include a trusted binary corresponding to the executable file.

(E2)是正アクションは、実行可能ファイルを隔離すること、実行可能ファイルを拒否すること、実行可能ファイルを含むパケット(複数可)をドロップすること、及び実行可能ファイルを含むパケット(複数可)をリダイレクトすること、のうちの1つ以上を含む、E1に記載の方法。いくつかの実装形態では、是正アクションは、アクティブなポリシー(例えば、ポリシー情報346)に従って実行される。 (E2) The method of E1, wherein the corrective action includes one or more of quarantining the executable file, rejecting the executable file, dropping the packet(s) containing the executable file, and redirecting the packet(s) containing the executable file. In some implementations, the corrective action is performed according to an active policy (e.g., policy information 346).

(E3)ネットワークパケットに対してマルウェアチェックを実行すること、ネットワークパケット内のマルウェアを識別すること、及び是正アクションを実行すること、を更に含む、E1又はE2に記載の方法。いくつかの実装形態では、是正アクションは、マルウェアを隔離すること、マルウェアを拒否すること、マルウェアを含むパケット(複数可)をドロップすること、及びマルウェアを含むパケット(複数可)をリダイレクトすること、のうちの1つ以上を含む。 (E3) The method of E1 or E2, further comprising performing a malware check on the network packet, identifying malware in the network packet, and performing a corrective action. In some implementations, the corrective action comprises one or more of quarantining the malware, rejecting the malware, dropping the packet(s) containing the malware, and redirecting the packet(s) containing the malware.

(E4)ネットワークパケットのうちの1つ以上内の制限された情報を識別すること、及び制限された情報を含むネットワークパケットを拒否すること、を更に含む、E1~E3のいずれかに記載の方法。いくつかの実装形態では、制限された情報は、個人識別可能情報(PII)、機密情報、財務情報などを含む。 (E4) A method according to any of E1-E3, further comprising identifying restricted information in one or more of the network packets and rejecting the network packets that include the restricted information. In some implementations, the restricted information includes personally identifiable information (PII), confidential information, financial information, etc.

(E5)ネットワークパケットをプロファイリングすること、並びに優先順位付け、フィルタリング、及びリダイレクトのうちの1つ以上を含む、プロファイリングに基づいてネットワークパケットに対してアクションをとること、を更に含む、E1~E4のいずれかに記載の方法。いくつかの実装形態では、アクションをとることは、攻撃をフィルタリングすること及び/又はビデオデータの優先順位を下げることを含む。いくつかの実装形態では、アクションは、アクティブなポリシー(例えば、ポリシー情報346)に従って行われる。 (E5) A method according to any of E1-E4, further comprising profiling the network packets and taking an action on the network packets based on the profiling, including one or more of prioritizing, filtering, and redirecting. In some implementations, taking the action includes filtering the attack and/or reducing the priority of the video data. In some implementations, the action is taken according to an active policy (e.g., policy information 346).

(E6)プロファイリング及び対応するアクションに関する情報を有するダッシュボードをユーザに提示することを更に含む、E5に記載の方法。いくつかの実装形態では、ダッシュボードはユーザインターフェースである。いくつかの実装形態では、ダッシュボードは、ユーザが(例えば、是正アクション、及び/又はネットワークパケットのフィルタリング、優先順位付け、及びリダイレクトに関する)ポリシールールを設定又は調整することを可能にする。 (E6) The method of E5, further comprising presenting a dashboard to the user having information about the profiling and corresponding actions. In some implementations, the dashboard is a user interface. In some implementations, the dashboard allows the user to set or adjust policy rules (e.g., for corrective actions and/or filtering, prioritization, and redirection of network packets).

(E7)ネットワークパケットのサブセットを特別なアプリケーションに対応すると識別すること、及び特別なアプリケーションについてのポリシーに従って、ネットワークパケットのサブセットに対してポリシーアクションを実行すること、を更に含む、E1~E6のいずれかに記載の方法。 (E7) A method according to any one of E1 to E6, further comprising identifying a subset of the network packets as corresponding to a particular application, and performing a policy action on the subset of the network packets according to a policy for the particular application.

(E8)コンピューティングデバイスがゲートウェイデバイス(例えば、ゲートウェイデバイス108)である、E1~E7のいずれかに記載の方法。 (E8) A method according to any one of E1 to E7, in which the computing device is a gateway device (e.g., gateway device 108).

(E9)ゲートウェイデバイスが、ネットワークオンチップ(NIC)構成要素を含む、E8に記載の方法。例えば、ゲートウェイデバイスは、スマートNICを含む。いくつかの実装形態では、NIC構成要素は、安全なインテリジェントアダプタ(SIA)ネットワークカードである。 (E9) The method of E8, wherein the gateway device includes a network-on-chip (NIC) component. For example, the gateway device includes a smart NIC. In some implementations, the NIC component is a secure intelligent adapter (SIA) network card.

(E10)ゲートウェイデバイスは、x86アプライアンス又は仮想マシン上の命令を含む、E8又はE9に記載の方法。 (E10) The method of E8 or E9, wherein the gateway device includes instructions on an x86 appliance or virtual machine.

(E11)ネットワークパケットは、1つ以上の機械学習アルゴリズムを使用して監視される、E1~E10のいずれかに記載の方法。例えば、付録Aは、機械学習を使用して、ネットワークデータ内の未知の攻撃を識別することについて説明している。 (E11) A method according to any of E1-E10, wherein the network packets are monitored using one or more machine learning algorithms. For example, Appendix A describes using machine learning to identify unknown attacks in network data.

本明細書における本発明の説明で使用されている用語は、単に特定の実装形態を説明する目的のためであり、本発明を制限することを意図していない。本発明の説明及び添付の特許請求の範囲の説明で使用される場合、単数形の「a」、「an」及び「the」は、文脈により明らかにそうではないと指示されない限り、複数の形態も同様に含むことが意図される。「及び/又は(and/or)」という用語は、本明細書で使用するときに、関連する列挙した品目のうちの1つ以上の任意の及び全ての可能な組み合わせを指し、包含することも理解されるであろう。「含む(comprises)」及び/又は「含む(comprising)」という用語は、本明細書で使用される場合、記載された特徴、ステップ、動作、要素、及び/又は構成要素の存在を指定するが、1つ以上の他の特徴、ステップ、動作、要素、構成要素、及び/又はそれらの群の存在又は追加を排除しないことが更に理解されるであろう。 The terms used in the description of the invention herein are merely for the purpose of describing particular implementations and are not intended to limit the invention. When used in the description of the invention and the appended claims, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. It will also be understood that the term "and/or" as used herein refers to and includes any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms "comprises" and/or "comprising" as used herein specify the presence of stated features, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, steps, operations, elements, components, and/or groups thereof.

説明の目的において、前述の説明は、特定の実装を参照して説明されている。しかしながら、以上の例示的な論考は、網羅的であることを意図するものではなく、本発明を開示される正確な形態に限定することを意図するものでもない。上記の教示を考慮して、多くの修正及び変形が可能である。実装形態は、本発明の原理及びその実際の用途を最もよく説明するために選択及び説明され、それによって、当業者が、本発明及び企図される特定の使用に適した様々な修正を伴う様々な実装形態を最もよく利用できるようにする。 For purposes of explanation, the foregoing description has been set forth with reference to specific implementations. However, the above illustrative discussion is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The implementations have been chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling those skilled in the art to best utilize the invention and various implementations with various modifications suited to the particular use contemplated.

Claims (20)

メモリ及び1つ以上のプロセッサを有するコンピューティングデバイスで実行される方法であって、前記方法が、
プログラムの実行可能コードを取得することと、
前記実行可能コードから複数の実行可能関数を識別することと、
前記複数の実行可能関数の各実行可能関数について、前記それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、
前記プログラムのための信頼バイナリを構築することであって、
前記複数の実行可能関数の各実行可能関数の前記それぞれのダイジェストを組み合わせること、及び
前記実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成すること、を含む、構築することと、
前記信頼バイナリ名を利用して、信頼データベース内の前記信頼バイナリをインデックス化することと、を含む、方法。
1. A method executed on a computing device having a memory and one or more processors, the method comprising:
Obtaining executable code for a program;
identifying a plurality of executable functions from the executable code;
generating, for each executable function of the plurality of executable functions, a respective function digest based on one or more static components of the respective executable function;
building a trusted binary for the program,
combining the respective digests of each executable function of the plurality of executable functions; and generating a trusted binary name by applying a hash function to a header of the executable code;
and indexing the trusted binary in a trust database using the trusted binary name.
それぞれの関数について前記それぞれの関数ダイジェストを生成することは、前記それぞれの実行可能関数のそれぞれの開始アドレスに更に基づいている、請求項1に記載の方法。 The method of claim 1, wherein generating the respective function digest for each function is further based on a respective start address of the respective executable function. 前記実行可能コードは、プログラム実行可能ファイル又は実行可能かつリンク可能フォーマット(ELF)ファイルのうちの1つである、請求項1に記載の方法。 The method of claim 1, wherein the executable code is one of a program executable file or an Executable and Linkable Format (ELF) file. 各実行可能関数の前記1つ以上の静的成分は、静的データを表す1つ以上の命令及び/又は1つ以上の部分を含む、請求項1に記載の方法。 The method of claim 1, wherein the one or more static components of each executable function include one or more instructions and/or one or more portions that represent static data. 各実行可能関数の前記1つ以上の静的成分は、動的アドレスフィールドを除外する、請求項1に記載の方法。 The method of claim 1, wherein the one or more static components of each executable function exclude dynamic address fields. 前記信頼バイナリを構築することは、前記プログラムのデータディレクトリ、前記プログラムのセクションテーブル、及び前記プログラムのプログラムテーブルのうちの1つ以上をハッシュすることを更に含む、請求項1に記載の方法。 The method of claim 1, wherein constructing the trusted binary further comprises hashing one or more of the program's data directory, the program's section table, and the program's program table. 前記複数の実行可能関数の各実行可能関数についての前記それぞれの関数ダイジェストは、安全なハッシュアルゴリズムを使用して生成される、請求項1に記載の方法。 The method of claim 1, wherein the respective function digest for each executable function of the plurality of executable functions is generated using a secure hash algorithm. 前記信頼データベースは、前記コンピューティングデバイスの前記メモリに記憶される、請求項1に記載の方法。 The method of claim 1, wherein the trust database is stored in the memory of the computing device. 前記コンピューティングデバイスから離れたサーバシステムに前記信頼バイナリを送信することを更に含む、請求項1に記載の方法。 The method of claim 1, further comprising transmitting the trusted binary to a server system remote from the computing device. コンピューティングデバイスであって、
1つ以上のプロセッサと、
メモリと、
ディスプレイと、
前記メモリに記憶され、前記1つ以上のプロセッサによる実行のために構成された1つ以上のプログラムと、を含み、前記1つ以上のプログラムは、
プログラムの実行可能コードを取得することと、
前記実行可能コードから複数の実行可能関数を識別することと、
前記複数の実行可能関数の各実行可能関数について、前記それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、
前記プログラムのための信頼バイナリを構築することであって、
前記複数の実行可能関数の各実行可能関数の前記それぞれのダイジェストを組み合わせること、及び
前記実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成すること、を含む、構築することと、
前記信頼バイナリ名を利用して、信頼データベース内の前記信頼バイナリをインデックス化することと、のための命令を含む、コンピューティングデバイス。
1. A computing device comprising:
one or more processors;
Memory,
A display and
one or more programs stored in the memory and configured for execution by the one or more processors, the one or more programs comprising:
Obtaining executable code for a program;
identifying a plurality of executable functions from the executable code;
generating, for each executable function of the plurality of executable functions, a respective function digest based on one or more static components of the respective executable function;
building a trusted binary for the program,
combining the respective digests of each executable function of the plurality of executable functions; and generating a trusted binary name by applying a hash function to a header of the executable code;
and indexing the trusted binary in a trust database using the trusted binary name.
それぞれの関数について前記それぞれの関数ダイジェストを生成することは、前記それぞれの実行可能関数のそれぞれの開始アドレスに更に基づいている、請求項10に記載のコンピューティングデバイス。 11. The computing device of claim 10, wherein generating the respective function digest for each function is further based on a respective start address of the respective executable function. 各実行可能関数の前記1つ以上の静的成分は、静的データを表す1つ以上の命令及び/又は1つ以上の部分を含む、請求項10に記載のコンピューティングデバイス。 The computing device of claim 10, wherein the one or more static components of each executable function include one or more instructions and/or one or more portions representing static data. 各実行可能関数の前記1つ以上の静的成分は、動的アドレスフィールドを除外する、請求項10に記載のコンピューティングデバイス。 The computing device of claim 10, wherein the one or more static components of each executable function exclude dynamic address fields. 前記信頼バイナリを構築することは、前記プログラムのデータディレクトリ、前記プログラムのセクションテーブル、及び前記プログラムのプログラムテーブルのうちの1つ以上をハッシュすることを更に含む、請求項10に記載のコンピューティングデバイス。 The computing device of claim 10, wherein constructing the trusted binary further comprises hashing one or more of the program's data directory, the program's section table, and the program's program table. 前記複数の実行可能関数の各実行可能関数についての前記それぞれの関数ダイジェストは、安全なハッシュアルゴリズムを使用して生成される、請求項10に記載のコンピューティングデバイス。 The computing device of claim 10, wherein the respective function digest for each executable function of the plurality of executable functions is generated using a secure hash algorithm. 前記信頼データベースは、前記コンピューティングデバイスの前記メモリに記憶される、請求項10に記載のコンピューティングデバイス。 The computing device of claim 10, wherein the trust database is stored in the memory of the computing device. 前記1つ以上のプログラムは、前記コンピューティングデバイスから離れたサーバシステムに前記信頼バイナリを送信するための命令を更に含む、請求項10に記載のコンピューティングデバイス。 The computing device of claim 10, wherein the one or more programs further include instructions for transmitting the trusted binary to a server system remote from the computing device. 1つ以上のプロセッサと、メモリと、ディスプレイとを有するコンピューティングデバイスによる実行のために構成された1つ以上のプログラムを記憶する非一時的コンピュータ可読記憶媒体であって、前記1つ以上のプログラムは、
プログラムの実行可能コードを取得することと、
前記実行可能コードから複数の実行可能関数を識別することと、
前記複数の実行可能関数の各実行可能関数について、前記それぞれの実行可能関数の1つ以上の静的成分に基づいてそれぞれの関数ダイジェストを生成することと、
前記プログラムのための信頼バイナリを構築することであって、
前記複数の実行可能関数の各実行可能関数の前記それぞれのダイジェストを組み合わせること、及び
前記実行可能コードのヘッダにハッシュ関数を適用することによって、信頼バイナリ名を生成すること、を含む、構築することと、
前記信頼バイナリ名を利用して、信頼データベース内の前記信頼バイナリをインデックス化することと、のための命令を含む、非一時的コンピュータ可読記憶媒体。
A non-transitory computer-readable storage medium storing one or more programs configured for execution by a computing device having one or more processors, a memory, and a display, the one or more programs comprising:
Obtaining executable code for a program;
identifying a plurality of executable functions from the executable code;
generating, for each executable function of the plurality of executable functions, a respective function digest based on one or more static components of the respective executable function;
building a trusted binary for the program,
combining the respective digests of each executable function of the plurality of executable functions; and generating a trusted binary name by applying a hash function to a header of the executable code;
and indexing the trusted binary in a trust database using the trusted binary name.
前記複数の実行可能関数の各実行可能関数についての前記それぞれの関数ダイジェストは、安全なハッシュアルゴリズムを使用して生成される、請求項18に記載の非一時的コンピュータ可読記憶媒体。 The non-transitory computer-readable storage medium of claim 18, wherein the respective function digest for each executable function of the plurality of executable functions is generated using a secure hash algorithm. 各実行可能関数の前記1つ以上の静的成分は、動的アドレスフィールドを除外する、請求項18に記載の非一時的コンピュータ可読記憶媒体。 The non-transitory computer-readable storage medium of claim 18, wherein the one or more static components of each executable function exclude dynamic address fields.
JP2024537985A 2022-03-01 2023-03-01 SYSTEM AND METHOD FOR GENERATING TRUSTED BINARIES - Patent application Pending JP2025504756A (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US17/684,363 US11449602B1 (en) 2022-03-01 2022-03-01 Systems and methods for generating trust binaries
US17/684,363 2022-03-01
US17/688,878 2022-03-07
US17/688,878 US12346430B1 (en) 2022-03-01 2022-03-07 Systems and methods for implementing cybersecurity using trust binaries
US17/735,101 2022-05-02
US17/735,101 US11928205B1 (en) 2022-03-01 2022-05-02 Systems and methods for implementing cybersecurity using blockchain validation
US17/735,087 2022-05-02
US17/735,087 US11822647B1 (en) 2022-03-01 2022-05-02 Data structure for trust store
PCT/US2023/014301 WO2023167946A1 (en) 2022-03-01 2023-03-01 Systems and methods for generating trust binaries

Publications (1)

Publication Number Publication Date
JP2025504756A true JP2025504756A (en) 2025-02-19

Family

ID=85772095

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2024537985A Pending JP2025504756A (en) 2022-03-01 2023-03-01 SYSTEM AND METHOD FOR GENERATING TRUSTED BINARIES - Patent application

Country Status (3)

Country Link
EP (1) EP4487229A1 (en)
JP (1) JP2025504756A (en)
WO (1) WO2023167946A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202270A (en) * 2005-01-18 2006-08-03 Microsoft Corp System and method for validating executable file integrity using partial image hash
JP2012525648A (en) * 2009-04-28 2012-10-22 クアルコム,インコーポレイテッド Binary software analysis
JP2017531236A (en) * 2014-08-13 2017-10-19 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. Cloud-based application security service providing method and system
US20180246717A1 (en) * 2017-02-24 2018-08-30 Microsoft Technology Licensing, Llc Identification of duplicate function implementations

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102250779B1 (en) * 2019-05-14 2021-05-11 단국대학교 산학협력단 Method and apparatus for verifying executable code integrity, embedded device including the same
US11481493B2 (en) * 2019-11-26 2022-10-25 Verizon Patent And Licensing Inc. Systems and methods for generating an inventory of software applications for optimized analysis

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202270A (en) * 2005-01-18 2006-08-03 Microsoft Corp System and method for validating executable file integrity using partial image hash
JP2012525648A (en) * 2009-04-28 2012-10-22 クアルコム,インコーポレイテッド Binary software analysis
JP2017531236A (en) * 2014-08-13 2017-10-19 インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. Cloud-based application security service providing method and system
US20180246717A1 (en) * 2017-02-24 2018-08-30 Microsoft Technology Licensing, Llc Identification of duplicate function implementations

Also Published As

Publication number Publication date
WO2023167946A1 (en) 2023-09-07
EP4487229A1 (en) 2025-01-08

Similar Documents

Publication Publication Date Title
US11449602B1 (en) Systems and methods for generating trust binaries
AU2018204262B2 (en) Automated code lockdown to reduce attack surface for software
KR102419574B1 (en) Systems and methods for correcting memory corruption in computer applications
JP6224173B2 (en) Method and apparatus for dealing with malware
US8474032B2 (en) Firewall+ storage apparatus, method and system
US12111937B2 (en) Memory scan-based process monitoring
US8931086B2 (en) Method and apparatus for reducing false positive detection of malware
US12058149B2 (en) Computer investigation method and system
RU2646352C2 (en) Systems and methods for using a reputation indicator to facilitate malware scanning
US7743260B2 (en) Firewall+storage apparatus, method and system
RU2723665C1 (en) Dynamic reputation indicator for optimization of computer security operations
CN102932329B (en) A kind of method, device and client device that the behavior of program is tackled
AU2021319159B2 (en) Advanced ransomware detection
JP2020522808A (en) Real-time detection of malware and steganography in kernel mode and protection from malware and steganography
CN115701019B (en) Zero-trust network access request processing method and device and electronic equipment
KR20160114037A (en) Automated runtime detection of malware
US20250258916A1 (en) Drift detection in remote computer systems
US11822647B1 (en) Data structure for trust store
US11928205B1 (en) Systems and methods for implementing cybersecurity using blockchain validation
US20240427939A1 (en) Methods and associated computer systems for ensuring the integrity of data
US12346430B1 (en) Systems and methods for implementing cybersecurity using trust binaries
JP2025504756A (en) SYSTEM AND METHOD FOR GENERATING TRUSTED BINARIES - Patent application
CN113836542B (en) Trusted white list matching method, system and device
US20250021645A1 (en) Context-Based Countermeasures for Cybersecurity Threats
HK40081601A (en) Access request processing method, device and electronic apparatus for zero trust network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240722

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250919