Kontrollsumma

Kontrollsumma on informaatikas andmete tervikluse 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 pole edastamisel vigu 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. Erinevad andmeedastusprotokollid kasutavad paketi sisu verifitseerimiseks kontrollsummasid. Näiteks kasutatakse kontrollsummat UDP protokolli andmepaketi päises. UDP kontrollsumma algoritmi kirjeldab RFC 768. Tarkvara levitamisel kasutatakse kontrollsummasid veendumaks, et tarkvara paigaldusfaili pole muudetud. Näiteks Linuxi distributsioonide allalaadimislehelt võib hea tava kohaselt leida CD/DVD tõmmisfaili kontrollsumma, kuigi protsess on ka automatiseeritud. Näiteks: estobuntu. Paljud tarkvararakendused salvestavad turvakaalutlustel paroolide andmebaasi mitte paroole vaid nende kontrollsummasid ja parooli vastavuse kontrollimisel arvutavad selle kontrollsumma, mida võrdlevad andmebaasis olemasoleva kirjega. 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 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-s on võimalik lihtsasti kasutada md5-funktsiooni. <?php echo md5("Tere, maailm! "); ?> Räsifunktsioon MD5 – Ronald Rivesti loodud ühesuunaline räsifunktsiooni algoritm Paarsuskontroll – andmeedastuse edukuse kontrollimine paarsusbittidega http://www.minut.ee/article.pl?sid=05/03/11/0844201&mode=nested[alaline kõdulink] Kontrollsumma definitsioon Heikki Vallaste e-teatmikus