1. A storage controller comprising: a first interface on which data commands for reading and writing data are received from a data-managing application on a host system, the storage controller being a physically separate machine from the host system; an encryption block module, coupled to receive the data from the first interface, the encryption block module generating a plurality of security keys to encrypt the data, wherein a first one of the security keys is assigned to the host system and is used to encrypt the data received from the host system; non-volatile memory, coupled to the encryption block module, that stores the security keys and an indication of a storage location of the data; a storage protocol module, coupled to the encryption block module that transmits the data encrypted using the first security key to at least one storage drive; the storage protocol module interfaces with a plurality of expanders; and a plurality of encryption chips being coupled between the storage controller and the expanders.