Stretching out for trustworthy reproducible builds creating bit by bit identical binaries
-
Not SyncedWelcome and good morning
-
Not SyncedThis is the reproducible builds team,
talking about -
Not Synced"Stretching out towards trustworthy
computing" -
Not Synced[Applause]
-
Not SyncedWe're 4 on stage, but actually this is a
team effort. -
Not SyncedAll these people listed here have
contributed to the project at one point. -
Not SyncedThe 4 of us, that's
-
Not SyncedLunar − me
-
Not Syncedthere's Dhole,
-
Not SyncedChris Lamb − lamby
-
Not Syncedand Holger.
-
Not SyncedBut actually, this is DebConf and so a lot
more of us have been or are -
Not Syncedcurrently here and so, if you want to
thank anybody that is working on this -
Not Syncedyou need to actually thank all of
these folks -
Not Synced'cause, yay.
-
Not Synced[Applause]
-
Not Synced[Holger] The people in blue are here.
-
Not Synced[Lunar] Let's get started.
-
Not SyncedQuick ??? on what we're talking
about. -
Not SyncedWe have software, it's made from source.
-
Not SyncedSource is readable by humans or at least
a good amount of humans. -
Not SyncedIn this room it's good.
-
Not SyncedBinary, readable by computer and some
tiny fraction of humanity. -
Not SyncedGoing from source to binary is called
build, or like building or compiling -
Not Syncedand we're doing free software and
free software is awesome because -
Not Syncedwe can actually run these binaries like
we want -
Not SyncedWe can actually study the software, how
it's been made by studying the source -
Not Syncedand by studying the source we can assess
that it does what it's supposed to do -
Not Syncedand not something else that does not
-
Not Syncedhave malware, or trojans or security bugs
-
Not SyncedSo we have the binary that can be used,
fine. -
Not SyncedWe have the source that can be verified.
-
Not SyncedProblem is that right now, the only way we
know that a binary that we get… -
Not SyncedWe have to trust a website or a Debian
repository that says -
Not Synced"Well, this binary has been made with this
source" -
Not SyncedBut there's no way we can actually prove
that. -
Not SyncedThis is actually a problem that has been
well explained by -
Not SyncedMike Perry and Seth Schoen at the 31c3
in Hamburg last december. -
Not SyncedFor example, Seth Schoen made a proof of
concept exploit for the Linux kernel -
Not Syncedthat when GCC was called, the kernel would
without modifying anything on the disk -
Not Syncedwhen the kernel detects that GCC is going
to read a C file, it will insert some -
Not Syncedextra lines of code, and these lines of
code can be a very bad thing -
Not Syncedin the case of 31c3 talk I was just
recalling. -
Not SyncedActually, you can even have developpers
who are in very good faith, who have -
Not Syncedtotally secure dev machines, or they
thought they have, -
Not Syncedwho have reviewed all their source code
for any bugs -
Not Syncedand we would still get totally owned as
soon as their computer gets compromised -
Not Syncedor one of the build demons from Debian
gets compromised for example. -
Not SyncedThis is not, like, hypothetical threats
here we're discussing -
Not SyncedA couple of months after Seth an Mike's
talk at 31c3, -
Not Syncedthe Intercept revealed from the Snowden
leaks -
Not Syncedthat at a CIA conference in 2012, one
of the talks that happened -
Not Syncedwas about a project called Strawhorse.
-
Not SyncedStrawhorse is about modifying Apple XCode,
which is the development environment -
Not Syncedfor MacOS 10 and iOS applications
-
Not Syncedand well, they were modifying XCode so
it would produce, -
Not Syncedwithout the developer knowing,
-
Not Syncedbinaries with trojans, malware,
??? binaries, lots of bad things. -
Not SyncedSo, solution:
-
Not Syncedenable anyone to reproduce identical
binary packages from a given source. -
Not SyncedBecause if using a source, using the same
environment, -
Not Syncedmultiple people on different computers, on
different networks, at different times, -
Not Syncedcan all get the same thing
from the same source -
Not Syncedall the same binary, byte for byte,
-
Not Syncedthen there's a good chance that…
-
Not SyncedWell, everybody could be owned,
but let's be more joyful and say that -
Not Syncedprobably, if everybody gets the same
result, there was actually no problem -
Not Syncedand everybody is safe.
-
Not SyncedWe call that solution
"reproducible builds" -
Not SyncedYay.
-
Not Synced[Applause]
-
Not SyncedActually, it's not only about security.
-
Not SyncedFor Debian, we have, if you're doing
"Multi-arch: same" packages, -
Not Syncedwell they only have the same bytes if
they are built for different architectures, -
Not Syncedthe files in the package.
-
Not SyncedDebug packages, you can create at a later
time, if you forgot to have debug packages -
Not Syncedin the first place,
-
Not Syncedyou can pass the no-strip option later and
because the package is reproducible, -
Not Syncedyou will get the debug symbols that work
for software that has been shipped already -
Not SyncedWe do early detection of FTBFS that way
-
Not Syncedbecause if we try pretty quickly
to reproduce a build, -
Not Syncedthen it has to work.
Show all