ACE Encrypt

ACE ( Advanced Cryptographic Engine ) este un set de instrumente software care implementează criptarea în modul schema de criptare a cheii publice, precum și în modul semnătură digitală. Numele corespunzătoare pentru aceste moduri sunt „ACE Encrypt” și „ACE Sign”. Circuitele sunt implementări ale circuitelor Cramer-Shope. Modificările efectuate vizează atingerea celui mai bun echilibru între performanță și securitate a întregului sistem de criptare.

Autorii

Toți algoritmii scriși în ACE se bazează pe algoritmi dezvoltați de Victor Shoup și Ronald Cramer. Specificația completă a algoritmilor a fost scrisă de Victor Shoup. Algoritmii sunt implementați de Thomas Schweinberger și Mehdi Nassehi și menținuți și dezvoltați de Victor Shope. Thomas Schweinberg a contribuit la documentul de specificații ACE și a scris și manualul de utilizare.
Ronald Kramer este în prezent la Universitatea din Aarhus, Danemarca . A fost implicat în lucrări legate de ACE Encrypt în timp ce era la ETH din Zurich , Elveția .
Maddy Nassey și Thomas Schweinberger au lucrat la proiectul ACE la IBM Research Lab din Zurich, Elveția, dar acum și-au încheiat șederea acolo.
Victor Shoup lucrează la IBM Research Lab din Zurich, Elveția.

Securitate

Dovada securității schemei de criptare și a schemei de semnătură digitală în ACE se face folosind ipoteze rezonabile și naturale. Cele patru ipoteze principale sunt:

Notație de bază și terminologie

Să dăm definiții ale unor notații și termeni folosiți în acest articol.

Notație matematică de bază

 este un set de numere întregi.  este mulţimea de polinoame unidimensionale cu coeficienţi într-un câmp finit cu numărul de elemente de câmp - 2.  este un întreg pentru care, pentru întreg şi .  este un astfel de polinom cu , astfel încât la .


Notație de bază pentru șiruri

 - un set de linii diferite.  este mulțimea tuturor șirurilor posibile de lungime n. Pentru  — lungimea șirului . Notația pentru lungimea șirului nul este . Căci  este rezultatul concatenării șirurilor și .


Biți, octeți, cuvinte

 - o mulțime de bucăți.
Luați în considerare seturi de forma . Pentru o astfel de mulțime A, definim elementul zero:

; pentru .


Să-l definim ca un set de octeți, dar ca un set de cuvinte.

Pentru cu și definim operatorul de umplere:

.

Operator de conversie

Operatorul de conversie efectuează conversii între elemente .

Schema de criptare

Pereche de chei de criptare

Schema de criptare ACE utilizează două tipuri de chei:
cheie publică ACE: . Cheie privată ACE: . Pentru un parametru de dimensiune dat , astfel încât , componentele cheie sunt definite după cum urmează:  — număr prim de 256 de biți.  este un prim de m-bit astfel încât .  sunt elemente (a căror ordine multiplicativă modulo divide ).  - elemente .  sunt elemente pentru care și , unde și .






Generare cheie

Algoritm. Generarea de chei pentru schema de criptare ACE.
Intrare: parametru de dimensiune , astfel încât . Ieșire: pereche de chei public/privat.

  1. Generați un număr prim aleatoriu astfel încât .
  2. Generați un număr prim aleatoriu , , astfel încât .
  3. Generați un număr întreg aleatoriu astfel încât .
  4. Generați numere întregi aleatoare și
  5. Calculați următoarele numere întregi în :

    ,


    ,


    ,


    ,


    .

  6. Generați șiruri aleatorii de octeți și , unde și .
  7. Returnează o pereche de chei publice/private

Reprezentare ciphertext

Textul cifrat din schema de criptare ACE este

,


unde componentele sunt definite astfel:  sunt numere întregi din (a căror ordine multiplicativă modulo divide ).  - element .  - element . să-i spunem un preambul și  - o criptogramă . Dacă textul este un șir de octeți, atunci lungimea este .




Este necesar să se introducă o funcție care să reprezinte textul cifrat ca șir de octeți, precum și o funcție inversă . Pentru întreg , șir de caractere , întreg și șir de octeți ,

.


Pentru un șir de octeți întregi pentru care ,

.

Proces de criptare

Algoritm. Proces de criptare ACE asimetric.
Intrare: cheie publică și șir de octeți . Ieșire: șir de octeți - text cifrat obținut din .

  1. Generați aleatoriu .
  2. Generați preambulul textului cifrat:
    1. Generați .
    2. Calculați , .
    3. Calculați ; rețineți că .
    4. Calculați .
  3. Calculați cheia pentru operația de criptare simetrică:
    1. , .
    2. Calculați .
  4. Calculați criptograma .
  5. Codificarea textului cifrat:

    .

  6. Întoarce-te .

Înainte de a începe procesul de criptare simetrică, mesajul de intrare este împărțit în blocuri , în care fiecare bloc, cu excepția poate ultimul, are 1024 de octeți. Fiecare bloc este criptat cu un stream cipher. Pentru fiecare bloc criptat , se calculează un cod de autentificare de 16 octeți. Primim o criptogramă

.

. Rețineți că dacă , atunci .

Algoritm. Proces simetric de criptare ACE.
Intrare: Ieșire: , .

  1. Dacă , atunci întoarce .
  2. Inițializați generatorul de numere pseudoaleatoare:

  1. Generați cheia :

.

  1. .
  2. Pentru moment , procedați în felul următor:
    1. .
    2. Generați valori de mască pentru criptare și MAC:
      1. .
      2. .
    3. Criptează text: .
    4. Generați codul de autentificare a mesajului:
      1. Dacă , atunci ; altfel .
      2. .
    5. Actualizați textul cifrat: .
    6. .
  3. Întoarce-te .

Proces de decriptare

Algoritm. Procesul de decriptare ACE.
Intrare: cheie publică și cheia privată corespunzătoare , șir de octeți . Ieșire: mesaj decodat .

  1. Decriptați textul cifrat:
    1. Dacă , atunci întoarce .
    2. Calculati:

      ;


      rețineți că , unde .
  2. Validați preambulul textului cifrat:
    1. Dacă sau sau , atunci reveniți .
    2. Dacă , atunci întoarce .
    3. .
    4. Dacă , atunci .
    5. Calculați ; rețineți că .
    6. Dacă , atunci .
    7. Dacă , atunci întoarce .
  3. Calculați cheia pentru procesul de decriptare simetrică:
    1. , .
    2. Calculați .
  4. Calculați ; rețineți că poate reveni .
  5. Întoarce-te .

Algoritm. operatie de decriptare . Intrare: Ieșire: Mesaj decodat .

  1. Dacă , atunci întoarce .
  2. Inițializați generatorul de numere pseudoaleatoare:

  3. Generați cheia :

    .

  4. .
  5. Pentru moment , procedați în felul următor:
    1. .
    2. Dacă , atunci întoarce .
    3. Generați valori de mască pentru criptare și MAC:
      1. .
      2. .
    4. Confirmați codul de autentificare a mesajului:
      1. Dacă , atunci ; altfel .
      2. .
      3. Dacă , atunci întoarce .
    5. Actualizați text: .
    6. .
  6. Întoarce-te .

Schema de semnătură digitală

Schema de semnătură digitală ACE utilizează două tipuri de chei:
cheia publică de semnătură digitală ACE: . Cheie privată de semnătură digitală ACE: . Pentru un parametru de dimensiune dat , astfel încât , componentele cheilor sunt definite după cum urmează:  — un număr prim de -bit pentru care  este și prim.  — -bit număr prim pentru care  — este, de asemenea, prim.  — și poate avea ambele și biți.  sunt elemente (rămășii pătratice modulo ).  — număr prim de 161 de biți.  - element  - elemente .  - elemente .









Generare cheie

Algoritm. Generarea de chei pentru schema de semnătură digitală ACE.
Intrare: parametru de dimensiune , astfel încât . Ieșire: pereche de chei public/privat.

  1. Generați numere prime aleatoare astfel încât și  sunt, de asemenea, prime și

    , , și ,


    Unde

    și .

  2. Pune .
  3. Generați un număr prim aleatoriu , unde .
  4. Generați aleatoriu , dat și și calculați .
  5. Generați aleatoriu și calculați .
  6. Generați șiruri aleatorii de octeți și .
  7. Returnează o pereche cheie publică/cheie privată

    .

Prezentarea semnăturii

Semnătura din schema de semnătură digitală ACE are forma , unde componentele sunt definite după cum urmează:  — element .  este un întreg astfel încât .  - elemente .  este ; rețineți că , unde  este mesajul care urmează să fie semnat.




Trebuie să introduceți o funcție care reprezintă semnătura ca șir de octeți, precum și o funcție inversă . Pentru întreg , șir de octeți , numere întregi și și șir de octeți ,

.


Pentru un șir de octeți întregi pentru care ,

.

Procesul de generare a semnăturii

Algoritm. Generarea semnăturii digitale ACE.
Intrare: cheie publică și cheia privată corespunzătoare și șirul de octeți , . Ieșire: șir de octeți - semnătură digitală .

  1. Efectuați următoarele acțiuni pentru a distribui datele de intrare:
    1. Generați cheia hash aleatorie astfel încât .
    2. Calculați .
  2. Alegeți una aleatorie și calculați .
  3. Calculați .
  4. Generați un număr prim aleatoriu , și validarea acestuia : . Repetați acest pas până când .
  5. Pune ; rețineți că .
  6. Calculați unde

    ,


    si unde si .
  7. Codificarea semnăturii:

    .

Note

Schemele de criptare și semnătură digitală ACE utilizează unele funcții auxiliare (cum ar fi, de exemplu, UOWHash, ESHash și altele), a căror descriere depășește domeniul de aplicare al acestui articol. Mai multe detalii despre aceste funcții pot fi găsite în [1] .

Implementare, aplicare și performanță

Schema de criptare ACE este recomandată de proiectul NESSIE (New European Schemes for Signatures, Integrity and Encryption) ca schemă de criptare asimetrică. Comunicatul de presă este datat februarie 2003.
Ambele scheme au fost implementate în ANSI C folosind pachetul GNU GMP. Testele au fost efectuate pe două platforme: Power PC 604 model 43P sub sistem AIX și Pentium 266 MHz sub sistem Windows NT. Tabelele de indicatori sunt prezentate mai jos:
Tabelul 1. Timpul alocat operațiunilor de bază.

Power PC Pentium
Dimensiunea operandului (octeți) Dimensiunea operandului (octeți)
512 1024 512 1024
Multiplicare 3,5 * 10^(-5) sec 1,0 * 10^(-4) sec 4,5 * 10^(-5) sec 1,4 * 10^(-4) sec
Pătrare 3,3 * 10^(-5) sec 1,0 * 10^(-4) sec 4,4 * 10^(-5) sec 1,4 * 10^(-4) sec
Potentarea 1,9 * 10^(-2) sec 1,2 * 10^(-1) sec 2,6 * 10^(-2) sec 1,7 * 10^(-1) sec


Tabelul 2. Performanța schemelor de criptare și semnătură digitală.

Power PC Pentium
Cost fix (msec) Mbps Cost fix (msec) Mbps
Criptare 160 optsprezece 230 16
Decriptare 68 optsprezece 97 paisprezece
Semnătură 48 64 62 52
Semnătura (setarea inițială) 29 41
Verificare 52 65 73 53

Literatură

  1. ACE: The Advanced Cryptographic Engine, T. Schweinberger și V. Shoup, manuscris 2000 . Data accesului: 17 decembrie 2010. Arhivat din original la 28 iulie 2011.

Link -uri