End-to-end encryption of messages