Tutamen: A Next-Generation Secret-Storage System
Andy Sayler, Taylor Andrews, Matt Monaco, and Dirk Grunwald
Presented by Andy Sayler
SoCC 2016 10/06/16
Tutamen: A Next-Generation Secret-Storage System Andy Sayler, - - PowerPoint PPT Presentation
Tutamen: A Next-Generation Secret-Storage System Andy Sayler, Taylor Andrews, Matt Monaco, and Dirk Grunwald Presented by Andy Sayler SoCC 2016 10/06/16 SFg5asknmc6e SFg5asknmc6e SFg5asknmc6e DTrump GreatPassword Secrets SFg5asknmc6e
Andy Sayler, Taylor Andrews, Matt Monaco, and Dirk Grunwald
Presented by Andy Sayler
SoCC 2016 10/06/16
SFg5asknmc6e
SFg5asknmc6e
SFg5asknmc6e
DTrump GreatPassword
SFg5asknmc6e
DTrump GreatPassword
Plugins for Multi-factor, Out-of-Band, Etc Auth
Plugins for Multi-factor, Out-of-Band, Etc Auth Sharding Across Multiple Servers
Plugins for Multi-factor, Out-of-Band, Etc Auth Sharding Across Multiple Servers Distributed Federation Between Servers
Storage Server
Storage Server Access Control Server
Application Storage Server Access Control Server
Application Storage Server Access Control Server
Client
Mutual TLS Application Storage Server Access Control Server
Token Request Token Response Client
Mutual TLS TLS w/ Token Application Storage Server Access Control Server
Token Request Token Response S t
e S e c r e t Fetch Secret Client
Mutual TLS TLS w/ Token Application Storage Server Access Control Server
Client Public Token Signing Key Token Request Token Response S t
e S e c r e t Fetch Secret
Storage Server
Storage Server Collection
Storage Server Collection
Secret
Storage Server Collection
AC Srv URL AC Srv URL AC Srv URL Secret
Storage Server Collection
AC Srv URL AC Srv URL AC Srv URL Secret # AC Srv Required
Access Control Server
Access Control Server Account
Access Control Server Account
Client
Access Control Server Authenticator Account
Client
Access Control Server Authenticator Verifier Account
Client
Access Control Server Authenticator Verifier
Account ID Account ID Account ID
Account
Client
Access Control Server Authenticator Verifier
Account ID Account ID Account ID Authenticator ID Authenticator ID Authenticator ID
Account
Client
Access Control Server Authenticator Verifier
Account ID Account ID Account ID Authenticator ID Authenticator ID Authenticator ID
Permissions
Object Type Object ID
Account
Client Permission Name
Access Control Server Authenticator Verifier
Account ID Account ID Account ID Authenticator ID Authenticator ID Authenticator ID
Permissions
Object Type Object ID Permission Name Verifier ID Verifier ID Verifier ID
Account
Client
AC Server A AC Server B
Storage Server A AC Server A Storage Server B Storage Server C AC Server B
Application Storage Server A AC Server A Storage Server B Storage Server C AC Server B
Application Storage Server A AC Server A Storage Server B Storage Server C AC Server B
T
e n s
Application Storage Server A AC Server A Storage Server B Storage Server C AC Server B
Public Signing Keys Tokens Shard
Application Storage Server A AC Server A Storage Server B Storage Server C AC Server B
T
e n s S h a r d Public Signing Keys
Application Storage Server A AC Server A Storage Server B Storage Server C AC Server B
Tokens Shard Public Signing Keys
Application Storage Server A AC Server A Storage Server B Storage Server C AC Server B
Secret
w/ Out of Band Human-in-the-Loop
Permissions for Collection cf3529eb13be: { read: [ Verifier a74b2e2d493d ] }
Permissions for Collection cf3529eb13be: { read: [ Verifier a74b2e2d493d ] } Verifier a74b2e2d493d { Accounts: [ Account cceb832edcdb ] } Authenticators: [ Authenticator 34e85e1bb264 ] }
Permissions for Collection cf3529eb13be: { read: [ Verifier a74b2e2d493d ] } Verifier a74b2e2d493d { Accounts: [ Account cceb832edcdb ] } Authenticators: [ Authenticator 34e85e1bb264 ] } Authenticator 34e85e1bb264 { Plugin: SMS Challenge/Response }
Account ACS A ACS B T i m e SS A SS B SS C Human
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C Human
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C
<“col”, ”read-sec”, uuid>
Human
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C
<“col”, ”read-sec”, uuid>
Human
1b. Confirm via SMS
Account ACS A ACS B
Collection read-sec Tokens <SMS challenge>
T i m e SS A SS B SS C
<“col”, ”read-sec”, uuid>
Human
1b. Confirm via SMS
Account ACS A ACS B
Collection read-sec Tokens <SMS challenge>
T i m e SS A SS B SS C
<“col”, ”read-sec”, uuid>
Human
1b. Confirm via SMS <SMS reply>
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C
<“col”, ”read-sec”, uuid> <tokens> <SMS challenge>
Human
1b. Confirm via SMS <SMS reply>
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C
from Collection <“col”, ”read-sec”, uuid> <tokens> <SMS challenge>
Human
1b. Confirm via SMS <SMS reply>
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C
<tokens, uuid>
from Collection <“col”, ”read-sec”, uuid> <tokens> <SMS challenge>
Human
1b. Confirm via SMS <SMS reply>
Account ACS A ACS B
Collection read-sec Tokens
T i m e SS A SS B SS C
<secret shards> <tokens, uuid>
from Collection <“col”, ”read-sec”, uuid> <tokens> <SMS challenge>
Human
1b. Confirm via SMS <SMS reply>
Implementation by Taylor Andrews
Implementation by Matt Monaco
1.2.3.4/24
SMS Challenge
1.2.3.4/24 SMS Challenge
1.2.3.4/24 SMS Challenge
1.2.3.4/24
SMS Challenge
1.2.3.4/24
SMS Challenge
1.2.3.4/24
SMS Challenge
Access Control Server - Get Token
Storage Server - Fetch Secret
Plugins for Multi-factor, Out-of-Band, Etc Auth Sharding Across Multiple Servers Distributed Federation Between Servers
1.2.3.4/24
SMS Challenge
Feature Provider
User Data Unrestricted Access Full Trust Features
Feature Provider
User Data Unrestricted Access Full Trust Features
Storage (S) Access (R) Manipulation (W) Meta-Analysis (M)
Feature Provider
Encrypted User Data Controlled Access by Proxy Minimal Trust Features
Secret Storage Provider
Secrets Controlled Access
Feature Provider
Encrypted User Data Controlled Access by Proxy Minimal Trust Features
Storage (S) Access (R) Manipulation (W) Meta-Analysis (M)
Minimal Trust
Secret Storage Provider
Secrets
Storage (S) Access (R) Manipulation (W) Meta-Analysis (M)
Feature Provider
Encrypted User Data Controlled Access by Proxy Minimal Trust Features
Secret Storage Provider
Secrets Controlled Access
Storage (S) Access (R) Manipulation (W) Meta-Analysis (M)
Feature Provider
Encrypted User Data Controlled Access by Proxy Minimal Trust Features
Secret Storage Providers
Secret Shard Controlled Access
Storage (S) Access (R) Manipulation (W) Meta-Analysis (M)
Controlled Access Secret Shard
Client Application Private Key
SSP
Key Store Client Application Private Key
SSP
Key Store Client Application Private Key
Client Application Private Secret
Client Application
Secret Store
SSP A
Client Application
SSP B
Secret Store
SSP A
Secret Store Client Application
SSP C SSP B
Secret Store
SSP A
Secret Store Secret Store Client Application
SSP D SSP C SSP B
Secret Store
SSP A
Secret Store Secret Store Secret Store Client Application
SSP D SSP C SSP B
Secret Store
SSP A
Secret Store Secret Store Secret Store Client Application Attacker
SSP D SSP C SSP B
Secret Store
SSP A
Secret Store Secret Store Secret Store Client Application Attacker
?
Cloud Storage Provider
SSP API Storage API Storage Server Encryption + Verification Engine File Browser VFS File Locker
Enc File Enc File Enc File
User Laptop
Secret Server
Key Key
Secret Storage Provider
Key
Secret Server
Key
Cloud Storage Provider
SSP API Storage API Storage Server Encryption + Verification Engine File Browser VFS File Locker
Enc File Enc File Enc File
User Laptop
Key
Secret Storage Provider
SSP API Storage API Encryption + Verification Engine File Browser VFS File Locker
Desktop
Key
Sender’s SSP Sender
Msg Key ...
Recipient A
Cleartext Msg
SSP API SMTP Mail Client SSP API SMTP Mail Client
Cleartext Msg Encrypted Msg Rules Encryption Key Key
Sender’s SSP Sender
Msg Key ...
Recipient A
Cleartext Msg
SSP API SMTP Mail Client SSP API SMTP Mail Client
Cleartext Msg
Recipient B
Cleartext Msg
SSP API SMTP Mail Client
Encrypted Msg Rules Encryption Key Key
SSP API E-Commerce App
Web Storefront SSP A User
SSN Shard A CC # Shard A
Order 1234
Payment Info Shipping Info
SSP B
SSN Shard B CC # Shard B Access Control Rules User Data User Data
SSP API E-Commerce App
Web Storefront SSP A User
SSN Shard A CC # Shard A
Order 1234
Payment Info Shipping Info
SSP B
SSN Shard B CC # Shard B Access Control Rules User Data User Data
Banking App
Bank
Account
Deposit Info Tax Info
SSP API
Secret Server
Remote System
SSP API SSH Server Key Engine SSH Client Socket SSH Agent
User A Public Key
User A Laptop Secret Storage Provider
User A Private Key User B Public Key ... ...
Secret Server
Remote System
SSP API SSH Server Key Engine SSH Client Socket SSH Agent
User A Public Key
User A Laptop Secret Storage Provider
User A Private Key User B Public Key ... ...
SSP API Key Engine SSH Client Socket SSH Agent
Desktop
Secret Server
User
PKCS11 Web Browser httpd HTTPS Server
Web Server
Private Key
SSP
SSP API Crypto Engine PKCS11 Server
Crypto Processor
Public Key
SSL PKCS11
...
SSP Management Interface
SSP API
User Secret Server
SSP
Web Browser
HTTPS OU Query Enc Key Enc Key ACS ACS
Management Server
SSH
VM Instance A
SSH User
SSH Login
Destroy
VM Instance A
SSP API
VM Instance B
SSH Users Re-create User
Server Verification SSH Login Server Verification
SSP
Key Access
Server SSP API
Key Access
SSP API
Base Filesystem (ext4) EncFS (fuse)
File (Encrypted) [On Disk] libcustos encrypt decrypt File (Decrypted) [In Memory]
User Custos Server
User’s Computer SSP
write read write read ACS ACS Key Key
Base Filesystem (Dropbox) EncFS (fuse)
File (Encrypted) [On Disk] libcustos encrypt decrypt File (Decrypted) [In Memory]
User Custos Server
User’s Computer SSP
write read write read Key Key ACS ACS
Mutual TLS TLS w/ Token Application Storage Server Access Control Server
Client Cert CSR Key Public Signing Key Token Request Token Response S t
e S e c r e t Fetch Secret
Storage Server Collection
Col AC Srv Set AC Srv URL AC Srv URL AC Srv URL Secret Secret Data Metadata SS AC Srv Set AC Srv URL AC Srv URL AC Srv URL AC Srv URL Col # AC Srv Required SS # AC Srv Required
Access Control Server Authenticator
Auth Plugin Plugin Data
Verifier
Account Set Account ID Account ID Account ID Authenticator Set Authenticator ID Authenticator ID Authenticator ID
Permissions
Object Type Object ID Permission Name Verifier Set Verifier ID Verifier ID Verifier ID
Account
Client Cert CSR
Application ACS A
Verifier
ACS B
AC Server verifier-create Tokens <tokens> <”ac-server”, ”verifier-create”> <tokens, verif. uuid, [acnts], [auths]> <verif. uuid>
T i m e
<tokens> <”ac-server”, ”perm-create”>
AC Server perm-create Tokens
Permissions <tokens, verifs, “col.”, col.uuid> <status> <tokens> <“ac-server”, ”col-create”>
AC Server col-create Tokens
SS A SS B SS C
Application ACS A ACS B T i m e SS A SS B SS C
<col. uuid> <tokens, col. uuid>
Collection <tokens> <“col”, ”store-sec”, col. uuid>
Collection store-sec Tokens <sec. uuid> <tokens, col. uuid, sec. uuid, secret shards>
in Collection
Relative Performance
Relative Time