Applications of Cryptographic Hash Functions

Jared Nishikawa, University of Colorado at Boulder


This is a cryptography thesis, and the focus is on applications of cryptographic hash functions.

Hash functions, as a cryptographic primitive, are ubiquitous in their potential for application. In essence, a hash function distills data of any size into a fingerprint, where inverting this function is considered computationally infeasible.

After the introduction and preliminary work, the body of this paper is divided into chapters which report the results of three significant research problems. The first problem is the study of building trapdoors into hash functions. How do we make a hash function that can be inverted with knowledge of a secret key? There are two main problems: the algorithm must not reveal the existence of the trapdoor, and use of the trapdoor must not reveal its existence. Finally, we offer a solution using elliptic curves.

The second problem is that of time-lock encryption, that is, how to encrypt a message such that it can not be opened before a given date. We start with the assumption of a centralized authority issuing time-lock encryption keys, and study ways for that party to certify intermediate authorities to do the same task, while retaining verifiability. We offer a solution using a structure developed for the Bitcoin wallet client.

The third is constructing a protocol for increased privacy for users on the Bitcoin network. A significant portion of this thesis is given over to the background of Bitcoin, as it also turned out to be helpful for our time-lock encryption solution. We construct a method for Bitcoin spending privacy using contracts, a simple but powerful mechanism for automating transactions and minimizing trust in the world of cryptocurrencies.