Hi Matt,
On Fri, 05 Mar 2021 01:30:12 +0100,
Matt Harris wrote:
> On 02-Mar-21 7:19 AM, Magnus Melin wrote:
> * Berna brought up RedHat not currently shipping Thunderbird OpenPGP, and how/if we could cooperate with the Sequoia team who is developing a solution for RHEL
> Thunderbird users. Berna will organize a meeting between Sequoia/Thunderbird developers.
>
> So let me get this. The Redhat security group chose to break
> Thunderbird by not shipping required component because it did not
> suit their chosen security model as it included the encryption
> library. Thunderbird does it's own security and that does not
> suit.
https://bugzilla.redhat.com/show_bug.cgi?id=1837512
I have sympathy for Redhat. Providing security support for a crypto
library is a big commitment. You point out in your message that most
RHEL users' care about web servers, not mail clients. So, it seems
perfectly reasonable to me for them to choose to ship a version of TB
without OpenPGP support. In fact, what they are doing is actually
supported by TB: the build scripts have an option to disable OpenPGP
supprt ("--disable-openpgp"); OpenPGP is not a required component.
> Now we are going to help fix Thunderbird so it runs on their product
> from their repository,
I'd like to provide a bit of the back story here. I work on Sequoia
PGP, a GPL2+ OpenPGP implementation written in Rust. You can learn
more about it here:
https://sequoia-pgp.org/
TL;DR: We're doing nearly all of the work on this; we contacted Magnus
and Kai to coordinate our efforts.
The longer version: A Fedora user recently made us aware of the fact
that Redhat includes a version of TB without OpenPGP support, and
pointed us to the same bug report that you mention above:
https://bugzilla.redhat.com/show_bug.cgi?id=1837512
In that bug report, a Redhat employee indicated that they'd be willing
to accept a patch to use a different OpenPGP backend.
We contacted someone from Redhat, and asked if they'd be interested in
a Sequoia backend. They said that since Sequoia uses Nettle, which is
one of the four crypto libraries that RHEL supports, they would in
principle be open to it. I made clear that Sequoia is under the GPL
2+, and was told that that is not a problem for them, since the MPL 2
and GPL are compatible.
(Using GPL 2 code *is* a problem for TB even thought the MPL 2 and
GPL2 are compatible:
https://www.fsf.org/blogs/licensing/mpl-2.0-release
As I understand it from Magnus, although TB ships code under other
licenses, they only ship code that is at least as liberally licensed
as the MPL 2; adding GPL 2 would impose additional restrictions on
user's and forks of TB.)
Our technical approach was to simply reimplement the RNP ABI that TB
uses. We also reuse the same file format as RNP so no migration is
required and you can switch between the two backends at any time.
You can see the code here:
https://gitlab.com/sequoia-pgp/sequoia-octopus-librnp
The current version passes all of TB's OpenPGP-related tests, and
several people on the Sequoia team have been using it as their daily
MUA.
Recently, we contacted Magnus and Kai to inform them about our
project, and to ask for a minimal amount of help. Yesterday we had a
conversation (the aforementioned meeting) with them and discussed the
following five issues:
- Confusion regarding the backend.
To make it easier to debug issues, we decided to modify TB to
print more information about the OpenPGP library at start up.
This is also useful when a distribution uses an unbundled version
of RNP, as Debian plans to do.
We'll provide a patch.
- Backwards compatibility.
To make sure a TB update doesn't cause the OpenPGP backend to stop
working, we proposed that if an RNP function is missing, TB should
fallback to a stub, which simply fails. This could also help when
a distribution uses an unbundled version of RNP.
Magnus and Kai were open to this. We'll provide a patch.
- CI.
We already started work on a pipeline to test TB using Sequoia on
our CI (it's not fully debugged):
https://gitlab.com/sequoia-pgp/build-thunderbird
Our concern is that we will test a different configuration and
fail to identify some issues.
We asked about adding a "may fail" job to TB's CI that also runs
the OpenPGP tests against the latest version of the Sequoia
Octopus. This would make sure that we find out about breaking
changes when then land.
We observed that testing against a second OpenPGP backend would
also help with interoperability.
Magnus and Kai were against this, as they don't want failing tests
for code that they don't want to support to prevent their CI from
being green. But, Kai said that he'll review our pipeline.
- Use a standard OpenPGP API and ABI.
Daniel Kahn Gillmor (dkg) developed an IETF internet draft that
specifies an OpenPGP-implementation agnostic command line
interface:
https://tools.ietf.org/html/draft-dkg-openpgp-stateless-cli-02
We're using this is our OpenPGP interoperability test suite:
https://tests.sequoia-pgp.org/
The API has been well received by the community. Of the 9 OpenPGP
implementations that we test, half of the SOP implementations were
not written by us. Currently, dkg is working on a C API:
https://gitlab.com/dkg/openpgp-stateless-cli/-/issues/32
We think that this would also help RNP. Justus, who did nearly
all of the implementation work on the octopus, kept notes, and
identified a number of issues in RNP's API (unclear documentation,
poor defaults, misunderstands of the standard):
https://gitlab.com/sequoia-pgp/sequoia-octopus-librnp/-/blob/main/notes.org
If RNP used a standard C API, many of these issues would
disappear.
It would also be useful for TB as TB could more easily replace
their OpenPGP implementation, should the need ever arise.
Magnus and Kai indicated that they are happy with RNP's API, and
don't think the RNP developers would want to implement the SOP C
API as they'd lose their competitive advantage. As such, they
don't want to invest any time in this.
- Bring back OpenPGP's native authentication mechanisms.
OpenPGP supports a non-hierarchical authentication framework,
which is a superset of X.509, which is used by TLS and S/MIME.
This framework is sometimes referred to as the "web of trust,"
which makes people think about key signing parties, but it is
quite a bit more than that. For instance, OpenPGP CA uses it to
simplify authenticating OpenPGP certificates in organizations.
https://openpgp-ca.org/
There are many organizations who lament TB 78's lack of OpenPGP's
authentication mechanisms. For example:
https://thunderbird.topicbox.com/groups/e2ee/Tcb4b3decdb7e66ce-M65309638f210286b7469ce61
We're in close contact with a few of them.
Yesterday, we discussed whether there is interest in restoring
OpenPGP authentication, and how that might look. We decided that
I would open an issue on TB's bugzilla with a concrete proposal.
Once everyone is satisfied, we (Sequoia, not TB) would implement
it.
I hope you agree that the burden on TB is minimal, and that we are
doing nearly all of the work. Concretely, we are trying to coordinate
our efforts to avoid making work for TB.
If you have any questions, I'll be happy to answer them on or off
list.
:) Neal
_______________________________________________
tb-planning mailing list
tb-pl...@mozilla.org
https://mail.mozilla.org/listinfo/tb-planning