fundamental security design principles in cryptography