Skip to Content
Nueva versión 12 disponible 🎉
ObfuscatorCifrado de valores

Cifrado de valores y matrices

Los valores constantes y las matrices declarados en línea en su código pueden contener a menudo información confidencial, como claves de cifrado de datos u otros datos críticos que quiere mantener ocultos a los desensambladores o a los intentos de ingeniería inversa. Babel Obfuscator ofrece una función para cifrar estos valores constantes y matrices, que añade una capa adicional de protección a su información confidencial.

Babel Obfuscator ofrece opciones de configuración que permiten cifrar valores en línea de varios tipos de datos, entre ellos int32, int64, single, double y matrices. Con estas opciones puede mejorar la seguridad de su código cifrando estos tipos concretos de valores.

El cifrado de los valores int32 e int64 protege del acceso no autorizado los datos numéricos de estos tipos, como los enteros o los enteros largos. Del mismo modo, el cifrado de los valores single y double protege los números de punto flotante, como los decimales o los números reales. Al cifrar estos valores en línea, evita que los datos numéricos confidenciales de su código puedan descifrarse o modificarse con facilidad.

Además, Babel Obfuscator permite cifrar las matrices declaradas en línea en su código. Las matrices son colecciones de elementos, y cifrarlas ayuda a garantizar la confidencialidad y la integridad de los datos que contienen. Esta capa adicional de cifrado impide que los atacantes conozcan el contenido de sus matrices, aunque consigan analizar o descompilar su código.

En esta sección se tratan:

Cómo funciona

En tiempo de compilación, Babel elimina la constante del cuerpo del método y la sustituye por una búsqueda: la instrucción ldc del literal se reescribe para que el valor se obtenga de una tabla cifrada incrustada en el ensamblado y se descifre a petición en tiempo de ejecución. Las constantes numéricas (int32, int64, single, double) se agrupan por tipo y se cifran en esa tabla, y cada carga original se convierte en una pequeña llamada que devuelve el valor descifrado. Las matrices en línea se tratan de forma parecida: los datos de inicialización de la matriz, que normalmente se almacenan en el ensamblado como un blob sin cifrar, se cifran y se reconstruyen en tiempo de ejecución.

El resultado es que un descompilador ya no ve en el IL los números reales ni el contenido de las matrices; solo ve índices de una tabla opaca y cifrada. Los valores se descifran de forma diferida a medida que se ejecuta su código, por lo que el comportamiento no cambia.

¿Despliega en hosts en modo FIPS? Los valores y las matrices cifrados se descifran en tiempo de ejecución mediante el proveedor criptográfico de la plataforma, por lo que un contenedor que se ejecuta en un host en modo FIPS sin un proveedor FIPS de OpenSSL certificado puede no arrancar. Consulte Conformidad con FIPS para conocer la causa y la solución.

Tenga en cuenta que activar el cifrado de valores y matrices puede introducir un ligero coste adicional de rendimiento, debido a las operaciones de cifrado y descifrado en tiempo de ejecución. Por eso es importante valorar con cuidado el equilibrio entre seguridad y rendimiento según las necesidades concretas de su aplicación; consulte Rendimiento.

Last updated on