Encriptar datos de PAN (Personal Account Number) o número de tarjeta

Luis Ramirez
2 min readJul 29, 2024

--

Toda entidad financiera debe enmascarar o encriptar datos sensibles. Los datos de las tarjetas son considerados sensibles, específicamente el PAN (Personal Account Number)o número de tarjeta en la mayoría de caso no se encuentra enmascarado o encriptado lo que supone un riesgo de seguridad.

Para ello se procedió a realizar una prueba de concepto para la encriptación de los datos de la tarjeta de crédito.

Pasos

  1. Para la encriptación en MySQL se usó el algoritmo AES (Advanced Encryption Standard) el cual tiene dos funciones: AES_ENCRYPT(str_dato,str_llave) y AES_DECRYPT (str_dato,str_llave). Ambas funciones reciben como parámetros la cadena a encriptar y la llava para encriptar.
  2. Se debe generar la llave para la encriptación. Recomendable usar llaves de 256 bits o 32 bytes para una seguridad robusta. Esta llave se puede generar en linux, con librerias en python o con php. Para este caso se usó linux online con el siguiente comando.
openssl rand -hex 32

3. Realizar las inserciones en la tabla “tarjetas”

-- encriptar toda la tarjeta
INSERT INTO tarjetas VALUES (3,'110-2-987898763',AES_ENCRYPT('4567889100901212','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
INSERT INTO tarjetas VALUES (4,'110-2-987898764',AES_ENCRYPT('4567889100901213','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
INSERT INTO tarjetas VALUES (5,'110-2-987898765',AES_ENCRYPT('4567889100901214','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))
INSERT INTO tarjetas VALUES (6,'110-2-987898766',AES_ENCRYPT('4567889100901215','f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'))

4. Consulta para mostrar los datos

SELECT 
id,
cuenta,
tarjeta as PAN_ENCRYPTADO,
AES_DECRYPT(tarjeta,'f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a') as PAN_EN_CLARO,
CONCAT("**** **** **** ",SUBSTRING(AES_DECRYPT(tarjeta,'f06c5d9a09a0279fda7b9455ea7e117aca2d12d20fab67dfef556e546e8ff65a'),-4)) as PAN_LAST_DIGITS
FROM tarjetas

5. Visualización de datos

--

--

Luis Ramirez
Luis Ramirez

Written by Luis Ramirez

Founder STARK & AV | Co-Founder of ANDHEURIS| Software Engineer | Product Manager

No responses yet