Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based...

74
Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation through the GENI Initiative and under NSF grants OCI-1032873, CNS-0910653, 1243315, 1330659, and by RENCI.

Transcript of Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based...

Page 1: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Logical Trustas a basis for

Distributed Naming and Authorization

Jeff ChaseDuke University

Based upon work supported by the US National Science Foundation through the

GENI Initiative and under NSF grants OCI-1032873, CNS-0910653, 1243315, 1330659, and by RENCI.

Page 2: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

AuthZ 101

subject action objectreferencemonitorapplies

guard policychecker

policy rules

subj/obj attributes

Authenticated by PKI / SSL / MAC

“subject says action”

service

request

requesterauthorizer(subject)

object

guardcredentialsAlice

identity

Page 3: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Let’s take it from the top• Let’s consider a client talking to a server, e.g., a web server.

• How does the client authenticate the server (“authn”)? How do they talk securely?

– Certificates, SSL/TLS, HTTPS, etc.

– Reasoning about certificates

• How does the server authenticate the client? What does it know about the client?

• How does it decide whether to grant access (“authz”)?– Identities and attributes, attribute-based access control (ABAC)

• Generalizing certificates and ABAC using trust logic (e.g., SAFE)

• Using trust logic: beyond authorization/authz secure naming

– DNSSEC (or STRONG)

• Next: rich authorization and trust structures.

Page 4: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Clients and servers

“GET /images/fish.gif HTTP/1.1”

sd = socket(…);connect(sd, name);write(sd, request…);read(sd, reply…);close(sd);

s = socket(…);bind(s, name);sd = accept(s);read(sd, request…);write(sd, reply…);close(sd);

request

reply

client (initiator) server

Page 5: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Mallory-in-the-Middle attack

“GET fish.gif…”request

reply

client (initiator) server

“GET fish.gif …”request

reply

If an attacker can interpose between two interacting entities, she can read and modify the messages at will without detection by either victim.

Page 6: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Hijacking a connection

sd = socket(…);connect(sd, name);…

client (initiator)The adversary must be able to “take over” the name, so that resolving the name redirects the connection request to some computer controlled by the adversary.

For the connect and bind system calls, the name is an IP address (if IP networking is being used). But to get the server’s IP address, the client first performs a lookup in the Domain Name Service for a DNS name of the server (such as www.cs.duke.edu). This step may be vulnerable.

Page 7: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

End-to-end security: HTTPS

• How to authenticate shop.com, even if DNS is insecure?

• How to assure integrity/privacy of communications, even if the net is insecure?

• How to prevent man-in-the-middle attacks?

• Answer: Secure Sockets (SSL) or Transport-Layer Security (TLS), e.g., as used by HTTPS.

https://www.shop.com/shop.html

Page 8: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Symmetric and Asymmetric Crypto: Better Together

• Use asymmetric crypto to “handshake” and establish a secret session key (slow, but allows for key distribution).

• Then use the key to talk with symmetric crypto (fast and cheap)

• Example: Secure Sockets Layer (SSL) or Transport-Layer Security (TLS), used in HTTPS (Secure HTTP), SSH, SCP, etc.

“TCP SYN, etc.”

“My public key is K.”

Client Server“Let’s establish a session key: {S}K .”

{M}S

[encrypted data or content]

Page 9: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

What are we missing?

• This approach solves the “key distribution problem” for symmetric crypto.– And we want to use symmetric crypto because it

is fast and cheap.

• But it presumes that a participant knows the public key of another.– Does C know (believe) that K really is the public

key of S? It better be, or all bets are off!

• How to authenticate S?

Page 10: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Endorsements: certificates

• A principal may endorse another’s key.

• Issue a signed statement containing the key, and some statement about the key or the key holder (subject).

• We call the signed statement a certificate.

• But how does anyone know the endorser’s key?

CertificateTerm of validity

Issuer’s name (or key)

Signature

Bob’s key is 247E6F1A…

Page 11: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Certificates: a general view • A principal A delegates trust to another (B) by endorsing its

public key as bound to a global name (or any other attribute).

• A delegation is an assertion of fact by the issuer A, and is commonly issued as a certificate that is digitally signed by A.

• In a standard x.509 identity cert (e.g., issued by a PKI CA for Web), the attribute is a distinguished name.

– e.g., “Bob” or “amazon.com”

– PKI- CA: Public Key Infrastructure, Certifying Authority

CertificateTerm of validity

Issuer’s name (or key)

Signature

Payload: statements

Because the certificate is signed, a third party C can validate and use A’s statement about B, if C knows A’s public key and if C trusts A.

Trust management systems use certificates to encode other kinds of attributes and statements, e.g., arbitrary logic statements spoken by issuer.

Page 12: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

SSL/TLS: server certificate

• Your browser can verify the server identity if it knows the “real” server’s public key.

• The server presents a certificate signed by a trusted third party (CA) endorsing its public key.

• Your browser can verify the certificate if it knows/trusts the public key of the CA that signed it.

• How does your browser know the CA’s public key? How does your browser know to trust the CA?

Page 13: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

The CA’s public key is “baked into your browser”. You trust your browser provider to install a list of CAs that you can trust. Any CA on the list can issue a certificate for any name and any public key, and your browser will believe the asserted binding.

What could go wrong?

Reference: “Certified Lies”, e.g., see the 2010 paper by Soghoian and Stamm.

Page 14: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Spelling it out: HTTPS/SSL/TLS(1) When the server passes its public key K to the client, it also passes a certificate issued by

a CA. The certificate endorses the key K and binds K to a DNS name (e.g., amazon.com). The server’s DNS name is listed as the “distinguished name” in its identity certificate.

(2) The client’s browser validates the server’s certificate and checks to verify that the DNS name matches the DNS name in the https URL that the client is fetching. I.e., the certificate "proves" that the server is the "right" server for the requested URL.

(3) The client can validate the server's certificate iff the client (browser) trusts the issuing CA. How does the client know if it trusts the issuing CA? Answer: the browser has a "baked in" list of trusted CAs and their public keys. The set of CAs and signing protocols and certificate standards (x.509 identity certificates) is called Public Key Infrastructure or PKI.

(4) The client generates a session key and encrypts it with the server’s public key K, which it obtains from the cert. The session key is a secret shared by the client and server: the server can decrypt it (since it has the corresponding private key), but nobody else can.

(5) Now the client and server have a shared secret session key: they can communicate using symmetric crypto, which is fast and cheap.

Page 15: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

PKI: What could go wrong?

Who decides if a CA is “trustworthy”? Should you believe them? Should you trust your browser provider to make the list of trusted CAs? Who tells you a CA is trustworthy? Are you sure it’s someone you trust? How can you can be sure that you have the "true" browser code with the "true" list?

What if they’re wrong? What if a CA is subverted or goes rogue? Or loses its private key in an attack?

We can learn about keys from a chain of endorsements rooted in some trust anchor, whose key we “just know”.

Example: root certifying authorities (CAs) whose keys are baked into your Web browser.

Page 16: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Digression: Web security architecture

• At this point I like to go off on a discussion of the fragility of the CA infrastructure.

– News flash: many commercial CAs have been subverted.

– Some CAs are run by (or are legally responsive to) state actors with active espionage/surveillance.

– Anyone with access to your browser configuration (e.g., an employer, a wireless telecom provider) can add “their” CA to your trusted list.

– Anyone who can subvert or control any CA on your browser’s trusted CA list can mount MITM attacks on any of your Web interactions.

– Also, X.509 software has appalling bugs that may cause your browser to accept various malformed “frankencerts” that should be rejected.

– There is an active infrastructure for MITM attacks with special-purpose devices that may be inserted in the network or built into the network.

• But we don’t have time for that now…

Page 17: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Authenticating an HTTPS client

• Browser always authenticates the server with HTTPS.– Server presents certificate signed by a valid PKI CA.

– Domain name must match the name in certificate, etc.

• Server optionally requests to authenticate the browser (client, user or user agent).– Browser presents a user certificate, OR

– Password authentication is much more common. (why?)

• Server may authenticate client using a web sign on protocol, also called single sign on (SSO).– Authenticated statements about client by some trusted authority:

an SSO identity provider (IdP).

Page 18: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Using SSO IdPs

• An IdP is just a trust anchor maintained by an enterprise.

• The IdP authenticates the user agent (login).

• IdP asserts attributes of the user identity.– E.g., signed assertion of attributes of identity bound to an HTTPS

session.

– Might not reveal identity: e.g., just “Duke student”.

• Authorization policy in the server can consider these attributes (e.g., Attribute-Based Access Control).– “Duke students may use this facility on Monday.”

– Subsumes Role-Based Access Control (RBAC).

– Generally, authorization policy is some boolean function of accepted subject attributes and object attributes.

Page 19: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

9/29/2015

Page 20: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Authz example

subject action objectreferencemonitorapplies

guard policyinference

policy rules

subj/obj attributes

Authenticated by PKI / SSL / MAC

“subject says action”

service

Alice,Will you marry me? Signed, Bob

Page 21: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Attributes and policies

• More generally, each subject/object is labeled with a list of named attributes with typed values (e.g., boolean).

• Generally, an access policy for a requested access is a boolean (logic) function over the subject and object attributes.

name = “Alice”wizard = true

Name = “obj1”access: wizard

name = “Bob”student = true

Name = “obj2”access: student

Page 22: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Logical trust: safe and sound

Alice,Will you marry me? Signed, Bob

Guard policyalice: accept(Bob) alice: likes(Bob),

alice: mother(Mom, alice),Mom: likes(Bob),

This is logic programming.p(B) “Predicate p is true of B”alice: p(B) “Alice says p is true of B”

Atomic logic statements (atoms).

Page 23: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Trust with SAFE logic

• SAFE: Secure Authorization for Federated Environments– Practical minimalist trust logic: low barrier to use

– Custom datalog+says inference engine, <1000 lines of Scala

– “Slang” script to publish/import logic statements as certificates

– Compose policies and statements easily in plain text

• SAFE certificates can carry arbitrary logic content.– A building block for secure networked systems

CertificateTerm of validity

Issuer’s public keySignature

Payload: statementsalice: p(X) alice: trusts(G), G: p(X)

“If Alice trusts G and G says p(X) then Alice believes it.”

Page 24: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Logic and “says”

• Propositional logic example: P Q and R.– P, Q, R are propositions whose value is either true or false.

• Predicate logic example (“first-order calculus”):– p(X) q(X) and r(X, cindy).

– p, q, r are predicates: boolean functions over N parameters.

– E.g., “Cindy is a Duke student”

– “cindy” is a constant: one element of a universe of objects.

– X is a variable: its bound value ranges over the universe.

– “For every X, p of X is true if…”: an inference rule or policy.

• Trust logic adds a says operator:– self: p(X) alice: q(X) and bob: r(X, cindy)

– “I believe p(X) if alice says … and bob says…”

Page 25: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

A simple policy rule

accept(X) :- cindy: p(X). alice:

speaker says head is-implied-by body

Variables are universally quantified: “for every X”.“Pure” datalog: every variable in the head must appear in the body.

“Alice accepts any X if Cindy says X has property p.”

With this rule Alice delegates trust and power to Cindy to influence whom Alice accepts.

Page 26: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Logical trust on the network

How does Alice know…

• Did Cindy’s statement really come from Cindy?

• What did Cindy mean by “p” in her statement?

• Did the request really come from Bob?

• Is the requester the same “Bob” that Cindy mentioned?

alice: accept(X) :- cindy: p(X).

cindy: p(bob).

bob: request(…).request

policy

endorsement

Page 27: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Trust logic for secure distributed systems

• More on trust logic for authorization later.

• But we can also use it as a tool to build secure federated distributed services, e.g., at Internet scale.

• We can see how it can model the CA infrastructure:– Browser asserts trusted(CA) facts for CAs in trust list.

– If a “trusted” CA asserts a name-IP binding, browser believes it.

– CA hierarchy: a trusted CA may delegate its certifying privileges within named domains: capture with a recursive policy rule.

• Another example: secure naming– SPKI/SDSI STRONG

– DNSSEC

Page 28: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

DNS as a distributed service

• DNS is a “cloud” of name servers

• owned by different entities (domains)

• organized in a hierarchy (tree) such that

• each controls a subtree of the name space.

Page 29: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.
Page 30: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

DNS Lookup

Page 31: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

DNSSEC• End-to-end SSL/TLS etc. can defend against DNS level

attacks and network-layer attacks as well.

• But it relies on distribution of certificates, and correct validation of those certificates, and applications built to use SSL/TLS. Yuck (?)

• Can DNS itself be made more secure? Yes!– Give each DNS domain/subdomain (or “zone”) a keypair.

– Sign all entries in the zone database (“Resource Records”/RRs)

– Return signed data in DNS responses

– Each parent domain endorses the public key of each child

– Can validate the whole chain of DNS responses for a lookup, all the way back to the root…

– IF it is fully deployed. (it’s not…yet)

Page 32: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Secure DNS (DNSSEC) Threat Model

• DNSSEC defends against:– Spoofing, cache poisoning

– man-in-middle attacks on DNS requests/responses

• What DNSSEC cannot do– Defend against rogue domain administrators

– Defend against denial-of-service attacks

– Defend against compromise of a server or its key.– Protect against “pharm” attacks on users who don’t

check or care if they are talking to nicebank.com or n1cebank.com

Page 33: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

DNSSECHow to make DNS more secure?• Answer: sign all DNS lookup responses and include target’s public key.

• Each parent domain endorses the public key of each child.

• Resolver can validate the response chain, all the way back to the root…

Page 34: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

34

Getting the Keys

• Until a resolver gets the DNSKEY(s) for a zone, data can be spoofed

• How can a resolver know that the DNSKEY(s) themselves are not being spoofed?

• DNSSEC zones securely delegate from parents to children

• Zones that have no secure parents are called trust anchors

• When a zone is a trust anchor the zones that it delegates to form an island of security

[Osterweil; Massey; Zhang]

Page 35: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.
Page 36: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

https://www.iana.org/dnssec

Page 37: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

DNS Lookup

http://www.cisco.com/web/about/security/intelligence/dns-bcp.html

In DNSSEC, responses at zone cuts contain the public key of the child domain/zone authority, signed by the parent zone authority.

Page 38: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Reinventing/redeploying a global distributed service with many owners is a big job. DNSSEC has been in progress for 15+ years. But it is happening.

http://www.internetsociety.org/deploy360/dnssec/maps/

Page 39: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Trust with SAFE logic

• SAFE: Secure Authorization for Federated Environments– Practical minimalist trust logic: low barrier to use

• “Datalog with says”

– Publish/import sets of logic statements as linked certificates.• Authenticated: signed by the speaker/issuer.

• Conventions for self-certifying principal IDs and object IDs

– A building block for secure networked systems

– Including general access controlCertificateTerm of validity

Issuer’s public keySignature

Payload: statementsalice: p(X) alice: trusts(G), G: p(X)

“If Alice trusts G and G says p(X) then Alice believes it.”

Page 40: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

DNSSEC (simplified) in trust logic

dns(Parent, Name, Child) :- Parent: dnsRecord(Parent, Name, Child).

dns(Parent, Name, Child) :- Parent: dnsRecord(Parent, head(Name), D), dns(D, tail(Name), Child).

Page 41: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Certified evaluation vs. name resolution

• This example code certifies a name binding. [SD3]– All name records/statements on the path from the named node

to the root must be present in the context.

• Resolving a name requires dynamic fetch of the name records along the path.– Fetch a record, query for child’s identifying information, query

child’s record for the next hop name component.

b

c

• E.g., for /a/b/c [or c.b.a], first query root for “a” name record, then query a for “b”, then query b for “c”.

• SAFE fetches each name record from a shared key-value store, then uses it to synthesize the token of the next record.

/a

Page 42: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Certificate linking and caching

Server

Issuers put credentials and policies in a shared store.

Get certs to“cache or check”.

Credential sets are passed by reference in requests.

SafeSets

Server caches logic sets indexed by secure tokens. Query context is a union of sets (e.g., for subject, object, policy).

SAFE tools offer scripting support to construct nested logic sets with subset inclusion via link.

Based on scalable K/V store (Riak).

CertificateTerm of validity

Issuer’s public key

Signature

Payload: statement

says

Client

Authority

Page 43: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

.edu

unc

duke

cs envZone server may delegate authority for subdomains to children. The children handle queries on those subdomains.

DNS: authority hierarchy

• What if a DNS server goes rogue (or is subverted)?– DNS servers for low-level domains might not be hardened.

• How much damage can a rogue DNS server do?

But what if a DNS root goes rogue?

Page 44: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.
Page 45: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Trust structure and trust anchors

• DNSSEC is an example of a trust structure.– Each principal/server is delegated limited trust/powers.

• E.g., each DNS server is trusted by other participants only to control names within specific subtrees (zones/domains).

– DNSSEC provides a shared global name space rooted in a global root, a trust anchor that controls everything.

– Every participant is configured to trust the anchor.

• The CA hierarchy is similar, except:– It is a “forest” with many root anchors (independent CAs).

– Each root CA has unconstrained power over the name space.

Page 46: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

GENI infrastructure services

Backbone #1

Backbone #2

Campus#3

Campus rack

Access#1

CommercialClouds

CorporateGENI suites

Other-NationProjects

ResearchTestbed

Campus

My “slice” runs acrossthe evolving GENI federation.

My GENI Slice

Slice: an end-to-end virtual execution context with configurable properties, e.g., containment and isolation.

Page 47: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

GENI control framework for federated orchestrationOpen Resource Control Architecture

“Make my slice.”

“Instantiate VMs and VLANs x, y, z.”

3rd party network provider

“Link sites with circuits.”

“Enable external SDN controller for x, y, z.”

OpenFlow

ExoGENI: Cartoon Version

Campus A rack Campus B rack

Not shown: dynamic slice adaptation under

automated control

Page 48: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

A Short GENI Glossary (from geni-trex)

• Aggregate: An infrastructure hosting (IaaS) provider, provisioning resources on request based on its own policies, priorities and constraints.

• Member: GENI users or tenants who may allocate and control virtual infrastructure elements spanning multiple aggregates, and link them together to form end-to-end topologies for experiments or networked applications.

• Sliver: A virtual resource unit that is provisioned from a single aggregate and is named and managed independently of other slivers. Each sliver is bound to exactly one slice at the time that the sliver is created.

• Slice: A logical container for a set of slivers. The slice abstraction is useful to name, control, and contain groups of virtual resources that span multiple provider sites and are allocated and used for a common purpose. A slice belongs to exactly one project at the time the slice is created.

• Project: A logical grouping of slices, often under the management of a common lead or PI representing the work of a single lab or (virtual) organization. By GENI policy, the project lead is accountable for activities taken on slivers within the project’s slices.

Page 49: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

resources

IdP PACreate

project p

SARegister

user

Delegateproject

membership

Create slice s in p

Create sliver in

in s

Verify user identity, obtain

attributes, check that user

is qualified, execute

agreement.

Verify that user is authorized to create project

and act as project leader.

Verify that project p is

valid and user is authorized to create slice in

project p.

Verify that slice s is valid and user is

authorized to request resources for s.

1 2

3

4

5

IdP or “Member Authority”

PA: Project Authority

SA: Slice Authority

Cloud site

Page 50: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

GENI trust structure: overview

AM AM

GENI root

GMOC I&M

GENI “clearinghouse”

MA IdP

PA SA

Fed root endorsementsgeni: memberAuthority(ma).geni: projectAuthority(pa).geni: sliceAuthority(sa).geni.aggregate(am{1,2}).

Fed root acceptancema: geniRoot(geni).pa: geniRoot(geni).sa: geniRoot(geni).am{1,2}: geniRoot(geni).

Example policy rule to infer trust structurememberAuthority(X) geniRoot(G), G: memberAuthority(X).

“Self accepts any Member Authority endorsed by a trusted federation root.”

Page 51: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Attribute-based delegation

accept(X) :- Y: p(X), trusted(Y).

goal and goal

“Alice accepts any X if someone Alice trusts says X has property p.”

Enables chains of trust.

If unspecified, speaker is “self”.

Page 52: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

IdP

Issue user credentials Users have roles

e.g., student, faculty.

Registeruser

user registered

Identity Portal (IdP) / Member Authority (MA)

ma: geniUser(t).ma: student(t).

ma: enrolled(cs-114, t).

ma: geniUser(d).ma: faculty(d).

d

t

• An IdP asserts facts about users.

• User attributes may include inCommon attributes harvested through indirect delegation to Shibboleth IdPs.

• These attributes may have parameters with simple values (strings or numbers).

Page 53: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Create sliver for

slice s

SA AM

Decentralized policy: a scenario

SA: owner(t, s).idp: geniUser(t).pa: member(t, p).

Anyone can create a sliver for a slice s if s was approved by a qualified SA, and the request conforms to SA’s policies for s.

Only creator(s) may operate on slice s in project p, or a delegate of creator(s), subject to PA’s policies for p.

Any GENI user may create a slice s for a project p if p was approved by a qualified PA, and the request conforms to PA’s policies for p.

Any approved professor may create and lead a GENI project p. Leader(p) may designate approved GENI users as members of p. Any member of p may create a slice s in p.

PA

1 2

34

t

Page 54: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Policy rules: examples

Guard policy to create a sliceSA: createSlice(X, p) SA: projectAuthority(PA), PA: project(p), SA: rootPrincipal(PA, p), PA: createSlice(X, p).

Guard policy to create a projectPA: createProject(X) PA: memberAuthority(MA), MA: geniUser(X), MA: faculty(X).

“The Project Authority PA approves creation of a project if an accepted Member Authority MA says that the requester X is a faculty member who has registered as a GENI user.”

“The Slice Authority SA approves creation of a slice if a Project Authority PA accepted by SA says that the requester X has createSlice rights in a valid project p, where PA is the root of p.”

Guard policy to create a slice in a projectPA: createSlice(X, p) PA.member(X, p, instantiate).

“The Project Authority PA approves creation of a slice in a project p if the requester X is a member of the project p with instantiate privilege.”

Page 55: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

SAFE GENI: Capabilities

Credential Store

object root R

R:owner(E,s)R:cap*(E,s)

server

E:cap*(D,s)

E

D:cap(C,s)

Dcreate s

Ccontrol s

2 3 4

1 5

6Fetch certs

Capability delegation rulecap*(X, z) cap*(Y, z), Y:cap*(X, z)

Confined delegation rulecap(X, z) cap*(Y, z), Y:cap(X, z)

Capability guard rulecap(X, z) cap*(X, z)control(X, z) cap(X, z), …

capability(Subject, Object, Priv, Delegatable) :- Delegator: delegateCap(Subject, Object, Priv, Delegatable), capability(Delegator, Object, Priv, true).

Page 56: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Concept: access control matrix

Alice

Bob

obj1 obj2

RW

RWR

---

We can imagine the set of all allowed accesses for all subjects over all objects as a huge matrix.

How is the matrix stored?

Page 57: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Concept: ACLs and capabilities

Alice

Bob

obj1 obj2

RW

RWR

---

How is the matrix stored?

• Capabilities: each subject holds a list of its rights and presents them as proof of access rights. In many systems, a capability is an unforgeable reference/token that confers specific rights to access a specific object.

• Access control list (ACL): each object stores a list of identifiers of subjects permitted to access it.

capability list

ACL

Page 58: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Explicit delegation in SAFE

Page 59: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Server access control using SAFE

Page 60: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

SAFE GENI

• Multi-provider cloud with evolving trust structure

• Local autonomy: cloud/transport providers with local trust policies governing interactions with peers

• Delegatable access control for global objects: e.g., groups (projects) and slices.

• Policy mobility: creator/owner of a global object defines access policy applied wherever the object is used.

• Federated identity (SAML identity portal)

• Flexible federation across G*-deployments

• (Secure SDN within/across/to/from slices)

Page 61: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Concept: roles or groups

Alice

Bob

wizard student

yes

yesno

no

• A role or group is a named set S of subjects. Or, equivalently, it is a named boolean predicate that is true for subject s iff s S.

• Roles/groups provide a level of indirection that simplifies the access control matrix, and makes it easier to store and manage.

• From the GENI example: authority roles, projects.

roles, groups

wizard

student

obj1 obj2

objects

RW

RWR

---

Page 62: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Example: Amazon Public Cloud (AWS)AWS Identity and Access Management (IAM)

Alice

Bob

wizard student

yes

yesno

no

roles, groups

wizard

student

obj1 obj2

objects

RW

RWR

---

• An AWS customer creates an account with a payment method.

• The account holder/administrator for an organization may define many users, groups, and/or roles linked to the account.

• Policies may be attached to users, groups, roles, or resources: ACLs (“resource-based policies”) or capabilities (“user-based policies”).

• Users, groups, roles, and resources may have pathnames in a name hierarchy, like the Unix FS: Amazon Resource Names (ARNs).

Page 63: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

account

AWS Identity and Access (IAM)

Resources in AWS services: EC2, S3, EBS, …

subjectsusers, roles,

groups

objects

actions

create,describe,

run/launch,stop/start,

attach,destroy

Principals authenticated by access keys etc.

VM instances, images, volumes, buckets, queues,

snapshots

Subjects request actions on objects managed by AWS services. IAM provides a framework for authorizing actions across AWS services. Subjects wield cryptographic security credentials (e.g., access keys) to authenticate their requests to services and to IAM.

Page 64: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

account

AWS Identity and Access (IAM)

Access policy documents (JSON) attached to subjects and/or objects contain statements to allow/deny access for named actions by named subjects on named objects. All names may be pathnames: policies may use prefix match/wildcarding. An IAM policy evaluation engine makes the access control decisions.

subjectsusers, roles,

groups

objectsVM instances,

images, volumes, buckets, queues,

snapshots

JSONpolicy

JSONpolicy

actions

create,describe,

run/launch,stop/start,

attach,destroy

Page 65: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.
Page 66: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Limitations of AWS IAM

• IAM is powerful.

• It is an example of an advanced access control system used in practice in a state-of-the-art cloud service.

• But: it can be used only on the AWS platform, with AWS as a central trusted monitor/authority.

• I would like to create an access control framework for use with many services, operated by different parties.

• And with no central trusted authority.

• We want it decentralized and federated.

Page 67: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Federated groups with nesting inSFS (SOSP 2003)

Page 68: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

tagAccess(Tag, User, Delegatable) :- Owner := rootId(Tag), Owner: delegateTagAccess(Tag, User, Delegatable). tagAccess(Tag, User, Delegatable) :- Delegator: delegateTagAccess(Tag, User, Delegatable), tagAccess(Tag, Delegator, true).

tagAccess(Tag, User, false) :- nestedTag(Tag, ContainedTag), tagAccess(ContainedTag, User, Delegatable).

Federated group/tag membership

Page 69: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

nestedTag(Tag, ContainedTag) :- SrcOwner := rootId(Tag), SrcOwner: delegateNestedTag(Tag, ContainedTag).

nestedTag(Tag, ContainedTag) :- SrcOwner := rootId(Tag), SrcOwner: delegateNestedTag(Tag, MidTag), nestedTag(MidTag, ContainedTag).

Nested groups/tags

Page 70: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

member(User, Project, true) :- owner(User, Project). member(User, Project, Delegatable) :- Delegator: delegateMember(User, Project, Delegatable), member(Delegator, Project, true). memberPrivilege(User, Project, Priv, Delegatable) :- Delegator: delegateMemberPrivilege(User, Project, Priv, Delegatable), memberPrivilege(Delegator, Project, Priv, true).

Project membership with roles

Page 71: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Elements of trust logic

Also known as:

Credentials-BasedLogic-BasedRole-Based

Attribute-Based

Trust ManagementTrust

AuthorizationAccess Control

1. Knowledge about principals is represented as logic statements.

– Principals have secure names (e.g., public key/hash as in SPKI/SDSI).

– Build statements from atomic statements (atoms) and logical operators.

2. Predicates / atoms represent roles, attributes, capabilities, etc.

– Predicates range over principals and/or other named domain elements.

3. Atoms are qualified with says operator: who says or believes it.

4. Statements are authenticated and may be shared over a network.

Page 72: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

“Slang” logic set constructor

defcon trustStructure() :- spec('Federation trust structure: adopted by all participants'), { memberAuthority(IdP) :- geniRoot(Geni), Geni: memberAuthority(IdP). sliceAuthority(SA) :- geniRoot(Geni), Geni: sliceAuthority(SA). projectAuthority(PA) :- geniRoot(Geni), Geni: projectAuthority(PA). aggregate(Agg) :- geniRoot(Geni), Geni: aggregate(Agg). label('geni/trust-structure'). }.

Slang supports:

• logic set templates with environment variables and self-substitution

• set linking (union by reference)

• post/fetch, externalize/validate sets as signed certificates

• assemble customized proof context for guard

Page 73: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

A SAFE-encoded logic set

'K-3sGe-evxlRgOYu_225ja28wJADQsoqNib9D_f3dK8'(encoding(’safe'),status('active', 'Mon Jul 14 12:24:52 EDT 2014', 'first created'),speakerId('P-OJVA7CrXq4Wd2ij__iEoJbvaLYpQnGiy3RQR1DZHo'),subjectId('P-OJVA7CrXq4Wd2ij__iEoJbvaLYpQnGiy3RQR1DZHo'),notBefore('Mon Aug 14 12:24:52 EDT 2014'),notAfter('Thu Aug 13 12:39:52 EDT 2017'),'endorse()’ {link('P-OJVA7CrXq4Wd2ij__iEoJbvaLYpQnGiy3RQR1DZHo') :- spec(“ihost identity set").runs(qsyPAoGAd8wfPv...FuG7m, kIFJtaA8soeI...ozdUcxJF).},signature('ALtNPgXy5iW-yNrjxLo2bbf1TESdVr-..._ud73JWKcEpxSkmcQcA_EoERlgx-b2Z'), signatureAlgorithm('SHA256withRSA')).

http://152.3.144.16:10018/buckets/safesets/keys/K-3sGe-evxlRgOYu_225ja28wJADQsoqNib9D_f3dK8

- Digitally signed; principal names are public key hashes.- Object and principal names are cryptographically secure.- This example is an attestation of an instance from a cloud provider.

Page 74: Logical Trust as a basis for Distributed Naming and Authorization Jeff Chase Duke University Based upon work supported by the US National Science Foundation.

Descriptive complexity (simplified)

TLLTL

MTL

All trust logics“Little Trust Logic”Precisely equivalent to datalog+ (e.g., w/ stratified negation and/or tractable ordered constraint domains and constraint goals).

RTx

“Minimalist Trust Logic”A trust logic we define, drawing from datalog-subset logics. Inference suitable for practical embedding in real systems (SAFE)

Role-based Trust[Li, Mitchell, Winsborough]On which our previous work and prototypes are based (RT0/ABAC).

PCA, DKAL, ABLP, PolicyMaker.E.g., policy scripts, with cardinality, over predicates, arbitrary negation

LTL subsetsQCM/SD3, DelegationLog,SPKI/SDSI,SecPAL, Binder, Grey, NAL, SENDLOG