Entrevistador: Dígame cómo realizar una consulta difusa en datos cifrados.

 
  
 
  
您好,我是路人,更多优质文章见个人博客:http://itsoku.com

texto

Sabemos que los datos cifrados no son muy amigables con las consultas difusas. Este artículo hablará sobre la implementación de consultas difusas en datos cifrados, con la esperanza de inspirar a todos.

Para la seguridad de los datos, a menudo encriptamos y almacenamos datos importantes durante el proceso de desarrollo. Los más comunes incluyen: contraseñas, números de teléfonos móviles, números de teléfono, direcciones detalladas, números de tarjetas bancarias, códigos de verificación de tarjetas de crédito y otra información. Esta información requiere encriptación y descifrado. Es diferente. Por ejemplo, necesitamos cifrar y almacenar contraseñas. Generalmente, hashse utilizan algoritmos lentos irreversibles. hashLos algoritmos lentos pueden evitar el descifrado por fuerza bruta (normalmente intercambiando tiempo por seguridad). No necesitamos descifrado ni búsqueda difusa al recuperar, Use directamente el texto cifrado para que coincida exactamente, pero el número de teléfono móvil no puede hacer esto, porque necesitamos ver la información original del número de teléfono móvil y también debemos admitir la búsqueda difusa del número de teléfono móvil, por lo que admitiremos la consulta difusa. para cifrado y descifrado de datos reversibles hoy. Vea qué implementaciones están disponibles.

Busqué en Internet de manera casual y hay muchas publicaciones sobre "Consulta difusa después del cifrado", que hablan sobre ideas de implementación, ventajas y desventajas.

Cómo realizar una consulta difusa sobre datos cifrados

Clasifiqué la consulta difusa de datos cifrados en tres categorías, de la siguiente manera:

  • Método de escultura de arena (no pienses en el pensamiento del hombre heterosexual, solo date cuenta de la función y nunca pienses profundamente en el problema)

  • Práctica convencional (piense en los problemas de rendimiento de las consultas y utilice algo de espacio de almacenamiento para el rendimiento, etc.)

  • Enfoque de Super Dios (un enfoque más avanzado piensa desde el nivel del algoritmo)

Hablemos de las ideas de implementación y las ventajas y desventajas de estos tres métodos de implementación uno por uno. Primero, veamos el método de escultura de arena.

Práctica de escultura de arena.

  • Cargue todos los datos en la memoria para descifrarlos y, después de descifrarlos, utilice el algoritmo del programa para una coincidencia aproximada.

  • Asigne los datos de texto cifrado a una tabla de mapeo de texto sin formato, comúnmente conocida como tagtabla, y luego realice una consulta difusa tagpara asociar los datos de texto cifrado.

escultura de arena uno

Echemos un vistazo al primer método, que consiste en cargar todos los datos en la memoria para descifrarlos. Si la cantidad de datos es pequeña, se puede utilizar este método. Es simple y asequible. Si la cantidad de datos es grande, Será un desastre. Hagamos un cálculo aproximado.

Una letra inglesa (no distingue entre mayúsculas y minúsculas) ocupa un byte y un carácter chino ocupa dos bytes. DESPor , 13800138000la cadena cifrada HE9T75xNx6c5yLmS5l4r6Q==ocupa 24bytes.

número de líneas bytes MEGABYTE
100w 24 millones 22,89
1000w 240 millones 228,89
100000000 2,4 mil millones 2288.89

Puede ser de cientos de megabytes si es liviano y de gigabytes si es pesado. De esta manera, el programa de aplicación se puede integrar en minutos. Out of memorySi los datos son solo unos pocos cientos, miles o decenas de miles de piezas, Es completamente posible hacer esto, pero la gran cantidad de datos es muy sólida. Ya no se recomienda.

Escultura de arena II

Veamos el segundo enfoque, asignar los datos de texto cifrado a una tabla de asignación de texto sin formato y luego realizar una consulta difusa en la tabla de asignación para asociar los datos de texto cifrado. Entonces, ¿por qué ciframos los datos? ¿No sería mejor no what???!!!cifrarlos directamente?

Dado que debemos tener requisitos de seguridad para el cifrado de datos, haremos esto. Agregar una tabla de mapeo de texto sin formato viola los requisitos de seguridad. Esto no es seguro ni conveniente.

práctica convencional

Echemos un vistazo al método convencional, que también es el método más utilizado: este tipo de método satisface la seguridad de los datos y es fácil de realizar consultas.

  • Implemente la función del algoritmo de cifrado en la base de datos y utilícela en consultas difusas.decode(key) like '%partial%

  • Lleve a cabo una combinación de segmentación de palabras en los datos de texto cifrado, cifre los conjuntos de resultados de la combinación de segmentación de palabras respectivamente y luego guárdelos en la columna extendida.key like '%partial%'

rutina uno

Implemente algoritmos de cifrado y descifrado coherentes con el programa en la base de datos, modifique las condiciones de consulta difusa y utilice la función de cifrado y descifrado de la base de datos para descifrar primero y luego la búsqueda difusa. Se puede lograr modificándolo, pero la desventaja también es obvia. De esta manera, el índice de la base de datos no se puede utilizar para optimizar la consulta, e incluso algunas bases de datos pueden no garantizar el mismo algoritmo de cifrado y descifrado que el programa, pero se puede garantizar que sea coherente con el cifrado convencional. y algoritmo de descifrado. La aplicación es consistente.

Si los requisitos para el rendimiento de las consultas no son particularmente altos y los requisitos para la seguridad de los datos son promedio, también es una buena opción utilizar algoritmos comunes de cifrado y descifrado, por ejemplo AES, etc.DES

Si la empresa tiene su propia implementación de algoritmo y no proporciona una implementación de algoritmo multiterminal, busque a alguien con un buen algoritmo para estudiar y completar la implementación multiterminal, o deje de utilizar este método.

Hemos creado un grupo de intercambio técnico de alta calidad. Cuando estés con personas excelentes, tú mismo llegarás a ser excelente. Date prisa y haz clic para unirte al grupo y disfrutar de la alegría de crecer juntos.

rutina dos

Combinar la segmentación de palabras para datos de texto cifrado, cifrar los conjuntos de resultados de la combinación de segmentación de palabras respectivamente y luego almacenarlos en la columna extendida y pasarlos durante la consulta. Este key like '%partial%'es un método de implementación relativamente rentable. Primero analicemos sus ideas de implementación.

Primero agrupe los caracteres con una longitud fija y divida un campo en múltiplos. Por ejemplo, se utilizan 4 caracteres ingleses (ancho medio) y 2 caracteres chinos (ancho completo) como condición de búsqueda. Por ejemplo:

ningyu1Utilice el método de cifrado de 4 caracteres como grupo, el primer grupo ning , el segundo grupo ingy , el tercer grupo ngyu , el cuarto grupo gyu1 … y así sucesivamente.

Si necesita recuperar todos los datos que contienen 4 caracteres de la condición de búsqueda, como por ejemplo: ingy , después de cifrar los caracteres,  key like “%partial%” verifique la base de datos.

Todos sabemos que la longitud aumentará después del cifrado, y el almacenamiento de esta longitud aumentada es el costo adicional que tenemos que gastar. El costo de uso típico es a cambio de la velocidad. La tasa de crecimiento del texto cifrado varía con el algoritmo. Sección DES, la cadena cifrada ocupa un byte y el crecimiento es el doble, entonces, qué importante es un algoritmo excelente, puede ahorrar muchos costos para la empresa, pero, de nuevo, el salario de los ingenieros de algoritmos no es bajo, así que no Sepa si ahorrar costos o aumentar costos, jajaja ... puedes resolverlo tú mismo.1380013800011HE9T75xNx6c5yLmS5l4r6Q==242.18

Volviendo al tema, aunque este método puede realizar la consulta difusa de datos cifrados, existen requisitos para la longitud de los caracteres de la consulta difusa. En el ejemplo que di arriba, la longitud del texto original del carácter de la consulta difusa debe ser mayor. No se recomiendan 4 números/inglés o 2 caracteres chinos, sin importar cuán corta sea la longitud, porque aumentará el número de combinaciones de segmentación de palabras, lo que aumentará el costo de almacenamiento y reducirá la seguridad.

¿Alguna vez se ha conectado a las API de Taobao, Pinduoduo y JD? Cifran los datos confidenciales del usuario en los datos de pedido de la plataforma y admiten consultas difusas al mismo tiempo. Este es el método utilizado. A continuación he ordenado los campos de texto cifrado de varias plataformas de comercio electrónico Para obtener una descripción del plan de búsqueda, aquellos que estén interesados ​​pueden consultar el siguiente enlace.

Esquema de recuperación de campos de texto cifrado de Taobao Esquema de recuperación de campos de texto cifrado de Alibaba Esquema de recuperación de campos de texto cifrado de Pinduoduo Esquema de recuperación de campos de texto cifrado de JD

PD: Son básicamente iguales y todos están plagiados entre sí, incluso el formato de datos cifrados es el mismo.

La ventaja de este método es que no es complicado de implementar y es relativamente simple de usar. Es un método de compromiso, porque el costo de almacenamiento de los campos extendidos aumentará, pero la velocidad de consulta se puede optimizar utilizando el índice de la base de datos. Se recomienda este método.

práctica súper dios

Echemos un vistazo a las prácticas excelentes. Este tipo de práctica es más difícil y se considera desde el nivel del algoritmo. Algunos incluso diseñan un nuevo algoritmo. Aunque hay algunas referencias de algoritmos ya preparadas, la mayoría de ellos son productos semiacabados que no se puede usar directamente Use, por lo que alguien aún necesita hacer una investigación en profundidad e integrarlo en sus propias aplicaciones.

  • Pensando desde el nivel del algoritmo, incluso diseñe un nuevo algoritmo que admita la búsqueda difusa

Este nivel es principalmente el campo de investigación de los ingenieros de algoritmos profesionales. No es una cuestión sencilla diseñar un algoritmo que sea ordenado, no irreversible y cuya longitud del texto cifrado no pueda crecer demasiado rápido. La idea general es la siguiente: Cifrado y descifrado por medio de cifrado y descifrado, conservando el mismo orden del texto cifrado que el texto original, lo que admite una coincidencia difusa del texto cifrado, porque no soy un experto en este campo y no he investigado más, por lo que encontré información en Internet para referencia una vez.

  • Método de cifrado de coincidencia difusa para datos de caracteres en la base de datos

Se pueden centrar en Hilllos métodos de cifrado de coincidencia difusa y procesamiento de contraseñas mencionados aquí .FMES

  • Investigación sobre un mecanismo mejorado de búsqueda difusa de texto cifrado basado en BloomFilter

  • Cómo cifrar la base de datos que admite consultas rápidas

  • Búsqueda en la nube basada en Lucene y consulta difusa basada en texto cifrado

La idea basada en Lucene es similar al método convencional 2 que presentamos anteriormente. Los caracteres se segmentan en palabras de igual longitud y el conjunto de resultados después de la segmentación de palabras se cifra y almacena, pero el almacenamiento es diferente. Uno es una base de datos relacional y el el otro es un dbmotor de búsqueda es.

  • Un esquema de cifrado de consultas difusas verificable en el almacenamiento en la nube

Resumir

Hemos introducido todos los esquemas de recuperación de datos cifrados aquí. Primero mencionamos los métodos de escultura de arena que se pueden encontrar en todas partes en Internet. También dijimos que estos métodos de escultura de arena no son recomendados. Utilice métodos convencionales tanto como sea posible. Si el La empresa tiene una dirección de algoritmo profesional. Para los talentos, es posible que desee considerar el enfoque sobrenatural basado en el nivel del algoritmo.

En términos generales, el segundo método de rutina es altamente recomendado en términos de insumos, relación de producción y costos de implementación y uso.

más buenos artículos

  1. Serie Java de alta concurrencia (34 artículos en total)

  2. Serie maestra de MySQL (27 artículos en total)

  3. Serie maestra de Maven (10 artículos en total)

  4. Serie Mybatis (12 artículos en total)

  5. Hable sobre implementaciones comunes de coherencia de base de datos y caché.

  6. La idempotencia de la interfaz es tan importante, ¿qué es? ¿Cómo lograrlo?

  7. Los genéricos, un poco difíciles, confundirán a mucha gente, ¡eso es porque no leíste este artículo!

↓↓↓ 点击阅读原文,直达个人博客
你在看吗

Supongo que te gusta

Origin blog.csdn.net/likun557/article/details/131929053
Recomendado
Clasificación