Distributed Programming Paradigms With Cryptography Applications by Jonathan S. Greenfield