A computer-implemented method for secure data sharing, comprising: storing, by a data owner or an entity authorized by the data owner, via a data management user interface, in a decentralized data storage, data in an encrypted format; storing, via the data management user interface, in a blockchain, information indicating the data owner and a reference to the data stored in the decentralized data storage; storing, by the data owner, via the data management user interface, in the blockchain, information indicating consent given to one or more authorized users for using the data by: encrypting using a key of each of the one or more authorized users, a key used for encrypting the data stored in the decentralized data storage, wherein the key of each of the one or more authorized users comprises a public key, of a public/private key pair, of each of the one or more authorized users; and storing the encrypted key in the blockchain together with the information indicating consent given to the one or more authorized users; the method further comprising: receiving, via the data management user interface, a request from a data requester to enable use of the data stored in the decentralized data storage; determining, via the data management user interface, with reference to the blockchain, whether the data requester is the data owner or one of the one or more authorized users; when the data requester is determined to be the data owner or one of the one or more authorized users, retrieving the data for use by the data requester, via the data management user interface, from the decentralized data storage, using the reference to the data; and decrypting, via the data management user interface, the retrieved data using the key used for encrypting the data stored in the decentralized data storage, comprising: decrypting the encrypted key using the private key of the public/private key pair of the data requester to obtain a decrypted key, and decrypting the data using the decrypted key. storing, by a data owner or an entity authorized by the data owner, via a data management user interface, in a decentralized data storage, data in an encrypted format; storing, via the data management user interface, in a blockchain, information indicating the data owner and a reference to the data stored in the decentralized data storage; storing, by the data owner, via the data management user interface, in the blockchain, information indicating consent given to one or more authorized users for using the data by: encrypting using a key of each of the one or more authorized users, a key used for encrypting the data stored in the decentralized data storage, wherein the key of each of the one or more authorized users comprises a public key, of a public/private key pair, of each of the one or more authorized users; and storing the encrypted key in the blockchain together with the information indicating consent given to the one or more authorized users; encrypting using a key of each of the one or more authorized users, a key used for encrypting the data stored in the decentralized data storage, wherein the key of each of the one or more authorized users comprises a public key, of a public/private key pair, of each of the one or more authorized users; and storing the encrypted key in the blockchain together with the information indicating consent given to the one or more authorized users; the method further comprising: receiving, via the data management user interface, a request from a data requester to enable use of the data stored in the decentralized data storage; determining, via the data management user interface, with reference to the blockchain, whether the data requester is the data owner or one of the one or more authorized users; when the data requester is determined to be the data owner or one of the one or more authorized users, retrieving the data for use by the data requester, via the data management user interface, from the decentralized data storage, using the reference to the data; and decrypting, via the data management user interface, the retrieved data using the key used for encrypting the data stored in the decentralized data storage, comprising: decrypting the encrypted key using the private key of the public/private key pair of the data requester to obtain a decrypted key, and decrypting the data using the decrypted key. receiving, via the data management user interface, a request from a data requester to enable use of the data stored in the decentralized data storage; determining, via the data management user interface, with reference to the blockchain, whether the data requester is the data owner or one of the one or more authorized users; when the data requester is determined to be the data owner or one of the one or more authorized users, retrieving the data for use by the data requester, via the data management user interface, from the decentralized data storage, using the reference to the data; and decrypting, via the data management user interface, the retrieved data using the key used for encrypting the data stored in the decentralized data storage, comprising: decrypting the encrypted key using the private key of the public/private key pair of the data requester to obtain a decrypted key, and decrypting the data using the decrypted key. decrypting the encrypted key using the private key of the public/private key pair of the data requester to obtain a decrypted key, and decrypting the data using the decrypted key.