I'm just getting an overview of some of the concepts in key exchanging at the moment, and I'm a bit disoriented on a few topics, namely key stretching, key derivation functions and perfect forward secrecy.

Regarding key stretching, I understand the idea is to make it more difficult to brute-force a password, but the materials I'm reading come a bit short on any kind of technical explanation. The wikipedia article makes it sound like all it does is feed a plain text passphrase through a hashing algorithm. If that's so, why differentiate between hashing and key stretching? Does a salt count as a method of key stretching? What are other methods?

About key derivation function, I understand the whole thing that there is a master key and session keys are derived from that. But what is the specific application of key derivation? Is it closer to key agreement (Diffie-Hellman) or key exchange (PKI)? Can you cite a real-world example where I might encounter key derivation? (For instance, I know that if I wanted to secure a tunnel through IPSec, I might use IKE, which means I'd be dealing with Diffie-Hellman, which is key agreement.)

I think I'm pretty well grounded on Perfect Forward Secrecy; it's basically the diametric opposite of key derivation. But I'm hazy on the difference between Forward Secrecy and Perfect Forward Secrecy. What exactly changes the situation from FS to PFS?

I know these must be very basic questions for this forum, but I'm just getting my feet wet in the world of cryptology.

  • $\begingroup$ Please try and ask one question per question. $\endgroup$
    – Maarten Bodewes
    Commented Apr 1, 2015 at 18:40

1 Answer 1

  1. Key stretching usually means using a Password-Based Key Derivation Function (PBKDF), these are designed to be more resource intense than standard hashing, which is designed to be as fast as possible. A salt is used to prevent that two derived keys are differentely so that you'd need to brute-force each password independentely.
  2. Usually you derive a key from a master secret if you negotiated a key beforehand and need a key for a cipher or a MAC. Key-Derivation-Functions are usually hash-functions with some slight modifications. A real world sample would be TLS, where you derive a key after negotiating a master secret using either DHE or ECDHE. TLS v1.2, see Chapter 5
  3. There's no difference between PFS and FS other than naming. Wikipedia


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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