„Ellenőrző összeg” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
Nincs szerkesztési összefoglaló
7. sor:
Az átvitel történhet [[analóg]] vagy [[digitális]] formában is, az ellenőrzőösszeg az utóbbihoz kapcsolódik.
 
A digitális adatátvitel [[bit]]ekreszámjegyekre bontva továbbítja az átvinni kívánt információt. A vevőkészüléknek rendszerint nincs semmilyen előzetes elvárása az adatsorozatról, emiatt ha a bitsorozatraszámsorozatra zaj "rakódik", tehát egy-egy bitszámjegy azhelyett ellenkezőjéremás váltvaszám érkezik meg, azt a vevőkészülék adatként fogadja el. Ugyan az információátviteli technika igen magas fokra ért el a zajszűrés terén, mégis előfordul ilyen adattorzulás, amelyet tehát közvetlenül felfedezni nem lehet. A vevőkészülék biteketszámjegyeket vár, bitekszámjegyek érkeznek, a hiba észrevehetetlen.
 
A zavarforrás által okozott kár annál nagyobb lehet, minél sűrűbb az adatsor jeltartalma. Ha a zavarforrás torzító hatása 0,01 másodpercig tart, akkor egy olyan jelsorozatban, amelyben másodpercenként 100 adat halad, 1-2 bitetszámot fog eltorzítani. Ha az adatsor másodpercenként 5000 adatbitetadatot tartalmaz, tehát nagyobb a jel adatsűrűsége, az átviteli csatorna [[sávszélesség]]e, akkor ebben ugyanaz a zavar már 50-51 bitetszámjegyet képes egyszerre eltorzítani. A híradástechnika egyik fontos része egy átviteli csatorna várható átlagos zajterhelésének az előzetes megállapítása. Ha az adatátvitel tervezői nagy zajra számítanak, akkor ezért lassabb átviteli sebességgel is védekeznek a hibák ellen.
 
A hibák észlelésének legegyszerűbb módja az <u>ellenőrzőösszeg</u> használata. Bármilyen elvi módszert alkalmazunk is, annak a lényege megegyezik. Az adatküldő eszköz az átküldött adatsort egyezményes méretű szakaszokra, csomagokra osztja fel, és minden csomagból valami számítási algoritmus révén előállít egy kiegészítő bitsorozatotszámsorozatot, amelyet a csomag után téve szintén továbbít. Ez a kiegészítő bitsorozatszámsorozat az ellenőrzőösszeg. A vevőkészülék fogadja a jelsorozatot, és ő is az egyezményes módon csomagokra bontja azt. Minden ilyen csomagból ő is előállítja ugyanazon elv alapján az ellenőrzőösszeget, majd összehasonlítja a csomag után küldött ellenőrzőösszeggel. Ha a kettő megegyezik, akkor adott bizonyossággal kijelenthető, hogy az átvitt adatcsomagban nincs hiba, nincs torzulás. Ha viszont a két ellenőrzőösszeg nem azonos, akkor tudható, hogy a jelcsomagban valamilyen torzulás történt, hibát tartalmaz. Hogy ekkor mi a teendő, azt már a rendszer megtervezői határozzák meg, például az interneten továbbított adatcsomagok esetében a vevőkészülék egy jelzést küld vissza, az adatcsomag megismétlését kérve.
 
Az elvi módszer különféle megvalósításai az ellenőrzőösszeg előállításának, ''generálásának'' matematikai [[algoritmus]]ában különböznek, ez határozza meg azt, hogy a módszer egy csomagban hány hibát képes egyszerre felfedezni, hogy mekkora adatcsomagot lehet biztonságosan egyetlen ellenőrzőösszeggel megtoldva átküldeni, vagy hogy a hibának nem csak a ténye, hanem még a helye is kimutatható lesz-e. A téma szakértői számos nagy gondossággal megtervezett, különféle hatékonyságú módszert dolgoztak már ki erre a célra.
 
=== Alkalmazás ===
 
A [[digitális]] jelátvitelben és adattárolásban az adatokat [[kettes számrendszer]]re átszámítva, [[bit]]ek formájában kezelik, de a hibavédelmi algoritmus ennek ellenére alapulhat akár [[tízes számrendszer]]beli számokra is, amelyeket végül bitekre bontva továbbítanak vagy tárolnak. A módszer lehet akkor is bináris elvű, ha a fájl tartalmát a program nagyobb számokra vagy karakterekre átalakítva jeleníti meg.
 
Az ellenőrzőösszeg egyik alkalmazása a fent leírtak szerint az '''adatátvitel''' során történt jeltorzulás tényének és esetleg helyének azonosítása. A nagyon nagy sűrűségű jelátvitelnél még kis távolságokon is alkalmazzák ezt, például egy [[processzor]]on belül haladó, másodpercenként több milliárd bitet hordozó jeleknél is, csupán néhány milliméternyi út gyakorlatilag tökéletes biztonságának szavatolására.
 
De a másik alkalmazás nem a jelek átvitelének, hanem az '''adattárolás''' hibátlanságát ellenőrzi. Bármilyen tárolóeszközön is helyezünk el egy digitális adatsort, az eszköz fizikai tökéletlensége miatt, vagy a hosszabb idő alatt őt érő károsító hatások miatt ez az adatsor szintén sérülhet, tehát emiatt az adat későbbi kiolvasása során hibásan kapjuk azt meg. Itt is érvényes az előzőleg említett szabály: minél kisebb méretű, minél sűrűbben elhelyezett jelekben tároljuk az adatokat, annál nagyobb kárt okozhat egyetlen sérülés. Ha például a már régen elavult [[Lyukkártya|lyukkártyán]] tárolunk adatokat, amelyen több milliméterenként áll egy-egy bitet tároló fizikai jel (egy téglalap alakú lyuk a papíron), durva fizikai sérülés kell ahhoz, hogy egy bit méretű hiba létrejöjjön rajta. Ha az adatokat [[CD]]-n tároljuk, ott az adatsűrűség már 1&nbsp;megabit/mm<sup>2</sup> nagyságrendű, tehát egy vékony karcolás is bitek tízezreit fedi el. Egy memóriachip, pl. egy [[pendrive]] tárolóelemének a jelsűrűsége ennek nagyságrendileg már a 10000-szerese. Ez azt jelenti, hogy a tárolópontok és a szilíciumlapkába rajzolt árampályák annyira aprók, hogy a nyersanyag egy jelentéktelen méretű hibája is értéktelenné teszi a chipet, de a legfinomabb eszközökben halmozottan már a [[kozmikus sugárzás]] [[proton]]jai is halmozottan olyan sérüléseket tudnak okozni, amely a tárolásban is egy-egy bitnyi adatsérülést okozhatnakeredményezhetnek.
 
Éppen ezért a tárolóeszközökön elhelyezett adatok hibátlanságát is célszerű ellenőrzőösszegekkel védeni. Ez a gyakorlatban azt jelenti, hogy a tároláskor a tárolt adat csomagjaihoz, esetleg fájljaihoz, vagy az egész tárolt fájlhoz egy ellenőrzőösszeget generáltatunk valamilyen erre írt programmal, és ezt is tároljuk a fájllal együtt. Majd amikor a fájlt ismét használatba vesszük, újra elvégezzük ugyanezt, és az újonnan kapott ellenőrzőösszeget összehasonlítjuk a tárolttal. Az eltérés sérüléstmindig a fájlban történt változást jelez. Ez a változás lehet esetleg szándékos, ismert vagy rejtett módosítás következménye, de többnyire inkább véletlenül létrejött hibára, hibátsérülésre jelentutal.
 
Egy egyszerű szövegfájlban annak figyelmes átolvasásával felfedezhetjük a hibát, mivel az valamelyik karakter megváltozását, "sajtóhibát" eredményez, ám minden egyéb fájltípusnál, az MP3 zenefájltól a programfájlokig, ilyen áttekintést végezni nem tudunk. Márpedig egy programfájlban egyetlen bit eltérés is nagy eséllyel a program hibás működéséhez vezet.
 
Vannak egyszerű programok (Total Commander, CRC Guard, VerifyValidate), amelyek minden fájlhoz egy-egy ellenőrzőösszeget hoznak létre és azt külön tárolják. De aegy másik megoldás egy tömörítőprogram használata, ilyenek a ZIP, RAR, ARJ, 7Z formátumú [[Adattömörítés|tömörített]] fájlokat létrehozó, elterjedt programok. Ezek úgy működnek, hogy az egyetlen tömörítvénybe csomagolt fájlokat nem csak kisebb méretben tárolják, hanem mindegyikhez automatikusan ellenőrzőösszeget is generálnak, és azt is tárolják. Ha egy ilyen tömörített fájlt "kicsomagolunk", a program mindig ellenőrzi a hibátlanságot, és azonnal értesít, ha valamelyik tárolt fájlban az ellenőrzőösszeg hibát jelez. Ez az ismeret nagyon fontos, mert ha a hibáról tudomást szerzünk, akkor az adatsort, fájlt nem használjuk fel tévedést okozó módon, és kísérletet tehetünk a fájl pótlására egy hibátlanvagy változattalkijavítására. Épp emiatt a mellékes szolgáltatás miatt célszerű lehet olyan fájlokat is például ZIP formátumba tömörítve tárolni, amelyeknek a mérete ezzel nem csökken (MP3, AVI, MPEG, JPG, PNG, PDF stb.), de a mellé kerülő hibavédelem biztonságosabbá teszi a fájl tárolását vagy továbbítását, e-mail mellékleteként vagy lemezen, pendrive-on.
 
=== Egyéb esetek ===
 
EllenőrzőNumerikus ellenőrző összeg védi a [[Személyi szám#Az utolsó számjegy|személyi számot]] és, a könyvek nemzetközi azonosítására használt [[ISBN#Az ellenőrző karakter|ISBN-számot]], isaz [[euró]] bankjegyeinek sorozatszámát, az elírásból[[Európai adódógyártmánykód|EAN-13]] véletlenvonalkódot, hibáka ellen[[merevlemez]] szektorait, és még számtalan adatsort vagy azonosító jelet. Mivel ezek generálásának algoritmusa jól ismert, így hamis számok előállításakor nem nehéz a helyes ellenőrző karaktert kiszámolni, emiatt ezek a módszerek a szándékos módosításokhamisítások ellen nem védenek. De egy tévesen megadott adatra, egy elírásra, számcserére fel tudják hívni a figyelmet, persze csak akkor, ha az ellenőrző számot kiszámítjuk és megvizsgáljuk.
 
A fenti példák mintájára végül is bármilyen, számokból álló, vagy számkódokra fordítható tetszőleges karakterekből álló jelsorozathoz generálható valamilyen ellenőrző kód. Ennek algoritmusát egyénileg kidolgozva és titokban tartva általunk készített számításokban, elszámolásokban, számítógépes adatbázis adataiban, vagy akár levelek szövegében előforduló véletlen vagy szándékos változtatások felfedezésére kaphatunk lehetőséget.