Mis on kontrollsumma? Definitsioon, algoritmid ja kasutusvaldkonnad
Kontrollsumma on lisaväärtus (tavaliselt arv või bittide jada), mis arvutatakse andmete põhjal eesmärgiga tuvastada kirjutus- või edastusvigu. See on omamoodi redundantsi kontroll: selle abil saab kontrollida, et andmed (näiteks number või fail) ei ole muutunud vigade tõttu. Kontrollsumma arvutamiseks on erinevaid viise; kõige lihtsamal kujul lihtsalt liidetakse kõik numbrid kokku või summeeritakse bitti‑pariteet. Sellised lihtsad meetodid ei pruugi aga tuvastada kõiki vigatüüpe (näiteks kahte vaatet vahetust), mistõttu kasutatakse keerukamaid algoritme ja meetodeid.
Levinud kontrollsumma‑ ja veakontrolli meetodid
Mitmed tuntud meetodid ja põhimõtted on:
- Lihtsumma – kõigi numbrite liitmine (võimalik mod N järgi). Lihtne, kuid piiratud vigade tuvastusvõime.
- Kaaluva liitmise meetodid – igale positsioonile antakse kaal ja arvutatakse kaalutud summa (näiteks ISBN‑10 kasutab seda põhimõtet).
- Modulaararitmeetika – andmete põhjal arvutatakse jääk jagamisel mingi algarvuga (näiteks mod 97), mis on levinud pangakontode ja IBANi kontrollimiseks.
- Tsükliline redundantsuskontroll (CRC) – polünoomne arvutus binaarsete andmete jaoks, väga hea tuvastamaks juhuslikke bittide vead andmeedastuses ja salvestuses.
- Hammingi kood – tegelikult on see veakorrektsiooni‑, mitte ainult veadetektori kood: lisaks vigade tuvastamisele võimaldab ka mõningaid vigu parandada.
Milleks kontrollsummasid kasutatakse?
Kontrollsummaid kasutatakse laialdaselt järgmistel juhtudel:
- Andmeedastus ja võrgu protokollid – andmete terviklikkuse kontroll (näiteks failiedastus, arhiveerimine, protokollid, mis kasutavad CRC‑i).
- Pangandussüsteemid – kontonumbrite valideerimine (näiteks numbrid ja mod 97 põhised kontrollnumbrid).
- Identifikaatorid ja vöötkoodid – ISBN, UPC/EAN, krediitkaardinumbrid (Luhn’i algoritm) jm.
- Tarkvara ja failid – seerianumbrid, allalaaditud failide kontrollsumma (MD5/SHA₁/SHA‑256 on krüptograafilised räsi‑funktsioonid, mida mõnikord nimetatakse ka „kontrollsummadeks”, kuid neil on erinev eesmärk ja omadused).
- Salvestus‑ ja taastussüsteemid – RAID, andmete pariteet ja sarnased lahendused.
Portugali pangakonto näide (mod 97)
Järgnevalt on antud üks lihtne ja hästi arusaadav näide, kuidas kontrollsummad praktikas töötavad. Portugali pangakontodel põhineb kontrollsumma modulaararvutusel mod 97. Näiteks on neil 21 numbrit: esimesed 19 identifitseerivad panga, filiaali ja konto; kaks viimast on kontrollnumbrid.
- Numbrid "0002" tähistavad panka.
- Numbrid "0123" tähistavad panga filiaali.
- Numbrid "12345678901" tähistavad kontonumbrit.
- Numbrid "54" tähistavad kontrollsummat.
Kui panna need kokku ilma punktideta: 000201231234567890154 ja jagada 97-ga, siis jääk on 1. Paljudel mod 97‑põhistel skeemidel valitakse kontrollnumbrid nii, et kogu arv jagamisel 97‑ga jätab jäägi 1 — see on lihtne viis kontrollida, kas number on õigesti sisestatud. Kui näiteks numbri kirjutamisel on tehtud sisestusviga, numbrid vahetatud või välja jäetud, ei ole jääk enam 1 ja veateade antakse.
Kuidas kontrollsumma vigu tuvastab ja millised on piirangud?
Erinevad algoritmid on optimeeritud eri tüüpi vigade tuvastamiseks. Näiteks:
- Lihtne summa tuvastab ühe numbri muutuse, ent ei pruugi tuvastada positsioonide vahetust.
- Kaaluva liitmise skeemid ja Luhn’i algoritm on mõeldud ka selliste vigade avastamiseks, mis tekivad numbrite ümbervahetamisel.
- CRC suudab väga usaldusväärselt avastada juhuslikke bittide vigu ja mõningaid mustreid, kuid pole kaitstud sihitud rünnakute vastu (nt pahatahtlik muutmine).
- Krüptograafilised räsi‑funktsioonid (nt SHA‑256) annavad tugeva kaitse andmete terviklikkuse ja sihitud muutmiste avastamise vastu, kuid neid ei kasutata alati lihtsalt spetsiifiliste positsioonivigade tuvastamiseks, vaid eelkõige turvalisuse kontekstis.
Tuleb märkida ka piirang: kontrollsumma ei saa tagada andmete täielikku õigsust — erinevad andmed võivad anda sama kontrollsumma (nn kokkulangevus). Seetõttu valitakse algoritm vastavalt sellele, milliseid vigu eeldatakse ja kui tõsine tagajärg oleks vigadel.
Kokkuvõte
Kontrollsumma on praktiline ja odav meetod andmete terviklikkuse esialgseks kontrollimiseks. Valik lihtsate summade, modulaarsete arvutuste, CRC‑i, Hamming‑süsteemi või krüptograafiliste räside vahel sõltub vajadusest: kas õige on tuvastada juhuslikke sisestusvigu, parandada mõningaid vigu või kaitsta andmeid pahatahtliku muutmise eest. Üks levinud rakendus on pangakonto numbrite valideerimine (näiteks eespool kirjeldatud Portugali näide), teine tavaline kasutusala on tarkvara seerianumbrid ja failide terviklikkuse kontroll.


Kaasaegne EAN-viivakood: Osad rohelise värviga on nn vahekaardid: Need eraldavad numbrirühmi. Iga number on kodeeritud 7 bitiga, nagu näidatud. Esimesed 11 numbrit kannavad tootenumbrit. Viimane number, antud juhul number "2", on kontrollsumma. Kontrollsumma liidetakse nii, et paariliste positsioonide summa ja paaritute positsioonide summa korrutatuna kolmega, modulo 10, on 0.
Küsimused ja vastused
K: Mis on kontrollsumma?
V: Kontrollsumma on number, mida kasutatakse reduktsiooni kontrollimiseks. Selle eesmärk on kontrollida, et numbri üleskirjutamisel ei ole tehtud vigu.
K: Kuidas arvutatakse kontrollsummat?
V: Kontrollsummasid saab arvutada erinevalt, kuid kõige lihtsamal kujul lihtsalt liidetakse numbrid kokku. See ei võimalda aga tuvastada vigasid, mis tulenevad numbrite ümbervahetamisest.
K: Mis on näide, kuidas kontrollsummad töötavad?
V: Portugali pangakonto tunnused on hea näide kontrollsummade toimimise kohta. Neil on 21 numbrit ja kaks viimast numbrit kujutavad endast moodulaararitmeetikal põhinevat "mod 97" kontrollsummat.
K: Kuidas aitab see tuvastada vigu?
V: Kui mõni number jääb vahele, vahetatakse või kirjutatakse valesti, siis ei ole jääk "1". Sellisel juhul peaks arvuti tuvastama vea ja andma veateate.
K: Kus veel kontrollsummasid kasutatakse?
V: Kontrollsummasid kasutatakse ka arvutitarkvara seerianumbrite puhul.
K: Mis juhtub, kui kontrollsummaga tuvastatakse viga?
V: Kui kontrollsummaga tuvastatakse viga, siis peaks arvuti selle tuvastama ja andma veateate.