1. A computer-implemented method comprising: authenticating an authentication system, a user, and a service provider; generating, by a computer system, an access code based on a one way permutation of data related to the authenticated user and data related to the authenticated service provider, where the one way permutation is a function in which the data related to the authenticated user and the data related to the authenticated service provider cannot be determined by knowing the access code; determining one or more data storage locations based on the access code; using the access code to access at least some of the data storage locations; and retrieving the data from the accessed data storage locations.