Building and Understanding Cryptographic Authentication Systems