114
When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

When the going gets tough,Get TUF going!

Riyaz Faizullabhoy - @riyazdf

Page 2: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Motivation

What is TUF?

Using TUF

Hermetic Builds

Page 3: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Where does software come from?

Page 4: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$> _

Page 5: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$>curl | sudo bash

Page 6: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$>apt-get install

Page 7: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity

Page 8: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$>apt-get install

Page 9: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 10: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity• integrity

Page 11: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$>apt-get install really-old-foo

Page 12: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$>#not after 2007 $>apt-get install really-old-foo

Page 13: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity• integrity• freshness

Page 14: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$> $pkg-manager install foo

Page 15: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity (TLS)• integrity (TLS)• freshness

Page 16: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity (TLS - transport only)• integrity (TLS - transport only)• freshness

Page 17: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 18: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 19: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

foo

Page 20: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1

iQIcBAABCAAGBQJXUtcbAAoJEItIrWJGklVTp6oP/ROIMdfBerB+sKswke8mau1w aalsr6MmQgARItPhsQvFUaRXEXDJvefRdPJl+xDl1zUkJJhLJIsW9VmpBk19l2pU oWuiy6Ou9BWWA2qmS/3BKdmriuXp8LtjpQ2prj3jefOfIcUUlWtusATp0qM3JvGr UWFDkxzQAqZycwuY7n1e4YNyE30iAbPtWB3cKs6Bi7nNWREeQ9cAsJJPnVIl/e6t H3KI8F2QkQ/HwfN9KYfZKyChMubBKsl1txOlgHs1QLrrhft6kP3RDoKRhJTuPvnr 3QWH3Hlo6B/nqpX7hOcAkw6gfnpVe+SHBKOE8b93nTR4Gh7l1R1hjdUdO46rQLVy iz1WcWgJkMj13kePrDC3gM+CaT7O0ug4dQ1b1brPzuJwz7j7mHIIOUdwOZ+7OWf5 ppdxXB5E6/XJN2X26V3KdHTgfsFmu2eX9PaDIjA26XP8DtPOSaz6sYrPxQtRPS2w oSp8Kkgh4kVTftymKvDcbFp7OF1qhCxWkwvCB+StTI5s+aRfkIUqQkYS12EYI6b7 uQq0r5QjM6DzsnCRKrRh2EUzgHdfax1iIEY+kC2BvG+Xw6wHro47iR4gaRzR1c7x LRm5uxrGCq5zV9Lp+LBNGkAQJzivkm8ka7yYss5DIk6gVeTsHbcSLnmt4rUViZOp BsAoXDQUdfv80oIg39BMiQIcBAABCAAGBQJXUtcbAAoJEHY40EQrkNAQp6oQAIsl 7tPJpwTzKrv6r8gEQggyRvFEp8Ubi+/8wPf+AawutClXNONB5lLvceA0SEgwPH0L js+kDrmNZRQ65PAEUf0mWwq8kdNWTcVDfKvI/Te2tr65/yaVFTLDDoAsC9M5Q9QX i3h0xCZAT6hQSl7oSzWQIJkAqAer/9ctvYE6S9hAyiUIj9MQUA/PPBmEUcxKlADd Rjg2JHJJFODkciHWyQboU7UAOwpGIW/LFgFlr+nMomP/wQoZdOKyKS0QG8I0dxbh o19tvoxBN32KS6yQM1oQDhvXIlvZiirohBCXSVXiLYIzEzZfcLqP9cRGOUlzMtKw P9m1tM0Lx+yY8OZTshedR+u+6lW+vdPQ0Ar3MzE+98DE3zT+NDgGUJQNAtfkFesW az6bMS07c947zbBZIAg0iO0ys2PCI7bwNdJAJ9VjujAKZ5R5c9IZOltF3RRiQcn9 QODaFM4cGrndS53tmtjR2vPNoEk8jVR0mbp6Nyr7t4sgCGkiDyqO1xZOIOX1pCMQ seD6XOq2cWTSSisIRo8Cccdo3ciE4yfYZQ/3+gLaqDOrtBIGxj9iumS1ELI6XHb7 7LjYz72Z5gjzK2X+jQCJFD/QNZv4n8dkoYgRVk4ZgEg+BuctUA85RggaLR2R9JCV NRcXJtGybbGDQ85vFuzLYyUrSnfc5Vcm31tcy94h =nSRR -----END PGP SIGNATURE-----

Page 21: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1

iQIcBAABCAAGBQJXUtcbAAoJEItIrWJGklVTp6oP/ROIMdfBerB+sKswke8mau1w aalsr6MmQgARItPhsQvFUaRXEXDJvefRdPJl+xDl1zUkJJhLJIsW9VmpBk19l2pU oWuiy6Ou9BWWA2qmS/3BKdmriuXp8LtjpQ2prj3jefOfIcUUlWtusATp0qM3JvGr UWFDkxzQAqZycwuY7n1e4YNyE30iAbPtWB3cKs6Bi7nNWREeQ9cAsJJPnVIl/e6t H3KI8F2QkQ/HwfN9KYfZKyChMubBKsl1txOlgHs1QLrrhft6kP3RDoKRhJTuPvnr 3QWH3Hlo6B/nqpX7hOcAkw6gfnpVe+SHBKOE8b93nTR4Gh7l1R1hjdUdO46rQLVy iz1WcWgJkMj13kePrDC3gM+CaT7O0ug4dQ1b1brPzuJwz7j7mHIIOUdwOZ+7OWf5 ppdxXB5E6/XJN2X26V3KdHTgfsFmu2eX9PaDIjA26XP8DtPOSaz6sYrPxQtRPS2w oSp8Kkgh4kVTftymKvDcbFp7OF1qhCxWkwvCB+StTI5s+aRfkIUqQkYS12EYI6b7 uQq0r5QjM6DzsnCRKrRh2EUzgHdfax1iIEY+kC2BvG+Xw6wHro47iR4gaRzR1c7x LRm5uxrGCq5zV9Lp+LBNGkAQJzivkm8ka7yYss5DIk6gVeTsHbcSLnmt4rUViZOp BsAoXDQUdfv80oIg39BMiQIcBAABCAAGBQJXUtcbAAoJEHY40EQrkNAQp6oQAIsl 7tPJpwTzKrv6r8gEQggyRvFEp8Ubi+/8wPf+AawutClXNONB5lLvceA0SEgwPH0L js+kDrmNZRQ65PAEUf0mWwq8kdNWTcVDfKvI/Te2tr65/yaVFTLDDoAsC9M5Q9QX i3h0xCZAT6hQSl7oSzWQIJkAqAer/9ctvYE6S9hAyiUIj9MQUA/PPBmEUcxKlADd Rjg2JHJJFODkciHWyQboU7UAOwpGIW/LFgFlr+nMomP/wQoZdOKyKS0QG8I0dxbh o19tvoxBN32KS6yQM1oQDhvXIlvZiirohBCXSVXiLYIzEzZfcLqP9cRGOUlzMtKw P9m1tM0Lx+yY8OZTshedR+u+6lW+vdPQ0Ar3MzE+98DE3zT+NDgGUJQNAtfkFesW az6bMS07c947zbBZIAg0iO0ys2PCI7bwNdJAJ9VjujAKZ5R5c9IZOltF3RRiQcn9 QODaFM4cGrndS53tmtjR2vPNoEk8jVR0mbp6Nyr7t4sgCGkiDyqO1xZOIOX1pCMQ seD6XOq2cWTSSisIRo8Cccdo3ciE4yfYZQ/3+gLaqDOrtBIGxj9iumS1ELI6XHb7 7LjYz72Z5gjzK2X+jQCJFD/QNZv4n8dkoYgRVk4ZgEg+BuctUA85RggaLR2R9JCV NRcXJtGybbGDQ85vFuzLYyUrSnfc5Vcm31tcy94h =nSRR -----END PGP SIGNATURE-----

Page 22: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1

iQIcBAABCAAGBQJXUtcbAAoJEItIrWJGklVTp6oP/ROIMdfBerB+sKswke8mau1w aalsr6MmQgARItPhsQvFUaRXEXDJvefRdPJl+xDl1zUkJJhLJIsW9VmpBk19l2pU oWuiy6Ou9BWWA2qmS/3BKdmriuXp8LtjpQ2prj3jefOfIcUUlWtusATp0qM3JvGr UWFDkxzQAqZycwuY7n1e4YNyE30iAbPtWB3cKs6Bi7nNWREeQ9cAsJJPnVIl/e6t H3KI8F2QkQ/HwfN9KYfZKyChMubBKsl1txOlgHs1QLrrhft6kP3RDoKRhJTuPvnr 3QWH3Hlo6B/nqpX7hOcAkw6gfnpVe+SHBKOE8b93nTR4Gh7l1R1hjdUdO46rQLVy iz1WcWgJkMj13kePrDC3gM+CaT7O0ug4dQ1b1brPzuJwz7j7mHIIOUdwOZ+7OWf5 ppdxXB5E6/XJN2X26V3KdHTgfsFmu2eX9PaDIjA26XP8DtPOSaz6sYrPxQtRPS2w oSp8Kkgh4kVTftymKvDcbFp7OF1qhCxWkwvCB+StTI5s+aRfkIUqQkYS12EYI6b7 uQq0r5QjM6DzsnCRKrRh2EUzgHdfax1iIEY+kC2BvG+Xw6wHro47iR4gaRzR1c7x LRm5uxrGCq5zV9Lp+LBNGkAQJzivkm8ka7yYss5DIk6gVeTsHbcSLnmt4rUViZOp BsAoXDQUdfv80oIg39BMiQIcBAABCAAGBQJXUtcbAAoJEHY40EQrkNAQp6oQAIsl 7tPJpwTzKrv6r8gEQggyRvFEp8Ubi+/8wPf+AawutClXNONB5lLvceA0SEgwPH0L js+kDrmNZRQ65PAEUf0mWwq8kdNWTcVDfKvI/Te2tr65/yaVFTLDDoAsC9M5Q9QX i3h0xCZAT6hQSl7oSzWQIJkAqAer/9ctvYE6S9hAyiUIj9MQUA/PPBmEUcxKlADd Rjg2JHJJFODkciHWyQboU7UAOwpGIW/LFgFlr+nMomP/wQoZdOKyKS0QG8I0dxbh o19tvoxBN32KS6yQM1oQDhvXIlvZiirohBCXSVXiLYIzEzZfcLqP9cRGOUlzMtKw P9m1tM0Lx+yY8OZTshedR+u+6lW+vdPQ0Ar3MzE+98DE3zT+NDgGUJQNAtfkFesW az6bMS07c947zbBZIAg0iO0ys2PCI7bwNdJAJ9VjujAKZ5R5c9IZOltF3RRiQcn9 QODaFM4cGrndS53tmtjR2vPNoEk8jVR0mbp6Nyr7t4sgCGkiDyqO1xZOIOX1pCMQ seD6XOq2cWTSSisIRo8Cccdo3ciE4yfYZQ/3+gLaqDOrtBIGxj9iumS1ELI6XHb7 7LjYz72Z5gjzK2X+jQCJFD/QNZv4n8dkoYgRVk4ZgEg+BuctUA85RggaLR2R9JCV NRcXJtGybbGDQ85vFuzLYyUrSnfc5Vcm31tcy94h =nSRR -----END PGP SIGNATURE-----

$>apt-get install really-old-foo

Freeze and Rollback Attacks?

Page 23: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1

iQIcBAABCAAGBQJXUtcbAAoJEItIrWJGklVTp6oP/ROIMdfBerB+sKswke8mau1w aalsr6MmQgARItPhsQvFUaRXEXDJvefRdPJl+xDl1zUkJJhLJIsW9VmpBk19l2pU oWuiy6Ou9BWWA2qmS/3BKdmriuXp8LtjpQ2prj3jefOfIcUUlWtusATp0qM3JvGr UWFDkxzQAqZycwuY7n1e4YNyE30iAbPtWB3cKs6Bi7nNWREeQ9cAsJJPnVIl/e6t H3KI8F2QkQ/HwfN9KYfZKyChMubBKsl1txOlgHs1QLrrhft6kP3RDoKRhJTuPvnr 3QWH3Hlo6B/nqpX7hOcAkw6gfnpVe+SHBKOE8b93nTR4Gh7l1R1hjdUdO46rQLVy iz1WcWgJkMj13kePrDC3gM+CaT7O0ug4dQ1b1brPzuJwz7j7mHIIOUdwOZ+7OWf5 ppdxXB5E6/XJN2X26V3KdHTgfsFmu2eX9PaDIjA26XP8DtPOSaz6sYrPxQtRPS2w oSp8Kkgh4kVTftymKvDcbFp7OF1qhCxWkwvCB+StTI5s+aRfkIUqQkYS12EYI6b7 uQq0r5QjM6DzsnCRKrRh2EUzgHdfax1iIEY+kC2BvG+Xw6wHro47iR4gaRzR1c7x LRm5uxrGCq5zV9Lp+LBNGkAQJzivkm8ka7yYss5DIk6gVeTsHbcSLnmt4rUViZOp BsAoXDQUdfv80oIg39BMiQIcBAABCAAGBQJXUtcbAAoJEHY40EQrkNAQp6oQAIsl 7tPJpwTzKrv6r8gEQggyRvFEp8Ubi+/8wPf+AawutClXNONB5lLvceA0SEgwPH0L js+kDrmNZRQ65PAEUf0mWwq8kdNWTcVDfKvI/Te2tr65/yaVFTLDDoAsC9M5Q9QX i3h0xCZAT6hQSl7oSzWQIJkAqAer/9ctvYE6S9hAyiUIj9MQUA/PPBmEUcxKlADd Rjg2JHJJFODkciHWyQboU7UAOwpGIW/LFgFlr+nMomP/wQoZdOKyKS0QG8I0dxbh o19tvoxBN32KS6yQM1oQDhvXIlvZiirohBCXSVXiLYIzEzZfcLqP9cRGOUlzMtKw P9m1tM0Lx+yY8OZTshedR+u+6lW+vdPQ0Ar3MzE+98DE3zT+NDgGUJQNAtfkFesW az6bMS07c947zbBZIAg0iO0ys2PCI7bwNdJAJ9VjujAKZ5R5c9IZOltF3RRiQcn9 QODaFM4cGrndS53tmtjR2vPNoEk8jVR0mbp6Nyr7t4sgCGkiDyqO1xZOIOX1pCMQ seD6XOq2cWTSSisIRo8Cccdo3ciE4yfYZQ/3+gLaqDOrtBIGxj9iumS1ELI6XHb7 7LjYz72Z5gjzK2X+jQCJFD/QNZv4n8dkoYgRVk4ZgEg+BuctUA85RggaLR2R9JCV NRcXJtGybbGDQ85vFuzLYyUrSnfc5Vcm31tcy94h =nSRR -----END PGP SIGNATURE-----

Survivable Key Compromise?

Page 24: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise

Page 25: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1

iQIcBAABCAAGBQJXUtcbAAoJEItIrWJGklVTp6oP/ROIMdfBerB+sKswke8mau1w aalsr6MmQgARItPhsQvFUaRXEXDJvefRdPJl+xDl1zUkJJhLJIsW9VmpBk19l2pU oWuiy6Ou9BWWA2qmS/3BKdmriuXp8LtjpQ2prj3jefOfIcUUlWtusATp0qM3JvGr UWFDkxzQAqZycwuY7n1e4YNyE30iAbPtWB3cKs6Bi7nNWREeQ9cAsJJPnVIl/e6t H3KI8F2QkQ/HwfN9KYfZKyChMubBKsl1txOlgHs1QLrrhft6kP3RDoKRhJTuPvnr 3QWH3Hlo6B/nqpX7hOcAkw6gfnpVe+SHBKOE8b93nTR4Gh7l1R1hjdUdO46rQLVy iz1WcWgJkMj13kePrDC3gM+CaT7O0ug4dQ1b1brPzuJwz7j7mHIIOUdwOZ+7OWf5 ppdxXB5E6/XJN2X26V3KdHTgfsFmu2eX9PaDIjA26XP8DtPOSaz6sYrPxQtRPS2w oSp8Kkgh4kVTftymKvDcbFp7OF1qhCxWkwvCB+StTI5s+aRfkIUqQkYS12EYI6b7 uQq0r5QjM6DzsnCRKrRh2EUzgHdfax1iIEY+kC2BvG+Xw6wHro47iR4gaRzR1c7x LRm5uxrGCq5zV9Lp+LBNGkAQJzivkm8ka7yYss5DIk6gVeTsHbcSLnmt4rUViZOp BsAoXDQUdfv80oIg39BMiQIcBAABCAAGBQJXUtcbAAoJEHY40EQrkNAQp6oQAIsl 7tPJpwTzKrv6r8gEQggyRvFEp8Ubi+/8wPf+AawutClXNONB5lLvceA0SEgwPH0L js+kDrmNZRQ65PAEUf0mWwq8kdNWTcVDfKvI/Te2tr65/yaVFTLDDoAsC9M5Q9QX i3h0xCZAT6hQSl7oSzWQIJkAqAer/9ctvYE6S9hAyiUIj9MQUA/PPBmEUcxKlADd Rjg2JHJJFODkciHWyQboU7UAOwpGIW/LFgFlr+nMomP/wQoZdOKyKS0QG8I0dxbh o19tvoxBN32KS6yQM1oQDhvXIlvZiirohBCXSVXiLYIzEzZfcLqP9cRGOUlzMtKw P9m1tM0Lx+yY8OZTshedR+u+6lW+vdPQ0Ar3MzE+98DE3zT+NDgGUJQNAtfkFesW az6bMS07c947zbBZIAg0iO0ys2PCI7bwNdJAJ9VjujAKZ5R5c9IZOltF3RRiQcn9 QODaFM4cGrndS53tmtjR2vPNoEk8jVR0mbp6Nyr7t4sgCGkiDyqO1xZOIOX1pCMQ seD6XOq2cWTSSisIRo8Cccdo3ciE4yfYZQ/3+gLaqDOrtBIGxj9iumS1ELI6XHb7 7LjYz72Z5gjzK2X+jQCJFD/QNZv4n8dkoYgRVk4ZgEg+BuctUA85RggaLR2R9JCV NRcXJtGybbGDQ85vFuzLYyUrSnfc5Vcm31tcy94h =nSRR -----END PGP SIGNATURE-----

Trust Thresholding?

Page 26: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 27: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 28: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding• ease of use

Page 29: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 30: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Get TUF(The Update Framework)

Page 31: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 32: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

•Diplomat: Using Delegations to Protect Community Repositories •Survivable Key Compromise in Software Update Systems •A Look in the Mirror: Attacks on Package Managers •Package Management Security

Page 33: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

TUF repository

Page 34: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

TUF repository packages

Page 35: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

root timestamp snapshot targets delegation

Page 36: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root:

Timestamp:

Snapshot:

Targets:

Expiry: ...

Root Metadata

Page 37: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root:

Timestamp:

Snapshot:

Targets:

Expiry: ...

Root Metadata

USA

Switzerland

China

Page 38: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Offline for security

• Backup in bank vault

• Use signing hardware

Page 39: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

TUF repository packages

?

Page 40: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

java : { hashes }openssl : { hashes }…

Expiry: ...

Targets Metadata

Page 41: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Keys: { Alice: Bob:}

Expiry: ...

Targets Metadata

A

B

java:openssl:

[Alice][Bob]

Page 42: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Delegation Metadata

Ajava-8-jre : { hashes }java-7-jre : { hashes }...Expiry: ...

Bopenssl-1.0.1t : { hashes }openssl-1.0.2h : { hashes }...Expiry: ...

Page 43: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

java-8-jre java-7-jre

openssl-1.0.1t openssl-1.0.2h

A

B

Page 44: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

openssl-1.0.1t openssl-1.0.2h

java java-8-jdkjava-7-jdk

java-8-jrejava-7-jre

apt

openssl

A

B

C

A

jdk

jre

Page 45: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

openssl-1.0.1t openssl-1.0.2h

java java-8-jdkjava-7-jdk

java-8-jrejava-7-jre

apt

openssl

A

B

C

A

jdk

jre

E

D

Page 46: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 47: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 48: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 49: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 50: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root : { hashes }Targets : { hashes }

Alice : { hashes }Bob : { hashes }…

Expiry: ...

Snapshot Metadata

Page 51: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 52: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 53: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Snapshot : { hashes }

Expiry: 24 hours from now

Timestamp Metadata

Page 54: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

openssl-1.0.1t openssl-1.0.2h

java java-8-jdkjava-7-jdk

java-8-jrejava-7-jre

apt

openssl

A

B

C

A

jdk

jre

E

D X

Page 55: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding

Page 56: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 57: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 58: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 59: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

#

Page 60: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

# #

#

Page 61: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 62: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

#

Page 63: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 64: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

#

Page 65: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Metadata Lifetime

t

Page 66: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Keeping Freshness

t

Page 67: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Snapshot Expired!

t

Page 68: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign a new Snapshot

t

Page 69: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign a new Timestamp to point the Snapshot

t

Page 70: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Want to publish something?

t

Page 71: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign the hash into a new Targets or Delegation file

t

Page 72: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign a new Snapshot that references this Targets file

t

Page 73: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign a new Timestamp that references the new Snapshot

t

Page 74: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Situation normal

t

Page 75: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Oh no, I think my Snapshot key was compromised!

t

Page 76: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Compromise is “when” not “if”

Page 77: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 78: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root: Timestamp: Snapshot: Targets:

Root Metadata

Page 79: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root: Timestamp: Snapshot: Targets:

Root Metadata

Snapshot Metadata

Page 80: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Before recovery

t

Page 81: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Create and sign the new Snapshot key into Root

t

Page 82: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign a new Snapshot with the new key

t

Page 83: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Timestamp

Lifetime

Snapshot

Targets/ Delegations

Root

Sign new Timestamp to reference new Snapshot

t

Page 84: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding• ease of use

coming soon!

GPG TUF

Page 85: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• …• auditability

Page 86: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 87: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

?

Page 88: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

How can we start using TUF?

Page 89: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 90: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Demo

• ease of use?

Page 91: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Demo

Page 92: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

• authenticity • integrity• freshness• survivable key compromise• thresholding• ease of use

Page 93: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

github.com/docker/notary

Page 94: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$> export DOCKER_CONTENT_TRUST=1

Page 95: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 96: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf
Page 97: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

alpine

Page 98: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

latest: {hash} edge: {hash} 2.6: {hash} 3.3: {hash} 3.4: {hash}

alpine

Page 99: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

$> $pkg-manager install openssl

Page 100: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Design Goals: - root of trust in package manager maintainers - with thresholding

- freshness guarantees

- signed index of all packages

- signed package targets by package maintainers - name to hash resolution - with thresholding

Page 101: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

package-manager maintainer(s)

Page 102: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

freshness

package-manager maintainer(s)

Page 103: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

signs indexfreshness

package-manager maintainer(s)

Page 104: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

signs indexfreshness

maintainer keys

package-manager maintainer(s)

Page 105: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

signs indexfreshness

maintainer keys

openssl: {hash}

package-manager maintainer(s)

Page 106: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Future work: hermetic builds

Page 107: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Learn More• Read the spec:

• github.com/theupdateframework/tuf/ (docs/tuf-spec.txt)

• Look at Notary: • github.com/docker/notary

• Read the Docker Content Trust docs:• docs.docker.com/engine/security/trust/content_trust/

Page 108: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

THANK YOU

Page 109: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root:

Timestamp:

Snapshot:

Targets:

Expiry: ...

Root Metadata

Appendix: root key rotations

Page 110: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root:

Timestamp:

Snapshot:

Targets:

Expiry: ...

Root Metadata

Appendix: root key rotations

Page 111: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root:

Timestamp:

Snapshot:

Targets:

newRoot:

Timestamp:

Snapshot:

Targets:

old

Appendix: root key rotations

Page 112: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Root:

Timestamp:

Snapshot:

Targets:

newRoot:

Timestamp:

Snapshot:

Targets:

oldXAppendix: root key rotations

Page 113: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Appendix: DCT pull flow

Page 114: LINUXCON v4 When the going gets tough, get TUF going! · 2017. 12. 14. · When the going gets tough, Get TUF going! Riyaz Faizullabhoy - @riyazdf

Appendix: DCT pull flow

uses manifest/layer merkle tree