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.
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.
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:
Să dăm definiții ale unor notații și termeni folosiți în acest articol.
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 .
- 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 .
- 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:
.
Operatorul de conversie efectuează conversii între elemente .
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 .
Algoritm. Generarea de chei pentru schema de criptare ACE.
Intrare: parametru de dimensiune , astfel încât .
Ieșire: pereche de chei public/privat.
,
,
,
,
.
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 ,
.
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 .
.
Î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: , .
.
Algoritm. Procesul de decriptare ACE.
Intrare: cheie publică și cheia privată corespunzătoare , șir de octeți .
Ieșire: mesaj decodat .
;
Algoritm. operatie de decriptare .
Intrare:
Ieșire: Mesaj decodat .
.
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 .
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.
, , și ,
și .
.
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 ,
.
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ă .
,
.
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] .
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 |