1. A method comprising: receiving first and second metadata entries; adding the first and second metadata entries to a set corresponding to a digital object; providing access to first and second unique identifiers, the first and second unique identifiers referencing the first and second metadata entries respectively, the first and second unique identifiers are hash values resulting from applying, by a computer processor, a function to contents of the first and second metadata entries respectively, wherein an order of the first and second metadata entries in the set is established by an order of the first and second unique identifiers; accessing the first and second metadata entries using the first and second unique identifiers as indices; receiving a third unique identifier that references the set, wherein the third unique identifier corresponding to the digital object comprises a hash value that is a result of applying a hash function that maps an arbitrary sequence of bytes associated with the digital object into a fixed size sequence; computing a hash of the digital object; encrypting at least one of the digital object, the first metadata entry, and the second metadata entry using an encryption key that is a function of the content of the digital object, wherein the encryption key is a function of an encrypted version of the digital object; and creating the encrypted version of the digital object by applying a hash function to the content of the digital object.