The Drand team at Protocol Labs recently released a timelock encryption based on the Drand threshold network run by the League of entropy. This timelock encryption construction ensures a ciphertext will be decryptable only after some specified time has passed and not before. The cryptographic construction of the timelock encryption was recently presented in depth during the Real World Cryptography conference
Kudelski Security was engaged to audit the implementation made by Protocol Labs for timelock encryption and timelock responsible disclosure service. The security assessment considered:
- tlock, the Go language implementation of the command line tool to perform timelock encryption.
- tlock-js, the implementation in TypeScript of timelock encryption and age encryption.
- timevault, the web interface for the time vault for encryption of vulnerability reports. A up-to-date version is running at https://timevault.drand.love/.
- Part of some dependencies directly used by timelock encryption.
The audit was mainly focused on the protocol security as well as protocol specification matching the paper. During our assessment, we found:
- 1 High severity issue
- 5 Medium severity issues
- 3 Low severity issues
All of the issues have been corrected at the time of writing the post and the details are available in the audit report available on IPFS with CID QmWQvTdiD3fSwJgasPLppHZKP6SMvsuTUnb1vRP2xM7y4m
During our audit, we reported a bug in the Date
function of the Go Language. We used the timevault tool to disclose the bug and reported in a previous post.
We thank Protocol Labs for trusting us, for their availability throughout the assessment and the nice collaboration.