From the java point of view
Recently I had to get some Scala Tool working correctly. Unfortunately
there are basically no packages in the Debian
Archive at all so I had to use maven to install these (or download +
install manually). Being a highly paranoid person downloading and
executing code from the internet without any cryptographic
verification at all one after the other practically drove me
nuts. Looking a bit deeper I noticed that some of the software in
maven's repository have some signatures
next to them -- signed by the author or release manager of this
specific project.
Why secure sources matters
With my experience in mind I got some Input from other people. One of
the things I was told is that some scala tools just aren't security
critical -- they're only installed and used as the current user. In my
opinion this is, for my desktop system, totally wrong. The important
things on my private Computers are my GPG and
SSH keys as well as my private data. For messing with these no super
user access is needed at all.
Comparing to the Common Lisp situation
Being a Common Lisp fan of course I noticed basically the same problem
for installing Common Lisp libraries. Here the situation in
Debian is quite a bit better -- and I'm
working in the pkg-common-lisp Team to improve this even more. Common
Lisp has some maven-alike tool for
downloading and installing dependency trees called
quicklisp -- without any cryptographic
verification as well. However there's light at the end of this tunnel:
There are plans to add GPG verification of
the package lists really soon.
Comparing the maven and the quicklisp model
So there are basically two different approaches to be seen here. In
maven the software author confirms with his
signature the integrity of his software while in
quicklisp the distributor confirms all
users get the same software that he downloaded. Now the
quicklisp author can't and won't check
all the software that is downloadable using
quicklisp. This won't be doable anyway as
there's way to much software or a single person to check.
Now in some kind of perfect World the maven
way would be vastly superior as there's a End-To-End verification
and verification of the full way the software takes. However there's
a big problem: I don't know any of these Authors personally and
there's no reason I should just trust any of them.
Now comparing this to the Distribution /
quicklisp model. Here I would just have
to trust one person or group -- here the
quicklisp team -- to benefit from the
crypto which might be possible based on karma inside the using
community. However here I don't gain the possibility that the software
is integer.
However idealized if some of these pieces of software was forged
between upstream and the quicklisp team
and attacker would also intercept me downloading the software from the
same address so I get the source from upstream matching the checksum
from quicklisp -- assuming the
quicklisp team does indeed know the
correct website. Additionally I get the confirmation that all other
quicklisp users get the same source (if
the quicklisp guys are fine of course) so
no-one inside the community complaining is a good indication the
software is fine. For this to work there's of course a relevant
user-base of the distributor (quicklisp)
necessary.
Relevance for Debian
So how do conventional Linux
Distributions like Debian fit in
here. Ideally we would have maintainers understanding and checking the
software and confirming the integrity using their private key or at
least know their upstreams and having at least a secured way getting
the software from upstream and a trust relationship with them. Of
course that's just illusionary thinking of complex and important
software (think libreoffice,
gcc or
firefox for example). Maintainers won't
fully understand a lot simpler pieces of software. And loads of
upstream projects don't provide a verified way of getting the correct
source code though that's a bit better on the real high-impact
projects where checksums signed by the Release Manager are more common
than in small projects.
A misguided thought at the end
As I'm a heavy emacs user I like
to have snapshots from current
emacs development
available. Fortunately binary packages with this are available from a
Debian guy I tend to trust who is also involved upstream so adding the
key from his repository to the keyring apt trusts. Now my first
thoughts were along the lines "It would be really nice if I could pin
that key to only the emacs
snapshot packages" so this guy can't just put libc packages in his
repository and my apt would trust them. Now thinking of it again a
bogus upload of the emacs
snapshot package could just as well put some binary or library on the
system at some place in front of the real on in the system path
which would be rather similar bad.
b