Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

[STDS-802-11-TGM] Fwd: FW: [STDS-802-11] Now it's r13, was Re: [STDS-802-11] Now it's r11, was: Re: [STDS-802-11] 11-19/1173r9-- mitigating side channel and timing attacks



--- This message came from the IEEE 802.11 Task Group M Technical Reflector ---

Further discussion on doc 11-19/1173 (which really should be on the reflector):

 

From: "Harkins, Daniel" <daniel.harkins@xxxxxxx>
Date: Tuesday, September 10, 2019 at 9:13 AM
To: Mark Rison <m.rison@xxxxxxxxxxx>, Jouni Malinen <jouni@xxxxxxxxxxxxxxxx>, Michael Montemurro <mmontemurro@xxxxxxxxxxxxxx>
Cc: "Dorothy Stanley <dstanley1389@xxxxxxxxx> (dstanley1389@xxxxxxxxx)" <dstanley1389@xxxxxxxxx>, "mark.hamilton2152@xxxxxxxxx" <mark.hamilton2152@xxxxxxxxx>
Subject: Re: [STDS-802-11] Now it's r13, was Re: [STDS-802-11] Now it's r11, was: Re: [STDS-802-11] 11-19/1173r9-- mitigating side channel and timing attacks

 

 

  Howdy,

 

On 9/10/19, 3:23 AM, "Mark Rison" <m.rison@xxxxxxxxxxx> wrote:

 

Hello,

 

Thanks for the prompt review.

 

  First of all, thanks for your comments. The submission is better off as a result.

 

  Jouni has touched on MR9 and I hope that explains the issue. The following comments deserve

discussion. If I’m not discussing that means it was accepted (and just because I’m discussing these

does not mean I didn’t accept them—see MR34 and MR35 for instance).

 

  MR7 suggests making the phrase “direct hashing to element” refer to the FFE, but that’s not right.

The FFE is a field in a frame. The thing that’s hashed to, which is an element in a finite field, is never

transmitted in a frame. It’s the PWE, the PassWord Element. So I’m going to decline to incorporate

your suggested change. I know you feel that the overloaded term causes confusion but I’m hoping

that the way the term is used here is unlikely to cause (more) confusion.

 

How about saying PWE rather than element, then?

 

Because we’re hashing to PT, which is an element in a finite field. The thing is, these terms are used in such

different ways I really don’t think, in  practice, this causes confusion. Yes, it’s overloaded, yes that’s unfortunate.

 

  MR8: yes that’s what’s intended. This AKM is for doing SAE or PMKSA caching.

 

But not any kind of PMKSA caching.  Only the PMKSA caching with SAE, right?

Other AKMs are used for other forms of PMKSA caching:

 

…1 is for Authentication negotiated over IEEE Std 802.1X or using PMKSA caching as defined in 12.6.10.3

…3 is for FT authentication negotiated over IEEE Std 802.1X or using PMKSA caching as defined in 12.6.10.3

…5 is for Authentication negotiated over IEEE Std 802.1X or using PMKSA caching as defined in 12.6.10.3

…9 is for FT authentication over SAE or using PMKSA caching as defined in 12.6.10.3

…10 is for APPeerKey Authentication with SHA-256 or using PMKSA caching as defined in 12.6.10.3

…11 is for Authentication negotiated over IEEE Std 802.1X or using PMKSA caching as defined in 12.6.10.3 using a Suite B compliant EAP method supporting SHA-256

…12 is for Authentication negotiated over IEEE Std 802.1X or using PMKSA caching as defined in 12.6.10.3 using a Suite B compliant EAP method supporting SHA-384

…13 is for FT authentication negotiated over IEEE Std 802.1X or using PMKSA caching as defined in 12.6.10.3

…14 is for Key management over FILS using SHA-256 and AES-SIV-256, PMKSA caching, or authentication negotiated over IEEE Std 802.1X(#114)

…15 is for Key management over FILS using SHA-384 and AES-SIV-512, PMKSA caching, or authentication negotiated over IEEE Std 802.1X(#114)

…16 is for FT authentication over FILS with SHA-256 and AES-SIV-256, PMKSA caching, or authentication negotiated over IEEE Std 802.1X(#114)

…17 is for FT authentication over FILS with SHA-384 and AES-SIV-512, PMKSA caching, or authentication negotiated over IEEE Std 802.1X(#114)

 

So it seems to me that the wording for 8 needs to be something like

 

SAE authentication with SHA or using PMKSA caching as defined in 12.6.10.3 (Cached PMKSAs and RSNA key management)

 

to cover all the cases but not more.

 

Actually I think that would be comment bait. “Where is the definition of SHA?” being the obvious one. And just

saying “SHA” is actually ambiguous because it does cover more cases, like the case of what we started calling

“SHA1” that we used to just call “SHA”. There is nothing added to the sentence by saying “with SHA”, it only

conforms to an unwritten rule that all of these things say what hash algorithm they’re using. But that isn’t

really a rule and this particular AKM is now different, so it’s saying things differently.

 

  MR19 and MR20: this is existing text in the standard, I’m just moving it. Yes, there are multiple string

conversion functions. Check out 12.4.7.2.

 

MR19: I can only see one data-to-octet-string conversion function in 12.4.7.2

(specifically in 12.4.7.2.2).  Where is the other?

 

Well there’s integer-to-octet string and back and then there’s (here we go again!) element-to-octet string

and back.

 

MR20: Ah, is "Each invocation of CN() specifies the format of the counter." referring to

The send-confirm counter shall be encoded according to subclause 9.2.2 (Conventions). in 12.4.5.5

and The peer-send-confirm shall be encoded according to subclause 9.2.2 (Conventions). in 12.4.5.6?

 

Yes, those are the counters for CN().

 

  MR26 and MR50: it doesn’t matter. If it’s not signaled then you do this. If it’s signaled then it doesn’t matter

whether the signal says this feature is capable or mandatory.

 

But what if it's signalled as "capable" but not "use/required"?  Presumably

then it shouldn't be used, even though it is "signalled".

 

Of course it would be used. If the AP is saying “I can do this if you want” and the STA can do it then it does it

If the AP is saying “I insist on doing this” then the STA does it. If the STA can’t do it then it doesn’t connect.

 

  MR34 and MR35: I’m assuming that PT should be italicized as well.

 

Yes, I guess so.  The Editors can probably clarify what the rules are for

what gets italicised.

 

  MR42: yes, that’s what it means.

 

OK.  Has there been independent verification (as was done for the annex)

that the z values shown are correct?

 

I don’t know. But it would be nice to confirm them, I guess. Can you do that please?

 

  MR45: I’m not sure what x<sub>1</sub> you are referring to. These are distinct variable names.

 

The ones here:

 

The SSWU method produces two values, x1, and x2, at least one of which will represent an abscissa of a point on the curve. If x1 is the abscissa then x1 becomes the x-coordinate otherwise x2 becomes the x-coordinate. The equation of the curve with the x-coordinate produces the square of the y-coordinate which is recovered by taking the square root. The two possible results of the square root are discriminated by checking its least significant bit with the least significant bit of u. The result is a point on the curve.

 

These are not the same x1 as in

 

       gx1 = (x13 + a * x1 + b) modulo p

 

?

 

Ahh, OK. That’s from the discussion text. I’d rather get rid of the subs in the discussion and leave the

x1, x2 stuff in the standard. But I’m not sure whether that warrants a rev of the submission.

 

  MR49: because those are functions that have to be implemented in constant time. The operations in this

function, which call those other functions, also have to be implemented in constant time.

 

Right, so every function needs to be implemented in constant time,

as stated in:

 

All operatioins shall be done in constant time.

 

so why do the following need to be called out?

 

·         CSEL(x,y,z) operates in constant time and returns y if x is true and z otherwise.

·         CEQ(x,y) operates in constant time and returns true if x equals y and false otherwise.

 

Because we’re specifying a bunch of operations. Those have to be done in constant time. As part of

those operations we’re specifying there are 2 new functions that have to be used and those, too,

need to be implemented in constant time. But the “All operations shall be done in constant time”

doesn’t bleed out to anything else. It doesn’t apply to anything outside of itself (and CSEL() and

CEQ() are not really part of itself).

 

It would be a failure of the standard if someone implemented the specified options in constant time

but used a CSEL() or CEQ() that was not. “But I’m technically following the letter of the standard!”

That’s what I want to ensure does not happen. Consider it the belt-and-suspenders approach to

normative language.

 

 

  MR51: because it’s not similar. The text is just wrong.

 

Ah, OK!

 

  MR56: then the exchange will fail. But we’re talking about numbers that are larger than the number of

atoms in the universe. What if the atom selected at random from all the hundred thousand quadrillion

vigintillian atoms in the universe happens to be the one single special atom in the entire universe? We

don’t care because it’s not going to happen.

 

I see.  How about "infinitesimal" instead of "negligible"?

 

Some things can be infinitesimal (really really small) but not be negligible (not worth considering). The

important thing here is that we are deciding not to consider that case.

 

 

  MR67: because the KCK will be Q which is the length of the digest produced by the hash function that

instantiates H()

 

Ah, OK.

 

and the length of the salt is specified at the end of the paragraph.

 

Ah, I see.  It's a bit confusing because "When both SAE Commit messages indicated a status code of SAE_HASH_TO_ELEMENT a salt is passed to the KDF"

suggests there is no salt if the status code was not that.

 

That’s because you lopped off the clarifying text from the rest of that sentence. It says that when both

Commit messages indicate SAE_HASH_TO_ELEMENT a salt is passed to the KDF that is a concatenation

of the rejected groups.

 

 

But what about other AKMs not with the direct hashing technique?

 

There aren’t any. And if we define some we will define their parameters. Or not. Maybe we’ll say new

AKMs must use direct hashing. This is not wrong, it works technically, and it is sufficiently extensible so

we’re not painting ourselves into a corner.

 

The original sentence "Use of other AKMs will require definition of the lengths of the salt, the KCK, and the PMK"

covered them, but the new one does not.

 

We’re covering the salt and KCK with this new way.

 

BTW, is it "safe" for the salt to be very short (e.g. just two octets,

being a single rejected group from one of the STAs)?  I'm wondering

why the "default" salt has to have the length of the digest of the hash

function, if so.

 

Yes, it’s safe because it’s going to get hashed to the length of the digest before it gets used.

 

  I will be posting an r15 shortly that includes all these changes. Please take a look to make sure I have

accurately incorporated everything.

 

If you could address the above first, that would be helpful.

 

Too late! But if you are satisfied with my explanations maybe we don’t need an r16.

 

Thanks. I leave it for Dan to merge in the editorials that he feels fine with (I went through them quickly and most looked okay to me). As far as the couple of technical items are concerned, the current contribution looked correct to me.

 

The changes to the Table 9-133 to remove hardcoded SHA-256 from one, but not the other column is correct (the new SAE design uses different hash algorithms internally, but that particular AKM 00-0F-AC:8 derives the PTK in the same manner using SHA-256-based KDF regardless of the hash algorithms used within SAE authentication.

 

OK.

 

The Rejected Groups element (9.4.2.244) uses same byte order as any other IEEE 802.11 element (i.e., little endian). There is a pending change to the current rev to explicitly state these are 16-bit integers (that and the byte order were already covered in another subclause, but the size should be in Clause 9). The “security being opposite” part applies really mainly (only?) to EAPOL frames (i.e., 802.1X) and EAP (i.e., IETF).

 

OK.

 

12.4.5.4 definition of KCK/salt length covers all the AKMs that use SAE. If a new AKM for SAE were to be added in the future, that AKM definition would need to cover changes to KCK/salt (and likely PMK/PTK for that matter).

 

Hm, that's not what Dan is saying, I think (e.g. KCK is always length

of digest).

 

Yes, that is what I’m saying. This KCK is going to be used with CN() to generate an SAE Confirm frame. CN()

is instantiated with the hash algorithm from Table 12-abc. But for the 4way handshake, Table 12-8 still applies

for AKMs 00-08-AC:8,9 and that KCK is going to be used with AES-128-CMAC and it will be 128 bits.

 

  Regards,

 

  Dan.

 

Thanks,

 

Mark

 

--

Mark RISON, Standards Architect, WLAN   English/Esperanto/Français

Samsung Cambridge Solution Centre       Tel: +44 1223  434600

Innovation Park, Cambridge CB4 0DS      Fax: +44 1223  434601

ROYAUME UNI                             WWW: http://www.samsung.com/uk

 

From: Mark Rison <m.rison@xxxxxxxxxxx>
Sent: 08 September 2019 18:37
To: Harkins, Daniel <daniel.harkins@xxxxxxx>; Jouni Malinen <jouni@xxxxxxxxxxxxxxxx>; Michael Montemurro (mmontemurro@xxxxxxxxxxxxxx) (mmontemurro@xxxxxxxxxxxxxx) <mmontemurro@xxxxxxxxxxxxxx>
Cc: Dorothy Stanley <dstanley1389@xxxxxxxxx> (dstanley1389@xxxxxxxxx) <dstanley1389@xxxxxxxxx>; mark.hamilton2152@xxxxxxxxx
Subject: RE: [STDS-802-11] Now it's r13, was Re: [STDS-802-11] Now it's r11, was: Re: [STDS-802-11] 11-19/1173r9-- mitigating side channel and timing attacks

 

Hello,

 

I attach some comments, mostly editorial but some technical.

 

Thanks,

 

Mark

 

--

Mark RISON, Standards Architect, WLAN   English/Esperanto/Français

Samsung Cambridge Solution Centre       Tel: +44 1223  434600

Innovation Park, Cambridge CB4 0DS      Fax: +44 1223  434601

ROYAUME UNI                             WWW: http://www.samsung.com/uk

 

From: Harkins, Daniel <daniel.harkins@xxxxxxx>
Sent: 3 September 2019 20:46
To: STDS-802-11@xxxxxxxxxxxxxxxxx
Subject: [STDS-802-11] Now it's r13, was Re: [STDS-802-11] Now it's r11, was: Re: [STDS-802-11] 11-19/1173r9-- mitigating side channel and timing attacks

 

--- This message came from the IEEE 802.11 Working Group Reflector ---

 

  Hello,

 

  I have uploaded what I hope is the final version of 11-19/1173, now at r13. This includes a fix for

how “val” is generated to produce PWE from the PT element, some crypto-agility to make stronger

groups use stronger hash functions to do the calculations, and fixes to the test vectors. The test

vectors have now been validated by 2 independent implementations so counting mine that generated

them in the first place that means we have 3 independent implementations of this. A very nice

showing!

 

  As usual, comments/concerns/etc please post them to the list.

 

  Regards,

 

  Dan.

 

On 8/20/19, 9:16 PM, "Harkins, Daniel" <daniel.harkins@xxxxxxx> wrote:

 

--- This message came from the IEEE 802.11 Working Group Reflector ---

 

  OK, make that r11. I received comments on r9 and r10 and have addressed them in r11. This

is the version I will be presenting tomorrow in the teleconference of the TGm ad hoc.

 

  regards,

 

  Dan.

 

On 8/17/19, 9:16 AM, "Harkins, Daniel" <daniel.harkins@xxxxxxx> wrote:

 

--- This message came from the IEEE 802.11 Working Group Reflector ---

 

  Hello,

 

  I received a couple comments regarding typos in 11-19/1173r9 and have not gotten any more

comments so I have uploaded r10 which only differs from r9 by corrected typos, the content is

exactly the same.

 

  regards,

 

  Dan.

 

On 8/2/19, 11:02 AM, "Harkins, Daniel" <daniel.harkins@xxxxxxx> wrote:

 

--- This message came from the IEEE 802.11 Working Group Reflector ---

  Hello,

 

  I have updated 11-19/1173 to do the "Simplified SWU" method of hashing to a curve. This supports

all the curves possible with SAE and is more efficient that the previous version. It can be implemented

in constant time which will mitigate the side channel and timing attacks described in the recent

"Dragonblood" paper. In addition, it mitigates a group downgrade attack (also described in that paper).

 

      https://mentor.ieee.org/802.11/dcn/19/11-19-1173-09-000m-pwe-in-constant-time.docx

 

  Please take a look. I have implemented this so I know it works. The question is, though, is this

specified in a clear enough way for others to implement.

 

  regards,

 

  Dan.

 

 


To unsubscribe from the STDS-802-11 list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-11&A=1


To unsubscribe from the STDS-802-11 list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-11&A=1


To unsubscribe from the STDS-802-11 list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-11&A=1


To unsubscribe from the STDS-802-11 list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-11&A=



To unsubscribe from the STDS-802-11-TGM list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-11-TGM&A=1

GIF image