There are two ways to create a cryptographic key: generate a random key, or calculate it. It's easy to understand why random keys are good. There is no computational trick that will help an attacker guess a random value that is any better than just guessing all possible values until they get the right one. But it is also possible to generate keys dynamically, in a manner that is just as secure as the traditional approach: by using random seed material generated once, and then deriving keys on demand based on combining a key “name” or an “identifier” with that seed material.