ES2235946T3 - Una tecnica para producir un parametro, tal como una suma de comprobacion, mediante una primitiva que usa operaciones elementales de registro. - Google Patents
Una tecnica para producir un parametro, tal como una suma de comprobacion, mediante una primitiva que usa operaciones elementales de registro.Info
- Publication number
- ES2235946T3 ES2235946T3 ES00963254T ES00963254T ES2235946T3 ES 2235946 T3 ES2235946 T3 ES 2235946T3 ES 00963254 T ES00963254 T ES 00963254T ES 00963254 T ES00963254 T ES 00963254T ES 2235946 T3 ES2235946 T3 ES 2235946T3
- Authority
- ES
- Spain
- Prior art keywords
- primitives
- cryptographic
- quad
- mod
- parameter
- 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.)
- Expired - Lifetime
Links
Classifications
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Abstract
Un procedimiento, para el uso en un dispositivo (100) para producir un parámetro criptográfico a partir de una pluralidad de N bloques sucesivos, x1, x2, ..., xN de texto simple digital de entrada (7); dicho procedimiento implementa una primitiva criptográfica, F(x), que es equivalente a la función criptográfica predefinida f(x) = ax + b mod (M), en la que a un y b son números enteros predefinidos y M es un número primo predefinido; y dicho procedimiento comprende un paso para generar dicho parámetro criptográfico mediante el procesado de los mencionados bloques de texto simple.
Description
Una técnica para producir un parámetro, tal como
una suma de comprobación, mediante una primitiva que usa operaciones
elementales de registro.
La invención se refiere a una técnica para llevar
a cabo una primitiva para calcular, por ejemplo una suma de
comprobación. De manera ventajosa, esta técnica es relativamente
simple y usa operaciones de registro bastante elementales, ahorrando
a la vez un significativo tiempo de proceso por encima del que
convencionalmente se requiere para el cálculo, por ejemplo, un
código de autenticación de mensaje (MAC) o implementar un cifrado de
flujo.
Muchas técnicas criptográficas diferentes
actualmente en uso en la actualidad emplean funciones matemáticas
que incluyen aritmética modular, típicamente calculando un residuo
de un número con respecto a un número primo relativamente grande
(M), tal como, por ejemplo, 2^{31}-1 o más grande.
Dicha función ilustrativa, f(x), sería de la forma f(x
)= ax + b mod(M) en un campo de Galois (GF) sobre 2m, donde n
= 2m + 1, y n y m son enteros predefinidos en un campo Z (mod M).
Mientras que las funciones por sí solas varían en gran manera de una
técnica a otra, éstas comúnmente requieren el cálculo de una
operación mod(M) de una forma u otra y generalmente sobre una
base altamente repetitiva.
No sólo dichas operaciones modulares se usarán
para el encriptado de cada uno u todos los bloques de texto simple
en un mensaje para producir un correspondiente bloque de texto
cifrado y el desencriptado del último para recuperar el bloque de
texto simple asociado, sino también en el cálculo de las partes
intermedias de la técnica, tales como un código de autenticación de
mensaje (MAC) o un cifrado de flujo.
La realización de una sola operación
mod(M) puede requerir tantos como de 10 a 15 ciclos de
proceso, si no más (en base a al valor de un módulo, M). Como una
técnica criptográfica requiere un número grande de dichas
operaciones, se puede consumir una cantidad importante de tiempo de
proceso asociado con el empleo de esa técnica, simplemente en el
cálculo de las operaciones mod(M).
Las técnicas criptográficas están encontrando un
uso cada vez mayor para proteger la información en una amplia y
creciente variedad de aplicaciones muy diversas, así como en una
disposición creciente de dispositivos desde dispositivos de
propósito general altamente sofisticados, como, por ejemplo,
ordenadores personales y estaciones de trabajo, hasta dispositivos
dedicados relativamente sencillos, tales como por ejemplo
"tarjetas inteligentes", controles remotos y aparatos
electrónicos.
Por ejemplo, en vista de la facilidad y el bajo
costo de la comunicación mediante el correo electrónico, Internet
(entre otras modalidades de red) está experimentando el crecimiento
explosivo y exponencial como un medio de comunicación preferido. Sin
embargo, Internet, siendo una red públicamente accesible, no es
segura y, de hecho, ha sido y cada vez más continúa siendo un blanco
de una amplia variedad de ataques desde distintas personas y
organizaciones decididas a escuchar a escondidas, interceptar y/o en
cualquier otro caso, comprometer e incluso corromper el tráfico de
mensajes por Internet o introducirse de manera ilícita en sitios de
Internet. Esta amenaza de la seguridad, en vista de una confianza
creciente puesta en el uso de Internet como un medio preferido de
comunicación, aumenta los esfuerzos en la técnica de desarrollar
técnicas criptográficas cada vez más potentes que faciliten niveles
mejorados de la seguridad para la comunicación electrónica, tales
como los mensajes del correo, ficheros de datos y de computación, de
las escuchas a escondidas, la interceptación y la manipulación de
terceras partes. Como consecuencia, el procesado criptográfico se
está incorporado en una serie creciente de programas de ordenador
personal, en particular en los navegadores de la red y en otros
componentes del sistema operativo, y en los programas de correo
electrónico y en otros programas de aplicación con el fin de
proporcionar una conectividad segura a Internet.
Una aplicación criptográfica totalmente diferente
implica a las denominadas "tarjetas inteligentes". En este
caso, un dispositivo dedicado del tamaño de una tarjeta de crédito
que emplea un procesador poco sofisticado y barato, es decir, una
tarjeta inteligente, almacena datos bancarios y otros saldos
financieros de una persona en particular. El microprocesador
utilizando un programa almacenado internamente en la tarjeta, puede
validar una transacción y cambiar de manera apropiada cada uno de
los saldos en base a la transacción realizada. De manera específica,
la persona puede pedir una transacción electrónica con otra parte,
tal como un vendedor o una entidad bancaria simplemente mediante la
inserción de la tarjeta en un terminal de datos apropiado e
introduciendo los datos de la transacción mediante un teclado
asociado con el terminal con el fin de cargar en cuenta y/o de
abonar en cuenta todo o una parte del saldo almacenado en la
tarjeta. Las transacciones de esta manera facilitan una
transferencia de dinero instantánea a la vez que se elimina la
necesidad de costes asociados con el procesado de papel moneda o
instrumentos monetarios basados en el dinero en papel, tales como
los cheques. El programa almacenado utiliza técnicas criptográficas
extremadamente fuertes para proteger la información almacenada en la
tarjeta, en particular los saldos, del acceso y la falsificación por
parte de terceras personas ilícitas.
Denning, D.: "Criptografía y seguridad de los
datos", 1982, describe cómo procesar bloques de entrada de texto
plano usando una transformación afín.
Schneier, B.: "Criptografía aplicada", de
octubre de 1995 describe las primitivas para producir un parámetro
criptográfico a partir de una pluralidad de bloques sucesivos. En
particular, se describen funciones de cálculo de clave
unidireccionales que usan algoritmos de bloque simétricos y códigos
de autenticación de mensaje.
Bosselaers, A. y colaboradores: "Comparación de
tres funciones de reducción modular", CRYPTO 93, 1994, páginas
175 a la 186, describe tres algoritmos de reducción modular para
grandes enteros y los compara en términos de los tiempos de
ejecución esperados.
Sin embargo, como se ha hecho notar con
anterioridad, la criptografía conlleva una sobrecarga de procesado.
Mientras que en dispositivos sofisticados que tienen una capacidad
de procesado significativa, como los PC y las estaciones de trabajo,
la sobrecarga reduce la capacidad de proceso global del sistema, en
otros dispositivos, con capacidad de procesado bastante limitada,
tales como las tarjetas inteligentes, controles remotos y otros
dispositivos de "baja calidad", la sobrecarga puede ser
intolerable hasta el punto de evitar el uso de técnicas
criptográficas suficientemente potentes en dichos dispositivos.
De aquí, dado el rápido y al parecer creciente
deseo en la técnica para incorporar las técnicas criptográficas en
una amplia variedad de dispositivos, particularmente aquéllos que
tengan una capacidad de procesado limitada, existe en la actualidad
una necesidad en la técnica para reducir el tiempo de procesado
requerido para llevar a cabo las técnicas criptográficas.
Es un objeto de la presente invención producir un
parámetro criptográfico a partir de una pluralidad de bloques
sucesivos mientras se reduce el tiempo de procesado debido a los
cálculos mod(M).
Este objeto se resuelve mediante las cuestiones
objeto de las reivindicaciones independientes 1 y 12.
Las realizaciones preferidas están definidas en
las reivindicaciones dependientes.
En particular, la sobrecarga de procesado
asociada con ciertas técnicas criptográficas, particularmente en el
cálculo de la suma de comprobación, podría reducirse en gran medida
si se pudiese sustituir una operación mod(M) por una
operación u operaciones equivalentes aunque menos intensivas para el
procesador. Si se pudiese conseguir este resultado, entonces se
podría aumentar de manera ventajosa la capacidad de procesado global
de dispositivos muy sofisticados, tales como los ordenadores
personales y las estaciones de trabajo que emplean varias técnicas
criptográficas. Además, si se pudiese reducir dicha sobrecarga,
entonces se podrían incorporar las potentes técnicas criptográficas
en una multitud de dispositivos relacionados con los ordenadores que
hasta ahora tenían una potencia de procesado insuficiente para
soportar adecuadamente dichas técnicas.
Ventajosamente, nuestra presente invención
satisface esta necesidad llevando a cabo una primitiva para calcular
una suma de comprobación pero ventajosamente sin ninguna necesidad
de una operación mod(M).
De acuerdo con nuestras enseñanzas ampliamente
inventivas, esta primitiva reemplaza a la operación mod(M)
con una serie de operaciones de registro elementales sencillas.
Estas operaciones incluyen multiplicaciones mod 2^{n},
manipulaciones del orden (por ejemplo, permutación de octeto o
palabra), y sumas - todas ellas extremadamente sencillas de llevar a
cabo y que requieren muy pocos ciclos de procesado para su
ejecución. El uso de nuestra técnica inventiva puede reducir el
tiempo de procesado significativamente por encima del tiempo que
convencionalmente se requiere para calcular los distintos parámetros
criptográficos, tales como, por ejemplo, un código de autenticación
de mensaje (MAC), o para llevar a cabo un cifrado de flujo.
De manera específica, una versión elemental,
ilustrativa y no reversible de nuestra técnica se basa en el cálculo
de la primitiva mediante la siguiente secuencia de ecuaciones:
- \quad
- X^{S} \longleftarrow permutación de palabra (x)
- \quad
- y \longleftarrow Ax + Bx^{S} mod (2^{n})
- \quad
- y^{S} \longleftarrow permutación de palabra (y)
- \quad
- z \longleftarrow C y^{S} + y D mod (2^{n})
- \quad
- \theta\longleftarrow z + y^{S} E mod (2^{n})
- donde:
- los coeficientes A, B, C, D y E son cada uno de ellos un número entero aleatorio impar menor o igual a 2^{n}; y
- \quad
- \theta es una cadena de n bits.
Para el uso en la generación de un MAC u otro
parámetro criptográfico, los coeficientes son "secretos"; sin
embargo, cuando se usan para generar una suma de comprobación, estos
coeficientes son conocidos públicamente.
De manera ventajosa, nuestra técnica inventiva
tiene, como característica, variantes reversibles y variantes no
reversibles.
\newpage
Las enseñanzas de la presente invención pueden
ser entendidas rápidamente considerando la siguiente descripción
detallada junto con los dibujos que la acompañan en los que:
La figura 1 representa un diagrama de bloques del
proceso criptográfico global extremo a extremo 5 que utiliza las
enseñanzas inventivas presentes para generar de manera ilustrativa
un código de autenticación de mensaje (MAC);
La figura 2 representa un diagrama de bloques de
alto nivel de un entorno de procesado cliente - servidor típico
basado en Internet que utiliza de manera ilustrativa la presente
invención;
La figura 3 representa un diagrama de bloques del
ordenador cliente 100 mostrado en la figura 2;
La figura 4 representa un diagrama de flujo de
alto nivel del proceso de generación de MAC 400, que se usa en el
procedimiento 5 mostrado en la figura 1, para producir un MAC de
acuerdo con nuestras enseñanzas inventivas presentes;
La figura 5 representa un diagrama de flujo de
alto nivel del procedimiento de Suma de Cálculo Alternativa 500 que
puede usarse en lugar del procedimiento de Suma de Cálculo 430 que
forma una parte del procedimiento de generación de MAC 400 mostrado
en la figura 4;
La figura 6A representa un funcionamiento típico
de permutación de palabra que nuestra presente invención puede
emplear; y
La figura 6B representa una operación típica de
permutación de octeto que nuestra presente invención puede
emplear.
Para facilitar la comprensión, se han usado
números de referencia idénticos, donde ha sido posible, para
designar elementos idénticos que son comunes a las figuras.
Después de considerar la siguiente descripción,
aquéllos que sean expertos en la técnica comprenderán claramente que
las enseñanzas de nuestra presente invención se pueden utilizar en
cualquiera de una amplia gama de técnicas criptográficas que
impliquen el cálculo de una suma de control. Dichas técnicas son
aquéllas que, por ejemplo, calculen los códigos de autenticación de
mensaje (MAC), o que lleven a cabo los cifrados de flujos.
Para facilitar el entendimiento del lector,
trataremos nuestra invención en el contexto de su uso en dicha
técnica, aunque completamente generalizado, que podría emplearse en
un entorno de procesado de una transacción cliente - servidor en el
que se vayan a comunicar los mensajes de la transacción sobre una
red de comunicaciones insegura, tal como Internet, y específicamente
en el contexto del cálculo de un MAC empleado en esa técnica.
La figura 1 representa un diagrama de bloques del
procedimiento criptográfico global extremo a extremo 5 que genera
un MAC mediante el uso de nuestra presente invención.
Como se muestra, la información de texto simple
entrante, es organizada en los denominados "mensajes". Cada uno
de los mencionados mensajes 7, designado como P, está organizado
como N bloques (P_{1}, P_{2}, ..., P_{N}), con cada bloque
siendo de n bits de anchura, donde aquí n es de manera ilustrativa
32 bits. A cada uno de dichos bloques de texto simple se le aplica,
como se simboliza por la línea 10, el procedimiento de encriptación
20. Este procedimiento incluye de manera ilustrativa el
procedimiento de la encriptación del mensaje 23 y el procedimiento
inventivo de generación MAC 400. El procedimiento 400 (que se
describirá en detalle a continuación junto con las figuras 4 y 5),
dado el mensaje de texto simple, P, o una manipulación criptográfica
adecuado del mismo, como entrada, genera de acuerdo con nuestra
invención, un MAC, típicamente de 64 bits de longitud que es único
para este mensaje. El procedimiento de encriptación del mensaje 23
encripta el mensaje de texto simple en texto cifrado e inserta de
manera adecuada el MAC de 64 bits en el mensaje, ilustrativamente
como dos bloques del orden más alto (C_{N-1},
C_{N}) (una coma que separa valores sucesivos en los paréntesis se
usa de aquí en adelante como un operador para denotar la
concatenación de esos valores), para producir el mensaje de texto
cifrado, C. Los bloques del orden más alto forman colectivamente el
MAC 42. Dependiendo de un procedimiento de encriptación específico
empleado dentro de procedimiento 23, el MAC 42 por sí solo se puede
encriptar, tal como mediante un encriptado DES (norma de encriptado
de datos) bien conocido u otra permutación pseudo aleatoria
convencional, o no. El mensaje de texto cifrado se forma de N
sucesivos bloques de n bits de texto cifrado.
El mensaje de texto cifrado resultante se
almacena entonces o se transfiere, a través de una modalidad dada,
por ejemplo, un canal de comunicación inseguro, representado por la
línea de puntos 45 y tipificado por una conexión a Internet, a una
localización destinataria. Aquí, una versión recibida del mensaje de
texto cifrado, denotada como \tilde{C} (también etiquetada como
mensaje 40'), se desencripta mediante el procedimiento de
desencriptado 50 para producir el mensaje de texto simple recuperado
70 denotado también como el mensaje de texto simple \hat{P} que,
para ser válido y de esta forma ser adecuado para el uso en línea de
salida, debe ser idéntico en todos los aspectos al mensaje de texto
simple original P. El procedimiento de desencriptado 50 contiene un
procedimiento de desencriptado de mensaje 60, un procedimiento de
generación de MAC 400 y un comparador de identidad 90.
Para determinar si el mensaje de texto simple
recuperado es válido, por ejemplo, no ha sido alterado, el
procedimiento de desencriptado del mensaje 60 no solamente produce
el texto simple recuperado, sino que también extrae (y desencripta
en caso de que sea necesario) el MAC del mensaje de texto cifrado
\tilde{C}. Se aplica un MAC resultante recuperado, como se
simboliza mediante la línea 67, a una entrada del comparador 90. El
texto simple recuperado también es aplicado, como se simboliza
mediante la línea 77, al procedimiento de generación de MAC 400. El
procedimiento 400 recalcula el MAC a partir del mensaje de texto
simple recuperado \hat{P} y aplica, como se simboliza mediante la
línea 80, un MAC resultante recalculado, a otra entrada del
comparador 90. Si los dos MAC aplicados entonces a las entradas
correspondientes del comparador 90 coinciden idénticamente, entonces
el comparador 90 genera una indicación conveniente en la salida 93
para indicar que el mensaje de texto simple recuperado \hat{P} que
aparece entonces en el terminal de salida 23, es válido para su uso
posterior. Por otra parte, si los MAC recuperados y recalculados no
coinciden, el comparador 90 genera una indicación conveniente en la
salida 97 para indicar que el mensaje de texto simple recuperado
\hat{P}, que aparece en la salida 73, no es válido y debe
ignorarse. En tanto que la naturaleza específica, aparte de la
generación de un MAC, de las técnicas de encriptado y desencriptado
usadas en el procedimiento de encriptado 23 y en el procedimiento
de desencriptado del mensaje 60, respectivamente, son irrelevantes
para la presente invención y se puede usar cualquiera de una amplia
variedad de dichas técnicas de manera exitosa, no trataremos estos
aspectos en más detalle. No obstante, describimos y reivindicamos
una de dichas técnicas criptográficas ilustrativas en nuestras
solicitudes de patente de los Estados Unidos en trámite junto con la
presente (a las que se remite al lector) titulada "Técnica
criptográfica que facilita el encriptado y desencriptado rápidos y
que asegura la integridad del mensaje de texto cifrado"
presentada el 20 de abril de 1998, con el número de serie
09/062.836; y "Método y Aparato para producir un código de
autenticación de mensaje" presentada el 20 de abril de 1998, con
el número de serie 09/062.837 - ambas incorporadas por referencia al
presente documento y que han sido transferidas al cesionario del
presente
documento.
documento.
Con lo anterior en mente, considérese la figura 2
que representa un diagrama de bloques de alto nivel del entorno de
procesado cliente - servidor 200 que utiliza la presente
invención.
Como se muestra, este entorno contiene un
ordenador 205 que implementa el servidor 210, siendo éste último
ilustrativamente un servidor "web". Varios ordenadores clientes
independientes remotamente localizados, siendo cada uno de ellos de
manera ilustrativa un ordenador (PC) de los cuales, solamente uno de
dichos clientes, es decir, un ordenador cliente 100, es mostrado
específicamente, está conectado usando canales de comunicaciones
apropiados, tales como los canales 140 y 160, a través de una red de
comunicaciones insegura, mostrada aquí de manera ilustrativa como
Internet 150, al ordenador 205. Un usuario (no específicamente
mostrado), estacionado en el ordenador cliente 200 y deseoso de
obtener información del servidor, puede llamar al correspondiente
programa cliente 130 en el ordenador cliente 100. El programa
cliente forma uno de un número de programas de aplicación 120 que
residen colectivamente dentro y que son ejecutados por el ordenador
cliente 100. Aunque el programa cliente se muestra específicamente
como residiendo dentro de los programas de aplicación, éste también
puede implementarse como un componente, tal como un navegador de
red, de un sistema operativo (O/S), por ejemplo, de O/S 337 mostrado
en la figura 3. El servidor 210, mostrado en la figura 2, puede
llevar a cabo cualquiera de una amplia variedad de funciones de
aplicación incluyendo, por ejemplo, un servidor de comercio, un
servidor bancario, un servidor de correo electrónico o un servidor
de ficheros. Acerca del comercio electrónico, el usuario podría
desear dirigir una transacción comercial a través del ordenador
cliente 100 y del servidor 210, lo que implica el facilitar (como se
simboliza mediante la línea 110) información al servidor, tal como
un número de cuenta del usuario en una institución financiera e
instrucciones de pago para transferir los fondos a un portador, o la
obtención de información (tal como se simboliza mediante la línea
135) desde el servidor, tal como la cuenta disponible o los balances
de crédito del usuario que, en cualquier caso, es confidencial para
ese usuario. De manera alternativa, el servidor 210 puede ser un
servidor de ficheros que facilite al usuario el acceso a los
distintos archivos almacenados en un almacén, cualquiera de los
cuales puede ser descargado por el usuario. Una vez que un fichero
tal es descargado, pueden almacenarse dentro de la memoria 330
(véase la figura 3) situada dentro del ordenador cliente 100 para su
uso local en el mismo. Sin embargo, cualquiera de dichos ficheros
puede contener información propietaria y/o información confidencial
para la que su propietario desee controlar el acceso del usuario.
Por ejemplo, dicho fichero puede ser un fichero ejecutable
autoinstalable de una actualización para un programa dado para el
que su propietario, por ejemplo, un fabricante de software desee
evitar el acceso público ilícito, es decir, evitando que la
actualización sea usada por cualquier individuo que no haya enviado
el pago apropiado por él. El servidor 210 pos sí mismo, como se
muestra en la figura 2, también puede proporcionar información
confidencial o información propietaria (como se simboliza mediante
la línea 215) que se origina desde el usuario (y se transmite a
través de la red (aquí Internet) 150 al servidor) al equipo de línea
de salida (no mostrado específicamente) para su posterior
procesamiento, o puede recibir (como se simboliza mediante la línea
218) información confidencial o propietaria del equipo de línea de
salida para su transmisión eventual, a través de la red al
usuario.
usuario.
La red 150, siendo ilustrativamente Internet, es
susceptible de verse comprometida por una tercera parte. A ese
respecto, la tercera parte podría interceptar un mensaje cifrado de
manera convencional que se esté transportando a través de la red y
que surja desde, por ejemplo, un ordenador cliente 100, para, por
ejemplo, una transacción financiera en procesamiento en ese momento
que implique a un usuario situado en ese ordenador. Mientras que la
tercera parte puede no tener los recursos suficientes en lo que se
refiere a la capacidad de procesado disponible o en el tiempo para
romper un cifrado convencional usado para encriptar los mensajes y
para recuperar el texto simple inherente en el mensaje transmitido,
esa parte puede no obstante poseer un conocimiento suficiente del
mensaje de texto simple, específicamente su organización
estructural, y el equipo necesario para cambiar de manera exitosa
ese mensaje en detrimento del usuario. A ese respecto, la tercera
parte podría manipular de manera ilícita el mensaje de texto cifrado
sustituyendo uno o más bloques de texto cifrado predefinidos para
los correspondientes bloques de texto cifrado originales y
transmitir después un mensaje del texto cifrado modificado
resultante de vuelta sobre la red para su transporte al ordenador
205 para su procesado en el mismo.
Para salvaguardar la naturaleza confidencial o
propietaria de la información que transita sobre la red 150 entre el
ordenador cliente 100 y el ordenador 205 del acceso de una tercera
parte, tanto el programa cliente 130 como el servidor 210 cada uno
de ellos utiliza la comunicación criptográfica a través de la
incorporación del procedimiento de encriptado 20 y el procedimiento
de desencriptado 50 en los mismos. Como tal, los mensajes
destinados para su transporte a través de la red y generados
mediante un par de aplicación de red, ya sea el programa cliente 130
o el servidor 210, son cada uno de ellos encriptados mediante el
procedimiento de encriptado 20 para producir los mensajes
correspondientes de texto cifrado con los MAC incorporados que, a su
vez, son transmitidos cada uno de ellos sobre la red 150 al otro par
de aplicación de red. De manera similar, los mensajes de texto
cifrado recibidos, desde la red, por cada uno de los pares es
desencriptado mediante el procedimiento de desencriptado 50 en los
mismos para producir un mensaje de texto simple recuperado apropiado
y una indicación acerca de su validez. Los procedimientos de
encriptado y desencriptado 20 y 50 son procedimientos inversos uno
respecto del otro.
La figura 3 representa un diagrama de bloques de
un ordenador cliente (PC) 100.
Como se muestra, el ordenador cliente 100
comprende interfaces de entrada (I/F) 320, un procesador 340,
interfaz de comunicaciones 350, memoria 330 e interfaces de salida
360, todos ellos interconectados de manera convencional mediante un
bus 370. La memoria 330, que generalmente incluye diferentes
modalidades, incluyendo de manera ilustrativa memoria de acceso
aleatorio (RAM) 332 para el almacenamiento temporal de datos e
instrucciones, unidad o unidades de disco 334 para el intercambio de
información, según la orden del usuario, con disquetes, y
almacenamiento masivo no volátil 335 que se implementa mediante un
disco duro, típicamente de naturaleza magnética. El almacenamiento
masivo 335 también puede contener un CD-ROM u otro
lector de medios ópticos (no específicamente mostrado) (o escritor)
para leer la información de (y escribir la información sobre) un
medio de almacenamiento óptico adecuado. El almacenamiento masivo
almacena el sistema operativo (O/S) 337 y los programas de
aplicación 120; éstos últimos conteniendo de manera ilustrativa un
programa de cliente 130 (véase la figura 2) que incorpora nuestra
técnica inventiva. El O/S 337, mostrado en la figura 3, puede
llevarse a cabo mediante cualquier sistema operativo convencional,
tal como el sistema operativo WTNDOWS NT ("WINDOWS NT" es una
marca registrada de Microsoft Corporation de Redmond, Washington).
Dado esto, no trataremos ningún componente de O/S 337 ya que todos
ellos no son pertinentes. Baste decir, que el programa cliente,
siendo uno de los programas de aplicación 120, se ejecuta bajo el
control del O/S.
De manera ventajosa, nuestra técnica inventiva
presente, cuando se incluye para su uso dentro de módulos de
encriptado y desencriptado criptográficos, ventajosamente ahorra
tiempo de procesado con lo que se aumenta la capacidad de procesado
tanto del ordenador cliente 100 como del ordenador servidor 210
(véase la figura 2).
Como se muestra en la figura 3, la información
entrante puede surgir de dos fuentes externas ilustrativas:
información facilitada por la red, por ejemplo, desde Internet y/o
otra facilidad conectada a la red, a través de la conexión de red
140 a la interfaz de comunicaciones 350, o desde una fuente de
entrada dedicada, a través de un camino o caminos 310, a las
interfaces de entrada 320. La entrada dedicada puede originarse
desde una amplia variedad fuentes, por ejemplo, una base de datos
externa. Además, la información de entrada, en forma de ficheros o
el contenido específico de los mismos, también puede proporcionarse
mediante la inserción de un disquete que contenga la información
dentro de la unidad de disco 334 desde la que el ordenador 100, bajo
el control del usuario, accederá y leerá la información del
disquete. Las interfaces de entrada 320 contienen la circuitería
apropiada para proporcionar las conexiones eléctricas necesarias y
correspondientes requeridas para conectar físicamente y unir cada
fuente de información de entrada dedicada diferente al sistema de
ordenador 100. Bajo el control del sistema operativo, los programas
de aplicación 120 intercambian órdenes y datos con las fuentes
externas, a través de la conexión de red 140 o a través del camino o
caminos 310, para transmitir y recibir información típicamente
solicitada por un usuario durante la ejecución del programa.
Las interfaces de entrada 320 también conectan
eléctricamente y unen los dispositivos de entrada de usuario 395,
tales como un teclado y un ratón, al sistema de ordenador 100. La
pantalla 380, tal como un monitor en color convencional, y una
impresora 385, tal como una impresora láser convencional, se
conectan a través de los terminales 363 y 367, respectivamente, a
las interfaces de salida 360. Las interfaces de salida proporcionan
la circuitería requerida para conectar eléctricamente y unir la
pantalla y la impresora al sistema de ordenador. Como uno puede
apreciar, nuestra presente técnica criptográfica inventiva puede
funcionar con cualquier tipo de información digital sin tener en
cuenta las modalidades mediante las que el ordenador cliente 100
obtendrá, almacenará y/o comunicará esa información.
Además, como los componentes hardware específicos
del sistema de ordenador 100 así como todos los aspectos del
software almacenado dentro de la memoria 335, aparte de los módulos
que llevan a cabo la presente invención, son convencionales y bien
conocidos, no se tratarán con detalle adicional. Generalmente
hablando, el ordenador 205 tiene una arquitectura que es
completamente similar a la del ordenador cliente 100.
Las técnicas criptográficas convencionales
frecuentemente emplean, como primitiva, una suma de comprobación que
requiere el cálculo de mod (M), donde M es un número primo grande,
como, por ejemplo, 2^{31} - 1 o mayor.
Desafortunadamente, una operación mod (M)
requiere del orden de al menos de 10 a 15 ciclos de máquina, si no
más (en base al valor del módulo M), para el cálculo. Esta función
es calculada de manera repetida durante las operaciones
convencionales tanto de encriptado como de desencriptado. Como tal,
si dicha técnica fuese llevada a cabo sobre un dispositivo con
capacidad de procesado significativa, tal como un PC o una estación
de trabajo, los cálculos de mod(M) reducirían la capacidad de
procesamiento global, quizás de forma notoria. Sin embargo, esta
sobrecarga de cálculo puede ser intolerable en dispositivos que
tienen una capacidad de procesado limitada y así se excluye el uso
de esta técnica criptográfica en esos dispositivos - donde su uso
pudiera ser completamente beneficioso.
Reconociendo esta deficiencia en la técnica,
hemos desarrollado una técnica para llevar a cabo una suma de
comprobación que de manera ventajosa no requiere una operación mod
(M).
Nuestra técnica implementa la suma de
comprobación como una serie relativamente sencilla de operaciones
elementales de registro. Estas operaciones incluyen las
multiplicaciones mod 2^{n}, las manipulaciones de orden (siendo
una operación que cambia el orden de bits en un bloque, tal como,
por ejemplo, las permutaciones de octeto o de palabra) y las sumas -
todos los cuales son extremadamente sencillos para implementar y que
requieren muy pocos ciclos de procesado para su ejecución. Las
operaciones usadas en la primitiva también pueden ser canalizadas de
manera efectiva. Así, el uso de la primitiva basado en nuestra
invención, particularmente si es canalizada, puede reducir de manera
significativa el tiempo de procesado sobre el que convencionalmente
se requiere para el cálculo de los distintos parámetros
criptográficos, tales como, por ejemplo, un código de autenticación
de mensaje (MAC), o para implementar un cifrado de flujo. Creemos
que nuestra técnica inventiva también puede incorporarse
ventajosamente en ciertos cifrados para mejorar la seguridad de esos
cifrados frente a ciertos ataques de texto simple - texto
cifrado.
Comenzamos con las siguientes definiciones
matemáticas: F(x) = \theta, y un superíndice "S", es
decir, como en x^{S}, denota una operación de permutación de
octeto o de permutación de palabra.
Para apartarse ligeramente, las figuras 6A y 6B
representan las operaciones de permutación de palabra y de
permutación de octeto, respectivamente. Dado un bloque de n bits 610
(ilustrativamente 32 bits de longitud) con dos palabras de 16 bits
(por ejemplo, las palabras 613 y 617 también etiquetadas como L y R
para "izquierda" y "derecha", respectivamente), una
operación de permutación de palabra, simbolizada por la línea 620,
produce un bloque de n bits 630 con estas palabras permutadas de
posición (es decir, con las palabras 633 y 637 que son idénticas a
las palabras 617 y 613, respectivamente). Dicha operación se puede
implementar en un ciclo de procesado simplemente intercambiando las
palabras individuales como se muestra por medio de la flecha 625.
Dado el bloque de n bits 650 (también ilustrativamente de 32 bits de
longitud) con octetos independientes de ocho bits 652, 654, 656 y
658 (también etiquetados como los octetos A, B, C, B,
respectivamente), una operación de permutación de octeto simbolizado
mediante la línea 660, produce un bloque de n bits 670 que tiene
estos cuatro octetos invertidos en la secuencia (es decir, con los
octetos 672, 674, 676 y 678 siendo idénticos a los octetos 658, 656,
654 y 652, respectivamente). La operación de permutación de octetos
se puede llevar a cabo en un ciclo de procesado mediante el
intercambio de los octetos individuales en paralelo, como se muestra
mediante las flechas 665.
Con estas definiciones en mente, una versión no
reversible de la primitiva F(x) que implementa la suma de
comprobación, específicamente f(x) = a\chi + b
mod(M), mediante cálculo, de acuerdo con nuestras enseñanzas
inventivas, las ecuaciones (1) a la (5) de la siguiente manera en la
secuencia:
- x^{S} \longleftarrow permutación de palabra (x)
- (1)
- y \longleftarrow Ax + Bx^{S} mod (2^{n})
- (2)
- y^{S} \longleftarrow permutación de palabra (y)
- (3)
- z \longleftarrow Cy^{S} + yD mod (2^{n})
- (4)
- \theta\longleftarrow z + y^{S} E mod (2^{n})
- (5)
- donde:
- los coeficientes A, B, C, D y E son cada uno de ellos un entero aleatorio impar menor o igual a 2^{n}; y \theta es una cadena de n bits.
Como puede verse, estas ecuaciones están
implementadas usando operaciones elementales de registro, es decir,
manipulaciones del orden (por ejemplo, permutaciones de palabra o de
octeto, sumas y multiplicaciones mod(2^{n})). Por
consiguiente, estas operaciones se pueden realizar usando
relativamente pocos ciclos de procesado - en realidad y
considerablemente menos de 10 a 15 ciclos requeridos para realizar
una operación mod (M). Aunque hemos mostrado las ecuaciones (1) y
(3) usando operaciones de permutación de palabra, se podrían usar en
su lugar las operaciones de permutación de octeto (o posiblemente
otras manipulaciones que cambian el orden de bit). Para el uso en la
generación de un MAC u otros distintos términos criptográficos, los
valores de coeficiente A, B, C, D y E son "valores secretos",
es decir, no revelados públicamente.
Una versión reversible de la primitiva
F(x) que implementa f(x), también de acuerdo con
nuestras enseñanzas inventivas, mediante las ecuaciones (6) - (15)
es de la siguiente manera:
- y \longleftarrow Ax mod (2^{n})
- (6)
- y^{S} \longleftarrow permutación de palabra (y)
- (7)
- z \longleftarrow By^{S} mod (2^{n})
- (8)
- z^{S} \longleftarrow permutación de palabra (z)
- (9)
- v \longleftarrow Cz^{S} mod (2^{n})
- (10)
- v^{S} \longleftarrow permutación de palabra (v)
- (11)
- w \longleftarrow Dv^{S} mod (2^{n})
- (12)
- w^{2} \longleftarrow permutación de palabra (w)
- (13)
- t \longleftarrow Ew^{S} mod (2^{n})
- (14)
- \theta\longleftarrow t + Ly^{2} mod (2^{n})
- (15)
- donde:
- los coeficientes A, B, C, D y E son cada un de ellos un entero aleatorio impar menor o igual a 2^{n}; y
- \quad
- L es un entero aleatorio menor o igual a 2^{n}.
Aquí, también, al generar un MAC o varios otros
términos criptográficos, los valores de coeficiente A, B, C, D, E y
G son todos ellos valores "secretos". De manera alternativa,
las ecuaciones (6) a la (12) podrían usarse para implementar la
primitiva, con F(x) = w. Además, se podría usar una operación
"inversa" (en la que todos los bits de un bloque están
completamente invertidos en la secuencia) - que es otro tipo de
manipulación del orden - en lugar de una permutación de octeto o de
palabra -. Por ejemplo, podría implementarse la primitiva
F(x) para una forma reversible de f(x), de acuerdo con
nuestra invención, mediante las ecuaciones (16) a la (19) de la
siguiente manera:
- y \longleftarrow Hx mod (2^{n})
- (16)
- z \longleftarrow inverso (y)
- (17)
- s \longleftarrow Jz mod (2^{n})
- (18)
- \theta\longleftarrow s + K mod (2^{n})
- (19)
- donde:
- los coeficientes H, J, y K son cada uno de ellos un entero aleatorio menor o igual a 2^{n}.
Si esta primitiva fuese usada para generar un MAC
u otro término criptográfico, entonces los coeficientes H, J y K
serían valores "secretos". Como una operación inversa es
relativamente lenta en comparación con una operación de permutación
de octeto o de palabra, se prefiere el uso de las primitivas dadas
por las ecuaciones (6) a la (12) ó (6) a la (15) anteriores sobre
las primitivas dadas por las ecuaciones (16) a la (19).
Claramente, en base a la descripción anterior,
aquéllos que sean expertos en la técnica pueden idear rápidamente
varias otras primitivas. F(x), que proporciona
características criptográficas equivalentes para f(x) = ax +
b mod(M) y que utiliza, de acuerdo con nuestra invención,
multiplicaciones mod 2^{n}, manipulaciones del orden y sumas -
pero no una operación mod (M) - y así pueden sustituir por las
primitivas específicas descritas anteriormente.
Como se ha tratado anteriormente, se puede usar
una primitiva generalizada basada en nuestra técnica inventiva para
generar un MAC. Para hacer esto, se seleccionan una serie de
primitivas F_{1}(x), F_{2}(x), ...,
F_{p}(x), para la función f(x), que son no
reversibles y de la misma forma que la denotada anteriormente (como
F(x)), pero con diferentes valores para los correspondientes
coeficientes "secretos", es decir, si F_{1}(x) tiene
coeficientes "secretos" A, B, C, D y E, entonces
F_{2}(x) tiene los coeficientes "secretos" a, b, c, d,
e, y así sucesivamente. Después de esto, dada una secuencia de
entrada X = X_{1}, X_{2}, ..., X_{N} de cadenas de n bits, los
correspondientes valores de salida (resultados intermedios)
Y = y_{1}, y_{2}, ..., y_{N}, se calculan de acuerdo con las ecuaciones (20) a la (25) de la siguiente manera usando las sucesivas de las p primitivas (donde p < n) para los correspondientes valores de entrada sucesivos x_{i}:
Y = y_{1}, y_{2}, ..., y_{N}, se calculan de acuerdo con las ecuaciones (20) a la (25) de la siguiente manera usando las sucesivas de las p primitivas (donde p < n) para los correspondientes valores de entrada sucesivos x_{i}:
- y_{1} = F_{1}(x_{1})
- (20)
- y_{2} = F_{2}(x_{2} + y_{1})
- (21)
- y_{3} = F_{3}(x_{3} + y_{2})
- (22)
- y_{p} = F_{p}(x_{p} + y_{p-1})
- (23)
\hskip65mm\cdot
\hskip65mm\cdot
\hskip65mm\cdot
- y_{p+1} = F_{1}(y_{p} + x_{p+1})
- (24)
- y_{p+2} = F_{2}(y_{p+1} + x_{p+2})
- (25)
\hskip65mm\cdot
\hskip65mm\cdot
\hskip65mm\cdot
El MAC puede formarse entonces, de acuerdo con la
ecuación (26) como una función de los resultados intermedios de la
siguiente manera:
- MAC = \left(y_{N}, \sum\limits^{N}_{i = 1}y_{i}\right)
- (26)
Por seguridad añadida, la ecuación (25) se puede
modificar introduciendo una permutación secreta o aleatoria
(\gamma_{i}) para cada término de y_{i} de la suma, como se
muestra mediante la ecuación (27) de la siguiente manera:
- MAC = \left(y_{N}, \sum\limits^{N}_{i = 1}\gamma_{i}y_{i}\right)
- (27)
- donde:
- \gammai se ha seleccionado de manera aleatoria o es un valor "secreto" predefinido
- dentro de un intervalo de \pmk inclusive, es decir, el k inclusivo, es decir, \gamma_{i} \in (k, k--1, k--2, ...., 0, -1, -2., -k), donde k es un entero predefinido. Por simplicidad, cada \gammai puede fijarse al valor +1 o -1 con una variación predefinida aleatoria o pseudoaleatoria o "secreta" entre todos los valores de \gammai.
Aunque las ecuaciones (20) a la (25) utilicen una
serie repetitiva de las mismas p primitivas, se pueden usar en su
lugar diferentes de tales series. Cada serie de funciones producirá
un valor de cálculo de clave de salida independiente y que después
pueden concatenarse juntos para formar un MAC o una salida
individual, y, de cada una de las primitivas se pueden sumar
mediante el uso de la ecuación (26) para producir el valor MAC.
Además, se podría ejecutar una serie con encadenamiento hacia
adelante, como se indica mediante, por ejemplo, las ecuaciones (20)
a la (23) . Una siguiente ejecución de la misma serie, como se
indica mediante, por ejemplo, las ecuaciones (24) y (25), o una
siguiente ejecución de una serie diferente se podría ejecutar con
encadenamiento "hacia atrás". Cuando se use el encadenamiento
hacia atrás, se podrían aplicar los valores de entrada asociados en
un orden invertido, con respecto a los valores usados con el
encadenamiento hacia adelante, a las primitivas individuales de esa
serie.
Cuando se use nuestra técnica inventiva para
calcular una suma de comprobación, los cálculos son muy similares,
si no idénticos, a aquéllos usados para calcular un MAC pero con
todos los valores de coeficiente, así como todos los valores
\gammai, si se usan, siendo públicamente conocidos.
Con lo anterior en mente, volveremos ahora a
describir el software necesario para generar un MAC para su uso por
el procedimiento de encriptado 20 y de acuerdo con una primitiva
que implementa nuestra técnica inventiva.
La figura 4 representa un diagrama de flujo de
alto nivel del procedimiento de generación de MAC 400 que se usa en
el procedimiento 5 mostrado en la figura 1 para producir un MAC.
Esta rutina implementa las ecuaciones (20) a la (25) como se ha
tratado anteriormente, y supone que esas primitivas F(x) y
G(x) han sido seleccionadas completamente.
En particular, al entrar en la rutina 410,
durante la ejecución del procedimiento de encriptado 20 o del
procedimiento de desencriptado 50, la ejecución primero procede
como se muestra en la figura 4, con el bloque 410. Este bloque
inicializa un puntero (i) a uno y una variable de suma (y_{S}) a
cero. Después de esto, la ejecución entra en un bucle formado por
los bloques 420, 430, 440, y 450 para calcular los valores sucesivos
de salida, y_{i}, para cada bloque de texto simple de entrada
(P_{i}) como entrada, y para acumular éstos valores de salida en
la variable de suma, y_{S}.
De manera específica, al entrar en este bucle, la
ejecución procede en primer lugar con el bloque 420 para calcular el
valor de salida \gammai igualando F(P_{1}). Una vez que
esto ocurre, la ejecución procede con el procedimiento de cálculo de
la suma 430 que a través de bloque 435 simplemente suma el valor de
salida \gammai a la variable de suma, y_{S}. Una vez que esto
ocurre, la ejecución procede con el bloque de decisión 440 para
determinar si todos los N bloques del mensaje de texto simple de
entrada P se han procesado, es decir, si un valor actual del puntero
i es igual a N. En el caso de que cualquiera de dichos bloques
permanezca, es decir, el valor actual de i sea menor que N, entonces
el bloque de decisión 440 encamina la ejecución a través del camino
NO 443, al bloque 450. Este último bloque incrementa el valor del
puntero i en uno y entonces dirige la ejecución, a través del camino
de realimentación 455, de vuelta al bloque 420 para calcular el
siguiente valor de salida sucesivo, y así en adelante. En este
punto, los cálculos realizados por el bloque 420 dependerán de si,
para cualquier iteración dada a través de bloque 420, el valor de i
es par o impar; alternando así entre las primitivas F(x) y
G(x) para sucesivos i.
Una vez que se han calculado y se han sumado
todos los valores de la salida, el bloque de decisión 440 encamina
la ejecución a través del camino SÍ 447, al bloque 460. Este último
bloque simplemente forma el MAC mediante la concatenación del valor
de y_{N} con un valor actual de la variable de suma y
proporcionando como salida, un valor de 64 bits resultante como el
MAC. Una vez que esto ocurre, la ejecución sale de la rutina
400.
La figura 5 representa un diagrama de flujo de
alto nivel el procedimiento de calculo de suma alternativo 500 que
se puede usar en lugar del procedimiento de cálculo de suma 430 que
una parte del procedimiento de generación del MAC 400. El
procedimiento 500 implementa la ecuación (26) anterior.
En particular, al entrar en el procedimiento 500,
la ejecución procede primero con el bloque 510 que fija un valor de
\gammai de manera apropiada. Como se ha hecho notar anteriormente,
este valor puede aleatorio, pseudoaleatorio o predefinido dentro de
un intervalo de \pmk (aunque los valores de \pm1 son típicamente
usados). Una vez que este se ha fijado este valor, la ejecución pasa
al bloque 520 que multiplica el valor de salida actual y_{i} por
el valor correspondiente de \gammai y suma un valor resultante en
la variable de suma y_{S}. Una vez que esto ocurre, la ejecución
entonces sale del procedimiento 500.
Claramente, aquéllos que sean expertos en la
técnica comprenderán que aunque el MAC (o suma de comprobación) ha
sido descrito como de 64 bits de longitud, es decir, dos bloques de
32 bits, se pueden usar en su lugar los MAC (y las sumas de
comprobación) de otros tamaños de bit (y de bloque), tales como un
solo bloque de 32 bits o de más de 64 bits de longitud (pero de
tamaño dividido en bloques enteros). Los MAC más grandes
proporcionan niveles mayores de seguridad, hasta el punto en que
estén garantizados, aunque a un costo probable de tiempo de
procesado aumentado para producir el MAC; y, cuando se requiera,
para encriptarlo y desencriptarlo.
Aunque se ha mostrado y se ha descrito en detalle
en este documento una realización detallada, con un número de
variaciones que incorporan las enseñanzas de la presente invención,
aquéllos que sean expertos en la técnica podrán idear rápidamente
muchas otras realizaciones y aplicaciones de la presente invención
que todavía utilizan estas enseñanzas.
Claims (21)
1. Un procedimiento, para el uso en un
dispositivo (100) para producir un parámetro criptográfico a partir
de una pluralidad de N bloques sucesivos, x_{1}, x_{2}, ...,
x_{N} de texto simple digital de entrada (7);
dicho procedimiento implementa una primitiva
criptográfica, F(x), que es equivalente a la función
criptográfica predefinida f(x) = ax + b mod (M), en la que a
un y b son números enteros predefinidos y M es un número primo
predefinido; y
dicho procedimiento comprende un paso para
generar dicho parámetro criptográfico mediante el procesado de los
mencionados bloques de texto simple (7); con lo que
dicho dispositivo (100) comprende:
un procesador (340), y
una memoria (330) conectada al mencionado
procesador (340), con lo que dicha memoria (330) es adaptada para
almacenar un programa de cálculo de instrucciones ejecutables por un
ordenador, con lo que dicho paso de procedimiento para generar
dicho parámetro criptográfico es realizado por el mencionado
procesador (340) e implementado a través de las mencionadas
instrucciones ejecutables por un ordenador;
estando dicho procedimiento caracterizado
porque
dicha primitiva criptográfica F(x) usa una
secuencia predefinida de operaciones de manipulaciones del orden, de
operaciones de sumas y de multiplicaciones mod (2^{n}) sin
realizar los cálculos mod(M) donde n es un entero
predefinido;
dicho procedimiento que comprende adicionalmente
un paso para generar una pluralidad de resultados intermedios,
y_{i}, con N \geq i \geq 1, de acuerdo con las siguientes
ecuaciones:
- \quad
- y_{1} = F_{1}(x_{1})
- \quad
- y_{2} = F_{2}(x_{2} + y_{1})
- \quad
- y_{3} = F_{3}(x_{3} + y_{2})
\hskip65mm\cdot
\hskip65mm\cdot
\hskip65mm\cdot
- \quad
- y_{p} = F_{p}(x_{p} + y_{p-1})
- \quad
- y_{p+1} = G_{1}(y_{p} + x_{p+1})
- \quad
- y_{p+2} = G_{2}(y_{p+1} + x_{p+2})
\hskip65mm\cdot
\hskip65mm\cdot
\hskip65mm\cdot
- \quad
- y_{N} = G_{N-P}(y_{N-1} + x_{N})
en las que F_{1}(x), F_{2}(x),
..., F_{P}(x), G_{1}(x), G_{2}(x), ...,
son primitivas de la misma forma que dicha primitiva criptográfica
F(x), donde p < N, y
dicho paso de generación del mencionado parámetro
criptográfico comprende la generación de dicho parámetro a partir de
los resultados intermedios en respuesta a una función predefinida de
los resultados intermedios.
2. El procedimiento de acuerdo con la
reivindicación 1, caracterizado porque dichas primitivas
G_{1}(x), G_{2}(x), ..., son las mencionadas
primitivas F_{1}(x), F_{2}(x), ...,
F_{p}(x).
3. El procedimiento de acuerdo con la
reivindicación 1, caracterizado porque dicho paso de
generación de una pluralidad de resultados intermedios, y_{i}, con
N \geq i \geq1 usa al menos dos conjuntos diferentes de
primitivas, en el que dichas primitivas F_{1}(x),
F_{2}(x), ..., F_{p}(x) son las primitivas de un
primer conjunto de primitivas, y dichas primitivas
G_{1}(x), G_{2}(x), ..., son las primitivas de un
segundo conjunto de primitivas.
4. El procedimiento de acuerdo con una cualquiera
de las reivindicaciones de 1 a 3, caracterizado porque cada
una de las mencionadas manipulaciones del orden es una operación
predefinida que cambia el orden de los bits de un bloque de datos
(610, 650) en el que se está realizando dicha manipulación del
orden.
5. El procedimiento de acuerdo con una cualquiera
de las reivindicaciones 1 a 4, caracterizado porque dicho
paso de generación de dicho parámetro criptográfico comprende además
un paso (460) para producir el mencionado parámetro como una
concatenación de los valores tanto de los resultados intermedios
y_{n} como de la suma de los mencionados resultados
intermedios.
6. El procedimiento de acuerdo con una cualquiera
de las reivindicaciones 1 a 5, caracterizado porque dicho
paso de generar el mencionado parámetro criptográfico comprende
además un paso para producir dicho parámetro como una concatenación
tanto de los valores del resultado intermedio y_{N} como de una
suma.
\sum\limits^{N}_{i=1}\gamma_{i}y_{i},
donde para cada i, \gammai tiene
un valor predefinido o aleatorio dentro de un intervalo de \pmk
inclusive, mediante el que k es un número entero
predefinido.
7. El procedimiento de acuerdo con una cualquiera
de las reivindicaciones 1 a 6, caracterizado porque dicho
procedimiento comprende además la implementación, realizada por
dicho procesador (340) e implementada en respuesta a las
instrucciones ejecutables, dicha primitiva F(x) de acuerdo
con las siguientes ecuaciones:
- \quad
- x^{S} \longleftarrow manipulación de orden (x)
- \quad
- y \longleftarrow Ax + Bx^{S} mod (2^{n})
- \quad
- y^{S} \longleftarrow manipulación de orden (y)
- \quad
- z \longleftarrow Cy^{S} + yD mod (2^{n})
- \quad
- \theta\longleftarrow z + y^{S}E mod (2^{n});
en las que dichos coeficientes A, B, C, D y E son
cada uno de ellos un número entero aleatorio impar menor o igual a
2^{n}, y \theta es una cadena de salida; y
los correspondientes coeficientes A, B, C, D y E
de al menos dos de la pluralidad de primitivas F_{1}(x),
F_{2}(X), ..., F_{p}(x) son respectivamente
valores diferentes.
8. El procedimiento de acuerdo con la
reivindicación 7, caracterizado porque dichos coeficientes A,
B, C, D y E para la mencionada pluralidad de primitivas
F_{1}(x), F_{2}(X), ..., F_{p}(x), son
secretos, y se forma un código de autenticación de mensaje a partir
de los parámetros criptográficos producidos para la mencionada
pluralidad de N bloques sucesivos.
9. El procedimiento de acuerdo con la
reivindicación 7, caracterizado porque dichos coeficientes A,
B, C, D y E para la mencionada pluralidad de primitivas
F_{1}(x), F_{2}(X), ..., F_{p}(x), son
públicamente conocidos, y dicho parámetro criptográfico es una suma
de comprobación.
10. El procedimiento de acuerdo con una
cualquiera de las reivindicaciones 1 a 9 caracterizado porque
cada una de las mencionadas manipulaciones del orden es una
permutación de octeto (660), una permutación de palabra (620) o una
operación inversa.
11. Un medio legible por un ordenador que tiene
instrucciones ejecutables por un ordenador almacenadas en el mismo
adaptadas para realizar los pasos del procedimiento de cualquiera de
las reivindicaciones de 1 a 10.
12. Un aparato (100) adaptado para producir un
parámetro criptográfico a partir de una pluralidad de N bloques
sucesivos, x_{1}, x_{2}, ..., x_{N} de texto simple digital de
entrada (7);
dicho aparato (100) está adaptado para
implementar una primitiva criptográfica, F(x) mediante lo
cual dicha primitiva criptográfica F(x) es equivalente a la
función criptográfica predefinida f(x) = ax + b mod (M), en
la que a y b son números enteros predefinidos y M es un número primo
predefinido; y
para generar dicho parámetro criptográfico
mediante el procesado de los mencionados bloques de texto simple
(7);
comprendiendo el mencionado aparato (100):
- un procesador (340), y
- una memoria (330) conectada a dicho procesador (340), mediante el que dicha memoria (330) es adaptada para almacenar un programa de cálculo de instrucciones ejecutables por un ordenador, mediante la que la mencionada generación de dichos parámetros criptográficos se realiza por medio del mencionado procesador (340) y se implementa en respuesta a las mencionadas instrucciones ejecutables;
dicho aparato (100) caracterizado
porque
dicha primitiva criptográfica F(x) usa una
secuencia predefinida de manipulaciones de orden, sumas y
multiplicaciones mod (2^{n}) sin realizar cálculos mod (M), donde
n es un entero predefinido;
dicho aparato (100) estando adaptado además para
generar una pluralidad de resultados intermedios, y_{i}, con N
\geq i \geq 1, de acuerdo con las siguientes ecuaciones:
- \quad
- y_{1} = F_{1}(x_{1})
- \quad
- y_{2} = F_{2}(x_{2} + y_{1})
- \quad
- y_{3} = F_{3}(x_{3} + y_{2})
\hskip65mm\cdot
\hskip65mm\cdot
\hskip65mm\cdot
- \quad
- y_{p} = F_{p}(x_{p} + y_{p-1})
- \quad
- y_{p+1} = G_{1}(y_{p} + x_{p+1})
- \quad
- y_{p+2} = G_{2}(y_{p+1} + x_{p+2})
\hskip65mm\cdot
\hskip65mm\cdot
\hskip65mm\cdot
- \quad
- y_{N} = G_{N-P}(y_{N-1} + x_{N})
en las que F_{1}(x), F_{2}(x),
..., F_{P}(x), G_{1}(x), G_{2}(x), ...,
son primitivas de la misma forma que dicha primitiva criptográfica
F(x), donde p < N, y
dicho paso de generación del mencionado parámetro
criptográfico comprende la generación de dicho parámetro a partir de
los resultados intermedios en respuesta a una función predefinida de
los resultados intermedios.
13. El aparato (100) de acuerdo con la
reivindicación 12, caracterizado porque dichas primitivas
G_{1}(x), G_{2}(x), ..., son las mencionadas
primitivas F_{1}(x), F_{2}(x), ...,
F_{p}(x).
14. El aparato (100) de acuerdo con la
reivindicación 12, caracterizado porque dicha generación de
una pluralidad de resultados intermedios, y_{i}, con N \geq i
\geq 1 usa al menos dos conjuntos diferentes de primitivas, en el
que dichas primitivas F_{1}(x), F_{2}(x), ...,
F_{p}(x) son las primitivas de un primer conjunto de
primitivas, y dichas primitivas G_{1}(x),
G_{2}(x), ..., son las primitivas de un segundo conjunto de
primitivas.
15. El aparato (100) de acuerdo con una
cualquiera de las reivindicaciones de la 12 a la 14,
caracterizado porque cada una de las mencionadas
manipulaciones del orden es una operación predefinida que cambia el
orden de los bits de un bloque de datos (610, 650) en el que se está
realizando dicha manipulación del orden.
16. El aparato (100) de acuerdo con una
cualquiera de las reivindicaciones de la 12 a la 15,
caracterizado porque dicho paso de generación de dicho
parámetro criptográfico comprende la producción del mencionado
parámetro como una concatenación de los valores tanto de los
resultados intermedios y_{N} como de la suma de los mencionados
resultados intermedios.
17. El aparato (100) de acuerdo con una
cualquiera de las reivindicaciones de la 12 a la 16,
caracterizado porque dicha generación del mencionado
parámetro criptográfico comprende además la producción de dicho
parámetro como una concatenación tanto de los valores del resultado
intermedio y_{N} como de una suma
\sum\limits^{N}_{i=1}\gamma_{i}y_{i},
en la que para cada i, \gammai
tiene un valor predefinido o aleatorio dentro de un intervalo de
\pmk inclusive, mediante lo cual k es un número entero
predefinido.
18. El aparato (100) de acuerdo con una
cualquiera de las reivindicaciones de la 12 a la 17,
caracterizado porque dicho aparato (100) está además adaptado
para implementar, realizado por medio de dicho procesador (340) e
implementado en respuesta a las mencionadas instrucciones
ejecutables, dicha primitiva F(x) de acuerdo con las
siguientes ecuaciones:
- \quad
- x^{S} \longleftarrow manipulación de orden (x)
- \quad
- y \longleftarrow Ax + Bx^{S} mod (2^{n})
- \quad
- y^{S} \longleftarrow manipulación de orden (y)
- \quad
- z \longleftarrow Cy^{S} + yD mod (2^{n})
- \quad
- \theta\longleftarrow z + y^{S}E mod (2^{n});
en las que dichos coeficientes A, B, C, D y E son
cada uno de ellos un número entero aleatorio impar menor o igual a
2^{n}, y \theta es una cadena de salida; y
los correspondientes coeficientes A, B, C, D y E
de al menos dos de dicha pluralidad de primitivas F_{1}(x),
F_{2}(X), ..., F_{p}(x) son respectivamente
valores diferentes.
19. El aparato (100) de acuerdo con la
reivindicación 18, caracterizado porque dichos coeficientes
A, B, C, D y E para la mencionada pluralidad de primitivas
F_{1}(x), F_{2}(X), ..., F_{p}(x), son
secretos, y se forma un código de autenticación de mensaje a partir
de los parámetros criptográficos producidos para la mencionada
pluralidad de N bloques sucesivos.
20. El aparato (100) de acuerdo con la
reivindicación 18, caracterizado porque dichos coeficientes
A, B, C, D y E para la mencionada pluralidad de primitivas
F_{1}(x), F_{2}(X), ..., F_{p}(x), son
públicamente conocidos, y dicho parámetro criptográfico es una suma
de comprobación.
21. El aparato (100) de acuerdo con una
cualquiera de las reivindicaciones de la 12 a la 20
caracterizado porque cada una de las mencionadas
manipulaciones del orden es una permutación de octeto (660), una
permutación de palabra (620) o una operación inversa.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/329,138 US6483918B2 (en) | 1999-06-09 | 1999-06-09 | Technique for producing a parameter, such as a checksum, through a primitive that uses elementary register operations |
US329138 | 1999-06-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2235946T3 true ES2235946T3 (es) | 2005-07-16 |
Family
ID=23284016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES00963254T Expired - Lifetime ES2235946T3 (es) | 1999-06-09 | 2000-06-09 | Una tecnica para producir un parametro, tal como una suma de comprobacion, mediante una primitiva que usa operaciones elementales de registro. |
Country Status (10)
Country | Link |
---|---|
US (1) | US6483918B2 (es) |
EP (2) | EP1555777B1 (es) |
JP (1) | JP2003501698A (es) |
AT (2) | ATE293262T1 (es) |
AU (1) | AU7469500A (es) |
DE (2) | DE60036499T2 (es) |
DK (1) | DK1208416T3 (es) |
ES (1) | ES2235946T3 (es) |
HK (1) | HK1081021A1 (es) |
WO (1) | WO2000075750A2 (es) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6657625B1 (en) * | 1999-06-09 | 2003-12-02 | Microsoft Corporation | System and method of caching glyphs for display by a remote terminal |
US7676438B2 (en) * | 1999-10-27 | 2010-03-09 | Ncr Corporation | Personal digital assistant as smart card |
US7505046B1 (en) * | 2000-05-02 | 2009-03-17 | Adobe Systems Incorporated | Preserving opaque-like rendering in transparent 2D graphics using knockout groups |
CN1202648C (zh) * | 2002-06-07 | 2005-05-18 | 周颖平 | 用手机短信息进行无线遥控的方法 |
US7502943B2 (en) * | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7519833B2 (en) * | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7900055B2 (en) * | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7539876B2 (en) * | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7536560B2 (en) | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
US7529368B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US8060755B2 (en) * | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US7844053B2 (en) | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7532722B2 (en) * | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7542566B2 (en) * | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7529367B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
US7580038B2 (en) * | 2003-09-30 | 2009-08-25 | Microsoft Corporation | System and method of caching glyphs for display by a remote terminal |
WO2006040682A2 (en) * | 2004-10-13 | 2006-04-20 | Synaptic Laboratories Limited | Process of and apparatus for encoding a digital input |
WO2007073766A1 (en) * | 2005-12-29 | 2007-07-05 | Telecom Italia S.P.A. | A method for communicating entitlement data from a server, related server, client systems and computer program product |
US7930551B2 (en) * | 2006-05-15 | 2011-04-19 | Arris Group, Inc. | Method and system for reusing an MMH function to perform a fast MMH-MAC calculation |
FR2907622A1 (fr) | 2006-10-19 | 2008-04-25 | St Microelectronics Sa | Procede de transmission de donnees utilisant un code d'accuse de reception comportant des bits d'authentification caches |
JP5487966B2 (ja) | 2007-07-03 | 2014-05-14 | 日本電気株式会社 | データ暗号化/復号化処理方法およびデータ処理装置 |
US8161166B2 (en) * | 2008-01-15 | 2012-04-17 | Adobe Systems Incorporated | Information communication using numerical residuals |
US8082320B1 (en) * | 2008-04-09 | 2011-12-20 | Adobe Systems Incorporated | Communicating supplemental information over a block erasure channel |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0720778A (ja) * | 1993-07-02 | 1995-01-24 | Fujitsu Ltd | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
US5724428A (en) | 1995-11-01 | 1998-03-03 | Rsa Data Security, Inc. | Block encryption algorithm with data-dependent rotations |
JP3013774B2 (ja) * | 1996-03-13 | 2000-02-28 | 日本電気株式会社 | 循環演算にもとづく暗号化装置 |
JP3024549B2 (ja) * | 1996-04-26 | 2000-03-21 | 日本電気株式会社 | 循環演算にもとづく暗号文の復号化方法および装置 |
JPH118616A (ja) * | 1997-06-17 | 1999-01-12 | Dainippon Printing Co Ltd | 故障利用攻撃対応icカード |
US6570988B1 (en) * | 1999-06-09 | 2003-05-27 | Microsoft Corporation | Simple technique for implementing a cryptographic primitive using elementary register operations |
-
1999
- 1999-06-09 US US09/329,138 patent/US6483918B2/en not_active Expired - Lifetime
-
2000
- 2000-06-09 DE DE60036499T patent/DE60036499T2/de not_active Expired - Lifetime
- 2000-06-09 DE DE60019432T patent/DE60019432T2/de not_active Expired - Lifetime
- 2000-06-09 EP EP05007754A patent/EP1555777B1/en not_active Expired - Lifetime
- 2000-06-09 JP JP2001501960A patent/JP2003501698A/ja active Pending
- 2000-06-09 AT AT00963254T patent/ATE293262T1/de active
- 2000-06-09 AT AT05007754T patent/ATE373906T1/de not_active IP Right Cessation
- 2000-06-09 WO PCT/US2000/015871 patent/WO2000075750A2/en active IP Right Grant
- 2000-06-09 AU AU74695/00A patent/AU7469500A/en not_active Abandoned
- 2000-06-09 DK DK00963254T patent/DK1208416T3/da active
- 2000-06-09 EP EP00963254A patent/EP1208416B1/en not_active Expired - Lifetime
- 2000-06-09 ES ES00963254T patent/ES2235946T3/es not_active Expired - Lifetime
-
2006
- 2006-01-18 HK HK06100797A patent/HK1081021A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HK1081021A1 (en) | 2006-05-04 |
EP1555777A2 (en) | 2005-07-20 |
US6483918B2 (en) | 2002-11-19 |
DK1208416T3 (da) | 2005-07-11 |
JP2003501698A (ja) | 2003-01-14 |
DE60019432T2 (de) | 2005-09-01 |
WO2000075750A3 (en) | 2001-02-15 |
WO2000075750A2 (en) | 2000-12-14 |
ATE293262T1 (de) | 2005-04-15 |
US20020110239A1 (en) | 2002-08-15 |
EP1208416B1 (en) | 2005-04-13 |
DE60036499T2 (de) | 2008-01-10 |
EP1208416A4 (en) | 2003-03-12 |
AU7469500A (en) | 2000-12-28 |
EP1208416A2 (en) | 2002-05-29 |
DE60019432D1 (de) | 2005-05-19 |
ATE373906T1 (de) | 2007-10-15 |
DE60036499D1 (de) | 2007-10-31 |
EP1555777A3 (en) | 2005-09-14 |
EP1555777B1 (en) | 2007-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2235946T3 (es) | Una tecnica para producir un parametro, tal como una suma de comprobacion, mediante una primitiva que usa operaciones elementales de registro. | |
JP4559679B2 (ja) | 基本的なレジスタ演算を用いた暗号プリミティブのインプリメント | |
US10021085B1 (en) | Encryption and decryption techniques using shuffle function | |
US6128737A (en) | Method and apparatus for producing a message authentication code in a cipher block chaining operation by using linear combinations of an encryption key | |
Balfanz et al. | {Hand-Held} Computers Can Be Better Smart Cards | |
CN108292402A (zh) | 用于信息的安全交换的公共秘密的确定和层级确定性密钥 | |
CN107251476A (zh) | 保密通信管理 | |
CN106664206A (zh) | 用于已认证的通信的高效方法 | |
JP7328969B2 (ja) | 暗号システムおよび方法 | |
US20230254122A1 (en) | Secret material exchange and authentication cryptography operations | |
US20220224532A1 (en) | Systems and Methods for Hiding Private Cryptographic Keys in Multimedia Files | |
Kungpisdan et al. | A limited-used key generation scheme for internet transactions | |
US20210203502A1 (en) | Cryptographic System and Method | |
US20200304306A1 (en) | Cryptographic System and Method | |
Shaik | Securing cryptocurrency wallet seed phrase digitally with blind key encryption | |
Oruganti et al. | JSSecure: A Secured Encryption Strategy for Payment Gateways in E-Commerce | |
Verma et al. | Simulation-Based Comparative Analysis Of Symmetric Algorithms. | |
WO2002005481A1 (en) | Three-way encryption/decryption system | |
Jain | Enhancing security in Tokenization using NGE for storage as a service | |
US20220200797A1 (en) | Cryptographic System and Method | |
Sharma et al. | Cryptography and its Desirable Properties in terms of different algorithm | |
Nath et al. | Object-Oriented Modelling Of Kerberos Based Authentication Process In E-Banking Transaction | |
Khorsheed | A Compartive Study Between (AES) and (DES) Algorithms Based on the (SET) Protocol | |
Veeran | Cryptography Analysis Through Hybrid Model Algorithm | |
WO2023170454A1 (en) | Systems and methods for hiding private cryptographic keys in multimedia files |