US 10,891,600 B2
User private key control
Miha Rebernik, San Francisco, CA (US)
Assigned to Coinbase, Inc., San Francisco, CA (US)
Filed by Coinbase, Inc., San Francisco, CA (US)
Filed on Mar. 17, 2015, as Appl. No. 14/660,427.
Claims priority of provisional application 62/099,992, filed on Jan. 5, 2015.
Claims priority of provisional application 62/086,669, filed on Dec. 2, 2014.
Claims priority of provisional application 62/056,100, filed on Sep. 26, 2014.
Claims priority of provisional application 62/042,676, filed on Aug. 27, 2014.
Claims priority of provisional application 61/990,017, filed on May 7, 2014.
Claims priority of provisional application 61/954,434, filed on Mar. 17, 2014.
Prior Publication US 2015/0262172 A1, Sep. 17, 2015
Int. Cl. G06Q 20/06 (2012.01); G06Q 20/36 (2012.01); G06Q 20/38 (2012.01); G06Q 20/16 (2012.01); G06Q 40/04 (2012.01); G06Q 20/40 (2012.01); H04L 12/58 (2006.01)
CPC G06Q 20/065 (2013.01) [G06Q 20/0658 (2013.01); G06Q 20/16 (2013.01); G06Q 20/36 (2013.01); G06Q 20/363 (2013.01); G06Q 20/3678 (2013.01); G06Q 20/381 (2013.01); G06Q 20/382 (2013.01); G06Q 20/388 (2013.01); G06Q 20/3825 (2013.01); G06Q 20/3829 (2013.01); G06Q 20/40 (2013.01); G06Q 20/4014 (2013.01); G06Q 40/04 (2013.01); H04L 51/08 (2013.01); G06Q 2220/00 (2013.01)] 3 Claims
OG exemplary drawing
 
1. A method of performing bitcoin transactions with user-controlled private keys using a host computer system, a user device, and a node of a Bitcoin network, the method comprising:
the host computer system generating and storing a master key set comprising a master public key and a master private key;
the host computer system storing a generation script that includes:
a first interface with a field for a user to enter a password via a keyboard,
an encryption algorithm,
instructions that when executed by the user device control the user device to: generate a user key set comprising a user public key and a user private key and a shared key set comprising a shared key seed, a shared public key, and a shared private key, wherein the shared public key is shared between the host computer system and the user device, and wherein the user private key and shared private key are never transmitted to or stored within the host computer system;
instructions that when executed by the user device control the user device to: transmit only the shared public key and the user public key, not the user private key nor the shared private key, of the generated keys from the user device to the host computer system,
instructions that when executed by the user device control the user device to generate an encrypted seed for the shared private key by receiving a user-provided password via the first interface and encrypting the shared key seed by using the encryption algorithm and the received password, wherein the password received via the first interface is never transmitted to or stored on the host computer system, and
instructions that when executed by the user device control the user device to transmit the encrypted seed from the user device to the host computer;
the host computer system storing a verification script that includes:
a decryption algorithm, a signature algorithm, a second and a third interface wherein the second interface comprises a field for entering a password and the third interface comprises a field for entering the user private key,
instructions that when executed by the user device control the user device to:
responsive to receiving a user-provided password via the second interface, decrypt the encrypted seed by using the decryption algorithm and the received password to obtain the shared private key, wherein the password received via the second interface is never transmitted to or stored on the host computer system, and
sign an authorization, signed with the master private key, with the obtained shared private key by using the signature algorithm, and transmit the authorization signed with the shared private key from the user device to the host computer, and
instructions that when executed by the user device control the user device to: responsive to receiving the user private key via the third interface, sign the authorization, signed with the master private key, with the received user private key by using the signature algorithm, and transmit the authorization signed with the user private key from the user device to the host computer;
the user device transmitting a request for a user-controlled vault to the host computer system;
in response to the request for the user-controlled vault, the host computer system transmitting the generation script to the user device;
the user device executing the generation script;
in response to execution of the generation script by the user device, the host computer system receiving the encrypted seed, the shared public key, and the user public key from the user device, wherein the encrypted seed, the shared public key and the user public key are generated by the user device using the generation script;
the host computer system storing the received encrypted seed, the shared public key, and the user public key;
the host computer system generating a first bitcoin address of the user-controlled vault by using the stored master public key, the stored shared public key and the stored user public key;
the user device transmitting a first transaction request to the host computer system for performing a first Bitcoin transaction using the generated first bitcoin address of the user-controlled vault and the Bitcoin network;
in response to the host computer system receiving the first transaction request from the user device to perform the first Bitcoin transaction using the generated first bitcoin address and the Bitcoin network, the host computer system:
creating a first authorization for the first Bitcoin transaction and signing the first authorization with the master private key,
transmitting the verification script to the user device,
transmitting the first authorization signed with the master private key to the user device, and
transmitting the encrypted seed to the user device;
the user device executing the verification script to present the second interface that comprises the field for entering the password and the third interface that comprises the field for entering the user private key;
in response to receiving the password via the second interface, the user device: using the decryption algorithm included in the verification script to decrypt the encrypted seed by using the password and obtain the private key, generating a shared-signed authorization by signing the first authorization signed with the master private key with the shared private key by using the signature algorithm included in the verification script, and transmitting the shared-signed authorization to the host computer system;
in response to receiving the user private key via the third interface, the user device generating a user-signed authorization by signing the first authorization signed with the master private key with the user private key by using the signature algorithm, and transmitting the user-signed authorization to the host computer system;
in response to the host computer system receiving the shared-signed authorization, the host computer system verifying the received shared-signed authorization by using the stored shared public key;
responsive to non-verification of the shared-signed authorization, the host computer prompting for re-entry of the password and repeating the verification;
in response to receiving the user signed authorization, the host computer system verifying the received user-signed authorization by using the stored user public key;
responsive to non-verification of the user-signed authorization, the host computer prompting for re-entry of the user private key and repeating the verification;
responsive to verification of two of three of the first authorization signed with the master private key, the shared-signed authorization, and the user-signed authorization, the host computer system performing the first Bitcoin transaction with the first bitcoin address,
wherein the host computer system is communicatively coupled to the user device and the node of the Bitcoin network via the Internet.