Encrypting data using a private key, and encrypting the private key by generating a first encrypted version of the private key using a first master key, and generating a second encrypted version of the private key using a second master key. The first master key is split into shares including a user input key share derived from user authentication data, and the second master key is split into shares including a remote key share stored on a remote server. data access when the device is offline is provided by reconstructing the first master key using the user input key share, in order to decrypt the first encrypted version of the private key. data access when the device is online is provided by reconstructing the second master key using the remote key share, in order to decrypt the second encrypted version of the private key.
|
1. A computer-implemented method of protecting sensitive data on a device, comprising executing, on at least one processor, the steps of:
encrypting the sensitive data using a private key;
encrypting the private key by i) generating a first encrypted version of the private key by using a first master key to encrypt the private key, and ii) generating a second encrypted version of the private key by using a second master key to encrypt the private key;
splitting the first master key into a plurality of shares including a user input key share derived from user authentication input data;
splitting the second master key into a plurality of shares including a remote key share and transmitting the remote key share from the device to a remote server;
destroying the first master key and the second master key; and
processing a plurality of requests to access the sensitive data subsequent to the first master key and the second master key being destroyed, by initially determining for each of the requests whether the device is online, and
in response to determining, for a first one of the requests, that the device is offline, reconstructing the first master key using at least the user input key share, obtaining the private key by decrypting the first encrypted version of the private key using the first master key, and obtaining the sensitive data by decrypting the encrypted data using the private key, and
in response to determining, for a second one of the access requests, that the device is online, reconstructing the second master key using at least the remote key share retrieved from the remote server, obtaining the private key by decrypting the second encrypted version of the private key using the second master key, and obtaining the sensitive data by decrypting the encrypted data using the private key.
17. A non-transitory computer readable medium for protecting sensitive data on a device, comprising instructions stored thereon, that when executed on a processor, perform the steps of:
encrypting the sensitive data using a private key;
encrypting the private key by i) generating a first encrypted version of the private key by using a first master key to encrypt the private key, and ii) generating a second encrypted version of the private key by using a second master key to encrypt the private key;
splitting the first master key into a plurality of shares including a user input key share derived from user authentication input data;
splitting the second master key into a plurality of shares including a remote key share and transmitting the remote key share from the device to a remote server;
destroying the first master key and the second master key; and
processing a plurality of requests to access the sensitive data subsequent to the first master key and the second master key being destroyed, by initially determining for each of the requests whether the device is online, and
in response to determining, for a first one of the requests, that the device is offline, reconstructing the first master key using at least the user input key share, obtaining the private key by decrypting the first encrypted version of the private key using the first master key, and obtaining the sensitive data by decrypting the encrypted data using the private key, and
in response to determining, for a second one of the access requests, that the device is online, reconstructing the second master key using at least the remote key share retrieved from the remote server, obtaining the private key by decrypting the second encrypted version of the private key using the second master key, and obtaining the sensitive data by decrypting the encrypted data using the private key.
9. A device, comprising:
at least one processor;
a memory having sensitive data and program code stored thereon, the program code for protecting the sensitive data, wherein the program code, when executed by the processor, causes the processor to
encrypt the sensitive data using a private key,
encrypt the private key by i) generating a first encrypted version of the private key by using a first master key to encrypt the private key, and ii) generating a second encrypted version of the private key by using a second master key to encrypt the private key,
split the first master key into a plurality of shares including a user input key share derived from user authentication input data,
split the second master key into a plurality of shares including a remote key share and transmitting the remote key share from the device to a remote server;
destroy the first master key and the second master key; and
process a plurality of requests to access the sensitive data subsequent to the first master key and the second master key being destroyed, by initially determining for each of the requests whether the device is online, and
in response to determining, for a first one of the requests, that the device is offline, reconstruct the first master key using at least the user input key share, obtaining the private key by decrypting the first encrypted version of the private key using the first master key, and obtaining the sensitive data by decrypting the encrypted data using the private key, and
in response to determining, for a second one of the access requests, that the device is online, reconstructing the second master key using at least the remote key share retrieved from the remote server, obtaining the private key by decrypting the second encrypted version of the private key using the second master key, and obtaining the sensitive data by decrypting the encrypted data using the private key.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
generating a content protection key pair for the device, wherein the content protection key pair includes the private key and a public key; and
transmitting the public key from the device to the remote server.
7. The method of
wherein reconstructing the first master key includes generating the user input key share by applying the key derivation function to password information received from a user interface of the device.
8. The method of
generating an online local key share as a random symmetric encryption key;
wherein splitting the first master key includes generating an offline local key share as an output of an exclusive-OR (XOR) operation performed on the user input key share and the first master key;
wherein splitting the second master key includes generating the remote key share as an output of an exclusive-OR (XOR) operation performed on the second master key and the online local key share;
wherein reconstructing the second master key includes performing an authentication operation with the remote server to obtain the remote key share and setting the second master key to an output of an exclusive-OR (XOR) operation performed on the online local key share and the remote key share; and
wherein reconstructing the first master key includes setting the first master key to an output of an exclusive-OR (XOR) operation performed on the remote key share and the offline local key share.
10. The device of
11. The device of
12. The device of
13. The device of
14. The device of
generate a content protection key pair for the device, wherein the content protection key pair includes the private key and a public key; and
transmit the public key from the device to the remote server.
15. The device of
split the first master key into a plurality of shares by, at least in part, generating the user input key share as an output of a key derivation function applied to a password of a user authorized to use the device; and
reconstruct the first master key by, at least in part, generating the user input key share by applying the key derivation function to password information received from a user interface of the device.
16. The device of
generate an online local key share as a random symmetric encryption key;
wherein the program code, when executed by the processor, causes the processor to split the first master key by, at least in part, generating an offline local key share as an output of an exclusive-OR (XOR) operation performed on the user input key share and the first master key;
wherein the program code, when executed by the processor, causes the processor to split the second master key by, at least in part, generating the remote key share as an output of an exclusive-OR (XOR) operation performed on the second master key and the online local key share;
wherein the program code, when executed by the processor, causes the processor to reconstruct the second master key by, at least in part, performing an authentication operation with the remote server to obtain the remote key share and setting the second master key to an output of an exclusive-OR (XOR) operation performed on the online local key share and the remote key share; and
wherein the program code, when executed by the processor, causes the processor to reconstruct the first master key by, at least in part, setting the first master key to an output of an exclusive-OR (XOR) operation performed on the remote key share and the offline local key share.
|
As it is generally known, a cryptographic key (or simply “key”) is used by an encryption circuit or logic to determine how input data is to be encrypted and/or decrypted. For example, a key may specify a particular transformation to be performed on input data during encryption, and/or the reverse process during decryption. Keys may also be used in other types of cryptographic operations, such as generating digital signatures, and/or message authentication.
Both asymmetric cryptography and symmetric cryptography make use of cryptographic keys. Asymmetric cryptography, also known as public-key cryptography, employs key pairs, each of which is made up of two separate but related keys, i.e. a public key and a private key. While the private key must be maintained as a secret by the entity to which the key pair is assigned, the public key is made public. In public-key cryptography, data encrypted using a public key of given key pair can only be decrypted by the private key of the same key pair. The private key may also be used to create a digital signature for a message or other data that can be processed using the corresponding public key to verify that the message originated with the holder of the private key. In contrast, in symmetric cryptography, a single key is used for purposes of both encryption and decryption.
Some existing systems have used a “master encryption key” to encrypt highly sensitive data, such as other cryptographic keys. In order to protect the sensitive data encrypted by a master encryption key, the master encryption key itself must be securely and privately maintained. Otherwise, the security of the sensitive data stored in individual devices and/or across an entire distributed system may be compromised.
Previous approaches to protecting highly sensitive data using a master encryption key have employed master encryption key splitting based on a (k, n) threshold scheme, in which a master encryption key (MEK) is split into n key shares MEK1, . . . MEKn such that (i) possession of any k or more key shares allows reconstruction of the master encryption key, and (ii) the master encryption key cannot be determined based on k−1 or fewer key shares. An example of such a threshold scheme is described in “How to Share a Secret” by Adi Shamir, Communications of the ACM, November 1979, Volume 22, Number 11. However, while such threshold schemes are typically scalable, they are very complex for most software developers to implement. As a result, approaches to protecting sensitive data based on such threshold schemes are likely to have bugs and/or design flaws that make them vulnerable to attack.
Additionally, it is sometimes desirable to apply different access control protocols when granting access to sensitive data stored on a client device, depending on whether the device is operating online or offline. For example, in the case where the sensitive data securely stored on a client device is a key that enables access to other data, some of which locally stored on the device itself, and some of which is located remotely. Since the locally stored and remotely stored data may have different levels of sensitivity, it may be desirable to employ one level of access control when granting access to the sensitive data/key when the device is online, and another level of access control when granting access to the sensitive data/key when the device is offline.
To address these and other shortcomings of previous solutions, a system is disclosed for protecting sensitive data on a client device, such as a mobile computing device, that encrypts the sensitive data using a private key, and that then encrypts the private key by i) generating a first (or “offline”) encrypted version of the private key by using a first (or “offline”) master key to encrypt the private key, and ii) generating a second (or “online”) encrypted version of the private key by using an second (or “online”) master key to encrypt the private key. The disclosed system then splits the first master key into multiple shares, including a user input key share derived from user authentication input data, and splits the second master key into multiple shares including a remote key share. The remote key share is transmitted from the device to a remote server, the first and second encrypted versions of the private key are persistently stored on the device, and the first master key and second master key are destroyed.
When requests to access the sensitive data are received, the disclosed system processes each request by initially determining whether the device is online. Processing of the requests further includes, in response to determining, for a first one of the requests, that the device is offline at the time at which the first one of the requests is received, reconstructing the first master key based at least in part on the user input key share, obtaining the private key by decrypting the first encrypted version of the private key using the first master key, and obtaining the sensitive data by decrypting the encrypted sensitive data using the private key. Processing of the requests further includes, in response to determining, for a second one of the access requests, that the device is online at the time the second one of the requests is received, reconstructing the second master key based at least in part on the remote key share, obtaining the private key by decrypting the second encrypted version of the private key using the second master key, and obtaining the sensitive data by decrypting the encrypted sensitive data using the private key.
In another aspect of the disclosed system, splitting the second master key may include generating a local key share that is the output of an exclusive-OR (XOR) operation performed on the user input key share and the first master key.
In another aspect of the disclosed system, reconstructing the first master key using the user input key share may include setting the first master key to an output of an exclusive-OR (XOR) operation performed on the user input key share and the local key share.
In another aspect of the disclosed system, splitting the second master key may include generating the remote key share as an output of an exclusive-OR (XOR) operation performed on the local key share and the second master key.
In another aspect of the disclosed system, reconstructing the second master key using the remote key share may include performing an authentication operation with the remote server to obtain the remote key share, and setting the second master key to an output of an exclusive-OR (XOR) operation performed on the local key share and the remote key share.
In another aspect of the disclosed system, the private key is part of a content protection key pair generated for the device, and the content protection key pair further includes a public key that is transmitted from the device to the remote server.
In another aspect of the disclosed system, splitting the first master key into a plurality of shares may include generating the user input key share as an output of a transformation function such as a cryptographic collision resistant hash function or an appropriate key derivation function applied to a password of a user authorized to use the device, and reconstructing the first master key may include generating the user input key share by applying the same function to password information received through a user interface of the device from a current user of the device.
In another aspect of the disclosed system, an online local key share may be a randomly generated symmetric encryption key, and splitting the first master key may include generating an offline local key share that is the output of an exclusive-OR (XOR) operation performed on the user input key share and the first master key. Splitting the second master key may include generating the remote key share as an output of an exclusive-OR (XOR) operation performed on the second master key and the online local key share.
Reconstructing the second master key may include performing an authentication operation with the remote server to obtain the remote key share and setting the second master key to an output of an exclusive-OR (XOR) operation performed on the online local key share and the remote key share, and reconstructing the first master key includes setting the first master key to an output of an exclusive-OR (XOR) operation performed on the remote key share and the offline local key share.
In an embodiment in which two different local key shares are generated, one for handling requests to access the sensitive data when the device is offline (i.e. an offline local key share), and one for handling requests to access the sensitive data when the device is online (i.e. an online local key share), different access control protocols may be used to control access to the two local key shares. For example, more rigorous authentication techniques may be applied when a user seeks to access the sensitive data when the device is online than when the device is offline.
Embodiments of the disclosed system may provide significant advantages over previous technologies. Embodiments of the disclosed system may, for example, avoid the complexities concomitant with previous approaches that use a (k,n) threshold scheme to provide key splitting. Accordingly, embodiments of the disclosed system may be less likely to have bugs and/or design flaws that make them vulnerable to attack.
Additionally, the disclosed system may be embodied to apply different access control protocols when granting access to different local key shares that are needed to access sensitive data stored on a client device, depending on whether the device is operating online or offline.
The foregoing and other objects, features and advantages will be apparent from the following description of particular embodiments of the present disclosure, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of various embodiments of the present disclosure.
Also shown in
In the Client Device 100 of
An example of steps performed during the operation of Client Device 100 in one embodiment of the disclosed system in order to encrypt sensitive data, and to generate and split master encryption keys, is now described with additional reference to the steps shown in the flow chart of
At step 200 of
At step 202 of
At step 204 of
At step 206 of
At step 208 of
In one embodiment, the result of applying the key derivation function to a user's password or the like may be further transformed to generate a value of KS_pass 122 having a byte size equal to that of KS_device 134 and KS_remote 132.
At step 210 of
At step 212 of
As shown in the preceding steps in
At step 214 of
At step 216 of
At step 218, the disclosed system destroys MK_offline 124 and MK_online 126, for example by deleting all copies of MK_offline 124 and MK_online 126 from Client Device 100, e.g. from Memory/Program Storage 108.
Examples of steps performed during the operation of Client Device 100 in one embodiment of the disclosed system to reconstruct master encryption keys and to provide access to previously encrypted sensitive data, is now described with additional reference to the steps shown in the flow charts of
At step 402, the disclosed system receives some amount of user authentication input data from a current user of Client Device 100. The user authentication input data received at step 402 is required for the user to gain access to either the Client Device 100, and/or to data stored on the Client Device 100, and/or to one or more services that are available through or using the Client Device 100. For example, the authentication input data received from a current user of Client Device 100 in step 402 may include or consist of authentication data collected from the user by Client Device 100 using a variety of user gesture verification methods including Personal Identification Number (PIN) codes, passwords, biometrics, or using external tokens such as wearable devices. In one embodiment, the authentication data received from the user at step 402 may include authentication information entered into one or more forms displayed on Client Device 100, shown for purposes of illustration by Authentication Data Input Form 318 displayed within User Interface 316 on the Display Device 110 of Client 100. As further shown in
At step 404, the disclosed system derives a user input key share, e.g. KS_pass 322 shown in
At step 406 of
At step 408 of
At step 410 of
At step 412 of
At step 502, the Client Device 100 authenticates to a remote server, e.g. Remote Server 150. For example, at step 502 the Client Device 100 authenticates to the Remote Server 150 using asymmetric cryptography, combined with device identification and risk based authentication, in order to establish to Remote Server 150 that Client Device 100 and/or a current user of Client Device 100 is authorized to communicate with Remote Server 150 and/or access data or services provided by Remote Server 150. As a result of Client Device 100 and/or a current user of Client Device 100 successfully authenticating to Remote Server 150, Remote Server 150 issues Client Device 100 a transport level certificate for secure communication with the Remote Server 150. Further during the authentication process performed between the Client Device 100 and the Remote Server 150, Remote Server 150 transmits a copy of the remote key share for Client Device 100. For example, when the Client Device 100 successfully authenticates to Remote Server 150, Remote Server 150 transmits KS_Remote_copy 162 to Client Device 100. KS_Remote_copy 162 is a copy of KS_remote 132 shown in
At step 504 of
At step 506 of
At step 508 of
At step 510 of
An example of steps performed during the operation of Client Device 100 in the alternative embodiment of the disclosed system, in order to encrypt sensitive data, and to generate and split master encryption keys, is now described with additional reference to the steps shown in the flow charts of
At step 702 of
At step 704 of
At step 706 of
At step 708 of
At step 710, the disclosed system persistently stores pK_device-online-wrapped 138 within Persistent Storage 106.
At step 712, the disclosed system destroys MK_online 126 by deleting all copies of MK_online 126 from Client Device 100, e.g. from Memory/Program Storage 108.
Now with reference to
At step 804 of
At step 806 of
At step 808 of
At step 810 of
At step 812 of
At step 814 of
Examples of steps performed during the operation of Client Device 100 in the alternative embodiment of
At step 1002, the disclosed system receives some amount of user authentication input data from a current user of Client Device 100. The user authentication input data received at step 402 is required for the user to gain access to either the Client Device 100, and/or to data stored on the Client Device 100, and/or to one or more services that are available through or using the Client Device 100. For example, the authentication input data received from a current user of Client Device 100 in step 1002 may include or consist of authentication data collected from the user by Client Device 100 using a variety of user gesture verification methods including Personal Identification Number (PIN) codes, passwords, biometrics, or using external tokens such as wearable devices. In one embodiment, the authentication data received from the user at step 1002 may include authentication information entered into one or more forms displayed on Client Device 100, shown for purposes of illustration by Authentication Data Input Form 318 displayed within User Interface 316 on the Display Device 110 of Client 100. As further shown in
At step 1004, the disclosed system derives a user input key share, e.g. KS_pass 322 shown in
At step 1006 of
At step 1008 of
At step 1010 of
At step 1012 of
At step 1102, the Client Device 100 authenticates to a remote server, e.g. Remote Server 150. For example, at step 1102 the Client Device 100 authenticates to the Remote Server 150 using asymmetric cryptography, combined with device identification and risk based authentication, in order to establish to Remote Server 150 that Client Device 100 and/or a current user of Client Device 100 is authorized to communicate with Remote Server 150 and/or access data or services provided by Remote Server 150. As a result of Client Device 100 and/or a current user of Client Device 100 successfully authenticating to Remote Server 150, Remote Server 150 issues Client Device 100 a transport level certificate for secure communication with the Remote Server 150. Further during the authentication process performed between the Client Device 100 and the Remote Server 150, Remote Server 150 transmits a copy of the remote key share for Client Device 100. For example, when the Client Device 100 successfully authenticates to Remote Server 150, Remote Server 150 transmits KS_remote_copy 162 to Client Device 100. KS_remote_copy 162 is a copy of KS_remote 132 shown in
At step 1104 of
At step 1106 of
At step 1108 of
At step 1110 of
Those skilled in the art will recognize that the disclosed system is significantly more than merely the abstract idea of encrypting and decrypting data. Instead, the disclosed system addresses various specific shortcomings arising in previous technical solutions, including shortcomings arising from the complexity of using master encryption key splitting based on a (k, n) threshold scheme. In contrast to prior approaches to protecting sensitive data based on such threshold schemes, the disclosed system is less likely to have bugs and/or design flaws that would make it vulnerable to attack. The disclosed system also provides the ability to use different access control protocols when granting access to sensitive data stored on a client device, depending on whether the device is operating online or offline. Accordingly, the disclosed system may be effectively used to securely store sensitive data securely on a client device that includes a key that enables access to other data, some of which locally stored on the device itself, and some of which is located remotely. Since the locally stored and remotely stored data may have different levels of sensitivity, the disclosed system enables the use of one level of access control when granting access to the sensitive data/key when the device is online, and another, e.g. higher level of access control when granting access to the sensitive data/key when the device is offline.
While the above description provides examples of embodiments using various specific terms to indicate specific systems, devices, and/or components, such terms are illustrative only, and are used only for purposes of convenience and concise explanation. The disclosed system is not limited to embodiments including or involving systems, devices and/or components identified by the terms used above.
As will be appreciated by one skilled in the art, aspects of the technologies disclosed herein may be embodied as a system, method or computer program product. Accordingly, each specific aspect of the present disclosure may be embodied using hardware, software (including firmware, resident software, micro-code, etc.) or a combination of software and hardware. Furthermore, aspects of the technologies disclosed herein may take the form of a computer program product embodied in one or more non-transitory computer readable storage medium(s) having computer readable program code stored thereon for causing a processor and/or computer system to carry out those aspects of the present disclosure.
Any combination of one or more computer readable storage medium(s) may be utilized. The computer readable storage medium may be, for example, but not limited to, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any non-transitory tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
The figures include block diagram and flowchart illustrations of methods, apparatus(s) and computer program products according to one or more embodiments of the invention. It will be understood that each block in such figures, and combinations of these blocks, can be implemented by computer program instructions. These computer program instructions may be executed on processing circuitry to form specialized hardware. These computer program instructions may further be loaded onto a computer or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create means for implementing the functions specified in the block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the block or blocks.
Those skilled in the art should also readily appreciate that programs defining the functions of the present invention can be delivered to a computer in many forms; including, but not limited to: (a) information permanently stored on non-writable storage media (e.g. read only memory devices within a computer such as ROM or CD-ROM disks readable by a computer I/O attachment); or (b) information alterably stored on writable storage media (e.g. floppy disks and hard drives).
While the invention is described through the above exemplary embodiments, it will be understood by those of ordinary skill in the art that modification to and variation of the illustrated embodiments may be made without departing from the inventive concepts herein disclosed.
Patent | Priority | Assignee | Title |
10250385, | Feb 18 2016 | Cloud9 Technologies, LLC | Customer call logging data privacy in cloud infrastructure |
11063754, | May 01 2018 | Huawei Technologies Co., Ltd.; HUAWEI TECHNOLOGIES CO , LTD | Systems, devices, and methods for hybrid secret sharing |
11146392, | Mar 15 2018 | tZERO IP, LLC | Splitting encrypted key and encryption key used to encrypt key into key components allowing assembly with subset of key components to decrypt encrypted key |
11184351, | Sep 04 2019 | Bank of America Corporation | Security tool |
11233658, | Aug 14 2019 | OX LABS INC | Digital transaction signing for multiple client devices using secured encrypted private keys |
11251944, | Feb 21 2020 | Nutanix, Inc.; Nutanix, Inc | Secure storage and usage of cryptography keys |
11271734, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping for verifying device capabilities |
11303437, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping with key thresholding |
11308486, | Feb 23 2016 | nChain Licensing AG | Method and system for the secure transfer of entities on a blockchain |
11316839, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping for temporally restricting data access |
11347838, | Feb 23 2016 | nChain Licensing AG | Blockchain implemented counting system and method for use in secure voting and distribution |
11349645, | Feb 23 2016 | nChain Licensing AG | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
11349821, | Jul 26 2017 | System and process for TLS exceptionally verified eavesdropping | |
11356280, | Feb 23 2016 | nChain Licensing AG | Personal device security using cryptocurrency wallets |
11373152, | Feb 23 2016 | nChain Licensing AG | Universal tokenisation system for blockchain-based cryptocurrencies |
11410145, | Feb 23 2016 | nChain Licensing AG | Blockchain-implemented method for control and distribution of digital content |
11411728, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping with individual key fragments |
11411938, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping with integrated key fragments |
11424920, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping for cryptographically controlling data access |
11436352, | Aug 19 2019 | Red Hat, Inc. | Proof-of-work key wrapping for restricting data execution based on device capabilities |
11444755, | Oct 12 2018 | tZERO IP, LLC | Doubly-encrypted secret parts allowing for assembly of a secret using a subset of the doubly-encrypted secret parts |
11455378, | Feb 23 2016 | nChain Licensing AG | Method and system for securing computer software using a distributed hash table and a blockchain |
11601264, | Oct 12 2018 | tZERO IP, LLC | Encrypted asset encryption key parts allowing for assembly of an asset encryption key using a subset of the encrypted asset encryption key parts |
11606219, | Feb 23 2016 | nChain Licensing AG | System and method for controlling asset-related actions via a block chain |
11621833, | Feb 23 2016 | nChain Licensing AG | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
11625694, | Feb 23 2016 | nChain Licensing AG | Blockchain-based exchange with tokenisation |
11658810, | Mar 23 2016 | TELEFONAKTIEBOLAGET LM ERICSSON PUBL | Cyber-physical context-dependent cryptography |
11716198, | Jul 31 2019 | Bank of America Corporation | Smartwatch one-time password (“OTP”) generation |
11722314, | Aug 14 2019 | OX Labs Inc. | Digital transaction signing for multiple client devices using secured encrypted private keys |
11727501, | Feb 23 2016 | nChain Licensing AG | Cryptographic method and system for secure extraction of data from a blockchain |
11755718, | Feb 23 2016 | nChain Licensing AG | Blockchain implemented counting system and method for use in secure voting and distribution |
11764951, | Oct 12 2018 | tZERO IP, LLC | Doubly-encrypted secret parts allowing for assembly of a secret using a subset of the doubly-encrypted secret parts |
11838412, | Sep 30 2015 | Pure Storage, Inc. | Secret regeneration from distributed shares |
11842395, | Dec 23 2020 | AVA LABS, INC | Secure and trustworthy computing environments for exchanges |
11843686, | Aug 27 2019 | Intertrust Technologies Corporation | Multi-party cryptographic systems and methods |
11888975, | Mar 15 2018 | tZERO IP, LLC | Splitting encrypted key and encryption key used to encrypt key into key components allowing assembly with subset of key components to decrypt encrypted key |
11936774, | Feb 23 2016 | nChain Licensing AG | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
11968186, | Oct 25 2004 | Security First Innovations, LLC | Secure data parser method and system |
11972422, | Feb 23 2016 | nChain Licensing AG | Registry and automated management method for blockchain-enforced smart contracts |
11983419, | Sep 23 2021 | UAB 360 IT | Sharing data in an organized storage system |
12093412, | Nov 18 2005 | Security First Innovations, LLC | Secure data parser method and system |
12107952, | Feb 23 2016 | nChain Licensing AG | Methods and systems for efficient transfer of entities on a peer-to-peer distributed ledger using the blockchain |
12112373, | Jul 21 2022 | ENCLAVE MARKETS INC | Secure and trustworthy crossing network for transferring assets outside of exchange |
12141299, | Nov 18 2005 | Security First Innovations, LLC | Secure data parser method and system |
12147551, | Nov 18 2005 | Security First Innovations, LLC | Secure data parser method and system |
12182805, | Feb 23 2016 | nChain Licensing AG | Tokenisation method and system for implementing exchanges on a blockchain |
ER496, | |||
ER5660, | |||
ER7303, | |||
ER9237, |
Patent | Priority | Assignee | Title |
8184813, | Jan 24 2005 | NATIONAL UNIVERSITY CORPORATION NARA INSTITUTE OF SCIENCE AND TECHNOLOGY | Encryption key generation device |
8634553, | Nov 05 2007 | TOKYO METROPOLITAN PUBLIC UNIVERSITY CORPORATION | Encryption key generation device |
8855318, | Apr 02 2008 | Cisco Technology, Inc | Master key generation and distribution for storage area network devices |
20050086471, | |||
20100020966, |
Date | Maintenance Fee Events |
Nov 19 2020 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Nov 22 2024 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Jun 06 2020 | 4 years fee payment window open |
Dec 06 2020 | 6 months grace period start (w surcharge) |
Jun 06 2021 | patent expiry (for year 4) |
Jun 06 2023 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 06 2024 | 8 years fee payment window open |
Dec 06 2024 | 6 months grace period start (w surcharge) |
Jun 06 2025 | patent expiry (for year 8) |
Jun 06 2027 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 06 2028 | 12 years fee payment window open |
Dec 06 2028 | 6 months grace period start (w surcharge) |
Jun 06 2029 | patent expiry (for year 12) |
Jun 06 2031 | 2 years to revive unintentionally abandoned end. (for year 12) |