CryptoNote exploit. aneb proč se musí body na Curve25519/Ed25519 validovat (pro Monero, ByteCoin...) Jak vyrobit $1M z čistého vzduchu

Podobné dokumenty
CryptoNote exploit. aneb proč se musí body na Curve25519 validovat (pro Monero, ByteCoin...) abyssal

Šifrová ochrana informací věk počítačů PS5-2

Šifrová ochrana informací věk počítačů PS5-2

Kryptografie založená na problému diskrétního logaritmu

Digitální podepisování pomocí asymetrické kryptografie

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

1 Lineární prostory a podprostory

Základy maticového počtu Matice, determinant, definitnost

Základy matematiky pro FEK

Diffieho-Hellmanův protokol ustanovení klíče

Úvod do lineární algebry

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Lineární algebra : Lineární prostor

OpenLab Cryptocurrencies

( ) ( ) Lineární nerovnice II. Předpoklady: Jak je to s problémem z minulé hodiny? Získali jsme dvě řešení nerovnice x < 3 :

Čtvercové matice. Čtvercová matice je taková matice, jejíž počet řádků je roven počtu jejích sloupců

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

asymetrická kryptografie

Circular Harmonics. Tomáš Zámečník

Matematika B101MA1, B101MA2

Bitcoin. digitální měna budoucnosti nebo nafouklá bublina? Jaroslav Brychta. Jan Skalický

Vektorový prostor. d) Ke každému prvku u V n existuje tzv. opačný prvek u, pro který platí, že u + u = o (vektor u nazýváme opačný vektor k vektoru u)

ALGEBRA. Téma 5: Vektorové prostory

VELIKOST VEKTORU, POČETNÍ OPERACE S VEKTORY

zápočtová práce Základy implementace měny BITCOIN v programovacím jazyku C# N_TK Technologie krypto-měn

Operace s maticemi

Hisab al-džebr val-muqabala ( Věda o redukci a vzájemném rušení ) Muhammada ibn Músá al-chvárizmího (790? - 850?, Chiva, Bagdád),

Teorie grup 1 Příklad axiomatické teorie

Operace s maticemi. 19. února 2018

7.1.3 Vzdálenost bodů

Lingebraické kapitolky - Počítání s maticemi

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Seriál II.II Vektory. Výfučtení: Vektory

Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.

Pokročilá kryptologie

10. Vektorové podprostory

VEKTOROVÝ PROSTOR. Vektorový prostor V n je množina všech n-složkových vektorů spolu s operacemi sčítání, odčítání vektorů a reálný násobek vektoru.

Karel Klouda c KTI, FIT, ČVUT v Praze 28. února, letní semestr 2010/2011

Slovo ALGEBRA pochází z arabského al-jabr, což znamená nahrazení. Toto slovo se objevilo v názvu knihy

1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

1 Vektorové prostory.

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

Charakteristika tělesa

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

7. Lineární vektorové prostory

6 Samodružné body a směry afinity

Základní pojmy teorie množin Vektorové prostory

( ) ( ) Binomické rozdělení. Předpoklady: 9209

Číselné vektory, matice, determinanty

VĚTY Z LINEÁRNÍ ALGEBRY

Soustavy lineárních rovnic a determinanty

Vlastní čísla a vlastní vektory

Matematika. Kamila Hasilová. Matematika 1/34

čitatel jmenovatel 2 5,

Miroslav Kureš. Aplikovaná matematika Ostravice workshop A-Math-Net Sít pro transfer znalostí v aplikované matematice

ekologie Pavel Fibich Vektor a Matice Operace s maticemi Vlastnosti matic Pavel Fibich Shrnutí Literatura

4EK201 Matematické modelování. 2. Lineární programování

Skaláry a vektory

Modulární aritmetika, Malá Fermatova věta.

Odpřednesenou látku naleznete v kapitolách skript Abstraktní a konkrétní lineární algebra.

7.5.1 Středová a obecná rovnice kružnice

1. Matice a maticové operace. 1. Matice a maticové operace p. 1/35

Komerční výrobky pro kvantovou kryptografii

Kryptografie, elektronický podpis. Ing. Miloslav Hub, Ph.D. 27. listopadu 2007

Co byste měl/a zvládnout po 4. týdnu

Kapitola 11: Vektory a matice 1/19

Variace. Mocniny a odmocniny

1 Mnohočleny a algebraické rovnice

Algebraické struktury s jednou binární operací

7. Rozdělení pravděpodobnosti ve statistice

Univerzitní licence MATLABu. Pište mail na: se žádostí o nejnovější licenci MATLABu.

Digitální učební materiál

AVDAT Vektory a matice

Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie

Přednáška 1: Reálná funkce jedné reálné proměnné

Základní vztahy v elektrických

Čísla, reprezentace, zjednodušené výpočty

1. LINEÁRNÍ ALGEBRA Vektory Operace s vektory... 8 Úlohy k samostatnému řešení... 8

ZLOMKY A RACIONÁLNÍ ČÍSLA. Pojem zlomku. Zlomek zápis části celku. a b. a je část, b je celek, zlomková čára

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

ANALYTICKÁ GEOMETRIE V ROVINĚ

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

( ) ( ) Binomické rozdělení. Předpoklady: 9209

2. Určete jádro KerL zobrazení L, tj. nalezněte alespoň jednu jeho bázi a určete jeho dimenzi.

1/10. Kapitola 12: Soustavy lineárních algebraických rovnic

Cvičení z Lineární algebry 1

1 Báze a dimenze vektorového prostoru 1

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

Algoritmy a datové struktury

S funkcemi můžeme počítat podobně jako s čísly, sčítat je, odečítat, násobit a dělit případně i umocňovat.

11. VEKTOROVÁ ALGEBRA A ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ. u. v = u v + u v. Umět ho aplikovat při

Subexponenciální algoritmus pro diskrétní logaritmus

Transkript:

CryptoNote exploit aneb proč se musí body na Curve25519/Ed25519 validovat (pro Monero, ByteCoin...) Jak vyrobit $1M z čistého vzduchu abyssal/phyrexian NTPC 2017

Soukromí kryptoměn Bitcoin ledger je veřejný, každou transakci vidět CryptoNote měny (Monero, ByteCoin...) ring signatures, ringct mixin mnoha výstupů (TXO), spending transakce neodkryje skutečný původní Pedersen commitment skrývá, kolik se minulo (varianta homomorphic hiding) máme n skrytých obnosů M 1..M n, ale umíme dokázat, že dávají správný součet

ZCASH Soukromí kryptoměn zksnark zero-knowledge proof protokol používá homomorphic hiding na zakrytí skutečných hodnot v transakci homomorphic hiding umožňuje operace jako lineární kombinace nad hodnotami nad tím vším je Knowledge of Coefficient Assumption protokol, kde se přes blind polynomials počítají Quadratic Architecture Programs commitment se utratí přes nullifier

Soukromí kryptoměn prakticky Bitcoin mnoho free, komerčních i pro vlády určených nástrojů na sledování toků Monero mnoho transakcí nemá žádný mixin (66% do 31.1.2017) monerolink.com dedukuje reálné výstupy (do 31.1.2017) několik změn v samplingu TXO do mixinů uniform, triangular, recent zone

Soukromí kryptoměn prakticky Monero: ZCASH statisticky nejnovější TXO je pravé se změnou samplingu TXO na recent zone už úplně neplatí změna signatur na ringct od 1/2017 2 typy transakcí: na transparentní t- adresu a na shielded z-adresu výpočet zksnark pro shielded transakci vyžaduje 2 GB RAM

Bitcoin transakce řídí se skriptami, output transakce určuje skript, jak lze peníze minout nejběžnější: P2PKH (pay to public key hash) P2SH (pay to script hash) nově segwit transakce (P2WSH, P2WPKH)

CryptoNote ring signatures

CryptoNote ring signatures obnosy měny jsou zaměnitelné (fungible) rozděleny na bankovky až na dust ring signature určí několik cílových public keys, které mohou utratit její obnos jenom jeden je pravý ring signature ale neukáže, který jak zabránit double-spendu: key image je něco jako sériové číslo, které zabraňuje utratit transakci 2 krát

Curve25519 pro účely demonstrace si eliptickou křivku Curve25519 představte jako kruh má jeden bod identity ( nula ) body lze sčítat nebo násobit skalárem budeme používat 2 typy dat bod na křivce (x, y), lze reprezentovat jen x souřadnicí nebo 256-bit stringem skalár: nějaký integer skalár bod = bod

Curve25519 velmi zjednodušený náčrt operací * a +

Ed25519 jméno křivky i název podpisového schématu (hence the confusion) Ed25519 křivka birationally equivalent s Curve25519 (Edwards twisted curve) body z Ed25519 lze převést na Curve25519 opačně ne, protože komprese bodů na Curve25519 zahazuje znaménko nebo ztratíte znaménko

Řád prvku/grupy/křivky řád grupy je počet prvků grupy, řád křivky je počet bodů křivky. Řád křivky Curve25519/Ed25519 není prvočíselný (!!!) je 8L, L=2 252 + 277423177773723535358519377908836 48493 řád prvku je počet krát, kolik se bod musí sčítat sám se sebou až bude výsledek nula může být 1, 2, 4, 8, L, 2L, 4L, 8L

Curve25519 klíče privátní klíč je skalár x 0 plus pár restrikcí (dělitelný 8,...) veřejný klíč je bod P, který vznikne násobením P=x G (G je veřejně známý bod, tzv. generátor) G generuje grupu s prvočíselným řádem L tohle zaručuje, že bod veřejného klíče P nebude degenerovaný, tj jeho řád order(p)=l

Špatné body na Curve25519 pokud ale do protokolu vstupuje nějaký bod křivky zvenku, nemáte žádnou záruku, že nebude degenerovaný (order < L) na toto narazilo ověření ring signature v CryptoNote jmenuje se to subgroup attack Curve25519 má cofactor=8, tj. řád křivky je 8-násobek řádu G

One-time ring signature (full)

One-time ring signature zjednodušený případ pro ring size = 1 #keygen x privátní klíč, P veřejný: x = random_scalar() P = x*g #podpis zprávy m: I = x*hashp(p) k = random_scalar() e = hashs(m, k*g, k*hashp(p)) s = k - e*x #publikuj podpis (P, e, s, I) I zde ovládá útočník #ověření podpisu (P, e, s, I) e == hashs(m, s*g + e*p, s*hashp(p) + e*i)

Triviální útok key image I, který útočník posílá v spending transakci, může být jiný, než ten, s kterým se podpis vytvářel př. pokud použil původně I 1 řádu 4, při spending transakci použije jiný I 2 řádu 4 e musí být dělitelné 4-ma pak v ověřovací rovnici e I 1 =e I 2 =0 2 transakce s různými I double-spend

Lepší útok double-spend lze udělat s libovolným I'=I+B, kde B je malého řádu > 1 e musí být dělitelné řádem B (velká pravděpodobnost) pak e I'=e I+e B=e I+0=e I a ověrovací rovnice bude sedět

Bytecoin blockchain sieving lidi brzo našli několik doublespend transakcí chtěl jsem je najít všechny napsal jsem si skript na prolezení blockchainu využili jenom ten triviální exploit https://pastebin.com/tafjbjbq

Bytecoin $1M out of thin air order(i 1 ) == order(i 2 ) == 8

Bytecoin TX, ki TXs: cef289d7fab6e35ac123db8a3f06f7675b48067e0dff185c72b140845b8b3b23 7e418cc77935cc349f007cd5409d2b6908e4130321fa6f97ee0fee64b000ff85 5a3db49ef69e1f9dd9b740cabea7328cd3499c29fc4f3295bac3fa5e55384626 74298d301eb4b4da30c06989e0f7ff24a26c90bf4ffc4f2c18f34b7a22cf1136 85b477ca39976c1cf70c4bc5aa20c750859f9dbafcdba0a20aa79490cd9bdb1b 17320545c428fe7d67ff2c8140eef5c970adfc5eecab978986ac8b4b12a1dd84 f5e6754d7859ff4abf7a9733d5852d5ba35a77cab3dff4bb929c626cf1737b5a ki: 26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05 8 26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85 8 0100000000000000000000000000000000000000000000000000000000000000 1 ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f 2 0000000000000000000000000000000000000000000000000000000000000000 4 0000000000000000000000000000000000000000000000000000000000000080 4 c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a 8

Aplikace na ringct, ASNL ringct (nástupce one-time ring signatures v Moneru Borromean signatures) používá key image obdobním způsobem taky se musí kontrolovat order(i) Aggregate Schnorr Non-linkable Ring Signature předchozí kandidát na ringct sčítají se body z nedůvěryhodných zdrojů zamítnuto i z dalších důvodů

Fin