GNU/Linux >> Znalost Linux >  >> Linux

Úvod do hašování a kontrolních součtů v Linuxu

Je pravděpodobné, že jste při stahování softwaru z internetu viděli odkazy na hash nebo kontrolní součty. Často se zobrazí software a v blízkosti odkazu je kontrolní součet. Kontrolní součet může být označen jako MD5, SHA nebo s jiným podobným názvem. Zde je příklad použití jedné z mých oblíbených starých her z 90. let s názvem Nethack:

Mnoho lidí přesně neví, co tyto informace znamenají a jak s nimi pracovat. V tomto článku diskutuji o účelu hašování spolu s tím, jak jej používat.

[ Čtenáři si také užili: Začínáme s GPG (GnuPG) ]

Cíle kryptografie

V této první části chci, abyste se něco naučili. Konkrétně chci, abyste ve své hlavě přerušili asociaci mezi slovem šifrování a slovo důvěrné . Mnozí z nás si tato dvě slova představují jako synonyma, i když tomu tak ve skutečnosti není. Kryptografie, která zahrnuje šifrování, umí poskytovat důvěrnost, ale může také uspokojit jiné cíle.

Kryptografie má ve skutečnosti tři cíle:

  • Důvěrnost – aby obsah souboru nebyl čten neoprávněnými uživateli
  • Autenticita – k prokázání původu souboru
  • Integrita – prokázat, že se soubor neočekávaně nezměnil

Je to ten třetí koncept, integrita , která nás zde zajímá. V tomto kontextu integrita znamená prokázat, že se data neočekávaně nezměnila. Prokázání integrity je užitečné v mnoha scénářích:

  • Stahování z internetu, jako jsou distribuce Linuxu, software nebo datové soubory
  • Síťové přenosy souborů prostřednictvím NFS, SSH nebo jiných protokolů
  • Ověření instalací softwaru
  • Porovnání uložené hodnoty, jako je heslo, s hodnotou zadanou uživatelem
  • Zálohy, které porovnávají dva soubory, aby zjistily, zda se změnily

Co je hašování?

Kryptografie používá hash k potvrzení, že soubor je nezměněn. Jednoduché vysvětlení je, že stejná metoda hashování se používá u souboru na každém konci stahování z internetu. Soubor je zahašován na webovém serveru správcem webu a výsledek hash je publikován. Uživatel stáhne soubor a použije stejnou hashovací metodu. Výsledky hash nebo kontrolní součty , jsou srovnány. Pokud je kontrolní součet staženého souboru stejný jako u původního souboru, pak jsou oba soubory totožné a nedošlo k žádným neočekávaným změnám v důsledku poškození souboru, útoků typu man-in-the-middle atd.

Hašování je jednosměrný proces. Hašovaný výsledek nelze vrátit zpět, aby se odhalila původní data. Kontrolní součet je řetězec výstupu, který má nastavenou velikost. Technicky to znamená, že hašování není šifrování, protože šifrování má být obráceno (dešifrováno).

Jaký typ hašovací kryptografie můžete v systému Linux použít?

Výběr zpráv a zabezpečený algoritmus hash

V Linuxu budete pravděpodobně pracovat s jednou ze dvou metod hašování:

  • MD5
  • SHA256

Tyto kryptografické nástroje jsou zabudovány do většiny distribucí Linuxu a také do macOS. Windows obvykle tyto nástroje neobsahuje, takže pokud chcete použít tuto techniku ​​zabezpečení, musíte si je stáhnout samostatně od dodavatelů třetích stran. Myslím, že je skvělé, že bezpečnostní nástroje, jako jsou tyto, jsou součástí Linuxu a macOS.

Výběr zpráv versus bezpečný hash algoritmus

Jaký je rozdíl mezi algoritmem výtahu zpráv a bezpečným hashovacím algoritmem? Rozdíl je v matematice, ale oba dosahují podobných cílů. Systémoví správci mohou preferovat jeden před druhým, ale pro většinu účelů fungují podobně. Nejsou však zaměnitelné. Hash generovaný pomocí MD5 na jednom konci připojení nebude užitečný, pokud je na druhém konci použit SHA256. Na obou stranách musí být použita stejná metoda hash.

SHA256 generuje větší hash a jeho dokončení může vyžadovat více času a výpočetního výkonu. Je považován za bezpečnější přístup. MD5 je pravděpodobně dost dobrý pro většinu základních kontrol integrity, jako je stahování souborů.

Kde v Linuxu najdete hash?

Linux používá hash na mnoha místech a v mnoha situacích. Kontrolní součty může uživatel generovat ručně. Jak přesně na to, uvidíte později v článku. Kromě toho jsou v /etc/shadow zahrnuty funkce hash , rsync a další nástroje.

Například hesla uložená v /etc/shadow soubor jsou ve skutečnosti hashe. Když se přihlásíte do systému Linux, proces ověřování porovná uloženou hodnotu hash s hašovanou verzí hesla, které jste zadali. Pokud jsou dva kontrolní součty totožné, původní heslo a to, co jste zadali, jsou totožné. Jinými slovy, zadali jste správné heslo. To je však určeno bez skutečného dešifrování hesla uloženého ve vašem systému. Zkontrolujte první dva znaky druhého pole svého uživatelského účtu v /etc/shadow . Pokud jsou tyto dva znaky $1 , vaše heslo je zašifrováno pomocí MD5. Pokud jsou znaky 5 $ , vaše heslo je zašifrováno pomocí SHA256. Pokud je hodnota 6 $ , SHA512 se používá. SHA512 se používá na mém virtuálním počítači Fedora 33, jak je vidět níže:

Jak ručně generovat kontrolní součty

Použití hash utilit je velmi jednoduché. Provedu vás velmi snadným scénářem, který lze provést na laboratorním počítači nebo na jakémkoli systému Linux, který máte k dispozici. Účelem tohoto scénáře je zjistit, zda se soubor změnil.

Nejprve otevřete svůj oblíbený textový editor a vytvořte soubor s názvem original.txt s řádkem textu, který zní:Původní informace.

[damon@localhost ~]$ vim original.txt
[damon@localhost ~]$ cat original.txt
Original information.
[damon@localhost ~]$

Dále spusťte soubor pomocí hashovacího algoritmu. Zatím budu používat MD5. Příkaz je md5sum . Zde je příklad:

[damon@localhost ~]$ md5sum original.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

Všimněte si výsledné hodnoty kontrolního součtu. Tato hodnota je dostatečně velká, že je obtížné s ní pracovat. Uložme tuto hodnotu pro budoucí použití jejím přesměrováním do souboru:

[damon@localhost ~]$ md5sum original.txt > hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

V tuto chvíli máte původní soubor. Zkopírujte tento soubor do /tmp adresář s názvem duplicate.txt . Zkopírujte soubor pomocí následujícího příkazu (nezapomeňte kopírovat, nikoli přesouvat):

[damon@localhost ~]$ cp original.txt /tmp/duplicate.txt
[damon@localhost ~]$

Spuštěním následujícího příkazu vytvořte kontrolní součet zkopírovaného souboru:

[damon@localhost ~]$ md5sum /tmp/duplicate.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Poté přidejte výsledek hash do našeho hashes.txt soubor a poté oba porovnejte. Buďte velmi opatrní při použití >> sem připojit operátor přesměrování, protože > přepíše hodnotu hash souboru original.txt soubor.

Spusťte následující příkaz:

[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Dva výsledky hash jsou identické, takže soubor se během procesu kopírování nezměnil.

Dále simulujte změnu. Chcete-li změnit /tmp/duplicate.txt, zadejte následující příkaz obsah souboru a poté znovu spusťte md5sum pomocí příkazu >> operátor append:

[damon@localhost ~]$ hostname >> /tmp/duplicate.txt
[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$

Víte, že duplicate.txt soubor již není totožný s original.txt soubor, ale dokažme to:

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt
[damon@localhost ~]$

Hodnoty dvou kontrolních součtů nejsou totožné, a proto nejsou identické ani dva soubory, ze kterých byly kontrolní součty vygenerovány.

Ve výše uvedeném příkladu jste ručně porovnali hodnoty hash zobrazením pomocí cat . Můžete použít --check možnost mít md5sum proveďte srovnání za nás. Níže jsou uvedeny oba způsoby:

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt

[damon@localhost ~]$ md5sum --check hashes.txt
original.txt: OK
/tmp/duplicate.txt: FAILED
/tmp/duplicate.txt: OK
md5sum: WARNING: 1 computed checksum did NOT match
[damon@localhost ~]$

Výše uvedené kroky můžete zopakovat a nahradit sha256sum pro md5sum příkaz, abyste viděli, jak proces funguje pomocí algoritmu SHA. sha256sum příkaz také obsahuje --check checksum možnost, která porovná výsledné hodnoty hash a zobrazí zprávu, zda se soubory liší.

Poznámka :Pokud přenášíte soubory mezi Linuxem, macOS a Windows, stále můžete k ověření integrity souborů použít hašování. Chcete-li vygenerovat hodnotu hash v systému macOS, spusťte md5 příkaz. Chcete-li to provést ve Windows, musíte si stáhnout program třetí strany. Osobně používám md5checker . Ujistěte se, že rozumíte licencování těchto nástrojů. Možná budete moci použít rutinu PowerShell get-filehash , v závislosti na verzi PowerShellu, kterou jste nainstalovali.

[ Volný kurz:Red Hat Satellite Technical Overview. ] 

Sbalit

Hašování potvrzuje, že se data během přenosu souboru, stahování nebo jiné události neočekávaně nezměnila. Tento koncept je známý jako integrita souborů. Hašování vám neřekne, co se změnilo, jen to, že se něco změnilo. Jakmile vám hašování řekne, že se dva soubory liší, můžete použít příkazy jako diff zjistit, jaké rozdíly existují.


Linux
  1. Jak přesměrovat výstup do souboru a Stdout v Linuxu

  2. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  3. Linux – Rozumíte unixovým oprávněním a typům souborů?

  1. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  2. Kompresní a archivační metody v Linuxu

  3. Pipes a přesměrování v Linuxu – vysvětleno!

  1. Oprávnění pro Linux:Úvod do chmod

  2. Jak připojit a odpojit souborový systém v Linuxu

  3. Podporované a doporučené souborové systémy v systému Linux