Кіріспе

Криптографияда қарсыластың артықшылығы – криптографиялық алгоритмге шабуыл жасаудың қаншалықты сәтті екенін өлшеудің бір жолы, оны сол типтегі алгоритмнің идеалданған нұсқасынан ажырату арқылы. Бұл контексте "қарсылас" – адам емес, алгоритм екенін ескеріңіз. Криптографиялық алгоритм, егер қарсыластың есептеу ресурстарының белгіленген шектеріне байланысты, қарсыластың нақты емес артықшылығы болмаса, қауіпті деп есептеледі (нақты қауіпсіздікке қараңыз). "Нақты емес" әдетте "O(2−p)" ішінде дегенді білдіреді, мұнда p – алгоритммен байланысты қауіпсіздік параметрі. Мысалы, p – блок шифры кілтіндегі биттер саны болуы мүмкін.

Тұжырымдаманың сипаттамасы

F зерттеліп жатқан функцияның оракулы болсын, ал G сол типтегі идеалданған функцияның оракулы болсын. Қарсылас A – F немесе G кіріс ретінде берілген, 1 немесе 0 шығаратын ықтималдық алгоритмі. А-ның міндеті – берілген оракулға сұрақтар жолдау арқылы F пен G арасын ажырату. Біз былай айтамыз:

Мысалдар

F DES блоктық шифрінің кездейсоқ мысалы болсын. Бұл шифр 64 биттік блоктардан және 56 биттік кілттен тұрады. Сондықтан кілт 264 мүмкін 64 биттік блоктардың 256 мүмкін орналасуының бірін таңдайды. "Кездейсоқ DES мысалы" дегеніміз, біздің F оракулымыз DES-ті K кілтін (жау үшін белгісіз) пайдаланып есептейді, мұнда K 256 мүмкін кілттердің арасынан тең ықтималдықпен таңдалады. Біз DES мысалын идеалдандырылған 64 биттік блок шифрімен салыстырғымыз келеді, яғни 64 биттік блоктардың (264)! мүмкін орналасуларынан кездейсоқ таңдалған орналасу. Бұл кездейсоқ таңдалған орналасуды G деп атайық. Стирлинг жуықтауынан (264)! шамамен тең екенін ескеріңіз, сондықтан қандай орналасу таңдалғанын анықтау үшін нақты компьютерде дәл көрсетуге тым үлкен санды жазу қажет. Басқаша айтқанда, G – бұл "шифр" мысалы, оның "кілт ұзындығы" шамамен 1021 бит, бұл да компьютерде сақтау үшін тым үлкен. (Бірақ біз кездейсоқ оракул қолданып, сұраулар санына пропорционал сақтау кеңістігімен G-ді іске асыра аламыз). Бізге берілген оракулдар кез келген таңдалған мәтінді шифрлайтындықтан, біз таңдалған мәтіндік шабуылды немесе CPA модельдейміз, ал біз есептеген артықшылықты аталған қарсыластың CPA артықшылығы деп атауға болады. Егер бізде шифрлау оракулдары да болса, біз таңдалған шифрмәтіндік шабуылды немесе CCA-ны жасап, қарсыластың CCA артықшылығын табатын болар едік.

1-ші мысал: Кездейсоқ болжау

Осы қарсыласты А0 деп атаңыз. Ол жай ғана тиықты лақтырып, тең ықтималдықпен 1 немесе 0 қайтарады, ал оракулға сұрау жасамайды. Сондықтан, Pr[A0(F)=1] және Pr[A0(G)=1] екеуі де 0,5-ке тең. Бұл ықтималдықтардың айырмашылығы нөл болғандықтан, Adv(A0) нөлге тең. Егер біз әрқашан 0 немесе әрқашан 1 қайтаратын болсақ, F және G үшін ықтималдық бірдей болады, демек, артықшылық нөл. Бұл қарсылас F пен G-ді ажырата алмайды. Егер біз шифр жасаушылар болсақ, біздің тілегіміз (әлдеқайда қиынға соғуы мүмкін) – кез келген қарсыластың осыдан едәуір жақсы нәтиже көрсетуіне есептеу жүзінде мүмкіндік бермеу. Егер біз күшпен іздеуден жылдам болатын айырмашылықты таба алмайтын шифр құра алсақ, онда біз сәттілікке жеткен болар едік.