Nebezpečnost MD5 - chraňte svá hesla!

Napsal O webu (») 26. 7. 2007 v kategorii Bezpečnost, přečteno: 5365×
obrazky/md5.png

(NE)bezpečnost MD5 ( uchovávání hesel )


Úvod


Tento článek je psán v návaznosti na můj předešlý článek ohledně hledání ideálního hesla.

S velkou pravděpodobností, každý z Vás co nyní čtete tento článek jste účastníkem nějakého fóra na bázi phpBB – tento systém využívá, jako mnoho ostatních systémů hodně rozšířené ( často používané ) hashovací funkce MD5 , která vytváří kontrolní součet velikosti 128bitů s otiskem. MD5 je jako taková zahrnuta a popsána v internetovém standardu RFC 1321 a prosadila se dále do mnoha aplikací, např. pro kontrolu integrity souborů, nebo ukládání hesel o což mi v tomto článku jde především. MD5 je rovněž jako funkce implementována do jazyku PHP, ve kterém je lehce implementovatelná, třeba takto:

<html>

<head>

<meta http-equiv="Content-Language" content="cs">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>•MD5• By Ondrej Baar</title>

</head>



<form method="post">

<input name="slovo" class="formular">

<input name="okej" type="submit" class="formular" value=" OK ">

</form>



<?php

if (isset($_POST['okej'])):

$ slovo = <b><B>MD5</B> </b>($_POST[' slovo ']);

echo $ slovo;

?>

</html>



Proč je MD5 nebezpečná?:


Algoritmus MD5 vznikl v roce 1991 vytvořil jej Ronald Rivestem, aby nahradil, dosud používanou funkci MD4. V roce 1996 však byla objevena vada v návrhu MD5 , to však neodradilo mnoho lidí, a tak je stále používaná až do roku 2004, kdy byly nalezeny daleko větší chyby, které zapříčinily upouštění od tohoto algoritmu v bezpečnostních aplikacích. Kryptologové z Japonska a posléze i z České republiky jej označili za nebezpečný, neboť objevili, zpětný algoritmus, kterým je možné vysledovat přibližnou množinu zpětných znaků – to pak má za následek menší časovou náročnost pro výpočet zpětného hashe i klasickým PC – pořád se sice jedná o velké množství kombinací – závislé na délce použitého hesla, ale i tak je to zjednodušení pro prolomení takto uloženého hesla.

Největší bezpečnostní riziko však spočívá ve stále rostoucím výkonu výpočetní techniky, a webech, zabývajících se prolamováním MD5 . Podíváte li se na tento odkaz: MD5 crack a vyzkoušíte zadat některé jednodušší heslo například „kolo“ jehož hash je: 8a2bc6f29f421af1f4094296ae17f244 zjistíte, že se jej dozví každý, kdo vidí na hash – tedy ten, kdo na tento hash vidí – webmaster a všichni s přístupem do databáze.

Jak zabezpečit heslo pokud nemohu ovlivnit způsob ukládání hesel MD5 – jsem uživatel:


Je to velmi jednoduché! Stačí mít dostatečně složité heslo, a pravidelně jej měnit – vždy si zkuste ověřit, zda Vaše heslo není v některé z databází crack MD5 systémů na internetu. Neboť ani MD5 crackery, nejsou schopny mít uloženy veškeré otisky všech možných kombinací hesel. Použijete li heslo z minulého článku: Hmv76KgaNSvR1964 jehož hash je: 5b47072a759cab5a0ca0f79095069e33 a crack MD5 systém si s ním neporadí. ( platí ke dni 25.07.2007 ) za pár let již s velkou pravděpodobností i toto heslo bude uloženo v některé databázi MD5 crackeru.

Nebezpečnost spočívá především v tom, když jste členem například nějakého pochybného fóra – webmaster má tyto hashe dostupné v databázi a může je zneužít – například pro přístup k vašemu e-mailu, který jste si na fóru zaregistroval... či dalším službám, které používáte. ( Pouze v případě, že ke všem službám používáte stejné heslo, a hash je v databázi, některého z crack MD5 systému. ) Opět zde je návaznost na můj předcházející článek – kde nedoporučuji používat pro více služeb stejná hesla, proto ještě jednou opakuji – každou službu mějte přístupnou pod jiným heslem – případně alespoň typ služeb a zajistěte aby se ani část hesla neopakovala.

Jak zabezpečit heslo pokud mohu ovlivnit způsob ukládání hesel MD5 – jsem webmaster – vývojář a chci hesla zabezpečit:


Stačí použít jiný nástroj ( hashovací funkci ) – například SHA1 – je novější a ne tak chybový avšak byl již rovněž prolomen – ovšem pouze hrubou silou ( metoda Brute force ), žádný zpětný algoritmus dosud nebyl nikým vyvinut a tak se dá nyní považovat za bezpečnější, než MD5. Použití SHA1 je stejně jednoduché, jako u MD5 od verze PHP 4.3.0 je tato funkce dostupná v PHP a použít ji můžete například takto:

<html>

<head>

<meta http-equiv="Content-Language" content="cs">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>•SHA1• By Ondrej Baar</title>

</head>



<form method="post">

<input name="slovo" class="formular">

<input name="okej" type="submit" class="formular" value=" OK ">

</form>



<?php

if (isset($_POST['okej'])):

$slovo = SHA1($_POST[' slovo ']);

echo $ slovo;

?>

</html>



Druhou možností je přidat ještě nějaký ochranný prvek například přidání specifických znaků do hashe – na určité místa, a poté je stejně připojit i k ověřovanému údaji. Nebo podobným způsobem ukládat pouze část hashe – případně ještě jednou použití funkce MD5 na část řetězce již vygenerovaného touto funkcí – třeba jen polovinu znaků apod.

Závěrem:


Jak jste si již jistě všimli, oblast bezpečnosti a uchovávání hesel, je velmi problematická, ne každý se však touto otázkou zabývá – proto ve svém hlavním zájmu se bezpečností zabývejte alespoň vy co čtete tento článek. Používejte pořádná hesla, pro každou službu úplně jiné, a chraňte tak své údaje před zcizením a následným zneužitím – v dnešní internetové době je to více než žádoucí a nespoléhejte na „webmastery“ amatéry, kteří pro přístupy ke svým dílům, databázím a fórům používají hesla jednodušší, než uživatelé – tímto ohrožení.


Autor: Ondřej Baar
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel nula a dvě