1. A computer-implemented method of sharing data in a supply chain, the data corresponding to an item having a tag associated therewith, the method comprising: determining a random number from the tag, the random number being unique to the item; selecting a first integer and a second integer; generating a first public key based on the first integer and a semi-public key based on the second integer; generating an identifier based on the first public key and the random number; generating a key based on the semi-public key and the random number; encrypting the data using the key to provide encrypted data; defining a tuple comprising the identifier and the encrypted data; and transmitting the tuple over a network for storage in a persistent storage device.