this post was submitted on 16 Dec 2024
9 points (100.0% liked)
SimpleX Chat
473 readers
3 users here now
Community of SimpleX Chat users – managed by the team.
SimpleX Chat is the first chat platform that is 100% private by design – it has no user identifiers of any kind and no access to your connections graph – it's a more private design than any alternative we know of.
Please ask any questions and make feature suggestions. Your ideas and criticism are very welcome!
https://github.com/simplex-chat/simplex-chat
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I'll give a verbal explanation a try.
I have a message for Ms. Brown. She has shared with me her current queue ID on her preferred relay, ABC. Connecting to my own relay XYZ, I send a message into my ephemeral queue ID for her on XYZ that is addressed to her ephemeral message queue on ABC that is unique to Ms. Brown and me.
XYZ can only see that I am requesting a forward to ABC. It can't read the message contents or her queue info. Only Ms. Brown can read the message, and only ABC can read the queue information.
XYZ forwards the message from my unique queue to ABC, which decrypts the header and delivers it to her message queue. Ms. Brown, who is connected to ABC and watching her queue, sees a new message, downloads it and decrypts it.
Once delivered to Ms. Brown, her queue on ABC is discarded, and her client creates a new queue for our next message.
XYZ only knows my queue ID and the relay ABC. ABC only knows XYZ and Ms. Brown's queue ID, which has been discarded. Ms. Brown knows about XYZ and my message queue, and both queues are recycled at an unknown (to me) interval.
I am only somewhat confident in this description. I don't know how often queues are torn down and rebuilt.
So each pair of connections has unique queue ids? That state is maintained by the clients by polling?