Next: Implementation
Up: Plutus: Scalable secure file
Previous: Security analysis
Protocols
We now summarize the steps involved in protocols for creating, reading and
writing as well as revoking users. We would like to remark again that all
the keys and tokens in these protocols are exchanged between owners and
readers/writers via a secure channel with a session key - for instance,
mutual authentication based on passwords. However, file data is not
encrypted over the wire, but only integrity-protected with the session key.
- Initialize filegroup: To initialize a
filegroup, a user generates a pair of dual keys (file-sign and
file-verify keys) for signing and verifying the contents of files in the
filegroup. The user also generates the symmetric file-lockbox key.
- Create file: First, the owner selects a
filegroup for the new file. If there is no appropriate filegroup
the owner initializes one and uses the corresponding keys (file-sign,
file-verify, and file-lockbox keys) for this file. The owner also generates a
write token and sends it to the server so that the server can verify all
writes to this file.
- Read file: A reader first obtains the name of
the owner and the filegroup of the file he wishes to access, possibly
after browsing the file system. The reader then checks if the version of
the keys she has cached is greater then the version of the keys used to
encrypt the file (which is stored in the header), in which case she does a
key rotation to get the right version key. Otherwise, the reader gets the
latest version key from the owner after appropriate authentication (via a
secure channel). The reader then fetches the encrypted blocks of the
desired file from the server, opens the lockboxes with the file-lockbox key,
retrieves file-block keys from the lockbox, and decrypts the individual
blocks. The integrity of the root hash (of the Merkle tree) provided by
the server is first verified by using the file-verify key. To verify the
integrity of the data, this root hash is compared against the root hash
obtained by recomputing the Merkle hash tree using the file blocks
retrieved from the server.
- Write file: The writer obtains the latest version
file-lockbox key and file-sign key, possibly from the owner if it is not
cached. The writer then generates the file-block keys, encrypts
individual blocks of the file using the corresponding file-block keys,
and stores the encrypted blocks with the lockbox in the server. The
server uses the write-token, provided by the writer at this time, to
authorize the write. The writer then sends the entire Merkle hash tree
in the clear to the server; the hash tree includes the root hash, signed
with the file-sign key.
- Revoke user: To revoke a user from accessing files in a
filegroup, the owner generates the next version of the file-sign,
file-verify, and file-lockbox keys. The owner then labels all files in the
filegroup as needing re-encryption. If the revoked user is a writer, the
owner changes the write-tokens in all the files of the filegroup as well.
Next: Implementation
Up: Plutus: Scalable secure file
Previous: Security analysis
2003-01-06