When is a PKCS#11 Configuration Secure?
|
|
|
- Madlyn Hodge
- 10 years ago
- Views:
Transcription
1 When is a PKCS#11 Configuration Secure? Sibylle Fröschle Department of Informatics University of Oldenburg Oldenburg, Germany [email protected] Nils Sommer MWR InfoSecurity Basingstoke, UK [email protected] Abstract We present a novel approach to specifying, modelling, and verifying security APIs centered around the slogan security APIs are also like programs and first-order linear time logic extended by past operators. We apply this approach to PKCS#11, a standard widely adopted in industry. We provide a complete formal specification of PKCS#11 under the threat model of a Dolev-Yao-Intruder. We investigate the wrap with trusted feature, a full analysis of which has been out of reach for the previous PKCS#11 models. Based on this feature we present the first provably secure configuration that allows the export and import of sensitive keys. I. INTRODUCTION A security API is the software interface between a trusted device, such as a smartcard or a hardware security module, and its untrusted environment, such as the card reader or a banking network. While there are now many special-purpose formal methods and tools for security protocol analysis, the field of security API analysis is still young. Preliminary efforts to carry over formal protocol analysis methods to security APIs have encountered difficulties despite the many similarities between them [15]. One hindrance is that security APIs have mutable global state, and that the success of a security API call (e.g., to import a key k wrapped under another key k w ) does not only depend on the host system s ability to supply the right message as argument to the call (i.e., key k encrypted under k w ) but also on the internal data structures of the token (e.g., whether k w is enabled for unwrapping). In this paper we present a novel approach to specifying, modelling, and verifying security APIs that combines the slogan security APIs are like protocols with the slogan security APIs are also like programs : (1) We specify the data types used in the security API in the style of an algebraic specification. We make use here of the basic specification language of CASL, the Common Algebraic Specification Language [3], [17], which comes with model semantics and a proof calculus. (2) We specify the commands of the security API by a conditional rewrite theory, where the conditions can express properties about the data structures in the token. Together with the data specification this gives rise to a security API specification that comes with model semantics in terms of a first-order temporal structure. (3) We use FOLTL (first-order linear time logic) [16] extended by past operators to specify and verify security properties. We employ a tableau proof method that proceeds by backwards analysis, and is similar in style to the reasoning behind the original strand space method presented in [21]. A conditional rewrite theory gives rise to FOLTL+p axioms in a straightforward fashion, and altogether we obtain a FOLTL+p theory, which is sound with respect to our model semantics. This gives the link between specification and proof method. (4) Security API specifications are accompanied by a notion of configuration, to provide for the fact that real devices usually only implement a subset of the functionality offered by a standardized security API. We also provide means to carry over properties between configurations by means of simulation preorder and equivalence. In particular, this will allow us to regain monotoncity of state by a sound abstraction. We apply this approach to PKCS#11 [18], which standardizes a security API named Cryptoki and is widely adopted in industry. Our practial contribution is threefold: (a) We give a complete formal specification of Cryptoki under the threat model of a Dolev-Yao-Intruder. This is (to our knowledge) the first full formal specification of a real-world security API. (b) We investigate Cryptoki s wrap with trusted feature, a full analysis of which (including the use of wrap and unwrap templates) has been out of reach for the previous models [10], [13], [5], [12]. We expose several potential attacks that a good configuration has to guard against when protecting keys with wrap with trusted. Based on this feature, we present the (to our knowledge) first provably secure configuration that allows the export and import of sensitive keys. (c) We give recommendations and discuss advantages and disadvantages of PKCS#11 based on our analysis. In Section II we introduce Cryptoki and explain in more detail the verification challenge. In Section III V we explain our formal approach while providing the formal specification of Cryptoki. Section VI is about configurations, and Section VII and VIII contain our security analysis and results. We conclude the paper with a disusson and related work in Section IX. The general idea behind our approach was first presented at ASA 10, a presentation-only workshop. Part of the approach, i.e., the proof method, is published in [12] for a restricted FOLTL+p theory. In the present paper we concentrate on the specification and model-theoretic aspects and keep all proofs and the proof method in the appendix. Thus, the only overlap with [12] is in Section IV, the introduction to FOLTL+p. (Note that also the presentation of the background is different to [12].)
2 II. BACKGROUND AND MOTIVATION We study Cryptoki under the threat model of the Dolev- Yao-Intruder, who has complete control of the host system and the communication channels but where the details of the cryptographic mechanisms are abstracted away. We present here only the features that are relevant for this threat model, and do not cover aspects such as session management and the mechanism-dependent part of [18]. A warning has to be added against Cryptoki s KeyDerive function. We have exposed serious attacks against it in [20]. We will therefore discuss this function in a separate work, and not consider it here. A. Introduction to Cryptoki Cryptoki provides an abstract view of a security module, or token, as a store of objects such as key, certificate, and data objects. The objects are accessed via object handles so that even though, e.g., a key object is used to encrypt some data its value is not necessarily known to the API programmer. Data Types: A key object is defined by the value of the key and a set of other attributes. The attribute type class specifies the object class of the key, i.e., whether the key is a symmetric key (secretkey), private key (privatekey), or public key (publickey). Several boolean attributes define how the key object can be used. For example, the top half of Fig. 1 depicts two key objects of class secretkey. The one on the left supports encryption and decryption of data, which is defined by the attributes encrypt and decrypt set to true. An attribute is specified as a pair of attribute type and attribute value. A set of attributes is specified as a list of attributes, called an attribute template. Such templates are used for creating, manipulating or filtering of objects. Functions: Cryptoki provides the usual functionality of security APIs such as generation of session keys, encryption and decryption of data, and export and import of keys wrapped under another key. Fig. 1(1-4) gives some examples. The API calls will only be successful if the corresponding boolean attributes are set to true. For example, the call to WrapKey in the third example is only successful because the key object to be exported (referenced by h e ) has extractable set to true and the wrapping key object (referenced by h w ) has wrap set to true. Cryptoki also provides functions for object management such as modifying the attributes of an object, copying objects while possibly modifying its attributes, and creating objects with a specified value. Fig. 1(5) gives an example. Wrap and Unwrap Templates: The success of the commands WrapKey and UnwrapKey is subject to two further attributes for wrapping and unwrapping keys: attribute wraptempl, and unwraptempl respectively. The attribute wraptempl allows the partitioning of wrapping key objects so that they can only wrap a subset of extractable keys: the value of the attribute wraptempl is an attribute template that specifies an attribute set that will be compared against the attributes of the key object to be wrapped. Only if all attributes match will the wrap command proceed. If an attribute is not present it is not checked. If the wraptempl attribute is not h e k e class : secretkey sensitive : true extractable : true encrypt : true decrypt : true h w k w class : secretkey sensitive : true copyable : true wrap : true unwrap : true encrypt : false decrypt : false 1) Encrypting data d under k e H -> T: Encrypt h e d T -> H: {d} ke 2) Decrypting data d encrypted under k e H -> T: Decrypt h e {d} ke T -> H: d 3) Exporting key k e wrapped under k w H -> T: WrapKey h w h e T -> H: {k e} kw 4) Importing key k e wrapped under k w as a key object with attribute set as specified by template t H -> T: UnwrapKey h w {k e} kw t T -> H: h e, a handle to the new object: h e k e as specified by t 5) Copying key object h w while setting decrypt to true H -> T: CopyObject h w (decrypt, true) T -> H: h c, a handle to the new object: h c k w class : secretkey sensitive : true copyable : true wrap : true unwrap : true encrypt : false decrypt : true Fig. 1. Examples of Cryptoki Functions t= (encrypt, true)(decrypt, true) Fig. 2. h wt k wt class : secretkey sensitive : true wrap : true unwrap : true wraptempl : t unwraptempl : t Key object with wrap and unwrap template supplied then any template is acceptable. For example, the key object depicted in Fig. 2 can be used to wrap key object h e but not key object h w or h w. Unwrapping keys can be partitioned in a symmetric way via the attribute unwraptempl. For example, the command UnwrapKey with arguments h wt, {k} kwt, t k will only be successful if the template for the new object, t k, has encrypt and decrypt specified to true. Higher Level Security Keys: Cryptoki offers several features which can be used to give additional protection to private 2
3 H -> T : WrapKey h c h e T -> H : {k e} kc H -> T : Decrypt h c {k e} kc T -> H : k e Fig. 3. Wrap/decrypt attack and secret key objects: 1 (1) If a key object has the attribute sensitive set to true then its value cannot be read off the token by the function GetAttributeValue (which as the name suggests returns attribute values of the object whose handle is given as argument). (2) If a key object has the attribute extractable set to false then its value cannot be revealed off the token by GetAttributeValue, and it cannot be wrapped off by WrapKey either. (3) If a key object has the attribute wrapwithtrusted set to true then it can only be wrapped by key objects that have the attribute trusted set to true. The attribute trusted can only be set to true by the system operator at token initialization (which we assume takes place in a secure environment). It is important to realize that in each case it is the key object that is protected and not necessarily the key value. For example, if the token contains a sensitive key object with value k and another key object with the same value k but sensitive set to false then we can reveal k off the token by simply using the second key object. The standard only guarantees that attribute sensitive and wrapwithtrusted cannot be changed once set to true by copying or modifying the key object, and similarly attribute extractable cannot be changed once set to false. Using the terminology of [5] we say sensitive and wrapwithtrusted are sticky-on, and extractable is sticky-off. Cryptoki Configurations: Cryptoki is a generic API for a wide range of devices and use cases, and one could say it gives a framework for defining a security API rather than providing a fully defined one itself. In particular, Cryptoki leaves it up to the token which functions are indeed supported, and the success of any of the commands that take attribute templates as arguments (such as CopyObject and UnwrapKey) can be subject to token-specific restrictions. To sum up, the following aspects are up to the configuration of a token: (1) which functions are available, (2) which attribute templates are supported when creating, generating or unwrapping a key object, and (3) which modifications are supported when modifying or copying a key object, i.e., which attribute set for the modified or copied object is supported in relation to the template of the original object. B. Potential Attacks and Verification Challenge It is well-known that full Cryptoki is vulnerable against many attacks, many of which could, in theory, compromise sensitive keys stored on a PKCS#11 token [8], [10], [13], [20], [5]. Experiments with devices such as smartcards and cryptographic USB keys have shown that these attacks are not only theoretical but many real-world tokens are vulnerable 1 The third feature is available only since PKCS#11 v2.20. spec MESSAGE = free type Key ::= kzero ksuc(key) pred inv : Key Key free type Cipher ::= enc(key; Key) sign(key; Key) dig(key) free type Mesg ::= sort Key sort Cipher end Fig. 5. Specification MESSAGE against them [20], [5]. Other devices have proved immune against the attacks because they are protected by constraints on their functionality and/or their keys are set up in a secure way [20], [5], [12]. One of the simplest potential attacks that a good configuration has to guard against is the key separation attack by Clulow [8] shown in Fig. 3 (using key objects of Fig. 1). The attacker uses the fact that k w is available in two conflicting roles: wrap and decrypt. One could avoid this attack by ensuring that no key ever has this role conflict. However, it is not so easy to avoid this attack in all its variations since one could, for example, manipulate the roles of a key by wrapping the key off the token and then importing it with different, conflicting attributes [10]. Small devices that hold signature and authentication keys typically protect against these attacks by simply ensuring that sensitive keys can never be wrapped: by setting them up with extractable set to false and/or restricting wrap/unwrap functionality [20], [5]. For larger use cases, e.g., in banking where sensitive keys need to be exported from and imported into hardware security modules, security engineers rely on the more advanced features of the standard such as wrapwithtrusted and/or wrap and unwrap templates [1], [19]. Hence, we wish to obtain a complete model of Cryptoki as close to the standard as possible that allows us to capture and reason about these more advanced features. (A very interesting configuration that does not rely on these advanced features has been presented in [5], and shown secure in that model-checking has not found any attacks; but it comes with the disadvantage that imported keys can never be used to wrap sensitive keys.) III. DATA TYPE SPECIFICATIONS We specify the data types of a security API by CASL s basic specification language that integrates subsorts, partial functions, sort generation constraints, and first-order logic. CASL is well-documented [3], [17] and we shall only explain the features we need here by example. It is important for our approach though that basic specifications come with model semantics and a proof calculus: every basic specification gives rise to a subsorted signature SIG, and a set of first-order axioms D over SIG. The (loose) semantics of such a subsorted first-order theory is the class of those many-sorted first-order structures 2 over SIG which satisfy all the axioms in D. The proof calculus is sound with respect to this model semantics. 2 CASL interpretes subsorts as injective embeddings rather than by subsorted structures. 3
4 spec OBJ HANDLE = free type Obj Handle ::= hzero hsuc(obj Handle) end spec ATTRIBUTE = % Boolean and Object Class free type Bool ::= true false free type Obj Class ::= secretkey privatekey publickey % Attribute Type free type Attr Type Bool ::= alwayssensitive copyable decrypt encrypt extractable modifiable neverextractable sensitive sign trusted unwrap verify wrap wrapwtr free type Attr Type Templ ::= unwraptempl wraptempl free type Attr Type ::= class sort Attr Type Bool sort Attr Type Templ % Attribute Value, Attribute, Attribute Template generated types Attr Value ::= sort Obj Class sort Bool sort Attr Templ; Attr ::= pair(attr Type; Attr Value); Attr Templ ::= empty add(attr; Attr Templ) ops type : Attr Attr Type value : Attr Attr Value a, a : Attr Type; v, v : Attr Value pair(a, v) = pair(a, v ) a = a v = v type(pair(a, v)) = a value(pair(a, v)) = v pred is in : Attr Attr Templ A, A : Attr; T : Attr Templ (A is in empty) A is in add(a, t) (A = A A is in T ) % Valid Attribute pred valid : Attr a : Attr Type; v : Attr Value valid(pair(a, v)) ((a = class v Obj Class) (a Attr Type Bool v Bool) (a Attr Type Templ v Attr Templ)) sort Valid Attr = {A : Attr valid(a)} % Consistent Attribute Template pred consistent : Attr Templ A : Attr; T : Attr Templ consistent(empty) consistent(add(a, T )) A Valid Attr (type(a) Attr Type Templ = consistent(value(a) as Attr Templ)) ( A : Attr A is in T type(a) = type(a ) = value(a) = value(a )) sort Cons Attr Templ = {T : Attr Templ consistent(t )} ops. : Cons Attr Templ Attr Type? Attr Value. : Cons Attr Templ Attr Type Bool? Bool. : Cons Attr Templ class? Obj Class. : Cons Attr Templ Attr Type Templ? Cons Attr Templ T Cons Attr Templ; a Attr Type; v Attr Value T.a = v A : Attr A is in T type(a) = a value(a) = v pred matches : Cons Attr Templ Cons Attr Templ T, T Cons Attr Templ T matches T a : Attr Type def (T.a) = T.a = T.a % Well-formed Attribute Template sort WF Attr Templ = {T : Cons Attr Templ def T.class} end Fig. 4. Specification OBJ HANDLE and ATTRIBUTE 4
5 Cryptoki Data Type Specification: The specification of Cryptoki s data types is presented in Fig. 4 and 5. It gives rise to a subsorted signature SIG CK and a set of first-order axioms D CK over SIG. The specification formalizes the corresponding specifications of object types in [18], Section 9.5. Specification OBJ HANDLE defines a countably infinite supply of handles. Specification ATTRIBUTE defines the sorts for attributes and attribute templates together with their operations, predicates, and subsorts. The attribute types are conveniently specified by making use of CASL s free datatype declaration, and a subsort declaration for the supersort of all attribute types. The specification of the sorts for attribute values, attributes, and attribute templates brings clearly to light that they are mutually recursive datatypes due to the fact that attribute templates can themselves be attribute values. Declaring them as generated types means that the sorts will be constrained to be generated by the declared constructors. Following the standard we define an attribute as a pair of attribute type and attribute value. Attribute templates are specified as containers that are constructed as either the empty template or by adding attributes to the empty template. This specification leaves it open whether templates are implemented as lists, arrays or sets of attributes. (The standard is not very clear in its terminology, and we thus avoid overspecification.) The standard defines when attribute templates are valid arguments when, e.g., copying an object (c.f. [18], Section 10.1). We translate these conditions into the predicates and subsorts of valid attributes, i.e., well-typed attribute type and value pairs, and consistent attribute templates, i.e., attribute templates which only contain valid attributes, consistent wrap and unwrap templates (when defined), and at most a single value for each attribute type. Using CASL s infix notation, we define a partial function., which given a consistent template and an attribute type returns the value if the attribute is defined. The partial function is overloaded, which ensures that we do not need type casts later on. For example, if t is a consistent attribute template then t.wrapwtr is the term that is undefined if wrapwtr is not defined in t and otherwise returns the respective boolean value. We also define when one consistent template matches another consistent template in view of our reasoning about wrap and unwrap templates. Well-formed attribute templates are those that specify at least the object class, the minimum to be expected of the attribute set of any object. Specification MESSAGE defines a free message algebra. We follow the typed approach of [10]. The latter work proves and exploits a result which allows us to work with a typed message algebra rather than an untyped one while not losing any attacks. This is possible because Cryptoki s functions only encrypt, sign, or digest one message at a time (unlike in most security protocols where often, e.g., a nonce and a key are bound together cryptographically). The result also applies in our technical framework. (We have checked this but leave the formalization, which is a routine but technical adaption of Theorem 1 in [10] to our framework, for a journal version.) IV. FOLTL+P FOR SECURITY API SYSTEMS Language: The language of a security API system is given by a temporal signature TSIG = (SIG, FP, AP) where SIG is a subsorted first-order signature, FP is a set of flexible predicate symbols, and AP is a set of action predicate symbols. SIG gives the language of the data types the system is based on. The flexible predicate symbols describe properties of the system that change over time such as the contents of the token and the knowledge of the intruder. The action predicate symbols are used to describe the actions that cause such change: the calls to the security API as well as the intruder s own set of actions, such as his power to decrypt an encryption when he has the key. Example 1: The language of a Cryptoki system is given by TSIG CK = (SIG CK, FP CK, AP CK ) where SIG CK can be taken from Section III; FP CK = { iknows : Mesg, tcontains : Key WF Attr Templ }, where iknows(m) expresses that the intruder knows message m, and tcontains(k, t) expresses that the token contains a key object with value k and attribute set t; AP CK can be taken from the labels of the rules in Figure 7 and 8. FOLTL+p: Let TSIG = (SIG, FP, AP) be a temporal signature and X a variable system over SIG. The terms and formulas of FOLTL+p over TSIG and X are defined as follows. Terms (with their sorts) are the terms over SIG and X. An atomic formula is one of the following: (1) an atomic formula over SIG and X, (2) an application p(t 1,..., t n ) of a flexible predicate symbol to terms of the appropriate sorts, (3) an application exec a(t 1,..., t n ) of an action predicate symbol to terms of the appropriate sorts, or (4) init, which denotes that the current state is the initial state. Formulas are inductively defined from the atomic formulas by first-order quantifiers, the usual propositional connectives, and the standard LTL temporal operators extended by past operators. Thus, apart from the standard LTL operators ( next ) and ( always ) we also use their past versions: ( previous ) and ( has-always-been ). We also use the derived operators ( eventually ), its past version ( once ), and ( at all time points ). State formulas are formulas without temporal operators and action predications. Example 2: Figure 6 gives some examples with respect to TSIG CK. State formulas express properties about the current intruder knowledge (1) or the current state of the token (2). Temporal formulas describe properties of the labelled execution sequences of a Cryptoki token. They can express consequences of command execution (3), security properties (4), and more complex reasoning principles (5). Model Semantics: A temporal signature TSIG is interpreted by a temporal structure K = (M, Runs) where M is a structure for SIG, called the data component of K, and Runs is the set of (infinite) runs of K. Each r Runs is an infinite alternating sequence r = η 0 α 1 η 1 α 2... of states and actions such that 5
6 1) The intruder knows message m : iknows(m) 2) Key k is available in the token with attribute extractable set to true : isavail(k, extractable) t. tcontains(k, t) t.extractable = true 3) If as next action key k will be exported under key k w then the token must contain a key object with value k and the attribute extractable set to true and a key object with value k w and the attribute wrap set to true : exec WrapKey(k w, k) isavail(k, extractable) isavail(k w, wrap) 4) If a key is generated on the token with extractable set to false then it has always been 3 and will always remain secret: exec GenerateKey(k, t) t.extractable = false iknows(k) 5) If the intruder knows an encryption of k under k e, and initially he knew no encryption of k, and he does not know k in plaintext, then once k was exported from the token under k e : iknows(enc(k e, k)) (init k e iknows(enc(k e, k)) iknows(k) exec WrapKey(k e, k) Fig. 6. FOLTL+p Examples each η i associates a relation p ηi M s1 M sn with every flexible predicate symbol p : s 1 s n, each α i associates a relation a αi M s1 M sn with every action predicate symbol a : s 1 s n. One can now define in the standard way when a formula F is true on run r at time point i under the variable valuation ξ, written r, i = ξ F (c.f. Appendix A). A formula F is valid on r, written r = F, if r, i = ξ F at all i for every variable valuation ξ. A formula F is valid in K denoted by K = F, if K = r for every r Runs. V. SECURITY API SPECIFICATIONS We specify a security API system over a temporal signature TSIG in three parts: (1) a subsorted first-order theory over SIG specifies the data types used by the API, (2) a state sentence over TSIG allows the specification of an initial condition such as that certain keys are set up securely, and (3) a conditional rewrite theory over TSIG specifies the commands of the API. Our notion of conditional rewriting is similar to the existential multiset rewriting typically used to model security protocols [2], [11]: protocol states are modelled as multisets of facts, and the rewrite rules define how one multiset of facts can be rewritten into a new multiset of facts, where the existentials allow us to model the generation of fresh keys and nonces. However, there are two novel aspects to our form of rewriting. First, our rewrite rules are guarded by conditions over the data types of the API, i.e., by formulas over SIG. Secondly, the operational semantics of our rewrite rules are given relative to a structure M for SIG, which interpretes the data types of the API. Facts are not ground terms as usual but rather semantic objects defined with respect to M. The conditions are also evaluated semantically with respect to M. The (loose) semantics of a security API theory is then the class of temporal structures that are induced by the class of models of the data type specification. The semantics can be found in Appendix B. Security API Theories: In the following, we use x to denote a sequence of variables x 1,..., x n. By abuse of notation we also use x to denote the set of variables {x 1,... x n }. We use vars(f ) and fvars(f ) to denote the variables, and, respectively, free variables occurring in formula F. We transfer this notation to sets of flexible predications in the obvious way. A security API theory over a temporal signature TSIG is a tuple A = (D, start, R) where D is a subsorted first-order theory over SIG, called data type specification, start is a state sentence over TSIG, called initial condition, and R is a conditional rewrite theory over TSIG, i.e., a set of labelled conditional rewrite rules of the form a(xy) : Q y. Q if C where a(xy) is an action predication, Q and Q are multisets of flexible predications, and C is a formula over SIG such that x y =, vars(q) x, vars(q ) x y, and fvars(c) x y. R is called command specification. Formal Specification of Cryptoki: Full, unconstrained, Cryptoki is specified by the security API theory A CK = (D CK, true, R CK ) over TSIG CK, where D CK is as defined in Section III, and R CK is presented in Fig. 7 and 8. We have considered all functions of the standard apart from those that are not relevant for our threat model (i.e., general-purpose, slot and token management, session management, parallel function management functions, and callback functions). Every other function (i.e., each function of Section in [18]) is modelled by a rewrite rule or we explain why we don t model it (c.f. Fig. 7 and 8). The rewrite theory also comprises rules that model the intruder s own actions. For readability we assume that the predications iknows(m) are persistent without repeating them on the right side of the rules. Observe how the rules formalize our informal description of Cryptoki functions in Section II. The superscripts at the 6
7 Object Management: CreateObject(k, t) : iknows(k) tcontains(k, t) if (t.trusted = true) 10 CopyObject(k, t, t c) : tcontains(k, t) tcontains(k, t c), tcontains(k, t) DestroyObject(k, t) : tcontains(k, t) if t.copyable = true ( a. def t.a def t c.a) D (t.extractable = false t c.extractable = false) 12 (t.sensitive = true t c.sensitive = true) 11 (t.wrapwtr = true t c.wrapwtr = true) 11 (t c.trusted = true) 10 GetAttributeValue(k, t) : tcontains(k, t) iknows(k), tcontains(k, t) if (t.sensitive = true) (t.extractable = false) C SetAttributeValue(k, t, t m) : tcontains(k, t) tcontains(k, t m) if t.modifiable = true ( a. def t.a def t m.a) D (t.copyable = false t m.copyable = false) 12 (t.extractable = false t m.extractable = false) 12 (t.sensitive = true t m.sensitive = true) 11 (t.wrapwtr = true t m.wrapwtr = true) 11 (t m.trusted = true) 10 GetObjectSize, and FindObjects are not relevant for our threat model. Encryption and Decryption: Encrypt(k e, k, t e) : tcontains(k e, t e), iknows(k) iknows(enc(k e, k)), tcontains(k e, t e) if t e.encrypt = true C Decrypt(k d, k, k e, t d ) : tcontains(k d, t d ), iknows(enc(k e, k)), inv(k e, k d ) iknows(k), tcontains(k d, t d ) Message Digesting, Signing and MACing, Verifying Signatures and MACs: Digest(k) : iknows(k) iknows(dig(k)) DigestKey(k, t) : tcontains(k, t) iknows(dig(k)), tcontains(k, t) Sign(k s, k, t s) : tcontains(k s, t s), iknows(k) iknows(sign(k s, k)), tcontains(k s, t s) SignRecover(k s, k, t s) : tcontains(k s, t s), iknows(k) iknows(sign(k s, k)), tcontains(k s, t s) if t s.sign = true C if t d.decrypt = true C if t s.signrecover = true C VerifyRecover(k v, k, k s, t v) : tcontains(k v, t v), iknows(sign(k s, k)), inv(k v, k s) iknows(k), tcontains(k v, t v) if t v.verifyrecover = true C Verify only returns okay or signature invalid, and hence is not relevant for our threat model. Note that MAC ing is done by the function Sign with a symmetric key. Dual-Function Cryptographic Functions are equivalent to the corresponding usual functions under our threat model. Intruder: IntrEncrypt(k e, k) : iknows(k e), iknows(k) iknows(enc(k e, k)) IntrDecrypt(k d, k, k e) : iknows(k d ), iknows(enc(k e, k)), inv(k e, k d ) iknows(k) IntrGenerate(k) : k. inv(k, k), iknows(k) Fig. 7. PKCS#11 Theory Part I, where k ranges over keys, t over well-formed attribute templates, and a over attribute types 7
8 Key Management: GenerateKey(k, t) : k. inv(k, k), tcontains(k, t) if t.class = secretkey C (t.trusted = true) 10 GenerateKeyPair(k pu, k pr, t pu, t pr) : k pu, k pr. inv(k pu, k pr), iknows(k pu), tcontains(k pu, t pu), tcontains(k pr, t pr) if t pu.class = publickey t pr.class = privatekey C (t pu.trusted = true) 10 WrapKey(k w, k, t w, t) : tcontains(k w, t w), tcontains(k, t) iknows(enc(k w, k)), tcontains(k w, t w), tcontains(k, t) if t w.wrap = true t.extractable = true C (t.class = secretkey t.class = privatekey) C (t.class = secretkey (t w.class = secretkey t w.class = publickey)) C (t.class = privatekey t w.class = secretkey) C (def t w.wraptempl t matches t w.wraptempl) C (t.wrapwtr = true t w.trusted = true) A UnwrapKey(k u, k, k w, t u, t) : tcontains(k u, t u), iknows(enc(k w, k)), inv(k w, k u) tcontains(k, t), tcontains(k u, t u) if (t.class = secretkey t.class = privatekey) C t u.unwrap = true C (def t u.unwraptempl t matches t u.unwraptempl) C (t.trusted = true) 10 DeriveKey not modelled here since it requires algebraic structure and it is flawed. Random Number Generation Functions can be simulated by IntrGenerate under our threat model. Fig. 8. PKCS#11 Theory Part II, where k ranges over keys, t over well-formed attribute templates, and a over attribute types conditions are explained as follows: 12 is a footnote in the standard that explains that an attribute is sticky-off, 11 means sticky-on, and 10 means can only be set to true by the SO user (c.f. Table 15 in [18]). The superscript C indicates that the condition is a formalization of a statement in the section that defines the respective command. D expresses that once defined an attribute cannot be changed to undefined. Note that we make use of partiality in the formulation of the conditions. For example, (t.trusted = true) is not equal to t.trusted = false but it means t.trusted = false or t.trusted is not defined. Thereby we cover the case when not all attributes are specified in the attribute set of an object. VI. CONFIGURATIONS We now formalize the concept of security API configuration, and when one configuration is more constrained than another. We also define and apply a way to carry over properties from one configuration to another by means of simulation preorder and equivalence. In particular, this will allow us to regain monotonicity of state by a sound abstraction. Configurations: Let A = (D, start, R) be a security API theory over a temporal signature TSIG. A configuration of A is a triple γ = (AP γ, C γ, C init γ ) where AP γ AP gives the set of functions supported by the token and the set of intruder actions the token has to reckon with; C γ defines token-specific restrictions on the supported functions; formally, it is a partial function that assigns to action predicate symbols a AP γ a formula C γ (a) over SIG with free variables in xy (where a(xy) is the label of the corresponding rule in R); is a state sentence over TSIG, and defines a tokenspecific initial constraint. C init γ Every configuration γ of A gives rise to a security API theory γ = (D, start γ, R γ ) where start γ = start Cγ init, and R γ is obtained from R by removing every rule rule a(x) : r R when a AP γ, adding the condition C γ (a) as a new conjunctive to every rule a(x) : r R, when C γ (a) is defined. Example 3 (Restricting Functionality): The following configuration disables modifying and copying of objects completely. It only allows the creation, unwrapping into, and wrapping of key objects that are not sensitive. It is similar to the configuration of the SafeNet ikey 2032 token investigated in [5]. AP γ = AP CK \ {CopyObject, SetAttributeValue} C γ = {(CreateObject, t.sensitive = false), (WrapKey, t.sensitive = false), (UnwrapKey, t.sensitive = false)} Cγ init = true Example 4 (Enforcing Attribute Policies): A boolean attribute type a can be configured to be sticky-on as follows: AP γ = AP CK C γ = {(CopyObject, t.a = true t c.a = true), (SetAttributeValue, t.a = true t m.a = true)} Cγ init = true 8
9 A static attribute policy can be enforced by defining: C γ = {(CopyObject, a : Attr Type. t.a = t c.a), (SetAttributeValue, a : Attr Type. t.a = t m.a)} The concept of configuration is naturally accompanied by the notion that one configuration is more constrained than another. Let γ and γ be two configurations of A. We say γ is more constrained than γ, written γ γ, if 1) AP γ AP γ, 2) for all a AP γ, D = C(a) implies D = C (a), where C(a) denotes the condition of rule a(x) : r R γ, and C (a) the condition of a(x) : r R γ respecively. 3) D = start γ implies D = start γ. Simulation Preorder and Equivalence: For our definition of simulation we move to a branching-time view: we can view a temporal structure as a tree by glueing together its runs. Formally, we define the nodes and arcs of this tree as follows. The set of finite runs of a temporal structure K = (M, Runs), denoted by FRuns(K), is the set of all finite prefixes of the α (infinite) runs in Runs ending in a state. We write r r 1 if r 1 = rαη for some state η. Our notion of simulation addresses two situations: one is when a temporal structure can simulate another structure with less behaviour in a precise way. The second is when a temporal structure can simulate another structure with possibly more behaviour because the first can be seen as an abstraction of the second. In particular, we capture here that a simulation can abstract away from certain actions: we simulate with respect to a parameter A, which gives the set of action predicate symbols whose interpretations have to be matched precisely while all other actions can be matched in any way. Let K and K be two temporal structures over TSIG, and let A AP. A relation H FRuns(K) FRuns(K ) is a simulation relation of K by K with respect to A if and only if, if (r, r ) H then the following conditions hold: 1) p η = p η for all flexible predicate symbols p, where η and η are the final states of r, and r respectively. 2) Whenever r α r 1 for some α and r 1 then there are α and r 1 such that a) a α = a α for every a A, b) r α r 1, and (r 1, r 1) H. We say K simulates K with respect to A, denoted by K A K, if there exists a simulation relation H of K by K with respect to A such that for every initial state η 0 FRuns(K) there is an initial state η 0 FRuns(K ) such that (η 0, η 0) H. We say that K and K are simulation equivalent with respect to A, denoted by K A K, if K A K and K A K. As usual, A is a preorder and A is an equivalence relation. If A = AP then we leave away the subscript A. The following theorem establishes the correspondence between simulation and FOLTL we wished to obtain. Theorem 1: 1) If K A K then for every formula F with action predications over A, K = F implies K = F. 2) If K A K then for every formula F with action predications over A, K = F iff K = F. The proof follows the standard argument (c.f. [7]) and can be found in Appendix C. Application 1: Let A be a security API theory over TSIG, and M a structure for SIG. Assume two configurations γ and γ of A. It is clear that if γ is more constrained than γ then we can simulate any action in γ over M by the same action in γ over M. Lemma 1: If γ γ then K(γ, M) simulates K(γ, M). Together with Theorem 1 this immediately gives us a way to transfer properties from one configuration to a more constrained configuration. In particular, if we manage to prove a security property for full Cryptoki then it will hold for all Cryptoki configurations. Application 2: For ease of proving we wish to work with an abstraction that guarantees that the state of Cryptoki systems increases monotonically. By inspection of our rewrite theory it is easy to see that the only commands that violate monotonicity of state are SetAttributeValue and DestroyObject. The latter does not give any power to the intruder and can clearly be abstracted away while the first can be simulated by CopyObject: rather than modifying an object using SetAttributeValue simply copy the object while modifying it in the corresponding way. If a configuration is set up so that modifying and copying are analogous then the original system is indeed simulation equivalent to the monotonic one. Definition 1: A template t is modify/copy-consistent, written mcconsistent(t), iff it satisfies: (t.modifiable = true t.copyable = true) (def t.wraptempl mcconsistent(t.wraptempl)) (def t.unwraptempl mcconsistent(t.unwraptempl)) A configuration γ is modify/copy-consistent if and only if SetAttributeValue AP γ implies CopyObject AP γ, and the conditions of γ are such that: D = (C(CreateObject) mcconsistent(t)) (C(CopyObject) mcconsistent(t c)) (C(SetAttributeValue) mcconsistent(t m)) (C(GenerateKey) mcconsistent(t)) (C(GenerateKeyPair) mcconsistent(t pr) mcconsistent(t pu)) (C(UnwrapKey) mcconsistent(t)) Given a modify/copy-consistent configuration γ, let γ CKmon be the configuration that is defined as γ but with the functions SetAttributeValue and DestroyObject disabled. Let A = AP CK \ {DestroyObject, SetAttributeValue}. Then we have for all data interpretations M: Lemma 2: K(γ, M) and K(γ CKmon, M) are simulation equivalent with respect to A. The proof is provided in Appendix D. VII. BEST PRACTICE FOR PARTICULARLY SENSITIVE KEYS Before we start our discussion we need a macro that will enable us to reason about keys which originate securely on the token in one go : secret keys generated by the GenerateKey 9
10 iknowsnoth(k) iknows(k) k iknows(enc(k, k)) k iknows(enc(k, k )) consattr(k) t, t. tcontains(k, t) tcontains(k, t ) a (t.a = t.a) sosetup(k, t) tcontains(k, t) iknowsnoth(k) consattr(k) secureorigin(k, t) init sosetup(k, t) exec GenerateKey(k, t) k pub, t pub exec GenerateKeyPair(k pub, k, t pub, t) Fig. 9. Secure origin of keys function, private keys generated by the GenerateKeyPair function, or secret and private keys set up by the system operator at initialization in a good way. Note that the only guarantee that the secure origin of a key k gives us is that k is fresh and its attributes are consistent at the moment it first appears on the token. The formal definition is given by the macros in Figure 9. We are now ready to discuss how to best set up secret or private keys that are particularly sensitive such as, e.g., secret keys with trusted set to true. Cryptoki offers the following feature to protect such keys: if a key object has the attribute extractable set to false then its value cannot be exported from the token. Furthermore, once extractable is set to false this setting cannot be tampered with by modifying or copying the key object since extractable is specified as sticky-off. We have investigated this feature in [12], and could confirm that it indeed provides very good protection. For all Cryptoki tokens: if a key k originates securely on the token with the extractable attribute set to false then k has always been and will always remain secret. Theorem 2 (c.f. Theorem 4 in [12]): A CK = secureorigin(k, t) t.extractable = false iknows(k) While generating a key k with extractable set to false ensures that k will always remain secure and unextractable it is not guaranteed that k will retain the original setting of its other attributes. For example, if k was generated as an unextractable wrapping key then the intruder might use SetAttributeValue or CopyObject to obtain an instance of k with wrap and decrypt both set. Key k could now be used to mount a wrap/decrypt attack against other keys on the token (c.f. Section II). We can make sure that the original attribute setting of k cannot be tampered with by additionally setting modifiable and copyable to false at key generation. For all Cryptoki tokens: if a key k originates securely on the token with the attributes extractable, modifiable, and copyable set to false then it will retain its original attribute setting in all instances at all time points. h t k t trusted : true wrap : true Theorem 3: h t k t unwrap : true Fig. 10. h wwt k wwt sensitive : true extractable : true wrapwtr : true A CK = secureorigin(k, t) t.extractable = false t.modifiable = false t.copyable = false (tcontains(k, t ) a. t.a = t.a) Proof: c.f. Appendix F. SafeNet recommends a similar set-up in [19] as best practice when setting up keys that are particularly sensitive. Our results confirm that this best practice is secure as long as they have CopyObject disabled. Motivated by these results and the discussion in [19] we say a template satisfies best practice for particularly sensitive keys (psk) if it specifies the attributes extractable, modifiable, and copyable to false. psk(t) t.extractable = false t.modifiable = false t.copyable = false For all Cryptoki tokens: if a key k originates securely on the token with a template that satisfies psk then k will be secure and retain its original attribute setting in all instances at all time points. VIII. THE WRAP WITH TRUSTED FEATURE We now provide our analysis of the wrap with trusted feature. We motivate a configuration by a series of potential attacks, and then prove that this configuration is indeed secure. The series of potential attacks was found by using the proof method in an informal way: if a branch in the tableau cannot be closed it gives rise to an error trace. In our discussion we talk about symmetric and public key cryptography in one go by assuming that the inverse of a symmetric key is the key itself. Motivation: Assume the token is set up with a trusted wrapping key object with value k t and a corresponding unwrapping key object with value the inverse of k t, say k t. Assume we generate a sensitive key object with value k wwt and wrapwtr set to true. We have now available the three key objects depicted in Fig. 10 (possibly in addition to others). What kind of configuration do we need to make sure that k wwt cannot be obtained by an intruder? A secure configuration has at least to protect against the following potential attacks. Potential Attack 1: Wrap with insecure trusted key : A key that is available with trusted set to true must be secure in the sense that its inverse may never be known to the intruder. Otherwise a wrapwtr key can simply be wrapped and then decrypted by the intruder himself: H -> T: WrapKey h t h wwt T -> H: {k wwt} kt I obtains or has already obtained k t. H -> H: IDecrypt k t {k wwt} kt H -> H: k wwt 10
11 An instance of this attack was discovered by modelchecking in [10]. Potential Attack 2: Wrap/decrypt : If a trusted key and its inverse are not protected against the wrap/decrypt role conflict then the classic wrap/decrypt attack (c.f. Section II) can be mounted against wrapwtr keys: H -> T: WrapKey h t h wwt T -> H: {k wwt} kt I obtains or has already obtained h c with: h c k t decrypt : true H -> T: Decrypt h c {k wwt} kt T -> H: k wwt Potential Attack 3: Downgrade to sensitive not set : If the intruder manages to obtain an instance of k wwt where sensitive is no longer set to true then he can simply read out the value k wwt by a call to the GetAttributeValue function. Attribute sensitive is sticky and so it cannot be unset by a call to SetAttributeValue or CopyObject. However, it may still be possible to downgrade k wwt by wrapping and unwrapping it: H -> T: WrapKey h t h wwt T -> H: {k wwt} kt H -> T: UnwrapKey h t {k wwt} kt (sensitive, false) T -> H: h wwt, a handle to the new object: h wwt k wwt H -> T: T -> H: sensitive : false GetAttributeValue h wwt k wwt Potential Attack 4: Downgrade to wrapwtr not set : Similary, we have to make sure that the intruder cannot obtain an instance of k wwt where wrapwtr is no longer set. If the intruder obtains auch an instance he will not get to know k wwt immediately but he can now attack k wwt in the same way as a key that is not protected by wrapwtr. Since wrapwtr is sticky it is protected from being unset when copying and modifying key objects but as above it may be possible to downgrade it by wrapping and unwrapping it: H -> T: WrapKey h t h wwt T -> H: {k wwt} kt H -> T: UnwrapKey h t {k wwt} kt (wrapwtr, false) T -> H: h wwt, a handle to the new object: h wwt k wwt wrapwtr : false I uses the new handle h wwt to attack k wwt in the same way as a usual key. To sum up, the four attacks motivate three necessary conditions: (1) inverse trusted keys must never be known to the intruder; (2) inverse trusted keys must never be available with decrypt set to true; and (3) keys generated with wrapwtr and sensitive set to true must always and in all instances retain these attribute values. By our results of Section VII, condition (1) and (2) will be achieved if we set up inverse trusted keys following best practice for particularly sensitive γ 1 = (AP CK, {}, start 1) where start 1 tcontains(k, t) t.trusted = true inv(k, k ) t. sosetup(k, t ) psk(t ) t.decrypt = false (t.unwraptempl).sensitive = true (t.unwraptempl).wrapwtr = true Fig. 11. Configuration γ 1 keys, and with decrypt set to false. Since trusted keys have to be set up by the SO at initialization it seems no limitation to adopt this best practice. To achieve condition (3) we can make use of the attribute unwraptempl: if we set up inverse trusted keys with the attribute unwraptempl set to a template t with t.sensitive = true and t.wrapwtr = true then altogether this should ensure that keys wrapped under trusted keys can only be imported as sensitive wrapwtr objects. At this point it seems plausible that this is a secure configuration but we don t really know. Could there be a different type of attack we have overseen? How do we even know the configuration is sufficient to achieve the third condition? Formal Result: However, we now translate this approach into the formal configuration γ 1 shown in Fig. 11, and then achieve to prove that it is indeed secure. For all Cryptoki tokens which satisfy configuration γ 1 : If a key k originates securely on the token with the attributes sensitive and wrapwtr set to true then k has always been and will always remain secret. Theorem 4: γ 1 = secureorigin(k, t) t.sensitive = true t.wrapwtr = true iknows(k) The proof is provided in Appendix G. As part of the proof we prove lemmas that establish the conditions (1) (3). IX. DISCUSSION PKCS#11 has often come under justified criticism but it is also important to record its many good features. This is the more important since new key management standards are currently under development. (1) Cryptoki has a clear separation between its logical structure and its supported cryptographic mechanisms. The latter are consistently treated as arguments to the functions we have modelled here. This made it possible for us to provide a formal specification of the mechanism-independent part in less than three pages. (2) The simple message format of Cryptoki that takes only one message as input to its cryptographic functions is a huge advantage from the viewpoint of formal analysis since it allows us, by employing the theory of wellmodedness of [10], to work with a simple typed message algebra without losing any attacks that would be visible in an untyped message algebra. Note that this feature is already lost by the proprietary Eracom extension of PKCS#11 (c.f. [13]), which allows secure wrapping of keys together with their attributes. (This is not visible in [13] since we did not model general mac ing.) (3) Keys that are generated with extractable 11
12 set to false are secure independent of the configuration. This and the best practice for particularly sensitive keys ensures that master keys can be set up in a very secure way. (4) Wrap with trusted is a very good feature, with which extractable keys can be transported in a secure way. This is already enabled by a configuration that only depends on the set-up of trusted keys and their inverses, and thus is suitable for situations when the token configuration is not secure for every key (or simply unknown). This is an advantage compared to the Eracom secure wrapping where if one wrap key is compromised all extractable keys are also compromised [13]. (5) Wrap and unwrap templates are very expressive and can be used (even without wrap with trusted ) to enforce key separation. The caveat is that because of this expressiveness they are also difficult to understand and configure. Acknowledgements: The first author would like to thank Ernst-Rüdiger Olderog for his valuable advice concerning this work. She also thanks Till Mossakowski for information about CASL, and Viorica Sofronie-Stokkermans for helpful discussions at the AVACS meetings. REFERENCES [1] Personal communication at ASA 10 [2] Armando, A., Compagna, L.: SAT-based model-checking for security protocols analysis. Int. J. Inf. Sec. 7(1), 3 32 (2008) [3] Bidoit, M., Mosses, P.: CASL User Manual. Springer (2004) [4] Bond, M., Clulow, J.: Integrity of intention (a theory of types for security apis). Inf. Secur. Tech. Rep. 11, (January 2006) [5] Bortolozzo, M., Centenaro, M., Focardi, R., Steel, G.: Attacking and fixing pkcs#11 security tokens. In: Proceedings of the 17th ACM conference on Computer and communications security. pp CCS 10, ACM (2010) [6] Castellini, C.: Automated Reasoning in Quantified Modal and Temporal Logic. Ph.D. thesis, University of Edinburgh (2004) [7] Clarke, E., Grumberg, O., Peled, D.: Model Checking. MIT Press (1999) [8] Clulow, J.: On the security of PKCS #11. In: CHES 03. LNCS, vol. 2779, pp Springer-Verlag (2003) [9] D Agostino, M., Gabbay, D.M., Hähnle, R., Posegga, J.: Handbook of Tableau Methods. Kluwer Academic Publishers (1999) [10] Delaune, S., Kremer, S., Steel, G.: Formal analysis of PKCS#11. In: CSF 08. pp IEEE Computer Society Press (2008) [11] Durgin, N., Lincoln, P., Mitchell, J., Scedrov, A.: Multiset rewriting and the complexity of bounded security protocols. J. of Computer Security 12(2), (2004) [12] Fröschle, S., Sommer, N.: Reasoning with past to prove PKCS#11 keys secure. In: Formal Aspects of Security and Trust (FAST 10). LNCS, Springer-Verlag (to appear) [13] Fröschle, S., Steel, G.: Analysing PKCS#11 key management APIs with unbounded fresh data. In: ARSPA-WITS 09). LNCS, vol. 5511, pp Springer (2009) [14] Gabbay, D.M.: Labelled Deductive Systems, vol. 1. Oxford Science Publications (1996) [15] Herzog, J.: Applying protocol analysis to security device interfaces. IEEE Security & Privacy 4(4), (2006) [16] Kröger, F., Merz, S.: Temporal Logic and State Systems. Springer-Verlag (2008) [17] Mosses, P. (ed.): CASL Reference Manual. Springer (2004) [18] RSA Laboratories: PKCS#11: Cryptographic Token Interface Standard, vol. v2.30, Draft 4. RSA Security Inc. (July 2009) [19] SafeNet, Inc.: Attacking and fixing PKCS#11 security tokens: A response by SafeNet Inc., in response to [5], available at [20] Sommer, N.: Experiment-based Analysis of PKCS#11. Master s thesis, University of Oldenburg (2009) [21] Thayer, F.J.T., Herzog, J.C., Guttman, J.D.: Strand spaces: Why is a security protocol correct? In: IEEE Symposium on Security and Privacy. pp (1998) APPENDIX A. Model Semantics of FOLTL+p A formula F is true on run r at time point i under the variable valuation ξ, written r, i = ξ F, if and only if: r, i = ξ A iff M = ξ A where A rigid and atomic. r, i = ξ init iff i = 0 r, i = ξ p(t 1,..., t n ) iff (ξ(t 1 ),..., ξ(t n )) p ηi r, i = ξ exec a(t 1,..., t n ) iff (ξ(t 1 ),..., ξ(t n )) a αi r, i = ξ F G iff if r, i = ξ F then r, i = ξ G r, i = ξ F iff r, i + 1 = ξ F r, i = ξ F iff r, j = ξ F for all j i r, i = ξ F iff if i > 0 then r, i 1 = ξ F r, i = ξ F iff r, j = ξ F for all j i r, i = ξ xf iff there is ξ with ξ x ξ and r, i = ξ F For the other logical operators (in particular,,, and ) the definitions carry over as usual. A formula F is valid on r (or r satisfies F ), written r = F, if r, i = ξ F at all i for every variable valuation ξ. A formula F is valid in K (or K satisfies F ), denoted by K = F, if K = r for every r Runs. B. Model Semantics of Security API Theories Model Semantics: Let TSIG be a temporal signature, and A = (D, start, R) be a security API theory over TSIG. Assume a structure M for SIG. We first define a notion of state and action over TSIG and M. A state η is a finite multiset of facts, where a fact is an expression p(v 1,..., v n ) such that p is a flexible predicate symbol and v 1,..., v n are values in M of the appropriate sorts. Each state η associates a relation p η M s1 M sn with each flexible predicate symbol p : s 1 s n by: (v 1,..., v n ) p η iff p(v 1,..., v n ) η. Similarly, an action α is an expression a(v 1,..., v n ) where a is an action predicate symbol and v 1,..., v n are values of the appropriate sorts. Each action α associates a relation a α M s1 M sn with each action predicate symbol a : s 1 s n by: (v 1,..., v n ) a q iff α = a(v 1,..., v n ). Thereby, each state gives interpretation to the flexible predicate symbols, and each action gives interpretation to the action predicate symbols. Given a variable valuation ξ in M, a set of flexible predications Q can be evaluated into a state, and an action predication a(x) into an action respectively. We write ξ(q), and ξ(a(x)) respectively. The set of finite runs of A over M, denoted by FRuns(A, M), is inductively defined as follows: each state η over TSIG and M is a finite run if and only if M, η = start; each alternating sequence η 0 α 1 η 1 α 2... α i 1 η i α i η i+1 of states and actions over TSIG and M is a finite run iff η 0 α 1... α i 1 η i is a finite run, and there exists a rule r R of the above form, and a valuation ξ for x y such that 1) ξ assigns to the variables in y distinct values that do not occur in η 0 α 1... α i 1 η i, 12
13 2) ξ(q) η i, 3) M = ξ C, 4) α i = ξ(a(xy)), and 5) η i+1 = (η i \ ξ(q)) ξ(q ) (where \ and are interpreted as multiset operations.) The set of infinite runs of A over M, denoted by Runs(A, M), is given by the set of infinite alternating sequences of states and actions such that every prefix ending in a state is a finite run of A over M. The semantics of A over M is given by the temporal structure K = (M, Runs(A, M)). The semantics of A is given by the class of those temporal structures K = (M, Runs(A, M)) where M is a model of the data type specification D. C. Proof of Theorem 1 Let H be a simulation relation of K by K with respect to A. We say two infinite runs K = η 0 α 1 η 1 α 2... in K and r = η 0α 1η 1α 2... in K correspond in H if and only if for every i 0, (η 0 α 1... η i, η 0α 1... η i ) H and aαi = a α i for every a A. Lemma 3: Let H be a simulation relation with respect to A of K by K. Then for every infinite run r of K there is an infinite run r of K such that r and r correspond in H. Proof: Let r = η 0 α 1 η 1 α 2... be an infinite run of K. We construct an infinite run r = η 0α 1η 1α 2... of K that corresponds with r in H by induction. By definition there is η 0 such that (η 0, η 0) H. For i > 0, there must be (η 0 α 1... η i, η 0α 1... η i ) H by induction hypothesis. Then α i+1 since η 0 α 1... η i η0 α 1... α i η i α i+1 η i+1 there must be a matching transition η 0α 1... η i α η 0 α 1... α i η i α η in K such that (η 0 α 1... η i α i+1 η i+1, η 0α 1... η i αη) H and a αi+1 = a α for all a A. We choose α i+1 to be α and η i+1 to be η. Lemma 4: Let H be a simulation relation with respect to A of K by K, and assume that r and r are infinite runs corresponding in H. Then, for all formulas F with action predications over A, time points i, and variable valuations ξ we have: r, i = ξ F iff r, i = ξ F. Proof: The lemma follows by induction on the structure of F. We only prove one direction, the other direction is analogous. Base case: Assume r, i = ξ F for an atomic formula F. We need to show r, i = ξ F. There are three cases to consider: (a) F is a non-flexible atomic formula, (b) F is a flexible predication, and (c) F is an exec predication. (a) is immediate because K and K have the same underlying structure M. (b) and (c) follow since r and r are corresponding in H. For (b) recall clause (1) of the definition of simulation. For (c) recall that F only contains action predications over A. Inductive case: We only consider the case F = G. The other cases are similar. Assume r, i = ξ G. By the semantics of the always operator r, j = ξ G for all j i. Then, by the induction hypothesis r, j = ξ G for all j i, and hence r, i = ξ G. Theorem 1 is now immediate with the two lemmas. D. Proof of Lemma 2 Let M be a structure for D CK. Since γ CKmon γ it follows from Lemma 1 that γ over M simulates γ CKmon over M. To show the opposite direction we inductively construct a simulation relation H of γ over M by γ CKmon over M with respect to A. We also assume the intruder can do a silent action nop. (η 0, η 0 ) H for every η 0 FRuns(γ, M), if (r, r ) H and r a(v) r 1 and r α r 1 such that nop if a = DestroyObject α = CopyObject(v) if a = SetAttributeValue a(v) otherwise then add (r 1, r 1) H. Throughout the construction the following invariant holds: Fact 1: For all (r, r ) H we have: 1) η η, where η and η is the final state of r, and r respectively. 2) If the action SetAttributeValue(v) is enabled at r then CopyObject(v) is enabled at r. It is easy to check that this is indeed preserved due to modify/copy consistency. 13
14 E. Proof Method Security properties formulated in FOLTL+p can be proved very naturally by backwards analysis. We begin by assuming the opposite, which gives us two time points along our execution sequence: a time point τ 0 where the key is about to be generated and a time point τ l where the intruder knows k. We then analyse how we could have got to the bad time point τ l. For this we apply reasoning such as: if the intruder knows key k at τ l but the key was secret at τ 0+1, the time point just after generation, then there must be a time point τ between τ 0 and τ l where the intruder is about to obtain k, i.e., where iknows(k) iknows(k) holds. We can then analyse by which action he could have obtained k, and further analyse what could have happened under the induction hypothesis that the intruder does not know k. We proceed in this fashion until we reach a contradiction on all branches. Labelled Formulas and Constraints: To be able to reason in this fashion we need to have explicit names for time points, and refer to them and the way they are related. The standard way to do this is to use the LDS (labelled deductive system) approach of Gabbay [14], where, in general, one can use labels to name worlds and a labelling language to describe patterns of worlds. For our linear-time framework the syntax and semantics is similar to that in [6]. We assume a sort of time, which will be interpreted by the natural numbers; the linear structure of time will be reflected by a successor function +1, a predecessor function 1 (since we work with past), and a binary relation. This gives rise to the following syntax of labels and constraints, where V is a set of time variables. lab ::= 0 t lab + 1 lab 1 where t V cst ::= lab lab lab. = lab In the following, we let τ range over labels, possibly annotated with subscripts. We call formulas as defined above logical formula. If F is a logical formula then τ : F is a labelled formula. Informally, τ : F means F is true at time τ. Logical formula, labelled formula, and constraints collectively form the set of formulas of FOLTL+p(TSIG). Theories: We will formulate a set of axioms that describe assertions about the runs of any Cryptoki token. Formally, this gives rise to a theory such that any temporal structure that models a Cryptoki token is a model of the theory. A theory T is a satisfiable set of logical sentences. A T -model is a temporal structure that satisfies all formulas in T. A logical formula F is T -valid, denoted by T = F, iff every temporal structure K that satisfies the axioms of T, i.e., K = A for every A T, also satisfies F, i.e., K = F. As usual, the following connection holds: Proposition 1: Given a theory T and a logical sentence F, T = F iff T F is unsatisfiable. Tableau System: To prove T -validity of a logical sentence F we use a tableau method: we construct a proof tree that shows that the set of sentences T F is unsatisfiable. We begin by assuming F and proceed by applying proof rules that implement the semantic definitions of the connectives. For some rules the tableau branches into several columns. Thus, a proof evolves as a tree rather than linearly. At any time we can extend a branch by a node with a formula of T. If we manage to derive a contradiction on each branch then we have proved that the assumption T F is unsatisfiable, and hence that F is T -valid. Fig. 12 shows the proof rules for the first-order logic connectives. Apart from the labels they are like the rules of standard first-order tableaux methods (e.g. [9]). Note that justified by the associativity of the connectives and we permit more than two formulas in a conjunction or disjunction. Fig. 13 shows all the remaining rules. First, there are proof rules for introducing labels. Secondly, there are the proof rules for the temporal connectives. For example, if at time point τ, F holds and τ is a time point equal or later than τ then we can deduce that F holds at τ. The frame rules reflect characteristics of linear time such as transitivity and reflexivity of, and rules which model the behaviour of and the successor function. As usual, we use τ < τ short for τ τ (τ. = τ ). We also use derived proof rules to make proofs more concise. The rule (MP) is a special form of modus ponens, which will be useful when applying axioms. The remaining rules give reasoning principles in the context of monotonic formulas. For example, Rule (Mon1) expresses that when F does not hold at a time point τ but F does hold at a time point τ and F is monotonic then there must be a time point τ between τ and τ at which F is about to become true. A branch B of a tableau is called closed if a formula F and its negation both appear on B. The soundness of the proof rules is straightforward from the semantics. As usual, soundness of the tableau method follows from the soundness of the proof rules, and we obtain: Theorem 5 (Soundness): If every branch of a tableau proof of the set of sentences T F is closed then T F is unsatisfiable, and hence F is T -valid. Cryptoki Axioms: We can easily derive axioms (c.f. Figure 15 and 16) from our conditional rewrite rules that model the commands of Cryptoki in the following way: Exec Rules express enabling conditions for the commands and consequences for the next state. Obtain Rules axiomatize how the intruder can obtain a new situation that may be beneficial for his attack: the knowledge of a key or an encryption, or the availability of a key on the token in a certain role or with a certain attribute 14
15 τ : F τ : F α τ : xf τ : F {x/t} γ for any ground term t τ : F 1 F n τ : F i α τ : (F 1 F n ) τ : F 1 τ : F n β τ : xf τ : F {x/t} γ for any ground term t τ : (F 1 F n ) τ : F i α τ : F 1 F n τ : F 1 τ : F n β τ : xf τ : F {x/c} δ for any new constant c τ : (F G) τ : F τ : G α τ : F G τ : F τ : G β τ : xf τ : F {x/c} δ for any new constant c Fig. 12. Semantic rules for first-order logic connectives Rules for introducing labels F τ : F Lab1 for a new label τ F τ : F Lab2 for any label τ Semantic rules for temporal connectives: τ : F τ + 1 : F τ τ τ : F τ : F τ : F τ τ τ : F for a new label τ 0 < τ τ : F τ 1 : F τ τ τ : F τ : F τ : F τ τ τ : F for a new label τ Frame rules: τ τ F1 τ τ τ τ τ τ F2 τ+1 τ τ < τ F 3 τ < τ τ+1 τ F 4 (τ+1. = 0) F 5 Derived rules: τ : F 1 τ : F n F 1 F n G 1 G m τ : G i MP τ : F τ : F F F τ τ Mon1 τ < τ τ : F τ : F for a new label τ τ τ τ : F F F τ : F τ τ τ : F F F τ : F Mon2 Mon3 Fig. 13. Other proof rules 15
16 tcontains(k) t. tcontains(k, t) isavail(k, a) t. tcontains(k, t) t.a = true avundef (k, a) t. tcontains(k, t) (def t.a) rolescons(k) t, t, a, x. tcontains(k, t) tcontains(k, t ) t.a = x t.a = x fresh(k) ( iknows(k) k iknows(enc(k, k)) k iknows(enc(k, k )) t tcontains(k, t)) notset(t, a) (def t.a) t.a = false avnotset(k, a) t.tcontains(k, t) ( def t.a t.a = false). Fig. 14. Abbreviations undefined. Finally, there is an axiom that expresses monotonicity of the intruder knowledge and token contents. The theory is sound with respect to our monotonic abstraction. Note that the Obtain Rules for messages are sound due to the fact that our message algebra is free. F. Relating to Section VII For all Cryptoki tokens: if a key k originates securely on the token with template t then k is fresh in that the intruder has never known anything about k and in that k has never been on the token before the current time point. Further, k is now available on the token with attribute set t and its attributes are still consistent. Proposition 2: Γ CK = secureorigin(k, t) iknowsnoth(k) ontoken(k) tcontains(k, t) consattr(k) Proof: This follows easily by the definitions. Proof of Theorem 3: We only give an informal argument since this relates to our proof of Theorem 2 in [12]. The attributes of k were consistent at their secure origin. If there is a time point were they are not consistent any more then there must be an intermediary time point of first change. This change can only be obtained by UnwrapKey (because CopyObject is not possible by our assumption that this is the point of first change). So there must be an encryption of k available. But this is impossible by our results about keys generated with extractable set to false in [12]. G. Proof of Theorem 4 In the following, we use a macro that expresses that a key k is available in the token as an object where attribute a is not set: avnotset(k, a) t.tcontains(k, t) ( def t.a t.a = false). Lemma 5: γ 1 = isavail(k, trusted) inv(k, k ) iknows(k ) isavail(k, decrypt) t. tcontains(k, t) (t.unwraptempl).wrapwtr = true t. tcontains(k, t) (t.unwraptempl).sensitive = true Proof: This follows from Theorem 2 and 3. Lemma 6: γ 1 = exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr))) Proof: The proof follows in Appendix H. Theorem 4: γ 1 = secureorigin(k, t) t.sensitive = true t.wrapwtr = true iknows(k) Proof: 1) We start by assuming that the given formula is invalid. Hence, there is a time τ 0 when the formula does not hold. Then at τ 0 the antecedent of the implication and the negation of the consequent must hold. 0 (exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true iknows(k)) 1 τ 0 : (exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true iknows(k)) 0, Lab1 2 τ 0 : exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true 1, α 3 τ 0 : ( iknows(k)) 1, α 16
17 Exec Rules: Object management 1) exec CreateObject(k, t) iknows(k) (t.trusted = true) 2) exec CopyObject(k, t) isavail(k, copyable) 3) exec CopyObject(k, t, ) (def t.a) avundef (k, a) 4) exec CopyObject(k, t) t.extractable = true isavail(k, extractable) avundef (k, extractable) 5) CopyObject sticky: for a {wrapwtr, sensitive}, exec CopyObject(k, t) notset(t, a) avnotset(k, a) 6) exec GetAttributeValue(k) avnotset(k, sensitive) (avundef (k, extractable) isavail(extractable)) Encryption and decryption 7) exec Encrypt(k e, k) isavail(k e, encrypt) iknows(k) 8) exec Decrypt(k d, k) isavail(k d, decrypt) k e. inv(k e, k d ) iknows(enc(k e, k)) Key management 9) exec GenerateKey(k, t) fresh(k) inv(k, k) tcontains(k, t) rolescons(k) iknows(k) 10) exec GenerateKeyPair(k pu, k pr, t pu, t pr ) fresh(k pu ) fresh(k pr ) inv(k pu, k pr ) tcontains(k pu, t pu ) rolescons(k pu ) iknows(k pu ) tcontains(k pr, t pr ) rolescons(k pr ) iknows(k pr ) 11) exec WrapKey(k w, k) isavail(k w, wrap) isavail(k, extractable) (isavail(k w, trusted) avnotset(k, wrapwtr)) 12) exec UnwrapKey(k u, k, t) isavail(k u, unwrap) (t.trusted = true) ( k w. inv(k w, k u ) iknows(enc(k w, k))) ( t u. tcontains(k u, t u ) ( (def t u.unwraptempl) match(t, t u.unwraptempl))) Intruder 13) exec IntrEncrypt(k e, k) iknows(k e ) iknows(k) 14) exec IntrDecrypt(k d, k) iknows(k d ) k e. inv(k e, k d ) iknows(enc(k e, k)) Obtain Rules: 1) ObtainKey iknows(k) iknows(k) k d exec Decrypt(k d, k) k d exec IntrDecrypt(k d, k) exec GetAttributeValue(k) 2) ObtainEnc I iknows(enc(k e, k)) iknows(enc(k e, k)) exec Encrypt(k e, k) exec IntrEncrypt(k e, k) exec WrapKey(k e, k) 3) ObtainEnc II iknows(k) iknows(enc(k e, k)) iknows(enc(k e, k)) exec WrapKey(k e, k) 4) ObtainAvail tcontains(k) isavail(k, a) isavail(k, a) t. t.a = true (exec CreateObject(k, t) exec CopyObject(k, t) k u exec UnwrapKey(k u, k, t)) 5) ObtainUndef tcontains(k) avundef (k, a) avundef (k, a) t. (def t.a) (exec CreateObject(k, t) exec CopyObject(k, t) k u exec UnwrapKey(k u, k, t)) 6) ObtainNotSet tcontains(k) avnotset(k, a) avnotset(k, a) t. notset(t, a) (exec CreateObject(k, t) exec CopyObject(k, t) k u exec UnwrapKey(k u, k, t)) 7) ObtainNotSet II iknows(k) tcontains(k) avnotset(k, a) avnotset(k, a) t. notset(t, a) (exec CopyObject(k, t) k u exec UnwrapKey(k u, k, t)) Fig. 15. Cryptoki theory T CK 17
18 Monotonicity: 1) M-iknows: iknows(m) iknows(m) 2) M-tcontains: tcontains(k, t) tcontains(k, t) Fig. 16. Cryptoki theory T CK From (2) and Prop. 2 we derive several consequences from the assumption that k originates securely on the token at time τ 0 with template t. These facts will be important later on. 4 τ 0 : iknows(k) 5 τ 0 : k e iknows(enc(k e, k)) From (2) and Lemma 6 we further obtain: 6 τ 0 : ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr))) 7 iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr)) 6, On the other hand, from (3) we deduce that there is some time τ l when the intruder knows k. 8 τ l : iknows(k) 3, 2) The intruder does not know k at τ 0 (1.4) but he knows k at τ l (1.8). Hence, using (Mon1) and monotonicity of intruder knowledge we obtain a time τ 1 between τ 0 and τ l when the intruder is about to obtain k. By (1.4), (1.8), and (M-iknows) with (Mon1): 1 τ 0 τ 1 2 τ 1 < τ l 3 τ 1 : iknows(k) 4 τ 1 : iknows(k) We are now at a time point where the intruder does not know k and so we can apply (1.7): L1 τ 1 : (avnotset(k, sensitive) avnotset(k, wrapwtr)) 3, 1.7, MP L2 τ 1 : avnotset(k, sensitive) L1, α L3 τ 1 : avnotset(k, wrapwtr) L1, α We analyse how the intruder obtained k using (ObtainKey): 5 τ 1 : k d exec Decrypt(k d, k) k d exec IntrDecrypt(k d, k) exec GetAttributeValue(k) 3, 4, ObtainKey, MP We have three cases to analyse. The last we can eliminate immediately, so we do this first: 6c τ 1 : exec GetAttributeValue(k) 5, β 7c τ 1 : avnotset(k, sensitive) 6c, GetAttributeValue, MP 8c Contradiction! L2, 7c In both of the remaining cases we deduce that at τ 1 the intruder knows an encryption of k by some key k e. 6a τ 1 : k d. exec Decrypt(k d, k) 5, β 7a τ 1 : exec Decrypt(k d, k) 6a, δ 8a τ 1 : isavail(k d, decrypt) k e. inv(k e, k d ) iknows(enc(k e, k)) 7a, Decrypt, MP 9a τ 1 : inv(k d, k d) iknows(enc(k d, k)) 8a, α, δ 10a inv(k d, k d) 9a, α 11a τ 1 : iknows(enc(k d, k)) 9a, α 12a τ 1 : isavail(k d, decrypt) 8a, α 6b τ 1 : k d. exec IntrDecrypt(k d, k) 5, β 7b τ 1 : exec IntrDecrypt(k d, k) 6b, δ 8b τ 1 : iknows(k d ) k e. inv(k e, k d ) iknows(enc(k e, k)) 7b, IntrDecrypt, MP 9b τ 1 : inv(k d, k d) iknows(enc(k d, k)) 8b, α, δ 10b inv(k d, k d) 9b, α 11b τ 1 : iknows(enc(k d, k)) 9b, α 12b τ 1 : iknows(k d ) 8b, α We can continue analogously for both branches. 3) We have just derived that at τ 1 the intruder has got an encryption of k under k d (2.11). On the other hand, by (1.5) we know that at τ 0 he does not know any encryption of k yet, and hence neither the encryption of k under k d : 1 τ 0 : iknows(enc(k d, k)) 1.5, γ 18
19 Then, by (Mon1) there must be a time point τ 2 between τ 0 and τ 1 when the intruder is about to obtain this encryption. By (1), (2.11), and (M-iknows) with (Mon1): 2 τ 0 τ 2 3 τ 2 < τ 1 4 τ 2 : iknows(enc(k d, k)) 5 τ 2 : iknows(enc(k d, k)) By monotonicity we carry over from τ 1 : 6 τ 2 : iknows(k) 3, 2.3, M-iknows, Mon3 6 τ 2 : avnotset(wrapwtr) 3, 2.L3, Mon-avNotSet, Mon3 We analyse how the intruder obtained the encryption using the fact that he does not know k at τ 2 : 7 τ 2 : exec WrapKey(k d, k) 6, 4, 5, ObtainEnc II, MP We explore consequences of the action WrapKey(k d, k) using (WrapKey): 8 τ 2 : isavail(k d, trusted) avnotset(k, wrapwtr) 7, WrapKey We have two cases to analyse: (a) the wrapping key k d is available with trusted set, or (b) there is an instance of k (the key to be wrapped) which has wrapwtr not set. We can eliminate both cases and close all branches. Case (a): by Lemma 5 the inverse of a key available with trusted set is unknown to the intruder and not available with decrypt set at any time point. But this is a contradiction to (2.12a), and (2.12b) respectively. Case (b): we have a contradiction with (6 ). 9a τ 2 : isavail(k d, trusted) 8, β 10a τ 2 : ( iknows(k d ) isavail(k d, decrypt)) 9a, 2.10, Lemma 5, MP 11a τ 1 : iknows(k d ) isavail(k d, decrypt) 10a, 12a Contradiction! 2.12a/2.12b, 11a 9b τ 2 : avnotset(k, wrapwtr) 8, β 10b Contradiction! 6, 9b H. Proof of Lemma 6 Lemma 6: γ 1 = exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr))) Proof: 1) We start by assuming that the above formula is invalid. Hence, there is a time τ 0 when the formula does not hold. Then at τ 0 the antecedent of the implication and the negation of the consequent must hold. 0 (exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr)))) 1 τ 0 : (exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr)))) 0, Lab1 2 τ 0 : exec secureorigin(k, t) t.sensitive = true t.wrapwtr = true 1, α 3 ( ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr)))) 1, α From (2) and Prop. 2 we derive several consequences from the assumption that k originates securely on the token at time τ 0 with template t. These facts will be important later on. 5 τ 0 : k e iknows(enc(k e, k)) 6 τ 0 : tcontains(k) 7 τ 0 : (avnotset(k, wrapwtr) avnotset(k, sensitive)) On the other hand, from (3) we deduce that there is some bad time τ b when although the intruder does not know k, k is available with sensitive or wrapwtr not set to true. 8 τ b : ( iknows(k) (avnotset(k, sensitive) avnotset(k, wrapwtr))) 3, 9 τ b : iknows(k) 8, α 10 τ b : avnotset(k, sensitive) avnotset(k, wrapwtr) 8, α 2) We have just derived that at τ b key k is available with attribute sensitive or wrapwtr not set. On the other hand, from (1.7) we know that this is not the case at τ 0. Hence, we can apply (Mon1) to obtain a time point τ 3 when the intruder is about to obtain this change. By (1.7), (1.10), and (Mon-avNotSet) with (Mon1): 19
20 1 τ 0 τ 3 2 τ 3 < τ b 3 τ 3 : (avnotset(k, sensitive) avnotset(k, wrapwtr)) 4 τ 3 : (avnotset(k, sensitive) avnotset(k, wrapwtr)) 3 τ 3 : avnotset(k, sensitive) 3, α 3 τ 3 : avnotset(k, wrapwtr) 3, α We carry over several facts by monotonicity: 5 τ 3 : tcontains(k) 1, 1.6, M-tcontains, Mon2 6 τ 3 : iknows(k) 2, 1.9, M-iknows, Mon3 We analyse how this change could have been obtained. Using the fact that key k is on the token but unknown to the intruder at τ 3, we apply (ObtainUnset II) to derive that the change was obtained by copying or importing k: 7 τ 3 : t. (notset(t, sensitive) notset(t, wrapwtr)) (exec CopyObject(k, t) k u exec UnwrapKey(k u, k, t)) 6, 5, 3, 4, ObtainUnset II, MP 8 τ 3 : (notset(t c, sensitive) notset(t c, wrapwtr)) (exec CopyObject(k, t c ) k u exec UnwrapKey(k u, k, t c )) 7, δ 9 notset(t c, sensitive) notset(t c, wrapwtr) 8, α We have two cases to analyse: 9 a notset(t c, sensitive) 9, β 9 b notset(t c, wrapwtr) 9, β The development of the cases and reaching a contradiction is completely analogous. Therefore we now fix the latter case and work under assumption of (9 b). 10 τ 3 : exec CopyObject(k, t c ) k u exec UnwrapKey(k u, k, t c ) 8, α There are two cases to consider but we can immediately rule out the first: wrapwtr is sticky, and, hence, we can only obtain a copy of k with wrapwtr not set if there is an instance of k with wrapwtr not set in the token already. But this is a contradiction to our assumption (3 ). 11a τ 3 : exec CopyObject(k, t c ) 10, β 12a τ 3 : avnotset(k, wrapwtr) 11a, 9 b, CopyObject-sticky, MP 13a Contradiction! 3, 12a 11b τ 3 : k u exec UnwrapKey(k u, k, t c ) 10, β 12b τ 3 : exec UnwrapKey(k u, k, t c ) 11b, δ We now derive consequences of this occurrence of UnwrapKey which will be important later on. On the one hand, we deduce that at τ 3 the intruder has got an encryption of k under the inverse of k u. 13b τ 3 : k w. inv(k w, k u ) iknows(enc(k w, k)) 12b, UnwrapKey, MP 14b τ 3 : inv(k u, k u ) iknows(enc(k u, k)) 13b, δ 15b inv(k u, k u ) 14b, α 16b τ 3 : iknows(enc(k u, k)) 14b, α On the other hand, we derive that there must be an instance of k u in the token with attribute set t u such that k can be unwrapped into a key object with wrapwtr not set. This means t u must either have attribute unwraptempl undefined or such that t c matches against its value. 17b τ 3 : t u. tcontains(k u, t u ) ( (def t u.unwraptempl) match(t c, t u.unwraptempl)) 12, UnwrapKey, MP 18b τ 3 : tcontains(k u, t u ) ( (def t u.unwraptempl) match(t c, t u.unwraptempl)) 17b, δ 19b τ 3 : tcontains(k u, t u ) 18b, α 20b (def t u.unwraptempl) match(t c, t u.unwraptempl) 18b, α 3) We have derived that at τ 3 the intruder has got the encryption of k under k u (2.16b). We also know that at τ 0 the intruder does not know any encryption of k (1.5), and, hence, neither the encryption of k under k u: 1 τ 0 : iknows(enc(k u, k)) 1.5, γ Then, by (Mon1) there must be a time point τ 4 between τ 0 and τ 3 when the intruder is about to obtain this encryption. By (1), (2.16b) and (M-iknows) with (Mon1): 2 τ 0 τ 4 3 τ 4 < τ 3 4 τ 4 : iknows(enc(k u, k)) 20
21 5 τ 4 : iknows(enc(k u, k)) We carry over some facts by monotonicity: 6 τ 4 : iknows(k) 3, 2.6, Mon-iknows, Mon3 7 τ 4 : avnotset(k, wrapwtr) 3, 2.3, Mon-avNotSet, Mon3 How was this encryption obtained? Using the fact that the intruder does not know k at τ 4, by ObtainEnc II we derive that it must have been obtained by a call to WrapKey: 8 τ 4 : exec WrapKey(k u, k) 6, 4, 5, ObtainEnc II, MP We analyse the consequences of this action using (WrapKey). There are two cases: (a) there is an instance of k where wrapwtr is not set, or (b) the wrapping key k u is available as trusted. Since we work under the assumption that (a) does not hold we can derive a contradiction for this case immediately; while (b) will be the interesting case to explore. 9 τ 4 : isavail(k u, trusted) avnotset(k, wrapwtr) 8, WrapKey, MP 10a τ 4 : avnotset(k, wrapwtr) 9, β 11a Contradiction! 7, 10a Hence, at τ 4, k u must be available as trusted. From this and Lemma 5 we can immediately harvest properties about any instance of its inverse k u for any time point. We will do so for the instance of k u with attribute set t u that we reasoned about at time point τ 3. We can now derive that t u must have its attribute unwraptempl defined such that unwrapping with k u will always lead to key objects which have wrapwtr set. But this is a contradiction to what we have derived about t u above (2.20b). Hence, we will reach a final contradiction. Formally, this goes as follows: 10b τ 4 : isavail(k u, trusted) 9, β 11b τ 4 : ( t.tcontains(k u, t) (t.unwraptempl).wrapwtr = true) 10b, 2.15b, Lemma 5, MP 12b τ 3 : t.tcontains(k u, t) (t.unwraptempl).wrapwtr = true 11b, 13b τ 3 : tcontains(k u, t u ) (t u.unwraptempl).wrapwtr = true 12b, γ We continue with a case split: the negation of the antecedent of the implication or its consequent must hold. The first case leads to a contradiction immediately: 14ba τ 3 : tcontains(k u, t u ) 13b, β 15ba Contradiction! 2.19b, 14ba 14bb (t u.unwraptempl).wrapwtr = true 13b, β 15bb def (t u.unwraptempl).wrapwtr 14bb, strong equality = 16bb def t u.unwraptempl 15bb, function strictness We now branch according to what we have derived about t u in (2.20b): t u must have unwraptempl undefined or such that t c matches against it. But t c has wrapwtr not set (2.9 b). Thus, for both cases we have a contradiction to what we have just learned about t u. 17bba (def t u.unwraptempl) 2.20b, β 18bba Contradiction! 16bb, 17bba 17bbb match(t c, t u.unwraptempl) 2.20b, β 18bbb t c.wrapwtr = (t u.unwraptempl).wrapwtr 17bbb, 15bb, match axiom 19bbb t c.wrapwtr = true 18bbb, 14bb, transitivity = 20bbb Contradiction! 2.9 b, 19bbb 21
CHAPTER 7 GENERAL PROOF SYSTEMS
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes
Software Modeling and Verification
Software Modeling and Verification Alessandro Aldini DiSBeF - Sezione STI University of Urbino Carlo Bo Italy 3-4 February 2015 Algorithmic verification Correctness problem Is the software/hardware system
Verifying security protocols using theorem provers
1562 2007 79-86 79 Verifying security protocols using theorem provers Miki Tanaka National Institute of Information and Communications Technology Koganei, Tokyo 184-8795, Japan Email: [email protected]
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical
A Propositional Dynamic Logic for CCS Programs
A Propositional Dynamic Logic for CCS Programs Mario R. F. Benevides and L. Menasché Schechter {mario,luis}@cos.ufrj.br Abstract This work presents a Propositional Dynamic Logic in which the programs are
CALIFORNIA SOFTWARE LABS
; Digital Signatures and PKCS#11 Smart Cards Concepts, Issues and some Programming Details CALIFORNIA SOFTWARE LABS R E A L I Z E Y O U R I D E A S California Software Labs 6800 Koll Center Parkway, Suite
Development of dynamically evolving and self-adaptive software. 1. Background
Development of dynamically evolving and self-adaptive software 1. Background LASER 2013 Isola d Elba, September 2013 Carlo Ghezzi Politecnico di Milano Deep-SE Group @ DEIB 1 Requirements Functional requirements
Software Engineering using Formal Methods
Software Engineering using Formal Methods Model Checking with Temporal Logic Wolfgang Ahrendt 24th September 2013 SEFM: Model Checking with Temporal Logic /GU 130924 1 / 33 Model Checking with Spin model
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
Cryptography and Network Security Department of Computer Science and Engineering Indian Institute of Technology Kharagpur
Cryptography and Network Security Department of Computer Science and Engineering Indian Institute of Technology Kharagpur Module No. # 01 Lecture No. # 05 Classic Cryptosystems (Refer Slide Time: 00:42)
Attacking and Fixing PKCS#11 Security Tokens
Attacking and Fixing PKCS#11 Security Tokens Matteo Bortolozzo, Matteo Centenaro Riccardo Focardi and Graham Steel Università Ca Foscari, Venezia and LSV, INRIA & CNRS & ENS-Cachan RSA PKCS#11 Describes
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving Alessandro Armando 1,2 and Silvio Ranise 2, 1 DIST, Università degli Studi di Genova, Italia 2 Security
Attestation and Authentication Protocols Using the TPM
Attestation and Authentication Protocols Using the TPM Ariel Segall June 21, 2011 Approved for Public Release: 11-2876. Distribution Unlimited. c 2011. All Rights Reserved. (1/28) Motivation Almost all
Mathematics for Computer Science/Software Engineering. Notes for the course MSM1F3 Dr. R. A. Wilson
Mathematics for Computer Science/Software Engineering Notes for the course MSM1F3 Dr. R. A. Wilson October 1996 Chapter 1 Logic Lecture no. 1. We introduce the concept of a proposition, which is a statement
A Note on Context Logic
A Note on Context Logic Philippa Gardner Imperial College London This note describes joint work with Cristiano Calcagno and Uri Zarfaty. It introduces the general theory of Context Logic, and has been
SECURITY ANALYSIS OF A SINGLE SIGN-ON MECHANISM FOR DISTRIBUTED COMPUTER NETWORKS
SECURITY ANALYSIS OF A SINGLE SIGN-ON MECHANISM FOR DISTRIBUTED COMPUTER NETWORKS Abstract: The Single sign-on (SSO) is a new authentication mechanism that enables a legal user with a single credential
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
Adversary Modelling 1
Adversary Modelling 1 Evaluating the Feasibility of a Symbolic Adversary Model on Smart Transport Ticketing Systems Authors Arthur Sheung Chi Chan, MSc (Royal Holloway, 2014) Keith Mayes, ISG, Royal Holloway
Chapter II. Controlling Cars on a Bridge
Chapter II. Controlling Cars on a Bridge 1 Introduction The intent of this chapter is to introduce a complete example of a small system development. During this development, you will be made aware of the
SecureDoc Disk Encryption Cryptographic Engine
SecureDoc Disk Encryption Cryptographic Engine FIPS 140-2 Non-Proprietary Security Policy Abstract: This document specifies Security Policy enforced by SecureDoc Cryptographic Engine compliant with the
Fundamentals of Software Engineering
Fundamentals of Software Engineering Model Checking with Temporal Logic Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard Bubel, Reiner
SECURITY IMPROVMENTS TO THE DIFFIE-HELLMAN SCHEMES
www.arpapress.com/volumes/vol8issue1/ijrras_8_1_10.pdf SECURITY IMPROVMENTS TO THE DIFFIE-HELLMAN SCHEMES Malek Jakob Kakish Amman Arab University, Department of Computer Information Systems, P.O.Box 2234,
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
Simulation-Based Security with Inexhaustible Interactive Turing Machines
Simulation-Based Security with Inexhaustible Interactive Turing Machines Ralf Küsters Institut für Informatik Christian-Albrechts-Universität zu Kiel 24098 Kiel, Germany [email protected]
Automated Theorem Proving - summary of lecture 1
Automated Theorem Proving - summary of lecture 1 1 Introduction Automated Theorem Proving (ATP) deals with the development of computer programs that show that some statement is a logical consequence of
Technical Description. DigitalSign 3.1. State of the art legally valid electronic signature. The best, most secure and complete software for
Technical Description DigitalSign 3.1 State of the art legally valid electronic signature The best, most secure and complete software for Adding digital signatures to any document, in conformance with
Fixed-Point Logics and Computation
1 Fixed-Point Logics and Computation Symposium on the Unusual Effectiveness of Logic in Computer Science University of Cambridge 2 Mathematical Logic Mathematical logic seeks to formalise the process of
Victor Shoup Avi Rubin. fshoup,[email protected]. Abstract
Session Key Distribution Using Smart Cards Victor Shoup Avi Rubin Bellcore, 445 South St., Morristown, NJ 07960 fshoup,[email protected] Abstract In this paper, we investigate a method by which smart
SQL INJECTION ATTACKS By Zelinski Radu, Technical University of Moldova
SQL INJECTION ATTACKS By Zelinski Radu, Technical University of Moldova Where someone is building a Web application, often he need to use databases to store information, or to manage user accounts. And
Today s Agenda. Automata and Logic. Quiz 4 Temporal Logic. Introduction Buchi Automata Linear Time Logic Summary
Today s Agenda Quiz 4 Temporal Logic Formal Methods in Software Engineering 1 Automata and Logic Introduction Buchi Automata Linear Time Logic Summary Formal Methods in Software Engineering 2 1 Buchi Automata
Lecture 9 - Message Authentication Codes
Lecture 9 - Message Authentication Codes Boaz Barak March 1, 2010 Reading: Boneh-Shoup chapter 6, Sections 9.1 9.3. Data integrity Until now we ve only been interested in protecting secrecy of data. However,
A Framework for the Semantics of Behavioral Contracts
A Framework for the Semantics of Behavioral Contracts Ashley McNeile Metamaxim Ltd, 48 Brunswick Gardens, London W8 4AN, UK [email protected] Abstract. Contracts have proved a powerful concept
Formal Verification and Linear-time Model Checking
Formal Verification and Linear-time Model Checking Paul Jackson University of Edinburgh Automated Reasoning 21st and 24th October 2013 Why Automated Reasoning? Intellectually stimulating and challenging
Secure Network Communications FIPS 140 2 Non Proprietary Security Policy
Secure Network Communications FIPS 140 2 Non Proprietary Security Policy 21 June 2010 Table of Contents Introduction Module Specification Ports and Interfaces Approved Algorithms Test Environment Roles
Validated Templates for Specification of Complex LTL Formulas
Validated Templates for Specification of Complex LTL Formulas Salamah Salamah Department of Electrical, computer, Software, and Systems Engineering Embry Riddle Aeronautical University 600 S. Clyde Morris
Capture Resilient ElGamal Signature Protocols
Capture Resilient ElGamal Signature Protocols Hüseyin Acan 1, Kamer Kaya 2,, and Ali Aydın Selçuk 2 1 Bilkent University, Department of Mathematics [email protected] 2 Bilkent University, Department
Module 8. Network Security. Version 2 CSE IIT, Kharagpur
Module 8 Network Security Lesson 2 Secured Communication Specific Instructional Objectives On completion of this lesson, the student will be able to: State various services needed for secured communication
ON FUNCTIONAL SYMBOL-FREE LOGIC PROGRAMS
PROCEEDINGS OF THE YEREVAN STATE UNIVERSITY Physical and Mathematical Sciences 2012 1 p. 43 48 ON FUNCTIONAL SYMBOL-FREE LOGIC PROGRAMS I nf or m at i cs L. A. HAYKAZYAN * Chair of Programming and Information
Cryptographic Modules, Security Level Enhanced. Endorsed by the Bundesamt für Sicherheit in der Informationstechnik
Common Criteria Protection Profile Cryptographic Modules, Security Level Enhanced BSI-CC-PP-0045 Endorsed by the Foreword This Protection Profile - Cryptographic Modules, Security Level Enhanced - is issued
Courtesy Translation
Direction centrale de la sécurité des systèmes d information Protection Profile Electronic Signature Creation Application Date : July 17th, 2008 Reference : Version : 1.6 Courtesy Translation Courtesy
Verifying Specifications with Proof Scores in CafeOBJ
Verifying Specifications with Proof Scores in CafeOBJ FUTATSUGI, Kokichi 二 木 厚 吉 Chair of Language Design Graduate School of Information Science Japan Advanced Institute of Science and Technology (JAIST)
A SECURITY ARCHITECTURE FOR AGENT-BASED MOBILE SYSTEMS. N. Borselius 1, N. Hur 1, M. Kaprynski 2 and C.J. Mitchell 1
A SECURITY ARCHITECTURE FOR AGENT-BASED MOBILE SYSTEMS N. Borselius 1, N. Hur 1, M. Kaprynski 2 and C.J. Mitchell 1 1 Royal Holloway, University of London 2 University of Strathclyde ABSTRACT Future mobile
SCADA System Security, Complexity, and Security Proof
SCADA System Security, Complexity, and Security Proof Reda Shbib, Shikun Zhou, Khalil Alkadhimi School of Engineering, University of Portsmouth, Portsmouth, UK {reda.shbib,shikun.zhou,khalil.alkadhimi}@port.ac.uk
Plain English Guide To Common Criteria Requirements In The. Field Device Protection Profile Version 0.75
Plain English Guide To Common Criteria Requirements In The Field Device Protection Profile Version 0.75 Prepared For: Process Control Security Requirements Forum (PCSRF) Prepared By: Digital Bond, Inc.
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Client Server Registration Protocol
Client Server Registration Protocol The Client-Server protocol involves these following steps: 1. Login 2. Discovery phase User (Alice or Bob) has K s Server (S) has hash[pw A ].The passwords hashes are
Authenticity by Typing for Security Protocols
Authenticity by Typing for Security Protocols Andrew D. Gordon Microsoft Research Alan Jeffrey DePaul University June 2002 Technical Report To appear in the Journal of Computer Security Microsoft Research
A first step towards modeling semistructured data in hybrid multimodal logic
A first step towards modeling semistructured data in hybrid multimodal logic Nicole Bidoit * Serenella Cerrito ** Virginie Thion * * LRI UMR CNRS 8623, Université Paris 11, Centre d Orsay. ** LaMI UMR
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wānanga o te Ūpoko o te Ika a Māui
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wānanga o te Ūpoko o te Ika a Māui School of Engineering and Computer Science Te Kura Mātai Pūkaha, Pūrorohiko PO Box 600 Wellington New Zealand Tel: +64 4 463
Model Checking II Temporal Logic Model Checking
1/32 Model Checking II Temporal Logic Model Checking Edmund M Clarke, Jr School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 2/32 Temporal Logic Model Checking Specification Language:
Module 7 Security CS655! 7-1!
Module 7 Security CS655! 7-1! Issues Separation of! Security policies! Precise definition of which entities in the system can take what actions! Security mechanism! Means of enforcing that policy! Distributed
Information Technology Security Evaluation Criteria. ITSEC Joint Interpretation Library (ITSEC JIL)
S Information Technology Security Evaluation Criteria ITSEC Joint Interpretation Library (ITSEC JIL) Version 2.0 November 1998 This document is paginated from i to vi and from 1 to 65 ITSEC Joint Interpretation
SkyRecon Cryptographic Module (SCM)
SkyRecon Cryptographic Module (SCM) FIPS 140-2 Documentation: Security Policy Abstract This document specifies the security policy for the SkyRecon Cryptographic Module (SCM) as described in FIPS PUB 140-2.
Chapter 3. Network Domain Security
Communication System Security, Chapter 3, Draft, L.D. Chen and G. Gong, 2008 1 Chapter 3. Network Domain Security A network can be considered as the physical resource for a communication system. This chapter
Dr. Jinyuan (Stella) Sun Dept. of Electrical Engineering and Computer Science University of Tennessee Fall 2010
CS 494/594 Computer and Network Security Dr. Jinyuan (Stella) Sun Dept. of Electrical Engineering and Computer Science University of Tennessee Fall 2010 1 Introduction to Cryptography What is cryptography?
INF5140: Specification and Verification of Parallel Systems
INF5140: Specification and Verification of Parallel Systems Lecture 7 LTL into Automata and Introduction to Promela Gerardo Schneider Department of Informatics University of Oslo INF5140, Spring 2007 Gerardo
Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2
CS 70 Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2 Proofs Intuitively, the concept of proof should already be familiar We all like to assert things, and few of us
How To Write A Program Verification And Programming Book
Jose Bacelar Almeida Maria Joao Frade Jorge Sousa Pinto Simao Melo de Sousa Rigorous Software Development An Introduction to Program Verification & Springer Contents 1 Introduction 1 1.1 A Formal Approach
Turing Degrees and Definability of the Jump. Theodore A. Slaman. University of California, Berkeley. CJuly, 2005
Turing Degrees and Definability of the Jump Theodore A. Slaman University of California, Berkeley CJuly, 2005 Outline Lecture 1 Forcing in arithmetic Coding and decoding theorems Automorphisms of countable
Hardware Security Modules for Protecting Embedded Systems
Hardware Security Modules for Protecting Embedded Systems Marko Wolf, ESCRYPT GmbH Embedded Security, Munich, Germany André Weimerskirch, ESCRYPT Inc. Embedded Security, Ann Arbor, USA 1 Introduction &
(LMCS, p. 317) V.1. First Order Logic. This is the most powerful, most expressive logic that we will examine.
(LMCS, p. 317) V.1 First Order Logic This is the most powerful, most expressive logic that we will examine. Our version of first-order logic will use the following symbols: variables connectives (,,,,
Computational Soundness of Symbolic Security and Implicit Complexity
Computational Soundness of Symbolic Security and Implicit Complexity Bruce Kapron Computer Science Department University of Victoria Victoria, British Columbia NII Shonan Meeting, November 3-7, 2013 Overview
Foundational Proof Certificates
An application of proof theory to computer science INRIA-Saclay & LIX, École Polytechnique CUSO Winter School, Proof and Computation 30 January 2013 Can we standardize, communicate, and trust formal proofs?
Monitoring Metric First-order Temporal Properties
Monitoring Metric First-order Temporal Properties DAVID BASIN, FELIX KLAEDTKE, SAMUEL MÜLLER, and EUGEN ZĂLINESCU, ETH Zurich Runtime monitoring is a general approach to verifying system properties at
On strong fairness in UNITY
On strong fairness in UNITY H.P.Gumm, D.Zhukov Fachbereich Mathematik und Informatik Philipps Universität Marburg {gumm,shukov}@mathematik.uni-marburg.de Abstract. In [6] Tsay and Bagrodia present a correct
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT?
WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? introduction Many students seem to have trouble with the notion of a mathematical proof. People that come to a course like Math 216, who certainly
Joint Interpretation Library
for smart cards and similar devices Document purpose: provide requirements to developers and guidance to evaluators to fulfill the Security Architecture requirements of CC V3 ADV_ARC family. Version 2.0
CS510 Software Engineering
CS510 Software Engineering Propositional Logic Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-cs510-se
Chapter 17. Transport-Level Security
Chapter 17 Transport-Level Security Web Security Considerations The World Wide Web is fundamentally a client/server application running over the Internet and TCP/IP intranets The following characteristics
Analyzing and Managing Role-Based Access Control Policies
1 Analyzing and Managing Role-Based Access Control Policies Karsten Sohr, Michael Drouineaud, Gail-Joon Ahn, and Martin Gogolla Abstract Today more and more security-relevant data is stored on computer
Smart Card- An Alternative to Password Authentication By Ahmad Ismadi Yazid B. Sukaimi
Smart Card- An Alternative to Password Authentication By Ahmad Ismadi Yazid B. Sukaimi Purpose This paper is intended to describe the benefits of smart card implementation and it combination with Public
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: [email protected] Homepage: http://www.cs.uu.nl/~ralf/
3 Extending the Refinement Calculus
Building BSP Programs Using the Refinement Calculus D.B. Skillicorn? Department of Computing and Information Science Queen s University, Kingston, Canada [email protected] Abstract. We extend the
Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection
Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection Martin Leucker Technische Universität München (joint work with Andreas Bauer, Christian Schallhart et. al) FLACOS
Bindings, mobility of bindings, and the -quantifier
ICMS, 26 May 2007 1/17 Bindings, mobility of bindings, and the -quantifier Dale Miller, INRIA-Saclay and LIX, École Polytechnique This talk is based on papers with Tiu in LICS2003 & ACM ToCL, and experience
Access Control Models Part I. Murat Kantarcioglu UT Dallas
UT DALLAS Erik Jonsson School of Engineering & Computer Science Access Control Models Part I Murat Kantarcioglu UT Dallas Introduction Two main categories: Discretionary Access Control Models (DAC) Definition:
Modeling and verification of security protocols
Modeling and verification of security protocols Part I: Basics of cryptography and introduction to security protocols Dresden University of Technology Martin Pitt [email protected] Paper and slides available
3. Mathematical Induction
3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)
INTRODUCTORY SET THEORY
M.Sc. program in mathematics INTRODUCTORY SET THEORY Katalin Károlyi Department of Applied Analysis, Eötvös Loránd University H-1088 Budapest, Múzeum krt. 6-8. CONTENTS 1. SETS Set, equal sets, subset,
NP-Completeness and Cook s Theorem
NP-Completeness and Cook s Theorem Lecture notes for COM3412 Logic and Computation 15th January 2002 1 NP decision problems The decision problem D L for a formal language L Σ is the computational task:
Inductive Analysis of Security Protocols in Isabelle/HOL with Applications to Electronic Voting
Inductive Analysis of Security Protocols in Isabelle/HOL with Applications to Electronic Voting Denis Butin 1 / 37 2 / 37 Introduction Network communication sensitive: banking, private correspondence,
Authenticated Encryption: Relations among Notions and Analysis of the Generic Composition Paradigm By Mihir Bellare and Chanathip Namprempre
Authenticated Encryption: Relations among Notions and Analysis of the Generic Composition Paradigm By Mihir Bellare and Chanathip Namprempre Some slides were also taken from Chanathip Namprempre's defense
Chapter 3. Cartesian Products and Relations. 3.1 Cartesian Products
Chapter 3 Cartesian Products and Relations The material in this chapter is the first real encounter with abstraction. Relations are very general thing they are a special type of subset. After introducing
Introduction. Digital Signature
Introduction Electronic transactions and activities taken place over Internet need to be protected against all kinds of interference, accidental or malicious. The general task of the information technology
Network Security [2] Plain text Encryption algorithm Public and private key pair Cipher text Decryption algorithm. See next slide
Network Security [2] Public Key Encryption Also used in message authentication & key distribution Based on mathematical algorithms, not only on operations over bit patterns (as conventional) => much overhead
Lecture 10: CPA Encryption, MACs, Hash Functions. 2 Recap of last lecture - PRGs for one time pads
CS 7880 Graduate Cryptography October 15, 2015 Lecture 10: CPA Encryption, MACs, Hash Functions Lecturer: Daniel Wichs Scribe: Matthew Dippel 1 Topic Covered Chosen plaintext attack model of security MACs
