40
Semantic program analysis for software safety and security Thomas Jensen IRISA June 26, 2007 Thomas Jensen Software security 1 / 32

Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Semantic program analysisfor

software safety and security

Thomas Jensen

IRISA

June 26, 2007

Thomas Jensen Software security 1 / 32

Page 2: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Outline of the talkI Cryptographic protocols

I Mobile code security

Thomas Jensen Software security 2 / 32

Page 3: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Computer-assisted Security Analysis

Plan

1 Computer-assisted Security Analysis

2 Cryptographic protocol verification

3 Program analysis for Software security

4 Certificates for secure mobile code

Thomas Jensen Software security 3 / 32

Page 4: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Computer-assisted Security Analysis

Software safety and security

Cryptographic protocol verificationI proper use of cryptographic primitivesI examine all accessible to prove confidentiality

Validating access control to data and resources in Java softwareI using Java stack inspection for access control,I using the Java Card firewall,I using the Java MIDP security architecture for embedded devices

Checking for buffer overflows and data race conditions

Thomas Jensen Software security 4 / 32

Page 5: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Computer-assisted Security Analysis

Semantic program analysis

The goals of static program analysisI To prove properties about the run-time behaviour of a programI In a fully automatic wayI Without actually executing this programI Accepting to give approximate answers

Solid foundations for designing an analyserI Abstract Interpretation gives a guideline

I to formalise analysesI to prove their soundness with respect to the semantics of the programming

languageI Resolution of constraints on lattices by iteration and symbolic

computation

Thomas Jensen Software security 5 / 32

Page 6: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Computer-assisted Security Analysis

Computing reachable states

a

b

d

e

f

c

h

i

j

g...

...

...

...

t

fo

q

?y

aa

zz

approximation unsafe statesreachable states

tree automata

Thomas Jensen Software security 6 / 32

Page 7: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Computer-assisted Security Analysis

IRISA-related application domains

Smart card (Java Card) softwareI data flow analysis of Java Card applets

I array bounds check, firewall analysis, resource usageI test case generation for a Java Card VM

Digital Rights ManagementI Verification of the Thomson R&D “Smart Right”

protocol for domestic networksI “view-once” properties for “Video-on-Demand”

Mobile telephones (Java MIDP)I semantic modeling of interactive navigation graphs ;I verifying the access control to resources (SMS,

confidential data) in applets.

Thomas Jensen Software security 7 / 32

Page 8: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Plan

1 Computer-assisted Security Analysis

2 Cryptographic protocol verification

3 Program analysis for Software security

4 Certificates for secure mobile code

Thomas Jensen Software security 8 / 32

Page 9: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Cryptographic protocols

“Alice and Bob”-style protocol specificationThe Diffie-Hellman example

1 - A ↪→ B : GNa

2 - B ↪→ A : GNb K = (GNa)Nb = (GNb)Na

3 - A ↪→ B : {Nsecret}K

“Man in the middle” attack1 - A ↪→ I : GNa

2 - I ↪→ B : GNi

3 - B ↪→ I : GNb K2 = (GNb)Ni

4 - I ↪→ A : GNi K1 = (GNi)Na

5 - A ↪→ I : {secret}K1

6 - I ↪→ B : {secret}K2

Thomas Jensen Software security 9 / 32

Page 10: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Cryptographic protocols

“Alice and Bob”-style protocol specificationThe Diffie-Hellman example

1 - A ↪→ B : GNa

2 - B ↪→ A : GNb K = (GNa)Nb = (GNb)Na

3 - A ↪→ B : {Nsecret}K

“Man in the middle” attack1 - A ↪→ I : GNa

2 - I ↪→ B : GNi

3 - B ↪→ I : GNb K2 = (GNb)Ni

4 - I ↪→ A : GNi K1 = (GNi)Na

5 - A ↪→ I : {secret}K1

6 - I ↪→ B : {secret}K2

Thomas Jensen Software security 9 / 32

Page 11: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Protocol verification

Manual search for attacksI Requires an expertI Long and costly process

Security proofs in a computational modelI Complexity-based proofsI Offer the best guaranteesI Very little automation

Verification with the symbolic Dolev-Yao modelI Idealised model of cryptographyI Fully automated attack detectionI Semi-automatic security proofsI Some proofs carry over to the computational model

Thomas Jensen Software security 10 / 32

Page 12: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Symbolic specification and verification

Protocol specificationI Formal

I Done after design!⇒ Protocol completely finished and known

I In order to prove classical propertiesEssentially confidentiality and authentication

Automatic protocol verificationI Detecting attacks that violate desired properties

I Prove absence of attacks for an un-bounded number ofI agentsI interleaved sessionsI simple intruder operations

Thomas Jensen Software security 11 / 32

Page 13: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Symbolic specification and verification

Protocol specificationI Formal

I Done after design!⇒ Protocol completely finished and known

I In order to prove classical propertiesEssentially confidentiality and authentication

Automatic protocol verificationI Detecting attacks that violate desired properties

I Prove absence of attacks for an un-bounded number ofI agentsI interleaved sessionsI simple intruder operations

Thomas Jensen Software security 11 / 32

Page 14: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Protocol specification languages

Various formats existsI ProVerif [Blanchet]I Prouve [Kremer, Laknech, Treinen]I AVISPA (HLPSL) [Armando, et col.]

Alice Bobrole alice (A,B: agent, ...)

local State: nat, Na,Nb: text

init State:= 0

transition

0. State=0 /\ RCV(start) =|>

State’:= 2 /\ Na’ := new()

/\ SND({Na’.A}_Kb)

/\ secret(Na’,na,{A,B})

2. State=2 /\ RCV({Na.Nb’}_Ka) =|>

State’:= 4 /\ SND({Nb’}_Kb)

end role

role bob(A, B: agent, ...)

local State : nat, Na,Nb: text

init State:= 1

transition

1. State= 1 /\ RCV({Na’.A}_Kb) =|>

State’:= 3 /\ Nb’ := new()

/\ SND({Na’.Nb’}_Ka)

/\ secret(Nb’,nb,{A,B})

3. State= 3 /\ RCV({Nb’}_Kb) =|>

State’:= 5 /\

end role

Thomas Jensen Software security 13 / 32

Page 15: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Industrial protocol development

Protocol specificationI partial: mixed up with development

I Informal: documents for design/discussion/patents

I Ad-hoc: specific deployment environment

Protocol verificationI Non-standard properties (Ex. “anonymous authentication”)I Rare because formal specification is already a lot of work!

I Formal verification a posteriori is not enough

I Verification during development would be ideal

Thomas Jensen Software security 14 / 32

Page 16: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Major tools for industrial protocol specificationI Word for technical documents and patentsI White board and Powerpoint for design

Thomas Jensen Software security 15 / 32

Page 17: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Cryptographic protocol verification

Reconcile formalism and intuition

role alice (A,B: agent, ...)

local State: nat, Na,Nb: text

init State:= 0

transition

0. State=0 /\ RCV(start) =|>

State’:= 2 /\ Na’ := new()

/\ SND({Na’.A}_Kb)

/\ secret(Na’,na,{A,B})

2. State=2 /\ RCV({Na.Nb’}_Ka) =|>

State’:= 4 /\ SND({Nb’}_Kb)

end role

The solution: AVISPA + SPAN

Thomas Jensen Software security 17 / 32

Page 18: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Plan

1 Computer-assisted Security Analysis

2 Cryptographic protocol verification

3 Program analysis for Software security

4 Certificates for secure mobile code

Thomas Jensen Software security 18 / 32

Page 19: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Mobile code dilemma

I The untrusted code may cause damage to the systemI internal structure corruptionI illegal memory access

I The untrusted code may use too many resourcesI CPU, memory, SMS...

Thomas Jensen Software security 19 / 32

Page 20: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Mobile code dilemma

Safe ?

Untrusted code Host system

I The untrusted code may cause damage to the systemI internal structure corruptionI illegal memory access

I The untrusted code may use too many resourcesI CPU, memory, SMS...

Thomas Jensen Software security 19 / 32

Page 21: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Bubble sort

class BubbleSort {public static void main(String[] argv ) {int i,j,tmp,n;0: n = 20;

1: int[] t = new int[n];2: Input.init();

3: for (i=0;i<n;i++) {4: t[i] = Input.read_int();

5: };

6: Tab.print_tab(t);

7: for (i=0; i<n-1; i++) {8: for (j=0; j<n-1-i; j++)9: if (t[j+1] < t[j]) {10: tmp = t[j];

11: t[j] = t[j+1];

12: t[j+1] = tmp;

13: }

14: };

15: Tab.print_tab(t);

}}

Thomas Jensen Software security 21 / 32

Page 22: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

class BubbleSort {public static void main(String[] argv ) {int i,j,tmp,n;// [j: U ; n: U ; i: U ; t: U ; tmp: U ]

0: n = 20;

// [j: U ; n: [20,20] ; i: U ; t: U ; tmp: U]

1: int[] t = new int[n];// [j: U ; n: [20,20] ; i: U ; t: int[20,20] ; tmp: U]

2: Input.init();

// [j: U ; n: [20,20] ; i: U ; t: int[20 ,20] ; tmp: U]

3: for (i=0;i<n;i++) {// [j: U ; n: [20,20] ; i: [0,19] ; t: int[20,20] ; tmp: U]

4: t[i] = Input.read_int();

// [j: U ; n: [20,20] ; i: [0,19] ; t: int[20,20] ; tmp: U]

5: };

// [j: U ; n: [20,20] ; i: [20,20] ; t: int[20,20] ; tmp: U]

6: Tab.print_tab(t);

// [j: U ; n: [20,20] ; i: [0,20] ; t: int[20,20] ; tmp: U]

7: for (i=0; i<n-1; i++) {// [j: U ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

8: for (j=0; j<n-1-i; j++)// [j: [0,18] ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

9: if (t[j+1] < t[j]) {// [j: [0,18] ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

10: tmp = t[j];

...

}} Thomas Jensen Software security 23 / 32

Page 23: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

class BubbleSort {public static void main(String[] argv ) {int i,j,tmp,n;// [j: U ; n: U ; i: U ; t: U ; tmp: U ]

0: n = 20;

// [j: U ; n: [20,20] ; i: U ; t: U ; tmp: U]

1: int[] t = new int[n];// [j: U ; n: [20,20] ; i: U ; t: int[20,20] ; tmp: U]

2: Input.init();

// [j: U ; n: [20,20] ; i: U ; t: int[20 ,20] ; tmp: U]

3: for (i=0;i<n;i++) {// [j: U ; n: [20,20] ; i: [0,19] ; t: int[20,20] ; tmp: U]

4: t[i] = Input.read_int();

// [j: U ; n: [20,20] ; i: [0,19] ; t: int[20,20] ; tmp: U]

5: };

// [j: U ; n: [20,20] ; i: [20,20] ; t: int[20,20] ; tmp: U]

6: Tab.print_tab(t);

// [j: U ; n: [20,20] ; i: [0,20] ; t: int[20,20] ; tmp: U]

7: for (i=0; i<n-1; i++) {// [j: U ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

8: for (j=0; j<n-1-i; j++)// [j: [0,18] ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

9: if (t[j+1] < t[j]) {// [j: [0,18] ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

10: tmp = t[j];

...

}} Thomas Jensen Software security 23 / 32

Page 24: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

class BubbleSort {public static void main(String[] argv ) {int i,j,tmp,n;// [j: U ; n: U ; i: U ; t: U ; tmp: U ]

0: n = 20;

// [j: U ; n: [20,20] ; i: U ; t: U ; tmp: U]

1: int[] t = new int[n];// [j: U ; n: [20,20] ; i: U ; t: int[20,20] ; tmp: U]

2: Input.init();

// [j: U ; n: [20,20] ; i: U ; t: int[20 ,20] ; tmp: U]

3: for (i=0;i<n;i++) {// [j: U ; n: [20,20] ; i: [0,19] ; t: int[20,20] ; tmp: U]

4: t[i] = Input.read_int();

// [j: U ; n: [20,20] ; i: [0,19] ; t: int[20,20] ; tmp: U]

5: };

// [j: U ; n: [20,20] ; i: [20,20] ; t: int[20,20] ; tmp: U]

6: Tab.print_tab(t);

// [j: U ; n: [20,20] ; i: [0,20] ; t: int[20,20] ; tmp: U]

7: for (i=0; i<n-1; i++) {// [j: U ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

8: for (j=0; j<n-1-i; j++)// [j: [0,18] ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

9: if (t[j+1] < t[j]) {// [j: [0,18] ; n: [20,20] ; i: [0,18] ; t: int[20,20] ; tmp: U ]

10: tmp = t[j];

...

}} Thomas Jensen Software security 23 / 32

Page 25: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Interactive resource control on Java telephones

grant(p); consume(p)

grant(p); consume(p)

grant(p1, ∞)

consume(p1) grant(p2, 1)

consume(p2)

In the current MIDP model

I Permission request (one-shot) appear just before the actual use of thepermission

Thomas Jensen Software security 24 / 32

Page 26: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Interactive resource control on Java telephones

grant(p); consume(p)

grant(p); consume(p)

grant(p1, ∞)

consume(p1) grant(p2, 1)

consume(p2)

In the current MIDP model

I Permission request (one-shot) appear just before the actual use of thepermission

Thomas Jensen Software security 24 / 32

Page 27: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Program analysis for Software security

Access control for interactive devicesAccess control model for Java MIDP(mobile phones):I permissions based on origin

(operator, public,. . . )I interactive access control to

resources (SMS, http, . . . )I security screens for granting

“one-shot” permissions

pinit[http 7→ (∗, ∞); https 7→ (site, 1); file 7→ (/wallet/id, 1)]

consume(http(site))

consume(http(∗))

consume(file(/wallet/id))

consume(http(site)) grant(file(/wallet/visa#), 1)

consume(file(/wallet/visa#))

consume(https(site))

2.

3.3.

4. 5.

1. 1.

Proposal: a more flexible access control modelI separating permission granting from consumptionI permissions with multiplicities (“the applet can send 5 SMSs”)I basic security policy to check:

an applet will not attempt to use permissions it does not have

I a static permission flow analysis to check this

Thomas Jensen Software security 25 / 32

Page 28: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Plan

1 Computer-assisted Security Analysis

2 Cryptographic protocol verification

3 Program analysis for Software security

4 Certificates for secure mobile code

Thomas Jensen Software security 26 / 32

Page 29: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Mobile code dilemmas...

Safe ?

Untrusted code Host system

I The untrusted code may cause damage to the systemI internal structure corruptionI illegal memory access

I The untrusted code may use too many resourcesI CPU, memory, SMS...

Thomas Jensen Software security 27 / 32

Page 30: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code

Code

CPU

certificateverifier

certifyingprover

Proof

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 31: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code: standard framework

Code

CPU

certificateverifier

certifyingprover

Proof

I Technique introduced by George Necula and PeterLee

I Standard PCC architectures are based on axiomaticsemantics

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 32: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code: standard framework

Code

CPU

certificateverifier

certifyingprover

Proof

Annotations

I Technique introduced by George Necula and PeterLee

I Standard PCC architectures are based on axiomaticsemantics

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 33: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code: standard framework

Code

CPU

certificateverifier

certifyingprover

Proof

Annotations

VCGen

VCGen

I Technique introduced by George Necula and PeterLee

I Standard PCC architectures are based on axiomaticsemantics

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 34: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code: standard framework

Code

CPU

certificateverifier

certifyingprover

λ-term

Annotations

VCGen

VCGen

I Technique introduced by George Necula and PeterLee

I Standard PCC architectures are based on axiomaticsemantics

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 35: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code: standard framework

Code

CPU

λ-termtype checker

certifyingprover

λ-term

Annotations

VCGen

VCGen

I Technique introduced by George Necula and PeterLee

I Standard PCC architectures are based on axiomaticsemantics

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 36: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof carrying code

Code

CPU

certificateverifier

certifyingprover

Proof

PCC requirements:I the certificate must be smallI the verifier must be efficientI soundness of the certifying prover is not criticalI soundness of the verifier is critical

I What about extracting a certified verifier ?

Thomas Jensen Software security 28 / 32

Page 37: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

The weakest link is . . . the checker

Producer

codecertificate

Consumer

Checker

Program semanticsSafety policy

Rejected

Can run

Thomas Jensen Software security 29 / 32

Page 38: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Proof-carrying code from abstract interpretation

Producer

certifiedverifier

untrustedfixpoint solver

untrustedcompressor

Consumer

semantics+

securitypolicy

certifiedverifier

certified (fixpoint) verifier

(Coq file)

Coq kernel+ Coq extraction

certificateextractedverifier

Safe ?

fixpoint

program

certificate

Thomas Jensen Software security 30 / 32

Page 39: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Conclusions

Software security is a open-ended challenge for developers.I cryptographic protocols are complex distributed algorithms,I mobile code multiplies and make code inspection a major endeavour

Program analysis can helpI in the development phase, to understand consequences of design choicesI in the deployment phase, to communicate trust in mobile code

I by generating program certificates automaticallyI by providing machine-checkable certificate checkers

Logic-based software certificatesI exist for certain verifications (on-device byte code verification)I have potential to cover many more security-related properties

Thomas Jensen Software security 31 / 32

Page 40: Semantic program analysis for software safety and securityvideos.rennes.inria.fr/irisatech/10ansIrisaTech/jensen/IRISA_Thomas... · Semantic program analysis The goals of static program

Certificates for secure mobile code

Semantic program analysisfor

software safety and security

Thomas Jensen

IRISA

June 26, 2007

Thomas Jensen Software security 32 / 32