ES3060262T3 - Systems and methods for compression and encryption of data - Google Patents
Systems and methods for compression and encryption of dataInfo
- Publication number
- ES3060262T3 ES3060262T3 ES21821682T ES21821682T ES3060262T3 ES 3060262 T3 ES3060262 T3 ES 3060262T3 ES 21821682 T ES21821682 T ES 21821682T ES 21821682 T ES21821682 T ES 21821682T ES 3060262 T3 ES3060262 T3 ES 3060262T3
- Authority
- ES
- Spain
- Prior art keywords
- hash table
- data
- encryption key
- keys
- encryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/043—Masking or blinding of tables, e.g. lookup, substitution or mapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
En este documento se describen sistemas y métodos para la compresión y el cifrado de datos. Un método incluye la creación de varias claves de tabla hash mediante la aplicación de una máscara de bits a una clave de cifrado, la aplicación de una función hash a dicha clave, la creación de una tabla hash utilizando la función hash. Esta tabla hash contiene las claves de tabla hash y sus valores de índice, cada uno de los cuales identifica una ubicación de datos en la tabla hash asociada a una de las claves de tabla hash. Posteriormente, se reciben los datos de entrada y se codifican para generar datos codificados. La codificación incluye tanto la compresión como el cifrado de los datos de entrada utilizando la clave de cifrado y la tabla hash. (Traducción automática con Google Translate, sin valor legal)
Description
[0001] DESCRIPCIÓN
[0002] Sistemas y métodos para la compresión y el cifrado de datos
[0003] REFERENCIA CRUZADA A SOLICITUDES RELACIONADAS
[0004] N/A
[0005] CAMPO DE LA TECNOLOGÍA ACTUAL
[0006] La presente divulgación se refiere al campo técnico de la seguridad y la privacidad de los datos y, más concretamente, aunque sin carácter limitativo, a los sistemas y métodos que codifican datos mediante un único proceso de compresión y cifrado. Rahim Nasir ET AL: "Privacy-preserving image retrieval for mobile devices with deep features on the cloud", COMPUTER COMMUNICATIONS., vol. 127, 1 de septiembre de 2018 (01-09-2018), páginas 75-85, XP093062563 describe la recuperación de imágenes mediante una combinación de compresión y cifrado.
[0007] COMPENDIO
[0008] La presente invención se refiere a un método según la reivindicación 1 y a un sistema correspondiente según la reivindicación 9. Las realizaciones preferidas se definen en las reivindicaciones dependientes. La presente divulgación puede incluir un método que comprende crear una pluralidad de claves de tabla hash aplicando una máscara de bits a una clave de cifrado; la aplicación de una función hash a la clave de cifrado; la creación de una tabla hash utilizando la función hash, la tabla hash comprende la pluralidad de claves de tabla hash y valores de índice, los valores de índice identifican cada uno una ubicación de datos en la tabla hash conectada a una de la pluralidad de claves de tabla hash; la recepción de datos de entrada; y la codificación de los datos de entrada para generar datos codificados, la codificación incluye tanto la compresión como el cifrado de los datos de entrada utilizando la clave de cifrado y la tabla hash.
[0009] La presente descripción puede incluir un sistema que comprende: un procesador; y una memoria para almacenar instrucciones, el procesador ejecuta las instrucciones para crear una pluralidad de claves de tabla hash aplicando una máscara de bits a una clave de cifrado; aplicar una función hash a la clave de cifrado; crear una tabla hash utilizando la función hash, la tabla hash comprende la pluralidad de claves de tabla hash y valores de índice, los valores de índice identifican cada uno una ubicación de datos en la tabla hash conectada a una de la pluralidad de claves de tabla hash; recibir datos de entrada; y codificar los datos de entrada para generar datos codificados, la codificación incluye tanto la compresión como el cifrado de los datos de entrada utilizando la clave de cifrado y la tabla hash.
[0010] BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0011] Las figuras adjuntas ilustran determinadas realizaciones de la presente tecnología. Se entenderá que las figuras no están necesariamente a escala y que pueden omitirse detalles que no sean necesarios para comprender la tecnología o que dificulten la percepción de otros detalles. Se entenderá que la tecnología no se limita necesariamente a las realizaciones particulares ilustradas en el presente documento.
[0012] La FIG. 1 representa un esquema ilustrativo en donde se pueden implementar técnicas y estructuras para proporcionar los sistemas y métodos descritos en el presente documento.
[0013] La FIG. 2 es un diagrama de flujo de un ejemplo de método de la presente divulgación relacionado con la codificación de datos utilizando un sistema como el ilustrado en la FIG.1.
[0014] La FIG.3 es un diagrama de flujo de un ejemplo de submétodo de la presente divulgación.
[0015] La FIG.4 es un diagrama de flujo de otro ejemplo de submétodo de la presente divulgación.
[0016] La FIG. 5 es un diagrama de flujo de otro ejemplo de submétodo de la presente divulgación, relacionado con la creación de tablas hash.
[0017] La FIG. 6 es un diagrama de flujo de otro ejemplo de submétodo de la presente divulgación, relacionado con la codificación de datos de entrada.
[0018] La FIG. 7 es un diagrama esquemático de un sistema informático ejemplar que se utiliza para implementar realizaciones según la presente tecnología.
[0019] La FIG.8 ilustra un código de ejemplo para implementar un proceso de clave de cifrado de la presente divulgación.
[0020] DESCRIPCIÓN DETALLADA
[0021] Perspectiva general
[0022] En general, la presente divulgación se refiere a la seguridad y privacidad de los datos. Más concretamente, los sistemas y métodos aquí descritos pueden utilizarse para comprimir y cifrar un archivo o flujo de datos de entrada en un proceso único denominado generalmente como codificación.
[0023] Para contextualizar, las propiedades y objetivos fundamentales de la compresión y el cifrado de datos son diferentes entre sí. El objetivo de la compresión de datos es aprovechar los patrones en los datos para reducir la redundancia y, de este modo, hacer que el resultado sea más pequeño que el original, mientras que el objetivo del cifrado de datos es codificar los datos de tal manera que no se puedan encontrar patrones y, así, proteger la información contenida en los datos o el flujo de entrada.
[0024] La compresión de datos ofrece claras ventajas para reducir el tamaño de los datos en tránsito y en reposo, gracias a la reducción de los costes de almacenamiento y/o transmisión. El cifrado de datos también ofrece claras ventajas para proteger un archivo de datos o el contenido de flujos de datos y evitar que se conozcan. La combinación de la compresión y el cifrado de datos tiene una amplia aplicabilidad, ya que cada año se generan más datos y cada vez más usuarios finales se preocupan por la privacidad y la seguridad de su información. Cada año aumenta la cantidad bruta de datos que se crean, transmiten y almacenan. Dado el aumento y la rentabilidad de la computación en la nube y los dispositivos de computación personal, los usuarios finales dependen cada vez más de los recursos informáticos de unos pocos puntos centralizados de gran tamaño. Proteger los datos de los usuarios finales, como archivos o transmisiones, durante su tránsito hacia una instalación de procesamiento central, mientras se almacenan o incluso mientras esperan ser procesados, se ha convertido en un factor diferenciador clave para las entidades tanto del ámbito público como del privado. Los costos de transmisión y almacenamiento de datos siguen siendo relativamente fijos. Por lo tanto, una reducción en la cantidad bruta de datos que se transmiten o almacenan puede reducir el costo de operar un negocio, que cuenta la transmisión o el almacenamiento de datos como un coste.
[0025] La combinación de la compresión y el cifrado de datos tal y como se describe en el presente documento proporciona todas las ventajas individuales de ambos procesos en un único proceso. Un proceso único reduce la necesidad de varias etapas de compresión y cifrado. La reducción del número de etapas disminuye los puntos de fallo en un sistema, lo que puede reducir el coste de mantenimiento u operación de dicho sistema y aumentar la disponibilidad del mismo para los usuarios finales.
[0026] Ejemplos de realizaciones
[0027] Pasando ahora a los dibujos, la FIG. 1 muestra un esquema ilustrativo en donde se pueden implementar técnicas y estructuras para proporcionar los sistemas y métodos descritos en el presente documento en relación con la codificación de datos. Como se ha señalado anteriormente, la codificación incluye tanto la compresión como el cifrado de datos en un único proceso de extremo a extremo.
[0028] Se puede usar un sistema para codificar datos (una combinación de compresión y cifrado) mediante una clave privada generada mediante un generador de números aleatorios. La clave privada funciona como una clave de cifrado y se usa para generar claves de tablas hash y una función hash. El sistema puede comprender un ordenador de codificación 100 y un ordenador de decodificación 105 que están acoplados comunicativamente entre sí a través de una red 110. El sistema 100 también incluye un generador de números aleatorios 115 y un generador de claves de cifrado 120. El ordenador de codificación 100 puede comprender un módulo de codificación 103 y un módulo de cifrado secundario 109. El ordenador de descodificación 105 puede comprender un módulo de descodificación 111 y un módulo de descifrado secundario 113.
[0029] La red 110 puede incluir cualquiera o una combinación de múltiples tipos diferentes de redes, tales como redes de cable, Internet, redes inalámbricas y otras redes privadas y/o públicas. En algunos casos, la red 110 puede incluir telefonía celular, Wi-Fi o Wi-Fi directo. Se puede utilizar cualquier comunicación inalámbrica o cableada de corto o largo alcance.
[0030] Si bien se ilustran distintos sistemas informáticos, el ordenador de codificación 100 y el ordenador de decodificación 105 podrían integrarse en el mismo dispositivo o sistema, lo que permite la transmisión segura de datos en un único sistema o dispositivo. El ordenador de codificación 100 y el ordenador de decodificación 105 podrían funcionar como módulos en el mismo dispositivo.
[0031] Cuando sea apropiado, las funciones descritas en el presente documento pueden realizarse en uno o más de los siguientes elementos: hardware, software, firmware, componentes digitales o componentes analógicos. Por ejemplo, los sistemas de codificación y/o decodificación se pueden incorporar como uno o más circuitos integrados de aplicación específica (ASIC) o microcontroladores que se pueden programar para llevar a cabo uno o más de los sistemas y procedimientos descritos en el presente documento. A lo largo de la descripción
se utilizan ciertos términos y las reivindicaciones se refieren a componentes particulares del sistema. Como apreciará un experto en la materia, los componentes pueden denominarse con diferentes nombres. Este documento no pretende distinguir entre componentes que difieren en nombre, pero no en función.
[0032] El generador de números aleatorios 115 está configurado para generar bits de entropía utilizados para iniciar la generación de claves por parte del generador de claves de cifrado 120. El generador de claves de cifrado 120 recibe los bits de entropía del generador de números aleatorios 115 y genera una pluralidad de claves de cifrado. La cantidad de claves de cifrado generadas puede variar según los requisitos de diseño. En algunas realizaciones, cada clave es una clave de 128 bits, pero también se pueden generar claves de otros tamaños. Sin duda, cada una de la pluralidad de claves de cifrado puede tener una longitud similar entre sí.
[0033] La pluralidad de claves de cifrado se genera para crear un conjunto de claves de cifrado candidatas que se pueden usar para codificar datos como se divulga en el presente documento. En algunas realizaciones, se selecciona una clave de cifrado óptima de entre la pluralidad de claves de cifrado. En algunas realizaciones, una cantidad de la pluralidad de claves de cifrado puede ser lo suficientemente grande como para permitir el análisis iterativo de claves de cifrado.
[0034] La clave de cifrado que se seleccione finalmente puede incluir una de las claves de cifrado candidatas que produzca tanto el grado deseado de compresión como el grado deseado de cifrado (por ejemplo, codificación). El descubrimiento de claves seleccionadas puede incluir un proceso iterativo de codificación y descodificación de una pluralidad de archivos de datos de muestra con cada una de la pluralidad de claves de cifrado para determinar qué claves de cifrado se pueden utilizar y cuáles no. La comparación puede incluir la evaluación del grado de compresión de los archivos de datos de muestra que se obtienen al utilizar la pluralidad de claves de cifrado. Se entenderá que la clave de cifrado óptima o el conjunto de claves de cifrado seleccionadas para codificar datos según la presente divulgación pueden no ser la clave de cifrado más óptima de entre la pluralidad de claves de cifrado, ya que dicha clave sería fácil de encontrar y comprobar con el archivo o flujo de datos transmitidos o almacenados.
[0035] Se entenderá que, dada una clave de cifrado generada aleatoriamente de n bits, existen (2^n)-1 claves de cifrado diferentes que representan ((2^n)*n)-1 posiciones de inicio óptimas diferentes para una función de indexación por bits (el uso de la función de indexación por bits se describemás adelante).Dicho de otro modo, para cada tamaño de ventana de n bits existe una clave de cifrado óptima para la compresión. Si n es lo suficientemente grande y si el orden de (2^n)-1 no se conoce fuera de una función de codificación y/o decodificación, entonces existe una clave de cifrado que producirá la compresión y el cifrado para cada n. Además, si n es verdaderamente aleatorio y la clave de cifrado 2^n-1 es verdaderamente aleatoria, no se producirá ninguna compresión. La salida de f(i) (es decir, la función de codificación y/o descodificación) dada la clave de cifrado está perfectamente cifrada si y solo si se desconocen el contenido de n y su clave de cifrado (2^n)-1.
[0036] Para cada clave de cifrado óptima existe una segunda clave óptima, una tercera clave óptima, una cuarta clave óptima y así sucesivamente, hasta que no se produce compresión. Además, existen muchas claves de cifrado subóptimas (es decir, hace que n sea más grande). De hecho, hay |((2^n)-1)/(n))-(2^n)-1)| claves de cifrado subóptimas. Es posible que una clave de cifrado lo suficientemente grande para usarla en el cifrado no esté determinada por el número bruto de bits de la clave de cifrado, sino por (2^n)-1)/(n).
[0037] Lo ideal sería que (2^n)-1)/(n) fuera mayor que el número de claves de cifrado que un adversario puede almacenar o comprobar fácilmente en un tiempo o con un dinero realistas o viables. En algunos casos, el tamaño de la clave de cifrado debe ser mayor que (2^n)-1), y (2^n)-1)/(n) es un subgrupo de (2^n)-1. Todas las propiedades de la clave de cifrado de (2^n)-1 y su subgrupo ((2^n)-1)/(n)) son las mismas en lo que respecta al cálculo.
[0038] Se entenderá que la clave de cifrado o el conjunto de claves de cifrado que se seleccionan para su uso en la generación de una tabla hash 135 pueden seleccionarse comparando cómo la(s) clave(s) de cifrado comprime(n) y cifra(n) los archivos/datos de muestra. Es decir, los aspectos de la compresión y el cifrado pueden variar según el contenido de la clave de cifrado. Por ejemplo, una clave de cifrado puede comprimir suficientemente un archivo de muestra, pero no cifrarlo lo suficiente. Otra clave de cifrado puede comprimir insuficientemente un archivo de muestra, pero cifrar suficientemente el archivo de muestra. En algunas realizaciones, el ordenador de codificación 100 puede configurarse para seleccionar la clave de cifrado de entre la pluralidad de claves de cifrado que tiene un equilibrio preseleccionado de compresión y cifrado. En una realización, la compresión puede ser una relación de aproximadamente 8:1.
[0039] En diversas realizaciones, una clave de cifrado que se selecciona para la mejor compresión puede utilizar claves estándar que representan todas las permutaciones binarias de longitud n. La serie de información binaria no puede superar una longitud determinada o seleccionada. Otra clave de cifrado puede producir una
combinación que es la enésima clave de cifrado más óptima. Se puede seleccionar otra clave de cifrado que no sea la más óptima para la compresión ni la más óptima para el cifrado, sino un equilibrio entre el cifrado y la compresión.
[0040] En una realización, la clave de cifrado seleccionada 125 puede ser de un tamaño considerable, de modo que haya una gran variedad de secuencias de bytes. Lo ideal sería que la clave de cifrado seleccionada 125 permitiera la representación de 48-64 caracteres en términos de 12-24 bits, lo que daría una tasa de compresión superior al 50 %, sin la adición de codificación de bytes de longitud variable (es decir, el parámetro “-c 0” al que se hace referencia en la FIG.8), además de proporcionar ofuscación de datos. En una realización, la longitud de la máscara de bits utilizada debe ser de al menos ocho caracteres. El tamaño de la longitud de la máscara puede variar según los requisitos operativos, ya que el contenido de la clave de cifrado seleccionada 125 puede determinar la amplitud con la que se distribuyen los datos cuando se aplica la clave de cifrado seleccionada 125. En resumen, utilizando los métodos anteriores, se selecciona una única clave de cifrado de la pluralidad de claves de cifrado designadas como clave de cifrado 125 seleccionada.
[0041] La clave de cifrado única se puede utilizar para generar una pluralidad de claves de tabla hash basadas en la aplicación de una máscara de bits a la clave de cifrado única. El método también incluye la etapa de generar una función hash 127 a partir de la clave de cifrado 125 seleccionada. El método incluye una etapa de generar una tabla hash 135 a partir de la función hash 127 y la pluralidad de claves hash.
[0042] Por tanto, de las diversas claves que se describen en el presente documento, una de ellas, denominada clave de cifrado, hace referencia a la clave de codificación/cifrado utilizada para codificar los datos. La clave de cifrado puede tener la forma de un archivo de claves, en algunas realizaciones. Las claves hash hacen referencia a los valores clave de una tabla/mapa hash generada.
[0043] A modo de ejemplo, se puede explicar un mecanismo de extracción de claves utilizando los siguientes términos:
[0044] • 01 <- un byte de datos;
[0045] • 01 2345 67 <- un “fragmento” de 32 bits de un archivo clave para un documento (por ejemplo, archivo de muestra);
[0046] • 01 2345 6789 AB CD EF fragmento de 64 bits leído del archivo de clave (denominado “palabra”) [0123 4567 89 AB CD EF, FE DC BA 9876543210] <- una clave de cifrado básica de ejemplo;
[0047] • [0000000100100011010001010110011110001001101010111100110111101111
[0048] • 1111111011011100101110101001100001110110010101000011001000010000] <- nuestra clave de cifrado básica en binario (escrita en formato estándar MSbit-first).
[0049] La tabla hash se genera con un valor para cada uno de los bits de la clave, por lo que en este ejemplo tendríamos 128 valores distintos en el mapa desordenado. El i-ésimo valor del mapa se refiere al i-ésimo bit de la clave total. La tabla hash 135 puede hacer referencia a componentes<i,j>, donde“i”es el índice o la posición inicial de la coincidencia y“j”es la longitud en bits de la coincidencia. En general, con respecto a <i, j>,ies el índice de bits yjes la longitud de coincidencia en bits. Nota:<i, j también puede considerarse como;<i mod j>. En algunas realizaciones, se utiliza una función hash 127 para generar un valor de índice que identifica la ubicación de los datos en la tabla hash 135 conectada a una clave hash concreta.
[0050] A continuación, estos datos se reducen en la longitud de la máscara de bits que se pasó. Por ejemplo, una máscara de bits de cuatro cuando se pasa a la construcción del códec significaría que cada entrada en la tabla hash tendría una longitud de cuatro bits. A modo de ejemplo:
[0051] • i=0: palabra 1;
[0052] • i=31: La última mitad de la palabra 1 la mitad frontal de la palabra 2;
[0053] • i=95: La última mitad de la palabra 2 la mitad frontal de la palabra 1; y
[0054] • i=127: el último bit de la palabra 2 los 63 bits iniciales de la palabra 1.
[0055] A modo de ejemplo, considerando el 31er elemento que se añadirá a la tabla hash 135 con una máscara de bits de 12, se genera el siguiente valor: [10001001 10101011 11001101 11101111 11111110 11011100 10111010 10011000] y se añade a la tabla hash con la siguiente clave de tabla hash 10001001 1011.
[0056] Conceptualmente, las entradas de la tabla resumen 135 funcionan como listas enlazadas, de modo que todos los segmentos candidatos de un dato de entrada que producen la misma clave se adjuntan a la lista en cada entrada.
[0057] Ejemplo:
[0058] Dada la clave anterior y una longitud de máscara de 4, una entrada de la tabla hash sería:
[0061]
[0063] Clave hash: 1001
[0064] valor: (lista enlazada)
[0065] 1.01011001111000100110101011110011
[0066] 2.10001001101010111100110111101111
[0067] 3.11111001110111011001111101011011
[0068] Los elementos de la Tabla Hash 1 coinciden con los valores anteriores. Es decir, los números de referencia por encima de las entradas de la tabla hash coinciden con los valores 1-3 anteriores. Las líneas que se extienden por encima (o por debajo) de los números de referencia están ordenadas. Por ejemplo, el valor de 1100101 corresponde a los valores (1), (2) y parcialmente a (3).
[0069] La tabla hash se puede utilizar para proporcionar posibles coincidencias O(1) a nuevas cadenas en el proceso de codificación. Una vez que se encuentra la coincidencia en la clave hash, el codificador recorre la lista y encuentra la palabra con la concordancia más larga desde la derecha, y luego informa la clave hash y la longitud. Se trata de una optimización para mejorar la velocidad y puede utilizarse para reducir el número de comparaciones. Una vez que se ha generado la tabla hash, puede producirse un proceso de codificación por parte del ordenador de codificación 100. Como se ha indicado anteriormente, la codificación incluye tanto la compresión como el cifrado en una sola etapa. En términos generales, la compresión y la codificación se facilitan usando la tabla hash 135 que se generó como se ha divulgado anteriormente. El ordenador de codificación 100 puede recibir un dato de entrada 140 (archivo o flujo de datos) y buscar una secuencia de datos más larga en el archivo recibido que coincida con una clave de la tabla hash 135, y recuperar el valor de índice correspondiente. El ordenador de codificación 100 utiliza valores de índice de la tabla hash 135 para codificar los datos de entrada 140 en una representación comprimida y cifrada, denominada generalmente “datos codificados 145”. Sin duda, los datos codificados 145 tienen una longitud de datos acortada, comprimiendo así los datos de entrada 140. La sustitución de valores de índice también funciona para cifrar los datos de entrada 140. Por lo tanto, los datos codificados 145 incluyen solo referencias a la tabla hash y a las claves de la tabla hash. En algunas realizaciones, el ordenador de codificación 100 puede aplicar un tipo de cifrado secundario para cifrar aún más los datos codificados 145. Por ejemplo, el ordenador de codificación 100 puede utilizar AES (estándar de cifrado avanzado), HE (cifrado homomórfico) u otro tipo de cifrado. Esto produce datos cifrados, codificados 160. Una vez más, el cifrado secundario al que se hace referencia aquí es diferente del cifrado que se produce en el proceso combinado de compresión/cifrado que se utilizó para codificar los datos de entrada. El tipo de cifrado secundario puede utilizar una clave de cifrado secundaria.
[0070] El ordenador de codificación 100 puede transmitir los datos cifrados, codificados 160 en la red informática 110 al ordenador de descodificación 105. La transmisión de los datos binarios cifrados puede tratarse como cualquier otro archivo de datos cifrados, ya que los datos incluyen conjuntos de números “normales”.
[0071] Se puede usar un control cuidadoso de la distribución de claves, ya que los métodos del presente documento utilizan un método simétrico de cifrado. Los usuarios pueden guardar los archivos de datos y las claves de cifrado separados unos de otros y transmitirlos a través de distintos métodos de transmisión cifrados o aislados. Es decir, cuando datos tales como claves de cifrado y funciones de hash se comparten entre el ordenador de codificación y el ordenador de decodificación, estos datos pueden transmitirse por separado de los datos
codificados 145 (o los datos codificados y cifrados 160).
[0072] El ordenador de descodificación 105 recibe la clave de cifrado 125 seleccionada, los datos codificados y cifrados 160, la clave de cifrado secundaria (si se usó un cifrado secundario) y la función hash 127. Si se usó una codificación secundaria, el ordenador de descodificación 105 puede descifrar los datos codificados y cifrados 160 para recuperar los datos codificados 145. A continuación, el ordenador de descodificación 105 puede descodificar los datos codificados 145 utilizando la clave de cifrado seleccionada 125 mediante la regeneración de la tabla hash 170 (copia regenerada de la tabla hash 135) generada utilizando la misma pluralidad de claves hash y la misma función hash 127 que la tabla hash 135 descrita anteriormente.
[0073] En un ejemplo, una secuencia entrante de contenido de un archivo fuente se divide en valores de 64 bits de longitud. La firma de la palabra es la longitud de la máscara de los bits menos significativos (es decir, LSbyte si la longitud de la máscara es 8) y, a continuación, esa firma se busca en la tabla hash. Si hay una coincidencia, se recorre la lista enlazada de la tabla y se encuentra la mejor coincidencia inicial. Si no se encuentra el valor, el codificador realiza un recorrido lineal de toda la clave con una ventana deslizante para encontrar la entrada con el enlace más largo.
[0074] La salida es una secuencia de pares ordenados: la posición de un bit dentro del archivo de claves y la longitud de la secuencia de bits correspondiente. Algunas palabras de 64 bits se dividirán si la clave es demasiado corta, lo que invierte la función de compresión del algoritmo. Se entenderá que el algoritmo de codificación coincide entre LS -> MS. Lo habitual es representar los valores tal y como se hace aquí, con el MSbit a la izquierda y el LSbit a la derecha. Sin embargo, el índice de bits se cuenta a partir del LSbit de cada byte sucesivo.
[0075] Tabla 1
[0077]
[0079] Un ejemplo de caso de uso hace referencia a la Tabla 1. Uso de una clave de cifrado: [0000000101100100 01101111 00111011, 10001 01110101011 1100110111101111], ‘dog’ [01100100, 01101111, 01100111 ] podría codificarse con <8,16>, <27,8> porque los 8-24-ésimo bits clave cubren los dos primeros caracteres de la cadena, y el último carácter se transmite en los 27-35-ésimo bits clave.
[0080] Cuando se presentan los datos codificados, el proceso de ensamblaje del mensaje original incluye: para cada par,<i, j>vaya al bit i-ésimo del archivo de claves de cifrado y leajbits. Luego, esta información se organiza en un flujo continuo de palabras de 64 bits y, a continuación, esas palabras se escriben.
[0081] Por lo tanto, el mensaje <8,16>,<27,8> requeriría que el decodificador copiara 16 bits a partir de la 8<a>posición de la clave de cifrado y 8 bits a partir de la 27a posición de la clave, lo que daría como resultado 01100100, 01101111, 01100111... o “dog”.
[0082] La FIG. 2 ilustra un método ejemplar de la presente divulgación. El método puede incluir una etapa 202 de crear una pluralidad de claves de tabla hash aplicando una máscara de bits a una clave de cifrado. Para contextualizar, la longitud de una máscara de bits es el ancho de bits de las claves de la tabla hash descritas anteriormente y, en consecuencia, el del valor de búsqueda de los datos de entrada. La clave de cifrado incluye una clave de cifrado específica y seleccionada obtenida a partir de una pluralidad de claves de cifrado posibles o candidatas generadas mediante un generador de números aleatorios. En algunos casos, el método también puede incluir la etapa de generar la pluralidad de claves de cifrado utilizando un proceso aleatorio, y seleccionar la clave de cifrado de entre la pluralidad de claves de cifrado basándose en la capacidad de la clave de cifrado para comprimir y cifrar los datos de entrada.
[0083] El método también puede incluir una etapa 204 de aplicación de una función de hash a la clave de cifrado, así como una etapa 206 de creación de una tabla de hash usando la función de hash. Se entenderá que la tabla hash incluye la pluralidad de claves de tabla hash y valores de índice. Sin duda, el índice valora cada uno identificando una ubicación de datos en la tabla hash conectada a una de la pluralidad de claves de la tabla hash.
[0084] Una vez creada la tabla hash, el método puede incluir una etapa 208 de recepción de datos de entrada y una etapa 210 de codificación de los datos de entrada para generar datos codificados. Como se ha indicado anteriormente, la codificación incluye tanto la compresión como el cifrado de los datos de entrada utilizando la clave de cifrado y la tabla hash.
[0085] La FIG. 3 es un método para elegir la clave de cifrado seleccionada. El método puede incluir una etapa 302
donde para cada una de la pluralidad de claves de cifrado, los datos de muestra pueden estar con una de la pluralidad de claves de cifrado para crear datos codificados. El método incluye además una etapa 304 de decodificación de los datos codificados para crear datos descodificados. A continuación, el método puede incluir una etapa 306 de comparación de los datos decodificados con los datos codificados y una etapa 308 de selección de la clave de cifrado en función de la comparación.
[0086] La FIG.4 es otro método de ejemplo de la presente divulgación que incluye una etapa 402 de encriptación de los datos codificados para crear texto cifrado que es datos codificados y cifrados. Como se indicó anteriormente, este cifrado puede incluir el uso de AES, HE u otro método de cifrado deseado. El método también puede incluir una etapa 404 de transmisión de los datos codificados y cifrados a un receptor junto con la clave de cifrado. El método puede incluir una etapa 406 de desencriptación de los datos codificados y cifrados usando la clave de encriptación para obtener los datos codificados, así como una etapa 408 de regeneración de la tabla hash usando la función de hash y la pluralidad de claves de tabla hash. En algunos casos, el método comprende una etapa 410 de decodificación de los datos codificados usando la tabla hash y la clave de cifrado.
[0087] La FIG. 5 es otro método ejemplar de la presente divulgación relacionado con la creación de tablas hash. El método puede incluir una etapa 502 de creación de un valor para cada uno de los bits de la clave de cifrado para producir valores distintos con un mapeo desordenado. El método también puede incluir una etapa 504 para reducir el mapeo desordenado mediante la aplicación de una longitud de máscara de bits. Sin duda, un valor i-ésimo de la asignación desordenada se correlaciona con un bit i-ésimo de la clave de cifrado. La tabla hash comprende una lista enlazada en algunas realizaciones.
[0088] El método también puede incluir etapas relacionados con la búsqueda de la secuencia de datos más larga en los datos de entrada que coincida con una de las múltiples claves de la tabla hash. Por lo tanto, el método puede incluir una etapa 506 de recorrer la lista enlazada y localizar la secuencia de datos más larga, así como una etapa 508 de informar de la clave coincidente de entre la pluralidad de claves de la tabla hash y la longitud de la secuencia de datos más larga.
[0089] La FIG. 6 es otro método de ejemplo ilustrado como un diagrama de flujo, relacionado con la codificación de datos de entrada. El método puede incluir una etapa 602 de dividir los datos de entrada en segmentos. El método puede incluir una etapa 604 para obtener una firma de cada uno de los segmentos. Esto puede incluir el hash de cada segmento utilizando cualquier método de hash deseado.
[0090] El método puede incluir una etapa 606 de búsqueda de la firma en la tabla hash. Cuando se encuentra una coincidencia para la firma, el método puede incluir una etapa 608 recorriendo la lista enlazada hasta que se encuentre la entrada que mejor coincida. Alternativamente, cuando no se encuentra ninguna coincidencia, el método puede incluir una etapa 610 de recorrer la clave de cifrado utilizando una función de ventanas para encontrar la entrada más larga de la lista enlazada.
[0091] De nuevo, el proceso de codificación produce una secuencia de pares ordenados que comprende una posición de bits dentro de la clave cifrada y una longitud de la entrada coincidente. La secuencia de pares ordenados es una versión comprimida y cifrada de los datos de entrada. En algunos casos, la longitud de la máscara de bits utilizada en este proceso es de ocho bits, lo que permite una compresión de 8:1 de los datos de entrada. La FIG. 7 es una representación esquemática de un ejemplo de máquina en forma de sistema informático 1, dentro del cual se puede ejecutar un conjunto de instrucciones para hacer que la máquina realice cualquiera de las metodologías discutidas en el presente documento. En diversas realizaciones ejemplares, la máquina funciona como un dispositivo independiente o puede conectarse (por ejemplo, en red) a otras máquinas. En una implementación en red, la máquina puede funcionar como servidor o como máquina cliente en un entorno de red servidor-cliente, o como máquina par en un entorno de red par a par (o distribuida). El dispositivo puede ser un ordenador personal (PC), una tableta, un decodificador (STB), un asistente digital personal (PDA), un teléfono móvil, un reproductor de música portátil (por ejemplo, un dispositivo de audio con disco duro portátil, como un reproductor MP3), un dispositivo web, un router, un conmutador o un puente de red, o cualquier máquina capaz de ejecutar un conjunto de instrucciones (secuenciales o de otro tipo) que especifiquen las acciones que debe realizar dicha máquina. Además, aunque solo se ilustra una única máquina, el término “máquina” también se entenderá que incluye cualquier conjunto de máquinas que, individual o conjuntamente, ejecuten un conjunto (o varios conjuntos) de instrucciones para llevar a cabo una o varias de las metodologías discutidas en el presente documento.
[0092] El sistema informático 1 incluye un procesador o varios procesadores 5 (por ejemplo, una unidad central de procesamiento (CPU), una unidad de procesamiento gráfico (GPU) o ambas), y una memoria principal 10 y una memoria estática 15, que se comunican entre sí a través de un bus 20. El sistema informático 1 puede incluir además una pantalla de vídeo 35 (por ejemplo, una pantalla de cristal líquido (LCD)). El sistema informático 1 también puede incluir uno o varios dispositivos de entrada alfanuméricos 30 (por ejemplo, un teclado), un dispositivo de control del cursor (por ejemplo, un ratón), una unidad de reconocimiento de voz o verificación
biométrica (no mostrada), una unidad de disco 37 (también denominada unidad de disco), un dispositivo de generación de señales 40 (por ejemplo, un altavoz) y un dispositivo de interfaz de red 45. El sistema informático 1 puede incluir además un módulo de cifrado de datos (no mostrado) para cifrar datos.
[0094] La unidad de accionamiento 37 incluye un ordenador o un medio legible por máquina 50 en donde se almacenan uno o más conjuntos de instrucciones y estructuras de datos (por ejemplo, instrucciones 55) que incorporan o utilizan cualquiera de las metodologías o funciones descritas en el presente documento. Las instrucciones 55 también pueden residir, total o al menos parcialmente, en la memoria principal 10 y/o en el procesador o procesadores 5 durante su ejecución por el sistema informático 1. La memoria principal 10 y el(los) procesador(es) 5 también pueden constituir medios legibles por máquina.
[0096] Las instrucciones 55 pueden transmitirse o recibirse además a través de una red a través del dispositivo de interfaz de red 45 utilizando cualquiera de una serie de protocolos de transferencia bien conocidos (por ejemplo, el Protocolo de transferencia de hipertexto (HTTP)). Aunque en un ejemplo de realización el medio legible por máquina 50 se muestra como un único medio, el término “medio legible por ordenador” debe entenderse como un medio único o múltiples medios (por ejemplo, una base de datos centralizada o distribuida y/o cachés y servidores asociados) que almacenan uno o varios conjuntos de instrucciones. El término “soporte legible por ordenador” también se entenderá que incluye cualquier soporte capaz de almacenar, codificar o transportar un conjunto de instrucciones para su ejecución por la máquina y que hace que la máquina realice una o varias de las metodologías de la presente solicitud, o que es capaz de almacenar, codificar o transportar estructuras de datos utilizadas por dicho conjunto de instrucciones o asociadas a él. El término “soporte legible por ordenador” se entenderá, por consiguiente, como incluyendo, entre otros, memorias de estado sólido, soportes ópticos y magnéticos, y señales de onda portadora. Dichos soportes también pueden incluir, sin limitación, discos duros, disquetes, tarjetas de memoria flash, discos de vídeo digital, memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM) y similares. Los ejemplos de realización descritos en el presente documento pueden implementarse en un entorno operativo que comprende software instalado en un ordenador, en hardware o en una combinación de software y hardware.
[0098] Los componentes proporcionados en el sistema informático 1 son los que se encuentran habitualmente en los sistemas informáticos que pueden ser adecuados para su uso con las realizaciones de la presente divulgación y pretenden representar una amplia categoría de dichos componentes informáticos que son bien conocidos en la técnica. Por lo tanto, el sistema informático 1 puede ser un ordenador personal (PC), un ordenador portátil, un teléfono, un ordenador móvil, una estación de trabajo, una tableta, un phablet, un teléfono móvil, un servidor, un minordenador, un ordenador central, un dispositivo wearable o cualquier otro sistema informático. El ordenador también puede incluir diferentes configuraciones de bus, plataformas de red, plataformas de múltiples procesadores y similares. Se pueden usar varios sistemas operativos, incluidos UNIX, LINUX, WINDOWS, MAC OS, PALM OS, QNX ANDROID, IOS, CHROME, TIZEN y otros sistemas operativos adecuados.
[0100] Algunas de las funciones descritas anteriormente pueden estar compuestas por instrucciones que se almacenan en medios de almacenamiento (por ejemplo, un medio legible por ordenador). Las instrucciones pueden ser recuperadas y ejecutadas por el procesador. Algunos ejemplos de medios de almacenamiento son dispositivos de memoria, cintas, discos y similares. Las instrucciones son operativas cuando son ejecutadas por el procesador para indicarle que funcione de acuerdo con la tecnología. Los expertos en la materia están familiarizados con las instrucciones, los procesadores y los medios de almacenamiento.
[0102] En algunas realizaciones, el sistema informático 1 puede implementarse como un entorno informático basado en la nube, tal como una máquina virtual que opera dentro de una nube informática. En otras realizaciones, el propio sistema informático 1 puede incluir un entorno informático basado en la nube, donde las funcionalidades del sistema informático 1 se ejecutan de forma distribuida. Por lo tanto, el sistema informático 1, cuando se configura como una nube informática, puede incluir una pluralidad de dispositivos informáticos de diversas formas, como se describirá con mayor detalle a continuación.
[0104] En general, un entorno informático basado en la nube es un recurso que suele combinar la potencia computacional de un gran conjunto de procesadores (como los de los servidores web) y/o la capacidad de almacenamiento de un gran conjunto de memorias informáticas o dispositivos de almacenamiento. Los sistemas que proporcionan recursos basados en la nube pueden ser utilizados exclusivamente por sus propietarios o pueden ser accesibles a usuarios externos que implementan aplicaciones dentro de la infraestructura informática para obtener el beneficio de grandes recursos computacionales o de almacenamiento.
[0106] La nube está formada, por ejemplo, por una red de servidores web que comprenden una pluralidad de dispositivos informáticos, tales como el dispositivo informático 1, y cada servidor (o al menos una pluralidad de los mismos) proporciona recursos de procesador y/o almacenamiento. Estos servidores administran las cargas de trabajo proporcionadas por varios usuarios (por ejemplo, clientes de recursos en la nube u otros usuarios). Por lo general, cada usuario impone exigencias de carga de trabajo a la nube que varían en tiempo real, a veces de forma espectacular. La naturaleza y el alcance de estas variaciones suelen depender del tipo de negocio asociado con el usuario.
[0107] Cabe destacar que cualquier plataforma de hardware adecuada para realizar el procesamiento aquí descrito es apta para su uso con esta tecnología. Los términos “medio de almacenamiento legible por ordenador” y “medios de almacenamiento legibles por ordenador” tal y como se utilizan en el presente documento se refieren a cualquier medio o medios que participen en proporcionar instrucciones a una CPU para su ejecución. Dichos medios pueden adoptar muchas formas, incluyendo, pero sin limitarse a, medios no volátiles, medios volátiles y medios de transmisión. Los medios no volátiles incluyen, por ejemplo, discos ópticos o magnéticos, tales como un disco fijo. Los medios volátiles incluyen la memoria dinámica, como la RAM del sistema. Los medios de transmisión incluyen cables coaxiales, cables de cobre y fibra óptica, entre otros, incluidos los cables que comprenden una realización de un bus. Los medios de transmisión también pueden adoptar la forma de ondas acústicas o de luz, como las generadas durante las comunicaciones de datos por radiofrecuencia (RF) e infrarrojos (IR). Las formas comunes de soportes legibles por ordenador incluyen, por ejemplo, un disquete, un disco flexible, un disco duro, una cinta magnética, cualquier otro medio magnético, un disco CD-ROM, un disco de vídeo digital (DVD), cualquier otro medio óptico, cualquier otro medio físico con patrones de marcas o agujeros, una RAM, una PROM, una EPROM, una EEPROM, una FLASHEPROM, cualquier otro chip de memoria o adaptador de intercambio de datos, una onda portadora o cualquier otro medio que pueda leer un ordenador.
[0109] Diversas formas de medios legibles por ordenador pueden estar implicadas en el transporte de una o más secuencias de una o más instrucciones a una CPU para su ejecución. Un bus lleva los datos a la RAM del sistema, desde donde la CPU recupera y ejecuta las instrucciones. Las instrucciones recibidas por la RAM del sistema pueden almacenarse opcionalmente en un disco fijo antes o después de su ejecución por parte de una CPU.
[0110] El código del programa informático para llevar a cabo operaciones relacionadas con aspectos de la presente tecnología puede estar escrito en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado a objetos como Java, Smalltalk, C++ o similares, y lenguajes de programación procedimentales convencionales, como el lenguaje de programación “C” o lenguajes de programación similares. El código de programa puede ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto o completamente en el ordenador o servidor remoto. En el último escenario, el ordenador remoto puede estar conectado al ordenador del usuario a través de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través de Internet utilizando un proveedor de servicios de Internet).
[0112] La descripción detallada anterior incluye referencias a los dibujos adjuntos, que forman parte de la descripción detallada. Los dibujos muestran ilustraciones de acuerdo con realizaciones ejemplares. Estas realizaciones ilustrativas, que también se denominan en el presente documento “ejemplos”, se describen con suficiente detalle para permitir a los expertos en la materia practicar el presente tema. Las realizaciones se pueden combinar, se pueden utilizar otras realizaciones o se pueden realizar cambios estructurales, lógicos y eléctricos sin apartarse del alcance de lo que se reivindica. La siguiente descripción detallada, por lo tanto, no debe tomarse en un sentido limitativo, y el alcance se define mediante las reivindicaciones adjuntas y sus equivalentes.
[0114] En este documento, los términos “a” o “una” se utilizan, como es habitual en los documentos de patente, para incluir uno o más de uno. En este documento, el término “o” se utiliza para referirse a un “o” no exclusivo, de modo que “A o B” incluye “A pero no B”, “B pero no A” y “A y B”, salvo que se indique lo contrario.
[0116] Las correspondientes estructuras, materiales, acciones y equivalentes de todos los medios o etapas más elementos de función en las reivindicaciones siguientes, se pretende que incluyan cualquier estructura, material o acción para realizar la función en combinación con otros elementos reivindicados, como se reivindica específicamente. La descripción de la presente tecnología se ha presentado con fines ilustrativos y descriptivos, pero no pretende ser exhaustiva ni limitarse a la invención en la forma divulgada. Muchas modificaciones y variaciones serán evidentes para los expertos ordinarios en la técnica sin apartarse del alcance de la invención. Se han seleccionado y descrito ejemplos de realización para explicar mejor los principios de la presente tecnología y su aplicación práctica, y para permitir que otros expertos en la materia comprendan la invención en diversas realizaciones con diversas modificaciones, según se adapten al uso particular contemplado.
[0117] Si bien se han descrito varias realizaciones anteriormente, debe entenderse que se han presentado solo a modo de ejemplo y no de limitación. Las descripciones no pretenden limitar el alcance de la tecnología a las formas particulares expuestas en el presente documento. Por lo tanto, la amplitud y el alcance de una realización preferida no deben limitarse por ninguna de las realizaciones ejemplares descritas anteriormente. Debe entenderse que la descripción anterior es ilustrativa y no restrictiva. Por el contrario, las presentes descripciones pretenden abarcar aquellas alternativas, modificaciones y equivalentes que puedan incluirse dentro del alcance de la tecnología tal y como se define en las reivindicaciones adjuntas y que, de otro modo, pueda apreciar un experto en la materia. Por lo tanto, el alcance de la tecnología no debe determinarse con referencia a la descripción anterior, sino con referencia a las reivindicaciones adjuntas junto con su alcance completo de equivalentes.
Claims (13)
1. REIVINDICACIONES
1. Un método, que comprende:
crear (202) una pluralidad de claves de tabla hash aplicando una máscara de bits a una clave de cifrado; aplicar (204) una función hash a la clave de cifrado;
crear (206) una tabla hash utilizando la función hash, la tabla hash comprende la pluralidad de claves de tabla hash y valores de índice, los valores de índice identifican cada uno una ubicación de datos en la tabla hash conectada a una de la pluralidad de claves de tabla hash, en la que la tabla hash se crea mediante: crear un valor para cada uno de los bits de la clave de cifrado para producir valores distintos con un mapeo desordenado;
y reducir el mapeo desordenado mediante la aplicación de una longitud de máscara de bits, donde un siel valor del mapeo no ordenado se correlaciona con un b y un bit de la clave de cifrado, en donde la tabla hash comprende una lista enlazada;
recibir (208) datos de entrada; y
codificar (210) los datos de entrada para generar datos codificados, la codificación comprende tanto la compresión como el cifrado de los datos de entrada utilizando la clave de cifrado y la tabla hash, caracterizada por que codificar los datos de entrada para generar datos codificados comprende:
buscar inicialmente la secuencia de datos más larga en los datos de entrada que coincida con una de las múltiples claves de la tabla hash;
recuperar uno de los valores de índice correspondientes que coincida con la secuencia de datos más larga de entre la pluralidad de claves de la tabla hash; y
recuperar valores de índice adicionales para codificar el resto de los datos de entrada.
2. El método según la reivindicación 1 que comprende además: generar una pluralidad de claves de cifrado utilizando un proceso aleatorio; y seleccionar la clave de cifrado de entre la pluralidad de claves de cifrado basándose en la capacidad de la clave de cifrado para comprimir y cifrar datos de entrada; y, opcional o preferiblemente,
en donde la clave de cifrado se selecciona mediante: para cada una de las múltiples claves de cifrado, codificar datos de muestra con una de las múltiples claves de cifrado para crear datos codificados; decodificar los datos codificados para crear datos decodificados; comparar los datos decodificados con los datos codificados; y seleccionar la clave de cifrado basándose en la comparación.
3. El método según la reivindicación 1, que comprende además cifrar los datos codificados para crear un texto cifrado que es datos cifrados y codificados.
4. El método según la reivindicación 1, que comprende además transmitir los datos cifrados y codificados a un receptor junto con la clave de cifrado; y, opcional o preferiblemente,
que comprende, además: descifrar los datos cifrados y codificados utilizando la clave de cifrado para obtener los datos codificados; regenerar la tabla hash utilizando la función hash y la pluralidad de claves de la tabla hash; y decodificar los datos codificados utilizando la tabla hash y la clave de cifrado.
5. El método según la reivindicación 1,
en donde la búsqueda de la secuencia de datos más larga en los datos de entrada que coincide con una de la pluralidad de claves de la tabla hash comprende:
recorrer la lista enlazada y localizar la secuencia de datos más larga; e
informar de la coincidencia de una de las múltiples claves de la tabla hash y la longitud de la secuencia de datos más larga.
6. El método según la reivindicación 1, en donde la codificación comprende:
dividir los datos de entrada en segmentos;
obtener una firma de cada uno de los segmentos;
buscar la firma en la tabla hash;
cuando se encuentra una coincidencia para la firma, recorrer la lista enlazada hasta encontrar la entrada que mejor coincida; y
en donde, cuando no se encuentra ninguna coincidencia, se recorre la clave de cifrado utilizando una función de ventanas para encontrar la entrada más larga en la lista enlazada.
7. El método según la reivindicación 6, en donde la codificación produce una secuencia de pares ordenados que comprende una posición de bit dentro de la clave cifrada y una longitud de la entrada coincidente.
8. El método según la reivindicación 7,
en donde la secuencia de pares ordenados es una versión comprimida y cifrada de los datos de entrada; o en donde la longitud de la máscara de bits es de ocho bits, lo que permite una compresión de 8:1 de los datos de entrada.
9. Un sistema (1), que comprende:
un procesador (5); y
una memoria (15) para almacenar instrucciones, ejecutándose el procesador las instrucciones para: crear una pluralidad de claves de tablas hash aplicando una máscara de bits a una clave de cifrado (125); aplicar una función de hash (127) a la clave de cifrado;
crear una tabla hash (135) utilizando la función hash, la tabla hash comprende la pluralidad de claves de tabla hash y valores de índice, los valores de índice identifican cada uno una ubicación de datos en la tabla hash conectada a una de la pluralidad de claves de tabla hash, en la que la tabla hash se crea mediante: crear un valor para cada uno de los bits de la clave de cifrado para producir valores distintos con un mapeo desordenado; y
reducir la asignación no ordenada aplicando una longitud de máscara de bits, donde un valor i-ésimo de la asignación no ordenada se correlaciona con un bit i-ésimo de la clave de cifrado, en la que la tabla hash comprende una lista enlazada;
recibir datos de entrada; y
codificar los datos de entrada para generar datos codificados, la codificación comprende tanto la compresión como el cifrado de los datos de entrada utilizando la clave de cifrado y la tabla hash, caracterizada por que codificar los datos de entrada para generar datos codificados comprende:
buscar inicialmente la secuencia de datos más larga en los datos de entrada que coincida con una de las múltiples claves de la tabla hash;
recuperar uno de los valores de índice correspondientes que coincida con la secuencia de datos más larga de entre la pluralidad de claves de la tabla hash; y
recuperar valores de índice adicionales para codificar el resto de los datos de entrada.
10. El sistema según la reivindicación 9, en donde el procesador está configurado para:
generar una pluralidad de claves de cifrado usando un proceso aleatorio; y
seleccionar la clave de cifrado de la pluralidad de claves de cifrado en función de la capacidad de la clave de cifrado para comprimir y cifrar los datos de entrada.
11. El sistema según la reivindicación 9, en donde el procesador selecciona la clave de cifrado para: para cada una de la pluralidad de claves de cifrado, codificar datos de muestra con una de la pluralidad de
claves de cifrado para crear datos codificados;
decodificar los datos codificados para crear datos decodificados;
comparar los datos descodificados con los datos codificados; y
seleccionar la clave de cifrado basándose en la comparación.
12. El sistema según la reivindicación 9, en donde el procesador está configurado para: cifrar los datos codificados para crear texto cifrado;
transmitir el texto cifrado a un receptor junto con la clave de cifrado;
descifrar el texto cifrado utilizando la clave de cifrado para recuperar los datos codificados; regenerar la tabla hash usando la función hash y la pluralidad de claves de la tabla hash; y descomprima los datos codificados mediante la tabla hash.
13. El sistema según la reivindicación 9, en donde la búsqueda de la secuencia de datos más larga en los datos de entrada que coincide con una de la pluralidad de claves de la tabla hash comprende:
recorrer la lista enlazada y localizar la secuencia de datos más larga; e informar de la clave coincidente de entre la pluralidad de claves de la tabla hash y la longitud de la secuencia de datos más larga; y, opcional o preferiblemente,
en donde el procesador está configurado para: dividir los datos de entrada en segmentos; obtener una firma de cada uno de los segmentos; buscar la firma en la tabla hash; cuando se encuentre una coincidencia para la firma, recorrer la lista enlazada hasta encontrar la entrada que mejor coincida; y cuando no se encuentre ninguna coincidencia, recorrer la clave de cifrado utilizando una función de ventanas para encontrar la entrada más larga de la lista enlazada.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/899,457 US11533173B2 (en) | 2020-06-11 | 2020-06-11 | Systems and methods for compression and encryption of data |
| PCT/US2021/035272 WO2021252227A1 (en) | 2020-06-11 | 2021-06-01 | Systems and methods for compression and encryption of data |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3060262T3 true ES3060262T3 (en) | 2026-03-25 |
Family
ID=78826153
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES21821682T Active ES3060262T3 (en) | 2020-06-11 | 2021-06-01 | Systems and methods for compression and encryption of data |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US11533173B2 (es) |
| EP (1) | EP4165780B1 (es) |
| JP (1) | JP7741826B2 (es) |
| KR (1) | KR20230024342A (es) |
| AU (1) | AU2021287730B2 (es) |
| CA (1) | CA3181813A1 (es) |
| ES (1) | ES3060262T3 (es) |
| WO (1) | WO2021252227A1 (es) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11849033B2 (en) * | 2020-09-24 | 2023-12-19 | Intertrust Technologies Corporation | Key generation systems and methods |
| CN114448611B (zh) * | 2020-11-02 | 2025-07-29 | 中兴通讯股份有限公司 | 密钥生成方法、装置、电子设备及存储介质 |
| CN114301583B (zh) * | 2021-12-22 | 2023-10-24 | 阿里巴巴(中国)有限公司 | 密文压缩方法、装置、设备和存储介质 |
| CN115001662A (zh) * | 2022-06-02 | 2022-09-02 | 中国银行股份有限公司 | 一种数据加密方法、装置、计算机设备和存储介质 |
| US12169484B2 (en) * | 2022-10-07 | 2024-12-17 | Oracle International Corporation | Techniques for adaptive independent compression of key and non-key portions of database rows in index organized tables (IOTs) |
| US12265532B2 (en) | 2022-10-14 | 2025-04-01 | Oracle International Corporation | Accelerating query execution by optimizing data transfer between storage nodes and database nodes |
| US12261952B2 (en) | 2022-11-04 | 2025-03-25 | Crown Sterling Limited, LLC | Multiple vector one-time key pad |
| US12250310B2 (en) | 2023-01-09 | 2025-03-11 | Crown Sterling Limited, LLC | Use of irrational numbers in elliptic curve cryptography |
| US20240340176A1 (en) * | 2023-04-04 | 2024-10-10 | Crown Sterling Limited, LLC | Compression Technique |
| KR20250031332A (ko) | 2023-08-28 | 2025-03-07 | 명지대학교 산학협력단 | 압축 부채널 공격 방지용 압축 시스템 및 방법 |
| CN117354059B (zh) * | 2023-12-04 | 2024-03-29 | 广州汇通国信科技有限公司 | 一种基于云边端协同的数据共享方法 |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5778102A (en) * | 1995-05-17 | 1998-07-07 | The Regents Of The University Of California, Office Of Technology Transfer | Compression embedding |
| US6154542A (en) | 1997-12-17 | 2000-11-28 | Apple Computer, Inc. | Method and apparatus for simultaneously encrypting and compressing data |
| US20010042204A1 (en) * | 2000-05-11 | 2001-11-15 | David Blaker | Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database |
| US7254232B2 (en) * | 2001-02-14 | 2007-08-07 | Copytele, Inc. | Method and system for selecting encryption keys from a plurality of encryption keys |
| JP2005020346A (ja) * | 2003-06-26 | 2005-01-20 | Konica Minolta Business Technologies Inc | データ秘密化装置、データ復元装置、画像データ保存装置及び画像形成装置 |
| US9143323B2 (en) * | 2005-04-04 | 2015-09-22 | Blackberry Limited | Securing a link between two devices |
| US9497172B2 (en) * | 2005-05-23 | 2016-11-15 | Litera Corp. | Method of encrypting and transferring data between a sender and a receiver using a network |
| US8769279B2 (en) | 2006-10-17 | 2014-07-01 | Verifone, Inc. | System and method for variable length encryption |
| US8082359B2 (en) | 2009-12-23 | 2011-12-20 | Citrix Systems, Inc. | Systems and methods for determining a good RSS key |
| US8645713B2 (en) * | 2011-03-22 | 2014-02-04 | Fujitsu Limited | Encrypting method, recording medium of encrypting program, decrypting method, and recording medium of decrypting program |
| EP2839666B1 (en) * | 2012-04-20 | 2019-12-11 | The Board of Regents of The University of Texas System | Systems and methods for simultaneous compression and encryption |
| KR101956031B1 (ko) * | 2012-10-15 | 2019-03-11 | 삼성전자 주식회사 | 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템 |
| JP6028567B2 (ja) * | 2012-12-28 | 2016-11-16 | 富士通株式会社 | データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法 |
| US10339112B1 (en) * | 2013-04-25 | 2019-07-02 | Veritas Technologies Llc | Restoring data in deduplicated storage |
| US10469383B2 (en) * | 2016-11-10 | 2019-11-05 | International Business Machines Corporation | Storing data in association with a key within a hash table and retrieving the data from the hash table using the key |
| KR101987025B1 (ko) * | 2017-05-31 | 2019-06-10 | 삼성에스디에스 주식회사 | 암호화 처리 방법 및 그 장치 |
| US20200151356A1 (en) * | 2017-08-11 | 2020-05-14 | Duality Technologies, Inc. | System and method for fast and efficient searching of encrypted ciphertexts |
| EP3614622A1 (en) | 2018-08-24 | 2020-02-26 | Nagravision SA | Sending and receiving messages |
| US10491240B1 (en) * | 2019-01-17 | 2019-11-26 | Cyborg Inc. | Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation |
| US10904001B2 (en) * | 2019-05-24 | 2021-01-26 | Tokenex, Inc. | Data format-preserving encryption, tokenization, and access control for vaultless systems and methods |
-
2020
- 2020-06-11 US US16/899,457 patent/US11533173B2/en active Active
-
2021
- 2021-06-01 KR KR1020237000600A patent/KR20230024342A/ko active Pending
- 2021-06-01 WO PCT/US2021/035272 patent/WO2021252227A1/en not_active Ceased
- 2021-06-01 AU AU2021287730A patent/AU2021287730B2/en active Active
- 2021-06-01 JP JP2022576506A patent/JP7741826B2/ja active Active
- 2021-06-01 CA CA3181813A patent/CA3181813A1/en active Pending
- 2021-06-01 ES ES21821682T patent/ES3060262T3/es active Active
- 2021-06-01 EP EP21821682.8A patent/EP4165780B1/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| KR20230024342A (ko) | 2023-02-20 |
| CA3181813A1 (en) | 2021-12-16 |
| US11533173B2 (en) | 2022-12-20 |
| JP7741826B2 (ja) | 2025-09-18 |
| EP4165780A4 (en) | 2024-07-17 |
| WO2021252227A1 (en) | 2021-12-16 |
| EP4165780A1 (en) | 2023-04-19 |
| JP2023529948A (ja) | 2023-07-12 |
| EP4165780B1 (en) | 2025-10-29 |
| EP4165780C0 (en) | 2025-10-29 |
| US20210391990A1 (en) | 2021-12-16 |
| AU2021287730A1 (en) | 2023-02-02 |
| AU2021287730B2 (en) | 2026-02-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES3060262T3 (en) | Systems and methods for compression and encryption of data | |
| JP4893750B2 (ja) | データ圧縮装置およびデータ復元装置 | |
| US11586588B2 (en) | System and methods for bandwidth-efficient cryptographic data transfer | |
| CN105320613B (zh) | 用于动态数据存储的系统及方法 | |
| JP5719386B2 (ja) | N個のチャネルを用いてデータを安全に分散させ格納する方法および装置 | |
| JP7773636B2 (ja) | 符号化/復号システム及び方法 | |
| EP4052136A1 (en) | System and methods for bandwidth-efficient cryptographic data transfer |