Deterministic WebAssembly Sandbox | Dweve Selvedge

Selvedge runs untrusted code in a deterministic WebAssembly sandbox and returns a replayable run record. Publishing in the fourth release round.

Μεταγλώττιση φόρτων εργασίας Kera BNN για το περιβάλλον εκτέλεσης Selvedge.

Αλυσιδωτή προέλευση γεγονότων με κατακερματισμό για γεγονότα συστήματος.

Πιστοποιητικά απόδειξης συλλογισμού, όχι μεταγραφές εκτέλεσης.

Το Selvedge δημοσιεύεται στον τέταρτο γύρο του προγράμματος κυκλοφορίας ιδρύματος, μετά τα Knot και Ledger. Μόλις γίνει αυτό, δοκιμάστε σε περιβάλλον προσομοίωσης μια ενότητα WASM και αναπαράγετε μόνοι σας τον φάκελο απόδειξης.

Επαληθεύστε το αποτέλεσμα, όχι τον κώδικα

Περιβάλλον προσομοίωσης με προεπιλεγμένη άρνηση

Επιφάνεια εκτέλεσης εργαλείων του Πρωτοκόλλου Μοντέλου Πλαισίου.

Σφραγισμένο με Ed25519, μεταγραφή SHA3-256, επαλήθευση εκτός σύνδεσης.

Δυαδικά νευρωνικά δίκτυα IR γραφήματος, JIT και διερμηνέας.

Περιβάλλον εκτέλεσης μοντέλου στοιχείων, κεντρικός υπολογιστής WASI 0.2 Preview 2.

Το Selvedge εκτελεί μη αξιόπιστο κώδικα μέσα σε ένα περιβάλλον προσομοίωσης με περιορισμένες δυνατότητες και καταγράφει την εκτέλεση σε μια σφραγισμένη μεταγραφή. Ο περιορισμός καθορίζει τι μπορεί να αγγίξει ο κώδικας· η μεταγραφή δείχνει τι πραγματικά συνέβη και μπορεί να αναπαραχθεί για αναθεώρηση.

Διακομιστής Πρωτοκόλλου Μοντέλου Πλαισίου για εργαλεία πρακτόρων.

Περιβάλλον εκτέλεσης πρακτόρων μεγάλης διάρκειας με ουρά.

δημιουργία, επαλήθευση, εκτέλεση, αναπαραγωγή. Φιλικό προς CI.

Εργαλεία πρακτόρων, πρόσθετα τρίτων, συμπερασμός Kera BNN και ρυθμιζόμενα δεδομένα εισέρχονται όλα μέσω του ίδιου ελεγχόμενου ορίου. Κάθε περιβάλλον εκτέλεσης παράγει τον ίδιο σφραγισμένο φάκελο απόδειξης, οπότε οι αλλαγές ανάπτυξης δεν αλλάζουν την ιστορία ελέγχου.

ανταποκρίνεται σε ρυθμιζόμενους φόρτους εργασίας

Υπογραφή Ed25519 5-15 us, επαλήθευση 15-30 us.

Η εκκίνηση της διαδικασίας περιλαμβάνεται, 8-9 φορές ταχύτερη.

Μονάδα υπολογισμού, έναντι 1187-1494 us vanilla.

Το Selvedge Wasmtime ξεκινά 62 έως 243 φορές ταχύτερα από το vanilla Wasmtime σε επίπεδο API. Η τίμια αντιστάθμιση είναι το θερμό μονοπάτι: το vanilla διατηρεί την επαναλαμβανόμενη κλήση των 22 ns, και το μοντέλο συστατικών που παράγει το μεταγράφημα εκτελείται πιο αργά εκεί. Το Kera JIT είναι 2 φορές ταχύτερο ζεστό για εργασίες γραφήματος. Τα στοιχεία προέρχονται από το BENCHMARKS.md του αποθετηρίου.

Επιλέξτε τον χρόνο εκτέλεσης για τον φόρτο εργασίας

Κάθε απόφαση πύλης καταγράφεται και κατακερματίζεται.

max_execution_time_ns, ξεχωριστά από το fuel.

max_memory_bytes, προεπιλογή 256 MiB, ανώτατο όριο 4 GiB.

max_instructions, η εξάντληση διακόπτει τον φόρτο εργασίας καθαρά.

Ρολόι, τυχαία, σύστημα αρχείων, δίκτυο, περιβάλλον, stdio, διεργασία, προσαρμοσμένο. Άρνηση από προεπιλογή.

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

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

Εμπιστευτείτε τον χρόνο εκτέλεσης, όχι τον φόρτο εργασίας

Επιτρέψτε το σύστημα αρχείων, αρνηθείτε το δίκτυο, αλλά χωρίς εγγραφή ανά κλήση στο αρχείο ελέγχου.

Το FP και ο ρολόι τοίχου διαρρέουν. Η αναπαραγωγή παράγει περίπου την ίδια έξοδο, όχι ακριβώς την ίδια.

Ένα sandbox σταματά τη διαφυγή. Δεν αποδεικνύει ότι ο φόρτος εργασίας συμπεριφέρθηκε σωστά στο εσωτερικό.

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

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

Το Ledger καταγράφει τι συνέβη σε ένα σύστημα. Το Selvedge καταγράφει τι κώδικας εκτελέστηκε.

Η AION εκδίδει πιστοποιητικά για βήματα επίλυσης, όχι για εκτελέσεις.

Πώς διαφέρει το Selvedge από AION και Ledger

Ίδια είσοδοι συν ίδιος φάκελος σημαίνει ίδιο αποτέλεσμα, πάντα.

Μια σταθερή εποχή και ένας PRNG ChaCha20 με σπόρο αντικαθιστούν τον χρόνο και την εντροπία του συστήματος.

Η εσωτερική υπολογιστική, αποθήκευση και συσσώρευση χρησιμοποιούν δυαδικές, ακέραιες, σταθερής υποδιαστολής ή προσαρμοστικές ακέραιες/σταθερής υποδιαστολής αναπαραστάσεις. Η κινητή υποδιαστολή γίνεται αποδεκτή μόνο σε δηλωμένο εξωτερικό όριο και μετατρέπεται ρητά πριν ξεκινήσει η εσωτερική εργασία· δεν υπάρχει εσωτερική εναλλακτική κινητής υποδιαστολής. Το εικονικό ρολόι παραμένει σταθερό, οπότε η αναπαραγωγή παράγει τα ίδια byte.

Ο επαληθευτής αναπαράγει εκτός σύνδεσης με τα byte του module και μόνο τον φάκελο.

Υπογραφή ed25519 πάνω στη ρίζα του φακέλου. Όχι πεζός λόγος.

Κάθε κλήση συστήματος κατακερματίζεται στην αλυσίδα. Οι επεξεργασίες σπάνε την αλυσίδα.

Γιατί το αντίγραφο διαφέρει από ένα αρχείο καταγραφής

Ίδια ροή σε κάθε εκτέλεση. Η αναπαραγωγή είναι μηχανική.

Εκδόθηκε απόδειξη AION, υπογεγραμμένη με ed25519, ο φάκελος έτοιμος για αποστολή.

Κάθε κλήση συστήματος και αποτέλεσμα κατακερματίζεται σε αλυσίδα SHA3-256.

Το Wasmtime ή το Kera εκτελείται μέσα στο sandbox προεπιλεγμένης άρνησης.

Το module φορτώθηκε, οι δυνατότητες καρφιτσώθηκαν, εφαρμόστηκαν τα όρια πόρων.

Το Selvedge εκτελεί κώδικα WASM ή Kera μέσα σε sandbox προεπιλεγμένης άρνησης, κατακερματίζει κάθε κλήση συστήματος σε αλυσίδα αντιγράφου SHA3-256 και περιτυλίγει το αποτέλεσμα σε υπογεγραμμένο φάκελο απόδειξης AION. Ο φάκελος αναπαράγεται χωρίς το αρχικό sandbox.

Τι εξοικονομεί και τι απομειώνει τον κίνδυνο

Το Selvedge είναι ένα ντετερμινιστικό sandbox WebAssembly για μη έμπιστο κώδικα. Το μανιφέστο αδειών και το σφραγισμένο αντίγραφό του εκτελούνται σε υλικό που ελέγχετε, οπότε ένα αντισυμβαλλόμενο μέρος μπορεί να αναπαράγει το αρχείο στη δική του μηχανή και μια διαφορά γίνεται αναζήτηση αντί για αίτημα διαβεβαίωσης.

Ώστε τίποτα δεν μπορεί να πλαστογραφηθεί

Κράτα τον κώδικα εντός ορίων, κράτα και το αρχείο

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

Το Selvedge τρέχει κώδικα που δεν έγραψες σε ένα WebAssembly component host χωρίς δίκτυο, σύστημα αρχείων, περιβάλλον ή κινούμενο ρολόι. Κάθε ολοκληρωμένη εκτέλεση επιστρέφει ένα αρχείο που μπορεί να αναπαράγει άλλο μέρος, και μια αναφορά εκτέλεσης που δηλώνει τι επιτρεπόταν να κάνει ο κώδικας. Δημοσιεύεται υπό Apache 2.0.

Τρέξε μη έμπιστο κώδικα σε υλικό που ελέγχεις.

Ένα ντετερμινιστικό WebAssembly sandbox.

Η δημοσίευση προγραμματίζεται σε δεκαπενθήμερους γύρους. Το αποθετήριο και η τεκμηρίωσή του δημοσιεύονται μαζί.

Κάνει μια μικρή δουλειά, εδώ, και πουθενά αλλού.

Σφραγισμένο, ώστε να μην μπορεί να αλλάξει τίποτα

Η επαλήθευση AION ΟΛΟΚΛΗΡΩΘΗΚΕ ΕΠΙΤΥΧΩΣ.

Η εκτέλεση ολοκληρώθηκε επιτυχώς σε 18.4ms

Το δωμάτιο, η απόδειξη και η λίστα είναι όλη η υπόσχεση.

Εδώ φτάνει ως λίστα. Κάθε εργασία που χρησιμοποίησε το ελαττωματικό πρόγραμμα το ονομάζει με κωδικό, ημερομηνία και μια σύντομη λίστα αδειών, ώστε να δείτε τι επηρεάστηκε και πόσο μακριά θα μπορούσε να είχε φτάσει. Αν οι άνθρωποι που το δημιούργησαν δεν θεωρούνται πλέον αξιόπιστοι, η ανάκληση τίθεται σε ισχύ σε ένα καθορισμένο διάστημα ανανέωσης και όχι όποτε λήγει ένα πιστοποιητικό. Το λογισμικό δημοσιεύεται υπό την άδεια Apache 2.0.

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

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

Όταν κάτι αποδεικνύεται λάθος, ένας κωδικός ονομάζει το πρόγραμμα.

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

Ένα νέο δωμάτιο Selvedge κοστίζει τόσο λίγο που ένα ανά εργασία είναι προσιτό, οπότε τίποτα δεν χρειάζεται να μοιράζεται. Αν κάτι χρειάζεται πραγματικά να μεταφερθεί, παραδίδεται σκόπιμα και εμφανίζεται στην καταγραφή ως κάτι που παραδόθηκε.

Κάθε εργασία παίρνει ένα νέο δωμάτιο. Τίποτα από το προηγούμενο δεν υπάρχει σε αυτό: ούτε σημειώσεις που έμειναν, ούτε ημιτελής δουλειά, ούτε ανάμνηση του ποιος το ζήτησε. Αυτό ακούγεται προφανές και συνήθως δεν ισχύει, επειδή το να διατηρείται ένα δωμάτιο όρθιο είναι φθηνότερο από το να χτιστεί ένα νέο, οπότε τα περισσότερα συστήματα κρατούν το δωμάτιο και το επαναχρησιμοποιούν.