A computer implemented method of generating and using a keychain in a database system for secure storage and communication of information, the database system comprising: a database for storing user repositories containing encrypted user data items, each repository associated with a particular user and each data item encrypted with a user encryption key associated with that user, and one or more client devices, each client device having a user keychain stored thereon, each user keychain containing a plurality of keychain items including the user encryption key associated with that user and a user repository identifier for locating user repositories in the database; the method comprising: generating each of said plurality of keychain items for a particular user by applying a deterministic process to at least a first biometric code associated with said particular user; wherein, the deterministic process includes a first stage of combining the first biometric code with a plurality of cryptographic salts to create a plurality of intermediate codes; and a second stage of applying a predetermined one-way hash algorithm to the intermediate codes to generate the plurality of keychain items; encrypting user data items using the user encryption key; locating a user repository using the user repository identifier; and storing the encrypted user data items in a user repository. a database for storing user repositories containing encrypted user data items, each repository associated with a particular user and each data item encrypted with a user encryption key associated with that user, and one or more client devices, each client device having a user keychain stored thereon, each user keychain containing a plurality of keychain items including the user encryption key associated with that user and a user repository identifier for locating user repositories in the database; the method comprising: generating each of said plurality of keychain items for a particular user by applying a deterministic process to at least a first biometric code associated with said particular user; wherein, the deterministic process includes a first stage of combining the first biometric code with a plurality of cryptographic salts to create a plurality of intermediate codes; and a second stage of applying a predetermined one-way hash algorithm to the intermediate codes to generate the plurality of keychain items; encrypting user data items using the user encryption key; locating a user repository using the user repository identifier; and storing the encrypted user data items in a user repository. generating each of said plurality of keychain items for a particular user by applying a deterministic process to at least a first biometric code associated with said particular user; wherein, the deterministic process includes a first stage of combining the first biometric code with a plurality of cryptographic salts to create a plurality of intermediate codes; and a second stage of applying a predetermined one-way hash algorithm to the intermediate codes to generate the plurality of keychain items; encrypting user data items using the user encryption key; locating a user repository using the user repository identifier; and storing the encrypted user data items in a user repository.