Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.







Contenido

Índice


Revisiones

Fecha

Versión

Descripción

01/03/2024

1.0Creació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
titleImportante:

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

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:

  • MS SQL
  • ORACLE

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
titleNota:

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
titleImportante:

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
titleNota:

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:

  1. Posicionarse en la carpeta dentro de la instalación de VTOL en la ruta /Bin/Util.
  2. Detener VTOL Server para poder ejecutar la herramienta
  3. Crear índices faltantes (ver apartado 3.4 Crear índices faltantes)
  4. Actualizar estadísticas de las tablas involucradas en el proceso (ver apartado 3.5 Actualización de estadísticas en la BD)
  5. Ejecutar el archivo 3DEStoAES-Cryptool (con extensión bat para Windows, o sh para Linux)
  6. Volver a actualizarlas estadísticas de las tablas una vez finalizada la ejecución de la herramienta
  7. 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
languagesql
titleORACLE
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
titleImportante:

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
titleImportante:

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
titleImportante:

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

...