This chapter covers:
- The issues that cryptography faces in highly-adversarial environments.
- The solutions that hardware offers to improve the attacker’s cost in such environements.
- How software mitigations can also help cryptography against side-channel attacks.
At some point, writing cryptographic applications, you end up realizing that you have a number of short-term and long-term keys, and you have to make sure nobody can steal them. It means you’re standing in the world of key management. Makes sense right? You’ve seen some of that in previous chapters, but in this chapter we’ll do things a bit differently: we’ll look at how key management and cryptography can be done in highly-adversarial environments. Environments where the attacker is much more powerful than the typical scenarios we’ve looked at so far.
Let’s first introduce this concept in the next section. The rest of this chapter will then survey the different techniques that allow us to continue to do interesting things in spite of these constraints. Spoiler alert: it involves using specialized hardware. Finally, we’ll see how cryptographic primitives have adapted to these highly-adversarial environments.