ACE (avancerad kryptografisk motor) är samlingen av enheter som implementerar både ett krypteringsschema för publik nyckel och ett digitalt signaturschema. Motsvarande namn för dessa system — «ACE Encrypt» och «ACE Sign». Scheman är baserade på Cramer-Shoups publika nyckelkrypteringsschema och Cramer-Shoups signaturschema. Introducerade varianter av dessa system är avsedda att uppnå en bra balans mellan prestanda och säkerhet för hela krypteringssystemet.
Författare
Alla algoritmer, implementerade i ACE är baserade på algoritmer utvecklade av Victor Shoup och Ronald Cramer. Den fullständiga algoritmspecifikationen är skriven av Victor Shoup. Implementering av algoritmer görs av Thomas Schweinberger och Mehdi Nassehi, dess stöd och underhåll görs av Victor Shoup. Thomas Schweinberger deltog i konstruktionen av ACE-specifikationsdokumentet och skrev även en användarmanual.
Ronald Cramer stannar för närvarande på universitetet i Århus, Danmark . Han arbetade på ACE Encrypt-projektet medan han bodde på ETH i Zürich , Schweiz .
Mehdi Nassehi och Thomas Schweinberger arbetade med ACE-projektet i IBMs forskningslabb i Zürich , Schweiz . Victor Shoup arbetar i IBMs forskningslabb i Zürich , Schweiz .
säkerhet
Krypteringsschemat i ACE kan bevisas säkert under rimliga och naturliga antaganden om svårhanterlighet. Dessa fyra antaganden är:
- Antagandet om Decision Diffie-Hellman (DDH).
- Starkt RSA-antagande
- SHA-1 sekund kollisionsmotstånd före bilden
- MARS summa/räknarläge pseudo-slumpmässighet
Grundläggande terminologi och notation
Här introducerar vi några notationer som används i den här artikeln.
Grundläggande matematisk notation
— Uppsättningen av heltal. — Mängden univariata polynom med koefficienter i det finita fältet av kardinalitet 2. — heltal så att för heltal och . — polynom med så att med .
Grundläggande strängnotation
— Uppsättningen av alla strängar. — Uppsättningen av alla strängar med längden n. För — längden på strängen . Strängen med längden noll betecknas . För — resultatet av och sammanlänkning.
Bitar, bytes, ord
. Låt oss ta alla uppsättningar av form . För en sådan uppsättning A definierar vi "nollelementet":
;
för
.
Vi definierar som en uppsättning byte, och som en uppsättning ord.
För med och definierar vi en utfyllnadsoperator:
.
Konverteringsoperatör
Omvandlingsoperator gör en omvandling mellan elementen .
Krypteringsschema
Krypteringsnyckelpar
Krypteringsschemat använder två nyckeltyper: ACE offentlig nyckel: . ACE privat nyckel: . För en given storleksparameter , så att , definieras nyckelkomponenter som: — ett 256-bitars primtal . — ett m-bitars primtal, så att . — element (vars multiplikativ ordning modulo delar ). — element . — element med och , där och .
Nyckelgenerering
Algoritm. Nyckelgenerering för ACE-krypteringsschema. Inmatning: en storleksparameter , så att . Utgång: ett offentligt/privat nyckelpar.
- Generera ett slumpmässigt primtal , så att .
- Generera ett slumpmässigt primtal , , så att .
- Generera ett slumpmässigt heltal så att .
- Generera slumpmässiga heltal och
- Beräkna följande heltal i :
,
,
,
,
.
- Generera slumpmässiga bytesträngar och , där och .
- Returnera den offentliga nyckeln/privata nyckelparet
Chiffertextrepresentation
En chiffertext av ACE-krypteringsschemat har formen
,
där komponenterna definieras som: — heltal från (vars multiplikativ ordning modulo delar ). — element . — element . kallar vi ingressen och — kryptogrammet . Om en klartext är en sträng som består av байт, så är längden av lika med . Vi måste introducera funktionen , som mappar en chiffertext till dess byte-sträng
representation, och den motsvarande inversa funktionen . För heltal , ordsträng , heltal och bytesträngen ,
.
För heltal , bytesträng , så att ,
.
Krypteringsprocess
Algoritm. ACE asymmetrisk krypteringsoperation. ingång: offentlig nyckel och bytesträng . Utdata: byte sträng — chiffertext av .
- Generera slumpmässigt.
- Generera chiffertextingressen:
- Generera slumpmässigt.
- Beräkna , .
- Beräkna ; Observera att .
- Beräkna .
- Beräkna nyckeln för den symmetriska krypteringsoperationen:
-
, .
- Beräkna .
- Beräkna kryptogram .
- Koda chiffertexten:
.
- Returnera .
Innan den symmetriska krypteringsprocessen påbörjas delas ingångsmeddelandet in i block där vart och ett av blocken, möjligen utom det sista, är på 1024 byte. Varje block krypteras av strömchifferet. För varje krypterat block beräknas 16-byte meddelandeautentiseringskod. Vi får kryptogrammet
.
.
Observera att om så är .
Algoritm. ACE asymmetrisk krypteringsprocess. Ingång: Utdata: , .
- Om , returnera .
- Initiera ett pseudo-slumpgeneratortillstånd:
- Generera nyckeln :
.
-
.
- Medan gör du följande:
-
.
- Generera maskvärden för krypteringen och MAC:
-
.
-
.
- Kryptera klartexten: .
- Generera meddelandeautentiseringskoden:
- Om , då ; else .
-
.
- Uppdatera chiffertexten: .
-
.
- Returnera .
Dekrypteringsprocess
Algoritm. ACE-dekrypteringsprocess. Ingång: publik nyckel och motsvarande privat nyckel , byt e sträng . Utdata: Dekrypterat meddelande .
- Dekryptera chiffertexten:
- Om , returnera .
- Beräkna:
;
Observera att , där .
- Verifiera chiffertextens ingress:
- Om eller eller , returnera sedan .
- Om , returnera .
-
.
- Om , då .
- Beräkna ; Observera att .
- Om , då .
- Om , returnera sedan .
- Beräkna nyckeln för den symmetriska dekrypteringsoperationen:
-
, .
- Beräkna .
- Beräkna ;observera att kan returnera .
- Returnera .
Algoritm. Dekrypteringsoperation . Ingång: Utdata: Dekrypterat meddelande .
- Om , returnera .
- Initiera ett pseudo-slumpgeneratortillstånd:
- Generera nyckeln :
.
-
.
- Medan gör du följande:
-
.
- Om , returnera .
- Generera maskvärden för krypteringen och MAC:
-
.
-
.
- Verifiera meddelandeautentiseringskoden:
- Om , då ; annars .
-
.
- Om e .
- Uppdatera klartexten: .
-
.
- Returnera .
Signaturschema
Signaturschemat använder två nyckeltyper: ACE Signatur offentlig nyckel: . ACE Signatur privat nyckel: . För den givna storleksparametern , så att , definieras nyckelkomponenter på följande sätt: — -bitars primtal med — är också ett primtal. — -bitars primtal med — är också ett primtal. — och har antingen eller бит. — element (kvadratiska rester modulo ). — 161-bitars primtal. — element — element . — element .
Nyckelgenerering
Algoritm. Nyckelgenerering för ACE-signaturschemat med publika nyckel. Indata: storleksparameter , så att . Utgång: offentligt/privat nyckelpar.
- Generera slumpmässiga primtal , så att och — är också ett primtal, och
,
, и
, där
och .
- Ställ in .
- Generera slumpmässigt primtal , где .
- Generera slumpmässiga med hänsyn till och och beräkna .
- Generera slumpmässigt och beräkna .
- Generera slumpmässiga bytesträngar , och .
- Returnera offentlig nyckel/privat nyckelpar
.
Signaturrepresentation
Signaturen i ACE-signaturschemat har formen där komponenterna är definierat på följande sätt: — element . — heltal, så att . — element . — element ;observera att där — meddelande undertecknas.
Vi måste introducera funktionen , som mappar en signatur till dess bytesträngrepresentation, och den motsvarande inversa funktionen . För heltal , byte string , heltal och , och bytesträngen ,
.
För heltal , bytesträng , där ,
.
Process för att skapa signatur
Algoritm. Process för generering av ACE-signatur. Inmatning: publik nyckel och motsvarande privat nyckel och bytesträng , . Utdata: bytesträng — digital signatur .
- Utför följande steg för att hasha indata:
- Generera en hash-nyckel slumpmässigt, så att .
- Beräkna .
- Välj beräkna .
- Beräkna .
- Generera ett slumpmässigt primtal , och dess korrekthetscertifikat : . Upprepa detta steg tills .
- Ställ ; Observera att .
- Beräkna , där
,
och där och .
- Koda signaturen:
.
- Returnera
Anteckningar
I definitionen av ACE-krypteringsprocessen och ACE-signaturprocessen används någon hjälpfunktion (t.ex. UOWHash, ESHash och någon annan), vars definition går utöver denna artikel. Mer information om det finns i в.
Implementering, användning och prestanda
ACE Encryption Scheme rekommenderas av NESSIE (New European Schemes for Signatures, Integrity and Encryption) som asymmetriskt krypteringsschema. Pressmeddelandet är daterat till februari 2003.
Båda systemen implementerades i ANSI C, med användning av GNU GMP-biblioteket. Tester gjordes på två plattformar: Power PC 604 modell 43P under AIX-system och 266 MHz Pentium under Windows NT-system. Resultattabeller:
Tidskostnader på grunddrift
|
Power PC |
Pentium |
|
Operandstorlek (byte) |
Operandstorlek (byte) |
|
512 |
1024 |
512 |
1024 |
Multiplikation |
3,5 × 10 −5 s
|
1,0 × 10 −4 s
|
4,5 × 10 −5 s
|
1,4 × 10 −4 s
|
Kvadrering |
3,3 × 10 −5 s
|
1,0 × 10 −4 s
|
4,4 × 10 −5 s
|
1,4 × 10 −4 s
|
Exponentiering |
1,9 × 10 −2 s
|
1,2 × 10 −1 s
|
2,6 × 10 −2 s
|
1,7 × 10 −1 s
|
Utförande av krypteringsschema och signaturschema
|
Power PC |
Pentium |
|
Fasta kostnader (ms) |
MBit/sek |
Fasta kostnader (ms) |
MBit/sek |
Kryptera |
160 |
18 |
230 |
16 |
Avkryptera |
68 |
18 |
97 |
14 |
Skylt |
48 |
64 |
62 |
52 |
Skyltuppsättning |
29 |
|
41 |
|
Kontrollera |
52 |
65 |
73 |
53 |
Litteratur
externa länkar