ACE Encrypt

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.

  1. Generera ett slumpmässigt primtal , så att .
  2. Generera ett slumpmässigt primtal , , så att .
  3. Generera ett slumpmässigt heltal så att .
  4. Generera slumpmässiga heltal och
  5. Beräkna följande heltal i :




    , , , , .
  6. Generera slumpmässiga bytesträngar och , där och .
  7. 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 .

  1. Generera slumpmässigt.
  2. Generera chiffertextingressen:
    1. Generera slumpmässigt.
    2. Beräkna , .
    3. Beräkna ; Observera att .
    4. Beräkna .
  3. Beräkna nyckeln för den symmetriska krypteringsoperationen:
    1. , .
    2. Beräkna .
  4. Beräkna kryptogram .
  5. Koda chiffertexten:
    .
  6. 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: , .

  1. Om , returnera .
  2. Initiera ett pseudo-slumpgeneratortillstånd:
  3. Generera nyckeln :
    .
  4. .
  5. Medan gör du följande:
    1. .
    2. Generera maskvärden för krypteringen och MAC:
      1. .
      2. .
    3. Kryptera klartexten: .
    4. Generera meddelandeautentiseringskoden:
      1. Om , då ; else .
      2. .
    5. Uppdatera chiffertexten: .
    6. .
  6. Returnera .

Dekrypteringsprocess



Algoritm. ACE-dekrypteringsprocess. Ingång: publik nyckel och motsvarande privat nyckel , byt e sträng . Utdata: Dekrypterat meddelande .

  1. Dekryptera chiffertexten:
    1. Om , returnera .
    2. Beräkna:
      ;

      Observera att , där .
  2. Verifiera chiffertextens ingress:
    1. Om eller eller , returnera sedan .
    2. Om , returnera .
    3. .
    4. Om , då .
    5. Beräkna ; Observera att .
    6. Om , då .
    7. Om , returnera sedan .
  3. Beräkna nyckeln för den symmetriska dekrypteringsoperationen:
    1. , .
    2. Beräkna .
  4. Beräkna ;observera att kan returnera .
  5. Returnera .



Algoritm. Dekrypteringsoperation . Ingång: Utdata: Dekrypterat meddelande .

  1. Om , returnera .
  2. Initiera ett pseudo-slumpgeneratortillstånd:
  3. Generera nyckeln :
    .
  4. .
  5. Medan gör du följande:
    1. .
    2. Om , returnera .
    3. Generera maskvärden för krypteringen och MAC:
      1. .
      2. .
    4. Verifiera meddelandeautentiseringskoden:
      1. Om , då ; annars .
      2. .
      3. Om e .
    5. Uppdatera klartexten: .
    6. .
  6. 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.

  1. Generera slumpmässiga primtal , så att och — är också ett primtal, och

    , , и , där
    och .
  2. Ställ in .
  3. Generera slumpmässigt primtal , где .
  4. Generera slumpmässiga med hänsyn till och och beräkna .
  5. Generera slumpmässigt och beräkna .
  6. Generera slumpmässiga bytesträngar , och .
  7. 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 .

  1. Utför följande steg för att hasha indata:
    1. Generera en hash-nyckel slumpmässigt, så att .
    2. Beräkna .
  2. Välj beräkna .
  3. Beräkna .
  4. Generera ett slumpmässigt primtal , och dess korrekthetscertifikat : . Upprepa detta steg tills .
  5. Ställ ; Observera att .
  6. Beräkna , där
    ,

    och där och .
  7. Koda signaturen:
    .
  8. 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