ACE-kryptering

ACE ( Advanced Cryptographic Engine ) er et sæt softwareværktøjer , der implementerer kryptering i den offentlige nøglekrypteringsskematilstand, såvel som i den digitale signaturtilstand. De tilsvarende navne for disse tilstande er "ACE Encrypt" og "ACE Sign". Kredsløbene er implementeringer af Cramer-Shope kredsløbene. Ændringerne har til formål at opnå den bedste balance mellem ydeevne og sikkerhed for hele krypteringssystemet.

Forfattere

Alle algoritmer skrevet i ACE er baseret på algoritmer udviklet af Victor Shoup og Ronald Cramer. Den fulde specifikation af algoritmerne blev skrevet af Victor Shoup. Algoritmerne er implementeret af Thomas Schweinberger og Mehdi Nassehi og vedligeholdt og udviklet af Victor Shope. Thomas Schweinberg bidrog til ACE-specifikationsdokumentet og skrev også brugermanualen.
Ronald Kramer er i øjeblikket ved Aarhus Universitet, Danmark . Han var involveret i arbejde relateret til ACE Encrypt, mens han var på ETH i Zürich , Schweiz .
Maddy Nassey og Thomas Schweinberger arbejdede på ACE-projektet på IBM Research Lab i Zürich, Schweiz, men har nu afsluttet deres ophold der.
Victor Shoup arbejder på IBM Research Lab i Zürich, Schweiz.

Sikkerhed

Beviset for sikkerheden af ​​krypteringsskemaet og det digitale signaturskema i ACE udføres ved brug af rimelige og naturlige antagelser. De fire hovedantagelser er:

Grundlæggende notation og terminologi

Lad os give definitioner af nogle notationer og termer, der bruges i denne artikel.

Grundlæggende matematisk notation

 er et sæt af heltal.  er mængden af ​​endimensionelle polynomier med koefficienter i et endeligt felt med antallet af feltelementer - 2.  er et heltal , for hvilket heltal og .  er sådan et polynomium med , sådan at ved .


Grundlæggende strengnotation

 - et sæt af forskellige linjer.  er mængden af ​​alle mulige strenge med længden n. For  — længden af ​​strengen . Notationen for længden af ​​nul-strengen er . For  er resultatet af strengsammenkædning og .


Bits, bytes, ord

 - mange stykker.
Overvej sæt af formularen . For et sådant sæt A definerer vi nul-elementet:

; for .


Lad os definere det som et sæt bytes, men som et sæt ord.

For med og vi definerer påfyldningsoperatøren:

.

Konverteringsoperator

Konverteringsoperatoren udfører konverteringer mellem elementer .

Krypteringsskema

Krypteringsnøglepar

ACE-krypteringsskemaet bruger to typer nøgler:
ACE offentlig nøgle: . ACE privat nøgle: . For en given størrelsesparameter , således at , er nøglekomponenterne defineret som følger:  — 256-bit primtal.  er en m-bit prime, sådan at .  er elementer (hvis multiplikativ orden modulo dividerer ).  - elementer .  er elementer for hvilke og , hvor og .






Nøglegenerering

Algoritme. Nøglegenerering til ACE-krypteringsskemaet.
Input: størrelsesparameter , sådan at . Udgang: offentligt/privat nøglepar.

  1. Generer et tilfældigt primtal, således at .
  2. Generer et tilfældigt primtal , , sådan at .
  3. Generer et tilfældigt heltal , således at .
  4. Generer tilfældige heltal og
  5. Beregn følgende heltal i :

    ,


    ,


    ,


    ,


    .

  6. Generer tilfældige byte-strenge og , hvor og .
  7. Returner et offentligt/privat nøglepar

Ciphertext repræsentation

Chifferteksten i ACE-krypteringsskemaet er

,


hvor komponenterne er defineret som følger:  er heltal fra (hvis multiplikativ orden modulo dividerer ).  - element .  - element . lad os kalde det en præambel og  - et kryptogram . Hvis teksten er en streng af bytes, så er længden .




Det er nødvendigt at introducere en funktion , der repræsenterer chifferteksten som en byte-streng, såvel som en invers funktion . For heltal , tegnstreng , heltal og bytestreng ,

.


For en heltalsbytestreng , for hvilken

.

Krypteringsproces

Algoritme. Asymmetrisk ACE-krypteringsproces.
Input: offentlig nøgle og bytestreng . Output: byte streng - chiffertekst hentet fra .

  1. Generer tilfældigt .
  2. Generer chiffertekst præamble:
    1. Generer .
    2. Beregn ,. _
    3. Beregn ; bemærk det .
    4. Beregn .
  3. Beregn nøglen til den symmetriske krypteringsoperation:
    1. , .
    2. Beregn .
  4. Beregn kryptogram .
  5. Indkode chiffertekst:

    .

  6. Retur .

Inden den symmetriske krypteringsproces startes, er inputmeddelelsen opdelt i blokke , hvor hver blok, måske undtagen den sidste, har 1024 bytes. Hver blok er krypteret med en stream-chiffer. For hver krypteret blok beregnes en 16-byte godkendelseskode. Vi får et kryptogram

.

. Bemærk at hvis , så .

Algoritme. Symmetrisk ACE-krypteringsproces.
Input: Output: , .

  1. Hvis , så vend tilbage .
  2. Initialiser pseudo-tilfældig talgeneratoren:

  1. Generer nøgle :

.

  1. .
  2. Indtil videre skal du gøre følgende:
    1. .
    2. Generer maskeværdier til kryptering og MAC:
      1. .
      2. .
    3. Krypter tekst: .
    4. Generer meddelelsesgodkendelseskode:
      1. Hvis , så ; ellers .
      2. .
    5. Opdater chiffertekst: .
    6. .
  3. Retur .

Dekrypteringsproces

Algoritme. ACE-dekrypteringsproces.
Input: offentlig nøgle og tilsvarende privat nøgle , byte streng . Output: Afkodet besked .

  1. Dekrypter chiffertekst:
    1. Hvis , så vend tilbage .
    2. Beregn:

      ;


      bemærk at , hvor .
  2. Valider chiffertekst præamblen:
    1. Hvis eller eller , så vend tilbage .
    2. Hvis , så vend tilbage .
    3. .
    4. Hvis , så .
    5. Beregn ; bemærk det .
    6. Hvis , så .
    7. Hvis , så vend tilbage .
  3. Beregn nøglen til den symmetriske dekrypteringsproces:
    1. , .
    2. Beregn .
  4. Beregn , bemærk, at kan vende tilbage .
  5. Retur .

Algoritme. dekrypteringsoperation . Input: Output: Afkodet besked .

  1. Hvis , så vend tilbage .
  2. Initialiser pseudo-tilfældig talgeneratoren:

  3. Generer nøgle :

    .

  4. .
  5. Indtil videre skal du gøre følgende:
    1. .
    2. Hvis , så vend tilbage .
    3. Generer maskeværdier til kryptering og MAC:
      1. .
      2. .
    4. Bekræft meddelelsesgodkendelseskode:
      1. Hvis , så ; ellers .
      2. .
      3. Hvis , så vend tilbage .
    5. Opdateringstekst: .
    6. .
  6. Retur .

Digital signaturordning

Den digitale ACE-signaturordning bruger to typer nøgler:
den offentlige ACE-digitale signaturnøgle: . ACE digital signatur privat nøgle: . For en given størrelsesparameter , således at , er nøglernes komponenter defineret som følger:  — et -bit-primtal, for hvilket  også er primtal.  — -bit primtal for hvilket  — også er primtal.  — og kan have både og bits.  er elementer (kvadratiske rester modulo ).  — 161-bit primtal.  -element  - elementer .  - elementer .









Nøglegenerering _

Algoritme. Nøglegenerering til ACEs digitale signaturordning.
Input: størrelsesparameter , sådan at . Udgang: offentligt/privat nøglepar.

  1. Generer tilfældige primtal sådan, at og  er også primtal, og

    , , og ,


    hvor

    og .

  2. Sæt .
  3. Generer et tilfældigt primtal , hvor .
  4. Generer tilfældige , givet og , og beregn .
  5. Generer tilfældigt og beregn .
  6. Generer tilfældige byte-strenge , og .
  7. Returner et offentligt nøgle/privat nøglepar

    .

Præsentation af signaturen

Signaturen i ACEs digitale signaturskema har formen , hvor komponenterne er defineret som følger:  — element .  er et heltal sådan, at .  - elementer .  er ; bemærk at , hvor  er beskeden, der skal underskrives.




Du skal introducere en funktion , der repræsenterer signaturen som en byte-streng, såvel som en invers funktion . For heltal , byte streng , heltal og , og byte streng ,

.


For en heltalsbytestreng , for hvilken

.

Signaturgenereringsproces

Algoritme. Generering af ACE digital signatur.
Input: offentlig nøgle og tilsvarende privat nøgle og bytestreng , . Output: byte streng - digital signatur .

  1. Udfør følgende handlinger for at hashe inputdata:
    1. Generer tilfældig hash-nøgle sådan, at .
    2. Beregn .
  2. Vælg en tilfældig , og beregn .
  3. Beregn .
  4. Generer et tilfældigt primtal , og dets validering : . Gentag dette trin indtil .
  5. Sæt ; bemærk det .
  6. Beregn hvor

    ,


    og hvor og .
  7. Indkode signatur:

    .

Noter

ACE-kryptering og digitale signaturordninger bruger nogle hjælpefunktioner (såsom for eksempel UOWHash, ESHash og andre), hvis beskrivelse ligger uden for denne artikels omfang. Flere detaljer om disse funktioner kan findes i [1] .

Implementering, anvendelse og ydeevne

ACE-krypteringsskemaet anbefales af NESSIE-projektet (New European Schemes for Signatures, Integrity and Encryption) som et asymmetrisk krypteringsskema. Pressemeddelelsen er dateret februar 2003.
Begge skemaer blev implementeret i ANSI C ved hjælp af GNU GMP-pakken. Testene blev udført på to platforme: Power PC 604 model 43P under AIX-system og 266 MHz Pentium under Windows NT-system. Tabeller med indikatorer er angivet nedenfor:
Tabel 1. Tid brugt på grundlæggende operationer.

Power pc Pentium
Operand størrelse (bytes) Operand størrelse (bytes)
512 1024 512 1024
Multiplikation 3,5 * 10^(-5) sek 1,0 * 10^(-4) sek 4,5 * 10^(-5) sek 1,4 * 10^(-4) sek
Kvadrering 3,3 * 10^(-5) sek 1,0 * 10^(-4) sek 4,4 * 10^(-5) sek 1,4 * 10^(-4) sek
Potentiering 1,9 * 10^(-2) sek 1,2 * 10^(-1) sek 2,6 * 10^(-2) sek 1,7 * 10^(-1) sek


Tabel 2. Ydelse af kryptering og digitale signaturordninger.

Power pc Pentium
Faste omkostninger (msec) Mbps Faste omkostninger (msec) Mbps
Kryptering 160 atten 230 16
Dekryptering 68 atten 97 fjorten
Underskrift 48 64 62 52
Signatur (indledende indstilling) 29 41
Verifikation 52 65 73 53

Litteratur

  1. ACE: The Advanced Cryptographic Engine, T. Schweinberger og V. Shoup, manuskript 2000 . Dato for adgang: 17. december 2010. Arkiveret fra originalen den 28. juli 2011.

Links