# Difference between Key Scheduling and Key Generation?

I am a little bit confused in the terms i.e Key Scheduling and Key Generation. What is the actual difference between these two terms? According to Wikipedia, the terms are described as:

Key Generation: Key generation is the process of generating keys in cryptography. A key is used to encrypt and decrypt whatever data is being encrypted/decrypted. A device or program used to generate keys is called a key generator or keygen.

Key Scheduling: A key schedule is an algorithm that calculates all the round keys from the key.

Key generation is just a process while key scheduling is about the calculation of key in the algorithm. Means this process is called key generation, am I right here?

Moreover, what we will be called if we calculate a key using any method in our algorithm. Just for example say that I calculate a key using different chaotic equations. Combine these equations in a particular way and generate a final key. Is it will be key scheduling or key generation?

• The two subjects are totally different. In block ciphers, there is a need for rounds keys. Key scheduling is the process to generate those sub-keys from the master key. The key generation is completely different. You generate a key from either a password by using a password-based Key Derivation Function, or using a good random number generator to derive the by a Key Derivation Function (KDF). Commented Nov 17, 2019 at 9:57
• @kelalaka I understood. Thank you. It means when I generate a key using different chaotic maps it should be called a key generation. It should not be mixed up with the key scheduling. Commented Nov 17, 2019 at 10:50
• Generally I'd say that a key-schedule is deterministic and stateless (it generates subkeys from one key) though where to put it formally (ie as part of the encryption or as part of the key generation) is usually not fixed for symmetric key crypto (public keys leave you a little bit less flexibility there) Commented Nov 17, 2019 at 15:00
• @SEJPM what I understood from your comment is that in symmetric key cryptography, key scheduling and key generation are little bit merging terms while in public-key cryptography it can be distinguished. Can you please elaborate it more. Commented Nov 17, 2019 at 15:56
• I think that SEJPM is pointing out that public keys are generally created in a deterministic way during key pair generation. That's only true for specific key pair generation algorithms (EC key pair generation, not RSA key pair generation) and of course only applies to key generation, not key scheduling though. Commented Nov 17, 2019 at 16:07

Key generation is just a process

Anything is "just a process", executing any algorithm is "just a process". So lets ignore this part of the sentence as it doesn't make sense.

while key scheduling is about the calculation of key in the algorithm.

That's right. If the algorithm requires a key in a different form, e.g. expanded from the original form, then the key schedule is the part of the algorithm that performs that calculation.

However, this argument is true when we're talking in the context of a block cipher. Key schedule could mean other things in other contexts.

So now the sentence reads "Means (the process or procedure that is taking place in generating a key) is called key generation, am I right here?".

That sentence is self-evident. However, as long as "generation" is not further clarified, it carries no weight.

Moreover, what we will be called if we calculate a key using any method in our algorithm

That depends if we're still talking in the context of a block cipher I suppose. If you're deterministically transforming your key within your algorithm then I suppose you can call it a key schedule. You can also call it something else; it is your algorithm after all.

Just for example say that I calculate a key using different chaotic equations. Combine these equations in a particular way and generate a final key.

If you do that deterministically and within your algorithm then nobody would raise an eyebrow if you call it a key schedule. It would help if your algorithm would be a block cipher.

They would raise an eyebrow if you try and use it to increase the key strength or if the method takes lots of time, because that is not what key schedules are generally about.

Is it will be key scheduling or key generation?

Key generation supposes randomness, and randomness supposes some source of entropy. If no source of randomness is given then we can confidentially say that it is not key generation.

If it is a key schedule is already discussed above. There are other options such as key establishment. However, if there is a single key as input, and if the supposed key schedule is happening within your algorithm, then it makes sense to call it a key schedule.

• Whoops, now I derailed myself. Rewrote the last sentence. Commented Nov 18, 2019 at 23:41