Skip to content

Multi end2end encryption

Äkwav edited this page Sep 19, 2019 · 2 revisions

One of the Targets of this project is to Support multiple devices of a User. This includes end2end encrypted chats. And here is how we defined that it should work.

First we start out with one device A. It creates private Keys, Registers an user and Uploads its Public Keys. From then on it can Set Up new Sessions, Receive and send Messages.

Now we want to add our Tablet to our Account. The Tablet has to create its Key and Register itself on a Server. Then it generates a QR-Code that we Scan with Device A. The Code contains the id of device a and its User. Device B then requests Access to the Users Key.

This should result in a Dialog in device A if the User wants to give full Access or only partial. In this Case we want full Access. Therefore Device A will sync multiple Things with Device B

  • the Secret Key of the User
  • The established Double ratchet Keys with other Users
  • The Chats and chat History

In Case the User doesn't fully Trust the new device or the Programm (another device could Just be another App in the Same physical device) he would choose partial sync wich only syncs

  • The Keys and History of selected Chats
  • A token to send as the User to These chats

Distribution process of messages

graph LR;

AM[User A mobile Chat] -- How are you? --> chat
chat --> ADCA[AppData Chat User A]
chat --> ADGA[AppData GAme User A]
chat --> ADCB[AppData Chat User Bob]
ADCA --> AD[User A Desktop Chat]
ADGA --> ADG[User A Desktop Game]
ADCB --> BD[User B Desktop Chat]
ADCB --> BDM[User B Mobile Chat]

Loading

Clone this wiki locally