reproducible builds in debian and everywhere
play

Reproducible builds in Debian and everywhere Lunar - PowerPoint PPT Presentation

Reproducible builds in Debian and everywhere Lunar lunar@debian.org Libre Software Meeting 2015-06-07 Lunar (Debian) Reproducible builds LSM2015 1 / 126 What? Lunar (Debian) Reproducible builds LSM2015 2 / 126 What are reproducible


  1. Test (and test again) Lunar (Debian) Reproducible builds LSM2015 34 / 126

  2. Finding variations Build the package Re build the package Compare the results Lunar (Debian) Reproducible builds LSM2015 35 / 126

  3. reproducible.debian.net Continuous test system driven by Jenkins Bad ass hardware sponsored by ProfitBricks Tests about 1300 source packages each day on average Results are visible on a website Recent additions: Coreboot and OpenWrt Lunar (Debian) Reproducible builds LSM2015 36 / 126

  4. Variations for Debian packages The second build differs by: time timezone file ordering process ordering cores used for the build Lunar (Debian) Reproducible builds LSM2015 37 / 126

  5. Variations for Debian packages hostname, domainname username, uid, gid umask language ( LANG ) and locale ( LC_ALL ) kernel version (using linux64 --uname-2.6 ) PATH Lunar (Debian) Reproducible builds LSM2015 38 / 126

  6. Still the same for now date ( but we cheat with timezone ) /proc/cpuinfo rebuilds on different filesystems (currently tmpfs only) Are we forgetting something? Lunar (Debian) Reproducible builds LSM2015 39 / 126

  7. Findings Lunar (Debian) Reproducible builds LSM2015 40 / 126

  8. Identified issues Timestamps (recording current time) File order (Pseudo-)randomness: Lunar (Debian) Reproducible builds LSM2015 41 / 126 ◮ Temporary file paths ◮ UUID ◮ Protection against complexity attacks

  9. Identified issues (cont.) CPU and memory related: Build-path Others, eg. locale settings Lunar (Debian) Reproducible builds LSM2015 42 / 126 ◮ Code optimizations for current CPU class ◮ Recording of memory addresses

  10. Identified issues (cont.) Examples Timestamps added by build systems Lunar (Debian) Reproducible builds LSM2015 43 / 126

  11. Timestamps in gzip headers Lunar (Debian) Reproducible builds LSM2015 44 / 126

  12. Timestamps written by Maven Lunar (Debian) Reproducible builds LSM2015 45 / 126

  13. Timestamps in generated Makefiles Lunar (Debian) Reproducible builds LSM2015 46 / 126

  14. Timestamps in header files Lunar (Debian) Reproducible builds LSM2015 47 / 126

  15. Timestamps written by PyQt4 Lunar (Debian) Reproducible builds LSM2015 48 / 126

  16. Timestamps written by Erlang compiler Lunar (Debian) Reproducible builds LSM2015 49 / 126

  17. Timestamps in PE binaries Windows, UEFI, Mono… Lunar (Debian) Reproducible builds LSM2015 50 / 126

  18. Timestamps in ADA library information Lunar (Debian) Reproducible builds LSM2015 51 / 126

  19. Timestamps in Ruby gemspec files Lunar (Debian) Reproducible builds LSM2015 52 / 126

  20. Timestamps in PHP registry Lunar (Debian) Reproducible builds LSM2015 53 / 126

  21. Timestamps by a template engine Lunar (Debian) Reproducible builds LSM2015 54 / 126

  22. Timestamps in Python version Lunar (Debian) Reproducible builds LSM2015 55 / 126

  23. Identified issues (cont.) Examples Archives Lunar (Debian) Reproducible builds LSM2015 56 / 126

  24. Timestamps in static libraries Lunar (Debian) Reproducible builds LSM2015 57 / 126

  25. Timestamps in static libraries (cont.) Lunar (Debian) Reproducible builds LSM2015 58 / 126

  26. Timestamps in ZIP archives Lunar (Debian) Reproducible builds LSM2015 59 / 126

  27. Timestamps in Java jar They are actually ZIP archives. Lunar (Debian) Reproducible builds LSM2015 60 / 126

  28. Timestamps in tarballs Lunar (Debian) Reproducible builds LSM2015 61 / 126

  29. Users and groups in tarballs Lunar (Debian) Reproducible builds LSM2015 62 / 126

  30. Random order in tarballs Lunar (Debian) Reproducible builds LSM2015 63 / 126

  31. Identified issues (cont.) Examples Timestamps in documentation Lunar (Debian) Reproducible builds LSM2015 64 / 126

  32. Timestamps written by Doxygen Lunar (Debian) Reproducible builds LSM2015 65 / 126

  33. Timestamps written by docbook-to-man Lunar (Debian) Reproducible builds LSM2015 66 / 126

  34. Timestamps written by Groovydoc Lunar (Debian) Reproducible builds LSM2015 67 / 126

  35. Timestamps written by Epydoc Lunar (Debian) Reproducible builds LSM2015 68 / 126

  36. Timestamps written by Sphinx Lunar (Debian) Reproducible builds LSM2015 69 / 126

  37. Timestamps written by Ghostscript Lunar (Debian) Reproducible builds LSM2015 70 / 126

  38. Timestamps written by LaTeX Lunar (Debian) Reproducible builds LSM2015 71 / 126

  39. Timestamps written by texi2html Lunar (Debian) Reproducible builds LSM2015 72 / 126

  40. Timestamps written by texi2html (cont.) Lunar (Debian) Reproducible builds LSM2015 73 / 126

  41. Timestamps written by help2man Lunar (Debian) Reproducible builds LSM2015 74 / 126

  42. Timestamps written by GNU groff Lunar (Debian) Reproducible builds LSM2015 75 / 126

  43. Timestamps written by Javadoc Lunar (Debian) Reproducible builds LSM2015 76 / 126

  44. Timestamps written by man2html Lunar (Debian) Reproducible builds LSM2015 77 / 126

  45. Timestamps in TeX output (.dvi) Lunar (Debian) Reproducible builds LSM2015 78 / 126

  46. Identified issues (cont.) Examples “Compiled at/on/by” Lunar (Debian) Reproducible builds LSM2015 79 / 126

  47. Build time via C preprocessor macros Lunar (Debian) Reproducible builds LSM2015 80 / 126

  48. Build time via C preprocessor macros Lunar (Debian) Reproducible builds LSM2015 81 / 126

  49. Build time recorded via Makefile Lunar (Debian) Reproducible builds LSM2015 82 / 126

  50. Hostname recorded via ./configure Lunar (Debian) Reproducible builds LSM2015 83 / 126

  51. Build time recorded via ./configure Lunar (Debian) Reproducible builds LSM2015 84 / 126

  52. m4 macros for autoconf (build time) Lunar (Debian) Reproducible builds LSM2015 85 / 126

  53. m4 macros for autoconf (username) Lunar (Debian) Reproducible builds LSM2015 86 / 126

  54. m4 macros for autoconf (hostname) Lunar (Debian) Reproducible builds LSM2015 87 / 126

  55. Recorded kernel version Lunar (Debian) Reproducible builds LSM2015 88 / 126

  56. Bonus points for programmers Lunar (Debian) Reproducible builds LSM2015 89 / 126

  57. Identified issues (cont.) Examples File ordering Lunar (Debian) Reproducible builds LSM2015 90 / 126

  58. File ordering in python-support files Lunar (Debian) Reproducible builds LSM2015 91 / 126

  59. Identified issues (cont.) Examples Randomness Lunar (Debian) Reproducible builds LSM2015 92 / 126

  60. Random Perl hash order See Algorithmic complexity attacks in perlsec(1). Lunar (Debian) Reproducible builds LSM2015 93 / 126

  61. Random serial numbers in Ogg streams Lunar (Debian) Reproducible builds LSM2015 94 / 126

  62. Random import order in Python code Lunar (Debian) Reproducible builds LSM2015 95 / 126

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend