際際滷

際際滷Share a Scribd company logo
BitGold: Lestinzione dei dinosauri.
@Mauro Ghiani
 Fantagazzetta
 FSharp-Italia
 F# Software Foundation
 https://github.com/janmaru
 @loddity
#Mauro Ghiani -> Sr. Dev
[bB]itCoin
Transazione pseudo anonima di
crypto-moneta, in un ambiente
distribuito, trascritta su un registro
pubblico "read and append only".
Cos竪 bitcoin/blockchain?
Sol. Distribuita: Problemi?
Chi mantiene il ledger?
Chi decide quali transazioni siano valide?
Chi crea la criptomoneta?
Chi stabilisce le regole e il loro cambiamento?
Come pu嘆 la criptomoneta avere un valore nella
compravendita?
Blockchain (availability)
Transazioni: MerkleTree
[bB]itcoin
 Bitcoin Core binaries presso at bitcoin.org
 Bitcoin Core source code presso Github
 Libreria .Net NBitcoin
 Libreria di indicizzazione .Net QBitNinja e le
API
 Azure Notebooks #
Cos竪 il [bB]itcoin?
[] p2p
Sign Bitcoin
Transactions.
Prove Bitcoin
Ownership
ECDSA
(digital
signature)
Sym.
key
80 112 128 192 256
ECC 161 224 256 384 512
RSA 1024 2048 3072 7680 15360
Key Size Matters!
Identity
Ho sempre voluto essere
Qualcuno.
Ma ora mi accorgo che avrei ,
dovuto essere pi湛 specifico...
(Lily Tomlin)
1
2
Cryptography
E DM
M || error
Alice Bob
Ke
C C
Kd
i
E(M, Ke) = C
E(M, Pk) = C
D(C, Kd) = M || E
D(C, Sk) = M || E
Pk(Bob)
Pk(Bob)
Sk(Bob)
Confidentiality
Alice
Sono Alice! E
Pk(Bob)
516c43b617a6fa6de
e5f3e9b34d99365b
3b89d1381dc9aebc
ca1e8822c8cb5f4
Bob D
Sk(Bob)
Sono Alice!
Elliptic Curve Digital Signature Algorithm: ECDSA is not designed for encryption
Authenticity - Non-Repudiability (*)
Alice
Tx(1BTC) S
Sk(Alice)
516c43b617a6fa6de
e5f3e9b34d99365b
3b89d1381dc9aebc
ca1e8822c8cb5f4
Bob V
Pk(Alice)
Tx(1BTC)
* Prevent message tampering
Identity
 Random key pair: (Sk, Pk)
 Pk looks random (sembra casuale)
 Public key (Pk) == identity
 Verify (Pk, msg, sg) == true
Autenticazione: Pk dice msg
Privacy
Gli indirizzi bitcoin non sono collegati al mondo
reale (non parliamo di identit reali)
E possibile collegare varie transazioni (attivit) nel
tempo per fare delle inferenze
Propriet: Random 256 bit private key
256 bits number
0 01 01 0...
1
Se pensate che sette anni di
sfortuna siano troppi per
aver rotto uno specchio
Provate a rompere un
preservativo!
Encoding (usability)2
 Trasforma dati in un particolare
formato*
 Scopo 竪 quello della fruibilit
 Non 竪 crittografia ed 竪 reversibile
*(ASCII, Unicode, URL Encoding, Base64)
Base 58 Encoding2
2
263
Comincia con una
grossa e aspetta
sei mesi!!!
Come faccio a
creare una
piccola azienda?
Piccoli passi
(Digital) Signature
 Autenticazione -> sign
 Verifica pubblica
 Non ripudiabilit
Come trasferire la valuta?
3
, janmaru
Sk(M)Pk(M)
,
John Doe
Pk(D) Sk(D)
Transazione
Tx
Sign
Prev
Tx
0.2
Pk(D)
0.1
0.01
, Sk(M)Pk(M)
0.09
Pk(M)
Mining rewards
Courtesy:
Brian Warner
[bB]itCoin
Trascrizione pseudo anonima di dati, in
un ambiente distribuito, su un registro
pubblico "read and append only".
Colour Bitcoin
V(Pk,Sign,SF5128165575) = true
S(Sk,SF5128165575) -> Sign
(Sk, Pk)
(xx, Pk)
Firma digitale
Perch竪 tutta questa
eccitazione?
Non 竪 mica la mia
barca!
Stiamo
affondando!!!!
Bitcoin
 Sviluppato da Satoshi Nakamoto nel 2009
 Uno pseudonimo
 Nessuno conosce la sua identit
 E uno di questi?
bitcoin = CryptoCurrency (bitcoin)
Bitcoin = Tecnologia (Blockchain)
bitcoin -> Deep web / mito
Tv Series
BlockChain
Bitcoin as a Platform (BaaP)
Servizi: Secure Timestamping
Tesi:
Dimostrare che abbiamo conoscenza di
un certo dato X ad un determinato
istante T. Senza rivelare la conoscenza di
X al tempo T (se non necessario).
Proof of existence
Cartelle
cliniche
Atti
notarili
Voto
elettronico
Brevetti
1991 Digital Timestamps
Trusted Timestamping RFC 2001
Newspaper
Servizio: Secure Timestamping
Ipotesi:
 Struttura dati che mi permetta di aggiungere solo i dati
 Read only (immutabile)
 Sempre disponibile (availability)
 Deve avere un sistema con timestamp
 Deve utilizzare un impegno al dato x (funzione di hash: x->
H(x), non possa trovare x: H(x) = H(x)) che pu嘆 essere
rivelato anche dopo
 Identit digitale (io sono io) ma anonima
Trusted timestamping
http://originstamp.org
Sha256
a8fd6a998d0d9bbf595b1a5d56d704d61cd42e0
205e781286dcd723ebf41ed80
Blockchain (Proof of Existence)
The original Blockchain notary service, offering instant,
anonymous, distributed, and secure proof of existence for
any document, agreement, or contract.
I documenti non vengono salvati in un database proprietario
o sulla blockchain. Viene salvato un cryptographic digest del
documento.
Chiaroveggenza
P2PK[H] (Pay to Public Key [Hash])
Pay to public key :
02fb8021bc7dedcc2f89a67e75cee81fedb8e41d6bfa6
769362132544dfdf072d4 OP_CHECKSIG
Pay to public key hash : OP_DUP OP_HASH160
0ae54d4cec828b722d8727cb70f4a6b0a88207b2
OP_EQUALVERIFY OP_CHECKSIG
Bitcoin Script
Script
Design Goals:
 Ispirato al Forth.
 Semplice, compatto.
 Supporto per la crittografia
 Stack based
 Limite nellesecuzione (tempo) e nella memoria
 No loop
Ouchh!!!
Come funziona lo script
Stack Based
 Eseguito in uno spazio di
memoria
 LIFO
 Stack = script interpreter
 Validazione Tx Bitcoin
 ScriptSig
POP PUSH
2
7
11
13
Come funziona
Pay-to-PubkeyHash
scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig: <sig> <pubKey>
<sig> + <PK> + OP_DUP OP_HASH160 0ae54d4cec828b722d8727cb70f4a6b0a88207b2 OP_EQUALVERIFY
OP_CHECKSIG
<sig>
<Pk>
<sig>
<Pk>
<Pk>
<sig>
<Pk>
<H(Pk)>
<sig>
<Pk>
<H(Pk)>
<H(Pk)>
<sig>
<Pk>
Formazione Fantacalcio
Servizio: Secure Timestamping
Ipotesi:
 Struttura dati che mi permetta di aggiungere solo i dati
 Read only (immutabile)
 Sempre disponibile (availability)
 Deve avere un sistema con timestamp
 Deve utilizzare un impegno al dato x (funzione di hash: x->
H(x), non possa trovare x: H(x) = H(x)) che pu嘆 essere
rivelato anche dopo
 Identit digitale (io sono io) ma anonima
Wallet https://bitcoin.org/en/choose-your-wallet
 Gli utenti creano degli accounts chiamati Wallet.
 I Wallet sono messi in sicurezza usando password e
contengono le chiavi private usate per trasferire i
bitcoin.
Propriet bitcoins
Servizio: Secure Timestamping
Ipotesi:
 Struttura dati che mi permetta di aggiungere solo i dati
 Read only (immutabile)
 Sempre disponibile (availability)
 Deve avere un sistema con timestamp
 Deve utilizzare un impegno al dato x (funzione di hash: x->
H(x), non possa trovare x: H(x) = H(x)) che pu嘆 essere
rivelato anche dopo
 Identit digitale (io sono io) ma anonima
Hash function
1. Input qualsiasi tipo di stringa
2. Output fisso (256 bits)
3. Efficiently computable
Good Hash Function
 Deterministica
 Collision free
 Non reversibili (hiding)
 Piccole variazioni in input >>> output
 Puzzle -friendly
Hash function
Una funzione di hash 竪 una funzione
che mette in relazione un insieme di
dati di dimensione arbitrariamente
grande con uno di dati a dimensione
determinata (fissa).
Principio dei cassetti
Collision free
Indipendentemente dalla funzione di
Hash:
Provare 2^130 random inputs
(1,3611294676837538538534984297271e+39)
99.8% trovare una collisione
Collision free
H(x) = H(y)
x
y
Nessuno pu嘆 trovare un
valore
x!=y : H(x) = H(y)
SHA-256
Multi Identities OP_CHECKMULTISIG
Alice Bob Zorro
Zorro Corporation
https://github.com/bitcoin/bips/blob/master/bip-0199.mediawiki
Smart Contracts
1997
Idea di memorizzare i contratti in un registro
distribuito. Contratti digitali, intesi come piccoli
programmi (software) salvati nella blockchain.
Smart Contract
Mutui Assicurazioni VenditaPoste
Third party: trust
Etherium: Solidity
Immutable Distributed
Programmed
Colour Bitcoin (IPO*)
* initial public offerings
Alice
Messaging
 Messaging con endpoint un arbitrary Bitcoin address
 ChatBot automatizzano i processi di pagamenti su canali sicuri
 Anonymous messenger
 Identification -> Bitcoin Address : ID per la comunicazione tra i
peers.
a. http://digitalnote.org/
b. https://shadowproject.io/en/features#shadow
c. chat https://bitmessage.org/wiki/Main_Page
(ECDH algorithm ) vs DiffieHellman key exchange
Alice
g
Pk(Bob)
Shared
Secret Alice &
Bob
Bob g
Sk(Bob)
Sk(Alice)
Pk(Alice)
Symmetric-key (Confidentiality)
Alice
Sono Alice! E
SS(A&B)
516c43b617a6fa6de
e5f3e9b34d99365b
3b89d1381dc9aebc
ca1e8822c8cb5f4
Bob DSono Alice!
256-bit symmetric AES encryption
[bB]itCoin + E() + D()
Trascrizione sicura pseudo anonima di
dati, in un ambiente distribuito, su un
registro pubblico "read and append only".
P.A.
1. Blockchain pubblica
2. Enti come nodi
3. Fornitori come nodi
4. Proof of Stake |&& Proof of Work (PeerCoin)
5. Ambiente decentralizzato || && distribuito (trusted public
key-> checkpoints)
6. Documenti - > Identit
7. Voto
8. Tasse
Domande?
Lamore 竪 la risposta.
Ma mentre aspettate la risposta, il sesso
pu嘆 suggerire delle ottime domande.
 Woody Allen
F#, Art &
Philosophy

More Related Content

BitGold. L'estinzione dei dinosauri.