A computer-implemented method for selectively verifying, personal data, the method comprising: receiving, by an identity application of a client device, personal data of a user; computing, via a cryptographic hash function, one or more cryptographic hashes from elements of the personal data; storing the cryptographic hashes, an internal identifier and a timestamp as an entry in a distributed database, wherein the internal identifier is unique within the distributed database, wherein communication with the distributed database is processed via at least one distribution service (108-116), wherein the distribution service (108-116) provides access to the distributed database and handles updates to the distributed database; receiving a user request from the user; selecting one or more of the elements of personal data for verification; requesting verification of the selected elements of personal data; determining an authorization indication in response to the verification request; when the authorization indication indicates that the verification request has been allowed, verifying the selected elements of personal data using cryptographic hashes from the entry in the distributed database; maintaining, by the distribution service (108-116), a list of approved providers for the user, wherein each provider on the list is authorized to maintain at least one element of the personal data; receiving, by the distribution service (108-116) and from the client device, a change to the personal data; sending an update corresponding to the change to each provider on the list of approved providers; wherein the distribution service (108-116) communicates with the providers via an application layer protocol, wherein the application layer protocol is bi-directional, such that both sides of a connection are able to send unsolicited messages. receiving, by an identity application of a client device, personal data of a user; computing, via a cryptographic hash function, one or more cryptographic hashes from elements of the personal data; storing the cryptographic hashes, an internal identifier and a timestamp as an entry in a distributed database, wherein the internal identifier is unique within the distributed database, wherein communication with the distributed database is processed via at least one distribution service (108-116), wherein the distribution service (108-116) provides access to the wherein the internal identifier is unique within the distributed database, wherein communication with the distributed database is processed via at least one distribution service (108-116), wherein the distribution service (108-116) provides access to the distributed database and handles updates to the distributed database; receiving a user request from the user; selecting one or more of the elements of personal data for verification; requesting verification of the selected elements of personal data; determining an authorization indication in response to the verification request; when the authorization indication indicates that the verification request has been allowed, verifying the selected elements of personal data using cryptographic hashes from the entry in the distributed database; maintaining, by the distribution service (108-116), a list of approved providers for the user, wherein each provider on the list is authorized to maintain at least one element of the personal data; receiving, by the distribution service (108-116) and from the client device, a change to the personal data; sending an update corresponding to the change to each provider on the list of approved providers; wherein the distribution service (108-116) communicates with the providers via an application layer protocol, wherein the application layer protocol is bi-directional, such that both sides of a connection are able to send unsolicited messages. <EOS>