Stateful Declassification Policies for Event-Driven Programs
Jul. 21, 2014•0 likes
0 likes
Be the first to like this
Show More
•883 views
views
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download to read offline
Report
Education
Presentation given at CSF 2014 on the paper "Stateful Declassification Policies for Event-Driven Programs". In essence we present declassification for Secure Multi Execution (SME).
What are we protecting?
5
Event-driven (reactive) programs:
All inputs to the program are events
Output is produced using API calls
What are we protecting?
6
Event-driven (reactive) programs:
All inputs to the program are events
Output is produced using API calls
Public outputPrivate input
Currently: Noninterference
7
𝐼 ≈ 𝐿 𝐼′ → 𝑂 ≈ 𝐿 𝑂′
Equal after high
input removed
low output identical
Security levels: H (private) and L (public)
Enforce using Secure Multi Execution (SME)
Secure
Precise
The problem…
9
Noninterference is too strict!
Examples:
Leak only occurrence of key presses?
Leak specific shortcut keys only?
Leak approximate location (mouse, GPS)?
Policy specification
What does the policy define?
“The info leaked public observers”
We consider two cases:
1. Leaking approximate information about one event
2. Leaking aggregate or statistical info over several events
12
Policy specification
How to formally specify both cases?
Using a functional, declarative program.
On each input, define the (new) public info.
13
Leaking over one event Leaking over several events
(1) Event projection (2) Information release
1. Event projection
14
Leaks info about one event (stateless):
π ev n = Nothing | Project n′
Nothing : Event not visible to low observers
ev n′ : Low observers can depend on (ev n′)
Other events project to Nothing
1. Event projection
15
Leaks info about one event (stateless):
π ev n = Nothing | Project n′
Generalizes security labels:
Low event: 𝜋 𝑒𝑣 𝑛 = Project 𝑛
High event: 𝜋 𝑒𝑣 𝑛 = Nothing
And separation of content and presence:
Only presence: 𝜋 𝑒𝑣 𝑛 = Project 0
1. Event projection
16
Leaks info about one event (stateless):
π ev n = Nothing | Project n′
Must be idempotent to guarantee precision:
𝜋(𝜋 𝑒𝑣 𝑛 ) = 𝜋(𝑒𝑣 𝑛)
In line with the idea of removing sensitive info!
2. Information release
17
Leaks info about multiple events (stateful):
𝑟 𝑠, 𝑒𝑣 𝑛 = 𝑠′
, Unchanged | Release 𝑛′
𝑠, 𝑠′: old and new state
Release 𝑛′: low observers can depend on 𝑛′
Unchanged: no new info released
2. Information release
18
Leaks info about multiple events (stateful):
𝑟 𝑠, 𝑒𝑣 𝑛 = 𝑠′
, Unchanged | Release 𝑛′
Can specify type and initial value of the state:
State :: Bool = False
Released value is put on a release channel
Enforcement mechanism can obtain latest released value
2. Info release: example
19
Leak if shotcut key was used at least once
State :: Bool = False
Release function 𝑟:
Updated noninterference
20
Noninterference (old):
𝐼 ≈ 𝐿 𝐼′ → 𝑂 ≈ 𝐿 𝑂′
𝒟∗
𝐼 = all info low observers can depend
on according to policy 𝒟
Noninterference with declassification:
𝒟∗
𝐼 = 𝒟∗
𝐼′
→ 𝑂 ≈ 𝐿 𝑂′
Equal according to policy 𝒟 Low outputs identical
Access to release channel
36
Using annotations
Important remarks:
Annotations are seen as untrusted, security does not
depend on them (hence attacker cannot abuse them).
Only used to assure precision!
Idea: browser vendor sets default policies,
motivating programmers to use annotates.
Declassification in SME
37
Properties:
Security: OK!
Precision for projections: OK!
Full precision more tedious:
Program must run under expected policy
All leaks should happen through annotations
Projections are powerful!