it-swarm-eu.dev

SHA, RSA a vztah mezi nimi

SHA je hashovací mechanismus. RSA je však šifrovací algoritmus.

Stejně tak algoritmus RSA používá SHA hashovací mechanismus pro generování hashovacích klíčů, které se zase používají k šifrování zprávy?)

Navíc RSA sama dává 2 klíče. Jeden může být veřejný a druhý soukromý. Nyní lze tyto klíče použít k šifrování i dešifrování. Odkaz: RSA . Jaké je použití SHA) v RSA?

V certifikátu udělovaném jakýmkoli webem, který poskytuje zabezpečení HTTPS, je přítomen SHA, stejně jako klíč MD5). Jak jsou vytvářeny a použity při šifrování nebo dešifrování dat přenesených do prohlížeče ?

36
whitehat

RSA jsou vlastně dva algoritmy, jeden pro asymetrické šifrování a jeden pro digitální podpisy (podpisový algoritmus je tradičně - ale nesprávně - popsán jako „šifrování pomocí soukromý klíč “a toto je nekonečný zdroj záměny).

Asymetrické šifrování používá klíče. Klíče jsou parametry algoritmu; samotný algoritmus je stejný pro všechny (v softwarovém vyjádření jde o spustitelný soubor), zatímco klíče se mezi uživateli liší. V pár klíčů je veřejný klíč klíč, který se používá k šifrování dat (převádí část dat, tj. Posloupnost bajtů) , do jiné posloupnosti bajtů, které jsou nepochopitelné pro všechny), zatímco soukromý klíč je klíč, který umožňuje jednomu dešifrovat ​​data (tj. obrátit šifrování).

Zatímco v symetrickém šifrování jsou šifrovací a dešifrovací klíče identické, ale s asymetrickým šifrováním, šifrovací a dešifrovací klíče jsou odlišné od sebe navzájem (odtud název); jsou matematicky spolu spojeny, ale mělo by být nemožné (tj. příliš těžké dělat s pouhým svazkem počítačů) získat dešifrovací klíč z šifrovacího klíče. Z tohoto důvodu je možné šifrovací klíč zveřejnit, zatímco dešifrovací klíč je soukromý: odhalení veřejného klíče nezajímá soukromý klíč.

To, čeho dosahuje asymetrické šifrování, není triviální čin. Možnost odhalit veřejný klíč, aniž by o soukromém klíči příliš mnoho nemluvila, ale taková, že oba klíče pracují společně (to, co je šifrováno veřejným klíčem, lze dešifrovat odpovídajícím soukromým klíčem, ale žádný jiný), vyžaduje mnoho matematika! RSA je plná matematiky. Toto kontrastuje se symetrickými šifrovacími algoritmy, které jsou „pouhými“ způsoby, jak vytvořit velký nepořádek dat smícháním bitů dohromady.

Asymetrické šifrování je přirozený nástroj, který se používá, když chceme povolit důvěrný přenos mezi dvěma uživateli z velké populace. Pokud máte 1000 uživatelů a chcete, aby si kterýkoli z těchto dvou uživatelů mohl navzájem vyměňovat data, aniž by na ně někdo mohl špehovat (včetně 998 dalších uživatelů), pak by klasickým řešením bylo distribuovat klíče pro symetrické šifrování každému pár uživatelů. Alice a Bob by měli známý společný klíč; Alice a Charlie by také měly sdílený klíč (ne stejný); a stejně tak Bob a Charlie; a tak dále. Každý uživatel by si měl pamatovat svůj „sdílený klíč“ s každým dalším z 999 dalších uživatelů a celkem byste měli 499500 klíčů. Přidání 1001. uživatele by vyžadovalo vytvoření 1000 dalších symetrických klíčů a každému z 1000 existujících uživatelů by dalo jeden. Celá distribuce klíčů se brzy změní v nepoužitelnou/neuskutečnitelnou noční můru. S asymetrickým šifrováním však jsou věci mnohem jednodušší z hlediska distribuce klíčů: každý uživatel si musí pamatovat svůj vlastní soukromý klíč; a veřejné klíče (jsou veřejné) mohou být distribuovány prostřednictvím nějakého druhu vysílání (např. adresáře).

RSA má určitá provozní omezení. U nejpoužívanější varianty (varianty známé jako PKCS # 1 v1.5 ), je-li velikost klíče RSA „1024 bitů“ (což znamená, že centrální matematická složka páru klíčů je 1024-bitové celé číslo), pak RSA může zašifrovat zprávu až 117 bajtů na délku a poskytnout šifrovanou zprávu o délce 128 bajtů. Tato omezená velikost a její velikost při šifrování jsou nevyhnutelnými důsledky matematické struktury procesu šifrování RSA. Kvůli těmto omezením obvykle nešifrujeme data přímo pomocí RSA; místo toho vybereme malou sekvenci náhodných bajtů, které nazýváme relační klíč. Šifrovat klíč relace pomocí RSA; a poté použijeme klíč relace s šifrovacím algoritmem symetrický ke zpracování celé zprávy. Tomu se říká hybridní šifrování .


SHA je obecný název rodiny kryptografické hashovací funkce . Úplně první člen této rodiny byl popsán pod názvem „SHA“, ale brzy byl oslaben poté, co v něm byla nalezena závažná slabina; pevná verze byla zveřejněna pod názvem SHA-1 (slabá verze je hovorově známá jako SHA-0). Později byly do rodiny přidány čtyři nové funkce podobné SHA (SHA-224, SHA-256, SHA-384 a SHA-512: které jsou souhrnně známé jako 'SHA-2').

Hašovací funkce nemají žádný klíč. Hašovací funkce je spustitelný algoritmus, který je čistým kódem. Existuje jeden SHA-1 a každý používá to samé.

Hašovací funkce „spravedlivě“ dělají velký nepořádek ve vstupních datech, který nemá být rozpadnut. Ve skutečnosti to má být odolné vůči rozpadání. I když každý ví vše, co je třeba vědět o hašovací funkci (neexistuje žádný klíč, pouze kód, a nic z toho není tajné), stále se ukazuje, že je „příliš těžké“ přepočítat odpovídající vstupní zprávu, vzhledem k hašovací výstup. Je dokonce nemožné najít dvě odlišné vstupní zprávy, které, když jsou dány hašovací funkci, poskytují stejný výstup; tam musí existují takové dvojice zpráv - nazývané kolize - protože hashovací výstup má pevně malou velikost, zatímco přijaté vstupy mohou být mnohem větší, takže je jich více možné vstupy než možné výstupy. Je to matematická jistota, že pro každou hashovací funkci existují kolize, ale ve skutečnosti je nalezení jedné jiné záležitosti.

Hashova funkce jako taková nedělá nic s okamžitou vysokou hodnotou, ale je to velmi důležitý stavební blok pro jiné algoritmy. Používají se například s digitální podpisy . Digitální podpis „prokazuje“ vědomé jednání určeného podpisovatele nad kusem dat; jako asymetrické šifrování, zahrnuje to páry klíčů a matematiku a související omezení podepsaných dat. Hašovací funkce h je taková, že podepisování h (m) je stejně dobré jako podepisování m samotné: protože není možné najít dvě odlišné zprávy která hash na stejnou hodnotu, schválení výstupu hash je dost dobré. Jde o to, že výstup hashovací funkce je dostatečně malý na to, aby byl použitelný s matematikou skrytou v podpisovém algoritmu, i když samotná zpráva je velká (SHA-1 dokáže zpracovávat gigabajty dat a výtěžek 20 bajtů).

Je třeba poznamenat, že některé nedávné varianty RSA šifrovacího algoritmu (s „OAEP výplní“ z PKCS # 1 v2.0) interně používají hashovací funkce. Hašovací funkce jsou dobrými "randomizátory" (výstup hashovací funkce nevykazuje rozeznatelnou strukturu), a proto jsou vhodné pro vytváření propracovanějších kryptografických algoritmů s dobrými bezpečnostními prvky.


V SSL/TLS (HTTPS je pouze HTTP v rámci a-SSL/TLS-tunelu) se hashovací funkce používají pro několik věcí:

  • jako součást asymetrického šifrování a/nebo digitálních podpisů;
  • jako součást HMAC umožňující klientovi a serveru ověřit, že vyměněná data nebyla při přenosu změněna;
  • jako stavební cihla pro Key Derivation Function , která „rozšiřuje“ daný relační klíč do několika symetrických klíčů používaných pro symetrické šifrování a kontroly integrity v obou směrech tunelu.

KDF se spoléhá na „randomizaci“ a nezvratitelnost hašovací funkce. V SSL/TLS až do TLS 1.1 je KDF postaven přes dvě hashovací funkce, MD5 a SHA-1, ve snaze učinit jej robustním, i když slabiny byly později nalezeny buď v MD5 nebo SHA- 1. Ukázalo se, že slabiny byly nalezeny v oboje, ale nedovolily to žádné zlomy na KDF, jak se používá v SSL/TLS. Nicméně TLS 1.2 přešel na jinou KDF, která používá jednu konfigurovatelnou hašovací funkci, obvykle SHA-256, pro kterou není v současnosti známa žádná slabost.

51
Thomas Pornin

SHA se v RSA nepoužívá.

Kryptografické protokoly jako SSL, SSH a další používají různé algoritmy jako SHA a RSA pro různé účely). SSL používá RSA (šifrování) nebo DH (s RSA, DSA nebo ECDSA podpisem) pro klíč vyjednávání a AES nebo 3DES pro šifrování dat Ve formátu protokolu/souboru PGP se pro podepisování a šifrování používají RSA, DSA a ElGamal.

4
chris

Jak jste poznamenali, jedná se o dvě různé věci. Hash (SHA) je zajistit integritu dat a šifrování (RSA) je pro důvěrnost dat. Používají se ve spojení s cílem zajistit, aby data nebyla zmírňována a aby je mohla číst pouze správná strana.

HTTPS je forma PKI, která poskytuje integritu, důvěrnost a autentizaci. SHA nebo MD5 jsou pouze dva různé hashovací algoritmy používané k zajištění integrity spojení https.

0
breakingigloo

Samozřejmě je možné, že SHA) se používá ke konstrukci PRNG (generátor pseudonáhodných čísel) pro generování klíčů RSA. Je však možné použít i jiné kryptomitiva (např. AES). Pro toto PRNG) existují speciální specifikace (NIS SP 800-90, ANSI X9.31). "Čistě" RSA don Nezáleží na tom, jak je generován klíč, ale při použití RSA v reálném světě musíme mít jistotu, že vygenerovaný klíč musí být generován skutečným (nebo se zdá, že je generován) náhodným procesem. Pokud ne, pak pro útočníka je snadné hádejte, jaké klíče jsou (Pokud keays nejsou náhodné, pak může útočník také spočítat).

0
user536

RSA je asymetrický kryptografický algoritmus, který se používá k odesílání informací konkrétní straně, aniž byste je mohli znovu dešifrovat. Ale přesto může být druhá osoba dešifrována. Tyto algoritmy jsou velmi pomalé, a proto se chtějí použít pouze na malém množství dat.

SHA je sada kryptografických hašovacích algoritmů, jedná se o menší reprezentaci velkého bloku dat, pro kryptografické účely chceme, aby to splnilo požadavek, že je nemožné najít soubor dat tak, aby odpovídal danému hašiši (v jinými slovy nemůžete přejít z hashe k datům, která hash vytváří (ať už stejná nebo ne).

Nakonec existují algoritmy jako AES, které se používají v symetrické kryptografii, kde obě strany mají stejný klíč a mohou oba šifrovat a dešifrovat stejným klíčem.

V zásadě tyto různé věci dáváme dohromady různými způsoby: Takže pomocí RSA posíláme a dohodneme se na sadě symetrických (AES) klíčů (pouze pro jednu relaci), takže nikdo jiný nemůže naše data dešifrovat, ale druhou člověk, protože se nemohli zmocnit symetrických klíčů a neděláme pomalou asymetrickou kryptografii na všech datech, ale pouze relativně malý symetrický šifrovací klíč.

Hashing se v takových systémech obvykle používá následujícím způsobem, chceme zkontrolovat, zda data pocházejí od jiné osoby, takže dešifruje prostý text svým soukromým klíčem, pokud zašifrujeme tento šifrovací text, měli bychom data získat zpět ven ( v podstatě si o šifrování myslíme jako o inverzi dešifrování, a to najednou dává smysl!), jak jsem však již řekl, asymetrická kryptografie je pomalá. Proč tedy hash data a podepsat hash tímto způsobem, můžeme ověřit integritu dat, aniž by někdo byl schopen vytvořit data, která se zdá být shodná.

0
ewanm89