Para responder primero a la segunda pregunta, ("No veo ninguna razón detrás de esto, si el atacado puede llegar a los valores, también puede acceder a la clave de cifrado, ¿no?") el raspado de RAM disponible en el mercado el malware simplemente sabe cómo identificar los datos de seguimiento en la memoria. No entiende el mapa de memoria de su proceso de registro. No conoce tus estructuras o campos. No intenta encontrar un búfer char * con la etiqueta "Track_Data". Simplemente lee toda la memoria en su proceso y si coincide con un patrón de 15 o 16 dígitos, lo raspa y lo envía al malvado. El software malicioso no sabe qué bytes forman una clave de cifrado, por lo que una vez que sus datos están encriptados, el software malicioso no los verá. (El malware típico no es muy sofisticado, y ciertamente no reconocería datos XOR o ROT-13, y mucho menos un bloque de datos cifrados AES-128).
Tenga en cuenta que los atacantes deben ser sigilosos: si enviaran volcados de RAM de 2GB desde cada caja registradora después de cada transacción, la gente de la red probablemente se daría cuenta. Solo envían la menor cantidad de datos que necesitan, y no intentan descifrar nada.
(Tenga en cuenta que esto es cierto solo para el malware de uso general de raspado de RAM como Dexter y BlackPOS; si hay malware dirigido a una aplicación específica, puede personalizarse para comprender las estructuras de memoria y tratar de robar claves y / o datos encriptados de direcciones específicas. Todo depende de los atacantes.)
-
Tal como se le preguntó, la primera parte de su pregunta casi describe una condición de carrera: ¿en qué punto los datos de la pista se consideran "en reposo"? ¿Es solo cuando aterriza en un disco duro, o puede considerarse en reposo mientras está en la memoria esperando ser cifrado?
Pero ahora tienes que seguir adelante y obtener más detalles. ¿Está en reposo cuando aterriza en los buffers del controlador del dispositivo USB? ¿Está en reposo cuando se publica un mensaje de Windows para notificar a su proceso que se han ingresado nuevos datos de seguimiento? ¿Está en reposo cuando el búfer se envía al algoritmo de cifrado? ¿Está en reposo cuando la aplicación analiza la pista para recuperar el nombre del titular de la tarjeta, el código de servicio, PAN, CVV y la fecha de vencimiento? ¿Está en reposo cuando elimina los últimos 4 dígitos del recibo? ¿Está en reposo si la aplicación está procesando el número de cuenta de alguna manera antes del cifrado? ¿Quizás validar un dígito de control o determinar si se trata de una tarjeta de crédito Visa o de otro tipo? ¿Está en reposo cuando se está construyendo el mensaje de autorización? Ninguna de esas actividades parece que los datos descansan mucho, y muchas de esas actividades son funciones comunes en los sistemas de POS. En total, todo ese procesamiento puede tardar unos milisegundos o más en ejecutarse.
Ahora consideremos a los atacantes del mundo real. El malware utilizado en algunas de las infracciones de mayor nombre fue el malware de raspado de RAM, y es extremadamente agresivo. Puede barrer a través de la memoria del registro cientos de veces por segundo, y disparar en un breve vistazo de PAN o datos de seguimiento. Puede capturar los datos de seguimiento que llegan a los búferes USB, en los buffers de mensajes de Windows antes de que se notifique a la aplicación, mientras se los descompone en las rutinas de análisis, o incluso mientras se invocan las rutinas de cifrado. Incluso si cumple a la perfección con la letra de las leyes de PCI-DSS y la cifra tan pronto como la ve su aplicación, aún es vulnerable a una violación si algún miembro de esta familia de programas maliciosos ingresa en sus cajas registradoras.
En lugar de centrarse en la interpretación exacta del PCI-DSS, es mejor evitar la situación por completo eliminando tantos sistemas como sea posible del alcance de PCI. Si puede, saque los datos de seguimiento de la caja registradora y colóquelos en un terminal de pago separado que pueda cifrar los datos antes de enviarlos a su caja registradora.
Si mueve el cifrado a un dispositivo separado ubicado fuera del entorno de la caja registradora, el registro nunca necesita recibir datos de PAN o de seguimiento de texto simple. Cualquier malware que encuentre su camino en sus registros no encontrará datos de seguimiento para raspar. Y un terminal de pago tendrá una superficie de ataque mucho más pequeña que una aplicación de caja registradora basada en Windows.