Publikujeme

Nacházíte se zde: Úvodní stránka > Publikujeme > Blog > Co mě naučil Bitcoin v kryptografii?

Co mě naučil Bitcoin v kryptografii?

Co mě naučil Bitcoin v kryptografii? 123

Jako velký fanoušek virtuální měn bych se s vámi rád podělil o dvě inovace z oblasti bezpečnosti, které jsem se díky nejznámějšímu virtuálnímu oběživu Bitcoin naučil.

Sdílej na sociálních sítích:

Eliptické křivky

Adresa v bitcoinové síti – například 1HGY3FhkXAZkBQUaW2syrWtRreFiXSmE1y je ve skutečnosti řetězec odvozený od veřejného klíče ECDSA. ECDSA je asymetrický algoritmus pro digitální podpis z rodiny eliptických křivek - Elliptic curve cryptography (ECC). Stejně jako například u RSA či DSA i v ECDSA existuje pár privátní – veřejný klíč. RSA spoléhá na matematickou složitost faktorizace extrémně vysokých čísel, tedy rozložení čísla na součin dvou prvočísel. Naproti tomu ECC vychází z algebry eliptických křivek, zejména grupových operací nad nimi.

Základní výhodou eliptických křivek je jejich úspornost zápisu. Teorie říká, že s ECDSA délky klíče 256 bit je možné dosáhnout zhruba stejné složitosti jako u RSA 2048 bit. Další výhodou ECDSA je o něco rychlejší generování klíče či operace podepisování. Naproti tomu nevýhodou (a naopak bod pro RSA či DSA) je, že technologie ECC je poměrně mladá. Pro konzervativnější část enterprise segmentu to je zřejmě důvod proč s jejím nasazením vyčkat. Pochyby se vynořily na základě zpráv ohledně možné kompromitace algoritmu ECC americkou agenturou NSA prostřednictvím manipulace s generátorem náhodných čísel. Zde je však nutné doplnit, že správnou implementací ECC je možné problém eliminovat.

Pojďme si názorně ukázat základní výhodu ECDSA oproti RSA. Níže jsou příklady různých veřejných klíčů vygenerované programem Puttygen pro SSH autentizaci.

Nejprve nejrozšířenější RSA/2048:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhkkj6rIOvaUxlEk0Mel3icHvArD8LpuwT2fp8t8WZEVPPieIC48wxlOmr7LulMogQl1VFfJEL K+RkE1jH4kIoxlJdhqAw5xQsIN6wQ+YAG5HaFqz6jvWdrRTijZSZu2wLKKHz7wHt84yBmLg4TemGBqzI4e001WltaLik9tZEj265RY viHha7+QUUIBPuZby5znLdLgEy7W0+qq7hll9yl+eG1d/kTKr6lnm4zb9E7OKSHfdCxkfGDvU68sc2SNahJ9Myp8EjnfpFX7KEplLJV B0sKOmBZdyCyUG37YKZWtaxXGq8FphDTBiepAe1/GZgYVWCbDqlgCfSo9vO+p/fQ==

Použití ECC/256 je velká úspora:

ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPaMGrNfyeNupUShdrRF7cJNGzIad2Go/c7iFNpPaSLxB42 HVVHYYMiXGt/fBo8M8+OrVTCtttzbu+L5Q9izQEw=

Nejkratšího zápisu je možné dosáhnout s použitím varianty ED25519 (opět 256 bit):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHbXGFH+YepmWiNx78aisGyAShocV+7F5RLUTY5HRZWz

Deterministická hierarchie

Pod tímto pojmem se skrývá jiný přístup ke generování asymetrického klíče než je asi většina z nás zvyklá. Klasické generování asymetrického klíče (např. RSA či ECDSA) probíhá tak, že se vygeneruje jedna dvojice privátní – veřejný klíč. To znamená, k jednomu privátnímu klíči náleží jeden veřejný klíč. Platí to i obráceně, k jednomu veřejnému klíči náleží právě jeden klíč privátní.

Ve světě Bitcoinu je takovým privátním klíčem vlastně peněženka. Zjednodušeně řečeno, kdo má privátní klíč (peněženku) k veřejnému klíči (adrese) může utratit Bitcoiny, které této adrese náleží. V síti Bitcoin je běžné, že uživatelé mají vygenerováno mnoho adres – desítky až třeba tisíce. Ke každé adrese musí mít uživatel uschován privátní klíč. Klíče by si měli uživatelé zálohovat, protože v případě jejich ztráty přijdou o své bitcoiny a není na světě žádná (alespoň doufám :-) síla, která by to uměla změnit. V praxi to znamená, že čím více adres generuji, tím častěji je musím zálohovat.

Konečně se dostávám k vysvětlení technologie deterministická hierarchie (peněženky), která byla do protokolu Bitcoin přidána již před nějakou dobou. Jde o to, že všechny klíče a adresy jsou vygenerovány z jediného počátečního tajemství – takzvaného seedu. Seed typicky vzniká na základě vstupu od uživatele (například 12-24 slov) a dále se z něho deterministicky odvozují další a další klíče. Počet takto odvoditelných klíčů konkrétně v prostoru adres Bitcoinu je téměř neomezený a reálně jej nelze během lidského života vyčerpat. Obrovská výhoda hierarchického přístup k tvorbě klíčů je praktičnost zálohování. Stačí si někam jednou zapsat (např. na kus papíru uloženém v trezoru) relativně krátký počáteční seed a je možné z něj odvodit opět celou strukturu peněženek.

Deterministická hierarchie má i jiné výhody než zálohování. Stejně jako všechny privátní klíče jsou odvozeny z počátečního seedu – vlastně takového super privátního klíče, existuje i super veřejný klíč. Někdy se mu říká XPUB. Z tohoto XPUB klíče, jak asi tušíte, je možné odvodit všechny možné veřejné klíče pro danou hierarchii. Pokud se rozhodnu XPUB zveřejnit, umožním tak někomu jinému aby sledoval všechny moje transakce s bitcoiny. Ovšem bez možnosti aby transakce sám prováděl. Deterministická hierarchie tvoří graf, který může mít různou hloubku. Listy stromu jsou klíče (peněženky), vnitřní uzly reprezentují data, ze kterých je možné odvodit všechny následovníky pod nimi. Ve stromu platí, že všechny prvky kromě vrcholu mají právě jednoho přímého předka. Další využití je nasnadě. Pokud by taková „stromová“ peněženka fungovala například ve firmě, může třeba generální ředitel disponovat master klíčem a jeho podřízení pak pouze klíči v určené hierarchii za kterou jsou zodpovědní.

Autor: Martin Lízner působí ve společnosti AMI Praha jako solution architect a specialista v oblasti identity managementu.


Přejít na začátek stránky

Mapa stránek

© Copyright 1998-2014 AMI Praha a.s., powered by AMIGO CMS