Cifrado ACE

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.

Autores

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.

Seguridad

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:

Notación básica y terminología

Demos definiciones de algunas notaciones y términos utilizados en este artículo.

Notación matemática básica

 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 .


Notación básica de cadenas

 - 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 .


Bits, bytes, palabras

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

.

Operador de conversión

El operador de conversión realiza conversiones entre elementos .

Esquema de cifrado

Par de claves de cifrado

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 .






Generación de claves

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.

  1. Genere un número primo aleatorio tal que .
  2. Genere un número primo aleatorio , , tal que .
  3. Genera un entero aleatorio tal que .
  4. Genera números enteros aleatorios y
  5. Calcula los siguientes números enteros en :

    ,


    ,


    ,


    ,


    .

  6. Genere cadenas de bytes aleatorios y , donde y .
  7. Devolver un par de claves pública/privada

Representación de texto cifrado

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 ,

.

Proceso de cifrado

Algoritmo. Proceso de cifrado ACE asimétrico.
Entrada: clave pública y cadena de bytes . Salida: cadena de bytes: texto cifrado obtenido de .

  1. Generar al azar .
  2. Generar preámbulo de texto cifrado:
    1. generar _
    2. Calcular , .
    3. Calcular ; tenga en cuenta que
    4. Calcula _
  3. Calcule la clave para la operación de cifrado simétrico:
    1. , .
    2. Calcula _
  4. Calcular criptograma .
  5. Codificar texto cifrado:

    .

  6. Volver _

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: , .

  1. Si , entonces regresa .
  2. Inicialice el generador de números pseudoaleatorios:

  1. Generar clave :

.

  1. .
  2. Por ahora , haz lo siguiente:
    1. .
    2. Generar valores de máscara para encriptación y MAC:
      1. .
      2. .
    3. Cifrar texto: .
    4. Generar código de autenticación de mensaje:
      1. Si , entonces ; de lo contrario
      2. .
    5. Actualizar texto cifrado: .
    6. .
  3. Volver _

Proceso de descifrado

Algoritmo. Proceso de descifrado ACE.
Entrada: clave pública y clave privada correspondiente , cadena de bytes . Salida: mensaje decodificado .

  1. Descifrar texto cifrado:
    1. Si , entonces regresa .
    2. Calcular:

      ;


      tenga en cuenta que , donde .
  2. Valide el preámbulo del texto cifrado:
    1. Si o o , entonces regresa .
    2. Si , entonces regresa .
    3. .
    4. Si , entonces .
    5. Calcular ; tenga en cuenta que
    6. Si , entonces .
    7. Si , entonces regresa .
  3. Calcule la clave para el proceso de descifrado simétrico:
    1. , .
    2. Calcula _
  4. Calcular , tenga en cuenta que puede volver .
  5. Volver _

Algoritmo. operación de descifrado . Entrada: Salida: Mensaje decodificado .

  1. Si , entonces regresa .
  2. Inicialice el generador de números pseudoaleatorios:

  3. Generar clave :

    .

  4. .
  5. Por ahora , haz lo siguiente:
    1. .
    2. Si , entonces regresa .
    3. Generar valores de máscara para encriptación y MAC:
      1. .
      2. .
    4. Confirme el código de autenticación del mensaje:
      1. Si , entonces ; de lo contrario
      2. .
      3. Si , entonces regresa .
    5. Actualizar texto: .
    6. .
  6. Volver _

Esquema de firma digital

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 .









Generación de claves

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.

  1. Genera números primos aleatorios tales que y  también son primos, y

    , y ,


    dónde

    y .

  2. poner _
  3. Genere un número primo aleatorio , donde .
  4. Genera aleatorio , dado y , y calcula .
  5. Genera aleatorio y computa .
  6. Genera cadenas de bytes aleatorias y .
  7. Devolver un par de clave pública/clave privada

    .

Presentación de la firma

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 ,

.

Proceso de generación de firma

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 .

  1. Realice las siguientes acciones para codificar los datos de entrada:
    1. Genere una clave hash aleatoria tal que .
    2. Calcula _
  2. Escoja uno al azar y calcule .
  3. Calcula _
  4. Generar un número primo aleatorio , , y su validación : . Repita este paso hasta que .
  5. poner ; tenga en cuenta que
  6. Calcula donde

    ,


    y donde y .
  7. Codificar firma:

    .

Notas

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] .

Implementación, aplicación y desempeño

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

Literatura

  1. ACE: El motor criptográfico avanzado, T. Schweinberger y V. Shoup, manuscrito 2000 . Fecha de acceso: 17 de diciembre de 2010. Archivado desde el original el 28 de julio de 2011.

Enlaces