BLOG

Consideraciones prácticas sobre la nube: seguridad

Miniatura de Lori MacVittie
Lori MacVittie
Publicado el 19 de noviembre de 2018

La computación en la nube puede ser barata, pero no es gratuita.

La gran mayoría de las aplicaciones actuales se entregan a través de HTTP seguro. Eso significa TLS o el cada vez más mal visto SSL. Significa criptografía, lo que tradicionalmente se ha traducido como problemas de rendimiento.

Gracias a los avances tecnológicos, hoy en día las CPU son increíblemente rápidas y muchos hardware del lado del cliente (y del servidor) integran de forma nativa lo que alguna vez fue hardware criptográfico especializado. Lo que eso significa es que, en términos de cada conexión, la velocidad no es un problema tan importante a nivel individual para la criptografía como lo fue antes.

Pero eso no significa que la criptografía no siga siendo una fuente de gastos operativos y de rendimiento. 

La mayoría de los argumentos que rechazan el argumento en contra de la criptografía como fuente importante de problemas de rendimiento se basan en escenarios simples que involucran un cliente y un servidor. Se trata de un proceso de cifrado y un proceso de descifrado. Y en tales escenarios, los detractores generalmente tienen razón. La latencia introducida por el cifrado y descifrado es mínima y normalmente es menos preocupante que la del TCP y la sobrecarga relacionada con la red.

Pero hoy en día las aplicações no se componen de un único punto final. Hay múltiples intermediarios y servidores proxy a través de los cuales un mensaje debe viajar antes de llegar a ese "punto final único". Son puntos finales de seguridad y control de acceso, equilibrio de carga y enrutamiento. Cada uno debe inspeccionar el mensaje -en lenguaje claro- para poder desempeñar su función asignada en la compleja danza que es la ruta de datos moderna.

Aquí es donde el argumento de que la criptografía no es tan cara empieza a desmoronarse. Por sí solo, un único punto final introduce muy poco retraso. Pero cuando se repiten varias veces en todos y cada uno de los puntos finales de la ruta de datos, esos retrasos individuales se suman y resultan en algo más notorio y, particularmente en el caso de la nube pública, operativamente costoso.

La criptografía es naturalmente un proceso computacionalmente costoso. Esto significa que se necesitan muchos más ciclos de CPU para cifrar o descifrar un mensaje que para ejecutar la lógica empresarial. En la nube, los ciclos de CPU son análogos al dinero gastado. En general, es un costo aceptado porque el objetivo es trasladar los costos de capital a gastos operativos.

Pero los costos comienzan a acumularse si estás descifrando y encriptando un mensaje varias veces. En realidad, estás pagando por el mismo proceso criptográfico varias veces. Lo que podría costar sólo un centavo si se ejecuta una vez, de repente cuesta cinco centavos si se ejecuta cinco veces. Si hacemos los cálculos de los cientos de miles de transacciones que se realizan en el transcurso de un día (o una hora), los costos resultantes son asombrosos.

Recuerde también que cada ciclo de CPU consumido por el procesamiento criptográfico es un ciclo de CPU que no se gasta en la lógica empresarial. Esto significa escalar antes de lo deseado, lo que genera aún más costos ya que se lanza cada instancia adicional para manejar la carga.

Basta decir que “SSL en todas partes” no debería resultar en arquitecturas de “descifrado en todas partes” en la nube.

Descifrar una vez

Para reducir los costos y maximizar la eficacia de las CPU que estás pagando, vale la pena tomarse el tiempo para diseñar tu arquitectura basada en la nube según el principio de "descifrar una sola vez". "Descifrar una vez" significa que debe minimizar la cantidad de puntos finales en la ruta de datos que deben descifrar y volver a cifrar los mensajes en tránsito.

Para ello es necesario pensar con previsión y considerar cuidadosamente los dieciséis servicios de aplicação diferentes que se utilizan actualmente para proteger y escalar las aplicações . Si no está sujeto a regulaciones o requisitos que exigen cifrado de extremo a extremo, diseñe su ruta de datos de manera tal que los mensajes se descifren lo antes posible para evitar desperdiciar ciclos adicionales en el descifrado posterior. Si necesita mantener un cifrado de extremo a extremo, la combinación de servicios siempre que sea posible le permitirá obtener el uso más eficiente de los recursos informáticos.

Al combinar los servicios que puede ofrecer (por ejemplo, equilibrio de carga con firewall de aplicação web) en una sola plataforma, se reduce la cantidad de veces que necesita descifrar mensajes en tránsito. Tiene la ventaja adicional de reducir también el número de conexiones y el tiempo en la red, lo que se traduce en beneficios de rendimiento para los usuarios y consumidores. Pero el verdadero ahorro está en los ciclos de CPU que no se gastan en descifrados y nuevos cifrados repetidos. 

Puede parecer una pérdida de tiempo considerar el impacto del cifrado y descifrado de una aplicación que hoy en día se usa poco. Los centavos ciertamente no cubren el costo del esfuerzo. Pero a medida que las aplicaciones crecen, escalan y perduran en el tiempo, esos centavos se irán sumando hasta formar montos que tendrán un impacto. Sin mencionar que, al igual que los centavos, los microsegundos se suman. Al considerar el impacto de la criptografía en toda la ruta de datos, se pueden obtener beneficios a largo plazo tanto para los usuarios como para la empresa.