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

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

Š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

OpenLab Cryptocurrencies

Základy matematiky pro FEK

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

Lineární algebra : Lineární prostor

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

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

asymetrická kryptografie

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

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

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

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

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

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

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

ALGEBRA. Téma 5: Vektorové prostory

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

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),

1 Lineární prostory a podprostory

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

7.1.3 Vzdálenost bodů

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

Úvod do lineární algebry

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

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

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,

Operace s maticemi

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

Charakteristika tělesa

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

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

6 Samodružné body a směry afinity

7. Rozdělení pravděpodobnosti ve statistice

Komerční výrobky pro kvantovou kryptografii

AVDAT Vektory a matice

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

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

Cvičení z Lineární algebry 1

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

Příklad 1. Řešení 1a Máme určit obsah rovinné plochy ohraničené křivkami: ŘEŠENÉ PŘÍKLADY Z M1A ČÁST 14. a) =0, = 1, = b) =4, =0

Matematika B101MA1, B101MA2

6. Vektorový počet Studijní text. 6. Vektorový počet

MPI - 5. přednáška. 1.1 Eliptické křivky

VELIKOST VEKTORU, POČETNÍ OPERACE S VEKTORY

Matematická analýza pro informatiky I.

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

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

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

pro bakalářské studijní programy fyzika, informatika a matematika 2018, varianta A

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

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

VĚTY Z LINEÁRNÍ ALGEBRY

ElGamal, Diffie-Hellman

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

Operace s maticemi. 19. února 2018

Skalární součin dovoluje zavedení metriky v afinním bodovém prostoru, tj. umožňuje nám určovat vzdálenosti, odchylky, obsahy a objemy.

Algebraické struktury s jednou binární operací

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY


Téma 2: Pravděpodobnostní vyjádření náhodných veličin

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

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í

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

Digitální měna Bitcoin. Dalibor Hula Slezská univerzita v Opavě OPF v Karviné

Teorie grup 1 Příklad axiomatické teorie

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

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

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

4. Kombinatorika a matice

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

1 Báze a dimenze vektorového prostoru 1

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

Vlastní čísla a vlastní vektory

Požadavky k opravným zkouškám z matematiky školní rok

7. Lineární vektorové prostory

Dvojné a trojné integrály příklad 3. x 2 y dx dy,

10. Vektorové podprostory

Pokročilá kryptologie

Matematika. Kamila Hasilová. Matematika 1/34

Počítačové simulace a statistická mechanika

Učební texty k státní bakalářské zkoušce Matematika Vlastní čísla a vlastní hodnoty. študenti MFF 15. augusta 2008

Všeobecná rovnováha 1 Statistický pohled

Asymetrická kryptografie a elektronický podpis. Ing. Dominik Breitenbacher Mgr. Radim Janča

MINIMÁLNÍ POŽADAVKY NA KRYPTOGRAFICKÉ ALGORITMY. doporučení v oblasti kryptografických prostředků

1 Linearní prostory nad komplexními čísly

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy,

Diskrétní logaritmus

UNIVERZITA PARDUBICE. 4.4 Aproximace křivek a vyhlazování křivek

HSM a problémy s bezpečností API Masarykova univerzita v Brně Fakulta informatiky

Chemické databáze. Bedřich Košata

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

Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

3. Kmitočtové charakteristiky

Skaláry a vektory

M - Příprava na 1. čtvrtletku - třída 3ODK

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

Transkript:

CryptoNote exploit aneb proč se musí body na Curve25519 validovat (pro Monero, ByteCoin...) abyssal 1.6.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)

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 +

Řád prvku a řád grupy řád grupy je počet prvků grupy, u Curve25519 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) 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ý na toto narazilo ověření ring signature v CryptoNote

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) #ověření podpisu (P, e, s) I zde ovládá útočník: 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