[Authentication] Applications storing secrets in configuration

Anders Rundgren anders.rundgren at telia.com
Fri May 10 23:18:12 PDT 2013


Having application-local secrets is fine but there are tons of applications
that rather needs ACL-protected secrets (keys).

It would for example be awesome dropping the gazillion key-passwords
stored (usually in clear) in various config files when you for example
deploy TLS-using application servers like JBoss.

On the mobile scene, doesn't Android effectively offer sandboxed applications
including protected storage?  Encrypting the data should IMO be a minor
OS addition and not particularly related to GCR.

I guess this really boils down to what "market" you are looking at, right?

Just my 2 öres.

Anders


On 2013-05-10 19:20, Stef Walter wrote:
> This is an early broad concept ... don't expect to be able to bike shed
> details yet :)
> 
> There's been lots of discussion of sandboxed applications, some of which
> want to store secrets securely.
> 
> In these cases the model we've been using in the Secret Service API does
> not really match reality. Ideally secrets such as passwords, should be
> stored with the applications other (configuration) data, and not
> necessarily in a central database.
> 
> Having a central database shared between applications of significantly
> different privileges requires somewhat complex ACL semantics, which lead
> to leaks and security issues.
> 
> As a solution for these applications we really want to be able to
> provide the application (or a library it's linked to like libsecret) a
> master key which it should use to encrypt information it wishes to
> persist securely on disk, in its databases, or settings. The application
> (or the library like libsecret) can then later request the same master
> key from the system and use it to decrypt passwords/secrets it has
> previously stored.
> 
> Advantages:
> 
>  * Such a model has far fewer moving parts than a central
>    database of secrets.
>  * Information is stored where it makes sense, along side other
>    related non-secret information (think account config info).
>  * The system (per policy) could provide a 'null' key to the app
>    which would mean it would store its secrets unencrypted (eg: an
>    encrypted or otherwise secure file system is in use).
>  * The system could hand out different keys per application (again
>    as per policy).
> 
> There are also some advantages of the shared database of secrets model
> that we currently see on our Linux desktops. The main one is the ability
> to share secrets between applications.
> 
> That said, what applications really want to do is share configuration
> and account information, not just the secrets. And to do that, they need
> more than just a shared secret database.
> 
> I'm thinking of documenting this concept and implementing it in libsecret.
> 
> The central secret database (ie: gnome-keyring) wouldn't necessarily go
> away any time in the forseeable future. But this allows new use cases to
> be fulfilled and applications to migrate over to this new concept as it
> makes sense.
> 
> Some implementation ideas:
> 
>  * Make this available to non-DBus using applications using the Linux
>    kernel keyring. This is a good way to allow the system to provide
>    applications with keys securely. The kernel can call out to a user
>    application to fill in keys that don't yet exist. This is light
>    weight, secure, and dependency agnostic.
> 
>  * Perhaps use the Secret Service API a compatibility mode to
>    store/retrieve such keys application master keys non-Linux platforms?
> 
>  * The system provides a public key identifier along with the key which
>    the application would store in/along-side its encrypted data. When
>    it wants to decrypt previously stored secret data, it passes that
>    identifier to the system when requesting its master key. This allows
>    for migration of keys, per-application keys, and future expansion.
> 
> Soliciting comments from others interesting in using this, or
> coauthoring this spec, and implementing it? I'm hoping to implement this
> in libsecret (glib, gobject based). A QT based implementation would be
> sweet, and perhaps others.
> 
> If we want we could add this to the Secret Service API spec.
> 
> Cheers,
> 
> Stef
> 



More information about the Authentication mailing list