With the recent rise of cryptocurrencies, the security and management of crypto-tokens have become critical. We have witnessed many attacks on users, their software, or their providers, which have resulted in significant financial losses. To remedy these issues, many wallet solutions have been proposed to store users' crypto-tokens. However, these solutions lack either essential security features, or usability, or do not allow users to express their spending rules. In this paper, we propose a smart-contract cryptocurrency wallet framework that gives a flexible, usable, and secure way of managing crypto-tokens in a self-sovereign fashion. The proposed framework consists of three components (i.e., a decentralized client, a smart contract, and an authenticator) and provides 2-factor authentication performed in two stages of interaction with the blockchain. Our framework utilizes one-time passwords (OTPs) aggregated by a Merkle tree and hash chains in such a way that for every authentication only a 16B-long OTP is transferred from the authenticator to the client. Such a novel setting enables us to make a fully air-gapped authenticator, similar to Google Authenticator. We implemented our approach basing on the Ethereum platform. We have performed a cost analysis of the implementation and showed that the average cost of a transfer operation is comparable to existing 2-factor authentication solutions using smart contracts with multi-signatures.
View on arXiv