-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarification for step 6b in Setup Contact protocol #83
Comments
Bob has in step 4.a ascertained that Alice's key is consistent with the 1.a bootstrap info. However, i think a vc-contact-confirm should usually be encrypted, anyway, because there is no good reason not to. If you agree with this reasoning, we could add such a note sometime. |
It has to be encrypted and signed. Otherwise an attacker might block Bob has to verify the signature before displaying "success". |
On Tue, Jan 21, 2020 at 12:01 -0800, Alexander Krotov wrote:
It has to be encrypted and signed. Otherwise an attacker might block `vc-request-with-auth` and signal "success" to Bob by forging `vc-contact-confirm`. At this point Bob is not verified on Alice's devices, but Bob believes that he is.
Yes, but it would not lead to any of Alice or Bob encrypting with a wrong key.
But ok, if a UX shows "secure connection to Alice established" it's
reasonable to assume that this means that Bob can be sure that Alice
has positively verified Bob's key. So encrypting vc-contact-confirm
can certainly not hurt.
|
So by singing and encrypting vc-contact-confirm Bob can know that he is verified as far as Alice is concerned. Does this mean that if vc-contact-confirm is not encrypted and signed then this message does not actually add anything to the protocol as all information was already known by Bob in step 4? For Alice's case however success is signaled to the user in step 6a, so presumably this is when Alice marks Bob as verified. However if an attacker blocks vc-contact-confirm Bob will never mark Alice as verified. So Alice does not have the property of knowing that Bob considers her verified? Yet the vc-contact-confirm step is necessary for Bob to know Alice considers him verified. |
Alice knows it when she receives Looks like it is the reason for this TODO: After receiving Because attacker can stop the protocol at any point, it is impossible for both parties to know they are in the same state. It is a Two General's Problem, you can't solve it no matter how many steps of email exchange you add. You need a fault-tolerant channel for that. However, we don't have the goal of getting to If attacker blocks the |
Sounds reasonable, I was thinking that you can never know that you reached bidirectional verified status because of the lost message problem. But you convinced me that Alice actually has this state, she only doesn't know whether Bob also has this state. So remaining question I have before I could come up with a PR to suggest some wording improvements is where the requirement comes from for vc-contact-confirm to be encrypted rather than just signed (this questions applies to all messages I guess?). |
There are different reasons for other messages, such as not revealing AUTH value, for example. For |
But I would just encrypt everything that can be encrypted without stating the reason for that. And probably terminate the protocol if some message is not encrypted already, but in this case we need to check that Delta Chat's will stay compatible. |
The 6.b steps says:
sends Bob a “vc-contact-confirm” message.
However this is the only step which does not explicitly specify whether this message needs to be encrypted or cleartext. What does this do to the security properties of Setup Contact? Can an implementation choose whether to send it encrypted or cleartext?
The text was updated successfully, but these errors were encountered: