Rust The Language of Choice for Secure Systems

Slides:



Advertisements
Ähnliche Präsentationen
Art der Arbeit (Projekt-/Studien-/Diplomarbeit/
Advertisements

Video Streaming mit Silverlight
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
CALPER Publications From Handouts to Pedagogical Materials.
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Universität StuttgartInstitut für Wasserbau, Lehrstuhl für Hydrologie und Geohydrologie Copulas (1) András Bárdossy IWS Universität Stuttgart.
…und nun aber zum heutigen Vortrag Die Herausforderung: Krisen und andere Verwerfungen Die Herangehensweise: Kosten senken & Produktivität erhöhen Das.
Der formelle Imperativ – the Imperative
Sprachneuerungen des .NET Frameworks 3.5
Institut für Angewandte Mikroelektronik und Datentechnik Phase 5 Architectural impact on ASIC and FPGA Nils Büscher Selected Topics in VLSI Design (Module.
Weg mit Fehlern, die kein Entwickler versteht …
Synchronization: Multiversion Concurrency Control
SiPass standalone.
Stephanie Müller, Rechtswissenschaftliches Institut, Universität Zürich, Rämistrasse 74/17, 8001 Zürich, Criminal liability.
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
Literary Machines, zusammengestellt für ::COLLABOR:: von H. Mittendorfer Literary MACHINES 1980 bis 1987, by Theodor Holm NELSON ISBN
You need to use your mouse to see this presentation © Heidi Behrens.
Arbeiten in einem agilen Team mit VS & TFS 11
? What is Open PS? SAP Open PS based on EPS 4.0
Physik multimedial Lehr- und Lernmodule für das Studium der Physik als Nebenfach Julika Mimkes: Links to e-learning content for.
Es gibt there is (singular) or there are (plural)
Schreiben Sie fünf Sätze aus diesen Elementen. [Beispiel
GERMAN WORD ORDER ORDER s. Sentences are made up by placing a variety of words in a specific order. If the order is wrong, the sentence is difficult to.
The Journey to America… The Immigrant Experience.
COMMANDS imperative There are three command forms: formal familiar singular familiar plural.
COMMANDS imperative 1. you (formal): Sie 2. you (familiar plural): ihr
Gregor Graf Oracle Portal (Part of the Oracle Application Server 9i) Gregor Graf (2001,2002)
© Crown copyright 2011, Department for Education These materials have been designed to be reproduced for internal circulation, research and teaching or.
You need to use your mouse to see this presentation © Heidi Behrens.
Imperfekt (Simple Past) Irregular or strong verbs
Kapitel 2 Grammar INDEX 1.Subjects & Verbs 2.Conjugation of Verbs 3.Subject Verb Agreement 4.Person and Number 5.Present Tense 6.Word Order: Position of.
Memorisation techniques
Kapitel 8 Grammar INDEX 1.Command Forms: The Du-Command Form & Ihr- Command 2.Sentences & Clauses.
Here‘s what we‘ll do... Talk to the person sitting in front of you. Introduce each other, and ask each other questions concerning the information on your.
Kapitel 9 Grammar INDEX 1.Formal Sie- Command 2.There Is/There Are 3.Negation: Nicht/Klein.
© 2012 IBM Corporation © 2013 IBM Corporation IBM Storage Germany Community Josef Weingand Infos / Find me on:
On the case of German has 4 cases NOMINATIVE ACCUSATIVE GENITIVE DATIVE.
Essay structure Example: Die fetten Jahre sind vorbei: Was passiert auf der Almhütte? Welche Bedeutung hat sie für jede der vier Personen? Intro: One or.
What’s the weather like?. Look at the question above Turn it around and you have Das Wetter ist.... The phrase Das Wetter ist.... or Es ist.... can be.
Custom error page for timeout Gergely Andó / Application Innovation July 10, 2013 Customer.
B I O der Schlüssel zum Erfolg im Betrieb
Interrogatives and Verbs
„Was ist Deine Lebensquelle…?“
„Wenn wir am Ende sind…“ – „Im-Puls“- Gottesdienst
Azure Backup, Azure Backup Server und Azure Site Recovery
FREE ICONS POWERPOINT TEMPLATE.
Azure Active Directory und Azure Active Directory Domain Services
Der mittelalterliche Hofstaat
Kambrische Explosion: Der Ausbruch des Lebens
" Veränderungen gehören zum Leben... ? - W i r k l i c h ... ? ! "
you: ihr ( familiar plural ) you: du ( familiar singular)
Deutsch I Telling time….
Titel der Präsentation
Aspect-Oriented Programming: Fad or the Future
Synonyms are two or more words belonging to the same part of speech and possessing one or more identical or nearly identical denotational meanings, interchangeable.
Das Taschentuch-Spiel
you: ihr ( familiar plural ) you: du ( familiar singular)
Students have revised SEIN and HABEN for homework
Wer sind wir Psychotherapeuten ?
Herzlich willkommen! Infoabend „4 nach 5“ Unsere Themen: Eckdaten
Gefördert von der Staatskanzlei NRW, Abteilung Sport und Ehrenamt
The Conversational Past
The Conversational Past
Integrating Knowledge Discovery into Knowledge Management
Practical Exercises and Theory
School supplies.
- moodle – a internet based learning platform
Zhunussova G., AA 81. Linguistic communication, i.e. the use of language, is characteristically vocal and verbal behaviour, involving the use of discrete.
 Präsentation transkript:

Rust The Language of Choice for Secure Systems 12/5/2018 12:49 AM Rust The Language of Choice for Secure Systems By Alexander Georgescu (ag147 - 28272) Presentation for “Secure Systems” at Prof. Dr. Kriha 30.5.2018 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Structure Language Overview Safety/Security Demonstrated 12/5/2018 12:49 AM Structure Language Overview Origins and History Basic Concepts Safety Features Memory Management Safety/Security Demonstrated Heartbleed: Rust vs C++ RustBelt - Proving safety/security 1. Idea 2. Components of proof 3. Result © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 1. Origins and History 12/5/2018 12:49 AM Language Overview - 1. Origins and History History In 2008: Private project by Graydon Hoare (Employee of Mozilla) Sponsoring by since 2009 2011: Compiling of the first Rust-compiler in Rust (Till then: Compiler in OCaml) 2012: First Pre-Alpha Version -> Beta Phase 2015: First stable version (Mai 15th) Refining during development of „Servo“ 2016, 2017, 2018 – „Most loved language“ in Stackoverflow user survey Rust – The Language of Choice for Secure Systems Slide 3/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 1. Origins and History 12/5/2018 12:49 AM Language Overview - 1. Origins and History Use today Parts of Firefox The experimental layout engine „Servo“ „Quantum“ – improvement of Gecko Redox OS (Unix-like, open-source OS) Magic Pocket (Data storage for Dropbox) Parts of OpenDNS (DNS-Dienstleister) Rust – The Language of Choice for Secure Systems Slide 4/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 2. Basic concepts 12/5/2018 12:49 AM Language Overview - 2. Basic concepts Concepts Fully compiled Imperative-procedural design (like C) Functional and object-oriented elements can be applied Strong typed variables (but automatical type) No garbage collector Safe multi-threading supported by the language Smart library and build-automation system “cargo“ Macros (shown clearly in code with ‘!‘) „Traits“ concept to add custom compiler (safety) features Rust – The Language of Choice for Secure Systems Slide 5/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 2. Basic concepts 12/5/2018 12:49 AM Language Overview - 2. Basic concepts Goals Userfriendly (but constricting) Enforcing safety Yet many solutions for one problem Shall become an universal system language Good availablity Compilers for Linux, Windows and Mac Try in browser: play.rust-lang.org Plugins for IDEs and editors (Eclipse, Visual, Atom etc.) Constricting -> Keine Flüchtigkeitsfehler Rust – The Language of Choice for Secure Systems Slide 6/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 2. Basic concepts 12/5/2018 12:49 AM Language Overview - 2. Basic concepts Syntax basically similar to C Curly brackets ‘{}‘ for codeblocks Variables initialized with „let“. Type is optional. Many integrated datatypes on stack. E.g.: i8, i16, i32, u8, bool, char Object-Like Datatypes on Heap. E.g.: String fn main() { let on_world : bool = true; if on_world {println!("Hello World!");} else {println!("Goodbye, World.");} } -> Hello World! Rust – The Language of Choice for Secure Systems Slide 7/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 3. Safety Features 12/5/2018 12:49 AM Language Overview - 3. Safety Features let s1 = String::from("Hello"); let s2 = s1; println!("{}, world!", s2); println!("{}, world!", s1); println!("{}, world!", s1); -> Value used here after MOVE Move and invalidation Only shallow copies Only data on Stack is copied Everything else is moved Moved variables are invalidated! Solutions: Use .clone() Or references Rust ermöglicht durch Zuweisung nur “shallow copies”, also Kopie auf Stack. Keine “deep copies”. Strings haben Daten auf dem Heap. Rust – The Language of Choice for Secure Systems Slide 8/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 3. Safety Features 12/5/2018 12:49 AM Language Overview - 3. Safety Features Also the case in functions parameters let s1 = String::from("Hello"); toWorld( s1 ); println!("{}, world!", s1); println!("{}, world!", s1); -> Value used here after MOVE toWorld muss aber engepasst warden. Kann entweder das Objekt selbst annehmen, ODER eine Referenz let s1 = String::from("Hello"); toWorld( &s1 ); println!("{}, world!", s1); Rust – The Language of Choice for Secure Systems Slide 9/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 3. Safety Features 12/5/2018 12:49 AM Language Overview - 3. Safety Features fn main() { let reference_to_nothing = dangle(); } fn dangle() -> &String { let s = String::from("Hello"); return &s; } return &s; -> no value to borrow from Values deleted (freed) when out of scope No dangling references Compiler does not allow references to unavailable memory No „null pointer“ or „access violation“ trouble No manual free required Verschiedene Sachen zu sehen: Funktionsdefinition mit Return-Typ (Ref-String) Return der Referz -> Fehler. Object geht außerhalb des Scopes verloren Rust – The Language of Choice for Secure Systems Slide 10/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 3. Safety Features 12/5/2018 12:49 AM Language Overview - 3. Safety Features let mut s = String::from("Hello"); let rs = &mut s; rs.push(‘W’); s.push(‘o’); s.push(‘o’); -> cannot borrow ‘s‘ as mutable more than once Referencing of mutable An object is only mutable to its single “Owner“ Prevents data races at compiletime More confident programming Wenn man einer Funktion, die Möglichkeit geben will, die Variable zu bearbeiten. Eines der Hauptkonzepte: Das Owner Konzept. Rust – The Language of Choice for Secure Systems Slide 11/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 3. Safety Features 12/5/2018 12:49 AM Language Overview - 3. Safety Features Exception: “Cell“ “Cell“ allows multiple mutable references Needed for efficient implementations let c1: &Cell = &Cell::new(0); let c2: &Cell = c1; c1.set(2); println!("{:?}", c2.get()); -> 2 No deepstacking = keine Cell in Cell. Threads passing mit traits -> Vererbung (iterable) Nutzt intern “unsafe” code. Wichtig bei Prüfung. Severe, constricting API Not deep-stacking No passing to other Threads Rust – The Language of Choice for Secure Systems Slide 12/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 4. Memory Management 12/5/2018 12:49 AM Language Overview - 4. Memory Management Stack Variables with fixed size Heap “Boxed” memory (with owner) Protecting memory with “Boxes” Under circumstances one can allocate “unsafe” memory “Boxing” ensures Rust’s safety nevertheless unsafe { let size = 20; let unsafe_ptr = Heap::allocate(size); let safe_box = Box::from_raw(unsafe_ptr, size); } Stark vereinfacht. new_data nach ausserhalb übertragen. Rust – The Language of Choice for Secure Systems Slide 13/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Language Overview - 4. Memory Management 12/5/2018 12:49 AM Language Overview - 4. Memory Management Summarized: Ownership concept Explicit syntax for: Mutable variables Shallow vs deep-copy Three rules: 1. Each value has a variable that‘s called its „owner“ 2. There can only be one owner for it at a time 3. When the owner goes out of scope, the value will be dropped -> No memory accessible without owning it -> No memory without owner (except for inside unsafe blocks) Technical exceptions enforced by API Rust – The Language of Choice for Secure Systems Slide 14/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Safety Demonstrated - 1. Heartbleed: Rust vs C++ 12/5/2018 12:49 AM Safety Demonstrated - 1. Heartbleed: Rust vs C++ C++ results in many tiny pitfalls with drastic consequences Data of the program is not protected All program parts have the right to access all memory Rust – The Language of Choice for Secure Systems Slide 15/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

RustBelt - 1. Idea RustBelt 12/5/2018 12:49 AM RustBelt - 1. Idea RustBelt Attempt at a machine-assisted way of proving the safety of Rust’s standard libraries (especially ones containing unsafe code) Provides ways to verify safety of other, user-made Rust libraries Style language formalizing Rust’s core features: λRust Applicable for semantic checks Verifiable for logical soundness Rust – The Language of Choice for Secure Systems Slide 16/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

RustBelt - 2. Components of proof 12/5/2018 12:49 AM RustBelt - 2. Components of proof Fundamental theorem of logical relations “Verify that the typing rules of λRust are sound when interpreted semantically, i.e., as lemmas establishing that the semantic interpretations of the premises imply the semantic interpretation of the conclusion.” Adequacy (Computationally) “Verify that, if a closed program issemantically well-typed according to the model, its execution will not exhibit any unsafe/undefined behaviors.” Bedeutet: Das Resultat ergibt sich aus der Prämisse (semantisch interprettiert). Im Grunde: keine logischen Widersprüche Bedeutet: Rust folgt semmantisch genau dem Modell Rust – The Language of Choice for Secure Systems Slide 17/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

RustBelt - 2. Components of proof 12/5/2018 12:49 AM RustBelt - 2. Components of proof Library-Specific verification condition “For any library that employs unsafe code internally, verify that its implementation satisfies the predicate associated with the semantic interpretation of its interface, thus establishing that the unsafe code has indeed been safely “encapsulated” by the library’s API.” Together those ensure that a Rust program using only the verified libraries and no additional unsafe-marked code, is safe to execute. Rust – The Language of Choice for Secure Systems Slide 18/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

12/5/2018 12:49 AM RustBelt - 2. Result Fundamental theorem and adequacy proven successfully and final for the language Safety proven for several major libraries Arc, Rc, Cell, RefCell, Mutex, RwLock, mem::swap, thread::spawn, rayon::join and take_mut Solange die Sprache nicht verändert wird. Basis: Von anderen leuten entwickeltes Logic-System namens “Iris”. Lambda Rust kommt nah an Compiler-Zwischensprache (MIR (Mid-level Intermediate Representation) ) ran Rust – The Language of Choice for Secure Systems Slide 19/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

12/5/2018 12:49 AM Research Questions Could this verification method be applied to libraries in other languages too? Can a theoretical language with proved safety, be converted into a widespread usable language? How well could Rust replace C and C++ as system languages? Rust – The Language of Choice for Secure Systems Slide 20/20 © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Thank you for listening! 12/5/2018 12:49 AM Thank you for listening! Further questions? Discusion? Sources willcrichton.net/notes/rust-memory-safety/ RustBelt: Securing the Foundations of the Rust - RALF JUNG, JACQUES-HENRI JOURDAN, ROBBERT KREBBERS, DEREK DREYER www.rust-lang.org/ doc.rust-lang.org/book/ rustbyexample.com/ plus.google.com/+nialldouglas/posts/AXFJRSM8u2t Rust – The Language of Choice for Secure Systems © 2007 Microsoft Corporation. Alle Rechte vorbehalten. Microsoft, Windows, Windows Vista und andere Produktnamen sind möglicherweise eingetragene Marken oder Marken in den USA und/oder anderen Ländern/Regionen. Diese Angaben dienen nur zu Informationszwecken und entsprechen dem aktuellen Sachstand der Microsoft Corporation zum Erstellungsdatum dieser Präsentation. Da Microsoft auf die sich ständig ändernden Marktanforderungen reagieren muss, sollten die Angaben nicht als Verpflichtung seitens Microsoft angesehen werden, und Microsoft übernimmt keine Garantie für die Genauigkeit der Angaben nach dem Datum dieser Präsentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.