

Im also working on something similar. I was thinking with a browser extension I could “scan” a page for some kind of blob that the extension would have produced. Something like a webcomponent tag (but not that because a good website would have sanitized for that) then inject a webcomponents from the extension to show it decrypted. The idea is pretty difficult to describe without a working example, but I think it would allow for reasonably secure messaging on public channels (because the payload would be encrypted).
As for exchanging keys securely, the app is using crypto-random ID’s to connect peers. On the initial connection, it’ll establish the nessesary keys.
https://positive-intentions.com/docs/research/authentication/
I don’t think it’s possible over a channel that has active interest in breaking your encryption. It’s the recipe for a mitm attack.
It would be possible to use password encrypted keys on the public channel and rotate the keys immediately after establishing a connection.
I try to provide ways to transfer data offline. I don’t have a working example, but it would be possible to exchange keys over a series of QR codes or NFC… But this would require peers to be at the same physical location.
I’m sure there are many approaches for exchanging keys here that balance between convenience and security.
Ultimately it’s worth noting we are talking about encryption on a browser where the operating system could just as easily be taking screenshots.