ACE ( Advanced Cryptographic Engine ): la colección de unidades, que implementa un esquema de cifrado de clave pública y un esquema de firma digital. Nombres correspondientes para estos esquemas: «ACE Encrypt» y «ACE Sign». Los esquemas se basan en el esquema de cifrado de clave pública Cramer-Shoup y el esquema de firma Cramer-Shoup. Las variantes introducidas de estos esquemas están destinadas a lograr un buen equilibrio entre el rendimiento y la seguridad de todo el sistema de cifrado.
Autores
Todos los algoritmos implementados en ACE se basan en algoritmos desarrollados por Victor Shoup y Ronald Cramer. La especificación completa de los algoritmos está escrita por Victor Shoup. La implementación de los algoritmos es realizada por Thomas Schweinberger y Mehdi Nassehi, su soporte y mantenimiento lo realiza Victor Shoup. Thomas Schweinberger participó en la construcción del documento de especificaciones ACE y también escribió un manual de usuario.
Ronald Cramer actualmente permanece en la universidad de Aarhus, Dinamarca . Trabajó en el proyecto de ACE Encrypt durante su estancia en ETH en Zürich , Suiza .
Mehdi Nassehi y Thomas Schweinberger trabajaron en el proyecto ACE en el laboratorio de investigación de IBM en Zúrich , Suiza .
Victor Shoup trabaja en el laboratorio de investigación de IBM en Zürich , Suiza .
Seguridad
El esquema de encriptación en ACE puede probarse como seguro bajo supuestos razonables y naturales de intratabilidad. Estos cuatro supuestos son:
- El supuesto Decisional Diffie-Hellman (DDH)
- Fuerte suposición de RSA
- Resistencia a colisiones de preimagen de 1 segundo SHA-1
- Pseudoaleatoriedad en modo suma / contador MARS
Terminología y notación básicas
Aquí presentamos algunas notaciones que se utilizan en este artículo.
Notación matemática básica
- El conjunto de números enteros. - El conjunto de polinomios univariados con coeficientes en el campo finito de cardinalidad 2. - entero tal que para entero y . - polinomio con tal que con .
Notación de cadena básica
- El conjunto de todas las cuerdas. - El conjunto de todas las cadenas con longitud n.
Para : longitud de la cuerda . Se indica la cadena de longitud cero .
Para - el resultado de y concatenación.
Bits, bytes, palabras
- El conjunto de bits.
Tomemos todos los conjuntos de formas . Para tal conjunto A definimos el "elemento cero":
Definimos como un conjunto de bytes y como un conjunto de palabras.
Para con y definimos un operador de relleno:
.
Operador de conversión
El operador de conversión realiza una conversión entre elementos .
Esquema de cifrado
Par de claves de cifrado
El esquema de cifrado emplea dos tipos fundamentales:
la clave pública de la ECA: .
ACE clave privada: .
Para un parámetro de tamaño dado , de manera que , los componentes clave se definen como: - un número primo de 256 bits. - un número primo de m bits, tal que . - elementos (cuyo módulo de orden multiplicativo divide ). - elementos . - elementos con y , dónde y .
Generación de claves
Algoritmo. Generación de claves para el esquema de cifrado ACE.
Entrada: un parámetro de tamaño , tal que .
Salida: un par de claves pública / privada.
- Genere un primo aleatorio , tal que .
- Generar un primer aleatoria , de tal manera que .
- Genere un número entero aleatorio , tal que .
- Genera enteros aleatorios y
- Calcule los siguientes enteros en :
- Genere cadenas de bytes aleatorias y , donde y .
- Devuelve el par de clave pública / clave privada
Representación de texto cifrado
Un texto cifrado del esquema de cifrado ACE tiene la forma
,
donde los componentes se definen como: - números enteros de (cuyo módulo de orden multiplicativo divide ). - elemento . - elemento . llamamos el preámbulo y el criptograma . Si un texto plano es una cadena que consta de байт, entonces la longitud de es igual a .
Necesitamos introducir la función , que mapea un texto cifrado a su cadena de bytes
representación, y la función inversa correspondiente . Para el entero , la cadena de palabras , los enteros y la cadena de bytes ,
.
Para entero , cadena de bytes , tal que ,
.
Proceso de cifrado
Algoritmo. Operación de cifrado asimétrico ACE.
entrada: clave pública y cadena de bytes .
Salida: cadena de bytes - texto cifrado de .
- Generar al azar.
- Genere el preámbulo del texto cifrado:
- Generar al azar.
- Calcular , .
- Compute ; nota eso .
- Calcular .
- Calcule la clave para la operación de cifrado simétrico:
-
, .
- Calcular .
- Calcule el criptograma .
- Codifique el texto cifrado:
.
- Regreso .
Antes de iniciar el proceso de cifrado simétrico, el mensaje de entrada se divide en bloques , donde cada uno de los bloques, posiblemente excepto el último, es de 1024 bytes. Cada bloque está encriptado por el cifrado de flujo. Para cada bloque cifrado, se calcula un código de autenticación de mensaje de 16 bytes. Obtenemos el criptograma
. .
Tenga en cuenta que si , entonces .
Algoritmo. Proceso de cifrado asimétrico ACE.
Entrada:
Salida: , .
- Si , entonces regresa .
- Inicialice un estado de generador pseudoaleatorio:
- Genera la clave :
.
-
.
- Mientras , haz lo siguiente:
-
.
- Genere valores de máscara para el cifrado y MAC:
-
.
-
.
- Cifrar el texto llano: .
- Genere el código de autenticación del mensaje:
- Si , entonces ; más .
-
.
- Actualizar el texto cifrado: .
-
.
- Regreso .
Proceso de descifrado
Algoritmo. Proceso de descifrado ACE.
Entrada: clave pública y clave privada correspondiente , byt e string .
Salida: mensaje descifrado .
- Descifre el texto cifrado:
- Si , entonces regresa .
- Calcular:
;
tenga en cuenta que , donde .
- Verifique el preámbulo del texto cifrado:
- Si o o , regresa .
- Si , entonces regresa .
-
.
- Si , entonces .
- Compute ; nota eso .
- Si , entonces .
- Si , entonces regresa .
- Calcule la clave para la operación de descifrado simétrico:
-
, .
- Calcular .
- Compute ; tenga en cuenta que puede regresar .
- Regreso .
Algoritmo. Operación de descifrado .
Entrada:
Salida: Mensaje descifrado .
- Si , entonces regresa .
- Inicialice un estado de generador pseudoaleatorio:
- Genera la clave :
.
-
.
- Mientras , haz lo siguiente:
-
.
- Si , entonces regresa .
- Genere valores de máscara para el cifrado y MAC:
-
.
-
.
- Verifique el código de autenticación del mensaje:
- Si , entonces ; más .
-
.
- Si , entonces regresa .
- Actualizar el texto llano: .
-
.
- Regreso .
Esquema de firma
El esquema de firma emplea dos tipos principales:
ACE clave pública Firma: .
ACE Firma clave privada: .
Para el parámetro de tamaño dado , de modo que , los componentes clave se definen de la siguiente manera: - -número primo de bits con - también es un número primo. - -bit número primo con - también es un número primo. - y tiene o бит. - elementos (módulo de residuos cuadráticos ). - Número primo de 161 bits. - elemento - elementos . - elementos .
Generación de claves
Algoritmo. Generación de claves para el esquema de firma de clave pública ACE.
Entrada: parámetro de tamaño , tal que .
Salida: par de claves pública / privada.
- Genere números primos aleatorios , de modo que y - también sea un número primo, y
y .
- Establecer .
- Genera un número primo aleatorio , где .
- Genere aleatoriamente , teniendo en cuenta y , y calcule .
- Genere aleatorio y calcule .
- Genere cadenas de bytes aleatorias y .
- Devolver par de clave pública / clave privada
.
Representación de firma
La firma en el esquema de firmas ACE tiene la forma , donde los componentes se definen de la siguiente manera: - elemento . - entero, tal que . - elementos . - elemento ; tenga en cuenta que , donde - mensaje que se está firmando.
Necesitamos introducir la función, que mapea una firma en su representación de cadena de bytes y la función inversa correspondiente . Para enteros , cadenas de bytes , enteros y , y cadenas de bytes ,
.
Para entero , cadena de bytes , donde ,
.
Proceso de generación de firmas
Algoritmo. Proceso de generación de firmas ACE.
Entrada: clave pública y una clave privada correspondiente y el byte de cadena , .
Salida: cadena de bytes - firma digital .
- Realice los siguientes pasos para aplicar un hash a los datos de entrada:
- Genere una clave hash al azar, tal que .
- Calcular .
- Seleccione al azar y calcule .
- Calcular .
- Generar un número primo aleatorio , y su certificado de corrección : . Repita este paso hasta .
- Establecer ; nota eso .
- Computar , donde
,
y donde y .
- Codifique la firma:
.
- Regreso
Notas
En la definición de proceso de cifrado ACE y proceso de firma ACE se están utilizando algunas funciones auxiliares (por ejemplo, UOWHash, ESHash y algunas otras), cuya definición va más allá de este artículo. Se pueden encontrar más detalles al respecto en â.
Implementación, utilización y desempeño
El esquema de cifrado ACE es recomendado por NESSIE (Nuevos esquemas europeos para firmas, integridad y cifrado) como esquema de cifrado asimétrico. El comunicado de prensa está fechado en febrero de 2003.
Ambos esquemas se implementaron en ANSI C, con el uso de la biblioteca GNU GMP. Las pruebas se realizaron en dos plataformas: Power PC 604 modelo 43P con sistema AIX y Pentium a 266 MHz con sistema Windows NT. Tablas de resultados:
Costos de tiempo en operaciones básicas
|
Power PC
|
Pentium
|
|
Tamaño del operando (byte)
|
Tamaño del operando (byte)
|
|
512
|
1024
|
512
|
1024
|
Multiplicación
|
3,5 × 10 −5 s
|
1,0 × 10 −4 s
|
4,5 × 10 −5 s
|
1,4 × 10 −4 s
|
Cuadratura
|
3,3 × 10 −5 s
|
1,0 × 10 −4 s
|
4,4 × 10 −5 s
|
1,4 × 10 −4 s
|
Exponenciación
|
1,9 × 10 −2 s
|
1,2 × 10 −1 s
|
2,6 × 10 −2 s
|
1,7 × 10 −1 s
|
Rendimiento del esquema de cifrado y esquema de firma
|
Power PC
|
Pentium
|
|
Costos fijos (ms)
|
MBit / seg
|
Costos fijos (ms)
|
MBit / seg
|
Cifrar
|
160
|
18
|
230
|
dieciséis
|
Descifrar
|
68
|
18
|
97
|
14
|
Firmar
|
48
|
64
|
62
|
52
|
Configuración de la señal
|
29
|
|
41
|
|
Verificar
|
52
|
sesenta y cinco
|
73
|
53
|
Literatura
enlaces externos