CROSS REFERENCE TO RELATED CASES

This case claims priority to EP Application No. 19175738.4, filed May 21, 2019, entitled “Method and System for Granting Access to Data in an Immutable Ledger System”, herein incorporated by reference in its entirety.

FIELD

The disclosure relates to a method and system that provides for secure access by third party users to data held in an immutable ledger system such as a blockchain or hashchain that is maintained by a different party.

BACKGROUND

There are well known encryption technologies that enable an owner of data to write the data to a database such that it can then only be read by the data owner. Moreover, where the data is to be readable by a number of people, then access control technologies exist that enable the application to determine who can read the data and grant or deny access.

However, where data is written to an immutable distributed ledger technology, such as blockchain, the mechanisms by which grant of access to the data are less mature and access control is often on an all or nothing basis, or is implemented at an application layer that is less secure than the data that it is protecting.

One example prior art document is US2018/351750. Within this document a single symmetric key is generated and used for each party, or for each sub-party that wishes to access data in the ledger. In particular, FIG. 3 of US2018/351750 depicts an example process of generating encrypted symmetric keys. Generally, a symmetric key generation module generates a symmetric key and a key encryption module encrypts the symmetric key using different public keys in order to obtain different encrypted symmetric keys that all derive from the same symmetric key. In one embodiment, the symmetric key generation module generates a symmetric key for each party. In some embodiments, a single party may include various sub-parties that are distinct from one another. Therefore, a single party may have multiple symmetric keys (e.g., one symmetric key for each sub-party). As an example, the symmetric key generated by the symmetric key generation module is a random advanced encryption standard (AES) 128-bit, 192-bit, or 256-bit symmetric key. As another example, the symmetric key may use different standards such as the data encryption standard (DES) or triple data encryption standard (IDES). In other embodiments, the symmetric key generation module225generates one symmetric key for each party that places transactions or views transaction records of the block chain. For example, there may be N total parties interacting with the block chain. Therefore, the symmetric key generation module225generates N total symmetric keys.

Thus, within US2018/351750 a different encryption key is provided on a per-data-providing party basis. This presents problems in that because each data-providing party has a single symmetric key, then all of their records on the ledger are available to anyone in possession of the key—if it is necessary to grant third party access to a data providing party's data, then the third party will be able to access all of the data that is encrypted by the same key. The only mitigation against this scenario that is described is where the symmetric key is refreshed periodically. This leads to a party having several time indexed keys to access data stored on the immutable ledger within different time periods, but importantly, for any one time period all of the data providing party's data is available to a third party provided with the key for that time period i.e. it is not possible to be more granular with the definition of data that can be accessed.

SUMMARY

In order to address the above, examples of the present disclosure enable a data owner to write data in an encrypted manner to an immutable ledger, and yet still be able to grant read access to specific data elements at granular per data element level, as they were written at particular moments in time, to a requesting party. Examples therefore provide a process for encryption of data onto an immutable ledger in a time indexed manner, together with a process by which a third party can request access to the data stored in the immutable ledger from the data owner, and the data owner can provide them with certain decryption keys that allow the third party to read the data directly from the immutable ledger, again based on time-indexed queries. The data the third party can read is restricted to specific elements of the data written (so, not all of it); and within a time range/as at a point in time.

This approach has a number of advantages. Firstly, it avoids having access control implementation at a central application layer, and thereby avoids having a critical component that knows how to decrypt “all” data, and hence is a prime target of attack. Secondly, it enables the requesting party to read data directly off the ledger, even though it has been encrypted. This avoids the requesting party having to rely on the data owner to decrypt its data and pass it back—thus having the opportunity to pass back incorrect data. Thirdly, it constrains what the requesting party is able to read. The reader is only able to read specific elements. The reader is only able to read those elements as they were at a point in time, and is unable to see what the data values were before and after the timespan the reader has been granted access to.

In view of the above, from one aspect there is provided a computer implemented method of providing an immutable chain of data blocks storing immutable data for subsequent access by third party data requesting entities, comprising: receiving, from a data providing client device, data to be stored in the immutable chain, the data to be stored having one or more data fields relating to individual items of data that have semantic meaning and that may be accessed individually, and at least one temporal specification field defining a date and/or time at which the individual items of data were generated; individually encrypting the individual items of data with their own respective encryption keys, such that a different encryption key is used for different individual items of data received from the same data providing client device; encrypting corresponding respective decryption keys to the respective encryption keys with a further encryption key; forming a data block including the encrypted individual items of data and the encrypted respective decryption keys; and storing the data block within the immutable chain of data blocks as a new block therein.

In one example the forming of a data block comprises generating a hash value of the data block including the encrypted individual items of the data and the encryption key, and encrypted decryption keys and appending the hash value to the data block.

In another example the forming of a data block comprises appending a hash value from a previous block in the chain to the block prior to generating the hash value for the present data block, and signing the data block with a private key of a data owner prior to storing the block as part of the hash chain or block chain.

In one example the method further comprises: receiving a data access request from a third party data requesting entity, the data access request defining the individual items of data that are required, and a temporal specification defining the temporal point or range at which the data is requested; searching through the hash chain or block chain to identify those data blocks that meet the temporal specification; accessing the identified data blocks to retrieve the encrypted data decryption keys therein; decrypting the encrypted decryption keys; generating a response message to the third party data requesting entity including information identifying the identified data blocks, and further including the decryption keys for the individual items of data that are requested; and sending the response message to the third party data requesting entity.

In the above the response message may be encrypted with the third party data requesting entity's public key prior to sending the response message.

Moreover the response message may additionally include information identifying data blocks that temporally precede or succeed the identified data blocks. This can aid the data accessing client in being sure that the correct information is being provided.

In one example the forming of the data block including the encrypted individual items of data further comprises generating hash values of the original data items using a hash function, and including the hash values of the original data items in the data block. This feature enables the data accessing client to confirm that the data they have decrypted is a match to the data that was originally encrypted by the data owner. This can be useful when a symmetric key is used to encrypt the data, because a symmetric key carries a risk that the data owner can engineer a decryption key that causes the data in the data block to decrypt to a different value from that originally encrypted—and hence the data owner may engineer a “lie”. Providing a hash of the original data prior to encryption in the data block would all the data accessing client to authenticate that the data they have received has not been tampered with.

In some examples, the immutable chain of data blocks is a hash chain or a block chain.

A further aspect of the present disclosure provides a computer implemented method for accessing data stored in an immutable chain of data blocks, the data blocks containing one or more data fields relating to individual items of data that may be accessed individually, and at least one temporal specification field defining a date and/or time at which the individual items of data were generated, the data in the data blocks being encrypted; the method comprising: generating a data access request message defining individual items of data that are required, and a temporal specification defining the temporal point or range at which the item(s) of data is requested; receiving a response message to the data access request message including information identifying data blocks in the immutable chain of data blocks that contain the requested individual items of data, and further including decryption keys for the individual items of data that are requested; accessing the identified data blocks in the immutable chain of data blocks to retrieve the individual items of data that are requested from the blocks; and decrypting the individual items of data retrieved from the data blocks to determine the properties thereof.

In one example the method further comprises generating a hash of the decrypted data and comparing this to a hash of the original data item held in the encrypted data block to confirm that the decrypted data matches the original encrypted data.

In one example the method further comprises accessing data blocks in the immutable ledger that precede and/or succeed the identified data blocks to check the date thereof whereby to verify that the accessed data meets the temporal specification.

In one example where the response message has been signed with a data owner's private key, the method further comprises authenticating the message with the data owner's public key.

In any of the above examples the individual items of data individually have semantic meaning, and hence have value to the data accessing client per se, without necessarily needing combination with other items of data.

Another aspect of the present disclosure provides a system for providing an immutable chain of data blocks storing immutable data for subsequent access by third party data requesting entities, the system comprising: at least one processor; anda computer readable storage medium storing computer-executable instructions that when executed cause the processor to operate in accordance with the method of the first aspect above.

A yet further aspect of the present disclosure provides a system for accessing data in an immutable chain of data blocks, the data blocks containing one or more data fields relating to individual items of data that may be accessed individually, and at least one temporal specification field defining a date and/or time at which the individual items of data were generated, the data in the data blocks being encrypted, the system comprising: at least one processor; and a computer readable storage medium storing computer-executable instructions that when executed cause the processor to operate in accordance with the method of the second aspect described above.

