A vak aláírás ( angol blind signature ) a digitális aláírás egyik fajtája , amelynek sajátossága, hogy az aláíró fél nem ismerheti pontosan az aláírt dokumentum tartalmát. A vak aláírás koncepcióját David Chaum [1] találta ki 1982-ben, ő javasolta az első megvalósítást az RSA algoritmuson keresztül . A vak aláírási rendszer biztonsága a nagy összetett számok faktorálásának nehézségén alapult . Azóta számos más rendszert javasoltak [2] [3] .
A vak aláírások alapötlete a következő:
A protokoll végén B fél semmit sem tud a t üzenetről, sem az üzenet alatti aláírásról.
Ez a séma összehasonlítható egy borítékkal, amelybe egy dokumentumot és egy másolati lapot helyeznek. Ha aláírja a borítékot, az aláírás rányomódik a dokumentumra, és a boríték felbontásakor a dokumentum már aláírásra kerül.
A vak aláírás célja annak megakadályozása, hogy B aláíró lássa A üzenetét, amelyet aláír, és az üzenet alatti megfelelő aláírást. Ezért az aláírt üzenet nem társítható tovább az A féllel.
A biztonságos vak aláírási sémának 3 tulajdonságnak kell megfelelnie, nevezetesen:
A zéró tudás és a nyomonkövethetetlenség tulajdonságai miatt a vak aláírási séma széles körben alkalmazható olyan alkalmazásokban, ahol titoktartásra van szükség, például az elektronikus szavazórendszerekben [4] [5] [6] [7] .
A helyzetre való tekintettel: Bob közjegyző . Alice-nek szüksége van rá, hogy aláírja a dokumentumot anélkül, hogy fogalma lenne a tartalmáról. Bob csak azt igazolja, hogy a dokumentum a megadott időpontban közjegyzői hitelesítésre került. Ezután a következő algoritmus szerint járnak el:
Ebben a sémában Alice azt akarja, hogy Bob vakon aláírja az üzenetet . Ezért:
Ez a protokoll csak akkor működik, ha az aláírási és titkosítási funkciók kommutatívak .
A vak aláírások első implementációja Chaum volt az RSA kriptorendszer használatával:
Tegyük fel, hogy Bobnak kezdetben nyilvános kulcsa van , ahol a modulus és a kulcs nyilvános kitevője.
Chaum bonyolultabb vak aláírási algoritmusok egész családjával állt elő, amelyeket összefoglaló néven váratlan vak aláírásoknak neveznek . Sémáik még bonyolultabbak, de több lehetőséget adnak [1] .
Vak aláírás Schnorr EDS alapjánAlice úgy akarja aláírni Bob üzenetét , hogy egyrészt Bob az aláírás során ne ismerkedhessen meg az üzenettel, másrészt pedig, hogy Bob utólag az üzenet és a hozzá tartozó aláírás kézhezvételekor ne tudja azonosítsa a felhasználót, aki elindította a vak aláírási protokollt ehhez az üzenethez (Alice). Ezt a protokollt a következőképpen hajtják végre:
Az aláírás hitelességét a következőképpen igazoljuk. A és -ből következik . Ebben az esetben az anonimitás problémája megoldódott, mivel az ilyen hármasok Bob által alkotott halmazából bármely hármas összehasonlítható a dokumentum aláírásával . Valóban van: és , azaz. kiegyenlíthető véletlenszerű kifejezésválasztással , és az aláírást azonos valószínűséggel generáltuk az aláíró által alkotott hármashalmazban szereplő bármely hármasból. Azt is megjegyezzük, hogy Bobnak még arra sincs lehetősége, hogy bebizonyítsa, hogy a dokumentum aláírásának időpontjában nem ismerte azt.
Vak aláírás a GOST R 34.10-94 alapján Opciók
p prím , 510 ≤ | p | ≤ 512 (vagy 1022 ≤ | p | ≤ 1024), ahol |p| a p szám bináris reprezentációjának kapacitása .
q p-1 nagy prímosztója, 255 ≤ | q | ≤ 256 (vagy 511 ≤ | q | ≤ 512)
α ≠ 1, α < p , mod p = 1.
SzámításA fehérorosz szabvány a következő protokollt biztosítja az M dokumentum vak aláírásának generálásához :
Ebben a leírásban a következő paramétereket használjuk: q a számításokhoz használt modulus, egyszerű; a a szülőelem; x - privát kulcs; y a nyilvános kulcs [9] .
Legyenek nyilvános kulcsok az s felhasználók tulajdonában. Legyen M üzenet , amit m közülük alá akarnak írni. Ebben az esetben az összes aláírás összevonható egybe, amelynek hossza megegyezik egy felhasználó aláírásának hosszával, és nem függ m -től . Ez a következő 1 protokoll szabályai szerint valósul meg:
mod p a megosztott nyilvános kulcs. Ennek alapján a kollektív vak aláírás ellenőrzése a következő algoritmus szerint történik:
A vak aláírások protokollja a digitális pénz területén találta a legszélesebb körű alkalmazást . Például, hogy a betétes ne tévessze meg a bankot, a következő protokoll használható: a befizető száz különböző számú dokumentumra felírja ugyanazt a címletű bankjegyet, és azt titkosított formában letétbe helyezi a banknál. A bank véletlenszerűen választ, és 99 (vagy n-1) boríték kinyitását követeli, megbizonyosodik arról, hogy mindenhol 10 dollár van írva, és nem 1000 dollár, majd vakon aláírja a maradék borítékot, nem látva a számlaszámot.
Egy egyszerűbb lehetőség is kínálkozik: a bank saját nyilvános kulcspárral rendelkezik a bankjegy minden címletéhez. Ekkor az aláírás alá csak a bankjegyszám kerül elküldésre, és az aláírás előtt nem kell ellenőrizni a címletet [1] .
A titkos szavazáshoz vak aláírásokat használnak . A Fujioka, Okamoto és Ota protokolljában a választópolgár saját választásával szavazólapot készít, titkos kulccsal titkosítja és elfedi. Ezután a választópolgár aláírja a szavazólapot, és elküldi az érvényesítőnek. Az érvényesítő ellenőrzi, hogy az aláírás olyan regisztrált választóhoz tartozik-e, aki még nem szavazott.
Ha a szavazás érvényes, az érvényesítő aláírja a szavazólapot és visszaküldi a választópolgárnak. A választó eltávolítja az álcát, így felfedve az érvényesítő által aláírt titkosított szavazólapot. Ezt követően a választópolgár az így kapott aláírt és titkosított szavazólapot a pulthoz küldi, amely ellenőrzi a titkosított szavazólapon lévő aláírást.
Ha a szavazás érvényes, a szavazatszámláló egy listára teszi, amelyet a teljes szavazás után közzé kell tenni. A lista közzététele után a szavazók ellenőrzik, hogy szavazólapjaik szerepelnek-e a listán, és elküldik a számlálónak a szavazólapjuk megnyitásához szükséges visszafejtési kulcsokat. A szavazatszámláló ezekkel a kulcsokkal fejti meg a szavazatokat, és hozzáadja a szavazatokat az összesítéshez. A választás után a szavazatszámláló visszafejtő kulcsokat ad ki a titkosított szavazólapokkal együtt, hogy a választók önállóan ellenőrizhessék a választást [10] .
Az RSA algoritmus támadás tárgya lehet , aminek köszönhetően lehetővé válik egy korábban vakon aláírt üzenet visszafejtése, még aláírásra váró üzenetként adva tovább. Abból a tényből kiindulva, hogy az aláírási folyamat egyenértékű az aláíró általi dekódolással (a saját privát kulcsával), a támadó aláírhatja az üzenet már vakon aláírt , az aláíró nyilvános kulcsával titkosított változatát, azaz aláírhatja az üzenetet .
hol van az üzenet titkosított változata. Az üzenet aláírása után az egyszerű szöveg könnyen visszakereshető:
hol van az Euler-függvény . Mostantól könnyen fogadható az üzenet.
A támadás azért működik, mert ebben a sémában az aláíró közvetlenül magát az üzenetet írja alá. Ezzel szemben a hagyományos aláírási sémákban az aláíró jellemzően aláír például egy kriptográfiai hash függvényt . Ezért az RSA multiplikatív tulajdonsága miatt soha nem szabad ugyanazt a kulcsot használni a titkosításhoz és a vak aláíráshoz [8] .