#4101 HIGH Never A: Need means to deprecate signed OS/firmware/etc images.

Zarro Boogs per Child bugtracker at laptop.org
Mon Oct 8 15:08:10 EDT 2007


#4101: Need means to deprecate signed OS/firmware/etc images.
-------------------------------------------------------+--------------------
 Reporter:  cscott                                     |       Owner:  krstic        
     Type:  defect                                     |      Status:  new           
 Priority:  high                                       |   Milestone:  Never Assigned
Component:  security                                   |     Version:                
 Keywords:  wmb at firmworks.com, krstic, mstone, cscott  |    Verified:  0             
-------------------------------------------------------+--------------------
 To be concrete, the threat I am guarding against is the following:  we
 will have a signed build on the machines at MP time which does not
 have an antitheft client, and may have holes in initial activation
 security.  I am concerned that enterprising thieves will be able to
 downgrade future machines to the MP build in order to bypass
 activation and/or turn off antitheft.  (The threat is more general,
 but let's concentrate on this specific case for now.)

 I'm going to suggest doing at least one, but perhaps both, of the
 following things to make sure that we can deprecate old os releases:

 (1) test to ensure that all our code paths can handle multiple
 signatures from different keys in .sig files, so that we can change to
 a new key if we need to deprecate old code, and/or...

 (2) add an epoch marker to signatures (so we can deprecate old
 signatures w/o needing to generate a new key)

 I think (2) is worth doing even if we do (1), because having to
 generate (say) 100 signatures on a file seems much more painful than
 just generating 1 signature with epoch 100.

 (1) may be more or less done already, but I've never tested it, and I
 don't believe it works unless it's been well tested.  As an
 alternative, we could solve (1) by putting new signatures in
 differently-named files in the zip, and counting on OFW to ignore
 extra files which it didn't understand.  But again, we need it
 well-tested before we claim it's a solution.

 Mitch_Bradley: how exactly would the epoch thing work?
 C. Scott Ananian: We just add a new fixed width field -- say 4
 characters hexadecimal.  We ignore the field at the present, but
 generate all our signatures with it set to 0000.
 C. Scott Ananian: if we find out that our current software has a
 security problem, we start generating all our signatures with 0001,
 and release a new firmware which doesn't recognize any signature as
 valid unless the epoch is at least 0001
 C. Scott Ananian: this lets us upgrade old machines to the new
 firmware, while preventing "bad guys" from exploiting the ability to
 downgrade to the old broken firmware/os/whatever.

 Mitch_Bradley: we could bump to sig02:
 Mitch_Bradley: but that doesn't work...
 C. Scott Ananian: yes, we could just use the '01' as an epoch marker,
 but we need to ignore those bits (whichever ones they are) in the
 current firmware so that we can upgrade old machines to the new epoch
 Mitch_Bradley: yep, that's what I meant by "doesn't work"
 C. Scott Ananian: i believe this is functionally equivalent to
 releasing new firmware which only recognizes new keys, but saves us
 the trouble of generating multiple signatures for new builds (signed
 with old key, signed with new key)

 C. Scott Ananian: on the other hand, this whole "signature migration"
 discussion is specific to the signature process, so it should be
 orthogonal to the work we want to do today on secure nand reflash.
 It's just a change to how we format & validate signatures.

 Comments?  Again, my suggestion is that we do both (1) and (2) for MP,
 but that we should at least test means to accomplish (1) with the
 current firmware/initrd before we sign off on it as "good enough for
 MP".
  --scott

 [If we make the deprecation mechanism general to all signatures, it
 lets us deprecate generated activation leases, developer keys,
 firmware, OS images, and "pre-activation upgrade" images.  I can see
 definite uses for the latter three, a possible use for the first to
 counter some sort of "activation goes crazy" scenario, but no valid
 use for developer key deprecation.]

-- 
Ticket URL: <https://dev.laptop.org/ticket/4101>
One Laptop Per Child <https://dev.laptop.org>
OLPC bug tracking system



More information about the Bugs mailing list