El cifrado de flujo Grain 128a se propuso por primera vez en el Symmetric Key Encryption Workshop (SKEW) en 2011 [1] como una mejora del predecesor Grain 128, que agregó mejoras de seguridad y autenticación de mensajes opcional utilizando el enfoque Encrypt & MAC. Una de las características importantes de la familia Grain es que se puede aumentar el rendimiento a expensas de hardware adicional. Grain 128a está diseñado por Martin Ågren, [1] Martin Hell, Thomas Johansson y Willi Meier.
Grain 128a consta de dos grandes partes: función de salida previa y MAC. La función de salida previa tiene un tamaño de estado interno de 256 bits, que consta de dos registros de 128 bits de tamaño: NLFSR y LFSR . El MAC admite longitudes de etiquetas variables w tales que . El cifrado utiliza una clave de 128 bits.
El cifrado admite dos modos de operación: con o sin autenticación, que se configura a través de la proporcionada de tal manera que si la autenticación del mensaje está habilitada y si la autenticación del mensaje está deshabilitada.
La función de salida previa consta de dos registros de 128 bits de tamaño: NLFSR ( ) y LFSR ( ) junto con 2 polinomios de retroalimentación y una función booleana .