There are two different schools of thought about where to put the 
authentication tag.  RFC 5116 was designed so that it is part of the standard 
set of parameters rather than separate.  Thus, for GCM, it is included as part 
of the cipher text.  For SIV mode it is the IV and there is no extra 
authentication tag.

 

Other encodings have made the fields be separate, JOSE and CMS keep the tag and 
the cipher text as separate items and, for some systems, you then get the 
opposite world of needed to combined them when doing decryption operation.   
The decision of where and how authentication tags are placed is always going to 
be an encoding decision and not part of the encryption algorithm.

 

The decision was made to combine them for COSE because it saved an additional 
field, and thus one or more bytes are removed from the encoding.  This followed 
the guidance of trying for very short encodings.  

 

I have filed an issue to remember this at the next revision.

 

Jim

 

 

 

From: Samuel Erdtman [mailto:[email protected]] 
Sent: Saturday, March 18, 2017 1:08 PM
To: Jim Schaad <[email protected]>; [email protected]
Cc: cose <[email protected]>
Subject: Re: Authentication tag

 

Thanks Jim and Ilari for the quick replies.

So if I understand it correctly RFC 5116 defines AE and AEAD with the 
requirement to bundle the tag with the ciphertext, so it would not be allowed 
to put the tag in the COSE headers.

Section 10 Content Encryption Algorithms, gives a hint of where to find the 
tag, 'normally' appended. Forgive me my ignorance, but does GCM have a more 
normative requirement on the location of the tag in a ciphertext?

If GCM does not mandate the location of the tag in the ciphertext and we cannot 
put it in a header attribute then I would like more explicit language about 
where to find/put the tag.

Once again thanks for the quick and enlightening reply.

Cheers

//Samuel

 

 

On Fri, Mar 17, 2017 at 6:27 PM, Jim Schaad <[email protected] 
<mailto:[email protected]> > wrote:

>From Section 10:

 

COSE restricts the set of legal content encryption algorithms to those that 
support authentication both of the content and additional data. The encryption 
process will generate some type of authentication value, but that value may be 
either explicit or implicit in terms of the algorithm definition. For 
simplicity sake, the authentication code will normally be defined as being 
appended to the cipher text stream. The encryption functions are:

 

 

From: Samuel Erdtman [mailto:[email protected] <mailto:[email protected]> ] 
Sent: Friday, March 17, 2017 9:50 AM
To: cose <[email protected] <mailto:[email protected]> >; Jim Schaad 
<[email protected] <mailto:[email protected]> >
Subject: Authentication tag

 

Hi 

I´m working on a JavaScript implementation of the COSE msg specification, 
currently working on the GCM encryption.

In the nodejs crypto environment the authentication tag is set separately i.e. 
a specific setAuthTag call. I looked into openssl and could see that that was 
the case there too.

In the examples provided with the COSE specification I could find out that the 
auth tag is appends to the end of the ciphertext.

I tried to find this described in the COSE specification but could not find it. 
It might be described in some refereed specification but it was not obvious to 
me at least.

If it is not to late I would suggest that authentication tag is lifted out from 
the ciphertext and into the unprotected header similar to IV. Or that it is 
explicitly described that the authentication tag should be appended to the 
ciphertext.

Cheers

Samuel Erdtman

 

 

_______________________________________________
COSE mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/cose

Reply via email to