IP Library Granted Patent US 11,526,879
Granted Patent B2
US 11,526,879 · App. 17/652,406 · Granted Dec 13, 2022

Method and system for zero-knowledge and identity based key management for decentralized applications

Inventors: Vijay Madisetti (Johns Creek, GA); Arshdeep Bahga (Chandigarh, IN)
Assignee: Vijay Madisetti
G06Q20/3829H04L9/14H04L63/061G06F21/33G06F21/6245G06F2221/2115G06Q2220/00H04L9/0643H04L9/3236H04L9/3297H04L9/50H04L2463/061
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,526,879
App. No.
17/652,406
Granted
Dec 13, 2022
Kind
B2
Abstract

A method for implementing zero-knowledge private key management for decentralized applications including receiving an encrypted private key and user identification information, storing the encrypted private key, receiving a session request from a decentralized application, establishing a session, transmitting a response to the session request to the decentralized application, receiving a session approval from the client application, updating the session with the information comprised by the session approval, and transmitting the public key and the blockchain network selection to the decentralized application.

Claims (131)

1. A method for implementing zero-knowledge private key management for decentralized applications on a server device comprising server software, referred to as a verifier server, the method comprising:

receiving at the verifier server an encrypted private key and user identification information from a client application;

storing the encrypted private key on the verifier server;

receiving at the verifier server a session request from a decentralized application;

establishing a session responsive to the session request;

transmitting a response to the session request to the decentralized application, the response comprising session information;

receiving at the verifier server a session approval from the client application at the verifier server, the session approval comprising a public key and a blockchain network selection;

updating the session with the information comprised by the session approval; and

transmitting the public key and the blockchain network selection to the decentralized application.

2. The method of claim 1 further comprising:

receiving at the verifier server a transaction signature request from the decentralized application;

transmitting the transaction signature request to the client application;

receiving an encrypted private key request from the client application at the verifier server; and

transmitting the encrypted private key to the client application responsive to the encrypted private key request.

3. The method of claim 1 further comprising performing a bidirectional authentication procedure between the verifier server and the client application.

4. The method of claim 3 wherein performing the bidirectional authentication procedure comprises:

sending a server authentication to the client application;

receiving a client authentication from the client application;

establishing a secure connection between the verifier server and the client application; and

sending and receiving encrypted messages between the verifier server and the client application, wherein the encrypted messages are encrypted with a cipher key and the integrity of the messages is confirmed by use of an integrity key.

5. The method of claim 3 , wherein performing the bidirectional authentication procedure comprises:

receiving at the verifier server a zero-knowledge session initiation request from the client application, the zero-knowledge session initiation request comprising a user ID and a client ID;

generating a random number;

generating a sequence number responsive to the zero-knowledge session initiation request;

computing a first authentication output using a function that uses the user ID and the random number as inputs;

generating a response using a function that uses the first authentication output as an input, defining a local response;

computing an anonymity key using a function that uses the first authentication output as an input;

computing a message authentication code using a function that uses the first authentication output, the sequence number, and the client ID as inputs;

generating a zero-knowledge authentication number by concatenating an output of an exclusive-or operation with the sequence number and the anonymity key with the concatenation of the client ID and the message authentication code;

transmitting the random number and the zero-knowledge authentication number to the client application;

receiving at the verifier server a response from the client application, defining a received response;

comparing the received response with the local response to determine if they match; and

upon determining the received response matches the local response, transmitting a session ID to the client application.

6. The method of claim 5 further comprising:

computing a cypher key using a function that uses first authentication output as an input;

computing an integrity key using a function that uses first authentication output as an input;

receiving at the verifier server an encrypted integrity-protected message from the client application, the encrypted integrity-protected message being the concatenation of an encrypted message and an integrity value; and

performing a message authentication procedure comprising:

decrypting the encrypted message with the cypher key, defining a decrypted message; and

comparing the integrity value with the output of an integrity algorithm using the integrity key and the decrypted message as inputs, defining a local integrity value;

wherein the encrypted integrity-protected message is authenticated if the integrity value equals the local integrity value.

7. The method of claim 1 further comprising:

receiving at the verifier server at least one of an interaction and a transaction from the client application;

applying a hashing function at the client application to the at least one of interaction or transaction sent to the verifier, defining a hashed event; and

recording the hashed event to a smart contract deployed on a blockchain network, wherein a hashed event generated by the client application is also recorded to the smart contract;

wherein the at least one of an interaction or transaction is not completed until a match between hashed events from the client application and the verifier server is verified by an enforcement node.

8. A method for implementing zero-knowledge private key management for decentralized applications on a server device comprising server software, referred to as a verifier server, the method comprising:

receiving at the verifier server an encrypted private key and user identification information from a client application;

storing the encrypted private key on the verifier server;

receiving at the verifier server a session request from a decentralized application;

establishing a session responsive to the session request;

transmitting a response to the session request to the decentralized application, the response comprising session information;

receiving at the verifier server a session approval from the client application at the verifier server, the session approval comprising a public key and a blockchain network selection;

updating the session with the information comprised by the session approval;

transmitting the public key and the blockchain network selection to the decentralized application;

receiving at the verifier server a transaction signature request from the decentralized application;

transmitting the transaction signature request to the client application;

receiving an encrypted private key request from the client application at the verifier server;

transmitting the encrypted private key to the client application responsive to the encrypted private key request; and

performing a bidirectional authentication procedure between the verifier server and the client application.

9. The method of claim 8 wherein performing the bidirectional authentication procedure comprises:

sending a server authentication to the client application;

receiving a client authentication from the client application;

establishing a secure connection between the verifier server and the client application; and

sending and receiving encrypted messages between the verifier server and the client application, wherein the encrypted messages are encrypted with a cipher key and the integrity of the messages is confirmed by use of an integrity key.

10. The method of claim 8 , wherein performing the bidirectional authentication procedure comprises:

receiving at the verifier server a zero-knowledge session initiation request from the client application, the zero-knowledge session initiation request comprising a user ID and a client ID;

generating a random number;

generating a sequence number responsive to the zero-knowledge session initiation request;

computing a first authentication output using a function that uses the user ID and the random number as inputs;

generating a response using a function that uses the first authentication output as an input, defining a local response;

computing an anonymity key using a function that uses the first authentication output as an input;

computing a message authentication code using a function that uses the first authentication output, the sequence number, and the client ID as inputs;

generating a zero-knowledge authentication number by concatenating an output of an exclusive-or operation with the sequence number and the anonymity key with the concatenation of the client ID and the message authentication code;

transmitting the random number and the zero-knowledge authentication number to the client application;

receiving at the verifier server a response from the client application, defining a received response;

comparing the received response with the local response to determine if they match; and

upon determining the received response matches the local response, transmitting a session ID to the client application.

11. The method of claim 10 further comprising:

computing a cypher key using a function that uses first authentication output as an input;

computing an integrity key using a function that uses first authentication output as an input;

receiving at the verifier server an encrypted integrity-protected message from the client application, the encrypted integrity-protected message being the concatenation of an encrypted message and an integrity value; and

performing a message authentication procedure comprising:

decrypting the encrypted message with the cypher key, defining a decrypted message; and

comparing the integrity value with the output of an integrity algorithm using the integrity key and the decrypted message as inputs, defining a local integrity value;

wherein the encrypted integrity-protected message is authenticated if the integrity value equals the local integrity value.

12. The method of claim 8 further comprising:

receiving at the verifier server at least one of an interaction and a transaction from the client application;

applying a hashing function at the client application to the at least one of interaction or transaction sent to the verifier, defining a hashed event; and

recording the hashed event to a smart contract deployed on a blockchain network, wherein a hashed event generated by the client application is also recorded to the smart contract;

wherein the at least one of an interaction or transaction is not completed until a match between hashed events from the client application and the verifier server is verified by an enforcement node.

13. A method for implementing zero-knowledge private key management for decentralized applications on a server device comprising server software, referred to as a verifier server, the method comprising:

receiving at the verifier server an encrypted private key and user identification information from a client application;

storing the encrypted private key on the verifier server;

receiving at the verifier server a session request from a decentralized application;

establishing a session responsive to the session request;

transmitting a response to the session request to the decentralized application, the response comprising session information;

receiving at the verifier server a session approval from the client application at the verifier server, the session approval comprising a public key and a blockchain network selection;

updating the session with the information comprised by the session approval;

transmitting the public key and the blockchain network selection to the decentralized application;

receiving at the verifier server at least one of an interaction and a transaction from the client application;

applying a hashing function at the client application to the at least one of interaction or transaction sent to the verifier, defining a hashed event;

recording the hashed event to a smart contract deployed on a blockchain network, wherein a hashed event generated by the client application is also recorded to the smart contract; and

performing a bidirectional authentication procedure between the verifier server and the client application;

wherein the at least one of an interaction or transaction is not completed until a match between hashed events from the client application and the verifier server is verified by an enforcement node.

14. The method of claim 13 wherein performing the bidirectional authentication procedure comprises:

sending a server authentication to the client application;

receiving a client authentication from the client application;

establishing a secure connection between the verifier server and the client application; and

sending and receiving encrypted messages between the verifier server and the client application, wherein the encrypted messages are encrypted with a cipher key and the integrity of the messages is confirmed by use of an integrity key.

15. The method of claim 13 , wherein performing the bidirectional authentication procedure comprises:

receiving at the verifier server a zero-knowledge session initiation request from the client application, the zero-knowledge session initiation request comprising a user ID and a client ID;

generating a random number;

generating a sequence number responsive to the zero-knowledge session initiation request;

computing a first authentication output using a function that uses the user ID and the random number as inputs;

generating a response using a function that uses the first authentication output as an input, defining a local response;

computing an anonymity key using a function that uses the first authentication output as an input;

computing a message authentication code using a function that uses the first authentication output, the sequence number, and the client ID as inputs;

generating a zero-knowledge authentication number by concatenating an output of an exclusive-or operation with the sequence number and the anonymity key with the concatenation of the client ID and the message authentication code;

transmitting the random number and the zero-knowledge authentication number to the client application;

receiving at the verifier server a response from the client application, defining a received response;

comparing the received response with the local response to determine if they match; and

upon determining the received response matches the local response, transmitting a session ID to the client application.

16. The method of claim 15 further comprising:

computing a cypher key using a function that uses first authentication output as an input;

computing an integrity key using a function that uses first authentication output as an input;

receiving at the verifier server an encrypted integrity-protected message from the client application, the encrypted integrity-protected message being the concatenation of an encrypted message and an integrity value; and

performing a message authentication procedure comprising:

decrypting the encrypted message with the cypher key, defining a decrypted message; and

comparing the integrity value with the output of an integrity algorithm using the integrity key and the decrypted message as inputs, defining a local integrity value;

wherein the encrypted integrity-protected message is authenticated if the integrity value equals the local integrity value.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2026
From: MADISETTI, VIJAY
To: VM INNOVATIONS I, LLC
Reel/Frame 075116/0289 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2022
From: BAHGA, ARSHDEEP
To: MADISETTI, VIJAY
Reel/Frame 059651/0908 →
Continuity (7)
Division 17457983 · Dec 7, 2021
Division 15830099 · Dec 4, 2017
Provisional Application 63271123 · Oct 23, 2021
Provisional Application 63257603 · Oct 20, 2021
Provisional Application 63257145 · Oct 19, 2021
Provisional Application 62479966 · Mar 31, 2017
Related Publication 20220182368A1 · Jun 9, 2022