... | ... | @@ -2,7 +2,7 @@ |
|
|
|
|
|
To add someone as a contact you have to meet up in person and scan QR codes from each other's screens. The QR codes contain data that allows your devices to connect to each other and verify that they're connected to the right device.
|
|
|
|
|
|
The devices exchange public keys and derive a shared secret. Then they upgrade to a secure connection, exchange Briar identities, and verify that the identity they've received belongs to the user of the other device.
|
|
|
The devices [exchange public keys](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BQP.md) and derive a shared secret. Then they upgrade to a secure connection, exchange Briar identities, and verify that the identity they've received belongs to the user of the other device.
|
|
|
|
|
|
An identity consists of a nickname that you choose when creating your account, and a public key that's used for signing messages. There's nothing to stop users from choosing the same nickname, so we call it a nickname rather than a username.
|
|
|
|
... | ... | @@ -20,7 +20,7 @@ Each transport is implemented as a plugin, which has a simple interface for maki |
|
|
|
|
|
##### Transport security
|
|
|
|
|
|
The security of the data (authentication, confidentiality, integrity and forward secrecy) is handled by the transport security protocol, BTP. The same protocol is used for all transports.
|
|
|
The security of the data (authentication, confidentiality, integrity and forward secrecy) is handled by the transport security protocol, [BTP](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BTP.md). The same protocol is used for all transports.
|
|
|
|
|
|
BTP is an obfuscated protocol: to anyone except the intended sender and recipient, all data is indistinguishable from random. So BTP's first job is to let the recipient know who sent the data, so the recipient can use the right key to authenticate and decrypt it.
|
|
|
|
... | ... | @@ -42,15 +42,15 @@ Once the recipient has recognised the tag, she uses the corresponding key to aut |
|
|
|
|
|
##### Data sync
|
|
|
|
|
|
BTP streams can carry any kind of data, but we use them to carry a data sync protocol called BSP. Its job is to synchronise chunks of immutable data between pairs of devices.
|
|
|
BTP streams can carry any kind of data, but we use them to carry a data sync protocol called [BSP](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md). Its job is to synchronise chunks of immutable data between pairs of devices.
|
|
|
|
|
|
Each chunk of data is called a message, and it's addressed to a group. A group is just a label that devices can subscribe to. It works much like a Usenet newsgroup.
|
|
|
|
|
|
You can create a group that's just stored on your own device, or shared with one other user, or with a known set of users, or an open-ended set of users that may contain people you don't know.
|
|
|
|
|
|
Briar uses these groups to implement private messaging, group messaging, blogs and forums, and also for automatic tasks like exchanging information with your contacts about how to connect over various transports.
|
|
|
Briar uses these groups to implement [private messaging](https://code.briarproject.org/akwizgran/briar/wikis/Messaging-Client), [group messaging](https://code.briarproject.org/akwizgran/briar/wikis/Private-Group-Client), [blogs](https://code.briarproject.org/akwizgran/briar/wikis/Blog-Client) and [forums](https://code.briarproject.org/akwizgran/briar/wikis/Forum-Client), and also for automatic tasks like exchanging information with your contacts about [how to connect](https://code.briarproject.org/akwizgran/briar/wikis/Transport-Properties-Client) over various transports.
|
|
|
|
|
|
Groups can also be used to implement multi-party protocols, like the protocol for introducing your contacts to each other.
|
|
|
Groups can also be used to implement multi-party protocols, like the protocol for [introducing your contacts](https://code.briarproject.org/akwizgran/briar/wikis/Introduction-Client) to each other.
|
|
|
|
|
|
BSP doesn't understand the content of messages or the purpose of each group. It just syncs the messages in the group with whichever contacts you've chosen to share the group with.
|
|
|
|
... | ... | |