Кіріспе

Психикалық покер – сенімді үшінші тараптың қатысуынсыз қашықтықтан әділ ойын ойнауға қатысты криптографиялық мәселелер жиынтығының жалпы атауы. Бұл термин сондай-ақ осы мәселелерді және олардың мүмкін шешімдерін зерттейтін теорияларға да қолданылады. Атау покер карта ойынынан алынған, себебі осы мәселелердің бірі осы ойынға қатысты. Екі тарапты ойын ретінде сипатталатын ұқсас мәселелерге Блумның қашықтықтан монета лақтыруы, Яоның «Миллионерлер мәселесі» және Рабиннің жасырын ауыстыруы жатады. Мәселені былай қоюға болады: «Сенімді төрешіге жүгінбестен, белгілі бір ақпаратқа тек рұқсат етілген тұлғалардың ғана қол жеткізуін қалай қамтамасыз етуге болады?» (Сенімді үшінші тарапты жою, оның сенімділігін анықтау қажеттілігінен құтылуға және қажетті ресурстарды азайтуға мүмкіндік береді.) Покерде бұл мынадай сұраққа айналады: «Біз өз қолымыздағы карталарды араластырып жатқанда, ешбір ойыншының колоданы өзгертіп немесе басқа ойыншылардың карталарын қарап алмауына қалай кепілдік беруге болады?» Дәстүрлі карта ойынында, егер ойыншылар бетпе-бет отырып, бір-бірін бақыласа, бұл салыстырмалы түрде оңай болар еді, кем дегенде, әдеттегі алдау мүмкіндігі жоқ болса. Алайда, егер ойыншылар бір-бірінен қашық жерде отырса және бүкіл колоданы бір-біріне жіберсе (мысалы, почта арқылы), бұл кенеттен өте қиынға соғады. Онлайн-покер сияқты электрондық карта ойындарында, ойынның механизмдері пайдаланушыдан жасырылғандықтан, егер қолданылатын әдіс кез келген тарапқа электрондық «колоданы» манипуляциялау немесе орынсыз бақылау арқылы алдауға мүмкіндік бермейтін болса, мұндай ойын мүмкін емес. Мұны істеу үшін бірнеше протокол ұсынылды, алғашқысын Ади Шамир, Рон Ривест және Лен Адлеман (RSA шифрлау протоколының авторлары) жасады. Бұл протокол екі тараптың қауіпсіз хабар алмасудың орнына криптографияны қолдана отырып, қауіпсіз есептеулер жүргізуінің алғашқы мысалы болды. Кейіннен бастапқы протоколдан ішінара ақпараттың жария болуына байланысты Шафи Голдвассер мен Сильвио Микали семантикалық қауіпсіздік тұжырымдамасын ұсынды. Көп ойыншылы психикалық покер тұжырымдамасы Моти Юнгтың 1984 жылғы «Криптопротоколдар» кітабында енгізілді. Бұл сала кейіннен қауіпсіз көп тарапты есептеу протоколдары (екі тарапты және көп тарапты) деп аталатын бағытқа дамыды.

Коммутативтік шифрлауды қолдана отырып, карталарды араластыру

Карталарды сенімді үшінші тарапсыз араластырудың бір мүмкін алгоритмі – коммутативті шифрлау схемасын қолдану. Коммутативті схема дегеніміз, егер дерек бірнеше рет шифрланса, осы деректерді шешу реті маңызды болмайды. Мысалы: Алиса жазылмаған мәтіннен хабарламаға ие. Ол оны шифрлап, бұрмаланған шифрмәтінді алады, содан кейін оны Бобқа береді. Боб сол схеманы Алиса қолданғандай, бірақ басқа кілтпен шифрмәтінді қайта шифрлайды. Шифрлау схемасы коммутативті болса, кім алдымен шешіп алатынының маңызы жоқ.

Әлсіздік

Шифрлау схемасы белгілі ашық мәтіндік шабуылдарға қарсы қауіпсіз болуы керек: Боб Алисаның бастапқы кілтін (немесе оның жеткілікті бөлігін) оның тартқан карталарының шифрланбаған мәндерін білу арқылы анықтай алмауы керек, бұл оған қолында жоқ карталарды шифрдан алуға мүмкіндік бермеуі тиіс. Бұл, мысалы, әр картаны кілтпен XOR операциясы арқылы шифрлеу сияқты, қарапайым коммутативті шифрлау схемаларын жоққа шығарады. (Бастапқы алмасу кезінде әр карта үшін жеке кілт қолдану, бұл схеманы қауіпсіз ететін болса да, карталар қайтарылғанға дейін шатастырылғандықтан жұмыс істемейді.) Келісілген колодаға байланысты бұл алгоритм нашар болуы мүмкін. Деректерді шифрлеген кезде, осы деректердің белгілі бір қасиеттері ашық мәтіннен шифрланған мәтінге дейін сақталуы мүмкін. Бұл белгілі бір карталарды "маркулап" қою үшін пайдаланылуы мүмкін. Сондықтан тараптар шифрлеу кезінде қасиеттері сақталмайтын карталардан тұратын колода туралы келісуі керек.

"Ақылы карта ойындары үшін құралдар қорабы" және оны іске асыру

Кристиан Шиндельгауэр өзінің 1998 жылғы "Ақыл-ойын карта ойындары үшін құралдар жинағы" [SCH98] атты мақаласында карталар мен карталар тізбегінде көптеген пайдалы операцияларды орындау және тексеру үшін күрделі протоколдарды сипаттайды. Бұл жұмыс жалпы мақсаттағы операцияларға (карталарды жасыру және ашу, араластыру және қайта араластыру, тізбекке карта қосу және т.б.) қатысты, бұл протоколдарды кез келген карта ойынына қолдануға мүмкіндік береді. Шиндельгауэр қолданған криптографиялық протоколдар квадраттық қалдықтарға негізделген, ал жалпы схема осы жоғарыдағы протоколға ұқсас. Операциялардың дұрыстығын нөлдік білімді дәлелдер арқылы тексеруге болады, сондықтан ойыншылар ойынның дұрыстығын тексеру үшін өз стратегияларын ашуға міндетті емес. C++ libtmcg [STA05] кітапханасы Шиндельгауэр құралдар жинағының іске асырылуын қамтамасыз етеді. Ол неміс карта ойыны Skat-тың қауіпсіз нұсқасын іске асыру үшін қолданылды, соның нәтижесінде нақты қолданыстағы өнімділік шамалы болды. Skat ойынын үш ойыншы 32 картадан тұратын колодамен ойнайды, сондықтан ол бес-сегіз ойыншы толық 52 картадан тұратын колоданы пайдаланатын покер ойынына қарағанда есептеулер жағынан аз күш кетіреді.