Кіріспе

Шифрлау алдында хабарға деректерді қосу оның ұзындығын жасыру үшін криптография. Криптографияда, толтыру – шифрлау алдында хабардың басына, ортасына немесе соңына деректер қосылатын бірнеше әртүрлі тәсілдердің жиынтығы. Классикалық криптографияда, толтыру көптеген хабарламалардың болжамды тәсілмен аяқталуын жасыру мақсатында хабарламаға мағынасыз сөздер мен тіркестер қосуды қамтиды, мысалы, «іскерлікпен сіздікі».

Блок шифрлаудың жұмыс режимі

Шифрлау блоктарының тізбегі (CBC) режимі – блок шифрінің жұмыс режимінің мысалы. Кейбір блок шифрінің жұмыс режимдері (CBC және PCBC негізінен) симметриялық кілтті шифрлеу алгоритмдері үшін блок өлшеміне еселенген қара мәтін енгізуді талап етеді, сондықтан хабарламаларды осы ұзындыққа жеткізу үшін толтыру қажет болуы мүмкін. Қазіргі уақытта блок режимінен ағынды режимге көшу байқалуда. Ағынды режимдегі шифрлеудің мысалы – санаушы режимі. Ағынды жұмыс режимдері кез келген өлшемдегі хабарламаларды шифрлей және дешифрлей алады, сондықтан толтыру қажет емес. Шифрмәтін ұрлау немесе қалдық блокты тоқтату сияқты хабарламаны аяқтаудың күрделі әдістері толтыру қажеттілігін жоққа шығарады. Толтырудың кемшілігі – ол хабарламаның қара мәтінін толтыру оракулдарына (padding oracle) сезімтал етеді. Толтыру оракулдарына жасалатын шабуылдар шабуылшыға блок шифрін тікелей бұзбай-ақ қара мәтін туралы ақпарат алуға мүмкіндік береді. Толтыру оракулдарына жасалатын шабуылдардан сақтану үшін шабуылшы толтыру байттарын жою туралы ақпарат ала алмайтынына көз жеткізу керек. Бұл толтыру байттарын жою алдында хабарламаның аутентификациялық кодын (MAC) немесе цифрлық қолтаңбасын тексеру арқылы немесе ағынды жұмыс режиміне ауысу арқылы жүзеге асырылуы мүмкін.

Бетті төсем

Биттік толтыру кез келген өлшемдегі хабарламаларға қолданылуы мүмкін. Хабарға бір "1" биті қосылады, содан кейін қажетті "0" биттері қосылады (мүмкін, ешқайсысы да). Қосылатын "0" биттерінің саны хабарламаны кеңейту қажет болатын блок шекарасына байланысты болады. Биттік мәнде бұл "1000 0000" болып көрсетіледі. Бұл әдіс байттың толық санына жетпесе де, кез келген бит санындағы хабарламаларды толтыру үшін қолданылуы мүмкін. Мысалы, 32 биттік блокты толтыру үшін 9 битпен толтырылған 23 биттік хабар:

| 1011 1001 1101 0100 0010 0111 0000 0000 |

Бұл толтыру MD5 және SHA сияқты көптеген хэш-функцияларында қолданылатын екі қадамдық толтыру схемасының бірінші қадамы болып табылады. Бұл ретте, ол RFC1321 3.1-тарауында сипатталған. Бұл толтыру схемасы ISO/IEC 9797-1 стандартында Толтыру әдісі 2 ретінде анықталған.

Байт толтыруы

Байтты толтыру, мәлімдемелердің нақты бір сан байт ретінде кодталатын жағдайларында қолданылуы мүмкін.

Жария кілт криптографиясы

Жария кілт криптографиясында padding – PKCS#1 v2.2, OAEP, PSS, PSSR, IEEE P1363 EMSA2 және EMSA5 сияқты ережелерді немесе схемаларды пайдаланып, шифрлау немесе қол қою үшін хабарламаны дайындау процесі. Асимметриялық алгоритмдер үшін padding-тің қазіргі заманғы түрі – RSA алгоритміне қолданылатын OAEP, ол шектеулі көлемдегі байттарды шифрлау үшін қолданылады. Бұл операция "padding" деп аталады, себебі бастапқыда хабарламаға кездейсоқ деректер қосылып, алгоритм үшін қажетті ұзындыққа жеткізілген. Мұндай padding қауіпсіз емес, сондықтан қазір қолданылмайды. Қазіргі заманғы padding схемасы шабуылшының қарапайым мәтінді өзгертіп, алгоритмнің математикалық құрылымын пайдалана алмайтынына кепілдік беруді мақсат етеді және көбінесе, кездейсоқ оракул моделінде, padding схемасын бұзу алгоритмнің негізгі қиын мәселесін шешумен бірдей қиын екенін дәлелдейтін құжаттармен бірге келеді.

Жол қозғалысын талдау және төсеме арқылы қорғау

Тіпті ең жақсы криптографиялық әдістер қолданылса да, шабуылшы жасалған трафиктің мөлшерін біле алады. Шабуылшы Алиса мен Боб не туралы сөйлескенін білмесе де, олар сөйлескенін және қанша сөйлескенін біле алады. Кейбір жағдайларда мұндай ақпараттың жасырынынан шығуы өте зиянды болуы мүмкін. Мысалы, әскерилер басқа елге қарсы құпия шабуыл ұйымдастырғанда, екінші елді ескерту үшін, олардың көп құпия әрекеттері болып жатқанын білу жеткілікті болуы мүмкін. Тағы бір мысал келтейік, өзгермелі биттік жылдамдықпен кодталған Voice Over IP ағындарын шифрлау кезінде, уақыт бірлігіне шаққандағы биттер саны жасырылмайды, осыны пайдаланып айтылған сөздерді болжауға болады. Сол сияқты, көптеме видео кодектері жасаған импульстік үлгілер, пайдаланушы тамашалап жатқан видеоағынды бірегей анықтауға көбінесе жеткілікті. Тіпті веб-сайт, файл, бағдарламалық қамтамасты жүктеу немесе онлайн-видео сияқты нысанның жалпы мөлшері ғана, егер шабуылшы нысанның қай жиынтыққа жататынын білсе немесе болжаса, сол нысанды бірегей анықтай алады. Шифрланған мазмұнның жақтағы арнасы, белгілі CRIME және BREACH шабуылдарында HTTPS байланысынан құпия сөздерді алу үшін қолданылды. Шифрланған хабарламаны толтыру, оның нақты ұзындығын жасыра отырып, трафик талдауын қиындатады. Хабарды толтыру үшін таңдалған ұзындық детерминистік немесе кездейсоқ болуы мүмкін; әрбір тәсілдің әртүрлі жағдайларда қолданылатын артықшылықтары мен кемшіліктері бар.

Кездейсоқ төсемелеу

Хабардың соңына қосымша биттер немесе байттардың кездейсоқ саны тіркелуі мүмкін, сонымен қатар соңында қанша толтыру қосылғаны туралы ақпарат беріледі. Егер толтыру мөлшері, мысалы, 0 мен ең жоғары M аралығындағы біркелкі кездейсоқ сан ретінде таңдалса, онда тыңдаушы хабарламаның ұзындығын осы аралықта нақты анықтай алмайды. Егер максималды толтыру M хабарламаның жалпы көлемімен салыстырғанда шағын болса, онда бұл толтыру көп шығын тудырмайды, бірақ толтыру объектінің жалпы ұзындығының ең маңызды емес биттерін ғана жасырады, ал үлкен объектілердің шамамен ұзындығын оңай байқауға болады, сондықтан оларды ұзындығы арқылы бірегей анықтау мүмкіндігі сақталады. Керісінше, егер максималды толтыру M пайдалы жүктеменің көлемімен шамалас болса, тыңдаушының хабардың нақты жүктемесінің көлемі туралы белгісіздігі әлдеқайда артады, бірақ толтыру хабарламаға 100% дейін қосымша шығын (2 есеге ұлғаю) тудыруы мүмкін. Сонымен қатар, тыңдаушы бір жіберушіден бірнеше хабарды көру мүмкіндігіне ие болған және бұл хабарлар шабуылшы білетін немесе болжай алатын белгілі бір ерекшеліктермен ұқсас болған жағдайда, тыңдаушы статистикалық әдістерді қолданып, кездейсоқ толтырудың тиімділігін азайта алады, тіпті жоя да алады. Мысалы, егер пайдаланушының қолданбасы үнемі бірдей ұзындықтағы хабарламаларды жіберсе және тыңдаушы пайдаланушының қолданбасын саусағының іздері арқылы тану негізінде бұл фактіні білсе немесе болжай алса. Басқа жағдайда, белсенді шабуылшы соңғы нүктені үнемі хабарламалар жіберуге мәжбүрлей алады, мысалы, егер құрбан – қоғамдық сервер болса. Мұндай жағдайларда тыңдаушы әдеттегі хабарламаның жүктемесінің ұзындығын анықтау үшін көптеген байқаулардың орташа есебін шығара алады.

Детерминистік төсеме

Детерминистік толтыру схемасы әрқашан белгілі бір ұзындықтағы хабарлама жүктемесін, сәйкес келетін белгілі бір шығыс ұзындығында шифрланған хабарламаны құру үшін толтырады. Егер көптеген жүктеме ұзындықтары бірдей толтырылған шығыс ұзындығына сәйкес келсе, тыңдаушы осы ұзындық шегіндегі жүктеменің нақты ұзындығы туралы ешқандай ақпаратты ажырата алмайды немесе біле алмайды, тіпті бірдей ұзындықтағы көптеген хабарламаларды байқағаннан кейін де. Осы тұрғыдан алғанда, детерминистік толтыру схемаларының артықшылығы – бірдей жүктеме көлеміндегі әрбір келесі хабарламамен қосымша ақпараттың берілуін болдырмау. Екінші жағынан, тыңдаушы жүктеме көлемінің шағын өзгерістерінен, мысалы, парольті болжау шабуылында бір байтты қосу немесе алып тастау сияқты, пайда көре алады делік. Егер хабарлама жіберуші көптеген хабарламаларды жіберу үшін бақытсыз болса, олардың жүктеме ұзындығы бір байтқа ғана өзгереді және бұл ұзындық екі детерминистік толтыру кластарының шекарасында болса, онда бұл плюс немесе минус бір жүктеме ұзындығы тұрақты түрде әртүрлі толтырылған ұзындықтарды да тудырады (мысалы, плюс немесе минус бір блок), шабуылшыға қажетті нақты ақпаратты ағызады. Мұндай тәуекелдерге қарсы, кездейсоқ толтыру хабарлама ұзындығының ең аз маңызды биттерін тәуелсіз түрде жасыра отырып, қосымша қорғауды ұсына алады. Көптеген детерминистік толтыру әдістеріне тұрақты блок өлшеміне толтыру және ең жақын үлкен екілік санға толтыру жатады. Алайда, M шағын ең жоғары мәні бар кездейсоқ толтыру сияқты, хабарлама жүктемесінен әлдеқайда кішкентай блок өлшеміне детерминистік түрде толтыру хабарламалардың ең аз маңызды биттерін ғана жасырады, хабарламаның нақты шамамен ұзындығын қорғамайды. Хабарларды екілік санға (немесе кез келген басқа тұрақты негізге) толтыру, хабарлама ұзындығы арқылы берілуі мүмкін ақпараттың ең көп мөлшерін O(log M)-ден O(log log M)-ге дейін азайтады. Екілік санға толтыру хабарлама көлемінің қосымша шығынын 100%-ға дейін арттырады, ал үлкен бүтін сан негіздерінің күштеріне толтыру ең жоғары шығынды одан әрі арттырады. PADMÉ схемасы, толтырылған біркелкі кездейсоқ блобтар немесе PURB үшін ұсынылған, хабарламаларды оның экспонентасынан ұзын емес (яғни, маңызды биттерден аспайтын) қалқыма нүктелі сан ретінде көрсетілетін ұзындықтарға детерминистік түрде толтырады. Бұл ұзындық шектеуі хабарламаның ұзындығы арқылы ең көп O(log log M) бит ақпаратты ағызуын қамтамасыз етеді, екілік санға толтыру сияқты, бірақ кішкентай хабарламалар үшін ең көп 12%-ға дейін азайтылған шығынмен және хабарлама көлемімен біртіндеп төмендейді.