A method implemented on a computing system comprising a central processing unit, CPU, having a plurality of processing cores, a respective first cache memory local to each processing core and a second cache memory shared by the plurality of processing cores on the CPU, the method comprising: by a trust anchor on the CPU, in response to receiving a virtual machine, VM, image, wherein the VM image is encrypted (515-Yes) using a VM image encryption key: obtaining the VM image encryption key; configuring a first encrypt/decrypt block with the VM image encryption key; generating a memory session key for the VM image; configuring a second encrypt/decrypt block with the memory session key for the VM image; and configuring a third encrypt/decrypt block with the memory session key, wherein the third encrypt/decrypt block is present between one of the first cache memories and the second, shared cache memory on the CPU; the method further comprising: fetching one or more pages of the VM image into a memory accessible by the plurality of processing cores, wherein each fetched page is decrypted by the first encrypt/decrypt block using the VM image encryption key and subsequently encrypted by the second encrypt/decrypt block using the memory session key for the VM image; receiving the encrypted pages from the memory at the second cache; and decrypting data of the encrypted pages by the third encrypt/decrypt block when reading data from the second cache to one of the first cache memories local to a processing core. by a trust anchor on the CPU, in response to receiving a virtual machine, VM, image, wherein the VM image is encrypted (515-Yes) using a VM image encryption key: obtaining the VM image encryption key; configuring a first encrypt/decrypt block with the VM image encryption key; generating a memory session key for the VM image; configuring a second encrypt/decrypt block with the memory session key for the VM image; and configuring a third encrypt/decrypt block with the memory session key, wherein the third encrypt/decrypt block is present between one of the first cache memories and the second, shared cache memory on the CPU; the method further comprising: fetching one or more pages of the VM image into a memory accessible by the plurality of processing cores, wherein each fetched page is decrypted by the first encrypt/decrypt block using the VM image encryption key and subsequently encrypted by the second encrypt/decrypt block using the memory session key for the VM image; receiving the encrypted pages from the memory at the second cache; and decrypting data of the encrypted pages by the third encrypt/decrypt block when reading data from the second cache to one of the first cache memories local to a processing core. fetching one or more pages of the VM image into a memory accessible by the plurality of processing cores, wherein each fetched page is decrypted by the first encrypt/decrypt block using the VM image encryption key and subsequently encrypted by the second encrypt/decrypt block using the memory session key for the VM image; receiving the encrypted pages from the memory at the second cache; and decrypting data of the encrypted pages by the third encrypt/decrypt block when reading data from the second cache to one of the first cache memories local to a processing core.