200 lines
18 KiB
Plaintext
200 lines
18 KiB
Plaintext
|
|
Episode: 1461
|
||
|
|
Title: HPR1461: FOSDEM Keysigning Event
|
||
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr1461/hpr1461.mp3
|
||
|
|
Transcribed: 2025-10-18 03:31:19
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
Music
|
||
|
|
Hello everyone, this is Dave Morris.
|
||
|
|
Today I wanted to talk to you about an experience I had at the FOSDEM conference in
|
||
|
|
Brussels, Belgium. That took place on the 1st and 2nd of February 2014 and during the conference
|
||
|
|
I took part in a key signing event. I wanted to do this partly to see what it was, what it looked
|
||
|
|
like, how it worked, partly because I knew that the end product would be an improved level of trust
|
||
|
|
on my GPG key. FOSDEM key signing is a really big event, one of the biggest in Europe, so I thought
|
||
|
|
it was going to be pretty interesting to attend. I've created a lot of show notes to go along with
|
||
|
|
this talk in the hopes that it helps to understand what I find, at least to be a pretty complicated
|
||
|
|
process. I'm maybe not going to cover everything that's in the notes because I was going to end up
|
||
|
|
reading them to you, which is probably not a good idea. Anyway, let me just explain a little bit
|
||
|
|
about what a key signing party is. It's an event where a number of people present the details of
|
||
|
|
their public keys, PGPGPG or whatever, along with the proof of identity, and they do this to
|
||
|
|
other participants so that they can be checked. Now, actually, signing takes place at this event,
|
||
|
|
since if people were there signing keys, there would be a terrible temptation for
|
||
|
|
nasty people to come along and try and hack their machines or very least shoulder serve there.
|
||
|
|
They're pass phrases, but the participants take away a list of participants and the fact that
|
||
|
|
they check them and see their IDs and so forth so that they can go home and sign the keys.
|
||
|
|
The overall purpose is so that the decentralized web of trust, that is one of the consequences
|
||
|
|
of using these types of keys, is enhanced. I'm not going to go into details of the web
|
||
|
|
trust. I put a few pointers to further reading on this, and I imagine that a hooker will be
|
||
|
|
maybe looking at this in the future. So before I set off to FOSDEM, before I got ready for the key
|
||
|
|
signing, I obviously need to have a GPG key, which I had because I've been using it to sign an
|
||
|
|
encrypt mail for a while, a few years actually. They're only really messing around with it until
|
||
|
|
fairly recently. So having got this key, I thought rather than create a new one, I'd just use this one
|
||
|
|
for the purpose. If you want to know more about how to create your own key, then have a listen to
|
||
|
|
a hooker's shows which I've indexed from from my notes. I'm sure you'll be able to find them
|
||
|
|
otherwise. So given that I had a key, the first thing I needed to do was to submit it to the FOSDEM
|
||
|
|
key server, where all of the participants' keys were being collected, and I've given the command
|
||
|
|
to do that in my notes. The key submission was available from the point of announcement
|
||
|
|
in 2013 all the way up until Monday the 27th of January 2014. Since I was learning more about
|
||
|
|
GPG and keys and stuff, I did end up fiddling around with my key after I'd submitted it.
|
||
|
|
In particular, I was using KGPG and found that it was easy to add a photo ID to my key,
|
||
|
|
which I thought was obviously a good thing to do. I thought I did that, and this has a certain
|
||
|
|
relevance to what happened later on in the story. So close to the time where the event was to take
|
||
|
|
place, the participants were contacted, and we were asked to do various things. First of all,
|
||
|
|
there was a list of all the participants available on the FOSDEM website. There were 280 keys in
|
||
|
|
this in total. That was a larger number than the number of people, because some people submitted
|
||
|
|
multiple keys. We had to check that our entry in this list, the key fingerprint that was presented
|
||
|
|
there was correct, and we also had to download and print this list so that we could bring it along
|
||
|
|
with us to the event. We had to do this in a particular way, which I must admit was a bit new to me,
|
||
|
|
using a tool called PAPS, perhaps I assume it is, because it contains UTF8 data. Very little
|
||
|
|
else will do this, apparently. It was possible to go via latech and print out any photo IDs,
|
||
|
|
but I didn't do this because I wasn't clear that it would actually work for me. I've not managed
|
||
|
|
to get it to work since actually. We were asked also to generate check sums for the participant file
|
||
|
|
and write these down on the front of the sheet, and this was so we could check that there'd been no
|
||
|
|
tampering with the file between us picking your dashboard, being sent from the site or whatever,
|
||
|
|
and getting to the event, and obviously we had to bring an ID with us and a pen. I decided to bring
|
||
|
|
my passport with me as my ID. So the key signing event took place on Sunday, the 2nd of February,
|
||
|
|
2 in the afternoon, and it was a large number of people gathered there, but it transpired later on
|
||
|
|
that there were a fair number of no-shows, a number of people who submitted but never arrived.
|
||
|
|
It started by the organizer calling out the check sums for the list file, the participant list,
|
||
|
|
which we then needed to check. Then we were asked to order ourselves by submission number. There
|
||
|
|
was a number against our entry in the participant list. We were asked to arrange ourselves in order of
|
||
|
|
that number, and then the line wrapped around such that number one, face number 140, and so on,
|
||
|
|
down the line. Then we began the process of checking our opposite numbers, documents, and filling
|
||
|
|
in the sheet. So in order to carry out a check, we first of all had to find out what the number of
|
||
|
|
person we were talking to, so we looked them up on the sheet. We had to ask them to confirm that
|
||
|
|
they were happy that the document check sum matched with what the organizer had read out. We had
|
||
|
|
to check that they were happy with the key fingerprint in the document, and then we had to look at
|
||
|
|
their passport or driving license to check against the details on the paper, the name, and so forth,
|
||
|
|
check that the pictures match, check that they were valid documents as well, I guess.
|
||
|
|
If everything checked out okay, we ticked the two boxes on the form against that person. In fact,
|
||
|
|
some cases there were multiple entries, which we also had to check. Then we moved one step to the
|
||
|
|
right and carried on. So this line was wrapping around at the far end as well. What we were actually
|
||
|
|
doing here then was collecting details of our verifications so that we could do the real key
|
||
|
|
signing when we got home, put a couple of pictures of my friend took at the event so you can
|
||
|
|
get some idea of what it looked like. So it took in the region by coincidence, it took me two hours
|
||
|
|
to check 100 keys, and everybody else, I guess, the same sort of rate. This didn't fit in with what
|
||
|
|
was estimated to start with. It should have been one hour per 100 checks, but the actual process
|
||
|
|
of checking seemed to be a lot slower than perhaps it should have been. Different people seem to be
|
||
|
|
much quicker or much slower than others. They tended to be big gaps between participants, so we'd
|
||
|
|
be standing there waiting for somebody to make the way down the line. In some cases people tried
|
||
|
|
to skip past the slow people who were making these gaps, but then that got really chaotic because
|
||
|
|
all of a sudden from thinking that you could work your way through the list sequentially,
|
||
|
|
suddenly had to fumble about and find number 200 and something after you'd just been dealing with
|
||
|
|
number 50 something, and that got really chaotic. So I think that was one of the, there was
|
||
|
|
some of the reasons why things went slowly. Some people were very meticulous about doing the
|
||
|
|
checks one guy, brought a UV torch and spent some time looking through my passport, and
|
||
|
|
I was surprised the number of people who pointed out that my passport would need renewal in a few
|
||
|
|
months, so they were obviously reading everything on it. Now I wasn't able to stay to the end of this
|
||
|
|
because I had a plane to catch, so after two hours I had to leave. I suspect that there were a lot
|
||
|
|
of other people leaving earlier than was ideal. I don't think everybody signed everybody's key.
|
||
|
|
So the next thing to do was to do the key signing homework as they called it.
|
||
|
|
I found that I started receiving emails from people before the conference had even ended on
|
||
|
|
at 6 p.m. on the Sunday, so at the time I got home the next day I started processing these and
|
||
|
|
getting ready to do this homework. Again, I don't know why in particular I chose this point to do it,
|
||
|
|
but I thought having seen how other people had organized their GPG keys that I should reorganize
|
||
|
|
mine a bit, I'd actually created two keys. There was one I was using for email and another one that
|
||
|
|
was anticipating another email address I was setting up for myself. I noticed that a lot of people
|
||
|
|
had just the one key with multiple UIDs and emails on them and I thought well the best thing to do
|
||
|
|
would be to merge the two together. So I revoked my alternate key and added the email addresses
|
||
|
|
as a secondary UID to the main key. I won't go into detail about how I did this, though
|
||
|
|
I can't do if anybody's interested. This was maybe a bad decision at this particular point,
|
||
|
|
there you go. So the first thing I did was to import the signatures that I started to receive
|
||
|
|
through the means of email. The messages I got were encrypted messages with a message body
|
||
|
|
describing that this was a key signing message with some instructions in it and one or more
|
||
|
|
attachments on email. I used Thunderbird with an e-mail to do my GPG stuff and I found that once I'd
|
||
|
|
opened the email with my past phrase I could right click an attachment and import the signed key
|
||
|
|
into my key ring and this went pretty well. There's a picture of what the email looks like,
|
||
|
|
suitably anonymized. Not sure quite why it needs to be anonymized but I thought it might be
|
||
|
|
more polite to do that. I found that when there was a single attachment this was a signature against
|
||
|
|
my main email address, not too surprisingly. Sometimes I received two attachments and the other
|
||
|
|
one was a signature against my photo ID. So people had actually gone to the trouble of checking
|
||
|
|
that the photo in my key actually matched me and was signing it. In some cases I received two
|
||
|
|
email messages and this was because the second signature, the second email address I'd added to the
|
||
|
|
key was also getting a signature which strictly they shouldn't have done I guess but I think the
|
||
|
|
tool they were using offers you the choice whether to do it or not and people have maybe thought
|
||
|
|
oh well why not and they haven't checked against the list to see that that key hadn't that email
|
||
|
|
address that your ID hadn't been presented at the time. So once I got my head round importing the
|
||
|
|
keys the signatures that I would that have been the signed keys what I'm trying to say. Then
|
||
|
|
next thing to do was to try and do my signing for the people I'd checked. So looking at the
|
||
|
|
various information that the FOSDAM website offered I reckoned that the tool called CAF, C-A-F-F
|
||
|
|
was probably the way to go. This is part of the signing party package which is available on
|
||
|
|
Ubuntu and other APT based systems. So I installed this on my Ubuntu system.
|
||
|
|
CAF is a script that can sign a bunch of keys at a time. It has a configuration file and
|
||
|
|
requires access to your GPG configuration. It also sends out emails directly through a local MTA
|
||
|
|
so you need to be running your own mail server. I was but I hadn't configured it to do anything
|
||
|
|
very much so I had to spend some time configuring post-fix to relay through Gmail. In the show notes
|
||
|
|
I've shown details of how you set up the .caf, C file which is a necessary prerequisite. I won't
|
||
|
|
explain that in too much detail now. There's loads of information on the man page and the links that
|
||
|
|
I've pointed to in the notes. The script also needs a directory to store the keys that it's
|
||
|
|
working on. You can also, and it's recommended that you do this, set up a copy of the gpg.conf file
|
||
|
|
and use that as part of the process. One suggestion was that you link it to the actual gpg.conf
|
||
|
|
which is what I did. It's in the show notes how I did this. There are a bunch of additions
|
||
|
|
that should be made to the config file to streamline this whole process. There I was with
|
||
|
|
a hundred keys to sign. I didn't want to be typing these in one at a time so I wanted to automate
|
||
|
|
this process as much as I could. I created a file with the numbers of the participants whose keys I
|
||
|
|
checked, whose details I checked, IDs and so on, into this file, one number per line. I then wrote
|
||
|
|
a little script which, called collect keys, which would look up participant numbers in the list and
|
||
|
|
return their keys. There's a copy of it in the notes. It's quite trivial. So I was then able to
|
||
|
|
run this script with the numbers file and generate a list of keys. Then I ran these keys in batches
|
||
|
|
through the CAF program. Now the reason I did it in batches was because I wanted to check
|
||
|
|
each key against the list. The easiest thing to do is to take a page's worth however many
|
||
|
|
there were on a page and simply push this through CAF. So there's some details in the notes about
|
||
|
|
how I did this. When I'd processed a batch of keys, the example shows seven being processed.
|
||
|
|
Then I had another little pipeline which added a hash to the front of each key so that I wouldn't
|
||
|
|
process them again. Remember I'm going to detail them so you'll be able to work out what I was doing
|
||
|
|
there. It's no, not really a big deal. So the only slight disadvantage to doing them in batches
|
||
|
|
was that each batch needed me to enter my passphrase unless I was doing them rapidly one after the
|
||
|
|
other and I didn't do that. It took me two or three days to get through them all. So as a follow-up,
|
||
|
|
I, first of all, followed the recommendation which was to ensure that my now modified key
|
||
|
|
from the signatures that have been coming in was going up to a public key server so that people could
|
||
|
|
check against it and see their signatures on it. I think also the frauds and people want to do
|
||
|
|
statistics on the uptake of these signatures. I did that and it shows how to do it in my show notes.
|
||
|
|
So it was, I also found it interesting to monitor the keys that I was signing
|
||
|
|
after a day or two. There's an example of a command which will refresh these keys
|
||
|
|
make sure there are copies in my, they're already work copies in my queuing. So it's just refreshing
|
||
|
|
them and that let me see when the people who received the emails had applied them. I would
|
||
|
|
start it doing that because I wanted to be 100% certain. What I was doing was actually working
|
||
|
|
and as soon as I saw somebody was, the first person was actually attaching the signatures then
|
||
|
|
and knew that at least I'd got something that was working. Occasionally I refreshed my own key
|
||
|
|
by pulling a copy down off the server and that was because some people were not using care for
|
||
|
|
an equivalent tool to do it. They were just signing it directly. They'd taken a copy of it,
|
||
|
|
they'd signed it locally, they'd uploaded it and so if I hadn't done that I would have not noticed
|
||
|
|
the changes being made. So as of the time I'm recording this, which is now two weeks after
|
||
|
|
the signing event, 43 of the people, of the 100 people whose keys I signed have signed my key and so
|
||
|
|
it's pretty good. We've got until I think sometime in June to do them all. So things are going
|
||
|
|
quite well I think. I'll finish off by just giving a few thoughts and impressions about what
|
||
|
|
happened. I certainly found this to be a fascinating process. It gave me a much closer understanding
|
||
|
|
of what was going on here, though I'd certainly go a long way to go to fully understand this.
|
||
|
|
My key is a high level of trust associated with it and it's also part of the way of trust
|
||
|
|
as I mentioned before. I thought the logistics of the whole process were generally quite well handled
|
||
|
|
but with a large number of participants, 200 plus, it's not surprising that things got a little bit
|
||
|
|
confusing. I wrote to the organiser with a few comments and I'd heard other people making similar
|
||
|
|
comments and he's obviously taking these on board because he's updated the website with many of
|
||
|
|
the suggestions he's had in. So a few of the things that were commented about were if you got
|
||
|
|
everybody to wear a badge of some sort with their number on it, it would save some time. You could
|
||
|
|
look them up much more rapidly without having to ask them for their number and also if they put
|
||
|
|
on their responses to the questions about the checks on the document and whether they check
|
||
|
|
their fingerprint that would speed things up. It would be good if we were told about how the process
|
||
|
|
would actually happen, how the key signing party would take place as we were completely ignorant of
|
||
|
|
the process before it started. So that's already happened. He's put more details of that
|
||
|
|
up on the site and for my own point of view I'd quite have appreciated if we'd been somewhere
|
||
|
|
where there was some better lighting. It was fairly gloomy in that corridor that we were in and I
|
||
|
|
certainly found it quite hard to read my printout and some people's ideas various times. Be
|
||
|
|
tempted to take your head to watch something next time if that doesn't happen. So just one other
|
||
|
|
thought is that a lot of comments about GPG and similar things recommend that you don't use
|
||
|
|
the shortened version of the key but the full version is preferable because there could be
|
||
|
|
collisions with the short form. You could type in a short form key and hit because it's just the
|
||
|
|
last half of the full thing. You could have a collision with the wrong key. I certainly tried to
|
||
|
|
use the full key whenever I could but the list that we were given had the short form so it might
|
||
|
|
be a good idea if the list next year has the long form. So that's it. Thanks. Bye.
|
||
|
|
You have been listening to Hacker Public Radio at Hacker Public Radio.
|
||
|
|
We are a community podcast network that releases shows every weekday on day through Friday. Today's
|
||
|
|
show, like all our shows, was contributed by an HPR listener like yourself. If you ever consider
|
||
|
|
recording a podcast then visit our website to find out how easy it really is. Hacker Public Radio
|
||
|
|
was founded by the Digital Dark Pound and the International Computer Club. HPR is funded by
|
||
|
|
the Binary Revolution at binref.com. All binref projects are crowd-sponsored by linear pages.
|
||
|
|
From shared hosting to custom private clouds, go to lunarpages.com for all your hosting needs.
|
||
|
|
Unless otherwise stasis, today's show is released under a creative comments,
|
||
|
|
attribution, share a life, and it does our license.
|