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, wherein the distribution service 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, 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 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 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, wherein the distribution service 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, wherein the distribution service 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, 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 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 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.