diff --git a/stagex/img/binary-exploit-2.png b/stagex/img/binary-exploit-2.png new file mode 100644 index 0000000..56b1a5e Binary files /dev/null and b/stagex/img/binary-exploit-2.png differ diff --git a/stagex/img/binary-tampering.png b/stagex/img/binary-tampering.png new file mode 100644 index 0000000..76ed767 Binary files /dev/null and b/stagex/img/binary-tampering.png differ diff --git a/stagex/img/expanded-3-hashes.png b/stagex/img/expanded-3-hashes.png new file mode 100644 index 0000000..f2ad15b Binary files /dev/null and b/stagex/img/expanded-3-hashes.png differ diff --git a/stagex/incyber.md b/stagex/incyber.md index 4823c9e..23c7b10 100644 --- a/stagex/incyber.md +++ b/stagex/incyber.md @@ -22,22 +22,15 @@ How can we prove that our software has not been tampered during build time? * Binary - software that's in a format computers can work with * Compiler - builds software into binaries * Hashing - takes a data set and produces a fixed length string + * 8a1aaf746ada2a80fab03a58c91575ffe82885ac "banana" + * 9144b7b25e83a315de79e7a527f5631f9d4dacf2 "banan" --- @@ -58,6 +51,8 @@ and more. @@ -71,11 +66,12 @@ amount of source-level verification or scrutiny will protect you from using untrusted code...] --- +![no-tamper-evidence](https://antonlivaja.com/images/binary-exploit-2.png) + +--- + # What's the Answer? * Integrity hashes are already widely used + * How do we use them to verify the integrity of software during build time, not after? * Determinism / Reproducibility * > Method of building software which ensures that the resulting binary for @@ -119,12 +116,9 @@ again --- +![height:600px](https://antonlivaja.com/images/expanded-3-hashes.png) + + +--- + # How Deep Do We Have to Go? * Software Application @@ -157,9 +156,9 @@ binary you downloaded matches the hash they posted online and signed. * Compiler --- @@ -168,9 +167,9 @@ built * Allows us to make the whole tree deterministic -* Can be easily reproduced (deterministically) +* Can be easily reproduced -* Drop in replacement for the current approach +* Drop in replacement / easy to upgrade --- @@ -179,8 +178,6 @@ built ![right:0% left:0%](https://mermaid.ink/svg/pako:eNotjrsOgzAMRX8l8gw_kKFSga2dypgwWImBSHkpJANC_HtTiif73CP5HqCCJuCwJIwre3-kZ3Weog8uGktpYm37YJ14UfJkp3_cXbAX475lcmygSF6TV4a22-gvYxDPGK1RmE3wEzTgKDk0uv47fp6EvJIjCbyummYsNkuQ_qwqlhzG3SvgORVqIIWyrMBntFu9StSYaTBYe7ubnl_6WELh) - - --- # Who Compiles the Compiler? @@ -192,28 +189,26 @@ built * This means there is no clear providence to how we went from nothing to having a usable compiler --- # Bootstrapping Compilers -* Consists of "stages", and hundreds of steps of starting from a human auditable (256 byte) compiler written in hex0 and building up all the way up to a modern compiler +* Consists of "stages", and hundreds of steps of starting from a human auditable rudimentary compiler and building up all the way up to a modern compiler * Bootstrapping programming languages --- @@ -231,9 +226,9 @@ use two different compilers to build the code, and while unlikely it is possible # Status Check-In -* So far we have: - * A fully deterministic compiler - * Used that compiler to build all our dependencies +* So far we have established we need the following for a solution: + * Bootstrap a compiler in a deterministic manner + * Use compiler to build all our dependencies * Last thing remaining: your application --- -# Deterministic and Minimal Linux distribution +# [Stageˣ] + +Open source Linux Distribution + +--- + +# Multi-Signed, Bootstrapped, Deterministic, and Minimal
- - | Distribution | Signatures | Libc | Bootstrapped | Reproducible | Rust deps | |--------------|------------|-------|--------------|--------------|----------:| | Stagex | 2+ Human | Musl | Yes | Yes | 4 | @@ -282,15 +274,6 @@ moved to a separate slide. - - - - --- # Full source bootstrapped from Stage 0 @@ -321,13 +304,13 @@ CMD ["/usr/bin/hello"] ``` - +* Who built alpine rust; what compiler did they use + +* There is no way to easily reproduce most software so you can't verify it for yourself, you are blindly trusting that the binary is clean +--> --- @@ -378,23 +361,14 @@ toolchain --> # Multi-Signed OCI Images -Multiple maintainers can each sign individual images, with the container -runtime enforcing _multiple_ signatures by maintainers to ensure no individual -maintainer could have tampered with an image. - @@ -420,21 +394,9 @@ flowchart TD --- -# Common toolchain dependencies - -StageX comes with developer-loved tooling and languages, such as: - -- `curl` -- `git` -- `bash` -- `openssl` - ---- - # Pallets -StageX will soon offer prebuilt containers including all the packages necessary to run -some of our most used software, such as: +StageX will soon offer prebuilt containers including all the packages necessary to run some of our most used software, such as: - `rust` - `go` @@ -443,34 +405,36 @@ some of our most used software, such as: - `redis` - `postgres` + + --- # Key Takeaways -StageX... - -* Your software, at every point in the bootstrapped toolchain, can all be built -deterministically. +* Bootstrapped compiler +* Fully deterministic * Packages the software you're already using, but in a more secure manner. -* Is a drop in replacement, and has container support +* Is a drop in replacement, and has native container support --- @@ -499,35 +463,18 @@ manner, your software can be sooper dooper pooper scooper secure. --- -# Other Projects - -This is only one part of the "Distrust Stack" - -* [`keyfork`](https://git.distrust.co/public/keyfork): toolchain for generating and managing a wide range of cryptographic keys - -* [`bootproof`](https://git.distrust.co/public/bootproof): tpm2 remote attestation - -* [`reprOS`](https://codeberg.org/stagex/repros): OS designed for secure reproduction - -* [`sigRev`](): open standard for signed code reviews - - - ---- - # Links **Email**: anton@distrust.co / sales@distrust.co **Matrix Chat**: #stagex:matrix.org +**Docker Hub**: https://hub.docker.com/u/stagex + **Git Repo**: https://codeberg.org/stagex/stagex Big thank you to sponsors who have supported the development of this project: **Turnkey, Distrust, Mysten Labs** -Thank you to InCyber for hosting this fantastic event! \ No newline at end of file +Thank you to InCyber for hosting this fantastic event!