Elegir la longitud de una baliza - AWS Cifrado de bases SDK

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Elegir la longitud de una baliza

Nuestra biblioteca de cifrado del cliente pasó a llamarse SDK de cifrado de bases de datos de AWS. En esta guía para desarrolladores, se sigue proporcionando información sobre el cliente de cifrado de DynamoDB.

Al escribir un valor nuevo en un campo cifrado que está configurado para el cifrado para búsquedas, el SDK de cifrado de bases de datos de AWS calcula un HMAC sobre el valor del texto no cifrado. Esta salida del HMAC coincide uno a uno (1:1) con el valor de texto no cifrado de ese campo. La salida del HMAC se trunca para que varios valores de texto no cifrado distintos se asignen a la misma etiqueta HMAC truncada. Estas colisiones, o falsos positivos, limitan la capacidad de un usuario no autorizado de identificar información distintiva sobre el valor del texto no cifrado.

El número medio de falsos positivos generados por cada baliza viene determinado por la longitud de la baliza restante tras el truncamiento. Solo es necesario definir la longitud de la baliza al configurar las balizas estándar. Las balizas compuestas utilizan las longitudes de baliza de las balizas estándar con las que están construidas.

La baliza no altera el estado cifrado del campo. Sin embargo, cuando se utilizan balizas, existe un equilibrio inherente entre la eficacia de las consultas y la cantidad de información que se revela sobre la distribución de los datos.

El objetivo del cifrado con capacidad de búsqueda es reducir los costos de rendimiento asociados a las bases de datos cifradas del cliente mediante el uso de balizas para realizar consultas sobre datos cifrados. Las balizas se almacenan junto a los campos cifrados a partir de los cuales se calculan. Esto significa que pueden revelar información distintiva sobre la distribución de su conjunto de datos. En casos extremos, un usuario no autorizado podría analizar la información revelada sobre su distribución y utilizarla para identificar el valor de texto no cifrado de un campo. Elegir la longitud de baliza correcta puede ayudar a mitigar estos riesgos y preservar la confidencialidad de la distribución.

Revise su modelo de amenazas para determinar el nivel de seguridad que necesita. Por ejemplo, cuantas más personas tengan acceso a su base de datos, pero que no deberían tener acceso a los datos en texto no cifrado, más querrá proteger la confidencialidad de la distribución de su conjunto de datos. Para aumentar la confidencialidad, una baliza debe generar más falsos positivos. El aumento de la confidencialidad reduce el rendimiento de las consultas.

Seguridad en comparación con rendimiento
  • Una longitud de baliza demasiado larga produce muy pocos falsos positivos y podría revelar información distintiva sobre la distribución del conjunto de datos.

  • Una longitud de baliza demasiado corta produce demasiados falsos positivos y aumenta el costo de rendimiento de las consultas, porque requiere un análisis más amplio de la base de datos.

Al determinar la longitud de baliza adecuada para su solución, debe encontrar una longitud que preserve adecuadamente la seguridad de sus datos sin afectar el rendimiento de las consultas más de lo estrictamente necesario. El grado de seguridad que conserva una baliza depende de la distribución del conjunto de datos y de la correlación de los campos a partir de los cuales se construyen las balizas. En los temas siguientes, se parte del supuesto de que las balizas están distribuidas de manera uniforme y no contienen datos relacionados entre sí.

Calcular la longitud de la baliza

La longitud de la baliza se define en bits y se refiere al número de bits de la etiqueta HMAC que se conservan tras el truncamiento. La longitud de baliza recomendada varía en función de la distribución del conjunto de datos, la presencia de valores relacionados entre sí y los requisitos específicos de seguridad y rendimiento. Si su conjunto de datos está distribuido de manera uniforme, puede usar las siguientes ecuaciones y procedimientos para ayudarse a identificar la mejor longitud de baliza para su implementación. Estas ecuaciones solo estiman el número promedio de falsos positivos que producirá la baliza, pero no garantizan que cada valor único del conjunto de datos produzca un número específico de falsos positivos.

nota

La eficacia de estas ecuaciones depende de la distribución del conjunto de datos. Si su conjunto de datos no está distribuido uniformemente, consulte ¿Las balizas son adecuadas para mi conjunto de datos?.

En general, cuanto más lejos esté el conjunto de datos de una distribución uniforme, más necesitará acortar la longitud de la baliza.

  1. Calcula la población

    La población es el número esperado de valores únicos en el campo a partir del cual se construye la baliza estándar, no el número total esperado de valores almacenados en el campo. Por ejemplo, considere un Room campo cifrado que identifique la ubicación de las reuniones de los empleados. Se espera que el Room campo almacene 100 000 valores en total, pero solo hay 50 salas diferentes que los empleados pueden reservar para reuniones. Esto significa que la población es de 50 porque solo hay 50 valores únicos posibles que se pueden almacenar en el Room campo.

    nota

    Si la baliza estándar se construye a partir de un campo virtual, la población utilizada para calcular la longitud de la baliza es el número de combinaciones únicas creadas por el campo virtual.

    Al estimar la población, asegúrese de tener en cuenta el crecimiento proyectado del conjunto de datos. Una vez que haya escrito nuevos registros con la baliza, no podrá actualizar la longitud de la baliza. Revise su modelo de amenazas y cualquier solución de base de datos existente para crear una estimación del número de valores únicos que espera que este campo almacene en los próximos cinco años.

    Su población no tiene por qué ser precisa. En primer lugar, identifique el número de valores únicos en su base de datos actual o calcule el número de valores únicos que espera almacenar durante el primer año. A continuación, utilice las siguientes preguntas para determinar el crecimiento proyectado de los valores únicos en los próximos cinco años.

    • ¿Espera que los valores únicos se multipliquen por 10?

    • ¿Espera que los valores únicos se multipliquen por 100?

    • ¿Espera que los valores únicos se multipliquen por 1000?

    La diferencia entre los valores únicos 50 000 y 60 000 no es significativa y ambos darán como resultado la misma longitud de baliza recomendada. Sin embargo, la diferencia entre los valores únicos 50 000 y 500 000 afectará considerablemente la longitud de baliza recomendada.

    Considere la posibilidad de revisar los datos públicos sobre la frecuencia de los tipos de datos más comunes, como los códigos postales o los apellidos. Por ejemplo, hay 41 707 códigos postales en los Estados Unidos. La población que utilice debe ser proporcional a su propia base de datos. Si el ZIPCode campo de la base de datos incluye datos de todos los Estados Unidos, puede definir su población como 41 707, incluso si el ZIPCode campo no tiene actualmente 41 707 valores únicos. Si el ZIPCode campo de la base de datos solo incluye datos de un estado y siempre incluirá datos de un solo estado, entonces puede definir su población como el número total de códigos postales de ese estado en lugar de 41 704.

  2. Calcule el rango recomendado para el número esperado de colisiones

    Para determinar la longitud de baliza adecuada para un campo determinado, primero debe identificar un rango adecuado para el número esperado de colisiones. El número esperado de colisiones representa el número promedio esperado de valores únicos de texto no cifrado que se asignan a una etiqueta HMAC concreta. El número esperado de falsos positivos para un valor único de texto no cifrado es uno menos que el número esperado de colisiones.

    Recomendamos que el número esperado de colisiones sea mayor o igual a dos e inferior a la raíz cuadrada de la población. Las siguientes ecuaciones solo funcionan si la población tiene 16 o más valores únicos.

    2 ≤ number of collisions < √(Population)

    Si el número de colisiones es inferior a dos, la baliza producirá muy pocos falsos positivos. Recomendamos dos como número mínimo de colisiones esperadas porque significa que, en promedio, cada valor único del campo generará al menos un falso positivo al asignarlo a otro valor único.

  3. Calcule el rango recomendado para las longitudes de baliza

    Tras identificar el número mínimo y máximo de colisiones esperadas, utilice la siguiente ecuación para identificar un rango de longitudes de baliza adecuadas.

    number of collisions = Population * 2-(beacon length)

    En primer lugar, calcule la longitud de la baliza, donde el número de colisiones esperadas es igual a dos (el número mínimo recomendado de colisiones esperadas).

    2 = Population * 2-(beacon length)

    A continuación, calcule la longitud de la baliza, donde el número esperado de colisiones es igual a la raíz cuadrada de tu población (el número máximo recomendado de colisiones esperadas).

    √(Population) = Population * 2-(beacon length)

    Recomendamos redondear el resultado que produce esta ecuación a la longitud de baliza más corta. Por ejemplo, si la ecuación produce una longitud de baliza de 15,6, recomendamos redondear ese valor a 15 bits en lugar de redondearlo al alza a 16 bits.

  4. Elija una longitud de baliza

    Estas ecuaciones solo identifican un rango recomendado de longitudes de baliza para su campo. Recomendamos utilizar una longitud de baliza más corta para preservar la seguridad del conjunto de datos siempre que sea posible. Sin embargo, la longitud de la baliza que utilice realmente viene determinada por el modelo de amenaza. Tenga en cuenta sus requisitos de rendimiento al revisar su modelo de amenazas para determinar la mejor longitud de baliza para su campo.

    El uso de una longitud de baliza más corta reduce el rendimiento de las consultas, mientras que el uso de una longitud de baliza más larga reduce la seguridad. En general, si el conjunto de datos está distribuido de forma desigual, o si se construyen balizas distintas a partir de campos relacionados entre sí, es necesario utilizar longitudes de baliza más cortas para minimizar la cantidad de información revelada sobre la distribución de los conjunto de datos.

    Si revisa su modelo de amenazas y decide que cualquier información distintiva revelada sobre la distribución de un campo no representa una amenaza para su seguridad general, puede optar por utilizar una longitud de baliza superior al rango recomendado que calculó. Por ejemplo, si ha calculado el rango recomendado de longitudes de baliza para un campo de 9 a 16 bits, puede optar por utilizar una longitud de baliza de 24 bits para evitar cualquier pérdida de rendimiento.

    Elija la longitud de la baliza con cuidado. Una vez que haya escrito nuevos registros con la baliza, no podrá actualizar la longitud de la baliza.

Ejemplo

Considere una base de datos que marcara el unit campo como ENCRYPT_AND_SIGN parte de las acciones criptográficas. Para configurar una baliza estándar para el unit campo, necesitamos determinar el número esperado de falsos positivos y la longitud de la baliza para el unit campo.

  1. Haga un estimado de la población

    Tras revisar nuestro modelo de amenazas y nuestra solución de base de datos actual, esperamos que el unit campo acabe teniendo 100 000 valores únicos.

    Esto significa que la Población = 100 000.

  2. Calcule el rango recomendado para el número esperado de colisiones.

    Para este ejemplo, el número esperado de colisiones debe estar entre 2 y 316.

    2 ≤ number of collisions < √(Population)
    1. 2 ≤ number of collisions < √(100,000)
    2. 2 ≤ number of collisions < 316
  3. Calcule el rango recomendado para la longitud de la baliza.

    Para este ejemplo, la longitud de la baliza debe estar entre 9 y 16 bits.

    number of collisions = Population * 2-(beacon length)
    1. Calcule la longitud de la baliza cuando el número esperado de colisiones sea igual al mínimo identificado en el Paso 2.

      2 = 100,000 * 2-(beacon length)

      Longitud de la baliza = 15,6 o 15 bits

    2. Calcule la longitud de la baliza cuando el número esperado de colisiones sea igual al máximo identificado en el Paso 2.

      316 = 100,000 * 2-(beacon length)

      Longitud de la baliza = 8,3 u 8 bits

  4. Determine la longitud de baliza adecuada para sus requisitos de seguridad y rendimiento.

    Por cada bit inferior a 15, el costo de rendimiento y la seguridad se duplican.

    • 16 bits

      • En promedio, cada valor único se asignará a otras 1,5 unidades.

      • Seguridad: dos registros con la misma etiqueta HMAC truncada tienen un 66% de probabilidades de tener el mismo valor de texto no cifrado.

      • Rendimiento: una consulta recuperará 15 registros por cada 10 registros que realmente haya solicitado.

    • 14 bits

      • En promedio, cada valor único se asignará a otras 6,1 unidades.

      • Seguridad: dos registros con la misma etiqueta HMAC truncada tienen un 33% de probabilidades de tener el mismo valor de texto no cifrado.

      • Rendimiento: una consulta recuperará 30 registros por cada 10 registros que realmente haya solicitado.