Skip to contentSkip to conversation

Michael MIC failures in AP mode?

DISCUSSION Kalle Valo 4 participants 8 messages Nov 1, 2008

lore
Share & tools
lore

Kalle Valo

author
#0 lore raw

Hello,

Now that AP mode works in mac80211 I want to use it to test Michael MIC failures in a wlan driver. Any recommendations, or tips, how to easily create them with mac80211 and hostapd?

Signature · 1 line
Kalle Valo
#1 lore raw
Quoted 3 lines · Kalle Valo

Now that AP mode works in mac80211 I want to use it to test Michael MIC failures in a wlan driver. Any recommendations, or tips, how to easily create them with mac80211 and hostapd?

Inject frames maybe? Easiest is probably to disable hw crypto, then you'll see the fully encrypted frames on a new monitor interface and can inject them again.

johannes

#2 lore raw
In reply to Kalle Valo
Quoted 3 lines · Kalle Valo

Now that AP mode works in mac80211 I want to use it to test Michael MIC failures in a wlan driver. Any recommendations, or tips, how to easily create them with mac80211 and hostapd?

There used to be test code for this in mac80211 that allowed testing of more or less all TKIP error cases (MIC error on TX/RX, ICV error on TX/RX, replay), but it looks like that has been mostly "cleaned up" be removal.. You might be able to find it from some old version..

Anyway, if you just want to test Michael MIC error processing on a client, force mac80211 to do software encryption and modify ieee80211_tx_h_michael_mic_add() in net/mac80211/wpa.c to insert an incorrect MIC (e.g., add mic[0]++; after the michael_mic() call). You will probably need a trigger mechanisms (say debugfs write) to enable this for a single TX frame in order to allow proper client testing.

Once I have some time, I could take a look at recovering the old design with a debugfs interface (it used to use private ioctl). It is useful to be able to test this type of things during development/system validation.

Signature · 1 line
Jouni Malinen                                            PGP id EFC895FA
author
#3 lore raw
Quoted 10 lines · ext Jouni Malinen
Quoted 3 lines · Kalle Valo

Now that AP mode works in mac80211 I want to use it to test Michael MIC failures in a wlan driver. Any recommendations, or tips, how to easily create them with mac80211 and hostapd?

There used to be test code for this in mac80211 that allowed testing of more or less all TKIP error cases (MIC error on TX/RX, ICV error on TX/RX, replay), but it looks like that has been mostly "cleaned up" be removal.. You might be able to find it from some old version..

Ok, I'll try to find it.

Quoted 6 lines

Anyway, if you just want to test Michael MIC error processing on a client, force mac80211 to do software encryption and modify ieee80211_tx_h_michael_mic_add() in net/mac80211/wpa.c to insert an incorrect MIC (e.g., add mic[0]++; after the michael_mic() call). You will probably need a trigger mechanisms (say debugfs write) to enable this for a single TX frame in order to allow proper client testing.

Thanks, this is very helpful.

Quoted 4 lines

Once I have some time, I could take a look at recovering the old design with a debugfs interface (it used to use private ioctl). It is useful to be able to test this type of things during development/system validation.

It sure is. I think I'm going to start using hostapd/mac80211 combo for all my development, a simple configuration file and proper logs are very handy compared to some crappy web interface. And having test cases like artificial Michael MIC failure makes the system even better.

I really hope that John can push the AP support to mainline during next merge window :)

Signature · 1 line
Kalle Valo
#4 lore raw
In reply to Jouni Malinen
Quoted 2 lines · Jouni Malinen

Anyway, if you just want to test Michael MIC error processing on a client, force mac80211 to do software encryption

On that matter, should we put a debugfs control knob in place to completely disable HW encryption in mac80211, so we don't need this override in all drivers?

johannes

#5 lore raw
Quoted 11 lines · Johannes Berg
Quoted 2 lines · Jouni Malinen

Anyway, if you just want to test Michael MIC error processing on a client, force mac80211 to do software encryption

On that matter, should we put a debugfs control knob in place to completely disable HW encryption in mac80211, so we don't need this override in all drivers?

johannes

Good idea.

Also, we might want to auto-disable HW encryption on a PHY that has one of the following configurations:
-both station and AP interfaces on a single PHY with different encryption on the station and the AP (do we already do this?) -only a monitor interface present
-(possibly) multiple monitor interfaces on the same PHY

Signature · 1 line
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
#6 lore raw
In reply to Johannes Berg
Quoted 3 lines · Johannes Berg

On that matter, should we put a debugfs control knob in place to completely disable HW encryption in mac80211, so we don't need this override in all drivers?

Yes, that would probably be a good idea. There are going to be number of cases when some combinations are not going to work (e.g., when IEEE 802.11w is added, I would expect to see some breakage..) and being able to force software encryption per device could end up being quite useful.

Signature · 1 line
Jouni Malinen                                            PGP id EFC895FA
author
#7 lore raw
In reply to Johannes Berg
Quoted 8 lines · Johannes Berg
Quoted 2 lines · Jouni Malinen

Anyway, if you just want to test Michael MIC error processing on a client, force mac80211 to do software encryption

On that matter, should we put a debugfs control knob in place to completely disable HW encryption in mac80211, so we don't need this override in all drivers?

I think there's a need for this and we should do it. Just look at this commit from earlier this week:

commit 05e6eb6f607cc3623c50b2a7c62b29ba6707a316

Author: Bob Copeland <[email protected]>
Date:   Wed Oct 29 08:30:54 2008 -0400

ath5k: enable hardware encryption for WEP

This change re-enables hardware encryption for ath5k after setting up mac80211 to handle the initialization vectors which happens to make it work. Add a module param (nohwcrypt) to optionally turn it off.

Having a support in mac80211 would make it easier both for the driver developers and users.

Signature · 1 line
Kalle Valo