​​Guía de criptografía y comunicaciones seguras de NI LabVIEW

Información general

​​Los datos seguros son una parte crítica de los sistemas modernos de prueba y medición. Esta guía presenta conceptos de criptografía y muestra cómo implementar cifrado, comunicaciones seguras, protección de datos en reposo y gestión de claves en aplicaciones de NI LabVIEW, con orientación práctica para entornos FIPS y regulados.

Contenido

Guía de criptografía y comunicaciones seguras de LabVIEW

La criptografía es más importante hoy que nunca para proteger los datos. Incluso para sistemas de prueba, los ingenieros deben considerar técnicas criptográficas para proteger los datos de prueba tanto en tránsito como en almacenamiento. El cifrado puede proteger los datos si el sistema se ve comprometido, ya sea por un actor malicioso que obtiene acceso o por un actor interno que hace que los datos estén disponibles involuntariamente fuera del uso previsto. La protección de datos, incluido el cifrado, es importante para proteger la propiedad intelectual de una empresa, para proteger los datos de los clientes o para cumplir con las normativas de seguridad.

Este documento proporciona una guía práctica y centrada en la implementación de criptografía en entornos LabVIEW, diseñada para ingenieros que pueden no tener experiencia previa con criptografía.

Fundamentos de criptografía

​¿Qué es la criptografía?

​La criptografía es un campo amplio de técnicas de protección de datos que incluye cifrado, hash, firmas digitales e intercambio de claves.

​El cifrado es análogo a bloquear los datos con una clave. El texto plano es el texto antes del cifrado, que cualquiera puede leer sin una clave. El texto cifrado es el texto después del cifrado, al que solo puede acceder alguien con una clave para descifrarlo.

​En el cifrado digital, una clave es un conjunto de caracteres que se utiliza para codificar los bits del texto plano y transformarlos en texto cifrado. Cualquiera con una clave puede desbloquear los datos, por lo que las claves deben estar protegidas. Ningún algoritmo de cifrado puede superar el intercambio inadvertido de la clave que desbloquea los datos cifrados. Para proteger los datos, las claves a menudo se rotan para generar nuevas, haciendo que las claves antiguas queden obsoletas.

​El hashing es una transformación unidireccional. Transforma una colección de bits de datos en un resumen de longitud fija que es extremadamente improbable que sea duplicado por diferentes entradas. Esto se utiliza para verificar la integridad de los datos de origen. A diferencia del cifrado, un hash no se puede revertir a los datos de origen originales.

​Una firma digital utiliza una clave privada para generar una firma criptográfica basada en un hash de los datos. La firma se envía junto con el documento. El destinatario utiliza la clave pública del remitente para verificar la firma y confirma que el documento no ha cambiado desde que fue firmado.

​Detalles de cifrado

​Esta sección proporciona una descripción detallada de cómo funciona el cifrado. Para lectores interesados en una discusión más profunda, JKI proporciona una excelente introducción en Cifrado XOR simple en LabVIEW

​El cifrado comienza en el nivel más bajo con la función XOR. Las propiedades matemáticas del XOR son únicas y permiten que no se pierda información al moverse los datos a través de él. La función XOR es única porque la mitad de las salidas son verdaderas y la otra mitad son falsas:

 

​Tabla 1: Tabla de verdad XOR

 

​XOR también tiene propiedades asociativa y conmutativa que le permiten mover datos en ambas direcciones a través de las funciones. Este hecho significa que los datos pueden procesarse a través de XOR y luego reprocesarse para restaurar los datos originales.

​Usando estas propiedades, un mensaje puede ser procesado mediante XOR con una clave para generar un mensaje cifrado. Usando XOR y la misma clave, el mensaje cifrado puede restaurarse al mensaje original.

​Usando XOR para cifrar, se puede crear un código irrompible si se cumplen todas estas condiciones:

  • ​La clave es verdaderamente aleatoria.
  • ​La clave es al menos tan larga como el mensaje.
  • ​Ninguna parte de la clave se reutiliza.
  • ​La clave se mantiene en secreto.

​Hay desafíos para hacer esto. No es razonable esperar que la clave siempre tenga la misma longitud que el mensaje, especialmente cuando la longitud del mensaje no se conoce antes de comenzar la transmisión. También es difícil para los sistemas modernos generar claves verdaderamente aleatorias sin partes repetidas.

​Para superar el problema de la longitud de la clave, se utiliza un algoritmo para generar una clave de cualquier longitud, basándose en un punto de partida conocido. El punto de partida para el algoritmo se genera aleatoriamente y se comparte entre el remitente y el receptor. Usando la misma semilla y el mismo algoritmo, el receptor puede generar la misma clave generada por el remitente usando esa misma semilla y algoritmo.

​El programa LabVIEW mostrado en la Figura 1 ilustra este concepto utilizando el generador de ruido blanco gaussiano. Debido a que este patrón parece aleatorio, pasa muchas pruebas de aleatoriedad y es completamente reproducible si se conoce la semilla inicial, este patrón es pseudoaleatorio.

Código de LabVIEW para generar un patrón de ruido blanco gaussiano

​Figura 1: Generación de patrones de números pseudoaleatorios en LabVIEW

​El código anterior permite al usuario elegir entre usar la misma semilla o semillas diferentes. Cuando se utiliza la misma semilla, se genera el mismo patrón "aleatorio", que se muestra en la Figura 2:

Gráficos que muestran dos patrones de ruido blanco con resultados coincidentes

​Figura 2: Generación de ruido blanco gaussiano pseudoaleatorio

​Si tanto el remitente como el receptor conocen la semilla y el algoritmo, pueden recrear una clave sin transmitir una clave del mismo tamaño que el mensaje.

​Enviar un mensaje cifrado, por lo tanto, consiste en dos partes: generar una clave usando una semilla y un algoritmo y realizar XOR en cada carácter del mensaje usando los caracteres generados de la clave.

​Es importante señalar que una contraseña no es la clave; la clave se genera a partir de la contraseña. Una contraseña se transforma en una clave criptográfica fuerte de longitud fija utilizando un proceso llamado función de derivación de claves (KDF). Las contraseñas son cortas, predecibles, de longitud variable y a menudo débiles. Las KDF convierten contraseñas en algo de tamaño exacto, con alta aleatoriedad y con formato consistente.

​Las claves deben generarse a partir de una fuente de números aleatorios criptográficamente segura. En general, se deben utilizar los generadores de números aleatorios del sistema operativo en lugar de la aleatoriedad generada por la aplicación. Los generadores de números aleatorios del sistema operativo generan números aleatorios a partir de una variedad de fuentes, incluyendo el tiempo de pulsación del teclado, el movimiento del ratón, la fluctuación de la CPU y otras mediciones que normalmente no utiliza una aplicación. 

​Una KDF añade "sal" a una contraseña, como se muestra en la Figura 3. La sal evita que los atacantes adivinen las claves porque dos contraseñas idénticas producen dos claves muy diferentes.

Proceso de añadir sal a la contraseña para generar una clave

​Figura 3: Sal añadida a la contraseña por KDF para generar una clave

​Algunos de los algoritmos que un usuario encuentra en el cifrado son para la KDF, y otros son para el cifrado real. Ambos son críticos para garantizar la seguridad de los datos cifrados.

​Una clave tiene una longitud fija, mientras que un mensaje puede tener una longitud variable. En la mayoría de los algoritmos de cifrado, el mensaje se divide en fragmentos del mismo tamaño que la clave. La clave se aplica entonces repetidamente a cada sección del mensaje para cifrar los datos.

​La seguridad depende tanto del algoritmo como de la longitud de la clave. Las claves más largas generalmente aumentan la resistencia a los ataques de fuerza bruta. La longitud mínima a utilizar depende del tipo de cifrado utilizado, la sensibilidad de los datos y la vida útil esperada de los datos. Para uso general hoy en día en el cifrado AES, las claves de 128 bits se consideran la longitud mínima para mantener los datos seguros. Muchas organizaciones prefieren AES-256 para datos altamente sensibles o de larga duración, aunque AES-128 sigue estando aprobado y es seguro para muchas aplicaciones. AES-256 se considera actualmente resistente a los ataques cuánticos conocidos, aunque los futuros estándares criptográficos seguirán evolucionando.

Tipos de criptografía

​Los investigadores han desarrollado muchos tipos de algoritmos de cifrado, cada uno con ventajas y desventajas. Hay dos categorías principales de algoritmos de criptografía: simétricos y asimétricos.

Cifrado simétrico

​Los algoritmos simétricos usan la misma clave para cifrar y descifrar los datos. El proceso se muestra en la Figura 4.

Proceso de cifrado simétrico, donde se utiliza la misma clave para cifrar y descifrar

​Figura 4: Cifrado simétrico

​El cifrado simétrico es más rápido y eficiente que el cifrado asimétrico porque las operaciones son más simples. El cifrado simétrico es ideal para archivos grandes, datos en streaming y sistemas de prueba en tiempo real.

​La seguridad del cifrado simétrico depende en gran medida de la protección de la clave; si alguien obtiene la clave, puede descifrarlo todo. Las claves simétricas requieren que el remitente y el receptor tengan ambos la clave, lo que significa que la clave debe entregarse al receptor. En algunos casos, esto no es posible, por lo que se utiliza el cifrado asimétrico.

​El cifrado simétrico más común es AES. Se designa por la longitud de la clave, por lo que AES-128 y AES-256 varían en la longitud de la clave utilizada. Para la mayoría de las aplicaciones, se recomienda AES-256 a menos que tenga una razón específica para no hacerlo. AES está permitido para los requisitos FIPS. ChaCha20 es otro algoritmo de cifrado simétrico comúnmente utilizado hoy en día.

​TLS (Transport Layer Security) utiliza cifrado simétrico para enviar datos, después de intercambiar claves de forma segura utilizando cifrado asimétrico. Los sistemas modernos deben usar TLS 1.2 o TLS 1.3 y deben evitar SSL y versiones más antiguas de TLS. Estas implementaciones TLS más nuevas suelen utilizar algoritmos de cifrado autenticado como AES-GCM o ChaCha20-Poly1305.

​Para la mayoría de las situaciones de almacenamiento y transmisión de datos en sistemas de prueba, utilice cifrado simétrico.

​Cifrado asimétrico

​El cifrado asimétrico es más lento que el cifrado simétrico, por lo que no se utiliza para grandes cantidades de datos. Se utiliza típicamente para comunicación por internet, conexiones de dispositivo a servidor y sistemas distribuidos. El cifrado asimétrico utiliza dos claves diferentes pero matemáticamente relacionadas para cifrar y descifrar datos. Estas dos claves se llaman clave pública (que se puede compartir) y clave privada (que debe mantenerse en secreto). Donde el cifrado simétrico es como una caja fuerte donde dos personas tienen claves coincidentes para abrirla, el cifrado asimétrico es como un buzón con una ranura donde cualquiera puede depositar una carta (usando una clave pública), pero solo el propietario puede abrirla y leerla (con una clave privada). El proceso se muestra en la Figura 5.

Proceso de cifrado asimétrico, utilizando una clave pública para el cifrado y una clave privada para el descifrado

​Figura 5: Cifrado asimétrico

​Las claves públicas se comparten abiertamente, generalmente junto con un archivo de certificado que verifica que la clave pública es auténtica. Las claves privadas son mantenidas en secreto por el propietario. Esto permite una comunicación segura sin confianza previa; no tiene que confiar en la parte que realiza el cifrado para compartir la clave con ella.

​Los dos algoritmos de cifrado asimétrico más comunes son RSA y ECC. RSA es más antiguo con claves más grandes, pero tiene una amplia adopción hoy en día. Se recomiendan longitudes de clave RSA de al menos 2048. La criptografía de curva elíptica (ECC) es más pequeña y rápida que RSA y se recomienda para sistemas modernos, con longitudes de clave de al menos 256 bits. Tanto RSA como ECC están permitidos bajo las regulaciones FIPS, pero no se espera que sean seguros en un mundo de computadoras cuánticas. Los algoritmos asimétricos evolucionarán a medida que se adopten los estándares postcuánticos.

​Los sistemas de cifrado híbrido son comunes hoy en día. El cifrado asimétrico se utiliza para establecer una clave compartida, que luego se utiliza en el cifrado simétrico para los datos reales. Por ejemplo, TLS utiliza cifrado asimétrico durante el apretón de manos inicial, y luego utiliza cifrado simétrico (AES) para la transferencia de datos.

Aplicaciones de criptografía

Hashing e integridad

​El cifrado protege la confidencialidad manteniendo los datos en secreto. Otra parte de una transferencia segura es asegurar que los datos no hayan sido modificados, lo cual se hace con el hashing.

​Una función hash toma cualquier entrada, un archivo, mensaje o flujo, y produce una salida de longitud fija llamada digest. Un resumen de hash tiene la misma longitud independientemente del tamaño de los datos de entrada, y un cambio minúsculo en los datos da como resultado un hash completamente diferente.

​Un caso de uso común de un hash es para descargas de datos. Un remitente calcula un hash para el archivo y lo envía al receptor. El receptor descarga el archivo y calcula el hash. Si el archivo no ha cambiado, el hash permanece igual.

​Los hashes se utilizan en una variedad de casos más allá de las descargas de datos. Un hash se puede usar para asegurar que un archivo no ha cambiado en el disco, para que una aplicación pueda importar datos del archivo con la confianza de que los datos no han cambiado. Un hash puede verificar una configuración de computadora o sistema operativo y bloquear el arranque si algo ha cambiado, impidiendo que una parte maliciosa manipule la computadora.

​El hashing se combina con el cifrado para hacer los sistemas más seguros. TLS utiliza un hash para verificar la información del apretón de manos, para asegurarse de que las claves intercambiadas no se cambien durante la transacción.

​El algoritmo de hash más común es SHA (usualmente SHA256). MD5 también se utiliza comúnmente para descargas de archivos para verificar la integridad del archivo, pero MD5 tiene debilidades conocidas para otros usos. MD5 no está aprobado por FIPS, pero SHA256 está aprobado por FIPS.

​Cifrado autenticado

​El cifrado por sí solo protege la confidencialidad, pero no garantiza que los datos no hayan sido modificados. Por lo tanto, los sistemas criptográficos modernos utilizan cifrado autenticado, que combina el cifrado y la protección de integridad en una sola operación.

​Los algoritmos de cifrado autenticado generan datos cifrados junto con una etiqueta de autenticación. Cuando el receptor descifra los datos, se verifica la etiqueta de autenticación. Si alguna parte del mensaje ha sido cambiada, el descifrado falla y los datos modificados son rechazados.

​Los algoritmos de cifrado autenticado comunes incluyen AES-GCM, AES-CCM y ChaCha20-Poly1305. Estos algoritmos proporcionan confidencialidad e integridad y se utilizan ampliamente en protocolos modernos, incluidos TLS.

​Cuando estén disponibles, los modos de cifrado autenticado deben preferirse sobre los enfoques más antiguos que combinan el cifrado y el hash por separado, porque son más sencillos de implementar correctamente y reducen el riesgo de vulnerabilidades de seguridad.

​Protocolos seguros

​Usando las tecnologías de cifrado y hash mencionadas anteriormente, hay varios protocolos seguros en uso hoy en día.

​TLS se utiliza para comunicación de red segura. Es un protocolo que proporciona comunicación segura a través de una red combinando cifrado, autenticación e integridad de datos. Asegura que los datos enviados entre las partes sean privados, sin modificar y enviados al destinatario correcto. TLS cifra datos, generalmente con AES, y detecta manipulaciones con hashing, y verifica la identidad con certificados.

​SSH es un protocolo utilizado para acceder de forma segura a sistemas remotos a través de una red. SSH utiliza códigos de autenticación de mensajes (MAC) basados en funciones hash como SHA para verificar la integridad de los datos y verifica la identidad del usuario/servidor al iniciar sesión. En una transacción SSH, el servidor presenta una clave pública. El cliente típicamente almacena la clave pública del servidor después de la conexión inicial y comprueba cambios en conexiones futuras. El cliente luego intercambia claves con el servidor para cifrar datos entre el servidor y el cliente con cifrado AES o ChaCha20.

​El protocolo de transferencia de hipertexto seguro (HTTPS) es una versión de HTTP que utiliza TLS para cifrar y asegurar la comunicación entre un cliente y un servidor. HTTP es cómo se estructura la información en una solicitud web, y TLS es cómo se protege esa información. HTTPS se utiliza comúnmente en los navegadores web hoy en día y también se utiliza en API web, servicios en la nube y puntos finales industriales o de prueba.

​Sin HTTPS, los datos pueden ser interceptados o modificados mientras se transmiten entre sistemas a través de cualquier red no confiable. Con HTTPS, los datos se cifran, verifican y se protegen contra manipulaciones. HTTPS puede cumplir con las regulaciones FIPS, pero puede que no lo haga; depende de la pila TLS utilizada para soportar el protocolo.

​HTTPS opera en la capa de aplicación; la aplicación realiza el cifrado. Internet Protocol Security (IPsec) es un conjunto de protocolos que asegura la comunicación de red en la capa de red mediante el cifrado y la autenticación de paquetes. IPsec maneja el tráfico entre sistemas de forma transparente, sin que la aplicación necesite manejar el cifrado.

​Un ejemplo de IPsec es la red privada virtual (VPN). En una VPN, todo el tráfico de red se cifra al enviarse y se descifra en el cliente al recibirse. El software de aplicación no es consciente de que los datos estén cifrados.

​Use herramientas IPsec cuando quiera cifrar todos los datos entre dos sistemas. Use TLS cuando quiera controlar el cifrado directamente desde su aplicación.

​Cifrado FIPS

​Con varios métodos de cifrado disponibles, ¿qué cifrado debería usar? ¿Qué nivel de cifrado es suficiente? Para responder a esta pregunta para aplicaciones del gobierno de EE. UU., NIST desarrolló la publicación de Estándares Federales de Procesamiento de Información (FIPS), conocida como FIPS 140. Esto está actualmente en revisión 3, por lo que FIPS 140-3 es la guía más reciente disponible.

​Cuando un proveedor crea un módulo criptográfico, ese módulo puede ser probado por un laboratorio de pruebas FIPS para ser validado FIPS. Un módulo con esta designación ha sido probado y validado de forma independiente para cumplir con los requisitos de FIPS 140. Los módulos validados se enumeran en el Centro de Recursos de Ciencias de la Computación del NIST en su página del Programa de validación de módulos criptográficos.

​Los módulos pueden ser una biblioteca de criptografía de software o un dispositivo de seguridad de hardware. La mayoría de las aplicaciones delegarán las operaciones criptográficas a estos módulos validados FIPS en lugar de implementarlas directamente en la aplicación.

​El programa de validación FIPS es caro y lleva mucho tiempo. El programa FIPS aún no ha validado algunos algoritmos de cifrado modernos y robustos como ChaCha20 y BLAKE2. Por estas razones, muchos proveedores que desarrollan productos con cifrado no crean módulos validados FIPS porque pueden reutilizar componentes validados FIPS, o pueden usar algoritmos que se sabe que cumplen con las regulaciones FIPS. 

​La necesidad de cumplimiento FIPS surge más a menudo para los usuarios cuando sus equipos de seguridad requieren que configuren sus computadoras con Windows en modo FIPS. En este modo, Windows puede restringir a las aplicaciones el uso de algoritmos no aprobados por FIPS a través de las API criptográficas compatibles. Windows no comprueba la validación FIPS, solo comprueba que la técnica de cifrado utilizada no esté no aprobada bajo el programa FIPS 140. Por ejemplo, si un programa utiliza MD5 (un algoritmo de hash antiguo conocido por no ser seguro), Windows bloqueará ese programa para que no se ejecute cuando el modo FIPS esté habilitado.

​El programa CMMC, que deriva requisitos de NIST SP 800-171, requiere la protección de información no clasificada controlada (CUI) utilizando criptografía implementada a través de módulos validados por FIPS. Las sesiones de acceso remoto son un escenario común donde se aplican estos requisitos.

Cifrado en LabVIEW

​Los desarrolladores de LabVIEW encontrarán cifrado en dos casos de uso: almacenamiento (datos en reposo) o transmisión (datos en tránsito).

​Cifrado para datos en reposo

​Los datos en reposo se refieren a la información que se almacena en lugar de estar siendo transmitida activamente. Los ejemplos incluyen archivos de configuración, resultados de pruebas, bases de datos, archivos de registro, datos de calibración y claves criptográficas. Si un actor malicioso obtiene acceso a un dispositivo de almacenamiento, un medio extraíble o un archivo de copia de seguridad copiado, los datos sin cifrar pueden leerse sin necesidad de acceder a la aplicación en ejecución.

​No todos los datos almacenados requieren cifrado. Se debe considerar el cifrado al almacenar cualquiera de la siguiente información:

  • ​Información del cliente o propietaria
  • ​Datos de prueba que contienen propiedad intelectual
  • ​Credenciales de autenticación
  • ​Claves criptográficas
  • ​Información no clasificada controlada (CUI)
  • Información sujeta a requisitos regulatorios

​Para muchas aplicaciones, las protecciones del sistema operativo, como Windows BitLocker, proporcionan una primera capa de defensa efectiva al cifrar todo el dispositivo de almacenamiento. El cifrado de disco completo protege los datos si una computadora o unidad se pierde o es robada, pero no evita que los usuarios o aplicaciones autorizados accedan a los archivos una vez que el sistema está en funcionamiento. El cifrado en tránsito no protege los datos después de que han sido almacenados, y el cifrado en reposo no protege los datos mientras se están transmitiendo. Muchos sistemas requieren ambos.

​Para archivos sensibles, las aplicaciones pueden necesitar cifrar los datos en sí antes de escribirlos en el disco. Los enfoques comunes incluyen los siguientes tipos de cifrado:

  • ​Cifrar archivos usando AES-256
  • ​Cifrar el contenido de la base de datos o los campos de la base de datos
  • ​Cifrar informes y archivos exportados
  • ​Cifrar copias de seguridad antes de almacenarlas o transmitirlas

​Al cifrar datos de la aplicación, se deben preferir algoritmos de cifrado autenticado como AES-GCM porque proporcionan protección tanto de confidencialidad como de integridad. Si el archivo cifrado se modifica, la aplicación puede detectar el cambio al intentar descifrar los datos.

​Consideraciones de LabVIEW para datos en reposo

​Las aplicaciones de LabVIEW comúnmente almacenan información en los siguientes formatos:

  • ​Archivos TDMS
  • ​Archivos de configuración (INI, JSON, XML)
  • ​SQLite u otras bases de datos
  • ​Archivos de registro
  • ​Archivos de datos serializados

​Estos formatos proporcionan poco o ningún cifrado nativo. Si se requiere protección, cifre los datos antes de escribirlos en disco o almacénelos dentro de un volumen cifrado protegido por herramientas del sistema operativo como BitLocker.

​Evite almacenar contraseñas, certificados o claves criptográficas directamente en archivos de configuración. Utilice almacenes de claves de sistema operativo protegidos, simétricos y asimétricos, módulos de plataforma de confianza (TPM) o API como CryptProtectData para proteger secretos sensibles.

​Cifrado para datos en tránsito

​LabVIEW proporciona muchas funciones de comunicación de red que van desde bajo nivel hasta niveles más altos. La mayoría de estas funciones no proporcionan cifrado actualmente. Los ingenieros de Emerson están trabajando actualmente para agregar criptografía a algunas de estas funciones de red, y esta característica se anunciará en futuras versiones de LabVIEW.

 

​Tabla 2: Funciones de comunicación de LabVIEW

​Aunque la criptografía no está integrada en estas funciones, hay varias formas de implementar el cifrado en LabVIEW para la transmisión de datos.

Opción 1: IPsec/VPN

​Habilitar una VPN tanto en el servidor como en el cliente cifrará todos los datos transmitidos entre las dos máquinas, incluidos los datos de LabVIEW. La aplicación LabVIEW no necesita saber nada sobre la conexión VPN; todo el cifrado es manejado por el software VPN antes de entregar los datos al cliente.

​Recomendamos WireGuard como VPN. WireGuard es gratis, rápido y seguro. WireGuard es compatible con Windows y NI Linux RT, por lo que se puede utilizar para transmitir datos desde un dispositivo en tiempo real a un sistema Windows, como se muestra en la Figura 6. WireGuard está incluido en la distribución NI Linux RT.

Datos que fluyen a través de WireGuard para cifrarse en tránsito

​Figura 6: Transferencia de datos de WireGuard

​En pruebas internas, hemos encontrado que WireGuard es rápido y fácil de configurar. No requiere cambios en el código de LabVIEW ni en el resto del sistema. Requiere que el cliente de WireGuard se ejecute tanto en el servidor como en el cliente, así que asegúrese de que esto sea posible antes de integrarlo en su sistema.

​WireGuard no está validado FIPS. Hay otras VPN disponibles que están validadas FIPS, si debe cumplir con requisitos normativos que incluyen la validación FIPS.

​Opción 2: Use funciones de LabVIEW con cifrado

​Algunas funciones de LabVIEW incluyen la capacidad de agregar cifrado a las funciones de comunicación de datos.

​Si está utilizando gRPC para comunicar datos entre dispositivos o servicios, puede habilitar el cifrado TLS. Necesitará configurar TLS para el servidor y los clientes. Necesitará generar un certificado X.509 para el servidor. Para obtener más información sobre el uso de gRPC en LabVIEW, consulte Cómo usar gRPC con software y hardware de NI.

​Si está utilizando la función FTP seguro (SFTP), necesitará configurar un servidor FTP seguro. Las funciones de LabVIEW permiten enviar y recibir de ese servidor. Estas transmisiones utilizan el protocolo SSH, que soporta una serie de algoritmos de cifrado. El algoritmo específico utilizado depende de la configuración del servidor SFTP, el cual necesitará instalar por separado. Para obtener más información sobre el uso de SFTP en LabVIEW, consulte la sección de SFTP del Manual de referencia de programación de LabVIEW.

​Ninguna de las funciones integradas de LabVIEW está validada FIPS, pero algunos de los algoritmos utilizan algoritmos aprobados FIPS. Windows no bloqueará estos con el modo FIPS habilitado.

​Las funciones de LabVIEW no proporcionan cifrado del paquete de datos que se envía. Para estos casos, necesitará usar una de las otras opciones.

Opción 3: Utilice un toolkit de criptografía de terceros

​Encryption Compendium for LabVIEW está disponible de LVS Tools y proporciona una biblioteca completa de funciones de criptografía para LabVIEW. Se muestra una captura de pantalla en la Figura 7. Este toolkit está disponible desde la Red de Herramientas de NI o directamente desde LVS Tools.

​Encryption Compendium soporta cifrado simétrico y asimétrico RSA. También admite el hashing y muchos protocolos seguros en LabVIEW como TLS, DTLS y SSH. No solo le permite cifrar datos y almacenarlos en forma cifrada, sino también transmitirlos de forma segura en uno de una serie de protocolos.

Paleta de LabVIEW que muestra las funciones de Encryption Compendium

​Figura 7: Paleta de Encryption Compendium

​Encryption Compendium proporciona funciones de alto nivel para reducir la tarea de cifrado a un único VI. Por ejemplo, el VI de cifrado simétrico cifra datos utilizando cualquier algoritmo de cifrado, como se muestra en la Figura 8.

Diagrama de LabVIEW que muestra el cifrado simétrico de Encryption Compendium

​Figura 8: Función de cifrado simétrico de Encryption Compendium

​Una única función soporta el descifrado, como se muestra en el código de la Figura 9.

Diagrama de LabVIEW que muestra el descifrado simétrico de Encryption Compendium

​Figura 9: Función de descifrado simétrico de Encryption Compendium

​Encryption Compendium soporta una variedad de otras funciones criptográficas además de protocolos seguros. El ejemplo en la Figura 10 muestra cómo generar claves X.509 en LabVIEW.

Diagrama de LabVIEW que muestra la generación de certificados del Encryption Compendium

​Figura 10: Generación de certificados X.509 de Encryption Compendium

​Encryption Compendium no está validado por FIPS, pero la compatibilidad con FIPS está planeada para más adelante en 2026.

​Obtenga más información sobre Encryption Compendium de LVS Tools

​Opción 4: Llamar a módulos de cifrado no pertenecientes a LabVIEW

​Hay muchos módulos de criptografía disponibles para uso general de programación que proporcionan criptografía moderna y fuerte. Puede usar estos en LabVIEW con envoltorios que han sido puestos a disposición por la comunidad de LabVIEW. Utilizan algoritmos de cifrado que no han sido incluidos en los estándares FIPS 140, pero que proporcionan tanta o más seguridad.

​Bouncy Castle es una biblioteca de criptografía de código abierto que proporciona una variedad de funciones criptográficas. Puede generar hashes, crear claves y certificados, y cifrar datos, como se muestra en la Figura 11. Los usuarios de LabVIEW han creado envoltorios de código abierto para funciones de Bouncy Castle. Además, hay un tutorial para usar estos wrappers de LabVIEW.

Diagramas de LabVIEW que muestran cifrado y descifrado con envoltorios de Bouncy Castle

​Figura 11: Cifrado y descifrado usando los wrappers de Cannon Controls Bouncy Castle

​Opción 5: Llamar a módulos de cifrado validados por FIPS

​Aunque no se puede realizar cifrado validado FIPS directamente en LabVIEW, existen varias opciones para utilizar módulos validados FIPS. Estos módulos cumplen con los requisitos para manejar información controlada por el gobierno de EE. UU., necesarios para la certificación CMMC.

​CryptProtectData (y CryptUnprotectData) se encuentran en advapi32.dll. Estas funciones se pueden usar para almacenar secretos como contraseñas, claves y configuraciones. Consulte la documentación de Windows para usar estas funciones. Necesitará pasar sus datos como un array de bytes. También necesitará definir la estructura DATA_BLOB en su aplicación LabVIEW antes de enviar los datos a la función. Además, deberá estar familiarizado con el paso de punteros de datos en LabVIEW para llamar a esta función.

​Las API de BCrypt son API de Windows en bcrypt.dll. Esta es la API de criptografía moderna principal en Windows para tareas generales de cifrado como el cifrado simétrico AES, el hashing y la derivación de claves.

​Cuando se llaman correctamente, estas funciones llaman a algoritmos validados por FIPS para el cumplimiento normativo. 

​Gestión de claves

​Las claves son un elemento crítico de un sistema criptográfico. Si alguien tiene claves, tiene acceso a todo lo que esas claves protegen. Compartir claves es un método común para permitir que actores maliciosos entren en un sistema protegido; perder claves es un método común para perder acceso a los datos.

​Si su programa de LabVIEW necesita cifrar o descifrar información, necesitará manejar claves. Evite codificar claves en el VI de LabVIEW; es demasiado fácil para que los hackers obtengan acceso. No almacene claves en un archivo de texto sin formato en la PC. Nunca almacene claves criptográficas, contraseñas o certificados en repositorios de código fuente, ni siquiera en repositorios privados.

​Administre sus claves con herramientas de Windows

​Windows proporciona una forma de almacenar claves locales en un entorno seguro. El Microsoft Secret Store es una forma de almacenar y recuperar claves de forma segura en una máquina local usando PowerShell. Una biblioteca de código abierto para acceder al Microsoft Secret Store desde LabVIEW está disponible en https://gitlab.com/cannontim/secret-store-api.

​También puede usar la función CryptProtectData para almacenar claves, usando el nodo de biblioteca de llamadas en LabVIEW.

​Módulo de seguridad de hardware (HSM)

​En entornos seguros, es posible que deba considerar un HSM. Estos dispositivos de hardware son dispositivos resistentes a manipulaciones dedicados que generan, almacenan y gestionan de forma segura claves criptográficas mientras realizan operaciones de cifrado, descifrado y firma digital. Aunque los HSM pueden ser excesivos para aplicaciones más pequeñas, estos dispositivos pueden ser necesarios para aplicaciones más grandes que deben cumplir con requisitos normativos.

​Los HSM abarcarán desde dispositivos de red grandes y caros que soportan equipos de desarrolladores hasta pequeños dispositivos USB portátiles para desarrolladores individuales. Algunos pueden estar instalados internamente en una computadora. Un módulo de plataforma de confianza (TPM) es un tipo específico de HSM utilizado por las PC para la gestión de claves para operaciones como el arranque seguro y la autenticación de red.

​Los HSM generalmente tendrán una API que permite a aplicaciones como LabVIEW acceder a su funcionalidad de gestión de claves.

​Conclusión

​El cifrado es una capacidad fundamental para proteger los sistemas modernos de prueba y medición, pero solo es efectivo cuando se implementa como parte de una arquitectura de seguridad completa y bien diseñada. A lo largo de este documento, hemos cubierto no solo cómo funciona el cifrado, sino cómo debe aplicarse en sistemas reales de LabVIEW para proteger los datos tanto en tránsito como en reposo.

​En esencia, el cifrado se basa en una combinación de algoritmos, como AES, RSA y SHA, junto con protocolos como TLS, SSH e IPsec, claves y prácticas de gestión de claves. Cada uno de estos componentes juega un papel crítico, pero la seguridad general de un sistema depende principalmente de cómo se combinan e implementan, no de ninguna tecnología aislada.

​LabVIEW proporciona a los ingenieros un enfoque gráfico para visualizar su código en aplicaciones de medición funcionales. Con la guía de este documento, pueden proteger los datos que generan en estas aplicaciones para garantizar la confidencialidad e integridad de su sistema de prueba.

ABA+B
000
101
011
110

Windows y BitLocker son marcas comerciales del grupo de empresas Microsoft. La marca comercial registrada Linux® se utiliza conforme a una sublicencia otorgada por LMI, el licenciatario exclusivo de Linus Torvalds, propietario de la marca en todo el mundo.

​Función​Características​Cifrado
​TCP​Intercambios de datos de enlace con baja pérdida​Ninguno
​UDP​Transmisión de datos de alta velocidad, con pérdida​Ninguno
​Flujos de redComunicación sin pérdidas de nivel superior basada en TCP. Con seguridad de tipos.​Ninguno
​Variables compartidas​Comunicación de nivel superior entre VI de LabVIEW​Ninguno
​DataSocket​​Comunicación de datos heredada​Ninguno
​Seguridad HTTP​Comunicaciones seguras entre clientes HTTP de LabVIEW y NI Web Services.​Firmar solicitudes para autenticación e integridad; no cifra los datos
​WebDAV​Transferencia de archivos a/desde sistemas en tiempo real con HTTP/HTTPS. Habilitar HTTPS para WebDAV en la configuración del objetivo en NI Hardware Manager.​HTTPS (TLS)
​SFTP​Transferencia de archivos FTP segura a través de un servidor FTP. Se cifra a través del protocolo SSH.​Depende del servidor SFTP
​SSH​Comandos OpenSSH para sesiones SSH con sistemas remotos​AES, ChaCha20, otros
​Servicios web​Servir datos a través de API RESTful, HTTP/HTTPS​HTTPS, SSL/TLS, autenticación, control de acceso
​gRPC​Servicio de comunicación de alto rendimiento y baja latencia​Cifrado TLS