Cifrado ACE - ACE Encrypt

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":

; para .

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.

  1. Genere un primo aleatorio , tal que .
  2. Generar un primer aleatoria , de tal manera que .
  3. Genere un número entero aleatorio , tal que .
  4. Genera enteros aleatorios y
  5. Calcule los siguientes enteros en :
    , , , , .



  6. Genere cadenas de bytes aleatorias y , donde y .
  7. 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 .

  1. Generar al azar.
  2. Genere el preámbulo del texto cifrado:
    1. Generar al azar.
    2. Calcular , .
    3. Compute ; nota eso .
    4. Calcular .
  3. Calcule la clave para la operación de cifrado simétrico:
    1. , .
    2. Calcular .
  4. Calcule el criptograma .
  5. Codifique el texto cifrado:
    .
  6. 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: , .

  1. Si , entonces regresa .
  2. Inicialice un estado de generador pseudoaleatorio:
  3. Genera la clave :
    .
  4. .
  5. Mientras , haz lo siguiente:
    1. .
    2. Genere valores de máscara para el cifrado y MAC:
      1. .
      2. .
    3. Cifrar el texto llano: .
    4. Genere el código de autenticación del mensaje:
      1. Si , entonces ; más .
      2. .
    5. Actualizar el texto cifrado: .
    6. .
  6. Regreso .

Proceso de descifrado

Algoritmo. Proceso de descifrado ACE.
Entrada: clave pública y clave privada correspondiente , byt e string . Salida: mensaje descifrado .

  1. Descifre el texto cifrado:
    1. Si , entonces regresa .
    2. Calcular:
      ;

      tenga en cuenta que , donde .
  2. Verifique el preámbulo del texto cifrado:
    1. Si o o , regresa .
    2. Si , entonces regresa .
    3. .
    4. Si , entonces .
    5. Compute ; nota eso .
    6. Si , entonces .
    7. Si , entonces regresa .
  3. Calcule la clave para la operación de descifrado simétrico:
    1. , .
    2. Calcular .
  4. Compute ; tenga en cuenta que puede regresar .
  5. Regreso .

Algoritmo. Operación de descifrado . Entrada: Salida: Mensaje descifrado .

  1. Si , entonces regresa .
  2. Inicialice un estado de generador pseudoaleatorio:
  3. Genera la clave :
    .
  4. .
  5. Mientras , haz lo siguiente:
    1. .
    2. Si , entonces regresa .
    3. Genere valores de máscara para el cifrado y MAC:
      1. .
      2. .
    4. Verifique el código de autenticación del mensaje:
      1. Si , entonces ; más .
      2. .
      3. Si , entonces regresa .
    5. Actualizar el texto llano: .
    6. .
  6. 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.

  1. Genere números primos aleatorios , de modo que y - también sea un número primo, y
    , , И , donde

    y .
  2. Establecer .
  3. Genera un número primo aleatorio , где .
  4. Genere aleatoriamente , teniendo en cuenta y , y calcule .
  5. Genere aleatorio y calcule .
  6. Genere cadenas de bytes aleatorias y .
  7. 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 .

  1. Realice los siguientes pasos para aplicar un hash a los datos de entrada:
    1. Genere una clave hash al azar, tal que .
    2. Calcular .
  2. Seleccione al azar y calcule .
  3. Calcular .
  4. Generar un número primo aleatorio , y su certificado de corrección : . Repita este paso hasta .
  5. Establecer ; nota eso .
  6. Computar , donde
    ,

    y donde y .
  7. Codifique la firma:
    .
  8. 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