Replies: 3 comments 15 replies
|
Signature in Unwrap/Wrap missed is a bug, (it's not used in MSRPC, so it was missed). EC value is more complicated topic, it seems like it was required to be 16 always for WrapEx/UnwrapEx (I was cross checking with heimdal library, but again, as we don't care about plain Wrap/Unwrap, perhaps we can think of something. |
3 replies
I think this gives some explanation. heimdal code, here EC is set to checksum length ?? |
8 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
I recently implemented a library for ADWS, a protocol built on top of Microsoft's NegotiateStream protocol, and used go-msrpc's
ssppackage to handle GSSAPI. I'm aware that's not the main purpose of this repo, but it's so useful that it would be a waste not to use it. I'm not an expert on Kerberos, but I found interesting behavior:I tried to follow the spec for NNS directly with GSSAPI, and it did not work immediately (the server closed the connection). So I made a simple .NET program to capture a flow of the official .NET library call using Kerberos, and this was the result:
The EC is set to zero, but for some reason the code for aes_cts_hmac_sha1.go always sets it to 16.
The baseline RFC4121 specifies that:
In 4.2.4 it also states the following about the "text to be encrypted":
From what I take it suggests that the inner filler (padding) is implementation-specific, but as far as I could check AES-CTS-HMAC-SHA1 shouldn't need padding, as the algorithm handles padding by itself. It shouldn't matter really if the extra padding just goes in and out, but for mysterious reasons, the only way I could get NNS to work was setting EC to zero and adding Signature to UnwrapEx. I'm not sure whether this is a bug or not, but it seems worth discussing.
All reactions