Τι είναι τα Reproducible Builds

Ορισμός: Reproducible builds

Είναι η διαδικασία με την οποία παράγουμε τον δυαδικό κώδικα για ένα εκτελέσιμο απο τον πηγαίο κώδικα με τέτοιο τρόπο ώστε ο κώδικας σε επίπεδο 0 και 1 ένα να είναι ντετερμινιστικός. Δηλαδή αν δυο διαφορετικοί άνθρωποι φτιάξουν ένα εκτελέσιμο αυτό να είναι ακριβώς ίδιο.

Πιθανά να νομίζετε πως αυτό είναι προφανές ότι συμβαίνει. Στην πραγματικότητα όμως δεν είναι καθόλου προφανές ή εύκολο.

Γιατί τα θέλουμε
Αν ο πηγαίος κώδικας είναι ελεγμένος και υπογραμμένος ψηφιακά, θα πάρουμε εγγυημένα ακριβώς αυτό που λέει ο κώδικας ότι κάνει. Κάποιος κακόβουλος που κάνει πακετάρισμα (ή απλά αμελής και η ασφάλεια του υπολογιστή του έχει παραβιαστεί) δεν θα εισάγει “παράπλευρες λειτουργίες” μέσα στον κώδικα.

Πιθανό σενάριο: Μια υπηρεσία με τρία γράμματα αντικαθιστά κάποιες στατικές βιβλιοθήκες στον σερβερ που φτιάχνει τα πακέτα στο Debian. Αυτό θα γίνει εύκολα αντιληπτό καθώς το πακέτο θα χτιστεί σε πολλές μηχανές και σέρβερς και μπορεί να ελεγχθεί ακόμα και από ένα τελικό χρήστη.

Debian Reproducible Builds
Μια σειρά απο διαδικασίες και υποδομές που να εγγυούνται πως η πλειοψηφία των πακέτων έχουν αυτό το χαρακτηριστικό. Είναι κατά την γνώμη μου ένα από τα ποιο σημαντικά projects του Debian.

Στην εικόνα βλέπουμε την εξέλιξη του project. Σήμερα η “αναπαραξιμότητα” είναι ένα σημαντικό χαρακτηριστικό και πολλές άλλες διανομές το προσπαθούν.

Για όποιον θέλει να μάθει περισσότερα

7 Likes

Παραθέτω τον σύνδεσμο για την ιστοσελίδα του έργου, όπου μπορούμε να βρούμε ακόμα περισσότερες πληροφορίες, καθώς και τα τρίτα έργα που έχουν ξεκινήσει την υλοποίησή του και το στηρίζουν.

https://reproducible-builds.org/

2 Likes

Πολύ ενδιαφέρον θέμα.
Το ζήτημα δηλαδή είναι να διασφαλίσουμε πως στο πακετάρισμα δεν γίνονται “αλχημείες” ;

Μου έκανε εντύπωση που στο βίντεο ο τύπος δείχνει πως οι unix διανομές NetBSD & FreeBSD το καλύπτουν πλήρως το θέμα αυτό.

Ευχαριστούμε! :slight_smile:

Και ίσως καπόια στιγμή να έχουμε και reproducible systems

http://0pointer.de/blog/projects/stateless.html