Кіріспе
Криптографияда, соқырлау – агенттің клиентке нақты кіріс немесе нақты шығысты білмей, кодталған түрде қызмет көрсетуі (яғни, функцияны есептеу) үшін қолданылатын әдіс. Соқырлау әдістері шифрлау құрылғыларына жанама арналық шабуылдарды болдырмау үшін де қолданылады. Нақтырақ айтқанда, Алисаның x кірісі бар, ал Оскардың f функциясы бар. Алиса Оскарға y = f(x) есептеп беруді қалайды, бірақ оған x немесе y-ді көрсетпейді. Оның бұны қалаған себебі f функциясын білмеуі немесе оны есептеу үшін ресурстары жоқ болуы мүмкін. Алиса хабарды басқа кіріс E(x) ретінде кодтау арқылы «соқырлайды»; E кодтау f кіріс кеңістігіндегі биекция болуы керек, идеалды жағдайда – кездейсоқ пермутация. Оскар оған f(E(x))-ті береді, оған ол y алу үшін D кодтауын қолданады: D(f(E(x))) = y. Барлық функцияларды соқыр есептеуге рұқсат етілмейді. Кейде соқырлауды мұқият қолдану қажет. Мұның мысалы – Рабин-Уильямс қолтаңбалары. Егер форматталған хабарламаға соқырлау қолданылса, бірақ кездейсоқ мән p және q бойынша Якоби талаптарына сай келмесе, онда ол жеке кілтті қалпына келтіруге әкелуі мүмкін. Евгений Сидоровтың ашқан нәрсесінде қалпына келтірудің мысалын көруге болады. Соқырлаудың кең таралған қолданылуы – соқыр қолтаңбалар. Соқыр қолтаңбалау протоколында қол қоюшы оның мазмұнын білмей-ақ хабарламаға цифрлық қол қояды. Бір реттік жастықша (OTP) – бұл қауіпсіз байланыс мәселесіне соқырлаудың табиғаты бойынша қолданылуы. Алиса Бобқа хабарды құпия түрде жібергісі келеді, бірақ олардың барлық байланыстарын Оскар оқи алады. Сондықтан, Алиса хабарламаны Бобпен бөлісетін құпия кілтпен немесе OTP арқылы соқырлағаннан кейін жібереді. Боб хабарды алғаннан кейін соқырлауды кері қайтарады. Бұл мысалда f функциясы – сәйкестік, ал E және D екеуі де әдетте XOR операциясы болып табылады. Соқырлау асимметриялық шифрлау схемаларына қатысты кейбір жанама арналық шабуылдарды болдырмау үшін де қолданылуы мүмкін. Жанама арналық шабуылдар қарсыласқа алгоритмнің нәтижесінен гөрі басқа нәрсені өлшеу арқылы криптографиялық операцияға енгізілген ақпаратты қалпына келтіруге мүмкіндік береді, мысалы, қуатты тұтыну, есептеу уақыты немесе құрылғының радиожиілік эмиссиясы. Әдетте бұл шабуылдар шабуылшы алгоритмнің сипаттамаларын, сондай-ақ (кейбір) кіріс деректерін білгеніне байланысты. Бұл жағдайда соқырлау алгоритмнің кіріс деректерін болжауға болмайтын күйге өзгерту үшін қолданылады. Бұл соқырлау функциясының ерекшеліктеріне байланысты пайдалы ақпараттың кейбір немесе барлық ағып кетуін болдырмауы мүмкін. Соқырлау функцияларының өзінің жанама арналық шабуылдарға төзімділігіне де қауіпсіздік байланысты екенін ескеріңіз. Мысалы, RSA-да соқырлау E(x) = (xr)^e mod N соқырлау операциясын есептеуді қамтиды, мұнда r – 1 мен N арасындағы кездейсоқ бүтін сан және N-ге салыстырмалы түрде алғашқы (яғни, gcd(r, N) = 1), x – ашық мәтін, e – RSA-ның жалпы көрсеткіші және N – RSA модулі. Әдеттегідей, шифрлау функциясы f(z) = z^d mod N қолданылады, осылайша f(E(x)) = (xr)^ed mod N = xr mod N. Соңында, ол D(z) = zr^(-1) mod N функциясын пайдалана отырып, соқырлаудан босатылады. xr mod N-ді r^(-1) mod N-ге көбейту x-ті береді, қалағандай. Осылайша шифрлау кезінде осы операцияның уақытын өлшейтін қарсылас бұл ақпаратты пайдалана алмайды (RSA уақыт шабуылдарына осал екені белгілі), өйткені ол r тұрақтысын білмейді және сондықтан RSA примитивтеріне берілетін нақты кіріс туралы білімі жоқ.
f is the identity and E and D are both typically the XOR operation. Blinding can also be used to prevent certain side channel attacks on asymmetric encryption schemes. Side channel attacks allow an adversary to recover information about the input to a cryptographic operation, by measuring something other than the algorithm's result, e. g., power consumption, computation time, or radio frequency emanations by a device. Typically these attacks depend on the attacker knowing the characteristics of the algorithm, as well as (some) inputs. In this setting, blinding serves to alter the algorithm's input into some unpredictable state. Depending on the characteristics of the blinding function, this can prevent some or all leakage of useful information. Note that security depends also on the resistance of the blinding functions themselves to side channel attacks. For example, in RSA blinding involves computing the blinding operation 1=E(x) = (xr)e mod N, where r is a random integer between 1 and N and relatively prime to N (i. e. 1=gcd(r, N) = 1), x is the plaintext, e is the public RSA exponent and N is the RSA modulus. As usual, the decryption function 1=f(z) = zd mod N is applied thus giving 1=f(E(x)) = (xr)ed mod N = xr mod N. Finally it is unblinded using the function 1=D(z) = zr−1 mod N. Multiplying xr mod N by r−1 mod N yields x, as desired. When decrypting in this manner, an adversary who is able to measure time taken by this operation would not be able to make use of this information (by applying timing attacks RSA is known to be vulnerable to) as she does not know the constant r and hence has no knowledge of the real input fed to the RSA primitives.
Мысалдар
GPG 1.x нұсқасында көру қабілетін жою (немесе деректерді жасыру)