WO2020258125A1 - 私钥恢复、协同地址的创建、签名方法及装置、存储介质 - Google Patents

私钥恢复、协同地址的创建、签名方法及装置、存储介质 Download PDF

Info

Publication number
WO2020258125A1
WO2020258125A1 PCT/CN2019/093171 CN2019093171W WO2020258125A1 WO 2020258125 A1 WO2020258125 A1 WO 2020258125A1 CN 2019093171 W CN2019093171 W CN 2019093171W WO 2020258125 A1 WO2020258125 A1 WO 2020258125A1
Authority
WO
WIPO (PCT)
Prior art keywords
client
polynomial
private key
address
collaborative
Prior art date
Application number
PCT/CN2019/093171
Other languages
English (en)
French (fr)
Inventor
安瑞
谢翔
孙立林
Original Assignee
云图有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 云图有限公司 filed Critical 云图有限公司
Priority to PCT/CN2019/093171 priority Critical patent/WO2020258125A1/zh
Publication of WO2020258125A1 publication Critical patent/WO2020258125A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Definitions

  • This specification relates to the technical field of cryptocurrency wallets, in particular to a private key recovery, collaborative address creation, signature method and device, and storage medium.
  • the ownership of cryptocurrency depends entirely on whether or not to hold the corresponding private key, so the security of the cryptocurrency depends on whether the corresponding private key has a complete security protection strategy.
  • the use is usually directly handed over to the cryptocurrency exchange for safekeeping, or stored in the user's personal online wallet or hardware wallet.
  • the security of exchanges for custody and online wallets is relatively low, and events such as the theft of exchange cryptocurrency and the loss of online wallet private keys may easily occur.
  • the hardware wallet stores the private key offline in the hardware device. This method prevents the private key from being exposed to the network environment, avoids the risk of hacker attacks, and improves security.
  • the purpose of the embodiments of this specification is to provide a private key recovery, collaborative address creation, signature method and device, and storage medium to improve the security and convenience of cryptocurrency wallets.
  • an embodiment of this specification provides a method for signing a collaborative address, including:
  • an embodiment of the present specification provides a client, including:
  • a transaction request receiving module configured to receive a transaction request to a target collaborative address initiated by a first client, the transaction request including a transaction hash value and a signature generated by the first client using its private key fragment;
  • a private key signature verification module configured to verify the signature with the first public key corresponding to the private key fragment
  • the transaction signature generation module is used to generate a transaction signature based on a threshold signature based on secure multi-party calculation on the transaction request in cooperation with the server based on the private key fragments held by each when the signature is verified.
  • the embodiments of this specification provide a computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the embodiment of this specification provides another method for signing cooperative addresses, including:
  • the second client When the second client passes the verification of the signature, based on the private key fragments held by each, cooperate with the second client to perform a threshold signature based on secure multi-party calculation on the transaction request, thereby generating a transaction signature.
  • the embodiment of this specification provides a server, including:
  • a transaction request receiving module configured to receive a transaction request to a target collaborative address initiated by a first client, the transaction request including a transaction hash value and a signature generated by the first client using its private key fragment;
  • a transaction request forwarding module configured to provide the transaction request to a second client, so that the second client uses the first public key corresponding to the private key fragment to verify the signature;
  • the transaction signature generation module is used to perform secure multi-party calculation on the transaction request in collaboration with the second client based on the private key fragments held by the second client when the second client passes the verification of the signature
  • the threshold signature for generating transaction signatures.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the second client When the second client passes the verification of the signature, based on the private key fragments held by each, cooperate with the second client to perform a threshold signature based on secure multi-party calculation on the transaction request, thereby generating a transaction signature.
  • the embodiment of this specification provides a method for creating a collaborative address, including:
  • the collaborative address creation request carries the temporary public key of the first client
  • the ciphertext and the collaborative address are provided to the first client, so that the first client generates private key fragments and verifies the collaborative address.
  • the embodiment of this specification provides another client, including:
  • the request receiving module is configured to receive a collaborative address creation request initiated by the first client; the collaborative address creation request carries the temporary public key of the first client;
  • a function generation module configured to randomly generate a second polynomial in response to the collaborative address creation request
  • a value exchange module configured to exchange function values with the first client and the server after the first client randomly generates a third polynomial and the server randomly generates the first polynomial;
  • a data generation module configured to generate its own private key fragment, a second public key corresponding to the private key fragment, and a coordination address according to the second polynomial and the function value obtained by the exchange;
  • a data encryption module configured to use the temporary public key to encrypt the second public key and the third function value of the second polynomial into ciphertext
  • the data sending module is configured to provide the ciphertext and the cooperative address to the first client, so that the first client generates private key fragments and verifies the cooperative address.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the collaborative address creation request carries the temporary public key of the first client
  • the ciphertext and the collaborative address are provided to the first client, so that the first client generates private key fragments and verifies the collaborative address.
  • the embodiment of this specification provides another method for creating a collaborative address, including:
  • the collaborative address creation request carries the temporary public key of the first client
  • the ciphertext and the collaborative address are provided to the first client, so that the first client generates private key fragments and verifies the collaborative address.
  • the embodiment of this specification provides another server, including:
  • the request forwarding module is configured to receive the collaborative address creation request initiated by the first client and provide it to the second client; the collaborative address creation request carries the temporary public key of the first client;
  • Function generation module used to randomly generate the first polynomial
  • a value exchange module configured to communicate with the first client and the second client after the first client randomly generates a third polynomial and the second client randomly generates a second polynomial Exchange function value;
  • a data generation module which is used to generate a coordination address and its own private key fragments according to the first polynomial and the function value obtained by the exchange;
  • the ciphertext receiving module is configured to receive the ciphertext encrypted with the temporary public key provided by the second client, the ciphertext including the second public key of the second client and the second multiple The third function value of the term;
  • the data sending module is configured to provide the ciphertext and the cooperative address to the first client, so that the first client generates private key fragments and verifies the cooperative address.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the collaborative address creation request carries the temporary public key of the first client
  • the ciphertext and the collaborative address are provided to the first client, so that the first client generates private key fragments and verifies the collaborative address.
  • the embodiment of this specification provides another method for creating a collaborative address, including:
  • the collaborative address creation request carries its own temporary public key
  • the collaborative address is verified according to its own private key fragment and the second public key.
  • the embodiment of this specification provides another client, including:
  • the request sending module is configured to initiate a collaborative address creation request to the second client through the server; the collaborative address creation request carries its own temporary public key;
  • Function generation module used to randomly generate the third polynomial
  • the value exchange module is used to exchange function values with the second client and the server after the server randomly generates the first polynomial and the second client randomly generates the second polynomial, so that the The second client and the server generate a collaborative address of a collaborative account;
  • the data receiving module is configured to receive the ciphertext and the cooperative address sent by the server, and decrypt the ciphertext with the temporary private key corresponding to the temporary public key, to obtain the second public key of the second client and the first The value of the third function of the second polynomial;
  • a private key generation module configured to generate its own private key fragments according to the third polynomial and the third function value
  • the address verification module is used to verify the cooperative address according to its own private key fragment and the second public key.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the collaborative address creation request carries its own temporary public key
  • the collaborative address is verified according to its own private key fragment and the second public key.
  • the embodiment of this specification provides a private key recovery method, including:
  • the private key fragment recovery request carries the temporary public key of the first client
  • the embodiment of this specification provides another client, including:
  • the request receiving module is configured to receive a private key fragment recovery request corresponding to the collaborative address initiated by the first client; the private key fragment recovery request carries the temporary public key of the first client;
  • a function generation module configured to randomly generate a second polynomial in response to the private key fragment recovery request
  • a value receiving module for receiving the second function value of the first polynomial provided by the server
  • a data generation module configured to generate its own new private key fragment and a new second public key corresponding to the new private key fragment according to the second polynomial and the second function value;
  • a data encryption module configured to use the temporary public key to encrypt the new second public key and the third function value of the second polynomial into ciphertext
  • a data sending module configured to provide the ciphertext and the first function value of the second polynomial to the server, so that the server generates according to the first function value and the first polynomial The new private key fragments of the server, and facilitate the server to provide the ciphertext and the third function value of the first polynomial to the first client, so that the first client can generate The new private key fragments and verifies the collaborative address.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the private key fragment recovery request carries the temporary public key of the first client
  • the embodiment of this specification provides another private key recovery method, including:
  • the private key fragment recovery request carries the temporary public key of the first client
  • the ciphertext and the third function value of the first polynomial are provided to the first client, so that the first client generates a new private key fragment and verifies the coordination address.
  • the embodiment of this specification provides another server, including:
  • the request forwarding module is used to receive the private key fragment recovery request corresponding to the collaborative address initiated by the first client, and forward it to the second client; the private key fragment recovery request carries the temporary information of the first client Public key
  • Function generation module used to randomly generate the first polynomial
  • a numerical value providing module configured to provide the second function value of the first polynomial to the second client
  • the data receiving module is configured to receive the ciphertext provided by the second client and the first function value of the second polynomial, the ciphertext including the new second public key of the second client and the second The third function value of the polynomial;
  • a private key generation module configured to generate its own new private key fragment according to the first function value and the first function value of the first polynomial;
  • the data providing module is used to provide the ciphertext and the third function value of the first polynomial to the first client, so that the first client generates a new private key fragment and verifies the collaboration address.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the private key fragment recovery request carries the temporary public key of the first client
  • the ciphertext and the third function value of the first polynomial are provided to the first client, so that the first client generates a new private key fragment and verifies the coordination address.
  • the embodiment of this specification provides another private key recovery method, including:
  • the private key fragment recovery request carries its own temporary public key
  • the ciphertext carries the new second public key of the second client and the third function value of the second polynomial;
  • the embodiment of this specification provides another client, including:
  • the request initiation module is configured to initiate a private key fragment recovery request corresponding to the collaborative address to the second client through the server; the private key fragment recovery request carries its own temporary public key;
  • the data receiving module is configured to receive the ciphertext sent by the server and the third function value of the first polynomial; the ciphertext carries the new second public key of the second client and the second polynomial Three function value;
  • a data decryption module configured to decrypt the ciphertext with a temporary private key corresponding to the temporary public key to obtain the new second public key and the third function value of the second polynomial;
  • a private key generation module for generating its own new private key fragment according to the third function value of the first polynomial and the third function value of the second polynomial;
  • the address verification module is used to verify the collaborative address according to its own new private key fragment and the new second public key.
  • the embodiments of the present specification provide another computer storage medium on which a computer program is stored, and the computer program implements the following steps when executed by a processor:
  • the private key fragment recovery request carries its own temporary public key
  • the ciphertext carries the new second public key of the second client and the third function value of the second polynomial;
  • the embodiments of this specification use secure multi-party computing technology so that multiple parties can use their own private information to generate a collaborative address and their respective private key fragments; on this basis
  • secure multi-party calculation and threshold signature when it is necessary to trade assets on a coordinated address, by combining secure multi-party calculation and threshold signature, multiple participants can use their own private key fragments to collaboratively generate the signature of the coordinated address.
  • the transaction authorization of the assets on the coordinated address is completed collaboratively, thereby greatly improving the security of the cryptocurrency wallet. Since the embodiment of this specification is also an online wallet technology, it also has better convenience than hardware wallets.
  • Figure 1 is a flowchart of creating a collaborative address in some embodiments of this specification
  • Figure 2 is a flow chart of transaction signatures of cooperative addresses in some embodiments of this specification.
  • Fig. 3 is a flowchart of the threshold signature part based on secure multi-party calculation in Fig. 2;
  • Figure 4 is a flowchart of recovering private key fragments in some embodiments of this specification.
  • Figure 5 is a structural block diagram of a client in some embodiments of this specification.
  • Figure 6 is a structural block diagram of a server in some embodiments of this specification.
  • FIG. 7 is a structural block diagram of a client in other embodiments of this specification.
  • FIG. 8 is a structural block diagram of a server in some other embodiments of this specification.
  • FIG. 9 is a structural block diagram of a client in other embodiments of this specification.
  • FIG. 10 is a structural block diagram of a client in other embodiments of this specification.
  • FIG. 11 is a structural block diagram of a server in some other embodiments of this specification.
  • Fig. 12 is a structural block diagram of a client in some other embodiments of this specification.
  • the embodiments of this specification can be applied to any node in a blockchain network, and the node can be a client or a server.
  • the client may be a desktop computer, a tablet computer, a notebook computer, a smart phone, a digital assistant, a smart wearable device, etc.
  • smart wearable devices may include smart bracelets, smart watches, smart glasses, smart helmets, and so on.
  • the client is not limited to the above-mentioned electronic device with a certain entity, and it may also be software running in the above-mentioned electronic device.
  • the server may be an electronic device with computing and network interaction functions; it may also be software that runs on the electronic device and provides business logic for data processing and network interaction.
  • Threshold signature is a signature scheme constructed by threshold cryptography. For example, in a t/n threshold signature method, n participants form a group, and use the private information (such as private keys) of the n participants to generate a wallet address of a collaborative account (hereinafter referred to as the collaborative address); When using assets on a collaborative address, no less than t participants need to use their private information to collaborate to generate a transaction signature to the collaborative address.
  • Secure Multi-Party Computation means that users can complete data collaborative computing without data collection, while protecting the original data privacy of the data owner. During the entire calculation process, all parties involved in the calculation cannot know any additional valid information except their own input data and output results, and the accuracy of the calculation results is guaranteed.
  • the embodiments of this specification aim to use secure multi-party computing technology to enable multiple participants to use their own private information to generate a collaborative address and their respective private key fragments; on this basis, when assets on the collaborative address need to be traded ,
  • By combining secure multi-party calculation and threshold signature multiple participants can use their own private key fragments to collaboratively generate the signature of the collaborative address.
  • the transaction authorization of the assets on the coordinated address is completed collaboratively, thereby greatly improving the security of the cryptocurrency wallet. Since the embodiment of this specification is also an online wallet technology, it also has better convenience than hardware wallets.
  • FIG. 1 a method for creating a collaborative address is shown in FIG. 1.
  • the client A when the client A initiates a request to create a collaborative address, it can first randomly generate a public-private key pair (tpk A , tsk A ) locally, and then send the collaborative address creation request carrying tpk A through the server Sent to client B.
  • the server, the client B, and the client A can respectively generate a polynomial locally at random.
  • the server, client B, and client A can generate random numbers x 1 , x 2 , and x 3 respectively .
  • the server, client B, and client A can exchange some specified function values for subsequent collaborative address creation.
  • the server can send P 1 (2) to client B and P 1 (3) to client A; client B can send P 2 (1) to the server , And send P 2 (3) to client A; client A can send P 3 (1) to the server, and P 3 (2) to client B.
  • the client A may provide the third parameter P A to the server and the client B respectively, the client B may provide the second parameter P B to the server, and the server may provide the first parameter P S to the client B.
  • client B can generate its own private key fragment sk B and the second public key pk B corresponding to the private key fragment sk B according to P 2 (x) and the function value obtained by the exchange.
  • the second public key pk B and P 2 (3) can be encrypted into cipher text with the temporary public key tpk A of client A, and then the cipher text can be provided to client A through the server for the client End A generates its own private key fragment sk A and verifies the public key PK corresponding to the collaborative address.
  • the second public key pk B the public key PK of the collaborative account can be generated according to the formula PK ⁇ p 1 ⁇ L 1 ⁇ G+p 2 ⁇ L 2 ⁇ G
  • the collaboration corresponding to the collaborative account can be generated according to the formula Addr ⁇ Hash(PK) Address
  • Addr is a cooperative address
  • Hash(PK) means hashing PK with a hash function.
  • p 1 and p 2 are two arbitrary values taken from the set (P A , P B , P S ), G is a system parameter (for example, an elliptic curve generator, etc.), and L 1 and L 2 are respectively Lagrangian coefficients corresponding to p 1 and p 2 .
  • L 1 is the Lagrangian coefficient L A of client A
  • L 2 is the Lagrangian coefficient of client B
  • client B can also use the formula A generating client's private key sk A fragment corresponding to the first public key PK A, in order to initiate a transaction request for an address in a subsequent collaborative client A, the client can verify the signature of the A side.
  • the first public key pk A may also be generated by the server or the client A and provided to the client B, which is not limited in this description, and can be specifically selected according to needs.
  • client B after receiving the collaborative address creation request initiated by client A, client B can also authenticate client A first, and then communicate with client A after passing the identity authentication of client A. End A and the server interact for the purpose of generating a cooperative address, thereby improving security.
  • client B can concatenate the first character string corresponding to the second public key pk B and the second character string corresponding to P 2 (3) into a third character string in sequence, and then use The temporary public key tpk A of the client A encrypts the third character string into a cipher text (ie Enc(tpk A , P 2 (3)
  • the server can also generate a collaborative address and its own private key fragment sk S according to P 2 (x) and the function value obtained by the exchange; when receiving the ciphertext provided by client B, it can The ciphertext and the cooperative address are provided to the client A so that the client A can generate its own private key fragment sk A and verify the public key PK corresponding to the cooperative address.
  • sk S P 1 (1)+P 2 (1)
  • PK ⁇ p 1 ⁇ L 1 ⁇ G+p 2 ⁇ L 2 ⁇ G Generate the public key PK of the collaborative account, and generate the collaborative address corresponding to the collaborative account according to the formula Addr ⁇ Hash (PK).
  • client A after client A receives the ciphertext and the cooperative address sent by the server, it can decrypt the ciphertext with tsk A corresponding to tpk A , namely P 2 (3)
  • the client in some embodiments of this specification may include:
  • the request receiving module 71 may be configured to receive a collaborative address creation request initiated by a first client; the collaborative address creation request carries the temporary public key of the first client;
  • the function generating module 72 may be configured to randomly generate a second polynomial in response to the collaborative address creation request;
  • the value exchange module 73 may be configured to exchange function values with the first client and the server after the first client randomly generates the third polynomial and the server randomly generates the first polynomial;
  • the data generation module 74 may be used to generate its own private key fragment, a second public key corresponding to the private key fragment, and a cooperative address according to the second polynomial and the function value obtained by the exchange;
  • the data encryption module 75 may be configured to use the temporary public key to encrypt the second public key and the third function value of the second polynomial into ciphertext;
  • the data sending module 76 may be used to provide the ciphertext and the cooperative address to the first client, so that the first client generates a private key fragment and verifies the cooperative address.
  • the server in some embodiments of this specification may include:
  • the request forwarding module 81 may be configured to receive a collaborative address creation request initiated by a first client and provide it to a second client; the collaborative address creation request carries the temporary public key of the first client;
  • the function generating module 82 can be used to randomly generate the first polynomial
  • the value exchange module 83 may be used to communicate with the first client and the second polynomial after the first client randomly generates the third polynomial and the second client randomly generates the second polynomial.
  • Client exchange function value
  • the data generation module 84 may be used to generate the collaboration address and its own private key fragments according to the first polynomial and the function value obtained by the exchange;
  • the ciphertext receiving module 85 may be configured to receive a ciphertext encrypted with the temporary public key provided by the second client, and the ciphertext includes the second public key of the second client and the first public key.
  • the data sending module 86 may be used to provide the ciphertext and the cooperative address to the first client, so that the first client generates a private key fragment and verifies the cooperative address.
  • the client of some embodiments of the present specification may include:
  • the request sending module 91 may be used to initiate a collaborative address creation request to the second client through the server; the collaborative address creation request carries its own temporary public key;
  • the function generating module 92 can be used to randomly generate the third polynomial
  • the value exchange module 93 may be used to exchange function values with the second client and the server after the server randomly generates the first polynomial and the second client randomly generates the second polynomial, So that the second client and the server generate a collaborative address of a collaborative account;
  • the data receiving module 94 may be used to receive the ciphertext and the cooperative address sent by the server, and decrypt the ciphertext with the temporary private key corresponding to the temporary public key, to obtain the second public key and the address of the second client. State the third function value of the second polynomial;
  • the private key generation module 95 may be used to generate its own private key fragments according to the third polynomial and the third function value;
  • the address verification module 96 may be used to verify the collaborative address according to its own private key fragment and the second public key.
  • each participant after the collaborative address is created, each participant (that is, the client A, the client B, and the server) can collaboratively manage the same wallet account.
  • each participant is required to perform a threshold signature based on secure multi-party calculation to coordinately complete the authorization of the asset on the coordinated address for the transaction.
  • a threshold signature based on secure multi-party calculation to coordinately complete the authorization of the asset on the coordinated address for the transaction.
  • the transaction signature method of the cooperative address can be shown in Figure 2.
  • the client A when the client A wishes to trade assets on the target coordinated address, it can initiate a transaction request for the target coordinated address to the client B through the server.
  • the transaction request may not only carry the transaction hash value, but also the signature generated by the client A using its private key fragment sk A.
  • client A can use its private key fragment sk A to generate a signature through the signature formula tSignature ⁇ ECDSA(sk A , txHash).
  • ECDSA is the Elliptic Curve Digital Signature Algorithm (ECDSA)
  • tSignature is the signature
  • txHash is the transaction hash value.
  • the transaction hash value may include transaction information such as the transfer-out wallet address, the transfer-in wallet address, and the transfer-in amount.
  • client B can verify the signature of client A with the first public key pk A corresponding to the private key fragment sk A ; after passing the verification of the signature, the client Based on the private key fragments held by each, B and the server can cooperate to perform a threshold signature based on secure multi-party calculation on the transaction request, thereby generating a transaction signature.
  • the client B and the server may cooperate to perform a threshold signature based on secure multi-party calculation on the transaction request based on the private key fragments held by each, as shown in FIG. 3, for example.
  • client B can generate random number k 1 and random number q 1 , and provide random number k 1 and random number q 1 to the server; at the same time, the server can generate random number k 2 and random number q 2 , And the random number k 2 and the random number q 2 are provided to the client B.
  • the server can substitute its own private key fragment sk S and the signature parameter R into the second signature function to generate the second signature part.
  • the first signature function may include sig B ⁇ (e ⁇ sk B +R x ) ⁇ q -1
  • the second signature function may include sig S ⁇ (e ⁇ sk S +R x ) ⁇ q -1
  • sig B is the first signature part
  • sig S is the second signature part
  • e is the transaction hash value
  • R x is the x coordinate value of the signature parameter R in the coordinate system
  • Q q 1 ⁇ q 2 .
  • the client in some embodiments of this specification may include:
  • the transaction request receiving module 51 may be configured to receive a transaction request to a target collaborative address initiated by the first client, and the transaction request includes a transaction hash value and a signature generated by the first client using its private key fragment;
  • the private key signature verification module 52 may be used to verify the signature with the first public key corresponding to the private key fragment;
  • the transaction signature generating module 53 may be used to generate a transaction signature based on a threshold signature based on secure multi-party calculation on the transaction request in cooperation with the server based on the private key fragments held by each when the signature is verified.
  • the server in some embodiments of this specification may include:
  • the transaction request receiving module 61 may be configured to receive a transaction request for a target collaborative address initiated by the first client, and the transaction request includes a transaction hash value and a signature generated by the first client using its private key fragment;
  • the transaction request forwarding module 62 may be configured to provide the transaction request to a second client, so that the second client can verify the signature with the first public key corresponding to the private key fragment;
  • the transaction signature generation module 63 may be used to coordinate with the second client to perform a security-based transaction request based on the private key fragments held by the second client when the second client passes the verification of the signature.
  • a threshold signature calculated by multiple parties to generate a transaction signature.
  • threshold signature method based on secure multi-party calculation.
  • different secure multi-party calculation algorithms such as 2/3 mode, 3/5 mode
  • threshold signature methods such as 2/3 mode, 3/5 mode
  • 5/5 mode etc.
  • the above method steps of threshold signature based on secure multi-party calculation will also be different. Since these are within the spirit and principle of this specification, its modifications, equivalent replacements, improvements, etc., should all be included in the scope of the claims of this specification.
  • the user can install the client on a new client device or reinstall on the original client device Client.
  • the public key PK of the corresponding collaborative address can be obtained.
  • client A when client A initiates a private key fragment recovery request, it can first randomly generate a public and private key pair (tpk A , tsk A ) locally, and then carry The key fragment recovery request of tpk A is sent to client B through the server.
  • the server and the client B can respectively generate a polynomial randomly locally.
  • L S is the Lagrangian coefficient of the server.
  • the server can provide P 1 (2) to client B, so that client B can generate its own new private key fragment sk' B according to P 2 (x) and P 1 (2), and the new private key The new second public key pk' B corresponding to the fragment sk' B.
  • client B can use the temporary public key tpk A to encrypt pk' B and P 2 (3) into cipher text (for the encryption process, please refer to the relevant description of the above collaborative address creation part, which will not be repeated here), and then encrypt Text and P 2 (1) are provided to the server.
  • client B can also use the formula A client generates a new secret key debris sk 'A new corresponding first public key pk' A, to initiate a request for a transaction when the synergistic address, the client can verify A's signature to A subsequent client.
  • the new first public key pk' A may also be generated by the server or client A and provided to the client B. This description is not limited to this, and can be specifically selected as required.
  • the user corresponding to the client should be a registered user, that is, before initiating the request to create a collaborative address, the user corresponding to the client needs to download and complete the installation of the client first, then log in to the client and register according to the prompts .
  • the client in some embodiments of this specification may include:
  • the request receiving module 101 may be configured to receive a private key fragment recovery request corresponding to a collaborative address initiated by a first client; the private key fragment recovery request carries the temporary public key of the first client;
  • the function generating module 102 may be used to randomly generate a second polynomial in response to the private key fragment recovery request;
  • the value receiving module 103 may be used to receive the second function value of the first polynomial provided by the server;
  • the data generation module 104 may be configured to generate its own new private key fragment and a new second public key corresponding to the new private key fragment according to the second polynomial and the second function value;
  • the data encryption module 105 may be configured to use the temporary public key to encrypt the new second public key and the third function value of the second polynomial into ciphertext;
  • the data sending module 106 may be configured to provide the ciphertext and the first function value of the second polynomial to the server, so that the server can use the first function value and the first polynomial
  • the new private key fragment of the server is generated by the formula, and the server can provide the ciphertext and the third function value of the first polynomial to the first client, thereby facilitating the first client
  • the terminal generates a new private key fragment and verifies the collaborative address.
  • the server in some embodiments of this specification may include:
  • the request forwarding module 111 may be used to receive the private key fragment recovery request corresponding to the collaborative address initiated by the first client, and forward it to the second client; the private key fragment recovery request carries the first client Temporary public key of the end;
  • the function generating module 112 may be used to randomly generate the first polynomial
  • the value providing module 113 may be used to provide the second function value of the first polynomial to the second client;
  • the data receiving module 114 may be configured to receive the ciphertext provided by the second client and the first function value of the second polynomial, and the ciphertext includes the new second public key of the second client and the The third function value of the second polynomial;
  • the private key generation module 115 may be used to generate its own new private key fragment according to the first function value and the first function value of the first polynomial;
  • the data providing module 116 may be used to provide the ciphertext and the third function value of the first polynomial to the first client, so that the first client can generate new private key fragments and verify the The collaborative address.
  • the client in some embodiments of this specification may include:
  • the request initiation module 121 may be used to initiate a private key fragment recovery request corresponding to the coordination address to the second client through the server; the private key fragment recovery request carries its own temporary public key;
  • the data receiving module 122 may be used to receive the ciphertext sent by the server and the third function value of the first polynomial; the ciphertext carries the new second public key and the second polynomial of the second client Value of the third function;
  • the data decryption module 123 may be used to decrypt the ciphertext with the temporary private key corresponding to the temporary public key to obtain the new second public key and the third function value of the second polynomial;
  • the private key generation module 124 may be used to generate its own new private key fragment according to the third function value of the first polynomial and the third function value of the second polynomial;
  • the address verification module 125 may be used to verify the collaborative address according to its own new private key fragment and the new second public key.
  • These computer program instructions can also be stored in a computer-readable memory that can guide a computer or other programmable data processing equipment to work in a specific manner, so that the instructions stored in the computer-readable memory produce an article of manufacture including the instruction device.
  • the device implements the functions specified in one process or multiple processes in the flowchart and/or one block or multiple blocks in the block diagram.
  • These computer program instructions can also be loaded on a computer or other programmable data processing equipment, so that a series of operation steps are executed on the computer or other programmable equipment to produce computer-implemented processing, so as to execute on the computer or other programmable equipment.
  • the instructions provide steps for implementing functions specified in a flow or multiple flows in the flowchart and/or a block or multiple blocks in the block diagram.
  • the computing device includes one or more processors (CPU), input/output interfaces, network interfaces, and memory.
  • processors CPU
  • input/output interfaces network interfaces
  • memory volatile and non-volatile memory
  • the memory may include non-permanent memory in computer readable media, random access memory (RAM) and/or non-volatile memory, such as read-only memory (ROM) or flash memory (flash RAM). Memory is an example of computer readable media.
  • RAM random access memory
  • ROM read-only memory
  • flash RAM flash memory
  • Computer-readable media include permanent and non-permanent, removable and non-removable media, and information storage can be realized by any method or technology.
  • the information can be computer-readable instructions, data structures, program modules, or other data.
  • Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disc (DVD) or other optical storage, Magnetic tape, disk storage or other magnetic storage devices or any other non-transmission media can be used to store information that can be accessed by computing devices.
  • PRAM phase change memory
  • SRAM static random access memory
  • DRAM dynamic random access memory
  • RAM random access memory
  • ROM read-only memory
  • EEPROM electrically erasable programmable read-only memory
  • flash memory or other memory technology
  • CD-ROM compact disc
  • this specification can be provided as methods, systems or computer program products. Therefore, this specification may adopt the form of a complete hardware embodiment, a complete software embodiment, or an embodiment combining software and hardware. Moreover, this specification can take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program codes.
  • computer-usable storage media including but not limited to disk storage, CD-ROM, optical storage, etc.
  • program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types.
  • This specification can also be practiced in distributed computing environments where tasks are performed by remote processing devices connected through a communication network.
  • program modules can be located in local and remote computer storage media including storage devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种私钥恢复、协同地址的创建、签名方法及装置、存储介质,该协同地址的签名方法包括:接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;用所述私钥碎片对应的第一公钥对所述签名进行验证;在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。可以提高密码货币钱包的安全性和便利性。

Description

私钥恢复、协同地址的创建、签名方法及装置、存储介质 技术领域
本说明书涉及密码货币的钱包技术领域,尤其是涉及一种私钥恢复、协同地址的创建、签名方法及装置、存储介质。
背景技术
密码货币的拥有权完全取决于是否持有相应的私钥,因此密码货币的安全性取决于相应的私钥是否具备完善的安全保护策略。
目前对于普通用户来说,使用通常是直接交由密码货币交易所代为保管,或者存储于用户个人的在线钱包或者硬件钱包上。其中,交易所代为保管和在线钱包的安全性相对偏低,可能容易出现如交易所密码货币被盗、在线钱包私钥丢失等事件。硬件钱包是通过将私钥离线存储于硬件设备中,这种方式杜绝了将私钥暴露在网络环境中,免遭黑客攻击的风险,可提更高的安全性,但是用户需要进行交易转账时,需要插入硬件设备或者手动输入私钥,使用不便。
因此,如何提高密码货币钱包的安全性和便利性已成为目前亟需解决的技术问题。
发明内容
本说明书实施例的目的在于提供一种私钥恢复、协同地址的创建、签名方法及装置、存储介质,以提高密码货币钱包的安全性和便利性。
为达到上述目的,一方面,本说明书实施例提供了一种协同地址的签名方法,包括:
接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
用所述私钥碎片对应的第一公钥对所述签名进行验证;
在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
另一方面,本说明书实施例提供了一种客户端,包括:
交易请求接收模块,用于接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
私钥签名验证模块,用于用所述私钥碎片对应的第一公钥对所述签名进行验证;
交易签名生成模块,用于在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
另一方面,本说明书实施例提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
用所述私钥碎片对应的第一公钥对所述签名进行验证;
在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
另一方面,本说明书实施例提供了另一种协同地址的签名方法,包括:
接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
另一方面,本说明书实施例提供了一种服务器,包括:
交易请求接收模块,用于接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
交易请求转发模块,用于将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
交易签名生成模块,用于在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
另一方面,本说明书实施例提供了一种协同地址的创建方法,包括:
接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
响应于所述协同地址创建请求,随机生成第二多项式;
在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种客户端,包括:
请求接收模块,用于接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
函数生成模块,用于响应于所述协同地址创建请求,随机生成第二多项式;
数值交换模块,用于在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
数据生成模块,用于根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
数据加密模块,用于用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
数据发送模块,用于将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
响应于所述协同地址创建请求,随机生成第二多项式;
在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种协同地址的创建方法,包括:
接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
随机生成第一多项式;
在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后, 与所述第一客户端和所述第二客户端交换函数值;
根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种服务器,包括:
请求转发模块,用于接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
函数生成模块,用于随机生成第一多项式;
数值交换模块,用于在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后,与所述第一客户端和所述第二客户端交换函数值;
数据生成模块,用于根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
密文接收模块,用于接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
数据发送模块,用于将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
随机生成第一多项式;
在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后,与所述第一客户端和所述第二客户端交换函数值;
根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种协同地址的创建方法,包括:
通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
随机生成第三多项式;
在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
根据自身的私钥碎片及所述第二公钥验证所述协同地址。
另一方面,本说明书实施例提供了另一种客户端,包括:
请求发送模块,用于通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
函数生成模块,用于随机生成第三多项式;
数值交换模块,用于在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
数据接收模块,用于接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
私钥生成模块,用于根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
地址验证模块,用于根据自身的私钥碎片及所述第二公钥验证所述协同地址。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
随机生成第三多项式;
在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
根据自身的私钥碎片及所述第二公钥验证所述协同地址。
另一方面,本说明书实施例提供了一种私钥恢复方法,包括:
接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
响应于所述私钥碎片恢复请求,随机生成第二多项式;
接收服务器提供的第一多项式的第二函数值;
根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一客户端生成新私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种客户端,包括:
请求接收模块,用于接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
函数生成模块,用于响应于所述私钥碎片恢复请求,随机生成第二多项式;
数值接收模块,用于接收服务器提供的第一多项式的第二函数值;
数据生成模块,用于根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
数据加密模块,用于用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
数据发送模块,用于将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一客户端生成新私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
响应于所述私钥碎片恢复请求,随机生成第二多项式;
接收服务器提供的第一多项式的第二函数值;
根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一 客户端生成新私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种私钥恢复方法,包括:
接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
随机生成第一多项式;
将所述第一多项式的第二函数值提供给所述第二客户端;
接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种服务器,包括:
请求转发模块,用于接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
函数生成模块,用于随机生成第一多项式;
数值提供模块,用于将所述第一多项式的第二函数值提供给所述第二客户端;
数据接收模块,用于接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
私钥生成模块,用于根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
数据提供模块,用于将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
随机生成第一多项式;
将所述第一多项式的第二函数值提供给所述第二客户端;
接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
另一方面,本说明书实施例提供了另一种私钥恢复方法,包括:
通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
用所述临时公钥对应的临时私钥解密所述密文,获得所述新第二公钥及所述第二多项式的第三函数值;
根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
另一方面,本说明书实施例提供了另一种客户端,包括:
请求发起模块,用于通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
数据接收模块,用于接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
数据解密模块,用于用所述临时公钥对应的临时私钥解密所述密文,获得所述新第二公钥及所述第二多项式的第三函数值;
私钥生成模块,用于根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
地址验证模块,用于根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
另一方面,本说明书实施例提供了另一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
用所述临时公钥对应的临时私钥解密所述密文,获得所述新第二公钥及所述第二多项式的第三函数值;
根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
由以上本说明书实施例提供的技术方案可见,本说明书实施例通过用安全多方计算技术,使多个参与方可以利用各自持有的隐私信息生成一个协同地址和各自的私钥碎片;在此基础上,当需要交易协同地址上的资产时,通过将安全多方计算和门限签名相结合,使多个参与方可以利用各自持有的私钥碎片协同生成该协同地址的签名。如此,就实现 了各参与方在隐私保护了各自持有的私钥碎片的前提下,协同完成对该协同地址上的资产的交易授权,从而大大提高了密码货币钱包的安全性。由于本说明书实施例也是一种在线钱包技术,因而相对于硬件钱包,其同样兼具有较好的便利性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书一些实施例中创建协同地址的流程图;
图2为本说明书一些实施例中协同地址的交易签名流程图;
图3为图2中基于安全多方计算的门限签名部分的流程图;
图4为本说明书一些实施例中恢复私钥碎片的流程图;
图5为本说明书一些实施例中客户端的结构框图;
图6为本说明书一些实施例中服务器的结构框图;
图7为本说明书另一些实施例中客户端的结构框图;
图8为本说明书另一些实施例中服务器的结构框图;
图9为本说明书另一些实施例中客户端的结构框图;
图10为本说明书另一些实施例中客户端的结构框图;
图11为本说明书另一些实施例中服务器的结构框图;
图12为本说明书另一些实施例中客户端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
本说明书实施例可以应用于区块链网络中的任何节点,所述节点可以是客户端或服务器。
在本说明书一些实施例中,所述客户端可以为台式电脑、平板电脑、笔记本电脑、智能手机、数字助理、智能可穿戴设备等。其中,智能可穿戴设备可以包括智能手环、智能手表、智能眼镜、智能头盔等。当然,所述客户端并不限于上述具有一定实体的电子设备,其还可以为运行于上述电子设备中的软体。
在本说明书一些实施例中,所述服务器可以为具有运算和网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理和网络交互提供业务逻辑的软体。
门限签名是通过门限密码学构造出的签名方案。例如,在一个t/n门限签名方式中,n个参与方组成群组,并用n个参与方的隐私信息(如,私钥)生成一个协同账户的钱包地址(以下简称协同地址);当需要动用协同地址上的资产时,需要不少于t个参与方利用各自的隐私信息协同合作,才能产生对协同地址的交易签名。
安全多方计算(Secure Multi-Party Computation,简称MPC),是指用户在无需进行数据归集的情况下,完成数据协同计算,同时保护数据所有方的原始数据隐私。整个计算过程中,计算参与各方除了自己的输入数据和输出结果外,无法获知任何额外有效信息,并且保证计算结果准确。
本说明书实施例旨在利用安全多方计算技术,使多个参与方可以利用各自持有的隐私信息生成一个协同地址和各自的私钥碎片;在此基础上,当需要交易协同地址上的资产时,通过将安全多方计算和门限签名相结合,使多个参与方可以利用各自持有的私钥碎片协同生成该协同地址的签名。如此,就实现了各参与方在隐私保护了各自持有的私钥碎片的前提下,协同完成对该协同地址上的资产的交易授权,从而大大提高了密码货币钱包的安全性。由于本说明书实施例也是一种在线钱包技术,因而相对于硬件钱包,其同样兼具有较好的便利性。
为便理解本说明书,下面通过具体实施例并结合具体的应用场景对本说明书进行描述。应当指出的是,下文是以客户端A、客户端B和服务器三个区块链节点为例进行说明的,在本说明书其他实施例中,也可以采用两个区块链节点(即省略服务器),或更多区块链节点实现,本说明书对此不作限定。
一、协同地址创建
在本说明书一些实施例中,图1中示出了协同地址的创建方法。在图1所示实施例中,当客户端A发起创建协同地址的请求时,可以先在本地随机生成公私钥对(tpk A,tsk A),然后将携带tpk A的协同地址创建请求通过服务器发送给客户端B。响应于协同地址创建请求,若客户端B同意协同地址创建请求,则服务器、客户端B和客户端A可以分别在本地随机生成一个多项式。
例如,在本说明书一实施例中,服务器、客户端B、客户端A可以分别生成随机数x 1、x 2、x 3。服务器随机选取一次多项式P 1(x)=x+x 1,使得P 1(0)=x 1,并计算出P 1(x)在自变量x分别取值为1、2和3对应的函数值P 1(1)、P 1(2)、P 1(3):P 1(1)←x 1+1,P 1(2)←x 1+2,P 1(3)←x 1+3。客户端B随机选取一次多项式P 2(x)=x+x 2,使得P 2(0)=x 2,并计算出P 2(x)在自变量x分别取值为1、2和3对应的函数值P 2(1)、P 2(2)、P 2(3):P 2(1)←x 2+1,P 2(2)←x 2+2,P 2(3)←x 2+3。客户端A随机选取一次多项式P 3(x)=x+x 3,使得P 3(0)=x 3,并计算出P 3(x)在自变量x分别取值为1、2和3对应的函数值P 3(1)、P 3(2)、P 3(3): P 3(1)←x 3+1,P 3(2)←x 3+2,P 3(3)←x 3+3。
在服务器、客户端B和客户端A分别在本地随机生成一个多项式后,服务器、客户端B、客户端A之间可以交换一些指定的函数值,以用于后续协同地址创建。
例如,在本说明书一实施例中,服务器可以将P 1(2)发送给客户端B,并将P 1(3)发送给客户端A;客户端B可以将P 2(1)发送给服务器,并将P 2(3)发送给客户端A;客户端A可以将P 3(1)发送给服务器,并将P 3(2)发送给客户端B。此时,服务器可以计算出第一参数P S=P 1(1)+P 2(1)+P 3(1);客户端B可以计算出第二参数P B=P 1(2)+P 2(2)+P 3(2),客户端A可以计算出第三参数P A=P 1(3)+P 2(3)+P 3(3)。相应的,客户端A可以将第三参数P A分别提供给服务器和客户端B,客户端B可以将第二参数P B提供给服务器,服务器可以将第一参数P S提供给客户端B。
在本说明书一实施例中,客户端B可以根据P 2(x)及交换获得的函数值,生成自身的私钥碎片sk B、与该私钥碎片sk B对应的第二公钥pk B、以及协同地址,并可以用客户端A的临时公钥tpk A将第二公钥pk B及P 2(3)加密为密文,然后将所述密文通过服务器提供给客户端A,以便客户端A生成自身的私钥碎片sk A并验证协同地址对应的公钥PK。
例如,客户端B可以根据公式sk B=P 1(2)+P 2(2)生成自身的私钥碎片sk B;可以根据公式pk B=sk B×G生成与私钥碎片sk B对应的第二公钥pk B;可以根据公式PK←p 1×L 1×G+p 2×L 2×G生成协同账户的公钥PK,并根据公式Addr←Hash(PK)生成协同账户对应的协同地址,Addr为协同地址,Hash(PK)表示用哈希函数对PK进行哈希计算。其中,p 1和p 2为从集合(P A,P B,P S)中任取的两个值,G为系统参数(例如可以为椭圆曲线生成元等),L 1、L 2分别为p 1、p 2对应的拉格朗日系数。比如,在一示例性实施例中,以p 1选择为P A,p 2选择为P B为例,则L 1为客户端A的拉格朗日系数L A,L 2为客户端B的拉格朗日系数L B,则此时:PK←P A×L A×G+p B×L B×G。
在本说明书一实施例中,客户端B还可以根据公式
Figure PCTCN2019093171-appb-000001
生成客户端A的私钥碎片sk A对应的第一公钥pk A,以便于后续在客户端A发起针对协同地址的交易请求时,可以对客户端A的签名进行验证。当然,在其他实施例中,第一公钥pk A也可以是由服务器或客户端A生成并提供给客户端B,本说明对此不作限定,具体可以根据需要选择。
在本说明书一实施例中,在收到客户端A发起的协同地址创建请求之后,客户端B还可以先对客户端A进行身份认证,当通过对客户端A的身份认证后,再与客户端A和服务器进行以生成协同地址为目的交互,从而可以提高安全性。
在本说明书一实施例中,客户端B可以将第二公钥pk B对应的第一字符串及P 2(3)对应的第二字符串,按序拼接成第三字符串,然后再用客户端A的临时公钥tpk A将第三字符串加密为密文(即Enc(tpk A,P 2(3)||pk B)),如此可以降低处理开销,提高处理效率。
在本说明书一实施例中,服务器也可以根据P 2(x)及交换获得的函数值,生成协同地 址及自身的私钥碎片sk S;当收到接收客户端B提供的密文时,可以将密文及协同地址提供给客户端A,以便客户端A生成自身的私钥碎片sk A并验证协同地址对应的公钥PK。例如,服务器可以根据公式sk S=P 1(1)+P 2(1)生成自身的私钥碎片sk S;可以根据上述公式PK←p 1×L 1×G+p 2×L 2×G生成协同账户的公钥PK,并根据公式Addr←Hash(PK)生成所述协同账户对应的协同地址。
在本说明书一实施例中,客户端A在接收到服务器发送的密文及协同地址后,可以用tpk A对应的tsk A解密所述密文,即P 2(3)||pk B←Dec(tsk A,Enc(tpk A,P 2(3)||pk B)),从而可以获得P 2(3)和pk B。据此,客户端A可以根据公式sk A=P 1(3)+P 2(3)生成自身的私钥碎片sk A。并且,在此基础上,客户端A可以验证PK=(L A×sk A)×G+pk B是否成立;如果成立,则认为协同地址创建成功。否则,认为协同地址创建失败。
参考图7所示,与上述协同地址创建方法中的客户端B对应,本说明书一些实施例的客户端可以包括:
请求接收模块71,可以用于接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
函数生成模块72,可以用于响应于所述协同地址创建请求,随机生成第二多项式;
数值交换模块73,可以用于在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
数据生成模块74,可以用于根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
数据加密模块75,可以用于用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
数据发送模块76,可以用于将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
参考图8所示,与上述协同地址创建方法中的服务器对应,本说明书一些实施例的服务器可以包括:
请求转发模块81,可以用于接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
函数生成模块82,可以用于随机生成第一多项式;
数值交换模块83,可以用于在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后,与所述第一客户端和所述第二客户端交换函数值;
数据生成模块84,可以用于根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
密文接收模块85,可以用于接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
数据发送模块86,可以用于将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
参考图9所示,与上述协同地址创建方法中的客户端A对应,本说明书一些实施例的客户端可以包括:
请求发送模块91,可以用于通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
函数生成模块92,可以用于随机生成第三多项式;
数值交换模块93,可以用于在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
数据接收模块94,可以用于接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
私钥生成模块95,可以用于根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
地址验证模块96,可以用于根据自身的私钥碎片及所述第二公钥验证所述协同地址。
二、交易签名
在本申请一些实施例中,在创建完成协同地址后,各参与方(即客户端A、客户端B和服务器)就可以协同管理同一个钱包账户了。当需要交易协同地址上的资产时,需要各参与方进行基于安全多方计算的门限签名,以协同完成对交易该协同地址上的资产的授权。例如,以2/3门限签名方式为例,协同地址的交易签名方法可如图2所示。
在图2所示的签名方法中,当客户端A希望交易目标协同地址上的资产时,其可以通过服务器向客户端B发起针对目标协同地址的交易请求。其中,所述交易请求不仅可以携带有交易哈希值,还可以携带有客户端A用其私钥碎片sk A生成的签名。例如,在本说明书一实施例中,客户端A可以用其私钥碎片sk A并通过签名公式tSignature←ECDSA(sk A,txHash)生成签名。其中,ECDSA为椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,简称ECDSA),tSignature为签名,txHash为交易哈希值。以转账交易请求为例,其中,交易哈希值可以包含转出钱包地址、转入钱包地址、转入额度等交易信息。
服务器在将交易请求转发给客户端B后,客户端B可以用私钥碎片sk A对应的第一公钥pk A对客户端A的签名进行验证;在通过对该签名的验证后,客户端B和服务器可以基于各自持有的私钥碎片,协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
在本说明书一实施例中,客户端B和服务器可以基于各自持有的私钥碎片,协同对 所述交易请求进行基于安全多方计算的门限签名,例如可以如图3所示。在图3中,客户端B可以生成随机数k 1和随机数q 1,并将随机数k 1和随机数q 1提供给服务器;同时,服务器可以生成随机数k 2和随机数q 2,并将随机数k 2和随机数q 2提供给客户端B。
在此基础上,客户端B可以根据公式R B=k 1×G生成第一中间参数R B,并提供给服务器;同样,服务器可以根据公式R S=k 2×G生成第二中间参数R S。至此,客户端B和服务器可以分别根据公式R=R B+R S生成签名参数R。因此,客户端B可以将自身的私钥碎片sk B及签名参数R代入第一签名函数中生成第一签名部分。相应的,服务器可以将自身的私钥碎片sk S及签名参数R代入第二签名函数中生成第二签名部分。
例如,在本说明书一实施例中,所述第一签名函数可以包括sig B←(e×sk B+R x)×q -1,所述第二签名函数可以包括sig S←(e×sk S+R x)×q -1,其中,sig B为第一签名部分,sig S为第二签名部分,e为交易哈希值,R x为签名参数R在坐标系上对应的x坐标值,q=q 1×q 2
参考图5所示,与上述签名方法中的客户端B对应,本说明书一些实施例的客户端可以包括:
交易请求接收模块51,可以用于接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
私钥签名验证模块52,可以用于用所述私钥碎片对应的第一公钥对所述签名进行验证;
交易签名生成模块53,可以用于在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
参考图6所示,与上述签名方法中的服务器对应,本说明书一些实施例的服务器可以包括:
交易请求接收模块61,可以用于接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
交易请求转发模块62,可以用于将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
交易签名生成模块63,可以用于在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
应当理解的是,以上仅是举例说明基于安全多方计算的门限签名方法,根据签名算法的不同、安全多方计算算法的不同,和/或,门限签名方式(例如2/3模式、3/5模式、5/5模式等)的不同,上述基于安全多方计算的门限签名的方法步骤也会有差异。由于这些都在本说明书的精神和原理之内,因而其所作的修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
三、私钥恢复
在本说明书一些实施例中,一旦用户的客户端设备(例如智能手机)丢失,或者客户端被删除,则用户可以在新的客户端设备安装客户端,或在原有的客户端设备上重新安装客户端。当客户端对应的用户重新登录时,可以获得相应协同地址的公钥PK。在此基础上,如图4所示,以客户端A为例,当客户端A发起私钥碎片恢复请求时,可以先在本地随机生成公私钥对(tpk A,tsk A),然后将携带tpk A的钥碎片恢复请求通过服务器发送给客户端B。响应于钥碎片恢复请求,服务器和客户端B可以分别在本地随机生成一个多项式。
例如,在本说明书一实施例中,服务器可以随机选取一次多项式P 1(x)=x+L S×sk S,使得P 1(0)=L S×sk S,并计算出P 1(x)在自变量x分别取值为1、2和3对应的函数值P 1(1)、P 1(2)、P 1(3):P 1(1)←L S×sk S+1,P 1(2)←L S×sk S+2,P 1(3)←L S×sk S+3。客户端B可以随机选取一次多项式P 2(x)=x+L B×sk B,使得P 2(0)=L B×sk B,并计算出P 2(x)在自变量x分别取值为1、2和3对应的函数值P 2(1)、P 2(2)、P 2(3):P 2(1)←L B×sk B+1,P 2(2)←L B×sk B+2,P 2(3)←L B×sk B+3。其中,L S为服务器的拉格朗日系数。
服务器可以将P 1(2)提供给客户端B,以使得客户端B可以根据P 2(x)及P 1(2)生成自身的新私钥碎片sk' B、以及与所述新私钥碎片sk' B对应的新第二公钥pk' B。例如,在一个实施例中,客户端B可以根据公式sk' B=P 1(2)+P 2(2)生成自身的新私钥碎片sk' B;根据公式pk' B=sk' B×G生成与所述新私钥碎片sk' B对应的新第二公钥pk' B。此后,客户端B可以用临时公钥tpk A将pk' B及P 2(3)加密为密文(加密过程可以参见上述协同地址创建部分的相关描述,在此不再赘述),然后将密文及P 2(1)提供给服务器。
据此,服务器可以根据公式sk' S=P 1(1)+P 2(1)生成自身的新私钥碎片sk' S,然后服务器可以将密文及P 1(3)提供给客户端A,从而便于客户端A生成自身的新私钥碎片sk' A验证协同地址对应的公钥PK,即验证PK=(L A×sk' A)×G+pk' B是否成立;如果成立,则确认私钥碎片恢复成功,从而使得客户端A可以恢复出一个新私钥碎片sk' A,至此密钥恢复完成。如此,解决了单个节点丢失密钥造成的钱包无法恢复的问题。
在另一个实施例中,客户端B还可根据公式
Figure PCTCN2019093171-appb-000002
生成与客户端A的新私钥碎片sk' A对应的新第一公钥pk' A,以便于后续在客户端A发起针对协同地址的交易请求时,可以对客户端A的签名进行验证。当然,在其他实施例中,新第一公钥pk' A也可以是由服务器或客户端A生成并提供给客户端B,本说明对此不作限定,具体可以根据需要选择。
应当理解的是,客户端对应的用户应当是注册用户,即在发起创建协同地址的请求之前,客户端对应的用户需要先下载并完成客户端的安装,然后登陆进客户端,并根据提示进行注册。
参考图10所示,与上述私钥碎片恢复方法中的客户端B对应,本说明书一些实施 例的客户端可以包括:
请求接收模块101,可以用于接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
函数生成模块102,可以用于响应于所述私钥碎片恢复请求,随机生成第二多项式;
数值接收模块103,可以用于接收服务器提供的第一多项式的第二函数值;
数据生成模块104,可以用于根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
数据加密模块105,可以用于用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
数据发送模块106,可以用于将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一客户端生成新私钥碎片并验证所述协同地址。
参考图11所示,与上述私钥碎片恢复方法中的服务器对应,本说明书一些实施例的服务器可以包括:
请求转发模块111,可以用于接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
函数生成模块112,可以用于随机生成第一多项式;
数值提供模块113,可以用于将所述第一多项式的第二函数值提供给所述第二客户端;
数据接收模块114,可以用于接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
私钥生成模块115,可以用于根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
数据提供模块116,可以用于将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
参考图12所示,与上述私钥碎片恢复方法中的客户端A对应,本说明书一些实施例的客户端可以包括:
请求发起模块121,可以用于通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
数据接收模块122,可以用于接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
数据解密模块123,可以用于用所述临时公钥对应的临时私钥解密所述密文,获得 所述新第二公钥及所述第二多项式的第三函数值;
私钥生成模块124,可以用于根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
地址验证模块125,可以用于根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
虽然上文描述的过程流程包括以特定顺序出现的多个操作,但是,应当清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储 器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘式存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (41)

  1. 一种协同地址的签名方法,其特征在于,包括:
    接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
    用所述私钥碎片对应的第一公钥对所述签名进行验证;
    在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
  2. 如权利要求1所述的协同地址的签名方法,其特征在于,所述基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名,包括:
    随机生成第一随机数和第二随机数;
    将所述第一随机数和第二随机数提供给所述服务器,并接收所述服务器随机生成的第三随机数和第四随机数;
    根据所述第一随机数生成第一中间参数并提供给所述服务器,并接收所述服务器根据所述第三随机数生成的第二中间参数;
    根据所述第一中间参数和所述第二中间参数生成签名参数;
    将自身的私钥碎片及所述签名参数代入第一签名函数中生成第一签名部分;
    接收所述服务器提供的第二签名部分,所述第二签名部分由所述服务器将其私钥碎片及所述签名参数代入第二签名函数得到;
    根据所述第一签名部分和所述第二签名部分生成交易签名。
  3. 如权利要求2所述的协同地址的签名方法,其特征在于,所述根据所述第一随机数生成第一中间参数包括:根据公式R B=k 1×G生成第一中间参数;
    所述根据所述第三随机数生成第二中间参数包括:根据公式R S=k 2×G生成第二中间参数;
    所述根据所述第一中间参数和所述第二中间参数生成签名参数包括:根据公式R=R B+R S生成签名参数;
    其中,R为签名参数,R B为第一中间参数,R S为第二中间参数,G为系统参数,k 1为第一随机数,k 2为第三随机数。
  4. 如权利要求2所述的协同地址的签名方法,其特征在于,所述第一签名函数包括sig B←(e×sk B+R x)×q -1,所述第二签名函数包括sig S←(e×sk S+R x)×q -1
    其中,sig B为第一签名部分,sig S为第二签名部分,e为交易哈希值,R x为签名参数R在坐标系上对应的x坐标值,sk B为自身的私钥碎片,q=q 1×q 2,且q 1为第二随机数,q 2为第四随机数,sk S为服务器的私钥碎片。
  5. 一种客户端,其特征在于,包括:
    交易请求接收模块,用于接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
    私钥签名验证模块,用于用所述私钥碎片对应的第一公钥对所述签名进行验证;
    交易签名生成模块,用于在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
  6. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
    用所述私钥碎片对应的第一公钥对所述签名进行验证;
    在通过对所述签名的验证时,基于各自持有的私钥碎片,与服务器协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
  7. 一种协同地址的签名方法,其特征在于,包括:
    接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
    将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
    在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
  8. 如权利要求7所述的协同地址的签名方法,其特征在于,所述基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名,包括:
    随机生成第三随机数和第四随机数并将其提供给所述第二客户端,接收所述第二客户端随机生成的第一随机数和第二随机数;
    根据所述第三随机数生成第二中间参数并提供给所述第二客户端,并接收所述第二客户端根据所述第一随机数生成的第一中间参数;
    根据所述第一中间参数和所述第二中间参数生成签名参数;
    将自身的私钥碎片及所述签名参数代入第二签名函数中生成第二签名部分;
    接收所述第二客户端提供的第一签名部分,所述第一签名部分由所述第二客户端将其私钥碎片及所述签名参数代入第一签名函数得到;
    根据所述第一签名部分和所述第二签名部分生成交易签名。
  9. 如权利要求8所述的协同地址的签名方法,其特征在于,所述根据所述第一随机数生成第一中间参数包括:根据公式R B=k 1×G生成第一中间参数;
    所述根据所述第三随机数生成第二中间参数包括:根据公式R S=k 2×G生成第二中间参数;
    所述根据所述第一中间参数和所述第二中间参数生成签名参数包括:根据公式R=R B+R S生成签名参数;
    其中,R为签名参数,R B为第一中间参数,R S为第二中间参数,G为系统参数,k 1为第一随机数,k 2为第三随机数。
  10. 如权利要求8所述的协同地址的签名方法,其特征在于,所述第一签名函数包括sig B←(e×sk B+R x)×q -1,所述第二签名函数包括sig S←(e×sk S+R x)×q -1
    其中,sig B为第一签名部分,sig S为第二签名部分,e为交易哈希值,R x为签名参数R在坐标系上对应的x坐标值,sk B为自身的私钥碎片,q=q 1×q 2,且q 1为第二随机数,q 2为第四随机数,sk S为服务器的私钥碎片。
  11. 一种服务器,其特征在于,包括:
    交易请求接收模块,用于接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
    交易请求转发模块,用于将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
    交易签名生成模块,用于在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
  12. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    接收第一客户端发起的对目标协同地址的交易请求,所述交易请求中包含交易哈希值及所述第一客户端用其私钥碎片生成的签名;
    将所述交易请求提供给第二客户端,以供所述第二客户端用所述私钥碎片对应的第一公钥对所述签名进行验证;
    在所述第二客户端通过对所述签名的验证时,基于各自持有的私钥碎片,与所述第二客户端协同对所述交易请求进行基于安全多方计算的门限签名,从而生成交易签名。
  13. 一种协同地址的创建方法,其特征在于,包括:
    接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
    响应于所述协同地址创建请求,随机生成第二多项式;
    在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
    根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
    用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
    将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
  14. 如权利要求13所述的协同地址的创建方法,其特征在于,所述与所述第一客户端和所述服务器交换函数值,包括:
    将所述第二多项式的第一函数值提供给所述服务器,并将所述第二多项式的第三函数值提供给所述第一客户端;
    接收所述服务器提供的第一多项式的第二函数值,并接收所述第一客户端提供的第三多项式的第二函数值;
    根据所述第一多项式、所述第二多项式及所述第三多项式各自的第二函数值,生成第二参数并提供给所述服务器;
    接收所述第一客户端根据所述第一多项式、所述第二多项式及所述第三多项式各自的第三函数值生成的第三参数,并接收所述服务器根据所述第一多项式、所述第二多项式及所述第三多项式各自的第一函数值生成的第一参数。
  15. 如权利要求13所述的协同地址的创建方法,其特征在于,所述根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址,包括:
    根据公式sk B=P 1(2)+P 2(2)生成自身的私钥碎片sk B
    根据公式pk B=sk B×G生成与所述私钥碎片sk B对应的第二公钥pk B
    根据公式PK←p 1×L 1×G+p 2×L 2×G生成协同账户的公钥PK,并根据公式Addr←Hash(PK)生成所述协同账户对应的协同地址;
    其中,p 1和p 2为从集合(P A,P B,P S)中任取的两个值,P S为第一参数且P S=P 1(1)+P 2(1)+P 3(1),P B为第二参数且P B=P 1(2)+P 2(2)+P 3(2),P A为第三参数且P A=P 1(3)+P 2(3)+P 3(3),P 1(1)、P 2(1)、P 3(1)分别为第一多项式P 1(x)、第二多项式P 2(x)和第三多项式P 3(x)的第一函数值;P 1(2)、P 2(2)、P 3(2)分别为第一多项式P 1(x)、第二多项式P 2(x)和第三多项式P 3(x)的第二函数值;P 1(3)、P 2(3)、P 3(3)分别为第一多项式P 1(x)、第二多项式P 2(x)和第三多项式P 3(x)的第三函数值,G为系统参数,L 1、L 2分别为p 1、p 2对应的拉格朗日系数,Addr为协同地址,Hash(PK)表示用哈希函数对PK进行哈希计算。
  16. 如权利要求13所述的协同地址的创建方法,其特征在于,还包括:
    根据公式
    Figure PCTCN2019093171-appb-100001
    生成与所述第一客户端的私钥碎片对应的第一公钥pk A
    其中,PK为协同账户的公钥,L A为第一客户端的拉格朗日系数,L B为自身的拉格朗日系数,pk B为自身的第二公钥。
  17. 如权利要求13所述的协同地址的创建方法,其特征在于,所述用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文,包括:
    将所述第二公钥对应的第一字符串及所述第二多项式的第三函数值对应的第二字符串,按序拼接成第三字符串;
    用所述临时公钥将所述第三字符串加密为密文。
  18. 一种客户端,其特征在于,包括:
    请求接收模块,用于接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
    函数生成模块,用于响应于所述协同地址创建请求,随机生成第二多项式;
    数值交换模块,用于在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
    数据生成模块,用于根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
    数据加密模块,用于用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
    数据发送模块,用于将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
  19. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    接收第一客户端发起的协同地址创建请求;所述协同地址创建请求中携带所述第一客户端的临时公钥;
    响应于所述协同地址创建请求,随机生成第二多项式;
    在所述第一客户端随机生成第三多项式且服务器随机生成第一多项式后,与所述第一客户端和所述服务器交换函数值;
    根据所述第二多项式及交换获得的函数值,生成自身的私钥碎片、与所述私钥碎片对应的第二公钥、以及协同地址;
    用所述临时公钥将所述第二公钥及所述第二多项式的第三函数值加密为密文;
    将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
  20. 一种协同地址的创建方法,其特征在于,包括:
    接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
    随机生成第一多项式;
    在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后,与所述第一客户端和所述第二客户端交换函数值;
    根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
    接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
    将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
  21. 如权利要求20所述的协同地址的创建方法,其特征在于,所述与所述第一客户端和所述第二客户端交换函数值,包括:
    将所述第一多项式的第二函数值提供给所述第二客户端,并将所述第一多项式的第三函数值提供给所述第一客户端;
    接收所述第二客户端提供的第二多项式的第一函数值,并接收所述第一客户端提供 的第三多项式的第一函数值;
    根据所述第一多项式、所述第二多项式及所述第三多项式各自的第一函数值,生成第一参数并提供给所述第二客户端;
    接收所述第二客户端根据所述第一多项式、所述第二多项式及所述第三多项式各自的第二函数值生成的第二参数,并接收所述第一客户端根据所述第一多项式、所述第二多项式及所述第三多项式各自的第三函数值生成的第三参数。
  22. 如权利要求21所述的协同地址的创建方法,其特征在于,所述根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片,包括:
    根据公式sk S=P 1(1)+P 2(1)生成自身的私钥碎片sk S
    根据公式PK←p 1×L 1×G+p 2×L 2×G生成协同账户的公钥PK,并根据公式Addr←Hash(PK)生成所述协同账户对应的协同地址;
    其中,p 1和p 2为从集合(P A,P B,P S)中任取的两个值,P S为第一参数且P S=P 1(1)+P 2(1)+P 3(1),P B为第二参数且P B=P 1(2)+P 2(2)+P 3(2),P A为第三参数且P A=P 1(3)+P 2(3)+P 3(3),P 1(1)、P 2(1)、P 3(1)分别为第一多项式P 1(x)、第二多项式P 2(x)和第三多项式P 3(x)的第一函数值;P 1(2)、P 2(2)、P 3(2)分别为第一多项式P 1(x)、第二多项式P 2(x)和第三多项式P 3(x)的第二函数值;P 1(3)、P 2(3)、P 3(3)分别为第一多项式P 1(x)、第二多项式P 2(x)和第三多项式P 3(x)的第三函数值,G为系统参数,L 1、L 2分别为p 1、p 2对应的拉格朗日系数,Addr为协同地址,Hash(PK)表示用哈希函数对PK进行哈希计算。
  23. 一种服务器,其特征在于,包括:
    请求转发模块,用于接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
    函数生成模块,用于随机生成第一多项式;
    数值交换模块,用于在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后,与所述第一客户端和所述第二客户端交换函数值;
    数据生成模块,用于根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
    密文接收模块,用于接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
    数据发送模块,用于将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
  24. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    接收第一客户端发起的协同地址创建请求,并将其提供给第二客户端;所述协同地址创建请求中携带所述第一客户端的临时公钥;
    随机生成第一多项式;
    在所述第一客户端随机生成第三多项式且所述第二客户端随机生成第二多项式后,与所述第一客户端和所述第二客户端交换函数值;
    根据所述第一多项式及交换获得的函数值,生成协同地址及自身的私钥碎片;
    接收所述第二客户端提供的用所述临时公钥加密而成的密文,所述密文包含所述第二客户端的第二公钥及所述第二多项式的第三函数值;
    将所述密文及所述协同地址提供给所述第一客户端,以便所述第一客户端生成私钥碎片并验证所述协同地址。
  25. 一种协同地址的创建方法,其特征在于,包括:
    通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
    随机生成第三多项式;
    在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
    接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
    根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
    根据自身的私钥碎片及所述第二公钥验证所述协同地址。
  26. 如权利要求25所述的协同地址的创建方法,其特征在于,所述根据自身的私钥碎片及所述第二公钥验证所述协同地址,包括:
    验证PK=(L A×sk A)×G+pk B是否成立;
    如果成立,则确认协同地址创建成功;
    其中,PK为协同地址,sk A为自身的私钥碎片,G为系统参数,L A为自身的拉格朗日系数,pk B为第二客户端的第二公钥。
  27. 一种客户端,其特征在于,包括:
    请求发送模块,用于通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
    函数生成模块,用于随机生成第三多项式;
    数值交换模块,用于在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
    数据接收模块,用于接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
    私钥生成模块,用于根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
    地址验证模块,用于根据自身的私钥碎片及所述第二公钥验证所述协同地址。
  28. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    通过服务器向第二客户端发起协同地址创建请求;所述协同地址创建请求中携带自身的临时公钥;
    随机生成第三多项式;
    在所述服务器随机生成第一多项式且所述第二客户端随机生成第二多项式后,与所述第二客户端和所述服务器交换函数值,以便所述第二客户端和所述服务器生成协同账户的协同地址;
    接收所述服务器发送的密文及协同地址,并用所述临时公钥对应的临时私钥解密所述密文,获得所述第二客户端的第二公钥及所述第二多项式的第三函数值;
    根据所述第三多项式及所述第三函数值,生成自身的私钥碎片;
    根据自身的私钥碎片及所述第二公钥验证所述协同地址。
  29. 一种私钥恢复方法,其特征在于,包括:
    接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
    响应于所述私钥碎片恢复请求,随机生成第二多项式;
    接收服务器提供的第一多项式的第二函数值;
    根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
    用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
    将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一客户端生成新私钥碎片并验证所述协同地址。
  30. 如权利要求29所述的私钥恢复方法,其特征在于,所述根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥,包括:
    根据公式sk' B=P 1(2)+P 2(2)生成自身的新私钥碎片sk' B
    根据公式pk' B=sk' B×G生成与所述新私钥碎片sk' B对应的新第二公钥pk' B
    其中,P 1(2)、P 2(2)分别为第一多项式P 1(x)、第二多项式P 2(x)的第二函数值,G为系统参数,P 1(2)=L S×sk S+2,P 2(2)=L B×sk S+2,其中,L S为服务器的拉格朗日系数,L B为自身的拉格朗日系数。
  31. 如权利要求30所述的私钥恢复方法,其特征在于,还包括:
    根据公式
    Figure PCTCN2019093171-appb-100002
    生成与所述新私钥碎片对应的新第一公钥pk' A
    其中,PK为协同账户的公钥,L A为第一客户端的拉格朗日系数,L B为自身的拉格朗日系数,pk' B为自身的新第二公钥。
  32. 一种客户端,其特征在于,包括:
    请求接收模块,用于接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
    函数生成模块,用于响应于所述私钥碎片恢复请求,随机生成第二多项式;
    数值接收模块,用于接收服务器提供的第一多项式的第二函数值;
    数据生成模块,用于根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
    数据加密模块,用于用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
    数据发送模块,用于将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一客户端生成新私钥碎片并验证所述协同地址。
  33. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    接收第一客户端发起的对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
    响应于所述私钥碎片恢复请求,随机生成第二多项式;
    接收服务器提供的第一多项式的第二函数值;
    根据所述第二多项式及所述第二函数值,生成自身的新私钥碎片、以及与所述新私钥碎片对应的新第二公钥;
    用所述临时公钥将所述新第二公钥及所述第二多项式的第三函数值加密为密文;
    将所述密文及所述第二多项式的第一函数值提供给所述服务器,以便所述服务器根据所述第一函数值及所述第一多项式生成所述服务器的新私钥碎片,并便于所述服务器将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,从而便于所述第一客户端生成新私钥碎片并验证所述协同地址。
  34. 一种私钥恢复方法,其特征在于,包括:
    接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
    随机生成第一多项式;
    将所述第一多项式的第二函数值提供给所述第二客户端;
    接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
    根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
    将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
  35. 如权利要求34所述的私钥恢复方法,其特征在于,所述根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片,包括:
    根据公式sk' S=P 1(1)+P 2(1)生成自身的新私钥碎片sk' S
    其中,P 1(1)、P 2(1)分别为第一多项式P 1(x)、第二多项式P 2(x)的第一函数值,P 1(1)=L S×sk S+1,P 2(1)=L B×sk S+1,其中,L S为自身的拉格朗日系数,L B为第二客户端的拉格朗日系数。
  36. 一种服务器,其特征在于,包括:
    请求转发模块,用于接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
    函数生成模块,用于随机生成第一多项式;
    数值提供模块,用于将所述第一多项式的第二函数值提供给所述第二客户端;
    数据接收模块,用于接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
    私钥生成模块,用于根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
    数据提供模块,用于将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
  37. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    接收第一客户端发起的对应于协同地址的私钥碎片恢复请求,并将其转发给第二客户端;所述私钥碎片恢复请求中携带所述第一客户端的临时公钥;
    随机生成第一多项式;
    将所述第一多项式的第二函数值提供给所述第二客户端;
    接收所述第二客户端提供的密文及第二多项式的第一函数值,所述密文包含所述第二客户端的新第二公钥及所述第二多项式的第三函数值;
    根据所述第一函数值及所述第一多项式的第一函数值,生成自身的新私钥碎片;
    将所述密文及所述第一多项式的第三函数值提供给所述第一客户端,以便所述第一客户端生成新私钥碎片并验证所述协同地址。
  38. 一种私钥恢复方法,其特征在于,包括:
    通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
    接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
    用所述临时公钥对应的临时私钥解密所述密文,获得所述新第二公钥及所述第二多项式的第三函数值;
    根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
    根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
  39. 如权利要求38所述的私钥恢复方法,其特征在于,所述根据自身的新私钥碎片及所述新第二公钥验证所述协同地址,包括:
    验证PK=(L A×sk' A)×G+pk' B是否成立;
    如果成立,则确认私钥碎片恢复成功;
    其中,PK为协同地址,sk' A为自身的新私钥碎片,G为系统参数,L A为自身的拉格朗日系数,pk' B为第二客户端的新第二公钥。
  40. 一种客户端,其特征在于,包括:
    请求发起模块,用于通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
    数据接收模块,用于接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
    数据解密模块,用于用所述临时公钥对应的临时私钥解密所述密文,获得所述新第二公钥及所述第二多项式的第三函数值;
    私钥生成模块,用于根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
    地址验证模块,用于根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
  41. 一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
    通过服务器向第二客户端发起对应于协同地址的私钥碎片恢复请求;所述私钥碎片恢复请求中携带自身的临时公钥;
    接收所述服务器发送的密文及第一多项式的第三函数值;所述密文中携带所述第二客户端的新第二公钥及第二多项式的第三函数值;
    用所述临时公钥对应的临时私钥解密所述密文,获得所述新第二公钥及所述第二多项式的第三函数值;
    根据所述第一多项式的第三函数值及所述第二多项式的第三函数值,生成自身的新私钥碎片;
    根据自身的新私钥碎片及所述新第二公钥验证所述协同地址。
PCT/CN2019/093171 2019-06-27 2019-06-27 私钥恢复、协同地址的创建、签名方法及装置、存储介质 WO2020258125A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/093171 WO2020258125A1 (zh) 2019-06-27 2019-06-27 私钥恢复、协同地址的创建、签名方法及装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/093171 WO2020258125A1 (zh) 2019-06-27 2019-06-27 私钥恢复、协同地址的创建、签名方法及装置、存储介质

Publications (1)

Publication Number Publication Date
WO2020258125A1 true WO2020258125A1 (zh) 2020-12-30

Family

ID=74060435

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/093171 WO2020258125A1 (zh) 2019-06-27 2019-06-27 私钥恢复、协同地址的创建、签名方法及装置、存储介质

Country Status (1)

Country Link
WO (1) WO2020258125A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120278609A1 (en) * 2011-04-29 2012-11-01 International Business Machines Corporation Joint encryption of data
CN104852911A (zh) * 2015-04-27 2015-08-19 小米科技有限责任公司 安全验证方法、装置及系统
CN108494551A (zh) * 2018-03-16 2018-09-04 数安时代科技股份有限公司 基于协同密钥的处理方法、系统、计算机设备及存储介质
CN108809652A (zh) * 2018-05-21 2018-11-13 安徽航天信息有限公司 一种基于秘密共享的区块链加密账本
CN109474422A (zh) * 2018-11-19 2019-03-15 武汉大学 一种多方协同产生sm2数字签名的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120278609A1 (en) * 2011-04-29 2012-11-01 International Business Machines Corporation Joint encryption of data
CN104852911A (zh) * 2015-04-27 2015-08-19 小米科技有限责任公司 安全验证方法、装置及系统
CN108494551A (zh) * 2018-03-16 2018-09-04 数安时代科技股份有限公司 基于协同密钥的处理方法、系统、计算机设备及存储介质
CN108809652A (zh) * 2018-05-21 2018-11-13 安徽航天信息有限公司 一种基于秘密共享的区块链加密账本
CN109474422A (zh) * 2018-11-19 2019-03-15 武汉大学 一种多方协同产生sm2数字签名的方法

Similar Documents

Publication Publication Date Title
JP7164580B6 (ja) ウォレット管理システムと併せたブロックチェーンベースのシステムのための暗号鍵のセキュアなマルチパーティ損失耐性のある記憶及び転送
CN110289968B (zh) 私钥恢复、协同地址的创建、签名方法及装置、存储介质
TWI721122B (zh) 資料安全傳輸方法、客戶端及服務端方法、裝置及系統
US11356280B2 (en) Personal device security using cryptocurrency wallets
CN108292402B (zh) 用于信息的安全交换的公共秘密的确定和层级确定性密钥
CN111066285B (zh) 基于sm2签名恢复公钥的方法
CN111431713B (zh) 一种私钥存储方法、装置和相关设备
KR20200066257A (ko) 정보 보호를 위한 시스템 및 방법
CN111768304A (zh) 区块链交易方法及装置、电子设备
CN109510818A (zh) 区块链的数据传输系统、方法、装置、设备及存储介质
US11386429B2 (en) Cryptocurrency securing method and device thereof
US11915314B2 (en) Method and apparatus for a blockchain-agnostic safe multi-signature digital asset management
CN110363528B (zh) 协同地址的生成、交易签名方法及装置、存储介质
Verbücheln How perfect offline wallets can still leak bitcoin private keys
WO2020258125A1 (zh) 私钥恢复、协同地址的创建、签名方法及装置、存储介质
WO2020258126A1 (zh) 协同地址的生成、交易签名方法及装置、存储介质
WO2020168544A1 (zh) 数据处理方法和装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19934439

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19934439

Country of ref document: EP

Kind code of ref document: A1