Currently can encrypt and decrypt small files.

  • Create a website service that can encrypt and decrypt these files for you and hold them “hostage” until a certain timestamp.

Encryption Options

Server is King

  1. User uploads file to site
  2. File is encrypted then user can download the file
  3. Identifier is prepended to the file
  4. We store the encryption key to decrypt it
  5. User reuploads file to decrypt the file
  6. We read the identifier to find which key to use
  7. Decrypt file

Hold it for me

Server just holds the unlock key

  1. User uses tool to encrypt their own file
  2. Key, nonce, and/or identifier is uploaded to site
  3. User retains nonce or some identifier which is added to the file, but discards the key
  4. To decrypt, user provides nonce or a identifier
  5. Decrypt key is returned to user

RSA Option

  1. User uses tool to encrypt their own file, returning a unlock mechanism
  2. We provide our public key for user to encrypt
  3. is prepended to the file, and stored, as well as public key.
  4. Server provides private key to unlock the file
  5. Private key unlocks , which then can be used to decrypt file

CLI Tool

  • CLI tool to time encrypt files
  • clockblock -l {filename} {unlock timestamp}
  • -lock, -l
  • clockblock -ul {filename}
  • -ul, -unlock <<<<<<< HEAD =======

Database Schema

RSA encrypt their input -> Public, Private

  • id (int)
  • Private Key (bytes)
  • Unlock Timestamp (timestamp)
  • Nonce (optional)

Problem:

  • IDs are easy to guess, making data insecure

Solution:

  1. Ignore it, make the data publicly available
  2. Add extra authentication layer (per user authentication)
  3. Add a separate key to reference to in input which makes guessing the ID harder.

g