Hi Martin,
Some great ideas here!
Regarding transport encryption, the XMPP core includes provisions for
TLS, so for content that is "fat-pushed," we can simply rely on that.
In fact, I think the Smack library default mode is to use TLS when the
server supports it. Both server-to-server and client-server messages
can make use of this quite transparently.
Correct me if I am wrong, but it sounds like you are suggesting that
any fat-pushed content is sent to the recipient as an encrypted chunk.
To decrypt, the recipient must request a decryption key from the
sender, and the sender can choose to deny that request. This
certainly adds overhead and does not appear to gain us anything...
Let's say we have a sender (person-S using server-S) and a recipient
(person-R using server-R). In the existing scheme, if person-S wants
to revoke access to a fat-pushed item, server-S sends a delete request
to server-R:
1) if server-R is "bad" it will ignore the request
2) if person-R is "bad" (but server-R is behaving) and has already
viewed the item, he will have saved it elsewhere
3) if person-R is "bad" (but server-R is behaving) and has not viewed
the item yet, he will not see it since server-R will honor the delete
request
In your proposed scheme, person-R/server-R must request a decryption
key from server-S to view the item:
1) if server-R is "bad", it will request the key immediately upon
receiving the encrypted item and store the decrypted content
2) if person-R is "bad" (but server-R is behaving) and has already
viewed the item, he will have saved it elsewhere
3) if person-R is "bad" (but server-R is behaving) and has not viewed
the item yet, he will not see it since server-S will deny him the key
Maybe I am not understanding correctly. :) Can you provide an
example in which your scheme guarantees different outcomes than the
existing scheme?
About the timestamp issue...I am not really clear about how it relates
to privacy. Can you explain? Specifically, I am not unclear about
how knowledge of the exact timestamp becomes more of a privacy concern
as the time fades into the past. Furthermore, the exact timestamp is
in fact useful to client software which needs to show activities and
replies in threaded views. A back-and-forth conversation between
friends will not make much sense if the items go out of order after
one month because they were all posted on the same day. :)
--Vishal