Ignat is a platform engineer at Cloudflare working mostly on platform and hardware security. Ignat’s interests are cryptography, hacking, and low-level programming. Before CloudFlare, Ignat worked as senior security engineer for Samsung Electronics’ Mobile Communications Division. His solutions may be found in many older Samsung smart phones and tablets.
Managing server secrets at scale with a vaultless password manager
“There is no cloud. It’s just someone else’s computer.”
Operating a large cluster, a datacenter, or a distributed network involves handling a lot of secrets. In almost all cases, you have to deal with at least four types of secrets for each piece of hardware: SSH server key (or shell access key), key to bootstrap your configuration management system, disk encryption key, and maybe some per-server credentials to access other services. And most of the time, these keys have to be set up before your configuration management kicks in, making the automation of this process more difficult.
Security-wise, it is important to control where and when those secrets are generated. Often, keys are generated by startup scripts. However, during initial boot (especially on diskless systems), the system may have a low entropy level in its internal random number generator, resulting in statistically weak generated keys.
And once you have your keys, you need to store them securely. This presents a chicken-and-egg problem. Encrypted disk is a great solution, but guess what? You need a key to access an encrypted disk and where do you store that? Also, where do you store keys for diskless systems?
This talk presents an approach that combines hardware support and little cryptography to deal with the above issues and unify and simplify secret management for your hardware fleet.
The approach addresses the following scenarios:
– simple and automatic server key/password generation with good entropy
– easy key rollover integrated into your configuration management system
– provisioning keys on a diskless server
– providing and architecture, where all disks on the server are encrypted without any external dependencies