Kryptoměna Bitcoin
Kryptoměna Bitcoin (4/9) · 9:48

Bitcoin - Digitální podpisy Vysvětlení schématů digitálních podpisů, které jsou základními stavebními kameny mnoha kryptografických protokolů.

Navazuje na Peníze a bankovnictví.
Digitální podpis je v podstatě matematická operace, při které se spáruje veřejná řada čísel s určitou digitální zprávou. Digitální podpis si lze v mnoha ohledech představovat jako elektronickou obdobu fyzického podpisu. Když fyzicky podepisujete dokument, připojujete k němu vlastně sled znaků, který představuje vaši identitu. Tento proces spojí vaši indentitu s daným dokumentem. Navíc tím, že ten sled znaků vašeho podpisu má určité rysy, které jsou typické pouze pro vás, doufáme, že nikdo nebude schopen tento podpis zfalšovat. U schématu digitálního podpisu dosahujeme podobných vlastností čistě matematickými prostředky. Mezi známější metody digitálního podpisu patří digitální podpis RSA který byl pojmenován podle jeho třech tvůrců (Rivest, Shamir, Adleman). Známá je také metoda DSS (Digital Signature Standard = Standard digitálního podpisu). Obecně platí, že digitální podpisy jako jsou RSA nebo DSS, je mnohem těžší zfalšovat, než ručně psaný fyzický podpis. V tomto videu se pokusím vysvětlit základní společné principy metod digitálního podepisování, nicméně se nebudu pouštět do žádných technických detailů toho, jak funguje RSA nebo DSS. Alespoň ne v tomto videu. Ukažme si tedy, jak digitální podpisy fungují. Dejme tomu, že nějaký uživatel, říkejme mu Alice, by rád digitálně podepsal určitý dokument. Nejdříve si Alice vygeneruje dva digitální klíče. Tyto dva klíče jsou známé jako podpisový klíč. Je to soukromý klíč. Použiji pro něj červenou barvu. Zkratkou ho označíme jako SK (signing key = podpisový klíč). A potom si Alice vygeneruje druhý klíč, známý jako ověřovací klíč. K vygenerování soukromého i veřejného klíče může dojít současně. Alice si oba klíče vygeneruje najednou a tyto klíče budou mít matematický vztah. Ale zajímavá věc je, že chcete, aby ověřující klíč byl veřejný a podpisový klíč soukromý. Ale spíše ve schématu digitálního podpisu by mělo být těžké přijít s ověřovacím klíčem nebo spíše by mělo být těžké přijít s podpisovým klíčem, pokud vidíte jen ověřovací klíč. Nyní zvážíme, co bude digitální podpis znamenat ve zprávě. V podstatě pokud máte zprávu, nazveme ji M (message). Přejete si tu zprávu digitálně podepsat. Co v podstatě uděláte, že aplikujete matematickou transformaci. Alice bude používat matematickou transformaci na zprávu M a svůj podpisový klíč jako K. Výsledkem této transformace, výstup této transformace bude unikátní řada číslic, kterou nazýváme podpis. Podpis zprávy M. Zajímavé na tom je, že podpis je v podstatě odvozený z kombinace zprávy M spolu s podpisovým klíčem, soukromým klíčem Alice. To vyprodukuje krátkou/relativně krátkou sekvenci čísel jako výstup. V podstatě by mělo být schéma digitálního podpisu navržené tak, aby pouze ten, kdo vlastní podpisový klíč, ten soukromý podpisový klíč, byl schopen vytvořit tento typ výstupu, tento typ podpisu SM (signature of message M) ve zprávě M. Ověřovací proces je docela podobný postupu podepisování, ale zahrnuje veřejný ověřovací klíč. Při ověřovacím procesu máte v podstatě 3 různé vstupy. První vstup bude ta zpráva, kterou chcete ověřit podpisem. Také potřebujete další zprávu, kde potřebujete pro otevření, jako vstup podpis zprávy. Neboli jak vypadá to SM (podpis zprávy). A nakonec poslední vstup do ověřovacího schématu bude veřejný klíč, veřejný ověřovací klíč, který patří Alici. Tyhle tři vstupy dáme dohromady a provedeme s nimi matematickou tranformaci. Matematická transformace se snaží zjistit nebo zkontrolovat, že podpis, který vidíte, odpovídá zprávě M. A že je to ten, který mohl být vytvořen pomocí Alicina soukromého podpisového klíče. Tento soukromý podpisový klíč naopak odpovídá Alicinu veřejnému ověřovacímu klíči. Myslím, že stojí za povšimnutí, že vlastně můžete celý tento proces provést jen s ověřovacím klíčem. V podstatě nepotřebujete podpisový klíč k ověření digitálního podpisu. Dokonce ho ani nepotřebujete ani neúmyslně nebo nepřímo. Můžete udělat vše, můžete ověřit vše jen se znalostí veřejného ověřovacího klíče. A veřejný ověřovací proces v podstatě' vyprodukuje buď ano nebo ne. Říká, mám podpis akceptovat nebo ho mám odmítnout? Je to jednoduchý ověřovací proces. A jak můžete vidět, proces podpisu účinně spojí tento veřejný ověřovací klíč, spojí veřejný ověřovací klíč s Alicí. Vzpomeňme si, že Alice je ten, kdo zveřejnil tento ověřovací klíč a vyhlásil do světa: "Tohle je můj ověřovací klíč. Jen systém a já budeme schopni podepsat zprávy, které budou považovány za pravé vzhledem k tomuto ověřovacímu klíči." A protože zpráva je nyní spojena s tímto veřejným klíčem a pokud se díváte na veřejný klíč jako určitý identifikátor, který třeba identifikuje Alici, pak můžete o digitálním podepisování uvažovat jako o procesu, který v podstatě propojí identitu s podepisovanou zprávou A to nám skutečně dává v matematickém smyslu... dává nám to obdobu k tradičnímu ručně psanému podpisu. Nyní chci udělat dvě poznámky. Myslím, že jsou v podstatné. Zaprvé si všimnete, že transformace, která tvoří samotný faktický digitální podpis, tato transformace zde, která tvoří SM. Tato transformace v podstatě vezme zprávu jako jeden ze vstupů. A znamená to, že podpis závisí na zprávě. Pokud zprávu změníte, dostanete jiný podpis. V tomto smyslu se digitální podpis liší od tradičního ručně psaného podpisu. Váš ručně psaný podpis se pravděpodobně nemění, víceméně zůstává stejný bez ohledu na to, co podepisujete. Ale váš digitální podpis je velice citlivý na to, co podepisujete. Bude se lišit v závislosti na tom, co podepisujete. Budete-li digitálně podepisovat jinou zprávu, výstupem bude jiný podpis. Druhá poznámka je, že digitální podpisy jsou často spojené s kryptografickou hašovací funkcí. Ve videu o kryptografické hašovací funkci jsem zmínil a znovu to zopakuji, že první kryptografické hašovací funkce byly vlastně původně zkonstruovány právě pro použití v digitálním podepisování. Co se konkrétně děje, než podepíšete libovolnou zprávu. Řekněme, že máte velkou zprávu, kterou chcete podepsat. Před tím, než tuto zprávu podepíšete, budete v podstatě na zprávu aplikovat kryptografickou hašovací funkci a dostanete z této kryptografické hašovací funkce výstup. Získáte kratší výstup, sumu té kryptografické hašovací funkce. A při podepisování algoritmu raději než podepisovat původní zprávu ji nejprve hašujete (testujete vstupní data na shodu), potom podepíšete výstup zprávy. Podepíšete výslednou sumu místo původní zprávy. A tyto dva kroky, kterými je hašování a potom podepisování usnadňuje proces digitálního podepisování, protože při vlastním podepisování už nepracujete se vstupem libovolné délky, ale místo toho pracujete s množstvím číslic s fixní délkou. Toto hašování a následné podepisování je ve skutečnosti bezpečné dokud je složité najít dvě zprávy, které mají stejný výstup při použití dané hašovací funkce. Neboli nemůžete přijít se dvěma různými zprávami, jejichž výstup je identický, když na ně aplikujeme hašovací funkci. Jinými slovy, pokud je hašovací funkce odolná vůči kolizím, bude proces jejího použití při digitálním podepisování bezpečný a... Můžeme se nad tím více zamyslet. Kdyby bylo možné nalézt dvě zprávy, které jsou odlišné, ale vyznačují stejný výstup při použití dané hašovací funkce, ve skutečnosti by to vedlo k bizarním problémům, protože podpis první zprávy by potom byl stejný jako podpis druhé zprávy. Protože v obou případech nepodepisujete skutečné zprávy, podepisujete haše zpráv. Haše jsou stejné, skončítetedy se stejným podpisem na 2 různých zprávách. To by mohlo dělat problémy, kdyby konkrétní zprávu bylo snadné zfalšovat díky digitálnímu podpisu. To je samozřejmě něco, co nechcete. Nechcete přeci, aby byl někdo schopen přijít s podpisem na jiné zprávě, na rozdíl od té, kterou jste původně zamýšleli podepsat. Je to možné... a objasním to. Je možné popsat digitální podpisy podrobněji pomocí matematiky ale já doufám, že tohle video vám dalo základy, aniž bych vás zahltil matematikou, která za tím vším stojí.
video