Traditionally speaking, we consider the case where two agents, Alice and Bob, want to exchange some messages over a network (we usually simply use in diagrams A for Alice, and B for Bob). A protocol defines how Alice and Bob exchange messages, and takes the form of a sequence of steps, each step indicating the sender, the receiver, and the content of the message exchanged.
For instance, imagine a situation where Alice wants to send the private message "secret" to Bob. A very simple protocol could be:
Although this description is relatively straightforward, let us try to analyse it, using a graphical representation of the different elements (you can click on the different steps to see the animation).
In the initial state (Step 0), Alice knows the message "secret" (otherwise, she could not send it), but Bob does not.
In Step 1, Alice executes the first step of the protocol and sends the message to Bob, and now he knows "secret" as well.
However, in general, we cannot assume that the network is secure, which means that any adversary can potentially intercept the message "secret" (which then would no longer be secret).
In the next part, we introduce an explicit network controlled by an adversary.