Кіріспе
Деректерді басқа деректердегі қателерді анықтау үшін қолданылады.
Тексеру сомасы – деректерді беру немесе сақтау кезінде енгізілген қателерді анықтау мақсатында басқа цифрлық деректер блогынан туындайтын, кішкентай көлемді дерек блогы. Тексеру сомалары көбінесе деректердің бүтіндігін тексеру үшін қолданылады, бірақ деректердің нақтылығын тексеру үшін оларға сенуге болмайды. Осы тексеру сомасын жасайтын процедура тексеру сомасының функциясы немесе алгоритмі деп аталады. Жобалау мақсаттарына байланысты, жақсы тексеру сомасы алгоритмі кіріске енгізілген шағын өзгерістерге де айтарлықтай өзгеше мән береді. Бұл әсіресе криптографиялық хэш-функцияларға қатысты, олар көптеген деректердің бұзылу қателерін анықтау және жалпы деректердің бүтіндігін тексеру үшін пайдаланылуы мүмкін; егер ағымдағы деректер үшін есептелген тексеру сомасы бұрын есептелген тексеру сомасының сақталған мәнімен сәйкес келсе, деректердің кездейсоқ түрде өгертілмеуі немесе бұзылмауының ықтималдығы өте жоғары. Тексеру сомасының функциялары хэш-функциялармен, саусақ іздерімен, кездейсоқ функциялармен және криптографиялық хэш-функциялармен байланысты. Дегенмен, осы түсініктердің әрқайсысының әртүрлі қолданылуы бар, сондықтан әртүрлі жобалау мақсаттары бар. Мысалы, жолдың басын қайтаратын функция кейбір қолданулар үшін қолайлы хэш-тегін бере алады, бірақ ешқашан қолайлы тексеру сомасы болмайды. Тексеру сомалары үлкенірек аутентификация алгоритмдерінде криптографиялық құрал ретінде қолданылады. Осы екі нақты жобалау мақсатына ие криптографиялық жүйелер үшін HMAC-қа қараңыз. Тексеру таңбалары мен паритет биттері – бұл тексеру сомаларының ерекше жағдайлары, олар деректердің кішкентай блоктары үшін (мысалы, әлеуметтік қамсыздандыру нөмірлері, банк шоттарының нөмірлері, компьютерлік сөздер, жеке байттар және т.б.) қолайлы. Кейбір қателерді түзету кодтары арнайы тексеру сомаларына негізделген, олар ғана емес, сонымен қатар кейбір жағдайларда бастапқы деректерді қалпына келтіруге мүмкіндік береді.
Батырма байт немесе батырма сөз
Ең қарапайым тексеру алгоритмі – ұзындықтық теңдік тексеруі, ол деректерді n биттен тұратын "сөздерге" бөледі, содан кейін барлық сөздердің биттік эксклюзивті немесе (XOR) амалын есептейді. Нәтиже хабарламаға қосымша сөз ретінде тіркеледі. Тұрақтырақ айтқанда, n=1 болғанда, деректер бітінің соңына бір бит қосылып, '1'-дің жұп саны қамтамасыз етіледі. Хабардың дұрыстығын тексеру үшін қабылдаушы барлық сөздерінің, соның ішінде тексеру қосындысының биттік эксклюзивті санын есептейді; егер нәтиже n нөлден тұратын сөз болмаса, қабылдаушы тарату қатесі болғанын түсінеді. Осы тексеру қосындысымен хабардың бір битін немесе біттердің тақ санын өзгертетін кез келген тарату қатесі, дұрыс емес тексеру сомасы ретінде анықталады. Дегенмен, егер бұл биттер екі әртүрлі сөздің бірдей орнында болса, екі битке әсер ететін қате анықталмайды. Сондай-ақ, екі немесе одан көп сөздердің орнын ауыстыру да анықталмайды. Егер зардап шеккен биттер кездейсоқ таңдалса, екі биттік қате анықталмау ықтималдығы 1/n-ге тең болады.
Қосымша жиынтық
Алдыңғы алгоритмнің бір түрі – барлық "сөздерді" қолтаңбасыз екілік сандар ретінде қосу, артық биттерді жою және қосындының екілік толықтыруын тексеру сомасы ретінде тіркеу. Хабарды тексеру үшін қабылдаушы барлық сөздерді, тексеру сомасын қоса, сол тәсілмен қосады; егер нәтиже нөлдерден тұратын сөз болмаса, қате пайда болған. Бұл түр де бір биттік қатені анықтайды, бірақ SAE J1708 модулдік қосындыны пайдаланады.
Орынға тәуелді
Жоғарыда сипатталған қарапайым тексеру жиынтықтары бір уақытта көптеген биттерге әсер ететін кейбір жалпы қателерді анықтай алмайды, мысалы, дерек сөздерінің ретін өзгерту, немесе барлық биттері нөлге тең сөздерді қосу немесе жою. Флетчер тексеру жиынтығы, Адлер 32 және циклдық артықтық тексеру (CRC) сияқты практикада ең көп қолданылатын тексеру жиынтығы алгоритмдері, әр сөздің мәнін ғана емес, сонымен қатар тізбектегі орнын ескере отырып, бұл әлсіздіктерді жояды. Бұл мүмкіндік әдетте тексеру жиынтығын есептеу құнын арттырады.
Қаңқалы тексеру сомасы
Фаззи тексеру сомасы (fuzzy checksum) идеясы, бірнеше интернет-провайдерлердің күдікті спам электрондық поштадан бірлескен деректер базасын құру арқылы электрондық пошта спамын анықтау үшін әзірленді. Мұндай спамның мазмұны әдетте мәліметтері бойынша әртүрлі болуы мүмкін, бұл стандартты тексеру сомасын тиімсіз етеді. Ал, "фаззи тексеру сомасы" мәтіннің негізгі бөлігін оның ең маңызды бөлігіне дейін қысқартады, содан кейін тексеру сомасын қалыпты тәртіппен жасайды. Бұл, сәл өзгеше спам электрондық пошталарының бірдей тексеру сомасын шығару ықтималдығын арттырады. Бірлесіп жұмыс істейтін интернет-провайдерлердің спамды анықтау бағдарламалық құралдары, мысалы, SpamAssassin, барлық электрондық поштаның тексеру сомасын DCC сияқты орталықтандырылған қызметке жібереді. Егер ұсынылған фаззи тексеру сомасының саны белгілі бір шектен асып кетсе, деректер базасы бұл спам болуы мүмкін екенін көрсетеді. Интернет-провайдердің қызметін пайдаланушылар да әрбір электрондық поштасы үшін фаззи тексеру сомасын жасайды және қызметтен спамға ұқсас болу ықтималдығын сұрайды.
Жалпы ескертулер
Ұзындығы m битті хабарды m өлшемді гиперкубтың бұрышы ретінде қарастыруға болады. N биттік тексеру сомасын есептейтін тексеру сомасы алгоритмінің әсері – әр m биттік хабарды өлшемі m + n үлкен гиперкубтың бұрышына бейімдеу болып табылады. Бұл гиперкубтың 2^(m + n) бұрышы барлық мүмкін алынған хабарларды көрсетеді. Дұрыс тексеру сомасы бар жарамды алынған хабарлар кішірек жиынды құрайды, олардың саны тек 2^m бұрышқа тең. Бір биттік беріліс қатесі дұрыс бұрыштан (дұрыс хабар және тексеру сомасы) m жақын орналасқан бұрыштардың біріне қадам басуға сәйкес келеді. K битке әсер ететін қате хабарды дұрыс бұрышынан k қадам алысқан бұрышқа жылжытады. Жақсы тексеру сомасы алгоритмінің мақсаты – жарамды бұрыштарды бір-бірінен мүмкіндігінше алыс орналастыру, осылайша "әдеттегі" беріліс қателерінің жарамсыз бұрышта аяқталу ықтималдығын арттыру.