Hash funkce: koncept a základy

10. 4. 2019

V různých odvětvích informačních technologií se používají hashové funkce. Jsou navrženy na jedné straně k výraznému zjednodušení výměny dat mezi uživateli a zpracování souborů používaných pro různé účely, na druhé straně k optimalizaci algoritmů pro zajištění kontroly přístupu k odpovídajícím zdrojům. Funkce hash je jedním z klíčových nástrojů pro zajištění ochrany dat heslem a organizuje výměnu dokumentů podepsaných digitálním podpisem. Existuje velké množství norem, pomocí kterých lze soubory ukládat do mezipaměti. Mnoho z nich vyvíjí ruští odborníci. Jaké variace mohou mít funkce hash? Jaké jsou hlavní mechanismy pro jejich praktické uplatnění?

Hash funkce

Co to je?

Nejprve prozkoumejte koncept hashové funkce. Tento termín je běžně chápán jako algoritmus pro konverzi určitého množství informací do kratší sekvence symbolů pomocí matematických metod. Praktický význam hashové funkce lze vysledovat v různých oblastech. Takže mohou být použity při kontrole souborů a programů pro integritu. Kryptografické hashové funkce jsou také používány v šifrovacích algoritmech.

Charakteristiky

Zvažte klíčové charakteristiky zkoumaných algoritmů. Mezi tyto:

  • přítomnost interních algoritmů pro převod dat původní délky na kratší posloupnost znaků;
  • otevřenost pro šifrovací ověření;
  • přítomnost algoritmů pro spolehlivé šifrování původních dat;
  • přizpůsobení dešifrování, pokud se jedná o malé výpočetní síly.

Mezi další nejdůležitější vlastnosti funkce hash:

  • schopnost zpracovávat počáteční datová pole libovolné délky;
  • vytvářet bloky hash s pevnou délkou;
  • rovnoměrně distribuovat hodnoty funkce na výstupu.

Uvažované algoritmy také naznačují citlivost na vstupní data na úrovni 1 bit. To znamená, že i když podmíněně nejméně 1 písmeno změní zdrojový dokument, funkce hash vypadá jinak.

Požadavky na hash

Existuje řada požadavků na hash funkce určené pro praktické použití v určité oblasti. Za prvé, vhodný algoritmus by měl být citlivý na změny ve vnitřní struktuře šarvátkových dokumentů. To znamená, že v hashové funkci musí být rozpoznán, pokud mluvíme o textovém souboru, permutacích odstavců, dělení slov. Na jedné straně se obsah dokumentu nemění, na druhé straně je jeho struktura upravena a tento proces by měl být rozpoznán během hašování. Za druhé, zvažovaný algoritmus musí konvertovat data tak, aby inverzní operace (otočení hash do původního dokumentu) byla prakticky nemožná. Zatřetí, hashová funkce by měla zahrnovat použití takových algoritmů, které prakticky vylučují pravděpodobnost vytvoření stejné posloupnosti znaků ve formě hash, jinými slovy - vznik takzvaných kolizí. O jejich podstatě budeme považovat ještě později.

Značené požadavky, které musí splňovat hashová funkce, lze dosáhnout především pomocí komplexních matematických přístupů.

Typy hashových funkcí

Struktura

Podívejme se, jaká je struktura uvažovaných funkcí. Jak jsme poznamenali výše, mezi hlavní požadavky na zvažované algoritmy je zajištění jednosměrné šifrování. Osoba, která má k dispozici pouze hash, by sotva mohla získat zdrojový dokument na jejím základě.

V jaké struktuře lze pro takové účely použít hašovací funkci? Příkladem jeho kompilace může být: H (hash, to je hash) = f (T (text), H1), kde H1 je algoritmus zpracování textu T. Tato funkce má T takovou, že bez znalosti H1 ji otevře jako plnohodnotný soubor bude téměř nemožný.

Použití hashových funkcí v praxi: stahování souborů

Nyní podrobněji zkoumáme možnosti použití hashových funkcí v praxi. Použití vhodných algoritmů lze použít při psaní skriptů pro stahování souborů z internetových serverů.

Koncept funkce hash

Ve většině případů je určen určitý kontrolní součet pro každý soubor - to je hash. To by mělo být stejné pro objekt umístěný na serveru a stažený do počítače uživatele. Pokud tomu tak není, soubor se nemusí otevřít nebo nemusí správně spustit.

Hash funkce a EDS

Použití hashových funkcí je běžné při organizaci výměny dokumentů obsahujících digitální podpis. V tomto případě je podepsaný soubor rušen, aby příjemce ověřil, že je skutečný. Přestože funkce hash není ve struktuře elektronického klíče součástí, může být zaznamenána do flash paměti hardwaru, se kterým jsou podepsány dokumenty, jako například eToken.

Elektronický podpis je šifrování souborů s použitím veřejných a soukromých klíčů. To znamená, že ke zdrojovému souboru je připojena zpráva šifrována soukromým klíčem a EDS je ověřen pomocí veřejného klíče. Je-li hashová funkce obou dokumentů stejná, je soubor, který uchovává příjemce, rozpoznán jako autentický a podpis odesílatele je považován za platný.

Hashing, jak jsme uvedli výše, není přímo součástí EDS, ale umožňuje velmi efektivně optimalizovat algoritmy pro aktivaci elektronických podpisů. Takže pouze šifrování může být šifrováno a nikoli samotný dokument. Výsledkem je, že rychlost zpracování souborů se významně zvětšuje a současně je možné zajistit efektivnější mechanismy pro ochranu EDS, neboť důraz na výpočetní operace v tomto případě nebude kladen na zpracování původních dat, nýbrž na zajištění kryptografické pevnosti podpisu. Hash funkce také umožňuje podepsat různé datových typů a ne pouze text.

Kontrola hesla

Další možnou oblastí použití hašování je organizace algoritmů ověření hesla nastavených tak, aby omezili přístup k určitým souborovým zdrojům. Jak mohou být určité druhy hashových funkcí zapojeny do řešení těchto problémů? Velmi jednoduché.

Faktem je, že na většině serverů, jejichž přístup podléhá delimitaci, jsou hesla uložena ve formě šarvátkových hodnot. To je docela logické - kdyby hesla byla prezentována v původní textové podobě, hackeři, kteří získali přístup k nim, mohli snadno číst tajná data. Na druhé straně, na základě hash pro výpočet hesla není snadné.

Použití funkce Hash

Jak je uživatelský přístup kontrolován při použití uvažovaných algoritmů? Heslo zadané uživatelem je zkontrolováno proti tomu, co je uloženo v hashové funkci, která je uložena na serveru. Pokud jsou hodnoty textových bloků stejné, získá uživatel potřebný přístup k prostředkům.

Nejjednodušší funkce hash může být použita jako nástroj pro kontrolu hesel. Ale v praxi nejčastěji používají IT specialisté komplexní vícestupňové kryptografické algoritmy. Spravidla jsou doplněny aplikací norem přenos dat prostřednictvím zabezpečeného kanálu - aby hackeři nemohli detekovat nebo vypočítat heslo přenášené z počítače uživatele na server - předtím, než jej zkontrolujete s blokovanými bloky textu.

Hash Srážky

V teorii hashových funkcí je takový jev poskytován jako kolize. Jaká je jeho podstata? Hashová kolize je situace, kdy mají dva různé soubory stejný hash kód. To je možné, pokud délka cílové posloupnosti znaků je malá. V tomto případě bude pravděpodobnost shody shody vyšší.

Aby se předešlo kolizím, doporučuje se zejména použít dvojitý algoritmus nazvaný "hash function hashing". Zahrnuje vytvoření otevřeného a uzavřeného kódu. Mnoho programátorů při řešení důležitých problémů doporučuje nepoužívat funkce hash v případech, kdy není nutné a vždy testovat vhodné algoritmy pro nejlepší kompatibilitu s určitými klíči.

Historie vzhledu

Zakladatelé teorie hashových funkcí mohou být považováni za výzkumníky Carter, Wegman, Simonson, Bierbrauer. V prvních verzích byly použity odpovídající algoritmy jako sada nástrojů pro vytváření jedinečných obrazů sekvencí znaků libovolné délky s následným cílem jejich identifikace a ověření pravosti. Na základě toho má hash podle stanovených kritérií délku 30-512 bitů. Jako obzvláště užitečnou vlastnost odpovídajících funkcí byla hodnocena vhodnost pro použití jako rychlé vyhledávání souborů nebo jejich řazení.

Populární standardy Hashů

Nyní zvažujeme populární standardy, ve kterých mohou být zastoupeny hashové funkce. Mezi těmito - CRC. Tento algoritmus je cyklický kód, nazývaný také kontrolní součet. Tento standard je charakterizován jednoduchostí a zároveň univerzálností - díky ní můžete hromadit nejširší rozsah dat. CRC je jedním z nejběžnějších nekryptografických algoritmů.

Po šifrování jsou standardy MD4 a MD5 široce používány. Dalším populárním kryptografickým algoritmem je SHA-1. Zejména je charakterizována velikostí hash 160 bitů, která je větší než velikost MD5 - tato norma podporuje 128 bitů. Existují ruské normy upravující použití hashových funkcí, - GOST R 34.11-94, stejně jako nahrazení GOST R 34.11-2012. Je možné poznamenat, že hodnota hash poskytnutá algoritmy přijatými v Ruské federaci je 256 bitů.

Tyto normy lze klasifikovat z různých důvodů. Existují například ty, které používají blokové a specializované algoritmy. Jednoduchost výpočtů založená na normách prvního typu je často doprovázena jejich nízkou rychlostí. Proto jako alternativa k blokovým algoritmům mohou být zahrnuty ty, které zahrnují menší množství výpočetních operací. Je obvyklé přiřadit vysokorychlostním standardům zejména výše uvedené MD4, MD5 a SHA. Zvažte specifika speciálních algoritmů hashování na příkladu SHA podrobněji.

Vlastnosti algoritmu SHA

Použití hashových funkcí založených na standardu SHA se nejčastěji provádí v oblasti vývoje nástrojů digitálního podpisu pro dokumenty DSA. Jak jsme poznamenali výše, algoritmus SHA podporuje 160-bitový hash (poskytuje tzv. "Digest" sekvence znaků). Původně zvažovaná norma rozděluje pole dat do bloků 512 bitů. Je-li to nutné, pokud délka posledního bloku nedosáhne zadané číslice, je struktura souboru doplněna číslem 1 a potřebným počtem nul. Také na konci příslušného bloku odpovídá kód určující délku zprávy. Uvažovaný algoritmus zahrnuje 80 logických funkcí, pomocí kterých se zpracovávají 3 slova, reprezentovaná ve 32 bitů. Také ve standardním SHA je použito 4 konstant.

Hash Porovnání algoritmů

Podívejme se tedy na to, jak vlastnosti vlastností hashových funkcí vztahujících se k různým standardům korelují například porovnáním vlastností ruské normy GOST R 34.11-94 a amerického SHA, o kterých jsme se zmínili výše. Především je třeba poznamenat, že algoritmus vyvinutý v Ruské federaci zahrnuje implementaci 4 šifrovacích operací na 1 cyklus. To odpovídá 128 kruhům. Po jednom cyklu při aktivaci SHA se předpokládá, že se vypočítá přibližně 20 příkazů, zatímco celkový počet kol je 80. Pomocí SHA tedy můžete zpracovat 512 bitů zdrojových dat během 1 cyklu. Současně ruský standard je schopen provádět operace na cyklus 256 bitů dat.

Hashing hash function

Specifika nejnovějšího ruského algoritmu

Dále jsme poznamenali, že standard GOST R 34.11-94 byl nahrazen novějším - GOST R 34.11-2012 "Stribog". Podrobněji zkoumáme jeho specifika.

Prostřednictvím tohoto standardu lze implementovat kryptografické hashové funkce, jak je tomu u algoritmů popsaných výše. Lze poznamenat, že nejnovější ruský standard podporuje blok vstupních dat ve výši 512 bitů. Hlavní výhody GOST R 34.11-2012:

  • vysoká míra bezpečnosti ze šrafování šifry;
  • spolehlivost podporovaná použitím ověřených struktur;
  • operační výpočet hashové funkce, nedostatek transformací v algoritmu, které komplikují konstrukci funkce a zpomalují výpočet.

Významné výhody nového ruského standardu kryptografického šifrování umožňují, aby byl použit při organizaci toku dokumentů, které splňují nejpřísnější kritéria, která jsou stanovena v ustanoveních regulační legislativy.

Specifičnost šifrovacích funkcí

Podívejme se podrobněji na to, jak lze typy algoritmů, které studujeme, používat v oblasti kryptografie. Klíčovým požadavkem na odpovídající funkce je odolnost vůči kolizím, kterou jsme zmínili výše. To znamená, že duplicitní hodnoty funkce hash by se neměly vytvářet, pokud jsou tyto hodnoty již přítomné ve struktuře sousedního algoritmu. Další kritéria uvedená výše by měla také splňovat kryptografické funkce. Je zřejmé, že existuje vždy teoretická možnost obnovení zdrojového souboru založeného na hash, zejména v případě, že je přístupný výkonný počítačový nástroj. Tento scénář je však třeba minimalizovat díky robustním šifrovacím algoritmům. Takže bude velmi těžké vypočítat funkci hash, pokud výpočetní pevnost odpovídá vzoru 2 ^ {n / 2}.

Dalším důležitým kritériem šifrovacího algoritmu je změna hash v případě korekce počáteční sady dat. Dále jsme si povšimli, že šifrovací standardy by měly mít citlivost 1 bit. Takže tato vlastnost je klíčovým faktorem při zajištění spolehlivé ochrany heslem přístupu k souborům.

Kryptografické hashové funkce

Iterativní schémata

Nyní zkoumáme, jak lze vytvářet kryptografické algoritmy. Mezi nejběžnější schémata řešení tohoto problému patří použití iterativního sekvenčního modelu. Vychází z použití tzv. Kompresní funkce, ve které je počet vstupních bitů podstatně větší než počet zaznamenaných na výstupu.

Funkce komprese samozřejmě musí splňovat nezbytné kritéria kryptografické síly. V interaktivním schématu je první operace pro zpracování vstupního datového toku rozdělena na bloky, jejichž velikost je vypočítána v bitech. Odpovídající algoritmus zahrnuje také časové proměnné daného počtu bitů. První hodnota používá dobře známé číslo, zatímco další datové bloky jsou kombinovány s hodnotou dotčené funkce na výstupu. Hodnota hash se stává výstupními bity pro poslední iteraci, která berou v úvahu celý vstupní proud včetně první hodnoty. K dispozici je takzvaný "lavinový efekt" hašování.

Hlavní obtíž charakterizující hash implementovanou jako iterativní schéma je, že někdy je obtížné vytvářet hashové funkce, pokud vstupní tok není totožný s velikostí bloku, do něhož je počáteční datová pole rozdělena. V tomto případě však mohou být algoritmy, podle kterých může být původní proud rozšiřován tak či onak.

V některých případech mohou být tzv. Multi-pass algoritmy zapojeny do zpracování dat v iteračním schématu. Navrhují vytvoření ještě intenzivnějšího "lavinového efektu". Takový scénář předpokládá vytvoření opakujících se datových polí a sekundárně se rozšiřuje.

Hodnota hash funkce, pokud hodnoty

Blokový algoritmus

Funkci komprese lze také založit na blokovém algoritmu, kterým se šifrování provádí. Aby bylo možné zvýšit úroveň zabezpečení, můžete použít jako datový blok datové bloky, které mají být v aktuální iteraci, jako klíč a výsledek operací získaných při provádění funkce komprese dříve, jako vstup. Výsledkem je, že poslední iterace poskytne výstup algoritmu. Hash security bude korelovat s robustností zapojeného algoritmu.

Nicméně, jak jsme poznamenali výše, vzhledem k různým typům hashových funkcí jsou blokové algoritmy často doprovázeny potřebou použití velkých výpočetních sil. Pokud nejsou k dispozici, rychlost zpracování souborů nemusí být dostatečná pro řešení praktických problémů spojených s použitím funkce hash. Současně lze požadovanou kryptografickou resistenci realizovat s malým počtem operací se zdroji datových toků, zejména algoritmy, které jsme uvažovali, jsou přizpůsobeny k řešení takových problémů - MD5, SHA, ruské kryptografické šifrovací standardy.

Přečíst předchozí

Programátor řadiče PIC