Eliptic Curve Key Exchange • Agree a curve, modulus and generator point (G) • Select random integer d and compute P = dG • Exchange public keys (PA and PB) 8
Eliptic Curve Key Exchange • Agree a curve, modulus and generator point (G) • Select random integer d and compute P = dG • Exchange public keys (PA and PB) • Compute a shared secret dBPA and dAPB 8
Eliptic Curve Key Exchange • Agree a curve, modulus and generator point (G) • Select random integer d and compute P = dG • Exchange public keys (PA and PB) • Compute a shared secret dBPA and dAPB • Both parties have now computed dAdBG 8
Ideal hash function properties • It should be quick and easy to compute a hash for any given data. • It should be difficult to compute data that has a given hash. 12
Ideal hash function properties • It should be quick and easy to compute a hash for any given data. • It should be difficult to compute data that has a given hash. • It should be unlikely that two different messages will have the same hash. 12
Setup phase • Append a single ’1’ bit to the data • Pad the data with ’0’ so that the data + 64 bits is a multiple of 512 • Append the data length as a 64 bit integer 13
Expansion phase • Split message into 512 bit blocks • Expand each block to 2048 bits • Expansion is done using shifts and rotates of the original block xor’d together 14
What is a blockchain? • A Merkle tree • No central authority • Multiple ’forks’ may exist • There exists a consensus algorithm to determine the correct fork 18
What is a blockchain? • A Merkle tree • No central authority • Multiple ’forks’ may exist • There exists a consensus algorithm to determine the correct fork • The consensus algorithm only requires data contained on the blockchain to run 18