La segunda capa de defensa de 802.11i son las mejoras criptográficas del protocolo WEP original, que finalmente constituirán un sustituto completo de WEP. TKIP (Temporal Key Integrity Protocol) y CCMP (Counter Mode with CBC-MACProtocol) son las nuevas implementaciones de cifrado de 802.11i, diseñadas para eliminar el defectuoso protocolo WEP de las redes 802.11. TKIP es una mejora de WEP, que se supone que soluciona todas las vulnerabilidades conocidas de WEP. La seguridad criptográfica actual de WPA se basa en el uso de TKIP, que utiliza vectores de inicialización de 48 bits para evitar el abuso de la reutilización de vectores de inicialización del ataque FMS. El intervalo estimado de aparición de marcos con vectores de inicialización débiles con TKIP es de un siglo, por lo que para cuando un cracker reúna los 3000 o más marcos interesantes, tendrá 300000 años.
Lamentablemente, lo que es fácil en teorÃa puede ser difÃcil de implementar en la práctica. El hardware heredado que sigue dominando el mercado no desaparecerá en una semana, y no puede comprender vectores de inicialización de 48 bits. Para solucionar este problema, los vectores de inicialización de TKIP se dividen en dos partes de 16 y 32 bits. La parte de 16 bits se rellena hasta ocupar los 24 bits de un vector de inicialización tradicional. El relleno se hace de una forma que evita la posibilidad de generar vectores de inicialización débiles. Resulta interesante que la parte de 32 bits no se utilice para la generación del vector de inicialización transmitido; en lugar de eso, se utilizan en la mezcla de claves por paquete de TKIP.
TKIP lleva a cabo la mezcla de claves por paquete con los vectores de inicialización para introducir una confusión adicional en las claves (en el capÃtulo siguiente podrá ver explicado este término). El proceso de generación de claves por cada paquete consiste en dos fases y utiliza diversos parámetros de entrada, como la dirección MAC del dispositivo transmisor, los 32 bits ya comentados del vector de inicialización, los primeros 16 bits del vector de inicialización y la clave temporal de la sesión. La primera fase implica la mezcla de la clave temporal de la sesión, los 32 bits del IV y la dirección MAC del transmisor. En la segunda fase se mezcla la salida de la primera fase con la clave temporal de la sesión y los 16 bits del IV. La fase 1 elimina el uso de la misma clave para todas las conexiones, y la segunda fase reduce la correlación entre el IV y la clave generada para cada paquete. FÃjese en que la mezcla de clave produce como resultado claves distintas para cada dirección de las comunicaciones sobre cada enlace. Ya que la función de mezcla de claves por paquete es básicamente un sistema de cifrado Feistel diminuto pero completo, en el próximo capÃtulo analizaremos su funcionamiento después de presentar toda la terminologÃa necesaria.
Otra implementación novedosa del vector de inicialización en TKIP es utilizarlo como contador de secuencia. Recuerde que existen herramientas de ataque de reproducción que utilizan la reinyección de tráfico para acelerar la ruptura del protocolo WEP o incluso para analizar puertos de las máquinas inalámbricas (reinj, WEPWedgie). No existe ningún medio en el protocolo WEP tradicional para impedir el éxito de estos ataques, ya que ningún estándar define cómo deberÃan seleccionarse los vectores de inicialización. En la mayorÃa de los casos se trata de una selección aleatoria (o seudoaleatoria). Por el contrario, el vector de inicialización de TKIP se incrementa secuencialmente y se descartan todos los paquetes con vectores de inicialización que no se correspondan con esta secuencia. Esto mitiga el efecto de los ataques de reproducción, pero crea un problema con algunas mejo^as^de la calidad de servicio introducidas por el grupo de trabajo "e" del IEEE 802.11. En particular, no basta con responder con mensajes de ACK a cada marco recibido, tal y como define el algoritmo CSMA/CA original. Por eso se propuso una mejora llamada burst-ACK (o ACK de ráfagas). Según esta mejora, no se responde mediante ACK a cada marco, sino a series de 16 marcos. Si alguno de estos 16 marcos no ha llegado a su destino, se aplica un ACK selectivo (parecido al ACK selectivo en las opciones de TPC) para retransmitir el marco perdido y todos los 16 marcos. Por supuesto, un contador de secuencia TKIP rechazará el marco retransmitido si se han recibido marcos con números IV mayores. Para evitar este problema, TKIP utiliza una ventana de repetición que sigue la pista de los últimos 16 valores IV recibidos y comprueba si el marco duplicado se corresponde con uno de esos valores. Si es asà y aún no se ha recibido, se acepta.

