Dolev–Yao model

From formulasearchengine
Jump to navigation Jump to search

The Dolev–Yao model[1] is a formal model used to prove properties of interactive cryptographic protocols.[2][3]

The network

The network is represented by a set of abstract machines that can exchange messages. These messages consist of formal terms. These terms reveal some of the internal structure of the messages, but some parts will hopefully remain opaque to the adversary.

The adversary

The adversary in this model can overhear, intercept, and synthesise any message and is only limited by the constraints of the cryptographic methods used. In other words: "the attacker carries the message."

This omnipotence has been very difficult to model and many threat models simplify it, as, for example, the attacker in ubiquitous computing.

The algebraic model

Cryptographic primitives are modeled by abstract operators. For example, asymmetric encryption for a user is represented by the encryption function and the decryption function . Their main properties are that their composition is the identity function () and that an encrypted message reveals nothing about . Unlike in the real world, the adversary can neither manipulate the encryption's bit representation nor guess the key. The attacker may, however, re-use any messages that have been sent and therefore become known. The attacker can encrypt or decrypt these with any keys he knows, to forge subsequent messages.

A protocol is modeled as a set of sequential runs, alternating between queries (sending a message over the network) and responses (obtaining a message from the network).


The symbolic nature of the Dolev–Yao model makes it more manageable than computational models and accessible to algebraic methods but potentially less realistic. However, both kinds of models for cryptographic protocols have been related.[4] Also, symbolic models are very well suited to show that a protocol is broken, rather than secure, under the given assumptions about the attackers capabilities.

See also


  1. {{#invoke:citation/CS1|citation |CitationClass=citation }}
  2. {{#invoke:citation/CS1|citation |CitationClass=citation }}
  3. {{#invoke:citation/CS1|citation |CitationClass=citation }}
  4. {{#invoke:citation/CS1|citation |CitationClass=citation }}