/
Security and access control
Security and access control
- To what degree should security and access control be built into the RAMCloud system?
- What level of network security is needed?
- Should every packet be encrypted?
- Can assume that all packets originate and terminate with in the same datacenter
- This issue relates closely to the multi-tenancy issue: there may be applications from mutually-distrustful companies executing in the same datacenter.
- Who are the principals?
- Individual server machine (but BFT too expensive)
- Data servers as a group
- Clients
- Should clients trust data servers?
- Servers could disclose private data to other clients in
multi-tenancy setting - Servers could tamper with data
- Servers could disclose private data to other clients in
- Should data servers trust clients?
- Clients could request data they shouldn't be allowed to see
- One client could tamper with another's data
- One possible tool: crypto
- Clients can encrypt data before storing it (but still hard to get
any well-specified secrecy properties) - Clients can use a MAC/signature to verify data, but hard to ensure
freshness. - Servers could cryptographically authenticate requests, but expensive
- 1,280-bit Rabin-Williams: Sign in 1,515 usec, verify in 10 usec
- 2,048-bit esign: Sign in 67 usec (20 usec if precompute), verify
in 33 usec - AES block 150 nsec (mildly optimized C++ code)
- AES Needham-Schroeder-like protocol 600 nsec
- Sustained CBC encryption (CMAC should be similar) ~100 MB/sec
- Poly1305/AES appears to require about 2 usec to verify 256-byte msg
- Clients can encrypt data before storing it (but still hard to get
- Suggests we need to do security in the network for performance
- Organize network topology so that addresses cannot be forged and
authenticate based on addresses - Can possibly change bindings at medium-term scale
- Organize network topology so that addresses cannot be forged and
- What access control should be enforced?
- Probably want access control based on structure of keys. E.g.,
keys could be <application-id, opaque-bits>, where each
application-id has an ACL of addresses allowed access.- But that makes it hard to change permissions at a fine granularity
- Might also want delegation--I.e., this third party app can read or
write some of my facebook settings, but this seems much harder to
do without cryptography. - Also, quotas probably very important in multi-tenancy situation
- Limit amount of space, number of queries, etc.
- When customer goes away, need to delete all of its data--or
possibly archive somewhere then delete.
- Probably want access control based on structure of keys. E.g.,