Kontrollsumma

Allikas: Vikipeedia

Kontrollsumma on informaatikas andmete terviklikkuse kontrollimiseks kasutatava algoritmi väljund. Kontrollsumma saadakse kontrollsumma algoritmi rakendamisel kindlale andmehulgale. Kui pärast andmete edastamist (näiteks internetist faili allalaadimisel) kontrollsumma klapib esialgsete andmete kontrollsummaga, siis suure tõenäosusega edastamisel vigu ei esinenud.

Kahel võrdsel andmehulgal on alati sama kontrollsumma, kuid sama tulemuse võivad anda ka erinevad andmehulgad. Seepärast kasutatakse kontrollsumma algoritmina tihti selliseid räsifunktsioone, mis juba sisendandmete vähesel muutmisel annavad drastiliselt erineva väljundi. Selliseid algoritme (näiteks SHA-2) kasutatakse andmeturbes lisaks andmete terviklikkuse tagamisele ka andmete tahtliku muutmise vältimiseks. Turvaekspert Bruce Schneier tõestas 2005. aastal algoritmi MD5 murtavuse[1].

Kasutusviise[muuda | muuda lähteteksti]

Erinevad andmeedastusprotokollid kasutavad paketi sisu verifitseerimiseks kontrollsummasid.

Näiteks kasutatakse kontrollsummat UDP protokolli andmepaketi päises. UDP kontrollsumma algoritmi kirjeldab RFC 768.

+ Bitid 0–15 16–31
0 Lähteport Sihtport
32 Pikkus Kontrollsumma
64  
Andmed
 

Tarkvara levitamisel kasutatakse kontrollsummasid veendumaks, et tarkvara paigaldusfaili pole muudetud. Näiteks Linuxi distributsioonide allalaadimislehelt võib hea tava kohaselt leida CD/DVD tõmmise kontrollsumma, kuigi protsess on ka automatiseeritud. Näiteks: estobuntu.

Leidub palju rakendusi, mis salvestavad andmebaasi mitte kasutaja parooli kirje, vaid selle kontrollsumma. Kui kasutaja tahab süsteemi siseneda, arvutatakse tema sisestatud paroolist kontrollsumma ja võrreldakse seda andmebaasis olemasoleva kirjega.

Näited[muuda | muuda lähteteksti]

Järgnevalt on toodud näiteid tihemini kasutatavate kontrollsumma algoritmide väljunditest. Väljundid on esitatud kuueteistkümnendsüsteemis.

Kontrollsummad sõnele "Tere, maailm!":

MD5     : ff5ddfa461bcc79dc5a75b066dcf4274
SHA-1   : 60087b35764744f3dac5f32b70715f6f4b2934f8
SHA-256 : 4341bd0611d3cac56d7ebf52b41ef2fb87a69a01a645794602633627aeb37bf1
SHA-384 : 94c82fc446d9ca2fa9113b1523d2ba343fdf6e959e8ba7c6b0ff76076c2d7697d5f14718136ae1e8e72a95326a8f5b95
SHA-512 : c4ea36e0cd5846be7690c94d5760c24a83343597102c8ef67f067e6f0b226cfebd0cf5ba921f0e4abe19b92000758d55ff6c86652e729ecf946f618483866f59

Kontrollsummad sõnele "Tere, maailm! " (lisatud tühik lõppu):

MD5     : 867430efdfcd5180a6e7a8662f6dfb2b
SHA-1   : a0e84d2b45ddcd6cc202d317efc97f1e1c96071b
SHA-256 : 39a96937708c8f28671b71a48aad4d516f15388bc67dd01ad8b9ce5441702057
SHA-384 : 2e9a0b772e046c9c62e8bb0f17f116a6c46ca4f29e0d6643a91476411d291b90a974b270cacf1fc895b2a22351256a36
SHA-512 : e8f5b9ca94e8a4f9d506e96d9f361bc75097f71a45d13ce70094d2290bb5b03b1ee116facc1e1beb1e446ee5f85856542e2acfaabf115144cdea1e8f70a600ab

Koodinäited[muuda | muuda lähteteksti]

Java[muuda | muuda lähteteksti]

Kontrollsummade leidmine Javas, kontrollimaks eeltoodud näidet:

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Checksum {
	public static String computeDigest(String algorithm, String message) {
		MessageDigest digest;
		try {
			digest = MessageDigest.getInstance(algorithm);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
			return "";
		}

		return new BigInteger(1, digest.digest(message.getBytes())).toString(16);
	}

	public static void main(String[] args) {
		String message = "Tere, maailm!";
		String algorithms[] = {"MD5", "SHA-1", "SHA-256", "SHA-384", "SHA-512"};
		
		for (String algorithm : algorithms) {
			System.out.format("%s\t: %s\n", algorithm, computeDigest(algorithm, message));
		}
	}
}

PHP[muuda | muuda lähteteksti]

PHP-s on võimalik lihtsasti kasutada md5-funktsiooni.

<?php
echo md5("Tere, maailm! ");
?>

Vaata ka[muuda | muuda lähteteksti]

Viited[muuda | muuda lähteteksti]

Välislingid[muuda | muuda lähteteksti]