Bart Smaalders wrote:
> Garrett D'Amore wrote:
>> Bart Smaalders wrote:
>>> Garrett D'Amore wrote:
>>>> Bart Smaalders wrote:
>>>>> Stephen Hahn wrote:
>>>>>
>>>>>> I am having difficulty formulating a use case where nested or
>>>>>> multiply
>>>>>> signed packages are needed, and in which the consumer makes
>>>>>> different
>>>>>> decisions when distinct subsets of the signing entities cannot be
>>>>>> independently verified. Maybe someone has an example?
>>>>>
>>>>> Multiply signed packages are useful, as others have pointed out, to
>>>>> permit systems to require multiple signatures, or permit alternate
>>>>> signatures.
>>>>>
>>>>> The easiest way to do this is to omit all signatures from the
>>>>> hash; adding a new signature would then not invalidate previous ones.
>>>>>
>>>>> - Bart
>>>>>
>>>> The concern was that the meta data that would be added was also
>>>> signed.
>>>>
>>>> Certainly the *contents*, as well as critical portions of meta data
>>>> (dependencies and anything else that might impact how the software
>>>> is installed or behavior) probably could be covered by a single hash.
>>>>
>>>> Other meta data (yes, OurBigEnterprise-IT-Dept blesses this
>>>> package, on Jun 5, 2020...) may also need a separate signature,
>>>> covering the meta data, and the aforementioned hash.
>>>>
>>>> (So it sounds like we might want to classify meta-data somewhat.
>>>> Those that don't change after a package is created, and those that
>>>> do.)
>>>>
>>>> - Garrett
>>>>
>>>
>>> I don't understand.
>>>
>>> What is wrong with simply allowing multiple signature by the simple
>>> expedient of not including signatures in the hash. This is a very
>>> natural thing to do, since it simply requires removing all signatures
>>> from the manifest and then computing the hash.
>>>
>>> Doing otherwise means that a hierarchal manifest of arbitrary nesting
>>> depth is required; this complexity doesn't seem to be justified by
>>> any real requirements.
>>>
>>> There's plenty of track to be laid on this project w/o adding more for
>>> the use of invisible trains.
>>
>> The problem is whether meta data needs to be covered by the hash (and
>> signature) or not.
>>
>> Lets see if I can explain more fully.
>>
>> Sun delivers package A, and signs it, [A,sun]
>>
>> Sun support only guarantees support for packages that are signed.
>>
>> The customers IT organization wants to ensure that only "blessed
>> packages" are installed. And maybe they want to provide some
>> additional data, such as the date it was blessed, who blessed it, and
>> perhaps limitations upon the packages use. So they want to take
>> [A,sun] and make it [[A,sun],it]
>>
>> Now if you only allow multiple signatures in parallel over a common
>> hash, the problem is that the customer's IT metadata isn't covered by
>> the signature. (Unless the customer invents some other packing and
>> distribution format, which I think we want to avoid.)
>>
>> An alternative approach might be to have separate signatures, so that
>> you have:
>>
>> let pkg deliverables = A
>> let SHA[A] = H
>> let Sun's meta data for A = Msun
>> let customer IT dept's metadata for A = Mcustomer
>> let signed copy of x using Sun's key = [x,sun]
>> let signed copy of x using Customer's key = [x,customer]
>>
>> So Sun delivers:
>>
>> A + [H + Msun, sun]
>>
>> The customer's IT department serves up:
>>
>> A + [H + Msun,sun] + [H + Msun + Mcustomer, customer]
>>
>> This preserves the cryptographic integrity of both Msun and Mcustomer.
>>
>> -- Garrett
>>
>>>
>>> - Bart
>>>
>>>
>>>
>>>
>>>
>>
>
> Since each action can contain arbitrary attributes, the customer's
> signature action can contain whatever data he wants; the packaging
> system happily ignores that which it doesn't know about so he can
> add new attributes to his signature ad nauseam.
>
> This would mean that any actions that are signatures are simply
> ignored when computing the hash for signing purposes. Each signature
> can carry whatever extra data (within reason, of course) is deemed
> necessary by the signer.
>
> If the customer is worried about retrieving these packages from a repo
> run by a hostile which is attempting to edit his meta data, we can
> always include just the signature being generated (minus the hash value)
> in the hash.
>
> Thus, each signature stands alone, but if present cannot be altered w/o
> detection.
I think you want the hash value in the signed portion. Otherwise, how
do you keep someone from reattaching a different signed meta data from a
"bad" package to a "good" package?
Possibly all you need is just the hash signature.
I still don't really understand whether meta data can alter the behavior
of the software (either the installed software or the installation
software itself) -- can it?
- Garrett
>
> - Bart
>
>
>