CA646
Public Key Cryptography &Security Protocols rotocol Notation
Dr. David Gray
School of Computing
February 13, 2011
1 Abstract Notation
Abstract Notation
• When describing protocols, we use the following abstract notation to represent data in messages sent
during protocol exchanges.
A;B; : : : The parties or entities taking part in a protocol.
k Symmetric Key
khA;Si Symmetric Key shared between A and S
d1; d2; : : : ; dn Concatenated Data
fd1; d2; : : : ; dngk Encrypted Data
H(d1; d2; : : : ; dn) Hashed Data
1
CA646: Public Key Cryptography & Security Protocols 2
I
issued by I
N Nonce
T Timestamp
P Password
Protocol Steps
• Each step in a protocol is represented as a message sent from one entity to another:
number: A ! B : Message
1. A ! B : A;NA
2. B ! A : B;NB; fNAgkhA;Bi
2 Concrete Notation
Concrete Notation
• When implementing a protocol, we need to use a concrete notation to encode messages.
{ Such a notation is sometimes called a concrete syntax or an encoding scheme.
{ It must de ne what bits are exchanged between the parties and how these bits are interpreted.
• The are many di erent notations used in practice, e.g., XML and ASN.1.
• A concrete syntax must be precisely de ned so that implementations from di erent vendors can inter-
operate.
{ Conformance testing can be used to ensure that an implementation is following the concrete
syntax correctly.
• You will be required to implement a number of protocols.
{ These protocols will be described using our abstract notation, but your implementation will need
to use a concrete syntax.
© 2008-2011 David Gray
CA646: Public Key Cryptography & Security Protocols 3
{ I will provide programs that will act as reference implementations, and you will need to ensure
that your implementation interoperate with these programs.
• The practical work must be undertaken using Java.
{ The reference implementations are written in Go.
• We will use one of two concrete syntaxes - TLV or NT.
Type-Length-Value Encodings (TLV)
• Each data item is encoded as a sequence of bytes.
• The rst byte is the type of the data:
1 : an ASCII string
2 : a decimal representation of an integer
3 : binary data
4 : structured data
• The next two bytes are a length eld that specify the number of data bytes that follow.
• The remaining bytes are the data value itself.
t l0 l1 b0 b1 bn