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 y las particiones de una baliza
| Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de AWS bases de datos. 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 con capacidad de búsqueda, el SDK de cifrado de AWS bases de datos calcula un HMAC sobre el valor del texto sin formato combinado con un identificador de partición. Dentro de una partición determinada, el HMAC completo representa de forma exclusiva el valor del texto sin formato. A continuación, el SDK trunca la salida del HMAC para que varios valores de texto sin formato distintos puedan asignarse a la misma baliza. Estas colisiones, también conocidas como falsos positivos, limitan la capacidad de un usuario no autorizado de deducir información distintiva sobre el texto sin formato subyacente.
El número medio de falsos positivos generados por cada baliza viene determinado por la longitud de la baliza restante tras el truncamiento y el número de particiones en uso. 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. Al distribuir los valores entre varias particiones, se mantienen las colisiones dentro de cada partición, lo que ayuda a reducir la concentración de frecuencias y, al mismo tiempo, a preservar el comportamiento correcto de las consultas.
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. Las longitudes de baliza más cortas y las particiones adicionales aumentan las colisiones y reducen la pérdida de frecuencia, mientras que las longitudes de baliza más largas y el menor número de particiones mejoran la precisión de las consultas.
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 las longitudes de baliza y el número de particiones adecuados ayuda a mitigar estos riesgos y a preservar la confidencialidad de los datos.
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, normalmente es necesario generar más falsos positivos (balizas de menor longitud, particiones adicionales o ambas), lo que, a su vez, puede reducir el rendimiento de las consultas.
Temas
Elegir un esquema de particionamiento
El esquema de particionamiento determina cómo se distribuyen los elementos entre las particiones cuando se derivan las balizas. Elegir un esquema adecuado es importante para equilibrar la privacidad, el rendimiento y la previsibilidad operativa.
Al seleccionar un esquema de particionamiento, tenga en cuenta los siguientes objetivos:
-
Distribuya valores de alta frecuencia para reducir las clases de equivalencia de balizas grandes.
-
Evite introducir patrones predecibles que puedan filtrar información confidencial.
-
Mantenga un comportamiento estable en todas las escrituras y consultas.
Distribución aleatoria predeterminada
El valor predeterminado recomendado es un esquema de distribución aleatoria. En este modelo, cada elemento se asigna a una partición mediante un valor aleatorio criptográficamente seguro. La distribución aleatoria produce tamaños de partición aproximadamente iguales a lo largo del tiempo y garantiza que los valores frecuentes se distribuyan uniformemente.
Utilice la distribución aleatoria cuando:
-
No tiene un conocimiento sólido del dominio sobre las distribuciones de valores.
-
El conjunto de datos contiene un sesgo desconocido o en evolución.
-
Desea minimizar las filtraciones dependientes de los atributos.
Distribución determinista
En algunos casos, la asignación de particiones debe ser determinista. Un esquema determinista asigna particiones en función de una función estable de los atributos de los elementos. Estos esquemas deben diseñarse con cuidado, ya que las entradas sesgadas o sensibles pueden provocar una partición desigual o una fuga de información no intencionada.
Utilice una distribución determinista cuando:
-
Los flujos de trabajo operativos dependen de una ubicación uniforme de las particiones.
-
Tiene un conjunto de valores únicos que se agrupan intencionadamente en una sola partición.
Manejo de valores calientes conocidos
Si su conjunto de datos contiene valores calientes conocidos, puede combinar estrategias aleatorias y deterministas. Por ejemplo, puedes distribuir aleatoriamente un conjunto pequeño de valores de alta frecuencia y asignar todos los demás valores de forma determinista.
Este enfoque reduce la concentración de los valores calientes y, al mismo tiempo, conserva el comportamiento predecible del resto del conjunto de datos. Como introduce una complejidad adicional, revísela detenidamente para evitar la filtración de información involuntaria.
Ejemplos de esquemas de particionamiento
Los siguientes ejemplos ilustran los esquemas de partición más comunes y muestran cómo las diferentes características de los datos influyen en la asignación de particiones. Cada ejemplo demuestra cómo equilibrar la privacidad, el rendimiento y la simplicidad operativa.
Ejemplo 1: Datos distribuidos uniformemente
Está creando una baliza para los números de teléfono y los valores de su conjunto de datos se distribuyen aproximadamente de manera uniforme. Ningún número de teléfono aparece con mucha más frecuencia que otros.
En este caso, basta con configurar una sola partición. Las particiones adicionales ofrecen pocos beneficios y solo aumentarían la dispersión de consultas.
Ejemplo 2: resultados binarios con frecuencia sesgada
Tiene una base de datos que almacena los resultados de las pruebas médicas con dos valores posibles: NEGATIVO y POSITIVO. Los resultados negativos se producen aproximadamente cinco veces más a menudo que los positivos.
Para reducir la pérdida de frecuencia, utilice una estrategia mixta:
-
Asigne los resultados NEGATIVOS de forma aleatoria en cinco particiones.
-
Asigne los resultados POSITIVOS de forma determinista a una sola partición.
Este enfoque distribuye el valor sobrerrepresentado y, al mismo tiempo, mantiene estable el valor más raro, lo que reduce las clases de equivalencia grandes sin una dispersión innecesaria.
Ejemplo 3: Valores candentes conocidos en un dominio grande
Tiene una base de datos de nombres en los Estados Unidos. Un conjunto relativamente pequeño de nombres comunes (por ejemplo, los 500 nombres más frecuentes) aparece con mucha más frecuencia que el resto.
-
Asigne los 500 nombres más frecuentes de forma aleatoria en cuatro particiones.
-
Asigne todos los nombres restantes de forma determinista a una sola partición.
-
Aumente gradualmente el número de particiones hasta que los datos asignados a cada partición muestren una distribución aproximadamente uniforme.
Este enfoque híbrido se centra en los valores actuales conocidos y, al mismo tiempo, mantiene la partición simple y predecible para la mayoría de los nombres.
Estos ejemplos muestran cómo los esquemas de particionamiento se pueden adaptar a las diferentes características de los datos. En la mayoría de los casos, la distribución aleatoria es suficiente, pero incorporar el conocimiento del dominio puede mejorar aún más la privacidad y el rendimiento si se aplica con cuidado.
Calcular la longitud de la baliza
La longitud de la baliza se especifica en bits y determina cuántos bits de la salida del HMAC se conservan tras el truncamiento. La longitud recomendada depende de cómo se distribuyan los valores en cada partición, de si los datos contienen valores correlacionados y de sus requisitos de seguridad y rendimiento. Cuando un conjunto de datos es aproximadamente uniforme después de aplicar un esquema de partición adecuado, puede usar ecuaciones simples y procedimientos de ajuste para estimar la longitud efectiva de una baliza. Estas ecuaciones proporcionan una estimación del número medio de falsos positivos que puede producir una baliza, pero no garantizan un número específico de falsos positivos para cada valor único del conjunto de datos. El primer paso es estimar la población.
nota
La eficacia de estas ecuaciones depende de la distribución del conjunto de datos dentro de cada partición. Si su conjunto de datos no está distribuido uniformemente, consulte ¿Las balizas son adecuadas para mi conjunto de datos?.
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.
Calcular la longitud de la baliza a partir del tamaño de
Si los datos están distribuidos aproximadamente de manera uniforme en cada partición y no contienen valores correlacionados, puede estimar la longitud de la baliza adecuada mediante una fórmula sencilla basada en la población.
Sea p el tamaño de la población de la baliza, es decir, el número de valores de texto plano distintos a partir de los cuales se construye la baliza dentro de una sola partición. Un punto de partida común para la longitud b de la baliza (en bits) es:
b = log₂(p) − 1
Esta fórmula mantiene una probabilidad nada despreciable de colisiones y, al mismo tiempo, permite gestionar el número de falsos positivos. Al restar un bit del logaritmo, se garantiza que se espera que varios valores distintos se asignen a la misma baliza, lo que ayuda a limitar la pérdida de frecuencia y favorece el anonimato.
Este cálculo proporciona una estimación del comportamiento medio de las colisiones en todo el conjunto de datos. No garantiza que todos los valores produzcan el mismo número de falsos positivos, ni tiene en cuenta las distribuciones asimétricas, los valores correlacionados o los patrones de datos contradictorios.
Utilice esta fórmula como una guía inicial y no como un requisito estricto. Valide siempre la configuración resultante en función del modelo de amenazas, las expectativas de rendimiento y las características de los datos observados, y ajuste la longitud de la baliza o el número de particiones según sea necesario.
Tema avanzado sobre la longitud de las balizas
Como usuario avanzado, dispone de mayor flexibilidad a la hora de seleccionar la longitud de baliza adecuada para su solución. Debe elegir una longitud que proteja adecuadamente la confidencialidad de sus datos y, al mismo tiempo, minimice cualquier impacto innecesario en el rendimiento de las consultas. 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.
-
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 coste de rendimiento de las consultas, ya que requiere un análisis más amplio de la base de datos.
Si su conjunto de datos está distribuido aproximadamente de manera uniforme, puede usar las siguientes ecuaciones y procedimientos para estimar la longitud de baliza adecuada para su implementación. Estas ecuaciones proporcionan una estimación del número medio de falsos positivos que puede producir una baliza, pero no garantizan un número específico de falsos positivos para cada valor único del conjunto de datos. 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í.
-
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.
-
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.
-
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 avanzado de longitud de baliza
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.
-
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
unitcampo acabe teniendo 100 000 valores únicos.Esto significa que la Población = 100 000.
-
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)-
2 ≤ number of collisions < √(100,000) -
2 ≤ number of collisions <316
-
-
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)-
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
-
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
-
-
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.
-
-