ACE titkosítás

Az ACE ( Advanced Cryptographic Engine ) olyan szoftvereszközök készlete, amelyek titkosítást valósítanak meg nyilvános kulcsú titkosítási módban, valamint digitális aláírási módban. Ezeknek a módoknak a megfelelő nevei "ACE Encrypt" és "ACE Sign". Az áramkörök a Cramer-Shope áramkörök megvalósításai. A végrehajtott változtatások célja a legjobb egyensúly elérése a teljes titkosítási rendszer teljesítménye és biztonsága között.

Szerzők

Minden ACE-ben írt algoritmus Victor Shoup és Ronald Cramer által kifejlesztett algoritmusokon alapul . Az algoritmusok teljes specifikációját Victor Shoup írta. Az algoritmusokat Thomas Schweinberger és Mehdi Nassehi valósította meg, és Victor Shope tartja karban és fejleszti. Thomas Schweinberg közreműködött az ACE specifikációs dokumentumban, és megírta a felhasználói kézikönyvet is.
Ronald Kramer jelenleg a dániai Aarhusi Egyetemen dolgozik . Részt vett az ACE Encrypttel kapcsolatos munkában a svájci zürichi ETH - n . Maddy Nassey és Thomas Schweinberger az ACE projekten dolgoztak a svájci zürichi IBM Research Labban, de most befejezték ott tartózkodásukat. Victor Shoup a svájci zürichi IBM Research Labban dolgozik.

Biztonság

A titkosítási séma és a digitális aláírási séma biztonságának bizonyítása az ACE-ben ésszerű és természetes feltételezések alapján történik. A négy fő feltételezés a következő:

Alapvető jelölések és terminológia

Adjuk meg a cikkben használt jelölések és kifejezések definícióit.

Alapvető matematikai jelölés

 egész számok halmaza.  az együtthatós egydimenziós polinomok halmaza egy véges mezőben , amelynek mezőelemeinek száma - 2.  egy egész szám , amelyre egész és .  olyan polinom -val , hogy at .


Alapvető karakterlánc jelölés

 - különböző vonalak halmaza.  az összes lehetséges n hosszúságú karakterlánc halmaza. For  — a karakterlánc hossza . A null karakterlánc hosszának jelölése . A For  a karakterlánc-összefűzés és a .


Bitek, bájtok, szavak

 - sok bit.
Tekintsük az űrlap halmazait . Egy ilyen A halmazhoz definiáljuk a nulla elemet:

; számára .


Definiáljuk bájtok halmazaként, de szavak halmazaként.

A -val és -hez definiáljuk a kitöltési operátort:

.

Konverziós operátor

A konverziós operátor az elemek közötti konverziót hajtja végre .

Titkosítási séma

Titkosítási kulcspár

Az ACE titkosítási séma kétféle kulcsot használ:
ACE nyilvános kulcs: . ACE privát kulcs: . Egy adott méretű paraméterhez , így a kulcsösszetevők a következők szerint vannak definiálva:  — 256 bites prímszám.  olyan m bites prím, amelyre .  olyan elemek (amelyek szorzórendje modulo oszt ).  - elemek .  olyan elemek , amelyekhez és , ahol és .






Kulcsgenerálás

Algoritmus. Kulcsgenerálás az ACE titkosítási sémához.
Bemenet: méret paraméter , úgy, hogy . Kimenet: nyilvános/privát kulcspár.

  1. Generáljunk egy véletlenszerű prímszámot úgy, hogy .
  2. Generáljunk egy véletlenszerű prímszámot , úgy, hogy .
  3. Hozz létre egy véletlenszerű egész számot úgy, hogy .
  4. Véletlenszerű egész számokat generál és
  5. Számítsa ki a következő egész számokat :

    ,


    ,


    ,


    ,


    .

  6. Véletlenszerű bájtkarakterláncok generálása és , ahol és .
  7. Nyilvános/privát kulcspár visszaadása

Rejtjelezett szöveg megjelenítése

Az ACE titkosítási sémában a titkosított szöveg az

,


ahol a komponensek a következőképpen vannak definiálva:  integers from (amelynek szorzórendje modulo osztja ).  - elem .  - elem . nevezzük preambulumnak , és  - kriptogramnak . Ha a szöveg egy bájtokból álló karakterlánc , akkor a hossza .




Be kell vezetni egy függvényt , amely a rejtjelezett szöveget bájtkarakterláncként jeleníti meg, valamint egy inverz függvényt . Egész szám , karakterlánc , egész szám és bájt karakterlánc esetén ,

.


Egy egész bájt karakterlánchoz , amelyhez ,

.

Titkosítási folyamat

Algoritmus. Aszimmetrikus ACE titkosítási folyamat.
Bemenet: nyilvános kulcs és bájtkarakterlánc . Kimenet: bájtkarakterlánc - titkosított szöveg , amelyet innen szereztünk be .

  1. Véletlenszerű generálás .
  2. Rejtjelezett szöveg előtag létrehozása:
    1. Generál .
    2. Számítsd ki ,.
    3. Számíts ; jegyezze meg, hogy .
    4. Számolja ki .
  3. Számítsa ki a szimmetrikus titkosítási művelet kulcsát:
    1. , .
    2. Számolja ki .
  4. Számítsa ki a kriptogramot .
  5. Rejtjelezett szöveg kódolása:

    .

  6. Vissza .

A szimmetrikus titkosítási folyamat megkezdése előtt a bemeneti üzenetet blokkokra osztjuk , ahol minden blokk, talán az utolsó kivételével, 1024 bájtot tartalmaz. Minden blokk adatfolyam titkosítással van titkosítva. Minden egyes titkosított blokkhoz egy 16 bájtos hitelesítési kód kerül kiszámításra. Kapunk egy kriptogramot

.

. Vegye figyelembe, hogy ha , akkor .

Algoritmus. Szimmetrikus ACE titkosítási folyamat.
Bemenet: Kimenet: , .

  1. Ha , akkor térjen vissza .
  2. Inicializálja a pszeudo-véletlenszám-generátort:

  1. Kulcs generálása :

.

  1. .
  2. Egyelőre tegye a következőket:
    1. .
    2. Maszkértékek generálása a titkosításhoz és a MAC-hoz:
      1. .
      2. .
    3. Szöveg titkosítása: .
    4. Üzenet hitelesítési kód generálása:
      1. Ha , akkor ; különben .
      2. .
    5. Rejtjelezett szöveg frissítése: .
    6. .
  3. Vissza .

Dekódolási folyamat

Algoritmus. ACE visszafejtési folyamat.
Bemenet: nyilvános kulcs és a hozzá tartozó privát kulcs , bájtkarakterlánc . Kimenet: Dekódolt üzenet .

  1. Rejtjelezett szöveg visszafejtése:
    1. Ha , akkor térjen vissza .
    2. Kiszámítja:

      ;


      vegye figyelembe, hogy hol .
  2. Érvényesítse a titkosított szöveg bevezetőjét:
    1. Ha vagy vagy , akkor térjen vissza .
    2. Ha , akkor térjen vissza .
    3. .
    4. Ha , akkor .
    5. Számíts ; jegyezze meg, hogy .
    6. Ha , akkor .
    7. Ha , akkor térjen vissza .
  3. Számítsa ki a szimmetrikus visszafejtési folyamat kulcsát:
    1. , .
    2. Számolja ki .
  4. Számolja ki , vegye figyelembe, hogy visszatérhet .
  5. Vissza .

Algoritmus. visszafejtési művelet . Bemenet: Kimenet: Dekódolt üzenet .

  1. Ha , akkor térjen vissza .
  2. Inicializálja a pszeudo-véletlenszám-generátort:

  3. Kulcs generálása :

    .

  4. .
  5. Egyelőre tegye a következőket:
    1. .
    2. Ha , akkor térjen vissza .
    3. Maszkértékek generálása a titkosításhoz és a MAC-hoz:
      1. .
      2. .
    4. Erősítse meg az üzenet hitelesítési kódját:
      1. Ha , akkor ; különben .
      2. .
      3. Ha , akkor térjen vissza .
    5. Szöveg frissítése: .
    6. .
  6. Vissza .

Digitális aláírási séma

Az ACE digitális aláírási séma kétféle kulcsot használ:
az ACE digitális aláírás nyilvános kulcsát: . ACE digitális aláírás magánkulcs: . Adott méretű paraméter esetén, úgy, hogy a kulcsok összetevői a következők szerint vannak definiálva:  — -bites prímszám, amelyre  szintén prímszám.  — -bit prímszám, amelyre  — egyben prímszám is.  – és lehet mindkettő és bit.  elemek (másodfokú maradékok modulo ).  — 161 bites prímszám.  - elem  - elemek .  - elemek .









Kulcsgenerálás _

Algoritmus. Kulcsgenerálás az ACE digitális aláírási rendszerhez.
Bemenet: méret paraméter , úgy, hogy . Kimenet: nyilvános/privát kulcspár.

  1. Véletlenszerű prímszámok generálása úgy, hogy a és  szintén prímszámok, és

    , , és ,


    ahol

    és .

  2. Tedd .
  3. Generáljon egy véletlenszerű prímszámot , ahol .
  4. Véletlenszerű , adott és , valamint kiszámítása .
  5. Véletlenszerű generálás és számítás .
  6. Véletlenszerű bájtkarakterláncokat generál , és .
  7. Nyilvános kulcs/privát kulcspár visszaadása

    .

Az aláírás bemutatása

Az ACE digitális aláírási sémában az aláírás formátuma , ahol a komponensek meghatározása a következő:  — elem .  olyan egész szám, hogy .  - elemek .  a ; vegye figyelembe, hogy hol  van az aláírandó üzenet.




Be kell vezetnie egy függvényt , amely az aláírást bájtkarakterláncként jeleníti meg, valamint egy inverz függvényt . Egész szám , bájtkarakterlánc , egész számok és , és bájtkarakterlánc esetén ,

.


Egy egész bájt karakterlánchoz , amelyhez ,

.

Aláírás generálási folyamat

Algoritmus. ACE digitális aláírás generálása.
Bemenet: nyilvános kulcs és a hozzá tartozó privát kulcs és bájtkarakterlánc , . Kimenet: bájtkarakterlánc - digitális aláírás .

  1. Hajtsa végre a következő műveleteket a bemeneti adatok kivonatolásához:
    1. Véletlenszerű hash kulcs létrehozása úgy, hogy .
    2. Számolja ki .
  2. Válasszon ki egy véletlenszerűt , és számolja ki .
  3. Számolja ki .
  4. Véletlenszerű prímszám generálása , és annak érvényesítése : . Ismételje meg ezt a lépést addig, amíg .
  5. Tedd ; jegyezze meg, hogy .
  6. Számold ki hol

    ,


    és hol és .
  7. Aláírás kódolása:

    .

Jegyzetek

Az ACE titkosítási és digitális aláírási sémák néhány segédfunkciót használnak (például UOWHash, ESHash és mások), amelyek leírása túlmutat e cikk keretein. Ezekről a funkciókról további részletek az [1]-ben találhatók .

Megvalósítás, alkalmazás és teljesítmény

Az ACE titkosítási sémát a NESSIE (New European Schemes for Signatures, Integrity and Encryption) projekt ajánlja aszimmetrikus titkosítási sémaként. A sajtóközlemény 2003. februári keltezésű.
Mindkét sémát ANSI C-ben implementálták a GNU GMP csomag használatával. A teszteket két platformon végezték: Power PC 604 modell 43P AIX rendszeren és 266 MHz Pentium Windows NT rendszeren. A mutatók táblázatait az alábbiakban közöljük:
1. táblázat: Alapműveletekre fordított idő.

Power PC Pentium
Operandus mérete (byte) Operandus mérete (byte)
512 1024 512 1024
Szorzás 3,5 * 10^(-5) mp 1,0 * 10^(-4) mp 4,5 * 10^(-5) mp 1,4 * 10^(-4) mp
Négyzetre emelés 3,3 * 10^(-5) mp 1,0 * 10^(-4) mp 4,4 * 10^(-5) mp 1,4 * 10^(-4) mp
Potencírozás 1,9 * 10^(-2) mp 1,2 * 10^(-1) mp 2,6 * 10^(-2) mp 1,7 * 10^(-1) mp


2. táblázat: A titkosítási és digitális aláírási sémák teljesítménye.

Power PC Pentium
Fix költség (msec) Mbps Fix költség (msec) Mbps
Titkosítás 160 tizennyolc 230 16
Dekódolás 68 tizennyolc 97 tizennégy
Aláírás 48 64 62 52
Aláírás (kezdeti beállítás) 29 41
Igazolás 52 65 73 53

Irodalom

  1. ACE: The Advanced Cryptographic Engine, T. Schweinberger és V. Shoup, kézirat 2000 . Hozzáférés dátuma: 2010. december 17. Az eredetiből archiválva : 2011. július 28.

Linkek