I just read this article (link goes to the page of the article where to quote is from) and have a quesiton regarding the paragraph "Tipps vom Geheimdienst" ("Tips of the Secret Service"):
Aus den Unterlagen entnahmen die Experten auch zahlreiche sinnvolle Hinweise, etwa dass auf flüchtigen Medien kryptographische Schlüssel eingebrannt sein können, da sie meist an der gleichen Stelle gespeichert werden. Selbst wenn ein solcher Speicher nicht mehr mit Strom versorgt ist, könnten Abbilder des Schlüssels extrahiert werden.
This is my translation of it to English:
The experts took numerous usable hints from the documents. For instance, that cryptographic keys can be burned into volatile storage media because they mostly are saved in the same spot. Even if such a storage medium isn't connected to power any more, images of the key can be extracted.
Operating systems use address space layout randomization so I doubt any cryptographic keys stored in RAM while the operating system is fully running (keys for home folder encryption; PGP keys; keys of TrueCrypt (or TrueCrypt successor) volumes; etc.). Those keys should (afaik and please let me know if I'm wrong) only reside in RAM, in the CPU, and on the way in-between RAM and CPU. If they are written to swap, that's of course really bad but swap is permanent storage, not volatile storage which the article talks about.
The only useful kind of key I can think of whose secrecy might be endangered by it being burned into volatile memory is keys used for full disk encryption of the disk the operating system runs on because at the point where it's being decrypted, the operating system isn't fully running so I suspect ASLR might not either.
Is full disk encryption of the disk the operating system runs on vulnerable to this? Are there any other kinds of keys which are vulnerable to this?
I don't regard any keys involved in preventing the user from booting systems without valid signature or any keys involved in UEFI as useful. I regard such restrictions as malicious.
systemd-init
, it starts as soon as the kernel writes the memory map into memory and updates the right register. Even inside the init ram disk (initrd
) the kernel is using ASLR (that is, if you enable it withkalsr
). Yet, I'm a little confused with your question. Is there a reason for which you make a distinction between RAM and volatile memory? I believe that they would mean the same on most machines.