1. A method for providing a secure data storage service in a cloud computing environment comprising: partitioning, at a resource of the cloud computing environment, a data resource into a plurality of data particles; changing, over time, a logical separation and a physical separation of the data particles by repeatedly: assigning, at the resource, a plurality of logic groups to the data particles, wherein each logic group includes one or more data particles including at least one communication data particle, wherein the one or more data particles in each of the logic groups is configured to communicate with any other data particle in that logic group, and wherein each communication data particle is configured to communicate with the resource; assigning, at the resource, a plurality of physical storage groups to the data particles, wherein each of the physical storage groups includes one or more data particles; and storing each physical storage group at a corresponding storage resource of a plurality of storage resources of the cloud computing environment, wherein each storage resource is physically separate from the other storage resources; receiving a request for the data resource from a client; determining, at the resource, whether the request for the data resource is valid; and if the request for the data resource is valid, transmitting the data particles of the data resource to the client.