Hashovací funkce

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Nesmí být ani příliš málo náročné.)
(Dodána utilita certutil.)
 
Řádka 117: Řádka 117:
 
* V GNU/Linuxu bývají zahrnuty příkazy pro generování otisků
 
* V GNU/Linuxu bývají zahrnuty příkazy pro generování otisků
 
  sha256 ''text''
 
  sha256 ''text''
 +
* Ve Windows:
 +
certutil -hashfile ''nazev-souboru'' ''HashFunkce''
 +
<div class="Priklad">certutil -hashfile setup.exe SHA512</div>
 
* Ve [[Powershell: Základy|Windows Powershellu]] je commandlet: <code>[[Powershell: Cmdlets|Get-FileHash]] ''soubor'' [-Algorithm MD5]</code>
 
* Ve [[Powershell: Základy|Windows Powershellu]] je commandlet: <code>[[Powershell: Cmdlets|Get-FileHash]] ''soubor'' [-Algorithm MD5]</code>
 
  Get-FileHash ''setup.exe''
 
  Get-FileHash ''setup.exe''

Aktuální verze z 19. 8. 2020, 12:56


Při použití hashovacích funkcí neříkejte, že zprávu zašifrujeme!!!

Viz také: Kódování-šifrování-hashování


Obsah

Hashovací funkce

Je to matematické funkce s následujícími vlastnostmi:

Různé vstupní texty tedy mohou generovat stejný výstup. Nelze se tomu úplně vyhnout, ale snažíme se, aby to bylo co nejméně pravděpodobné. Označuje se to jako kolize.

Výstup hashovací funkce nazýváme „otisk“ (fingerprint).

Jako příklad použijme funkci SHA256:
  • pro vstupní text: pokus
  • je otiskem 256tibitové číslo: 483266AE0E0F9CF73864117EE7A2B14A3FCAF0158487F7E281C7A0BC0D9712CD.


Použití

Ukládání hesel

Postup při přihlašování

Všimněte si, že teoreticky se může stát, že někdo zadá jiný text než vaše heslo, a přesto ho systém přihlásí, protože se náhodou budou shodovat otisky vašeho hesla a zadaného textu.

U dobrých hashovacích funkcí splňujících požadavky by taková situace měla být nepravděpodobná.

Elektronický (digitální) podpis

Ověření správnosti staženého souboru


Požadavky na hashovací funkce

Aby hashovací funkce plnila svou funkcí, potřebujeme, aby splňovala následující požadavky:

1) Musí být výpočetně náročné získat z otisku vstupní text.
Například aby z otisku v databázi nešlo zjistit původní heslo.
2) Musí být výpočetně náročné vyrobit (libovolný) text se zadaným otiskem
Potom by ten, kdo zná otisk hesla, sice nemohl zjistit heslo, ale vyrobil by si nějaký vstup, který bude mít stejný otisk jako heslo.
3) Musí být výpočetně náročné vyrobit dva texty se stejným otiskem
Pak by jeden text šel podsunout za druhý, aniž by se to poznalo pomocí otisku.
4) Výpočet hashovací funkce (získání otisku ze vstupu) nesmí být příliš výpočetně náročný.
Například: Pokud se k velkým serverům přihlašují desítky uživatelů, ověřování otisků nesmí přetížit server.
Na druhou stranu postup nesmí být ani příliš rychlý, protože pak by bylo snazší útočit „hrubou silou“ — zkoušet postupně různé vstupy tak dlouho, až objevím vstup se správným otiskem.
(Například pokud získám otisk hesla, pak hledat heslo postupným zkoušením všech možných vstupů.)
5) Stejný vstup musí generovat vždy stejný otisk
(To platí u každé matematické funkce.)
Pokud zadáme správné heslo, otisk se samozřejmě musí shodovat.
6) Podobné vstupy musí generovat velmi odlišné otisky (podobnost vstupů se neprojeví v podobnosti otisků)
Aby nešlo „tipovat“ a postupnými úpravami se snáze dopracovat k původnímu vstupu, který generuje daný otisk.


Příklady hashovacích funkcí

MD5
Tiger
SHA
Zkuste si spočítat hashovací funkci SHA 256 pro své jméno a příjmení, nebo pro jiný text:

XorBin.com → SHA256 Hash Calculator


Nástroje pro výpočet funkcí

HashCalc
On-line generátory otisků
Generátory v příkazovém řádku
sha256 text
certutil -hashfile nazev-souboru HashFunkce
certutil -hashfile setup.exe SHA512
Get-FileHash setup.exe
Knihovny programovacích jazyků


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje