Hágalo usted mismo Almacenamiento de tarjeta de crédito (Cumple con PCI - DSS)

5

Soy un desarrollador de software, considerando escribir un sistema personalizado para el almacenamiento de números de tarjetas de crédito. Nuestra intención es ser totalmente compatible con la industria de tarjetas de pago (PCI). Estoy trabajando con un propietario de una pequeña empresa que alquila cosas y quisiera mantener un número de tarjeta de crédito en el archivo para garantizar la devolución del artículo alquilado. Si un cliente no devuelve un artículo a tiempo, se les cobra por su contrato de alquiler firmado. La información de la tarjeta de crédito se purga en la devolución de la mercancía.

Somos conscientes de que algunos procesadores de tarjetas de crédito, además del procesamiento normal de tarjetas de crédito que utilizamos para los pagos de alquiler, también ofrecen un servicio para ALMACENAMIENTO de tarjetas de crédito. Almacenan los números de la tarjeta de crédito y le proporcionan un token que representa esa tarjeta en el almacenamiento. (por ejemplo, Paypal, Stripe) El propietario de este negocio ya tiene un compromiso con un procesador de tarjetas de crédito que NO ofrece ese servicio. Cambiar el procesador de la tarjeta de crédito a Paypal o Stripe no parece ser una opción. También investigamos los servicios de almacenamiento de tarjetas de crédito (utilizando tokens) y tampoco funcionará. $ 1300 / mes para almacenar 500 tarjetas es un poco demasiado caro para esta pequeña empresa.

He visto algunas publicaciones clave aquí:

Puedo ver que los tres principales proveedores de almacenamiento en la nube (servicios web de Amazon, Microsoft Azure y Google Cloud) son compatibles con PCI DSS como infraestructura.

Estoy considerando seriamente el uso de uno de esos servicios como repositorio para la información de la tarjeta de crédito. Obviamente queremos ser totalmente compatibles con PCI DSS. Sé cómo escribir aplicaciones y servidores. Sé cómo agregar un sistema de inicio de sesión robusto. Sé cómo usar bibliotecas de cifrado publicadas , para el cifrado del lado del servidor. Sé cómo crear un MongoDB en un servidor separado alojado en uno de esos servicios en la nube. Sé cómo comunicarme con el servidor a través de https. Lo que no tengo claro es todo el almacenamiento de claves.

Desde el primer elemento vinculado anterior:

  

La clave de cifrado (EK) que utiliza para cifrar los datos, debe ser la misma   cifrado por una clave de cifrado clave (KEK). El cifrado EK debe ser   almacenado en un lugar protegido: puede ser un archivo, una clave de registro,   lo que sea, lo importante es restringir el acceso a él, a la   solo para el servidor de aplicaciones.

Estoy un poco confundido por esa descripción. Pensé que todo ha ido a un Técnica de codificación de clave pública / clave privada. ¿Asumo que en la referencia anterior, la clave de cifrado mencionada anteriormente es en realidad la clave privada? ¿O estoy mezclando incorrectamente algoritmos aquí?

Supuse que estamos usando un algoritmo de clave pública / clave privada. Supongo que incluiré la clave pública en el código de mi servidor. Mi intención es almacenar la clave privada totalmente fuera de línea en una ubicación diferente (y sí, cumpliendo con los requisitos de PCI-DSS 3.5.3). Mi tendencia es requerir una copia / pegado personalizado de la clave privada para una decodificación / recuperación de tarjeta de crédito. Este es un proceso bastante infrecuente, y probablemente solo lo realice el propietario de la empresa.

Pero tal vez solo estoy haciendo esto mal. ¿Qué es el algoritmo "aprobado" de PCI-DSS para la codificación de tarjetas de crédito individuales? Por lo que puedo ver, los requisitos específicos se indican como:

  

La intención de la criptografía fuerte (como se define en las PCI DSS y   PA-DSS Glosario de términos, abreviaturas y acrónimos) es que el   cifrado se basa en un algoritmo probado y aceptado por la industria (no   un algoritmo propietario o "de cosecha propia") con claves criptográficas sólidas ...

Aquí están mis preguntas.

  • ¿Qué algoritmos para la codificación de estilo de clave pública / privada se recomiendan actualmente para cumplir con el estándar PCI-DSS aquí?

  • Si no es una codificación de clave pública / privada, ¿se recomienda alguna otra técnica de encriptación?

  • ¿Estoy haciendo esto correctamente?

  • ¿Algún otro comentario, o lecciones aprendidas aquí?

Muchas gracias.

    
pregunta zipzit 21.02.2017 - 13:21
fuente

2 respuestas

5

El PCI DSS no está expresamente claro en este tema. El significado del almacenamiento seguro de claves y la administración segura de claves se deja a la interpretación del QSA. Puede encontrar que un QSA considera que el KEK privado es todo lo que necesita ser asegurado, y él trata a los EK como fichas. O es posible que encuentre un QSA diferente que considere que cada EK individual necesita ser asegurado, a pesar de que han sido cifrados con un KEK. Hemos tenido ambos tipos de auditores y, francamente, pensé que el "más duro" de los dos era más competente (aunque no estaba de acuerdo con su evaluación de los riesgos).

El mayor problema que veo es que no está tomando en cuenta el costo de ser propietario de este sistema. Un sistema complejo como este requerirá tiempo y dinero para construirlo. Se requerirá que los auditores realicen un examen muy cuidadoso de todos los rincones y grietas de los sistemas, lo que también llevará mucho tiempo y dinero. Y tendrán que repetir su examen cada año.

Considere que, de acuerdo con las reglas actuales, si construye un sistema que se viola, el responsable del alquiler será responsable del 100% de los costos de todos los fraudes asociados con la violación. Eso significa que si alguien roba la tarjeta de un millonario y le cobra a un Ferrari por él, es responsable de la pérdida. Si alguien roba las tarjetas de 10 millonarios y cobra un Ferrari por cada uno de ellos, es responsable de toda la pérdida. Sus abogados, por supuesto, se darán vuelta inmediatamente y lo demandarán por construir un sistema inseguro. Y demandarán al QSA por incompetencia al no decirles que su sistema casero era inseguro. Por lo tanto, el QSA tiene que cobrar lo suficiente no solo para pagar el tiempo dedicado a la auditoría del sistema, sino también para asegurar su riesgo.

Francamente, sería mejor para el arrendatario que los empleados de su mostrador fabriquen fotocopias de las tarjetas de identificación del cliente y dejen caer las copias en una caja de seguridad debajo del mostrador; y manteniendo sus cámaras de seguridad en movimiento. Si un cliente no devuelve un artículo, o devuelve un artículo dañado y lo impugna, tendrá la evidencia que necesita para llevar al inquilino a la corte de reclamos menores. Eso es mucho más barato que construir un sistema compatible con PCI DSS y mantenerlo. (Y ese es realmente el punto de la PCI DSS: el auditor debe identificar y explicar los riesgos, el propietario de la empresa debe considerar cuidadosamente los riesgos y luego tomar decisiones inteligentes).

    
respondido por el John Deters 21.02.2017 - 19:44
fuente
2

Bueno, haciendo referencia al "Glosario de términos, abreviaturas y acrónimos de PCI DSS y PA-DSS" podemos ver lo siguiente como "criptografía fuerte"

  

Criptografía fuerte:   Criptografía basada en algoritmos probados y aceptados en la industria, junto con longitudes de claves que proporcionan un mínimo de 112 bits de fortaleza de la llave efectiva y prácticas adecuadas de administración de claves. La criptografía es un método para proteger los datos e incluye tanto el cifrado (que es reversible) como el hash (que es "de una manera"; es decir, no reversible). Ver Hashing.

     

En el momento de la publicación, los ejemplos de estándares y algoritmos aceptados y probados en la industria incluyen AES (128 bits y más), TDES / TDEA (claves de triple longitud), RSA (2048 bits y más), ECC (224 bits) y superior), y DSA / DH (2048/224 bits y superior). Consulte la versión actual de la publicación especial NIST 800-57 Parte 1 ( enlace ) para obtener más información sobre las fortalezas y algoritmos de claves criptográficas.

     

Nota: los ejemplos anteriores son apropiados para el almacenamiento persistente de los datos del titular de la tarjeta. Los requisitos mínimos de criptografía para las operaciones basadas en transacciones, según se definen en el PIN PCI y PTS, son más flexibles, ya que existen controles adicionales para reducir el nivel de exposición. Se recomienda que todas las implementaciones nuevas usen un mínimo de 128 bits de fuerza de clave efectiva.

En términos generales, puede usar un algoritmo de cifrado simétrico, cifrarlo y luego descifrarlo antes de usarlo, esto puede hacerlo la base de datos.

Para responder "¿Estoy haciendo esto correctamente?" Yo diría que no. Necesita tener tokenización, le hará la vida más fácil y más barata, deberá cumplir con las normas de PCI DSS y tendrá que realizar autoevaluaciones cada año, lo que probablemente no cumplirá, dada su renuencia a hacer tokenización porque le gusta su procesador (¿qué procesador no admite la tokenización en la actualidad?). Y con la tokenización, no tiene que preocuparse por ninguna arquitectura criptográfica, ya que el token no tiene que estar criptográficamente protegido.

    
respondido por el Ryan Kelso 21.02.2017 - 19:08
fuente

Lea otras preguntas en las etiquetas