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
  • 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
  • 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
  • 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.