We already have the file based ticket keys. They require an external rotation, but I think that this requirement is okay for admins that already have to think of an exchange between several instances.

Richard

On 9/22/2014 2:23 PM, kyprizel wrote:
What about sharing keys b/w the physical instances?

On Mon, Sep 22, 2014 at 3:39 PM, Richard Fussenegger, BSc <rich...@fussenegger.info <mailto:rich...@fussenegger.info>> wrote:

    I'd like to implement built-in session ticket rotation. I know
    that it this was discussed before but it was never implemented.
    Right now a custom external ticket key system is supported. Admins
    with single installations and not enough knowledge about the topic
    are left with keys that are valid for the complete lifetime nginx
    is running.

    I thought about a rotation scheme that introduces a single new
    configuration variable (e.g. ssl_session_ticket_key_rotation or
    ssl_session_ticket_key_interval) that defines the interval in
    which the ticket key should be rotated. I think a default setting
    of 24 hours would be enough for most installations. One key is
    always used for decryption and encryption and the most recently
    expired key is only used for decryption. This means that we have a
    de- and encrypt key for 24 hours and a decrypt key for 48 hours
    with the default setting. The best place for this would be in
    ngx_event_openssl.c#2640 after the if (paths == NULL) by checking
    if the aforementioned variable is set (default) and if the
    currently used key has expired. If it hasn't return NGX_OK (as it
    is now) otherwise copy current key to old key and generate new key.

    Unsolved questions:

    Implementation: Currently OpenSSL is generating and keeping track
    of the key (this would still be the case if the newly introduced
    setting is set to "0"). We'd have to introduce two variables - one
    for the current and one for the old key plus timestamps - and let
    OpenSSL know about the key before attempting to decrypt sent
    session data.

    Per server keys: CVE-2014-3616 from Antoine Delignat-Lavaud was
    dealing with this. I have to review his patches but I guess that
    the variables have to be arrays and we'd have to keep different
    current and old keys per server. But what if one wants to share
    the sessions among servers? I guess this has to depend on the
    location the configuration was set. As I said, I have to review
    his patches to gather more knowledge for this problem.

    Restarts: Apache is storing the key to file, that would allow the
    process to read the last used keys. But of course this isn't very
    secure and we may need an additional setting to define the path
    where these intermediate keys should be stored. Of course we could
    also simply ignore restarts, as it is now. But we'd loose the
    ability to decrypt old sessions tickets.

    Any thoughts from your side are highly appreciated.

    Richard

    _______________________________________________
    nginx-devel mailing list
    nginx-devel@nginx.org <mailto:nginx-devel@nginx.org>
    http://mailman.nginx.org/mailman/listinfo/nginx-devel




_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to