Building Secure Distributed Systems The CIF model : Component Information Flow Lilia Sfaxi DCS Days - 26/03/2009.

Slides:



Advertisements
Similar presentations
Elton Mathias and Jean Michael Legait 1 Elton Mathias, Jean Michael Legait, Denis Caromel, et al. OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis,
Advertisements

Off-the-Record Communication, or, Why Not To Use PGP
Cryptography and Game Theory: Designing Protocols for Exchanging Information Gillat Kol and Moni Naor.
Secure Multiparty Computations on Bitcoin
SECURITY AND VERIFICATION Lecture 4: Cryptography proofs in context Tamara Rezk INDES TEAM, INRIA January 24 th, 2012.
Architecture Representation
26 Mai 2004 Séminaire Croisé : Sécurité Informatique Ubiquitaire1 Security Architecture for GRID Applications Séminaire Croisé Sécurité Informatique Ubiquitaire.
TLS Introduction 14.2 TLS Record Protocol 14.3 TLS Handshake Protocol 14.4 Summary.
Secure Socket Layer.
Digital Signatures and Hash Functions. Digital Signatures.
Background information Formal verification methods based on theorem proving techniques and model­checking –to prove the absence of errors (in the formal.
Component Interaction in Distributed Systems Nat Pryce Imperial College
DESIGNING A PUBLIC KEY INFRASTRUCTURE
Java Security Model Lab#1 I. Omaima Al-Matrafi. Safety features built into the JVM Type-safe reference casting Structured memory access (no pointer arithmetic)
Apr 22, 2003Mårten Trolin1 Agenda Course high-lights – Symmetric and asymmetric cryptography – Digital signatures and MACs – Certificates – Protocols Interactive.
1 Enforcing Confidentiality in Low-level Programs Andrew Myers Cornell University.
Polyglot: An Extensible Compiler Framework for Java Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers Presentation by Aaron Kimball & Ben Lerner.
Information Security of Embedded Systems : Algorithms and Measures Prof. Dr. Holger Schlingloff Institut für Informatik und Fraunhofer FIRST.
Security Management.
Automatic Implementation of provable cryptography for confidentiality and integrity Presented by Tamara Rezk – INDES project - INRIA Joint work with: Cédric.
Web services security I
Software Testing and QA Theory and Practice (Chapter 10: Test Generation from FSM Models) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory.
CSE 597E Fall 2001 PennState University1 Digital Signature Schemes Presented By: Munaiza Matin.
Digital Signature Xiaoyan Guo/ Xiaohang Luo/
Secure Systems Research Group - FAU Patterns for Digital Signature using hashing Presented by Keiko Hashizume.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Digital signature in automatic analyses for confidentiality against active adversaries Ilja Tšahhirov, Peeter Laud.
Secure Web Applications via Automatic Partitioning Stephen Chong, Jed Liu, Andrew C. Meyers, Xin Qi, K. Vikram, Lantian Zheng, Xin Zheng. Cornell University.
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
The Grid Component Model and its Implementation in ProActive CoreGrid Network of Excellence, Institute on Programming Models D.PM02 “Proposal for a Grid.
Web Services Security Standards Overview for the Non-Specialist Hal Lockhart Office of the CTO BEA Systems.
E-Commerce Security Professor: Morteza Anvari Student: Xiaoli Li Student ID: March 10, 2001.
DISTRIBUTED SYSTEMS RESEARCH GROUP CHARLES UNIVERSITY PRAGUE Faculty of Mathematics and Physics Behavior Composition in Component.
SECURITY MANAGEMENT Key Management in the case of public-key cryptosystems, we assumed that a sender of a message had the public key of the receiver at.
Reasoning about Information Leakage and Adversarial Inference Matt Fredrikson 1.
Certificate-Based Operations. Module Objectives By the end of this module participants will be able to: Define how cryptography is used to secure information.
A Bipartite Graph Model of Information Flow IFIP WG 2.3, May 2014 Gary T. Leavens (with John L. Singleton) University of Central Florida Orlando Florida.
DSKPP And PSKC: IETF Standard Protocol And Payload For Symmetric Key Provisioning Philip Hoyer Senior Architect – CTO Office.
1 Information Security Practice I Lab 5. 2 Cryptography and security Cryptography is the science of using mathematics to encrypt and decrypt data.
Containment and Integrity for Mobile Code End-to-end security, untrusted hosts Andrew Myers Fred Schneider Department of Computer Science Cornell University.
An Ontological Framework for Web Service Processes By Claus Pahl and Ronan Barrett.
P Chapter 2 introduces Object Oriented Programming. p OOP is a relatively new approach to programming which supports the creation of new data types and.
SECURE WEB APPLICATIONS VIA AUTOMATIC PARTITIONING S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, X. Zheng Cornell University.
Middleware for Secure Environments Presented by Kemal Altıntaş Hümeyra Topcu-Altıntaş Osman Şen.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED.
Advanced Database Course (ESED5204) Eng. Hanan Alyazji University of Palestine Software Engineering Department.
Lifecycle Metadata for Digital Objects October 18, 2004 Transfer / Authenticity Metadata.
Attribute-Based Encryption With Verifiable Outsourced Decryption.
Secure Messenger Protocol using AES (Rijndael) Sang won, Lee
VERIFYING THE CORRECT COMPOSITION OF DISTRIBUTED COMPONENTS: FORMALISATION AND TOOL Ludovic Henrio 1, Oleksandra Kulankhina 1,2, Dongqian Liu 3, Eric Madelaine.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
Tomás BarrosMonday, April 18, 2005FIACRE Toulouse p. 1 Behavioural Models for Hierarchical Components Tomás Barros, Ludovic Henrio and Eric Madelaine.
DHCP Vrushali sonar. Outline DHCP DHCPv6 Comparison Security issues Summary.
Discussing “Developing Secure Systems with UMLSec” 15 FEB Joe Combs.
4.1 © 2004 Pearson Education, Inc. Exam Managing and Maintaining a Microsoft® Windows® Server 2003 Environment Lesson 12: Implementing Security.
Lifecycle Metadata for Digital Objects October 9, 2002 Transfer / Authenticity Metadata.
Paper On Cryptography CS300 Technical Paper Review Avinash Chambhare Abdus Samad.
6.033 Quiz3 Review Spring How can we achieve security? Authenticate agent’s identity Verify the integrity of the request Check the agent’s authorization.
Cryptography CSS 329 Lecture 13:SSL.
Department of Computer Science Chapter 5 Introduction to Cryptography Semester 1.
CRYPTOGRAPHY Cryptography is art or science of transforming intelligible message to unintelligible and again transforming that message back to the original.
1 Network Security. 2 Security Services Confidentiality: protection of any information from being exposed to unintended entities. –Information content.
Training for developers of X-Road interfaces
The Secure Sockets Layer (SSL) Protocol
Electronic Payment Security Technologies
The Grid Component Model and its Implementation in ProActive
Presentation transcript:

Building Secure Distributed Systems The CIF model : Component Information Flow Lilia Sfaxi DCS Days - 26/03/2009

Context and Contribution 2  Context  Building secure distributed systems Needed expertise in systems and security Needed expertise in cryptography  Difficulty of dynamic reconfiguration without breaking the security properties of the system  Necessity of high level tools  Programming abstractions  Automatic code generation  Verification of the generated code

Context and Contribution 3  Contribution  High-level model : CIF (Component Information Flow)‏ System architecture description : component-based model Security annotations  Transformation tools : Verification of the security properties System code generation  Models and languages  Component-based model : Fractal  Security-typed programming language : JIF  Architecture Description Language : ADL (XML-based)‏

Outline  CIF Specification  System representation  System security : Inter and Intra component  CIF Transformation  CIF ADL  ADL Generation  Code Generation  Case study : The battleship game  Conclusion and Future Work 4

Outline  CIF Specification  System representation  System security : Inter and Intra component  CIF Transformation  CIF ADL  ADL Generation  Code Generation  Case study : The battleship game  Conclusion and Future Work 5

 System : assembly of components explicitly bound, with ports used to send and receive data  Each component is configurable : attribution of labels to :  The attributes  The ports 6 CIF Specification System Representation {L3} {L1} {L3'}

Labels  Use of Labels : pair of :  Confidentiality policies  Integrity policies  All the policies must be obeyed  Relation at most as restrictive as ( ⊑ )‏  Construction of a security lattice  As data flows through the system, its labels only become more restrictive ! 7 less restrictive more restrictive

CIF Specification System Security  In CIF, needed security policies must be guaranteed at two levels  Intra-component  Inter-component  Inter-component  Ports annotation  Intra-component  Secure component code 8

CIF Specification Inter-component Security  Associating a label to a port :  impose a security restriction to the request or response  A binding is permitted iff L(client) ⊑ L(server)‏  Example : Confidentiality :Integrity : C1 : I want the message to keep the conf. at least CC1 : I guarantee that the integrity level is I C2 : I consider that the message received has C2 : I want the message to have at least the label C' the integrity I' 9 P' {C'; I'} C2 P {C; I} C1

CIF Specification Intra-component Security 10  Annotation of ports and attributes of a component  Verification of component code  Preservation of confidentiality and integrity of annotated elements  Non-interferent data flow  Non-interference :  "The low level users should not be able to deduce anything about high level user’s activity" Foccardi et al.  "Low-security behavior of the program is not affected by any high-security data.” Goguen & Messeguer 1982

Outline  CIF Specification  System representation  System security : Inter and Intra component  CIF Transformation  CIF ADL  ADL Generation  Code Generation  Case study : The battleship game  Conclusion and Future Work 11

12 CIF Transformation Implementation of the CIF Spec. P2 {C2; I2} C2 P1 {C1; I1} C1 P2 C2 P1 C1 cryptsign verify decrypt C'1 C'2 TC1 TC2

 ADL : Architecture Description Language  XML-based  Functional part Architecture of the system : components & bindings Location of the component code  Security part Security labels of attributes & ports <port name="start" role="server" signature="src.security.StartItf" label=""/> <port name="send" role="client" signature="src.security.SendItf" label="L"/> 13 C1 start{} send{L} CIF ADL Architecture Description

14 CIF Transformation ADL Generation P2 {C2; I2} C2 P1 {C1; I1} C1 P2 C2 P1 C1 cryptsign verify decrypt  ADL Transform : removing the annotations  Implementation :  Confidentiality : asymmetric encryption  Integrity : signature  Assumptions :  Keys distributed safely  Communication channels untrusted  Generation of cryptographic components :  Creation of crypt, sign, verify and decrypt components  Creation of top components containing The main component (server or client)‏ The security components (crypt & sign or verify & decrypt)‏  Connecting the top components with low level bindings

15 CIF Transformation Code Generation C1 C'1  Guarantee the non-interference property for one component  Depending on the component code  Implemented in a security-typed language (exp : JIF)‏ Type checking  Implemented in an imperative language Propagation of the attributes' and methods' labels  Propagation of the label  Check the use of component parameters and port messages  Check the information flow : non-interferent?  Controller Called when secret information leaks Decides whether to declassify the information or to throw an exception  If the label is propagated without exceptions, component non- interferent!

Outline  CIF Specification  System representation  System security : Inter and Intra component  CIF Transformation  CIF ADL  ADL Generation  Code Generation  Case study : The battleship game  Conclusion and Future Work 16

17 Case Study The Battleship Game  1 coordinator and 2 players (at least)‏  Each player has a secret board with a fixed number of ships  Each player tries to guess the opponent's ships coordinates : the winner is the first player who finds the n ships of the opponent  The coordinator keeps a copy of the players' boards & controls the message exchange

18 Case Study The Battleship Game : Inter-component security cryptsign verify decrypt m m Ɛ (m,pub(coord)) ‏ S( Ɛ (m,pub(coord))) ‏ Ɛ (m,pub(coord)) ‏ m

19 Case Study The Battleship Game : Intra-component security public class Player { private Board board; public void setBoard(Board board) { this.board = board; } public void init(int nbShips) { int numCovered = 0; for (int j = 1; j < nbShips+1 ; j++){ numCovered += j; } final Ship[] myCunningStrategy = { new Ship(new Coordinate(1, 1), 1, true), new Ship(new Coordinate(1, 3), 2, false), }; Board myBoard = new Board(); int i = 0; for (int count = numCovered; count > 0 && myBoard != null;) { try { Ship newPiece = myCunningStrategy[i++]; if (newPiece != null && newPiece.length > count) { newPiece = new Ship(newPiece.pos, count,newPiece.isHorizontal); } myBoard.addShip(newPiece); count -= (newPiece == null ? 0 : newPiece.length); } catch (ArrayIndexOutOfBoundsException ignored) { } catch (IllegalArgumentException ignored) {} } setBoard (myBoard); }

20 Case Study The Battleship Game : Intra-component security public class Player { private Board {P1->C;P1<-C} board; public void setBoard(Board board) { this.board = board; } public void init(int nbShips) { int numCovered = 0; for (int j = 1; j < nbShips+1 ; j++){ numCovered += j; } final Ship[] myCunningStrategy = { new Ship(new Coordinate(1, 1), 1, true), new Ship(new Coordinate(1, 3), 2, false), }; Board myBoard = new Board(); int i = 0; for (int count = numCovered; count > 0 && myBoard != null;) { try { Ship newPiece = myCunningStrategy[i++]; if (newPiece != null && newPiece.length > count) { newPiece = new Ship(newPiece.pos, count,newPiece.isHorizontal); } myBoard.addShip(newPiece); count -= (newPiece == null ? 0 : newPiece.length); } catch (ArrayIndexOutOfBoundsException ignored) { } catch (IllegalArgumentException ignored) {} } setBoard (myBoard); }

21 Case Study The Battleship Game : Intra-component security public class Player { private Board{P1->C;P1<-C} board; public void setBoard(Board{P1->C;P1<-C} board) { this.board = board; } public void init(int nbShips) { int numCovered = 0; for (int j = 1; j < nbShips+1 ; j++){ numCovered += j; } final Ship[] myCunningStrategy = { new Ship(new Coordinate(1, 1), 1, true), new Ship(new Coordinate(1, 3), 2, false), }; Board myBoard = new Board(); int i = 0; for (int count = numCovered; count > 0 && myBoard != null;) { try { Ship newPiece = myCunningStrategy[i++]; if (newPiece != null && newPiece.length > count) { newPiece = new Ship(newPiece.pos, count,newPiece.isHorizontal); } myBoard.addShip(newPiece); count -= (newPiece == null ? 0 : newPiece.length); } catch (ArrayIndexOutOfBoundsException ignored) { } catch (IllegalArgumentException ignored) {} } setBoard (myBoard); }

22 Case Study The Battleship Game : Intra-component security public class Player { private Board {P1->C;P1<-C} board; public void setBoard(Board{P1->C;P1<-C} board) { this.board = board; } public void init(int nbShips) { int numCovered = 0; for (int j = 1; j < nbShips+1 ; j++){ numCovered += j; } final Ship[] myCunningStrategy = { new Ship(new Coordinate(1, 1), 1, true), new Ship(new Coordinate(1, 3), 2, false), }; Board{P1->C;P1<-C} myBoard = new Board(); int i = 0; for (int count = numCovered; count > 0 && myBoard != null;) { try { Ship newPiece = myCunningStrategy[i++]; if (newPiece != null && newPiece.length > count) { newPiece = new Ship(newPiece.pos, count,newPiece.isHorizontal); } myBoard.addShip(newPiece); count -= (newPiece == null ? 0 : newPiece.length); } catch (ArrayIndexOutOfBoundsException ignored) { } catch (IllegalArgumentException ignored) {} } setBoard (myBoard); }

23 Case Study The Battleship Game : Intra-component security public class Player { private Board {P1->C;P1<-C} board; public void setBoard(Board{P1->C;P1<-C} board) { this.board = board; } public void init(int nbShips) { int numCovered = 0; for (int j = 1; j < nbShips+1 ; j++){ numCovered += j; } final Ship[] myCunningStrategy = { new Ship(new Coordinate(1, 1), 1, true), new Ship(new Coordinate(1, 3), 2, false), }; Board{P1->C;P1<-C} myBoard = new Board(); int i = 0; for (int count = numCovered; count > 0 && myBoard != null;) { try { Ship{P1->C;P1<-C} newPiece = myCunningStrategy[i++]; if (newPiece != null && newPiece.length > count) { newPiece = new Ship(newPiece.pos, count,newPiece.isHorizontal); } myBoard.addShip(newPiece); count -= (newPiece == null ? 0 : newPiece.length); } catch (ArrayIndexOutOfBoundsException ignored) { } catch (IllegalArgumentException ignored) {} } setBoard (myBoard); }

24 Case Study The Battleship Game : Intra-component security public class Player { private Board {P1->C;P1<-C} board; public void setBoard(Board{P1->C;P1<-C} board) { this.board = board; } public void init(int nbShips) { int numCovered = 0; for (int j = 1; j < nbShips+1 ; j++){ numCovered += j; } final Ship{P1->C;P1<-C}[] myCunningStrategy = { new Ship(new Coordinate(1, 1), 1, true), new Ship(new Coordinate(1, 3), 2, false), }; Board{P1->C;P1<-C} myBoard = new Board(); int i = 0; for (int count = numCovered; count > 0 && myBoard != null;) { try { Ship{P1->C;P1<-C} newPiece = myCunningStrategy[i++]; if (newPiece != null && newPiece.length > count) { newPiece = new Ship(newPiece.pos, count,newPiece.isHorizontal); } myBoard.addShip(newPiece); count -= (newPiece == null ? 0 : newPiece.length); } catch (ArrayIndexOutOfBoundsException ignored) { } catch (IllegalArgumentException ignored) {} } setBoard (myBoard); }

Outline  CIF Specification  System representation  System security : Inter and Intra component  CIF Transformation  CIF ADL  ADL Generation  Code Generation  Case study : The battleship game  Conclusion and Future Work 25

26 Conclusion  CIF  Component-based model  Builds distributed systems secure by construction  User specifies security requirements  At a high level of abstraction  Association of labels to attributes and ports of the component  Tools to automate security implementation  Inside a component : Generation of JIF code  Between components Insertion of cryptographic components

27 Future Work  Key distribution  Secure deployment  Safe reconfiguration  Privacy

Thank you for your attention Lilia Sfaxi DCS Days - 26/03/2009