A kriptográfiában a kötelezettségvállalási séma vagy a bitkötelezettségi séma ( eng. Commitment séma ) egy kriptográfiai primitív , amely lehetővé teszi bármely kiválasztott érték rögzítését (kiválasztott utasítás, információrészlet), rejtve mások számára, és lehetővé teszi, hogy később felfedje. a rögzített érték [1 ] . A kötelezettségvállalási sémák úgy vannak kialakítva, hogy a fél ne változtassa meg az értéket vagy az állítást a benyújtás után, azaz a kötelezettségvállalási sémák valósítják meg az adatkötést . A kötelezettségvállalási sémák számos kriptográfiai protokollban alkalmazhatók, beleértve a biztonságos protokollt isérmefeldobás , zéró tudás igazolás, bizalmas számítási protokoll stb.
A séma működésének elképzeléséhez vegye fontolóra, hogy a feladó egy lakattal lezárt dobozba helyezi az üzenetet, és továbbadja a dobozt a címzettnek. Az üzenet el van rejtve a címzett elől, aki maga nem tudja kinyitni a zárat. Attól a pillanattól kezdve, hogy az üzenetdoboz a címzett birtokába kerül, a doboz tartalmát a feladó nem tudja megváltoztatni – a dobozt egyszerűen kinyitja, ha a küldő később úgy dönt, hogy átadja a kulcsot a címzettnek.
A kötelezettségrendszerben két fél interakciója két szakaszban történik:
Az egyszerű kötelezettségvállalási sémákban az átviteli szakasz egyetlen üzenet elküldéséből áll a feladótól a fogadó felé. Ezt az üzenetet elkötelezettségnek nevezik. Fontos, hogy a kiválasztott érték ebben a fázisban ne tudható a címzett számára (ezt nevezzük rejtőzködő tulajdonságnak). Az egyszerű közzétételi szakasz abból áll, hogy a feladó egyetlen üzenetet küld a címzettnek, majd a címzett egy kötelezettségvállalási ellenőrzést hajt végre. Az átviteli fázisban választott érték lehet az egyetlen, amelyet a küldő ki tud számítani, és amelyet a bővítési fázis során ellenőriznek (ezt hívják kötési tulajdonságnak).
A kötelezettségvállalási sémák fogalmát talán először Gilles Brassard , David Chaum és Claude Crepeau formalizálta 1988-ban [2] különböző típusú kötelezettségvállalási sémákon alapuló, NP-osztályú nulla tudásalapú protokollok részeként [3] . A koncepciót korábban is használták, de formai megfontolás nélkül. A kötelezettségek fogalma megjelent Manuel Bloom [4] és mások munkáiban, vagy mondjuk az eredeti egyszeri egybites aláírási séma Lamport -aláírásának részeként .
Tegyük fel , hogy Alice és Bob egy érme feldobásával akarnak megoldani egy vitát . Ha fizikailag ugyanazon a helyen vannak, az eljárás a következő:
Ha Alice és Bob nem ugyanazon a helyen vannak, akkor probléma van a vita megoldásával. Miután Alice kitalálta, és elmondta Bobnak, hazudhat az érmefeldobás eredményéről oly módon, hogy az eredmény az ő számára nyer. Hasonlóképpen, ha Alice nem jelenti be a tippjét Bobnak, miután Bob feldobja az érmét és bejelenti az eredményt, Alice jelentheti, hogy megjósolta a számára nyerő eredményt. Alice és Bob egy kötelezettségvállalási sémát használhat ebben az eljárásban, amely lehetővé teszi, hogy mindketten megbízzanak az eredményben:
Ahhoz, hogy Bob a maga javára torzítsa az eredményeket, teljesítenie kell a benne foglalt kötelezettséget. Ha a kötelezettségvállalási séma jól felépített, akkor Bob nem tudja torzítani az eredményeket. Ezenkívül Alice nem tudja befolyásolni az eredményt, ha nem tudja megváltoztatni az általa előre megjósolt értéket a dobás és a commit előtt [4] [5] .
Ennek a problémának az igazi alkalmazása akkor létezik, amikor az emberek (gyakran a médiában) döntést hoznak, és egy „lezárt borítékban” adják meg a választ, amelyet egy későbbi időpontban kinyitnak.
Az egyik jól ismert konkrét példa a kötelezettségvállalási séma használata a nulla tudásalapú bizonyításokban . A kötelezettségvállalásokat ezekben a protokollokban két fő céllal használják: először is, hogy a feladó részt vehessen olyan sémákban, ahol az ellenőrző választási lehetőséget kap, hogy mit ellenőrizzen, a küldő pedig csak azt mutatja meg, ami megfelel az ellenőrző választásának. A kötelezettségvállalási sémák lehetővé teszik a feladó számára, hogy minden információt előre megadjon, és csak azt fedje fel, amit később tudnia kell a bizonyításban [6] . A kötelezettségvállalásokat a zéró tudás bizonyítása során is használja a hitelesítő, aki gyakran előre megadja választását a kötelezettségvállalásban. Ez lehetővé teszi a nulla tudásszintű igazolások párhuzamos építését anélkül, hogy a feladótól a címzett felé redundáns információ derülne ki [7] .
A kötelezettségvállalási séma másik fontos felhasználási területe az ellenőrizhető titkos megosztás megvalósítása, amely a bizalmas számítási protokoll kritikus építőköve . A titkos megosztási sémában az üzenetet részekre osztják – „részvényekre”, és a több fél mindegyike „részvényeket” kap, amelyeket mindenki elől el kell rejteni, kivéve az adott rész tulajdonosát. A titkot csak az eredeti csoport résztvevőiből álló koalíció teremtheti újra, és a koalíciónak legalább néhány, kezdetben ismert számú résztvevőt kell tartalmaznia. A titkok megosztása a biztonságos számítástechnika számos protokolljának középpontjában áll: például egy bizonyos megosztott bemenettel rendelkező funkciók biztonságos kiértékeléséhez, ahol titkos megosztott erőforrásokat használnak. Ha azonban a támadók megosztott erőforrásokat generálnak, sérülékenység keletkezhet, és ellenőrizni kell az erőforrások helyességét. Egy ellenőrizhető titokmegosztási konstrukcióban a titok megosztása egyedi megosztási kötelezettségvállalással jár. A kötelezettségvállalások semmi olyat nem árulnak el, ami segíthetne a támadóknak, de lehetővé teszik az egyes felek számára, hogy ellenőrizzék a megosztásaik helyességét, és kiszűrjék a támadókat [8] .
A kötelezettségvállalási séma lehet teljesen kötelező (Alice nem változtathatja meg a doboz tartalmát az átvitel után, még akkor sem, ha korlátlan számítási erőforrással rendelkezik), vagy tökéletesen elrejtőzhet (Bob nem tudja kinyitni a dobozt, amíg Alice át nem adta a kulcsot, még akkor sem, ha korlátlanul rendelkezik vele). számítási erőforrások). ), de nem egyszerre [9] .
Érdekes kérdés merül fel a kvantumkriptográfiában : léteznek-e kvantumszinten feltétel nélkül biztonságos bithez kötött kötelezettségvállalási sémák, vagyis olyan protokollok, amelyek (legalábbis aszimptotikusan) kötődnek és rejtőznek, még akkor is, ha a számítási erőforrásoknak nincs korlátja? Remélhetőleg lesz mód a kvantummechanika belső tulajdonságainak kiaknázására , például a kvantumkulcs-elosztási protokollban . [tíz]
1993-ban javasoltak egy protokollt a bitkötelezettségek megvalósítására a kvantummechanikán belül, és ennek a protokollnak a feltétel nélküli biztonsága már jó ideje általánosan elfogadott. Ez az eredmény azonban tévesnek bizonyult. A BCJL protokollnak nevezett protokoll bizonytalansága 1995 őszén bebizonyosodott. 1996-ban Dominic Myers elméletileg bebizonyította, hogy lehetetlen egy feltétel nélkül biztonságos sémát megvalósítani. Bármely ilyen protokoll lecsökkenthető protokolllá, ha a rendszer az átviteli fázis után két tiszta állapot egyikében van , attól függően, hogy Alice milyen bitet akar rögzíteni. Ha a protokoll tökéletesen rejtőzik, akkor Alice ezeket az állapotokat egységesen egymásba tudja alakítani a Schmidt-dekompozíció tulajdonságaival , hatékonyan elnyomva a kötési tulajdonságot [11] .