Untrusted Hosts and Confidentiality: Secure Program Partitioning Steve Zdancewic Lantian Zheng Nathaniel Nystrom Andrew Myers Cornell University.

Slides:



Advertisements
Similar presentations
Operating System Security
Advertisements

Building Secure Distributed Systems The CIF model : Component Information Flow Lilia Sfaxi DCS Days - 26/03/2009.
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Towards Static Flow-based Declassification for Legacy and Untrusted Programs Bruno P. S. Rocha Sruthi Bandhakavi Jerry den Hartog William H. Winsborough.
Last Class: The Problem BobAlice Eve Private Message Eavesdropping.
Comp 212: Intermediate Programming Lecture 18 – Java Generics By: Anupam Chanda.
Ch. 7 Process Synchronization (1/2) I Background F Producer - Consumer process :  Compiler, Assembler, Loader, · · · · · · F Bounded buffer.
METHOD OVERRIDING Sub class can override the methods defined by the super class. Overridden Methods in the sub classes should have same name, same signature.
Ensuring Operating System Kernel Integrity with OSck By Owen S. Hofmann Alan M. Dunn Sangman Kim Indrajit Roy Emmett Witchel Kent State University College.
Efficient Zero-Knowledge Proof Systems Jens Groth University College London.
Containment and Integrity for Mobile Code Status Report to DARPA ISO: Feb Fred B. Schneider Andrew Myers Department of Computer Science Cornell University.
CS555Topic 241 Cryptography CS 555 Topic 24: Secure Function Evaluation.
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Digital Signatures and Hash Functions. Digital Signatures.
Netprog: Cryptgraphy1 Cryptography Reference: Network Security PRIVATE Communication in a PUBLIC World. by Kaufman, Perlman & Speciner.
Lect. 18: Cryptographic Protocols. 2 1.Cryptographic Protocols 2.Special Signatures 3.Secret Sharing and Threshold Cryptography 4.Zero-knowledge Proofs.
Ashish Kundu CS590F Purdue 02/12/07 Language-Based Information Flow Security Andrei Sabelfield, Andrew C. Myers Presentation: Ashish Kundu
Swift: Secure Web Applications via Automatic Partitioning Stephen Chong, Jed Liu, Andrew C. Myers, Xin Qi, K. Vikram, Lantian Zheng, Xin Zheng Cornell.
 Authorization via symmetric crypto  Key exchange o Using asymmetric crypto o Using symmetric crypto with KDC  KDC shares a key with every participant.
Owned Policies for Information Security Hubie Chen Stephen Chong Cornell University.
CSE331: Introduction to Networks and Security Lecture 28 Fall 2002.
CMSC 414 Computer and Network Security Lecture 6 Jonathan Katz.
CMSC 414 Computer (and Network) Security Lecture 2 Jonathan Katz.
Quantum Cryptography Qingqing Yuan. Outline No-Cloning Theorem BB84 Cryptography Protocol Quantum Digital Signature.
Oblivious Transfer based on the McEliece Assumptions
1 Enforcing Confidentiality in Low-level Programs Andrew Myers Cornell University.
6/18/2015 4:21 AM Information Flow James Hook CS 591: Introduction to Computer Security.
ECE Synthesis & Verification1 ECE 667 Spring 2011 Synthesis and Verification of Digital Systems Verification Introduction.
Decentralized Robustness Stephen Chong Andrew C. Myers Cornell University CSFW 19 July 6 th 2006.
CMSC 414 Computer and Network Security Lecture 9 Jonathan Katz.
6/20/ :09 PM Information Flow James Hook CS 591: Introduction to Computer Security.
Polyglot: An Extensible Compiler Framework for Java Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers Presentation by Aaron Kimball & Ben Lerner.
Robust Declassification Steve Zdancewic Andrew Myers Cornell University.
CRYPTOGRAPHY WHAT IS IT GOOD FOR? Andrej Bogdanov Chinese University of Hong Kong CMSC 5719 | 6 Feb 2012.
Automatic Implementation of provable cryptography for confidentiality and integrity Presented by Tamara Rezk – INDES project - INRIA Joint work with: Cédric.
C++ fundamentals.
Alexander Potapov.  Authentication definition  Protocol architectures  Cryptographic properties  Freshness  Types of attack on protocols  Two-way.
Making Database Applications Perform Using Program Analysis Alvin Cheung Samuel Madden Armando Solar-Lezama MIT Owen Arden Andrew C. Myers Cornell.
Computer Security Tran, Van Hoai Department of Systems & Networking Faculty of Computer Science & Engineering HCMC University of Technology.
How to play ANY mental game
Previous Next 06/18/2000Shanghai Jiaotong Univ. Computer Science & Engineering Dept. C+J Software Architecture Shanghai Jiaotong University Author: Lu,
Secure Web Applications via Automatic Partitioning Stephen Chong, Jed Liu, Andrew C. Meyers, Xin Qi, K. Vikram, Lantian Zheng, Xin Zheng. Cornell University.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
Computer Science and Engineering 1 Service-Oriented Architecture Security 2.
Containment and Integrity for Mobile Code Security policies as types Andrew Myers Fred Schneider Department of Computer Science Cornell University.
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style Language-Based Information- Flow Security Andrei Sabelfeld.
Reasoning about Information Leakage and Adversarial Inference Matt Fredrikson 1.
Secure two-party computation: a visual way by Paolo D’Arco and Roberto De Prisco.
New Cryptographic Techniques for Active Networks Sandra Murphy Trusted Information Systems March 16, 1999.
1 Cryptography NOTES. 2 Secret Key Cryptography Single key used to encrypt and decrypt. Key must be known by both parties. Assuming we live in a hostile.
Containment and Integrity for Mobile Code End-to-end security, untrusted hosts Andrew Myers Fred Schneider Department of Computer Science Cornell University.
SECURE WEB APPLICATIONS VIA AUTOMATIC PARTITIONING S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, X. Zheng Cornell University.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
Security Patterns for Web Services 02/03/05 Nelly A. Delessy.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
How to execute Program structure Variables name, keywords, binding, scope, lifetime Data types – type system – primitives, strings, arrays, hashes – pointers/references.
Software Security Seminar - 1 Chapter 4. Intermediate Protocols 발표자 : 이장원 Applied Cryptography.
Containment and Integrity for Mobile Code Fred Schneider Andrew Myers Computer Science Department Cornell University.
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style Decentralized Information Flow A paper by Myers/Liskov.
Certification of Programs for Secure Information Flow Dorothy & Peter Denning Communications of the ACM (CACM) 1977.
3/14/2016 8:37 PM Information Flow Epilog James Hook CS 591: Introduction to Computer Security.
Language-Based Information- Flow Security (Sabelfeld and Myers) “Practical methods for controlling information flow have eluded researchers for some time.”
Fall, Privacy&Security - Virginia Tech – Computer Science Click to edit Master title style JFlow: Practical Mostly-Static Information Flow Control.
Securing Access to Data Using IPsec Josh Jones Cosc352.
@Yuan Xue CS 285 Network Security Placement of Security Function and Security Service Yuan Xue Fall 2013.
PREPARED BY: MS. ANGELA R.ICO & MS. AILEEN E. QUITNO (MSE-COE) COURSE TITLE: OPERATING SYSTEM PROF. GISELA MAY A. ALBANO PREPARED BY: MS. ANGELA R.ICO.
Cryptographic Hash Function. A hash function H accepts a variable-length block of data as input and produces a fixed-size hash value h = H(M). The principal.
Paper Reading Group:. Language-Based Information-Flow Security. A
2018 Huawei H Real Questions Killtest
SSH: SECURE LOGIN CONNECTIONS OVER THE INTERNET
Presentation transcript:

Untrusted Hosts and Confidentiality: Secure Program Partitioning Steve Zdancewic Lantian Zheng Nathaniel Nystrom Andrew Myers Cornell University

2 Protecting Confidential Data Programs manipulate valuable data –web-based , shopping, financial planning –B2B transactions, military information systems,... Important Features –Confidentiality is crucial –Distribution is unavoidable –Heterogeneous trust Challenges –Complex policies –Complex software –Correct use of access control & cryptography A C B "Alice trusts A & C" "Bob trusts B & C"

3 Tools for Security Automatic tools –Check the use of enforcement mechanisms –Increase confidence in security Language-based tools –Raise the level of abstraction –Consider information flow through entire system (program) Use the security policy to guide distribution

4 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime

5 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime Describes the computation and the principals' security policies.

6 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime Verifies that the program obeys the security policies.

7 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime Describes the trust relationships between principals and hosts.

8 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime Partitions the data and computation among hosts, so that policies are obeyed.

9 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime Performs dynamic access control checks and encrypts communication.

10 Security Assurance Goal: Resulting distributed program performs the same computation as the source and also satisfies the security policies. Guarantee: Principal P's security policy is violated only if a host that P trusts fails or is subverted. Example: A C B "Alice trusts A & C" "Bob trusts B & C" If B fails, Alice's policy is obeyed, Bob's policy may be violated.

11 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime

12 Confidentiality Policies in Jif Confidentiality labels: int{Alice} a; "a is Alice's private int" Integrity labels: int{?Alice} a; "Alice must trust a" Combined labels: int{Alice, ?Alice} a; (Both constraints) int{Alice} a1, a2; int{Bob} b; // Insecure a1 = b; b = a1; // Secure a1 = a2;

13 Policy Operations in Jif Declassification: int{Alice} a; declassify(a to Bob); Endorse: int{?Bob} b; endorse(b by Alice); But (!) Alice must trust the integrity of decision to perform the policy operation. –Compiler guarantees the integrity "type-cast int{Alice} to int{Bob}"

14 Example: Oblivious Transfer int m 1 ; int m 2 ; AliceBob request(n) Alice has two integers: m 1 and m 2. Alice's Policy: "Bob gets to choose exactly one of m 1 and m 2." Bob's Policy: "Alice doesn't get to know which item I request." Classic Result: "Impossible to solve using 2 principals, with perfect security." answer(m n )

15 Oblivious Transfer (Java) int m1, m2; // Alice's data boolean accessed; int n, ans; // Bob's data n = choose(); // Bob's choice if (!accessed) { // Transfer accessed = true; if (n == 1) ans = m1; else ans = m2; }

16 int{Alice} m1, m2; // Alice's data boolean accessed; int{Bob} n, ans; // Bob's data n = choose(); // Bob's choice if (!accessed) { // Transfer accessed = true; if (n == 1) ans = m1; else ans = m2; } Adding Confidentiality Labels Verification Fails

17 int{Alice} m1, m2; // Alice's data boolean accessed; int{Bob} n, ans; // Bob's data n = choose(); // Bob's choice if (!accessed) { // Transfer accessed = true; if (n == 1) ans = declassify(m1 to Bob); else ans = declassify(m2 to Bob); } Using Declassification Verification Fails

18 Integrity Constraints int{Alice} m1, m2; // Alice's data boolean{?Alice} accessed; int{Bob} n, ans; // Bob's data n = choose(); // Bob's choice if (!accessed) { // Transfer accessed = true; if (n == 1) ans = declassify(m1 to Bob); else ans = declassify(m2 to Bob); } Verification Fails

19 Using Endorsement int{Alice} m1, m2; // Alice's data boolean{?Alice} accessed; int{Bob} n, ans; // Bob's data n = choose(); // Bob's choice if (!accessed) { // Transfer accessed = true; if (endorse(n by Alice) == 1) ans = declassify(m1 to Bob); else ans = declassify(m2 to Bob); }

20 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime

21 Trust Configurations Labels describe the trust relationship between principals and the available hosts. Confidentiality: Host A:{Alice} "Alice trusts host A not to leak her confidential data." Integrity: Host A:{?Alice} "Alice trusts host A not to corrupt her high-integrity data." int{Alice} m 1 ; m 1 can be sent to A int{Bob} n; n cannot be sent to A

22 Two-Host Configuration AB {Alice, ?Alice}{Bob, ?Bob}

23 Splitter output: No Solution! AB {Alice, ?Alice}{Bob, ?Bob} Can't find a host for the expression: endorse(n by Alice) It requires a host that has Alice's integrity yet can hold Bob's private data.

24 Splitter Output AB {Alice, ?Alice}{Bob, ?Bob}{Alice, ?Alice, Bob} T n = choose(); if (!accessed) {... } int m1, m2; bool accessed; int n, ans; int choose() {... return n; }

25 Splitter Output is Java AB {Alice, ?Alice}{Bob, ?Bob}{Alice, ?Alice, Bob} T n = choose(); if (!accessed) {... } int m1, m2; bool accessed; int n, ans; int choose() {... return n; } Data and all of the code except 'choose()' are located at T.

26 Run-time Calls AB {Alice, ?Alice}{Bob, ?Bob}{Alice, ?Alice, Bob} T n = choose(); if (!accessed) {... } int m1, m2; bool accessed; int n, ans; int choose() {... return n; } Resulting code links against the runtime.

27 Security Assurance AB {Alice, ?Alice}{Bob, ?Bob}{Alice, ?Alice, Bob} T n = choose(); if (!accessed) {... } int m1, m2; bool accessed; int n, ans; int choose() {... return n; } Alice's policy is enforced.

28 Network Overhead AB {Alice, ?Alice}{Bob, ?Bob}{Alice, ?Alice, Bob} T n = choose(); if (!accessed) {... } int m1, m2; bool accessed; int n, ans; int choose() {... return n; } Nothing located at host A!

29 Another Secure Solution AB {Alice, ?Alice}{Bob, ?Bob}{Alice, ?Alice, Bob} T goto(B); int n'= get(n,B); if (n' == 1) set(ans, m1); else... int m1, m2; int choose() {... return n; } bool accessed;int n, ans; n = choose(); goto(T); goto(A); if (!accessed){ accessed=true; goto(T); }

30 Secure Program Partitioning Source Code Policy Trust info Compiler Splitter subprograms Host 1Host 2Host 3 runtime

31 Data Transfer Val getField(Host h, ObjID o, Field f) Val setField(Host h, ObjID o, Field f, Val v) void forward(Host h, Frame f, Var vr, Val v) Control Transfer void rgoto(Host h, Frame f, EntryPt e, Token t) void lgoto(Token t) void sync(Host h, Frame f, EntryPt e, Token t) Implementation –Performs access control checks –Encrypts network communication –Capability mechanism protects control transfers Core Runtime Protocol

32 Control Transfer Integrity {?Alice} (Trusted)(Less Trusted) {?Alice} (Trusted)... goto(B);... declassify(X)... goto(A);... declassify(Y) Alice's privileged code

33 Control Transfer Integrity {?Alice} (Trusted) {?Alice} (Trusted)... goto(B);... declassify(X)... goto(A);... declassify(Y) (Less Trusted)

34 Control Transfer Integrity {?Alice} (Trusted) {?Alice} (Trusted)... goto(B);... declassify(X)... goto(A);... declassify(Y) 1. sync 2. rgoto 3. lgoto TTTT (Less Trusted)

35 Control Transfer Integrity {?Alice} (Trusted) {?Alice} (Trusted)... goto(B);... declassify(X)... goto(A);... declassify(Y) TT (Less Trusted) TT

36 Capabilities Protocol Theorem: When trusted hosts follow the protocol, there is at most one valid capability available to less trusted hosts. Means that less trusted hosts have no choice about how privileges are restored to the computation.

37 Prototype: Jif/split Jif/split: 7400 loc Runtime: 1700 loc 4 small benchmarks: –< 300 lines of code each –2 hand implemented in Java using RMI Experimental results: (LAN setting) –Running time overhead vs. hand implemented: 20% to 120% –Message count overhead vs. hand implemented: -25% to 25% –Costs seem reasonable –Need to try bigger programs

38 Secure Program Partitioning Language-based Confidentiality Policies –Compiler splits a program among heterogeneously trusted hosts. –Guided by security policies –Resulting distributed program satisfies the policies Benefits: –End-to-end security –Decentralized –Automatic –Explicit Policies

39

40 Oblivious Transfer Impossibility "It is well known (and easy to see) that in a two-player scenario with noiseless communication, OT [Oblivious Transfer]... with information-theoretic security is not possible, even if only passive cheating is assumed, and players are allowed infinite computing power." – Damgård, Kilian, Slavail On the (Im)possibility of Basing Oblivious Transfer and Bit Commitment on Weakened Security Assumptions, EUROCRYPTO '99

41 Access Control Checks Static constraints for read/write are compiled into access control checks Host A checks that {Alice}  {Alice,?Alice,Bob} –verifies signature of S –checks that S  {A, S} –if so, replies with m1 setField requires integrity checks t1 = getField(Alice, m1); {Alice, ?Alice, Bob} S {Alice, ?Alice} A int{Alice, ?Alice} m1; get(m1) K(S)

42 Partitioning Jif Programs Solve a constraint system to determine possible hosts Use dynamic programming & heuristics to find an efficient solution Rewrite program, inserting calls to runtime system –data forwarding and control transfers Outputs: A collection of Java code fragments with host assignments

43 Static Constraints Consider a field: int{Alice:;?:Alice} f; Host H : confidentiality label C integrity label I Constraints: {Alice:}  C I  {?:Alice} Read-channels: Uses(f)  C Generalize to program statements Constraints on declassify()