Biztonságos árverező protokoll Ligeti Péter, Mérai László Kivonat Árverező eljárások matematikai modellezésénél gyakran előfordulnak biztonsági feltételek, amiket az adott rendszernek teljesítenie kell. Az általunk vizsgált változatnál több egyforma értéktárgyra licitálnak a résztvevők ár-darabszám párokkal, ahol a legmagasabb árakat ajánlók nyernek. A kidolgozott eljárás egyik előnye, hogy a nyertesek licitjein kívül semmi információ nem kerül nyilvánosságra, de számos tovvábbi követelménynek is eleget tesz. 1. Árverések fajtái Az árverés ősidők óta a kereskedelem egy meghatározott fajtája. Jószágok eladása során abban az esetben népszerű igazán az árverés, mikor a vevők többet tudhatnak az áru értékéről, mint az eladó. Az alábbiakban röviden ismertetjük a árverések főbb típusait. Az angol árverés (first price open outcry, highest-price sale, legmagasabb ár) talán az egyik legelterjedtebb árverezési fajta. Az angol árverésnál minden résztvevő szabadon emelheti a licitjét. Ha már senki nem emel, a legmagasabb licitet tett résztvevő kapja meg az árut és kifizeti érte a licitjét. A szabad kilépéses licit (open exit auction, open ascending auction) az angol árverés japán változata. Itt az ár folyamatosan emelkedik és minden játékos nyilvánosan jelzi, ha kiszáll (és ezután már nem térhet vissza). Ekkor a győztes a második legmagasabb rezervációs árat fizeti. Elsőáras tender (first price sealed bid, versenytárgyalás, titkos licites tender) árverezési rendszert A munka részben az Országos Kutatási Alapprogramok (OTKA) PD100712 és K100291 számú projektek, illetve a KMOP-1.1.1-09/1-2009-0042 számú projekt támogatásával készült. 1
alkalmaztak például a magyar privatizáció során. Ebben a változatban mindenki leadja a licitjét úgy, hogy nincs információja a többiekéről. A legmagasabb licitet leadó résztvevő kifizeti a licitjét és elnyeri az árut. A módszer hátránya, hogy a győztes elbukja a két legnagyobb licit közti különbséget. Az elsőáras tender egy változata a Vickrey-aukció (second price sealed-bid, másodlicites versenytárgyalás, második áras tender, filatelista árverés), melyet William Vickrey tiszteletére neveztek el, aki 1996-ban Nobel-díjat kapott az árverezési rendszer viszgálatáért. Az előzőhöz hasonlóan mindenki leadja a licitjét, úgy hogy nincs információja a többiekéről. A legmagasabb licitet leadó résztvevő kifizeti a második legmagasabb licitet és elnyeri az árut. Az angol árverés és a Vickrey tender kimenetel szempontjából ekvivalens. A holland árverés (virágvásár, csökkenő áras aukció, descending price auction) egy főként Hollandiában (sajtok és friss virágok eladásakor használt) licitálási forma az árveréseken. Az árverő kihirdeti a licitet, amit folyamatosan csökkent egészen addig, míg valamelyik résztvevő megállítja és elviszi az árut azon az áron. A holland árverés ekvivalens az elsőáras árveréssel, azaz egy-egy értelmű megfeleltetés van a két játék stratégiahalmazai között. Ennek az az oka, hogy semmi releváns információ nem derül ki az árverés folyamán, csak a végén, amikor már túl késő van ahhoz, hogy bárki változtasson a stratégiáján. 2. Megoldandó probléma A kitűzött feladat leginkább az elsőáras árverésre hasonlít, lényegében annak egy általánosításának tekinthető. A különbség az, hogy itt ugyanabból a tárgyból (pl. érmékből, bélyegekből, stb) többet bocsátanak licitre és azokra egyszerre kell licitálni. A licitben szerepeltetni kell a termékért kifizetendő egységárat, valamint a kívánt darabszámot. A licitre bocsájtott tárgyak számát mindenki számára ismertnek tételezzük fel. Minden esetben a legmagasabb egységárat ajánló(k) a nyertes(ek). Amennyiben többen ugyanazt a legmagasabb árat licitálták, a tárgyakat az általuk kívánt darabszámok arányában osztjuk el. A feladat egzakt matematikai modellje a 2.1. alfejezetben található. A résztvevők között van egy kitüntetett szereplő, a licit vezetője, akinek egyetlen szerepe, hogy jelezze, mikortól nem lehet ajánlatokat tenni. A résztvevők közötti további kommunikációba nem szól bele, nem licitál és nem is számol semmit (lényegében egy felhúzott ébresztőórának tekinthető). A 2
résztvevők közül kizárólag róla feltételezünk megbízhatóságot, a többiekről semmit nem teszünk fel. Miután lezárult az árverés, a résztvevők számolnak, illetve kommunikálnak egymással és ennek eredményeképpen a végén mindenki (de csak az árverésben résztvevők) számára nyilvánosságra kerülnek a nyertesek, nyertesek ajánlatai, valamint a nyertesek által elnyert tárgyak számai, minden más információ titokban marad. Ezen felül feltételezzük, hogy a résztvevők között páronkénti biztonságos kommunikációra van lehetőség. A pontos biztonsági feltételezések és lehetséges támadások a 2.2. alfejezetben kerülnek kifejtésre. 2.1. A matematikai modell Jelölje a licitben résztvevők számát n, a résztvevőket pedig r 1, r 2,..., r n, jelöljük továbbá az árverés vezetőjét r 0 -lal. Jelölje a licitre bocsájtott tárgyak számát t. Az általánosság megszorítása nélkül feltehetjük, hogy legfeljebb véges sok árat licitálhatnak a résztvevők, legyen ez a szám v, a lehetséges ajánlható árak halmaza pedig legyen rendezve szigorúan monoton csökkenő sorrendben: a 1 > a 2 > > a v. Az i-edik résztvevő licitjét jelölje l i, ez a következő párból áll: l i = (p i, d i ), ahol p i {a 1, a 2,..., a v }, 0 d i t, d i Z, ahol p i jelöli az általa ajánlott árat, d i pedig a darabszámot. 2.2. Biztonsági feltételek, fenyegetésmodell A következőkben összefoglaljuk a biztonságos árverezési rendszerekkel szemben támasztott követelényeket, zárójelben a megfelelő angol terminológiával. 1. Tökéletes licit-anonimitás (Perfect bid anonymity): Az árverező rendszertől megköveteljük, hogy a résztvevők valamely részének licitjeiről csak a résztvevők komplementere tudhasson meg bárminemű információt. Ez a követelmény a szokásos anonimitás követelmény egy erősítése. 2. Önellenőrizhetőség (Self verifying): Minden résztvevő ellenőrizni tudja az árverés kimenetelét. 3
3. Általánosan ellenőrizhető protokoll (Universal verifying): Minden résztvevő ellenőrizheti, hogy az összes licit figyelembe lett-e véve az árverés során. 4. Igazságosság (Fairness): Senkinek sincs semminemű információja a licitekről/darabszámokról az árverés lezárásáig és akkor is csak a nyertes(ek)é kerül nyilvánosságra. 5. Csalók elkapása (Catching cheaters): A résztvevők ki tudják mutatni, ha csalás történt, és a csalót azonosítani tudják. 6. Jegyzőkönyvezhetőség (Opportunity to keep the transcript): Ha szükséges, az árverésről hiteles jegyzőkönyv készíthető. 7. Technológiai függetlenség (Technology independent): A licitálónak csak a protokoll biztonságában és a saját eszközének helyesen működésében kell bíznia. 8. Nyílt forráskód (Open source, open code): A protokoll biztonsága nem a megfelelő algoritmus titkosságától függ. 2.3. Megoldások hasonló problémákra Ha nagyon messziről tekintünk a feladatra, akkor valójában egy nagyon általános és sokat vizsgált problémának, az úgynevezett biztonságos többrésztvevős számításoknak (az angol szakirodalomban secure multiparty computation) egy speciális esetével állunk szemben. Az problémát először Yao vetette fel 1982-ben írt cikkében [9], legáltalánosabban a következőképpen fogalmazható meg: Biztonságos többrésztvevős számítások probléma Adott r 1, r 2,..., r n résztvevő, mindegyik r i -nek van egy saját titkos s i értéke, valamint legyen F egy n-változós függvény, ami minden résztvevő számára ismert. A cél, hogy a résztvevők kiszámítsák az F függvény értéket az (s 1, s 2,..., s n ) helyen, oly módon, hogy semelyik résztvevő sem tudjon meg semmi olyan információt, ami ne következne a végeredényből, a saját titkos értékébő, valamint az F függvényből. Hogy az utolsó mondat kicsit világosabb legyen, ebben általában az is benne foglaltatik, hogy senkinek ne legyen semmilyen információja a többi 4
résztvevő titkos értékéről. (De ez nem minden esetben van így, például két résztvevő esetén legyen a kiszámítandó függvény a bemenetek összege, ekkor nyilván mindketten ki tudják számítani a másik titkos értékét is.) A témáról remek összefoglalót ad Cramer irománya [3]. Goldreich, Micali és Widgerson megmutatták, hogy az általános feladat megoldható abban az esetben, ha a résztvevők többsége nem csal, lásd [5]. Valójában egy erősebb eredményt bizonyítottak: az általuk adott konstrukciónál nem csak az lehetetlen, hogy a csalók nemkívánt titkokhoz jussanak, hanem az is biztosítva van, hogy amennyiben a csalók félbehagyják a protokollt, a becsületes résztvevők nélkülük is ki tudják számítani a végeredményt (ezt robosztusságnak nevezik). A konstrukció két lényeges építőköve a nullismeretű bizonyítás (zero-knowledge proof), illetve az ellenőrizhető titokmegosztás (verifiable secret sharing). A konstrukció hátránya, hogy nem hatékony, gyakorlatban nem alkalmazható. A mi esetünkben ezenfelül nem tehető fel az sem, hogy a résztvevőknek legfeljebb a fele nem becsületes. A biztonságos többrésztvevős számításoknak rengeteg alkalmazása van, többek között a biztonságos szavazás, illetve árverezés. A fentebb felsoroltak közül a mi esetünk leginkább az elsőáras aukcióra hasonlít, így erre adott egyéb megoldások közül ismertetünk néhányat. Brandt egy cikkében [1] mindjárt három megoldást is javasol, ebből az elsőt ismertetjük részletesebben, mivel hasonló elgondolásokat használunk majd a feladat megoldásához. A modellben páronkénti titkos csatornát tételeznek fel, valamint a 2.1. alfejezetben ismertetett paramétereket használjuk (n résztvevő, v licitálható ár, de csak egyetlen termék). Az i-edik résztvevő a következőket csinálja: 1. minden j licitálható árra választ egy véletlen Y ij értéket, majd ezeket egymás után fűzi és mindenkinek elküldi ennek a hash értékét, vagyis hash(y i1 Y i2... Y iv )-t, ahol hash(.) egy biztonságos hash-függvény. 2. ha az a J árra licitál, akkor az Y ij -t, minden más j J-re pedig a 0-t osztja szét additívan a többi résztvevőnek. Ez azt jelenti, hogy választ n darab független véletlen értéket, amelyeknek az összege Y ij (vagy 0) és az összeg k-adik tagját elküldi a k-adik résztvevőnek. 3. minden j árra összeadja a 2. lépésben a többiektől kapott, erre a j-re vonatkozó értékeket és ezt elküldi az összes többi résztvevőnek 4. minden j árra összeadja a 3. lépésben a többiektől kapott, erre a j-re vonatkozó értékeket 5
Az a résztvevő nyer, akinek ez az összeg szerepel az Y ij értékei között, a nyertes ár pedig az a legelső ár, amelyikre ez nem nulla. A második megoldás ettől mindössze annyiban tér el, hogy nem additív, hanem multiplikatív csoportban dolgozik, így az összegek a hatványkitevőkben jelennek meg, valamint az összegeket elmaszkolja véletlen szorzókkal. A harmadik megoldásban nehezebb problámát old meg, a fent ismertetett második áras aukciót, itt további trükközések szükségesek ahhoz, hogy csak a második legmagasabb ár kerüljön nyilvánosságra a protokoll végén. Felsorolunk néhány további megoldást elsőáras árverésekre a részletek ismertetését mellőzve. Az első kriptográfiai eszköztárat felvonultató megoldás Franklin és Reiter nevéhez fűződik [4], a protokoll főbb építőkövei a titokmegosztások, elektronikus pénz és digitális aláírások. Peng, Boyd és Dawson [7] homomorf titokmegosztásokat használ, amivel nagyobb biztonság érhető el, mint a hagyományos titokmegosztásokat használó rendszereknél. Brandt egy későbbi cikkében [2] homomorf titkosításokat használ az árverési protokoll konstrukciójához. Suzuki, Kobayashi és Morita [8] megoldásában hash-láncokat használ. Nojoumian és Stinson [6] friss cikkében szintén három megoldást javasol, a korábbiaktól annyiban eltérve, hogy a javasolt protokollok feltétel nélküli biztonságot garantálnak. 3. Biztonságos árverező protokoll többtárgyas licitre 3.1. A protokoll informális ismertetése A protokollt három főbb fázisra bontjuk, ezek a következők: Regisztráció Első lépésként az árverést lebonyolító nyilvánosságra hozza az árverés paramétereit (a tárgyak darabszámát, a licitálható árakat, illetve a későbbi kommunikációhoz szükséges biztonsági paramétereket). Ebben a lépésben építik ki az árverésben résztvevők a biztonságos kommunikációs csatornákat. Ez a lépés offline is elvégezhető, nem szükséges közvetlenül az árverés előtt megtenni, erre bármilyen nyilvános biztonságos felület elegendő. Licitálás Minden résztvevő eldönti, hogy hány darab tárgyért mekkora árat hajlandó fizetni. Ezután ezeket egy véletlen sorozattal, valamint ennek 6
a három sorozatot digitálisan aláírva összehasheli és elküldi a többi résztvevőnek (vagy kiírja egy mindenki által elérhető nyilvános felületre), ez lesz a boríték, amiben a licit van. Az árverést lebonyolító jelzi a licitálás végét, az ez után érkező liciteket már nem vesszük figyelembe, valamint a továbbiakban csak azokat tekintjük résztvevőnek, akik licitáltak. Kiértékelés Itt egy ciklusban a legnagyobb ártól lefelé megnézik a résztvevők, hogy az aktuális árra érkeztek-e licitek, ha nem, mennek a következő legmagasabb árra. Ha igen, akkor ez a nyertes ár, akkor az erre az árra licitálók kinyitják a borítékaikat oly módon, hogy az ehhez tartozó darabszámot és véletlen értéket nyilvánosságra hozzák. Ekkor mindenki számára nyilvános lesz a nyertes ár és darabszám is, valamint megbizonyosodhatnak arról, hogy nem történt csalás. Ha az adott árra licitálók összes darabszáma kisebb, mint ahány tárgy van összesen, akkor minden győztes annyit kap, amennyire licitált, egyébként pedig elosztják a nyertesek között a tárgyakat a darabszámuk arányában. 3.2. Jelölések Az árveréssel kapcsolatos paraméterek a következőek: n : a licitben résztvevők száma r 0 : az árverés vezetője r 1, r 2,..., r n : a licitáló résztvevők t : a licitre bocsájtott tárgyak száma v : lehetséges ajánlható árak száma a 1 > a 2 > > a v : a lehetséges ajánlható árak halmaza A felhasznált kriptográfiai algoritmusokkal kapcsolatos paraméterek a következőek: Hash(.) : kriptográfiailag biztonságos ütközésmentes hash-függvény s i : az r i résztvevő kommunikációhoz használt titkos kulcsa 7
Sign s (m) : az m üzenet digitálisan aláírva az s kulccsal a Sign(.) digitális aláírási algoritmussal p i : az r i résztvevő által ajánlott ár d i : az r i résztvevő által ajánlott darabszám, binárisan log 2 t biten ábrázolva l i := (p i, d i ), az r i résztvevő licitje 3.3. Egy megvalósítási javaslat/ A protokoll részletes specifikációja Az alábbiakban a protokoll fent ismertetett fázisait fejtjük ki részletesebben. 3.3.1. Regisztráció 1. r 0 nyilvánosságra hozza a biztonsági paramátereket: milyen titkosítást, hash-függvényt (Hash(.)), digitális aláírást (Sign(.)) használnak a protokoll során, valamint ezek paramétereit 2. a résztvevők kiépítik a páronkénti titkosított kommunikációs csatornákat a fenti paraméterek alapján. A továbbiakban feltesszük, hogy minden kommunikáció ezeken a csatornákon keresztül történik. 3. r 0 titkos csatornán elküldi minden r i licitálóknak az árverés paramétereit: 3.3.2. Licitálás (t, v, a 1 > a 2 > > a v ) 1. r 0 nyilvánosságra hozza a licitálásra vonatkozó időt és jelzi a licitálás megkezdését 2. minden r i résztvevő megválasztja az általa ajánlott p i árat és d i darabszámot 3. minden r i résztvevő megválaszt egy z i fix hosszúságú véletlen bináris vektort és minden más résztvevőnek elküldi az alábbi kötelezvényt: B i = Hash(p i d i z i Sign si (p i d i z i )) 8
4. r 0 ellenőrzi, hogy tart-e még a licit és ha igen, akkor aláírja a kötelezvényt és visszaküldi r i -nek: Sign s0 (B i ). A végén ezzel lehet igazolni, hogy érvényes a licit. 5. r 0 jelzi a licit végét (mindenkinek elküld egy Vége a licitnek üzenetet). 3.3.3. Kiértékelés Az általánosság megszorítása nélkül feltehetjük, hogy minden résztvevőnek van érvényes licitje, egyébként átparaméterezzük a feladatot. 1. j := 1 erre futtassunk egy ciklust 2. r 0 jelzi az értékelés kezdetét, ekkor a a j árra licitálóknak előre meghatározott T idő áll rendelkezésre, hogy jelentkezzenek a licitjükkel 3. ha nincs jelentkező, akkor j := j + 1 és ugrás a 1. lépésre, egyébként továbbmegyünk 4. ekkor a nyertes ár a a j. tegyük fel, hogy a r i1, r i2,..., r ib résztvevők licitáltak erre az árra 5. minden r i nyertes elküldi minden másik réztvevőnek a Licitálás 3. pontjában választott z i értékét és d i darabszámát és az Sign si (p i d i z i ) aláírást. Ekkor ezekből, valamint a korábban küldött B i kötelezvényből mindenki le tudja ellenőrizni, hogy valóban erre az árra licitáltak a nyertesek, valamint ha igény van rá, a nyertesek meg tudják mutatni, hogy r 0 aláírta-e a licitjüket. 6. legyen d := d i1 +d i2 + +d ib ha d t, akkor minden nyertes pontosan annyi darab tárgyat nyer el, amennyire licitált, egyébként pedig az r i nyertes d i /d darab tárgyat nyer el. A ciklus itt megáll. 9
Hivatkozások [1] Felix Brandt: Secure and Private Auctions without Auctioneers, Technical Report FKI-245-02 (2002) [2] Felix Brandt: How to obtain full privacy in auctions, International Journal of Information Security, 5 (4) (2006) 201 216 [3] Ronald Cramer: Introduction to Secure Computation, Lectures on Data Security, LNCS 1561 (1991) 16 62 [4] M. K. Franklin, M. K. Reiter: The design and implementation of a secure auction service, IEEE Transactions on Software Engineering, 22 (1996), 302 312 [5] Oded Goldreich, Silvio Micali, Avi Widgerson: How to play ANY mental game, Proceeding of STOC 87 (1987) [6] Mehrdad Nojoumian, Douglas R. Stinson: Unconditionally Secure First- Price Auction Protocols Using a Multicomponent Commitment Scheme, In Proceedings of ICICS 2010. (2010) 266 280. [7] Kun Peng, Colin Boyd, Ed Dawson: Optimization of Electronic First- Bid Sealed-Bid Auction Based on Homomorphic Secret Sharing, Progress in Cryptology Mycrypt 2005, LNCS 3715 (2005) 84 98. [8] Koutarou Suzuki, Kunio Kobayashi and Hikaru Morita: Efficient Sealedbid Auction using Hash Chain, Information Security and Cryptology ICISC 2000, LNCS 2015 (2001) 183 191. [9] Andrew Chi-Chih Yao: Protocols for Secure Computations (Extended Abstract) FOCS 1982 (1982) 160 164. 10