Kontrollsumma

Allikas: Vikipeedia

Kontrollsumma on informaatikas kasutatav mõiste räsifunktsiooni tulemist, millega teostatakse informatsioonihulga võrdväärtuskontroll. Räsifunktsiooni tulemeid iseloomustab üldjuhul kindel pikkus olenemata sisendi suurusest ja radikaalne muutus ka kõige väikematele muudatusetele sisendis (siinkohal on erandiks Panama räsifunktsioon, mille väljundi pikkus pole eelnevalt teada).

Kontrollsumma võib viidata ka omaloodud räsifunktsiooni tulemile, mis võib olla äärmiselt primitiivne. Näiteks informatsioonihulga binaarkujul esinevate ühtede summa.

Kasutusviise[muuda | redigeeri lähteteksti]

Erinevad andmeedastus protokollid kasutavad paketi sisu verifitseerimiseks kontrollsummasid. Näiteks näeb UDP protokolli kihiline ehitus välja:

+ Bitt'id 0 – 15 16–31
0 Algus Port Siht Port
32 Pikkus Kontrollsumma
64  
Andmed
 

Vaba tarkvara kasutab kontrollsummasid verifitseerimaks, kas tarkvara paigaldamise ajal on tegemist sama tarkvaraga, kui see sai loodud. Linuxi distributsiooni allalaadimislehelt võib hea tava kohaselt leida CD/DVD tõmmise kontrollsumma, kuigi protsess on ka automatseeritud. Näiteks: estobuntu.

Leidub palju rakendusi, mis salvestavad andmebaasi mitte kasutaja parooli kirje, vaid selle kontrollsumma. Kui kasutaja tahab süsteemi siseneda, genereeritakse tema sisestatud paroolist uus kontrollsumma ja võrreldakse seda andmebaasis olemasoleva kirjega. Siinkohal meeldetuletus, võhiku jaoks on häkker inimene, kes saab süsteemi juurdepääsu ilma parooli teadmise vajaduseta.

Turvaekspert Bruce Schneier tõestas 2005. aastal MD5 algoritmi murtavuse[1].

Näited[muuda | redigeeri lähteteksti]

Järgnevalt on toodud tihemini kasutatavate algoritmide poolt loodud kontrollsummad.

Kontrollsummad sõnele "See on räsimise näide.":

Krüptograafiline räsimine(väljund kuueteistkümnendsüsteemis): 
MD2     : 2c53de6f1312dc57e7de46d3a511ef98
MD5     : 1d993b15808c87d5c8cb3a40dd29b2e4
SHA-1   : f48ec5fec1f925d498c5012d363e92c65238bcb1
SHA-256 : 93b43e6e05ba02e5ae3880c8f933cdcb0577c24690d6d1229cf18d369f721431
SHA-384 : e3d558f30371fab08929b054f711d8b76eb1a2385ac0aea4e4714a2b6b94c9542d1f939dad2a1296b9402de446c286c7
SHA-512 : 522cec80580b12d442704991d2116dd2ff9d5319630ccecc4d6b07799126a308ae2e894d1dc20633fe65d652b81c19a9b4c3e3227be3add59226126a22f2aab0

Kontrollsummad sõnele "See on räsimise näide. " (Lisatud tühik lõppu):

Krüptograafiline räsimine(väljund kuueteistkümnendsüsteemis): 
MD2     : 8890c19d670e49afe4089d6a478f9a37
MD5     : 84ca345a961e9d7d12d22a729a0b1a32
SHA-1   : 7dce2d2f74c040f3a2ec4a3d95eced7a930823fc
SHA-256 : 1036a6e8f0a53fcbfbcdd3b3d9de8251f47c9077e0e1e9cd34e144ec5e39c4a2
SHA-384 : b1c0f8e4827f414e866b1c48b449005ec25b22b13a4ac8a5e635695dd17fcd5a6924606e8c14d0922fae576cba038bd
SHA-512 : a11bf669b294bdd5bc3eb5b8684140d63d6a0b01cac163331fae090ca02b7214e64301294d9e82a262cca331226c36326e522da8c710377a02be6aebec8a9933

Koodinäided[muuda | redigeeri lähteteksti]

Java[muuda | redigeeri lähteteksti]

Java's (siinkohal on mõeldud Java JDK 6'te) rakendatud räsifunktioonide kasutamise näide, kontrollimaks eeltoodud näidet:

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
 
public class Checksum {
	public static String computeDigest(MessageDigest algorithm, String content) {
		if (algorithm == null)
			return "";
 
		return (new BigInteger(1, algorithm.digest(content.getBytes()))).toString(16);
	}
 
	public static void main(String[] args) {
		ArrayList<MessageDigest> algo = new ArrayList<MessageDigest>();
		String seetest="See on räsimise näide. ";
		String algoritmid[] = {"MD2", "MD5", "SHA-1","SHA-256","SHA-384", "SHA-512"};
 
		try {
			for (String s : algoritmid) {
				algo.add(MessageDigest.getInstance(s));
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
			System.exit(-1);
		}
 
		System.out.println("Krüptograafiline räsimine(väljund kuueteistkümnendsüsteemis): ");
		for (int i = 0; i < algoritmid.length; i++) {
			System.out.println(algoritmid[i]+"\t: "+computeDigest(algo.get(i),seetest));
		}
	}
 
}

PHP[muuda | redigeeri lähteteksti]

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

<?php
echo md5("See on räsimise näide. ");
?>

Vaata ka[muuda | redigeeri lähteteksti]

Viited[muuda | redigeeri lähteteksti]

Välislingid[muuda | redigeeri lähteteksti]