Cyklický redundantný súčet
Obsah
Kontrola cyklickým kódom
Kontrola cyklickým kódom alebo cyklická kontrola (angl. cyclic redundancy check, skrátene CRC) je druh kontrolného súčtu používaného na kontrolu správnosti prenášaných údajov v telekomunikačnej technike a počítačových sieťach, ako aj uložených údajov na pamäťových médiách ako je napríklad pevný disk.
Kódovanie i dekódovanie CRC sa robí softwarovo, alebo hardwarovo (pomocou posuvných registrov so spätnými väzbami). I keď matematický aparát na prvý pohľad vyzerá "hrozivo", v prípade binárnych signálov (dvojkovej sústavy) je jeho realizácia (i hardwarová) pomerne jednoduchá a preto veľmi často využívaná
Princíp kódovania údajov
Na základe jednotlivých bitov sa vypočítava zabezpečovací údaj. Ten sa na konci celého bloku porovná so zabezpečovacím údajom, ktorý podľa rovnakých pravidiel vypočítal odosielateľ a pripojil k prenášanému bloku dát. Ak sa tieto dva údaje zhodujú, dá sa prenesený blok s vysokou pravdepodobnosťou predpokladať za správny.
K výpočtu zabezpečovacieho údaju nám postačí jednoduchý posuvný register, umožňujúci operáciu X-OR (tj. výhradné ALEBO jednotlivých bitov) s pevne danou maskou. Hodnota tejto masky je jednoznačne určená tzv. generujúcim polynómom (generating polynomial), na ktorom musia byť príjemca i odosielateľ vopred dohodnutí. Použiteľných polynómov týchto tvarov je viacej. V sieťovej komunikácií sa najčastejšie používa polynóm x16 + x12 + x5 + 1, doporučený organizáciou CCITT.
Kontrola cyklickým kódom - ako každý kontrolný súčet - mierne zväčšuje redundanciu správy, ale zvyšuje jej spoľahlivosť.
Výhradný logický súčet X-OR (EXCLUSIVE OR)
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Kontrolný súčet
Kontrolný súčet (angl. checksum) je v informatike menšie množstvo dát, ktoré vznikne ako následok určitej operácie na nejakom väčšom dátovom bloku. Využíva sa ako ochranný a kontrolný mechanizmus na zistenie poškodenia (prípadne opravu) dátového bloku počas jeho archivácie alebo prenosu. Kontrolný súčet, ktorý umožňuje opravu poškodených dát, sa nazýva samoopravný kód.
Prakticky najmenším množstvom údajov chráneným samostatným kontrolným súčtom je dátové slovo, ktoré sa prenáša (napríklad. pri 8-bitovom prenose je to jeden byte). Obvykle sa používa súčet vo forme jediného
ďalšieho bitu - parity.
CRC je vhodný pre zisťovanie chýb vzniknutých v dôsledku zlyhania techniky, avšak ako metóda pre odhalenie zámernej zmeny dát počítačovými pirátmi je príliš slabý. V tomto prípade je treba používať špeciálnu hašovaciu funkciu určenú pre kryptovacie algoritmy.
Zložitejšie kontrolné súčty schopné detekovať chyby v rozsiahlych súboroch sa nazývajú hash funkcie.
Hash funkcia
Hash funkcia je jednosmerná matematická funkcia, ktorá transformuje rozsiahly vstupný blok binárnych údajov premenlivej dĺžky na "odtlačok" pevnej dĺžky o relatívne malom počte bitov, pričom platí:
- z odtlačku nie je možné spätne rekonštruovať pôvodný vstupný blok ani ktorúkoľvek jeho časť
- akákoľvek zmena (a to aj v jedinom bite) vo vstupnom bloku sa prejaví výraznou zmenou hodnoty "odtlačku"
- má antikolíznu vlastnosť, t. j. nie je reálne, aby z rôznych vstupných blokov binárnych údajov vznikol rovnaký "odtlačok"
Funkcia sa využíva napríklad na overovanie hesiel,kedy sa zo zadaného hesla užívateľom spraví "odtlačok" a ten sa porovná s uloženým "odtlačkom", ktorý bol vytvorený pomocou hash funkcie napríklad pri tvorbe užívateľského konta.
Príklad výpočtu CRC
Napríklad: Postupnosť bitov "100101" môže byť predpísaný ako polynóm x5 + x2 + 1, postupnosť bitov "110011" môže byť predpísaný ako polynóm x5 + x4 + x + 1. Pokiaľ nad bitmi týchto dvoch postupností prevedieme operáciu X-OR, dostávame postupnosť "010110", ktorá odpovedá polynómu x4 + x2 + x.
(x5 + x2 + 1) + (x5 + x4 + x + 1) = 2x5 + x4 + x2 + x + 2 = x4 + x2 + x
Práve jednoduchá implementácia operácií nad bitovými postupnosťami je jedným z hlavných dôvodov širokého rozšírenia CRC algoritmov.