Check out the new USENIX Web site. next up previous
Next: Protocols Up: Plutus: Scalable secure file Previous: Server-verified writes


Security analysis

This section explores the set of attacks that remain possible and explains how to adapt Plutus to thwart these attacks. We also argue that some of the remaining attacks can never be handled within the context of our system at any reasonable additional cost.


Table 1: Attacks tabulated against what is changed following a revocation. The heading row presents different choices in the component that is changed following a revocation: the read/write verification token is changed (T), the file's lockbox is changed (L), or the file itself is re-encrypted with a new key (D). The entries in the table correspond to the most serious attack that can be mounted, the letter code corresponding to those described in the main text. ``n/a'' indicates an impossible combination - such as readers having updated keys but files not being re-encrypted or lockboxes not changed. A ``-'' is used to denote that no attack is possible.
Users Key freshness Collusion None D L LD T TD TL TLD
    alone f f f - - - - -
    w/ server c,d,f c,d,f c,d,f c,d,f c,d,f c,d
    alone c,b,d c,b,d c,b,d c,b,d - - - -
    w/ server c,b,d c,b,d c,b,d c,b,d c,b,d c,b,d
    alone n/a n/a d d n/a n/a -
    w/ server n/a n/a d d n/a n/a


In decreasing order of severity, an attacker may:

(a)
write new data with a new key
(b)
write new data with an old key
(c)
write old data with an old key; that is, revert to an old version
(d)
destroy data
(e)
read updated data
(f)
read data that has not yet been updated.

These attacks can be prevented by some combination of the following mechanisms: change the read/write verification token (T), re-encrypt the lockbox with a new key (L), and re-encrypt the file itself with a new key (D). Table 1 presents the possible attacks classified into those that a revoked reader could mount, or those that a revoked writer could mount. In each case, the attacker may act alone or in collusion with the server. The attacks that writers can mount depend upon whether an unsuspecting reader has the updated keys or not.

If a system uses lazy revocation, we can prevent revoked readers from accessing data that has been updated. However to prevent them from accessing data that has not been updated, we would need some form of ``read verification'' -- verification of read privileges on each read access, analogous to write-verification. If this verification were done by the storage server then the reader could not get to the data alone, but could do so in collusion with the server. To prevent this attack, the file must be re-encrypted, re-encrypting just the lockbox would be insufficient.

The problem with revoked writers is more severe. Again, we can prevent revoked writers from updating data by verifying each write. But if this verification is done by the server - as in server-verified writes - the system is subject to an attack by a revoked writer colluding with the server to make valid modifications to data. The only way to prevent this would be to broadcast the changed key to all users aggressively . Otherwise, a revoked writer will always be able to create data that looks valid and cheat (unsuspecting) readers who have not updated their key.

From the above discussion, it should be clear that lazy revocation is always susceptible to attacks mounted by revoked users in collusion with the server, unless a third (trusted) party is involved in each read and write access.

Finally, the server could mount the following attack, which we consider very difficult for the system to handle. In a forking attack [31], a server forks the state of a file between users. That is, the server separately maintains file updates for the users. The forked users never see each other's changes, and each user believes its state reflects reality. A higher level Byzantine agreement protocol, which is potentially expensive, might be necessary to address this issue [11]. Recently Mazières and Shasha [32] introduced the notion of fork consistency and a protocol to achieve it. Though their scheme does not prevent a forking attack, it makes it easier to detect.


next up previous
Next: Protocols Up: Plutus: Scalable secure file Previous: Server-verified writes
2003-01-06