Šifrování, hašování, solení – jaký je rozdíl?

Šifrování, hašování, solení - v čem je rozdíl


Šifrování, hašování a solení jsou všechny související techniky, ale každý z těchto procesů má vlastnosti, které je propůjčují různým účelům.

Ve zkratce, šifrování zahrnuje kódování dat tak, aby k nim měli přístup pouze ti, kteří mají klíč. Tím je chráněno před neoprávněnými stranami.

Kryptografické hašování zahrnuje výpočty, které nelze zvrátit. Tyto funkce mají některé speciální vlastnosti, díky nimž jsou užitečné pro digitální podpisy a jiné formy ověřování.

Sůl zahrnuje přidání náhodných dat před tím, než je vložena pomocí kryptografické hašovací funkce. Většinou se používá k zabezpečení hesel během skladování, ale lze jej použít také s jinými typy dat.

Co je šifrování?

Jednoduše řečeno, šifrování je proces použití kódu k zastavení ostatních stran v přístupu k informacím. Po zašifrování dat mají přístup pouze ti, kteří mají klíč. Pokud je používán dostatečně komplikovaný systém a je používán správně, útočníci nemohou data vidět.

Data jsou šifrována pomocí šifrovacích algoritmů, které jsou známé také jako šifry. Jedním z nejdůležitějších rozdílů mezi šifrováním a hašováním (k němuž se dostaneme později) je to, že šifrování je navrženo tak, aby šlo obousměrně. To znamená, že jakmile je něco zašifrováno klíčem, může být také dešifrováno.

Díky tomu je šifrování užitečné v celé řadě situací, například pro bezpečné ukládání nebo přenos informací. Jakmile jsou data správně zašifrována, jsou považována za bezpečná a mohou k nim přistupovat pouze ti, kteří mají klíč. Nejběžněji známým typem je šifrování symetrických klíčů, které zahrnuje použití stejného klíče v procesech šifrování i dešifrování..

Šifrování veřejného klíče je o něco složitější, protože jeden veřejně přístupný klíč se používá k šifrování dat, zatímco jeho odpovídající soukromý klíč se používá k jeho dešifrování. Tato funkce umožňuje lidem, kteří se nikdy nesetkali, bezpečně komunikovat. Šifrování veřejného klíče je také důležitou součástí digitálních podpisů, které se používají k ověření pravosti a integrity dat a zpráv..

Viz také: Vysvětlení běžných typů šifrování

Běžné šifrovací algoritmy

  • Šifra Caesar - Jedná se o jednoduchý kód, který vyžaduje, aby se každé písmeno posunulo o pevný počet míst. Pokud má Caesarova šifra posun tři, každé „a“ se stane „d“, každé „b“ se stane „e“, každé „c“ se stane „f“ a tak dále. Jmenuje se podle Juliuse Caesara, který byl první osobou, která nahrála tento plán.
  • AES - Advanced Encryption Standard je složitý algoritmus symetrického klíče, který zajišťuje významnou část naší moderní komunikace. Zahrnuje řadu sofistikovaných kroků a často se používá k šifrování dat v TLS, v aplikacích pro zasílání zpráv, v klidu a v mnoha dalších situacích. Zde se hlouběji věnujeme šifrování AES.
  • 3DES - Triple DES je založen na algoritmu DES. Když se díky rostoucímu počítačovému výkonu stal DES nejistým, 3DES byl vyvinut jako zesílený algoritmus. Ve 3DES jsou data zpracovávána algoritmem DES třikrát namísto pouze jednou, což ztěžuje prasknutí. 3DES lze použít pro mnoho stejných věcí jako AES, ale pouze určité implementace jsou považovány za bezpečné.
  • RSA - Šifra Rivest-Shamir-Adleman byla první formou široce používané kryptografie s veřejným klíčem. Umožňuje entitám bezpečně komunikovat, i když se nesetkaly nebo měly šanci si vyměnit klíče. Může být použit v řadě různých bezpečnostních protokolů, jako je PGP a TLS. Zde máme podrobného průvodce šifrováním RSA.
  • ECDSA - Algoritmus digitálního podpisu eliptické křivky je varianta DSA, která používá kryptografii eliptické křivky. Jako algoritmus veřejného klíče může být použit v podobných situacích jako RSA, ačkoli je kvůli běžným problémům se zabezpečením implementován méně často.

Šifrování v akci

Abyste získali představu o tom, jak šifrování funguje v praxi, použijeme jako příklad šifru Caesar. Pokud bychom chtěli zašifrovat zprávu "Pojďme jíst"S posunem tři,"L"By se stalo"Ó“,„E"By se stalo"h" a tak dále. To nám dává zašifrovanou zprávu:

Ach, hdw

Pro dešifrování zprávy by příjemce musel vědět, že šifrovací algoritmus zahrnuje posun o tři, pak vrátit každé písmeno zpět o tři místa. Pokud bychom chtěli, mohli bychom změnit kód posunutím každého písmene o jiné číslo. Mohli bychom dokonce použít mnohem sofistikovanější algoritmus.

Jedním příkladem je AES. Pokud použijeme 128bitovou online kalkulačku AES k šifrování „Pojďme jíst„S klíčem“1234“, Dává nám to:

FeiUVFnIpb9d0cbXP / Ybrw ==

Tento šifrovací text lze dešifrovat pouze klíčem „1234“. Pokud bychom měli používat složitější klíč a udržovat jej v soukromí, mohli bychom data považovat za zabezpečená před útočníky.

Co je hashování?

Kryptografické hašovací funkce jsou zvláštním typem jednosměrného výpočtu. Berou řetězec dat libovolné velikosti a vždy dávají výstup předem stanovené délky. Tento výstup se nazývá hash, hash hodnota nebo přehled zpráv. Protože tyto funkce nepoužívají klávesy, výsledek pro daný vstup je vždy stejný.

Nezáleží na tom, zda je váš vstup úplný Válka a mír nebo jednoduše dvě písmena, výsledek hašovací funkce bude vždy stejná délka. Hašovací funkce mají několik různých vlastností, díky nimž jsou užitečné:

  • Jsou to jednosměrné funkce - To znamená, že neexistuje praktický způsob, jak zjistit, jaký byl původní vstup z dané hodnoty hash.
  • Je nepravděpodobné, že dva vstupy budou mít stejnou hodnotu hash - I když je možné, aby dva různé vstupy přinášely stejnou hashovací hodnotu, šance na to, že se to stane, jsou tak malé, že si s tím opravdu neděláme starosti. Z praktických důvodů lze hodnoty hash považovat za jedinečné.
  • Stejný vstup vždy přináší stejný výsledek - Pokaždé, když do dané hashovací funkce vložíte stejné informace, bude vždy poskytovat stejný výstup.
  • I nejmenší změna dává úplně jiný výsledek - Pokud se změní i jediný znak, bude hodnota hash výrazně odlišná.

Na co se hash používá?

Hašovací funkce mohou mít některé zajímavé vlastnosti, ale co s nimi můžeme vlastně dělat? Být schopen plivat jedinečný výstup v pevné velikosti pro vstup libovolné délky se může zdát jako nic víc než obskurní párty, ale hash funkce mají ve skutečnosti řadu použití.

Jsou klíčovou součástí digitální podpisy, které jsou důležitým aspektem ověřování pravosti a integrity na internetu. Ověřovací kódy hash zpráv (HMACs) také používají hashovací funkce k dosažení podobných výsledků.

Kryptografické hashovací funkce lze použít také jako normální hashovací funkce. V těchto scénářích mohou fungovat jako kontrolní součty k ověření integrity dat, jako algoritmy otisku prstu, které eliminují duplicitní data, nebo k vytvoření hashových tabulek k indexování dat.

Běžné kryptografické hašovací funkce

  • MD5 –Je to hašovací funkce, která byla poprvé publikována v roce 1991 Ronem Rivestem. Nyní je považována za nezabezpečenou a neměla by se používat pro kryptografické účely. Navzdory tomu je stále možné použít ke kontrole integrity dat.
  • SHA-1 - Secure Hash Algorithm 1 se používá od roku 1995, ale není považován za bezpečný od roku 2005, kdy došlo k řadě úspěšných kolizních útoků. Nyní se doporučuje místo toho implementovat buď SHA-2 nebo SHA-3.
  • SHA-2 - Toto je rodina hashových funkcí, které fungují jako nástupci SHA-1. Tyto funkce obsahují četná vylepšení, díky nimž jsou bezpečné v široké škále aplikací. Přesto jsou SHA-256 a SHA-512 náchylné k útokům na prodloužení délky, takže existují situace, kdy je nejlepší implementovat SHA-3.
  • SHA-3 - SHA-3 je nejnovější člen rodiny Secure Hash Algorithm, ale je postaven zcela odlišně od svých předchůdců. V této fázi zatím nenahradil SHA-2, ale jednoduše dává kryptografům další možnost, která může poskytnout lepší zabezpečení v určitých situacích.
  • RIPEMD - RIPEMD je další rodina funkcí vyvinutých akademickou komunitou. Je založena na mnoha nápadech od MD4 (předchůdce MD5) a není omezena žádnými patenty. RIPEMD-160 je stále považován za relativně bezpečný, ale neviděl příliš rozšířené přijetí.
  • vířivá vana - Whirlpool je hashovací funkce z rodiny šablon čtvercových bloků. Je založen na úpravě AES a nepodléhá patentům. Je považován za bezpečný, ale poněkud pomalejší než některé jeho alternativy, což vedlo k omezenému přijetí.

Hašovací funkce v akci

Nyní, když pochopíte, jaké hashovací funkce jsou, je čas uvést je do praxe. Pokud vložíme stejný text jako „Pojďme jíst“Do online kalkulačky SHA-256 nám dává:

5c79ab8b36c4c0f8566cee2c8e47135f2536d4f715a22c99fa099a04edbbb6f2

Pokud změníme pouze jednu postavu o jednu pozici, drasticky změní celý hash. Překlep jako „Met je jíst”Přináší zcela odlišný výsledek:

4be9316a71efc7c152f4856261efb3836d09f611726783bd1fef085bc81b1342

Na rozdíl od šifrování nemůžeme tuto hašovací hodnotu pomocí funkce převrátit, abychom znovu dostali náš vstup. Ačkoli tyto hašovací funkce nelze použít stejným způsobem jako šifrování, jejich vlastnosti z nich činí cennou součást digitálních podpisů a mnoha dalších aplikací.

Hašovací funkce a hesla

Hašovací funkce mají další běžné použití, o kterém jsme ještě nediskutovali. Jsou také klíčovou součástí udržet naše hesla v bezpečí během skladování.

Pravděpodobně máte desítky online účtů s hesly. Pro každý z těchto účtů musí být vaše heslo někde uloženo. Jak lze ověřit vaše přihlašovací údaje, pokud web neměl vlastní kopii vašeho hesla?

Společnosti jako Facebook nebo Google ukládají miliardy uživatelských hesel. Pokud by tyto společnosti uchovávaly hesla jako prostý text, pak by jakýkoli útočník, který by se mohl dostat do databáze hesel, měl přístup ke každému účtu, který najde..

To by byla vážná bezpečnostní katastrofa pro společnost i její uživatele. Pokud by každé jediné heslo bylo vystaveno útočníkům, byly by ohroženy všechny jejich účty a uživatelská data.

Nejlepší způsob, jak tomu zabránit, je neukládat hesla samotná, ale namísto toho hodnoty hash pro hesla. Jak jsme diskutovali v předchozí části, kryptografické hashovací funkce fungují v jednom směru a vytvářejí výstup pevné velikosti, který není možné zvrátit.

Pokud organizace ukládá hash hesla namísto samotného hesla, může při přihlášení uživatele ověřit, zda se oba hash shodují. Uživatelé zadávají svá hesla, která jsou poté hashována. Tento hash je poté porovnán s hash heslem uloženým v databázi. Pokud se obě hashovací shody shodují, bylo zadáno správné heslo a uživatel má přístup.

Toto nastavení znamená, že heslo nikdy nemusí být uloženo. Pokud útočník pronikne do databáze, zjistí pouze heslo hash, nikoli hesla.

Přestože hashovací hesla pro úložiště nebrání útočníkům v používání hashů k identifikaci hesel, dělá to jejich práci výrazně obtížnější a časově náročnější. To přináší naše poslední téma, solení.

Co je solení?

Solení je v podstatě přidání náhodných dat před tím, než se provede pomocí hashovací funkce, a nejčastěji se používají s hesly.

Nejlepší způsob, jak vysvětlit použití solí, je nejprve diskutovat, proč je potřebujeme. Možná jste si mysleli, že uložení hesel hesel by vyřešilo všechny naše problémy, ale bohužel jsou věci trochu složitější než to.

Slabá hesla

Mnoho lidí má opravdu špatná hesla, možná i vy. Problém je v tom, že lidé mají tendenci uvažovat podle předvídatelných vzorců a vybírat si hesla, která si snadno zapamatujete. Tato hesla jsou zranitelná vůči slovníkovým útokům, které každou sekundu procházejí tisíci nebo miliony nejběžnějších kombinací hesel, aby se pokusily najít správné heslo pro účet..

Pokud se místo toho uloží hash hesla, věci se trochu liší. Když útočník narazí na databázi hashů hesel, může je použít hash tabulky nebo duhové stoly hledat odpovídající hashe, které mohou použít k nalezení hesel.

Tabulka hash je předem vypočítaný seznam hashů pro běžná hesla uložená v databázi. Vyžadují více práce v předstihu, ale jakmile je tabulka dokončena, je mnohem rychlejší vyhledat hash v tabulce, než spočítat hash pro každé možné heslo. Další výhodou je, že tyto tabulky lze použít opakovaně.

Duhové tabulky jsou podobné hashovým tabulkám, kromě toho, že zabírají méně místa za cenu vyššího výpočetního výkonu.

Obě tyto metody útoku jsou mnohem praktičtější, pokud jsou použita slabá hesla. Pokud má uživatel společné heslo, je pravděpodobné, že hash pro heslo bude v hašovací tabulce nebo v duhové tabulce. Pokud tomu tak je, pak je jen otázkou času, než má útočník přístup k uživatelskému heslu.

Uživatelé mohou pomoci tyto útoky zmařit výběrem delších a složitějších hesel, která jsou mnohem méně pravděpodobně uložena v tabulkách. V praxi k tomu nedochází nikde blízko, jak by mělo, protože uživatelé mají tendenci volit hesla, která si snadno zapamatujete. Jako volné pravidlo platí, že útočníci snadno zjistí věci, které jsou snadno zapamatovatelné.

Soli nabízejí další způsob, jak tento problém vyřešit. Přidáním náhodného řetězce dat k heslu před jeho hashováním to v podstatě zkomplikuje, což znemožňuje šance na úspěch těchto útoků.

Jak solení funguje v praxi

Řekněme například, že máte e-mailový účet a vaše heslo je „1234“. Když použijeme online kalkulačku SHA-256, získáme jako hash hodnotu následující:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Toto hash je to, co by bylo uloženo v databázi pro váš účet. Když zadáte heslo „1234“, Je hash a hodnota je porovnána s uloženou hodnotou. Protože jsou tyto dvě hodnoty stejné, bude vám udělen přístup.

Pokud útočník vnikne do databáze, bude mít přístup k této hodnotě a ke všem ostatním hashům hesel, které tam byly. Útočník by pak převzal tuto hodnotu hash a vyhledal ji ve svém předem vypočítaném hashovém stole nebo v tabulce duhy. Od té doby „1234“Je jedno z nejčastějších hesel, velmi rychle naleznou odpovídající hash.

Tabulka hash by jim řekla, že:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Odpovídá:

1234

Útočník poté bude vědět, že vaše heslo je „1234“. Poté se mohou pomocí tohoto hesla přihlásit k vašemu účtu.

Jak vidíte, pro útočníka to nebyla moc práce. Aby se věci ještě více ztížily, přidáme do hesla sůl náhodných dat, než bude hashováno. Soli pomáhají významně snížit šanci hashových stolů a duhových stolů vrátit pozitivní výsledek.

Vezměme 16 náhodných solí náhodných dat:

H82BV63KG9SBD93B

Přidáme jej do našeho jednoduchého hesla „1234" jako tak:

1234H82BV63KG9SBD93B

Teprve nyní, když jsme to osolili, jsme provedli stejnou hashovací funkci, jakou jsme předtím dělali, která se vrací:

91147f7666dc80ab5902bde8b426aecdb1cbebf8603a58d79182b750c10f1303

Jistě, tato hodnota hash není delší nebo složitější než ta předchozí, ale to není smysl. I když jsou oba stejné délky, “1234H82BV63KG9SBD93B“Je mnohem méně běžné heslo, takže je mnohem méně pravděpodobné, že jeho hash bude uložen v hašovací tabulce.

Čím méně je heslo uloženo v hašovací tabulce, tím méně je pravděpodobné, že útok uspěje. Takto přidávání solí pomáhá zvyšovat bezpečnost hashe hesel.

Hackování celých databází

Když má útočník přístup k celé databázi hashů hesel, nemusí testovat každý hash proti každé položce. Místo toho mohou v celé databázi vyhledat shody, které se shodují s jejich hashovou tabulkou. Pokud je databáze dostatečně velká, může útočník ohrozit obrovské množství účtů, i když mají pouze pětiprocentní úspěšnost.

Pokud jsou heslům přiděleny jedinečné soli dříve, než jsou hashovány, je proces mnohem složitější. Pokud jsou soli dostatečně dlouhé, je šance na úspěch mnohem nižší, což by vyžadovalo hashovací stoly a duhové stoly musí být neúměrně velké, aby bylo možné najít odpovídající hashe.

Další výhodou solí je, když více uživatelů ve stejné databázi má stejné heslo nebo pokud jeden uživatel má stejné heslo pro více účtů. Pokud heslo hash není předem soleno, mohou útočníci porovnat hash a zjistit, že všechny účty se stejnou hodnotou hash sdílejí stejné heslo.

To usnadňuje hackerům cílení na nejčastější hodnoty hash, které jim poskytnou největší odměny. Jsou-li hesla předem solena, budou hodnoty hashů odlišné, i když budou použita stejná hesla.

Potenciální slané slabosti

Sůl ztratí svou účinnost, pokud se tak stane nesprávně. K dvěma nejčastějším problémům dochází, když soli jsou příliš krátké, nebo nejsou-li jedinečné pro každé heslo. Kratší soli jsou stále citlivé na útoky duhových stolů, protože nedělají výsledný hash dostatečně vzácný.

Pokud jsou soli znovu použity pro každé hashované heslo a sůl je objevena, je mnohem snazší zjistit každé heslo v databázi. Použití stejné soli také znamená, že kdokoli se stejným heslem bude mít stejný hash.

Společné solné algoritmy

Pro ukládání hesel se nedoporučuje používat normální hashovací funkce. Místo toho bylo navrženo mnoho funkcí se specifickými funkcemi, které pomáhají zvyšovat zabezpečení. Mezi ně patří Argon2, scrypt, bcrypt a PBKDF2.

Argon2

Společnost Argon2 se stala vítězem soutěže 2015 Hashing Competition o heslo. Pokud jde o algoritmy, je stále relativně nová, ale rychle se stala jednou z nejdůvěryhodnějších funkcí pro hashovací hesla.

Navzdory své mládí se doposud držela v řadě výzkumných prací, které ji prozkoumaly na slabosti. Argon2 je flexibilnější než jiné algoritmy hašování hesel a lze jej implementovat mnoha různými způsoby.

zašifrovat

Výslovnost „ess krypta“, Jedná se o druhý nejmladší algoritmus hashování hesel, který se běžně používá. Scrypt, navržený v roce 2009, používá ve svých výpočtech velké, ale nastavitelné množství paměti. Jeho nastavitelná povaha znamená, že může být stále odolný vůči útokům, i když výpočetní výkon v průběhu času roste.

bcrypt

bcrypt byl vyvinut v roce 1999 a je založen na šifře Blowfish. Byl to jeden z nejčastěji používaných algoritmů používaných při hašování hesel po mnoho let, ale nyní je zranitelnější vůči polím programovatelným hradlovým polím (FPGA). To je důvod, proč je Argon2 často preferován v novějších implementacích.

PKFD2

Tato funkce odvození klíče byla vyvinuta, aby nahradila PBKDF1, který měl kratší a méně bezpečnou délku klíče. Pokyny NIST z roku 2017 stále doporučují PKFD2 pro hashovací hesla, ale Argon2 řeší některé ze svých bezpečnostních problémů a může být v mnoha situacích lepší volbou.

Šifrování, hašování a solení: rekapitulace

Nyní, když jsme prošli podrobnostmi o šifrování, hašování a solení, je čas rychle vrátit zpět klíčové rozdíly, aby se propadly. I když každý z těchto procesů souvisí, každý z nich slouží jinému účelu.

Šifrování je proces kódování informací k jejich ochraně. Pokud jsou data šifrována, mohou je dešifrovat a získat přístup pouze těm, kteří mají správný klíč. Šifrovací algoritmy jsou reverzibilní, což nám dává způsob, jak udržet naše data mimo útočníky, ale přesto k nim mít přístup, když je potřebujeme. Široce se používá, abychom nás udrželi v bezpečí online, a hrají klíčovou roli v mnoha našich bezpečnostních protokolech, které udržují naše data v bezpečí, když jsou uložena a přepravována.

V porovnání, hashování je jednosměrný proces. Když něco hashujeme, nechceme se dostat zpět do své původní podoby. Kryptografické hashovací funkce mají řadu jedinečných vlastností, které dovolte nám prokázat pravost a integritu dat, například prostřednictvím digitálních podpisů a ověřovacích kódů zpráv.

K ukládání našich hesel se používají také specifické typy kryptografických hašovacích funkcí. Uložení hashe hesla namísto samotného hesla poskytuje další vrstvu zabezpečení. To znamená, že pokud útočník získá záznam do databáze, nemůže okamžitě získat přístup k heslům.

I když hashování heslem hackerům ztěžuje život, stále je možné jej obejít. Tady přichází solení. Salting přidává další data k heslům, než jsou hashována, což činí útoky časově náročnější a náročnější na zdroje. Pokud jsou soli a hesla používána správně, činí hashovací tabulky a duhové tabulky nepraktickými prostředky k útoku.

Šifrování, hašování a solení jsou společně důležitými aspekty udržování nás v bezpečí online. Pokud by tyto procesy nebyly zavedeny, útočníci by měli zdarma pro všechny vaše účty a data, takže byste na internetu neměli žádné zabezpečení..

Technologie-1 od tec_estromberg pod CC0

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

Add a Comment

Your email address will not be published. Required fields are marked *

82 + = 83