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
Application number
ES00963254T
Other languages
English (en)
Inventor
Ramarathnam Venkatesan
Mariusz H. Jakubowski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2235946T3 publication Critical patent/ES2235946T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization 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.
A. Visión global
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.
B. Ambiente de procesado ilustrativo
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.
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.
C. Ordenador cliente 100
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.
D. Limitación planteada por la aritmética de modulo en técnicas criptográficas convencionales
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.
E. Nuestra técnica inventiva y su implementación
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_{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.
ES00963254T 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. Expired - Lifetime ES2235946T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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