US20240031146A1 - Access control interfaces for blockchains - Google Patents
Access control interfaces for blockchains Download PDFInfo
- Publication number
- US20240031146A1 US20240031146A1 US17/984,175 US202217984175A US2024031146A1 US 20240031146 A1 US20240031146 A1 US 20240031146A1 US 202217984175 A US202217984175 A US 202217984175A US 2024031146 A1 US2024031146 A1 US 2024031146A1
- Authority
- US
- United States
- Prior art keywords
- access control
- request
- digital signature
- control server
- smart contract
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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 digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Definitions
- the disclosure generally relates to access control security and, more specifically, to architecture of access control for program protocol recorded on a blockchain.
- Embodiments relate to a computer-implemented method, including: storing a private cryptographic key, wherein the private cryptographic key corresponds to a public cryptographic key, a copy of the public cryptographic key is stored on a blockchain as part of an autonomous program protocol; receiving access control setting related to the autonomous program protocol, the access control setting specifying one or more policies in granting access to the autonomous program protocol; receiving a request for accessing the autonomous program protocol stored on the blockchain; reviewing metadata associated with the request and request content; determining, based at least on the metadata associated with the request, the request is in compliance with the one or more policies specified in the access control setting; creating, using the private cryptographic key, a digital signature for the request; and generating a response to the request, the response including the digital signature, wherein a successful verification of the digital signature using the public cryptographic key stored in the autonomous program protocol is required by the autonomous program protocol to process the request.
- the techniques described herein relate to a computer-implemented method, wherein the digital signature includes context data of the request, such as call data, parameters, functions, nonce, and other account-related data .
- the techniques described herein relate to a computer-implemented method, wherein the request includes a function call to the autonomous program protocol, and the autonomous program protocol is a smart contract.
- the techniques described herein relate to a computer-implemented method, wherein the access control setting includes settings with respect to a plurality of function calls.
- the techniques described herein relate to a computer-implemented method, wherein the access control setting with respect to one of the function calls is unrestricted and the digital signature for the request with respect to the one of the function calls is generated unconditionally. For example, in one case, signature may be generated without a policy. In another case, there would be functions that do not require any signature at all to be processed.
- the techniques described herein relate to a computer-implemented method, wherein determining the request is in compliance with the one or more policies is conducted using a machine learning model.
- the techniques described herein relate to a computer-implemented method, wherein the private cryptographic key is stored at an access control server, and the autonomous program protocol contains code that is generated by the access control server.
- a non-transitory computer-readable medium that is configured to store instructions is described.
- the instructions when executed by one or more processors, cause the one or more processors to perform a process that includes steps described in the above computer-implemented methods or described in any embodiments of this disclosure.
- a system may include one or more processors and memory coupled to the processors that is configured to store instructions. The instructions, when executed by one or more processors, cause the one or more processors to perform a process that includes steps described in the above computer-implemented methods or described in any embodiments of this disclosure.
- FIG. 1 is a block diagram that illustrates a system environment of an example computing server, in accordance with an embodiment.
- FIG. 2 is a block diagram representing an example access control server, in accordance with an embodiment.
- FIG. 3 is a block diagram illustrating an example access control system and the message control flow of the system, in accordance with some embodiments.
- FIG. 4 is a flowchart depicting an example process for providing access control on an autonomous program protocol, in accordance with some embodiments.
- FIG. 5 is a message flowchart depicting an access control process for an autonomous program protocol, in accordance with some embodiments.
- FIG. 6 is a conceptual diagram illustrating a structure of an example neural network is illustrated, in accordance with some embodiments.
- FIG. 7 A is a block diagram illustrating a chain of transactions broadcasted and recorded on a blockchain, in accordance with an embodiment.
- FIG. 7 B is a block diagram illustrating a connection of multiple blocks in a blockchain, in accordance with an embodiment.
- FIG. 8 is a block diagram illustrating components of an example computing machine that is capable of reading instructions from a computer-readable medium and execute them in a processor (or controller).
- FIG. 1 is a block diagram that illustrates a system environment 100 of an example computing server, in accordance with an embodiment.
- the system environment 100 includes a user device 110 , an application publisher 120 , an access control server 130 , a data store 135 , a blockchain 150 , and an autonomous program protocol 155 .
- the entities and components in the system environment 100 communicate with each other through the network 160 .
- the system environment 100 may include different, fewer, or additional components.
- the components in the blockchain system environment 100 may each correspond to a separate and independent entity or may be controlled by the same entity.
- the access control server 130 may control the data store 135 .
- the system environment 100 may include one or more of each of the components.
- the access control server 130 may provide service for multiple application publishers 120 , each of whom has multiple end users that may operate different user devices 110 .
- a component is described in a singular form in this disclosure, it should be understood that in various embodiments the component may have multiple instances.
- a user device may also be referred to as a client device.
- a user device 110 may be controlled by a user who may be the customers of the application publisher 120 , the access control server 130 , or a participant of the blockchain 150 . In some situations, a user may also be referred to as an end user, for example, when the user is the application publisher's customer who uses applications that are published by the application publisher 120 .
- the user device 110 may be any computing device. Examples of user devices 110 include personal computers (PC), desktop computers, laptop computers, tablet computers, smartphones, wearable electronic devices such as smartwatches, or any other suitable electronic devices.
- the user device 110 may include a user interface 115 and an application 122 .
- the user interface 115 may be the interface of the application 122 and allow the user to perform various actions associated with application 122 .
- application 122 may be a distributed application and the user interface 115 may be the frontend.
- the user interface 115 may take different forms.
- the user interface 115 is a software application interface.
- the application publisher 120 may provide a front-end software application that can be displayed on a user device 110 .
- the front-end software application is a software application that can be downloaded and installed on a user device 110 via, for example, an application store (App store) of the user device 110 .
- App store application store
- the front-end software application takes the form of a webpage interface of the application publisher 120 that allows clients to perform actions through web browsers.
- the front-end software application includes a graphical user interface (GUI) that displays various information and graphical elements.
- GUI graphical user interface
- user interface 115 does not include graphical elements but communicates with the application publisher 120 via other suitable ways such as command windows or application program interfaces (APIs).
- An application publisher 120 such as a software company, may be an entity that provides various types of software applications.
- the application publisher 120 may publish and/or operate various types of applications, such as application 122 that is installed at a user device 110 , an autonomous application 124 that may be a decentralized application that is run on a decentralized network or blockchain, and the autonomous program protocol 155 that is recorded on a blockchain 150 .
- the autonomous program protocol 155 may take the form of a smart contract or another type of autonomous algorithm that operates on a blockchain.
- the autonomous application 124 and autonomous program protocol 155 may be applications that have similar natures.
- the autonomous application 124 may also operate on a blockchain and the autonomous application 124 is an example of autonomous program protocol 155 .
- the autonomous application 124 may serve as an interface of the autonomous program protocol 155 .
- the autonomous application 124 may allow a user to access one or more functions of the autonomous program protocol 155 through the interface of autonomous application 124 .
- the application publisher 120 may record a fully autonomous application on the blockchain 150 as the autonomous program protocol 155 and operate different applications, such as the application 122 and autonomous application 124 to allow a user, a device, or an automated agent to interact with the autonomous program protocol 155 .
- the autonomous program protocol 155 published by the application publisher 120 may incorporate certain protocols (e.g., access control protocols) of the access control server 130 to provide security and access control to the autonomous program protocol 155 .
- An access control server 130 may be a centralized server that provides various access control services to provide security to an autonomous program protocol 155 recorded on the blockchain 150 and protect the autonomous program protocol 155 from malicious attacks.
- the services provided by the access control server 130 may include firewall, access control, sandbox testing environment, authentication (e.g., two-factor authentication), authorization, and other suitable cybersecurity services and compliance (e.g., Know Your Customers KYC) services.
- the access control server 130 may be partially centralized and partially decentralized. For example, certain access control policies (e.g., who may access the autonomous program protocol 155 ) may be specified by an application publisher 120 and centrally enforced by the access control server 130 .
- the access control server 130 may also be decentralized and certain services such as authentication services can be carried out autonomously. The detail of the operations and sub-components of the access control server 130 will be further discussed in association with FIG. 2 .
- the data store 135 includes one or more storage units such as memory that takes the form of non-transitory and non-volatile computer storage medium to store various data.
- the computer-readable storage medium is a medium that does not include a transitory medium such as a propagating signal or a carrier wave.
- the data store 135 may be used by the access control server 130 to store data related to the access control server 130 , such as access control policies of various autonomous program protocols 155 and associated authentication criteria.
- the data store 135 communicates with other components by the network 160 . This type of data store 135 may be referred to as a cloud storage server.
- Example cloud storage service providers may include AMAZON AWS, DROPBOX, RACKSPACE CLOUD FILES, AZURE BLOB STORAGE, GOOGLE CLOUD STORAGE, etc.
- the data store 135 is a storage device that is controlled and connected to the access control server 130 .
- the data store 135 may take the form of memory (e.g., hard drives, flash memory, discs, ROMs, etc.) used by the access control server 130 such as storage devices in a storage server room that is operated by the access control server 130 .
- a blockchain 150 may be a public blockchain that is decentralized, a private blockchain, a semi-public blockchain, an execution layer settling data on a public blockchain (e.g., Layer 2 blockchains, rollups), or an application-specific chain.
- a public blockchain network includes a plurality of nodes that cooperate to verify transactions and generate new blocks.
- the generation of a new block may also be referred to as a proposal process, which may be a mining process or a validation process.
- Some of the blockchains 150 support smart contracts, which are a set of code instructions that are stored on a blockchain 150 and are executable when one or more conditions are met. Smart contracts may be examples of autonomous program protocols 155 .
- the set of code instructions of a smart contract may be executed by a computer such as a virtual machine of the blockchain 150 .
- a computer may be a single operation unit in a conventional sense (e.g., a single personal computer) or may be a set of distributed computing devices that cooperate to execute the code instructions (e.g., a virtual machine or a distributed computing system).
- a blockchain 150 may be a new blockchain or an existing blockchain such as BITCOIN, ETHEREUM, EOS, NEO, SOLANA, AVALANCHE, etc.
- the autonomous program protocols 155 may be tokens, smart contracts, Web3 applications, autonomous applications, distributed applications, decentralized finance (DeFi) applications, protocols for decentralized autonomous organizations (DAO), non-fungible tokens (NFT), decentralized exchanges, identity services, blockchain gaming, metaverse protocols, and other suitable protocols and algorithms that may be recorded on a blockchain.
- DeFi decentralized finance
- NFT non-fungible tokens
- decentralized exchanges identity services
- blockchain gaming blockchain gaming
- metaverse protocols and other suitable protocols and algorithms that may be recorded on a blockchain.
- the communications among the user device 110 , the access control server 130 , the autonomous application 124 , the application publisher 120 and the blockchain 150 may be transmitted via a network 160 , for example, via the Internet.
- the network 160 uses standard communications technologies and/or protocols.
- the network 160 can include links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, LTE, 5G, digital subscriber line (DSL), asynchronous transfer mode (ATM), InfiniB and, PCI Express Advanced Switching, etc.
- the networking protocols used on the network 160 can include multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), the file transfer protocol (FTP), etc.
- MPLS multiprotocol label switching
- TCP/IP transmission control protocol/Internet protocol
- UDP User Datagram Protocol
- HTTP hypertext transport protocol
- HTTP simple mail transfer protocol
- FTP file transfer protocol
- the data exchanged over the network 160 can be represented using technologies and/or formats including the hypertext markup language (HTML), the extensible markup language (XML), etc.
- all or some of the links can be encrypted using conventional encryption technologies such as secure sockets layer (SSL), transport layer security (TLS), virtual private networks (VPNs), Internet Protocol security (IPsec), etc.
- SSL secure sockets layer
- TLS transport layer security
- VPNs virtual private networks
- IPsec Internet Protocol security
- the network 160 also includes links and packet switching networks such as
- FIG. 2 is a block diagram representing an example access control server 130 , in accordance with an embodiment.
- the access control server 130 includes configuration and policy engine 210 , account store 215 , access control engine 220 , cryptographic key management engine 225 , firewall engine 230 , machine learning model 235 , sandbox engine 240 , authentication engine 245 , autonomous program protocol building engine 250 , front-end interface 255 , communication terminals 260 , and blockchain interfacing engine 275 .
- the functions of the access control server 130 may be distributed among different components in a different manner than described below. Also, in various embodiments, the access control server 130 may include different, fewer, and/or additional components.
- the access control server 130 may include one or more computers that include one or more processors and memory.
- the memory may store computer code that includes instructions.
- the instructions when executed by one or more processors, cause the processors to perform one or more processes described herein.
- the access control server 130 may take different forms.
- the access control server 130 is a single computer that executes code instructions directly.
- the access control server 130 is a group of computing devices that communicate with each other. The computing devices may be located geographically at the same (e.g., a server room) or different locations.
- the access control server 130 includes multiple nodes that operate in a distributed fashion such as in cloud computing or distributed computing.
- Each node may include one or more computing devices operating together.
- the access control server 130 is decentralized and is operated by different nodes cooperatively to form the access control server 130 .
- the access control server 130 may also include virtual machines. Any computing devices, nodes, virtual machines, singular or plural, may simply be referred to as a computer, a computing device, or a computing server.
- Components of the access control server 130 shown in FIG. 2 individually or in combination, may be a combination of hardware and software and may include all or a subset of the example computing system illustrated and described in FIG. 8 .
- the configuration and policy engine 210 may store and determine rules for various participants in the application environment 100 .
- a policy may be defined and initiated by an application publisher 120 or automatically added or defined by the access control server 130 .
- An application publisher 120 may transmit the policy setting to, or build the policy at, the access control server 130 .
- the configuration and policy engine 210 translates the policy to one or more configurations in the system environment 100 .
- a policy may be an access control policy for an autonomous program protocol 155 .
- the access control server 130 provides security, protection, and access control to an autonomous program protocol 155 .
- An application publisher 120 may specify one or more access control settings that define various criteria for granting access to an autonomous program protocol 155 .
- the access control settings may define who can gain access to an autonomous program protocol 155 and the manner in how a party may access the autonomous program protocol 155 .
- the settings may also define trusted entities in authentication and various security rules in controlling the traffic related to the autonomous program protocol 155 .
- the settings may further define authorization and an access control list that may be specific to an autonomous program protocol 155 .
- a policy may be generic or specific.
- a specific policy may be a policy that is customized or specified by an application publisher 120 who published an autonomous program protocol 155 .
- a specific policy defines a special rule with respect to the security or access control of the autonomous program protocol 155 .
- an application publisher 120 may define a context-specific policy on the access control of the autonomous program protocol 155 .
- a generic policy may be a policy that is commonly beneficial to many autonomous program protocols 155 and may be automatically enforced by the access control server 130 upon request without having the application publisher 120 specifically define the rules in the generic policy.
- a generic policy may be a policy to prevent the autonomous program protocol 155 from a denial-of-service attack or a policy that detects fraudulent transactions.
- the configuration and policy engine 210 may include default rules for a generic policy and may enforce a generic policy for various autonomous program protocols 155 that are vulnerable to common security threads.
- the data store 215 is a database that stores various information with respect to settings provided by customers, such as application publishers 120 , of the access control server 130 .
- the data stored may include a profile of the customer, applications operated by the customer, autonomous program protocols 155 published by the customer, and various access control settings associated with an autonomous program protocol 155 .
- the data store 215 may also include or be in communication with a credential vault that stores user identifiers and passwords and the access control server 130 may perform authentication on behalf of a customer.
- the data store 215 may also store data and metadata related to various transactions involving an autonomous program protocol 155 .
- the transaction records may be used as training samples in one or more machine learning models for identifying normal usage patterns of an autonomous program protocol 155 in distinguishing normal operations from potentially fraudulent operations or malicious activities.
- the access control engine 220 manages the access control of an autonomous program protocol 155 based on the policy settings specified by an application publisher 120 .
- the access control engine 220 may deploy other engines, such as the firewall engine 230 , the machine learning model 235 , the sandbox engine 240 , and the authentication engine 245 to manage the access of an autonomous program protocol 155 .
- the access control engine 220 may control traffic, identify threats, and enforce authentication and authorization for an autonomous program protocol 155 .
- the access control engine 220 may control whether a request to access autonomous program protocol 155 is valid and authorized.
- the request to access may include a function call of the autonomous program protocol 155 . If a request is valid and authorized, the access control engine 220 may generate a digital signature for the request.
- the access control engine 220 may use a private cryptographic key of the access control server 130 to sign the payload of the request.
- the private cryptographic key may be specific to the particular autonomous program protocol 155 .
- the digital signature may be a requirement for autonomous program protocol 155 to recognize the request.
- the autonomous program protocol 155 may store the public cryptographic key of the access control server 130 that corresponds to the private cryptographic key.
- the autonomous program protocol 155 may be configured to use the public cryptographic key to verify the digital signature before a function call may be invoked. If the access control engine 220 determines that the request is not valid or authorized, a digital signature is not generated and the access control engine 220 may block the request and log the request as part of the record.
- the access control engine 220 may also return an error message to the requester. If the autonomous program protocol 155 is configured to require the digital signature of the access control server 130 before a function is invoked, the party sending the request will not be able to gain access to autonomous program protocol 155 without authorization from the access control engine 220 .
- the access control for an autonomous program protocol 155 may be function specific.
- an autonomous program protocol 155 may include more than one function call that can be invoked.
- the application publisher 120 may specify different access control policies for each of the function calls. For example, for certain function calls, the application publisher 120 may allow the general public to use those functions and the access control policies may be more lenient, such as allowing the use without authentication.
- the application publisher 120 may request the access control server 130 to generate digital signatures for all of the requests for those public functions so long as the requests are not malicious.
- the application publisher 120 may even allow the access control server 130 to sign all of the requests regardless of the situation so that access control is essentially bypassed in this type of situation.
- function variants with different methods of authorization may be available on the autonomous program protocols 155 .
- Multiple entry functions may use a combination of signature requirement, oracle list checking, allowlist checking, or no additional security checks. These functions may call the same private function for the autonomous program protocol logic.
- the application publisher 120 may specify access control policies that require authentication and authorization before the access control server 130 generates a digital signature for a request that tries to invoke one of those function calls.
- Restricted functions may also be available only for verified customers such as compliant users for compliance and “know your customer” purposes.
- the nature of access control may vary for different autonomous program protocols 155 , depending on how an application publisher 120 specifies the policies.
- the access control engine 220 may provide firewall service to an autonomous program protocol 155 and protect the autonomous program protocol 155 from malicious attacks.
- the access control engine 220 may provide an authentication service to limit access to another autonomous program protocol 155 .
- the access control engine 220 may use one or more machine learning models 235 to identify abnormal patterns and traffic related to an autonomous program protocol 155 and may react to any potential malicious attack such as by blocking access attempts (e.g., not generating digital signatures) from parties that are identified as potential malicious parties.
- the type of suitable access controls vary among embodiments and may be decided by an application publisher 120 who specifies various policies for an autonomous program protocol 155 .
- the cryptographic key management engine 225 stores and manages one or more keys of the access control server 130 to allow the access control server 130 to participate in various blockchains and to generate digital signatures for requests to access autonomous program protocols 155 .
- the cryptographic key management engine 225 stores various private cryptographic keys of the access control server 130 .
- the access control server 130 may use master private cryptographic keys for different autonomous program protocols 155 .
- the cryptographic key management engine 225 may generate a new pair of private and public cryptographic keys.
- the cryptographic key management engine 225 keeps the private cryptographic key secret and may publish the public cryptographic key to be included in the autonomous program protocol 155 , at a location on the blockchain 150 , or at a certificate authority.
- the cryptographic key management engine 225 upon a request from an application publisher 120 , the cryptographic key management engine 225 generates a pair of private-public cryptographic keys and sends the public cryptographic key to be incorporated in an autonomous program protocol 155 to be recorded on a blockchain 150 .
- the autonomous program protocol 155 may be configured to require verification of the digital signature using the public cryptographic key before all or certain functions in the autonomous program protocol 155 may be called.
- multiple private-public cryptographic key pairs may be generated and multiple public cryptographic keys may be saved in the autonomous program protocol 155 . Aggregated signatures may be used for certain functions.
- the access control server 130 may also participate in activities of various blockchains 150 , such as performing transactions on blockchains 150 .
- the cryptographic key management engine 225 may maintain one or more private keys to allow the access control server 130 to generate blockchain addresses of the access control server 130 and to validate that access control server 130 owns the blockchain-based units that are connected to one or more public cryptographic keys of the access control server 130 .
- a blockchain address of the access control server 130 may be generated by a series of one or more one-way functions from the public key, which is generated from the private key.
- the cryptographic key management engine 225 may derive a blockchain address by hashing the public key, adding prefixes, suffixes, and/or versions to the hash or the public key, creating a checksum, encoding a derived result, and truncating the address.
- the firewall engine 230 may be part of the access control engine 220 and provide network security for an autonomous program protocol 155 by monitoring and controlling incoming and outgoing network traffic based on one or more security rules that are specified by an application publisher 120 .
- the autonomous program protocol 155 may be configured to require a digital signature or another suitable authorization label from the access control server 130 in order to invoke a function of the autonomous program protocol 155 .
- the network traffic related to the autonomous program protocol 155 is routed to the access control server 130 first for the access control server 130 to monitor the traffic.
- the access control server 130 may track and filter network traffic based on rules that are determined by the application publisher 120 .
- the access control server 130 may maintain, in the data store 215 , an access control list that contains a list of permissions associated with the autonomous program protocol 155 .
- the firewall engine 230 may implement various existing firewall techniques in controlling the access to the autonomous program protocol 155 .
- the firewall engine 230 may implement one or more Internet security protocols, such as transport layer security, and may flag or isolate requests that do not pass the security protocols.
- the access control server 130 may include one or more machine learning models 235 that are trained to identify potentially malicious activities, threats, fraudulent transactions or otherwise noncompliant activities that attempt to access an autonomous program protocol 155 .
- the access control server 130 may rely on both predetermined security rules that are specified by an application publisher 120 to identify any invalid or unauthorized requests and a machine learning model 235 that predicts whether a request may be noncompliant even if the request complies with the security rules. How the application publisher 120 or the access control server 130 may define what activity is noncompliant may depend on the context of the autonomous program protocol 155 .
- a machine learning model 235 may be trained to identify potentially fraudulent transactions that may involve maximal extractable value (MEV) transactions, money laundering transaction, or other illegal business activities.
- the autonomous program protocol 155 may be an application that provides utility to a company.
- a machine learning model 235 may be trained to identify potential Internet attacks such as denial-of-access attacks so that the autonomous program protocol 155 is protected from malicious activities.
- a machine learning model 235 may be part of the access control engine 220 and may receive various data and contextual information related to an attempted request for accessing an autonomous program protocol 155 to predict whether the request may be noncompliant.
- the input of the machine learning model 235 may include IP address of the request, the function call in the request, the purported identity of the requestor, parameters used in the request, date and time of the request, frequency of the request, usage patterns of the autonomous program protocol 155 , authentication information of the request, past activities of the requester, past activities of other relevant users, client data (e.g., wallet data, browser data, operating system data), cookies, user behavior on an application frontend, other activities by other users on the blockchain (e.g., to detect correlated attacks), smart contract code (e.g., both source code, if available, and binary code), geographical location estimations from IP addresses, and other suitable information.
- a machine learning model 235 may be trained using past transaction instances as training samples.
- the data and contextual information related to past transaction instances may be stored in the data store 215 .
- Each training sample may be stored as a feature vector that includes the data and contextual information as the dimensions of the vector.
- Each of the past transactions may be labeled as compliant or noncompliant.
- the training samples may also be multi-classes and are labeled with different noncompliant activities.
- Each training label may have multiple dimensions.
- the machine learning model 235 may be trained to predict whether a future request is compliant or noncompliant.
- a sandbox engine 240 may be part of the access control engine 220 and may allow a party that attempts to invoke one or more function calls of the autonomous program protocol 155 to simulate the transaction at the access control server 130 first before actually invoking the autonomous program protocol 155 .
- a party may have a request that is part of a larger algorithm. The request is to be sent to the autonomous program protocol 155 to carry out. The party may use the sandbox engine 240 to simulate the result of the autonomous program protocol 155 carrying out the request and determine whether the result generates the desirable outcome and/or whether the result generates any undesirable side-effects. If the result is satisfactory, the party may request the access control server 130 to digitally sign the actual request and have the request sent to the autonomous program protocol 155 .
- the authentication engine 245 may be part of the access control engine 220 and may allow an application publisher 120 to request the access control server 130 to carry out authentication procedures before a request for accessing an autonomous program protocol 155 is authorized by the access control server 130 .
- the application publisher 120 may design and publish an autonomous program protocol 155 that is reserved for only certain account holders of the application publisher 120 .
- the access control server 130 may carry an authentication process such as verifying the credential of the requester before the access control server 130 authorizes a request for the autonomous program protocol 155 .
- the authentication engine 245 may provide any suitable types of authentication procedures such as two-factor authentication.
- the authentication engine 245 may generate a token code for the requester.
- the authentication engine 245 may set a time limit for the requester to enter the token code before the authentication engine 245 generates a digital signature to authorize the request.
- the autonomous program protocol building engine 250 may be an engine that assists an application publisher 120 to build an autonomous program protocol 155 that incorporates various access control features of the access control server 130 into the autonomous program protocol 155 .
- the autonomous program protocol building engine 250 may allow the application publisher 120 to build an autonomous program protocol 155 such as a smart contract or a Web3 application on the platform provided by the access control server 130 and automatically generate the code that enables the autonomous program protocol 155 to incorporate the access control feature.
- the autonomous program protocol building engine 250 may include compiler, simulation, and debugging features that allow the application publisher 120 to test and simulate the autonomous program protocol 155 before the autonomous program protocol 155 is recorded on a blockchain.
- the autonomous program protocol building engine 250 may also publish the finalized autonomous program protocol 155 on behalf of the application publisher 120 on a blockchain 150 .
- the autonomous program protocol building engine 250 may cause the cryptographic key management engine 225 to generate a new pair of private-public cryptographic keys and store the public cryptographic key as part of the code or a mutable portion (e.g., a variable) of the autonomous program protocol 155 .
- the application publisher 120 may design the autonomous program protocol 155 with multiple function calls. The application publisher 120 may specify which function calls are subject to the access control of the access control server 130 .
- the autonomous program protocol building engine 250 may incorporate the code that requires the autonomous program protocol 155 to use the public cryptographic key to verify the digital signature of the access control server 130 before a function call is invoked.
- the access control part of the code may be generated automatically by autonomous program protocol building engine 250 or by having the application publisher 120 include a code library published by the access control server 130 and inserting the access control code in the source code of the autonomous program protocol 155 .
- the public cryptographic key may be stored in the autonomous program protocol 155 in different manners. In some embodiments, the public cryptographic key may be stored as part of the immutable code of the autonomous program protocol 155 . In some embodiments, the public cryptographic key may be stored as a variable that can only be changed by the original owner who published the autonomous program protocol 155 .
- the autonomous program protocol 155 may include an initial function such as a constructor function that is only called when the autonomous program protocol 155 is first recorded on a blockchain 150 .
- the constructor function may define the original owner that is tractable to a wallet address.
- the original owner who possess the wallet address, may have the authority to upload a public cryptographic key and modify the public cryptographic key for key rotation purposes or for mitigation of providers of access control server 130 .
- An example relevant part of pseudocode of the autonomous program protocol 155 for implementing the public cryptographic key as a variable for the autonomous program protocol 155 is shown below.
- the autonomous program protocol building engine 250 may generate the access control part of the autonomous program protocol 155 and also an interface for accessing the autonomous program protocol 155 .
- the interface for accessing the autonomous program protocol 155 may be an application 122 , an autonomous application 124 , an oracle machine, or another suitable way to interact with the autonomous program protocol 155 .
- the interface may include code that routes any request attempting to reach the autonomous program protocol 155 to access control server 130 first to receive a digital signature from the access control server 130 that indicates the request is authorized by the access control server 130 . Upon the receipt of the digital signature, the interface may forward the request for the requester to sign.
- the user's application e.g., a wallet
- the access control server 130 may include one or more front-end interfaces 255 .
- a front-end interface 255 allows application publishers 120 to manage their profiles, build autonomous program protocol 155 , and manage settings related to access control and security level of the autonomous program protocols 155 published by the application publisher 120 .
- the front-end interface 255 may take different forms.
- a first example of front-end interface 255 is a software application interface that is installed on a user device 110 such as smartphones and computers.
- a second example front-end interface 255 is a webpage interface of the access control server 130 that allows users to manage their accounts through web browsers.
- a third example front-end interface 255 is an application program interface (API) of the access control server 130 that allows users to perform actions through program codes and algorithms.
- API application program interface
- the communication terminal 260 of the access control server 130 provides network and blockchain connections between the access control server 130 and various entities that communicate with the access control server 130 .
- the access control server 130 may serve as a node of various public blockchains to provide up to date information about the state of the blockchain.
- the access control server 130 may include different terminals such as blockchain terminal, asset exchange terminal, and messaging application terminal. Each terminal may manage a data feed or a webpage that publishes information regarding the related services and server status. Each terminal may also include its individual API.
- the blockchain interfacing engine 275 provides various functionalities for the access control server 130 to perform activities on different blockchains 150 that may have their own standards and protocols.
- the access control server 130 may serve as a node of a blockchain 150 to participate in the mining and data validation process.
- the blockchain interfacing engine 275 allows access control server 130 to broadcast various transactions to a blockchain network for recordation.
- the blockchain interfacing engine 275 may publish autonomous program protocol 155 on behalf of an application publisher 120 , such as in the situation where the application publisher 120 uses autonomous program protocol building engine 250 to build the autonomous program protocol 155 .
- the blockchain interfacing engine 275 also routinely checks new blocks generated in various blockchains to check whether pending blockchain transactions or actions have been confirmed on the blockchains 150 .
- the blockchains 150 may include public blockchains, consortium blockchains, private blockchains. The degree of decentralization of various blockchains 150 may vary.
- the access control server 130 may set the standard and publish its own blockchain 150 that allows the public to participate in the blockchain network.
- the blockchain interfacing engine 275 may include a smart contract engine that manages the generation and triggering of various smart contracts that are recorded on different blockchains.
- a smart contract may be created through a particular programming language that is compatible with a blockchain 150 .
- a smart contract is recorded on a block of the blockchain and may be immutable.
- the recorded smart contract may include executable code instructions that are triggered by a certain condition. When the condition is met and verified, the code instructions are executed by a computer to automatically execute the contract terms that take the form of code instructions.
- the computer that executes the smart contract may take various forms.
- a computer described herein may be a conventional personal computer, a virtual machine for the blockchain, or even a collection of distributed nodes in distributed computing.
- the code instructions of the smart contract When the code instructions of the smart contract are executed, the code instructions may cause certain events (e.g., a transaction, a generation of a token, creation of new information) to be recorded on a blockchain.
- certain events e.g., a transaction, a generation of a token, creation of new information
- the access control server 130 may directly communicate to the autonomous program protocol 155 , such as a smart contract, to initiate the request.
- the blockchain interfacing engine 275 may also include an oracle machine that may serve as a data feed for an autonomous program protocol 155 .
- the oracle machine may receive different data from various sources. For example, different parties may provide information and data to the oracle machine. When relevant information is obtained by the oracle machine, some code instructions of the autonomous program protocol 155 may be triggered if certain conditions are met.
- FIG. 3 is a block diagram illustrating an example access control system 300 and the message control flow of the system, in accordance with some embodiments.
- the access control system 300 may be an example of the system environment 100 .
- the access control system 300 may include an application 310 , the access control server 130 , and an autonomous program protocol 155 recorded on the blockchain 150 .
- the access control system 300 may also include other applications 320 and other program protocols 330 recorded on the blockchain 150 .
- the application 310 may be an example of application 122 or autonomous application 124 , such as a Web3 application.
- the application 310 may serve as an interface for a party to interact with the autonomous program protocol 155 .
- a user may manually request to initiate an action at the autonomous program protocol 155 through an application 122 .
- An autonomous agent may initiate a request through the autonomous application 124 .
- the application 310 may include the core code 312 which is largely designed by the application publisher 120 and serve as the primary features of the application 310 .
- the application 310 may also include access control code 314 that may be generated by the access control server 130 and control the routing of requests so that the application 310 can communicate with the autonomous program protocol 155 under the access control framework designed by the access control server 130 .
- the core code 312 may generate a request 316 (e.g., “SmartContracts.methods.setName(”NewName“).send( )”) directed to the autonomous program protocol 155 .
- the request may also be referred to as an interaction request.
- the request 316 may include a specific function call of the autonomous program protocol 155 such as “setName” in this example.
- the access control code 314 may package the function call data together with client data (e.g., user's behavior data, etc.), route the request 316 to the access control server 130 and request the information and digital signature from the access control server 130 .
- Packaging the function call data may include extracting the functions and the parameters included in the functions and hashing the information. In some embodiments, Packaging the function call may also include adding context metadata to the request 316 .
- the access control code 314 causes the application 310 to route the request 316 to the access control server 130 .
- the access control server 130 may analyze the request 316 using the access control engine 220 to determine whether the request 316 is in compliance with access control policies set by the application publisher 120 .
- the analysis may include determining whether the request 316 is authenticated and authorized.
- the types of analyses that may be performed by access control engine 220 are discussed in further detail in FIG. 2 .
- the access control engine 220 may deploy the firewall engine 230 , the machine learning model 235 , the sandbox engine 240 , the authentication engine 245 and any other suitable access control protocols to analyze the request 316 .
- the access control engine 220 in turn determines whether to authorize the request.
- the access control server 130 may use the cryptographic key management engine 225 to generate a digital signature 340 of the access control server 130 to signify the authorization.
- the access control server 130 may use a private cryptographic key to sign a version of the request 316 .
- the version of the request 316 may be the request 316 itself, a hash of the request 316 , the request 316 with context data.
- the access control server 130 may use the private cryptographic key to encrypt a version of the request 316 to generate the digital signature 340 .
- the access control server 130 may generate a response 350 for the authorization.
- the response 350 may include the request 316 , context data 352 , and the digital signature 340 .
- the response 350 may be transmitted back to the application 310 or transmitted directly to the blockchain 150 to serve as an authorized request. If the response 350 is returned to the application 310 , the access control code 314 of the application 310 may cause the response 350 to be transmitted to the blockchain 150 .
- the access control server 130 may simply ignore the request 316 or send a simple response to the application 310 that the request 316 is denied. In some cases where the access control server 130 determines that the request 316 may be transmitted by a malicious party, the access control server 130 may also add the requester or an identifier of the application 310 (e.g., IP address, application identifier) to a blocked list.
- the requester or an identifier of the application 310 e.g., IP address, application identifier
- the autonomous program protocol 155 may verify the digital signature 340 and execute the function call specified in the request 316 .
- the autonomous program protocol 155 may include core code 360 and access control code 362 . Similar to the core code 312 , the core code 360 may be largely designed by the application publisher 120 and serve as the primary functions of the autonomous program protocol 155 .
- the access control code 362 may be generated by the access control server 130 and enable the access control of the autonomous program protocol 155 .
- the access control code 362 may store a copy of the public cryptographic key that corresponds to the private cryptographic key used to generate the digital signature 340 .
- the access control code 362 uses the public cryptographic key to decrypt the digital signature 340 and verify the digital signature 340 . If the digital signature 340 is verified, the autonomous program protocol 155 will carry out the function call and execute the function in the core code 312 in response to the request 316 .
- the access control system allows an application publisher 120 to control the access to the autonomous program protocol 155 stored on the blockchain 150 .
- Other applications 320 or other program protocols 330 recorded on the blockchain 150 may not be able to directly communicate or cause the autonomous program protocol 155 to perform any actions without authorization from the access control server 130 .
- FIG. 4 is a flowchart depicting an example process 400 for providing access control on an autonomous program protocol 155 , in accordance with some embodiments.
- the process 400 may be performed by a computing device, such as an access control server 130 .
- the process 400 may be embodied as a software algorithm that may be stored as computer instructions that are executable by one or more processors. The instructions, when executed by the processors, cause the processors to perform various steps in the process 400 .
- the access control server 130 may store 410 a private cryptographic key.
- the private cryptographic key corresponds to a public cryptographic key.
- the access control server 130 may generate a pair of cryptographic keys using the Elliptic Curve Digital Signature Algorithm (ECDSA).
- EDSA Elliptic Curve Digital Signature Algorithm
- the private cryptographic key is kept secret by the access control server 130 .
- the public cryptographic key is published.
- a copy of the public cryptographic key is stored on a blockchain 150 as part of an autonomous program protocol 155 .
- the autonomous program protocol 155 may contain access control code 362 that is generated by the access control server 130 .
- the public cryptographic key is visible in a block of the blockchain 150 as part of the code of the autonomous program protocol 155 .
- the autonomous program protocol 155 is a smart contract, which includes a set of instructions stored on the blockchain 150 .
- the access control server 130 may receive 420 access control settings related to the autonomous program protocol 155 .
- the access control setting may specify one or more policies in granting access to the autonomous program protocol 155 .
- the access control setting may include settings with respect to different function calls of the autonomous program protocol 155 .
- the autonomous program protocol 155 provides different functions and each function may be associated with a different access control setting so that the security level for each function may be different.
- an application publisher 120 through the interface provided by the access control server 130 , may specify the access control settings for various functions associated with the autonomous program protocol 155 .
- the access control setting with respect to one or more function calls may be unrestricted so that any party can gain access to those unrestricted functions. Additional examples of access control settings are discussed in FIG. 2 in association with the access control engine 220 .
- the access control server 130 may receive 430 a request for accessing the autonomous program protocol 155 stored on the blockchain.
- An example of the request may be the request 316 shown in FIG. 3 .
- the request may include a function call to the autonomous program protocol 155 and parameters related to the function call.
- the request may be routed to the access control server 130 for the access control server 130 to determine whether to authorize the request. Additional information such as context information of the request, and metadata of the request (e.g., IP address of the request sender, parameters of the request) may also be received by the access control server 130 .
- the access control server 130 may also receive (e.g., load from a storage) previous function call requests transmitted by the same requester and previous function call requests by other users that are relevant to the instant transaction.
- the access control server 130 may review 440 the request.
- the access control server 130 may use tools associated with the access control engine 220 , including firewall engine 230 , machine learning model 235 , sandbox engine 240 , and authentication engine 245 to review the request.
- the type of review may depend on the situation and the access control policies specified.
- the access control server 130 may train a machine learning model 235 to identify potential noncompliant items.
- the trace of previous calls may be used to identify a malicious party. For example, a fraudulent person who is to commit a fraudulent activity may follow certain patterns.
- the access control server 130 may identify the sequence of actions.
- the access control server 130 may identify past function calls by the requester to holistically determine whether the request may be malicious or otherwise noncompliant.
- the access control server 130 may keep a stack trace of previous function calls per application 310 .
- requests to call a particular function with certain parameters are not inherently malicious but, when combined with another request to another function call with additional parameters, the collection of the requests can become malicious.
- the access control server 130 may use rule-based models or machine learning models to identify or predict requests that may be noncompliant.
- the application publisher 120 may specify that the autonomous program protocol 155 or certain function calls in the autonomous program protocol 155 are unrestricted or not dangerous. This may occur when the autonomous program protocol 155 is first launched or the application publisher 120 adjusts the security and authorization level of the autonomous program protocol 155 through the access control server 130 . For example, the application publisher 120 may decide to open the blockchain 150 to the general public. Since the autonomous program protocol 155 , which is already recorded on the blockchain 150 , often has become immutable and has been configured to require the digital signature of the access control server 130 , the access control code 362 of the autonomous program protocol 155 may continue to require a digital signature before a function call can be invoked. The lowering of security level may be achieved at the access control server 130 .
- the application publisher 120 may mark an autonomous program protocol 155 as unrestricted, the access control server 130 may unconditionally generate a digital signature for each request sent to the access control server 130 .
- the level of security and authorization may be freely adjusted by the publisher application publisher 120 using a platform of the access control server 130 .
- the access control server 130 may determine 450 , based at least on reviewing the request, the request is in compliance with the one or more policies specified in the access control setting. The determination may be carried out by various access control engines 220 of the access control server 130 , including using one or more machine learning models 235 . The determination may include a strictly rule-based approach (e.g., whether a request passes the authentication process, whether the request is from an allowlist of IP addresses), a heuristic approach (e.g., using an algorithm that analyzes metadata to predict the nature of the request), a contextual approach (e.g., using contextual data, prior requests, and other factors to determine the nature of the request), a predictive approach (using one or more machine learning models), a simulation approach, or any combination of various approaches.
- the access control server 130 may train machine learning models to help various publishers identify malicious attacks.
- An application publisher 120 may also set up rules using the configuration and policy engine 210 to design the determination process.
- the access control server 130 may make a determination from a list of possible determination outcomes.
- the list of possible outcomes may include “allow,” “block,” “suspicious,” “unknown,” and “ignored.”
- the possible outcomes may also depend on the kinds of attacks.
- the outcomes are binary (sign or not sign) while in other attacks the outcomes may include different possibilities such as likelihoods of fraud, sybil, side-effects, etc.
- the access control server 130 may take different actions.
- an application publisher 120 may specify what actions that the access control server 130 should take for rating such as “suspicious” and “unknown.” For example, in some cases, the access control server 130 may be the unknown request as allowed or ignored, depending on the preference of the application publisher 120 . In some cases, for suspicious requests, the access control server 130 may flag the request and notify the application publisher 120 for manual review. Again, how the access control server 130 may handle a rating may be selectable by the application publisher 120 .
- the access control server 130 may create 460 , using the private cryptographic key, a digital signature for the request. For example, the access control server 130 may hash the payload (or part of the payload) of the request and use the private cryptographic key to encrypt the hash to generate the digital signature.
- the access control server 130 may generate 470 a response to the request.
- the response may include a digital signature.
- Successful verification of the digital signature using the public cryptographic key stored in the autonomous program protocol 155 is required by the autonomous program protocol 155 to process the request.
- the access control code 362 of the autonomous program protocol 155 may be configured to, upon receiving the request with the digital signature, hash the payload of the request (or part of it), and use the public cryptographic key of the access control server 130 to decrypt the digital signature.
- the decryption of the digital signature will generate the hash of the payload of the request that was hashed by the access control server 130 .
- the autonomous program protocol 155 compares the hash generated from hashing the payload of the request and the hash generated from the digital signature. If the hashes match, the digital signature is verified and the autonomous program protocol 155 will carry out the function call(s) specified in the request.
- FIG. 5 is a message flowchart 500 depicting an access control process for an autonomous program protocol 155 , in accordance with some embodiments.
- the message flowchart 500 may include multiple parties, such as the application 310 , the blockchain 150 that includes autonomous program protocol 155 , and the access control server 130 .
- the autonomous program protocol 155 may include the core code 360 and the access control code 362 .
- the access control server 130 may include the access control engine 220 and the cryptographic key management engine 225 , which may serve as the digital signature signer.
- a natural person who could be a legitimate requester or a potentially malicious party, of an application performs 510 activities resulting in a request to call a function of the autonomous program protocol 155 .
- an application itself generates 515 a request to call a function of the autonomous program protocol 155 .
- the application 310 which can be the frontend of the autonomous program protocol 155 , generates 520 the request.
- the access control code of the application 310 packages the function call data and parameters and directs 525 the request to access control server 130 and wait for a response.
- the access control server 130 uses the access control engine 220 to perform 530 analysis of the request to determine whether the request is in compliance with one or more access control policy rules associated with the autonomous program protocol 155 . If the access control engine 220 determines that the request is in compliance, the cryptographic key management engine 225 uses the private cryptographic key of the access control server 130 to generate 535 a digital signature.
- the access control server 130 transmits 540 a response with the digital signature to the application 310 .
- the response with the digital signature is delivered to the application 310 for verification.
- the application 310 makes 545 the confirmation of the response.
- the application 310 transmits 550 the request with the digital signature to the access control code 362 of the autonomous program protocol 155 .
- the access control code 362 of the autonomous program protocol 155 confirms 555 the validity of the digital signature by using the public cryptographic key of the access control server 130 to verify the digital signature.
- the access control code 362 causes 560 the core code 360 of the autonomous program protocol 155 to execute the function.
- a wide variety of machine learning techniques may be used. Examples include different forms of supervised learning, unsupervised learning, and semi-supervised learning such as decision trees, support vector machines (SVMs), regression, Bayesian networks, and genetic algorithms. Deep learning techniques such as neural networks, including convolutional neural networks (CNN), recurrent neural networks (RNN) and long short-term memory networks (LSTM), transformers, attention models, generative adversial networks (GANs) may also be used.
- CNN convolutional neural networks
- RNN recurrent neural networks
- LSTM long short-term memory networks
- GANs generative adversial networks
- various machine learning models 235 that are used to predict whether a request is noncompliant (e.g., malicious, unauthorized, fraudulent) may apply one or more machine learning and deep learning techniques.
- the training techniques for a machine learning model may be supervised, semi-supervised, or unsupervised.
- supervised learning the machine learning models may be trained with a set of training samples that are labeled. For example, for a machine learning model trained to predict if a request is noncompliant, the training samples may be past transactions labeled with compliant or noncompliant.
- the labels for each training sample may be binary or multi-class. Labels may be used to indicate which threat(s) are connected to the request: drain, sybil, etc. Binary (has vulnerability or not) and composite multi-class (binary: yes; vulnerabilities: drain) labels may be used.
- the training samples may be past transactions with contextual data of those transactions.
- an unsupervised learning technique may be used.
- the samples used in training are not labeled.
- Various unsupervised learning technique such as clustering may be used. For example, noncompliant requests may follow certain patterns and may be clustered together by an unsupervised learning technique.
- the training may be semi-supervised with training set having a mix of labeled samples and unlabeled samples.
- a machine learning model may be associated with an objective function, which generates a metric value that describes the objective goal of the training process.
- the training may intend to reduce the error rate of the model in predicting whether a request is noncompliant.
- the objective function may monitor the error rate of the machine learning model.
- Such an objective function may be called a loss function.
- Other forms of objective functions may also be used, particularly for unsupervised learning models whose error rates are not easily determined due to the lack of labels.
- the objective function may correspond to the difference between the model's predicted outcomes and the manually recorded outcomes in the training sets.
- the error rate may be measured as cross-entropy loss, L1 loss (e.g., the sum of absolute differences between the predicted values and the actual value), L2 loss (e.g., the sum of squared distances).
- the neural network 600 may receive an input and generate an output.
- the neural network 600 may include different kinds of layers, such as convolutional layers, pooling layers, recurrent layers, full connected layers, and custom layers and different nodes 610 .
- a convolutional layer convolves the input of the layer (e.g., an image) with one or more kernels to generate different types of images that are filtered by the kernels to generate feature maps.
- Each convolution result may be associated with an activation function.
- a pair of convolutional layer may be followed by a recurrent layer that includes one or more feedback loop.
- the feedback may be used to account for spatial relationships of the features in text or temporal relationships of objects.
- the layers and may be followed in multiple fully connected layers that have nodes connected to each other.
- the fully connected layers may be used for classification and object detection.
- one or more custom layers may also be presented for the generation of a specific format of output .
- a custom layer may be used for image segmentation for labeling pixels of an image input with different segment labels.
- a neural network 600 includes one or more layers 602 , 604 , and 606 , but may or may not include any pooling layer or recurrent layer. If a pooling layer is present, not all convolutional layers are always followed by a pooling layer. A recurrent layer may also be positioned differently at other locations of the CNN. For each convolutional layer, the sizes of kernels (e.g., 3 ⁇ 3, 5 ⁇ 5, 7 ⁇ 7, etc.) and the numbers of kernels allowed to be learned may be different from other convolutional layers.
- kernels e.g., 3 ⁇ 3, 5 ⁇ 5, 7 ⁇ 7, etc.
- a machine learning model may include certain layers, nodes, kernels and/or coefficients. Training of a neural network, may include forward propagation and backpropagation. Each layer in a neural network may include one or more nodes, which may be fully or partially connected to other nodes in adjacent layers. In forward propagation, the neural network performs the computation in the forward direction based on outputs of a preceding layer.
- the operation of a node may be defined by one or more functions.
- the functions that define the operation of a node may include various computation operations such as convolution of data with one or more kernels, pooling, recurrent loop in RNN, various gates in LSTM, etc.
- the functions may also include an activation function that adjusts the weight of the output of the node. Nodes in different layers may be associated with different functions.
- Each of the functions in the neural network may be associated with different coefficients (e.g. weights and kernel coefficients) that are adjustable during training.
- some of the nodes in a neural network may also be associated with an activation function that decides the weight of the output of the node in forward propagation.
- Common activation functions may include step functions, linear functions, sigmoid functions, hyperbolic tangent functions (tanh), and rectified linear unit functions (ReLU).
- Training may be completed when the objective function has become sufficiently stable (e.g., the machine learning model has converged) or after a predetermined number of rounds for a particular set of training samples.
- the trained machine learning model can be used for performing prediction or another suitable task for which the model is trained.
- FIG. 7 A is a block diagram illustrating a chain of transactions broadcasted and recorded on a blockchain, in accordance with an embodiment.
- the transactions described in FIG. 7 A may correspond to any of the transactions and the transfer of blockchain-based units described in previous figures.
- a blockchain is a distributed system.
- a distributed blockchain network may include a plurality of nodes. Each node is a user or a server that participates in the blockchain network. In a public blockchain, any participant may become a node of the blockchain.
- the nodes collectively may be used as a distributed computing system that serves as a virtual machine of the blockchain. In some embodiments, the virtual machine or a distributed computing system may be simply referred to as a computer.
- Any users of a public blockchain may broadcast transactions for the nodes of the blockchain to record.
- Each user's digital wallet is associated with a private cryptographic key that is used to sign transactions and prove the ownership of a blockchain-based unit.
- a chain of transactions may include a first transaction 710 , a second transaction 720 , and a third transaction 730 , etc.
- Each of the transactions in the chain may have a fairly similar structure except the very first transaction in the chain.
- the first transaction of the chain may be generated by a smart contract or a mining process and may be traced back to the smart contract that is recorded on the blockchain or the first block in which it was generated. While each transaction is linked to a prior transaction in FIG. 7 A , the transaction does not need to be recorded on consecutive blocks on the blockchain. For example, the block recording the transaction 710 and the block recording the transaction 720 may be separated by hundreds or even thousands of blocks.
- the traceback of the prior block is tracked by the hash of the prior block that is recorded by the current block.
- account model is used and transactions do not have any references to previous transactions. Transactions are not chained and does not contain the hash of the previous transaction.
- the transaction 720 may be referred to as a current transaction.
- Transaction 710 may be referred to as a prior transaction and transaction 730 may be referred to as a subsequent transaction.
- Each transaction includes a transaction data 722 , a recipient address 724 , a hash of the prior transaction 726 , and the current transaction's owner's digital signature 728 .
- the transaction data 722 records the substance of the current transaction 720 .
- the transaction data 722 may specify a transfer of a quantity of a blockchain-based unit (e.g., a coin, a blockchain token, etc.).
- the transaction data 722 may include code instructions of a smart contract.
- the recipient address 724 is a version of the public key that corresponds to the private key of the digital wallet of the recipient.
- the recipient address 724 is the public key itself.
- the recipient address 724 an encoded version of the public key through one or more functions such as some deterministic functions.
- the generation of the recipient address 724 from the public key may include hashing the public key, adding a checksum, adding one or more prefixes or suffixes, encoding the resultant bits, and truncating the address.
- the recipient address 724 may be a unique identifier of the digital wallet of the recipient on the blockchain.
- the hash of the prior transaction 726 is the hash of the entire transaction data of the prior transaction 710 .
- the hash of the prior transaction 736 is the hash of the entire transaction data of the transaction 720 .
- the hashing of the prior transaction 710 may be performed using a hashing algorithm such as a secure hash algorithm (SHA) or a message digest algorithm (MD).
- SHA secure hash algorithm
- MD message digest algorithm
- the owner corresponding to the current transaction 720 may also use the public key of the owner to generate the hash.
- the hash of prior transaction 726 provides a traceback of the prior transaction 710 and also maintains the data integrity of the prior transaction 710 .
- the digital wallet of the current owner of the blockchain-based unit uses its private key to encrypt the combination of the transaction data 722 , the recipient address 724 , and the hash of prior transaction 726 to generate the owner's digital signature 728 .
- the current owner specifies a recipient by including the recipient address 724 in the digital signature 728 of the current transaction 720 .
- the subsequent owner of the blockchain-based unit is fixed by the recipient address 724 .
- the subsequent owner that generates the digital signature 738 in the subsequent transaction 730 is fixed by the recipients address 724 specified by the current transaction 720 .
- any nodes in the blockchain network may trace back to the prior transaction 710 (by tracing the hash of prior transaction 726 ) and locate the recipient address 714 .
- the recipient address 714 corresponds to the public key of the digital signature 728 .
- the nodes in the blockchain network may use the public key to verify the digital signature 728 .
- a current owner who has the blockchain-based unit tied to the owner's blockchain address can prove the ownership of the blockchain-based unit.
- it can be described as the blockchain-based unit being connected to a public cryptographic key of a party because the blockchain address is derived from the public key.
- the access control server 130 may own blockchain-based units in a machine learning model 235 .
- the blockchain-based units are connected to one of the public cryptographic keys of the access control server 130 .
- the transfer of ownership of a blockchain-based unit may be initiated by the current owner of the blockchain-based unit.
- the owner may broadcast the transaction that includes the digital signature of the owner and a hash of the prior transaction.
- a valid transaction with a verifiable digital signature and a correct hash of the prior transaction will be recorded in a new block of the blockchain through the block generation process.
- FIG. 7 B is a block diagram illustrating a connection of multiple blocks in a blockchain, in accordance with an embodiment.
- Each block of a blockchain except the very first block which may be referred to as the genesis block, may have a similar structure.
- the blocks 750 , 760 , and 760 may each include a hash of the prior blockchain 752 , a nonce 754 , and a plurality of transactions (e.g., a first transaction 756 , a second transaction 758 , etc.). Each transaction may have the structure shown in FIG. 7 A .
- a new block may be generated through mining or voting.
- any nodes in the blockchain system may participate in the mining process.
- the generation of the hash of the prior block may be conducted through a trial and error process.
- the entire data of the prior block (or a version of the prior block such as a simplified version) may be hashed using the nonce as a part of the input.
- the blockchain may use a certain format in the hash of the prior block in order for the new block to be recognized by the nodes as valid. For example, in one embodiment, the hash of the prior block needs to start with a certain number of zeroes in the hash. Other criteria of the hash of the prior block may also be used, depending on the implementation of the blockchain.
- the nodes in a blockchain system may vote to determine the content of a new block.
- a selected subset of nodes or all nodes in the blockchain system may participate in the votes.
- the nodes will vote for one of the blocks to be linked to the existing block. The voting may be based on the voting power of the nodes.
- a node may randomly combine a version of the prior block 750 with a random nonce to generate a hash.
- the generated hash is somewhat a random number due to the random nonce.
- the node compares the generated hash with the criteria of the blockchain system to check if the criteria are met (e.g., whether the generated hash starts with a certain number of zeroes in the hash). If the generated hash fails to meet the criteria, the node tries another random nonce to generate another hash. The process is repeated for different nodes in the blockchain network until one of the nodes find a hash that satisfies the criteria.
- the nonce that is used to generate the satisfactory hash is the nonce 764 .
- the node that first generates the hash 762 may also select what transactions that are broadcasted to the blockchain network are to be included in the block 760 .
- the node may check the validity of the transaction (e.g., whether the transaction can be traced back to a prior recorded transaction and whether the digital signature of the generator of the transaction is valid).
- the selection may also depend on the number of broadcasted transactions that are pending to be recorded and also the fees that may be specified in the transactions. For example, in some embodiments, each transaction may be associated with a fee (e.g., gas) for having the transaction recorded.
- a fee e.g., gas
- the nodes in the blockchain network repeat the trial and error process to generate the hash of prior block 772 by trying different nonce.
- a nonce may not be needed.
- a new block may be linked to the prior block by including the hash of the prior block.
- New blocks may be continued to be generated through the block generation process.
- a transaction of a blockchain-based unit e.g., an electronic coin, a blockchain token, etc.
- the transaction is considered settled when the transaction is considered final.
- a transaction is considered final when there are multiple subsequent blocks generated and linked to the block that records the transaction.
- some of the transactions 756 , 758 , 766 , 768 , 776 , 778 , etc. may include one or more smart contracts.
- the code instructions of the smart contracts are recorded in the block and are often immutable. When conditions are met, the code instructions of the smart contract are triggered.
- the code instructions may cause a computer (e.g., a virtual machine of the blockchain) to carry out some actions such as generating a blockchain-based unit and broadcasting a transaction documenting the generation to the blockchain network for recordation.
- FIG. 8 is a block diagram illustrating components of an example computing machine that is capable of reading instructions from a computer-readable medium and execute them in a processor (or controller).
- a computer described herein may include a single computing machine shown in FIG. 8 , a virtual machine, a distributed computing system that includes multiples nodes of computing machines shown in FIG. 8 , or any other suitable arrangement of computing devices.
- FIG. 8 shows a diagrammatic representation of a computing machine in the example form of a computer system 800 within which instructions 824 (e.g., software, program code, or machine code), which may be stored in a computer-readable medium for causing the machine to perform any one or more of the processes discussed herein may be executed.
- the computing machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the structure of a computing machine described in FIG. 8 may correspond to any software, hardware, or combined components shown in FIGS. 1 and 2 , including but not limited to, the user device 110 , the access control server 130 , a node of a blockchain network, and various engines, modules interfaces, terminals, and machines shown in FIG. 2 . While FIG. 8 shows various hardware and software elements, each of the components described in FIGS. 1 and 2 may include additional or fewer elements.
- a computing machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a smartphone, a web appliance, a network router, an internet of things (IoT) device, a switch or bridge, or any machine capable of executing instructions 824 that specify actions to be taken by that machine.
- PC personal computer
- PDA personal digital assistant
- STB set-top box
- IoT internet of things
- switch or bridge any machine capable of executing instructions 824 that specify actions to be taken by that machine.
- machine shall also be taken to include any collection of machines that individually or jointly execute instructions 824 to perform any one or more of the methodologies discussed herein.
- the example computer system 800 includes one or more processors (generally, processor 802 ) (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more application-specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination of these), a main memory 804 , and a static memory 806 , which are configured to communicate with each other via a bus 808 .
- the computer system 800 may further include graphics display unit 810 (e.g., a plasma display panel (PDP), a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)).
- processors generally, processor 802
- main memory 804 e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more application-specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs),
- the computer system 800 may also include alphanumeric input device 812 (e.g., a keyboard), a cursor control device 814 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), a storage unit 816 , a signal generation device 818 (e.g., a speaker), and a network interface device 820 , which also are configured to communicate via the bus 808 .
- alphanumeric input device 812 e.g., a keyboard
- a cursor control device 814 e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument
- a storage unit 816 e.g., a disk drive, or other pointing instrument
- a signal generation device 818 e.g., a speaker
- a network interface device 820 which also are configured to communicate via the bus 808 .
- the storage unit 816 includes a computer-readable medium 822 on which is stored instructions 824 embodying any one or more of the methodologies or functions described herein.
- the instructions 824 may also reside, completely or at least partially, within the main memory 804 or within the processor 802 (e.g., within a processor's cache memory) during execution thereof by the computer system 800 , the main memory 804 and the processor 802 also constituting computer-readable media.
- the instructions 824 may be transmitted or received over a network 826 via the network interface device 820 .
- While computer-readable medium 822 is shown in an example embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions (e.g., instructions 824 ).
- the computer-readable medium may include any medium that is capable of storing instructions (e.g., instructions 824 ) for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein.
- the computer-readable medium may include, but not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media.
- the computer-readable medium does not include a transitory medium such as a signal or a carrier wave.
- smart contract or other Web3 application
- owners could add an interface to their applications to have control over the applications after being deployed to the blockchain.
- the application publishers could also apply security technologies to control the applications in real-time. Since the interactions would be vetted and signed by the access control system before the interaction request reaches the application on the blockchain, the access control server can block and prevent malicious or unwanted actions.
- Engines may constitute either software modules (e.g., code embodied on a computer-readable medium) or hardware modules.
- a hardware engine is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner.
- one or more computer systems e.g., a standalone, client or server computer system
- one or more hardware engines of a computer system e.g., a processor or a group of processors
- software e.g., an application or application portion
- a hardware engine may be implemented mechanically or electronically.
- a hardware engine may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations.
- a hardware engine may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or another programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware engine mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
- processors e.g., processor 802
- processors may be temporarily configured (e.g., by software) or permanently configured to perform the relevant operations.
- processors may constitute processor-implemented engines that operate to perform one or more operations or functions.
- the engines referred to herein may, in some example embodiments, comprise processor-implemented engines.
- the performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines.
- the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
- This application claims the benefit of U.S. Provisional Application No. 63/390,860 filed Jul. 20, 2022, the content of which is incorporated by reference herein in its entirety.
- The disclosure generally relates to access control security and, more specifically, to architecture of access control for program protocol recorded on a blockchain.
- The blockchain and smart contract ecosystem currently do not provide an efficient and secure solution to extending contracts' built-in security. Application developers have minimal control over their application after it has been published and do not have the chance to protect them if this is not pre-coded in the contract. Smart contracts are applications inside blockchains which means that they inherited all the security capabilities that blockchain has. However, as an application, it lacks various security features that may protect the application from malicious attacks.
- Embodiments relate to a computer-implemented method, including: storing a private cryptographic key, wherein the private cryptographic key corresponds to a public cryptographic key, a copy of the public cryptographic key is stored on a blockchain as part of an autonomous program protocol; receiving access control setting related to the autonomous program protocol, the access control setting specifying one or more policies in granting access to the autonomous program protocol; receiving a request for accessing the autonomous program protocol stored on the blockchain; reviewing metadata associated with the request and request content; determining, based at least on the metadata associated with the request, the request is in compliance with the one or more policies specified in the access control setting; creating, using the private cryptographic key, a digital signature for the request; and generating a response to the request, the response including the digital signature, wherein a successful verification of the digital signature using the public cryptographic key stored in the autonomous program protocol is required by the autonomous program protocol to process the request.
- In some embodiments, the techniques described herein relate to a computer-implemented method, wherein the digital signature includes context data of the request, such as call data, parameters, functions, nonce, and other account-related data .
- In some embodiments, the techniques described herein relate to a computer-implemented method, wherein the request includes a function call to the autonomous program protocol, and the autonomous program protocol is a smart contract.
- In some embodiments, the techniques described herein relate to a computer-implemented method, wherein the access control setting includes settings with respect to a plurality of function calls.
- In some embodiments, the techniques described herein relate to a computer-implemented method, wherein the access control setting with respect to one of the function calls is unrestricted and the digital signature for the request with respect to the one of the function calls is generated unconditionally. For example, in one case, signature may be generated without a policy. In another case, there would be functions that do not require any signature at all to be processed.
- In some embodiments, the techniques described herein relate to a computer-implemented method, wherein determining the request is in compliance with the one or more policies is conducted using a machine learning model.
- In some embodiments, the techniques described herein relate to a computer-implemented method, wherein the private cryptographic key is stored at an access control server, and the autonomous program protocol contains code that is generated by the access control server.
- In some embodiments, a non-transitory computer-readable medium that is configured to store instructions is described. The instructions, when executed by one or more processors, cause the one or more processors to perform a process that includes steps described in the above computer-implemented methods or described in any embodiments of this disclosure. In some embodiments, a system may include one or more processors and memory coupled to the processors that is configured to store instructions. The instructions, when executed by one or more processors, cause the one or more processors to perform a process that includes steps described in the above computer-implemented methods or described in any embodiments of this disclosure.
-
FIG. 1 is a block diagram that illustrates a system environment of an example computing server, in accordance with an embodiment. -
FIG. 2 is a block diagram representing an example access control server, in accordance with an embodiment. -
FIG. 3 is a block diagram illustrating an example access control system and the message control flow of the system, in accordance with some embodiments. -
FIG. 4 is a flowchart depicting an example process for providing access control on an autonomous program protocol, in accordance with some embodiments. -
FIG. 5 is a message flowchart depicting an access control process for an autonomous program protocol, in accordance with some embodiments. -
FIG. 6 is a conceptual diagram illustrating a structure of an example neural network is illustrated, in accordance with some embodiments. -
FIG. 7A is a block diagram illustrating a chain of transactions broadcasted and recorded on a blockchain, in accordance with an embodiment. -
FIG. 7B is a block diagram illustrating a connection of multiple blocks in a blockchain, in accordance with an embodiment. -
FIG. 8 is a block diagram illustrating components of an example computing machine that is capable of reading instructions from a computer-readable medium and execute them in a processor (or controller). - The figures depict, and the detail description describes, various non-limiting embodiments for purposes of illustration only.
- The figures (FIGS.) and the following description relate to preferred embodiments by way of illustration only. One of skill in the art may recognize alternative embodiments of the structures and methods disclosed herein as viable alternatives that may be employed without departing from the principles of what is disclosed.
- Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality. The figures depict embodiments of the disclosed system (or method) for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein.
-
FIG. 1 is a block diagram that illustrates asystem environment 100 of an example computing server, in accordance with an embodiment. By way of example, thesystem environment 100 includes a user device 110, anapplication publisher 120, anaccess control server 130, adata store 135, ablockchain 150, and anautonomous program protocol 155. The entities and components in thesystem environment 100 communicate with each other through thenetwork 160. In various embodiments, thesystem environment 100 may include different, fewer, or additional components. The components in theblockchain system environment 100 may each correspond to a separate and independent entity or may be controlled by the same entity. For example, in one embodiment, theaccess control server 130 may control thedata store 135. - While each of the components in the
system environment 100 is often described in disclosure in a singular form, thesystem environment 100 may include one or more of each of the components. For example, there can be multiple user devices 110 communicating with theaccess control server 130 and theblockchain 150. Also, theaccess control server 130 may provide service formultiple application publishers 120, each of whom has multiple end users that may operate different user devices 110. While a component is described in a singular form in this disclosure, it should be understood that in various embodiments the component may have multiple instances. Hence, in thesystem environment 100, there can be one or more of each of the components. - A user device may also be referred to as a client device. A user device 110 may be controlled by a user who may be the customers of the
application publisher 120, theaccess control server 130, or a participant of theblockchain 150. In some situations, a user may also be referred to as an end user, for example, when the user is the application publisher's customer who uses applications that are published by theapplication publisher 120. The user device 110 may be any computing device. Examples of user devices 110 include personal computers (PC), desktop computers, laptop computers, tablet computers, smartphones, wearable electronic devices such as smartwatches, or any other suitable electronic devices. - The user device 110 may include a user interface 115 and an
application 122. The user interface 115 may be the interface of theapplication 122 and allow the user to perform various actions associated withapplication 122. For example,application 122 may be a distributed application and the user interface 115 may be the frontend. The user interface 115 may take different forms. In one embodiment, the user interface 115 is a software application interface. For example, theapplication publisher 120 may provide a front-end software application that can be displayed on a user device 110. In one case, the front-end software application is a software application that can be downloaded and installed on a user device 110 via, for example, an application store (App store) of the user device 110. In another case, the front-end software application takes the form of a webpage interface of theapplication publisher 120 that allows clients to perform actions through web browsers. The front-end software application includes a graphical user interface (GUI) that displays various information and graphical elements. In another embodiment, user interface 115 does not include graphical elements but communicates with theapplication publisher 120 via other suitable ways such as command windows or application program interfaces (APIs). - An
application publisher 120, such as a software company, may be an entity that provides various types of software applications. Theapplication publisher 120 may publish and/or operate various types of applications, such asapplication 122 that is installed at a user device 110, an autonomous application 124 that may be a decentralized application that is run on a decentralized network or blockchain, and theautonomous program protocol 155 that is recorded on ablockchain 150. Theautonomous program protocol 155 may take the form of a smart contract or another type of autonomous algorithm that operates on a blockchain. The autonomous application 124 andautonomous program protocol 155 may be applications that have similar natures. In some embodiments, the autonomous application 124 may also operate on a blockchain and the autonomous application 124 is an example ofautonomous program protocol 155. In some embodiments, the autonomous application 124 may serve as an interface of theautonomous program protocol 155. For example, the autonomous application 124 may allow a user to access one or more functions of theautonomous program protocol 155 through the interface of autonomous application 124. In some embodiments, theapplication publisher 120 may record a fully autonomous application on theblockchain 150 as theautonomous program protocol 155 and operate different applications, such as theapplication 122 and autonomous application 124 to allow a user, a device, or an automated agent to interact with theautonomous program protocol 155. In some embodiments, as discussed in further detail below throughout this disclosure, theautonomous program protocol 155 published by theapplication publisher 120 may incorporate certain protocols (e.g., access control protocols) of theaccess control server 130 to provide security and access control to theautonomous program protocol 155. - An
access control server 130 may be a centralized server that provides various access control services to provide security to anautonomous program protocol 155 recorded on theblockchain 150 and protect theautonomous program protocol 155 from malicious attacks. The services provided by theaccess control server 130 may include firewall, access control, sandbox testing environment, authentication (e.g., two-factor authentication), authorization, and other suitable cybersecurity services and compliance (e.g., Know Your Customers KYC) services. In one embodiment, theaccess control server 130 may be partially centralized and partially decentralized. For example, certain access control policies (e.g., who may access the autonomous program protocol 155) may be specified by anapplication publisher 120 and centrally enforced by theaccess control server 130. In some embodiments, theaccess control server 130 may also be decentralized and certain services such as authentication services can be carried out autonomously. The detail of the operations and sub-components of theaccess control server 130 will be further discussed in association withFIG. 2 . - The
data store 135 includes one or more storage units such as memory that takes the form of non-transitory and non-volatile computer storage medium to store various data. The computer-readable storage medium is a medium that does not include a transitory medium such as a propagating signal or a carrier wave. Thedata store 135 may be used by theaccess control server 130 to store data related to theaccess control server 130, such as access control policies of variousautonomous program protocols 155 and associated authentication criteria. In one embodiment, thedata store 135 communicates with other components by thenetwork 160. This type ofdata store 135 may be referred to as a cloud storage server. Example cloud storage service providers may include AMAZON AWS, DROPBOX, RACKSPACE CLOUD FILES, AZURE BLOB STORAGE, GOOGLE CLOUD STORAGE, etc. In another embodiment, instead of a cloud storage server, thedata store 135 is a storage device that is controlled and connected to theaccess control server 130. For example, thedata store 135 may take the form of memory (e.g., hard drives, flash memory, discs, ROMs, etc.) used by theaccess control server 130 such as storage devices in a storage server room that is operated by theaccess control server 130. - A
blockchain 150 may be a public blockchain that is decentralized, a private blockchain, a semi-public blockchain, an execution layer settling data on a public blockchain (e.g.,Layer 2 blockchains, rollups), or an application-specific chain. A public blockchain network includes a plurality of nodes that cooperate to verify transactions and generate new blocks. In some implementations of a blockchain, the generation of a new block may also be referred to as a proposal process, which may be a mining process or a validation process. Some of theblockchains 150 support smart contracts, which are a set of code instructions that are stored on ablockchain 150 and are executable when one or more conditions are met. Smart contracts may be examples ofautonomous program protocols 155. When triggered, the set of code instructions of a smart contract may be executed by a computer such as a virtual machine of theblockchain 150. Here, a computer may be a single operation unit in a conventional sense (e.g., a single personal computer) or may be a set of distributed computing devices that cooperate to execute the code instructions (e.g., a virtual machine or a distributed computing system). Ablockchain 150 may be a new blockchain or an existing blockchain such as BITCOIN, ETHEREUM, EOS, NEO, SOLANA, AVALANCHE, etc. - The
autonomous program protocols 155 may be tokens, smart contracts, Web3 applications, autonomous applications, distributed applications, decentralized finance (DeFi) applications, protocols for decentralized autonomous organizations (DAO), non-fungible tokens (NFT), decentralized exchanges, identity services, blockchain gaming, metaverse protocols, and other suitable protocols and algorithms that may be recorded on a blockchain. - The communications among the user device 110, the
access control server 130, the autonomous application 124, theapplication publisher 120 and theblockchain 150 may be transmitted via anetwork 160, for example, via the Internet. In one embodiment, thenetwork 160 uses standard communications technologies and/or protocols. Thus, thenetwork 160 can include links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, LTE, 5G, digital subscriber line (DSL), asynchronous transfer mode (ATM), InfiniB and, PCI Express Advanced Switching, etc. Similarly, the networking protocols used on thenetwork 160 can include multiprotocol label switching (MPLS), the transmission control protocol/Internet protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext transport protocol (HTTP), the simple mail transfer protocol (SMTP), the file transfer protocol (FTP), etc. The data exchanged over thenetwork 160 can be represented using technologies and/or formats including the hypertext markup language (HTML), the extensible markup language (XML), etc. In addition, all or some of the links can be encrypted using conventional encryption technologies such as secure sockets layer (SSL), transport layer security (TLS), virtual private networks (VPNs), Internet Protocol security (IPsec), etc. Thenetwork 160 also includes links and packet switching networks such as the Internet. -
FIG. 2 is a block diagram representing an exampleaccess control server 130, in accordance with an embodiment. In the embodiment shown inFIG. 2 , theaccess control server 130 includes configuration and policy engine 210,account store 215,access control engine 220, cryptographickey management engine 225,firewall engine 230,machine learning model 235,sandbox engine 240,authentication engine 245, autonomous programprotocol building engine 250, front-end interface 255,communication terminals 260, andblockchain interfacing engine 275. The functions of theaccess control server 130 may be distributed among different components in a different manner than described below. Also, in various embodiments, theaccess control server 130 may include different, fewer, and/or additional components. - While the
access control server 130 is used in a singular form, theaccess control server 130 may include one or more computers that include one or more processors and memory. The memory may store computer code that includes instructions. The instructions, when executed by one or more processors, cause the processors to perform one or more processes described herein. Theaccess control server 130 may take different forms. In one embodiment, theaccess control server 130 is a single computer that executes code instructions directly. In another embodiment, theaccess control server 130 is a group of computing devices that communicate with each other. The computing devices may be located geographically at the same (e.g., a server room) or different locations. In yet another embodiment, theaccess control server 130 includes multiple nodes that operate in a distributed fashion such as in cloud computing or distributed computing. Each node may include one or more computing devices operating together. For example, in some embodiments, theaccess control server 130 is decentralized and is operated by different nodes cooperatively to form theaccess control server 130. In some cases, theaccess control server 130 may also include virtual machines. Any computing devices, nodes, virtual machines, singular or plural, may simply be referred to as a computer, a computing device, or a computing server. Components of theaccess control server 130 shown inFIG. 2 , individually or in combination, may be a combination of hardware and software and may include all or a subset of the example computing system illustrated and described inFIG. 8 . - The configuration and policy engine 210 may store and determine rules for various participants in the
application environment 100. A policy may be defined and initiated by anapplication publisher 120 or automatically added or defined by theaccess control server 130. Anapplication publisher 120 may transmit the policy setting to, or build the policy at, theaccess control server 130. The configuration and policy engine 210 translates the policy to one or more configurations in thesystem environment 100. A policy may be an access control policy for anautonomous program protocol 155. Theaccess control server 130 provides security, protection, and access control to anautonomous program protocol 155. Anapplication publisher 120 may specify one or more access control settings that define various criteria for granting access to anautonomous program protocol 155. For example, the access control settings may define who can gain access to anautonomous program protocol 155 and the manner in how a party may access theautonomous program protocol 155. The settings may also define trusted entities in authentication and various security rules in controlling the traffic related to theautonomous program protocol 155. The settings may further define authorization and an access control list that may be specific to anautonomous program protocol 155. - A policy may be generic or specific. A specific policy may be a policy that is customized or specified by an
application publisher 120 who published anautonomous program protocol 155. A specific policy defines a special rule with respect to the security or access control of theautonomous program protocol 155. For example, anapplication publisher 120 may define a context-specific policy on the access control of theautonomous program protocol 155. In contrast, a generic policy may be a policy that is commonly beneficial to manyautonomous program protocols 155 and may be automatically enforced by theaccess control server 130 upon request without having theapplication publisher 120 specifically define the rules in the generic policy. For example, a generic policy may be a policy to prevent theautonomous program protocol 155 from a denial-of-service attack or a policy that detects fraudulent transactions. The configuration and policy engine 210 may include default rules for a generic policy and may enforce a generic policy for variousautonomous program protocols 155 that are vulnerable to common security threads. - The
data store 215 is a database that stores various information with respect to settings provided by customers, such asapplication publishers 120, of theaccess control server 130. The data stored may include a profile of the customer, applications operated by the customer,autonomous program protocols 155 published by the customer, and various access control settings associated with anautonomous program protocol 155. Thedata store 215 may also include or be in communication with a credential vault that stores user identifiers and passwords and theaccess control server 130 may perform authentication on behalf of a customer. Thedata store 215 may also store data and metadata related to various transactions involving anautonomous program protocol 155. The transaction records may be used as training samples in one or more machine learning models for identifying normal usage patterns of anautonomous program protocol 155 in distinguishing normal operations from potentially fraudulent operations or malicious activities. - The
access control engine 220 manages the access control of anautonomous program protocol 155 based on the policy settings specified by anapplication publisher 120. Theaccess control engine 220 may deploy other engines, such as thefirewall engine 230, themachine learning model 235, thesandbox engine 240, and theauthentication engine 245 to manage the access of anautonomous program protocol 155. Theaccess control engine 220 may control traffic, identify threats, and enforce authentication and authorization for anautonomous program protocol 155. For example, theaccess control engine 220 may control whether a request to accessautonomous program protocol 155 is valid and authorized. The request to access may include a function call of theautonomous program protocol 155. If a request is valid and authorized, theaccess control engine 220 may generate a digital signature for the request. For example, theaccess control engine 220 may use a private cryptographic key of theaccess control server 130 to sign the payload of the request. The private cryptographic key may be specific to the particularautonomous program protocol 155. The digital signature may be a requirement forautonomous program protocol 155 to recognize the request. In some embodiments, theautonomous program protocol 155 may store the public cryptographic key of theaccess control server 130 that corresponds to the private cryptographic key. Theautonomous program protocol 155 may be configured to use the public cryptographic key to verify the digital signature before a function call may be invoked. If theaccess control engine 220 determines that the request is not valid or authorized, a digital signature is not generated and theaccess control engine 220 may block the request and log the request as part of the record. Theaccess control engine 220 may also return an error message to the requester. If theautonomous program protocol 155 is configured to require the digital signature of theaccess control server 130 before a function is invoked, the party sending the request will not be able to gain access toautonomous program protocol 155 without authorization from theaccess control engine 220. - The access control for an
autonomous program protocol 155 may be function specific. For example, anautonomous program protocol 155 may include more than one function call that can be invoked. Theapplication publisher 120 may specify different access control policies for each of the function calls. For example, for certain function calls, theapplication publisher 120 may allow the general public to use those functions and the access control policies may be more lenient, such as allowing the use without authentication. In some cases, theapplication publisher 120 may request theaccess control server 130 to generate digital signatures for all of the requests for those public functions so long as the requests are not malicious. In some cases, theapplication publisher 120 may even allow theaccess control server 130 to sign all of the requests regardless of the situation so that access control is essentially bypassed in this type of situation. In some cases, function variants with different methods of authorization may be available on theautonomous program protocols 155. Multiple entry functions may use a combination of signature requirement, oracle list checking, allowlist checking, or no additional security checks. These functions may call the same private function for the autonomous program protocol logic. For other function calls, such as those related to premium functions that are offered to only certain users, such as paid subscribers, theapplication publisher 120 may specify access control policies that require authentication and authorization before theaccess control server 130 generates a digital signature for a request that tries to invoke one of those function calls. Restricted functions may also be available only for verified customers such as compliant users for compliance and “know your customer” purposes. - The nature of access control may vary for different
autonomous program protocols 155, depending on how anapplication publisher 120 specifies the policies. For example, in some cases, theaccess control engine 220 may provide firewall service to anautonomous program protocol 155 and protect theautonomous program protocol 155 from malicious attacks. In some cases, theaccess control engine 220 may provide an authentication service to limit access to anotherautonomous program protocol 155. In some cases, theaccess control engine 220 may use one or moremachine learning models 235 to identify abnormal patterns and traffic related to anautonomous program protocol 155 and may react to any potential malicious attack such as by blocking access attempts (e.g., not generating digital signatures) from parties that are identified as potential malicious parties. The type of suitable access controls vary among embodiments and may be decided by anapplication publisher 120 who specifies various policies for anautonomous program protocol 155. - The cryptographic
key management engine 225 stores and manages one or more keys of theaccess control server 130 to allow theaccess control server 130 to participate in various blockchains and to generate digital signatures for requests to accessautonomous program protocols 155. The cryptographickey management engine 225 stores various private cryptographic keys of theaccess control server 130. In some embodiments, theaccess control server 130 may use master private cryptographic keys for differentautonomous program protocols 155. In some embodiments, for eachautonomous program protocol 155, the cryptographickey management engine 225 may generate a new pair of private and public cryptographic keys. The cryptographickey management engine 225 keeps the private cryptographic key secret and may publish the public cryptographic key to be included in theautonomous program protocol 155, at a location on theblockchain 150, or at a certificate authority. In some embodiments, upon a request from anapplication publisher 120, the cryptographickey management engine 225 generates a pair of private-public cryptographic keys and sends the public cryptographic key to be incorporated in anautonomous program protocol 155 to be recorded on ablockchain 150. Theautonomous program protocol 155 may be configured to require verification of the digital signature using the public cryptographic key before all or certain functions in theautonomous program protocol 155 may be called. In some embodiments, multiple private-public cryptographic key pairs may be generated and multiple public cryptographic keys may be saved in theautonomous program protocol 155. Aggregated signatures may be used for certain functions. - In some embodiments, the
access control server 130 may also participate in activities ofvarious blockchains 150, such as performing transactions onblockchains 150. For ablockchain 150, the cryptographickey management engine 225 may maintain one or more private keys to allow theaccess control server 130 to generate blockchain addresses of theaccess control server 130 and to validate thataccess control server 130 owns the blockchain-based units that are connected to one or more public cryptographic keys of theaccess control server 130. In various embodiments, a blockchain address of theaccess control server 130 may be generated by a series of one or more one-way functions from the public key, which is generated from the private key. The cryptographickey management engine 225 may derive a blockchain address by hashing the public key, adding prefixes, suffixes, and/or versions to the hash or the public key, creating a checksum, encoding a derived result, and truncating the address. - The
firewall engine 230 may be part of theaccess control engine 220 and provide network security for anautonomous program protocol 155 by monitoring and controlling incoming and outgoing network traffic based on one or more security rules that are specified by anapplication publisher 120. For example, theautonomous program protocol 155 may be configured to require a digital signature or another suitable authorization label from theaccess control server 130 in order to invoke a function of theautonomous program protocol 155. In some embodiments, the network traffic related to theautonomous program protocol 155 is routed to theaccess control server 130 first for theaccess control server 130 to monitor the traffic. Theaccess control server 130 may track and filter network traffic based on rules that are determined by theapplication publisher 120. Theaccess control server 130 may maintain, in thedata store 215, an access control list that contains a list of permissions associated with theautonomous program protocol 155. Thefirewall engine 230 may implement various existing firewall techniques in controlling the access to theautonomous program protocol 155. Thefirewall engine 230 may implement one or more Internet security protocols, such as transport layer security, and may flag or isolate requests that do not pass the security protocols. - The
access control server 130 may include one or moremachine learning models 235 that are trained to identify potentially malicious activities, threats, fraudulent transactions or otherwise noncompliant activities that attempt to access anautonomous program protocol 155. Theaccess control server 130 may rely on both predetermined security rules that are specified by anapplication publisher 120 to identify any invalid or unauthorized requests and amachine learning model 235 that predicts whether a request may be noncompliant even if the request complies with the security rules. How theapplication publisher 120 or theaccess control server 130 may define what activity is noncompliant may depend on the context of theautonomous program protocol 155. For example, if theautonomous program protocol 155 is a DeFi application, amachine learning model 235 may be trained to identify potentially fraudulent transactions that may involve maximal extractable value (MEV) transactions, money laundering transaction, or other illegal business activities. In another instance, theautonomous program protocol 155 may be an application that provides utility to a company. Amachine learning model 235 may be trained to identify potential Internet attacks such as denial-of-access attacks so that theautonomous program protocol 155 is protected from malicious activities. - A
machine learning model 235 may be part of theaccess control engine 220 and may receive various data and contextual information related to an attempted request for accessing anautonomous program protocol 155 to predict whether the request may be noncompliant. The input of themachine learning model 235 may include IP address of the request, the function call in the request, the purported identity of the requestor, parameters used in the request, date and time of the request, frequency of the request, usage patterns of theautonomous program protocol 155, authentication information of the request, past activities of the requester, past activities of other relevant users, client data (e.g., wallet data, browser data, operating system data), cookies, user behavior on an application frontend, other activities by other users on the blockchain (e.g., to detect correlated attacks), smart contract code (e.g., both source code, if available, and binary code), geographical location estimations from IP addresses, and other suitable information. Amachine learning model 235 may be trained using past transaction instances as training samples. For example, the data and contextual information related to past transaction instances may be stored in thedata store 215. Each training sample may be stored as a feature vector that includes the data and contextual information as the dimensions of the vector. Each of the past transactions may be labeled as compliant or noncompliant. In some cases, the training samples may also be multi-classes and are labeled with different noncompliant activities. Each training label may have multiple dimensions. Based on the feature vectors and the training labels of past transaction instances, themachine learning model 235 may be trained to predict whether a future request is compliant or noncompliant. - A
sandbox engine 240 may be part of theaccess control engine 220 and may allow a party that attempts to invoke one or more function calls of theautonomous program protocol 155 to simulate the transaction at theaccess control server 130 first before actually invoking theautonomous program protocol 155. For example, a party may have a request that is part of a larger algorithm. The request is to be sent to theautonomous program protocol 155 to carry out. The party may use thesandbox engine 240 to simulate the result of theautonomous program protocol 155 carrying out the request and determine whether the result generates the desirable outcome and/or whether the result generates any undesirable side-effects. If the result is satisfactory, the party may request theaccess control server 130 to digitally sign the actual request and have the request sent to theautonomous program protocol 155. - The
authentication engine 245 may be part of theaccess control engine 220 and may allow anapplication publisher 120 to request theaccess control server 130 to carry out authentication procedures before a request for accessing anautonomous program protocol 155 is authorized by theaccess control server 130. For example, theapplication publisher 120 may design and publish anautonomous program protocol 155 that is reserved for only certain account holders of theapplication publisher 120. To prevent an unauthorized party from gaining access to theautonomous program protocol 155, theaccess control server 130 may carry an authentication process such as verifying the credential of the requester before theaccess control server 130 authorizes a request for theautonomous program protocol 155. Theauthentication engine 245 may provide any suitable types of authentication procedures such as two-factor authentication. For example, upon a request is received and the credential is verified, theauthentication engine 245 may generate a token code for the requester. Theauthentication engine 245 may set a time limit for the requester to enter the token code before theauthentication engine 245 generates a digital signature to authorize the request. - The autonomous program
protocol building engine 250 may be an engine that assists anapplication publisher 120 to build anautonomous program protocol 155 that incorporates various access control features of theaccess control server 130 into theautonomous program protocol 155. The autonomous programprotocol building engine 250 may allow theapplication publisher 120 to build anautonomous program protocol 155 such as a smart contract or a Web3 application on the platform provided by theaccess control server 130 and automatically generate the code that enables theautonomous program protocol 155 to incorporate the access control feature. The autonomous programprotocol building engine 250 may include compiler, simulation, and debugging features that allow theapplication publisher 120 to test and simulate theautonomous program protocol 155 before theautonomous program protocol 155 is recorded on a blockchain. The autonomous programprotocol building engine 250 may also publish the finalizedautonomous program protocol 155 on behalf of theapplication publisher 120 on ablockchain 150. In some embodiments, after the code forautonomous program protocol 155 is written, the autonomous programprotocol building engine 250 may cause the cryptographickey management engine 225 to generate a new pair of private-public cryptographic keys and store the public cryptographic key as part of the code or a mutable portion (e.g., a variable) of theautonomous program protocol 155. Theapplication publisher 120 may design theautonomous program protocol 155 with multiple function calls. Theapplication publisher 120 may specify which function calls are subject to the access control of theaccess control server 130. The autonomous programprotocol building engine 250 may incorporate the code that requires theautonomous program protocol 155 to use the public cryptographic key to verify the digital signature of theaccess control server 130 before a function call is invoked. The access control part of the code may be generated automatically by autonomous programprotocol building engine 250 or by having theapplication publisher 120 include a code library published by theaccess control server 130 and inserting the access control code in the source code of theautonomous program protocol 155. - In various embodiments, the public cryptographic key may be stored in the
autonomous program protocol 155 in different manners. In some embodiments, the public cryptographic key may be stored as part of the immutable code of theautonomous program protocol 155. In some embodiments, the public cryptographic key may be stored as a variable that can only be changed by the original owner who published theautonomous program protocol 155. For example, theautonomous program protocol 155 may include an initial function such as a constructor function that is only called when theautonomous program protocol 155 is first recorded on ablockchain 150. The constructor function may define the original owner that is tractable to a wallet address. The original owner, who possess the wallet address, may have the authority to upload a public cryptographic key and modify the public cryptographic key for key rotation purposes or for mitigation of providers ofaccess control server 130. An example relevant part of pseudocode of theautonomous program protocol 155 for implementing the public cryptographic key as a variable for theautonomous program protocol 155 is shown below. -
contract TestContract { address signingAuthorityKey; // Signing Authority Key is the public cryptographic key of access control // server 130.address owner; modifier onlyOwner( ) { require(msg.sender == owner, ″Action is not permitted.″); ; } constructor( ) { owner = msg.sender; } // This function would be called by the owner (developer / deployer) // when the contract is deployed. // The parameter would be the public cryptographic key. function setSigningAuthorityKey(address signingAuthority) public onlyOwner { signingAuthorityKey = signingAuthority; } } - The autonomous program
protocol building engine 250 may generate the access control part of theautonomous program protocol 155 and also an interface for accessing theautonomous program protocol 155. The interface for accessing theautonomous program protocol 155 may be anapplication 122, an autonomous application 124, an oracle machine, or another suitable way to interact with theautonomous program protocol 155. For example, the interface may include code that routes any request attempting to reach theautonomous program protocol 155 to accesscontrol server 130 first to receive a digital signature from theaccess control server 130 that indicates the request is authorized by theaccess control server 130. Upon the receipt of the digital signature, the interface may forward the request for the requester to sign. The user's application (e.g., a wallet) may then send the request toautonomous program protocol 155. - The
access control server 130 may include one or more front-end interfaces 255. A front-end interface 255 allowsapplication publishers 120 to manage their profiles, buildautonomous program protocol 155, and manage settings related to access control and security level of theautonomous program protocols 155 published by theapplication publisher 120. The front-end interface 255 may take different forms. A first example of front-end interface 255 is a software application interface that is installed on a user device 110 such as smartphones and computers. A second example front-end interface 255 is a webpage interface of theaccess control server 130 that allows users to manage their accounts through web browsers. A third example front-end interface 255 is an application program interface (API) of theaccess control server 130 that allows users to perform actions through program codes and algorithms. - The
communication terminal 260 of theaccess control server 130 provides network and blockchain connections between theaccess control server 130 and various entities that communicate with theaccess control server 130. Theaccess control server 130 may serve as a node of various public blockchains to provide up to date information about the state of the blockchain. Theaccess control server 130 may include different terminals such as blockchain terminal, asset exchange terminal, and messaging application terminal. Each terminal may manage a data feed or a webpage that publishes information regarding the related services and server status. Each terminal may also include its individual API. - The
blockchain interfacing engine 275 provides various functionalities for theaccess control server 130 to perform activities ondifferent blockchains 150 that may have their own standards and protocols. Theaccess control server 130 may serve as a node of ablockchain 150 to participate in the mining and data validation process. Theblockchain interfacing engine 275 allowsaccess control server 130 to broadcast various transactions to a blockchain network for recordation. For example, theblockchain interfacing engine 275 may publishautonomous program protocol 155 on behalf of anapplication publisher 120, such as in the situation where theapplication publisher 120 uses autonomous programprotocol building engine 250 to build theautonomous program protocol 155. Theblockchain interfacing engine 275 also routinely checks new blocks generated in various blockchains to check whether pending blockchain transactions or actions have been confirmed on theblockchains 150. Theblockchains 150 may include public blockchains, consortium blockchains, private blockchains. The degree of decentralization ofvarious blockchains 150 may vary. In one embodiment, theaccess control server 130 may set the standard and publish itsown blockchain 150 that allows the public to participate in the blockchain network. - The
blockchain interfacing engine 275 may include a smart contract engine that manages the generation and triggering of various smart contracts that are recorded on different blockchains. A smart contract may be created through a particular programming language that is compatible with ablockchain 150. A smart contract is recorded on a block of the blockchain and may be immutable. The recorded smart contract may include executable code instructions that are triggered by a certain condition. When the condition is met and verified, the code instructions are executed by a computer to automatically execute the contract terms that take the form of code instructions. The computer that executes the smart contract may take various forms. For example, a computer described herein may be a conventional personal computer, a virtual machine for the blockchain, or even a collection of distributed nodes in distributed computing. When the code instructions of the smart contract are executed, the code instructions may cause certain events (e.g., a transaction, a generation of a token, creation of new information) to be recorded on a blockchain. In some embodiments, after a request to access anautonomous program protocol 155 is authorized by theaccess control server 130, instead of transmitting the digital signature back to the requester, theaccess control server 130 may directly communicate to theautonomous program protocol 155, such as a smart contract, to initiate the request. - The
blockchain interfacing engine 275 may also include an oracle machine that may serve as a data feed for anautonomous program protocol 155. The oracle machine may receive different data from various sources. For example, different parties may provide information and data to the oracle machine. When relevant information is obtained by the oracle machine, some code instructions of theautonomous program protocol 155 may be triggered if certain conditions are met. -
FIG. 3 is a block diagram illustrating an exampleaccess control system 300 and the message control flow of the system, in accordance with some embodiments. Theaccess control system 300 may be an example of thesystem environment 100. Theaccess control system 300 may include anapplication 310, theaccess control server 130, and anautonomous program protocol 155 recorded on theblockchain 150. Theaccess control system 300 may also includeother applications 320 andother program protocols 330 recorded on theblockchain 150. - The
application 310 may be an example ofapplication 122 or autonomous application 124, such as a Web3 application. Theapplication 310 may serve as an interface for a party to interact with theautonomous program protocol 155. For example, a user may manually request to initiate an action at theautonomous program protocol 155 through anapplication 122. An autonomous agent may initiate a request through the autonomous application 124. Theapplication 310 may include thecore code 312 which is largely designed by theapplication publisher 120 and serve as the primary features of theapplication 310. Theapplication 310 may also includeaccess control code 314 that may be generated by theaccess control server 130 and control the routing of requests so that theapplication 310 can communicate with theautonomous program protocol 155 under the access control framework designed by theaccess control server 130. - The
core code 312 may generate a request 316 (e.g., “SmartContracts.methods.setName(”NewName“).send( )”) directed to theautonomous program protocol 155. The request may also be referred to as an interaction request. Therequest 316 may include a specific function call of theautonomous program protocol 155 such as “setName” in this example. Theaccess control code 314 may package the function call data together with client data (e.g., user's behavior data, etc.), route therequest 316 to theaccess control server 130 and request the information and digital signature from theaccess control server 130. Packaging the function call data may include extracting the functions and the parameters included in the functions and hashing the information. In some embodiments, Packaging the function call may also include adding context metadata to therequest 316. Theaccess control code 314 causes theapplication 310 to route therequest 316 to theaccess control server 130. - Upon receiving the
request 316, theaccess control server 130 may analyze therequest 316 using theaccess control engine 220 to determine whether therequest 316 is in compliance with access control policies set by theapplication publisher 120. The analysis may include determining whether therequest 316 is authenticated and authorized. The types of analyses that may be performed byaccess control engine 220 are discussed in further detail inFIG. 2 . Theaccess control engine 220 may deploy thefirewall engine 230, themachine learning model 235, thesandbox engine 240, theauthentication engine 245 and any other suitable access control protocols to analyze therequest 316. Theaccess control engine 220 in turn determines whether to authorize the request. - If the
access control engine 220 authorizes the request, theaccess control server 130 may use the cryptographickey management engine 225 to generate adigital signature 340 of theaccess control server 130 to signify the authorization. Theaccess control server 130 may use a private cryptographic key to sign a version of therequest 316. The version of therequest 316 may be therequest 316 itself, a hash of therequest 316, therequest 316 with context data. For example, theaccess control server 130 may use the private cryptographic key to encrypt a version of therequest 316 to generate thedigital signature 340. Theaccess control server 130 may generate aresponse 350 for the authorization. Theresponse 350 may include therequest 316,context data 352, and thedigital signature 340. Theresponse 350 may be transmitted back to theapplication 310 or transmitted directly to theblockchain 150 to serve as an authorized request. If theresponse 350 is returned to theapplication 310, theaccess control code 314 of theapplication 310 may cause theresponse 350 to be transmitted to theblockchain 150. - If the
access control engine 220 does not authorize therequest 316, theaccess control server 130 may simply ignore therequest 316 or send a simple response to theapplication 310 that therequest 316 is denied. In some cases where theaccess control server 130 determines that therequest 316 may be transmitted by a malicious party, theaccess control server 130 may also add the requester or an identifier of the application 310 (e.g., IP address, application identifier) to a blocked list. - Upon receiving the
response 350 that includes thedigital signature 340, theautonomous program protocol 155 may verify thedigital signature 340 and execute the function call specified in therequest 316. For example, theautonomous program protocol 155 may includecore code 360 andaccess control code 362. Similar to thecore code 312, thecore code 360 may be largely designed by theapplication publisher 120 and serve as the primary functions of theautonomous program protocol 155. Theaccess control code 362 may be generated by theaccess control server 130 and enable the access control of theautonomous program protocol 155. For example, theaccess control code 362 may store a copy of the public cryptographic key that corresponds to the private cryptographic key used to generate thedigital signature 340. Theaccess control code 362 uses the public cryptographic key to decrypt thedigital signature 340 and verify thedigital signature 340. If thedigital signature 340 is verified, theautonomous program protocol 155 will carry out the function call and execute the function in thecore code 312 in response to therequest 316. - The access control system allows an
application publisher 120 to control the access to theautonomous program protocol 155 stored on theblockchain 150.Other applications 320 orother program protocols 330 recorded on theblockchain 150 may not be able to directly communicate or cause theautonomous program protocol 155 to perform any actions without authorization from theaccess control server 130. -
FIG. 4 is a flowchart depicting anexample process 400 for providing access control on anautonomous program protocol 155, in accordance with some embodiments. Theprocess 400 may be performed by a computing device, such as anaccess control server 130. Theprocess 400 may be embodied as a software algorithm that may be stored as computer instructions that are executable by one or more processors. The instructions, when executed by the processors, cause the processors to perform various steps in theprocess 400. - The
access control server 130 may store 410 a private cryptographic key. The private cryptographic key corresponds to a public cryptographic key. For example, theaccess control server 130 may generate a pair of cryptographic keys using the Elliptic Curve Digital Signature Algorithm (ECDSA). The private cryptographic key is kept secret by theaccess control server 130. The public cryptographic key is published. In some embodiments, a copy of the public cryptographic key is stored on ablockchain 150 as part of anautonomous program protocol 155. For example, theautonomous program protocol 155 may containaccess control code 362 that is generated by theaccess control server 130. In some embodiments, the public cryptographic key is visible in a block of theblockchain 150 as part of the code of theautonomous program protocol 155. In some embodiments, theautonomous program protocol 155 is a smart contract, which includes a set of instructions stored on theblockchain 150. - The
access control server 130 may receive 420 access control settings related to theautonomous program protocol 155. The access control setting may specify one or more policies in granting access to theautonomous program protocol 155. The access control setting may include settings with respect to different function calls of theautonomous program protocol 155. For example, in some embodiments, theautonomous program protocol 155 provides different functions and each function may be associated with a different access control setting so that the security level for each function may be different. In some embodiments, anapplication publisher 120, through the interface provided by theaccess control server 130, may specify the access control settings for various functions associated with theautonomous program protocol 155. In some cases, the access control setting with respect to one or more function calls may be unrestricted so that any party can gain access to those unrestricted functions. Additional examples of access control settings are discussed inFIG. 2 in association with theaccess control engine 220. - The
access control server 130 may receive 430 a request for accessing theautonomous program protocol 155 stored on the blockchain. An example of the request may be therequest 316 shown inFIG. 3 . The request may include a function call to theautonomous program protocol 155 and parameters related to the function call. The request may be routed to theaccess control server 130 for theaccess control server 130 to determine whether to authorize the request. Additional information such as context information of the request, and metadata of the request (e.g., IP address of the request sender, parameters of the request) may also be received by theaccess control server 130. In some embodiments, theaccess control server 130 may also receive (e.g., load from a storage) previous function call requests transmitted by the same requester and previous function call requests by other users that are relevant to the instant transaction. - The
access control server 130 may review 440 the request. Theaccess control server 130 may use tools associated with theaccess control engine 220, includingfirewall engine 230,machine learning model 235,sandbox engine 240, andauthentication engine 245 to review the request. The type of review may depend on the situation and the access control policies specified. For example, theaccess control server 130 may train amachine learning model 235 to identify potential noncompliant items. In some embodiments, the trace of previous calls may be used to identify a malicious party. For example, a fraudulent person who is to commit a fraudulent activity may follow certain patterns. Theaccess control server 130 may identify the sequence of actions. For example, theaccess control server 130 may identify past function calls by the requester to holistically determine whether the request may be malicious or otherwise noncompliant. For example, theaccess control server 130 may keep a stack trace of previous function calls perapplication 310. In some cases, requests to call a particular function with certain parameters are not inherently malicious but, when combined with another request to another function call with additional parameters, the collection of the requests can become malicious. Theaccess control server 130 may use rule-based models or machine learning models to identify or predict requests that may be noncompliant. - In some embodiments, the
application publisher 120 may specify that theautonomous program protocol 155 or certain function calls in theautonomous program protocol 155 are unrestricted or not dangerous. This may occur when theautonomous program protocol 155 is first launched or theapplication publisher 120 adjusts the security and authorization level of theautonomous program protocol 155 through theaccess control server 130. For example, theapplication publisher 120 may decide to open theblockchain 150 to the general public. Since theautonomous program protocol 155, which is already recorded on theblockchain 150, often has become immutable and has been configured to require the digital signature of theaccess control server 130, theaccess control code 362 of theautonomous program protocol 155 may continue to require a digital signature before a function call can be invoked. The lowering of security level may be achieved at theaccess control server 130. For example, theapplication publisher 120 may mark anautonomous program protocol 155 as unrestricted, theaccess control server 130 may unconditionally generate a digital signature for each request sent to theaccess control server 130. The level of security and authorization may be freely adjusted by thepublisher application publisher 120 using a platform of theaccess control server 130. In some embodiments, there can be an on-chain signer that signs requests unconditionally, thus allowing on-chain interactions without an oracle. - The
access control server 130 may determine 450, based at least on reviewing the request, the request is in compliance with the one or more policies specified in the access control setting. The determination may be carried out by variousaccess control engines 220 of theaccess control server 130, including using one or moremachine learning models 235. The determination may include a strictly rule-based approach (e.g., whether a request passes the authentication process, whether the request is from an allowlist of IP addresses), a heuristic approach (e.g., using an algorithm that analyzes metadata to predict the nature of the request), a contextual approach (e.g., using contextual data, prior requests, and other factors to determine the nature of the request), a predictive approach (using one or more machine learning models), a simulation approach, or any combination of various approaches. Theaccess control server 130 may train machine learning models to help various publishers identify malicious attacks. Anapplication publisher 120 may also set up rules using the configuration and policy engine 210 to design the determination process. - The
access control server 130 may make a determination from a list of possible determination outcomes. For example, the list of possible outcomes may include “allow,” “block,” “suspicious,” “unknown,” and “ignored.” In some embodiments, the possible outcomes may also depend on the kinds of attacks. In some embodiments, for some attacks the outcomes are binary (sign or not sign) while in other attacks the outcomes may include different possibilities such as likelihoods of fraud, sybil, side-effects, etc. Depending on the rating of the request determined by theaccess control server 130, theaccess control server 130 may take different actions. For example, anapplication publisher 120 may specify what actions that theaccess control server 130 should take for rating such as “suspicious” and “unknown.” For example, in some cases, theaccess control server 130 may be the unknown request as allowed or ignored, depending on the preference of theapplication publisher 120. In some cases, for suspicious requests, theaccess control server 130 may flag the request and notify theapplication publisher 120 for manual review. Again, how theaccess control server 130 may handle a rating may be selectable by theapplication publisher 120. - The
access control server 130 may create 460, using the private cryptographic key, a digital signature for the request. For example, theaccess control server 130 may hash the payload (or part of the payload) of the request and use the private cryptographic key to encrypt the hash to generate the digital signature. - The
access control server 130 may generate 470 a response to the request. The response may include a digital signature. Successful verification of the digital signature using the public cryptographic key stored in theautonomous program protocol 155 is required by theautonomous program protocol 155 to process the request. For example, theaccess control code 362 of theautonomous program protocol 155 may be configured to, upon receiving the request with the digital signature, hash the payload of the request (or part of it), and use the public cryptographic key of theaccess control server 130 to decrypt the digital signature. In some embodiment, the decryption of the digital signature will generate the hash of the payload of the request that was hashed by theaccess control server 130. Theautonomous program protocol 155 compares the hash generated from hashing the payload of the request and the hash generated from the digital signature. If the hashes match, the digital signature is verified and theautonomous program protocol 155 will carry out the function call(s) specified in the request. -
FIG. 5 is amessage flowchart 500 depicting an access control process for anautonomous program protocol 155, in accordance with some embodiments. Themessage flowchart 500 may include multiple parties, such as theapplication 310, theblockchain 150 that includesautonomous program protocol 155, and theaccess control server 130. Theautonomous program protocol 155 may include thecore code 360 and theaccess control code 362. Theaccess control server 130 may include theaccess control engine 220 and the cryptographickey management engine 225, which may serve as the digital signature signer. - In some embodiments, a natural person, who could be a legitimate requester or a potentially malicious party, of an application performs 510 activities resulting in a request to call a function of the
autonomous program protocol 155. In some embodiment, an application itself generates 515 a request to call a function of theautonomous program protocol 155. Theapplication 310, which can be the frontend of theautonomous program protocol 155, generates 520 the request. Instead of sending the request directly to the blockchain network, the access control code of theapplication 310 packages the function call data and parameters and directs 525 the request to accesscontrol server 130 and wait for a response. - In some embodiments, upon receiving the request, the
access control server 130 uses theaccess control engine 220 to perform 530 analysis of the request to determine whether the request is in compliance with one or more access control policy rules associated with theautonomous program protocol 155. If theaccess control engine 220 determines that the request is in compliance, the cryptographickey management engine 225 uses the private cryptographic key of theaccess control server 130 to generate 535 a digital signature. - The
access control server 130 transmits 540 a response with the digital signature to theapplication 310. The response with the digital signature is delivered to theapplication 310 for verification. Theapplication 310 makes 545 the confirmation of the response. Theapplication 310 transmits 550 the request with the digital signature to theaccess control code 362 of theautonomous program protocol 155. - The
access control code 362 of theautonomous program protocol 155 confirms 555 the validity of the digital signature by using the public cryptographic key of theaccess control server 130 to verify the digital signature. Theaccess control code 362 causes 560 thecore code 360 of theautonomous program protocol 155 to execute the function. - Other applications, whether applications in or outside the
blockchain 150 may try to call functions directly in theautonomous program protocol 155. However, without the digital signature of theaccess control server 130, the request will fail. - In various embodiments, a wide variety of machine learning techniques may be used. Examples include different forms of supervised learning, unsupervised learning, and semi-supervised learning such as decision trees, support vector machines (SVMs), regression, Bayesian networks, and genetic algorithms. Deep learning techniques such as neural networks, including convolutional neural networks (CNN), recurrent neural networks (RNN) and long short-term memory networks (LSTM), transformers, attention models, generative adversial networks (GANs) may also be used. For example, various
machine learning models 235 that are used to predict whether a request is noncompliant (e.g., malicious, unauthorized, fraudulent) may apply one or more machine learning and deep learning techniques. - In various embodiments, the training techniques for a machine learning model may be supervised, semi-supervised, or unsupervised. In supervised learning, the machine learning models may be trained with a set of training samples that are labeled. For example, for a machine learning model trained to predict if a request is noncompliant, the training samples may be past transactions labeled with compliant or noncompliant. The labels for each training sample may be binary or multi-class. Labels may be used to indicate which threat(s) are connected to the request: drain, sybil, etc. Binary (has vulnerability or not) and composite multi-class (binary: yes; vulnerabilities: drain) labels may be used. In training a machine learning model for identifying malicious activities, the training samples may be past transactions with contextual data of those transactions. In some cases, an unsupervised learning technique may be used. The samples used in training are not labeled. Various unsupervised learning technique such as clustering may be used. For example, noncompliant requests may follow certain patterns and may be clustered together by an unsupervised learning technique. In some cases, the training may be semi-supervised with training set having a mix of labeled samples and unlabeled samples.
- A machine learning model may be associated with an objective function, which generates a metric value that describes the objective goal of the training process. For example, the training may intend to reduce the error rate of the model in predicting whether a request is noncompliant. In such a case, the objective function may monitor the error rate of the machine learning model. Such an objective function may be called a loss function. Other forms of objective functions may also be used, particularly for unsupervised learning models whose error rates are not easily determined due to the lack of labels. In transaction prediction, the objective function may correspond to the difference between the model's predicted outcomes and the manually recorded outcomes in the training sets. In various embodiments, the error rate may be measured as cross-entropy loss, L1 loss (e.g., the sum of absolute differences between the predicted values and the actual value), L2 loss (e.g., the sum of squared distances).
- Referring to
FIG. 6 , a structure of an example neural network is illustrated, in accordance with some embodiments. Theneural network 600 may receive an input and generate an output. Theneural network 600 may include different kinds of layers, such as convolutional layers, pooling layers, recurrent layers, full connected layers, and custom layers anddifferent nodes 610. A convolutional layer convolves the input of the layer (e.g., an image) with one or more kernels to generate different types of images that are filtered by the kernels to generate feature maps. Each convolution result may be associated with an activation function. In some embodiments, a pair of convolutional layer may be followed by a recurrent layer that includes one or more feedback loop. The feedback may be used to account for spatial relationships of the features in text or temporal relationships of objects. The layers and may be followed in multiple fully connected layers that have nodes connected to each other. The fully connected layers may be used for classification and object detection. In one embodiment, one or more custom layers may also be presented for the generation of a specific format of output . For example, a custom layer may be used for image segmentation for labeling pixels of an image input with different segment labels. - The order of layers and the number of layers of the
neural network 600 may vary in different embodiments. In various embodiments, aneural network 600 includes one or 602, 604, and 606, but may or may not include any pooling layer or recurrent layer. If a pooling layer is present, not all convolutional layers are always followed by a pooling layer. A recurrent layer may also be positioned differently at other locations of the CNN. For each convolutional layer, the sizes of kernels (e.g., 3×3, 5×5, 7×7, etc.) and the numbers of kernels allowed to be learned may be different from other convolutional layers.more layers - A machine learning model may include certain layers, nodes, kernels and/or coefficients. Training of a neural network, may include forward propagation and backpropagation. Each layer in a neural network may include one or more nodes, which may be fully or partially connected to other nodes in adjacent layers. In forward propagation, the neural network performs the computation in the forward direction based on outputs of a preceding layer. The operation of a node may be defined by one or more functions. The functions that define the operation of a node may include various computation operations such as convolution of data with one or more kernels, pooling, recurrent loop in RNN, various gates in LSTM, etc. The functions may also include an activation function that adjusts the weight of the output of the node. Nodes in different layers may be associated with different functions.
- Each of the functions in the neural network may be associated with different coefficients (e.g. weights and kernel coefficients) that are adjustable during training. In addition, some of the nodes in a neural network may also be associated with an activation function that decides the weight of the output of the node in forward propagation. Common activation functions may include step functions, linear functions, sigmoid functions, hyperbolic tangent functions (tanh), and rectified linear unit functions (ReLU). After an input is provided into the neural network and passes through a neural network in the forward direction, the results may be compared to the training labels or other values in the training set to determine the neural network's performance. The process of prediction may be repeated for other images in the training sets to compute the value of the objective function in a particular training round. In turn, the neural network performs backpropagation by using gradient descent such as stochastic gradient descent (SGD) to adjust the coefficients in various functions to improve the value of the objective function.
- Multiple rounds of forward propagation and backpropagation may be iteratively performed. Training may be completed when the objective function has become sufficiently stable (e.g., the machine learning model has converged) or after a predetermined number of rounds for a particular set of training samples. The trained machine learning model can be used for performing prediction or another suitable task for which the model is trained.
-
FIG. 7A is a block diagram illustrating a chain of transactions broadcasted and recorded on a blockchain, in accordance with an embodiment. The transactions described inFIG. 7A may correspond to any of the transactions and the transfer of blockchain-based units described in previous figures. - In some embodiment, a blockchain is a distributed system. A distributed blockchain network may include a plurality of nodes. Each node is a user or a server that participates in the blockchain network. In a public blockchain, any participant may become a node of the blockchain. The nodes collectively may be used as a distributed computing system that serves as a virtual machine of the blockchain. In some embodiments, the virtual machine or a distributed computing system may be simply referred to as a computer. Any users of a public blockchain may broadcast transactions for the nodes of the blockchain to record. Each user's digital wallet is associated with a private cryptographic key that is used to sign transactions and prove the ownership of a blockchain-based unit.
- The ownership of a blockchain-based unit may be traced through a chain of transactions. In
FIG. 7A , a chain of transactions may include afirst transaction 710, asecond transaction 720, and athird transaction 730, etc. Each of the transactions in the chain may have a fairly similar structure except the very first transaction in the chain. The first transaction of the chain may be generated by a smart contract or a mining process and may be traced back to the smart contract that is recorded on the blockchain or the first block in which it was generated. While each transaction is linked to a prior transaction inFIG. 7A , the transaction does not need to be recorded on consecutive blocks on the blockchain. For example, the block recording thetransaction 710 and the block recording thetransaction 720 may be separated by hundreds or even thousands of blocks. The traceback of the prior block is tracked by the hash of the prior block that is recorded by the current block. In some embodiments, account model is used and transactions do not have any references to previous transactions. Transactions are not chained and does not contain the hash of the previous transaction. - Referring to one of the transactions in
FIG. 7A , for illustration, thetransaction 720 may be referred to as a current transaction.Transaction 710 may be referred to as a prior transaction andtransaction 730 may be referred to as a subsequent transaction. Each transaction includes atransaction data 722, a recipient address 724, a hash of theprior transaction 726, and the current transaction's owner'sdigital signature 728. Thetransaction data 722 records the substance of thecurrent transaction 720. For example, thetransaction data 722 may specify a transfer of a quantity of a blockchain-based unit (e.g., a coin, a blockchain token, etc.). In some embodiments, thetransaction data 722 may include code instructions of a smart contract. - The recipient address 724 is a version of the public key that corresponds to the private key of the digital wallet of the recipient. In one embodiment, the recipient address 724 is the public key itself. In another embodiment, the recipient address 724 an encoded version of the public key through one or more functions such as some deterministic functions. For example, the generation of the recipient address 724 from the public key may include hashing the public key, adding a checksum, adding one or more prefixes or suffixes, encoding the resultant bits, and truncating the address. The recipient address 724 may be a unique identifier of the digital wallet of the recipient on the blockchain.
- The hash of the
prior transaction 726 is the hash of the entire transaction data of theprior transaction 710. Likewise, the hash of theprior transaction 736 is the hash of the entire transaction data of thetransaction 720. The hashing of theprior transaction 710 may be performed using a hashing algorithm such as a secure hash algorithm (SHA) or a message digest algorithm (MD). In some embodiments, the owner corresponding to thecurrent transaction 720 may also use the public key of the owner to generate the hash. The hash ofprior transaction 726 provides a traceback of theprior transaction 710 and also maintains the data integrity of theprior transaction 710. - In generating a
current transaction 720, the digital wallet of the current owner of the blockchain-based unit uses its private key to encrypt the combination of thetransaction data 722, the recipient address 724, and the hash ofprior transaction 726 to generate the owner'sdigital signature 728. To generate thecurrent transaction 720, the current owner specifies a recipient by including the recipient address 724 in thedigital signature 728 of thecurrent transaction 720. The subsequent owner of the blockchain-based unit is fixed by the recipient address 724. In other words, the subsequent owner that generates thedigital signature 738 in thesubsequent transaction 730 is fixed by the recipients address 724 specified by thecurrent transaction 720. To verify the validity of thecurrent transaction 720, any nodes in the blockchain network may trace back to the prior transaction 710 (by tracing the hash of prior transaction 726) and locate therecipient address 714. Therecipient address 714 corresponds to the public key of thedigital signature 728. Hence, the nodes in the blockchain network may use the public key to verify thedigital signature 728. Hence, a current owner who has the blockchain-based unit tied to the owner's blockchain address can prove the ownership of the blockchain-based unit. In this disclosure, it can be described as the blockchain-based unit being connected to a public cryptographic key of a party because the blockchain address is derived from the public key. For example, theaccess control server 130 may own blockchain-based units in amachine learning model 235. The blockchain-based units are connected to one of the public cryptographic keys of theaccess control server 130. - The transfer of ownership of a blockchain-based unit may be initiated by the current owner of the blockchain-based unit. To transfer the ownership, the owner may broadcast the transaction that includes the digital signature of the owner and a hash of the prior transaction. A valid transaction with a verifiable digital signature and a correct hash of the prior transaction will be recorded in a new block of the blockchain through the block generation process.
-
FIG. 7B is a block diagram illustrating a connection of multiple blocks in a blockchain, in accordance with an embodiment. Each block of a blockchain, except the very first block which may be referred to as the genesis block, may have a similar structure. The 750, 760, and 760 may each include a hash of theblocks prior blockchain 752, anonce 754, and a plurality of transactions (e.g., afirst transaction 756, asecond transaction 758, etc.). Each transaction may have the structure shown inFIG. 7A . - In a block generation process, a new block may be generated through mining or voting. For a mining process of a blockchain, any nodes in the blockchain system may participate in the mining process. The generation of the hash of the prior block may be conducted through a trial and error process. The entire data of the prior block (or a version of the prior block such as a simplified version) may be hashed using the nonce as a part of the input. The blockchain may use a certain format in the hash of the prior block in order for the new block to be recognized by the nodes as valid. For example, in one embodiment, the hash of the prior block needs to start with a certain number of zeroes in the hash. Other criteria of the hash of the prior block may also be used, depending on the implementation of the blockchain.
- In a voting process, the nodes in a blockchain system may vote to determine the content of a new block. Depending on the embodiment, a selected subset of nodes or all nodes in the blockchain system may participate in the votes. When there are multiple candidates new blocks that include different transactions are available, the nodes will vote for one of the blocks to be linked to the existing block. The voting may be based on the voting power of the nodes.
- By way of example of a block generation process using mining, in generating the hash of
prior block 762, a node may randomly combine a version of theprior block 750 with a random nonce to generate a hash. The generated hash is somewhat a random number due to the random nonce. The node compares the generated hash with the criteria of the blockchain system to check if the criteria are met (e.g., whether the generated hash starts with a certain number of zeroes in the hash). If the generated hash fails to meet the criteria, the node tries another random nonce to generate another hash. The process is repeated for different nodes in the blockchain network until one of the nodes find a hash that satisfies the criteria. The nonce that is used to generate the satisfactory hash is the nonce 764. The node that first generates thehash 762 may also select what transactions that are broadcasted to the blockchain network are to be included in theblock 760. The node may check the validity of the transaction (e.g., whether the transaction can be traced back to a prior recorded transaction and whether the digital signature of the generator of the transaction is valid). The selection may also depend on the number of broadcasted transactions that are pending to be recorded and also the fees that may be specified in the transactions. For example, in some embodiments, each transaction may be associated with a fee (e.g., gas) for having the transaction recorded. After the transactions are selected and the data of theblock 760 is fixed, the nodes in the blockchain network repeat the trial and error process to generate the hash ofprior block 772 by trying different nonce. In embodiments that use voting to generate new blocks, a nonce may not be needed. A new block may be linked to the prior block by including the hash of the prior block. - New blocks may be continued to be generated through the block generation process. A transaction of a blockchain-based unit (e.g., an electronic coin, a blockchain token, etc.) is complete when the broadcasted transaction is recorded in a block. In some embodiment, the transaction is considered settled when the transaction is considered final. A transaction is considered final when there are multiple subsequent blocks generated and linked to the block that records the transaction.
- In some embodiments, some of the
756, 758, 766, 768, 776, 778, etc. may include one or more smart contracts. The code instructions of the smart contracts are recorded in the block and are often immutable. When conditions are met, the code instructions of the smart contract are triggered. The code instructions may cause a computer (e.g., a virtual machine of the blockchain) to carry out some actions such as generating a blockchain-based unit and broadcasting a transaction documenting the generation to the blockchain network for recordation.transactions -
FIG. 8 is a block diagram illustrating components of an example computing machine that is capable of reading instructions from a computer-readable medium and execute them in a processor (or controller). A computer described herein may include a single computing machine shown inFIG. 8 , a virtual machine, a distributed computing system that includes multiples nodes of computing machines shown inFIG. 8 , or any other suitable arrangement of computing devices. - By way of example,
FIG. 8 shows a diagrammatic representation of a computing machine in the example form of acomputer system 800 within which instructions 824 (e.g., software, program code, or machine code), which may be stored in a computer-readable medium for causing the machine to perform any one or more of the processes discussed herein may be executed. In some embodiments, the computing machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. - The structure of a computing machine described in
FIG. 8 may correspond to any software, hardware, or combined components shown inFIGS. 1 and 2 , including but not limited to, the user device 110, theaccess control server 130, a node of a blockchain network, and various engines, modules interfaces, terminals, and machines shown inFIG. 2 . WhileFIG. 8 shows various hardware and software elements, each of the components described inFIGS. 1 and 2 may include additional or fewer elements. - By way of example, a computing machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a smartphone, a web appliance, a network router, an internet of things (IoT) device, a switch or bridge, or any machine capable of executing
instructions 824 that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly executeinstructions 824 to perform any one or more of the methodologies discussed herein. - The
example computer system 800 includes one or more processors (generally, processor 802) (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more application-specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination of these), amain memory 804, and astatic memory 806, which are configured to communicate with each other via abus 808. Thecomputer system 800 may further include graphics display unit 810 (e.g., a plasma display panel (PDP), a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)). Thecomputer system 800 may also include alphanumeric input device 812 (e.g., a keyboard), a cursor control device 814 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), astorage unit 816, a signal generation device 818 (e.g., a speaker), and anetwork interface device 820, which also are configured to communicate via thebus 808. - The
storage unit 816 includes a computer-readable medium 822 on which is storedinstructions 824 embodying any one or more of the methodologies or functions described herein. Theinstructions 824 may also reside, completely or at least partially, within themain memory 804 or within the processor 802 (e.g., within a processor's cache memory) during execution thereof by thecomputer system 800, themain memory 804 and theprocessor 802 also constituting computer-readable media. Theinstructions 824 may be transmitted or received over anetwork 826 via thenetwork interface device 820. - While computer-
readable medium 822 is shown in an example embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions (e.g., instructions 824). The computer-readable medium may include any medium that is capable of storing instructions (e.g., instructions 824) for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein. The computer-readable medium may include, but not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media. The computer-readable medium does not include a transitory medium such as a signal or a carrier wave. - Beneficially, with various embodiments described in this disclosure, in a cryptographically proofed, cost-efficient way, smart contract (or other Web3 application) owners could add an interface to their applications to have control over the applications after being deployed to the blockchain. In addition, the application publishers could also apply security technologies to control the applications in real-time. Since the interactions would be vetted and signed by the access control system before the interaction request reaches the application on the blockchain, the access control server can block and prevent malicious or unwanted actions.
- Certain embodiments are described herein as including logic or a number of components, engines, modules, or mechanisms, for example, as illustrated in
FIG. 2 . Engines may constitute either software modules (e.g., code embodied on a computer-readable medium) or hardware modules. A hardware engine is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware engines of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware engine that operates to perform certain operations as described herein. - In various embodiments, a hardware engine may be implemented mechanically or electronically. For example, a hardware engine may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware engine may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or another programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware engine mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
- The various operations of example methods described herein may be performed, at least partially, by one or more processors, e.g.,
processor 802, that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented engines that operate to perform one or more operations or functions. The engines referred to herein may, in some example embodiments, comprise processor-implemented engines. - The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
- Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a similar system or process through the disclosed principles herein. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein. Various modifications, changes, and variations, which will be apparent to those skilled in the art, may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope defined in the appended claims.
Claims (21)
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/984,175 US11902435B1 (en) | 2022-07-20 | 2022-11-09 | Access control interfaces for blockchains |
| PCT/US2023/024878 WO2024019836A1 (en) | 2022-07-20 | 2023-06-08 | Access control interfaces for blockchains |
| EP23736921.0A EP4558915A1 (en) | 2022-07-20 | 2023-06-08 | Access control interfaces for blockchains |
| IL318403A IL318403B2 (en) | 2022-07-20 | 2023-06-08 | Access control interfaces for blockchains |
| US18/542,336 US12483399B2 (en) | 2022-07-20 | 2023-12-15 | Access control interfaces for blockchains |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263390860P | 2022-07-20 | 2022-07-20 | |
| US17/984,175 US11902435B1 (en) | 2022-07-20 | 2022-11-09 | Access control interfaces for blockchains |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US18/542,336 Continuation US12483399B2 (en) | 2022-07-20 | 2023-12-15 | Access control interfaces for blockchains |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20240031146A1 true US20240031146A1 (en) | 2024-01-25 |
| US11902435B1 US11902435B1 (en) | 2024-02-13 |
Family
ID=89576082
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/984,175 Active 2042-11-09 US11902435B1 (en) | 2022-07-20 | 2022-11-09 | Access control interfaces for blockchains |
| US18/542,336 Active US12483399B2 (en) | 2022-07-20 | 2023-12-15 | Access control interfaces for blockchains |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US18/542,336 Active US12483399B2 (en) | 2022-07-20 | 2023-12-15 | Access control interfaces for blockchains |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US11902435B1 (en) |
| EP (1) | EP4558915A1 (en) |
| IL (1) | IL318403B2 (en) |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230216892A1 (en) * | 2021-12-30 | 2023-07-06 | Netskope, Inc. | Artificial intelligence (ai) devices control based on policies |
| US12219073B2 (en) | 2023-02-28 | 2025-02-04 | CUBE Security Inc. | Proxy autonomous protocol for blockchain access control |
| US20250068772A1 (en) * | 2023-08-25 | 2025-02-27 | Bank Of America Corporation | System and Method for using artificial intelligence to determine if an action is authorized |
| US20250141696A1 (en) * | 2023-10-25 | 2025-05-01 | Oracle International Corporation | Authorizing Requests For Access Credentials, For Accessing Cloud Resources, Based On Successful Stateless Validation Of Digital Certificates |
| US12401526B2 (en) | 2023-07-18 | 2025-08-26 | Oracle International Corporation | Updating digital certificates associated with a virtual cloud network |
| US12401634B2 (en) | 2023-09-14 | 2025-08-26 | Oracle International Corporation | Distributing certificate bundles according to fault domains |
| US12401657B2 (en) | 2023-09-13 | 2025-08-26 | Oracle International Corporation | Aggregating certificate authority certificates for authenticating network entities located in different trust zones |
| US12425239B2 (en) | 2023-08-10 | 2025-09-23 | Oracle International Corporation | Authenticating certificate bundles with asymmetric keys |
| US12425240B2 (en) | 2023-09-13 | 2025-09-23 | Oracle International Corporation | Certificate revocation list management services |
| US12432076B2 (en) | 2023-10-24 | 2025-09-30 | Oracle International Corporation | Provisioning hosts with operator accounts for use by clients to access target resources |
| US12495032B2 (en) | 2024-03-08 | 2025-12-09 | Oracle International Corporation | Orchestrating distribution of digital certificates to an execution environment of a computing network |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20260019379A1 (en) * | 2023-01-19 | 2026-01-15 | Citibank, N.A. | Managing digital artifact access using agentic artificial intelligence models |
| WO2025006796A1 (en) | 2023-06-28 | 2025-01-02 | CUBE Security Inc. | Features extraction for blockchain transactions and program protocols |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20200313858A1 (en) * | 2019-03-29 | 2020-10-01 | Alibaba Group Holding Limited | Managing sensitive data elements in a blockchain network |
| US20210184842A1 (en) * | 2018-06-20 | 2021-06-17 | Iot And M2M Technologies, Llc | An ECDHE Key Exchange for Server Authentication and a Key Server |
| US20220045868A1 (en) * | 2019-01-10 | 2022-02-10 | Siemens Aktiengesellschaft | Method for validating a digital user certificate |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP6595822B2 (en) * | 2015-07-07 | 2019-10-23 | キヤノン株式会社 | Information processing apparatus and control method thereof |
| US9916151B2 (en) * | 2015-08-25 | 2018-03-13 | Ford Global Technologies, Llc | Multiple-stage secure vehicle software updating |
| US10298402B2 (en) * | 2016-06-27 | 2019-05-21 | Google Llc | Access control technology for peer-to-peer sharing |
| EP3563325A4 (en) | 2016-12-30 | 2020-09-02 | Slock.it GmbH | Block-chain enabled service provider system |
| US20180315143A1 (en) * | 2017-04-28 | 2018-11-01 | DirectURWealth Inc. | Digital Estate Planning Systems, Methods and Interfaces |
| US10554654B1 (en) * | 2017-05-31 | 2020-02-04 | Wells Fargo Bank, N.A. | Secure access for assisted transactions in an online banking system |
| RU2020120214A (en) | 2017-11-21 | 2021-12-22 | Сикпа Холдинг Са | SYSTEM AND METHOD FOR CONTROL OF DIGITAL ASSETS |
| US11106491B2 (en) * | 2018-04-06 | 2021-08-31 | Beijing Didi Infinity Technology And Development Co., Ltd. | Method and system for kernel routine callbacks |
| US10880273B2 (en) * | 2018-07-26 | 2020-12-29 | Insight Sciences Corporation | Secure electronic messaging system |
| US11106448B2 (en) * | 2018-08-14 | 2021-08-31 | Red Hal Israel, Ltd. | Management of updates to externally managed libraries |
| US11108559B2 (en) * | 2019-01-02 | 2021-08-31 | International Business Machines Corporation | Producing proof of receipt, existence and other data provenance evidence |
| EP4070215A4 (en) * | 2019-12-03 | 2022-11-23 | Visa International Service Association | TECHNIQUES FOR DELIVERING SECURE FEDERATED MACHINE LEARNING |
| US11349775B2 (en) * | 2020-03-16 | 2022-05-31 | Nec Corporation | Multi-resource and autonomous hierarchical brokering platform to enable slice resource exchange among heterogeneous network tenants |
| US12120253B2 (en) * | 2020-03-19 | 2024-10-15 | Steven Sholtis | System and method to facilitate an account protection check through blockchain |
| US11151229B1 (en) * | 2020-04-10 | 2021-10-19 | Avila Technology, LLC | Secure messaging service with digital rights management using blockchain technology |
| US11695745B2 (en) * | 2020-12-01 | 2023-07-04 | Valimail Inc. | Automated DMARC device discovery and workflow |
| SG10202101048PA (en) * | 2021-02-01 | 2021-06-29 | Aqilliz Pte Ltd | Systems and methods for recording an indeterministic transaction on a distributed ledger network |
| US11941464B2 (en) * | 2021-02-25 | 2024-03-26 | Coinbase, Inc. | Systems and methods for fetching, securing, and controlling private credentials over a disparate communication network without recompiling source code |
| US11646897B2 (en) * | 2021-06-01 | 2023-05-09 | Springcoin, Inc. | Method and apparatus for utilizing off-platform-resolved data as an input to code execution on a decentralized platform |
-
2022
- 2022-11-09 US US17/984,175 patent/US11902435B1/en active Active
-
2023
- 2023-06-08 EP EP23736921.0A patent/EP4558915A1/en active Pending
- 2023-06-08 IL IL318403A patent/IL318403B2/en unknown
- 2023-12-15 US US18/542,336 patent/US12483399B2/en active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210184842A1 (en) * | 2018-06-20 | 2021-06-17 | Iot And M2M Technologies, Llc | An ECDHE Key Exchange for Server Authentication and a Key Server |
| US20220045868A1 (en) * | 2019-01-10 | 2022-02-10 | Siemens Aktiengesellschaft | Method for validating a digital user certificate |
| US20200313858A1 (en) * | 2019-03-29 | 2020-10-01 | Alibaba Group Holding Limited | Managing sensitive data elements in a blockchain network |
Cited By (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230216892A1 (en) * | 2021-12-30 | 2023-07-06 | Netskope, Inc. | Artificial intelligence (ai) devices control based on policies |
| US12413629B2 (en) * | 2021-12-30 | 2025-09-09 | Netskope, Inc. | Artificial intelligence (AI) devices control based on policies |
| US12219073B2 (en) | 2023-02-28 | 2025-02-04 | CUBE Security Inc. | Proxy autonomous protocol for blockchain access control |
| US12388666B2 (en) | 2023-02-28 | 2025-08-12 | CUBE Security Inc. | Proxy autonomous protocol for blockchain access control |
| US12401526B2 (en) | 2023-07-18 | 2025-08-26 | Oracle International Corporation | Updating digital certificates associated with a virtual cloud network |
| US12425239B2 (en) | 2023-08-10 | 2025-09-23 | Oracle International Corporation | Authenticating certificate bundles with asymmetric keys |
| US20250068772A1 (en) * | 2023-08-25 | 2025-02-27 | Bank Of America Corporation | System and Method for using artificial intelligence to determine if an action is authorized |
| US12425240B2 (en) | 2023-09-13 | 2025-09-23 | Oracle International Corporation | Certificate revocation list management services |
| US12401657B2 (en) | 2023-09-13 | 2025-08-26 | Oracle International Corporation | Aggregating certificate authority certificates for authenticating network entities located in different trust zones |
| US12401634B2 (en) | 2023-09-14 | 2025-08-26 | Oracle International Corporation | Distributing certificate bundles according to fault domains |
| US12432076B2 (en) | 2023-10-24 | 2025-09-30 | Oracle International Corporation | Provisioning hosts with operator accounts for use by clients to access target resources |
| US20250141696A1 (en) * | 2023-10-25 | 2025-05-01 | Oracle International Corporation | Authorizing Requests For Access Credentials, For Accessing Cloud Resources, Based On Successful Stateless Validation Of Digital Certificates |
| US12438733B2 (en) * | 2023-10-25 | 2025-10-07 | Oracle International Corporation | Authorizing requests for access credentials, for accessing cloud resources, based on successful stateless validation of digital certificates |
| US12495032B2 (en) | 2024-03-08 | 2025-12-09 | Oracle International Corporation | Orchestrating distribution of digital certificates to an execution environment of a computing network |
Also Published As
| Publication number | Publication date |
|---|---|
| IL318403B2 (en) | 2025-12-01 |
| US11902435B1 (en) | 2024-02-13 |
| IL318403B1 (en) | 2025-08-01 |
| IL318403A (en) | 2025-03-01 |
| EP4558915A1 (en) | 2025-05-28 |
| US12483399B2 (en) | 2025-11-25 |
| US20240275591A1 (en) | 2024-08-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12483399B2 (en) | Access control interfaces for blockchains | |
| Shahidinejad et al. | An all-inclusive taxonomy and critical review of blockchain-assisted authentication and session key generation protocols for IoT | |
| KR101660627B1 (en) | Method and apparatus for protecting transasction of encrypted currency | |
| US9881304B2 (en) | Risk-based control of application interface transactions | |
| Agrawal et al. | Blockchain and fog computing model for secure data access control mechanisms for distributed data storage and authentication using hybrid encryption algorithm | |
| US12219073B2 (en) | Proxy autonomous protocol for blockchain access control | |
| US20150350234A1 (en) | Manipulating api requests to indicate source computer application trustworthiness | |
| Karmakar et al. | ChainSure: Agent free insurance system using blockchain for healthcare 4.0 | |
| Liu et al. | Sok: Security analysis of blockchain-based cryptocurrency | |
| US10373135B2 (en) | System and method for performing secure online banking transactions | |
| Xia et al. | A survey on privacy-preserving federated learning against poisoning attacks | |
| Ofili et al. | Edge Computing, 5G, and Cloud Security Convergence: Strengthening USA’s Critical Infrastructure Resilience | |
| Gwassi et al. | Cyber-XAI-Block: an end-to-end cyber threat detection & fl-based risk assessment framework for iot enabled smart organization using xai and blockchain technologies | |
| JP2025506007A (en) | SYSTEM AND METHOD FOR PROTECTING DEVICES IN A COMPUTER ENVIRONMENT - Patent application | |
| Kokila et al. | BlockDLO: Blockchain computing with deep learning orchestration for secure data communication in IoT Environment | |
| Hayawi et al. | A false positive resilient distributed trust management framework for collaborative intrusion detection systems | |
| Tan et al. | Post-quantum adversarial modeling: A user’s perspective | |
| Kostiuk et al. | Architecture of the software system of confidential access to information resources of computer networks | |
| US20250259165A1 (en) | Pre-authorized transaction in cold cryptographic key storage | |
| Do Nascimento et al. | Decentralized federated learning for intrusion detection in IoT-based systems: A review | |
| WO2024019836A1 (en) | Access control interfaces for blockchains | |
| Iqbal et al. | Bridging two worlds: Framework for secure implementation of blockchain oracles | |
| US12316663B2 (en) | Features extraction for blockchain transactions and program protocols | |
| Sakraoui et al. | TL2AB: Trusted lightweight authentication using AI and blockchain for 6G networks | |
| Parimala et al. | An Intelligence Security Architecture for Mitigating DDOS Attack in CloudIoT Environment |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
| AS | Assignment |
Owner name: CUBE SECURITY INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MAROSI-BAUER, ATTILA;VON GRAVROCK, EINARAS;TIERNAN, SEAN;AND OTHERS;SIGNING DATES FROM 20221208 TO 20221214;REEL/FRAME:062230/0013 Owner name: CUBE SECURITY INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNOR'S INTEREST;ASSIGNORS:MAROSI-BAUER, ATTILA;VON GRAVROCK, EINARAS;TIERNAN, SEAN;AND OTHERS;SIGNING DATES FROM 20221208 TO 20221214;REEL/FRAME:062230/0013 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |