< Return to Video

Stretching out for trustworthy reproducible builds creating bit by bit identical binaries

  • Not Synced
    Welcome and good morning
  • Not Synced
    This is the reproducible builds team,
    talking about
  • Not Synced
    "Stretching out towards trustworthy
    computing"
  • Not Synced
    [Applause]
  • Not Synced
    We're 4 on stage, but actually this is a
    team effort.
  • Not Synced
    All these people listed here have
    contributed to the project at one point.
  • Not Synced
    The 4 of us, that's
  • Not Synced
    Lunar − me
  • Not Synced
    there's Dhole,
  • Not Synced
    Chris Lamb − lamby
  • Not Synced
    and Holger.
  • Not Synced
    But actually, this is DebConf and so a lot
    more of us have been or are
  • Not Synced
    currently here and so, if you want to
    thank anybody that is working on this
  • Not Synced
    you 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 Synced
    Quick ??? on what we're talking
    about.
  • Not Synced
    We have software, it's made from source.
  • Not Synced
    Source is readable by humans or at least
    a good amount of humans.
  • Not Synced
    In this room it's good.
  • Not Synced
    Binary, readable by computer and some
    tiny fraction of humanity.
  • Not Synced
    Going from source to binary is called
    build, or like building or compiling
  • Not Synced
    and we're doing free software and
    free software is awesome because
  • Not Synced
    we can actually run these binaries like
    we want
  • Not Synced
    We can actually study the software, how
    it's been made by studying the source
  • Not Synced
    and by studying the source we can assess
    that it does what it's supposed to do
  • Not Synced
    and not something else that does not
  • Not Synced
    have malware, or trojans or security bugs
  • Not Synced
    So we have the binary that can be used,
    fine.
  • Not Synced
    We have the source that can be verified.
  • Not Synced
    Problem is that right now, the only way we
    know that a binary that we get…
  • Not Synced
    We have to trust a website or a Debian
    repository that says
  • Not Synced
    "Well, this binary has been made with this
    source"
  • Not Synced
    But there's no way we can actually prove
    that.
  • Not Synced
    This is actually a problem that has been
    well explained by
  • Not Synced
    Mike Perry and Seth Schoen at the 31c3
    in Hamburg last december.
  • Not Synced
    For example, Seth Schoen made a proof of
    concept exploit for the Linux kernel
  • Not Synced
    that when GCC was called, the kernel would
    without modifying anything on the disk
  • Not Synced
    when the kernel detects that GCC is going
    to read a C file, it will insert some
  • Not Synced
    extra lines of code, and these lines of
    code can be a very bad thing
  • Not Synced
    in the case of 31c3 talk I was just
    recalling.
  • Not Synced
    Actually, you can even have developpers
    who are in very good faith, who have
  • Not Synced
    totally secure dev machines, or they
    thought they have,
  • Not Synced
    who have reviewed all their source code
    for any bugs
  • Not Synced
    and we would still get totally owned as
    soon as their computer gets compromised
  • Not Synced
    or one of the build demons from Debian
    gets compromised for example.
  • Not Synced
    This is not, like, hypothetical threats
    here we're discussing
  • Not Synced
    A couple of months after Seth an Mike's
    talk at 31c3,
  • Not Synced
    the Intercept revealed from the Snowden
    leaks
  • Not Synced
    that at a CIA conference in 2012, one
    of the talks that happened
  • Not Synced
    was about a project called Strawhorse.
  • Not Synced
    Strawhorse is about modifying Apple XCode,
    which is the development environment
  • Not Synced
    for MacOS 10 and iOS applications
  • Not Synced
    and well, they were modifying XCode so
    it would produce,
  • Not Synced
    without the developer knowing,
  • Not Synced
    binaries with trojans, malware,
    ??? binaries, lots of bad things.
  • Not Synced
    So, solution:
  • Not Synced
    enable anyone to reproduce identical
    binary packages from a given source.
  • Not Synced
    Because if using a source, using the same
    environment,
  • Not Synced
    multiple people on different computers, on
    different networks, at different times,
  • Not Synced
    can all get the same thing
    from the same source
  • Not Synced
    all the same binary, byte for byte,
  • Not Synced
    then there's a good chance that…
  • Not Synced
    Well, everybody could be owned,
    but let's be more joyful and say that
  • Not Synced
    probably, if everybody gets the same
    result, there was actually no problem
  • Not Synced
    and everybody is safe.
  • Not Synced
    We call that solution
    "reproducible builds"
  • Not Synced
    Yay.
  • Not Synced
    [Applause]
  • Not Synced
    Actually, it's not only about security.
  • Not Synced
    For Debian, we have, if you're doing
    "Multi-arch: same" packages,
  • Not Synced
    well they only have the same bytes if
    they are built for different architectures,
  • Not Synced
    the files in the package.
  • Not Synced
    Debug packages, you can create at a later
    time, if you forgot to have debug packages
  • Not Synced
    in the first place,
  • Not Synced
    you can pass the no-strip option later and
    because the package is reproducible,
  • Not Synced
    you will get the debug symbols that work
    for software that has been shipped already
  • Not Synced
    We do early detection of FTBFS that way
  • Not Synced
    because if we try pretty quickly
    to reproduce a build,
  • Not Synced
    then it has to work.
Title:
Stretching out for trustworthy reproducible builds creating bit by bit identical binaries
Description:

more » « less
Video Language:
English
Team:
Debconf
Project:
2015_debconf15

English subtitles

Revisions Compare revisions