You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/en/docs/specs/group_chat.md
+58Lines changed: 58 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -213,3 +213,61 @@ FUTURE WORK:
213
213
However the core cryptography of the Reunion protocol was ported to golang, here: https://github.com/katzenpost/reunion/
214
214
215
215
216
+
# New Proposal Voucher Design
217
+
218
+
This is a new design proposed by Leif and Threebithacker:
219
+
220
+
221
+
## Contact vouchers
222
+
223
+
In order to join or initiate a conversation, participants need to exchange cryptographic key material.
224
+
To address this problem we have a slightly unusual design: Contact vouchers.
225
+
226
+
In many systems, invites to conversations flow from an existing member of the conversation to the user being invited.
227
+
In our "Contact Voucher" protocol this flow is reversed:
228
+
A member wishing to join a conversation hands a "Contact Voucher" (out of band) to the existing member, who then inducts the new member into the group.
229
+
230
+
This design mitigates two potential problem with the former way of doing it:
231
+
1. If the Contact Voucher is observed by a third-party, the third-party does not get to read neither participants' actual messages.
232
+
-**Passive** adversaries learn that the voucher was spent, but do not get to observe further interactions.
233
+
-**Active** adversaries can create a new fake group to induct the member into but does not learn anything about the existing group.
234
+
- In the future to prevent this one-way impersonation we could allow a "both parties bring something on paper to the meeting":
235
+
- Bob brings Contact Voucher
236
+
- Alice brings fingerprint for the VoucherReplyPublicKey (thwarts the active attacker)
237
+
2. Only one thing needs to delivered out of band to achieve a 2-pass protocol (instead of a 3-pass protocol).
238
+
- Only one of the parties need to bring key material to a meeting in order to establish contact.
Bob-->>+Bob: Poll the second VoucherSeq box until Alice replies
261
+
VoucherSeq->>+Bob: VoucherReply
262
+
```
263
+
264
+
## Self-authenticating BACAP payload
265
+
The first message sent (The VoucherPayload) is authenticated in the following manner:
266
+
- The VoucherPayload is computed (first).
267
+
- A cryptographic hash of the VoucherPayload is computed. This hash **is** the *Voucher**.
268
+
- The **Voucher** is then used to derive a BACAP read/write capability set.
269
+
- The VoucherPayload is uploaded to the sequence described by the capability (at index 0).
270
+
- Anyone who intercepts the **Voucher** can read **and** write the sequence.
271
+
- But: Since the **Voucher** is a hash over the VoucherPayload, writing the sequence with anything but the VoucherPayload will be detectable by the recipient.
272
+
- This means that the contents *cannot* be undetectably be modified by the interceptor.
0 commit comments