SKEME
Secure Key Exchange Mechanism for (E)nternet
Three Basic Phases
SHARE
A->B: {Ka}Kb+
B->A: {Kb}Ka+
Ko = hash(Ka, Kb) //
Shared secret for A & B
EXCH
A->B: g^x mod p
B->A: g^y mod p
AUTH
A->B: hash(Ko, (g^y, g^x, IDa, IDb))
B->A: hash(Ko, (g^x, g^y, IDb, IDa))
Combination of Phases and efficiency
Efficient Full Version
A->B: {IDa, Ka}Kb+
B->A: {Kb}Ka+, g^y, hash(Ko, (g^x, g^y, IDb, IDa))
A->B: hash(Ko, (g^y, g^x, IDa, IDb))
Ko = hash(Ka, Kb)
SK = hash(g^xy)
Share Only – (no PFS)
A->B: {IDa, Ka}Kb+
B->A: {Kb}Ka+, Nb, hash(Ko, (Na, Nb, IDb, IDa))
A->B: hash(Ko, (Nb, Na, IDa, IDb))
Ko = hash(Ka, Kb)
SK = hash(Ko, (g^y, g^x, IDa, IDb))
Pre-Shared Key
A->B: g^x
B->A: g^y, hash(Ko, (g^x, g^y, IDb, IDa))
A->B: hash(Ko, (g^y, g^x, IDa, IDb))
Ko = pre-shared secret
SK = hash(g^xy)
Fast Re-Key
A->B: Na
B->A: Nb, hash(Ko, (Na, Nb, IDb, IDa))
A->B: hash(Ko, (Nb, Na, IDa, IDb))
Ko = pre-shared secret
SK = hash(Ko, (g^y, g^x, IDa, IDb))