320 likes | 476 Views
Growing Secure Distributed Systems from a Spore. Yunus Basagalar, Vassilios Lekakis and Pete Keleher University of Maryland, College Park. P roblem. Outsourcing data is trendy geographically r eplicated no downtime Inherently insecure implicit trust. Goal. Remove implicit trust
E N D
Growing Secure Distributed Systems from a Spore Yunus Basagalar, Vassilios Lekakis and Pete Keleher University of Maryland, College Park
Problem • Outsourcing data is trendy • geographically replicated • no downtime • Inherently insecure • implicit trust
Goal • Remove implicit trust • Minimize server functionality • Leverage wider range of resources as storage service • Less code Less bugs • Use cryptographic techniques
Spore overview Object X List of public keys allowed to modify Object X Symmetric key for Object X
Assumptions • No higher-level functionality in the server side • put/get/list interface • Immutable objects • No trust assumption • except Spore object
Everything starts with a single spore... Creates spore object /.v1
Object graph Bob's operations • mkdir /dir • create /dir/foo • edit /dir/foo • create /dir/bar /.v1
mkdir /dir • put (7b610f93, dir_obj)
mkdir /dir Computed using a deterministic, fast, collision resistant function
mkdir /dir • put (7b610f93, dir_obj) • put (2ca142a9, root_obj)
Object graph Bob's operations • mkdir /dir • create /dir/foo • edit /dir/foo • create /dir/bar /.v1 /.v2 implicit edge: between versions of an object dir.v1 explicit edge: between parent object and its children, directory entries
Object graph Bob's operations • mkdir /dir • create /dir/foo • edit /dir/foo • create /dir/bar /.v1 /.v2 dir.v1 dir.v2 foo.v1
Object graph Bob's operations • mkdir /dir • create /dir/foo • edit /dir/foo • create /dir/bar /.v1 /.v2 dir.v1 dir.v2 foo.v1 foo.v2
Object graph Bob's operations • mkdir /dir • create /dir/foo • edit /dir/foo • create /dir/bar /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Sharing the Spore Alice's operations • read /dir/foo Bob shares the spore with Alice /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Traversing the object graph Alice's operations • read /dir/foo /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Traversing the object graph Alice's operations • read /dir/foo /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Traversing the object graph Alice's operations • read /dir/foo Alice's operations • read /dir/foo /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Forming trust region by induction • In trust region • data confidentiality • authentication of updates • self-consistent objects Trust Region Trust Region
Confidentiality Alice's operations • read /dir/foo /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Grant read access to Alice /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 Symmetric key for foo.v2 Alice’s public key • How: Include the key encrypted with Alice’s public key
Authentication Alice's operations • edit /dir/bar Bob's operations • read /dir/bar /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1
Authentication Alice's operations • edit /dir/bar Bob's operations • read /dir/bar /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1 bar.v2
Authentication Alice's operations • edit /dir/bar Bob's operations • read /dir/bar /.v1 /.v2 dir.v1 dir.v2 dir.v3 Bob realizes Alice has no rights to modify bar foo.v1 foo.v2 bar.v1 bar.v2
Grant write permission to Alice /.v1 /.v2 dir.v1 dir.v2 dir.v3 bar.v1 bar.v2: Alice’s public key • How: Include Alice’s public key as a writer for bar
Self-consistent objects /.v1 /.v2 dir.v1 dir.v2 dir.v3 foo.v1 foo.v2 bar.v1 bar.v2.$HASH $HASH = H where H is a collision-resistant hash function bar.v2
Spore overview Object X List of public keys allowed to modify Object X Symmetric key for Object X
Conclusion • Growing a secure distributed system from a Spore • authenticated writes • confidentiality • self-consistent objects • minimal server-side functionality