must be performed then to assure the feasibility and the correctness of the verification
process. Such an analysis can only be performed for known replay attacks. Unlike a
global verification, local verification can not therefore be used as as a prevention mech-
anism but only as a remedy for known exploits. In contrast, global verification provides
global integrity for names, such that these can be employed also as a precautionary
measure for all protocols countering attacks that are both known and not known to the
implementor of the protocol.
4.1 Local vs. Global Uniqueness
We have argued that the peculiar, but not unusual, use of names in cryptographic pro-
tocols makes system-wide uniqueness not necessary in all cases. Global uniqueness in
fact, while not strictly required by the cryptographic protocol, may be convenient be-
cause the same global naming system is already in use to identify all principals in the
system. This is the argument that leads, for example, to the adoption of public keys (and
as consequence of a PKI) in places of names.
Uniqueness of names becomes an issue also when the name system implements
revocation and re-allocation of names. For example, in IPSEC, IP addresses are used
to name communication endpoints [13]. When these are dynamically assigned (using
the DHCP protocol, for example), protocol affiliation of messages should be extended
also to subsequent sessions. Otherwise, a message intended for Bob, hence containing
his name B, could be used in a replay attack against Charlie once Bob’s name (IP ad-
dress) has been reassigned to Charlie. Uniqueness of names may have to be maintained
therefore also over time, for sessions that are not correlated. The use of session identi-
fiers removes the reliance on (the uniqueness of) the names of protocol participants but,
while naming sessions explicitly is effective, the integrity of session identifiers must be
provided as well, possibly implying a substantial modification of the original protocol.
The alternative to name recycling is to use lingering names across subsequent ses-
sions. Such names are usually referred to as persistent or inescapable [14]. To imple-
ment such names, however, may be a non-trivial exercise for a systems designer. For
example, the namespace used must be “big enough” to never generate colliding names
for different principals. A design flaw or implementation bug allowing a wrap-around
of the name space may have serious and direct security implications. Determining how
big is “big enough” is complicated by the fact that this is not merely determined by the
worst-case usage rate of names in the system, but also by the worst-case abuse rate. In
other words, unless the rate of name consumption is bounded somehow, a determined
attacker is able to exhaust a name space independently of how big it is [15].
4.2 Design Alternatives
All of the presented attacks require a principal to run two or more correlated executions
of the same protocol with different counterparts. A message belonging to one session
can be maliciously used this way in another (and vice-versa). In these cases, the attack
can be thwarted by serializing all executions of the protocol at the victim. Note that,
according our definition of correlation, to just execute a protocol after another may
not be enough if the windows of vulnerability extends also after a run is finished (as