Disjunction Category Labels
Deian Stefan, Alejandro Russo, David Mazières, John Mitchell NordSec 2011
Disjunction Category Labels Deian Stefan, Alejandro Russo, David - - PowerPoint PPT Presentation
Disjunction Category Labels Deian Stefan, Alejandro Russo, David Mazires, John Mitchell NordSec 2011 Motivating Example Bob Speadsheet WebTax Public Network Proprietary DB Motivating Example Bob does not trust WebTax WebTax can
Deian Stefan, Alejandro Russo, David Mazières, John Mitchell NordSec 2011
Proprietary DB Public Network
WebTax Speadsheet
Bob
➤ WebTax can exfiltrated his data
➤ Bob can learn proprietary
information by inspecting code
leaks due to bugs
Proprietary DB Public Network
WebTax Speadsheet
Bob
➤ WebTax can exfiltrated his data
➤ Bob can learn proprietary
information by inspecting code
leaks due to bugs
Proprietary DB Public Network
WebTax Speadsheet
Bob
➤ WebTax can exfiltrated his data
➤ Bob can learn proprietary
information by inspecting code
leaks due to bugs
Proprietary DB Public Network
WebTax Speadsheet
Bob
➤ WebTax can exfiltrated his data
➤ Bob can learn proprietary
information by inspecting code
leaks due to bugs
Proprietary DB Public Network
WebTax Speadsheet
Bob
➤ WebTax can exfiltrated his data
➤ Bob can learn proprietary
information by inspecting code
leaks due to bugs
Proprietary DB Public Network
WebTax Speadsheet
Bob
How do we address security in the presence of mutual-distrust?
➤ Confidentiality: prevent unwanted leaks ➤ Integrity: prevent flows to critical operations
➤ Policies specify where data can flow
Proprietary DB Public Network
WebTax Speadsheet
Bob
Policy:
Policy:
WebTax author cannot be exfiltrated to network
➤ Associating a label with every piece of data
➤ E.g., Bob’s data cannot flow to network ⋢
WebTax
WebTax
⊑ ?
➤ Associating a label with every piece of data
➤ E.g., Bob’s data cannot flow to network ⋢
WebTax
⋢
➤ Associating a label with every piece of data
➤ E.g., Bob’s data cannot flow to network ⋢
➤ DLM, Asbestos/HiStar, DStar, Flume, etc. all
present their own label format
decentralized label format ➠ DC Labels
➤ Components impose restrictions on data flow
➤ S and I are minimal (sorted) formulas in CNF ➤ Neither S nor I contain negated terms
➤ Specifies principals allowed or whose consent
is necessary to observe the data
➤ Specifies principals that created or are
allowed to modify the data
Proprietary DB Public Network
WebTax Speadsheet
Bob
Policy:
Policy:
WebTax author
Proprietary DB Public Network
WebTax Speadsheet
Bob
Policy:
Policy:
WebTax author 〈{Bob}, {Bob}〉 〈{Preparer}, {Preparer}〉
Proprietary DB Public Network
WebTax Speadsheet
Bob
Policy:
Policy:
WebTax author 〈{Bob}, {Bob}〉 〈{Preparer}, {Preparer}〉
Bob created & vouches for data Preparer created & vouches for data
Policy: created/modified by Bob or Alice
Policy I:
Policy II:
User (group) Policy:
consent the User group (or vice versa)
Policy: created/modified by Bob or Alice
Policy I:
Policy II:
User (group) Policy:
consent the User group (or vice versa)
Policy: created/modified by Bob or Alice
“categories”
➤ Disjunction ➠ allows more readers ➤ Conjunction ➠ more restrictions ∴ more secret
➤ Disjunction ➠ allows more writers ➤ Conjunction ➠ more restrictions ∴ trustworthy
… …
➤ it accumulates more secrecy restrictions ➤ it losses integrity restrictions
➤ it accumulates more secrecy restrictions ➤ it losses integrity restrictions
Principal’s whose consent is needed to observe S2 must include those of S1
➤ it accumulates more secrecy restrictions ➤ it losses integrity restrictions
Principal’s whose consent is needed to observe S2 must include those of S1 Dual of secrecy. I2 must be less restricting than I1
Secrecy 〈{Alice⋁Bob}, True〉 〈{Alice⋁Bob⋁Charlie}, True〉 〈{Alice⋀Bob}, True〉 〈{Alice}, True〉 〈{Alice⋁Bob}, True〉 〈{Alice⋀Dan}, True〉
Secrecy 〈{Alice⋁Bob}, True〉 〈{Alice⋁Bob⋁Charlie}, True〉
〈{Alice⋀Bob}, True〉 〈{Alice}, True〉 〈{Alice⋁Bob}, True〉 〈{Alice⋀Dan}, True〉
Secrecy 〈{Alice⋁Bob}, True〉 〈{Alice⋁Bob⋁Charlie}, True〉
〈{Alice⋀Bob}, True〉 〈{Alice}, True〉 〈{Alice⋁Bob}, True〉 〈{Alice⋀Dan}, True〉
Secrecy 〈{Alice⋁Bob}, True〉 〈{Alice⋁Bob⋁Charlie}, True〉
〈{Alice⋀Bob}, True〉 〈{Alice}, True〉
〈{Alice⋁Bob}, True〉 〈{Alice⋀Dan}, True〉
Integrity 〈True, {Alice}〉 〈True, {Alice⋀Bob}〉 〈 True, {Alice}〉 〈True, {Alice⋁Bob}〉 〈True, {Alice⋁Bob}〉 〈True, {Alice⋁Bob⋁Charlie}〉
Integrity 〈True, {Alice}〉 〈True, {Alice⋀Bob}〉 〈 True, {Alice}〉 〈True, {Alice⋁Bob}〉 〈True, {Alice⋁Bob}〉 〈True, {Alice⋁Bob⋁Charlie}〉
Integrity 〈True, {Alice}〉 〈True, {Alice⋀Bob}〉 〈 True, {Alice}〉 〈True, {Alice⋁Bob}〉
〈True, {Alice⋁Bob}〉 〈True, {Alice⋁Bob⋁Charlie}〉
Integrity 〈True, {Alice}〉 〈True, {Alice⋀Bob}〉
〈 True, {Alice}〉 〈True, {Alice⋁Bob}〉
〈True, {Alice⋁Bob}〉 〈True, {Alice⋁Bob⋁Charlie}〉
➤ Dual of join: 〈S1, I1〉 ⊓ 〈S2, I2〉 = 〈S1⋁S2, I1⋀I2〉
〈S1, I1〉 ⊔ 〈S2, I2〉 = 〈S1⋀S2, I1⋁I2〉
➤ Dual of join: 〈S1, I1〉 ⊓ 〈S2, I2〉 = 〈S1⋁S2, I1⋀I2〉
〈S1, I1〉 ⊔ 〈S2, I2〉 = 〈S1⋀S2, I1⋁I2〉
Need consent of principals in S1 and S2 to observe data
➤ Dual of join: 〈S1, I1〉 ⊓ 〈S2, I2〉 = 〈S1⋁S2, I1⋀I2〉
〈S1, I1〉 ⊔ 〈S2, I2〉 = 〈S1⋀S2, I1⋁I2〉
Need consent of principals in S1 and S2 to observe data Principals of I1 or I2 could have created the data
elements:
➤ ⊤ = 〈False, True〉 ➤ ⊥ = 〈True, False〉
⊤ ⊥
〈True, True〉
⊑ ⊑
Proprietary DB Public Network
WebTax Speadsheet
Bob
〈{Preparer}, {Preparer}〉 〈{Bob}, {Bob}〉 〈True, True〉 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉
Public Network
WebTax
Bob
〈{Bob}, {Bob}〉 〈True, True〉 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉
Public Network
WebTax
Bob
〈{Bob}, {Bob}〉 〈True, True〉 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉
No leak!
Public Network
WebTax
Bob
〈{Preparer⋀Bob}, {Preparer⋁Bob}〉
〈{Bob}, {Bob}〉 〈True, True〉
No leak! Overly restrictive!
releasing information
➤ E.g., WebTax needs to declassify data for Bob
privileges corresponding to the principals
➤ Can declassify & endorse data using ⊑P relation
“can-flow-to given privileges p”
➤ remove a principal in P from the secrecy
component of a label ➠ declassification
➤ add a principal in P to an integrity
component of a label ➠ endorsement
Proprietary DB Public Network
WebTax Speadsheet
Bob
〈{Bob}, {Bob}〉 〈{Preparer}, {Preparer}〉 〈True, True〉 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉 {Bob} {Preparer}
Proprietary DB Public Network
WebTax Speadsheet
Bob
〈{Bob}, {Bob}〉 〈{Preparer}, {Preparer}〉 〈True, True〉 Privilege to declassify Bob’s data & endorse data on his behalf Privilege to declassify Preparer’s data 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉 {Bob} {Preparer}
Proprietary DB Public Network
WebTax Speadsheet
Bob
〈{Bob}, {Bob}〉 〈{Preparer}, {Preparer}〉 〈True, True〉 Privilege to declassify Bob’s data & endorse data on his behalf Privilege to declassify Preparer’s data 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉 {Bob} {Preparer}
Proprietary DB Public Network
WebTax Speadsheet
Bob
〈{Bob}, {Bob}〉 〈{Preparer}, {Preparer}〉 〈True, True〉 Privilege to declassify Bob’s data & endorse data on his behalf Privilege to declassify Preparer’s data 〈{Preparer⋀Bob}, {Preparer⋁Bob}〉 {Bob} {Preparer}
Public Network
WebTax
Bob
〈{Bob}, {Bob}〉 〈True, True〉
No leak!
〈{Preparer⋀Bob}, {Preparer⋁Bob}〉 {Preparer}
➤ Principals are strings ➤ Categories are sets of principals ➤ Components are sets categories
➤ Prototype implementation that enforces IFC
for secrecy-only DC Labels (a la Curry- Howard) with no compiler modifications!
➤ Formalized using propositional logic ➤ Proved several security properties ➤ Showed their use in common design patterns ➤ Presented two Haskell implementations
➤ Model is simple & sound ➤ Allows for specifying complex policies ➤ Decentralized
$> cabal install dclabel www.scs.stanford.edu/~deian/dclabels