Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TECHNIQUE TO GENERATE SYMMETRIC ENCRYPTION ALGORITHMS
Document Type and Number:
WIPO Patent Application WO/2017/090014
Kind Code:
A1
Abstract:
An invention aimed at keeping in a secret and indecipherable form any type of information or data that can be stored, transmitted, displayed or expressed by any means or format, regardless of what its content or purpose may be and to keep the original information inaccessible to unauthorized persons, by means of a cryptographic technique, procedure or process of encryption widely applicable, either physically (hardware), logically (software) or mixed (Firmware) and other forms that may be created in the future. This protected invention defines a technique, process or procedure for generating multiple encryption or ciphering algorithms with industrial application in both private and public sectors in the areas of national defense, telecommunications, computer science, computer programs, banking and electronic payment transactions, encryption or ciphering of still images, moving images and sounds, in their storage or transmission, including but not limited to the areas detailed, this list being illustrative and not limitative.

Inventors:
MURGUIA COSENTINO AGUSTIN (UY)
MURGUIA COSENTINO SANTIAGO (UY)
MURGUIA HUGHES JULIAN (UY)
Application Number:
PCT/IB2016/057159
Publication Date:
June 01, 2017
Filing Date:
November 28, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
MURGUIA COSENTINO AGUSTIN (UY)
MURGUIA COSENTINO SANTIAGO (UY)
MURGUIA HUGHES JULIAN (UY)
International Classes:
H04L9/14; H04L9/06; H04L9/16; H04L9/18; H04L9/22; H04L9/24
Domestic Patent References:
WO2004034632A12004-04-22
WO2012152956A12012-11-15
WO2013110826A12013-08-01
Foreign References:
US20110069834A12011-03-24
US20130308774A12013-11-21
US20030118185A12003-06-26
US5003596A1991-03-26
US1310719A1919-07-22
US1416765A1922-05-23
US1584749A1926-05-18
US8688996B22014-04-01
US8948377B22015-02-03
US4979832A1990-12-25
Attorney, Agent or Firm:
MURGUIA COSENTINO, Agustin (UY)
Download PDF:
Claims:
Reivindicaciones:

1. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación de amplia aplicación industrial tanto en sectores privados como públicos en las áreas de defensa nacional, telecomunicaciones, informática, programas de ordenador, transacciones bancarias y de pagos electrónicos, bases de datos, criptografía de datos y mensajes, criptografía de imágenes fijas, en movimiento y sonidos, en su almacenamiento o transmisión; incluyendo pero no limitada a las áreas detalladas, caracterizada por utilizar múltiples procesos, funciones o algoritmos de cifrado diferentes e independientes para cifrar diferentes porciones del texto plano o descifrar diferentes porciones del criptograma.

2. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicación 1, caracterizada por no depender en forma alguna de las funciones o algoritmos disponibles a utilizar, ni de su complejidad o funcionalidad ni del tamaño de la porción a procesar del texto plano, el criptograma, la clave o el método.

3. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicaciones 1 y 2, caracterizada por utilizar un parámetro externo para decidir cuál de las funciones o algoritmos disponibles utilizará en cada instancia para procesar cada porción del texto plano, el criptograma y la clave.

4. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicaciones 1 a 3, caracterizada por utilizar otro parámetro adicional para modificar el orden de las funciones o algoritmos disponibles y dicho orden modificado puede permitir que algunos algoritmos no sean utilizados o sean utilizados más de una vez.

5. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicaciones 1 a 4, caracterizada por la posibilidad de utilizar tamaños variables en los bloques de proceso del texto plano, la clave, el método y el criptograma e incluso procesar bloques sucesivos de tamaños diferentes.

6. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicaciones 1 a 5, caracterizada por poderse implementar como solución de software a utilizar por dispositivos electrónicos, incluyendo pero no limitado a ordenadores, portátiles, tabletas, teléfonos, televisores, controladores lógicos programables, consolas, reproductores de audio y/o video y cualquier otro equipamiento electrónico con capacidades de proceso.

7. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicaciones 1 a 5, caracterizada por poderse implementar como solución mecánica (hardware) que se puede integrar a cualquier maquinaria o dispositivo.

8. - Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptación conforme a la Reivindicaciones 1 a 5, caracterizada por poderse implementar como una solución mixta (firmware) en plataformas que integren software y hardware.

9.- Se reivindica una técnica de generación de algoritmos independientes de cifrado o encriptacion y descifrado o desencriptacion conforme a la Reivindicaciones 1 a 5, caracterizada por poderse implementar los algoritmos como una solución de uso manual.

REIVINDICACIONES MODIFICADAS

recibidas por la oficina Internacional el 28 de abril de 2017 (28.04.2017).

[ Reivindicación 1] [Modificada] Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des- encriptación de amplia aplicación industrial tanto en sectores privados como públicos en las áreas de defensa nacional, telecomunicaciones, informática, programas de ordenador, transacciones bancarias y de pagos electrónicos, bases de datos, criptografía de datos y mensajes, criptografía de imágenes fijas, en movimiento y sonidos, en su almacenamiento o transmisión; incluyendo pero no limitada a las áreas detalladas, caracterizada por: A.) Utilizar múltiples fórmulas matemáticas y funciones matemáticas para encriptar o cifrar diferentes porciones del texto plano y descifrar o des-encriptar diferentes porciones del texto cifrado o criptograma. B.) No utilizar ninguna función resumen o hash para convertir ningún volumen de datos grande y posiblemente de largo variable en uno pequeño. C.) No utilizar ni llamar a ningún algoritmo simétrico existente para nada y D.) Repetir el proceso sobre el texto cifrado o criptograma utilizando exactamente los mismos parámetros no produce el texto plano original.

[ Reivindicación 2] [Modificada] Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des- encriptación conforme a la Reivindicación 1, caracterizada por: A.) No depender en forma alguna de ninguna de las fórmulas matemáticas o funciones matemáticas disponibles a utilizar, ni de su complejidad o funcionalidad ni del tamaño de la porción a procesar del texto plano, el criptograma, la clave o cualquier otro parámetro. B.) Utilizar un parámetro externo para definir si se realizará un cifrado (encriptación) o descifrado (des-encriptación) y C.) Descifrado (des-encriptación) podrá ser utilizado para cifrar (encriptar) el texto plano y producir el texto cifrado o criptograma, en ese caso se deberá utilizar el cifrado (encriptación) sobre el texto cifrado o criptograma para recuperar el texto plano original.

[ Reivindicación 3] [Modificada] Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des- encriptación conforme a cualquiera de las reivindicaciones anteriores 2, caracterizada por utilizar otro parámetro externo para decidir cuál de las fórmulas matemáticas o funciones matemáticas disponibles se utilizará en cada instancia para procesar cada porción del texto plano, el texto cifrado o criptograma y la clave.

[Modificada] Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des- encriptación conforme a cualquiera de las reivindicaciones anteriores, caracterizada por utilizar otro parámetro adicional para modificar el orden de las fórmulas matemáticas o funciones matemáticas disponibles y dicho orden modificado puede permitir que algunas fórmulas matemáticas o funciones matemáticas no sean utilizadas o sean utilizadas más de una vez.

Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des-encriptación conforme a cualquiera de las reivindicaciones anteriores, caracterizada por la posibilidad de utilizar tamaños variables en los bloques de proceso del texto plano, el texto cifrado o criptograma la clave o cualquier otro parámetro externo, e incluso procesar bloques sucesivos de tamaños diferentes.

Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des-encriptación conforme a cualquiera de las reivindicaciones anteriores, caracterizada por poderse implementar como solución de software a utilizar por dispositivos electrónicos, incluyendo pero no limitado a ordenadores, portátiles, tabletas, teléfonos, televisores, controladores lógicos pro- gramables, consolas, reproductores de audio y/o video y cualquier otro equipamiento electrónico con capacidades de proceso.

Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des-encriptación conforme a cualquiera de las reivindicaciones anteriores, caracterizada por poderse implementar como solución mecánica (hardware) que se puede integrar a cualquier maquinaria o dispositivo.

Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des-encriptación conforme a cualquiera de las reivindicaciones anteriores, caracterizada por poderse implementar como una solución mixta (firmware) en plataformas que integren software y hardware.

Se reivindica una técnica o método de generación de algoritmos independientes de cifrado o encriptación y descifrado o des-encriptación conforme a la cualquiera de las reivindicaciones anteriores, caracterizada por poderse implementar los algoritmos como una solución de

uso manual.

Description:
Técnica de generación de algoritmos de encriptación simétrica

Descripción:

Definición técnica:

La invención que se protege en esta patente consiste en un procedimiento, proceso o técnica para la generación de múltiples algoritmos criptográficos simétricos en cada uno de los cuales el texto plano se cifra y el criptograma se descifra mediante el uso de múltiples rutinas o algoritmos de encriptación o cifrado independientes, los que se utilizarán sobre porciones diferentes de los datos a procesar.

La invención que protege esta patente es un procedimiento o técnica criptográfica que es independiente de la cantidad y complejidad de los diferentes algoritmos a utilizar. Al momento de implementar la técnica en una aplicación práctica se definirán los algoritmos específicos que el proceso utilizará y cómo serán estos utilizados.

La invención que protege esta patente es un procedimiento, proceso o técnica criptográfica que no posee limitaciones en cuanto a los tamaños del texto plano, el criptograma, la clave o las porciones de los mismos que sean utilizados durante el proceso.

La invención que protege esta patente es un procedimiento, proceso o técnica criptográfica que permite utilizar parámetros adicionales para definir cuál rutina de cifrado o algoritmo se utilizará en cada instancia del proceso para procesar cada porción del texto plano o criptograma y de la clave.

En resumen, en la actualidad se demanda y se requiere cada vez más medidas para proteger la privacidad de los datos e información para mantenerla fuera del alcance de personas no autorizadas o garantizar que la misma sea ininteligible en caso de ser accedida.

Estado de la Técnica:

Desde sus inicios, toda la criptografía, sea simétrica o asimétrica, se basa en el uso de un único algoritmo y mide su seguridad según la complejidad del algoritmo utilizado y del largo y cuán aleatoria sea la clave utilizada.

Históricamente, la criptografía ha utilizado y aún hoy en día utiliza la misma lógica de proceso.

Toda la criptografía existente en la actualidad se basa en la utilización de un único algoritmo que recibe como parámetros el texto plano y la clave para el proceso de cifrado y el criptograma y la clave para el proceso de descifrado.

Ha sido así desde el cifrado de César, pasando por Vernam o Vignere hasta los estándares actuales como el AES, lo único que ha variado es la complejidad de los algoritmos o la repetición de los mismos (Triple DES, TwoFish, ThreeFish, etc.). Ese aumento de complejidad ha significado un enlentecimiento de los procesos que ha sido parcialmente compensado con el incremento en la capacidad y velocidad de cálculo de los procesadores modernos. Lo que nunca ha cambiado hasta ahora es la lógica del proceso. Dado un mismo texto plano, una misma clave y el mismo algoritmo, el resultado será siempre el mismo criptograma.

La relación de los algoritmos y protocolos criptográficos más usuales considerados como estándares y que, por tanto, pueden considerarse como acreditados, a modo ilustrativo y no limitativo, es la siguiente:

a) TDEA (Triple Data Encryption Algorithm, Triple Algoritmo de Cifrado de Datos): SP 800-20, SP800-38B y SP 800-67 del NIST ([NIST, SP800-20], [NIST, SP800-38B], [NIST, SP800-67]). b) AES (Advanced Data Encryption, Cifrado de Datos Avanzado): FIPS 197 y SP800-38B del NIST ([NIST, FIPS197], [N IST, SP800-38B]) y la Suite B de la NSA ([NSA, SuiteB]).

c) DH o DHKA (Diffie-Hellman Key Agreement, Acuerdo de Clave de Diffie- Hellman): ANSI X9.42 ([ANSI, X9.42]) y PKCS #3 de los laboratorios RSA ([RSALab, 1993]).

d) MQV (Menezes-Qu-Vanstone Key Agreement, Acuerdo de Clave de Menezes- Qu- Vanstone): ANSI X9.42 ([ANSI, X9.42]), ANSI X9.63 ([ANSI , X9.63]) e IEEE 1 363 [IEEE, 1363].

e) ECDH (Elliptic Curve Diffie-Hellman, Acuerdo de Clave de Diffie- Hellman con Curvas

Elípticas): ANSI X9.63 ([ANSI, X9.63]), IEEE1 363 ([IEEE, 1 363]), IEEE1 363a ([IEEE, 1363a]) y la Suite B de la NSA ([NSA, SuiteB]).

f) ECMQV (Elliptic Curve Menezes-Qu-Vanstone, Acuerdo de Clave de Menezes-Qu-Vanstone con Curvas Elípticas): Suite B de la NSA ([NSA,SuiteB]) y SEC 1 del SECG ([SECG, SEC1 ]). g) DSA (Digital Signature Algorithm, Algoritmo de Firma Digital): ANSI X9.30 ([ANSI, X9.30-1 ]), FIPS 186-2 ([NIST, FIPS186-2]) y FIPS 1 86-3 ([NIST, FIPS1 86-3]).

h) ECDSA (Elliptic Curve Digital Signature Algorithm, Algoritmo de Firma Digital con Curvas Elípticas): ANSI X9.62 ([ANSI, X9.62]), FIPS 1 86-2 ([NIST, FIPS186-2]), SP 800-57A del NIST ([NIST, SP800-57A]), la Suite B de la NSA ([NSA, SuiteB]) y SEC 1 del SECG ([SECG, SEC1 ]). i) RSA (Criptosistema RSA): ANSI X9.44 ([ANSI, X9.44]), FIPS 186-2 ([NIST, FIPS1 86-2]) y PKCS #1 de los laboratorios RSA ([RSALab, 2002]).

j) ECI ES (Elliptic Curve Integrated Encryption Scheme, Esquema de Cifrado Integrado con Curvas Elípticas): ANSI X9.63 ([ANSI, X9.63]), I EEE1363a ([IEEE, 1363a]) e ISO 1 8033-2 ([ISOIEC, 18033-2]).

k) SHA (Secure Hash Algorithm, Algoritmo Resumen Seguro): FIPS180-1 ([NIST, FIPS180-1 ]), la Suite B de la NSA ([NSA, SuiteB]) y FIPS1 80-2 ([NIST, FIPS 180-2]).

I) HMAC (Hash Message Authentication Code, Código de Autenticación de Mensaje con Resumen): ANSI X9 71 ([ANSI, X9.71 ]) y FIPS 198 ([NIST, FIPS198]).

Otras Patentes:

Realizada la búsqueda en diferentes bases de datos de patentes, se han encontrado las siguientes patentes relacionadas al cifrado de datos.

Patente/Solicitud US 1310719 A, Cifrado de Vernam. Es un único algoritmo de cifrado y no tiene relación con la invención protegida por esta patente. Patente/Solicitud US 1416765 A, Ciphering Device. Plantea un dispositivo que implementa el cifrado de Vernam. Es dispositivo que utiliza un único algoritmo y no tiene relación con la invención protegida por esta patente.

Patente/Solicitud US 1584749 A, Ciphering Device. Plantea un dispositivo que implementa el cifrado de Vernam. Es un dispositivo que utiliza un único algoritmo y no tiene relación con la invención protegida por esta patente.

Patente/Solicitud US 8688996 B2, Multipad encryption. Plantea un proceso de 4 pasos donde se cifra el texto plano con una clave, se le envía al destinatario quien lo cifra con una segunda clave y lo devuelve al emisor quién lo descifra con su clave y lo vuelve a enviar al receptor quién utilizando su clave lo descifra y obtiene el texto plano original. Es un único algoritmo de cifrado y no tiene relación con la invención protegida por esta patente.

Patente /Solicitud US 8948377 B2, Encryption device, encryption system, encryption method, and encryption program. Plantea el uso de un cifrado de Vernam (One Time Pad - OTP) intercalado con un cifrado de bloques utilizando la propia clave del proceso OTP para decidir cuál utilizar. La lógica del proceso no tiene relación con la invención protegida por esta patente.

Patente/Solicitud US 4979832 A, Dynamic substitution combiner and extractor. Plantea un único algoritmo con múltiples tablas de substitución, no tiene relación con la invención protegida por esta patente.

Patente/Solicitud WO 2004034632 Al, Method and system for data encryption and decryption. Plantea un método y sistema para el cifrado y descifrado de datos utilizando desplazamientos relativos en un vector ocultos dentro de sustituciones poli-alfabéticas y un esquema de encadenamiento de cifrado de distancia múltiple. No tiene relación con la invención protegida en esta patente.

Patente/Solicitud WO 2012152956 Al, Procedimiento de doble criptograma simétrico de seguridad de Shannon por codificación de información para transmisión telemática y electrónica. Plantea el uso en secuencia de una matriz alfanumérica, una matriz de base de residuos numéricos, una clave de equivalencias, una tabla de equivalencias, un criptograma reducido de residuos o plantilla, una clave de protocolo, un algoritmo de codificación, un criptograma final de residuos y un algoritmo de decodificación. No tiene relación con la invención protegida en esta patente.

Patente/Solicitud WO 2013110826 Al, Encriptación de datos mediante algoritmo de encriptación de parámetros externos. Plantea una solución informática de encriptación Cliente-Servidor con distintos niveles de seguridad y donde los parámetros de funcionamiento y/o el propio algoritmo de encriptación/desencriptación son almacenados únicamente en el servidor. No tiene relación con la invención protegida en esta patente.

Invención:

La invención que protege esta patente cambia la lógica del proceso. La misma parte de utilizar y aplicar no un único proceso, función o algoritmo sino múltiples procesos, funciones o algoritmos diferentes. Cada función o algoritmo de cifrado tendrá una función o algoritmo inverso de descifrado y podrán utilizarse de forma indistinta. Esto es que podrá utilizarse también la función o algoritmo de descifrado para generar el criptograma y la de cifrado para recuperar el texto plano original.

En lo sucesivo, cualquier mención a una función o algoritmo de cifrado incluye también a cualquier función o algoritmo de descifrado.

La invención que protege esta patente es un método no matemático que incorpora funciones o algoritmos y fórmulas que controlan el proceso de cifrado y descifrado pero los aplica en una técnica que mejora la seguridad del criptograma generado. La invención presenta aplicaciones funcionales y palpables en el campo de la tecnología informática con aplicaciones y mejoras específicas a las tecnologías existentes en el mercado, pero no limitadas a estas.

La invención que protege esta patente es una técnica que no depende ni en forma general ni particular del número, de la cantidad ni de la complejidad de las funciones o algoritmos que la misma pueda utilizar, ni de las funciones o algoritmos en sí mismos.

Una solución que se propone es utilizar un segundo parámetro, adicional a la clave, que definirá en cada instancia cuál de los algoritmos disponibles será utilizado para procesar determinada porción de datos del texto plano o el criptograma y de la clave. A los efectos prácticos y para simplificar la explicación y el entendimiento de la técnica o proceso, llamaremos método al segundo parámetro que indicará en cada instancia cuál de las funciones o algoritmos disponibles se utilizará para procesar la porción de datos del texto plano o del criptograma y de la clave.

La invención que protege esta patente asegura que el mismo texto plano y la misma clave no siempre generarán como resultado el mismo criptograma, aumentando la seguridad y privacidad de lo que se protege. La utilización de diferentes métodos con los mismos texto plano y clave, puede resultar en la obtención de diferentes criptogramas.

El siguiente diagrama muestra el funcionamiento básico de la técnica o proceso:

Leer o recibir una porción de texto plano o criptograma

Si no llegué al final

Leer o recibir una porción de la clave

Leer o recibir una porción del método

Algoritmo = función(método)

Si encripto

Porción de Criptograma = Algoritmo(texto plano, clave)

Si no

Porción de Texto Plano = Algoritmo(criptograma, clave)

Fin si

Terminé

El tener múltiples procesos o algoritmos de cifrado implica la necesidad de identificarlos y diferenciarlos; cada uno debe tener una identificación que lo diferencie de los demás.

Si bien el método puede indicar de distintas formas cuál de los procesos, funciones o algoritmos de cifrado se debe utilizar, y no está limitado a ninguna en particular, a los efectos de la explicación, consideraremos que tendremos una lista de dichos procesos, funciones o algoritmos y que el método indicará el lugar en dicha lista del proceso, función o algoritmo a utilizar; este ejemplo es ilustrativo y no limitativo.

Si bien la técnica permite procesar porciones del texto plano, del criptograma y de la clave de cualquier largo y sin necesidad de que haya relación entre dichos largos, dependiendo únicamente de cómo se implemente la misma, a los efectos de simplificar la explicación de la técnica se utilizarán ejemplos que consideran las porciones a procesar tanto del texto plano, del criptograma y de la clave como bytes o conjuntos de 8 bits; estos ejemplos son ilustrativos y no limitativos.

A modo de ejemplo, si consideramos la porción del método como un conjunto de 8 bits, o sea un byte. Como cada byte puede representar 256 valores diferentes, esto implica la posibilidad de utilizar hasta 256 funciones de cifrado o algoritmos diferentes para procesar la porción del texto plano y la porción de la clave.

Es decir, que el proceso de cifrado, para cada porción del texto plano y para porción de la clave, tomaría un byte del método y en función de su valor, decidiría cual función o algoritmo de cifrado se utilizaría para generar el criptograma. De esta forma, el criptograma no brinda absolutamente ninguna pista ni sobre el texto plano, ni sobre la clave ni sobre el método ni sobre la función o algoritmo utilizado.

Suponiendo se utilicen 256 funciones de cifrado o algoritmos diferentes y que el método indique la posición en el listado del proceso o algoritmo a utilizar, debemos considerar que esas 256 funciones o algoritmos se pueden ordenar en el listado de 256! (factorial de 256) maneras diferentes:

256! = 8.5781777534284265411908227168123262515778152027948561985... x 10 Λ 506

Dado que una vez implementada la técnica en una solución práctica, el orden de los algoritmos permanecerá fija para esa implementación, se puede agregar un tercer parámetro que permita variar el orden del listado.

Este tercer parámetro sería una secuencia de valores que representaría una de las posibles ordenaciones del listado. Utilizando nuestro ejemplo de 256 funciones o algoritmos diferentes, este tercer parámetro sería una de las posibles ordenaciones de los valores del 0 al 255. De esta forma, el método apuntaría a una posición dentro de este orden y el valor situado en esa posición de este parámetro indicaría el orden en el listado interno del proceso o algoritmo a ser utilizado para cifrar el texto plano o descifrar el criptograma utilizando la clave.

Por ejemplo, si el valor de la porción del método representa el valor 59, esto indica que el proceso o algoritmo situado en esa posición del listado interno será utilizado; pero si utilizamos ese tercer parámetro, el valor 59 indicará la posición dentro del vector del parámetro del valor que utilizaremos como posición en el listado interno, el cual puede o no ser el mismo; este ejemplo es ilustrativo y no limitativo.

Este tercer parámetro también podrá utilizarse para excluir y no utilizar determinadas funciones o algoritmos durante el proceso de cifrado o descifrado; esto se puede lograr omitiendo los valores específicos que corresponden a dichos algoritmos en el listado interno; este ejemplo es ilustrativo y no limitativo.

La aplicación de la técnica comprende varios componentes: a. Componente 1 (Utilizar múltiples funciones o algoritmos de cifrado)

Cada función o algoritmo de cifrado tomará un byte del texto plano y uno de la clave y devolverá un byte del criptograma, devolviendo un valor distinto para cada posible valor de la clave.

A continuación explicaremos tres de esas funciones o algoritmos; estos ejemplos son ilustrativos y no limitativos:

• Suma Modular

Sumará los valores representados por el byte del texto plano y el byte de la clave y si el resultado es igual o mayor que el módulo, se restará el valor del módulo y el nuevo resultado obtenido será retornado como valor del byte del criptograma. Si T es el byte del texto plano, K el byte de la clave, C el byte del criptograma y el módulo es 256, podemos expresar:

C = (T + K)MOD(256)

O sea:

C = T + K

Si C > 255, entonces C = C - 256

• Resta Modular

Restará el valor representados por el byte de la clave del valor representado por el byte del texto plano y si el resultado es menor que cero, se sumará el valor del módulo y el nuevo resultado obtenido será retornado como valor del byte del criptograma.

Si T es el byte del texto plano, K el byte de la clave, C el byte del criptograma y el módulo es 256, podemos expresar:

C = (T - K)MOD(256)

O sea:

C = T - K

Si C < 0, entonces C = C + 256

• Resta Inversa Modular

Restará el valor representados por el byte del texto plano del valor representado por el byte de la clave y si el resultado es menor que cero, se sumará el valor del módulo y el nuevo resultado obtenido será retornado como valor del byte del criptograma.

Si T es el byte del texto plano, K el byte de la clave, C el byte del criptograma y el módulo es 256, podemos expresar:

C = (K - T)MOD(256)

O sea:

C = K - T

Si C < 0, entonces C = C + 256 Estos ejemplos son ilustrativos y no limitativos. Cualquier otra función o algoritmo que a partir de los valores del byte del texto plano y del byte de la clave retorne un valor entre 0 y 255 y devuelva distintos resultados para los distintos valores posibles del byte de la clave, será igualmente válida.

Dos funciones o algoritmos que devuelven diferentes resultados para el mismo valor del byte del texto plano y del byte de la clave se consideran diferentes. También se consideran diferentes dos funciones o algoritmos que devuelvan diferentes resultados para dos o más pares de valores del byte del texto plano y del byte de la clave.

Es fácil ver que a partir de cualquier función o algoritmo válido se pueden obtener tantas funciones diferentes como el valor del módulo.

Por ejemplo, si expresamos la suma modular de la siguiente forma:

Si T es el byte del texto plano, K el byte de la clave, C el byte del criptograma, el módulo es 256 y M es un valor entre 0 y 255, podemos expresar:

C = (T + K + M)MOD(256)

O sea:

C = T + K + M

Si C > 255, entonces C = C - 256

Es fácil ver que si tenemos dos valores diferentes M≠ M', entonces podemos afirmar que: (T + K + M)MOD(256)≠ (T + K + M')MOD(256) y entonces C≠ C Lo mismo se aplica para cualquiera otra función o algoritmo válido. b. Componente 2 (Utilizar un segundo parámetro)

El segundo parámetro o método, indicará en cada instancia cuál de las funciones o algoritmos disponibles se utilizará en cada instancia para obtener el byte del criptograma a partir del byte del texto plano y del byte de la clave. c. Componente 3 (Orden de las funciones o algoritmos)

Cuando disponemos de múltiples funciones o algoritmos de cifrado, debemos de identificarles y ordenarles de alguna forma. Usualmente se utiliza una lista y el orden en esa lista será utilizado para definir cuál de las funciones o algoritmos será utilizada en cada instancia, dependiendo del valor que provea el segundo parámetro. Y esta lista no es única; dadas N funciones o algoritmos diferentes, pueden ordenarse en N ! ordenes diferentes (N ! = 1χ2χ3χ...Ν). En nuestro ejemplo, tendremos 256! Ordenes diferentes para un grupo dado de 256 funciones diferentes. d. Componente 4 (Cambiar el orden de las funciones)

Hasta ahora, un valor dado X del segundo parámetro siempre hará que se ejecute la función Z para obtener el byte del criptograma a partir del byte del texto plano y del byte de la clave.

Utilizaremos un tercer parámetro, el cual será un vector conteniendo uno de los posibles ordenes de las funciones o algoritmos; en nuestro ejemplo, contendrá uno de los 256! posibles ordenes de los valores de 0 a 255. Ahora, el segundo parámetro se utilizará para indicar cual elemento de ese vector contiene el valor a ser utilizado para identificar la función o algoritmo que se utilizará para obtener el byte del criptograma a partir del byte del texto plano y del byte de la clave. Cambiando el orden de los elementos del vector, hará que el mismo valor del segundo parámetro apunte al mismo elemento del vector que ahora tendrá un valor diferente y por lo tanto la función o algoritmo a ser utilizado en esa instancia será otra. e. Componente 5 (Proceso en bloques)

Tomemos del texto plano un bloque o conjunto de bytes de un largo dado y procesémoslo en orden inverso, comenzando desde el último byte del bloque, procesándolo y guardando el resultado como primer byte del criptograma. Seguiremos con el penúltimo byte del texto plano, procesándolo y guardándolo como segundo byte del criptograma. Seguiremos el proceso hasta que hayamos procesado el primer byte del bloque y luego continuaremos con el bloque siguiente.

El último bloque puede ser más corto pero igual se procesará desde su último byte hasta el primero.

Un cuarto parámetro definirá el largo de los bloques a procesar. Si ese parámetro es un único valor, indicará un tamaño fijo de bloque a utilizar y si es una secuencia de valores, indicará los sucesivos tamaños para cada bloque a procesar.

Lo mismo se podrá utilizar para procesar la clave y/o el método. Esto podrá definirse en la implementación de la aplicación de la técnica o podrá dársele al usuario la opción de decidir cómo proceder. f. Componente 6 (Mapeo de los posibles valores)

Si, utilizando nuestro ejemplo, cada uno de los 256 posibles valores de un byte corresponden a un valor válido dentro de los valores posibles para cada byte del texto plano, entonces tenemos tres formas posibles de proceder:

1. Se toma el valor actual del byte del texto plano para ser utilizado como valor del byte del texto plano para generar el byte del criptograma.

2. Se utiliza un vector con una de las posibles ordenaciones de los valores de 0 a 255 y se utiliza el valor del elemento apuntado por el valor del byte del texto plano para apuntar al elemento del vector cuyo valor será utilizado en lugar del valor del byte del texto plano para generar el byte del criptograma.

3. Se utiliza un vector con una de las posibles ordenaciones de los valores de 0 a 255 y se utiliza la ubicación del valor del byte del texto plano dentro del vector en lugar del valor del byte del texto plano para generar el byte del criptograma.

La decisión de la opción o mezcla de opciones a utilizar puede ser definida al aplicar la técnica o dejarse como un parámetro externo a opción del usuario.

Si, utilizando nuestro ejemplo, no todos los 256 posibles valores de un byte corresponden a un valor válido dentro de los valores posibles para cada byte del texto plano, entonces podemos proceder de la siguiente manera:

1. Se utiliza un vector con una de las posibles ordenaciones de los valores válidos y se utiliza la ubicación del valor del byte del texto plano dentro del vector como como valor del byte del texto plano para generar el byte del criptograma y se utiliza como Módulo la cantidad total de valores válidos para los bytes del texto plano. Esto nos garantizará que el valor del byte del criptograma corresponda a un valor válido de byte del texto plano.

Este último componente nos permite definir algoritmos de cifrado con preservación de formato.

Si en vez de utilizar un byte (8 bits) como tamaño de la porción del método utilizásemos dos bytes (16 bits), la cantidad de posibles procesos o algoritmos se eleva al cuadrado llegando hasta un máximo de 65536 y las ordenaciones posibles se elevan exponencialmente a 65536! (Factorial de 65536):

65536! = 5.16294852309750916500022794327240174787669187508469072... x 10 Λ 287193

Mientras que factorial de 256 (256!), es un valor del orden de 2 Λ 1684, factorial de 65536 (65536!) Es un valor del orden de 2 Λ 954037.

Ejemplo práctico:

A los efectos de simplificar la comprensión de la técnica que protege esta patente de invención, presentaremos a continuación un ejemplo práctico de implementación de la técnica; este ejemplo es ilustrativo y no limitativo.

A modo de ejemplo, consideraremos la porción del texto plano, del criptograma, de la clave y del método como un conjunto de 8 bits, o sea un byte en cada caso.

Como cada byte puede representar 256 valores diferentes, esto implica tener hasta 256 funciones o algoritmos de cifrado distintas, de forma tal que cada valor posible representase una función o algoritmo de cifrado diferente a utilizarse con la porción del texto plano y la porción de la clave.

Es decir, que el proceso de cifrado, para cada porción del texto plano y para cada porción de la clave, tomaría un byte del método y en función de su valor, decidiría cual función o algoritmo de cifrado se utilizaría para generar la porción del criptograma.

A diferencia de otros cifrados, el proceso no es siempre el mismo, el proceso va variando en función de los valores de cada byte del método, del orden inicial de las funciones o algoritmos de cifrado/descifrado, de las modificaciones que se realicen al vector del orden de las funciones y de los tamaños de bloques a procesar.

Si consideramos que alguien pueda tener acceso al criptograma, el mismo no brinda información alguna ni sobre la clave, ni sobre el método ni sobre los largos de los mismos, ni sobre el tamaño de la porción de cada uno, ni sobre las funciones o algoritmos utilizados, ni sobre su orden ni sobre los tamaños de los bloques procesados.

Tomado un byte cualquiera del criptograma, el byte correspondiente en el texto plano original puede ser cualquiera de todos ellos y su valor ser cualquiera de los 256 valores posibles sin indicio alguno de cual pueda ser y teniendo todos los valores la misma exacta posibilidad de ser el valor original. Esto permite tener diferentes implementaciones del mismo cifrado utilizando diferentes ordenaciones para las funciones o algoritmos de cifrado que resultan en diferentes resultados para los mismos valores de clave y método.

También se puede considerar el orden de los algoritmos como un parámetro externo, una simple secuencia de 256 valores diferentes en un orden aleatorio. En este caso, lo que hace el proceso es tomar el valor del byte del método y utilizarlo cómo índice para obtener la posición dentro de esa secuencia, del valor a utilizar para definir la función o algoritmo a utilizar. Es fácil ver que el mismo valor del método disparará una función o algoritmo diferente si se utilizan secuencias de orden diferentes.

Aun cuando se puedan conocer las 256 funciones o algoritmos de cifrado, queda por conocer cual corresponde a cada posible valor de un byte del método.

Esto implica que aun pudiendo obtener el criptograma, la clave y el método, aún se precisa saber el orden interno dado a las funciones o algoritmos de cifrado y el vector del orden inicial de las mismas (a cual función o algoritmo corresponde cada valor posible de un byte del método) para poder obtener el texto plano original.

El proceso de aplicación de la técnica, a modo de ejemplo ilustrativo y no limitativo sería:

1. Se decide qué valor o valores del módulo serán utilizados y en qué circunstancias. En nuestro ejemplo, consideraremos que cada byte del texto plano puede tener cualquiera de los 256 posibles valores y por tanto el módulo será siempre 256.

2. Se decide el tamaño de cada elemento del método o segundo parámetro, el cual indicará la cantidad de funciones o algoritmos de cifrado que se utilizarán. En nuestro ejemplo, el tamaño de cada elemento del método será de 1 byte (8 bits) por lo que se utilizarán 256 funciones o algoritmos de cifrado.

3. Se seleccionan las 256 funciones o algoritmos de cifrado que se utilizarán para generar un algoritmo de cifrado y descifrado independiente. La utilización de conjuntos diferentes de funciones o algoritmos creará algoritmos de cifrado y descifrado independientes que serán diferentes y generarán diferentes resultados.

4. Se listan y ordenan dichas funciones o algoritmos en un orden interno dado. Dos ordenaciones diferentes darán como resultado dos algoritmos de cifrado y descifrado diferentes.

5. Se define si el texto plano se procesará utilizando un tamaño único de bloque o una lista de tamaños.

6. Se define si la clave se procesará utilizando un tamaño único de bloque o una lista de tamaños.

7. Se define si se utilizará un tercer parámetro o no y en caso de utilizarse, si el mismo será interno o externo.

8. Siguiendo estas opciones, se arma y se genera un algoritmo de cifrado y descifrado.

Cualquier variación en cualquiera de los puntos anteriores determinará que el algoritmo de cifrado y descifrado independiente que se genere sea diferente y provea diferentes resultados para el mismo texto plano, la misma clave y el mismo método. Una vez completada la aplicación de la técnica, el algoritmo de cifrado y descifrado independiente generado funcionará, a modo de ejemplo ilustrativo y no limitativo, de la siguiente manera:

1. El usuario podrá seleccionar o ingresar el texto plano a cifrar o el criptograma a descifrar.

2. Si está autorizado, podrá seleccionar el o los tamaños de bloque para procesar el texto plano.

3. El usuario podrá seleccionar o ingresar la clave a utilizar.

4. Si está autorizado, podrá seleccionar el o los tamaños de bloque para procesar la clave.

5. El usuario podrá seleccionar o ingresar el método o segundo parámetro a utilizar.

6. Si está autorizado, podrá seleccionar el o los tamaños de bloque para procesar el método.

7. Si está autorizado, podrá seleccionar el orden inicial de las funciones o algoritmos a utilizar.

8. El proceso cargará el orden inicial de las funciones en un vector de 256 elementos.

9. Si el remanente del texto plano es más corto que el tamaño actual de bloque a utilizar, el tamaño del bloque a procesar se ajusta al largo remanente del texto plano.

10. El proceso toma un bloque del texto plano del tamaño actual. Si se ha terminado el texto plano, el proceso finaliza.

11. El proceso toma el último byte del bloque de proceso.

12. El proceso toma un byte del bloque de la clave. Si se ha terminado la clave, se reordena el vector del orden inicial de las funciones o algoritmos, se reinicia la clave y el proceso toma un byte del bloque de la clave.

13. El proceso toma un byte del bloque del método. Si se ha terminado el método, se reinicia el método y el proceso toma un byte del bloque del método.

14. El proceso utiliza el valor del byte del método como índice del vector del orden inicial de las funciones o algoritmos para acceder al elemento cuyo valor utiliza para identificar cual función o algoritmo dentro del orden interno se utilizará para procesar el byte del texto plano o del criptograma junto con el byte de la clave para obtener el byte del criptograma o del texto plano.

15. La función o algoritmo utilizado devuelve un byte del criptograma o uno del texto plano que será almacenado en la salida cifrada o descifrada.

16. El proceso toma el byte previo del bloque de proceso. Si se ha terminado el bloque de proceso, se salta al punto 9.

17. Salta al punto 11.