In CoyIM we implemented our own custom file transfer scheme for encrypted file transfers. It is based on Stream
Initiation (XEP-0095) and the SI File Transfer (XEP-0096) profile, and uses the OTR version 3 extra symmetric key to
actually do encryption of the data sent. We are using AES-128
in CTR
mode, with a 16 byte IV. The integrity of the
transfer is protected using HMAC-SHA-256
, and the MAC key is revealed after the transfer in order to increase
deniability of the channel.
In this document we will further describe the exact functioning of this transfer protocol - and it might also be extending into a proposal for a XEP - although that is unlikely, since the XEPs we rely on are deprecated in favor of the more complicated Jingle suite of protocols.
Expanding this document is still a TODO.
- https://xmpp.org/extensions/xep-0095.html
- https://xmpp.org/extensions/xep-0096.html
- https://otr.cypherpunks.ca/Protocol-v3-4.1.1.html - section named "Extra symmetric key"