Questions on gss_verify_mic_iov

Greg Hudson ghudson at mit.edu
Tue Sep 15 21:10:09 EDT 2015


On 09/15/2015 11:00 AM, Natalie Li wrote:
> 1) Is it intended for supporting GSS_VerifyMICEx() call [support 
> multiple input buffers] mentioned in MS-KILE document as shown below?
> 
> https://msdn.microsoft.com/en-us/library/cc233937.aspx

Not specifically, but it should serve a similar function, and it seems
like they should interoperate.

> 2) If yes to (1), then can you please confirm the usage of 
> gss_verify_mic_iov() in the following scenario described by MS-RPCE 
> document:
[...]

It seems right to me.

> a) Is GSS_C_BUFFER_TYPE_TRAILER intended for sec_trailer mentioned in 
> section 2.2.2.11 as shown below?
> https://msdn.microsoft.com/en-us/library/cc243931.aspx

No, it's used by gss_wrap_iov()/gss_unwrap_iov() for the RFC 3961
authentication trailer.  Microsoft's implementation rotates this into
the header; we do the same if no trailer buffer is given.
gss_verify_mic_iov() does not use this buffer type.

> One of the Solaris Kerberos team members suggested that 
> GSS_C_BUFFER_TYPE_TRAILER required due to:
> [...]

No; the logic is somewhat tortured due to the way code is shared between
unwrap and verify_iov, but checksum_iov_v3() doesn't require a trailer
in the verify_iov case because rrc is set to a synthetic value.

> (GSS major error): A token had an invalid Message Integrity Check (MIC)
> (GSS minor error): Message size is incompatible with encryption type

What is the encryption type of the session key, and what is the size of
the MIC token?

> b) GSS_C_BUFFER_TYPE_HEADER is not intended for the PDU header (MS-RPC 
> header) mentioned in (2), right? The MIT krb doc suggests that for 
> GSSAPI wrap token header.

Correct, the MS-RPC PDU header is at a higher protocol layer.

> c) Is GSS_C_BUFFER_TYPE_DATA used only for encryption, not for signing?

GSS_C_BUFFER_TYPE_DATA and GSS_IOV_BUFFER_TYPE_SIGN_ONLY are both used
for signing.  They have the same meaning to the MIC functions, but have
different meanings for gss_wrap_iov(), where DATA buffers are encrypted
and SIGN_ONLY buffers are not--but again, both types are included in the
calculation of the authentication tag.


More information about the krbdev mailing list