analyzing security architectures
play

Analyzing Security Architectures Marwan Abi-Antoun Jeffrey M. - PowerPoint PPT Presentation

Analyzing Security Architectures Marwan Abi-Antoun Jeffrey M. Barnes Dept. of Computer Science Inst. for Software Research Wayne State University Carnegie Mellon University mabiantoun@wayne.edu jmbarnes@cs.cmu.edu Acknowledgements: David


  1. Analyzing Security Architectures Marwan Abi-Antoun Jeffrey M. Barnes Dept. of Computer Science Inst. for Software Research Wayne State University Carnegie Mellon University mabiantoun@wayne.edu jmbarnes@cs.cmu.edu Acknowledgements: David Garlan, Kirti Garg and Bradley Schmerl at Carnegie Mellon University. Raed Almomani at Wayne State University. 1

  2. Problem background • Engineers use tools like data flow diagrams (DFDs) to analyze security properties of software systems • Often these are constructed from developers’ recollection of how a system works, with little automated support • This architectural representation may fail to capture all communication present in the system ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 2

  3. Architecture conformance • In essence, this is a problem of architecture conformance • Want to reason at an architectural level but relate it to code at the same time Consumer Provider Engine Constraint: Untrusted components Architecture cannot access protected data Constraint: Untrusted components Code cannot access protected data class Consumer { class Provider { class Engine { ... ... ... } } } ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 3

  4. Security architectures as runtime architectures • A security architecture is an example of a runtime architecture • Shows runtime components such as objects and data stores • Shows runtime connectors such as communication links and points-to relations • May have many instances of a single component type • Contrast with static code views such as class diagrams ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 4

  5. The challenge of analyzing security architectures • Tools for analyzing conformance of runtime architectures are immature compared to those for code architectures • A security analysis must consider the worst case , not the typical case, of possible component communication • Demands static analysis • Dynamic analysis can tell us about only a limited number of runs ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 5

  6. Our contribution • An architecture-centric approach, S ECORIA , that enables reasoning at the level of a security runtime architecture , and relating it to code at the same time • Can enforce both code-level and global architectural constraints ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 6

  7. Evaluation • Validated S ECORIA on CryptoDB , a secure database system designed by a security expert • Database architecture that provides cryptographic protections against unauthorized access • Includes 3,000-line sample implementation in Java ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 7

  8. Approach ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 8

  9. Overview of S ECORIA • Specialization of S CHOLIA [Abi-Antoun & Aldrich, OOPSLA’09] , which analyzes conformance between object-oriented code and a hierarchical, target runtime architecture • S ECORIA is an iterative process with two main stages: conformance and enforcement ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 9

  10. Overview of S ECORIA Compare Built Conformance Designed Enriched Enrich Architecture View Architecture Architecture with types, ? properties, & Abstract constraints Object Graph Trace Violations Trace Discrepancies Conformance stage Enforcement stage Extract Ownership Annotations @Domains({"OWNED", … }) class LocalKeyStore { … } Code-Level Annotate Constraints expressed with Code domain links class LocalKeyStore { … } Annotate ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 10

  11. Conformance stage: annotate; extract object graph Compare Built Conformance Designed Enriched Enrich Architecture View Architecture Architecture with types, ? properties, & Abstract constraints Object Graph Trace Violations Trace Discrepancies Extract Ownership Annotations @Domains({"OWNED", … }) class LocalKeyStore { … } Code-Level Annotate Constraints expressed with Code domain links class LocalKeyStore { … } Annotate ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 11

  12. At runtime, an object-oriented system appears as a Runtime Object Graph (ROG) Object relation Object • A node represents a runtime object • An edge represents a points-to relation ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 12

  13. Abstract objects into “components” Component Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 13

  14. Abstract relations between components Connector Component Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 14

  15. Organize components into groups/tiers Connector Component Group/Tier Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 15

  16. Make some components part of others Connector Component Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 16

  17. Make some components part of others Connector Component Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 17

  18. Make some components part of others Connector Component Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 18

  19. Make some components part of others Connector Hierarchy Component Object relation Object ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 19

  20. Annotate code and extract object graph • Problem: Architectural hierarchy not readily observable in arbitrary code • To solve this, we use annotations to capture architectural intent • Developer picks top-level entry point • Use annotations to impose an ownership hierarchy on objects • Annotations are minimally invasive, modular, and statically typecheckable ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 20

  21. Ownership domains are groups of objects [Aldrich and Chambers, ECOOP’04] [Krishnaswami and Aldrich, PLDI’05] LocalKey OWNED KEYS keys: key: List<LocalKey> LocalKey object: @Domains({“ OWNED ”, “ KEYS ”}) Object Type class LocalKeyStore { Type Type @Domain(“ OWNED ”) List<LocalKey> keys; @Domain(“ KEYS ”) LocalKey key; Declarations ... are simplified } • Ownership domain = conceptual group of objects • Each object in exactly one domain ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 21

  22. Annotations define two kinds of object hierarchy • A public domain provides logical containment : an object is conceptually “part of” another • Having access to an object also gives access to objects inside its public domains • A private domain provides strict encapsulation • E.g., a public method cannot return an alias to an object in a private domain, even though Java allows returning an alias to a private field ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 22

  23. Examples of object hierarchy keys(+): ArrayList<LocalKey> localKey: kekSpec(+): OWNED LocalKey SecretKeySpec keyStore: LocalKeyStore KEYS • LocalKeyStore has a public domain to hold LocalKey objects • LocalKeyStore stores the ArrayList of LocalKey objects in a private domain ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 23

  24. Conformance stage: Abstract object graph Compare Built Conformance Designed Enriched Enrich Architecture View Architecture Architecture with types, ? properties, & Abstract constraints Object Graph Trace Violations Trace Discrepancies Extract Ownership Annotations @Domains({"OWNED", … }) class LocalKeyStore { … } Code-Level Annotate Constraints expressed with Code domain links class LocalKeyStore { … } Annotate ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 24

  25. Object graph vs. target architecture • Often, object graph not isomorphic to architect’s intended architecture • So abstract and represent in component-and-connector view CryptoDB object graph CryptoDB target architecture keys(+): ArrayList<LocalKey> localKey: kekSpec(+): OWNED LocalKey SecretKeySpec keyStore: LocalKeyStore KEYS ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 25

  26. Represent abstracted object graph as component-and-connector (C&C) view object graph ↔ C&C view CryptoDB top-level object ↔ system KEYMANAGEMENT ↔ component object keyTool ↔ group domain ↔ provide port interface field reference ↔ use port KEYSTORAGE ↔ connector keyStore object relation ↔ representation substructure keyAlias ● Problem ● Approach ● Extract ● Abstract ● Analyze ● Enforce ● Conclusion 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend