deltachat / deltachat-core-rust

Delta Chat Rust Core library, used by Android/iOS/desktop apps, bindings and bots 📧
https://delta.chat/en/contribute
Other
658 stars 83 forks source link

reset encryption for a contact not using DC/Autocrypt anymore #4465

Open hpk42 opened 1 year ago

hpk42 commented 1 year ago

Problem: As a long-time delta chat user i have several contacts that once tried delta chat on their regular e-mail account but have since moved to a dedicated account or stopped using delta chat. If i message them now, they will receive an unreadable message and i'd like to avoid that (after a year contacting someone with an unreadable message is annoying for them).

Solution1: I'd like to be able to go to their contact profile and have a way to manually "reset" or "clear" encryption for this contact. While resetting autocrypt state should be easy enough, it could also affect verified groups where a member is part of. I think as a first step, it's fine to just clear the autocrypt key state for a contact but leave the verified key intact -- those verified groups will (in my cases) not be used anymore. Once a core API is there for clearing autocrypt keys for a contact, UIs could gradually offer calling it in the contact profile page.

Solution2: it's also arguably a bug with implementing the autocrypt spec which mandates that after 35 days the recommendation is to not encrypt -- it might be that our "reply encrypted to encrypted last message" policy is too eager but should actually only be strict when "quote-replying" but not for regular standalone messages?

adbenitez commented 1 year ago

wouldn't be simpler to allow users to force sending with/without encryption? that will also solve a lot of other requests from users and that also I miss, like a way to have more control / safety about the encryption state of the message I am about to send, like in other autocrypt clients like k9mail where you have control if you want to send the message encrypted or not

link2xt commented 1 year ago

While resetting autocrypt state should be easy enough, it could also affect verified groups where a member is part of.

This is not the case currently. Encryption preference (Peerstate.prefer_encrypt) only affects Autocrypt. In verified group the verified key is used regardless of whether prefer_encrypt is NoPreference, Mutual or Reset. Just setting Peerstate.prefer_encrypt to Reset already does what you describe in "solution 1", and this is what Peerstate.degrade_encryption() does.

it's also arguably a bug with implementing the autocrypt spec which mandates that after 35 days the recommendation is to not encrypt.

IIRC this rule was never implemented in Delta Chat. It might make sense for 1:1 chats, but I definitely do not want it for large groups with many inactive users, because they will then become unencrypted after some time even though we treat encryption preference in groups as a majority vote (#1946).

If we consider implementing "35 days" rule for 1:1 chats, it should be aligned with #4188 and encryption should not just silently drop without any warning.

it might be that our "reply encrypted to encrypted last message" policy is too eager but should actually only be strict when "quote-replying" but not for regular standalone messages?

This is already the case since quoting was implemented in #1975.

link2xt commented 1 year ago

Removed "bug", this issue is actually a feature request.