Seguramente para unos pasó desapercibido pero para otros no, fue una noticia de alcance mundial. Resulta que con el cambio de año del 2009 al 2010 en Alemania, repentinamente dejaron de funcionar aproximadamente 30 millones de tarjetas tanto de crédito como de débito. Justamente estas tarjetas usaban la tecnología EMV que es la tendencia actual hacia la cual nos estamos moviendo, el problema básicamente fue de tipo técnico y la forma de cómo se interpretan los datos y es lo que voy a explicar a continuación.
Sin duda, para la gente de Gemalto, proveedores de este tipo de tarjeta, el inicio de año no fue tan alegre como se esperaba, sobre ellos recaía la responsabilidad de solucionar esta novedad, pues si no se encontraba la forma de seguir usando las mismas tarjetas que ya estaban en poder de los clientes, cambiarlas a todos tendría un costo millonario, teniendo en cuenta el costo mismo de la tarjeta como tal, mas toda la logística de distribución, y las implicaciones e incomodidades que sufrirían los clientes por el servicio, esto incluso causo una caída del valor de la acciones de esta empresa, pero bueno felizmente lograron solucionarlo sin tener que cambiarla.
Resulta que actualmente estoy trabajando en un proyecto para la migración hacia este nuevo estándar y por lo tanto he tenido que penetrar a las propias “tripas” de esta tecnología, ante lo cual me quedaba la duda y la inquietud sobre lo que realmente pasó en Alemania, para así poder tener en cuenta este tipo de novedades así como también poder derivar e imaginar en otras situaciones que se podrían presentar.
A continuación trataré de explicar qué es lo que pasó, realmente, es un problema de tipo técnico, un poquito complejo de entender para quienes no están familiarizados con la forma en que se almacenan los unos y ceros en los componentes de los aparatos digitales, sin embargo trataré de explicarlo de la forma más didáctica posible.
La tecnología EMV por sí misma es bastante complicada de entenderla, las especificaciones incluso son vagas e insuficientes, a pesar de que las primeras versiones públicas datan desde 1996, los diferentes campos que almacenan la información se conocen como TAGs, y a vez cada TAG almacenada los datos es un formato llamado TLV (tag-long-value).
Ahora, con estos antecedentes vamos al problema propiamente dicho, resulta que dentro de los campos que maneja la tarjeta, se almacena la fecha actual (current date) en 3 bytes con formato YYMMDD en binary-code-decimal (BCD). Por ejemplo 1 de Enero del 2010 se almacenaría así “100101” sin embargo esto fue interpretado como si estuviera en hexadecimal y por lo tanto la tarjeta pensaba de que se trataba del año 2016 y por lo tanto las tarjetas se trataban como tarjetas expiradas, para almacenar en hexadecimal 1 de Enero del 2010 correctamente es “0A0101”. Como sabemos mientras los números vayan del 0-9 tanto en BCD como hexadecimal es lo mismo pero si hay problema justamente a partir del 2010.
Al analizar esta novedad, podemos ver que incluso se puede tratar de una novedad que justamente no fue bien manejada en le migración hacia Y2K, y claro por supuesto también hay responsabilidad con quienes programaron, pero sobre todo parece que a nadie en las pruebas y/o controles de calidad se les ocurrió probar con fechas futuras justamente para generar el escenario de tarjetas expiradas.