The present invention relates to a security platform for sharing data and efficient access and discovery of data across an organization and/or inter-organizationally, while providing robust audit traceability.
Information security is an increasingly widespread and important concern. It typically involves preventing unauthorized access to data, as well as unauthorized disclosure, deletion, corruption, and modification of information. In modern digital environments, these aspects are exponentially more concerning.
The present invention is generally directed to a security platform and method for sharing data and efficiently controlling access and discovery of data across an organization and/or cross-organizations, while providing robust data lineage and audit traceability. A computer system executing the method can be directed by a program stored on a non-transitory computer-readable medium. Multi-port interfaces and distributed computing, among other related technologies, can be utilized.
An aspect can include a security platform. A security platform can include an immutable data storage medium, a data sharing node, a central processing unit, and memory. The immutable data storage medium can be communicatively coupled to a network. The data sharing node can be communicatively coupled to the network. The memory can include software. The software can be configured to implement a blockchain and an attribute-based access control (ABAC) component.
Embodiments can include a secure data fabric (SDF), which can be based on a cross-domain topology model. A user management module can be included. The user management module can be a sub-module and/or can be utilized for facilitating user attributes that are specific to a SDF. Such module can be configured to control user attributes of a secure data fabric.
Embodiments can include an administrative console, which can be configured to manage blockchain-authorization-based data sharing control and/or access policies and to control ABAC policies of the network. The ABAC policies can include a multi-layered ABAC security policy. A SDF administrative console can be utilized to configure an organization's ABAC policies on a SDF network. A SDF administrative console can be utilized to define an organization's domain boundaries and/or cross-domain policies for data access, for example where such is necessary for networked use of application functionality.
The immutable data storage medium can be separate from the blockchain. In some embodiments, the immutable data storage medium and the data sharing node can be stored within a single location, such as a server or serverless container. In other embodiments, one or both of the immutable data storage medium and the data sharing node can be stored at multiple locations across the network.
Some embodiments can include a data discovery search interface and/or a microservices-based application programming interfaces (APIs) access control module. A microservices-based APIs access control module can be configured to dynamically evaluate digital security policies for a secure data fabric.
Embodiments can include a security platform for sharing data and efficient access and discovery of data across an organization and/or inter-organizationally, while providing robust audit traceability. For example, some embodiments can include an audit module. Such module can be configured to trace data lineage and/or data authenticity. The audit module can be configured to generate an audit trail. Such audit trail can include various data, such as access authorization throughout the network. The audit trail functionalities can be configured to track of access authorization for transactions, records, and other network activity at any place in a network and/or through a string of networks and hosts.
Some embodiments can include a policy framework object model for data sharing on a SDF. The SDF can be implemented as a cross-domain topology model. The immutable data storage medium can be immutable off-chain data storage for the SDF, and a multi-layered ABAC security policy can be implemented for the SDF. A multi-party workflow for account keys and digital signatures management can be further implemented. A microservices-based access control model can be implemented to dynamically evaluate digital security policies for the SDF. Embodiments can include a cryptographic module. A cryptographic module can be configured to sign an atomic data transaction using a private-public key pair. A cryptographic module can be configured to achieve non-repudiation based on, for example, a digital signature.
Yet other embodiments can include an end-user interface and a smart contract module. The end-user interface can be utilized to create and manage a smart contract. The interface can be configured to manage the smart contract for data sharing.
An aspect can include a blockchain-based method for implementing a secure data fabric. The method can include providing an immutable data storage medium, providing a data sharing node, and implementing an attribute-based access control to create a secure data sharing environment. The immutable data storage medium can be configured to communicate with a network. The data sharing node can be configured to communicate with the network
Some embodiments can further include storing data access policies and/or metadata in the immutable data storage medium. Data associated with the metadata can be stored in the data sharing node according to the data access policies. The data access policies can be ABAC policies and/or include a multi-layered ABAC security policy. The method can include evaluating access to the data using the multi-layered ABAC security policy.
In other embodiments, the method can include generating an audit trail of access authorization in the network. The method can include cryptographically signing an atomic data transaction using a private-public key pair.
The present invention is further described in the detailed description which follows, in reference to the noted plurality of drawings by way of non-limiting examples of certain embodiments of the present invention, in which like numerals represent like elements throughout the several views of the drawings, and wherein:
A detailed explanation of the system, method, and exemplary embodiments of the present invention are described below. Exemplary embodiments described, shown, and/or disclosed herein are not intended to limit any claim, but rather, are intended to instruct one of ordinary skill in the art as to various aspects of the invention. Other embodiments can be practiced and/or implemented without departing from the scope and spirit of the invention.
Embodiments can include a secure data fabric (SDF). A SDF can include a security platform for sharing data, and efficient access and discovery of data across an organization and/or cross-organizations, while providing robust audit traceability. SDF can create a secure data sharing environment across disparate data stores and networks. SDF can leverage blockchain with attribute-based access control (ABAC) to create the secure data sharing environment. SDF can achieve this by, for example, allowing data discovery, and validating user permissions to access, without the need for duplicating data and sacrificing data integrity, authority, and/or non-repudiation.
SDF can include software that can be downloaded and/or installed (on premises, via a cloud, hybrid model (on premise and cloud combined) and/or via a network, such as a network of computers). Such SDF can be configured for use by an organization to provide secure data sharing and access controls for data users with access to the organization's network.
A REST API-based integration and/or web-based configurations can enable application owners to manage SDF for their applications, for example. Although not required, each SDF capability can be achieved with a distinct technology (such as blockchain and ABAC) and corresponding sets of tools (such as blockchain implementation, ABAC framework, and/or data catalog audit visualization).
Many capabilities are contemplated for a SDF. For example, blockchain-enabled software can securely manage access to a permissioned network of multiple disparate data sources with known identities. The SDF offers capabilities to leverage different blockchain protocols (e.g. Tendermint, Hyperledger, Ethereum, Hedera Hashgraph, etc.) without altering the APIs associated with data sharing. Here, transaction types can be data requests. Through a transparent, secure methodology for logging transactions, SDF can allow various entities to write entries into a verifiable record of information, and a community of authorized users can control how the record of information is amended and updated. An audit trail capability can enable tracking of access authorization for transactions, or records, at any place and time in a network, and/or through a string of networks and hosts. The latter function can provide a critical layer of data security to records, data elements, and/or intelligence products, while allowing universal access. The nodes simultaneously verify and record data access by users to allow tracking of data access at a granular level and shared via a virtual shared ledger with peers or those with a need to know.
SDF can extend a platform to facilitate data discovery. For example, a SDF can improve discovery through integration of data virtualization and/or cataloguing components within the secure data fabric.
Audit trail visualization can allow federation of transactional data, which enables robust details through graph representation. Embodiments can integrate several graphical algorithms, which can allow for further analysis and anomaly detection within audit logs. An auditing capability can reveal who, what, when, where, why, and how data is used. Reports can be generated by the system, by user type, user role, etc. Reports can be made available through, e.g., the administrative portal for the system owner following configuration of reporting structure and content as needed for IT or others.
A SDF can be an integration of various functionalities. In some embodiments, major functionalities can be generally grouped into data sharing, data access, data discovery, data lineage, and audit trail visualization. Data sharing in a SDF can enable data owners to define how to share their data internally and/or externally. Sharing policies can be decoupled and abstracted from physical data sources. Multi-dimensional authorization policies can be utilized for sharing data. Data access can utilize a granular role-based access control (RBAC) and/or ABAC. Authorization from authentication can be decoupled. Data access can also, or alternatively, utilize a zero-trust access policy and/or digital signatures. Data discovery can enable users with rich search and discovery capabilities. Discovery of data, whether the data source is physical or virtual, can be automated. A SDF can support data discovery of all types and formats, as well as from a variety of data sources, e.g. SQL, NoSQL, File Systems, etc. Audit trail visualization can allow graphical visualization of interactive multi-dimensional filtering, search, and audit analysis. It can provide real-time, human-friendly graphical layouts that can be synchronized with maps, charts, and/or timelines. Zero-trust framework can also be implemented to achieve reports of all transactions with authorization details including administrative actions.
A SDF can be implementation as a multi-layer, multi-level secure data-sharing system and/or software. The SDF can be implemented using a microservices-based architecture. That provides REST (representational state transfer) API-based integration interface. Because some SDF embodiments are designed to be applied to various application contexts, it can be architected to be portable, platform-independent, and vendor-neutral. To achieve this, SDF can utilize adapter patterns. An adapter pattern in this context means developing in a manner such that underlying technology can be interchanged without altering the user-facing APIs.
A SDF can have cross-domain topology. For example, a SDF can provides cross-domain (e.g. (Classified) high side/(Unclassified) low side) capabilities. The SDF can complement and can integrate with third-party solutions, such as Oracle's Data Guard, with clear separation of concern between the two. Data Guard tools address cross-domain networking, physical data transfer, network security policies, data flow governance etc. Additionally, the SDF can achieve the same separation of concerns between any logical or physical network boundary via secure connections between nodes and endpoints. The SDF can complement and/or improve such systems or functionality by, e.g., addressing cross-domain data sharing and access. Embodiments can achieve this by, e.g., combining multiple architectural elements, such as: data sharing policies (e.g., blockchain); data access policies (e.g., ABAC); data discovery (e.g., catalog, metadata, and tags); and/or pre-approval workflow for cross-domain data access request (smart contract).
Various embodiments can operate in different ways and with different configurations. One example can include a policy-based authorization framework. A SDF can execute a set of component-specific policies to determine authorization (i.e. allow access/deny access) to a data source and/or corresponding data elements for an incoming user request. A SDF policy framework can utilize flexible, extensible, portable and/or cumulative models, which can achieve a powerful authorization framework. A SDF policy can include delegated policies from major components, such as data sharing policies and data access policies. Such models can enable shared responsibility for authorization with separation from concerns encapsulated by each component. Policy can be made up of one or more sets of policy elements.
Each policy element can describe the subject requesting access to a resource, the type of action for the request, the environment the request is generated from, and/or the effect of the policy. A subject can be a user or non-user entity to be authenticated by the SSO component. Several examples of policy elements are shown in the figure, such as effect (allow or deny), subject (who/what is demanding access to an information asset), action (the action the subject wants to perform/do), resource (the item or information asset impacted by the action), and environment (the circumstances in which access is requested).
SDF can implement a delegated authority smart contract that is configurable through node policies to designate the authoritative (primary/elected) node with higher consensus power thus providing a mechanism for delegated authority to sign the final block during the consensus computation. This allows a set of N nodes (called consensus nodes or delegates) to cooperate in a global decentralized network where the finality of consensus can be traced through chain-of-custody, this tracing back to the authoritative (primary/elected) node. Through the delegated authority consensus smart contract, while the core consensus nodes enforce on-chain governance, the smart contract can ensure all nodes in the network, as a unique global state, view all these decisions (including transaction computation) consistently.
SDF can process an authorization request in multiple layers at multiple levels, for example when an authenticated end user makes a data request. Blockchain can provide a first-layer authorization based on, e.g., a comprehensive data sharing policy defined by a system owner. Data sharing policies can represent multi-dimensional policy framework including RBAC, ABAC attributes, security classifications, domains, environments, tags, and other factors. Each dimension can represent a policy with authorization details defined by, e.g., the system owner. A data sharing policy can determine whether a blockchain node can fulfill a request, for example whether it has data to share for the given request. In other words, it can authorize sharing its data to the end user. Each node can represent a data source and can have its own local policy, such as policies managed by its admin, e.g., a delegated admin model. Once authorized by a node, the request can then be processed by the data access authorization (ABAC policy) for the second-layer data access policy. At this level, ABAC policies can determine what data elements within an authorized data source the user has access to. In some embodiments, every data access request must pass these multiple layers of security and thereby enforce a zero-trust policy. Whether an application has internal or external data sources, SDF can leverage catalog tools, for example to use metadata for the policies.
Embodiments can provide an interface to seamlessly integrate with Enterprise SSO platforms to provide seamless user authentication. SSO can be a centralized session and user authentication service in which one set of login credentials can be used to access multiple applications. SDF can utilize multiple industry standard SSO protocol integration options with several identity providers (IDPs). SDF applications can be capable of integrating standard SSO protocols such as SAML 2.0, OpenID, OAuth 2.0, LDAP, etc.
User authentication can touch on a number of concepts. For example, several are provided for an embodiment shown in Table I.
Aspects of the user authentication module for an exemplary embodiment are provided in Table II.
Aspects of the SSO module for an exemplary embodiment are provided in Table III.
The protocol-based user authentication flow diagram illustrates an interaction between a SDF SSO application and an Enterprise SSO identity provider for successful high-level authentication steps. In an embodiment, when a SDF user accesses the SDF portal, the SDF SSO component sends http authentication request to Enterprise SSO, which prompts the user for appropriate login credential. Once the user provides a valid credential and the enterprise SSO authenticates the user successfully, it generates SAML token and redirects back to the SDF SSO, which displays the landing SDF portal-landing page.
Embodiments can also address user management. For example, a SDF can provide a user management module (sub-component) for facilitating user attributes that are specific to SDF. The SDF user management module can rely on the enterprise user directory for providing key user attributes and SDF can add additional attributes (extended attributes) that are specific to SDF in the local SDF user store. These additional SDF user attributes can be attributes that are essential for implementing business logic inside other SDF components such as ABAC. The user management module can interact with an enterprise user directory to collect core user attributes during SSO authentication where user attributes can be passed as parameters. A SDF user management component can interact with and retrieve user attributes as needed from enterprise user directory through service API calls or other mechanisms that are available.
User management can touch on a number of concepts. For example, several are provided for an embodiment shown in Table IV.
Aspects of the user management module for an exemplary embodiment are provided in Table V.
Aspects of the manage user module for an exemplary embodiment are provided in Table VI.
Upon successful authentication via SSO, users can be assigned a unique cryptographic key, if not already associated. That key can be utilized to digitally sign any transaction performed within the SDF. This digital signature provides non-repudiation, such that at any point in the future transaction authenticity can be verified by any member of the network. An embodiment of SDF can either utilize a single-use key from a hierarchically deterministic (HD) wallet or be bound to an organizational public key that is stored in an on-chain registry.
Embodiments can include a data sharing component, such as blockchain. For example, a SDF can utilize blockchain to authorize users and/or ABAC to provide users data access. The network can save the blockchain and audit activities on chain while, for example, saving a hash to the data that was searched so one can trace the lineage and authenticity of data while allowing the owner to maintain control and reducing the need for costly compute and storage solutions. The particular configuration can be a governance decision, allowing for scalability of the blockchain network and helping increase the performance. Generally speaking, the more data that is kept on chain, the more computational power and storage necessary to process blockchain transactions and the more costly the network O&M. By using a blockchain network embodiments achieve further benefits by using the smart contract feature, which addresses long-standing issues of user requested cross-domain searches. The smart contract feature can provide authorization, access, and auditability of requests, and can be integrated with existing technologies such as Data Guard solutions with clear separation of concern between the two. Data Guard tools typically address cross-domain networking, physical data transfer, network security policies, data flow governance. While embodiment can include such tools, a preferred embodiment complements those tools by addressing cross-domain data sharing and access. For example, each node in the blockchain can represents an organization that has data to share. A blockchain for the authorization module can be based on an organization data sharing policy. The data sharing policy can determine whether a node can fulfill a search/discovery request, i.e. whether it has data to share for the given request, and can authorize sharing its data to the end user. The data sharing policy can be multi-dimensional. For example, it can rely on combinations to user profile, RBAC, ABAC, resources, security classifications, releasability, and other factors as deemed necessary. Each node can have its own policy managed by, e.g., its admin to achieve a delegated admin model.
Application programming interfaces (APIs) can be provided to integrate various functionality. For example, data sharing policy APIs can be implemented.
Embodiments can be implemented with various data structures, such as the data sharing policy sample data structure shown below.
With further reference to
Further security cryptographic validity of the data sharing authorization request and data sharing authorization response objects stored in the DLT or blockchain network can be achieved. For example, a Merkle proof can be utilized to validate a Merkle tree, which can be created from the data sharing authorization request and data sharing authorization response objects. Any downstream microservice, process, and/or API can leverage this additional security by, for example, running a light client and validating the cryptographic integrity of the Data sharing authorization request and data sharing authorization response before processing.
Downstream microservices, processes, and/or APIs can post logging transactions to the DLT and/or blockchain network, for example by referencing the data sharing authorization request and data sharing authorization response, providing audit logging of the downstream processing or transmission of data. This can allow cryptographic guarantees to be extended to the microservice, process, or API.
Security appliances or highly secure computing platforms can be integrated into SDF to allow further end-to-end physical security in transmission of data between parties. The appliances can also commit audit logging of transmission of data, allowing the cryptographic guarantees to be extended to the security appliance or highly secure computing platform. Further examples are shown below:
Aspects of the data sharing authorization can be implemented with various data structures, such as the sample data structures shown below.
A node who participates in the data sharing workflow can initiate the workflow to request advanced authorization beyond what data sharing policies provide. Steps in the data sharing workflow can be time-based completion based on duration rules setup in each step. Participants in the workflow can approve or deny each step in the workflow. If a step is set to deny, the workflow process can be halted.
All Steps in the workflow process can be digitally signed for full immutable audit traceability. Once all workflow steps are completed and approved, the data sharing workflow can be combined with an existing data sharing workflow policy to grant advanced authorization. This advanced authorization can be based on time duration.
Further examples are shown below:
A sample JSON object for data sharing workflow is shown below.
A sample data structure for key management are provided below.
Embodiments can utilize various cryptographic validation techniques and/or algorithms, for example to achieve end-to-end validation of an immutable audit trail. These can include Merkle trees, which can be used in blockchains and off-chain immutable databases.
ABAC defines a data access control paradigm whereby access rights are granted to users through the use of policies that combine attributes together. The policies can use any type of attributes (user attributes, resource attributes, object, environment attributes etc.). This model supports Boolean logic, for example where rules contain “IF, THEN” statements about who is making the request, the resource, and the action. Unlike RBAC, which employs pre-defined roles that carry a specific set of privileges associated with them and to which subjects are assigned, the key difference with ABAC is the concept of policies that express a complex Boolean rule set that can evaluate many different attributes. Within the data access component, SDF implements ABAC policies in multiple layers keeping security and performance in mind. It is designed to process incoming data requests from simplest form to more complex structure. A request can include only a set of base user attributes, or it can contain additional conditions such as domain and environmental attributes along with tags and advance metadata. ABAC policies are designed to handle this complexity in a layered approach so that data owners can define the policies in incremental manner. User attributes are obtained from the SSO component while the metadata and tags are obtained from the data discovery component.
Data access authorization can be extended from the SDF policy-based authorization framework and can include ABAC specific rules. An example of a logical flow of ABAC policy execution that some embodiments can implement is as follows:
Policy Enforcement Point (PEP) intercepts and transfers it based on pre-defined logic; Policy Decision Point (PDP) utilizes pre-defined policies and data from the ABAC micro-services (PIP, DDS, ARS) in order to produce decisive policies or statement;
Authorization data is returned with an API Response;
(PEP)—Policy Enforcement Point (Gateway for Interception);
(PDP)—Policy Decision Point (Evaluates and Issues Authorization);
(DDS)—Data Distribution Service (Data Source/Metadata Management);
(PIP)—Policy Information Point (Policy Store); and
(ARS)—Attribute Registry Service (User, Action, Object Attributes)
A SDF administrative console can provides data owners a set of UI to define and manage the ABAC policies. The data access component can provide a set of policy management capabilities: Policy Backup, Policy Restoration, Batch Deleting Policies, Batch Creating Policies,
Automatic Multi-Policy Creation, Dependency Updates, and/or Policy Templates.
Embodiments can provide a loosely coupled integration between the SDF, data virtualization, and data catalog to restrict user and system access to connected data sources across multiple networks, as well as transformed, consumable data made available in memory to analytical applications. Embodiments can integrate a data catalog with an ABAC security policy and/or data virtualization components. Such integrations can enable limiting access to metadata within the data catalog based on a user's attributes and the ABAC policy. In turn, this enforcement only allows the user to access, view, and maintain the centralized catalog and glossary of data within the data virtualization platform for which they have access. Below are some of the features that can be integrated into the SDF Audit module:
data sources federated into a single, unified model;
graph visualization from RDBMS i.e. no need to convert to Graph database;
scalable, high performance, and flexible advanced graph layout and graph analytics;
incremental model population; and
authorization details can include data sharing policy response (e.g. blockchain) and data access policy response (e.g. ABAC) by each node.
As shown in the example of
SDF embodiments can expose its capabilities with REST APIs, which can be securely managed with an API gateway. The API gateway can act as the front door to the backend services of SDF by publishing only the required interfaces with validation of input and output parameters. Each incoming request is validated to ensure it is coming from an authenticated source with a valid session token. Internally, SDF components can also interact with each other via APIs to ensure modularity, high cohesion, loose coupling, data encapsulation and other sound design principles. All APIs define input and output in JSON format.
Embodiments can be implemented in a computer environment. For example, a computer can implement the algorithms and perform functions directed by programs stored in a computer-readable medium. Embodiments can take the form of hardware, software, or a combination of software and hardware. Embodiments can take the form of a computer-program product that includes computer-useable instructions embodied on one or more computer-readable media.
Techniques, methods, and systems described herein can be implemented in part or in whole using computer-based systems and methods. Additionally, computer-based systems and methods can be used to augment or enhance the functionality, increase the speed at which the functions can be performed, and provide additional features and aspects as a part of or in addition to those described herein.
Such hardware can include a general-purpose computer, a server, network, and/or cloud infrastructure and can have internal and/or external memory for storing data and programs such as an operating system (e.g., DOS, Windows2000™, Windows XP™, Windows NT™, Windows 7™, Windows8™, Windows 8.1™, Windows10™, OS/2, UNIX, Linux, Android, or iOS) and one or more application programs. Examples of application programs can include computer programs implementing the techniques described herein for customization, authoring applications (e.g., word processing programs, database programs, spreadsheet programs, or graphics programs) capable of generating documents or other electronic content; client applications (e.g., an Internet Service Provider (ISP) client, an e-mail client, short message service (SMS) client, or an instant messaging (IM) client) capable of communicating with devices, accessing various computer resources, and viewing, creating, or otherwise manipulating electronic content; and browser applications (e.g., Microsoft's Internet Explorer) capable of rendering standard Internet content and other content formatted according to standard protocols such as the Hypertext Transfer Protocol (HTTP). One or more of the application programs can be installed on the internal or external storage of the general-purpose computer. Alternatively, application programs can be externally stored in or performed by one or more device(s) external to the general-purpose computer.
The computer preferably includes input/output interfaces that enables wired or wireless connection to various devices. In one implementation, a processor-based system of the general-purpose computer can include a main memory, preferably random access memory (RAM), and can also include secondary memory, which may be a tangible computer-readable medium. The tangible computer-readable medium memory can include, for example, a hard disk drive or a removable storage drive, a flash-based storage system or solid-state drive, a floppy disk drive, a magnetic tape drive, an optical disk drive (Blu-Ray, DVD, CD drive), magnetic tape, standalone RAM disks, drive, etc. The removable storage drive can read from or write to a removable storage medium. A removable storage medium can include a disk, magnetic tape, optical disk (Blu-Ray disc, DVD, CD) a memory card (CompactFlash card, Secure Digital card, Memory Stick), etc., which can be removed from the storage drive used to perform read and write operations. As will be appreciated, the removable storage medium can include computer software or data.
In alternative embodiments, the tangible computer-readable medium memory can include other similar means for allowing computer programs or other instructions to be loaded into a computer system. Such means can include, for example, a removable storage unit and an interface. Examples of such can include a program cartridge and cartridge interface (such as the found in video game devices), a removable memory chip (such as an EPROM or flash memory) and associated socket, and other removable storage units and interfaces, which allow software and data to be transferred from the removable storage unit to the computer system.
The server can include the general-purpose computer discussed above or a series of containerized applications running on commodity or cloud-hosted hardware. The SDF can be implemented within a network, for example, the Internet, the World Wide Web, WANs, LANs, analog or digital wired and wireless networks (e.g., Public Switched Telephone Network (PSTN), Integrated Services Digital Network (ISDN), and Digital Subscriber Line (xDSL)), radio, television, cable, or satellite systems, and other delivery mechanisms for carrying data. A communications link can include communication pathways that enable communications through one or more networks.
All of the methods and systems disclosed and claimed herein can be made and executed without undue experimentation in light of the present disclosure. While the apparatus and methods of this invention have been described in terms of preferred embodiments, it will be apparent to those of skill in the art that variations may be applied to the methods and in the steps or in the sequence of steps of the method described herein without departing from the concept, spirit and scope or the invention. In addition, from the foregoing it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages. It will be understood that certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations. This is contemplated and within the scope of the appended claims. All such similar substitutes and modifications apparent to those skilled in the art are deemed to be within the spirit and scope of the invention as defined by the appended claims.
Number | Date | Country | |
---|---|---|---|
63054225 | Jul 2020 | US |