Model-based Security Engineering: Models vs. Code Jan Jrjens - - PowerPoint PPT Presentation

model based security engineering models vs code
SMART_READER_LITE
LIVE PREVIEW

Model-based Security Engineering: Models vs. Code Jan Jrjens - - PowerPoint PPT Presentation

Model-based Security Engineering: Models vs. Code Jan Jrjens Department of Computing The Open University, GB http://www.umlsec.org Challenge: Security Security is holistic property: Attackers often circumvent (not: break) mechanisms.


slide-1
SLIDE 1

Model-based Security Engineering: Models vs. Code

Jan Jürjens

Department of Computing The Open University, GB http://www.umlsec.org

slide-2
SLIDE 2

Jan Jürjens, Open University: Model-based Security Engineering 2

Security is holistic property:

  • Attackers often circumvent

(not: break) mechanisms.

  • Transform (in)secure

components to secure systems ?

„Those who think that their problem can be solved by simply applying cryptography don`t understand cryptography and don`t understand their problem“ (B. Lampson / R. Needham).

Challenge: Security

slide-3
SLIDE 3

Jan Jürjens, Open University: Model-based Security Engineering 3

(UML) Models Requirements Source Code

Weave in Code-/ Testgen.

Reverse Engin.

Analyze against

Configurations

Gener. Verify. Configure

 Tool-supported, theoretically sound, efficient automated security design & analysis. Idea: Extract models from artefacts in development and use of software.

Model-based Security Engineering

slide-4
SLIDE 4

Jan Jürjens, Open University: Model-based Security Engineering 4

Requirements and use cases Abuse cases Security requirements Risk analysis External review Design Test plans Code Test results Field feedback Risk-based Security tests Static analysis (tools) Risk analysis Penetration testing Security breaks

[McGraw 2003]

Secure System Lifecycle

Model-based Security Engineering

Design: Encapsulate prudent security engineering rules. Analysis: Formally based, automated, efficient tools. Note: emphasis on high-level requirements.

slide-5
SLIDE 5

Jan Jürjens, Open University: Model-based Security Engineering 5

Model-based Security with UMLsec

Extension of the Unified Modeling Language (UML) for secure systems development.

  • evaluate UML models for security
  • encapsulate established rules of prudent

secure engineering

  • make available to developers not specialized

in secure systems

  • consider security requirements from

early design phases, in system context

  • can use in certification
slide-6
SLIDE 6

Jan Jürjens, Open University: Model-based Security Engineering 6

UMLsec

Insert recurring security requirements, adversary scenarios, security mecha- nisms as predefined markers. Use associated logical constraints to verify specifications using model checkers and ATPs based on formal semantics. Ensures that UML specification enforces the relevant security requirements wrt Dolev-Yao type adversaries.

[FASE01,UML02,FOSAD05,ICSE05]

slide-7
SLIDE 7

Jan Jürjens, Open University: Model-based Security Engineering 7

Example: Crypto-based Distributed System

A B

Adversary

m(x) Adversary knowledge: k-1, y, m(x) x return({z}k)

[argb,1,1 = x]

{z}k, z return({y::x}z)

Attacker may …

  • control system parts,
  • know data in advance,
  • intercept messages,
  • delete messages,
  • inject messages.

(cf. [Dolev, Yao 1982])

slide-8
SLIDE 8

Jan Jürjens, Open University: Model-based Security Engineering 8

Security Analysis in First-order Logic

Approximate adversary knowledge set from above: Predicate knows(E) meaning that adversary may get to know E during the execution of the system. E.g. secrecy requirement: For any secret s, check whether can derive knows(s) from model-generated formulas using automatic theorem prover.

[ICSE05]

slide-9
SLIDE 9

Jan Jürjens, Open University: Model-based Security Engineering 9

Cryptographic Expressions I

Exp: quotient of term algebra generated from sets Data, Keys, Var of symbols using

  • _::_ (concatenation), head(_), tail(_)
  • (_)-1 (inverse keys)
  • { _ }_ (encryption)
  • Dec_( ) (decryption)
  • Sign_( ) (signing)
  • Ext_( ) (extracting from signature)

under equations …

slide-10
SLIDE 10

Jan Jürjens, Open University: Model-based Security Engineering 10

Cryptographic Expressions II

∀∀ E,K. DecK

  • 1({E}K)=E

∀∀ E,K. ExtK(SignK

  • 1(E))=E

∀∀ E1,E2. head(E1::E2)=E1 ∀∀ E1,E2. tail(E1::E2)=E2

  • Associativity for ::.

Write E1::E2::E3 for E1::(E2::E3) and fst(E1::E2) for head(E1::E2) etc. Can include further crypto-specific primitives and laws (XOR, …).

slide-11
SLIDE 11

Jan Jürjens, Open University: Model-based Security Engineering 11

Example: Translation to Logic

knows(N)∧ knows(KC)∧ knows(SignKC

  • 1(C::KC))

∧ ∀init1,init2,init3.[knows(init1) ∧ knows(init2) ∧ knows(init3) ∧ snd(Extinit2(init3)) = init2 ) knows({SignKS

  • 1(…)}…) ∧ [knows(Sign…)]

∧ ∀resp1,resp2. […)...]]

slide-12
SLIDE 12

Jan Jürjens, Open University: Model-based Security Engineering 12

Analysis

Check whether can derive knows(s) e.g. using e-Setheo. Surprise: Yes !  Protocol does not preserve secrecy of s. Why ? Use Prolog- based attack generator.

slide-13
SLIDE 13

Jan Jürjens, Open University: Model-based Security Engineering 13

Man-in-the-Middle Attack

slide-14
SLIDE 14

Jan Jürjens, Open University: Model-based Security Engineering 14

e-Setheo: Proof that knows(s) not derivable. Note completeness of FOL (but also undecidability).

The Fix

slide-15
SLIDE 15

Jan Jürjens, Open University: Model-based Security Engineering 15

Security Analysis: Model or Code ?

Model: + earlier (less expensive to fix flaws) + more abstract  more efficient

  • more abstract  may miss attacks
  • programmers may introduce security flaws
  • even code generators, if not formally verified

Code: + „the real thing“ (which is executed)  Do both !

Surprise: Essentially no existing work (eg for crypto prots) !

slide-16
SLIDE 16

Jan Jürjens, Open University: Model-based Security Engineering 16

Code Analysis vs. Model Analysis

Options:

  • generate code from models

 currently not available in general

  • generate models from code

 next slides

  • create models and code manually and verify

code against models  later in this talk

slide-17
SLIDE 17

Jan Jürjens, Open University: Model-based Security Engineering 17

Generate control flow graph (e.g. aicall (Absint)). Transform to state machine:

trans(state,inpattern,condition,action,nextstate)

where action can be outpattern or localvar:=value.

Models from Code

[ASE05,ASE06]

slide-18
SLIDE 18

Jan Jürjens, Open University: Model-based Security Engineering 18

Real Life Challenges …

slide-19
SLIDE 19

Jan Jürjens, Open University: Model-based Security Engineering 19

Experiences

Can generate behavioral models from code (e.g. CFGs). Problem: too concrete  understanding + automated verification hard (even with annotations). Constructing abstract specifications from practical software is manually intensive.

slide-20
SLIDE 20

Jan Jürjens, Open University: Model-based Security Engineering 20

Code Analysis vs. Model Analysis

Options:

  • generate code from models

 currently not possible in general

  • generate models from code

 challenging

  • create models and code manually and verify

code against models  next slides

slide-21
SLIDE 21

Jan Jürjens, Open University: Model-based Security Engineering 21

Verify Code against Models

Assumption: Have textual specification. Then:

  • construct interface spec from textual spec
  • analyze interface spec for security
  • verify that software satisfies interface spec
slide-22
SLIDE 22

Jan Jürjens, Open University: Model-based Security Engineering 22

Model vs. Implementation

Implement

  • ation

Implement

  • ation

.java

Elements of connections Sent and received data „meaning“ „meaning“

compare meaning!

Backtrace assignments Defined during model creation Find Has

Abstract model

Equal?

[with David Kirscheneder ]

slide-23
SLIDE 23

Jan Jürjens, Open University: Model-based Security Engineering 23

p q g

Example: Interface spec of SSL

I) Identify program points: value (r), receive (p), guard (g), send (q)

II) Check guards enforced r

slide-24
SLIDE 24

Jan Jürjens, Open University: Model-based Security Engineering 24

Implementation

  • f SSL:

Identify Values

slide-25
SLIDE 25

Jan Jürjens, Open University: Model-based Security Engineering 25

public void write(OutputStream out) throws IOException { ... out.write(randomBytes); … }

public void write(OutputStream out) throws IOException { ... random.write(out); ... } ClientHello(… , Random random, ) { ... this.random = random; ... } ClientHello clientHello = new ClientHello(...,clientRandom,...);

Random clientRandom = new Random(...,session.random.generateSeed(28));

class SecureRandom (specified in: FIPS 140-2,RFC 1750) of package java.security Function: generateSeed Identify: randomBytes

2nd parameter of Random constructor called by ClientHello.write() 2nd parameter of ClientHello constructor

initialized in SSLSocket.doClientHandshake()

initialization of the used Random object via Handshake.write()

„meaning“

(in message ClientHello)

slide-26
SLIDE 26

Jan Jürjens, Open University: Model-based Security Engineering 26

Sending Messages

SSLSocket.doClientHandshake() ClientHello.write() Random.write() traverse CFG call of OutputStream. write() Handshake.write()

Automate this using patterns

ProtocolVersion.write()

slide-27
SLIDE 27

Jan Jürjens, Open University: Model-based Security Engineering 27

Guard g enforced by code? a) Generate runtime check for g at q from diagram: simple + effective, but performance penalty. b) Testing against checks (symbolic crypto for inequalities). c) Automated formal local verification: conditionals between p and q logically imply g (using ATP for FOL).

Checking Guards

[ICFEM02]

[ASE06]

p q g

slide-28
SLIDE 28

Jan Jürjens, Open University: Model-based Security Engineering 28

private void checkTrusted(X509Certificate[] chain, String authType) throws CertificateException { ... } public void verify(PublicKey key, String provider) throws CertificateException, ... { ... } private void doVerify(Signature sig,PublicKey key) throws CertificateException, ... { ... sig.initVerify(key); sig.update(tbsCertBytes); if (!sig.verify(signature)) {… throw new CertificateException ("signature not validated"); … } } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {… checkTrusted(chain, authType); }

Guard: checkServerTrusted()

calls checkTrusted() calls verify() for every member of certificate chain calls doVerify()

va.security.Signature Initializatize Update Verify verifies the signature“

„meaning “

slide-29
SLIDE 29

Jan Jürjens, Open University: Model-based Security Engineering 29

msg = Handshake.read(din, certType); session.trustManager.checkServerTrusted (peerCerts,suite.getAuthType()); msg = new Handshake(Handshake.Type.CLIENT_KEY_EXCHANGE, ckex); msg.write (dout, version); p q g try catch

  • nly possible way

without throwing exception

slide-30
SLIDE 30

Jan Jürjens, Open University: Model-based Security Engineering 30

Verification of Guards in Code

send: represents send command g: FOL formula with symbols msgn representing nth argument of message received before program fragment p is executed [d] p ²g : g checked in any execution of p initially satisfying d before any send write p ²g for [true] p ²g.

slide-31
SLIDE 31

Jan Jürjens, Open University: Model-based Security Engineering 31

Some Rules (Simplified)

slide-32
SLIDE 32

Jan Jürjens, Open University: Model-based Security Engineering 32

Tool Support

[UML04, FASE05,ICSE06]

slide-33
SLIDE 33

Jan Jürjens, Open University: Model-based Security Engineering 33

Some Applications

Analyzed designs / implementations / configurations for

  • biometry, smart-card or RFID

based identification

  • authentication (crypto protocols)
  • authorization (user permissions,

e.g. SAP systems) Analyzed security policies, e.g. for privacy regulations.

slide-34
SLIDE 34

Jan Jürjens, Open University: Model-based Security Engineering 34

Conclusion

Seemingly first approach to formally based security verification for crypto-based Java implementations. As far as possible automated and relatively efficient due to abstraction tailored to verification problem. Still many challenges to address – collaboration always welcome ! Don‘t miss my Tutorial on Tuesday and Experience Track Talk on Wednesday !

slide-35
SLIDE 35

Jan Jürjens, Open University: Model-based Security Engineering 35

IT Security

Overview

slide-36
SLIDE 36

Jan Jürjens, Open University: Model-based Security Engineering 36

Questions ?

More information (papers, slides, tool etc.): http://www.umlsec.org