Cyklický redundantný súčet: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
 
(8 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených)
Riadok 1: Riadok 1:
=CRC=
+
[[Kategória:Algoritmy a programovanie]]
  
 
==Kontrola cyklickým kódom==
 
==Kontrola cyklickým kódom==
Riadok 15: Riadok 15:
 
Kontrola cyklickým kódom - ako každý kontrolný súčet - mierne zväčšuje redundanciu správy, ale zvyšuje jej spoľahlivosť.
 
Kontrola cyklickým kódom - ako každý kontrolný súčet - mierne zväčšuje redundanciu správy, ale zvyšuje jej spoľahlivosť.
  
==Posuvný register X-OR==
+
==Výhradný logický súčet X-OR (EXCLUSIVE OR)==
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
|+ A+B=Y
+
|+ <math>Y = A \oplus B</math>
 
|-
 
|-
 
! A
 
! A
Riadok 41: Riadok 41:
 
|  0
 
|  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==
 
==Príklad výpočtu CRC==
 +
Napríklad:
 +
Postupnosť bitov "100101" môže byť predpísaný ako polynóm x<sup>5</sup> + x<sup>2</sup> + 1, postupnosť bitov "110011" môže byť predpísaný ako polynóm  x<sup>5</sup> + x<sup>4</sup> + x + 1. Pokiaľ nad bitmi  týchto dvoch  postupností prevedieme operáciu X-OR, dostávame postupnosť "010110", ktorá odpovedá polynómu x<sup>4</sup> + x<sup>2</sup> + x.
 +
 +
(x<sup>5</sup> + x<sup>2</sup> + 1) + (x<sup>5</sup> + x<sup>4</sup> + x + 1) = 2x<sup>5</sup> + x<sup>4</sup> + x<sup>2</sup> + x + 2 = x<sup>4</sup> + x<sup>2</sup> + 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.

Aktuálna revízia z 17:31, 24. máj 2010


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)

[math]Y = A \oplus B[/math]
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.