Yahalom is an authentication and secure key-sharing protocol designed for use on an insecure network such as the Internet. Yahalom uses a trusted arbitrator to distribute a shared key between two people. This protocol can be considered as an improved version of Wide Mouth Frog protocol (with additional protection against man-in-the-middle attack), but less secure than Needham-Schroeder.
If Alice (A) initiates the communication to Bob (B) with S is a server trusted by both parties, the protocol can be specified as follows using security protocol notation:
A and B are identities of Alice and Bob respectively
K
A
S
is a symmetric key known only to A and S
K
B
S
is a symmetric key known only to B and S
N
A
and
N
B
are nonces generated by A and B respectively
K
A
B
is a symmetric, generated key, which will be the session key of the session between A and B
A
→
B
:
A
,
N
A
Alice sends a message to Bob requesting communication.
B
→
S
:
B
,
{
A
,
N
A
,
N
B
}
K
B
S
Bob sends a message to the Server encrypted under
K
B
S
.
S
→
A
:
{
B
,
K
A
B
,
N
A
,
N
B
}
K
A
S
,
{
A
,
K
A
B
}
K
B
S
The Server sends to Alice a message containing the generated session key
K
A
B
and a message to be forwarded to Bob.
A
→
B
:
{
A
,
K
A
B
}
K
B
S
,
{
N
B
}
K
A
B
Alice forwards the message to Bob and verifies
N
A
has not changed. Bob will verify
N
B
has not changed when he receives the message.