Formal Methods at Scale in Microsoft
|
|
- Myron Barrett
- 6 years ago
- Views:
Transcription
1 Formal Methods at Scale in Microsoft Thomas Ball Microsoft Research 4 October 2017
2 Code Integ. Tests Unit Test Testing-based Development Commit, Build Review
3 Web app Web browser Web server Code HTTPS Integ. Tests Unit Test TLS Crypto Commit, Build Review
4 Some bugs in OpenSSL s Poly1305
5 Program Correctness Memory safety Functional correctness Termination Minimize side-channel leaks Cryptographic security
6 Reduction to Logic In theory, all problems of program correctness can be reduced to problems of logic von Neumann, 1961 Floyd, 1967 Hoare, 1969
7 Reduction to Logic int Puzzle(int x) { int res = x; res = res + (res << 10); res = res ^ (res >> 6); if (x > 0 && res == x + 1) throw new Exception("bug"); return res; } x = Automated Theorem Prover
8 Reduction To Logic In practice, many problems of program correctness 15+ years of R&D at Microsoft, building on 35+ years of related work can be compiled to problems of logic and solved by automated theorem provers
9 The Many Uses of Z3 Automated Theorem Prover Logic Boolean Algebra Floating Point Bit Vectors First-order Axioms Linear Arithmetic Sets, Maps,
10 The Many Uses of Z3 Interactive Functional Verification White-box Test Generation Automated Theorem Prover Logic Boolean Algebra Floating Point Bit Vectors First-order Axioms Linear Arithmetic Sets/Maps/
11 Specifications Code Global Verification Local Verification Interactive Functional Verification Commit, Build Review
12 MSR s Project Everest Goal: verified HTTPS replacement Challenges: - scalability of verification - performance - usable tool chain Edge Certification Authority X.509 Services & Applications curl WebKit Skype IIS Apache Clients HTTPS ASN.1 Servers Nginx TLS *** RSA SHA ECDH 4Q Crypto Algorithms Network buffers Untrusted network (TCP, UDP, )
13 Subgoal: Verified low-level crypto
14 Efficient crypto requires customizations Poly1305: Uses the prime field with p = Need 130 bits to represent a number Efficient implementations require custom bignum libraries to delay carries Everest subgoal: On X86: use 5 32-bit words, but using only 26 bits in each word On X64: use 3 64-bit words, but using only 44 bits in each word generic, efficient Curve25519: Uses the prime field with p = bignum libraries On X64: use 5 64-bit words, but using only 51 bits per word OpenSSL has 12 unverified bignum libraries optimized for each case
15 A generic bignum library Bignum code can be shared between Curve25519, Ed25519 and Poly1305, which all use different fields Only modulo is specific to the field (optimized) Consequently: - write once - verify once - extract three times
16 Prove correct in F*, extract to efficient C val poly1305_mac: tag:nbytes 16 len:u32 msg:nbytes len{disjoint tag msg} key:nbytes 32 {disjoint msg key disjoint tag key} ST unit (requires (λ h msg h key h tag h)) (ensures (λ h0 _ h1 let r=spec.clamp h0.[sub key 0 16] in let s=h0.[sub key 16 16] in modifies {tag} h0 h1 h1.[tag] == Spec.mac_1305 (encode_bytes h0.[msg]) r s)) Mathematical spec in F* poly1305_mac: (1) computes a polynomial in GF( ), (2) stores the result in tag, (3) does not modify anything else void poly1305_mac(uint8_t *tag, uint32_t len, uint8_t *msg, uint8_t *key) { uint64_t tmp [10] = { 0 }; uint64_t *acc = tmp uint64_t *r = tmp + (uint32_t)5; uint8_t s[16] = { 0 }; Crypto_Symmetric_Poly1305_poly1305_init(r, s, key); Crypto_Symmetric_Poly1305_poly1305_process(msg, len, acc, r); Crypto_Symmetric_Poly1305_poly1305_finish(tag, acc, s); } Efficient C implementation Verification imposes no runtime performance overhead Sample code Poly1305 MAC
17 F* source: core-ml with dependent types and effects let poly1305_mac: tag:nbytes 16 len:u32 msg:nbytes len{disjoint tag msg} key:nbytes 32 {disjoint msg key disjoint tag key} ST unit (requires (λ h msg h key h tag h)) (ensures (λ h0 _ h1 )) = Z3 Type-checker + compiler C source, tuned for readability, compliance with C linters etc. Erases types + inlining etc. Core ML kremlin monomorphization, more inlining, void poly1305_mac(uint8_t *tag, uint32_t len, uint8_t *msg, uint8_t *key) { uint64_t tmp [10] = { 0 }; uint64_t *acc = tmp uint64_t *r = tmp + (uint32_t)5; uint8_t s[16] = { 0 }; Crypto_Symmetric_Poly1305_poly1305_init(r, s, key); Crypto_Symmetric_Poly1305_poly1305_process(msg, len, acc, r); Crypto_Symmetric_Poly1305_poly1305_finish(tag, acc, s); }
18 Performance of Everest s High Assurance Crypto Library (HACL*) Low* Several complete TLS ciphersuites Verification can scale up! Verification enables using 64x64 bit multiplications, without fear of getting it wrong cycles/ecdh With performance as good as or better than hand-written C
19 verified-cryptography-firefox-57/ Mozilla has partnered with INRIA and Project Everest (Microsoft Research, CMU, INRIA) to bring components from their formally verified HACL* cryptographic library into NSS, the security engine which powers Firefox.
20 Project Everest: Open Source
21 Application Logic Algorithms Frameworks file parsers OS Many security vulnerabilities are due to programming errors in file parsers Security testing hunting for million-dollar bugs Write A/V (always exploitable), Read A/V (sometimes exploitable),
22 The Many Uses of Z3 Interactive Functional Verification Whitebox Test Generation Automated Theorem Prover Logic Boolean Algebra Floating Point Bit Vectors First-order Axioms Linear Arithmetic Sets/Maps/
23 void top(char input[4]) { input = good bood baod badd bad! Gen 1 Gen 2 Gen 3 Gen 4 int cnt = 0; Path constraint: if (input[0] == b ) cnt++; I 0!= b I 0 = b bood if (input[1] == a ) cnt++; I 1!= a I 1 = a gaod baod if (input[2] == d ) cnt++; I 2!= d I 2 = d godd badd if (input[3] ==! ) cnt++; I 3!=! I 3 =! goo! bad! } if (cnt >= 4) crash(); good
24 White Box Fuzzing (SAGE) Input0 Coverage Data Constraints Check for Crashes Code Coverage Generate Path Constraints Solve Constraints (Z3) Input1 Input2 InputN
25 White Box Fuzzing (SAGE) Results Since 2007: many new security bugs found Apps: decoders, media players, document processors, Bugs: Write A/Vs, Read A/Vs, Crashes, Many triaged as security critical, severity 1, priority 1 100s of apps, 100s of bugs Bug fixes shipped quietly (no MSRCs) to 1 Billion+ PCs Millions of dollars saved (for Microsoft and the world) Practical Verification <5 security bulletins in SAGE-cleaned parsers since 2009
26 Microsoft Security Risk Detection Security Risk Detection (SRD) is Microsoft's unique fuzz testing service for finding security critical bugs in software Security Risk Detection helps customers quickly adopt practices and technology (SAGE) battle-tested over the last 15 years at Microsoft Result: Your code is highly reliable and resilient to attack
27 27 Step 1: The user manually uploads the target binaries and seed Files to the Customer VM, and uses the wizard to configure the job Step 2: Security Risk Detection validates the job, minimizes the seed files, and then clones the customer VM dozens of times based on workload Repro VM Step 4: Any time an execution fails, the offending file is sent to the repro VM to ensure the bug is reproducible Customer VM Parallelized Runs Step 3: Multiple fuzzers run for multiple days: the target app is executed roughly 8,000,000 times, each time with a slightly modified input file that s intended to crash the target Job Results API/Portal Page Step 5: Bugs that repro (along with the file, stack trace, and other debug info) are available in the portal and API in real time
28 Microsoft Security Risk Detection Results No false positives each reported issue has been verifiably reproduced Issues are deduplicated via stack trace hash these likely share the same root bug Issues can be sorted by type or severity, ensuring the most urgent issues can be addressed first Each issue includes the culprit file, stack trace, and other debug data so developers can repro and fix issues in their own environments Note: Due to the non-deterministic nature of fuzzing, results can appear early or late in the job, uniformly or in clusters
29 Summary Correctness of software critical to global infrastructure and economy MSR leads in R&D and application of formal methods at scale Automated theorem proving and verification Programming languages with rich specifications (type systems) Systematic testing tools Examples Greenfield: Verified HTTPS stack (Project Everest) Legacy: Microsoft Security Risk Detection
30 Thanks To Teams: Everest Security Risk Detection
Dynamic Software Model Checking
Dynamic Software Model Checking Patrice Godefroid Microsoft Research Page 1 September 2014 Ed Clarke: A man, An idea LASER 2011 summer school (Elba island, Italy) Page 2 September 2014 Ed Clarke: A man,
More informationAuthenticated Encryption in TLS
Authenticated Encryption in TLS Same modelling & verification approach concrete security: each lossy step documented by a game and a reduction (or an assumption) on paper Standardized complications - multiple
More information*the Everest VERified End-to-end Secure Transport. Verified Secure Implementations for the HTTPS Ecosystem mitls & Everest*
*the Everest VERified End-to-end Secure Transport Verified Secure Implementations for the HTTPS Ecosystem mitls & Everest* Edge Clients Services & Applications curl WebKit Skype IIS Apache HTTPS Ecosystem
More informationAutomated Whitebox Fuzz Testing. by - Patrice Godefroid, - Michael Y. Levin and - David Molnar
Automated Whitebox Fuzz Testing by - Patrice Godefroid, - Michael Y. Levin and - David Molnar OUTLINE Introduction Methods Experiments Results Conclusion Introduction Fuzz testing is an effective Software
More informationHACL* in Mozilla Firefox Formal methods and high assurance applications for the web
HACL* in Mozilla Firefox Formal methods and high assurance applications for the web B. Beurdouche K. Bhargavan J. Protzenko J-K. Zinzindohoué (Project Everest) F. Kiefer E. Rescorla T. Taubert M. Thomson
More informationAutomated Software Testing
Automated Software Testing for the 21 st Century Patrice Godefroid Microsoft Research Page 1 June 2015 Outline Two parts: 1. Some recent advances on automated software testing Technical developments Applications
More informationAutomated Whitebox Fuzz Testing
Automated Whitebox Fuzz Testing ( Research Patrice Godefroid (Microsoft Michael Y. Levin (Microsoft Center for ( Excellence Software David Molnar (UC Berkeley & MSR) Fuzz Testing Send random data to application
More informationSoftware Model Checking
20 ans de Recherches sur le Software Model Checking 1989 1994 2006 2009 Université de Liège Bell Labs Microsoft Research Patrice Godefroid Page 1 Mars 2009 Model Checking A B C Each component is modeled
More informationA Roadmap for High Assurance Cryptography
A Roadmap for High Assurance Cryptography Harry Halpin harry.halpin@inria.fr @harryhalpin (Twitter) NEXTLEAP (nextleap.eu) Harry Halpin Prosecco Thanks to Peter Schwabe (Radboud University) Harry.halpin@inria.fr
More informationVale: Verifying High-Performance Cryptographic Assembly Code
Vale: Verifying High-Performance Cryptographic Assembly Code Barry Bond 1, Chris Hawblitzel 1, Manos Kapritsos 2, K. Rustan M. Leino 1, Jacob R. Lorch 1, Bryan Parno 3, Ashay Rane 4, Srinath Setty 1, Laure
More informationComputer Security Course. Midterm Review
Computer Security Course. Dawn Song Midterm Review In class: Logistics On time: 4:10-5:30pm Wed 1 8x11 page cheat sheet allowed Special requirements: see TA Part I, II, III Scope Software Security Secure
More informationIntegrating verification in programming languages
Integrating verification in programming languages Thomas Jensen, INRIA Seminar INRIA Rennes, 04/11/2015 Collège de France Chaire Algorithmes, machines et langages x / y Types For division to make sense,
More informationFrom Z3 to Lean, Efficient Verification
From Z3 to Lean, Efficient Verification Turing Gateway to Mathematics, 19 July 2017 Leonardo de Moura, Microsoft Research Joint work with Nikolaj Bjorner and Christoph Wintersteiger Satisfiability Solution/Model
More informationFormal methods for software security
Formal methods for software security Thomas Jensen, INRIA Forum "Méthodes formelles" Toulouse, 31 January 2017 Formal methods for software security Formal methods for software security Confidentiality
More informationGreats Bugs in History
Semidoctus, 23 November 2016 Semidoctus, 23 November 2016 1 / 1/ Plan 1 Introduction: what s a bug? 2 The Y2K Bug 3 The case of Ariane 5 4 Heartbleed 5 The Intel Division Bug 6 500-mile emails 7 Conclusion
More informationImplementing Cryptography: Good Theory vs. Bad Practice
Implementing Cryptography: Good Theory vs. Bad Practice Viet Pham Information Security Group, Department of Mathematics Royal Holloway, University of London Outline News report What is cryptography? Why
More informationSTAMP: AN AUTOMATED UNKNOWN ZERO- DAY VULNERABILITY DISCOVERY SYSTEM FOR MOBILE PLATFORMS
STAMP: AN AUTOMATED UNKNOWN ZERO- DAY VULNERABILITY DISCOVERY SYSTEM FOR MOBILE PLATFORMS Dr. S. P. T. Krishnan Institute for Infocomm Research Ms. Seetha M. J. Institute for Infocomm Research Session
More informationTest Conditions. Closed book, closed notes, no calculator, no laptop just brains 75 minutes. Steven M. Bellovin October 19,
Test Conditions Closed book, closed notes, no calculator, no laptop just brains 75 minutes Steven M. Bellovin October 19, 2005 1 Form 8 questions I m not asking you to write programs or even pseudo-code
More information20 Years of. Dynamic Software Model Checking
20 Years of Dynamic Software Model Checking Patrice Godefroid Microsoft Research Page 1 September 2015 Model Checking A B C deadlock Each component is modeled by a FSM. Model Checking (MC) is check whether
More informationForeword by Katie Moussouris... Acknowledgments... xvii. Introduction...xix. Chapter 1: The Basics of Networking... 1
Brief Contents Foreword by Katie Moussouris.... xv Acknowledgments... xvii Introduction...xix Chapter 1: The Basics of Networking... 1 Chapter 2: Capturing Application Traffic... 11 Chapter 3: Network
More informationTesting. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus
Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized
More informationType Theory meets Effects. Greg Morrisett
Type Theory meets Effects Greg Morrisett A Famous Phrase: Well typed programs won t go wrong. 1. Describe abstract machine: M ::= 2. Give transition relation: M 1 M 2
More informationVERIFICATION OF CRYPTO PRIMITIVES MIND THE GAPS. Lennart Beringer, Princeton University
VERIFICATION OF CRYPTO PRIMITIVES MIND THE GAPS Lennart Beringer, Princeton University Crypto primitives: the building blocks of cryptographic libraries Examples: hash functions, message authentications,
More informationProgram Verification. Aarti Gupta
Program Verification Aarti Gupta 1 Agenda Famous bugs Common bugs Testing (from lecture 6) Reasoning about programs Techniques for program verification 2 Famous Bugs The first bug: A moth in a relay (1945)
More informationSymbolic Execution. Wei Le April
Symbolic Execution Wei Le 2016 April Agenda What is symbolic execution? Applications History Interal Design: The three challenges Path explosion Modeling statements and environments Constraint solving
More informationtypedef void (*type_fp)(void); int a(char *s) { type_fp hf = (type_fp)(&happy_function); char buf[16]; strncpy(buf, s, 18); (*hf)(); return 0; }
Dawn Song Fall 2012 CS 161 Computer Security Practice Questions 1. (6 points) Control Hijacking Indicate whether the statement is always valid. Indicate true or false, and give a one sentence explanation.
More informationManifest Safety and Security. Robert Harper Carnegie Mellon University
Manifest Safety and Security Robert Harper Carnegie Mellon University Collaborators This work is, in part, joint with Lujo Bauer, Karl Crary, Peter Lee, Mike Reiter, and Frank Pfenning at Carnegie Mellon.
More informationVerification & Validation of Open Source
Verification & Validation of Open Source 2011 WORKSHOP ON SPACECRAFT FLIGHT SOFTWARE Gordon Uchenick Coverity, Inc Open Source is Ubiquitous Most commercial and proprietary software systems have some open
More informationVerifying Real-World Security Protocols from finding attacks to proving security theorems
Verifying Real-World Security Protocols from finding attacks to proving security theorems Karthik Bhargavan http://prosecco.inria.fr + many co-authors at INRIA, Microsoft Research, Formal security analysis
More informationlogistics: ROP assignment
bug-finding 1 logistics: ROP assignment 2 2013 memory safety landscape 3 2013 memory safety landscape 4 different design points memory safety most extreme disallow out of bounds usually even making out-of-bounds
More informationSoftware Vulnerability
Software Vulnerability Refers to a weakness in a system allowing an attacker to violate the integrity, confidentiality, access control, availability, consistency or audit mechanism of the system or the
More informationInstalling Cisco APIC-EM on a Virtual Machine
About the Virtual Machine Installation, page 1 System Requirements Virtual Machine, page 2 Pre-Install Checklists, page 4 Cisco APIC-EM Ports Reference, page 7 Verifying the Cisco ISO Image, page 8 Installing
More informationFormal Verification in Industry
Formal Verification in Industry 1 Formal Verification in Industry John Harrison Intel Corporation The cost of bugs Formal verification Machine-checked proof Automatic and interactive approaches HOL Light
More information18-642: Code Style for Compilers
18-642: Code Style for Compilers 9/6/2018 2017-2018 Philip Koopman Programming can be fun, so can cryptography; however they should not be combined. Kreitzberg and Shneiderman 2017-2018 Philip Koopman
More informationSecurity Policy Document Version 3.3. Tropos Networks
Tropos Control Element Management System Security Policy Document Version 3.3 Tropos Networks October 1 st, 2009 Copyright 2009 Tropos Networks. This document may be freely reproduced whole and intact
More informationCS 240 Final Exam Review
CS 240 Final Exam Review Linux I/O redirection Pipelines Standard commands C++ Pointers How to declare How to use Pointer arithmetic new, delete Memory leaks C++ Parameter Passing modes value pointer reference
More informationSecurity Testing. John Slankas
Security Testing John Slankas jbslanka@ncsu.edu Course Slides adapted from OWASP Testing Guide v4 CSC 515 Software Security What is Security Testing? Validate security controls operate as expected What
More informationSymbolic Execution. Joe Hendrix Galois, Inc SMT Summer School galois
Symbolic Execution Joe Hendrix Galois, Inc SMT Summer School 2015 Galois, Inc We solve hard research problems for clients. Symbolic Execution is a technique for mapping code into logic. is widely used
More informationVirtualization Device Emulator Testing Technology. Speaker: Qinghao Tang Title 360 Marvel Team Leader
Virtualization Device Emulator Testing Technology Speaker: Qinghao Tang Title 360 Marvel Team Leader 1 360 Marvel Team Established in May 2015, the first professional could computing and virtualization
More informationIntel Parallel Studio 2011
THE ULTIMATE ALL-IN-ONE PERFORMANCE TOOLKIT Studio 2011 Product Brief Studio 2011 Accelerate Development of Reliable, High-Performance Serial and Threaded Applications for Multicore Studio 2011 is a comprehensive
More informationBrowser Security Guarantees through Formal Shim Verification
Browser Security Guarantees through Formal Shim Verification Dongseok Jang Zachary Tatlock Sorin Lerner UC San Diego Browsers: Critical Infrastructure Ubiquitous: many platforms, sensitive apps Vulnerable:
More informationIt was a dark and stormy night. Seriously. There was a rain storm in Wisconsin, and the line noise dialing into the Unix machines was bad enough to
1 2 It was a dark and stormy night. Seriously. There was a rain storm in Wisconsin, and the line noise dialing into the Unix machines was bad enough to keep putting garbage characters into the command
More informationMicrosoft SDL 한국마이크로소프트보안프로그램매니저김홍석부장. Security Development Lifecycle and Building Secure Applications
Release Conception Microsoft SDL Security Development Lifecycle and Building Secure Applications KRnet 2010 2010. 6. 22. 한국마이크로소프트보안프로그램매니저김홍석부장 Hongseok.Kim@microsoft.com Agenda Applications under Attack
More informationWHITE PAPER. 10 Reasons to Use Static Analysis for Embedded Software Development
WHITE PAPER 10 Reasons to Use Static Analysis for Embedded Software Development Overview Software is in everything. And in many embedded systems like flight control, medical devices, and powertrains, quality
More informationCSE484/CSE584 BLACK BOX TESTING AND FUZZING. Dr. Benjamin Livshits
CSE484/CSE584 BLACK BOX TESTING AND FUZZING Dr. Benjamin Livshits Approaches to Finding Security Bugs 2 Runtime Monitoring Black-box Testing Static Analysis Fuzzing Basics 3 A form of vulnerability analysis
More informationSoftware Engineering Aspects of Elliptic Curve Cryptography. Joppe W. Bos Real World Crypto 2017
Software Engineering Aspects of Elliptic Curve Cryptography Joppe W. Bos Real World Crypto 2017 1. NXP Semiconductors Operations in > 35 countries, more than 130 facilities 45,000 employees Research &
More informationProject 0: Implementing a Hash Table
Project : Implementing a Hash Table CS, Big Data Systems, Spring Goal and Motivation. The goal of Project is to help you refresh basic skills at designing and implementing data structures and algorithms.
More informationSymbolic Execution, Dynamic Analysis
Symbolic Execution, Dynamic Analysis http://d3s.mff.cuni.cz Pavel Parízek CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Symbolic execution Pavel Parízek Symbolic Execution, Dynamic Analysis
More informationVerification and Test with Model-Based Design
Verification and Test with Model-Based Design Flight Software Workshop 2015 Jay Abraham 2015 The MathWorks, Inc. 1 The software development process Develop, iterate and specify requirements Create high
More informationSECURITY CRYPTOGRAPHY Cryptography Overview Brochure. Cryptography Overview
SECURITY CRYPTOGRAPHY Cryptography Overview Brochure Cryptography Overview DPA-resistant and Standard Cryptographic Hardware Cores DPA (Differential Power Analysis) Resistant Hardware Cores prevent against
More informationCombining program verification with component-based architectures. Alexander Senier BOB 2018 Berlin, February 23rd, 2018
Combining program verification with component-based architectures Alexander Senier BOB 2018 Berlin, February 23rd, 2018 About Componolit 2 What happens when we use what's best? 3 What s Best? Mid-90ies:
More informationStatic Analysis and Bugfinding
Static Analysis and Bugfinding Alex Kantchelian 09/12/2011 Last week we talked about runtime checking methods: tools for detecting vulnerabilities being exploited in deployment. So far, these tools have
More informationBillions and Billions of Constraints: Whitebox Fuzz Testing in Production
Billions and Billions of Constraints: Whitebox Fuzz Testing in Production Ella Bounimova Patrice Godefroid David Molnar Abstract We report experiences with constraint-based whitebox fuzz testing in production
More informationLogic Model Checking
Logic Model Checking Lecture Notes 17:18 Caltech 101b.2 January-March 2005 Course Text: The Spin Model Checker: Primer and Reference Manual Addison-Wesley 2003, ISBN 0-321-22862-6, 608 pgs. checking omega
More informationCS 161 Computer Security
Popa & Wagner Spring 2016 CS 161 Computer Security Homework 2 Due: Monday, February 22nd, at 11:59pm Instructions. This homework is due Monday, February 22nd, at 11:59pm. It must be submitted electronically
More informationThe design of a programming language for provably correct programs: success and failure
The design of a programming language for provably correct programs: success and failure Don Sannella Laboratory for Foundations of Computer Science School of Informatics, University of Edinburgh http://homepages.inf.ed.ac.uk/dts
More informationSecure Development Processes
Secure Development Processes SecAppDev2009 What s the problem? Writing secure software is tough Newcomers often are overwhelmed Fear of making mistakes can hinder Tend to delve into security superficially
More informationHeartbleed Bug. Anthony Postiglione. Department of Electrical & Computer Engineering Missouri University of Science and Technology
Heartbleed Bug Anthony Postiglione Department of Electrical & Computer Engineering Missouri University of Science and Technology avp275@mst.edu rev. 14.0 Introduction What is Heartbleed? Discovery Presentation
More information18-642: Code Style for Compilers
18-642: Code Style for Compilers 9/25/2017 1 Anti-Patterns: Coding Style: Language Use Code compiles with warnings Warnings are turned off or over-ridden Insufficient warning level set Language safety
More information32c3. December 28, Nick https://crypto.dance. goto fail;
32c3 December 28, 2015 Nick Sullivan @grittygrease nick@cloudflare.com https://crypto.dance goto fail; a compendium of transport security calamities Broken Key 2 Lock 3 Lock 4 5 6 HTTP HTTPS The S stands
More informationCS558 Programming Languages
CS558 Programming Languages Fall 2016 Lecture 7a Andrew Tolmach Portland State University 1994-2016 Values and Types We divide the universe of values according to types A type is a set of values and a
More information1. (6 points) Control Hijacking Indicate whether the statement is always valid. Indicate true or false, and give a one sentence explanation.
Dawn Song Fall 2012 CS 161 Computer Security Practice Questions 1. (6 points) Control Hijacking Indicate whether the statement is always valid. Indicate true or false, and give a one sentence explanation.
More informationryptograi "ГС for Tom St Denis, Elliptic Semiconductor Inc. Simon Johnson and Author of the LibTom Project
for ryptograi "ГС V6 е Tom St Denis, Elliptic Semiconductor Inc. and Author of the LibTom Project Simon Johnson Contents Preface Chapter 1 Introduction 1 Introduction 2 Threat Models 3 What Is Cryptography?
More informationAutomated Software Analysis Techniques For High Reliability: A Concolic Testing Approach. Moonzoo Kim
Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach Moonzoo Kim Contents Automated Software Analysis Techniques Background Concolic testing process Example of concolic
More informationObject-Oriented Design Lecture 5 CSU 370 Fall 2008 (Pucella) Friday, Sep 26, 2008
Object-Oriented Design Lecture 5 CSU 370 Fall 2008 (Pucella) Friday, Sep 26, 2008 Software Testing Testing techniques can be classified along several orthogonal dimensions. White Box (or Glass Box) Versus
More informationQuality Assurance: Test Development & Execution. Ian S. King Test Development Lead Windows CE Base OS Team Microsoft Corporation
Quality Assurance: Test Development & Execution Ian S. King Test Development Lead Windows CE Base OS Team Microsoft Corporation Introduction: Ian King Manager of Test Development for Windows CE Base OS
More informationWHY TEST SOFTWARE?...
2 At a glance 1 PREFACE... 3 2 AT A GLANCE... 5 3 TABLE OF CONTENTS... 9 4 INTRODUCTION... 17 5 WHY TEST SOFTWARE?... 19 5.1 WHY TEST SOFTWARE?... 19 5.2 LIMITATIONS OF TESTING... 20 5.3 ALTERNATIVE TO
More informationModel Checking Cryptoprocessors (or Why I Like the British Museum ) Mike Bond Computer Laboratory 12th November 2002
Model Checking Cryptoprocessors (or Why I Like the British Museum ) Mike Bond Computer Laboratory 12th November 2002 Contents The Problem : Analysing Security APIs Protocol Analysis Tools The Formalisation
More informationHACL : A Verified Modern Cryptographic Library
HACL : A Verified Modern Cryptographic Library ABSTRACT Jean Karim Zinzindohoué INRIA Jonathan Protzenko Microsoft Research HACL is a verified portable C cryptographic library that implements modern cryptographic
More informationLanguage Techniques for Provably Safe Mobile Code
Language Techniques for Provably Safe Mobile Code Frank Pfenning Carnegie Mellon University Distinguished Lecture Series Computing and Information Sciences Kansas State University October 27, 2000 Acknowledgments:
More informationStatic Analysis Techniques
oftware Design (F28SD2): Static Analysis Techniques 1 Software Design (F28SD2) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh oftware
More informationTurning proof assistants into programming assistants
Turning proof assistants into programming assistants ST Winter Meeting, 3 Feb 2015 Magnus Myréen Why? Why combine proof- and programming assistants? Why proofs? Testing cannot show absence of bugs. Some
More informationApplications. Cloud. See voting example (DC Internet voting pilot) Select * from userinfo WHERE id = %%% (variable)
Software Security Requirements General Methodologies Hardware Firmware Software Protocols Procedure s Applications OS Cloud Attack Trees is one of the inside requirement 1. Attacks 2. Evaluation 3. Mitigation
More informationFinding vulnerabilifes CS642: Computer Security
Finding vulnerabilifes CS642: Computer Security Professor Ristenpart h9p://www.cs.wisc.edu/~rist/ rist at cs dot wisc dot edu University of Wisconsin CS 642 Finding vulnerabilifes Manual analysis Simple
More informationAcronyms. International Organization for Standardization International Telecommunication Union ITU Telecommunication Standardization Sector
Acronyms 3DES AES AH ANSI CBC CESG CFB CMAC CRT DoS DEA DES DoS DSA DSS ECB ECC ECDSA ESP FIPS IAB IETF IP IPsec ISO ITU ITU-T Triple DES Advanced Encryption Standard Authentication Header American National
More informationOverview of SSL/TLS. Luke Anderson. 12 th May University Of Sydney.
Overview of SSL/TLS Luke Anderson luke@lukeanderson.com.au 12 th May 2017 University Of Sydney Overview 1. Introduction 1.1 Raw HTTP 1.2 Introducing SSL/TLS 2. Certificates 3. Attacks Introduction Raw
More informationPierce Ch. 3, 8, 11, 15. Type Systems
Pierce Ch. 3, 8, 11, 15 Type Systems Goals Define the simple language of expressions A small subset of Lisp, with minor modifications Define the type system of this language Mathematical definition using
More informationSaving Time and Costs with Virtual Patching and Legacy Application Modernizing
Case Study Virtual Patching/Legacy Applications May 2017 Saving Time and Costs with Virtual Patching and Legacy Application Modernizing Instant security and operations improvement without code changes
More informationThree General Principles of QA. COMP 4004 Fall Notes Adapted from Dr. A. Williams
Three General Principles of QA COMP 4004 Fall 2008 Notes Adapted from Dr. A. Williams Software Quality Assurance Lec2 1 Three General Principles of QA Know what you are doing. Know what you should be doing.
More informationTesting. So let s start at the beginning, shall we
Testing Today we are going to talk about testing. Before you all lapse into comas in anticipation of how exciting this lecture will be, let me say that testing actually is kind of interesting. I can t
More informationComing of Age: A Longitudinal Study of TLS Deployment
Coming of Age: A Longitudinal Study of TLS Deployment Accepted at ACM Internet Measurement Conference (IMC) 2018, Boston, MA, USA Platon Kotzias, Abbas Razaghpanah, Johanna Amann, Kenneth G. Paterson,
More informationBeyond Patch and Pray: Security by Design
Beyond Patch and Pray: Security by Design Adam Shostack Presented to the Security Leadership Conference Series Arlington, TX Oct 19 2004 Goal Much of today!s security seems to cycle through: " Penetrate
More informationA Mathematical Proof. Zero Knowledge Protocols. Interactive Proof System. Other Kinds of Proofs. When referring to a proof in logic we usually mean:
A Mathematical Proof When referring to a proof in logic we usually mean: 1. A sequence of statements. 2. Based on axioms. Zero Knowledge Protocols 3. Each statement is derived via the derivation rules.
More informationZero Knowledge Protocols. c Eli Biham - May 3, Zero Knowledge Protocols (16)
Zero Knowledge Protocols c Eli Biham - May 3, 2005 442 Zero Knowledge Protocols (16) A Mathematical Proof When referring to a proof in logic we usually mean: 1. A sequence of statements. 2. Based on axioms.
More informationTopics in Software Testing
Dependable Software Systems Topics in Software Testing Material drawn from [Beizer, Sommerville] Software Testing Software testing is a critical element of software quality assurance and represents the
More informationHardening Attack Vectors to cars by Fuzzing
Hardening Attack Vectors to cars by Fuzzing AESIN 2015 Ashley Benn, Regional Sales manager 29 th October, 2015 2015 Synopsys, Inc. 1 Today, there are more than 100m lines of code in cars 2015 Synopsys,
More informationHow Can You Trust Formally Verified Software?
How Can You Trust Formally Verified Software? Alastair Reid Arm Research @alastair_d_reid Formal verification Of libraries and apps Of compilers Of operating systems 2 Fonseca et al., An Empirical Study
More informationHow Can You Trust Formally Verified Software?
How Can You Trust Formally Verified Software? Alastair Reid Arm Research @alastair_d_reid https://www.theguardian.com/business/2015/may/01/us-aviation-authority-boeing-787-dreamliner-bug-could-cause-loss-of-control
More informationDemonstration Lecture: Cyber Security (MIT Department) Trusted cloud hardware and advanced cryptographic solutions. Andrei Costin
Demonstration Lecture: Cyber Security (MIT Department) Trusted cloud hardware and advanced cryptographic solutions Topic Prerequisites Security concepts Security-related concepts (e.g., entropy) Virtualization
More informationLecture 2 Applied Cryptography (Part 2)
Lecture 2 Applied Cryptography (Part 2) Patrick P. C. Lee Tsinghua Summer Course 2010 2-1 Roadmap Number theory Public key cryptography RSA Diffie-Hellman DSA Certificates Tsinghua Summer Course 2010 2-2
More informationRelease Notes for Epilog for Windows Release Notes for Epilog for Windows v1.7
Release Notes for Epilog for Windows v1.7 InterSect Alliance International Pty Ltd Page 1 of 16 About this document This document provides release notes for Snare Enterprise Epilog for Windows release.
More informationIndustrial Hardware and Software Verification with ACL2
Industrial Hardware and Software Verification with ACL2 Warren A. Hunt, Jr. 1, Matt Kaufmann 1, J Strother Moore 1, and Anna Slobodova 2 1 Department of Computer Science University of Texas at Austin and
More informationHow Formal Analysis and Verification Add Security to Blockchain-based Systems
Verification Add Security to Blockchain-based Systems January 26, 2017 (MIT Media Lab) Pindar Wong (VeriFi Ltd.) 2 Outline of this talk Security Definition of Blockchain-based system Technology and Security
More informationCryptography (Overview)
Cryptography (Overview) Some history Caesar cipher, rot13 substitution ciphers, etc. Enigma (Turing) Modern secret key cryptography DES, AES Public key cryptography RSA, digital signatures Cryptography
More informationDyadic Security Enterprise Key Management
Dyadic Security Enterprise Key Management The Secure-as-Hardware Software with a Mathematical Proof Dyadic Enterprise Key Management (EKM) is the first software-only key management and key protection system
More informationProject 0: Implementing a Hash Table
CS: DATA SYSTEMS Project : Implementing a Hash Table CS, Data Systems, Fall Goal and Motivation. The goal of Project is to help you develop (or refresh) basic skills at designing and implementing data
More informationSHA-1 to SHA-2. Migration Guide
SHA-1 to SHA-2 Migration Guide Web-application attacks represented 40 percent of breaches in 2015. Cryptographic and server-side vulnerabilities provide opportunities for cyber criminals to carry out ransomware
More informationconcerto: A Methodology Towards Reproducible Analyses of TLS Datasets
concerto: A Methodology Towards Reproducible Analyses of TLS Datasets Olivier Levillain, Maxence Tury and Nicolas Vivet ANSSI Real World Crypto January 6th 2017 Levillain, Tury, Vivet (ANSSI) concerto
More informationLow level security. Andrew Ruef
Low level security Andrew Ruef What s going on Stuff is getting hacked all the time We re writing tons of software Often with little regard to reliability let alone security The regulatory environment
More informationThinking the Open Source way
Thinking the Open Source way Matt Jamison Sr. Gov t Solutions Architect MSgt, USAFR jamo@redhat.com Source code: #include int main (void) { printf("hello, world!\n"); return 0; } Binary code:
More information