Administración de claves de cifrado PCI

22

(Revelación completa: ya soy un participante activo aquí y en StackOverflow, pero por razones que espero sean obvias, estoy eligiendo hacer esta pregunta en particular de forma anónima).

Actualmente trabajo en una pequeña tienda de software que produce software que se vende comercialmente para administrar pequeñas y medianas empresas en un par de industrias bastante especializadas. Debido a que estas industrias están orientadas al cliente, una gran parte del software está relacionada con el almacenamiento y la administración de la información del cliente. En particular, el almacenamiento (y la obtención) de la información de la tarjeta de crédito del cliente. Con eso, por supuesto, viene el cumplimiento de PCI.

Para resumir una larga historia, me quedan un par de preguntas sobre por qué ciertas cosas se hicieron de la manera en que se hicieron, y lamentablemente no tengo muchos recursos en este momento. Esta es una pequeña tienda muy (informo directamente al propietario, al igual que el otro empleado de tiempo completo), y el propietario no tiene una respuesta a estas preguntas, y el desarrollador anterior es ... err ... no disponible.

Problema 1: Recifrado periódico

A partir de ahora, el software solicita al usuario que realice un nuevo cifrado de toda la información confidencial en la base de datos (básicamente, números de tarjetas de crédito y contraseñas de usuarios) si se cumple alguna de estas condiciones:

  1. Hay datos no cifrados de información confidencial en la base de datos (agregados a través de una declaración de base de datos manual en lugar de a través del objeto comercial, por ejemplo). Esto no debería ocurrir durante el uso ordinario del software.

  2. La clave actual ha estado en uso por más de un período de tiempo en particular. Creo que son 12 meses, pero no estoy seguro de eso. El punto aquí es que la clave "expira".

Esta es mi primera incursión en el desarrollo de soluciones comerciales que se relaciona con PCI, por lo que, lamentablemente, no tengo educación sobre las prácticas involucradas. ¿Hay algún aspecto del cumplimiento de PCI que obliga (o incluso simplemente recomienda) la actualización periódica de la clave?

Esto no es un gran problema para mí, además de que actualmente no tengo una buena explicación para dar a los usuarios finales si preguntan por qué se les pide que lo ejecuten.

Pregunta 1: ¿Es el concepto del estándar de caducidad de la clave y, de ser así, es simplemente el estándar de la industria o un elemento de PCI?

Problema 2: Almacenamiento de claves

Aquí está mi problema real ... la clave de cifrado se almacena en la base de datos , solo que está ofuscada. La tecla se rellena a la izquierda y a la derecha con algunos bytes de basura y algunos bits están trenzados, pero fundamentalmente no hay nada que impida que una persona emprendedora examine nuestro código (dotfuscated), determinando el patrón utilizado para convertir la clave almacenada en la clave real. luego usando esa tecla para correr locamente. Esto me parece una práctica horrible, pero quiero asegurarme de que esta no sea solo una de esas prácticas de "sonríe y sopórtala" que la gente de esta industria ha aceptado. He desarrollado un enfoque alternativo que evitaría un ataque de este tipo, pero solo estoy buscando un control de validez aquí.

Pregunta 2: ¿Este método de almacenamiento de claves, es decir, almacenar la clave en la base de datos utilizando un método de ofuscación que existe en el código del cliente, es normal o está loco?

Créeme, sé que el asesoramiento gratuito vale cada centavo que pagué, que nadie es abogado (o al menos no ofrece asesoramiento legal), Caveat Emptor, etc., etc., pero Estoy buscando cualquier entrada que todos puedan proporcionar. ¡Gracias de antemano!

    
pregunta Unicorn Bob 01.01.2011 - 00:11
fuente

5 respuestas

9

Problema 1: menciona el cifrado de contraseña. En primer lugar, ¿por qué se utilizan las contraseñas en lugar de los hashes con sal de las contraseñas? En cuanto a la rotación / expiración de claves, he visto (y codificado) políticas como esa. Cuanto más tiempo esté en uso una clave (y cuantas más veces se use), mayor será el riesgo de que se comprenda o se descubra. Algunos sistemas, por ejemplo, Windows DPAPI caducan automáticamente las claves, los certificados SSL tienen fechas de caducidad después de las cuales muchos sistemas no los usarán para cifrar nuevos datos y así sucesivamente.

Problema 2: Sí, eso es malo. Increíblemente malo.

El cumplimiento de la PCI especificaciones de auditoría para el estado de PAN "Criptografía fuerte, como Triple-DES 128 -bit o AES de 256 bits, con procesos y procedimientos de administración de claves asociados "

Se podría argumentar que la rotación es parte del proceso de gestión de claves, y almacenar la clave de forma segura lejos de los datos definitivamente es parte de un proceso de gestión de claves.

La sección 3.6.4 de las especificaciones de auditoría va más allá y establece

  

Cambios de clave periódicos

     
  • Según se considere necesario y recomendado   por la solicitud asociada (para   ejemplo, re-keying);
  •   
  • preferiblemente automáticamente Al menos anualmente
  •   
    
respondido por el blowdart 01.01.2011 - 19:56
fuente
7

Si aún no lo ha recomendado, consulte la documentos PA-DSS y PCI-DSS , ya que tienen mucha información. en cuanto a los requisitos. Si su software está certificado para PA-DSS, entonces supongo que tendrá un QSA que debería tener información más específica sobre las expectativas para superar esos requisitos.

En cuanto a la administración del cifrado de datos, si pudiera recomendar el uso de características integradas de cualquier motor de base de datos que esté usando para obtener criptografía a nivel de aplicación. derecho puede ser muy complicado. Hay un buen documento sobre las opciones aquí .

    
respondido por el Rоry McCune 01.01.2011 - 20:12
fuente
7

Problema nº 1: Recifrado periódico
(También conocido como re-keying). Sí, eso es normal, aunque no es obligatorio.
Específicamente, las claves caducadas son necesarias , y son requeridas por PCI. Al menos una vez al año, con la opción de hacerlo antes.
Cómo lidiar con eso es otro asunto ... Por ejemplo, una vez que caduque la clave para 2010, ¿qué hace con todos los datos que se cifraron con esa clave? Una solución es almacenar un historial de todas las claves, y una "versión clave" para cada dato, de modo que cuando lo descifre, sabrá qué clave utilizar. (Por supuesto, se encripta utilizando solo la nueva clave). Otra solución es el cambio de clave mencionado anteriormente: solo tiene una única en cada punto (excepto durante el cambio de clave ...) y, cuando caduque, descifre con la clave antigua y vuelva a cifrar con la nueva. uno.

Problema nº 2: almacenamiento de claves
En pocas palabras, es malo y hace que el cifrado (no del todo, pero casi) no tenga sentido.
Las técnicas adecuadas de administración de claves en general, y PCI en particular, definen una política y procedimientos estrictos de administración de claves. Algunos de ellos son técnicos: por ej. la clave de cifrado (EK) debe cifrarse utilizando un cifrado seguro, p. ej. DPAPI; algo de esto es de procedimiento: por ejemplo, el acceso a la Clave de cifrado de clave (KEK) debe estar documentado; una parte es manual: por ejemplo, Conocimiento dividido / control dual de la KEK.

Como dijo @Rory, habla con tu PA QSA y, si no tienes uno, obtén uno.

    
respondido por el AviD 01.01.2011 - 23:32
fuente
3

Estoy más interesado en la segunda pregunta. En algún momento me costó entender las razones para almacenar la clave de encriptación tan cerca de los datos encriptados, aunque la almacenes encriptada con una clave de encriptación.

La única razón por la que puedo pensar es en usar la infraestructura / capacidades de cifrado de la base de datos para realizar el cifrado / descifrado transparente. Sin embargo, esto es altamente específico del proveedor de la base de datos (como se indica en un documento vinculado por una publicación anterior también).

Recomendaría mantener las claves en un almacenamiento diferente, protegido por contraseñas o con un dispositivo HSM.

    
respondido por el Dan Corneanu 04.03.2011 - 10:53
fuente
1

Problema 1: Me sorprende que solo haya pasado 12 meses. Nuestros servidores requieren claves / contraseñas nuevas cada 3 meses. Nada relacionado con la tarjeta de crédito, pero aún así. Supongo que es una práctica sensata, aunque no puedo asegurar que sea compatible con PCI, pero si no lo es, debería serlo.

Problema 2: Me suena muy sano. Nunca almacenaría una llave, ni siquiera ofuscada, justo al lado de los datos. Eso es solo un desafío abierto: "Por favor, intente piratearme".

    
respondido por el Joris Meys 01.01.2011 - 16:18
fuente

Lea otras preguntas en las etiquetas