19.11.2012 Views

A review of Proverif as an automatic security protocol verifier

A review of Proverif as an automatic security protocol verifier

A review of Proverif as an automatic security protocol verifier

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A <strong>review</strong> <strong>of</strong> ProVerif <strong>as</strong> <strong>an</strong> <strong>automatic</strong> <strong>security</strong><br />

<strong>protocol</strong> <strong>verifier</strong><br />

M. Peters <strong>an</strong>d P. Rogaar<br />

Radboud University, The Netherl<strong>an</strong>ds<br />

{mgppeters, p.rogaar}@student.ru.nl<br />

Abstract. In this paper we are interested in the main re<strong>as</strong>ons to use<br />

ProVerif, <strong>an</strong> <strong>automatic</strong> <strong>verifier</strong> for <strong>security</strong> <strong>protocol</strong>s. We are interested in<br />

how successful it is used in the <strong>an</strong>alyses <strong>of</strong> real-world <strong>protocol</strong>s. We first<br />

formulate what it me<strong>an</strong>s for a <strong>verifier</strong> to be successful. We then describe<br />

some limitations <strong>of</strong> ProVerif found in the currently available literature,<br />

which include the use <strong>of</strong> algebraic properties, like the Diffie-Hellm<strong>an</strong><br />

key exch<strong>an</strong>ge <strong>an</strong>d the eXclusive OR (XOR) operator, in the specification<br />

<strong>of</strong> <strong>security</strong> <strong>protocol</strong>s. ProVerif is used to verify <strong>security</strong> <strong>protocol</strong>s<br />

in some major fields, such <strong>as</strong> Bluetooth <strong>security</strong> <strong>an</strong>d electronic voting.<br />

By examining these practical examples we show how researchers have<br />

used ProVerif to verify <strong>security</strong> properties <strong>an</strong>d we describe the results<br />

obtained. We study comparisons made between ProVerif <strong>an</strong>d Scyther,<br />

YAPA <strong>an</strong>d the AVISPA toolkit on the subjects <strong>of</strong> efficiency, specificity<br />

<strong>an</strong>d usability.<br />

Keywords: ProVerif, Verifier Comparison, Automatic Verification, Security<br />

Protocols<br />

1 Introduction<br />

“Securing a computer system h<strong>as</strong> traditionally been a battle <strong>of</strong> wits:<br />

the penetrator tries to find holes, <strong>an</strong>d the designer tries to close them”<br />

– M. Gosser 1<br />

Automatic verification <strong>of</strong> <strong>security</strong> <strong>protocol</strong>s is a relatively new field where s<strong>of</strong>tware<br />

applications (<strong>verifier</strong>s) are used to prove <strong>security</strong> properties <strong>of</strong> <strong>protocol</strong>s.<br />

Verifiers help solve the problem <strong>of</strong> m<strong>an</strong>ually finding flaws in <strong>security</strong> <strong>protocol</strong>s.<br />

Different <strong>verifier</strong>s have been designed/developed in the l<strong>as</strong>t decades ( e.g. [3] [5]<br />

[17] [33] [35] [37] [39] ). In this paper we <strong>review</strong> ProVerif, a Prolog-b<strong>as</strong>ed <strong>verifier</strong><br />

[7]. ProVerif claims to use little memory <strong>an</strong>d to implement <strong>an</strong> efficient algorithm<br />

for proving <strong>security</strong> properties, like authentication <strong>an</strong>d secrecy [7]. In the face <strong>of</strong><br />

these claims we w<strong>an</strong>t to know how successful ProVerif is <strong>as</strong> <strong>an</strong> <strong>automatic</strong> <strong>verifier</strong><br />

for <strong>security</strong> <strong>protocol</strong>s. We begin to <strong>an</strong>swer this question by looking at practical<br />

examples <strong>of</strong> applications <strong>of</strong> ProVerif to verify real-world <strong>protocol</strong>s. The results<br />

1 Cited from Sharif Network Security Center website - http://nsc.sharif.edu/NSC/


obtained from these practical examples tell us how ProVerif is used in the field<br />

<strong>an</strong>d what problems researchers encountered using the tool. But what about the<br />

limitations <strong>of</strong> ProVerif itself? What are <strong>protocol</strong>s or parts or properties <strong>of</strong> <strong>protocol</strong>s<br />

which we might w<strong>an</strong>t to model in ProVerif, but are unable to? For inst<strong>an</strong>ce,<br />

it is difficult to model algebraic properties like XOR [28] <strong>an</strong>d Diffie-Hellm<strong>an</strong> key<br />

exch<strong>an</strong>ge [29] in ProVerif. We compare ProVerif to Scyther[17], YAPA[5] <strong>an</strong>d<br />

the AVISPA[3] toolkit, primarily focusing on the efficiency <strong>of</strong> the verification <strong>of</strong><br />

<strong>protocol</strong>s. ProVerif uses a technique called unification to prune the state space<br />

<strong>of</strong> the <strong>protocol</strong>. Unification allows ProVerif to <strong>as</strong>sert that some property holds<br />

for a larger part <strong>of</strong> the state space without examining all the states, effectively<br />

reducing the state space. We think that our <strong>review</strong> will lead to a better underst<strong>an</strong>ding<br />

<strong>of</strong> the re<strong>as</strong>ons that motivate the use <strong>of</strong> ProVerif for verifying <strong>security</strong><br />

<strong>protocol</strong>s.<br />

Org<strong>an</strong>isation <strong>of</strong> the paper. In Section 2 we formulate what it me<strong>an</strong>s for ProVerif<br />

to be successful. With this definition in mind, we look at practical examples<br />

where ProVerif is used <strong>as</strong> the <strong>verifier</strong> in Section 3, to determine the role it plays<br />

in the actual verification <strong>of</strong> <strong>protocol</strong>s. Section 4 describes limitations found by<br />

other researchers <strong>an</strong>d how these c<strong>an</strong> be resolved. Section 5 summarizes literature<br />

that describes how ProVerif compares to other <strong>automatic</strong> <strong>verifier</strong>s. We provide<br />

a conclusion to this paper in Section 6.<br />

2 Description <strong>of</strong> ProVerif<br />

The <strong>protocol</strong> <strong>verifier</strong> ProVerif w<strong>as</strong> developed by Bruno Bl<strong>an</strong>chet [7]. Because<br />

other <strong>protocol</strong> <strong>verifier</strong>s already existed before ProVerif 2 , the author claims that<br />

it distinguishes itself from the competition in three ways[7]:<br />

– ProVerif models attacks that <strong>an</strong> attacker c<strong>an</strong> perform. Such <strong>an</strong> attack might<br />

consist <strong>of</strong> multiple concurrent executions <strong>of</strong> the <strong>protocol</strong>. ProVerif does not<br />

limit the number <strong>of</strong> concurrent <strong>protocol</strong> runs that a modelled attacker may<br />

execute. It therefore is able to find attacks that require <strong>an</strong>y number <strong>of</strong> concurrent<br />

<strong>protocol</strong> runs.<br />

– It is fully <strong>automatic</strong>, i.e. after starting the <strong>verifier</strong>, it does not need <strong>an</strong>y user<br />

input to complete its t<strong>as</strong>k.<br />

– It does not signific<strong>an</strong>tly suffer from state space explosion.<br />

Security <strong>protocol</strong> researchers define <strong>protocol</strong>s with the arrow notation <strong>as</strong> described<br />

in [1]. When a user wishes to employ <strong>an</strong>y <strong>protocol</strong> <strong>verifier</strong>, he takes this<br />

<strong>protocol</strong> definition in arrow notation <strong>an</strong>d tr<strong>an</strong>slates it into instructions that are<br />

readable for his <strong>verifier</strong>. This set <strong>of</strong> instructions is called the <strong>protocol</strong> specification.<br />

Afterwards, the user provides the <strong>verifier</strong> with the specification, <strong>an</strong>d after<br />

some calculations, the <strong>verifier</strong> <strong>an</strong>nounces whether certain <strong>as</strong>sertions about the<br />

<strong>protocol</strong> were valid.<br />

2 For example NRL ([33]) <strong>an</strong>d Isabelle ([37])


ProVerif uses the concept <strong>of</strong> a Horn clause 3 <strong>as</strong> the unit <strong>of</strong> its specification<br />

l<strong>an</strong>guage. In this context, a Horn clause is <strong>an</strong> inference rule about knowledge<br />

<strong>of</strong> the adversary. An example <strong>of</strong> such a Horn clause might be “If one h<strong>as</strong> a<br />

ciphertext <strong>an</strong>d the corresponding key, one might also know the plaintext”. A set<br />

<strong>of</strong> Horn clauses is called a Horn theory. Therefore, one could say that <strong>protocol</strong><br />

specifications in ProVerif are Horn theories. The developers <strong>of</strong> ProVerif created<br />

the possibility to specify the <strong>protocol</strong> in <strong>an</strong> alternative l<strong>an</strong>guage, the applied pi<br />

calculus 4 , which is convenient for people already familiar with this specification<br />

framework.<br />

When a user tr<strong>an</strong>slates a <strong>protocol</strong> definition to a ProVerif <strong>protocol</strong> specification,<br />

he specifies the possible ways <strong>an</strong> attacker c<strong>an</strong> gather more knowledge. In<br />

ProVerif, this amounts to three different types <strong>of</strong> declaration:<br />

– The user models initial knowledge <strong>of</strong> the attacker <strong>as</strong> a tautology, a logical<br />

statement without conditions. An example <strong>of</strong> such a clause would be initial<br />

knowledge <strong>of</strong> the public keys <strong>of</strong> all particip<strong>an</strong>ts <strong>of</strong> the <strong>protocol</strong>.<br />

– Computational capabilities are modelled in separate clauses. For example, if<br />

the attacker h<strong>as</strong> posession <strong>of</strong> a (decryption) key <strong>an</strong>d a ciphertext, he may<br />

use it to decrypt the ciphertext if it is encrypted with that key.<br />

– A <strong>protocol</strong> definition that is written in the arrow notation contains a list <strong>of</strong><br />

<strong>protocol</strong> steps which necessesarily occur in that order. The user adds rules<br />

that describe these steps - one for each step in the <strong>protocol</strong> definition. To<br />

ensure the proper order <strong>of</strong> messages is preserved, the application <strong>of</strong> such a<br />

rule may only occur if the previous steps have already occurred.<br />

The first <strong>an</strong>d the third step in the tr<strong>an</strong>slation <strong>of</strong> the <strong>protocol</strong> definition are<br />

straightforward. Each element in the <strong>protocol</strong> definition corresponds with a rule<br />

in the <strong>protocol</strong> specification. However, the second step might require some additional<br />

work, especially if mathematical properties are directly related to the<br />

functionality <strong>of</strong> the <strong>protocol</strong>. Examples <strong>of</strong> such constructs are Diffie-Hellm<strong>an</strong> key<br />

exch<strong>an</strong>ge <strong>an</strong>d the use <strong>of</strong> the XOR-operator. The difficulties <strong>an</strong>d limitations <strong>of</strong><br />

the implementation <strong>of</strong> such constructs is discussed at length in 4.<br />

The user formulates <strong>an</strong> <strong>as</strong>sertion about the knowledge <strong>of</strong> the attacker, such <strong>as</strong><br />

‘The attacker knows the secret s’. Now, ProVerif will try to construct a sequence<br />

<strong>of</strong> steps for the attacker to achieve the fact that is stated in the <strong>as</strong>sertion. The<br />

idea behind the algorithm at the heart <strong>of</strong> ProVerif is that it applies the rules<br />

stated in the <strong>protocol</strong> specification in <strong>an</strong> efficient way. However, for the algorithm<br />

to terminate when no attack exists, it is necessary to apply some unification, i.e.<br />

to recognize when two states <strong>of</strong> <strong>protocol</strong> execution are effectively ‘the same’. If<br />

we merge two such effectively identical states, we could limit the space we need<br />

to search. The intermediate representation <strong>of</strong> the states <strong>of</strong> the <strong>protocol</strong> run in<br />

ProVerif are simple enough to enable it to effectively unify such states [7].<br />

3<br />

Horn clauses are a concept from Prolog programming <strong>an</strong>d are introduced at length<br />

in [13].<br />

4<br />

Fournet <strong>an</strong>d Abadi describe the applied pi calculus in [23].


The exact capabilities <strong>of</strong> the attacker are modelled according to the threat<br />

model <strong>as</strong> proposed by Dolev <strong>an</strong>d Yao, which is known <strong>as</strong> the Dolev-Yao threat<br />

model [21]. In short, this amounts to the following three <strong>as</strong>sumptions:<br />

– Encryption schemes are perfect - no keys leak from the key infr<strong>as</strong>tructure,<br />

the encrypted messages are unretrievable without the key, everybody h<strong>as</strong><br />

access to all public keys.<br />

– The parties in the network c<strong>an</strong> perform the encryption <strong>an</strong>d decryption operations<br />

themselves - they do not require <strong>an</strong> external party to perform these<br />

t<strong>as</strong>ks for them.<br />

– The attacker <strong>as</strong>sumes the role <strong>of</strong> <strong>an</strong> ‘active adversary’. More precisely, he<br />

c<strong>an</strong> intercept <strong>an</strong>d read <strong>an</strong>y message that is sent on the network <strong>an</strong>d inject<br />

<strong>an</strong>y message that contains information he knows through previous actions.<br />

When studying the accuracy <strong>of</strong> a tool for <strong>as</strong>sessing <strong>security</strong> properties, it is<br />

common to discuss the specificity <strong>an</strong>d the sensitivity 5 <strong>of</strong> the tool. The specificity<br />

is the extent to which the tool is able to declare that no attacks exist for a<br />

<strong>protocol</strong> that indeed does not allow attacks, i.e. to prevent false positives. The<br />

sensitivity is the ability <strong>of</strong> the tool to correctly recognize insecure <strong>protocol</strong>s. In a<br />

<strong>security</strong> context, it is clear that a high sensitivity is more import<strong>an</strong>t th<strong>an</strong> a high<br />

specificity. After all, we would rather have a hundred false positives reported<br />

on our <strong>protocol</strong> th<strong>an</strong> one potential attack that goes unnoticed. However, the<br />

usability <strong>of</strong> the tool greatly depends on both the sensitivity <strong>an</strong>d the specificity.<br />

If a tool always reports that <strong>an</strong> attack exists, it would be prudent, yet not very<br />

useful. In ProVerif, certain <strong>as</strong>sumptions <strong>an</strong>d abstractions are introduced. All <strong>of</strong><br />

these, however, only give more power to the attacker, thereby at most raising the<br />

number <strong>of</strong> false positives, yet never missing <strong>an</strong> attack that is indeed legitimate.<br />

For a discussion <strong>of</strong> approximations in ProVerif, see subsection 4.1.<br />

The algorithm behind ProVerif always terminates. This is not guar<strong>an</strong>teed <strong>automatic</strong>ally,<br />

but me<strong>as</strong>ures have been taken to <strong>as</strong>sure its termination. The most<br />

notable <strong>of</strong> these me<strong>as</strong>ures is the limitation to the depth <strong>of</strong> the nesting <strong>of</strong> terms<br />

in <strong>protocol</strong> messages. If a message exceeds this limit, the message is replaced by<br />

a new variable. Like the other approximations, this does lessen the sensitivity,<br />

since <strong>an</strong>y attack that exists in the non-limited c<strong>as</strong>e still exists in the depthlimited<br />

c<strong>as</strong>e.<br />

ProVerif is rele<strong>as</strong>ed under the GNU GPL 6 , which me<strong>an</strong>s that the source code<br />

<strong>of</strong> the program is freely available on the web. Works derived from the source<br />

<strong>of</strong> ProVerif must also be licensed under the GNU GPL. For such a program,<br />

this c<strong>an</strong> be a great incentive for potential new users, since they c<strong>an</strong> check the<br />

validity <strong>of</strong> the implementation. Second, it becomes possible to write additions<br />

<strong>an</strong>d extensions for ProVerif.<br />

5<br />

These terms are frequently used in the medical world. A further expl<strong>an</strong>ation in that<br />

context c<strong>an</strong> be found at [31].<br />

6<br />

GNU General Public License version 2, see for more details http://www.gnu.org/<br />

licenses/gpl-2.0.html.


3 Practical applications<br />

The verification <strong>of</strong> <strong>protocol</strong>s with ProVerif is the subject <strong>of</strong> <strong>an</strong> extensive set<br />

<strong>of</strong> literature (e.g.: [2] [4] [8] [9] [11] [25] [36]). ProVerif is used in m<strong>an</strong>y different<br />

fields, such <strong>as</strong> secure file sharing, electronic voting <strong>an</strong>d Bluetooth <strong>security</strong>. For<br />

each <strong>of</strong> these fields we will give a summary <strong>of</strong> how the authors used ProVerif<br />

in their research <strong>an</strong>d try to find their re<strong>as</strong>on to choose ProVerif. The list <strong>of</strong><br />

practical examples is not exhaustive but does give <strong>an</strong> impression <strong>of</strong> where <strong>an</strong>d<br />

how ProVerif is used. The fields that we discuss in more detail are selected<br />

because <strong>of</strong> their diversity <strong>an</strong>d the wide impact <strong>of</strong> the verified <strong>protocol</strong>s in the<br />

modern world.<br />

3.1 Secure file sharing on unstrusted storage<br />

Private personal data, such <strong>as</strong> family documents <strong>an</strong>d fin<strong>an</strong>cial data, is stored<br />

in various ways, for example: on a laptop, USB-drives <strong>an</strong>d shared mediums. It<br />

is import<strong>an</strong>t to secure this data because <strong>of</strong> the possibility that <strong>an</strong> attacker will<br />

use the data for other, possibly malicious, purposes.<br />

Plutus is a file system b<strong>as</strong>ed on a storage design that does not rely on storage<br />

servers to provide strong secrecy <strong>an</strong>d integrity guar<strong>an</strong>tees [8]. Bl<strong>an</strong>chet <strong>an</strong>d<br />

Chaudhuri have used ProVerif to prove that secrecy is preserved by Plutus. They<br />

were not able to prove this for the integrity property. In this c<strong>as</strong>e, violating the<br />

integrity property <strong>of</strong> the <strong>protocol</strong> me<strong>an</strong>s that <strong>an</strong> attacker c<strong>an</strong> store data in <strong>an</strong><br />

older version while the honest readers think only newer versions are corrupted<br />

by <strong>an</strong> attacker [8]. The researchers used the <strong>an</strong>alysis <strong>of</strong> ProVerif to construct a<br />

fix using server-verified writes, which were not present in the original <strong>protocol</strong>.<br />

Using ProVerif the authors proved the integrity property for the <strong>protocol</strong> after<br />

the fix <strong>an</strong>d w<strong>as</strong> also able to prove a strong integrity property, which stated that<br />

data read from the server w<strong>as</strong> not only written by <strong>an</strong> authorized party, but also<br />

<strong>of</strong> the required freshness.<br />

The attacks found by ProVerif were not present in the fixed version <strong>of</strong> the<br />

authors, thereby preserving secrecy <strong>an</strong>d restoring integrity in Plutus. We couldn’t<br />

find explicit re<strong>as</strong>ons for choosing ProVerif to verify Plutus, but the authors did<br />

state that using the Dolev-Yao threat model allowed them to automate the pro<strong>of</strong>s<br />

more e<strong>as</strong>ily th<strong>an</strong> using the computational model, which they report to be more<br />

concrete [8].<br />

3.2 Electronic voting<br />

Electronic voting is a suitable alternative for regular paper-b<strong>as</strong>ed voting [10]. It<br />

enables citizens in a democracy to elect their representatives by voting electronically.<br />

Verifying the <strong>protocol</strong>s used by electronic voting machines is import<strong>an</strong>t,<br />

because the integrity <strong>of</strong> the election process is fundamental to the integrity <strong>of</strong><br />

democracy itself [26]. The influence <strong>of</strong> attackers that are able to signific<strong>an</strong>tly


alter the results <strong>of</strong> <strong>an</strong> election is great, so the <strong>protocol</strong>s used must be <strong>as</strong> secure<br />

<strong>as</strong> possible. M<strong>an</strong>y researchers have found problems with currently used <strong>protocol</strong>s<br />

by electronic voting machines (e.g.: [22] [26] [38]).<br />

Automatic <strong>protocol</strong> <strong>verifier</strong>s c<strong>an</strong> be used to verify the <strong>protocol</strong>s used in electronic<br />

voting devices. To our knowledge, ProVerif h<strong>as</strong> been used to verify two<br />

electronic voting <strong>protocol</strong>s [4][27]. Ry<strong>an</strong> <strong>an</strong>d Kremer were able to prove the fairness<br />

<strong>an</strong>d eligibility properties <strong>of</strong> the FOO 92 [10] <strong>protocol</strong>. They were unable to<br />

prove the privacy property <strong>of</strong> the <strong>protocol</strong>, because ProVerif’s ability to prove<br />

observational equivalence between processes w<strong>as</strong> not complete at the time <strong>of</strong><br />

their research 7 [27]. They proved it m<strong>an</strong>ually without ProVerif. Their choise <strong>of</strong><br />

ProVerif seems to be b<strong>as</strong>ed on a suggestion from Bruno Bl<strong>an</strong>chet himself [27].<br />

Another group used ProVerif to verify the Juels, Catal<strong>an</strong>o <strong>an</strong>d Jakobsson <strong>protocol</strong>,<br />

which is the b<strong>as</strong>is for the development <strong>of</strong> m<strong>an</strong>y modern election schemes<br />

for remote voting[4]. They suggest a general approach for verifying voting <strong>protocol</strong>s<br />

<strong>an</strong>d were able to prove the vote-privacy property but they encountered<br />

problems similar to those in [27]: They could not complete the pro<strong>of</strong> without<br />

some hum<strong>an</strong> guid<strong>an</strong>ce to the verification process.<br />

3.3 Bluetooth <strong>security</strong><br />

Bluetooth is becoming incre<strong>as</strong>ingly ubiquitous <strong>an</strong>d is currently integrated in<br />

more th<strong>an</strong> one billion devices worldwide 8 . For all these devices to send data<br />

over a secure connection, the Bluetooth 2.0 specification 9 describes a <strong>protocol</strong>,<br />

called Device Pairing, where two devices have to agree on a symmetrical key. In<br />

2007 the Bluetooth specification w<strong>as</strong> updated to version 2.1 which requires the<br />

Simple Pairing <strong>protocol</strong> for communication between Bluetooth 2.1 devices, but<br />

is backwards compatible with Device Pairing for older devices. We now look at<br />

how ProVerif is used to <strong>an</strong>alyze these <strong>protocol</strong>s.<br />

Device pairing in Bluetooth. The Device Pairing <strong>protocol</strong> used in the Bluetooth<br />

2.0 specification h<strong>as</strong> shown to be vulnerable to <strong>an</strong> attacker that impersonates a<br />

Bluetooth device after eavesdropping on a successful pairing session[24] <strong>an</strong>d w<strong>as</strong><br />

proven by the use <strong>of</strong> ProVerif [11]. The weakness <strong>of</strong> the Device Pairing <strong>protocol</strong><br />

is the (guessable) hum<strong>an</strong>ly memorable secret key. All that <strong>an</strong> attacker needs to<br />

know is the secret key to be able to impersonate a device [11]. ProVerif is used<br />

to show that the observational equivalence does not hold for Bluetooth device<br />

pairing [11]. This me<strong>an</strong>s <strong>an</strong> attacker c<strong>an</strong> learn information from the messages<br />

communicated.<br />

7 Bl<strong>an</strong>chet <strong>an</strong>d Fournet have since published [9]. Bl<strong>an</strong>chet added the mentioned func-<br />

tionality to ProVerif.<br />

8 Bluetooth exceeds one billion devices, see http://www.bluetooth.com/Bluetooth/<br />

Press/SIG/BLUETOOTH\ WIRELESS\ TECHNOLOGY\ SURPASSES\ ONE\ BILLION\<br />

DEVICES.htm<br />

9 Bluetooth 2.0 specification, see for more information: http://www.bluetooth.com/<br />

NR/rdonlyres/1F6469BA-6AE7-42B6-B5A1-65148B9DB238/840/Core v200 EDR.zip


Bluetooth 2.1. In Bluetooth 2.1, Simple Pairing h<strong>as</strong> four modes <strong>of</strong> operation<br />

b<strong>as</strong>ed on the hardware capabilities <strong>of</strong> the device: Just Works, Numeric Comparison,<br />

P<strong>as</strong>skey Entry <strong>an</strong>d Out <strong>of</strong> B<strong>an</strong>d. Because <strong>of</strong> a known attack on the Just<br />

Works <strong>an</strong>d P<strong>as</strong>skey Entry operating modes, Nilsson, Larson <strong>an</strong>d Erl<strong>an</strong>d have<br />

developed a <strong>protocol</strong> which is not vulnerable to the M<strong>an</strong> In The Middle-attack<br />

<strong>an</strong>ymore[36]. They used ProVerif to prove the new scheme for authentication,<br />

named ACDHEKE, <strong>an</strong>d have shown that the attack is no longer possible for the<br />

Just Works <strong>an</strong>d P<strong>as</strong>skey Entry operating modes.<br />

For the Numeric Comparison operating mode <strong>of</strong> Simple Pairing, Ch<strong>an</strong>g <strong>an</strong>d<br />

Shmatikov have employed ProVerif to show that strong authentication fails for<br />

the <strong>protocol</strong>. In strong authentication with Simple Pairing, the user must confirm<br />

the h<strong>as</strong>h, visible on communicating devices A <strong>an</strong>d B, generated from the initial<br />

keys. ProVerif proved that strong authentication does not hold when a device A<br />

is executing multiple sessions with <strong>an</strong>other device B[11]. The h<strong>as</strong>h value that is<br />

shown to the user may not be the h<strong>as</strong>h value <strong>of</strong> the session the user thinks he is<br />

accepting, thereby accepting the wrong session <strong>as</strong> successful.<br />

Bluetooth 3.0 In April, 2009 the Bluetooth Special Interest Group adopted the<br />

Bluetooth 3.0 specification. Bluetooth 3.0 remains backwards compatible with<br />

previous versions, so it is susceptible to the same attacks when used to communicate<br />

with devices using older versions <strong>of</strong> Bluetooth. This me<strong>an</strong>s that the<br />

<strong>an</strong>alysis made with ProVerif is still relev<strong>an</strong>t for some time while the market is<br />

adopting Bluetooth 3.0.<br />

We identified two main re<strong>as</strong>ons why Ch<strong>an</strong>g <strong>an</strong>d Shmatikov used ProVerif for<br />

their <strong>an</strong>alysis <strong>of</strong> the Bluetooth. First, ProVerif supports the verification <strong>of</strong> weak<br />

secrecy (which w<strong>as</strong> useful because <strong>of</strong> the low-entropy secrets used in Bluetooth)<br />

[11]. Second, they used correspondence <strong>as</strong>sertions for modeling authentication<br />

[11].<br />

4 Limitations <strong>of</strong> ProVerif<br />

In the previous chapter, we have considered applications <strong>of</strong> ProVerif, which<br />

brings up the question what the limitations <strong>of</strong> ProVerif are: what are <strong>protocol</strong>s<br />

or parts or properties <strong>of</strong> <strong>protocol</strong>s which we might w<strong>an</strong>t to model in ProVerif, but<br />

are unable to? About which types <strong>of</strong> problem is ProVerif unable to yield a (valid)<br />

verdict <strong>as</strong> to whether the required <strong>as</strong>sertions are satisfied? We will describe<br />

the limitations we have encountered in the literature <strong>an</strong>d discuss whether the<br />

problems c<strong>an</strong> be e<strong>as</strong>ily solved, or seem to be inherent to ProVerif.<br />

4.1 Approximations in ProVerif<br />

The developers <strong>of</strong> ProVerif have made some approximations in their formalization<br />

<strong>of</strong> <strong>security</strong> <strong>protocol</strong>s[7]. According to them, these approximations are key<br />

to limiting the number <strong>of</strong> runs <strong>of</strong> <strong>protocol</strong>s. Unsurprisingly, these could theoretically<br />

be <strong>of</strong> influence to the sensitivity <strong>an</strong>d specificity <strong>of</strong> ProVerif.


First, they have not built in a source <strong>of</strong> r<strong>an</strong>domness with which to generate<br />

nonces. Instead they model nonces <strong>as</strong> a function <strong>of</strong> the current environment,<br />

i.e. the <strong>protocol</strong> execution up until the point <strong>of</strong> nonce generation. Therefore, two<br />

nonces are equal if <strong>an</strong>d only if the entire <strong>protocol</strong> execution, including adversarial<br />

behaviour, is exactly the same in both c<strong>as</strong>es. This gives the adversary slightly<br />

more power, which only lowers the specificity <strong>an</strong>d not the sensitivity <strong>of</strong> ProVerif.<br />

Furthermore, no practical c<strong>as</strong>es are known (according to [7]) where this results<br />

in false positives.<br />

Second, ProVerif does not limit repetition <strong>of</strong> <strong>protocol</strong> rules. Imagine a <strong>protocol</strong><br />

run where a party uses one <strong>of</strong> the rules in the <strong>protocol</strong> definition multiple times,<br />

without this being allowed in the definition. Normally, the other party will only<br />

respond to the first inst<strong>an</strong>ce <strong>of</strong> the <strong>protocol</strong> rule <strong>as</strong> specified. He will not respond<br />

to the other inst<strong>an</strong>ces because he is no longer awaiting a message that is<br />

formatted thus. ProVerif on the other h<strong>an</strong>d does not implement this behaviour,<br />

<strong>an</strong>d instead allows the parties to use each rule <strong>an</strong>y number <strong>of</strong> times. However,<br />

like the previous approximation, this c<strong>an</strong> only result in more false positives, but<br />

h<strong>as</strong> no influence on the sensitivity <strong>of</strong> the <strong>protocol</strong>.<br />

4.2 XOR<br />

Multiple <strong>protocol</strong>s use the logical XOR-operator, <strong>of</strong>ten denoted by ⊕, <strong>as</strong> a<br />

part <strong>of</strong> their definition. For example, the one-time pad, a textbook <strong>protocol</strong> that<br />

c<strong>an</strong> be found in <strong>an</strong>y cryptography textbook such <strong>as</strong> [34], relies heavily on the<br />

mathematical properties <strong>of</strong> the XOR-operator. Therefore, it is a requirement <strong>of</strong> a<br />

general <strong>protocol</strong> <strong>verifier</strong> that it c<strong>an</strong> be applied to questions about such <strong>protocol</strong>s.<br />

ProVerif, however, is not concerned with the algebraic structure <strong>of</strong> the primitives<br />

used in <strong>protocol</strong>s, buth rather with their general structure, thus being unable to<br />

directly <strong>an</strong>swer questions about the <strong>protocol</strong>s that use, for example, the XORoperator.[28]<br />

Küsters <strong>an</strong>d Truderung [28] considered this problem <strong>an</strong>d have described a solution<br />

which requires the user to formulate his <strong>protocol</strong> in a special form which<br />

they call ⊕-linear. A term in a Horn theory is called ⊕-linear if for every subterm<br />

<strong>of</strong> the form t ⊕ t ′ it is true that either t or t ′ does not contain variables. A Horn<br />

theory itself is called ⊕-linear if all terms in it are ⊕-linear, with the possible<br />

exception <strong>of</strong> the rule that enables the intruder to perform the XOR-operation.<br />

The authors <strong>of</strong> the paper have provided <strong>an</strong> algorithm with which to rewrite a ⊕linear<br />

Horn theory to a Horn theory that does not contain <strong>an</strong>y XOR operations.<br />

This XOR-free Horn theory c<strong>an</strong> then be presented to ProVerif for verification.<br />

The correctness <strong>of</strong> the algorithm provided by the authors implies that ProVerif<br />

will find all attacks it would have found in the old specification <strong>of</strong> the <strong>protocol</strong>,<br />

combined with possible new attacks that are the result <strong>of</strong> the algebraic structure<br />

<strong>of</strong> the XOR operation. The authors do not discuss the complexity <strong>of</strong> their algorithm<br />

in [28]. However, when they refer to this work in [29], they posit that their<br />

algorithm for XOR rewriting ‘suffers from <strong>an</strong> exponential blow-up’. The authors


have also published a tool, XOR-ProVerif, to perform the mentioned tr<strong>an</strong>slation<br />

<strong>automatic</strong>ally.<br />

4.3 Diffie-Hellm<strong>an</strong><br />

Another primitive that is <strong>of</strong>ten employed in cryptographic <strong>protocol</strong>s is Diffie-<br />

Hellm<strong>an</strong> key exch<strong>an</strong>ge[20]. In its b<strong>as</strong>ic form, the method enables two particip<strong>an</strong>ts<br />

in a <strong>protocol</strong> run to construct a shared key without <strong>an</strong>y previously shared secret.<br />

This key c<strong>an</strong> be used in subsequent communications between these parties.<br />

However, the nature <strong>of</strong> the <strong>protocol</strong> depends on the nature <strong>of</strong> (discrete) exponentiation.<br />

For example, the method works because exponentiation in a group<br />

is commutative (i.e. a xy = a yx for <strong>an</strong>y a, x <strong>an</strong>d y). A <strong>protocol</strong> <strong>verifier</strong> such <strong>as</strong><br />

ProVerif does not enable a researcher to explicitly describe the algebraic properties<br />

used in the <strong>protocol</strong>s that he checks. Therefore, <strong>as</strong> w<strong>as</strong> also described in<br />

section 4.2 for the c<strong>as</strong>e <strong>of</strong> the XOR, it is difficult to directly <strong>as</strong>sert properties <strong>of</strong><br />

a <strong>protocol</strong> that uses such primitives.[29]<br />

However, this problem w<strong>as</strong> resolved recently, <strong>as</strong> a method w<strong>as</strong> constructed by<br />

Küsters <strong>an</strong>d Truderung in [29] to rewrite <strong>protocol</strong>s using Diffie-Hellm<strong>an</strong> exponentiation<br />

to a <strong>protocol</strong> definition without such primitives. This definition c<strong>an</strong><br />

in turn be tr<strong>an</strong>slated to a specification consisting <strong>of</strong> Horn clauses. ProVerif will<br />

then be able to <strong>an</strong>alyze this rewritten specification. The method that is discussed<br />

is able to implement both the commutativity <strong>of</strong> exponentiation <strong>an</strong>d the<br />

calculation <strong>of</strong> the multiplicative inverse <strong>of</strong> <strong>an</strong> element (i.e. exponentiation with<br />

exponent −1). More specifically, a specific cl<strong>as</strong>s <strong>of</strong> terms is discussed, called<br />

exponent-ground terms. These terms have a constraint on the nature <strong>of</strong> the exponents<br />

that occur in them: these may not contain <strong>an</strong>y variables or further<br />

exponentiations. The authors argue that this does not limit the number <strong>of</strong> <strong>protocol</strong>s<br />

employing Diffie-Hellm<strong>an</strong> that c<strong>an</strong> be <strong>an</strong>alyzed. They proceed by proving<br />

the rewritability <strong>of</strong> Horn theories that consist <strong>of</strong> only exponent-ground terms<br />

to Horn theories that contain no exponentiation at all. They also include <strong>an</strong><br />

explicit rewriting method <strong>an</strong>d demonstrate it in <strong>an</strong> example. The authors have<br />

also published a tool, DH-ProVerif, to perform the mentioned tr<strong>an</strong>slation <strong>automatic</strong>ally.<br />

Küsters <strong>an</strong>d Truderung claim that their method is efficient, because<br />

<strong>of</strong> the polynomial running time <strong>of</strong> their algorithm. The algorithms presented in<br />

earlier work are sometimes less efficient, <strong>an</strong>d sometimes focus on other algebraic<br />

properties <strong>of</strong> the Diffie-Hellm<strong>an</strong> exponentiation. For example, the authors <strong>of</strong> [12]<br />

provide a solution that is not known to have polynomial running time, though<br />

it h<strong>an</strong>dles a broader r<strong>an</strong>ge <strong>of</strong> algebraic properties.<br />

4.4 R<strong>an</strong>domness<br />

In most modern-day <strong>protocol</strong>s, some r<strong>an</strong>domness is used in <strong>as</strong>ymmetric encryption.<br />

If no r<strong>an</strong>domness would be used, <strong>an</strong> attacker could upon receipt <strong>of</strong> a<br />

ciphertext e<strong>as</strong>ily encrypt a message with the corresponding puplic key <strong>an</strong>d then


check for equality <strong>of</strong> the ciphertexts to infer equality <strong>of</strong> the plaintexts. This potential<br />

problem is e<strong>as</strong>ily solved by appending a fixed-length r<strong>an</strong>dom string at the<br />

end <strong>of</strong> the plaintext before encryption. After decryption, the recipient removes<br />

the appended r<strong>an</strong>dom bytes <strong>an</strong>d h<strong>as</strong> the original plaintext. When studying <strong>protocol</strong>s<br />

that employ such techniques, some form <strong>of</strong> labeling is used to explicitly<br />

denote the r<strong>an</strong>domness used in the encryption - for example, when encrypting<br />

plaintext m together with r<strong>an</strong>domness l using key k, we could denote this with<br />

the label in a superscript:<br />

{m} l k.<br />

However, according to Cortier et al. ([15]), none <strong>of</strong> the currently popular tools 10<br />

<strong>of</strong>fer capabilities for re<strong>as</strong>oning in <strong>protocol</strong> models using labels. Instead <strong>of</strong> extending<br />

the underlying framework <strong>of</strong> a tool to encomp<strong>as</strong>s labels, they proceed<br />

to formulate a theorem that makes such extensions unnecessary. For a large<br />

cl<strong>as</strong>s <strong>of</strong> <strong>protocol</strong>s, validity <strong>of</strong> the <strong>protocol</strong> without the labels (which is verifiable<br />

in <strong>an</strong> <strong>automatic</strong> <strong>verifier</strong>), implies validity <strong>of</strong> the <strong>protocol</strong> with the labels (i.e.<br />

with r<strong>an</strong>domness). This large cl<strong>as</strong>s <strong>of</strong> <strong>protocol</strong>s includes <strong>protocol</strong>s using currently<br />

st<strong>an</strong>dard formulations for secrecy <strong>an</strong>d authenticity. Moreover, they have<br />

constructed a module for AVISPA that checks whether a <strong>protocol</strong> that uses r<strong>an</strong>domness<br />

fulfills the requirements <strong>of</strong> the theorem, <strong>an</strong>d proceeds to perform the<br />

tr<strong>an</strong>slation to a nonlabelled <strong>protocol</strong> which c<strong>an</strong> in turn be verified using the<br />

original AVISPA mech<strong>an</strong>isms. Such a module might also be constructable for<br />

ProVerif, which would resolve this limitation in the <strong>protocol</strong> verification model.<br />

5 Comparison with other <strong>verifier</strong>s<br />

ProVerif is a state-<strong>of</strong>-the-art <strong>automatic</strong> <strong>protocol</strong> <strong>verifier</strong>, but is not the only <strong>verifier</strong><br />

dedicated to <strong>security</strong> <strong>protocol</strong>s. Other <strong>verifier</strong>s include Athena[39], AVISPA[3],<br />

C<strong>as</strong>per [32], Isabelle[37], NRL[33], Scyther[17] <strong>an</strong>d YAPA[5]. These <strong>verifier</strong>s are<br />

all b<strong>as</strong>ed on the Dolev-Yao threat model [21].<br />

Our main goal is to find pro<strong>of</strong> for the efficiency claims made in the original<br />

version <strong>of</strong> ProVerif. We briefly compare the soundness <strong>of</strong> the <strong>verifier</strong>s by looking<br />

at the attack traces they provide to the user. Attack traces are detailed traces<br />

<strong>of</strong> how the <strong>verifier</strong> constructed the attack.<br />

ProVerif uses Prolog rules <strong>an</strong>d implements a solving algorithm that is efficient<br />

because <strong>of</strong> overapproximations [7]. Other <strong>verifier</strong>s like Interrogator[35] <strong>an</strong>d NRL<br />

have implemented similar formalisms. Relative to these <strong>verifier</strong>s, ProVerif uses a<br />

more abstract representation <strong>of</strong> <strong>protocol</strong>s. For example, it forgets the number <strong>of</strong><br />

times a message appears <strong>an</strong>d only remembers that it h<strong>as</strong> appeared. This enables<br />

a f<strong>as</strong>ter <strong>an</strong>d simpler <strong>an</strong>alysis <strong>of</strong> a <strong>protocol</strong> [7].<br />

10 They mention ProVerif, C<strong>as</strong>per[32], Athena[39] <strong>an</strong>d AVISPA[3].


Most existing <strong>protocol</strong> <strong>verifier</strong>s b<strong>as</strong>ed on model checking suffer from the problem<br />

<strong>of</strong> state space explosion [7]. The solution generally implemented is limiting the<br />

number <strong>of</strong> runs <strong>of</strong> the <strong>protocol</strong>. The problem is that when <strong>an</strong> attack exists,<br />

which need more runs <strong>of</strong> the <strong>protocol</strong> to be discovered, it will not be found by<br />

these <strong>verifier</strong>s [7]. ProVerif solves the state space explosion by using unification<br />

techniques [7] (see Section 2).<br />

5.1 Efficiency<br />

We have found a few studies that compare <strong>verifier</strong>s b<strong>as</strong>ed on efficiency, but<br />

little research h<strong>as</strong> been done on this subject. Cremers <strong>an</strong>d Lafourcade compared<br />

the efficiency <strong>of</strong> AVISPA (which consists <strong>of</strong> the <strong>verifier</strong>s CL-Atse, OFMC, Sat-<br />

MC <strong>an</strong>d TA4SP), Scyther <strong>an</strong>d ProVerif. They found that, in general, ProVerif<br />

shows the best time perform<strong>an</strong>ce due to the abstract representation <strong>of</strong> nonces<br />

<strong>an</strong>d that it quickly provides the user with <strong>an</strong> <strong>an</strong>alysis for <strong>an</strong> unbounded number<br />

<strong>of</strong> runs [18]. The second f<strong>as</strong>test <strong>verifier</strong> Scyther is interesting, because it doesn’t<br />

use approximation methods like ProVerif to achieve a f<strong>as</strong>t full verification <strong>of</strong> the<br />

<strong>security</strong> <strong>protocol</strong>. Scyther <strong>an</strong>d ProVerif both achieved a full verification within<br />

0.001 seconds for the Needham-Schroeder <strong>an</strong>d Needham-Schroeder-Lowe <strong>protocol</strong>s<br />

[18]. In the c<strong>as</strong>e <strong>of</strong> Needham-Schroeder, ProVerif found three real attacks<br />

on the <strong>protocol</strong> in the same time that Scyther only found two attacks.<br />

Proving secrecy . When comparing the results for various <strong>verifier</strong>s that are presented<br />

in [18], we note that for proving secrecy, Scyther, TA4SP <strong>an</strong>d ProVerif<br />

provide near-zero timings. The <strong>verifier</strong>s Sat-MC, OFMC <strong>an</strong>d CL-Atse follow <strong>an</strong><br />

exponential curve relative to the number <strong>of</strong> runs. For more complex <strong>protocol</strong>s<br />

like TLS[19] <strong>an</strong>d EKE[6] the results differ slightly. Scyther also follows <strong>an</strong> exponential<br />

time curve for this particular <strong>protocol</strong> but is still much f<strong>as</strong>ter then<br />

Sat-MC, OFMC <strong>an</strong>d CL-Atse [18]. ProVerif is const<strong>an</strong>t in time (around 0.5 seconds<br />

per run). Another <strong>protocol</strong> that is used for the comparison is TLS. Here,<br />

ProVerif, Scyther <strong>an</strong>d TA4SP show to be relatively const<strong>an</strong>t <strong>an</strong>d differ less th<strong>an</strong><br />

0.1 seconds from each other per run.<br />

Proving authentication . Where ProVerif w<strong>as</strong> the f<strong>as</strong>test tool for proving secrecy<br />

properties <strong>of</strong> <strong>protocol</strong>s, the results differ slightly for the authentication properties.<br />

In general, ProVerif <strong>an</strong>d Scyther are again the f<strong>as</strong>test <strong>verifier</strong>s for the<br />

Needham-Schroeder <strong>an</strong>d TLS <strong>protocol</strong>s. For the EKE <strong>protocol</strong>, ProVerif w<strong>as</strong><br />

the slowest <strong>of</strong> the <strong>verifier</strong>s considered [18]. The authors state that this is because<br />

ProVerif doesn’t support equational theories very well (like XOR, discussed in<br />

Section 4.2) [18].<br />

Static equivalences . Another study compares the efficiency <strong>of</strong> YAPA to ProVerif.<br />

YAPA is a <strong>verifier</strong> which provides a generic procedure for deducibility <strong>an</strong>d static<br />

equivalences. Deducibility is the notion that some piece <strong>of</strong> data is retrievable<br />

from a finite set <strong>of</strong> messages. If the attacker c<strong>an</strong>not distinguish between two<br />

sequences <strong>of</strong> messages, the messages are said to be statically equivalent [14].


When static equivalence holds for some sequence <strong>of</strong> messages then it is not<br />

possible for the attacker to find <strong>an</strong> underlying pattern. For example, guessing<br />

attacks are possible if the attacker c<strong>an</strong> detect some pattern in the data.<br />

The study, comparing YAPA to ProVerif, concludes that YAPA is one or two<br />

orders <strong>of</strong> magnitude f<strong>as</strong>ter th<strong>an</strong> ProVerif in checking static equivalences[5]. This<br />

c<strong>an</strong> be explained by the fact that YAPA is dedicated to proving static equivalences<br />

<strong>an</strong>d that it is no surprise that the more general tool ProVerif is slower[5].<br />

The authors state that the more complex preprocessing <strong>of</strong> the rewrite system in<br />

ProVerif is one <strong>of</strong> the re<strong>as</strong>ons why it is slower th<strong>an</strong> YAPA [5].<br />

A comparison between the efficiency <strong>of</strong> Athena <strong>an</strong>d other <strong>verifier</strong>s w<strong>as</strong> not<br />

possible due to fact that Athena is not publicly available 11 . Scyther improves on<br />

Athena [17]. We believe that Athena’s perform<strong>an</strong>ce is not f<strong>as</strong>ter th<strong>an</strong> the results<br />

from Scyther but we c<strong>an</strong>’t know for sure without concrete experimental results.<br />

Efficiency <strong>of</strong> ProVerif with extensions . In Section 4 we have described how<br />

ProVerif w<strong>as</strong> extended to be able to tr<strong>an</strong>sform a <strong>protocol</strong> specification using<br />

XOR <strong>an</strong>d Diffie-Hellm<strong>an</strong> to <strong>an</strong> input file for <strong>an</strong>alysis with ProVerif.<br />

To compare ProVerif with CL-Atse <strong>an</strong>d OFMC, [30] used XOR-ProVerif[28]<br />

<strong>an</strong>d DH-ProVerif[29] to tr<strong>an</strong>slate the input files, with XOR or Diffie-Hellm<strong>an</strong>, to<br />

the applied pi calculus input files for ProVerif. They concluded that in general<br />

the same attacks were found using OFMC, CL-Atse or ProVerif (XOR-ProVerif<br />

or DH-ProVerif). For most <strong>of</strong> the <strong>protocol</strong>s, ProVerif completed the verification<br />

within one second but the AVISPA tools did so within less th<strong>an</strong> 0.01 seconds.<br />

ProVerif w<strong>as</strong> slower because <strong>of</strong> the tr<strong>an</strong>slation <strong>of</strong> the input files [30]. The time<br />

required for tr<strong>an</strong>slation depends on the <strong>protocol</strong> being verified, but <strong>of</strong>ten it is<br />

a small part <strong>of</strong> the total running time (e.g. Salary sum <strong>protocol</strong>: 1 second for<br />

tr<strong>an</strong>slation + 11 seconds for the running time, Bull’s authentication <strong>protocol</strong>: 5<br />

seconds for tr<strong>an</strong>slation + 12 seconds for the running time).<br />

5.2 Specificity<br />

Attack traces provide feedback to the user <strong>of</strong> a <strong>verifier</strong> <strong>an</strong>d they enable the user<br />

to m<strong>an</strong>ually check the attack. This feedback c<strong>an</strong> help the user fix the <strong>security</strong><br />

flaw in the <strong>protocol</strong> being verified. Both ProVerif <strong>an</strong>d Scyther show attack traces<br />

when <strong>an</strong> attack is found [18]. Because <strong>of</strong> its use <strong>of</strong> approximations, it is possible<br />

that ProVerif shows <strong>an</strong> false attack, but this is rare for current widely used<br />

<strong>security</strong> <strong>protocol</strong>s [7]. Because Scyther uses no approximations, it follows that<br />

attacks that are found with Scyther are actual attacks on the <strong>protocol</strong>[17]. For<br />

the <strong>verifier</strong> TA4SP (part <strong>of</strong> the AVISPA toolkit) there is no way to determine<br />

if <strong>an</strong> attack is true or false. Like ProVerif, TA4SP uses approximations, but the<br />

user c<strong>an</strong>not m<strong>an</strong>ually verify the attack because TA4SP doesn’t generate traces<br />

<strong>of</strong> <strong>an</strong> attack [18].<br />

11 This statement is made in [18] <strong>an</strong>d in [16]. However, the s<strong>of</strong>tware seems to be available<br />

at http://www.ece.cmu.edu/ ∼ dawnsong/athena/.


5.3 Usability<br />

To our knowledge, no comparative study h<strong>as</strong> been done in the area <strong>of</strong> the<br />

usability <strong>of</strong> <strong>automatic</strong> <strong>security</strong> <strong>protocol</strong> <strong>verifier</strong>s. We decided to compare the<br />

documentation (user m<strong>an</strong>uals, example code) provided by the authors on the<br />

website. With good documentation available, users c<strong>an</strong> start using the <strong>verifier</strong><br />

more e<strong>as</strong>ily by exploring the examples <strong>an</strong>d m<strong>an</strong>uals provided.<br />

ProVerif (v1.82) 12 provides a folder containing examples for both input l<strong>an</strong>guages<br />

(Horn clauses <strong>an</strong>d pi calculus). There is also <strong>an</strong> folder containing a m<strong>an</strong>ual<br />

describing the input <strong>an</strong>d output formats <strong>an</strong>d a m<strong>an</strong>ual on how to upgrade<br />

from <strong>an</strong> older version <strong>of</strong> ProVerif.<br />

The website 13 <strong>of</strong> the AVISPA project provides a lot <strong>of</strong> input examples <strong>of</strong> existing<br />

<strong>protocol</strong>s for the HLPSL l<strong>an</strong>guage in the form <strong>of</strong> the AVISPA Library. They also<br />

provide a list <strong>of</strong> user-contributed <strong>protocol</strong> specifications. The authors provide<br />

installation m<strong>an</strong>uals for each <strong>of</strong> the tools in the toolkit, a general user m<strong>an</strong>ual<br />

<strong>an</strong>d a beginners guide to the HLPSL l<strong>an</strong>guage.<br />

Scyther (1.0-beta7) 14 . Scyther is relatively new <strong>an</strong>d not much documentation<br />

is available besides a short installation file. The author does provide <strong>an</strong> exercise<br />

set for students with six exercises in it.<br />

We could not find much information on the process <strong>of</strong> modeling the <strong>protocol</strong><br />

into the input l<strong>an</strong>guage <strong>of</strong> a <strong>verifier</strong>. We did find remarks <strong>of</strong> researchers who had<br />

difficulty modeling <strong>protocol</strong>s in ProVerif, relative to five other <strong>verifier</strong>s, even<br />

though they had good knowledge <strong>of</strong> the <strong>protocol</strong>s [18].<br />

Because ProVerif provides the essential information, such <strong>as</strong>: <strong>an</strong> installation<br />

guide, a description <strong>of</strong> input formats <strong>an</strong>d <strong>protocol</strong> examples, we think that<br />

ProVerif h<strong>as</strong> good documentation. The lack <strong>of</strong> information for Scyther makes<br />

it difficult for a beginner to start using the <strong>automatic</strong> <strong>security</strong> <strong>protocol</strong> <strong>verifier</strong>.<br />

We think that the use <strong>of</strong> user-contributed <strong>protocol</strong> specifications, like the<br />

AVISPA Project, c<strong>an</strong> get more people to use ProVerif. For example, beginners<br />

c<strong>an</strong> learn from the examples <strong>an</strong>d comments given by others.<br />

6 Conclusion<br />

In this paper, we have performed <strong>an</strong> <strong>an</strong>alysis <strong>of</strong> some factors that might influence<br />

the usefulness <strong>an</strong>d popularity <strong>of</strong> the <strong>automatic</strong> <strong>protocol</strong> <strong>verifier</strong> ProVerif.<br />

After discussing the particular <strong>as</strong>pects <strong>of</strong> ProVerif, we looked at some practical<br />

applications <strong>of</strong> ProVerif for <strong>protocol</strong> verification. We have surveyed the literature<br />

on limitations on ProVerif, <strong>an</strong>d we briefly summarized some <strong>of</strong> the work on<br />

comparison <strong>of</strong> <strong>protocol</strong> <strong>verifier</strong>s.<br />

12 ProVerif v.1.82. Download: http://www.proverif.ens.fr<br />

13 AVISPA Project. Download: http://www.avispa-project.org<br />

14 Scyther 1.0-beta7. Download: http://people.inf.ethz.ch/cremersc/scyther/<br />

index.html


When studying ProVerif, we have found that the <strong>verifier</strong> h<strong>as</strong> several desirable<br />

properties for <strong>protocol</strong> verification. First, it c<strong>an</strong> h<strong>an</strong>dle <strong>an</strong> unbounded number<br />

<strong>of</strong> <strong>protocol</strong> runs. Second, it uses a fairly extensive threat model, the Dolev-Yao<br />

model, which me<strong>an</strong>s it gives a lot <strong>of</strong> power to the attacker. The tr<strong>an</strong>slation from<br />

a <strong>protocol</strong> definition to a <strong>protocol</strong> specification seems to be difficult at times<br />

but mostly straightforward, <strong>an</strong>d two distinct l<strong>an</strong>guages, the applied pi calculus<br />

<strong>an</strong>d Horn clauses, are provided <strong>as</strong> specification l<strong>an</strong>guages. When <strong>an</strong>alyzing the<br />

<strong>protocol</strong> specification, several <strong>as</strong>sumptions are made which might lead to finding<br />

false attacks. However, all these <strong>as</strong>sumptions do not influence the ability to find<br />

attacks in unsafe <strong>protocol</strong>s (i.e. the sensitivity), therefore, if <strong>an</strong> attack exists,<br />

ProVerif will find one.<br />

The application <strong>of</strong> <strong>Proverif</strong> to real-life <strong>protocol</strong>s is very common in academic<br />

environments, <strong>as</strong> testified by the extensive collection <strong>of</strong> literature in which is<br />

it used. In using the <strong>verifier</strong>, researchers note that they have more difficulty<br />

modeling some properties <strong>an</strong>d requirements <strong>of</strong> <strong>protocol</strong>s in ProVerif compared<br />

to other <strong>protocol</strong> <strong>verifier</strong>s. ProVerif seems to be otherwise successful in finding<br />

new attacks, <strong>an</strong>d even sometimes finds attacks in <strong>protocol</strong>s that have already<br />

been <strong>an</strong>alyzed with other <strong>protocol</strong> <strong>verifier</strong>s.<br />

Currently, one <strong>of</strong> the major challenges for <strong>an</strong>y <strong>protocol</strong> <strong>verifier</strong> is succesfully<br />

modelling the algebraic properties <strong>of</strong> cryptographic primitives such <strong>as</strong> Diffie-<br />

Hellm<strong>an</strong> encryption or the XOR operation. At first gl<strong>an</strong>ce, ProVerif h<strong>as</strong> difficulties<br />

to effectively represent <strong>protocol</strong>s that contain such primitives. However,<br />

we found literature that describes techniques for rewriting <strong>protocol</strong> specifications<br />

so that they c<strong>an</strong> represent the algebraic properties involved <strong>as</strong> well. Tools<br />

have been developed <strong>an</strong>d included with the ProVerif distribution package that<br />

perform such rewriting t<strong>as</strong>ks <strong>automatic</strong>ally. Since ProVerif is open source <strong>an</strong>d<br />

licensed under the GNU GPL, such tools could also be merged with ProVerif<br />

itself, though perform<strong>an</strong>ce considerations might dictate otherwise.<br />

The developers <strong>of</strong> ProVerif have made several claims about the <strong>verifier</strong>, such<br />

<strong>as</strong> its speed <strong>an</strong>d memory usage. Studies that compare ProVerif to other <strong>verifier</strong>s<br />

indeed show that ProVerif performs quite well in these <strong>as</strong>pects. No conclusive<br />

studies that compare the usability for researchers <strong>of</strong> such tools, but the remarks<br />

by researchers about the tr<strong>an</strong>slation <strong>of</strong> <strong>protocol</strong> definitions to specifications seem<br />

to indicate that ProVerif is somewhat lacking in this direction.<br />

Summing up, ProVerif seems to be a widely applicable tool with a good track<br />

record. On the other side, some other <strong>verifier</strong>s seem to surp<strong>as</strong>s ProVerif on certain<br />

points. However, if you require a tool that c<strong>an</strong> quickly verify a <strong>protocol</strong> in one<br />

<strong>of</strong> the more general threat models, ProVerif is still a very good choice.


References<br />

1. M. Abadi. Security Protocols <strong>an</strong>d their Properties. In Foundations <strong>of</strong> Secure<br />

Computation, NATO Science Series, pages 39–60. IOS Press, 2000.<br />

2. M. Abadi, B. Bl<strong>an</strong>chet, <strong>an</strong>d C. Fournet. Just f<strong>as</strong>t keying in the pi calculus. ACM<br />

Tr<strong>an</strong>sactions on Information <strong>an</strong>d System Security, 10(3):9, 2007.<br />

3. A. Arm<strong>an</strong>do, D. B<strong>as</strong>in, Y. Boichut, Y. Chevalier, L. Compagna, J. Cuellar, H<strong>an</strong>kes<br />

P. Drielsma, P. C. Heám, O. Kouchnarenko, J. M<strong>an</strong>tov<strong>an</strong>i, S. Mödersheim,<br />

D. von Oheimb, M. Rusinowitch, J. S<strong>an</strong>tiago, M. Turu<strong>an</strong>i, L. Vig<strong>an</strong>ò, <strong>an</strong>d L. Vigneron.<br />

The AVISPA Tool for the Automated Validation <strong>of</strong> Internet Security<br />

Protocols <strong>an</strong>d Applications. Computer Aided Verification, pages 281–285, 2005.<br />

4. M. Backes, C. Hritcu, <strong>an</strong>d M. Maffei. Automated Verification <strong>of</strong> Remote Electronic<br />

Voting Protocols in the Applied Pi-Calculus. In CSF ’08: Proceedings <strong>of</strong><br />

the 2008 21st IEEE Computer Security Foundations Symposium, pages 195–209,<br />

W<strong>as</strong>hington, 2008. IEEE.<br />

5. M. Baudet, V. Cortier, <strong>an</strong>d S. Delaune. YAPA: A generic tool for computing<br />

intruder knowledge. In Rewriting Techniques <strong>an</strong>d Applications, volume 5595 <strong>of</strong><br />

Lecture Notes in Computer Science, pages 148–163. Springer Berlin / Heidelberg,<br />

2009.<br />

6. S. M. Bellovin <strong>an</strong>d M. Merritt. Encrypted Key Exch<strong>an</strong>ge: P<strong>as</strong>sword-B<strong>as</strong>ed Protocols<br />

Secure Against Dictionary Attacks. In IEEE Symposium on Security <strong>an</strong>d<br />

Privacy, pages 72–84, 1992.<br />

7. B. Bl<strong>an</strong>chet. An Efficient Cryptographic Protocol Verifier B<strong>as</strong>ed on Prolog Rules.<br />

In CSFW ’01: Proceedings <strong>of</strong> the 14th IEEE workshop on Computer Security Foundations,<br />

page 82, W<strong>as</strong>hington, 2001. IEEE.<br />

8. B. Bl<strong>an</strong>chet <strong>an</strong>d A. Chaudhuri. Automated Formal Analysis <strong>of</strong> a Protocol for<br />

Secure File Sharing on Untrusted Storage. In Proceedings <strong>of</strong> the 29th IEEE Symposium<br />

on Security <strong>an</strong>d Privacy (S&P’08), pages 417–431. IEEE, 2008.<br />

9. B. Bl<strong>an</strong>chet <strong>an</strong>d C. Fournet. Automated Verification <strong>of</strong> Selected Equivalences for<br />

Security Protocols. In LICS ’05: Proceedings <strong>of</strong> the 20th Annual IEEE Symposium<br />

on Logic in Computer Science, pages 331–340, W<strong>as</strong>hington, 2005. IEEE.<br />

10. O. Cetinkaya <strong>an</strong>d A. Dog<strong>an</strong>aksoy. A Practical Verifiable e-Voting Protocol for<br />

Large Scale Elections over a Network. In ARES ’07: Proceedings <strong>of</strong> the The Second<br />

International Conference on Availability, Reliability <strong>an</strong>d Security, pages 432–442,<br />

W<strong>as</strong>hington, 2007. IEEE.<br />

11. R. Ch<strong>an</strong>g <strong>an</strong>d V. Shmatikov. Formal Analysis <strong>of</strong> Authentication in Bluetooth<br />

Device Pairing. In 1st International Symposium on Leveraging Applications <strong>of</strong><br />

Formal Methods (ISOLA04), 2007.<br />

12. Y. Chevalier, R. Küsters, M. Rusinowitch, <strong>an</strong>d M. Turu<strong>an</strong>i. Deciding the Security <strong>of</strong><br />

Protocols with Diffie-Hellm<strong>an</strong> Exponentiation <strong>an</strong>d Products in Exponents. In FST<br />

TCS 2003: Foundations <strong>of</strong> S<strong>of</strong>tware Technology <strong>an</strong>d Theoretical Computer Science,<br />

volume 2914 <strong>of</strong> Lecture Notes in Computer Science, pages 124–135. Springer Berlin<br />

/ Heidelberg, 2003.<br />

13. W. F. Clocksin <strong>an</strong>d C. S. Mellish. Programming in Prolog. Springer-Verlag, New<br />

York, NY, USA, 1987.<br />

14. H. Comon-Lundh <strong>an</strong>d V. Cortier. Computational soundness <strong>of</strong> observational equivalence.<br />

In CCS ’08: Proceedings <strong>of</strong> the 15th ACM conference on Computer <strong>an</strong>d<br />

communications <strong>security</strong>, pages 109–118, New York, 2008. ACM.<br />

15. V. Cortier, H. Hördegen, <strong>an</strong>d B. Warinschi. Explicit r<strong>an</strong>domness is not necessary<br />

when modeling probabilistic encryption. Electronic Notes in Theoretical Computer


Science, 186:49 – 65, 2007. Proceedings <strong>of</strong> the First Workshop in Information <strong>an</strong>d<br />

Computer Security (ICS 2006).<br />

16. C.J.F. Cremers. Scyther: Sem<strong>an</strong>tics <strong>an</strong>d Verification <strong>of</strong> Security Protocols. PhD<br />

thesis, Technische Universiteit Eindhoven, 2006.<br />

17. C.J.F. Cremers. The Scyther Tool: Verification, Falsification, <strong>an</strong>d Analysis <strong>of</strong> Security<br />

Protocols. In Computer Aided Verification, 20th International Conference,<br />

CAV 2008, Princeton, USA, Proc., volume 5123/2008 <strong>of</strong> Lecture Notes in Computer<br />

Science, pages 414–418. Springer, 2008.<br />

18. C.J.F. Cremers, P. Lafourcade, <strong>an</strong>d P. Nadeau. Comparing State Spaces in Automatic<br />

Protocol Analysis. In Formal to Practical Security, volume 5458/2009 <strong>of</strong><br />

Lecture Notes in Computer Science, pages 70–94. Springer Berlin / Heidelberg,<br />

2009.<br />

19. T. Dierks <strong>an</strong>d E. Rescorla. The Tr<strong>an</strong>sport Layer Security (TLS) Protocol Version<br />

1.2. RFC 5246 (Proposed St<strong>an</strong>dard), August 2008.<br />

20. W. Diffie <strong>an</strong>d M. E. Hellm<strong>an</strong>. New directions in cryptography. IEEE Tr<strong>an</strong>sactions<br />

on Information Theory, 22(6):644–654, 1976.<br />

21. D. Dolev <strong>an</strong>d A. C. Yao. On the <strong>security</strong> <strong>of</strong> public key <strong>protocol</strong>s. Foundations <strong>of</strong><br />

Computer Science, Annual IEEE Symposium on, 0:350–357, 1981.<br />

22. A. J. Feldm<strong>an</strong>, J. A. Halderm<strong>an</strong>, <strong>an</strong>d E. W. Felten. Security <strong>an</strong>alysis <strong>of</strong> the diebold<br />

AccuVote-TS voting machine. In EVT’07: Proceedings <strong>of</strong> the USENIX Workshop<br />

on Accurate Electronic Voting Technology, page 2, Berkeley, 2007. USENIX Association.<br />

23. C. Fournet <strong>an</strong>d M. Abadi. Hiding names: Private authentication in the applied<br />

pi calculus. In S<strong>of</strong>tware Security - Theories <strong>an</strong>d Systems, volume 2609 <strong>of</strong> Lecture<br />

Notes in Computer Science, pages 317–338. Springer-Verlag, 2003.<br />

24. M. Jakobsson <strong>an</strong>d S. Wetzel. Security Weaknesses in Bluetooth. In CT-RSA<br />

2001: Proceedings <strong>of</strong> the 2001 Conference on Topics in Cryptology, pages 176–191,<br />

London, 2001. Springer-Verlag.<br />

25. H. Khur<strong>an</strong>a <strong>an</strong>d H. Hahm. Certified mailing lists. In ASIACCS ’06: Proceedings <strong>of</strong><br />

the 2006 ACM Symposium on Information, computer <strong>an</strong>d communications <strong>security</strong>,<br />

pages 46–58, New York, 2006. ACM.<br />

26. T. Kohno <strong>an</strong>d A. Stubblefield. Analysis <strong>of</strong> <strong>an</strong> electronic voting system. In IEEE<br />

Symposium on Security <strong>an</strong>d Privacy, pages 27–40, 2004.<br />

27. S. Kremer <strong>an</strong>d M. Ry<strong>an</strong>. Analysis <strong>of</strong> <strong>an</strong> Electronic Voting Protocol in the Applied<br />

Pi Calculus. In In Proc. 14th Europe<strong>an</strong> Symposium On Programming (ESOP05),<br />

volume 3444 <strong>of</strong> LNCS, pages 186–200. Springer, 2005.<br />

28. R. Küsters <strong>an</strong>d T. Truderung. Reducing <strong>protocol</strong> <strong>an</strong>alysis with XOR to the XORfree<br />

c<strong>as</strong>e in the Horn theory b<strong>as</strong>ed approach. In CCS ’08: Proceedings <strong>of</strong> the 15th<br />

ACM conference on Computer <strong>an</strong>d communications <strong>security</strong>, pages 129–138, New<br />

York, 2008. ACM.<br />

29. R. Küsters <strong>an</strong>d T. Truderung. Using ProVerif to Analyze Protocols with Diffie-<br />

Hellm<strong>an</strong> Exponentiation. Computer Security Foundations Symposium, IEEE,<br />

0:157–171, 2009.<br />

30. P. Lafourcade, V. Terrade, <strong>an</strong>d S. Vigier. Comparison <strong>of</strong> cryptographic verification<br />

tools dealing with algebraic properties. In Pierpaolo Deg<strong>an</strong>o Joshua Guttm<strong>an</strong>,<br />

editor, 6th International Workshop on Formal Aspects in Security <strong>an</strong>d Trust,<br />

(FAST’09), Eindhoven, nov 2009.<br />

31. T. Loong. Underst<strong>an</strong>ding sensitivity <strong>an</strong>d specificity with the right side <strong>of</strong> the brain.<br />

BMJ, 327(7417):716–719, 2003. http://www.bmj.com.<br />

32. G. Lowe. C<strong>as</strong>per: a compiler for the <strong>an</strong>alysis <strong>of</strong> <strong>security</strong> <strong>protocol</strong>s. J. Comput.<br />

Secur., 6(1-2):53–84, 1998.


33. C. Meadows. A Model <strong>of</strong> Computation for the NRL Protocol Analyzer. In Proceedings<br />

<strong>of</strong> the 7th Computer Security Foundations Workshop, pages 84–89, Los<br />

Alamitos, 1994. IEEE.<br />

34. A. J. Menezes, S. A. V<strong>an</strong>stone, <strong>an</strong>d P. C. V<strong>an</strong> Oorschot. H<strong>an</strong>dbook <strong>of</strong> Applied<br />

Cryptography. CRC Press, Inc., Boca Raton, 1996.<br />

35. J. K. Millen, S. C. Clark, <strong>an</strong>d S. B. Freedm<strong>an</strong>. The Interrogator: Protocol Security<br />

Analysis. IEEE Tr<strong>an</strong>s. S<strong>of</strong>tware Eng., 13(2):274–288, 1987.<br />

36. D. K. Nilsson, U. E. Larson, <strong>an</strong>d E. Jonsson. Auxiliary ch<strong>an</strong>nel Diffie-Hellm<strong>an</strong><br />

encrypted key-exch<strong>an</strong>ge authentication. In QShine ’08: Proceedings <strong>of</strong> the 5th International<br />

ICST Conference on Heterogeneous Networking for Quality, Reliability,<br />

Security <strong>an</strong>d Robustness, pages 1–8, Brussel, 2008. ICST.<br />

37. L. C. Paulson. The inductive approach to verifying cryptographic <strong>protocol</strong>s. Journal<br />

<strong>of</strong> computer <strong>security</strong>, 6(1-2):85–128, 1998.<br />

38. A. D. Rubin. Security considerations for remote electronic voting. Commun. ACM,<br />

45(12):39–44, 2002.<br />

39. D. Song. Athena: a New Efficient Automatic Checker for Security Protocol Analysis.<br />

Computer Security Foundations Workshop, IEEE, 0:192, 1999.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!