The app can just leak your keys to a central database? Using code other people wrote/compiled always requires trust.
1. All cryptographic keys controlled by the users.
2. Some way to confirm you are actually connected to who you think you are connected to.
3. A way to confirm that the code you are running is not leaking keys/content.
Like, this app can ONLY send/recv e2e encrypted messages, and not log anything or talk to other apps.
Of course at that point the OS has to either provide good key management itself, or a good API so that the apps can still make things seamless while still not accessing the keys directly.. and probably other problems I haven't thought of.
[1] https://developer.apple.com/documentation/security/certifica...