4

I know some security processors have an isolated bus where you can store a private key and use it with hardware encryption without the key ever being stored in memory. Some even have key storage inside the SoC on an isolated bus so there's no possibility of stealing it even with physical access and a team of engineers. This feature is commonly used to implement HDCP, for example.

Question: I was wondering if there's some feature like that in consumer-grade Intel or Arm-based platforms?

I'd like to be able to write a key and use it for encryption with almost no chance it could ever be recovered.

  • 1
    It would probably be possible with sufficient budget and enough attempts to grind through the case and expose the silicon to steal keys for HDCP (or indeed anything else). – Phil Lello Mar 23 '16 at 15:44
  • Fair enough @PhilLello. What I have in mind is securing autonomous networks that don't necessarily have internet access such as vehicle-area networks. I'd just like it to be pretty inconvenient to get at the key used by components to sign messages to each other. – Michael Fox Mar 23 '16 at 15:49
  • 1
    For vehicle-area networks you probably don't want what most people would call consumer-grade hardware, otherwise the system as a whole is susceptible to the noise that VAN protects you from. I'd recommend looking at a SoC solution with (externally write-only) embedded memory. – Phil Lello Mar 23 '16 at 15:55
  • That's a good point @PhilLello. Hardware quality aside, I'm wondering if the Arm (or Intel or something else) architecture supports signing/encryption without loading the key into main memory. Otherwise it would be trivial to dump RAM and steal a key from a controller with physical access. I think there's already a number of exploits currently circulating that do just this. – Michael Fox Mar 23 '16 at 15:59
  • 1
    You could use Intel's SGX to protect the key... – SEJPM Mar 23 '16 at 18:11
3

These processors do not directly support secure key memory, but they do cooperate with an external component known as the Trusted Platform Module, which basically allows you to perform secure cryptographic operations using an unknown key (the component is sealed and will never divulge its key, and is hardened against tampering). UEFI can use this for Secure Boot, for example, and various software applications, such as BitLocker, can use this for file or drive encryption. If you'd like to use these types of processors, you'd want to include a TPM if you wanted physically secure encryption.

4

Intel can do register-to-register encryption with the AES instructions and many ARM chips have crypto accelerators with similar functions.

There's two kinds of attack here: having an external DRAM bus physically snooped, and having a software exploit that sees the memory from the processor's point of view. The former is actually easiest to deal with by using on-chip RAM only.

Dealing with exploits is a problem, because the key has to be available to software at some point. The ARM solution is TrustZone, which is a sophisticated anti-compromise virtualisation-like mechanism that lets you have a secure microkernel on top of a much larger insecure OS. On the iPhone, the "secure world" is running the sel4 microkernel.

Write-only 'fuses' are used to seal the system once the chip is programmed to prevent JTAG access and unsigned updates. This is partly why the FBI attack on Apple is so serious: it involves forcing them to make an insecure version of the software that's signed with their keys.

  • 1
    A little addition to your answer - there's a STM32 tiny-package version, it has OTP memory on-board and can be just acting like a peripherial via I2C, SPI, USB, CAN. So - you can make a key-related stuff performed on this tiny chip attached to your main system – Alexey Vesnin Mar 23 '16 at 18:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.