  Cloud storage services like Dropbox and Google Drive are widely used by
individuals and businesses. Two attractive features of these services are 1)
the automatic synchronization of files between multiple client devices and 2)
the possibility to share files with other users. However, privacy of cloud data
is a growing concern for both individuals and businesses. Encrypting data on
the client-side before uploading it is an effective privacy safeguard, but it
requires all client devices to have the decryption key. Current solutions
derive these keys solely from user-chosen passwords, which have low entropy and
are easily guessed.
  We present OmniShare, the first scheme to allow client-side encryption with
high-entropy keys whilst providing an intuitive key distribution mechanism to
enable access from multiple client devices. Instead of passwords, we use low
bandwidth uni-directional out-of-band (OOB) channels, such as QR codes, to
authenticate new devices. To complement these OOB channels, the cloud storage
itself is used as a communication channel between devices in our protocols. We
rely on a directory-based key hierarchy with individual file keys to limit the
consequences of key compromise and allow efficient sharing of files without
requiring re-encryption. OmniShare is open source software and currently
available for Android and Windows with other platforms in development. We
describe the design and implementation of OmniShare, and explain how we
evaluated its security using formal methods, its performance via real-world
benchmarks, and its usability through a cognitive walkthrough.
