Skip to content
Snippets Groups Projects
Commit d389ea68 authored by kwadronaut's avatar kwadronaut :speech_balloon:
Browse files

Merge branch 'master' of code.leap.se:leap_se

parents 228b8150 cf39cd89
No related branches found
No related tags found
No related merge requests found
Pipeline #21474 passed
...@@ -6,6 +6,7 @@ about-us ...@@ -6,6 +6,7 @@ about-us
# people # people
contact contact
news news
2018
2017 2017
2016 2016
2015 2015
......
@title = 'Maintenance release: Bionic packages and long term evolution'
@author = 'kwadronaut'
@posted_at = '2018-07-26'
@more = true
@preview_image = '/img/pages/bionic.png'
Update from the coagulated brains in LEAP
----------------------------------------------------------------------------------------------------
Mid july we released packages as a maintanance release with support for Ubuntu 18.04 (Bionic). For install instructions check out https://dl.bitmask.net/linux/
The bundles however have not been updated, our plan is to deprecate them and migrate to [Snap-packages](https://en.wikipedia.org/wiki/Snappy_\(package_manager\) ), which will take some time. As usual bug reports and feedback is very welcome.
If you want to follow developments or experiment with those Snap packages, you can find an experimental one tailored for Riseup at [snapcraft](https://snapcraft.io/riseup-vpn), they've written a nice how-to as well: <https://riseup.net/betatest>
We're expanding now as well and are building a Windows installer, it's working pretty smooth, but still lacks a good firewall, we're looking forward to the near future to announce this more broadly.
* Code & Bugtracker: https://0xacab.org/leap
* Mailinglist: leap-discuss@lists.riseup.net
* Chat: ircs://irc.freenode.org/#leap if you don't have an irc client, you can use some gateway like [Matrix](https://about.riot.im/)
- @path_prefix = '2018'
= child_summaries :order_by => :posted_at
@title = 'Improved data synchronization'
@author = 'drebs'
@posted_at = '2018-04-27'
@more = true
@preview_image = '/img/pages/mozz/ascii.png'
Last year, LEAP [was awarded a grant from the Mozilla Open Source Support
program](https://leap.se/en/about-us/news/2017/mozilla-thanks) to [improve its
encrypted email
system](https://leap.se/en/about-us/news/2017/perf-improvements-soledad). We
would like to share with you some of the work that has been done as a result of
that, and also thank Mozilla for its initiative.
The general idea was to implement separation of data and metadata for encrypted
email storage and synchronization. That would allow for two fundamental
improvements: a better user experience (because the list of email messages
would then be able to be loaded before the actual contents of the messages),
and a better usage of systems resources (encrypted messages were previously
being treated as plaintext strings and thus consumed lots of unneeded memory
and cpu).
The [roadmap](https://0xacab.org/leap/soledad/wikis/2017-roadmap) included the
creation of a platorm to assess the performance impacts of proposed changes,
the actual implementation of the separation of data and metadata during
synchronization, and some specific performance and scalability improvements of
the sync server implementation.
The live benchmarking platform that was created proved to be very useful to fix
pre-existing performance issues and avoid unexpected performance bugs
introduced during development. A CI environment was used to run performance
test code for every commit made in the repository, and created graphs for
resource consumption (time taken, and amount of memory and cpu used during
execution). The quality of decisions made during development and the resulting
code were improved by having a live performance-wise feedback about proposed
changes.
As for data and metadata separation, changes to
[Soledad](https://leap.se/soledad) were made so that encrypted blobs can now be
delivered by external aplications directly to the user's database. The main use
case for this is for delivery of incoming email. LEAP's architecture is built
so that unencrypted email messages get encrypted before being delivered to the
user's mailbox. Metadata will soon be synchronized to the user's device, and
the user will be able to see the information associated with the message
(origin, date, subject, etc). But the actual content of the message will only
be downloaded and decrypted on demand, when the user clicks to read the
message.
Other than those major developments, the MOSS grant has also alllowed us to
experiment with multiple possibilities of performance improvements, as for
example server parallelization, usage of different asynchronous libraries,
Python 3 comparison, usage of proxies for load balancing, among others.
We very much appreciate the support from Mozilla that has allowed for
concentrated focus on Soledad. The work done within this contract has allowed
for the creation of a system to handle encryption and transfer of binary data,
leading to a much faster and scalable email solution. The critical
implementation of a benchmarking system produced clear data to find
bottlenecks, drive development, and allow for targeted changes to increase
speed and scalability of data encryption and transfer chain.
LEAP looks forward to applying that work to Bitmask Mail where end users will
reap the benefits. Development of this new blobs system and its future
integration with Bitmask Mail will be a critical step in bringing easy to
deploy truly secure email to a mass market.
@title = 'LEAP member received the 2018 Pizzigati Prize'
@author = 'isydor'
@posted_at = '2018-05-03'
@more = false
@preview_image = '/img/pages/tides_logo.png'
We are proud that [Tides](https://www.tides.org/) awarded LEAP
member Andre Bianchi the [2018 Pizzigati
Prize](https://www.tides.org/accelerating-social-change/2018-pizzigati-prize-andre-bianchi/). Thank you a lot for this recognition of the work done to make it
possible to freely communicate digitally and to support social change!
...@@ -12,15 +12,15 @@ Bonafide is a protocol that allows a user agent to communicate with a service pr ...@@ -12,15 +12,15 @@ Bonafide is a protocol that allows a user agent to communicate with a service pr
* Authenticate with a provider. * Authenticate with a provider.
* Destroy a user account. * Destroy a user account.
Bonafide user SRP (Secure Remote Password) for password-based authentication. Bonafide uses SRP (Secure Remote Password) for password-based authentication.
h1. Definitions h1. Definitions
*DOMAIN* is the primary domain of the provider. This specified by the user when they enter what provider they want to sign up with. *DOMAIN* is the primary domain of the provider. This is specified by the user when they enter which provider they want to sign up with.
*API_BASE* is the root URL of all the API calls. This is constructed from @api_uri/api_version@, where @api_url@ and @api_version@ are values found in the @provider.json@ file. *API_BASE* is the root URL of all the API calls. This is constructed from @api_uri/api_version@, where @api_url@ and @api_version@ are values found in the @provider.json@ file.
*ca.crt* is used to denote the provider's self-signed Certificate Authority certificate used to sign all the provider's server certificates, except for DOMAIN which uses a commercial Certificate Authority. *ca.crt* is used to denote the provider's self-signed Certificate Authority certificate, which is used to sign all of the provider's server certificates, except for DOMAIN which uses a commercial Certificate Authority.
*ca_cert_uri* is the special URL that specifies where to download the provider's CA certificate (@ca.crt@). The value for @ca_cert_uri@ is found in @provider.json@. *ca_cert_uri* is the special URL that specifies where to download the provider's CA certificate (@ca.crt@). The value for @ca_cert_uri@ is found in @provider.json@.
...@@ -34,7 +34,7 @@ h2. JSON files ...@@ -34,7 +34,7 @@ h2. JSON files
h3. GET DOMAIN/provider.json h3. GET DOMAIN/provider.json
The @provider.json@ file includes basic information about a provider. The URL for provider.json is always the same for all providers (`http://DOMAIN/provider.json`). This is the basic 'bootstrap' file that informs the user agent what URLs to use for the other actions. The @provider.json@ file includes basic information about a provider. The URL for @provider.json is always the same for all providers (`http://DOMAIN/provider.json`). This is the basic 'bootstrap' file that informs the user agent what URLs to use for the other actions.
This request MUST be made no more than ONCE. All subsequent requests to update @provider.json@ must be made to @GET API_BASE/provider.json@. This request MUST be made no more than ONCE. All subsequent requests to update @provider.json@ must be made to @GET API_BASE/provider.json@.
...@@ -104,7 +104,7 @@ h1. REST API ...@@ -104,7 +104,7 @@ h1. REST API
h2. Version h2. Version
The API_BASE for the webapp API is constructed from 'api_uri' and 'api_version' from provider.json. The API_BASE for the webapp API is constructed from @api_uri@ and @api_version@ from provider.json.
For example, given this in provider.json: For example, given this in provider.json:
...@@ -123,7 +123,7 @@ h2. Session ...@@ -123,7 +123,7 @@ h2. Session
h3. Handshake h3. Handshake
Starts authentication process (values A and B are part of the two step SRP authentication process). The handshake starts the authentication process between a client and a provider. In the following example, values A and B are part of the two-step SRP authentication process.
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
...@@ -141,7 +141,7 @@ Starts authentication process (values A and B are part of the two step SRP authe ...@@ -141,7 +141,7 @@ Starts authentication process (values A and B are part of the two step SRP authe
</tr> </tr>
</table> </table>
If the query_params leave out the @A@, then no @B@ will be included and only the salt for the given login send out: If the query_params leaves out the @A@ parameter, then no @B@ parameter will be included in the response and only the salt for the given login will be sent in the reply.
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
...@@ -161,7 +161,7 @@ If the query_params leave out the @A@, then no @B@ will be included and only the ...@@ -161,7 +161,7 @@ If the query_params leave out the @A@, then no @B@ will be included and only the
h3. Authenticate h3. Authenticate
Finishes authentication handshake, after which the user is successfully authenticated (assuming no errors). This needs to be run after the Handshake. Finishes the authentication handshake, after which the user will be successfully authenticated assuming there were no errors in the process. This needs to be run after the Handshake.
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
...@@ -193,7 +193,9 @@ Variables: ...@@ -193,7 +193,9 @@ Variables:
h3. Token Authentication h3. Token Authentication
Tokens returned by the authentication request are used to authenticate further requests to the API and stored as a Hash in the couch database. Soledad directly queries the couch database to ensure the authentication of a user. It compares a hash of the token to the one stored in the database. Hashing prevents timing attacks. Tokens returned by the authentication request are used to authenticate further requests to the API, and are stored as a hash in the Couch database.
Soledad ([[https://leap.se/en/docs/design/soledad]]) directly queries the couch database to ensure the authentication of a user. It compares a hash of the token to the one stored in the database. Hashing prevents timing attacks.
h3. Logout h3. Logout
...@@ -219,7 +221,7 @@ h2. User Certificates ...@@ -219,7 +221,7 @@ h2. User Certificates
h3. Get a VPN client certificate h3. Get a VPN client certificate
The client certificate will be a "free" cert unless client is authenticated. This certificate includes no identifying information that associates it with the user. Depending on the service level of the user, the certificate may have a common name that indicates that the certificate is valid for rate limited or unlimited bandwidth. The client certificate will be a "free" certificate unless the requesting client is authenticated. This certificate includes no identifying information that associates it with the user. Depending on the service level of the user, the certificate may have a common name that indicates that the certificate is valid for rate limited or unlimited bandwidth.
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
...@@ -235,9 +237,9 @@ The client certificate will be a "free" cert unless client is authenticated. Thi ...@@ -235,9 +237,9 @@ The client certificate will be a "free" cert unless client is authenticated. Thi
The response also includes the corresponding private key. The response also includes the corresponding private key.
h3. Get a SMTP client certificate h3. Get an SMTP client certificate
The client certificate will include the user's email address and the fingerprint will be stored with the users identity and the date it was created. This is so that a provider can shut down a user's account if it is sending large amounts of Spam. Authentication is required. The client certificate will include the user's email address and the fingerprint will be stored with the identity of the user as well as the date it was created. This is so that a provider can shut down a user's account if it is sending large amounts of spam. Authentication is required in order to receive an SMTP client certificate.
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
...@@ -277,7 +279,7 @@ Create a new user. ...@@ -277,7 +279,7 @@ Create a new user.
h3. Update user record h3. Update user record
Update information about the user. Requires Authentication. Update information about the user. Requires authentication.
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
......
pages/img/pages/bionic.png

308 KiB

pages/img/pages/mozz/ascii.png

37.6 KiB

pages/img/pages/tides_logo.png

41.3 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment