Contenido
Índice |
---|
Revisiones
Fecha | Versión | Descripción |
---|---|---|
01/03/2024 | 1.0 | Creación del documento |
1. Introducción
1.1. Objetivo y audiencia
La aplicación RS-VTOL Crédito Débito utiliza fuertes algoritmos de encriptación para el manejo de datos sensibles de las tarjetas. Estos datos son almacenados en el sistema utilizando claves administrables por el usuario. Por norma PCI, estas claves, o material criptográfico, deben ser eliminados o cambiados entre cambios de versión de VTOL.
...
Aviso | ||
---|---|---|
| ||
Para usar correctamente la implementación de AES con VTOL se debe tener instalada al menos la versión de JDK 8u151 |
1.2. Alcance
RS-VTOL Crédito Débito.
1.3. Cliente/ Proyecto
Cliente: Napse
Proyecto: Implementación de PCI-S3 v1.1
1.4. Vocabulario común y acrónimos
AES-256:
PCI S3:
1.5. Referencias
Referencia | Documento |
---|---|
2. Requerimientos
Los siguientes son los requerimientos necesarios:
- Tener instalado correctamente la aplicación RS-VTOL Crédito Débito
- Poseer y leer de forma completa este documento
- Acceso a la herramienta 3DEStoAES-Cryptool
- Tener completa la siguiente lista de datos que se pedirán durante la fase de ejecución de la herramienta
2.1 Lista de requerimientos
Dato | Descripción |
Motor de DB | Tipo de motor de base de datos soportados:
|
DB IP | Dirección IP o nombre de red de la base de datos que utiliza VTOL |
DB Name | Nombre de instancia de la base datos que utiliza VTOL |
DB User | Usuario de base de datos con los suficientes privilegios para truncar información de las tablas que utiliza VTOL |
DB Password | Contraseña para que el usuario de base de datos pueda autenticarse satisfactoriamente |
RS-VTOL Login User | Usuario habilitado de la consola Web de VTOL. Debe tener permiso de administrador (custodio) de clave para las versiones PADSS v1 y v2, o ser administrador de la consola para versiones previas |
Login Password | Contraseña del usuario de la consola Web de VTOL |
Master Directory | Si la versión de VTOL sobre la que se ejecuta la herramienta es la PADSS v1, este dato indica el directorio donde se almacena al archivo que contiene la clave de encriptación maestra. Por defecto es el siguiente: {JBOSS_HOME}\server\rsvtol\dist\config\modules\cd-ar\util\ |
Recovery period | Tiempo de Recuperación, expresado en horas. Por defecto su valor es 2, y puede ser editado entre 1 y 24. Representa el tiempo luego de su creación, en que las claves maestras y operativas no van a ser actualizadas por la herramienta. Es decir, si el tiempo transcurrido desde la creación de la clave maestra no supera el tiempo de recuperación, la herramienta no cambia las claves maestra y operativa, las toma como vigentes. Es de utilidad cuando la ejecución de la herramienta se ve interrumpida. Al volverse a ejecutar dentro del periodo de recuperación, retoma la encriptación de datos sensibles desde el punto donde quedo al momento de la caída. . Si la clave fue actualizada dentro del periodo de tiempo configurado, pero no está encriptada con algoritmo AES también se actualiza. |
Nota | ||
---|---|---|
| ||
Los valores listados con anterioridad deben ser almacenados de forma segura, lejos del conocimiento público. Por lo tanto, se aconseja no grabarlos en este documento ni mucho menos, imprimir el mismo con dichos datos ya que podrían caer en manos no deseadas. Se aconseja discreción de la información. |
3. Procedimiento
3.1 Mecanismos criptográficos
Antes de comenzar a describir el funcionamiento de esta herramienta es clave indicar como VTOL administra o maneja la encriptación de datos sensibles. VTOL encripta todos los datos sensibles de las tarjetas utilizando un mecanismo de encriptación el cual está basado en la utilización de varias claves de encriptación. A continuación, se muestra un diagrama de la secuencia o cadena que se implementa para realizar tal fin:
...
Las “Claves Administrables” son utilizadas para encriptar los datos sensibles de las tarjetas que se guardarán en la base de datos. En el gráfico estos datos se llaman “Datos Encriptados”. Los datos encriptados serán los siguientes:
Tabla | Campos | Temporal |
CreditDebitOperationRequest | cardNumber | NO |
expirationDate | NO | |
cvc | SI | |
track1 | SI | |
track2 | SI | |
chipTockens | SI | |
FinancialTransaction | expirationDate | NO |
cardNumber | NO | |
ClosedFinancialTransaction | expirationDate | NO |
cardNumber | NO | |
EMVAdviceEntry | chipTockens | SI |
Aviso | ||
---|---|---|
| ||
Si un dato es temporal significa que será eliminado automáticamente por VTOL al finalizar la transacción. En caso de no serlo, permanecerá en la base de datos hasta tanto el proceso de depuración automático no lo depure (máximo de 90 días). |
La “Clave Administrable” es la clave que requiere ser cambiada cada una cierta cantidad de tiempo. Esta Esta cadena de encriptación se hace para poder administrar las claves y para poder brindar mayor seguridad al sistema. El algoritmo de encriptación utilizado en todos estos pasos es 3DESAES.
La clave criptográfica cambia en el caso de las claves que han llegado al final de su período de cifrado, con el objetivo de mantener la seguridad de los datos, es importante remarcar que las claves serán eliminadas pasado un determinado período de tiempo (por defecto son 90 días).
Nota | ||
---|---|---|
| ||
Ver el capítulo “11.3 Configuración para la depuración de datos” del manual “VTOLCR-DB-Guía de implementación”. |
3.2 Descripción
3DEStoAES-Cryptool es una herramienta que se encarga de cambiar el material criptográfico de la aplicación VTOL. La misma debe ser utilizada exclusivamente para hacer una migración de una versión 3.8.X a la versión 3.8.1.0.
...
Para esta parte del procedimiento se debe definir un usuario de custodia quien se encargará de ejecutar este procedimiento, hay que tener en cuenta que no se necesitará que el custodia se encargue de las claves ya que este proceso ha sido automatizado.
3.2.1 Actualización de claves
En una sola transacción se procesan las siguientes operaciones:
- Encripción de los datos de la tabla RS_AUDIT.
- Generación automática y aleatoria de una nueva clave maestra
- Generación automática y aleatoria de una nueva clave operativa
- Persistencia en base de datos la nueva clave operativa encriptada mediante la utilización de la nueva clave maestra
- De existir claves operativas previas, se debe hacer una re - encriptación de las mismas utilizando la nueva clave maestra
- Por último, registración de la clave maestra en el sistema de archivos
- Generación automática y aleatoria de una nueva clave de persistencia
3.2.2 Actualización de datos sensibles
Luego de la actualización de las claves operativas, se toma cada una de ellas una por una y se procesan sus datos transaccionales en intervalos. El procesamiento consiste en desencriptar los datos sensibles utilizando la clave operativa vieja encriptada con 3DES, y volverlos a encriptar utilizando la clave operativa nueva, encriptada con AES-256. Cuando se termina de procesar el intervalo, se refleja completo en base de datos.
3.2.3 Eliminación de material criptográfico
En este procedimiento se eliminan todos los datos transaccionales, por ende, también se eliminan los datos sensibles que se encuentran encriptados. Al final del procedimiento también se elimina todo el material criptográfico (clave operativa y clave maestra) y se dan de alta las nuevas claves. Estas claves también estarán encriptadas en forma de cadena tal como se indicó en el capítulo 6.1 Mecanismos criptográficos.
Es importante mencionar que esta opción o procedimiento es absolutamente necesaria para pasar de un ambiente de laboratorio a un ambiente de producción y así cumplir con lo establecido en PCI-DSS.
3.3 Instalación y ejecución
A continuación, se especifican los pasos:
- Posicionarse en la carpeta dentro de la instalación de VTOL en la ruta /Bin/Util.
- Detener VTOL Server para poder ejecutar la herramienta
- Crear índices faltantes (ver apartado 3.4 Crear índices faltantes)
- Actualizar estadísticas de las tablas involucradas en el proceso (ver apartado 3.5 Actualización de estadísticas en la BD)
- Ejecutar el archivo 3DEStoAES-Cryptool (con extensión bat para Windows, o sh para Linux)
- Volver a actualizarlas estadísticas de las tablas una vez finalizada la ejecución de la herramienta
- Recomendar al DBA, como una buena práctica, el agregar tareas planificadas que actualicen las estadísticas de las tablas involucradas en el proceso
3.4 Crear índices faltantes
Para poder ejecutar la herramienta es necesario verificar la existencia de todos los índices requeridos en las tablas que se procesan. Los índices son:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
CREATE INDEX CLOSEDFINANCIALTRX_IDX1 ON CLOSEDFINANCIALTRANSACTION ( ENCRYPTEDPASSID ASC ); CREATE INDEX CLOSEDFINANCIALTRX_IDX2 ON CLOSEDFINANCIALTRANSACTION ( CLIENTDATE ASC ); CREATE INDEX CLOSEDFINANCIALTRX_IDX3 ON CLOSEDFINANCIALTRANSACTION ( ENCRYPTEDPASSID ASC, CLIENTDATE ASC ); CREATE INDEX FINANCIALTRX_IDX1 ON FINANCIALTRANSACTION ( ENCRYPTEDPASSID ASC ); CREATE INDEX FINANCIALTRX_IDX2 ON FINANCIALTRANSACTION ( CLIENTDATE ASC ); CREATE INDEX FINANCIALTRX_IDX3 ON FINANCIALTRANSACTION ( ENCRYPTEDPASSID ASC, CLIENTDATE ASC ); CREATE INDEX CDOPERATIONREQUEST_IDX1 ON CREDITDEBITOPERATIONREQUEST ( ENCRYPTEDPASSID ASC ); CREATE INDEX CDOPERATIONREQUEST_IDX2 ON CREDITDEBITOPERATIONREQUEST ( DATETIME ASC ); CREATE INDEX CDOPERATIONREQUEST_IDX3 ON CREDITDEBITOPERATIONREQUEST ( ENCRYPTEDPASSID ASC, DATETIME ASC ); |
3.5 Actualización de estadísticas en la BD
Antes de ejecutar la herramienta y luego de que la misma haya finalizado, es necesario actualizar las estadísticas de las tablas involucradas en el proceso. Para ello se deben ejecutar las siguientes sentencias, según el motor de base de datos:
...
Es normal que la actualización lleve varios minutos, más aún cuando la tabla tiene muchos registros, debido a que deben actualizar los índices.
3.6 Utilización
Aviso | ||
---|---|---|
| ||
Antes de ejecutar la herramienta y luego de que la misma haya finalizado, es necesario actualizar las estadísticas de las tablas involucradas en el proceso. |
...
Hay que tener en cuenta que existe una serie de parámetros de configuración definidos en estos archivos.
3.6.1 Parámetros de configuración
En los archivos 3DEStoAES-Cryptool.bat y 3DEStoAES-Cryptool.sh se pueden configurar los siguientes parámetros de configuración:
Parámetro | Descripción | Valor por defecto |
regionExtension | Clase de extensión por región. | ar.com.retailsolutions.vtol.util.cryptool.DefaultRegionExtension |
rangeInMinutes | Rango en minutos utilizado para tomar y procesar los datos en las distintas tablas. | Por defecto 60 minutos (1 hs). |
maxThreads | Cantidad de Threads utilizados para el procesamiento. | Por defecto 10 threads. |
processingRetries | Cantidad de reintentos al producirse un problema en el procesamiento de un bloque de datos. | Por defecto 5 reintentos. |
timeBetweenRetries | Tiempo de espera entre reintentos expresado en milisegundos | Por defecto 10000 (10 segundos) |
Aviso | ||
---|---|---|
| ||
Los parámetros que indican la cantidad de Threads y el rango de tiempo para tomar y procesar las transacciones, pueden variar según las características del entorno del cliente. |
3.6.2 Ejecución
Una vez ejecutado el comando la aplicación iniciará y se mostrará la siguiente información en pantalla:
...
Bloco de código |
---|
[INFO] - [LAUNCHER] - Starting app.. [2024-03-12 16:55:28,750] [INFO] THIS APPLICATION WILL REMOVE OR CHANGE DATA ENCRYPTION KEYS [2024-03-12 16:55:28,752] [INFO] AS NEED BY PCI SOFTWARE SECURITY STANDARD PROCESS. [2024-03-12 16:55:28,752] [INFO] ANY ENTERED VALUE WRONGLY WILL CAUSE DATA LOSS, SO TAKE IT [2024-03-12 16:55:28,752] [INFO] SERIOUSLY. [2024-03-12 16:55:28,753] [INFO] ALSO, IT IS IMPORTANT TO KNOW THAT THIS PROCESS MAY TAKE [2024-03-12 16:55:28,753] [INFO] A LONG TIME, SO ONCE IT HAS STARTED, DO NOT STOP IT. [2024-03-12 16:55:28,754] [INFO] THE NEXT STEP WILL ASK YOU FOR SOME INFORMATION. FOR BETTER [2024-03-12 16:55:28,754] [INFO] UNDERSTANDING REFER TO USER GUIDE. [2024-03-12 16:55:28,754] [INFO] APPLICATION PARAMETERS [2024-03-12 16:55:28,755] [INFO] REGION EXTENSION: ar.com.retailsolutions.vtol.util.cryptool.DefaultRegionExtension [2024-03-12 16:55:28,755] [INFO] RANGE IN MINUTES: 60 [2024-03-12 16:55:28,755] [INFO] MAX THREADS: 10 [2024-03-12 16:55:28,755] [INFO] PROCESSING RETRIES: 5 [2024-03-12 16:55:28,755] [INFO] TIME BETWEEN RETRIES: 10000 [2024-03-12 16:55:28,755] [INFO] Enter DB Engine (default MSSQL): [2024-03-12 16:55:28,757] [INFO] 1-MS SQL [2024-03-12 16:55:28,757] [INFO] 2-ORACLE 1 [2024-03-12 16:56:12,413] [INFO] Enter DB IP: localhost [2024-03-12 16:56:18,958] [INFO] Enter DB Name: GoCuotas1901 [2024-03-12 16:56:39,384] [INFO] Enter DB User: sa [2024-03-12 16:56:43,817] [INFO] Enter DB Password: nosotros [2024-03-12 16:56:49,263] [INFO] RS-VTOL Version 3.8.1 PCI S3v1.1 [2024-03-12 16:56:49,263] [INFO] Enter RS-VTOL Login User (Note: User must be a 'Key Custodian'): AdminV [2024-03-12 16:56:55,233] [INFO] Enter Login Password: Admin2 [2024-03-12 16:56:58,615] [INFO] User has 'Key Custodian' rights. [2024-03-12 16:56:58,615] [INFO] Enter Current Master Key directory: C:\key\VTOL_GoCuotas19012024 [2024-03-12 16:57:29,564] [INFO] Would you like to decrypt and encrypt all sensible card data in current data base? (default TRUE) [2024-03-12 16:57:29,565] [INFO] 1-TRUE [2024-03-12 16:57:29,566] [INFO] 2-FALSE 1 [2024-03-12 16:57:33,153] [INFO] Recovery period in hours (2 hours by default). It must be less than 24... 1 [2024-03-12 16:57:35,332] [INFO] The Recovery period is 1 hours! [2024-03-12 16:57:37,032] [INFO] Processing is starting, check log for futher information. 2024-03-12 16:57:37,033 INFO [UpdateKeysUtilityAes ] [main] Starting Process. 2024-03-12 16:57:37,627 INFO [UpdateKeysUtilityAes ] [EncryptAuditKeysThread] Updating records between 12-03-2024 16:53:08,287 and 12-03-2024 22:53:08,287 in table rs_audit 2024-03-12 16:57:37,640 INFO [UpdateKeysUtilityAes ] [EncryptAuditKeysThread] Load records between 12-03-2024 16:53:08,287 and 12-03-2024 22:53:08,287 in table rs_audit in 4 Milliseconds. 2024-03-12 16:57:37,914 INFO [UpdateKeysUtilityAes ] [EncryptAuditKeysThread] Commiting 4 records between 12-03-2024 16:53:08,287 and 12-03-2024 22:53:08,287 in table rs_audit 2024-03-12 16:57:37,916 INFO [UpdateKeysUtilityAes ] [EncryptAuditKeysThread] Commit Done. 4 records were processed between 12-03-2024 16:53:08,287 and 12-03-2024 22:53:08,287 for the table rs_audit in 275 MilliSeconds. 2024-03-12 16:57:39,063 INFO [UpdateKeysUtilityAes ] [main] Creating new Master key with id=1710273459060 creationdate=Tue Mar 12 16:57:39 ART 2024 2024-03-12 16:57:39,066 INFO [UpdateKeysUtilityAes ] [main] Updating EncryptedPassword id=4 creationdate=Tue Mar 12 16:52:12 ART 2024 2024-03-12 16:57:39,245 INFO [UpdateKeysUtilityAes ] [main] Creating new Operative key with id=5 creationdate=Tue Mar 12 16:57:39 ART 2024 2024-03-12 16:57:39,250 INFO [UpdateKeysUtilityAes ] [main] Updating Master Key File: 'master.key'. Saving new master key with ID [1710273459060] 2024-03-12 16:57:39,250 INFO [UpdateKeysUtilityAes ] [main] Check if Master Key directory exists.' 2024-03-12 16:57:39,252 INFO [UpdateKeysUtilityAes ] [main] Master Key file was updated successfully. 2024-03-12 16:57:39,267 INFO [UpdateKeysUtilityAes ] [main] Updating persistence key with id=3 creationdate=Tue Mar 12 16:57:39 ART 2024 2024-03-12 16:57:39,271 INFO [UpdateKeysUtilityAes ] [main] Update Transactional Data. Checking the number of records to process. 2024-03-12 16:57:39,289 INFO [UpdateKeysUtilityAes ] [main] Missing process [2] records.!!! 2024-03-12 16:57:39,291 INFO [UpdateKeysUtilityAes ] [main] Processing EncryptedPassword id =4 creationdate=2024-03-12 16:52:12.327 2024-03-12 16:57:39,303 INFO [UpdateKeysUtilityAes ] [main] TOTAL PROCESSED RECORDS IS [4] IN TIME [0] SECONDS. MISSING PROCESS [-2] RECORDS IN AN ESTIMATED TIME OF [0] SECONDS. 2024-03-12 16:57:39,303 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Updating records between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 in table FinancialTransaction 2024-03-12 16:57:39,315 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Load records between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 in table FinancialTransaction in 4 Milliseconds. 2024-03-12 16:57:39,418 INFO [UpdateKeysUtilityAes ] [main] No Transaction in table [ClosedFinancialTransaction] 2024-03-12 16:57:39,421 WARN [UpdateKeysUtilityAes ] [main] MaskedCardNumber will not be populated because it does not exist in table CreditDebitOperationRequest 2024-03-12 16:57:39,428 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Updating records between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 in table CreditDebitOperationRequest 2024-03-12 16:57:39,437 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Load records between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 in table CreditDebitOperationRequest in 2 Milliseconds. 2024-03-12 16:57:39,442 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Commiting 1 records between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 in table CreditDebitOperationRequest 2024-03-12 16:57:39,444 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Commit Done. 1 records were processed between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 for the table CreditDebitOperationRequest in 7 MilliSeconds. 2024-03-12 16:57:39,520 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Commiting 1 records between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 in table FinancialTransaction 2024-03-12 16:57:39,521 INFO [UpdateKeysUtilityAes ] [PersistBinThread] Commit Done. 1 records were processed between 12-03-2024 16:54:12,000 and 12-03-2024 17:54:12,000 for the table FinancialTransaction in 206 MilliSeconds. 2024-03-12 16:57:39,537 INFO [UpdateKeysUtilityAes ] [main] All the records have been processed successfully. 2024-03-12 16:57:40,056 INFO [UpdateKeysUtilityAes ] [main] Deleting EncryptedPassword id= 4 creationdate=2024-03-12 16:52:12.327 2024-03-12 16:57:40,075 INFO [UpdateKeysUtilityAes ] [main] End. Total time: 3 segs [2024-03-12 16:57:40,075] [INFO] Processing has finished. C:\wildfly-18.0.1.Final\VTOL_AESV16V17\bin\util>pause Presione una tecla para continuar . . . |
3.6.3 Explicación de log
- Starting Process...
Inicia la aplicación
...
- Total time: 3 segs
Finaliza el proceso.
3.6.5 Consideraciones Adicionales
Aviso | ||
---|---|---|
| ||
La herramienta sufrió cambios importantes en cuanto al procesamiento de las transacciones. Es necesario realizar pruebas en laboratorio con bases de datos pobladas similares al ambiente de producción para definir parámetros de configuración que mejor se ajusten al caso |
...