> On Feb 4, 2015, at 11:34 AM, Susan Hinrichs 
> <shinr...@network-geographics.com> wrote:
> 
> 
> On 2/4/2015 12:57 PM, James Peach wrote:
>>> On Feb 4, 2015, at 10:15 AM, Susan Hinrichs 
>>> <shinr...@network-geographics.com> wrote:
>>> 
>>> As part of integrating in the fix for TS-2480, I'm finally getting my head 
>>> around SSL session tickets and how ATS handles them.
>>> 
>>> In part of my looking around the web while debugging it seems that there 
>>> are some security concerns with session reuse in general and ticket keys in 
>>> particular.  The two major security concerns for ticket keys and PFS were
>>> * Server deployments don't rotate their ticket keys fast enough
>>> * Storing sensitive ticket key information on disk gives attackers another 
>>> point of attack
>>> 
>>> Question 1:  Would it be valuable to give people the option in ATS to have 
>>> ATS generate the ticket key information as an alternative to providing the 
>>> ticket key information on the fly.  This seems to be the Apache HTTP 
>>> approach.  They allow the specification of a file. Otherwise, the server 
>>> will generate a ticket key on process start. This would be a very minimal 
>>> change.  I tried it out on my dev build this morning.
>> IIRC that's what OpenSSL does automatically when session tickets are enabled 
>> and you don't provide your own ticket key.
> 
> Hmm,  didn't realize that OpenSSL does this.  But just gave it a try, and you 
> are correct.  It looks like the only way to stop openssl from doing this in 
> ATS is to explicitly set ssl_ticket_enable=0 in the ssl_multicert.config.  
> But I'm perhaps missing the global disable setting.

There's no global setting.

>>> Question 2: Would it be valuable to implement a ticket key lifetime 
>>> parameter?  If set and if ATS is generating the ticket keys (see Question 
>>> 1), ATS could regenerate the ticket key once it hit the lifetime.  Also 
>>> provide a parameter to specify how long you will allow tickets encrypted 
>>> with the old key, e.g.  Set a default of 22 hour key regeneration time with 
>>> a 24 hour use time.
>> No. Bin Zeng added ticket key rotation. You don't need a lifetime; just 
>> rotate the keys at whatever frequency you desire.
> 
> I think this would only be valuable if tickets were auto generated. And that 
> would only be beneficial for single proxy installations. While that is not 
> valid for large deployments, that would be valid for many ISP deployments.

I don't know. It seems pretty simple to add a cron job that does something like:

        dd bs=48 skip=1 if=/path/to/ticket.key of=/path/to/new/ticket.key   # 
keep the last 3 keys
        dd if=/dev/random of=/path/to/new/ticket.key bs=48 conv=notrunc count=1 
oskip=3  # append a kew key
        mv /path/to/new/ticket.key /path/to/ticket.key
        chmod/chown XXX /path/to/ticket.key
        touch ssl_multicert.config
        traffic_line -x

We can document a recipe to do this. I can see your point WRT implicit ticket 
keys though. 

>>> Question 3: Would it be valuable to let plugins hook their own code to run 
>>> during the session_ticket_key_callback?  This would allow a deployment to 
>>> override the standard ATS ticket key approach with their own.  Potentially 
>>> doing more clever ticket key sharing than just using the file system.  Or 
>>> implementing their own key rotation or generation scheme.
>> This seems to be of pretty limited value. I think that adding Linux kernel 
>> key management support would be more generally useful, but in either case, 
>> few people would use this.
> 
> If you had a plugin interface, people could implement their own interface to 
> the Linux kernel key management, or memcached or whatever.

The kernel key management is pluggable, but I have no real object to an API. It 
just seems unlikely to be used.

>>> Question 4:  What is the granularity of session tickets?  In ATS, you can 
>>> set session tickets on default or on an IP by IP basis.  Do most people 
>>> just set one ticket for all possible destinations?  Or do folks set tickets 
>>> on each IP?  No suggestion here.  Just curious how the feature is used.
>> Currently, you can only set session tickets at the same granularity as 
>> ssl_mulicert.config. There is a records.config setting for using a global 
>> ticket (which I think makes sense), but that's not implemented.
> 
> Oh, I forgot in the course of my messing around, I added a test in the 
> session ticket callback to look at the default entry if there was nothing for 
> the specific IP in ssl_multicert.config.
> 
> Do most people use the same ticket file for all destinations?  Or is it 
> desirable to use different ticket files for different destinations?
> 
>> 
>> J
>> 
> 

Reply via email to