WO2014183671A1 - 一种云存储安全控制的方法 - Google Patents

一种云存储安全控制的方法 Download PDF

Info

Publication number
WO2014183671A1
WO2014183671A1 PCT/CN2014/077686 CN2014077686W WO2014183671A1 WO 2014183671 A1 WO2014183671 A1 WO 2014183671A1 CN 2014077686 W CN2014077686 W CN 2014077686W WO 2014183671 A1 WO2014183671 A1 WO 2014183671A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
user
answer
data
security question
Prior art date
Application number
PCT/CN2014/077686
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 EP14797382.0A priority Critical patent/EP2999159A4/en
Publication of WO2014183671A1 publication Critical patent/WO2014183671A1/zh
Priority to US14/943,909 priority patent/US20160112413A1/en

Links

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
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2131Lost password, e.g. recovery of lost or forgotten passwords
    • 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
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN

Definitions

  • the present invention relates to the field of cloud storage, and in particular, to a method for cloud storage security control.
  • Asymmetric key encryption to ensure data security
  • asymmetric key encryption requires different keys to complete the encryption and decryption operations, one public release, that is, the public key, and the other is secretly saved by the user, that is, the private key .
  • the sender of the message is encrypted with the public key, and the recipient of the message is decrypted with the private key.
  • the inventor has found that because the shared storage is used in the cloud storage, the service provider needs to control the private key, resulting in low security of the private key.
  • FIG. 1 is a flowchart of a storage method according to an embodiment of the present invention.
  • FIG. 2 is a flowchart of a storage method according to an embodiment of the present invention.
  • FIG. 3 is a flowchart of a storage method according to an embodiment of the present invention.
  • FIG. 4 is a flowchart of a storage method according to an embodiment of the present invention.
  • FIG. 5 is a flowchart of a storage method according to an embodiment of the present invention.
  • FIG. 6 is a schematic structural diagram of a storage system according to an embodiment of the present invention.
  • FIG. 7 is a schematic structural diagram of a storage system according to an embodiment of the present invention.
  • FIG. 8 is a flowchart of a cloud storage security control method according to an embodiment of the present invention.
  • FIG. 9 is a flowchart of a cloud storage security control method according to still another embodiment of the present invention. Mode for Carrying Out the Invention The present invention will be further described in detail below with reference to the accompanying drawings and embodiments. It is understood that the specific embodiments described herein are merely illustrative of the invention and are not intended to limit the invention.
  • FIG. 1 is a flowchart of a storage method according to an embodiment of the present invention.
  • the data file is encrypted by using the storage key; and the storage key is encrypted by using two different encryption methods to form a personal key and a data key; wherein, the data is The key of the user to which the file belongs is the decryption key, and the storage key can be obtained by decrypting the personal key; the data key can be decrypted by using the data file before encryption as the decryption key to obtain the storage key; and the encrypted key is stored.
  • the method also includes:
  • Step 101 Before storing the data file of the new user, determine whether the same data file exists in the stored data file; if the determination result is yes, go to step 102; otherwise, go to step 103.
  • Step 102 The data file is not repeatedly uploaded and stored; the data key is decrypted by using the data file to obtain a storage key, and the storage key is encrypted by using a new user's key to form the new use.
  • the personal key of the user This is the end of the process.
  • Step 103 encrypting and storing the data file by using the storage key; simultaneously encrypting the storage key by using two different encryption methods to form a personal key and a data key; storing the encrypted data file, the personal key, and the data key . This is the end of the process.
  • the server Before a new user uploads a data file, the server first determines whether the same data file as the data file to be uploaded already exists in the cloud. If it already exists, first use the data file provided by the user to decrypt the data key to obtain the storage key, and then use the user's key to encrypt the storage key to obtain the personal key. During subsequent access, the user only needs to provide his own key to decrypt the personal key to obtain the storage key, and further use the storage key to obtain the plaintext of the data. In this way, it not only prevents the data files from being repeatedly stored in the cloud, but also ensures that the cloud storage service provider (internal staff) cannot obtain the plaintext of the data content.
  • the cloud storage service provider internal staff
  • the server authenticates duplicate files based on the hash value of the file, i.e., if the two files have the same hash value, the same data file is considered. Therefore, the server saves the Hash value of all its files. At the same time, before storing the data file, it calculates the Hash value of the data file to be stored, so that the server can determine whether the same data file already exists.
  • the server can also judge the duplicate file in other ways, and the present invention is not limited thereto.
  • the data key is sent to the client; before the client encrypts The data file decrypts the data key for the decryption key to obtain the storage key; at the same time, the storage key is encrypted by using the new user's key to form a new user's personal key, and the new user's personal key is sent. Save to the server.
  • Figure 2 shows a specific scenario of this embodiment.
  • FIG. 2 is a storage method provided by an embodiment of the present invention.
  • Hash is used to identify duplicate files; the user's personal key is obtained by encrypting the storage key with the user's encryption key, and the personal key is decrypted by the user's decryption key to obtain a storage key; here, the user's encryption key
  • the key may be the user's public key, and the user's decryption key may be the user's private key.
  • the data key is symmetrically encrypted using the data file itself to obtain the data key. As shown in Figure 2, the specific includes:
  • Step 201 Before uploading a new data file, the client calculates a Hash value of the data file, and uploads the Hash to the server.
  • Step 202 The server determines whether the stored data file has a data file with the same hash value; if yes, go to step 203; if not, go to step 206.
  • Step 203 The server sends the stored data key of the same data file as the data file to be uploaded to the client.
  • Step 204 The client uses the unencrypted data file itself to complete the decryption of the data key, and obtains the stored password.
  • the storage key is encrypted by using the user's encryption key, and the user's personal key is obtained, and the user is secreted.
  • the key is sent to the server.
  • Step 205 The server saves the user's personal key; the client does not need to actually upload the data file. At this point, the entire process is over.
  • Step 206 The client encrypts the uploaded data file by using the storage key, and uploads the encrypted data file to the server.
  • Step 207 The client encrypts the storage key by using the user's encryption key to obtain the user's personal key; and encrypts the storage key by using the non-encrypted data file to obtain the data key, and the personal key,
  • the data key, and the hash of the data file are uploaded to the server for storage. Among them, the purpose of recording the Hash value of the data file is for the next comparison. At this point, the entire process is over. Subsequently, when the user wishes to access the data file owned by him/her, he decrypts his personal key with his own decryption key to obtain a storage key, and then decrypts the encrypted data file with the storage key to obtain a plaintext file.
  • the client downloads the encrypted data file and the personal key from the server, decrypts the personal key to obtain the storage key, and decrypts the encrypted data file by using the storage key to obtain the plaintext data file.
  • the embodiment of the invention ensures that the server side cannot release the plaintext data file or the storage key.
  • the server decrypts the personal key to obtain a storage key, decrypts the encrypted data file by using the storage key, obtains the plaintext data file, deletes the storage key, and deletes the plaintext data file after the data file is used. .
  • the clear data file be used to encrypt the storage key to obtain a data key or a decrypted data key to obtain a storage key
  • the key generated by the plaintext data file can be used to encrypt the storage key to obtain a data key or decrypt data. The key to get the storage key.
  • the server determines that the stored data file has the same data file
  • the client is notified to the client, and the client calculates the secret for decrypting the data key according to the data file itself and a predefined algorithm.
  • a key the decryption key is sent to the server; the server decrypts the data key according to the decryption key uploaded by the client to obtain a storage key; and encrypts the storage key by using the new user's key to form the new The user's personal key.
  • Figure 3 shows the specific scene of this embodiment.
  • FIG. 3 shows a storage method provided by another embodiment of the present invention.
  • a symmetric key for generating a data key is calculated based on the data file itself and a predefined algorithm.
  • the client and the server may both set the same key generation algorithm. As shown in Figure 3, it specifically includes:
  • Step 301 Before uploading a new data file, the client calculates a Hash value of the data file to be uploaded, and uploads the Hash to the server.
  • Step 302 The server determines whether the data file having the same hash value in the stored data file, and proceeds to step 303; if not, the process proceeds to step 306.
  • Step 303 The client calculates a symmetric key for generating a data key according to the data file itself and a predefined algorithm.
  • the symmetric key is uploaded to the server for encrypting the generated data key or the decrypted data key.
  • Step 304 The server decrypts the data key according to the symmetric key uploaded by the client, and obtains the storage. Key; encrypting the storage key with the user's encryption key to obtain the user's personal key; Step 305: The server saves the user's personal key; the client does not need to actually upload the data file. At this point, the entire process is over.
  • Step 306 The client encrypts the uploaded data file by using the storage key, and uploads the encrypted data file to the server; and calculates a symmetric key used to decrypt the data key according to the data file itself and a predefined algorithm. Upload the symmetric key, the user's encryption key, and the HASH value of the data file to the server.
  • Step 307 The server encrypts the storage key by using the encryption key of the user to obtain the personal key of the user, and encrypts the storage key by using a symmetric key to obtain a data key. At this point, the entire process is over.
  • the storage service provider can obtain the storage key for a short time, but the security has been greatly improved compared to the prior art storage key stored on the server side for a long time.
  • the algorithm for calculating the symmetric key for generating the data key according to the data file itself may be: calculating the symmetric key used to generate the data key by extracting the specific location data of the data file.
  • the key, or the symmetric key used to generate the data key is calculated by calculating the special hash value of the data file.
  • the client does not have a dedicated client, such as the user uploading the document through a web browser.
  • a dedicated client such as the user uploading the document through a web browser.
  • the server initially needs to obtain the plaintext of the data file for a short time, and then follow the manner shown in the above embodiment: Calculate the hash value, judge the duplicate file, decrypt the data key with the data file itself to obtain the storage key, and then use the user secret.
  • the key encryption storage key gets the personal key.
  • the server must delete the plaintext and storage keys. This approach, while not reducing duplicate uploads, can still reduce duplicate storage.
  • the storage key may be a randomly generated key, which ensures that the key is always new and unknown to others.
  • only one storage key is used to encrypt the data file to be uploaded or to decrypt the encrypted data file to obtain data plaintext.
  • a storage encryption key may be used to encrypt a data file to be uploaded to obtain a data ciphertext, and accordingly, a storage decryption key is used to decrypt the encrypted data file to obtain a data plaintext, and The encryption key is different from the decryption key.
  • the storage decryption key is encrypted by using a different manner to obtain a data key and a personal key.
  • a key for encrypting the storage key to obtain the data key and/or a key for decrypting the data key to obtain the storage key is associated with the data file to be uploaded.
  • the key may be the data file to be uploaded itself, or determined based on the data file to be uploaded and a predefined algorithm. Also, in an embodiment, it may be determined according to the data file to be uploaded and other data. For example, the HASH value of the joint data file to be shared with the related user may be calculated, and the HASH value is used as a key. In general, if a plaintext data file is not utilized, it is difficult to obtain a key for decrypting the data key to obtain a storage key.
  • the key used to encrypt the storage key to obtain the data key is different from the key used to decrypt the data key to obtain the storage key.
  • the encryption and decryption algorithm may be a symmetric algorithm or an asymmetric algorithm.
  • the symmetric key in the embodiment shown in FIG. 3 can be utilized.
  • any of the keys in the above embodiments include a key for encrypting data and/or a key for decrypting data, a key for encrypting the generated personal key and/or a key for decrypting the personal key
  • the key used to encrypt the generated data key and/or the key used to decrypt the data key may be an asymmetric public/private key pair or a symmetric key pair.
  • each encryption or decryption step may be performed by a server or by a client.
  • a step describes the encryption and decryption performed by the server, it can be performed by a person skilled in the art instead of a client, and vice versa.
  • the step 206 may also be: The client uploads the unencrypted data to the server, and the server encrypts the data file by using the storage key.
  • step 303 and step 304 may be: "Step 303, the client calculates a symmetric key based on the data file to be uploaded and a predefined algorithm; Step 304, the client decrypts the data key by using a symmetric key to obtain a storage key.
  • the user's personal key is obtained by encrypting the storage key with the user's encryption key, and the personal key is sent to the server.” If, in an embodiment, the server side briefly touches the plaintext data file or the storage key, it is deleted immediately after use. Those skilled in the art will also appreciate that it is more secure for the client to perform all operations related to plaintext data files or storage keys.
  • user A has an encryption key ekA and a corresponding decryption key
  • user B has an encryption key ekB and a corresponding decryption key dkB.
  • Step 401 The client on the A side of the user calculates the HASH value hX of the data X, and sends the HASH value hX to the server;
  • Step 402 The server queries the HASH value of all the data stored by the server, and confirms that the HASH value of any data in the stored data is hX;
  • Step 403 The client encrypts the data X by using the storage encryption key ekS to obtain the encrypted data Y, and sends the data to the server;
  • Step 404 The client calculates the encryption key ekX based on the data X and the predefined algorithm, and uses the key ekX to encrypt the storage decryption key dkS corresponding to the ekS to obtain the data key kX, and sends the key kX to the server;
  • Step 405 The client uses the key ekA encryption key dkS to obtain the personal key kA of the user A, and sends the key kA to the server;
  • Step 406 The server saves the HASH value hX, the data Y, the key kX, and the key kA.
  • the step 403 to the step 405 may also be:
  • Step 403 The client uploads data X to the server;
  • Step 404 The server encrypts the data X by using the storage encryption key ekS to obtain the encrypted data Y, calculates the encryption key ekX based on the data X and the predefined algorithm, and encrypts the decryption key dkS corresponding to the key ekS by using the key ekX to obtain the data.
  • Key kX using the key ekA encryption key dkS to obtain the personal key kA of the user A;
  • Step 405 The server deletes the data X and the key dkS.
  • the method further includes:
  • Step 501 The client located at the user B side calculates the HASH value hX of the data X, and sends the HASH value hX to the server;
  • Step 502 The server queries the HASH value of all the data stored by the server, and confirms that the stored data includes the data file with the HASH value hX.
  • Step 503 The server sends the data key kX of the data X to the client.
  • Step 504 Based on the data X of the client side and a predefined algorithm, the client calculates the decryption key dkX, decrypts the key kX by using the key dkX to obtain the key dkS, and encrypts the dkS by using the personal key ekB of the user B to obtain User B's personal key kB, sending the key kB to the server;
  • Step 505 The server side saves the key kB.
  • the method further includes:
  • Step 601 The server sends the ciphertext data Y and the personal key of the user A to the client on the user A side;
  • Step 602 The client uses the decryption key dkA of the user A, and the decryption key kA obtains the key dkS;
  • Step 603 The client decrypts the ciphertext data Y using the key dkS to obtain the plaintext data X.
  • the keys ekA and dkA may be the same or different, the keys ekB and dkB may be the same or different, the keys ekS and dkS may be the same or different, and the keys ekX and dkX may be the same or different.
  • the keys eKS and dkS can be randomly generated keys.
  • the keys ekA, dkA, ekB and dkB may be stored on the client or server side.
  • ekA and ekB are public keys, one for each client and server, and dkA and dkB are private keys, which are stored on the client.
  • the storage key ekS may be calculated based on the data to be uploaded, in which case ekX, dkX and kX may not be needed.
  • A has an encryption key ekA and a corresponding decryption key dkA
  • user B has an encryption key ekB and a corresponding decryption key dkB.
  • Step 701 The client at the A end of the user calculates the HASH value hX of the data X, and uploads the HASH value hX to the server;
  • Step 702 The server retrieves the HASH value of all stored data, and determines that there is no data in the cloud that has the same HASH value hX as the data X.
  • Step 703 The client calculates the storage encryption key ekS and its corresponding decryption key dkS based on the data X and a predefined algorithm;
  • Step 704 The client encrypts the data X by using the key ekS to obtain the ciphertext Y, and uploads the ciphertext ⁇ to the server;
  • Step 705 The client obtains the personal key kA of the user A by using the key ekA encryption key dkS. And upload the key kA to the server.
  • the monthly server has HASH value hX, ciphertext Y and key kA.
  • Step 801 The client on the B side of the user calculates the HASH value hX of the data X, and uploads the HASH value hX to the server;
  • Step 802 The server retrieves the HASH value of all the stored data, and finds that the cloud already has the same HASH value hX as the data X.
  • Step 803 The client B side client calculates the storage decryption key dkS based on the data X and the same predefined algorithm as the user A end;
  • Step 804 The client on the user B side obtains the personal key kB of the user B by using the key ekB encryption key dkS of the user B, and uploads the key kB to the server.
  • the server stores the key kB.
  • the predefined algorithm for generating the stored encryption key and decryption key needs to ensure that the generated key is as random as possible.
  • the predefined algorithm may be: calculating a HASH value of the data X and a predefined string combination, or encrypting the data X by using a predefined string, and then calculating the HASH value of the encrypted ciphertext. .
  • the steps performed by the user A and the user B side described above may also be performed by the same client.
  • the related steps on the user A side are performed.
  • the relevant steps on the user B side are performed.
  • User A and User B can be the same customer.
  • the storage method on the user A side includes:
  • the key ekS is used to encrypt the data X to obtain the ciphertext Y, and the ciphertext is uploaded to the server; the key ekA encryption key dkS is used to obtain the user A's personal key kA, and the key kA is transmitted to the server.
  • the storage method on the user A side includes:
  • User A's personal key kA is obtained using User A's key ekA encryption key dkS, and key kA is uploaded to the server.
  • the server further stores kB in addition to the ciphertext Y already stored.
  • Y and kB are obtained by the following steps:
  • the ciphertext Y is obtained by encrypting the data X with the key ekS, and the ciphertext file is uploaded to the server; the personal key kB of the user B is obtained using the key ekB encryption key dkS, and the key kB is uploaded to the server.
  • a storage method when user A uploads data X to a server, a storage method includes:
  • the comparison result indicating whether there is a data file identical to the data X in the stored data
  • the storage encryption key ekS and its corresponding decryption key dkS are calculated based on the data X and a predefined algorithm; the data X is encrypted by the key ekS Obtaining ciphertext Y, and uploading the ciphertext file to the server; obtaining the user A's personal key kA using the user's key ekA encryption key dkS, and uploading the key kA to the server;
  • the storage decryption key dkS is calculated based on the data X and the predefined algorithm
  • the user's personal key kA is obtained by using the user A's key ekA encryption storage decryption key dkS, and the key kA is uploaded to the server.
  • the above method is executed on the client side, and in actual application, it can be a piece of software or hardware located on the client side.
  • a storage method when user A uploads data X to a server, a storage method includes:
  • the client calculates the storage encryption key ekS based on the data X and a predefined algorithm and Corresponding decryption key dkS; encrypting data X with key ekS to obtain ciphertext Y;
  • the personal key kA of the user A uploaded by the client is received, wherein the client obtains the personal key kA by using the key ekA encryption key dkS of the user A. .
  • the above method is performed on the server side, and in practical applications, it may be a piece of software or hardware located in the server.
  • dkS and ekS, or ekA and dkA are symmetric key pairs, or encryption keys and decryption keys, respectively, of an asymmetric key.
  • a storage system is further provided, where the system includes a server; wherein the server side includes: a first encryption module, configured to encrypt the data file by using the storage key; and encrypting the storage key by using two different encryption methods to form a personal key and a data key; wherein, the key of the user to which the data file belongs is The decryption key can decrypt the personal key to obtain a storage key; after decrypting the data key by using the data file before encryption as a decryption key, the storage key can be obtained;
  • a storage module configured to store the encrypted data file, the personal key, and the data key
  • the determining module is configured to determine whether the same data file exists in the stored data file before storing the data file of the user; if the data file that is the same as the file to be uploaded does not exist in the stored data file, notify the first encryption module ; otherwise notify the key authorization module;
  • a key authorization module configured to decrypt the data key by using the data file to obtain a storage key, and then use the user's key to encrypt the storage key to form the user Personal key.
  • An embodiment of the present invention further provides a server, where the server includes a first encryption module, a storage module, and a key authorization module.
  • the system further includes a client, wherein the client includes:
  • a decryption module configured to receive a data key sent by the server; decrypt the data key by using the data file before encryption as a decryption key to obtain a storage key;
  • a second encryption module configured to encrypt a storage key by using a key of the user to form a personal key of the user, and send the personal key of the user to a server;
  • the server-side key authorization module includes:
  • a sending submodule configured to send the data key to the client when the judgment module determines that the result is yes;
  • the receiving submodule is configured to receive the personal key of the user from the client, and send it to the saving module for saving.
  • the server further includes a deletion module, configured to delete the unencrypted data and the storage key in real time after the unencrypted data and the storage key are used.
  • the first encryption module is located at the client.
  • the first encryption module is further configured to generate a random storage key prior to encrypting with the storage key.
  • the client includes:
  • the key generation module is configured to: when the result of the determination by the determination module is YES, the key for decrypting the data key calculated according to the data file itself and the predefined algorithm; and sending the key to the server.
  • the server-side key authorization module includes:
  • a receiving submodule configured to receive a key for decrypting the data key calculated by the client according to the data file itself and a predefined algorithm
  • a decryption sub-module configured to decrypt the data key according to the decryption key uploaded by the client, to obtain a storage key; and encrypt the storage key by using the key of the new user to form a personal secret of the new user key.
  • the above client may further include:
  • the Hash value calculation module is configured to calculate a hash value of the data file of the new user, and upload the hash to the server, so that the server judgment module determines whether the stored data file has the same Hash value data file. , , , '; , Schematic.
  • FIG. 6 is a schematic structural diagram of a storage system according to an embodiment of the present invention.
  • the system consists of two parts: the client and the server.
  • the client is composed of a hash value calculation module, a decryption module, and a second encryption module;
  • the server end is composed of a first encryption module, a storage module, a judgment module, and a key authorization module, wherein the key authorization module is sent by the sending submodule and receiving Submodule composition.
  • the user side does not have a dedicated client, and all modules in the above embodiment may all be located at the server end.
  • FIG. 7 is a schematic structural diagram of a storage system according to an embodiment of the present invention. As shown in Figure 7, the system consists of two parts: the client and the server.
  • the client is composed of a hash value calculation module and a key generation module.
  • the server is composed of a first encryption module, a storage module, a determination module, and a key authorization module, wherein the key authorization module includes a receiving submodule and an encryption and decryption submodule. .
  • the user side does not have a dedicated client, and all modules in the above embodiment may all be located at the server end.
  • the embodiment of the invention further provides a storage device, which is the server described in the above embodiment.
  • the embodiment of the invention further provides a storage client, including:
  • the first module is configured to encrypt the data file X by using the storage encryption key ekS to obtain the ciphertext data Y;
  • a second module configured to encrypt the decryption key dkS corresponding to the ekS by using the encryption key ekA of the user A, obtain the personal key kA of the user A; and encrypt the dkS by using the encryption key ekX associated with X to obtain the data of the X Key kX;
  • a third module for transmitting Y, kA, and kX to server-side storage
  • the client further includes:
  • a fourth module configured to: when the user B having the encryption key ekB and the corresponding decryption key dkB desires to store the data X again, calculate a decryption key dkX corresponding to ekX based on X; and obtain dkS by decrypting kX by using dkX; ekB encrypts dkS to obtain user B's personal key kB;
  • the fifth module is used to send kB to the server storage.
  • the client further includes:
  • the sixth module is configured to use the dkA to decrypt the kA to obtain the dkS and the dkS to decrypt the Y to obtain the X when the user A accesses the X.
  • the client simultaneously processes the request for uploading data by the user A and the user B, when the client is located on a certain user side, such as the user A side,
  • the role of the four modules and the fifth module can be described by analogy as:
  • the fourth module is configured to: when the user A desires to store the data X stored on the server side again (when the server end has stored the kX corresponding to the data X'), calculate the decryption key corresponding to the ekX' based on the X' Key dkX,; use dkX, decrypt data X, kX, get dkS,; use ekA to encrypt dkS, get user A corresponding data X 'personal key kA,; fifth module, used to send kA, to server storage .
  • An embodiment of the present invention further provides a storage system, including:
  • a seventh module configured to encrypt the data file by using a storage key
  • the eighth module is configured to encrypt the storage key by using two different encryption methods to form a personal key and a data key; wherein, after decrypting the personal key by using a key of the user to which the data file belongs as a decryption key, a storage key; the data key is decrypted by using the data file before encryption as a decryption key to obtain a storage key;
  • a ninth module configured to store the encrypted data file, the personal key, and the data key
  • a tenth module configured to: when the data file to be uploaded by the user is the same as the stored data file, decrypt the data key of the stored same data file by using the data file before the encryption to be uploaded by the user to obtain a storage secret The key is then encrypted by the user's key to form the user's personal key.
  • the seventh module, the eighth module, and the ninth module are located at a client, and the ninth module is located at a server end.
  • the client further includes:
  • An eleventh module configured to: when the user accesses a data file of the user, receive a personal key of the user from the server, decrypt the personal key by using the key of the user, and obtain a storage key, and use The storage key decrypts the encrypted data file to obtain a data file.
  • the seventh module is located at a client, and the eighth module, the ninth module, and the tenth module are located at a server end.
  • the client further includes:
  • a twelfth module configured to use an encryption key formed by encrypting a storage key according to the data file itself and a predefined algorithm to form a data key; and sending the encryption key and the user's key to Service-Terminal;
  • the eighth module is configured to separately encrypt the storage keys by using the encryption key and the user's key to form a personal key and a data key.
  • the tenth module includes:
  • a first submodule configured to receive a key for decrypting the data key calculated by the client according to the data file itself and a predefined algorithm
  • the second submodule obtains a storage key by decrypting the data key according to the decryption key uploaded by the client; and encrypting the storage key by using the key of the user to form a personal key of the user.
  • the seventh module, the eighth module, the ninth module, and the tenth module are located at the server end.
  • the server further includes:
  • the twelfth module is configured to determine that the data file to be uploaded by the user is the same as the stored data file.
  • the present invention further provides a storage device, which may be the server described in the above embodiment, or the client described in the above embodiment.
  • the storage method, server, and client of the present invention can be set and used on a single machine (PC, single server), and can also be set and used on a distributed system, or other structured system.
  • the storage methods, systems, servers, and clients described in the foregoing embodiments are only illustrative examples, and the features in each embodiment may be recombined to form a new embodiment, and the new embodiments are included in the new embodiments. Within the scope of the invention.
  • the user after the user registers, the user is required to input a user password for the user to log in to the system, and at the same time, provide a selectable security question for the user to select, and the user can set an answer to the corresponding security question. .
  • the user key is encrypted by using the user's security question answer and the user password to obtain two user ciphertexts.
  • the user's password is decoded by the user's password to obtain the user's key. Once the user's password is lost, the user's key can be decrypted using the security document answer.
  • the user can reset the user's password and use the reset user's password.
  • the decrypted user key is encrypted.
  • FIG. 8 is a flowchart of a cloud storage security control method according to an embodiment of the present invention. As shown in FIG. 8, the method includes the following steps:
  • Step 901 Receive a user password input by the user, and a security question selected and input by the user.
  • Step 902 Encrypt the private key issued to each user by using two different encryption methods to form a first key and a second key, and store the first key and the second key.
  • the plaintext private key can be obtained, and the second key is decrypted by using the security question as the decryption key to obtain the plaintext private key.
  • Step 903 If the user cannot provide the user password, or the provided user password is incorrect, the private key cannot be decrypted according to the first key, and the user security problem is provided, and the user is required to answer.
  • Step 904 Accept the answer to the security question input by the user, and decrypt the second key by using the answer to the security question to obtain the plaintext private key.
  • Step 905 The user resets the user password, encrypts the plaintext private key obtained by decrypting the security question answer to form a new first key and saves it.
  • the plaintext private key can be obtained by decrypting the new first key with the new user password as the decryption key.
  • Step 906 Delete the first key formed by encrypting the old user password.
  • all the above steps are performed on the client, that is, when the data file needs to be decrypted by using the user private key, the first key or the second key is transmitted to the client, and the first secret is decrypted at the client.
  • the key or the second key at the same time, the encrypted data file is also transmitted to the client, and the decrypted private key is used to decrypt the data file, and then the user first displays the decrypted data file on the client. In this way, the server side cannot access the decrypted private key and the plaintext data file in the whole process.
  • a method for cloud storage security control according to another embodiment of the present invention includes: Step 1001: Receive a user password input by a user, and a security question answer selected and input by the user.
  • the user password for the user to log into the system can be initialized at the time of user registration, and at the same time, selectable security questions are provided for the user to select, and the user can set an answer to the corresponding security question.
  • Step 1002 Encrypt the private key issued to each user by using two different encryption methods. Forming a first key and a second key, and storing the first key and the second key.
  • the plaintext private key can be obtained, and the second key is decrypted by using the security question as the decryption key to obtain the plaintext private key.
  • Step 1003 When the private key is needed, a dialog box for obtaining the user password is popped up and the user password input by the user is obtained accordingly. If the user cannot provide the user password, the process proceeds to step 1006, otherwise the process proceeds to step 1004.
  • the dialog box for obtaining the user password does not obtain the user password input by the user within a preset time, the user is unable to provide the user password, and the following security question dialog box may be automatically popped up.
  • the user password dialog box may be provided with an instruction button for forgetting the user password. When the dialog box obtains a command obtained by the user by clicking the instruction button for forgetting the user password, the user is unable to provide the user password, and then the following may be popped up.
  • Security question dialog may be provided with an instruction button for forgetting the user password.
  • Step 1004 The first key is decrypted by using the user password. If the decryption is successful, the process proceeds to step 1005. If the decryption fails, the process proceeds to step 1006.
  • Step 1005 Obtain a plaintext private key. At this point, the entire process is over.
  • Step 1006 A corresponding security question dialog box is popped up to obtain an answer to the security question entered by the user according to the security question.
  • Step 1007 Decrypt the second key by using the answer to the security question. If the decryption is successful, proceed to step 1008. If the decryption fails, proceed to step 210. .
  • Step 1008 Obtain a plaintext private key, and reset the user password, encrypt the plaintext private key obtained by decrypting the security question answer to form a new first key and save.
  • the plaintext private key can be obtained by decrypting the new first key with the new user password as the decryption key.
  • Step 1009 Delete the first key formed by encrypting the old user password. At this point, the entire process is over.
  • Step 1010 If the security question entered by the user is incorrect, the plaintext private key cannot be decrypted. At this point, the entire process is over.
  • all the above steps are performed on the client, that is, when the data file needs to be decrypted by using the user private key, the first key or the second key is transmitted to the client, and the first secret is decrypted at the client.
  • the key or the second key at the same time, the encrypted data file is also transmitted to the client, and the decrypted private key is used to decrypt the data file, and then the user first displays the decrypted data file on the client. In this way, the server side cannot access the decrypted private key and the plaintext data file in the whole process.
  • the method before decrypting the second key by using the security question answer, the method further includes: determining whether the answer to the security question is correct.
  • the method for judging the answer to the security question may be: extracting the hash value of the answer to the security question when entering the answer to the security question for the first time, and then inputting the hash value of the answer to the security question and the previously stored answer when the security question answer needs to be input. The hash value is compared. In this way, a simple judgment method is substituted for the action of decrypting the second key when the answer to the security question is incorrect, which saves the overhead of performing the second decryption by the wrong security question answer.
  • the answer to the security question may be case insensitive.
  • it can be implemented in the following ways: When answering the whole question, whether the user inputs uppercase or lowercase, the form of the answer to the security question is unified into uppercase (or lowercase), and the answer to the security question in the converted form is matched with the answer to the first stored security question. Or, after receiving the answer to the security question entered by the user, convert the answer to the security question into a possible combination of all uppercase and lowercase. For example, the user enters the security question with the answer "ab" and converts the security question answer into all possible combinations of uppercase and lowercase.
  • Ab, Ab, AB, aB" matches all possible combinations of capitalization with the security issues that were stored for the first time.
  • a search technology applied to the cloud storage technology which can not only realize full-text retrieval of the document, but also ensure that the server cannot obtain the entire content of the data file.
  • the method includes:
  • the data file is encrypted, and the encrypted data file and the keyword combination of the data file are transmitted to the server, and the server stores the uploaded encrypted data file and the keyword combination corresponding to the data file.
  • the search term sent by the user is retrieved in the stored data file keyword combination, and the retrieved data file is sent to the client, so that the client can retrieve the file that is needed for the query.
  • the server when the server receives the retrieval request related to the keyword retrieval, the server does not need to perform full-text retrieval, that is, the data retrieval can be realized without the plaintext data file, and the server only uses the stored keywords.
  • the combination also fails to get the clear text of the data file.
  • Using the keyword search scheme it is also possible to provide an accurate portion of the search.

Abstract

公开了一种云存储安全控制的方法,用于解决现有技术中由于云存储中多采用共享存储,这使得服务商需要对私钥进行控制,导致私钥的安全性较低的问题。该方法包括:利用两种不同加密方式对发放给每个用户的私钥进行加密以形成第一密钥和第二密钥,并存储该第一密钥和第二密钥;在通过用户口令对第一密钥进行解密失败后,接受用户输入的安全问题答案,利用该安全问题答案对第二密钥进行解密以获得明文私钥;重置用户口令,对通过安全问题答案解密得到的明文私钥进行加密以形成新的第一密钥并保存。

Description

一种云存储安全控制的方法 技术领域 本发明涉及云存储领域, 特别涉及一种云存储安全控制的方法。
明背景
随着科技的发展, 云存储已经越来越成为一种趋势, 各种云存储技术层出不 穷, 为了保证云存储数据的安全,通常会利用各种加密方法来保证数据的安全性, 例如, 可以通过非对称密钥加密来保证数据的安全性, 非对称密钥加密需要使用 不同的密钥来分别完成加密和解密操作, 一个公开发布, 即公钥, 另一个由用户 自己秘密保存, 即私钥。 信息发送者用公钥去加密, 而信息接收者则用私钥去解 密。
在实现本发明实施例的过程中, 发明人发现, 由于云存储中多釆用共享存储, 这使得服务商需要对私钥进行控制, 导致私钥的安全性较低。
附图简要说明
图 1为本发明实施例提供的一种存储方法的流程图。
图 2为本发明实施例提供的一种存储方法的流程图。
图 3为本发明实施例提供的一种存储方法的流程图。
图 4为本发明实施例提供的一种存储方法的流程图。
图 5为本发明实施例提供的一种存储方法的流程图。
图 6为本发明实施例提供的一种存储系统的结构示意图。
图 7为本发明实施例提供的一种存储系统的结构示意图。
图 8为本发明实施例所述的一种云存储安全控制方法的流程图。
图 9为本发明又一实施例所述的一种云存储安全控制方法的流程图。 实施本发明的方式 以下结合附图及实施例, 对本发明进行进一步详细说明。 应当理解, 此处 所描述的具体实施例仅仅用于解释本发明, 并不用于限定本发明。
图 1为本发明实施例提供的一种存储方法的流程图。在该实施例中, 利用 存储密钥对数据文件进行加密; 同时利用两种不同加密方式对存储密钥进行加 密形成个人密钥 ( personal key ) 和数据密钥 ( data key ) ; 其中, 以数据文件 所属用户的密钥为解密密钥对个人密钥进行解密后可以获得存储密钥;以加密 前的数据文件为解密密钥对数据密钥进行解密后可以获得存储密钥;存储加密 后的数据文件、 个人密钥和数据密钥。 该方法同时包括:
步骤 101 : 在存储新用户的数据文件前, 判断已存储数据文件中是否存在 相同的数据文件; 如果判断结果为是, 则执行步骤 102 ; 否则, 执行步骤 103。
步骤 102: 不重复上传存储该数据文件; 利用该数据文件对数据密钥进行 解密获得存储密钥,再利用新用户的密钥对该存储密钥进行加密形成所述新用 户的个人密钥。 到此流程结束。
步骤 103 : 利用存储密钥对数据文件进行加密存储; 同时利用两种不同加 密方式对存储密钥进行加密形成个人密钥和数据密钥; 存储加密后的数据文 件、 个人密钥和数据密钥。 到此流程结束。
当一新用户上传数据文件前,服务器首先会判断云端是否已经存在与待上 传数据文件相同的数据文件。 如果已经存在, 则先利用用户提供的数据文件解 密数据密钥得出存储密钥, 再利用用户的密钥对存储密钥加密得到个人密钥。 后续访问时, 用户只需提供自己的密钥对个人密钥进行解密就能得到存储密 钥, 进一步利用该存储密钥获得该数据明文。 这样, 这样既实现了防止数据文 件在云端的重复存储, 也能保证云储存服务商自己(内部员工)不能获取数据 内容的明文。
本领域技术人员可以理解, 在某些情况下, 同一用户可能会先后上传同一 数据文件, 那么在该用户期待再次上传已上传数据文件时, 服务器端如果判断 该数据文件来源与同一用户, 将不执行任何操作。
在本发明一实施例中, 服务器根据文件的 Hash值来鉴别重复文件, 即如 果两份文件具有相同的 Hash值则认为是相同的数据文件。 因此, 服务器端会 保存其所有文件的 Hash值; 同时, 在存储数据文件前, 会计算待存储数据文 件的 Hash值, 以供服务器判断是否已经存在相同的数据文件。 当然, 本领域 技术人员也可以用其他方式来判断重复文件, 本发明并不予以限定。
在本发明一实施例中, 所述新用户侧存在一客户端, 则在服务器端在判断 已存储的数据文件存在相同的数据文件后, 将数据密钥发送给客户端; 客户端 以加密前的数据文件为解密密钥对数据密钥进行解密, 得到存储密钥; 同时利 用所述新用户的密钥对存储密钥进行加密形成新用户的个人密钥,将新用户的 个人密钥发送给服务器保存。 图 2给出了该实施例的一个具体场景。
图 2所示是本发明实施例提供的一种存储方法。在本实施例中,利用 Hash 来鉴别重复文件; 利用用户的加密密钥加密存储密钥得到用户个人密钥, 利用 用户的解密密钥解密个人密钥得到存储密钥; 这里, 用户的加密密钥可以是用 户的公钥, 用户的解密密钥可以是用户的私钥。 同时, 利用数据文件本身对存 储密钥进行对称加密得到数据密钥。 如图 2所示, 具体包括:
步骤 201 : 在上传一新的数据文件之前, 客户端计算该数据文件的 Hash 值, 将此 Hash上传给服务器端。
步骤 202 : 服务器端判断已存储的数据文件中是否具有相同 Hash值的数 据文件; 如果存在, 转向步骤 203 ; 如果不存在, 转向步骤 206。
步骤 203 : 服务器端将其存储的与待上传数据文件相同数据文件的数据密 钥发送给客户端。
步骤 204: 客户端利用未加密数据文件本身完成对数据密钥的解密, 并得 到存储密码; 同时利用用户的加密密钥对该存储密钥进行加密, 得到该用户的 个人密钥, 将个人密钥发送给服务器。
步骤 205 : 服务器保存该用户的个人密钥; 客户端无需实际上传该数据文 件。 到此, 整个流程结束。 步骤 206: 客户端利用存储密钥对上传的数据文件进行加密, 并将加密后 的数据文件上传到服务器端。
步骤 207 : 客户端使用用户的加密密钥对存储密钥进行加密, 得到该用户 的个人密钥;以及利用非加密的数据文件对存储密钥进行加密,得到数据密钥, 将个人密钥、 数据密钥、 以及该数据文件的 Hash上传给服务器保存。 其中, 记录该数据文件的 Hash值的目的是以供下次对比。 到此, 整个流程结束。 后 续, 当用户希望访问他 /她所拥有的数据文件时, 利用其自身的解密密钥解密 其个人密钥以获得存储密钥,然后利用存储密钥解密加密后的数据文件以获得 明文文件。
利用上述技术方案, 不仅保证了相同的数据文件无需重复存储, 甚至也保 证了相同的数据文件无需重复上传。同时只有真正拥有明文数据文件的用户才 可以获取到存储密钥, 对该数据文件进行读取。 存储服务提供商和其他用户均 无法接触到存储密钥, 使得数据安全相对于现有技术来说, 得到了进一步的保 障。
在本发明一实施例中,客户端从服务器端下载加密的数据文件以及个人密 钥, 解密个人密钥以获得存储密钥, 利用存储密钥解密加密的数据文件获取明 文数据文件。本发明实施例保证了服务器端无法解除到明文数据文件或存储密 钥。 在本发明另一实施例中, 服务器解密个人密钥以获得存储密钥, 利用存储 密钥解密加密的数据文件获取明文数据文件, 删除存储密钥, 并在数据文件使 用结束后删除明文数据文件。不仅可以利用明文数据文件加密存储密钥以获得 数据密钥或解密数据密钥以获得存储密钥,还可以利用根据明文数据文件生成 的密钥来加密存储密钥以获得数据密钥或解密数据密钥以获得存储密钥。
在本发明另一实施例中,当服务器端在判断已存储的数据文件存在相同的 数据文件后, 告知客户端, 客户端根据数据文件本身以及预定义算法计算出对 数据密钥进行解密的密钥, 将解密密钥发送给服务器; 服务器根据所述客户端 上传的解密密钥, 解密数据密钥得到存储密钥; 再利用所述新用户的密钥对存 储密钥进行加密形成所述新用户的个人密钥。图 3给出了这种实施例的具体场 景。
图 3所示是本发明另一实施例提供的一种存储方法。在该实施例中,根据 数据文件本身和预定义的算法计算出用于生成数据密钥的对称密钥。在本发明 一实施例中, 还可以是客户端与服务器均设置了同样的密钥生成算法。 如图 3 所示, 具体包括:
步骤 301 : 在上传新的数据文件之前,客户端计算待上传数据文件的 Hash 值, 将此 Hash上传给服务器端。
步骤 302 : 服务器端判断已存储的数据文件中是否具有相同 Hash值的数 据文件, 转向步骤 303 ; 如果不存在, 转向步骤 306。
步骤 303: 客户端根据数据文件本身和预定义的算法计算出用于生成数据 密钥的对称密钥; 将该对称密钥上传给服务器, 以用于加密生成数据密钥或解 密数据密钥。
步骤 304: 服务器根据客户端上传的对称密钥, 解密数据密钥, 得出存储 密钥; 再用该用户的加密密钥加密存储密钥, 得到该用户的个人密钥; 步骤 305: 服务器保存该用户的个人密钥; 客户端无需实际上传该数据文 件。 到此, 整个流程结束。
步骤 306: 客户端利用存储密钥对上传的数据文件进行加密, 将并加密后 的数据文件上传给服务器;根据数据文件本身和预定义的算法计算出用于解密 数据密钥的对称密钥, 将对称密钥, 用户的加密密钥以及数据文件的 HASH 值上传给服务器。
步骤 307: 服务器利用该用户的加密密钥对存储密钥进行加密, 得到该用 户的个人密钥; 以及利用对称密钥对存储密钥进行加密,得到数据密钥。到此, 整个流程结束。
利用该实施例, 同样保证了相同的数据文件无需重复存储, 也保证了相同 的数据文件无需重复上传。 在该实施例中, 存储服务提供商可以短暂获得存储 密钥, 但相比现有技术存储密钥长期存放在服务器端来说, 安全性已经得到了 极大的提高。
在本发明一实施例中,根据数据文件本身计算出用于生成数据密钥的对称 密钥的算法可以是:釆用抽取数据文件特定位置数据的方式计算出用于生成数 据密钥的对称密钥, 或釆用计算数据文件特殊 hash值的方式, 计算出用于生 成数据密钥的对称密钥。
在本发明另一实施例中, 用户端并没有专门的客户端, 如用户通过 web 浏览器方式上传文档, 在这种情况, 用户侧很难计算数据文件的 hash值并将 该值传递给服务器端。 为此, 服务器初始需要短暂获取数据文件的明文, 后续 再按照上述实施例所示的方式: 计算 Hash值, 判断重复文件, 用数据文件本 身解密数据密钥得到存储密钥, 然后再用用户密钥加密存储密钥得到个人密 钥。 一旦该步骤执行完毕, 服务器端需删除明文和存储密钥。 这种方式虽然不 能减少重复上传, 但依然可以减少重复存储。
在以上所有实施例中, 存储密钥可以是随机生成密钥, 这样可以保证密钥 永远是新的同时他人无法知晓。
在以上实施例中,仅利用一个存储密钥来加密待上传的数据文件或解密加 密后的数据文件以获得数据明文。 在本发明另一实施例中, 可以利用一存储加 密密钥来加密待上传的数据文件获得数据密文, 相应地, 利用一存储解密密钥 来解密加密后的数据文件以获得数据明文, 并且加密密钥和解密密钥不同。在 这种情况, 通过利用不同的方式加密存储解密密钥以获得数据密钥和个人密 钥。
用于加密存储密钥以获得数据密钥的密钥和 /或用于解密数据密钥以获得 存储密钥的密钥与待上传的数据文件相关。 在上述实施例中, 该密钥可以是待 上传数据文件本身, 或基于待上传数据文件以及预定义算法来决定。 同样,在 某一实施例中, 也可以根据待上传数据文件以及其他数据来确定。 比如, 可以 通过计算待上传数据文件与相关用户共享数据的联合的 HASH值,将该 HASH 值作为密钥。 通常来说, 如果不利用明文数据文件, 则很难得到用于解密数据 密钥以获得存储密钥的密钥。 在本发明一实施例中,用于加密存储密钥以获得数据密钥的密钥和用于解 密数据密钥以获得存储密钥的密钥不同。 该加解密算法可以是对称算法, 也可 以是非对称算法。 比如, 可以利用不对非对称密钥对取代图 3所示实施例中的 对称密钥。
上述实施例中的任何密钥, 包括用于加密数据的密钥和 /或用于解密数据 的密钥, 用于加密生成个人密钥的密钥和 /或用于解密个人密钥的密钥, 用于 加密生成数据密钥的密钥和 /或用于解密数据密钥的密钥, 可以是不对称的公 / 私钥对, 也可以是对称密钥对。
在以上实施例中,每个加密或解密步骤即可以由服务器来执行, 也可以有 客户端来执行。 比如, 如果某步骤描述由服务器来执行加解密, 实质性, 本领 域技术人员也可以将其替换为客户端来执行, 反之亦然。 举例说明, 步骤 206 也可以是: 客户端上传未加密数据到服务器端, 服务器端使用存储密钥对数据 文件进行加密。 又比如步骤 303和步骤 304可以是: "步骤 303, 客户端基于 待上传的数据文件和预定义算法计算对称密钥; 步骤 304, 客户端利用对称密 钥解密数据密钥以获得存储密钥,利用用户的加密密钥加密存储密钥得到用户 的个人密钥, 将个人密钥发送到服务器"。 如果在某实施例中, 服务器端短暂 接触到明文数据文件或存储密钥, 那么在使用后立即删除。 本领域技术人员同 时可以理解, 由客户端来执行所有与明文数据文件或存储密钥相关的操作,其 安全性将更高。
在本发明一实施例中, 用户 A具有加密密钥 ekA和相应的解密密钥, 用 户 B具有加密密钥 ekB和相应的解密密钥 dkB。 当用户 A上传未被存储过的 数据 X时, 该方法包括如下步骤:
步骤 401 : 用户 A侧的客户端计算数据 X的 HASH值 hX,将该 HASH值 hX发给服务器端;
步骤 402: 服务器查询其所存储的所有数据的 HASH值, 并确认其存储的 数据中没有任何一个数据的 HASH值为 hX;
步骤 403 :客户端使用存储加密密钥 ekS加密数据 X, 以获得加密数据 Y, 并将数据 Υ发送到服务器;
步骤 404: 客户端基于数据 X和预定义算法计算加密密钥 ekX, 利用密钥 ekX加密与 ekS对应的存储解密密钥 dkS得到数据密钥 kX,将密钥 kX发送到 服务器;
步骤 405 : 客户端使用密钥 ekA加密密钥 dkS以获得用户 A的个人密钥 kA, 将密钥 kA发送到服务器;
步骤 406: 服务器保存 HASH值 hX、 数据 Y、 密钥 kX以及密钥 kA; 在某一实施例中, 步骤 403至步骤 405也可以是:
步骤 403 : 客户端上传数据 X到服务器;
步骤 404: 服务器利用存储加密密钥 ekS加密数据 X以获得加密数据 Y, 基于数据 X和预定义算法计算加密密钥 ekX, 利用密钥 ekX加密与密钥 ekS 对应的解密密钥 dkS以获得数据密钥 kX, 使用密钥 ekA加密密钥 dkS获得用 户 A的个人密钥 kA; 步骤 405 : 服务器删除了数据 X和密钥 dkS。
当用户 B期望上传一个服务端已经存储过的数据 X时, 该方法进一步包 括:
步骤 501 :位于用户 B侧的客户端计算数据 X的 HASH值 hX,将该 HASH 值 hX发给服务器端;
步骤 502: 服务器查询其所存储的所有数据的 HASH值, 并确认其存储的 数据中包括有 HASH值为 hX的数据文件;
步骤 503 : 服务器将数据 X的数据密钥 kX发送到客户端;
步骤 504: 基于客户端侧的数据 X以及预定义的算法, 客户端计算解密密 钥 dkX, 利用密钥 dkX解密密钥 kX以获取密钥 dkS, 利用用户 B的个人密钥 ekB加密 dkS以获取用户 B的个人密钥 kB, 将密钥 kB发送到服务器端;
步骤 505 : 服务器端保存密钥 kB。
当后续用户 A访问数据 X时, 该方法进一步包括:
步骤 601 : 服务器发送密文数据 Y以及用户 A的个人密钥发送到用户 A 侧的客户端;
步骤 602:客户端使用用户 A的解密密钥 dkA,解密密钥 kA获得密钥 dkS ; 步骤 603 : 客户端使用密钥 dkS解密密文数据 Y, 获得明文数据 X。
在本发明一实施例中,密钥 ekA和 dkA可以相同或不同,密钥 ekB和 dkB 可以相同或不同, 密钥 ekS和 dkS 可以相同或不同, 密钥 ekX和 dkX可以相 同或不同。 密钥 eKS和 dkS可以是随机生成的密钥。
在本发明一实施例中, 密钥 ekA、 dkA, ekB和 dkB可存储在客户端或服 务器端。 在本发明一实施例中, ekA及 ekB为公钥, 在客户端和服务器端各存 了一份, 而 dkA和 dkB为私钥, 存储在客户端。
在上述描述中, 虽然提到了用户 A侧的客户端以及用户 B侧的客户端, 且在描述中两者具有不同的功能,但本领域技术人员可以理解,在具体实现中, 某一个客户端可以同时具有两者的功能。
在本发明一实施例中, 可以基于待上传数据来计算存储密钥 ekS, 在这种 情况下, 可以不需要 ekX、 dkX和 kX。
在本发明实施例中, 用 A具有加密密钥 ekA和对应的解密密钥 dkA, 用 户 B具有加密密钥 ekB和对应的解密密钥 dkB。 当用户上传在未被云端存储 的数据 X时, 该方法如图 4所示包括:
步骤 701 : 用户 A端的客户端计算数据 X的 HASH值 hX, 并上传 HASH 值 hX至服务器端;
步骤 702: 服务器端检索所有存储数据的 HASH值, 并判定云端不存在与 数据 X具有相同 HASH值 hX的数据;
步骤 703 :客户端基于数据 X和一预定义的算法计算存储加密密钥 ekS以 及其对应的解密密钥 dkS ;
步骤 704 : 客户端利用密钥 ekS加密数据 X获得密文 Y, 并上传密文 Υ 至服务器;
步骤 705 :客户端使用密钥 ekA加密密钥 dkS获得用户 A的个人密钥 kA, 并将密钥 kA上传至服务器。
月良务器存在 HASH值 hX、 密文 Y以及密钥 kA。 当用户 B再次上传已经 被用户 A上传过的数据 X时, 如图 5所示, 该方法进一步包括:
步骤 801 : 用户 B侧的客户端计算数据 X的 HASH值 hX, 并上传 HASH 值 hX至服务器端;
步骤 802: 服务器端检索所有存储数据的 HASH值, 发现云端已经存在与 数据 X具有相同 HASH值 hX的数据;
步骤 803 : 用户 B侧的客户端基于数据 X和与用户 A端相同的预定义的 算法计算存储解密密钥 dkS;
步骤 804: 用户 B侧的客户端利用用户 B的密钥 ekB加密密钥 dkS获得 用户 B的个人密钥 kB, 并将密钥 kB上传至服务器。
服务器存储密钥 kB。
由于数据 X并不是随机的, 所以用于生成存储加密密钥和解密密钥的预 定义算法就需要保证生成的密钥尽可能的具有随机性。 在本发明一实施例中, 该预定义算法可以是: 计算数据 X和一个预定义字符串组合的 HASH值, 或 者, 利用一个预定义字符串加密数据 X, 然后计算加密后密文的 HASH值。
当用户 A或者用户 B希望访问数据 X时, 利用 dkA或 dkB 分别解密 kA 或 kB以获得 dkS, 然后再利用 dkS解密密文 Y以获得数据 X。
本领域技术人员可以理解, 在实际应用中, 以上描述的用户 A和用户 B 侧执行的步骤也可能由同一个客户端执行。当用户使用该客户端侧上传服务器 的侧没有的数据, 执行以上用户 A侧的相关步骤。 当用户使用该客户端侧上 传服务器的侧已经存储的数据, 执行以上用户 B侧的相关步骤。 在这种情况 下, 用户 A和用户 B可以是同一个客户。
在本发明一实施例中, 当用户 A上传一个服务器端没有存储的数据 X, 用户 A侧的存储方法包括:
基于数据 X和一预定义的算法计算存储加密密钥 ekS以及其对应的解密 密钥 dkS;
利用密钥 ekS加密数据 X获得密文 Y, 并上传密文 Υ至服务器; 使用密钥 ekA加密密钥 dkS获得用户 A的个人密钥 kA, 并将密钥 kA上 传至服务器。
当用户 A上传一个服务器端已经存储的数据 X的密文 Y, 用户 A侧的存 储方法包括:
基于数据 X和与一预定义的算法计算存储解密密钥 dkS;
利用用户 A的密钥 ekA加密密钥 dkS获得用户 A的个人密钥 kA, 并将 密钥 kA上传至服务器。
在这种情况下, 假设服务端的密文 Y是由用户 B第一次上传的, 则此时 服务器端除了已经存储有密文 Y外, 还进一步存储有 kB。 其中 Y和 kB通过 以下的步骤获得:
基于数据 X和相同的预定义的算法计算存储加密密钥 ekS以及其对应的 解密密钥 dkS; 利用密钥 ekS加密数据 X获得密文 Y, 并上传密文 Υ至服务器; 使用密钥 ekB加密密钥 dkS获得用户 B的个人密钥 kB, 并将密钥 kB上 传至服务器。
在本发明一实施例中, 当用户 A上传数据 X至一服务器时, 一种存储方 法包括:
计算数据 X的 HASH值 hX;
将 hX发送给所述服务器;
接收来自服务器的比较结果,该比较结果指示已存储数据中是否存在与数 据 X相同的数据文件;
当比较结果指示已存储数据中不存在与数据 X相同的数据文件, 则基于 数据 X和一预定义的算法计算存储加密密钥 ekS以及其对应的解密密钥 dkS; 利用密钥 ekS加密数据 X获得密文 Y, 并上传密文 Υ至服务器; 使用用户 Α的密钥 ekA 加密密钥 dkS获得用户 A的个人密钥 kA, 并将 密钥 kA上传至服务器;
当比较结果指示已存储数据中存在与数据 X相同的数据文件, 则基于数 据 X与所述预定义的算法计算存储解密密钥 dkS;
利用用户 A的密钥 ekA加密存储解密密钥 dkS获得用户 A的个人密钥 kA, 并将密钥 kA上传至服务器。
本领域技术人员可以理解, 以上方法执行在客户端, 在实际应用中, 其可 以是一段位于客户端的软件或者硬件。
在本发明一实施例中, 当用户 A上传数据 X至一服务器时, 一种存储方 法包括:
获取数据 X的 HASH值 hX;
将所述 hX与已存储数据的 HASH值进行比较;
将比较结果发送至客户端;
当比较结果指示已存储数据中不存在与 hX相同的 HASH值,则接收所述 客户端上传的密文 Y; 其中, 客户端基于数据 X和一预定义的算法计算存储 加密密钥 ekS以及其对应的解密密钥 dkS;利用密钥 ekS加密数据 X获得密文 Y;
接收客户端上传的用户 A的个人密钥 kA, 其中, 客户端使用用户 A的密 钥 ekA加密密钥 dkS获得个人密钥 kA;
当比较结果指示已存储数据中存在与 hX相同的 HASH值,则接收客户端 上传的用户 A的个人密钥 kA, 其中, 客户端使用用户 A的密钥 ekA加密密钥 dkS获得个人密钥 kA。
本领域技术人员可以理解, 以上方法执行在服务端, 在实际应用中, 其可 以是一段位于服务器的软件或者硬件。
在本发明一实施例中, dkS和 ekS, 或 ekA和 dkA为对称密钥对, 或分别 为非对称密钥的加密密钥和解密密钥。
在本发明一实施例中,还提供了一种存储系统,该系统包括服务器;其中, 服务器端包括: 第一加密模块, 用于利用存储密钥对数据文件进行加密; 以及利用两种不 同加密方式对存储密钥进行加密形成个人密钥和数据密钥; 其中, 以数据文件 所属用户的密钥为解密密钥对个人密钥进行解密后可以获得存储密钥;以加密 前的数据文件为解密密钥对数据密钥进行解密后可以获得存储密钥;
存储模块, 用于存储加密后的数据文件、 个人密钥和数据密钥;
判断模块, 用于在存储用户的数据文件前, 判断已存储数据文件中是否存 在相同的数据文件;如果已存储的数据文件中不存在与待上传文档相同的数据 文件, 则通知第一加密模块; 否则通知密钥授权模块;
密钥授权模块, 用于在判断模块判断的结果为是时, 利用该数据文件对数 据密钥进行解密获得存储密钥,再利用用户的密钥对该存储密钥进行加密形成 所述用户的个人密钥。
本发明一实施例还提供了一个服务器, 该服务器包括第一加密模块、存储 模块、 密钥授权模块。 在本发明一实施例中, 该系统还进一步包括客户端,其 中该客户端包括:
解密模块, 用于接收来自服务器发送的数据密钥; 以加密前的数据文件为 解密密钥对数据密钥进行解密, 得到存储密钥;
第二加密模块,用于利用所述用户的密钥对存储密钥进行加密形成所述用 户的个人密钥, 将所述用户的个人密钥发送给服务器;
在这种情况下, 服务器端的密钥授权模块包括:
发送子模块, 用于在判断模块判断的结果为是时, 将数据密钥发送给客户 端;
接收子模块, 用于接收到来自客户端的所述用户的个人密钥, 将其发送给 保存模块保存。
在本发明一实施例中, 服务器端进一步包括删除模块, 用于在使用完未加 密数据和存储密钥后, 实时删除该未加密数据和存储密钥。
在本发明一实施例中, 第一加密模块位于客户端。
在本发明一实施例中,第一加密模块还进一步用于在利用存储密钥加密之 前, 生成随机的存储密钥。
在本发明另一实施例中, 该客户端包括:
密钥生成模块, 用于在判断模块判断的结果为是时,根据数据文件本身以 及预定义算法计算出的对数据密钥进行解密的密钥; 将该密钥发送给服务器。
此时, 服务器端的密钥授权模块包括:
接收子模块,用于接收来自客户端根据数据文件本身以及预定义算法计算 出的对数据密钥进行解密的密钥;
加解密子模块, 用于根据所述客户端上传的解密密钥, 解密数据密钥得到 存储密钥;再利用所述新用户的密钥对存储密钥进行加密形成所述新用户的个 人密钥。
在本发明另一实施例中, 以上客户端还可以进一步包括:
Hash值计算模块, 用于计算新用户的数据文件的 Hash值, 将此 Hash上 传给服务器, 以供服务器判断模块判断已存储数据文件中是否存在具有相同 Hash值的数据文件。 、 、 , ' ; 、 、 示意图。
图 6为本发明实施例提供的一种存储系统的结构示意图。 如图 6所示,该 系统包括客户端和服务器端两部分。 其中, 客户端由 Hash值计算模块、 解密 模块、 第二加密模块构成; 服务器端由第一加密模块、 存储模块、 判断模块、 密钥授权模块构成, 其中密钥授权模块由发送子模块和接收子模块构成。
具体各模块及子模块的作用和功能可以参考以上实施例描述。
本发明另一实施例中, 用户侧并没有专用的客户端, 则以上实施例中所有 模块可均位于服务器端。
图 7为本发明实施例提供的一种存储系统的结构示意图。 如图 7所示,该 系统包括客户端和服务器端两部分。
其中, 客户端由 Hash值计算模块、 密钥生成模块构成; 服务器端由第一 加密模块、 存储模块、 判断模块、 密钥授权模块构成, 其中密钥授权模块包括 接收子模块、 加解密子模块。
具体各模块及子模块的作用和功能可以参考以上实施例描述。
本发明另一实施例中, 用户侧并没有专用的客户端, 则以上实施例中所有 模块可均位于服务器端。
本发明实施例还提供了一种存储装置,该装置即为上述实施例描述的服务 器。
本发明实施例还提供了一种存储客户端, 包括:
第一模块, 用于利用存储加密密钥 ekS对数据文件 X进行加密, 获得密 文数据 Y;
第二模块, 用于利用用户 A的加密密钥 ekA加密与 ekS对应的解密密钥 dkS,获得用户 A的个人密钥 kA;以及利用与 X相关的加密密钥 ekX加密 dkS, 获得 X的数据密钥 kX;
第三模块, 用于将 Y、 kA以及 kX发送到服务器端存储;
该客户端进一步包括:
第四模块, 用于当具有加密密钥 ekB以及相应的解密密钥 dkB的用户 B 期望再一次存储数据 X时,基于 X计算与 ekX对应的解密密钥 dkX;利用 dkX 解密 kX获得 dkS; 利用 ekB加密 dkS获取用户 B的个人密钥 kB;
第五模块, 用于将 kB发送到服务器存储。
在本发明一实施例中, 该客户端进一步包括:
第六模块, 用于当用户 A访问 X时, 利用 dkA解密 kA获取 dkS, 利用 dkS解密 Y获得 X。
本领域技术人员可以理解, 虽然在上述实施例的描述中, 该客户端同时处 理了用户 A和用户 B上传数据的请求, 实际上当该客户端位于某一个用户侧, 如用户 A侧时, 第四模块和第五模块的作用又可被类比描述为:
第四模块,用于当用户 A期望再一次存储服务器端已存储的数据 X,时 (此 时服务器端已存储有数据 X '对应的 kX'), 基于 X'计算与 ekX'对应的解密密 钥 dkX,; 利用 dkX,解密数据 X,的 kX, 获得 dkS,; 利用 ekA加密 dkS,获取用 户 A对应数据 X '的个人密钥 kA, ; 第五模块, 用于将 kA, 发送到服务器存 储。
本发明一实施例还提供了一种存储系统, 包括:
第七模块, 用于利用存储密钥对数据文件进行加密;
第八模块,用于利用两种不同加密方式对存储密钥进行加密形成个人密钥 和数据密钥; 其中, 以数据文件所属用户的密钥为解密密钥对个人密钥进行解 密后可以获得存储密钥;以加密前的数据文件为解密密钥对数据密钥进行解密 后可以获得存储密钥;
第九模块, 用于存储加密后的数据文件、 个人密钥和数据密钥;
第十模块, 用于当用户待上传的数据文件与已存储的数据文件相同时,利 用所述用户待上传的加密前的数据文件对已存储的相同数据文件的数据密钥 进行解密获得存储密钥,再利用所述用户的密钥对该存储密钥进行加密形成所 述用户的个人密钥。
在本发明一实施例中, 所述第七模块、 第八模块、 第九模块位于客户端, 所述第九模块位于服务器端。 其中, 所述客户端进一步包括:
第十一模块, 用于当所述用户访问自己的数据文件时,接收来自服务器的 所述用户的个人密钥, 以所述用户的密钥对其个人密钥进行解密获得存储密 钥, 利用存储密钥对加密后的数据文件进行解密获得数据文件。
在本发明一实施例中, 所述第七模块位于客户端, 所述第八模块、 第九模 块、 第十模块位于服务器端。 其中, 所述客户端进一步包括:
第十二模块,用于利用根据数据文件本身以及预定义算法计算出的对存储 密钥进行加密形成数据密钥的加密密钥; 将所述加密密钥、 以及所述用户的密 钥发送给服务器端;
此时,所述第八模块用于利用所述加密密钥以及所述用户的密钥对存储密 钥分别进行加密形成个人密钥和数据密钥。
其中, 所述第十模块包括:
第一子模块,用于接收来自客户端根据数据文件本身以及预定义算法计算 出的对数据密钥进行解密的密钥;
第二子模块, 根据所述客户端上传的解密密钥, 解密数据密钥得到存储密 钥; 再利用所述用户的密钥对存储密钥进行加密形成所述用户的个人密钥。
在本发明另一实施例中, 所述第七模块、 第八模块、 第九模块、 第十模块 位于服务器端。
在本发明一实施例中, 该服务器进一步包括:
第十二模块, 用于判断用户待上传的数据文件与已存储的数据文件相同。 本发明还进一步提供了一种存储装置, 即可以是上述实施例中描述服务 器, 也可以是上述实施例中描述的客户端。
本领域技术人员可以理解, 本发明的存储方法、 服务器、 客户端均可以设 置并使用在单机(PC, 单服务器) 上, 也可以设置并使用在分布式系统, 或 其它结构的系统上。 上述实施例中所述的存储方法、 系统、 服务器、 客户端均只为示意例子, 每个实施例中的特征均可重新组合以形成新的实施例,所形成的新的实施例均 包含在本发明的范围内。
在本发明实施例提供的云存储安全控制方法中, 当用户注册后,要求用户 输入用户口令用于用户登录系统, 同时, 提供可选择的安全问题供用户选择, 用户可以设置相应安全问题的答案。利用用户的安全问题答案以及用户口令对 用户密钥分别进行加密, 得到两份用户密文。 大部分情况下, 利用用户输入的 用户口令解码密文获得用户密钥, 一旦用户口令丟失; 可利用安全文档答案解 密出用户密钥; 同时用户可以重置用户口令, 利用重置后的用户口令对解密出 的用户密钥进行加密。
图 8所示为本发明实施例所述的一种云存储安全控制方法的流程图。如图 8所示, 该方法包括如下步骤:
步骤 901 : 接收用户输入的用户口令, 以及用户选择并输入的安全问题答 案。
步骤 902: 利用两种不同加密方式对发放给每个用户的私钥进行加密以形 成第一密钥和第二密钥, 并存储该第一密钥和第二密钥。
其中, 以用户口令为解密密钥对第一密钥进行解密后可以获得明文私钥, 以安全问题答案为解密密钥对第二密钥进行解密后可以获得明文私钥。
步骤 903 : 如果用户无法提供用户口令, 或提供的用户口令错误, 无法根 据第一密钥解密出私钥, 提供用户安全问题, 要求用户回答。
步骤 904: 接受用户输入的安全问题答案, 利用该安全问题答案对第二密 钥进行解密以获得明文私钥。
步骤 905 : 用户重置用户口令, 对通过安全问题答案解密得到的明文私钥 进行加密以形成新的第一密钥并保存。 其中, 以新的用户口令为解密密钥对新 的第一密钥进行解密后可以得到明文私钥。
步骤 906: 删除以旧的用户口令加密形成的第一密钥。
在本发明一实施例中, 以上所有步骤在客户端执行, 即当需要利用用户私 钥解密数据文件时, 将第一密钥或第二密钥传输到客户端, 在客户端解密第一 密钥或第二密钥; 同时将加密的数据文件也传输到客户端, 在客户端利用解密 出的私钥解密数据文件, 而后在客户端先用户展示解密的数据文件。 这样,在 全过程中, 服务器端都无法接触到解密后的私钥以及明文数据文件。
为了使得本领域技术人员更好的理解本发明实施例提供的云存储安全控 制的方法, 对本发明又一实施例提供的云存储安全控制的方法进行详细的说 明。 如图 9所示, 本发明一实施例提供的一种云存储安全控制的方法包括: 步骤 1001 : 接收用户输入的用户口令, 以及用户选择并输入的安全问题 答案。
在本发明一实施例中,可以在用户注册时初始化用于用户登录系统的用户 口令, 同时, 提供可选择的安全问题供用户选择, 用户可以设置相应安全问题 的答案。
步骤 1002 : 利用两种不同加密方式对发放给每个用户的私钥进行加密以 形成第一密钥和第二密钥, 并存储该第一密钥和第二密钥。
其中, 以用户口令为解密密钥对第一密钥进行解密后可以获得明文私钥, 以安全问题答案为解密密钥对第二密钥进行解密后可以获得明文私钥。
步骤 1003 : 在需要使用私钥时, 弹出获取用户口令的对话框并相应获取 用户输入的用户口令, 若用户无法提供用户口令则进入步骤 1006否则进入步 骤 1004。
在本发明一实施例中,获取用户口令的对话框在预设的时间内未获取到用 户输入的用户口令后, 认为用户无法提供用户口令, 进而可以自动弹出下述的 安全问题对话框。 也可以是, 用户口令对话框上设置有忘记用户口令的指示按 钮, 当对话框获取到用户通过点击忘记用户口令的指示按钮得到的命令时,认 为用户无法提供用户口令, 进而可以弹出下述的安全问题对话框。
步骤 1004: 利用用户口令对第一密钥解密, 若解密成功, 进入步骤 1005, 若解密失败, 进入步骤 1006。
步骤 1005 : 获取明文私钥。 到此, 整个流程结束。
步骤 1006 : 弹出相应的安全问题对话框, 获取用户根据安全问题输入的 安全问题答案。
步骤 1007 : 利用安全问题答案对第二密钥进行解密, 若既解密成功, 进 入步骤 1008, 若解密失败, 进入步骤 210。 .
步骤 1008 : 获取明文私钥, 并重置用户口令, 对通过安全问题答案解密 得到的明文私钥进行加密以形成新的第一密钥并保存。
其中,以新的用户口令为解密密钥对新的第一密钥进行解密后可以得到明 文私钥。
步骤 1009 : 删除以旧的用户口令加密形成的第一密钥。 到此, 整个流程 结束
步骤 1010: 如果用户输入的安全问题答案错误,则无法解密出明文私钥。 到此, 整个流程结束
在本发明一实施例中, 以上所有步骤在客户端执行, 即当需要利用用户私 钥解密数据文件时, 将第一密钥或第二密钥传输到客户端, 在客户端解密第一 密钥或第二密钥; 同时将加密的数据文件也传输到客户端, 在客户端利用解密 出的私钥解密数据文件, 而后在客户端先用户展示解密的数据文件。 这样,在 全过程中, 服务器端都无法接触到解密后的私钥以及明文数据文件。
在本发明一实施例中, 在利用安全问题答案解密第二密钥前, 还包括:判 断安全问题答案是否正确。 具体的, 判断安全问题答案的办法可以是, 在首次 输入安全问题答案时候提取安全问题答案的 hash值, 在后续需要输入安全问 题答案时, 将后续输入安全问题答案的 hash值与之前存储的答案 hash值进行 对比。 这样, 利用简单的判断方式替代在安全问题答案错误时仍需要进行第二 密钥解密的动作,节约了通过错误的安全问题答案执行对第二进行解密带来的 系统开销。
在本发明一实施例中, 对于安全问题答案, 可以大小写不敏感。 为了实现 对安全问题答案大小写不敏感, 可以通过以下方式实现: 在接收用户输入的安 全问题答案时, 无论用户输入的是大写, 还是小写, 都将安全问题答案的形式 统一转为大写(或小写), 将转化形式的安全问题答案与之前第一次存储的安 全问题答案进行匹配; 或者, 接收用户输入的安全问题答案后, 将安全问题答 案转化成所有大小写可能的组合, 例如, 用户输入安全问题答案为 "ab" ,将 安全问题答案转化成所有大小写可能的组合 "ab、 Ab、 AB、 aB" , 将所有大 小写可能的组合与之前第一次存储的安全问题进行匹配。
在本发明另一实施例中, 还提供了一种应用于云存储技术的检索技术,既 可以实现文档的全文检索, 又可以保证服务器端无法获取数据文件的全部内 容。 该方法包括:
在上传数据文件前, 提取数据文件的关键词, 形成关键词组合;
对数据文件进行加密,并将加密后的数据文件以及该数据文件的关键词组合传 给服务器,服务器对上传的加密后的数据文件以及该数据文件对应的关键词组 合进行存储。
当用户需要检索时, 在存储的数据文件关键词组合中检索用户发送的检索词, 并将检索出来的数据文件发送给客户端,使得客户端能够检索查询到其需要的 文件。
利用上述对数据文件的检索方式,服务器在接收到与关键词检索相关的调 取请求时, 服务器无需进行全文检索, 即不需要明文数据文件即可实现数据检 索, 而服务器仅仅根据存储的关键词组合也无法获取数据文件的明文内容。利 用关键词检索方案, 还可以极大的提供检索的准确部。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发 明的精神和原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发 明的保护范围之内。

Claims

权利要求书
1、 一种云存储安全控制的方法, 其特征在于, 包括:
利用两种不同加密方式对发放给每个用户的私钥进行加密以形成第一密钥和 第二密钥, 并存储该第一密钥和第二密钥, 其中, 以用户口令为解密密钥对第一 密钥进行解密后可以获得明文私钥, 以安全问题答案为解密密钥对第二密钥进行 解密后可以获得明文私钥;
在通过用户口令对第一密钥进行解密失败后,接受用户输入的安全问题答案, 利用该安全问题答案对第二密钥进行解密以获得明文私钥;
重置用户口令, 对通过安全问题答案解密得到的明文私钥进行加密以形成新 的第一密钥并保存, 其中, 以新的用户口令为解密密钥对新的第一密钥进行解密 后可以得到明文私钥。
2、 根据权利要求 1 所述的方法, 其特征在于, 进一步包括:
删除以旧的用户口令加密形成的第一密钥。
3、 根据权利要求 1 所述的方法, 其特征在于, 所述方法在用户客户端执行。
4、 根据权利要求 1 所述的方法, 其特征在于, 在所述利用两种不同加密方 式对发放给每个用户的私钥进行加密以形成第一密钥和第二密钥, 并存储该第一 密钥和第二密钥之前, 还包括: 接收用户输入的用户口令, 以及用户选择并输入 的安全问题答案。
5、 根据权利要求 1至 4 任一项所述的方法, 其特征在于, 所述通过用户口 令对第一密钥进行解密失败, 包括: 用户无法提供用户口令, 或提供的用户口令 错误, 无法根据第一密钥解密出私钥。
6、 根据权利要求 1 所述的方法, 其特征在于, 在所述利用该安全问题答案 对第二密钥进行解密以获得明文私钥之前,还包括: 判断安全问题答案是否正确; 所述利用该安全问题答案对第二密钥进行解密, 包括: 若所述安全问题答案 正确, 利用该安全问题答案对第二密钥进行解密。
7、 根据权利要求 6 所述的方法, 其特征在于, 所述判断安全问题答案是否 正确, 包括: 将用户输入的安全问题答案的 hash值与预先存储的 hash值进行对 比, 所述预先存储的 hash值为用户首次输入安全问题答案时提取并保存的 hash 值;
若用户输入的安全问题答案的 hash值与预先存储的 hash值形同, 安全问题 答案正确。
8、 根据权利要求 6 所述的方法, 其特征在于, 所述判断安全问题答案是否 正确, 包括: 在每次接收用户输入的安全问题答案后, 都将安全问题答案的形式 统一转为大写或小写并保存用户第一次输入的转化形式后的安全问题答案;
将转化形式的安全问题答案与第一次存储的安全问题答案进行匹配, 若匹配 成功所述安全问题答案正确。
9、 根据权利要求 6 所述的方法, 其特征在于, 所述判断安全问题答案是否 正确, 包括:
接收用户输入的安全问题答案后, 将安全问题答案转化成所有大小写可能的 组合;
将所有大小写可能的组合与用户第一次输入并存储的安全问题答案进行匹 配, 若匹配成功所述安全问题答案正确。
PCT/CN2014/077686 2011-10-11 2014-05-16 一种云存储安全控制的方法 WO2014183671A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP14797382.0A EP2999159A4 (en) 2013-05-17 2014-05-16 SAFETY CONTROL PROCEDURE FOR CLOUD STORAGE
US14/943,909 US20160112413A1 (en) 2011-10-11 2015-11-17 Method for controlling security of cloud storage

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310186144.6 2013-05-17
CN201310186144.6A CN103236934B (zh) 2013-05-17 2013-05-17 一种云存储安全控制的方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/858,489 Continuation-In-Part US20140181116A1 (en) 2011-10-11 2013-04-08 Method and device of cloud storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/943,909 Continuation US20160112413A1 (en) 2011-10-11 2015-11-17 Method for controlling security of cloud storage

Publications (1)

Publication Number Publication Date
WO2014183671A1 true WO2014183671A1 (zh) 2014-11-20

Family

ID=48884952

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/077686 WO2014183671A1 (zh) 2011-10-11 2014-05-16 一种云存储安全控制的方法

Country Status (3)

Country Link
EP (1) EP2999159A4 (zh)
CN (1) CN103236934B (zh)
WO (1) WO2014183671A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112052469A (zh) * 2020-09-10 2020-12-08 鹏元征信有限公司 一种加密方法、解密方法、存储介质及终端设备
CN112488685A (zh) * 2020-12-23 2021-03-12 杨宁波 一种用于区块链的用户私钥保护方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677470B1 (en) * 2008-01-22 2014-03-18 Salesforce.Com, Inc. System, method, and computer program product for security verification of communications to tenants of an on-demand database service
CN103236934B (zh) * 2013-05-17 2016-09-21 天津书生云科技有限公司 一种云存储安全控制的方法
EP3234852B1 (en) * 2014-12-19 2020-01-15 Private Machines Inc. Systems and methods for using extended hardware security modules
CN105224262A (zh) * 2015-10-30 2016-01-06 深圳云聚汇数码有限公司 数据处理方法
CN111625844A (zh) * 2020-04-17 2020-09-04 国家电网有限公司客户服务中心 调查数据安全加密方法、装置、电子设备及存储介质
CN113872970B (zh) * 2021-09-28 2022-12-20 北京天融信网络安全技术有限公司 数据访问方法、装置及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145911A (zh) * 2007-10-30 2008-03-19 江汉大学 具有私密保护及口令找回功能的身份认证方法
CN101465727A (zh) * 2008-12-17 2009-06-24 成都市华为赛门铁克科技有限公司 一种保证通信安全的方法、网络设备、装置和通信系统
US20090288143A1 (en) * 2008-05-16 2009-11-19 Sun Microsystems, Inc. Multi-factor password-authenticated key exchange
CN101924739A (zh) * 2009-06-10 2010-12-22 北京环球聚浪网络科技有限公司 一种软件证书及私钥的加密存储并找回的方法
CN102629940A (zh) * 2012-03-19 2012-08-08 天津书生投资有限公司 一种存储方法、系统和装置
CN103107989A (zh) * 2012-11-20 2013-05-15 高剑青 基于多哈希值的密码系统
CN103236934A (zh) * 2013-05-17 2013-08-07 天津书生投资有限公司 一种云存储安全控制的方法
CN103391187A (zh) * 2012-05-09 2013-11-13 天津书生投资有限公司 一种云存储安全控制的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360322B1 (en) * 1998-09-28 2002-03-19 Symantec Corporation Automatic recovery of forgotten passwords
US7010689B1 (en) * 2000-08-21 2006-03-07 International Business Machines Corporation Secure data storage and retrieval in a client-server environment
US9582678B2 (en) * 2011-04-19 2017-02-28 Invenia As Method for secure storing of a data file via a computer communication network

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145911A (zh) * 2007-10-30 2008-03-19 江汉大学 具有私密保护及口令找回功能的身份认证方法
US20090288143A1 (en) * 2008-05-16 2009-11-19 Sun Microsystems, Inc. Multi-factor password-authenticated key exchange
CN101465727A (zh) * 2008-12-17 2009-06-24 成都市华为赛门铁克科技有限公司 一种保证通信安全的方法、网络设备、装置和通信系统
CN101924739A (zh) * 2009-06-10 2010-12-22 北京环球聚浪网络科技有限公司 一种软件证书及私钥的加密存储并找回的方法
CN102629940A (zh) * 2012-03-19 2012-08-08 天津书生投资有限公司 一种存储方法、系统和装置
CN103391187A (zh) * 2012-05-09 2013-11-13 天津书生投资有限公司 一种云存储安全控制的方法
CN103107989A (zh) * 2012-11-20 2013-05-15 高剑青 基于多哈希值的密码系统
CN103236934A (zh) * 2013-05-17 2013-08-07 天津书生投资有限公司 一种云存储安全控制的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112052469A (zh) * 2020-09-10 2020-12-08 鹏元征信有限公司 一种加密方法、解密方法、存储介质及终端设备
CN112488685A (zh) * 2020-12-23 2021-03-12 杨宁波 一种用于区块链的用户私钥保护方法
CN112488685B (zh) * 2020-12-23 2023-12-12 杨宁波 一种用于区块链的用户私钥保护方法

Also Published As

Publication number Publication date
EP2999159A1 (en) 2016-03-23
EP2999159A4 (en) 2016-08-17
CN103236934B (zh) 2016-09-21
CN103236934A (zh) 2013-08-07

Similar Documents

Publication Publication Date Title
CN106104562B (zh) 机密数据安全储存和恢复系统及方法
US9330245B2 (en) Cloud-based data backup and sync with secure local storage of access keys
JP6467504B2 (ja) 情報暗号化・復号化、暗号化キー管理の方法、端末及びネットワークサーバー
US7591012B2 (en) Dynamic negotiation of encryption protocols
CN111447214B (zh) 一种基于指纹识别的公钥密码集中服务的方法
KR101130415B1 (ko) 비밀 데이터의 노출 없이 통신 네트워크를 통해 패스워드 보호된 비밀 데이터를 복구하는 방법 및 시스템
WO2014183671A1 (zh) 一种云存储安全控制的方法
CN103763319B (zh) 一种移动云存储轻量级数据安全共享方法
RU2589861C2 (ru) Система и способ шифрования данных пользователя
JP5619019B2 (ja) 認証のための方法、システム、およびコンピュータ・プログラム(1次認証済み通信チャネルによる2次通信チャネルのトークンベースのクライアント・サーバ認証)
WO2013139079A1 (zh) 一种存储方法、系统和装置
US20150207783A1 (en) Encryption system using web browsers and untrusted web servers
US9164926B2 (en) Security control method of network storage
CN106790037B (zh) 一种用户态加密的即时通讯方法与系统
US20160112413A1 (en) Method for controlling security of cloud storage
US20120054491A1 (en) Re-authentication in client-server communications
US20180091487A1 (en) Electronic device, server and communication system for securely transmitting information
WO2014117649A1 (zh) 一种数据共享的方法及装置
JP2016510962A (ja) 暗号化ネットワークストレージスペース
JP2006514478A5 (zh)
US20180063105A1 (en) Management of enciphered data sharing
TW201409990A (zh) 利用指紋資訊認證的通信方法
WO2016165309A1 (zh) 一种用于对密码信息进行换算和处理的方法和装置
CN111639357B (zh) 一种加密网盘系统及其认证方法和装置
JP2008065658A (ja) 情報処理システム

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: 14797382

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2014797382

Country of ref document: EP