[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Algorithm Identifiers in sip-sec-flows
At Mon, 14 Jul 2008 19:37:36 +0100,
Dr Stephen Henson wrote:
>
> Eric Rescorla wrote:
> > Robert Sparks and I are trying to finish up draft-ietf-sip-sec-flows
> > (http://tools.ietf.org/html/draft-ietf-sip-sec-flows-01), which
> > contains SIP security exampled and one of the open issues is algorithm
> > identifier encodings.
> >
> > Like most others, We're using OpenSSL to generate the messages, with
> > RSA with SHA-1 for the signature algorithms. As people will recall,
> > RFC 3370 has this to say about the algorithm identifiers:
> >
> > The SHA-1 message digest algorithm is defined in FIPS Pub 180-1
> > [SHA1]. The algorithm identifier for SHA-1 is:
> >
> > sha-1 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
> > oiw(14) secsig(3) algorithm(2) 26 }
> >
> > There are two possible encodings for the SHA-1 AlgorithmIdentifier
> > parameters field. The two alternatives arise from the fact that when
> > the 1988 syntax for AlgorithmIdentifier was translated into the 1997
> > syntax, the OPTIONAL associated with the AlgorithmIdentifier
> > parameters got lost. Later the OPTIONAL was recovered via a defect
> > report, but by then many people thought that algorithm parameters
> > were mandatory. Because of this history some implementations encode
> > parameters as a NULL element and others omit them entirely. The
> > correct encoding is to omit the parameters field; however,
> > implementations MUST also handle a SHA-1 AlgorithmIdentifier
> > parameters field which contains a NULL.
> >
> > The AlgorithmIdentifier parameters field is OPTIONAL. If present,
> > the parameters field MUST contain a NULL. Implementations MUST
> > accept SHA-1 AlgorithmIdentifiers with absent parameters.
> > Implementations MUST accept SHA-1 AlgorithmIdentifiers with NULL
> > parameters. Implementations SHOULD generate SHA-1
> > AlgorithmIdentifiers with absent parameters.
> >
> > However, as far as I can tell OpenSSL currently generates the encoding
> > with NULL rather than absent, and my memory is that the last time I
> > discussed this with the OpenSSL implementors, they weren't interested
> > in changing this.
> >
> > When we were last working on this a few years ago, I got some message
> > from Fluffy saying that we should try to generate an encoding with
> > absent regardless. I spent some time patching OpenSSL to make it do
> > this, but upon reexamination, it seems kind of lame to have an example
> > in the draft that requires some one-off patch to generate, so I
> > thought it might be a good idea to get some more advice from the WG.
> > I'm not suggesting we change 3370, but is it really necessary to
> > have examples which need to be hand-tooled?
> >
>
> At the time OpenSSL didn't support CMS only PKCS#7.
>
> There are a few separate cases which OpenSSL handles.
>
> The PKCS#1 DigestInfo structure includes NULL. As I recall this is a
> specific exception partly to cover implementations that process
> DigestInfo with a cut and paste operations.
>
> The PKCS#7 code includes NULL. I'd have to check my archives but I can
> vaguely recall that a compatibility test OpenSSL was put through
> required this.
>
> The very recently added CMS code omits the parameters for sha1 and sha2
> algorithms and encodes them as NULL for others.
Has this stuff been released yet?
Thanks,
-Ekr