ACE ( Advanced Cryptographic Engine ) es un conjunto de herramientas de software que implementan el cifrado en el modo de esquema de cifrado de clave pública, así como en el modo de firma digital. Los nombres correspondientes para estos modos son "ACE Encrypt" y "ACE Sign". Los circuitos son implementaciones de los circuitos de Cramer-Shope. Los cambios realizados tienen como objetivo lograr el mejor equilibrio entre el rendimiento y la seguridad de todo el sistema de cifrado.
Todos los algoritmos escritos en ACE se basan en algoritmos desarrollados por Victor Shoup y Ronald Cramer. La especificación completa de los algoritmos fue escrita por Victor Shoup. Los algoritmos son implementados por Thomas Schweinberger y Mehdi Nassehi y mantenidos y desarrollados por Victor Shope. Thomas Schweinberg contribuyó al documento de especificación de ACE y también escribió el manual del usuario.
Ronald Kramer se encuentra actualmente en la Universidad de Aarhus, Dinamarca . Estuvo involucrado en trabajos relacionados con ACE Encrypt mientras trabajaba en ETH en Zúrich , Suiza .
Maddy Nassey y Thomas Schweinberger trabajaron en el proyecto ACE en el laboratorio de investigación de IBM en Zúrich, Suiza, pero ahora terminaron su estadía allí.
Victor Shoup trabaja en el laboratorio de investigación de IBM en Zúrich, Suiza.
La prueba de la seguridad del esquema de encriptación y el esquema de firma digital en el ACE se realiza utilizando suposiciones razonables y naturales. Los cuatro supuestos principales son:
Demos definiciones de algunas notaciones y términos utilizados en este artículo.
es un conjunto de enteros. es el conjunto de polinomios unidimensionales con coeficientes en un campo finito con el número de elementos de campo - 2. es un número entero para el cual, para número entero y . es tal polinomio con , tal que en .
- un conjunto de varias líneas. es el conjunto de todas las cadenas posibles de longitud n.
For — la longitud de la cadena . La notación para la longitud de la cadena nula es .
For es el resultado de la concatenación de cadenas y .
- un montón de bits.
Considere conjuntos de la forma . Para tal conjunto A, definimos el elemento cero:
; para _
Definámoslo como un conjunto de bytes, pero como un conjunto de palabras.
Para with y definimos el operador de llenado:
.
El operador de conversión realiza conversiones entre elementos .
El esquema de cifrado ACE utiliza dos tipos de claves:
Clave pública ACE: .
Clave privada de ACE: .
Para un parámetro de tamaño dado , tal que , los componentes clave se definen de la siguiente manera: — Número primo de 256 bits. es un primo de m bits tal que . son elementos (cuyo orden multiplicativo módulo divide ). - elementos . son elementos para los cuales y , donde y .
Algoritmo. Generación de claves para el esquema de cifrado ACE.
Entrada: parámetro de tamaño , tal que .
Salida: par de claves pública/privada.
,
,
,
,
.
El texto cifrado en el esquema de cifrado ACE es
,
donde los componentes se definen de la siguiente manera: son números enteros de (cuyo orden multiplicativo módulo divide a ). - elemento - elemento llamémoslo un preámbulo , y - un criptograma . Si el texto es una cadena de bytes, entonces la longitud es .
Es necesario introducir una función que represente el texto cifrado como una cadena de bytes, así como una función inversa . Para enteros , cadenas de caracteres , enteros y cadenas de bytes ,
.
Para una cadena de bytes
enteros para la cual ,
.
Algoritmo. Proceso de cifrado ACE asimétrico.
Entrada: clave pública y cadena de bytes .
Salida: cadena de bytes: texto cifrado obtenido de .
.
Antes de iniciar el proceso de cifrado simétrico, el mensaje de entrada se divide en bloques , donde cada bloque, excepto quizás el último, tiene 1024 bytes. Cada bloque está encriptado con un cifrado de flujo. Para cada bloque encriptado , se calcula un código de autenticación de 16 bytes. Obtenemos un criptograma
.
. Tenga en cuenta que si , entonces .
Algoritmo. Proceso de cifrado ACE simétrico.
Entrada:
Salida: , .
.
Algoritmo. Proceso de descifrado ACE.
Entrada: clave pública y clave privada correspondiente , cadena de bytes .
Salida: mensaje decodificado .
;
Algoritmo. operación de descifrado .
Entrada:
Salida: Mensaje decodificado .
.
El esquema de firma digital ACE utiliza dos tipos de claves:
la clave pública de firma digital ACE: .
Clave privada de la firma digital ACE: .
Para un parámetro de tamaño dado , tal que , los componentes de las claves se definen de la siguiente manera: — un número primo de bits para el cual también es primo. — Número primo de bits para el cual — también es primo. - y puede tener ambos y bits. son elementos (restos cuadráticos módulo ). — Número primo de 161 bits. - elemento - elementos . - elementos .
Algoritmo. Generación de claves para el esquema de firma digital ACE.
Entrada: parámetro de tamaño , tal que .
Salida: par de claves pública/privada.
, y ,
y .
.
La firma en el esquema de firma digital ACE tiene la forma , donde los componentes se definen de la siguiente manera: — elemento . es un entero tal que . - elementos . es el ; tenga en cuenta que , donde está el mensaje que se va a firmar.
Debe introducir una función que represente la firma como una cadena de bytes, así como una función inversa . Para enteros , cadenas de bytes , enteros y y cadenas de bytes ,
.
Para una cadena de bytes
enteros para la cual ,
.
Algoritmo. Generación de firma digital ACE.
Entrada: clave pública y clave privada correspondiente y cadena de bytes , .
Salida: cadena de bytes - firma digital .
,
.
Los esquemas de encriptación y firma digital ACE utilizan algunas funciones auxiliares (como, por ejemplo, UOWHash, ESHash y otras), cuya descripción está fuera del alcance de este artículo. Más detalles sobre estas funciones se pueden encontrar en [1] .
El esquema de cifrado ACE es recomendado por el proyecto NESSIE (Nuevos Esquemas Europeos para Firmas, Integridad y Cifrado) como un esquema de cifrado asimétrico. El comunicado de prensa tiene fecha de febrero de 2003.
Ambos esquemas se implementaron en ANSI C usando el paquete GNU GMP. Las pruebas se realizaron en dos plataformas: Power PC 604 modelo 43P bajo sistema AIX y Pentium 266 MHz bajo sistema Windows NT. A continuación se presentan tablas de indicadores:
Tabla 1. Tiempo dedicado a las operaciones básicas.
PC de potencia | pentium | |||
Tamaño del operando (bytes) | Tamaño del operando (bytes) | |||
512 | 1024 | 512 | 1024 | |
Multiplicación | 3.5 * 10^(-5) seg | 1.0 * 10^(-4) seg | 4.5 * 10^(-5) seg | 1.4 * 10^(-4) seg |
cuadratura | 3.3 * 10^(-5) seg | 1.0 * 10^(-4) seg | 4.4 * 10^(-5) seg | 1.4 * 10^(-4) seg |
Potenciación | 1.9 * 10^(-2) seg | 1.2 * 10^(-1) seg | 2.6 * 10^(-2) seg | 1.7 * 10^(-1) seg |
Tabla 2. Desempeño de los esquemas de encriptación y firma digital.
PC de potencia | pentium | |||
Costo fijo (mseg) | Mbps | Costo fijo (mseg) | Mbps | |
Cifrado | 160 | Dieciocho | 230 | dieciséis |
Descifrado | 68 | Dieciocho | 97 | catorce |
Firma | 48 | 64 | 62 | 52 |
Firma (configuración inicial) | 29 | 41 | ||
Verificación | 52 | sesenta y cinco | 73 | 53 |